Index: /tags/2.6.0RC1/about.php
===================================================================
--- /tags/2.6.0RC1/about.php	(revision 25596)
+++ /tags/2.6.0RC1/about.php	(revision 25596)
@@ -0,0 +1,63 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+//----------------------------------------------------- template initialization
+//
+// Start output of page
+//
+$title= l10n('About Piwigo');
+$page['body_id'] = 'theAboutPage';
+
+trigger_action('loc_begin_about');
+
+$template->set_filename('about', 'about.tpl');
+
+$template->assign('ABOUT_MESSAGE', load_language('about.html','', array('return'=>true)) );
+
+$theme_about = load_language('about.html', PHPWG_THEMES_PATH.$user['theme'].'/', array('return' => true));
+if ( $theme_about !== false )
+{
+  $template->assign('THEME_ABOUT', $theme_about);
+}
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theAboutPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+flush_page_messages();
+$template->pparse('about');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/action.php
===================================================================
--- /tags/2.6.0RC1/action.php	(revision 25596)
+++ /tags/2.6.0RC1/action.php	(revision 25596)
@@ -0,0 +1,200 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+session_cache_limiter('public');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+
+// Check Access and exit when user status is not ok
+check_status(ACCESS_GUEST);
+
+function guess_mime_type($ext)
+{
+  switch ( strtolower($ext) )
+  {
+    case "jpe": case "jpeg":
+    case "jpg": $ctype="image/jpeg"; break;
+    case "png": $ctype="image/png"; break;
+    case "gif": $ctype="image/gif"; break;
+    case "tiff":
+    case "tif": $ctype="image/tiff"; break;
+    case "txt": $ctype="text/plain"; break;
+    case "html":
+    case "htm": $ctype="text/html"; break;
+    case "xml": $ctype="text/xml"; break;
+    case "pdf": $ctype="application/pdf"; break;
+    case "zip": $ctype="application/zip"; break;
+    case "ogg": $ctype="application/ogg"; break;
+    default: $ctype="application/octet-stream";
+  }
+  return $ctype;
+}
+
+function do_error( $code, $str )
+{
+  set_status_header( $code );
+  echo $str ;
+  exit();
+}
+
+
+if (!isset($_GET['id'])
+    or !is_numeric($_GET['id'])
+    or !isset($_GET['part'])
+    or !in_array($_GET['part'], array('e','r') ) )
+{
+  do_error(400, 'Invalid request - id/part');
+}
+
+$query = '
+SELECT * FROM '. IMAGES_TABLE.'
+  WHERE id='.$_GET['id'].'
+;';
+
+$element_info = pwg_db_fetch_assoc(pwg_query($query));
+if ( empty($element_info) )
+{
+  do_error(404, 'Requested id not found');
+}
+
+// $filter['visible_categories'] and $filter['visible_images']
+// are not used because it's not necessary (filter <> restriction)
+$query='
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON category_id = id
+  WHERE image_id = '.$_GET['id'].'
+'.get_sql_condition_FandF(
+  array(
+      'forbidden_categories' => 'category_id',
+      'forbidden_images' => 'image_id',
+    ),
+  '    AND'
+  ).'
+  LIMIT 1
+;';
+if ( pwg_db_num_rows(pwg_query($query))<1 )
+{
+  do_error(401, 'Access denied');
+}
+
+include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
+$file='';
+switch ($_GET['part'])
+{
+  case 'e':
+    if ( !$user['enabled_high'] )
+    {
+      $deriv = new DerivativeImage(IMG_XXLARGE, new SrcImage($element_info));
+      if ( !$deriv->same_as_source() )
+      {
+        do_error(401, 'Access denied e');
+      }
+    }
+    $file = get_element_path($element_info);
+    break;
+  case 'r':
+    $file = original_to_representative( get_element_path($element_info), $element_info['representative_ext'] );
+    break;
+}
+
+if ( empty($file) )
+{
+  do_error(404, 'Requested file not found');
+}
+
+if ($_GET['part'] == 'e') {
+  pwg_log($_GET['id'], 'high');
+}
+else if ($_GET['part'] == 'e')
+{
+  pwg_log($_GET['id'], 'other');
+}
+
+$http_headers = array();
+
+$ctype = null;
+if (!url_is_remote($file))
+{
+  if ( !@is_readable($file) )
+  {
+    do_error(404, "Requested file not found - $file");
+  }
+  $http_headers[] = 'Content-Length: '.@filesize($file);
+  if ( function_exists('mime_content_type') )
+  {
+    $ctype = mime_content_type($file);
+  }
+
+  $gmt_mtime = gmdate('D, d M Y H:i:s', filemtime($file)).' GMT';
+  $http_headers[] = 'Last-Modified: '.$gmt_mtime;
+
+  // following lines would indicate how the client should handle the cache
+  /* $max_age=300;
+  $http_headers[] = 'Expires: '.gmdate('D, d M Y H:i:s', time()+$max_age).' GMT';
+  // HTTP/1.1 only
+  $http_headers[] = 'Cache-Control: private, must-revalidate, max-age='.$max_age;*/
+
+  if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) )
+  {
+    set_status_header(304);
+    foreach ($http_headers as $header)
+    {
+      header( $header );
+    }
+    exit();
+  }
+}
+
+if (!isset($ctype))
+{ // give it a guess
+  $ctype = guess_mime_type( get_extension($file) );
+}
+
+$http_headers[] = 'Content-Type: '.$ctype;
+
+if (isset($_GET['download']))
+{
+  $http_headers[] = 'Content-Disposition: attachment; filename="'.$element_info['file'].'";';
+  $http_headers[] = 'Content-Transfer-Encoding: binary';
+}
+else
+{
+  $http_headers[] = 'Content-Disposition: inline; filename="'
+            .basename($file).'";';
+}
+
+foreach ($http_headers as $header)
+{
+  header( $header );
+}
+
+// Looking at the safe_mode configuration for execution time
+if (ini_get('safe_mode') == 0)
+{
+  @set_time_limit(0);
+}
+
+@readfile($file);
+
+?>
Index: /tags/2.6.0RC1/admin.php
===================================================================
--- /tags/2.6.0RC1/admin.php	(revision 25596)
+++ /tags/2.6.0RC1/admin.php	(revision 25596)
@@ -0,0 +1,313 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// | Basic constants and includes                                          |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+define('IN_ADMIN', true);
+
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_plugins.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/add_core_tabs.inc.php');
+
+trigger_action('loc_begin_admin');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// | Direct actions                                                        |
+// +-----------------------------------------------------------------------+
+
+// save plugins_new display order (AJAX action)
+if (isset($_GET['plugins_new_order']))
+{
+  pwg_set_session_var('plugins_new_order', $_GET['plugins_new_order']);
+  exit;
+}
+
+// theme changer
+if (isset($_GET['change_theme']))
+{
+  $admin_themes = array('roma', 'clear');
+
+  $new_admin_theme = array_pop(
+    array_diff(
+      $admin_themes,
+      array($conf['admin_theme'])
+      )
+    );
+
+  conf_update_param('admin_theme', $new_admin_theme);
+
+  $url_params = array();
+  foreach (array('page', 'tab', 'section') as $url_param)
+  {
+    if (isset($_GET[$url_param]))
+    {
+      $url_params[] = $url_param.'='.$_GET[$url_param];
+    }
+  }
+  
+  $redirect_url = 'admin.php';
+  if (count($url_params) > 0)
+  {
+    $redirect_url.= '?'.implode('&amp;', $url_params);
+  }
+
+  redirect($redirect_url);
+}
+
+// +-----------------------------------------------------------------------+
+// | Synchronize user informations                                         |
+// +-----------------------------------------------------------------------+
+
+// sync_user() is only useful when external authentication is activated
+if ($conf['external_authentification'])
+{
+  sync_users();
+}
+
+// +-----------------------------------------------------------------------+
+// | Variables init                                                        |
+// +-----------------------------------------------------------------------+
+
+$change_theme_url = PHPWG_ROOT_PATH.'admin.php?';
+$test_get = $_GET;
+unset($test_get['page']);
+unset($test_get['section']);
+unset($test_get['tag']);
+if (count($test_get) == 0)
+{
+  $change_theme_url.= str_replace('&', '&amp;', $_SERVER['QUERY_STRING']).'&amp;';
+}
+$change_theme_url.= 'change_theme=1';
+
+// ?page=plugin-community-pendings is an clean alias of
+// ?page=plugin&section=community/admin.php&tab=pendings
+if (isset($_GET['page']) and preg_match('/^plugin-([^-]*)(?:-(.*))?$/', $_GET['page'], $matches))
+{
+  $_GET['page'] = 'plugin';
+  $_GET['section'] = $matches[1].'/admin.php';
+  if (isset($matches[2]))
+  {
+    $_GET['tab'] = $matches[2];
+  }
+}
+
+// ?page=album-134-properties is an clean alias of
+// ?page=album&cat_id=134&tab=properties
+if (isset($_GET['page']) and preg_match('/^album-(\d+)(?:-(.*))?$/', $_GET['page'], $matches))
+{
+  $_GET['page'] = 'album';
+  $_GET['cat_id'] = $matches[1];
+  if (isset($matches[2]))
+  {
+    $_GET['tab'] = $matches[2];
+  }
+}
+
+// ?page=photo-1234-properties is an clean alias of
+// ?page=photo&image_id=1234&tab=properties
+if (isset($_GET['page']) and preg_match('/^photo-(\d+)(?:-(.*))?$/', $_GET['page'], $matches))
+{
+  $_GET['page'] = 'photo';
+  $_GET['image_id'] = $matches[1];
+  if (isset($matches[2]))
+  {
+    $_GET['tab'] = $matches[2];
+  }
+}
+
+if (isset($_GET['page'])
+    and preg_match('/^[a-z_]*$/', $_GET['page'])
+    and is_file(PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php'))
+{
+  $page['page'] = $_GET['page'];
+}
+else
+{
+  $page['page'] = 'intro';
+}
+
+$link_start = PHPWG_ROOT_PATH.'admin.php?page=';
+$conf_link = $link_start.'configuration&amp;section=';
+
+// +-----------------------------------------------------------------------+
+// | Template init                                                         |
+// +-----------------------------------------------------------------------+
+
+$title = l10n('Piwigo Administration'); // for include/page_header.php
+$page['page_banner'] = '<h1>'.l10n('Piwigo Administration').'</h1>';
+$page['body_id'] = 'theAdminPage';
+
+$template->set_filenames(array('admin' => 'admin.tpl'));
+
+$template->assign(
+  array(
+    'USERNAME' => $user['username'],
+    'ENABLE_SYNCHRONIZATION' => $conf['enable_synchronization'],
+    'U_SITE_MANAGER'=> $link_start.'site_manager',
+    'U_HISTORY_STAT'=> $link_start.'stats',
+    'U_FAQ'=> $link_start.'help',
+    'U_SITES'=> $link_start.'remote_site',
+    'U_MAINTENANCE'=> $link_start.'maintenance',
+    'U_NOTIFICATION_BY_MAIL'=> $link_start.'notification_by_mail',
+    'U_CONFIG_GENERAL'=> $link_start.'configuration',
+    'U_CONFIG_DISPLAY'=> $conf_link.'default',
+    'U_CONFIG_EXTENTS'=> $link_start.'extend_for_templates',
+    'U_CONFIG_MENUBAR'=> $link_start.'menubar',
+    'U_CONFIG_LANGUAGES' => $link_start.'languages',
+    'U_CONFIG_THEMES'=> $link_start.'themes',
+    'U_CATEGORIES'=> $link_start.'cat_list',
+    'U_CAT_OPTIONS'=> $link_start.'cat_options',
+    'U_CAT_UPDATE'=> $link_start.'site_update&amp;site=1',
+    'U_RATING'=> $link_start.'rating',
+    'U_RECENT_SET'=> $link_start.'batch_manager&amp;filter=prefilter-last_import',
+    'U_BATCH'=> $link_start.'batch_manager',
+    'U_TAGS'=> $link_start.'tags',
+    'U_USERS'=> $link_start.'user_list',
+    'U_GROUPS'=> $link_start.'group_list',
+    'U_RETURN'=> get_gallery_home_url(),
+    'U_ADMIN'=> PHPWG_ROOT_PATH.'admin.php',
+    'U_LOGOUT'=> PHPWG_ROOT_PATH.'index.php?act=logout',
+    'U_PLUGINS'=> $link_start.'plugins',
+    'U_ADD_PHOTOS' => $link_start.'photos_add',
+    'U_CHANGE_THEME' => $change_theme_url,
+    'U_UPDATES' => $link_start.'updates',
+    )
+  );
+  
+if ($conf['activate_comments'])
+{
+  $template->assign('U_COMMENTS', $link_start.'comments');
+  
+  // pending comments
+  $query = '
+SELECT COUNT(*)
+  FROM '.COMMENTS_TABLE.'
+  WHERE validated=\'false\'
+;';
+  list($nb_comments) = pwg_db_fetch_row(pwg_query($query));
+
+  if ($nb_comments > 0)
+  {
+    $template->assign('NB_PENDING_COMMENTS', $nb_comments);
+  }
+}
+
+// any photo in the caddie?
+$query = '
+SELECT COUNT(*)
+  FROM '.CADDIE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+list($nb_photos_in_caddie) = pwg_db_fetch_row(pwg_query($query));
+
+if ($nb_photos_in_caddie > 0)
+{
+  $template->assign(
+    array(
+      'NB_PHOTOS_IN_CADDIE' => $nb_photos_in_caddie,
+      'U_CADDIE' => $link_start.'batch_manager&amp;filter=prefilter-caddie',
+      )
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// | Plugin menu                                                           |
+// +-----------------------------------------------------------------------+
+
+$plugin_menu_links = trigger_event('get_admin_plugin_menu_links', array() );
+
+function UC_name_compare($a, $b)
+{
+  return strcmp(strtolower($a['NAME']), strtolower($b['NAME']));
+}
+usort($plugin_menu_links, 'UC_name_compare');
+$template->assign('plugin_menu_items', $plugin_menu_links);
+
+// +-----------------------------------------------------------------------+
+// | Refresh permissions                                                   |
+// +-----------------------------------------------------------------------+
+
+// Only for pages witch change permissions
+if (
+    in_array($page['page'],
+      array(
+        'site_manager', // delete site
+        'site_update',  // ?only POST
+        'cat_list',     // delete cat
+        'cat_move',     // ?only POST
+        'cat_options',  // ?only POST; public/private; lock/unlock
+        'user_perm',
+        'group_perm',
+        'group_list',   // delete group
+      )
+    )
+    or ( !empty($_POST) and in_array($page['page'],
+        array(
+          'photo',
+          'album',        // public/private; lock/unlock, permissions
+          'batch_manager',  // associate/dissociate; delete; set level
+          'user_list',    // group assoc; user level
+        )
+      )
+    )
+  )
+{
+  invalidate_user_cache();
+}
+
+// +-----------------------------------------------------------------------+
+// | Include specific page                                                 |
+// +-----------------------------------------------------------------------+
+
+trigger_action('loc_begin_admin_page');
+include(PHPWG_ROOT_PATH.'admin/'.$page['page'].'.php');
+
+$template->assign('ACTIVE_MENU', get_active_menu($page['page']));
+
+// +-----------------------------------------------------------------------+
+// | Sending html code                                                     |
+// +-----------------------------------------------------------------------+
+
+// Add the Piwigo Official menu
+$template->assign( 'pwgmenu', pwg_URL() );
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+trigger_action('loc_end_admin');
+
+flush_page_messages();
+
+$template->pparse('admin');
+
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/admin/album.php
===================================================================
--- /tags/2.6.0RC1/admin/album.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/album.php	(revision 25596)
@@ -0,0 +1,90 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+// +-----------------------------------------------------------------------+
+// | Basic checks                                                          |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+check_input_parameter('cat_id', $_GET, false, PATTERN_ID);
+
+$admin_album_base_url = get_root_url().'admin.php?page=album-'.$_GET['cat_id'];
+
+$query = '
+SELECT *
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$_GET['cat_id'].'
+;';
+$category = pwg_db_fetch_assoc(pwg_query($query));
+
+if (!isset($category['id']))
+{
+  die("unknown album");
+}
+
+// +-----------------------------------------------------------------------+
+// | Tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$page['tab'] = 'properties';
+
+if (isset($_GET['tab']))
+{
+  $page['tab'] = $_GET['tab'];
+}
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('album');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// | Load the tab                                                          |
+// +-----------------------------------------------------------------------+
+
+if ('properties' == $page['tab'])
+{
+  include(PHPWG_ROOT_PATH.'admin/cat_modify.php');
+}
+elseif ('sort_order' == $page['tab'])
+{
+  include(PHPWG_ROOT_PATH.'admin/element_set_ranks.php');
+}
+elseif ('permissions' == $page['tab'])
+{
+  $_GET['cat'] = $_GET['cat_id'];
+  include(PHPWG_ROOT_PATH.'admin/cat_perm.php');
+}
+else
+{
+  include(PHPWG_ROOT_PATH.'admin/album_'.$page['tab'].'.php');
+}
+?>
Index: /tags/2.6.0RC1/admin/album_notification.php
===================================================================
--- /tags/2.6.0RC1/admin/album_notification.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/album_notification.php	(revision 25596)
@@ -0,0 +1,197 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                       variable initialization                         |
+// +-----------------------------------------------------------------------+
+
+$page['cat'] = $category['id'];
+
+// +-----------------------------------------------------------------------+
+// |                           form submission                             |
+// +-----------------------------------------------------------------------+
+
+// info by email to an access granted group of category informations
+if (isset($_POST['submitEmail']) and !empty($_POST['group']))
+{
+  set_make_full_url();
+
+  /* TODO: if $category['representative_picture_id']
+    is empty find child representative_picture_id */
+  if (!empty($category['representative_picture_id']))
+  {
+    $query = '
+SELECT id, file, path, representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$category['representative_picture_id'].'
+;';
+
+    $result = pwg_query($query);
+    if (pwg_db_num_rows($result) > 0)
+    {
+      $element = pwg_db_fetch_assoc($result);
+
+      $img_url  = '<a href="'.
+                      make_picture_url(array(
+                          'image_id' => $element['id'],
+                          'image_file' => $element['file'],
+                          'category' => $category
+                        ))
+                      .'" class="thumblnk"><img src="'.DerivativeImage::url(IMG_THUMB, $element).'"></a>';
+    }
+  }
+
+  if (!isset($img_url))
+  {
+    $img_url = '';
+  }
+
+  pwg_mail_group(
+    $_POST['group'],
+    array(
+      'subject' => l10n('[%s] Visit album %s', $conf['gallery_title'], $category['name']),
+      // TODO : change this language variable to 'Visit album %s'
+      // TODO : 'language_selected' => ....
+    ),
+    array(
+      'filename' => 'cat_group_info',
+      'assign' => array(
+        'IMG_URL' => $img_url,
+        'CAT_NAME' => $category['name'],
+        'LINK' => make_index_url(array(
+            'category' => array(
+              'id' => $category['id'],
+              'name' => $category['name'],
+              'permalink' => $category['permalink']
+              )
+            )),
+        'CPL_CONTENT' => empty($_POST['mail_content']) ? '' : stripslashes($_POST['mail_content']),
+        )
+      )
+    );
+
+  unset_make_full_url();
+
+  $query = '
+SELECT
+    name
+  FROM '.GROUPS_TABLE.'
+  WHERE id = '.$_POST['group'].'
+;';
+  list($group_name) = pwg_db_fetch_row(pwg_query($query));
+
+  $page['infos'][] = l10n('An information email was sent to group "%s"', $group_name);
+}
+
+// +-----------------------------------------------------------------------+
+// |                       template initialization                         |
+// +-----------------------------------------------------------------------+
+
+$template->set_filename('album_notification', 'album_notification.tpl');
+
+$template->assign(
+  array(
+    'CATEGORIES_NAV' =>
+      get_cat_display_name_from_id(
+        $page['cat'],
+        'admin.php?page=album-'
+        ),
+    'F_ACTION' => $admin_album_base_url.'-notification',
+    'PWG_TOKEN' => get_pwg_token(),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                          form construction                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT
+    id AS group_id
+  FROM '.GROUPS_TABLE.'
+;';
+$all_group_ids = array_from_query($query, 'group_id');
+
+if (count($all_group_ids) == 0)
+{
+  $template->assign('no_group_in_gallery', true);
+}
+else
+{
+  if ('private' == $category['status'])
+  {
+    $query = '
+SELECT
+    group_id
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE cat_id = '.$category['id'].'
+;';
+    $group_ids = array_from_query($query, 'group_id');
+
+    if (count($group_ids) == 0)
+    {
+      $template->assign('permission_url', $admin_album_base_url.'-permissions');
+    }
+  }
+  else
+  {
+    $group_ids = $all_group_ids;
+  }
+
+  if (count($group_ids) > 0)
+  {
+    $query = '
+SELECT
+    id,
+    name
+  FROM '.GROUPS_TABLE.'
+  WHERE id IN ('.implode(',', $group_ids).')
+  ORDER BY name ASC
+;';
+    $template->assign(
+      'group_mail_options',
+      simple_hash_from_query($query, 'id', 'name')
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'album_notification');
+?>
Index: /tags/2.6.0RC1/admin/batch_manager.php
===================================================================
--- /tags/2.6.0RC1/admin/batch_manager.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/batch_manager.php	(revision 25596)
@@ -0,0 +1,564 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Management of elements set. Elements can belong to a category or to the
+ * user caddie.
+ *
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+check_input_parameter('selection', $_POST, true, PATTERN_ID);
+
+
+// +-----------------------------------------------------------------------+
+// |                      initialize current set                           |
+// +-----------------------------------------------------------------------+
+
+// filters from form
+if (isset($_POST['submitFilter']))
+{
+  // echo '<pre>'; print_r($_POST); echo '</pre>';
+  unset($_REQUEST['start']); // new photo set must reset the page
+  $_SESSION['bulk_manager_filter'] = array();
+
+  if (isset($_POST['filter_prefilter_use']))
+  {
+    $_SESSION['bulk_manager_filter']['prefilter'] = $_POST['filter_prefilter'];
+  }
+
+  if (isset($_POST['filter_category_use']))
+  {
+    $_SESSION['bulk_manager_filter']['category'] = $_POST['filter_category'];
+
+    if (isset($_POST['filter_category_recursive']))
+    {
+      $_SESSION['bulk_manager_filter']['category_recursive'] = true;
+    }
+  }
+
+  if (isset($_POST['filter_tags_use']))
+  {
+    $_SESSION['bulk_manager_filter']['tags'] = get_tag_ids($_POST['filter_tags'], false);
+
+    if (isset($_POST['tag_mode']) and in_array($_POST['tag_mode'], array('AND', 'OR')))
+    {
+      $_SESSION['bulk_manager_filter']['tag_mode'] = $_POST['tag_mode'];
+    }
+  }
+
+  if (isset($_POST['filter_level_use']))
+  {
+    if (in_array($_POST['filter_level'], $conf['available_permission_levels']))
+    {
+      $_SESSION['bulk_manager_filter']['level'] = $_POST['filter_level'];
+      
+      if (isset($_POST['filter_level_include_lower']))
+      {
+        $_SESSION['bulk_manager_filter']['level_include_lower'] = true;
+      }
+    }
+  }
+  
+  if (isset($_POST['filter_dimension_use']))
+  {
+    foreach (array('min_width','max_width','min_height','max_height') as $type)
+    {
+      if ( preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $type ]) )
+      {
+        $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ];
+      }
+    }
+    foreach (array('min_ratio','max_ratio') as $type)
+    {
+      if ( preg_match('#^[0-9\.]+$#', $_POST['filter_dimension_'. $type ]) )
+      {
+        $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ];
+      }
+    }
+  }
+}
+// filters from url
+else if (isset($_GET['filter']))
+{
+  if (!is_array($_GET['filter']))
+  {
+    $_GET['filter'] = explode(',', $_GET['filter']);
+  }
+  
+  $_SESSION['bulk_manager_filter'] = array();
+  
+  foreach ($_GET['filter'] as $filter)
+  {
+    list($type, $value) = explode('-', $filter);
+    
+    switch ($type)
+    {
+    case 'prefilter':
+      $_SESSION['bulk_manager_filter']['prefilter'] = $value;
+      break;
+    
+    case 'album':
+      if (is_numeric($value))
+      {
+        $_SESSION['bulk_manager_filter']['category'] = $value;
+      }
+      break;
+      
+    case 'tag':
+      if (is_numeric($value))
+      {
+        $_SESSION['bulk_manager_filter']['tags'] = array($value);
+        $_SESSION['bulk_manager_filter']['tag_mode'] = 'AND';
+      }
+      break;
+      
+    case 'level':
+      if (is_numeric($value) && in_array($value, $conf['available_permission_levels']))
+      {
+        $_SESSION['bulk_manager_filter']['level'] = $value;
+      }
+      break;
+    }
+  }
+}
+
+if (empty($_SESSION['bulk_manager_filter']))
+{
+  $_SESSION['bulk_manager_filter'] = array(
+    'prefilter' => 'caddie'
+    );
+}
+
+// echo '<pre>'; print_r($_SESSION['bulk_manager_filter']); echo '</pre>';
+
+// depending on the current filter (in session), we find the appropriate photos
+$filter_sets = array();
+if (isset($_SESSION['bulk_manager_filter']['prefilter']))
+{
+  switch ($_SESSION['bulk_manager_filter']['prefilter'])
+  {
+  case 'caddie':
+    $query = '
+SELECT element_id
+  FROM '.CADDIE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+    $filter_sets[] = array_from_query($query, 'element_id');
+    
+    break;
+
+  case 'favorites':
+    $query = '
+SELECT image_id
+  FROM '.FAVORITES_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+    $filter_sets[] = array_from_query($query, 'image_id');
+    
+    break;
+
+  case 'last_import':
+    $query = '
+SELECT MAX(date_available) AS date
+  FROM '.IMAGES_TABLE.'
+;';
+    $row = pwg_db_fetch_assoc(pwg_query($query));
+    if (!empty($row['date']))
+    {
+      $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  WHERE date_available BETWEEN '.pwg_db_get_recent_period_expression(1, $row['date']).' AND \''.$row['date'].'\'
+;';
+      $filter_sets[] = array_from_query($query, 'id');
+    }
+    
+    break;
+
+  case 'no_virtual_album':
+    // we are searching elements not linked to any virtual category
+    $query = '
+ SELECT id
+   FROM '.IMAGES_TABLE.'
+ ;';
+    $all_elements = array_from_query($query, 'id');
+
+    $query = '
+ SELECT id
+   FROM '.CATEGORIES_TABLE.'
+   WHERE dir IS NULL
+ ;';
+    $virtual_categories = array_from_query($query, 'id');
+    if (!empty($virtual_categories))
+    {
+      $query = '
+ SELECT DISTINCT(image_id)
+   FROM '.IMAGE_CATEGORY_TABLE.'
+   WHERE category_id IN ('.implode(',', $virtual_categories).')
+ ;';
+      $linked_to_virtual = array_from_query($query, 'image_id');
+    }
+
+    $filter_sets[] = array_diff($all_elements, $linked_to_virtual);
+    
+    break;
+
+  case 'no_album':
+    $query = '
+SELECT
+    id
+  FROM '.IMAGES_TABLE.'
+    LEFT JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id
+  WHERE category_id is null
+;';
+    $filter_sets[] = array_from_query($query, 'id');
+    
+    break;
+
+  case 'no_tag':
+    $query = '
+SELECT
+    id
+  FROM '.IMAGES_TABLE.'
+    LEFT JOIN '.IMAGE_TAG_TABLE.' ON id = image_id
+  WHERE tag_id is null
+;';
+    $filter_sets[] = array_from_query($query, 'id');
+    
+    break;
+
+
+  case 'duplicates':
+    // we could use the group_concat MySQL function to retrieve the list of
+    // image_ids but it would not be compatible with PostgreSQL, so let's
+    // perform 2 queries instead. We hope there are not too many duplicates.
+    $query = '
+SELECT file
+  FROM '.IMAGES_TABLE.'
+  GROUP BY file
+  HAVING COUNT(*) > 1
+;';
+    $duplicate_files = array_from_query($query, 'file');
+
+    $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  WHERE file IN (\''.implode("','", array_map('pwg_db_real_escape_string', $duplicate_files)).'\')
+;';
+    $filter_sets[] = array_from_query($query, 'id');
+    
+    break;
+
+  case 'all_photos':
+    $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  '.$conf['order_by'];
+
+    $filter_sets[] = array_from_query($query, 'id');
+    
+    break;
+  }
+
+  $filter_sets = trigger_event('perform_batch_manager_prefilters', $filter_sets, $_SESSION['bulk_manager_filter']['prefilter']);
+}
+
+if (isset($_SESSION['bulk_manager_filter']['category']))
+{
+  $categories = array();
+
+  if (isset($_SESSION['bulk_manager_filter']['category_recursive']))
+  {
+    $categories = get_subcat_ids(array($_SESSION['bulk_manager_filter']['category']));
+  }
+  else
+  {
+    $categories = array($_SESSION['bulk_manager_filter']['category']);
+  }
+
+  $query = '
+ SELECT DISTINCT(image_id)
+   FROM '.IMAGE_CATEGORY_TABLE.'
+   WHERE category_id IN ('.implode(',', $categories).')
+ ;';
+  $filter_sets[] = array_from_query($query, 'image_id');
+}
+
+if (isset($_SESSION['bulk_manager_filter']['level']))
+{
+  $operator = '=';
+  if (isset($_SESSION['bulk_manager_filter']['level_include_lower']))
+  {
+    $operator = '<=';
+  }
+  
+  $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  WHERE level '.$operator.' '.$_SESSION['bulk_manager_filter']['level'].'
+  '.$conf['order_by'];
+
+  $filter_sets[] = array_from_query($query, 'id');
+}
+
+if (!empty($_SESSION['bulk_manager_filter']['tags']))
+{
+  $filter_sets[] = get_image_ids_for_tags(
+    $_SESSION['bulk_manager_filter']['tags'],
+    $_SESSION['bulk_manager_filter']['tag_mode'],
+    null,
+    null,
+    false // we don't apply permissions in administration screens
+    );
+}
+
+if (isset($_SESSION['bulk_manager_filter']['dimension']))
+{
+  $where_clauses = array();
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_width']))
+  {
+    $where_clause[] = 'width >= '.$_SESSION['bulk_manager_filter']['dimension']['min_width'];
+  }
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_width']))
+  {
+    $where_clause[] = 'width <= '.$_SESSION['bulk_manager_filter']['dimension']['max_width'];
+  }
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_height']))
+  {
+    $where_clause[] = 'height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_height'];
+  }
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_height']))
+  {
+    $where_clause[] = 'height <= '.$_SESSION['bulk_manager_filter']['dimension']['max_height'];
+  }
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_ratio']))
+  {
+    $where_clause[] = 'width/height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_ratio'];
+  }
+  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_ratio']))
+  {
+    // max_ratio is a floor value, so must be a bit increased
+    $where_clause[] = 'width/height < '.($_SESSION['bulk_manager_filter']['dimension']['max_ratio']+0.01);
+  }
+  
+  $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  WHERE '.implode(' AND ',$where_clause).'
+  '.$conf['order_by'];
+
+  $filter_sets[] = array_from_query($query, 'id');
+}
+
+$current_set = array_shift($filter_sets);
+foreach ($filter_sets as $set)
+{
+  $current_set = array_intersect($current_set, $set);
+}
+$page['cat_elements_id'] = $current_set;
+
+
+// +-----------------------------------------------------------------------+
+// |                       first element to display                        |
+// +-----------------------------------------------------------------------+
+
+// $page['start'] contains the number of the first element in its
+// category. For exampe, $page['start'] = 12 means we must show elements #12
+// and $page['nb_images'] next elements
+
+if (!isset($_REQUEST['start'])
+    or !is_numeric($_REQUEST['start'])
+    or $_REQUEST['start'] < 0
+    or (isset($_REQUEST['display']) and 'all' == $_REQUEST['display']))
+{
+  $page['start'] = 0;
+}
+else
+{
+  $page['start'] = $_REQUEST['start'];
+}
+
+
+// +-----------------------------------------------------------------------+
+// |                                 Tabs                                  |
+// +-----------------------------------------------------------------------+
+$manager_link = get_root_url().'admin.php?page=batch_manager&amp;mode=';
+
+if (isset($_GET['mode']))
+{
+  $page['tab'] = $_GET['mode'];
+}
+else
+{
+  $page['tab'] = 'global';
+}
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('batch_manager');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+
+// +-----------------------------------------------------------------------+
+// |                              tags                                     |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT id, name
+  FROM '.TAGS_TABLE.'
+;';
+$template->assign('tags', get_taglist($query, false));
+
+
+// +-----------------------------------------------------------------------+
+// |                              dimensions                               |
+// +-----------------------------------------------------------------------+
+
+$widths = array();
+$heights = array();
+$ratios = array();
+
+// get all width, height and ratios
+$query = '
+SELECT
+  DISTINCT width, height
+  FROM '.IMAGES_TABLE.'
+  WHERE width IS NOT NULL
+    AND height IS NOT NULL
+;';
+$result = pwg_query($query);
+
+if (pwg_db_num_rows($result))
+{
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['width']>0 && $row['height']>0)
+    {
+      $widths[] = $row['width'];
+      $heights[] = $row['height'];
+      $ratios[] = floor($row['width'] / $row['height'] * 100) / 100;
+    }
+  }
+}
+if (empty($widths))
+{ // arbitrary values, only used when no photos on the gallery
+  $widths = array(600, 1920, 3500);
+  $heights = array(480, 1080, 2300);
+  $ratios = array(1.25, 1.52, 1.78);
+}
+
+
+
+$widths = array_unique($widths);
+sort($widths);
+
+$heights = array_unique($heights);
+sort($heights);
+
+$ratios = array_unique($ratios);
+sort($ratios);
+
+$dimensions['widths'] = implode(',', $widths);
+$dimensions['heights'] = implode(',', $heights);
+$dimensions['ratios'] = implode(',', $ratios);
+
+$dimensions['bounds'] = array(
+  'min_width' => $widths[0],
+  'max_width' => $widths[count($widths)-1],
+  'min_height' => $heights[0],
+  'max_height' => $heights[count($heights)-1],
+  'min_ratio' => $ratios[0],
+  'max_ratio' => $ratios[count($ratios)-1],
+  );
+
+// find ratio categories
+$ratio_categories = array(
+  'portrait' => array(),
+  'square' => array(),
+  'landscape' => array(),
+  'panorama' => array(),
+  );
+
+foreach ($ratios as $ratio)
+{
+  if ($ratio < 0.95)
+  {
+    $ratio_categories['portrait'][] = $ratio;
+  }
+  else if ($ratio >= 0.95 and $ratio <= 1.05)
+  {
+    $ratio_categories['square'][] = $ratio;
+  }
+  else if ($ratio > 1.05 and $ratio < 2)
+  {
+    $ratio_categories['landscape'][] = $ratio;
+  }
+  else if ($ratio >= 2)
+  {
+    $ratio_categories['panorama'][] = $ratio;
+  }
+}
+
+foreach (array_keys($ratio_categories) as $ratio_category)
+{
+  if (count($ratio_categories[$ratio_category]) > 0)
+  {
+    $dimensions['ratio_'.$ratio_category] = array(
+      'min' => $ratio_categories[$ratio_category][0],
+      'max' => array_pop($ratio_categories[$ratio_category]),
+      );
+  }
+}
+
+// selected=bound if nothing selected
+foreach (array_keys($dimensions['bounds']) as $type)
+{
+  $dimensions['selected'][$type] = isset($_SESSION['bulk_manager_filter']['dimension'][$type])
+    ? $_SESSION['bulk_manager_filter']['dimension'][$type]
+    : $dimensions['bounds'][$type]
+  ;
+}
+
+$template->assign('dimensions', $dimensions);
+
+
+// +-----------------------------------------------------------------------+
+// |                         open specific mode                            |
+// +-----------------------------------------------------------------------+
+
+include(PHPWG_ROOT_PATH.'admin/batch_manager_'.$page['tab'].'.php');
+?>
Index: /tags/2.6.0RC1/admin/batch_manager_global.php
===================================================================
--- /tags/2.6.0RC1/admin/batch_manager_global.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/batch_manager_global.php	(revision 25596)
@@ -0,0 +1,734 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Management of elements set. Elements can belong to a category or to the
+ * user caddie.
+ *
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+trigger_action('loc_begin_element_set_global');
+
+check_input_parameter('del_tags', $_POST, true, PATTERN_ID);
+check_input_parameter('associate', $_POST, false, PATTERN_ID);
+check_input_parameter('move', $_POST, false, PATTERN_ID);
+check_input_parameter('dissociate', $_POST, false, PATTERN_ID);
+
+// +-----------------------------------------------------------------------+
+// |                            current selection                          |
+// +-----------------------------------------------------------------------+
+
+$collection = array();
+if (isset($_POST['setSelected']))
+{
+  $collection = $page['cat_elements_id'];
+}
+else if (isset($_POST['selection']))
+{
+  $collection = $_POST['selection'];
+}
+
+// +-----------------------------------------------------------------------+
+// |                       global mode form submission                     |
+// +-----------------------------------------------------------------------+
+
+// $page['prefilter'] is a shortcut to test if the current filter contains a
+// given prefilter. The idea is to make conditions simpler to write in the
+// code.
+$page['prefilter'] = 'none';
+if (isset($_SESSION['bulk_manager_filter']['prefilter']))
+{
+  $page['prefilter'] = $_SESSION['bulk_manager_filter']['prefilter'];
+}
+
+$redirect_url = get_root_url().'admin.php?page='.$_GET['page'];
+
+if (isset($_POST['submit']))
+{
+  // if the user tries to apply an action, it means that there is at least 1
+  // photo in the selection
+  if (count($collection) == 0)
+  {
+    $page['errors'][] = l10n('Select at least one photo');
+  }
+
+  $action = $_POST['selectAction'];
+  
+  if ('remove_from_caddie' == $action)
+  {
+    $query = '
+DELETE
+  FROM '.CADDIE_TABLE.'
+  WHERE element_id IN ('.implode(',', $collection).')
+    AND user_id = '.$user['id'].'
+;';
+    pwg_query($query);
+
+    // remove from caddie action available only in caddie so reload content
+    redirect($redirect_url);
+  }
+
+  if ('add_tags' == $action)
+  {
+    if (empty($_POST['add_tags']))
+    {
+      $page['errors'][] = l10n('Select at least one tag');
+    }
+    else
+    {
+      $tag_ids = get_tag_ids($_POST['add_tags']);
+      add_tags($tag_ids, $collection);
+
+      if ('no_tag' == $page['prefilter'])
+      {
+        redirect($redirect_url);
+      }
+    }
+  }
+
+  if ('del_tags' == $action)
+  {
+     if (isset($_POST['del_tags']) and count($_POST['del_tags']) > 0)
+     {
+    $query = '
+DELETE
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE image_id IN ('.implode(',', $collection).')
+    AND tag_id IN ('.implode(',', $_POST['del_tags']).')
+;';
+    pwg_query($query);
+    }
+     else
+     {
+      $page['errors'][] = l10n('Select at least one tag');
+     }
+  }
+
+  if ('associate' == $action)
+  {
+    associate_images_to_categories(
+      $collection,
+      array($_POST['associate'])
+      );
+
+    $_SESSION['page_infos'] = array(
+      l10n('Information data registered in database')
+      );
+    
+    // let's refresh the page because we the current set might be modified
+    if ('no_album' == $page['prefilter'])
+    {
+      redirect($redirect_url);
+    }
+
+    if ('no_virtual_album' == $page['prefilter'])
+    {
+      $category_info = get_cat_info($_POST['associate']);
+      if (empty($category_info['dir']))
+      {
+        redirect($redirect_url);
+      }
+    }
+  }
+
+  if ('move' == $action)
+  {
+    move_images_to_categories($collection, array($_POST['move']));
+
+    $_SESSION['page_infos'] = array(
+      l10n('Information data registered in database')
+      );
+    
+    // let's refresh the page because we the current set might be modified
+    if ('no_album' == $page['prefilter'])
+    {
+      redirect($redirect_url);
+    }
+
+    if ('no_virtual_album' == $page['prefilter'])
+    {
+      $category_info = get_cat_info($_POST['move']);
+      if (empty($category_info['dir']))
+      {
+        redirect($redirect_url);
+      }
+    }
+
+    if (isset($_SESSION['bulk_manager_filter']['category'])
+        and $_POST['move'] != $_SESSION['bulk_manager_filter']['category'])
+    {
+      redirect($redirect_url);
+    }
+  }
+
+  if ('dissociate' == $action)
+  {
+    // physical links must not be broken, so we must first retrieve image_id
+    // which create virtual links with the category to "dissociate from".
+    $query = '
+SELECT id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    INNER JOIN '.IMAGES_TABLE.' ON image_id = id
+  WHERE category_id = '.$_POST['dissociate'].'
+    AND id IN ('.implode(',', $collection).')
+    AND (
+      category_id != storage_category_id
+      OR storage_category_id IS NULL
+    )
+;';
+    $dissociables = array_from_query($query, 'id');
+
+    if (!empty($dissociables))
+    {
+      $query = '
+DELETE
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id = '.$_POST['dissociate'].'
+    AND image_id IN ('.implode(',', $dissociables).')
+';
+      pwg_query($query);
+
+      $_SESSION['page_infos'] = array(
+        l10n('Information data registered in database')
+        );
+      
+      // let's refresh the page because the current set might be modified
+      redirect($redirect_url);
+    }
+  }
+
+  // author
+  if ('author' == $action)
+  {
+    if (isset($_POST['remove_author']))
+    {
+      $_POST['author'] = null;
+    }
+    
+    $datas = array();
+    foreach ($collection as $image_id)
+    {
+      $datas[] = array(
+        'id' => $image_id,
+        'author' => $_POST['author']
+        );
+    }
+
+    mass_updates(
+      IMAGES_TABLE,
+      array('primary' => array('id'), 'update' => array('author')),
+      $datas
+      );
+  }
+
+  // title
+  if ('title' == $action)
+  {
+    if (isset($_POST['remove_title']))
+    {
+      $_POST['title'] = null;
+    }
+    
+    $datas = array();
+    foreach ($collection as $image_id)
+    {
+      $datas[] = array(
+        'id' => $image_id,
+        'name' => $_POST['title']
+        );
+    }
+
+    mass_updates(
+      IMAGES_TABLE,
+      array('primary' => array('id'), 'update' => array('name')),
+      $datas
+      );
+  }
+  
+  // date_creation
+  if ('date_creation' == $action)
+  {
+    $date_creation = sprintf(
+      '%u-%u-%u',
+      $_POST['date_creation_year'],
+      $_POST['date_creation_month'],
+      $_POST['date_creation_day']
+      );
+
+    if (isset($_POST['remove_date_creation']))
+    {
+      $date_creation = null;
+    }
+
+    $datas = array();
+    foreach ($collection as $image_id)
+    {
+      $datas[] = array(
+        'id' => $image_id,
+        'date_creation' => $date_creation
+        );
+    }
+
+    mass_updates(
+      IMAGES_TABLE,
+      array('primary' => array('id'), 'update' => array('date_creation')),
+      $datas
+      );
+  }
+  
+  // privacy_level
+  if ('level' == $action)
+  {
+    $datas = array();
+    foreach ($collection as $image_id)
+    {
+      $datas[] = array(
+        'id' => $image_id,
+        'level' => $_POST['level']
+        );
+    }
+
+    mass_updates(
+      IMAGES_TABLE,
+      array('primary' => array('id'), 'update' => array('level')),
+      $datas
+      );
+
+    if (isset($_SESSION['bulk_manager_filter']['level']))
+    {
+      if ($_POST['level'] < $_SESSION['bulk_manager_filter']['level'])
+      {
+        redirect($redirect_url);
+      }
+    }
+  }
+  
+  // add_to_caddie
+  if ('add_to_caddie' == $action)
+  {
+    fill_caddie($collection);
+  }
+  
+  // delete
+  if ('delete' == $action)
+  {
+    if (isset($_POST['confirm_deletion']) and 1 == $_POST['confirm_deletion'])
+    {
+      $deleted_count = delete_elements($collection, true);
+      if ($deleted_count > 0)
+      {
+        $_SESSION['page_infos'][] = l10n_dec(
+          '%d photo was deleted', '%d photos were deleted',
+          $deleted_count
+          );
+
+        $redirect_url = get_root_url().'admin.php?page='.$_GET['page'];
+        redirect($redirect_url);
+      }
+      else
+      {
+        $page['errors'][] = l10n('No photo can be deleted');
+      }
+    }
+    else
+    {
+      $page['errors'][] = l10n('You need to confirm deletion');
+    }
+  }
+
+  // synchronize metadata
+  if ('metadata' == $action)
+  {
+    sync_metadata($collection);
+    $page['infos'][] = l10n('Metadata synchronized from file');
+  }
+
+  if ('delete_derivatives' == $action)
+  {
+    $query='SELECT path,representative_ext FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $collection).')';
+    $result = pwg_query($query);
+    while ($info = pwg_db_fetch_assoc($result))
+    {
+      foreach( $_POST['del_derivatives_type'] as $type)
+      {
+        delete_element_derivatives($info, $type);
+      }
+    }
+  }
+
+  if ('generate_derivatives' == $action)
+  {
+    if ($_POST['regenerateSuccess'] != '0')
+    {
+      $page['infos'][] = l10n('%s photos have been regenerated', $_POST['regenerateSuccess']);
+    }
+    if ($_POST['regenerateError'] != '0')
+    {
+      $page['warnings'][] = l10n('%s photos can not be regenerated', $_POST['regenerateError']);
+    }
+  }
+
+  trigger_action('element_set_global_action', $action, $collection);
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array('batch_manager_global' => 'batch_manager_global.tpl'));
+
+$base_url = get_root_url().'admin.php';
+
+$prefilters = array(
+  array('ID' => 'caddie', 'NAME' => l10n('Caddie')),
+  array('ID' => 'favorites', 'NAME' => l10n('Your favorites')),
+  array('ID' => 'last_import', 'NAME' => l10n('Last import')),
+  array('ID' => 'no_album', 'NAME' => l10n('With no album')),
+  array('ID' => 'no_tag', 'NAME' => l10n('With no tag')),
+  array('ID' => 'duplicates', 'NAME' => l10n('Duplicates')),
+  array('ID' => 'all_photos', 'NAME' => l10n('All'))
+);
+
+if ($conf['enable_synchronization'])
+{
+  $prefilters[] = array('ID' => 'no_virtual_album', 'NAME' => l10n('With no virtual album'));
+}
+
+$prefilters = trigger_event('get_batch_manager_prefilters', $prefilters);
+usort($prefilters, 'UC_name_compare');
+
+$template->assign(
+  array(
+    'prefilters' => $prefilters,
+    'filter' => $_SESSION['bulk_manager_filter'],
+    'selection' => $collection,
+    'all_elements' => $page['cat_elements_id'],
+    'START' => $page['start'],
+    'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')),
+    'F_ACTION'=>$base_url.get_query_string_diff(array('cat','start','tag','filter')),
+   )
+ );
+
+// +-----------------------------------------------------------------------+
+// |                            caddie options                             |
+// +-----------------------------------------------------------------------+
+$template->assign('IN_CADDIE', 'caddie' == $page['prefilter']);
+
+
+// +-----------------------------------------------------------------------+
+// |                           global mode form                            |
+// +-----------------------------------------------------------------------+
+
+// privacy level
+foreach ($conf['available_permission_levels'] as $level)
+{
+  $level_options[$level] = l10n(sprintf('Level %d', $level));
+
+  if (0 == $level)
+  {
+    $level_options[$level] = l10n('Everybody');
+  }
+}
+$template->assign(
+  array(
+    'filter_level_options'=> $level_options,
+    'filter_level_options_selected' => isset($_SESSION['bulk_manager_filter']['level'])
+    ? $_SESSION['bulk_manager_filter']['level']
+    : 0,
+    )
+  );
+
+// tags
+if (!empty($_SESSION['bulk_manager_filter']['tags']))
+{
+  $query = '
+SELECT
+    id,
+    name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $_SESSION['bulk_manager_filter']['tags']).')
+;';
+  $template->assign('filter_tags', get_taglist($query));
+}
+
+// Virtualy associate a picture to a category
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+;';
+$categories = array_from_query($query);
+usort($categories, 'global_rank_compare');
+display_select_categories($categories, array(), 'category_full_name_options', true);
+
+display_select_cat_wrapper($query, array(), 'category_parent_options');
+
+// in the filter box, which category to select by default
+$selected_category = array();
+
+if (isset($_SESSION['bulk_manager_filter']['category']))
+{
+  $selected_category = array($_SESSION['bulk_manager_filter']['category']);
+}
+else
+{
+  // we need to know the category in which the last photo was added
+  $query = '
+SELECT
+    category_id,
+    id_uppercat
+  FROM '.IMAGES_TABLE.' AS i
+    JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id
+    JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id
+  ORDER BY i.id DESC
+  LIMIT 1
+;';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) > 0)
+  {
+    $row = pwg_db_fetch_assoc($result);
+    $selected_category = array($row['category_id']);
+  }
+}
+
+$template->assign( 'filter_category_selected', $selected_category);
+
+// Dissociate from a category : categories listed for dissociation can only
+// represent virtual links. We can't create orphans. Links to physical
+// categories can't be broken.
+if (count($page['cat_elements_id']) > 0)
+{
+  $query = '
+SELECT
+    DISTINCT(category_id) AS id,
+    c.name,
+    c.uppercats,
+    c.global_rank
+  FROM '.IMAGE_CATEGORY_TABLE.' AS ic
+    JOIN '.CATEGORIES_TABLE.' AS c ON c.id = ic.category_id
+    JOIN '.IMAGES_TABLE.' AS i ON i.id = ic.image_id
+  WHERE ic.image_id IN ('.implode(',', $page['cat_elements_id']).')
+    AND (
+      ic.category_id != i.storage_category_id
+      OR i.storage_category_id IS NULL
+    )
+;';
+  display_select_cat_wrapper($query, array(), 'dissociate_options', true);
+}
+
+if (count($page['cat_elements_id']) > 0)
+{
+  // remove tags
+  $tags = get_common_tags($page['cat_elements_id'], -1);
+
+  $template->assign(
+    array(
+      'DEL_TAG_SELECTION' => get_html_tag_selection($tags, 'del_tags'),
+      )
+    );
+}
+
+// creation date
+$day =
+empty($_POST['date_creation_day']) ? date('j') : $_POST['date_creation_day'];
+
+$month =
+empty($_POST['date_creation_month']) ? date('n') : $_POST['date_creation_month'];
+
+$year =
+empty($_POST['date_creation_year']) ? date('Y') : $_POST['date_creation_year'];
+
+$month_list = $lang['month'];
+$month_list[0]='------------';
+ksort($month_list);
+$template->assign( array(
+      'month_list'         => $month_list,
+      'DATE_CREATION_DAY'  => (int)$day,
+      'DATE_CREATION_MONTH'=> (int)$month,
+      'DATE_CREATION_YEAR' => (int)$year,
+    )
+  );
+
+// image level options
+$template->assign(
+    array(
+      'level_options'=> get_privacy_level_options(),
+      'level_options_selected' => 0,
+    )
+  );
+
+// metadata
+include_once( PHPWG_ROOT_PATH.'admin/site_reader_local.php');
+$site_reader = new LocalSiteReader('./');
+$used_metadata = implode( ', ', $site_reader->get_metadata_attributes());
+
+$template->assign(
+    array(
+      'used_metadata' => $used_metadata,
+    )
+  );
+
+//derivatives
+$del_deriv_map = array();
+foreach(ImageStdParams::get_defined_type_map() as $params)
+{
+  $del_deriv_map[$params->type] = l10n($params->type);
+}
+$gen_deriv_map = $del_deriv_map;
+$del_deriv_map[IMG_CUSTOM] = l10n(IMG_CUSTOM);
+$template->assign(
+    array(
+      'del_derivatives_types' => $del_deriv_map,
+      'generate_derivatives_types' => $gen_deriv_map,
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                        global mode thumbnails                         |
+// +-----------------------------------------------------------------------+
+
+// how many items to display on this page
+if (!empty($_GET['display']))
+{
+  if ('all' == $_GET['display'])
+  {
+    $page['nb_images'] = count($page['cat_elements_id']);
+  }
+  else
+  {
+    $page['nb_images'] = intval($_GET['display']);
+  }
+}
+else
+{
+  $page['nb_images'] = 20;
+}
+
+$nb_thumbs_page = 0;
+
+if (count($page['cat_elements_id']) > 0)
+{
+  $nav_bar = create_navigation_bar(
+    $base_url.get_query_string_diff(array('start')),
+    count($page['cat_elements_id']),
+    $page['start'],
+    $page['nb_images']
+    );
+  $template->assign('navbar', $nav_bar);
+
+  $is_category = false;
+  if (isset($_SESSION['bulk_manager_filter']['category'])
+      and !isset($_SESSION['bulk_manager_filter']['category_recursive']))
+  {
+    $is_category = true;
+  }
+
+  if (isset($_SESSION['bulk_manager_filter']['prefilter'])
+      and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
+  {
+    $conf['order_by'] = ' ORDER BY file, id';
+  }
+
+  $query = '
+SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation
+  FROM '.IMAGES_TABLE;
+  
+  if ($is_category)
+  {
+    $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']);
+    
+    $conf['order_by'] = $conf['order_by_inside_category'];
+    if (!empty($category_info['image_order']))
+    {
+      $conf['order_by'] = ' ORDER BY '.$category_info['image_order'];
+    }
+
+    $query.= '
+    JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id';
+  }
+
+  $query.= '
+  WHERE id IN ('.implode(',', $page['cat_elements_id']).')';
+
+  if ($is_category)
+  {
+    $query.= '
+    AND category_id = '.$_SESSION['bulk_manager_filter']['category'];
+  }
+
+  $query.= '
+  '.$conf['order_by'].'
+  LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].'
+;';
+  $result = pwg_query($query);
+
+  $thumb_params = ImageStdParams::get_by_type(IMG_THUMB);
+  // template thumbnail initialization
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $nb_thumbs_page++;
+    $src_image = new SrcImage($row);
+
+    $ttitle = render_element_name($row);
+    if ($ttitle != get_name_from_file($row['file']))
+    {
+      $ttitle.= ' ('.$row['file'].')';
+    }
+
+    $template->append(
+      'thumbnails', array_merge($row,
+      array(
+        'thumb' => new DerivativeImage($thumb_params, $src_image),
+        'TITLE' => $ttitle,
+        'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image),
+        'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'],
+        )
+      ));
+  }
+  $template->assign('thumb_params', $thumb_params);
+}
+
+$template->assign(
+  array(
+    'nb_thumbs_page' => $nb_thumbs_page,
+    'nb_thumbs_set' => count($page['cat_elements_id']),
+    )
+  );
+
+trigger_action('loc_end_element_set_global');
+
+//----------------------------------------------------------- sending html code
+$template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_global');
+?>
Index: /tags/2.6.0RC1/admin/batch_manager_unit.php
===================================================================
--- /tags/2.6.0RC1/admin/batch_manager_unit.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/batch_manager_unit.php	(revision 25596)
@@ -0,0 +1,295 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Management of elements set. Elements can belong to a category or to the
+ * user caddie.
+ *
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+trigger_action('loc_begin_element_set_unit');
+
+// +-----------------------------------------------------------------------+
+// |                        unit mode form submission                      |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit']))
+{
+  $collection = explode(',', $_POST['element_ids']);
+
+  $datas = array();
+
+  $query = '
+SELECT id, date_creation
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $collection).')
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $data = array();
+
+    $data['id'] = $row['id'];
+    $data['name'] = $_POST['name-'.$row['id']];
+    $data['author'] = $_POST['author-'.$row['id']];
+    $data['level'] = $_POST['level-'.$row['id']];
+
+    foreach (array('name', 'level') as $field)
+    {
+      if (!empty($_POST[$field.'-'.$row['id']]))
+      {
+        $data[$field] = strip_tags($_POST[$field.'-'.$row['id']]);
+      }
+    }
+
+    if ($conf['allow_html_descriptions'])
+    {
+      $data['comment'] = @$_POST['description-'.$row['id']];
+    }
+    else
+    {
+      $data['comment'] = strip_tags(@$_POST['description-'.$row['id']]);
+    }
+
+    if (isset($_POST['date_creation_action-'.$row['id']]))
+    {
+      if ('set' == $_POST['date_creation_action-'.$row['id']])
+      {
+        $data['date_creation'] =
+          $_POST['date_creation_year-'.$row['id']]
+            .'-'.$_POST['date_creation_month-'.$row['id']]
+            .'-'.$_POST['date_creation_day-'.$row['id']];
+      }
+      else if ('unset' == $_POST['date_creation_action-'.$row['id']])
+      {
+        $data['date_creation'] = '';
+      }
+    }
+    else
+    {
+      $data['date_creation'] = $row['date_creation'];
+    }
+
+    $datas[] = $data;
+
+    // tags management
+    $tag_ids = array();
+    if (!empty($_POST[ 'tags-'.$row['id'] ]))
+    {
+      $tag_ids = get_tag_ids($_POST[ 'tags-'.$row['id'] ]);
+    }
+    set_tags($tag_ids, $row['id']);
+  }
+
+  mass_updates(
+    IMAGES_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('name','author','level','comment','date_creation')
+      ),
+    $datas
+    );
+
+  $page['infos'][] = l10n('Photo informations updated');
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array('batch_manager_unit' => 'batch_manager_unit.tpl'));
+
+$base_url = PHPWG_ROOT_PATH.'admin.php';
+
+$month_list = $lang['month'];
+$month_list[0]='------------';
+ksort($month_list);
+
+$template->assign(
+  array(
+    'U_ELEMENTS_PAGE' => $base_url.get_query_string_diff(array('display','start')),
+    'F_ACTION'=>$base_url.get_query_string_diff(array()),    
+    'month_list' => $month_list,
+    'level_options' => get_privacy_level_options(),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                        global mode thumbnails                         |
+// +-----------------------------------------------------------------------+
+
+// how many items to display on this page
+if (!empty($_GET['display']))
+{
+  if ('all' == $_GET['display'])
+  {
+    $page['nb_images'] = count($page['cat_elements_id']);
+  }
+  else
+  {
+    $page['nb_images'] = intval($_GET['display']);
+  }
+}
+else
+{
+  $page['nb_images'] = 5;
+}
+
+
+
+if (count($page['cat_elements_id']) > 0)
+{
+  $nav_bar = create_navigation_bar(
+    $base_url.get_query_string_diff(array('start')),
+    count($page['cat_elements_id']),
+    $page['start'],
+    $page['nb_images']
+    );
+  $template->assign(array('navbar' => $nav_bar));
+
+  $element_ids = array();
+
+  $is_category = false;
+  if (isset($_SESSION['bulk_manager_filter']['category'])
+      and !isset($_SESSION['bulk_manager_filter']['category_recursive']))
+  {
+    $is_category = true;
+  }
+
+  if (isset($_SESSION['bulk_manager_filter']['prefilter'])
+      and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
+  {
+    $conf['order_by'] = ' ORDER BY file, id';
+  }
+
+
+  $query = '
+SELECT *
+  FROM '.IMAGES_TABLE;
+  
+  if ($is_category)
+  {
+    $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']);
+    
+    $conf['order_by'] = $conf['order_by_inside_category'];
+    if (!empty($category_info['image_order']))
+    {
+      $conf['order_by'] = ' ORDER BY '.$category_info['image_order'];
+    }
+
+    $query.= '
+    JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id';
+  }
+
+  $query.= '
+  WHERE id IN ('.implode(',', $page['cat_elements_id']).')';
+
+  if ($is_category)
+  {
+    $query.= '
+    AND category_id = '.$_SESSION['bulk_manager_filter']['category'];
+  }
+
+  $query.= '
+  '.$conf['order_by'].'
+  LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].'
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $element_ids[] = $row['id'];
+
+    $src_image = new SrcImage($row);
+
+    // creation date
+    if (!empty($row['date_creation']))
+    {
+      list($year,$month,$day) = explode('-', $row['date_creation']);
+    }
+    else
+    {
+      list($year,$month,$day) = array('',0,0);
+    }
+
+    $query = '
+SELECT
+    id,
+    name
+  FROM '.IMAGE_TAG_TABLE.' AS it
+    JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id
+  WHERE image_id = '.$row['id'].'
+;';
+    $tag_selection = get_taglist($query);
+
+    $legend = render_element_name($row);
+    if ($legend != get_name_from_file($row['file']))
+    {
+      $legend.= ' ('.$row['file'].')';
+    }
+
+    $template->append(
+      'elements', array_merge($row,
+      array(
+        'ID' => $row['id'],
+        'TN_SRC' => DerivativeImage::url(IMG_THUMB, $src_image),
+        'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image),
+        'LEGEND' => $legend,
+        'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'],
+        'NAME' => htmlspecialchars(@$row['name']),
+        'AUTHOR' => htmlspecialchars(@$row['author']),
+        'LEVEL' => !empty($row['level'])?$row['level']:'0',
+        'DESCRIPTION' => htmlspecialchars(@$row['comment']),
+        'DATE_CREATION_YEAR' => $year,
+        'DATE_CREATION_MONTH' => (int)$month,
+        'DATE_CREATION_DAY' => (int)$day,
+        'TAGS' => $tag_selection,
+        )
+      ));
+  }
+
+  $template->assign('ELEMENT_IDS', implode(',', $element_ids));
+}
+
+trigger_action('loc_end_element_set_unit');
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_unit');
+?>
Index: /tags/2.6.0RC1/admin/cat_list.php
===================================================================
--- /tags/2.6.0RC1/admin/cat_list.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/cat_list.php	(revision 25596)
@@ -0,0 +1,333 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+trigger_action('loc_begin_cat_list');
+
+if (!empty($_POST) or isset($_GET['delete']))
+{
+  check_pwg_token();
+}
+
+// +-----------------------------------------------------------------------+
+// |                               functions                               |
+// +-----------------------------------------------------------------------+
+
+/**
+ * save the rank depending on given categories order
+ *
+ * The list of ordered categories id is supposed to be in the same parent
+ * category
+ *
+ * @param array categories
+ * @return void
+ */
+function save_categories_order($categories)
+{
+  $current_rank_for_id_uppercat = array();
+  $current_rank = 0;
+  
+  $datas = array();
+  foreach ($categories as $category)
+  {
+    if (is_array($category))
+    {
+      $id = $category['id'];
+      $id_uppercat = $category['id_uppercat'];
+
+      if (!isset($current_rank_for_id_uppercat[$id_uppercat]))
+      {
+        $current_rank_for_id_uppercat[$id_uppercat] = 0;
+      }
+      $current_rank = ++$current_rank_for_id_uppercat[$id_uppercat];
+    }
+    else
+    {
+      $id = $category;
+      $current_rank++;
+    }
+    
+    $datas[] = array('id' => $id, 'rank' => $current_rank);
+  }
+  $fields = array('primary' => array('id'), 'update' => array('rank'));
+  mass_updates(CATEGORIES_TABLE, $fields, $datas);
+
+  update_global_rank();
+}
+
+// +-----------------------------------------------------------------------+
+// |                            initialization                             |
+// +-----------------------------------------------------------------------+
+
+check_input_parameter('parent_id', $_GET, false, PATTERN_ID);
+
+$categories = array();
+
+$base_url = get_root_url().'admin.php?page=cat_list';
+$navigation = '<a href="'.$base_url.'">';
+$navigation.= l10n('Home');
+$navigation.= '</a>';
+
+// +-----------------------------------------------------------------------+
+// | tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+$page['tab'] = 'list';
+include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                    virtual categories management                      |
+// +-----------------------------------------------------------------------+
+// request to delete a virtual category
+if (isset($_GET['delete']) and is_numeric($_GET['delete']))
+{
+  delete_categories(array($_GET['delete']));
+  $_SESSION['page_infos'] = array(l10n('Virtual album deleted'));
+  update_global_rank();
+
+  $redirect_url = get_root_url().'admin.php?page=cat_list';
+  if (isset($_GET['parent_id']))
+  {
+    $redirect_url.= '&parent_id='.$_GET['parent_id'];
+  }  
+  redirect($redirect_url);
+}
+// request to add a virtual category
+else if (isset($_POST['submitAdd']))
+{
+  $output_create = create_virtual_category(
+    $_POST['virtual_name'],
+    @$_GET['parent_id']
+    );
+
+  if (isset($output_create['error']))
+  {
+    $page['errors'][] = $output_create['error'];
+  }
+  else
+  {
+    $page['infos'][] = $output_create['info'];
+  }
+}
+// save manual category ordering
+else if (isset($_POST['submitManualOrder']))
+{
+  asort($_POST['catOrd'], SORT_NUMERIC);
+  save_categories_order(array_keys($_POST['catOrd']));
+
+  $page['infos'][] = l10n('Album manual order was saved');
+}
+else if (isset($_POST['submitAutoOrder']))
+{
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id_uppercat '.
+    (!isset($_GET['parent_id']) ? 'IS NULL' : '= '.$_GET['parent_id']).'
+;';
+  $category_ids = array_from_query($query, 'id');
+
+  if (isset($_POST['recursive']))
+  {
+    $category_ids = get_subcat_ids($category_ids);
+  }
+  
+  $categories = array();
+  $names = array();
+  $id_uppercats = array();
+  
+  $query = '
+SELECT id, name, id_uppercat
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $category_ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $categories[] = array(
+      'id' => $row['id'],
+      'id_uppercat' => $row['id_uppercat'],
+      );
+    $names[] = $row['name'];
+  }
+
+  array_multisort(
+    $names,
+    SORT_REGULAR,
+    'asc' == $_POST['ascdesc'] ? SORT_ASC : SORT_DESC,
+    $categories
+    );
+  save_categories_order($categories);
+
+  $page['infos'][] = l10n('Albums automatically sorted');
+}
+
+// +-----------------------------------------------------------------------+
+// |                            Navigation path                            |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['parent_id']))
+{
+  $navigation.= $conf['level_separator'];
+
+  $navigation.= get_cat_display_name_from_id(
+    $_GET['parent_id'],
+    $base_url.'&amp;parent_id='
+    );
+}
+// +-----------------------------------------------------------------------+
+// |                       template initialization                         |
+// +-----------------------------------------------------------------------+
+$template->set_filename('categories', 'cat_list.tpl');
+
+$form_action = PHPWG_ROOT_PATH.'admin.php?page=cat_list';
+if (isset($_GET['parent_id']))
+{
+  $form_action.= '&amp;parent_id='.$_GET['parent_id'];
+}
+
+$template->assign(array(
+  'CATEGORIES_NAV'=>$navigation,
+  'F_ACTION'=>$form_action,
+  'PWG_TOKEN' => get_pwg_token(),
+ ));
+
+// +-----------------------------------------------------------------------+
+// |                          Categories display                           |
+// +-----------------------------------------------------------------------+
+
+$categories = array();
+
+$query = '
+SELECT id, name, permalink, dir, rank, status
+  FROM '.CATEGORIES_TABLE;
+if (!isset($_GET['parent_id']))
+{
+  $query.= '
+  WHERE id_uppercat IS NULL';
+}
+else
+{
+  $query.= '
+  WHERE id_uppercat = '.$_GET['parent_id'];
+}
+$query.= '
+  ORDER BY rank ASC
+;';
+$categories = hash_from_query($query, 'id');
+
+// get the categories containing images directly 
+$categories_with_images = array();
+if ( count($categories) )
+{
+  $query = '
+SELECT DISTINCT category_id 
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id IN ('.implode(',', array_keys($categories)).')';
+  $categories_with_images = array_flip( array_from_query($query, 'category_id') );
+}
+
+$template->assign('categories', array());
+$base_url = get_root_url().'admin.php?page=';
+
+if (isset($_GET['parent_id']))
+{
+  $template->assign(
+    'PARENT_EDIT',
+    $base_url.'album-'.$_GET['parent_id']
+    );
+}
+
+foreach ($categories as $category)
+{
+  $cat_list_url = $base_url.'cat_list';
+
+  $self_url = $cat_list_url;
+  if (isset($_GET['parent_id']))
+  {
+    $self_url.= '&amp;parent_id='.$_GET['parent_id'];
+  }
+
+  $tpl_cat =
+    array(
+      'NAME'       => 
+        trigger_event(
+          'render_category_name',
+          $category['name'],
+          'admin_cat_list'
+          ),
+      'ID'         => $category['id'],
+      'RANK'       => $category['rank']*10,
+
+      'U_JUMPTO'   => make_index_url(
+        array(
+          'category' => $category
+          )
+        ),
+
+      'U_CHILDREN' => $cat_list_url.'&amp;parent_id='.$category['id'],
+      'U_EDIT'     => $base_url.'album-'.$category['id'],
+
+      'IS_VIRTUAL' => empty($category['dir'])
+    );
+
+  if (empty($category['dir']))
+  {
+    $tpl_cat['U_DELETE'] = $self_url.'&amp;delete='.$category['id'];
+    $tpl_cat['U_DELETE'].= '&amp;pwg_token='.get_pwg_token();
+  }
+  else
+  {
+    if ($conf['enable_synchronization'])
+    {
+      $tpl_cat['U_SYNC'] = $base_url.'site_update&amp;site=1&amp;cat_id='.$category['id'];
+    }
+  }
+
+  if ( array_key_exists($category['id'], $categories_with_images) )
+  {
+    $tpl_cat['U_MANAGE_ELEMENTS']=
+      $base_url.'batch_manager&amp;filter=album-'.$category['id'];
+  }
+
+  $template->append('categories', $tpl_cat);
+}
+
+trigger_action('loc_end_cat_list');
+
+// +-----------------------------------------------------------------------+
+// |                          sending html code                            |
+// +-----------------------------------------------------------------------+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'categories');
+?>
Index: /tags/2.6.0RC1/admin/cat_modify.php
===================================================================
--- /tags/2.6.0RC1/admin/cat_modify.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/cat_modify.php	(revision 25596)
@@ -0,0 +1,390 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+
+// get_complete_dir returns the concatenation of get_site_url and
+// get_local_dir
+// Example : "pets > rex > 1_year_old" is on the the same site as the
+// Piwigo files and this category has 22 for identifier
+// get_complete_dir(22) returns "./galleries/pets/rex/1_year_old/"
+function get_complete_dir( $category_id )
+{
+  return get_site_url($category_id).get_local_dir($category_id);
+}
+
+// get_local_dir returns an array with complete path without the site url
+// Example : "pets > rex > 1_year_old" is on the the same site as the
+// Piwigo files and this category has 22 for identifier
+// get_local_dir(22) returns "pets/rex/1_year_old/"
+function get_local_dir( $category_id )
+{
+  global $page;
+
+  $uppercats = '';
+  $local_dir = '';
+
+  if ( isset( $page['plain_structure'][$category_id]['uppercats'] ) )
+  {
+    $uppercats = $page['plain_structure'][$category_id]['uppercats'];
+  }
+  else
+  {
+    $query = 'SELECT uppercats';
+    $query.= ' FROM '.CATEGORIES_TABLE.' WHERE id = '.$category_id;
+    $query.= ';';
+    $row = pwg_db_fetch_assoc( pwg_query( $query ) );
+    $uppercats = $row['uppercats'];
+  }
+
+  $upper_array = explode( ',', $uppercats );
+
+  $database_dirs = array();
+  $query = 'SELECT id,dir';
+  $query.= ' FROM '.CATEGORIES_TABLE.' WHERE id IN ('.$uppercats.')';
+  $query.= ';';
+  $result = pwg_query( $query );
+  while( $row = pwg_db_fetch_assoc( $result ) )
+  {
+    $database_dirs[$row['id']] = $row['dir'];
+  }
+  foreach ($upper_array as $id)
+  {
+    $local_dir.= $database_dirs[$id].'/';
+  }
+
+  return $local_dir;
+}
+
+// retrieving the site url : "http://domain.com/gallery/" or
+// simply "./galleries/"
+function get_site_url($category_id)
+{
+  global $page;
+
+  $query = '
+SELECT galleries_url
+  FROM '.SITES_TABLE.' AS s,'.CATEGORIES_TABLE.' AS c
+  WHERE s.id = c.site_id
+    AND c.id = '.$category_id.'
+;';
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+  return $row['galleries_url'];
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+trigger_action('loc_begin_cat_modify');
+
+//---------------------------------------------------------------- verification
+if ( !isset( $_GET['cat_id'] ) || !is_numeric( $_GET['cat_id'] ) )
+{
+  trigger_error( 'missing cat_id param', E_USER_ERROR);
+}
+
+//--------------------------------------------------------- form criteria check
+if (isset($_POST['submit']))
+{
+  $data = array(
+    'id' => $_GET['cat_id'],
+    'name' => @$_POST['name'],
+    'comment' =>
+      $conf['allow_html_descriptions'] ?
+        @$_POST['comment'] : strip_tags(@$_POST['comment']),
+    );
+     
+  if ($conf['activate_comments'])
+  {
+    $data['commentable'] = isset($_POST['commentable'])?$_POST['commentable']:'false';
+  }
+  
+  single_update(
+    CATEGORIES_TABLE,
+    $data,
+    array('id' => $data['id'])
+    );
+
+  // retrieve cat infos before continuing (following updates are expensive)
+  $cat_info = get_cat_info($_GET['cat_id']);
+
+  if ($cat_info['visible'] != get_boolean( $_POST['visible'] ) )
+  {
+    set_cat_visible(array($_GET['cat_id']), $_POST['visible']);
+  }
+
+  // in case the use moves his album to the gallery root, we force
+  // $_POST['parent'] from 0 to null to be compared with
+  // $cat_info['id_uppercat']
+  if (empty($_POST['parent']))
+  {
+    $_POST['parent'] = null;
+  }
+
+  // only move virtual albums
+  if (empty($cat_info['dir']) and $cat_info['id_uppercat'] != $_POST['parent'])
+  {
+    move_categories( array($_GET['cat_id']), $_POST['parent'] );
+  }
+
+  $_SESSION['page_infos'][] = l10n('Album updated successfully');
+  $redirect = true;
+}
+elseif (isset($_POST['set_random_representant']))
+{
+  set_random_representant(array($_GET['cat_id']));
+  $redirect = true;
+}
+elseif (isset($_POST['delete_representant']))
+{
+  $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET representative_picture_id = NULL
+  WHERE id = '.$_GET['cat_id'].'
+;';
+  pwg_query($query);
+  $redirect = true;
+}
+
+if (isset($redirect))
+{
+  redirect($admin_album_base_url.'-properties');
+}
+
+// nullable fields
+foreach (array('comment','dir','site_id', 'id_uppercat') as $nullable)
+{
+  if (!isset($category[$nullable]))
+  {
+    $category[$nullable] = '';
+  }
+}
+
+$category['is_virtual'] = empty($category['dir']) ? true : false;
+
+$query = 'SELECT DISTINCT category_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id = '.$_GET['cat_id'].'
+  LIMIT 1';
+$result = pwg_query($query);
+$category['has_images'] = pwg_db_num_rows($result)>0 ? true : false;
+
+// Navigation path
+$navigation = get_cat_display_name_cache(
+  $category['uppercats'],
+  get_root_url().'admin.php?page=album-'
+  );
+
+$form_action = $admin_album_base_url.'-properties';
+
+//----------------------------------------------------- template initialization
+$template->set_filename( 'album_properties', 'cat_modify.tpl');
+
+$base_url = get_root_url().'admin.php?page=';
+$cat_list_url = $base_url.'cat_list';
+
+$self_url = $cat_list_url;
+if (!empty($category['id_uppercat']))
+{
+  $self_url.= '&amp;parent_id='.$category['id_uppercat'];
+}
+
+$template->assign(
+  array(
+    'CATEGORIES_NAV'     => $navigation,
+    'CAT_ID'             => $category['id'],
+    'CAT_NAME'           => @htmlspecialchars($category['name']),
+    'CAT_COMMENT'        => @htmlspecialchars($category['comment']),
+    'CAT_VISIBLE'       => boolean_to_string($category['visible']),
+
+    'U_JUMPTO' => make_index_url(
+      array(
+        'category' => $category
+        )
+      ),
+
+    'U_ADD_PHOTOS_ALBUM' => $base_url.'photos_add&amp;album='.$category['id'],
+    'U_CHILDREN' => $cat_list_url.'&amp;parent_id='.$category['id'],
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_modify',
+
+    'F_ACTION' => $form_action,
+    )
+  );
+ 
+if ($conf['activate_comments'])
+{
+  $template->assign('CAT_COMMENTABLE', boolean_to_string($category['commentable']));
+}
+
+// manage album elements link
+if ($category['has_images'])
+{
+  $template->assign(
+    'U_MANAGE_ELEMENTS',
+    $base_url.'batch_manager&amp;filter=album-'.$category['id']
+    );
+
+  $query = '
+SELECT
+    COUNT(image_id),
+    MIN(DATE(date_available)),
+    MAX(DATE(date_available))
+  FROM '.IMAGES_TABLE.'
+    JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id
+  WHERE category_id = '.$category['id'].'
+;';
+  list($image_count, $min_date, $max_date) = pwg_db_fetch_row(pwg_query($query));
+
+  if ($min_date == $max_date)
+  {
+    $intro = l10n(
+      'This album contains %d photos, added on %s.',
+      $image_count,
+      format_date($min_date)
+      );
+  }
+  else
+  {
+    $intro = l10n(
+      'This album contains %d photos, added between %s and %s.',
+      $image_count,
+      format_date($min_date),
+      format_date($max_date)
+      );
+  }
+}
+else
+{
+  $intro = l10n('This album contains no photo.');
+}
+
+$intro.= '<br>'.l10n('Numeric identifier : %d', $category['id']);
+
+$template->assign('INTRO', $intro);
+
+$template->assign(
+  'U_MANAGE_RANKS',
+  $base_url.'element_set_ranks&amp;cat_id='.$category['id']
+  );
+
+if ($category['is_virtual'])
+{
+  $template->assign(
+    array(
+      'U_DELETE' => $self_url.'&amp;delete='.$category['id'].'&amp;pwg_token='.get_pwg_token(),
+      )
+    );
+}
+else
+{
+  $category['cat_full_dir'] = get_complete_dir($_GET['cat_id']);
+  $template->assign(
+    array(
+      'CAT_FULL_DIR' => preg_replace('/\/$/', '', $category['cat_full_dir'])
+      )
+    );
+
+  if ($conf['enable_synchronization'])
+  {
+    $template->assign(
+      'U_SYNC',
+      $base_url.'site_update&amp;site=1&amp;cat_id='.$category['id']
+      );
+  }
+
+}
+
+// representant management
+if ($category['has_images']
+    or !empty($category['representative_picture_id']))
+{
+  $tpl_representant = array();
+
+  // picture to display : the identified representant or the generic random
+  // representant ?
+  if (!empty($category['representative_picture_id']))
+  {
+    $query = '
+SELECT id,representative_ext,path
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$category['representative_picture_id'].'
+;';
+    $row = pwg_db_fetch_assoc(pwg_query($query));
+    $src = DerivativeImage::thumb_url($row);
+    $url = get_root_url().'admin.php?page=photo-'.$category['representative_picture_id'];
+
+    $tpl_representant['picture'] =
+      array(
+        'SRC' => $src,
+        'URL' => $url
+      );
+  }
+
+  // can the admin choose to set a new random representant ?
+  $tpl_representant['ALLOW_SET_RANDOM'] = ($category['has_images']) ? true : false;
+
+  // can the admin delete the current representant ?
+  if (
+    ($category['has_images']
+     and $conf['allow_random_representative'])
+    or
+    (!$category['has_images']
+     and !empty($category['representative_picture_id'])))
+  {
+    $tpl_representant['ALLOW_DELETE'] = true;
+  }
+  $template->assign('representant', $tpl_representant);
+}
+
+if ($category['is_virtual'])
+{
+  // the category can be moved in any category but in itself, in any
+  // sub-category
+  $unmovables = get_subcat_ids(array($category['id']));
+
+  $query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id NOT IN ('.implode(',', $unmovables).')
+;';
+
+  display_select_cat_wrapper(
+    $query,
+    empty($category['id_uppercat']) ? array() : array($category['id_uppercat']),
+    'move_cat_options'
+    );
+}
+
+trigger_action('loc_end_cat_modify');
+
+//----------------------------------------------------------- sending html code
+$template->assign_var_from_handle('ADMIN_CONTENT', 'album_properties');
+?>
Index: /tags/2.6.0RC1/admin/cat_move.php
===================================================================
--- /tags/2.6.0RC1/admin/cat_move.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/cat_move.php	(revision 25596)
@@ -0,0 +1,108 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                               functions                               |
+// +-----------------------------------------------------------------------+
+
+
+// +-----------------------------------------------------------------------+
+// |                          categories movement                          |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit']))
+{
+  if (count($_POST['selection']) > 0)
+  {
+    // TODO: tests
+    move_categories($_POST['selection'], $_POST['parent']);
+  }
+  else
+  {
+    $page['errors'][] = l10n('Select at least one album');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                       template initialization                         |
+// +-----------------------------------------------------------------------+
+$template->set_filename('cat_move', 'cat_move.tpl');
+
+$template->assign(
+  array(
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_move',
+    'F_ACTION' => get_root_url().'admin.php?page=cat_move',
+    )
+  );
+  
+// +-----------------------------------------------------------------------+
+// | tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+$page['tab'] = 'move';
+include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                          Categories display                           |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NULL
+;';
+display_select_cat_wrapper(
+  $query,
+  array(),
+  'category_to_move_options'
+  );
+
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+;';
+
+display_select_cat_wrapper(
+  $query,
+  array(),
+  'category_parent_options'
+  );
+
+// +-----------------------------------------------------------------------+
+// |                          sending html code                            |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_move');
+?>
Index: /tags/2.6.0RC1/admin/cat_options.php
===================================================================
--- /tags/2.6.0RC1/admin/cat_options.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/cat_options.php	(revision 25596)
@@ -0,0 +1,256 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                       modification registration                       |
+// +-----------------------------------------------------------------------+
+
+// print '<pre>';
+// print_r($_POST);
+// print '</pre>';
+if (isset($_POST['falsify'])
+    and isset($_POST['cat_true'])
+    and count($_POST['cat_true']) > 0)
+{
+  switch ($_GET['section'])
+  {
+    case 'comments' :
+    {
+      $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET commentable = \'false\'
+  WHERE id IN ('.implode(',', $_POST['cat_true']).')
+;';
+      pwg_query($query);
+      break;
+    }
+    case 'visible' :
+    {
+      set_cat_visible($_POST['cat_true'], 'false');
+      break;
+    }
+    case 'status' :
+    {
+      set_cat_status($_POST['cat_true'], 'private');
+      break;
+    }
+    case 'representative' :
+    {
+      $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET representative_picture_id = NULL
+  WHERE id IN ('.implode(',', $_POST['cat_true']).')
+;';
+      pwg_query($query);
+      break;
+    }
+  }
+}
+else if (isset($_POST['trueify'])
+         and isset($_POST['cat_false'])
+         and count($_POST['cat_false']) > 0)
+{
+  switch ($_GET['section'])
+  {
+    case 'comments' :
+    {
+      $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET commentable = \'true\'
+  WHERE id IN ('.implode(',', $_POST['cat_false']).')
+;';
+      pwg_query($query);
+      break;
+    }
+    case 'visible' :
+    {
+      set_cat_visible($_POST['cat_false'], 'true');
+      break;
+    }
+    case 'status' :
+    {
+      set_cat_status($_POST['cat_false'], 'public');
+      break;
+    }
+    case 'representative' :
+    {
+      // theoretically, all categories in $_POST['cat_false'] contain at
+      // least one element, so Piwigo can find a representant.
+      set_random_representant($_POST['cat_false']);
+      break;
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array(
+    'cat_options' => 'cat_options.tpl',
+    'double_select' => 'double_select.tpl'
+    )
+  );
+
+$page['section'] = isset($_GET['section']) ? $_GET['section'] : 'status';
+$base_url = PHPWG_ROOT_PATH.'admin.php?page=cat_options&amp;section=';
+
+$template->assign(
+  array(
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_options',
+    'F_ACTION'=>$base_url.$page['section']
+   )
+ );
+
+// TabSheet
+$tabsheet = new tabsheet();
+$tabsheet->set_id('cat_options');
+$tabsheet->select($page['section']);
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// |                              form display                             |
+// +-----------------------------------------------------------------------+
+
+// for each section, categories in the multiselect field can be :
+//
+// - true : commentable for comment section
+// - false : un-commentable for comment section
+// - NA : (not applicable) for virtual categories
+//
+// for true and false status, we associates an array of category ids,
+// function display_select_categories will use the given CSS class for each
+// option
+$cats_true = array();
+$cats_false = array();
+switch ($page['section'])
+{
+  case 'comments' :
+  {
+    $query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE commentable = \'true\'
+;';
+    $query_false = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE commentable = \'false\'
+;';
+    $template->assign(
+      array(
+        'L_SECTION' => l10n('Authorize users to add comments on selected albums'),
+        'L_CAT_OPTIONS_TRUE' => l10n('Authorized'),
+        'L_CAT_OPTIONS_FALSE' => l10n('Forbidden'),
+        )
+      );
+    break;
+  }
+  case 'visible' :
+  {
+    $query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE visible = \'true\'
+;';
+    $query_false = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE visible = \'false\'
+;';
+    $template->assign(
+      array(
+        'L_SECTION' => l10n('Lock albums'),
+        'L_CAT_OPTIONS_TRUE' => l10n('Unlocked'),
+        'L_CAT_OPTIONS_FALSE' => l10n('Locked'),
+        )
+      );
+    break;
+  }
+  case 'status' :
+  {
+    $query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'public\'
+;';
+    $query_false = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'private\'
+;';
+    $template->assign(
+      array(
+        'L_SECTION' => l10n('Manage authorizations for selected albums'),
+        'L_CAT_OPTIONS_TRUE' => l10n('Public'),
+        'L_CAT_OPTIONS_FALSE' => l10n('Private'),
+        )
+      );
+    break;
+  }
+  case 'representative' :
+  {
+    $query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE representative_picture_id IS NOT NULL
+;';
+    $query_false = '
+SELECT DISTINCT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=category_id
+  WHERE representative_picture_id IS NULL
+;';
+    $template->assign(
+      array(
+        'L_SECTION' => l10n('Representative'),
+        'L_CAT_OPTIONS_TRUE' => l10n('singly represented'),
+        'L_CAT_OPTIONS_FALSE' => l10n('randomly represented')
+        )
+      );
+    break;
+  }
+}
+display_select_cat_wrapper($query_true,array(),'category_option_true');
+display_select_cat_wrapper($query_false,array(),'category_option_false');
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_options');
+?>
Index: /tags/2.6.0RC1/admin/cat_perm.php
===================================================================
--- /tags/2.6.0RC1/admin/cat_perm.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/cat_perm.php	(revision 25596)
@@ -0,0 +1,304 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                       variable initialization                         |
+// +-----------------------------------------------------------------------+
+
+$page['cat'] = $category['id'];
+
+// +-----------------------------------------------------------------------+
+// |                           form submission                             |
+// +-----------------------------------------------------------------------+
+
+if (!empty($_POST))
+{
+  check_pwg_token();
+
+  if ($category['status'] != $_POST['status'])
+  {
+    set_cat_status(array($page['cat']), $_POST['status']);
+    $category['status'] = $_POST['status'];
+  }
+
+  if ('private' == $_POST['status'])
+  {
+    //
+    // manage groups
+    //
+    $query = '
+SELECT group_id
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE cat_id = '.$page['cat'].'
+;';
+    $groups_granted = array_from_query($query, 'group_id');
+
+    if (!isset($_POST['groups']))
+    {
+      $_POST['groups'] = array();
+    }
+    
+    //
+    // remove permissions to groups
+    //
+    $deny_groups = array_diff($groups_granted, $_POST['groups']);
+    if (count($deny_groups) > 0)
+    {
+      // if you forbid access to an album, all sub-albums become
+      // automatically forbidden
+      $query = '
+DELETE
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE group_id IN ('.implode(',', $deny_groups).')
+    AND cat_id IN ('.implode(',', get_subcat_ids(array($page['cat']))).')
+;';
+      pwg_query($query);
+    }
+
+    //
+    // add permissions to groups
+    //
+    $grant_groups = $_POST['groups'];
+    if (count($grant_groups) > 0)
+    {
+      $cat_ids = get_uppercat_ids(array($page['cat']));
+      if (isset($_POST['apply_on_sub']))
+      {
+        $cat_ids = array_merge($cat_ids, get_subcat_ids(array($page['cat'])));
+      }
+      
+      $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $cat_ids).')
+    AND status = \'private\'
+;';
+      $private_cats = array_from_query($query, 'id');
+      
+      $inserts = array();
+      foreach ($private_cats as $cat_id)
+      {
+        foreach ($grant_groups as $group_id)
+        {
+          $inserts[] = array(
+            'group_id' => $group_id,
+            'cat_id' => $cat_id
+            );
+        }
+      }
+      
+      mass_inserts(
+        GROUP_ACCESS_TABLE,
+        array('group_id','cat_id'),
+        $inserts,
+        array('ignore'=>true)
+        );
+    }
+
+    //
+    // users
+    //
+    $query = '
+SELECT user_id
+  FROM '.USER_ACCESS_TABLE.'
+  WHERE cat_id = '.$page['cat'].'
+;';
+    $users_granted = array_from_query($query, 'user_id');
+
+    if (!isset($_POST['users']))
+    {
+      $_POST['users'] = array();
+    }
+    
+    //
+    // remove permissions to users
+    //
+    $deny_users = array_diff($users_granted, $_POST['users']);
+    if (count($deny_users) > 0)
+    {
+      // if you forbid access to an album, all sub-album become automatically
+      // forbidden
+      $query = '
+DELETE
+  FROM '.USER_ACCESS_TABLE.'
+  WHERE user_id IN ('.implode(',', $deny_users).')
+    AND cat_id IN ('.implode(',', get_subcat_ids(array($page['cat']))).')
+;';
+      pwg_query($query);
+    }
+
+    //
+    // add permissions to users
+    //
+    $grant_users = $_POST['users'];
+    if (count($grant_users) > 0)
+    {
+      add_permission_on_category($page['cat'], $grant_users);
+    }
+  }
+
+  $page['infos'][] = l10n('Album updated successfully');
+}
+
+// +-----------------------------------------------------------------------+
+// |                       template initialization                         |
+// +-----------------------------------------------------------------------+
+
+$template->set_filename('cat_perm', 'cat_perm.tpl');
+
+$template->assign(
+  array(
+    'CATEGORIES_NAV' =>
+      get_cat_display_name_from_id(
+        $page['cat'],
+        'admin.php?page=album-'
+        ),
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_perm',
+    'F_ACTION' => $admin_album_base_url.'-permissions',
+    'private' => ('private' == $category['status']),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                          form construction                            |
+// +-----------------------------------------------------------------------+
+
+// groups denied are the groups not granted. So we need to find all groups
+// minus groups granted to find groups denied.
+
+$groups = array();
+
+$query = '
+SELECT id, name
+  FROM '.GROUPS_TABLE.'
+  ORDER BY name ASC
+;';
+$groups = simple_hash_from_query($query, 'id', 'name');
+$template->assign('groups', $groups);
+
+// groups granted to access the category
+$query = '
+SELECT group_id
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE cat_id = '.$page['cat'].'
+;';
+$group_granted_ids = array_from_query($query, 'group_id');
+$template->assign('groups_selected', $group_granted_ids);
+
+// users...
+$users = array();
+
+$query = '
+SELECT '.$conf['user_fields']['id'].' AS id,
+       '.$conf['user_fields']['username'].' AS username
+  FROM '.USERS_TABLE.'
+;';
+$users = simple_hash_from_query($query, 'id', 'username');
+$template->assign('users', $users);
+
+
+$query = '
+SELECT user_id
+  FROM '.USER_ACCESS_TABLE.'
+  WHERE cat_id = '.$page['cat'].'
+;';
+$user_granted_direct_ids = array_from_query($query, 'user_id');
+$template->assign('users_selected', $user_granted_direct_ids);
+
+
+$user_granted_indirect_ids = array();
+if (count($group_granted_ids) > 0)
+{
+  $granted_groups = array();
+
+  $query = '
+SELECT user_id, group_id
+  FROM '.USER_GROUP_TABLE.'
+  WHERE group_id IN ('.implode(',', $group_granted_ids).') 
+';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (!isset($granted_groups[ $row['group_id'] ]))
+    {
+      $granted_groups[ $row['group_id'] ] = array();
+    }
+    $granted_groups[ $row['group_id'] ][] = $row['user_id'];
+  }
+
+  $user_granted_by_group_ids = array();
+  
+  foreach ($granted_groups as $group_users)
+  {
+    $user_granted_by_group_ids = array_merge($user_granted_by_group_ids, $group_users);
+  }
+  
+  $user_granted_by_group_ids = array_unique($user_granted_by_group_ids);
+  
+  $user_granted_indirect_ids = array_diff(
+    $user_granted_by_group_ids,
+    $user_granted_direct_ids
+    );
+
+  $template->assign('nb_users_granted_indirect', count($user_granted_indirect_ids));
+
+  foreach ($granted_groups as $group_id => $group_users)
+  {
+    $group_usernames = array();
+    foreach ($group_users as $user_id)
+    {
+      if (in_array($user_id, $user_granted_indirect_ids))
+      {
+        $group_usernames[] = $users[$user_id];
+      }
+    }
+
+    $template->append(
+      'user_granted_indirect_groups',
+      array(
+        'group_name' => $groups[$group_id],
+        'group_users' => implode(', ', $group_usernames),
+        )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+$template->assign(array('PWG_TOKEN' => get_pwg_token(), 'INHERIT' => $conf['inheritance_by_default']));
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_perm');
+?>
Index: /tags/2.6.0RC1/admin/comments.php
===================================================================
--- /tags/2.6.0RC1/admin/comments.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/comments.php	(revision 25596)
@@ -0,0 +1,208 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                                actions                                |
+// +-----------------------------------------------------------------------+
+
+if (!empty($_POST))
+{
+  if (empty($_POST['comments']))
+  {
+    $page['errors'][] = l10n('Select at least one comment');
+  }
+  else
+  {
+    include_once( PHPWG_ROOT_PATH .'include/functions_comment.inc.php' );
+    check_input_parameter('comments', $_POST, true, PATTERN_ID);
+    
+    if (isset($_POST['validate']))
+    {
+      validate_user_comment($_POST['comments']);
+
+      $page['infos'][] = l10n_dec(
+        '%d user comment validated', '%d user comments validated',
+        count($_POST['comments'])
+        );
+    }
+
+    if (isset($_POST['reject']))
+    {
+      delete_user_comment($_POST['comments']);
+
+      $page['infos'][] = l10n_dec(
+        '%d user comment rejected', '%d user comments rejected',
+        count($_POST['comments'])
+        );
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('comments'=>'comments.tpl'));
+
+$template->assign(
+  array(
+    'F_ACTION' => get_root_url().'admin.php?page=comments'
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// | Tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('comments');
+$tabsheet->select('');
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// |                           comments display                            |
+// +-----------------------------------------------------------------------+
+
+$nb_total = 0;
+$nb_pending = 0;
+
+$query = '
+SELECT
+    COUNT(*) AS counter,
+    validated
+  FROM '.COMMENTS_TABLE.'
+  GROUP BY validated
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $nb_total+= $row['counter'];
+
+  if ('false' == $row['validated'])
+  {
+    $nb_pending = $row['counter'];
+  }
+}
+
+if (!isset($_GET['filter']) and $nb_pending > 0)
+{
+  $page['filter'] = 'pending';
+}
+else
+{
+  $page['filter'] = 'all';
+}
+
+if (isset($_GET['filter']) and 'pending' == $_GET['filter'])
+{
+  $page['filter'] = $_GET['filter'];
+}
+
+$template->assign(
+  array(
+    'nb_total' => $nb_total,
+    'nb_pending' => $nb_pending,
+    'filter' => $page['filter'],
+    )
+  );
+
+$where_clauses = array('1=1');
+
+if ('pending' == $page['filter'])
+{
+  $where_clauses[] = 'validated=\'false\'';
+}
+
+$query = '
+SELECT
+    c.id,
+    c.image_id,
+    c.date,
+    c.author,
+    '.$conf['user_fields']['username'].' AS username,
+    c.content,
+    i.path,
+    i.representative_ext,
+    validated
+  FROM '.COMMENTS_TABLE.' AS c
+    INNER JOIN '.IMAGES_TABLE.' AS i
+      ON i.id = c.image_id
+    LEFT JOIN '.USERS_TABLE.' AS u
+      ON u.'.$conf['user_fields']['id'].' = c.author_id
+  WHERE '.implode(' AND ', $where_clauses).'
+  ORDER BY c.date DESC
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $thumb = DerivativeImage::thumb_url(
+      array(
+        'id'=>$row['image_id'],
+        'path'=>$row['path'],
+        )
+     );
+  if (empty($row['author_id'])) 
+  {
+    $author_name = $row['author'];
+  }
+  else
+  {
+    $author_name = stripslashes($row['username']);
+  }
+  $template->append(
+    'comments',
+    array(
+      'U_PICTURE' => get_root_url().'admin.php?page=photo-'.$row['image_id'],
+      'ID' => $row['id'],
+      'TN_SRC' => $thumb,
+      'AUTHOR' => trigger_event('render_comment_author', $author_name),
+      'DATE' => format_date($row['date'], true),
+      'CONTENT' => trigger_event('render_comment_content',$row['content']),
+      'IS_PENDING' => ('false' == $row['validated']),
+      )
+    );
+
+  $list[] = $row['id'];
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'comments');
+
+?>
Index: /tags/2.6.0RC1/admin/configuration.php
===================================================================
--- /tags/2.6.0RC1/admin/configuration.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/configuration.php	(revision 25596)
@@ -0,0 +1,605 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+//-------------------------------------------------------- sections definitions
+
+check_input_parameter('section', $_GET, false, '/^[a-z]+$/i');
+
+if (!isset($_GET['section']))
+{
+  $page['section'] = 'main';
+}
+else
+{
+  $page['section'] = $_GET['section'];
+}
+
+$main_checkboxes = array(
+    'allow_user_registration',
+    'obligatory_user_mail_address',
+    'rate',
+    'rate_anonymous',
+    'email_admin_on_new_user',
+    'allow_user_customization',
+    'log',
+    'history_admin',
+    'history_guest',
+   );
+
+$sizes_checkboxes = array(
+    'original_resize',
+  );
+
+$comments_checkboxes = array(
+    'activate_comments',
+    'comments_forall',
+    'comments_validation',
+    'email_admin_on_comment',
+    'email_admin_on_comment_validation',
+    'user_can_delete_comment',
+    'user_can_edit_comment',
+    'email_admin_on_comment_edition',
+    'email_admin_on_comment_deletion',
+    'comments_author_mandatory',
+    'comments_email_mandatory',
+  );
+
+$display_checkboxes = array(
+    'menubar_filter_icon',
+    'index_sort_order_input',
+    'index_flat_icon',
+    'index_posted_date_icon',
+    'index_created_date_icon',
+    'index_slideshow_icon',
+    'index_new_icon',
+    'picture_metadata_icon',
+    'picture_slideshow_icon',
+    'picture_favorite_icon',
+    'picture_download_icon',
+    'picture_navigation_icons',
+    'picture_navigation_thumb',
+    'picture_menu',
+  );
+
+$display_info_checkboxes = array(
+    'author',
+    'created_on',
+    'posted_on',
+    'dimensions',
+    'file',
+    'filesize',
+    'tags',
+    'categories',
+    'visits',
+    'rating_score',
+    'privacy_level',
+  );
+
+// image order management
+$sort_fields = array(
+  ''                    => '',
+  'file ASC'            => l10n('File name, A &rarr; Z'),
+  'file DESC'           => l10n('File name, Z &rarr; A'),
+  'name ASC'            => l10n('Photo title, A &rarr; Z'),
+  'name DESC'           => l10n('Photo title, Z &rarr; A'),
+  'date_creation DESC'  => l10n('Date created, new &rarr; old'),
+  'date_creation ASC'   => l10n('Date created, old &rarr; new'),
+  'date_available DESC' => l10n('Date posted, new &rarr; old'),
+  'date_available ASC'  => l10n('Date posted, old &rarr; new'),
+  'rating_score DESC'   => l10n('Rating score, high &rarr; low'),
+  'rating_score ASC'    => l10n('Rating score, low &rarr; high'),
+  'hit DESC'            => l10n('Visits, high &rarr; low'),
+  'hit ASC'             => l10n('Visits, low &rarr; high'),
+  'id ASC'              => l10n('Numeric identifier, 1 &rarr; 9'),
+  'id DESC'             => l10n('Numeric identifier, 9 &rarr; 1'),
+  'rank ASC'            => l10n('Manual sort order'),
+  );
+
+$comments_order = array(
+  'ASC' => l10n('Show oldest comments first'),
+  'DESC' => l10n('Show latest comments first'),
+  );
+
+$mail_themes = array(
+  'clear' => 'Clear',
+  'dark' => 'Dark',
+  );
+
+//------------------------------ verification and registration of modifications
+if (isset($_POST['submit']))
+{
+  $int_pattern = '/^\d+$/';
+
+  switch ($page['section'])
+  {
+    case 'main' :
+    {
+      if ( !isset($conf['order_by_custom']) and !isset($conf['order_by_inside_category_custom']) )
+      {
+        if ( !empty($_POST['order_by']) )
+        {
+          $used = array();
+          foreach ($_POST['order_by'] as $i => $val)
+          {
+            if (empty($val) or isset($used[$val]))
+            {
+              unset($_POST['order_by'][$i]);
+            }
+            else
+            {
+              $used[$val] = true;
+            }
+          }
+          if ( !count($_POST['order_by']) )
+          {
+            $page['errors'][] = l10n('No order field selected');
+          }
+          else
+          {
+            // limit to the number of available parameters
+            $order_by = $order_by_inside_category = array_slice($_POST['order_by'], 0, ceil(count($sort_fields)/2));
+
+            // there is no rank outside categories
+            if ( ($i = array_search('rank ASC', $order_by)) !== false)
+            {
+              unset($order_by[$i]);
+            }
+
+            // must define a default order_by if user want to order by rank only
+            if ( count($order_by) == 0 )
+            {
+              $order_by = array('id ASC');
+            }
+
+            $_POST['order_by'] = 'ORDER BY '.implode(', ', $order_by);
+            $_POST['order_by_inside_category'] = 'ORDER BY '.implode(', ', $order_by_inside_category);
+          }
+        }
+        else
+        {
+          $page['errors'][] = l10n('No order field selected');
+        }
+      }
+
+      foreach( $main_checkboxes as $checkbox)
+      {
+        $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true';
+      }
+      break;
+    }
+    case 'watermark' :
+    {
+      include(PHPWG_ROOT_PATH.'admin/include/configuration_watermark_process.inc.php');
+      break;
+    }
+    case 'sizes' :
+    {
+      include(PHPWG_ROOT_PATH.'admin/include/configuration_sizes_process.inc.php');
+      break;
+    }
+    case 'comments' :
+    {
+      // the number of comments per page must be an integer between 5 and 50
+      // included
+      if (!preg_match($int_pattern, $_POST['nb_comment_page'])
+           or $_POST['nb_comment_page'] < 5
+           or $_POST['nb_comment_page'] > 50)
+      {
+        $page['errors'][] = l10n('The number of comments a page must be between 5 and 50 included.');
+      }
+      foreach( $comments_checkboxes as $checkbox)
+      {
+        $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true';
+      }
+      break;
+    }
+    case 'default' :
+    {
+      // Never go here
+      break;
+    }
+    case 'display' :
+    {
+      if (!preg_match($int_pattern, $_POST['nb_categories_page'])
+            or $_POST['nb_categories_page'] < 4)
+      {
+        $page['errors'][] = l10n('The number of albums a page must be above 4.');
+      }
+      foreach( $display_checkboxes as $checkbox)
+      {
+        $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true';
+      }
+      foreach( $display_info_checkboxes as $checkbox)
+      {
+        $_POST['picture_informations'][$checkbox] =
+          empty($_POST['picture_informations'][$checkbox])? false : true;
+      }
+      $_POST['picture_informations'] = addslashes(serialize($_POST['picture_informations']));
+      break;
+    }
+  }
+
+  // updating configuration if no error found
+  if (!in_array($page['section'], array('sizes', 'watermark')) and count($page['errors']) == 0)
+  {
+    //echo '<pre>'; print_r($_POST); echo '</pre>';
+    $result = pwg_query('SELECT param FROM '.CONFIG_TABLE);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if (isset($_POST[$row['param']]))
+      {
+        $value = $_POST[$row['param']];
+
+        if ('gallery_title' == $row['param'])
+        {
+          if (!$conf['allow_html_descriptions'])
+          {
+            $value = strip_tags($value);
+          }
+        }
+
+        $query = '
+UPDATE '.CONFIG_TABLE.'
+SET value = \''. str_replace("\'", "''", $value).'\'
+WHERE param = \''.$row['param'].'\'
+;';
+        pwg_query($query);
+      }
+    }
+    $page['infos'][] = l10n('Information data registered in database');
+  }
+
+  //------------------------------------------------------ $conf reinitialization
+  load_conf_from_db();
+}
+
+// restore default derivatives settings
+if ('sizes' == $page['section'] and isset($_GET['action']) and 'restore_settings' == $_GET['action'])
+{
+  ImageStdParams::set_and_save( ImageStdParams::get_default_sizes() );
+  pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param = \'disabled_derivatives\'');
+  clear_derivative_cache();
+
+  $page['infos'][] = l10n('Your configuration settings are saved');
+}
+
+//----------------------------------------------------- template initialization
+$template->set_filename('config', 'configuration.tpl');
+
+// TabSheet
+$tabsheet = new tabsheet();
+$tabsheet->set_id('configuration');
+$tabsheet->select($page['section']);
+$tabsheet->assign();
+
+$action = get_root_url().'admin.php?page=configuration';
+$action.= '&amp;section='.$page['section'];
+
+$template->assign(
+  array(
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=configuration',
+    'F_ACTION'=>$action
+    ));
+
+switch ($page['section'])
+{
+  case 'main' :
+  {
+
+    function order_by_is_local()
+    {
+      @include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+      if (isset($conf['local_dir_site']))
+      {
+        @include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR. 'config/config.inc.php');
+      }
+
+      return isset($conf['order_by']) or isset($conf['order_by_inside_category']);
+    }
+
+    if (order_by_is_local())
+    {
+      $page['warnings'][] = l10n('You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !');
+    }
+
+    if ( isset($conf['order_by_custom']) or isset($conf['order_by_inside_category_custom']) )
+    {
+      $order_by = array('');
+      $template->assign('ORDER_BY_IS_CUSTOM', true);
+    }
+    else
+    {
+      $out = array();
+      $order_by = trim($conf['order_by_inside_category']);
+      $order_by = str_replace('ORDER BY ', null, $order_by);
+      $order_by = explode(', ', $order_by);
+    }
+
+    $template->assign(
+      'main',
+      array(
+        'CONF_GALLERY_TITLE' => htmlspecialchars($conf['gallery_title']),
+        'CONF_PAGE_BANNER' => htmlspecialchars($conf['page_banner']),
+        'week_starts_on_options' => array(
+          'sunday' => $lang['day'][0],
+          'monday' => $lang['day'][1],
+          ),
+        'week_starts_on_options_selected' => $conf['week_starts_on'],
+        'mail_theme' => $conf['mail_theme'],
+        'mail_theme_options' => $mail_themes,
+        'order_by' => $order_by,
+        'order_by_options' => $sort_fields,
+        )
+      );
+
+    foreach ($main_checkboxes as $checkbox)
+    {
+      $template->append(
+          'main',
+          array(
+            $checkbox => $conf[$checkbox]
+            ),
+          true
+        );
+    }
+    break;
+  }
+  case 'comments' :
+  {
+    $template->assign(
+      'comments',
+      array(
+        'NB_COMMENTS_PAGE'=>$conf['nb_comment_page'],
+        'comments_order'=>$conf['comments_order'],
+        'comments_order_options'=> $comments_order
+        )
+      );
+
+    foreach ($comments_checkboxes as $checkbox)
+    {
+      $template->append(
+          'comments',
+          array(
+            $checkbox => $conf[$checkbox]
+            ),
+          true
+        );
+    }
+    break;
+  }
+  case 'default' :
+  {
+    $edit_user = build_user($conf['guest_id'], false);
+    include_once(PHPWG_ROOT_PATH.'profile.php');
+
+    $errors = array();
+    if (save_profile_from_post($edit_user, $errors))
+    {
+      // Reload user
+      $edit_user = build_user($conf['guest_id'], false);
+      $page['infos'][] = l10n('Information data registered in database');
+    }
+    $page['errors'] = array_merge($page['errors'], $errors);
+
+    load_profile_in_template(
+      $action,
+      '',
+      $edit_user
+      );
+    $template->assign('default', array());
+    break;
+  }
+  case 'display' :
+  {
+    foreach ($display_checkboxes as $checkbox)
+    {
+      $template->append(
+          'display',
+          array(
+            $checkbox => $conf[$checkbox]
+            ),
+          true
+        );
+    }
+    $template->append(
+        'display',
+        array(
+          'picture_informations' => unserialize($conf['picture_informations']),
+          'NB_CATEGORIES_PAGE' => $conf['nb_categories_page'],
+          ),
+        true
+      );
+    break;
+  }
+  case 'sizes' :
+  {
+    // we only load the derivatives if it was not already loaded: it occurs
+    // when submitting the form and an error remains
+    if (!isset($page['sizes_loaded_in_tpl']))
+    {
+      $is_gd = (pwg_image::get_library()=='gd')? true : false;
+      $template->assign('is_gd', $is_gd);
+      $template->assign(
+        'sizes',
+        array(
+          'original_resize_maxwidth' => $conf['original_resize_maxwidth'],
+          'original_resize_maxheight' => $conf['original_resize_maxheight'],
+          'original_resize_quality' => $conf['original_resize_quality'],
+          )
+        );
+
+      foreach ($sizes_checkboxes as $checkbox)
+      {
+        $template->append(
+          'sizes',
+          array(
+            $checkbox => $conf[$checkbox]
+            ),
+          true
+          );
+      }
+
+      // derivatives = multiple size
+      $enabled = ImageStdParams::get_defined_type_map();
+      $disabled = @unserialize(@$conf['disabled_derivatives']);
+      if ($disabled === false)
+      {
+        $disabled = array();
+      }
+
+      $tpl_vars = array();
+      foreach(ImageStdParams::get_all_types() as $type)
+      {
+        $tpl_var = array();
+
+        $tpl_var['must_square'] = ($type==IMG_SQUARE ? true : false);
+        $tpl_var['must_enable'] = ($type==IMG_SQUARE || $type==IMG_THUMB)? true : false;
+
+        if ($params = @$enabled[$type])
+        {
+          $tpl_var['enabled'] = true;
+        }
+        else
+        {
+          $tpl_var['enabled']=false;
+          $params=@$disabled[$type];
+        }
+
+        if ($params)
+        {
+          list($tpl_var['w'],$tpl_var['h']) = $params->sizing->ideal_size;
+          if ( ($tpl_var['crop'] = round(100*$params->sizing->max_crop)) > 0)
+          {
+            list($tpl_var['minw'],$tpl_var['minh']) = $params->sizing->min_size;
+          }
+          else
+          {
+            $tpl_var['minw'] = $tpl_var['minh'] = "";
+          }
+          $tpl_var['sharpen'] = $params->sharpen;
+        }
+        $tpl_vars[$type]=$tpl_var;
+      }
+      $template->assign('derivatives', $tpl_vars);
+      $template->assign('resize_quality', ImageStdParams::$quality);
+
+      $tpl_vars = array();
+      $now = time();
+      foreach(ImageStdParams::$custom as $custom=>$time)
+      {
+        $tpl_vars[$custom] = ($now-$time<=24*3600) ? l10n('today') : time_since($time, 'day');
+      }
+      $template->assign('custom_derivatives', $tpl_vars);
+    }
+
+    break;
+  }
+  case 'watermark' :
+  {
+    $watermark_files = array();
+    foreach (glob(PHPWG_ROOT_PATH.'themes/default/watermarks/*.png') as $file)
+    {
+      $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
+    }
+    if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks/*.png')) !== false)
+    {
+      foreach ($glob as $file)
+      {
+        $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
+      }
+    }
+    $watermark_filemap = array( '' => '---' );
+    foreach( $watermark_files as $file)
+    {
+      $display = basename($file);
+      $watermark_filemap[$file] = $display;
+    }
+    $template->assign('watermark_files', $watermark_filemap);
+
+    if ($template->get_template_vars('watermark') === null)
+    {
+      $wm = ImageStdParams::get_watermark();
+
+      $position = 'custom';
+      if ($wm->xpos == 0 and $wm->ypos == 0)
+      {
+        $position = 'topleft';
+      }
+      if ($wm->xpos == 100 and $wm->ypos == 0)
+      {
+        $position = 'topright';
+      }
+      if ($wm->xpos == 50 and $wm->ypos == 50)
+      {
+        $position = 'middle';
+      }
+      if ($wm->xpos == 0 and $wm->ypos == 100)
+      {
+        $position = 'bottomleft';
+      }
+      if ($wm->xpos == 100 and $wm->ypos == 100)
+      {
+        $position = 'bottomright';
+      }
+
+      if ($wm->xrepeat != 0)
+      {
+        $position = 'custom';
+      }
+
+      $template->assign(
+        'watermark',
+        array(
+          'file' => $wm->file,
+          'minw' => $wm->min_size[0],
+          'minh' => $wm->min_size[1],
+          'xpos' => $wm->xpos,
+          'ypos' => $wm->ypos,
+          'xrepeat' => $wm->xrepeat,
+          'opacity' => $wm->opacity,
+          'position' => $position,
+          )
+        );
+    }
+
+    break;
+  }
+}
+
+//----------------------------------------------------------- sending html code
+$template->assign_var_from_handle('ADMIN_CONTENT', 'config');
+?>
Index: /tags/2.6.0RC1/admin/element_set_ranks.php
===================================================================
--- /tags/2.6.0RC1/admin/element_set_ranks.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/element_set_ranks.php	(revision 25596)
@@ -0,0 +1,275 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Change rank of images inside a category
+ *
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!isset($_GET['cat_id']) or !is_numeric($_GET['cat_id']))
+{
+  trigger_error('missing cat_id param', E_USER_ERROR);
+}
+
+$page['category_id'] = $_GET['cat_id'];
+
+// +-----------------------------------------------------------------------+
+// |                               functions                               |
+// +-----------------------------------------------------------------------+
+
+/**
+ * save the rank depending on given images order
+ *
+ * The list of ordered images id is supposed to be in the same parent
+ * category
+ *
+ * @param array categories
+ * @return void
+ */
+function save_images_order($category_id, $images)
+{
+  $current_rank = 0;
+  $datas = array();
+  foreach ($images as $id)
+  {
+    $datas[] = array(
+      'category_id' => $category_id,
+      'image_id' => $id,
+      'rank' => ++$current_rank,
+      );
+  }
+  $fields = array(
+    'primary' => array('image_id', 'category_id'),
+    'update' => array('rank')
+    );
+  mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas);
+}
+
+// +-----------------------------------------------------------------------+
+// |                       global mode form submission                     |
+// +-----------------------------------------------------------------------+
+
+$image_order_choices = array('default', 'rank', 'user_define');
+$image_order_choice = 'default';
+
+if (isset($_POST['submit']))
+{
+  if (isset($_POST['rank_of_image']))
+  {
+    asort($_POST['rank_of_image'], SORT_NUMERIC);
+
+    save_images_order(
+      $page['category_id'],
+      array_keys($_POST['rank_of_image'])
+      );
+
+    $page['infos'][] = l10n('Images manual order was saved');
+  }
+
+  if (!empty($_POST['image_order_choice'])
+      && in_array($_POST['image_order_choice'], $image_order_choices))
+  {
+    $image_order_choice = $_POST['image_order_choice'];
+  }
+
+  $image_order = null;
+  if ($image_order_choice=='user_define')
+  {
+    for ($i=0; $i<3; $i++)
+    {
+      if (!empty($_POST['image_order'][$i]))
+      {
+        if (!empty($image_order)) $image_order.= ',';
+        $image_order.= $_POST['image_order'][$i];
+      }
+    }
+  }
+  elseif ($image_order_choice=='rank')
+  {
+    $image_order = 'rank ASC';
+  }
+  $query = '
+UPDATE '.CATEGORIES_TABLE.' 
+  SET image_order = '.(isset($image_order) ? '\''.$image_order.'\'' : 'NULL').'
+  WHERE id='.$page['category_id'];
+  pwg_query($query);
+
+  if (isset($_POST['image_order_subcats']))
+  {
+    $cat_info = get_cat_info($page['category_id']);
+
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET image_order = '.(isset($image_order) ? '\''.$image_order.'\'' : 'NULL').'
+  WHERE uppercats LIKE \''.$cat_info['uppercats'].',%\'';
+    pwg_query($query);
+  }
+
+  $page['infos'][] = l10n('Your configuration settings are saved');
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+$template->set_filenames(
+  array('element_set_ranks' => 'element_set_ranks.tpl')
+  );
+
+$base_url = get_root_url().'admin.php';
+
+$query = '
+SELECT *
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$page['category_id'].'
+;';
+$category = pwg_db_fetch_assoc(pwg_query($query));
+
+if ($category['image_order']=='rank')
+{
+  $image_order_choice = 'rank';
+}
+elseif ($category['image_order']!='')
+{
+  $image_order_choice = 'user_define';
+}
+
+// Navigation path
+$navigation = get_cat_display_name_cache(
+  $category['uppercats'],
+  get_root_url().'admin.php?page=album-'
+  );
+
+$template->assign(
+  array(
+    'CATEGORIES_NAV' => $navigation,
+    'F_ACTION' => $base_url.get_query_string_diff(array()),
+   )
+ );
+
+// +-----------------------------------------------------------------------+
+// |                              thumbnails                               |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT
+    id,
+    file,
+    path,
+    representative_ext,
+    width, height, rotation,
+    name,
+    rank
+  FROM '.IMAGES_TABLE.'
+    JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id
+  WHERE category_id = '.$page['category_id'].'
+  ORDER BY rank
+;';
+$result = pwg_query($query);
+if (pwg_db_num_rows($result) > 0)
+{
+	// template thumbnail initialization
+	$current_rank = 1;
+  $derivativeParams = ImageStdParams::get_by_type(IMG_SQUARE);
+	while ($row = pwg_db_fetch_assoc($result))
+	{
+    $derivative = new DerivativeImage($derivativeParams, new SrcImage($row));
+
+		if ( !empty( $row['name'] ) )
+		{
+			$thumbnail_name = $row['name'];
+		}
+		else
+		{
+			$file_wo_ext = get_filename_wo_extension($row['file']);
+			$thumbnail_name = str_replace('_', ' ', $file_wo_ext);
+		}
+		$current_rank++;
+		$template->append(
+			'thumbnails',
+			array(
+				'ID' => $row['id'],
+				'NAME' => $thumbnail_name,
+				'TN_SRC' => $derivative->get_url(),
+				'RANK' => $current_rank * 10,
+				'SIZE' => $derivative->get_size(),
+				)
+			);
+	}
+}
+// image order management
+$sort_fields = array(
+  ''                    => '',
+  'file ASC'            => l10n('File name, A &rarr; Z'),
+  'file DESC'           => l10n('File name, Z &rarr; A'),
+  'name ASC'            => l10n('Photo title, A &rarr; Z'),
+  'name DESC'           => l10n('Photo title, Z &rarr; A'),
+  'date_creation DESC'  => l10n('Date created, new &rarr; old'),
+  'date_creation ASC'   => l10n('Date created, old &rarr; new'),
+  'date_available DESC' => l10n('Date posted, new &rarr; old'),
+  'date_available ASC'  => l10n('Date posted, old &rarr; new'),
+  'rating_score DESC'   => l10n('Rating score, high &rarr; low'),
+  'rating_score ASC'    => l10n('Rating score, low &rarr; high'),
+  'hit DESC'            => l10n('Visits, high &rarr; low'),
+  'hit ASC'             => l10n('Visits, low &rarr; high'),
+  'id ASC'              => l10n('Numeric identifier, 1 &rarr; 9'),
+  'id DESC'             => l10n('Numeric identifier, 9 &rarr; 1'),
+  'rank ASC'            => l10n('Manual sort order'),
+  );
+
+$template->assign('image_order_options', $sort_fields);
+
+$image_order = explode(',', $category['image_order']);
+
+for ($i=0; $i<3; $i++) // 3 fields
+{
+  if ( isset($image_order[$i]) )
+  {
+    $template->append('image_order', $image_order[$i]);
+  }
+  else
+  {
+    $template->append('image_order', '');
+  }
+}
+
+$template->assign('image_order_choice', $image_order_choice);
+
+
+// +-----------------------------------------------------------------------+
+// |                          sending html code                            |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'element_set_ranks');
+?>
Index: /tags/2.6.0RC1/admin/extend_for_templates.php
===================================================================
--- /tags/2.6.0RC1/admin/extend_for_templates.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/extend_for_templates.php	(revision 25596)
@@ -0,0 +1,204 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Define replacement conditions for each template from template-extension
+ * (template called "replacer").
+ *
+ * "original template" from ./template/yoga (or any other than yoga)
+ * will be replaced by a "replacer" if the replacer is linked to this "original template"
+ * (and optionally, when the requested URL contains an "optional URL keyword").
+ *
+ * "Optional URL keywords" are those you can find after the module name in URLs.
+ *
+ * Therefore "Optional URL keywords" can be an active "permalink" 
+ * (see permalinks in our documentation for further explanation).
+ */
+
+// +-----------------------------------------------------------------------+
+//                            initialization                              |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+check_status(ACCESS_ADMINISTRATOR);
+
+$tpl_extension = isset($conf['extents_for_templates']) ?
+      unserialize($conf['extents_for_templates']) : array();
+$new_extensions = get_extents(); 
+
+/* Selective URLs keyword */
+$relevant_parameters = array(
+    '----------',
+    'category',
+    'favorites',
+    'most_visited',
+    'best_rated',
+    'recent_pics',
+    'recent_cats',
+    'created-monthly-calendar',
+    'posted-monthly-calendar',
+    'search',
+    'flat',
+    'list', /* <=> Random */
+    'tags',
+    ); 
+  $query = '
+SELECT permalink
+  FROM '.CATEGORIES_TABLE.'
+  WHERE permalink IS NOT NULL
+';
+
+/* Add active permalinks */ 
+$permalinks = array_from_query($query, 'permalink');
+$relevant_parameters = array_merge($relevant_parameters, $permalinks);
+
+/* Link all supported templates to their respective handle */
+$eligible_templates = array(
+    '----------'                 => 'N/A',
+    'about.tpl'                  => 'about',
+    'comments.tpl'               => 'comments',
+    'comment_list.tpl'           => 'comment_list',
+    'footer.tpl'                 => 'tail',
+    'header.tpl'                 => 'header',
+    'identification.tpl'         => 'identification',
+    'index.tpl'                  => 'index',
+    'mainpage_categories.tpl'    => 'index_category_thumbnails',
+    'menubar.tpl'                => 'menubar',
+    'menubar_categories.tpl'     => 'mbCategories',
+    'menubar_identification.tpl' => 'mbIdentification',
+    'menubar_links.tpl'          => 'mbLinks',
+    'menubar_menu.tpl'           => 'mbMenu',
+    'menubar_specials.tpl'       => 'mbSpecials',
+    'menubar_tags.tpl'           => 'mbTags',
+	'month_calendar.tpl'         => 'month_calendar',
+    'navigation_bar.tpl'         => 'navbar',
+    'nbm.tpl'                    => 'nbm',
+    'notification.tpl'           => 'notification',
+	'password.tpl'               => 'password',   
+    'picture.tpl'                => 'picture',
+    'picture_content.tpl'        => 'default_content',
+    'picture_nav_buttons.tpl'    => 'picture_nav_buttons',
+    'popuphelp.tpl'              => 'popuphelp',
+    'profile.tpl'                => 'profile',
+    'profile_content.tpl'        => 'profile_content',
+    'redirect.tpl'               => 'redirect',
+    'register.tpl'               => 'register',
+    'search.tpl'                 => 'search',
+    'search_rules.tpl'           => 'search_rules',
+    'slideshow.tpl'              => 'slideshow',
+    'tags.tpl'                   => 'tags',
+    'thumbnails.tpl'             => 'index_thumbnails',
+);
+
+$flip_templates = array_flip($eligible_templates);
+
+$available_templates = array_merge(
+  array('N/A' => '----------'),
+  get_dirs(PHPWG_ROOT_PATH.'themes'));
+
+// +-----------------------------------------------------------------------+
+// |                            selected templates                         |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit']))
+{
+  $replacements = array();
+  $i = 0;
+  while (isset($_POST['reptpl'][$i]))
+  {
+    $newtpl = $_POST['reptpl'][$i];
+    $original = $_POST['original'][$i];
+    $handle = $eligible_templates[$original];
+    $url_keyword = $_POST['url'][$i];
+    if ($url_keyword == '----------') $url_keyword = 'N/A';
+    $bound_tpl = $_POST['bound'][$i];
+    if ($bound_tpl == '----------') $bound_tpl = 'N/A';
+    if ($handle != 'N/A')
+    {
+      $replacements[$newtpl] = array($handle, $url_keyword, $bound_tpl);
+    }
+    $i++;
+  }
+  $conf['extents_for_templates'] = serialize($replacements);
+  $tpl_extension = $replacements;
+  /* ecrire la nouvelle conf */
+  $query = '
+UPDATE '.CONFIG_TABLE.'
+  SET value = \''. $conf['extents_for_templates'] .'\'
+WHERE param = \'extents_for_templates\';';
+  if (pwg_query($query))
+  {
+    $page['infos'][] = l10n('Templates configuration has been recorded.');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+/* Clearing (remove old extents, add new ones) */
+foreach ($tpl_extension as $file => $conditions)
+{
+  if ( !in_array($file,$new_extensions) ) unset($tpl_extension[$file]);
+  else $new_extensions = array_diff($new_extensions,array($file)); 
+}
+foreach ($new_extensions as $file)
+{
+  $tpl_extension[$file] = array('N/A', 'N/A', 'N/A');
+}
+
+$template->set_filenames(array('extend_for_templates'
+     => 'extend_for_templates.tpl'));
+
+$base_url = PHPWG_ROOT_PATH.'admin.php?page=extend_for_templates';
+
+$template->assign(
+  array(
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=extend_for_templates',
+    ));
+ksort($tpl_extension);
+foreach ($tpl_extension as $file => $conditions)    
+{
+  $handle = $conditions[0];
+  $url_keyword = $conditions[1];
+  $bound_tpl = $conditions[2];
+  {  
+  $template->append('extents',
+    array(
+      'replacer'       => $file,
+      'url_parameter'  => $relevant_parameters,
+      'original_tpl'   => array_keys($eligible_templates),
+      'bound_tpl'          => $available_templates,
+      'selected_tpl'   => $flip_templates[$handle],
+      'selected_url'   => $url_keyword,
+      'selected_bound' => $bound_tpl,)
+      );
+  }
+}
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'extend_for_templates');
+?>
Index: /tags/2.6.0RC1/admin/group_list.php
===================================================================
--- /tags/2.6.0RC1/admin/group_list.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/group_list.php	(revision 25596)
@@ -0,0 +1,432 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('groups');
+$tabsheet->select('group_list');
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!empty($_POST) or isset($_GET['delete']) or isset($_GET['toggle_is_default']))
+{
+  check_pwg_token();
+}
+// +-----------------------------------------------------------------------+
+// |                              add a group                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit_add']))
+{
+  if (empty($_POST['groupname']))
+  {
+    $page['errors'][] = l10n('The name of a group must not contain " or \' or be empty.');
+  }
+  if (count($page['errors']) == 0)
+  {
+    // is the group not already existing ?
+    $query = '
+SELECT COUNT(*)
+  FROM '.GROUPS_TABLE.'
+  WHERE name = \''.$_POST['groupname'].'\'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count != 0)
+    {
+      $page['errors'][] = l10n('This name is already used by another group.');
+    }
+  }
+  if (count($page['errors']) == 0)
+  {
+    // creating the group
+    $query = '
+INSERT INTO '.GROUPS_TABLE.'
+  (name)
+  VALUES
+  (\''.pwg_db_real_escape_string($_POST['groupname']).'\')
+;';
+    pwg_query($query);
+
+    $page['infos'][] = l10n('group "%s" added', $_POST['groupname']);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             action send                               |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']) and isset($_POST['selectAction']) and isset($_POST['group_selection']))
+{
+  // if the user tries to apply an action, it means that there is at least 1
+  // photo in the selection
+  $groups = $_POST['group_selection'];
+  if (count($groups) == 0)
+  {
+    $page['errors'][] = l10n('Select at least one group');
+  }
+
+  $action = $_POST['selectAction'];
+
+  // +
+  // |rename a group
+  // +
+
+  if ($action=="rename")
+  {
+    // is the group not already existing ?
+    $query = '
+SELECT name
+  FROM '.GROUPS_TABLE.'
+;';
+    $group_names = array_from_query($query, 'name');
+    foreach($groups as $group)
+    {
+      if (  in_array($_POST['rename_'.$group.''], $group_names))
+      {
+        $page['errors'][] = $_POST['rename_'.$group.''].' | '.l10n('This name is already used by another group.');
+      }
+      elseif ( !empty($_POST['rename_'.$group.'']))
+      {
+        $query = '
+        UPDATE '.GROUPS_TABLE.'
+        SET name = \''.pwg_db_real_escape_string($_POST['rename_'.$group.'']).'\'
+        WHERE id = '.$group.'
+      ;';
+        pwg_query($query);
+      }
+    }
+  }
+
+  // +
+  // |delete a group
+  // +
+
+  if ($action=="delete" and isset($_POST['confirm_deletion']) and $_POST['confirm_deletion'])
+  {
+    foreach($groups as $group)
+    {
+        // destruction of the access linked to the group
+      $query = '
+    DELETE
+      FROM '.GROUP_ACCESS_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      pwg_query($query);
+      
+      // destruction of the users links for this group
+      $query = '
+    DELETE
+      FROM '.USER_GROUP_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      pwg_query($query);
+    
+      $query = '
+    SELECT name
+      FROM '.GROUPS_TABLE.'
+      WHERE id = '.$group.'
+    ;';
+      list($groupname) = pwg_db_fetch_row(pwg_query($query));
+      
+      // destruction of the group
+      $query = '
+    DELETE
+      FROM '.GROUPS_TABLE.'
+      WHERE id = '.$group.'
+    ;';
+      pwg_query($query);
+    
+      $page['infos'][] = l10n('group "%s" deleted', $groupname);
+    }
+  }
+
+  // +
+  // |merge groups into a new one
+  // +
+
+  if ($action=="merge" and count($groups) > 1)
+  {
+    // is the group not already existing ?
+    $query = '
+SELECT COUNT(*)
+  FROM '.GROUPS_TABLE.'
+  WHERE name = \''.pwg_db_real_escape_string($_POST['merge']).'\'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count != 0)
+    {
+      $page['errors'][] = l10n('This name is already used by another group.');
+    }
+    else
+    {
+      // creating the group
+      $query = '
+  INSERT INTO '.GROUPS_TABLE.'
+    (name)
+    VALUES
+    (\''.pwg_db_real_escape_string($_POST['merge']).'\')
+  ;';
+      pwg_query($query);
+      $query = '
+      SELECT id
+        FROM '.GROUPS_TABLE.'
+        WHERE name = \''.pwg_db_real_escape_string($_POST['merge']).'\'
+      ;';
+      list($groupid) = pwg_db_fetch_row(pwg_query($query));
+    }
+    $grp_access = array();
+    $usr_grp = array();
+    foreach($groups as $group)
+    {
+      $query = '
+    SELECT *
+      FROM '.GROUP_ACCESS_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      $res=pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($res))
+      {
+        $new_grp_access= array(
+          'cat_id' => $row['cat_id'],
+          'group_id' => $groupid
+        );
+        if (!in_array($new_grp_access,$grp_access))
+        {
+          $grp_access[]=$new_grp_access;
+        }
+      }
+
+      $query = '
+    SELECT *
+      FROM '.USER_GROUP_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      $res=pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($res))
+      {
+        $new_usr_grp= array(
+          'user_id' => $row['user_id'],
+          'group_id' => $groupid
+        );
+        if (!in_array($new_usr_grp,$usr_grp))
+        {
+          $usr_grp[]=$new_usr_grp;
+        }
+      }
+    }
+    mass_inserts(USER_GROUP_TABLE, array('user_id','group_id'), $usr_grp);
+    mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $grp_access);
+    
+    $page['infos'][] = l10n('group "%s" added', $_POST['merge']);
+  }
+  
+  // +
+  // |duplicate a group
+  // +
+
+  if ($action=="duplicate" )
+  {
+    foreach($groups as $group)
+    {
+      if ( empty($_POST['duplicate_'.$group.'']) )
+      {
+        break;
+      }
+      // is the group not already existing ?
+      $query = '
+  SELECT COUNT(*)
+    FROM '.GROUPS_TABLE.'
+    WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\'
+  ;';
+      list($count) = pwg_db_fetch_row(pwg_query($query));
+      if ($count != 0)
+      {
+        $page['errors'][] = l10n('This name is already used by another group.');
+        break;
+      }
+      // creating the group
+      $query = '
+  INSERT INTO '.GROUPS_TABLE.'
+    (name)
+    VALUES
+    (\''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\')
+  ;';
+      pwg_query($query);
+      $query = '
+      SELECT id
+        FROM '.GROUPS_TABLE.'
+        WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\'
+      ;';
+      
+      list($groupid) = pwg_db_fetch_row(pwg_query($query));
+      $query = '
+    SELECT *
+      FROM '.GROUP_ACCESS_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      $grp_access = array();
+      $res=pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($res))
+      {
+          $grp_access[] = array(
+            'cat_id' => $row['cat_id'],
+            'group_id' => $groupid
+          );
+      }
+      mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $grp_access);
+
+      $query = '
+    SELECT *
+      FROM '.USER_GROUP_TABLE.'
+      WHERE group_id = '.$group.'
+    ;';
+      $usr_grp = array();
+      $res=pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($res))
+      {
+          $usr_grp[] = array(
+            'user_id' => $row['user_id'],
+            'group_id' => $groupid
+          );
+      }
+      mass_inserts(USER_GROUP_TABLE, array('user_id','group_id'), $usr_grp);
+  
+      $page['infos'][] = l10n('group "%s" added', $_POST['duplicate_'.$group.'']);
+    }
+  }
+
+
+  // +
+  // | toggle_default
+  // +
+  
+  if ($action=="toggle_default")
+  {
+    foreach($groups as $group)
+    {
+      $query = '
+    SELECT name, is_default
+      FROM '.GROUPS_TABLE.'
+      WHERE id = '.$group.'
+    ;';
+      list($groupname, $is_default) = pwg_db_fetch_row(pwg_query($query));
+      
+      // update of the group
+      $query = '
+    UPDATE '.GROUPS_TABLE.'
+      SET is_default = \''.boolean_to_string(!get_boolean($is_default)).'\'
+      WHERE id = '.$group.'
+    ;';
+      pwg_query($query);
+    
+      $page['infos'][] = l10n('group "%s" updated', $groupname);
+    }
+  }
+}
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('group_list' => 'group_list.tpl'));
+
+$template->assign(
+  array(
+    'F_ADD_ACTION' => get_root_url().'admin.php?page=group_list',
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=group_list',
+    'PWG_TOKEN' => get_pwg_token(),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                              group list                               |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT id, name, is_default
+  FROM '.GROUPS_TABLE.'
+  ORDER BY name ASC
+;';
+$result = pwg_query($query);
+
+$admin_url = get_root_url().'admin.php?page=';
+$perm_url    = $admin_url.'group_perm&amp;group_id=';
+$del_url     = $admin_url.'group_list&amp;delete=';
+$members_url = $admin_url.'user_list&amp;group=';
+$toggle_is_default_url     = $admin_url.'group_list&amp;toggle_is_default=';
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $query = '
+SELECT username
+  FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_GROUP_TABLE.' AS ug
+    ON u.'.$conf['user_fields']['id'].' = ug.user_id
+  WHERE ug.group_id = '.$row['id'].'
+;';
+  $members=array();
+  $res=pwg_query($query);
+  while ($us= pwg_db_fetch_assoc($res))
+  {
+    $members[]=$us['username'];
+  }
+  $template->append(
+    'groups',
+    array(
+      'NAME' => $row['name'],
+      'ID' => $row['id'],
+      'IS_DEFAULT' => (get_boolean($row['is_default']) ? ' ['.l10n('default').']' : ''),
+      'NB_MEMBERS' => count($members),
+      'L_MEMBERS' => implode(' <span class="userSeparator">&middot;</span> ', $members),
+      'MEMBERS' => l10n_dec('%d member', '%d members', count($members)),
+      'U_MEMBERS' => $members_url.$row['id'],
+      'U_DELETE' => $del_url.$row['id'].'&amp;pwg_token='.get_pwg_token(),
+      'U_PERM' => $perm_url.$row['id'],
+      'U_ISDEFAULT' => $toggle_is_default_url.$row['id'].'&amp;pwg_token='.get_pwg_token(),
+      )
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'group_list');
+
+?>
Index: /tags/2.6.0RC1/admin/group_perm.php
===================================================================
--- /tags/2.6.0RC1/admin/group_perm.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/group_perm.php	(revision 25596)
@@ -0,0 +1,181 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                            variables init                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['group_id']) and is_numeric($_GET['group_id']))
+{
+  $page['group'] = $_GET['group_id'];
+}
+else
+{
+  die('group_id URL parameter is missing');
+}
+
+// +-----------------------------------------------------------------------+
+// |                                updates                                |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['falsify'])
+    and isset($_POST['cat_true'])
+    and count($_POST['cat_true']) > 0)
+{
+  // if you forbid access to a category, all sub-categories become
+  // automatically forbidden
+  $subcats = get_subcat_ids($_POST['cat_true']);
+  $query = '
+DELETE
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE group_id = '.$page['group'].'
+  AND cat_id IN ('.implode(',', $subcats).')
+;';
+  pwg_query($query);
+}
+else if (isset($_POST['trueify'])
+         and isset($_POST['cat_false'])
+         and count($_POST['cat_false']) > 0)
+{
+  $uppercats = get_uppercat_ids($_POST['cat_false']);
+  $private_uppercats = array();
+
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $uppercats).')
+  AND status = \'private\'
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $private_uppercats[] = $row['id'];
+  }
+
+  // retrying to authorize a category which is already authorized may cause
+  // an error (in SQL statement), so we need to know which categories are
+  // accesible
+  $authorized_ids = array();
+
+  $query = '
+SELECT cat_id
+  FROM '.GROUP_ACCESS_TABLE.'
+  WHERE group_id = '.$page['group'].'
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $authorized_ids[] = $row['cat_id'];
+  }
+
+  $inserts = array();
+  $to_autorize_ids = array_diff($private_uppercats, $authorized_ids);
+  foreach ($to_autorize_ids as $to_autorize_id)
+  {
+    $inserts[] = array(
+      'group_id' => $page['group'],
+      'cat_id' => $to_autorize_id
+      );
+  }
+
+  mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $inserts);
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array(
+    'group_perm' => 'group_perm.tpl',
+    'double_select' => 'double_select.tpl'
+    )
+  );
+
+$template->assign(
+  array(
+    'TITLE' =>
+      l10n(
+        'Manage permissions for group "%s"',
+        get_groupname($page['group'])
+        ),
+    'L_CAT_OPTIONS_TRUE'=>l10n('Authorized'),
+    'L_CAT_OPTIONS_FALSE'=>l10n('Forbidden'),
+
+    'F_ACTION' =>
+        get_root_url().
+        'admin.php?page=group_perm&amp;group_id='.
+        $page['group']
+    )
+  );
+
+// only private categories are listed
+$query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.' INNER JOIN '.GROUP_ACCESS_TABLE.' ON cat_id = id
+  WHERE status = \'private\'
+    AND group_id = '.$page['group'].'
+;';
+display_select_cat_wrapper($query_true,array(),'category_option_true');
+
+$result = pwg_query($query_true);
+$authorized_ids = array();
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $authorized_ids[] = $row['id'];
+}
+
+$query_false = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'private\'';
+if (count($authorized_ids) > 0)
+{
+  $query_false.= '
+    AND id NOT IN ('.implode(',', $authorized_ids).')';
+}
+$query_false.= '
+;';
+display_select_cat_wrapper($query_false,array(),'category_option_false');
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'group_perm');
+
+?>
Index: /tags/2.6.0RC1/admin/help.php
===================================================================
--- /tags/2.6.0RC1/admin/help.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/help.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+$help_link = get_root_url().'admin.php?page=help&section=';
+$selected = null;
+
+if (!isset($_GET['section']))
+{
+  $selected = 'add_photos';
+}
+else
+{
+  $selected = $_GET['section'];
+}
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('help');
+$tabsheet->select($selected);
+$tabsheet->assign();
+
+$template->set_filenames(array('help' => 'help.tpl'));
+
+$template->assign(
+  array(
+    'HELP_CONTENT' => load_language(
+      'help/help_'.$tabsheet->selected.'.html',
+      '',
+      array('return'=>true)
+      ),
+    'HELP_SECTION_TITLE' => $tabsheet->sheets[ $tabsheet->selected ]['caption'],
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'help');
+?>
Index: /tags/2.6.0RC1/admin/history.php
===================================================================
--- /tags/2.6.0RC1/admin/history.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/history.php	(revision 25596)
@@ -0,0 +1,671 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Display filtered history lines
+ */
+
+// +-----------------------------------------------------------------------+
+// |                              functions                                |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_history.inc.php');
+
+if (isset($_GET['start']) and is_numeric($_GET['start']))
+{
+  $page['start'] = $_GET['start'];
+}
+else
+{
+  $page['start'] = 0;
+}
+
+$types = array('none', 'picture', 'high', 'other');
+
+$display_thumbnails = array('no_display_thumbnail' => l10n('No display'),
+                            'display_thumbnail_classic' => l10n('Classic display'),
+                            'display_thumbnail_hoverbox' => l10n('Hoverbox display')
+  );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// | Build search criteria and redirect to results                         |
+// +-----------------------------------------------------------------------+
+
+$page['errors'] = array();
+$search = array();
+
+if (isset($_POST['submit']))
+{
+  // dates
+  if (!empty($_POST['start_year']))
+  {
+    $search['fields']['date-after'] = sprintf(
+      '%d-%02d-%02d',
+      $_POST['start_year'],
+      $_POST['start_month'],
+      $_POST['start_day']
+      );
+  }
+
+  if (!empty($_POST['end_year']))
+  {
+    $search['fields']['date-before'] = sprintf(
+      '%d-%02d-%02d',
+      $_POST['end_year'],
+      $_POST['end_month'],
+      $_POST['end_day']
+      );
+  }
+
+  if (empty($_POST['types']))
+  {
+    $search['fields']['types'] = $types;
+  }
+  else
+  {
+    $search['fields']['types'] = $_POST['types'];
+  }
+
+  $search['fields']['user'] = $_POST['user'];
+
+  if (!empty($_POST['image_id']))
+  {
+    $search['fields']['image_id'] = intval($_POST['image_id']);
+  }
+
+  if (!empty($_POST['filename']))
+  {
+    $search['fields']['filename'] = str_replace(
+      '*',
+      '%',
+      pwg_db_real_escape_string($_POST['filename'])
+      );
+  }
+
+  if (!empty($_POST['ip']))
+  {
+    $search['fields']['ip'] = str_replace(
+      '*',
+      '%',
+      pwg_db_real_escape_string($_POST['ip'])
+      );
+  }
+
+  $search['fields']['display_thumbnail'] = $_POST['display_thumbnail'];
+  // Display choise are also save to one cookie
+  if (!empty($_POST['display_thumbnail'])
+      and isset($display_thumbnails[$_POST['display_thumbnail']]))
+  {
+    $cookie_val = $_POST['display_thumbnail'];
+  }
+  else
+  {
+    $cookie_val = null;
+  }
+
+  pwg_set_cookie_var('display_thumbnail', $cookie_val, strtotime('+1 month') );
+
+  // TODO manage inconsistency of having $_POST['image_id'] and
+  // $_POST['filename'] simultaneously
+
+  if (!empty($search))
+  {
+    // register search rules in database, then they will be available on
+    // thumbnails page and picture page.
+    $query ='
+INSERT INTO '.SEARCH_TABLE.'
+  (rules)
+  VALUES
+  (\''.serialize($search).'\')
+;';
+    pwg_query($query);
+
+    $search_id = pwg_db_insert_id(SEARCH_TABLE);
+
+    redirect(
+      PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id
+      );
+  }
+  else
+  {
+    $page['errors'][] = l10n('Empty query. No criteria has been entered.');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filename('history', 'history.tpl');
+
+// TabSheet initialization
+history_tabsheet();
+
+$template->assign(
+  array(
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=history',
+    'F_ACTION' => get_root_url().'admin.php?page=history'
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                             history lines                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['search_id'])
+    and $page['search_id'] = (int)$_GET['search_id'])
+{
+  // what are the lines to display in reality ?
+  $query = '
+SELECT rules
+  FROM '.SEARCH_TABLE.'
+  WHERE id = '.$page['search_id'].'
+;';
+  list($serialized_rules) = pwg_db_fetch_row(pwg_query($query));
+
+  $page['search'] = unserialize($serialized_rules);
+
+  if (isset($_GET['user_id']))
+  {
+    if (!is_numeric($_GET['user_id']))
+    {
+      die('user_id GET parameter must be an integer value');
+    }
+
+    $page['search']['fields']['user'] = $_GET['user_id'];
+
+    $query ='
+INSERT INTO '.SEARCH_TABLE.'
+  (rules)
+  VALUES
+  (\''.serialize($page['search']).'\')
+;';
+    pwg_query($query);
+
+    $search_id = pwg_db_insert_id(SEARCH_TABLE);
+
+    redirect(
+      PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id
+      );
+  }
+
+  $data = trigger_event('get_history', array(), $page['search'], $types);
+  usort($data, 'history_compare');
+
+  $page['nb_lines'] = count($data);
+
+  $history_lines = array();
+  $user_ids = array();
+  $username_of = array();
+  $category_ids = array();
+  $image_ids = array();
+  $has_tags = false;
+
+  foreach ($data as $row)
+  {
+    $user_ids[$row['user_id']] = 1;
+
+    if (isset($row['category_id']))
+    {
+      $category_ids[$row['category_id']] = 1;
+    }
+
+    if (isset($row['image_id']))
+    {
+      $image_ids[$row['image_id']] = 1;
+    }
+
+    if (isset($row['tag_ids']))
+    {
+      $has_tags = true;
+    }
+
+    $history_lines[] = $row;
+  }
+
+  // prepare reference data (users, tags, categories...)
+  if (count($user_ids) > 0)
+  {
+    $query = '
+SELECT '.$conf['user_fields']['id'].' AS id
+     , '.$conf['user_fields']['username'].' AS username
+  FROM '.USERS_TABLE.'
+  WHERE id IN ('.implode(',', array_keys($user_ids)).')
+;';
+    $result = pwg_query($query);
+
+    $username_of = array();
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $username_of[$row['id']] = stripslashes($row['username']);
+    }
+  }
+
+  if (count($category_ids) > 0)
+  {
+    $query = '
+SELECT id, uppercats
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', array_keys($category_ids)).')
+;';
+    $uppercats_of = simple_hash_from_query($query, 'id', 'uppercats');
+
+    $name_of_category = array();
+
+    foreach ($uppercats_of as $category_id => $uppercats)
+    {
+      $name_of_category[$category_id] = get_cat_display_name_cache(
+        $uppercats
+        );
+    }
+  }
+
+  if (count($image_ids) > 0)
+  {
+    $query = '
+SELECT
+    id,
+    IF(name IS NULL, file, name) AS label,
+    filesize,
+    file,
+    path,
+    representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', array_keys($image_ids)).')
+;';
+    // $label_of_image = simple_hash_from_query($query, 'id', 'label');
+    $label_of_image = array();
+    $filesize_of_image = array();
+    $file_of_image = array();
+    $path_of_image = array();
+    $representative_ext_of_image = array();
+
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $label_of_image[ $row['id'] ] = $row['label'];
+
+      if (isset($row['filesize']))
+      {
+        $filesize_of_image[ $row['id'] ] = $row['filesize'];
+      }
+
+      $file_of_image[ $row['id'] ] = $row['file'];
+      $path_of_image[ $row['id'] ] = $row['path'];
+      $representative_ext_of_image[ $row['id'] ] = $row['representative_ext'];
+    }
+  }
+
+  if ($has_tags > 0)
+  {
+    $query = '
+SELECT
+    id,
+    name, url_name
+  FROM '.TAGS_TABLE;
+    $name_of_tag = array();
+    $result = pwg_query($query);
+    while ($row=pwg_db_fetch_assoc($result))
+    {
+      $name_of_tag[ $row['id'] ] = '<a href="'.make_index_url( array('tags'=>array($row))).'">'.trigger_event("render_tag_name", $row['name']).'</a>';
+    }
+  }
+
+  $i = 0;
+  $first_line = $page['start'] + 1;
+  $last_line = $page['start'] + $conf['nb_logs_page'];
+
+  $summary['total_filesize'] = 0;
+  $summary['guests_IP'] = array();
+
+  foreach ($history_lines as $line)
+  {
+    if (isset($line['image_type']) and $line['image_type'] == 'high')
+    {
+      if (isset($filesize_of_image[$line['image_id']]))
+      {
+        $summary['total_filesize'] += $filesize_of_image[$line['image_id']];
+      }
+    }
+
+    if ($line['user_id'] == $conf['guest_id'])
+    {
+      if (!isset($summary['guests_IP'][ $line['IP'] ]))
+      {
+        $summary['guests_IP'][ $line['IP'] ] = 0;
+      }
+
+      $summary['guests_IP'][ $line['IP'] ]++;
+    }
+
+    $i++;
+
+    if ($i < $first_line or $i > $last_line)
+    {
+      continue;
+    }
+
+    $user_string = '';
+    if (isset($username_of[$line['user_id']]))
+    {
+      $user_string.= $username_of[$line['user_id']];
+    }
+    else
+    {
+      $user_string.= $line['user_id'];
+    }
+    $user_string.= '&nbsp;<a href="';
+    $user_string.= PHPWG_ROOT_PATH.'admin.php?page=history';
+    $user_string.= '&amp;search_id='.$page['search_id'];
+    $user_string.= '&amp;user_id='.$line['user_id'];
+    $user_string.= '">+</a>';
+
+    $tags_string = '';
+    if (isset($line['tag_ids']))
+    {
+      $tags_string = preg_replace(
+        '/(\d+)/e',
+        'isset($name_of_tag["$1"]) ? $name_of_tag["$1"] : "$1"',
+        str_replace(
+          ',',
+          ', ',
+          $line['tag_ids']
+          )
+        );
+    }
+
+    $image_string = '';
+    if (isset($line['image_id']))
+    {
+      $picture_url = make_picture_url(
+        array(
+          'image_id' => $line['image_id'],
+          )
+        );
+
+      if (isset($file_of_image[$line['image_id']]))
+      {
+        $element = array(
+          'id' => $line['image_id'],
+          'file' => $file_of_image[$line['image_id']],
+          'path' => $path_of_image[$line['image_id']],
+          'representative_ext' => $representative_ext_of_image[$line['image_id']],
+          );
+        $thumbnail_display = $page['search']['fields']['display_thumbnail'];
+      }
+      else
+      {
+        $thumbnail_display = 'no_display_thumbnail';
+      }
+
+      $image_title = '('.$line['image_id'].')';
+
+      if (isset($label_of_image[$line['image_id']]))
+      {
+        $image_title.= ' '.$label_of_image[$line['image_id']];
+      }
+      else
+      {
+        $image_title.= ' unknown filename';
+      }
+
+      $image_string = '';
+
+      switch ($thumbnail_display)
+      {
+        case 'no_display_thumbnail':
+        {
+          $image_string= '<a href="'.$picture_url.'">'.$image_title.'</a>';
+          break;
+        }
+        case 'display_thumbnail_classic':
+        {
+          $image_string =
+            '<a class="thumbnail" href="'.$picture_url.'">'
+            .'<span><img src="'.DerivativeImage::thumb_url($element)
+            .'" alt="'.$image_title.'" title="'.$image_title.'">'
+            .'</span></a>';
+          break;
+        }
+        case 'display_thumbnail_hoverbox':
+        {
+          $image_string =
+            '<a class="over" href="'.$picture_url.'">'
+            .'<span><img src="'.DerivativeImage::thumb_url($element)
+            .'" alt="'.$image_title.'" title="'.$image_title.'">'
+            .'</span>'.$image_title.'</a>';
+          break;
+        }
+      }
+    }
+
+    $template->append(
+      'search_results',
+      array(
+        'DATE'      => $line['date'],
+        'TIME'      => $line['time'],
+        'USER'      => $user_string,
+        'IP'        => $line['IP'],
+        'IMAGE'     => $image_string,
+        'TYPE'      => $line['image_type'],
+        'SECTION'   => $line['section'],
+        'CATEGORY'  => isset($line['category_id'])
+          ? ( isset($name_of_category[$line['category_id']])
+                ? $name_of_category[$line['category_id']]
+                : 'deleted '.$line['category_id'] )
+          : '',
+        'TAGS'       => $tags_string,
+        )
+      );
+  }
+
+  $summary['nb_guests'] = 0;
+  if (count(array_keys($summary['guests_IP'])) > 0)
+  {
+    $summary['nb_guests'] = count(array_keys($summary['guests_IP']));
+
+    // we delete the "guest" from the $username_of hash so that it is
+    // avoided in next steps
+    unset($username_of[ $conf['guest_id'] ]);
+  }
+
+  $summary['nb_members'] = count($username_of);
+
+  $member_strings = array();
+  foreach ($username_of as $user_id => $user_name)
+  {
+    $member_string = $user_name.'&nbsp;<a href="';
+    $member_string.= get_root_url().'admin.php?page=history';
+    $member_string.= '&amp;search_id='.$page['search_id'];
+    $member_string.= '&amp;user_id='.$user_id;
+    $member_string.= '">+</a>';
+
+    $member_strings[] = $member_string;
+  }
+
+  $template->assign(
+    'search_summary',
+    array(
+      'NB_LINES' => l10n_dec(
+        '%d line filtered', '%d lines filtered',
+        $page['nb_lines']
+        ),
+      'FILESIZE' => $summary['total_filesize'] != 0 ? ceil($summary['total_filesize']/1024).' MB' : '',
+      'USERS' => l10n_dec(
+        '%d user', '%d users',
+        $summary['nb_members'] + $summary['nb_guests']
+        ),
+      'MEMBERS' => sprintf(
+        l10n_dec('%d member', '%d members', $summary['nb_members']).': %s',
+        implode(', ', $member_strings)
+        ),
+      'GUESTS' => l10n_dec(
+        '%d guest', '%d guests',
+        $summary['nb_guests']
+        ),
+      )
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                            navigation bar                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($page['search_id']))
+{
+  $navbar = create_navigation_bar(
+    get_root_url().'admin.php'.get_query_string_diff(array('start')),
+    $page['nb_lines'],
+    $page['start'],
+    $conf['nb_logs_page']
+    );
+
+  $template->assign('navbar', $navbar);
+}
+
+// +-----------------------------------------------------------------------+
+// |                             filter form                               |
+// +-----------------------------------------------------------------------+
+
+$form = array();
+
+if (isset($page['search']))
+{
+  if (isset($page['search']['fields']['date-after']))
+  {
+    $tokens = explode('-', $page['search']['fields']['date-after']);
+
+    $form['start_year']  = (int)$tokens[0];
+    $form['start_month'] = (int)$tokens[1];
+    $form['start_day']   = (int)$tokens[2];
+  }
+
+  if (isset($page['search']['fields']['date-before']))
+  {
+    $tokens = explode('-', $page['search']['fields']['date-before']);
+
+    $form['end_year']  = (int)$tokens[0];
+    $form['end_month'] = (int)$tokens[1];
+    $form['end_day']   = (int)$tokens[2];
+  }
+
+  $form['types'] = $page['search']['fields']['types'];
+
+  if (isset($page['search']['fields']['user']))
+  {
+    $form['user'] = $page['search']['fields']['user'];
+  }
+  else
+  {
+    $form['user'] = null;
+  }
+
+  $form['image_id'] = @$page['search']['fields']['image_id'];
+  $form['filename'] = @$page['search']['fields']['filename'];
+  $form['ip'] = @$page['search']['fields']['ip'];
+
+  $form['display_thumbnail'] = @$page['search']['fields']['display_thumbnail'];
+}
+else
+{
+  // by default, at page load, we want the selected date to be the current
+  // date
+  $form['start_year']  = $form['end_year']  = date('Y');
+  $form['start_month'] = $form['end_month'] = date('n');
+  $form['start_day']   = $form['end_day']   = date('j');
+  $form['types'] = $types;
+  // Hoverbox by default
+  $form['display_thumbnail'] =
+    pwg_get_cookie_var('display_thumbnail', 'no_display_thumbnail');
+}
+
+
+$month_list = $lang['month'];
+$month_list[0]='------------';
+ksort($month_list);
+
+$template->assign(
+  array(
+    'IMAGE_ID' => @$form['image_id'],
+    'FILENAME' => @$form['filename'],
+    'IP' => @$form['ip'],
+
+    'month_list' => $month_list,
+
+    'START_DAY_SELECTED' => @$form['start_day'],
+    'START_MONTH_SELECTED' => @$form['start_month'],
+    'START_YEAR' => @$form['start_year'],
+
+    'END_DAY_SELECTED' => @$form['end_day'],
+    'END_MONTH_SELECTED' => @$form['end_month'],
+    'END_YEAR'   => @$form['end_year'],
+    )
+  );
+
+$template->assign(
+    array(
+      'type_option_values' => $types,
+      'type_option_selected' => $form['types']
+    )
+  );
+
+
+$query = '
+SELECT
+    '.$conf['user_fields']['id'].' AS id,
+    '.$conf['user_fields']['username'].' AS username
+  FROM '.USERS_TABLE.'
+  ORDER BY username ASC
+;';
+$template->assign(
+  array(
+    'user_options' => simple_hash_from_query($query, 'id','username'),
+    'user_options_selected' => array(@$form['user'])
+  )
+);
+
+$template->assign('display_thumbnails', $display_thumbnails);
+$template->assign('display_thumbnail_selected', $form['display_thumbnail']);
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'history');
+?>
Index: /tags/2.6.0RC1/admin/include/add_core_tabs.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/add_core_tabs.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/add_core_tabs.inc.php	(revision 25596)
@@ -0,0 +1,155 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+add_event_handler('tabsheet_before_select', 'add_core_tabs', 0, 2);
+
+function add_core_tabs($sheets, $tab_id)
+{
+  switch($tab_id)
+  {
+    case 'album':
+      global $admin_album_base_url;
+      $sheets['properties'] = array('caption' => '<span class="icon-pencil"></span>'.l10n('Properties'), 'url' => $admin_album_base_url.'-properties');
+      $sheets['sort_order'] = array('caption' => '<span class="icon-shuffle"></span>'.l10n('Manage photo ranks'), 'url' => $admin_album_base_url.'-sort_order');
+      $sheets['permissions'] = array('caption' => '<span class="icon-lock"></span>'.l10n('Permissions'), 'url' => $admin_album_base_url.'-permissions');
+      $sheets['notification'] = array('caption' => '<span class="icon-mail-alt"></span>'.l10n('Notification'), 'url' => $admin_album_base_url.'-notification');
+      break;
+      
+    case 'albums':
+      global $my_base_url;
+      $sheets['list'] = array('caption' => '<span class="icon-menu"></span>'.l10n('List'), 'url' => $my_base_url.'cat_list');
+      $sheets['move'] = array('caption' => '<span class="icon-move"></span>'.l10n('Move'), 'url' => $my_base_url.'cat_move');
+      $sheets['permalinks'] = array('caption' => '<span class="icon-link"></span>'.l10n('Permalinks'), 'url' => $my_base_url.'permalinks');
+      break;
+      
+    case 'batch_manager':
+      global $manager_link;
+      $sheets['global'] = array('caption' => l10n('global mode'), 'url' => $manager_link.'global');
+      $sheets['unit'] = array('caption' => l10n('unit mode'), 'url' => $manager_link.'unit');
+      break;
+      
+    case 'cat_options':
+      global $link_start, $conf;
+      $sheets['status'] = array('caption' => '<span class="icon-lock"></span>'.l10n('Public / Private'), 'url' => $link_start.'cat_options&amp;section=status');
+      $sheets['visible'] = array('caption' => '<span class="icon-block"></span>'.l10n('Lock'), 'url' => $link_start.'cat_options&amp;section=visible');
+      if ($conf['activate_comments'])
+        $sheets['comments'] = array('caption' => '<span class="icon-chat"></span>'.l10n('Comments'), 'url' => $link_start.'cat_options&amp;section=comments');
+      if ($conf['allow_random_representative'])
+        $sheets['representative'] = array('caption' => l10n('Representative'), 'url' => $link_start.'cat_options&amp;section=representative');
+      break;
+      
+    case 'comments':
+      $sheets[''] = array('caption' => l10n('User comments'), 'url' => '');
+      break;
+
+    case 'users':
+      $sheets[''] = array('caption' => '<span class="icon-users"> </span>'.l10n('User list'), 'url' => '');
+      break;
+
+    case 'groups':
+      $sheets[''] = array('caption' => '<span class="icon-group"> </span>'.l10n('Groups'), 'url' => '');
+      break;
+
+    case 'configuration':
+      global $conf_link;
+      $sheets['main'] = array('caption' => l10n('General'), 'url' => $conf_link.'main');
+      $sheets['sizes'] = array('caption' => l10n('Photo sizes'), 'url' => $conf_link.'sizes');
+      $sheets['watermark'] = array('caption' => l10n('Watermark'), 'url' => $conf_link.'watermark');
+      $sheets['display'] = array('caption' => l10n('Display'), 'url' => $conf_link.'display');
+      $sheets['comments'] = array('caption' => l10n('Comments'), 'url' => $conf_link.'comments');
+      $sheets['default'] = array('caption' => l10n('Guest Settings'), 'url' => $conf_link.'default');
+      break;
+      
+    case 'help':
+      global $help_link;
+      $sheets['add_photos'] = array('caption' => l10n('Add Photos'), 'url' => $help_link.'add_photos');
+      $sheets['permissions'] = array('caption' => l10n('Permissions'), 'url' => $help_link.'permissions');
+      $sheets['groups'] = array('caption' => l10n('Groups'), 'url' => $help_link.'groups');
+      $sheets['virtual_links'] = array('caption' => l10n('Virtual Links'), 'url' => $help_link.'virtual_links');
+      $sheets['misc'] = array('caption' => l10n('Miscellaneous'), 'url' => $help_link.'misc');
+      break;
+      
+    case 'history':
+      global $link_start;
+      $sheets['stats'] = array('caption' => '<span class="icon-signal"></span>'.l10n('Statistics'), 'url' => $link_start.'stats');
+      $sheets['history'] = array('caption' => '<span class="icon-search"></span>'.l10n('Search'), 'url' => $link_start.'history');
+      break;
+      
+    case 'languages':
+      global $my_base_url;
+      $sheets['installed'] = array('caption' => '<span class="icon-language"></span>'.l10n('Installed Languages'), 'url' => $my_base_url.'&amp;tab=installed');
+      $sheets['update'] = array('caption' => '<span class="icon-arrows-cw"></span>'.l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
+      $sheets['new'] = array('caption' => '<span class="icon-plus-circled"></span>'.l10n('Add New Language'), 'url' => $my_base_url.'&amp;tab=new');
+      break;
+      
+    case 'nbm':
+      global $base_url;
+      $sheets['param'] = array('caption' => l10n('Parameter'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=param');
+      $sheets['subscribe'] = array('caption' => l10n('Subscribe'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=subscribe');
+      $sheets['send'] = array('caption' => l10n('Send'), 'url' => $base_url.'?page=notification_by_mail&amp;mode=send');
+      break;
+      
+    case 'photo':
+      global $admin_photo_base_url;
+      $sheets['properties'] = array('caption' => l10n('Properties'), 'url' => $admin_photo_base_url.'-properties');
+      $sheets['coi'] = array('caption' => '<span class="icon-crop"></span>'.l10n('Center of interest'), 'url' => $admin_photo_base_url.'-coi');
+      break;
+      
+    case 'photos_add':
+      global $conf;
+      $sheets['direct'] = array('caption' => '<span class="icon-upload"></span>'.l10n('Web Form'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=direct');
+      $sheets['applications'] = array('caption' => '<span class="icon-network"></span>'.l10n('Applications'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=applications');
+      if ($conf['enable_synchronization'])
+        $sheets['ftp'] = array('caption' => '<span class="icon-exchange"></span>'.l10n('FTP + Synchronization'), 'url' => PHOTOS_ADD_BASE_URL.'&amp;section=ftp');
+      break;
+      
+    case 'plugins':
+      global $my_base_url;
+      $sheets['installed'] = array('caption' => '<span class="icon-equalizer"></span>'.l10n('Plugin list'), 'url' => $my_base_url.'&amp;tab=installed');
+      $sheets['update'] = array('caption' => '<span class="icon-arrows-cw"></span>'.l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
+      $sheets['new'] = array('caption' => '<span class="icon-plus-circled"></span>'.l10n('Other plugins'), 'url' => $my_base_url.'&amp;tab=new');
+      break;
+      
+    case 'rating':
+      $sheets['rating'] = array('caption' => l10n('Photos'), 'url' => get_root_url().'admin.php?page=rating');
+      $sheets['rating_user'] = array('caption' => l10n('Users'), 'url' => get_root_url().'admin.php?page=rating_user');
+      break;
+      
+    case 'themes':
+      global $my_base_url;
+      $sheets['installed'] = array('caption' => '<span class="icon-brush"></span>'.l10n('Installed Themes'), 'url' => $my_base_url.'&amp;tab=installed');
+      $sheets['update'] = array('caption' => '<span class="icon-arrows-cw"></span>'.l10n('Check for updates'), 'url' => $my_base_url.'&amp;tab=update');
+      $sheets['new'] = array('caption' => '<span class="icon-plus-circled"></span>'.l10n('Add New Theme'), 'url' => $my_base_url.'&amp;tab=new');
+      break;
+      
+    case 'updates':
+      global $my_base_url;
+      $sheets['pwg'] = array('caption' => l10n('Piwigo Update'), 'url' => $my_base_url);
+      $sheets['ext'] = array('caption' => l10n('Extensions Update'), 'url' => $my_base_url.'&amp;tab=ext');
+      break;
+  }
+  
+  return $sheets;
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/albums_tab.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/albums_tab.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/albums_tab.inc.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('albums');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+?>
Index: /tags/2.6.0RC1/admin/include/c13y_internal.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/c13y_internal.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/c13y_internal.class.php	(revision 25596)
@@ -0,0 +1,258 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class c13y_internal
+{
+  function c13y_internal()
+  {
+    add_event_handler('list_check_integrity', array(&$this, 'c13y_version'));
+    add_event_handler('list_check_integrity', array(&$this, 'c13y_exif'));
+    add_event_handler('list_check_integrity', array(&$this, 'c13y_user'));
+  }
+
+  /**
+   * Check version
+   *
+   * @param c13y object
+   * @return void
+   */
+  function c13y_version($c13y)
+  {
+    global $conf;
+
+    $check_list = array();
+
+    $check_list[] = array(
+        'type' => 'PHP',
+        'current' => phpversion(),
+        'required' => REQUIRED_PHP_VERSION,
+        );
+
+    $check_list[] = array(
+        'type' => 'MySQL',
+        'current' => pwg_get_db_version(), 
+        'required' => REQUIRED_MYSQL_VERSION,
+        );
+
+    foreach ($check_list as $elem)
+    {
+      if (version_compare($elem['current'], $elem['required'], '<'))
+      {
+        $c13y->add_anomaly(
+          sprintf(l10n('The version of %s [%s] installed is not compatible with the version required [%s]'), $elem['type'], $elem['current'], $elem['required']),
+          null,
+          null,
+          l10n('You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all')
+          .'<br>'.
+          $c13y->get_htlm_links_more_info());
+      }
+    }
+  }
+
+  /**
+   * Check exif
+   *
+   * @param c13y object
+   * @return void
+   */
+  function c13y_exif($c13y)
+  {
+    global $conf;
+
+    foreach (array('show_exif', 'use_exif') as $value)
+    {
+      if (($conf[$value]) and (!function_exists('read_exif_data')))
+      {
+        $c13y->add_anomaly(
+          sprintf(l10n('%s value is not correct file because exif are not supported'), '$conf[\''.$value.'\']'),
+          null,
+          null,
+          sprintf(l10n('%s must be to set to false in your local/config/config.inc.php file'), '$conf[\''.$value.'\']')
+          .'<br>'.
+          $c13y->get_htlm_links_more_info());
+      }
+    }
+  }
+
+  /**
+   * Check user
+   *
+   * @param c13y object
+   * @return void
+   */
+  function c13y_user($c13y)
+  {
+    global $conf;
+
+    $c13y_users = array();
+    $c13y_users[$conf['guest_id']] = array(
+      'status' => 'guest',
+      'l10n_non_existent' => 'Main "guest" user does not exist',
+      'l10n_bad_status' => 'Main "guest" user status is incorrect');
+
+    if ($conf['guest_id'] != $conf['default_user_id'])
+    {
+      $c13y_users[$conf['default_user_id']] = array(
+        'password' => null,
+        'l10n_non_existent' => 'Default user does not exist');
+    }
+
+    $c13y_users[$conf['webmaster_id']] = array(
+      'status' => 'webmaster',
+      'l10n_non_existent' => 'Main "webmaster" user does not exist',
+      'l10n_bad_status' => 'Main "webmaster" user status is incorrect');
+
+      $query = '
+  select u.'.$conf['user_fields']['id'].' as id, ui.status
+  from '.USERS_TABLE.' as u
+    left join '.USER_INFOS_TABLE.' as ui
+        on u.'.$conf['user_fields']['id'].' = ui.user_id
+  where
+    u.'.$conf['user_fields']['id'].' in ('.implode(',', array_keys($c13y_users)).')
+  ;';
+
+
+    $status = array();
+
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $status[$row['id']] = $row['status'];
+    }
+
+    foreach ($c13y_users as $id => $data)
+    {
+      if (!array_key_exists($id, $status))
+      {
+        $c13y->add_anomaly(l10n($data['l10n_non_existent']), 'c13y_correction_user',
+          array('id' => $id, 'action' => 'creation'));
+      }
+      else
+      if (!empty($data['status']) and $status[$id] != $data['status'])
+      {
+        $c13y->add_anomaly(l10n($data['l10n_bad_status']), 'c13y_correction_user',
+          array('id' => $id, 'action' => 'status'));
+      }
+    }
+  }
+
+  /**
+   * Do correction user
+   *
+   * @param user_id, action
+   * @return boolean true if ok else false
+   */
+  function c13y_correction_user($id, $action)
+  {
+    global $conf, $page;
+
+    $result = false;
+
+    if (!empty($id))
+    {
+      switch ($action)
+      {
+        case 'creation':
+          if ($id == $conf['guest_id'])
+          {
+            $name = 'guest';
+            $password = null;
+          }
+          else if  ($id == $conf['default_user_id'])
+          {
+            $name = 'guest';
+            $password = null;
+          }
+          else if  ($id == $conf['webmaster_id'])
+          {
+            $name = 'webmaster';
+            $password = generate_key(6);
+          }
+
+          if (isset($name))
+          {
+            $name_ok = false;
+            while (!$name_ok)
+            {
+              $name_ok = (get_userid($name) === false);
+              if (!$name_ok)
+              {
+                $name .= generate_key(1);
+              }
+            }
+
+            $inserts = array(
+              array(
+                'id'       => $id,
+                'username' => addslashes($name),
+                'password' => $password
+                ),
+              );
+            mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts);
+
+            create_user_infos($id);
+
+            $page['infos'][] = sprintf(l10n('User "%s" created with "%s" like password'), $name, $password);
+
+            $result = true;
+          }
+          break;
+        case 'status':
+          if ($id == $conf['guest_id'])
+          {
+            $status = 'guest';
+          }
+          else if  ($id == $conf['default_user_id'])
+          {
+            $status = 'guest';
+          }
+          else if  ($id == $conf['webmaster_id'])
+          {
+            $status = 'webmaster';
+          }
+
+          if (isset($status))
+          {
+            $updates = array(
+              array(
+                'user_id' => $id,
+                'status'  => $status
+                ),
+              );
+            mass_updates(USER_INFOS_TABLE,
+              array('primary' => array('user_id'),'update' => array('status')),
+              $updates);
+
+            $page['infos'][] = sprintf(l10n('Status of user "%s" updated'), get_username($id));
+
+            $result = true;
+          }
+          break;
+      }
+    }
+
+    return $result;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/check_integrity.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/check_integrity.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/check_integrity.class.php	(revision 25596)
@@ -0,0 +1,346 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class check_integrity
+{
+  var $ignore_list;
+  var $retrieve_list;
+  var $build_ignore_list;
+
+  function check_integrity()
+  {
+    $this->ignore_list = array();
+    $this->retrieve_list = array();
+    $this->build_ignore_list = array();
+  }
+
+  /**
+   * Check integrities
+   *
+   * @param void
+   * @return void
+   */
+  function check()
+  {
+    global $page, $header_notes, $conf;
+
+    // Ignore list
+    $conf_c13y_ignore = unserialize($conf['c13y_ignore']);
+    if (
+          is_array($conf_c13y_ignore) and
+          isset($conf_c13y_ignore['version']) and
+          ($conf_c13y_ignore['version'] == PHPWG_VERSION) and
+          is_array($conf_c13y_ignore['list'])
+        )
+    {
+      $ignore_list_changed = false;
+      $this->ignore_list = $conf_c13y_ignore['list'];
+    }
+    else
+    {
+      $ignore_list_changed = true;
+      $this->ignore_list = array();
+    }
+
+    // Retrieve list
+    $this->retrieve_list = array();
+    $this->build_ignore_list = array();
+
+    trigger_action('list_check_integrity', $this);
+
+    // Information
+    if (count($this->retrieve_list) > 0)
+    {
+      $header_notes[] = l10n_dec(
+        '%d anomaly has been detected.', '%d anomalies have been detected.',
+        count($this->retrieve_list)
+        );
+    }
+
+    // Treatments
+    if (isset($_POST['c13y_submit_correction']) and isset($_POST['c13y_selection']))
+    {
+      $corrected_count = 0;
+      $not_corrected_count = 0;
+
+      foreach ($this->retrieve_list as $i => $c13y)
+      {
+        if (!empty($c13y['correction_fct']) and
+            $c13y['is_callable'] and
+            in_array($c13y['id'], $_POST['c13y_selection']))
+        {
+          if (is_array($c13y['correction_fct_args']))
+          {
+            $args = $c13y['correction_fct_args'];
+          }
+          else
+          if (!is_null($c13y['correction_fct_args']))
+          {
+            $args = array($c13y['correction_fct_args']);
+          }
+          else
+          {
+            $args = array();
+          }
+          $this->retrieve_list[$i]['corrected'] = call_user_func_array($c13y['correction_fct'], $args);
+
+          if ($this->retrieve_list[$i]['corrected'])
+          {
+            $corrected_count += 1;
+          }
+          else
+          {
+            $not_corrected_count += 1;
+          }
+        }
+      }
+
+      if ($corrected_count > 0)
+      {
+        $page['infos'][] = l10n_dec(
+          '%d anomaly has been corrected.', '%d anomalies have been detected corrected.',
+          $corrected_count
+          );
+      }
+      if ($not_corrected_count > 0)
+      {
+        $page['errors'][] = l10n_dec(
+          '%d anomaly has not been corrected.', '%d anomalies have not been corrected.',
+          $not_corrected_count
+          );
+      }
+    }
+    else
+    {
+      if (isset($_POST['c13y_submit_ignore']) and isset($_POST['c13y_selection']))
+      {
+        $ignored_count = 0;
+
+        foreach ($this->retrieve_list as $i => $c13y)
+        {
+          if (in_array($c13y['id'], $_POST['c13y_selection']))
+          {
+            $this->build_ignore_list[] = $c13y['id'];
+            $this->retrieve_list[$i]['ignored'] = true;
+            $ignored_count += 1;
+          }
+        }
+
+        if ($ignored_count > 0)
+        {
+          $page['infos'][] = l10n_dec(
+            '%d anomaly has been ignored.', '%d anomalies have been ignored.',
+            $ignored_count
+            );
+        }
+      }
+    }
+
+    $ignore_list_changed =
+      (
+        ($ignore_list_changed) or
+        (count(array_diff($this->ignore_list, $this->build_ignore_list)) > 0) or
+        (count(array_diff($this->build_ignore_list, $this->ignore_list)) > 0)
+        );
+
+    if ($ignore_list_changed)
+    {
+      $this->update_conf($this->build_ignore_list);
+    }
+  }
+
+  /**
+   * Display anomalies list
+   *
+   * @param void
+   * @return void
+   */
+  function display()
+  {
+    global $template;
+
+    $check_automatic_correction = false;
+    $submit_automatic_correction = false;
+    $submit_ignore = false;
+
+    if (isset($this->retrieve_list) and count($this->retrieve_list) > 0)
+    {
+      $template->set_filenames(array('check_integrity' => 'check_integrity.tpl'));
+
+      foreach ($this->retrieve_list as $i => $c13y)
+      {
+        $can_select = false;
+        $c13y_display = array(
+           'id' => $c13y['id'],
+           'anomaly' => $c13y['anomaly'],
+           'show_ignore_msg' => false,
+           'show_correction_success_fct' => false,
+           'correction_error_fct' => '',
+           'show_correction_fct' => false,
+           'correction_error_fct' => '',
+           'show_correction_bad_fct' => false,
+           'correction_msg' => ''
+          );
+
+        if (isset($c13y['ignored']))
+        {
+          if ($c13y['ignored'])
+          {
+            $c13y_display['show_ignore_msg'] = true;
+          }
+          else
+          {
+            die('$c13y[\'ignored\'] cannot be false');
+          }
+        }
+        else
+        {
+          if (!empty($c13y['correction_fct']))
+          {
+            if (isset($c13y['corrected']))
+            {
+              if ($c13y['corrected'])
+              {
+                $c13y_display['show_correction_success_fct'] = true;
+              }
+              else
+              {
+                $c13y_display['correction_error_fct'] = $this->get_htlm_links_more_info();
+              }
+            }
+            else if ($c13y['is_callable'])
+            {
+              $c13y_display['show_correction_fct'] = true;
+              $template->append('c13y_do_check', $c13y['id']);
+              $submit_automatic_correction = true;
+              $can_select = true;
+            }
+            else
+            {
+              $c13y_display['show_correction_bad_fct'] = true;
+              $can_select = true;
+            }
+          }
+          else
+          {
+            $can_select = true;
+          }
+
+          if (!empty($c13y['correction_msg']) and !isset($c13y['corrected']))
+          {
+            $c13y_display['correction_msg'] = $c13y['correction_msg'];
+          }
+        }
+
+        $c13y_display['can_select'] = $can_select;
+        if ($can_select)
+        {
+          $submit_ignore = true;
+        }
+
+        $template->append('c13y_list', $c13y_display);
+      }
+
+      $template->assign('c13y_show_submit_automatic_correction', $submit_automatic_correction);
+      $template->assign('c13y_show_submit_ignore', $submit_ignore);
+
+      $template->concat('ADMIN_CONTENT', $template->parse('check_integrity', true));
+
+    }
+  }
+
+  /**
+   * Add anomaly data
+   *
+   * @param anomaly arguments
+   * @return void
+   */
+  function add_anomaly($anomaly, $correction_fct = null, $correction_fct_args = null, $correction_msg = null)
+  {
+    $id = md5($anomaly.$correction_fct.serialize($correction_fct_args).$correction_msg);
+
+    if (in_array($id, $this->ignore_list))
+    {
+      $this->build_ignore_list[] = $id;
+    }
+    else
+    {
+      $this->retrieve_list[] =
+        array(
+          'id' => $id,
+          'anomaly' => $anomaly,
+          'correction_fct' => $correction_fct,
+          'correction_fct_args' => $correction_fct_args,
+          'correction_msg' => $correction_msg,
+          'is_callable' => is_callable($correction_fct));
+    }
+  }
+
+  /**
+   * Update table config
+   *
+   * @param ignore list array
+   * @return void
+   */
+  function update_conf($conf_ignore_list = array())
+  {
+    $conf_c13y_ignore =  array();
+    $conf_c13y_ignore['version'] = PHPWG_VERSION;
+    $conf_c13y_ignore['list'] = $conf_ignore_list;
+    $query = 'update '.CONFIG_TABLE.' set value =\''.serialize($conf_c13y_ignore).'\'where param = \'c13y_ignore\';';
+    pwg_query($query);
+  }
+
+  /**
+   * Apply maintenance
+   *
+   * @param void
+   * @return void
+   */
+  function maintenance()
+  {
+    $this->update_conf();
+  }
+
+  /**
+   * Returns links more informations
+   *
+   * @param void
+   * @return html links
+   */
+  function get_htlm_links_more_info()
+  {
+    $pwg_links = pwg_URL();
+    $link_fmt = '<a href="%s" onclick="window.open(this.href, \'\'); return false;">%s</a>';
+    return
+      sprintf
+      (
+        l10n('Go to %s or %s for more informations'),
+        sprintf($link_fmt, $pwg_links['FORUM'], l10n('the forum')),
+        sprintf($link_fmt, $pwg_links['WIKI'], l10n('the wiki'))
+      );
+  }
+
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/configuration_sizes_process.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/configuration_sizes_process.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/configuration_sizes_process.inc.php	(revision 25596)
@@ -0,0 +1,280 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+$errors = array();
+
+// original resize
+$original_fields = array(
+  'original_resize',
+  'original_resize_maxwidth',
+  'original_resize_maxheight',
+  'original_resize_quality',
+  );
+
+$updates = array();
+
+foreach ($original_fields as $field)
+{
+  $value = !empty($_POST[$field]) ? $_POST[$field] : null;
+  $updates[$field] = $value;
+}
+
+save_upload_form_config($updates, $page['errors'], $errors);
+
+if ($_POST['resize_quality'] < 50 or $_POST['resize_quality'] > 98)
+{
+  $errors['resize_quality'] = '[50..98]';
+}
+
+$pderivatives = $_POST['d'];
+
+// step 1 - sanitize HTML input
+foreach ($pderivatives as $type => &$pderivative)
+{
+  if ($pderivative['must_square'] = ($type==IMG_SQUARE ? true : false))
+  {
+    $pderivative['h'] = $pderivative['w'];
+    $pderivative['minh'] = $pderivative['minw'] = $pderivative['w'];
+    $pderivative['crop'] = 100;
+  }
+  $pderivative['must_enable'] = ($type==IMG_SQUARE || $type==IMG_THUMB)? true : false;
+  $pderivative['enabled'] = isset($pderivative['enabled']) || $pderivative['must_enable'] ? true : false;
+
+  if (isset($pderivative['crop']))
+  {
+    $pderivative['crop'] = 100;
+    $pderivative['minw'] = $pderivative['w'];
+    $pderivative['minh'] = $pderivative['h'];
+  }
+  else
+  {
+    $pderivative['crop'] = 0;
+    $pderivative['minw'] = null;
+    $pderivative['minh'] = null;
+  }
+}
+unset($pderivative);
+
+// step 2 - check validity
+$prev_w = $prev_h = 0;
+foreach(ImageStdParams::get_all_types() as $type)
+{
+  $pderivative = $pderivatives[$type];
+  if (!$pderivative['enabled'])
+  {
+    continue;
+  }
+
+  if ($type == IMG_THUMB)
+  {
+    $w = intval($pderivative['w']);
+    if ($w <= 0)
+    {
+      $errors[$type]['w'] = '>0';
+    }
+
+    $h = intval($pderivative['h']);
+    if ($h <= 0)
+    {
+      $errors[$type]['h'] = '>0';
+    }
+
+    if (max($w,$h) <= $prev_w)
+    {
+      $errors[$type]['w'] = $errors[$type]['h'] = '>'.$prev_w;
+    }
+  }
+  else
+  {
+    $v = intval($pderivative['w']);
+    if ($v <= 0 or $v <= $prev_w)
+    {
+      $errors[$type]['w'] = '>'.$prev_w;
+    }
+
+    $v = intval($pderivative['h']);
+    if ($v <= 0 or $v <= $prev_h)
+    {
+      $errors[$type]['h'] = '>'.$prev_h;
+    }
+  }
+
+  if (count($errors) == 0)
+  {
+    $prev_w = intval($pderivative['w']);
+    $prev_h = intval($pderivative['h']);
+  }
+
+  $v = intval($pderivative['sharpen']);
+  if ($v<0 || $v>100)
+  {
+    $errors[$type]['sharpen'] = '[0..100]';
+  }
+}
+
+// step 3 - save data
+if (count($errors) == 0)
+{
+  $quality_changed = ImageStdParams::$quality != intval($_POST['resize_quality']);
+  ImageStdParams::$quality = intval($_POST['resize_quality']);
+
+  $enabled = ImageStdParams::get_defined_type_map();
+  $disabled = @unserialize( @$conf['disabled_derivatives'] );
+  if ($disabled === false)
+  {
+    $disabled = array();
+  }
+  $changed_types = array();
+
+  foreach (ImageStdParams::get_all_types() as $type)
+  {
+    $pderivative = $pderivatives[$type];
+
+    if ($pderivative['enabled'])
+    {
+      $new_params = new DerivativeParams(
+        new SizingParams(
+          array(intval($pderivative['w']), intval($pderivative['h'])),
+          round($pderivative['crop'] / 100, 2),
+          array(intval($pderivative['minw']), intval($pderivative['minh']))
+          )
+        );
+      $new_params->sharpen = intval($pderivative['sharpen']);
+
+      ImageStdParams::apply_global($new_params);
+
+      if (isset($enabled[$type]))
+      {
+        $old_params = $enabled[$type];
+        $same = true;
+        if (!size_equals($old_params->sizing->ideal_size, $new_params->sizing->ideal_size)
+            or $old_params->sizing->max_crop != $new_params->sizing->max_crop)
+        {
+          $same = false;
+        }
+
+        if ($same
+            and $new_params->sizing->max_crop != 0
+            and !size_equals($old_params->sizing->min_size, $new_params->sizing->min_size))
+        {
+          $same = false;
+        }
+
+        if ($quality_changed
+            || $new_params->sharpen != $old_params->sharpen)
+        {
+          $same = false;
+        }
+
+        if (!$same)
+        {
+          $new_params->last_mod_time = time();
+          $changed_types[] = $type;
+        }
+        else
+        {
+          $new_params->last_mod_time = $old_params->last_mod_time;
+        }
+        $enabled[$type] = $new_params;
+      }
+      else
+      {// now enabled, before was disabled
+        $enabled[$type] = $new_params;
+        unset($disabled[$type]);
+      }
+    }
+    else
+    {// disabled
+      if (isset($enabled[$type]))
+      {// now disabled, before was enabled
+        $changed_types[] = $type;
+        $disabled[$type] = $enabled[$type];
+        unset($enabled[$type]);
+      }
+    }
+  }
+
+  $enabled_by = array(); // keys ordered by all types
+  foreach(ImageStdParams::get_all_types() as $type)
+  {
+    if (isset($enabled[$type]))
+    {
+      $enabled_by[$type] = $enabled[$type];
+    }
+  }
+
+  foreach( array_keys(ImageStdParams::$custom) as $custom)
+  {
+    if (isset($_POST['delete_custom_derivative_'.$custom]))
+    {
+      $changed_types[] = $custom;
+      unset(ImageStdParams::$custom[$custom]);
+    }
+  }
+
+  ImageStdParams::set_and_save($enabled_by);
+  if (count($disabled) == 0)
+  {
+    $query='DELETE FROM '.CONFIG_TABLE.' WHERE param = \'disabled_derivatives\'';
+    pwg_query($query);
+  }
+  else
+  {
+    conf_update_param('disabled_derivatives', addslashes(serialize($disabled)) );
+  }
+  $conf['disabled_derivatives'] = serialize($disabled);
+
+  if (count($changed_types))
+  {
+    clear_derivative_cache($changed_types);
+  }
+
+  $page['infos'][] = l10n('Your configuration settings are saved');
+}
+else
+{
+  foreach ($original_fields as $field)
+  {
+    if (isset($_POST[$field]))
+    {
+      $template->append(
+        'sizes',
+        array(
+          $field => $_POST[$field]
+          ),
+        true
+        );
+    }
+  }
+
+  $template->assign('derivatives', $pderivatives);
+  $template->assign('ferrors', $errors);
+  $template->assign('resize_quality', $_POST['resize_quality']);
+  $page['sizes_loaded_in_tpl'] = true;
+}
+?>
Index: /tags/2.6.0RC1/admin/include/configuration_watermark_process.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/configuration_watermark_process.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/configuration_watermark_process.inc.php	(revision 25596)
@@ -0,0 +1,184 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+$errors = array();
+$pwatermark = $_POST['w'];
+
+// step 0 - manage upload if any
+if (isset($_FILES['watermarkImage']) and !empty($_FILES['watermarkImage']['tmp_name']))
+{
+  list($width, $height, $type) = getimagesize($_FILES['watermarkImage']['tmp_name']);
+  if (IMAGETYPE_PNG != $type)
+  {
+    $errors['watermarkImage'] = sprintf(
+      l10n('Allowed file types: %s.'),
+      'PNG'
+      );
+  }
+  else
+  {
+    $upload_dir = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks';
+    if (mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
+    {
+      $new_name = get_filename_wo_extension($_FILES['watermarkImage']['name']).'.png';
+      $file_path = $upload_dir.'/'.$new_name;
+
+      if (move_uploaded_file($_FILES['watermarkImage']['tmp_name'], $file_path))
+      {
+        $pwatermark['file'] = substr($file_path, strlen(PHPWG_ROOT_PATH));
+      }
+      else
+      {
+        $page['errors'][] = $errors['watermarkImage'] = "$file_path " .l10n('no write access');
+      }
+    }
+    else
+    {
+      $page['errors'][] = $errors['watermarkImage'] = sprintf( l10n('Add write access to the "%s" directory'), $upload_dir);
+    }
+  }
+}
+
+// step 1 - sanitize HTML input
+switch ($pwatermark['position'])
+{
+  case 'topleft':
+  {
+    $pwatermark['xpos'] = 0;
+    $pwatermark['ypos'] = 0;
+    break;
+  }
+  case 'topright':
+  {
+    $pwatermark['xpos'] = 100;
+    $pwatermark['ypos'] = 0;
+    break;
+  }
+  case 'middle':
+  {
+    $pwatermark['xpos'] = 50;
+    $pwatermark['ypos'] = 50;
+    break;
+  }
+  case 'bottomleft':
+  {
+    $pwatermark['xpos'] = 0;
+    $pwatermark['ypos'] = 100;
+    break;
+  }
+  case 'bottomright':
+  {
+    $pwatermark['xpos'] = 100;
+    $pwatermark['ypos'] = 100;
+    break;
+  }
+}
+
+// step 2 - check validity
+$v = intval($pwatermark['xpos']);
+if ($v < 0 or $v > 100)
+{
+  $errors['watermark']['xpos'] = '[0..100]';
+}
+
+$v = intval($pwatermark['ypos']);
+if ($v < 0 or $v > 100)
+{
+  $errors['watermark']['ypos'] = '[0..100]';
+}
+
+$v = intval($pwatermark['opacity']);
+if ($v <= 0 or $v > 100)
+{
+  $errors['watermark']['opacity'] = '(0..100]';
+}
+
+// step 3 - save data
+if (count($errors) == 0)
+{
+  $watermark = new WatermarkParams();
+  $watermark->file = $pwatermark['file'];
+  $watermark->xpos = intval($pwatermark['xpos']);
+  $watermark->ypos = intval($pwatermark['ypos']);
+  $watermark->xrepeat = intval($pwatermark['xrepeat']);
+  $watermark->opacity = intval($pwatermark['opacity']);
+  $watermark->min_size = array(intval($pwatermark['minw']),intval($pwatermark['minh']));
+
+  $old_watermark = ImageStdParams::get_watermark();
+  $watermark_changed =
+    $watermark->file != $old_watermark->file
+    || $watermark->xpos != $old_watermark->xpos
+    || $watermark->ypos != $old_watermark->ypos
+    || $watermark->xrepeat != $old_watermark->xrepeat
+    || $watermark->opacity != $old_watermark->opacity;
+
+  // save the new watermark configuration
+  ImageStdParams::set_watermark($watermark);
+
+  // do we have to regenerate the derivatives (and which types)?
+  $changed_types = array();
+
+  foreach (ImageStdParams::get_defined_type_map() as $type => $params)
+  {
+    $old_use_watermark = $params->use_watermark;
+    ImageStdParams::apply_global($params);
+
+    $changed = $params->use_watermark != $old_use_watermark;
+    if (!$changed and $params->use_watermark)
+    {
+      $changed = $watermark_changed;
+    }
+    if (!$changed and $params->use_watermark)
+    {
+      // if thresholds change and before/after the threshold is lower than the corresponding derivative side -> some derivatives might switch the watermark
+      $changed |= $watermark->min_size[0]!=$old_watermark->min_size[0] and ($watermark->min_size[0]<$params->max_width() or $old_watermark->min_size[0]<$params->max_width());
+      $changed |= $watermark->min_size[1]!=$old_watermark->min_size[1] and ($watermark->min_size[1]<$params->max_height() or $old_watermark->min_size[1]<$params->max_height());
+    }
+
+    if ($changed)
+    {
+      $params->last_mod_time = time();
+      $changed_types[] = $type;
+    }
+  }
+
+  ImageStdParams::save();
+
+  if (count($changed_types))
+  {
+    clear_derivative_cache($changed_types);
+  }
+
+  $page['infos'][] = l10n('Your configuration settings are saved');
+}
+else
+{
+  $template->assign('watermark', $pwatermark);
+  $template->assign('ferrors', $errors);
+}
+?>
Index: /tags/2.6.0RC1/admin/include/functions.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions.php	(revision 25596)
@@ -0,0 +1,2529 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include(PHPWG_ROOT_PATH.'admin/include/functions_metadata.php');
+
+// The function delete_site deletes a site and call the function
+// delete_categories for each primary category of the site
+function delete_site( $id )
+{
+  // destruction of the categories of the site
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE site_id = '.$id.'
+;';
+  $category_ids = array_from_query($query, 'id');
+  delete_categories($category_ids);
+
+  // destruction of the site
+  $query = '
+DELETE FROM '.SITES_TABLE.'
+  WHERE id = '.$id.'
+;';
+  pwg_query($query);
+}
+
+
+// The function delete_categories deletes the categories identified by the
+// (numeric) key of the array $ids. It also deletes (in the database) :
+//    - all the elements physically linked to the category (delete_elements, see further)
+//    - all the links between elements and this category
+//    - all the restrictions linked to the category
+// The function works recursively.
+//
+// the $photo_deletion_mode is for photos virtually linked to the categorty
+//   * no_delete : delete no photo, may create orphans
+//   * delete_orphans : delete photos that are no longer linked to any category
+//   * force_delete : delete photos even if they are linked to another category
+function delete_categories($ids, $photo_deletion_mode='no_delete')
+{
+  if (count($ids) == 0)
+  {
+    return;
+  }
+
+  // add sub-category ids to the given ids : if a category is deleted, all
+  // sub-categories must be so
+  $ids = get_subcat_ids($ids);
+
+  // destruction of all photos physically linked to the category
+  $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+  WHERE storage_category_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  $element_ids = array_from_query($query, 'id');
+  delete_elements($element_ids);
+
+  // now, should we delete photos that are virtually linked to the category?
+  if ('delete_orphans' == $photo_deletion_mode or 'force_delete' == $photo_deletion_mode)
+  {
+    $query = '
+SELECT
+    DISTINCT(image_id)
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id IN ('.implode(',', $ids).')
+;';
+    $image_ids_linked = array_from_query($query, 'image_id');
+
+    if (count($image_ids_linked) > 0)
+    {
+      if ('delete_orphans' == $photo_deletion_mode)
+      {
+        $query = '
+SELECT
+    DISTINCT(image_id)
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id IN ('.implode(',', $image_ids_linked).')
+    AND category_id NOT IN ('.implode(',', $ids).')
+;';
+        $image_ids_not_orphans = array_from_query($query, 'image_id');
+        $image_ids_to_delete = array_diff($image_ids_linked, $image_ids_not_orphans);
+      }
+
+      if ('force_delete' == $photo_deletion_mode)
+      {
+        $image_ids_to_delete = $image_ids_linked;
+      }
+
+      delete_elements($image_ids_to_delete, true);
+    }
+  }
+
+  // destruction of the links between images and this category
+  $query = '
+DELETE FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the access linked to the category
+  $query = '
+DELETE FROM '.USER_ACCESS_TABLE.'
+  WHERE cat_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  $query = '
+DELETE FROM '.GROUP_ACCESS_TABLE.'
+  WHERE cat_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the category
+  $query = '
+DELETE FROM '.CATEGORIES_TABLE.'
+  WHERE id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  $query='
+DELETE FROM '.OLD_PERMALINKS_TABLE.'
+  WHERE cat_id IN ('.implode(',',$ids).')';
+  pwg_query($query);
+
+  $query='
+DELETE FROM '.USER_CACHE_CATEGORIES_TABLE.'
+  WHERE cat_id IN ('.implode(',',$ids).')';
+  pwg_query($query);
+
+  trigger_action('delete_categories', $ids);
+}
+
+// Deletes all files (on disk) related to given image ids
+// @return image ids where files are deleted successfully
+function delete_element_files($ids)
+{
+  global $conf;
+  if (count($ids) == 0)
+  {
+    return 0;
+  }
+
+  $new_ids = array();
+
+  $query = '
+SELECT
+    id,
+    path,
+    representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (url_is_remote($row['path']))
+    {
+      continue;
+    }
+
+    $files = array();
+    $files[] = get_element_path($row);
+
+    if (!empty($row['representative_ext']))
+    {
+      $files[] = original_to_representative( $files[0], $row['representative_ext']);
+    }
+
+    $ok = true;
+    if (!isset($conf['never_delete_originals']))
+    {
+      foreach ($files as $path)
+      {
+        if (is_file($path) and !unlink($path))
+        {
+          $ok = false;
+          trigger_error('"'.$path.'" cannot be removed', E_USER_WARNING);
+          break;
+        }
+      }
+    }
+
+    if ($ok)
+    {
+      delete_element_derivatives($row);
+      $new_ids[] = $row['id'];
+    }
+    else
+    {
+      break;
+    }
+  }
+  return $new_ids;
+}
+
+// The function delete_elements deletes the elements identified by the
+// (numeric) values of the array $ids. It also deletes (in the database) :
+//    - all the comments related to elements
+//    - all the links between categories and elements
+//    - all the favorites associated to elements
+// @return number of deleted elements
+function delete_elements($ids, $physical_deletion=false)
+{
+  if (count($ids) == 0)
+  {
+    return 0;
+  }
+  trigger_action('begin_delete_elements', $ids);
+
+  if ($physical_deletion)
+  {
+    $ids = delete_element_files($ids);
+    if (count($ids)==0)
+    {
+      return 0;
+    }
+  }
+
+  // destruction of the comments on the image
+  $query = '
+DELETE FROM '.COMMENTS_TABLE.'
+  WHERE image_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the links between images and this category
+  $query = '
+DELETE FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the links between images and tags
+  $query = '
+DELETE FROM '.IMAGE_TAG_TABLE.'
+  WHERE image_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the favorites associated with the picture
+  $query = '
+DELETE FROM '.FAVORITES_TABLE.'
+  WHERE image_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the rates associated to this element
+  $query = '
+DELETE FROM '.RATE_TABLE.'
+  WHERE element_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the rates associated to this element
+  $query = '
+DELETE FROM '.CADDIE_TABLE.'
+  WHERE element_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // destruction of the image
+  $query = '
+DELETE FROM '.IMAGES_TABLE.'
+  WHERE id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  pwg_query($query);
+
+  // are the photo used as category representant?
+  $query = '
+SELECT
+    id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE representative_picture_id IN (
+'.wordwrap(implode(', ', $ids), 80, "\n").')
+;';
+  $category_ids = array_from_query($query, 'id');
+  if (count($category_ids) > 0)
+  {
+    update_category($category_ids);
+  }
+
+  trigger_action('delete_elements', $ids);
+  return count($ids);
+}
+
+// The delete_user function delete a user identified by the $user_id
+// It also deletes :
+//     - all the access linked to this user
+//     - all the links to any group
+//     - all the favorites linked to this user
+//     - calculated permissions linked to the user
+//     - all datas about notifications for the user
+function delete_user($user_id)
+{
+  global $conf;
+  $tables = array(
+    // destruction of the access linked to the user
+    USER_ACCESS_TABLE,
+    // destruction of data notification by mail for this user
+    USER_MAIL_NOTIFICATION_TABLE,
+    // destruction of data RSS notification for this user
+    USER_FEED_TABLE,
+    // deletion of calculated permissions linked to the user
+    USER_CACHE_TABLE,
+    // deletion of computed cache data linked to the user
+    USER_CACHE_CATEGORIES_TABLE,
+    // destruction of the group links for this user
+    USER_GROUP_TABLE,
+    // destruction of the favorites associated with the user
+    FAVORITES_TABLE,
+    // destruction of the caddie associated with the user
+    CADDIE_TABLE,
+    // deletion of piwigo specific informations
+    USER_INFOS_TABLE,
+    );
+
+  foreach ($tables as $table)
+  {
+    $query = '
+DELETE FROM '.$table.'
+  WHERE user_id = '.$user_id.'
+;';
+    pwg_query($query);
+  }
+
+  // destruction of the user
+  $query = '
+DELETE FROM '.SESSIONS_TABLE.'
+  WHERE data LIKE \'pwg_uid|i:'.(int)$user_id.';%\'
+;';
+  pwg_query($query);
+
+  // destruction of the user
+  $query = '
+DELETE FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['id'].' = '.$user_id.'
+;';
+  pwg_query($query);
+
+  trigger_action('delete_user', $user_id);
+}
+
+/**
+ * Deletes all tags linked to no photo
+ */
+function delete_orphan_tags()
+{
+  $orphan_tags = get_orphan_tags();
+
+  if (count($orphan_tags) > 0)
+  {
+    $orphan_tag_ids = array();
+    foreach ($orphan_tags as $tag)
+    {
+      $orphan_tag_ids[] = $tag['id'];
+    }
+
+    $query = '
+DELETE
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $orphan_tag_ids).')
+;';
+    pwg_query($query);
+  }
+}
+
+/**
+ * Get all tags (id + name) linked to no photo
+ */
+function get_orphan_tags()
+{
+  $query = '
+SELECT
+    id,
+    name
+  FROM '.TAGS_TABLE.'
+    LEFT JOIN '.IMAGE_TAG_TABLE.' ON id = tag_id
+  WHERE tag_id IS NULL
+;';
+  return array_from_query($query);
+}
+
+/**
+ * Verifies that the representative picture really exists in the db and
+ * picks up a random represantive if possible and based on config.
+ *
+ * @param mixed category id
+ * @returns void
+ */
+function update_category($ids = 'all')
+{
+  global $conf;
+
+  if ($ids=='all')
+  {
+    $where_cats = '1=1';
+  }
+  elseif ( !is_array($ids) )
+  {
+    $where_cats = '%s='.$ids;
+  }
+  else
+  {
+    if (count($ids) == 0)
+    {
+      return false;
+    }
+    $where_cats = '%s IN('.wordwrap(implode(', ', $ids), 120, "\n").')';
+  }
+
+  // find all categories where the setted representative is not possible :
+  // the picture does not exist
+  $query = '
+SELECT DISTINCT c.id
+  FROM '.CATEGORIES_TABLE.' AS c LEFT JOIN '.IMAGES_TABLE.' AS i
+    ON c.representative_picture_id = i.id
+  WHERE representative_picture_id IS NOT NULL
+    AND '.sprintf($where_cats, 'c.id').'
+    AND i.id IS NULL
+;';
+  $wrong_representant = array_from_query($query, 'id');
+
+  if (count($wrong_representant) > 0)
+  {
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET representative_picture_id = NULL
+  WHERE id IN ('.wordwrap(implode(', ', $wrong_representant), 120, "\n").')
+;';
+    pwg_query($query);
+  }
+
+  if (!$conf['allow_random_representative'])
+  {
+    // If the random representant is not allowed, we need to find
+    // categories with elements and with no representant. Those categories
+    // must be added to the list of categories to set to a random
+    // representant.
+    $query = '
+SELECT DISTINCT id
+  FROM '.CATEGORIES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.'
+    ON id = category_id
+  WHERE representative_picture_id IS NULL
+    AND '.sprintf($where_cats, 'category_id').'
+;';
+    $to_rand = array_from_query($query, 'id');
+    if (count($to_rand) > 0)
+    {
+      set_random_representant($to_rand);
+    }
+  }
+}
+
+/**
+ * check and repair images integrity
+ *
+ * TODO see delete_elements function to check all linked tables
+ */
+function images_integrity()
+{
+  $query = '
+SELECT
+    image_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    LEFT JOIN '.IMAGES_TABLE.' ON id = image_id
+  WHERE id IS NULL
+;';
+  $result = pwg_query($query);
+  $orphan_image_ids = array_from_query($query, 'image_id');
+
+  if (count($orphan_image_ids) > 0)
+  {
+    $query = '
+DELETE
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id IN ('.implode(',', $orphan_image_ids).')
+;';
+    pwg_query($query);
+  }
+}
+
+/**
+ * returns an array containing sub-directories which can be a category,
+ * recursive by default
+ *
+ * directories nammed "thumbnail", "pwg_high" or "pwg_representative" are
+ * omitted
+ *
+ * @param string $basedir
+ * @return array
+ */
+function get_fs_directories($path, $recursive = true)
+{
+  $dirs = array();
+
+  if (is_dir($path))
+  {
+    if ($contents = opendir($path))
+    {
+      while (($node = readdir($contents)) !== false)
+      {
+        if ($node != '.'
+            and $node != '..'
+            and $node != '.svn'
+            and $node != 'thumbnail'
+            and $node != 'pwg_high'
+            and $node != 'pwg_representative'
+            and is_dir($path.'/'.$node))
+        {
+          $dirs[] = $path.'/'.$node;
+          if ($recursive)
+          {
+            $dirs = array_merge($dirs, get_fs_directories($path.'/'.$node));
+          }
+        }
+      }
+      closedir($contents);
+    }
+  }
+
+  return $dirs;
+}
+
+/**
+ * order categories (update categories.rank and global_rank database fields)
+ * so that rank field are consecutive integers starting at 1 for each child
+ * @return void
+ */
+function update_global_rank()
+{
+  $query = '
+SELECT id, id_uppercat, uppercats, rank, global_rank
+  FROM '.CATEGORIES_TABLE.'
+  ORDER BY id_uppercat,rank,name';
+
+  $cat_map = array();
+
+  $current_rank = 0;
+  $current_uppercat = '';
+
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['id_uppercat'] != $current_uppercat)
+    {
+      $current_rank = 0;
+      $current_uppercat = $row['id_uppercat'];
+    }
+    ++$current_rank;
+    $cat =
+      array(
+        'rank' =>        $current_rank,
+        'rank_changed' =>$current_rank!=$row['rank'],
+        'global_rank' => $row['global_rank'],
+        'uppercats' =>   $row['uppercats'],
+        );
+    $cat_map[ $row['id'] ] = $cat;
+  }
+
+  $datas = array();
+
+  foreach( $cat_map as $id=>$cat )
+  {
+    $new_global_rank = preg_replace(
+          '/(\d+)/e',
+          "\$cat_map['$1']['rank']",
+          str_replace(',', '.', $cat['uppercats'] )
+          );
+    if ( $cat['rank_changed']
+      or $new_global_rank!=$cat['global_rank']
+      )
+    {
+      $datas[] = array(
+          'id' => $id,
+          'rank' => $cat['rank'],
+          'global_rank' => $new_global_rank,
+        );
+    }
+  }
+
+  mass_updates(
+    CATEGORIES_TABLE,
+    array(
+      'primary' => array('id'),
+      'update'  => array('rank', 'global_rank')
+      ),
+    $datas
+    );
+  return count($datas);
+}
+
+/**
+ * change the visible property on a set of categories
+ *
+ * @param array categories
+ * @param string value
+ * @return void
+ */
+function set_cat_visible($categories, $value)
+{
+  if (!in_array($value, array('true', 'false')))
+  {
+    trigger_error("set_cat_visible invalid param $value", E_USER_WARNING);
+    return false;
+  }
+
+  // unlocking a category => all its parent categories become unlocked
+  if ($value == 'true')
+  {
+    $uppercats = get_uppercat_ids($categories);
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET visible = \'true\'
+  WHERE id IN ('.implode(',', $uppercats).')';
+    pwg_query($query);
+  }
+  // locking a category   => all its child categories become locked
+  if ($value == 'false')
+  {
+    $subcats = get_subcat_ids($categories);
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET visible = \'false\'
+  WHERE id IN ('.implode(',', $subcats).')';
+    pwg_query($query);
+  }
+}
+
+/**
+ * change the status property on a set of categories : private or public
+ *
+ * @param array categories
+ * @param string value
+ * @return void
+ */
+function set_cat_status($categories, $value)
+{
+  if (!in_array($value, array('public', 'private')))
+  {
+    trigger_error("set_cat_status invalid param $value", E_USER_WARNING);
+    return false;
+  }
+
+  // make public a category => all its parent categories become public
+  if ($value == 'public')
+  {
+    $uppercats = get_uppercat_ids($categories);
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET status = \'public\'
+  WHERE id IN ('.implode(',', $uppercats).')
+;';
+    pwg_query($query);
+  }
+  // make a category private => all its child categories become private
+  if ($value == 'private')
+  {
+    $subcats = get_subcat_ids($categories);
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET status = \'private\'
+  WHERE id IN ('.implode(',', $subcats).')';
+    pwg_query($query);
+  }
+}
+
+/**
+ * returns all uppercats category ids of the given category ids
+ *
+ * @param array cat_ids
+ * @return array
+ */
+function get_uppercat_ids($cat_ids)
+{
+  if (!is_array($cat_ids) or count($cat_ids) < 1)
+  {
+    return array();
+  }
+
+  $uppercats = array();
+
+  $query = '
+SELECT uppercats
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $cat_ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $uppercats = array_merge($uppercats,
+                             explode(',', $row['uppercats']));
+  }
+  $uppercats = array_unique($uppercats);
+
+  return $uppercats;
+}
+
+/**
+ * set a new random representant to the categories
+ *
+ * @param array categories
+ */
+function set_random_representant($categories)
+{
+  $datas = array();
+  foreach ($categories as $category_id)
+  {
+    $query = '
+SELECT image_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id = '.$category_id.'
+  ORDER BY '.DB_RANDOM_FUNCTION.'()
+  LIMIT 1
+;';
+    list($representative) = pwg_db_fetch_row(pwg_query($query));
+
+    $datas[] = array(
+      'id' => $category_id,
+      'representative_picture_id' => $representative,
+      );
+  }
+
+  mass_updates(
+    CATEGORIES_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('representative_picture_id')
+      ),
+    $datas
+    );
+}
+
+/**
+ * returns the fulldir for each given category id
+ *
+ * @param array cat_ids
+ * @return array
+ */
+function get_fulldirs($cat_ids)
+{
+  if (count($cat_ids) == 0)
+  {
+    return array();
+  }
+
+  // caching directories of existing categories
+  $query = '
+SELECT id, dir
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NOT NULL
+;';
+  $cat_dirs = simple_hash_from_query($query, 'id', 'dir');
+
+  // caching galleries_url
+  $query = '
+SELECT id, galleries_url
+  FROM '.SITES_TABLE.'
+;';
+  $galleries_url = simple_hash_from_query($query, 'id', 'galleries_url');
+
+  // categories : id, site_id, uppercats
+  $query = '
+SELECT id, uppercats, site_id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NOT NULL
+    AND id IN (
+'.wordwrap(implode(', ', $cat_ids), 80, "\n").')
+;';
+  $categories = array_from_query($query);
+
+  // filling $cat_fulldirs
+  $cat_fulldirs = array();
+  foreach ($categories as $category)
+  {
+    $uppercats = str_replace(',', '/', $category['uppercats']);
+    $cat_fulldirs[$category['id']] = $galleries_url[$category['site_id']];
+    $cat_fulldirs[$category['id']].= preg_replace('/(\d+)/e',
+                                                  "\$cat_dirs['$1']",
+                                                  $uppercats);
+  }
+
+  return $cat_fulldirs;
+}
+
+/**
+ * returns an array with all file system files according to
+ * $conf['file_ext']
+ *
+ * @param string $path
+ * @param bool recursive
+ * @return array
+ */
+function get_fs($path, $recursive = true)
+{
+  global $conf;
+
+  // because isset is faster than in_array...
+  if (!isset($conf['flip_picture_ext']))
+  {
+    $conf['flip_picture_ext'] = array_flip($conf['picture_ext']);
+  }
+  if (!isset($conf['flip_file_ext']))
+  {
+    $conf['flip_file_ext'] = array_flip($conf['file_ext']);
+  }
+
+  $fs['elements'] = array();
+  $fs['thumbnails'] = array();
+  $fs['representatives'] = array();
+  $subdirs = array();
+
+  if (is_dir($path))
+  {
+    if ($contents = opendir($path))
+    {
+      while (($node = readdir($contents)) !== false)
+      {
+        if ($node == '.' or $node == '..') continue;
+
+        if (is_file($path.'/'.$node))
+        {
+          $extension = get_extension($node);
+
+//          if (in_array($extension, $conf['picture_ext']))
+          if (isset($conf['flip_picture_ext'][$extension]))
+          {
+            if (basename($path) == 'thumbnail')
+            {
+              $fs['thumbnails'][] = $path.'/'.$node;
+            }
+            else if (basename($path) == 'pwg_representative')
+            {
+              $fs['representatives'][] = $path.'/'.$node;
+            }
+            else
+            {
+              $fs['elements'][] = $path.'/'.$node;
+            }
+          }
+//          else if (in_array($extension, $conf['file_ext']))
+          else if (isset($conf['flip_file_ext'][$extension]))
+          {
+            $fs['elements'][] = $path.'/'.$node;
+          }
+        }
+        else if (is_dir($path.'/'.$node) and $node != 'pwg_high' and $recursive)
+        {
+          $subdirs[] = $node;
+        }
+      }
+    }
+    closedir($contents);
+
+    foreach ($subdirs as $subdir)
+    {
+      $tmp_fs = get_fs($path.'/'.$subdir);
+
+      $fs['elements']        = array_merge($fs['elements'],
+                                           $tmp_fs['elements']);
+
+      $fs['thumbnails']      = array_merge($fs['thumbnails'],
+                                           $tmp_fs['thumbnails']);
+
+      $fs['representatives'] = array_merge($fs['representatives'],
+                                           $tmp_fs['representatives']);
+    }
+  }
+  return $fs;
+}
+
+/**
+ * synchronize base users list and related users list
+ *
+ * compares and synchronizes base users table (USERS_TABLE) with its child
+ * tables (USER_INFOS_TABLE, USER_ACCESS, USER_CACHE, USER_GROUP) : each
+ * base user must be present in child tables, users in child tables not
+ * present in base table must be deleted.
+ *
+ * @return void
+ */
+function sync_users()
+{
+  global $conf;
+
+  $query = '
+SELECT '.$conf['user_fields']['id'].' AS id
+  FROM '.USERS_TABLE.'
+;';
+  $base_users = array_from_query($query, 'id');
+
+  $query = '
+SELECT user_id
+  FROM '.USER_INFOS_TABLE.'
+;';
+  $infos_users = array_from_query($query, 'user_id');
+
+  // users present in $base_users and not in $infos_users must be added
+  $to_create = array_diff($base_users, $infos_users);
+
+  if (count($to_create) > 0)
+  {
+    create_user_infos($to_create);
+  }
+
+  // users present in user related tables must be present in the base user
+  // table
+  $tables = array(
+    USER_MAIL_NOTIFICATION_TABLE,
+    USER_FEED_TABLE,
+    USER_INFOS_TABLE,
+    USER_ACCESS_TABLE,
+    USER_CACHE_TABLE,
+    USER_CACHE_CATEGORIES_TABLE,
+    USER_GROUP_TABLE
+    );
+
+  foreach ($tables as $table)
+  {
+    $query = '
+SELECT DISTINCT user_id
+  FROM '.$table.'
+;';
+    $to_delete = array_diff(
+      array_from_query($query, 'user_id'),
+      $base_users
+      );
+
+    if (count($to_delete) > 0)
+    {
+      $query = '
+DELETE
+  FROM '.$table.'
+  WHERE user_id in ('.implode(',', $to_delete).')
+;';
+      pwg_query($query);
+    }
+  }
+}
+
+/**
+ * updates categories.uppercats field based on categories.id +
+ * categories.id_uppercat
+ *
+ * @return void
+ */
+function update_uppercats()
+{
+  $query = '
+SELECT id, id_uppercat, uppercats
+  FROM '.CATEGORIES_TABLE.'
+;';
+  $cat_map = hash_from_query($query, 'id');
+
+  $datas = array();
+  foreach ($cat_map as $id => $cat)
+  {
+    $upper_list = array();
+
+    $uppercat = $id;
+    while ($uppercat)
+    {
+      $upper_list[] = $uppercat;
+      $uppercat = $cat_map[$uppercat]['id_uppercat'];
+    }
+
+    $new_uppercats = implode(',', array_reverse($upper_list));
+    if ($new_uppercats != $cat['uppercats'])
+    {
+      $datas[] = array(
+        'id' => $id,
+        'uppercats' => $new_uppercats
+        );
+    }
+  }
+  $fields = array('primary' => array('id'), 'update' => array('uppercats'));
+  mass_updates(CATEGORIES_TABLE, $fields, $datas);
+}
+
+/**
+ * update images.path field
+ *
+ * @return void
+ */
+function update_path()
+{
+  $query = '
+SELECT DISTINCT(storage_category_id)
+  FROM '.IMAGES_TABLE.'
+  WHERE storage_category_id IS NOT NULL
+;';
+  $cat_ids = array_from_query($query, 'storage_category_id');
+  $fulldirs = get_fulldirs($cat_ids);
+
+  foreach ($cat_ids as $cat_id)
+  {
+    $query = '
+UPDATE '.IMAGES_TABLE.'
+  SET path = '.pwg_db_concat(array("'".$fulldirs[$cat_id]."/'",'file')).'
+  WHERE storage_category_id = '.$cat_id.'
+;';
+    pwg_query($query);
+  }
+}
+
+/**
+ * change the parent category of the given categories. The categories are
+ * supposed virtual.
+ *
+ * @param array category identifiers
+ * @param int parent category identifier
+ * @return void
+ */
+function move_categories($category_ids, $new_parent = -1)
+{
+  global $page;
+
+  if (count($category_ids) == 0)
+  {
+    return;
+  }
+
+  $new_parent = $new_parent < 1 ? 'NULL' : $new_parent;
+
+  $categories = array();
+
+  $query = '
+SELECT id, id_uppercat, status, uppercats
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $category_ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $categories[$row['id']] =
+      array(
+        'parent' => empty($row['id_uppercat']) ? 'NULL' : $row['id_uppercat'],
+        'status' => $row['status'],
+        'uppercats' => $row['uppercats']
+        );
+  }
+
+  // is the movement possible? The movement is impossible if you try to move
+  // a category in a sub-category or itself
+  if ('NULL' != $new_parent)
+  {
+    $query = '
+SELECT uppercats
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$new_parent.'
+;';
+    list($new_parent_uppercats) = pwg_db_fetch_row(pwg_query($query));
+
+    foreach ($categories as $category)
+    {
+      // technically, you can't move a category with uppercats 12,125,13,14
+      // into a new parent category with uppercats 12,125,13,14,24
+      if (preg_match('/^'.$category['uppercats'].'(,|$)/', $new_parent_uppercats))
+      {
+        $page['errors'][] = l10n('You cannot move an album in its own sub album');
+        return;
+      }
+    }
+  }
+
+  $tables =
+    array(
+      USER_ACCESS_TABLE => 'user_id',
+      GROUP_ACCESS_TABLE => 'group_id'
+      );
+
+  $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET id_uppercat = '.$new_parent.'
+  WHERE id IN ('.implode(',', $category_ids).')
+;';
+  pwg_query($query);
+
+  update_uppercats();
+  update_global_rank();
+
+  // status and related permissions management
+  if ('NULL' == $new_parent)
+  {
+    $parent_status = 'public';
+  }
+  else
+  {
+    $query = '
+SELECT status
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$new_parent.'
+;';
+    list($parent_status) = pwg_db_fetch_row(pwg_query($query));
+  }
+
+  if ('private' == $parent_status)
+  {
+    foreach ($categories as $cat_id => $category)
+    {
+      if ('public' == $category['status'])
+      {
+        set_cat_status(array($cat_id), 'private');
+      }
+      
+      $subcats = get_subcat_ids(array($cat_id));
+
+      foreach ($tables as $table => $field)
+      {
+        $query = '
+SELECT '.$field.'
+  FROM '.$table.'
+  WHERE cat_id = '.$cat_id.'
+;';
+        $category_access = array_from_query($query, $field);
+
+        $query = '
+SELECT '.$field.'
+  FROM '.$table.'
+  WHERE cat_id = '.$new_parent.'
+;';
+        $parent_access = array_from_query($query, $field);
+
+        $to_delete = array_diff($category_access, $parent_access);
+
+        if (count($to_delete) > 0)
+        {
+          $query = '
+DELETE FROM '.$table.'
+  WHERE '.$field.' IN ('.implode(',', $to_delete).')
+    AND cat_id IN ('.implode(',', $subcats).')
+;';
+          pwg_query($query);
+        }
+      }
+    }
+  }
+
+  $page['infos'][] = l10n_dec(
+    '%d album moved', '%d albums moved',
+    count($categories)
+    );
+}
+
+/**
+ * create a virtual category
+ *
+ * @param string category name
+ * @param int parent category id
+ * @return array with ('info' and 'id') or ('error') key
+ */
+function create_virtual_category($category_name, $parent_id=null, $options=array())
+{
+  global $conf, $user;
+
+  // is the given category name only containing blank spaces ?
+  if (preg_match('/^\s*$/', $category_name))
+  {
+    return array('error' => l10n('The name of an album must not be empty'));
+  }
+
+  $insert = array(
+    'name' => $category_name,
+    'rank' => 0,
+    'global_rank' => 0,
+    );
+
+  // is the album commentable?
+  if (isset($options['commentable']) and is_bool($options['commentable']))
+  {
+    $insert['commentable'] = $options['commentable'];
+  }
+  else
+  {
+    $insert['commentable'] = $conf['newcat_default_commentable'];
+  }
+  $insert['commentable'] = boolean_to_string($insert['commentable']);
+
+  // is the album temporarily locked? (only visible by administrators,
+  // whatever permissions) (may be overwritten if parent album is not
+  // visible)
+  if (isset($options['visible']) and is_bool($options['visible']))
+  {
+    $insert['visible'] = $options['visible'];
+  }
+  else
+  {
+    $insert['visible'] = $conf['newcat_default_visible'];
+  }
+  $insert['visible'] = boolean_to_string($insert['visible']);
+
+  // is the album private? (may be overwritten if parent album is private)
+  if (isset($options['status']) and 'private' == $options['status'])
+  {
+    $insert['status'] = 'private';
+  }
+  else
+  {
+    $insert['status'] = $conf['newcat_default_status'];
+  }
+
+  // any description for this album?
+  if (isset($options['comment']))
+  {
+    $insert['comment'] = $conf['allow_html_descriptions'] ? $options['comment'] : strip_tags($options['comment']);
+  }
+
+  if (!empty($parent_id) and is_numeric($parent_id))
+  {
+    $query = '
+SELECT id, uppercats, global_rank, visible, status
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$parent_id.'
+;';
+    $parent = pwg_db_fetch_assoc(pwg_query($query));
+
+    $insert['id_uppercat'] = $parent['id'];
+    $insert['global_rank'] = $parent['global_rank'].'.'.$insert['rank'];
+
+    // at creation, must a category be visible or not ? Warning : if the
+    // parent category is invisible, the category is automatically create
+    // invisible. (invisible = locked)
+    if ('false' == $parent['visible'])
+    {
+      $insert['visible'] = 'false';
+    }
+
+    // at creation, must a category be public or private ? Warning : if the
+    // parent category is private, the category is automatically create
+    // private.
+    if ('private' == $parent['status'])
+    {
+      $insert['status'] = 'private';
+    }
+
+    $uppercats_prefix = $parent['uppercats'].',';
+  }
+  else
+  {
+    $uppercats_prefix = '';
+  }
+
+  // we have then to add the virtual category
+  single_insert(CATEGORIES_TABLE, $insert);
+  $inserted_id = pwg_db_insert_id(CATEGORIES_TABLE);
+
+  single_update(
+    CATEGORIES_TABLE,
+    array('uppercats' => $uppercats_prefix.$inserted_id),
+    array('id' => $inserted_id)
+    );
+
+  update_global_rank();
+
+  if ('private' == $insert['status'] and !empty($insert['id_uppercat']) and ((isset($options['inherit']) and $options['inherit']) or $conf['inheritance_by_default']) )
+  {
+    $query = '
+      SELECT group_id
+      FROM '.GROUP_ACCESS_TABLE.'
+      WHERE cat_id = '.$insert['id_uppercat'].'
+    ;';
+    $granted_grps =  array_from_query($query, 'group_id');
+    $inserts = array();
+    foreach ($granted_grps as $granted_grp)
+    {
+      $inserts[] = array(
+        'group_id' => $granted_grp,
+        'cat_id' => $inserted_id
+        );
+    }
+    mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $inserts);
+
+    $query = '
+      SELECT user_id
+      FROM '.USER_ACCESS_TABLE.'
+      WHERE cat_id = '.$insert['id_uppercat'].'
+    ;';
+    $granted_users =  array_from_query($query, 'user_id');
+    add_permission_on_category($inserted_id, array_unique(array_merge(get_admins(), array($user['id']), $granted_users)));
+  }
+  else if ('private' == $insert['status'])
+  {
+    add_permission_on_category($inserted_id, array_unique(array_merge(get_admins(), array($user['id']))));
+  }
+
+  return array(
+    'info' => l10n('Virtual album added'),
+    'id'   => $inserted_id,
+    );
+}
+
+/**
+ * Set tags to an image. Warning: given tags are all tags associated to the
+ * image, not additionnal tags.
+ *
+ * @param array tag ids
+ * @param int image id
+ * @return void
+ */
+function set_tags($tags, $image_id)
+{
+  set_tags_of( array($image_id=>$tags) );
+}
+
+/**
+ * Add new tags to a set of images.
+ *
+ * @param array tag ids
+ * @param array image ids
+ * @return void
+ */
+function add_tags($tags, $images)
+{
+  if (count($tags) == 0 or count($images) == 0)
+  {
+    return;
+  }
+
+  // we can't insert twice the same {image_id,tag_id} so we must first
+  // delete lines we'll insert later
+  $query = '
+DELETE
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE image_id IN ('.implode(',', $images).')
+    AND tag_id IN ('.implode(',', $tags).')
+;';
+  pwg_query($query);
+
+  $inserts = array();
+  foreach ($images as $image_id)
+  {
+    foreach ( array_unique($tags) as $tag_id)
+    {
+      $inserts[] = array(
+          'image_id' => $image_id,
+          'tag_id' => $tag_id,
+        );
+    }
+  }
+  mass_inserts(
+    IMAGE_TAG_TABLE,
+    array_keys($inserts[0]),
+    $inserts
+    );
+  invalidate_user_cache_nb_tags();
+}
+
+/**
+ *
+ */
+function delete_tags($tag_ids)
+{
+  if (is_numeric($tag_ids))
+  {
+    $tag_ids = array($tag_ids);
+  }
+
+  if (!is_array($tag_ids))
+  {
+    return false;
+  }
+
+  $query = '
+DELETE
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE tag_id IN ('.implode(',', $tag_ids).')
+;';
+  pwg_query($query);
+
+  $query = '
+DELETE
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $tag_ids).')
+;';
+  pwg_query($query);
+
+  invalidate_user_cache_nb_tags();
+}
+
+function tag_id_from_tag_name($tag_name)
+{
+  global $page;
+
+  $tag_name = trim($tag_name);
+  if (isset($page['tag_id_from_tag_name_cache'][$tag_name]))
+  {
+    return $page['tag_id_from_tag_name_cache'][$tag_name];
+  }
+
+  // search existing by exact name
+  $query = '
+SELECT id
+  FROM '.TAGS_TABLE.'
+  WHERE name = \''.$tag_name.'\'
+;';
+  if (count($existing_tags = array_from_query($query, 'id')) == 0)
+  {
+    // search existing by case insensitive name
+    $query = '
+SELECT id
+  FROM '.TAGS_TABLE.'
+  WHERE CONVERT(name, CHAR) = \''.$tag_name.'\'
+;';
+    if (count($existing_tags = array_from_query($query, 'id')) == 0)
+    {
+      $url_name = trigger_event('render_tag_url', $tag_name);
+      // search existing by url name
+      $query = '
+SELECT id
+  FROM '.TAGS_TABLE.'
+  WHERE url_name = \''.$url_name.'\'
+;';
+      if (count($existing_tags = array_from_query($query, 'id')) == 0)
+      {
+        mass_inserts(
+          TAGS_TABLE,
+          array('name', 'url_name'),
+          array(
+            array(
+              'name' => $tag_name,
+              'url_name' => $url_name,
+              )
+            )
+          );
+        $page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE);
+        return $page['tag_id_from_tag_name_cache'][$tag_name];
+      }
+    }
+  }
+
+  $page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0];
+  return $page['tag_id_from_tag_name_cache'][$tag_name];
+}
+
+function set_tags_of($tags_of)
+{
+  if (count($tags_of) > 0)
+  {
+    $query = '
+DELETE
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE image_id IN ('.implode(',', array_keys($tags_of)).')
+;';
+    pwg_query($query);
+
+    $inserts = array();
+
+    foreach ($tags_of as $image_id => $tag_ids)
+    {
+      foreach (array_unique($tag_ids) as $tag_id)
+      {
+        $inserts[] = array(
+            'image_id' => $image_id,
+            'tag_id' => $tag_id,
+          );
+      }
+    }
+
+    if (count($inserts))
+    {
+      mass_inserts(
+        IMAGE_TAG_TABLE,
+        array_keys($inserts[0]),
+        $inserts
+        );
+    }
+
+    invalidate_user_cache_nb_tags();
+  }
+}
+
+/**
+ * Associate a list of images to a list of categories.
+ *
+ * The function will not duplicate links and will preserve ranks
+ *
+ * @param array images
+ * @param array categories
+ * @return void
+ */
+function associate_images_to_categories($images, $categories)
+{
+  if (count($images) == 0
+      or count($categories) == 0)
+  {
+    return false;
+  }
+
+  // get existing associations
+  $query = '
+SELECT
+    image_id,
+    category_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id IN ('.implode(',', $images).')
+    AND category_id IN ('.implode(',', $categories).')
+;';
+  $result = pwg_query($query);
+
+  $existing = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $existing[ $row['category_id'] ][] = $row['image_id'];
+  }
+
+  // get max rank of each categories
+  $query = '
+SELECT
+    category_id,
+    MAX(rank) AS max_rank
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE rank IS NOT NULL
+    AND category_id IN ('.implode(',', $categories).')
+  GROUP BY category_id
+;';
+
+  $current_rank_of = simple_hash_from_query(
+    $query,
+    'category_id',
+    'max_rank'
+    );
+
+  // associate only not already associated images
+  $inserts = array();
+  foreach ($categories as $category_id)
+  {
+    if (!isset($current_rank_of[$category_id]))
+    {
+      $current_rank_of[$category_id] = 0;
+    }
+    if (!isset($existing[$category_id]))
+    {
+      $existing[$category_id] = array();
+    }
+
+    foreach ($images as $image_id)
+    {
+      if (!in_array($image_id, $existing[$category_id]))
+      {
+        $rank = ++$current_rank_of[$category_id];
+
+        $inserts[] = array(
+          'image_id' => $image_id,
+          'category_id' => $category_id,
+          'rank' => $rank,
+          );
+      }
+    }
+  }
+
+  if (count($inserts))
+  {
+    mass_inserts(
+      IMAGE_CATEGORY_TABLE,
+      array_keys($inserts[0]),
+      $inserts
+      );
+
+    update_category($categories);
+  }
+}
+
+/**
+ * Dissociate images from all old categories except their storage category and
+ * associate to new categories.
+ *
+ * This function will preserve ranks
+ *
+ * @param array images
+ * @param array categories
+ * @return void
+ */
+function move_images_to_categories($images, $categories)
+{
+  if (count($images) == 0)
+  {
+    return false;
+  }
+
+  // let's first break links with all old albums but their "storage album"
+  $query = '
+DELETE '.IMAGE_CATEGORY_TABLE.'.*
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    JOIN '.IMAGES_TABLE.' ON image_id=id
+  WHERE id IN ('.implode(',', $images).')
+';
+
+  if (is_array($categories) and count($categories) > 0)
+  {
+    $query.= '
+    AND category_id NOT IN ('.implode(',', $categories).')
+';
+  }
+
+  $query.= '
+    AND (storage_category_id IS NULL OR storage_category_id != category_id)
+;';
+  pwg_query($query);
+
+  if (is_array($categories) and count($categories) > 0)
+  {
+    associate_images_to_categories($images, $categories);
+  }
+}
+
+/**
+ * Associate images associated to a list of source categories to a list of
+ * destination categories.
+ *
+ * @param array sources
+ * @param array destinations
+ * @return void
+ */
+function associate_categories_to_categories($sources, $destinations)
+{
+  if (count($sources) == 0)
+  {
+    return false;
+  }
+
+  $query = '
+SELECT image_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id IN ('.implode(',', $sources).')
+;';
+  $images = array_from_query($query, 'image_id');
+
+  associate_images_to_categories($images, $destinations);
+}
+
+/**
+ * Refer main Piwigo URLs (currently PHPWG_DOMAIN domain)
+ *
+ * @param void
+ * @return array like $conf['links']
+ */
+function pwg_URL()
+{
+  $urls = array(
+    'HOME'       => PHPWG_URL,
+    'WIKI'       => PHPWG_URL.'/doc',
+    'DEMO'       => PHPWG_URL.'/demo',
+    'FORUM'      => PHPWG_URL.'/forum',
+    'BUGS'       => PHPWG_URL.'/bugs',
+    'EXTENSIONS' => PHPWG_URL.'/ext',
+    );
+  return $urls;
+}
+
+/**
+ * Invalidates cahed data (permissions and category counts) for all users.
+ */
+function invalidate_user_cache($full = true)
+{
+  if ($full)
+  {
+    $query = '
+TRUNCATE TABLE '.USER_CACHE_CATEGORIES_TABLE.';';
+    pwg_query($query);
+    $query = '
+TRUNCATE TABLE '.USER_CACHE_TABLE.';';
+    pwg_query($query);
+  }
+  else
+  {
+    $query = '
+UPDATE '.USER_CACHE_TABLE.'
+  SET need_update = \'true\';';
+    pwg_query($query);
+  }
+  trigger_action('invalidate_user_cache', $full);
+}
+
+
+function invalidate_user_cache_nb_tags()
+{
+  global $user;
+  unset($user['nb_available_tags']);
+  $query = '
+UPDATE '.USER_CACHE_TABLE.'
+  SET nb_available_tags = NULL';
+  pwg_query($query);
+}
+
+/**
+ * adds the caracter set to a create table sql query.
+ * all CREATE TABLE queries must call this function
+ * @param string query - the sql query
+ */
+function create_table_add_character_set($query)
+{
+  defined('DB_CHARSET') or fatal_error('create_table_add_character_set DB_CHARSET undefined');
+  if ('DB_CHARSET'!='')
+  {
+    if ( version_compare(pwg_get_db_version(), '4.1.0', '<') )
+    {
+      return $query;
+    }
+    $charset_collate = " DEFAULT CHARACTER SET ".DB_CHARSET;
+    if (DB_COLLATE!='')
+    {
+      $charset_collate .= " COLLATE ".DB_COLLATE;
+    }
+    if ( is_array($query) )
+    {
+      foreach( $query as $id=>$q)
+      {
+        $q=trim($q);
+        $q=trim($q, ';');
+        if (preg_match('/^CREATE\s+TABLE/i',$q))
+        {
+          $q.=$charset_collate;
+        }
+        $q .= ';';
+        $query[$id] = $q;
+      }
+    }
+    else
+    {
+      $query=trim($query);
+      $query=trim($query, ';');
+      if (preg_match('/^CREATE\s+TABLE/i',$query))
+      {
+        $query.=$charset_collate;
+      }
+      $query .= ';';
+    }
+  }
+  return $query;
+}
+
+/**
+ * Returns array use on template with html_options method
+ * @param Min and Max access to use
+ * @return array of user access level
+ */
+function get_user_access_level_html_options($MinLevelAccess = ACCESS_FREE, $MaxLevelAccess = ACCESS_CLOSED)
+{
+  $tpl_options = array();
+  for ($level = $MinLevelAccess; $level <= $MaxLevelAccess; $level++)
+  {
+    $tpl_options[$level] = l10n(sprintf('ACCESS_%d', $level));
+  }
+  return $tpl_options;
+}
+
+/**
+ * returns a list of templates currently available in template-extension
+ * Each .tpl file is extracted from template-extension.
+ * @return array
+ */
+function get_extents($start='')
+{
+  if ($start == '') { $start = './template-extension'; }
+  $dir = opendir($start);
+  $extents = array();
+
+  while (($file = readdir($dir)) !== false)
+  {
+    if ( $file == '.' or $file == '..' or $file == '.svn') continue;
+    $path = $start . '/' . $file;
+    if (is_dir($path))
+    {
+      $extents = array_merge($extents, get_extents($path));
+    }
+    elseif ( !is_link($path) and file_exists($path)
+            and get_extension($path) == 'tpl' )
+    {
+      $extents[] = substr($path, 21);
+    }
+  }
+  return $extents;
+}
+
+function create_tag($tag_name)
+{
+  // does the tag already exists?
+  $query = '
+SELECT id
+  FROM '.TAGS_TABLE.'
+  WHERE name = \''.$tag_name.'\'
+;';
+  $existing_tags = array_from_query($query, 'id');
+
+  if (count($existing_tags) == 0)
+  {
+    single_insert(
+      TAGS_TABLE,
+      array(
+        'name' => $tag_name,
+        'url_name' => trigger_event('render_tag_url', $tag_name),
+        )
+      );
+
+    $inserted_id = pwg_db_insert_id(TAGS_TABLE);
+
+    return array(
+      'info' => l10n('Tag "%s" was added', stripslashes($tag_name)),
+      'id' => $inserted_id,
+      );
+  }
+  else
+  {
+    return array(
+      'error' => l10n('Tag "%s" already exists', stripslashes($tag_name))
+      );
+  }
+}
+
+/**
+ * Is the category accessible to the (Admin) user ?
+ *
+ * Note : if the user is not authorized to see this category, category jump
+ * will be replaced by admin cat_modify page
+ *
+ * @param int category id to verify
+ * @return bool
+ */
+function cat_admin_access($category_id)
+{
+  global $user;
+
+  // $filter['visible_categories'] and $filter['visible_images']
+  // are not used because it's not necessary (filter <> restriction)
+  if (in_array($category_id, explode(',', $user['forbidden_categories'])))
+  {
+    return false;
+  }
+  return true;
+}
+
+/**
+ * Retrieve data from external URL
+ *
+ * @param string $src: URL
+ * @param global $dest: can be a file ressource or string
+ * @return bool
+ */
+function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_agent='Piwigo', $step=0)
+{
+  // Try to retrieve data from local file?
+  if (!url_is_remote($src))
+  {
+    $content = @file_get_contents($src);
+    if ($content !== false)
+    {
+      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
+      return true;
+    }
+    else
+    {
+      return false;
+    }
+  }
+
+  // After 3 redirections, return false
+  if ($step > 3) return false;
+
+  // Initialization
+  $method  = empty($post_data) ? 'GET' : 'POST';
+  $request = empty($post_data) ? '' : http_build_query($post_data, '', '&');
+  if (!empty($get_data))
+  {
+    $src .= strpos($src, '?') === false ? '?' : '&';
+    $src .= http_build_query($get_data, '', '&');
+  }
+
+  // Initialize $dest
+  is_resource($dest) or $dest = '';
+
+  // Try curl to read remote file
+  if (function_exists('curl_init'))
+  {
+    $ch = @curl_init();
+    @curl_setopt($ch, CURLOPT_URL, $src);
+    @curl_setopt($ch, CURLOPT_HEADER, 1);
+    @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
+    @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+    if ($method == 'POST')
+    {
+      @curl_setopt($ch, CURLOPT_POST, 1);
+      @curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
+    }
+    $content = @curl_exec($ch);
+    $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
+    $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
+    @curl_close($ch);
+    if ($content !== false and $status >= 200 and $status < 400)
+    {
+      if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
+      {
+        return fetchRemote($m[1], $dest, array(), array(), $user_agent, $step+1);
+      }
+      $content = substr($content, $header_length);
+      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
+      return true;
+    }
+  }
+
+  // Try file_get_contents to read remote file
+  if (ini_get('allow_url_fopen'))
+  {
+    $opts = array(
+      'http' => array(
+        'method' => $method,
+        'user_agent' => $user_agent,
+      )
+    );
+    if ($method == 'POST')
+    {
+      $opts['http']['content'] = $request;
+    }
+    $context = @stream_context_create($opts);
+    $content = @file_get_contents($src, false, $context);
+    if ($content !== false)
+    {
+      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
+      return true;
+    }
+  }
+
+  // Try fsockopen to read remote file
+  $src = parse_url($src);
+  $host = $src['host'];
+  $path = isset($src['path']) ? $src['path'] : '/';
+  $path .= isset($src['query']) ? '?'.$src['query'] : '';
+
+  if (($s = @fsockopen($host,80,$errno,$errstr,5)) === false)
+  {
+    return false;
+  }
+
+  $http_request  = $method." ".$path." HTTP/1.0\r\n";
+  $http_request .= "Host: ".$host."\r\n";
+  if ($method == 'POST')
+  {
+    $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+    $http_request .= "Content-Length: ".strlen($request)."\r\n";
+  }
+  $http_request .= "User-Agent: ".$user_agent."\r\n";
+  $http_request .= "Accept: */*\r\n";
+  $http_request .= "\r\n";
+  $http_request .= $request;
+
+  fwrite($s, $http_request);
+
+  $i = 0;
+  $in_content = false;
+  while (!feof($s))
+  {
+    $line = fgets($s);
+
+    if (rtrim($line,"\r\n") == '' && !$in_content)
+    {
+      $in_content = true;
+      $i++;
+      continue;
+    }
+    if ($i == 0)
+    {
+      if (!preg_match('/HTTP\/(\\d\\.\\d)\\s*(\\d+)\\s*(.*)/',rtrim($line,"\r\n"), $m))
+      {
+        fclose($s);
+        return false;
+      }
+      $status = (integer) $m[2];
+      if ($status < 200 || $status >= 400)
+      {
+        fclose($s);
+        return false;
+      }
+    }
+    if (!$in_content)
+    {
+      if (preg_match('/Location:\s+?(.+)$/',rtrim($line,"\r\n"),$m))
+      {
+        fclose($s);
+        return fetchRemote(trim($m[1]),$dest,array(),array(),$user_agent,$step+1);
+      }
+      $i++;
+      continue;
+    }
+    is_resource($dest) ? @fwrite($dest, $line) : $dest .= $line;
+    $i++;
+  }
+  fclose($s);
+  return true;
+}
+
+
+/**
+ * returns the groupname corresponding to the given group identifier if
+ * exists
+ *
+ * @param int group_id
+ * @return mixed
+ */
+function get_groupname($group_id)
+{
+  $query = '
+SELECT name
+  FROM '.GROUPS_TABLE.'
+  WHERE id = '.intval($group_id).'
+;';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) > 0)
+  {
+    list($groupname) = pwg_db_fetch_row($result);
+  }
+  else
+  {
+    return false;
+  }
+
+  return $groupname;
+}
+
+/**
+ * returns the username corresponding to the given user identifier if exists
+ *
+ * @param int user_id
+ * @return mixed
+ */
+function get_username($user_id)
+{
+  global $conf;
+
+  $query = '
+SELECT '.$conf['user_fields']['username'].'
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['id'].' = '.intval($user_id).'
+;';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) > 0)
+  {
+    list($username) = pwg_db_fetch_row($result);
+  }
+  else
+  {
+    return false;
+  }
+
+  return stripslashes($username);
+}
+
+function get_newsletter_subscribe_base_url($language) {
+  return PHPWG_URL.'/announcement/subscribe/';
+}
+
+/**
+ * Accordion menus need to know which section to open by default when
+ * loading the page
+ */
+function get_active_menu($menu_page)
+{
+  global $page;
+
+  if (isset($page['active_menu']))
+  {
+    return $page['active_menu'];
+  }
+
+  switch ($menu_page)
+  {
+    case 'photo':
+    case 'photos_add':
+    case 'rating':
+    case 'tags':
+    case 'batch_manager':
+      return 0;
+
+    case 'album':
+    case 'cat_list':
+    case 'cat_move':
+    case 'cat_options':
+    case 'permalinks':
+      return 1;
+
+    case 'user_list':
+    case 'user_perm':
+    case 'group_list':
+    case 'group_perm':
+    case 'notification_by_mail':
+      return 2;
+
+    case 'plugins':
+    case 'plugin':
+      return 3;
+
+    case 'site_manager':
+    case 'site_update':
+    case 'stats':
+    case 'history':
+    case 'maintenance':
+    case 'comments':
+    case 'updates':
+      return 4;
+
+    case 'configuration':
+    case 'derivatives':
+    case 'extend_for_templates':
+    case 'menubar':
+    case 'themes':
+    case 'theme':
+    case 'languages':
+      return 5;
+  }
+  return 0;
+}
+
+/*
+ * get tags list from SQL query (ids are surrounded by ~~, for get_tag_ids())
+ * @param string: query
+ * @param boolean: only_user_language, if true, only local name is returned for multilingual tags
+ */
+function get_taglist($query, $only_user_language=true)
+{
+  $result = pwg_query($query);
+
+  $taglist = array();
+  $altlist = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $raw_name = $row['name'];
+    $name = trigger_event('render_tag_name', $raw_name);
+
+    $taglist[] =  array(
+        'name' => $name,
+        'id' => '~~'.$row['id'].'~~',
+      );
+
+    if (!$only_user_language)
+    {
+      $alt_names = trigger_event('get_tag_alt_names', array(), $raw_name);
+
+      foreach( array_diff( array_unique($alt_names), array($name) ) as $alt)
+      {
+        $altlist[] =  array(
+            'name' => $alt,
+            'id' => '~~'.$row['id'].'~~',
+          );
+      }
+    }
+  }
+
+  usort($taglist, 'tag_alpha_compare');
+  if (count($altlist))
+  {
+    usort($altlist, 'tag_alpha_compare');
+    $taglist = array_merge($taglist, $altlist);
+  }
+
+  return $taglist;
+}
+
+/*
+ * get tags ids from a list of raw tags (existing tags or new tags)
+ * @param mixed: raw_tags, array or comma separated string
+ * @param boolean: allow_create
+ */
+function get_tag_ids($raw_tags, $allow_create=true)
+{
+  // In $raw_tags we receive something like array('~~6~~', '~~59~~', 'New
+  // tag', 'Another new tag') The ~~34~~ means that it is an existing
+  // tag. I've added the surrounding ~~ to permit creation of tags like "10"
+  // or "1234" (numeric characters only)
+
+  $tag_ids = array();
+  if (!is_array($raw_tags))
+  {
+    $raw_tags = explode(',',$raw_tags);
+  }
+
+  foreach ($raw_tags as $raw_tag)
+  {
+    if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches))
+    {
+      $tag_ids[] = $matches[1];
+    }
+    elseif ($allow_create)
+    {
+      // we have to create a new tag
+      $tag_ids[] = tag_id_from_tag_name($raw_tag);
+    }
+  }
+
+  return $tag_ids;
+}
+
+/** returns the argument_ids array with new sequenced keys based on related
+ * names. Sequence is not case sensitive.
+ * Warning: By definition, this function breaks original keys
+ */
+function order_by_name($element_ids,$name)
+{
+  $ordered_element_ids = array();
+  foreach ($element_ids as $k_id => $element_id)
+  {
+    $key = strtolower($name[$element_id]) .'-'. $name[$element_id] .'-'. $k_id;
+    $ordered_element_ids[$key] = $element_id;
+  }
+  ksort($ordered_element_ids);
+  return $ordered_element_ids;
+}
+
+function add_permission_on_category($category_ids, $user_ids)
+{
+  // array-ify categories and users
+  if (!is_array($category_ids))
+  {
+    $category_ids = array($category_ids);
+  }
+
+  if (!is_array($user_ids))
+  {
+    $user_ids = array($user_ids);
+  }
+
+  // check for emptiness
+  if (count($category_ids) == 0 or count($user_ids) == 0)
+  {
+    return;
+  }
+
+  // make sure categories are private and select uppercats or subcats
+  $cat_ids = get_uppercat_ids($category_ids);
+  if (isset($_POST['apply_on_sub']))
+  {
+    $cat_ids = array_merge($cat_ids, get_subcat_ids($category_ids));
+  }
+
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $cat_ids).')
+    AND status = \'private\'
+;';
+  $private_cats = array_from_query($query, 'id');
+
+  if (count($private_cats) == 0)
+  {
+    return;
+  }
+  
+  $inserts = array();
+  foreach ($private_cats as $cat_id)
+  {
+    foreach ($user_ids as $user_id)
+    {
+      $inserts[] = array(
+        'user_id' => $user_id,
+        'cat_id' => $cat_id
+        );
+    }
+  }
+  
+  mass_inserts(
+    USER_ACCESS_TABLE,
+    array('user_id','cat_id'),
+    $inserts,
+    array('ignore'=>true)
+    );
+}
+
+
+function get_admins($include_webmaster=true)
+{
+  $status_list = array('admin');
+
+  if ($include_webmaster)
+  {
+    $status_list[] = 'webmaster';
+  }
+
+  $query = '
+SELECT
+    user_id
+  FROM '.USER_INFOS_TABLE.'
+  WHERE status in (\''.implode("','", $status_list).'\')
+;';
+
+  return array_from_query($query, 'user_id');
+}
+
+/** delete all derivative files for one or several types */
+function clear_derivative_cache($types='all')
+{
+  if ($types === 'all')
+  {
+    $types = ImageStdParams::get_all_types();
+    $types[] = IMG_CUSTOM;
+  }
+  elseif (!is_array($types))
+  {
+    $types = array($types);
+  }
+
+  for ($i=0; $i<count($types); $i++)
+  {
+    $type = $types[$i];
+    if ($type == IMG_CUSTOM)
+    {
+      $type = derivative_to_url($type).'[a-zA-Z0-9]+';
+    }
+    elseif (in_array($type, ImageStdParams::get_all_types()))
+    {
+      $type = derivative_to_url($type);
+    }
+    else
+    {//assume a custom type
+      $type = derivative_to_url(IMG_CUSTOM).'_'.$type;
+    }
+    $types[$i] = $type;
+  }
+
+  $pattern='#.*-';
+  if (count($types)>1)
+  {
+    $pattern .= '(' . implode('|',$types) . ')';
+  }
+  else
+  {
+    $pattern .= $types[0];
+  }
+  $pattern.='\.[a-zA-Z0-9]{3,4}$#';
+
+  if ($contents = @opendir(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR))
+  {
+    while (($node = readdir($contents)) !== false)
+    {
+      if ($node != '.'
+          and $node != '..'
+          and is_dir(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$node))
+      {
+        clear_derivative_cache_rec(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$node, $pattern);
+      }
+    }
+    closedir($contents);
+  }
+}
+
+function clear_derivative_cache_rec($path, $pattern)
+{
+  $rmdir = true;
+  $rm_index = false;
+
+  if ($contents = opendir($path))
+  {
+    while (($node = readdir($contents)) !== false)
+    {
+      if ($node == '.' or $node == '..')
+        continue;
+      if (is_dir($path.'/'.$node))
+      {
+        $rmdir &= clear_derivative_cache_rec($path.'/'.$node, $pattern);
+      }
+      else
+      {
+        if (preg_match($pattern, $node))
+        {
+          unlink($path.'/'.$node);
+        }
+        elseif ($node=='index.htm')
+        {
+          $rm_index = true;
+        }
+        else
+        {
+          $rmdir = false;
+        }
+      }
+    }
+    closedir($contents);
+
+    if ($rmdir)
+    {
+      if ($rm_index)
+      {
+        unlink($path.'/index.htm');
+      }
+      clearstatcache();
+      @rmdir($path);
+    }
+    return $rmdir;
+  }
+}
+
+function delete_element_derivatives($infos, $type='all')
+{
+  $path = $infos['path'];
+  if (!empty($infos['representative_ext']))
+  {
+    $path = original_to_representative( $path, $infos['representative_ext']);
+  }
+  if (substr_compare($path, '../', 0, 3)==0)
+  {
+    $path = substr($path, 3);
+  }
+  $dot = strrpos($path, '.');
+  if ($type=='all')
+  {
+    $pattern = '-*';
+  }
+  else
+  {
+    $pattern = '-'.derivative_to_url($type).'*';
+  }
+  $path = substr_replace($path, $pattern, $dot, 0);
+  if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$path)) !== false)
+  {
+    foreach( $glob as $file)
+    {
+      @unlink($file);
+    }
+  }
+}
+
+/**
+ * returns an array contening sub-directories, excluding ".svn"
+ *
+ * @param string $dir
+ * @return array
+ */
+function get_dirs($directory)
+{
+  $sub_dirs = array();
+  if ($opendir = opendir($directory))
+  {
+    while ($file = readdir($opendir))
+    {
+      if ($file != '.'
+          and $file != '..'
+          and is_dir($directory.'/'.$file)
+          and $file != '.svn')
+      {
+        $sub_dirs[] = $file;
+      }
+    }
+    closedir($opendir);
+  }
+  return $sub_dirs;
+}
+
+/**
+ * recursively delete a directory
+ * @param string $path
+ * @param string $trash_path, try to move the directory to this path if it cannot be delete
+ */
+function deltree($path, $trash_path=null)
+{
+  if (is_dir($path))
+  {
+    $fh = opendir($path);
+    while ($file = readdir($fh))
+    {
+      if ($file != '.' and $file != '..')
+      {
+        $pathfile = $path . '/' . $file;
+        if (is_dir($pathfile))
+        {
+          deltree($pathfile, $trash_path);
+        }
+        else
+        {
+          @unlink($pathfile);
+        }
+      }
+    }
+    closedir($fh);
+    
+    if (@rmdir($path))
+    {
+      return true;
+    }
+    elseif (!empty($trash_path))
+    {
+      if (!is_dir($trash_path))
+      {
+        @mkgetdir($trash_path, MKGETDIR_RECURSIVE|MKGETDIR_DIE_ON_ERROR|MKGETDIR_PROTECT_HTACCESS);
+      }
+      while ($r = $trash_path . '/' . md5(uniqid(rand(), true)))
+      {
+        if (!is_dir($r))
+        {
+          @rename($path, $r);
+          break;
+        }
+      }
+    }
+    else
+    {
+      return false;
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/functions_history.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_history.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_history.inc.php	(revision 25596)
@@ -0,0 +1,162 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+function history_tabsheet()
+{
+  global $page, $link_start;
+
+  // TabSheet
+  $tabsheet = new tabsheet();
+  $tabsheet->set_id('history');
+  $tabsheet->select($page['page']);
+  $tabsheet->assign();
+}
+
+function history_compare($a, $b)
+{
+  return strcmp($a['date'].$a['time'], $b['date'].$b['time']);
+}
+
+function get_history($data, $search, $types)
+{
+  if (isset($search['fields']['filename']))
+  {
+    $query = '
+SELECT
+    id
+  FROM '.IMAGES_TABLE.'
+  WHERE file LIKE \''.$search['fields']['filename'].'\'
+;';
+    $search['image_ids'] = array_from_query($query, 'id');
+  }
+  
+  // echo '<pre>'; print_r($search); echo '</pre>';
+  
+  $clauses = array();
+
+  if (isset($search['fields']['date-after']))
+  {
+    $clauses[] = "date >= '".$search['fields']['date-after']."'";
+  }
+
+  if (isset($search['fields']['date-before']))
+  {
+    $clauses[] = "date <= '".$search['fields']['date-before']."'";
+  }
+
+  if (isset($search['fields']['types']))
+  {
+    $local_clauses = array();
+    
+    foreach ($types as $type) {
+      if (in_array($type, $search['fields']['types'])) {
+        $clause = 'image_type ';
+        if ($type == 'none')
+        {
+          $clause.= 'IS NULL';
+        }
+        else
+        {
+          $clause.= "= '".$type."'";
+        }
+        
+        $local_clauses[] = $clause;
+      }
+    }
+    
+    if (count($local_clauses) > 0)
+    {
+      $clauses[] = implode(' OR ', $local_clauses);
+    }
+  }
+
+  if (isset($search['fields']['user'])
+      and $search['fields']['user'] != -1)
+  {
+    $clauses[] = 'user_id = '.$search['fields']['user'];
+  }
+
+  if (isset($search['fields']['image_id']))
+  {
+    $clauses[] = 'image_id = '.$search['fields']['image_id'];
+  }
+  
+  if (isset($search['fields']['filename']))
+  {
+    if (count($search['image_ids']) == 0)
+    {
+      // a clause that is always false
+      $clauses[] = '1 = 2 ';
+    }
+    else
+    {
+      $clauses[] = 'image_id IN ('.implode(', ', $search['image_ids']).')';
+    }
+  }
+
+  if (isset($search['fields']['ip']))
+  {
+    $clauses[] = 'IP LIKE "'.$search['fields']['ip'].'"';
+  }
+  
+  $clauses = prepend_append_array_items($clauses, '(', ')');
+
+  $where_separator =
+    implode(
+      "\n    AND ",
+      $clauses
+      );
+  
+  $query = '
+SELECT
+    date,
+    time,
+    user_id,
+    IP,
+    section,
+    category_id,
+    tag_ids,
+    image_id,
+    image_type
+  FROM '.HISTORY_TABLE.'
+  WHERE '.$where_separator.'
+;';
+
+  // LIMIT '.$conf['nb_logs_page'].' OFFSET '.$page['start'].'
+
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $data[] = $row;
+  }
+
+  return $data;
+}
+
+add_event_handler('get_history', 'get_history', EVENT_HANDLER_PRIORITY_NEUTRAL, 3);
+trigger_action('functions_history_included');
+
+?>
Index: /tags/2.6.0RC1/admin/include/functions_install.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_install.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_install.inc.php	(revision 25596)
@@ -0,0 +1,102 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * loads an sql file and executes all queries
+ *
+ * Before executing a query, $replaced is... replaced by $replacing. This is
+ * useful when the SQL file contains generic words. Drop table queries are
+ * not executed.
+ *
+ * @param string filepath
+ * @param string replaced
+ * @param string replacing
+ * @return void
+ */
+function execute_sqlfile($filepath, $replaced, $replacing, $dblayer)
+{
+  $sql_lines = file($filepath);
+  $query = '';
+  foreach ($sql_lines as $sql_line)
+  {
+    $sql_line = trim($sql_line);
+    if (preg_match('/(^--|^$)/', $sql_line))
+    {
+      continue;
+    }
+    $query.= ' '.$sql_line;
+    // if we reached the end of query, we execute it and reinitialize the
+    // variable "query"
+    if (preg_match('/;$/', $sql_line))
+    {
+      $query = trim($query);
+      $query = str_replace($replaced, $replacing, $query);
+      // we don't execute "DROP TABLE" queries
+      if (!preg_match('/^DROP TABLE/i', $query))
+      {
+        if ('mysql' == $dblayer)
+        {
+          if ( preg_match('/^(CREATE TABLE .*)[\s]*;[\s]*/im', $query, $matches) )
+          {
+            $query = $matches[1].' DEFAULT CHARACTER SET utf8'.';';
+          }
+        }
+        pwg_query($query);
+      }
+      $query = '';
+    }
+  }
+}
+
+/**
+ * Automatically activate all core themes in the "themes" directory.
+ *
+ * @return void
+ */
+function activate_core_themes()
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+  $themes = new themes();
+  foreach ($themes->fs_themes as $theme_id => $fs_theme)
+  {
+    if (in_array($theme_id, array('elegant', 'smartpocket')))
+    {
+      $themes->perform_action('activate', $theme_id);
+    }
+  }
+}
+
+function install_db_connect(&$infos, &$errors)
+{
+  try
+  {
+    pwg_db_connect($_POST['dbhost'], $_POST['dbuser'],
+                   $_POST['dbpasswd'], $_POST['dbname']);
+    pwg_db_check_version();
+  }
+  catch (Exception $e)
+  {
+    $errors[] = l10n($e->getMessage());
+  }
+}
+?>
Index: /tags/2.6.0RC1/admin/include/functions_metadata.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_metadata.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_metadata.php	(revision 25596)
@@ -0,0 +1,319 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
+
+
+function get_sync_iptc_data($file)
+{
+  global $conf;
+
+  $map = $conf['use_iptc_mapping'];
+
+  $iptc = get_iptc_data($file, $map);
+
+  foreach ($iptc as $pwg_key => $value)
+  {
+    if (in_array($pwg_key, array('date_creation', 'date_available')))
+    {
+      if (preg_match('/(\d{4})(\d{2})(\d{2})/', $value, $matches))
+      {
+        $year = $matches[1];
+        $month = $matches[2];
+        $day = $matches[3];
+
+        if (!checkdate($month, $day, $year))
+        {
+          // we suppose the year is correct
+          $month = 1;
+          $day = 1;
+        }
+
+        $iptc[$pwg_key] = $year.'-'.$month.'-'.$day;
+      }
+    }
+  }
+
+  if (isset($iptc['keywords']))
+  {
+    // official keywords separator is the comma
+    $iptc['keywords'] = preg_replace('/[.;]/', ',', $iptc['keywords']);
+    $iptc['keywords'] = preg_replace('/,+/', ',', $iptc['keywords']);
+    $iptc['keywords'] = preg_replace('/^,+|,+$/', '', $iptc['keywords']);
+
+    $iptc['keywords'] = implode(
+      ',',
+      array_unique(
+        explode(
+          ',',
+          $iptc['keywords']
+          )
+        )
+      );
+  }
+
+  foreach ($iptc as $pwg_key => $value)
+  {
+    $iptc[$pwg_key] = addslashes($iptc[$pwg_key]);
+  }
+
+  return $iptc;
+}
+
+function get_sync_exif_data($file)
+{
+  global $conf;
+
+  $exif = get_exif_data($file, $conf['use_exif_mapping']);
+
+  foreach ($exif as $pwg_key => $value)
+  {
+    if (in_array($pwg_key, array('date_creation', 'date_available')))
+    {
+      if (preg_match('/^(\d{4}).(\d{2}).(\d{2}) (\d{2}).(\d{2}).(\d{2})/', $value, $matches))
+      {
+        $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3].' '.$matches[4].':'.$matches[5].':'.$matches[6];
+      }
+      elseif (preg_match('/^(\d{4}).(\d{2}).(\d{2})/', $value, $matches))
+      {
+        $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3];
+      }
+      else
+      {
+        unset($exif[$pwg_key]);
+        continue;
+      }
+    }
+    $exif[$pwg_key] = addslashes($exif[$pwg_key]);
+  }
+
+  return $exif;
+}
+
+
+function get_sync_metadata_attributes()
+{
+  global $conf;
+
+  $update_fields = array('filesize', 'width', 'height');
+
+  if ($conf['use_exif'])
+  {
+    $update_fields =
+      array_merge(
+        $update_fields,
+        array_keys($conf['use_exif_mapping'])
+        );
+  }
+
+  if ($conf['use_iptc'])
+  {
+    $update_fields =
+      array_merge(
+        $update_fields,
+        array_keys($conf['use_iptc_mapping'])
+        );
+  }
+
+  return array_unique($update_fields);
+}
+
+function get_sync_metadata($infos)
+{
+  global $conf;
+  $file = PHPWG_ROOT_PATH.$infos['path'];
+  $fs = @filesize($file);
+
+  if ($fs===false)
+  {
+    return false;
+  }
+
+  $infos['filesize'] = floor($fs/1024);
+
+  if (isset($infos['representative_ext']))
+  {
+    $file = original_to_representative($file, $infos['representative_ext']);
+  }
+
+  if ($image_size = @getimagesize($file))
+  {
+    $infos['width'] = $image_size[0];
+    $infos['height'] = $image_size[1];
+  }
+
+  if ($conf['use_exif'])
+  {
+    $exif = get_sync_exif_data($file);
+    $infos = array_merge($infos, $exif);
+  }
+
+  if ($conf['use_iptc'])
+  {
+    $iptc = get_sync_iptc_data($file);
+    $infos = array_merge($infos, $iptc);
+  }
+
+  return $infos;
+}
+
+
+function sync_metadata($ids)
+{
+  global $conf;
+
+  if (!defined('CURRENT_DATE'))
+  {
+    define('CURRENT_DATE', date('Y-m-d'));
+  }
+
+  $datas = array();
+  $tags_of = array();
+
+  $query = '
+SELECT id, path, representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN (
+'.wordwrap(implode(', ', $ids), 160, "\n").'
+)
+;';
+
+  $result = pwg_query($query);
+  while ($data = pwg_db_fetch_assoc($result))
+  {
+    $data = get_sync_metadata($data);
+    if ($data === false)
+    {
+      continue;
+    }
+
+    $id = $data['id'];
+    foreach (array('keywords', 'tags') as $key)
+    {
+      if (isset($data[$key]))
+      {
+        if (!isset($tags_of[$id]))
+        {
+          $tags_of[$id] = array();
+        }
+
+        foreach (explode(',', $data[$key]) as $tag_name)
+        {
+          $tags_of[$id][] = tag_id_from_tag_name($tag_name);
+        }
+      }
+    }
+
+    $data['date_metadata_update'] = CURRENT_DATE;
+
+    $datas[] = $data;
+  }
+
+  if (count($datas) > 0)
+  {
+    $update_fields = get_sync_metadata_attributes();
+    $update_fields[] = 'date_metadata_update';
+
+    $update_fields = array_diff(
+      $update_fields,
+      array('tags', 'keywords')
+            );
+
+    mass_updates(
+      IMAGES_TABLE,
+      array(
+        'primary' => array('id'),
+        'update'  => $update_fields
+        ),
+      $datas,
+      MASS_UPDATES_SKIP_EMPTY
+      );
+  }
+
+  set_tags_of($tags_of);
+}
+
+/**
+ * returns an array associating element id (images.id) with its complete
+ * path in the filesystem
+ *
+ * @param int id_uppercat
+ * @param int site_id
+ * @param boolean recursive ?
+ * @param boolean only newly added files ?
+ * @return array
+ */
+function get_filelist($category_id = '', $site_id=1, $recursive = false,
+                      $only_new = false)
+{
+  // filling $cat_ids : all categories required
+  $cat_ids = array();
+
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE site_id = '.$site_id.'
+    AND dir IS NOT NULL';
+  if (is_numeric($category_id))
+  {
+    if ($recursive)
+    {
+      $query.= '
+    AND uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$category_id.'(,|$)\'
+';
+    }
+    else
+    {
+      $query.= '
+    AND id = '.$category_id.'
+';
+    }
+  }
+  $query.= '
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $cat_ids[] = $row['id'];
+  }
+
+  if (count($cat_ids) == 0)
+  {
+    return array();
+  }
+
+  $query = '
+SELECT id, path, representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE storage_category_id IN ('.implode(',', $cat_ids).')';
+  if ($only_new)
+  {
+    $query.= '
+    AND date_metadata_update IS NULL
+';
+  }
+  $query.= '
+;';
+  return hash_from_query($query, 'id');
+}
+?>
Index: /tags/2.6.0RC1/admin/include/functions_notification_by_mail.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_notification_by_mail.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_notification_by_mail.inc.php	(revision 25596)
@@ -0,0 +1,546 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/* nbm_global_var */
+$env_nbm = array
+          (
+            'start_time' => get_moment(),
+            'sendmail_timeout' => (intval(ini_get('max_execution_time')) * $conf['nbm_max_treatment_timeout_percent']),
+            'is_sendmail_timeout' => false
+          );
+
+if
+  (
+    (!isset($env_nbm['sendmail_timeout'])) or
+    (!is_numeric($env_nbm['sendmail_timeout'])) or
+    ($env_nbm['sendmail_timeout'] <= 0)
+  )
+{
+  $env_nbm['sendmail_timeout'] = $conf['nbm_treatment_timeout_default'];
+}
+
+/*
+ * Search an available check_key
+ *
+ * It's a copy of function find_available_feed_id
+ *
+ * @return string nbm identifier
+ */
+function find_available_check_key()
+{
+  while (true)
+  {
+    $key = generate_key(16);
+    $query = '
+select
+  count(*)
+from
+  '.USER_MAIL_NOTIFICATION_TABLE.'
+where
+  check_key = \''.$key.'\';';
+
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count == 0)
+    {
+      return $key;
+    }
+  }
+}
+
+/*
+ * Check sendmail timeout state
+ *
+ * @return true, if it's timeout
+ */
+function check_sendmail_timeout()
+{
+  global $env_nbm;
+
+  $env_nbm['is_sendmail_timeout'] = ((get_moment() - $env_nbm['start_time']) > $env_nbm['sendmail_timeout']);
+
+  return $env_nbm['is_sendmail_timeout'];
+}
+
+
+/*
+ * Add quote to all elements of check_key_list
+ *
+ * @return quoted check key list
+ */
+function quote_check_key_list($check_key_list = array())
+{
+  return array_map(create_function('$s', 'return \'\\\'\'.$s.\'\\\'\';'), $check_key_list);
+}
+
+/*
+ * Execute all main queries to get list of user
+ *
+ * Type are the type of list 'subscribe', 'send'
+ *
+ * return array of users
+ */
+function get_user_notifications($action, $check_key_list = array(), $enabled_filter_value = '')
+{
+  global $conf;
+
+  $data_users = array();
+
+  if (in_array($action, array('subscribe', 'send')))
+  {
+    $quoted_check_key_list = quote_check_key_list($check_key_list);
+    if (count($quoted_check_key_list) != 0 )
+    {
+      $query_and_check_key = ' and
+    check_key in ('.implode(",", $quoted_check_key_list).') ';
+    }
+    else
+    {
+      $query_and_check_key = '';
+    }
+
+    $query = '
+select
+  N.user_id,
+  N.check_key,
+  U.'.$conf['user_fields']['username'].' as username,
+  U.'.$conf['user_fields']['email'].' as mail_address,
+  N.enabled,
+  N.last_send
+from
+  '.USER_MAIL_NOTIFICATION_TABLE.' as N,
+  '.USERS_TABLE.' as U
+where
+  N.user_id =  U.'.$conf['user_fields']['id'];
+
+    if ($action == 'send')
+    {
+      // No mail empty and all users enabled
+      $query .= ' and
+  N.enabled = \'true\' and
+  U.'.$conf['user_fields']['email'].' is not null';
+    }
+
+    $query .= $query_and_check_key;
+
+    if (isset($enabled_filter_value) and ($enabled_filter_value != ''))
+    {
+      $query .= ' and
+        N.enabled = \''.boolean_to_string($enabled_filter_value).'\'';
+    }
+
+    $query .= '
+order by';
+
+    if ($action == 'send')
+    {
+      $query .= '
+  last_send, username;';
+    }
+    else
+    {
+      $query .= '
+  username;';
+    }
+
+    $query .= ';';
+
+    $result = pwg_query($query);
+    if (!empty($result))
+    {
+      while ($nbm_user = pwg_db_fetch_assoc($result))
+      {
+        $data_users[] = $nbm_user;
+      }
+    }
+  }
+  return $data_users;
+}
+
+/*
+ * Begin of use nbm environment
+ * Prepare and save current environment and initialize data in order to send mail
+ *
+ * Return none
+ */
+function begin_users_env_nbm($is_to_send_mail = false)
+{
+  global $user, $lang, $lang_info, $conf, $env_nbm;
+
+  // Save $user, $lang_info and $lang arrays (include/user.inc.php has been executed)
+  $env_nbm['save_user'] = $user;
+  // Save current language to stack, necessary because $user change during NBM
+  switch_lang_to($user['language']);
+
+  $env_nbm['is_to_send_mail'] = $is_to_send_mail;
+
+  if ($is_to_send_mail)
+  {
+    // Init mail configuration
+    $env_nbm['email_format'] = get_str_email_format($conf['nbm_send_html_mail']);
+    $env_nbm['send_as_name'] = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : get_mail_sender_name());
+    $env_nbm['send_as_mail_address'] = get_webmaster_mail_address();
+    $env_nbm['send_as_mail_formated'] = format_email($env_nbm['send_as_name'], $env_nbm['send_as_mail_address']);
+    // Init mail counter
+    $env_nbm['error_on_mail_count'] = 0;
+    $env_nbm['sent_mail_count'] = 0;
+    // Save sendmail message info and error in the original language
+    $env_nbm['msg_info'] = l10n('Mail sent to %s [%s].');
+    $env_nbm['msg_error'] = l10n('Error when sending email to %s [%s].');
+  }
+}
+
+/*
+ * End of use nbm environment
+ * Restore environment
+ *
+ * Return none
+ */
+function end_users_env_nbm()
+{
+  global $user, $lang, $lang_info, $env_nbm;
+
+  // Restore $user, $lang_info and $lang arrays (include/user.inc.php has been executed)
+  $user = $env_nbm['save_user'];
+  // Restore current language to stack, necessary because $user change during NBM
+  switch_lang_back();
+
+  if ($env_nbm['is_to_send_mail'])
+  {
+    unset($env_nbm['email_format']);
+    unset($env_nbm['send_as_name']);
+    unset($env_nbm['send_as_mail_address']);
+    unset($env_nbm['send_as_mail_formated']);
+    // Don t unset counter
+    //unset($env_nbm['error_on_mail_count']);
+    //unset($env_nbm['sent_mail_count']);
+    unset($env_nbm['msg_info']);
+    unset($env_nbm['msg_error']);
+  }
+
+  unset($env_nbm['save_user']);
+  unset($env_nbm['is_to_send_mail']);
+}
+
+/*
+ * Set user on nbm enviromnent
+ *
+ * Return none
+ */
+function set_user_on_env_nbm(&$nbm_user, $is_action_send)
+{
+  global $user, $lang, $lang_info, $env_nbm;
+
+  $user = build_user( $nbm_user['user_id'], true );
+
+  switch_lang_to($user['language']);
+
+  if ($is_action_send)
+  {
+    $env_nbm['mail_template'] = get_mail_template($env_nbm['email_format']);
+    $env_nbm['mail_template']->set_filename('notification_by_mail', 'notification_by_mail.tpl');
+  }
+}
+
+/*
+ * Unset user on nbm enviromnent
+ *
+ * Return none
+ */
+function unset_user_on_env_nbm()
+{
+  global $env_nbm;
+
+  switch_lang_back();
+  unset($env_nbm['mail_template']);
+}
+
+/*
+ * Inc Counter success
+ *
+ * Return none
+ */
+function inc_mail_sent_success($nbm_user)
+{
+  global $page, $env_nbm;
+
+  $env_nbm['sent_mail_count'] += 1;
+  $page['infos'][] = sprintf($env_nbm['msg_info'], stripslashes($nbm_user['username']), $nbm_user['mail_address']);
+}
+
+/*
+ * Inc Counter failed
+ *
+ * Return none
+ */
+function inc_mail_sent_failed($nbm_user)
+{
+  global $page, $env_nbm;
+
+  $env_nbm['error_on_mail_count'] += 1;
+  $page['errors'][] = sprintf($env_nbm['msg_error'], stripslashes($nbm_user['username']), $nbm_user['mail_address']);
+}
+
+/*
+ * Display Counter Info
+ *
+ * Return none
+ */
+function display_counter_info()
+{
+  global $page, $env_nbm;
+
+  if ($env_nbm['error_on_mail_count'] != 0)
+  {
+    $page['errors'][] = l10n_dec(
+      '%d mail was not sent.', '%d mails were not sent.',
+      $env_nbm['error_on_mail_count']
+      );
+      
+    if ($env_nbm['sent_mail_count'] != 0)
+    {
+      $page['infos'][] = l10n_dec(
+        '%d mail was sent.', '%d mails were sent.',
+        $env_nbm['sent_mail_count']
+        );
+    }
+  }
+  else
+  {
+    if ($env_nbm['sent_mail_count'] == 0)
+    {
+      $page['infos'][] = l10n('No mail to send.');
+    }
+    else
+    {
+      $page['infos'][] = l10n_dec(
+        '%d mail was sent.', '%d mails were sent.',
+        $env_nbm['sent_mail_count']
+        );
+    }
+  }
+}
+
+function assign_vars_nbm_mail_content($nbm_user)
+{
+  global $env_nbm;
+
+  set_make_full_url();
+
+  $env_nbm['mail_template']->assign
+  (
+    array
+    (
+      'USERNAME' => stripslashes($nbm_user['username']),
+
+      'SEND_AS_NAME' => $env_nbm['send_as_name'],
+
+      'UNSUBSCRIBE_LINK' => add_url_params(get_gallery_home_url().'/nbm.php', array('unsubscribe' => $nbm_user['check_key'])),
+      'SUBSCRIBE_LINK' => add_url_params(get_gallery_home_url().'/nbm.php', array('subscribe' => $nbm_user['check_key'])),
+      'CONTACT_EMAIL' => $env_nbm['send_as_mail_address']
+    )
+  );
+
+  unset_make_full_url();
+}
+
+/*
+ * Subscribe or unsubscribe notification by mail
+ *
+ * is_subscribe define if action=subscribe or unsubscribe
+ * check_key list where action will be done
+ *
+ * @return check_key list treated
+ */
+function do_subscribe_unsubscribe_notification_by_mail($is_admin_request, $is_subscribe = false, $check_key_list = array())
+{
+  global $conf, $page, $env_nbm, $conf;
+
+  set_make_full_url();
+
+  $check_key_treated = array();
+  $updated_data_count = 0;
+  $error_on_updated_data_count = 0;
+
+  if ($is_subscribe)
+  {
+    $msg_info = l10n('User %s [%s] was added to the subscription list.');
+    $msg_error = l10n('User %s [%s] was not added to the subscription list.');
+  }
+  else
+  {
+    $msg_info = l10n('User %s [%s] was removed from the subscription list.');
+    $msg_error = l10n('User %s [%s] was not removed from the subscription list.');
+  }
+
+  if (count($check_key_list) != 0)
+  {
+    $updates = array();
+    $enabled_value = boolean_to_string($is_subscribe);
+    $data_users = get_user_notifications('subscribe', $check_key_list, !$is_subscribe);
+
+    // Prepare message after change language
+    $msg_break_timeout = l10n('Time to send mail is limited. Others mails are skipped.');
+
+    // Begin nbm users environment
+    begin_users_env_nbm(true);
+
+    foreach ($data_users as $nbm_user)
+    {
+      if (check_sendmail_timeout())
+      {
+        // Stop fill list on 'send', if the quota is override
+        $page['errors'][] = $msg_break_timeout;
+        break;
+      }
+
+      // Fill return list
+      $check_key_treated[] = $nbm_user['check_key'];
+
+      $do_update = true;
+      if ($nbm_user['mail_address'] != '')
+      {
+        // set env nbm user
+        set_user_on_env_nbm($nbm_user, true);
+
+        $subject = '['.$conf['gallery_title'].'] '.($is_subscribe ? l10n('Subscribe to notification by mail'): l10n('Unsubscribe from notification by mail'));
+
+        // Assign current var for nbm mail
+        assign_vars_nbm_mail_content($nbm_user);
+
+        $section_action_by = ($is_subscribe ? 'subscribe_by_' : 'unsubscribe_by_');
+        $section_action_by .= ($is_admin_request ? 'admin' : 'himself');
+        $env_nbm['mail_template']->assign
+        (
+          array
+          (
+            $section_action_by => true,
+            'GOTO_GALLERY_TITLE' => $conf['gallery_title'],
+            'GOTO_GALLERY_URL' => get_gallery_home_url(),
+          )
+        );
+        
+        $ret = pwg_mail(
+          array(
+            'name' => stripslashes($nbm_user['username']),
+            'email' => $nbm_user['mail_address'],
+            ),
+          array(
+            'from' => $env_nbm['send_as_mail_formated'],
+            'subject' => $subject,
+            'email_format' => $env_nbm['email_format'],
+            'content' => $env_nbm['mail_template']->parse('notification_by_mail', true),
+            'content_format' => $env_nbm['email_format'],
+            )
+          );
+
+        if ($ret)
+        {
+          inc_mail_sent_success($nbm_user);
+        }
+        else
+        {
+          inc_mail_sent_failed($nbm_user);
+          $do_update = false;
+        }
+
+        // unset env nbm user
+        unset_user_on_env_nbm();
+
+      }
+
+      if ($do_update)
+      {
+        $updates[] = array(
+          'check_key' => $nbm_user['check_key'],
+          'enabled' => $enabled_value
+          );
+        $updated_data_count += 1;
+        $page['infos'][] = sprintf($msg_info, stripslashes($nbm_user['username']), $nbm_user['mail_address']);
+      }
+      else
+      {
+        $error_on_updated_data_count += 1;
+        $page['errors'][] = sprintf($msg_error, stripslashes($nbm_user['username']), $nbm_user['mail_address']);
+      }
+
+    }
+
+    // Restore nbm environment
+    end_users_env_nbm();
+
+    display_counter_info();
+
+    mass_updates(
+      USER_MAIL_NOTIFICATION_TABLE,
+      array(
+        'primary' => array('check_key'),
+        'update' => array('enabled')
+      ),
+      $updates
+    );
+
+  }
+
+  $page['infos'][] = l10n_dec(
+    '%d user was updated.', '%d users were updated.',
+    $updated_data_count
+    );
+  
+  if ($error_on_updated_data_count != 0)
+  {
+    $page['errors'][] = l10n_dec(
+      '%d user was not updated.', '%d users were not updated.',
+      $error_on_updated_data_count
+      );
+  }
+
+  unset_make_full_url();
+
+  return $check_key_treated;
+}
+
+/*
+ * Unsubscribe notification by mail
+ *
+ * check_key list where action will be done
+ *
+ * @return check_key list treated
+ */
+function unsubscribe_notification_by_mail($is_admin_request, $check_key_list = array())
+{
+  return do_subscribe_unsubscribe_notification_by_mail($is_admin_request, false, $check_key_list);
+}
+
+/*
+ * Subscribe notification by mail
+ *
+ * check_key list where action will be done
+ *
+ * @return check_key list treated
+ */
+function subscribe_notification_by_mail($is_admin_request, $check_key_list = array())
+{
+  return do_subscribe_unsubscribe_notification_by_mail($is_admin_request, true, $check_key_list);
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/functions_permalinks.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_permalinks.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_permalinks.php	(revision 25596)
@@ -0,0 +1,204 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/** returns a category id that corresponds to the given permalink (or null)
+ * @param string permalink
+ */
+function get_cat_id_from_permalink( $permalink )
+{
+  $query ='
+SELECT id FROM '.CATEGORIES_TABLE.'
+  WHERE permalink=\''.$permalink.'\'';
+  $ids = array_from_query($query, 'id');
+  if (!empty($ids))
+  {
+    return $ids[0];
+  }
+  return null;
+}
+
+/** returns a category id that has used before this permalink (or null)
+ * @param string permalink
+ * @param boolean is_hit if true update the usage counters on the old permalinks
+ */
+function get_cat_id_from_old_permalink($permalink)
+{
+  $query='
+SELECT c.id
+  FROM '.OLD_PERMALINKS_TABLE.' op INNER JOIN '.CATEGORIES_TABLE.' c
+    ON op.cat_id=c.id
+  WHERE op.permalink=\''.$permalink.'\'
+  LIMIT 1';
+  $result = pwg_query($query);
+  $cat_id = null;
+  if ( pwg_db_num_rows($result) )
+    list( $cat_id ) = pwg_db_fetch_row($result);
+  return $cat_id;
+}
+
+
+/** deletes the permalink associated with a category
+ * returns true on success
+ * @param int cat_id the target category id
+ * @param boolean save if true, the current category-permalink association
+ * is saved in the old permalinks table in case external links hit it
+ */
+function delete_cat_permalink( $cat_id, $save )
+{
+  global $page, $cache;
+  $query = '
+SELECT permalink
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id=\''.$cat_id.'\'
+;';
+  $result = pwg_query($query);
+  if ( pwg_db_num_rows($result) )
+  {
+    list($permalink) = pwg_db_fetch_row($result);
+  }
+  if ( !isset($permalink) )
+  {// no permalink; nothing to do
+    return true;
+  }
+  if ($save)
+  {
+    $old_cat_id = get_cat_id_from_old_permalink($permalink);
+    if ( isset($old_cat_id) and $old_cat_id!=$cat_id )
+    {
+      $page['errors'][] = 
+        sprintf( 
+          l10n('Permalink %s has been previously used by album %s. Delete from the permalink history first'),
+          $permalink, $old_cat_id
+        );
+      return false;
+    }
+  }
+  $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET permalink=NULL
+  WHERE id='.$cat_id.'
+  LIMIT 1';
+  pwg_query($query);
+  
+  unset( $cache['cat_names'] ); //force regeneration
+  if ($save)
+  {
+    if ( isset($old_cat_id) )
+    {
+      $query = '
+UPDATE '.OLD_PERMALINKS_TABLE.'
+  SET date_deleted=NOW()
+  WHERE cat_id='.$cat_id.' AND permalink=\''.$permalink.'\'';
+    }
+    else
+    {
+      $query = '
+INSERT INTO '.OLD_PERMALINKS_TABLE.'
+  (permalink, cat_id, date_deleted)
+VALUES
+  ( \''.$permalink.'\','.$cat_id.',NOW() )';
+    }
+    pwg_query( $query );
+  }
+  return true;
+}
+
+/** sets a new permalink for a category
+ * returns true on success
+ * @param int cat_id the target category id
+ * @param string permalink the new permalink
+ * @param boolean save if true, the current category-permalink association
+ * is saved in the old permalinks table in case external links hit it
+ */
+function set_cat_permalink( $cat_id, $permalink, $save )
+{
+  global $page, $cache;
+  
+  $sanitized_permalink = preg_replace( '#[^a-zA-Z0-9_/-]#', '' ,$permalink);
+  $sanitized_permalink = trim($sanitized_permalink, '/');
+  $sanitized_permalink = str_replace('//', '/', $sanitized_permalink);
+  if ( $sanitized_permalink != $permalink 
+      or preg_match( '#^(\d)+(-.*)?$#', $permalink) )
+  {
+    $page['errors'][] = l10n('The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"');
+    return false;
+  }
+  
+  // check if the new permalink is actively used
+  $existing_cat_id = get_cat_id_from_permalink( $permalink );
+  if ( isset($existing_cat_id) )
+  {
+    if ( $existing_cat_id==$cat_id )
+    {// no change required
+      return true;
+    }
+    else
+    {
+      $page['errors'][] = 
+        sprintf( 
+          l10n('Permalink %s is already used by album %s'),
+          $permalink, $existing_cat_id 
+        );
+      return false;
+    }
+  }
+
+  // check if the new permalink was historically used
+  $old_cat_id = get_cat_id_from_old_permalink($permalink);
+  if ( isset($old_cat_id) and $old_cat_id!=$cat_id )
+  {
+    $page['errors'][] = 
+      sprintf( 
+        l10n('Permalink %s has been previously used by album %s. Delete from the permalink history first'),
+        $permalink, $old_cat_id
+      );
+    return false;
+  }
+
+  if ( !delete_cat_permalink($cat_id, $save ) )
+  {
+    return false;
+  }
+
+  if ( isset($old_cat_id) )
+  {// the new permalink must not be active and old at the same time
+    assert( $old_cat_id==$cat_id );
+    $query = '
+DELETE FROM '.OLD_PERMALINKS_TABLE.'
+  WHERE cat_id='.$old_cat_id.' AND permalink=\''.$permalink.'\'';
+    pwg_query($query);
+  }
+  
+  $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET permalink=\''.$permalink.'\'
+  WHERE id='.$cat_id;
+  //  LIMIT 1';
+  pwg_query($query);
+
+  unset( $cache['cat_names'] ); //force regeneration
+  
+  return true;
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/functions_plugins.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_plugins.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_plugins.inc.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Retrieves an url for a plugin page.
+ * @param string file - php script full name
+ */
+function get_admin_plugin_menu_link($file)
+{
+  global $page;
+  $real_file = realpath($file);
+  $url = get_root_url().'admin.php?page=plugin';
+  if (false!==$real_file)
+  {
+    $real_plugin_path = rtrim(realpath(PHPWG_PLUGINS_PATH), '\\/');
+    $file = substr($real_file, strlen($real_plugin_path)+1);
+    $file = str_replace('\\', '/', $file);//Windows
+    $url .= '&amp;section='.urlencode($file);
+  }
+  else if (isset($page['errors']))
+  {
+    $page['errors'][] = 'PLUGIN ERROR: "'.$file.'" is not a valid file';
+  }
+  return $url;
+}
+?>
Index: /tags/2.6.0RC1/admin/include/functions_upgrade.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_upgrade.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_upgrade.php	(revision 25596)
@@ -0,0 +1,326 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function check_upgrade()
+{
+  if (defined('PHPWG_IN_UPGRADE'))
+  {
+    return PHPWG_IN_UPGRADE;
+  }
+  return false;
+}
+
+// concerning upgrade, we use the default tables
+function prepare_conf_upgrade()
+{
+  global $prefixeTable;
+
+  // $conf is not used for users tables
+  // define cannot be re-defined
+  define('CATEGORIES_TABLE', $prefixeTable.'categories');
+  define('COMMENTS_TABLE', $prefixeTable.'comments');
+  define('CONFIG_TABLE', $prefixeTable.'config');
+  define('FAVORITES_TABLE', $prefixeTable.'favorites');
+  define('GROUP_ACCESS_TABLE', $prefixeTable.'group_access');
+  define('GROUPS_TABLE', $prefixeTable.'groups');
+  define('HISTORY_TABLE', $prefixeTable.'history');
+  define('HISTORY_SUMMARY_TABLE', $prefixeTable.'history_summary');
+  define('IMAGE_CATEGORY_TABLE', $prefixeTable.'image_category');
+  define('IMAGES_TABLE', $prefixeTable.'images');
+  define('SESSIONS_TABLE', $prefixeTable.'sessions');
+  define('SITES_TABLE', $prefixeTable.'sites');
+  define('USER_ACCESS_TABLE', $prefixeTable.'user_access');
+  define('USER_GROUP_TABLE', $prefixeTable.'user_group');
+  define('USERS_TABLE', $prefixeTable.'users');
+  define('USER_INFOS_TABLE', $prefixeTable.'user_infos');
+  define('USER_FEED_TABLE', $prefixeTable.'user_feed');
+  define('RATE_TABLE', $prefixeTable.'rate');
+  define('USER_CACHE_TABLE', $prefixeTable.'user_cache');
+  define('USER_CACHE_CATEGORIES_TABLE', $prefixeTable.'user_cache_categories');
+  define('CADDIE_TABLE', $prefixeTable.'caddie');
+  define('UPGRADE_TABLE', $prefixeTable.'upgrade');
+  define('SEARCH_TABLE', $prefixeTable.'search');
+  define('USER_MAIL_NOTIFICATION_TABLE', $prefixeTable.'user_mail_notification');
+  define('TAGS_TABLE', $prefixeTable.'tags');
+  define('IMAGE_TAG_TABLE', $prefixeTable.'image_tag');
+  define('PLUGINS_TABLE', $prefixeTable.'plugins');
+  define('OLD_PERMALINKS_TABLE', $prefixeTable.'old_permalinks');
+  define('THEMES_TABLE', $prefixeTable.'themes');
+  define('LANGUAGES_TABLE', $prefixeTable.'languages');
+}
+
+// Deactivate all non-standard plugins
+function deactivate_non_standard_plugins()
+{
+  global $page;
+
+  $standard_plugins = array(
+    'admin_multi_view',
+    'c13y_upgrade',
+    'event_tracer',
+    'language_switch',
+    'LocalFilesEditor'
+    );
+
+  $query = '
+SELECT id
+FROM '.PREFIX_TABLE.'plugins
+WHERE state = \'active\'
+AND id NOT IN (\'' . implode('\',\'', $standard_plugins) . '\')
+;';
+
+  $result = pwg_query($query);
+  $plugins = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $plugins[] = $row['id'];
+  }
+
+  if (!empty($plugins))
+  {
+    $query = '
+UPDATE '.PREFIX_TABLE.'plugins
+SET state=\'inactive\'
+WHERE id IN (\'' . implode('\',\'', $plugins) . '\')
+;';
+    pwg_query($query);
+
+    $page['infos'][] = l10n('As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:')
+                        .'<p><i>'.implode(', ', $plugins).'</i></p>';
+  }
+}
+
+// Deactivate all non-standard themes
+function deactivate_non_standard_themes()
+{
+  global $page, $conf;
+
+  $standard_themes = array(
+    'clear',
+    'Sylvia',
+    'dark',
+    'elegant',
+    'smartpocket',
+    );
+
+  $query = '
+SELECT
+    id,
+    name
+  FROM '.PREFIX_TABLE.'themes
+  WHERE id NOT IN (\''.implode("','", $standard_themes).'\')
+;';
+  $result = pwg_query($query);
+  $theme_ids = array();
+  $theme_names = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $theme_ids[] = $row['id'];
+    $theme_names[] = $row['name'];
+  }
+
+  if (!empty($theme_ids))
+  {
+    $query = '
+DELETE
+  FROM '.PREFIX_TABLE.'themes
+  WHERE id IN (\''.implode("','", $theme_ids).'\')
+;';
+    pwg_query($query);
+
+    $page['infos'][] = l10n('As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:')
+                        .'<p><i>'.implode(', ', $theme_names).'</i></p>';
+
+    // what is the default theme?
+    $query = '
+SELECT theme
+  FROM '.PREFIX_TABLE.'user_infos
+  WHERE user_id = '.$conf['default_user_id'].'
+;';
+    list($default_theme) = pwg_db_fetch_row(pwg_query($query));
+
+    // if the default theme has just been deactivated, let's set another core theme as default
+    if (in_array($default_theme, $theme_ids))
+    {
+      $query = '
+UPDATE '.PREFIX_TABLE.'user_infos
+  SET theme = \'elegant\'
+  WHERE user_id = '.$conf['default_user_id'].'
+;';
+      pwg_query($query);
+    }
+  }
+}
+
+// Deactivate all templates
+function deactivate_templates()
+{
+  $query = '
+  UPDATE '.PREFIX_TABLE.'config
+    SET value = \''. array() .'\'
+  WHERE param = \'extents_for_templates\';';
+}
+
+// Check access rights
+function check_upgrade_access_rights()
+{
+  global $conf, $page, $current_release;
+
+  if (version_compare($current_release, '2.0', '>=') and isset($_COOKIE[session_name()]))
+  {
+    // Check if user is already connected as webmaster
+    session_start();
+    if (!empty($_SESSION['pwg_uid']))
+    {
+      $query = '
+SELECT status
+  FROM '.USER_INFOS_TABLE.'
+  WHERE user_id = '.$_SESSION['pwg_uid'].'
+;';
+      pwg_query($query);
+
+      $row = pwg_db_fetch_assoc(pwg_query($query));
+      if (isset($row['status']) and $row['status'] == 'webmaster')
+      {
+        define('PHPWG_IN_UPGRADE', true);
+        return;
+      }
+    }
+  }
+
+  if (!isset($_POST['username']) or !isset($_POST['password']))
+  {
+    return;
+  }
+
+  $username = $_POST['username'];
+  $password = $_POST['password'];
+
+  if(!@get_magic_quotes_gpc())
+  {
+    $username = pwg_db_real_escape_string($username);
+  }
+
+  if (version_compare($current_release, '2.0', '<'))
+  {
+    $username = utf8_decode($username);
+    $password = utf8_decode($password);
+  }
+
+  if (version_compare($current_release, '1.5', '<'))
+  {
+    $query = '
+SELECT password, status
+FROM '.USERS_TABLE.'
+WHERE username = \''.$username.'\'
+;';
+  }
+  else
+  {
+    $query = '
+SELECT u.password, ui.status
+FROM '.USERS_TABLE.' AS u
+INNER JOIN '.USER_INFOS_TABLE.' AS ui
+ON u.'.$conf['user_fields']['id'].'=ui.user_id
+WHERE '.$conf['user_fields']['username'].'=\''.$username.'\'
+;';
+  }
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+
+  if (!$conf['password_verify']($password, $row['password']))
+  {
+    $page['errors'][] = l10n('Invalid password!');
+  }
+  elseif ($row['status'] != 'admin' and $row['status'] != 'webmaster')
+  {
+    $page['errors'][] = l10n('You do not have access rights to run upgrade');
+  }
+  else
+  {
+    define('PHPWG_IN_UPGRADE', true);
+  }
+}
+
+/**
+ * which upgrades are available ?
+ *
+ * @return array
+ */
+function get_available_upgrade_ids()
+{
+  $upgrades_path = PHPWG_ROOT_PATH.'install/db';
+
+  $available_upgrade_ids = array();
+
+  if ($contents = opendir($upgrades_path))
+  {
+    while (($node = readdir($contents)) !== false)
+    {
+      if (is_file($upgrades_path.'/'.$node)
+          and preg_match('/^(.*?)-database\.php$/', $node, $match))
+      {
+        $available_upgrade_ids[] = $match[1];
+      }
+    }
+  }
+  natcasesort($available_upgrade_ids);
+
+  return $available_upgrade_ids;
+}
+
+
+/**
+ * returns true if there are available upgrade files
+ */
+function check_upgrade_feed()
+{
+  // retrieve already applied upgrades
+  $query = '
+SELECT id
+  FROM '.UPGRADE_TABLE.'
+;';
+  $applied = array_from_query($query, 'id');
+
+  // retrieve existing upgrades
+  $existing = get_available_upgrade_ids();
+
+  // which upgrades need to be applied?
+  return (count(array_diff($existing, $applied)) > 0);
+}
+
+function upgrade_db_connect()
+{
+  global $conf;
+
+  try
+  {
+    pwg_db_connect($conf['db_host'], $conf['db_user'],
+                   $conf['db_password'], $conf['db_base']);
+    pwg_db_check_version();
+  }
+  catch (Exception $e)
+  {
+    my_error(l10n($e->getMessage()), true); 
+  }
+}
+?>
Index: /tags/2.6.0RC1/admin/include/functions_upload.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/functions_upload.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/functions_upload.inc.php	(revision 25596)
@@ -0,0 +1,530 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php');
+
+// add default event handler for image and thumbnail resize
+add_event_handler('upload_image_resize', 'pwg_image_resize', EVENT_HANDLER_PRIORITY_NEUTRAL, 7);
+add_event_handler('upload_thumbnail_resize', 'pwg_image_resize', EVENT_HANDLER_PRIORITY_NEUTRAL, 9);
+
+function get_upload_form_config()
+{
+  // default configuration for upload
+  $upload_form_config = array(
+    'original_resize' => array(
+      'default' => false,
+      'can_be_null' => false,
+      ),
+
+    'original_resize_maxwidth' => array(
+      'default' => 2000,
+      'min' => 500,
+      'max' => 20000,
+      'pattern' => '/^\d+$/',
+      'can_be_null' => false,
+      'error_message' => l10n('The original maximum width must be a number between %d and %d'),
+      ),
+
+    'original_resize_maxheight' => array(
+      'default' => 2000,
+      'min' => 300,
+      'max' => 20000,
+      'pattern' => '/^\d+$/',
+      'can_be_null' => false,
+      'error_message' => l10n('The original maximum height must be a number between %d and %d'),
+      ),
+
+    'original_resize_quality' => array(
+      'default' => 95,
+      'min' => 50,
+      'max' => 98,
+      'pattern' => '/^\d+$/',
+      'can_be_null' => false,
+      'error_message' => l10n('The original image quality must be a number between %d and %d'),
+      ),
+    );
+
+  return $upload_form_config;
+}
+
+function save_upload_form_config($data, &$errors=array(), &$form_errors=array())
+{
+  if (!is_array($data) or empty($data))
+  {
+    return false;
+  }
+
+  $upload_form_config = get_upload_form_config();
+  $updates = array();
+
+  foreach ($data as $field => $value)
+  {
+    if (!isset($upload_form_config[$field]))
+    {
+      continue;
+    }
+    if (is_bool($upload_form_config[$field]['default']))
+    {
+      if (isset($value))
+      {
+        $value = true;
+      }
+      else
+      {
+        $value = false;
+      }
+
+      $updates[] = array(
+        'param' => $field,
+        'value' => boolean_to_string($value)
+        );
+    }
+    elseif ($upload_form_config[$field]['can_be_null'] and empty($value))
+    {
+      $updates[] = array(
+        'param' => $field,
+        'value' => 'false'
+        );
+    }
+    else
+    {
+      $min = $upload_form_config[$field]['min'];
+      $max = $upload_form_config[$field]['max'];
+      $pattern = $upload_form_config[$field]['pattern'];
+
+      if (preg_match($pattern, $value) and $value >= $min and $value <= $max)
+      {
+         $updates[] = array(
+          'param' => $field,
+          'value' => $value
+          );
+      }
+      else
+      {
+        $errors[] = sprintf(
+          $upload_form_config[$field]['error_message'],
+          $min, $max
+          );
+        
+        $form_errors[$field] = '['.$min.' .. '.$max.']';
+      }
+    }
+  }
+
+  if (count($errors) == 0)
+  {
+    mass_updates(
+      CONFIG_TABLE,
+      array(
+        'primary' => array('param'),
+        'update' => array('value')
+        ),
+      $updates
+      );
+    return true;
+  }
+
+  return false;
+}
+
+function add_uploaded_file($source_filepath, $original_filename=null, $categories=null, $level=null, $image_id=null, $original_md5sum=null)
+{
+  // 1) move uploaded file to upload/2010/01/22/20100122003814-449ada00.jpg
+  //
+  // 2) keep/resize original
+  //
+  // 3) register in database
+
+  // TODO
+  // * check md5sum (already exists?)
+
+  global $conf, $user;
+
+  if (isset($original_md5sum))
+  {
+    $md5sum = $original_md5sum;
+  }
+  else
+  {
+    $md5sum = md5_file($source_filepath);
+  }
+
+  $file_path = null;
+
+  if (isset($image_id))
+  {
+    // this photo already exists, we update it
+    $query = '
+SELECT
+    path
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$image_id.'
+;';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $file_path = $row['path'];
+    }
+
+    if (!isset($file_path))
+    {
+      die('['.__FUNCTION__.'] this photo does not exist in the database');
+    }
+
+    // delete all physical files related to the photo (thumbnail, web site, HD)
+    delete_element_files(array($image_id));
+  }
+  else
+  {
+    // this photo is new
+
+    // current date
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+    list($year, $month, $day) = preg_split('/[^\d]/', $dbnow, 4);
+
+    // upload directory hierarchy
+    $upload_dir = sprintf(
+      PHPWG_ROOT_PATH.$conf['upload_dir'].'/%s/%s/%s',
+      $year,
+      $month,
+      $day
+      );
+
+    // compute file path
+    $date_string = preg_replace('/[^\d]/', '', $dbnow);
+    $random_string = substr($md5sum, 0, 8);
+    $filename_wo_ext = $date_string.'-'.$random_string;
+    $file_path = $upload_dir.'/'.$filename_wo_ext.'.';
+
+    list($width, $height, $type) = getimagesize($source_filepath);
+    if (IMAGETYPE_PNG == $type)
+    {
+      $file_path.= 'png';
+    }
+    elseif (IMAGETYPE_GIF == $type)
+    {
+      $file_path.= 'gif';
+    }
+    else
+    {
+      $file_path.= 'jpg';
+    }
+
+    prepare_directory($upload_dir);
+  }
+
+  if (is_uploaded_file($source_filepath))
+  {
+    move_uploaded_file($source_filepath, $file_path);
+  }
+  else
+  {
+    rename($source_filepath, $file_path);
+  }
+  @chmod($file_path, 0644);
+
+  if (pwg_image::get_library() != 'gd')
+  {
+    if ($conf['original_resize'])
+    {
+      $need_resize = need_resize($file_path, $conf['original_resize_maxwidth'], $conf['original_resize_maxheight']);
+
+      if ($need_resize)
+      {
+        $img = new pwg_image($file_path);
+
+        $img->pwg_resize(
+          $file_path,
+          $conf['original_resize_maxwidth'],
+          $conf['original_resize_maxheight'],
+          $conf['original_resize_quality'],
+          $conf['upload_form_automatic_rotation'],
+          false
+          );
+
+        $img->destroy();
+      }
+    }
+  }
+
+  // we need to save the rotation angle in the database to compute
+  // width/height of "multisizes"
+  $rotation_angle = pwg_image::get_rotation_angle($file_path);
+  $rotation = pwg_image::get_rotation_code_from_angle($rotation_angle);
+  
+  $file_infos = pwg_image_infos($file_path);
+
+  if (isset($image_id))
+  {
+    $update = array(
+      'file' => pwg_db_real_escape_string(isset($original_filename) ? $original_filename : basename($file_path)),
+      'filesize' => $file_infos['filesize'],
+      'width' => $file_infos['width'],
+      'height' => $file_infos['height'],
+      'md5sum' => $md5sum,
+      'added_by' => $user['id'],
+      'rotation' => $rotation,
+      );
+
+    if (isset($level))
+    {
+      $update['level'] = $level;
+    }
+
+    single_update(
+      IMAGES_TABLE,
+      $update,
+      array('id' => $image_id)
+      );
+  }
+  else
+  {
+    // database registration
+    $file = pwg_db_real_escape_string(isset($original_filename) ? $original_filename : basename($file_path));
+    $insert = array(
+      'file' => $file,
+      'name' => get_name_from_file($file),
+      'date_available' => $dbnow,
+      'path' => preg_replace('#^'.preg_quote(PHPWG_ROOT_PATH).'#', '', $file_path),
+      'filesize' => $file_infos['filesize'],
+      'width' => $file_infos['width'],
+      'height' => $file_infos['height'],
+      'md5sum' => $md5sum,
+      'added_by' => $user['id'],
+      'rotation' => $rotation,
+      );
+
+    if (isset($level))
+    {
+      $insert['level'] = $level;
+    }
+
+    single_insert(IMAGES_TABLE, $insert);
+
+    $image_id = pwg_db_insert_id(IMAGES_TABLE);
+  }
+
+  if (isset($categories) and count($categories) > 0)
+  {
+    associate_images_to_categories(
+      array($image_id),
+      $categories
+      );
+  }
+
+  // update metadata from the uploaded file (exif/iptc)
+  if ($conf['use_exif'] and !function_exists('read_exif_data'))
+  {
+    $conf['use_exif'] = false;
+  }
+  sync_metadata(array($image_id));
+
+  invalidate_user_cache();
+
+  // cache thumbnail
+  $query = '
+SELECT
+    id,
+    path
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$image_id.'
+;';
+  $image_infos = pwg_db_fetch_assoc(pwg_query($query));
+
+  set_make_full_url();
+  // in case we are on uploadify.php, we have to replace the false path
+  $thumb_url = preg_replace('#admin/include/i#', 'i', DerivativeImage::thumb_url($image_infos));
+  unset_make_full_url();
+  
+  fetchRemote($thumb_url, $dest);
+  
+
+  return $image_id;
+}
+
+function prepare_directory($directory)
+{
+  if (!is_dir($directory)) {
+    if (substr(PHP_OS, 0, 3) == 'WIN')
+    {
+      $directory = str_replace('/', DIRECTORY_SEPARATOR, $directory);
+    }
+    umask(0000);
+    $recursive = true;
+    if (!@mkdir($directory, 0777, $recursive))
+    {
+      die('[prepare_directory] cannot create directory "'.$directory.'"');
+    }
+  }
+
+  if (!is_writable($directory))
+  {
+    // last chance to make the directory writable
+    @chmod($directory, 0777);
+
+    if (!is_writable($directory))
+    {
+      die('[prepare_directory] directory "'.$directory.'" has no write access');
+    }
+  }
+
+  secure_directory($directory);
+}
+
+function need_resize($image_filepath, $max_width, $max_height)
+{
+  // TODO : the resize check should take the orientation into account. If a
+  // rotation must be applied to the resized photo, then we should test
+  // invert width and height.
+  list($width, $height) = getimagesize($image_filepath);
+
+  if ($width > $max_width or $height > $max_height)
+  {
+    return true;
+  }
+
+  return false;
+}
+
+function pwg_image_infos($path)
+{
+  list($width, $height) = getimagesize($path);
+  $filesize = floor(filesize($path)/1024);
+
+  return array(
+    'width'  => $width,
+    'height' => $height,
+    'filesize' => $filesize,
+    );
+}
+
+function is_valid_image_extension($extension)
+{
+  return in_array(strtolower($extension), array('jpg', 'jpeg', 'png', 'gif'));
+}
+
+function file_upload_error_message($error_code)
+{
+  switch ($error_code) {
+    case UPLOAD_ERR_INI_SIZE:
+      return sprintf(
+        l10n('The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'),
+        get_ini_size('upload_max_filesize', false)
+        );
+    case UPLOAD_ERR_FORM_SIZE:
+      return l10n('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form');
+    case UPLOAD_ERR_PARTIAL:
+      return l10n('The uploaded file was only partially uploaded');
+    case UPLOAD_ERR_NO_FILE:
+      return l10n('No file was uploaded');
+    case UPLOAD_ERR_NO_TMP_DIR:
+      return l10n('Missing a temporary folder');
+    case UPLOAD_ERR_CANT_WRITE:
+      return l10n('Failed to write file to disk');
+    case UPLOAD_ERR_EXTENSION:
+      return l10n('File upload stopped by extension');
+    default:
+      return l10n('Unknown upload error');
+  }
+}
+
+function get_ini_size($ini_key, $in_bytes=true)
+{
+  $size = ini_get($ini_key);
+
+  if ($in_bytes)
+  {
+    $size = convert_shorthand_notation_to_bytes($size);
+  }
+
+  return $size;
+}
+
+function convert_shorthand_notation_to_bytes($value)
+{
+  $suffix = substr($value, -1);
+  $multiply_by = null;
+
+  if ('K' == $suffix)
+  {
+    $multiply_by = 1024;
+  }
+  else if ('M' == $suffix)
+  {
+    $multiply_by = 1024*1024;
+  }
+  else if ('G' == $suffix)
+  {
+    $multiply_by = 1024*1024*1024;
+  }
+
+  if (isset($multiply_by))
+  {
+    $value = substr($value, 0, -1);
+    $value*= $multiply_by;
+  }
+
+  return $value;
+}
+
+function add_upload_error($upload_id, $error_message)
+{
+  $_SESSION['uploads_error'][$upload_id][] = $error_message;
+}
+
+function ready_for_upload_message()
+{
+  global $conf;
+
+  $relative_dir = preg_replace('#^'.PHPWG_ROOT_PATH.'#', '', $conf['upload_dir']);
+
+  if (!is_dir($conf['upload_dir']))
+  {
+    if (!is_writable(dirname($conf['upload_dir'])))
+    {
+      return sprintf(
+        l10n('Create the "%s" directory at the root of your Piwigo installation'),
+        $relative_dir
+        );
+    }
+  }
+  else
+  {
+    if (!is_writable($conf['upload_dir']))
+    {
+      @chmod($conf['upload_dir'], 0777);
+
+      if (!is_writable($conf['upload_dir']))
+      {
+        return sprintf(
+          l10n('Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'),
+          $relative_dir
+          );
+      }
+    }
+  }
+
+  return null;
+}
+?>
Index: /tags/2.6.0RC1/admin/include/image.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/image.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/image.class.php	(revision 25596)
@@ -0,0 +1,821 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           Image Interface                             |
+// +-----------------------------------------------------------------------+
+
+// Define all needed methods for image class
+interface imageInterface
+{
+  function get_width();
+
+  function get_height();
+
+  function set_compression_quality($quality);
+
+  function crop($width, $height, $x, $y);
+
+  function strip();
+
+  function rotate($rotation);
+
+  function resize($width, $height);
+
+  function sharpen($amount);
+
+  function compose($overlay, $x, $y, $opacity);
+
+  function write($destination_filepath);
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Main Image Class                             |
+// +-----------------------------------------------------------------------+
+
+class pwg_image
+{
+  var $image;
+  var $library = '';
+  var $source_filepath = '';
+  static $ext_imagick_version = '';
+
+  function __construct($source_filepath, $library=null)
+  {
+    $this->source_filepath = $source_filepath;
+
+    trigger_action('load_image_library', array(&$this) );
+
+    if (is_object($this->image))
+    {
+      return; // A plugin may have load its own library
+    }
+
+    $extension = strtolower(get_extension($source_filepath));
+
+    if (!in_array($extension, array('jpg', 'jpeg', 'png', 'gif')))
+    {
+      die('[Image] unsupported file extension');
+    }
+
+    if (!($this->library = self::get_library($library, $extension)))
+    {
+      die('No image library available on your server.');
+    }
+
+    $class = 'image_'.$this->library;
+    $this->image = new $class($source_filepath);
+  }
+
+  // Unknow methods will be redirected to image object
+  function __call($method, $arguments)
+  {
+    return call_user_func_array(array($this->image, $method), $arguments);
+  }
+
+  // Piwigo resize function
+  function pwg_resize($destination_filepath, $max_width, $max_height, $quality, $automatic_rotation=true, $strip_metadata=false, $crop=false, $follow_orientation=true)
+  {
+    $starttime = get_moment();
+
+    // width/height
+    $source_width  = $this->image->get_width();
+    $source_height = $this->image->get_height();
+
+    $rotation = null;
+    if ($automatic_rotation)
+    {
+      $rotation = self::get_rotation_angle($this->source_filepath);
+    }
+    $resize_dimensions = self::get_resize_dimensions($source_width, $source_height, $max_width, $max_height, $rotation, $crop, $follow_orientation);
+
+    // testing on height is useless in theory: if width is unchanged, there
+    // should be no resize, because width/height ratio is not modified.
+    if ($resize_dimensions['width'] == $source_width and $resize_dimensions['height'] == $source_height)
+    {
+      // the image doesn't need any resize! We just copy it to the destination
+      copy($this->source_filepath, $destination_filepath);
+      return $this->get_resize_result($destination_filepath, $resize_dimensions['width'], $resize_dimensions['height'], $starttime);
+    }
+
+    $this->image->set_compression_quality($quality);
+
+    if ($strip_metadata)
+    {
+      // we save a few kilobytes. For example a thumbnail with metadata weights 25KB, without metadata 7KB.
+      $this->image->strip();
+    }
+
+    if (isset($resize_dimensions['crop']))
+    {
+      $this->image->crop($resize_dimensions['crop']['width'], $resize_dimensions['crop']['height'], $resize_dimensions['crop']['x'], $resize_dimensions['crop']['y']);
+    }
+
+    $this->image->resize($resize_dimensions['width'], $resize_dimensions['height']);
+
+    if (!empty($rotation))
+    {
+      $this->image->rotate($rotation);
+    }
+
+    $this->image->write($destination_filepath);
+
+    // everything should be OK if we are here!
+    return $this->get_resize_result($destination_filepath, $resize_dimensions['width'], $resize_dimensions['height'], $starttime);
+  }
+
+  static function get_resize_dimensions($width, $height, $max_width, $max_height, $rotation=null, $crop=false, $follow_orientation=true)
+  {
+    $rotate_for_dimensions = false;
+    if (isset($rotation) and in_array(abs($rotation), array(90, 270)))
+    {
+      $rotate_for_dimensions = true;
+    }
+
+    if ($rotate_for_dimensions)
+    {
+      list($width, $height) = array($height, $width);
+    }
+
+    if ($crop)
+    {
+      $x = 0;
+      $y = 0;
+
+      if ($width < $height and $follow_orientation)
+      {
+        list($max_width, $max_height) = array($max_height, $max_width);
+      }
+
+      $img_ratio = $width / $height;
+      $dest_ratio = $max_width / $max_height;
+
+      if($dest_ratio > $img_ratio)
+      {
+        $destHeight = round($width * $max_height / $max_width);
+        $y = round(($height - $destHeight) / 2 );
+        $height = $destHeight;
+      }
+      elseif ($dest_ratio < $img_ratio)
+      {
+        $destWidth = round($height * $max_width / $max_height);
+        $x = round(($width - $destWidth) / 2 );
+        $width = $destWidth;
+      }
+    }
+
+    $ratio_width  = $width / $max_width;
+    $ratio_height = $height / $max_height;
+    $destination_width = $width;
+    $destination_height = $height;
+
+    // maximal size exceeded ?
+    if ($ratio_width > 1 or $ratio_height > 1)
+    {
+      if ($ratio_width < $ratio_height)
+      {
+        $destination_width = round($width / $ratio_height);
+        $destination_height = $max_height;
+      }
+      else
+      {
+        $destination_width = $max_width;
+        $destination_height = round($height / $ratio_width);
+      }
+    }
+
+    if ($rotate_for_dimensions)
+    {
+      list($destination_width, $destination_height) = array($destination_height, $destination_width);
+    }
+
+    $result = array(
+      'width' => $destination_width,
+      'height'=> $destination_height,
+      );
+
+    if ($crop and ($x or $y))
+    {
+      $result['crop'] = array(
+        'width' => $width,
+        'height' => $height,
+        'x' => $x,
+        'y' => $y,
+        );
+    }
+    return $result;
+  }
+
+  static function get_rotation_angle($source_filepath)
+  {
+    list($width, $height, $type) = getimagesize($source_filepath);
+    if (IMAGETYPE_JPEG != $type)
+    {
+      return null;
+    }
+
+    if (!function_exists('exif_read_data'))
+    {
+      return null;
+    }
+
+    $rotation = 0;
+
+    $exif = exif_read_data($source_filepath);
+
+    if (isset($exif['Orientation']) and preg_match('/^\s*(\d)/', $exif['Orientation'], $matches))
+    {
+      $orientation = $matches[1];
+      if (in_array($orientation, array(3, 4)))
+      {
+        $rotation = 180;
+      }
+      elseif (in_array($orientation, array(5, 6)))
+      {
+        $rotation = 270;
+      }
+      elseif (in_array($orientation, array(7, 8)))
+      {
+        $rotation = 90;
+      }
+    }
+
+    return $rotation;
+  }
+
+  static function get_rotation_code_from_angle($rotation_angle)
+  {
+    switch($rotation_angle)
+    {
+      case 0:   return 0;
+      case 90:  return 1;
+      case 180: return 2;
+      case 270: return 3;
+    }
+  }
+
+  static function get_rotation_angle_from_code($rotation_code)
+  {
+    switch($rotation_code%4)
+    {
+      case 0: return 0;
+      case 1: return 90;
+      case 2: return 180;
+      case 3: return 270;
+    }
+  }
+
+  /** Returns a normalized convolution kernel for sharpening*/
+  static function get_sharpen_matrix($amount)
+  {
+    // Amount should be in the range of 48-10
+    $amount = round(abs(-48 + ($amount * 0.38)), 2);
+
+    $matrix = array(
+      array(-1,   -1,    -1),
+      array(-1, $amount, -1),
+      array(-1,   -1,    -1),
+      );
+
+    $norm = array_sum(array_map('array_sum', $matrix));
+
+    for ($i=0; $i<3; $i++)
+    {
+      $line = & $matrix[$i];
+      for ($j=0; $j<3; $j++)
+      {
+        $line[$j] /= $norm;
+      }
+    }
+
+    return $matrix;
+  }
+
+  private function get_resize_result($destination_filepath, $width, $height, $time=null)
+  {
+    return array(
+      'source'      => $this->source_filepath,
+      'destination' => $destination_filepath,
+      'width'       => $width,
+      'height'      => $height,
+      'size'        => floor(filesize($destination_filepath) / 1024).' KB',
+      'time'        => $time ? number_format((get_moment() - $time) * 1000, 2, '.', ' ').' ms' : null,
+      'library'     => $this->library,
+    );
+  }
+
+  static function is_imagick()
+  {
+    return (extension_loaded('imagick') and class_exists('Imagick'));
+  }
+
+  static function is_ext_imagick()
+  {
+    global $conf;
+
+    if (!function_exists('exec'))
+    {
+      return false;
+    }
+    @exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
+    if (is_array($returnarray) and !empty($returnarray[0]) and preg_match('/ImageMagick/i', $returnarray[0]))
+    {
+      if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
+      {
+        self::$ext_imagick_version = $match[1];
+      }
+      return true;
+    }
+    return false;
+  }
+
+  static function is_gd()
+  {
+    return function_exists('gd_info');
+  }
+
+  static function get_library($library=null, $extension=null)
+  {
+    global $conf;
+
+    if (is_null($library))
+    {
+      $library = $conf['graphics_library'];
+    }
+
+    // Choose image library
+    switch (strtolower($library))
+    {
+      case 'auto':
+      case 'imagick':
+        if ($extension != 'gif' and self::is_imagick())
+        {
+          return 'imagick';
+        }
+      case 'ext_imagick':
+        if ($extension != 'gif' and self::is_ext_imagick())
+        {
+          return 'ext_imagick';
+        }
+      case 'gd':
+        if (self::is_gd())
+        {
+          return 'gd';
+        }
+      default:
+        if ($library != 'auto')
+        {
+          // Requested library not available. Try another library
+          return self::get_library('auto', $extension);
+        }
+    }
+    return false;
+  }
+
+  function destroy()
+  {
+    if (method_exists($this->image, 'destroy'))
+    {
+      return $this->image->destroy();
+    }
+    return true;
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                   Class for Imagick extension                         |
+// +-----------------------------------------------------------------------+
+
+class image_imagick implements imageInterface
+{
+  var $image;
+
+  function __construct($source_filepath)
+  {
+    // A bug cause that Imagick class can not be extended
+    $this->image = new Imagick($source_filepath);
+  }
+
+  function get_width()
+  {
+    return $this->image->getImageWidth();
+  }
+
+  function get_height()
+  {
+    return $this->image->getImageHeight();
+  }
+
+  function set_compression_quality($quality)
+  {
+    return $this->image->setImageCompressionQuality($quality);
+  }
+
+  function crop($width, $height, $x, $y)
+  {
+    return $this->image->cropImage($width, $height, $x, $y);
+  }
+
+  function strip()
+  {
+    return $this->image->stripImage();
+  }
+
+  function rotate($rotation)
+  {
+    $this->image->rotateImage(new ImagickPixel(), -$rotation);
+    $this->image->setImageOrientation(Imagick::ORIENTATION_TOPLEFT);
+    return true;
+  }
+
+  function resize($width, $height)
+  {
+    $this->image->setInterlaceScheme(Imagick::INTERLACE_LINE);
+
+    // TODO need to explain this condition
+    if ($this->get_width()%2 == 0
+        && $this->get_height()%2 == 0
+        && $this->get_width() > 3*$width)
+    {
+      $this->image->scaleImage($this->get_width()/2, $this->get_height()/2);
+    }
+
+    return $this->image->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 0.9);
+  }
+
+  function sharpen($amount)
+  {
+    $m = pwg_image::get_sharpen_matrix($amount);
+    return  $this->image->convolveImage($m);
+  }
+
+  function compose($overlay, $x, $y, $opacity)
+  {
+    $ioverlay = $overlay->image->image;
+    /*if ($ioverlay->getImageAlphaChannel() !== Imagick::ALPHACHANNEL_OPAQUE)
+    {
+      // Force the image to have an alpha channel
+      $ioverlay->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
+    }*/
+
+    global $dirty_trick_xrepeat;
+    if ( !isset($dirty_trick_xrepeat) && $opacity < 100)
+    {// NOTE: Using setImageOpacity will destroy current alpha channels!
+      $ioverlay->evaluateImage(Imagick::EVALUATE_MULTIPLY, $opacity / 100, Imagick::CHANNEL_ALPHA);
+      $dirty_trick_xrepeat = true;
+    }
+
+    return $this->image->compositeImage($ioverlay, Imagick::COMPOSITE_DISSOLVE, $x, $y);
+  }
+
+  function write($destination_filepath)
+  {
+    // use 4:2:2 chroma subsampling (reduce file size by 20-30% with "almost" no human perception)
+    $this->image->setSamplingFactors( array(2,1) );
+    return $this->image->writeImage($destination_filepath);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |            Class for ImageMagick external installation                |
+// +-----------------------------------------------------------------------+
+
+class image_ext_imagick implements imageInterface
+{
+  var $imagickdir = '';
+  var $source_filepath = '';
+  var $width = '';
+  var $height = '';
+  var $commands = array();
+
+  function __construct($source_filepath)
+  {
+    global $conf;
+    $this->source_filepath = $source_filepath;
+    $this->imagickdir = $conf['ext_imagick_dir'];
+
+    if (strpos(@$_SERVER['SCRIPT_FILENAME'], '/kunden/') === 0)  // 1and1
+    {
+      @putenv('MAGICK_THREAD_LIMIT=1');
+    }
+
+    $command = $this->imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"';
+    @exec($command, $returnarray);
+    if(!is_array($returnarray) or empty($returnarray[0]) or !preg_match('/^(\d+)x(\d+)$/', $returnarray[0], $match))
+    {
+      die("[External ImageMagick] Corrupt image\n" . var_export($returnarray, true));
+    }
+
+    $this->width = $match[1];
+    $this->height = $match[2];
+  }
+
+  function add_command($command, $params=null)
+  {
+    $this->commands[$command] = $params;
+  }
+
+  function get_width()
+  {
+    return $this->width;
+  }
+
+  function get_height()
+  {
+    return $this->height;
+  }
+
+  function crop($width, $height, $x, $y)
+  {
+    $this->add_command('crop', $width.'x'.$height.'+'.$x.'+'.$y);
+    return true;
+  }
+
+  function strip()
+  {
+    $this->add_command('strip');
+    return true;
+  }
+
+  function rotate($rotation)
+  {
+    if (empty($rotation))
+    {
+      return true;
+    }
+
+    if ($rotation==90 || $rotation==270)
+    {
+      $tmp = $this->width;
+      $this->width = $this->height;
+      $this->height = $tmp;
+    }
+    $this->add_command('rotate', -$rotation);
+    $this->add_command('orient', 'top-left');
+    return true;
+  }
+
+  function set_compression_quality($quality)
+  {
+    $this->add_command('quality', $quality);
+    return true;
+  }
+
+  function resize($width, $height)
+  {
+    $this->add_command('filter', 'Lanczos');
+    $this->add_command('resize', $width.'x'.$height.'!');
+    return true;
+  }
+
+  function sharpen($amount)
+  {
+    $m = pwg_image::get_sharpen_matrix($amount);
+
+    $param ='convolve "'.count($m).':';
+    foreach ($m as $line)
+    {
+      $param .= ' ';
+      $param .= implode(',', $line);
+    }
+    $param .= '"';
+    $this->add_command('morphology', $param);
+    return true;
+  }
+
+  function compose($overlay, $x, $y, $opacity)
+  {
+    $param = 'compose dissolve -define compose:args='.$opacity;
+    $param .= ' '.escapeshellarg(realpath($overlay->image->source_filepath));
+    $param .= ' -gravity NorthWest -geometry +'.$x.'+'.$y;
+    $param .= ' -composite';
+    $this->add_command($param);
+    return true;
+  }
+
+  function write($destination_filepath)
+  {
+    $this->add_command('interlace', 'line'); // progressive rendering
+    // use 4:2:2 chroma subsampling (reduce file size by 20-30% with "almost" no human perception)
+    //
+    // option deactivated for Piwigo 2.4.1, it doesn't work fo old versions
+    // of ImageMagick, see bug:2672. To reactivate once we have a better way
+    // to detect IM version and when we know which version supports this
+    // option
+    //
+    if (version_compare(pwg_image::$ext_imagick_version, '6.6') > 0)
+    {
+      $this->add_command('sampling-factor', '4:2:2' );
+    }
+
+    $exec = $this->imagickdir.'convert';
+    $exec .= ' "'.realpath($this->source_filepath).'"';
+
+    foreach ($this->commands as $command => $params)
+    {
+      $exec .= ' -'.$command;
+      if (!empty($params))
+      {
+        $exec .= ' '.$params;
+      }
+    }
+
+    $dest = pathinfo($destination_filepath);
+    $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'" 2>&1';
+    @exec($exec, $returnarray);
+
+    if (function_exists('ilog')) ilog($exec);
+    if (is_array($returnarray) && (count($returnarray)>0) )
+    {
+      if (function_exists('ilog')) ilog('ERROR', $returnarray);
+      foreach($returnarray as $line)
+        trigger_error($line, E_USER_WARNING);
+    }
+    return is_array($returnarray);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                       Class for GD library                            |
+// +-----------------------------------------------------------------------+
+
+class image_gd implements imageInterface
+{
+  var $image;
+  var $quality = 95;
+
+  function __construct($source_filepath)
+  {
+    $gd_info = gd_info();
+    $extension = strtolower(get_extension($source_filepath));
+
+    if (in_array($extension, array('jpg', 'jpeg')))
+    {
+      $this->image = imagecreatefromjpeg($source_filepath);
+    }
+    else if ($extension == 'png')
+    {
+      $this->image = imagecreatefrompng($source_filepath);
+    }
+    elseif ($extension == 'gif' and $gd_info['GIF Read Support'] and $gd_info['GIF Create Support'])
+    {
+      $this->image = imagecreatefromgif($source_filepath);
+    }
+    else
+    {
+      die('[Image GD] unsupported file extension');
+    }
+  }
+
+  function get_width()
+  {
+    return imagesx($this->image);
+  }
+
+  function get_height()
+  {
+    return imagesy($this->image);
+  }
+
+  function crop($width, $height, $x, $y)
+  {
+    $dest = imagecreatetruecolor($width, $height);
+
+    imagealphablending($dest, false);
+    imagesavealpha($dest, true);
+    if (function_exists('imageantialias'))
+    {
+      imageantialias($dest, true);
+    }
+
+    $result = imagecopymerge($dest, $this->image, 0, 0, $x, $y, $width, $height, 100);
+
+    if ($result !== false)
+    {
+      imagedestroy($this->image);
+      $this->image = $dest;
+    }
+    else
+    {
+      imagedestroy($dest);
+    }
+    return $result;
+  }
+
+  function strip()
+  {
+    return true;
+  }
+
+  function rotate($rotation)
+  {
+    $dest = imagerotate($this->image, $rotation, 0);
+    imagedestroy($this->image);
+    $this->image = $dest;
+    return true;
+  }
+
+  function set_compression_quality($quality)
+  {
+    $this->quality = $quality;
+    return true;
+  }
+
+  function resize($width, $height)
+  {
+    $dest = imagecreatetruecolor($width, $height);
+
+    imagealphablending($dest, false);
+    imagesavealpha($dest, true);
+    if (function_exists('imageantialias'))
+    {
+      imageantialias($dest, true);
+    }
+
+    $result = imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $width, $height, $this->get_width(), $this->get_height());
+
+    if ($result !== false)
+    {
+      imagedestroy($this->image);
+      $this->image = $dest;
+    }
+    else
+    {
+      imagedestroy($dest);
+    }
+    return $result;
+  }
+
+  function sharpen($amount)
+  {
+    $m = pwg_image::get_sharpen_matrix($amount);
+    return imageconvolution($this->image, $m, 1, 0);
+  }
+
+  function compose($overlay, $x, $y, $opacity)
+  {
+    $ioverlay = $overlay->image->image;
+    /* A replacement for php's imagecopymerge() function that supports the alpha channel
+    See php bug #23815:  http://bugs.php.net/bug.php?id=23815 */
+
+    $ow = imagesx($ioverlay);
+    $oh = imagesy($ioverlay);
+
+		// Create a new blank image the site of our source image
+		$cut = imagecreatetruecolor($ow, $oh);
+
+		// Copy the blank image into the destination image where the source goes
+		imagecopy($cut, $this->image, 0, 0, $x, $y, $ow, $oh);
+
+		// Place the source image in the destination image
+		imagecopy($cut, $ioverlay, 0, 0, 0, 0, $ow, $oh);
+		imagecopymerge($this->image, $cut, $x, $y, 0, 0, $ow, $oh, $opacity);
+    imagedestroy($cut);
+    return true;
+  }
+
+  function write($destination_filepath)
+  {
+    $extension = strtolower(get_extension($destination_filepath));
+
+    if ($extension == 'png')
+    {
+      imagepng($this->image, $destination_filepath);
+    }
+    elseif ($extension == 'gif')
+    {
+      imagegif($this->image, $destination_filepath);
+    }
+    else
+    {
+      imagejpeg($this->image, $destination_filepath, $this->quality);
+    }
+  }
+
+  function destroy()
+  {
+    imagedestroy($this->image);
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/index.php
===================================================================
--- /tags/2.6.0RC1/admin/include/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/include/languages.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/languages.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/languages.class.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class languages
+{
+  var $fs_languages = array();
+  var $db_languages = array();
+  var $server_languages = array();
+
+  /**
+   * Initialize $fs_languages and $db_languages
+  */
+  function languages($target_charset = null)
+  {
+    $this->get_fs_languages($target_charset);
+  }
+
+  /**
+   * Perform requested actions
+   * @param string - action
+   * @param string - language id
+   * @param array - errors
+   */
+  function perform_action($action, $language_id)
+  {
+    global $conf;
+
+    if (isset($this->db_languages[$language_id]))
+    {
+      $crt_db_language = $this->db_languages[$language_id];
+    }
+
+    $errors = array();
+
+    switch ($action)
+    {
+      case 'activate':
+        if (isset($crt_db_language))
+        {
+          $errors[] = 'CANNOT ACTIVATE - LANGUAGE IS ALREADY ACTIVATED';
+          break;
+        }
+
+        $query = '
+INSERT INTO '.LANGUAGES_TABLE.'
+  (id, version, name)
+  VALUES(\''.$language_id.'\',
+         \''.$this->fs_languages[$language_id]['version'].'\',
+         \''.$this->fs_languages[$language_id]['name'].'\')
+;';
+        pwg_query($query);
+        break;
+
+      case 'deactivate':
+        if (!isset($crt_db_language))
+        {
+          $errors[] = 'CANNOT DEACTIVATE - LANGUAGE IS ALREADY DEACTIVATED';
+          break;
+        }
+
+        if ($language_id == get_default_language())
+        {
+          $errors[] = 'CANNOT DEACTIVATE - LANGUAGE IS DEFAULT LANGUAGE';
+          break;
+        }
+
+        $query = '
+DELETE
+  FROM '.LANGUAGES_TABLE.'
+  WHERE id= \''.$language_id.'\'
+;';
+        pwg_query($query);
+        break;
+
+      case 'delete':
+        if (!empty($crt_db_language))
+        {
+          $errors[] = 'CANNOT DELETE - LANGUAGE IS ACTIVATED';
+          break;
+        }
+        if (!isset($this->fs_languages[$language_id]))
+        {
+          $errors[] = 'CANNOT DELETE - LANGUAGE DOES NOT EXIST';
+          break;
+        }
+
+        // Set default language to user who are using this language
+        $query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \''.get_default_language().'\'
+  WHERE language = \''.$language_id.'\'
+;';
+        pwg_query($query);
+
+        deltree(PHPWG_ROOT_PATH.'language/'.$language_id, PHPWG_ROOT_PATH.'language/trash');
+        break;
+
+      case 'set_default':
+        $query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \''.$language_id.'\'
+  WHERE user_id IN ('.$conf['default_user_id'].', '.$conf['guest_id'].')
+;';
+        pwg_query($query);
+        break;
+    }
+    return $errors;
+  }
+
+  /**
+  *  Get languages defined in the language directory
+  */
+  function get_fs_languages($target_charset = null)
+  {
+    if ( empty($target_charset) )
+    {
+      $target_charset = get_pwg_charset();
+    }
+    $target_charset = strtolower($target_charset);
+
+    $dir = opendir(PHPWG_ROOT_PATH.'language');
+    while ($file = readdir($dir))
+    {
+      if ($file!='.' and $file!='..')
+      {
+        $path = PHPWG_ROOT_PATH.'language/'.$file;
+        if (is_dir($path) and !is_link($path)
+            and preg_match('/^[a-zA-Z0-9-_]+$/', $file )
+            and file_exists($path.'/common.lang.php')
+            )
+        {
+          $language = array(
+              'name'=>$file,
+              'code'=>$file,
+              'version'=>'0',
+              'uri'=>'',
+              'author'=>'',
+            );
+          $plg_data = implode( '', file($path.'/common.lang.php') );
+
+          if ( preg_match("|Language Name: (.*)|", $plg_data, $val) )
+          {
+            $language['name'] = trim( $val[1] );
+            $language['name'] = convert_charset($language['name'], 'utf-8', $target_charset);
+          }
+          if (preg_match("|Version: (.*)|", $plg_data, $val))
+          {
+            $language['version'] = trim($val[1]);
+          }
+          if ( preg_match("|Language URI: (.*)|", $plg_data, $val) )
+          {
+            $language['uri'] = trim($val[1]);
+          }
+          if ( preg_match("|Author: (.*)|", $plg_data, $val) )
+          {
+            $language['author'] = trim($val[1]);
+          }
+          if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
+          {
+            $language['author uri'] = trim($val[1]);
+          }
+          if (!empty($language['uri']) and strpos($language['uri'] , 'extension_view.php?eid='))
+          {
+            list( , $extension) = explode('extension_view.php?eid=', $language['uri']);
+            if (is_numeric($extension)) $language['extension'] = $extension;
+          }
+          // IMPORTANT SECURITY !
+          $language = array_map('htmlspecialchars', $language);
+          $this->fs_languages[$file] = $language;
+        }
+      }
+    }
+    closedir($dir);
+    @uasort($this->fs_languages, 'name_compare');
+  }
+
+  function get_db_languages()
+  {
+    $query = '
+  SELECT id, name
+    FROM '.LANGUAGES_TABLE.'
+    ORDER BY name ASC
+  ;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $this->db_languages[ $row['id'] ] = $row['name'];
+    }
+  }
+
+  /**
+   * Retrieve PEM server datas to $server_languages
+   */
+  function get_server_languages($new=false)
+  {
+    global $user, $conf;
+
+    $get_data = array(
+      'category_id' => $conf['pem_languages_category'],
+      'format' => 'php',
+    );
+
+    // Retrieve PEM versions
+    $version = PHPWG_VERSION;
+    $versions_to_check = array();
+    $url = PEM_URL . '/api/get_version_list.php';
+    if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result))
+    {
+      if (!preg_match('/^\d+\.\d+\.\d+$/', $version))
+      {
+        $version = $pem_versions[0]['name'];
+      }
+      $branch = get_branch_from_version($version);
+      foreach ($pem_versions as $pem_version)
+      {
+        if (strpos($pem_version['name'], $branch) === 0)
+        {
+          $versions_to_check[] = $pem_version['id'];
+        }
+      }
+    }
+    if (empty($versions_to_check))
+    {
+      return false;
+    }
+
+    // Languages to check
+    $languages_to_check = array();
+    foreach($this->fs_languages as $fs_language)
+    {
+      if (isset($fs_language['extension']))
+      {
+        $languages_to_check[] = $fs_language['extension'];
+      }
+    }
+
+    // Retrieve PEM languages infos
+    $url = PEM_URL . '/api/get_revision_list.php';
+    $get_data = array_merge($get_data, array(
+      'last_revision_only' => 'true',
+      'version' => implode(',', $versions_to_check),
+      'lang' => $user['language'],
+      'get_nb_downloads' => 'true',
+      )
+    );
+    if (!empty($languages_to_check))
+    {
+      if ($new)
+      {
+        $get_data['extension_exclude'] = implode(',', $languages_to_check);
+      }
+      else
+      {
+        $get_data['extension_include'] = implode(',', $languages_to_check);
+      }
+    }
+
+    if (fetchRemote($url, $result, $get_data))
+    {
+      $pem_languages = @unserialize($result);
+      if (!is_array($pem_languages))
+      {
+        return false;
+      }
+      foreach ($pem_languages as $language)
+      {
+        if (preg_match('/^.*? \[[A-Z]{2}\]$/', $language['extension_name']))
+        {
+          $this->server_languages[$language['extension_id']] = $language;
+        }
+      }
+      @uasort($this->server_languages, array($this, 'extension_name_compare'));
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Extract language files from archive
+   *
+   * @param string - install or upgrade
+   * @param string - remote revision identifier (numeric)
+   * @param string - language id or extension id
+   */
+  function extract_language_files($action, $revision, $dest='')
+  {
+    if ($archive = tempnam( PHPWG_ROOT_PATH.'language', 'zip'))
+    {
+      $url = PEM_URL . '/download.php';
+      $get_data = array(
+        'rid' => $revision,
+        'origin' => 'piwigo_'.$action,
+      );
+
+      if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
+      {
+        fclose($handle);
+        include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+        $zip = new PclZip($archive);
+        if ($list = $zip->listContent())
+        {
+          foreach ($list as $file)
+          {
+            // we search common.lang.php in archive
+            if (basename($file['filename']) == 'common.lang.php'
+              and (!isset($main_filepath)
+              or strlen($file['filename']) < strlen($main_filepath)))
+            {
+              $main_filepath = $file['filename'];
+            }
+          }
+          if (isset($main_filepath))
+          {
+            $root = basename(dirname($main_filepath)); // common.lang.php path in archive
+            if (preg_match('/^[a-z]{2}_[A-Z]{2}$/', $root))
+            {
+              if ($action == 'install')
+              {
+                $dest = $root;
+              }
+              $extract_path = PHPWG_ROOT_PATH.'language/'.$dest;
+              if (
+                $result = $zip->extract(
+                  PCLZIP_OPT_PATH, $extract_path,
+                  PCLZIP_OPT_REMOVE_PATH, $root,
+                  PCLZIP_OPT_REPLACE_NEWER
+                  )
+                )
+              {
+                foreach ($result as $file)
+                {
+                  if ($file['stored_filename'] == $main_filepath)
+                  {
+                    $status = $file['status'];
+                    break;
+                  }
+                }
+                if ($status == 'ok')
+                {
+                  $this->get_fs_languages();
+                  if ($action == 'install')
+                  {
+                    $this->perform_action('activate', $dest);
+                  }
+                }
+                if (file_exists($extract_path.'/obsolete.list')
+                  and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES)
+                  and !empty($old_files))
+                {
+                  $old_files[] = 'obsolete.list';
+                  foreach($old_files as $old_file)
+                  {
+                    $path = $extract_path.'/'.$old_file;
+                    if (is_file($path))
+                    {
+                      @unlink($path);
+                    }
+                    elseif (is_dir($path))
+                    {
+                      deltree($path, PHPWG_ROOT_PATH.'language/trash');
+                    }
+                  }
+                }
+              }
+              else $status = 'extract_error';
+            }
+            else $status = 'archive_error';
+          }
+          else $status = 'archive_error';
+        }
+        else $status = 'archive_error';
+      }
+      else $status = 'dl_archive_error';
+    }
+    else $status = 'temp_path_error';
+
+    @unlink($archive);
+    return $status;
+  }
+
+  /**
+   * Sort functions
+   */
+  function language_version_compare($a, $b)
+  {
+    $pattern = array('/([a-z])/ei', '/\.+/', '/\.\Z|\A\./');
+    $replacement = array( "'.'.intval('\\1', 36).'.'", '.', '');
+
+    $array = preg_replace($pattern, $replacement, array($a, $b));
+
+    return version_compare($array[0], $array[1], '>=');
+  }
+
+  function extension_name_compare($a, $b)
+  {
+    return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name']));
+  }
+}
+?>
Index: /tags/2.6.0RC1/admin/include/mysqldump.php
===================================================================
--- /tags/2.6.0RC1/admin/include/mysqldump.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/mysqldump.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+/**
+* Dump MySQL database
+*
+* Here is an inline example:
+* <code>
+* $connection = @mysql_connect($dbhost,$dbuser,$dbpsw);
+* $dumper = new MySQLDump($dbname,'filename.sql',false,false);
+* $dumper->doDump();
+* </code>
+*
+* Special thanks to:
+* - Andrea Ingaglio <andrea@coders4fun.com> helping in development of all class code
+* - Dylan Pugh for precious advices halfing the size of the output file and for helping in debug
+*
+* @name    MySQLDump
+* @author  Daniele Viganò - CreativeFactory.it <daniele.vigano@creativefactory.it>
+* @version 2.20 - 02/11/2007
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*/
+
+class MySQLDump {
+	/**
+	* @access private
+	*/
+	var $database = null;
+
+	/**
+	* @access private
+	*/
+	var $compress = false;
+
+	/**
+	* @access private
+	*/
+	var $hexValue = false;
+
+  /**
+	* The output filename
+	* @access private
+	*/
+	var $filename = null;
+
+	/**
+	* The pointer of the output file
+	* @access private
+	*/
+	var $file = null;
+
+	/**
+	* @access private
+	*/
+	var $isWritten = false;
+
+	/**
+	* Class constructor
+	* @param string $db The database name
+	* @param string $filepath The file where the dump will be written
+	* @param boolean $compress It defines if the output file is compress (gzip) or not
+	* @param boolean $hexValue It defines if the outup values are base-16 or not
+	*/
+	function MYSQLDump($db = null, $filepath = 'dump.sql', $compress = false, $hexValue = false){
+		$this->compress = $compress;
+		if ( !$this->setOutputFile($filepath) )
+			return false;
+		return $this->setDatabase($db);
+	}
+
+	/**
+	* Sets the database to work on
+	* @param string $db The database name
+	*/
+	function setDatabase($db){
+		$this->database = $db;
+		if ( !@mysql_select_db($this->database) )
+			return false;
+		return true;
+  }
+
+	/**
+	* Returns the database where the class is working on
+	* @return string
+	*/
+  function getDatabase(){
+		return $this->database;
+	}
+
+	/**
+	* Sets the output file type (It can be made only if the file hasn't been already written)
+	* @param boolean $compress If it's true, the output file will be compressed
+	*/
+	function setCompress($compress){
+		if ( $this->isWritten )
+			return false;
+		$this->compress = $compress;
+		$this->openFile($this->filename);
+		return true;
+  }
+
+	/**
+	* Returns if the output file is or not compressed
+	* @return boolean
+	*/
+  function getCompress(){
+		return $this->compress;
+	}
+
+	/**
+	* Sets the output file
+	* @param string $filepath The file where the dump will be written
+	*/
+	function setOutputFile($filepath){
+		if ( $this->isWritten )
+			return false;
+		$this->filename = $filepath;
+		$this->file = $this->openFile($this->filename);
+		return $this->file;
+  }
+
+  /**
+	* Returns the output filename
+	* @return string
+	*/
+  function getOutputFile(){
+		return $this->filename;
+	}
+
+	/**
+	* Writes to file the $table's structure
+	* @param string $table The table name
+	*/
+  function getTableStructure($table){
+		if ( !$this->setDatabase($this->database) )
+			return false;
+		// Structure Header
+		$structure = "-- \n";
+		$structure .= "-- Table structure for table `{$table}` \n";
+		$structure .= "-- \n\n";
+		// Dump Structure
+		$structure .= 'DROP TABLE IF EXISTS `'.$table.'`;'."\n";
+		$structure .= "CREATE TABLE `".$table."` (\n";
+		$records = @mysql_query('SHOW FIELDS FROM `'.$table.'`');
+		if ( @mysql_num_rows($records) == 0 )
+			return false;
+		while ( $record = mysql_fetch_assoc($records) ) {
+			$structure .= '`'.$record['Field'].'` '.$record['Type'];
+			if ( isset($record['Default']) )
+				$structure .= ' DEFAULT \''.$record['Default'].'\'';
+			if ( @strcmp($record['Null'],'YES') != 0 )
+				$structure .= ' NOT NULL';
+			elseif ( is_null($record['Default']) )
+				$structure .= ' DEFAULT NULL';
+			if ( !empty($record['Extra']) )
+				$structure .= ' '.$record['Extra'];
+			$structure .= ",\n";
+		}
+		$structure = @ereg_replace(",\n$", null, $structure);
+
+		// Save all Column Indexes
+		$structure .= $this->getSqlKeysTable($table);
+		$structure .= "\n)";
+
+		//Save table engine
+		$records = @mysql_query("SHOW TABLE STATUS LIKE '".$table."'");
+
+		if ( $record = @mysql_fetch_assoc($records) ) {
+			if ( !empty($record['Engine']) )
+				$structure .= ' ENGINE='.$record['Engine'];
+			if ( !empty($record['Auto_increment']) )
+				$structure .= ' AUTO_INCREMENT='.$record['Auto_increment'];
+		}
+
+		$structure .= ";\n\n-- --------------------------------------------------------\n\n";
+		$this->saveToFile($this->file,$structure);
+	}
+
+	/**
+	* Writes to file the $table's data
+	* @param string $table The table name
+	* @param boolean $hexValue It defines if the output is base 16 or not
+	*/
+	function getTableData($table,$hexValue = true) {
+		if ( !$this->setDatabase($this->database) )
+			return false;
+		// Header
+		$data = "-- \n";
+		$data .= "-- Dumping data for table `$table` \n";
+		$data .= "-- \n\n";
+
+		$records = mysql_query('SHOW FIELDS FROM `'.$table.'`');
+		$num_fields = @mysql_num_rows($records);
+		if ( $num_fields == 0 )
+			return false;
+		// Field names
+		$selectStatement = "SELECT ";
+		$insertStatement = "INSERT INTO `$table` (";
+		$hexField = array();
+		for ($x = 0; $x < $num_fields; $x++) {
+			$record = @mysql_fetch_assoc($records);
+			if ( ($hexValue) && ($this->isTextValue($record['Type'])) ) {
+				$selectStatement .= 'HEX(`'.$record['Field'].'`)';
+				$hexField [$x] = true;
+			}
+			else
+				$selectStatement .= '`'.$record['Field'].'`';
+			$insertStatement .= '`'.$record['Field'].'`';
+			$insertStatement .= ", ";
+			$selectStatement .= ", ";
+		}
+		$insertStatement = @substr($insertStatement,0,-2).') VALUES'."\n";
+		$selectStatement = @substr($selectStatement,0,-2).' FROM `'.$table.'`';
+
+		$records = @mysql_query($selectStatement);
+		$num_rows = @mysql_num_rows($records);
+		$num_fields = @mysql_num_fields($records);
+		// Dump data
+		if ( $num_rows > 0 ) {
+			$data .= $insertStatement;
+			for ($i = 0; $i < $num_rows; $i++) {
+				$record = @mysql_fetch_assoc($records);
+				$data .= ' (';
+				for ($j = 0; $j < $num_fields; $j++) {
+					$field_name = @mysql_field_name($records, $j);
+					if ( @$hexField[$j] && (@strlen($record[$field_name]) > 0) )
+						$data .= "0x".$record[$field_name];
+					elseif (is_null($record[$field_name]))
+						$data .= "NULL";
+					else
+						$data .= "'".@str_replace('\"','"',@mysql_real_escape_string($record[$field_name]))."'";
+					$data .= ',';
+				}
+				$data = @substr($data,0,-1).")";
+				$data .= ( $i < ($num_rows-1) ) ? ',' : ';';
+				$data .= "\n";
+				//if data in greather than 1MB save
+				if (strlen($data) > 1048576) {
+					$this->saveToFile($this->file,$data);
+					$data = '';
+				}
+			}
+			$data .= "\n-- --------------------------------------------------------\n\n";
+			$this->saveToFile($this->file,$data);
+		}
+	}
+
+  /**
+	* Writes to file all the selected database tables structure
+	* @return boolean
+	*/
+	function getDatabaseStructure(){
+		$records = @mysql_query('SHOW TABLES');
+		if ( @mysql_num_rows($records) == 0 )
+			return false;
+    $structure = '';
+		while ( $record = @mysql_fetch_row($records) ) {
+			$structure .= $this->getTableStructure($record[0]);
+		}
+		return true;
+  }
+
+	/**
+	* Writes to file all the selected database tables data
+	* @param boolean $hexValue It defines if the output is base-16 or not
+	*/
+	function getDatabaseData($hexValue = true){
+		$records = @mysql_query('SHOW TABLES');
+		if ( @mysql_num_rows($records) == 0 )
+			return false;
+		while ( $record = @mysql_fetch_row($records) ) {
+			$this->getTableData($record[0],$hexValue);
+		}
+  }
+
+	/**
+	* Writes to file the selected database dump
+	*/
+	function doDump() {
+		$this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 0;\n\n");
+		$this->getDatabaseStructure();
+		$this->getDatabaseData($this->hexValue);
+		$this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 1;\n\n");
+		$this->closeFile($this->file);
+		return true;
+	}
+	
+	/**
+	* @deprecated Look at the doDump() method
+	*/
+	function writeDump($filename) {
+		if ( !$this->setOutputFile($filename) )
+			return false;
+		$this->doDump();
+    $this->closeFile($this->file);
+    return true;
+	}
+
+	/**
+	* @access private
+	*/
+	function getSqlKeysTable ($table) {
+		$primary = "";
+		$unique = array();
+		$index = array();
+		$fulltext = array();
+		$results = mysql_query("SHOW KEYS FROM `{$table}`");
+		if ( @mysql_num_rows($results) == 0 )
+			return false;
+		while($row = mysql_fetch_object($results)) {
+			if (($row->Key_name == 'PRIMARY') AND ($row->Index_type == 'BTREE')) {
+				if ( $primary == "" )
+					$primary = "  PRIMARY KEY  (`{$row->Column_name}`";
+				else
+					$primary .= ", `{$row->Column_name}`";
+			}
+			if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '0') AND ($row->Index_type == 'BTREE')) {
+				if ( (empty($unique)) OR (empty($unique[$row->Key_name])) )
+					$unique[$row->Key_name] = "  UNIQUE KEY `{$row->Key_name}` (`{$row->Column_name}`";
+				else
+					$unique[$row->Key_name] .= ", `{$row->Column_name}`";
+			}
+			if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'BTREE')) {
+				if ( (empty($index)) OR (empty($index[$row->Key_name])) )
+					$index[$row->Key_name] = "  KEY `{$row->Key_name}` (`{$row->Column_name}`";
+				else
+					$index[$row->Key_name] .= ", `{$row->Column_name}`";
+			}
+			if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'FULLTEXT')) {
+				if ( (empty($fulltext)) OR (empty($fulltext[$row->Key_name])) )
+					$fulltext[$row->Key_name] = "  FULLTEXT `{$row->Key_name}` (`{$row->Column_name}`";
+				else
+					$fulltext[$row->Key_name] .= ", `{$row->Column_name}`";
+			}
+		}
+		$sqlKeyStatement = '';
+		// generate primary, unique, key and fulltext
+		if ( $primary != "" ) {
+			$sqlKeyStatement .= ",\n";
+			$primary .= ")";
+			$sqlKeyStatement .= $primary;
+		}
+		if (!empty($unique)) {
+			foreach ($unique as $keyName => $keyDef) {
+				$sqlKeyStatement .= ",\n";
+				$keyDef .= ")";
+				$sqlKeyStatement .= $keyDef;
+
+			}
+		}
+		if (!empty($index)) {
+			foreach ($index as $keyName => $keyDef) {
+				$sqlKeyStatement .= ",\n";
+				$keyDef .= ")";
+				$sqlKeyStatement .= $keyDef;
+			}
+		}
+		if (!empty($fulltext)) {
+			foreach ($fulltext as $keyName => $keyDef) {
+				$sqlKeyStatement .= ",\n";
+				$keyDef .= ")";
+				$sqlKeyStatement .= $keyDef;
+			}
+		}
+		return $sqlKeyStatement;
+	}
+
+  /**
+	* @access private
+	*/
+	function isTextValue($field_type) {
+		switch ($field_type) {
+			case "tinytext":
+			case "text":
+			case "mediumtext":
+			case "longtext":
+			case "binary":
+			case "varbinary":
+			case "tinyblob":
+			case "blob":
+			case "mediumblob":
+			case "longblob":
+				return True;
+				break;
+			default:
+				return False;
+		}
+	}
+	
+	/**
+	* @access private
+	*/
+	function openFile($filename) {
+		$file = false;
+		if ( $this->compress )
+			$file = @gzopen($filename, "w9");
+		else
+			$file = @fopen($filename, "w");
+		return $file;
+	}
+
+  /**
+	* @access private
+	*/
+	function saveToFile($file, $data) {
+		if ( $this->compress )
+			@gzwrite($file, $data);
+		else
+			@fwrite($file, $data);
+		$this->isWritten = true;
+	}
+
+  /**
+	* @access private
+	*/
+	function closeFile($file) {
+		if ( $this->compress )
+			@gzclose($file);
+		else
+			@fclose($file);
+	}
+}
+?>
Index: /tags/2.6.0RC1/admin/include/pclzip.lib.php
===================================================================
--- /tags/2.6.0RC1/admin/include/pclzip.lib.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/pclzip.lib.php	(revision 25596)
@@ -0,0 +1,5694 @@
+<?php
+// --------------------------------------------------------------------------------
+// PhpConcept Library - Zip Module 2.8.2
+// --------------------------------------------------------------------------------
+// License GNU/LGPL - Vincent Blavet - August 2009
+// http://www.phpconcept.net
+// --------------------------------------------------------------------------------
+//
+// Presentation :
+//   PclZip is a PHP library that manage ZIP archives.
+//   So far tests show that archives generated by PclZip are readable by
+//   WinZip application and other tools.
+//
+// Description :
+//   See readme.txt and http://www.phpconcept.net
+//
+// Warning :
+//   This library and the associated files are non commercial, non professional
+//   work.
+//   It should not have unexpected results. However if any damage is caused by
+//   this software the author can not be responsible.
+//   The use of this software is at the risk of the user.
+//
+// --------------------------------------------------------------------------------
+// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $
+// --------------------------------------------------------------------------------
+
+  // ----- Constants
+  if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
+    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
+  }
+  
+  // ----- File list separator
+  // In version 1.x of PclZip, the separator for file list is a space
+  // (which is not a very smart choice, specifically for windows paths !).
+  // A better separator should be a comma (,). This constant gives you the
+  // abilty to change that.
+  // However notice that changing this value, may have impact on existing
+  // scripts, using space separated filenames.
+  // Recommanded values for compatibility with older versions :
+  //define( 'PCLZIP_SEPARATOR', ' ' );
+  // Recommanded values for smart separation of filenames.
+  if (!defined('PCLZIP_SEPARATOR')) {
+    define( 'PCLZIP_SEPARATOR', ',' );
+  }
+
+  // ----- Error configuration
+  // 0 : PclZip Class integrated error handling
+  // 1 : PclError external library error handling. By enabling this
+  //     you must ensure that you have included PclError library.
+  // [2,...] : reserved for futur use
+  if (!defined('PCLZIP_ERROR_EXTERNAL')) {
+    define( 'PCLZIP_ERROR_EXTERNAL', 0 );
+  }
+
+  // ----- Optional static temporary directory
+  //       By default temporary files are generated in the script current
+  //       path.
+  //       If defined :
+  //       - MUST BE terminated by a '/'.
+  //       - MUST be a valid, already created directory
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
+  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
+  if (!defined('PCLZIP_TEMPORARY_DIR')) {
+    define( 'PCLZIP_TEMPORARY_DIR', '' );
+  }
+
+  // ----- Optional threshold ratio for use of temporary files
+  //       Pclzip sense the size of the file to add/extract and decide to
+  //       use or not temporary file. The algorythm is looking for 
+  //       memory_limit of PHP and apply a ratio.
+  //       threshold = memory_limit * ratio.
+  //       Recommended values are under 0.5. Default 0.47.
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 );
+  if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {
+    define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );
+  }
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
+// --------------------------------------------------------------------------------
+
+  // ----- Global variables
+  $g_pclzip_version = "2.8.2";
+
+  // ----- Error codes
+  //   -1 : Unable to open file in binary write mode
+  //   -2 : Unable to open file in binary read mode
+  //   -3 : Invalid parameters
+  //   -4 : File does not exist
+  //   -5 : Filename is too long (max. 255)
+  //   -6 : Not a valid zip file
+  //   -7 : Invalid extracted file size
+  //   -8 : Unable to create directory
+  //   -9 : Invalid archive extension
+  //  -10 : Invalid archive format
+  //  -11 : Unable to delete file (unlink)
+  //  -12 : Unable to rename file (rename)
+  //  -13 : Invalid header checksum
+  //  -14 : Invalid archive size
+  define( 'PCLZIP_ERR_USER_ABORTED', 2 );
+  define( 'PCLZIP_ERR_NO_ERROR', 0 );
+  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
+  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
+  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
+  define( 'PCLZIP_ERR_MISSING_FILE', -4 );
+  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
+  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
+  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
+  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
+  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
+  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
+  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
+  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
+  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
+  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
+  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );
+  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );
+  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );
+  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );
+  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );
+
+  // ----- Options values
+  define( 'PCLZIP_OPT_PATH', 77001 );
+  define( 'PCLZIP_OPT_ADD_PATH', 77002 );
+  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );
+  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );
+  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );
+  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );
+  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );
+  define( 'PCLZIP_OPT_BY_NAME', 77008 );
+  define( 'PCLZIP_OPT_BY_INDEX', 77009 );
+  define( 'PCLZIP_OPT_BY_EREG', 77010 );
+  define( 'PCLZIP_OPT_BY_PREG', 77011 );
+  define( 'PCLZIP_OPT_COMMENT', 77012 );
+  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );
+  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );
+  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );
+  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );
+  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );
+  // Having big trouble with crypt. Need to multiply 2 long int
+  // which is not correctly supported by PHP ...
+  //define( 'PCLZIP_OPT_CRYPT', 77018 );
+  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );
+  define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
+  
+  // ----- File description attributes
+  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
+  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
+  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
+  define( 'PCLZIP_ATT_FILE_MTIME', 79004 );
+  define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );
+  define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );
+
+  // ----- Call backs values
+  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
+  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );
+  define( 'PCLZIP_CB_PRE_ADD', 78003 );
+  define( 'PCLZIP_CB_POST_ADD', 78004 );
+  /* For futur use
+  define( 'PCLZIP_CB_PRE_LIST', 78005 );
+  define( 'PCLZIP_CB_POST_LIST', 78006 );
+  define( 'PCLZIP_CB_PRE_DELETE', 78007 );
+  define( 'PCLZIP_CB_POST_DELETE', 78008 );
+  */
+
+  // --------------------------------------------------------------------------------
+  // Class : PclZip
+  // Description :
+  //   PclZip is the class that represent a Zip archive.
+  //   The public methods allow the manipulation of the archive.
+  // Attributes :
+  //   Attributes must not be accessed directly.
+  // Methods :
+  //   PclZip() : Object creator
+  //   create() : Creates the Zip archive
+  //   listContent() : List the content of the Zip archive
+  //   extract() : Extract the content of the archive
+  //   properties() : List the properties of the archive
+  // --------------------------------------------------------------------------------
+  class PclZip
+  {
+    // ----- Filename of the zip file
+    var $zipname = '';
+
+    // ----- File descriptor of the zip file
+    var $zip_fd = 0;
+
+    // ----- Internal error handling
+    var $error_code = 1;
+    var $error_string = '';
+    
+    // ----- Current status of the magic_quotes_runtime
+    // This value store the php configuration for magic_quotes
+    // The class can then disable the magic_quotes and reset it after
+    var $magic_quotes_status;
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZip()
+  // Description :
+  //   Creates a PclZip object and set the name of the associated Zip archive
+  //   filename.
+  //   Note that no real action is taken, if the archive does not exist it is not
+  //   created. Use create() for that.
+  // --------------------------------------------------------------------------------
+  function PclZip($p_zipname)
+  {
+
+    // ----- Tests the zlib
+    if (!function_exists('gzopen'))
+    {
+      die('Abort '.basename(__FILE__).' : Missing zlib extensions');
+    }
+
+    // ----- Set the attributes
+    $this->zipname = $p_zipname;
+    $this->zip_fd = 0;
+    $this->magic_quotes_status = -1;
+
+    // ----- Return
+    return;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   create($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   create($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two different synopsis. The first one is historical.
+  //   This method creates a Zip Archive. The Zip file is created in the
+  //   filesystem. The files and directories indicated in $p_filelist
+  //   are added in the archive. See the parameters description for the
+  //   supported format of $p_filelist.
+  //   When a directory is in the list, the directory and its content is added
+  //   in the archive.
+  //   In this synopsis, the function takes an optional variable list of
+  //   options. See bellow the supported options.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function create($p_filelist)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove from the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+                                             ));
+        if ($v_result != 1) {
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Invalid number / type of arguments");
+          return 0;
+        }
+      }
+    }
+    
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        if ($v_string != '') {
+          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+        }
+        else {
+        }
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Return
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   add($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   add($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This methods add the list of files in an existing archive.
+  //   If a file with the same name already exists, it is added at the end of the
+  //   archive, the first one is still present.
+  //   If the archive does not exist, it is created.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_OPT_ADD_COMMENT :
+  //   PCLZIP_OPT_PREPEND_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function add($p_filelist)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',
+                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+												   ));
+        if ($v_result != 1) {
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Return
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : listContent()
+  // Description :
+  //   This public method, gives the list of the files and directories, with their
+  //   properties.
+  //   The properties of each entries in the list are (used also in other functions) :
+  //     filename : Name of the file. For a create or add action it is the filename
+  //                given by the user. For an extract function it is the filename
+  //                of the extracted file.
+  //     stored_filename : Name of the file / directory stored in the archive.
+  //     size : Size of the stored file.
+  //     compressed_size : Size of the file's data compressed in the archive
+  //                       (without the headers overhead)
+  //     mtime : Last known modification date of the file (UNIX timestamp)
+  //     comment : Comment associated with the file
+  //     folder : true | false
+  //     index : index of the file in the archive
+  //     status : status of the action (depending of the action) :
+  //              Values are :
+  //                ok : OK !
+  //                filtered : the file / dir is not extracted (filtered by user)
+  //                already_a_directory : the file can not be extracted because a
+  //                                      directory with the same name already exists
+  //                write_protected : the file can not be extracted because a file
+  //                                  with the same name already exists and is
+  //                                  write protected
+  //                newer_exist : the file was not extracted because a newer file exists
+  //                path_creation_fail : the file is not extracted because the folder
+  //                                     does not exist and can not be created
+  //                write_error : the file was not extracted because there was a
+  //                              error while writing the file
+  //                read_error : the file was not extracted because there was a error
+  //                             while reading the file
+  //                invalid_header : the file was not extracted because of an archive
+  //                                 format error (bad file header)
+  //   Note that each time a method can continue operating when there
+  //   is an action error on a file, the error is only logged in the file status.
+  // Return Values :
+  //   0 on an unrecoverable failure,
+  //   The list of the files in the archive.
+  // --------------------------------------------------------------------------------
+  function listContent()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    if (($v_result = $this->privList($p_list)) != 1)
+    {
+      unset($p_list);
+      return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extract($p_path="./", $p_remove_path="")
+  //   extract([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method extract all the files / directories from the archive to the
+  //   folder indicated in $p_path.
+  //   If you want to ignore the 'root' part of path of the memorized files
+  //   you can indicate this in the optional $p_remove_path parameter.
+  //   By default, if a newer file with the same name already exists, the
+  //   file is not extracted.
+  //
+  //   If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions
+  //   are used, the path indicated in PCLZIP_OPT_ADD_PATH is append
+  //   at the end of the path value of PCLZIP_OPT_PATH.
+  // Parameters :
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 or a negative value on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function extract()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_BY_NAME => 'optional',
+                                                   PCLZIP_OPT_BY_EREG => 'optional',
+                                                   PCLZIP_OPT_BY_PREG => 'optional',
+                                                   PCLZIP_OPT_BY_INDEX => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												    ));
+        if ($v_result != 1) {
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Trace
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
+	                                     $v_remove_all_path, $v_options);
+    if ($v_result < 1) {
+      unset($p_list);
+      return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extractByIndex($p_index, $p_path="./", $p_remove_path="")
+  //   extractByIndex($p_index, [$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method is doing a partial extract of the archive.
+  //   The extracted files or folders are identified by their index in the
+  //   archive (from 0 to n).
+  //   Note that if the index identify a folder, only the folder entry is
+  //   extracted, not all the files included in the archive.
+  // Parameters :
+  //   $p_index : A single index (integer) or a string of indexes of files to
+  //              extract. The form of the string is "0,4-6,8-12" with only numbers
+  //              and '-' for range or ',' to separate ranges. No spaces or ';'
+  //              are allowed.
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and
+  //     not as files.
+  //     The resulting content is in a new field 'content' in the file
+  //     structure.
+  //     This option must be used alone (any other options are ignored).
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  //function extractByIndex($p_index, options...)
+  function extractByIndex($p_index)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												   ));
+        if ($v_result != 1) {
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
+          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+        }
+        else {
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Trace
+
+    // ----- Trick
+    // Here I want to reuse extractByRule(), so I need to parse the $p_index
+    // with privParseOptions()
+    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);
+    $v_options_trick = array();
+    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
+                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));
+    if ($v_result != 1) {
+        return 0;
+    }
+    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Call the extracting fct
+    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
+        return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   delete([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method removes files from the archive.
+  //   If no parameters are given, then all the archive is emptied.
+  // Parameters :
+  //   None or optional arguments.
+  // Options :
+  //   PCLZIP_OPT_BY_INDEX :
+  //   PCLZIP_OPT_BY_NAME :
+  //   PCLZIP_OPT_BY_EREG : 
+  //   PCLZIP_OPT_BY_PREG :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the files which are still present in the archive.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function delete()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Parse the options
+      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                        array (PCLZIP_OPT_BY_NAME => 'optional',
+                                               PCLZIP_OPT_BY_EREG => 'optional',
+                                               PCLZIP_OPT_BY_PREG => 'optional',
+                                               PCLZIP_OPT_BY_INDEX => 'optional' ));
+      if ($v_result != 1) {
+          return 0;
+      }
+    }
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Call the delete fct
+    $v_list = array();
+    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {
+      $this->privSwapBackMagicQuotes();
+      unset($v_list);
+      return(0);
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : deleteByIndex()
+  // Description :
+  //   ***** Deprecated *****
+  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.
+  // --------------------------------------------------------------------------------
+  function deleteByIndex($p_index)
+  {
+    
+    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : properties()
+  // Description :
+  //   This method gives the properties of the archive.
+  //   The properties are :
+  //     nb : Number of files in the archive
+  //     comment : Comment associated with the archive file
+  //     status : not_exist, ok
+  // Parameters :
+  //   None
+  // Return Values :
+  //   0 on failure,
+  //   An array with the archive properties.
+  // --------------------------------------------------------------------------------
+  function properties()
+  {
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      $this->privSwapBackMagicQuotes();
+      return(0);
+    }
+
+    // ----- Default properties
+    $v_prop = array();
+    $v_prop['comment'] = '';
+    $v_prop['nb'] = 0;
+    $v_prop['status'] = 'not_exist';
+
+    // ----- Look if file exists
+    if (@is_file($this->zipname))
+    {
+      // ----- Open the zip file
+      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+      {
+        $this->privSwapBackMagicQuotes();
+        
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+        // ----- Return
+        return 0;
+      }
+
+      // ----- Read the central directory informations
+      $v_central_dir = array();
+      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        return 0;
+      }
+
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Set the user attributes
+      $v_prop['comment'] = $v_central_dir['comment'];
+      $v_prop['nb'] = $v_central_dir['entries'];
+      $v_prop['status'] = 'ok';
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_prop;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : duplicate()
+  // Description :
+  //   This method creates an archive by copying the content of an other one. If
+  //   the archive already exist, it is replaced by the new one without any warning.
+  // Parameters :
+  //   $p_archive : The filename of a valid archive, or
+  //                a valid PclZip object.
+  // Return Values :
+  //   1 on success.
+  //   0 or a negative value on error (error code).
+  // --------------------------------------------------------------------------------
+  function duplicate($p_archive)
+  {
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the $p_archive is a PclZip object
+    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
+    {
+
+      // ----- Duplicate the archive
+      $v_result = $this->privDuplicate($p_archive->zipname);
+    }
+
+    // ----- Look if the $p_archive is a string (so a filename)
+    else if (is_string($p_archive))
+    {
+
+      // ----- Check that $p_archive is a valid zip file
+      // TBC : Should also check the archive format
+      if (!is_file($p_archive)) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");
+        $v_result = PCLZIP_ERR_MISSING_FILE;
+      }
+      else {
+        // ----- Duplicate the archive
+        $v_result = $this->privDuplicate($p_archive);
+      }
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : merge()
+  // Description :
+  //   This method merge the $p_archive_to_add archive at the end of the current
+  //   one ($this).
+  //   If the archive ($this) does not exist, the merge becomes a duplicate.
+  //   If the $p_archive_to_add archive does not exist, the merge is a success.
+  // Parameters :
+  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,
+  //                       or a PclZip object archive.
+  // Return Values :
+  //   1 on success,
+  //   0 or negative values on error (see below).
+  // --------------------------------------------------------------------------------
+  function merge($p_archive_to_add)
+  {
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Look if the $p_archive_to_add is a PclZip object
+    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
+    {
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($p_archive_to_add);
+    }
+
+    // ----- Look if the $p_archive_to_add is a string (so a filename)
+    else if (is_string($p_archive_to_add))
+    {
+
+      // ----- Create a temporary archive
+      $v_object_archive = new PclZip($p_archive_to_add);
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($v_object_archive);
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : errorCode()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorCode()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorCode());
+    }
+    else {
+      return($this->error_code);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorName()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorName($p_with_code=false)
+  {
+    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
+                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
+                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
+                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
+                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
+                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
+                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
+                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
+                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
+                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
+                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
+                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
+                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
+                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
+                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
+                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',
+                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',
+                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',
+                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'
+                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'
+                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'
+                    );
+
+    if (isset($v_name[$this->error_code])) {
+      $v_value = $v_name[$this->error_code];
+    }
+    else {
+      $v_value = 'NoName';
+    }
+
+    if ($p_with_code) {
+      return($v_value.' ('.$this->error_code.')');
+    }
+    else {
+      return($v_value);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorInfo()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorInfo($p_full=false)
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorString());
+    }
+    else {
+      if ($p_full) {
+        return($this->errorName(true)." : ".$this->error_string);
+      }
+      else {
+        return($this->error_string." [code ".$this->error_code."]");
+      }
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
+// *****                                                        *****
+// *****       THESES FUNCTIONS MUST NOT BE USED DIRECTLY       *****
+// --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFormat()
+  // Description :
+  //   This method check that the archive exists and is a valid zip archive.
+  //   Several level of check exists. (futur)
+  // Parameters :
+  //   $p_level : Level of check. Default 0.
+  //              0 : Check the first bytes (magic codes) (default value))
+  //              1 : 0 + Check the central directory (futur)
+  //              2 : 1 + Check each file header (futur)
+  // Return Values :
+  //   true on success,
+  //   false on error, the error code is set.
+  // --------------------------------------------------------------------------------
+  function privCheckFormat($p_level=0)
+  {
+    $v_result = true;
+
+	// ----- Reset the file system cache
+    clearstatcache();
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the file exits
+    if (!is_file($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
+      return(false);
+    }
+
+    // ----- Check that the file is readeable
+    if (!is_readable($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
+      return(false);
+    }
+
+    // ----- Check the magic code
+    // TBC
+
+    // ----- Check the central header
+    // TBC
+
+    // ----- Check each file header
+    // TBC
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privParseOptions()
+  // Description :
+  //   This internal methods reads the variable list of arguments ($p_options_list,
+  //   $p_size) and generate an array with the options and values ($v_result_list).
+  //   $v_requested_options contains the options that can be present and those that
+  //   must be present.
+  //   $v_requested_options is an array, with the option value as key, and 'optional',
+  //   or 'mandatory' as value.
+  // Parameters :
+  //   See above.
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
+  {
+    $v_result=1;
+    
+    // ----- Read the options
+    $i=0;
+    while ($i<$p_size) {
+
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$p_options_list[$i]])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for next option
+      switch ($p_options_list[$i]) {
+        // ----- Look for options that request a path value
+        case PCLZIP_OPT_PATH :
+        case PCLZIP_OPT_REMOVE_PATH :
+        case PCLZIP_OPT_ADD_PATH :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_THRESHOLD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check the value
+          $v_value = $p_options_list[$i+1];
+          if ((!is_integer($v_value)) || ($v_value<0)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value (and convert it in bytes)
+          $v_result_list[$p_options_list[$i]] = $v_value*1048576;
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_ON :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_OFF :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");
+            return PclZip::errorCode();
+          }
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (   is_string($p_options_list[$i+1])
+              && ($p_options_list[$i+1] != '')) {
+            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+            $i++;
+          }
+          else {
+          }
+        break;
+
+        // ----- Look for options that request an array of string for value
+        case PCLZIP_OPT_BY_NAME :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that request an EREG or PREG expression
+        case PCLZIP_OPT_BY_EREG :
+          // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG
+          // to PCLZIP_OPT_BY_PREG
+          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;
+        case PCLZIP_OPT_BY_PREG :
+        //case PCLZIP_OPT_CRYPT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_OPT_COMMENT :
+        case PCLZIP_OPT_ADD_COMMENT :
+        case PCLZIP_OPT_PREPEND_COMMENT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,
+			                     "Missing parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,
+			                     "Wrong parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that request an array of index
+        case PCLZIP_OPT_BY_INDEX :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_work_list = array();
+          if (is_string($p_options_list[$i+1])) {
+
+              // ----- Remove spaces
+              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
+
+              // ----- Parse items
+              $v_work_list = explode(",", $p_options_list[$i+1]);
+          }
+          else if (is_integer($p_options_list[$i+1])) {
+              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_work_list = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          
+          // ----- Reduce the index list
+          // each index item in the list must be a couple with a start and
+          // an end value : [0,3], [5-5], [8-10], ...
+          // ----- Check the format of each item
+          $v_sort_flag=false;
+          $v_sort_value=0;
+          for ($j=0; $j<sizeof($v_work_list); $j++) {
+              // ----- Explode the item
+              $v_item_list = explode("-", $v_work_list[$j]);
+              $v_size_item_list = sizeof($v_item_list);
+              
+              // ----- TBC : Here we might check that each item is a
+              // real integer ...
+              
+              // ----- Look for single value
+              if ($v_size_item_list == 1) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
+              }
+              elseif ($v_size_item_list == 2) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
+              }
+              else {
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  return PclZip::errorCode();
+              }
+
+
+              // ----- Look for list sort
+              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
+                  $v_sort_flag=true;
+
+                  // ----- TBC : An automatic sort should be writen ...
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  return PclZip::errorCode();
+              }
+              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
+          }
+          
+          // ----- Sort the items
+          if ($v_sort_flag) {
+              // TBC : To Be Completed
+          }
+
+          // ----- Next option
+          $i++;
+        break;
+
+        // ----- Look for options that request no value
+        case PCLZIP_OPT_REMOVE_ALL_PATH :
+        case PCLZIP_OPT_EXTRACT_AS_STRING :
+        case PCLZIP_OPT_NO_COMPRESSION :
+        case PCLZIP_OPT_EXTRACT_IN_OUTPUT :
+        case PCLZIP_OPT_REPLACE_NEWER :
+        case PCLZIP_OPT_STOP_ON_ERROR :
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        // ----- Look for options that request an octal value
+        case PCLZIP_OPT_SET_CHMOD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          $i++;
+        break;
+
+        // ----- Look for options that request a call-back
+        case PCLZIP_CB_PRE_EXTRACT :
+        case PCLZIP_CB_POST_EXTRACT :
+        case PCLZIP_CB_PRE_ADD :
+        case PCLZIP_CB_POST_ADD :
+        /* for futur use
+        case PCLZIP_CB_PRE_DELETE :
+        case PCLZIP_CB_POST_DELETE :
+        case PCLZIP_CB_PRE_LIST :
+        case PCLZIP_CB_POST_LIST :
+        */
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_function_name = $p_options_list[$i+1];
+
+          // ----- Check that the value is a valid existing function
+          if (!function_exists($v_function_name)) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Set the attribute
+          $v_result_list[$p_options_list[$i]] = $v_function_name;
+          $i++;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Unknown parameter '"
+							   .$p_options_list[$i]."'");
+
+          // ----- Return
+          return PclZip::errorCode();
+      }
+
+      // ----- Next options
+      $i++;
+    }
+
+    // ----- Look for mandatory options
+    if ($v_requested_options !== false) {
+      for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+        // ----- Look for mandatory option
+        if ($v_requested_options[$key] == 'mandatory') {
+          // ----- Look if present
+          if (!isset($v_result_list[$key])) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+        }
+      }
+    }
+    
+    // ----- Look for default values
+    if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+      
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOptionDefaultThreshold()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privOptionDefaultThreshold(&$p_options)
+  {
+    $v_result=1;
+    
+    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
+      return $v_result;
+    }
+    
+    // ----- Get 'memory_limit' configuration value
+    $v_memory_limit = ini_get('memory_limit');
+    $v_memory_limit = trim($v_memory_limit);
+    $last = strtolower(substr($v_memory_limit, -1));
+ 
+    if($last == 'g')
+        //$v_memory_limit = $v_memory_limit*1024*1024*1024;
+        $v_memory_limit = $v_memory_limit*1073741824;
+    if($last == 'm')
+        //$v_memory_limit = $v_memory_limit*1024*1024;
+        $v_memory_limit = $v_memory_limit*1048576;
+    if($last == 'k')
+        $v_memory_limit = $v_memory_limit*1024;
+            
+    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
+    
+
+    // ----- Sanity check : No threshold if value lower than 1M
+    if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {
+      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
+    }
+          
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrParseAtt()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
+  {
+    $v_result=1;
+    
+    // ----- For each file in the list check the attributes
+    foreach ($p_file_list as $v_key => $v_value) {
+    
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$v_key])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for attribute
+      switch ($v_key) {
+        case PCLZIP_ATT_FILE_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
+          
+          if ($p_filedescr['filename'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
+
+          if ($p_filedescr['new_short_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_FULL_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
+
+          if ($p_filedescr['new_full_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_ATT_FILE_COMMENT :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['comment'] = $v_value;
+        break;
+
+        case PCLZIP_ATT_FILE_MTIME :
+          if (!is_integer($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['mtime'] = $v_value;
+        break;
+
+        case PCLZIP_ATT_FILE_CONTENT :
+          $p_filedescr['content'] = $v_value;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                           "Unknown parameter '".$v_key."'");
+
+          // ----- Return
+          return PclZip::errorCode();
+      }
+
+      // ----- Look for mandatory options
+      if ($v_requested_options !== false) {
+        for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+          // ----- Look for mandatory option
+          if ($v_requested_options[$key] == 'mandatory') {
+            // ----- Look if present
+            if (!isset($p_file_list[$key])) {
+              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+              return PclZip::errorCode();
+            }
+          }
+        }
+      }
+    
+    // end foreach
+    }
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrExpand()
+  // Description :
+  //   This method look for each item of the list to see if its a file, a folder
+  //   or a string to be added as file. For any other type of files (link, other)
+  //   just ignore the item.
+  //   Then prepare the information that will be stored for that file.
+  //   When its a folder, expand the folder with all the files that are in that 
+  //   folder (recursively).
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrExpand(&$p_filedescr_list, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Create a result list
+    $v_result_list = array();
+    
+    // ----- Look each entry
+    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
+      
+      // ----- Get filedescr
+      $v_descr = $p_filedescr_list[$i];
+      
+      // ----- Reduce the filename
+      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
+      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
+      
+      // ----- Look for real file or folder
+      if (file_exists($v_descr['filename'])) {
+        if (@is_file($v_descr['filename'])) {
+          $v_descr['type'] = 'file';
+        }
+        else if (@is_dir($v_descr['filename'])) {
+          $v_descr['type'] = 'folder';
+        }
+        else if (@is_link($v_descr['filename'])) {
+          // skip
+          continue;
+        }
+        else {
+          // skip
+          continue;
+        }
+      }
+      
+      // ----- Look for string added as file
+      else if (isset($v_descr['content'])) {
+        $v_descr['type'] = 'virtual_file';
+      }
+      
+      // ----- Missing file
+      else {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+      
+      // ----- Calculate the stored filename
+      $this->privCalculateStoredFilename($v_descr, $p_options);
+      
+      // ----- Add the descriptor in result list
+      $v_result_list[sizeof($v_result_list)] = $v_descr;
+      
+      // ----- Look for folder
+      if ($v_descr['type'] == 'folder') {
+        // ----- List of items in folder
+        $v_dirlist_descr = array();
+        $v_dirlist_nb = 0;
+        if ($v_folder_handler = @opendir($v_descr['filename'])) {
+          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
+
+            // ----- Skip '.' and '..'
+            if (($v_item_handler == '.') || ($v_item_handler == '..')) {
+                continue;
+            }
+            
+            // ----- Compose the full filename
+            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
+            
+            // ----- Look for different stored filename
+            // Because the name of the folder was changed, the name of the
+            // files/sub-folders also change
+            if (($v_descr['stored_filename'] != $v_descr['filename'])
+                 && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
+              if ($v_descr['stored_filename'] != '') {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
+              }
+              else {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
+              }
+            }
+      
+            $v_dirlist_nb++;
+          }
+          
+          @closedir($v_folder_handler);
+        }
+        else {
+          // TBC : unable to open folder in read mode
+        }
+        
+        // ----- Expand each element of the list
+        if ($v_dirlist_nb != 0) {
+          // ----- Expand
+          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
+            return $v_result;
+          }
+          
+          // ----- Concat the resulting list
+          $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
+        }
+        else {
+        }
+          
+        // ----- Free local array
+        unset($v_dirlist_descr);
+      }
+    }
+    
+    // ----- Get the result list
+    $p_filedescr_list = $v_result_list;
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCreate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+    
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the file in write mode
+    if (($v_result = $this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Add the list of files
+    $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAdd()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Look if the archive exists or is empty
+    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
+    {
+
+      // ----- Do a create
+      $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);
+
+      // ----- Return
+      return $v_result;
+    }
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      fclose($v_zip_temp_fd);
+      $this->privCloseFd();
+      @unlink($v_zip_temp_name);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Create the Central Dir files header
+    for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          fclose($v_zip_temp_fd);
+          $this->privCloseFd();
+          @unlink($v_zip_temp_name);
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Return
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = $v_central_dir['comment'];
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
+      $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOpenFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privOpenFd($p_mode)
+  {
+    $v_result=1;
+
+    // ----- Look if already open
+    if ($this->zip_fd != 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Open the zip file
+    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCloseFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privCloseFd()
+  {
+    $v_result=1;
+
+    if ($this->zip_fd != 0)
+      @fclose($this->zip_fd);
+    $this->zip_fd = 0;
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddList()
+  // Description :
+  //   $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
+  //   different from the real path of the file. This is usefull if you want to have PclTar
+  //   running in any directory, and memorize relative path from an other directory.
+  // Parameters :
+  //   $p_list : An array containing the file or directory names to add in the tar
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  //   $p_add_dir : Path to add in the filename path archived
+  //   $p_remove_dir : Path to remove in the filename path archived
+  // Return Values :
+  // --------------------------------------------------------------------------------
+//  function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)
+  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Create the Central Dir files header
+    for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          // ----- Return
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = '';
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileList()
+  // Description :
+  // Parameters :
+  //   $p_filedescr_list : An array containing the file description 
+  //                      or directory names to add in the zip
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_header = array();
+
+    // ----- Recuperate the current number of elt in list
+    $v_nb = sizeof($p_result_list);
+
+    // ----- Loop on the files
+    for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {
+      // ----- Format the filename
+      $p_filedescr_list[$j]['filename']
+      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
+      
+
+      // ----- Skip empty file names
+      // TBC : Can this be possible ? not checked in DescrParseAtt ?
+      if ($p_filedescr_list[$j]['filename'] == "") {
+        continue;
+      }
+
+      // ----- Check the filename
+      if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')
+          && (!file_exists($p_filedescr_list[$j]['filename']))) {
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
+        return PclZip::errorCode();
+      }
+
+      // ----- Look if it is a file or a dir with no all path remove option
+      // or a dir with all its path removed
+//      if (   (is_file($p_filedescr_list[$j]['filename']))
+//          || (   is_dir($p_filedescr_list[$j]['filename'])
+      if (   ($p_filedescr_list[$j]['type'] == 'file')
+          || ($p_filedescr_list[$j]['type'] == 'virtual_file')
+          || (   ($p_filedescr_list[$j]['type'] == 'folder')
+              && (   !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
+                  || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))
+          ) {
+
+        // ----- Add the file
+        $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
+                                       $p_options);
+        if ($v_result != 1) {
+          return $v_result;
+        }
+
+        // ----- Store the file infos
+        $p_result_list[$v_nb++] = $v_header;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFile($p_filedescr, &$p_header, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+    // TBC : Already done in the fileAtt check ... ?
+    if ($p_filename == "") {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+  
+    // ----- Look for a stored different filename 
+    /* TBC : Removed
+    if (isset($p_filedescr['stored_filename'])) {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+    }
+    else {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+    }
+    */
+
+    // ----- Set the file properties
+    clearstatcache();
+    $p_header['version'] = 20;
+    $p_header['version_extracted'] = 10;
+    $p_header['flag'] = 0;
+    $p_header['compression'] = 0;
+    $p_header['crc'] = 0;
+    $p_header['compressed_size'] = 0;
+    $p_header['filename_len'] = strlen($p_filename);
+    $p_header['extra_len'] = 0;
+    $p_header['disk'] = 0;
+    $p_header['internal'] = 0;
+    $p_header['offset'] = 0;
+    $p_header['filename'] = $p_filename;
+// TBC : Removed    $p_header['stored_filename'] = $v_stored_filename;
+    $p_header['stored_filename'] = $p_filedescr['stored_filename'];
+    $p_header['extra'] = '';
+    $p_header['status'] = 'ok';
+    $p_header['index'] = -1;
+
+    // ----- Look for regular file
+    if ($p_filedescr['type']=='file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for regular folder
+    else if ($p_filedescr['type']=='folder') {
+      $p_header['external'] = 0x00000010;
+      $p_header['mtime'] = filemtime($p_filename);
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for virtual file
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = strlen($p_filedescr['content']);
+    }
+    
+
+    // ----- Look for filetime
+    if (isset($p_filedescr['mtime'])) {
+      $p_header['mtime'] = $p_filedescr['mtime'];
+    }
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['mtime'] = time();
+    }
+    else {
+      $p_header['mtime'] = filemtime($p_filename);
+    }
+
+    // ------ Look for file comment
+    if (isset($p_filedescr['comment'])) {
+      $p_header['comment_len'] = strlen($p_filedescr['comment']);
+      $p_header['comment'] = $p_filedescr['comment'];
+    }
+    else {
+      $p_header['comment_len'] = 0;
+      $p_header['comment'] = '';
+    }
+
+    // ----- Look for pre-add callback
+    if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_header['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
+        $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
+      }
+    }
+
+    // ----- Look for empty stored filename
+    if ($p_header['stored_filename'] == "") {
+      $p_header['status'] = "filtered";
+    }
+    
+    // ----- Check the path length
+    if (strlen($p_header['stored_filename']) > 0xFF) {
+      $p_header['status'] = 'filename_too_long';
+    }
+
+    // ----- Look if no error, or file not skipped
+    if ($p_header['status'] == 'ok') {
+
+      // ----- Look for a file
+      if ($p_filedescr['type'] == 'file') {
+        // ----- Look for using temporary file to zip
+        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+            && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                    && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) {
+          $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options);
+          if ($v_result < PCLZIP_ERR_NO_ERROR) {
+            return $v_result;
+          }
+        }
+        
+        // ----- Use "in memory" zip algo
+        else {
+
+        // ----- Open the source file
+        if (($v_file = @fopen($p_filename, "rb")) == 0) {
+          PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+          return PclZip::errorCode();
+        }
+
+        // ----- Read the file content
+        $v_content = @fread($v_file, $p_header['size']);
+
+        // ----- Close the file
+        @fclose($v_file);
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+
+        }
+
+      }
+
+      // ----- Look for a virtual file (a file from string)
+      else if ($p_filedescr['type'] == 'virtual_file') {
+          
+        $v_content = $p_filedescr['content'];
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+      }
+
+      // ----- Look for a directory
+      else if ($p_filedescr['type'] == 'folder') {
+        // ----- Look for directory last '/'
+        if (@substr($p_header['stored_filename'], -1) != '/') {
+          $p_header['stored_filename'] .= '/';
+        }
+
+        // ----- Set the file properties
+        $p_header['size'] = 0;
+        //$p_header['external'] = 0x41FF0010;   // Value for a folder : to be checked
+        $p_header['external'] = 0x00000010;   // Value for a folder : to be checked
+
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
+        {
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Look for post-add callback
+    if (isset($p_options[PCLZIP_CB_POST_ADD])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Ignored
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Nothing can be modified
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
+  {
+    $v_result=PCLZIP_ERR_NO_ERROR;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+
+    // ----- Open the source file
+    if (($v_file = @fopen($p_filename, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+      return PclZip::errorCode();
+    }
+
+    // ----- Creates a compressed temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = filesize($p_filename);
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @gzputs($v_file_compressed, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file);
+    @gzclose($v_file_compressed);
+
+    // ----- Check the minimum file size
+    if (filesize($v_gzip_temp_name) < 18) {
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the compressed attributes
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the gzip file header
+    $v_binary_data = @fread($v_file_compressed, 10);
+    $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);
+
+    // ----- Check some parameters
+    $v_data_header['os'] = bin2hex($v_data_header['os']);
+
+    // ----- Read the gzip file footer
+    @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
+    $v_binary_data = @fread($v_file_compressed, 8);
+    $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
+
+    // ----- Set the attributes
+    $p_header['compression'] = ord($v_data_header['cm']);
+    //$p_header['mtime'] = $v_data_header['mtime'];
+    $p_header['crc'] = $v_data_footer['crc'];
+    $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Call the header generation
+    if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+      return $v_result;
+    }
+
+    // ----- Add the compressed data
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)
+    {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    fseek($v_file_compressed, 10);
+    $v_size = $p_header['compressed_size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_file_compressed, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Unlink the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCalculateStoredFilename()
+  // Description :
+  //   Based on file descriptor properties and global options, this method
+  //   calculate the filename that will be stored in the archive.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCalculateStoredFilename(&$p_filedescr, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Working variables
+    $p_filename = $p_filedescr['filename'];
+    if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
+      $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
+    }
+    else {
+      $p_add_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
+      $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
+    }
+    else {
+      $p_remove_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+    }
+    else {
+      $p_remove_all_dir = 0;
+    }
+
+
+    // ----- Look for full name change
+    if (isset($p_filedescr['new_full_name'])) {
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
+    }
+    
+    // ----- Look for path and/or short name change
+    else {
+
+      // ----- Look for short name change
+      // Its when we cahnge just the filename but not the path
+      if (isset($p_filedescr['new_short_name'])) {
+        $v_path_info = pathinfo($p_filename);
+        $v_dir = '';
+        if ($v_path_info['dirname'] != '') {
+          $v_dir = $v_path_info['dirname'].'/';
+        }
+        $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
+      }
+      else {
+        // ----- Calculate the stored filename
+        $v_stored_filename = $p_filename;
+      }
+
+      // ----- Look for all path to remove
+      if ($p_remove_all_dir) {
+        $v_stored_filename = basename($p_filename);
+      }
+      // ----- Look for partial path remove
+      else if ($p_remove_dir != "") {
+        if (substr($p_remove_dir, -1) != '/')
+          $p_remove_dir .= "/";
+
+        if (   (substr($p_filename, 0, 2) == "./")
+            || (substr($p_remove_dir, 0, 2) == "./")) {
+            
+          if (   (substr($p_filename, 0, 2) == "./")
+              && (substr($p_remove_dir, 0, 2) != "./")) {
+            $p_remove_dir = "./".$p_remove_dir;
+          }
+          if (   (substr($p_filename, 0, 2) != "./")
+              && (substr($p_remove_dir, 0, 2) == "./")) {
+            $p_remove_dir = substr($p_remove_dir, 2);
+          }
+        }
+
+        $v_compare = PclZipUtilPathInclusion($p_remove_dir,
+                                             $v_stored_filename);
+        if ($v_compare > 0) {
+          if ($v_compare == 2) {
+            $v_stored_filename = "";
+          }
+          else {
+            $v_stored_filename = substr($v_stored_filename,
+                                        strlen($p_remove_dir));
+          }
+        }
+      }
+      
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
+      
+      // ----- Look for path to add
+      if ($p_add_dir != "") {
+        if (substr($p_add_dir, -1) == "/")
+          $v_stored_filename = $p_add_dir.$v_stored_filename;
+        else
+          $v_stored_filename = $p_add_dir."/".$v_stored_filename;
+      }
+    }
+
+    // ----- Filename (reduce the path of stored name)
+    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
+    $p_filedescr['stored_filename'] = $v_stored_filename;
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Store the offset position of the file
+    $p_header['offset'] = ftell($this->zip_fd);
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,
+	                      $p_header['version_extracted'], $p_header['flag'],
+                          $p_header['compression'], $v_mtime, $v_mdate,
+                          $p_header['crc'], $p_header['compressed_size'],
+						  $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len']);
+
+    // ----- Write the first 148 bytes of the header in the archive
+    fputs($this->zip_fd, $v_binary_data, 30);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // TBC
+    //for(reset($p_header); $key = key($p_header); next($p_header)) {
+    //}
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
+	                      $p_header['version'], $p_header['version_extracted'],
+                          $p_header['flag'], $p_header['compression'],
+						  $v_mtime, $v_mdate, $p_header['crc'],
+                          $p_header['compressed_size'], $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len'], $p_header['comment_len'],
+                          $p_header['disk'], $p_header['internal'],
+						  $p_header['external'], $p_header['offset']);
+
+    // ----- Write the 42 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 46);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+    if ($p_header['comment_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
+  {
+    $v_result=1;
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,
+	                      $p_nb_entries, $p_size,
+						  $p_offset, strlen($p_comment));
+
+    // ----- Write the 22 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 22);
+
+    // ----- Write the variable fields
+    if (strlen($p_comment) != 0)
+    {
+      fputs($this->zip_fd, $p_comment, strlen($p_comment));
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privList()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privList(&$p_list)
+  {
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+      
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of Central Dir
+    @rewind($this->zip_fd);
+    if (@fseek($this->zip_fd, $v_central_dir['offset']))
+    {
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read each entry
+    for ($i=0; $i<$v_central_dir['entries']; $i++)
+    {
+      // ----- Read the file header
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        return $v_result;
+      }
+      $v_header['index'] = $i;
+
+      // ----- Get the only interesting attributes
+      $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);
+      unset($v_header);
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privConvertHeader2FileInfo()
+  // Description :
+  //   This function takes the file informations from the central directory
+  //   entries and extract the interesting parameters that will be given back.
+  //   The resulting file infos are set in the array $p_info
+  //     $p_info['filename'] : Filename with full path. Given by user (add),
+  //                           extracted in the filesystem (extract).
+  //     $p_info['stored_filename'] : Stored filename in the archive.
+  //     $p_info['size'] = Size of the file.
+  //     $p_info['compressed_size'] = Compressed size of the file.
+  //     $p_info['mtime'] = Last modification date of the file.
+  //     $p_info['comment'] = Comment associated with the file.
+  //     $p_info['folder'] = true/false : indicates if the entry is a folder or not.
+  //     $p_info['status'] = status of the action on the file.
+  //     $p_info['crc'] = CRC of the file content.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privConvertHeader2FileInfo($p_header, &$p_info)
+  {
+    $v_result=1;
+
+    // ----- Get the interesting attributes
+    $v_temp_path = PclZipUtilPathReduction($p_header['filename']);
+    $p_info['filename'] = $v_temp_path;
+    $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']);
+    $p_info['stored_filename'] = $v_temp_path;
+    $p_info['size'] = $p_header['size'];
+    $p_info['compressed_size'] = $p_header['compressed_size'];
+    $p_info['mtime'] = $p_header['mtime'];
+    $p_info['comment'] = $p_header['comment'];
+    $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
+    $p_info['index'] = $p_header['index'];
+    $p_info['status'] = $p_header['status'];
+    $p_info['crc'] = $p_header['crc'];
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractByRule()
+  // Description :
+  //   Extract a file or directory depending of rules (by index, by name, ...)
+  // Parameters :
+  //   $p_file_list : An array where will be placed the properties of each
+  //                  extracted file
+  //   $p_path : Path to add while writing the extracted files
+  //   $p_remove_path : Path to remove (from the file memorized path) while writing the
+  //                    extracted files. If the path does not match the file path,
+  //                    the file is extracted with its memorized path.
+  //                    $p_remove_path does not apply to 'list' mode.
+  //                    $p_path and $p_remove_path are commulative.
+  // Return Values :
+  //   1 on success,0 or less on error (see error code list)
+  // --------------------------------------------------------------------------------
+  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check the path
+    if (   ($p_path == "")
+	    || (   (substr($p_path, 0, 1) != "/")
+		    && (substr($p_path, 0, 3) != "../")
+			&& (substr($p_path,1,2)!=":/")))
+      $p_path = "./".$p_path;
+
+    // ----- Reduce the path last (and duplicated) '/'
+    if (($p_path != "./") && ($p_path != "/"))
+    {
+      // ----- Look for the path end '/'
+      while (substr($p_path, -1) == "/")
+      {
+        $p_path = substr($p_path, 0, strlen($p_path)-1);
+      }
+    }
+
+    // ----- Look for path to remove format (should end by /)
+    if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))
+    {
+      $p_remove_path .= '/';
+    }
+    $p_remove_path_size = strlen($p_remove_path);
+
+    // ----- Open the zip file
+    if (($v_result = $this->privOpenFd('rb')) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      return $v_result;
+    }
+
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+
+    // ----- Read each entry
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+
+      // ----- Read next Central dir entry
+      @rewind($this->zip_fd);
+      if (@fseek($this->zip_fd, $v_pos_entry))
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read the file header
+      $v_header = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        return $v_result;
+      }
+
+      // ----- Store the index
+      $v_header['index'] = $i;
+
+      // ----- Store the file position
+      $v_pos_entry = ftell($this->zip_fd);
+
+      // ----- Look for the specific extract rules
+      $v_extract = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_extract = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  $v_extract = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      // ereg() is deprecated with PHP 5.3
+      /* 
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
+              $v_extract = true;
+          }
+      }
+      */
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  $v_extract = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  break;
+              }
+          }
+      }
+
+      // ----- Look for no rule, which means extract all the archive
+      else {
+          $v_extract = true;
+      }
+
+	  // ----- Check compression method
+	  if (   ($v_extract)
+	      && (   ($v_header['compression'] != 8)
+		      && ($v_header['compression'] != 0))) {
+          $v_header['status'] = 'unsupported_compression';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+              $this->privSwapBackMagicQuotes();
+              
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
+			                       "Filename '".$v_header['stored_filename']."' is "
+				  	    	  	   ."compressed by an unsupported compression "
+				  	    	  	   ."method (".$v_header['compression'].") ");
+
+              return PclZip::errorCode();
+		  }
+	  }
+	  
+	  // ----- Check encrypted files
+	  if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
+          $v_header['status'] = 'unsupported_encryption';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+              $this->privSwapBackMagicQuotes();
+
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
+			                       "Unsupported encryption for "
+				  	    	  	   ." filename '".$v_header['stored_filename']
+								   ."'");
+
+              return PclZip::errorCode();
+		  }
+    }
+
+      // ----- Look for real extraction
+      if (($v_extract) && ($v_header['status'] != 'ok')) {
+          $v_result = $this->privConvertHeader2FileInfo($v_header,
+		                                        $p_file_list[$v_nb_extracted++]);
+          if ($v_result != 1) {
+              $this->privCloseFd();
+              $this->privSwapBackMagicQuotes();
+              return $v_result;
+          }
+
+          $v_extract = false;
+      }
+      
+      // ----- Look for real extraction
+      if ($v_extract)
+      {
+
+        // ----- Go to the file position
+        @rewind($this->zip_fd);
+        if (@fseek($this->zip_fd, $v_header['offset']))
+        {
+          // ----- Close the zip file
+          $this->privCloseFd();
+
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+          // ----- Return
+          return PclZip::errorCode();
+        }
+
+        // ----- Look for extraction as string
+        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
+
+          $v_string = '';
+
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            return $v_result;
+          }
+
+          // ----- Set the file content
+          $p_file_list[$v_nb_extracted]['content'] = $v_string;
+
+          // ----- Next extracted file
+          $v_nb_extracted++;
+          
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for extraction in standard output
+        elseif (   (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))
+		        && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {
+          // ----- Extracting the file in standard output
+          $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for normal extraction
+        else {
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFile($v_header,
+		                                      $p_path, $p_remove_path,
+											  $p_remove_all_path,
+											  $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+      }
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //
+  // 1 : ... ?
+  // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback
+  // --------------------------------------------------------------------------------
+  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for all path to remove
+    if ($p_remove_all_path == true) {
+        // ----- Look for folder entry that not need to be extracted
+        if (($p_entry['external']&0x00000010)==0x00000010) {
+
+            $p_entry['status'] = "filtered";
+
+            return $v_result;
+        }
+
+        // ----- Get the basename of the path
+        $p_entry['filename'] = basename($p_entry['filename']);
+    }
+
+    // ----- Look for path to remove
+    else if ($p_remove_path != "")
+    {
+      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "filtered";
+
+        // ----- Return
+        return $v_result;
+      }
+
+      $p_remove_path_size = strlen($p_remove_path);
+      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
+      {
+
+        // ----- Remove the path
+        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
+
+      }
+    }
+
+    // ----- Add the path
+    if ($p_path != '') {
+      $p_entry['filename'] = $p_path."/".$p_entry['filename'];
+    }
+    
+    // ----- Check a base_dir_restriction
+    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
+      $v_inclusion
+      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
+                                $p_entry['filename']); 
+      if ($v_inclusion == 0) {
+
+        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
+
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+    // ----- Look for specific actions while the file exist
+    if (file_exists($p_entry['filename']))
+    {
+
+      // ----- Look if file is a directory
+      if (is_dir($p_entry['filename']))
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "already_a_directory";
+        
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."already used by an existing directory");
+
+            return PclZip::errorCode();
+		    }
+      }
+      // ----- Look if file is write protected
+      else if (!is_writeable($p_entry['filename']))
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "write_protected";
+
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			                     "Filename '".$p_entry['filename']."' exists "
+								 ."and is write protected");
+
+            return PclZip::errorCode();
+		    }
+      }
+
+      // ----- Look if the extracted file is older
+      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
+      {
+        // ----- Change the file status
+        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
+		    && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
+	  	  }
+		    else {
+            $p_entry['status'] = "newer_exist";
+
+            // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+            // For historical reason first PclZip implementation does not stop
+            // when this kind of error occurs.
+            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		        && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			             "Newer version of '".$p_entry['filename']."' exists "
+					    ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
+
+                return PclZip::errorCode();
+		      }
+		    }
+      }
+      else {
+      }
+    }
+
+    // ----- Check the directory availability and create it if necessary
+    else {
+      if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
+        $v_dir_to_check = $p_entry['filename'];
+      else if (!strstr($p_entry['filename'], "/"))
+        $v_dir_to_check = "";
+      else
+        $v_dir_to_check = dirname($p_entry['filename']);
+
+        if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
+  
+          // ----- Change the file status
+          $p_entry['status'] = "path_creation_fail";
+  
+          // ----- Return
+          //return $v_result;
+          $v_result = 1;
+        }
+      }
+    }
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010))
+      {
+        // ----- Look for not compressed file
+        if ($p_entry['compression'] == 0) {
+
+    		  // ----- Opening destination file
+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
+          {
+
+            // ----- Change the file status
+            $p_entry['status'] = "write_error";
+
+            // ----- Return
+            return $v_result;
+          }
+
+
+          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+          $v_size = $p_entry['compressed_size'];
+          while ($v_size != 0)
+          {
+            $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+            $v_buffer = @fread($this->zip_fd, $v_read_size);
+            /* Try to speed up the code
+            $v_binary_data = pack('a'.$v_read_size, $v_buffer);
+            @fwrite($v_dest_file, $v_binary_data, $v_read_size);
+            */
+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            
+            $v_size -= $v_read_size;
+          }
+
+          // ----- Closing the destination file
+          fclose($v_dest_file);
+
+          // ----- Change the file mtime
+          touch($p_entry['filename'], $p_entry['mtime']);
+          
+
+        }
+        else {
+          // ----- TBC
+          // Need to be finished
+          if (($p_entry['flag'] & 1) == 1) {
+            PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');
+            return PclZip::errorCode();
+          }
+
+
+          // ----- Look for using temporary file to unzip
+          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+              && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                  || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                      && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) {
+            $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options);
+            if ($v_result < PCLZIP_ERR_NO_ERROR) {
+              return $v_result;
+            }
+          }
+          
+          // ----- Look for extract in memory
+          else {
+
+          
+            // ----- Read the compressed file in a buffer (one shot)
+            $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+            
+            // ----- Decompress the file
+            $v_file_content = @gzinflate($v_buffer);
+            unset($v_buffer);
+            if ($v_file_content === FALSE) {
+  
+              // ----- Change the file status
+              // TBC
+              $p_entry['status'] = "error";
+              
+              return $v_result;
+            }
+            
+            // ----- Opening destination file
+            if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+  
+              // ----- Change the file status
+              $p_entry['status'] = "write_error";
+  
+              return $v_result;
+            }
+  
+            // ----- Write the uncompressed data
+            @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
+            unset($v_file_content);
+  
+            // ----- Closing the destination file
+            @fclose($v_dest_file);
+            
+          }
+
+          // ----- Change the file mtime
+          @touch($p_entry['filename'], $p_entry['mtime']);
+        }
+
+        // ----- Look for chmod option
+        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
+
+          // ----- Change the mode of the file
+          @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
+        }
+
+      }
+    }
+
+  	// ----- Change abort status
+  	if ($p_entry['status'] == "aborted") {
+        $p_entry['status'] = "skipped";
+  	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileUsingTempFile(&$p_entry, &$p_options)
+  {
+    $v_result=1;
+        
+    // ----- Creates a temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      return PclZip::errorCode();
+    }
+
+
+    // ----- Write gz file format header
+    $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
+    @fwrite($v_dest_file, $v_binary_data, 10);
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['compressed_size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Write gz file format footer
+    $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']);
+    @fwrite($v_dest_file, $v_binary_data, 8);
+
+    // ----- Close the temporary file
+    @fclose($v_dest_file);
+
+    // ----- Opening destination file
+    if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+      $p_entry['status'] = "write_error";
+      return $v_result;
+    }
+
+    // ----- Open the temporary gz file
+    if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) {
+      @fclose($v_dest_file);
+      $p_entry['status'] = "read_error";
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['size'];
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @gzread($v_src_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+    @fclose($v_dest_file);
+    @gzclose($v_src_file);
+
+    // ----- Delete the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileInOutput()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileInOutput(&$p_entry, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+    // ----- Trace
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+        if ($p_entry['compressed_size'] == $p_entry['size']) {
+
+          // ----- Read the file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+
+          // ----- Send the file to the output
+          echo $v_buffer;
+          unset($v_buffer);
+        }
+        else {
+
+          // ----- Read the compressed file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          $v_file_content = gzinflate($v_buffer);
+          unset($v_buffer);
+
+          // ----- Send the file to the output
+          echo $v_file_content;
+          unset($v_file_content);
+        }
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileAsString()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileAsString(&$p_entry, &$p_string, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    $v_header = array();
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+  //      if ($p_entry['compressed_size'] == $p_entry['size'])
+        if ($p_entry['compression'] == 0) {
+  
+          // ----- Reading the file
+          $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
+        }
+        else {
+  
+          // ----- Reading the file
+          $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          if (($p_string = @gzinflate($v_data)) === FALSE) {
+              // TBC
+          }
+        }
+  
+        // ----- Trace
+      }
+      else {
+          // TBC : error : can not extract a folder in a string
+      }
+      
+    }
+
+  	// ----- Change abort status
+  	if ($p_entry['status'] == "aborted") {
+        $p_entry['status'] = "skipped";
+  	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+      
+      // ----- Swap the content to header
+      $v_local_header['content'] = $p_string;
+      $p_string = '';
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Swap back the content to header
+      $p_string = $v_local_header['content'];
+      unset($v_local_header['content']);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    $v_data = unpack('Vid', $v_binary_data);
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x04034b50)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 26);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 26)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
+
+    // ----- Get filename
+    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
+
+    // ----- Get extra_fields
+    if ($v_data['extra_len'] != 0) {
+      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
+    }
+    else {
+      $p_header['extra'] = '';
+    }
+
+    // ----- Extract properties
+    $p_header['version_extracted'] = $v_data['version'];
+    $p_header['compression'] = $v_data['compression'];
+    $p_header['size'] = $v_data['size'];
+    $p_header['compressed_size'] = $v_data['compressed_size'];
+    $p_header['crc'] = $v_data['crc'];
+    $p_header['flag'] = $v_data['flag'];
+    $p_header['filename_len'] = $v_data['filename_len'];
+
+    // ----- Recuperate date in UNIX format
+    $p_header['mdate'] = $v_data['mdate'];
+    $p_header['mtime'] = $v_data['mtime'];
+    if ($p_header['mdate'] && $p_header['mtime'])
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+    }
+
+    // TBC
+    //for(reset($v_data); $key = key($v_data); next($v_data)) {
+    //}
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set the status field
+    $p_header['status'] = "ok";
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadCentralFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    $v_data = unpack('Vid', $v_binary_data);
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x02014b50)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 42);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 42)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
+
+    // ----- Get filename
+    if ($p_header['filename_len'] != 0)
+      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
+    else
+      $p_header['filename'] = '';
+
+    // ----- Get extra
+    if ($p_header['extra_len'] != 0)
+      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
+    else
+      $p_header['extra'] = '';
+
+    // ----- Get comment
+    if ($p_header['comment_len'] != 0)
+      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
+    else
+      $p_header['comment'] = '';
+
+    // ----- Extract properties
+
+    // ----- Recuperate date in UNIX format
+    //if ($p_header['mdate'] && $p_header['mtime'])
+    // TBC : bug : this was ignoring time with 0/0/0
+    if (1)
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+    }
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set default status to ok
+    $p_header['status'] = 'ok';
+
+    // ----- Look if it is a directory
+    if (substr($p_header['filename'], -1) == '/') {
+      //$p_header['external'] = 0x41FF0010;
+      $p_header['external'] = 0x00000010;
+    }
+
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFileHeaders()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success,
+  //   0 on error;
+  // --------------------------------------------------------------------------------
+  function privCheckFileHeaders(&$p_local_header, &$p_central_header)
+  {
+    $v_result=1;
+
+  	// ----- Check the static values
+  	// TBC
+  	if ($p_local_header['filename'] != $p_central_header['filename']) {
+  	}
+  	if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
+  	}
+  	if ($p_local_header['flag'] != $p_central_header['flag']) {
+  	}
+  	if ($p_local_header['compression'] != $p_central_header['compression']) {
+  	}
+  	if ($p_local_header['mtime'] != $p_central_header['mtime']) {
+  	}
+  	if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
+  	}
+  
+  	// ----- Look for flag bit 3
+  	if (($p_local_header['flag'] & 8) == 8) {
+          $p_local_header['size'] = $p_central_header['size'];
+          $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
+          $p_local_header['crc'] = $p_central_header['crc'];
+  	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadEndCentralDir()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadEndCentralDir(&$p_central_dir)
+  {
+    $v_result=1;
+
+    // ----- Go to the end of the zip file
+    $v_size = filesize($this->zipname);
+    @fseek($this->zip_fd, $v_size);
+    if (@ftell($this->zip_fd) != $v_size)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- First try : look if this is an archive with no commentaries (most of the time)
+    // in this case the end of central dir is at 22 bytes of the file end
+    $v_found = 0;
+    if ($v_size > 26) {
+      @fseek($this->zip_fd, $v_size-22);
+      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read for bytes
+      $v_binary_data = @fread($this->zip_fd, 4);
+      $v_data = @unpack('Vid', $v_binary_data);
+
+      // ----- Check signature
+      if ($v_data['id'] == 0x06054b50) {
+        $v_found = 1;
+      }
+
+      $v_pos = ftell($this->zip_fd);
+    }
+
+    // ----- Go back to the maximum possible size of the Central Dir End Record
+    if (!$v_found) {
+      $v_maximum_size = 65557; // 0xFFFF + 22;
+      if ($v_maximum_size > $v_size)
+        $v_maximum_size = $v_size;
+      @fseek($this->zip_fd, $v_size-$v_maximum_size);
+      if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read byte per byte in order to find the signature
+      $v_pos = ftell($this->zip_fd);
+      $v_bytes = 0x00000000;
+      while ($v_pos < $v_size)
+      {
+        // ----- Read a byte
+        $v_byte = @fread($this->zip_fd, 1);
+
+        // -----  Add the byte
+        //$v_bytes = ($v_bytes << 8) | Ord($v_byte);
+        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 
+        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 
+        $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 
+
+        // ----- Compare the bytes
+        if ($v_bytes == 0x504b0506)
+        {
+          $v_pos++;
+          break;
+        }
+
+        $v_pos++;
+      }
+
+      // ----- Look if not found end of central dir
+      if ($v_pos == $v_size)
+      {
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Read the first 18 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 18);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 18)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
+
+    // ----- Check the global size
+    if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
+
+	  // ----- Removed in release 2.2 see readme file
+	  // The check of the file size is a little too strict.
+	  // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.
+	  // While decrypted, zip has training 0 bytes
+	  if (0) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,
+	                       'The central dir is not at the end of the archive.'
+						   .' Some trailing bytes exists after the archive.');
+
+      // ----- Return
+      return PclZip::errorCode();
+	  }
+    }
+
+    // ----- Get comment
+    if ($v_data['comment_size'] != 0) {
+      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
+    }
+    else
+      $p_central_dir['comment'] = '';
+
+    $p_central_dir['entries'] = $v_data['entries'];
+    $p_central_dir['disk_entries'] = $v_data['disk_entries'];
+    $p_central_dir['offset'] = $v_data['offset'];
+    $p_central_dir['size'] = $v_data['size'];
+    $p_central_dir['disk'] = $v_data['disk'];
+    $p_central_dir['disk_start'] = $v_data['disk_start'];
+
+    // TBC
+    //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
+    //}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDeleteByRule()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDeleteByRule(&$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Scan all the files
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+    @rewind($this->zip_fd);
+    if (@fseek($this->zip_fd, $v_pos_entry))
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read each entry
+    $v_header_list = array();
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+
+      // ----- Read the file header
+      $v_header_list[$v_nb_extracted] = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+
+        return $v_result;
+      }
+
+
+      // ----- Store the index
+      $v_header_list[$v_nb_extracted]['index'] = $i;
+
+      // ----- Look for the specific extract rules
+      $v_found = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_found = true;
+                  }
+                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
+                          && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_found = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  $v_found = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      // ereg() is deprecated with PHP 5.3
+      /*
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              $v_found = true;
+          }
+      }
+      */
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  $v_found = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  break;
+              }
+          }
+      }
+      else {
+      	$v_found = true;
+      }
+
+      // ----- Look for deletion
+      if ($v_found)
+      {
+        unset($v_header_list[$v_nb_extracted]);
+      }
+      else
+      {
+        $v_nb_extracted++;
+      }
+    }
+
+    // ----- Look if something need to be deleted
+    if ($v_nb_extracted > 0) {
+
+        // ----- Creates a temporay file
+        $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+        // ----- Creates a temporary zip archive
+        $v_temp_zip = new PclZip($v_zip_temp_name);
+
+        // ----- Open the temporary zip file in write mode
+        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
+            $this->privCloseFd();
+
+            // ----- Return
+            return $v_result;
+        }
+
+        // ----- Look which file need to be kept
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+
+            // ----- Calculate the position of the header
+            @rewind($this->zip_fd);
+            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Error log
+                PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+                // ----- Return
+                return PclZip::errorCode();
+            }
+
+            // ----- Read the file header
+            $v_local_header = array();
+            if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+            
+            // ----- Check that local file header is same as central file header
+            if ($this->privCheckFileHeaders($v_local_header,
+			                                $v_header_list[$i]) != 1) {
+                // TBC
+            }
+            unset($v_local_header);
+
+            // ----- Write the file header
+            if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+
+            // ----- Read/write the data block
+            if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+        }
+
+        // ----- Store the offset of the central dir
+        $v_offset = @ftell($v_temp_zip->zip_fd);
+
+        // ----- Re-Create the Central Dir files header
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            // ----- Create the file header
+            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+                $v_temp_zip->privCloseFd();
+                $this->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+
+            // ----- Transform the header to a 'usable' info
+            $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+        }
+
+
+        // ----- Zip file comment
+        $v_comment = '';
+        if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+          $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+        }
+
+        // ----- Calculate the size of the central header
+        $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;
+
+        // ----- Create the central dir footer
+        if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {
+            // ----- Reset the file list
+            unset($v_header_list);
+            $v_temp_zip->privCloseFd();
+            $this->privCloseFd();
+            @unlink($v_zip_temp_name);
+
+            // ----- Return
+            return $v_result;
+        }
+
+        // ----- Close
+        $v_temp_zip->privCloseFd();
+        $this->privCloseFd();
+
+        // ----- Delete the zip file
+        // TBC : I should test the result ...
+        @unlink($this->zipname);
+
+        // ----- Rename the temporary file
+        // TBC : I should test the result ...
+        //@rename($v_zip_temp_name, $this->zipname);
+        PclZipUtilRename($v_zip_temp_name, $this->zipname);
+    
+        // ----- Destroy the temporary archive
+        unset($v_temp_zip);
+    }
+    
+    // ----- Remove every files : reset the file
+    else if ($v_central_dir['entries'] != 0) {
+        $this->privCloseFd();
+
+        if (($v_result = $this->privOpenFd('wb')) != 1) {
+          return $v_result;
+        }
+
+        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
+          return $v_result;
+        }
+
+        $this->privCloseFd();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDirCheck()
+  // Description :
+  //   Check if a directory exists, if not it creates it and all the parents directory
+  //   which may be useful.
+  // Parameters :
+  //   $p_dir : Directory path to check.
+  // Return Values :
+  //    1 : OK
+  //   -1 : Unable to create directory
+  // --------------------------------------------------------------------------------
+  function privDirCheck($p_dir, $p_is_dir=false)
+  {
+    $v_result = 1;
+
+
+    // ----- Remove the final '/'
+    if (($p_is_dir) && (substr($p_dir, -1)=='/'))
+    {
+      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
+    }
+
+    // ----- Check the directory availability
+    if ((is_dir($p_dir)) || ($p_dir == ""))
+    {
+      return 1;
+    }
+
+    // ----- Extract parent directory
+    $p_parent_dir = dirname($p_dir);
+
+    // ----- Just a check
+    if ($p_parent_dir != $p_dir)
+    {
+      // ----- Look for parent directory
+      if ($p_parent_dir != "")
+      {
+        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
+        {
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Create the directory
+    if (!@mkdir($p_dir, 0777))
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privMerge()
+  // Description :
+  //   If $p_archive_to_add does not exist, the function exit with a success result.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privMerge(&$p_archive_to_add)
+  {
+    $v_result=1;
+
+    // ----- Look if the archive_to_add exists
+    if (!is_file($p_archive_to_add->zipname))
+    {
+
+      // ----- Nothing to merge, so merge is a success
+      $v_result = 1;
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Look if the archive exists
+    if (!is_file($this->zipname))
+    {
+
+      // ----- Do a duplicate
+      $v_result = $this->privDuplicate($p_archive_to_add->zipname);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Open the archive_to_add file
+    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
+    {
+      $this->privCloseFd();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir_to_add = array();
+    if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($p_archive_to_add->zip_fd);
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the files from the archive_to_add into the temporary file
+    $v_size = $v_central_dir_to_add['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($v_zip_temp_fd);
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the block of file headers from the archive_to_add
+    $v_size = $v_central_dir_to_add['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Merge the file comments
+    $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];
+
+    // ----- Calculate the size of the (new) central header
+    $v_size = @ftell($v_zip_temp_fd)-$v_offset;
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive fd
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+      @fclose($v_zip_temp_fd);
+      $this->zip_fd = null;
+
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+    $p_archive_to_add->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDuplicate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDuplicate($p_archive_filename)
+  {
+    $v_result=1;
+
+    // ----- Look if the $p_archive_filename exists
+    if (!is_file($p_archive_filename))
+    {
+
+      // ----- Nothing to duplicate, so duplicate is a success.
+      $v_result = 1;
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
+    {
+      $this->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = filesize($p_archive_filename);
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorLog()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorLog($p_error_code=0, $p_error_string='')
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclError($p_error_code, $p_error_string);
+    }
+    else {
+      $this->error_code = $p_error_code;
+      $this->error_string = $p_error_string;
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorReset()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorReset()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclErrorReset();
+    }
+    else {
+      $this->error_code = 0;
+      $this->error_string = '';
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDisableMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDisableMagicQuotes()
+  {
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      return $v_result;
+	}
+
+    // ----- Look if already done
+    if ($this->magic_quotes_status != -1) {
+      return $v_result;
+	}
+
+	// ----- Get and memorize the magic_quote value
+	$this->magic_quotes_status = @get_magic_quotes_runtime();
+
+	// ----- Disable magic_quotes
+	if ($this->magic_quotes_status == 1) {
+	  @set_magic_quotes_runtime(0);
+	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privSwapBackMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privSwapBackMagicQuotes()
+  {
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      return $v_result;
+	}
+
+    // ----- Look if something to do
+    if ($this->magic_quotes_status != -1) {
+      return $v_result;
+	}
+
+	// ----- Swap back magic_quotes
+	if ($this->magic_quotes_status == 1) {
+  	  @set_magic_quotes_runtime($this->magic_quotes_status);
+	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  }
+  // End of class
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathReduction()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathReduction($p_dir)
+  {
+    $v_result = "";
+
+    // ----- Look for not empty path
+    if ($p_dir != "") {
+      // ----- Explode path by directory names
+      $v_list = explode("/", $p_dir);
+
+      // ----- Study directories from last to first
+      $v_skip = 0;
+      for ($i=sizeof($v_list)-1; $i>=0; $i--) {
+        // ----- Look for current path
+        if ($v_list[$i] == ".") {
+          // ----- Ignore this directory
+          // Should be the first $i=0, but no check is done
+        }
+        else if ($v_list[$i] == "..") {
+		  $v_skip++;
+        }
+        else if ($v_list[$i] == "") {
+		  // ----- First '/' i.e. root slash
+		  if ($i == 0) {
+            $v_result = "/".$v_result;
+		    if ($v_skip > 0) {
+		        // ----- It is an invalid path, so the path is not modified
+		        // TBC
+		        $v_result = $p_dir;
+                $v_skip = 0;
+		    }
+		  }
+		  // ----- Last '/' i.e. indicates a directory
+		  else if ($i == (sizeof($v_list)-1)) {
+            $v_result = $v_list[$i];
+		  }
+		  // ----- Double '/' inside the path
+		  else {
+            // ----- Ignore only the double '//' in path,
+            // but not the first and last '/'
+		  }
+        }
+        else {
+		  // ----- Look for item to skip
+		  if ($v_skip > 0) {
+		    $v_skip--;
+		  }
+		  else {
+            $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
+		  }
+        }
+      }
+      
+      // ----- Look for skip
+      if ($v_skip > 0) {
+        while ($v_skip > 0) {
+            $v_result = '../'.$v_result;
+            $v_skip--;
+        }
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathInclusion()
+  // Description :
+  //   This function indicates if the path $p_path is under the $p_dir tree. Or,
+  //   said in an other way, if the file or sub-dir $p_path is inside the dir
+  //   $p_dir.
+  //   The function indicates also if the path is exactly the same as the dir.
+  //   This function supports path with duplicated '/' like '//', but does not
+  //   support '.' or '..' statements.
+  // Parameters :
+  // Return Values :
+  //   0 if $p_path is not inside directory $p_dir
+  //   1 if $p_path is inside directory $p_dir
+  //   2 if $p_path is exactly the same as $p_dir
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathInclusion($p_dir, $p_path)
+  {
+    $v_result = 1;
+    
+    // ----- Look for path beginning by ./
+    if (   ($p_dir == '.')
+        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
+      $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
+    }
+    if (   ($p_path == '.')
+        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
+      $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
+    }
+
+    // ----- Explode dir and path by directory separator
+    $v_list_dir = explode("/", $p_dir);
+    $v_list_dir_size = sizeof($v_list_dir);
+    $v_list_path = explode("/", $p_path);
+    $v_list_path_size = sizeof($v_list_path);
+
+    // ----- Study directories paths
+    $i = 0;
+    $j = 0;
+    while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
+
+      // ----- Look for empty dir (path reduction)
+      if ($v_list_dir[$i] == '') {
+        $i++;
+        continue;
+      }
+      if ($v_list_path[$j] == '') {
+        $j++;
+        continue;
+      }
+
+      // ----- Compare the items
+      if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {
+        $v_result = 0;
+      }
+
+      // ----- Next items
+      $i++;
+      $j++;
+    }
+
+    // ----- Look if everything seems to be the same
+    if ($v_result) {
+      // ----- Skip all the empty items
+      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
+      while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
+
+      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
+        // ----- There are exactly the same
+        $v_result = 2;
+      }
+      else if ($i < $v_list_dir_size) {
+        // ----- The path is shorter than the dir
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilCopyBlock()
+  // Description :
+  // Parameters :
+  //   $p_mode : read/write compression mode
+  //             0 : src & dest normal
+  //             1 : src gzip, dest normal
+  //             2 : src normal, dest gzip
+  //             3 : src & dest gzip
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
+  {
+    $v_result = 1;
+
+    if ($p_mode==0)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @fread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==1)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==2)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @fread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==3)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilRename()
+  // Description :
+  //   This function tries to do a simple rename() function. If it fails, it
+  //   tries to copy the $p_src file in a new $p_dest file and then unlink the
+  //   first one.
+  // Parameters :
+  //   $p_src : Old filename
+  //   $p_dest : New filename
+  // Return Values :
+  //   1 on success, 0 on failure.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilRename($p_src, $p_dest)
+  {
+    $v_result = 1;
+
+    // ----- Try to rename the files
+    if (!@rename($p_src, $p_dest)) {
+
+      // ----- Try to copy & unlink the src
+      if (!@copy($p_src, $p_dest)) {
+        $v_result = 0;
+      }
+      else if (!@unlink($p_src)) {
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilOptionText()
+  // Description :
+  //   Translate option value in text. Mainly for debug purpose.
+  // Parameters :
+  //   $p_option : the option value.
+  // Return Values :
+  //   The option text value.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilOptionText($p_option)
+  {
+    
+    $v_list = get_defined_constants();
+    for (reset($v_list); $v_key = key($v_list); next($v_list)) {
+	    $v_prefix = substr($v_key, 0, 10);
+	    if ((   ($v_prefix == 'PCLZIP_OPT')
+           || ($v_prefix == 'PCLZIP_CB_')
+           || ($v_prefix == 'PCLZIP_ATT'))
+	        && ($v_list[$v_key] == $p_option)) {
+        return $v_key;
+	    }
+    }
+    
+    $v_result = 'Unknown';
+
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilTranslateWinPath()
+  // Description :
+  //   Translate windows path by replacing '\' by '/' and optionally removing
+  //   drive letter.
+  // Parameters :
+  //   $p_path : path to translate.
+  //   $p_remove_disk_letter : true | false
+  // Return Values :
+  //   The path translated.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)
+  {
+    if (stristr(php_uname(), 'windows')) {
+      // ----- Look for potential disk letter
+      if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {
+          $p_path = substr($p_path, $v_position+1);
+      }
+      // ----- Change potential windows directory separator
+      if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
+          $p_path = strtr($p_path, '\\', '/');
+      }
+    }
+    return $p_path;
+  }
+  // --------------------------------------------------------------------------------
+
+
+?>
Index: /tags/2.6.0RC1/admin/include/photos_add_direct_prepare.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/photos_add_direct_prepare.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/photos_add_direct_prepare.inc.php	(revision 25596)
@@ -0,0 +1,289 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+// +-----------------------------------------------------------------------+
+// | Uploaded photos                                                       |
+// +-----------------------------------------------------------------------+
+
+if (isset($page['thumbnails']))
+{
+  $template->assign(
+    array(
+      'thumbnails' => $page['thumbnails'],
+      )
+    );
+
+  // only display the batch link if we have more than 1 photo
+  if (count($page['thumbnails']) > 1)
+  {
+    $template->assign(
+      array(
+        'batch_link' => $page['batch_link'],
+        'batch_label' => sprintf(
+          l10n('Manage this set of %d photos'),
+          count($page['thumbnails'])
+          ),
+        )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | Photo selection                                                       |
+// +-----------------------------------------------------------------------+
+
+$uploadify_path = PHPWG_ROOT_PATH.'admin/include/uploadify';
+
+$upload_max_filesize = min(
+  get_ini_size('upload_max_filesize'),
+  get_ini_size('post_max_size')
+  );
+
+if ($upload_max_filesize == get_ini_size('upload_max_filesize'))
+{
+  $upload_max_filesize_shorthand = get_ini_size('upload_max_filesize', false);
+}
+else
+{
+  $upload_max_filesize_shorthand = get_ini_size('post_max_filesize', false);
+}
+
+$template->assign(
+    array(
+      'F_ADD_ACTION'=> PHOTOS_ADD_BASE_URL,
+      'uploadify_path' => $uploadify_path,
+      'upload_max_filesize' => $upload_max_filesize,
+      'upload_max_filesize_shorthand' => $upload_max_filesize_shorthand,
+    )
+  );
+
+// what is the maximum number of pixels permitted by the memory_limit?
+if (pwg_image::get_library() == 'gd')
+{
+  $fudge_factor = 1.7;
+  $available_memory = get_ini_size('memory_limit') - memory_get_usage();
+  $max_upload_width = round(sqrt($available_memory/(2 * $fudge_factor)));
+  $max_upload_height = round(2 * $max_upload_width / 3);
+  
+  // we don't want dimensions like 2995x1992 but 3000x2000
+  $max_upload_width = round($max_upload_width/100)*100;
+  $max_upload_height = round($max_upload_height/100)*100;
+  
+  $max_upload_resolution = floor($max_upload_width * $max_upload_height / (1000000));
+
+  // no need to display a limitation warning if the limitation is huge like 20MP
+  if ($max_upload_resolution < 25)
+  {
+    $template->assign(
+      array(
+        'max_upload_width' => $max_upload_width,
+        'max_upload_height' => $max_upload_height,
+        'max_upload_resolution' => $max_upload_resolution,
+        )
+      );
+  }
+}
+
+//warn the user if the picture will be resized after upload
+if ($conf['original_resize'])
+{
+  $template->assign(
+    array(
+        'original_resize_maxwidth' => $conf['original_resize_maxwidth'],
+        'original_resize_maxheight' => $conf['original_resize_maxheight'],
+      )
+    );
+}
+
+
+$upload_modes = array('html', 'multiple');
+$upload_mode = isset($conf['upload_mode']) ? $conf['upload_mode'] : 'multiple';
+
+if (isset($_GET['upload_mode']) and $upload_mode != $_GET['upload_mode'] and in_array($_GET['upload_mode'], $upload_modes))
+{
+  $upload_mode = $_GET['upload_mode'];
+  conf_update_param('upload_mode', $upload_mode);
+}
+
+// what is the upload switch mode
+$index_of_upload_mode = array_flip($upload_modes);
+$upload_mode_index = $index_of_upload_mode[$upload_mode];
+$upload_switch = $upload_modes[ ($upload_mode_index + 1) % 2 ];
+
+$template->assign(
+    array(
+      'upload_mode' => $upload_mode,
+      'form_action' => PHOTOS_ADD_BASE_URL.'&amp;upload_mode='.$upload_mode.'&amp;processed=1',
+      'switch_url' => PHOTOS_ADD_BASE_URL.'&amp;upload_mode='.$upload_switch,
+      'upload_id' => md5(rand()),
+      'session_id' => session_id(),
+      'pwg_token' => get_pwg_token(),
+      'another_upload_link' => PHOTOS_ADD_BASE_URL.'&amp;upload_mode='.$upload_mode,
+    )
+  );
+
+$upload_file_types = 'jpeg, png, gif';
+if ('html' == $upload_mode)
+{
+  $upload_file_types.= ', zip';
+}
+$template->assign(
+  array(
+    'upload_file_types' => $upload_file_types,
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// | Categories                                                            |
+// +-----------------------------------------------------------------------+
+
+// we need to know the category in which the last photo was added
+$selected_category = array();
+
+if (isset($_GET['album']))
+{
+  // set the category from get url or ...
+  check_input_parameter('album', $_GET, false, PATTERN_ID);
+  
+  // test if album really exists
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$_GET['album'].'
+;';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) == 1)
+  {
+    $selected_category = array($_GET['album']);
+    
+    // lets put in the session to persist in case of upload method switch
+    $_SESSION['selected_category'] = $selected_category;
+  }
+  else
+  {
+    fatal_error('[Hacking attempt] the album id = "'.$_GET['album'].'" is not valid');
+  }
+}
+else if (isset($_SESSION['selected_category']))
+{
+  $selected_category = $_SESSION['selected_category'];
+}
+else
+{
+  // we need to know the category in which the last photo was added
+  $query = '
+SELECT category_id
+  FROM '.IMAGES_TABLE.' AS i
+    JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id
+    JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id
+  ORDER BY i.id DESC
+  LIMIT 1
+;
+';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) > 0)
+  {
+    $row = pwg_db_fetch_assoc($result);
+    $selected_category = array($row['category_id']);
+  }
+}
+
+// existing album
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+;';
+
+display_select_cat_wrapper(
+  $query,
+  $selected_category,
+  'category_options'
+  );
+
+
+// image level options
+$selected_level = isset($_POST['level']) ? $_POST['level'] : 0;
+$template->assign(
+    array(
+      'level_options'=> get_privacy_level_options(),
+      'level_options_selected' => array($selected_level)
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// | Setup errors/warnings                                                 |
+// +-----------------------------------------------------------------------+
+
+// Errors
+$setup_errors = array();
+
+$error_message = ready_for_upload_message();
+if (!empty($error_message))
+{
+  $setup_errors[] = $error_message;
+}
+
+if (!function_exists('gd_info'))
+{
+  $setup_errors[] = l10n('GD library is missing');
+}
+
+$template->assign(
+  array(
+    'setup_errors'=> $setup_errors,
+    )
+  );
+
+// Warnings
+if (isset($_GET['hide_warnings']))
+{
+  $_SESSION['upload_hide_warnings'] = true;
+}
+
+if (!isset($_SESSION['upload_hide_warnings']))
+{
+  $setup_warnings = array();
+  
+  if ($conf['use_exif'] and !function_exists('read_exif_data'))
+  {
+    $setup_warnings[] = l10n('Exif extension not available, admin should disable exif use');
+  }
+
+  if (get_ini_size('upload_max_filesize') > get_ini_size('post_max_size'))
+  {
+    $setup_warnings[] = l10n(
+      'In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting',
+      get_ini_size('upload_max_filesize', false),
+      get_ini_size('post_max_size', false)
+      );
+  }
+  $template->assign(
+    array(
+      'setup_warnings' => $setup_warnings,
+      'hide_warnings_link' => PHOTOS_ADD_BASE_URL.'&amp;upload_mode='.$upload_mode.'&amp;hide_warnings=1'
+      )
+    );
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/photos_add_direct_process.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/include/photos_add_direct_process.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/photos_add_direct_process.inc.php	(revision 25596)
@@ -0,0 +1,242 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+if (isset($_GET['processed']))
+{
+//   echo '<pre>POST'."\n"; print_r($_POST); echo '</pre>';
+//   echo '<pre>FILES'."\n"; print_r($_FILES); echo '</pre>';
+//   echo '<pre>SESSION'."\n"; print_r($_SESSION); echo '</pre>';
+//   exit();
+
+  // sometimes, you have submitted the form but you have nothing in $_POST
+  // and $_FILES. This may happen when you have an HTML upload and you
+  // exceeded the post_max_size (but not the upload_max_size)
+  if (!isset($_POST['submit_upload']))
+  {
+    $page['errors'][] = l10n(
+      'The uploaded files exceed the post_max_size directive in php.ini: %sB',
+      ini_get('post_max_size')
+      );
+  }
+  else
+  {
+    $category_id = $_POST['category'];
+  }
+
+  if (isset($_POST['onUploadError']) and is_array($_POST['onUploadError']) and count($_POST['onUploadError']) > 0)
+  {
+    foreach ($_POST['onUploadError'] as $error)
+    {
+      $page['errors'][] = $error;
+    }
+  }
+    
+  $image_ids = array();
+        
+  if (isset($_FILES) and !empty($_FILES['image_upload']))
+  {
+    $starttime = get_moment();
+
+  foreach ($_FILES['image_upload']['error'] as $idx => $error)
+  {
+    if (UPLOAD_ERR_OK == $error)
+    {
+      $images_to_add = array();
+      
+      $extension = pathinfo($_FILES['image_upload']['name'][$idx], PATHINFO_EXTENSION);
+      if ('zip' == strtolower($extension))
+      {
+        $upload_dir = $conf['upload_dir'].'/buffer';
+        prepare_directory($upload_dir);
+        
+        $temporary_archive_name = date('YmdHis').'-'.generate_key(10);
+        $archive_path = $upload_dir.'/'.$temporary_archive_name.'.zip';
+        
+        move_uploaded_file(
+          $_FILES['image_upload']['tmp_name'][$idx],
+          $archive_path
+          );
+
+        define('PCLZIP_TEMPORARY_DIR', $upload_dir.'/');
+        include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+        $zip = new PclZip($archive_path);
+        if ($list = $zip->listContent())
+        {
+          $indexes_to_extract = array();
+          
+          foreach ($list as $node)
+          {
+            if (1 == $node['folder'])
+            {
+              continue;
+            }
+
+            if (is_valid_image_extension(pathinfo($node['filename'], PATHINFO_EXTENSION)))
+            {
+              $indexes_to_extract[] = $node['index'];
+              
+              $images_to_add[] = array(
+                'source_filepath' => $upload_dir.'/'.$temporary_archive_name.'/'.$node['filename'],
+                'original_filename' => basename($node['filename']),
+                );
+            }
+          }
+      
+          if (count($indexes_to_extract) > 0)
+          {
+            $zip->extract(
+              PCLZIP_OPT_PATH, $upload_dir.'/'.$temporary_archive_name,
+              PCLZIP_OPT_BY_INDEX, $indexes_to_extract,
+              PCLZIP_OPT_ADD_TEMP_FILE_ON
+              );
+          }
+        }
+      }
+      elseif (is_valid_image_extension($extension))
+      {
+        $images_to_add[] = array(
+          'source_filepath' => $_FILES['image_upload']['tmp_name'][$idx],
+          'original_filename' => $_FILES['image_upload']['name'][$idx],
+          );
+      }
+
+      foreach ($images_to_add as $image_to_add)
+      {
+        $image_id = add_uploaded_file(
+          $image_to_add['source_filepath'],
+          $image_to_add['original_filename'],
+          array($category_id),
+          $_POST['level']
+          );
+
+        $image_ids[] = $image_id;
+
+        // TODO: if $image_id is not an integer, something went wrong
+      }
+    }
+    else
+    {
+      $error_message = file_upload_error_message($error);
+      
+      $page['errors'][] = l10n(
+        'Error on file "%s" : %s',
+        $_FILES['image_upload']['name'][$idx],
+        $error_message
+        );
+    }
+  }
+  
+  $endtime = get_moment();
+  $elapsed = ($endtime - $starttime) * 1000;
+  // printf('%.2f ms', $elapsed);
+
+  } // if (!empty($_FILES))
+
+  if (isset($_POST['upload_id']))
+  {
+    // we're on a multiple upload, with uploadify and so on
+    if (isset($_SESSION['uploads_error'][ $_POST['upload_id'] ]))
+    {
+      foreach ($_SESSION['uploads_error'][ $_POST['upload_id'] ] as $error)
+      {
+        $page['errors'][] = $error;
+      }
+    }
+
+    if (isset($_SESSION['uploads'][ $_POST['upload_id'] ]))
+    {
+      $image_ids = $_SESSION['uploads'][ $_POST['upload_id'] ];
+    }
+  }
+  
+  $page['thumbnails'] = array();
+  foreach ($image_ids as $image_id)
+  {
+    // we could return the list of properties from the add_uploaded_file
+    // function, but I like the "double check". And it costs nothing
+    // compared to the upload process.
+    $thumbnail = array();
+      
+    $query = '
+SELECT
+    id,
+    file,
+    path
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$image_id.'
+;';
+    $image_infos = pwg_db_fetch_assoc(pwg_query($query));
+
+    $thumbnail['file'] = $image_infos['file'];
+    
+    $thumbnail['src'] = DerivativeImage::thumb_url($image_infos);
+
+    // TODO: when implementing this plugin in Piwigo core, we should have
+    // a function get_image_name($name, $file) (if name is null, then
+    // compute a temporary name from filename) that would be also used in
+    // picture.php. UPDATE: in fact, "get_name_from_file($file)" already
+    // exists and is used twice (batch_manager_unit + comments, but not in
+    // picture.php I don't know why) with the same pattern if
+    // (empty($name)) {$name = get_name_from_file($file)}, a clean
+    // function get_image_name($name, $file) would be better
+    $thumbnail['title'] = get_name_from_file($image_infos['file']);
+
+    $thumbnail['link'] = get_root_url().'admin.php?page=photo-'.$image_id.'&amp;cat_id='.$category_id;
+
+    $page['thumbnails'][] = $thumbnail;
+  }
+  
+  if (!empty($page['thumbnails']))
+  {
+    $page['infos'][] = l10n('%d photos uploaded', count($page['thumbnails']));
+    
+    if (0 != $_POST['level'])
+    {
+      $page['infos'][] = l10n(
+        'Privacy level set to "%s"',
+        l10n(sprintf('Level %d', $_POST['level']))
+        );
+    }
+
+    $query = '
+SELECT
+    COUNT(*)
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id = '.$category_id.'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=album-');
+    
+    // information
+    $page['infos'][] = l10n(
+      'Album "%s" now contains %d photos',
+      '<em>'.$category_name.'</em>',
+      $count
+      );
+    
+    $page['batch_link'] = PHOTOS_ADD_BASE_URL.'&batch='.implode(',', $image_ids);
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/plugins.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/plugins.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/plugins.class.php	(revision 25596)
@@ -0,0 +1,690 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * class DummyPlugin_maintain
+ * used when a plugin uses the old procedural declaration of maintenance methods
+ */
+class DummyPlugin_maintain extends PluginMaintain
+{
+  function install($plugin_version, &$errors=array())
+  {
+    if (is_callable('plugin_install'))
+    {
+      return plugin_install($this->plugin_id, $plugin_version, $errors);
+    }
+  }
+  function activate($plugin_version, &$errors=array())
+  {
+    if (is_callable('plugin_activate'))
+    {
+      return plugin_activate($this->plugin_id, $plugin_version, $errors);
+    }
+  }
+  function deactivate()
+  {
+    if (is_callable('plugin_install'))
+    {
+      return plugin_install($this->plugin_id);
+    }
+  }
+  function uninstall()
+  {
+    if (is_callable('plugin_uninstall'))
+    {
+      return plugin_uninstall($this->plugin_id);
+    }
+  }
+}
+
+
+class plugins
+{
+  var $fs_plugins = array();
+  var $db_plugins_by_id = array();
+  var $server_plugins = array();
+  var $default_plugins = array('LocalFilesEditor', 'language_switch', 'c13y_upgrade', 'admin_multi_view');
+
+  /**
+   * Initialize $fs_plugins and $db_plugins_by_id
+   */
+  function plugins()
+  {
+    $this->get_fs_plugins();
+
+    foreach (get_db_plugins() as $db_plugin)
+    {
+      $this->db_plugins_by_id[$db_plugin['id']] = $db_plugin;
+    }
+  }
+
+  /**
+   * Returns the maintain class of a plugin
+   * or build a new class with the procedural methods
+   * @param string $plugin_id
+   */
+  private static function build_maintain_class($plugin_id)
+  {
+    $file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain.inc.php';
+    $classname = $plugin_id.'_maintain';
+
+    if (file_exists($file_to_include))
+    {
+      include_once($file_to_include);
+
+      if (class_exists($classname))
+      {
+        $plugin_maintain = new $classname($plugin_id);
+      }
+      else
+      {
+        $plugin_maintain = new DummyPlugin_maintain($plugin_id);
+      }
+    }
+    else
+    {
+      $plugin_maintain = new DummyPlugin_maintain($plugin_id);
+    }
+
+    return $plugin_maintain;
+  }
+
+  /**
+   * Perform requested actions
+   * @param string - action
+   * @param string - plugin id
+   * @param array - errors
+   */
+  function perform_action($action, $plugin_id)
+  {
+    if (isset($this->db_plugins_by_id[$plugin_id]))
+    {
+      $crt_db_plugin = $this->db_plugins_by_id[$plugin_id];
+    }
+    
+    $plugin_maintain = self::build_maintain_class($plugin_id);
+
+    $errors = array();
+
+    switch ($action)
+    {
+      case 'install':
+        if (!empty($crt_db_plugin) or !isset($this->fs_plugins[$plugin_id]))
+        {
+          break;
+        }
+
+        $plugin_maintain->install($this->fs_plugins[$plugin_id]['version'], $errors);
+
+        if (empty($errors))
+        {
+          $query = '
+INSERT INTO '. PLUGINS_TABLE .' (id,version)
+  VALUES (\''. $plugin_id .'\', \''. $this->fs_plugins[$plugin_id]['version'] .'\')
+;';
+          pwg_query($query);
+        }
+        break;
+
+      case 'activate':
+        if (!isset($crt_db_plugin))
+        {
+          $errors = $this->perform_action('install', $plugin_id);
+          list($crt_db_plugin) = get_db_plugins(null, $plugin_id);
+          load_conf_from_db();
+        }
+        elseif ($crt_db_plugin['state'] == 'active')
+        {
+          break;
+        }
+
+        if (empty($errors))
+        {
+          $plugin_maintain->activate($crt_db_plugin['version'], $errors);
+        }
+
+        if (empty($errors))
+        {
+          $query = '
+UPDATE '. PLUGINS_TABLE .'
+  SET state=\'active\',
+    version=\''. $this->fs_plugins[$plugin_id]['version'] .'\'
+  WHERE id=\''. $plugin_id .'\'
+;';
+          pwg_query($query);
+        }
+        break;
+
+      case 'deactivate':
+        if (!isset($crt_db_plugin) or $crt_db_plugin['state'] != 'active')
+        {
+          break;
+        }
+
+        $query = '
+UPDATE '. PLUGINS_TABLE .'
+  SET state=\'inactive\'
+  WHERE id=\''. $plugin_id .'\'
+;';
+        pwg_query($query);
+        
+        $plugin_maintain->deactivate();
+        break;
+
+      case 'uninstall':
+        if (!isset($crt_db_plugin))
+        {
+          break;
+        }
+        if ($crt_db_plugin['state'] == 'active')
+        {
+          $this->perform_action('deactivate', $plugin_id);
+        }
+
+        $query = '
+DELETE FROM '. PLUGINS_TABLE .'
+  WHERE id=\''. $plugin_id .'\'
+;';
+        pwg_query($query);
+        
+        $plugin_maintain->uninstall();
+        break;
+
+      case 'restore':
+        $this->perform_action('uninstall', $plugin_id);
+        unset($this->db_plugins_by_id[$plugin_id]);
+        $errors = $this->perform_action('activate', $plugin_id);
+        break;
+
+      case 'delete':
+        if (!empty($crt_db_plugin))
+        {
+          $this->perform_action('uninstall', $plugin_id);
+        }
+        if (!isset($this->fs_plugins[$plugin_id]))
+        {
+          break;
+        }
+
+        deltree(PHPWG_PLUGINS_PATH . $plugin_id, PHPWG_PLUGINS_PATH . 'trash');
+        break;
+    }
+
+    return $errors;
+  }
+
+  /**
+   * Get plugins defined in the plugin directory
+   */  
+  function get_fs_plugins()
+  {
+    $dir = opendir(PHPWG_PLUGINS_PATH);
+    while ($file = readdir($dir))
+    {
+      if ($file!='.' and $file!='..')
+      {
+        $path = PHPWG_PLUGINS_PATH.$file;
+        if (is_dir($path) and !is_link($path)
+            and preg_match('/^[a-zA-Z0-9-_]+$/', $file )
+            and file_exists($path.'/main.inc.php')
+            )
+        {
+          $plugin = array(
+              'name'=>$file,
+              'version'=>'0',
+              'uri'=>'',
+              'description'=>'',
+              'author'=>'',
+            );
+          $plg_data = implode( '', file($path.'/main.inc.php') );
+
+          if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
+          {
+            $plugin['name'] = trim( $val[1] );
+          }
+          if (preg_match("|Version: (.*)|", $plg_data, $val))
+          {
+            $plugin['version'] = trim($val[1]);
+          }
+          if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
+          {
+            $plugin['uri'] = trim($val[1]);
+          }
+          if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
+          {
+            $plugin['description'] = trim($desc);
+          }
+          elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
+          {
+            $plugin['description'] = trim($val[1]);
+          }
+          if ( preg_match("|Author: (.*)|", $plg_data, $val) )
+          {
+            $plugin['author'] = trim($val[1]);
+          }
+          if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
+          {
+            $plugin['author uri'] = trim($val[1]);
+          }
+          if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
+          {
+            list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
+            if (is_numeric($extension)) $plugin['extension'] = $extension;
+          }
+          // IMPORTANT SECURITY !
+          $plugin = array_map('htmlspecialchars', $plugin);
+          $this->fs_plugins[$file] = $plugin;
+        }
+      }
+    }
+    closedir($dir);
+  }
+
+  /**
+   * Sort fs_plugins
+   */
+  function sort_fs_plugins($order='name')
+  {
+    switch ($order)
+    {
+      case 'name':
+        uasort($this->fs_plugins, 'name_compare');
+        break;
+      case 'status':
+        $this->sort_plugins_by_state();
+        break;
+      case 'author':
+        uasort($this->fs_plugins, array($this, 'plugin_author_compare'));
+        break;
+      case 'id':
+        uksort($this->fs_plugins, 'strcasecmp');
+        break;
+    }
+  }
+
+  // Retrieve PEM versions
+  function get_versions_to_check($version=PHPWG_VERSION)
+  {
+    global $conf;
+    
+    $versions_to_check = array();
+    $url = PEM_URL . '/api/get_version_list.php?category_id='. $conf['pem_plugins_category'] .'&format=php';
+    if (fetchRemote($url, $result) and $pem_versions = @unserialize($result))
+    {
+      if (!preg_match('/^\d+\.\d+\.\d+$/', $version))
+      {
+        $version = $pem_versions[0]['name'];
+      }
+      $branch = get_branch_from_version($version);
+      foreach ($pem_versions as $pem_version)
+      {
+        if (strpos($pem_version['name'], $branch) === 0)
+        {
+          $versions_to_check[] = $pem_version['id'];
+        }
+      }
+    }
+    return $versions_to_check;
+  }
+
+  /**
+   * Retrieve PEM server datas to $server_plugins
+   */
+  function get_server_plugins($new=false)
+  {
+    global $user, $conf;
+
+    $versions_to_check = $this->get_versions_to_check();
+    if (empty($versions_to_check))
+    {
+      return false;
+    }
+
+    // Plugins to check
+    $plugins_to_check = array();
+    foreach($this->fs_plugins as $fs_plugin)
+    {
+      if (isset($fs_plugin['extension']))
+      {
+        $plugins_to_check[] = $fs_plugin['extension'];
+      }
+    }
+
+    // Retrieve PEM plugins infos
+    $url = PEM_URL . '/api/get_revision_list.php';
+    $get_data = array(
+      'category_id' => $conf['pem_plugins_category'],
+      'format' => 'php',
+      'last_revision_only' => 'true',
+      'version' => implode(',', $versions_to_check),
+      'lang' => substr($user['language'], 0, 2),
+      'get_nb_downloads' => 'true',
+    );
+
+    if (!empty($plugins_to_check))
+    {
+      if ($new)
+      {
+        $get_data['extension_exclude'] = implode(',', $plugins_to_check);
+      }
+      else
+      {
+        $get_data['extension_include'] = implode(',', $plugins_to_check);
+      }
+    }
+    if (fetchRemote($url, $result, $get_data))
+    {
+      $pem_plugins = @unserialize($result);
+      if (!is_array($pem_plugins))
+      {
+        return false;
+      }
+      foreach ($pem_plugins as $plugin)
+      {
+        $this->server_plugins[$plugin['extension_id']] = $plugin;
+      }
+      return true;
+    }
+    return false;
+  }
+
+  function get_incompatible_plugins($actualize=false)
+  {
+    if (isset($_SESSION['incompatible_plugins']) and !$actualize
+      and $_SESSION['incompatible_plugins']['~~expire~~'] > time())
+    {
+      return $_SESSION['incompatible_plugins'];
+    }
+
+    $_SESSION['incompatible_plugins'] = array('~~expire~~' => time() + 300);
+
+    $versions_to_check = $this->get_versions_to_check();
+    if (empty($versions_to_check))
+    {
+      return false;
+    }
+    
+    global $conf;
+
+    // Plugins to check
+    $plugins_to_check = array();
+    foreach($this->fs_plugins as $fs_plugin)
+    {
+      if (isset($fs_plugin['extension']))
+      {
+        $plugins_to_check[] = $fs_plugin['extension'];
+      }
+    }
+
+    // Retrieve PEM plugins infos
+    $url = PEM_URL . '/api/get_revision_list.php';
+    $get_data = array(
+      'category_id' => $conf['pem_plugins_category'],
+      'format' => 'php',
+      'version' => implode(',', $versions_to_check),
+      'extension_include' => implode(',', $plugins_to_check),
+    );
+
+    if (fetchRemote($url, $result, $get_data))
+    {
+      $pem_plugins = @unserialize($result);
+      if (!is_array($pem_plugins))
+      {
+        return false;
+      }
+
+      $server_plugins = array();
+      foreach ($pem_plugins as $plugin)
+      {
+        if (!isset($server_plugins[$plugin['extension_id']]))
+        {
+          $server_plugins[$plugin['extension_id']] = array();
+        }
+        $server_plugins[$plugin['extension_id']][] = $plugin['revision_name'];
+      }
+
+      foreach ($this->fs_plugins as $plugin_id => $fs_plugin)
+      {
+        if (isset($fs_plugin['extension'])
+          and !in_array($plugin_id, $this->default_plugins)
+          and $fs_plugin['version'] != 'auto'
+          and (!isset($server_plugins[$fs_plugin['extension']]) or !in_array($fs_plugin['version'], $server_plugins[$fs_plugin['extension']])))
+        {
+          $_SESSION['incompatible_plugins'][$plugin_id] = $fs_plugin['version'];
+        }
+      }
+      return $_SESSION['incompatible_plugins'];
+    }
+    return false;
+  }
+  
+  /**
+   * Sort $server_plugins
+   */
+  function sort_server_plugins($order='date')
+  {
+    switch ($order)
+    {
+      case 'date':
+        krsort($this->server_plugins);
+        break;
+      case 'revision':
+        usort($this->server_plugins, array($this, 'extension_revision_compare'));
+        break;
+      case 'name':
+        uasort($this->server_plugins, array($this, 'extension_name_compare'));
+        break;
+      case 'author':
+        uasort($this->server_plugins, array($this, 'extension_author_compare'));
+        break;
+      case 'downloads':
+        usort($this->server_plugins, array($this, 'extension_downloads_compare'));
+        break;
+    }
+  }
+
+  /**
+   * Extract plugin files from archive
+   * @param string - install or upgrade
+   *  @param string - archive URL
+    * @param string - plugin id or extension id
+   */
+  function extract_plugin_files($action, $revision, $dest)
+  {
+    if ($archive = tempnam( PHPWG_PLUGINS_PATH, 'zip'))
+    {
+      $url = PEM_URL . '/download.php';
+      $get_data = array(
+        'rid' => $revision,
+        'origin' => 'piwigo_'.$action,
+      );
+
+      if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
+      {
+        fclose($handle);
+        include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+        $zip = new PclZip($archive);
+        if ($list = $zip->listContent())
+        {
+          foreach ($list as $file)
+          {
+            // we search main.inc.php in archive
+            if (basename($file['filename']) == 'main.inc.php'
+              and (!isset($main_filepath)
+              or strlen($file['filename']) < strlen($main_filepath)))
+            {
+              $main_filepath = $file['filename'];
+            }
+          }
+          if (isset($main_filepath))
+          {
+            $root = dirname($main_filepath); // main.inc.php path in archive
+            if ($action == 'upgrade')
+            {
+              $extract_path = PHPWG_PLUGINS_PATH . $dest;
+            }
+            else
+            {
+              $extract_path = PHPWG_PLUGINS_PATH
+                  . ($root == '.' ? 'extension_' . $dest : basename($root));
+            }
+            if($result = $zip->extract(PCLZIP_OPT_PATH, $extract_path,
+                                       PCLZIP_OPT_REMOVE_PATH, $root,
+                                       PCLZIP_OPT_REPLACE_NEWER))
+            {
+              foreach ($result as $file)
+              {
+                if ($file['stored_filename'] == $main_filepath)
+                {
+                  $status = $file['status'];
+                  break;
+                }
+              }
+              if (file_exists($extract_path.'/obsolete.list')
+                and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES)
+                and !empty($old_files))
+              {
+                $old_files[] = 'obsolete.list';
+                foreach($old_files as $old_file)
+                {
+                  $path = $extract_path.'/'.$old_file;
+                  if (is_file($path))
+                  {
+                    @unlink($path);
+                  }
+                  elseif (is_dir($path))
+                  {
+                    deltree($path, PHPWG_PLUGINS_PATH . 'trash');
+                  }
+                }
+              }
+            }
+            else $status = 'extract_error';
+          }
+          else $status = 'archive_error';
+        }
+        else $status = 'archive_error';
+      }
+      else $status = 'dl_archive_error';
+    }
+    else $status = 'temp_path_error';
+
+    @unlink($archive);
+    return $status;
+  }
+
+  function get_merged_extensions($version=PHPWG_VERSION)
+  {
+    $file = PHPWG_ROOT_PATH.'install/obsolete_extensions.list';
+    $merged_extensions = array();
+
+    if (file_exists($file) and $obsolete_ext = file($file, FILE_IGNORE_NEW_LINES) and !empty($obsolete_ext))
+    {
+      foreach ($obsolete_ext as $ext)
+      {
+        if (preg_match('/^(\d+) ?: ?(.*?)$/', $ext, $matches))
+        {
+          $merged_extensions[$matches[1]] = $matches[2];
+        }
+      }
+    }
+    return $merged_extensions;
+  }
+
+  /**
+   * Sort functions
+   */
+  function plugin_version_compare($a, $b)
+  {
+    if (strtolower($a) == 'auto') return false;
+    
+    $array = preg_replace(
+      array('/\.+/', '/\.\Z|\A\./'),
+      array('.', ''),
+      array($a, $b)
+      );
+      
+    $array = preg_replace_callback(
+      '/([a-z])/i',
+      create_function('$m', 'return intval($m[1], 36);'),
+      $array
+      );
+    
+    return version_compare($array[0], $array[1], '>=');
+  }
+
+  function extension_revision_compare($a, $b)
+  {
+    if ($a['revision_date'] < $b['revision_date']) return 1;
+    else return -1;
+  }
+
+  function extension_name_compare($a, $b)
+  {
+    return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name']));
+  }
+
+  function extension_author_compare($a, $b)
+  {
+    $r = strcasecmp($a['author_name'], $b['author_name']);
+    if ($r == 0) return $this->extension_name_compare($a, $b);
+    else return $r;
+  }
+
+  function plugin_author_compare($a, $b)
+  {
+    $r = strcasecmp($a['author'], $b['author']);
+    if ($r == 0) return name_compare($a, $b);
+    else return $r;
+  }
+
+  function extension_downloads_compare($a, $b)
+  {
+    if ($a['extension_nb_downloads'] < $b['extension_nb_downloads']) return 1;
+    else return -1;
+  }
+
+  function sort_plugins_by_state()
+  {
+    uasort($this->fs_plugins, 'name_compare');
+
+    $active_plugins = array();
+    $inactive_plugins = array();
+    $not_installed = array();
+
+    foreach($this->fs_plugins as $plugin_id => $plugin)
+    {
+      if (isset($this->db_plugins_by_id[$plugin_id]))
+      {
+        $this->db_plugins_by_id[$plugin_id]['state'] == 'active' ?
+          $active_plugins[$plugin_id] = $plugin : $inactive_plugins[$plugin_id] = $plugin;
+      }
+      else
+      {
+        $not_installed[$plugin_id] = $plugin;
+      }
+    }
+    $this->fs_plugins = $active_plugins + $inactive_plugins + $not_installed;
+  }
+}
+?>
Index: /tags/2.6.0RC1/admin/include/tabsheet.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/tabsheet.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/tabsheet.class.php	(revision 25596)
@@ -0,0 +1,159 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class tabsheet
+{
+  var $sheets;
+  var $uniqid;
+  var $name;
+  var $titlename;
+  var $selected;
+
+  /*
+    $name is the tabsheet's name inside the template .tpl file
+    $titlename in the template is affected by $titlename value
+  */
+  function tabsheet($name = 'TABSHEET', $titlename = 'TABSHEET_TITLE')
+  {
+    $this->sheets = array();
+    $this->uniqid = null;
+    $this->name = $name;
+    $this->titlename = $titlename;
+    $this->selected = "";
+  }
+  
+  function set_id($id)
+  {
+    $this->uniqid = $id;
+  }
+
+  /*
+     add a tab
+  */
+  function add($name, $caption, $url, $selected = false)
+  {
+    if (!isset($this->sheets[$name]))
+    {
+      $this->sheets[$name] = array('caption' => $caption,
+                                   'url' => $url);
+      if($selected)
+      {
+        $this->selected=$name;
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /*
+     remove a tab
+  */
+  function delete($name)
+  {
+    if (isset($this->sheets[$name]))
+    {
+      array_splice($this->sheets, $name, 1);
+
+      if ($this->selected == $name)
+      {
+        $this->selected = "";
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /*
+     select a tab to be active
+  */
+  function select($name)
+  {
+    $this->sheets = trigger_event('tabsheet_before_select', $this->sheets, $this->uniqid);
+    if (!array_key_exists($name, $this->sheets))
+    {
+      $keys = array_keys($this->sheets);
+      $name = $keys[0];
+    }
+    $this->selected = $name;
+  }
+
+  /*
+    set $titlename value
+  */
+  function set_titlename($titlename)
+  {
+    $this->titlename = $titlename;
+    return $this->titlename;
+  }
+
+  /*
+    returns $titlename value
+  */
+  function get_titlename()
+  {
+    return $this->titlename;
+  }
+
+  /*
+    returns properties of selected tab
+  */
+  function get_selected()
+  {
+    if (!empty($this->selected))
+    {
+      return $this->sheets[$this->selected];
+    }
+    else
+    {
+      return null;
+    }
+  }
+
+  /*
+   * Build TabSheet and assign this content to current page
+   *
+   * Fill $this->$name {default value = TABSHEET} with HTML code for tabsheet
+   * Fill $this->titlename {default value = TABSHEET_TITLE} with formated caption of the selected tab
+   */
+  function assign()
+  {
+    global $template;
+
+    $template->set_filename('tabsheet', 'tabsheet.tpl');
+    $template->assign('tabsheet', $this->sheets);
+    $template->assign('tabsheet_selected', $this->selected);
+
+    $selected_tab = $this->get_selected();
+
+    if (isset($selected_tab))
+    {
+      $template->assign(
+        array($this->titlename => '['.$selected_tab['caption'].']'));
+    }
+
+    $template->assign_var_from_handle($this->name, 'tabsheet');
+    $template->clear_assign('tabsheet');
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/themes.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/themes.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/themes.class.php	(revision 25596)
@@ -0,0 +1,757 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * class DummyTheme_maintain
+ * used when a theme uses the old procedural declaration of maintenance methods
+ */
+class DummyTheme_maintain extends ThemeMaintain
+{
+  function activate($theme_version, &$errors=array())
+  {
+    if (is_callable('theme_activate'))
+    {
+      return theme_activate($this->theme_id, $theme_version, $errors);
+    }
+  }
+  function deactivate()
+  {
+    if (is_callable('theme_deactivate'))
+    {
+      return theme_deactivate($this->theme_id);
+    }
+  }
+  function delete()
+  {
+    if (is_callable('theme_delete'))
+    {
+      return theme_delete($this->theme_id);
+    }
+  }
+}
+
+
+class themes
+{
+  var $fs_themes = array();
+  var $db_themes_by_id = array();
+  var $server_themes = array();
+
+  /**
+   * Initialize $fs_themes and $db_themes_by_id
+  */
+  function themes()
+  {
+    $this->get_fs_themes();
+
+    foreach ($this->get_db_themes() as $db_theme)
+    {
+      $this->db_themes_by_id[$db_theme['id']] = $db_theme;
+    }
+  }
+
+  /**
+   * Returns the maintain class of a theme
+   * or build a new class with the procedural methods
+   * @param string $theme_id
+   */
+  private static function build_maintain_class($theme_id)
+  {
+    $file_to_include = PHPWG_THEMES_PATH.'/'.$theme_id.'/admin/maintain.inc.php';
+    $classname = $theme_id.'_maintain';
+
+    if (file_exists($file_to_include))
+    {
+      include_once($file_to_include);
+
+      if (class_exists($classname))
+      {
+        $theme_maintain = new $classname($theme_id);
+      }
+      else
+      {
+        $theme_maintain = new DummyTheme_maintain($theme_id);
+      }
+    }
+    else
+    {
+      $theme_maintain = new DummyTheme_maintain($theme_id);
+    }
+
+    return $theme_maintain;
+  }
+
+  /**
+   * Perform requested actions
+   * @param string - action
+   * @param string - theme id
+   * @param array - errors
+   */
+  function perform_action($action, $theme_id)
+  {
+    global $conf;
+
+    if (isset($this->db_themes_by_id[$theme_id]))
+    {
+      $crt_db_theme = $this->db_themes_by_id[$theme_id];
+    }
+
+    $theme_maintain = self::build_maintain_class($theme_id);
+
+    $errors = array();
+
+    switch ($action)
+    {
+      case 'activate':
+        if (isset($crt_db_theme))
+        {
+          // the theme is already active
+          break;
+        }
+
+        if ('default' == $theme_id)
+        {
+          // you can't activate the "default" theme
+          break;
+        }
+
+        $missing_parent = $this->missing_parent_theme($theme_id);
+        if (isset($missing_parent))
+        {
+          $errors[] = l10n(
+            'Impossible to activate this theme, the parent theme is missing: %s',
+            $missing_parent
+            );
+
+          break;
+        }
+
+        if ($this->fs_themes[$theme_id]['mobile']
+            and !empty($conf['mobile_theme'])
+            and $conf['mobile_theme'] != $theme_id)
+        {
+          $errors[] = l10n('You can activate only one mobile theme.');
+          break;
+        }
+
+        $theme_maintain->activate($this->fs_themes[$theme_id]['version'], $errors);
+
+        if (empty($errors))
+        {
+          $query = '
+INSERT INTO '.THEMES_TABLE.'
+  (id, version, name)
+  VALUES(\''.$theme_id.'\',
+         \''.$this->fs_themes[$theme_id]['version'].'\',
+         \''.$this->fs_themes[$theme_id]['name'].'\')
+;';
+          pwg_query($query);
+
+          if ($this->fs_themes[$theme_id]['mobile'])
+          {
+            conf_update_param('mobile_theme', $theme_id);
+          }
+        }
+        break;
+
+      case 'deactivate':
+        if (!isset($crt_db_theme))
+        {
+          // the theme is already inactive
+          break;
+        }
+
+        // you can't deactivate the last theme
+        if (count($this->db_themes_by_id) <= 1)
+        {
+          $errors[] = l10n('Impossible to deactivate this theme, you need at least one theme.');
+          break;
+        }
+
+        if ($theme_id == get_default_theme())
+        {
+          // find a random theme to replace
+          $new_theme = null;
+
+          $query = '
+SELECT id
+  FROM '.THEMES_TABLE.'
+  WHERE id != \''.$theme_id.'\'
+;';
+          $result = pwg_query($query);
+          if (pwg_db_num_rows($result) == 0)
+          {
+            $new_theme = 'default';
+          }
+          else
+          {
+            list($new_theme) = pwg_db_fetch_row($result);
+          }
+
+          $this->set_default_theme($new_theme);
+        }
+
+        $theme_maintain->deactivate();
+
+        $query = '
+DELETE
+  FROM '.THEMES_TABLE.'
+  WHERE id= \''.$theme_id.'\'
+;';
+        pwg_query($query);
+
+        if ($this->fs_themes[$theme_id]['mobile'])
+        {
+          conf_update_param('mobile_theme', '');
+        }
+        break;
+
+      case 'delete':
+        if (!empty($crt_db_theme))
+        {
+          $errors[] = 'CANNOT DELETE - THEME IS INSTALLED';
+          break;
+        }
+        if (!isset($this->fs_themes[$theme_id]))
+        {
+          // nothing to do here
+          break;
+        }
+
+        $children = $this->get_children_themes($theme_id);
+        if (count($children) > 0)
+        {
+          $errors[] = l10n(
+            'Impossible to delete this theme. Other themes depends on it: %s',
+            implode(', ', $children)
+            );
+          break;
+        }
+
+        $theme_maintain->delete();
+
+        deltree(PHPWG_THEMES_PATH.$theme_id, PHPWG_THEMES_PATH . 'trash');
+        break;
+
+      case 'set_default':
+        // first we need to know which users are using the current default theme
+        $this->set_default_theme($theme_id);
+        break;
+    }
+    return $errors;
+  }
+
+  function missing_parent_theme($theme_id)
+  {
+    if (!isset($this->fs_themes[$theme_id]['parent']))
+    {
+      return null;
+    }
+
+    $parent = $this->fs_themes[$theme_id]['parent'];
+
+    if ('default' == $parent)
+    {
+      return null;
+    }
+
+    if (!isset($this->fs_themes[$parent]))
+    {
+      return $parent;
+    }
+
+    return $this->missing_parent_theme($parent);
+  }
+
+  function get_children_themes($theme_id)
+  {
+    $children = array();
+
+    foreach ($this->fs_themes as $test_child)
+    {
+      if (isset($test_child['parent']) and $test_child['parent'] == $theme_id)
+      {
+        $children[] = $test_child['name'];
+      }
+    }
+
+    return $children;
+  }
+
+  function set_default_theme($theme_id)
+  {
+    global $conf;
+
+    // first we need to know which users are using the current default theme
+    $default_theme = get_default_theme();
+
+    $query = '
+SELECT
+    user_id
+  FROM '.USER_INFOS_TABLE.'
+  WHERE theme = \''.$default_theme.'\'
+;';
+    $user_ids = array_unique(
+      array_merge(
+        array_from_query($query, 'user_id'),
+        array($conf['guest_id'], $conf['default_user_id'])
+        )
+      );
+
+    // $user_ids can't be empty, at least the default user has the default
+    // theme
+
+    $query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET theme = \''.$theme_id.'\'
+  WHERE user_id IN ('.implode(',', $user_ids).')
+;';
+    pwg_query($query);
+  }
+
+  function get_db_themes($id='')
+  {
+    $query = '
+SELECT
+    *
+  FROM '.THEMES_TABLE;
+
+    $clauses = array();
+    if (!empty($id))
+    {
+      $clauses[] = 'id = \''.$id.'\'';
+    }
+    if (count($clauses) > 0)
+    {
+      $query .= '
+  WHERE '. implode(' AND ', $clauses);
+    }
+
+    $result = pwg_query($query);
+    $themes = array();
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $themes[] = $row;
+    }
+    return $themes;
+  }
+
+
+  /**
+  *  Get themes defined in the theme directory
+  */
+  function get_fs_themes()
+  {
+    $dir = opendir(PHPWG_THEMES_PATH);
+
+    while ($file = readdir($dir))
+    {
+      if ($file!='.' and $file!='..')
+      {
+        $path = PHPWG_THEMES_PATH.$file;
+        if (is_dir($path)
+            and preg_match('/^[a-zA-Z0-9-_]+$/', $file)
+            and file_exists($path.'/themeconf.inc.php')
+            )
+        {
+          $theme = array(
+            'id' => $file,
+            'name' => $file,
+            'version' => '0',
+            'uri' => '',
+            'description' => '',
+            'author' => '',
+            'mobile' => false,
+            );
+          $theme_data = implode( '', file($path.'/themeconf.inc.php') );
+
+          if ( preg_match("|Theme Name: (.*)|", $theme_data, $val) )
+          {
+            $theme['name'] = trim( $val[1] );
+          }
+          if (preg_match("|Version: (.*)|", $theme_data, $val))
+          {
+            $theme['version'] = trim($val[1]);
+          }
+          if ( preg_match("|Theme URI: (.*)|", $theme_data, $val) )
+          {
+            $theme['uri'] = trim($val[1]);
+          }
+          if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
+          {
+            $theme['description'] = trim($desc);
+          }
+          elseif ( preg_match("|Description: (.*)|", $theme_data, $val) )
+          {
+            $theme['description'] = trim($val[1]);
+          }
+          if ( preg_match("|Author: (.*)|", $theme_data, $val) )
+          {
+            $theme['author'] = trim($val[1]);
+          }
+          if ( preg_match("|Author URI: (.*)|", $theme_data, $val) )
+          {
+            $theme['author uri'] = trim($val[1]);
+          }
+          if (!empty($theme['uri']) and strpos($theme['uri'] , 'extension_view.php?eid='))
+          {
+            list( , $extension) = explode('extension_view.php?eid=', $theme['uri']);
+            if (is_numeric($extension)) $theme['extension'] = $extension;
+          }
+          if (preg_match('/["\']parent["\'][^"\']+["\']([^"\']+)["\']/', $theme_data, $val))
+          {
+            $theme['parent'] = $val[1];
+          }
+          if (preg_match('/["\']activable["\'].*?(true|false)/i', $theme_data, $val))
+          {
+            $theme['activable'] = get_boolean($val[1]);
+          }
+          if (preg_match('/["\']mobile["\'].*?(true|false)/i', $theme_data, $val))
+          {
+            $theme['mobile'] = get_boolean($val[1]);
+          }
+
+          // screenshot
+          $screenshot_path = $path.'/screenshot.png';
+          if (file_exists($screenshot_path))
+          {
+            $theme['screenshot'] = $screenshot_path;
+          }
+          else
+          {
+            global $conf;
+            $theme['screenshot'] =
+              PHPWG_ROOT_PATH.'admin/themes/'
+              .$conf['admin_theme']
+              .'/images/missing_screenshot.png'
+              ;
+          }
+
+          $admin_file = $path.'/admin/admin.inc.php';
+          if (file_exists($admin_file))
+          {
+            $theme['admin_uri'] = get_root_url().'admin.php?page=theme&theme='.$file;
+          }
+
+          // IMPORTANT SECURITY !
+          $theme = array_map('htmlspecialchars', $theme);
+          $this->fs_themes[$file] = $theme;
+        }
+      }
+    }
+    closedir($dir);
+  }
+
+  /**
+   * Sort fs_themes
+   */
+  function sort_fs_themes($order='name')
+  {
+    switch ($order)
+    {
+      case 'name':
+        uasort($this->fs_themes, 'name_compare');
+        break;
+      case 'status':
+        $this->sort_themes_by_state();
+        break;
+      case 'author':
+        uasort($this->fs_themes, array($this, 'theme_author_compare'));
+        break;
+      case 'id':
+        uksort($this->fs_themes, 'strcasecmp');
+        break;
+    }
+  }
+
+  /**
+   * Retrieve PEM server datas to $server_themes
+   */
+  function get_server_themes($new=false)
+  {
+    global $user, $conf;
+
+    $get_data = array(
+      'category_id' => $conf['pem_themes_category'],
+      'format' => 'php',
+    );
+
+    // Retrieve PEM versions
+    $version = PHPWG_VERSION;
+    $versions_to_check = array();
+    $url = PEM_URL . '/api/get_version_list.php';
+    if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result))
+    {
+      if (!preg_match('/^\d+\.\d+\.\d+$/', $version))
+      {
+        $version = $pem_versions[0]['name'];
+      }
+      $branch = get_branch_from_version($version);
+      foreach ($pem_versions as $pem_version)
+      {
+        if (strpos($pem_version['name'], $branch) === 0)
+        {
+          $versions_to_check[] = $pem_version['id'];
+        }
+      }
+    }
+    if (empty($versions_to_check))
+    {
+      return false;
+    }
+
+    // Themes to check
+    $themes_to_check = array();
+    foreach($this->fs_themes as $fs_theme)
+    {
+      if (isset($fs_theme['extension']))
+      {
+        $themes_to_check[] = $fs_theme['extension'];
+      }
+    }
+
+    // Retrieve PEM themes infos
+    $url = PEM_URL . '/api/get_revision_list.php';
+    $get_data = array_merge($get_data, array(
+      'last_revision_only' => 'true',
+      'version' => implode(',', $versions_to_check),
+      'lang' => substr($user['language'], 0, 2),
+      'get_nb_downloads' => 'true',
+      )
+    );
+
+    if (!empty($themes_to_check))
+    {
+      if ($new)
+      {
+        $get_data['extension_exclude'] = implode(',', $themes_to_check);
+      }
+      else
+      {
+        $get_data['extension_include'] = implode(',', $themes_to_check);
+      }
+    }
+    if (fetchRemote($url, $result, $get_data))
+    {
+      $pem_themes = @unserialize($result);
+      if (!is_array($pem_themes))
+      {
+        return false;
+      }
+      foreach ($pem_themes as $theme)
+      {
+        $this->server_themes[$theme['extension_id']] = $theme;
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Sort $server_themes
+   */
+  function sort_server_themes($order='date')
+  {
+    switch ($order)
+    {
+      case 'date':
+        krsort($this->server_themes);
+        break;
+      case 'revision':
+        usort($this->server_themes, array($this, 'extension_revision_compare'));
+        break;
+      case 'name':
+        uasort($this->server_themes, array($this, 'extension_name_compare'));
+        break;
+      case 'author':
+        uasort($this->server_themes, array($this, 'extension_author_compare'));
+        break;
+      case 'downloads':
+        usort($this->server_themes, array($this, 'extension_downloads_compare'));
+        break;
+    }
+  }
+
+  /**
+   * Extract theme files from archive
+   *
+   * @param string - install or upgrade
+   * @param string - remote revision identifier (numeric)
+   * @param string - theme id or extension id
+   */
+  function extract_theme_files($action, $revision, $dest)
+  {
+    if ($archive = tempnam( PHPWG_THEMES_PATH, 'zip'))
+    {
+      $url = PEM_URL . '/download.php';
+      $get_data = array(
+        'rid' => $revision,
+        'origin' => 'piwigo_'.$action,
+      );
+
+      if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data))
+      {
+        fclose($handle);
+        include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+        $zip = new PclZip($archive);
+        if ($list = $zip->listContent())
+        {
+          foreach ($list as $file)
+          {
+            // we search main.inc.php in archive
+            if (basename($file['filename']) == 'themeconf.inc.php'
+              and (!isset($main_filepath)
+              or strlen($file['filename']) < strlen($main_filepath)))
+            {
+              $main_filepath = $file['filename'];
+            }
+          }
+          if (isset($main_filepath))
+          {
+            $root = dirname($main_filepath); // main.inc.php path in archive
+            if ($action == 'upgrade')
+            {
+              $extract_path = PHPWG_THEMES_PATH . $dest;
+            }
+            else
+            {
+              $extract_path = PHPWG_THEMES_PATH . ($root == '.' ? 'extension_' . $dest : basename($root));
+            }
+            if (
+              $result = $zip->extract(
+                PCLZIP_OPT_PATH, $extract_path,
+                PCLZIP_OPT_REMOVE_PATH, $root,
+                PCLZIP_OPT_REPLACE_NEWER
+                )
+              )
+            {
+              foreach ($result as $file)
+              {
+                if ($file['stored_filename'] == $main_filepath)
+                {
+                  $status = $file['status'];
+                  break;
+                }
+              }
+              if (file_exists($extract_path.'/obsolete.list')
+                and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES)
+                and !empty($old_files))
+              {
+                $old_files[] = 'obsolete.list';
+                foreach($old_files as $old_file)
+                {
+                  $path = $extract_path.'/'.$old_file;
+                  if (is_file($path))
+                  {
+                    @unlink($path);
+                  }
+                  elseif (is_dir($path))
+                  {
+                    deltree($path, PHPWG_THEMES_PATH . 'trash');
+                  }
+                }
+              }
+            }
+            else $status = 'extract_error';
+          }
+          else $status = 'archive_error';
+        }
+        else $status = 'archive_error';
+      }
+      else $status = 'dl_archive_error';
+    }
+    else $status = 'temp_path_error';
+
+    @unlink($archive);
+    return $status;
+  }
+
+  /**
+   * Sort functions
+   */
+  function theme_version_compare($a, $b)
+  {
+    $pattern = array('/([a-z])/ei', '/\.+/', '/\.\Z|\A\./');
+    $replacement = array( "'.'.intval('\\1', 36).'.'", '.', '');
+
+    $array = preg_replace($pattern, $replacement, array($a, $b));
+
+    return version_compare($array[0], $array[1], '>=');
+  }
+
+  function extension_revision_compare($a, $b)
+  {
+    if ($a['revision_date'] < $b['revision_date']) return 1;
+    else return -1;
+  }
+
+  function extension_name_compare($a, $b)
+  {
+    return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name']));
+  }
+
+  function extension_author_compare($a, $b)
+  {
+    $r = strcasecmp($a['author_name'], $b['author_name']);
+    if ($r == 0) return $this->extension_name_compare($a, $b);
+    else return $r;
+  }
+
+  function theme_author_compare($a, $b)
+  {
+    $r = strcasecmp($a['author'], $b['author']);
+    if ($r == 0) return name_compare($a, $b);
+    else return $r;
+  }
+
+  function extension_downloads_compare($a, $b)
+  {
+    if ($a['extension_nb_downloads'] < $b['extension_nb_downloads']) return 1;
+    else return -1;
+  }
+
+  function sort_themes_by_state()
+  {
+    uasort($this->fs_themes, 'name_compare');
+
+    $active_themes = array();
+    $inactive_themes = array();
+    $not_installed = array();
+
+    foreach($this->fs_themes as $theme_id => $theme)
+    {
+      if (isset($this->db_themes_by_id[$theme_id]))
+      {
+        $this->db_themes_by_id[$theme_id]['state'] == 'active' ?
+          $active_themes[$theme_id] = $theme : $inactive_themes[$theme_id] = $theme;
+      }
+      else
+      {
+        $not_installed[$theme_id] = $theme;
+      }
+    }
+    $this->fs_themes = $active_themes + $inactive_themes + $not_installed;
+  }
+
+}
+?>
Index: /tags/2.6.0RC1/admin/include/updates.class.php
===================================================================
--- /tags/2.6.0RC1/admin/include/updates.class.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/updates.class.php	(revision 25596)
@@ -0,0 +1,450 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+class updates
+{
+  var $types = array();
+  var $plugins;
+  var $themes;
+  var $languages;
+  var $missing = array();
+  var $default_plugins = array();
+  var $default_themes = array();
+  var $default_languages = array();
+  var $merged_extensions = array();
+  var $merged_extension_url = 'http://piwigo.org/download/merged_extensions.txt';
+
+  function __construct($page='updates')
+  {
+    $this->types = array('plugins', 'themes', 'languages');
+
+    if (in_array($page, $this->types))
+    {
+      $this->types = array($page);
+    }
+    $this->default_themes = array('clear', 'dark', 'Sylvia', 'elegant');
+    $this->default_plugins = array('admin_multi_view', 'c13y_upgrade', 'language_switch', 'LocalFilesEditor');
+
+    foreach ($this->types as $type)
+    {
+      include_once(PHPWG_ROOT_PATH.'admin/include/'.$type.'.class.php');
+      $this->$type = new $type();
+    }
+  }
+
+  static function check_piwigo_upgrade()
+  {
+    $_SESSION['need_update'] = null;
+
+    if (preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches)
+      and @fetchRemote(PHPWG_URL.'/download/all_versions.php?rand='.md5(uniqid(rand(), true)), $result))
+    {
+      $all_versions = @explode("\n", $result);
+      $new_version = trim($all_versions[0]);
+      $_SESSION['need_update'] = version_compare(PHPWG_VERSION, $new_version, '<');
+    }
+  }
+
+  function get_server_extensions($version=PHPWG_VERSION)
+  {
+    global $user;
+
+    $get_data = array(
+      'format' => 'php',
+    );
+
+    // Retrieve PEM versions
+    $versions_to_check = array();
+    $url = PEM_URL . '/api/get_version_list.php';
+    if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result))
+    {
+      if (!preg_match('/^\d+\.\d+\.\d+$/', $version))
+      {
+        $version = $pem_versions[0]['name'];
+      }
+      $branch = get_branch_from_version($version);
+      foreach ($pem_versions as $pem_version)
+      {
+        if (strpos($pem_version['name'], $branch) === 0)
+        {
+          $versions_to_check[] = $pem_version['id'];
+        }
+      }
+    }
+    if (empty($versions_to_check))
+    {
+      return false;
+    }
+
+    // Extensions to check
+    $ext_to_check = array();
+    foreach ($this->types as $type)
+    {
+      $fs = 'fs_'.$type;
+      foreach ($this->$type->$fs as $ext)
+      {
+        if (isset($ext['extension']))
+        {
+          $ext_to_check[$ext['extension']] = $type;
+        }
+      }
+    }
+
+    // Retrieve PEM plugins infos
+    $url = PEM_URL . '/api/get_revision_list.php';
+    $get_data = array_merge($get_data, array(
+      'last_revision_only' => 'true',
+      'version' => implode(',', $versions_to_check),
+      'lang' => substr($user['language'], 0, 2),
+      'get_nb_downloads' => 'true',
+      )
+    );
+
+    $post_data = array();
+    if (!empty($ext_to_check))
+    {
+      $post_data['extension_include'] = implode(',', array_keys($ext_to_check));
+    }
+
+    if (fetchRemote($url, $result, $get_data, $post_data))
+    {
+      $pem_exts = @unserialize($result);
+      if (!is_array($pem_exts))
+      {
+        return false;
+      }
+      foreach ($pem_exts as $ext)
+      {
+        if (isset($ext_to_check[$ext['extension_id']]))
+        {
+          $server = 'server_'.$ext_to_check[$ext['extension_id']];
+          $this->$ext_to_check[$ext['extension_id']]->$server += array($ext['extension_id'] => $ext);
+          unset($ext_to_check[$ext['extension_id']]);
+        }
+      }
+      $this->check_missing_extensions($ext_to_check);
+      return true;
+    }
+    return false;
+  }
+
+  // Check all extensions upgrades
+  function check_extensions()
+  {
+    global $conf;
+
+    if (!$this->get_server_extensions())
+    {
+      return false;
+    }
+
+    $_SESSION['extensions_need_update'] = array();
+
+    foreach ($this->types as $type)
+    {
+      $fs = 'fs_'.$type;
+      $server = 'server_'.$type;
+      $server_ext = $this->$type->$server;
+      $fs_ext = $this->$type->$fs;
+
+      $ignore_list = array();
+      $need_upgrade = array();
+
+      foreach($fs_ext as $ext_id => $fs_ext)
+      {
+        if (isset($fs_ext['extension']) and isset($server_ext[$fs_ext['extension']]))
+        {
+          $ext_info = $server_ext[$fs_ext['extension']];
+
+          if (!$this->version_compare($fs_ext['version'], $ext_info['revision_name'], $type))
+          {
+            if (in_array($ext_id, $conf['updates_ignored'][$type]))
+            {
+              $ignore_list[] = $ext_id;
+            }
+            else
+            {
+              $_SESSION['extensions_need_update'][$type][$ext_id] = $ext_info['revision_name'];
+            }
+          }
+        }
+      }
+      $conf['updates_ignored'][$type] = $ignore_list;
+    }
+    conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored'])));
+  }
+
+  // Check if extension have been upgraded since last check
+  function check_updated_extensions()
+  {
+    foreach ($this->types as $type)
+    {
+      if (!empty($_SESSION['extensions_need_update'][$type]))
+      {
+        $fs = 'fs_'.$type;
+        foreach($this->$type->$fs as $ext_id => $fs_ext)
+        {
+          if (isset($_SESSION['extensions_need_update'][$type][$ext_id])
+            and $this->version_compare($fs_ext['version'], $_SESSION['extensions_need_update'][$type][$ext_id], $type))
+          {
+            // Extension have been upgraded
+            $this->check_extensions();
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  function check_missing_extensions($missing)
+  {
+    foreach ($missing as $id => $type)
+    {
+      $fs = 'fs_'.$type;
+      $default = 'default_'.$type;
+      foreach ($this->$type->$fs as $ext_id => $ext)
+      {
+        if (isset($ext['extension']) and $id == $ext['extension']
+          and !in_array($ext_id, $this->$default)
+          and !in_array($ext['extension'], $this->merged_extensions))
+        {
+          $this->missing[$type][] = $ext;
+          break;
+        }
+      }
+    }
+  }
+
+  function get_merged_extensions($version)
+  {
+    if (fetchRemote($this->merged_extension_url, $result))
+    {
+      $rows = explode("\n", $result);
+      foreach ($rows as $row)
+      {
+        if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match))
+        {
+          if (version_compare($version, $match[1], '>='))
+          {
+            $extensions = explode(',', trim($match[2]));
+            $this->merged_extensions = array_merge($this->merged_extensions, $extensions);
+          }
+        }
+      }
+    }
+  }
+
+  function version_compare($a, $b, $type)
+  {
+    $version_compare = rtrim($type, 's').'_version_compare';
+
+    return $this->$type->$version_compare($a, $b);
+  }
+
+  static function process_obsolete_list($file)
+  {
+    if (file_exists(PHPWG_ROOT_PATH.$file)
+      and $old_files = file(PHPWG_ROOT_PATH.$file, FILE_IGNORE_NEW_LINES)
+      and !empty($old_files))
+    {
+      $old_files[] = $file;
+      foreach($old_files as $old_file)
+      {
+        $path = PHPWG_ROOT_PATH.$old_file;
+        if (is_file($path))
+        {
+          @unlink($path);
+        }
+        elseif (is_dir($path))
+        {
+          deltree($path, PHPWG_ROOT_PATH.'_trash');
+        }
+      }
+    }
+  }
+
+  static function dump_database($include_history=false)
+  {
+    global $page, $conf, $cfgBase;
+
+    if (version_compare(PHPWG_VERSION, '2.1', '<'))
+    {
+      $conf['db_base'] = $cfgBase;
+    }
+
+    include(PHPWG_ROOT_PATH.'admin/include/mysqldump.php');
+
+    $path = PHPWG_ROOT_PATH.$conf['data_location'].'update';
+
+    if (@mkgetdir($path)
+      and ($backupFile = tempnam($path, 'sql'))
+      and ($dumper = new MySQLDump($conf['db_base'],$backupFile,false,false)))
+    {
+      foreach (get_defined_constants() as $constant => $value)
+      {
+        if (preg_match('/_TABLE$/', $constant))
+        {
+          $dumper->getTableStructure($value);
+          if ($constant == 'HISTORY_TABLE' and !$include_history)
+          {
+            continue;
+          }
+          $dumper->getTableData($value);
+        }
+      }
+    }
+
+    if (@filesize($backupFile))
+    {
+      $http_headers = array(
+        'Content-Length: '.@filesize($backupFile),
+        'Content-Type: text/x-sql',
+        'Content-Disposition: attachment; filename="database.sql";',
+        'Content-Transfer-Encoding: binary',
+        );
+
+      foreach ($http_headers as $header) {
+        header($header);
+      }
+
+      @readfile($backupFile);
+      deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update');
+      exit();
+    }
+    else
+    {
+      $page['errors'][] = l10n('Unable to dump database.');
+    }
+  }
+
+  static function upgrade_to($upgrade_to, &$step, $check_current_version=true)
+  {
+    global $page, $conf, $template;
+
+    if ($check_current_version and !version_compare($upgrade_to, PHPWG_VERSION, '>'))
+    {
+      redirect(get_root_url().'admin.php?page=plugin-'.basename(dirname(__FILE__)));
+    }
+
+    if ($step == 2)
+    {
+      preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches);
+      $code =  $matches[1].'.x_to_'.$upgrade_to;
+      $dl_code = str_replace(array('.', '_'), '', $code);
+      $remove_path = $code;
+      $obsolete_list = 'obsolete.list';
+    }
+    else
+    {
+      $code = $upgrade_to;
+      $dl_code = $code;
+      $remove_path = version_compare($code, '2.0.8', '>=') ? 'piwigo' : 'piwigo-'.$code;
+      $obsolete_list = PHPWG_ROOT_PATH.'install/obsolete.list';
+    }
+
+    if (empty($page['errors']))
+    {
+      $path = PHPWG_ROOT_PATH.$conf['data_location'].'update';
+      $filename = $path.'/'.$code.'.zip';
+      @mkgetdir($path);
+
+      $chunk_num = 0;
+      $end = false;
+      $zip = @fopen($filename, 'w');
+
+      while (!$end)
+      {
+        $chunk_num++;
+        if (@fetchRemote(PHPWG_URL.'/download/dlcounter.php?code='.$dl_code.'&chunk_num='.$chunk_num, $result)
+          and $input = @unserialize($result))
+        {
+          if (0 == $input['remaining'])
+          {
+            $end = true;
+          }
+          @fwrite($zip, base64_decode($input['data']));
+        }
+        else
+        {
+          $end = true;
+        }
+      }
+      @fclose($zip);
+
+      if (@filesize($filename))
+      {
+        $zip = new PclZip($filename);
+        if ($result = $zip->extract(PCLZIP_OPT_PATH, PHPWG_ROOT_PATH,
+                                    PCLZIP_OPT_REMOVE_PATH, $remove_path,
+                                    PCLZIP_OPT_SET_CHMOD, 0755,
+                                    PCLZIP_OPT_REPLACE_NEWER))
+        {
+          //Check if all files were extracted
+          $error = '';
+          foreach($result as $extract)
+          {
+            if (!in_array($extract['status'], array('ok', 'filtered', 'already_a_directory')))
+            {
+              // Try to change chmod and extract
+              if (@chmod(PHPWG_ROOT_PATH.$extract['filename'], 0777)
+                and ($res = $zip->extract(PCLZIP_OPT_BY_NAME, $remove_path.'/'.$extract['filename'],
+                                          PCLZIP_OPT_PATH, PHPWG_ROOT_PATH,
+                                          PCLZIP_OPT_REMOVE_PATH, $remove_path,
+                                          PCLZIP_OPT_SET_CHMOD, 0755,
+                                          PCLZIP_OPT_REPLACE_NEWER))
+                and isset($res[0]['status'])
+                and $res[0]['status'] == 'ok')
+              {
+                continue;
+              }
+              else
+              {
+                $error .= $extract['filename'].': '.$extract['status']."\n";
+              }
+            }
+          }
+
+          if (empty($error))
+          {
+            self::process_obsolete_list($obsolete_list);
+            deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update');
+            invalidate_user_cache(true);
+            $template->delete_compiled_templates();
+            unset($_SESSION['need_update']);
+            if ($step == 2)
+            {
+              $page['infos'][] = l10n('Update Complete');
+              $page['infos'][] = $upgrade_to;
+              $step = -1;
+            }
+            else
+            {
+              redirect(PHPWG_ROOT_PATH.'upgrade.php?now=');
+            }
+          }
+          else
+          {
+            file_put_contents(PHPWG_ROOT_PATH.$conf['data_location'].'update/log_error.txt', $error);
+            
+            $page['errors'][] = l10n(
+              'An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.',
+              get_root_url().$conf['data_location'].'update/log_error.txt'
+              );
+          }
+        }
+        else
+        {
+          deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update');
+          $page['errors'][] = l10n('An error has occured during upgrade.');
+        }
+      }
+      else
+      {
+        $page['errors'][] = l10n('Piwigo cannot retrieve upgrade file from server');
+      }
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js
===================================================================
--- /tags/2.6.0RC1/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js	(revision 25596)
@@ -0,0 +1,38 @@
+/*
+SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
+
+mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
+
+SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License:
+http://www.opensource.org/licenses/mit-license.php
+
+SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
+http://www.opensource.org/licenses/mit-license.php
+*/
+
+var SWFUpload;if(SWFUpload==undefined){SWFUpload=function(a){this.initSWFUpload(a)}}SWFUpload.prototype.initSWFUpload=function(b){try{this.customSettings={};this.settings=b;this.eventQueue=[];this.movieName="SWFUpload_"+SWFUpload.movieCount++;this.movieElement=null;SWFUpload.instances[this.movieName]=this;this.initSettings();this.loadFlash();this.displayDebugInfo()}catch(a){delete SWFUpload.instances[this.movieName];throw a}};SWFUpload.instances={};SWFUpload.movieCount=0;SWFUpload.version="2.2.0 2009-03-25";SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130};SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290};SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5};SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120};SWFUpload.CURSOR={ARROW:-1,HAND:-2};SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"};SWFUpload.completeURL=function(a){if(typeof(a)!=="string"||a.match(/^https?:\/\//i)||a.match(/^\//)){return a}var c=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");var b=window.location.pathname.lastIndexOf("/");if(b<=0){path="/"}else{path=window.location.pathname.substr(0,b)+"/"}return path+a};SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(b,a){this.settings[b]=(this.settings[b]==undefined)?a:this.settings[b]};this.ensureDefault("upload_url","");this.ensureDefault("preserve_relative_urls",false);this.ensureDefault("file_post_name","Filedata");this.ensureDefault("post_params",{});this.ensureDefault("use_query_string",false);this.ensureDefault("requeue_on_error",false);this.ensureDefault("http_success",[]);this.ensureDefault("assume_success_timeout",0);this.ensureDefault("file_types","*.*");this.ensureDefault("file_types_description","All Files");this.ensureDefault("file_size_limit",0);this.ensureDefault("file_upload_limit",0);this.ensureDefault("file_queue_limit",0);this.ensureDefault("flash_url","swfupload.swf");this.ensureDefault("prevent_swf_caching",true);this.ensureDefault("button_image_url","");this.ensureDefault("button_width",1);this.ensureDefault("button_height",1);this.ensureDefault("button_text","");this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");this.ensureDefault("button_text_top_padding",0);this.ensureDefault("button_text_left_padding",0);this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);this.ensureDefault("button_disabled",false);this.ensureDefault("button_placeholder_id","");this.ensureDefault("button_placeholder",null);this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);this.ensureDefault("debug",false);this.settings.debug_enabled=this.settings.debug;this.settings.return_upload_start_handler=this.returnUploadStart;this.ensureDefault("swfupload_loaded_handler",null);this.ensureDefault("file_dialog_start_handler",null);this.ensureDefault("file_queued_handler",null);this.ensureDefault("file_queue_error_handler",null);this.ensureDefault("file_dialog_complete_handler",null);this.ensureDefault("upload_start_handler",null);this.ensureDefault("upload_progress_handler",null);this.ensureDefault("upload_error_handler",null);this.ensureDefault("upload_success_handler",null);this.ensureDefault("upload_complete_handler",null);this.ensureDefault("debug_handler",this.debugMessage);this.ensureDefault("custom_settings",{});this.customSettings=this.settings.custom_settings;if(!!this.settings.prevent_swf_caching){this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime()}if(!this.settings.preserve_relative_urls){this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)}delete this.ensureDefault};SWFUpload.prototype.loadFlash=function(){var a,b;if(document.getElementById(this.movieName)!==null){throw"ID "+this.movieName+" is already in use. The Flash Object could not be added"}a=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;if(a==undefined){throw"Could not find the placeholder element: "+this.settings.button_placeholder_id}b=document.createElement("div");b.innerHTML=this.getFlashHTML();a.parentNode.replaceChild(b.firstChild,a);if(window[this.movieName]==undefined){window[this.movieName]=this.getMovieElement()}};SWFUpload.prototype.getFlashHTML=function(){return['<object id="',this.movieName,'" type="application/x-shockwave-flash" data="',this.settings.flash_url,'" width="',this.settings.button_width,'" height="',this.settings.button_height,'" class="swfupload">','<param name="wmode" value="',this.settings.button_window_mode,'" />','<param name="movie" value="',this.settings.flash_url,'" />','<param name="quality" value="high" />','<param name="menu" value="false" />','<param name="allowScriptAccess" value="always" />','<param name="flashvars" value="'+this.getFlashVars()+'" />',"</object>"].join("")};SWFUpload.prototype.getFlashVars=function(){var b=this.buildParamString();var a=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&amp;uploadURL=",encodeURIComponent(this.settings.upload_url),"&amp;useQueryString=",encodeURIComponent(this.settings.use_query_string),"&amp;requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&amp;httpSuccess=",encodeURIComponent(a),"&amp;assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&amp;params=",encodeURIComponent(b),"&amp;filePostName=",encodeURIComponent(this.settings.file_post_name),"&amp;fileTypes=",encodeURIComponent(this.settings.file_types),"&amp;fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&amp;fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&amp;fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&amp;fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&amp;debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&amp;buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&amp;buttonWidth=",encodeURIComponent(this.settings.button_width),"&amp;buttonHeight=",encodeURIComponent(this.settings.button_height),"&amp;buttonText=",encodeURIComponent(this.settings.button_text),"&amp;buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&amp;buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&amp;buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&amp;buttonAction=",encodeURIComponent(this.settings.button_action),"&amp;buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&amp;buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName)}if(this.movieElement===null){throw"Could not find Flash element"}return this.movieElement};SWFUpload.prototype.buildParamString=function(){var c=this.settings.post_params;var b=[];if(typeof(c)==="object"){for(var a in c){if(c.hasOwnProperty(a)){b.push(encodeURIComponent(a.toString())+"="+encodeURIComponent(c[a].toString()))}}}return b.join("&amp;")};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var a=null;a=this.getMovieElement();if(a&&typeof(a.CallFunction)==="unknown"){for(var c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(e){}}try{a.parentNode.removeChild(a)}catch(b){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true}catch(d){return false}};SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url:               ",this.settings.upload_url,"\n","\t","flash_url:                ",this.settings.flash_url,"\n","\t","use_query_string:         ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error:         ",this.settings.requeue_on_error.toString(),"\n","\t","http_success:             ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout:   ",this.settings.assume_success_timeout,"\n","\t","file_post_name:           ",this.settings.file_post_name,"\n","\t","post_params:              ",this.settings.post_params.toString(),"\n","\t","file_types:               ",this.settings.file_types,"\n","\t","file_types_description:   ",this.settings.file_types_description,"\n","\t","file_size_limit:          ",this.settings.file_size_limit,"\n","\t","file_upload_limit:        ",this.settings.file_upload_limit,"\n","\t","file_queue_limit:         ",this.settings.file_queue_limit,"\n","\t","debug:                    ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching:      ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id:    ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder:       ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url:         ",this.settings.button_image_url.toString(),"\n","\t","button_width:             ",this.settings.button_width.toString(),"\n","\t","button_height:            ",this.settings.button_height.toString(),"\n","\t","button_text:              ",this.settings.button_text.toString(),"\n","\t","button_text_style:        ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding:  ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action:            ",this.settings.button_action.toString(),"\n","\t","button_disabled:          ",this.settings.button_disabled.toString(),"\n","\t","custom_settings:          ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned:  ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned:       ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned:  ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_start_handler assigned:      ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned:   ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned:      ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned:    ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned:   ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned:             ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""))};SWFUpload.prototype.addSetting=function(b,c,a){if(c==undefined){return(this.settings[b]=a)}else{return(this.settings[b]=c)}};SWFUpload.prototype.getSetting=function(a){if(this.settings[a]!=undefined){return this.settings[a]}return""};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement();var returnValue,returnString;try{returnString=movieElement.CallFunction('<invoke name="'+functionName+'" returntype="javascript">'+__flash__argumentsToXML(argumentArray,0)+"</invoke>");returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue)}return returnValue};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")};SWFUpload.prototype.startUpload=function(a){this.callFlash("StartUpload",[a])};SWFUpload.prototype.cancelUpload=function(a,b){if(b!==false){b=true}this.callFlash("CancelUpload",[a,b])};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")};SWFUpload.prototype.setStats=function(a){this.callFlash("SetStats",[a])};SWFUpload.prototype.getFile=function(a){if(typeof(a)==="number"){return this.callFlash("GetFileByIndex",[a])}else{return this.callFlash("GetFile",[a])}};SWFUpload.prototype.addFileParam=function(a,b,c){return this.callFlash("AddFileParam",[a,b,c])};SWFUpload.prototype.removeFileParam=function(a,b){this.callFlash("RemoveFileParam",[a,b])};SWFUpload.prototype.setUploadURL=function(a){this.settings.upload_url=a.toString();this.callFlash("SetUploadURL",[a])};SWFUpload.prototype.setPostParams=function(a){this.settings.post_params=a;this.callFlash("SetPostParams",[a])};SWFUpload.prototype.addPostParam=function(a,b){this.settings.post_params[a]=b;this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.removePostParam=function(a){delete this.settings.post_params[a];this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.setFileTypes=function(a,b){this.settings.file_types=a;this.settings.file_types_description=b;this.callFlash("SetFileTypes",[a,b])};SWFUpload.prototype.setFileSizeLimit=function(a){this.settings.file_size_limit=a;this.callFlash("SetFileSizeLimit",[a])};SWFUpload.prototype.setFileUploadLimit=function(a){this.settings.file_upload_limit=a;this.callFlash("SetFileUploadLimit",[a])};SWFUpload.prototype.setFileQueueLimit=function(a){this.settings.file_queue_limit=a;this.callFlash("SetFileQueueLimit",[a])};SWFUpload.prototype.setFilePostName=function(a){this.settings.file_post_name=a;this.callFlash("SetFilePostName",[a])};SWFUpload.prototype.setUseQueryString=function(a){this.settings.use_query_string=a;this.callFlash("SetUseQueryString",[a])};SWFUpload.prototype.setRequeueOnError=function(a){this.settings.requeue_on_error=a;this.callFlash("SetRequeueOnError",[a])};SWFUpload.prototype.setHTTPSuccess=function(a){if(typeof a==="string"){a=a.replace(" ","").split(",")}this.settings.http_success=a;this.callFlash("SetHTTPSuccess",[a])};SWFUpload.prototype.setAssumeSuccessTimeout=function(a){this.settings.assume_success_timeout=a;this.callFlash("SetAssumeSuccessTimeout",[a])};SWFUpload.prototype.setDebugEnabled=function(a){this.settings.debug_enabled=a;this.callFlash("SetDebugEnabled",[a])};SWFUpload.prototype.setButtonImageURL=function(a){if(a==undefined){a=""}this.settings.button_image_url=a;this.callFlash("SetButtonImageURL",[a])};SWFUpload.prototype.setButtonDimensions=function(c,a){this.settings.button_width=c;this.settings.button_height=a;var b=this.getMovieElement();if(b!=undefined){b.style.width=c+"px";b.style.height=a+"px"}this.callFlash("SetButtonDimensions",[c,a])};SWFUpload.prototype.setButtonText=function(a){this.settings.button_text=a;this.callFlash("SetButtonText",[a])};SWFUpload.prototype.setButtonTextPadding=function(b,a){this.settings.button_text_top_padding=a;this.settings.button_text_left_padding=b;this.callFlash("SetButtonTextPadding",[b,a])};SWFUpload.prototype.setButtonTextStyle=function(a){this.settings.button_text_style=a;this.callFlash("SetButtonTextStyle",[a])};SWFUpload.prototype.setButtonDisabled=function(a){this.settings.button_disabled=a;this.callFlash("SetButtonDisabled",[a])};SWFUpload.prototype.setButtonAction=function(a){this.settings.button_action=a;this.callFlash("SetButtonAction",[a])};SWFUpload.prototype.setButtonCursor=function(a){this.settings.button_cursor=a;this.callFlash("SetButtonCursor",[a])};SWFUpload.prototype.queueEvent=function(b,c){if(c==undefined){c=[]}else{if(!(c instanceof Array)){c=[c]}}var a=this;if(typeof this.settings[b]==="function"){this.eventQueue.push(function(){this.settings[b].apply(this,c)});setTimeout(function(){a.executeNextEvent()},0)}else{if(this.settings[b]!==null){throw"Event handler "+b+" is unknown or is not a function"}}};SWFUpload.prototype.executeNextEvent=function(){var a=this.eventQueue?this.eventQueue.shift():null;if(typeof(a)==="function"){a.apply(this)}};SWFUpload.prototype.unescapeFilePostParams=function(c){var e=/[$]([0-9a-f]{4})/i;var f={};var d;if(c!=undefined){for(var a in c.post){if(c.post.hasOwnProperty(a)){d=a;var b;while((b=e.exec(d))!==null){d=d.replace(b[0],String.fromCharCode(parseInt("0x"+b[1],16)))}f[d]=c.post[a]}}c.post=f}return c};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(a){return false}};SWFUpload.prototype.flashReady=function(){var a=this.getMovieElement();if(!a){this.debug("Flash called back ready but the flash movie can't be found.");return}this.cleanUp(a);this.queueEvent("swfupload_loaded_handler")};SWFUpload.prototype.cleanUp=function(a){try{if(this.movieElement&&typeof(a.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(b){}}}}catch(d){}window.__flash__removeCallback=function(e,f){try{if(e){e[f]=null}}catch(g){}}};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")};SWFUpload.prototype.fileQueued=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("file_queued_handler",a)};SWFUpload.prototype.fileQueueError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("file_queue_error_handler",[a,c,b])};SWFUpload.prototype.fileDialogComplete=function(b,c,a){this.queueEvent("file_dialog_complete_handler",[b,c,a])};SWFUpload.prototype.uploadStart=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("return_upload_start_handler",a)};SWFUpload.prototype.returnUploadStart=function(a){var b;if(typeof this.settings.upload_start_handler==="function"){a=this.unescapeFilePostParams(a);b=this.settings.upload_start_handler.call(this,a)}else{if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function"}}if(b===undefined){b=true}b=!!b;this.callFlash("ReturnUploadStart",[b])};SWFUpload.prototype.uploadProgress=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_progress_handler",[a,c,b])};SWFUpload.prototype.uploadError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_error_handler",[a,c,b])};SWFUpload.prototype.uploadSuccess=function(b,a,c){b=this.unescapeFilePostParams(b);this.queueEvent("upload_success_handler",[b,a,c])};SWFUpload.prototype.uploadComplete=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("upload_complete_handler",a)};SWFUpload.prototype.debug=function(a){this.queueEvent("debug_handler",a)};SWFUpload.prototype.debugMessage=function(c){if(this.settings.debug){var a,d=[];if(typeof c==="object"&&typeof c.name==="string"&&typeof c.message==="string"){for(var b in c){if(c.hasOwnProperty(b)){d.push(b+": "+c[b])}}a=d.join("\n")||"";d=a.split("\n");a="EXCEPTION: "+d.join("\nEXCEPTION: ");SWFUpload.Console.writeLine(a)}else{SWFUpload.Console.writeLine(c)}}};SWFUpload.Console={};SWFUpload.Console.writeLine=function(d){var b,a;try{b=document.getElementById("SWFUpload_Console");if(!b){a=document.createElement("form");document.getElementsByTagName("body")[0].appendChild(a);b=document.createElement("textarea");b.id="SWFUpload_Console";b.style.fontFamily="monospace";b.setAttribute("wrap","off");b.wrap="off";b.style.overflow="auto";b.style.width="700px";b.style.height="350px";b.style.margin="5px";a.appendChild(b)}b.value+=d+"\n";b.scrollTop=b.scrollHeight-b.clientHeight}catch(c){alert("Exception: "+c.name+" Message: "+c.message)}};
+
+/*
+Uploadify v3.0.0
+Copyright (c) 2010 Ronnie Garcia
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+if(jQuery)(function(a){a.extend(a.fn,{uploadify:function(b,c){a(this).each(function(){function t(b,c,d){g.queue.queueBytesUploaded+=b.size;a("#"+b.id).find(".data").html(" - "+uploadifyLang["uploadComplete"]);if(g.settings.onUploadSuccess)g.settings.onUploadSuccess(b,c,d)}function s(b){var c=new Date;g.timer=c.getTime();g.bytesLoaded=0;if(g.queue.uploadQueue.length==0){g.queue.uploadSize=b.size}if(g.settings.checkExisting!==false){a.ajax({type:"POST",async:false,url:g.settings.checkExisting,data:{filename:b.name},success:function(c){if(c==1){var d=confirm(uploadifyLang["existsMsg1"]+' "'+b.name+'" '+uploadifyLang["existsMsg2"]+".\n"+uploadifyLang["existsMsg3"]);if(!d){g.cancelUpload(b.id);a("#"+b.id).remove();if(g.queue.uploadQueue.length>0&&g.queue.queueLength>0){if(g.queue.uploadQueue[0]=="*"){g.startUpload()}else{g.startUpload(g.queue.uploadQueue.shift())}}}}}})}if(g.settings.onUploadStart)g.settings.onUploadStart(b)}function r(b,c,d){var e=new Date;var f=e.getTime();var h=f-g.timer;g.timer=f;var i=c-g.bytesLoaded;g.bytesLoaded=c;var j=g.queue.queueBytesUploaded+c;var k=Math.round(c/d*100);var l=0;var m=i/1024/(h/1e3);m=Math.floor(m*10)/10;if(g.queue.averageSpeed>0){g.queue.averageSpeed=(g.queue.averageSpeed+m)/2}else{g.queue.averageSpeed=m}if(m>1e3){l=m*.001;g.queue.averageSpeed=l}var n="KB/s";if(l>0){n="MB/s"}if(a.inArray("onUploadProgress",g.settings.skipDefault)<0){if(g.settings.progressData=="percentage"){a("#"+b.id).find(".data").html(" - "+k+"%")}else if(g.settings.progressData=="speed"){a("#"+b.id).find(".data").html(" - "+g.queue.averageSpeed.toFixed(2)+" "+n)}else if(g.settings.progressData=="all"){a("#"+b.id).find(".data").html(" - "+k+"% - "+g.queue.averageSpeed.toFixed(2)+" "+n)}a("#"+b.id).find(".uploadifyProgressBar").css("width",k+"%")}if(g.settings.onUploadProgress)g.settings.onUploadProgress(b,c,d,j,g.queue.uploadSize)}function q(b,c,d){var e=uploadifyLang["errorString1"];if(c!=SWFUpload.UPLOAD_ERROR.FILE_CANCELLED&&c!=SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED){a("#"+b.id).addClass("uploadifyError")}a("#"+b.id).find(".uploadifyProgressBar").css("width","1px");switch(c){case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:e=uploadifyLang["errorString2"]+" ("+d+")";break;case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:e=uploadifyLang["errorString3"];break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:e=uploadifyLang["errorString4"];break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:e=uploadifyLang["errorString5"];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:alert(uploadifyLang["errorString6"]+" ("+d+").");e=uploadifyLang["errorString7"];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:e=uploadifyLang["errorString8"];break;case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:e=uploadifyLang["errorString9"];break;case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:e=uploadifyLang["errorString10"];break;case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:e=uploadifyLang["errorString11"];g.queue.queueSize-=b.size;if(b.status==SWFUpload.FILE_STATUS.IN_PROGRESS||a.inArray(b.id,g.queue.uploadQueue)>=0){g.queue.uploadSize-=b.size}delete g.queue.files[b.id];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:e=uploadifyLang["errorString12"];break}if(c!=SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND&&b.status!=SWFUpload.FILE_STATUS.COMPLETE){a("#"+b.id).find(".data").html(" - "+e)}if(g.settings.onUploadError)g.settings.onUploadError(b,c,d,e,g.queue)}function p(b){var c=g.getStats();g.queue.queueLength=c.files_queued;if(g.queue.uploadQueue[0]=="*"){if(g.queue.queueLength>0){g.startUpload()}else{g.queue.uploadQueue=[];if(g.settings.onQueueComplete)g.settings.onQueueComplete(c)}}else{if(g.settings.onUploadComplete)g.settings.onUploadComplete(b,g.queue);if(g.queue.queueLength>0){g.startUpload(g.queue.uploadQueue.shift())}else{g.queue.uploadQueue=[];if(g.settings.onQueueComplete)g.settings.onQueueComplete(c)}}if(a.inArray("onUploadComplete",g.settings.skipDefault)<0){if(g.settings.removeCompleted){switch(b.filestatus){case SWFUpload.FILE_STATUS.COMPLETE:setTimeout(function(){if(a("#"+b.id)){g.queue.queueSize-=b.size;delete g.queue.files[b.id];a("#"+b.id).fadeOut(500,function(){a(this).remove()})}},g.settings.removeTimeout*1e3);break;case SWFUpload.FILE_STATUS.ERROR:if(!g.settings.requeueErrors){setTimeout(function(){if(a("#"+b.id)){g.queue.queueSize-=b.size;delete g.queue.files[b.id];a("#"+b.id).fadeOut(500,function(){a(this).remove()})}},g.settings.removeTimeout*1e3)}break}}}}function o(){var a=g.getStats();if(g.settings.onQueueComplete)g.settings.onQueueComplete(a)}function n(b,c,d){if(a.inArray("onSelectError",g.settings.skipDefault)<0){switch(c){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:if(g.settings.queueSizeLimit>d){g.queue.errorMsg+="\n"+uploadifyLang["errorMsg2"]+" ("+d+")."}else{g.queue.errorMsg+="\n"+uploadifyLang["errorMsg3"]+" ("+g.settings.queueSizeLimit+")."}break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg5"]+" ("+g.settings.fileSizeLimit+").";break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg6"]+".";break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg7"]+" ("+g.settings.fileTypeDesc+").";break}}if(c!=SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){delete g.queue.files[b.id]}if(g.settings.onSelectError)g.settings.onSelectError(b,c,d)}function m(b){if(a.inArray("onSelect",g.settings.skipDefault)<0){var c={};for(var d in g.queue.files){c=g.queue.files[d];if(c.name==b.name){var e=confirm(uploadifyLang["replaceMsg1"]+' "'+b.name+'" '+uploadifyLang["replaceMsg2"]+".\n"+uploadifyLang["replaceMsg3"]);if(!e){g.cancelUpload(b.id);g.queue.filesCancelled++;return false}else{a("#"+c.id).remove();g.cancelUpload(c.id);g.queue.filesReplaced++}}}var f=Math.round(b.size/1024);var h="KB";if(f>1e3){f=Math.round(f/1e3);h="MB"}var i=f.toString().split(".");f=i[0];if(i.length>1){f+="."+i[1].substr(0,2)}f+=h;var j=b.name;if(j.length>18){j=j.substr(0,15)+"..."}a("#"+g.settings.queueID).append('<div id="'+b.id+'" class="uploadifyQueueItem">\n\t\t\t\t\t\t\t\t<div class="cancel">\n\t\t\t\t\t\t\t\t\t<a href="javascript:jQuery(\'#'+g.settings.id+"').uploadifyCancel('"+b.id+'\')"><img src="'+g.settings.cancelImage+'" border="0" /></a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<span class="fileName">'+j+" ("+f+')</span><span class="data"></span>\n\t\t\t\t\t\t\t\t<div class="uploadifyProgress">\n\t\t\t\t\t\t\t\t\t<div class="uploadifyProgressBar"><!--Progress Bar--></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>');g.queue.queueSize+=b.size}g.queue.files[b.id]=b;if(g.settings.onSelect)g.settings.onSelect(b)}function l(){g.queue.errorMsg=uploadifyLang["errorMsg1"];g.queue.filesReplaced=0;g.queue.filesCancelled=0;if(g.settings.onDialogOpen)g.settings.onDialogOpen()}function k(b,c,d){var e=g.getStats();g.queue.filesErrored=b-c;g.queue.filesSelected=b;g.queue.filesQueued=c-g.queue.filesCancelled;g.queue.queueLength=d;if(a.inArray("onDialogClose",g.settings.skipDefault)<0){if(g.queue.filesErrored>0){alert(g.queue.errorMsg)}}if(g.settings.onDialogClose)g.settings.onDialogClose(g.queue);if(g.settings.auto)a("#"+g.settings.id).uploadifyUpload("*")}var d=a(this).clone();var e=a.extend({id:a(this).attr("id"),langFile:"uploadifyLang_en.js",swf:"uploadify.swf",uploader:"uploadify.php",auto:false,buttonCursor:"pointer",buttonText:"",cancelImage:"uploadify-cancel.png",checkExisting:"uploadify-check-existing.php",debug:false,fileObjName:"Filedata",fileSizeLimit:0,fileTypeDesc:"",fileTypeExts:"*.*",height:30,method:"post",multi:false,queueID:false,queueSizeLimit:999,removeCompleted:true,removeTimeout:3,requeueErrors:true,postData:{},preventCaching:true,progressData:"all",successTimeout:30,transparent:true,uploadLimit:999,width:120,skipDefault:[],onDialogClose:function(){},onDialogOpen:function(){},onSelect:function(){},onSelectError:function(){},onQueueComplete:function(){},onUploadComplete:function(){},onUploadError:function(){},onUploadProgress:function(){},onUploadStart:function(){},onUploadSuccess:function(){}},b);var f={assume_success_timeout:e.successTimeout,button_placeholder_id:e.id,button_width:e.width,button_height:e.height,button_text:null,button_text_style:null,button_text_top_padding:0,button_text_left_padding:0,button_action:e.multi?SWFUpload.BUTTON_ACTION.SELECT_FILES:SWFUpload.BUTTON_ACTION.SELECT_FILE,button_disabled:false,button_cursor:e.buttonCursor=="arrow"?SWFUpload.CURSOR.ARROW:SWFUpload.CURSOR.HAND,button_window_mode:e.transparent?SWFUpload.WINDOW_MODE.TRANSPARENT:SWFUpload.WINDOW_MODE.OPAQUE,debug:e.debug,requeue_on_error:e.requeueErrors,file_post_name:e.fileObjName,file_size_limit:e.fileSizeLimit,file_types:e.fileTypeExts,file_types_description:e.fileTypeDesc,file_queue_limit:e.queueSizeLimit,file_upload_limit:e.uploadLimit,flash_url:e.swf,prevent_swf_caching:e.preventCaching,post_params:e.postData,upload_url:e.uploader,use_query_string:e.method=="get",file_dialog_complete_handler:k,file_dialog_start_handler:l,file_queued_handler:m,file_queue_error_handler:n,upload_complete_handler:p,upload_error_handler:q,upload_progress_handler:r,upload_start_handler:s,upload_success_handler:t};if(c){f=a.extend(f,c)}f=a.extend(f,e);a.ajaxSetup({async:false});a.getScript(e.langFile);a.ajaxSetup({async:true});if(e.buttonText=="")e.buttonText=uploadifyLang["buttonText"];if(e.fileTypeDesc=="")e.fileTypeDesc=uploadifyLang["fileTypeDesc"];window["uploadify_"+e.id]=new SWFUpload(f);var g=window["uploadify_"+e.id];g.original=d;var h=a("<div />",{id:e.id,"class":"uploadify",css:{height:e.height+"px",position:"relative",width:e.width+"px"}});a("#"+g.movieName).wrap(h);if(!e.queueID){var i=a("<div />",{id:e.id+"_queue","class":"uploadifyQueue"});a("#"+e.id).after(i);g.settings.queueID=e.queueID=e.id+"_queue"}g.queue={files:{},filesSelected:0,filesQueued:0,filesReplaced:0,filesCancelled:0,filesErrored:0,averageSpeed:0,queueLength:0,queueSize:0,uploadSize:0,queueBytesUploaded:0,uploadQueue:[],errorMsg:uploadifyLang["errorMsg1"]};var j=a("<div />",{id:e.id+"_button","class":"uploadifyButton",html:'<span class="uploadifyButtonText">'+e.buttonText+"</span>"});a("#"+e.id).append(j);a("#"+g.movieName).css({position:"absolute","z-index":1,left:"0px"})})},uploadifyCancel:function(b){var c=a(this).selector.replace("#","");var d=window["uploadify_"+c];var e=-1;if(arguments[0]){if(arguments[0]=="*"){a("#"+d.settings.queueID).find(".uploadifyQueueItem").each(function(){e++;d.cancelUpload(a(this).attr("id"));a(this).delay(100*e).fadeOut(500,function(){a(this).remove()})});d.queue.queueSize=0}else{for(var f=0;f<arguments.length;f++){d.cancelUpload(arguments[f]);a("#"+arguments[f]).delay(100*f).fadeOut(500,function(){a(this).remove()})}}}else{a("#"+d.settings.queueID).find(".uploadifyQueueItem").eq(0).fadeOut(500,function(){a(this).remove();d.cancelUpload(a(this).attr("id"))})}},uploadifyDestroy:function(){var b=a(this).selector.replace("#","");var c=window["uploadify_"+b];c.destroy();a("#"+b+"_queue").remove();a("#"+b).replaceWith(c.original);delete window["uploadify_"+b]},uploadifyDisable:function(b){var c=a(this).selector.replace("#","");var d=window["uploadify_"+c];d.setButtonDisabled(b)},uploadifySettings:function(b,c,d){function i(b,d,e){switch(b){case"uploader":f.setUploadURL(d);break;case"postData":if(!e){c=a.extend(f.settings.postData,d)}f.setPostParams(d);break;case"method":if(d=="get"){f.setUseQueryString(true)}else{f.setUseQueryString(false)}break;case"fileObjName":f.setFilePostName(d);break;case"fileTypeExts":f.setFileTypes(d,f.settings.fileTypeDesc);break;case"fileTypeDesc":f.setFileTypes(f.settings.fileTypeExts,d);break;case"fileSizeLimit":f.setFileSizeLimit(d);break;case"uploadLimit":f.setFileUploadLimit(d);break;case"queueSizeLimit":f.setFileQueueLimit(d);break;case"buttonImage":a("#"+f.settings.id+"_button").remove();f.setButtonImageURL(d);break;case"buttonCursor":if(d=="arrow"){f.setButtonCursor(SWFUpload.CURSOR.ARROW)}else{f.setButtonCursor(SWFUpload.CURSOR.HAND)}break;case"buttonText":a("#"+f.settings.id+"_button").find(".uploadifyButtonText").html(d);break;case"width":f.setButtonDimensions(d,f.settings.height);break;case"height":f.setButtonDimensions(f.settings.width,d);break;case"multi":if(d){f.setButtonAction(SWFUpload.BUTTON_ACTION.SELECT_FILES)}else{f.setButtonAction(SWFUpload.BUTTON_ACTION.SELECT_FILE)}break}f.settings[b]=c}var e=a(this).selector.replace("#","");var f=window["uploadify_"+e];var g=f.getStats();if(typeof arguments[0]=="object"){for(var h in c){i(h,c[h])}}if(arguments.length==1){if(b=="queueLength"){return g.files_queued}else{return f.settings[b]}}else{i(b,c,d)}},uploadifyStop:function(){var b=a(this).selector.replace("#","");var c=window["uploadify_"+b];c.stopUpload()},uploadifyUpload:function(){var b=a(this).selector.replace("#","");var c=window["uploadify_"+b];c.queue.averageSpeed=0;c.queue.uploadSize=0;c.queue.bytesUploaded=0;c.queue.uploadQueue=[];if(arguments[0]){if(arguments[0]=="*"){c.queue.uploadSize=c.queue.queueSize;c.queue.uploadQueue.push("*");c.startUpload()}else{for(var d=0;d<arguments.length;d++){c.queue.uploadSize+=c.queue.files[arguments[d]].size;c.queue.uploadQueue.push(arguments[d])}c.startUpload(c.queue.uploadQueue.shift())}}else{c.startUpload()}}})})(jQuery)
Index: /tags/2.6.0RC1/admin/include/uploadify/uploadify.css
===================================================================
--- /tags/2.6.0RC1/admin/include/uploadify/uploadify.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/uploadify/uploadify.css	(revision 25596)
@@ -0,0 +1,119 @@
+/*
+Uploadify v3.0.0
+Copyright (c) 2010 Ronnie Garcia
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+.uploadify {margin:0 auto 10px auto}
+
+.uploadifyButton {
+	display: block;
+	cursor: pointer;
+	font-size: 11px;
+	font-weight: bold;
+	color: #eeeeee;
+	padding: 8px 0;
+	text-align: center;
+	height: 14px;
+	width: 100%;
+	background-color: #464646;
+-webkit-border-radius:5px;
+-moz-border-radius:5px;
+border-radius:5px;
+letter-spacing:2px;
+}
+.uploadify:hover .uploadifyButton {
+	color:#fff;
+        background-color: #333;
+        cursor:pointer;
+}
+.uploadifyQueueItem {
+	background-color: #F5F5F5;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
+	font: 11px Verdana, Geneva, sans-serif;
+	margin-top: 5px;
+	max-width: 350px;
+	padding: 10px;
+}
+.uploadifyQueueItem .cancel {
+	float: right;
+}
+.uploadifyQueueItem .fileName, .uploadifyQueueItem .data {
+	float: left;
+}
+.uploadifyQueue .completed {
+	background-color: #E5E5E5;
+}
+.uploadifyProgress {
+	background-color: #E5E5E5;
+	margin-top: 25px;
+	height: 3px;
+	width: 100%;
+	position: relative;
+}
+.uploadifyProgressBar {
+	background-color: #0099FF;
+	height: 3px;
+	width: 1px;
+	position: absolute;
+	left: 0px;
+}
+.uploadifyError {
+	background-color: #FDE5DD !important;
+}
+
+
+/* Piwigo specific */
+#fileQueue {
+        width: 420px;
+        max-height: 300px;
+        overflow: auto;
+        margin: 0 auto 10px auto;
+        padding: 5px 0 10px 0;
+}
+
+.uploadifyQueueItem {
+	border: 1px solid #666;
+	background-color: #444;
+        color:#999;
+	margin: 5px auto 0 auto;
+	padding: 10px;
+	width: 350px;
+
+}
+.uploadifyError {
+	border: 2px solid #FBCBBC !important;
+	background-color: #FDE5DD !important;
+}
+.uploadifyQueueItem .cancel {
+	float: right;
+}
+.uploadifyProgress {
+	background-color: #333;
+	border: 1px solid #666;
+	width: 100%;
+}
+.uploadifyProgressBar {
+	background-color: #FF3363;
+	width: 1px;
+	height: 3px;
+}
Index: /tags/2.6.0RC1/admin/include/uploadify/uploadify.php
===================================================================
--- /tags/2.6.0RC1/admin/include/uploadify/uploadify.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/uploadify/uploadify.php	(revision 25596)
@@ -0,0 +1,78 @@
+<?php
+define('PHPWG_ROOT_PATH','../../../');
+define('IN_ADMIN', true);
+
+$_COOKIE['pwg_id'] = $_POST['session_id'];
+
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+check_pwg_token();
+
+ob_start();
+echo '$_FILES'."\n";
+print_r($_FILES);
+echo '$_POST'."\n";
+print_r($_POST);
+echo '$user'."\n";
+print_r($user);
+$tmp = ob_get_contents(); 
+ob_end_clean();
+// error_log($tmp, 3, "/tmp/php-".date('YmdHis').'-'.sprintf('%020u', rand()).".log");
+
+if ($_FILES['Filedata']['error'] !== UPLOAD_ERR_OK)
+{
+  $error_message = file_upload_error_message($_FILES['Filedata']['error']);
+  
+  add_upload_error(
+    $_POST['upload_id'],
+    sprintf(
+      l10n('Error on file "%s" : %s'),
+      $_FILES['Filedata']['name'],
+      $error_message
+      )
+    );
+
+  echo "File Size Error";
+  exit();
+}
+
+ob_start();
+
+$image_id = add_uploaded_file(
+  $_FILES['Filedata']['tmp_name'],
+  $_FILES['Filedata']['name'],
+  array($_POST['category_id']),
+  $_POST['level']
+  );
+
+$_SESSION['uploads'][ $_POST['upload_id'] ][] = $image_id;
+
+$query = '
+SELECT
+    id,
+    path
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$image_id.'
+;';
+$image_infos = pwg_db_fetch_assoc(pwg_query($query));
+
+$thumbnail_url = preg_replace('#^'.PHPWG_ROOT_PATH.'#', './', DerivativeImage::thumb_url($image_infos));
+
+$return = array(
+  'image_id' => $image_id,
+  'category_id' => $_POST['category_id'],
+  'thumbnail_url' => $thumbnail_url,
+  );
+
+$output = ob_get_contents(); 
+ob_end_clean();
+if (!empty($output))
+{
+  add_upload_error($_POST['upload_id'], $output);
+  $return['error_message'] = $output;
+}
+
+echo json_encode($return);
+?>
Index: /tags/2.6.0RC1/admin/include/uploadify/uploadifyLang_en.js
===================================================================
--- /tags/2.6.0RC1/admin/include/uploadify/uploadifyLang_en.js	(revision 25596)
+++ /tags/2.6.0RC1/admin/include/uploadify/uploadifyLang_en.js	(revision 25596)
@@ -0,0 +1,32 @@
+// this file must be in UTF-8 format
+
+var uploadifyLang = new Array();
+
+uploadifyLang['buttonText']     = 'SELECT FILES';
+uploadifyLang['fileTypeDesc']   = 'All Files (*.*)';
+uploadifyLang['replaceMsg1']    = 'The file named';
+uploadifyLang['replaceMsg2']    = 'is already in the queue';
+uploadifyLang['replaceMsg3']    = 'Do you want to replace the existing item in the queue?';
+uploadifyLang['existsMsg1']     = 'A file with the name';
+uploadifyLang['existsMsg2']     = 'already exists on the server';
+uploadifyLang['existsMsg3']     = 'Would you like to replace the existing file?';
+uploadifyLang['errorMsg1']      = 'Some files were not added to the queue:';
+uploadifyLang['errorMsg2']      = 'The number of files selected exceeds the remaining upload limit';
+uploadifyLang['errorMsg3']      = 'The number of files selected exceeds the queue size limit';
+uploadifyLang['errorMsg4']      = 'The file';
+uploadifyLang['errorMsg5']      = 'exceeds the size limit';
+uploadifyLang['errorMsg6']      = 'is empty';
+uploadifyLang['errorMsg7']      = 'is not an accepted file type';
+uploadifyLang['errorString1']   = 'Error';
+uploadifyLang['errorString2']   = 'HTTP Error';
+uploadifyLang['errorString3']   = 'Missing Upload URL';
+uploadifyLang['errorString4']   = 'IO Error';
+uploadifyLang['errorString5']   = 'Security Error';
+uploadifyLang['errorString6']   = 'The upload limit has been reached';
+uploadifyLang['errorString7']   = 'Exceeds Upload Limit';
+uploadifyLang['errorString8']   = 'Failed';
+uploadifyLang['errorString9']   = 'File ID Not Found';
+uploadifyLang['errorString10']  = 'Validation Error';
+uploadifyLang['errorString11']  = 'Cancelled';
+uploadifyLang['errorString12']  = 'Stopped';
+uploadifyLang['uploadComplete'] = 'Complete';
Index: /tags/2.6.0RC1/admin/index.php
===================================================================
--- /tags/2.6.0RC1/admin/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/intro.php
===================================================================
--- /tags/2.6.0RC1/admin/intro.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/intro.php	(revision 25596)
@@ -0,0 +1,279 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/check_integrity.class.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/c13y_internal.class.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                                actions                                |
+// +-----------------------------------------------------------------------+
+
+// Check for upgrade : code inspired from punbb
+if (isset($_GET['action']) and 'check_upgrade' == $_GET['action'])
+{
+  if (!fetchRemote(PHPWG_URL.'/download/latest_version', $result))
+  {
+    $page['errors'][] = l10n('Unable to check for upgrade.');
+  }
+  else
+  {
+    $versions = array('current' => PHPWG_VERSION);
+    $lines = @explode("\r\n", $result);
+
+    // if the current version is a BSF (development branch) build, we check
+    // the first line, for stable versions, we check the second line
+    if (preg_match('/^BSF/', $versions['current']))
+    {
+      $versions['latest'] = trim($lines[0]);
+
+      // because integer are limited to 4,294,967,296 we need to split BSF
+      // versions in date.time
+      foreach ($versions as $key => $value)
+      {
+        $versions[$key] =
+          preg_replace('/BSF_(\d{8})(\d{4})/', '$1.$2', $value);
+      }
+    }
+    else
+    {
+      $versions['latest'] = trim($lines[1]);
+    }
+
+    if ('' == $versions['latest'])
+    {
+      $page['errors'][] = l10n('Check for upgrade failed for unknown reasons.');
+    }
+    // concatenation needed to avoid automatic transformation by release
+    // script generator
+    else if ('%'.'PWGVERSION'.'%' == $versions['current'])
+    {
+      $page['infos'][] = l10n('You are running on development sources, no check possible.');
+    }
+    else if (version_compare($versions['current'], $versions['latest']) < 0)
+    {
+      $page['infos'][] = l10n('A new version of Piwigo is available.');
+    }
+    else
+    {
+      $page['infos'][] = l10n('You are running the latest version of Piwigo.');
+    }
+  }
+}
+// Show phpinfo() output
+else if (isset($_GET['action']) and 'phpinfo' == $_GET['action'])
+{
+  phpinfo();
+  exit();
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('intro' => 'intro.tpl'));
+
+if ($conf['show_newsletter_subscription']) {
+  $template->assign(
+    array(
+      'EMAIL' => $user['email'],
+      'SUBSCRIBE_BASE_URL' => get_newsletter_subscribe_base_url($user['language']),
+      )
+    );
+}
+
+$php_current_timestamp = date("Y-m-d H:i:s");
+$db_version = pwg_get_db_version();
+list($db_current_date) = pwg_db_fetch_row(pwg_query('SELECT now();'));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.IMAGES_TABLE.'
+;';
+list($nb_elements) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.CATEGORIES_TABLE.'
+;';
+list($nb_categories) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NULL
+;';
+list($nb_virtual) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NOT NULL
+;';
+list($nb_physical) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.IMAGE_CATEGORY_TABLE.'
+;';
+list($nb_image_category) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.TAGS_TABLE.'
+;';
+list($nb_tags) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.IMAGE_TAG_TABLE.'
+;';
+list($nb_image_tag) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.USERS_TABLE.'
+;';
+list($nb_users) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.GROUPS_TABLE.'
+;';
+list($nb_groups) = pwg_db_fetch_row(pwg_query($query));
+
+$query = '
+SELECT COUNT(*)
+  FROM '.RATE_TABLE.'
+;';
+list($nb_rates) = pwg_db_fetch_row(pwg_query($query));
+
+$template->assign(
+  array(
+    'PHPWG_URL' => PHPWG_URL,
+    'PWG_VERSION' => PHPWG_VERSION,
+    'OS' => PHP_OS,
+    'PHP_VERSION' => phpversion(),
+    'DB_ENGINE' => 'MySQL',
+    'DB_VERSION' => $db_version,
+    'DB_ELEMENTS' => l10n_dec('%d photo', '%d photos', $nb_elements),
+    'DB_CATEGORIES' =>
+      l10n_dec('%d album including', '%d albums including', $nb_categories).
+      l10n_dec('%d physical', '%d physicals', $nb_physical).
+      l10n_dec(' and %d virtual', ' and %d virtuals', $nb_virtual),
+    'DB_IMAGE_CATEGORY' => l10n_dec('%d association', '%d associations', $nb_image_category),
+    'DB_TAGS' => l10n_dec('%d tag', '%d tags', $nb_tags),
+    'DB_IMAGE_TAG' => l10n_dec('%d association', '%d associations', $nb_image_tag),
+    'DB_USERS' => l10n_dec('%d user', '%d users', $nb_users),
+    'DB_GROUPS' => l10n_dec('%d group', '%d groups', $nb_groups),
+    'DB_RATES' => ($nb_rates == 0) ? l10n('no rate') : l10n('%d rates', $nb_rates),
+    'U_CHECK_UPGRADE' => PHPWG_ROOT_PATH.'admin.php?action=check_upgrade',
+    'U_PHPINFO' => PHPWG_ROOT_PATH.'admin.php?action=phpinfo',
+    'PHP_DATATIME' => $php_current_timestamp,
+    'DB_DATATIME' => $db_current_date,
+    )
+  );
+  
+if ($conf['activate_comments'])
+{
+  $query = '
+SELECT COUNT(*)
+  FROM '.COMMENTS_TABLE.'
+;';
+  list($nb_comments) = pwg_db_fetch_row(pwg_query($query));
+  $template->assign('DB_COMMENTS', l10n_dec('%d comment', '%d comments', $nb_comments));
+}
+
+if ($nb_elements > 0)
+{
+  $query = '
+SELECT MIN(date_available)
+  FROM '.IMAGES_TABLE.'
+;';
+  list($first_date) = pwg_db_fetch_row(pwg_query($query));
+
+  $template->assign(
+    'first_added',
+    array(
+      'DB_DATE' =>
+      l10n('first photo added on %s', format_date($first_date))
+      )
+    );
+}
+
+// graphics library
+switch (pwg_image::get_library())
+{
+  case 'imagick':
+    $library = 'ImageMagick';
+    $img = new Imagick();
+    $version = $img->getVersion();
+    if (preg_match('/ImageMagick \d+\.\d+\.\d+-?\d*/', $version['versionString'], $match))
+    {
+      $library = $match[0];
+    }
+    $template->assign('GRAPHICS_LIBRARY', $library);
+    break;
+
+  case 'ext_imagick':
+    $library = 'External ImageMagick';
+    exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
+    if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
+    {
+      $library .= ' ' . $match[1];
+    }
+    $template->assign('GRAPHICS_LIBRARY', $library);
+    break;
+
+  case 'gd':
+    $gd_info = gd_info();
+    $template->assign('GRAPHICS_LIBRARY', 'GD '.@$gd_info['GD Version']);
+    break;
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'intro');
+
+// Check integrity
+$c13y = new check_integrity();
+// add internal checks
+new c13y_internal();
+// check and display
+$c13y->check();
+$c13y->display();
+
+?>
Index: /tags/2.6.0RC1/admin/languages.php
===================================================================
--- /tags/2.6.0RC1/admin/languages.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/languages.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=languages';
+
+if (isset($_GET['tab']))
+  $page['tab'] = $_GET['tab'];
+else
+  $page['tab'] = 'installed';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('languages');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+if ($page['tab'] == 'update')
+  include(PHPWG_ROOT_PATH.'admin/updates_ext.php');
+else
+  include(PHPWG_ROOT_PATH.'admin/languages_'.$page['tab'].'.php');
+
+?>
Index: /tags/2.6.0RC1/admin/languages_installed.php
===================================================================
--- /tags/2.6.0RC1/admin/languages_installed.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/languages_installed.php	(revision 25596)
@@ -0,0 +1,126 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/languages.class.php');
+
+$template->set_filenames(array('languages' => 'languages_installed.tpl'));
+
+$base_url = get_root_url().'admin.php?page='.$page['page'];
+
+$languages = new languages();
+$languages->get_db_languages();
+
+//--------------------------------------------------perform requested actions
+if (isset($_GET['action']) and isset($_GET['language']))
+{
+  $page['errors'] = $languages->perform_action($_GET['action'], $_GET['language']);
+
+  if (empty($page['errors']))
+  {
+    redirect($base_url);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                     start template output                             |
+// +-----------------------------------------------------------------------+
+$default_language = get_default_language();
+
+$tpl_languages = array();
+
+foreach($languages->fs_languages as $language_id => $language)
+{
+  $language['u_action'] = add_url_params($base_url, array('language' => $language_id));
+
+  if (in_array($language_id, array_keys($languages->db_languages)))
+  {
+    $language['state'] = 'active';
+    $language['deactivable'] = true;
+
+    if (count($languages->db_languages) <= 1)
+    {
+      $language['deactivable'] = false;
+      $language['deactivate_tooltip'] = l10n('Impossible to deactivate this language, you need at least one language.');
+    }
+
+    if ($language_id == $default_language)
+    {
+      $language['deactivable'] = false;
+      $language['deactivate_tooltip'] = l10n('Impossible to deactivate this language, first set another language as default.');
+    }
+  }
+  else
+  {
+    $language['state'] = 'inactive';
+  }
+
+  if ($language_id == $default_language)
+  {
+    $language['is_default'] = true;
+    array_unshift($tpl_languages, $language);
+  }
+  else
+  {
+    $language['is_default'] = false;
+    $tpl_languages[] = $language;
+  }
+}
+
+$template->assign(
+  array(
+    'languages' => $tpl_languages,
+    )
+  );
+$template->append('language_states', 'active');
+$template->append('language_states', 'inactive');
+
+
+$missing_language_ids = array_diff(
+    array_keys($languages->db_languages),
+    array_keys($languages->fs_languages)
+  );
+
+foreach($missing_language_ids as $language_id)
+{
+  $query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \''.get_default_language().'\'
+  WHERE language = \''.$language_id.'\'
+;';
+  pwg_query($query);
+
+  $query = '
+DELETE
+  FROM '.LANGUAGES_TABLE.'
+  WHERE id= \''.$language_id.'\'
+;';
+  pwg_query($query);
+}
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'languages');
+?>
Index: /tags/2.6.0RC1/admin/languages_new.php
===================================================================
--- /tags/2.6.0RC1/admin/languages_new.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/languages_new.php	(revision 25596)
@@ -0,0 +1,128 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/languages.class.php');
+
+$template->set_filenames(array('languages' => 'languages_new.tpl'));
+
+$base_url = get_root_url().'admin.php?page='.$page['page'].'&tab='.$page['tab'];
+
+$languages = new languages();
+$languages->get_db_languages();
+
+// +-----------------------------------------------------------------------+
+// |                           setup check                                 |
+// +-----------------------------------------------------------------------+
+
+$languages_dir = PHPWG_ROOT_PATH.'language';
+if (!is_writable($languages_dir))
+{
+  $page['errors'][] = l10n('Add write access to the "%s" directory', 'language');
+}
+
+// +-----------------------------------------------------------------------+
+// |                       perform installation                            |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['revision']))
+{
+  if (!is_webmaster())
+  {
+    $page['errors'][] = l10n('Webmaster status is required.');
+  }
+  else
+  {
+    check_pwg_token();
+
+    $install_status = $languages->extract_language_files('install', $_GET['revision']);
+
+    redirect($base_url.'&installstatus='.$install_status);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                        installation result                            |
+// +-----------------------------------------------------------------------+
+if (isset($_GET['installstatus']))
+{
+  switch ($_GET['installstatus'])
+  {
+    case 'ok':
+      $page['infos'][] = l10n('Language has been successfully installed');
+      break;
+
+    case 'temp_path_error':
+      $page['errors'][] = l10n('Can\'t create temporary file.');
+      break;
+
+    case 'dl_archive_error':
+      $page['errors'][] = l10n('Can\'t download archive.');
+      break;
+
+    case 'archive_error':
+      $page['errors'][] = l10n('Can\'t read or extract archive.');
+      break;
+
+    default:
+      $page['errors'][] = l10n('An error occured during extraction (%s).', htmlspecialchars($_GET['installstatus']));
+  }  
+}
+
+// +-----------------------------------------------------------------------+
+// |                     start template output                             |
+// +-----------------------------------------------------------------------+
+if ($languages->get_server_languages(true))
+{
+  foreach($languages->server_languages as $language)
+  {
+    list($date, ) = explode(' ', $language['revision_date']);
+
+    $url_auto_install = htmlentities($base_url)
+      . '&amp;revision=' . $language['revision_id']
+      . '&amp;pwg_token='.get_pwg_token()
+    ;
+
+    $template->append('languages', array(
+      'EXT_NAME' => $language['extension_name'],
+      'EXT_DESC' => $language['extension_description'],
+      'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$language['extension_id'],
+      'VERSION' => $language['revision_name'],
+      'VER_DESC' => $language['revision_description'],
+      'DATE' => $date,
+      'AUTHOR' => $language['author_name'],
+      'URL_INSTALL' => $url_auto_install,
+      'URL_DOWNLOAD' => $language['download_url'] . '&amp;origin=piwigo_download'));
+  }
+}
+else
+{
+  $page['errors'][] = l10n('Can\'t connect to server.');
+}
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'languages');
+?>
Index: /tags/2.6.0RC1/admin/maintenance.php
===================================================================
--- /tags/2.6.0RC1/admin/maintenance.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/maintenance.php	(revision 25596)
@@ -0,0 +1,234 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (isset($_GET['action']))
+{
+  check_pwg_token();
+}
+
+// +-----------------------------------------------------------------------+
+// |                                actions                                |
+// +-----------------------------------------------------------------------+
+
+$action = isset($_GET['action']) ? $_GET['action'] : '';
+
+switch ($action)
+{
+  case 'lock_gallery' :
+  {
+    conf_update_param('gallery_locked', 'true');
+    redirect(get_root_url().'admin.php?page=maintenance');
+    break;
+  }
+  case 'unlock_gallery' :
+  {
+    conf_update_param('gallery_locked', 'false');
+    $_SESSION['page_infos'] = array(l10n('Gallery unlocked'));
+    redirect(get_root_url().'admin.php?page=maintenance');
+    break;
+  }
+  case 'categories' :
+  {
+    images_integrity();
+    update_uppercats();
+    update_category('all');
+    update_global_rank();
+    invalidate_user_cache(true);
+    break;
+  }
+  case 'images' :
+  {
+    images_integrity();
+    update_path();
+		include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
+    update_rating_score();
+    invalidate_user_cache();
+    break;
+  }
+  case 'delete_orphan_tags' :
+  {
+    delete_orphan_tags();
+    break;
+  }
+  case 'user_cache' :
+  {
+    invalidate_user_cache();
+    break;
+  }
+  case 'history_detail' :
+  {
+    $query = '
+DELETE
+  FROM '.HISTORY_TABLE.'
+;';
+    pwg_query($query);
+    break;
+  }
+  case 'history_summary' :
+  {
+    $query = '
+DELETE
+  FROM '.HISTORY_SUMMARY_TABLE.'
+;';
+    pwg_query($query);
+    break;
+  }
+  case 'sessions' :
+  {
+    pwg_session_gc();
+    break;
+  }
+  case 'feeds' :
+  {
+    $query = '
+DELETE
+  FROM '.USER_FEED_TABLE.'
+  WHERE last_check IS NULL
+;';
+    pwg_query($query);
+    break;
+  }
+  case 'database' :
+  {
+    do_maintenance_all_tables();
+    break;
+  }
+  case 'c13y' :
+  {
+    include_once(PHPWG_ROOT_PATH.'admin/include/check_integrity.class.php');
+    $c13y = new check_integrity();
+    $c13y->maintenance();
+    break;
+  }
+  case 'search' :
+  {
+    $query = '
+DELETE
+  FROM '.SEARCH_TABLE.'
+;';
+    pwg_query($query);
+    break;
+  }
+  case 'compiled-templates':
+  {
+    $template->delete_compiled_templates();
+    FileCombiner::clear_combined_files();
+    break;
+  }
+  case 'derivatives':
+  {
+    clear_derivative_cache($_GET['type']);
+    break;
+  }
+  default :
+  {
+    break;
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('maintenance'=>'maintenance.tpl'));
+
+$url_format = get_root_url().'admin.php?page=maintenance&amp;action=%s&amp;pwg_token='.get_pwg_token();
+
+$purge_urls[l10n('All')] = sprintf($url_format, 'derivatives').'&amp;type=all';
+foreach(ImageStdParams::get_defined_type_map() as $params)
+{
+  $purge_urls[ l10n($params->type) ] = sprintf($url_format, 'derivatives').'&amp;type='.$params->type;
+}
+$purge_urls[ l10n(IMG_CUSTOM) ] = sprintf($url_format, 'derivatives').'&amp;type='.IMG_CUSTOM;
+
+$template->assign(
+  array(
+    'U_MAINT_CATEGORIES' => sprintf($url_format, 'categories'),
+    'U_MAINT_IMAGES' => sprintf($url_format, 'images'),
+    'U_MAINT_ORPHAN_TAGS' => sprintf($url_format, 'delete_orphan_tags'),
+    'U_MAINT_USER_CACHE' => sprintf($url_format, 'user_cache'),
+    'U_MAINT_HISTORY_DETAIL' => sprintf($url_format, 'history_detail'),
+    'U_MAINT_HISTORY_SUMMARY' => sprintf($url_format, 'history_summary'),
+    'U_MAINT_SESSIONS' => sprintf($url_format, 'sessions'),
+    'U_MAINT_FEEDS' => sprintf($url_format, 'feeds'),
+    'U_MAINT_DATABASE' => sprintf($url_format, 'database'),
+    'U_MAINT_C13Y' => sprintf($url_format, 'c13y'),
+    'U_MAINT_SEARCH' => sprintf($url_format, 'search'),
+    'U_MAINT_COMPILED_TEMPLATES' => sprintf($url_format, 'compiled-templates'),
+    'U_MAINT_DERIVATIVES' => sprintf($url_format, 'derivatives'),
+    'purge_derivatives' => $purge_urls,
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=maintenance',
+    )
+  );
+
+
+if ($conf['gallery_locked'])
+{
+  $template->assign(
+    array(
+      'U_MAINT_UNLOCK_GALLERY' => sprintf($url_format, 'unlock_gallery'),
+      )
+    );
+}
+else
+{
+  $template->assign(
+    array(
+      'U_MAINT_LOCK_GALLERY' => sprintf($url_format, 'lock_gallery'),
+      )
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// | Define advanced features                                              |
+// +-----------------------------------------------------------------------+
+
+$advanced_features = array();
+
+//$advanced_features is array of array composed of CAPTION & URL
+$advanced_features = trigger_event(
+  'get_admin_advanced_features_links',
+  $advanced_features
+  );
+
+$template->assign('advanced_features', $advanced_features);
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'maintenance');
+?>
Index: /tags/2.6.0RC1/admin/menubar.php
===================================================================
--- /tags/2.6.0RC1/admin/menubar.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/menubar.php	(revision 25596)
@@ -0,0 +1,171 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+
+function abs_fn_cmp($a, $b)
+{
+  return abs($a)-abs($b);
+}
+
+function make_consecutive( &$orders, $step=50 )
+{
+  uasort( $orders, 'abs_fn_cmp' );
+  $crt = 1;
+  foreach( $orders as $id=>$pos)
+  {
+    $orders[$id] = $step * ($pos<0 ? -$crt : $crt);
+    $crt++;
+  }
+}
+
+
+global $template;
+
+include_once(PHPWG_ROOT_PATH.'include/block.class.php');
+
+$menu = new BlockManager('menubar');
+$menu->load_registered_blocks();
+$reg_blocks = $menu->get_registered_blocks();
+
+$mb_conf = @$conf[ 'blk_'.$menu->get_id() ];
+if ( is_string($mb_conf) )
+  $mb_conf = unserialize( $mb_conf );
+if ( !is_array($mb_conf) )
+  $mb_conf=array();
+
+foreach ($mb_conf as $id => $pos)
+{
+  if (!isset($reg_blocks[$id]))
+    unset($mb_conf[$id]);
+}
+
+if ( isset($_POST['reset']))
+{
+  $mb_conf = array();
+  $query = '
+UPDATE '.CONFIG_TABLE.'
+  SET value=\'\'
+  WHERE param=\'blk_'.addslashes($menu->get_id()).'\'
+  LIMIT 1';
+  pwg_query($query);
+}
+
+
+$idx=1;
+foreach ($reg_blocks as $id => $block)
+{
+  if ( !isset($mb_conf[$id]) )
+    $mb_conf[$id] = $idx*50;
+  $idx++;
+}
+
+
+if ( isset($_POST['submit']) )
+{
+  foreach ( $mb_conf as $id => $pos )
+  {
+    $hide = isset($_POST['hide_'.$id]);
+    $mb_conf[$id] = ($hide ? -1 : +1)*abs($pos);
+
+    $pos = (int)@$_POST['pos_'.$id];
+    if ($pos>0)
+      $mb_conf[$id] = $mb_conf[$id] > 0 ? $pos : -$pos;
+  }
+  make_consecutive( $mb_conf );
+
+  // BEGIN OPTIM - DONT ASK ABOUT THIS ALGO - but optimizes the size of the array we save in DB
+  /* !!! OPTIM DISABLED UNTIL IT HAS BEEN FIXED !!!
+  $reg_keys = array_keys($reg_blocks);
+  $cnf_keys = array_keys($mb_conf);
+  $best_slice = array( 'len'=>0 );
+  for ($i=0; $i<count($reg_keys); $i++)
+  {
+    for ($j=0; $j<count($cnf_keys); $j++)
+    {
+      for ($k=0; max($i,$j)+$k<count($cnf_keys); $k++)
+      {
+        if ($cnf_keys[$j+$k] == $reg_keys[$i+$k] )
+        {
+          if ( 1+$k>$best_slice['len'])
+          {
+            $best_slice['len'] = 1+$k;
+            $best_slice['start_cnf'] = $j;
+          }
+        }
+        else
+          break;
+      }
+    }
+  }
+  */
+  $mb_conf_db = $mb_conf;
+  /*
+  if ($best_slice['len'])
+  {
+    for ($j=0; $j<$best_slice['start_cnf']; $j++ )
+    {
+      $sign = $mb_conf_db[ $cnf_keys[$j] ] > 0 ? 1 : -1;
+      $mb_conf_db[ $cnf_keys[$j] ] = $sign * ( ($best_slice['start_cnf'])*50 - ($best_slice['start_cnf']-$j) );
+    }
+    for ($j=$best_slice['start_cnf']; $j<$best_slice['start_cnf']+$best_slice['len']; $j++ )
+    {
+      if ($mb_conf_db[ $cnf_keys[$j] ] > 0)
+        unset( $mb_conf_db[ $cnf_keys[$j] ] );
+    }
+  }
+  //var_export( $best_slice ); var_export($mb_conf);  var_export($mb_conf_db);
+  // END OPTIM
+  */
+  $query = '
+UPDATE '.CONFIG_TABLE.'
+  SET value=\''.addslashes(serialize($mb_conf_db)).'\'
+  WHERE param=\'blk_'.addslashes($menu->get_id()).'\'
+  ';
+  pwg_query($query);
+
+  $page['infos'][] = l10n('Order of menubar items has been updated successfully.');
+}
+
+make_consecutive( $mb_conf );
+
+foreach ($mb_conf as $id => $pos )
+{
+  $template->append( 'blocks',
+      array(
+        'pos' => $pos/5,
+        'reg' => $reg_blocks[$id]
+      )
+     );
+}
+
+$action = get_root_url().'admin.php?page=menubar';
+$template->assign(array('F_ACTION'=>$action));
+
+$template->set_filename( 'menubar_admin_content', 'menubar.tpl' );
+$template->assign_var_from_handle( 'ADMIN_CONTENT', 'menubar_admin_content');
+?>
Index: /tags/2.6.0RC1/admin/notification_by_mail.php
===================================================================
--- /tags/2.6.0RC1/admin/notification_by_mail.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/notification_by_mail.php	(revision 25596)
@@ -0,0 +1,719 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// | include                                                               |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_notification_by_mail.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_notification.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// | Initialization                                                        |
+// +-----------------------------------------------------------------------+
+$base_url = get_root_url().'admin.php';
+$must_repost = false;
+
+// +-----------------------------------------------------------------------+
+// | functions                                                             |
+// +-----------------------------------------------------------------------+
+
+/*
+ * Do timeout treatment in order to finish to send mails
+ *
+ * @param $post_keyname: key of check_key post array
+ * @param check_key_treated: array of check_key treated
+ * @return none
+ */
+function do_timeout_treatment($post_keyname, $check_key_treated = array())
+{
+  global $env_nbm, $base_url, $page, $must_repost;
+
+  if ($env_nbm['is_sendmail_timeout'])
+  {
+    if (isset($_POST[$post_keyname]))
+    {
+      $post_count = count($_POST[$post_keyname]);
+      $treated_count = count($check_key_treated);
+      if ($treated_count != 0)
+      {
+        $time_refresh = ceil((get_moment() - $env_nbm['start_time']) * $post_count / $treated_count);
+      }
+      else
+      {
+        $time_refresh = 0;
+      }
+      $_POST[$post_keyname] = array_diff($_POST[$post_keyname], $check_key_treated);
+
+      $must_repost = true;
+      $page['errors'][] = l10n_dec(
+        'Execution time is out, treatment must be continue [Estimated time: %d second].',
+        'Execution time is out, treatment must be continue [Estimated time: %d seconds].',
+        $time_refresh
+        );
+    }
+  }
+
+}
+
+/*
+ * Get the authorized_status for each tab
+ * return corresponding status
+ */
+function get_tab_status($mode)
+{
+  $result = ACCESS_WEBMASTER;
+  switch ($mode)
+  {
+    case 'param':
+    case 'subscribe':
+      $result = ACCESS_WEBMASTER;
+      break;
+    case 'send':
+      $result = ACCESS_ADMINISTRATOR;
+      break;
+    default:
+      $result = ACCESS_WEBMASTER;
+      break;
+  }
+  return $result;
+}
+
+/*
+ * Inserting News users
+ */
+function insert_new_data_user_mail_notification()
+{
+  global $conf, $page, $env_nbm;
+
+  // Set null mail_address empty
+  $query = '
+update
+  '.USERS_TABLE.'
+set
+  '.$conf['user_fields']['email'].' = null
+where
+  trim('.$conf['user_fields']['email'].') = \'\';';
+  pwg_query($query);
+
+  // null mail_address are not selected in the list
+  $query = '
+select
+  u.'.$conf['user_fields']['id'].' as user_id,
+  u.'.$conf['user_fields']['username'].' as username,
+  u.'.$conf['user_fields']['email'].' as mail_address
+from
+  '.USERS_TABLE.' as u left join '.USER_MAIL_NOTIFICATION_TABLE.' as m on u.'.$conf['user_fields']['id'].' = m.user_id
+where
+  u.'.$conf['user_fields']['email'].' is not null and
+  m.user_id is null
+order by
+  user_id;';
+
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) > 0)
+  {
+    $inserts = array();
+    $check_key_list = array();
+
+    while ($nbm_user = pwg_db_fetch_assoc($result))
+    {
+      // Calculate key
+      $nbm_user['check_key'] = find_available_check_key();
+
+      // Save key
+      $check_key_list[] = $nbm_user['check_key'];
+
+      // Insert new nbm_users
+      $inserts[] = array(
+        'user_id' => $nbm_user['user_id'],
+        'check_key' => $nbm_user['check_key'],
+        'enabled' => 'false' // By default if false, set to true with specific functions
+        );
+
+      $page['infos'][] = l10n(
+        'User %s [%s] added.',
+        stripslashes($nbm_user['username']),
+        get_email_address_as_display_text($nbm_user['mail_address'])
+        );
+    }
+
+    // Insert new nbm_users
+    mass_inserts(USER_MAIL_NOTIFICATION_TABLE, array('user_id', 'check_key', 'enabled'), $inserts);
+    // Update field enabled with specific function
+    $check_key_treated = do_subscribe_unsubscribe_notification_by_mail
+    (
+      true,
+      $conf['nbm_default_value_user_enabled'],
+      $check_key_list
+    );
+
+     // On timeout simulate like tabsheet send
+    if ($env_nbm['is_sendmail_timeout'])
+    {
+      $quoted_check_key_list = quote_check_key_list(array_diff($check_key_list, $check_key_treated));
+      if (count($quoted_check_key_list) != 0 )
+      {
+        $query = 'delete from '.USER_MAIL_NOTIFICATION_TABLE.' where check_key in ('.implode(",", $quoted_check_key_list).');';
+        $result = pwg_query($query);
+
+        redirect($base_url.get_query_string_diff(array(), false), l10n('Operation in progress')."\n".l10n('Please wait...'));
+      }
+    }
+  }
+}
+
+/*
+ * Apply global functions to mail content
+ * return customize mail content rendered
+ */
+function render_global_customize_mail_content($customize_mail_content)
+{
+  global $conf;
+
+  if ($conf['nbm_send_html_mail'] and !(strpos($customize_mail_content, '<') === 0))
+  {
+    // On HTML mail, detects if the content are HTML format.
+    // If it's plain text format, convert content to readable HTML
+    return nl2br(htmlspecialchars($customize_mail_content));
+  }
+  else
+  {
+    return $customize_mail_content;
+  }
+}
+
+/*
+ * Send mail for notification to all users
+ * Return list of "selected" users for 'list_to_send'
+ * Return list of "treated" check_key for 'send'
+ */
+function do_action_send_mail_notification($action = 'list_to_send', $check_key_list = array(), $customize_mail_content = '')
+{
+  global $conf, $page, $user, $lang_info, $lang, $env_nbm;
+  $return_list = array();
+
+  if (in_array($action, array('list_to_send', 'send')))
+  {
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+    $is_action_send = ($action == 'send');
+
+    // disabled and null mail_address are not selected in the list
+    $data_users = get_user_notifications('send', $check_key_list);
+
+    // List all if it's define on options or on timeout
+    $is_list_all_without_test = ($env_nbm['is_sendmail_timeout'] or $conf['nbm_list_all_enabled_users_to_send']);
+
+    // Check if exist news to list user or send mails
+    if ((!$is_list_all_without_test) or ($is_action_send))
+    {
+      if (count($data_users) > 0)
+      {
+        $datas = array();
+
+        if (!isset($customize_mail_content))
+        {
+          $customize_mail_content = $conf['nbm_complementary_mail_content'];
+        }
+
+        $customize_mail_content = 
+          trigger_event('nbm_render_global_customize_mail_content', $customize_mail_content);
+
+
+        // Prepare message after change language
+        if ($is_action_send)
+        {
+          $msg_break_timeout = l10n('Time to send mail is limited. Others mails are skipped.');
+        }
+        else
+        {
+          $msg_break_timeout = l10n('Prepared time for list of users to send mail is limited. Others users are not listed.');
+        }
+
+        // Begin nbm users environment
+        begin_users_env_nbm($is_action_send);
+
+        foreach ($data_users as $nbm_user)
+        {
+          if ((!$is_action_send) and check_sendmail_timeout())
+          {
+            // Stop fill list on 'list_to_send', if the quota is override
+            $page['infos'][] = $msg_break_timeout;
+            break;
+          }
+          if (($is_action_send) and check_sendmail_timeout())
+          {
+            // Stop fill list on 'send', if the quota is override
+            $page['errors'][] = $msg_break_timeout;
+            break;
+          }
+
+          // set env nbm user
+          set_user_on_env_nbm($nbm_user, $is_action_send);
+
+          if ($is_action_send)
+          {
+            set_make_full_url();
+            // Fill return list of "treated" check_key for 'send'
+            $return_list[] = $nbm_user['check_key'];
+
+            if ($conf['nbm_send_detailed_content'])
+            {
+               $news = news($nbm_user['last_send'], $dbnow, false, $conf['nbm_send_html_mail']);
+               $exist_data = count($news) > 0;
+            }
+            else
+            {
+              $exist_data = news_exists($nbm_user['last_send'], $dbnow);
+            }
+
+            if ($exist_data)
+            {
+              $subject = '['.$conf['gallery_title'].'] '.l10n('New photos added');
+
+              // Assign current var for nbm mail
+              assign_vars_nbm_mail_content($nbm_user);
+
+              if (!is_null($nbm_user['last_send']))
+              {
+                $env_nbm['mail_template']->assign
+                (
+                  'content_new_elements_between',
+                  array
+                  (
+                    'DATE_BETWEEN_1' => $nbm_user['last_send'],
+                    'DATE_BETWEEN_2' => $dbnow,
+                  )
+                );
+              }
+              else
+              {
+                $env_nbm['mail_template']->assign
+                (
+                  'content_new_elements_single',
+                  array
+                  (
+                    'DATE_SINGLE' => $dbnow,
+                  )
+                );
+              }
+
+              if ($conf['nbm_send_detailed_content'])
+              {
+                $env_nbm['mail_template']->assign('global_new_lines', $news);
+              }
+
+              $nbm_user_customize_mail_content = 
+                trigger_event('nbm_render_user_customize_mail_content',
+                  $customize_mail_content, $nbm_user);
+              if (!empty($nbm_user_customize_mail_content))
+              {
+                $env_nbm['mail_template']->assign
+                (
+                  'custom_mail_content', $nbm_user_customize_mail_content
+                );
+              }
+
+              if ($conf['nbm_send_html_mail'] and $conf['nbm_send_recent_post_dates'])
+              {
+                $recent_post_dates = get_recent_post_dates_array(
+                  $conf['recent_post_dates']['NBM']);
+                foreach ($recent_post_dates as $date_detail)
+                {
+                  $env_nbm['mail_template']->append
+                  (
+                    'recent_posts',
+                    array
+                    (
+                      'TITLE' => get_title_recent_post_date($date_detail),
+                      'HTML_DATA' => get_html_description_recent_post_date($date_detail)
+                    )
+                  );
+                }
+              }
+
+              $env_nbm['mail_template']->assign
+              (
+                array
+                (
+                  'GOTO_GALLERY_TITLE' => $conf['gallery_title'],
+                  'GOTO_GALLERY_URL' => get_gallery_home_url(),
+                  'SEND_AS_NAME'      => $env_nbm['send_as_name'],
+                )
+              );
+              
+              $ret = pwg_mail(
+                array(
+                  'name' => stripslashes($nbm_user['username']),
+                  'email' => $nbm_user['mail_address'],
+                  ),
+                array(
+                  'from' => $env_nbm['send_as_mail_formated'],
+                  'subject' => $subject,
+                  'email_format' => $env_nbm['email_format'],
+                  'content' => $env_nbm['mail_template']->parse('notification_by_mail', true),
+                  'content_format' => $env_nbm['email_format'],
+                  )
+                );
+
+              if ($ret)
+              {
+                inc_mail_sent_success($nbm_user);
+
+                $datas[] = array(
+                  'user_id' => $nbm_user['user_id'],
+                  'last_send' => $dbnow
+                  );
+              }
+              else
+              {
+                inc_mail_sent_failed($nbm_user);
+              }
+
+              unset_make_full_url();
+            }
+          }
+          else
+          {
+            if (news_exists($nbm_user['last_send'], $dbnow))
+            {
+              // Fill return list of "selected" users for 'list_to_send'
+              $return_list[] = $nbm_user;
+            }
+          }
+
+          // unset env nbm user
+          unset_user_on_env_nbm();
+        }
+
+        // Restore nbm environment
+        end_users_env_nbm();
+
+        if ($is_action_send)
+        {
+          mass_updates(
+            USER_MAIL_NOTIFICATION_TABLE,
+            array(
+              'primary' => array('user_id'),
+              'update' => array('last_send')
+             ),
+             $datas
+             );
+
+          display_counter_info();
+        }
+      }
+      else
+      {
+        if ($is_action_send)
+        {
+          $page['errors'][] = l10n('No user to send notifications by mail.');
+        }
+      }
+    }
+    else
+    {
+      // Quick List, don't check news
+      // Fill return list of "selected" users for 'list_to_send'
+      $return_list = $data_users;
+    }
+  }
+
+  // Return list of "selected" users for 'list_to_send'
+  // Return list of "treated" check_key for 'send'
+  return $return_list;
+}
+
+// +-----------------------------------------------------------------------+
+// | Main                                                                  |
+// +-----------------------------------------------------------------------+
+if (!isset($_GET['mode']))
+{
+  $page['mode'] = 'send';
+}
+else
+{
+  $page['mode'] = $_GET['mode'];
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(get_tab_status($page['mode']));
+
+
+// +-----------------------------------------------------------------------+
+// | Add event handler                                                     |
+// +-----------------------------------------------------------------------+
+add_event_handler('nbm_render_global_customize_mail_content', 'render_global_customize_mail_content');
+trigger_action('nbm_event_handler_added');
+
+
+// +-----------------------------------------------------------------------+
+// | Insert new users with mails                                           |
+// +-----------------------------------------------------------------------+
+if (!isset($_POST) or (count($_POST) ==0))
+{
+  // No insert data in post mode
+  insert_new_data_user_mail_notification();
+}
+
+// +-----------------------------------------------------------------------+
+// | Treatment of tab post                                                 |
+// +-----------------------------------------------------------------------+
+switch ($page['mode'])
+{
+  case 'param' :
+  {
+    if (isset($_POST['param_submit']))
+    {
+      $updated_param_count = 0;
+      // Update param
+      $result = pwg_query('select param, value from '.CONFIG_TABLE.' where param like \'nbm\\_%\'');
+      while ($nbm_user = pwg_db_fetch_assoc($result))
+      {
+        if (isset($_POST[$nbm_user['param']]))
+        {
+          $value = $_POST[$nbm_user['param']];
+
+          $query = '
+update
+'.CONFIG_TABLE.'
+set
+  value = \''. str_replace("\'", "''", $value).'\'
+where
+  param = \''.$nbm_user['param'].'\';';
+          pwg_query($query);
+          $updated_param_count += 1;
+        }
+      }
+
+      $page['infos'][] = l10n_dec(
+        '%d parameter was updated.', '%d parameters were updated.',
+        $updated_param_count
+        );
+
+      // Reload conf with new values
+      load_conf_from_db('param like \'nbm\\_%\'');
+    }
+  }
+  case 'subscribe' :
+  {
+    if (isset($_POST['falsify']) and isset($_POST['cat_true']))
+    {
+      $check_key_treated = unsubscribe_notification_by_mail(true, $_POST['cat_true']);
+      do_timeout_treatment('cat_true', $check_key_treated);
+    }
+    else
+    if (isset($_POST['trueify']) and isset($_POST['cat_false']))
+    {
+      $check_key_treated = subscribe_notification_by_mail(true, $_POST['cat_false']);
+      do_timeout_treatment('cat_false', $check_key_treated);
+    }
+    break;
+  }
+
+  case 'send' :
+  {
+    if (isset($_POST['send_submit']) and isset($_POST['send_selection']) and isset($_POST['send_customize_mail_content']))
+    {
+      $check_key_treated = do_action_send_mail_notification('send', $_POST['send_selection'], stripslashes($_POST['send_customize_mail_content']));
+      do_timeout_treatment('send_selection', $check_key_treated);
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | template initialization                                               |
+// +-----------------------------------------------------------------------+
+$template->set_filenames
+(
+  array
+  (
+    'double_select' => 'double_select.tpl',
+    'notification_by_mail'=>'notification_by_mail.tpl'
+  )
+);
+
+$template->assign
+(
+  array
+  (
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=notification_by_mail',
+    'F_ACTION'=> $base_url.get_query_string_diff(array())
+  )
+);
+
+if (is_autorize_status(ACCESS_WEBMASTER))
+{
+  // TabSheet
+  $tabsheet = new tabsheet();
+  $tabsheet->set_id('nbm');
+  $tabsheet->select($page['mode']);
+  $tabsheet->assign();
+}
+
+if ($must_repost)
+{
+  // Get name of submit button
+  $repost_submit_name = '';
+  if (isset($_POST['falsify']))
+  {
+    $repost_submit_name = 'falsify';
+  }
+  elseif (isset($_POST['trueify']))
+  {
+    $repost_submit_name = 'trueify';
+  }
+  elseif (isset($_POST['send_submit']))
+  {
+    $repost_submit_name = 'send_submit';
+  }
+
+  $template->assign('REPOST_SUBMIT_NAME', $repost_submit_name);
+}
+
+switch ($page['mode'])
+{
+  case 'param' :
+  {
+    $template->assign(
+      $page['mode'],
+      array(
+        'SEND_HTML_MAIL' => $conf['nbm_send_html_mail'],
+        'SEND_MAIL_AS' => $conf['nbm_send_mail_as'],
+        'SEND_DETAILED_CONTENT' => $conf['nbm_send_detailed_content'],
+        'COMPLEMENTARY_MAIL_CONTENT' => $conf['nbm_complementary_mail_content'],
+        'SEND_RECENT_POST_DATES' => $conf['nbm_send_recent_post_dates'],
+        ));
+    break;
+  }
+
+  case 'subscribe' :
+  {
+    $template->assign( $page['mode'], true );
+
+    $template->assign(
+      array(
+        'L_CAT_OPTIONS_TRUE' => l10n('Subscribed'),
+        'L_CAT_OPTIONS_FALSE' => l10n('Unsubscribed')
+        )
+      );
+
+    $data_users = get_user_notifications('subscribe');
+    
+    $opt_true = array();
+    $opt_true_selected = array();
+    $opt_false = array();
+    $opt_false_selected = array();
+    foreach ($data_users as $nbm_user)
+    {
+      if (get_boolean($nbm_user['enabled']))
+      {
+        $opt_true[ $nbm_user['check_key'] ] = stripslashes($nbm_user['username']).'['.get_email_address_as_display_text($nbm_user['mail_address']).']';
+        if ((isset($_POST['falsify']) and isset($_POST['cat_true']) and in_array($nbm_user['check_key'], $_POST['cat_true'])))
+        {
+          $opt_true_selected[] = $nbm_user['check_key'];
+        }
+      }
+      else
+      {
+        $opt_false[ $nbm_user['check_key'] ] = stripslashes($nbm_user['username']).'['.get_email_address_as_display_text($nbm_user['mail_address']).']';
+        if (isset($_POST['trueify']) and isset($_POST['cat_false']) and in_array($nbm_user['check_key'], $_POST['cat_false']))
+        {
+          $opt_false_selected[] = $nbm_user['check_key'];
+        }
+      }
+    }
+    $template->assign( array(
+        'category_option_true'          => $opt_true,
+        'category_option_true_selected' => $opt_true_selected,
+        'category_option_false'         => $opt_false,
+        'category_option_false_selected' => $opt_false_selected,
+        )
+    );
+    $template->assign_var_from_handle('DOUBLE_SELECT', 'double_select');
+    break;
+  }
+
+  case 'send' :
+  {
+    $tpl_var = array('users'=> array() );
+
+    $data_users = do_action_send_mail_notification('list_to_send');
+
+    $tpl_var['CUSTOMIZE_MAIL_CONTENT'] = 
+      isset($_POST['send_customize_mail_content']) 
+        ? stripslashes($_POST['send_customize_mail_content']) 
+        : $conf['nbm_complementary_mail_content'];
+
+    if  (count($data_users))
+    {
+      foreach ($data_users as $nbm_user)
+      {
+        if (
+            (!$must_repost) or // Not timeout, normal treatment
+            (($must_repost) and in_array($nbm_user['check_key'], $_POST['send_selection']))  // Must be repost, show only user to send
+            )
+        {
+          $tpl_var['users'][] = 
+            array(
+              'ID' => $nbm_user['check_key'],
+              'CHECKED' =>  ( // not check if not selected,  on init select<all
+                              isset($_POST['send_selection']) and // not init
+                              !in_array($nbm_user['check_key'], $_POST['send_selection']) // not selected
+                            )   ? '' : 'checked="checked"',
+              'USERNAME'=> stripslashes($nbm_user['username']),
+              'EMAIL' => get_email_address_as_display_text($nbm_user['mail_address']),
+              'LAST_SEND'=> $nbm_user['last_send']
+              );
+        }
+      }
+    }
+    $template->assign($page['mode'], $tpl_var);
+    break;
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | Sending html code                                                     |
+// +-----------------------------------------------------------------------+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'notification_by_mail');
+
+?>
Index: /tags/2.6.0RC1/admin/permalinks.php
===================================================================
--- /tags/2.6.0RC1/admin/permalinks.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/permalinks.php	(revision 25596)
@@ -0,0 +1,189 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function parse_sort_variables(
+    $sortable_by, $default_field,
+    $get_param, $get_rejects,
+    $template_var,
+    $anchor = '' )
+{
+  global $template;
+
+  $url_components = parse_url( $_SERVER['REQUEST_URI'] );
+
+  $base_url = $url_components['path'];
+
+  parse_str($url_components['query'], $vars);
+  $is_first = true;
+  foreach ($vars as $key => $value)
+  {
+    if (!in_array($key, $get_rejects) and $key!=$get_param)
+    {
+      $base_url .= $is_first ? '?' : '&amp;';
+      $is_first = false;
+      $base_url .= $key.'='.urlencode($value);
+    }
+  }
+
+  $ret = array();
+  foreach( $sortable_by as $field)
+  {
+    $url = $base_url;
+    $disp = '↓'; // TODO: an small image is better
+
+    if ( $field !== @$_GET[$get_param] )
+    {
+      if ( !isset($default_field) or $default_field!=$field )
+      { // the first should be the default
+        $url = add_url_params($url, array($get_param=>$field) );
+      }
+      elseif (isset($default_field) and !isset($_GET[$get_param]) )
+      {
+        $ret[] = $field;
+        $disp = '<em>'.$disp.'</em>';
+      }
+    }
+    else
+    {
+      $ret[] = $field;
+      $disp = '<em>'.$disp.'</em>';
+    }
+    if ( isset($template_var) )
+    {
+      $template->assign( $template_var.strtoupper($field),
+            '<a href="'.$url.$anchor.'" title="'.l10n('Sort order').'">'.$disp.'</a>'
+         );
+    }
+  }
+  return $ret;
+}
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_permalinks.php');
+
+$selected_cat = array();
+if ( isset($_POST['set_permalink']) and $_POST['cat_id']>0 )
+{
+  $permalink = $_POST['permalink'];
+  if ( empty($permalink) )
+    delete_cat_permalink($_POST['cat_id'], isset($_POST['save']) );
+  else
+    set_cat_permalink($_POST['cat_id'], $permalink, isset($_POST['save']) );
+  $selected_cat = array( $_POST['cat_id'] );
+}
+elseif ( isset($_GET['delete_permanent']) )
+{
+  $query = '
+DELETE FROM '.OLD_PERMALINKS_TABLE.'
+  WHERE permalink=\''.$_GET['delete_permanent'].'\'
+  LIMIT 1';
+  $result = pwg_query($query);
+  if (pwg_db_changes($result)==0)
+  {
+    $page['errors'][] = l10n('Cannot delete the old permalink !');
+  }
+}
+
+
+$template->set_filename('permalinks', 'permalinks.tpl' );
+
+// +-----------------------------------------------------------------------+
+// | tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+$page['tab'] = 'permalinks';
+include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php');
+
+
+$query = '
+SELECT
+  id, permalink,
+  CONCAT(id, " - ", name, IF(permalink IS NULL, "", " &radic;") ) AS name,
+  uppercats, global_rank
+FROM '.CATEGORIES_TABLE;
+
+display_select_cat_wrapper( $query, $selected_cat, 'categories', false );
+
+
+// --- generate display of active permalinks -----------------------------------
+$sort_by = parse_sort_variables(
+    array('id', 'name', 'permalink'), 'name',
+    'psf',
+    array('delete_permanent'),
+    'SORT_' );
+
+$query = '
+SELECT id, permalink, uppercats, global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE permalink IS NOT NULL
+';
+if ( $sort_by[0]=='id' or $sort_by[0]=='permalink' )
+{
+  $query .= ' ORDER BY '.$sort_by[0];
+}
+$categories=array();
+$result=pwg_query($query);
+while ( $row = pwg_db_fetch_assoc($result) )
+{
+  $row['name'] = get_cat_display_name_cache( $row['uppercats'] );
+  $categories[] = $row;
+}
+
+if ( $sort_by[0]=='name')
+{
+  usort($categories, 'global_rank_compare');
+}
+$template->assign( 'permalinks', $categories );
+
+// --- generate display of old permalinks --------------------------------------
+
+$sort_by = parse_sort_variables(
+    array('cat_id','permalink','date_deleted','last_hit','hit'), null,
+    'dpsf',
+    array('delete_permanent'),
+    'SORT_OLD_', '#old_permalinks' );
+
+$url_del_base = get_root_url().'admin.php?page=permalinks';
+$query = 'SELECT * FROM '.OLD_PERMALINKS_TABLE;
+if ( count($sort_by) )
+{
+  $query .= ' ORDER BY '.$sort_by[0];
+}
+$result = pwg_query($query);
+$deleted_permalinks=array();
+while ( $row = pwg_db_fetch_assoc($result) )
+{
+  $row['name'] = get_cat_display_name_cache($row['cat_id']);
+  $row['U_DELETE'] =
+      add_url_params(
+        $url_del_base,
+        array( 'delete_permanent'=> $row['permalink'] )
+      );
+  $deleted_permalinks[] = $row;
+}
+$template->assign('deleted_permalinks', $deleted_permalinks);
+$template->assign('U_HELP', get_root_url().'admin/popuphelp.php?page=permalinks');
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'permalinks');
+?>
Index: /tags/2.6.0RC1/admin/photo.php
===================================================================
--- /tags/2.6.0RC1/admin/photo.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/photo.php	(revision 25596)
@@ -0,0 +1,84 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+// +-----------------------------------------------------------------------+
+// | Basic checks                                                          |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+check_input_parameter('cat_id', $_GET, false, PATTERN_ID);
+check_input_parameter('image_id', $_GET, false, PATTERN_ID);
+
+$admin_photo_base_url = get_root_url().'admin.php?page=photo-'.$_GET['image_id'];
+
+if (isset($_GET['cat_id']))
+{
+  $query = '
+SELECT *
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$_GET['cat_id'].'
+;';
+  $category = pwg_db_fetch_assoc(pwg_query($query));
+}
+
+// +-----------------------------------------------------------------------+
+// | Tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$page['tab'] = 'properties';
+
+if (isset($_GET['tab']))
+{
+  $page['tab'] = $_GET['tab'];
+}
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('photo');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// | Load the tab                                                          |
+// +-----------------------------------------------------------------------+
+
+if ('properties' == $page['tab'])
+{
+  include(PHPWG_ROOT_PATH.'admin/picture_modify.php');
+}
+elseif ('coi' == $page['tab'])
+{
+  include(PHPWG_ROOT_PATH.'admin/picture_coi.php');
+}
+else
+{
+  include(PHPWG_ROOT_PATH.'admin/photo_'.$page['tab'].'.php');
+}
+?>
Index: /tags/2.6.0RC1/admin/photos_add.php
===================================================================
--- /tags/2.6.0RC1/admin/photos_add.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/photos_add.php	(revision 25596)
@@ -0,0 +1,81 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php');
+
+define(
+  'PHOTOS_ADD_BASE_URL',
+  get_root_url().'admin.php?page=photos_add'
+  );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                          Load configuration                           |
+// +-----------------------------------------------------------------------+
+
+$upload_form_config = get_upload_form_config();
+
+// +-----------------------------------------------------------------------+
+// |                                 Tabs                                  |
+// +-----------------------------------------------------------------------+
+if (isset($_GET['section']))
+{
+  $page['tab'] = $_GET['section'];
+}
+else
+{
+  $page['tab'] = 'direct';
+}
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('photos_add');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array(
+    'photos_add' => 'photos_add_'.$page['tab'].'.tpl'
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                             Load the tab                              |
+// +-----------------------------------------------------------------------+
+
+include(PHPWG_ROOT_PATH.'admin/photos_add_'.$page['tab'].'.php');
+?>
Index: /tags/2.6.0RC1/admin/photos_add_applications.php
===================================================================
--- /tags/2.6.0RC1/admin/photos_add_applications.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/photos_add_applications.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHOTOS_ADD_BASE_URL'))
+{
+  die ("Hacking attempt!");
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->assign(
+    array(
+      'URL_DOWNLOAD_WINDOWS' => $conf['ploader_download_windows'],
+      'URL_DOWNLOAD_MAC' => $conf['ploader_download_mac'],
+      'URL_DOWNLOAD_LINUX' => $conf['ploader_download_linux'],
+    )
+  );
+
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add');
+?>
Index: /tags/2.6.0RC1/admin/photos_add_direct.php
===================================================================
--- /tags/2.6.0RC1/admin/photos_add_direct.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/photos_add_direct.php	(revision 25596)
@@ -0,0 +1,77 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHOTOS_ADD_BASE_URL'))
+{
+  die ("Hacking attempt!");
+}
+
+// +-----------------------------------------------------------------------+
+// |                        batch management request                       |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['batch']))
+{
+  check_input_parameter('batch', $_GET, false, '/^\d+(,\d+)*$/');
+
+  $query = '
+DELETE FROM '.CADDIE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+  pwg_query($query);
+
+  $inserts = array();
+  foreach (explode(',', $_GET['batch']) as $image_id)
+  {
+    $inserts[] = array(
+      'user_id' => $user['id'],
+      'element_id' => $image_id,
+      );
+  }
+  mass_inserts(
+    CADDIE_TABLE,
+    array_keys($inserts[0]),
+    $inserts
+    );
+
+  redirect(get_root_url().'admin.php?page=batch_manager&filter=prefilter-caddie');
+}
+
+// +-----------------------------------------------------------------------+
+// |                             process form                              |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_process.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                             prepare form                              |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_prepare.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add');
+?>
Index: /tags/2.6.0RC1/admin/photos_add_ftp.php
===================================================================
--- /tags/2.6.0RC1/admin/photos_add_ftp.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/photos_add_ftp.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHOTOS_ADD_BASE_URL'))
+{
+  die ("Hacking attempt!");
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->assign(
+  'FTP_HELP_CONTENT',
+  load_language(
+    'help/photos_add_ftp.html',
+    '',
+    array('return'=>true)
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add');
+?>
Index: /tags/2.6.0RC1/admin/picture_coi.php
===================================================================
--- /tags/2.6.0RC1/admin/picture_coi.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/picture_coi.php	(revision 25596)
@@ -0,0 +1,113 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if(!defined("PHPWG_ROOT_PATH"))
+{
+  die('Hacking attempt!');
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+check_input_parameter('image_id', $_GET, false, PATTERN_ID);
+
+if (isset($_POST['submit']))
+{
+  $query = 'UPDATE '.IMAGES_TABLE;
+  if (strlen($_POST['l'])==0)
+  {
+    $query .= ' SET coi=NULL';
+  }
+  else
+  {
+    $coi = fraction_to_char($_POST['l'])
+      .fraction_to_char($_POST['t'])
+      .fraction_to_char($_POST['r'])
+      .fraction_to_char($_POST['b']);
+    $query .= ' SET coi=\''.$coi.'\'';
+  }
+  $query .= ' WHERE id='.$_GET['image_id'];
+  pwg_query($query);
+}
+
+$query = 'SELECT * FROM '.IMAGES_TABLE.' WHERE id='.$_GET['image_id'];
+$row = pwg_db_fetch_assoc( pwg_query($query) );
+
+if (isset($_POST['submit']))
+{
+  foreach(ImageStdParams::get_defined_type_map() as $params)
+  {
+    if ($params->sizing->max_crop != 0)
+    {
+      delete_element_derivatives($row, $params->type);
+    }
+  }
+  delete_element_derivatives($row, IMG_CUSTOM);
+  $uid = '&b='.time();
+  $conf['question_mark_in_urls'] = $conf['php_extension_in_urls'] = true;
+  if ($conf['derivative_url_style']==1)
+  {
+    $conf['derivative_url_style']=0; //auto
+  }
+}
+else
+{
+  $uid = '';
+}
+
+$tpl_var = array(
+  'TITLE' => render_element_name($row),
+  'ALT' => $row['file'],
+  'U_IMG' => DerivativeImage::url(IMG_LARGE, $row),
+  );
+
+if (!empty($row['coi']))
+{
+  $tpl_var['coi'] = array(
+    'l'=> char_to_fraction($row['coi'][0]),
+    't'=> char_to_fraction($row['coi'][1]),
+    'r'=> char_to_fraction($row['coi'][2]),
+    'b'=> char_to_fraction($row['coi'][3]),
+  );
+}
+
+foreach(ImageStdParams::get_defined_type_map() as $params)
+{
+  if ($params->sizing->max_crop != 0)
+  {
+    $derivative = new DerivativeImage($params, new SrcImage($row) );
+    $template->append( 'cropped_derivatives', array( 
+      'U_IMG' => $derivative->get_url().$uid,
+      'HTM_SIZE' => $derivative->get_size_htm(),
+    ) );
+  }
+}
+
+
+$template->assign($tpl_var);
+$template->set_filename('picture_coi', 'picture_coi.tpl');
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'picture_coi');
+?>
Index: /tags/2.6.0RC1/admin/picture_modify.php
===================================================================
--- /tags/2.6.0RC1/admin/picture_modify.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/picture_modify.php	(revision 25596)
@@ -0,0 +1,480 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if(!defined("PHPWG_ROOT_PATH"))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+check_input_parameter('image_id', $_GET, false, PATTERN_ID);
+check_input_parameter('cat_id', $_GET, false, PATTERN_ID);
+
+// represent
+$query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE representative_picture_id = '.$_GET['image_id'].'
+;';
+$represent_options_selected = array_from_query($query, 'id');
+
+// +-----------------------------------------------------------------------+
+// |                             delete photo                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['delete']))
+{
+  check_pwg_token();
+
+  delete_elements(array($_GET['image_id']), true);
+  invalidate_user_cache();
+
+  // where to redirect the user now?
+  //
+  // 1. if a category is available in the URL, use it
+  // 2. else use the first reachable linked category
+  // 3. redirect to gallery root
+
+  if (isset($_GET['cat_id']) and !empty($_GET['cat_id']))
+  {
+    redirect(
+      make_index_url(
+        array(
+          'category' => get_cat_info($_GET['cat_id'])
+          )
+        )
+      );
+  }
+
+  $query = '
+SELECT category_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id = '.$_GET['image_id'].'
+;';
+
+  $authorizeds = array_diff(
+    array_from_query($query, 'category_id'),
+    explode(',', calculate_permissions($user['id'], $user['status']))
+    );
+  
+  foreach ($authorizeds as $category_id)
+  {
+    redirect(
+      make_index_url(
+        array(
+          'category' => get_cat_info($category_id)
+          )
+        )
+      );
+  }
+
+  redirect(make_index_url());
+}
+
+// +-----------------------------------------------------------------------+
+// |                          synchronize metadata                         |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['sync_metadata']))
+{
+  sync_metadata(array( intval($_GET['image_id'])));
+  $page['infos'][] = l10n('Metadata synchronized from file');
+}
+
+//--------------------------------------------------------- update informations
+
+// first, we verify whether there is a mistake on the given creation date
+if (isset($_POST['date_creation_action'])
+    and 'set' == $_POST['date_creation_action'])
+{
+  if (!is_numeric($_POST['date_creation_year'])
+    or !checkdate(
+          $_POST['date_creation_month'],
+          $_POST['date_creation_day'],
+          $_POST['date_creation_year'])
+    )
+  {
+    $page['errors'][] = l10n('wrong date');
+  }
+}
+
+if (isset($_POST['submit']) and count($page['errors']) == 0)
+{
+  $data = array();
+  $data{'id'} = $_GET['image_id'];
+  $data{'name'} = $_POST['name'];
+  $data{'author'} = $_POST['author'];
+  $data['level'] = $_POST['level'];
+
+  if ($conf['allow_html_descriptions'])
+  {
+    $data{'comment'} = @$_POST['description'];
+  }
+  else
+  {
+    $data{'comment'} = strip_tags(@$_POST['description']);
+  }
+
+  if (!empty($_POST['date_creation_year']))
+  {
+    $data{'date_creation'} =
+      $_POST['date_creation_year']
+      .'-'.$_POST['date_creation_month']
+      .'-'.$_POST['date_creation_day']
+      .' '.$_POST['date_creation_time'];
+  }
+  else
+  {
+    $data{'date_creation'} = null;
+  }
+
+  single_update(
+    IMAGES_TABLE,
+    $data,
+    array('id' => $data['id'])
+    );
+
+  // time to deal with tags
+  $tag_ids = array();
+  if (!empty($_POST['tags']))
+  {
+    $tag_ids = get_tag_ids($_POST['tags']);
+  }
+  set_tags($tag_ids, $_GET['image_id']);
+
+  // association to albums
+  if (!isset($_POST['associate']))
+  {
+    $_POST['associate'] = array();
+  }
+  move_images_to_categories(array($_GET['image_id']), $_POST['associate']);
+
+  // thumbnail for albums
+  if (!isset($_POST['represent']))
+  {
+    $_POST['represent'] = array();
+  }
+  
+  $no_longer_thumbnail_for = array_diff($represent_options_selected, $_POST['represent']);
+  if (count($no_longer_thumbnail_for) > 0)
+  {
+    set_random_representant($no_longer_thumbnail_for);
+  }
+
+  $new_thumbnail_for = array_diff($_POST['represent'], $represent_options_selected);
+  if (count($new_thumbnail_for) > 0)
+  {
+    $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET representative_picture_id = '.$_GET['image_id'].'
+  WHERE id IN ('.implode(',', $new_thumbnail_for).')
+;';
+    pwg_query($query);
+  }
+
+  $represent_options_selected = $_POST['represent'];
+  
+  $page['infos'][] = l10n('Photo informations updated');
+}
+
+// tags
+$query = '
+SELECT
+    id,
+    name
+  FROM '.IMAGE_TAG_TABLE.' AS it
+    JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id
+  WHERE image_id = '.$_GET['image_id'].'
+;';
+$tag_selection = get_taglist($query);
+
+$query = '
+SELECT
+    id,
+    name
+  FROM '.TAGS_TABLE.'
+;';
+$tags = get_taglist($query, false);
+
+// retrieving direct information about picture
+$query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$_GET['image_id'].'
+;';
+$row = pwg_db_fetch_assoc(pwg_query($query));
+
+$storage_category_id = null;
+if (!empty($row['storage_category_id']))
+{
+  $storage_category_id = $row['storage_category_id'];
+}
+
+$image_file = $row['file'];
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array(
+    'picture_modify' => 'picture_modify.tpl'
+    )
+  );
+
+$admin_url_start = $admin_photo_base_url.'-properties';
+$admin_url_start.= isset($_GET['cat_id']) ? '&amp;cat_id='.$_GET['cat_id'] : '';
+
+$template->assign(
+  array(
+    'tag_selection' => $tag_selection,
+    'tags' => $tags,
+    'U_SYNC' => $admin_url_start.'&amp;sync_metadata=1',
+    'U_DELETE' => $admin_url_start.'&amp;delete=1&amp;pwg_token='.get_pwg_token(),
+
+    'PATH'=>$row['path'],
+
+    'TN_SRC' => DerivativeImage::thumb_url($row),
+
+    'NAME' =>
+      isset($_POST['name']) ?
+        stripslashes($_POST['name']) : @$row['name'],
+
+    'TITLE' => render_element_name($row),
+
+    'DIMENSIONS' => @$row['width'].' * '.@$row['height'],
+
+    'FILESIZE' => @$row['filesize'].' KB',
+
+    'REGISTRATION_DATE' => format_date($row['date_available']),
+
+    'AUTHOR' => htmlspecialchars(
+      isset($_POST['author'])
+        ? stripslashes($_POST['author'])
+        : @$row['author']
+      ),
+
+    'DESCRIPTION' =>
+      htmlspecialchars( isset($_POST['description']) ?
+        stripslashes($_POST['description']) : @$row['comment'] ),
+
+    'F_ACTION' =>
+        get_root_url().'admin.php'
+        .get_query_string_diff(array('sync_metadata'))
+    )
+  );
+
+$added_by = 'N/A';
+$query = '
+SELECT '.$conf['user_fields']['username'].' AS username
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['id'].' = '.$row['added_by'].'
+;';
+$result = pwg_query($query);
+while ($user_row = pwg_db_fetch_assoc($result))
+{
+  $row['added_by'] = $user_row['username'];
+}
+
+$intro_vars = array(
+  'file' => l10n('Original file : %s', $row['file']),
+  'add_date' => l10n('Posted %s on %s', time_since($row['date_available'], 'year'), format_date($row['date_available'], false, false)),
+  'added_by' => l10n('Added by %s', $row['added_by']),
+  'size' => $row['width'].'&times;'.$row['height'].' pixels, '.sprintf('%.2f', $row['filesize']/1024).'MB',
+  'stats' => l10n('Visited %d times', $row['hit']),
+  'id' => l10n('Numeric identifier : %d', $row['id']),
+  );
+
+if ($conf['rate'] and !empty($row['rating_score']))
+{
+  $query = '
+SELECT
+    COUNT(*)
+  FROM '.RATE_TABLE.'
+  WHERE element_id = '.$_GET['image_id'].'
+;';
+  list($row['nb_rates']) = pwg_db_fetch_row(pwg_query($query));
+  
+  $intro_vars['stats'].= ', '.sprintf(l10n('Rated %d times, score : %.2f'), $row['nb_rates'], $row['rating_score']);
+}
+
+$template->assign('INTRO', $intro_vars);
+ 
+
+if (in_array(get_extension($row['path']),$conf['picture_ext']))
+{
+  $template->assign('U_COI', get_root_url().'admin.php?page=picture_coi&amp;image_id='.$_GET['image_id']);
+}
+
+// image level options
+$selected_level = isset($_POST['level']) ? $_POST['level'] : $row['level'];
+$template->assign(
+    array(
+      'level_options'=> get_privacy_level_options(),
+      'level_options_selected' => array($selected_level)
+    )
+  );
+
+// creation date
+unset($day, $month, $year);
+
+if (isset($_POST['date_creation_action'])
+    and 'set' == $_POST['date_creation_action'])
+{
+  foreach (array('day', 'month', 'year', 'time') as $varname)
+  {
+    $$varname = $_POST['date_creation_'.$varname];
+  }
+}
+else if (isset($row['date_creation']) and !empty($row['date_creation']))
+{
+  list($year, $month, $day) = explode('-', substr($row['date_creation'],0,10));
+  $time = substr($row['date_creation'],11);
+}
+else
+{
+  list($year, $month, $day) = array('', 0, 0);
+  $time = '00:00:00';
+}
+
+
+$month_list = $lang['month'];
+$month_list[0]='------------';
+ksort($month_list);
+
+$template->assign(
+    array(
+      'DATE_CREATION_DAY_VALUE' => (int)$day,
+      'DATE_CREATION_MONTH_VALUE' => (int)$month,
+      'DATE_CREATION_YEAR_VALUE' => $year,
+      'DATE_CREATION_TIME_VALUE' => $time,
+      'month_list' => $month_list,
+      )
+    );
+
+$query = '
+SELECT category_id, uppercats
+  FROM '.IMAGE_CATEGORY_TABLE.' AS ic
+    INNER JOIN '.CATEGORIES_TABLE.' AS c
+      ON c.id = ic.category_id
+  WHERE image_id = '.$_GET['image_id'].'
+;';
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $name =
+    get_cat_display_name_cache(
+      $row['uppercats'],
+      get_root_url().'admin.php?page=album-'
+      );
+
+  if ($row['category_id'] == $storage_category_id)
+  {
+    $template->assign('STORAGE_CATEGORY', $name);
+  }
+  else
+  {
+    $template->append('related_categories', $name);
+  }
+}
+
+// jump to link
+//
+// 1. find all linked categories that are reachable for the current user.
+// 2. if a category is available in the URL, use it if reachable
+// 3. if URL category not available or reachable, use the first reachable
+//    linked category
+// 4. if no category reachable, no jumpto link
+
+$query = '
+SELECT category_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id = '.$_GET['image_id'].'
+;';
+
+$authorizeds = array_diff(
+  array_from_query($query, 'category_id'),
+  explode(
+    ',',
+    calculate_permissions($user['id'], $user['status'])
+    )
+  );
+
+if (isset($_GET['cat_id'])
+    and in_array($_GET['cat_id'], $authorizeds))
+{
+  $url_img = make_picture_url(
+    array(
+      'image_id' => $_GET['image_id'],
+      'image_file' => $image_file,
+      'category' => $cache['cat_names'][ $_GET['cat_id'] ],
+      )
+    );
+}
+else
+{
+  foreach ($authorizeds as $category)
+  {
+    $url_img = make_picture_url(
+      array(
+        'image_id' => $_GET['image_id'],
+        'image_file' => $image_file,
+        'category' => $cache['cat_names'][ $category ],
+        )
+      );
+    break;
+  }
+}
+
+if (isset($url_img))
+{
+  $template->assign( 'U_JUMPTO', $url_img );
+}
+
+// associate to albums
+$query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id = category_id
+  WHERE image_id = '.$_GET['image_id'].'
+;';
+$associate_options_selected = array_from_query($query, 'id');
+
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+;';
+display_select_cat_wrapper($query, $associate_options_selected, 'associate_options');
+display_select_cat_wrapper($query, $represent_options_selected, 'represent_options');
+
+//----------------------------------------------------------- sending html code
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'picture_modify');
+?>
Index: /tags/2.6.0RC1/admin/plugin.php
===================================================================
--- /tags/2.6.0RC1/admin/plugin.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/plugin.php	(revision 25596)
@@ -0,0 +1,62 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+check_status(ACCESS_ADMINISTRATOR);
+
+$sections = explode('/', $_GET['section'] );
+for ($i=0; $i<count($sections); $i++)
+{
+  if (empty($sections[$i]) or $sections[$i]=='..')
+  {
+    unset($sections[$i]);
+    $i--;
+  }
+}
+
+if (count($sections)<2)
+{
+  die('Invalid plugin URL');
+}
+
+$plugin_id = $sections[0];
+if ( !isset($pwg_loaded_plugins[$plugin_id]) )
+{
+  die('Invalid URL - plugin '.$plugin_id.' not active');
+}
+
+$filename = PHPWG_PLUGINS_PATH.implode('/', $sections);
+if (is_file($filename))
+{
+  include_once($filename);
+}
+else
+{
+  die('Missing file '.$filename);
+}
+?>
Index: /tags/2.6.0RC1/admin/plugins.php
===================================================================
--- /tags/2.6.0RC1/admin/plugins.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/plugins.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=plugins';
+
+if (isset($_GET['tab']))
+  $page['tab'] = $_GET['tab'];
+else
+  $page['tab'] = 'installed';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('plugins');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+if ($page['tab'] == 'update')
+  include(PHPWG_ROOT_PATH.'admin/updates_ext.php');
+else
+  include(PHPWG_ROOT_PATH.'admin/plugins_'.$page['tab'].'.php');
+
+?>
Index: /tags/2.6.0RC1/admin/plugins_installed.php
===================================================================
--- /tags/2.6.0RC1/admin/plugins_installed.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/plugins_installed.php	(revision 25596)
@@ -0,0 +1,209 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php');
+
+$template->set_filenames(array('plugins' => 'plugins_installed.tpl'));
+
+// should we display details on plugins?
+if (isset($_GET['show_details']))
+{
+  if (1 == $_GET['show_details'])
+  {
+    $show_details = true;
+  }
+  else
+  {
+    $show_details = false;
+  }
+
+  pwg_set_session_var('plugins_show_details', $show_details);
+}
+elseif (null != pwg_get_session_var('plugins_show_details'))
+{
+  $show_details = pwg_get_session_var('plugins_show_details');
+}
+else
+{
+  $show_details = false;
+}
+
+$base_url = get_root_url().'admin.php?page='.$page['page'];
+$pwg_token = get_pwg_token();
+$action_url = $base_url.'&amp;plugin='.'%s'.'&amp;pwg_token='.$pwg_token;
+
+$plugins = new plugins();
+
+//--------------------------------------------------perform requested actions
+if (isset($_GET['action']) and isset($_GET['plugin']))
+{
+  if (!is_webmaster())
+  {
+    $page['errors'][] = l10n('Webmaster status is required.');
+  }
+  else
+  {
+    check_pwg_token();
+
+    $page['errors'] = $plugins->perform_action($_GET['action'], $_GET['plugin']);
+
+    if (empty($page['errors']))
+    {
+      if ($_GET['action'] == 'activate' or $_GET['action'] == 'deactivate')
+      {
+        $template->delete_compiled_templates();
+      }
+      redirect($base_url);
+    }
+  }
+}
+
+//--------------------------------------------------------Incompatible Plugins
+if (isset($_GET['incompatible_plugins']))
+{
+  $incompatible_plugins = array();
+  foreach ($plugins->get_incompatible_plugins() as $plugin => $version)
+  {
+    if ($plugin == '~~expire~~') continue;
+    $incompatible_plugins[] = $plugin;
+    
+  }
+  echo json_encode($incompatible_plugins);
+  exit;
+}
+
+// +-----------------------------------------------------------------------+
+// |                     start template output                             |
+// +-----------------------------------------------------------------------+
+
+$plugins->sort_fs_plugins('name');
+$merged_extensions = $plugins->get_merged_extensions();
+$merged_plugins = false;
+$tpl_plugins = array();
+$active_plugins = 0;
+
+foreach($plugins->fs_plugins as $plugin_id => $fs_plugin)
+{
+  if (isset($_SESSION['incompatible_plugins'][$plugin_id])
+    and $fs_plugin['version'] != $_SESSION['incompatible_plugins'][$plugin_id])
+  {
+    // Incompatible plugins must be reinitilized
+    unset($_SESSION['incompatible_plugins']);
+  }
+
+  $tpl_plugin = array(
+    'ID' => $plugin_id,
+    'NAME' => $fs_plugin['name'],
+    'VISIT_URL' => $fs_plugin['uri'],
+    'VERSION' => $fs_plugin['version'],
+    'DESC' => $fs_plugin['description'],
+    'AUTHOR' => $fs_plugin['author'],
+    'AUTHOR_URL' => @$fs_plugin['author uri'],
+    'U_ACTION' => sprintf($action_url, $plugin_id),
+    );
+
+  if (isset($plugins->db_plugins_by_id[$plugin_id]))
+  {
+    $tpl_plugin['STATE'] = $plugins->db_plugins_by_id[$plugin_id]['state'];
+  }
+  else
+  {
+    $tpl_plugin['STATE'] = 'inactive';
+  }
+
+  if (isset($fs_plugin['extension']) and isset($merged_extensions[$fs_plugin['extension']]))
+  {
+    // Deactivate manually plugin from database
+    $query = 'UPDATE '.PLUGINS_TABLE.' SET state=\'inactive\' WHERE id=\''.$plugin_id.'\'';
+    pwg_query($query);
+
+    $tpl_plugin['STATE'] = 'merged';
+    $tpl_plugin['DESC'] = l10n('THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.');
+    $merged_plugins = true;
+  }
+  
+  if ($tpl_plugin['STATE'] == 'active')
+  {
+    $active_plugins++;
+  }
+
+  $tpl_plugins[] = $tpl_plugin;
+}
+
+$template->append('plugin_states', 'active');
+$template->append('plugin_states', 'inactive');
+
+if ($merged_plugins)
+{
+  $template->append('plugin_states', 'merged');
+}
+
+$missing_plugin_ids = array_diff(
+  array_keys($plugins->db_plugins_by_id),
+  array_keys($plugins->fs_plugins)
+  );
+
+if (count($missing_plugin_ids) > 0)
+{
+  foreach ($missing_plugin_ids as $plugin_id)
+  {
+    $tpl_plugins[] = array(
+      'NAME' => $plugin_id,
+      'VERSION' => $plugins->db_plugins_by_id[$plugin_id]['version'],
+      'DESC' => l10n('ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'),
+      'U_ACTION' => sprintf($action_url, $plugin_id),
+      'STATE' => 'missing',
+      );
+  }
+  $template->append('plugin_states', 'missing');
+}
+
+// sort plugins by state then by name
+function cmp($a, $b)
+{ 
+  $s = array('merged' => 0, 'missing' => 1, 'active' => 2, 'inactive' => 3);
+  
+  if($a['STATE'] == $b['STATE'])
+    return strcasecmp($a['NAME'], $b['NAME']); 
+  else
+    return $s[$a['STATE']] >= $s[$b['STATE']]; 
+}
+usort($tpl_plugins, 'cmp');
+
+$template->assign(
+  array(
+    'plugins' => $tpl_plugins,
+    'active_plugins' => $active_plugins,
+    'PWG_TOKEN' => $pwg_token,
+    'base_url' => $base_url,
+    'show_details' => $show_details,
+    )
+  );
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugins');
+?>
Index: /tags/2.6.0RC1/admin/plugins_new.php
===================================================================
--- /tags/2.6.0RC1/admin/plugins_new.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/plugins_new.php	(revision 25596)
@@ -0,0 +1,140 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php');
+
+$template->set_filenames(array('plugins' => 'plugins_new.tpl'));
+
+$base_url = get_root_url().'admin.php?page='.$page['page'].'&tab='.$page['tab'];
+
+$plugins = new plugins();
+
+//------------------------------------------------------automatic installation
+if (isset($_GET['revision']) and isset($_GET['extension']))
+{
+  if (!is_webmaster())
+  {
+    $page['errors'][] = l10n('Webmaster status is required.');
+  }
+  else
+  {
+    check_pwg_token();
+    
+    $install_status = $plugins->extract_plugin_files('install', $_GET['revision'], $_GET['extension']);
+
+    redirect($base_url.'&installstatus='.$install_status);
+  }
+}
+
+//--------------------------------------------------------------install result
+if (isset($_GET['installstatus']))
+{
+  switch ($_GET['installstatus'])
+  {
+    case 'ok':
+      $page['infos'][] = l10n('Plugin has been successfully copied');
+      $page['infos'][] = l10n('You might go to plugin list to install and activate it.');
+      break;
+
+    case 'temp_path_error':
+      $page['errors'][] = l10n('Can\'t create temporary file.');
+      break;
+
+    case 'dl_archive_error':
+      $page['errors'][] = l10n('Can\'t download archive.');
+      break;
+
+    case 'archive_error':
+      $page['errors'][] = l10n('Can\'t read or extract archive.');
+      break;
+
+    default:
+      $page['errors'][] = l10n('An error occured during extraction (%s).', htmlspecialchars($_GET['installstatus']));
+      $page['errors'][] = l10n('Please check "plugins" folder and sub-folders permissions (CHMOD).');
+  }  
+}
+
+//---------------------------------------------------------------Order options
+$template->assign('order_options',
+  array(
+    'date' => l10n('Post date'),
+    'revision' => l10n('Last revisions'),
+    'name' => l10n('Name'),
+    'author' => l10n('Author'),
+    'downloads' => l10n('Number of downloads')));
+
+// +-----------------------------------------------------------------------+
+// |                     start template output                             |
+// +-----------------------------------------------------------------------+
+if ($plugins->get_server_plugins(true))
+{
+  /* order plugins */
+  if (pwg_get_session_var('plugins_new_order') != null)
+  {
+    $order_selected = pwg_get_session_var('plugins_new_order');
+    $plugins->sort_server_plugins($order_selected);
+    $template->assign('order_selected', $order_selected);
+  }
+  else
+  {
+    $plugins->sort_server_plugins('date');
+    $template->assign('order_selected', 'date');
+  }
+
+  foreach($plugins->server_plugins as $plugin)
+  {
+    $ext_desc = trim($plugin['extension_description'], " \n\r");
+    list($small_desc) = explode("\n", wordwrap($ext_desc, 200));
+
+    $url_auto_install = htmlentities($base_url)
+      . '&amp;revision=' . $plugin['revision_id']
+      . '&amp;extension=' . $plugin['extension_id']
+      . '&amp;pwg_token='.get_pwg_token()
+    ;
+
+    $template->append('plugins', array(
+      'ID' => $plugin['extension_id'],
+      'EXT_NAME' => $plugin['extension_name'],
+      'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$plugin['extension_id'],
+      'SMALL_DESC' => trim($small_desc, " \r\n"),
+      'BIG_DESC' => $ext_desc,
+      'VERSION' => $plugin['revision_name'],
+      'REVISION_DATE' => preg_replace('/[^0-9]/', '', $plugin['revision_date']),
+      'AUTHOR' => $plugin['author_name'],
+      'DOWNLOADS' => $plugin['extension_nb_downloads'],
+      'URL_INSTALL' => $url_auto_install,
+      'URL_DOWNLOAD' => $plugin['download_url'] . '&amp;origin=piwigo_download'));
+  }
+}
+else
+{
+  $page['errors'][] = l10n('Can\'t connect to server.');
+}
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugins');
+?>
Index: /tags/2.6.0RC1/admin/popuphelp.php
===================================================================
--- /tags/2.6.0RC1/admin/popuphelp.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/popuphelp.php	(revision 25596)
@@ -0,0 +1,82 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH', '../');
+define('PWG_HELP', true);
+define('IN_ADMIN', true);
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+$page['body_id'] = 'thePopuphelpPage';
+$title = l10n('Piwigo Help');
+$page['page_banner'] = '<h1>'.$title.'</h1>';
+$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+if
+  (
+    isset($_GET['page'])
+    and preg_match('/^[a-z_]*$/', $_GET['page'])
+  )
+{
+  $help_content =
+    load_language('help/'.$_GET['page'].'.html', '', array('return'=>true) );
+
+  if ($help_content == false)
+  {
+    $help_content = '';
+  }
+
+  $help_content = trigger_event(
+    'get_popup_help_content', $help_content, $_GET['page']);
+}
+else
+{
+  die('Hacking attempt!');
+}
+
+$template->set_filename('popuphelp','popuphelp.tpl');
+
+$template->assign(
+  array
+  (
+    'HELP_CONTENT' => $help_content
+  ));
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->pparse('popuphelp');
+
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+
+?>
Index: /tags/2.6.0RC1/admin/profile.php
===================================================================
--- /tags/2.6.0RC1/admin/profile.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/profile.php	(revision 25596)
@@ -0,0 +1,47 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") ) die ("Hacking attempt!");
+
+$edit_user = build_user( $_GET['user_id'], false );
+
+if (!empty($_POST))
+{
+  check_pwg_token();
+}
+
+include_once(PHPWG_ROOT_PATH.'profile.php');
+
+$errors = array();
+save_profile_from_post($edit_user, $errors);
+
+load_profile_in_template(
+  get_root_url().'admin.php?page=profile&amp;user_id='.$edit_user['id'],
+  get_root_url().'admin.php?page=user_list',
+  $edit_user
+  );
+$page['errors'] = array_merge($page['errors'], $errors);
+
+$template->set_filename('profile', 'profile.tpl');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'profile');
+?>
Index: /tags/2.6.0RC1/admin/rating.php
===================================================================
--- /tags/2.6.0RC1/admin/rating.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/rating.php	(revision 25596)
@@ -0,0 +1,267 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+$tabsheet = new tabsheet();
+$tabsheet->set_id('rating');
+$tabsheet->select('rating');
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// |                            initialization                             |
+// +-----------------------------------------------------------------------+
+if (isset($_GET['start']) and is_numeric($_GET['start']))
+{
+  $start = $_GET['start'];
+}
+else
+{
+  $start = 0;
+}
+
+$elements_per_page=10;
+if (isset($_GET['display']) and is_numeric($_GET['display']))
+{
+  $elements_per_page = $_GET['display'];
+}
+
+$order_by_index=0;
+if (isset($_GET['order_by']) and is_numeric($_GET['order_by']))
+{
+  $order_by_index = $_GET['order_by'];
+}
+
+$page['user_filter'] = '';
+if (isset($_GET['users']))
+{
+  if ($_GET['users'] == 'user')
+  {
+    $page['user_filter'] = ' AND r.user_id <> '.$conf['guest_id'];
+  }
+  elseif ($_GET['users'] == 'guest')
+  {
+    $page['user_filter'] = ' AND r.user_id = '.$conf['guest_id'];
+  }
+}
+
+if (isset($_GET['del']))
+{
+  include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
+  $del_params = urldecode( $_GET['del'] );
+  parse_str($del_params, $vars);
+  if ( !is_numeric($vars['e']) or !is_numeric($vars['u']) )
+  {
+    die('Hacking attempt');
+  }
+  $query = '
+DELETE FROM '. RATE_TABLE .'
+WHERE element_id=' . $vars['e'] . '
+AND user_id=' . $vars['u'] . '
+AND anonymous_id=\'' . $vars['a'] . '\'
+;';
+  pwg_query($query);
+  update_rating_score( $vars['e'] );
+}
+
+$users = array();
+$query = '
+SELECT '.$conf['user_fields']['username'].' as username, '.$conf['user_fields']['id'].' as id
+  FROM '.USERS_TABLE.'
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $users[$row['id']]=stripslashes($row['username']);
+}
+
+
+$query = 'SELECT COUNT(DISTINCT(r.element_id))
+FROM '.RATE_TABLE.' AS r
+WHERE 1=1'. $page['user_filter'];
+list($nb_images) = pwg_db_fetch_row(pwg_query($query));
+
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filename('rating', 'rating.tpl');
+
+$template->assign(
+  array(
+    'navbar' => create_navigation_bar(
+      PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start','del')),
+      $nb_images,
+      $start,
+      $elements_per_page
+      ),
+    'F_ACTION' => PHPWG_ROOT_PATH.'admin.php',
+    'DISPLAY' => $elements_per_page,
+    'NB_ELEMENTS' => $nb_images,
+    )
+  );
+
+
+
+$available_order_by= array(
+    array(l10n('Rate date'), 'recently_rated DESC'),
+    array(l10n('Rating score'), 'score DESC'),
+    array(l10n('Average rate'), 'avg_rates DESC'),
+    array(l10n('Number of rates'), 'nb_rates DESC'),
+    array(l10n('Sum of rates'), 'sum_rates DESC'),
+    array(l10n('File name'), 'file DESC'),
+    array(l10n('Creation date'), 'date_creation DESC'),
+    array(l10n('Post date'), 'date_available DESC'),
+  );
+
+for ($i=0; $i<count($available_order_by); $i++)
+{
+  $template->append(
+    'order_by_options',
+    $available_order_by[$i][0]
+    );
+}
+$template->assign('order_by_options_selected', array($order_by_index) );
+
+
+$user_options = array(
+  'all'   => l10n('all'),
+  'user'  => l10n('Users'),
+  'guest' => l10n('Guests'),
+  );
+
+$template->assign('user_options', $user_options );
+$template->assign('user_options_selected', array(@$_GET['users']) );
+
+
+$query = '
+SELECT i.id,
+    i.path,
+    i.file,
+    i.representative_ext,
+    i.rating_score       AS score,
+    MAX(r.date)          AS recently_rated,
+    ROUND(AVG(r.rate),2) AS avg_rates,
+    COUNT(r.rate)        AS nb_rates,
+    SUM(r.rate)          AS sum_rates
+  FROM '.RATE_TABLE.' AS r
+    LEFT JOIN '.IMAGES_TABLE.' AS i ON r.element_id = i.id
+  WHERE 1 = 1 ' . $page['user_filter'] . '
+  GROUP BY i.id,
+        i.path,
+        i.file,
+        i.representative_ext,
+        i.rating_score,
+        r.element_id
+  ORDER BY ' . $available_order_by[$order_by_index][1] .'
+  LIMIT '.$elements_per_page.' OFFSET '.$start.'
+;';
+
+$images = array();
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $images[] = $row;
+}
+
+$template->assign( 'images', array() );
+foreach ($images as $image)
+{
+  $thumbnail_src = DerivativeImage::thumb_url($image);
+
+  $image_url = get_root_url().'admin.php?page=photo-'.$image['id'];
+
+  $query = 'SELECT *
+FROM '.RATE_TABLE.' AS r
+WHERE r.element_id='.$image['id'] . '
+ORDER BY date DESC;';
+  $result = pwg_query($query);
+  $nb_rates = pwg_db_num_rows($result);
+
+  $tpl_image = 
+     array(
+       'U_THUMB' => $thumbnail_src,
+       'U_URL' => $image_url,
+			 'SCORE_RATE' => $image['score'],
+       'AVG_RATE' => $image['avg_rates'],
+       'SUM_RATE' => $image['sum_rates'],
+       'NB_RATES' => (int)$image['nb_rates'],
+       'NB_RATES_TOTAL' => (int)$nb_rates,
+       'FILE' => $image['file'],
+       'rates'  => array()
+   );
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+
+    $url_del = PHPWG_ROOT_PATH.'admin.php'.
+                get_query_string_diff(array('del'));
+
+    $del_param = 'e='.$image['id'].
+                 '&u='.$row['user_id'].
+                 '&a='.$row['anonymous_id'];
+
+    $url_del .= '&amp;del='.urlencode(urlencode($del_param));
+
+    if ( isset($users[$row['user_id']]) )
+    {
+      $user_rate = $users[$row['user_id']];
+    }
+    else
+    {
+      $user_rate = '? '. $row['user_id'];
+    }
+    if ( strlen($row['anonymous_id'])>0 )
+    {
+      $user_rate .= '('.$row['anonymous_id'].')';
+    }
+
+    $tpl_image['rates'][] =
+       array(
+         'DATE' => /*format_date*/($row['date']),
+         'RATE' => $row['rate'],
+         'USER' => $user_rate,
+         'U_DELETE' => $url_del
+     );
+  }
+  $template->append( 'images', $tpl_image );
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'rating');
+?>
Index: /tags/2.6.0RC1/admin/rating_user.php
===================================================================
--- /tags/2.6.0RC1/admin/rating_user.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/rating_user.php	(revision 25596)
@@ -0,0 +1,224 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die ("Hacking attempt!");
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+$tabsheet = new tabsheet();
+$tabsheet->set_id('rating');
+$tabsheet->select('rating_user');
+$tabsheet->assign();
+
+$filter_min_rates = 2;
+if (isset($_GET['f_min_rates']))
+{
+  $filter_min_rates = (int)$_GET['f_min_rates'];
+}
+
+// build users
+global $conf;
+$query = 'SELECT DISTINCT
+  u.'.$conf['user_fields']['id'].' AS id,
+  u.'.$conf['user_fields']['username'].' AS name,
+  ui.status
+  FROM '.USERS_TABLE.' AS u INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON u.'.$conf['user_fields']['id'].' = ui.user_id';
+
+$users_by_id = array();
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $users_by_id[(int)$row['id']] = array(
+    'name' => $row['name'],
+    'anon' => is_autorize_status(ACCESS_CLASSIC, $row['status']) ? false : true
+  );
+}
+
+$by_user_rating_model = array( 'rates' => array() );
+foreach($conf['rate_items'] as $rate)
+{
+  $by_user_rating_model['rates'][$rate] = array();
+}
+
+
+$image_ids = array();
+$by_user_ratings = array();
+$query = '
+SELECT * FROM '.RATE_TABLE.' ORDER by date DESC';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if (!isset($users_by_id[$row['user_id']]))
+  {
+    $users_by_id[$row['user_id']] = array('name' => '???'.$row['user_id'], 'anon' => false);
+  }
+  $usr = $users_by_id[$row['user_id']];
+  if ($usr['anon'])
+  {
+    $user_key = $usr['name'].'('.$row['anonymous_id'].')';
+  }
+  else
+  {
+    $user_key = $usr['name'];
+  }
+  $rating = & $by_user_ratings[$user_key];
+  if ( is_null($rating) )
+  {
+    $rating = $by_user_rating_model;
+    $rating['uid'] = (int)$row['user_id'];
+    $rating['aid'] = $usr['anon'] ? $row['anonymous_id'] : '';
+  }
+  $rating['rates'][$row['rate']][] = array(
+    'id' => $row['element_id'],
+    'date' => $row['date'],
+  );
+  $image_ids[$row['element_id']] = 1;
+  unset($rating);
+}
+
+// get image tn urls
+$image_urls = array();
+if (count($image_ids) > 0 )
+{
+  $query = 'SELECT id, name, file, path, representative_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', array_keys($image_ids)).')';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $image_urls[ $row['id'] ] = array(
+      'tn' => DerivativeImage::thumb_url($row),
+      'page' => make_picture_url( array('image_id'=>$row['id'], 'image_file'=>$row['file']) ),
+    );
+  }
+}
+
+$query='SELECT element_id,
+    AVG(rate) AS avg
+  FROM '.RATE_TABLE.'
+  GROUP BY element_id';
+$all_img_sum = array();
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $all_img_sum[(int)$row['element_id']] = array( 'avg'=>(float)$row['avg'] );
+}
+
+foreach($by_user_ratings as $id => &$rating)
+{
+  $c=0; $s=0; $ss=0; $consensus_dev=0;
+  foreach($rating['rates'] as $rate => $rates)
+  {
+    $ct = count($rates);
+    $c += $ct;
+    $s += $ct * $rate;
+    $ss += $ct * $rate * $rate;
+    foreach($rates as $id_date)
+    {
+      $consensus_dev += abs($rate - $all_img_sum[$id_date['id']]['avg']);
+    }
+  }
+
+  $consensus_dev /= $c;
+
+  $var = ($ss - $s*$s/$c)/$c;
+  $rating += array(
+    'id' => $id,
+    'count' => $c,
+    'avg' => $s/$c,
+    'cv'  => $s==0 ? -1 : sqrt($var)/($s/$c), // http://en.wikipedia.org/wiki/Coefficient_of_variation
+    'cd'  => $consensus_dev
+  );
+}
+unset($rating);
+
+// filter
+foreach($by_user_ratings as $id => $rating)
+{
+  if ($rating['count'] <= $filter_min_rates)
+  {
+    unset($by_user_ratings[$id]);
+  }
+}
+
+
+function avg_compare($a, $b)
+{
+  $d = $a['avg'] - $b['avg'];
+  return ($d==0) ? 0 : ($d<0 ? -1 : 1);
+}
+
+function count_compare($a, $b)
+{
+  $d = $a['count'] - $b['count'];
+  return ($d==0) ? 0 : ($d<0 ? -1 : 1);
+}
+
+function cv_compare($a, $b)
+{
+  $d = $b['cv'] - $a['cv']; //desc
+  return ($d==0) ? 0 : ($d<0 ? -1 : 1);
+}
+
+function consensus_dev_compare($a, $b)
+{
+  $d = $b['cd'] - $a['cd']; //desc
+  return ($d==0) ? 0 : ($d<0 ? -1 : 1);
+}
+
+$order_by_index=3;
+if (isset($_GET['order_by']) and is_numeric($_GET['order_by']))
+{
+  $order_by_index = $_GET['order_by'];
+}
+
+$available_order_by= array(
+    array(l10n('Average rate'), 'avg_compare'),
+    array(l10n('Number of rates'), 'count_compare'),
+    array(l10n('Variation'), 'cv_compare'),
+    array(l10n('Consensus deviation'), 'consensus_dev_compare'),
+  );
+
+for ($i=0; $i<count($available_order_by); $i++)
+{
+  $template->append(
+    'order_by_options',
+    $available_order_by[$i][0]
+    );
+}
+$template->assign('order_by_options_selected', array($order_by_index) );
+
+$x = uasort($by_user_ratings, $available_order_by[$order_by_index][1] );
+
+$template->assign( array(
+  'F_ACTION' => get_root_url().'admin.php',
+  'F_MIN_RATES' => $filter_min_rates,
+  'available_rates' => $conf['rate_items'],
+  'ratings' => $by_user_ratings,
+  'image_urls' => $image_urls,
+  'TN_WIDTH' => 28+2*ImageStdParams::get_by_type(IMG_THUMB)->sizing->ideal_size[0],
+  ) );
+$template->set_filename('rating', 'rating_user.tpl');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'rating');
+
+?>
Index: /tags/2.6.0RC1/admin/site_manager.php
===================================================================
--- /tags/2.6.0RC1/admin/site_manager.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/site_manager.php	(revision 25596)
@@ -0,0 +1,187 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+if (!$conf['enable_synchronization'])
+{
+  die('synchronization is disabled');
+}
+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!empty($_POST) or isset($_GET['action']))
+{
+  check_pwg_token();
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array('site_manager'=>'site_manager.tpl'));
+
+// +-----------------------------------------------------------------------+
+// |                        new site creation form                         |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']) and !empty($_POST['galleries_url']))
+{
+  $is_remote = url_is_remote( $_POST['galleries_url'] );
+  if ($is_remote)
+  {
+    fatal_error('remote sites not supported');
+  }
+  $url = preg_replace('/[\/]*$/', '', $_POST['galleries_url']);
+  $url.= '/';
+  if ( ! (strpos($url, '.') === 0 ) )
+  {
+    $url = './' . $url;
+  }
+
+  // site must not exists
+  $query = '
+SELECT COUNT(id) AS count
+  FROM '.SITES_TABLE.'
+  WHERE galleries_url = \''.$url.'\'
+;';
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+  if ($row['count'] > 0)
+  {
+    $page['errors'][] = l10n('This site already exists').' ['.$url.']';
+  }
+  if (count($page['errors']) == 0)
+  {
+    if ( ! file_exists($url) )
+    {
+      $page['errors'][] = l10n('Directory does not exist').' ['.$url.']';
+    }
+  }
+
+  if (count($page['errors']) == 0)
+  {
+    $query = '
+INSERT INTO '.SITES_TABLE.'
+  (galleries_url)
+  VALUES
+  (\''.$url.'\')
+;';
+    pwg_query($query);
+    $page['infos'][] = $url.' '.l10n('created');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                            actions on site                            |
+// +-----------------------------------------------------------------------+
+if (isset($_GET['site']) and is_numeric($_GET['site']))
+{
+  $page['site'] = $_GET['site'];
+}
+if (isset($_GET['action']) and isset($page['site']))
+{
+  $query = '
+SELECT galleries_url
+  FROM '.SITES_TABLE.'
+  WHERE id = '.$page['site'].'
+;';
+  list($galleries_url) = pwg_db_fetch_row(pwg_query($query));
+  switch($_GET['action'])
+  {
+    case 'delete' :
+    {
+      delete_site($page['site']);
+      $page['infos'][] = $galleries_url.' '.l10n('deleted');
+      break;
+    }
+  }
+}
+
+$template->assign(
+  array(
+    'F_ACTION'  => get_root_url().'admin.php'.get_query_string_diff(array('action','site','pwg_token')),
+    'PWG_TOKEN' => get_pwg_token(),
+    )
+  );
+
+$query = '
+SELECT c.site_id, COUNT(DISTINCT c.id) AS nb_categories, COUNT(i.id) AS nb_images
+  FROM '.CATEGORIES_TABLE.' AS c LEFT JOIN '.IMAGES_TABLE.' AS i
+  ON c.id=i.storage_category_id 
+  WHERE c.site_id IS NOT NULL
+  GROUP BY c.site_id
+;';
+$sites_detail = hash_from_query($query, 'site_id'); 
+
+$query = '
+SELECT *
+  FROM '.SITES_TABLE.'
+;';
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $is_remote = url_is_remote($row['galleries_url']);
+  $base_url = PHPWG_ROOT_PATH.'admin.php';
+  $base_url.= '?page=site_manager';
+  $base_url.= '&amp;site='.$row['id'];
+  $base_url.= '&amp;pwg_token='.get_pwg_token();
+  $base_url.= '&amp;action=';
+
+  $update_url = PHPWG_ROOT_PATH.'admin.php';
+  $update_url.= '?page=site_update';
+  $update_url.= '&amp;site='.$row['id'];
+  
+  $tpl_var =
+    array(
+      'NAME' => $row['galleries_url'],
+      'TYPE' => l10n( $is_remote ? 'Remote' : 'Local' ),
+      'CATEGORIES' => (int)@$sites_detail[$row['id']]['nb_categories'],
+      'IMAGES' => (int)@$sites_detail[$row['id']]['nb_images'],
+      'U_SYNCHRONIZE' => $update_url
+     );
+     
+  if ($row['id'] != 1)
+  {
+    $tpl_var['U_DELETE'] = $base_url.'delete';
+  }
+
+  $plugin_links = array();
+  //$plugin_links is array of array composed of U_HREF, U_HINT & U_CAPTION
+  $plugin_links =
+    trigger_event('get_admins_site_links',
+      $plugin_links, $row['id'], $is_remote);
+  $tpl_var['plugin_links'] = $plugin_links;
+
+  $template->append('sites', $tpl_var);
+}
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'site_manager');
+?>
Index: /tags/2.6.0RC1/admin/site_reader_local.php
===================================================================
--- /tags/2.6.0RC1/admin/site_reader_local.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/site_reader_local.php	(revision 25596)
@@ -0,0 +1,187 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// provides data for site synchronization from the local file system
+class LocalSiteReader
+{
+
+var $site_url;
+
+function LocalSiteReader($url)
+{
+  $this->site_url = $url;
+  global $conf;
+  if (!isset($conf['flip_file_ext']))
+  {
+    $conf['flip_file_ext'] = array_flip($conf['file_ext']);
+  }
+  if (!isset($conf['flip_picture_ext']))
+  {
+    $conf['flip_picture_ext'] = array_flip($conf['picture_ext']);
+  }
+}
+
+/**
+ * Is this local site ok ?
+ *
+ * @return true on success, false otherwise
+ */
+function open()
+{
+  global $errors;
+
+  if (!is_dir($this->site_url))
+  {
+    $errors[] = array(
+      'path' => $this->site_url,
+      'type' => 'PWG-ERROR-NO-FS'
+      );
+
+    return false;
+  }
+
+  return true;
+}
+
+// retrieve file system sub-directories fulldirs
+function get_full_directories($basedir)
+{
+  $fs_fulldirs = get_fs_directories($basedir);
+  return $fs_fulldirs;
+}
+
+/**
+ * Returns an array with all file system files according to $conf['file_ext']
+ * and $conf['picture_ext']
+ * @param string $path recurse in this directory
+ * @return array like "pic.jpg"=>array('representative_ext'=>'jpg' ... )
+ */
+function get_elements($path)
+{
+  global $conf;
+
+  $subdirs = array();
+  $fs = array();
+  if (is_dir($path) && $contents = opendir($path) )
+  {
+    while (($node = readdir($contents)) !== false)
+    {
+      if ($node == '.' or $node == '..') continue;
+
+      if (is_file($path.'/'.$node))
+      {
+        $extension = get_extension($node);
+        $filename_wo_ext = get_filename_wo_extension($node);
+
+        if ( isset($conf['flip_file_ext'][$extension]) )
+        {
+          $representative_ext = null;
+          if (! isset($conf['flip_picture_ext'][$extension]) )
+          {
+            $representative_ext = $this->get_representative_ext($path, $filename_wo_ext);
+          }
+          $fs[ $path.'/'.$node ] = array(
+            'representative_ext' => $representative_ext,
+            );
+        }
+      }
+      else if (is_dir($path.'/'.$node)
+               and $node != 'pwg_high'
+               and $node != 'pwg_representative'
+               and $node != 'thumbnail' )
+      {
+        $subdirs[] = $node;
+      }
+    } //end while readdir
+    closedir($contents);
+
+    foreach ($subdirs as $subdir)
+    {
+      $tmp_fs = $this->get_elements($path.'/'.$subdir);
+      $fs = array_merge($fs, $tmp_fs);
+    }
+    ksort($fs);
+  } //end if is_dir
+  return $fs;
+}
+
+// returns the name of the attributes that are supported for
+// files update/synchronization
+function get_update_attributes()
+{
+  return array('representative_ext');
+}
+
+function get_element_update_attributes($file)
+{
+  global $conf;
+  $data = array();
+
+  $filename = basename($file);
+  $extension = get_extension($filename);
+
+  $representative_ext = null;
+  if (! isset($conf['flip_picture_ext'][$extension]) )
+  {
+    $dirname = dirname($file);
+    $filename_wo_ext = get_filename_wo_extension($filename);
+    $representative_ext = $this->get_representative_ext($dirname, $filename_wo_ext);
+  }
+
+  $data['representative_ext'] = $representative_ext;
+  return $data;
+}
+
+// returns the name of the attributes that are supported for
+// metadata update/synchronization according to configuration
+function get_metadata_attributes()
+{
+  return get_sync_metadata_attributes();
+}
+
+// returns a hash of attributes (metadata+filesize+width,...) for file
+function get_element_metadata($infos)
+{
+  return get_sync_metadata($infos);
+}
+
+
+//-------------------------------------------------- private functions --------
+function get_representative_ext($path, $filename_wo_ext)
+{
+  global $conf;
+  $base_test = $path.'/pwg_representative/'.$filename_wo_ext.'.';
+  foreach ($conf['picture_ext'] as $ext)
+  {
+    $test = $base_test.$ext;
+    if (is_file($test))
+    {
+      return $ext;
+    }
+  }
+  return null;
+}
+
+
+}
+?>
Index: /tags/2.6.0RC1/admin/site_update.php
===================================================================
--- /tags/2.6.0RC1/admin/site_update.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/site_update.php	(revision 25596)
@@ -0,0 +1,925 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+if (!$conf['enable_synchronization'])
+{
+  die('synchronization is disabled');
+}
+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!is_numeric($_GET['site']))
+{
+  die ('site param missing or invalid');
+}
+$site_id = $_GET['site'];
+
+$query='
+SELECT galleries_url
+  FROM '.SITES_TABLE.'
+  WHERE id = '.$site_id;
+list($site_url) = pwg_db_fetch_row(pwg_query($query));
+if (!isset($site_url))
+{
+  die('site '.$site_id.' does not exist');
+}
+$site_is_remote = url_is_remote($site_url);
+
+list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+define('CURRENT_DATE', $dbnow);
+
+$error_labels = array(
+  'PWG-UPDATE-1' => array(
+    l10n('wrong filename'),
+    l10n('The name of directories and files must be composed of letters, numbers, "-", "_" or "."')
+    ),
+  'PWG-ERROR-NO-FS' => array(
+    l10n('File/directory read error'),
+    l10n('The file or directory cannot be accessed (either it does not exist or the access is denied)')
+    ),
+  );
+$errors = array();
+$infos = array();
+
+if ($site_is_remote)
+{
+  fatal_error('remote sites not supported');
+}
+else
+{
+  include_once( PHPWG_ROOT_PATH.'admin/site_reader_local.php');
+  $site_reader = new LocalSiteReader($site_url);
+}
+
+$general_failure = true;
+if (isset($_POST['submit']))
+{
+  if ($site_reader->open())
+  {
+    $general_failure = false;
+  }
+
+  // shall we simulate only
+  if (isset($_POST['simulate']) and $_POST['simulate'] == 1)
+  {
+    $simulate = true;
+  }
+  else
+  {
+    $simulate = false;
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                      directories / categories                         |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit'])
+    and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files'))
+{
+  $counts['new_categories'] = 0;
+  $counts['del_categories'] = 0;
+  $counts['del_elements'] = 0;
+  $counts['new_elements'] = 0;
+  $counts['upd_elements'] = 0;
+}
+
+
+if (isset($_POST['submit'])
+    and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files')
+    and !$general_failure)
+{
+  $start = get_moment();
+  // which categories to update ?
+  $query = '
+SELECT id, uppercats, global_rank, status, visible
+  FROM '.CATEGORIES_TABLE.'
+  WHERE dir IS NOT NULL
+    AND site_id = '.$site_id;
+  if (isset($_POST['cat']) and is_numeric($_POST['cat']))
+  {
+    if (isset($_POST['subcats-included']) and $_POST['subcats-included'] == 1)
+    {
+      $query.= '
+    AND uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$_POST['cat'].'(,|$)\'
+';
+    }
+    else
+    {
+      $query.= '
+    AND id = '.$_POST['cat'].'
+';
+    }
+  }
+  $db_categories = hash_from_query($query, 'id');
+
+  // get categort full directories in an array for comparison with file
+  // system directory tree
+  $db_fulldirs = get_fulldirs(array_keys($db_categories));
+
+  // what is the base directory to search file system sub-directories ?
+  if (isset($_POST['cat']) and is_numeric($_POST['cat']))
+  {
+    $basedir = $db_fulldirs[$_POST['cat']];
+  }
+  else
+  {
+    $basedir = preg_replace('#/*$#', '', $site_url);
+  }
+
+  // we need to have fulldirs as keys to make efficient comparison
+  $db_fulldirs = array_flip($db_fulldirs);
+
+  // finding next rank for each id_uppercat. By default, each category id
+  // has 1 for next rank on its sub-categories to create
+  $next_rank['NULL'] = 1;
+
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE;
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $next_rank[$row['id']] = 1;
+  }
+
+  // let's see if some categories already have some sub-categories...
+  $query = '
+SELECT id_uppercat, MAX(rank)+1 AS next_rank
+  FROM '.CATEGORIES_TABLE.'
+  GROUP BY id_uppercat';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    // for the id_uppercat NULL, we write 'NULL' and not the empty string
+    if (!isset($row['id_uppercat']) or $row['id_uppercat'] == '')
+    {
+      $row['id_uppercat'] = 'NULL';
+    }
+    $next_rank[$row['id_uppercat']] = $row['next_rank'];
+  }
+
+  // next category id available
+  $next_id = pwg_db_nextval('id', CATEGORIES_TABLE);
+
+  // retrieve sub-directories fulldirs from the site reader
+  $fs_fulldirs = $site_reader->get_full_directories($basedir);
+
+  // get_full_directories doesn't include the base directory, so if it's a
+  // category directory, we need to include it in our array
+  if (isset($_POST['cat']))
+  {
+    $fs_fulldirs[] = $basedir;
+  }
+  // If $_POST['subcats-included'] != 1 ("Search in sub-albums" is unchecked)
+  // $db_fulldirs doesn't include any subdirectories and $fs_fulldirs does
+  // So $fs_fulldirs will be limited to the selected basedir
+  // (if that one is in $fs_fulldirs)
+  if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1)
+  {
+    $fs_fulldirs = array_intersect($fs_fulldirs, array_keys($db_fulldirs));
+  }
+  $inserts = array();
+  // new categories are the directories not present yet in the database
+  foreach (array_diff($fs_fulldirs, array_keys($db_fulldirs)) as $fulldir)
+  {
+    $dir = basename($fulldir);
+    if (preg_match($conf['sync_chars_regex'], $dir))
+    {
+      $insert = array(
+        'id'          => $next_id++,
+        'dir'         => $dir,
+        'name'        => str_replace('_', ' ', $dir),
+        'site_id'     => $site_id,
+        'commentable' =>
+          boolean_to_string($conf['newcat_default_commentable']),
+        'status'      => $conf['newcat_default_status'],
+        'visible'     => boolean_to_string($conf['newcat_default_visible']),
+        );
+
+      if (isset($db_fulldirs[dirname($fulldir)]))
+      {
+        $parent = $db_fulldirs[dirname($fulldir)];
+
+        $insert['id_uppercat'] = $parent;
+        $insert['uppercats'] =
+          $db_categories[$parent]['uppercats'].','.$insert['id'];
+        $insert['rank'] = $next_rank[$parent]++;
+        $insert['global_rank'] =
+          $db_categories[$parent]['global_rank'].'.'.$insert['rank'];
+        if ('private' == $db_categories[$parent]['status'])
+        {
+          $insert['status'] = 'private';
+        }
+        if ('false' == $db_categories[$parent]['visible'])
+        {
+          $insert['visible'] = 'false';
+        }
+      }
+      else
+      {
+        $insert['uppercats'] = $insert['id'];
+        $insert{'rank'} = $next_rank['NULL']++;
+        $insert['global_rank'] = $insert['rank'];
+      }
+
+      $inserts[] = $insert;
+      $infos[] = array(
+          'path' => $fulldir,
+          'info' => l10n('added'),
+          );
+
+      // add the new category to $db_categories and $db_fulldirs array
+      $db_categories[$insert{'id'}] =
+        array(
+          'id' => $insert['id'],
+          'parent' => (isset($parent)) ? $parent : Null,
+          'status' => $insert['status'],
+          'visible' => $insert['visible'],
+          'uppercats' => $insert['uppercats'],
+          'global_rank' => $insert['global_rank']
+          );
+      $db_fulldirs[$fulldir] = $insert['id'];
+      $next_rank[$insert{'id'}] = 1;
+    }
+    else
+    {
+      $errors[] = array(
+        'path' => $fulldir,
+        'type' => 'PWG-UPDATE-1'
+        );
+    }
+  }
+
+  if (count($inserts) > 0)
+  {
+    if (!$simulate)
+    {
+      $dbfields = array(
+        'id','dir','name','site_id','id_uppercat','uppercats','commentable',
+        'visible','status','rank','global_rank'
+        );
+      mass_inserts(CATEGORIES_TABLE, $dbfields, $inserts);
+
+      // add default permissions to categories
+      $category_ids = array();
+      $category_up = array();
+      foreach ($inserts as $category)
+      {
+        $category_ids[] = $category['id'];
+        if (!empty($category['id_uppercat']))
+        {
+          $category_up[] = $category['id_uppercat'];
+        }
+      }
+      $category_up=implode(',',array_unique($category_up));
+      if ($conf['inheritance_by_default'])
+      {
+        $query = '
+          SELECT *
+          FROM '.GROUP_ACCESS_TABLE.'
+          WHERE cat_id IN ('.$category_up.')
+        ;';
+        $result = pwg_query($query);
+        if (!empty($result))
+        {
+          $granted_grps = array();
+          while ($row = pwg_db_fetch_assoc($result))
+          {
+            if (!isset($granted_grps[$row['cat_id']]))
+            {
+              $granted_grps[$row['cat_id']]=array();
+            }
+            // TODO: explanaition
+            array_push(
+              $granted_grps,
+              array(
+                $row['cat_id'] => array_push($granted_grps[$row['cat_id']],$row['group_id'])
+              )
+            );
+          }
+        }
+        $query = '
+          SELECT *
+          FROM '.USER_ACCESS_TABLE.'
+          WHERE cat_id IN ('.$category_up.')
+        ;';
+        $result = pwg_query($query);
+        if (!empty($result))
+        {
+          $granted_users = array();
+          while ($row = pwg_db_fetch_assoc($result))
+          {
+            if (!isset($granted_users[$row['cat_id']]))
+            {
+              $granted_users[$row['cat_id']]=array();
+            }
+            // TODO: explanaition
+            array_push(
+              $granted_users,
+              array(
+                $row['cat_id'] => array_push($granted_users[$row['cat_id']],$row['user_id'])
+              )
+            );
+          }
+        }
+        $insert_granted_users=array();
+        $insert_granted_grps=array();
+        foreach ($category_ids as $ids)
+        {
+          $parent_id=$db_categories[$ids]['parent'];
+          while (in_array($parent_id, $category_ids))
+          {
+            $parent_id= $db_categories[$parent_id]['parent'];
+          }
+          if ($db_categories[$ids]['status']=='private' and !is_null($parent_id))
+          {
+            if (isset($granted_grps[$parent_id]))
+            {
+              foreach ($granted_grps[$parent_id] as $granted_grp)
+              {
+                $insert_granted_grps[] = array(
+                  'group_id' => $granted_grp,
+                  'cat_id' => $ids
+                  );
+              }
+            }
+            if (isset($granted_users[$parent_id]))
+            {
+              foreach ($granted_users[$parent_id] as $granted_user)
+              {
+                $insert_granted_users[] = array(
+                  'user_id' => $granted_user,
+                  'cat_id' => $ids
+                  );
+              }
+            }
+            foreach (get_admins() as $granted_user)
+            {
+              $insert_granted_users[] = array(
+                'user_id' => $granted_user,
+                'cat_id' => $ids
+                );
+            }
+          }
+        }
+        mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $insert_granted_grps);
+        $insert_granted_users=array_unique($insert_granted_users, SORT_REGULAR);
+        mass_inserts(USER_ACCESS_TABLE, array('user_id','cat_id'), $insert_granted_users);
+      }
+      else
+      {
+        add_permission_on_category($category_ids, get_admins());
+      }
+    }
+
+    $counts['new_categories'] = count($inserts);
+  }
+
+  // to delete categories
+  $to_delete = array();
+  $to_delete_derivative_dirs = array();
+  
+  foreach (array_diff(array_keys($db_fulldirs), $fs_fulldirs) as $fulldir)
+  {
+    $to_delete[] = $db_fulldirs[$fulldir];
+    unset($db_fulldirs[$fulldir]);
+    
+    $infos[] = array(
+      'path' => $fulldir,
+      'info' => l10n('deleted')
+      );
+      
+    if (substr_compare($fulldir, '../', 0, 3)==0)
+    {
+      $fulldir = substr($fulldir, 3);
+    }
+    $to_delete_derivative_dirs[] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$fulldir;
+  }
+  
+  if (count($to_delete) > 0)
+  {
+    if (!$simulate)
+    {
+      delete_categories($to_delete);
+      foreach($to_delete_derivative_dirs as $to_delete_dir)
+      {
+        if (is_dir($to_delete_dir))
+        {
+          clear_derivative_cache_rec($to_delete_dir, '#.+#');
+        }
+      }
+    }
+    $counts['del_categories'] = count($to_delete);
+  }
+
+  $template->append('footer_elements', '<!-- scanning dirs : '
+    . get_elapsed_time($start, get_moment())
+    . ' -->' );
+}
+// +-----------------------------------------------------------------------+
+// |                           files / elements                            |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']) and $_POST['sync'] == 'files'
+      and !$general_failure)
+{
+  $start_files = get_moment();
+  $start= $start_files;
+
+  $fs = $site_reader->get_elements($basedir);
+  $template->append('footer_elements', '<!-- get_elements: '
+    . get_elapsed_time($start, get_moment())
+    . ' -->' );
+
+  $cat_ids = array_diff(array_keys($db_categories), $to_delete);
+
+  $db_elements = array();
+
+  if (count($cat_ids) > 0)
+  {
+    $query = '
+SELECT id, path
+  FROM '.IMAGES_TABLE.'
+  WHERE storage_category_id IN ('
+      .wordwrap(
+        implode(', ', $cat_ids),
+        160,
+        "\n"
+        ).')';
+    $db_elements = simple_hash_from_query($query, 'id', 'path');
+  }
+
+  // next element id available
+  $next_element_id = pwg_db_nextval('id', IMAGES_TABLE);
+
+  $start = get_moment();
+
+  $inserts = array();
+  $insert_links = array();
+
+  foreach (array_diff(array_keys($fs), $db_elements) as $path)
+  {
+    $insert = array();
+    // storage category must exist
+    $dirname = dirname($path);
+    if (!isset($db_fulldirs[$dirname]))
+    {
+      continue;
+    }
+    $filename = basename($path);
+    if (!preg_match($conf['sync_chars_regex'], $filename))
+    {
+      $errors[] = array(
+        'path' => $path,
+        'type' => 'PWG-UPDATE-1'
+        );
+
+      continue;
+    }
+
+    $insert = array(
+      'id'             => $next_element_id++,
+      'file'           => $filename,
+      'name'           => get_name_from_file($filename),
+      'date_available' => CURRENT_DATE,
+      'path'           => $path,
+      'representative_ext'  => $fs[$path]['representative_ext'],
+      'storage_category_id' => $db_fulldirs[$dirname],
+      'added_by'       => $user['id'],
+      );
+
+    if ( $_POST['privacy_level']!=0 )
+    {
+      $insert['level'] = $_POST['privacy_level'];
+    }
+
+    $inserts[] = $insert;
+
+    $insert_links[] = array(
+      'image_id'    => $insert['id'],
+      'category_id' => $insert['storage_category_id'],
+      );
+
+    $infos[] = array(
+      'path' => $insert['path'],
+      'info' => l10n('added')
+      );
+
+    $caddiables[] = $insert['id'];
+  }
+
+  if (count($inserts) > 0)
+  {
+    if (!$simulate)
+    {
+      // inserts all new elements
+      mass_inserts(
+        IMAGES_TABLE,
+        array_keys($inserts[0]),
+        $inserts
+        );
+
+      // inserts all links between new elements and their storage category
+      mass_inserts(
+        IMAGE_CATEGORY_TABLE,
+        array_keys($insert_links[0]),
+        $insert_links
+        );
+
+      // add new photos to caddie
+      if (isset($_POST['add_to_caddie']) and $_POST['add_to_caddie'] == 1)
+      {
+        fill_caddie($caddiables);
+      }
+    }
+    $counts['new_elements'] = count($inserts);
+  }
+
+  // delete elements that are in database but not in the filesystem
+  $to_delete_elements = array();
+  foreach (array_diff($db_elements, array_keys($fs)) as $path)
+  {
+    $to_delete_elements[] = array_search($path, $db_elements);
+    $infos[] = array(
+      'path' => $path,
+      'info' => l10n('deleted')
+      );
+  }
+  if (count($to_delete_elements) > 0)
+  {
+    if (!$simulate)
+    {
+      delete_elements($to_delete_elements);
+    }
+    $counts['del_elements'] = count($to_delete_elements);
+  }
+
+  $template->append('footer_elements', '<!-- scanning files : '
+    . get_elapsed_time($start_files, get_moment())
+    . ' -->' );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          synchronize files                            |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit'])
+    and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files')
+    and !$general_failure )
+{
+  if (!$simulate)
+  {
+    $start = get_moment();
+    update_category('all');
+    $template->append('footer_elements', '<!-- update_category(all) : '
+      . get_elapsed_time($start,get_moment())
+      . ' -->' );
+    $start = get_moment();
+    update_global_rank();
+    $template->append('footer_elements', '<!-- ordering categories : '
+      . get_elapsed_time($start, get_moment())
+      . ' -->');
+  }
+
+  if ($_POST['sync'] == 'files')
+  {
+    $start = get_moment();
+    $opts['category_id'] = '';
+    $opts['recursive'] = true;
+    if (isset($_POST['cat']))
+    {
+      $opts['category_id'] = $_POST['cat'];
+      if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1)
+      {
+        $opts['recursive'] = false;
+      }
+    }
+    $files = get_filelist($opts['category_id'], $site_id,
+                          $opts['recursive'],
+                          false);
+    $template->append('footer_elements', '<!-- get_filelist : '
+      . get_elapsed_time($start, get_moment())
+      . ' -->');
+    $start = get_moment();
+
+    $datas = array();
+    foreach ( $files as $id=>$file )
+    {
+      $file = $file['path'];
+      $data = $site_reader->get_element_update_attributes($file);
+      if ( !is_array($data) )
+      {
+        continue;
+      }
+
+      $data['id']=$id;
+      $datas[] = $data;
+    } // end foreach file
+
+    $counts['upd_elements'] = count($datas);
+    if (!$simulate and count($datas)>0 )
+    {
+      mass_updates(
+        IMAGES_TABLE,
+        // fields
+        array(
+          'primary' => array('id'),
+          'update'  => $site_reader->get_update_attributes(),
+          ),
+        $datas
+        );
+    }
+    $template->append('footer_elements', '<!-- update files : '
+      . get_elapsed_time($start,get_moment())
+      . ' -->');
+  }// end if sync files
+}
+
+// +-----------------------------------------------------------------------+
+// |                          synchronize files                            |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit'])
+    and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files'))
+{
+  $template->assign(
+    'update_result',
+    array(
+      'NB_NEW_CATEGORIES'=>$counts['new_categories'],
+      'NB_DEL_CATEGORIES'=>$counts['del_categories'],
+      'NB_NEW_ELEMENTS'=>$counts['new_elements'],
+      'NB_DEL_ELEMENTS'=>$counts['del_elements'],
+      'NB_UPD_ELEMENTS'=>$counts['upd_elements'],
+      'NB_ERRORS'=>count($errors),
+      ));
+}
+
+// +-----------------------------------------------------------------------+
+// |                          synchronize metadata                         |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']) and isset($_POST['sync_meta'])
+         and !$general_failure)
+{
+  // sync only never synchronized files ?
+  $opts['only_new'] = isset($_POST['meta_all']) ? false : true;
+  $opts['category_id'] = '';
+  $opts['recursive'] = true;
+
+  if (isset($_POST['cat']))
+  {
+    $opts['category_id'] = $_POST['cat'];
+    // recursive ?
+    if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1)
+    {
+      $opts['recursive'] = false;
+    }
+  }
+  $start = get_moment();
+  $files = get_filelist($opts['category_id'], $site_id,
+                        $opts['recursive'],
+                        $opts['only_new']);
+
+  $template->append('footer_elements', '<!-- get_filelist : '
+    . get_elapsed_time($start, get_moment())
+    . ' -->');
+
+  $start = get_moment();
+  $datas = array();
+  $tags_of = array();
+
+  foreach ( $files as $id => $element_infos )
+  {
+    $data = $site_reader->get_element_metadata($element_infos);
+
+    if ( is_array($data) )
+    {
+      $data['date_metadata_update'] = CURRENT_DATE;
+      $data['id']=$id;
+      $datas[] = $data;
+
+      foreach (array('keywords', 'tags') as $key)
+      {
+        if (isset($data[$key]))
+        {
+          if (!isset($tags_of[$id]))
+          {
+            $tags_of[$id] = array();
+          }
+
+          foreach (explode(',', $data[$key]) as $tag_name)
+          {
+            $tags_of[$id][] = tag_id_from_tag_name($tag_name);
+          }
+        }
+      }
+    }
+    else
+    {
+      $errors[] = array(
+        'path' => $element_infos['path'],
+        'type' => 'PWG-ERROR-NO-FS'
+        );
+    }
+  }
+
+  if (!$simulate)
+  {
+    if (count($datas) > 0)
+    {
+      mass_updates(
+        IMAGES_TABLE,
+        // fields
+        array(
+          'primary' => array('id'),
+          'update'  => array_unique(
+            array_merge(
+              array_diff(
+                $site_reader->get_metadata_attributes(),
+                // keywords and tags fields are managed separately
+                array('keywords', 'tags')
+                ),
+              array('date_metadata_update'))
+            )
+          ),
+        $datas,
+        isset($_POST['meta_empty_overrides']) ? 0 : MASS_UPDATES_SKIP_EMPTY
+        );
+    }
+    set_tags_of($tags_of);
+  }
+
+  $template->append('footer_elements', '<!-- metadata update : '
+    . get_elapsed_time($start, get_moment())
+    . ' -->');
+
+  $template->assign(
+    'metadata_result',
+    array(
+      'NB_ELEMENTS_DONE' => count($datas),
+      'NB_ELEMENTS_CANDIDATES' => count($files),
+      'NB_ERRORS' => count($errors),
+      ));
+}
+
+// +-----------------------------------------------------------------------+
+// |                        template initialization                        |
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array('update'=>'site_update.tpl'));
+$result_title = '';
+if (isset($simulate) and $simulate)
+{
+  $result_title.= '['.l10n('Simulation').'] ';
+}
+
+// used_metadata string is displayed to inform admin which metadata will be
+// used from files for synchronization
+$used_metadata = implode( ', ', $site_reader->get_metadata_attributes());
+if ($site_is_remote and !isset($_POST['submit']) )
+{
+  $used_metadata.= ' + ...';
+}
+
+$template->assign(
+  array(
+    'SITE_URL'=>$site_url,
+    'U_SITE_MANAGER'=> get_root_url().'admin.php?page=site_manager',
+    'L_RESULT_UPDATE'=>$result_title.l10n('Search for new images in the directories'),
+    'L_RESULT_METADATA'=>$result_title.l10n('Metadata synchronization results'),
+    'METADATA_LIST' => $used_metadata,
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=synchronize',
+    ));
+
+// +-----------------------------------------------------------------------+
+// |                        introduction : choices                         |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']))
+{
+  $tpl_introduction = array(
+      'sync'  => $_POST['sync'],
+      'sync_meta'  => isset($_POST['sync_meta']) ? true : false,
+      'display_info' => isset($_POST['display_info']) and $_POST['display_info']==1,
+      'add_to_caddie' => isset($_POST['add_to_caddie']) and $_POST['add_to_caddie']==1,
+      'subcats_included' => isset($_POST['subcats-included']) and $_POST['subcats-included']==1,
+      'privacy_level_selected' => (int)@$_POST['privacy_level'],
+      'meta_all'  => isset($_POST['meta_all']) ? true : false,
+      'meta_empty_overrides'  => isset($_POST['meta_empty_overrides']) ? true : false,
+    );
+
+  if (isset($_POST['cat']) and is_numeric($_POST['cat']))
+  {
+    $cat_selected = array($_POST['cat']);
+  }
+  else
+  {
+    $cat_selected = array();
+  }
+}
+else
+{
+  $tpl_introduction = array(
+      'sync'  => 'dirs',
+      'sync_meta'  => true,
+      'display_info' => false,
+      'add_to_caddie' => false,
+      'subcats_included' => true,
+      'privacy_level_selected' => 0,
+      'meta_all'  => false,
+      'meta_empty_overrides'  => false,
+    );
+
+  $cat_selected = array();
+
+  if (isset($_GET['cat_id']))
+  {
+    check_input_parameter('cat_id', $_GET, false, PATTERN_ID);
+
+    $cat_selected = array($_GET['cat_id']);
+    $tpl_introduction['sync'] = 'files';
+  }
+}
+
+$tpl_introduction['privacy_level_options'] = get_privacy_level_options();
+
+$template->assign('introduction', $tpl_introduction);
+
+$query = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE site_id = '.$site_id;
+display_select_cat_wrapper($query,
+                           $cat_selected,
+                           'category_options',
+                           false);
+
+
+if (count($errors) > 0)
+{
+  foreach ($errors as $error)
+  {
+    $template->append(
+      'sync_errors',
+      array(
+        'ELEMENT' => $error['path'],
+        'LABEL' => $error['type'].' ('.$error_labels[$error['type']][0].')'
+        ));
+  }
+
+  foreach ($error_labels as $error_type=>$error_description)
+  {
+    $template->append(
+      'sync_error_captions',
+      array(
+        'TYPE' => $error_type,
+        'LABEL' => $error_description[1]
+        ));
+  }
+}
+
+if (count($infos) > 0
+    and isset($_POST['display_info'])
+    and $_POST['display_info'] == 1)
+{
+  foreach ($infos as $info)
+  {
+    $template->append(
+      'sync_infos',
+      array(
+        'ELEMENT' => $info['path'],
+        'LABEL' => $info['info']
+        ));
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                          sending html code                            |
+// +-----------------------------------------------------------------------+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'update');
+?>
Index: /tags/2.6.0RC1/admin/stats.php
===================================================================
--- /tags/2.6.0RC1/admin/stats.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/stats.php	(revision 25596)
@@ -0,0 +1,502 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined("PHPWG_ROOT_PATH"))
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_history.inc.php');
+
+// +-----------------------------------------------------------------------+
+// | Functions                                                             |
+// +-----------------------------------------------------------------------+
+
+function get_summary($year = null, $month = null, $day = null)
+{
+  $query = '
+SELECT
+    year,
+    month,
+    day,
+    hour,
+    nb_pages
+  FROM '.HISTORY_SUMMARY_TABLE;
+
+  if (isset($day))
+  {
+    $query.= '
+  WHERE year = '.$year.'
+    AND month = '.$month.'
+    AND day = '.$day.'
+    AND hour IS NOT NULL
+  ORDER BY
+    year ASC,
+    month ASC,
+    day ASC,
+    hour ASC
+;';
+  }
+  elseif (isset($month))
+  {
+    $query.= '
+  WHERE year = '.$year.'
+    AND month = '.$month.'
+    AND day IS NOT NULL
+    AND hour IS NULL
+  ORDER BY
+    year ASC,
+    month ASC,
+    day ASC
+;';
+  }
+  elseif (isset($year))
+  {
+    $query.= '
+  WHERE year = '.$year.'
+    AND month IS NOT NULL
+    AND day IS NULL
+  ORDER BY
+    year ASC,
+    month ASC
+;';
+  }
+  else
+  {
+    $query.= '
+  WHERE year IS NOT NULL
+    AND month IS NULL
+  ORDER BY
+    year ASC
+;';
+  }
+
+  $result = pwg_query($query);
+
+  $output = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $output[] = $row;
+  }
+
+  return $output;
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// | Refresh summary from details                                          |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT
+    date,
+    '.pwg_db_get_hour('time').' AS hour,
+    MAX(id) AS max_id,
+    COUNT(*) AS nb_pages
+  FROM '.HISTORY_TABLE.'
+  WHERE summarized = \'false\'
+  GROUP BY
+    date,
+    hour
+  ORDER BY
+    date ASC,
+    hour ASC
+;';
+$result = pwg_query($query);
+
+$need_update = array();
+
+$max_id = 0;
+$is_first = true;
+$first_time_key = null;
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $time_keys = array(
+    substr($row['date'], 0, 4), //yyyy
+    substr($row['date'], 0, 7), //yyyy-mm
+    substr($row['date'], 0, 10),//yyyy-mm-dd
+    sprintf(
+      '%s-%02u',
+      $row['date'], $row['hour']
+      ),
+    );
+
+  foreach ($time_keys as $time_key)
+  {
+    if (!isset($need_update[$time_key]))
+    {
+      $need_update[$time_key] = 0;
+    }
+    $need_update[$time_key] += $row['nb_pages'];
+  }
+
+  if ($row['max_id'] > $max_id)
+  {
+    $max_id = $row['max_id'];
+  }
+
+  if ($is_first)
+  {
+    $is_first = false;
+    $first_time_key = $time_keys[3];
+  }
+}
+
+// Only the oldest time_key might be already summarized, so we have to
+// update the 4 corresponding lines instead of simply inserting them.
+//
+// For example, if the oldest unsummarized is 2005.08.25.21, the 4 lines
+// that can be updated are:
+//
+// +---------------+----------+
+// | id            | nb_pages |
+// +---------------+----------+
+// | 2005          |   241109 |
+// | 2005-08       |    20133 |
+// | 2005-08-25    |      620 |
+// | 2005-08-25-21 |      151 |
+// +---------------+----------+
+
+
+$updates = array();
+$inserts = array();
+
+if (isset($first_time_key))
+{
+  list($year, $month, $day, $hour) = explode('-', $first_time_key);
+
+  $query = '
+SELECT *
+  FROM '.HISTORY_SUMMARY_TABLE.'
+  WHERE year='.$year.'
+    AND ( month IS NULL
+      OR ( month='.$month.'
+        AND ( day is NULL 
+          OR (day='.$day.'
+            AND (hour IS NULL OR hour='.$hour.')
+          )
+        )
+      )
+    )
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $key = sprintf('%4u', $row['year']);
+    if ( isset($row['month']) )
+    {
+      $key .= sprintf('-%02u', $row['month']);
+      if ( isset($row['day']) )
+      {
+        $key .= sprintf('-%02u', $row['day']);
+        if ( isset($row['hour']) )
+        {
+          $key .= sprintf('-%02u', $row['hour']);
+        }
+      }
+    }
+
+    if (isset($need_update[$key]))
+    {
+      $row['nb_pages'] += $need_update[$key];
+      $updates[] = $row;
+      unset($need_update[$key]);
+    }
+  }
+}
+
+foreach ($need_update as $time_key => $nb_pages)
+{
+  $time_tokens = explode('-', $time_key);
+
+  $inserts[] = array(
+    'year'     => $time_tokens[0],
+    'month'    => @$time_tokens[1],
+    'day'      => @$time_tokens[2],
+    'hour'     => @$time_tokens[3],
+    'nb_pages' => $nb_pages,
+    );
+}
+
+if (count($updates) > 0)
+{
+  mass_updates(
+    HISTORY_SUMMARY_TABLE,
+    array(
+      'primary' => array('year','month','day','hour'),
+      'update'  => array('nb_pages'),
+      ),
+    $updates
+    );
+}
+
+if (count($inserts) > 0)
+{
+  mass_inserts(
+    HISTORY_SUMMARY_TABLE,
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+if ($max_id != 0)
+{
+  $query = '
+UPDATE '.HISTORY_TABLE.'
+  SET summarized = \'true\'
+  WHERE summarized = \'false\'
+    AND id <= '.$max_id.'
+;';
+  pwg_query($query);
+}
+
+// +-----------------------------------------------------------------------+
+// | Page parameters check                                                 |
+// +-----------------------------------------------------------------------+
+
+foreach (array('day', 'month', 'year') as $key)
+{
+  if (isset($_GET[$key]))
+  {
+    $page[$key] = (int)$_GET[$key];
+  }
+}
+
+if (isset($page['day']))
+{
+  if (!isset($page['month']))
+  {
+    die('month is missing in URL');
+  }
+}
+
+if (isset($page['month']))
+{
+  if (!isset($page['year']))
+  {
+    die('year is missing in URL');
+  }
+}
+
+$summary_lines = get_summary(
+  @$page['year'],
+  @$page['month'],
+  @$page['day']
+  );
+
+// +-----------------------------------------------------------------------+
+// | Display statistics header                                             |
+// +-----------------------------------------------------------------------+
+
+// page title creation
+$title_parts = array();
+
+$url = PHPWG_ROOT_PATH.'admin.php?page=stats';
+
+$title_parts[] = '<a href="'.$url.'">'.l10n('Overall').'</a>';
+
+$period_label = l10n('Year');
+
+if (isset($page['year']))
+{
+  $url.= '&amp;year='.$page['year'];
+
+  $title_parts[] = '<a href="'.$url.'">'.$page['year'].'</a>';
+
+  $period_label = l10n('Month');
+}
+
+if (isset($page['month']))
+{
+  $url.= '&amp;month='.$page['month'];
+
+  $title_parts[] = '<a href="'.$url.'">'.$lang['month'][$page['month']].'</a>';
+
+  $period_label = l10n('Day');
+}
+
+if (isset($page['day']))
+{
+  $url.= '&amp;day='.$page['day'];
+
+  $time = mktime(12, 0, 0, $page['month'], $page['day'], $page['year']);
+
+  $day_title = sprintf(
+    '%u (%s)',
+    $page['day'],
+    $lang['day'][date('w', $time)]
+    );
+
+  $title_parts[] = '<a href="'.$url.'">'.$day_title.'</a>';
+
+  $period_label = l10n('Hour');
+}
+
+$template->set_filename('stats', 'stats.tpl');
+
+// TabSheet initialization
+history_tabsheet();
+
+$base_url = get_root_url().'admin.php?page=history';
+
+$template->assign(
+  array(
+    'L_STAT_TITLE' => implode($conf['level_separator'], $title_parts),
+    'PERIOD_LABEL' => $period_label,
+    'U_HELP' => get_root_url().'admin/popuphelp.php?page=history',
+    'F_ACTION' => $base_url,
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// | Display statistic rows                                                |
+// +-----------------------------------------------------------------------+
+
+$max_width = 400;
+
+$datas = array();
+
+if (isset($page['day']))
+{
+  $key = 'hour';
+  $min_x = 0;
+  $max_x = 23;
+}
+elseif (isset($page['month']))
+{
+  $key = 'day';
+  $min_x = 1;
+  $max_x = date(
+    't',
+    mktime(12, 0, 0, $page['month'], 1, $page['year'])
+    );
+}
+elseif (isset($page['year']))
+{
+  $key = 'month';
+  $min_x = 1;
+  $max_x = 12;
+}
+else
+{
+  $key = 'year';
+}
+
+$max_pages = 1;
+foreach ($summary_lines as $line)
+{
+  if ($line['nb_pages'] > $max_pages)
+  {
+    $max_pages = $line['nb_pages'];
+  }
+
+  $datas[ $line[$key] ] = $line['nb_pages'];
+}
+
+if (!isset($min_x) and !isset($max_x) and count($datas) > 0)
+{
+  $min_x = min(array_keys($datas));
+  $max_x = max(array_keys($datas));
+}
+
+if (count($datas) > 0)
+{
+  for ($i = $min_x; $i <= $max_x; $i++)
+  {
+    if (!isset($datas[$i]))
+    {
+      $datas[$i] = 0;
+    }
+
+    $url = null;
+
+    if (isset($page['day']))
+    {
+      $value = sprintf('%02u', $i);
+    }
+    else if (isset($page['month']))
+    {
+      $url =
+        get_root_url().'admin.php'
+        .'?page=stats'
+        .'&amp;year='.$page['year']
+        .'&amp;month='.$page['month']
+        .'&amp;day='.$i
+        ;
+
+      $time = mktime(12, 0, 0, $page['month'], $i, $page['year']);
+
+      $value = $i.' ('.$lang['day'][date('w', $time)].')';
+    }
+    else if (isset($page['year']))
+    {
+      $url =
+        get_root_url().'admin.php'
+        .'?page=stats'
+        .'&amp;year='.$page['year']
+        .'&amp;month='.$i
+        ;
+
+      $value = $lang['month'][$i];
+    }
+    else
+    {
+      // at least the year is defined
+      $url =
+        get_root_url().'admin.php'
+        .'?page=stats'
+        .'&amp;year='.$i
+        ;
+
+      $value = $i;
+    }
+
+    if ($datas[$i] != 0 and isset($url))
+    {
+      $value = '<a href="'.$url.'">'.$value.'</a>';
+    }
+
+    $template->append(
+      'statrows',
+      array(
+        'VALUE' => $value,
+        'PAGES' => $datas[$i],
+        'WIDTH' => ceil(($datas[$i] * $max_width) / $max_pages ),
+        )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | Sending html code                                                     |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'stats');
+?>
Index: /tags/2.6.0RC1/admin/tags.php
===================================================================
--- /tags/2.6.0RC1/admin/tags.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/tags.php	(revision 25596)
@@ -0,0 +1,466 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!empty($_POST))
+{
+  check_pwg_token();
+}
+
+// +-----------------------------------------------------------------------+
+// |                                edit tags                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['submit']))
+{
+  $query = '
+SELECT name
+  FROM '.TAGS_TABLE.'
+;';
+  $existing_names = array_from_query($query, 'name');
+
+
+  $current_name_of = array();
+  $query = '
+SELECT id, name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.$_POST['edit_list'].')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $current_name_of[ $row['id'] ] = $row['name'];
+  }
+
+  $updates = array();
+  // we must not rename tag with an already existing name
+  foreach (explode(',', $_POST['edit_list']) as $tag_id)
+  {
+    $tag_name = stripslashes($_POST['tag_name-'.$tag_id]);
+
+    if ($tag_name != $current_name_of[$tag_id])
+    {
+      if (in_array($tag_name, $existing_names))
+      {
+        $page['errors'][] = l10n('Tag "%s" already exists', $tag_name);
+      }
+      else if (!empty($tag_name))
+      {
+        $updates[] = array(
+          'id' => $tag_id,
+          'name' => addslashes($tag_name),
+          'url_name' => trigger_event('render_tag_url', $tag_name),
+          );
+      }
+    }
+  }
+  mass_updates(
+    TAGS_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('name', 'url_name'),
+      ),
+    $updates
+    );
+}
+// +-----------------------------------------------------------------------+
+// |                            dulicate tags                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['duplic_submit']))
+{
+  $query = '
+SELECT name
+  FROM '.TAGS_TABLE.'
+;';
+  $existing_names = array_from_query($query, 'name');
+
+
+  $current_name_of = array();
+  $query = '
+SELECT id, name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.$_POST['edit_list'].')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $current_name_of[ $row['id'] ] = $row['name'];
+  }
+
+  $updates = array();
+  // we must not rename tag with an already existing name
+  foreach (explode(',', $_POST['edit_list']) as $tag_id)
+  {
+    $tag_name = stripslashes($_POST['tag_name-'.$tag_id]);
+
+    if ($tag_name != $current_name_of[$tag_id])
+    {
+      if (in_array($tag_name, $existing_names))
+      {
+        $page['errors'][] = l10n('Tag "%s" already exists', $tag_name);
+      }
+      else if (!empty($tag_name))
+      {
+        single_insert(
+          TAGS_TABLE,
+          array(
+            'name' => $tag_name,
+            'url_name' => trigger_event('render_tag_url', $tag_name),
+            )
+          );
+
+        $query = '
+        SELECT id
+          FROM '.TAGS_TABLE.'
+          WHERE name = \''.$tag_name.'\'
+        ;';
+        $destination_tag = array_from_query($query, 'id');
+        $destination_tag_id = $destination_tag[0];
+
+        $query = '
+        SELECT
+            image_id
+          FROM '.IMAGE_TAG_TABLE.'
+          WHERE tag_id = '.$tag_id.'
+        ;';
+        $destination_tag_image_ids = array_from_query($query, 'image_id');
+
+        $inserts = array();
+        foreach ($destination_tag_image_ids as $image_id)
+        {
+          $inserts[] = array(
+            'tag_id' => $destination_tag_id,
+            'image_id' => $image_id
+            );
+        }
+
+        if (count($inserts) > 0)
+        {
+          mass_inserts(
+            IMAGE_TAG_TABLE,
+            array_keys($inserts[0]),
+            $inserts
+            );
+        }
+        
+        $page['infos'][] = l10n(
+          'Tag "%s" is now a duplicate of "%s"',
+          stripslashes($tag_name),
+          $current_name_of[$tag_id]
+          );
+      }
+    }
+  }
+
+  mass_updates(
+    TAGS_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('name', 'url_name'),
+      ),
+    $updates
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                               merge tags                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['confirm_merge']))
+{
+  if (!isset($_POST['destination_tag']))
+  {
+    $page['errors'][] = l10n('No destination tag selected');
+  }
+  else
+  {
+    $destination_tag_id = $_POST['destination_tag'];
+    $tag_ids = explode(',', $_POST['merge_list']);
+
+    if (is_array($tag_ids) and count($tag_ids) > 1)
+    {
+      $name_of_tag = array();
+      $query = '
+SELECT
+    id,
+    name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $tag_ids).')
+;';
+      $result = pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($result))
+      {
+        $name_of_tag[ $row['id'] ] = trigger_event('render_tag_name', $row['name']);
+      }
+
+      $tag_ids_to_delete = array_diff(
+        $tag_ids,
+        array($destination_tag_id)
+        );
+
+      $query = '
+SELECT
+    DISTINCT(image_id)
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE tag_id IN ('.implode(',', $tag_ids_to_delete).')
+;';
+      $image_ids = array_from_query($query, 'image_id');
+
+      delete_tags($tag_ids_to_delete);
+
+      $query = '
+SELECT
+    image_id
+  FROM '.IMAGE_TAG_TABLE.'
+  WHERE tag_id = '.$destination_tag_id.'
+;';
+      $destination_tag_image_ids = array_from_query($query, 'image_id');
+
+      $image_ids_to_link = array_diff(
+        $image_ids,
+        $destination_tag_image_ids
+        );
+
+      $inserts = array();
+      foreach ($image_ids_to_link as $image_id)
+      {
+        $inserts[] = array(
+          'tag_id' => $destination_tag_id,
+          'image_id' => $image_id
+          );
+      }
+
+      if (count($inserts) > 0)
+      {
+        mass_inserts(
+          IMAGE_TAG_TABLE,
+          array_keys($inserts[0]),
+          $inserts
+          );
+      }
+
+      $tags_deleted = array();
+      foreach ($tag_ids_to_delete as $tag_id)
+      {
+        $tags_deleted[] = $name_of_tag[$tag_id];
+      }
+
+      $page['infos'][] = l10n(
+        'Tags <em>%s</em> merged into tag <em>%s</em>',
+        implode(', ', $tags_deleted),
+        $name_of_tag[$destination_tag_id]
+        );
+    }
+  }
+}
+
+
+// +-----------------------------------------------------------------------+
+// |                               delete tags                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['delete']) and isset($_POST['tags']))
+{
+  $query = '
+SELECT name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $_POST['tags']).')
+;';
+  $tag_names = array_from_query($query, 'name');
+
+  delete_tags($_POST['tags']);
+
+  $page['infos'][] = l10n_dec(
+    'The following tag was deleted', 'The %d following tags were deleted',
+    count($tag_names)
+    )
+  .' : '.implode(', ', $tag_names);
+}
+
+// +-----------------------------------------------------------------------+
+// |                           delete orphan tags                          |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['action']) and 'delete_orphans' == $_GET['action'])
+{
+  check_pwg_token();
+
+  delete_orphan_tags();
+  $_SESSION['page_infos'] = array(l10n('Orphan tags deleted'));
+  redirect(get_root_url().'admin.php?page=tags');
+}
+
+// +-----------------------------------------------------------------------+
+// |                               add a tag                               |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['add']) and !empty($_POST['add_tag']))
+{
+  $ret = create_tag($_POST['add_tag']);
+  
+  if (isset($ret['error']))
+  {
+    $page['errors'][] = $ret['error'];
+  }
+  else
+  {
+    $page['infos'][] = $ret['info'];
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('tags' => 'tags.tpl'));
+
+$template->assign(
+  array(
+    'F_ACTION' => PHPWG_ROOT_PATH.'admin.php?page=tags',
+    'PWG_TOKEN' => get_pwg_token(),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                              orphan tags                              |
+// +-----------------------------------------------------------------------+
+
+$orphan_tags = get_orphan_tags();
+
+$orphan_tag_names = array();
+foreach ($orphan_tags as $tag)
+{
+  $orphan_tag_names[] = trigger_event('render_tag_name', $tag['name']);
+}
+
+if (count($orphan_tag_names) > 0)
+{
+  $page['warnings'][] = sprintf(
+    l10n('You have %d orphan tags: %s.').' <a href="%s">'.l10n('Delete orphan tags').'</a>',
+    count($orphan_tag_names),
+    implode(', ', $orphan_tag_names),
+    get_root_url().'admin.php?page=tags&amp;action=delete_orphans&amp;pwg_token='.get_pwg_token()
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                             form creation                             |
+// +-----------------------------------------------------------------------+
+
+
+// tag counters
+$query = '
+SELECT tag_id, COUNT(image_id) AS counter
+  FROM '.IMAGE_TAG_TABLE.'
+  GROUP BY tag_id';
+$tag_counters = simple_hash_from_query($query, 'tag_id', 'counter');
+
+// all tags
+$query = '
+SELECT *
+  FROM '.TAGS_TABLE.'
+;';
+$result = pwg_query($query);
+$all_tags = array();
+while ($tag = pwg_db_fetch_assoc($result))
+{
+  $raw_name = $tag['name'];
+  $tag['name'] = trigger_event('render_tag_name', $raw_name);
+  $tag['counter'] = intval(@$tag_counters[ $tag['id'] ]);
+  $tag['U_VIEW'] = make_index_url(array('tags'=>array($tag)));
+  $tag['U_EDIT'] = 'admin.php?page=batch_manager&amp;filter=tag-'.$tag['id'];
+
+  $alt_names = trigger_event('get_tag_alt_names', array(), $raw_name);
+  $alt_names = array_diff( array_unique($alt_names), array($tag['name']) );
+  if (count($alt_names))
+  {
+    $tag['alt_names'] = implode(', ', $alt_names);
+  }
+  $all_tags[] = $tag;
+}
+usort($all_tags, 'tag_alpha_compare');
+
+
+
+$template->assign(
+  array(
+    'all_tags' => $all_tags,
+    )
+  );
+
+if ((isset($_POST['edit']) or isset($_POST['duplicate']) or isset($_POST['merge'])) and isset($_POST['tags']))
+{
+  $list_name = 'EDIT_TAGS_LIST';
+  if (isset($_POST['duplicate']))
+  {
+    $list_name = 'DUPLIC_TAGS_LIST';
+  }
+  elseif (isset($_POST['merge']))
+  {
+    $list_name = 'MERGE_TAGS_LIST';
+  }
+
+  $template->assign(
+    array(
+      $list_name => implode(',', $_POST['tags']),
+      )
+    );
+
+  $query = '
+SELECT id, name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $_POST['tags']).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $name_of[ $row['id'] ] = $row['name'];
+  }
+
+  foreach ($_POST['tags'] as $tag_id)
+  {
+    $template->append(
+      'tags',
+      array(
+        'ID' => $tag_id,
+        'NAME' => $name_of[$tag_id],
+        )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'tags');
+
+?>
Index: /tags/2.6.0RC1/admin/theme.php
===================================================================
--- /tags/2.6.0RC1/admin/theme.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/theme.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+check_status(ACCESS_ADMINISTRATOR);
+
+if (empty($_GET['theme']))
+{
+  die('Invalid theme URL');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+$themes = new themes();
+if (!in_array($_GET['theme'], array_keys($themes->fs_themes)))
+{
+  die('Invalid theme');
+}
+
+$filename = PHPWG_THEMES_PATH.$_GET['theme'].'/admin/admin.inc.php';
+if (is_file($filename))
+{
+  include_once($filename);
+}
+else
+{
+  die('Missing file '.$filename);
+}
+?>
Index: /tags/2.6.0RC1/admin/themes.php
===================================================================
--- /tags/2.6.0RC1/admin/themes.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=themes';
+
+if (isset($_GET['tab']))
+  $page['tab'] = $_GET['tab'];
+else
+  $page['tab'] = 'installed';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('themes');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+if ($page['tab'] == 'update')
+  include(PHPWG_ROOT_PATH.'admin/updates_ext.php');
+else
+  include(PHPWG_ROOT_PATH.'admin/themes_'.$page['tab'].'.php');
+
+?>
Index: /tags/2.6.0RC1/admin/themes/clear/icon/index.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/clear/icon/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/clear/icon/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/themes/clear/index.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/clear/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/clear/index.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 3049 2009-01-04 23:28:36Z plg $
+// | last update   : $Date: 2009-01-05 00:28:36 +0100 (lun. 05 janv. 2009) $
+// | last modifier : $Author: plg $
+// | revision      : $Revision: 3049 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/themes/clear/mail-css.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/clear/mail-css.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/clear/mail-css.tpl	(revision 25596)
@@ -0,0 +1,19 @@
+{* $Id: mail-css.tpl 2526 2008-09-14 00:33:53Z vdigital $ *}
+/* Theme wipi mail css */
+
+body {ldelim} background-color:#111; color:#69c;}
+#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/themes/{$themeconf.theme}/images/tableh1_bg.png);}
+img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #69c; background: transparent; }
+a:hover {ldelim} color: #f92; }
+a.PWG {ldelim} border: 0px; }
+a.PWG .P {ldelim} color : #f92; }
+a.PWG .W {ldelim} color : #aaa; }
+a.PWG .G {ldelim} color : #69c; }
+a.PWG:hover .P {ldelim} color : #69c; }
+a.PWG:hover .G {ldelim} color : #f92; }
Index: /tags/2.6.0RC1/admin/themes/clear/theme.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/clear/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/clear/theme.css	(revision 25596)
@@ -0,0 +1,363 @@
+/* generic colors - clear
+.gcText { color: #777777; }                 used for text
+.gcText2 { color: #777777; }                used for table header
+.gcText3 { color: #555555; }                used for tabs text
+.gcTextInput { color:#666666; }             used for inputs
+.gcLink { color: #005E89; }                 used for link
+.gcLinkHover { color: #D54E21; }            used for link
+.gcBgPage { background-color: #F9F9F9; }               used for page background
+.gcBgTabSheet { background-color: #F1F1F1; }           used inside tabsheet & menu
+.gcBgTableRow1 { background-color: #DDDDDD; }            used in for tables rows background
+.gcBgTableRow2 { background-color: #EEEEEE; }            used in tables rows & some widgets background
+.gcBgInput { background-color:#CCCCCC; }                      used for inputs
+.gcBorder    { border-color: #AAAAAA; }            used for borders
+.gcBorder2   { border-color: #666666; }            used for widgets borders
+.gcBorderInput { border-color:#777777; }           used for inputs
+*/
+/* text color */
+
+body, h3, dt, h2, .throw, .content, label , LEGEND  {
+	color:#777;
+}
+
+th { color: #888; }
+INPUT, select, textarea { color:#666; background-color: #ccc; }
+option[disabled] { background-color: #ccc; }
+input[type="radio"], input[type="checkbox"] { background-color: transparent; }
+
+
+
+INPUT[type="text"], INPUT[type="password"], INPUT[type="file"] {
+	background-color: #ddd;
+}
+
+SELECT, TEXTAREA {
+	background-color: #ddd;
+}
+
+INPUT:focus, SELECT:focus, TEXTAREA:focus {
+  background-color: #eee;
+  color: #666;
+}
+
+INPUT, SELECT, TEXTAREA { border: 1px solid #999; }
+
+.showInfo { color:#999; }
+.showInfo:hover { color:#333; }
+
+
+#copyright { color:#777; margin:5px auto 0px 240px; text-align:center;
+padding-bottom: 15px; }
+.header_notes {
+  background: transparent url(../default/icon/note.png) no-repeat right top;
+  border: none;
+  min-height: 48px;
+  padding: 15px 60px 0 0;
+  right: 0;
+  width: 550px;
+  top: 70px;
+}
+html, body {
+	min-height: 100%;
+	background-color: #f9f9f9;
+}
+
+/* #the_page { margin: 0; padding: 0; z-index: 1; top:0px; */
+/* padding-top: 0; min-height: 100%; width:100%; position:absolute; left:0px; } */
+h3, .throw, .row1 { background-color: #ddd; }
+.row2 { background-color:#eeeeee; }
+
+#content {
+	background: #f1f1f1;
+  border: 1px solid #aaa;
+	min-height: 467px;
+  margin-left:217px;
+  margin-top: 7px;
+}
+
+.content h3 { font-size:20px; letter-spacing:-0.4px; margin:0 20px 12px 0;
+ text-align:center; background:none; border: 0; }
+.content h3 ~ h3{ margin-top: 40px; }
+.content h4 { color: #aaa; font-size:14px; text-align:center; padding:3px; margin-top: 0; margin-bottom: 10px;}
+
+.content dl, dd { margin:5px; }
+.content div.titrePage { height:40px; }
+
+
+UL.thumbnails span.wrap2:hover { background-color:#7CBA0F; color:#999; }
+UL.thumbnails span.wrap2 {
+	background-color:#ddd;
+}
+
+
+/* borders */
+fieldset { border: 2px solid #ddd; }
+TEXTAREA { cursor:text; font-size: 13px; }
+.tagSelection label { padding-right:12px; }
+.tagSelection LI.tagSelected {background-color:#dbe8f3;}
+.tagSelected LABEL {color:black;}
+
+ul.thumbnails input { color:#666; font-size:10px; margin:0; background-color:#bbb; text-align: center;}
+.throw  { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; }
+label { cursor:pointer }
+.categoryLi, .menuLi { background: #ddd }
+.menuLi_hidden { background: #ccc !important; }
+a.Piwigo {
+  font-family: verdana, arial, helvetica, sans-serif !important;
+  font-size: 11px; font-weight: normal; letter-spacing: 0;
+  color : #0cc; text-decoration: none; border: 0; }
+a.Piwigo:hover  span.Piwigo  {
+  border-bottom: 1px solid #0cc9c;
+}
+TABLE.table2 { border: 2px solid #dddddd; }
+
+.categoryUl>li:not(.virtual_cat) {
+  background:url(images/stripe-cat.png);
+}
+
+*, *:focus, *:active, input:active, a:active, input:focus, a:focus { outline: none; -moz-outline-width: 0px; }
+A{
+	color:#005E89;
+}
+
+A:hover, A:active {
+	color: #d54e21;
+	cursor: pointer; 
+}
+
+.content .navigationBar {color:#999;}
+ul.actions, .content form#waiting  {text-align:center;}
+
+.header_msgs {
+	border:0;
+	color:#ccc;
+	font-size:24px;
+	height:30px;
+	margin:0; padding:10px 0 0;
+	text-align:center; width:100%;
+}
+
+/* tabsheets are often used in admin  pages => No specific css files */
+#tabsheet { width:auto; margin:-1px; margin-right:-6px; padding:0;
+border:1px solid #f9f9f9; border-bottom:1px solid #aaa; background-color:#f9f9f9;margin-top:-7px;}
+.tabsheet { display:table; white-space:nowrap; padding-left:10px; margin:0; width:auto;
+font-family:verdana,arial,helvetica,sans-serif; font-size:8px;
+list-style-type:none; list-style-image:none; text-decoration:none; }
+.tabsheet li { background:#f1f1f1; float:left; margin:0 6px 0 0; overflow:hidden; text-align:right; border:1px solid #aaa; border-bottom:none; position:relative; top:11px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px;border-radius:5px 5px 0 0;}
+.tabsheet a {
+display:block; font-size:11px; border:0;
+font-weight:bold; overflow:hidden; padding:6px;
+text-align:right; text-decoration:none; margin: 0; }
+.tabsheet a:first-letter { text-transform:capitalize; }
+.tabsheet li.selected_tab  {
+  border-bottom:1px solid #f1f1f1;
+}
+.tabsheet li:hover, .tabsheet li.selected_tab  {
+margin-top:4px; padding-bottom:3px; padding-top:3px; top:1px;
+ }
+/* .tabsheet a:hover */
+.tabsheet li.selected_tab  a { color: #555; }
+.tabsheet a span { font-size:10px; margin-right:2px; padding:0 3px 0 1px; }
+
+.sort { clear: none; }
+/* menubar is on all admin pages => No specific css file */
+#menubar {
+  padding:0; width:207px; z-index:99; text-align: left;margin-top:7px;
+  margin-left:0;
+}
+
+#menubar ul.scroll { overflow-y:auto; max-height:500px;
+ /* Only IE family supports colored scrollbar */
+ scrollbar-face-color: #ddd; scrollbar-shadow-color: #bbb; scrollbar-highlight-color: #fff;
+ scrollbar-3dlight-color: #d6d6d6; scrollbar-darkshadow-color: #ccc; scrollbar-track-color: #eee;
+ scrollbar-arrow-color: #0cccc; }
+#menubar dd { margin: 0; padding: 0;}
+#menubar dl { width: 200px; border:0; margin: 0; padding: 0; display: block; min-height:35px; border:1px solid #ddd; background-color:#f1f1f1; border-left:none; border-right:1px solid #ddd;}
+#menubar dl.first {border-top:none;border-radius:0 6px 0 0;}
+#menubar dl.first dt {border-radius:0 6px 0 0;}
+#menubar dl.last {border-bottom:1px solid #ddd; border-radius:0 0 6px 0;}
+#menubar dt {
+	background-color: #ddd; margin: 0; display: block; font-weight:bold;
+	position:relative; padding: 5px 1px 4px 5px; font-size: 13px; color: #777;
+	cursor:pointer;
+}
+#menubar li { margin: 0; padding-left:10px; }
+#menubar li A { display:block; }
+#menubar li A:hover {color:black; text-decoration:none}
+#menubar li:hover {background-color:#dbe8f3;}
+#menubar ul { color: #ccc; margin:0; line-height: 25px;
+  list-style-type: none; list-style-position: inside; padding: 0; }
+#adminHome       {background-color:#ddd;border-radius: 0 6px 6px 0;margin-left:0;margin-bottom:17px;}
+#adminHome:hover {background-color:#d0d0d0;}
+
+/* jQuery tooltips */
+.ui-tooltip {
+	color: #000;
+	background-color: #eee;
+}
+.cluetip-outer { border-color:#999; color: #777; background-color: #eee; }
+.cluetip-title { background-color: #ddd; }
+/* jQuery ui resizable */
+.ui-resizable { position: relative; }
+.ui-wrapper { border: 0; }
+.ui-wrapper input, .ui-wrapper textarea { border: 0; }
+/* jQuery tiptip */
+#tiptip_holder a { color:#42B0FF; }
+
+/* Global handle styles */
+.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; }
+.ui-resizable .ui-resizable-handle { display: block; }
+body .ui-resizable-disabled .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
+body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
+.ui-resizable-n { cursor: n-resize; height: 6px; width: 100%; top: 0px; left: 0px; background: transparent url(images/resizable-n.gif) no-repeat scroll center top; }
+.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; background: transparent url(images/resizable-s.gif) no-repeat scroll center top; }
+.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-e.gif) no-repeat scroll right center; }
+.ui-resizable-w { cursor: w-resize; width: 6px; left: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-w.gif) no-repeat scroll right center; }
+.ui-resizable-se { cursor: se-resize; width: 9px; height: 9px; right: 0px; bottom: 0px; background: transparent url(images/resizable-se.gif); }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: 0px; bottom: 0px; background: transparent url(images/resizable-sw.gif); }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: 0px; top: 0px; background: transparent url(images/resizable-nw.gif); }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: 0px; top: 0px; background: transparent url(images/resizable-ne.gif); }
+
+#ui-datepicker-div {background-color: #fff; border:2px solid #aaa;}
+#ui-datepicker-div .ui-datepicker-title {color:black;}
+#ui-datepicker-div .ui-icon-circle-triangle-w {background: transparent url(icon/prev.png) no-repeat;}
+#ui-datepicker-div .ui-icon-circle-triangle-e {background: transparent url(icon/next.png) no-repeat;}
+#ui-datepicker-div A.ui-datepicker-prev:hover,
+#ui-datepicker-div A.ui-datepicker-next:hover
+{
+  background-color:#eee;border:1px solid #aaa;
+}
+
+#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div  a { background-color: #eee; color: #08f !important;}
+#ui-datepicker-div .ui-datepicker-days-row { background-color: #bbb;}
+#ui-datepicker-div .ui-datepicker-week-end-cell, #ui-datepicker-div .ui-datepicker-week-end-cell  a { background-color: #ddd; color: #0cc; border-color: #bbb; border-top-color: #ddd; border-left-color: #ddd;}
+#ui-datepicker-div .ui-datepicker-title-row { background-color: #eee;}
+#ui-datepicker-div .ui-datepicker-title-row .ui-datepicker-week-end-cell a { color: #0cc;}
+#ui-datepicker-div  a:hover { color: #0cccc !important; background-color: #eee !important;}
+#ui-datepicker-div .ui-datepicker-header select { background-color:#bbb; color:#666; font-weight:normal;}
+#ui-datepicker-div .ui-datepicker-links { background-color:#ddd;}
+#ui-datepicker-div .ui-datepicker-header { background-color:#bbb;}
+#ui-datepicker-div .ui-datepicker-current-day { background-color: #eee !important; border-color: #bbb; border-top-color: #eee; border-left-color: #eee;}
+#ui-datepicker-div .ui-datepicker-days-cell { background-color:#bbb; border:1px solid #ddd; border-top-color: #bbb; border-left-color: #bbb;}
+img.ui-datepicker-trigger{margin:-2px 10px 1px -2px;}
+
+.ui-slider { background:#fff;border-radius:2px;border:none; }
+.ui-slider .ui-slider-range { background:#aaa;border-radius:2px; }
+
+.ui-slider .ui-slider-handle {
+    background-color: #eee;
+    border: 1px solid #aaa;
+    border-radius: 3px;
+}
+
+INPUT[type="text"].large  { width: 317px; }
+
+.bigbutton {background:none;margin-right:-5px; padding: 10px;height:auto;position:static;width:auto;text-align:right;}
+.bigtext {display:none;position:static;}
+.bigbutton input[type="submit"] {display:inline;position:static;height:auto;width:auto;font-size:18px;padding:10px;}
+
+
+/* hacks */
+* html[lang="en"] body .content h2 , *+html[lang="en"] body .content h2 { text-transform:capitalize; } /* IE */
+*+html  .bigtext { left: 70px; }
+*+html  .bigbutton input, * html  .bigbutton input  { left:0px; position:relative; top:-40px; }
+* html .bigtext { margin-right: 300px; }
+
+.themeBox {background-color:#ddd;}
+.themeBox IMG {border:1px solid white;}
+.themeName {color:black;}
+#themesContent H3 {border-bottom:1px solid #aaa;}
+.themeDefault {background-color:#dbe8f3;}
+
+#pluginsMenuSeparator {border:1px solid #ddd;}
+
+#pwgHead, #footer {
+	background-color: #ddd;
+	color: #666;
+}
+
+
+#pwgHead A, #footer A {color:#444;}
+#pwgHead A:hover, #footer A:hover {color:black;}
+#footer { background-image: url(images/piwigo_logo_small.png);}
+
+.pluginBox, .pluginMiniBox, .groups li {background-color:#ddd;color:#353535;border-color:#ddd;}
+.pluginBoxNameCell, .pluginMiniBoxNameCell {color:#111;}
+.pluginBox.incompatible, .pluginMiniBox.incompatible {border-color:#a00 !important;}
+.pluginBoxes .merged, .pluginBoxes .missing  {background-color:#d99;border:1px solid #a00;}
+
+.languageBox {background-color:#ddd;}
+.languageName {color:black;}
+.languageDefault {background-color:#dbe8f3;}
+
+UL.thumbnails li.rank-of-image {background-color: #ddd;}
+
+#batchManagerGlobal .thumbSelected {background-color:#C2F5C2 !important}
+#batchManagerGlobal #selectedMessage {background-color:#C2F5C2;}
+#filter_dimension_width_info, #filter_dimension_height_info, #filter_dimension_ratio_info {color:#ff7700;font-weight:bold;}
+
+.selectedComment {background-color:#C2F5C2;}
+
+#pwgMain {padding-left:0}
+
+.buttonLike, input[type="submit"], input[type="button"], input[type="reset"] {
+  font-size:12px;
+  font-weight:bold;
+  letter-spacing:1px;
+  border:none;
+  background-color:#666666;
+  color:#fff;
+  padding:2px 5px;
+  -moz-border-radius:5px;
+  -webkit-border-radius:5px;
+  border-radius:5px;
+  margin-left:0;
+}
+
+.buttonLike:hover, input[type="submit"]:hover, input[type="button"]:hover, input[type="reset"]:hover {
+	cursor: pointer;
+  background-color: #ff7700;
+  color: white;
+	text-decoration: none;
+}
+
+p.albumTitle img {margin-bottom:-3px;}
+
+.groups label>p {
+  font-size: 1.2em;
+  color: #111;
+  background-color:#ccc;
+}
+label>p.group_select {
+  color: #000;
+  background-color:#C2F5C2;
+}
+
+.userSeparator {
+  color:#999;
+}
+
+table.dataTable tr.even {
+  background-color: #ddd !important;
+}
+
+table.dataTable tr.even td.sorting_1 {
+  background-color: #ccc !important;
+  color:#333;
+}
+
+table.dataTable tr.odd {
+  background-color: #eee !important;
+}
+
+table.dataTable tr.odd td.sorting_1 {
+  background-color: #ddd !important;
+  color:#333;
+}
+
+table.dataTable thead th {
+  border-color: #aaa !important;
+}
+
+.userPropertiesContainer {border-color:#ddd;}
+.userPrefs {border-color:#ddd;}
Index: /tags/2.6.0RC1/admin/themes/clear/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/clear/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/clear/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$themeconf = array(
+  'name'    => 'clear',
+  'parent'   => 'default',
+  'admin_icon_dir' => 'admin/themes/clear/icon',
+);
+?>
Index: /tags/2.6.0RC1/admin/themes/default/fix-ie5-ie6.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fix-ie5-ie6.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fix-ie5-ie6.css	(revision 25596)
@@ -0,0 +1,35 @@
+/* Issues in IE from 5 to 6 only not to be used with IE7                      */
+
+
+/* to avoid vanishing objects in IE6 */
+H1, #theHeader {
+  width: 100%;	/* <- useless but seems to make IE6 happy */
+}
+.content {
+  height: 1em;	/* for IE6 it's like min-height */
+}
+
+/* fix quickconnect layout */
+FORM#quickconnect FIELDSET {
+  width: 99%;	/* correct an ugly 1 or 2 px misalignement with IE */
+}
+
+/* fix IE with another layout for thumbnails */
+UL.thumbnails SPAN.wrap2 {
+  display: block;
+  position: relative;
+  text-align: left;
+}
+
+UL.thumbnails IMG.thumbnail {
+  position: relative;
+  top: -50%;  /* Is this following hacking technic required ? */
+  /*\*//*/
+    margin-top: -40%;
+  /**/
+}
+UL.thumbnails INPUT {
+  position: absolute;
+  left: 2px;
+  top: 2px;  /* same as other browsers but not so pretty */
+}
Index: /tags/2.6.0RC1/admin/themes/default/fix-ie7.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fix-ie7.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fix-ie7.css	(revision 25596)
@@ -0,0 +1,11 @@
+/* fix IE7 footer */
+#the_page { min-height:100%; position:relative; padding:0; margin:0; } 
+#menubar { margin: 0; }
+#footer { left: 0; }
+
+UL.thumbnails li.rank-of-image {
+	text-align:left;
+}
+.groups li {
+  display: inline;
+}
Index: /tags/2.6.0RC1/admin/themes/default/fontello/LICENSE.txt
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/LICENSE.txt	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/LICENSE.txt	(revision 25596)
@@ -0,0 +1,57 @@
+Font license info
+
+
+## Font Awesome
+
+   Copyright (C) 2012 by Dave Gandy
+
+   Author:    Dave Gandy
+   License:   SIL ()
+   Homepage:  http://fortawesome.github.com/Font-Awesome/
+
+
+## Elusive
+
+   Copyright (C) 2013 by Aristeides Stathopoulos
+
+   Author:    Aristeides Stathopoulos
+   License:   SIL (http://scripts.sil.org/OFL)
+   Homepage:  http://aristeides.com/
+
+
+## Entypo
+
+   Copyright (C) 2012 by Daniel Bruce
+
+   Author:    Daniel Bruce
+   License:   CC BY-SA (http://creativecommons.org/licenses/by-sa/2.0/)
+   Homepage:  http://www.entypo.com
+
+
+## Typicons
+
+   (c) Stephen Hutchings 2012
+
+   Author:    Stephen Hutchings
+   License:   CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/)
+   Homepage:  http://typicons.com/
+
+
+## Iconic
+
+   Copyright (C) 2012 by P.J. Onori
+
+   Author:    P.J. Onori
+   License:   SIL (http://scripts.sil.org/OFL)
+   Homepage:  http://somerandomdude.com/work/iconic/
+
+
+## MFG Labs
+
+   Copyright (C) 2012 by Daniel Bruce
+
+   Author:    MFG Labs
+   License:   SIL (http://scripts.sil.org/OFL)
+   Homepage:  http://www.mfglabs.com/
+
+
Index: /tags/2.6.0RC1/admin/themes/default/fontello/README.txt
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/README.txt	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/README.txt	(revision 25596)
@@ -0,0 +1,75 @@
+This webfont is generated by http://fontello.com open source project.
+
+
+================================================================================
+Please, note, that you should obey original font licences, used to make this
+webfont pack. Details available in LICENSE.txt file.
+
+- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
+  site in "About" section.
+
+- If your project is open-source, usually, it will be ok to make LICENSE.txt
+  file publically available in your repository.
+
+- Fonts, used in Fontello, don't require to make clickable links on your site.
+  But any kind of additional authors crediting is welcome.
+================================================================================
+
+
+Comments on archive content
+---------------------------
+
+- /font/* - fonts in different formats
+
+- /css/*  - different kinds of css, for all situations. Should be ok with 
+  twitter bootstrap. Also, you can skip <i> style and assign icon classes
+  directly to text elements, if you don't mind about IE7.
+
+- demo.html - demo file, to show your webfont content
+
+- LICENSE.txt - license info about source fonts, used to build your one.
+
+- config.json - keeps your settings. You can import it back to fontello anytime,
+  to continue your work
+
+
+Why so many CSS files ?
+-----------------------
+
+Because we like to fit all your needs :)
+
+- basic file, <your_font_name>.css - is usually enougth, in contains @font-face
+  and character codes definition
+
+- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
+  directly into html
+
+- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
+  rules, but still wish to benefit of css generation. That can be very
+  convenient for automated assets build systems. When you need to update font -
+  no needs to manually edit files, just override old version with archive
+  content. See fontello source codes for example.
+
+- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
+  CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
+  We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
+  server headers. But if you ok with dirty hack - this file is for you. Note,
+  that data url moved to separate @font-face to avoid problems with <IE9, when
+  string is too long.
+
+- animate.css - use it to get ideas about spinner rotation animation.
+
+
+Attention for server setup
+--------------------------
+
+You MUST setup server to reply with proper `mime-types` for font files. In other
+case, some browsers will fail to show fonts.
+
+Usually, `apache` already has necessary settings, but `nginx` and other
+webservers should be tuned. Here is list of mime types for our file extentions:
+
+- `application/vnd.ms-fontobject` - eot
+- `application/x-font-woff` - woff
+- `application/x-font-ttf` - ttf
+- `image/svg+xml` - svg
Index: /tags/2.6.0RC1/admin/themes/default/fontello/config.json
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/config.json	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/config.json	(revision 25596)
@@ -0,0 +1,328 @@
+{
+  "name": "",
+  "css_prefix_text": "icon-",
+  "css_use_suffix": false,
+  "hinting": true,
+  "units_per_em": 1000,
+  "ascent": 850,
+  "glyphs": [
+    {
+      "uid": "bf882b30900da12fca090d9796bc3030",
+      "css": "mail",
+      "code": 9993,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "ccc2329632396dc096bb638d4b46fb98",
+      "css": "mail-alt",
+      "code": 61664,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "474656633f79ea2f1dad59ff63f6bf07",
+      "css": "star",
+      "code": 9733,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "d17030afaecc1e1c22349b99f3c4992a",
+      "css": "star-empty",
+      "code": 9734,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "8b80d36d4ef43889db10bc1f0dc9a862",
+      "css": "user",
+      "code": 128100,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "381da2c2f7fd51f8de877c044d7f439d",
+      "css": "picture",
+      "code": 127748,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "4ba33d2607902cf690dd45df09774cb0",
+      "css": "plus-circled",
+      "code": 10133,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "0ddd3e8201ccc7d41f7b7c9d27eca6c1",
+      "css": "link",
+      "code": 128279,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c1f1975c885aa9f3dad7810c53b82074",
+      "css": "lock",
+      "code": 128274,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c5fd349cbd3d23e4ade333789c29c729",
+      "css": "eye",
+      "code": 59146,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "a3f89e106175a5c5c4e9738870b12e55",
+      "css": "tags",
+      "code": 59149,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "7034e4d22866af82bef811f52fb1ba46",
+      "css": "code",
+      "code": 59402,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "d35a1d35efeb784d1dc9ac18b9b6c2b6",
+      "css": "pencil",
+      "code": 9998,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "dcedf50ab1ede3283d7a6c70e2fe32f3",
+      "css": "chat",
+      "code": 59168,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
+      "css": "trash",
+      "code": 59177,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c95735c17a10af81448c7fed98a04546",
+      "css": "folder-open",
+      "code": 59398,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "559647a6f430b3aeadbecd67194451dd",
+      "css": "menu",
+      "code": 59401,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "e99461abfef3923546da8d745372c995",
+      "css": "cog",
+      "code": 9881,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "98687378abd1faf8f6af97c254eb6cd6",
+      "css": "cog-alt",
+      "code": 9967,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "5bb103cd29de77e0e06a52638527b575",
+      "css": "wrench",
+      "code": 128295,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "9affc98d652b86628d650ee58dbf0357",
+      "css": "basket",
+      "code": 59197,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "598a5f2bcf3521d1615de8e1881ccd17",
+      "css": "clock",
+      "code": 128340,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "98d9c83c1ee7c2c25af784b518c522c5",
+      "css": "block",
+      "code": 128683,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "6605ee6441bf499ffa3c63d3c7409471",
+      "css": "move",
+      "code": 59410,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "8cbd5bcfb00043b8094fd7ac21ae5e06",
+      "css": "angle-circled-up",
+      "code": 59417,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c35e0796f6f806945a44b1655ce7bbe7",
+      "css": "angle-circled-down",
+      "code": 59416,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "bc71f4c6e53394d5ba46b063040014f1",
+      "css": "cw",
+      "code": 59404,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "a73c5deb486c8d66249811642e5d719a",
+      "css": "arrows-cw",
+      "code": 59396,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "37c5ab63f10d7ad0b84d0978dcd0c7a8",
+      "css": "shuffle",
+      "code": 128256,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "6020aff067fc3c119cdd75daa5249220",
+      "css": "exchange",
+      "code": 59397,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "d407a4707f719b042ed2ad28d2619d7e",
+      "css": "signal",
+      "code": 59393,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "09bdae120f85e79f2db16145a9e1f6d8",
+      "css": "crop",
+      "code": 61733,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "9396b2d8849e0213a0f11c5fd7fcc522",
+      "css": "tasks",
+      "code": 61614,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "4109c474ff99cad28fd5a2c38af2ec6f",
+      "css": "filter",
+      "code": 61616,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "6fe95ffc3c807e62647d4f814a96e0d7",
+      "css": "sitemap",
+      "code": 61672,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "7222571caa5c15f83dcfd447c58d68d9",
+      "css": "search",
+      "code": 59409,
+      "src": "entypo"
+    },
+    {
+      "uid": "6274e0601f2feef7eced89146e708de0",
+      "css": "user-add",
+      "code": 59403,
+      "src": "entypo"
+    },
+    {
+      "uid": "7e4164950ffa4990961958b2d6318658",
+      "css": "info-circled-1",
+      "code": 59415,
+      "src": "entypo"
+    },
+    {
+      "uid": "513ac180ff85bd275f2b736720cbbf5e",
+      "css": "home",
+      "code": 59406,
+      "src": "entypo"
+    },
+    {
+      "uid": "44199a54057e6e264fde61a49b034171",
+      "css": "upload",
+      "code": 59411,
+      "src": "entypo"
+    },
+    {
+      "uid": "5d595124cecf472869d1cdc020da0ccc",
+      "css": "upload-cloud",
+      "code": 59412,
+      "src": "entypo"
+    },
+    {
+      "uid": "6a7b9d4863bb7e6c79e9457a72d689b6",
+      "css": "tools",
+      "code": 59395,
+      "src": "entypo"
+    },
+    {
+      "uid": "414fe97e4af5215a06d29be0f2cecdf5",
+      "css": "network",
+      "code": 59414,
+      "src": "entypo"
+    },
+    {
+      "uid": "39c4d0e225a1263a398a47523cb5b9bd",
+      "css": "brush",
+      "code": 59399,
+      "src": "entypo"
+    },
+    {
+      "uid": "ddecf5ad7935e3fb1b70dac6ed00d06a",
+      "css": "language",
+      "code": 59392,
+      "src": "entypo"
+    },
+    {
+      "uid": "8beac4a5fd5bed9f82ca7a96cc8ba218",
+      "css": "key",
+      "code": 59413,
+      "src": "entypo"
+    },
+    {
+      "uid": "4bcb3aaa98736be3027bef7c76c55021",
+      "css": "flow-branch",
+      "code": 59400,
+      "src": "entypo"
+    },
+    {
+      "uid": "xoidjr6q3rzi7tpw6hci1k6srz15g11l",
+      "css": "puzzle",
+      "code": 59318,
+      "src": "typicons"
+    },
+    {
+      "uid": "937f4db8b6ff3348a1d9fcd5e12fd2fe",
+      "css": "mail-1",
+      "code": 59408,
+      "src": "iconic"
+    },
+    {
+      "uid": "e3699d145bd628d2a35d4a508b616f0c",
+      "css": "equalizer",
+      "code": 59407,
+      "src": "iconic"
+    },
+    {
+      "uid": "05ef9b5e8742971aa85b23cfcbe71594",
+      "css": "users",
+      "code": 59394,
+      "src": "mfglabs"
+    },
+    {
+      "uid": "e36d581e4f2844db345bddc205d15dda",
+      "css": "group",
+      "code": 59405,
+      "src": "elusive"
+    },
+    {
+      "uid": "10fdd98fb50c590b805a3ad6ff9c55f5",
+      "css": "asl",
+      "code": 57517,
+      "src": "elusive"
+    }
+  ]
+}
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/animation.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/animation.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/animation.css	(revision 25596)
@@ -0,0 +1,85 @@
+/*
+   Animation example, for spinners
+*/
+.animate-spin {
+  -moz-animation: spin 2s infinite linear;
+  -o-animation: spin 2s infinite linear;
+  -webkit-animation: spin 2s infinite linear;
+  animation: spin 2s infinite linear;
+  display: inline-block;
+}
+@-moz-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-webkit-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-o-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-ms-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-codes.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-codes.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-codes.css	(revision 25596)
@@ -0,0 +1,56 @@
+@charset "UTF-8";
+
+ 
+.icon-mail:before { content: '\2709'; } /* '✉' */
+.icon-asl:before { content: '\e0ad'; } /* '' */
+.icon-star:before { content: '\2605'; } /* '★' */
+.icon-star-empty:before { content: '\2606'; } /* '☆' */
+.icon-user:before { content: '👤'; } /* '\1f464' */
+.icon-picture:before { content: '🌄'; } /* '\1f304' */
+.icon-plus-circled:before { content: '\2795'; } /* '➕' */
+.icon-link:before { content: '🔗'; } /* '\1f517' */
+.icon-lock:before { content: '🔒'; } /* '\1f512' */
+.icon-eye:before { content: '\e70a'; } /* '' */
+.icon-tags:before { content: '\e70d'; } /* '' */
+.icon-code:before { content: '\e80a'; } /* '' */
+.icon-pencil:before { content: '\270e'; } /* '✎' */
+.icon-chat:before { content: '\e720'; } /* '' */
+.icon-trash:before { content: '\e729'; } /* '' */
+.icon-folder-open:before { content: '\e806'; } /* '' */
+.icon-menu:before { content: '\e809'; } /* '' */
+.icon-cog:before { content: '\2699'; } /* '⚙' */
+.icon-cog-alt:before { content: '\26ef'; } /* '⛯' */
+.icon-wrench:before { content: '🔧'; } /* '\1f527' */
+.icon-basket:before { content: '\e73d'; } /* '' */
+.icon-clock:before { content: '🕔'; } /* '\1f554' */
+.icon-block:before { content: '🚫'; } /* '\1f6ab' */
+.icon-move:before { content: '\e812'; } /* '' */
+.icon-angle-circled-up:before { content: '\e819'; } /* '' */
+.icon-angle-circled-down:before { content: '\e818'; } /* '' */
+.icon-mail-alt:before { content: '\f0e0'; } /* '' */
+.icon-arrows-cw:before { content: '\e804'; } /* '' */
+.icon-shuffle:before { content: '🔀'; } /* '\1f500' */
+.icon-exchange:before { content: '\e805'; } /* '' */
+.icon-signal:before { content: '\e801'; } /* '' */
+.icon-crop:before { content: '\f125'; } /* '' */
+.icon-tasks:before { content: '\f0ae'; } /* '' */
+.icon-filter:before { content: '\f0b0'; } /* '' */
+.icon-sitemap:before { content: '\f0e8'; } /* '' */
+.icon-search:before { content: '\e811'; } /* '' */
+.icon-user-add:before { content: '\e80b'; } /* '' */
+.icon-info-circled-1:before { content: '\e817'; } /* '' */
+.icon-home:before { content: '\e80e'; } /* '' */
+.icon-upload:before { content: '\e813'; } /* '' */
+.icon-upload-cloud:before { content: '\e814'; } /* '' */
+.icon-tools:before { content: '\e803'; } /* '' */
+.icon-network:before { content: '\e816'; } /* '' */
+.icon-brush:before { content: '\e807'; } /* '' */
+.icon-language:before { content: '\e800'; } /* '' */
+.icon-key:before { content: '\e815'; } /* '' */
+.icon-flow-branch:before { content: '\e808'; } /* '' */
+.icon-puzzle:before { content: '\e7b6'; } /* '' */
+.icon-mail-1:before { content: '\e810'; } /* '' */
+.icon-equalizer:before { content: '\e80f'; } /* '' */
+.icon-users:before { content: '\e802'; } /* '' */
+.icon-group:before { content: '\e80d'; } /* '' */
+.icon-cw:before { content: '\e80c'; } /* '' */
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-embedded.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-embedded.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-embedded.css	(revision 25596)
@@ -0,0 +1,109 @@
+@charset "UTF-8";
+
+ @font-face {
+  font-family: 'fontello';
+  src: url('../font/fontello.eot?12178966');
+  src: url('../font/fontello.eot?12178966#iefix') format('embedded-opentype'),
+       url('../font/fontello.svg?12178966#fontello') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'fontello';
+  src: url('data:application/octet-stream;base64,d09GRgABAAAAADHgAA4AAAAAS4AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWfC1hMmNtYXAAAAGIAAABPQAAA0K+KBENY3Z0IAAAAsgAAAAUAAAAHAbf/wZmcGdtAAAC3AAABPkAAAmRigp4O2dhc3AAAAfYAAAACAAAAAgAAAAQZ2x5ZgAAB+AAACV1AAA2MqZBxsVoZWFkAAAtWAAAADUAAAA2ARWN4WhoZWEAAC2QAAAAHgAAACQIYAQ4aG10eAAALbAAAABUAAAA2MPEAABsb2NhAAAuBAAAAG4AAABujGh/iG1heHAAAC50AAAAIAAAACABpArEbmFtZQAALpQAAAF2AAACzcydGRtwb3N0AAAwDAAAAXwAAAIe0XXfQXByZXAAADGIAAAAVgAAAFaSoZr/eJxjYGRewDiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOKix/v/PHPQ/iyGKOYxhGlCYESQHAPoQDDJ4nN3Su0oDQRTG8f9gokk0WRDEDQimMLvE+7VMZ2drIdhYWFla6nNY5Bkkkir4GJYJWAQtZsEiG7xgEYln5qRJIWjrwG++nd0zuwN7gAwwJVYwuPEoK+PXUxTAPEnFvaxXqciV3Immo0bUj/NxKb7pNW3BFm3F1mzdtpNyepe20l6aDKqjkXtZlP2xlsna7rB70V3oDDufncvl03AUfoUv4XP4EJ6EQXAdXAVHwWGQG5/xl8NM/6X6n445N5mz8Wpp8mGUdf/TFUg2lOuGqK9cd8R5hdTGJYXsiW8UM9BrKnJgCwrZY4vK9Y2tKGYla8qdztYVrratkG8kEklZpgDpFYXsSVtKOpK0p1iTTBTrMKgqNjCvGQ82MW/nHmxh3vFgW3Legx3JRQ92JWMP9iSPPdjHfNx6cPANC4F/vwAAAHicY2BAA0YMRsxh/7NAGAAR+APpeJydVdl201YUlTxkcBI6ZKCgDtfcOFDryoQpGDBpKsV2IR0cCK0EHaQMdOSdxz7ra45Cu1Yf+bTufT0ktHSttiyWz75HW2fYOudGHCMqfRqIa9ShkpcDqaw9lkr3SVzXdS+PlQwGcV22Ek9Jm6idJEpq3exQLvFY6ypZJ1gn4+UgVk9VnmegDOIUHmVJRBtEG6mXJkniieMniRZnEB8lSSAloxCn0shQQjUaxFLVoUzp0KvXE3HTQMpGox51WFT3Q8UnxzWn1KwDRipXOcIV69VGvhunAy97kMQ6wbOthzEeeKx+lCqQipHpyD92Sk6UhoFUcdShVuLoMJNf95FMKs1ApoxiRaXugbjd/XTbFjE9dDq+LkqVRqq6uc4omu3R8aiDKA/Zxumk3NDZ9vDlGVNUq11xs+1AZg1cSslsdJ9EAB0mUuPpAU41nAKpGfVHxdnnzwESyVyUqjxVMod6A5kzO3txMe1uJ6uycKSfBzJvdnbjnYdDp1eHf9H6F0zhzEeP4mJ+PkL6UGp+Ik4kpUZYzPKnhh9xVyBCuTGICxfK4FOEOXRF2tlmXeO1MfaGz/lKqWE9Cdroo/h+Cv1OJCscZ1Gj9UiczWPXda3cZ1BLtbsXOzKvQ5Ui7u8LC64z54RhnhYLVV+e+d4FNP8GiGf8QN40hUv7lilKtG+boky7aIoK7RJUpV02xRTtiimmac+aYob2HVPM0p4zMuP/y9znkfsc3vGQm/Zd5KZ9D7lp30du2g+Qm1YhN20duWkvIDetRm7aVaM6dgQaBmkXUhVB0DSy+mHcVpv1QNaMNHxpYPIuYsj66kRHnbW1yh/Ff3XiCwdyaaKnuyIXm+Iur9sWPjzd7quPmkbdsNX4xpHyMB5Gehya0Fn5zeG/7U3dLpruMqoy6AEVTArAAGXtQALTOtsJpPWap/jyB2BchnjOSkO1VJ87hqbv5Xlf97E58b7H7cYut1x3eQlZ1g1yY/bw31Jkqusf5S2tVCdHrCsnj1VrGEMqvCi6vpKUe7S1G78oqbLyXpTWyueTkJs9gxtCW7buYbAjTGnKJR5eU6UoPdRSjrJDLG8pyjzglIsLWobEuA51D2prxOmhehgbCyGGobS9EHBIKV0V37TKd/Eeq2vY6PjFFeHpenISEZ/iKvtR8FTXRv3oDtq8Zt0ygylVqqf7jE+xr9v2UVlppI6zF7dUB9c06xo5FdNP5GvgdG84aN0DPVR8NEEjVTXH6MYoYzSWNeXfBHQxVn7DaNVi+z3cT52kVay5S5jsmxP34LS7/Sr7tZxbRtb91wa9beSKnyMxvy0K/DsHYrdkDdQ7k4EYC8hZ0BjGFiZ3GK6DbcRt9j8mp//fhoVFclc7Grt56sPVk1Eld9nyuMtNdlnXozZH1U4a+wiNLQ835tjhciy2xGBBtv7B/zHuAXdpUQLg0MhlmIjadKGe6uHqHquxbThXEgF2zbHjdAB6AC5B3xy71vMJgPXcI+cuwH1yCHbIIfiUHILPyLkF8Dk5BF+QQzAgh2CXnDsAD8gheEgOwR45BI/I2QT4khyCr8ghiMkhSMi5DfCYHIIn5BB8TQ7BN0auTmT+lgfZAPrOoptAqZ0aHNo4ZEauTdj7PFj2gUVkH1pE6pGR6xPqUx4s9XuLSP3BIlJ/NHJjQv2JB0v92SJSf7GI1GfGl5kjKa8OnvOODv4El+qtXgAAAAABAAH//wAPeJyNew94W1eV5z333fdHT89PT9J7T7Iky7L+W1ZkRdYfx3EURXFs13ES13ZNHKchlDQYJ4QQsvmyTNOvtJ22dLpNN8t2S4bttCwtXVqYNO1ShulkWCjsbOnMFvhogcL39QOWTfm7O8PHdrqxsuc+Kalb6EBiX71773lP7957zu/8zrnXBAi5/LzwsNAgMbL+Gb9bEAiF5vZzgZndDQ2AUHKIUKrSsXBDxQpdwTbynsWne8yg4BsA0wN+2zJ1GARZiqcr5Zo/w8tUrVrqBdEWHvZ8owiapf2/N7osDYrf0HsheLM7pp2CYAxe0zxfa73GFLcB8u23yz6VKRD4mkezxGwrEGhlRYJfeeX9XCRHNjWMHqvLpciSKABx/1Gv+kw6FQz4vYJnAGqD4IGAXAv4O++diL/De9OPPP7zlff/4vH+b3+7xUcQUH//COKPJL7zncQjP//gB+F8ZzCRdxqKM5YnhT2CShSyTHY2tr93cXoLI+KIiwIpZ8MGo5ACgbImkQgBiSwRoALskkFkeCFSrIMwRwQQJvYuzV87NTmQS8S6g36f4h2Acjqug12qpixT8oAk2wHblHXI4BAlGf8PAI4zk87geLFMl2t1qKUHoQCZSrm6Gaq1TuMQTkC1hv83QsnuBTuAUxLgD/MAVqNAN86enKULxxcgosjLqtuflUTPTJcs7+gOuWRm3KRoRjiwSzKkcZuJSlb1KAdlBVRxWdEDqbassiMYcimC9yZZA0/EnhE98qTJ2EbddVBWYd/G+fkT8/Mnea8RtcIlSZesGRBHu5TpiKHK73Npo6LUiIq6pJU8kbAHNNmR7Q7F1smabM60RT2K4oiKWyMousMRxGXgk3v5GBsUrsF18JEw+RPyDPknsBpD//t//eT7jNmH9lHR9c3//vW/wbU5MUd9ZDxBwfP0X1AKGwtUosOoM/f/m48KXYIL1S+N6jfvBY8PfB5YJjZhqs2WiOoi6i4i+oH4RFxIKgHd5QaXgovhkpYM1E1ZAHmJCKRLE7qWTPD5rLkAWJa6VQdNc2uoxrN/6LEojzd6LN8f/oLOQxcb+Z//7Kf/80evvvCNv/tvz33lLz//+H/+zCP/9r57/uyuO4584OB79+6pb6oO5XN+0zT9vqDlqJVkolqJ5bQOAX4l8KYolKryWzUt8Xs1rfKmom2CP0LRLNN5JNc0HBw+zual8+x4Rge5/Uh8BD4Nb8YKPnKohHcH8OHOA/gLedfem844977jrfi9a++F33D1OzEPn8sP5yE3kofO53cVcUHS/L2MdTXdktiwbElmXcuS2uUPNFmXNMPEpNIlXycqKCi7uaA2pkpSwx+UZIELQpffbopd4rUs6FW6JJSEG+ckNULHQLR63JpbzgswJvSo8tycrPYIZQNYTvF6IwFGt9KIC5s70jnFkWa/I6yp2pvSV2zpxz15mu3tyeXoIhYbc7m/fx++jO4PhFOSxrxNVnJLo+EuRboOTYqx7R5RVPJa0O4CRX67pKqMhhxJ9/q2ZNTqCvs1qrT+x06X4tE365RmwykAdxmylGLdo7h2ulxGF++JusoI1tkAZHhXl+GiQ9jXvivDu7Rypn2TC29S3rwJH3r1JoUIly8jll6kXyXdpEYmyHCjkgz7gAmUcFfQJCJpI6aASCpwJGUMdmEfmyMM2ERldCA7MixZAykv11mdcqUdBFSOjNe0h/pKVX8Fq1KmLy7JJmojCwyV6sJmQGX2mpLcF0/XvOUqCqKP81n/fjGSHA3TUN1b2H2/5dMkoYpARgWBSZeex6vZV1nMFwtq1B2KmlHx1Wh5opy69HyyCuWUUE2V3fCE6T02FYyEQnp66pjXbM0rqkpndV0UqaBJ+7Y8SSO6jTBqGiHhyeBsZfXhVBmqSfruVLmMmMYc37KDXkZ0M3FOkuT2hh21KBV7bCrQboEK6DdwahhClg8hK0NEKq7gJNEVnCNhhfB52ycBn6cd+AFslk/UeLiR/l1JsvK7gosNLyF9sWDA61EVfAvJlI2BQC0jW0MWlBNxGSTLHCrVoJoJQKLCqUPG8bb2N0q3DU3CuzWRtb7JutDXDQrRi63iRWGHef3F682N9m2mPHTb0OgERQ1sfYthCQX2oYutwdfgbI91/Wt7Les2G/3r5VWcg3cLbpIgRdJobOoCAr1cJ5roYAEZg7AsgsDw5yCRcRQyLBEmSWwXYUyaJxKTJi0rkUwlkqYSGIBKOS0nsMgkUAcsLAKWaW9EVLJRF6q1Ci+Q+sQLtA4ldIyfsfXTtj7hMeG0buP43qycP/b1i393RPrIs7/50s0wMom9p7EDxU0PVu51ru+1S//quePHn/sZLwjDsXxF+A6+8zrU7y1kO+lvpLdPNLeMDoe9uiy6SYPrOSW7OMuhc5zwTAz0+wYE74A/XUX8lNBpR6FWqtnVGn7WAcEuU7HxIoCwpQsIjH3pTFvWlvCqzv272bkKIKCnM8DSZVcFATkql7KD4fgN3eHdPZqBhgWhxPqT6T7Wt2mhOJa31rU+NW81peqIYrFcSTtJRxtMGR6BB1hzBCRxpMTos6mYHf5iTyL6+fIopDIsk1J6jZjVp0XSanxdszs4bnYfO3JTr086CmfXZYPJb/bn9TT09kdjfa9vjOf6gQwE032twXR2kHCzvvzPaP+niJfEyRCpNcpuiirahRMh/GHzD9j9VtBG88dBIuq3KaAkRyGGFpmW46iqUagiMcI1FtGHsFiSO61qHlgADf66W+JnXjwTv+W67a8Ce7X1V4Z7/IBhG2NFZLLfc+9svd76fuv1nW73TlAgDcpON4zcvmVk6/KZM8tbR7bcfuyuu+AaFD2wTdOpTy2OGS/4/R89e/aj/rR5y1n64M2mM76/YUnUZYX0kDLJN/rThGtxkzDKVkRAMom/S3hBYQ4tm8JErLt/OOTDQfm5r47SKpgy95od11vjrg5XljdynwjVMu9KtJvfQP9Gs/U0vc5s/creaLY+ZEVzPa/1TFpw2nzZwrYeM2SgDVvYM9lzyumw6O5ojqYbSanY+l4UhSzeONlzsScHUS7Y4zQaXrxvI++KOq0dLnzOwe8U6vZkY9s1EQlDj80By+/TJSAb+6nAhGa5RIXNaKkMF3CZdMZMGOIqt1nOhZkw0WzURxPxVEJEFmxyHpLhkI5DrKTL1cpmWpVrdVpDolt27DRg8oVGpe8VHILMMR8nJGNze66jVCYKgm/l6UPF0vh1VhhBBycXvxKQReps205Yefqlp1demhkTNSXsYiITgKpK2LpuvFT8D0dj3j2fbm6bhq7JeXhkx+3TrvUBkaky1z9BwodExaDPyB7fuvP26enbf7D1REa31T63IKKTpYoKTAysd00JpcHyHVMDuczJK3z1ScGHuuAhvWSQbCRbyfvIdOMaohOXorsWPV0U3T4yQEVaEgV8WcQFGXCiZLdb3kVk2T1H3LJ74uCB9+xbWpyf3TV9zcSWhr/sr/B/Q0ZwANCnObQNfRqnY4E/UPd7+7xoIej+6gBDOIEJSRYtLoOCCXSOGS/OP9e6jRx6uOr1IuGzIaoqSfRsvDj95uW9qty+lNXJlqYoFF6kitL62BthJj4pMfi5qlTLqVYRXV6Fyz2RceXt83ZeyXwO5+yZ1t/yRtjCy3e4bh2g3tVfa6aqmvTGLSKAOIffuPrrwlizQP3OS1xvRSBqXq92uMXD9Dm0PS8ZJWONLTlgigv1DxBaFPQTCmqjTCQMRFEbiYjLtlfgQAy7HCc7xy2VTKSTmaG8H4m0KzggcpCpU/vKp5+zCBER2pSRQ6DW9nEMqkNFSMQLUEUPExV6Abvgxo5lwm87F1M+ffWvBEq7MCqxqc+7+jXd1uwbjnlMGuw67dIViSPhg7otR3O50SzNRzqfdGvrR10mHdMUXQ/bEdvWlUiawgtm1AZJM3SXbnN9Axz/8/RR+n/ILrK10XBhuKPi0GWONhieIo4i/6KKwKtA5zA2BToBZHLb5vpwpZDvz8R6ArbRJTF0TrvcGHfzCAIdUdUOWG01qiG0pjmxQleU4ViESBvg9ofONi5L6VrFUbMqJ+zVki0jAttch3rQP2XSdCpVraZsK2RDsfc0vrY1dsMYdHlV83RfHnx2MJyuVtOWFQpCIXbar3n18f3jYKmG53Rv0TSDcGZs/yTt8mq++3oLPrs7lC6X07aNjyv03mfoqjl2oEH545b6CmbYDPLuUDdGWoW+Jd7N5wjj+cs/Et6g3ycbHO/8XnKQ3NG4LYm2VxociKOPiYIbDk5XwkFRdAfQB25yU01qgku7fvf8KGqT0kTcYMipUHaFoPAKcYvuFRVQ0Vw8QUDI+4mIWK2JqGSay6XtIJrmmiUuzTV+44H37t+7uHDd3Mz2qWsmhqvr8v3ZTKov5u8yBtCbyxgupTmW6UKmgDwGox2MfzJlRMTqUK2cKSMPK/Vg8FPFiM6yPWDh5Ip2jQOniWCZSSPbSaRsn23iclW4dTsXVT9fFmFIEH4Qndmn0hhlC/WcUZg8MFxujJYa9B6NIQ6xT1KlIKkPSgpVmHJOW7ip9WgkzuKh/GOR0aiSHKUKbdXVhRm2IJXOFam0wNRHqbJfvfW+SSjNPtukaYmNfnE4PT1fUKTxkflGyTgQxMi7ir4vcoThY5dt/KIc/kYPTr4qaS9pkfytdnD3uOSj5yOtX70usUc/TRnzUVtpPQuKs14YL1zF0M2o26ONDcQlExcipEgQJ0WBiLsIp4nIFLgtc0o8h+ZOGbfmndsrnX9DanCg1lHlNsaV7N+pvw0x3173v62OaHiIoxUWL629lA/LqlO8/HsFClcu1MZT/IoXd7YuOLjXxPIfVi/yaxrEEuxLz/OKUMWy44M/xp4USmQ9uZGUGoNLM9ds3lQt9xgEnREyDZRA3o82vguZJsw6LGN89tqRDeuLAYt5BipOOI/wXuZOtB1bY60UpVdib1nibDlKEeesQB90JNb06zTQFrCQaRcoamsGsaEdiKXN7LYeK5WFXr++TheZWF/ZMDBfjwuM6es83lg23XPzAcNnwqUz9L9qImWl3XsXygwddlLzuNAxxKPe0rinJSm2FhhdHxYVwaV3pdbLnpDb7Z/KhFNWxjcy4MsM1FbqkK7P5mphf27E1+9PhTNTfk8h6/OOIqP5dtyIJdbtHqblvQOJmBEv6n1eFV1JbNRwmUH5Trecjue07rQvnldVQ1I9cQP5+xuXzwr/JITIAPL3BbKPpBrxxd2NzYxsRiZABT6xaPzoJzCgIu/xWv6IXzQH/DqYCT5vbQPGAIlPKL+olQIl3sFzccjIcaaQtfELSOMqpGwZkZGHVDgSnlSxuSyKOg+xoRZwHvnn6Bu8HmZo4+4uGmNSLooNetq+o/yRkGaejM3k40xRp3WWG3kdzvrMom20blCUSY2WjFhpeTg/OzYW1HGGb9E0psV1lh5JS1nKfJcea03/1vQVbHhDidieLqb7pjWNBpkUKUp61NgjUaUcHB4pUDRohRWDpVbSNnK6D76raHXly8v13SEtv3PneHBk0h4elnySNqaWItm6NoJGvjr2+sI/mkbB18mhLqEdJzHqn2ns2JqikmvT6CAyqAB3ewq6KIZOmkgisiG0bxCpS1xqmzW6KpxximGfIJA5HkVMjG9LVVKVSrpiJtGqwbQ4gXRyV1dNWfIAUp3S1VyVv2PqqP0cJ6+kvGoVntNy0li2sD35k09c+8DopJt72Td0m7p2ZA/Upm7NSAFRQ3PVTaPdOnt0e7vxg7IGyZ9+4tqz/KYgiALc/6X6hkm3c7sdce9IZafq6nCXBl/sNOxo1yXWEeR+iaLv/qrwGn2SBNGqNzdGUyBKOGYeE0kYyEs4FZRxi5aRRsvsSoS0yC18jvAwwp9K2ImAyUNgnkuW+3jBHQpPl3EfzHMePEvHZ4jnQXiY1McdNXJq4aKqrBJVkeTzoviU6FEFguNyrlb5FaIPUXXs/JtDsgr8VzovGuJ5EUFMhayCkpp0CH8UFX+wvTOmf2bduOY+0k92P9MTDgkIzc3t51wzuxtRjAGYsA9pGCe+e9cgN09UTIQbPTxIWHmn/sUvJEYS1QqaHs9IODysADzNw1M7GasvLnnQHdY6KO0MnnX7/jq4kF592B8B77PBhRR9tz/65VaxcizxLKIlTA09NTQFg/i72ef/YSSrx01e/uWecv8PBVmkNDg0NTXkm2qv16XLNwvfFaZIF/ol5b/0mgrQ7ECt6mCkVOOJUrAJv3YCFce2yYn0vlktuXDvPJPKQeFwqPXpE+kFRfFFY3FDaWRPwHOfjasz+5LzPi3EpNHP0sdCrbHj6aakx6MxRKj59HFYcHJGX6K3CJTkSYXU0Z52NaZjvbaFjEOAJg5FwbgH2JIqUwHtSZCWXIALIu7CD5HPn0gmGptr1bGtmycaExtHqvVavTxUHBzIhUNegzM/kyca8OdqjO1tMzrEfqvKo7J2VeR5Zc4I/e0P04YrF/SWKSm/c6SQy5WDbHz8wPjkJC+yN4yUS0599enscC43nB2L8DILT7Q/6d0z0ZGFclDXjVgxGZ0pjY+XdsbhI/FpfjUdfyEa9dmjhZhTjWSzI9ns6jgvR7J0d/uTr087z7AHY4E2b6g2hrLI9pVOLCCiEYmOEVEE9aW3KxfyrUp6iGcZrXbOkBPdGrcfrGc69UCnLq+tL5rGpV87eSHB67HhX6gdmHAunRKMSSfz5JSgX+nBypWx/BWz6ZeIiei5gXukgpfnS5u/J3aplLOZgI95B1I8jY/GXwPHwNFIArYJAt/yK0DNXweeqnchGrQRItOGCfRNJuzm+y6tS5KEM2awiCS98ooEYy9SXYorErwoaHJCVuAwSuhSRBRfeUUUI3iJ0tuwCsy5lrDLYD94RdLpztVBGX24oCn0RXyASvXWva1L7Zte+QF+F34F1o0Ot/kk8r0YyZIyGW9sjUZMvyFSWQTCcOFA5n6XkUNEpkzeIQHlmUEqLGK0zK4lTGbbkCSvLw4W1uUHcv3dQb9iDKS4/Vc44+FZQZ5Q4C4gk0YN9oBtcVXn2cHUkJVAOpOoDFWG6OGnL72aLOwbLyicrjKmMGnvT/aie6S6rlO1MAlj999/AH9uaYysPK9r8fFRu1zUQkXDREKTrh4/Xt2txCNRpmmFqj06/isuez/GaC30g4uIiUXOY9dhQOsCRyU7iU5EfNTIg6ihgPEpB33m0DieAKNsIpPxZ5JcM6HjzBxfptOo0M6C8EWV+XZLgdaFtldzlPKNgN+LPmtkZbrIsvM31Jsn+plXmkbHMvr5d7/roaOTrHHygaXZBzZNGuvoV9FRrTN27ChMrxxfmS6MVCQQdzBdmpqBseMPfv7B42Pot3z+jm5icZF+gdg4oglyY6Nr49D6dETXmMKzXtvP+RHr+/i60n0Yd+INICwzntYl6Nbx3lmenB4PN2LO3u+/ILL4TDgdDvf34+DRw/MFLDvsSgo4u1lWIh6olDdTVO4OUqHW92BHXwGgmuGSvDHAg1GeHka19z3epIlUpTe2flLrOlZkx7r/1n5gQ6oAe2/Zs3PTmSBNrP5YN+F7Y4XexPr+xJbHfOETpSOelTtC0kxm7/BgP/WfOupWaoFNp7sfC6vjkcDC0PThw9Mr5ei4Gn4sxWgQFldO+elAf312/Yxq3xGjpzeEKwqP1S9dfkG4i/4jCZFcI4PDFKlI6LLD1Q/xNCiGNKJIr8ULus1M9HmTcb7qtpOq0QHLBE/VVHjBTTwgnDRUe57qxgsvfCWiz9uqAfcZeQNmDLv1vK5rUG09b5pQtQ04YxhXcOUvhNNCFHElS0bJBxorGXAxaBoqZS5gu/xuyvclPS5p0fRSjw6a4NEWfSLSNWd1Frkgg7kuGV00TPT3WxYh/aP9oxuGK2iFg4WBnJW1sqlkX6w3Gg4FbPwiM+H1+72WidCacJzLJkCDQzddK9myF6yE1/E4Xm6F5TrYsiV22jJeRxDbLC9t1OL5+PBw3ArGAe6oxYqx4eFYIUlXP1GLDcYAK8XYr49+JhCPBz5zFP5vMAqxQMsFu462VN4Gvz36WDBK4/ZjRz/Y+tdOy50fhKDT1LrYxiGcoNP0c4g1LhJv9LokERdJcjK53FHs4AmXa3kcsM30Ue8ApCp9FqS8fV74dmuzcKo1Bs9eug2OfOsDH2g99a3WdviCg21fEeL0Z8SLqz7QyHqBChLfDWg6TA+EJcdOuLlzR0TJhD/gzzA/Ahhq+KCT/jWqMa7GqSueV2DRYCEZuzA1e8uFp4F8udAK3nXuZvzZGY8UYrELuQtAvnDhlt1Tn919183n77iZvza+xwpi7CwZI9c0xt3gUmXVJS9zlo0OUVjWQOF2qMBiF8j8BWWyRFRV3Yr02y2MbWlsGt24oTxUyOPreVNWn9/Ugw4Nay8nT0o4Fe5ZkH5VnIVeQ0SHKjgQp8IdE2q0NXSVhrrvdUfNl9ERuk+rUfU00ujJl80otq7pcEfcazpgn+7+Y+TWPhn52+uXvyD8QuA7XgnygadwUhrbz7kRq7KUp61XkEI5+R0RVjAUkSRxH5EEQdpBJEmYJ4IkTIYbmd8rKq68XXKx4fbGfX12zev1unCmxAQ3XkTqDnHlG5ibYUjmO+t9PFbJDMFvgH36wqP0uz6fFGFJ+9KLdpJF1NyDN3z2vMKykM8q7PxnbxCU31zGV2+dV/O+s2YoZJ4tBg/fqhw5otzqrLODzZ8mPWRboxlxIcKY6DCdkELCd0WYWXE2CQXg2YIdAt+UmGccgiaBhIJ+r665VUWWGOmBHgV5YclZrspQRkZfiWtYHSoF0s52ix2o0tcP3HPPgQsr5z6//PrU4ZVpXaKfPLLnnmAEfnXXc3dd+OlPLyyfWaZa6PADy7PM4dBvXD4qhIQF0k3WEU9D8wHZzIPqgRx4nHSYlPFQDu58gmqOx+YBcrWAqK47rg5/KUbZgmTuP9hsnBhf1mPTmkkNBccZ1H33Hls5fzjqmz8QVRRBpLa81dCDGMLRA8e/7tPUr2iPRpjODP2GaAhuLY2vfMo0b302v1I385rtMmRTXK8pBtXxnRCyL58RHhByyCfDJENqpEl2kuvJ+8mfNm5NxpB3072Lu8rFdDSoKcwtwI5CyIcBt0Su2zpazYpMXN43sa0+bCJNEZvoGlEviLTssHMRvT2noweRvghMPkioy8nXcnoqC7vQ6OQ5vJAneiJA3nfjuxampzaODK1P9EUyPRniAY/qGfDH5TT6ODsgWWZAktOyUyJxxxZw+nClsMWf5nkaLjlU4n0BHh1LMs/rZqT2I3gHtLM8PHKpboKqYAc6RzIy1Vdts5ivTu0dlVi9ahwxR81mKV1QYCZijwzP7zx5ZHohtPLQrUxPj4aienBf1jiRNkZKhZMSvf/CsT1j2pikR+17Yf/9rNEMNooH1AMhzqoWDo9Uj8Dranl6Kp/OG4ZkFIfZDfHQsRMrtx7ZXy8FoajnItG6ngy1ysHdphqM5Aumcvh2/X69wPQzC8WSmpzefy45dd+tVL8BvnXXC3beJw2zMydMW82t/kJVfPGZRk57yDEL9L/3CWeFPK6sH6PT9zT2aTjniXgwwEQZLUSWREkWl3FlEPgP4oK5EKyJszMpyRhRqWj06CJVvkE0T7AyaZkqUrl0MhYNd5v9Vr+hu/yqX2SIowqPqaoYBmMwSwLoyCWeNK+UBeRsfA8LoZAnJAK4SKjt8PULYEit37Zub/1KAu0fcwUaj6ULT0cPl33FoK7mQsXoiWGjbGtaMiTkaOv1tqQKN4Hv/mIoEsvHRlY/Xy4Hk+mH9o8UQvH4A8tk7T67Sfq4/3HxtEoTX4qtOOfw+GEBwXE/HLiogEMKmBjkDaRqVc6X4h4ME7CQTITqUmrNHjp8fdXt3oCA/fgTWGxQ1VV3FP7jmt3zU9jA2594QlU3uCPaqvrzNbvmb3+3dY2cF7irpVfoIBrB+3ng6+wfcufIyIRlmoG3vl37xTZjpFN6yw7/3Rvc7lXnW/mXu5943B35/pqXe6n9RmpLvfKOZ9a+nNTes8Z3Q3skbrT/AbKR7Gss5UF0l0FlERBcJkiENbFXZG5xEV9PdTF1CbmDQF0YnVCiyFRZ6hxfWMSHSg6FkOY4Fk+M1ErFXDadTnn5P0MLDqT6Kn0Z/E2hs4S3RZn+NVForVO/0s/TH3QjHGydfYmOrj4HN778MkRt/dL+duD5kPPxjrXG5EsTL0+sXuwcbfA44WjnVEQ7UO0cgNBtGznsP+OaBelXcc2ijbDunOFpvj2WHs5wdmTLSFvb58GQ3EGav6fgcXlbv7Rl2aOeVlu/9PmD9PkA/VzAaP2ydUNAFdBPI7iB31jXziVdOTdU5YzZxbUUv+0dIvhKKZ0cGcIwGK6e+rH5wQpaG2pnZas1bEffotMM37gbpJ3A0DkZdLFzyKe79/npWHosTCPNbO+7n4kFq/3fKle0eMxNtWjSXfl3+32JUSgMCNVkGb7e2uYc7YG/jlgfqwVDEQhFAmM32X+bn+k5k8i4fBqoppK5sakHZpMDI2WHh7X3Nq4j2xuTROsCt6q5l3RQMa7FMHnR45JFQXSG1rnkGxuMJ0Mn5md37Zie2tbctHFkGLlynzfFf/mmcGrNlkYAezgfu7KD56hQp43vyq1p47pV6WzqOXvHXMsSFs6HzKWFizH7vB2L2ZXWjysB5NP2eafkVd7cqeWi0POWbujpyQO2nH2KS2EBhw5FA+9QQdG31HPRQ1EnTlkRHsZ5oshYamRTY2QIQBKok8vh25wycjCJT44ECMyEOVC9t81WERsK/qFUIjGU9BtublheF/S1w+erE9XXiaTaqePK1aQhzwkjlfXyLfAaTLf+HH+fprepyiln86YVVdRTfGumXYVXPiYaqng3Nt2Fgn+Pvx879KYE/MiROsU3hk7dLbp16WOtlIpQxnWbDTpnRtrZKmTlJlIAD0Kg3qW5cMEjwPj5Yso9CEPaQAScAEfrKT8wwETRQUZxDvFHnKhsqKT8fp9sOwcr0jweBquvUgtAip+L65yUy3jL6cCaQ3E1Z9e6vqeOP3T00q/O74EeiF66TVZBk4RTPAt8LRrGbe3Tb6dSZepdV6fNhUaj1Xrj0FOL0POwqqzucfatHpU1/+qe9lG3R/nH1XPUfkHDMWbJwvZzBtLtGEa8IqOwn+fkKM/JXQ2B5vktSLP7HBGRnyR5B5nFZ/zdCX9/iWfs2ucYMHYUAyVODulQKSoKzu498AMis1tbwa2zTPNF0yN9Yjo/PTVVjMvx4WzEVKWnbz53Czv5xRPNrTt3bo0ON6vD8RANRjEwDNrp8kh9FF7afTPK0Js68fNX0X4b6Nhr5EPkzoaHx4P9lIpSBvgxmPYh97QKIDux4xJG1Qo/KY5Lx0N8+i70A/yQh1uVxsKN/JuC6Egk0S2hGA5419rbRH5oTKQTiw37yAdWlpd2z800MSDj+dshq5LV/APIjjMFIXNVnUtvhmZxjCILIrK8KKtdibm8b/bq1Nna66DildvrtFbdDHXx6h1wPD5gKtFQwW6r9p/Rf3B2CorRaCjTVQhmQ8muvgHNiIbywdPOroHTfTqcj4U0X7cRTPr6A9Vmun13OJc0DW8ooiWThWoj276Bjpdv7DfSIY06NrP6tc4OAwd9VbXttFk+0B3NmSZtbzfALzoCRjzZHd+UKo1Zg6GgDc7dvliyO7GpHmoU8zED3tyf4H6d3oZ2J6NGZhpJflwJwYOfxXGO6PHPK2f0Ev5U1W/wQ1p9FedItdixHLSiNnp2cPIp6OFnkOHFmL36mgOB3o+/cD/14eUjhzfO05lND7cu2NhuQRMh7vDBj3/84OHolXzMlzDGuIZEyAayh3y/ERoGl3jdNrR6v5uCLDTnB6hrTKIy3bL9nIqqVSSi4GLifgIyguF+pBtEdnE8QJLB5L345hKV3oVAqMwRRVGFsXD74HuJ3yeIrmV+owx0+Y+4szH8OzcpRBAVYel3b5Ykxzw5u6HSxOJio+tdC4FAKBsIdmeRuQ+kHMImB3gEx3ep0AFfJW+ILmvZXC1ToNw3lbhsFa4mFpA4X80p8DQCsmcng5D3HDcKhi1oQGO2ouvM9hsf9qwzZj2tk54PG3lj1jCOewregKCyaMCl60LAB78pzhbuLHy4sH598c7B44ODs4N3DB4b7NQeD+AjfbZgSB58YaYy21vwHPd4rjXgL2zjw4Zn1pPHR+ITdd2FS8pUIeBt3bu1cO1g8cODdxbXr8eH3FGYLQweL9zVrjlrfUJ4yMF8kxTIiYaZRpDLWD5B4BlhvlHmnPnN4WoleHzIRGTB/G9ICCzjRAuEowE/x4Pz7OZ/PJN9ZylKHW7EZQGR45lIYp3p5ycOa86JQyhVU1dmFWup9t+fpJ2cnPMHJBY/Z48K/pIZtakvbsBK6zZrxN5oWXCTPQ8PaOFbd/FDkrHxbpfrPx2mue19HrVHR9mYab7Rus00N5kbbbipNv9DO7V9H5x58T5qGpJP3ndqlHavM/nZrbX8v0DKjfUYjPAo2HF2tOPsGJC9b3d2lm1ZQ6kh7uzecpbjCo0pF0AXohgJrA0J4Deqcr7tl/kRtouzdz96zwydv+uzdyz8yZrIgMbf4N4aJZ5D4Rfm7kb7vfdT96Lk3XNviV/42bNzwqJgoC34SIIzVLcq8AMoDkfFBcVw3gEVchVSAt3pJEO4LmcAw8E6FZ1UPsgmRla0INRZlNIfFFtL03vqR2dKq9+CR7bvnbtnBugPxo499MSnjo7T5vEHz33yRAP275lq7S2VZo69Hx4pzdw3s7S0+6Fj2H3ik0+fPVmXpg4/Sv4/ul+/SAAAAHicY2BkYGAAYo57E1/E89t8ZeBmfgEUYTi37KAdhO749//H/yyWjcxhQC4HAxNIFACUrQ7cAAAAeJxjYGRgYA76n8UQxbKRgeH/MyAJFEEBZgCGKgWgAAB4nGN+wcDAvACKIxkYWPSB9AsIG4wvQ/hwcUGIWqZlQPolVG4jkh6Y2kNANQ1YzATRLUh2ikLFYJgHiGdAcSSSHkEkNQugZkLFmJpQ/QDCAMiLH2oAAAAAAFAAtgF6A1wD5ARmBMwFXAXMBjwG0geKCAoInAl0Cf4KrAtYC+gMUgzADP4NkA32DmwO3A9ED+AQIhCwENoRHhGgEhISYhK4E6AUGhRoFLYVQhV4FeIWdhbmF1oXwhiiGOoZ4BpoGsgbGQAAAAEAAAA2APQACAAAAAAAAgAwAD0AbgAAAMcJkQAAAAB4nHWQy2rCQBSG//HSi0JbWui2sypKabzRjSAIFt20GyluS4wxicSMTEbB1+g79GH6En2W/iZjKUoTJvOdb86cORkA1/iGQP48ceQscMYo5wJO0bNcpH+2XCK/WC6jijfLJ/Tvlit4QGC5iht8sIIonTNa4NOywJW4tFzAhbizXKR/tFwi9yyXcSteLZ/Qe5YrmIjUchX34mugVlsdBaGRtUFdtputjpxupaKKEjeW7tqESqeyL+cqMX4cK8dTyz2P/WAdu3of7ueJr9NIJbLlNPdq5Ce+do0/21VPN0HbmLmca7WUQ5shV1otfM84oTGrbqPx9zwMoLDCFhoRryqEgUSNts65jSZa6JCmzJDMzLMiJHAR07hYc0eYraSM+xxzRgmtz4yY7MDjd3nkx6SA+2NW0Uerh/GEtDsjyrxkXw67O8wakZIs083s7Lf3FBue1qY13LXrUmddSQwPakjex25tQePRO9mtGNouGnz/+b8f2lqESQAAeJxtUImO1DAM7Zum7Vwsy3Kfy30HGI79n0zqtlHTJOSgzHw9LSuQkHiSn2VLfn52tsgusc7+j4sswwI5GAqUqLDECmtssMUVnOAqTnENZ7iOG7iJW7iNO7iLe7iPB3iIRzjHYzzBUzzDc7zAS7zCa7zBW7zDe3B8wEd8wg6f8QVf8Q0XLETh1zNxGlw85NK21RRc6MgGoXTpyEilt06nwKXyUlOdi6BzOhCLog1MdiIW0YvQlXsReoqlS8ejpqUWpk2ipTKo1ghdpEA+FNFaHVbCeztOguOSfk4CpqVNY3VNnttpYbH3KXSbRtuR770wsmMDmcSkrWk5y3BR1ws5Fq23ybHODrSi70lodSRfzrb5rgwk/Dxof1CZnLai3l4mLrVNdd7ToTIUR+v7E2Ua++c6vjub/Gj6W9d2NKf/tpIr4nRrKBulI/nl75XTy6qgIg3CMemtq5ySMXlis+MqdKlpNDFtZc+0Mn05+um1XSHnTrGfOct+AeeWk/hLuADIUlixAQGOWbkIAAgAYyCwASNEsAMjcLIEKAlFUkSyCgIHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAA') format('woff'),
+       url('data:application/octet-stream;base64,AAEAAAAOAIAAAwBgT1MvMnwtYTIAAADsAAAAVmNtYXC+KBENAAABRAAAA0JjdnQgBt//BgAAQXgAAAAcZnBnbYoKeDsAAEGUAAAJkWdhc3AAAAAQAABBcAAAAAhnbHlmpkHGxQAABIgAADYyaGVhZAEVjeEAADq8AAAANmhoZWEIYAQ4AAA69AAAACRobXR4w8QAAAAAOxgAAADYbG9jYYxof4gAADvwAAAAbm1heHABpArEAAA8YAAAACBuYW1lzJ0ZGwAAPIAAAALNcG9zdNF130EAAD9QAAACHnByZXCSoZr/AABLKAAAAFYAAQOgAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAJgX//wNS/2oAWgNWAJYAAAABAAAAAAAAAAAABAAAAAMAAAAkAAEAAAAAANwAAwABAAAAJAADAAoAAAHiAAQAuAAAACoAIAAEAAoAACYGJpkm7ycJJw4nleCt5wrnDecg5ynnPee26BnwrvCw8ODw6PEl//8AAAAAJgUmmSbvJwknDieV4K3nCucN5yDnKec957boAPCu8LDw4PDo8SX//wAA2fzZatkV2PzY+NhyH1sY/xj9GOsY4xjQGFgYDw97D3oPSw9EDwgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAABYAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAmBQAAJgYAAAABAAAmmQAAJpkAAAADAAAm7wAAJu8AAAAEAAAnCQAAJwkAAAAFAAAnDgAAJw4AAAAGAAAnlQAAJ5UAAAAHAADgrQAA4K0AAAAIAADnCgAA5woAAAAJAADnDQAA5w0AAAAKAADnIAAA5yAAAAALAADnKQAA5ykAAAAMAADnPQAA5z0AAAANAADntgAA57YAAAAOAADoAAAA6BkAAAAPAADwrgAA8K4AAAApAADwsAAA8LAAAAAqAADw4AAA8OAAAAArAADw6AAA8OgAAAAsAADxJQAA8SUAAAAtAAHzBAAB8wQAAAAuAAH0ZAAB9GQAAAAvAAH1AAAB9QAAAAAwAAH1EgAB9RIAAAAxAAH1FwAB9RcAAAAyAAH1JwAB9ScAAAAzAAH1VAAB9VQAAAA0AAH2qwAB9qsAAAA1AAAAAQAA/8oDoQNAACAAMbcTCwMDAAIBQkuwF1BYQAwBAQACAGsAAgIKAkQbQAoAAgACagEBAABhWbQdFBgDEisBFA8BExYVFA4BLwEHBiImNTQ3EycmNTQ3JTc2Mh8BBRYDoQ/LMAEMFQz7+g0VDAEwyw4fARh+CyAMfQEYIAHpDA/F/ukECAsQAQeEhAcSCgQIARfFDwwVBSj+Fxf+KAUAAAIAAP/KA6EDQAAJACoAPUAQHRUNCQgHBgUDAQALAAIBQkuwF1BYQAwBAQACAGsAAgIKAkQbQAoAAgACagEBAABhWbcmJRgXExEDDysBNy8BDwEXBzcXExQPARMWFRQjIi8BBwYiJjU0NxMnJjU0NyU3NjIfAQUWAnqr62pp7Ksp09P+D8swARcKDPv6DRUMATDLDh8BGH4LIAx9ARggASKlI9XVI6Xrb28BsgwPxf7pBAgcB4SEBxIKBAgBF8UPDBUFKP4XF/4oBQAAAAIAAP+xA1oDCgAIAGgATkBLY1lMQQQABToJAgEANCgbEAQCASUBAwIEQgAGAAABBgBbAAECAwFPBwEFBAECAwUCWwABAQNTAAMBA0dcW1RRSkgrKiMgGRgTEggRKwE0JiIOARYyNiUVFAYPAQYHFhcWFAcOASciLwEGBwYHBisBIiY1JyYnBwYiJyYnJjQ3PgE3Ji8BLgEnNTQ2PwE2NyYnJjQ3PgEzMh8BNjc2NzY7ATIWHwEWFzc2MhcWFxYUDwEWHwEeAQI7UnhSAlZ0VgEcCAdoCgsTKAYFD1ANBwdNGRoJBwQQfAgMEBsXTwYQBkYWBAUIKAoPCGYHCAEKBWgIDhclBgUPUA0HCE0YGgkIAxF8BwwBDxwWUAUPB0gUBAQ7DglmBwoBXjtUVHZUVHh8BwwBEB4VGzIGDgYVUAEFPA0ITBwQCgdnCQw8BQZAHgUOBgwyDxwbDwEMB3wHDAEQGRogLQcMBxRQBTwNCEwcDwgIZwkMPAUFQxwFDgZNHBsPAQwAAAAABgAA/3IELwNJAAgAEgAbAHsAtwDzARVAM/Dn5NoEBBZrXgIFCdHJxr0EAAV2UwISAEYjAgEPtJ8CAgE7LgIGAjgBBwaWjYEDDQMJQkuwJlBYQFQRAQ8SARIPAWgAFgAEChYEWwAKCQAKTwAFEwEAEgUAWwACBgECTwsBCQgBBgcJBlsQAQEABwMBB1sAAwANDAMNWxQBEhIVUxcBFRUKQw4BDAwLDEQbQFIRAQ8SARIPAWgAFgAEChYEWwAKCQAKTwAFEwEAEgUAWxcBFRQBEg8VElsAAgYBAk8LAQkIAQYHCQZbEAEBAAcDAQdbAAMADQwDDVsOAQwMCwxEWUAs6+rm5eLgzMvIx8TCr66rqaelkZCMi4iGbm1mY1xaPj02MywqExQUFBMSGBUrATQmIgYUFjI2BTQmDgEXFBYyNgM0JiIGHgEyNgcVFAYPAQYHFhcWFAcOASMiLwEGBwYHBisBIiY1JyYnBwYiJyY1NDc+ATcmLwEuAT0BNDY/ATY3JicmNDc+ATMyHwE2NzY3NjsBMhYfARYXNzYyFxYVFA8BBgcWHwEeAQEVFAcGBxYVFAcGIyIvAQYiJw4BByInJjU0NyYnJj0BNDc2NyY1ND8BNjMyFhc3FzY/ATIXFhUUBxYXFhEVFAcGBxYVFAcGIyImJwYiJw4BIicmNTQ3JicmPQE0NzY3JjU0PwE2MzIWFzYyFzY/ATIXFhUUBxYXFgH0VHZUVHZUAa0sOCwBKjosASw4LAEqOizYCAVWBgwTHwQEDUILBgVAFRYGBwQNaAYKDRMXQgQNBlAEBSQIDQdVBQgIBVYHCxMfBAQMRAoGBkATGAYHAw1oBgoBDRMWQgUNBVEEGBEIDQZVBQgBZVMGChwCRAEFFR0LDAsHLAMBRAMdCgdTUwcKHQM0EAEEKggRERwXBAJDAhwJB1NTBgocAkQBBSoICwwLBywERAMdCgdTUwcKHQM0EAEEKggMCgwcFwQCQwIcCQdTAV47VFR2VFTjHSwCKB8dKioCWR0qKjsqKs1nBgoBDhMXGyUGDAQRQgQyCwY8Gw0IBlUGDDIEBEsPBQUILAwYFg0BCAdnBgoBDhMXGyUGDAQRQgQyCgg8Gg0IBlUGCzEEBEsPBQUeFQ0bEwwCCP7PTgkIDw4/DgICKBslAQELNAEoAgIOPw4PCAlOCQkQDT8OAgIeCTQMAQEoFwEnAgIOPw0QCQIzTgkJDw4/DgICJzQMAQEMNCcCAg4/Dg8JCU4JCBANPw4CAh4JNAwCAigXAScCAg4/DRAIAAP///+xA+gCwwAZADcARwA4QDUkGxIBBAMCAAEBAAJCAAUAAgMFAlsAAwAAAQMAWwABBAQBTwABAQRTAAQBBEc1PCsoOjgGFSslEQYHBgcOAisBIiYvASYnJicRFBYzITI2EzUvASYGJyEiBgcUHwEeBBczMj4DPwE+ATcRFAYHISImNxE0NjMhMhYDoRIVlVkcJDwbAho+ES5YlhUSDAYDNgcKAQIDAwQG/MoHCgFS4AQgEiAYDAILGh4UHgXgHjRHNCX8yiQ2ATQlAzYlNAsBrBQRckoYHBoaDiZKchEU/lQICgoCUg4OBQUCAwwGXkGxAhwOFggBChQQGgOxGFI1/aElNAE2JAJfJTQ0AAAABAAA/7EDTQL/AAYAFAAZACQAhEAWHhUCAgUdFgIDAhkDAgMAAwEBAQAEQkuwElBYQCcABQIFagACAwJqAAMAA2oAAAEBAF4GAQEEBAFNBgEBAQRSAAQBBEYbQCYABQIFagACAwJqAAMAA2oAAAEAagYBAQQEAU0GAQEBBFIABAEERllAEQAAISAYFxEPCggABgAGFAcQKxc3JwcVMxUBNCMiBwEGFRQzMjcBNicXASM1ARQPASc3NjIfARbLMoMzSAFfDAUE/tEEDQUEAS8DHuj+MOgDTRRd6F0UOxaDFAczgzM8RwIGDAT+0gQGDAQBLgRx6P4v6QGaHRVd6VwVFYMWAAAC//3/sQNfAwsAIwAwAEBAPQ0BAAEfAQQDAkICAQABAwEAA2gFAQMEAQMEZgAHAAEABwFbAAQGBgRPAAQEBlQABgQGSBUVIyQlIyQUCBcrATU0JgcjNTQmJyMiBgcVIyIGFxUUFjsBFRQWFzMyNjc1MzI2NxQOASIuAj4BMh4BAqcWDo8WDkcPFAGPDhYBFA+PFg5HDxQBjw4WsnLG6MhuBnq89Lp+ATpIDhYBjw8UARYOjxQPSA4Wjg8UARYOjhYydcR0dMTqxHR0xAAE//3/wgPVAwEALQA3AEEASwApQCZLR0JBPDgbEQ4HBQsAQAEBAAICAE8BAQAAAlMAAgACRyspEisDESsTJjYWHwEGFxYXHgE3MjcWNjceATc+AT8BNic1Fjc+ARcWBgcOAwcGIyEmJxMmNhYfARYGJicTPgEWHwEUBiYnEz4BFhcHDgEmJwEEJjQJNQ8BBh4HMigvGyJiGRtYHQwQAwUCARojMXgmIQQhPVYwRCwVLf6iVBVCBjY6CBUEKjIMeAI8QAQIODoBmARCOgEGBToyBAK8JSAWG7gdIx6uNDwBJScEJyUIHxAgFSEMHCYKIi1CGRhGFBlybnwfEgZwAZotKBgk0SksDiYBHykeICH4OyIqKQEAKxgmIf4vJigvAAADAAD/+QPoAn0AEQAiADMAN0A0CwICAwINAAIAAwJCAAUAAgMFAlsAAwAAAQMAWwABBAQBTwABAQRTAAQBBEcXFikVGBYGFSsBJicWFRQGIiY1NDcGBx4BIDYBNCYHIgYVFB4BNjU0NjMyNgUUBwYEICQnJjQ3NiwBBBcWA6FVgCKS0JIigFVL4AEE4P65EAtGZBAWEEQwCxAB2QtO/vj+2v74TgsLTgEIASYBCE4LATqEQTpDaJKSaEM6QYRyiIgBSQsQAWRFDA4CEgowRBDMExOBmpqBEyYUgJoCnn4UAAMAAP+9BCQDCwAIAB0ANAAsQCkmAAIBAAFCAAQCBGoFAQIAAAECAFsFAQICAVMDAQECAUcgGSk4GhIGFSsTNCYOAR4CNgEUBwEGIicBLgE9ATQ2NzMyFhcBFhcUBwEGIyImJwE2NCcBLgEjMzIWFwEW+io6LAIoPiYCVRT+7hY7FP5xFR4qHekdSBUBjxTXFf7uFh0UGhABBhUV/nEVSB19HUgVAY8VAlgeKgImQCQGMP7ZHhX+7hUVAY8VSB3oHSoBHhX+cRUdHhX+7hUQEQEGFTsVAY8VHh4V/nEVAAAAAgAA/7AD6ALDACUASwBIQEVJHAYDAAI/FxUTEg4GAQA7KQIDBANCNDICAz8AAQAEAAEEaAACAAABAgBbAAQDAwRPAAQEA1MAAwQDR0JAPjwjIiUjBRErARQOASMiJwYHBgcjIiY1JjQ2NT8CNgc3PgI3LgEnND4BMh4BFxQGBx4BHwEWHwMUBw4BJyYnJicGIyInFjMyNjc+ASc0Jx4BAxJqtGswMkZVFRsCBgwBAgEEAwMBHAUODgRFTgFqtNa0atZQRAUMCBsJBAUEAwECCggbFVVGMjCXcCARWqRCRUwBDUhUAaVNhEwJMRcFBAoHAQQEAQMGAwMBHgUYEhAodENOhExMhNxDdicOFgohCwMFBgoBAggKAQQFFzEJSgMyLzSGSisqJ3gAAAAABgAA/7EDEgMLAA8AHwAvADsAQwBnAExASQAOAAkIDglZDw0CCAwKAgYBCAZbBQMCAQQCAgAHAQBbAAcLCwdPAAcHC1MACwcLR2ZkYV5bWVRST0xJR0FAEzQTNTU1NTUzEBgrAREUBisBIiY1ETQ2OwEyFhcRFAYrASImNRE0NjsBMhYXERQGKwEiJjURNDY7ATIWExEhERQeATMhMj4BATMnJicjBgcFFRQGKwERFAYjISImJxEjIiY9ATQ2OwE3PgE3MzIWHwEzMhYBHgoIJAgKCggkCAqPCggkCAoKCCQICo4KByQICgoIJAcKSP4MCAgCAdACCAj+ifobBAWxBgQB6woINjQl/jAlNAE1CAoKCKwnCSwWshYsCCetCAoBt/6/CAoKCAFBCAoKCP6/CAoKCAFBCAoKCP6/CAoKCAFBCAoK/mQCEf3vDBQKChQCZUEFAQEFUyQICv3vLkRCLgITCggkCApdFRwBHhRdCgAD////sQOhAsQACAARADwAREBBKgEECAkAAgABAkIACAYEBggEaAAHAAYIBwZbAAQABQEEBVwDAQEAAAFPAwEBAQBTAgEAAQBHJiQnMywTFBMSCRgrBRQGIiY+AhYFFAYiJj4CFhMRFAYHBRceARQHITIWDgEjISImNTQ+ATUDIyIuATYXMzIeAx8BITIWAWUqOiwCKD4mAfYqOiwCKD4mShIO/bkDAgINAgEPFgISEf3FDhYMFmJyDxQCGA2PCQ4IBgICAwKeDhYHHioqPCgCLBweKio8KAIsAkP+4g0UAkQMCA4OGxYcFhYOCBwmAgHMFB4WAQYMEA4JDhYAAAAAAf///8oCpgLxAE8AQ0BACQEHBgoCAAEHAFsFAQEDAgFPAAgAAwIIA1sFAQEBAlMEAQIBAkcBAEhFPz44NS4sKScgHRcWEA0GBABPAU8LDysBIgYUFjcyNzYWFxUUBisBIiY3NjU0JiIGBxQXFgYnIyImJzU0NhcWMzI2NCYnIgcGJjc1NDY7ATI2JyY1NDYyFgcUBwYWNzMyFh0BFAYnJgJKJTY2JRYVGhYBMB+PEA4JFURiRAENEQoUjyEsARIWGBsmNjYmFRUaGAEuII8TDBEORmBGARUKEA+PHzAUFBgBkkRgSAINEQwSkB8uEhYZGiY0NCYWFhoWAS4fkBAOChREZEACDREKFFshLhQbFBgmNDQmGhkVFAEuIVsQDgoUAAAAAAUAAP/iA/oC2gA5AEEASwBjAGYAhkCDJAEEAjIvKyIEAQQeAQsBZkw1GxgFBQsXAQYFPQsCDAZCAQkMXVhUPAQICQhCAwECBAJqAAQBBGoAAQsBagALBQtqCgEICQAJCABoAAAAaQAFBwEGDAUGWwAMCQkMTQAMDAlSAAkMCUZlZGNgXFlWVVNQS0pJRzg2LSwpKCclISATDRArARYGByIvASY3PgEnDgMnLgE1NDc2NycOASc0JjUmNjM3NCc0MzI3Mh0BNjM2FxQWFRYPARUzMhYFFjcnBgcGFDc+AicmIyIGIyUWEhYUKwEiNScjBgcUKwEiNTYTNjsBMgMzAwPcHlBeCgIgAgRWPioQLkhkODRAPDJAAowMBAoCBgScAgguBgqeBggCCAQIsAxWfP6mHCIEIhosqBw8HggkPAIIAv4+ClZQBFYGMrAwAgZWBAqmAghgCoKQSAEyUrxCAiYGBDy4OCZMVC4IBkY6VEAyEGQYAgYCNgQCBBxuBAgCCGgWBAoCKgQKAh5mSOAGDNYMHCyCFhhYRgYSArIc/u74BgSmpAIEBBICFgj+vAEIAAUAAP+xA+gDCwAPAB8ALwA/AE8APEA5AAkHAAlPAAcFAAdPAAUDAAVPAAMBAANPAAEAAAFPAAEBAFMIBgQCBAABAEdOSzU1NTU1NTU1MwoYKzcVFAYrASImPQE0NjsBMhY3FRQGKwEiJj0BNDY7ATIWNxEUBisBIiY1ETQ2OwEyFjcRFAYrASImNRE0NjsBMhYTERQGKwEiJjURNDY7ATIWjwoIawgKCghrCArWCghrCAoKCGsICtYKB2wHCgoHbAcK1woIawgKCghrCArWCghrCAoKCGsICi5rCAoKCGsICgpAswgKCgizCAoKh/6+CAoKCAFCCAoKzv3oCAoKCAIYCAoKARb8yggKCggDNggKCgAAAAIAAP+JBLEDMgAxAGUAMkAvW1BJPz02NB0QAAoBAgFCAAACAGoAAgEBAk8AAgIBUgMBAQIBRlJROjkxMBcVBA8rNTY/ATY3PgE3NCcmJyY1NDcmJyY+ATcyHgIHBgcWFRQHBgcGFRQWFx4CFx4BFRchATQ3JicmPgEeAgcGBxYVFAcGBw4CFxQWFx4CFxUjNTQuAicuASc2NTQvASYnJicmFChFHRUlKAEfEw4tDgUEBT5qOStUPiIDBAQOLQ8RICgmHX5kEBIUAfySAsEMBQIEMlhcVjQEAgYMJAwPCQgKASIeETJGD/4GCBYMFzwxGwUIAwkODSUxBw8aCwsTSicbJRUnEjorEicrN2o+ASY+Uio3GxMqOhIpEyUbJ0oTDy4oEhE8FRUB0yIQICMtWDgCNFwrIyAQIjAOIREKDBQKIDwQCRQYB4cLByYiKgwZJhIiLAoKEAYKDyIQAAT/+v+aA/MDGgArADcAVgBeACVAIllYQD8EAD8EAQMCA2oAAgECagABAAFqAAAAYREVExwTBRQrEw4BFCMHBgcGLwEmNz4BNzYyPgE3Mj4BNzY3MhcyBwYHBhcWFxYPAQYnLgEXARYPAQYnASY/ATYlFgcGJyYPASc3PgEmNzY3NhYHBgcGFhcWNz4BNzYWATcXBwYvASabCAYCEQ8EEAxGCw0CIAQGKh4IBgIOJhaGNHoaDBR4IFAsIgQICkwOBCo6+AGaEhQwFhD+YggISAwCMhAgMmg4LFJERBgOAgYMgAwMBAwiDgQmOiYGKAIEEvyo/kz2FBIuFgH6CBwWDw0EDhJMDAwCGAQGHDAGDh4QWgYCCDQYODouAggGRggEMBgy/iQWECoOEgHYCAw+CMBoPlgaDCxOTkYYOkgWODgGEgYMRAoyHCg+DDoECgL9RPhW8hQQLhIAAgAA/7EDWwMLACQARwBQQE1DJQIGCT08LwMFBhcCAgMCCAEBAwRCAAgABgUIBlsACQcBBQIJBVsAAwEAA08EAQIAAQACAVsAAwMAUwAAAwBHRkUlNSU1NSY1FCQKGCsBFBUOASMiJicHBiImPQE0NjsBMhYGDwEeATMyNjc2NzY7ATIWExUUBisBIiY2PwEmIyIGBwYHBisBIiY3NT4BMzIWFzc2MhYDSyTkmVGYPEgLHBYWDvoOFgIJTShkN0qCJwYXBQxrCAoOFBD6DhYCCU1ScEuCJwYXBQxvBwwBJOaZUZo8SAscGAEFAwGWuj45SAsWDvoOFhYcC00lKEo+CjgNDAG4+g4WFhwLTU1KPgo4DQwGBJa6PjlICxYAAAAAAv///8MD6QKxABgAMQA/QDwlAQUGAAEAAwJCAAYABQIGBVsAAgQBAk8ABwAEAwcEWwADAAABAwBZAAICAVMAAQIBRxMlIxYjFxQUCBcrJRUUBgchFRQGByIvASY0PwE2MhYdASEyFgMUDwEGIiY9ASEiJjc1NDYzITU0NjIfARYD6AoI/QAKCAYHsgUFswUPCgMABwwBBbMFDwr9AAcMAQoIAwAKDgeyBb1rBwoBawcKAQayBRAFsgUKCGsKASgIBbMFDAZrDAZrCAprCAoFsgUAAAAC////+QQZAwsAEgApAFi3HRsaAwABAUJLsAlQWEAeAAMEBANeAAQAAgEEAlwAAQAAAU8AAQEAUwAAAQBHG0AdAAMEA2oABAACAQQCXAABAAABTwABAQBTAAABAEdZtiM6IzY1BRQrARQPAQ4BIyEiLgE/AT4BMyEyFicVISIGDwInJjcRNDY7ATIWHQEhMhYEGRK7GFYm/aETHAERvBhWJQJfEx7A/jA1ciO8AgEBAUozszNKAS8zSgE/EhPdHCgOIhTdHCgOr1o0Kd0DBwUCAhgzSkozEkoAAAAAAv/8/34D2ANKAA0AHwAItR8UCAECKCs3Nh4CBwYHBjc0Nz4BARYABwYHBicmJyYnJjc2NzYAdiZeUgwkVo5UBAY0GANsGv6kdiZWCAgSHiAiEAhAKHYBxKoiClBeJFQSDBoEBjyqAqga/kR0JkIGDiIeIBAGClQmdAFWAAQAAP+6AoADAgAsADUAPgBHAE9ATCAfFhUMBQYDAUICAQEIAQQDAQRbCgcCAwAGBQMGWwkBBQAABU8JAQUFAFMAAAUAR0A/NzZEQz9HQEc7OjY+Nz40MzAvKyobGhEQCw8rARQHDgMHDgMHFhUUBiImNTQ3ESY1NDYyFhUUBxU2Nz4CNyY1NDYyFgUUFjI2NCYiBhMyNjQmIgYUFgEyNjQmIgYUFgKASgYsTjouKio0GARGRmRGSEhGZEZIKGI6NDIERkZkRv20KDgqKjgoRBwqKjgoKAGsHCoqOCgoAopQHjpWNBgODhAgMCQeUDJGRjJOIgF6IkwyRkYyTCLMHh4SFjwuIEwyRkYyHCgoOigo/UYoOigoOigCWCg6KCg6KAAAAAADAAD/+QNaAsQADwAfAC8ANkAzKAEEBQgAAgABAkIABQAEAwUEWwADAAIBAwJbAAEAAAFPAAEBAFMAAAEARyY1JjUmMwYVKyUVFAYHISImJzU0NjchMhYDFRQGJyEiJic1NDYXITIWAxUUBgchIiYnNTQ2FyEyFgNZFBD87w8UARYOAxEPFgEUEPzvDxQBFg4DEQ8WARQQ/O8PFAEWDgMRDxZkRw8UARYORw8UARYBEEgOFgEUD0gOFgEUAQ5HDxQBFg5HDxYBFAAAAAADAAD/uQQWAroAFAAkADkAJUAiLhECAAEBQgMBAQAAAU8DAQEBAFMCAQABAEc1NCgnFxIEESslBwYiJwEmNDcBNjIfARYUDwEXFhQBAw4BLwEuATcTPgEfAR4BCQEGIi8BJjQ/AScmND8BNjIXARYUAVgcBQ4G/vwGBgEEBRAEHAYG29sGAUTQAg4GIggGAdADDAcjBwgBbP78Bg4GHAUF29sFBRwGDgYBBAVFHAUFAQQGDgYBBAYGHAUQBNzbBg4CTv0vBwgDCQMMCALQCAYBCgIO/o7+/AUFHAYOBtvcBQ4GHAYG/vwFEAAAAAIAAP+cA+gDIAAoADQARkBDHhwUExAFAgcFAQAEAkIAAQcBagAABABrAAcCBAdNBgECBQEDBAIDWQAHBwRRAAQHBEU0MzIxMC8uLSwrKikZGBMIECslFh0BITU2Nz4BNTQmJy4BJzQ2PwEmJyY2MhYPARYVDgMHDgEVFBYlMxUjFSM1IzUzNTMCbLT84CQuXkYuCAIqBAoEBAgEBlzkXAQOEgIODg4CCi5IAUSWlmSWlmSAQDpqyg4MIkY8FjQwDBowEBQCBDImNnR0NlgIIhweBAwMLjYWPEbuZJaWZJYAAf/+/7EDWQMLADAAPEA5LQEBBQkBAAECQgAAAQMBAANoAAMCAQMCZgAFAAEABQFbAAIEBAJPAAICBFMABAIERycnEyckMwYVKwEVFAYrASImPwEmIyIOAh4DMzI2Nz4BHwEeAQcOAQciLgI+AzMyFhc3NhYDWRQQ+hcTEU1ScDpqTDAEKFRiPkJ2KQQRBkwFAgY8rl9XoHBIBEB4mFtSmD1IEC0Cw/oOFi0QTU0uTGp0akwuOjUGAQVNBA4GSlABRHSerp50RD45SBITAAAAAAMAAAAAA+gCtgAWADAARwBlQA07MzEmHA4MBAgBAAFCS7ATUFhAIQACAAACXgUBAQADAAEDaAQBAAEDAE8EAQAAA1IAAwADRhtAIAACAAJqBQEBAAMAAQNoBAEAAQMATwQBAAADUgADAANGWbcbJhsbKSkGFSs9ATQ/ASYnNDc2NzIXBhcGDwEGBxUjIhc1ND8CLgE3NDYyFhUUBx8BFh0BBgchLgEBNic2NzIXFhUUBxcWHQEUByM1NC8BJhKrQgIjJTUfIDFIDA1yMARyGb8WmDklLgFcgFpOPZIYAiP94w4UAdlELh8jMSkjQagSG3Yybg9qhhoGUCdcOC8pAhN9cAsINxc9jxmoGwpGHBdWM0xsbExqNB5GChuoJQQCGAFZan0TAispPlIxUAoWhiACjzkbNQgAAAH//P/MA4gC8gAaACpAJwQBAAUCBQACaAMBAQIBawAFAAIFTwAFBQJRAAIFAkUUIyERJCIGFSsBFgYrAREUDgErAREjESMiJjURIyImNwE2MhcDeBAKFlQCDhDMzMIcDlQWChABkBAsEAFQEBb+yg4ODAE2/soUFAE2FhABkhAQAAAAAAMAAP+fA48DHgAUACgAPABtQGonAQkEAUIQCgIECQEETxMLAgkIAQYPCQZZFBECDw4BDAMPDFkSBQIDAgEAAQMAWRAKAgQEAVMNBwIBBAFHKSkVFQAAKTwpPDk4NTQzMi8uKyoVKBUoJSQhIB8eGxoXFgAUABQjERMTERUUKyUVIxUUBiImPQEjNTMRNDY3MhYHEQEVIxEUBiImNREjNTM1ND4BFgcVBRUjERQGIiYnESM1MxE0PgEWFRECQDciLCI4OCIVGCIBAYY3IDAgODggLiQC/Zk3IC8gATg4IDAg73CnFyIiF6dwAfcYHgEgF/4JAU9w/goXIiIXAfZwqBgeAiIWqHBv/nkXIiIXAYdvARgYHgIiFv7oAAAAAgAAAAADjwKtAAQACQAiQB8JBgUEAQAGAQABQgAAAQEATQAAAAFRAAEAAUUUEgIRKwElNSEVASURIREB0/4/A33+RAG8/IMBbtJtbf6z0v5LAbYAAgAA/8IDIgLqABEAGgArQCgRAQIDBgEAAgJCAAEAAwIBA1sAAgAAAk8AAgIAUwAAAgBHExcTJwQTKyUWDwEGLwEGIyImEDYgFhUUByUUFjI2NCYiBgMEHhguJCC+SlKAvrQBAMAu/hiIsH6IsH5OIhwuICC+Kr4BALa+gFhKqliIfrKGfgAAAAEAAP9qA+gDUgBEAElARgsBCQoHCgkHaAQBAgADAAIDaAwBCAUBAQAIAVkNAQcGAQACBwBbAAoKCkMAAwMLA0RBQD08Ozk0My4sExcTESUVIRMUDhgrARQPAQYiJj0BIxUzMhYUDwEGIi8BJjQ2OwE1IxUUBiIvASY0PwE2MhYdATM1IyImND8BNjIfARYUBisBFTM1NDYyHwEWA+gLjgseFNdIDhYLjwoeCo8LFg5I1xQeC44LC44LHhTXSA4WC48LHAuPCxYOSNcUHguOCwFeDguPCxYOSNcUHguOCwuOCx4U10gOFguPCxwLjwsWDkjXFB4LjgsLjgseFNdIDhYLjwoAAv/4/7YD7AMIAAYAIwBtswABAEBLsAtQWEAoAgEABABqCAEEAQRqAAEFAWoHAQUGBgVeAAYDAwZNAAYGA1QAAwYDSBtAJwIBAAQAaggBBAEEagABBQFqBwEFBgVqAAYDAwZNAAYGA1QAAwYDSFlACxEiEiEWNxEREQkYKwEFIxEjESMBHgEPAQ4BIyEiJi8BJj8BMwczMh8BITc2OwEnMwH0AQSkvqYC2BISBhwEJBb80BYkBBwKKp5iqrIIBCgBLCgIBLKqYgMI9P8AAQD+sgosEpoUGhoUmjAYbIIIbm4IggAAAQAAAAAD6AKkAB0ARUBCHAkCBQAUAQIFAkIABgAGagcBAAUAagAFAgVqAwECAQECTQMBAgIBVAQBAQIBSAEAGhgTEQ4MCwoIBwYEAB0BHQgPKwEyFhQGKwE1MycHMxUjIiY0NjMyFyY1NDYzMhYXNgL4ZIyMZL5qsK5o+EpsakwOBgKcblqMGBwB7ojEiL7m5r5okmgCDBpsmGhSBAAAAAL/+v9wAxoDVgAZAC0AD0AMEgEAPwAAAGErKgEPKwEWBgcGJw8CBg8BBiYvASY3ASYnJjY3NhYHNi4BBgcOAR8BHgEfAR4CMj4BAwYUYGZCQHZGaA4gTAwUAhAIFAECGA4SjnJqsmweElRkHggIAwUCFgdDEA4YDhQQAmR0xhIMCsIMphwEDgQQDmIeGgGCMkZqohQUgrwsaj4ULAwWCRAHFAUxDAgQAg4AAAAIAAD/kgOYAyoADwAbACcANwBCAE4AXQBpAIVAgiQgBgMBAlxZTzQwJh4YDAgECwMBTS4aEg4CBgYAVUM8NigFBAVoXkdFPjgUBwcEBUIIAQADBgMABmgABgUDBgVmAAUEAwUEZgAEBwMEB2YAAgkBAQMCAVsAAwAHA08AAwMHUwAHAwdHHRwBAGdlV1ZMSjs6MzEjIRwnHScADwEPCg8rEyIHJic2NxYXBhUUFwYHJgcUFwYHJjU0NxYXBgEiByYnNjMyFwYHJhMmJzY1NCc2NxYzMjcWFwYXNjc2NwYHNjU0JicGByYnNjcWMzI3FgEWFRQHBgcmJyYnNj0BNgMWFxYVFAcGIyInNuAWFDAsNkpcPAYEPjYQbhQ8FEIyJi4IAVAcFjo4VE54bkxWGmqgggQOJjwaHg4YXigQdiYQOjIueAYClr5yWkQMRAYOHhaOAWCWBEBCGEAwZApkGg4SAg5WbDo2bgH4CjRMSiwmLBAQBhAwOARiIhpydmqCbmA+MhgBMA4qHB4+DiQa/jQYWBQKGBwsLhQIbIQOlg4uBA6SVjAyCiRMYLAkSpCCAg5iAdKIzBYsEgY4BJJ2FBYKKv3sCggSIlBAKgygAAAAAAP//P+QA5oDLAAIABMAKQBhQF4MAQMCIyIYFwQFBwJCAAcGBQYHBWgABQQGBQRmCAEACQECAwACWwADAAYHAwZbCgEEAQEETwoBBAQBVAABBAFIFRQKCQEAJiQgHhsZFCkVKRAOCRMKEwUEAAgBCAsPKwE2ABIABAACABciBhUGFjMyNjU0AzI2NycGIyI/ATYjIgYHFzYzMg8BBgHGvgEQBv72/oT+7gYBDPIqLgIiICYutB5sNBIwGA4KKhowHnY4EDQWDAwkGgMqAv74/oT+7gYBCgF8ARKWMBocICwgOv2uNDQYJCagYDouGiIimGgAAAAC//3/sQNfAwsAFAAhACtAKAkBAgABQgAEAARqAQEAAgBqAAIDAwJPAAICA1QAAwIDSBUUFxQWBRQrJTc2NC8BJiIPAScmIg8BBhQfARYyJRQOASIuAj4BMh4BAcb9Cws5Ch4Kq6wKHgo5Cgr9Cx4BnXLG6MhuBnq89Lp+ff0LHgo5CgqsrAoKOQscDP0K63XEdHTE6sR0dMQAAAAC//3/sQNfAwsAFAAhAC1AKhEBAQABQgIBAQADAAEDaAADA2kABAAABE8ABAQAUwAABABHFRQUFxYFFCslNzY0LwEmIg8BBhQfARYyPwEXFjI3FA4BIi4CPgEyHgECijkLC/0LHAz9Cgo5CxwLrKsLHNpyxujIbgZ6vPS6ftY5CxwM/QoK/goeCjkKCqysCpJ1xHR0xOrEdHTEAAAGAAD/+QPoAwsAAwAHAAsAGwArADsAXkBbLAEFCzQBCgQcAQMJFAEGAARCAAsABQQLBVkABAAKCQQKWwAJAAMCCQNZAAIACAcCCFsABwABAAcBWQAABgYATQAAAAZTAAYABkc6NzIwKigmJiURERERERAMGCslITUhJyE1ISUzNSMBFRQGByEiJic1NDYXITIWExUUBichIiYnNTQ2NyEyFhMVFAYHISImJzU0NjMhMhYCOwFm/prWAjz9xAFl19cBHhYO/GAPFAEWDgOgDxQBFg78YA8UARYOA6APFAEWDvxgDxQBFg4DoA8UQEjWR9dH/eiODxQBFg6ODxYBFAEOjw4WARQPjw8UARYBEI8PFAEWDo8OFhYAAf/5/7EDGALDABQAHkAbDgMCAAEBQgABAAABTwABAQBTAAABAEc4JwIRKwEWBwERFAcGIyIvASY1EQEmNjMhMgMPCRH+7RYHBw8Kjwr+7RITGALKFwKtFxD+7f5iFwoDC48KDwEPARMQLQAAAv///7ED6ALDABkANgAqQCcJAAICAwFCAAMAAgEDAlsAAQAAAU8AAQEAUwAAAQBHNTImJDozBBErAREUBgchIiY3ERYXFhceAjczMj4BNzY3NjcUBgcGDwEOAicjIi4BLwImJy4BJzQ2MyEyFgPoNCX8yiQ2ARkfykwgJkQbAhxCKB9ftyAYNinSNDUMIiALAgweJAs1k2ASIzwBLisDNiQ0Acb+RSU0ATYkAbscFYk3GBocARocF0R8Fr8sUB2SIycJEgwBChQIJ2VCDhdSJCs6NAABAAD/sQPoAwsAVQBLQEgADA0BCwoMC1sOAQoGAQIBCgJZDwkHBQMFAQAAAU8PCQcFAwUBAQBTCAQCAAEAR1RST01MSkVCPTs6ODUzNSERJTUhESUzEBgrJRUUBisBIiY9ATQ2FzM1IRUzMhYXFRQGKwEiJic1NDYXMzUhFTMyFh0BFAYrASImJzU0NhczNTQ2FyE1IyImJzU0NjsBMhYXFRQGJyMVITIWBxUzMhYD6CAWshYgIBY1/uM1Fx4BIBayFx4BIBY1/uM1FiAgFrIXHgEgFjUqHgEdNRceASAWshceASAWNQEdHSwBNRcemrMWICAWsxYgAWtrHhezFiAgFrMWIAFrax4XsxYgIBazFiABax0sAWseF7MWICAWsxYgAWsqHmseAAMAAP9qA6EDCwACAAUANwA9QDozAQEGAwICAAECQgkBBwYHaggBBgUBAQAGAVsKAQAEAQIDAAJcAAMDCwNENjQvLhMzJSMjMyQTEAsYKyUhEQkBIQEVFAYrARUUBisBIiY9ASEiJjURIyImPQE0NjsBNTQ2OwEyFh0BITc2MhYUDwERMzIWATcBTP6bAUz+tAKDCgh9CghrCAr+HggKfQgKCgh9CghrCAoB24kFEAoFin0ICogBTP7NAUz+iWsICn0ICgoIfQoIAeIKCGsICn0HCgoHfYoFCw4Gif4lCgAABP///7EELwMLAAgADwAfAC8ASUBGFAEBAw8BAAEODQwJBAIAHAEEAgRCAAIABAACBGgABgADAQYDWwABAAACAQBbAAQFBQRPAAQEBVMABQQFRzU5NSUTExIHFisBFA4BJjQ2MhYBFSE1NxcBJSEiBgcRFBYzITI2JxE0JhcRFAYHISImNxE0NjchMhYBZT5aPj5aPgI8/O6yWgEdAR78gwcKAQwGA30HDAEKUTQl/IMkNgE0JQN9JTQCES0+AkJWQED+/vprs1kBHaEKCP1aCAoKCAKmBwwT/VolNAE2JAKmJTQBNgAAAAIAAP+xAxMDDAAfACgAVkuwEFBYQCADAQEFBAIBYAAFAAQCBQRbAAIAAAJPAAICAFQAAAIASBtAIQMBAQUEBQEEaAAFAAQCBQRbAAIAAAJPAAICAFQAAAIASFm3ExkjEykyBhUrJRQGIyEiJjU0PgUXMh4CMj4CMzIeBQMUBiImPgEeAQMSUkP+GENSBAwSHiY6IQUmLExKSjAiByI4KBwUCga0frCABHi4dkJDTk5DHjhCNjgiGgIYHhgYHhgWJjQ6PjwB1lh+frCAAnwAAAADAAD/wwPoA0AAEgA3AHEAh0APAAEAASkCAgUGJwEDBANCS7AXUFhAJgoBAQcBAAYBAFsJAQQIAQMCBANbAAUAAgUCVwAGBgtTAAsLCgZEG0AsCgEBBwEABgEAWwALAAYFCwZbAAUEAgVPCQEECAEDAgQDWwAFBQJTAAIFAkdZQBZubWpoW1hTUEJAPTw0MzAvMxU1KAwTKwEGBycuAycjIiY9ATQ2OwEyARQPAQYiJj0BIyIGLwEuBSc2Nx4ENzM1NDYyHwEWERQPAQYiJj0BIyIOAgcGBw4CDwEOAicjIiY9ATQ2OwEyPgI3Nj8BPgU3MzU0NjIfARYBdCIrFAgeGi4WfQgKCgh9iwLOBbMFDwowHh4aJw0uGCgaJA0hKwwQHhosGI8KDgeyBQWzBQ8KjxssIBoMEhkQGCQSKRc2QiZ9CAoKCH0bKiQUEBEaHAwkJC42QCiPCg4HsgUCRjRlKRAmGgwCCghrCAr9xQgFswUMBmsCAgMBCgoWFiYUNGQZHioUFAJrCAoFsgUB7AgFswUMBmsQIiQZIj0lMkQVLxoYFgEKCGsIChIgJBkjPT4aQDAsIBABawgKBbIFAAAAAgAA//kCgwMLAAcAHwAnQCQABAABAAQBWwUDAgACAgBPBQMCAAACUwACAAJHIxMlNhMQBhUrEyE1NCYOARcFERQGByEiJicRNDYXMzU0NjIWBxUzMhazAR1UdlQBAdAgFv3pFx4BIBYRlMyWAhIXHgGlbDtUAlA9of6+Fh4BIBUBQhYgAWxmlJRmbB4AAAAAAwAA/7oDmANJABwAOQBaANpAGjgBCQVVRQIABBMLAgEHA0JUKwIJRAYCBwJBS7AKUFhAMAAFAwkEBWAAAQcCAAFgAAkAAAcJAFsABAAHAQQHXAACAAYCBlcAAwMIUwAICAoDRBtLsCZQWEAyAAUDCQMFCWgAAQcCBwECaAAJAAAHCQBbAAQABwEEB1wAAgAGAgZXAAMDCFMACAgKA0QbQDgABQMJAwUJaAABBwIHAQJoAAgAAwUIA1sACQAABwkAWwAEAAcBBAdcAAIGBgJPAAICBlMABgIGR1lZQA1XVhcXGigXGBkoFAoYKyU0LwEmIgcXHgEfARQGByIuAS8BBhQfARYyPwE2ATQvASYiDwEGFB8BFjI3Jy4CNTQ2FzIeAR8BNgEUDwEGIi8BJjQ3JwYiLwEmND8BNjIfARYUBxc2Mh8BFgMsD3QQLhAWAwwBAiAWCA4OBBYTEHMPLRBSD/54D3MQLBBSEBB0Dy4RFwMKBB4XCQ4OAxcSAfQwUi6HLnMuMTEwhy90Ly9SL4Yvci8xMTCHL3QvqxcPdBASFgMQBg8XHgEECgQWES4PdA8PURABnxYQcxAPUg8sEHQPERcDDg4JFiABBAoDFxH+jkMuUS8wcy+HMDExL3Qvhi5SLi90LogwMTEvdC8AAwAA/3YDoAMLAAgAFAAuAHZAFCYBBQQnFRIDAwUJAQADAAEBAARCS7AqUFhAIwAFBAMEBQNoAAADAQMAAWgABAADAAQDWwABAQJTAAICCwJEG0AoAAUEAwQFA2gAAAMBAwABaAAEAAMABANbAAECAgFPAAEBAlMAAgECR1m3HCMtFBMSBhUrNzQmDgEeATI2JQEGIi8BJjQ3AR4BJRQHDgEnIiY0NjcyFhcWFA8BFRc2PwE2MhbWFB4WAhIiEAFq/oMVOhY7FRUBfBZUAZgMG4JPaJKSaCBGGQkJo2wCKkshDwodDhYCEiAUFPr+gxQUPRQ7FgF8N1TdFiVLXgGS0JACFBAGEgdefTwCGS0UCgAD//3/sQNfAwsAFAAhAC4ANEAxAAIDAQMCAWgABgADAgYDWwABAAAEAQBcAAQFBQRPAAQEBVMABQQFRxUWFRUzJTMHFisBFRQGKwEiJj0BNDY7ATU0NjsBMhYXNC4BDgMeAj4BNxQOASIuAj4BMh4BAfQKCLIICgoIfQoHJAgK6FKKpoxQAlSIqoZWe3LG6MhuBnq89Lp+AiL6BwoKByQICsQICgrMU4pUAlCOoo5QAlSKU3XEdHTE6sR0dMQAAAAD////sANZAxAACQASACMAKkAnCwoDAgQAAQFCAAMAAQADAVsAAAICAE8AAAACUwACAAJHFxkmJAQTKwE0JwEWMzI+AgUBJiMiDgEHFCUUDgIuAz4EHgIC3DD+W0xaPnBQMv3SAaVLXFOMUAEC3ERyoKyicEYCQnSesJx2QAFgWkr+XDIyUHJpAaUyUJBQW1tYoHJGAkJ2nLSaeD4GSmymAAAAAAEAAAABAAAI3pHoXw889QALA+gAAAAAzqbBPgAAAADOpoj+//j/agSxA1YAAAAIAAIAAAAAAAAAAQAAA1L/agBaBLEAAP/mBLEAAQAAAAAAAAAAAAAAAAAAADYD6AAAA6AAAAOgAAADWQAABC8AAAPoAAADWQAAA1kAAAPTAAAD6AAABC8AAAPoAAADEQAAA6AAAAKmAAAD6QAAA+gAAASxAAAD6AAAA1kAAAPoAAAELwAAA8IAAAKAAAADWQAABC8AAAPoAAADWQAAA+gAAAOEAAADoAAAA6AAAAMVAAAD6AAAA+gAAAPoAAADDAAAA5gAAAOYAAADWQAAA1kAAAPoAAADEQAAA+gAAAPoAAADoAAABC8AAAMRAAAD6AAAAoIAAAOgAAADoAAAA1kAAANZAAAAAAAAAFAAtgF6A1wD5ARmBMwFXAXMBjwG0geKCAoInAl0Cf4KrAtYC+gMUgzADP4NkA32DmwO3A9ED+AQIhCwENoRHhGgEhISYhK4E6AUGhRoFLYVQhV4FeIWdhbmF1oXwhiiGOoZ4BpoGsgbGQAAAAEAAAA2APQACAAAAAAAAgAwAD0AbgAAAMcJkQAAAAAAAAASAN4AAQAAAAAAAAA1AAAAAQAAAAAAAQAIADUAAQAAAAAAAgAHAD0AAQAAAAAAAwAIAEQAAQAAAAAABAAIAEwAAQAAAAAABQALAFQAAQAAAAAABgAIAF8AAQAAAAAACgArAGcAAQAAAAAACwATAJIAAwABBAkAAABqAKUAAwABBAkAAQAQAQ8AAwABBAkAAgAOAR8AAwABBAkAAwAQAS0AAwABBAkABAAQAT0AAwABBAkABQAWAU0AAwABBAkABgAQAWMAAwABBAkACgBWAXMAAwABBAkACwAmAclDb3B5cmlnaHQgKEMpIDIwMTMgYnkgb3JpZ2luYWwgYXV0aG9ycyBAIGZvbnRlbGxvLmNvbWZvbnRlbGxvUmVndWxhcmZvbnRlbGxvZm9udGVsbG9WZXJzaW9uIDEuMGZvbnRlbGxvR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADMAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAABAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2BHN0YXIKc3Rhci1lbXB0eQNjb2cHY29nLWFsdARtYWlsBnBlbmNpbAxwbHVzLWNpcmNsZWQDYXNsA2V5ZQR0YWdzBGNoYXQFdHJhc2gGYmFza2V0BnB1enpsZQhsYW5ndWFnZQZzaWduYWwFdXNlcnMFdG9vbHMJYXJyb3dzLWN3CGV4Y2hhbmdlC2ZvbGRlci1vcGVuBWJydXNoC2Zsb3ctYnJhbmNoBG1lbnUEY29kZQh1c2VyLWFkZAJjdwVncm91cARob21lCWVxdWFsaXplcgZtYWlsLTEGc2VhcmNoBG1vdmUGdXBsb2FkDHVwbG9hZC1jbG91ZANrZXkHbmV0d29yaw5pbmZvLWNpcmNsZWQtMRJhbmdsZS1jaXJjbGVkLWRvd24QYW5nbGUtY2lyY2xlZC11cAV0YXNrcwZmaWx0ZXIIbWFpbC1hbHQHc2l0ZW1hcARjcm9wB3BpY3R1cmUEdXNlcgdzaHVmZmxlBGxvY2sEbGluawZ3cmVuY2gFY2xvY2sFYmxvY2sAAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgNW/2oDVv9qsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywB0MrsgACAENgQi2wBSywByNCIyCwACNCYbCAYrABYLAEKi2wBiwgIEUgsAJFY7ABRWJgRLABYC2wBywgIEUgsAArI7ECBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAgssQUFRbABYUQtsAkssAFgICCwCUNKsABQWCCwCSNCWbAKQ0qwAFJYILAKI0JZLbAKLCC4BABiILgEAGOKI2GwC0NgIIpgILALI0IjLbALLEtUWLEHAURZJLANZSN4LbAMLEtRWEtTWLEHAURZGyFZJLATZSN4LbANLLEADENVWLEMDEOwAWFCsAorWbAAQ7ACJUKxCQIlQrEKAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAJKiEjsAFhIIojYbAJKiEbsQEAQ2CwAiVCsAIlYbAJKiFZsAlDR7AKQ0dgsIBiILACRWOwAUViYLEAABMjRLABQ7AAPrIBAQFDYEItsA4ssQAFRVRYALAMI0IgYLABYbUNDQEACwBCQopgsQ0FK7BtKxsiWS2wDyyxAA4rLbAQLLEBDistsBEssQIOKy2wEiyxAw4rLbATLLEEDistsBQssQUOKy2wFSyxBg4rLbAWLLEHDistsBcssQgOKy2wGCyxCQ4rLbAZLLAIK7EABUVUWACwDCNCIGCwAWG1DQ0BAAsAQkKKYLENBSuwbSsbIlktsBossQAZKy2wGyyxARkrLbAcLLECGSstsB0ssQMZKy2wHiyxBBkrLbAfLLEFGSstsCAssQYZKy2wISyxBxkrLbAiLLEIGSstsCMssQkZKy2wJCwgPLABYC2wJSwgYLANYCBDI7ABYEOwAiVhsAFgsCQqIS2wJiywJSuwJSotsCcsICBHICCwAkVjsAFFYmAjYTgjIIpVWCBHICCwAkVjsAFFYmAjYTgbIVktsCgssQAFRVRYALABFrAnKrABFTAbIlktsCkssAgrsQAFRVRYALABFrAnKrABFTAbIlktsCosIDWwAWAtsCssALADRWOwAUVisAArsAJFY7ABRWKwACuwABa0AAAAAABEPiM4sSoBFSotsCwsIDwgRyCwAkVjsAFFYmCwAENhOC2wLSwuFzwtsC4sIDwgRyCwAkVjsAFFYmCwAENhsAFDYzgtsC8ssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIuAQEVFCotsDAssAAWsAQlsAQlRyNHI2GwBkUrZYouIyAgPIo4LbAxLLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsIBiYCMgsAArI7AEQ2CwACuwBSVhsAUlsIBisAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wMiywABYgICCwBSYgLkcjRyNhIzw4LbAzLLAAFiCwCCNCICAgRiNHsAArI2E4LbA0LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWGwAUVjIyBYYhshWWOwAUViYCMuIyAgPIo4IyFZLbA1LLAAFiCwCEMgLkcjRyNhIGCwIGBmsIBiIyAgPIo4LbA2LCMgLkawAiVGUlggPFkusSYBFCstsDcsIyAuRrACJUZQWCA8WS6xJgEUKy2wOCwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xJgEUKy2wOSywMCsjIC5GsAIlRlJYIDxZLrEmARQrLbA6LLAxK4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrEmARQrsARDLrAmKy2wOyywABawBCWwBCYgLkcjRyNhsAZFKyMgPCAuIzixJgEUKy2wPCyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhsAIlRmE4IyA8IzgbISAgRiNHsAArI2E4IVmxJgEUKy2wPSywMCsusSYBFCstsD4ssDErISMgIDywBCNCIzixJgEUK7AEQy6wJistsD8ssAAVIEewACNCsgABARUUEy6wLCotsEAssAAVIEewACNCsgABARUUEy6wLCotsEEssQABFBOwLSotsEIssC8qLbBDLLAAFkUjIC4gRoojYTixJgEUKy2wRCywCCNCsEMrLbBFLLIAADwrLbBGLLIAATwrLbBHLLIBADwrLbBILLIBATwrLbBJLLIAAD0rLbBKLLIAAT0rLbBLLLIBAD0rLbBMLLIBAT0rLbBNLLIAADkrLbBOLLIAATkrLbBPLLIBADkrLbBQLLIBATkrLbBRLLIAADsrLbBSLLIAATsrLbBTLLIBADsrLbBULLIBATsrLbBVLLIAAD4rLbBWLLIAAT4rLbBXLLIBAD4rLbBYLLIBAT4rLbBZLLIAADorLbBaLLIAATorLbBbLLIBADorLbBcLLIBATorLbBdLLAyKy6xJgEUKy2wXiywMiuwNistsF8ssDIrsDcrLbBgLLAAFrAyK7A4Ky2wYSywMysusSYBFCstsGIssDMrsDYrLbBjLLAzK7A3Ky2wZCywMyuwOCstsGUssDQrLrEmARQrLbBmLLA0K7A2Ky2wZyywNCuwNystsGgssDQrsDgrLbBpLLA1Ky6xJgEUKy2waiywNSuwNistsGsssDUrsDcrLbBsLLA1K7A4Ky2wbSwrsAhlsAMkUHiwARUwLQAAAEu4AMhSWLEBAY5ZuQgACABjILABI0SwAyNwsgQoCUVSRLIKAgcqsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAA=') format('truetype');
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'fontello';
+    src: url('../font/fontello.svg?12178966#fontello') format('svg');
+  }
+}
+*/
+ 
+ [class^="icon-"]:before, [class*=" icon-"]:before {
+  font-family: "fontello";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+     
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+.icon-mail:before { content: '\2709'; } /* '✉' */
+.icon-asl:before { content: '\e0ad'; } /* '' */
+.icon-star:before { content: '\2605'; } /* '★' */
+.icon-star-empty:before { content: '\2606'; } /* '☆' */
+.icon-user:before { content: '👤'; } /* '\1f464' */
+.icon-picture:before { content: '🌄'; } /* '\1f304' */
+.icon-plus-circled:before { content: '\2795'; } /* '➕' */
+.icon-link:before { content: '🔗'; } /* '\1f517' */
+.icon-lock:before { content: '🔒'; } /* '\1f512' */
+.icon-eye:before { content: '\e70a'; } /* '' */
+.icon-tags:before { content: '\e70d'; } /* '' */
+.icon-code:before { content: '\e80a'; } /* '' */
+.icon-pencil:before { content: '\270e'; } /* '✎' */
+.icon-chat:before { content: '\e720'; } /* '' */
+.icon-trash:before { content: '\e729'; } /* '' */
+.icon-folder-open:before { content: '\e806'; } /* '' */
+.icon-menu:before { content: '\e809'; } /* '' */
+.icon-cog:before { content: '\2699'; } /* '⚙' */
+.icon-cog-alt:before { content: '\26ef'; } /* '⛯' */
+.icon-wrench:before { content: '🔧'; } /* '\1f527' */
+.icon-basket:before { content: '\e73d'; } /* '' */
+.icon-clock:before { content: '🕔'; } /* '\1f554' */
+.icon-block:before { content: '🚫'; } /* '\1f6ab' */
+.icon-move:before { content: '\e812'; } /* '' */
+.icon-angle-circled-up:before { content: '\e819'; } /* '' */
+.icon-angle-circled-down:before { content: '\e818'; } /* '' */
+.icon-mail-alt:before { content: '\f0e0'; } /* '' */
+.icon-arrows-cw:before { content: '\e804'; } /* '' */
+.icon-shuffle:before { content: '🔀'; } /* '\1f500' */
+.icon-exchange:before { content: '\e805'; } /* '' */
+.icon-signal:before { content: '\e801'; } /* '' */
+.icon-crop:before { content: '\f125'; } /* '' */
+.icon-tasks:before { content: '\f0ae'; } /* '' */
+.icon-filter:before { content: '\f0b0'; } /* '' */
+.icon-sitemap:before { content: '\f0e8'; } /* '' */
+.icon-search:before { content: '\e811'; } /* '' */
+.icon-user-add:before { content: '\e80b'; } /* '' */
+.icon-info-circled-1:before { content: '\e817'; } /* '' */
+.icon-home:before { content: '\e80e'; } /* '' */
+.icon-upload:before { content: '\e813'; } /* '' */
+.icon-upload-cloud:before { content: '\e814'; } /* '' */
+.icon-tools:before { content: '\e803'; } /* '' */
+.icon-network:before { content: '\e816'; } /* '' */
+.icon-brush:before { content: '\e807'; } /* '' */
+.icon-language:before { content: '\e800'; } /* '' */
+.icon-key:before { content: '\e815'; } /* '' */
+.icon-flow-branch:before { content: '\e808'; } /* '' */
+.icon-puzzle:before { content: '\e7b6'; } /* '' */
+.icon-mail-1:before { content: '\e810'; } /* '' */
+.icon-equalizer:before { content: '\e80f'; } /* '' */
+.icon-users:before { content: '\e802'; } /* '' */
+.icon-group:before { content: '\e80d'; } /* '' */
+.icon-cw:before { content: '\e80c'; } /* '' */
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7-codes.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7-codes.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7-codes.css	(revision 25596)
@@ -0,0 +1,54 @@
+
+.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2709;&nbsp;'); }
+.icon-asl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe0ad;&nbsp;'); }
+.icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2605;&nbsp;'); }
+.icon-star-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2606;&nbsp;'); }
+.icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f464;&nbsp;'); }
+.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f304;&nbsp;'); }
+.icon-plus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2795;&nbsp;'); }
+.icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f517;&nbsp;'); }
+.icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f512;&nbsp;'); }
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70a;&nbsp;'); }
+.icon-tags { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70d;&nbsp;'); }
+.icon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x270e;&nbsp;'); }
+.icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe720;&nbsp;'); }
+.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe729;&nbsp;'); }
+.icon-folder-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2699;&nbsp;'); }
+.icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x26ef;&nbsp;'); }
+.icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f527;&nbsp;'); }
+.icon-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73d;&nbsp;'); }
+.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f554;&nbsp;'); }
+.icon-block { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f6ab;&nbsp;'); }
+.icon-move { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
+.icon-angle-circled-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
+.icon-angle-circled-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
+.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
+.icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.icon-shuffle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f500;&nbsp;'); }
+.icon-exchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-signal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-crop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;&nbsp;'); }
+.icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;&nbsp;'); }
+.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;&nbsp;'); }
+.icon-sitemap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;&nbsp;'); }
+.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
+.icon-user-add { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.icon-info-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
+.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
+.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
+.icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
+.icon-tools { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-network { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
+.icon-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.icon-language { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
+.icon-flow-branch { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.icon-puzzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe7b6;&nbsp;'); }
+.icon-mail-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-equalizer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.icon-users { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.icon-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.icon-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello-ie7.css	(revision 25596)
@@ -0,0 +1,65 @@
+[class^="icon-"], [class*=" icon-"] {
+  font-family: 'fontello';
+  font-style: normal;
+  font-weight: normal;
+ 
+  /* fix buttons height */
+  line-height: 1em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+}
+ 
+.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2709;&nbsp;'); }
+.icon-asl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe0ad;&nbsp;'); }
+.icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2605;&nbsp;'); }
+.icon-star-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2606;&nbsp;'); }
+.icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f464;&nbsp;'); }
+.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f304;&nbsp;'); }
+.icon-plus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2795;&nbsp;'); }
+.icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f517;&nbsp;'); }
+.icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f512;&nbsp;'); }
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70a;&nbsp;'); }
+.icon-tags { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70d;&nbsp;'); }
+.icon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x270e;&nbsp;'); }
+.icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe720;&nbsp;'); }
+.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe729;&nbsp;'); }
+.icon-folder-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2699;&nbsp;'); }
+.icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x26ef;&nbsp;'); }
+.icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f527;&nbsp;'); }
+.icon-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73d;&nbsp;'); }
+.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f554;&nbsp;'); }
+.icon-block { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f6ab;&nbsp;'); }
+.icon-move { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
+.icon-angle-circled-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
+.icon-angle-circled-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
+.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
+.icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.icon-shuffle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x1f500;&nbsp;'); }
+.icon-exchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-signal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-crop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;&nbsp;'); }
+.icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;&nbsp;'); }
+.icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;&nbsp;'); }
+.icon-sitemap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;&nbsp;'); }
+.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
+.icon-user-add { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.icon-info-circled-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
+.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
+.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
+.icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
+.icon-tools { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-network { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
+.icon-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.icon-language { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
+.icon-flow-branch { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.icon-puzzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe7b6;&nbsp;'); }
+.icon-mail-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-equalizer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.icon-users { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.icon-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.icon-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
Index: /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/css/fontello.css	(revision 25596)
@@ -0,0 +1,107 @@
+@charset "UTF-8";
+
+ @font-face {
+  font-family: 'fontello';
+  src: url('../font/fontello.eot?92254500');
+  src: url('../font/fontello.eot?92254500#iefix') format('embedded-opentype'),
+       url('../font/fontello.woff?92254500') format('woff'),
+       url('../font/fontello.ttf?92254500') format('truetype'),
+       url('../font/fontello.svg?92254500#fontello') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'fontello';
+    src: url('../font/fontello.svg?92254500#fontello') format('svg');
+  }
+}
+*/
+ 
+ [class^="icon-"]:before, [class*=" icon-"]:before {
+  font-family: "fontello";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+     
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+ 
+.icon-mail:before { content: '\2709'; } /* '✉' */
+.icon-asl:before { content: '\e0ad'; } /* '' */
+.icon-star:before { content: '\2605'; } /* '★' */
+.icon-star-empty:before { content: '\2606'; } /* '☆' */
+.icon-user:before { content: '👤'; } /* '\1f464' */
+.icon-picture:before { content: '🌄'; } /* '\1f304' */
+.icon-plus-circled:before { content: '\2795'; } /* '➕' */
+.icon-link:before { content: '🔗'; } /* '\1f517' */
+.icon-lock:before { content: '🔒'; } /* '\1f512' */
+.icon-eye:before { content: '\e70a'; } /* '' */
+.icon-tags:before { content: '\e70d'; } /* '' */
+.icon-code:before { content: '\e80a'; } /* '' */
+.icon-pencil:before { content: '\270e'; } /* '✎' */
+.icon-chat:before { content: '\e720'; } /* '' */
+.icon-trash:before { content: '\e729'; } /* '' */
+.icon-folder-open:before { content: '\e806'; } /* '' */
+.icon-menu:before { content: '\e809'; } /* '' */
+.icon-cog:before { content: '\2699'; } /* '⚙' */
+.icon-cog-alt:before { content: '\26ef'; } /* '⛯' */
+.icon-wrench:before { content: '🔧'; } /* '\1f527' */
+.icon-basket:before { content: '\e73d'; } /* '' */
+.icon-clock:before { content: '🕔'; } /* '\1f554' */
+.icon-block:before { content: '🚫'; } /* '\1f6ab' */
+.icon-move:before { content: '\e812'; } /* '' */
+.icon-angle-circled-up:before { content: '\e819'; } /* '' */
+.icon-angle-circled-down:before { content: '\e818'; } /* '' */
+.icon-mail-alt:before { content: '\f0e0'; } /* '' */
+.icon-arrows-cw:before { content: '\e804'; } /* '' */
+.icon-shuffle:before { content: '🔀'; } /* '\1f500' */
+.icon-exchange:before { content: '\e805'; } /* '' */
+.icon-signal:before { content: '\e801'; } /* '' */
+.icon-crop:before { content: '\f125'; } /* '' */
+.icon-tasks:before { content: '\f0ae'; } /* '' */
+.icon-filter:before { content: '\f0b0'; } /* '' */
+.icon-sitemap:before { content: '\f0e8'; } /* '' */
+.icon-search:before { content: '\e811'; } /* '' */
+.icon-user-add:before { content: '\e80b'; } /* '' */
+.icon-info-circled-1:before { content: '\e817'; } /* '' */
+.icon-home:before { content: '\e80e'; } /* '' */
+.icon-upload:before { content: '\e813'; } /* '' */
+.icon-upload-cloud:before { content: '\e814'; } /* '' */
+.icon-tools:before { content: '\e803'; } /* '' */
+.icon-network:before { content: '\e816'; } /* '' */
+.icon-brush:before { content: '\e807'; } /* '' */
+.icon-language:before { content: '\e800'; } /* '' */
+.icon-key:before { content: '\e815'; } /* '' */
+.icon-flow-branch:before { content: '\e808'; } /* '' */
+.icon-puzzle:before { content: '\e7b6'; } /* '' */
+.icon-mail-1:before { content: '\e810'; } /* '' */
+.icon-equalizer:before { content: '\e80f'; } /* '' */
+.icon-users:before { content: '\e802'; } /* '' */
+.icon-group:before { content: '\e80d'; } /* '' */
+.icon-cw:before { content: '\e80c'; } /* '' */
Index: /tags/2.6.0RC1/admin/themes/default/fontello/demo.html
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/demo.html	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/demo.html	(revision 25596)
@@ -0,0 +1,347 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <!--[if lt IE 9]>
+    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <meta charset="UTF-8"><style type="text/css">/*
+ * Bootstrap v2.2.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 20px;
+  color: #333;
+  background-color: #fff;
+}
+a {
+  color: #08c;
+  text-decoration: none;
+}
+a:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before,
+.row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  min-height: 1px;
+  margin-left: 20px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.span12 {
+  width: 940px;
+}
+.span11 {
+  width: 860px;
+}
+.span10 {
+  width: 780px;
+}
+.span9 {
+  width: 700px;
+}
+.span8 {
+  width: 620px;
+}
+.span7 {
+  width: 540px;
+}
+.span6 {
+  width: 460px;
+}
+.span5 {
+  width: 380px;
+}
+.span4 {
+  width: 300px;
+}
+.span3 {
+  width: 220px;
+}
+.span2 {
+  width: 140px;
+}
+.span1 {
+  width: 60px;
+}
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+  float: right;
+}
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  *zoom: 1;
+}
+.container:before,
+.container:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.container:after {
+  clear: both;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 21px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+h1 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999;
+}
+h1 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 38.5px;
+}
+h1 small {
+  font-size: 24.5px;
+}
+body {
+  margin-top: 90px;
+}
+.header {
+  position: fixed;
+  top: 0;
+  left: 50%;
+  margin-left: -480px;
+  background-color: #fff;
+  border-bottom: 1px solid #ddd;
+  padding-top: 10px;
+  z-index: 10;
+}
+.footer {
+  color: #ddd;
+  font-size: 12px;
+  text-align: center;
+  margin-top: 20px;
+}
+.footer a {
+  color: #ccc;
+  text-decoration: underline;
+}
+.the-icons {
+  font-size: 14px;
+  line-height: 24px;
+}
+.switch {
+  position: absolute;
+  right: 0;
+  bottom: 10px;
+  color: #666;
+}
+.switch input {
+  margin-right: 0.3em;
+}
+.codesOn .i-name {
+  display: none;
+}
+.codesOn .i-code {
+  display: inline;
+}
+.i-code {
+  display: none;
+}
+</style>
+    <link rel="stylesheet" href="css/fontello.css">
+    <link rel="stylesheet" href="css/animation.css">
+    <!--[if IE 7]>
+    <link rel="stylesheet" href="css/fontello-ie7.css">
+    <![endif]-->
+    <script>
+      function toggleCodes(on) {
+        var obj = document.getElementById('icons');
+        
+        if (on) {
+          obj.className += ' codesOn';
+        } else {
+          obj.className = obj.className.replace(' codesOn', '');
+        }
+      }
+      
+    </script>
+  </head>
+  <body>
+    <div class="container header">
+      <h1>
+        fontello
+         <small>font demo</small>
+      </h1>
+      <label class="switch">
+        <input type="checkbox" onclick="toggleCodes(this.checked)">show codes
+      </label>
+    </div>
+    <div id="icons" class="container">
+      <div class="row">
+        <div title="Code: 0x2709" class="the-icons span3"><i class="icon-mail"></i> <span class="i-name">icon-mail</span><span class="i-code">0x2709</span></div>
+        <div title="Code: 0xe0ad" class="the-icons span3"><i class="icon-asl"></i> <span class="i-name">icon-asl</span><span class="i-code">0xe0ad</span></div>
+        <div title="Code: 0x2605" class="the-icons span3"><i class="icon-star"></i> <span class="i-name">icon-star</span><span class="i-code">0x2605</span></div>
+        <div title="Code: 0x2606" class="the-icons span3"><i class="icon-star-empty"></i> <span class="i-name">icon-star-empty</span><span class="i-code">0x2606</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0x1f464" class="the-icons span3"><i class="icon-user"></i> <span class="i-name">icon-user</span><span class="i-code">0x1f464</span></div>
+        <div title="Code: 0x1f304" class="the-icons span3"><i class="icon-picture"></i> <span class="i-name">icon-picture</span><span class="i-code">0x1f304</span></div>
+        <div title="Code: 0x2795" class="the-icons span3"><i class="icon-plus-circled"></i> <span class="i-name">icon-plus-circled</span><span class="i-code">0x2795</span></div>
+        <div title="Code: 0x1f517" class="the-icons span3"><i class="icon-link"></i> <span class="i-name">icon-link</span><span class="i-code">0x1f517</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0x1f512" class="the-icons span3"><i class="icon-lock"></i> <span class="i-name">icon-lock</span><span class="i-code">0x1f512</span></div>
+        <div title="Code: 0xe70a" class="the-icons span3"><i class="icon-eye"></i> <span class="i-name">icon-eye</span><span class="i-code">0xe70a</span></div>
+        <div title="Code: 0xe70d" class="the-icons span3"><i class="icon-tags"></i> <span class="i-name">icon-tags</span><span class="i-code">0xe70d</span></div>
+        <div title="Code: 0xe80a" class="the-icons span3"><i class="icon-code"></i> <span class="i-name">icon-code</span><span class="i-code">0xe80a</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0x270e" class="the-icons span3"><i class="icon-pencil"></i> <span class="i-name">icon-pencil</span><span class="i-code">0x270e</span></div>
+        <div title="Code: 0xe720" class="the-icons span3"><i class="icon-chat"></i> <span class="i-name">icon-chat</span><span class="i-code">0xe720</span></div>
+        <div title="Code: 0xe729" class="the-icons span3"><i class="icon-trash"></i> <span class="i-name">icon-trash</span><span class="i-code">0xe729</span></div>
+        <div title="Code: 0xe806" class="the-icons span3"><i class="icon-folder-open"></i> <span class="i-name">icon-folder-open</span><span class="i-code">0xe806</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe809" class="the-icons span3"><i class="icon-menu"></i> <span class="i-name">icon-menu</span><span class="i-code">0xe809</span></div>
+        <div title="Code: 0x2699" class="the-icons span3"><i class="icon-cog"></i> <span class="i-name">icon-cog</span><span class="i-code">0x2699</span></div>
+        <div title="Code: 0x26ef" class="the-icons span3"><i class="icon-cog-alt"></i> <span class="i-name">icon-cog-alt</span><span class="i-code">0x26ef</span></div>
+        <div title="Code: 0x1f527" class="the-icons span3"><i class="icon-wrench"></i> <span class="i-name">icon-wrench</span><span class="i-code">0x1f527</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe73d" class="the-icons span3"><i class="icon-basket"></i> <span class="i-name">icon-basket</span><span class="i-code">0xe73d</span></div>
+        <div title="Code: 0x1f554" class="the-icons span3"><i class="icon-clock"></i> <span class="i-name">icon-clock</span><span class="i-code">0x1f554</span></div>
+        <div title="Code: 0x1f6ab" class="the-icons span3"><i class="icon-block"></i> <span class="i-name">icon-block</span><span class="i-code">0x1f6ab</span></div>
+        <div title="Code: 0xe812" class="the-icons span3"><i class="icon-move"></i> <span class="i-name">icon-move</span><span class="i-code">0xe812</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe819" class="the-icons span3"><i class="icon-angle-circled-up"></i> <span class="i-name">icon-angle-circled-up</span><span class="i-code">0xe819</span></div>
+        <div title="Code: 0xe818" class="the-icons span3"><i class="icon-angle-circled-down"></i> <span class="i-name">icon-angle-circled-down</span><span class="i-code">0xe818</span></div>
+        <div title="Code: 0xf0e0" class="the-icons span3"><i class="icon-mail-alt"></i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div>
+        <div title="Code: 0xe804" class="the-icons span3"><i class="icon-arrows-cw"></i> <span class="i-name">icon-arrows-cw</span><span class="i-code">0xe804</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0x1f500" class="the-icons span3"><i class="icon-shuffle"></i> <span class="i-name">icon-shuffle</span><span class="i-code">0x1f500</span></div>
+        <div title="Code: 0xe805" class="the-icons span3"><i class="icon-exchange"></i> <span class="i-name">icon-exchange</span><span class="i-code">0xe805</span></div>
+        <div title="Code: 0xe801" class="the-icons span3"><i class="icon-signal"></i> <span class="i-name">icon-signal</span><span class="i-code">0xe801</span></div>
+        <div title="Code: 0xf125" class="the-icons span3"><i class="icon-crop"></i> <span class="i-name">icon-crop</span><span class="i-code">0xf125</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xf0ae" class="the-icons span3"><i class="icon-tasks"></i> <span class="i-name">icon-tasks</span><span class="i-code">0xf0ae</span></div>
+        <div title="Code: 0xf0b0" class="the-icons span3"><i class="icon-filter"></i> <span class="i-name">icon-filter</span><span class="i-code">0xf0b0</span></div>
+        <div title="Code: 0xf0e8" class="the-icons span3"><i class="icon-sitemap"></i> <span class="i-name">icon-sitemap</span><span class="i-code">0xf0e8</span></div>
+        <div title="Code: 0xe811" class="the-icons span3"><i class="icon-search"></i> <span class="i-name">icon-search</span><span class="i-code">0xe811</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe80b" class="the-icons span3"><i class="icon-user-add"></i> <span class="i-name">icon-user-add</span><span class="i-code">0xe80b</span></div>
+        <div title="Code: 0xe817" class="the-icons span3"><i class="icon-info-circled-1"></i> <span class="i-name">icon-info-circled-1</span><span class="i-code">0xe817</span></div>
+        <div title="Code: 0xe80e" class="the-icons span3"><i class="icon-home"></i> <span class="i-name">icon-home</span><span class="i-code">0xe80e</span></div>
+        <div title="Code: 0xe813" class="the-icons span3"><i class="icon-upload"></i> <span class="i-name">icon-upload</span><span class="i-code">0xe813</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe814" class="the-icons span3"><i class="icon-upload-cloud"></i> <span class="i-name">icon-upload-cloud</span><span class="i-code">0xe814</span></div>
+        <div title="Code: 0xe803" class="the-icons span3"><i class="icon-tools"></i> <span class="i-name">icon-tools</span><span class="i-code">0xe803</span></div>
+        <div title="Code: 0xe816" class="the-icons span3"><i class="icon-network"></i> <span class="i-name">icon-network</span><span class="i-code">0xe816</span></div>
+        <div title="Code: 0xe807" class="the-icons span3"><i class="icon-brush"></i> <span class="i-name">icon-brush</span><span class="i-code">0xe807</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe800" class="the-icons span3"><i class="icon-language"></i> <span class="i-name">icon-language</span><span class="i-code">0xe800</span></div>
+        <div title="Code: 0xe815" class="the-icons span3"><i class="icon-key"></i> <span class="i-name">icon-key</span><span class="i-code">0xe815</span></div>
+        <div title="Code: 0xe808" class="the-icons span3"><i class="icon-flow-branch"></i> <span class="i-name">icon-flow-branch</span><span class="i-code">0xe808</span></div>
+        <div title="Code: 0xe7b6" class="the-icons span3"><i class="icon-puzzle"></i> <span class="i-name">icon-puzzle</span><span class="i-code">0xe7b6</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe810" class="the-icons span3"><i class="icon-mail-1"></i> <span class="i-name">icon-mail-1</span><span class="i-code">0xe810</span></div>
+        <div title="Code: 0xe80f" class="the-icons span3"><i class="icon-equalizer"></i> <span class="i-name">icon-equalizer</span><span class="i-code">0xe80f</span></div>
+        <div title="Code: 0xe802" class="the-icons span3"><i class="icon-users"></i> <span class="i-name">icon-users</span><span class="i-code">0xe802</span></div>
+        <div title="Code: 0xe80d" class="the-icons span3"><i class="icon-group"></i> <span class="i-name">icon-group</span><span class="i-code">0xe80d</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe80c" class="the-icons span3"><i class="icon-cw"></i> <span class="i-name">icon-cw</span><span class="i-code">0xe80c</span></div>
+      </div>
+    </div>
+    <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
+  </body>
+</html>
Index: /tags/2.6.0RC1/admin/themes/default/fontello/font/fontello.svg
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/fontello/font/fontello.svg	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/fontello/font/fontello.svg	(revision 25596)
@@ -0,0 +1,64 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2013 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="mail" unicode="&#x2709;" d="m929 11v428q-18-20-39-37q-149-114-238-188q-28-24-46-38t-48-27t-57-13h-2q-26 0-57 13t-48 27t-46 38q-88 74-238 188q-21 17-39 37v-428q0-8 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7t-1 7t-3 5t-5 4t-8 2h-822q-7 0-12-6t-6-12q0-94 82-159q108-85 224-177q4-2 20-16t25-21t25-18t28-15t24-5h2q11 0 24 5t28 15t25 18t25 21t20 16q116 92 224 177q30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
+<glyph glyph-name="asl" unicode="&#xe0ad;" d="m1 700q-4 37 15 53t45 5t35-38l53-184q-15-29-14-64q6-30 36-204q7-52 32-82t65-29q47 0 74 37q34-39 83-37t74 41q27-37 71-41t73 27q12 16 20 32t11 37t5 33t1 40l0 38q26-10 61 24q49 45 109 78t98 8q33-24 31-59t-35-55q-61-25-104-82t-67-112t-58-117t-78-93q-21-18-66-18l-350 0q-84 6-105 118z m181-234q-6 45 21 65t56 8t37-48l21-209q4-41-17-63t-46-15t-37 45z m155 70q2 41 32 56t62-1t36-49l8-248q0-59-28-76t-57 4t-30 62z m175 4q4 43 37 55t62-7t30-52l-6-254q-5-47-34-66t-54 1t-29 67z" horiz-adv-x="979" />
+<glyph glyph-name="star" unicode="&#x2605;" d="m929 489q0-12-15-27l-203-197l48-279q1-4 1-12q0-11-6-19t-17-9q-10 0-22 7l-251 132l-250-132q-13-7-23-7q-11 0-17 9t-6 19q0 4 1 12l48 279l-203 197q-14 15-14 27q0 21 31 26l280 40l126 254q11 23 27 23t28-23l125-254l280-40q32-5 32-26z" horiz-adv-x="928.6" />
+<glyph glyph-name="star-empty" unicode="&#x2606;" d="m634 290l171 165l-235 35l-106 213l-105-213l-236-35l171-165l-41-235l211 111l211-111z m295 199q0-12-15-27l-203-197l48-279q1-4 1-12q0-28-23-28q-10 0-22 7l-251 132l-250-132q-13-7-23-7q-11 0-17 9t-6 19q0 4 1 12l48 279l-203 197q-14 15-14 27q0 21 31 26l280 40l126 254q11 23 27 23t28-23l125-254l280-40q32-5 32-26z" horiz-adv-x="928.6" />
+<glyph glyph-name="user" unicode="&#x1f464;" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61t15 60t24 55t34 45t48 30t62 11q5 0 24-12t41-27t60-27t75-12t74 12t61 27t41 27t24 12q34 0 62-11t48-30t34-45t24-55t15-60t8-61t2-58z m-179 498q0-88-63-151t-151-63t-152 63t-62 151t62 152t152 63t151-63t63-152z" horiz-adv-x="785.7" />
+<glyph glyph-name="picture" unicode="&#x1f304;" d="m357 529q0-45-31-76t-76-32t-76 32t-31 76t31 75t76 32t76-32t31-75z m572-215v-250h-786v107l178 179l90-89l285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-8 6-13t12-5h893q7 0 13 5t5 13v678q0 7-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
+<glyph glyph-name="plus-circled" unicode="&#x2795;" d="m679 314v72q0 14-11 25t-25 10h-143v143q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-143h-143q-14 0-25-10t-10-25v-72q0-14 10-25t25-11h143v-142q0-15 11-25t25-11h71q15 0 25 11t11 25v142h143q14 0 25 11t11 25z m178 36q0-117-57-215t-156-156t-215-58t-216 58t-155 156t-58 215t58 215t155 156t216 58t215-58t156-156t57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="link" unicode="&#x1f517;" d="m812 171q0 23-15 38l-116 116q-16 16-38 16q-24 0-40-18q1-1 10-10t12-12t9-11t7-14t2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7t-11 9t-12 12t-10 10q-19-17-19-40q0-23 16-38l115-116q15-15 38-15q22 0 38 15l82 81q15 16 15 37z m-392 394q0 22-15 38l-115 115q-16 16-38 16q-22 0-38-15l-82-82q-16-15-16-37q0-22 16-38l116-116q15-15 38-15q23 0 40 17q-2 2-11 11t-12 12t-8 10t-7 14t-2 16q0 22 15 38t38 15q9 0 16-2t14-7t10-8t12-12t11-11q18 17 18 41z m500-394q0-67-48-113l-82-81q-46-47-113-47q-68 0-114 48l-115 115q-46 47-46 114q0 68 49 116l-49 49q-48-49-116-49q-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46q67 0 114-47l114-116q47-46 47-113q0-69-49-117l49-49q48 49 116 49q67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
+<glyph glyph-name="lock" unicode="&#x1f512;" d="m179 421h285v108q0 59-42 101t-101 41t-101-41t-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74t177-74t73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />
+<glyph glyph-name="eye" unicode="&#xe70a;" d="m929 314q-85 132-213 197q34-58 34-125q0-104-73-177t-177-73t-177 73t-73 177q0 67 34 125q-128-65-213-197q75-114 187-182t242-68t242 68t187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8t19 8t8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38q-78-129-210-206t-279-77t-279 77t-210 206q-11 19-11 38t11 39q78 128 210 205t279 78t279-78t210-205q11-20 11-39z" horiz-adv-x="1000" />
+<glyph glyph-name="tags" unicode="&#xe70d;" d="m250 600q0 30-21 51t-50 20t-51-20t-21-51t21-50t51-21t50 21t21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21q-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z m215 0q0-30-21-51l-274-274q-22-21-51-21q-20 0-33 8t-29 25l262 262q21 21 21 51q0 29-21 50l-399 399q-21 21-57 36t-65 15h125q29 0 65-15t57-36l399-399q21-21 21-50z" horiz-adv-x="1071.4" />
+<glyph glyph-name="code" unicode="&#xe80a;" d="m344 69l-28-28q-5-5-12-5t-13 5l-260 260q-6 6-6 13t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220l219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l208 720q3 8 9 11t13 2l35-10q7-2 11-9t1-13z m367-364l-260-260q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219l-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-13z" horiz-adv-x="1071.4" />
+<glyph glyph-name="pencil" unicode="&#x270e;" d="m203-7l50 51l-131 131l-51-51v-60h72v-71h60z m291 518q0 12-12 12q-5 0-9-4l-303-302q-4-4-4-10q0-12 13-12q5 0 9 4l303 302q3 4 3 10z m-30 107l232-232l-464-465h-232v233z m381-54q0-29-20-50l-93-93l-232 233l93 92q20 21 50 21q29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" />
+<glyph glyph-name="chat" unicode="&#xe720;" d="m786 421q0-77-53-143t-143-104t-197-38q-48 0-98 9q-70-49-155-72q-21-5-48-9h-2q-6 0-12 5t-6 12q-1 1-1 3t1 4t1 3l1 3t2 3t2 3t3 3t2 2q3 3 13 14t15 16t12 17t14 21t11 25q-69 40-108 98t-40 125q0 78 53 144t143 104t197 38t197-38t143-104t53-144z m214-142q0-67-40-126t-108-98q5-14 11-25t14-21t13-16t14-17t13-14q0 0 2-2t3-3t2-3t2-3l1-3t1-3t1-4t-1-3q-2-8-7-13t-13-4q-27 4-48 9q-85 23-155 72q-50-9-98-9q-151 0-263 74q32-3 49-3q90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85q72-39 114-99t42-128z" horiz-adv-x="1000" />
+<glyph glyph-name="trash" unicode="&#xe729;" d="m286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15t6-5h464q2 0 6 5t8 15t4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
+<glyph glyph-name="folder-open" unicode="&#xe806;" d="m1049 319q0-18-18-37l-187-221q-24-28-67-48t-81-20h-607q-19 0-33 7t-15 24q0 17 17 37l188 221q24 28 67 48t80 20h607q19 0 34-7t15-24z m-192 192v-90h-464q-53 0-110-26t-92-67l-188-221l-2-3q0 2-1 7t0 7v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q51 0 88-37t37-88z" horiz-adv-x="1071.4" />
+<glyph glyph-name="menu" unicode="&#xe809;" d="m857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
+<glyph glyph-name="cog" unicode="&#x2699;" d="m571 350q0 59-41 101t-101 42t-101-42t-42-101t42-101t101-42t101 42t41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51q19-27 59-77q6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21q-9-76-16-104q-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5q-8 0-14 6q-70 64-92 94q-4 5-4 13q0 6 5 12q8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51q-23 32-60 77q-6 7-6 14q0 5 5 12q15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21q9 76 17 104q3 15 20 15h124q7 0 13-4t7-12l15-103q28-9 50-21l80 60q5 5 13 5q7 0 14-5q72-67 92-95q4-5 4-13q0-6-4-12q-9-12-29-38t-30-39q14-28 23-55l102-15q7-1 12-7t4-13z" horiz-adv-x="857.1" />
+<glyph glyph-name="cog-alt" unicode="&#x26ef;" d="m500 350q0 59-42 101t-101 42t-101-42t-42-101t42-101t101-42t101 42t42 101z m429-286q0 29-22 51t-50 21t-50-21t-21-51q0-29 21-50t50-21t51 21t21 50z m0 572q0 29-22 50t-50 21t-50-21t-21-50q0-30 21-51t50-21t51 21t21 51z m-215-235v-103q0-6-4-11t-9-6l-86-14q-6-19-18-42q19-27 50-64q4-6 4-11q0-7-4-11q-13-17-46-50t-44-33q-6 0-11 4l-64 50q-21-11-43-17q-6-60-13-87q-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4q-6 0-12 4q-80 75-80 90q0 5 4 10q5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v103q0 6 4 11t9 6l86 14q7 19 18 42q-19 27-50 64q-4 6-4 11q0 7 4 11q12 17 46 50t44 33q6 0 12-4l64-50q19 10 43 18q6 60 13 86q3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 41-17l66 49q5 4 11 4q7 0 12-4q81-75 81-90q0-5-4-10q-7-9-24-30t-25-34q13-27 19-46l85-12q5-2 9-6t4-11z m357-298v-78q0-9-83-17q-6-15-16-29q28-63 28-77q0-2-2-4q-68-40-69-40q-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40q-3 2-3 4q0 14 29 77q-10 14-17 29q-83 8-83 17v78q0 9 83 18q7 16 17 29q-29 63-29 77q0 2 3 4q2 1 19 11t33 19t17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39q2-2 2-4q0-14-28-77q9-13 16-29q83-9 83-18z m0 572v-78q0-9-83-18q-6-15-16-29q28-63 28-77q0-2-2-4q-68-39-69-39q-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39q-3 2-3 4q0 14 29 77q-10 14-17 29q-83 9-83 18v78q0 9 83 17q7 16 17 29q-29 63-29 77q0 2 3 4q2 1 19 11t33 19t17 9q4 0 25-26t29-38q12 2 17 2t17-2q28 40 51 63l4 1q2 0 69-39q2-2 2-4q0-14-28-77q9-13 16-29q83-8 83-17z" horiz-adv-x="1071.4" />
+<glyph glyph-name="wrench" unicode="&#x1f527;" d="m214 29q0 14-10 25t-25 10t-26-10t-10-25t10-26t26-10t25 10t10 26z m360 234l-381-381q-21-20-50-20q-29 0-51 20l-59 61q-21 20-21 50q0 29 21 51l380 380q22-55 64-97t97-64z m353 243q0-22-12-59q-27-75-92-122t-144-46q-104 0-177 73t-73 177t73 176t177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45t40 20q8 0 13-5t4-14z" horiz-adv-x="928.6" />
+<glyph glyph-name="basket" unicode="&#xe73d;" d="m357-7q0-30-21-51t-50-21t-51 21t-21 51t21 50t51 21t50-21t21-50z m500 0q0-30-21-51t-50-21t-51 21t-21 51t21 50t51 21t50-21t21-50z m72 607v-286q0-13-9-23t-23-12l-583-68q1-4 3-12t3-15t1-13q0-8-13-35h513q15 0 26-11t10-25t-10-25t-26-11h-571q-14 0-25 11t-11 25q0 8 6 22t17 33t11 21l-98 460h-114q-15 0-25 10t-11 25t11 26t25 10h143q9 0 16-3t11-9t7-14t4-15t3-16t3-14h670q14 0 25-11t11-25z" horiz-adv-x="928.6" />
+<glyph glyph-name="clock" unicode="&#x1f554;" d="m500 546v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13z m232-196q0 83-41 152t-110 111t-152 41t-153-41t-110-111t-41-152t41-152t110-111t153-41t152 41t110 111t41 152z m125 0q0-117-57-215t-156-156t-215-58t-216 58t-155 156t-58 215t58 215t155 156t216 58t215-58t156-156t57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="block" unicode="&#x1f6ab;" d="m732 352q0 90-48 164l-421-420q76-50 166-50q62 0 118 25t96 65t65 97t24 119z m-557-167l421 421q-75 50-167 50q-83 0-153-40t-110-112t-41-152q0-91 50-167z m682 167q0-88-34-168t-91-137t-137-92t-166-34t-167 34t-137 92t-91 137t-34 168t34 167t91 137t137 91t167 34t166-34t137-91t91-137t34-167z" horiz-adv-x="857.1" />
+<glyph glyph-name="move" unicode="&#xe812;" d="m1000 350q0-14-11-25l-142-143q-11-11-26-11t-25 11t-10 25v72h-215v-215h72q14 0 25-10t11-25t-11-26l-143-142q-10-11-25-11t-25 11l-143 142q-11 11-11 26t11 25t25 10h72v215h-215v-72q0-14-10-25t-25-11t-26 11l-142 143q-11 11-11 25t11 25l142 143q11 11 26 11t25-11t10-25v-72h215v215h-72q-14 0-25 10t-11 25t11 26l143 142q11 11 25 11t25-11l143-142q11-11 11-26t-11-25t-25-10h-72v-215h215v72q0 14 10 25t25 11t26-11l142-143q11-10 11-25z" horiz-adv-x="1000" />
+<glyph glyph-name="angle-circled-up" unicode="&#xe819;" d="m650 214l57 57q11 11 11 25t-11 26l-253 253q-11 10-25 10t-26-10l-253-254q-10-10-10-25t10-25l57-57q11-10 25-10t25 10l172 172l171-172q11-10 25-10t25 10z m207 136q0-117-57-215t-156-156t-215-58t-216 58t-155 156t-58 215t58 215t155 156t216 58t215-58t156-156t57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="angle-circled-down" unicode="&#xe818;" d="m454 125l253 253q11 11 11 26t-11 25l-57 57q-10 10-25 10t-25-10l-171-172l-172 172q-10 10-25 10t-25-10l-57-57q-10-11-10-25t10-26l253-253q11-10 26-10t25 10z m403 225q0-117-57-215t-156-156t-215-58t-216 58t-155 156t-58 215t58 215t155 156t216 58t215-58t156-156t57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="mail-alt" unicode="&#xf0e0;" d="m1000 454v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-28 56-49q202-137 278-192q32-24 51-37t53-27t61-13h2q28 0 61 13t53 27t51 37q95 68 278 192q32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181q-5-4-23-17t-30-22t-29-18t-33-15t-27-5h-2q-12 0-27 5t-33 15t-29 18t-30 22t-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 62-26t27-63z" horiz-adv-x="1000" />
+<glyph glyph-name="arrows-cw" unicode="&#xe804;" d="m843 261q0-3 0-4q-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11t-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25t-10-25l-77-77q40-37 90-57t105-20q74 0 139 37t104 99q6 10 29 66q5 13 17 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25t10 25l77 77q-82 77-194 77q-75 0-140-37t-104-99q-6-10-29-66q-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11t10-25z" horiz-adv-x="857.1" />
+<glyph glyph-name="shuffle" unicode="&#x1f500;" d="m372 582q-34-52-77-153q-12 25-20 41t-23 35t-28 32t-36 19t-45 8h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125q139 0 229-125z m628-446q0-8-5-13l-179-179q-5-5-12-5q-8 0-13 6t-5 12v107q-18 0-48 0t-45-1t-41 1t-39 3t-36 6t-35 10t-32 16t-33 22t-31 30t-31 39q33 52 76 152q12-25 20-40t23-36t28-31t35-20t46-8h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z m0 500q0-8-5-13l-179-179q-5-5-12-5q-8 0-13 6t-5 12v107h-143q-27 0-49-8t-38-25t-29-35t-25-43q-18-34-43-95q-16-37-28-62t-30-59t-36-55t-41-47t-50-38t-60-23t-71-10h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125q27 0 48 9t39 25t28 34t26 43q17 35 43 96q16 36 28 62t30 58t36 56t41 46t50 38t59 24t72 9h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" />
+<glyph glyph-name="exchange" unicode="&#xe805;" d="m1000 189v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13q0 8 5 13l179 178q5 5 12 5q8 0 13-5t5-13v-107h768q7 0 13-5t5-13z m0 304q0-8-5-13l-179-179q-5-5-12-5q-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" />
+<glyph glyph-name="signal" unicode="&#xe801;" d="m143 46v-107q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v107q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 72v-179q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v179q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 143v-322q0-8-5-13t-12-5h-108q-7 0-12 5t-5 13v322q0 8 5 13t12 5h108q7 0 12-5t5-13z m215 214v-536q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v536q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 286v-822q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v822q0 8 5 13t13 5h107q8 0 13-5t5-13z" horiz-adv-x="1000" />
+<glyph glyph-name="crop" unicode="&#xf125;" d="m311 136h332v332z m-25 25l332 332h-332v-332z m643-43v-107q0-8-5-13t-13-5h-125v-125q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v125h-482q-8 0-13 5t-5 13v482h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125v125q0 7 5 12t13 5h107q8 0 13-5t5-12v-125h475l137 138q5 5 13 5t13-5q5-6 5-13t-5-13l-138-137v-475h125q8 0 13-5t5-13z" horiz-adv-x="928.6" />
+<glyph glyph-name="tasks" unicode="&#xf0ae;" d="m571 64h358v72h-358v-72z m-214 286h572v71h-572v-71z m357 286h215v71h-215v-71z m286-465v-142q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v142q0 15 11 26t25 10h928q15 0 25-10t11-26z m0 286v-143q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25v143q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 286v-143q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v143q0 14 11 25t25 11h928q15 0 25-11t11-25z" horiz-adv-x="1000" />
+<glyph glyph-name="filter" unicode="&#xf0b0;" d="m783 685q9-23-8-39l-275-275v-414q0-23-22-33q-7-3-14-3q-15 0-25 11l-143 143q-10 10-10 25v271l-275 275q-18 16-8 39q9 22 33 22h714q23 0 33-22z" horiz-adv-x="785.7" />
+<glyph glyph-name="sitemap" unicode="&#xf0e8;" d="m1000 154v-179q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q22 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107q0 29 21 51t51 21h285v107h-53q-23 0-38 15t-16 38v179q0 22 16 38t38 16h178q23 0 38-16t16-38v-179q0-22-16-38t-38-15h-53v-107h285q29 0 51-21t21-51v-107h53q23 0 38-15t16-38z" horiz-adv-x="1000" />
+<glyph glyph-name="search" unicode="&#xe811;" d="m772 78q30-34 6-62l-46-46q-36-32-68 0l-190 190q-74-42-156-42q-128 0-223 95t-95 223t90 219t218 91t224-95t96-223q0-88-46-162z m-678 358q0-88 68-156t156-68t151 63t63 153q0 88-68 155t-156 67t-151-63t-63-151z" horiz-adv-x="789" />
+<glyph glyph-name="user-add" unicode="&#xe80b;" d="m620 128q180-64 180-122l0-106l-800 0l0 202q36 14 82 26q94 34 129 69t35 95q0 22-23 48t-31 74q-2 12-23 25t-25 61q0 16 5 26t9 12l4 4q-8 50-12 88q-6 54 40 112t160 58t160-58t42-112l-14-88q18-8 18-42q-2-28-9-43t-14-17t-14-8t-9-18q-10-46-33-73t-23-49q0-60 36-95t130-69z m230 272l150 0l0-100l-150 0l0-150l-100 0l0 150l-150 0l0 100l150 0l0 150l100 0l0-150z" horiz-adv-x="1000" />
+<glyph glyph-name="info-circled-1" unicode="&#xe817;" d="m454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m52-152q-42 0-65-24t-23-50q-2-28 15-44t49-16q38 0 61 22t23 54q0 58-60 58z m-120-594q30 0 84 26t106 78l-18 24q-48-36-72-36q-14 0-4 38l42 160q26 96-22 96q-30 0-89-29t-115-75l16-26q52 34 74 34q12 0 0-34l-36-152q-26-104 34-104z" horiz-adv-x="920" />
+<glyph glyph-name="home" unicode="&#xe80e;" d="m888 336q16-16 11-27t-27-11l-84 0l0-310q0-14-1-21t-8-13t-23-6l-204 0l0 310l-204 0l0-310l-194 0q-28 0-35 10t-7 30l0 310l-84 0q-22 0-27 11t11 27l400 402q16 16 38 16t38-16z" horiz-adv-x="900" />
+<glyph glyph-name="upload" unicode="&#xe813;" d="m500 776l260-244l-164 0l0-256l-190 0l0 256l-166 0z m468-578q18-10 27-32t3-40l-28-154q-4-20-22-33t-40-13l-816 0q-22 0-40 13t-22 33l-28 154q-10 48 32 72l158 108l98 0l-170-130l178 0q8 0 12-8l40-110l300 0l40 110q8 8 12 8l178 0l-170 130l98 0z" horiz-adv-x="1000" />
+<glyph glyph-name="upload-cloud" unicode="&#xe814;" d="m760 494q100 0 170-68t70-166t-70-166t-170-68l-190 0l0 190l106 0l-176 230l-174-230l104 0l0-190l-248 0q-74 0-128 52t-54 124q0 74 53 126t129 52q14 0 20-2q-2 12-2 38q0 108 78 184t188 76q90 0 160-52t94-134q28 4 40 4z" horiz-adv-x="1000" />
+<glyph glyph-name="tools" unicode="&#xe803;" d="m155 506q-8-8-11-22t-3-25t-2-11q-2-2-17-15t-19-17q-16-14-28 4l-70 76q-11 12 2 24q2 2 18 14t20 16q6 6 27 6t37 14q14 14 18 38t10 30q2 0 9 7t26 22t41 31q134 90 186 96q122 0 148-2q12 0-8-8q-120-52-152-76q-80-56-36-114q34-46 38-48q8-8-2-14q-2-2-38-35t-38-35q-14-8-18-4q-42 48-71 60t-67-12z m286-26l410-476q18-22-2-38l-48-42q-22-14-38 4l-414 472q-8 8 0 20l72 62q12 8 20-2z m554 202q16-104-16-166q-50-88-154-62q-56 12-100-32l-82-78l-68 78l68 70q24 24 31 53t6 65t5 58q12 56 140 112q12 6 18-3t2-15q-12-12-46-80q-14-10-12-35t40-53q58-40 96 22q6 12 26 41t22 33q4 10 13 9t11-17z m-858-684l254 248l76-86l-246-242q-20-20-38-4l-46 46q-22 18 0 38z" horiz-adv-x="1000" />
+<glyph glyph-name="network" unicode="&#xe816;" d="m224 504q-22 0-42-10q-48 52-92 128q54 74 128 118q92-38 152-82q-6-16-6-32q0-6 4-22q-62-48-116-104q-16 4-28 4z m-98-98q0-34 20-60q-60-114-80-232q-66 106-66 236q0 110 50 206q38-62 84-112q-8-24-8-38z m336 318q-28 0-50-14q-58 42-114 70q84 30 162 30q120 0 230-62q-76-14-162-50q-26 26-66 26z m146-460q-160 24-290 112q4 20 4 30q0 24-14 52q38 44 98 90q26-20 56-20q14 0 38 8q94-108 134-240q-16-14-26-32z m128-132q38 14 54 60q58 4 108 18q-46-146-166-232q6 48 6 98q0 10-1 28t-1 28z m-150 66q-190-96-304-272q-90 36-158 110q12 144 80 274q6-2 20-2q30 0 52 14q142-98 310-124z m184 492q150-136 150-340q0-22-4-66q-64-18-130-24q-24 56-88 60q-48 146-148 264q10 20 10 42l0 10q100 42 210 54z m-136-544q14-10 32-18q2-18 2-52q0-80-14-144q-86-42-194-42q-58 0-112 12q110 160 286 244z" horiz-adv-x="920" />
+<glyph glyph-name="brush" unicode="&#xe807;" d="m118 170q38 34 85 29t87-45q42-40 48-87t-30-83q-86-84-228-102q-84-12-80 14q0 4 6 10q52 60 64 145t48 119z m840 646q26-26-148-248t-292-338q-38-38-124-104q-8-6-16 8q-18 34-48 64q-32 32-66 48q-16 6-8 16q64 84 104 122q118 116 344 287t254 145z" horiz-adv-x="962" />
+<glyph glyph-name="language" unicode="&#xe800;" d="m988 306q30-82-10-176t-134-160q-10 0-12 2t-16 19t-16 19q-2 6 2 10q86 60 117 152t-11 148q-16-38-39-76t-59-80t-86-65t-106-15q-52 6-84 41t-32 93q0 84 60 148q50 50 114 66l-2 100q-140-24-146-24q-6-2-10 4q0 2-5 29t-5 31q-2 2 1 4t7 2l156 28q0 110-2 114q0 8 8 8q46 0 52 2q10 0 10-8l0-104q158 22 164 22q8 4 10-6q0-2 4-23t4-25q4-10-4-12l-176-30l0-102l12 0q86 0 148-36t86-100z m-370-160q28-6 62 6l-4 214q-34-12-60-40q-44-44-44-108q0-66 46-72z m122 28q28 24 58 68t45 79t7 41q-36 18-96 18q-2 0-6-1t-6-1z m-448 382q10-28 53-165t83-261t40-126q0-4-4-4l-86 0q-6 0-6 4l-50 166l-176 0q-48-164-50-166q0-4-6-4l-86 0q-4 0-4 4q10 18 176 552q2 8 10 8l96 0q10 0 10-8z m-130-316l144 0l-72 264z" horiz-adv-x="1001" />
+<glyph glyph-name="key" unicode="&#xe815;" d="m774 612q20-116-28-215t-150-117q-66-12-130-2l-118-194l-70-12l-104-166q-14-28-46-32l-76-14q-12-4-22 4t-12 22l-16 98q-8 30 12 56l258 386q-24 50-38 120q-18 106 53 187t185 101q106 20 195-45t107-177z m-126-76q30 44 21 97t-51 83q-42 32-92 22t-80-54q-8-12-12-23t-1-20t5-16t13-17t18-15t22-16t23-17q6-4 22-16t23-16t19-12t19-8t17 1t18 8t16 19z" horiz-adv-x="780" />
+<glyph glyph-name="flow-branch" unicode="&#xe808;" d="m640 650q0-80-74-110q-6-58-28-101t-61-69t-68-38t-75-26q-42-14-63-22t-47-24t-38-40t-16-60q70-30 70-110q0-50-35-85t-85-35t-85 35t-35 85q0 78 72 112l0 378q-72 34-72 110q0 50 35 85t85 35t85-35t35-85q0-76-72-110l0-204q40 30 138 60q58 18 84 29t51 41t29 76q-70 32-70 108q0 50 35 85t85 35t85-35t35-85z m-588 0q0-28 20-48t48-20t49 20t21 48q0 30-21 50t-49 20t-48-20t-20-50z m68-668q28 0 49 20t21 48q0 30-21 50t-49 20t-48-20t-20-50q0-28 20-48t48-20z m400 600q28 0 49 20t21 48q0 30-21 50t-49 20t-48-20t-20-50q0-28 20-48t48-20z" horiz-adv-x="640" />
+<glyph glyph-name="puzzle" unicode="&#xe7b6;" d="m586 402q-37 0-64-34t-27-82t27-84t64-34q22 0 43 13q26 17 37 11t12-24l0-144q0-31-24-54t-55-23l-143 0q-16 0-23 9t2 31q21 25 21 51q0 38-34 64t-83 26t-83-26t-35-64q0-22 13-44q17-26 12-37t-25-10l-143 0q-33 0-55 23t-23 54l0 144q0 16 9 23t31-3q24-20 51-20q38 0 65 34t27 84t-27 82t-65 34q-21 0-42-13q-26-17-38-12t-11 25l0 91q0 33 23 56t55 23l143 0q19 0 25 10t-11 37q-14 20-14 44q0 38 35 64t83 26t83-26t34-64q0-26-21-51q-10-21-2-31t23-9l143 0q31 0 55-23t24-56l0-91q0-16-10-23t-30 3q-24 20-52 20z" horiz-adv-x="678" />
+<glyph glyph-name="mail-1" unicode="&#xe810;" d="m467 366l-449 210l0 109l893 0l0-109z m0-123l444 210l0-437l-893 0l0 438z" horiz-adv-x="928" />
+<glyph glyph-name="equalizer" unicode="&#xe80f;" d="m576 239l0-112l-55 0l0-167q0-23-17-40t-39-17t-39 17t-17 40l0 167l-56 0l0 112l56 0l0 503q0 24 17 39t38 16q24 0 41-16t16-39l0-503l55 0z m335 335l0-112l-55 0l0-502q0-23-16-40t-41-17q-23 0-39 17t-16 40l0 502l-56 0l0 112l56 0l0 168q0 24 16 39t39 16t41-16t16-39l0-168l55 0z m-670-112l0-111l-55 0l0-391q0-23-16-40t-40-17q-23 0-39 17t-17 40l0 391l-56 0l0 111l56 0l0 280q0 24 16 39t40 16t40-16t16-39l0-280l55 0z" horiz-adv-x="928" />
+<glyph glyph-name="users" unicode="&#xe802;" d="m0 49q20 7 60 22t69 26t50 22q37 19 57 56t21 76q0 27-31 64q-19 21-33 60q-45 18-45 76q0 43 14 61q-5 39-9 82q-5 55 26 108t84 84t110 32q43 0 85-19t73-50t48-72t14-83q-4-55-8-82q14-19 14-61q0-58-45-76q-15-41-32-60q-32-37-32-64q0-39 20-76t58-56q29-15 92-38t113-43t66-38q18-17 28-47t10-51l1-21h-878v168z m705 299q0 34 12 50q-5 32-7 67q-4 45 21 89t69 72t90 27t89-27t69-72t22-89q-2-35-8-67q12-16 12-50q0-48-36-62q-12-33-27-50q-9-10-13-16t-9-16t-4-20q0-32 17-62t47-46q17-9 42-19t60-22t50-19v-135h-254q0 4 0 11t-3 26t-7 36t-15 38t-23 33q-23 25-53 44t-79 37q27 34 27 78q0 10-5 20t-8 16t-12 16q-14 15-27 49q-37 16-37 63z" horiz-adv-x="1201.2" />
+<glyph glyph-name="group" unicode="&#xe80d;" d="m0 106l0 134q0 26 18 32l171 80q-66 39-68 131q0 56 35 103q37 41 90 43q31 0 63-19q-49-125 23-237q-12-11-25-19l-114-55q-48-23-52-84l0-143l-114 0q-25 0-27 34z m193-59l0 168q0 27 22 37l152 70l57 28q-37 23-60 66t-22 94q0 76 46 130t110 54t109-54t45-130q0-106-78-158l61-30l146-70q24-10 24-37l0-168q-2-37-37-41l-541 0q-14 2-24 14t-10 27z m473 330q68 106 22 231q31 19 66 21q49 0 90-43q35-41 35-103q0-82-65-131l168-80q18-10 18-32l0-134q0-32-27-34l-118 0l0 143q0 57-50 84l-110 53q-15 8-29 25z" horiz-adv-x="1000" />
+<glyph glyph-name="cw" unicode="&#xe80c;" d="m857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23q-10 22 7 38l77 77q-82 77-194 77q-58 0-111-23t-91-61t-62-91t-22-111t22-111t62-91t91-61t111-23q66 0 125 29t100 82q4 6 13 7q8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92t-92 137t-34 166t34 166t92 137t136 92t167 34q82 0 158-31t137-88l72 72q16 18 39 8q22-9 22-33z" horiz-adv-x="857.1" />
+</font>
+</defs>
+</svg>
Index: /tags/2.6.0RC1/admin/themes/default/icon/index.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/icon/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/icon/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/themes/default/index.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/themes/default/js/common.js
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/js/common.js	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/js/common.js	(revision 25596)
@@ -0,0 +1,50 @@
+function array_delete(arr, item) {
+  var i = arr.indexOf(item);
+  if (i != -1) arr.splice(i, 1);
+}
+
+function sprintf() {
+  var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = '';
+  while (f) {
+    if (m = /^[^\x25]+/.exec(f)) {
+      o.push(m[0]);
+    }
+    else if (m = /^\x25{2}/.exec(f)) {
+      o.push('%');
+    }
+    else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
+      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
+        throw('Too few arguments.');
+      }
+      if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
+        throw('Expecting number but found ' + typeof(a));
+      }
+
+      switch (m[7]) {
+        case 'b': a = a.toString(2); break;
+        case 'c': a = String.fromCharCode(a); break;
+        case 'd': a = parseInt(a); break;
+        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
+        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
+        case 'o': a = a.toString(8); break;
+        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
+        case 'u': a = Math.abs(a); break;
+        case 'x': a = a.toString(16); break;
+        case 'X': a = a.toString(16).toUpperCase(); break;
+      }
+
+      a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a);
+      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
+      x = m[5] - String(a).length - s.length;
+      p = m[5] ? str_repeat(c, x) : '';
+      o.push(s + (m[4] ? a + p : p + a));
+    }
+    else {
+      throw('Huh ?!');
+    }
+
+    f = f.substring(m[0].length);
+  }
+
+  return o.join('');
+}
Index: /tags/2.6.0RC1/admin/themes/default/js/jquery.geoip.js
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/js/jquery.geoip.js	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/js/jquery.geoip.js	(revision 25596)
@@ -0,0 +1,62 @@
+
+GeoIp = {
+	cache: {},
+	pending: {},
+	
+	get: function(ip, callback){
+		if (!GeoIp.storageInit && window.localStorage) {
+			GeoIp.storageInit = true;
+			var cache = localStorage.getItem("freegeoip");
+			if (cache) {
+				cache = JSON.parse(cache);
+				for (var key in cache) {
+					var data = cache[key];
+					if ( (new Date()).getTime() - data.reqTime > 36 * 3600000)
+						delete cache[key];
+				}
+				GeoIp.cache = cache;
+			}
+			jQuery(window).on("unload", function() {
+				localStorage.setItem("freegeoip", JSON.stringify(GeoIp.cache) );
+			} );
+		}
+
+		if (GeoIp.cache.hasOwnProperty(ip))
+			callback(GeoIp.cache[ip]);
+		else if (GeoIp.pending[ip])
+			GeoIp.pending[ip].push(callback);
+		else {
+			GeoIp.pending[ip] = [callback];
+			jQuery.ajax( {
+				url: "http://freegeoip.net/json/" + ip,
+				dataType: "jsonp",
+				cache: true,
+				timeout: 5000,
+				success: function(data) {
+					data.reqTime = (new Date()).getTime();
+					var res=[];
+					if (data.city) res.push(data.city);
+					if (data.region_name) res.push(data.region_name);
+					if (data.country_name) res.push(data.country_name);
+					data.fullName = res.join(", ");
+
+					GeoIp.cache[ip] = data;
+					var callbacks = GeoIp.pending[ip];
+					delete GeoIp.pending[ip];
+					for (var i=0; i<callbacks.length; i++)
+						callbacks[i].call(null, data);
+				},
+
+				error: function() {
+					var data = {ip:ip, reqTime: (new Date()).getTime()};
+
+					GeoIp.cache[ip] = data;
+					var callbacks = GeoIp.pending[ip];
+					delete GeoIp.pending[ip];
+					for (var i=0; i<callbacks.length; i++)
+						callbacks[i].call(null, data);
+				}
+			});
+		}
+	}
+}
Index: /tags/2.6.0RC1/admin/themes/default/local_head.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/local_head.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/local_head.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+{if $load_css}
+<!--[if lt IE 7]>
+	<link rel="stylesheet" type="text/css" href="{$ROOT_URL}admin/themes/default/fix-ie5-ie6.css">
+<![endif]-->
+
+<!--[if IE 7]>
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}admin/themes/default/fix-ie7.css">
+<![endif]-->
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/print.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/print.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/print.css	(revision 25596)
@@ -0,0 +1,14 @@
+#menubar, .content .navigationBar, 
+.navThumb, #addComment {
+    display: none;
+}
+
+BODY {
+    margin: 0;
+    color: #000000;
+    background: #ffffff;
+}
+
+.content {
+    margin: 0;
+}
Index: /tags/2.6.0RC1/admin/themes/default/template/admin.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/admin.tpl	(revision 25596)
@@ -0,0 +1,139 @@
+{combine_script id='jquery.ui.accordion' load='header'}{*we load in the header because the accordion is on every admin page and usually all admin pages use the same header combined script but not the same footer script*}
+{footer_script require='jquery.ui.accordion'}
+jQuery(document).ready(function(){ldelim}
+	jQuery('#menubar').accordion({ldelim}
+		header: "dt.rdion",
+		event: "click",
+		heightStyle: "content",
+		active: {$ACTIVE_MENU}
+	});
+});
+{/footer_script}
+
+<div id="menubar">
+  <div id="adminHome"><a href="{$U_ADMIN}">{'Administration Home'|@translate}</a></div>
+	<dl class="first">
+		<dt class="rdion"><span class="icon-picture"> </span><span>{'Photos'|@translate}&nbsp;</span></dt>
+		<dd>
+			<ul>
+				<li><a class="icon-plus-circled" href="{$U_ADD_PHOTOS}">{'Add'|@translate}</a></li>
+				<li><a class="icon-star" href="{$U_RATING}">{'Rating'|@translate}</a></li>
+				<li><a class="icon-tags" href="{$U_TAGS}">{'Tags'|@translate}</a></li>
+				<li><a class="icon-clock" href="{$U_RECENT_SET}">{'Recent photos'|@translate}</a></li>
+				<li><a class="icon-pencil" href="{$U_BATCH}">{'Batch Manager'|@translate}</a></li>
+{if $NB_PHOTOS_IN_CADDIE > 0}
+				<li><a class="icon-basket" href="{$U_CADDIE}">{'Caddie'|@translate}<span class="adminMenubarCounter">{$NB_PHOTOS_IN_CADDIE}</span></a></li>
+{/if}
+			</ul>
+		</dd>
+	</dl>
+	<dl>
+		<dt class="rdion"><span class="icon-sitemap"> </span><span>{'Albums'|@translate}&nbsp;</span></dt>
+    <dd>
+      <ul>
+        <li><a class="icon-folder-open" href="{$U_CATEGORIES}">{'Manage'|@translate}</a></li>
+        <li><a class="icon-pencil" href="{$U_CAT_OPTIONS}">{'Properties'|@translate}</a></li>
+      </ul>
+    </dd>
+	</dl>
+	<dl>
+		<dt class="rdion"><span class="icon-users"> </span><span>{'Users'|@translate}&nbsp;</span></dt>
+		<dd>
+      <ul>
+        <li><a class="icon-user-add" href="{$U_USERS}">{'Manage'|@translate}</a></li>
+        <li><a class="icon-group" href="{$U_GROUPS}">{'Groups'|@translate}</a></li>
+				<li><a class="icon-mail-1" href="{$U_NOTIFICATION_BY_MAIL}">{'Notification'|@translate}</a></li>
+      </ul>
+		</dd>
+	</dl>
+	<dl>
+		<dt class="rdion"><span class="icon-puzzle"> </span><span>{'Plugins'|@translate}&nbsp;</span></dt>
+		<dd>
+      <ul>
+        <li><a class="icon-equalizer" href="{$U_PLUGINS}">{'Manage'|@translate}</a></li>
+      </ul>
+      <div id="pluginsMenuSeparator"></div>
+{if !empty($plugin_menu_items)}
+      <ul class="scroll">
+  {foreach from=$plugin_menu_items item=menu_item}
+        <li><a href="{$menu_item.URL}">{$menu_item.NAME}</a></li>
+  {/foreach}
+      </ul>
+{/if}
+		</dd>
+	</dl>
+	<dl>
+		<dt class="rdion"><span class="icon-wrench"> </span><span>{'Tools'|@translate}&nbsp;</span></dt>
+		<dd>
+      <ul>
+{if $ENABLE_SYNCHRONIZATION}
+        <li><a class="icon-exchange" href="{$U_CAT_UPDATE}">{'Synchronize'|@translate}</a></li>
+        <li><a class="icon-flow-branch" href="{$U_SITE_MANAGER}">{'Site manager'|@translate}</a></li>
+{/if}
+				<li><a class="icon-signal" href="{$U_HISTORY_STAT}">{'History'|@translate}</a></li>
+				<li><a class="icon-tools" href="{$U_MAINTENANCE}">{'Maintenance'|@translate}</a></li>
+{if isset($U_COMMENTS)}
+				<li><a class="icon-chat" href="{$U_COMMENTS}">{'Comments'|@translate}{if $NB_PENDING_COMMENTS > 0}<span class="adminMenubarCounter" title="{'%d waiting for validation'|translate:$NB_PENDING_COMMENTS}">{$NB_PENDING_COMMENTS}</span>{/if}</a></li>
+{/if}
+        <li><a class="icon-arrows-cw" href="{$U_UPDATES}">{'Updates'|@translate}</a></li>
+      </ul>
+		</dd>
+	</dl>
+	<dl class="last">
+		<dt class="rdion"><span class="icon-cog"> </span><span>{'Configuration'|@translate}&nbsp;</span></dt>
+		<dd>
+      <ul>
+        <li><a class="icon-cog-alt" href="{$U_CONFIG_GENERAL}">{'Options'|@translate}</a></li>
+        <li><a class="icon-menu" href="{$U_CONFIG_MENUBAR}">{'Menu Management'|@translate}</a></li>
+        <li><a class="icon-code" href="{$U_CONFIG_EXTENTS}">{'Templates'|@translate}</a></li>
+				<li><a class="icon-language" href="{$U_CONFIG_LANGUAGES}">{'Languages'|@translate}</a></li>
+        <li><a class="icon-brush" href="{$U_CONFIG_THEMES}">{'Themes'|@translate}</a></li>
+      </ul>
+    </dd>
+  </dl>
+</div> <!-- menubar -->
+
+<div id="content" class="content">
+
+  {if isset($TABSHEET)}
+  {$TABSHEET}
+  {/if}
+  {if isset($U_HELP)}
+	{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+  <ul class="HelpActions">
+    <li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}"><img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/help.png" alt="(?)"></a></li>
+  </ul>
+  {/if}
+
+  {if isset($errors)}
+  <div class="errors">
+    <ul>
+      {foreach from=$errors item=error}
+      <li>{$error}</li>
+      {/foreach}
+    </ul>
+  </div>
+  {/if}
+
+  {if isset($infos)}
+  <div class="infos">
+    <ul>
+      {foreach from=$infos item=info}
+      <li>{$info}</li>
+      {/foreach}
+    </ul>
+  </div>
+  {/if}
+
+  {if isset($warnings)}
+  <div class="warnings">
+    <ul>
+      {foreach from=$warnings item=warning}
+      <li>{$warning}</li>
+      {/foreach}
+    </ul>
+  </div>
+  {/if}
+
+  {$ADMIN_CONTENT}
+</div>
Index: /tags/2.6.0RC1/admin/themes/default/template/album_notification.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/album_notification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/album_notification.tpl	(revision 25596)
@@ -0,0 +1,40 @@
+<div class="titrePage">
+  <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Edit album'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="post" id="categoryNotify">
+
+<fieldset id="emailCatInfo">
+  <legend>{'Send an information email to group members'|@translate}</legend>
+
+{if isset($group_mail_options)}
+
+  <p>
+    <strong>{'Group'|@translate}</strong>
+    <br>
+    <select name="group">
+      {html_options options=$group_mail_options}
+    </select>
+  </p>
+
+  <p>
+    <strong>{'Complementary mail content'|@translate}</strong>
+    <br>
+    <textarea cols="50" rows="5" name="mail_content" id="mail_content" class="description">{$MAIL_CONTENT}</textarea>
+  </p>
+
+  <p>
+    <input class="submit" type="submit" value="{'Send'|@translate}" name="submitEmail">
+  </p>
+
+{elseif isset($no_group_in_gallery) and $no_group_in_gallery}
+  <p>{'There is no group in this gallery.'|@translate} <a href="admin.php?page=group_list" class="externalLink">{'Group management'|@translate}</a></p>
+{else}
+  <p>
+    {'No group is permitted to see this private album'|@translate}.
+    <a href="{$permission_url}" class="externalLink">{'Permission management'|@translate}</a>
+  </p>
+{/if}
+</fieldset>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/batch_manager_global.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/batch_manager_global.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/batch_manager_global.tpl	(revision 25596)
@@ -0,0 +1,993 @@
+{include file='include/tag_selection.inc.tpl'}
+{include file='include/datepicker.inc.tpl'}
+{include file='include/colorbox.inc.tpl'}
+{include file='include/add_album.inc.tpl'}
+{combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'}
+{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"}
+
+{footer_script}{literal}
+  pwg_initialization_datepicker("#date_creation_day", "#date_creation_month", "#date_creation_year", "#date_creation_linked_date", "#date_creation_action_set");
+{/literal}{/footer_script}
+
+{footer_script}{literal}
+/* Shift-click: select all photos between the click and the shift+click */
+jQuery(document).ready(function() {
+  var last_clicked=0;
+  var last_clickedstatus=true;
+  jQuery.fn.enableShiftClick = function() {
+    var inputs = [];
+    var count=0;
+    this.find('input[type=checkbox]').each(function() {
+      var pos=count;
+      inputs[count++]=this;
+      $(this).bind("shclick", function (dummy,event) {
+        if (event.shiftKey) {
+          var first = last_clicked;
+          var last = pos;
+          if (first > last) {
+            first=pos;
+            last=last_clicked;
+          }
+
+          for (var i=first; i<=last;i++) {
+            input = $(inputs[i]);
+            $(input).prop('checked', last_clickedstatus);
+            if (last_clickedstatus)
+            {
+              $(input).siblings("span.wrap2").addClass("thumbSelected");
+            }
+            else
+            {
+              $(input).siblings("span.wrap2").removeClass("thumbSelected");
+            }
+          }
+        }
+        else {
+          last_clicked = pos;
+          last_clickedstatus = this.checked;
+        }
+        return true;
+      });
+      $(this).click(function(event) {console.log(event.shiftKey);$(this).triggerHandler("shclick",event)});
+    });
+  }
+	$('ul.thumbnails').enableShiftClick();
+});
+{/literal}{/footer_script}
+
+{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'}
+{combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'}
+{combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'}
+{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
+
+{footer_script require='jquery.tokeninput'}
+jQuery(document).ready(function() {ldelim}
+  jQuery("a.preview-box").colorbox();
+  
+	var tag_src = [{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}];
+  jQuery("#tags").tokenInput(
+    tag_src,
+    {ldelim}
+      hintText: '{'Type in a search term'|@translate}',
+      noResultsText: '{'No results'|@translate}',
+      searchingText: '{'Searching...'|@translate}',
+      newText: ' ({'new'|@translate})',
+      animateDropdown: false,
+      preventDuplicates: true,
+      allowFreeTagging: true
+    }
+  );
+	
+  jQuery("#tagsFilter").tokenInput(
+    tag_src,
+    {ldelim}
+      hintText: '{'Type in a search term'|@translate}',
+      noResultsText: '{'No results'|@translate}',
+      searchingText: '{'Searching...'|@translate}',
+      animateDropdown: false,
+      preventDuplicates: true,
+      allowFreeTagging: false
+    }
+  );
+
+});
+{/footer_script}
+
+{footer_script}
+var nb_thumbs_page = {$nb_thumbs_page};
+var nb_thumbs_set = {$nb_thumbs_set};
+var are_you_sure = "{'Are you sure?'|@translate|@escape:'javascript'}";
+var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}";
+var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
+var derivatives = {ldelim}
+	elements: null,
+	done: 0,
+	total: 0,
+	
+	finished: function() {ldelim}
+		return derivatives.done == derivatives.total && derivatives.elements && derivatives.elements.length==0;
+	}
+};
+
+var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}";
+var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}";
+var selectedMessage_all = "{'All %d photos are selected'|@translate}";
+
+var width_str = '{'Width'|@translate}';
+var height_str = '{'Height'|@translate}';
+var max_width_str = '{'Maximum width'|@translate}';
+var max_height_str = '{'Maximum height'|@translate}';
+{literal}
+function str_repeat(i, m) {
+        for (var o = []; m > 0; o[--m] = i);
+        return o.join('');
+}
+
+function sprintf() {
+        var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = '';
+        while (f) {
+                if (m = /^[^\x25]+/.exec(f)) {
+                        o.push(m[0]);
+                }
+                else if (m = /^\x25{2}/.exec(f)) {
+                        o.push('%');
+                }
+                else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
+                        if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
+                                throw('Too few arguments.');
+                        }
+                        if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
+                                throw('Expecting number but found ' + typeof(a));
+                        }
+                        switch (m[7]) {
+                                case 'b': a = a.toString(2); break;
+                                case 'c': a = String.fromCharCode(a); break;
+                                case 'd': a = parseInt(a); break;
+                                case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
+                                case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
+                                case 'o': a = a.toString(8); break;
+                                case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
+                                case 'u': a = Math.abs(a); break;
+                                case 'x': a = a.toString(16); break;
+                                case 'X': a = a.toString(16).toUpperCase(); break;
+                        }
+                        a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a);
+                        c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
+                        x = m[5] - String(a).length - s.length;
+                        p = m[5] ? str_repeat(c, x) : '';
+                        o.push(s + (m[4] ? a + p : p + a));
+                }
+                else {
+                        throw('Huh ?!');
+                }
+                f = f.substring(m[0].length);
+        }
+        return o.join('');
+}
+
+function progress(success) {
+  jQuery('#progressBar').progressBar(derivatives.done, {
+    max: derivatives.total,
+    textFormat: 'fraction',
+    boxImage: 'themes/default/images/progressbar.gif',
+    barImage: 'themes/default/images/progressbg_orange.gif'
+  });
+	if (success !== undefined) {
+		var type = success ? 'regenerateSuccess': 'regenerateError',
+			s = jQuery('[name="'+type+'"]').val();
+		jQuery('[name="'+type+'"]').val(++s);
+	}
+
+	if (derivatives.finished()) {
+		jQuery('#applyAction').click();
+	}
+}
+
+$(document).ready(function() {
+  function checkPermitAction() {
+    var nbSelected = 0;
+    if ($("input[name=setSelected]").is(':checked')) {
+      nbSelected = nb_thumbs_set;
+    }
+    else {
+      nbSelected = $(".thumbnails input[type=checkbox]").filter(':checked').length;
+    }
+
+    if (nbSelected == 0) {
+      $("#permitAction").hide();
+      $("#forbidAction").show();
+    }
+    else {
+      $("#permitAction").show();
+      $("#forbidAction").hide();
+    }
+
+    $("#applyOnDetails").text(
+      sprintf(
+        applyOnDetails_pattern,
+        nbSelected
+      )
+    );
+
+    // display the number of currently selected photos in the "Selection" fieldset
+    if (nbSelected == 0) {
+      $("#selectedMessage").text(
+        sprintf(
+          selectedMessage_none,
+          nb_thumbs_set
+        )
+      );
+    }
+    else if (nbSelected == nb_thumbs_set) {
+      $("#selectedMessage").text(
+        sprintf(
+          selectedMessage_all,
+          nb_thumbs_set
+        )
+      );
+    }
+    else {
+      $("#selectedMessage").text(
+        sprintf(
+          selectedMessage_pattern,
+          nbSelected,
+          nb_thumbs_set
+        )
+      );
+    }
+  }
+
+  $('.thumbnails img').tipTip({
+    'delay' : 0,
+    'fadeIn' : 200,
+    'fadeOut' : 200
+  });
+
+  $("[id^=action_]").hide();
+
+  $("select[name=selectAction]").change(function () {
+    $("[id^=action_]").hide();
+    $("#action_"+$(this).prop("value")).show();
+
+    /* make sure the #albumSelect is on the right select box so that the */
+    /* "add new album" popup fills the right select box                  */
+    if ("associate" == $(this).prop("value") || "move" == $(this).prop("value")) {
+      jQuery("#albumSelect").removeAttr("id");
+      jQuery("#action_"+$(this).prop("value")+" select").attr("id", "albumSelect");
+    }
+
+    if ($(this).val() != -1) {
+      $("#applyActionBlock").show();
+    }
+    else {
+      $("#applyActionBlock").hide();
+    }
+  });
+
+  $(".wrap1 label").click(function (event) {
+    $("input[name=setSelected]").prop('checked', false);
+
+    var wrap2 = $(this).children(".wrap2");
+    var checkbox = $(this).children("input[type=checkbox]");
+
+    checkbox.triggerHandler("shclick",event);
+
+    if ($(checkbox).is(':checked')) {
+      $(wrap2).addClass("thumbSelected"); 
+    }
+    else {
+      $(wrap2).removeClass('thumbSelected'); 
+    }
+
+    checkPermitAction();
+  });
+
+  $("#selectAll").click(function () {
+    $("input[name=setSelected]").prop('checked', false);
+    selectPageThumbnails();
+    checkPermitAction();
+    return false;
+  });
+
+  function selectPageThumbnails() {
+    $(".thumbnails label").each(function() {
+      var wrap2 = $(this).children(".wrap2");
+      var checkbox = $(this).children("input[type=checkbox]");
+
+      $(checkbox).prop('checked', true);
+      $(wrap2).addClass("thumbSelected"); 
+    });
+  }
+
+  $("#selectNone").click(function () {
+    $("input[name=setSelected]").prop('checked', false);
+
+    $(".thumbnails label").each(function() {
+      var wrap2 = $(this).children(".wrap2");
+      var checkbox = $(this).children("input[type=checkbox]");
+
+      $(checkbox).prop('checked', false);
+      $(wrap2).removeClass("thumbSelected"); 
+    });
+    checkPermitAction();
+    return false;
+  });
+
+  $("#selectInvert").click(function () {
+    $("input[name=setSelected]").prop('checked', false);
+
+    $(".thumbnails label").each(function() {
+      var wrap2 = $(this).children(".wrap2");
+      var checkbox = $(this).children("input[type=checkbox]");
+
+      $(checkbox).prop('checked', !$(checkbox).is(':checked'));
+
+      if ($(checkbox).is(':checked')) {
+        $(wrap2).addClass("thumbSelected"); 
+      }
+      else {
+        $(wrap2).removeClass('thumbSelected'); 
+      }
+    });
+    checkPermitAction();
+    return false;
+  });
+
+  $("#selectSet").click(function () {
+    selectPageThumbnails();
+    $("input[name=setSelected]").prop('checked', true);
+    checkPermitAction();
+    return false;
+  });
+
+  $("input[name=remove_author]").click(function () {
+    if ($(this).is(':checked')) {
+      $("input[name=author]").hide();
+    }
+    else {
+      $("input[name=author]").show();
+    }
+  });
+
+  $("input[name=remove_title]").click(function () {
+    if ($(this).is(':checked')) {
+      $("input[name=title]").hide();
+    }
+    else {
+      $("input[name=title]").show();
+    }
+  });
+
+  $("input[name=remove_date_creation]").click(function () {
+    if ($(this).is(':checked')) {
+      $("#set_date_creation").hide();
+    }
+    else {
+      $("#set_date_creation").show();
+    }
+  });
+
+  $(".removeFilter").click(function () {
+    var filter = $(this).parent('li').attr("id");
+    filter_disable(filter);
+
+    return false;
+  });
+
+  function filter_enable(filter) {
+    /* show the filter*/
+    $("#"+filter).show();
+
+    /* check the checkbox to declare we use this filter */
+    $("input[type=checkbox][name="+filter+"_use]").prop("checked", true);
+
+    /* forbid to select this filter in the addFilter list */
+    $("#addFilter").children("option[value="+filter+"]").attr("disabled", "disabled");
+  }
+
+  $("#addFilter").change(function () {
+    var filter = $(this).prop("value");
+    filter_enable(filter);
+    $(this).prop("value", -1);
+  });
+
+  function filter_disable(filter) {
+    /* hide the filter line */
+    $("#"+filter).hide();
+
+    /* uncheck the checkbox to declare we do not use this filter */
+    $("input[name="+filter+"_use]").prop("checked", false);
+
+    /* give the possibility to show it again */
+    $("#addFilter").children("option[value="+filter+"]").removeAttr("disabled");
+  }
+
+  $("#removeFilters").click(function() {
+    $("#filterList li").each(function() {
+      var filter = $(this).attr("id");
+      filter_disable(filter);
+    });
+    return false;
+  });
+
+  jQuery('#applyAction').click(function() {
+		var action = jQuery('[name="selectAction"]').val();
+		if (action == 'delete_derivatives') {
+			var d_count = $('#action_delete_derivatives input[type=checkbox]').filter(':checked').length
+				, e_count = $('input[name="setSelected"]').is(':checked') ? nb_thumbs_set : $('.thumbnails input[type=checkbox]').filter(':checked').length;
+			if (d_count*e_count > 500)
+				return confirm(are_you_sure);
+		}
+		
+		if (action != 'generate_derivatives'
+			|| derivatives.finished() )
+		{
+			return true;
+		}
+
+		jQuery('.bulkAction').hide();
+
+		var queuedManager = jQuery.manageAjax.create('queued', { 
+			queue: true,  
+			cacheResponse: false,
+			maxRequests: 1
+		});
+
+		derivatives.elements = [];
+		if (jQuery('input[name="setSelected"]').is(':checked'))
+			derivatives.elements = all_elements;
+		else
+			jQuery('.thumbnails input[type=checkbox]').each(function() {
+				if (jQuery(this).is(':checked')) {
+					derivatives.elements.push(jQuery(this).val());
+				}
+			});
+
+		jQuery('#applyActionBlock').hide();
+		jQuery('select[name="selectAction"]').hide();
+		jQuery('#regenerationMsg').show();
+		
+		progress();
+		getDerivativeUrls();
+		return false;
+  });
+
+	function getDerivativeUrls() {
+		var ids = derivatives.elements.splice(0, 500);
+		var params = {max_urls: 100000, ids: ids, types: []};
+		jQuery("#action_generate_derivatives input").each( function(i, t) {
+			if ($(t).is(":checked"))
+				params.types.push( t.value );
+		} );
+
+		jQuery.ajax( {
+			type: "POST",
+			url: 'ws.php?format=json&method=pwg.getMissingDerivatives',
+			data: params,
+			dataType: "json",
+			success: function(data) {
+				if (!data.stat || data.stat != "ok") {
+					return;
+				}
+				derivatives.total += data.result.urls.length;
+				progress();
+				for (var i=0; i < data.result.urls.length; i++) {
+					jQuery.manageAjax.add("queued", {
+						type: 'GET', 
+						url: data.result.urls[i] + "&ajaxload=true", 
+						dataType: 'json',
+						success: ( function(data) { derivatives.done++; progress(true) }),
+						error: ( function(data) { derivatives.done++; progress(false) })
+					});
+				}
+				if (derivatives.elements.length)
+					setTimeout( getDerivativeUrls, 25 * (derivatives.total-derivatives.done));
+			}
+		} );
+	}
+
+  checkPermitAction();
+  
+  /* dimensions sliders */
+  /**
+   * find the key from a value in the startStopValues array
+   */
+  function getSliderKeyFromValue(value, values) {
+    for (var key in values) {
+      if (values[key] == value) {
+        return key;
+      }
+    }
+  
+    return 0;
+  }
+
+{/literal}
+  var dimension_values = {ldelim}
+    'width':[{$dimensions.widths}],
+    'height':[{$dimensions.heights}],
+    'ratio':[{$dimensions.ratios}]
+  };
+
+  $("#filter_dimension_width_slider").slider({ldelim}
+    range: true,
+    min: 0,
+    max: dimension_values['width'].length - 1,
+    values: [
+      getSliderKeyFromValue({$dimensions.selected.min_width}, dimension_values['width']),
+      getSliderKeyFromValue({$dimensions.selected.max_width}, dimension_values['width'])
+    ],
+    slide: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]);
+      $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]);
+
+      $("#filter_dimension_width_info").html(sprintf(
+        "{'between %d and %d pixels'|@translate}",
+        dimension_values['width'][ui.values[0]],
+        dimension_values['width'][ui.values[1]]
+      ));
+    },
+    change: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]);
+      $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]);
+
+      $("#filter_dimension_width_info").html(sprintf(
+        "{'between %d and %d pixels'|@translate}",
+        dimension_values['width'][ui.values[0]],
+        dimension_values['width'][ui.values[1]]
+      ));
+    }
+  });
+
+  $("#filter_dimension_height_slider").slider({ldelim}
+    range: true,
+    min: 0,
+    max: dimension_values['height'].length - 1,
+    values: [
+      getSliderKeyFromValue({$dimensions.selected.min_height}, dimension_values['height']),
+      getSliderKeyFromValue({$dimensions.selected.max_height}, dimension_values['height'])
+    ],
+    slide: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]);
+      $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]);
+
+      $("#filter_dimension_height_info").html(sprintf(
+        "{'between %d and %d pixels'|@translate}",
+        dimension_values['height'][ui.values[0]],
+        dimension_values['height'][ui.values[1]]
+      ));
+    },
+    change: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]);
+      $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]);
+
+      $("#filter_dimension_height_info").html(sprintf(
+        "{'between %d and %d pixels'|@translate}",
+        dimension_values['height'][ui.values[0]],
+        dimension_values['height'][ui.values[1]]
+      ));
+    }
+  });
+
+  $("#filter_dimension_ratio_slider").slider({ldelim}
+    range: true,
+    min: 0,
+    max: dimension_values['ratio'].length - 1,
+    values: [
+      getSliderKeyFromValue({$dimensions.selected.min_ratio}, dimension_values['ratio']),
+      getSliderKeyFromValue({$dimensions.selected.max_ratio}, dimension_values['ratio'])
+    ],
+    slide: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]);
+      $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]);
+
+      $("#filter_dimension_ratio_info").html(sprintf(
+        "{'between %.2f and %.2f'|@translate}",
+        dimension_values['ratio'][ui.values[0]],
+        dimension_values['ratio'][ui.values[1]]
+      ));
+    },
+    change: function(event, ui) {ldelim}
+      $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]);
+      $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]);
+
+      $("#filter_dimension_ratio_info").html(sprintf(
+        "{'between %.2f and %.2f'|@translate}",
+        dimension_values['ratio'][ui.values[0]],
+        dimension_values['ratio'][ui.values[1]]
+      ));
+    }
+  });
+  
+  $("a.dimensions-choice").click(function() {ldelim}
+    var type = jQuery(this).data("type");
+    var min = jQuery(this).data("min");
+    var max = jQuery(this).data("max");
+
+    $("#filter_dimension_"+ type +"_slider").slider("values", 0,
+      getSliderKeyFromValue(min, dimension_values[type])
+    );
+
+    $("#filter_dimension_"+type+"_slider").slider("values", 1, 
+      getSliderKeyFromValue(max, dimension_values[type])
+    );
+  });
+});
+
+{/footer_script}
+
+<div id="batchManagerGlobal">
+
+<h2>{'Batch Manager'|@translate}</h2>
+
+  <form action="{$F_ACTION}" method="post">
+	<input type="hidden" name="start" value="{$START}">
+
+  <fieldset>
+    <legend>{'Filter'|@translate}</legend>
+
+    <ul id="filterList">
+      <li id="filter_prefilter" {if !isset($filter.prefilter)}style="display:none"{/if}>
+        <a href="#" class="removeFilter" title="{'remove this filter'|@translate}"><span>[x]</span></a>
+        <input type="checkbox" name="filter_prefilter_use" class="useFilterCheckbox" {if isset($filter.prefilter)}checked="checked"{/if}>
+        {'Predefined filter'|@translate}
+        <select name="filter_prefilter">
+          {foreach from=$prefilters item=prefilter}
+          <option value="{$prefilter.ID}" {if isset($filter.prefilter) && $filter.prefilter eq $prefilter.ID}selected="selected"{/if}>{$prefilter.NAME}</option>
+          {/foreach}
+        </select>
+      </li>
+      
+      <li id="filter_category" {if !isset($filter.category)}style="display:none"{/if}>
+        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
+        <input type="checkbox" name="filter_category_use" class="useFilterCheckbox" {if isset($filter.category)}checked="checked"{/if}>
+        {'Album'|@translate}
+        <select style="width:400px" name="filter_category" size="1">
+          {html_options options=$category_full_name_options selected=$filter_category_selected}
+        </select>
+        <label><input type="checkbox" name="filter_category_recursive" {if isset($filter.category_recursive)}checked="checked"{/if}> {'include child albums'|@translate}</label>
+      </li>
+      
+      <li id="filter_tags" {if !isset($filter.tags)}style="display:none"{/if}>
+        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
+        <input type="checkbox" name="filter_tags_use" class="useFilterCheckbox" {if isset($filter.tags)}checked="checked"{/if}>
+        {'Tags'|@translate}
+        <select id="tagsFilter" name="filter_tags">
+          {if isset($filter_tags)}{foreach from=$filter_tags item=tag}
+          <option value="{$tag.id}">{$tag.name}</option>
+          {/foreach}{/if}
+        </select>
+        <label><span><input type="radio" name="tag_mode" value="AND" {if !isset($filter.tag_mode) or $filter.tag_mode eq 'AND'}checked="checked"{/if}> {'All tags'|@translate}</span></label>
+        <label><span><input type="radio" name="tag_mode" value="OR" {if isset($filter.tag_mode) and $filter.tag_mode eq 'OR'}checked="checked"{/if}> {'Any tag'|@translate}</span></label>
+      </li>
+      
+      <li id="filter_level" {if !isset($filter.level)}style="display:none"{/if}>
+        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
+        <input type="checkbox" name="filter_level_use" class="useFilterCheckbox" {if isset($filter.level)}checked="checked"{/if}>
+        {'Privacy level'|@translate}
+        <select name="filter_level" size="1">
+          {html_options options=$filter_level_options selected=$filter_level_options_selected}
+        </select>
+        <label><input type="checkbox" name="filter_level_include_lower" {if isset($filter.level_include_lower)}checked="checked"{/if}> {'include photos with lower privacy level'|@translate}</label>
+      </li>
+      
+      <li id="filter_dimension" {if !isset($filter.dimension)}style="display:none"{/if}>
+        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
+        <input type="checkbox" name="filter_dimension_use" class="useFilterCheckbox" {if isset($filter.dimension)}checked="checked"{/if}>
+        {'Dimensions'|@translate}
+        
+        <blockquote>
+          {'Width'|@translate} <span id="filter_dimension_width_info">{'between %d and %d pixels'|@translate:$dimensions.selected.min_width:$dimensions.selected.max_width}</span>
+          | <a class="dimensions-choice" data-type="width" data-min="{$dimensions.bounds.min_width}" data-max="{$dimensions.bounds.max_width}">{'Reset'|@translate}</a>
+          <div id="filter_dimension_width_slider"></div>
+          
+          {'Height'|@translate} <span id="filter_dimension_height_info">{'between %d and %d pixels'|@translate:$dimensions.selected.min_height:$dimensions.selected.max_height}</span>
+          | <a class="dimensions-choice" data-type="height" data-min="{$dimensions.bounds.min_height}" data-max="{$dimensions.bounds.max_height}">{'Reset'|@translate}</a>
+          <div id="filter_dimension_height_slider"></div>
+          
+          {'Ratio'|@translate} ({'Width'|@translate}/{'Height'|@translate}) <span id="filter_dimension_ratio_info">{'between %.2f and %.2f'|@translate:$dimensions.selected.min_ratio:$dimensions.selected.max_ratio}</span>
+{if isset($dimensions.ratio_portrait)}
+          | <a class="dimensions-choice" data-type="ratio" data-min="{$dimensions.ratio_portrait.min}" data-max="{$dimensions.ratio_portrait.max}">{'Portrait'|@translate}</a>
+{/if}
+{if isset($dimensions.ratio_square)}
+          | <a class="dimensions-choice" data-type="ratio" data-min="{$dimensions.ratio_square.min}" data-max="{$dimensions.ratio_square.max}">{'square'|@translate}</a>
+{/if}
+{if isset($dimensions.ratio_landscape)}
+          | <a class="dimensions-choice" data-type="ratio" data-min="{$dimensions.ratio_landscape.min}" data-max="{$dimensions.ratio_landscape.max}">{'Landscape'|@translate}</a>
+{/if}
+{if isset($dimensions.ratio_panorama)}
+          | <a class="dimensions-choice" data-type="ratio" data-min="{$dimensions.ratio_panorama.min}" data-max="{$dimensions.ratio_panorama.max}">{'Panorama'|@translate}</a>
+{/if}
+          | <a class="dimensions-choice" data-type="ratio" data-min="{$dimensions.bounds.min_ratio}" data-max="{$dimensions.bounds.max_ratio}">{'Reset'|@translate}</a>
+          <div id="filter_dimension_ratio_slider"></div>
+        </blockquote>
+        
+        <input type="hidden" name="filter_dimension_min_width" value="{$dimensions.selected.min_width}">
+        <input type="hidden" name="filter_dimension_max_width" value="{$dimensions.selected.max_width}">
+        <input type="hidden" name="filter_dimension_min_height" value="{$dimensions.selected.min_height}">
+        <input type="hidden" name="filter_dimension_max_height" value="{$dimensions.selected.max_height}">
+        <input type="hidden" name="filter_dimension_min_ratio" value="{$dimensions.selected.min_ratio}">
+        <input type="hidden" name="filter_dimension_max_ratio" value="{$dimensions.selected.max_ratio}">
+      </li>
+    </ul>
+
+    <p class="actionButtons">
+      <select id="addFilter">
+        <option value="-1">{'Add a filter'|@translate}</option>
+        <option disabled="disabled">------------------</option>
+        <option value="filter_prefilter" {if isset($filter.prefilter)}disabled="disabled"{/if}>{'Predefined filter'|@translate}</option>
+        <option value="filter_category" {if isset($filter.category)}disabled="disabled"{/if}>{'Album'|@translate}</option>
+        <option value="filter_tags" {if isset($filter.tags)}disabled="disabled"{/if}>{'Tags'|@translate}</option>
+        <option value="filter_level" {if isset($filter.level)}disabled="disabled"{/if}>{'Privacy level'|@translate}</option>
+        <option value="filter_dimension" {if isset($filter.dimension)}disabled="disabled"{/if}>{'Dimensions'|@translate}</option>
+      </select>
+      <a id="removeFilters" href="">{'Remove all filters'|@translate}</a>
+    </p>
+
+    <p class="actionButtons" id="applyFilterBlock">
+      <input id="applyFilter" class="submit" type="submit" value="{'Refresh photo set'|@translate}" name="submitFilter">
+    </p>
+
+  </fieldset>
+
+  <fieldset>
+
+    <legend>{'Selection'|@translate}</legend>
+
+  {if !empty($thumbnails)}
+  <p id="checkActions">
+    {'Select:'|@translate}
+{if $nb_thumbs_set > $nb_thumbs_page}
+    <a href="#" id="selectAll">{'The whole page'|@translate}</a>,
+    <a href="#" id="selectSet">{'The whole set'|@translate}</a>,
+{else}
+    <a href="#" id="selectAll">{'All'|@translate}</a>,
+{/if}
+    <a href="#" id="selectNone">{'None'|@translate}</a>,
+    <a href="#" id="selectInvert">{'Invert'|@translate}</a>
+
+    <span id="selectedMessage"></span>
+
+    <input type="checkbox" name="setSelected" style="display:none" {if count($selection) == $nb_thumbs_set}checked="checked"{/if}>
+  </p>
+
+	<ul class="thumbnails">
+		{html_style}
+UL.thumbnails SPAN.wrap2{ldelim}
+  width: {$thumb_params->max_width()+2}px;
+}
+UL.thumbnails SPAN.wrap2 {ldelim}
+  height: {$thumb_params->max_height()+25}px;
+}
+		{/html_style}
+		{foreach from=$thumbnails item=thumbnail}
+		{assign var='isSelected' value=$thumbnail.id|@in_array:$selection}
+		<li>
+			<span class="wrap1">
+				<label>
+					<input type="checkbox" name="selection[]" value="{$thumbnail.id}" {if $isSelected}checked="checked"{/if}>
+					<span class="wrap2{if $isSelected} thumbSelected{/if}">
+					<div class="actions"><a href="{$thumbnail.FILE_SRC}" class="preview-box">{'Zoom'|@translate}</a> &middot; <a href="{$thumbnail.U_EDIT}" target="_blank">{'Edit'|@translate}</a></div>
+						{if $thumbnail.level > 0}
+						<em class="levelIndicatorB">{'Level %d'|@sprintf:$thumbnail.level|@translate}</em>
+						<em class="levelIndicatorF" title="{'Who can see these photos?'|@translate} : ">{'Level %d'|@sprintf:$thumbnail.level|@translate}</em>
+						{/if}
+						<img src="{$thumbnail.thumb->get_url()}" alt="{$thumbnail.file}" title="{$thumbnail.TITLE|@escape:'html'}" {$thumbnail.thumb->get_size_htm()}>
+					</span>
+				</label>
+			</span>
+		</li>
+		{/foreach}
+	</ul>
+
+  {if !empty($navbar) }
+  <div style="clear:both;">
+
+    <div style="float:left">
+    {include file='navigation_bar.tpl'|@get_extent:'navbar'}
+    </div>
+
+    <div style="float:right;margin-top:10px;">{'display'|@translate}
+      <a href="{$U_DISPLAY}&amp;display=20">20</a>
+      &middot; <a href="{$U_DISPLAY}&amp;display=50">50</a>
+      &middot; <a href="{$U_DISPLAY}&amp;display=100">100</a>
+      &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|@translate}</a>
+      {'photos per page'|@translate}
+    </div>
+  </div>
+  {/if}
+
+  {else}
+  <div>{'No photo in the current set.'|@translate}</div>
+  {/if}
+  </fieldset>
+
+  <fieldset id="action">
+
+    <legend>{'Action'|@translate}</legend>
+      <div id="forbidAction"{if count($selection) != 0} style="display:none"{/if}>{'No photo selected, no action possible.'|@translate}</div>
+      <div id="permitAction"{if count($selection) == 0} style="display:none"{/if}>
+
+    <select name="selectAction">
+      <option value="-1">{'Choose an action'|@translate}</option>
+      <option disabled="disabled">------------------</option>
+      <option value="delete" class="icon-trash">{'Delete selected photos'|@translate}</option>
+      <option value="associate">{'Associate to album'|@translate}</option>
+      <option value="move">{'Move to album'|@translate}</option>
+  {if !empty($dissociate_options)}
+      <option value="dissociate">{'Dissociate from album'|@translate}</option>
+  {/if}
+      <option value="add_tags">{'Add tags'|@translate}</option>
+  {if !empty($DEL_TAG_SELECTION)}
+      <option value="del_tags">{'remove tags'|@translate}</option>
+  {/if}
+      <option value="author">{'Set author'|@translate}</option>
+      <option value="title">{'Set title'|@translate}</option>
+      <option value="date_creation">{'Set creation date'|@translate}</option>
+      <option value="level" class="icon-lock">{'Who can see these photos?'|@translate}</option>
+      <option value="metadata">{'Synchronize metadata'|@translate}</option>
+  {if ($IN_CADDIE)}
+      <option value="remove_from_caddie">{'Remove from caddie'|@translate}</option>
+  {else}
+      <option value="add_to_caddie">{'Add to caddie'|@translate}</option>
+  {/if}
+		<option value="delete_derivatives">{'Delete multiple size images'|@translate}</option>
+		<option value="generate_derivatives">{'Generate multiple size images'|@translate}</option>
+  {if !empty($element_set_global_plugins_actions)}
+    {foreach from=$element_set_global_plugins_actions item=action}
+      <option value="{$action.ID}">{$action.NAME}</option>
+    {/foreach}
+  {/if}
+    </select>
+
+    <!-- delete -->
+    <div id="action_delete" class="bulkAction">
+    <p><label><input type="checkbox" name="confirm_deletion" value="1"> {'Are you sure?'|@translate}</label></p>
+    </div>
+
+    <!-- associate -->
+    <div id="action_associate" class="bulkAction">
+          <select style="width:400px" name="associate" size="1">
+            {html_options options=$category_full_name_options}
+         </select>
+<br>{'... or '|@translate} <a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
+    </div>
+
+    <!-- move -->
+    <div id="action_move" class="bulkAction">
+          <select style="width:400px" name="move" size="1">
+            {html_options options=$category_full_name_options}
+         </select>
+<br>{'... or '|@translate} <a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
+    </div>
+
+
+    <!-- dissociate -->
+    <div id="action_dissociate" class="bulkAction">
+          <select style="width:400px" name="dissociate" size="1">
+            {if !empty($dissociate_options)}{html_options options=$dissociate_options }{/if}
+          </select>
+    </div>
+
+
+    <!-- add_tags -->
+    <div id="action_add_tags" class="bulkAction">
+<select id="tags" name="add_tags">
+</select>
+    </div>
+
+    <!-- del_tags -->
+    <div id="action_del_tags" class="bulkAction">
+{if !empty($DEL_TAG_SELECTION)}{$DEL_TAG_SELECTION}{/if}
+    </div>
+
+    <!-- author -->
+    <div id="action_author" class="bulkAction">
+    <label><input type="checkbox" name="remove_author"> {'remove author'|@translate}</label><br>
+    {assign var='authorDefaultValue' value='Type here the author name'|@translate}
+<input type="text" class="large" name="author" value="{$authorDefaultValue}" onfocus="this.value=(this.value=='{$authorDefaultValue|@escape:javascript}') ? '' : this.value;" onblur="this.value=(this.value=='') ? '{$authorDefaultValue|@escape:javascript}' : this.value;">
+    </div>    
+
+    <!-- title -->
+    <div id="action_title" class="bulkAction">
+    <label><input type="checkbox" name="remove_title"> {'remove title'|@translate}</label><br>
+    {assign var='titleDefaultValue' value='Type here the title'|@translate}
+<input type="text" class="large" name="title" value="{$titleDefaultValue}" onfocus="this.value=(this.value=='{$titleDefaultValue|@escape:javascript}') ? '' : this.value;" onblur="this.value=(this.value=='') ? '{$titleDefaultValue|@escape:javascript}' : this.value;">
+    </div>
+
+    <!-- date_creation -->
+    <div id="action_date_creation" class="bulkAction">
+      <label><input type="checkbox" name="remove_date_creation"> {'remove creation date'|@translate}</label><br>
+      <div id="set_date_creation">
+          <select id="date_creation_day" name="date_creation_day">
+             <option value="0">--</option>
+            {section name=day start=1 loop=32}
+              <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$DATE_CREATION_DAY}selected="selected"{/if}>{$smarty.section.day.index}</option>
+            {/section}
+          </select>
+          <select id="date_creation_month" name="date_creation_month">
+            {html_options options=$month_list selected=$DATE_CREATION_MONTH}
+          </select>
+          <input id="date_creation_year"
+                 name="date_creation_year"
+                 type="text"
+                 size="4"
+                 maxlength="4"
+                 value="{$DATE_CREATION_YEAR}">
+          <input id="date_creation_linked_date" name="date_creation_linked_date" type="hidden" size="10" disabled="disabled">
+      </div>
+    </div>
+
+    <!-- level -->
+    <div id="action_level" class="bulkAction">
+        <select name="level" size="1">
+          {html_options options=$level_options selected=$level_options_selected}
+        </select>
+    </div>
+
+    <!-- metadata -->
+    <div id="action_metadata" class="bulkAction">
+    </div>
+
+		<!-- generate derivatives -->
+		<div id="action_generate_derivatives" class="bulkAction">
+			<a href="javascript:selectGenerateDerivAll()">{'All'|@translate}</a>,
+			<a href="javascript:selectGenerateDerivNone()">{'None'|@translate}</a>
+			<br>
+			{foreach from=$generate_derivatives_types key=type item=disp}
+				<label><input type="checkbox" name="generate_derivatives_type[]" value="{$type}"> {$disp}</label>
+			{/foreach}
+			{footer_script}
+			function selectGenerateDerivAll() {ldelim}
+				$("#action_generate_derivatives input[type=checkbox]").prop("checked", true);
+			}
+			function selectGenerateDerivNone() {ldelim}
+				$("#action_generate_derivatives input[type=checkbox]").prop("checked", false);
+			}
+			{/footer_script}
+		</div>
+
+		<!-- delete derivatives -->
+		<div id="action_delete_derivatives" class="bulkAction">
+			<a href="javascript:selectDelDerivAll()">{'All'|@translate}</a>,
+			<a href="javascript:selectDelDerivNone()">{'None'|@translate}</a>
+			<br>
+			{foreach from=$del_derivatives_types key=type item=disp}
+				<label><input type="checkbox" name="del_derivatives_type[]" value="{$type}"> {$disp}</label>
+			{/foreach}
+			{footer_script}
+			function selectDelDerivAll() {ldelim}
+				$("#action_delete_derivatives input[type=checkbox]").prop("checked", true);
+			}
+			function selectDelDerivNone() {ldelim}
+				$("#action_delete_derivatives input[type=checkbox]").prop("checked", false);
+			}
+			{/footer_script}
+		</div>
+		
+    <!-- progress bar -->
+    <div id="regenerationMsg" class="bulkAction" style="display:none">
+      <p id="regenerationText" style="margin-bottom:10px;">{'Generate multiple size images'|@translate}</p>
+      <span class="progressBar" id="progressBar"></span>
+      <input type="hidden" name="regenerateSuccess" value="0">
+      <input type="hidden" name="regenerateError" value="0">
+    </div>
+
+    <!-- plugins -->
+{if !empty($element_set_global_plugins_actions)}
+  {foreach from=$element_set_global_plugins_actions item=action}
+    <div id="action_{$action.ID}" class="bulkAction">
+    {if !empty($action.CONTENT)}{$action.CONTENT}{/if}
+    </div>
+  {/foreach}
+{/if}
+
+    <p id="applyActionBlock" style="display:none" class="actionButtons">
+      <input id="applyAction" class="submit" type="submit" value="{'Apply action'|@translate}" name="submit"> <span id="applyOnDetails"></span></p>
+
+    </div> <!-- #permitAction -->
+  </fieldset>
+
+  </form>
+
+</div> <!-- #batchManagerGlobal -->
Index: /tags/2.6.0RC1/admin/themes/default/template/batch_manager_unit.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/batch_manager_unit.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/batch_manager_unit.tpl	(revision 25596)
@@ -0,0 +1,145 @@
+{include file='include/autosize.inc.tpl'}
+{include file='include/datepicker.inc.tpl'}
+{include file='include/colorbox.inc.tpl'}
+
+{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'}
+{combine_script id='jquery.tokeninput' load='async' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'}
+{footer_script require='jquery.tokeninput'}
+jQuery(document).ready(function() {ldelim}
+	jQuery('select[name|="tags"]').tokenInput(
+		[{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}],
+    {ldelim}
+      hintText: '{'Type in a search term'|@translate}',
+      noResultsText: '{'No results'|@translate}',
+      searchingText: '{'Searching...'|@translate}',
+      newText: ' ({'new'|@translate})',
+      animateDropdown: false,
+      preventDuplicates: true,
+      allowFreeTagging: true
+    }
+  );
+
+  jQuery("a.preview-box").colorbox();
+});
+{/footer_script}
+
+<h2>{'Batch Manager'|@translate}</h2>
+
+<form action="{$F_ACTION}" method="POST">
+<fieldset>
+  <legend>{'Display options'|@translate}</legend>
+  <p>{'photos per page'|@translate} :
+      <a href="{$U_ELEMENTS_PAGE}&amp;display=5">5</a>
+    | <a href="{$U_ELEMENTS_PAGE}&amp;display=10">10</a>
+    | <a href="{$U_ELEMENTS_PAGE}&amp;display=50">50</a>
+    | <a href="{$U_ELEMENTS_PAGE}&amp;display=all">{'all'|@translate}</a>
+  </p>
+
+</fieldset>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+{if !empty($elements) }
+<div><input type="hidden" name="element_ids" value="{$ELEMENT_IDS}"></div>
+{foreach from=$elements item=element}
+<fieldset class="elementEdit">
+  <legend>{$element.LEGEND}</legend>
+
+  <span class="thumb">
+    <a href="{$element.FILE_SRC}" class="preview-box" title="{$element.LEGEND|@htmlspecialchars}"><img src="{$element.TN_SRC}" alt=""></a>
+    <br/>
+    <a href="{$element.U_EDIT}">{'Edit'|@translate}</a>
+  </span>
+
+  <table>
+
+    <tr>
+      <td><strong>{'Title'|@translate}</strong></td>
+      <td><input type="text" class="large" name="name-{$element.id}" value="{$element.NAME}"></td>
+    </tr>
+
+    <tr>
+      <td><strong>{'Author'|@translate}</strong></td>
+      <td><input type="text" class="large" name="author-{$element.id}" value="{$element.AUTHOR}"></td>
+    </tr>
+
+    <tr>
+      <td><strong>{'Creation date'|@translate}</strong></td>
+      <td>
+        <label><input type="radio" name="date_creation_action-{$element.id}" value="unset"> {'unset'|@translate}</label>
+        <label><input type="radio" name="date_creation_action-{$element.id}" value="set" id="date_creation_action_set-{$element.id}"> {'set to'|@translate}</label>
+
+        <select id="date_creation_day-{$element.id}" name="date_creation_day-{$element.id}">
+         	<option value="0">--</option>
+           {section name=day start=1 loop=32}
+             <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$element.DATE_CREATION_DAY}selected="selected"{/if}>{$smarty.section.day.index}</option>
+           {/section}
+        </select>
+        <select id="date_creation_month-{$element.id}" name="date_creation_month-{$element.id}">
+          {html_options options=$month_list selected=$element.DATE_CREATION_MONTH}
+        </select>
+        <input id="date_creation_year-{$element.id}"
+               name="date_creation_year-{$element.id}"
+               type="text"
+               size="4"
+               maxlength="4"
+               value="{$element.DATE_CREATION_YEAR}">
+        <input id="date_creation_linked_date-{$element.id}" name="date_creation_linked_date-{$element.id}" type="hidden" size="10" disabled="disabled">
+        {footer_script}
+          pwg_initialization_datepicker("#date_creation_day-{$element.id}", "#date_creation_month-{$element.id}", "#date_creation_year-{$element.id}", "#date_creation_linked_date-{$element.id}", "#date_creation_action_set-{$element.id}");
+        {/footer_script}
+      </td>
+    </tr>
+    <tr>
+      <td><strong>{'Who can see this photo?'|@translate}</strong></td>
+      <td>
+        <select name="level-{$element.id}">
+          {html_options options=$level_options selected=$element.LEVEL}
+        </select>
+      </td>
+    </tr>
+
+    <tr>
+      <td><strong>{'Tags'|@translate}</strong></td>
+      <td>
+
+<select name="tags-{$element.id}">
+{foreach from=$element.TAGS item=tag}
+  <option value="{$tag.id}" class="selected">{$tag.name}</option>
+{/foreach}
+</select>
+
+      </td>
+    </tr>
+
+    <tr>
+      <td><strong>{'Description'|@translate}</strong></td>
+      <td><textarea cols="50" rows="5" name="description-{$element.id}" id="description-{$element.id}" class="description">{$element.DESCRIPTION}</textarea></td>
+    </tr>
+
+  </table>
+
+</fieldset>
+{/foreach}
+
+{if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+<p>
+  <input type="submit" value="{'Submit'|@translate}" name="submit">
+  <input type="reset" value="{'Reset'|@translate}">
+</p>
+{/if}
+
+</form>
+
+{footer_script}
+{literal}$(document).ready(function() {
+	$(".elementEdit img")
+		.fadeTo("slow", 0.6) // Opacity on page load
+		.hover(function(){
+			$(this).fadeTo("slow", 1.0); // Opacity on hover
+		},function(){
+   		$(this).fadeTo("slow", 0.6); // Opacity on mouseout
+		});
+});{/literal}
+{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/cat_list.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/cat_list.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/cat_list.tpl	(revision 25596)
@@ -0,0 +1,144 @@
+{footer_script require='jquery.ui.sortable'}{literal}
+jQuery(document).ready(function(){
+  jQuery(".drag_button").show();
+  jQuery(".categoryLi").css("cursor","move");
+  jQuery(".categoryUl").sortable({
+    axis: "y",
+    opacity: 0.8,
+    update : function() {
+      jQuery("#manualOrder").show();
+      jQuery("#notManualOrder").hide();
+      jQuery("#formAutoOrder").hide();
+      jQuery("#formCreateAlbum").hide();
+    }
+  });
+
+  jQuery("#categoryOrdering").submit(function(){
+    ar = jQuery('.categoryUl').sortable('toArray');
+    for(i=0;i<ar.length;i++) {
+      cat = ar[i].split('cat_');
+      document.getElementsByName('catOrd[' + cat[1] + ']')[0].value = i;
+    }
+  });
+
+  jQuery("input[name=order_type]").click(function () {
+    jQuery("#automatic_order_params").hide();
+    if (jQuery("input[name=order_type]:checked").val() == "automatic") {
+      jQuery("#automatic_order_params").show();
+    }
+  });
+
+  jQuery("#addAlbumOpen").click(function(){
+    jQuery("#formCreateAlbum").toggle();
+    jQuery("input[name=virtual_name]").focus();
+    jQuery("#formAutoOrder").hide();
+  });
+
+  jQuery("#addAlbumClose").click(function(){
+    jQuery("#formCreateAlbum").hide();
+  });
+
+
+  jQuery("#autoOrderOpen").click(function(){
+    jQuery("#formAutoOrder").toggle();
+    jQuery("#formCreateAlbum").hide();
+  });
+
+  jQuery("#autoOrderClose").click(function(){
+    jQuery("#formAutoOrder").hide();
+  });
+
+  jQuery("#cancelManualOrder").click(function(){
+    jQuery(".categoryUl").sortable("cancel");
+    jQuery("#manualOrder").hide();
+    jQuery("#notManualOrder").show();
+  });
+});
+{/literal}{/footer_script}
+
+<h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Album list management'|@translate}</h2>
+<p class="showCreateAlbum" id="notManualOrder">
+  <a href="#" id="addAlbumOpen">{'create a new album'|@translate}</a>
+  {if count($categories)}| <a href="#" id="autoOrderOpen">{'apply automatic sort order'|@translate}</a>{/if}
+  {if ($PARENT_EDIT)}| <a href="{$PARENT_EDIT}"></span>{'edit'|@translate}</a>{/if}
+</p>
+<form id="formCreateAlbum" action="{$F_ACTION}" method="post" style="display:none;">
+  <fieldset>
+      <legend>{'create a new album'|@translate}</legend>
+      <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+      
+      <p>
+        <strong>{'Album name'|@translate}</strong><br>
+        <input type="text" name="virtual_name" maxlength="255">
+      </p>
+      
+      <p class="actionButtons">
+        <input class="submit" name="submitAdd" type="submit" value="{'Create'|@translate}">
+        <a href="#" id="addAlbumClose">{'Cancel'|@translate}</a>
+      </p>
+  </fieldset>
+</form>
+{if count($categories)}
+<form id="formAutoOrder" action="{$F_ACTION}" method="post" style="display:none;">
+  <fieldset>
+    <legend>{'Automatic sort order'|@translate}</legend>
+    <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+    
+    <p><strong>{'Sort order'|@translate}</strong>
+      <br><label><input type="radio" value="asc" name="ascdesc" checked="checked">{'ascending'|@translate}</label>
+      <br><label><input type="radio" value="desc" name="ascdesc">{'descending'|@translate}</label>
+    </p>
+  
+    <p>
+      <label><input type="checkbox" name="recursive"> <strong>{'Apply to sub-albums'|@translate}</strong></label>
+    </p>
+  
+    <p class="actionButtons">
+      <input class="submit" name="submitAutoOrder" type="submit" value="{'Save order'|@translate}">
+      <a href="#" id="autoOrderClose">{'Cancel'|@translate}</a>
+    </p>
+  </fieldset>
+</form>
+{/if}
+
+<form id="categoryOrdering" action="{$F_ACTION}" method="post">
+  <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+  <p id="manualOrder" style="display:none">
+    <input class="submit" name="submitManualOrder" type="submit" value="{'Save manual order'|@translate}">
+    {'... or '|@translate} <a href="#" id="cancelManualOrder">{'cancel manual order'|@translate}</a>
+  </p>
+  
+{if count($categories)}
+  <ul class="categoryUl">
+    {foreach from=$categories item=category}
+    <li class="categoryLi{if $category.IS_VIRTUAL} virtual_cat{/if}" id="cat_{$category.ID}">
+      <!-- category {$category.ID} -->
+      <p class="albumTitle">
+        <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="drag_button" style="display:none;" alt="{'Drag to re-order'|@translate}" title="{'Drag to re-order'|@translate}">
+        <strong><a href="{$category.U_CHILDREN}" title="{'manage sub-albums'|@translate}">{$category.NAME}</a></strong>
+      </p>
+
+      <input type="hidden" name="catOrd[{$category.ID}]" value="{$category.RANK}">
+
+      <p class="albumActions">
+        <a href="{$category.U_EDIT}"><span class="icon-pencil"></span>{'Edit'|@translate}</a>
+        {if isset($category.U_MANAGE_ELEMENTS) }
+        | <a href="{$category.U_MANAGE_ELEMENTS}"><span class="icon-picture"></span>{'manage album photos'|@translate}</a>
+        {/if}
+        | <a href="{$category.U_CHILDREN}"><span class="icon-sitemap"></span>{'manage sub-albums'|@translate}</a>
+        {if isset($category.U_SYNC) }
+        | <a href="{$category.U_SYNC}"><span class="icon-exchange"></span>{'Synchronize'|@translate}</a>
+        {/if}
+        {if isset($category.U_DELETE) }
+        | <a href="{$category.U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');"><span class="icon-trash"></span>{'delete album'|@translate}</a>
+      {/if}
+      {if cat_admin_access($category.ID)}
+        | <a href="{$category.U_JUMPTO}">{'jump to album'|@translate} →</a>
+      {/if}
+      </p>
+
+    </li>
+    {/foreach}
+  </ul>
+{/if}
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/cat_modify.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/cat_modify.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/cat_modify.tpl	(revision 25596)
@@ -0,0 +1,104 @@
+<div class="titrePage">
+  <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Edit album'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="POST" id="catModify">
+
+<fieldset>
+  <legend>{'Informations'|@translate}</legend>
+
+  <table style="width:100%">
+    <tr>
+      <td id="albumThumbnail">
+{if isset($representant) }
+  {if isset($representant.picture) }
+        <a href="{$representant.picture.URL}"><img src="{$representant.picture.SRC}" alt=""></a>
+  {else}
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/category_representant_random.png" alt="{'Random photo'|@translate}">
+  {/if}
+
+  {if $representant.ALLOW_SET_RANDOM }
+        <p style="text-align:center;"><input class="submit" type="submit" name="set_random_representant" value="{'Refresh'|@translate}" title="{'Find a new representant by random'|@translate}"></p>
+  {/if}
+
+  {if isset($representant.ALLOW_DELETE) }
+        <p><input class="submit" type="submit" name="delete_representant" value="{'Delete Representant'|@translate}"></p>
+  {/if}
+{/if}
+      </td>
+
+      <td id="albumLinks">
+<p>{$INTRO}</p>
+<ul style="padding-left:15px;">
+{if cat_admin_access($CAT_ID)}
+  <li><a href="{$U_JUMPTO}">{'jump to album'|@translate} →</a></li>
+{/if}
+
+{if isset($U_MANAGE_ELEMENTS) }
+  <li><a href="{$U_MANAGE_ELEMENTS}">{'manage album photos'|@translate}</a></li>
+{/if}
+
+  <li style="text-transform:lowercase;"><a href="{$U_ADD_PHOTOS_ALBUM}">{'Add Photos'|translate}</a></li>
+
+  <li><a href="{$U_CHILDREN}">{'manage sub-albums'|@translate}</a></li>
+
+{if isset($U_SYNC) }
+  <li><a href="{$U_SYNC}">{'Synchronize'|@translate}</a> ({'Directory'|@translate} = {$CAT_FULL_DIR})</li>
+{/if}
+
+{if isset($U_DELETE) }
+  <li><a href="{$U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">{'delete album'|@translate}</a></li>
+{/if}
+
+</ul>
+      </td>
+    </tr>
+  </table>
+
+</fieldset>
+
+<fieldset>
+  <legend>{'Properties'|@translate}</legend>
+  <p>
+    <strong>{'Name'|@translate}</strong>
+    <br>
+    <input type="text" class="large" name="name" value="{$CAT_NAME}" maxlength="255">
+  </p>
+
+  <p>
+    <strong>{'Description'|@translate}</strong>
+    <br>
+    <textarea cols="50" rows="5" name="comment" id="comment" class="description">{$CAT_COMMENT}</textarea>
+  </p>
+
+{if isset($move_cat_options) }
+  <p>
+    <strong>{'Parent album'|@translate}</strong>
+    <br>
+    <select class="categoryDropDown" name="parent">
+      <option value="0">------------</option>
+      {html_options options=$move_cat_options selected=$move_cat_options_selected }
+    </select>
+  </p>
+{/if}
+
+  <p>
+    <strong>{'Lock'|@translate}</strong>
+    <br>
+		{html_radios name='visible' values=['true','false'] output=['No'|translate,'Yes'|translate] selected=$CAT_VISIBLE}
+  </p>
+
+  {if isset($CAT_COMMENTABLE)}
+  <p>
+    <strong>{'Comments'|@translate}</strong>
+    <br>
+		{html_radios name='commentable' values=['false','true'] output=['No'|translate,'Yes'|translate] selected=$CAT_COMMENTABLE}
+  </p>
+  {/if}
+
+  <p style="margin:0">
+    <input class="submit" type="submit" value="{'Save Settings'|@translate}" name="submit">
+  </p>
+</fieldset>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/cat_move.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/cat_move.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/cat_move.tpl	(revision 25596)
@@ -0,0 +1,32 @@
+<div class="titrePage">
+  <h2>{'Move albums'|@translate}</h2>
+</div>
+
+<form method="post" action="{$F_ACTION}" class="filter" id="catMove">
+  <fieldset>
+    <legend>{'Move albums'|@translate}</legend>
+
+    <label>
+      {'Virtual albums to move'|@translate}
+
+      <select class="categoryList" name="selection[]" multiple="multiple">
+        {html_options options=$category_to_move_options}
+      </select>
+    </label>
+
+    <label>
+      {'New parent album'|@translate}
+
+      <select class="categoryDropDown" name="parent">
+        <option value="0">------------</option>
+        {html_options options=$category_parent_options}
+      </select>
+    </label>
+
+  </fieldset>
+
+  <p style="text-align:left;">
+    <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}">
+  </p>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/cat_options.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/cat_options.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/cat_options.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+<div class="titrePage">
+  <h2>{'Properties'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form method="post" action="{$F_ACTION}" id="cat_options">
+  <fieldset>
+    <legend>{$L_SECTION}</legend>
+    {$DOUBLE_SELECT}
+  </fieldset>
+</form>
+
Index: /tags/2.6.0RC1/admin/themes/default/template/cat_perm.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/cat_perm.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/cat_perm.tpl	(revision 25596)
@@ -0,0 +1,157 @@
+{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
+{combine_css path="themes/default/js/plugins/chosen.css"}
+
+{footer_script}{literal}
+jQuery(document).ready(function() {
+  jQuery(".chzn-select").chosen();
+
+  function checkStatusOptions() {
+    if (jQuery("input[name=status]:checked").val() == "private") {
+      jQuery("#privateOptions, #applytoSubAction").show();
+    }
+    else {
+      jQuery("#privateOptions, #applytoSubAction").hide();
+    }
+  }
+
+  checkStatusOptions();
+  jQuery("#selectStatus").change(function() {
+    checkStatusOptions();
+  });
+
+  jQuery("#indirectPermissionsDetailsShow").click(function(){
+    jQuery("#indirectPermissionsDetailsShow").hide();
+    jQuery("#indirectPermissionsDetailsHide").show();
+    jQuery("#indirectPermissionsDetails").show();
+    return false;
+  });
+
+  jQuery("#indirectPermissionsDetailsHide").click(function(){
+    jQuery("#indirectPermissionsDetailsShow").show();
+    jQuery("#indirectPermissionsDetailsHide").hide();
+    jQuery("#indirectPermissionsDetails").hide();
+    return false;
+  });
+});
+{/literal}{/footer_script}
+
+<div class="titrePage">
+  <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Edit album'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="post" id="categoryPermissions">
+
+<fieldset>
+  <legend>{'Access type'|@translate}</legend>
+
+  <p id="selectStatus">
+    <label><input type="radio" name="status" value="public" {if not $private}checked="checked"{/if}> <strong>{'public'|@translate}</strong> : <em>{'any visitor can see this album'|@translate}</em></label>
+    <br>
+    <label><input type="radio" name="status" value="private" {if $private}checked="checked"{/if}> <strong>{'private'|@translate}</strong> : <em>{'visitors need to login and have the appropriate permissions to see this album'|@translate}</em></label>
+  </p>
+</fieldset>
+
+<fieldset id="privateOptions">
+  <legend>{'Groups and users'|@translate}</legend>
+
+  <p>
+{if count($groups) > 0}
+    <strong>{'Permission granted for groups'|@translate}</strong>
+    <br>
+    <select data-placeholder="{'Select groups...'|@translate}" class="chzn-select" multiple style="width:700px;" name="groups[]">
+      {html_options options=$groups selected=$groups_selected}
+    </select>
+{else}
+    {'There is no group in this gallery.'|@translate} <a href="admin.php?page=group_list" class="externalLink">{'Group management'|@translate}</a>
+{/if}
+  </p>
+
+  <p>
+    <strong>{'Permission granted for users'|@translate}</strong>
+    <br>
+    <select data-placeholder="{'Select users...'|@translate}" class="chzn-select" multiple style="width:700px;" name="users[]">
+      {html_options options=$users selected=$users_selected}
+    </select>
+  </p>
+
+{if isset($nb_users_granted_indirect)}
+  <p>
+    {'%u users have automatic permission because they belong to a granted group.'|@translate:$nb_users_granted_indirect}
+    <a href="#" id="indirectPermissionsDetailsHide" style="display:none">{'hide details'|@translate}</a>
+    <a href="#" id="indirectPermissionsDetailsShow">{'show details'|@translate}</a>
+
+    <ul id="indirectPermissionsDetails" style="display:none">
+  {foreach from=$user_granted_indirect_groups item=group_details}
+      <li><strong>{$group_details.group_name}</strong> : {$group_details.group_users}</li>
+  {/foreach}
+    </ul>
+  </p>
+{/if}
+
+{*
+  <h4>{'Groups'|@translate}</h4>
+
+  <fieldset>
+    <legend>{'Permission granted'|@translate}</legend>
+    <ul>
+      {foreach from=$group_granted_ids item=id}
+      <li><label><input type="checkbox" name="deny_groups[]" value="{$id}"> {$all_groups[$id]}</label></li>
+      {/foreach}
+    </ul>
+    <input class="submit" type="submit" name="deny_groups_submit" value="{'Deny selected groups'|@translate}">
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Permission denied'|@translate}</legend>
+    <ul>
+      {foreach from=$group_denied_ids item=id}
+      <li><label><input type="checkbox" name="grant_groups[]" value="{$id}"> {$all_groups[$id]}</label></li>
+      {/foreach}
+    </ul>
+    <input class="submit" type="submit" name="grant_groups_submit" value="{'Grant selected groups'|@translate}">
+    <label><input type="checkbox" name="apply_on_sub">{'Apply to sub-albums'|@translate}</label>
+  </fieldset>
+
+  <h4>{'Users'|@translate}</h4>
+
+  <fieldset>
+    <legend>{'Permission granted'|@translate}</legend>
+    <ul>
+      {foreach from=$user_granted_direct_ids item=id}
+      <li><label><input type="checkbox" name="deny_users[]" value="{$id}"> {$all_users[$id]}</label></li>
+      {/foreach}
+    </ul>
+    <input class="submit" type="submit" name="deny_users_submit" value="{'Deny selected users'|@translate}">
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Permission granted thanks to a group'|@translate}</legend>
+    {if isset($user_granted_indirects) }
+    <ul>
+      {foreach from=$user_granted_indirects item=user_group}
+      <li>{$user_group.USER} ({$user_group.GROUP})</li>
+      {/foreach}
+    </ul>
+    {/if}
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Permission denied'|@translate}</legend>
+    <ul>
+      {foreach from=$user_denied_ids item=id}
+      <li><label><input type="checkbox" name="grant_users[]" value="{$id}"> {$all_users[$id]}</label></li>
+      {/foreach}
+    </ul>
+    <input class="submit" type="submit" name="grant_users_submit" value="{'Grant selected users'|@translate}">
+    <label><input type="checkbox" name="apply_on_sub">{'Apply to sub-albums'|@translate}</label>
+  </fieldset>
+*}
+</fieldset>
+
+  <p style="margin:12px;text-align:left;">
+    <input class="submit" type="submit" value="{'Save Settings'|@translate}" name="submit">
+    <label id="applytoSubAction" style="display:none;"><input type="checkbox" name="apply_on_sub" {if $INHERIT}checked="checked"{/if}>{'Apply to sub-albums'|@translate}</label>
+  </p>
+
+<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/check_integrity.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/check_integrity.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/check_integrity.tpl	(revision 25596)
@@ -0,0 +1,109 @@
+<dl>
+  <dt>{'Check integrity'|@translate}</dt>
+  <dd>
+    <ul>
+      <form method="post" name="c13y" id="c13y" action="">
+      <fieldset>
+        <table class="table2">
+          <tr class="throw">
+            <th></th>
+            <th>{'Anomaly'|@translate}</th>
+            <th>{'Correction'|@translate}</th>
+          </tr>
+          {if isset($c13y_list)}
+            {foreach from=$c13y_list item=c13y name=c13y_loop}
+              <tr class="{if $smarty.foreach.c13y_loop.index is odd}row1{else}row2{/if}">
+                <td>
+                  {if $c13y.can_select}
+                    <input type="checkbox" name="c13y_selection[]" value="{$c13y.id}" id="c13y_selection-{$c13y.id}"><label for="c13y_selection-{$c13y.id}"></label>
+                  {/if}
+                </td>
+                <td><label for="c13y_selection-{$c13y.id}">{$c13y.anomaly}</label></td>
+                <td>
+                  <label for="c13y_selection-{$c13y.id}">
+                    {if $c13y.show_ignore_msg}
+                      {'The anomaly will be ignored until next application version'|@translate}
+                      <br>
+                      {'Correction the anomaly will cancel the fact that it\'s ignored'|@translate}
+                    {/if}
+                    {if $c13y.show_correction_fct}
+                      {'Automatic correction'|@translate}
+                    {/if}
+                    {if $c13y.show_correction_bad_fct}
+                      {'Impossible automatic correction'|@translate}
+                    {/if}
+                    {if $c13y.show_correction_success_fct}
+                      {'Correction applied with success'|@translate}
+                    {/if}
+                    {if !empty($c13y.correction_error_fct)}
+                      {'Correction applied with error'|@translate}
+                      <br>
+                      {$c13y.c13y.correction_error_fct}
+                    {/if}
+                    {if !empty($c13y.correction_msg)}
+                      {if $c13y.show_correction_success_fct or !empty($c13y.correction_error_fct) or $c13y.show_correction_fct or $c13y.show_correction_bad_fct }
+                        <br>
+                      {/if}
+                      {$c13y.correction_msg|@nl2br}
+                    {/if}
+                  </label>
+                </td>
+              </tr>
+            {/foreach}
+          {/if}
+        </table>
+
+        <p>
+			{literal}
+			<script type="text/javascript">
+			jQuery(document).ready(function(){
+
+				jQuery("#checkAllLink").click(function () {
+					jQuery("#c13y input[type=checkbox]").attr('checked', true);
+					return false;
+				});
+
+				jQuery("#uncheckAllLink").click(function () {
+					jQuery("#c13y input[type=checkbox]").attr('checked', false);
+					return false;
+				});
+
+			});
+			function DeselectAll( formulaire )
+			{
+				var elts = formulaire.elements;
+				for(var i=0; i <elts.length; i++)
+				{
+					if (elts[i].type=='checkbox')
+						elts[i].checked = false;
+				}
+			}
+			</script>
+			{/literal}
+          {if $c13y_show_submit_ignore}
+              <a href="#" id="checkAllLink">{'Check all'|@translate}</a>
+            / <a href="#" id="uncheckAllLink">{'Uncheck all'|@translate}</a>
+          {/if}
+          {if isset($c13y_do_check)}
+            / <a href="#" onclick="DeselectAll(document.getElementById('c13y'));
+            {foreach from=$c13y_do_check item=ID}
+              document.getElementById('c13y_selection-{$ID}').checked = true;
+            {/foreach}
+            return false;">{'Check automatic corrections'|@translate}</a>
+          {/if}
+        </p>
+
+        <p>
+          {if $c13y_show_submit_automatic_correction}
+            <input class="submit" type="submit" value="{'Apply selected corrections'|@translate}" name="Apply selected corrections">
+          {/if}
+          {if $c13y_show_submit_ignore}
+            <input class="submit" type="submit" value="{'Ignore selected anomalies'|@translate}" name="Ignore selected anomalies">
+          {/if}
+          <input class="submit" type="submit" value="{'Refresh'|@translate}" name="Refresh">
+          </p>
+
+      </fieldset>
+      </form>
+    </ul>
+  </dd>
Index: /tags/2.6.0RC1/admin/themes/default/template/comments.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/comments.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/comments.tpl	(revision 25596)
@@ -0,0 +1,86 @@
+{footer_script}{literal}
+jQuery(document).ready(function(){
+  function highlighComments() {
+    jQuery(".checkComment").each(function() {
+      var parent = jQuery(this).parent('tr');
+      if (jQuery(this).children("input[type=checkbox]").is(':checked')) {
+        jQuery(parent).addClass('selectedComment'); 
+      }
+      else {
+        jQuery(parent).removeClass('selectedComment'); 
+      }
+    });
+  }
+
+  jQuery(".checkComment").click(function(event) {
+    var checkbox = jQuery(this).children("input[type=checkbox]");
+    if (event.target.type !== 'checkbox') {
+      jQuery(checkbox).prop('checked', !jQuery(checkbox).prop('checked'));
+    }
+    highlighComments();
+  });
+
+  jQuery("#commentSelectAll").click(function () {
+    jQuery(".checkComment input[type=checkbox]").prop('checked', true);
+    highlighComments();
+    return false;
+  });
+
+  jQuery("#commentSelectNone").click(function () {
+    jQuery(".checkComment input[type=checkbox]").prop('checked', false);
+    highlighComments();
+    return false;
+  });
+
+  jQuery("#commentSelectInvert").click(function () {
+    jQuery(".checkComment input[type=checkbox]").each(function() {
+      jQuery(this).prop('checked', !$(this).prop('checked'));
+    });
+    highlighComments();
+    return false;
+  });
+
+});
+{/literal}{/footer_script}
+
+<h2>{'User comments'|@translate} {$TABSHEET_TITLE}</h2>
+
+<p style="text-align:left;margin-left:1em;">
+  <a href="{$F_ACTION}&amp;filter=all" class="{if $filter == 'all'}commentFilterSelected{/if}">{'All'|@translate}</a> ({$nb_total})
+  | <a href="{$F_ACTION}&amp;filter=pending" class="{if $filter == 'pending'}commentFilterSelected{/if}">{'Waiting'|@translate}</a> ({$nb_pending})
+</p>
+
+{if !empty($comments) }
+<form method="post" action="{$F_ACTION}" id="pendingComments">
+  
+<table>
+  {foreach from=$comments item=comment name=comment}
+  <tr valign="top" class="{if $smarty.foreach.comment.index is odd}row2{else}row1{/if}">
+    <td style="width:50px;" class="checkComment">
+      <input type="checkbox" name="comments[]" value="{$comment.ID}">
+    </td>
+    <td>
+  <div class="comment">
+    <a class="illustration" href="{$comment.U_PICTURE}"><img src="{$comment.TN_SRC}"></a>
+    <p class="commentHeader">{if $comment.IS_PENDING}<span class="pendingFlag">{'Waiting'|@translate}</span> - {/if}<strong>{$comment.AUTHOR}</strong> - <em>{$comment.DATE}</em></p>
+    <blockquote>{$comment.CONTENT}</blockquote>
+  </div>
+    </td>
+  </tr>
+  {/foreach}
+</table>
+
+  <p class="checkActions">
+    {'Select:'|@translate}
+    <a href="#" id="commentSelectAll">{'All'|@translate}</a>,
+    <a href="#" id="commentSelectNone">{'None'|@translate}</a>,
+    <a href="#" id="commentSelectInvert">{'Invert'|@translate}</a>
+  </p>
+
+  <p class="bottomButtons">
+    <input type="submit" name="validate" value="{'Validate'|@translate}">
+    <input type="submit" name="reject" value="{'Reject'|@translate}">
+  </p>
+
+</form>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/configuration.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/configuration.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/configuration.tpl	(revision 25596)
@@ -0,0 +1,852 @@
+{footer_script}
+(function(){
+  var targets = {
+    'input[name="rate"]' : '#rate_anonymous',
+    'input[name="allow_user_registration"]' : '#email_admin_on_new_user',
+    'input[name="comments_validation"]' : '#email_admin_on_comment_validation',
+    'input[name="user_can_edit_comment"]' : '#email_admin_on_comment_edition',
+    'input[name="user_can_delete_comment"]' : '#email_admin_on_comment_deletion',
+  };
+
+  for (selector in targets) {
+    var target = targets[selector];
+
+    jQuery(target).toggle(jQuery(selector).is(':checked'));
+
+    (function(target){
+      jQuery(selector).on('change', function() {
+        jQuery(target).toggle($(this).is(':checked'));
+      });
+    })(target);
+  };
+}());
+{/footer_script}
+
+<h2>{'Piwigo configuration'|@translate} {$TABSHEET_TITLE}</h2>
+
+{if !isset($default)}
+<form method="post" action="{$F_ACTION}" class="properties"{if isset($watermark)} enctype="multipart/form-data"{/if}>
+{/if}
+
+<div id="configContent">
+{if isset($main)}
+<fieldset class="mainConf">
+  <legend>{'Basic settings'|translate}</legend>
+  <ul>
+    <li>
+      <label for="gallery_title">{'Gallery title'|@translate}</label>
+      <br>
+      <input type="text" maxlength="255" size="50" name="gallery_title" id="gallery_title" value="{$main.CONF_GALLERY_TITLE}">
+    </li>
+
+    <li>
+      <label for="page_banner">{'Page banner'|@translate}</label>
+      <br>
+      <textarea rows="5" cols="50" class="description" name="page_banner" id="page_banner">{$main.CONF_PAGE_BANNER}</textarea>
+    </li>
+    
+   <li id="order_filters">
+      <label>{'Default photos order'|@translate}</label>
+
+    {foreach from=$main.order_by item=order}
+      <span class="filter {if isset($ORDER_BY_IS_CUSTOM)}transparent{/if}">
+        <select name="order_by[]" {if isset($ORDER_BY_IS_CUSTOM)}disabled{/if}>
+          {html_options options=$main.order_by_options selected=$order}
+        </select>
+        <a class="removeFilter">{'delete'|@translate}</a>
+      </span>
+    {/foreach}
+
+    {if !isset($ORDER_BY_IS_CUSTOM)}
+      <a class="addFilter">{'Add a criteria'|@translate}</a>
+    {else}
+      <span class="order_by_is_custom">{'You can\'t define a default photo order because you have a custom setting in your local configuration.'|@translate}</span>
+    {/if}
+    </li>
+  </ul>
+  
+{if !isset($ORDER_BY_IS_CUSTOM)}
+{footer_script require='jquery'}
+(function(){
+var max_fields = Math.ceil({$main.order_by_options|@count}/2);
+
+function updateFilters() {
+  var $selects = jQuery('#order_filters select');
+
+  jQuery('#order_filters .addFilter').toggle($selects.length <= max_fields);
+  jQuery('#order_filters .removeFilter').css('display', '').filter(':first').css('display', 'none');
+  
+  $selects.find('option').removeAttr('disabled');
+  $selects.each(function() {
+    $selects.not(this).find('option[value="'+ jQuery(this).val() +'"]').attr('disabled', 'disabled');
+  });
+}
+
+jQuery('#order_filters').on('click', '.removeFilter', function() {
+  jQuery(this).parent('span.filter').remove();
+  updateFilters();
+});
+
+jQuery('#order_filters').on('change', 'select', updateFilters);
+
+jQuery('#order_filters .addFilter').click(function() {
+  jQuery(this).prev('span.filter').clone().insertBefore(jQuery(this));
+  jQuery(this).prev('span.filter').children('select').val('');
+  updateFilters();
+});
+
+updateFilters();
+}());
+{/footer_script}
+{/if}
+</fieldset>
+
+<fieldset class="mainConf">
+  <legend>{'Permissions'|translate}</legend>
+  <ul>
+    <li>
+      <label>
+        <input type="checkbox" name="rate" {if ($main.rate)}checked="checked"{/if}>
+        {'Allow rating'|@translate}
+      </label>
+
+      <label id="rate_anonymous" class="no-bold">
+        <input type="checkbox" name="rate_anonymous" {if ($main.rate_anonymous)}checked="checked"{/if}>
+        {'Rating by guests'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="allow_user_registration" {if ($main.allow_user_registration)}checked="checked"{/if}>
+        {'Allow user registration'|@translate}
+      </label>
+
+      <label id="email_admin_on_new_user" class="no-bold">
+        <input type="checkbox" name="email_admin_on_new_user" {if ($main.email_admin_on_new_user)}checked="checked"{/if}>
+        {'Email admins when a new user registers'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="allow_user_customization" {if ($main.allow_user_customization)}checked="checked"{/if}>
+        {'Allow user customization'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="obligatory_user_mail_address" {if ($main.obligatory_user_mail_address)}checked="checked"{/if}>
+        {'Mail address is obligatory for all users'|@translate}
+      </label>
+    </li>
+  </ul>
+
+{footer_script require='jquery'}
+jQuery("#activate_comments").change(function(){
+  if ($(this).is(':checked')) {
+    jQuery("#comments_param_warp").show();
+  } else {
+    jQuery("#comments_param_warp").hide();
+  }
+});
+{/footer_script}
+</fieldset>
+
+<fieldset class="mainConf">
+  <legend>{'Miscellaneous'|translate}</legend>
+  <ul>
+    <li>
+      <label>{'Week starts on'|@translate}
+      {html_options name="week_starts_on" options=$main.week_starts_on_options selected=$main.week_starts_on_options_selected}</label>
+    </li>
+
+    <li>
+      <strong>{'Save visits in history for'|@translate}</strong>
+
+      <label class="no-bold">
+        <input type="checkbox" name="history_guest" {if ($main.history_guest)}checked="checked"{/if}>
+        {'simple visitors'|@translate}
+      </label>
+
+      <label class="no-bold">
+        <input type="checkbox" name="log" {if ($main.log)}checked="checked"{/if}>
+        {'registered users'|@translate}
+      </label>
+
+      <label class="no-bold">
+        <input type="checkbox" name="history_admin" {if ($main.history_admin)}checked="checked"{/if}>
+        {'administrators'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>{'Mail theme'|@translate}</label>
+      
+      <div class="themeBoxes">
+      {foreach from=$main.mail_theme_options item=name key=theme}
+        <div class="themeBox {if $main.mail_theme==$theme}themeDefault{/if}">
+          <label>
+            <div class="themeName">
+              <input type="radio" name="mail_theme" value="{$theme}" {if $main.mail_theme==$theme}checked{/if}>
+              {$name}
+            </div>
+            <div class="themeShot">
+              <img src="{$ROOT_URL}themes/default/template/mail/screenshot-{$theme}.png" width="150"/>
+            </div>
+          </label>
+          <a href="{$ROOT_URL}themes/default/template/mail/screenshot-{$theme}.png">{'Preview'|translate}</a>
+        </div>
+      {/foreach}
+      </div>
+    </li>
+   
+{include file='include/colorbox.inc.tpl'}
+{footer_script require='jquery'}
+jQuery(".themeBoxes a").colorbox();
+
+jQuery("input[name='mail_theme']").change(function() {
+  jQuery("input[name='mail_theme']").parents(".themeBox").removeClass("themeDefault");
+  jQuery(this).parents(".themeBox").addClass("themeDefault");
+});
+{/footer_script}
+  </ul>
+</fieldset>
+{/if}
+
+{if isset($comments)}
+<fieldset id="commentsConf" class="no-border">
+  <legend></legend>
+  <ul>
+    <li>
+      <label>
+        <input type="checkbox" name="activate_comments" id="activate_comments"{if ($comments.activate_comments)}checked="checked"{/if}>
+        {'Activate comments'|@translate}
+      </label>
+    </li>
+  </ul>
+
+  <ul id="comments_param_warp"{if not ($comments.activate_comments)} style="display:none;"{/if}>
+    <li>
+      <label>
+        <input type="checkbox" name="comments_forall" {if ($comments.comments_forall)}checked="checked"{/if}>
+        {'Comments for all'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        {'Number of comments per page'|@translate}
+        <input type="text" size="3" maxlength="4" name="nb_comment_page" id="nb_comment_page" value="{$comments.NB_COMMENTS_PAGE}">
+      </label>
+    </li>
+
+    <li>
+      <label>
+        {'Default comments order'|@translate}
+        <select name="comments_order">
+          {html_options options=$comments.comments_order_options selected=$comments.comments_order}
+        </select>
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="comments_validation" {if ($comments.comments_validation)}checked="checked"{/if}>
+        {'Validation'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="comments_author_mandatory" {if ($comments.comments_author_mandatory)}checked="checked"{/if}>
+        {'Username is mandatory'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="comments_email_mandatory" {if ($comments.comments_email_mandatory)}checked="checked"{/if}>
+        {'Email address is mandatory'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="user_can_edit_comment" {if ($comments.user_can_edit_comment)}checked="checked"{/if}>
+        {'Allow users to edit their own comments'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="user_can_delete_comment" {if ($comments.user_can_delete_comment)}checked="checked"{/if}>
+        {'Allow users to delete their own comments'|@translate}
+      </label>
+    </li>
+
+    <li id="notifyAdmin">
+      <strong>{'Notify administrators when a comment is'|@translate}</strong>
+
+      <label id="email_admin_on_comment_validation" class="no-bold">
+        <input type="checkbox" name="email_admin_on_comment_validation" {if ($comments.email_admin_on_comment_validation)}checked="checked"{/if}> {'pending validation'|@translate}
+      </label>
+
+      <label class="no-bold">
+        <input type="checkbox" name="email_admin_on_comment" {if ($comments.email_admin_on_comment)}checked="checked"{/if}> {'added'|@translate}
+      </label>
+
+      <label id="email_admin_on_comment_edition" class="no-bold">
+        <input type="checkbox" name="email_admin_on_comment_edition" {if ($comments.email_admin_on_comment_edition)}checked="checked"{/if}> {'modified'|@translate}
+      </label>
+
+      <label id="email_admin_on_comment_deletion" class="no-bold">
+        <input type="checkbox" name="email_admin_on_comment_deletion" {if ($comments.email_admin_on_comment_deletion)}checked="checked"{/if}> {'deleted'|@translate}
+      </label>
+    </li>
+  </ul>
+</fieldset>
+{/if}
+
+{if isset($sizes)}
+
+{footer_script}
+(function(){
+  var labelMaxWidth = "{'Maximum width'|@translate}",
+      labelWidth = "{'Width'|@translate}",
+      labelMaxHeight = "{'Maximum height'|@translate}",
+      labelHeight = "{'Height'|@translate}";
+
+  function toggleResizeFields(size) {
+    var checkbox = jQuery("#original_resize");
+    var needToggle = jQuery("#sizeEdit-original");
+
+    if (jQuery(checkbox).is(':checked')) {
+      needToggle.show();
+    }
+    else {
+      needToggle.hide();
+    }
+  }
+
+  toggleResizeFields("original");
+  jQuery("#original_resize").click(function () {
+    toggleResizeFields("original");
+  });
+
+  jQuery("a[id^='sizeEditOpen-']").click(function(){
+    var sizeName = jQuery(this).attr("id").split("-")[1];
+    jQuery("#sizeEdit-"+sizeName).toggle();
+    jQuery(this).hide();
+		return false;
+  });
+
+  jQuery(".cropToggle").click(function() {
+    var labelBoxWidth = jQuery(this).parents('table.sizeEditForm').find('td.sizeEditWidth');
+    var labelBoxHeight = jQuery(this).parents('table.sizeEditForm').find('td.sizeEditHeight');
+
+    if (jQuery(this).is(':checked')) {
+      jQuery(labelBoxWidth).html(labelWidth);
+      jQuery(labelBoxHeight).html(labelHeight);
+    }
+    else {
+      jQuery(labelBoxWidth).html(labelMaxWidth);
+      jQuery(labelBoxHeight).html(labelMaxHeight);
+    }
+  });
+
+  jQuery("#showDetails").click(function() {
+    jQuery(".sizeDetails").show();
+    jQuery(this).css("visibility", "hidden");
+		return false;
+  });
+}());
+{/footer_script}
+
+{html_style}{literal}
+.sizeEnable {width:50px;}
+.sizeEditForm {margin:0 0 10px 20px;}
+.sizeEdit {display:none;}
+#sizesConf table {margin:0;}
+.showDetails {padding:0;}
+.sizeDetails {display:none;margin-left:10px;}
+.sizeEditOpen {margin-left:10px;}
+{/literal}{/html_style}
+
+<fieldset id="sizesConf">
+  <legend>{'Original Size'|@translate}</legend>
+{if $is_gd}
+  <div>
+    {'Resize after upload disabled due to the use of GD as graphic library'|@translate}
+    <input type="checkbox" name="original_resize" id="original_resize" disabled="disabled" style="visibility: hidden">
+    <input type="hidden" name="original_resize_maxwidth" value="{$sizes.original_resize_maxwidth}">
+    <input type="hidden" name="original_resize_maxheight" value="{$sizes.original_resize_maxheight}">
+    <input type="hidden" name="original_resize_quality" value="{$sizes.original_resize_quality}">
+  </div>
+{else}
+  <div>
+    <label for="original_resize">
+      <input type="checkbox" name="original_resize" id="original_resize" {if ($sizes.original_resize)}checked="checked"{/if}>
+      {'Resize after upload'|@translate}
+    </label>
+  </div>
+
+  <table id="sizeEdit-original">
+    <tr>
+      <th>{'Maximum width'|@translate}</th>
+      <td>
+        <input type="text" name="original_resize_maxwidth" value="{$sizes.original_resize_maxwidth}" size="4" maxlength="4"{if isset($ferrors.original_resize_maxwidth)} class="dError"{/if}> {'pixels'|@translate}
+        {if isset($ferrors.original_resize_maxwidth)}<span class="dErrorDesc" title="{$ferrors.original_resize_maxwidth}">!</span>{/if}
+      </td>
+    </tr>
+    <tr>
+      <th>{'Maximum height'|@translate}</th>
+      <td>
+        <input type="text" name="original_resize_maxheight" value="{$sizes.original_resize_maxheight}" size="4" maxlength="4"{if isset($ferrors.original_resize_maxheight)} class="dError"{/if}> {'pixels'|@translate}
+        {if isset($ferrors.original_resize_maxheight)}<span class="dErrorDesc" title="{$ferrors.original_resize_maxheight}">!</span>{/if}
+      </td>
+    </tr>
+    <tr>
+      <th>{'Image Quality'|@translate}</th>
+      <td>
+        <input type="text" name="original_resize_quality" value="{$sizes.original_resize_quality}" size="3" maxlength="3"{if isset($ferrors.original_resize_quality)} class="dError"{/if}> %
+        {if isset($ferrors.original_resize_quality)}<span class="dErrorDesc" title="{$ferrors.original_resize_quality}">!</span>{/if}
+      </td>
+    </tr>
+  </table>
+{/if}
+</fieldset>
+
+<fieldset id="multiSizesConf">
+  <legend>{'Multiple Size'|@translate}</legend>
+
+  <div class="showDetails">
+    <a href="#" id="showDetails"{if isset($ferrors)} style="display:none"{/if}>{'show details'|@translate}</a>
+  </div>
+
+  <table style="margin:0">
+  {foreach from=$derivatives item=d key=type}
+    <tr>
+      <td>
+        <label>
+          <span class="sizeEnable">
+    {if $d.must_enable}
+            &#x2714;
+    {else}
+            <input type="checkbox" name="d[{$type}][enabled]" {if $d.enabled}checked="checked"{/if}>
+    {/if}
+          </span>
+          {$type|@translate}
+        </label>
+      </td>
+
+      <td>
+        <span class="sizeDetails"{if isset($ferrors)} style="display:inline"{/if}>{$d.w} x {$d.h} {'pixels'|@translate}{if $d.crop}, {'Crop'|@translate|lower}{/if}</span>
+      </td>
+
+      <td>
+        <span class="sizeDetails"{if isset($ferrors) and !isset($ferrors.$type)} style="display:inline"{/if}>
+          <a href="#" id="sizeEditOpen-{$type}" class="sizeEditOpen">{'edit'|@translate}</a>
+        </span>
+      </td>
+    </tr>
+
+    <tr id="sizeEdit-{$type}" class="sizeEdit" {if isset($ferrors.$type)} style="display:block"{/if}>
+      <td colspan="3">
+        <table class="sizeEditForm">
+    {if !$d.must_square}
+          <tr>
+            <td colspan="2">
+              <label>
+                <input type="checkbox" class="cropToggle" name="d[{$type}][crop]" {if $d.crop}checked="checked"{/if}>
+                {'Crop'|@translate}
+              </label>
+            </td>
+          </tr>
+    {/if}
+
+          <tr>
+            <td class="sizeEditWidth">{if $d.must_square or $d.crop}{'Width'|@translate}{else}{'Maximum width'|@translate}{/if}</td>
+            <td>
+              <input type="text" name="d[{$type}][w]" maxlength="4" size="4" value="{$d.w}"{if isset($ferrors.$type.w)} class="dError"{/if}>
+              {'pixels'|@translate}
+              {if isset($ferrors.$type.w)}<span class="dErrorDesc" title="{$ferrors.$type.w}">!</span>{/if}
+            </td>
+          </tr>
+
+    {if !$d.must_square}
+          <tr>
+            <td class="sizeEditHeight">{if $d.crop}{'Height'|@translate}{else}{'Maximum height'|@translate}{/if}</td>
+            <td>
+              <input type="text" name="d[{$type}][h]" maxlength="4" size="4"  value="{$d.h}"{if isset($ferrors.$type.h)} class="dError"{/if}>
+              {'pixels'|@translate}
+              {if isset($ferrors.$type.h)}<span class="dErrorDesc" title="{$ferrors.$type.h}">!</span>{/if}
+            </td>
+          </tr>
+    {/if}
+          <tr>
+          <td>{'Sharpen'|@translate}</td>
+          <td>
+            <input type="text" name="d[{$type}][sharpen]" maxlength="4" size="4"  value="{$d.sharpen}"{if isset($ferrors.$type.sharpen)} class="dError"{/if}>
+            %
+            {if isset($ferrors.$type.sharpen)}<span class="dErrorDesc" title="{$ferrors.$type.sharpen}">!</span>{/if}
+          </td>
+          </tr>
+        </table> {* #sizeEdit *}
+      </td>
+    </tr>
+  {/foreach}
+  </table>
+
+  <p style="margin:10px 0 0 0;{if isset($ferrors)} display:block;{/if}" class="sizeDetails">
+    {'Image Quality'|@translate}
+    <input type="text" name="resize_quality" value="{$resize_quality}" size="3" maxlength="3"{if isset($ferrors.resize_quality)} class="dError"{/if}> %
+    {if isset($ferrors.resize_quality)}<span class="dErrorDesc" title="{$ferrors.resize_quality}">!</span>{/if}
+  </p>
+  <p style="margin:10px 0 0 0;{if isset($ferrors)} display:block;{/if}" class="sizeDetails">
+    <a href="{$F_ACTION}&action=restore_settings" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">{'Reset to default values'|@translate}</a>
+  </p>
+
+{if !empty($custom_derivatives)}
+  <fieldset class="sizeDetails">
+    <legend>{'custom'|@translate}</legend>
+    <table style="margin:0">
+    {foreach from=$custom_derivatives item=time key=custom}
+      <tr><td><label><input type="checkbox" name="delete_custom_derivative_{$custom}"> {'Delete'|@translate} {$custom} ({'Last hit'|@translate}: {$time})</label></td></tr>
+    {/foreach}
+    </table>
+  </fieldset>
+{/if}
+
+</fieldset>
+{/if}
+
+{if isset($watermark)}
+
+{footer_script}
+(function(){
+  function onWatermarkChange() {
+    var val = jQuery("#wSelect").val();
+    if (val.length) {
+      jQuery("#wImg").attr('src', '{$ROOT_URL}'+val).show();
+    }
+    else {
+      jQuery("#wImg").hide();
+    }
+  }
+
+  onWatermarkChange();
+
+  jQuery("#wSelect").bind("change", onWatermarkChange);
+
+  if (jQuery("input[name='w[position]']:checked").val() == 'custom') {
+    jQuery("#positionCustomDetails").show();
+  }
+
+  jQuery("input[name='w[position]']").change(function(){
+    if (jQuery(this).val() == 'custom') {
+      jQuery("#positionCustomDetails").show();
+    }
+    else {
+      jQuery("#positionCustomDetails").hide();
+    }
+  });
+
+  jQuery(".addWatermarkOpen").click(function(){
+    jQuery("#addWatermark, #selectWatermark").toggle();
+		return false;
+  });
+}());
+{/footer_script}
+
+<fieldset id="watermarkConf" class="no-border">
+  <legend></legend>
+  <ul>
+    <li>
+      <span id="selectWatermark"{if isset($ferrors.watermarkImage)} style="display:none"{/if}><label>{'Select a file'|@translate}</label>
+      <select name="w[file]" id="wSelect">
+        {html_options options=$watermark_files selected=$watermark.file}
+      </select>
+      {'... or '|@translate}<a href="#" class="addWatermarkOpen">{'add a new watermark'|@translate}</a>
+      <br>
+      <img id="wImg"></img></span>{* #selectWatermark *}
+      <span id="addWatermark"{if isset($ferrors.watermarkImage)} style="display:inline"{/if}>
+      {'add a new watermark'|@translate} {'... or '|@translate}<a href="#" class="addWatermarkOpen">{'Select a file'|@translate}</a>
+      <br>
+      <input type="file" size="60" id="watermarkImage" name="watermarkImage"{if isset($ferrors.watermarkImage)} class="dError"{/if}> (png)
+      {if isset($ferrors.watermarkImage)}<span class="dErrorDesc" title="{$ferrors.watermarkImage|@htmlspecialchars}">!</span>{/if}
+      </span>{* #addWatermark *}
+    </li>
+
+    <li>
+      <label>
+        {'Apply watermark if width is bigger than'|@translate}
+        <input  size="4" maxlength="4" type="text" name="w[minw]" value="{$watermark.minw}"{if isset($ferrors.watermark.minw)} class="dError"{/if}>
+      </label>
+      {'pixels'|@translate}
+    </li>
+
+    <li>
+      <label>
+        {'Apply watermark if height is bigger than'|@translate}
+        <input  size="4" maxlength="4" type="text" name="w[minh]" value="{$watermark.minh}"{if isset($ferrors.watermark.minh)} class="dError"{/if}>
+      </label>
+      {'pixels'|@translate}
+    </li>
+
+    <li>
+      <label>{'Position'|@translate}</label>
+      <br>
+      <div id="watermarkPositionBox">
+        <label class="right">{'top right corner'|@translate} <input name="w[position]" type="radio" value="topright"{if $watermark.position eq 'topright'} checked="checked"{/if}></label>
+        <label><input name="w[position]" type="radio" value="topleft"{if $watermark.position eq 'topleft'} checked="checked"{/if}> {'top left corner'|@translate}</label>
+        <label class="middle"><input name="w[position]" type="radio" value="middle"{if $watermark.position eq 'middle'} checked="checked"{/if}> {'middle'|@translate}</label>
+        <label class="right">{'bottom right corner'|@translate} <input name="w[position]" type="radio" value="bottomright"{if $watermark.position eq 'bottomright'} checked="checked"{/if}></label>
+        <label><input name="w[position]" type="radio" value="bottomleft"{if $watermark.position eq 'bottomleft'} checked="checked"{/if}> {'bottom left corner'|@translate}</label>
+      </div>
+      
+      <label style="display:block;margin-top:10px;font-weight:normal;"><input name="w[position]" type="radio" value="custom"{if $watermark.position eq 'custom'} checked="checked"{/if}> {'custom'|@translate}</label>
+      <div id="positionCustomDetails">
+        <label>{'X Position'|@translate}
+          <input size="3" maxlength="3" type="text" name="w[xpos]" value="{$watermark.xpos}"{if isset($ferrors.watermark.xpos)} class="dError"{/if}>%
+          {if isset($ferrors.watermark.xpos)}<span class="dErrorDesc" title="{$ferrors.watermark.xpos}">!</span>{/if}
+        </label>
+
+        <br>
+        <label>{'Y Position'|@translate}
+          <input size="3" maxlength="3" type="text" name="w[ypos]" value="{$watermark.ypos}"{if isset($ferrors.watermark.ypos)} class="dError"{/if}>%
+          {if isset($ferrors.watermark.ypos)}<span class="dErrorDesc" title="{$ferrors.watermark.ypos}">!</span>{/if}
+        </label>
+
+        <br>
+        <label>{'X Repeat'|@translate}
+          <input size="3" maxlength="3" type="text" name="w[xrepeat]" value="{$watermark.xrepeat}"{if isset($ferrors.watermark.xrepeat)} class="dError"{/if}>
+          {if isset($ferrors.watermark.xrepeat)}<span class="dErrorDesc" title="{$ferrors.watermark.xrepeat}">!</span>{/if}
+        </label>
+      </div>
+    </li>
+
+    <li>
+      <label>{'Opacity'|@translate}</label>
+      <input size="3" maxlength="3" type="text" name="w[opacity]" value="{$watermark.opacity}"{if isset($ferrors.watermark.opacity)} class="dError"{/if}> %
+      {if isset($ferrors.watermark.opacity)}<span class="dErrorDesc" title="{$ferrors.watermark.opacity}">!</span>{/if}
+    </li>
+  </ul>
+</fieldset>
+
+{/if} {* end of watermark section *}
+
+{if isset($display)}
+<fieldset id="indexDisplayConf">
+  <legend>{'Main Page'|@translate}</legend>
+  <ul>
+    <li>
+      <label>
+        <input type="checkbox" name="menubar_filter_icon" {if ($display.menubar_filter_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('display only recently posted photos'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_new_icon" {if ($display.index_new_icon)}checked="checked"{/if}>
+        {'Activate icon "new" next to albums and pictures'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_sort_order_input" {if ($display.index_sort_order_input)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('Sort order'|@translate)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_flat_icon" {if ($display.index_flat_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('display all photos in all sub-albums'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_posted_date_icon" {if ($display.index_posted_date_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('display a calendar by posted date'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_created_date_icon" {if ($display.index_created_date_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('display a calendar by creation date'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="index_slideshow_icon" {if ($display.index_slideshow_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('slideshow'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        {'Number of albums per page'|@translate}
+        <input type="text" size="3" maxlength="4" name="nb_categories_page" id="nb_categories_page" value="{$display.NB_CATEGORIES_PAGE}">
+      </label>
+    </li>
+  </ul>
+</fieldset>
+
+<fieldset id="pictureDisplayConf">
+  <legend>{'Photo Page'|@translate}</legend>
+  <ul>
+    <li>
+      <label>
+        <input type="checkbox" name="picture_slideshow_icon" {if ($display.picture_slideshow_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('slideshow'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_metadata_icon" {if ($display.picture_metadata_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('Show file metadata'|@translate)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_download_icon" {if ($display.picture_download_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('Download this file'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_favorite_icon" {if ($display.picture_favorite_icon)}checked="checked"{/if}>
+        {'Activate icon "%s"'|@translate:('add this photo to your favorites'|@translate|@ucfirst)}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_navigation_icons" {if ($display.picture_navigation_icons)}checked="checked"{/if}>
+        {'Activate Navigation Bar'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_navigation_thumb" {if ($display.picture_navigation_thumb)}checked="checked"{/if}>
+        {'Activate Navigation Thumbnails'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_menu" {if ($display.picture_menu)}checked="checked"{/if}>
+        {'Show menubar'|@translate}
+      </label>
+    </li>
+  </ul>
+</fieldset>
+
+<fieldset id="pictureInfoConf">
+  <legend>{'Photo Properties'|@translate}</legend>
+  <ul>
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[author]" {if ($display.picture_informations.author)}checked="checked"{/if}>
+        {'Author'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[created_on]" {if ($display.picture_informations.created_on)}checked="checked"{/if}>
+        {'Created on'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[posted_on]" {if ($display.picture_informations.posted_on)}checked="checked"{/if}>
+        {'Posted on'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[dimensions]" {if ($display.picture_informations.dimensions)}checked="checked"{/if}>
+        {'Dimensions'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[file]" {if ($display.picture_informations.file)}checked="checked"{/if}>
+        {'File'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[filesize]" {if ($display.picture_informations.filesize)}checked="checked"{/if}>
+        {'Filesize'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[tags]" {if ($display.picture_informations.tags)}checked="checked"{/if}>
+        {'Tags'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[categories]" {if ($display.picture_informations.categories)}checked="checked"{/if}>
+        {'Albums'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[visits]" {if ($display.picture_informations.visits)}checked="checked"{/if}>
+        {'Visits'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[rating_score]" {if ($display.picture_informations.rating_score)}checked="checked"{/if}>
+        {'Rating score'|@translate}
+      </label>
+    </li>
+
+    <li>
+      <label>
+        <input type="checkbox" name="picture_informations[privacy_level]" {if ($display.picture_informations.privacy_level)}checked="checked"{/if}>
+        {'Who can see this photo?'|@translate} ({'available for administrators only'|@translate})
+      </label>
+    </li>
+  </ul>
+</fieldset>
+{/if}
+
+</div> <!-- configContent -->
+
+{if !isset($default)}
+	<p class="formButtons">
+		<input type="submit" name="submit" value="{'Save Settings'|@translate}">
+	</p>
+</form>
+{/if}
+
+{if isset($default)}
+<div id="configContent">
+{$PROFILE_CONTENT}
+</div>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/double_select.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/double_select.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/double_select.tpl	(revision 25596)
@@ -0,0 +1,22 @@
+
+{include file='include/dbselect.inc.tpl'}
+
+<table class="doubleSelect">
+  <tr>
+    <td>
+      <h3>{$L_CAT_OPTIONS_TRUE}</h3>
+      <select class="categoryList" name="cat_true[]" multiple="multiple" size="30">
+        {html_options options=$category_option_true selected=$category_option_true_selected}
+      </select>
+      <p><input class="submit" type="submit" value="&raquo;" name="falsify" style="font-size:15px;"></p>
+    </td>
+
+    <td>
+      <h3>{$L_CAT_OPTIONS_FALSE}</h3>
+      <select class="categoryList" name="cat_false[]" multiple="multiple" size="30">
+        {html_options options=$category_option_false selected=$category_option_false_selected}
+      </select>
+      <p><input class="submit" type="submit" value="&laquo;" name="trueify" style="font-size:15px;"></p>
+    </td>
+  </tr>
+</table>
Index: /tags/2.6.0RC1/admin/themes/default/template/element_set_ranks.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/element_set_ranks.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/element_set_ranks.tpl	(revision 25596)
@@ -0,0 +1,94 @@
+{footer_script require='jquery.ui.sortable'}{literal}
+jQuery(document).ready(function() {
+  function checkOrderOptions() {
+    jQuery("#image_order_user_define_options").hide();
+    if (jQuery("input[name=image_order_choice]:checked").val() == "user_define") {
+      jQuery("#image_order_user_define_options").show();
+    }        
+  }
+
+  jQuery('ul.thumbnails').sortable( { 
+    revert: true, opacity: 0.7,
+    handle: jQuery('.rank-of-image').add('.rank-of-image img'),
+    update: function() {
+      jQuery(this).find('li').each(function(i) { 
+        jQuery(this).find("input[name^=rank_of_image]").each(function() {
+          jQuery(this).attr('value', (i+1)*10)
+        });
+      });
+
+      jQuery('#image_order_rank').prop('checked', true);
+      checkOrderOptions();
+    }
+  });
+
+  jQuery("input[name=image_order_choice]").click(function () {
+    checkOrderOptions();
+  });
+
+  checkOrderOptions();
+});
+jQuery(document).ready(function() {
+jQuery('.thumbnail').tipTip({
+'delay' : 0,
+'fadeIn' : 200,
+'fadeOut' : 200
+});
+}); 
+{/literal}{/footer_script}
+
+<div class="titrePage">
+  <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> &#8250; {'Edit album'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="post">
+{if !empty($thumbnails)}
+  <p><input type="submit" value="{'Submit'|@translate}" name="submit"></p>
+  <fieldset>
+    <legend>{'Manual order'|@translate}</legend>
+    {if !empty($thumbnails)}
+    <p>{'Drag to re-order'|@translate}</p>
+    <ul class="thumbnails">
+      {foreach from=$thumbnails item=thumbnail}
+      <li class="rank-of-image">
+        <img src="{$thumbnail.TN_SRC}" class="thumbnail" alt="{$thumbnail.NAME|@replace:'"':' '}" title="{$thumbnail.NAME|@replace:'"':' '}"  style="width:{$thumbnail.SIZE[0]}px; height:{$thumbnail.SIZE[1]}px; ">
+        <input type="text" name="rank_of_image[{$thumbnail.ID}]" value="{$thumbnail.RANK}" style="display:none">
+      </li>
+      {/foreach}
+    </ul>
+    {/if}
+  </fieldset>
+{/if}
+
+  <fieldset>
+    <legend>{'Sort order'|@translate}</legend>
+    <p class="field">
+      <input type="radio" name="image_order_choice" id="image_order_default" value="default"{if $image_order_choice=='default'} checked="checked"{/if}>
+      <label for="image_order_default">{'Use the default photo sort order (defined in the configuration file)'|@translate}</label>
+    </p>
+    <p class="field">
+      <input type="radio" name="image_order_choice" id="image_order_rank" value="rank"{if $image_order_choice=='rank'} checked="checked"{/if}>
+      <label for="image_order_rank">{'manual order'|@translate}</label>
+    </p>
+    <p class="field">
+      <input type="radio" name="image_order_choice" id="image_order_user_define" value="user_define"{if $image_order_choice=='user_define'} checked="checked"{/if}>
+      <label for="image_order_user_define">{'automatic order'|@translate}</label>
+      <div id="image_order_user_define_options">
+      {foreach from=$image_order item=order}
+      <p class="field">
+        <select name="image_order[]">
+          {html_options options=$image_order_options selected=$order}
+        </select>
+      </p>
+      {/foreach}
+      </div>
+  </fieldset>
+  <p>
+    <input type="submit" value="{'Submit'|@translate}" name="submit">
+
+    <label>
+      <input type="checkbox" name="image_order_subcats" id="image_order_subcats">
+      {'Apply to sub-albums'|@translate}
+    </label>
+  </p>
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/extend_for_templates.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/extend_for_templates.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/extend_for_templates.tpl	(revision 25596)
@@ -0,0 +1,35 @@
+<div class="titrePage"><h2>{'Extend for templates'|@translate}</h2>
+</div>
+{if isset($extents)}
+<h4>{'Replacement of original templates by customized templates from template-extension subfolder'|@translate}</h4>
+<form method="post" name="extend_for_templates" id="extend_for_templates" action="">
+  <table class="table2">
+    <tr class="throw">
+      <th>{'Replacers (customized templates)'|@translate}</th>
+      <th>{'Original templates'|@translate}</th>
+      <th>{'Optional URL keyword'|@translate}</th>
+      <th>{'Bound Theme'|@translate}</th>
+    </tr>
+    {foreach from=$extents item=tpl name=extent_loop}
+    <tr class="{if $smarty.foreach.extent_loop.index is odd}row1{else}row2{/if}">
+      <td>
+        <input type="hidden" name="reptpl[]" value="{$tpl.replacer}">
+        {$tpl.replacer}
+      </td>
+      <td>
+        {html_options name='original[]' output=$tpl.original_tpl values=$tpl.original_tpl selected=$tpl.selected_tpl}
+      </td>
+      <td>
+        {html_options name='url[]' output=$tpl.url_parameter values=$tpl.url_parameter selected=$tpl.selected_url}
+      </td>
+      <td>
+        {html_options name='bound[]' output=$tpl.bound_tpl values=$tpl.bound_tpl selected=$tpl.selected_bound}
+      </td>
+    </tr>
+    {/foreach}
+  </table>
+  <p>
+    <input type="submit" value="{'Submit'|@translate}" name="submit">
+  </p>
+</form>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/footer.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/footer.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/footer.tpl	(revision 25596)
@@ -0,0 +1,83 @@
+{* 
+          Warning : This is the admin pages footer only 
+          don't be confusing with the public page footer
+*}
+</div> <!-- pwgMain -->
+{if isset($footer_elements)}
+{foreach from=$footer_elements item=v}
+{$v}
+{/foreach}
+{/if}
+{if isset($debug.QUERIES_LIST)}
+<div id="debug">
+{$debug.QUERIES_LIST}
+</div>
+{/if}
+
+<div id="footer">
+  <div id="piwigoInfos">
+ {* Please, do not remove this copyright. If you really want to,
+      contact us on http://piwigo.org to find a solution on how
+      to show the origin of the script...
+  *}
+
+  {'Powered by'|@translate}
+  <a class="externalLink" href="{$PHPWG_URL}" title="{'Visit Piwigo project website'|@translate}">
+  <span class="Piwigo">Piwigo</span></a>
+  {$VERSION}
+  | <a class="externalLink" href="{$pwgmenu.WIKI}" title="{'Read Piwigo Documentation'|@translate}">{'Documentation'|@translate}</a>
+  | <a class="externalLink" href="{$pwgmenu.FORUM}" title="{'Get Support on Piwigo Forum'|@translate}">{'Support'|@translate}</a>
+  </div> <!-- piwigoInfos -->
+
+  <div id="pageInfos">
+ {if isset($debug.TIME) }
+ {'Page generated in'|@translate} {$debug.TIME} ({$debug.NB_QUERIES} {'SQL queries in'|@translate} {$debug.SQL_TIME}) -
+ {/if}
+
+
+  {'Contact'|@translate}
+  <a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|@translate|@escape:url}">{'Webmaster'|@translate}</a>
+  </div> <!-- pageInfos -->
+
+</div> <!-- footer -->
+</div> <!-- the_page -->
+
+
+{combine_script id='jquery.tipTip' load='async' path='themes/default/js/plugins/jquery.tipTip.minified.js'}
+{footer_script require='jquery.tipTip'}
+jQuery(document).ready(function() {ldelim}
+	jQuery('#pwgHead A[title], #footer A[title], .themeActions .tiptip, .languageActions .tiptip').tipTip({ldelim}
+			'delay' : 0,
+			'fadeIn' : 200,
+			'fadeOut' : 200
+	});
+});
+{/footer_script}
+
+<!-- BEGIN get_combined_scripts -->
+{get_combined_scripts load='footer'}
+<!-- END get_combined_scripts -->
+
+{literal}
+<script type='text/javascript'>
+  jQuery(document).ready(function() {
+    $("a.externalLink").click(function() {
+      window.open($(this).attr("href"));
+      return false;
+    });
+  });
+</script>
+{/literal}
+
+{if not $ENABLE_SYNCHRONIZATION}
+{literal}
+<script type='text/javascript'>
+  $(document).ready(function() {
+    $("#helpSynchro").hide();
+  });
+</script>
+{/literal}
+{/if}
+
+</body>
+</html>
Index: /tags/2.6.0RC1/admin/themes/default/template/group_list.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/group_list.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/group_list.tpl	(revision 25596)
@@ -0,0 +1,189 @@
+{footer_script}
+{literal}
+$(document).ready(function() {
+  /**
+   * Add group
+   */
+  jQuery("#addGroup").click(function() {
+    jQuery("#addGroupForm").toggle();
+    jQuery("input[name=groupname]").focus();
+    return false;
+  });
+
+  jQuery("#addGroupClose").click(function() {
+    jQuery("#addGroupForm").hide();
+    return false;
+  });
+
+  $('.groups input').change(function () { $(this).parent('p').toggleClass('group_select'); });
+  $(".grp_action").hide();
+  $("input.group_selection").click(function() {
+
+    var nbSelected = 0;
+    nbSelected = $("input.group_selection").filter(':checked').length;
+
+    if (nbSelected == 0) {
+      $("#permitAction").hide();
+      $("#forbidAction").show();
+    }
+    else {
+      $("#permitAction").show();
+      $("#forbidAction").hide();
+    }
+    $("p[group_id="+$(this).prop("value")+"]").each(function () {
+     $(this).toggle();
+    });
+
+    if (nbSelected<2) {
+      $("#two_to_select").show();
+      $("#two_atleast").hide();
+    }
+    else {
+      $("#two_to_select").hide();
+      $("#two_atleast").show();
+    }
+  });
+  $("[id^=action_]").hide();
+  $("select[name=selectAction]").change(function () {
+    $("[id^=action_]").hide();
+    $("#action_"+$(this).prop("value")).show();
+    if ($(this).val() != -1 ) {
+      $("#applyActionBlock").show();
+    }
+    else {
+      $("#applyActionBlock").hide();
+    }
+  });
+});
+
+{/literal}
+{/footer_script}
+
+
+
+<div class="titrePage">
+  <h2>{'Group management'|@translate}</h2>
+</div>
+
+<p class="showCreateAlbum" id="showAddGroup">
+  <a class="icon-plus-circled" href="#" id="addGroup">{'Add group'|translate}</a>
+</p>
+
+<form method="post" style="display:none" id="addGroupForm" name="add_user" action="{$F_ADD_ACTION}" class="properties">
+  <fieldset>
+    <legend>{'Add group'|@translate}</legend>
+
+    <p>
+      <strong>{'Group name'|translate}</strong><br>
+      <input type="text" name="groupname" maxlength="50" size="20">
+    </p>
+
+    <p class="actionButtons">
+      <input class="submit" name="submit_add" type="submit" value="{'Add'|translate}">
+      <a href="#" id="addGroupClose">{'Cancel'|@translate}</a>
+    </p>
+
+    <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+
+  </fieldset>
+</form>
+
+<form method="post" name="add_user" action="{$F_ADD_ACTION}" class="properties">
+  <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+
+  <ul class="groups">
+    {if not empty($groups)}
+    {foreach from=$groups item=group name=group_loop}
+    <li>
+      <label><p>{$group.NAME}<i><small>{$group.IS_DEFAULT}</small></i><input class="group_selection" name="group_selection[]" type="checkbox" value="{$group.ID}"></p></label>
+      <p class="list_user">{if $group.MEMBERS>0}<a href="{$group.U_MEMBERS}" title="{'Manage the members'|@translate}">{$group.MEMBERS}</a><br>{$group.L_MEMBERS}{else}{$group.MEMBERS}{/if}</p>
+      <a class="icon-lock group_perm" href="{$group.U_PERM}" title="{'Permissions'|@translate}">{'Permissions'|translate}</a>
+    </li>
+    {/foreach}
+    {/if}
+  </ul>
+
+  <fieldset id="action">
+    <legend>{'Action'|@translate}</legend>
+      <div id="forbidAction">{'No group selected, no action possible.'|@translate}</div>
+      <div id="permitAction" style="display:none">
+
+        <select name="selectAction">
+          <option value="-1">{'Choose an action'|@translate}</option>
+          <option disabled="disabled">------------------</option>
+          <option value="rename">{'Rename'|@translate}</option>
+          <option value="delete">{'Delete'|@translate}</option>
+          <option value="merge">{'Merge selected groups'|@translate}</option>
+          <option value="duplicate">{'Duplicate'|@translate}</option>
+          <option value="toggle_default">{'Toggle \'default group\' property'|@translate}</option>
+      {if !empty($element_set_groupe_plugins_actions)}
+        {foreach from=$element_set_groupe_plugins_actions item=action}
+          <option value="{$action.ID}">{$action.NAME}</option>
+        {/foreach}
+      {/if}
+        </select>
+
+        <!-- rename -->
+        <div id="action_rename" class="bulkAction">
+        {if not empty($groups)}
+        {foreach from=$groups item=group}
+        <p group_id="{$group.ID}" class="grp_action">
+          <input type="text" class="large" name="rename_{$group.ID}" value="{$group.NAME}" onfocus="this.value=(this.value=='{$group.NAME}') ? '' : this.value;" onblur="this.value=(this.value=='') ? '{$group.NAME}' : this.value;">
+        </p>
+        {/foreach}
+        {/if}
+        </div>
+
+        <!-- merge -->
+        <div id="action_merge" class="bulkAction">
+          <p id="two_to_select">{'Please select at least two groups'|@translate}</p>
+          {assign var='mergeDefaultValue' value='Type here the name of the new group'|@translate}
+          <p id="two_atleast">
+            <input type="text" class="large" name="merge" value="{$mergeDefaultValue}" onfocus="this.value=(this.value=='{$mergeDefaultValue}') ? '' : this.value;" onblur="this.value=(this.value=='') ? '{$mergeDefaultValue}' : this.value;">
+          </p>
+        </div>
+
+        <!-- delete -->
+        <div id="action_delete" class="bulkAction">
+        <p><label><input type="checkbox" name="confirm_deletion" value="1"> {'Are you sure?'|@translate}</label></p>
+        </div>
+
+        <!-- duplicate -->
+        <div id="action_duplicate" class="bulkAction">
+        {assign var='duplicateDefaultValue' value='Type here the name of the new group'|@translate}
+        {if not empty($groups)}
+        {foreach from=$groups item=group}
+        <p group_id="{$group.ID}" class="grp_action">
+          {$group.NAME} > <input type="text" class="large" name="duplicate_{$group.ID}" value="{$duplicateDefaultValue}" onfocus="this.value=(this.value=='{$duplicateDefaultValue}') ? '' : this.value;" onblur="this.value=(this.value=='') ? '{$duplicateDefaultValue}' : this.value;">
+        </p>
+        {/foreach}
+        {/if}
+        </div>
+
+        <!-- toggle_default -->
+        <div id="action_toggle_default" class="bulkAction">
+        {if not empty($groups)}
+        {foreach from=$groups item=group}
+        <p group_id="{$group.ID}" class="grp_action">
+          {$group.NAME} > {if empty($group.IS_DEFAULT)}{'This group will be set to default'|@translate}{else}{'This group will be unset to default'|@translate}{/if}
+        </p>
+        {/foreach}
+        {/if}
+        </div>
+
+
+        <!-- plugins -->
+    {if !empty($element_set_groupe_plugins_actions)}
+      {foreach from=$element_set_groupe_plugins_actions item=action}
+        <div id="action_{$action.ID}" class="bulkAction">
+        {if !empty($action.CONTENT)}{$action.CONTENT}{/if}
+        </div>
+      {/foreach}
+    {/if}
+
+        <p id="applyActionBlock" style="display:none" class="actionButtons">
+          <input id="applyAction" class="submit" type="submit" value="{'Apply action'|@translate}" name="submit"> <span id="applyOnDetails"></span></p>
+    </div> <!-- #permitAction -->
+  </fieldset>
+</form>
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/group_perm.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/group_perm.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/group_perm.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+{* $Id *}
+<h2>{$TITLE}</h2>
+
+<form method="post" action="{$F_ACTION}">
+  {$DOUBLE_SELECT}
+</form>
+
+<p>{'Only private albums are listed'|@translate}</p>
Index: /tags/2.6.0RC1/admin/themes/default/template/header.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/header.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/header.tpl	(revision 25596)
@@ -0,0 +1,81 @@
+{* 
+
+          Warning : This is the admin pages header only 
+          don't confuse with the public page header
+
+*}
+<!DOCTYPE html>
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
+<title>{$GALLERY_TITLE} :: {$PAGE_TITLE}</title>
+<link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}{$themeconf.icon_dir}/favicon.ico">
+
+{get_combined_css}
+{foreach from=$themes item=theme}
+{if $theme.load_css}
+{combine_css path="admin/themes/`$theme.id`/theme.css" order=-10}
+{/if}
+{if !empty($theme.local_head)}{include file=$theme.local_head load_css=$theme.load_css}{/if}
+{/foreach}
+{combine_css path="admin/themes/default/fontello/css/fontello.css"}
+
+<!-- BEGIN get_combined_scripts -->
+{get_combined_scripts load='header'}
+<!-- END get_combined_scripts -->
+
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+
+<!--[if lt IE 7]>
+<script type="text/javascript" src="{$ROOT_URL}themes/default/js/pngfix.js"></script>
+<![endif]-->
+
+{if not empty($head_elements)}
+{foreach from=$head_elements item=elt}
+{$elt}
+{/foreach}
+{/if}
+
+</head>
+
+<body id="{$BODY_ID}">
+
+<div id="the_page">
+
+{if not empty($header_msgs)}
+<div class="header_msgs">
+  {foreach from=$header_msgs item=elt}
+  {$elt}
+  {/foreach}
+</div>
+{/if}
+
+<div id="pwgHead">
+  <h1>
+    <a href="{$U_RETURN}" title="{'Visit Gallery'|@translate}">
+			<span class="icon-home" style="font-size:larger"></span>
+			{$GALLERY_TITLE}
+    </a>
+  </h1>
+
+  <div id="headActions">
+    {'Hello'|@translate} {$USERNAME} :
+    <a href="{$U_RETURN}">{'Visit Gallery'|@translate}</a> |
+    <a href="{$U_CHANGE_THEME}" title="{'Switch to clear or dark colors for administration'|@translate}">{'Change Admin Colors'|@translate}</a> |
+    <a href="{$U_FAQ}" title="{'Instructions to use Piwigo'|@translate}">{'Help Me'|@translate}</a> |
+    <a href="{$U_LOGOUT}">{'Logout'|@translate}</a>
+  </div>
+</div>
+
+<div style="clear:both;"></div>
+
+{if not empty($header_notes)}
+<div class="header_notes">
+  {foreach from=$header_notes item=elt}
+  {$elt}
+  {/foreach}
+</div>
+{/if}
+
+<div id="pwgMain">
Index: /tags/2.6.0RC1/admin/themes/default/template/help.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/help.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/help.tpl	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>{'Help'|@translate} &raquo; {$HELP_SECTION_TITLE}</h2>
+
+<div id="helpContent">
+
+{$HELP_CONTENT}
+
+</div>
Index: /tags/2.6.0RC1/admin/themes/default/template/history.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/history.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/history.tpl	(revision 25596)
@@ -0,0 +1,182 @@
+
+{include file='include/datepicker.inc.tpl'}
+
+{footer_script}{literal}
+	pwg_initialization_datepicker("#start_day", "#start_month", "#start_year", "#start_linked_date", null, null, "#end_linked_date");
+	pwg_initialization_datepicker("#end_day", "#end_month", "#end_year", "#end_linked_date", null, "#start_linked_date", null);
+{/literal}{/footer_script}
+
+<h2>{'History'|@translate} {$TABSHEET_TITLE}</h2>
+
+<form class="filter" method="post" name="filter" action="{$F_ACTION}">
+<fieldset>
+  <legend>{'Filter'|@translate}</legend>
+  <ul>
+    <li><label>{'Date'|@translate}</label></li>
+    <li>
+      <select id="start_day" name="start_day">
+        <option value="0">--</option>
+        {section name=day start=1 loop=32}
+        <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$START_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select id="start_month" name="start_month">
+      {html_options options=$month_list selected=$START_MONTH_SELECTED}
+      </select>
+      <input id="start_year" name="start_year" value="{$START_YEAR}" type="text" size="4" maxlength="4" >
+      <input id="start_linked_date" name="start_linked_date" type="hidden" size="10" disabled="disabled">
+    </li>
+  </ul>
+  <ul>
+    <li><label>{'End-Date'|@translate}</label></li>
+    <li>
+      <select id="end_day" name="end_day">
+        <option value="0">--</option>
+        {section name=day start=1 loop=32}
+        <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$END_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select id="end_month" name="end_month">
+      {html_options options=$month_list selected=$END_MONTH_SELECTED}
+      </select>
+      <input id="end_year" name="end_year" value="{$END_YEAR}" type="text" size="4" maxlength="4" >
+      <input id="end_linked_date" name="end_linked_date" type="hidden" size="10" disabled="disabled">
+    </li>
+  </ul>
+
+  <label>
+    {'Element type'|@translate}
+    <select name="types[]" multiple="multiple" size="4">
+      {html_options values=$type_option_values output=$type_option_values|translate selected=$type_option_selected}
+    </select>
+  </label>
+
+  <label>
+    {'User'|@translate}
+    <select name="user">
+      <option value="-1">------------</option>
+      {html_options options=$user_options selected=$user_options_selected}
+    </select>
+  </label>
+
+  <label>
+    {'Image id'|@translate}
+    <input name="image_id" value="{$IMAGE_ID}" type="text" size="5">
+  </label>
+
+  <label>
+    {'File name'|@translate}
+		<input name="filename" value="{$FILENAME}" type="text" size="12">
+  </label>
+
+	<label>
+		{'IP'|@translate}
+		<input name="ip" value="{$IP}" type="text" size="12">
+	</label>
+
+  <label>
+    {'Thumbnails'|@translate}
+    <select name="display_thumbnail">
+      {html_options options=$display_thumbnails selected=$display_thumbnail_selected}
+    </select>
+  </label>
+
+  <input type="submit" name="submit" value="{'Submit'|@translate}">
+</fieldset>
+</form>
+
+{if isset($search_summary)}
+<fieldset>
+  <legend>{'Summary'|@translate}</legend>
+
+  <ul>
+    <li>{$search_summary.NB_LINES}, {$search_summary.FILESIZE}</li>
+    <li>
+      {$search_summary.USERS}
+      <ul>
+        <li>{$search_summary.MEMBERS}</li>
+        <li>{$search_summary.GUESTS}</li>
+      </ul>
+    </li>
+  </ul>
+</fieldset>
+{/if}
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+<table class="table2" id="detailedStats">
+<thead>
+<tr class="throw">
+  <th>{'Date'|@translate}</th>
+  <th>{'Time'|@translate}</th>
+  <th>{'User'|@translate}</th>
+  <th>{'IP'|@translate}</th>
+  <th>{'Element'|@translate}</th>
+  <th>{'Element type'|@translate}</th>
+  <th>{'Section'|@translate}</th>
+	<th>{'Album'|@translate} / {'Tags'|@translate}</th>
+</tr>
+</thead>
+{if !empty($search_results)}
+{foreach from=$search_results item=detail name=res_loop}
+<tr class="{if $smarty.foreach.res_loop.index is odd}row1{else}row2{/if}">
+  <td class="hour">{$detail.DATE}</td>
+  <td class="hour">{$detail.TIME}</td>
+  <td>{$detail.USER}</td>
+  <td class="IP">{$detail.IP}</td>
+  <td>{$detail.IMAGE}</td>
+  <td>{$detail.TYPE}</td>
+  <td>{$detail.SECTION}</td>
+	<td>{$detail.CATEGORY}{$detail.TAGS}</td>
+</tr>
+{/foreach}
+{/if}
+</table>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+{combine_script id='jquery.geoip' load='async' path='admin/themes/default/js/jquery.geoip.js'}
+
+{footer_script}{literal}
+jQuery(document).ready( function() {
+  jQuery(".IP").one( "mouseenter", function(){
+  	var that = $(this);
+  	that
+  		.data("isOver", true)
+  		.one("mouseleave", function() {
+  			that.removeData("isOver");
+  		});
+  	GeoIp.get( that.text(), function(data) {
+  		if (!data.fullName) return;
+  
+      var content = data.fullName;
+      if (data.latitude && data.region_name) {
+        content += '<br><a class="ipGeoOpen" data-lat="'+data.latitude+'" data-lon="'+data.longitude+'"';
+        content += ' href="#">show on a Google Map</a>';
+      }
+  
+  		that.tipTip( {
+  			content: content,
+        keepAlive: true,
+        defaultPosition: "right",
+        maxWidth: 320,
+  			}	);
+  		if (that.data("isOver"))
+  			that.trigger("mouseenter");
+  	});
+  } );
+  
+  jQuery(document).on('click', '.ipGeoOpen',  function() {
+    var lat = jQuery(this).data("lat");
+    var lon = jQuery(this).data("lon");
+    var parent = jQuery(this).parent();
+    jQuery(this).remove();
+  
+    var append = '<br><img width=300 height=220 src="http://maps.googleapis.com/maps/api/staticmap';
+    append += '?sensor=false&size=300x220&zoom=6&markers=size:tiny%7C' + lat + ',' + lon + '">';
+  
+    jQuery(parent).append(append);
+    return false;
+  });
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/add_album.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/add_album.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/add_album.inc.tpl	(revision 25596)
@@ -0,0 +1,94 @@
+{footer_script}{literal}
+jQuery(document).ready(function(){
+  jQuery(".addAlbumOpen").colorbox({
+    inline: true,
+    href: "#addAlbumForm",
+    onComplete: function() {
+      var $albumSelect = jQuery("#albumSelect");
+
+      jQuery("input[name=category_name]").focus();
+      
+      jQuery("#category_parent").html('<option value="0">------------</option>')
+        .append($albumSelect.html())
+        .val($albumSelect.val() || 0);
+    }
+  });
+
+  jQuery("#addAlbumForm form").submit(function() {
+      jQuery("#categoryNameError").text("");
+      
+      var parent_id = jQuery("select[name=category_parent] option:selected").val(),
+          name = jQuery("input[name=category_name]").val();
+
+      jQuery.ajax({
+        url: "ws.php",
+        dataType: 'json',
+        data: {
+          format: 'json',
+          method: 'pwg.categories.add',
+          parent: parent_id,
+          name: name
+        },
+        beforeSend: function() {
+          jQuery("#albumCreationLoading").show();
+        },
+        success: function(data) {
+          jQuery("#albumCreationLoading").hide();
+          jQuery(".addAlbumOpen").colorbox.close();
+
+          var newAlbum = data.result.id,
+              newAlbum_name = '';
+              
+          if (parent_id!=0) {
+            newAlbum_name = jQuery("#category_parent").find("option[value="+ parent_id +"]").text() +' / ';
+          }
+          newAlbum_name+= name;
+          
+          var new_option = jQuery("<option/>")
+              .attr("value", newAlbum)
+              .attr("selected", "selected")
+              .text(newAlbum_name);
+
+          var $albumSelect = jQuery("#albumSelect");
+          $albumSelect.find("option").removeAttr('selected');
+          
+          if (parent_id==0) {
+            $albumSelect.prepend(new_option);
+          }
+          else {
+            $albumSelect.find("option[value="+ parent_id +"]").after(new_option);
+          }
+
+          jQuery("#addAlbumForm form input[name=category_name]").val('');
+          jQuery("#albumSelection").show();
+
+          return true;
+        },
+        error: function(XMLHttpRequest, textStatus, errorThrows) {
+            jQuery("#albumCreationLoading").hide();
+            jQuery("#categoryNameError").text(errorThrows).css("color", "red");
+        }
+      });
+
+      return false;
+  });
+});
+{/literal}{/footer_script}
+
+<div style="display:none">
+  <div id="addAlbumForm" style="text-align:left;padding:1em;">
+    <form>
+      {'Parent album'|@translate}<br>
+      <select id="category_parent" name="category_parent">
+      </select>
+      <br><br>
+      
+      {'Album name'|@translate}<br>
+      <input name="category_name" type="text" maxlength="255"> <span id="categoryNameError"></span>
+      <br><br><br>
+      
+      <input type="submit" value="{'Create'|@translate}">
+      <span id="albumCreationLoading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span>
+    </form>
+  </div>
+</div>
Index: /tags/2.6.0RC1/admin/themes/default/template/include/autosize.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/autosize.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/autosize.inc.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+{combine_script id='jquery.autogrow' load='async' require='jquery' path='themes/default/js/plugins/jquery.autogrow-textarea.js'}
+{* Auto size and auto grow textarea *}
+{footer_script require='jquery.autogrow'}{literal}
+jQuery(document).ready(function(){
+	jQuery('textarea').css('overflow-y', 'hidden');
+	// Auto size and auto grow for all text area
+	jQuery('textarea').autogrow();
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/colorbox.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/colorbox.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/colorbox.inc.tpl	(revision 25596)
@@ -0,0 +1,2 @@
+{combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
+{combine_css path="themes/default/js/plugins/colorbox/style2/colorbox.css"}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/datepicker.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/datepicker.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/datepicker.inc.tpl	(revision 25596)
@@ -0,0 +1,18 @@
+{combine_script id='datepicker.js' load='footer' require='jquery.ui.datepicker' path='themes/default/js/datepicker.js'}
+
+{assign var="datepicker_language" value="themes/default/js/ui/i18n/jquery.ui.datepicker-`$lang_info.code`.js"}
+
+{if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists}
+{combine_script id="jquery.ui.datepicker-$lang_info.code" load='footer' path=$datepicker_language}
+{/if}
+
+{combine_css path="themes/default/js/ui/theme/jquery.ui.datepicker.css"}
+
+{footer_script require='jquery.ui.datepicker,datepicker.js'}
+function pwg_initialization_datepicker(day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date)
+{ldelim}
+  return pwg_common_initialization_datepicker(
+    "{$ROOT_URL}{$themeconf.admin_icon_dir}/datepicker.png",
+    day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date);
+};
+{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/dbselect.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/dbselect.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/dbselect.inc.tpl	(revision 25596)
@@ -0,0 +1,15 @@
+{footer_script require='jquery.ui.resizable'}{literal}
+jQuery(document).ready(function(){
+	// Resize possible for double select list
+	jQuery(".doubleSelect select.categoryList").resizable({
+		handles: "w,e",
+		animate: true,
+		animateDuration: "slow",
+		animateEasing: "swing",
+		preventDefault: true,
+		preserveCursor: true,
+		autoHide: true,
+		ghost: true
+	});
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/install.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/install.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/install.inc.tpl	(revision 25596)
@@ -0,0 +1,19 @@
+<script type="text/javascript" src="template-common/lib/jquery.packed.js"></script>
+{literal}
+<script type="text/javascript">
+$(function() {
+    $option_selected = $('#dblayer option:selected').attr('value');
+    if ($option_selected=='sqlite' || $option_selected=='pdo-sqlite') {
+       $('input[name=dbhost],input[name=dbuser],input[name=dbpasswd]').parent().parent().hide();
+    }
+    $('#dblayer').change(function() {
+        $db = this;
+        if ($db.value=='sqlite' || $db.value=='pdo-sqlite') {
+           $('input[name=dbhost],input[name=dbuser],input[name=dbpasswd]').parent().parent().hide();
+        } else {
+           $('input[name=dbhost],input[name=dbuser],input[name=dbpasswd]').parent().parent().show();
+        }
+      });
+  });
+</script>
+{/literal}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/resize.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/resize.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/resize.inc.tpl	(revision 25596)
@@ -0,0 +1,16 @@
+{* Resize possible *}
+{footer_script require='jquery.ui.resizable'}{literal}
+  jQuery().ready(function(){
+    // Resize possible for list
+    jQuery(".categoryList").resizable({
+      handles: "all",
+      animate: true,
+      animateDuration: "slow",
+      animateEasing: "swing",
+      preventDefault: true,
+      preserveCursor: true,
+      autoHide: true,
+      ghost: true
+    });
+  });
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/include/tag_selection.inc.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/include/tag_selection.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/include/tag_selection.inc.tpl	(revision 25596)
@@ -0,0 +1,15 @@
+{footer_script require='jquery'}{literal}
+jQuery(document).ready(function(){
+  jQuery(".tagSelection label").click(function () {
+    var parent = jQuery(this).parent('li');
+    var checkbox = jQuery(this).children("input[type=checkbox]");
+
+    if (jQuery(checkbox).is(':checked')) {
+      jQuery(parent).addClass("tagSelected"); 
+    }
+    else {
+      jQuery(parent).removeClass('tagSelected'); 
+    }
+  });
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/install.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/install.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/install.tpl	(revision 25596)
@@ -0,0 +1,311 @@
+<!DOCTYPE html>
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$T_CONTENT_ENCODING}">
+<meta http-equiv="Content-script-type" content="text/javascript">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}{$themeconf.icon_dir}/favicon.ico">
+
+{get_combined_css}
+{foreach from=$themes item=theme}
+{if $theme.load_css}
+{combine_css path="admin/themes/`$theme.id`/theme.css" order=-10}
+{/if}
+{/foreach}
+
+<!--[if IE 7]>
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}admin/themes/default/fix-ie7.css">
+<![endif]-->
+
+<!-- BEGIN get_combined_scripts -->
+{get_combined_scripts load='header'}
+<!-- END get_combined_scripts -->
+
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+{literal}
+<script type="text/javascript">
+$(document).ready(function() {
+  $("a.externalLink").click(function() {
+    window.open($(this).attr("href"));
+    return false;
+  });
+
+  $("#admin_mail").keyup(function() {
+    $(".adminEmail").text($(this).val());
+  });
+});
+</script>
+
+<style type="text/css">
+body {
+  font-size:12px;
+}
+
+#content {
+  width: 800px;
+  margin: auto;
+  text-align: center;
+  padding:0;
+  background-color:transparent !important;
+  border:none;
+}
+
+#theHeader {
+  display: block;
+  background:url("admin/themes/clear/images/piwigo_logo_big.png") no-repeat scroll center 20px transparent;
+  height:100px;
+}
+
+fieldset {
+  margin-top:20px;
+  background-color:#f1f1f1;
+}
+
+legend {
+  font-weight:bold;
+  letter-spacing:2px;
+}
+
+.content h2 {
+  display:block;
+  font-size:20px;
+  text-align:center;
+  /* margin-top:5px; */
+}
+
+table.table2 {
+  width: 100%;
+  border:0;
+}
+
+table.table2 td {
+  text-align: left;
+  padding: 5px 2px;
+}
+
+table.table2 td.fieldname {
+  font-weight:normal;
+}
+
+table.table2 td.fielddesc {
+  padding-left:10px;
+  font-style:italic;
+}
+
+input[type="submit"], input[type="button"], a.bigButton {
+  font-size:14px;
+  font-weight:bold;
+  letter-spacing:2px;
+  border:none;
+  background-color:#666666;
+  color:#fff;
+  padding:5px;
+  -moz-border-radius:5px;
+  -webkit-border-radius:5px;
+  border-radius:5px;
+}
+
+input[type="submit"]:hover, input[type="button"]:hover, a.bigButton:hover {
+  background-color:#ff7700;
+  color:white;
+}
+
+input[type="text"], input[type="password"], select {
+  background-color:#ddd;
+  border:2px solid #ccc;
+  -moz-border-radius:5px;
+  -webkit-border-radius:5px;
+  border-radius:5px;
+  padding:2px;
+}
+
+input[type="text"]:focus, input[type="password"]:focus, select:focus {
+  background-color:#fff;
+  border:2px solid #ff7700;
+}
+
+.sql_content, .infos a {
+  color: #ff3363;
+}
+
+.errors {
+  padding-bottom:5px;
+}
+
+</style>
+{/literal}
+
+{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+
+{footer_script require='jquery.cluetip'}
+jQuery().ready(function(){ldelim}
+	jQuery('.cluetip').cluetip({ldelim}
+		width: 300,
+		splitTitle: '|',
+		positionBy: 'bottomTop'
+	});
+});
+{/footer_script}
+
+
+<title>Piwigo {$RELEASE} - {'Installation'|@translate}</title>
+</head>
+
+<body>
+<div id="the_page">
+<div id="theHeader"></div>
+<div id="content" class="content">
+
+<h2>{'Version'|@translate} {$RELEASE} - {'Installation'|@translate}</h2>
+
+{if isset($config_creation_failed)}
+<div class="errors">
+  <p style="margin-left:30px;">
+    <strong>{'Creation of config file local/config/database.inc.php failed.'|@translate}</strong>
+  </p>
+  <ul>
+    <li>
+      <p>{'You can download the config file and upload it to local/config directory of your installation.'|@translate}</p>
+      <p style="text-align:center">
+          <input type="button" value="{'Download the config file'|@translate}" onClick="window.open('{$config_url}');">
+      </p>
+    </li>
+    <li>
+      <p>{'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'|@translate}</p>
+      <textarea rows="15" cols="70">{$config_file_content}</textarea>
+    </li>
+  </ul>
+</div>
+{/if}
+
+{if isset($errors)}
+<div class="errors">
+  <ul>
+    {foreach from=$errors item=error}
+    <li>{$error}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+{if isset($infos)}
+<div class="infos">
+  <ul>
+    {foreach from=$infos item=info}
+    <li>{$info}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+{if isset($install)}
+<form method="POST" action="{$F_ACTION}" name="install_form">
+
+<fieldset>
+  <legend>{'Basic configuration'|@translate}</legend>
+
+  <table class="table2">
+    <tr>
+      <td style="width: 30%">{'Default gallery language'|@translate}</td>
+      <td>
+    <select name="language" onchange="document.location = 'install.php?language='+this.options[this.selectedIndex].value;">
+    {html_options options=$language_options selected=$language_selection}
+    </select>
+      </td>
+    </tr>
+  </table>
+</fieldset>
+
+<fieldset>
+  <legend>{'Database configuration'|@translate}</legend>
+
+  <table class="table2">
+    <tr>
+      <td style="width: 30%;" class="fieldname">{'Host'|@translate}</td>
+      <td><input type="text" name="dbhost" value="{$F_DB_HOST}"></td>
+      <td class="fielddesc">{'localhost or other, supplied by your host provider'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'User'|@translate}</td>
+      <td><input type="text" name="dbuser" value="{$F_DB_USER}"></td>
+      <td class="fielddesc">{'user login given by your host provider'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Password'|@translate}</td>
+      <td><input type="password" name="dbpasswd" value=""></td>
+      <td class="fielddesc">{'user password given by your host provider'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Database name'|@translate}</td>
+      <td><input type="text" name="dbname" value="{$F_DB_NAME}"></td>
+      <td class="fielddesc">{'also given by your host provider'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Database table prefix'|@translate}</td>
+      <td><input type="text" name="prefix" value="{$F_DB_PREFIX}"></td>
+      <td class="fielddesc">{'database tables names will be prefixed with it (enables you to manage better your tables)'|@translate}</td>
+    </tr>
+  </table>
+
+</fieldset>
+<fieldset>
+  <legend>{'Admin configuration'|@translate}</legend>
+
+  <table class="table2">
+    <tr>
+      <td style="width: 30%;" class="fieldname">{'Username'|@translate}</td>
+      <td><input type="text" name="admin_name" value="{$F_ADMIN}"></td>
+      <td class="fielddesc">{'It will be shown to the visitors. It is necessary for website administration'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Password'|@translate}</td>
+      <td><input type="password" name="admin_pass1" value=""></td>
+      <td class="fielddesc">{'Keep it confidential, it enables you to access administration panel'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Password [confirm]'|@translate}</td>
+      <td><input type="password" name="admin_pass2" value=""></td>
+      <td class="fielddesc">{'verification'|@translate}</td>
+    </tr>
+    <tr>
+      <td class="fieldname">{'Email address'|@translate}</td>
+      <td><input type="text" name="admin_mail" id="admin_mail" value="{$F_ADMIN_EMAIL}"></td>
+      <td class="fielddesc">{'Visitors will be able to contact site administrator with this mail'|@translate}</td>
+    </tr>
+    <tr>
+      <td>{'Options'|@translate}</options>
+      <td colspan="2">
+        <label>
+          <input type="checkbox" name="newsletter_subscribe"{if $F_NEWSLETTER_SUBSCRIBE} checked="checked"{/if}>
+          <span class="cluetip" title="{'Piwigo Announcements Newsletter'|@translate}|{'Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'|@translate|@htmlspecialchars|@nl2br}">{'Subscribe %s to Piwigo Announcements Newsletter'|@translate:$EMAIL}</span>
+        </label>
+        <br>
+        <label>
+          <input type="checkbox" name="send_password_by_mail" checked="checked">
+          {'Send my connection settings by email'|@translate}
+        </label>
+      </td>
+    </tr>
+  </table>
+
+</fieldset>
+
+  <div style="text-align:center; margin:20px 0 10px 0">
+    <input class="submit" type="submit" name="install" value="{'Start Install'|@translate}">
+  </div>
+</form>
+{else}
+<p>
+  <a class="bigButton" href="index.php">{'Visit Gallery'|@translate}</a>
+</p>
+{/if}
+</div> {* content *}
+<div style="text-align: center">{$L_INSTALL_HELP}</div>
+</div> {* the_page *}
+
+<!-- BEGIN get_combined_scripts -->
+{get_combined_scripts load='footer'}
+<!-- END get_combined_scripts -->
+
+</body>
+</html>
Index: /tags/2.6.0RC1/admin/themes/default/template/intro.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/intro.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/intro.tpl	(revision 25596)
@@ -0,0 +1,101 @@
+{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+
+{footer_script require='jquery.cluetip'}
+var piwigo_need_update_msg = '<a href="admin.php?page=updates">{'A new version of Piwigo is available.'|@translate|@escape:"javascript"}</a>';
+var ext_need_update_msg = '<a href="admin.php?page=updates&amp;tab=ext">{'Some upgrades are available for extensions.'|@translate|@escape:"javascript"}</a>';
+
+{literal}
+jQuery().ready(function(){
+	jQuery('.cluetip').cluetip({
+		width: 300,
+		splitTitle: '|',
+		positionBy: 'bottomTop'
+	});
+  jQuery.ajax({
+    type: 'GET',
+    url: 'ws.php',
+    dataType: 'json',
+    data: { method: 'pwg.extensions.checkUpdates', format: 'json' },
+    timeout: 5000,
+    success: function (data) {
+      if (data['stat'] != 'ok')
+        return;
+      piwigo_update = data['result']['piwigo_need_update'];
+      ext_update = data['result']['ext_need_update']
+      if ((piwigo_update || ext_update) && !jQuery(".warnings").is('div'))
+        jQuery("#content").prepend('<div class="warnings"><ul></ul></div>');
+      if (piwigo_update)
+        jQuery(".warnings ul").append('<li>'+piwigo_need_update_msg+'</li>');
+      if (ext_update)
+        jQuery(".warnings ul").append('<li>'+ext_need_update_msg+'</li>');
+    }
+  });
+});
+{/literal}
+{/footer_script}
+
+<h2>{'Piwigo Administration'|@translate}</h2>
+<dl style="padding-top: 30px;">
+  <dt>{'Piwigo version'|@translate}</dt>
+  <dd>
+    <ul>
+      <li><a href="{$PHPWG_URL}" class="externalLink">Piwigo</a> {$PWG_VERSION}</li>
+      <li><a href="{$U_CHECK_UPGRADE}">{'Check for upgrade'|@translate}</a></li>
+{if isset($SUBSCRIBE_BASE_URL)}
+      <li><a href="{$SUBSCRIBE_BASE_URL}{$EMAIL}" class="externalLink cluetip" title="{'Piwigo Announcements Newsletter'|@translate}|{'Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'|@translate|@htmlspecialchars|@nl2br}">{'Subscribe %s to Piwigo Announcements Newsletter'|@translate:$EMAIL}</a></li>
+{/if}
+    </ul>
+  </dd>
+
+  <dt>{'Environment'|@translate}</dt>
+  <dd>
+    <ul>
+      <li>{'Operating system'|@translate}: {$OS}</li>
+      <li>PHP: {$PHP_VERSION} (<a href="{$U_PHPINFO}" class="externalLink">{'Show info'|@translate}</a>)  [{$PHP_DATATIME}]</li>
+      <li>{$DB_ENGINE}: {$DB_VERSION} [{$DB_DATATIME}]</li>
+      {if isset($GRAPHICS_LIBRARY)}
+      <li>{'Graphics Library'|@translate}: {$GRAPHICS_LIBRARY}</li>
+      {/if}
+    </ul>
+  </dd>
+
+  <dt>{'Database'|@translate}</dt>
+  <dd>
+    <ul>
+      <li>
+        {$DB_ELEMENTS}
+        {if isset($first_added)}
+        ({$first_added.DB_DATE})
+        {/if}
+      </li>
+      <li>{$DB_CATEGORIES} ({$DB_IMAGE_CATEGORY})</li>
+      <li>{$DB_TAGS} ({$DB_IMAGE_TAG})</li>
+      <li>{$DB_USERS}</li>
+      <li>{$DB_GROUPS}</li>
+    {if isset($DB_COMMENTS)}
+      <li>
+        {$DB_COMMENTS}{if $NB_PENDING_COMMENTS > 0} (<a href="{$U_COMMENTS}">{'%d waiting for validation'|translate:$NB_PENDING_COMMENTS}</a>){/if}
+      </li>
+    {/if}
+			<li>{$DB_RATES}</li>
+    </ul>
+  </dd>
+</dl>
+
+{if $ENABLE_SYNCHRONIZATION}
+<form name="QuickSynchro" action="{$U_CAT_UPDATE}" method="post" id="QuickSynchro" style="display: block; text-align:right;">
+<div>
+<input type="hidden" name="sync" value="files" checked="checked">
+<input type="hidden" name="display_info" value="1" checked="checked">
+<input type="hidden" name="add_to_caddie" value="1" checked="checked">
+<input type="hidden" name="privacy_level" value="0" checked="checked">
+<input type="hidden" name="sync_meta" checked="checked">
+<input type="hidden" name="simulate" value="0">
+<input type="hidden" name="subcats-included" value="1" checked="checked">
+</div>
+<div class="bigbutton">
+<span class="bigtext">{'Quick Local Synchronization'|@translate}</span>
+<input type="submit" value="{'Quick Local Synchronization'|@translate}" name="submit">
+</div>
+</form>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/languages_installed.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/languages_installed.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/languages_installed.tpl	(revision 25596)
@@ -0,0 +1,46 @@
+<div class="titrePage">
+  <h2>{'Installed Languages'|@translate}</h2>
+</div>
+
+{foreach from=$language_states item=language_state}
+<fieldset>
+  <legend>
+  {if $language_state == 'active'}
+  {'Active Languages'|@translate}
+
+  {elseif $language_state == 'inactive'}
+  {'Inactive Languages'|@translate}
+
+  {/if}
+  </legend>
+  <div class="languageBoxes">
+  {foreach from=$languages item=language}
+    {if $language.state == $language_state}
+  <div class="languageBox{if $language.is_default} languageDefault{/if}">
+    <div class="languageName">{$language.name}{if $language.is_default} <em>({'default'|@translate})</em>{/if}</div>
+    <div class="languageActions">
+      <div>
+      {if $language_state == 'active'}
+        {if $language.deactivable}
+      <a href="{$language.u_action}&amp;action=deactivate" class="tiptip" title="{'Forbid this language to users'|@translate}">{'Deactivate'|@translate}</a>
+        {else}
+      <span title="{$language.deactivate_tooltip}">{'Deactivate'|@translate}</span>
+        {/if}
+
+        {if not $language.is_default}
+      | <a href="{$language.u_action}&amp;action=set_default" class="tiptip" title="{'Set as default language for unregistered and new users'|@translate}">{'Default'|@translate}</a>
+        {/if}
+      {/if}
+
+      {if $language_state == 'inactive'}
+      <a href="{$language.u_action}&amp;action=activate" class="tiptip" title="{'Make this language available to users'|@translate}">{'Activate'|@translate}</a>
+      | <a href="{$language.u_action}&amp;action=delete" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');" class="tiptip" title="{'Delete this language'|@translate}">{'Delete'|@translate}</a>
+      {/if}
+      </div>
+    </div> <!-- languageActions -->
+  </div> <!-- languageBox -->
+    {/if}
+  {/foreach}
+  </div> <!-- languageBoxes -->
+</fieldset>
+{/foreach}
Index: /tags/2.6.0RC1/admin/themes/default/template/languages_new.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/languages_new.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/languages_new.tpl	(revision 25596)
@@ -0,0 +1,41 @@
+{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+
+{footer_script require='jquery.cluetip'}
+jQuery().ready(function(){ldelim}
+	jQuery('.cluetip').cluetip({ldelim}
+		width: 300,
+		splitTitle: '|'
+	});
+});
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Add New Language'|@translate}</h2>
+</div>
+
+{if !empty($languages)}
+<table class="table2 languages">
+<thead>
+  <tr class="throw">
+    <td>{'Language'|@translate}</td>
+    <td>{'Version'|@translate}</td>
+    <td>{'Date'|@translate}</td>
+    <td>{'Author'|@translate}</td>
+    <td>{'Actions'|@translate}</td>
+  </tr>
+</thead>
+{foreach from=$languages item=language name=languages_loop}
+  <tr class="{if $smarty.foreach.languages_loop.index is odd}row1{else}row2{/if}">
+    <td><a href="{$language.EXT_URL}" class="externalLink cluetip" title="{$language.EXT_NAME}|{$language.EXT_DESC|@htmlspecialchars|@nl2br}">{$language.EXT_NAME}</a></td>
+    <td style="text-align:center;"><a href="{$language.EXT_URL}" class="externalLink cluetip" title="{$language.EXT_NAME}|{$language.VER_DESC|@htmlspecialchars|@nl2br}">{$language.VERSION}</a></td>
+    <td>{$language.DATE}</td>
+    <td>{$language.AUTHOR}</td>
+    <td style="text-align:center;"><a href="{$language.URL_INSTALL}">{'Install'|@translate}</a>
+      / <a href="{$language.URL_DOWNLOAD}">{'Download'|@translate}</a>
+    </td>
+  </tr>
+{/foreach}
+</table>
+{else}
+<p>{'There is no other language available.'|@translate}</p>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/maintenance.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/maintenance.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/maintenance.tpl	(revision 25596)
@@ -0,0 +1,41 @@
+<div class="titrePage">
+  <h2>{'Maintenance'|@translate}</h2>
+</div>
+
+<ul>
+{if (isset($U_MAINT_LOCK_GALLERY))}
+  <li><a href="{$U_MAINT_LOCK_GALLERY}" onclick="return confirm('{'A locked gallery is only visible to administrators'|@translate|@escape:'javascript'}');">{'Lock gallery'|@translate}</a></li>
+{else}
+  <li><a href="{$U_MAINT_UNLOCK_GALLERY}">{'Unlock gallery'|@translate}</a></li>
+{/if}
+</ul>
+
+<ul>
+  {foreach from=$advanced_features item=feature}
+    <li><a href="{$feature.URL}">{$feature.CAPTION}</a></li>
+  {/foreach}
+</ul>
+
+<ul>
+	<li><a href="{$U_MAINT_CATEGORIES}">{'Update albums informations'|@translate}</a></li>
+	<li><a href="{$U_MAINT_IMAGES}">{'Update photos information'|@translate}</a></li>
+</ul>
+
+<ul>
+	<li><a href="{$U_MAINT_DATABASE}">{'Repair and optimize database'|@translate}</a></li>
+	<li><a href="{$U_MAINT_C13Y}">{'Reinitialize check integrity'|@translate}</a></li>
+</ul>
+
+<ul>
+	<li><a href="{$U_MAINT_USER_CACHE}">{'Purge user cache'|@translate}</a></li>
+	<li><a href="{$U_MAINT_ORPHAN_TAGS}">{'Delete orphan tags'|@translate}</a></li>
+	<li><a href="{$U_MAINT_HISTORY_DETAIL}" onclick="return confirm('{'Purge history detail'|@translate|@escape:'javascript'}');">{'Purge history detail'|@translate}</a></li>
+	<li><a href="{$U_MAINT_HISTORY_SUMMARY}" onclick="return confirm('{'Purge history summary'|@translate|@escape:'javascript'}');">{'Purge history summary'|@translate}</a></li>
+	<li><a href="{$U_MAINT_SESSIONS}">{'Purge sessions'|@translate}</a></li>
+	<li><a href="{$U_MAINT_FEEDS}">{'Purge never used notification feeds'|@translate}</a></li>
+	<li><a href="{$U_MAINT_SEARCH}"onclick="return confirm('{'Purge search history'|@translate|@escape:'javascript'}');">{'Purge search history'|@translate}</a></li>
+	<li><a href="{$U_MAINT_COMPILED_TEMPLATES}">{'Purge compiled templates'|@translate}</a></li>
+	<li>{'Delete multiple size images'|@translate}: 
+	{foreach from=$purge_derivatives key=name item=url name=loop}{if !$smarty.foreach.loop.first}, {/if}<a href="{$url}"{if $smarty.foreach.loop.first} onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');"{/if}>{$name}</a>{/foreach}
+	</li>
+</ul>
Index: /tags/2.6.0RC1/admin/themes/default/template/menubar.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/menubar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/menubar.tpl	(revision 25596)
@@ -0,0 +1,65 @@
+{footer_script require='jquery.ui.sortable'}{literal}
+jQuery(document).ready(function(){
+	jQuery(".menuPos").hide();
+	jQuery(".drag_button").show();
+	jQuery(".menuLi").css("cursor","move");
+	jQuery(".menuUl").sortable({
+		axis: "y",
+		opacity: 0.8
+	});
+	jQuery("input[name^='hide_']").click(function() {
+		men = this.name.split('hide_');
+		if (this.checked) {
+			jQuery("#menu_"+men[1]).addClass('menuLi_hidden');
+		} else {
+			jQuery("#menu_"+men[1]).removeClass('menuLi_hidden');
+		}
+	});
+	jQuery("#menuOrdering").submit(function(){
+		ar = jQuery('.menuUl').sortable('toArray');
+		for(i=0;i<ar.length;i++) {
+			men = ar[i].split('menu_');
+			document.getElementsByName('pos_' + men[1])[0].value = i+1;
+		}
+	});
+});
+{/literal}{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Menu Management'|@translate}</h2>
+</div>
+
+<form id="menuOrdering" action="{$F_ACTION}" method="post">
+  <ul class="menuUl">
+    {foreach from=$blocks item=block name="block_loop"}
+    <li class="menuLi {if $block.pos<0}menuLi_hidden{/if}" id="menu_{$block.reg->get_id()}">
+      <p>
+        <span>
+          <strong>{'Hide'|@translate} <input type="checkbox" name="hide_{$block.reg->get_id()}" {if $block.pos<0}checked="checked"{/if}></strong>
+        </span>
+
+        <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="drag_button" style="display:none;" alt="{'Drag to re-order'|@translate}" title="{'Drag to re-order'|@translate}">
+        <strong>{$block.reg->get_name()|@translate}</strong> ({$block.reg->get_id()})
+      </p>
+
+      {if $block.reg->get_owner() != 'piwigo'}
+      <p class="menuAuthor">
+        {'Author'|@translate}: <i>{$block.reg->get_owner()}</i>
+      </p>
+      {/if}
+
+      <p class="menuPos">
+        <label>
+          {'Position'|@translate} :
+          <input type="text" size="4" name="pos_{$block.reg->get_id()}" maxlength="4" value="{math equation="abs(pos)" pos=$block.pos}">
+        </label>
+      </p>
+    </li>
+    {/foreach}
+  </ul>
+  <p class="menuSubmit">
+    <input type="submit" name="submit" value="{'Submit'|@translate}">
+    <input type="submit" name="reset" value="{'Reset'|@translate}">
+  </p>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/navigation_bar.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/navigation_bar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/navigation_bar.tpl	(revision 25596)
@@ -0,0 +1,28 @@
+<div class="navigationBar">
+  {if isset($navbar.URL_FIRST)}
+  <a href="{$navbar.URL_FIRST}" rel="first">{'First'|@translate}</a> |
+  <a href="{$navbar.URL_PREV}" rel="prev">{'Previous'|@translate}</a> |
+  {else}
+  {'First'|@translate} |
+  {'Previous'|@translate} |
+  {/if}
+
+  {assign var='prev_page' value=0}
+  {foreach from=$navbar.pages key=page item=url}
+    {if $page > $prev_page+1}...{/if}
+    {if $page == $navbar.CURRENT_PAGE}
+    <span class="pageNumberSelected">{$page}</span>
+    {else}
+    <a href="{$url}">{$page}</a>
+    {/if}
+    {assign var='prev_page' value=$page}
+  {/foreach}
+
+  {if isset($navbar.URL_NEXT)}
+  | <a href="{$navbar.URL_NEXT}" rel="next">{'Next'|@translate}</a>
+  | <a href="{$navbar.URL_LAST}" rel="last">{'Last'|@translate}</a>
+  {else}
+  | {'Next'|@translate}
+  | {'Last'|@translate}
+  {/if}
+</div>
Index: /tags/2.6.0RC1/admin/themes/default/template/notification_by_mail.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/notification_by_mail.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/notification_by_mail.tpl	(revision 25596)
@@ -0,0 +1,136 @@
+
+{include file='include/autosize.inc.tpl'}
+{footer_script}{literal}
+jQuery(document).ready(function(){
+
+	jQuery("#checkAllLink").click(function () {
+		jQuery("#notification_by_mail input[type=checkbox]").prop('checked', true);
+		return false;
+	});
+
+	jQuery("#uncheckAllLink").click(function () {
+		jQuery("#notification_by_mail input[type=checkbox]").prop('checked', false);
+		return false;
+	});
+
+});
+{/literal}{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Send mail to users'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<form method="post" name="notification_by_mail" id="notification_by_mail" action="{$F_ACTION}">
+  {if isset($REPOST_SUBMIT_NAME)}
+  <fieldset>
+    <div class="infos">
+      <input type="submit" value="{'Continue processing treatment'|@translate}" name="{$REPOST_SUBMIT_NAME}">
+    </div>
+  </fieldset>
+  {/if}
+
+  {if isset($param)}
+  <fieldset>
+    <legend>{'Parameters'|@translate}</legend>
+    <table>
+      <tr>
+        <td><label>{'Send mail on HTML format'|@translate}</label></td>
+        <td>
+          <label><input type="radio" name="nbm_send_html_mail" value="true"  {if $param.SEND_HTML_MAIL}checked="checked"{/if}>{'Yes'|@translate}</label>
+          <label><input type="radio" name="nbm_send_html_mail" value="false" {if not $param.SEND_HTML_MAIL}checked="checked"{/if}>{'No'|@translate}</label>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <label for="send_mail_as">{'Send mail as'|@translate}</label>
+          <br><i><small>{'With blank value, gallery title will be used'|@translate}</small></i>
+        </td>
+        <td><input type="text" maxlength="35" size="35" name="nbm_send_mail_as" id="send_mail_as" value="{$param.SEND_MAIL_AS}"></td>
+      </tr>
+      <tr>
+        <td><label>{'Add detailed content'|@translate}</label></td>
+        <td>
+          <label><input type="radio" name="nbm_send_detailed_content" value="true"  {if $param.SEND_DETAILED_CONTENT}checked="checked"{/if}>{'Yes'|@translate}</label>
+          <label><input type="radio" name="nbm_send_detailed_content" value="false" {if not $param.SEND_DETAILED_CONTENT}checked="checked"{/if}>{'No'|@translate}</label>
+        </td>
+      </tr>
+     <tr>
+        <td><label for="complementary_mail_content">{'Complementary mail content'|@translate}</label></td>
+        <td><textarea cols="50" rows="5" name="nbm_complementary_mail_content" id="complementary_mail_content">{$param.COMPLEMENTARY_MAIL_CONTENT}</textarea></td>
+      </tr>
+      <tr>
+        <td>
+          <label>{'Include display of recent photos grouped by dates'|@translate}</label>
+          <br><i><small>{'Available only with HTML format'|@translate}</small></i>
+        </td>
+        <td>
+          <label><input type="radio" name="nbm_send_recent_post_dates" value="true" {if $param.SEND_RECENT_POST_DATES}checked="checked"{/if}>{'Yes'|@translate}</label>
+          <label><input type="radio" name="nbm_send_recent_post_dates" value="false" {if not $param.SEND_RECENT_POST_DATES}checked="checked"{/if}>{'No'|@translate}</label>
+        </td>
+      </tr>
+    </table>
+  </fieldset>
+
+  <p>
+    <input type="submit" value="{'Submit'|@translate}" name="param_submit">
+    <input type="reset" value="{'Reset'|@translate}" name="param_reset">
+  </p>
+  {/if}{* isset $param*}
+
+  {if isset($subscribe)}
+  <fieldset>
+    <legend>{'Subscribe/unsubscribe users'|@translate}</legend>
+    <p><i>{'Warning: subscribing or unsubscribing will send mails to users'|@translate}</i></p>
+    {$DOUBLE_SELECT}
+  </fieldset>
+  {/if}{* isset $subscribe*}
+
+  {if isset($send)}
+    {if empty($send.users)}
+    <p>{'There is no available subscribers to mail.'|@translate}</p>
+    <p>
+    {'Subscribers could be listed (available) only if there is new elements to notify.'|@translate}<br>
+    {'Anyway only webmasters can see this tab and never administrators.'|@translate}
+    </p>
+    {else}
+    <fieldset>
+      <legend>{'Select recipients'|@translate}</legend>
+      <table class="table2">
+        <tr class="throw">
+          <th>{'User'|@translate}</th>
+          <th>{'Email'|@translate}</th>
+          <th>{'Last send'|@translate}</th>
+          <th>{'To send ?'|@translate}</th>
+        </tr>
+        {foreach from=$send.users item=u name=user_loop}
+        <tr class="{if $smarty.foreach.user_loop.index is odd}row1{else}row2{/if}">
+          <td><label for="send_selection-{$u.ID}">{$u.USERNAME}</label></td>
+          <td><label for="send_selection-{$u.ID}">{$u.EMAIL}</label></td>
+          <td><label for="send_selection-{$u.ID}">{$u.LAST_SEND}</label></td>
+          <td><input type="checkbox" name="send_selection[]" value="{$u.ID}" {$u.CHECKED} id="send_selection-{$u.ID}"></td>
+        </tr>
+        {/foreach}
+      </table>
+      <p>
+          <a href="#" id="checkAllLink">{'Check all'|@translate}</a>
+        / <a href="#" id="uncheckAllLink">{'Uncheck all'|@translate}</a>
+      </p>
+    </fieldset>
+
+    <fieldset>
+      <legend>{'Options'|@translate}</legend>
+      <table>
+       <tr>
+          <td><label for="send_customize_mail_content">{'Complementary mail content'|@translate}</label></td>
+          <td><textarea cols="50" rows="5" name="send_customize_mail_content" id="send_customize_mail_content">{$send.CUSTOMIZE_MAIL_CONTENT}</textarea></td>
+        </tr>
+      </table>
+    </fieldset>
+
+    <p>
+      <input type="submit" value="{'Send'|@translate}" name="send_submit">
+    </p>
+    {/if}
+  {/if}{* isset $send*}
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/permalinks.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/permalinks.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/permalinks.tpl	(revision 25596)
@@ -0,0 +1,99 @@
+{footer_script require='jquery.ui.sortable'}{literal}
+jQuery(document).ready(function(){
+  jQuery("#addPermalinkOpen").click(function(){
+    jQuery("#addPermalink").show();
+    jQuery("#showAddPermalink").hide();
+  });
+
+  jQuery("#addPermalinkClose").click(function(){
+    jQuery("#addPermalink").hide();
+    jQuery("#showAddPermalink").show();
+  });
+});
+{/literal}{/footer_script}
+
+{literal}
+<style>
+#showAddPermalink {text-align:left;margin-left:1em;margin-top:0;}
+form fieldset p {margin:0 0 1em 0;}
+form fieldset p.actionButtons {margin-bottom:0}
+</style>
+{/literal}
+
+<div class="titrePage">
+  <h2>{'Permalinks'|@translate}</h2>
+</div>
+
+<p id="showAddPermalink"><a href="#" id="addPermalinkOpen">{'Add/delete a permalink'|@translate}</a></p>
+
+<form method="post" action="" id="addPermalink" style="display:none">
+<fieldset>
+  <legend>{'Add/delete a permalink'|@translate}</legend>
+  <p>
+    <strong>{'Album'|@translate}</strong>
+    <br>
+    <select name="cat_id">
+      <option value="0">------</option>
+      {html_options options=$categories selected=$categories_selected}
+    </select>
+  </p>
+
+  <p>
+    <strong>{'Permalink'|@translate}</strong>
+    <br><input name="permalink">
+  </p>
+
+  <p>
+    <label><input type="checkbox" name="save" checked="checked"> <strong>{'Save to permalink history'|@translate}</strong></label>
+  </p>
+
+  <p class="actionButtons">
+    <input type="submit" class="submit" name="set_permalink" value="{'Submit'|@translate}">
+    <a href="#" id="addPermalinkClose">{'Cancel'|@translate}</a>
+  </p>
+</fieldset>
+</form>
+
+<fieldset>
+  <legend>{'Permalinks'|@translate}</legend>
+<table class="table2" style="margin:0">
+	<tr class="throw">
+		<td>Id {$SORT_ID}</td>
+		<td>{'Album'|@translate} {$SORT_NAME}</td>
+		<td>{'Permalink'|@translate} {$SORT_PERMALINK}</td>
+	</tr>
+{foreach from=$permalinks item=permalink name="permalink_loop"}
+	<tr class="{if $smarty.foreach.permalink_loop.index is odd}row1{else}row2{/if}" style="line-height:1.5em;">
+		<td style="text-align:center;">{$permalink.id}</td>
+		<td>{$permalink.name}</td>
+		<td>{$permalink.permalink}</td>
+	</tr>
+{/foreach}
+</table>
+</fieldset>
+
+<fieldset>
+  <legend>{'Permalink history'|@translate} <a name="old_permalinks"></a></legend>
+<table class="table2" style="margin:0">
+	<tr class="throw">
+		<td>Id {$SORT_OLD_CAT_ID}</td>
+		<td>{'Album'|@translate}</td>
+		<td>{'Permalink'|@translate} {$SORT_OLD_PERMALINK}</td>
+		<td>{'Deleted on'|@translate} {$SORT_OLD_DATE_DELETED}</td>
+		<td>{'Last hit'|@translate} {$SORT_OLD_LAST_HIT}</td>
+		<td>{'Hit'|@translate} {$SORT_OLD_HIT}</td>
+		<td style="width:5px;"></td>
+	</tr>
+{foreach from=$deleted_permalinks item=permalink}
+	<tr style="line-height:1.5em;">
+		<td style="text-align:center;">{$permalink.cat_id}</td>
+		<td>{$permalink.name}</td>
+		<td>{$permalink.permalink}</td>
+		<td>{$permalink.date_deleted}</td>
+		<td>{$permalink.last_hit}</td>
+		<td>{$permalink.hit}</td>
+		<td><a href="{$permalink.U_DELETE}"><img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/delete.png" alt="[{'Delete'|@translate}]"></a></td>
+	</tr>
+{/foreach}
+</table>
+</fieldset>
Index: /tags/2.6.0RC1/admin/themes/default/template/photos_add_applications.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/photos_add_applications.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/photos_add_applications.tpl	(revision 25596)
@@ -0,0 +1,132 @@
+{include file='include/colorbox.inc.tpl'}
+
+{footer_script}{literal}
+jQuery().ready(function(){
+  jQuery(".illustration a").colorbox({rel:'group1'});
+});
+{/literal}{/footer_script}
+
+{html_head}{literal}
+<style type="text/css">
+.illustration {float:left; margin-right:10px;}
+fieldset p {text-align:left;margin-top:0}
+</style>
+{/literal}{/html_head}
+
+<div class="titrePage">
+  <h2>{'Upload Photos'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<fieldset>
+  <legend>pLoader</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/ploader.png" title="pLoader"><img src="http://piwigo.org/screenshots/applications/thumbnail/ploader.jpg"></a></div>
+<p>{'pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'|@translate}</p>
+
+<p>{'Available versions for'|@translate}
+<a href="{$URL_DOWNLOAD_WINDOWS}">Windows</a>,
+<a href="{$URL_DOWNLOAD_MAC}">Mac</a>,
+<a href="{$URL_DOWNLOAD_LINUX}">Linux</a>
+</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>{'Piwigo for iOS (iPhone, iPad, iPod Touch)'|@translate}</legend>
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/piwigo-ios.jpg" title="{'Piwigo for iOS (iPhone, iPad, iPod Touch)'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/piwigo-ios.jpg"></a></div>
+<p>{'<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'|@translate}</p>
+
+<p>
+{'Available on'|@translate} <a target="_blank" href="http://itunes.apple.com/us/app/piwigo/id472225196">Apple AppStore</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>{'Piwigo for Android'|@translate}</legend>
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/piwigo-android.jpg" title="{'Piwigo for Android'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/piwigo-android.jpg"></a></div>
+<p>{'<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'|@translate}</p>
+
+<p>
+{'Available on'|@translate} <a target="_blank" href="https://play.google.com/store/apps/details?id=org.piwigo">Google Play</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>Lightroom</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/lightroom.png" title="{'Piwigo Publish plugin for Lightroom'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/lightroom.jpg"></a></div>
+<p>
+{'Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'|@translate}
+{'The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'|@translate}
+</p>
+
+<p>
+{'Available on'|@translate} <a target="_blank" href="http://alloyphoto.com/plugins/piwigo/">alloyphoto.com</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>Shotwell</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/shotwell.png" title="{'Piwigo publish plugin for Shotwell'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/shotwell.jpg"></a></div>
+<p>{'Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'|@translate}</p>
+
+<p>
+{'On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'|@translate}
+<a href="http://yorba.org/shotwell/" target="_blank">{'Learn more'|@translate}</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>digiKam</legend>
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/digikam.png" title="{'Piwigo publish plugin for digiKam'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/digikam.jpg"></a></div>
+<p>
+{'digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'|@translate}
+{'digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'|@translate}
+</p>
+
+<p>
+{'To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'|@translate}
+<a href="http://digikam.org/" target="_blank">{'Learn more'|@translate}</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>iPhoto</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/iphoto.jpg" title="{'Piwigo export plugin for iPhoto'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/iphoto.jpg"></a></div>
+<p>{'iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'|@translate}</p>
+
+<p>
+<a target="_blank" href="http://piwigo.org/ext/extension_view.php?eid=592">{'Learn more'|@translate}</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>Aperture</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/aperture.png" title="{'Piwigo export plugin for Aperture'|@translate}"><img src="http://piwigo.org/screenshots/applications/thumbnail/aperture.jpg"></a></div>
+<p>
+{'Aperture is a powerful tool to refine images and manage massive libraries on Mac.'|@translate}
+{'Aperture is designed for professional photographers with iPhoto simplicity.'|@translate}
+{'The Piwigo export plugin allows you to create albums and export photos.'|@translate}
+</p>
+
+<p>
+<a target="_blank" href="http://piwigo.org/ext/extension_view.php?eid=598">{'Learn more'|@translate}</a>
+</p>
+</fieldset>
+
+<fieldset>
+  <legend>ReGalAndroid</legend>
+
+<div class="illustration"><a href="http://piwigo.org/screenshots/applications/regalandroid.png" title="ReGalAndroid"><img src="http://piwigo.org/screenshots/applications/thumbnail/regalandroid.jpg"></a></div>
+<p>
+{'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'|@translate}
+{'Features include gallery browsing, album creation and photo upload.'|@translate}
+</p>
+
+<p>
+{'Available on'|@translate} <a target="_blank" href="https://play.google.com/store/apps/details?id=net.dahanne.android.regalandroid">Google Play</a>
+</p>
+</fieldset>
Index: /tags/2.6.0RC1/admin/themes/default/template/photos_add_direct.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/photos_add_direct.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/photos_add_direct.tpl	(revision 25596)
@@ -0,0 +1,361 @@
+{if $upload_mode eq 'multiple'}
+{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js' }
+{combine_script id='jquery.uploadify' load='footer' require='jquery' path='admin/include/uploadify/jquery.uploadify.v3.0.0.min.js' }
+{combine_script id='jquery.ui.progressbar' load='footer'}
+{combine_css path="themes/default/js/plugins/jquery.jgrowl.css"}
+{combine_css path="admin/include/uploadify/uploadify.css"}
+{/if}
+
+{include file='include/colorbox.inc.tpl'}
+{include file='include/add_album.inc.tpl'}
+
+{footer_script}{literal}
+jQuery(document).ready(function(){
+  function checkUploadStart() {
+    var nbErrors = 0;
+    jQuery("#formErrors").hide();
+    jQuery("#formErrors li").hide();
+
+    if (jQuery("#albumSelect option:selected").length == 0) {
+      jQuery("#formErrors #noAlbum").show();
+      nbErrors++;
+    }
+
+    var nbFiles = 0;
+    if (jQuery("#uploadBoxes").size() == 1) {
+      jQuery("input[name^=image_upload]").each(function() {
+        if (jQuery(this).val() != "") {
+          nbFiles++;
+        }
+      });
+    }
+    else {
+      nbFiles = jQuery(".uploadifyQueueItem").size();
+    }
+
+    if (nbFiles == 0) {
+      jQuery("#formErrors #noPhoto").show();
+      nbErrors++;
+    }
+
+    if (nbErrors != 0) {
+      jQuery("#formErrors").show();
+      return false;
+    }
+    else {
+      return true;
+    }
+
+  }
+
+  function humanReadableFileSize(bytes) {
+    var byteSize = Math.round(bytes / 1024 * 100) * .01;
+    var suffix = 'KB';
+
+    if (byteSize > 1000) {
+      byteSize = Math.round(byteSize *.001 * 100) * .01;
+      suffix = 'MB';
+    }
+
+    var sizeParts = byteSize.toString().split('.');
+    if (sizeParts.length > 1) {
+      byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0,2);
+    }
+    else {
+      byteSize = sizeParts[0];
+    }
+
+    return byteSize+suffix;
+  }
+
+  jQuery("#hideErrors").click(function() {
+    jQuery("#formErrors").hide();
+    return false;
+  });
+
+  jQuery("#uploadWarningsSummary a.showInfo").click(function() {
+    jQuery("#uploadWarningsSummary").hide();
+    jQuery("#uploadWarnings").show();
+    return false;
+  });
+
+  jQuery("#showPermissions").click(function() {
+    jQuery(this).parent(".showFieldset").hide();
+    jQuery("#permissions").show();
+    return false;
+  });
+
+{/literal}
+{if $upload_mode eq 'html'}
+{literal}
+  function addUploadBox() {
+    var uploadBox = '<p class="file"><input type="file" size="60" name="image_upload[]"></p>';
+    jQuery(uploadBox).appendTo("#uploadBoxes");
+  }
+
+  addUploadBox();
+
+  jQuery("#addUploadBox A").click(function () {
+    addUploadBox();
+  });
+
+  jQuery("#uploadForm").submit(function() {
+    return checkUploadStart();
+  });
+{/literal}
+{elseif $upload_mode eq 'multiple'}
+
+var uploadify_path = '{$uploadify_path}';
+var upload_id = '{$upload_id}';
+var session_id = '{$session_id}';
+var pwg_token = '{$pwg_token}';
+var buttonText = "{'Select files'|@translate}";
+var sizeLimit = Math.round({$upload_max_filesize} / 1024); /* in KBytes */
+
+{literal}
+  jQuery("#uploadify").uploadify({
+    'uploader'       : uploadify_path + '/uploadify.php',
+    'langFile'       : uploadify_path + '/uploadifyLang_en.js',
+    'swf'            : uploadify_path + '/uploadify.swf',
+    'checkExisting'  : false,
+
+    buttonCursor     : 'pointer',
+    'buttonText'     : buttonText,
+    'width'          : 300,
+    'cancelImage'    : uploadify_path + '/cancel.png',
+    'queueID'        : 'fileQueue',
+    'auto'           : false,
+    'multi'          : true,
+    'fileTypeDesc'   : 'Photo files',
+    'fileTypeExts'   : '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;*.GIF',
+    'fileSizeLimit'  : sizeLimit,
+    'progressData'   : 'percentage',
+    requeueErrors   : false,
+    'onSelect'       : function(event,ID,fileObj) {
+      jQuery("#fileQueue").show();
+    },
+    'onQueueComplete'  : function(stats) {
+      jQuery("input[name=submit_upload]").click();
+    },
+    onUploadError: function (file,errorCode,errorMsg,errorString,swfuploadifyQueue) {
+      /* uploadify calls the onUploadError trigger when the user cancels a file! */
+      /* There no error so we skip it to avoid panic.                            */
+      if ("Cancelled" == errorString) {
+        return false;
+      }
+
+      var msg = file.name+', '+errorString;
+
+      /* Let's put the error message in the form to display once the form is     */
+      /* performed, it makes support easier when user can copy/paste the error   */
+      /* thrown.                                                                 */
+      jQuery("#uploadForm").append('<input type="hidden" name="onUploadError[]" value="'+msg+'">');
+
+      jQuery.jGrowl(
+        '<p></p>onUploadError '+msg,
+        {
+          theme:  'error',
+          header: 'ERROR',
+          life:   4000,
+          sticky: false
+        }
+      );
+
+      return false;
+    },
+    onUploadSuccess: function (file,data,response) {
+      var data = jQuery.parseJSON(data);
+      jQuery("#uploadedPhotos").parent("fieldset").show();
+
+      /* Let's display the thumbnail of the uploaded photo, no need to wait the  */
+      /* end of the queue                                                        */
+      jQuery("#uploadedPhotos").prepend('<img src="'+data.thumbnail_url+'" class="thumbnail"> ');
+    },
+    onUploadComplete: function(file,swfuploadifyQueue) {
+      var max = parseInt(jQuery("#progressMax").text());
+      var next = parseInt(jQuery("#progressCurrent").text())+1;
+      var addToProgressBar = 2;
+      if (next <= max) {
+        jQuery("#progressCurrent").text(next);
+      }
+      else {
+        addToProgressBar = 1;
+      }
+
+      jQuery("#progressbar").progressbar({
+        value: jQuery("#progressbar").progressbar("option", "value") + addToProgressBar
+      });
+    }
+  });
+
+  jQuery("input[type=button]").click(function() {
+    if (!checkUploadStart()) {
+      return false;
+    }
+
+    jQuery("#uploadify").uploadifySettings(
+      'postData',
+      {
+        'category_id' : jQuery("select[name=category] option:selected").val(),
+        'level' : jQuery("select[name=level] option:selected").val(),
+        'upload_id' : upload_id,
+        'session_id' : session_id,
+        'pwg_token' : pwg_token
+      }
+    );
+
+    nb_files = jQuery(".uploadifyQueueItem").size();
+    jQuery("#progressMax").text(nb_files);
+    jQuery("#progressbar").progressbar({max: nb_files*2, value:1});
+    jQuery("#progressCurrent").text(1);
+
+    jQuery("#uploadProgress").show();
+
+    jQuery("#uploadify").uploadifyUpload();
+  });
+
+{/literal}
+{/if}
+});
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Upload Photos'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<div id="photosAddContent">
+
+{if count($setup_errors) > 0}
+<div class="errors">
+  <ul>
+  {foreach from=$setup_errors item=error}
+    <li>{$error}</li>
+  {/foreach}
+  </ul>
+</div>
+{else}
+
+  {if count($setup_warnings) > 0}
+<div class="warnings">
+  <ul>
+    {foreach from=$setup_warnings item=warning}
+    <li>{$warning}</li>
+    {/foreach}
+  </ul>
+  <div class="hideButton" style="text-align:center"><a href="{$hide_warnings_link}">{'Hide'|@translate}</a></div>
+</div>
+  {/if}
+
+
+{if !empty($thumbnails)}
+<fieldset>
+  <legend>{'Uploaded Photos'|@translate}</legend>
+  <div>
+  {foreach from=$thumbnails item=thumbnail}
+    <a href="{$thumbnail.link}" class="externalLink">
+      <img src="{$thumbnail.src}" alt="{$thumbnail.file}" title="{$thumbnail.title}" class="thumbnail">
+    </a>
+  {/foreach}
+  </div>
+  <p id="batchLink"><a href="{$batch_link}">{$batch_label}</a></p>
+</fieldset>
+<p style="margin:10px"><a href="{$another_upload_link}">{'Add another set of photos'|@translate}</a></p>
+{else}
+
+<div id="formErrors" class="errors" style="display:none">
+  <ul>
+    <li id="noAlbum">{'Select an album'|@translate}</li>
+    <li id="noPhoto">{'Select at least one photo'|@translate}</li>
+  </ul>
+  <div class="hideButton" style="text-align:center"><a href="#" id="hideErrors">{'Hide'|@translate}</a></div>
+</div>
+
+
+<form id="uploadForm" enctype="multipart/form-data" method="post" action="{$form_action}" class="properties">
+{if $upload_mode eq 'multiple'}
+    <input name="upload_id" value="{$upload_id}" type="hidden">
+{/if}
+
+    <fieldset>
+      <legend>{'Drop into album'|@translate}</legend>
+
+      <span id="albumSelection"{if count($category_options) == 0} style="display:none"{/if}>
+      <select id="albumSelect" name="category">
+        {html_options options=$category_options selected=$category_options_selected}
+      </select>
+      <br>{'... or '|@translate}</span><a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
+      
+    </fieldset>
+
+    <fieldset>
+      <legend>{'Select files'|@translate}</legend>
+ 
+    {if isset($original_resize_maxheight)}<p class="uploadInfo">{'The picture dimensions will be reduced to %dx%d pixels.'|@translate:$original_resize_maxwidth:$original_resize_maxheight}</p>{/if}
+
+    <p id="uploadWarningsSummary">{$upload_max_filesize_shorthand}B. {$upload_file_types}. {if isset($max_upload_resolution)}{$max_upload_resolution}Mpx{/if} <a class="icon-info-circled-1 showInfo" title="{'Learn more'|@translate}"></a></p>
+
+    <p id="uploadWarnings">
+{'Maximum file size: %sB.'|@translate:$upload_max_filesize_shorthand}
+{'Allowed file types: %s.'|@translate:$upload_file_types}
+  {if isset($max_upload_resolution)}
+{'Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'|@translate:$max_upload_resolution:$max_upload_width:$max_upload_height}
+  {/if}
+    </p>
+
+
+
+{if $upload_mode eq 'html'}
+      <div id="uploadBoxes"></div>
+      <div id="addUploadBox">
+        <a href="javascript:">{'+ Add an upload box'|@translate}</a>
+      </div>
+
+    <p id="uploadModeInfos">{'You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'|@translate:$switch_url}</p>
+
+{elseif $upload_mode eq 'multiple'}
+    <div id="uploadify">You've got a problem with your JavaScript</div> 
+
+    <div id="fileQueue" style="display:none"></div>
+
+    <p id="uploadModeInfos">{'You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'|@translate:$switch_url}</p>
+
+{/if}
+    </fieldset>
+
+    <p class="showFieldset"><a id="showPermissions" href="#">{'Manage Permissions'|@translate}</a></p>
+
+    <fieldset id="permissions" style="display:none">
+      <legend>{'Who can see these photos?'|@translate}</legend>
+
+      <select name="level" size="1">
+        {html_options options=$level_options selected=$level_options_selected}
+      </select>
+    </fieldset>
+
+{if $upload_mode eq 'html'}
+    <p>
+      <input class="submit" type="submit" name="submit_upload" value="{'Start Upload'|@translate}">
+    </p>
+{elseif $upload_mode eq 'multiple'}
+    <p style="margin-bottom:1em">
+      <input class="submit" type="button" value="{'Start Upload'|@translate}">
+      <input type="submit" name="submit_upload" style="display:none">
+    </p>
+{/if}
+</form>
+
+<div id="uploadProgress" style="display:none">
+{'Photo %s of %s'|@translate:'<span id="progressCurrent">1</span>':'<span id="progressMax">10</span>'}
+<br>
+<div id="progressbar"></div>
+</div>
+
+<fieldset style="display:none">
+  <legend>{'Uploaded Photos'|@translate}</legend>
+  <div id="uploadedPhotos"></div>
+</fieldset>
+
+{/if} {* empty($thumbnails) *}
+{/if} {* $setup_errors *}
+
+</div> <!-- photosAddContent -->
Index: /tags/2.6.0RC1/admin/themes/default/template/photos_add_ftp.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/photos_add_ftp.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/photos_add_ftp.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+<div class="titrePage">
+  <h2>{'Upload Photos'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<div id="ftpPage">
+<p><a href="{$U_CAT_UPDATE}">{'Administration'|@translate} &raquo; {'Tools'|@translate} &raquo; {'Synchronize'|@translate}</a></p>
+
+{$FTP_HELP_CONTENT}
+</div>
Index: /tags/2.6.0RC1/admin/themes/default/template/picture_coi.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/picture_coi.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/picture_coi.tpl	(revision 25596)
@@ -0,0 +1,73 @@
+{html_head}
+<link rel="stylesheet" type="text/css" href="themes/default/js/plugins/jquery.Jcrop.css" />
+{/html_head}
+{combine_script id='jquery.jcrop' load='footer' require='jquery' path='themes/default/js/plugins/jquery.Jcrop.min.js'}
+
+<h2>{$TITLE} &#8250; {'Edit photo'|@translate} {$TABSHEET_TITLE}</h2>
+
+<form method="post">
+
+<fieldset>
+<legend>{'Photo sizes with crop'|@translate}</legend>
+{foreach from=$cropped_derivatives item=deriv}
+<img src="{$deriv.U_IMG}" alt="{$ALT}" {$deriv.HTM_SIZE}>
+{/foreach}
+</fieldset>
+
+<fieldset>
+<legend>{'Center of interest'|@translate}</legend>
+<p style="margin:0 0 10px 0;padding:0;">
+{'The center of interest is the most meaningful zone in the photo.'|@translate}
+{'For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'|@translate}
+{'By default, the center of interest is placed in the middle of the photo.'|@translate}
+{'Select a zone with your mouse to define a new center of interest.'|@translate}
+</p>
+<input type="hidden" id="l" name="l" value="{if isset($coi)}{$coi.l}{/if}">
+<input type="hidden" id="t" name="t" value="{if isset($coi)}{$coi.t}{/if}">
+<input type="hidden" id="r" name="r" value="{if isset($coi)}{$coi.r}{/if}">
+<input type="hidden" id="b" name="b" value="{if isset($coi)}{$coi.b}{/if}">
+
+<img id="jcrop" src="{$U_IMG}" alt="{$ALT}">
+
+<p>
+<input type="submit" name="submit" value="{'Submit'|@translate}">
+</p>
+</fieldset>
+</form>
+
+{footer_script}
+{literal}
+function from_coi(f, total) {
+	return f*total;
+}
+
+function to_coi(v, total) {
+	return v/total;
+}
+
+function jOnChange(sel) {
+	var $img = jQuery("#jcrop");
+	jQuery("#l").val( to_coi(sel.x, $img.width()) );
+	jQuery("#t").val( to_coi(sel.y, $img.height()) );
+	jQuery("#r").val( to_coi(sel.x2, $img.width()) );
+	jQuery("#b").val( to_coi(sel.y2, $img.height()) );
+}
+function jOnRelease() {
+	jQuery("#l,#t,#r,#b").val("");
+}
+
+{/literal}
+jQuery("#jcrop").Jcrop( {ldelim}
+	boxWidth: 500, boxHeight: 400,
+	onChange: jOnChange,
+	onRelease: jOnRelease
+	}
+{if isset($coi)}
+	,function() {ldelim}
+		var $img = jQuery("#jcrop");
+		this.animateTo( [from_coi({$coi.l}, $img.width()), from_coi({$coi.t}, $img.height()), from_coi({$coi.r}, $img.width()), from_coi({$coi.b}, $img.height()) ] );
+	}
+{/if}
+);
+{/footer_script}
+
Index: /tags/2.6.0RC1/admin/themes/default/template/picture_modify.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/picture_modify.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/picture_modify.tpl	(revision 25596)
@@ -0,0 +1,157 @@
+{include file='include/autosize.inc.tpl'}
+{include file='include/dbselect.inc.tpl'}
+{include file='include/datepicker.inc.tpl'}
+
+{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
+{combine_css path="themes/default/js/plugins/chosen.css"}
+
+{footer_script}{literal}
+jQuery(document).ready(function() {
+  jQuery(".chzn-select").chosen();
+});
+{/literal}{/footer_script}
+
+{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'}
+{combine_script id='jquery.tokeninput' load='async' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'}
+{footer_script require='jquery.tokeninput'}
+jQuery(document).ready(function() {ldelim}
+  jQuery("#tags").tokenInput(
+    [{foreach from=$tags item=tag name=tags}{ldelim}"name":"{$tag.name|@escape:'javascript'}","id":"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}],
+    {ldelim}
+      hintText: '{'Type in a search term'|@translate}',
+      noResultsText: '{'No results'|@translate}',
+      searchingText: '{'Searching...'|@translate}',
+      newText: ' ({'new'|@translate})',
+      animateDropdown: false,
+      preventDuplicates: true,
+      allowFreeTagging: true
+    }
+  );
+});
+{/footer_script}
+
+{footer_script}
+pwg_initialization_datepicker("#date_creation_day", "#date_creation_month", "#date_creation_year", "#date_creation_linked_date", "#date_creation_action_set");
+{/footer_script}
+
+<h2>{$TITLE} &#8250; {'Edit photo'|@translate} {$TABSHEET_TITLE}</h2>
+
+<form action="{$F_ACTION}" method="post" id="catModify">
+
+  <fieldset>
+    <legend>{'Informations'|@translate}</legend>
+
+    <table>
+
+      <tr>
+        <td id="albumThumbnail">
+          <img src="{$TN_SRC}" alt="{'Thumbnail'|@translate}" class="Thumbnail">
+        </td>
+        <td id="albumLinks" style="width:400px;vertical-align:top;">
+          <ul style="padding-left:15px;margin:0;">
+            <li>{$INTRO.file}</li>
+            <li>{$INTRO.add_date}</li>
+            <li>{$INTRO.added_by}</li>
+            <li>{$INTRO.size}</li>
+            <li>{$INTRO.stats}</li>
+            <li>{$INTRO.id}</li>
+          </ul>
+        </td>
+        <td style="vertical-align:top;">
+          <ul style="padding-left:15px;margin:0;">
+          {if isset($U_JUMPTO) }
+            <li><a href="{$U_JUMPTO}">{'jump to photo'|@translate} →</a></li>
+          {/if}
+          {if !url_is_remote($PATH)}
+            <li><a href="{$U_SYNC}">{'Synchronize metadata'|@translate}</a></li>
+
+            <li><a href="{$U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">{'delete photo'|@translate}</a></li>
+          {/if}
+          </ul>
+        </td>
+      </tr>
+    </table>
+
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Properties'|@translate}</legend>
+
+    <p>
+      <strong>{'Title'|@translate}</strong>
+      <br>
+      <input type="text" class="large" name="name" value="{$NAME|@escape}">
+    </p>
+
+    <p>
+      <strong>{'Author'|@translate}</strong>
+      <br>
+      <input type="text" class="large" name="author" value="{$AUTHOR}">
+    </p>
+
+    <p>
+      <strong>{'Creation date'|@translate}</strong>
+      <br>
+      <select id="date_creation_day" name="date_creation_day">
+        <option value="0">--</option>
+{section name=day start=1 loop=32}
+        <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$DATE_CREATION_DAY_VALUE}selected="selected"{/if}>{$smarty.section.day.index}</option>
+{/section}
+      </select>
+
+      <select id="date_creation_month" name="date_creation_month">
+        {html_options options=$month_list selected=$DATE_CREATION_MONTH_VALUE}
+      </select>
+
+      <input id="date_creation_year" name="date_creation_year" type="text" size="4" maxlength="4" value="{$DATE_CREATION_YEAR_VALUE}">
+      <input id="date_creation_linked_date" name="date_creation_linked_date" type="hidden" size="10" disabled="disabled">
+      <input name="date_creation_time" type="hidden" value="{$DATE_CREATION_TIME_VALUE}">
+      <a href="#" id="unset_date_creation" style="display:none">unset</a>
+    </p>
+
+    <p>
+      <strong>{'Linked albums'|@translate}</strong>
+      <br>
+      <select data-placeholder="Select albums..." class="chzn-select" multiple style="width:700px;" name="associate[]">
+        {html_options options=$associate_options selected=$associate_options_selected}
+      </select>
+    </p>
+
+    <p>
+      <strong>{'Representation of albums'|@translate}</strong>
+      <br>
+      <select data-placeholder="Select albums..." class="chzn-select" multiple style="width:700px;" name="represent[]">
+        {html_options options=$represent_options selected=$represent_options_selected}
+      </select>
+    </p>
+
+    <p>
+      <strong>{'Tags'|@translate}</strong>
+      <br>
+<select id="tags" name="tags">
+{foreach from=$tag_selection item=tag}
+  <option value="{$tag.id}" class="selected">{$tag.name}</option>
+{/foreach}
+</select>
+    </p>
+
+    <p>
+      <strong>{'Description'|@translate}</strong>
+      <br>
+      <textarea name="description" id="description" class="description">{$DESCRIPTION}</textarea>
+    </p>
+
+    <p>
+      <strong>{'Who can see this photo?'|@translate}</strong>
+      <br>
+      <select name="level" size="1">
+        {html_options options=$level_options selected=$level_options_selected}
+      </select>
+   </p>
+
+  <p style="margin:40px 0 0 0">
+    <input class="submit" type="submit" value="{'Save Settings'|@translate}" name="submit">
+  </p>
+</fieldset>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/plugins_installed.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/plugins_installed.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/plugins_installed.tpl	(revision 25596)
@@ -0,0 +1,221 @@
+{combine_script id='jquery.ajaxmanager' load='footer' require='jquery' path='themes/default/js/plugins/jquery.ajaxmanager.js' }
+
+{footer_script require='jquery.ajaxmanager'}
+/* incompatible message */
+var incompatible_msg = '{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'javascript'}';
+var activate_msg = '\n{'Do you want to activate anyway?'|@translate|@escape:'javascript'}';
+
+/* group action */
+var pwg_token = '{$PWG_TOKEN}';
+var confirmMsg  = '{'Are you sure?'|@translate|@escape:'javascript'}';
+{literal}
+var queuedManager = jQuery.manageAjax.create('queued', { 
+  queue: true,  
+  maxRequests: 1
+});
+var nb_plugins = jQuery('div.active').size();
+var done = 0;
+
+jQuery(document).ready(function() {
+  /* group action */
+  jQuery('div.deactivate_all a').click(function() {
+    if (confirm(confirmMsg)) {
+      jQuery('div.active').each(function() {
+        performPluginDeactivate(jQuery(this).attr('id'));
+      });
+    }
+  });
+  function performPluginDeactivate(id) {
+   queuedManager.add({
+      type: 'GET',
+      dataType: 'json',
+      url: 'ws.php',
+      data: { method: 'pwg.plugins.performAction', action: 'deactivate', plugin: id, pwg_token: pwg_token, format: 'json' },
+      success: function(data) {
+        if (data['stat'] == 'ok') jQuery("#"+id).removeClass('active').addClass('inactive');
+        done++;
+        if (done == nb_plugins) location.reload();
+      }
+    });
+  };
+
+  /* incompatible plugins */
+  jQuery(document).ready(function() {
+    jQuery.ajax({
+      method: 'GET',
+      url: 'admin.php',
+      data: { page: 'plugins_installed', incompatible_plugins: true },
+      dataType: 'json',
+      success: function(data) {
+        for (i=0;i<data.length;i++) {
+          {/literal}
+          {if $show_details}
+            jQuery('#'+data[i]+' .pluginBoxNameCell').prepend('<a class="warning" title="'+incompatible_msg+'"></a>')
+          {else}
+            jQuery('#'+data[i]+' .pluginMiniBoxNameCell').prepend('<span class="warning" title="'+incompatible_msg+'"></span>')
+          {/if}
+          {literal}
+          jQuery('#'+data[i]).addClass('incompatible');
+          jQuery('#'+data[i]+' .activate').attr('onClick', 'return confirm(incompatible_msg + activate_msg);');
+        }
+        jQuery('.warning').tipTip({
+          'delay' : 0,
+          'fadeIn' : 200,
+          'fadeOut' : 200,
+          'maxWidth':'250px'
+        });
+      }
+    });
+  });
+  
+  /* TipTips */
+  jQuery('.plugin-restore').tipTip({
+    'delay' : 0,
+    'fadeIn' : 200,
+    'fadeOut' : 200
+  });
+  jQuery('.showInfo').tipTip({
+    'delay' : 0,
+    'fadeIn' : 200,
+    'fadeOut' : 200,
+    'maxWidth':'300px',
+    'keepAlive':true,
+    'activation':'click'
+  });
+});
+{/literal}
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Plugins'|@translate}</h2>
+</div>
+
+<div class="showDetails">
+  {if $show_details}
+  <a href="{$base_url}&amp;show_details=0">{'hide details'|@translate}</a>
+  {else}
+  <a href="{$base_url}&amp;show_details=1">{'show details'|@translate}</a>
+  {/if}
+</div>
+
+{if isset($plugins)}
+
+{assign var='field_name' value='null'} {* <!-- 'counter' for fieldset management --> *}
+{counter start=0 assign=i} {* <!-- counter for 'deactivate all' link --> *}
+{foreach from=$plugins item=plugin name=plugins_loop}
+    
+{if $field_name != $plugin.STATE}
+  {if $field_name != 'null'}
+  </fieldset>
+  {/if}
+  
+  <fieldset class="pluginBoxes">
+    <legend>
+    {if $plugin.STATE == 'active'}
+      {'Active Plugins'|@translate}
+    {elseif $plugin.STATE == 'inactive'}
+      {'Inactive Plugins'|@translate}
+    {elseif $plugin.STATE == 'missing'}
+      {'Missing Plugins'|@translate}
+    {elseif $plugin.STATE == 'merged'}
+      {'Obsolete Plugins'|@translate}
+    {/if}
+    </legend>
+  {assign var='field_name' value=$plugin.STATE}
+{/if}
+  
+  {if not empty($plugin.AUTHOR)}
+    {if not empty($plugin.AUTHOR_URL)}
+      {assign var='author' value="<a href='%s'>%s</a>"|@sprintf:$plugin.AUTHOR_URL:$plugin.AUTHOR}
+    {else}
+      {assign var='author' value='<u>'|cat:$plugin.AUTHOR|cat:'</u>'}
+    {/if}
+  {/if}
+   
+  {if $show_details}
+    <div id="{$plugin.ID}" class="pluginBox {$plugin.STATE}">
+      <table>
+        <tr>
+          <td class="pluginBoxNameCell">
+            {$plugin.NAME}
+          </td>
+          <td>{$plugin.DESC}</td>
+        </tr>
+        <tr class="pluginActions">
+          <td>
+          {if $plugin.STATE == 'active'}
+            <a href="{$plugin.U_ACTION}&amp;action=deactivate">{'Deactivate'|@translate}</a>
+            | <a href="{$plugin.U_ACTION}&amp;action=restore" class="plugin-restore" title="{'Restore default configuration. You will lose your plugin settings!'|@translate}" onclick="return confirm(confirmMsg);">{'Restore'|@translate}</a>
+
+          {elseif $plugin.STATE == 'inactive'}
+            <a href="{$plugin.U_ACTION}&amp;action=activate" class="activate">{'Activate'|@translate}</a>
+            | <a href="{$plugin.U_ACTION}&amp;action=delete" onclick="return confirm(confirmMsg);">{'Delete'|@translate}</a>
+
+          {elseif $plugin.STATE == 'missing'}
+            <a href="{$plugin.U_ACTION}&amp;action=uninstall" onclick="return confirm(confirmMsg);">{'Uninstall'|@translate}</a>
+
+          {elseif $plugin.STATE == 'merged'}
+            <a href="{$plugin.U_ACTION}&amp;action=delete">{'Delete'|@translate}</a>
+          {/if}
+          </td>
+          <td>
+            {'Version'|@translate} {$plugin.VERSION}
+            
+          {if not empty($author)}
+            | {'By %s'|@translate:$author}
+          {/if}
+
+          {if not empty($plugin.VISIT_URL)}
+            | <a class="externalLink" href="{$plugin.VISIT_URL}">{'Visit plugin site'|@translate}</a>
+          {/if}
+          </td>
+        </tr>
+      </table>
+    </div> {*<!-- pluginBox -->*}
+    
+  {else}
+    {if not empty($plugin.VISIT_URL)}
+      {assign var='version' value="<a class='externalLink' href='"|cat:$plugin.VISIT_URL|cat:"'>"|cat:$plugin.VERSION|cat:"</a>"}
+    {else}
+      {assign var='version' value=$plugin.VERSION}
+    {/if}
+          
+    <div id="{$plugin.ID}" class="pluginMiniBox {$plugin.STATE}">
+      <div class="pluginMiniBoxNameCell">
+        {$plugin.NAME}
+        <a class="icon-info-circled-1 showInfo" title="{if !empty($author)}{'By %s'|@translate:$author} | {/if}{'Version'|@translate} {$version}<br/>{$plugin.DESC|@escape:'html'}"></a>
+      </div>
+      <div class="pluginActions">
+        <div>
+        {if $plugin.STATE == 'active'}
+          <a href="{$plugin.U_ACTION}&amp;action=deactivate">{'Deactivate'|@translate}</a>
+          | <a href="{$plugin.U_ACTION}&amp;action=restore" class="plugin-restore" title="{'Restore default configuration. You will lose your plugin settings!'|@translate}" onclick="return confirm(confirmMsg);">{'Restore'|@translate}</a>
+
+        {elseif $plugin.STATE == 'inactive'}
+          <a href="{$plugin.U_ACTION}&amp;action=activate" class="activate">{'Activate'|@translate}</a>
+          | <a href="{$plugin.U_ACTION}&amp;action=delete" onclick="return confirm(confirmMsg);">{'Delete'|@translate}</a>
+
+        {elseif $plugin.STATE == 'missing'}
+          <a href="{$plugin.U_ACTION}&amp;action=uninstall" onclick="return confirm(confirmMsg);">{'Uninstall'|@translate}</a>
+
+        {elseif $plugin.STATE == 'merged'}
+          <a href="{$plugin.U_ACTION}&amp;action=delete">{'Delete'|@translate}</a>
+        {/if}
+        </div>
+      </div>
+    </div> {*<!-- pluginMiniBox -->*}
+    
+  {/if}
+  
+{if $plugin.STATE == 'active'}
+  {counter}
+  {if $active_plugins == $i}
+    <div class="deactivate_all"><a>{'Deactivate all'|@translate}</a></div>
+    {counter}
+  {/if}
+{/if}
+  
+{/foreach}
+  </fieldset>
+
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/plugins_new.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/plugins_new.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/plugins_new.tpl	(revision 25596)
@@ -0,0 +1,91 @@
+{combine_script id='jquery.sort' load='footer' path='themes/default/js/plugins/jquery.sort.js'}
+
+{footer_script require='jquery.ui.effect-blind,jquery.sort'}{literal}
+var sortOrder = 'date';
+var sortPlugins = (function(a, b) {
+  if (sortOrder == 'downloads' || sortOrder == 'revision' || sortOrder == 'date')
+    return parseInt($(a).find('input[name="'+sortOrder+'"]').val())
+      < parseInt($(b).find('input[name="'+sortOrder+'"]').val()) ? 1 : -1;
+  else
+    return $(a).find('input[name="'+sortOrder+'"]').val().toLowerCase()
+      > $(b).find('input[name="'+sortOrder+'"]').val().toLowerCase()  ? 1 : -1;
+});
+
+jQuery(document).ready(function(){
+	jQuery("td[id^='desc_']").click(function() {
+		id = this.id.split('_');
+		nb_lines = jQuery("#bigdesc_"+id[1]).html().split('<br>').length;
+
+		jQuery("#smalldesc_"+id[1]).toggle('blind', 1);
+		if (jQuery(this).hasClass('bigdesc')) {
+			jQuery("#bigdesc_"+id[1]).toggle('blind', 1);
+		} else {
+			jQuery("#bigdesc_"+id[1]).toggle('blind', 50 + (nb_lines * 30));
+		}
+		jQuery(this).toggleClass('bigdesc');
+		return false;
+	});
+
+  jQuery('select[name="selectOrder"]').change(function() {
+    sortOrder = this.value;
+    $('.pluginBox').sortElements(sortPlugins);
+    $.get("admin.php?plugins_new_order="+sortOrder);
+  });
+});
+{/literal}{/footer_script}
+
+<div class="titrePage">
+<span class="sort">
+{'Sort order'|@translate} : 
+{html_options name="selectOrder" options=$order_options selected=$order_selected}
+</span>
+  <h2>{'Plugins'|@translate}</h2>
+</div>
+
+{if not empty($plugins)}
+<div id="availablePlugins">
+<fieldset>
+<legend></legend>
+{foreach from=$plugins item=plugin name=plugins_loop}
+<div class="pluginBox" id="plugin_{$plugin.ID}">
+<input type="hidden" name="date" value="{$plugin.ID}">
+<input type="hidden" name="name" value="{$plugin.EXT_NAME}">
+<input type="hidden" name="revision" value="{$plugin.REVISION_DATE}">
+<input type="hidden" name="downloads" value="{$plugin.DOWNLOADS}">
+<input type="hidden" name="author" value="{$plugin.AUTHOR}">
+  <table>
+    <tr>
+      <td class="pluginBoxNameCell">{$plugin.EXT_NAME}</td>
+{if $plugin.BIG_DESC != $plugin.SMALL_DESC}
+      <td id="desc_{$plugin.ID}" class="pluginDesc">
+        <span id="smalldesc_{$plugin.ID}">
+          <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/plus.gif" alt="">{$plugin.SMALL_DESC}...
+        </span>
+        <span id="bigdesc_{$plugin.ID}" style="display:none;">
+          <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/minus.gif" alt="">{$plugin.BIG_DESC|@nl2br}<br>&nbsp;
+        </span>
+      </td>
+{else}
+      <td>{$plugin.BIG_DESC|@nl2br}</td>
+{/if}
+    </tr>
+    <tr>
+      <td>
+        <a href="{$plugin.URL_INSTALL}" onclick="return confirm('{'Are you sure you want to install this plugin?'|@translate|@escape:javascript}');">{'Install'|@translate}</a>
+        |  <a href="{$plugin.URL_DOWNLOAD}">{'Download'|@translate}</a>
+      </td>
+      <td>
+        <em>{'Downloads'|@translate}: {$plugin.DOWNLOADS}</em>
+        {'Version'|@translate} {$plugin.VERSION}
+        | {'By %s'|@translate:$plugin.AUTHOR}
+        | <a class="externalLink" href="{$plugin.EXT_URL}">{'Visit plugin site'|@translate}</a>
+      </td>
+    </tr>
+  </table>
+</div>
+{/foreach}
+</fieldset>
+</div>
+{else}
+<p>{'There is no other plugin available.'|@translate}</p>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/popuphelp.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/popuphelp.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/popuphelp.tpl	(revision 25596)
@@ -0,0 +1,12 @@
+<div id="content" class="content">
+{$HELP_CONTENT}
+</div> <!-- content -->
+
+<ul class="categoryActions">
+  <li>
+    <a href="#" onclick="window.close();" title="{'Close this window'|@translate}">
+      <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/exit.png" alt="exit">
+    </a>
+  </li>
+</ul>
+
Index: /tags/2.6.0RC1/admin/themes/default/template/profile.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/profile.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/profile.tpl	(revision 25596)
@@ -0,0 +1,5 @@
+<div class="titrePage">
+  <h2>{'Profile'|@translate}</h2>
+</div>
+
+{$PROFILE_CONTENT}
Index: /tags/2.6.0RC1/admin/themes/default/template/profile_content.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/profile_content.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/profile_content.tpl	(revision 25596)
@@ -0,0 +1,93 @@
+<form method="post" name="profile" action="{$F_ACTION}" id="profile" class="properties">
+
+  <fieldset>
+    <legend>{'Registration'|@translate}</legend>
+    <input type="hidden" name="redirect" value="{$REDIRECT}">
+    <ul>
+      <li>
+        <span class="property">
+          <label for="username">{'Username'|@translate}</label>
+        </span>
+      {if not $SPECIAL_USER}
+        <input type="text" name="username" id="username" value="{$USERNAME}">
+      {else}
+        {$USERNAME}
+      {/if}
+      </li>
+    {if not $SPECIAL_USER} {* can modify password + email*}
+      <li>
+        <span class="property">
+          <label for="mail_address">{'Email address'|@translate}</label>
+        </span>
+        <input type="text" name="mail_address" id="mail_address" value="{$EMAIL}">
+      </li>
+      <li>
+        <span class="property">
+          <label for="use_new_pwd">{'New password'|@translate}</label>
+        </span>
+        <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+      </li>
+      <li>
+        <span class="property">
+          <label for="passwordConf">{'Confirm Password'|@translate}</label>
+        </span>
+        <input type="password" name="passwordConf" id="passwordConf" value="">
+      </li>
+    {/if}
+    </ul>
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Preferences'|@translate}</legend>
+
+    <ul>
+      <li>
+        <span class="property">
+          <label for="nb_image_page">{'Number of photos per page'|@translate}</label>
+        </span>
+        <input type="text" size="4" maxlength="3" name="nb_image_page" id="nb_image_page" value="{$NB_IMAGE_PAGE}">
+      </li>
+    {if not $SPECIAL_USER}
+      <li>
+        <span class="property">
+          <label for="template">{'Theme'|@translate}</label>
+        </span>
+        {html_options id=template name=theme options=$template_options selected=$template_selection}
+      </li>
+      <li>
+        <span class="property">
+          <label for="language">{'Language'|@translate}</label>
+        </span>
+        {html_options id=language name=language options=$language_options selected=$language_selection}
+      </li>
+    {/if}
+      <li>
+        <span class="property">
+          <label for="recent_period">{'Recent period'|@translate}</label>
+        </span>
+        <input type="text" size="3" maxlength="2" name="recent_period" id="recent_period" value="{$RECENT_PERIOD}">
+      </li>
+      <li>
+        <span class="property">{'Expand all albums'|@translate}</span>
+        {html_radios name='expand' options=$radio_options selected=$EXPAND}
+      </li>
+    {if $ACTIVATE_COMMENTS}
+      <li>
+        <span class="property">{'Show number of comments'|@translate}</span>
+        {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS}
+      </li>
+    {/if}
+      <li>
+        <span class="property">{'Show number of hits'|@translate}</span>
+        {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS}
+      </li>
+    </ul>
+  </fieldset>
+
+  <p class="bottomButtons">
+    <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+    <input class="submit" type="submit" name="validate" value="{'Submit'|@translate}">
+    <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+  </p>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/rating.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/rating.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/rating.tpl	(revision 25596)
@@ -0,0 +1,67 @@
+<h2>{$NB_ELEMENTS} {'Photos'|@translate}</h2>
+
+<form action="{$F_ACTION}" method="GET" class="filter">
+  <fieldset>
+    <legend>{'Filter'|@translate}</legend>
+
+    <label>
+      {'Sort by'|@translate}
+      <select name="order_by">
+        {html_options options=$order_by_options selected=$order_by_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Users'|@translate}
+      <select name="users">
+        {html_options options=$user_options selected=$user_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Number of items'|@translate}
+      <input type="text" name="display" size="2" value="{$DISPLAY}">
+    </label>
+
+    <label>
+      &nbsp;
+    <input class="submit" type="submit" value="{'Submit'|@translate}">
+    </label>
+    <input type="hidden" name="page" value="rating">
+  </fieldset>
+</form>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+<table width="99%">
+<tr class="throw">
+  <td>{'File'|@translate}</td>
+  <td>{'Number of rates'|@translate}</td>
+	<td>{'Rating score'|@translate}</td>
+  <td>{'Average rate'|@translate}</td>
+  <td>{'Sum of rates'|@translate}</td>
+  <td>{'Rate'|@translate}</td>
+  <td>{'Username'|@translate}</td>
+  <td>{'Rate date'|@translate}</td>
+  <td></td>
+</tr>
+{foreach from=$images item=image name=image}
+<tr valign="top" class="{if $smarty.foreach.image.index is odd}row1{else}row2{/if}">
+	<td rowspan="{$image.NB_RATES_TOTAL+1}"><a href="{$image.U_URL}"><img src="{$image.U_THUMB}" alt="{$image.FILE}" title="{$image.FILE}"></a></td>
+	<td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.NB_RATES}/{$image.NB_RATES_TOTAL}</strong></td>
+	<td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.SCORE_RATE}</strong></td>
+	<td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.AVG_RATE}</strong></td>
+	<td rowspan="{$image.NB_RATES_TOTAL+1}" style="border-right: 1px solid;" ><strong>{$image.SUM_RATE}</strong></td>
+</tr>
+{foreach from=$image.rates item=rate name=rate}
+<tr class="{if ($smarty.foreach.image.index+$smarty.foreach.rate.index) is odd}row1{else}row2{/if}">
+	<td>{$rate.RATE}</td>
+	<td><b>{$rate.USER}</b></td>
+	<td>{$rate.DATE}</td>
+	<td><a href="{$rate.U_DELETE}"><img src="{$themeconf.admin_icon_dir}/delete.png" alt="[{'Delete'|@translate}]"></a></td>
+</tr>
+{/foreach} {*rates*}
+{/foreach} {*images*}
+</table>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/rating_user.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/rating_user.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/rating_user.tpl	(revision 25596)
@@ -0,0 +1,77 @@
+<h2>{$ratings|@count} {'Users'|@translate}</h2>
+
+<form action="{$F_ACTION}" method="GET">
+<fieldset>
+	<label>{'Sort by'|@translate}
+		<select name="order_by">
+			{html_options options=$order_by_options selected=$order_by_options_selected}
+		</select>
+	</label>
+	<label>{'Number of rates'|@translate}&gt;
+	<input type="text" size="5" name="f_min_rates" value="{$F_MIN_RATES}">
+	</label>
+	<input type="submit" value="{'Submit'|@translate}">
+	</label>
+	<input type="hidden" name="page" value="rating_user">
+</fieldset>
+</form>
+
+{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+{footer_script}{literal}
+function del(elt,uid,aid)
+{
+	if (!confirm({/literal}'{'Are you sure?'|@translate|@escape:'javascript'}'{literal}))
+		return false;
+	var tr = elt;
+	while ( tr.nodeName != "TR") tr = tr.parentNode;
+	tr = jQuery(tr).fadeTo(1000, 0.4);
+	(new PwgWS({/literal}'{$ROOT_URL|@escape:javascript}'{literal})).callService(
+		'pwg.rates.delete', {user_id:uid, anonymous_id:aid},
+		{
+			method: 'POST',
+			onFailure: function(num, text) { tr.stop(); tr.fadeTo(0,1); alert(num + " " + text); },
+			onSuccess: function(result) { if (result) {tr.remove();} else alert(result); }
+		}
+	);
+	return false;
+}
+{/literal}{/footer_script}
+<table>
+<tr class="throw">
+	<td>{'Username'|@translate}</td>
+	<td>{'Number of rates'|@translate}</td>
+	<td>{'Average rate'|@translate}</td>
+	<td>{'Variation'|@translate}</td>
+	<td>{'Consensus deviation'|@translate|@replace:' ':'<br>'}</td>
+{foreach from=$available_rates item=rate}
+	<td>{$rate}</td>
+{/foreach}
+	<td></td>
+</tr>
+{foreach from=$ratings item=rating key=user}
+<tr>
+	<td>{$user}</td>
+	<td>{$rating.count}</td>
+	<td>{$rating.avg|@number_format:2}</td>
+	<td>{$rating.cv|@number_format:3}</td>
+	<td>{$rating.cd|@number_format:3}</td>
+	{foreach from=$rating.rates item=rates key=rate}
+	<td>{if !empty($rates)}
+		{capture assign=rate_over}{foreach from=$rates item=rate_arr}<img src="{$image_urls[$rate_arr.id].tn}" alt="thumb-{$rate_arr.id}" title="{$rate_arr.date}"></img>
+		{/foreach}{/capture}
+		<a class="cluetip" title="|{$rate_over|@htmlspecialchars}">{$rates|@count}</a>
+		{/if}</td>
+	{/foreach}
+	<td><a onclick="return del(this,{$rating.uid},'{$rating.aid}');"><img src="{$themeconf.admin_icon_dir}/delete.png" alt="[{'Delete'|@translate}]"></a></td>
+</tr>
+{/foreach}
+</table>
+
+{combine_script id='jquery.cluetip' load='footer' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+{footer_script require='jquery.cluetip'}
+jQuery(document).ready(function(){ldelim}
+	jQuery('.cluetip').cluetip({ldelim}
+		width: {$TN_WIDTH}, showTitle:false, splitTitle: '|'
+	});
+})
+{/footer_script}
Index: /tags/2.6.0RC1/admin/themes/default/template/site_manager.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/site_manager.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/site_manager.tpl	(revision 25596)
@@ -0,0 +1,67 @@
+{footer_script}{literal}
+jQuery(document).ready(function(){
+  jQuery("#showCreateSite a").click(function(){
+    jQuery("#showCreateSite").hide();
+    jQuery("#createSite").show();
+  });
+});
+{/literal}{/footer_script}
+
+
+<div class="titrePage">
+  <h2>{'Site manager'|@translate}</h2>
+</div>
+
+{if not empty($remote_output)}
+<div class="remoteOutput">
+  <ul>
+    {foreach from=$remote_output item=remote_line}
+    <li class="{$remote_line.CLASS}">{$remote_line.CONTENT}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+{if not empty($sites)}
+<table class="table2">
+	<tr class="throw">
+		<td>{'Directory'|@translate}</td>
+		<td>{'Actions'|@translate}</td>
+	</tr>
+  {foreach from=$sites item=site name=site}
+  <tr style="text-align:left" class="{if $smarty.foreach.site.index is odd}row1{else}row2{/if}"><td>
+    <a href="{$site.NAME}">{$site.NAME}</a><br>({$site.TYPE}, {$site.CATEGORIES} {'Albums'|@translate}, {$pwg->l10n_dec('%d photo','%d photos',$site.IMAGES)})
+  </td><td>
+    [<a href="{$site.U_SYNCHRONIZE}" title="{'update the database from files'|@translate}">{'Synchronize'|@translate}</a>]
+    {if isset($site.U_DELETE)}
+      [<a href="{$site.U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|escape:'javascript'}');"
+                title="{'delete this site and all its attached elements'|@translate}">{'delete'|@translate}</a>]
+    {/if}
+    {if not empty($site.plugin_links)}
+        <br>
+      {foreach from=$site.plugin_links item=plugin_link}
+        [<a href="{$plugin_link.U_HREF}" title='{$plugin_link.U_HINT}'>{$plugin_link.U_CAPTION}</a>]
+      {/foreach}
+    {/if}
+  </td></tr>
+  {/foreach}
+</table>
+{/if}
+
+<p id="showCreateSite" style="text-align:left;margin-left:1em;">
+  <a href="#">{'create a new site'|@translate}</a>
+</p>
+
+<form action="{$F_ACTION}" method="post" id="createSite" style="display:none">
+  <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+  <fieldset>
+    <legend>{'create a new site'|@translate}</legend>
+
+  <p style="margin-top:0;"><strong>{'Directory'|@translate}</strong>
+    <br><input type="text" name="galleries_url" id="galleries_url">
+  </p>
+
+  <p class="actionButtons">
+    <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}">
+  </p>
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/site_update.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/site_update.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/site_update.tpl	(revision 25596)
@@ -0,0 +1,116 @@
+
+{include file='include/resize.inc.tpl'}
+
+<div class="titrePage">
+  <h2>{'Database synchronization with files'|@translate}: <a href="{$SITE_URL}">{$SITE_URL}</a></h2>
+</div>
+
+{if isset($update_result)}
+<h3>{$L_RESULT_UPDATE}</h3>
+<ul>
+  <li class="update_summary_new">{$update_result.NB_NEW_CATEGORIES} {'albums added in the database'|@translate}</li>
+  <li class="update_summary_new">{$update_result.NB_NEW_ELEMENTS} {'photos added in the database'|@translate}</li>
+  <li class="update_summary_del">{$update_result.NB_DEL_CATEGORIES} {'albums deleted in the database'|@translate}</li>
+  <li class="update_summary_del">{$update_result.NB_DEL_ELEMENTS} {'photos deleted from the database'|@translate}</li>
+  <li>{$update_result.NB_UPD_ELEMENTS} {'photos updated in the database'|@translate}</li>
+  <li class="update_summary_err">{$update_result.NB_ERRORS} {'errors during synchronization'|@translate}</li>
+</ul>
+{/if}
+
+{if isset($metadata_result)}
+<h3>{$L_RESULT_METADATA}</h3>
+<ul>
+  <li>{$metadata_result.NB_ELEMENTS_DONE} {'photos informations synchronized with files metadata'|@translate}</li>
+  <li>{$metadata_result.NB_ELEMENTS_CANDIDATES} {'photos candidates for metadata synchronization'|@translate}</li>
+  <li>{'Used metadata'|@translate} : {$METADATA_LIST}</li>
+</ul>
+{/if}
+
+
+{if not empty($sync_errors)}
+<h3>{'Error list'|@translate}</h3>
+<div class="errors">
+<ul>
+  {foreach from=$sync_errors item=error}
+  <li>[{$error.ELEMENT}] {$error.LABEL}</li>
+  {/foreach}
+</ul>
+</div>
+<h3>{'Errors caption'|@translate}</h3>
+<ul>
+  {foreach from=$sync_error_captions item=caption}
+  <li><strong>{$caption.TYPE}</strong>: {$caption.LABEL}</li>
+  {/foreach}
+</ul>
+{/if}
+
+{if not empty($sync_infos)}
+<h3>{'Detailed informations'|@translate}</h3>
+<div class="infos">
+<ul>
+  {foreach from=$sync_infos item=info}
+  <li>[{$info.ELEMENT}] {$info.LABEL}</li>
+  {/foreach}
+</ul>
+</div>
+{/if}
+
+{if isset($introduction)}
+<h4>{'Choose an option'|@translate}</h4>
+<form action="" method="post" id="update">
+
+	<fieldset id="syncFiles">
+		<legend>{'synchronize files structure with database'|@translate}</legend>
+		<ul>
+			<li><label><input type="radio" name="sync" value="" {if empty($introduction.sync)}checked="checked"{/if}> {'nothing'|@translate}</label></li>
+			<li><label><input type="radio" name="sync" value="dirs" {if 'dirs'==$introduction.sync}checked="checked"{/if}> {'only directories'|@translate}</label></li>
+
+			<li><label><input type="radio" name="sync" value="files" {if 'files'==$introduction.sync}checked="checked"{/if}> {'directories + files'|@translate}</label>
+				<ul style="padding-left:3em">
+					<li><label><input type="checkbox" name="display_info" value="1" {if $introduction.display_info}checked="checked"{/if}> {'display maximum informations (added albums and photos, deleted albums and photos)'|@translate}</label></li>
+					<li><label><input type="checkbox" name="add_to_caddie" value="1" {if $introduction.add_to_caddie}checked="checked"{/if}> {'add new photos to caddie'|@translate}</label></li>
+					<li><label>{'Who can see these photos?'|@translate} <select name="privacy_level">{html_options options=$introduction.privacy_level_options selected=$introduction.privacy_level_selected}</select></label></li>
+				</ul>
+			</li>
+		</ul>
+	</fieldset>
+
+	<fieldset id="syncMetadata">
+		<legend>{'synchronize files metadata with database photos informations'|@translate}</legend>
+		<label><input type="checkbox" name="sync_meta" {if $introduction.sync_meta}checked="checked"{/if}> {'Synchronize metadata'|@translate} ({$METADATA_LIST})</label>
+		<ul style="padding-left:3em">
+	  		<li>
+	  			<label><input type="checkbox" name="meta_all" {if $introduction.meta_all}checked="checked"{/if}> {'even already synchronized photos'|@translate}</label>
+	  		</li>
+	  		<li>
+	  			<label><input type="checkbox" name="meta_empty_overrides" {if $introduction.meta_empty_overrides}checked="checked"{/if}> {'overrides existing values with empty ones'|@translate}</label>
+	  		</li>
+		</ul>
+	</fieldset>
+
+  <fieldset id="syncSimulate">
+    <legend>{'Simulation'|@translate}</legend>
+    <ul><li><label><input type="checkbox" name="simulate" value="1" checked="checked"> {'only perform a simulation (no change in database will be made)'|@translate}</label></li></ul>
+  </fieldset>
+
+  <fieldset id="catSubset">
+    <legend>{'reduce to single existing albums'|@translate}</legend>
+    <ul>
+    <li>
+    <select class="categoryList" name="cat" size="10">
+      {html_options options=$category_options selected=$category_options_selected}
+    </select>
+    </li>
+
+    <li><label><input type="checkbox" name="subcats-included" value="1" {if $introduction.subcats_included}checked="checked"{/if}> {'Search in sub-albums'|@translate}</label></li>
+    </ul>
+  </fieldset>
+
+  <p class="bottomButtons">
+    <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit">
+    <input class="submit" type="reset"  value="{'Reset'|@translate}"  name="reset">
+  </p>
+</form>
+{/if}{*isset $introduction*}
+
+<p><a href="{$U_SITE_MANAGER}">{'Site manager'|@translate}</a></p>
Index: /tags/2.6.0RC1/admin/themes/default/template/stats.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/stats.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/stats.tpl	(revision 25596)
@@ -0,0 +1,25 @@
+
+<div class="titrePage">
+  <h2>{'History'|@translate} {$TABSHEET_TITLE}</h2>
+</div>
+
+<h3>{$L_STAT_TITLE}</h3>
+
+<table class="table2" id="dailyStats">
+	<tr class="throw">
+		<th>{$PERIOD_LABEL}</th>
+		<th>{'Pages seen'|@translate}</th>
+		<th></th>
+	</tr>
+
+{if not empty($statrows)}
+{foreach from=$statrows item=row}
+	<tr>
+		<td style="white-space: nowrap">{$row.VALUE}</td>
+		<td class="number">{$row.PAGES}</td>
+		<td><div class="statBar" style="width:{$row.WIDTH}px"></div></td>
+	</tr>
+{/foreach}
+{/if}
+
+</table>
Index: /tags/2.6.0RC1/admin/themes/default/template/tabsheet.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/tabsheet.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/tabsheet.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+{if isset($tabsheet) and count($tabsheet)}
+<div id="tabsheet">
+<ul class="tabsheet">
+{foreach from=$tabsheet key=name item=sheet}
+  <li class="{if ($name == $tabsheet_selected)}selected_tab{else}normal_tab{/if}">
+    <a href="{$sheet.url}"><span>{$sheet.caption}</span></a>
+  </li>
+{/foreach}
+</ul>
+</div>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/tags.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/tags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/tags.tpl	(revision 25596)
@@ -0,0 +1,171 @@
+{include file='include/tag_selection.inc.tpl'}
+
+{footer_script}{literal}
+jQuery(document).ready(function(){
+  function displayDeletionWarnings() {
+    jQuery(".warningDeletion").show();
+    jQuery("input[name=destination_tag]:checked").parent("label").children(".warningDeletion").hide();
+  }
+
+  displayDeletionWarnings();
+
+  jQuery("#mergeTags label").click(function() {
+    displayDeletionWarnings();
+  });
+
+  jQuery("input[name=merge]").click(function() {
+    if (jQuery("ul.tagSelection input[type=checkbox]:checked").length < 2) {
+      alert("{/literal}{'Select at least two tags for merging'|@translate}{literal}");
+      return false;
+    }
+  });
+});
+{/literal}{/footer_script}
+
+
+<div class="titrePage">
+  <h2>{'Manage tags'|@translate}</h2>
+</div>
+
+<form action="{$F_ACTION}" method="post">
+  {if isset($EDIT_TAGS_LIST)}
+  <fieldset>
+    <legend>{'Edit tags'|@translate}</legend>
+    <input type="hidden" name="edit_list" value="{$EDIT_TAGS_LIST}">
+    <table class="table2">
+      <tr class="throw">
+        <th>{'Current name'|@translate}</th>
+        <th>{'New name'|@translate}</th>
+      </tr>
+      {foreach from=$tags item=tag}
+      <tr>
+        <td>{$tag.NAME}</td>
+        <td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" size="50"></td>
+      </tr>
+      {/foreach}
+    </table>
+
+    <p>
+      <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+      <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}">
+      <input class="submit" type="reset" value="{'Reset'|@translate}">
+    </p>
+  </fieldset>
+  {/if}
+  {if isset($DUPLIC_TAGS_LIST)}
+  <fieldset>
+    <legend>{'Edit tags'|@translate}</legend>
+    <input type="hidden" name="edit_list" value="{$DUPLIC_TAGS_LIST}">
+    <table class="table2">
+      <tr class="throw">
+        <th>{'Source tag'|@translate}</th>
+        <th>{'Name of the duplicate'|@translate}</th>
+      </tr>
+      {foreach from=$tags item=tag}
+      <tr>
+        <td>{$tag.NAME}</td>
+        <td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" size="50"></td>
+      </tr>
+      {/foreach}
+    </table>
+
+    <p>
+      <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+      <input class="submit" type="submit" name="duplic_submit" value="{'Submit'|@translate}">
+      <input class="submit" type="reset" value="{'Reset'|@translate}">
+    </p>
+  </fieldset>
+  {/if}
+
+  {if isset($MERGE_TAGS_LIST)}
+  <input type="hidden" name="merge_list" value="{$MERGE_TAGS_LIST}">
+
+  <fieldset id="mergeTags">
+    <legend>{'Merge tags'|@translate}</legend>
+    {'Select the destination tag'|@translate}<br><br>
+    {foreach from=$tags item=tag name=tagloop}
+    <label><input type="radio" name="destination_tag" value="{$tag.ID}"{if $smarty.foreach.tagloop.index == 0} checked="checked"{/if}> {$tag.NAME}<span class="warningDeletion"> {'(this tag will be deleted)'|@translate}</span></label><br>
+    {/foreach}
+    <br><input type="submit" name="confirm_merge" value="{'Confirm merge'|@translate}">
+  </fieldset>
+  {/if}
+
+  <fieldset>
+    <legend>{'Add a tag'|@translate}</legend>
+
+    <label>
+      {'New tag'|@translate}
+      <input type="text" name="add_tag" size="50">
+    </label>
+
+    <p><input class="submit" type="submit" name="add" value="{'Submit'|@translate}"></p>
+  </fieldset>
+
+  <fieldset>
+    <legend>{'Tag selection'|@translate}</legend>
+{html_style}
+.showInfo{ldelim}text-indent:5px}
+{/html_style}
+{footer_script}{literal}
+jQuery('.showInfo').tipTip({
+    'delay' : 0,
+    'fadeIn' : 200,
+    'fadeOut' : 200,
+    'maxWidth':'300px',
+    'keepAlive':true,
+    'activation':'click'
+  });
+{/literal}{/footer_script}
+{if count($all_tags)}
+<div><label><span class="icon-filter" style="visibility:hidden" id="filterIcon"></span>{'Search'|@translate}: <input id="searchInput" type="text" size="12"></label></div>
+{footer_script}{literal}
+$("#searchInput").on( "keydown", function() {
+	var $this = $(this),
+		timer = $this.data("timer");
+	if (timer)
+		clearTimeout(timer);
+
+	$this.data("timer", setTimeout( function() {
+		var val = $this.val();
+		if (!val) {
+			$(".tagSelection>li").show();
+			$("#filterIcon").css("visibility","hidden");
+		}
+		else {
+			$("#filterIcon").css("visibility","visible");
+			var regex = new RegExp( val.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"), "i" );
+			$(".tagSelection>li").each( function(i, li) {
+				var $li = $(li),
+					text = $.trim( $("label", $li).text() );
+				if (regex.test( text ))
+					$li.show();
+				else
+					$li.hide();
+			});
+		}
+
+	}, 300) );
+});
+{/literal}{/footer_script}
+{/if}
+<ul class="tagSelection">
+{foreach from=$all_tags item=tag}
+	<li>{capture name='showInfo'}<b>{$tag.name}</b> ({$tag.counter|@translate_dec:'%d photo':'%d photos'}) <br> <a href="{$tag.U_VIEW}">{'View in gallery'|@translate}</a> | <a href="{$tag.U_EDIT}">{'Manage photos'|@translate}</a>{if !empty($tag.alt_names)}<br>{$tag.alt_names}{/if}{/capture}
+		<a class="icon-info-circled-1 showInfo" title="{$smarty.capture.showInfo|@htmlspecialchars}"></a>
+		<label>
+			<input type="checkbox" name="tags[]" value="{$tag.id}"> {$tag.name}
+		</label>
+	</li>
+{/foreach}
+</ul>
+
+		<p>
+			<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+			<input type="submit" name="edit" value="{'Edit selected tags'|@translate}">
+			<input type="submit" name="duplicate" value="{'Duplicate selected tags'|@translate}">
+			<input type="submit" name="merge" value="{'Merge selected tags'|@translate}">
+			<input type="submit" name="delete" value="{'Delete selected tags'|@translate}" onclick="return confirm('{'Are you sure?'|@translate}');">
+		</p>
+  </fieldset>
+
+</form>
Index: /tags/2.6.0RC1/admin/themes/default/template/themes_installed.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/themes_installed.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/themes_installed.tpl	(revision 25596)
@@ -0,0 +1,100 @@
+{include file='include/colorbox.inc.tpl'} 
+
+{footer_script}{literal}
+jQuery(document).ready(function() {
+  $("a.preview-box").colorbox();
+  
+  jQuery('.showInfo').tipTip({
+    'delay' : 0,
+    'fadeIn' : 200,
+    'fadeOut' : 200,
+    'maxWidth':'300px',
+    'keepAlive':true,
+    'activation':'click'
+  });
+});
+{/literal}{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Installed Themes'|@translate}</h2>
+</div>
+
+<div id="themesContent">
+
+{assign var='field_name' value='null'} {* <!-- 'counter' for fieldset management --> *}
+{foreach from=$tpl_themes item=theme}
+    
+{if $field_name != $theme.STATE}
+  {if $field_name != 'null'}
+    </div>
+  </fieldset>
+  {/if}
+  
+  <fieldset>
+    <legend>
+    {if $theme.STATE == 'active'}
+      {'Active Themes'|@translate}
+    {else}
+      {'Inactive Themes'|@translate}
+    {/if}
+    </legend>
+    <div class="themeBoxes">
+  {assign var='field_name' value=$theme.STATE}
+{/if}
+
+  {if not empty($theme.AUTHOR)}
+    {if not empty($theme.AUTHOR_URL)}
+      {assign var='author' value="<a href='%s'>%s</a>"|@sprintf:$theme.AUTHOR_URL:$theme.AUTHOR}
+    {else}
+      {assign var='author' value='<u>'|cat:$theme.AUTHOR|cat:'</u>'}
+    {/if}
+  {/if}
+  {if not empty($theme.VISIT_URL)}
+    {assign var='version' value="<a class='externalLink' href='"|cat:$theme.VISIT_URL|cat:"'>"|cat:$theme.VERSION|cat:"</a>"}
+  {else}
+    {assign var='version' value=$theme.VERSION}
+  {/if}
+  
+  <div class="themeBox{if $theme.IS_DEFAULT} themeDefault{/if}">
+    <div class="themeName">
+      {$theme.NAME} {if $theme.IS_DEFAULT}<em>({'default'|@translate})</em>{/if} {if $theme.IS_MOBILE}<em>({'Mobile'|@translate})</em>{/if}
+      <a class="icon-info-circled-1 showInfo" title="{if !empty($author)}{'By %s'|@translate:$author} | {/if}{'Version'|@translate} {$version}<br/>{$theme.DESC|@escape:'html'}"></a>
+    </div>
+    <div class="themeShot"><a href="{$theme.SCREENSHOT}" class="preview-box" title="{$theme.NAME}"><img src="{$theme.SCREENSHOT}" alt=""></a></div>
+    <div class="themeActions">
+      <div>
+{if $theme.STATE == 'active'}
+  {if $theme.DEACTIVABLE}
+      <a href="{$deactivate_baseurl}{$theme.ID}" class="tiptip" title="{'Forbid this theme to users'|@translate}">{'Deactivate'|@translate}</a>
+  {else}
+      <span title="{$theme.DEACTIVATE_TOOLTIP}" class="tiptip">{'Deactivate'|@translate}</span>
+  {/if}
+
+  {if not $theme.IS_DEFAULT}
+      | <a href="{$set_default_baseurl}{$theme.ID}" class="tiptip" title="{'Set as default theme for unregistered and new users'|@translate}">{'Default'|@translate}</a>
+  {/if}
+  {if $theme.ADMIN_URI}
+      <br><a href="{$theme.ADMIN_URI}" class="tiptip" title="{'Configuration'|@translate}">{'Configuration'|@translate}</a>
+  {/if}
+{else}
+  {if $theme.ACTIVABLE}
+      <a href="{$activate_baseurl}{$theme.ID}" title="{'Make this theme available to users'|@translate}" class="tiptip">{'Activate'|@translate}</a>
+  {else}
+      <span title="{$theme.ACTIVATE_TOOLTIP}" class="tiptip">{'Activate'|@translate}</span>
+  {/if}
+      |
+  {if $theme.DELETABLE}
+      <a href="{$delete_baseurl}{$theme.ID}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');" title="{'Delete this theme'|@translate}">{'Delete'|@translate}</a>
+  {else}
+      <span title="{$theme.DELETE_TOOLTIP}" class="tiptip">{'Delete'|@translate}</span>
+  {/if}
+{/if}
+      </div>
+    </div> <!-- themeActions -->
+  </div>
+  
+{/foreach}
+</div> <!-- themeBoxes -->
+</fieldset>
+
+</div> <!-- themesContent -->
Index: /tags/2.6.0RC1/admin/themes/default/template/themes_new.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/themes_new.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/themes_new.tpl	(revision 25596)
@@ -0,0 +1,23 @@
+{include file='include/colorbox.inc.tpl'} 
+{footer_script}{literal}
+jQuery(document).ready(function() {
+  $("a.preview-box").colorbox(); 
+}); 
+{/literal}{/footer_script}
+<div class="titrePage">
+  <h2>{'Add New Theme'|@translate}</h2>
+</div>
+
+{if not empty($new_themes)}
+<div class="themeBoxes">
+{foreach from=$new_themes item=theme name=themes_loop}
+  <div class="themeBox">
+    <div class="themeName">{$theme.name}</div>
+    <div class="themeShot"><a href="{$theme.screenshot}" class="preview-box" title="{$theme.name}"><img src="{$theme.thumbnail}" onerror="this.src='{$default_screenshot}'"></a></div>
+    <div class="themeActions"><a href="{$theme.install_url}">{'Install'|@translate}</a></div>
+  </div>
+{/foreach}
+</div> <!-- themeBoxes -->
+{else}
+<p>{'There is no other theme available.'|@translate}</p>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/updates_ext.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/updates_ext.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/updates_ext.tpl	(revision 25596)
@@ -0,0 +1,281 @@
+{combine_script id='jquery.ajaxmanager' load='footer' require='jquery' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
+{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js'}
+{combine_css path="themes/default/js/plugins/jquery.jgrowl.css"}
+
+{footer_script require='jquery.ui.effect-blind,jquery.ajaxmanager,jquery.jgrowl'}
+var pwg_token = '{$PWG_TOKEN}';
+var extType = '{$EXT_TYPE}';
+var confirmMsg  = '{'Are you sure?'|@translate|@escape:'javascript'}';
+var errorHead   = '{'ERROR'|@translate|@escape:'javascript'}';
+var successHead = '{'Update Complete'|@translate|@escape:'javascript'}';
+var errorMsg    = '{'an error happened'|@translate|@escape:'javascript'}';
+var restoreMsg  = '{'Reset ignored updates'|@translate|@escape:'javascript'}';
+
+{literal}
+var todo = 0;
+var queuedManager = $.manageAjax.create('queued', { 
+	queue: true,  
+	maxRequests: 1,
+  beforeSend: function() { autoupdate_bar_toggle(1); },
+  complete: function() { autoupdate_bar_toggle(-1); }
+});
+
+function updateAll() {
+  if (confirm(confirmMsg)) {
+    jQuery('.updateExtension').each( function() {
+      if (jQuery(this).parents('div').css('display') == 'block')
+        jQuery(this).click();
+    });
+  }
+};
+
+function ignoreAll() {
+  jQuery('.ignoreExtension').each( function() {
+    if (jQuery(this).parents('div').css('display') == 'block')
+      jQuery(this).click();
+  });
+};
+
+function resetIgnored() {
+  jQuery.ajax({
+    type: 'GET',
+    url: 'ws.php',
+    dataType: 'json',
+    data: { method: 'pwg.extensions.ignoreUpdate', reset: true, type: extType, pwg_token: pwg_token, format: 'json' },
+    success: function(data) {
+      if (data['stat'] == 'ok') {
+        jQuery(".pluginBox, fieldset").show();
+        jQuery("#update_all").show();
+        jQuery("#ignore_all").show();
+        jQuery("#up_to_date").hide();
+        jQuery("#reset_ignore").hide();
+        jQuery("#ignored").hide();
+        checkFieldsets();
+      }
+    }
+  });
+};
+
+function checkFieldsets() {
+  var types = new Array('plugins', 'themes', 'languages');
+  var total = 0;
+  var ignored = 0;
+  for (i=0;i<3;i++) {
+    nbExtensions = 0;
+    jQuery("div[id^='"+types[i]+"_']").each(function(index) {
+      if (jQuery(this).css('display') == 'block')
+        nbExtensions++;
+      else
+        ignored++;
+    });
+    total = total + nbExtensions;
+    if (nbExtensions == 0)
+      jQuery("#"+types[i]).hide();
+  }
+
+  if (total == 0) {
+    jQuery("#update_all").hide();
+    jQuery("#ignore_all").hide();
+    jQuery("#up_to_date").show();
+  }
+  if (ignored > 0) {
+    jQuery("#reset_ignore").val(restoreMsg + ' (' + ignored + ')');
+  }
+};
+
+function updateExtension(type, id, revision) {
+  queuedManager.add({
+    type: 'GET',
+    dataType: 'json',
+    url: 'ws.php',
+    data: { method: 'pwg.extensions.update', type: type, id: id, revision: revision, pwg_token: pwg_token, format: 'json' },
+    success: function(data) {
+      if (data['stat'] == 'ok') {
+        jQuery.jGrowl( data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false });
+        jQuery("#"+type+"_"+id).remove();
+        checkFieldsets();
+      } else {
+        jQuery.jGrowl( data['result'], { theme: 'error', header: errorHead, sticky: true });
+      }
+    },
+    error: function(data) {
+      jQuery.jGrowl( errorMsg, { theme: 'error', header: errorHead, sticky: true });
+    }
+  });
+};
+
+function ignoreExtension(type, id) {
+  queuedManager.add({
+    type: 'GET',
+    url: 'ws.php',
+    dataType: 'json',
+    data: { method: 'pwg.extensions.ignoreUpdate', type: type, id: id, pwg_token: pwg_token, format: 'json' },
+    success: function(data) {
+      if (data['stat'] == 'ok') {
+        jQuery("#"+type+"_"+id).hide();
+        jQuery("#reset_ignore").show();
+        checkFieldsets();
+      }
+    }
+  });
+};
+
+function autoupdate_bar_toggle(i) {
+  todo = todo + i;
+  if ((i == 1 && todo == 1) || (i == -1 && todo == 0))
+    jQuery('.autoupdate_bar').toggle();
+}
+
+jQuery(document).ready(function() {
+	jQuery("td[id^='desc_'], p[id^='revdesc_']").click(function() {
+		id = this.id.split('_');
+		jQuery("#revdesc_"+id[1]).toggle('blind');
+    jQuery(".button_"+id[1]).toggle();
+		return false;
+	});
+});
+
+checkFieldsets();
+{/literal}
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Updates'|@translate}</h2>
+</div>
+
+<div class="autoupdate_bar">
+<input type="submit" id="update_all" value="{'Update All'|@translate}" onClick="updateAll(); return false;">
+<input type="submit" id="ignore_all" value="{'Ignore All'|@translate}" onClick="ignoreAll(); return false;">
+<input type="submit" id="reset_ignore" value="{'Reset ignored updates'|@translate}" onClick="resetIgnored(); return false;" {if !$SHOW_RESET}style="display:none;"{/if}>
+</div>
+<div class="autoupdate_bar" style="display:none;">
+{'Please wait...'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif">
+</div>
+
+<p id="up_to_date" style="display:none; text-align:left; margin-left:20px;">{'All %s are up to date.'|@sprintf:$EXT_TYPE|@translate}</p>
+
+{if not empty($update_plugins)}
+<div>
+<fieldset id="plugins">
+<legend>{'Plugins'|@translate}</legend>
+{foreach from=$update_plugins item=plugin name=plugins_loop}
+<div class="pluginBox" id="plugins_{$plugin.EXT_ID}" {if $plugin.IGNORED}style="display:none;"{/if}>
+  <table>
+    <tr>
+      <td class="pluginBoxNameCell">
+        {$plugin.EXT_NAME}
+      </td>
+      <td>
+        <a href="#" onClick="updateExtension('plugins', '{$plugin.EXT_ID}', {$plugin.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
+        | <a href="{$plugin.URL_DOWNLOAD}">{'Download'|@translate}</a>
+        | <a href="#" onClick="ignoreExtension('plugins', '{$plugin.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {'Version'|@translate} {$plugin.CURRENT_VERSION}
+      </td>
+      <td class="pluginDesc" id="desc_{$plugin.ID}">
+        <em>{'Downloads'|@translate}: {$plugin.DOWNLOADS}</em>
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/plus.gif" alt="" class="button_{$plugin.ID}">
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/minus.gif" alt="" class="button_{$plugin.ID}" style="display:none;">
+        {'New Version'|@translate} : {$plugin.NEW_VERSION}
+        | {'By %s'|@translate:$plugin.AUTHOR}
+      </td>
+    </tr>
+    <tr>
+      <td></td>
+      <td class="pluginDesc">
+        <p id="revdesc_{$plugin.ID}" style="display:none;">{$plugin.REV_DESC|@htmlspecialchars|@nl2br}</p>
+      </td>
+    </tr>
+  </table>
+</div>
+{/foreach}
+</fieldset>
+</div>
+{/if}
+
+{if not empty($update_themes)}
+<div>
+<fieldset id="themes">
+<legend>{'Themes'|@translate}</legend>
+{foreach from=$update_themes item=theme name=themes_loop}
+<div class="pluginBox" id="themes_{$theme.EXT_ID}" {if $theme.IGNORED}style="display:none;"{/if}>
+  <table>
+    <tr>
+      <td class="pluginBoxNameCell">
+        {$theme.EXT_NAME}
+      </td>
+      <td>
+        <a href="#" onClick="updateExtension('themes', '{$theme.EXT_ID}', {$theme.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
+        | <a href="{$theme.URL_DOWNLOAD}">{'Download'|@translate}</a>
+        | <a href="#" onClick="ignoreExtension('themes', '{$theme.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {'Version'|@translate} {$theme.CURRENT_VERSION}
+      </td>
+      <td class="pluginDesc" id="desc_{$theme.ID}">
+        <em>{'Downloads'|@translate}: {$theme.DOWNLOADS}</em>
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/plus.gif" alt="" class="button_{$theme.ID}">
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/minus.gif" alt="" class="button_{$theme.ID}" style="display:none;">
+        {'New Version'|@translate} : {$theme.NEW_VERSION}
+        | {'By %s'|@translate:$theme.AUTHOR}
+      </td>
+    </tr>
+    <tr>
+      <td></td>
+      <td class="pluginDesc">
+        <p id="revdesc_{$theme.ID}" style="display:none;">{$theme.REV_DESC|@htmlspecialchars|@nl2br}</p>
+      </td>
+    </tr>
+  </table>
+</div>
+{/foreach}
+</fieldset>
+</div>
+{/if}
+
+{if not empty($update_languages)}
+<div>
+<fieldset id="languages">
+<legend>{'Languages'|@translate}</legend>
+{foreach from=$update_languages item=language name=languages_loop}
+<div class="pluginBox" id="languages_{$language.EXT_ID}" {if $language.IGNORED}style="display:none;"{/if}>
+  <table>
+    <tr>
+      <td class="pluginBoxNameCell">
+        {$language.EXT_NAME}
+      </td>
+      <td>
+        <a href="#" onClick="updateExtension('languages', '{$language.EXT_ID}', {$language.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
+        | <a href="{$language.URL_DOWNLOAD}">{'Download'|@translate}</a>
+        | <a href="#" onClick="ignoreExtension('languages', '{$language.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {'Version'|@translate} {$language.CURRENT_VERSION}
+      </td>
+      <td class="pluginDesc" id="desc_{$language.ID}">
+        <em>{'Downloads'|@translate}: {$language.DOWNLOADS}</em>
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/plus.gif" alt="" class="button_{$language.ID}">
+        <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/minus.gif" alt="" class="button_{$language.ID}" style="display:none;">
+        {'New Version'|@translate} : {$language.NEW_VERSION}
+        | {'By %s'|@translate:$language.AUTHOR}
+      </td>
+    </tr>
+    <tr>
+      <td></td>
+      <td class="pluginDesc">
+        <p id="revdesc_{$language.ID}" style="display:none;">{$language.REV_DESC|@htmlspecialchars|@nl2br}</p>
+      </td>
+    </tr>
+  </table>
+</div>
+{/foreach}
+</fieldset>
+</div>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/updates_pwg.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/updates_pwg.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/updates_pwg.tpl	(revision 25596)
@@ -0,0 +1,99 @@
+{footer_script}
+jQuery(document).ready(function() {ldelim}
+	jQuery('input[name="submit"]').click(function() {ldelim}
+    if(!confirm('{'Are you sure?'|@translate}'))
+      return false;
+    jQuery(this).hide();
+    jQuery('.autoupdate_bar').show();
+	});
+  jQuery('[name="understand"]').click(function() {ldelim}
+    jQuery('[name="submit"]').attr('disabled', !this.checked);
+  });
+});
+{/footer_script}
+
+{html_head}
+{literal}
+<style type="text/css">
+form { width: 750px; }
+fieldset { padding-bottom: 30px; }
+p, form p { text-align: left; margin-left:20px; }
+li { margin: 5px; }
+</style>
+{/literal}
+{/html_head}
+
+<div class="titrePage">
+<h2>{'Updates'|@translate}</h2>
+</div>
+
+{if $STEP == 0}
+  {if $CHECK_VERSION}
+    <p>{'You are running the latest version of Piwigo.'|@translate}</p>
+  {elseif $DEV_VERSION} 
+    <p>{'You are running on development sources, no check possible.'|@translate}</p>
+  {else}
+    <p>{'Check for update failed for unknown reasons.'|@translate}</p>
+  {/if}
+{/if}
+
+{if $STEP == 1}
+<h4>{'Two updates are available'|@translate}:</h4>
+<p>
+<ul>
+  <li><a href="admin.php?page=updates&amp;step=2&amp;to={$MINOR_VERSION}"><strong>{'Update to Piwigo %s'|@translate:$MINOR_VERSION}</strong></a>: {'This is a minor update, with only bug corrections.'|@translate}</li>
+  <li><a href="admin.php?page=updates&amp;step=3&amp;to={$MAJOR_VERSION}"><strong>{'Update to Piwigo %s'|@translate:$MAJOR_VERSION}</strong></a>: {'This is a major update, with <a href="%s">new exciting features</a>.'|@translate:$RELEASE_URL} {'Some themes and plugins may be not available yet.'|@translate}</li>
+</ul>
+</p>
+<p>{'You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'|@translate:$MAJOR_VERSION:$MINOR_VERSION}</p>
+{/if}
+
+{if $STEP == 2}
+<p>
+  {'A new version of Piwigo is available.'|@translate}<br>
+  {'This is a minor update, with only bug corrections.'|@translate}
+</p>
+<form action="" method="post">
+<p><input type="submit" name="submit" value="{'Update to Piwigo %s'|@translate:$UPGRADE_TO}"></p>
+<p class="autoupdate_bar" style="display:none;">&nbsp; {'Update in progress...'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif"></p>
+<p><input type="hidden" name="upgrade_to" value="{$UPGRADE_TO}"></p>
+</form>
+{/if}
+
+{if $STEP == 3}
+<p>
+  {'A new version of Piwigo is available.'|@translate}<br>
+  {'This is a major update, with <a href="%s">new exciting features</a>.'|@translate:$RELEASE_URL} {'Some themes and plugins may be not available yet.'|@translate}
+</p>
+<form action="" method="post">
+
+{counter assign=i}
+<fieldset>
+  <legend>{'Dump Database'|@translate}</legend>
+  <p><input type="checkbox" name="includeHistory"> &nbsp; {'Include history data (Warning: server memory limit may be exceeded)'|@translate}</p>
+  <p><input type="submit" name="dumpDatabase" value="{'Dump Database'|@translate}"></p>
+</fieldset>
+
+{counter assign=i}
+<fieldset>
+  <legend>{'Update to Piwigo %s'|@translate:$UPGRADE_TO}</legend>
+  {if !empty($missing.plugins)}
+  <p><i>{'Following plugins may not be compatible with the new version of Piwigo:'|@translate}</i></p>
+  <p><ul>{foreach from=$missing.plugins item=plugin}<li><a href="{$plugin.uri}" class="externalLink">{$plugin.name}</a></li>{/foreach}</ul><br></p>
+  {/if}
+  {if !empty($missing.themes)}
+  <p><i>{'Following themes may not be compatible with the new version of Piwigo:'|@translate}</i></p>
+  <p><ul>{foreach from=$missing.themes item=theme}<li><a href="{$theme.uri}" class="externalLink">{$theme.name}</a></li>{/foreach}</ul><br></p>
+  {/if}
+  <p>
+  {if !empty($missing.plugins) or !empty($missing.themes)}
+  <p><label><input type="checkbox" name="understand"> &nbsp;{'I decide to update anyway'|@translate}</label></p>
+  {/if}
+  <p><input type="submit" name="submit" value="{'Update to Piwigo %s'|@translate:$UPGRADE_TO}" {if !empty($missing.plugins) or !empty($missing.themes)}disabled="disabled"{/if}>
+  </p>
+  <p class="autoupdate_bar" style="display:none;">&nbsp; {'Update in progress...'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif"></p>
+</fieldset>
+
+<p><input type="hidden" name="upgrade_to" value="{$UPGRADE_TO}"></p>
+</form>
+{/if}
Index: /tags/2.6.0RC1/admin/themes/default/template/upgrade.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/upgrade.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/upgrade.tpl	(revision 25596)
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Content-script-type" content="text/javascript">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}{$themeconf.icon_dir}/favicon.ico">
+
+{get_combined_css}
+{foreach from=$themes item=theme}
+{if $theme.load_css}
+{combine_css path="admin/themes/`$theme.id`/theme.css" order=-10}
+{/if}
+{/foreach}
+
+<!--[if IE 7]>
+  <link rel="stylesheet" type="text/css" href="{$ROOT_URL}admin/themes/default/fix-ie7.css">
+<![endif]-->
+
+<!-- BEGIN get_combined_scripts -->
+{get_combined_scripts load='header'}
+<!-- END get_combined_scripts -->
+
+{literal}
+<style type="text/css">
+body {
+  font-size:12px;
+}
+
+.content {
+ width: 800px;
+ margin: auto;
+ text-align: center;
+ padding:0;
+ background-color:transparent !important;
+ border:none;
+}
+
+#content {
+  min-height:0;
+}
+
+#theHeader {
+  display: block;
+  background:url("admin/themes/clear/images/piwigo_logo_big.png") no-repeat scroll center 20px transparent;
+  height:100px;
+}
+
+fieldset {
+  margin-top:20px;
+  background-color:#f1f1f1;
+}
+
+legend {
+  font-weight:bold;
+  letter-spacing:2px;
+}
+
+form fieldset p {
+  text-align:left;
+  margin:10px;
+}
+
+.content h2 {
+  display:block;
+  font-size:20px;
+  text-align:center;
+  /* margin-top:5px; */
+}
+
+table.table2 {
+  width: 100%;
+  border:0;
+}
+
+table.table2 td {
+  text-align: left;
+  padding: 5px 2px;
+}
+
+table.table2 td.fieldname {
+  font-weight:normal;
+}
+
+table.table2 td.fielddesc {
+  padding-left:10px;
+  font-style:italic;
+}
+
+input[type="submit"], input[type="button"], a.bigButton {
+  font-size:14px;
+  font-weight:bold;
+  letter-spacing:2px;
+  border:none;
+  background-color:#666666;
+  color:#fff;
+  padding:5px;
+  -moz-border-radius:5px;
+}
+
+input[type="submit"]:hover, input[type="button"]:hover, a.bigButton:hover {
+  background-color:#ff7700;
+  color:white;
+}
+
+input[type="text"], input[type="password"], select {
+  background-color:#ddd;
+  border:2px solid #ccc;
+  -moz-border-radius:5px;
+  padding:2px;
+}
+
+input[type="text"]:focus, input[type="password"]:focus, select:focus {
+  background-color:#fff;
+  border:2px solid #ff7700;
+}
+
+.sql_content, .infos a {
+  color: #ff3363;
+}
+
+.errors {
+  padding-bottom:5px;
+}
+
+</style>
+{/literal}
+<title>Piwigo {$RELEASE} - {'Upgrade'|@translate}</title>
+</head>
+
+<body>
+<div id="the_page">
+<div id="theHeader"></div>
+<div id="content" class="content">
+
+{if isset($introduction)}
+<h2>{'Version'|@translate} {$RELEASE} - {'Upgrade'|@translate}</h2>
+
+{if isset($errors)}
+<div class="errors">
+  <ul>
+    {foreach from=$errors item=error}
+    <li>{$error}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+<form method="POST" action="{$introduction.F_ACTION}" name="upgrade_form">
+
+<fieldset>
+<table>
+  <tr>
+    <td>{'Language'|@translate}</td>
+    <td>
+      <select name="language" onchange="document.location = 'upgrade.php?language='+this.options[this.selectedIndex].value;">
+        {html_options options=$language_options selected=$language_selection}
+      </select>
+    </td>
+  </tr>
+</table>
+
+<p>{'This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'|@translate:$introduction.CURRENT_RELEASE}</p>
+{if isset($login)}
+<p>{'Only administrator can run upgrade: please sign in below.'|@translate}</p>
+{/if}
+
+{if isset($login)}
+<table>
+  <tr>
+    <td>{'Username'|@translate}</td>
+    <td><input type="text" name="username" id="username" size="25" maxlength="40" style="width: 150px;"></td>
+  </tr>
+  <tr>
+    <td>{'Password'|@translate}</td>
+    <td><input type="password" name="password" id="password" size="25" maxlength="25" style="width: 150px;"></td>
+  </tr>
+</table>
+{/if}
+</fieldset>
+<p style="text-align: center;">
+<input class="submit" type="submit" name="submit" value="{'Upgrade from version %s to %s'|@translate:$introduction.CURRENT_RELEASE:$RELEASE}">
+</p>
+</form>
+<!--
+<p style="text-align: center;">
+<a href="{$introduction.RUN_UPGRADE_URL}">{'Upgrade from version %s to %s'|@translate:$introduction.CURRENT_RELEASE:$RELEASE}</a>
+</p>
+-->
+
+{/if}
+
+{if isset($upgrade)}
+<h2>{'Upgrade from version %s to %s'|@translate:$upgrade.VERSION:$RELEASE}</h2>
+
+<fieldset>
+<legend>{'Statistics'|@translate}</legend>
+<ul>
+  <li>{'total upgrade time'|@translate} : {$upgrade.TOTAL_TIME}</li>
+  <li>{'total SQL time'|@translate} : {$upgrade.SQL_TIME}</li>
+  <li>{'SQL queries'|@translate} : {$upgrade.NB_QUERIES}</li>
+</ul>
+</fieldset>
+
+<fieldset>
+<legend>{'Upgrade informations'|@translate}</legend>
+<ul>
+  {foreach from=$infos item=info}
+  <li>{$info}</li>
+  {/foreach}
+</ul>
+</fieldset>
+
+<p>
+  <a class="bigButton" href="index.php">{'Home'|@translate}</a>
+</p>
+{/if}
+
+</div> {* content *}
+<div>{$L_UPGRADE_HELP}</div>
+</div> {* the_page *}
+</body>
+</html>
Index: /tags/2.6.0RC1/admin/themes/default/template/user_list.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/user_list.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/user_list.tpl	(revision 25596)
@@ -0,0 +1,1002 @@
+{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'}
+
+{combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'}
+{combine_css path="themes/default/js/plugins/datatables/css/jquery.dataTables.css"}
+
+{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
+{combine_css path="themes/default/js/plugins/chosen.css"}
+
+{combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'}
+{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"}
+
+{footer_script}
+var selectedMessage_pattern = "{'%d of %d users selected'|translate|escape:javascript}";
+var selectedMessage_none = "{'No user selected of %d users'|translate|escape:javascript}";
+var selectedMessage_all = "{'All %d users are selected'|translate|escape:javascript}";
+var applyOnDetails_pattern = "{'on the %d selected users'|translate|escape:javascript}";
+var newUser_pattern = "&#x2714; {'User %s added'|translate|escape:javascript}";
+var registeredOn_pattern = "{'Registered on %s, %s.'|translate|escape:javascript}";
+var lastVisit_pattern = "{'Last visit on %s, %s.'|translate|escape:javascript}";
+var missingConfirm = "{'You need to confirm deletion'|translate|escape:javascript}";
+var missingUsername = "{'Please, enter a login'|translate|escape:javascript}";
+
+var allUsers = [{$all_users}];
+var selection = [{$selection}];
+var pwg_token = "{$PWG_TOKEN}";
+
+var truefalse = {
+  true:"{'Yes'|translate}",
+  false:"{'No'|translate}",
+};
+{/footer_script}
+
+{footer_script}{literal}
+jQuery(document).ready(function() {
+  /**
+   * Add user
+   */
+  jQuery("#addUser").click(function() {
+    jQuery("#addUserForm").toggle();
+    jQuery("#showAddUser .infos").hide();
+    jQuery("input[name=username]").focus();
+    return false;
+  });
+
+  jQuery("#addUserClose").click(function() {
+    jQuery("#addUserForm").hide();
+    return false;
+  });
+
+  jQuery("#addUserForm").submit(function() {
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.add",
+      type:"POST",
+      data: jQuery(this).serialize(),
+      beforeSend: function() {
+        jQuery("#addUserForm .errors").hide();
+
+        if (jQuery("input[name=username]").val() == "") {
+          jQuery("#addUserForm .errors").html('&#x2718; '+missingUsername).show();
+          return false;
+        }
+
+        jQuery("#addUserForm .loading").show();
+      },
+      success:function(data) {
+        oTable.fnDraw();
+        jQuery("#addUserForm .loading").hide();
+
+        var data = jQuery.parseJSON(data);
+        if (data.stat == 'ok') {
+          jQuery("#addUserForm input[type=text], #addUserForm input[type=password]").val("");
+
+          var new_user = data.result.users[0];
+          allUsers.push(parseInt(new_user.id));
+          jQuery("#showAddUser .infos").html(sprintf(newUser_pattern, new_user.username)).show();
+          checkSelection();
+
+          jQuery("#addUserForm").hide();
+        }
+        else {
+          jQuery("#addUserForm .errors").html('&#x2718; '+data.message).show();
+        }
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+        jQuery("#addUserForm .loading").hide();
+      }
+    });
+
+    return false;
+  });
+
+  /**
+   * Table with users
+   */
+  /**
+   * find the key from a value in the startStopValues array
+   */
+  function getSliderKeyFromValue(value, values) {
+    for (var key in values) {
+      if (values[key] >= value) {
+        return key;
+      }
+    }
+    return 0;
+  }
+
+  var recent_period_values = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30,40,50,60,80,99];
+
+  function getRecentPeriodInfoFromIdx(idx) {
+    return sprintf(
+      "{/literal}{'%d days'|@translate}{literal}",
+      recent_period_values[idx]
+    );
+  }
+
+  var nb_image_page_values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,35,40,45,50,60,70,80,90,100,200,300,500,999];
+
+  function getNbImagePageInfoFromIdx(idx) {
+    return sprintf(
+      "{/literal}{'%d photos per page'|@translate}{literal}",
+      nb_image_page_values[idx]
+    );
+  }
+
+  /* Formating function for row details */
+  function fnFormatDetails(oTable, nTr) {
+    var userId = oTable.fnGetData(nTr)[0];
+    console.log("userId = "+userId);
+    var sOut = null;
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.getList",
+      type:"POST",
+      data: {
+        user_id: userId,
+        display: "all",
+      },
+      success:function(data) {
+        jQuery("#user"+userId+" .loading").hide();
+
+        var data = jQuery.parseJSON(data);
+        if (data.stat == 'ok') {
+          var user = data.result.users[0];
+
+          var userDetails = '<form>';
+          userDetails += '<div class="userActions">';
+          userDetails += '<span class="changePasswordDone infos" style="display:none">&#x2714; {/literal}{'Password updated'|translate|escape:javascript}{literal}</span>';
+          userDetails += '<span class="changePassword" style="display:none">{/literal}{'New password'|translate}{literal} <input type="text"> <a href="#" class="buttonLike updatePassword"><img src="themes/default/images/ajax-loader-small.gif" style="margin-bottom:-1px;margin-left:1px;display:none;"><span class="text">{/literal}{'Submit'|translate|escape:javascript}{literal}</span></a> <a href="#" class="cancel">{/literal}{'Cancel'|translate|escape:javascript}{literal}</a></span>';
+          userDetails += '<a class="icon-key changePasswordOpen" href="#">{/literal}{'Change password'|translate|escape:javascript}{literal}</a>';
+          userDetails += '<br><a target="_blank" href="admin.php?page=user_perm&amp;user_id='+userId+'" class="icon-lock">{/literal}{'Permissions'|translate|escape:javascript}{literal}</a>';
+          userDetails += '<br><span class="userDelete"><img class="loading" src="themes/default/images/ajax-loader-small.gif" style="display:none;"><a href="#" class="icon-trash" data-user_id="'+userId+'">{/literal}{'Delete'|translate|escape:javascript}{literal}</a></span>';
+          userDetails += '</div>';
+
+          userDetails += '<span class="changeUsernameOpen"><strong class="username">'+user.username+'</strong> <a href="#" class="icon-pencil">{/literal}{'Change username'|translate|escape:javascript}{literal}</a></span>';
+          userDetails += '<span class="changeUsername" style="display:none">';
+          userDetails += '<input type="text"> <a href="#" class="buttonLike updateUsername"><img src="themes/default/images/ajax-loader-small.gif" style="margin-bottom:-1px;margin-left:1px;display:none;"><span class="text">{/literal}{'Submit'|translate}{literal}</span></a> <a href="#" class="cancel">{/literal}{'Cancel'|translate|escape:javascript}{literal}</a>';
+          userDetails += '</span>';
+
+          userDetails += '<div class="userStats">';
+          userDetails += sprintf(registeredOn_pattern, user.registration_date_string, user.registration_date_since);
+
+          if (typeof user.last_visit != 'undefined') {
+            userDetails += '<br>'+sprintf(lastVisit_pattern, user.last_visit_string, user.last_visit_since);
+          }
+
+          userDetails += '</div>';
+          userDetails += '<div class="userPropertiesContainer">';
+          userDetails += '<input type="hidden" name="user_id" value="'+user.id+'">';
+          userDetails += '<div class="userPropertiesSet">';
+          userDetails += '<div class="userPropertiesSetTitle">{/literal}{'Properties'|translate}{literal}</div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Email address'|translate}{literal}</strong>';
+          userDetails += '<br><input name="email" type="text" value="'+user.email+'"></div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Status'|translate}{literal}</strong>';
+          userDetails += '<br><select name="status">';
+          jQuery("#action select[name=status] option").each(function() {
+            var selected = '';
+            if (user.status == jQuery(this).val()) {
+              selected = ' selected="selected"';
+            }
+            userDetails += '<option value="'+jQuery(this).val()+'"'+selected+'>'+jQuery(this).html()+'</option>';
+          });
+          userDetails += '</select></div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Privacy level'|translate}{literal}</strong>';
+          userDetails += '<br><select name="level">';
+          jQuery("#action select[name=level] option").each(function() {
+            var selected = '';
+            if (user.level == jQuery(this).val()) {
+              selected = ' selected="selected"';
+            }
+            userDetails += '<option value="'+jQuery(this).val()+'"'+selected+'>'+jQuery(this).html()+'</option>';
+          });
+          userDetails += '</select></div>';
+
+          var checked = '';
+          if (user.enabled_high == 'true') {
+            checked = ' checked="checked"';
+          }
+          userDetails += '<div class="userProperty"><label><input type="checkbox" name="enabled_high"'+checked+'> <strong>{/literal}{'High definition enabled'|translate}{literal}</strong></label>';
+          userDetails += '</div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Groups'|translate}{literal}</strong>';
+          userDetails += '<br><select multiple class="chzn-select" style="width:340px;" name="group_id[]">';
+          jQuery("#action select[name=associate] option").each(function() {
+            var selected = '';
+            if (user.groups.indexOf( parseInt(jQuery(this).val()) ) != -1) {
+              selected = ' selected="selected"';
+            }
+            userDetails += '<option value="'+jQuery(this).val()+'"'+selected+'>'+jQuery(this).html()+'</option>';
+          });
+          userDetails += '</select></div>';
+          // userDetails += '<br>'+user.groups.join(",")+'</div>';
+
+          userDetails += '</div><div class="userPropertiesSet userPrefs">';
+          userDetails += '<div class="userPropertiesSetTitle">{/literal}{'Preferences'|translate}{literal}</div>';
+
+          userDetails += '<div class="userProperty"><strong class="nb_image_page_infos"></strong>';
+          userDetails += '<div class="nb_image_page"></div>';
+          userDetails += '<input type="hidden" name="nb_image_page" value="'+user.nb_image_page+'">';
+          userDetails += '</div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Theme'|translate|escape:javascript}{literal}</strong>';
+          userDetails += '<br><select name="theme">';
+          jQuery("#action select[name=theme] option").each(function() {
+            var selected = '';
+            if (user.theme == jQuery(this).val()) {
+              selected = ' selected="selected"';
+            }
+            userDetails += '<option value="'+jQuery(this).val()+'"'+selected+'>'+jQuery(this).html()+'</option>';
+          });
+          userDetails += '</select></div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Language'|translate}{literal}</strong>';
+          userDetails += '<br><select name="language">';
+          jQuery("#action select[name=language] option").each(function() {
+            var selected = '';
+            if (user.language == jQuery(this).val()) {
+              selected = ' selected="selected"';
+            }
+            userDetails += '<option value="'+jQuery(this).val()+'"'+selected+'>'+jQuery(this).html()+'</option>';
+          });
+          userDetails += '</select></div>';
+
+          userDetails += '<div class="userProperty"><strong>{/literal}{'Recent period'|translate}{literal}</strong> <span class="recent_period_infos"></span>';
+          userDetails += '<div class="recent_period"></div>';
+          userDetails += '<input type="hidden" name="recent_period" value="'+user.recent_period+'">';
+          userDetails += '</div>';
+
+          var checked = '';
+          if (user.expand == 'true') {
+            checked = ' checked="checked"';
+          }
+          userDetails += '<div class="userProperty"><label><input type="checkbox" name="expand"'+checked+'> <strong>{/literal}{'Expand all albums'|translate}{literal}</strong></label>';
+          userDetails += '</div>';
+
+          var checked = '';
+          if (user.show_nb_comments == 'true') {
+            checked = ' checked="checked"';
+          }
+          userDetails += '<div class="userProperty"><label><input type="checkbox" name="show_nb_comments"'+checked+'> <strong>{/literal}{'Show number of comments'|translate}{literal}</strong></label>';
+          userDetails += '</div>';
+
+          var checked = '';
+          if (user.show_nb_hits == 'true') {
+            checked = ' checked="checked"';
+          }
+          userDetails += '<div class="userProperty"><label><input type="checkbox" name="show_nb_hits"'+checked+'> <strong>{/literal}{'Show number of hits'|translate}{literal}</strong></label>';
+          userDetails += '</div>';
+          userDetails += '</div>';
+          userDetails += '<div style="clear:both"></div></div>';
+
+          userDetails += '<span class="infos propertiesUpdateDone" style="display:none">&#x2714; ';
+          userDetails += sprintf("{/literal}{'User %s updated'|translate|escape:javascript}{literal}", user.username);
+          userDetails += '</span>';
+          userDetails += '<input type="submit" value="{/literal}{'Update user'|translate|escape:javascript}{literal}" style="display:none;" data-user_id="'+userId+'">';
+          userDetails += '<img class="submitWait" src="themes/default/images/ajax-loader-small.gif" style="display:none">'
+          userDetails += '</form>';
+
+          jQuery("#user"+userId).append(userDetails);
+          jQuery(".chzn-select").chosen();
+
+          /* nb_image_page slider */
+          var nb_image_page_init = getSliderKeyFromValue(jQuery('input[name=nb_image_page]').val(), nb_image_page_values);
+          
+          jQuery('#user'+userId+' .nb_image_page_infos').html(getNbImagePageInfoFromIdx(nb_image_page_init));
+          
+          jQuery('#user'+userId+' .nb_image_page').slider({
+            range: "min",
+            min: 0,
+            max: nb_image_page_values.length - 1,
+            value: nb_image_page_init,
+            slide: function( event, ui ) {
+              jQuery('#user'+userId+' .nb_image_page_infos').html(getNbImagePageInfoFromIdx(ui.value));
+            },
+            stop: function( event, ui ) {
+              jQuery('#user'+userId+' input[name=nb_image_page]').val(nb_image_page_values[ui.value]).trigger('change');
+            }
+          });
+
+          /* recent_period slider */
+          var recent_period_init = getSliderKeyFromValue(jQuery('input[name=recent_period]').val(), recent_period_values);
+          jQuery('#user'+userId+' .recent_period_infos').html(getRecentPeriodInfoFromIdx(recent_period_init));
+          
+          jQuery('#user'+userId+' .recent_period').slider({
+            range: "min",
+            min: 0,
+            max: recent_period_values.length - 1,
+            value: recent_period_init,
+            slide: function( event, ui ) {
+              jQuery('#user'+userId+' .recent_period_infos').html(getRecentPeriodInfoFromIdx(ui.value));
+            },
+            stop: function( event, ui ) {
+              jQuery('#user'+userId+' input[name=recent_period]').val(recent_period_values[ui.value]).trigger('change');
+            }
+          });
+        }
+        else {
+          console.log('error loading user details');
+        }
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+        console.log('technical error loading user details');
+      }
+    });
+  
+    return '<div id="user'+userId+'" class="userProperties"><img class="loading" src="themes/default/images/ajax-loader-small.gif"></div>';
+  }
+
+  /* change password */
+  jQuery(document).on('click', '.changePasswordOpen',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery(this).hide();
+    jQuery('#user'+userId+' .changePasswordDone').hide();
+    jQuery('#user'+userId+' .changePassword').show();
+    jQuery('#user'+userId+' .changePassword input[type=text]').focus();
+
+    return false;
+  });
+
+  jQuery(document).on('click', '.changePassword a.updatePassword',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery('#user'+userId+' .changePassword a .text').hide();
+    jQuery('#user'+userId+' .changePassword a img').show();
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.setInfo",
+      type:"POST",
+      data: {
+        user_id:userId,
+        password: jQuery('#user'+userId+' .changePassword input[type=text]').val()
+      },
+      beforeSend: function() {
+        jQuery('#user'+userId+' .changePassword input[type=text]').val("");
+      },
+      success:function(data) {
+        jQuery('#user'+userId+' .changePassword a .text').show();
+        jQuery('#user'+userId+' .changePassword a img').hide();
+        jQuery('#user'+userId+' .changePassword').hide();
+        jQuery('#user'+userId+' .changePasswordOpen').show();
+        jQuery('#user'+userId+' .changePasswordDone').show();
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+      }
+    });
+
+    return false;
+  });
+
+  jQuery(document).on('click', '.changePassword a.cancel',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery('#user'+userId+' .changePassword').hide();
+    jQuery('#user'+userId+' .changePasswordOpen').show();
+
+    return false;
+  });
+
+  /* change username */
+  jQuery(document).on('click', '.changeUsernameOpen a',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+    var username = jQuery('#user'+userId+' .username').html();
+
+    jQuery('#user'+userId+' .changeUsernameOpen').hide();
+    jQuery('#user'+userId+' .changeUsername').show();
+    jQuery('#user'+userId+' .changeUsername input[type=text]').val(username).focus();
+
+    return false;
+  });
+
+  jQuery(document).on('click', 'a.updateUsername',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery('#user'+userId+' .changeUsername a .text').hide();
+    jQuery('#user'+userId+' .changeUsername a img').show();
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.setInfo",
+      type:"POST",
+      data: {
+        user_id:userId,
+        username: jQuery('#user'+userId+' .changeUsername input[type=text]').val()
+      },
+      success:function(data) {
+        jQuery('#user'+userId+' .changeUsername a .text').show();
+        jQuery('#user'+userId+' .changeUsername a img').hide();
+        jQuery('#user'+userId+' .changeUsername').hide();
+        jQuery('#user'+userId+' .changeUsernameOpen').show();
+
+        var data = jQuery.parseJSON(data);
+        jQuery('#user'+userId+' .username').html(data.result.users[0].username);
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+      }
+    });
+
+    return false;
+  });
+
+  jQuery(document).on('click', '.changeUsername a.cancel',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery('#user'+userId+' .changeUsername').hide();
+    jQuery('#user'+userId+' .changeUsernameOpen').show();
+
+    return false;
+  });
+
+  /* display the "save" button when a field changes */
+  jQuery(document).on('change', '.userProperties input, .userProperties select',  function() {
+    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val();
+
+    jQuery('#user'+userId+' input[type=submit]').show();
+    jQuery('#user'+userId+' .propertiesUpdateDone').hide();
+  });
+
+  /* delete user */
+  jQuery(document).on('click', '.userDelete a',  function() {
+    if (!confirm("{/literal}{'Are you sure?'|translate|escape:javascript}{literal}")) {
+      return false;
+    }
+
+    var userId = jQuery(this).data('user_id');
+    var username = jQuery('#user'+userId+' .username').html();
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.delete",
+      type:"POST",
+      data: {
+        user_id:userId,
+        pwg_token:pwg_token
+      },
+      beforeSend: function() {
+        jQuery('#user'+userId+' .userDelete .loading').show();
+      },
+      success:function(data) {
+        oTable.fnDraw();
+        jQuery('#showAddUser .infos').html('&#x2714; User '+username+' deleted').show();
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+        jQuery('#user'+userId+' .userDelete .loading').hide();
+      }
+    });
+
+    return false;
+  });
+
+  jQuery(document).on('click', '.userProperties input[type=submit]',  function() {
+    var userId = jQuery(this).data('user_id');
+
+    var formData = jQuery('#user'+userId+' form').serialize();
+
+    if (jQuery('#user'+userId+' form select[name="group_id[]"] option:selected').length == 0) {
+      formData += '&group_id=-1';
+    }
+
+    if (!jQuery('#user'+userId+' form input[name=enabled_high]').is(':checked')) {
+      formData += '&enabled_high=false';
+    }
+
+    if (!jQuery('#user'+userId+' form input[name=expand]').is(':checked')) {
+      formData += '&expand=false';
+    }
+
+    if (!jQuery('#user'+userId+' form input[name=show_nb_hits]').is(':checked')) {
+      formData += '&show_nb_hits=false';
+    }
+
+    if (!jQuery('#user'+userId+' form input[name=show_nb_comments]').is(':checked')) {
+      formData += '&show_nb_comments=false';
+    }
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method=pwg.users.setInfo",
+      type:"POST",
+      data: formData,
+      beforeSend: function() {
+        jQuery('#user'+userId+' .submitWait').show();
+      },
+      success:function(data) {
+        jQuery('#user'+userId+' .submitWait').hide();
+        jQuery('#user'+userId+' input[type=submit]').hide();
+        jQuery('#user'+userId+' .propertiesUpdateDone').show();
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+        jQuery('#user'+userId+' .submitWait').hide();
+      }
+    });
+
+    return false;
+  });
+
+  /* Add event listener for opening and closing details
+   * Note that the indicator for showing which row is open is not controlled by DataTables,
+   * rather it is done here
+   */
+  jQuery(document).on('click', '#userList tbody td .openUserDetails',  function() {
+    var nTr = this.parentNode.parentNode;
+    if (jQuery(this).hasClass('icon-angle-circled-up')) {
+      /* This row is already open - close it */
+      jQuery(this).removeClass('icon-angle-circled-up').addClass('icon-angle-circled-down').attr('title', 'Open user details');
+      oTable.fnClose( nTr );
+    }
+    else {
+      /* Open this row */
+      jQuery(this).removeClass('icon-angle-circled-down').addClass('icon-angle-circled-up').attr('title', 'Close user details');
+      oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
+    }
+  });
+
+
+  /* first column must be prefixed with the open/close icon */
+  var aoColumns = [
+    {
+      'bVisible':false
+    },
+    {
+      "mRender": function(data, type, full) {
+        return '<span title="Open user details" class="icon-angle-circled-down openUserDetails"></span> <label><input type="checkbox" data-user_id="'+full[0]+'"> '+data+'</label>';
+      }
+    }
+  ];
+
+  for (i=2; i<jQuery("#userList thead tr th").length; i++) {
+    aoColumns.push(null);
+  }
+
+  var oTable = jQuery('#userList').dataTable({
+    "iDisplayLength": 10,
+    "bDeferRender": true,
+    "bProcessing": true,
+    "bServerSide": true,
+		"sServerMethod": "POST",
+    "sAjaxSource": "admin/user_list_backend.php",
+    "oLanguage": {
+      "sProcessing": "{/literal}{'Loading...'|translate|escape:'javascript'}{literal}",
+      "sLengthMenu": sprintf("{/literal}{'Show %s users'|translate|escape:'javascript'}{literal}", '_MENU_'),
+      "sZeroRecords": "{/literal}{'No matching user found'|translate|escape:'javascript'}{literal}",
+      "sInfo": sprintf("{/literal}{'Showing %s to %s of %s users'|translate|escape:'javascript'}{literal}", '_START_', '_END_', '_TOTAL_'),
+      "sInfoEmpty": "{/literal}{'No matching user found'|translate|escape:'javascript'}{literal}",
+      "sInfoFiltered": sprintf("{/literal}{'(filtered from %s total users)'|translate|escape:'javascript'}{literal}", '_MAX_'),
+      "sSearch": '<span class="icon-search"></span>'+"{/literal}{'Search'|translate|escape:'javascript'}{literal}",
+      "sLoadingRecords": "{/literal}{'Loading...'|translate|escape:'javascript'}{literal}",
+      "oPaginate": {
+          "sFirst":    "{/literal}{'First'|translate|escape:'javascript'}{literal}",
+          "sPrevious": '← '+"{/literal}{'Previous'|translate|escape:'javascript'}{literal}",
+          "sNext":     "{/literal}{'Next'|translate|escape:'javascript'}{literal}"+' →',
+          "sLast":     "{/literal}{'Last'|translate|escape:'javascript'}{literal}",
+      }
+    },
+    "fnDrawCallback": function( oSettings ) {
+      jQuery("#userList input[type=checkbox]").each(function() {
+        var user_id = jQuery(this).data("user_id");
+        jQuery(this).prop('checked', (selection.indexOf(user_id) != -1));
+      });
+    },
+    "aoColumns": aoColumns
+  });
+
+  /**
+   * Selection management
+   */
+  function checkSelection() {
+    if (selection.length > 0) {
+      jQuery("#forbidAction").hide();
+      jQuery("#permitAction").show();
+
+      jQuery("#applyOnDetails").text(
+        sprintf(
+          applyOnDetails_pattern,
+          selection.length
+        )
+      );
+
+      if (selection.length == allUsers.length) {
+        jQuery("#selectedMessage").text(
+          sprintf(
+            selectedMessage_all,
+            allUsers.length
+          )
+        );
+      }
+      else {
+        jQuery("#selectedMessage").text(
+          sprintf(
+            selectedMessage_pattern,
+            selection.length,
+            allUsers.length
+          )
+        );
+      }
+    }
+    else {
+      jQuery("#forbidAction").show();
+      jQuery("#permitAction").hide();
+
+      jQuery("#selectedMessage").text(
+        sprintf(
+          selectedMessage_none,
+          allUsers.length
+        )
+      );
+    }
+
+    jQuery("#applyActionBlock .infos").hide();
+  }
+
+  jQuery(document).on('change', '#userList input[type=checkbox]',  function() {
+    var user_id = jQuery(this).data("user_id");
+
+    array_delete(selection, user_id);
+
+    if (jQuery(this).is(":checked")) {
+      selection.push(user_id);
+    }
+
+    checkSelection();
+  });
+
+  jQuery("#selectAll").click(function () {
+    selection = allUsers;
+    jQuery("#userList input[type=checkbox]").prop('checked', true);
+    checkSelection();
+    return false;
+  });
+
+  jQuery("#selectNone").click(function () {
+    selection = [];
+    jQuery("#userList input[type=checkbox]").prop('checked', false);
+    checkSelection();
+    return false;
+  });
+
+  jQuery("#selectInvert").click(function () {
+    var newSelection = [];
+    for(var i in allUsers)
+    {
+      if (selection.indexOf(allUsers[i]) == -1) {
+        newSelection.push(allUsers[i]);
+      }
+    }
+    selection = newSelection;
+
+    jQuery("#userList input[type=checkbox]").each(function() {
+      var user_id = jQuery(this).data("user_id");
+      jQuery(this).prop('checked', (selection.indexOf(user_id) != -1));
+    });
+
+    checkSelection();
+    return false;
+  });
+
+  /**
+   * Action management
+   */
+  jQuery("[id^=action_]").hide();
+  
+  jQuery("select[name=selectAction]").change(function () {
+    jQuery("#applyActionBlock .infos").hide();
+
+    jQuery("[id^=action_]").hide();
+
+    jQuery("#action_"+$(this).prop("value")).show();
+  
+    if (jQuery(this).val() != -1) {
+      jQuery("#applyActionBlock").show();
+    }
+    else {
+      jQuery("#applyActionBlock").hide();
+    }
+  });
+
+  jQuery("#permitAction input, #permitAction select").click(function() {
+    jQuery("#applyActionBlock .infos").hide();
+  });
+
+  jQuery("#applyAction").click(function() {
+    var action = jQuery("select[name=selectAction]").prop("value");
+    var method = 'pwg.users.setInfo';
+    var data = {
+      user_id: selection
+    };
+
+    switch (action) {
+      case 'delete':
+        if (!jQuery("input[name=confirm_deletion]").is(':checked')) {
+          alert(missingConfirm);
+          return false;
+        }
+        method = 'pwg.users.delete';
+        data.pwg_token = pwg_token;
+        break;
+      case 'group_associate':
+        method = 'pwg.groups.addUser';
+        data.group_id = jQuery("select[name=associate]").prop("value");
+        break;
+      case 'group_dissociate':
+        method = 'pwg.groups.deleteUser';
+        data.group_id = jQuery("select[name=dissociate]").prop("value");
+        break;
+      case 'status':
+        data.status = jQuery("select[name=status]").prop("value");
+        break;
+      case 'enabled_high':
+        data.enabled_high = jQuery("input[name=enabled_high]:checked").val();
+        break;
+      case 'level':
+        data.level = jQuery("select[name=level]").val();
+        break;
+      case 'nb_image_page':
+        data.nb_image_page = jQuery("input[name=nb_image_page]").val();
+        break;
+      case 'theme':
+        data.theme = jQuery("select[name=theme]").val();
+        break;
+      case 'language':
+        data.language = jQuery("select[name=language]").val();
+        break;
+      case 'recent_period':
+        data.recent_period = jQuery("input[name=recent_period]").val();
+        break;
+      case 'expand':
+        data.expand = jQuery("input[name=expand]:checked").val();
+        break;
+      case 'show_nb_comments':
+        data.show_nb_comments = jQuery("input[name=show_nb_comments]:checked").val();
+        break;
+      case 'show_nb_hits':
+        data.show_nb_hits = jQuery("input[name=show_nb_hits]:checked").val();
+        break;
+      default:
+        alert("Unexpected action");
+        return false;
+    }
+
+    jQuery.ajax({
+      url: "ws.php?format=json&method="+method,
+      type:"POST",
+      data: data,
+      beforeSend: function() {
+        jQuery("#applyActionLoading").show();
+      },
+      success:function(data) {
+        oTable.fnDraw();
+        jQuery("#applyActionLoading").hide();
+        jQuery("#applyActionBlock .infos").show();
+
+        if (action == 'delete') {
+          var allUsers_new = [];
+          for(var i in allUsers)
+          {
+            if (selection.indexOf(allUsers[i]) == -1) {
+              allUsers_new.push(allUsers[i]);
+            }
+          }
+          allUsers = allUsers_new;
+          console.log('allUsers_new.length = '+allUsers_new.length);
+          selection = [];
+          checkSelection();
+        }
+      },
+      error:function(XMLHttpRequest, textStatus, errorThrows) {
+        jQuery("#applyActionLoading").hide();
+      }
+    });
+
+    return false;
+  });
+
+});
+{/literal}{/footer_script}
+
+{literal}
+<style>
+.dataTables_wrapper, .dataTables_info {clear:none;}
+table.dataTable {clear:right;padding-top:10px;}
+.dataTable td img {margin-bottom: -6px;margin-left: -6px;}
+.paginate_enabled_previous, .paginate_enabled_previous:hover, .paginate_disabled_previous, .paginate_enabled_next, .paginate_enabled_next:hover, .paginate_disabled_next {background:none;}
+.paginate_enabled_previous, .paginate_enabled_next {color:#005E89 !important;}
+.paginate_enabled_previous:hover, .paginate_enabled_next:hover {color:#D54E21 !important; text-decoration:underline !important;}
+
+.paginate_disabled_next, .paginate_enabled_next {padding-right:3px;}
+.bulkAction {margin-top:10px;}
+#addUserForm p {margin-left:0;}
+#applyActionBlock .actionButtons {margin-left:0;}
+span.infos, span.errors {background-image:none; padding:2px 5px; margin:0;border-radius:5px;}
+
+.userStats {margin-top:10px;}
+.recent_period_infos {margin-left:10px;}
+.nb_image_page, .recent_period {width:340px;margin-top:5px;}
+</style>
+{/literal}
+
+<div class="titrePage">
+  <h2>{'User list'|@translate}</h2>
+</div>
+
+<p class="showCreateAlbum" id="showAddUser">
+  <a href="#" id="addUser" class="icon-plus-circled">{'Add a user'|translate}</a>
+  <span class="infos" style="display:none"></span>
+</p>
+
+<form id="addUserForm" style="display:none" method="post" name="add_user" action="{$F_ADD_ACTION}">
+  <fieldset>
+    <legend>{'Add a user'|@translate}</legend>
+
+    <p>
+      <strong>{'Username'|translate}</strong><br>
+      <input type="text" name="username" maxlength="50" size="20">
+    </p>
+
+    <p>
+      <strong>{'Password'|translate}</strong><br>
+      <input type="{if $Double_Password}password{else}text{/if}" name="password">
+    </p>
+    
+{if $Double_Password}
+    <p>
+      <strong>{'Confirm Password'|@translate}</strong><br>
+      <input type="password" name="password_confirm">
+    </p>
+{/if}
+
+    <p>
+      <strong>{'Email address'|@translate}</strong><br>
+      <input type="text" name="email">
+    </p>
+
+    <p>
+      <label><input type="checkbox" name="send_password_by_mail"> <strong>{'Send connection settings by email'|@translate}</strong></label>
+    </p>
+
+    <p class="actionButtons">
+      <input class="submit" name="submit_add" type="submit" value="{'Submit'|@translate}">
+      <a href="#" id="addUserClose">{'Cancel'|@translate}</a>
+      <span class="loading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span>
+      <span class="errors" style="display:none"></span>
+    </p>
+  </fieldset>
+</form>
+
+<form method="post" name="preferences" action="">
+
+<table id="userList">
+  <thead>
+    <tr>
+      <th>id</th>
+      <th>{'Username'|@translate}</th>
+      <th>{'Status'|@translate}</th>
+      <th>{'Email address'|@translate}</th>
+      <th>{'registration date'|@translate}</th>
+    </tr>
+  </thead>
+</table>
+
+<div style="clear:right"></div>
+
+<p class="checkActions">
+  {'Select:'|@translate}
+  <a href="#" id="selectAll">{'All'|@translate}</a>,
+  <a href="#" id="selectNone">{'None'|@translate}</a>,
+  <a href="#" id="selectInvert">{'Invert'|@translate}</a>
+
+  <span id="selectedMessage"></span>
+</p>
+
+<fieldset id="action">
+  <legend>{'Action'|@translate}</legend>
+
+  <div id="forbidAction"{if count($selection) != 0} style="display:none"{/if}>{'No user selected, no action possible.'|@translate}</div>
+  <div id="permitAction"{if count($selection) == 0} style="display:none"{/if}>
+
+    <select name="selectAction">
+      <option value="-1">{'Choose an action'|@translate}</option>
+      <option disabled="disabled">------------------</option>
+      <option value="delete" class="icon-trash">{'Delete selected users'|@translate}</option>
+      <option value="status">{'Status'|@translate}</option>
+      <option value="group_associate">{'associate to group'|translate}</option>
+      <option value="group_dissociate">{'dissociate from group'|@translate}</option>
+      <option value="enabled_high">{'High definition enabled'|@translate}</option>
+      <option value="level">{'Privacy level'|@translate}</option>
+      <option value="nb_image_page">{'Number of photos per page'|@translate}</option>
+      <option value="theme">{'Theme'|@translate}</option>
+      <option value="language">{'Language'|@translate}</option>
+      <option value="recent_period">{'Recent period'|@translate}</option>
+      <option value="expand">{'Expand all albums'|@translate}</option>
+{if $ACTIVATE_COMMENTS}
+      <option value="show_nb_comments">{'Show number of comments'|@translate}</option>
+{/if}
+      <option value="show_nb_hits">{'Show number of hits'|@translate}</option>
+    </select>
+
+    {* delete *}
+    <div id="action_delete" class="bulkAction">
+      <p><label><input type="checkbox" name="confirm_deletion" value="1"> {'Are you sure?'|@translate}</label></p>
+    </div>
+
+    {* status *}
+    <div id="action_status" class="bulkAction">
+      <select name="status">
+        {html_options options=$pref_status_options selected=$pref_status_selected}
+      </select>
+    </div>
+
+    {* group_associate *}
+    <div id="action_group_associate" class="bulkAction">
+      {html_options name=associate options=$association_options selected=$associate_selected}
+    </div>
+
+    {* group_dissociate *}
+    <div id="action_group_dissociate" class="bulkAction">
+      {html_options name=dissociate options=$association_options selected=$dissociate_selected}
+    </div>
+
+    {* enabled_high *}
+    <div id="action_enabled_high" class="bulkAction">
+      <label><input type="radio" name="enabled_high" value="true">{'Yes'|@translate}</label>
+      <label><input type="radio" name="enabled_high" value="false" checked="checked">{'No'|@translate}</label>
+    </div>
+
+    {* level *}
+    <div id="action_level" class="bulkAction">
+      <select name="level" size="1">
+        {html_options options=$level_options selected=$level_selected}
+      </select>
+    </div>
+
+    {* nb_image_page *}
+    <div id="action_nb_image_page" class="bulkAction">
+      <input size="4" maxlength="3" type="text" name="nb_image_page" value="{$NB_IMAGE_PAGE}">
+    </div>
+
+    {* theme *}
+    <div id="action_theme" class="bulkAction">
+      <select name="theme" size="1">
+        {html_options options=$theme_options selected=$theme_selected}
+      </select>
+    </div>
+
+    {* language *}
+    <div id="action_language" class="bulkAction">
+      <select name="language" size="1">
+        {html_options options=$language_options selected=$language_selected}
+      </select>
+    </div>
+
+    {* recent_period *}
+    <div id="action_recent_period" class="bulkAction">
+      <input type="text" size="3" maxlength="2" name="recent_period" value="{$RECENT_PERIOD}">
+    </div>
+
+    {* expand *}
+    <div id="action_expand" class="bulkAction">
+      <label><input type="radio" name="expand" value="true">{'Yes'|@translate}</label>
+      <label><input type="radio" name="expand" value="false" checked="checked">{'No'|@translate}</label>
+    </div>
+
+    {* show_nb_comments *}
+    <div id="action_show_nb_comments" class="bulkAction">
+      <label><input type="radio" name="show_nb_comments" value="true">{'Yes'|@translate}</label>
+      <label><input type="radio" name="show_nb_comments" value="false" checked="checked">{'No'|@translate}</label>
+    </div>
+
+    {* show_nb_hits *}
+    <div id="action_show_nb_hits" class="bulkAction">
+      <label><input type="radio" name="show_nb_hits" value="true">{'Yes'|@translate}</label>
+      <label><input type="radio" name="show_nb_hits" value="false" checked="checked">{'No'|@translate}</label>
+    </div>
+
+    <p id="applyActionBlock" style="display:none" class="actionButtons">
+      <input id="applyAction" class="submit" type="submit" value="{'Apply action'|@translate}" name="submit"> <span id="applyOnDetails"></span>
+      <span id="applyActionLoading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span>
+      <span class="infos" style="display:none">&#x2714; {'Users modified'|translate}</span>
+    </p>
+
+  </div> {* #permitAction *}
+</fieldset>
+
+</form> 
Index: /tags/2.6.0RC1/admin/themes/default/template/user_perm.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/template/user_perm.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/template/user_perm.tpl	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>{$TITLE}</h2>
+
+{if isset($categories_because_of_groups) }
+<fieldset>
+  <legend>{'Albums authorized thanks to group associations'|@translate}</legend>
+
+  <ul>
+    {foreach from=$categories_because_of_groups item=cat }
+    <li>{$cat}</li>
+    {/foreach}
+  </ul>
+</fieldset>
+{/if}
+
+
+<fieldset>
+  <legend>{'Other private albums'|@translate}</legend>
+
+  <form method="post" action="{$F_ACTION}">
+    {$DOUBLE_SELECT}
+  </form>
+</fieldset>
Index: /tags/2.6.0RC1/admin/themes/default/theme.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/theme.css	(revision 25596)
@@ -0,0 +1,1156 @@
+/* content.css */
+[class^="icon-"]:before { text-decoration:none !important; }
+
+.showInfo { font-size:15px;cursor:pointer;line-height:15px; }
+
+/* .Content  is on every pages so it is common and it will no longer be a specific css */
+.content h2 {margin: 0; padding: 5px 0.5em 5px 0.5em; text-align: right; font-size: 120%;}
+.content .navigationBar { margin: 10px 0; text-align: center; }
+.content form { text-align: left; }
+.content dt { margin-bottom: 5px; font-style: italic;
+  font-size: 110%; }
+ul.categoryActions { margin: 0 2px; width: auto; list-style-position:outside;
+  padding: 0; text-indent: 0; list-style: none; text-align: center; }
+.content div.titrePage { padding: 0 0 3px; }
+.content div.comment { margin: 0 0 0.5em 0; padding: 0;
+  overflow: hidden; width: 100%;	/* don't ask why. It's a very usefull trick  */ }
+
+.content DIV.comment A.illustration {
+	display: block;
+	float: left;
+	margin: 0.5em 30px 0 0.5em;
+}
+
+.content div.comment p.commentHeader {
+  text-align: right; margin: 0.5em 0.5em 0 0; }
+.content div.comment ul.actions { text-align: center; margin: 0.2em; }
+.content div.comment blockquote {
+  margin-right: 0.5em; overflow: visible; /*avoid a very strange margin behaviour (all browsers) */ }
+
+.commentFilterSelected {color:#666;text-decoration:underline;}
+.comment .pendingFlag {font-style:italic;color:red;}
+
+/* not used but should be */
+#thePopuphelpPage .content { margin: 1em; }
+
+/* thumbnails.css */
+UL.thumbnails {
+  margin: 0; padding: 0; list-style: none;
+  text-align: center;	/* to center the whole collection in .content */
+  float: left;
+}
+UL.thumbnails LI { display: inline }
+UL.thumbnails li.rank-of-image {
+  float: left;
+  background-color: #333;
+  color: #666;
+  border-radius: 5px;
+  display: block;
+  width: 120px;
+  height: 120px;
+  cursor: move;
+  margin: 4px;
+	overflow: hidden;
+}
+.clipwrapper {
+  position:relative;
+  width: 96px;
+  height: 96px;
+  margin: 3px;
+}
+.clip {
+  position:absolute;
+}
+
+UL.thumbnails SPAN.wrap1 {
+  margin: 5px;
+  display: table-cell; display: inline-table;
+  display: inline-block; /* Why 3 display option ??? */
+  vertical-align: top;		/* OK with Opera and IE6 not Geko */
+  text-align: center;		/* to center the thumbnail and legend in Geko/Opera */
+}
+UL.thumbnails SPAN.wrap2 {
+  margin: 0;			/* important reset the margins */
+  display: table-cell;		/* block prevents vertical-align here */
+  vertical-align: middle;	/* Ok with Opera and Geko not IE6 */
+	border-radius: 4px;
+}
+UL.thumbnails LABEL {
+	position: relative;
+	display: block; 
+	border-bottom: none;
+}
+
+UL.thumbnails IMG {
+	vertical-align: middle;
+	margin-top: 12px;
+}
+
+UL.thumbnails INPUT {
+  position: absolute;
+  left: 2px; top: 2px;
+}
+UL.thumbnails .levelIndicatorB {
+display:block; position:absolute; z-index:100; padding:7px 0 0 2px; color:black; font-weight:bold; font-size:120%;
+}
+UL.thumbnails .levelIndicatorF {
+display:block; position:absolute; z-index:101; padding:8px 0 0 3px; color:white; font-weight:bold; font-size:120%;
+}
+
+/* default-layout.css */
+
+/* History tables */
+TABLE.table2 {
+	border: 1px solid #111;
+	margin: 0 auto;
+	padding: 0;
+}
+
+TABLE.table2 TD, TABLE.table2 TH {
+	padding: 0 5px;
+}
+
+TABLE.table2 TR {
+	text-align: left;
+}
+
+TABLE.table2 THEAD TD { padding:7px 10px 3px 10px; }
+TABLE.table2 TR.throw { text-align: center; }
+.sort { display:block; padding:8px 5px 0px 1px; clear: right; float:left; }
+
+
+.hour {
+	white-space: pre;
+}
+
+.number {
+	text-align: right;
+}
+
+TABLE#dailyStats {
+	width: 60%;
+}
+
+TABLE#detailedStats {
+	width: 99%;
+}
+
+/* Plugins, languages tables */
+TABLE.plugins,
+TABLE.languages {
+  min-width: 500px;
+}
+TABLE.plugins A { border: 0; }
+TABLE.plugins TR TD { padding: 4px 10px; }
+TABLE.languages TR TD { padding: 7px 20px; }
+
+
+/* categoryOrdering */
+FORM#categoryOrdering .orderParams {
+  line-height:30px;
+  margin-bottom:10px;
+}
+
+SELECT.categoryList {
+	width: 100%;
+}
+
+FORM#categoryOrdering p {
+	text-align: left;
+	/* margin-top: 1em; */
+	/* margin-bottom: 1em; */
+}
+UL.categoryUl {
+	list-style: none;
+	padding: 0;
+	margin: 1em;
+}
+
+LI.categoryLi {
+/*
+	width: 100%;
+*/
+	padding: 5px;
+	margin-bottom: 5px;
+  border-radius:5px;
+}
+
+
+/* menuOrdering */
+FORM#menuOrdering {
+	padding-left: 1em;
+	padding-right: 1em;
+}
+FORM#menuOrdering p {
+	text-align: left;
+	margin: 0 10px;
+}
+FORM#menuOrdering p span {
+	float:right;
+}
+FORM#menuOrdering input {
+	vertical-align: middle;
+  margin:0 10px;
+}
+FORM#menuOrdering .menuAuthor {
+  margin: 5px 0 0 40px;
+}
+FORM#menuOrdering .menuSubmit {
+  margin: 20px 0;
+}
+
+UL.menuUl {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+}
+
+LI.menuLi {
+	width: 100%;
+	border: 1px solid #666;
+	padding: 12px 0;
+	margin-bottom: 5px;
+}
+/* */
+
+FORM#catModify TABLE { width: auto; }
+
+#catModify p {
+  line-height: 20px;
+  margin: 0 0 1.5em;
+  text-align: left;
+}
+
+FIELDSET.elementEdit .thumb {
+	display: block;
+	float: right;
+	text-align: center;
+}
+
+TABLE.doubleSelect {
+	text-align: center;
+	margin: 0 auto;
+	width: 100%;
+}
+
+TABLE.doubleSelect TD {
+	padding: 0 3px;
+	width: 50%;
+}
+
+TABLE.doubleSelect SELECT.categoryList {
+	width: 100%; max-width: 100%; overflow-x: auto;
+}
+
+.statBar {
+	height: 10px;
+	background-color: #ff7700;
+	border: 1px solid #666;
+}
+
+.over{
+position: relative;
+z-index: 0;
+}
+
+.over:hover{
+background-color: transparent;
+z-index: 50;
+}
+
+.over SPAN{ /*CSS for enlarged image*/
+position: absolute;
+background-color: #222;
+padding: 5px;
+left: -1000px;
+border: 1px solid #ff3363;
+visibility: hidden;
+color: black;
+text-decoration: none;
+}
+
+.over SPAN IMG{ /*CSS for enlarged image*/
+border-width: 0;
+padding: 2px;
+}
+
+.over:hover SPAN{ /*CSS for enlarged image on hover*/
+visibility: visible;
+top: 0;
+left: 60px; /*position where enlarged image should offset horizontally */
+}
+
+BODY {
+	font-size: 0.8em;
+	font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
+	text-align: center; /* be nice to IE5 */
+	min-width: 60em;  /* ~ 3* #menubar width */
+}
+
+H1 {
+color:#eee;
+letter-spacing:1px;
+text-align: left;
+font-size: 150%;
+font-weight: normal;
+font-style:italic;
+padding: 2px 0 0 10px;
+margin: 0;
+float:left;
+}
+
+#pwgHead {
+	color: #aaa;
+  background-color: #464646;
+	height: 36px;
+}
+
+#pwgHead A {color:#ccc;}
+#pwgHead A:hover {color:#fff}
+
+#headActions {float:right; height:36px; line-height:36px; margin-right:10px;}
+
+A {
+	text-decoration: none;
+}
+A:hover {
+	text-decoration: underline;
+}
+IMG {
+	border: none;
+}
+
+/** General defaults **/
+INPUT, SELECT {
+	margin: 0;
+	font-size: 1em;	/* <= some browsers don't set it correctly */
+}
+UL, DL, OL { text-align: left;}
+TABLE { /* horizontaly centered */
+	margin-left: auto;
+	margin-right: auto;
+}
+/* for debugging purpose */
+PRE { text-align:left; }
+
+/** forms **/
+
+FORM { padding: 0em; }
+
+FORM P {
+	text-align: center;
+        margin:1em;
+}
+
+form p.field {
+  text-align: left;
+}
+
+form p.formButtons {text-align:left;}
+
+FORM FIELDSET P {
+	margin-top: 1em;
+	margin-bottom: 0;
+        text-align:left;
+}
+
+.small {
+	font-size: 80%;
+}
+
+TEXTAREA.description {
+	height: 6em;
+	width: 40em;
+	overflow: auto;
+}
+
+SELECT.categoryList {
+	height: 20em;
+	width: auto;
+}
+
+DIV.comment BLOCKQUOTE {
+	padding: 0.5em;
+	overflow: auto;	/* no solution for IE6 */
+	min-height: 2.75em;	/* fix a Gecko bug whith scrollbar and 1 line only */
+}
+
+
+/**
+ * Filter forms are displayed label by label with the input (or select...)
+ * below the label. Use an UL to make a group (radiobox for instance).
+ * Use a SPAN to group objects in line
+ */
+FIELDSET {
+	padding: 1em;
+	margin: 1em;
+}
+
+FORM.filter FIELDSET UL {
+	margin: 0;
+}
+FORM.filter FIELDSET UL,
+FORM.filter FIELDSET LABEL {
+	display: block;
+	float: left;
+	margin-right: 1em;
+	padding: 0;
+}
+
+FORM.filter FIELDSET LI {
+	list-style: none;
+	margin-bottom: 0.5em;
+}
+
+FORM.filter FIELDSET LI LABEL {
+	display: inline;
+	float: none;
+}
+
+FORM.filter FIELDSET UL.tagSelection LABEL {
+	display: inline;
+	float: none;
+	margin-right:0.5em;/*reduce from above*/
+}
+
+/* cannot use FIELDSET>LABEL because of IE<=6 */
+FORM.filter FIELDSET LABEL INPUT,
+FORM.filter FIELDSET LABEL SELECT,
+FORM.filter FIELDSET LABEL SPAN,
+FORM.filter FIELDSET LABEL TEXTAREA {
+	display: block;
+	margin: 0.5em 0;
+}
+FORM.filter FIELDSET * LABEL INPUT,
+FORM.filter FIELDSET * LABEL SELECT,
+FORM.filter FIELDSET * LABEL TEXTAREA,
+FORM.filter FIELDSET LABEL SPAN INPUT,
+FORM.filter FIELDSET LABEL SPAN SELECT,
+FORM.filter FIELDSET LABEL SPAN TEXTAREA {
+	display: inline;
+	vertical-align: top;
+	margin: 0 0.5em 0 0;
+}
+
+/* following declaration is important to avoid strange FF behaviour */
+FORM.filter FIELDSET LABEL SPAN SELECT {
+	margin: 0;
+}
+
+FORM.filter FIELDSET P
+{
+	clear: left;
+	display: block;
+}
+
+/*FORM.filter INPUT[type="submit"] {
+	margin-top: 1.8em;
+}*/
+
+FORM.properties UL, FORM#update UL {
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+
+FORM.properties LI, FORM#update UL {
+	margin-bottom: 0.5em;
+	padding: 0;
+	line-height: 1.8em;
+	clear: left;
+}
+
+FORM.properties SPAN.property {
+	font-weight: bold;
+	float: left;
+	width: 50%;
+	text-align: right;
+	margin: 0;
+	padding: 0 0.5em 0 0;
+}
+
+#configContent fieldset {
+  border:none;
+  padding-left:20px;
+}
+#configContent fieldset:not(.no-border) {
+  border-top:1px solid #bbb;
+}
+#configContent legend {
+  padding-left:0;
+  margin-left:-20px;
+}
+#configContent label:not(.no-bold) {
+  font-weight: bold;
+}
+
+#notifyAdmin label {
+   white-space:nowrap;
+}
+
+#theHeader H1 {
+	margin-bottom: 0.5em;
+}
+
+/* button tools */
+UL.actions {
+	text-indent: 0;
+	list-style: none;
+}
+UL.actions LI {
+	display: inline;
+}
+
+UL.tagSelection {
+	width: 99%;
+	margin: 1em 0 1em 0;
+	padding: 0;
+}
+
+UL.tagSelection LI {
+	display:inline-block;
+        width:150px!important;
+        overflow:hidden;
+	white-space: nowrap;
+}
+
+/* jQuery tooltips */
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+
+.cluetip-outer {
+	position: relative;
+	border: 1px solid #111111;
+	color: #dddddd;
+	background-color: #222222;
+	text-align: left;
+}
+.cluetip-title {
+	margin: 0 0 5px;
+	padding: 8px;
+	color: #666666;
+	background-color: #d3d3d3;
+	font-size: 1.1em;
+	font-weight: bold;
+}
+.cluetip-inner {
+	padding: 10px;
+}
+
+/* jQuery datepicker */
+img.ui-datepicker-trigger {
+  cursor : pointer;
+  vertical-align: middle;
+  margin:-3px 5px 2px 5px;
+}
+
+/* Add photos, direct mode */
+#uploadBoxes P {
+  margin:0;
+  margin-bottom:2px;
+  padding:0;
+}
+
+#batchLink {
+  text-align:center;
+}
+
+.category_selection {
+  min-height:65px;
+  margin-top:5px;
+}
+
+.category_selection TABLE {
+  margin:0;
+}
+
+#photosAddContent {
+  text-align:left;
+}
+
+#photosAddContent FIELDSET {
+  width:650px;
+  margin:0 auto 20px auto;
+}
+
+#photosAddContent P {
+  margin:0;
+}
+
+#photosAddContent TH {
+  text-align:right;
+  padding-right: 5px;
+}
+
+#uploadFormSettings input[type="text"] {
+  text-align:right;
+}
+
+#uploadFormSettings TH {
+  width:50%;
+}
+
+html, body {height:100%; margin:0; padding:0;}
+#the_page {min-height:100%; position:absolute; width:100%; padding:0;margin:0;}
+
+#pwgMain {
+  padding: 10px 5px 60px;
+}
+
+#footer {
+  position:absolute;
+  bottom:0;
+  width:100%;
+	height: 34px;
+	line-height: 34px;
+	background-repeat: no-repeat;
+	background-position: 7px 2px;
+	background-color:#464646;
+  color:#aaa;
+}
+
+#footer A {color:#ccc;}
+#footer A:hover {color:#fff}
+
+#adminHome {
+  text-align:center;
+  margin-bottom:15px;
+  line-height:30px;
+  width:200px;
+  margin-left:5px;
+  -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;
+}
+
+#adminHome A {display:block; font-size:1.1em; font-weight:bold;}
+#adminHome A {text-decoration:none;}
+
+#piwigoInfos {float:left; margin-left:140px;}
+#pageInfos {float:right; margin-right:10px;}
+
+/* TipTip CSS - Version 1.2 */
+
+#tiptip_holder {
+	display: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 99999;
+}
+
+#tiptip_holder.tip_top {
+	padding-bottom: 5px;
+}
+
+#tiptip_holder.tip_bottom {
+	padding-top: 5px;
+}
+
+#tiptip_holder.tip_right {
+	padding-left: 5px;
+}
+
+#tiptip_holder.tip_left {
+	padding-right: 5px;
+}
+
+#tiptip_content {
+	font-size: 11px;
+	color: #fff;
+	text-shadow: 0 0 2px #000;
+	padding: 4px 8px;
+	border: 1px solid rgba(255,255,255,0.25);
+	background-color: rgb(25,25,25);
+	background-color: rgba(25,25,25,0.92);
+	background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));
+	border-radius: 3px;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	box-shadow: 0 0 3px #555;
+	-webkit-box-shadow: 0 0 3px #555;
+	-moz-box-shadow: 0 0 3px #555;
+}
+
+#tiptip_arrow, #tiptip_arrow_inner {
+	position: absolute;
+	border-color: transparent;
+	border-style: solid;
+	border-width: 6px;
+	height: 0;
+	width: 0;
+}
+
+#tiptip_holder.tip_top #tiptip_arrow {
+	border-top-color: #fff;
+	border-top-color: rgba(255,255,255,0.35);
+}
+
+#tiptip_holder.tip_bottom #tiptip_arrow {
+	border-bottom-color: #fff;
+	border-bottom-color: rgba(255,255,255,0.35);
+}
+
+#tiptip_holder.tip_right #tiptip_arrow {
+	border-right-color: #fff;
+	border-right-color: rgba(255,255,255,0.35);
+}
+
+#tiptip_holder.tip_left #tiptip_arrow {
+	border-left-color: #fff;
+	border-left-color: rgba(255,255,255,0.35);
+}
+
+#tiptip_holder.tip_top #tiptip_arrow_inner {
+	margin-top: -7px;
+	margin-left: -6px;
+	border-top-color: rgb(25,25,25);
+	border-top-color: rgba(25,25,25,0.92);
+}
+
+#tiptip_holder.tip_bottom #tiptip_arrow_inner {
+	margin-top: -5px;
+	margin-left: -6px;
+	border-bottom-color: rgb(25,25,25);
+	border-bottom-color: rgba(25,25,25,0.92);
+}
+
+#tiptip_holder.tip_right #tiptip_arrow_inner {
+	margin-top: -6px;
+	margin-left: -5px;
+	border-right-color: rgb(25,25,25);
+	border-right-color: rgba(25,25,25,0.92);
+}
+
+#tiptip_holder.tip_left #tiptip_arrow_inner {
+	margin-top: -6px;
+	margin-left: -7px;
+	border-left-color: rgb(25,25,25);
+	border-left-color: rgba(25,25,25,0.92);
+}
+
+/* Webkit Hacks  */
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+	#tiptip_content {
+		padding: 4px 8px 5px 8px;
+		background-color: rgba(45,45,45,0.88);
+	}
+	#tiptip_holder.tip_bottom #tiptip_arrow_inner {
+		border-bottom-color: rgba(45,45,45,0.88);
+	}
+	#tiptip_holder.tip_top #tiptip_arrow_inner {
+		border-top-color: rgba(20,20,20,0.92);
+	}
+}
+
+/* Set the width of the menubar for the galery */
+#menubar {
+  width: 18em;
+  margin: 10px 0 50px 5px;
+  display: inline;
+  float: left;
+  left: 0;
+}
+
+#menubar dt [class^=icon-] {
+  font-size:120%;
+}
+
+#menubar dd [class^="icon-"]:before {
+    margin-right: 0.5em;
+}
+
+.content {
+  padding:0 5px 0 0;
+  margin: 0 5px 0 227px;
+  z-index:99;
+}
+
+#thePopuphelpPage {
+  min-width: 0; /*reset default min width because no scrollbar here*/
+}
+
+#thePopuphelpPage #pwgHead {display:none}
+#thePopuphelpPage #footer  {display:none}
+
+.themeBox {display:inline-table; text-align:center; height:192px; background-color:#eee; margin:5px; border-radius:5px; overflow:hidden; }
+
+.themeBox IMG {border:1px solid white; margin:0 15px;}
+.themeName {font-size:1em; margin:5px 0; position:relative; }
+.themeActions {display: table-row; font-size:12px; height: 43px; }
+.themeActions DIV {display: table-cell; vertical-align: middle; line-height:18px; }
+.themeActions A {}
+
+#themesContent .themeBox IMG {width:150px; height:120px;}
+#themesContent H3 {font-size:16px; text-align:left; border-bottom:1px solid #444; letter-spacing:1px; margin:5px;}
+.themeBoxes {min-height:0;text-align:left;}
+
+h2 { letter-spacing:1px; font-weight:bold;}
+h2:lang(en) { text-transform:capitalize; }
+
+#pluginsMenuSeparator {width:80%; margin:5px auto;}
+
+#helpContent P {text-align:left; margin-left:10px;}
+#helpContent LI, #ftpPage LI {margin-top:10px;}
+#helpContent P.nextStepLink {text-align:center; font-weight:bold; margin-bottom:20px;}
+
+#availablePlugins FIELDSET  {border:none;}
+
+/**
+ * Informations box in administration
+ */
+.infos, .errors, .warnings {
+  text-align: left;
+  margin: 5px;
+  padding: 10px 50px 10px 10px;
+  font-weight:bold;
+  background-repeat: no-repeat;
+  background-position: 5px 5px;
+  padding:5px 70px 0pt 53px;
+  min-height: 54px;
+}
+
+.infos {
+  color: #0a0;
+  background-color:#c2f5c2;
+  background-image: url(icon/infos.png);
+}
+
+.errors {
+  color: #f22;
+  background-color: #ffd5dc;
+  background-image: url(icon/errors.png);
+}
+
+.warnings {
+  color: #ee8800;
+  background-color:#ffdd99;
+  background-image: url(icon/warnings.png);
+}
+
+.infos li, .errors li, .warnings li { list-style-type:square; }
+.infos .submit {margin-left:30px;}
+
+.checkActions {text-align:left;padding:0;margin:0;}
+
+.pluginBoxes {
+  text-align:left;
+  position:relative;
+}
+
+.pluginBox {
+  margin-bottom:10px;
+  border-width:1px;
+  border-style:solid;
+  border-radius:5px;
+  -moz-border-radius:5px;
+ }
+.pluginBox table {width:99%;}
+.pluginBox td {text-align:left;}
+.pluginBox td.pluginDesc img {vertical-align:middle;}
+.pluginBoxNameCell {width:180px; vertical-align:top;}
+.pluginBoxes .inactive, .pluginBoxes .uninstalled {opacity:0.8;filter:alpha(opacity=80);}
+
+.pluginMiniBox {
+  display:inline-table;
+  text-align:center;
+  width:250px;
+  height:40px;
+  margin:5px;
+  border-width:1px;
+  border-style:solid;
+  border-radius:5px;
+  -moz-border-radius:5px;
+  overflow:hidden;
+ }
+.pluginMiniBoxNameCell {font-size:1.05em; margin:5px 0;position:relative;}
+.pluginActions {display: table-row; font-size:0.95em; color:#777;}
+.pluginActions DIV {display: table-cell; vertical-align: middle; line-height:18px; }
+.pluginMiniBox .showInfo, .themeBox .showInfo { display:block;position:absolute;top:0;right:5px;width:15px; }
+
+.warning:before {content:url(icon/warning.png);vertical-align:top;}
+.deactivate_all {text-align:right;font-size:0.95em;}
+.showDetails {text-align:right; margin-bottom:-15px; margin-top:-10px; padding-right:1em;}
+
+.languageBoxes {min-height:0;text-align:left;}
+.languageBox {display:inline-table; text-align:center; width:200px; height:40px; margin:5px; -moz-border-radius:5px;border-radius:5px; overflow:hidden; }
+.languageName {font-size:1.1em; margin:5px 0;}
+.languageActions {display: table-row; font-size:12px; }
+.languageActions DIV {display: table-cell; vertical-align: middle; line-height:18px; }
+
+#ui-datepicker-div {-moz-border-radius:5px; border-radius:5px;}
+#ui-datepicker-div .ui-icon-circle-triangle-w, #ui-datepicker-div .ui-icon-circle-triangle-e {color:transparent;}
+#ui-datepicker-div A.ui-datepicker-prev, #ui-datepicker-div A.ui-datepicker-next {background-color:transparent;}
+#ui-datepicker-div A.ui-datepicker-prev:hover, #ui-datepicker-div A.ui-datepicker-next:hover {-moz-border-radius:5px;}
+
+.HelpActions {
+  float:right;
+  margin:0;
+  padding:0;
+  padding-top:2px;
+  padding-left:3px;
+}
+
+.HelpActions a { border:0; margin:0; }
+.HelpActions li {list-style-image:none; list-style-position:outside; list-style-type:none; text-align:center; text-indent:0pt; }
+
+legend {text-align:left;}
+
+/* local-layout */
+/* You can modify this file */
+
+/* default-colors */
+/* So that non-links are slightly greyed out */
+.content .navigationBar {
+	color: #999;
+}
+
+/* Tables & forms */
+
+SELECT, TEXTAREA {
+  color:#999;
+  background-color: #666;
+}
+
+INPUT:focus, SELECT:focus, TEXTAREA:focus {
+  background-color: #444;	/* whitesmoke */
+}
+
+/* some theme set a border on INPUT  which is not pretty for radio/checkbox */
+INPUT[type="radio"], INPUT[type="checkbox"] {
+  border: none;	/* <= Opera needs this */
+}
+
+
+/**
+ * Header message like upgrade
+ */
+.header_msgs {
+  text-align:center;
+  font-weight: bold;
+  color:#333;
+  background-color: transparent;
+  margin: 1px;
+  padding: 1px;
+}
+
+/**
+ * Header notes box in public/administration
+ */
+.header_notes {
+  border: 1px solid #666;
+  background: transparent url(icon/note.png) no-repeat right top;
+  font-weight: bold;
+  margin: 14px 24px 14px 14px;
+  padding: 5px 0 0 0;
+  top: 90px;
+  position: absolute;
+  text-align: right;
+}
+
+LEGEND {
+  font-weight: bold;
+  letter-spacing: 1px;
+  padding: 0 10px;
+}
+
+/* Batch Manager, global mode */
+#batchManagerGlobal #action p {text-align:left;}
+#batchManagerGlobal .bulkAction {text-align:left;margin:15px 0;padding:0;}
+#batchManagerGlobal #action_del_tags ul.tagSelection {margin:0 !important; width:620px;}
+#batchManagerGlobal #checkActions {text-align:left; margin:0 0 20px 0;}
+#batchManagerGlobal ul.thumbnails div.actions {display:none;position:absolute;top:0;right:5px;color:#fff}
+#batchManagerGlobal ul.thumbnails div.actions a {color:#fff;}
+#batchManagerGlobal ul.thumbnails span.wrap1:hover div.actions {display:block;}
+#batchManagerGlobal #selectedMessage {padding:5px; border-radius:5px;}
+#batchManagerGlobal #applyOnDetails {font-style:italic;}
+#batchManagerGlobal .actionButtons {text-align:left;}
+#batchManagerGlobal #filterList {padding-left:5px;}
+#batchManagerGlobal #filterList li {margin-bottom:5px; list-style-type:none;}
+#batchManagerGlobal a.removeFilter {background: url(icon/remove_filter.png) no-repeat top left;width:7px;height:7px;display:inline-block;}
+#batchManagerGlobal a.removeFilter:hover {background: url(icon/remove_filter_hover.png);}
+#batchManagerGlobal .removeFilter span {display:none}
+#batchManagerGlobal #applyFilterBlock {margin-top:20px;}
+#batchManagerGlobal .useFilterCheckbox {display:none;}
+
+#batchManagerGlobal #filter_dimension blockquote {margin:5px 0 20px 15px;}
+#batchManagerGlobal #filter_dimension .ui-slider-horizontal {width:650px;margin:5px 0 10px 0;}
+
+#order_filters a.addFilter {font-weight:normal;margin-left:20px;}
+#order_filters a.removeFilter {font-weight:normal;}
+#order_filters span.property span.filter:first-child a.removeFilter {display:none;} /* can't delete the first field */
+#order_filters span.filter {display:block;margin-left:20px;}
+#order_filters .transparent {opacity:0.5;filter:alpha(opacity=50);}
+#order_filters .order_by_is_custom {display:block;font-weight:normal;font-style:italic;margin-left:20px;}
+
+/* Upload Form */
+#uploadBoxes .file {margin-bottom:5px;text-align:left;}
+#uploadBoxes {margin-top:20px;}
+#addUploadBox {margin-bottom:2em;}
+
+p.uploadInfo {text-align:left;font-size:90%;color:#999;}
+p#uploadWarningsSummary {text-align:left;margin-bottom:1em;font-size:90%;color:#999;}
+p#uploadWarningsSummary .showInfo {margin-left:3px;}
+p#uploadWarnings {display:none;text-align:left;margin-bottom:1em;font-size:90%;color:#999;}
+p#uploadModeInfos {text-align:left;margin-top:1em;font-size:90%;color:#999;}
+
+#photosAddContent p.showFieldset {text-align:left;margin: 0 auto 10px auto;width: 650px;}
+
+#uploadProgress {width:650px; margin:10px auto;font-size:90%;}
+#progressbar {border:1px solid #ccc; background-color:#eee;}
+.ui-progressbar-value { background-image: url(images/pbar-ani.gif); height:10px;margin:-1px;border:1px solid #E78F08;}
+
+/* Tag Manager */
+.warningDeletion {display:none;font-style:italic;}
+
+#debug { margin-left: 227px; font-size:12px; }
+
+/* Album Properties */
+#albumThumbnail {
+  width:1%;
+  padding-right:10px;
+  text-align:center;
+}
+
+#albumThumbnail img {
+  border:2px solid #ddd;
+}
+
+#albumLinks {
+  vertical-align:top;
+  border-left:2px solid #ddd;
+  padding-left:10px;
+}
+
+/* Album Manager */
+#addAlbumForm input[name="category_name"], #formCreateAlbum input[name="virtual_name"] {
+  width:300px;
+}
+
+/* Pending Comments */
+#pendingComments {
+  padding:0 5px 0 10px;
+}
+
+#pendingComments table {
+  width:100%;
+}
+
+#pendingComments .bottomButtons {
+  text-align:left;
+}
+
+FORM#categoryOrdering p.albumTitle {margin:0;}
+FORM#categoryOrdering p.albumActions {visibility:hidden; margin:0}
+FORM#categoryOrdering .categoryLi:hover p.albumActions {visibility:visible;}
+
+.showCreateAlbum {text-align:left; margin:0 1em 1em 1em;line-height:22px;}
+#autoOrder p, #createAlbum p {text-align:left; margin:0 0 1em 0;}
+#autoOrder p.actionButtons, #createAlbum p.actionButtons {margin-bottom:0;}
+
+#ftpPage p {text-align:left;margin:1em;}
+#ftpPage fieldset p {margin:0;}
+
+/* watermark configuration screen */
+#watermarkPositionBox {
+  border:2px solid #ccc;
+  width:500px;
+  padding:5px;
+  background-color:#e5e5e5;
+}
+
+#watermarkPositionBox label {
+  font-weight:normal;
+  display:block;
+  color:#444;
+}
+
+#watermarkPositionBox label.middle {
+  margin:50px;
+  text-align:center;
+}
+
+#watermarkPositionBox label.right {
+  float:right;
+}
+
+#positionCustomDetails {
+  margin-left:20px;
+  display:none;
+}
+
+#positionCustomDetails label {
+  font-weight:normal;
+}
+
+input[type="text"].dError {border-color:#ff7070; background-color:#FFe5e5;}
+.dErrorDesc {background-color:red; color:white; padding:0 5px;border-radius:10px; font-weight:bold;cursor:help;}
+
+#wImg {max-height:100px;border:2px solid #ccc;margin-top:5px;}
+#addWatermark {display:none;}
+
+.adminMenubarCounter {
+  background-color:#666;
+  color:white;
+  padding:1px 5px;
+  border-radius:10px;
+  -moz-border-radius:10px;
+  -webkit-border-radius:10px;
+  margin-left:5px;
+}
+
+.groups {
+  text-align:center;
+}
+.groups li {
+  vertical-align: middle;
+  position: relative;
+  display: inline-block;
+  text-align: left;
+  height: 300px;
+  width: 250px;
+  margin: 5px;
+  border-radius: 5px;
+}
+.groups p {
+  text-align:left;
+}
+.groups label>p {
+  margin: 0;
+  border-radius: 5px 5px 0 0;
+  padding: 2px;
+  text-align: center;
+}
+
+.groups input {
+  float: right;
+}
+p.list_user {
+  text-align: left;
+  max-height: 200px;
+  overflow: auto;  
+}
+a.group_perm {
+  position: absolute;
+  bottom: 5px;
+  right: 5px;
+}
+
+.openUserDetails {
+  font-size:16px;
+  margin-left:-8px;
+  cursor:pointer;
+}
+
+.userProperties {max-width:730px;}
+.userPropertiesContainer {border-top:1px solid #ddd;margin-top:1em;}
+.userPropertiesSet {width:350px;float:left;padding-top:5px}
+.userPropertiesSetTitle {font-weight:bold;margin-bottom:1em;}
+.userPrefs {border-left:1px solid #ddd;padding-left:10px;}
+.userProperty {width:340px;float:left;margin-bottom:15px;}
+.userActions {float:right;text-align:right;}
+
Index: /tags/2.6.0RC1/admin/themes/default/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/default/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/default/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,9 @@
+<?php
+$themeconf = array(
+  'name'          => 'default',
+  'icon_dir'       => 'themes/default/icon',
+  'admin_icon_dir' => 'admin/themes/default/icon',
+  'mime_icon_dir'  => 'themes/default/icon/mimetypes/',
+  'local_head'     => 'local_head.tpl',
+);
+?>
Index: /tags/2.6.0RC1/admin/themes/roma/index.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/roma/index.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/roma/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/admin/themes/roma/mail-css.tpl
===================================================================
--- /tags/2.6.0RC1/admin/themes/roma/mail-css.tpl	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/roma/mail-css.tpl	(revision 25596)
@@ -0,0 +1,18 @@
+/* Theme wipi mail css */
+
+body {ldelim} background-color:#111; color:#69c;}
+#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;}
+#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;}
+#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom;
+color: #69c;}
+h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/themes/{$themeconf.theme}/images/tableh1_bg.png);}
+img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; }
+img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; }
+a {ldelim} color: #69c; background: transparent; }
+a:hover {ldelim} color: #f92; }
+a.PWG {ldelim} border: 0px; }
+a.PWG .P {ldelim} color : #f92; }
+a.PWG .W {ldelim} color : #aaa; }
+a.PWG .G {ldelim} color : #69c; }
+a.PWG:hover .P {ldelim} color : #69c; }
+a.PWG:hover .G {ldelim} color : #f92; }
Index: /tags/2.6.0RC1/admin/themes/roma/theme.css
===================================================================
--- /tags/2.6.0RC1/admin/themes/roma/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/roma/theme.css	(revision 25596)
@@ -0,0 +1,339 @@
+/* generic colors - roma
+.gcText { color: #666666; }                 used for text
+.gcText2 { color: #FF3366; }                used for table header
+.gcText3 { color: #FF3366; }                used for tabs text
+.gcTextInput { color:#999999; }             used for inputs
+.gcLink { color: #FF7700; }                 used for link
+.gcLinkHover { color: #FF3333; }            used for link
+.gcBgPage { background-color: #111111; }               used for page background
+.gcBgTabSheet { background-color: #222222; }           used inside tabsheet & menu
+.gcBgTableRow1 { background-color: #111111; }            used in for tables rows background
+.gcBgTableRow2 { background-color: #222222; }            used in tables rows & some widgets background
+.gcBgInput { background-color:#444444; }                      used for inputs
+.gcBorder    { border-color: #FF3363; }            used for borders
+.gcBorder2   { border-color: #666666; }            used for widgets borders
+.gcBorderInput { border-color:#666666; }           used for inputs
+*/
+/* text color */
+body, h3, dt, .throw, .content, label, LEGEND {
+	color:#666;
+}
+
+INPUT, select, textarea { color:#999; background-color: #444; }
+option[disabled] { background-color: #999; color: #444; }
+input[type="radio"], input[type="checkbox"] { background-color: transparent; }
+
+
+.showInfo { color:#666; }
+.showInfo:hover { color:#999; }
+
+h2 { color: #ccc; }
+
+.header_notes {
+  background: transparent url(../default/icon/note.png) no-repeat right top;
+  border: none;
+  min-height: 48px;
+  padding: 15px 60px 0 0;
+  right: 0;
+  width: 550px;
+}
+html, body { min-height: 100%; }
+
+body {
+	background-color:#111111;
+}
+
+/* #the_page { margin: 0; padding: 0; z-index: 1; top:0px; */
+/* padding-top: 0; min-height: 100%; width:100%; position:absolute; left:0px; } */
+h3, .row2, .content { background-color: #222; }
+.throw, .row1 { background-color:#111; }
+.throw em { font-style: normal; color: #ff3363; }
+
+#content {
+	border: 1px solid #222;
+	min-height: 466px; 
+	margin-top: 15px;
+}
+
+.content h3 { font-size:20px; letter-spacing:-0.4px; margin:0 20px 12px 0; text-align:center; background:none; border: 0; }
+.content h3 ~ h3{ margin-top: 40px; }
+.content h4 { font-size:14px; text-align:left; padding:3px; margin: 2px;}
+
+.content dl, dd { margin:5px; }
+
+
+UL.thumbnails span.wrap2:hover { background-color#7CBA0F; color:#666; }
+UL.thumbnails span.wrap2 {
+	background-color:#333;
+}
+
+/* .throw, */ td h3 {
+ background-image: url(images/fillet.png); background-repeat: repeat-x; }
+/* borders */
+fieldset { border: 2px solid #333; }
+
+.buttonLike, INPUT, SELECT, TEXTAREA {
+	border: 1px solid #666;
+}
+input:focus, select:focus, textarea:focus {
+	background-color: #444;
+	color: #999;
+}
+
+TEXTAREA { cursor:text; font-size: 13px; }
+.tagSelection label { padding-right:12px; }
+.tagSelection LI.tagSelected {background-color:#aaa;}
+.tagSelected LABEL {color:#000;}
+ul.thumbnails input { color:#999; font-size:10px; margin:0; background-color:#444; text-align: center;}
+INPUT[type="submit"]:hover , INPUT[type="reset"]:hover  { cursor: pointer; }
+INPUT.bigbutton:hover { background-color: #222;  color:#f33; border: 0; }
+.throw  { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; color: #ff3363; }
+label { cursor:pointer }
+.categoryLi, .menuLi { background: #333 }
+.menuLi_hidden { background: #333 !important; }
+a.Piwigo {
+  font-family: verdana, arial, helvetica, sans-serif !important;
+  font-size: 11px; font-weight: normal; letter-spacing: 0;
+  color : #F33; text-decoration: none; border: 0; }
+a.Piwigo:hover  span.Piwigo  {
+  border-bottom: 1px solid #FF3363;
+}
+
+.categoryUl>li:not(.virtual_cat) {
+  background:url(images/stripe-cat.png);
+}
+
+/* RADU - I comment this because it makes FF form controls activation very slow)
+*, *:focus, *:active, input:active, a:active, input:focus, a:focus { outline: none; -moz-outline-width: 0px; }
+*/
+
+a { color:#f70; }
+a:hover, a:active { color: #f33; cursor: pointer; }
+.content .navigationBar {color:#666;}
+ul.actions, .content form#waiting  {text-align:center;}
+
+.header_msgs { background:transparent url(images/header_msgs-bg.gif) repeat scroll right top;
+border:0; color:#333; font-size:24px; height:30px; margin:0; padding:10px 0 0;
+text-align:center; width:100%; }
+
+/* tabsheets are often used in admin  pages => No specific css files */
+#tabsheet { width:auto; margin:-1px; margin-right:-6px; padding:0;
+border:1px solid #111111; border-bottom:1px solid #ff3363; background-color:#111111;}
+.tabsheet { display:table; white-space:nowrap; padding-left:10px; margin:0; width:auto;
+font-family:verdana,arial,helvetica,sans-serif; font-size:8px;
+list-style-type:none; list-style-image:none; text-decoration:none; }
+.tabsheet li { background:#222222; float:left; margin:0 6px 0 0; overflow:hidden; text-align:right; border:1px solid #ff3363; border-bottom:none; position:relative; top:11px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px;border-radius:5px 5px 0 0;}
+.tabsheet a {
+outline:none; color:#666; display:block; font-size:11px; border:0;
+font-weight:bold; overflow:hidden; padding:6px;
+text-align:right; text-decoration:none; margin: 0; }
+.tabsheet a:first-letter { text-transform:capitalize; }
+.tabsheet li.selected_tab  {
+  border-bottom:1px solid #222222;
+}
+.tabsheet li:hover, .tabsheet li.selected_tab  {
+margin-top:4px; padding-bottom:3px; padding-top:3px; top:1px;
+ }
+.tabsheet a:hover, .tabsheet li.selected_tab  a { color: #F36; }
+.tabsheet a span { background-color:#222; font-size:10px; margin-right:2px; padding:0 3px 0 1px; }
+/* menubar is on all admin pages => No specific css file */
+#menubar {
+background:transparent url(images/menuBoxBottom_new.png) no-repeat scroll left bottom;
+border:0;
+padding:0; width:207px; z-index:99; text-align: left;
+}
+
+#menubar dd {
+background: transparent url(images/menubar-detail.png) repeat-y top left;
+margin: 0; padding: 0 0 10px 0; }
+#menubar dl {
+background:transparent url(images/menuBoxTop_new.png) no-repeat scroll left top;
+width: 207px; border:0; margin: 0; padding: 0; display: block; min-height:35px; }
+#menubar dl.first {
+background:transparent url(images/menubar-top.png) no-repeat scroll left 1px; }
+#menubar dl.last { padding: 0 0 24px 0;}
+#menubar dt { 
+	margin: 0; display: block; background: none; left:10px; font-weight:bold;
+	position:relative; padding: 5px 1px 4px 5px; top:-8px; font-size: 13px; color: #666;  outline:none;
+	cursor:pointer;
+}
+#menubar dt  span { background-color: #111; }
+#menubar li { margin: 0 0 0 12px; }
+#menubar li.external { list-style-image:url(images/external_inactive.png); padding:10px 0px 0pt 10px; }
+#menubar li.external:hover { list-style-image:url(images/external_active.png); }
+#menubar ul { color: #333; margin:0 9px 0 9px; line-height: 16px;
+  list-style-type: none; list-style-position: inside; padding: 0; }
+#menubar ul.scroll { overflow-y:auto; max-height:500px;}
+
+#menubar dd [class^="icon-"]:before {
+    color: #666;
+}
+
+/* jQuery tooltips */
+.ui-tooltip {
+	color: #eee;
+	background-color: #000;
+}
+.cluetip-outer { border-color: #666; color: #666; background-color: #222; }
+.cluetip-title { color: #ff3363; background-color: #111; }
+/* jQuery ui resizable */
+.ui-resizable { position: relative; }
+.ui-wrapper { border: 0; }
+.ui-wrapper input, .ui-wrapper textarea { border: 0; }
+
+/* Global handle styles */
+.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; }
+.ui-resizable .ui-resizable-handle { display: block; }
+body .ui-resizable-disabled .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
+body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */
+.ui-resizable-n { cursor: n-resize; height: 6px; width: 100%; top: 0px; left: 0px; background: transparent url(images/resizable-n.gif) no-repeat scroll center top; }
+.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; background: transparent url(images/resizable-s.gif) no-repeat scroll center top; }
+.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-e.gif) no-repeat scroll right center; }
+.ui-resizable-w { cursor: w-resize; width: 6px; left: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-w.gif) no-repeat scroll right center; }
+.ui-resizable-se { cursor: se-resize; width: 9px; height: 9px; right: 0px; bottom: 0px; background: transparent url(images/resizable-se.gif); }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: 0px; bottom: 0px; background: transparent url(images/resizable-sw.gif); }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: 0px; top: 0px; background: transparent url(images/resizable-nw.gif); }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: 0px; top: 0px; background: transparent url(images/resizable-ne.gif); }
+
+#ui-datepicker-div {background-color: #555; border:2px solid #333;}
+#ui-datepicker-div .ui-datepicker-title {color:white;}
+#ui-datepicker-div .ui-icon-circle-triangle-w {background: transparent url(icon/prev.png) no-repeat;}
+#ui-datepicker-div .ui-icon-circle-triangle-e {background: transparent url(icon/next.png) no-repeat;}
+#ui-datepicker-div A.ui-datepicker-prev:hover,
+#ui-datepicker-div A.ui-datepicker-next:hover
+{
+  background-color:#eee;border:1px solid #aaa;
+}
+.ui-datepicker th {color:#ccc;}
+.ui-state-disabled {color:#aaa;}
+
+.ui-slider { background:#444;border-radius:2px;border:1px solid #666; }
+.ui-slider .ui-slider-handle { border:1px solid #f36;background:#222;border-radius:0.6em; }
+.ui-slider .ui-slider-range { background:#666;border-radius:2px; }
+
+#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div  a { background-color: #111; color: #f70 !important;}
+#ui-datepicker-div .ui-datepicker-days-row { background-color: #444;}
+#ui-datepicker-div .ui-datepicker-week-end-cell, #ui-datepicker-div .ui-datepicker-week-end-cell  a { background-color: #222; color: #f33; border-color: #444; border-top-color: #222; border-left-color: #222;}
+#ui-datepicker-div .ui-datepicker-title-row { background-color: #111;}
+#ui-datepicker-div .ui-datepicker-title-row .ui-datepicker-week-end-cell a { color: #f33;}
+#ui-datepicker-div  a:hover { color: #ff3333 !important; border: 0; background-color: #111 !important;}
+#ui-datepicker-div .ui-datepicker-header select { background-color:#444; color:#999; font-weight:normal;}
+#ui-datepicker-div .ui-datepicker-links { background-color:#222;}
+#ui-datepicker-div .ui-datepicker-header { background-color:#444;}
+#ui-datepicker-div .ui-datepicker-current-day { background-color: #111 !important; border-color: #444; border-top-color: #111; border-left-color: #111;}
+#ui-datepicker-div .ui-datepicker-days-cell { background-color:#444; border:1px solid #222; border-top-color: #444; border-left-color: #444;}
+INPUT[type="text"].large  { width: 317px; }
+
+.buttonLike, input[type="button"], input[type="submit"], input[type="reset"] {
+	color:#ff3363;
+	background-color:#222;
+	border-color: #ff3363;
+	padding: 1px 15px;
+}
+
+.buttonLike:hover, input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover {
+	color:#999; 
+	border-color: #666;
+	text-decoration: none;
+}
+
+.bigbutton { background:transparent url(images/quickLocalSync_inactiv.png) no-repeat scroll left top; display: block;
+color:#111; font-size:28px; height:161px; margin: 0 20px 0 auto; padding:0 18px 0; text-align:center; width:625px;
+position:relative;  z-index: 50;}
+.bigtext { display:block; font-weight:bold; left:225px; position:relative; top:35px; width:320px;  z-index: 55; cursor:pointer; }
+.bigbutton:hover { background:transparent url(images/quickLocalSync_hover.png) no-repeat scroll left top; color: #000; }
+.bigbutton input { background:transparent url(images/transparent.gif) repeat scroll left top; border:0;
+display:block; height:85px; left:225px; position:relative; top:-42px; width:313px; z-index:99; padding:0;
+color:transparent;}
+.bigbutton input:hover { cursor:pointer; background:transparent url(images/transparent.gif) repeat scroll left top; border:0; padding:0;color:transparent;}
+/* hacks */
+* html[lang="en"] body .content h2 , *+html[lang="en"] body .content h2 { text-transform:capitalize; } /* IE */
+*+html  .bigtext { left: 70px; }
+*+html  .bigbutton input, * html  .bigbutton input  { left:0px; position:relative; top:-40px; }
+
+* html .bigtext { margin-right: 300px; }
+
+#adminHome       {background-color:#222;}
+#adminHome:hover {background-color:#333;}
+
+.themeBox {background-color:#333;}
+.themeBox IMG {border:1px solid #666;}
+.themeName {color:#ccc;}
+.themeActions A {border-bottom:none;}
+.themeDefault {background-color:#555;}
+
+#pluginsMenuSeparator {border:1px solid #333;}
+
+#helpContent, #pLoaderPage, #ftpPage, #ftpPage LEGEND {color:#aaa;}
+
+#pwgHead, #footer {background-color:#222;}
+#footer {background-image: url(images/piwigo_logo_small.png);}
+
+.pluginBox, .pluginMiniBox, .groups li {background-color:#333;color:#999;border-color:#333;}
+.pluginBoxNameCell, .pluginMiniBoxNameCell {color:#ddd;}
+.pluginBox.incompatible, .pluginMiniBox.incompatible {border-color:#800 !important;}
+.pluginBoxes .merged, .pluginBoxes .missing {background-color:#422;border:1px solid #800;}
+.languageBox {background-color:#333;}
+.languageName {color:#ccc;}
+.languageDefault {background-color:#555; color:#aaa;}
+
+#batchManagerGlobal .thumbSelected {background-color:#555 !important}
+#batchManagerGlobal #selectedMessage {background-color:#555; color:#ddd;}
+
+/* TokenInput (with Facebook style for ROMA) */
+ul.token-input-list {border-color:#666 !important;background-color:#444 !important;}
+ul.token-input-list li input {background-color:#444 !important;}
+li.token-input-token span {color:#878787 !important;}
+div.token-input-dropdown {background-color:#eee !important;border-color:#666 !important;}
+div.token-input-dropdown ul li {background-color:#eee !important;}
+div.token-input-dropdown ul li.token-input-selected-dropdown-item {background-color:#FF7800 !important;}
+
+#progressbar {border:1px solid #666; background-color:#666;}
+
+/* Album Properties */
+#albumThumbnail img, #albumLinks {
+  border-color:#333;
+}
+
+.selectedComment {background-color:#555; color:#fff;}
+
+.groups label>p {
+  color: #ccc;
+  font-size: 1.2em;
+  background-color:#111;
+}
+label>p.group_select {
+  color: #fff;
+  background-color:#555;
+}
+
+.userSeparator {
+  color:#666;
+}
+
+#configContent fieldset:not(.no-border) {
+  border-top-color:#444;
+}
+
+table.dataTable tr.even {
+  background-color: #111 !important;
+}
+
+table.dataTable tr.even td.sorting_1 {
+  background-color: #181818 !important;
+}
+
+table.dataTable tr.odd {
+  background-color: #222 !important;
+}
+
+table.dataTable tr.odd td.sorting_1 {
+  background-color: #282828 !important;
+}
+
+table.dataTable thead th {
+  border-color: #333 !important;
+}
+
+.userPropertiesContainer {border-color:#333;}
+.userPrefs {border-color:#333;}
Index: /tags/2.6.0RC1/admin/themes/roma/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/admin/themes/roma/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes/roma/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,6 @@
+<?php
+$themeconf = array(
+  'name'  => 'roma',
+  'parent' => 'default',
+);
+?>
Index: /tags/2.6.0RC1/admin/themes_installed.php
===================================================================
--- /tags/2.6.0RC1/admin/themes_installed.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes_installed.php	(revision 25596)
@@ -0,0 +1,178 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+
+$base_url = get_root_url().'admin.php?page='.$page['page'];
+
+$themes = new themes();
+
+// +-----------------------------------------------------------------------+
+// |                          perform actions                              |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['action']) and isset($_GET['theme']))
+{
+  $page['errors'] = $themes->perform_action($_GET['action'], $_GET['theme']);
+
+  if (empty($page['errors']))
+  {
+    if ($_GET['action'] == 'activate' or $_GET['action'] == 'deactivate')
+    {
+      $template->delete_compiled_templates();
+    }
+    redirect($base_url);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                     start template output                             |
+// +-----------------------------------------------------------------------+
+
+$themes->sort_fs_themes();
+
+$default_theme = get_default_theme();
+
+$db_themes = $themes->get_db_themes();
+$db_theme_ids = array();
+foreach ($db_themes as $db_theme)
+{
+  $db_theme_ids[] = $db_theme['id'];
+}
+
+$tpl_themes = array();
+
+foreach ($themes->fs_themes as $theme_id => $fs_theme)
+{
+  if ($theme_id == 'default')
+  {
+    continue;
+  }
+  
+  $tpl_theme = array(
+    'ID' => $theme_id,
+    'NAME' => $fs_theme['name'],
+    'VISIT_URL' => $fs_theme['uri'],
+    'VERSION' => $fs_theme['version'],
+    'DESC' => $fs_theme['description'],
+    'AUTHOR' => $fs_theme['author'],
+    'AUTHOR_URL' => @$fs_theme['author uri'],
+    'PARENT' => @$fs_theme['parent'],
+    'SCREENSHOT' => $fs_theme['screenshot'],
+    'IS_MOBILE' => $fs_theme['mobile'],
+    'ADMIN_URI' => @$fs_theme['admin_uri'],
+    );
+
+  if (in_array($theme_id, $db_theme_ids))
+  {
+    $tpl_theme['STATE'] = 'active';
+    $tpl_theme['DEACTIVABLE'] = true;
+
+    if (count($db_theme_ids) <= 1)
+    {
+      $tpl_theme['DEACTIVABLE'] = false;
+      $tpl_theme['DEACTIVATE_TOOLTIP'] = l10n('Impossible to deactivate this theme, you need at least one theme.');
+    }
+    
+    $tpl_theme['IS_DEFAULT'] = ($theme_id == $default_theme);
+  }
+  else
+  {
+    $tpl_theme['STATE'] = 'inactive';
+    
+    // is the theme "activable" ?
+    if (isset($fs_theme['activable']) and !$fs_theme['activable'])
+    {
+      $tpl_theme['ACTIVABLE'] = false;
+      $tpl_theme['ACTIVABLE_TOOLTIP'] = l10n('This theme was not designed to be directly activated');
+    }
+    else
+    {
+      $tpl_theme['ACTIVABLE'] = true;
+    }
+
+    $missing_parent = $themes->missing_parent_theme($theme_id);
+    if (isset($missing_parent))
+    {
+      $tpl_theme['ACTIVABLE'] = false;
+
+      $tpl_theme['ACTIVABLE_TOOLTIP'] = l10n(
+        'Impossible to activate this theme, the parent theme is missing: %s',
+        $missing_parent
+        );
+    }
+
+    // is the theme "deletable" ?
+    $children = $themes->get_children_themes($theme_id);
+
+    $tpl_theme['DELETABLE'] = true;
+
+    if (count($children) > 0)
+    {
+      $tpl_theme['DELETABLE'] = false;
+
+      $tpl_theme['DELETE_TOOLTIP'] = l10n(
+        'Impossible to delete this theme. Other themes depends on it: %s',
+        implode(', ', $children)
+        );
+    }
+  }
+  
+  $tpl_themes[] = $tpl_theme;
+}
+
+// sort themes by state then by name
+function cmp($a, $b)
+{ 
+  $s = array('active' => 0, 'inactive' => 1);
+  
+  if (@$a['IS_DEFAULT']) return -1;
+  if (@$b['IS_DEFAULT']) return 1;
+  
+  if($a['STATE'] == $b['STATE'])
+    return strcasecmp($a['NAME'], $b['NAME']); 
+  else
+    return $s[$a['STATE']] >= $s[$b['STATE']]; 
+}
+usort($tpl_themes, 'cmp');
+
+$template->assign(
+    array(
+      'activate_baseurl' => $base_url.'&amp;action=activate&amp;theme=',
+      'deactivate_baseurl' => $base_url.'&amp;action=deactivate&amp;theme=',
+      'set_default_baseurl' => $base_url.'&amp;action=set_default&amp;theme=',
+      'delete_baseurl' => $base_url.'&amp;action=delete&amp;theme=',
+
+      'tpl_themes' => $tpl_themes,
+    )
+  );
+
+
+$template->set_filenames(array('themes' => 'themes_installed.tpl'));
+$template->assign_var_from_handle('ADMIN_CONTENT', 'themes');
+?>
Index: /tags/2.6.0RC1/admin/themes_new.php
===================================================================
--- /tags/2.6.0RC1/admin/themes_new.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/themes_new.php	(revision 25596)
@@ -0,0 +1,138 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+
+$base_url = get_root_url().'admin.php?page='.$page['page'].'&tab='.$page['tab'];
+
+$themes = new themes();
+
+// +-----------------------------------------------------------------------+
+// |                           setup check                                 |
+// +-----------------------------------------------------------------------+
+
+$themes_dir = PHPWG_ROOT_PATH.'themes';
+if (!is_writable($themes_dir))
+{
+  $page['errors'][] = l10n('Add write access to the "%s" directory', 'themes');
+}
+
+// +-----------------------------------------------------------------------+
+// |                       perform installation                            |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['revision']) and isset($_GET['extension']))
+{
+  if (!is_webmaster())
+  {
+    $page['errors'][] = l10n('Webmaster status is required.');
+  }
+  else
+  {
+    check_pwg_token();
+
+    $install_status = $themes->extract_theme_files(
+      'install',
+      $_GET['revision'],
+      $_GET['extension']
+      );
+    
+    redirect($base_url.'&installstatus='.$install_status);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                        installation result                            |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['installstatus']))
+{
+  switch ($_GET['installstatus'])
+  {
+    case 'ok':
+      $page['infos'][] = l10n('Theme has been successfully installed');
+      break;
+
+    case 'temp_path_error':
+      $page['errors'][] = l10n('Can\'t create temporary file.');
+      break;
+
+    case 'dl_archive_error':
+      $page['errors'][] = l10n('Can\'t download archive.');
+      break;
+
+    case 'archive_error':
+      $page['errors'][] = l10n('Can\'t read or extract archive.');
+      break;
+
+    default:
+      $page['errors'][] = l10n(
+        'An error occured during extraction (%s).',
+        htmlspecialchars($_GET['installstatus'])
+        );
+  }  
+}
+
+// +-----------------------------------------------------------------------+
+// |                          template output                              |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('themes' => 'themes_new.tpl'));
+
+if ($themes->get_server_themes(true)) // only new themes
+{
+  foreach($themes->server_themes as $theme)
+  {
+    $url_auto_install = htmlentities($base_url)
+      . '&amp;revision=' . $theme['revision_id']
+      . '&amp;extension=' . $theme['extension_id']
+      . '&amp;pwg_token='.get_pwg_token()
+      ;
+
+    $template->append(
+      'new_themes',
+      array(
+        'name' => $theme['extension_name'],
+        'thumbnail' => PEM_URL.'/upload/extension-'.$theme['extension_id'].'/thumbnail.jpg',
+        'screenshot' => PEM_URL.'/upload/extension-'.$theme['extension_id'].'/screenshot.jpg',
+        'install_url' => $url_auto_install,
+        )
+      );
+  }
+}
+else
+{
+  $page['errors'][] = l10n('Can\'t connect to server.');
+}
+
+$template->assign('default_screenshot',
+  get_root_url().'admin/themes/'.$conf['admin_theme'].'/images/missing_screenshot.png'
+);
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'themes');
+?>
Index: /tags/2.6.0RC1/admin/updates.php
===================================================================
--- /tags/2.6.0RC1/admin/updates.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/updates.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=updates';
+
+if (isset($_GET['tab']))
+  $page['tab'] = $_GET['tab'];
+else
+  $page['tab'] = 'pwg';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('updates');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+include(PHPWG_ROOT_PATH.'admin/updates_'.$page['tab'].'.php');
+
+?>
Index: /tags/2.6.0RC1/admin/updates_ext.php
===================================================================
--- /tags/2.6.0RC1/admin/updates_ext.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/updates_ext.php	(revision 25596)
@@ -0,0 +1,93 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+$conf['updates_ignored'] = unserialize($conf['updates_ignored']);
+
+include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php');
+$autoupdate = new updates($page['page']);
+
+$show_reset = false;
+if (!$autoupdate->get_server_extensions())
+{
+  $page['errors'][] = l10n('Can\'t connect to server.');
+  return; // TODO: remove this return and add a proper "page killer"
+}
+
+foreach ($autoupdate->types as $type)
+{
+  $fs = 'fs_'.$type;
+  $server = 'server_'.$type;
+  $server_ext = $autoupdate->$type->$server;
+  $fs_ext = $autoupdate->$type->$fs;
+
+  if (empty($server_ext))
+  {
+    continue;
+  }
+
+  foreach($fs_ext as $ext_id => $fs_ext)
+  {
+    if (!isset($fs_ext['extension']) or !isset($server_ext[$fs_ext['extension']]))
+    {
+      continue;
+    }
+
+    $ext_info = $server_ext[$fs_ext['extension']];
+
+    if (!$autoupdate->version_compare($fs_ext['version'], $ext_info['revision_name'], $type))
+    {
+      $template->append('update_'.$type, array(
+        'ID' => $ext_info['extension_id'],
+        'REVISION_ID' => $ext_info['revision_id'],
+        'EXT_ID' => $ext_id,
+        'EXT_NAME' => $fs_ext['name'],
+        'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$ext_info['extension_id'],
+        'EXT_DESC' => trim($ext_info['extension_description'], " \n\r"),
+        'REV_DESC' => trim($ext_info['revision_description'], " \n\r"),
+        'CURRENT_VERSION' => $fs_ext['version'],
+        'NEW_VERSION' => $ext_info['revision_name'],
+        'AUTHOR' => $ext_info['author_name'],
+        'DOWNLOADS' => $ext_info['extension_nb_downloads'],
+        'URL_DOWNLOAD' => $ext_info['download_url'] . '&amp;origin=piwigo_download',
+        'IGNORED' => in_array($ext_id, $conf['updates_ignored'][$type]),
+        )
+      );
+    }
+  }
+
+  if (!empty($conf['updates_ignored'][$type]))
+  {
+    $show_reset = true;
+  }
+}
+
+$template->assign('SHOW_RESET', $show_reset);
+$template->assign('PWG_TOKEN', get_pwg_token());
+$template->assign('EXT_TYPE', $page['page'] == 'updates' ? 'extensions' : $page['page']);
+$template->set_filename('plugin_admin_content', 'updates_ext.tpl');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
+
+?>
Index: /tags/2.6.0RC1/admin/updates_pwg.php
===================================================================
--- /tags/2.6.0RC1/admin/updates_pwg.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/updates_pwg.php	(revision 25596)
@@ -0,0 +1,166 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2010      Pierrick LE GALL             http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if( !defined("PHPWG_ROOT_PATH") )
+{
+  die ("Hacking attempt!");
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+
+/*
+STEP:
+0 = check is needed. If version is latest or check fail, we stay on step 0
+1 = new version on same branch AND new branch are available => user may choose upgrade.
+2 = upgrade on same branch
+3 = upgrade on different branch
+*/
+$step = isset($_GET['step']) ? $_GET['step'] : 0;
+$upgrade_to = isset($_GET['to']) ? $_GET['to'] : '';
+
+// +-----------------------------------------------------------------------+
+// |                                Step 0                                 |
+// +-----------------------------------------------------------------------+
+if ($step == 0)
+{
+  $template->assign(array(
+    'CHECK_VERSION' => false,
+    'DEV_VERSION' => false,
+    )
+  );
+
+  if (preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches))
+  {
+    $url = PHPWG_URL.'/download/all_versions.php';
+    $url .= '?rand='.md5(uniqid(rand(), true)); // Avoid server cache
+
+    if (@fetchRemote($url, $result)
+      and $all_versions = @explode("\n", $result)
+      and is_array($all_versions))
+    {
+      $template->assign('CHECK_VERSION', true);
+
+      $last_version = trim($all_versions[0]);
+      $upgrade_to = $last_version;
+
+      if (version_compare(PHPWG_VERSION, $last_version, '<'))
+      {
+        $new_branch = preg_replace('/(\d+\.\d+)\.\d+/', '$1', $last_version);
+        $actual_branch = $matches[1];
+
+        if ($new_branch == $actual_branch)
+        {
+          $step = 2;
+        }
+        else
+        {
+          $step = 3;
+
+          // Check if new version exists in same branch
+          foreach ($all_versions as $version)
+          {
+            $new_branch = preg_replace('/(\d+\.\d+)\.\d+/', '$1', $version);
+
+            if ($new_branch == $actual_branch)
+            {
+              if (version_compare(PHPWG_VERSION, $version, '<'))
+              {
+                $step = 1;
+              }
+              break;
+            }
+          }
+        }
+      }
+    }
+  }
+  else
+  {
+    $template->assign('DEV_VERSION', true);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                                Step 1                                 |
+// +-----------------------------------------------------------------------+
+if ($step == 1)
+{
+  $template->assign(array(
+    'MINOR_VERSION' => $version,
+    'MAJOR_VERSION' => $last_version,
+    )
+  );
+}
+
+// +-----------------------------------------------------------------------+
+// |                                Step 2                                 |
+// +-----------------------------------------------------------------------+
+if ($step == 2 and is_webmaster())
+{
+  if (isset($_POST['submit']) and isset($_POST['upgrade_to']))
+  {
+    updates::upgrade_to($_POST['upgrade_to'], $step);
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                                Step 3                                 |
+// +-----------------------------------------------------------------------+
+if ($step == 3 and is_webmaster())
+{
+  if (isset($_POST['dumpDatabase']))
+  {
+    updates::dump_database(isset($_POST['includeHistory']));
+  }
+
+  if (isset($_POST['submit']) and isset($_POST['upgrade_to']))
+  {
+    updates::upgrade_to($_POST['upgrade_to'], $step);
+  }
+
+  $updates = new updates();
+  $updates->get_merged_extensions($upgrade_to);
+  $updates->get_server_extensions($upgrade_to);
+  $template->assign('missing', $updates->missing);
+}
+
+// +-----------------------------------------------------------------------+
+// |                        Process template                               |
+// +-----------------------------------------------------------------------+
+
+if (!is_webmaster())
+{
+  $page['errors'][] = l10n('Webmaster status is required.');
+}
+
+$template->assign(array(
+  'STEP'          => $step,
+  'PHPWG_VERSION' => PHPWG_VERSION,
+  'UPGRADE_TO'    => $upgrade_to,
+  'RELEASE_URL'   => PHPWG_URL.'/releases/'.$upgrade_to,
+  )
+);
+
+$template->set_filename('plugin_admin_content', 'updates_pwg.tpl');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
+
+?>
Index: /tags/2.6.0RC1/admin/user_list.php
===================================================================
--- /tags/2.6.0RC1/admin/user_list.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/user_list.php	(revision 25596)
@@ -0,0 +1,136 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Add users and manage users list
+ */
+
+// +-----------------------------------------------------------------------+
+// | tabs                                                                  |
+// +-----------------------------------------------------------------------+
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+$my_base_url = get_root_url().'admin.php?page=';
+
+$tabsheet = new tabsheet();
+$tabsheet->set_id('users');
+$tabsheet->select('user_list');
+$tabsheet->assign();
+
+// +-----------------------------------------------------------------------+
+// |                              groups list                              |
+// +-----------------------------------------------------------------------+
+
+$groups = array();
+
+$query = '
+SELECT id, name
+  FROM '.GROUPS_TABLE.'
+  ORDER BY name ASC
+;';
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $groups[$row['id']] = $row['name'];
+}
+
+// +-----------------------------------------------------------------------+
+// | template                                                              |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(array('user_list'=>'user_list.tpl'));
+
+$query = '
+SELECT
+    DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+    u.'.$conf['user_fields']['username'].' AS username,
+    u.'.$conf['user_fields']['email'].' AS email,
+    ui.status,
+    ui.enabled_high,
+    ui.level
+  FROM '.USERS_TABLE.' AS u
+    INNER JOIN '.USER_INFOS_TABLE.' AS ui ON u.'.$conf['user_fields']['id'].' = ui.user_id
+  WHERE u.'.$conf['user_fields']['id'].' > 0
+;';
+
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $users[] = $row;
+  $user_ids[] = $row['id'];
+}
+
+$template->assign(
+  array(
+    'users' => $users,
+    'all_users' => join(',', $user_ids),
+    'Double_Password' => $conf['double_password_type_in_admin']
+    )
+  );
+
+// echo '<pre>'; print_r($users); echo '</pre>';
+
+$default_user = get_default_user_info(true);
+
+$template->assign(
+  array(
+    'PWG_TOKEN' => get_pwg_token(),
+    'NB_IMAGE_PAGE' => $default_user['nb_image_page'],
+    'RECENT_PERIOD' => $default_user['recent_period'],
+    'theme_options' => get_pwg_themes(),
+    'theme_selected' => get_default_theme(),
+    'language_options' => get_languages(),
+    'language_selected' => get_default_language(),
+    'association_options' => $groups,
+    )
+  );
+
+// Status options
+foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
+{
+  // Only status <= can be assign
+  if (is_autorize_status(get_access_type_status($status)))
+  {
+    $pref_status_options[$status] = l10n('user_status_'.$status);
+  }
+}
+$template->assign('pref_status_options', $pref_status_options);
+$template->assign('pref_status_selected', 'normal');
+
+// user level options
+foreach ($conf['available_permission_levels'] as $level)
+{
+  $level_options[$level] = l10n(sprintf('Level %d', $level));
+}
+$template->assign('level_options', $level_options);
+$template->assign('level_selected', $default_user['level']);
+
+
+// +-----------------------------------------------------------------------+
+// | html code display                                                     |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'user_list');
+?>
Index: /tags/2.6.0RC1/admin/user_list_backend.php
===================================================================
--- /tags/2.6.0RC1/admin/user_list_backend.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/user_list_backend.php	(revision 25596)
@@ -0,0 +1,158 @@
+<?php
+define('PHPWG_ROOT_PATH','../');
+define('IN_ADMIN', true);
+
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+	
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Easy set variables
+ */
+	
+/* Array of database columns which should be read and sent back to DataTables. Use a space where
+ * you want to insert a non-database field (for example a counter or static image)
+ */
+$aColumns = array('id', 'username', 'status', 'mail_address', 'registration_date');
+	
+/* Indexed column (used for fast and accurate table cardinality) */
+$sIndexColumn = "id";
+	
+/* DB table to use */
+$sTable = USERS_TABLE.' INNER JOIN '.USER_INFOS_TABLE.' AS ui ON id = ui.user_id';
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * If you just want to use the basic configuration for DataTables with PHP server-side, there is
+ * no need to edit below this line
+ */
+
+/* 
+ * Paging
+ */
+$sLimit = "";
+if ( isset( $_REQUEST['iDisplayStart'] ) && $_REQUEST['iDisplayLength'] != '-1' )
+{
+  $sLimit = "LIMIT ".pwg_db_real_escape_string( $_REQUEST['iDisplayStart'] ).", ".
+    pwg_db_real_escape_string( $_REQUEST['iDisplayLength'] );
+}
+	
+	
+/*
+ * Ordering
+ */
+if ( isset( $_REQUEST['iSortCol_0'] ) )
+{
+  $sOrder = "ORDER BY  ";
+  for ( $i=0 ; $i<intval( $_REQUEST['iSortingCols'] ) ; $i++ )
+  {
+    if ( $_REQUEST[ 'bSortable_'.intval($_REQUEST['iSortCol_'.$i]) ] == "true" )
+    {
+      $sOrder .= $aColumns[ intval( $_REQUEST['iSortCol_'.$i] ) ]."
+				 	".pwg_db_real_escape_string( $_REQUEST['sSortDir_'.$i] ) .", ";
+    }
+  }
+		
+  $sOrder = substr_replace( $sOrder, "", -2 );
+  if ( $sOrder == "ORDER BY" )
+  {
+    $sOrder = "";
+  }
+}
+	
+	
+/* 
+ * Filtering
+ * NOTE this does not match the built-in DataTables filtering which does it
+ * word by word on any field. It's possible to do here, but concerned about efficiency
+ * on very large tables, and MySQL's regex functionality is very limited
+ */
+$sWhere = "";
+if ( $_REQUEST['sSearch'] != "" )
+{
+  $sWhere = "WHERE (";
+  for ( $i=0 ; $i<count($aColumns) ; $i++ )
+  {
+    $sWhere .= $aColumns[$i]." LIKE '%".pwg_db_real_escape_string( $_REQUEST['sSearch'] )."%' OR ";
+  }
+  $sWhere = substr_replace( $sWhere, "", -3 );
+  $sWhere .= ')';
+}
+	
+/* Individual column filtering */
+for ( $i=0 ; $i<count($aColumns) ; $i++ )
+{
+  if ( $_REQUEST['bSearchable_'.$i] == "true" && $_REQUEST['sSearch_'.$i] != '' )
+  {
+    if ( $sWhere == "" )
+    {
+      $sWhere = "WHERE ";
+    }
+    else
+    {
+      $sWhere .= " AND ";
+    }
+    $sWhere .= $aColumns[$i]." LIKE '%".pwg_db_real_escape_string($_REQUEST['sSearch_'.$i])."%' ";
+  }
+}
+	
+	
+/*
+ * SQL queries
+ * Get data to display
+ */
+$sQuery = "
+		SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
+		FROM   $sTable
+		$sWhere
+		$sOrder
+		$sLimit
+	";
+$rResult = pwg_query($sQuery);
+	
+/* Data set length after filtering */
+$sQuery = "
+		SELECT FOUND_ROWS()
+	";
+$rResultFilterTotal = pwg_query($sQuery);
+$aResultFilterTotal = pwg_db_fetch_array($rResultFilterTotal);
+$iFilteredTotal = $aResultFilterTotal[0];
+	
+/* Total data set length */
+$sQuery = "
+		SELECT COUNT(".$sIndexColumn.")
+		FROM   $sTable
+	";
+$rResultTotal = pwg_query($sQuery);
+$aResultTotal = pwg_db_fetch_array($rResultTotal);
+$iTotal = $aResultTotal[0];
+	
+	
+/*
+ * Output
+ */
+$output = array(
+  "sEcho" => intval($_REQUEST['sEcho']),
+  "iTotalRecords" => $iTotal,
+  "iTotalDisplayRecords" => $iFilteredTotal,
+  "aaData" => array()
+	);
+	
+while ( $aRow = pwg_db_fetch_array( $rResult ) )
+{
+  $row = array();
+  for ( $i=0 ; $i<count($aColumns) ; $i++ )
+  {
+    if ( $aColumns[$i] == "version" )
+    {
+      /* Special output formatting for 'version' column */
+      $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
+    }
+    else if ( $aColumns[$i] != ' ' )
+    {
+      /* General output */
+      $row[] = $aRow[ $aColumns[$i] ];
+    }
+  }
+  $output['aaData'][] = $row;
+}
+	
+echo json_encode( $output );
+?>
Index: /tags/2.6.0RC1/admin/user_perm.php
===================================================================
--- /tags/2.6.0RC1/admin/user_perm.php	(revision 25596)
+++ /tags/2.6.0RC1/admin/user_perm.php	(revision 25596)
@@ -0,0 +1,182 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('IN_ADMIN'))
+{
+  die('Hacking attempt!');
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                            variables init                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['user_id']) and is_numeric($_GET['user_id']))
+{
+  $page['user'] = $_GET['user_id'];
+}
+else
+{
+  die('user_id URL parameter is missing');
+}
+
+// +-----------------------------------------------------------------------+
+// |                                updates                                |
+// +-----------------------------------------------------------------------+
+
+if (isset($_POST['falsify'])
+    and isset($_POST['cat_true'])
+    and count($_POST['cat_true']) > 0)
+{
+  // if you forbid access to a category, all sub-categories become
+  // automatically forbidden
+  $subcats = get_subcat_ids($_POST['cat_true']);
+  $query = '
+DELETE FROM '.USER_ACCESS_TABLE.'
+  WHERE user_id = '.$page['user'].'
+    AND cat_id IN ('.implode(',', $subcats).')
+;';
+  pwg_query($query);
+}
+elseif (isset($_POST['trueify'])
+    and isset($_POST['cat_false'])
+    and count($_POST['cat_false']) > 0)
+{
+  add_permission_on_category($_POST['cat_false'], $page['user']);
+}
+
+// +-----------------------------------------------------------------------+
+// |                             template init                             |
+// +-----------------------------------------------------------------------+
+
+$template->set_filenames(
+  array(
+    'user_perm' => 'user_perm.tpl',
+    'double_select' => 'double_select.tpl'
+    )
+  );
+
+$template->assign(
+  array(
+    'TITLE' =>
+      l10n(
+        'Manage permissions for user "%s"',
+        get_username($page['user'])
+        ),
+    'L_CAT_OPTIONS_TRUE'=>l10n('Authorized'),
+    'L_CAT_OPTIONS_FALSE'=>l10n('Forbidden'),
+
+    'F_ACTION' =>
+        PHPWG_ROOT_PATH.
+        'admin.php?page=user_perm'.
+        '&amp;user_id='.$page['user']
+    )
+  );
+
+
+// retrieve category ids authorized to the groups the user belongs to
+$group_authorized = array();
+
+$query = '
+SELECT DISTINCT cat_id, c.uppercats, c.global_rank
+  FROM '.USER_GROUP_TABLE.' AS ug
+    INNER JOIN '.GROUP_ACCESS_TABLE.' AS ga
+      ON ug.group_id = ga.group_id
+    INNER JOIN '.CATEGORIES_TABLE.' AS c
+      ON c.id = ga.cat_id
+  WHERE ug.user_id = '.$page['user'].'
+;';
+$result = pwg_query($query);
+
+if (pwg_db_num_rows($result) > 0)
+{
+  $cats = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $cats[] = $row;
+    $group_authorized[] = $row['cat_id'];
+  }
+  usort($cats, 'global_rank_compare');
+
+  foreach ($cats as $category)
+  {
+    $template->append(
+      'categories_because_of_groups',
+      get_cat_display_name_cache($category['uppercats'], null)
+      );
+  }
+}
+
+// only private categories are listed
+$query_true = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_ACCESS_TABLE.' ON cat_id = id
+  WHERE status = \'private\'
+    AND user_id = '.$page['user'];
+if (count($group_authorized) > 0)
+{
+  $query_true.= '
+    AND cat_id NOT IN ('.implode(',', $group_authorized).')';
+}
+$query_true.= '
+;';
+display_select_cat_wrapper($query_true,array(),'category_option_true');
+
+$result = pwg_query($query_true);
+$authorized_ids = array();
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $authorized_ids[] = $row['id'];
+}
+
+$query_false = '
+SELECT id,name,uppercats,global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'private\'';
+if (count($authorized_ids) > 0)
+{
+  $query_false.= '
+    AND id NOT IN ('.implode(',', $authorized_ids).')';
+}
+if (count($group_authorized) > 0)
+{
+  $query_false.= '
+    AND id NOT IN ('.implode(',', $group_authorized).')';
+}
+$query_false.= '
+;';
+display_select_cat_wrapper($query_false,array(),'category_option_false');
+
+// +-----------------------------------------------------------------------+
+// |                           sending html code                           |
+// +-----------------------------------------------------------------------+
+
+$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select');
+$template->assign_var_from_handle('ADMIN_CONTENT', 'user_perm');
+?>
Index: /tags/2.6.0RC1/category.php
===================================================================
--- /tags/2.6.0RC1/category.php	(revision 25596)
+++ /tags/2.6.0RC1/category.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+This file contains now only code to ensure backward url compatibility with
+versions before 1.6
+*/
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+$url_params=array();
+if ( isset($_GET['cat']) )
+{
+  if ( is_numeric($_GET['cat']) )
+  {
+    $url_params['section'] = 'categories';
+    $result = get_cat_info( $_GET['cat'] );
+    if ( !empty($result) )
+    {
+      $url_params['category'] = $result;
+    }
+  }
+  elseif ( in_array($_GET['cat'],
+              array('best_rated','most_visited','recent_pics','recent_cats')
+                  )
+         )
+  {
+    $url_params['section'] = $_GET['cat'];
+  }
+  else
+  {
+    page_not_found('');
+  }
+}
+
+$url = make_index_url($url_params);
+if (!headers_sent())
+{
+  set_status_header(301);
+  redirect_http( $url );
+}
+redirect ( $url );
+
+?>
Index: /tags/2.6.0RC1/comments.php
===================================================================
--- /tags/2.6.0RC1/comments.php	(revision 25596)
+++ /tags/2.6.0RC1/comments.php	(revision 25596)
@@ -0,0 +1,614 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+define('PHPWG_ROOT_PATH','./');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+
+if (!$conf['activate_comments'])
+{
+  page_not_found(null);
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+$sort_order = array(
+  'DESC' => l10n('descending'),
+  'ASC'  => l10n('ascending')
+  );
+
+// sort_by : database fields proposed for sorting comments list
+$sort_by = array(
+  'date' => l10n('comment date'),
+  'image_id' => l10n('photo')
+  );
+
+// items_number : list of number of items to display per page
+$items_number = array(5,10,20,50,'all');
+
+// if the default value is not in the expected values, we add it in the $items_number array
+if (!in_array($conf['comments_page_nb_comments'], $items_number))
+{
+  $items_number_new = array();
+
+  $is_inserted = false;
+
+  foreach ($items_number as $number)
+  {
+    if ($number > $conf['comments_page_nb_comments'] or ($number == 'all' and !$is_inserted))
+    {
+      $items_number_new[] = $conf['comments_page_nb_comments'];
+      $is_inserted = true;
+    }
+    
+    $items_number_new[] = $number;
+  }
+
+  $items_number = $items_number_new;
+}
+
+// since when display comments ?
+//
+$since_options = array(
+  1 => array('label' => l10n('today'),
+             'clause' => 'date > '.pwg_db_get_recent_period_expression(1)),
+  2 => array('label' => l10n('last %d days', 7),
+             'clause' => 'date > '.pwg_db_get_recent_period_expression(7)),
+  3 => array('label' => l10n('last %d days', 30),
+             'clause' => 'date > '.pwg_db_get_recent_period_expression(30)),
+  4 => array('label' => l10n('the beginning'),
+             'clause' => '1=1') // stupid but generic
+  );
+  
+trigger_action('loc_begin_comments');
+
+if (!empty($_GET['since']) && is_numeric($_GET['since']))
+{
+  $page['since'] = $_GET['since'];
+}
+else
+{
+  $page['since'] = 4;
+}
+
+// on which field sorting
+//
+$page['sort_by'] = 'date';
+// if the form was submitted, it overloads default behaviour
+if (isset($_GET['sort_by']) and isset($sort_by[$_GET['sort_by']]) )
+{
+  $page['sort_by'] = $_GET['sort_by'];
+}
+
+// order to sort
+//
+$page['sort_order'] = 'DESC';
+// if the form was submitted, it overloads default behaviour
+if (isset($_GET['sort_order']) and isset($sort_order[$_GET['sort_order']]))
+{
+  $page['sort_order'] = $_GET['sort_order'];
+}
+
+// number of items to display
+//
+$page['items_number'] = $conf['comments_page_nb_comments'];
+if (isset($_GET['items_number']))
+{
+  $page['items_number'] = $_GET['items_number'];
+}
+if ( !is_numeric($page['items_number']) and $page['items_number']!='all' )
+{
+  $page['items_number'] = 10;
+}
+
+$page['where_clauses'] = array();
+
+// which category to filter on ?
+if (isset($_GET['cat']) and 0 != $_GET['cat'])
+{
+  check_input_parameter('cat', $_GET, false, PATTERN_ID);
+
+  $category_ids = get_subcat_ids(array($_GET['cat']));
+  if (empty($category_ids))
+  {
+    $category_ids = array(-1);
+  }
+
+  $page['where_clauses'][] =
+    'category_id IN ('.implode(',', $category_ids).')';
+}
+
+// search a particular author
+if (!empty($_GET['author']))
+{
+  $page['where_clauses'][] =
+    '(u.'.$conf['user_fields']['username'].' = \''.$_GET['author'].'\' OR author = \''.$_GET['author'].'\')';
+}
+
+// search a specific comment (if you're coming directly from an admin
+// notification email)
+if (!empty($_GET['comment_id']))
+{
+  check_input_parameter('comment_id', $_GET, false, PATTERN_ID);
+
+  // currently, the $_GET['comment_id'] is only used by admins from email
+  // for management purpose (validate/delete)
+  if (!is_admin())
+  {
+    $login_url =
+      get_root_url().'identification.php?redirect='
+      .urlencode(urlencode($_SERVER['REQUEST_URI']))
+      ;
+    redirect($login_url);
+  }
+
+  $page['where_clauses'][] = 'com.id = '.$_GET['comment_id'];
+}
+
+// search a substring among comments content
+if (!empty($_GET['keyword']))
+{
+  $page['where_clauses'][] =
+    '('.
+    implode(' AND ',
+            array_map(
+              create_function(
+                '$s',
+                'return "content LIKE \'%$s%\'";'
+                ),
+              preg_split('/[\s,;]+/', $_GET['keyword'] )
+              )
+      ).
+    ')';
+}
+
+$page['where_clauses'][] = $since_options[$page['since']]['clause'];
+
+// which status to filter on ?
+if ( !is_admin() )
+{
+  $page['where_clauses'][] = 'validated=\'true\'';
+}
+
+$page['where_clauses'][] = get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'category_id',
+        'visible_categories' => 'category_id',
+        'visible_images' => 'ic.image_id'
+      ),
+    '', true
+  );
+
+// +-----------------------------------------------------------------------+
+// |                         comments management                           |
+// +-----------------------------------------------------------------------+
+
+$comment_id = null;
+$action = null;
+
+$actions = array('delete', 'validate', 'edit');
+foreach ($actions as $loop_action)
+{
+  if (isset($_GET[$loop_action]))
+  {
+    $action = $loop_action;
+    check_input_parameter($action, $_GET, false, PATTERN_ID);
+    $comment_id = $_GET[$action];
+    break;
+  }
+}
+
+if (isset($action))
+{
+  $comment_author_id = get_comment_author_id($comment_id);
+
+  if (can_manage_comment($action, $comment_author_id))
+  {
+    $perform_redirect = false;
+
+    if ('delete' == $action)
+    {
+      check_pwg_token();
+      delete_user_comment($comment_id);
+      $perform_redirect = true;
+    }
+
+    if ('validate' == $action)
+    {
+      check_pwg_token();
+      validate_user_comment($comment_id);
+      $perform_redirect = true;
+    }
+
+    if ('edit' == $action)
+    {
+      if (!empty($_POST['content']))
+      {
+        check_pwg_token();
+        $comment_action = update_user_comment(
+          array(
+            'comment_id' => $_GET['edit'],
+            'image_id' => $_POST['image_id'],
+            'content' => $_POST['content'],
+            'website_url' => @$_POST['website_url'],
+            ),
+          $_POST['key']
+          );
+        
+        switch ($comment_action)
+        {
+          case 'moderate':
+            $_SESSION['page_infos'][] = l10n('An administrator must authorize your comment before it is visible.');
+          case 'validate':
+            $_SESSION['page_infos'][] = l10n('Your comment has been registered');
+            $perform_redirect = true;
+            break;
+          case 'reject':
+            $_SESSION['page_errors'][] = l10n('Your comment has NOT been registered because it did not pass the validation rules');
+            break;
+          default:
+            trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING);
+        }
+      }
+      
+      $edit_comment = $_GET['edit'];
+    }
+
+    if ($perform_redirect)
+    {
+      $redirect_url =
+        PHPWG_ROOT_PATH
+        .'comments.php'
+        .get_query_string_diff(array('delete','edit','validate','pwg_token'));
+
+      redirect($redirect_url);
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                       page header and options                         |
+// +-----------------------------------------------------------------------+
+
+$title= l10n('User comments');
+$page['body_id'] = 'theCommentsPage';
+
+$template->set_filenames(array('comments'=>'comments.tpl'));
+$template->assign(
+  array(
+    'F_ACTION'=>PHPWG_ROOT_PATH.'comments.php',
+    'F_KEYWORD'=> @htmlspecialchars(stripslashes($_GET['keyword'], ENT_QUOTES, 'utf-8')),
+    'F_AUTHOR'=> @htmlspecialchars(stripslashes($_GET['author'], ENT_QUOTES, 'utf-8')),
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                          form construction                            |
+// +-----------------------------------------------------------------------+
+
+// Search in a particular category
+$blockname = 'categories';
+
+$query = '
+SELECT id, name, uppercats, global_rank
+  FROM '.CATEGORIES_TABLE.'
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'id',
+        'visible_categories' => 'id'
+      ),
+    'WHERE'
+  ).'
+;';
+display_select_cat_wrapper($query, array(@$_GET['cat']), $blockname, true);
+
+// Filter on recent comments...
+$tpl_var=array();
+foreach ($since_options as $id => $option)
+{
+  $tpl_var[ $id ] = $option['label'];
+}
+$template->assign( 'since_options', $tpl_var);
+$template->assign( 'since_options_selected', $page['since']);
+
+// Sort by
+$template->assign( 'sort_by_options', $sort_by);
+$template->assign( 'sort_by_options_selected', $page['sort_by']);
+
+// Sorting order
+$template->assign( 'sort_order_options', $sort_order);
+$template->assign( 'sort_order_options_selected', $page['sort_order']);
+
+
+// Number of items
+$blockname = 'items_number_option';
+$tpl_var=array();
+foreach ($items_number as $option)
+{
+  $tpl_var[ $option ] = is_numeric($option) ? $option : l10n($option);
+}
+$template->assign( 'item_number_options', $tpl_var);
+$template->assign( 'item_number_options_selected', $page['items_number']);
+
+
+// +-----------------------------------------------------------------------+
+// |                            navigation bar                             |
+// +-----------------------------------------------------------------------+
+
+if (isset($_GET['start']) and is_numeric($_GET['start']))
+{
+  $start = $_GET['start'];
+}
+else
+{
+  $start = 0;
+}
+
+$query = '
+SELECT COUNT(DISTINCT(com.id))
+  FROM '.IMAGE_CATEGORY_TABLE.' AS ic
+    INNER JOIN '.COMMENTS_TABLE.' AS com
+    ON ic.image_id = com.image_id
+    LEFT JOIN '.USERS_TABLE.' As u
+    ON u.'.$conf['user_fields']['id'].' = com.author_id
+  WHERE '.implode('
+    AND ', $page['where_clauses']).'
+;';
+list($counter) = pwg_db_fetch_row(pwg_query($query));
+
+$url = PHPWG_ROOT_PATH
+    .'comments.php'
+  .get_query_string_diff(array('start','delete','validate','pwg_token'));
+
+$navbar = create_navigation_bar($url,
+                                $counter,
+                                $start,
+                                $page['items_number'],
+                                '');
+
+$template->assign('navbar', $navbar);
+
+$url_self = PHPWG_ROOT_PATH
+    .'comments.php'
+  .get_query_string_diff(array('edit','delete','validate','pwg_token'));
+
+// +-----------------------------------------------------------------------+
+// |                        last comments display                          |
+// +-----------------------------------------------------------------------+
+
+$comments = array();
+$element_ids = array();
+$category_ids = array();
+
+$query = '
+SELECT com.id AS comment_id,
+       com.image_id,
+       com.author,
+       com.author_id,
+       u.'.$conf['user_fields']['email'].' AS user_email,
+       com.email,
+       com.date,
+       com.website_url,
+       com.content,
+       com.validated
+  FROM '.IMAGE_CATEGORY_TABLE.' AS ic
+    INNER JOIN '.COMMENTS_TABLE.' AS com
+    ON ic.image_id = com.image_id
+    LEFT JOIN '.USERS_TABLE.' As u
+    ON u.'.$conf['user_fields']['id'].' = com.author_id
+  WHERE '.implode('
+    AND ', $page['where_clauses']).'
+  GROUP BY comment_id,
+       com.image_id,
+       com.author,
+       com.author_id,
+       com.date,
+       com.content,
+       com.validated
+  ORDER BY '.$page['sort_by'].' '.$page['sort_order'];
+if ('all' != $page['items_number'])
+{
+  $query.= '
+  LIMIT '.$page['items_number'].' OFFSET '.$start;
+}
+$query.= '
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $comments[] = $row;
+  $element_ids[] = $row['image_id'];
+}
+
+if (count($comments) > 0)
+{
+  // retrieving element informations
+  $elements = array();
+  $query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $element_ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $elements[$row['id']] = $row;
+  }
+
+  // retrieving category informations
+  $query = '
+SELECT c.id, name, permalink, uppercats, com.id as comment_id
+  FROM '.CATEGORIES_TABLE.' AS c
+  LEFT JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
+  ON c.id=ic.category_id
+  LEFT JOIN '.COMMENTS_TABLE.' AS com
+  ON ic.image_id=com.image_id
+  '.get_sql_condition_FandF
+    (
+      array
+      (
+	'forbidden_categories' => 'c.id',
+	'visible_categories' => 'c.id'
+       ),
+      'WHERE'
+     ).'
+;';
+  $categories = hash_from_query($query, 'comment_id');
+
+  foreach ($comments as $comment)
+  {
+    if (!empty($elements[$comment['image_id']]['name']))
+    {
+      $name=$elements[$comment['image_id']]['name'];
+    }
+    else
+    {
+      $name=get_name_from_file($elements[$comment['image_id']]['file']);
+    }
+
+    // source of the thumbnail picture
+    $src_image = new SrcImage($elements[$comment['image_id']]);
+
+    // link to the full size picture
+    $url = make_picture_url(
+      array(
+        'category' => $categories[ $comment['comment_id'] ],
+        'image_id' => $comment['image_id'],
+        'image_file' => $elements[$comment['image_id']]['file'],
+        )
+      );
+      
+    $email = null;
+    if (!empty($comment['user_email']))
+    {
+      $email = $comment['user_email'];
+    }
+    else if (!empty($comment['email']))
+    {
+      $email = $comment['email'];
+    }
+
+    $tpl_comment = array(
+      'ID' => $comment['comment_id'],
+      'U_PICTURE' => $url,
+      'src_image' => $src_image,
+      'ALT' => $name,
+      'AUTHOR' => trigger_event('render_comment_author', $comment['author']),
+      'WEBSITE_URL' => $comment['website_url'],
+      'DATE'=>format_date($comment['date'], true),
+      'CONTENT'=>trigger_event('render_comment_content',$comment['content']),
+      );
+      
+    if (is_admin())
+    {
+      $tpl_comment['EMAIL'] = $email;
+    }
+
+    if (can_manage_comment('delete', $comment['author_id']))
+    {
+      $url =
+        get_root_url()
+        .'comments.php'
+        .get_query_string_diff(array('delete','validate','edit', 'pwg_token'));
+
+      $tpl_comment['U_DELETE'] = add_url_params(
+        $url,
+        array(
+          'delete' => $comment['comment_id'],
+          'pwg_token' => get_pwg_token(),
+          )
+        );
+    }
+
+    if (can_manage_comment('edit', $comment['author_id']))
+    {
+      $url =
+        get_root_url()
+        .'comments.php'
+	.get_query_string_diff(array('edit', 'delete','validate', 'pwg_token'));
+
+      $tpl_comment['U_EDIT'] = add_url_params(
+        $url,
+        array(
+          'edit' => $comment['comment_id']
+          )
+        );
+
+      if (isset($edit_comment) and ($comment['comment_id'] == $edit_comment))
+      {
+        $tpl_comment['IN_EDIT'] = true;
+        $key = get_ephemeral_key(2, $comment['image_id']);
+        $tpl_comment['KEY'] = $key;
+        $tpl_comment['IMAGE_ID'] = $comment['image_id'];
+        $tpl_comment['CONTENT'] = $comment['content'];
+        $tpl_comment['PWG_TOKEN'] = get_pwg_token();
+        $tpl_comment['U_CANCEL'] = $url_self;
+      }
+    }
+
+    if (can_manage_comment('validate', $comment['author_id']))
+    {
+      if ('true' != $comment['validated'])
+      {
+        $tpl_comment['U_VALIDATE'] = add_url_params(
+          $url,
+          array(
+            'validate'=> $comment['comment_id'],
+            'pwg_token' => get_pwg_token(),
+            )
+          );
+      }
+    }
+    $template->append('comments', $tpl_comment);
+  }
+}
+
+$derivative_params = trigger_event('get_comments_derivative_params', ImageStdParams::get_by_type(IMG_THUMB) );
+$template->assign( 'derivative_params', $derivative_params );
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theCommentsPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_comments');
+flush_page_messages();
+$template->pparse('comments');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/doc/COPYING
===================================================================
--- /tags/2.6.0RC1/doc/COPYING	(revision 25596)
+++ /tags/2.6.0RC1/doc/COPYING	(revision 25596)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: /tags/2.6.0RC1/doc/README_ca.txt
===================================================================
--- /tags/2.6.0RC1/doc/README_ca.txt	(revision 25596)
+++ /tags/2.6.0RC1/doc/README_ca.txt	(revision 25596)
@@ -0,0 +1,61 @@
+=======
+Piwigo
+=======
+
+Lloc Web:       http://piwigo.org
+Instal·lació:   http://piwigo.org/basics/installation
+Actualització:  http://piwigo.org/basics/upgrade
+
+Com començar
+============
+
+Un cop instal·lat o actualitzat, la galeria està a punt per funcionar. 
+Situa't al directori d'instal·lació del teu navegador:
+
+http://el.teu.domini/photos
+
+A continuació, identifica't com a administrador. Apareixerà un nou enllaç 
+a la pàgina del menú d'identificació: Administració. Aneu al panell d'administració.
+
+Al panell d'administració, pren-te tot el temps que et calgui per llegir 
+detingudament les instruccions que expliquen com utilitzar la galeria PIWIGO.
+
+Comunicació
+=============
+
+Butlletí de notícies
+--------------------
+
+http://piwigo.org/basics/newsletter
+
+És *altament* recomanable inscriu-re's al butlletí de Piwigo.
+Tot i què aqusta secció té poquíssim moviment, podràs assabentar-te
+de la notificació d'errors greus o del llançament de noves versions de Piwigo.
+
+Estigues al dia
+---------------
+
+http://freecode.com/projects/piwigo
+
+Mantinguet informat per a cada nova versió, tant estable com en desenvolupament.
+El butlletí de notícies no envia notificacions de les versions en desenvolupament.
+
+Registre d'errors
+-----------------
+
+http://piwigo.org/bugs
+
+Errors i registre i seguiment de canvis. La millor forma de tindre els errors corregits:
+No te n'oblidis. (així com el fòrum).
+
+Documentació
+------------
+
+http://piwigo.org/doc
+
+Documentació Wiki: Tothom pot participar per millorar el contingut de la documentació.
+
+Fòrum
+-----
+
+http://piwigo.org/forum
Index: /tags/2.6.0RC1/doc/README_en.txt
===================================================================
--- /tags/2.6.0RC1/doc/README_en.txt	(revision 25596)
+++ /tags/2.6.0RC1/doc/README_en.txt	(revision 25596)
@@ -0,0 +1,62 @@
+=======
+Piwigo
+=======
+
+website:        http://piwigo.org
+Installation:   http://piwigo.org/basics/installation
+Upgrade:        http://piwigo.org/basics/upgrade
+
+How to start
+============
+
+Once installed or upgraded, your gallery is ready to run. Start by
+displaying the installation directory in your browser :
+
+http://your.domain/photos
+
+Then identify as an administrator. A new link in Identification menu of main
+page will appear : Administration. Enter the administration panel.
+
+In the administration panel, take all your time for reading instructions
+explaining how to use your gallery.
+
+Communication
+=============
+
+Newsletter
+----------
+
+http://piwigo.org/basics/newsletter
+
+It is *highly* recommended to subscribe to Piwigo newsletter. This is
+extremely low-traffic, but will provide you with announcements of new
+Piwigo releases and serious bug notification.
+
+Freshmeat
+---------
+
+http://freecode.com/projects/piwigo
+
+Want to stay informed at each release, stable and development
+release. Development releases notification are not send in the newsletter.
+
+Bugtracker
+----------
+
+http://piwigo.org/bugs
+
+Bugs and change requests tracking. The best way to have your bug corrected:
+it won't be forgotten (as in the forum).
+
+Documentation
+-------------
+
+http://piwigo.org/doc
+
+Wiki documentation: everyone can participate to improve documentation
+content.
+
+Forum
+-----
+
+http://piwigo.org/forum
Index: /tags/2.6.0RC1/doc/README_fr.txt
===================================================================
--- /tags/2.6.0RC1/doc/README_fr.txt	(revision 25596)
+++ /tags/2.6.0RC1/doc/README_fr.txt	(revision 25596)
@@ -0,0 +1,74 @@
+=======
+Piwigo
+=======
+
+Site web:        http://fr.piwigo.org
+Installation:    http://fr.piwigo.org/basics/installation
+Mise à jour:     http://fr.piwigo.org/basics/upgrade
+
+Prendre un bon départ
+=====================
+
+Une fois installée ou mise à jour, votre galerie est prête à
+fonctionner. Commencez par vous rendre sur le répertoire d'installation dans
+votre navigateur : 
+
+http://votre.domaine/photos
+
+Ensuite, identifiez-vous en tant qu'un administrateur. Un nouveau lien dans
+le menu d'identification de la page principale va apparaître :
+Administration. Suivre ce lien :-)
+
+Dans la zone d'administration, prenez tout le temps nécessaire pour
+consulter les instructions, expliquant comment utiliser votre galerie.
+
+Communication
+=============
+
+Newsletter
+----------
+
+http://fr.piwigo.org/basics/newsletter
+
+Il est *fortement* recommandé de souscrire à la newsletter de
+Piwigo. Très peu de mails sont envoyés, mais les informations sont
+importantes : nouvelles versions de l'application, notification de bugs
+importants (relatifs à la sécurité).
+
+Freshmeat
+---------
+
+http://freecode.com/projects/piwigo
+
+Permet d'être au courant des sorties de toutes les releases, et en
+exclusivité les builds de la branche de développement (ce qui n'est pas
+prévu sur les mailing lists "announce").
+
+Outil de suivi de bogues
+------------------------
+
+http://piwigo.org/bugs
+
+Gestion des bugs, mais aussi demande de nouvelles fonctionnalités. Rien de
+plus efficace pour qu'un bug soit corrigé : tant qu'il ne l'est pas, la
+"fiche" reste là à attendre, on ne l'oublie pas comme un topic sur le
+forum.
+
+Les demandes d'évolutions sont également gérées dans cet outil. Ce n'est pas
+forcément idéal car il ne s'agit pas de la même chose, mais le suivi du dev
+d'une nouvelle fonctionnalité peut se modéliser de la même façon que le
+suivi de la correction d'un bug.
+
+Documentation
+-------------
+
+http://fr.piwigo.org/doc
+
+Forum de discussion
+-------------------
+
+http://fr.piwigo.org/forum
+
+Un forum est disponible et recommandé pour toutes les questions autres que
+les demandes d'évolution et rapport de bogue (installation, discussions
+techniques).
Index: /tags/2.6.0RC1/doc/index.php
===================================================================
--- /tags/2.6.0RC1/doc/index.php	(revision 25596)
+++ /tags/2.6.0RC1/doc/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/feed.php
===================================================================
--- /tags/2.6.0RC1/feed.php	(revision 25596)
+++ /tags/2.6.0RC1/feed.php	(revision 25596)
@@ -0,0 +1,201 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_notification.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                               functions                               |
+// +-----------------------------------------------------------------------+
+
+/**
+ * creates a Unix timestamp (number of seconds since 1970-01-01 00:00:00
+ * GMT) from a MySQL datetime format (2005-07-14 23:01:37)
+ *
+ * @param string mysql datetime format
+ * @return int timestamp
+ */
+function datetime_to_ts($datetime)
+{
+  return strtotime($datetime);
+}
+
+/**
+ * creates an ISO 8601 format date (2003-01-20T18:05:41+04:00) from Unix
+ * timestamp (number of seconds since 1970-01-01 00:00:00 GMT)
+ *
+ * function copied from Dotclear project http://dotclear.net
+ *
+ * @param int timestamp
+ * @return string ISO 8601 date format
+ */
+function ts_to_iso8601($ts)
+{
+  $tz = date('O',$ts);
+  $tz = substr($tz, 0, -2).':'.substr($tz, -2);
+  return date('Y-m-d\\TH:i:s',$ts).$tz;
+}
+
+// +-----------------------------------------------------------------------+
+// |                            initialization                             |
+// +-----------------------------------------------------------------------+
+
+check_input_parameter('feed', $_GET, false, '/^[0-9a-z]{50}$/i');
+
+$feed_id= isset($_GET['feed']) ? $_GET['feed'] : '';
+$image_only=isset($_GET['image_only']);
+
+// echo '<pre>'.generate_key(50).'</pre>';
+if ( !empty($feed_id) )
+{
+  $query = '
+SELECT user_id,
+       last_check
+  FROM '.USER_FEED_TABLE.'
+  WHERE id = \''.$feed_id.'\'
+;';
+  $feed_row = pwg_db_fetch_assoc(pwg_query($query));
+  if ( empty($feed_row) )
+  {
+    page_not_found(l10n('Unknown feed identifier'));
+  }
+  if ($feed_row['user_id']!=$user['id'])
+  { // new user
+    $user = build_user( $feed_row['user_id'], true );
+  }
+}
+else
+{
+  $image_only = true;
+  if (!is_a_guest())
+  {// auto session was created - so switch to guest
+    $user = build_user( $conf['guest_id'], true );
+  }
+}
+
+// Check the status now after the user has been loaded
+check_status(ACCESS_GUEST);
+
+list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+include_once(PHPWG_ROOT_PATH.'include/feedcreator.class.php');
+
+set_make_full_url();
+
+$rss = new UniversalFeedCreator();
+$rss->encoding=get_pwg_charset();
+$rss->title = $conf['gallery_title'];
+$rss->title.= ' (as '.stripslashes($user['username']).')';
+
+$rss->link = get_gallery_home_url();
+
+// +-----------------------------------------------------------------------+
+// |                            Feed creation                              |
+// +-----------------------------------------------------------------------+
+
+$news = array();
+if (!$image_only)
+{
+  $news = news($feed_row['last_check'], $dbnow, true, true);
+
+  if (count($news) > 0)
+  {
+    $item = new FeedItem();
+    $item->title = l10n('New on %s', format_date($dbnow) );
+    $item->link = get_gallery_home_url();
+
+    // content creation
+    $item->description = '<ul>';
+    foreach ($news as $line)
+    {
+      $item->description.= '<li>'.$line.'</li>';
+    }
+    $item->description.= '</ul>';
+    $item->descriptionHtmlSyndicated = true;
+
+    $item->date = ts_to_iso8601(datetime_to_ts($dbnow));
+    $item->author = $conf['rss_feed_author'];
+    $item->guid= sprintf('%s', $dbnow);;
+
+    $rss->addItem($item);
+
+    $query = '
+UPDATE '.USER_FEED_TABLE.'
+  SET last_check = \''.$dbnow.'\'
+  WHERE id = \''.$feed_id.'\'
+;';
+    pwg_query($query);
+  }
+}
+
+if ( !empty($feed_id) and empty($news) )
+{// update the last check from time to time to avoid deletion by maintenance tasks
+  if ( !isset($feed_row['last_check'])
+    or time()-datetime_to_ts($feed_row['last_check']) > 30*24*3600 )
+  {
+    $query = '
+UPDATE '.USER_FEED_TABLE.'
+  SET last_check = '.pwg_db_get_recent_period_expression(-15, $dbnow).'
+  WHERE id = \''.$feed_id.'\'
+;';
+    pwg_query($query);
+  }
+}
+
+$dates = get_recent_post_dates_array($conf['recent_post_dates']['RSS']);
+
+foreach($dates as $date_detail)
+{ // for each recent post date we create a feed item
+  $item = new FeedItem();
+  $date = $date_detail['date_available'];
+  $item->title = get_title_recent_post_date($date_detail);
+  $item->link = make_index_url(
+        array(
+          'chronology_field' => 'posted',
+          'chronology_style'=> 'monthly',
+          'chronology_view' => 'calendar',
+          'chronology_date' => explode('-', substr($date,0,10) )
+        )
+      );
+
+  $item->description .=
+    '<a href="'.make_index_url().'">'.$conf['gallery_title'].'</a><br> ';
+
+  $item->description .= get_html_description_recent_post_date($date_detail);
+
+  $item->descriptionHtmlSyndicated = true;
+
+  $item->date = ts_to_iso8601(datetime_to_ts($date));
+  $item->author = $conf['rss_feed_author'];
+  $item->guid= sprintf('%s', 'pics-'.$date);;
+
+  $rss->addItem($item);
+}
+
+$fileName= PHPWG_ROOT_PATH.$conf['data_location'].'tmp';
+mkgetdir($fileName); // just in case
+$fileName.='/feed.xml';
+// send XML feed
+echo $rss->saveFeed('RSS2.0', $fileName, true);
+?>
Index: /tags/2.6.0RC1/galleries/index.php
===================================================================
--- /tags/2.6.0RC1/galleries/index.php	(revision 25596)
+++ /tags/2.6.0RC1/galleries/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/i.php
===================================================================
--- /tags/2.6.0RC1/i.php	(revision 25596)
+++ /tags/2.6.0RC1/i.php	(revision 25596)
@@ -0,0 +1,632 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+
+// fast bootstrap - no db connection
+include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+
+defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
+defined('PWG_DERIVATIVE_DIR') or define('PWG_DERIVATIVE_DIR', $conf['data_location'].'i/');
+
+@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
+
+
+function trigger_action() {}
+function get_extension( $filename )
+{
+  return substr( strrchr( $filename, '.' ), 1, strlen ( $filename ) );
+}
+
+function mkgetdir($dir)
+{
+  if ( !is_dir($dir) )
+  {
+    global $conf;
+    if (substr(PHP_OS, 0, 3) == 'WIN')
+    {
+      $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
+    }
+    $umask = umask(0);
+    $mkd = @mkdir($dir, $conf['chmod_value'], true);
+    umask($umask);
+    if ($mkd==false && !is_dir($dir) /* retest existence because of potential concurrent i.php with slow file systems*/)
+    {
+      return false;
+    }
+
+    $file = $dir.'/index.htm';
+    file_exists($file) or @file_put_contents( $file, 'Not allowed!' );
+  }
+  if ( !is_writable($dir) )
+  {
+    return false;
+  }
+  return true;
+}
+
+// end fast bootstrap
+
+function ilog()
+{
+  global $conf;
+  if (!$conf['enable_i_log']) return;
+
+  $line = date("c");
+  foreach( func_get_args() as $arg)
+  {
+    $line .= ' ';
+    if (is_array($arg))
+    {
+      $line .= implode(' ', $arg);
+    }
+    else
+    {
+      $line .= $arg;
+    }
+  }
+	$file=PHPWG_ROOT_PATH.$conf['data_location'].'tmp/i.log';
+  if (false == file_put_contents($file, $line."\n", FILE_APPEND))
+	{
+		mkgetdir(dirname($file));
+	}
+}
+
+function ierror($msg, $code)
+{
+  if ($code==301 || $code==302)
+  {
+    if (ob_get_length () !== FALSE)
+    {
+      ob_clean();
+    }
+    // default url is on html format
+    $url = html_entity_decode($msg);
+    header('Request-URI: '.$url);
+    header('Content-Location: '.$url);
+    header('Location: '.$url);
+    ilog('WARN', $code, $url, $_SERVER['REQUEST_URI']);
+    exit;
+  }
+  if ($code>=400)
+  {
+    $protocol = $_SERVER["SERVER_PROTOCOL"];
+    if ( ('HTTP/1.1' != $protocol) && ('HTTP/1.0' != $protocol) )
+      $protocol = 'HTTP/1.0';
+
+    header( "$protocol $code $msg", true, $code );
+  }
+  //todo improve
+  echo $msg;
+  ilog('ERROR', $code, $msg, $_SERVER['REQUEST_URI']);
+  exit;
+}
+
+function time_step( &$step )
+{
+  $tmp = $step;
+  $step = microtime(true);
+  return intval(1000*($step - $tmp));
+}
+
+function url_to_size($s)
+{
+  $pos = strpos($s, 'x');
+  if ($pos===false)
+  {
+    return array((int)$s, (int)$s);
+  }
+  return array((int)substr($s,0,$pos), (int)substr($s,$pos+1));
+}
+
+function parse_custom_params($tokens)
+{
+  if (count($tokens)<1)
+    ierror('Empty array while parsing Sizing', 400);
+
+  $crop = 0;
+  $min_size = null;
+
+  $token = array_shift($tokens);
+  if ($token[0]=='s')
+  {
+    $size = url_to_size( substr($token,1) );
+  }
+  elseif ($token[0]=='e')
+  {
+    $crop = 1;
+    $size = $min_size = url_to_size( substr($token,1) );
+  }
+  else
+  {
+    $size = url_to_size( $token );
+    if (count($tokens)<2)
+      ierror('Sizing arr', 400);
+
+    $token = array_shift($tokens);
+    $crop = char_to_fraction($token);
+
+    $token = array_shift($tokens);
+    $min_size = url_to_size( $token );
+  }
+  return new DerivativeParams( new SizingParams($size, $crop, $min_size) );
+}
+
+function parse_request()
+{
+  global $conf, $page;
+
+  if ( $conf['question_mark_in_urls']==false and
+       isset($_SERVER["PATH_INFO"]) and !empty($_SERVER["PATH_INFO"]) )
+  {
+    $req = $_SERVER["PATH_INFO"];
+    $req = str_replace('//', '/', $req);
+    $path_count = count( explode('/', $req) );
+    $page['root_path'] = PHPWG_ROOT_PATH.str_repeat('../', $path_count-1);
+  }
+  else
+  {
+    $req = $_SERVER["QUERY_STRING"];
+    if ($pos=strpos($req, '&'))
+    {
+      $req = substr($req, 0, $pos);
+    }
+    $req = rawurldecode($req);
+    /*foreach (array_keys($_GET) as $keynum => $key)
+    {
+      $req = $key;
+      break;
+    }*/
+    $page['root_path'] = PHPWG_ROOT_PATH;
+  }
+
+  $req = ltrim($req, '/');
+
+  foreach (preg_split('#/+#', $req) as $token)
+  {
+    preg_match($conf['sync_chars_regex'], $token) or ierror('Invalid chars in request', 400);
+  }
+
+  $page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req;
+
+  $pos = strrpos($req, '.');
+  $pos!== false || ierror('Missing .', 400);
+  $ext = substr($req, $pos);
+  $page['derivative_ext'] = $ext;
+  $req = substr($req, 0, $pos);
+
+  $pos = strrpos($req, '-');
+  $pos!== false || ierror('Missing -', 400);
+  $deriv = substr($req, $pos+1);
+  $req = substr($req, 0, $pos);
+
+  $deriv = explode('_', $deriv);
+  foreach (ImageStdParams::get_defined_type_map() as $type => $params)
+  {
+    if ( derivative_to_url($type) == $deriv[0])
+    {
+      $page['derivative_type'] = $type;
+      $page['derivative_params'] = $params;
+      break;
+    }
+  }
+
+  if (!isset($page['derivative_type']))
+  {
+    if (derivative_to_url(IMG_CUSTOM) == $deriv[0])
+    {
+      $page['derivative_type'] = IMG_CUSTOM;
+    }
+    else
+    {
+      ierror('Unknown parsing type', 400);
+    }
+  }
+  array_shift($deriv);
+
+  if ($page['derivative_type'] == IMG_CUSTOM)
+  {
+    $params = $page['derivative_params'] = parse_custom_params($deriv);
+    ImageStdParams::apply_global($params);
+
+    if ($params->sizing->ideal_size[0] < 20 or $params->sizing->ideal_size[1] < 20)
+    {
+      ierror('Invalid size', 400);
+    }
+    if ($params->sizing->max_crop < 0 or $params->sizing->max_crop > 1)
+    {
+      ierror('Invalid crop', 400);
+    }
+    $greatest = ImageStdParams::get_by_type(IMG_XXLARGE);
+
+    $key = array();
+    $params->add_url_tokens($key);
+    $key = implode('_', $key);
+    if (!isset(ImageStdParams::$custom[$key]))
+    {
+      ierror('Size not allowed', 403);
+    }
+  }
+
+  if (is_file(PHPWG_ROOT_PATH.$req.$ext))
+  {
+    $req = './'.$req; // will be used to match #iamges.path
+  }
+  elseif (is_file(PHPWG_ROOT_PATH.'../'.$req.$ext))
+  {
+    $req = '../'.$req;
+  }
+
+  $page['src_location'] = $req.$ext;
+  $page['src_path'] = PHPWG_ROOT_PATH.$page['src_location'];
+  $page['src_url'] = $page['root_path'].$page['src_location'];
+}
+
+function try_switch_source(DerivativeParams $params, $original_mtime)
+{
+  global $page;
+  $original_size = null;
+  if (isset($page['original_size']))
+  {
+    $original_size = $page['original_size'];
+    if ($page['rotation_angle']==90 || $page['rotation_angle']==270)
+    {
+      $tmp = $original_size[0];
+      $original_size[0] = $original_size[1];
+      $original_size[1] = $tmp;
+    }
+  }
+
+  $use_watermark = $params->use_watermark;
+  if ($use_watermark)
+  {
+    if (!isset($original_size))
+      return false; // cannot really know if a watermark is required
+    $dsize = $params->compute_final_size($original_size);
+    $use_watermark = $params->will_watermark($dsize);
+  }
+
+  $candidates = array();
+  foreach(ImageStdParams::get_defined_type_map() as $candidate)
+  {
+    if ($candidate->type == $params->type)
+      continue;
+    if ($candidate->use_watermark != $use_watermark)
+      continue;
+    if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height())
+      continue;
+    if ($params->sizing->max_crop==0)
+    {
+      if ($candidate->sizing->max_crop!=0)
+        continue;
+    }
+    else
+    {
+      if ($candidate->sizing->max_crop!=0)
+        continue; // this could be optimized
+      if (!isset($original_size))
+        continue;
+      $candidate_size = $candidate->compute_final_size($original_size);
+      if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] )
+        continue;
+    }
+    $candidates[] = $candidate;
+  }
+
+  foreach( array_reverse($candidates) as $candidate)
+  {
+    $candidate_path = $page['derivative_path'];
+    $candidate_path = str_replace( '-'.derivative_to_url($params->type), '-'.derivative_to_url($candidate->type), $candidate_path);
+    $candidate_mtime = @filemtime($candidate_path);
+    if ($candidate_mtime === false
+      || $candidate_mtime < $original_mtime
+      || $candidate_mtime < $candidate->last_mod_time)
+      continue;
+    $params->use_watermark = false;
+    $params->sharpen = min(1, $params->sharpen);
+    $page['src_path'] = $candidate_path;
+    $page['src_url'] = $page['root_path'] . substr($candidate_path, strlen(PHPWG_ROOT_PATH));
+    $page['rotation_angle'] = 0;
+		return true;
+  }
+	return false;
+}
+
+function send_derivative($expires)
+{
+  global $page;
+
+  if (isset($_GET['ajaxload']) and $_GET['ajaxload'] == 'true')
+  {
+    include_once(PHPWG_ROOT_PATH.'include/functions_cookie.inc.php');
+    include_once(PHPWG_ROOT_PATH.'include/functions_url.inc.php');
+
+    echo json_encode( array( 'url'=>embellish_url(get_absolute_root_url().$page['derivative_path']) ) );
+    return;
+  }
+  $fp = fopen($page['derivative_path'], 'rb');
+
+  $fstat = fstat($fp);
+  header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fstat['mtime']).' GMT');
+  if ($expires!==false)
+  {
+    header('Expires: '.gmdate('D, d M Y H:i:s', $expires).' GMT');
+  }
+  header('Content-length: '.$fstat['size']);
+  header('Connection: close');
+
+  $ctype="application/octet-stream";
+  switch (strtolower($page['derivative_ext']))
+  {
+    case ".jpe": case ".jpeg": case ".jpg": $ctype="image/jpeg"; break;
+    case ".png": $ctype="image/png"; break;
+    case ".gif": $ctype="image/gif"; break;
+  }
+  header("Content-Type: $ctype");
+
+  fpassthru($fp);
+  fclose($fp);
+}
+
+$page=array();
+$begin = $step = microtime(true);
+$timing=array();
+foreach( explode(',','load,rotate,crop,scale,sharpen,watermark,save,send') as $k )
+{
+  $timing[$k] = '';
+}
+
+include_once(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
+include_once( PHPWG_ROOT_PATH .'/include/derivative_params.inc.php');
+include_once( PHPWG_ROOT_PATH .'/include/derivative_std_params.inc.php');
+
+try
+{
+  pwg_db_connect($conf['db_host'], $conf['db_user'],
+                 $conf['db_password'], $conf['db_base']);
+}
+catch (Exception $e)
+{
+  ilog("db error", $e->getMessage());
+}
+pwg_db_check_charset();
+
+list($conf['derivatives']) = pwg_db_fetch_row(pwg_query('SELECT value FROM '.$prefixeTable.'config WHERE param=\'derivatives\''));
+ImageStdParams::load_from_db();
+
+
+parse_request();
+//var_export($page);
+
+$params = $page['derivative_params'];
+
+$src_mtime = @filemtime($page['src_path']);
+if ($src_mtime === false)
+{
+  ierror('Source not found', 404);
+}
+
+$need_generate = false;
+$derivative_mtime = @filemtime($page['derivative_path']);
+if ($derivative_mtime === false or
+    $derivative_mtime < $src_mtime or
+    $derivative_mtime < $params->last_mod_time)
+{
+  $need_generate = true;
+}
+
+$expires=false;
+$now = time();
+if ( isset($_GET['b']) )
+{
+  $expires = $now + 100;
+  header("Cache-control: no-store, max-age=100");
+}
+elseif ( $now > (max($src_mtime, $params->last_mod_time) + 24*3600) )
+{// somehow arbitrary - if derivative params or src didn't change for the last 24 hours, we send an expire header for several days
+  $expires = $now + 10*24*3600;
+}
+
+if (!$need_generate)
+{
+  if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] )
+    and strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $derivative_mtime)
+  {// send the last mod time of the file back
+    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $derivative_mtime).' GMT', true, 304);
+    header('Expires: '.gmdate('D, d M Y H:i:s', time()+10*24*3600).' GMT', true, 304);
+    exit;
+  }
+  send_derivative($expires);
+  exit;
+}
+
+include_once(PHPWG_ROOT_PATH . 'admin/include/image.class.php');
+$page['coi'] = null;
+if (strpos($page['src_location'], '/pwg_representative/')===false
+    && strpos($page['src_location'], 'themes/')===false
+    && strpos($page['src_location'], 'plugins/')===false)
+{
+  try
+  {
+    $query = '
+SELECT *
+  FROM '.$prefixeTable.'images
+  WHERE path=\''.$page['src_location'].'\'
+;';
+
+    if ( ($row=pwg_db_fetch_assoc(pwg_query($query))) )
+    {
+      if (isset($row['width']))
+      {
+        $page['original_size'] = array($row['width'],$row['height']);
+      }
+      $page['coi'] = $row['coi'];
+
+      if (!isset($row['rotation']))
+      {
+        $page['rotation_angle'] = pwg_image::get_rotation_angle($page['src_path']);
+
+        single_update(
+          $prefixeTable.'images',
+          array('rotation' => pwg_image::get_rotation_code_from_angle($page['rotation_angle'])),
+          array('id' => $row['id'])
+          );
+      }
+      else
+      {
+        $page['rotation_angle'] = pwg_image::get_rotation_angle_from_code($row['rotation']);
+      }
+    }
+    if (!$row)
+    {
+      ierror('Db file path not found', 404);
+    }
+  }
+  catch (Exception $e)
+  {
+    ilog("db error", $e->getMessage());
+  }
+}
+else
+{
+  $page['rotation_angle'] = 0;
+}
+pwg_db_close();
+
+if (!try_switch_source($params, $src_mtime) && $params->type==IMG_CUSTOM)
+{
+	$sharpen = 0;
+	foreach (ImageStdParams::get_defined_type_map() as $std_params)
+	{
+		$sharpen += $std_params->sharpen;
+	}
+	$params->sharpen = round($sharpen / count(ImageStdParams::get_defined_type_map()) );
+}
+
+if (!mkgetdir(dirname($page['derivative_path'])))
+{
+  ierror("dir create error", 500);
+}
+
+ignore_user_abort(true);
+@set_time_limit(0);
+
+$image = new pwg_image($page['src_path']);
+$timing['load'] = time_step($step);
+
+$changes = 0;
+
+// rotate
+if (0 != $page['rotation_angle'])
+{
+  $image->rotate($page['rotation_angle']);
+  $changes++;
+  $timing['rotate'] = time_step($step);
+}
+
+// Crop & scale
+$o_size = $d_size = array($image->get_width(),$image->get_height());
+$params->sizing->compute($o_size , $page['coi'], $crop_rect, $scaled_size );
+if ($crop_rect)
+{
+  $changes++;
+  $image->crop( $crop_rect->width(), $crop_rect->height(), $crop_rect->l, $crop_rect->t);
+  $timing['crop'] = time_step($step);
+}
+
+if ($scaled_size)
+{
+  $changes++;
+  $image->resize( $scaled_size[0], $scaled_size[1] );
+  $d_size = $scaled_size;
+  $timing['scale'] = time_step($step);
+}
+
+if ($params->sharpen)
+{
+  $changes += $image->sharpen( $params->sharpen );
+  $timing['sharpen'] = time_step($step);
+}
+
+if ($params->will_watermark($d_size))
+{
+  $wm = ImageStdParams::get_watermark();
+  $wm_image = new pwg_image(PHPWG_ROOT_PATH.$wm->file);
+  $wm_size = array($wm_image->get_width(),$wm_image->get_height());
+  if ($d_size[0]<$wm_size[0] or $d_size[1]<$wm_size[1])
+  {
+    $wm_scaling_params = SizingParams::classic($d_size[0], $d_size[1]);
+    $wm_scaling_params->compute($wm_size, null, $tmp, $wm_scaled_size);
+    $wm_size = $wm_scaled_size;
+    $wm_image->resize( $wm_scaled_size[0], $wm_scaled_size[1] );
+  }
+  $x = round( ($wm->xpos/100)*($d_size[0]-$wm_size[0]) );
+  $y = round( ($wm->ypos/100)*($d_size[1]-$wm_size[1]) );
+  if ($image->compose($wm_image, $x, $y, $wm->opacity))
+  {
+    $changes++;
+    if ($wm->xrepeat)
+    {
+      // todo
+      $pad = $wm_size[0] + max(30, round($wm_size[0]/4));
+      for($i=-$wm->xrepeat; $i<=$wm->xrepeat; $i++)
+      {
+        if (!$i) continue;
+        $x2 = $x + $i * $pad;
+        if ($x2>=0 && $x2+$wm_size[0]<$d_size[0])
+          if (!$image->compose($wm_image, $x2, $y, $wm->opacity))
+            break;
+      }
+    }
+  }
+  $wm_image->destroy();
+  $timing['watermark'] = time_step($step);
+}
+
+// no change required - redirect to source
+if (!$changes)
+{
+  header("X-i: No change");
+  ierror( $page['src_url'], 301);
+}
+
+if ($d_size[0]*$d_size[1] < $conf['derivatives_strip_metadata_threshold'])
+{// strip metadata for small images
+  $image->strip();
+}
+
+$image->set_compression_quality( ImageStdParams::$quality );
+$image->write( $page['derivative_path'] );
+$image->destroy();
+@chmod($page['derivative_path'], 0644);
+$timing['save'] = time_step($step);
+
+send_derivative($expires);
+$timing['send'] = time_step($step);
+
+ilog('perf',
+  basename($page['src_path']), $o_size, $o_size[0]*$o_size[1],
+  basename($page['derivative_path']), $d_size, $d_size[0]*$d_size[1],
+  function_exists('memory_get_peak_usage') ? round( memory_get_peak_usage()/(1024*1024), 1) : '',
+  time_step($begin),
+  '|', $timing);
+?>
Index: /tags/2.6.0RC1/identification.php
===================================================================
--- /tags/2.6.0RC1/identification.php	(revision 25596)
+++ /tags/2.6.0RC1/identification.php	(revision 25596)
@@ -0,0 +1,113 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//--------------------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_FREE);
+
+trigger_action('loc_begin_identification');
+
+//-------------------------------------------------------------- identification
+$redirect_to = '';
+if ( !empty($_GET['redirect']) )
+{
+  $redirect_to = urldecode($_GET['redirect']);
+  if ( is_a_guest() )
+  {
+    $page['errors'][] = l10n('You are not authorized to access the requested page');
+  }
+}
+
+if (isset($_POST['login']))
+{
+  if (!isset($_COOKIE[session_name()]))
+  {
+    $page['errors'][] = l10n('Cookies are blocked or not supported by your browser. You must enable cookies to connect.');
+  }
+  else
+  { 
+    if ($conf['insensitive_case_logon'] == true)
+    {
+      $_POST['username'] = search_case_username($_POST['username']);
+    }
+    
+    $redirect_to = isset($_POST['redirect']) ? urldecode($_POST['redirect']) : '';
+    $remember_me = isset($_POST['remember_me']) and $_POST['remember_me']==1;
+    
+    if ( try_log_user($_POST['username'], $_POST['password'], $remember_me) )
+    {
+      redirect(empty($redirect_to) ? get_gallery_home_url() : $redirect_to);
+    }
+    else
+    {
+      $page['errors'][] = l10n('Invalid password!');
+    }
+  }
+}
+
+//----------------------------------------------------- template initialization
+//
+// Start output of page
+//
+$title = l10n('Identification');
+$page['body_id'] = 'theIdentificationPage';
+
+$template->set_filenames( array('identification'=>'identification.tpl') );
+
+$template->assign(
+  array(
+    'U_REDIRECT' => $redirect_to,
+
+    'F_LOGIN_ACTION' => get_root_url().'identification.php',
+    'authorize_remembering' => $conf['authorize_remembering'],
+    ));
+
+if (!$conf['gallery_locked'] && $conf['allow_user_registration'])
+{
+  $template->assign('U_REGISTER', get_root_url().'register.php' );
+}
+
+if (!$conf['gallery_locked'])
+{
+  $template->assign('U_LOST_PASSWORD', get_root_url().'password.php' );
+}
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!$conf['gallery_locked'] && (!isset($themeconf['hide_menu_on']) OR !in_array('theIdentificationPage', $themeconf['hide_menu_on'])))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+//----------------------------------------------------------- html code display
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_identification');
+flush_page_messages();
+$template->pparse('identification');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/include/block.class.php
===================================================================
--- /tags/2.6.0RC1/include/block.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/block.class.php	(revision 25596)
@@ -0,0 +1,214 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class BlockManager
+{
+  protected $id;
+  protected $registered_blocks=array();
+  protected $display_blocks = array();
+
+  public function BlockManager($id)
+  {
+    $this->id = $id;
+  }
+
+  /** triggers an action that allows implementors of menu blocks to register the blocks*/
+  public function load_registered_blocks()
+  {
+    trigger_action('blockmanager_register_blocks', array(&$this) );
+  }
+
+  public function get_id()
+  {
+    return $this->id;
+  }
+
+  public function get_registered_blocks()
+  {
+    return $this->registered_blocks;
+  }
+
+  /** registers a block with this menu. usually called as a result of menubar_register_blocks action
+   * @param MenuBlock block
+  */
+  public function register_block(&$block)
+  {
+    if ( isset($this->registered_blocks[$block->get_id()] ) )
+    {
+      trigger_error("Block '".$block->get_id()."' is already registered", E_USER_WARNING);
+      return false;
+    }
+    $this->registered_blocks[$block->get_id()] = &$block;
+    return true;
+  }
+
+  /** performs one time preparation of registered blocks for display;
+   * triggers the action menubar_prepare_display where implementors can
+   * reposition or hide blocks
+  */
+  public function prepare_display()
+  {
+    global $conf;
+    $conf_id = 'blk_'.$this->id;
+    $mb_conf = isset($conf[$conf_id]) ? $conf[$conf_id] : array();
+    if ( !is_array($mb_conf) )
+      $mb_conf = @unserialize($mb_conf);
+
+    $idx = 1;
+    foreach( $this->registered_blocks as $id => $block )
+    {
+      $pos = isset( $mb_conf[$id] ) ? $mb_conf[$id] : $idx*50;
+      if ( $pos>0 )
+      {
+        $this->display_blocks[$id] = new DisplayBlock($block);
+        $this->display_blocks[$id]->set_position($pos);
+      }
+      $idx++;
+    }
+    $this->sort_blocks();
+    trigger_action( 'blockmanager_prepare_display', array(&$this) );
+    $this->sort_blocks();
+  }
+
+  /** returns true if the block whose id is hidden
+   * @param string block_id
+  */
+  public function is_hidden($block_id)
+  {
+    return isset($this->display_blocks[$block_id]) ? false : true;
+  }
+
+  public function hide_block($block_id)
+  {
+    unset( $this->display_blocks[$block_id] );
+  }
+
+  public function &get_block($block_id)
+  {
+    $tmp = null;
+    if ( isset($this->display_blocks[$block_id]) )
+    {
+      return $this->display_blocks[$block_id];
+    }
+    return $tmp;
+  }
+
+  public function set_block_position($block_id, $position)
+  {
+    if ( isset($this->display_blocks[$block_id]) )
+    {
+      $this->display_blocks[$block_id]->set_position($position);
+    }
+  }
+
+  protected function sort_blocks()
+  {
+    uasort( $this->display_blocks, array('BlockManager', 'cmp_by_position') );
+  }
+
+  static protected function cmp_by_position($a, $b)
+  {
+    return $a->get_position() - $b->get_position();
+  }
+
+  public function apply($var, $file)
+  {
+    global $template;
+
+    $template->set_filename('menubar', $file);
+    trigger_action('blockmanager_apply', array(&$this) );
+
+    foreach( $this->display_blocks as $id=>$block)
+    {
+      if (empty($block->raw_content) and empty($block->template) )
+      {
+        $this->hide_block($id);
+      }
+    }
+    $this->sort_blocks();
+    $template->assign('blocks', $this->display_blocks);
+    $template->assign_var_from_handle($var, 'menubar');
+  }
+}
+
+/**
+ * Represents a menu block registered in a Menu object.
+ */
+class RegisteredBlock
+{
+  protected $id;
+  protected $name;
+  protected $owner;
+
+  public function RegisteredBlock($id, $name, $owner)
+  {
+    $this->id = $id;
+    $this->name = $name;
+    $this->owner = $owner;
+  }
+
+  public function get_id() { return $this->id; }
+  public function get_name() { return $this->name; }
+  public function get_owner() { return $this->owner; }
+}
+
+/**
+ * Represents a menu block ready for display in the Menu object.
+ */
+class DisplayBlock
+{
+  protected $_registeredBlock;
+  protected $_position;
+
+  protected $_title;
+
+  public $data;
+  public $template;
+  public $raw_content;
+
+  public function DisplayBlock($registeredBlock)
+  {
+    $this->_registeredBlock = &$registeredBlock;
+  }
+
+  public function &get_block() { return $this->_registeredBlock; }
+
+  public function get_position() { return $this->_position; }
+  public function set_position($position)
+  {
+    $this->_position = $position;
+  }
+
+  public function get_title()
+  {
+    if (isset($this->_title))
+      return $this->_title;
+    else
+      return $this->_registeredBlock->get_name();
+  }
+
+  public function set_title($title)
+  {
+    $this->_title = $title;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/calendar_base.class.php
===================================================================
--- /tags/2.6.0RC1/include/calendar_base.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/calendar_base.class.php	(revision 25596)
@@ -0,0 +1,376 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\calendar
+ */
+
+
+/**
+ * Base class for monthly and weekly calendar styles
+ */
+abstract class CalendarBase
+{
+  /** db column on which this calendar works */
+  var $date_field;
+  /** used for queries (INNER JOIN or normal) */
+  var $inner_sql;
+  /** used to store db fields */
+  var $calendar_levels;
+
+  /**
+   * Generate navigation bars for category page.
+   *
+   * @return boolean false indicates that thumbnails where not included
+   */
+  abstract function generate_category_content();
+
+  /**
+   * Returns a sql WHERE subquery for the date field.
+   *
+   * @param int $max_levels (e.g. 2=only year and month)
+   * @return string
+   */
+  abstract function get_date_where($max_levels);
+
+  /**
+   * Initialize the calendar.
+   *
+   * @param string $inner_sql
+   */
+  function initialize($inner_sql)
+  {
+    global $page;
+    if ($page['chronology_field']=='posted')
+    {
+      $this->date_field = 'date_available';
+    }
+    else
+    {
+      $this->date_field = 'date_creation';
+    }
+    $this->inner_sql = $inner_sql;
+  }
+
+  /**
+   * Returns the calendar title (with HTML).
+   *
+   * @return string
+   */
+  function get_display_name()
+  {
+    global $conf, $page;
+    $res = '';
+
+    for ($i=0; $i<count($page['chronology_date']); $i++)
+    {
+      $res .= $conf['level_separator'];
+      if ( isset($page['chronology_date'][$i+1]) )
+      {
+        $chronology_date = array_slice($page['chronology_date'],0, $i+1);
+        $url = duplicate_index_url(
+            array( 'chronology_date'=>$chronology_date ),
+            array( 'start' )
+            );
+        $res .=
+          '<a href="'.$url.'">'
+          .$this->get_date_component_label($i, $page['chronology_date'][$i])
+          .'</a>';
+      }
+      else
+      {
+        $res .=
+          '<span class="calInHere">'
+          .$this->get_date_component_label($i, $page['chronology_date'][$i])
+          .'</span>';
+      }
+    }
+    return $res;
+  }
+
+  /**
+   * Returns a display name for a date component optionally using labels.
+   *
+   * @return string
+   */
+  protected function get_date_component_label($level, $date_component)
+  {
+    $label = $date_component;
+    if (isset($this->calendar_levels[$level]['labels'][$date_component]))
+    {
+      $label = $this->calendar_levels[$level]['labels'][$date_component];
+    }
+    elseif ('any' === $date_component )
+    {
+      $label = l10n('All');
+    }
+    return $label;
+  }
+
+  /**
+   * Gets a nice display name for a date to be shown in previous/next links
+   *
+   * @param string $date
+   * @return string
+   */
+  protected function get_date_nice_name($date)
+  {
+    $date_components = explode('-', $date);
+    $res = '';
+    for ($i=count($date_components)-1; $i>=0; $i--)
+    {
+      if ('any' !== $date_components[$i])
+      {
+        $label = $this->get_date_component_label($i, $date_components[$i] );
+        if ( $res!='' )
+        {
+          $res .= ' ';
+        }
+        $res .= $label;
+      }
+    }
+    return $res;
+  }
+
+  /**
+   * Creates a calendar navigation bar.
+   *
+   * @param array $date_components
+   * @param array $items - hash of items to put in the bar (e.g. 2005,2006)
+   * @param bool $show_any - adds any link to the end of the bar
+   * @param bool $show_empty - shows all labels even those without items
+   * @param array $labels - optional labels for items (e.g. Jan,Feb,...)
+   * @return string
+   */
+  protected function get_nav_bar_from_items($date_components, $items,
+                                  $show_any,
+                                  $show_empty=false, $labels=null)
+  {
+    global $conf, $page, $template;
+
+    $nav_bar_datas=array();
+
+    if ($conf['calendar_show_empty'] and $show_empty and !empty($labels) )
+    {
+      foreach ($labels as $item => $label)
+      {
+        if ( ! isset($items[$item]) )
+        {
+          $items[$item] = -1;
+        }
+      }
+      ksort($items);
+    }
+
+    foreach ($items as $item => $nb_images)
+    {
+      $label = $item;
+      if (isset($labels[$item]))
+      {
+        $label = $labels[$item];
+      }
+      if ($nb_images==-1)
+      {
+        $tmp_datas=array(
+          'LABEL'=> $label
+        );
+      }
+      else
+      {
+        $url = duplicate_index_url(
+          array('chronology_date'=>array_merge($date_components,array($item))),
+          array( 'start' )
+            );
+        $tmp_datas=array(
+          'LABEL'=> $label,
+          'URL' => $url
+        );
+      }
+      if ($nb_images > 0)
+      {
+        $tmp_datas['NB_IMAGES']=$nb_images;
+      }
+      $nav_bar_datas[]=$tmp_datas;
+
+    }
+
+    if ($conf['calendar_show_any'] and $show_any and count($items)>1 and
+          count($date_components)<count($this->calendar_levels)-1 )
+    {
+      $url = duplicate_index_url(
+        array('chronology_date'=>array_merge($date_components,array('any'))),
+        array( 'start' )
+          );
+      $nav_bar_datas[]=array(
+        'LABEL' => l10n('All'),
+        'URL' => $url
+      );
+    }
+
+    return $nav_bar_datas;
+  }
+
+  /**
+   * Creates a calendar navigation bar for a given level.
+   *
+   * @param int $level - 0-year, 1-month/week, 2-day
+   */
+  protected function build_nav_bar($level, $labels=null)
+  {
+    global $template, $conf, $page;
+
+    $query = '
+SELECT DISTINCT('.$this->calendar_levels[$level]['sql'].') as period,
+  COUNT(DISTINCT id) as nb_images'.
+$this->inner_sql.
+$this->get_date_where($level).'
+  GROUP BY period;';
+
+    $level_items = simple_hash_from_query($query, 'period', 'nb_images');
+
+    if ( count($level_items)==1 and
+         count($page['chronology_date'])<count($this->calendar_levels)-1)
+    {
+      if ( ! isset($page['chronology_date'][$level]) )
+      {
+        list($key) = array_keys($level_items);
+        $page['chronology_date'][$level] = (int)$key;
+
+        if ( $level<count($page['chronology_date']) and
+             $level!=count($this->calendar_levels)-1 )
+        {
+          return;
+        }
+      }
+    }
+
+    $dates = $page['chronology_date'];
+    while ($level<count($dates))
+    {
+      array_pop($dates);
+    }
+
+    $nav_bar = $this->get_nav_bar_from_items(
+      $dates,
+      $level_items,
+      true,
+      true,
+      isset($labels) ? $labels : $this->calendar_levels[$level]['labels']
+      );
+
+    $template->append(
+      'chronology_navigation_bars',
+      array(
+        'items' => $nav_bar,
+        )
+      );
+  }
+
+  /**
+   * Assigns the next/previous link to the template with regards to
+   * the currently choosen date.
+   */
+  protected function build_next_prev()
+  {
+    global $template, $page;
+
+    $prev = $next =null;
+    if ( empty($page['chronology_date']) )
+      return;
+    
+    $sub_queries = array();
+    $nb_elements = count($page['chronology_date']);
+    for ($i=0; $i<$nb_elements; $i++)
+    {
+      if ( 'any' === $page['chronology_date'][$i] )
+      {
+        $sub_queries[] = '\'any\'';
+      }
+      else
+      {
+        $sub_queries[] = pwg_db_cast_to_text($this->calendar_levels[$i]['sql']);
+      }
+    }
+    $query = 'SELECT '.pwg_db_concat_ws($sub_queries, '-').' AS period';
+    $query .= $this->inner_sql .'
+AND ' . $this->date_field . ' IS NOT NULL
+GROUP BY period';
+    
+    $current = implode('-', $page['chronology_date'] );
+    $upper_items = array_from_query( $query, 'period');
+
+    usort($upper_items, 'version_compare');
+    $upper_items_rank = array_flip($upper_items);
+    if ( !isset($upper_items_rank[$current]) )
+    {
+      $upper_items[] = $current;// just in case (external link)
+      usort($upper_items, 'version_compare');
+      $upper_items_rank = array_flip($upper_items);
+    }
+    $current_rank = $upper_items_rank[$current];
+
+    $tpl_var = array();
+
+    if ( $current_rank>0 )
+    { // has previous
+      $prev = $upper_items[$current_rank-1];
+      $chronology_date = explode('-', $prev);
+      $tpl_var['previous'] =
+        array(
+          'LABEL' => $this->get_date_nice_name($prev),
+          'URL' => duplicate_index_url(
+                array('chronology_date'=>$chronology_date), array('start')
+                )
+        );
+    }
+
+    if ( $current_rank < count($upper_items)-1 )
+    { // has next
+      $next = $upper_items[$current_rank+1];
+      $chronology_date = explode('-', $next);
+      $tpl_var['next'] =
+        array(
+          'LABEL' => $this->get_date_nice_name($next),
+          'URL' => duplicate_index_url(
+                array('chronology_date'=>$chronology_date), array('start')
+                )
+        );
+    }
+
+    if ( !empty($tpl_var) )
+    {
+      $existing = $template->smarty->getVariable('chronology_navigation_bars');
+      if (! ($existing instanceof Undefined_Smarty_Variable))
+      {
+        $existing->value[ sizeof($existing->value)-1 ] =
+          array_merge( $existing->value[ sizeof($existing->value)-1 ], $tpl_var);
+      }
+      else
+      {
+        $template->append( 'chronology_navigation_bars', $tpl_var );
+      }
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/calendar_monthly.class.php
===================================================================
--- /tags/2.6.0RC1/include/calendar_monthly.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/calendar_monthly.class.php	(revision 25596)
@@ -0,0 +1,543 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\calendar
+ */
+
+include_once(PHPWG_ROOT_PATH.'include/calendar_base.class.php');
+
+/** level of year view */
+define('CYEAR',  0);
+/** level of month view */
+define('CMONTH', 1);
+/** level of day view */
+define('CDAY',   2);
+
+
+/**
+ * Monthly calendar style (composed of years/months and days)
+ */
+class Calendar extends CalendarBase
+{
+  /**
+   * Initialize the calendar.
+   * @param string $inner_sql
+   */
+  function initialize($inner_sql)
+  {
+    parent::initialize($inner_sql);
+    global $lang;
+    $this->calendar_levels = array(
+      array(
+          'sql'=> pwg_db_get_year($this->date_field),
+          'labels' => null
+        ),
+      array(
+	  'sql'=> pwg_db_get_month($this->date_field),
+	  'labels' => $lang['month']
+        ),
+      array(
+          'sql'=> pwg_db_get_dayofmonth($this->date_field),
+          'labels' => null
+        ),
+     );
+  }
+
+  /**
+   * Generate navigation bars for category page.
+   *
+   * @return boolean false indicates that thumbnails where not included
+   */
+  function generate_category_content()
+  {
+    global $conf, $page;
+
+    $view_type = $page['chronology_view'];
+    if ($view_type==CAL_VIEW_CALENDAR)
+    {
+      global $template;
+      $tpl_var = array();
+      if ( count($page['chronology_date'])==0 )
+      {//case A: no year given - display all years+months
+        if ($this->build_global_calendar($tpl_var))
+        {
+          $template->assign('chronology_calendar', $tpl_var);
+          return true;
+        }
+      }
+
+      if ( count($page['chronology_date'])==1 )
+      {//case B: year given - display all days in given year
+        if ($this->build_year_calendar($tpl_var))
+        {
+          $template->assign('chronology_calendar', $tpl_var);
+          $this->build_nav_bar(CYEAR); // years
+          return true;
+        }
+      }
+
+      if ( count($page['chronology_date'])==2 )
+      {//case C: year+month given - display a nice month calendar
+        if ( $this->build_month_calendar($tpl_var) )
+        {
+          $template->assign('chronology_calendar', $tpl_var);
+        }
+        $this->build_next_prev();
+        return true;
+      }
+    }
+
+    if ($view_type==CAL_VIEW_LIST or count($page['chronology_date'])==3)
+    {
+      if ( count($page['chronology_date'])==0 )
+      {
+        $this->build_nav_bar(CYEAR); // years
+      }
+      if ( count($page['chronology_date'])==1)
+      {
+        $this->build_nav_bar(CMONTH); // month
+      }
+      if ( count($page['chronology_date'])==2 )
+      {
+        $day_labels = range( 1, $this->get_all_days_in_month(
+                $page['chronology_date'][CYEAR] ,$page['chronology_date'][CMONTH] ) );
+        array_unshift($day_labels, 0);
+        unset( $day_labels[0] );
+        $this->build_nav_bar( CDAY, $day_labels ); // days
+      }
+      $this->build_next_prev();
+    }
+    return false;
+  }
+
+  /**
+   * Returns a sql WHERE subquery for the date field.
+   *
+   * @param int $max_levels (e.g. 2=only year and month)
+   * @return string
+   */
+  function get_date_where($max_levels=3)
+  {
+    global $page;
+
+    $date = $page['chronology_date'];
+    while (count($date)>$max_levels)
+    {
+      array_pop($date);
+    }
+    $res = '';
+    if (isset($date[CYEAR]) and $date[CYEAR]!=='any')
+    {
+      $b = $date[CYEAR] . '-';
+      $e = $date[CYEAR] . '-';
+      if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
+      {
+        $b .= sprintf('%02d-', $date[CMONTH]);
+        $e .= sprintf('%02d-', $date[CMONTH]);
+        if (isset($date[CDAY]) and $date[CDAY]!=='any')
+        {
+          $b .= sprintf('%02d', $date[CDAY]);
+          $e .= sprintf('%02d', $date[CDAY]);
+        }
+        else
+        {
+          $b .= '01';
+          $e .= $this->get_all_days_in_month($date[CYEAR], $date[CMONTH]);
+        }
+      }
+      else
+      {
+        $b .= '01-01';
+        $e .= '12-31';
+        if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
+        {
+          $res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH];
+        }
+        if (isset($date[CDAY]) and $date[CDAY]!=='any')
+        {
+          $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
+        }
+      }
+      $res = " AND $this->date_field BETWEEN '$b' AND '$e 23:59:59'" . $res;
+    }
+    else
+    {
+      $res = ' AND '.$this->date_field.' IS NOT NULL';
+      if (isset($date[CMONTH]) and $date[CMONTH]!=='any')
+      {
+        $res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH];
+      }
+      if (isset($date[CDAY]) and $date[CDAY]!=='any')
+      {
+        $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
+      }
+    }
+    return $res;
+  }
+
+  /**
+   * Returns an array with all the days in a given month.
+   *
+   * @param int $year
+   * @param int $month
+   * @return int[]
+   */
+  protected function get_all_days_in_month($year, $month)
+  {
+    $md= array(1=>31,28,31,30,31,30,31,31,30,31,30,31);
+
+    if ( is_numeric($year) and $month==2)
+    {
+      $nb_days = $md[2];
+      if ( ($year%4==0)  and ( ($year%100!=0) or ($year%400!=0) ) )
+      {
+        $nb_days++;
+      }
+    }
+    elseif ( is_numeric($month) )
+    {
+      $nb_days = $md[ $month ];
+    }
+    else
+    {
+      $nb_days = 31;
+    }
+    return $nb_days;
+  }
+
+  /**
+   * Build global calendar and assign the result in _$tpl_var_
+   *
+   * @param array $tpl_var
+   * @return bool
+   */
+  protected function build_global_calendar(&$tpl_var)
+  {
+    global $page;
+
+    assert( count($page['chronology_date']) == 0 );
+    $query='
+  SELECT '.pwg_db_get_date_YYYYMM($this->date_field).' as period,
+    COUNT(distinct id) as count';
+    $query.= $this->inner_sql;
+    $query.= $this->get_date_where();
+    $query.= '
+    GROUP BY period
+    ORDER BY '.pwg_db_get_year($this->date_field).' DESC, '.pwg_db_get_month($this->date_field).' ASC';
+
+    $result = pwg_query($query);
+    $items=array();
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $y = substr($row['period'], 0, 4);
+      $m = (int)substr($row['period'], 4, 2);
+      if ( ! isset($items[$y]) )
+      {
+        $items[$y] = array('nb_images'=>0, 'children'=>array() );
+      }
+      $items[$y]['children'][$m] = $row['count'];
+      $items[$y]['nb_images'] += $row['count'];
+    }
+    //echo ('<pre>'. var_export($items, true) . '</pre>');
+    if (count($items)==1)
+    {// only one year exists so bail out to year view
+      list($y) = array_keys($items);
+      $page['chronology_date'][CYEAR] = $y;
+      return false;
+    }
+
+    global $lang;
+    foreach ( $items as $year=>$year_data)
+    {
+      $chronology_date = array( $year );
+      $url = duplicate_index_url( array('chronology_date'=>$chronology_date) );
+
+      $nav_bar = $this->get_nav_bar_from_items( $chronology_date,
+              $year_data['children'], false, false, $lang['month'] );
+
+      $tpl_var['calendar_bars'][] =
+        array(
+          'U_HEAD'  => $url,
+          'NB_IMAGES' => $year_data['nb_images'],
+          'HEAD_LABEL' => $year,
+          'items' => $nav_bar,
+        );
+    }
+
+    return true;
+  }
+
+  /**
+   * Build year calendar and assign the result in _$tpl_var_
+   *
+   * @param array $tpl_var
+   * @return bool
+   */
+  protected function build_year_calendar(&$tpl_var)
+  {
+    global $page;
+
+    assert( count($page['chronology_date']) == 1 );
+    $query='SELECT '.pwg_db_get_date_MMDD($this->date_field).' as period,
+              COUNT(DISTINCT id) as count';
+    $query.= $this->inner_sql;
+    $query.= $this->get_date_where();
+    $query.= '
+    GROUP BY period
+    ORDER BY period ASC';
+
+    $result = pwg_query($query);
+    $items=array();
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $m = (int)substr($row['period'], 0, 2);
+      $d = substr($row['period'], 2, 2);
+      if ( ! isset($items[$m]) )
+      {
+        $items[$m] = array('nb_images'=>0, 'children'=>array() );
+      }
+      $items[$m]['children'][$d] = $row['count'];
+      $items[$m]['nb_images'] += $row['count'];
+    }
+    if (count($items)==1)
+    { // only one month exists so bail out to month view
+      list($m) = array_keys($items);
+      $page['chronology_date'][CMONTH] = $m;
+      return false;
+    }
+    global $lang;
+    foreach ( $items as $month=>$month_data)
+    {
+      $chronology_date = array( $page['chronology_date'][CYEAR], $month );
+      $url = duplicate_index_url( array('chronology_date'=>$chronology_date) );
+
+      $nav_bar = $this->get_nav_bar_from_items( $chronology_date,
+                       $month_data['children'], false );
+
+      $tpl_var['calendar_bars'][] =
+        array(
+          'U_HEAD'  => $url,
+          'NB_IMAGES' => $month_data['nb_images'],
+          'HEAD_LABEL' => $lang['month'][$month],
+          'items' => $nav_bar,
+        );
+    }
+
+    return true;
+  }
+
+  /**
+   * Build month calendar and assign the result in _$tpl_var_
+   *
+   * @param array $tpl_var
+   * @return bool
+   */
+  protected function build_month_calendar(&$tpl_var)
+  {
+    global $page, $lang, $conf;
+
+    $query='SELECT '.pwg_db_get_dayofmonth($this->date_field).' as period,
+              COUNT(DISTINCT id) as count';
+    $query.= $this->inner_sql;
+    $query.= $this->get_date_where();
+    $query.= '
+    GROUP BY period
+    ORDER BY period ASC';
+
+    $items=array();
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $d = (int)$row['period'];
+      $items[$d] = array('nb_images'=>$row['count']);
+    }
+
+    foreach ( $items as $day=>$data)
+    {
+      $page['chronology_date'][CDAY]=$day;
+      $query = '
+  SELECT id, file,representative_ext,path,width,height,rotation, '.pwg_db_get_dayofweek($this->date_field).'-1 as dow';
+      $query.= $this->inner_sql;
+      $query.= $this->get_date_where();
+      $query.= '
+    ORDER BY '.DB_RANDOM_FUNCTION.'()
+    LIMIT 1';
+      unset ( $page['chronology_date'][CDAY] );
+
+      $row = pwg_db_fetch_assoc(pwg_query($query));
+      $derivative = new DerivativeImage(IMG_SQUARE, new SrcImage($row));
+      $items[$day]['derivative'] = $derivative;
+      $items[$day]['file'] = $row['file'];
+      $items[$day]['dow'] = $row['dow'];
+    }
+
+    if ( !empty($items) )
+    {
+      list($known_day) = array_keys($items);
+      $known_dow = $items[$known_day]['dow'];
+      $first_day_dow = ($known_dow-($known_day-1))%7;
+      if ($first_day_dow<0)
+      {
+        $first_day_dow += 7;
+      }
+      //first_day_dow = week day corresponding to the first day of this month
+      $wday_labels = $lang['day'];
+
+      if ('monday' == $conf['week_starts_on'])
+      {
+        if ($first_day_dow==0)
+        {
+          $first_day_dow = 6;
+        }
+        else
+        {
+          $first_day_dow -= 1;
+        }
+
+        $wday_labels[] = array_shift($wday_labels);
+      }
+
+      list($cell_width, $cell_height) = ImageStdParams::get_by_type(IMG_SQUARE)->sizing->ideal_size;
+      if ($cell_width>120)
+      {
+        $cell_width = $cell_height = 120;
+      }
+
+      $tpl_weeks    = array();
+      $tpl_crt_week = array();
+
+      //fill the empty days in the week before first day of this month
+      for ($i=0; $i<$first_day_dow; $i++)
+      {
+        $tpl_crt_week[] = array();
+      }
+
+      for ( $day = 1;
+            $day <= $this->get_all_days_in_month(
+              $page['chronology_date'][CYEAR], $page['chronology_date'][CMONTH]
+                );
+            $day++)
+      {
+        $dow = ($first_day_dow + $day-1)%7;
+        if ($dow==0 and $day!=1)
+        {
+          $tpl_weeks[]    = $tpl_crt_week; // add finished week to week list
+          $tpl_crt_week   = array(); // start new week
+        }
+
+        if ( !isset($items[$day]) )
+        {// empty day
+          $tpl_crt_week[]   =
+            array(
+                'DAY' => $day
+              );
+        }
+        else
+        {
+          list($tn_width,$tn_height) = $items[$day]['derivative']->get_size();
+
+          // now need to fit the thumbnail of size tn_size within
+          // a cell of size cell_size by playing with CSS position (left/top)
+          // and the width and height of <img>.
+          $ratio_w = $tn_width/$cell_width;
+          $ratio_h = $tn_height/$cell_height;
+
+          $pos_top=$pos_left=0;
+          $css_style = '';
+
+          if ( $ratio_w>1 and $ratio_h>1)
+          {// cell completely smaller than the thumbnail so we will let the browser
+           // resize the thumbnail
+            if ($ratio_w > $ratio_h )
+            {// thumbnail ratio compared to cell -> wide format
+              $css_style = 'height:'.$cell_height.'px;';
+              $browser_img_width = $cell_height*$tn_width/$tn_height;
+              $pos_left = ($browser_img_width-$cell_width)/2;
+            }
+            else
+            {
+              $css_style = 'width:'.$cell_width.'px;';
+              $browser_img_height = $cell_width*$tn_height/$tn_width;
+              $pos_top = ($browser_img_height-$cell_height)/2;
+            }
+          }
+          else
+          {
+            $pos_left = ($tn_width-$cell_width)/2;
+            $pos_top = ($tn_height-$cell_height)/2;
+          }
+
+          if ( round($pos_left)!=0)
+          {
+            $css_style.='left:'.round(-$pos_left).'px;';
+          }
+          if ( round($pos_top)!=0)
+          {
+            $css_style.='top:'.round(-$pos_top).'px;';
+          }
+          $url = duplicate_index_url(
+              array(
+                'chronology_date' =>
+                  array(
+                    $page['chronology_date'][CYEAR],
+                    $page['chronology_date'][CMONTH],
+                    $day
+                  )
+              )
+            );
+
+          $tpl_crt_week[]   =
+            array(
+                'DAY'         => $day,
+                'DOW'         => $dow,
+                'NB_ELEMENTS' => $items[$day]['nb_images'],
+                'IMAGE'       => $items[$day]['derivative']->get_url(),
+                'U_IMG_LINK'  => $url,
+                'IMAGE_STYLE' => $css_style,
+                'IMAGE_ALT'   => $items[$day]['file'],
+              );
+        }
+      }
+      //fill the empty days in the week after the last day of this month
+      while ( $dow<6 )
+      {
+        $tpl_crt_week[] = array();
+        $dow++;
+      }
+      $tpl_weeks[]    = $tpl_crt_week;
+
+      $tpl_var['month_view'] =
+          array(
+             'CELL_WIDTH'   => $cell_width,
+             'CELL_HEIGHT' => $cell_height,
+             'wday_labels' => $wday_labels,
+             'weeks' => $tpl_weeks,
+            );
+    }
+
+    return true;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/calendar_weekly.class.php
===================================================================
--- /tags/2.6.0RC1/include/calendar_weekly.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/calendar_weekly.class.php	(revision 25596)
@@ -0,0 +1,144 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\calendar
+ */
+
+include_once(PHPWG_ROOT_PATH.'include/calendar_base.class.php');
+
+/** level of year view */
+define('CYEAR', 0);
+/** level of week view */
+define('CWEEK', 1);
+/** level of day view */
+define('CDAY',  2);
+
+
+/**
+ * Weekly calendar style (composed of years/week in years and days in week)
+ */
+class Calendar extends CalendarBase
+{
+  /**
+   * Initialize the calendar
+   * @param string $inner_sql
+   */
+  function initialize($inner_sql)
+  {
+    parent::initialize($inner_sql);
+    global $lang, $conf;
+    $week_no_labels=array();
+    for ($i=1; $i<=53; $i++)
+    {
+      $week_no_labels[$i] = l10n('Week %d', $i);
+      //$week_no_labels[$i] = $i;
+    }
+
+    $this->calendar_levels = array(
+      array(
+          'sql'=> pwg_db_get_year($this->date_field),
+          'labels' => null
+        ),
+      array(
+          'sql'=> pwg_db_get_week($this->date_field).'+1',
+          'labels' => $week_no_labels,
+        ),
+      array(
+          'sql'=> pwg_db_get_dayofweek($this->date_field).'-1',
+          'labels' => $lang['day']
+        ),
+     );
+    //Comment next lines for week starting on Sunday or if MySQL version<4.0.17
+    //WEEK(date,5) = "0-53 - Week 1=the first week with a Monday in this year"
+    if ('monday' == $conf['week_starts_on'])
+    {
+      $this->calendar_levels[CWEEK]['sql'] = pwg_db_get_week($this->date_field, 5).'+1';
+      $this->calendar_levels[CDAY]['sql'] = pwg_db_get_weekday($this->date_field);
+      $this->calendar_levels[CDAY]['labels'][] = array_shift($this->calendar_levels[CDAY]['labels']);
+    }
+  }
+
+  /**
+   * Generate navigation bars for category page.
+   *
+   * @return boolean false indicates that thumbnails where not included
+   */
+  function generate_category_content()
+  {
+    global $conf, $page;
+
+    if ( count($page['chronology_date'])==0 )
+    {
+      $this->build_nav_bar(CYEAR); // years
+    }
+    if ( count($page['chronology_date'])==1 )
+    {
+      $this->build_nav_bar(CWEEK, array()); // week nav bar 1-53
+    }
+    if ( count($page['chronology_date'])==2 )
+    {
+      $this->build_nav_bar(CDAY); // days nav bar Mon-Sun
+    }
+    $this->build_next_prev();
+    return false;
+  }
+
+  /**
+   * Returns a sql WHERE subquery for the date field.
+   *
+   * @param int $max_levels (e.g. 2=only year and month)
+   * @return string
+   */
+  function get_date_where($max_levels=3)
+  {
+    global $page;
+    $date = $page['chronology_date'];
+    while (count($date)>$max_levels)
+    {
+      array_pop($date);
+    }
+    $res = '';
+    if (isset($date[CYEAR]) and $date[CYEAR]!=='any')
+    {
+      $y = $date[CYEAR];
+      $res = " AND $this->date_field BETWEEN '$y-01-01' AND '$y-12-31 23:59:59'";
+    }
+
+    if (isset($date[CWEEK]) and $date[CWEEK]!=='any')
+    {
+      $res .= ' AND '.$this->calendar_levels[CWEEK]['sql'].'='.$date[CWEEK];
+    }
+    if (isset($date[CDAY]) and $date[CDAY]!=='any')
+    {
+      $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY];
+    }
+    if (empty($res))
+    {
+      $res = ' AND '.$this->date_field.' IS NOT NULL';
+    }
+    return $res;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/category_cats.inc.php
===================================================================
--- /tags/2.6.0RC1/include/category_cats.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/category_cats.inc.php	(revision 25596)
@@ -0,0 +1,405 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the main page to show subcategories of a category
+ * or to show recent categories or main page categories list
+ *
+ */
+
+
+// $user['forbidden_categories'] including with USER_CACHE_CATEGORIES_TABLE
+$query = '
+SELECT
+    c.*,
+    user_representative_picture_id,
+    nb_images,
+    date_last,
+    max_date_last,
+    count_images,
+    nb_categories,
+    count_categories
+  FROM '.CATEGORIES_TABLE.' c
+    INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ucc
+    ON id = cat_id
+    AND user_id = '.$user['id'];
+
+if ('recent_cats' == $page['section'])
+{
+  $query.= '
+  WHERE '.get_recent_photos_sql('date_last');
+}
+else
+{
+  $query.= '
+  WHERE id_uppercat '.(!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']);
+}
+
+$query.= '
+      '.get_sql_condition_FandF(
+        array('visible_categories' => 'id'),
+        'AND'
+        );
+
+if ('recent_cats' != $page['section'])
+{
+  $query.= '
+  ORDER BY rank';
+}
+
+$result = pwg_query($query);
+$categories = array();
+$category_ids = array();
+$image_ids = array();
+$user_representative_updates_for = array();
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $row['is_child_date_last'] = @$row['max_date_last']>@$row['date_last'];
+
+  if (!empty($row['user_representative_picture_id']))
+  {
+    $image_id = $row['user_representative_picture_id'];
+  }
+  elseif (!empty($row['representative_picture_id']))
+  { // if a representative picture is set, it has priority
+    $image_id = $row['representative_picture_id'];
+  }
+  elseif ($conf['allow_random_representative'])
+  { // searching a random representant among elements in sub-categories
+    $image_id = get_random_image_in_category($row);
+  }
+  elseif ($row['count_categories']>0 and $row['count_images']>0)
+  { // searching a random representant among representant of sub-categories
+    $query = '
+SELECT representative_picture_id
+  FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
+  ON id = cat_id and user_id = '.$user['id'].'
+  WHERE uppercats LIKE \''.$row['uppercats'].',%\'
+    AND representative_picture_id IS NOT NULL'
+  .get_sql_condition_FandF
+  (
+    array
+      (
+        'visible_categories' => 'id',
+      ),
+    "\n  AND"
+  ).'
+  ORDER BY '.DB_RANDOM_FUNCTION.'()
+  LIMIT 1
+;';
+    $subresult = pwg_query($query);
+    if (pwg_db_num_rows($subresult) > 0)
+    {
+      list($image_id) = pwg_db_fetch_row($subresult);
+    }
+  }
+
+
+  if (isset($image_id))
+  {
+    if ($conf['representative_cache_on_subcats'] and $row['user_representative_picture_id'] != $image_id)
+    {
+      $user_representative_updates_for[ $row['id'] ] = $image_id;
+    }
+
+    $row['representative_picture_id'] = $image_id;
+    $image_ids[] = $image_id;
+    $categories[] = $row;
+    $category_ids[] = $row['id'];
+  }
+  unset($image_id);
+}
+
+if ($conf['display_fromto'])
+{
+  $dates_of_category = array();
+  if (count($category_ids) > 0)
+  {
+    $query = '
+SELECT
+    category_id,
+    MIN(date_creation) AS date_creation_min,
+    MAX(date_creation) AS date_creation_max
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    INNER JOIN '.IMAGES_TABLE.' ON image_id = id
+  WHERE category_id IN ('.implode(',', $category_ids).')
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'visible_categories' => 'category_id',
+        'visible_images' => 'id'
+      ),
+    'AND'
+  ).'
+  GROUP BY category_id
+;';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $dates_of_category[ $row['category_id'] ] = array(
+        'from' => $row['date_creation_min'],
+        'to'   => $row['date_creation_max'],
+        );
+    }
+  }
+}
+
+if ($page['section']=='recent_cats')
+{
+  usort($categories, 'global_rank_compare');
+}
+
+if (count($categories) > 0)
+{
+  $infos_of_image = array();
+  $new_image_ids = array();
+
+  $query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $image_ids).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['level'] <= $user['level'])
+    {
+      $infos_of_image[$row['id']] = $row;
+    }
+    else
+    {
+      // problem: we must not display the thumbnail of a photo which has a
+      // higher privacy level than user privacy level
+      //
+      // * what is the represented category?
+      // * find a random photo matching user permissions
+      // * register it at user_representative_picture_id
+      // * set it as the representative_picture_id for the category
+
+      foreach ($categories as &$category)
+      {
+        if ($row['id'] == $category['representative_picture_id'])
+        {
+          // searching a random representant among elements in sub-categories
+          $image_id = get_random_image_in_category($category);
+
+          if (isset($image_id) and !in_array($image_id, $image_ids))
+          {
+            $new_image_ids[] = $image_id;
+          }
+
+          if ($conf['representative_cache_on_level'])
+          {
+            $user_representative_updates_for[ $category['id'] ] = $image_id;
+          }
+
+          $category['representative_picture_id'] = $image_id;
+        }
+      }
+      unset($category);
+    }
+  }
+
+  if (count($new_image_ids) > 0)
+  {
+    $query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $new_image_ids).')
+;';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $infos_of_image[$row['id']] = $row;
+    }
+  }
+
+  foreach ($infos_of_image as &$info)
+  {
+    $info['src_image'] = new SrcImage($info);
+  }
+  unset($info);
+}
+
+if (count($user_representative_updates_for))
+{
+  $updates = array();
+
+  foreach ($user_representative_updates_for as $cat_id => $image_id)
+  {
+    $updates[] =
+      array(
+        'user_id' => $user['id'],
+        'cat_id' => $cat_id,
+        'user_representative_picture_id' => $image_id,
+        );
+  }
+
+  mass_updates(
+    USER_CACHE_CATEGORIES_TABLE,
+    array(
+      'primary' => array('user_id', 'cat_id'),
+      'update'  => array('user_representative_picture_id')
+      ),
+    $updates
+    );
+}
+
+if (count($categories) > 0)
+{
+  // Update filtered data
+  if (function_exists('update_cats_with_filtered_data'))
+  {
+    update_cats_with_filtered_data($categories);
+  }
+
+  $template->set_filename('index_category_thumbnails', 'mainpage_categories.tpl');
+
+  trigger_action('loc_begin_index_category_thumbnails', $categories);
+
+  $tpl_thumbnails_var = array();
+
+  foreach ($categories as $category)
+  {
+    if (0 == $category['count_images'])
+    {
+      continue;
+    }
+
+    $category['name'] = trigger_event(
+        'render_category_name',
+        $category['name'],
+        'subcatify_category_name'
+        );
+
+    if ($page['section']=='recent_cats')
+    {
+      $name = get_cat_display_name_cache($category['uppercats'], null);
+    }
+    else
+    {
+      $name = $category['name'];
+    }
+
+    $representative_infos = $infos_of_image[ $category['representative_picture_id'] ];
+
+    $tpl_var = array_merge( $category, array(
+          'ID'    => $category['id'] /*obsolete*/,
+          'representative'   => $representative_infos,
+          'TN_ALT'   => strip_tags($category['name']),
+
+          'URL'   => make_index_url(
+            array(
+              'category' => $category
+              )
+            ),
+          'CAPTION_NB_IMAGES' => get_display_images_count
+                                  (
+                                    $category['nb_images'],
+                                    $category['count_images'],
+                                    $category['count_categories'],
+                                    true,
+                                    '<br>'
+                                  ),
+          'DESCRIPTION' =>
+            trigger_event('render_category_literal_description',
+              trigger_event('render_category_description',
+                @$category['comment'],
+                'subcatify_category_description')),
+          'NAME'  => $name,
+        ) );
+    if ($conf['index_new_icon'])
+    {
+      $tpl_var['icon_ts'] = get_icon($category['max_date_last'], $category['is_child_date_last']);
+    }
+
+    if ($conf['display_fromto'])
+    {
+      if (isset($dates_of_category[ $category['id'] ]))
+      {
+        $from = $dates_of_category[ $category['id'] ]['from'];
+        $to   = $dates_of_category[ $category['id'] ]['to'];
+
+        if (!empty($from))
+        {
+          $info = '';
+
+          if (date('Y-m-d', strtotime($from)) == date('Y-m-d', strtotime($to)))
+          {
+            $info = format_date($from);
+          }
+          else
+          {
+            $info = l10n(
+              'from %s to %s',
+              format_date($from),
+              format_date($to)
+              );
+          }
+          $tpl_var['INFO_DATES'] = $info;
+        }
+      }
+    }//fromto
+
+    $tpl_thumbnails_var[] = $tpl_var;
+  }
+
+  // pagination
+  $page['total_categories'] = count($tpl_thumbnails_var);
+
+  $tpl_thumbnails_var_selection = array_slice(
+    $tpl_thumbnails_var,
+    $page['startcat'],
+    $conf['nb_categories_page']
+    );
+
+  $derivative_params = trigger_event('get_index_album_derivative_params', ImageStdParams::get_by_type(IMG_THUMB) );
+  $tpl_thumbnails_var_selection = trigger_event('loc_end_index_category_thumbnails', $tpl_thumbnails_var_selection);
+  $template->assign( array(
+    'maxRequests' =>$conf['max_requests'],
+    'category_thumbnails' => $tpl_thumbnails_var_selection,
+    'derivative_params' => $derivative_params,
+    ) );
+
+  $template->assign_var_from_handle('CATEGORIES', 'index_category_thumbnails');
+
+  // navigation bar
+  $page['cats_navigation_bar'] = array();
+  if ($page['total_categories'] > $conf['nb_categories_page'])
+  {
+    $page['cats_navigation_bar'] = create_navigation_bar(
+      duplicate_index_url(array(), array('startcat')),
+      $page['total_categories'],
+      $page['startcat'],
+      $conf['nb_categories_page'],
+      true, 'startcat'
+      );
+  }
+
+  $template->assign('cats_navbar', $page['cats_navigation_bar'] );
+}
+
+pwg_debug('end include/category_cats.inc.php');
+?>
Index: /tags/2.6.0RC1/include/category_default.inc.php
===================================================================
--- /tags/2.6.0RC1/include/category_default.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/category_default.inc.php	(revision 25596)
@@ -0,0 +1,166 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the main page to show thumbnails for the default
+ * case
+ *
+ */
+
+$pictures = array();
+
+$selection = array_slice(
+  $page['items'],
+  $page['start'],
+  $page['nb_image_page']
+  );
+
+$selection = trigger_event('loc_index_thumbnails_selection', $selection);
+
+if (count($selection) > 0)
+{
+  $rank_of = array_flip($selection);
+
+  $query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $selection).')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['rank'] = $rank_of[ $row['id'] ];
+    $pictures[] = $row;
+  }
+
+  usort($pictures, 'rank_compare');
+  unset($rank_of);
+}
+
+if (count($pictures) > 0)
+{
+  // define category slideshow url
+  $row = reset($pictures);
+  $page['cat_slideshow_url'] =
+    add_url_params(
+      duplicate_picture_url(
+        array(
+          'image_id' => $row['id'],
+          'image_file' => $row['file']
+        ),
+        array('start')
+      ),
+      array('slideshow' =>
+        (isset($_GET['slideshow']) ? $_GET['slideshow']
+                                   : '' ))
+    );
+
+  if ($conf['activate_comments'] and $user['show_nb_comments'])
+  {
+    $query = '
+SELECT image_id, COUNT(*) AS nb_comments
+  FROM '.COMMENTS_TABLE.'
+  WHERE validated = \'true\'
+    AND image_id IN ('.implode(',', $selection).')
+  GROUP BY image_id
+;';
+    $nb_comments_of = simple_hash_from_query($query, 'image_id', 'nb_comments');
+  }
+}
+
+// template thumbnail initialization
+$template->set_filenames( array( 'index_thumbnails' => 'thumbnails.tpl',));
+
+trigger_action('loc_begin_index_thumbnails', $pictures);
+$tpl_thumbnails_var = array();
+
+foreach ($pictures as $row)
+{
+  // link on picture.php page
+  $url = duplicate_picture_url(
+        array(
+          'image_id' => $row['id'],
+          'image_file' => $row['file']
+        ),
+        array('start')
+      );
+
+  if (isset($nb_comments_of))
+  {
+    $row['NB_COMMENTS'] = $row['nb_comments'] = (int)@$nb_comments_of[$row['id']];
+  }
+
+  $name = render_element_name($row);
+  $desc = render_element_description($row, 'main_page_element_description');
+
+  $tpl_var = array_merge( $row, array(
+    'TN_ALT' => htmlspecialchars(strip_tags($name)),
+    'TN_TITLE' => get_thumbnail_title($row, $name, $desc),
+    'URL' => $url,
+    'DESCRIPTION' => $desc,
+    'src_image' => new SrcImage($row),
+    ) );
+
+  if ($conf['index_new_icon'])
+  {
+    $tpl_var['icon_ts'] = get_icon($row['date_available']);
+  }
+
+  if ($user['show_nb_hits'])
+  {
+    $tpl_var['NB_HITS'] = $row['hit'];
+  }
+
+  switch ($page['section'])
+  {
+    case 'best_rated' :
+    {
+      $name = '('.$row['rating_score'].') '.$name;
+      break;
+    }
+    case 'most_visited' :
+    {
+      if ( !$user['show_nb_hits'])
+      {
+        $name = '('.$row['hit'].') '.$name;
+      }
+      break;
+    }
+  }
+  $tpl_var['NAME'] = $name;
+  $tpl_thumbnails_var[] = $tpl_var;
+}
+
+$template->assign( array(
+  'derivative_params' => trigger_event('get_index_derivative_params', ImageStdParams::get_by_type( pwg_get_session_var('index_deriv', IMG_THUMB) ) ),
+  'maxRequests' =>$conf['max_requests'],
+  'SHOW_THUMBNAIL_CAPTION' =>$conf['show_thumbnail_caption'],
+    ) );
+$tpl_thumbnails_var = trigger_event('loc_end_index_thumbnails', $tpl_thumbnails_var, $pictures);
+$template->assign('thumbnails', $tpl_thumbnails_var);
+
+$template->assign_var_from_handle('THUMBNAILS', 'index_thumbnails');
+unset($pictures, $selection, $tpl_thumbnails_var);
+$template->clear_assign( 'thumbnails' );
+pwg_debug('end include/category_default.inc.php');
+?>
Index: /tags/2.6.0RC1/include/common.inc.php
===================================================================
--- /tags/2.6.0RC1/include/common.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/common.inc.php	(revision 25596)
@@ -0,0 +1,279 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or trigger_error('Hacking attempt!', E_USER_ERROR);
+
+// determine the initial instant to indicate the generation time of this page
+$t2 = microtime(true);
+
+@set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
+
+//
+// addslashes to vars if magic_quotes_gpc is off this is a security
+// precaution to prevent someone trying to break out of a SQL statement.
+//
+if( !@get_magic_quotes_gpc() )
+{
+  function sanitize_mysql_kv(&$v, $k)
+  {
+    $v = addslashes($v);
+  }
+  if( is_array( $_GET ) )
+  {
+    array_walk_recursive( $_GET, 'sanitize_mysql_kv' );
+  }
+  if( is_array( $_POST ) )
+  {
+    array_walk_recursive( $_POST, 'sanitize_mysql_kv' );
+  }
+  if( is_array( $_COOKIE ) )
+  {
+    array_walk_recursive( $_COOKIE, 'sanitize_mysql_kv' );
+  }
+}
+if ( !empty($_SERVER["PATH_INFO"]) )
+{
+  $_SERVER["PATH_INFO"] = addslashes($_SERVER["PATH_INFO"]);
+}
+
+//
+// Define some basic configuration arrays this also prevents malicious
+// rewriting of language and otherarray values via URI params
+//
+$conf = array();
+$page = array(
+  'infos' => array(),
+  'errors' => array(),
+  'warnings' => array(),
+  );
+$user = array();
+$lang = array();
+$header_msgs = array();
+$header_notes = array();
+$filter = array();
+
+foreach( array(
+  'array_intersect_key', //PHP 5 >= 5.1.0RC1
+  'hash_hmac', //(hash) - enabled by default as of PHP 5.1.2
+  'preg_last_error', // PHP 5 >= 5.2.0
+  'json_encode', // PHP 5 >= 5.2.0
+  ) as $func)
+{
+  if (!function_exists($func))
+  {
+    include_once(PHPWG_ROOT_PATH . 'include/php_compat/'.$func.'.php');
+  }
+}
+
+include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+
+defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
+
+@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
+if (!defined('PHPWG_INSTALLED'))
+{
+  header('Location: install.php');
+  exit;
+}
+include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
+
+if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors']))
+{
+  @ini_set('error_reporting', $conf['show_php_errors']);
+  @ini_set('display_errors', true);
+}
+
+include(PHPWG_ROOT_PATH . 'include/constants.php');
+include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
+
+
+// Database connection
+try
+{
+  pwg_db_connect($conf['db_host'], $conf['db_user'],
+                 $conf['db_password'], $conf['db_base']);
+}
+catch (Exception $e)
+{
+  my_error(l10n($e->getMessage()), true);
+}
+
+pwg_db_check_charset();
+
+load_conf_from_db();
+
+if (!$conf['check_upgrade_feed'])
+{
+  if (!isset($conf['piwigo_db_version']) or $conf['piwigo_db_version'] != get_branch_from_version(PHPWG_VERSION))
+  {
+    redirect(get_root_url().'upgrade.php');
+  }
+}
+
+ImageStdParams::load_from_db();
+
+session_start();
+load_plugins();
+
+// users can have defined a custom order pattern, incompatible with GUI form
+if (isset($conf['order_by_custom']))
+{
+  $conf['order_by'] = $conf['order_by_custom'];
+}
+if (isset($conf['order_by_inside_category_custom']))
+{
+  $conf['order_by_inside_category'] = $conf['order_by_inside_category_custom'];
+}
+
+include(PHPWG_ROOT_PATH.'include/user.inc.php');
+
+if (in_array( substr($user['language'],0,2), array('fr','it','de','es','pl','hu','ru','nl','tr','da') ) )
+{
+  define('PHPWG_DOMAIN', substr($user['language'],0,2).'.piwigo.org');
+}
+elseif ('zh_CN' == $user['language']) {
+  define('PHPWG_DOMAIN', 'cn.piwigo.org');
+}
+elseif ('pt_BR' == $user['language']) {
+  define('PHPWG_DOMAIN', 'br.piwigo.org');
+}
+else {
+  define('PHPWG_DOMAIN', 'piwigo.org');
+}
+define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
+
+if(isset($conf['alternative_pem_url']) and $conf['alternative_pem_url']!='')
+{
+  define('PEM_URL', $conf['alternative_pem_url']);
+}
+else
+{
+  define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext');
+}
+
+// language files
+load_language('common.lang');
+if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) )
+{
+  load_language('admin.lang');
+}
+trigger_action('loading_lang');
+load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) );
+
+// only now we can set the localized username of the guest user (and not in
+// include/user.inc.php)
+if (is_a_guest())
+{
+  $user['username'] = l10n('guest');
+}
+
+// template instance
+if (defined('IN_ADMIN') and IN_ADMIN )
+{// Admin template
+  $template = new Template(PHPWG_ROOT_PATH.'admin/themes', $conf['admin_theme']);
+}
+else
+{ // Classic template
+  $theme = $user['theme'];
+  if (script_basename() != 'ws' and mobile_theme())
+  {
+    $theme = $conf['mobile_theme'];
+  }
+  $template = new Template(PHPWG_ROOT_PATH.'themes', $theme );
+}
+
+if ( !isset($conf['no_photo_yet']) )
+{
+  include(PHPWG_ROOT_PATH.'include/no_photo_yet.inc.php');
+}
+
+if (isset($user['internal_status']['guest_must_be_guest'])
+    and
+    $user['internal_status']['guest_must_be_guest'] === true)
+{
+  $header_msgs[] = l10n('Bad status for user "guest", using default status. Please notify the webmaster.');
+}
+
+if ($conf['gallery_locked'])
+{
+  $header_msgs[] = l10n('The gallery is locked for maintenance. Please, come back later.');
+
+  if ( script_basename() != 'identification' and !is_admin() )
+  {
+    set_status_header(503, 'Service Unavailable');
+    @header('Retry-After: 900');
+    header('Content-Type: text/html; charset='.get_pwg_charset());
+    echo '<a href="'.get_absolute_root_url(false).'identification.php">'.l10n('The gallery is locked for maintenance. Please, come back later.').'</a>';
+    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
+    exit();
+  }
+}
+
+if ($conf['check_upgrade_feed'])
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
+  if (check_upgrade_feed())
+  {
+    $header_msgs[] = 'Some database upgrades are missing, '
+      .'<a href="'.get_absolute_root_url(false).'upgrade_feed.php">upgrade now</a>';
+  }
+}
+
+if (count($header_msgs) > 0)
+{
+  $template->assign('header_msgs', $header_msgs);
+  $header_msgs=array();
+}
+
+if (!empty($conf['filter_pages']) and get_filter_page_value('used'))
+{
+  include(PHPWG_ROOT_PATH.'include/filter.inc.php');
+}
+else
+{
+  $filter['enabled'] = false;
+}
+
+if (isset($conf['header_notes']))
+{
+  $header_notes = array_merge($header_notes, $conf['header_notes']);
+}
+
+// default event handlers
+add_event_handler('render_category_literal_description', 'render_category_literal_description');
+if ( !$conf['allow_html_descriptions'] )
+{
+  add_event_handler('render_category_description', 'nl2br');
+}
+add_event_handler('render_comment_content', 'render_comment_content');
+add_event_handler('render_comment_author', 'strip_tags');
+add_event_handler('render_tag_url', 'str2url');
+add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1);
+if ( !empty($conf['original_url_protection']) )
+{
+  add_event_handler('get_element_url', 'get_element_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 );
+  add_event_handler('get_src_image_url', 'get_src_image_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 );
+}
+trigger_action('init');
+?>
Index: /tags/2.6.0RC1/include/config_default.inc.php
===================================================================
--- /tags/2.6.0RC1/include/config_default.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/config_default.inc.php	(revision 25596)
@@ -0,0 +1,799 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ *                           configuration page
+ *
+ * Set configuration parameters that are not in the table config. In the
+ * application, configuration parameters are considered in the same way
+ * coming from config table or config_default.inc.php.
+ *
+ * It is recommended to let config_default.inc.php as provided and to
+ * overwrite configuration in your local configuration file
+ * local/config/config.inc.php. See tools/config.inc.php as an example.
+ *
+ * Why having some parameters in config table and others in
+ * config_*.inc.php? Modifying config_*.inc.php is a "hard" task for low
+ * skilled users, they need a GUI for this : admin/configuration. But only
+ * parameters that might be modified by low skilled users are in config
+ * table, other parameters are in config_*.inc.php
+ */
+
+// +-----------------------------------------------------------------------+
+// |                                 misc                                  |
+// +-----------------------------------------------------------------------+
+
+// order_by_custom and order_by_inside_category_custom : for non common pattern
+// you can define special ORDER configuration
+//
+// $conf['order_by_custom'] = ' ORDER BY date_available DESC, file ASC, id ASC';
+
+// order_by_inside_category : inside a category, images can also be ordered
+// by rank. A manually defined rank on each image for the category.
+//
+// $conf['order_by_inside_category_custom'] = $conf['order_by_custom'];
+
+// file_ext : file extensions (case sensitive) authorized
+$conf['file_ext'] = array('jpg','JPG','jpeg','JPEG',
+                          'png','PNG','gif','GIF','mpg','zip',
+                          'avi','mp3','ogg');
+
+// picture_ext : file extensions for picture file, must be a subset of
+// file_ext
+$conf['picture_ext'] = array('jpg','JPG','jpeg','JPEG',
+                             'png','PNG','gif','GIF');
+
+// top_number : number of element to display for "best rated" and "most
+// visited" categories
+$conf['top_number'] = 15;
+
+// anti-flood_time : number of seconds between 2 comments : 0 to disable
+$conf['anti-flood_time'] = 60;
+
+// qualified spam comments are not registered (false will register them
+// but they will require admin validation)
+$conf['comment_spam_reject'] = true;
+
+// maximum number of links in a comment before it is qualified spam
+$conf['comment_spam_max_links'] = 3;
+
+// calendar_datefield : date field of table "images" used for calendar
+// catgory
+$conf['calendar_datefield'] = 'date_creation';
+
+// calendar_show_any : the calendar shows an aditional 'any' button in the
+// year/month/week/day navigation bars
+$conf['calendar_show_any'] = true;
+
+// calendar_show_empty : the calendar shows month/weeks/days even if there are
+//no elements for these
+$conf['calendar_show_empty'] = true;
+
+// newcat_default_commentable : at creation, must a category be commentable
+// or not ?
+$conf['newcat_default_commentable'] = true;
+
+// newcat_default_visible : at creation, must a category be visible or not ?
+// Warning : if the parent category is invisible, the category is
+// automatically create invisible. (invisible = locked)
+$conf['newcat_default_visible'] = true;
+
+// newcat_default_status : at creation, must a category be public or private
+// ? Warning : if the parent category is private, the category is
+// automatically create private.
+$conf['newcat_default_status'] = 'public';
+
+// level_separator : character string used for separating a category level
+// to the sub level. Suggestions : ' / ', ' &raquo; ', ' &rarr; ', ' - ',
+// ' &gt;'
+$conf['level_separator'] = ' / ';
+
+// paginate_pages_around : on paginate navigation bar, how many pages
+// display before and after the current page ?
+$conf['paginate_pages_around'] = 2;
+
+// show_version : shall the version of Piwigo be displayed at the
+// bottom of each page ?
+$conf['show_version'] = true;
+
+// meta_ref to reference multiple sets of incorporated pages or elements
+// Set it false to avoid referencing in google, and other search engines.
+$conf['meta_ref'] = true;
+
+// links : list of external links to add in the menu. An example is the best
+// than a long explanation :
+//
+// Simple use:
+//  for each link is associated a label
+//  $conf['links'] = array(
+//    'http://piwigo.org' => 'PWG website',
+//    'http://piwigo.org/forum' => 'PWG forum',
+//    );
+//
+// Advenced use:
+//  You can also used special options. Instead to pass a string like parameter value
+//  you can pass a array with different optional parameter values
+//  $conf['links'] = array(
+//    'http://piwigo.org' => array('label' => 'PWG website', 'new_window' => false, 'eval_visible' => 'return true;'),
+//    'http://piwigo.org/forum' => array('label' => 'For ADMIN', 'new_window' => true, 'eval_visible' => 'return is_admin();'),
+//    'http://piwigo.org/ext' => array('label' => 'For Guest', 'new_window' => true, 'eval_visible' => 'return is_a_guest();'),
+//    'http://piwigo.org/downloads' =>
+//      array('label' => 'PopUp', 'new_window' => true,
+//      'nw_name' => 'PopUp', 'nw_features' => 'width=800,height=450,location=no,status=no,toolbar=no,scrollbars=no,menubar=no'),
+//    );
+// Parameters:
+//  'label':
+//    Label to display for the link, must be defined
+//  'new_window':
+//    If true open link on tab/window
+//    [Default value is true if it's not defined]
+//  'nw_name':
+//    Name use when new_window is true
+//    [Default value is '' if it's not defined]
+//  'nw_features':
+//    features use when new_window is true
+//    [Default value is '' if it's not defined]
+//  'eval_visible':
+//    It's php code witch must return if the link is visible or not
+//    [Default value is true if it's not defined]
+//
+// Equivalence:
+//  $conf['links'] = array(
+//    'http://piwigo.org' => 'PWG website',
+//    );
+//  $conf['links'] = array(
+//    'http://piwigo.org' => array('label' => 'PWG website', 'new_window' => false, 'visible' => 'return true;'),
+//    );
+//
+// If the array is empty, the "Links" box won't be displayed on the main
+// page.
+$conf['links'] = array();
+
+// random_index_redirect: list of 'internal' links to use when no section is defined on index.php.
+// An example is the best than a long explanation :
+//
+//  for each link is associated a php condition
+//  '' condition is equivalent to 'return true;'
+//  $conf['random_index_redirect'] = array(
+//    PHPWG_ROOT_PATH.'index.php?/best_rated' => 'return true;',
+//    PHPWG_ROOT_PATH.'index.php?/recent_pics' => 'return is_a_guest();',
+//    PHPWG_ROOT_PATH.'random.php' => '',
+//    PHPWG_ROOT_PATH.'index.php?/categories' => '',
+//    );
+$conf['random_index_redirect'] = array();
+
+// List of notes to display on all header page
+// example $conf['header_notes']  = array('Test', 'Hello');
+$conf['header_notes']  = array();
+
+// show_thumbnail_caption : on thumbnails page, show thumbnail captions ?
+$conf['show_thumbnail_caption'] = true;
+
+// display_fromto: display the date creation bounds of a
+// category.
+$conf['display_fromto'] = false;
+
+// allow_random_representative : do you wish Piwigo to search among
+// categories elements a new representative at each reload ?
+//
+// If false, an element is randomly or manually chosen to represent its
+// category and remains the representative as long as an admin does not
+// change it.
+//
+// Warning : setting this parameter to true is CPU consuming. Each time you
+// change the value of this parameter from false to true, an administrator
+// must update categories informations in screen [Admin > General >
+// Maintenance].
+$conf['allow_random_representative'] = false;
+
+// representative_cache_on_level: if a thumbnail is chosen as representative
+// but has higher privacy level than current user, Piwigo randomly selects
+// another thumbnail. Should be store this thumbnail in cache to avoid
+// another consuming SQL query on next page refresh?
+$conf['representative_cache_on_level'] = true;
+
+// representative_cache_on_subcats: if a category (= album) only contains
+// sub-categories, Piwigo randomly selects a thumbnail among sub-categories
+// representative. Should we store this thumbnail in cache to avoid another
+// "slightly" consuming SQL query on next page refresh?
+$conf['representative_cache_on_subcats'] = true;
+
+// allow_html_descriptions : authorize administrators to use HTML in
+// category and element description.
+$conf['allow_html_descriptions'] = true;
+
+// users_page: how many users to display in screen
+// Administration>Identification>Users?
+$conf['users_page'] = 20;
+
+// image level permissions available in the admin interface
+$conf['available_permission_levels'] = array(0,1,2,4,8);
+
+// check_upgrade_feed: check if there are database upgrade required. Set to
+// true, a message will strongly encourage you to upgrade your database if
+// needed.
+//
+// This configuration parameter is set to true in BSF branch and to false
+// elsewhere.
+$conf['check_upgrade_feed'] = true;
+
+// rate_items: available rates for a picture
+$conf['rate_items'] = array(0,1,2,3,4,5);
+
+// Define default method to use ('http' or 'html' in order to do redirect)
+$conf['default_redirect_method'] = 'http';
+
+// Define using double password type in admin's users management panel
+$conf['double_password_type_in_admin'] = false;
+
+// Define if logins must be case sentitive or not at users registration. ie :
+// If set true, the login "user" will equal "User" or "USER" or "user",
+// etc. ... And it will be impossible to use such login variation to create a
+// new user account.
+$conf['insensitive_case_logon'] = false;
+
+// how should we check for unicity when adding a photo. Can be 'md5sum' or
+// 'filename'
+$conf['uniqueness_mode'] = 'md5sum';
+
+// Library used for image resizing. Value could be 'auto', 'imagick',
+// 'ext_imagick' or 'gd'. If value is 'auto', library will be choosen in this
+// order. If choosen library is not available, another one will be picked up.
+$conf['graphics_library'] = 'auto';
+
+// If library used is external installation of ImageMagick ('ext_imagick'),
+// you can define imagemagick directory.
+$conf['ext_imagick_dir'] = '';
+
+// how many user comments to display by default on comments.php. Use 'all'
+// to display all user comments without pagination. Default available values
+// are array(5,10,20,50,'all') but you can set any other numeric value.
+$conf['comments_page_nb_comments'] = 10;
+
+// +-----------------------------------------------------------------------+
+// |                                 email                                 |
+// +-----------------------------------------------------------------------+
+
+// send_bcc_mail_webmaster: send bcc mail to webmaster. Set true for debug
+// or test.
+$conf['send_bcc_mail_webmaster'] = false;
+
+// define the name of sender mail: if value is empty, gallery title is used
+$conf['mail_sender_name'] = '';
+
+// define the email of sender mail: if valie is empty, webmaster email is used
+$conf['mail_sender_email'] = '';
+
+// set true to allow text/html emails
+$conf['mail_allow_html'] = true;
+
+// smtp configuration (work if fsockopen function is allowed for smtp port)
+// smtp_host: smtp server host
+//  if null, regular mail function is used
+//   format: hoststring[:port]
+//   exemple: smtp.pwg.net:21
+// smtp_user/smtp_password: user & password for smtp identication
+$conf['smtp_host'] = '';
+$conf['smtp_user'] = '';
+$conf['smtp_password'] = '';
+
+// 'ssl' or 'tls'
+$conf['smtp_secure'] = null;
+
+// +-----------------------------------------------------------------------+
+// |                               metadata                                |
+// +-----------------------------------------------------------------------+
+
+// show_iptc: Show IPTC metadata on picture.php if asked by user
+$conf['show_iptc'] = false;
+
+// show_iptc_mapping : is used for showing IPTC metadata on picture.php
+// page. For each key of the array, you need to have the same key in the
+// $lang array. For example, if my first key is 'iptc_keywords' (associated
+// to '2#025') then you need to have $lang['iptc_keywords'] set in
+// language/$user['language']/common.lang.php. If you don't have the lang
+// var set, the key will be simply displayed
+//
+// To know how to associated iptc_field with their meaning, use
+// tools/metadata.php
+$conf['show_iptc_mapping'] = array(
+  'iptc_keywords'        => '2#025',
+  'iptc_caption_writer'  => '2#122',
+  'iptc_byline_title'    => '2#085',
+  'iptc_caption'         => '2#120'
+  );
+
+// use_iptc: Use IPTC data during database synchronization with files
+// metadata
+$conf['use_iptc'] = false;
+
+// use_iptc_mapping : in which IPTC fields will Piwigo find image
+// information ? This setting is used during metadata synchronisation. It
+// associates a piwigo_images column name to a IPTC key
+$conf['use_iptc_mapping'] = array(
+  'keywords'        => '2#025',
+  'date_creation'   => '2#055',
+  'author'          => '2#122',
+  'name'            => '2#005',
+  'comment'         => '2#120'
+  );
+
+// show_exif: Show EXIF metadata on picture.php (table or line presentation
+// avalaible)
+$conf['show_exif'] = true;
+
+// show_exif_fields : in EXIF fields, you can choose to display fields in
+// sub-arrays, for example ['COMPUTED']['ApertureFNumber']. for this, add
+// 'COMPUTED;ApertureFNumber' in $conf['show_exif_fields']
+//
+// The key displayed in picture.php will be $lang['exif_field_Make'] for
+// example and if it exists. For compound fields, only take into account the
+// last part : for key 'COMPUTED;ApertureFNumber', you need
+// $lang['exif_field_ApertureFNumber']
+//
+// for PHP version newer than 4.1.2 :
+// $conf['show_exif_fields'] = array('CameraMake','CameraModel','DateTime');
+//
+$conf['show_exif_fields'] = array(
+  'Make',
+  'Model',
+  'DateTimeOriginal',
+  'COMPUTED;ApertureFNumber'
+  );
+
+// use_exif: Use EXIF data during database synchronization with files
+// metadata
+$conf['use_exif'] = true;
+
+// use_exif_mapping: same behaviour as use_iptc_mapping
+$conf['use_exif_mapping'] = array(
+  'date_creation' => 'DateTimeOriginal'
+  );
+
+// allow_html_in_metadata: in case the origin of the photo is unsecure (user
+// upload), we remove HTML tags to avoid XSS (malicious execution of
+// javascript)
+$conf['allow_html_in_metadata'] = false;
+
+// +-----------------------------------------------------------------------+
+// |                               sessions                                |
+// +-----------------------------------------------------------------------+
+
+// session_use_cookies: specifies to use cookie to store
+// the session id on client side
+$conf['session_use_cookies'] = true;
+
+// session_use_only_cookies: specifies to only use cookie to store
+// the session id on client side
+$conf['session_use_only_cookies'] = true;
+
+// session_use_trans_sid: do not use transparent session id support
+$conf['session_use_trans_sid'] = false;
+
+// session_name: specifies the name of the session which is used as cookie name
+$conf['session_name'] = 'pwg_id';
+
+// session_save_handler: comment the line below
+// to use file handler for sessions.
+$conf['session_save_handler'] = 'db';
+
+// authorize_remembering : permits user to stay logged for a long time. It
+// creates a cookie on client side.
+$conf['authorize_remembering'] = true;
+
+// remember_me_name: specifies the name of the cookie used to stay logged
+$conf['remember_me_name'] = 'pwg_remember';
+
+// remember_me_length : time of validity for "remember me" cookies, in
+// seconds.
+$conf['remember_me_length'] = 5184000;
+
+// session_length : time of validity for normal session, in seconds.
+$conf['session_length'] = 3600;
+
+// session_use_ip_address: avoid session hijacking by using a part of the IP
+// address
+$conf['session_use_ip_address'] = true;
+
+// +-----------------------------------------------------------------------+
+// |                            debug/performance                          |
+// +-----------------------------------------------------------------------+
+
+// show_queries : for debug purpose, show queries and execution times
+$conf['show_queries'] = false;
+
+// show_gt : display generation time at the bottom of each page
+$conf['show_gt'] = true;
+
+// debug_l10n : display a warning message each time an unset language key is
+// accessed
+$conf['debug_l10n'] = false;
+
+// activate template debugging - a new window will appear
+$conf['debug_template'] = false;
+
+// save copies of sent mails into local data dir
+$conf['debug_mail'] = false;
+
+// die_on_sql_error: if an SQL query fails, should everything stop?
+$conf['die_on_sql_error'] = true;
+
+// if true, some language strings are replaced during template compilation
+// (insted of template output). this results in better performance. however
+// any change in the language file will not be propagated until you purge
+// the compiled templates from the admin / maintenance menu
+$conf['compiled_template_cache_language'] = false;
+
+// This tells Smarty whether to check for recompiling or not. Recompiling
+// does not need to happen unless a template is changed. false results in
+// better performance.
+$conf['template_compile_check'] = true;
+
+// This forces Smarty to (re)compile templates on every invocation. This is
+// handy for development and debugging. It should never be used in a
+// production environment.
+$conf['template_force_compile'] = false;
+
+// activate merging of javascript / css files
+$conf['template_combine_files'] = true;
+
+// this permit to show the php errors reporting (see INI 'error_reporting'
+// for possible values)
+// gives an empty value '' to deactivate
+$conf['show_php_errors'] = E_ALL;
+
+// enable log for i derivative script
+$conf['enable_i_log'] = false;
+
+// +-----------------------------------------------------------------------+
+// |                            authentication                             |
+// +-----------------------------------------------------------------------+
+
+// apache_authentication : use Apache authentication as reference instead of
+// users table ?
+$conf['apache_authentication'] = false;
+
+// users_table: which table is the reference for users? Can be a different
+// table than Piwigo table
+//
+// If you decide to use another table than the default one, you need to
+// prepare your database by deleting some datas :
+//
+// delete from piwigo_user_access;
+// delete from piwigo_user_cache;
+// delete from piwigo_user_feed;
+// delete from piwigo_user_group;
+// delete from piwigo_user_infos;
+// delete from piwigo_sessions;
+// delete from piwigo_rate;
+// update piwigo_images set rating_score = null, added_by = <webmaster_id>;
+// delete from piwigo_caddie;
+// delete from piwigo_favorites;
+//
+// All informations contained in these tables and column are related to
+// piwigo_users table.
+$conf['users_table'] = null;
+
+// If you decide to use external authentication
+// change conf below by $conf['external_authentification'] = true;
+$conf['external_authentification'] = false;
+
+// Other tables can be changed, if you define associated constants
+// Example:
+//   define('USER_INFOS_TABLE', 'pwg_main'.'user_infos');
+
+// user_fields : mapping between generic field names and table specific
+// field names. For example, in PWG, the mail address is names
+// "mail_address" and in punbb, it's called "email".
+$conf['user_fields'] = array(
+  'id' => 'id',
+  'username' => 'username',
+  'password' => 'password',
+  'email' => 'mail_address'
+  );
+
+// password_hash: function hash the clear user password to store it in the
+// database. The function takes only one parameter: the clear password.
+$conf['password_hash'] = 'pwg_password_hash';
+
+// password_verify: function that checks the password against its hash. The
+// function takes 2 mandatory parameter : clear password, hashed password +
+// an optional parameter user_id. The user_id is used to update the password
+// with the new hash introduced in Piwigo 2.5. See function
+// pwg_password_verify in include/functions_user.inc.php
+$conf['password_verify'] = 'pwg_password_verify';
+
+// guest_id : id of the anonymous user
+$conf['guest_id'] = 2;
+
+// default_user_id : id of user used for default value
+$conf['default_user_id'] = $conf['guest_id'];
+
+// Registering process and guest/generic members get language from the browser
+// if language isn't available PHPWG_DEFAULT_LANGUAGE is used as previously
+$conf['browser_language'] = true;
+
+// webmaster_id : webmaster'id.
+$conf['webmaster_id'] = 1;
+
+// does the guest have access ?
+// (not a security feature, set your categories "private" too)
+// If false it'll be redirected from index.php to identification.php
+$conf['guest_access'] = true;
+
+// +-----------------------------------------------------------------------+
+// |                               history                                 |
+// +-----------------------------------------------------------------------+
+
+// nb_logs_page :  how many logs to display on a page
+$conf['nb_logs_page'] = 300;
+
+// +-----------------------------------------------------------------------+
+// |                                 urls                                  |
+// +-----------------------------------------------------------------------+
+
+// gallery_url : you can set a specific URL for the home page of your
+// gallery. This is for very specific use and you don't need to change this
+// setting when move your gallery to a new directory or a new domain name.
+$conf['gallery_url'] = null;
+
+// question_mark_in_urls : the generated urls contain a ? sign. This can be
+// changed to false only if the server translates PATH_INFO variable
+// (depends on the server AcceptPathInfo directive configuration)
+$conf['question_mark_in_urls'] = true;
+
+// php_extension_in_urls : if true, the urls generated for picture and
+// category will not contain the .php extension. This will work only if
+// .htaccess defines Options +MultiViews parameter or url rewriting rules
+// are active.
+$conf['php_extension_in_urls'] = true;
+
+// category_url_style : one of 'id' (default) or 'id-name'. 'id-name'
+// means that an simplified ascii represntation of the category name will
+// appear in the url
+$conf['category_url_style'] = 'id';
+
+// picture_url_style : one of 'id' (default), 'id-file' or 'file'. 'id-file'
+// or 'file' mean that the file name (without extension will appear in the
+// url). Note that one aditionnal sql query will occur if 'file' is choosen.
+// Note that you might experience navigation issues if you choose 'file'
+// and your file names are not unique
+$conf['picture_url_style'] = 'id';
+
+// tag_url_style : one of 'id-tag' (default), 'id' or 'tag'.
+// Note that if you choose 'tag' and the url (ascii) representation of your
+// tags is not unique, all tags with the same url representation will be shown
+$conf['tag_url_style'] = 'id-tag';
+
+// +-----------------------------------------------------------------------+
+// |                                 tags                                  |
+// +-----------------------------------------------------------------------+
+
+// full_tag_cloud_items_number: number of tags to show in the full tag
+// cloud. Only the most represented tags will be shown
+$conf['full_tag_cloud_items_number'] = 200;
+
+// menubar_tag_cloud_items_number: number of tags to show in the tag
+// cloud in the menubar. Only the most represented tags will be shown
+$conf['menubar_tag_cloud_items_number'] = 20;
+
+// content_tag_cloud_items_number: number of related tags to show in the tag
+// cloud on the content page, when the current section is not a set of
+// tags. Only the most represented tags will be shown
+$conf['content_tag_cloud_items_number'] = 12;
+
+// tags_levels: number of levels to use for display. Each level is bind to a
+// CSS class tagLevelX.
+$conf['tags_levels'] = 5;
+
+// tags_default_display_mode: group tags by letter or display a tag cloud by
+// default? 'letters' or 'cloud'.
+$conf['tags_default_display_mode'] = 'cloud';
+
+// tag_letters_column_number: how many columns to display tags by letter
+$conf['tag_letters_column_number'] = 4;
+
+// +-----------------------------------------------------------------------+
+// | Notification by mail                                                  |
+// +-----------------------------------------------------------------------+
+
+// Default Value for nbm user
+$conf['nbm_default_value_user_enabled'] = false;
+
+// Search list user to send quickly (List all without to check news)
+// More quickly but less fun to use
+$conf['nbm_list_all_enabled_users_to_send'] = false;
+
+// Max time used on one pass in order to send mails.
+// Timeout delay ratio.
+$conf['nbm_max_treatment_timeout_percent'] = 0.8;
+
+// If timeout cannot be compite with nbm_max_treatment_timeout_percent,
+// nbm_treatment_timeout_default is used by default
+$conf['nbm_treatment_timeout_default'] = 20;
+
+// Parameters used in get_recent_post_dates for the 2 kind of notification
+$conf['recent_post_dates'] = array(
+  'RSS' => array('max_dates' => 5, 'max_elements' => 6, 'max_cats' => 6),
+  'NBM' => array('max_dates' => 7, 'max_elements' => 3, 'max_cats' => 9)
+  );
+
+// the author shown in the RSS feed <author> element
+$conf['rss_feed_author'] = 'Piwigo notifier';
+
+// +-----------------------------------------------------------------------+
+// | Set admin layout                                                      |
+// +-----------------------------------------------------------------------+
+
+$conf['admin_theme'] = 'clear';
+
+// should we load the active plugins ? true=Yes, false=No
+$conf['enable_plugins']=true;
+
+// Web services are allowed (true) or completely forbidden (false)
+$conf['allow_web_services'] = true;
+
+// enable log for web services
+$conf['ws_enable_log'] = false;
+
+// web services log file path
+$conf['ws_log_filepath'] = '/tmp/piwigo_ws.log';
+
+// Maximum number of images to be returned foreach call to the web service
+$conf['ws_max_images_per_page'] = 500;
+
+// Maximum number of users to be returned foreach call to the web service
+$conf['ws_max_users_per_page'] = 1000;
+
+// Display a link to subscribe to Piwigo Announcements Newsletter
+$conf['show_newsletter_subscription'] = true;
+
+// +-----------------------------------------------------------------------+
+// | Filter                                                                |
+// +-----------------------------------------------------------------------+
+// $conf['filter_pages'] contains configuration for each pages
+//   o If values are not defined for a specific page, default value are used
+//   o Array is composed by the basename of each page without extention
+//   o List of value names:
+//     - used: filter function are used
+//       (if false nothing is done [start, cancel, stop, ...]
+//     - cancel: cancel current started filter
+//     - add_notes: add notes about current started filter on the header
+//   o Empty configuration in order to disable completely filter functions
+//     No filter, No icon,...
+//     $conf['filter_pages'] = array();
+$conf['filter_pages'] = array
+  (
+    // Default page
+    'default' => array(
+      'used' => true, 'cancel' => false, 'add_notes' => false),
+    // Real pages
+    'index' => array('add_notes' => true),
+    'tags' => array('add_notes' => true),
+    'search' => array('add_notes' => true),
+    'comments' => array('add_notes' => true),
+    'admin' => array('used' => false),
+    'feed' => array('used' => false),
+    'notification' => array('used' => false),
+    'nbm' => array('used' => false),
+    'popuphelp' => array('used' => false),
+    'profile' => array('used' => false),
+    'ws' => array('used' => false),
+    'identification' => array('cancel' => true),
+    'install' => array('cancel' => true),
+    'password' => array('cancel' => true),
+    'register' => array('cancel' => true),
+  );
+
+// +-----------------------------------------------------------------------+
+// | Slideshow                                                             |
+// +-----------------------------------------------------------------------+
+// slideshow_period : waiting time in seconds before loading a new page
+// during automated slideshow
+// slideshow_period_min, slideshow_period_max are bounds of slideshow_period
+// slideshow_period_step is the step of navigation between min and max
+$conf['slideshow_period_min'] = 1;
+$conf['slideshow_period_max'] = 10;
+$conf['slideshow_period_step'] = 1;
+$conf['slideshow_period'] = 4;
+
+// slideshow_repeat : slideshow loops on pictures
+$conf['slideshow_repeat'] = true;
+
+// $conf['light_slideshow'] indicates to use slideshow.tpl in state of
+// picture.tpl for slideshow
+// Take care to have slideshow.tpl in all available templates
+// Or set it false.
+// Check if Picture's plugins are compliant with it
+// Every plugin from 1.7 would be design to manage light_slideshow case.
+$conf['light_slideshow'] = true;
+
+// the local data directory is used to store data such as compiled templates,
+// plugin variables, combined css/javascript or resized images. Beware of
+// mandatory trailing slash.
+$conf['data_location'] = '_data/';
+
+// where should the API/UploadForm add photos? This path must be relative to
+// the Piwigo installation directory (but can be outside, as long as it's
+// reachable from your webserver).
+$conf['upload_dir'] = './upload';
+
+// where should the user be guided when there is no photo in his gallery yet?
+$conf['no_photo_yet_url'] = 'admin.php?page=photos_add';
+
+// directory with themes inside
+$conf['themes_dir'] = PHPWG_ROOT_PATH.'themes';
+
+// pLoader direct download url for windows
+$conf['ploader_download_windows'] = 'http://piwigo.org/ext/download.php?eid=270';
+
+// pLoader direct download url for mac
+$conf['ploader_download_mac'] = 'http://piwigo.org/ext/download.php?eid=353';
+
+// pLoader direct download url for linux
+$conf['ploader_download_linux'] = 'http://piwigo.org/ext/download.php?eid=269';
+
+// enable the synchronization method for adding photos
+$conf['enable_synchronization'] = true;
+
+// permitted characters for files/directoris during synchronization
+$conf['sync_chars_regex'] = '/^[a-zA-Z0-9-_.]+$/';
+
+// PEM url (default is http://piwigo.org/ext)
+$conf['alternative_pem_url'] = '';
+
+// categories ID on PEM
+$conf['pem_plugins_category'] = 12;
+$conf['pem_themes_category'] = 10;
+$conf['pem_languages_category'] = 8;
+
+// based on the EXIF "orientation" tag, should we rotate photos added in the
+// upload form or through pwg.images.addSimple web API method?
+$conf['upload_form_automatic_rotation'] = true;
+
+// 0-'auto', 1-'derivative' 2-'script'
+$conf['derivative_url_style']=0;
+
+$conf['chmod_value']= substr_compare(PHP_SAPI, 'apa', 0, 3)==0 ? 0777 : 0755;
+
+// 'small', 'medium' or 'large'
+$conf['derivative_default_size'] = 'medium';
+
+// below which size (in pixels, ie width*height) do we remove metadata
+// EXIF/IPTC... from derivative?
+$conf['derivatives_strip_metadata_threshold'] = 256000;
+
+//Maximum Ajax requests at once, for thumbnails on-the-fly generation
+$conf['max_requests']=3;
+
+// one of '', 'images', 'all'
+//TODO: Put this in admin and also manage .htaccess in #sites and upload folders
+$conf['original_url_protection'] = '';
+
+
+// Default behaviour when a new album is created: should the new album inherit the group/user
+// permissions from its parent? Note that config is only used for Ftp synchro,
+// and if that option is not explicitly transmit when the album is created.
+$conf['inheritance_by_default'] = false;
+
+?>
Index: /tags/2.6.0RC1/include/constants.php
===================================================================
--- /tags/2.6.0RC1/include/constants.php	(revision 25596)
+++ /tags/2.6.0RC1/include/constants.php	(revision 25596)
@@ -0,0 +1,109 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Default settings
+define('PHPWG_VERSION', '2.6.0RC1');
+define('PHPWG_DEFAULT_LANGUAGE', 'en_UK');
+define('PHPWG_DEFAULT_TEMPLATE', 'elegant');
+
+define('PHPWG_THEMES_PATH', $conf['themes_dir'].'/');
+defined('PWG_COMBINED_DIR') or define('PWG_COMBINED_DIR', $conf['data_location'].'combined/');
+defined('PWG_DERIVATIVE_DIR') or define('PWG_DERIVATIVE_DIR', $conf['data_location'].'i/');
+
+// Required versions
+define('REQUIRED_PHP_VERSION', '5.0.0');
+
+// Access codes
+define('ACCESS_FREE', 0);
+define('ACCESS_GUEST', 1);
+define('ACCESS_CLASSIC', 2);
+define('ACCESS_ADMINISTRATOR', 3);
+define('ACCESS_WEBMASTER', 4);
+define('ACCESS_CLOSED', 5);
+
+// Sanity checks
+define('PATTERN_ID', '/^\d+$/');
+
+// Table names
+if (!defined('CATEGORIES_TABLE'))
+  define('CATEGORIES_TABLE', $prefixeTable.'categories');
+if (!defined('COMMENTS_TABLE'))
+  define('COMMENTS_TABLE', $prefixeTable.'comments');
+if (!defined('CONFIG_TABLE'))
+  define('CONFIG_TABLE', $prefixeTable.'config');
+if (!defined('FAVORITES_TABLE'))
+  define('FAVORITES_TABLE', $prefixeTable.'favorites');
+if (!defined('GROUP_ACCESS_TABLE'))
+  define('GROUP_ACCESS_TABLE', $prefixeTable.'group_access');
+if (!defined('GROUPS_TABLE'))
+  define('GROUPS_TABLE', $prefixeTable.'groups');
+if (!defined('HISTORY_TABLE'))
+  define('HISTORY_TABLE', $prefixeTable.'history');
+if (!defined('HISTORY_SUMMARY_TABLE'))
+  define('HISTORY_SUMMARY_TABLE', $prefixeTable.'history_summary');
+if (!defined('IMAGE_CATEGORY_TABLE'))
+  define('IMAGE_CATEGORY_TABLE', $prefixeTable.'image_category');
+if (!defined('IMAGES_TABLE'))
+  define('IMAGES_TABLE', $prefixeTable.'images');
+if (!defined('SESSIONS_TABLE'))
+  define('SESSIONS_TABLE', $prefixeTable.'sessions');
+if (!defined('SITES_TABLE'))
+  define('SITES_TABLE', $prefixeTable.'sites');
+if (!defined('USER_ACCESS_TABLE'))
+  define('USER_ACCESS_TABLE', $prefixeTable.'user_access');
+if (!defined('USER_GROUP_TABLE'))
+  define('USER_GROUP_TABLE', $prefixeTable.'user_group');
+if (!defined('USERS_TABLE'))
+  define('USERS_TABLE', isset($conf['users_table']) ? $conf['users_table'] : $prefixeTable.'users' );
+if (!defined('USER_INFOS_TABLE'))
+  define('USER_INFOS_TABLE', $prefixeTable.'user_infos');
+if (!defined('USER_FEED_TABLE'))
+  define('USER_FEED_TABLE', $prefixeTable.'user_feed');
+if (!defined('RATE_TABLE'))
+  define('RATE_TABLE', $prefixeTable.'rate');
+if (!defined('USER_CACHE_TABLE'))
+  define('USER_CACHE_TABLE', $prefixeTable.'user_cache');
+if (!defined('USER_CACHE_CATEGORIES_TABLE'))
+  define('USER_CACHE_CATEGORIES_TABLE', $prefixeTable.'user_cache_categories');
+if (!defined('CADDIE_TABLE'))
+  define('CADDIE_TABLE', $prefixeTable.'caddie');
+if (!defined('UPGRADE_TABLE'))
+  define('UPGRADE_TABLE', $prefixeTable.'upgrade');
+if (!defined('SEARCH_TABLE'))
+  define('SEARCH_TABLE', $prefixeTable.'search');
+if (!defined('USER_MAIL_NOTIFICATION_TABLE'))
+  define('USER_MAIL_NOTIFICATION_TABLE', $prefixeTable.'user_mail_notification');
+if (!defined('TAGS_TABLE'))
+  define('TAGS_TABLE', $prefixeTable.'tags');
+if (!defined('IMAGE_TAG_TABLE'))
+  define('IMAGE_TAG_TABLE', $prefixeTable.'image_tag');
+if (!defined('PLUGINS_TABLE'))
+  define('PLUGINS_TABLE', $prefixeTable.'plugins');
+if (!defined('OLD_PERMALINKS_TABLE'))
+  define('OLD_PERMALINKS_TABLE', $prefixeTable.'old_permalinks');
+if (!defined('THEMES_TABLE'))
+  define('THEMES_TABLE', $prefixeTable.'themes');
+if (!defined('LANGUAGES_TABLE'))
+  define('LANGUAGES_TABLE', $prefixeTable.'languages');
+
+?>
Index: /tags/2.6.0RC1/include/cssmin.class.php
===================================================================
--- /tags/2.6.0RC1/include/cssmin.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/cssmin.class.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * CssMin - A (simple) css minifier with benefits
+ * 
+ * --
+ * Copyright (c) 2011 Joe Scylla <joe.scylla@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ * --
+ * 
+ * @package		CssMin
+ * @link		http://code.google.com/p/cssmin/
+ * @author		Joe Scylla <joe.scylla@gmail.com>
+ * @copyright	2008 - 2011 Joe Scylla <joe.scylla@gmail.com>
+ * @license		http://opensource.org/licenses/mit-license.php MIT License
+ * @version		3.0.1
+ */
+ abstract class aCssToken { abstract public function __toString(); } abstract class aCssRulesetStartToken extends aCssToken { } abstract class aCssRulesetEndToken extends aCssToken { public function __toString() { return "}"; } } abstract class aCssParserPlugin { protected $configuration = array(); protected $parser = null; protected $buffer = ""; public function __construct(CssParser $parser, array $configuration = null) { $this->configuration = $configuration; $this->parser = $parser; } abstract public function getTriggerChars(); abstract public function getTriggerStates(); abstract public function parse($index, $char, $previousChar, $state); } abstract class aCssMinifierPlugin { protected $configuration = array(); protected $minifier = null; public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->configuration = $configuration; $this->minifier = $minifier; } abstract public function apply(aCssToken &$token); abstract public function getTriggerTokens(); } abstract class aCssMinifierFilter { protected $configuration = array(); protected $minifier = null; public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->configuration = $configuration; $this->minifier = $minifier; } abstract public function apply(array &$tokens); } abstract class aCssFormatter { protected $indent = "    "; protected $padding = 0; protected $tokens = array(); public function __construct(array $tokens, $indent = null, $padding = null) { $this->tokens = $tokens; $this->indent = !is_null($indent) ? $indent : $this->indent; $this->padding = !is_null($padding) ? $padding : $this->padding; } abstract public function __toString(); } abstract class aCssDeclarationToken extends aCssToken { public $IsImportant = false; public $IsLast = false; public $Property = ""; public $Value = ""; public function __construct($property, $value, $isImportant = false, $isLast = false) { $this->Property = $property; $this->Value = $value; $this->IsImportant = $isImportant; $this->IsLast = $isLast; } public function __toString() { return $this->Property . ":" . $this->Value . ($this->IsImportant ? " !important" : "") . ($this->IsLast ? "" : ";"); } } abstract class aCssAtBlockStartToken extends aCssToken { } abstract class aCssAtBlockEndToken extends aCssToken { public function __toString() { return "}"; } } class CssWhitesmithsFormatter extends aCssFormatter { public function __toString() { $r = array(); $level = 0; for ($i = 0, $l = count($this->tokens); $i < $l; $i++) { $token = $this->tokens[$i]; $class = get_class($token); $indent = str_repeat($this->indent, $level); if ($class === "CssCommentToken") { $lines = array_map("trim", explode("\n", $token->Comment)); for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) { $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; } } elseif ($class === "CssAtCharsetToken") { $r[] = $indent . "@charset " . $token->Charset . ";"; } elseif ($class === "CssAtFontFaceStartToken") { $r[] = $indent . "@font-face"; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtImportToken") { $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; } elseif ($class === "CssAtKeyframesStartToken") { $r[] = $indent . "@keyframes \"" . $token->Name . "\""; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtMediaStartToken") { $r[] = $indent . "@media " . implode(", ", $token->MediaTypes); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtPageStartToken") { $r[] = $indent . "@page"; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtVariablesStartToken") { $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") { $r[] = $indent . implode(", ", $token->Selectors); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class == "CssAtFontFaceDeclarationToken" || $class === "CssAtKeyframesRulesetDeclarationToken" || $class === "CssAtPageDeclarationToken" || $class == "CssAtVariablesDeclarationToken" || $class === "CssRulesetDeclarationToken" ) { $declaration = $indent . $token->Property . ": "; if ($this->padding) { $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); } $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; } elseif ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtKeyframesEndToken" || $class === "CssAtKeyframesRulesetEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken" || $class === "CssRulesetEndToken" ) { $r[] = $indent . "}"; $level--; } } return implode("\n", $r); } } class CssVariablesMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/var\((.+)\)/iSU"; private $variables = null; public function getVariables() { return $this->variables; } public function apply(aCssToken &$token) { if (stripos($token->Value, "var") !== false && preg_match_all($this->reMatch, $token->Value, $m)) { $mediaTypes = $token->MediaTypes; if (!in_array("all", $mediaTypes)) { $mediaTypes[] = "all"; } for ($i = 0, $l = count($m[0]); $i < $l; $i++) { $variable = trim($m[1][$i]); foreach ($mediaTypes as $mediaType) { if (isset($this->variables[$mediaType], $this->variables[$mediaType][$variable])) { $token->Value = str_replace($m[0][$i], $this->variables[$mediaType][$variable], $token->Value); continue 2; } } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": No value found for variable <code>" . $variable . "</code> in media types <code>" . implode(", ", $mediaTypes) . "</code>", (string) $token)); $token = new CssNullToken(); return true; } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } public function setVariables(array $variables) { $this->variables = $variables; } } class CssVariablesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $variables = array(); $defaultMediaTypes = array("all"); $mediaTypes = array(); $remove = array(); for($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtVariablesStartToken") { $remove[] = $i; $mediaTypes = (count($tokens[$i]->MediaTypes) == 0 ? $defaultMediaTypes : $tokens[$i]->MediaTypes); foreach ($mediaTypes as $mediaType) { if (!isset($variables[$mediaType])) { $variables[$mediaType] = array(); } } for($i = $i; $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtVariablesDeclarationToken") { foreach ($mediaTypes as $mediaType) { $variables[$mediaType][$tokens[$i]->Property] = $tokens[$i]->Value; } $remove[] = $i; } elseif (get_class($tokens[$i]) === "CssAtVariablesEndToken") { $remove[] = $i; break; } } } } foreach($variables as $mediaType => $null) { foreach($variables[$mediaType] as $variable => $value) { if (stripos($value, "var") !== false && preg_match_all("/var\((.+)\)/iSU", $value, $m)) { for ($i = 0, $l = count($m[0]); $i < $l; $i++) { $variables[$mediaType][$variable] = str_replace($m[0][$i], (isset($variables[$mediaType][$m[1][$i]]) ? $variables[$mediaType][$m[1][$i]] : ""), $variables[$mediaType][$variable]); } } } } foreach ($remove as $i) { $tokens[$i] = null; } if (!($plugin = $this->minifier->getPlugin("CssVariablesMinifierPlugin"))) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin <code>CssVariablesMinifierPlugin</code> was not found but is required for <code>" . __CLASS__ . "</code>")); } else { $plugin->setVariables($variables); } return count($remove); } } class CssUrlParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("(", ")"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 3, 4)) === "url(" && $state !== "T_URL") { $this->parser->pushState("T_URL"); $this->parser->setExclusive(__CLASS__); } elseif ($char === "\n" && $previousChar === "\\" && $state === "T_URL") { $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); } elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_URL") { $line = $this->parser->getBuffer(); $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . ")"); $this->parser->popState(); $this->parser->unsetExclusive(); CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); } elseif ($char === ")" && $state === "T_URL") { $this->parser->popState(); $this->parser->unsetExclusive(); } else { return false; } return true; } } class CssStringParserPlugin extends aCssParserPlugin { private $delimiterChar = null; public function getTriggerChars() { return array("\"", "'", "\n"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if (($char === "\"" || $char === "'") && $state !== "T_STRING") { $this->delimiterChar = $char; $this->parser->pushState("T_STRING"); $this->parser->setExclusive(__CLASS__); } elseif ($char === "\n" && $previousChar === "\\" && $state === "T_STRING") { $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); } elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_STRING") { $line = $this->parser->getBuffer(); $this->parser->popState(); $this->parser->unsetExclusive(); $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . $this->delimiterChar); CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); $this->delimiterChar = null; } elseif ($char === $this->delimiterChar && $state === "T_STRING") { if ($previousChar == "\\") { $source = $this->parser->getSource(); $c = 1; $i = $index - 2; while (substr($source, $i, 1) === "\\") { $c++; $i--; } if ($c % 2) { return false; } } $this->parser->popState(); $this->parser->unsetExclusive(); $this->delimiterChar = null; } else { return false; } return true; } } class CssSortRulesetPropertiesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) !== "CssRulesetStartToken") { continue; } $endIndex = false; for ($ii = $i + 1; $ii < $l; $ii++) { if (get_class($tokens[$ii]) !== "CssRulesetEndToken") { continue; } $endIndex = $ii; break; } if (!$endIndex) { break; } $startIndex = $i; $i = $endIndex; if ($endIndex - $startIndex <= 2) { continue; } for ($ii = $startIndex + 1; $ii < $endIndex; $ii++) { if (get_class($tokens[$ii]) !== "CssRulesetDeclarationToken") { continue(2); } } $declarations = array_slice($tokens, $startIndex + 1, $endIndex - $startIndex - 1); $sortRequired = $lastPropertyName = false; foreach ($declarations as $declaration) { if ($lastPropertyName) { if (strcmp($lastPropertyName, $declaration->Property) > 0) { $sortRequired = true; break; } } $lastPropertyName = $declaration->Property; } if (!$sortRequired) { continue; } usort($declarations, array(__CLASS__, "userDefinedSort1")); for ($ii = 0, $ll = count($declarations) - 1; $ii <= $ll; $ii++) { if ($ii == $ll) { $declarations[$ii]->IsLast = true; } else { $declarations[$ii]->IsLast = false; } } array_splice($tokens, $startIndex + 1, $endIndex - $startIndex - 1, $declarations); $r += $endIndex - $startIndex - 1; } return $r; } public static function userDefinedSort1($a, $b) { return strcmp($a->Property, $b->Property); } } class CssRulesetStartToken extends aCssRulesetStartToken { public $Selectors = array(); public function __construct(array $selectors = array()) { $this->Selectors = $selectors; } public function __toString() { return implode(",", $this->Selectors) . "{"; } } class CssRulesetParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array(",", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_MEDIA", "T_RULESET::SELECTORS", "T_RULESET", "T_RULESET_DECLARATION"); } private $selectors = array(); public function parse($index, $char, $previousChar, $state) { if ($char === "," && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) { if ($state !== "T_RULESET::SELECTORS") { $this->parser->pushState("T_RULESET::SELECTORS"); } $this->selectors[] = $this->parser->getAndClearBuffer(",{"); } elseif ($char === "{" && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) { if ($this->parser->getBuffer() !== "") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); if ($state == "T_RULESET::SELECTORS") { $this->parser->popState(); } $this->parser->pushState("T_RULESET"); $this->parser->appendToken(new CssRulesetStartToken($this->selectors)); $this->selectors = array(); } } elseif ($char === ":" && $state === "T_RULESET") { $this->parser->pushState("T_RULESET_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":;", true); } elseif ($char === ":" && $state === "T_RULESET_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_RULESET_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssRulesetDeclarationToken($this->buffer, $value, $this->parser->getMediaTypes(), $isImportant)); if ($char === "}") { $this->parser->appendToken(new CssRulesetEndToken()); $this->parser->popState(); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_RULESET") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssRulesetEndToken()); $this->buffer = ""; $this->selectors = array(); } else { return false; } return true; } } class CssRulesetEndToken extends aCssRulesetEndToken { } class CssRulesetDeclarationToken extends aCssDeclarationToken { public $MediaTypes = array("all"); public function __construct($property, $value, $mediaTypes = null, $isImportant = false, $isLast = false) { parent::__construct($property, $value, $isImportant, $isLast); $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); } } class CssRemoveLastDelarationSemiColonMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i+1]) ? get_class($tokens[$i+1]) : false; if (($current === "CssRulesetDeclarationToken" && $next === "CssRulesetEndToken") || ($current === "CssAtFontFaceDeclarationToken" && $next === "CssAtFontFaceEndToken") || ($current === "CssAtPageDeclarationToken" && $next === "CssAtPageEndToken")) { $tokens[$i]->IsLast = true; } } return 0; } } class CssRemoveEmptyRulesetsMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; if (($current === "CssRulesetStartToken" && $next === "CssRulesetEndToken") || ($current === "CssAtKeyframesRulesetStartToken" && $next === "CssAtKeyframesRulesetEndToken" && !array_intersect(array("from", "0%", "to", "100%"), array_map("strtolower", $tokens[$i]->Selectors))) ) { $tokens[$i] = null; $tokens[$i + 1] = null; $i++; $r = $r + 2; } } return $r; } } class CssRemoveEmptyAtBlocksMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; if (($current === "CssAtFontFaceStartToken" && $next === "CssAtFontFaceEndToken") || ($current === "CssAtKeyframesStartToken" && $next === "CssAtKeyframesEndToken") || ($current === "CssAtPageStartToken" && $next === "CssAtPageEndToken") || ($current === "CssAtMediaStartToken" && $next === "CssAtMediaEndToken")) { $tokens[$i] = null; $tokens[$i + 1] = null; $i++; $r = $r + 2; } } return $r; } } class CssRemoveCommentsMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssCommentToken") { $tokens[$i] = null; $r++; } } return $r; } } class CssParser { private $buffer = ""; private $plugins = array(); private $source = ""; private $state = "T_DOCUMENT"; private $stateExclusive = false; private $stateMediaTypes = false; private $states = array("T_DOCUMENT"); private $tokens = array(); public function __construct($source = null, array $plugins = null) { $plugins = array_merge(array ( "Comment" => true, "String" => true, "Url" => true, "Expression" => true, "Ruleset" => true, "AtCharset" => true, "AtFontFace" => true, "AtImport" => true, "AtKeyframes" => true, "AtMedia" => true, "AtPage" => true, "AtVariables" => true ), is_array($plugins) ? $plugins : array()); foreach ($plugins as $name => $config) { if ($config !== false) { $class = "Css" . $name . "ParserPlugin"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->plugins[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin <code>" . $name . "</code> with the class name <code>" . $class . "</code> was not found")); } } } if (!is_null($source)) { $this->parse($source); } } public function appendToken(aCssToken $token) { $this->tokens[] = $token; } public function clearBuffer() { $this->buffer = ""; } public function getAndClearBuffer($trim = "", $tolower = false) { $r = $this->getBuffer($trim, $tolower); $this->buffer = ""; return $r; } public function getBuffer($trim = "", $tolower = false) { $r = $this->buffer; if ($trim) { $r = trim($r, " \t\n\r\0\x0B" . $trim); } if ($tolower) { $r = strtolower($r); } return $r; } public function getMediaTypes() { return $this->stateMediaTypes; } public function getSource() { return $this->source; } public function getState() { return $this->state; } public function getPlugin($class) { static $index = null; if (is_null($index)) { $index = array(); for ($i = 0, $l = count($this->plugins); $i < $l; $i++) { $index[get_class($this->plugins[$i])] = $i; } } return isset($index[$class]) ? $this->plugins[$index[$class]] : false; } public function getTokens() { return $this->tokens; } public function isState($state) { return ($this->state == $state); } public function parse($source) { $this->source = ""; $this->tokens = array(); $globalTriggerChars = ""; $plugins = $this->plugins; $pluginCount = count($plugins); $pluginIndex = array(); $pluginTriggerStates = array(); $pluginTriggerChars = array(); for ($i = 0, $l = count($plugins); $i < $l; $i++) { $tPluginClassName = get_class($plugins[$i]); $pluginTriggerChars[$i] = implode("", $plugins[$i]->getTriggerChars()); $tPluginTriggerStates = $plugins[$i]->getTriggerStates(); $pluginTriggerStates[$i] = $tPluginTriggerStates === false ? false : "|" . implode("|", $tPluginTriggerStates) . "|"; $pluginIndex[$tPluginClassName] = $i; for ($ii = 0, $ll = strlen($pluginTriggerChars[$i]); $ii < $ll; $ii++) { $c = substr($pluginTriggerChars[$i], $ii, 1); if (strpos($globalTriggerChars, $c) === false) { $globalTriggerChars .= $c; } } } $source = str_replace("\r\n", "\n", $source); $source = str_replace("\r", "\n", $source); $this->source = $source; $buffer = &$this->buffer; $exclusive = &$this->stateExclusive; $state = &$this->state; $c = $p = null; for ($i = 0, $l = strlen($source); $i < $l; $i++) { $c = $source[$i]; if ($exclusive === false) { if ($c === "\n" || $c === "\t") { $c = " "; } if ($c === " " && $p === " ") { continue; } } $buffer .= $c; if (strpos($globalTriggerChars, $c) !== false) { if ($exclusive) { $tPluginIndex = $pluginIndex[$exclusive]; if (strpos($pluginTriggerChars[$tPluginIndex], $c) !== false && ($pluginTriggerStates[$tPluginIndex] === false || strpos($pluginTriggerStates[$tPluginIndex], $state) !== false)) { $r = $plugins[$tPluginIndex]->parse($i, $c, $p, $state); if ($r === true) { continue; } elseif ($r !== false && $r != $i) { $i = $r; continue; } } } else { $triggerState = "|" . $state . "|"; for ($ii = 0, $ll = $pluginCount; $ii < $ll; $ii++) { if (strpos($pluginTriggerChars[$ii], $c) !== false && ($pluginTriggerStates[$ii] === false || strpos($pluginTriggerStates[$ii], $triggerState) !== false)) { $r = $plugins[$ii]->parse($i, $c, $p, $state); if ($r === true) { break; } elseif ($r !== false && $r != $i) { $i = $r; break; } } } } } $p = $c; } return $this->tokens; } public function popState() { $r = array_pop($this->states); $this->state = $this->states[count($this->states) - 1]; return $r; } public function pushState($state) { $r = array_push($this->states, $state); $this->state = $this->states[count($this->states) - 1]; return $r; } public function setBuffer($buffer) { $this->buffer = $buffer; } public function setExclusive($exclusive) { $this->stateExclusive = $exclusive; } public function setMediaTypes(array $mediaTypes) { $this->stateMediaTypes = $mediaTypes; } public function setState($state) { $r = array_pop($this->states); array_push($this->states, $state); $this->state = $this->states[count($this->states) - 1]; return $r; } public function unsetExclusive() { $this->stateExclusive = false; } public function unsetMediaTypes() { $this->stateMediaTypes = false; } } class CssOtbsFormatter extends aCssFormatter { public function __toString() { $r = array(); $level = 0; for ($i = 0, $l = count($this->tokens); $i < $l; $i++) { $token = $this->tokens[$i]; $class = get_class($token); $indent = str_repeat($this->indent, $level); if ($class === "CssCommentToken") { $lines = array_map("trim", explode("\n", $token->Comment)); for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) { $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; } } elseif ($class === "CssAtCharsetToken") { $r[] = $indent . "@charset " . $token->Charset . ";"; } elseif ($class === "CssAtFontFaceStartToken") { $r[] = $indent . "@font-face {"; $level++; } elseif ($class === "CssAtImportToken") { $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; } elseif ($class === "CssAtKeyframesStartToken") { $r[] = $indent . "@keyframes \"" . $token->Name . "\" {"; $level++; } elseif ($class === "CssAtMediaStartToken") { $r[] = $indent . "@media " . implode(", ", $token->MediaTypes) . " {"; $level++; } elseif ($class === "CssAtPageStartToken") { $r[] = $indent . "@page {"; $level++; } elseif ($class === "CssAtVariablesStartToken") { $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes) . " {"; $level++; } elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") { $r[] = $indent . implode(", ", $token->Selectors) . " {"; $level++; } elseif ($class == "CssAtFontFaceDeclarationToken" || $class === "CssAtKeyframesRulesetDeclarationToken" || $class === "CssAtPageDeclarationToken" || $class == "CssAtVariablesDeclarationToken" || $class === "CssRulesetDeclarationToken" ) { $declaration = $indent . $token->Property . ": "; if ($this->padding) { $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); } $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; } elseif ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtKeyframesEndToken" || $class === "CssAtKeyframesRulesetEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken" || $class === "CssRulesetEndToken" ) { $level--; $r[] = str_repeat($indent, $level) . "}"; } } return implode("\n", $r); } } class CssNullToken extends aCssToken { public function __toString() { return ""; } } class CssMinifier { private $filters = array(); private $plugins = array(); private $minified = ""; public function __construct($source = null, array $filters = null, array $plugins = null) { $filters = array_merge(array ( "ImportImports" => false, "RemoveComments" => true, "RemoveEmptyRulesets" => true, "RemoveEmptyAtBlocks" => true, "ConvertLevel3Properties" => false, "ConvertLevel3AtKeyframes" => false, "Variables" => true, "RemoveLastDelarationSemiColon" => true ), is_array($filters) ? $filters : array()); $plugins = array_merge(array ( "Variables" => true, "ConvertFontWeight" => false, "ConvertHslColors" => false, "ConvertRgbColors" => false, "ConvertNamedColors" => false, "CompressColorValues" => false, "CompressUnitValues" => false, "CompressExpressionValues" => false ), is_array($plugins) ? $plugins : array()); foreach ($filters as $name => $config) { if ($config !== false) { $class = "Css" . $name . "MinifierFilter"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->filters[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The filter <code>" . $name . "</code> with the class name <code>" . $class . "</code> was not found")); } } } foreach ($plugins as $name => $config) { if ($config !== false) { $class = "Css" . $name . "MinifierPlugin"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->plugins[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin <code>" . $name . "</code> with the class name <code>" . $class . "</code> was not found")); } } } if (!is_null($source)) { $this->minify($source); } } public function getMinified() { return $this->minified; } public function getPlugin($class) { static $index = null; if (is_null($index)) { $index = array(); for ($i = 0, $l = count($this->plugins); $i < $l; $i++) { $index[get_class($this->plugins[$i])] = $i; } } return isset($index[$class]) ? $this->plugins[$index[$class]] : false; } public function minify($source) { $r = ""; $parser = new CssParser($source); $tokens = $parser->getTokens(); $filters = $this->filters; $filterCount = count($this->filters); $plugins = $this->plugins; $pluginCount = count($plugins); $pluginIndex = array(); $pluginTriggerTokens = array(); $globalTriggerTokens = array(); for ($i = 0, $l = count($plugins); $i < $l; $i++) { $tPluginClassName = get_class($plugins[$i]); $pluginTriggerTokens[$i] = $plugins[$i]->getTriggerTokens(); foreach ($pluginTriggerTokens[$i] as $v) { if (!in_array($v, $globalTriggerTokens)) { $globalTriggerTokens[] = $v; } } $pluginTriggerTokens[$i] = "|" . implode("|", $pluginTriggerTokens[$i]) . "|"; $pluginIndex[$tPluginClassName] = $i; } $globalTriggerTokens = "|" . implode("|", $globalTriggerTokens) . "|"; for($i = 0; $i < $filterCount; $i++) { if ($filters[$i]->apply($tokens) > 0) { $tokens = array_values(array_filter($tokens)); } } $tokenCount = count($tokens); for($i = 0; $i < $tokenCount; $i++) { $triggerToken = "|" . get_class($tokens[$i]) . "|"; if (strpos($globalTriggerTokens, $triggerToken) !== false) { for($ii = 0; $ii < $pluginCount; $ii++) { if (strpos($pluginTriggerTokens[$ii], $triggerToken) !== false || $pluginTriggerTokens[$ii] === false) { if ($plugins[$ii]->apply($tokens[$i]) === true) { continue 2; } } } } } for($i = 0; $i < $tokenCount; $i++) { $r .= (string) $tokens[$i]; } $this->minified = $r; return $r; } } class CssMin { private static $classIndex = array(); private static $errors = array(); private static $isVerbose = false; public static function autoload($class) { if (isset(self::$classIndex[$class])) { require(self::$classIndex[$class]); } } public static function getErrors() { return self::$errors; } public static function hasErrors() { return count(self::$errors) > 0; } public static function initialise() { $paths = array(dirname(__FILE__)); while (list($i, $path) = each($paths)) { $subDirectorys = glob($path . "*", GLOB_MARK | GLOB_ONLYDIR | GLOB_NOSORT); if (is_array($subDirectorys)) { foreach ($subDirectorys as $subDirectory) { $paths[] = $subDirectory; } } $files = glob($path . "*.php", 0); if (is_array($files)) { foreach ($files as $file) { $class = substr(basename($file), 0, -4); self::$classIndex[$class] = $file; } } } krsort(self::$classIndex); if (function_exists("spl_autoload_register") && !is_callable("__autoload")) { spl_autoload_register(array(__CLASS__, "autoload")); } else { foreach (self::$classIndex as $class => $file) { if (!class_exists($class)) { require_once($file); } } } } public static function minify($source, array $filters = null, array $plugins = null) { self::$errors = array(); $minifier = new CssMinifier($source, $filters, $plugins); return $minifier->getMinified(); } public static function parse($source, array $plugins = null) { self::$errors = array(); $parser = new CssParser($source, $plugins); return $parser->getTokens(); } public static function setVerbose($to) { self::$isVerbose = (boolean) $to; return self::$isVerbose; } public static function triggerError(CssError $error) { self::$errors[] = $error; if (self::$isVerbose) { trigger_error((string) $error, E_USER_WARNING); } } } CssMin::initialise(); class CssImportImportsMinifierFilter extends aCssMinifierFilter { private $imported = array(); public function apply(array &$tokens) { if (!isset($this->configuration["BasePath"]) || !is_dir($this->configuration["BasePath"])) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Base path <code>" . ($this->configuration["BasePath"] ? $this->configuration["BasePath"] : "null"). "</code> is not a directory")); return 0; } for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtImportToken") { $import = $this->configuration["BasePath"] . "/" . $tokens[$i]->Import; if (!is_file($import)) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file <code>" . $import. "</code> was not found.", (string) $tokens[$i])); } elseif (in_array($import, $this->imported)) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file <code>" . $import. "</code> was already imported.", (string) $tokens[$i])); $tokens[$i] = null; } else { $this->imported[] = $import; $parser = new CssParser(file_get_contents($import)); $import = $parser->getTokens(); if (count($tokens[$i]->MediaTypes) > 0 && !(count($tokens[$i]->MediaTypes) == 1 && $tokens[$i]->MediaTypes[0] == "all")) { $blocks = array(); for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtImportToken") { if (count($import[$ii]->MediaTypes) == 0 || (count($import[$ii]->MediaTypes) == 1 && $import[$ii]->MediaTypes[0] == "all")) { $import[$ii]->MediaTypes = $tokens[$i]->MediaTypes; } elseif (count($import[$ii]->MediaTypes > 0)) { foreach ($import[$ii]->MediaTypes as $index => $mediaType) { if (!in_array($mediaType, $tokens[$i]->MediaTypes)) { unset($import[$ii]->MediaTypes[$index]); } } $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); if (count($import[$ii]->MediaTypes) == 0) { $import[$ii] = null; } } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken") { foreach ($import[$ii]->MediaTypes as $index => $mediaType) { if (!in_array($mediaType, $tokens[$i]->MediaTypes)) { unset($import[$ii]->MediaTypes[$index]); } $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken") { if (count($import[$ii]->MediaTypes) === 0) { for ($iii = $ii; $iii < $ll; $iii++) { if (get_class($import[$iii]) === "CssAtMediaEndToken") { break; } } if (get_class($import[$iii]) === "CssAtMediaEndToken") { array_splice($import, $ii, $iii - $ii + 1, array()); $ll = count($import); } } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken" && count(array_diff($tokens[$i]->MediaTypes, $import[$ii]->MediaTypes)) === 0) { for ($iii = $ii; $iii < $ll; $iii++) { if (get_class($import[$iii]) == "CssAtMediaEndToken") { break; } } if (get_class($import[$iii]) == "CssAtMediaEndToken") { unset($import[$ii]); unset($import[$iii]); $import = array_values($import); $ll = count($import); } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { $class = get_class($import[$ii]); if ($class === "CssAtImportToken" || $class === "CssAtCharsetToken") { $blocks = array_merge($blocks, array_splice($import, $ii, 1, array())); $ll = count($import); } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { $class = get_class($import[$ii]); if ($class === "CssAtFontFaceStartToken" || $class === "CssAtMediaStartToken" || $class === "CssAtPageStartToken" || $class === "CssAtVariablesStartToken") { for ($iii = $ii; $iii < $ll; $iii++) { $class = get_class($import[$iii]); if ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken") { break; } } $class = get_class($import[$iii]); if (isset($import[$iii]) && ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken")) { $blocks = array_merge($blocks, array_splice($import, $ii, $iii - $ii + 1, array())); $ll = count($import); } } } $import = array_merge($blocks, array(new CssAtMediaStartToken($tokens[$i]->MediaTypes)), $import, array(new CssAtMediaEndToken())); } array_splice($tokens, $i, 1, $import); $i--; $l = count($tokens); } } } } } class CssExpressionParserPlugin extends aCssParserPlugin { private $leftBraces = 0; private $rightBraces = 0; public function getTriggerChars() { return array("(", ")", ";", "}"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 10, 11)) === "expression(" && $state !== "T_EXPRESSION") { $this->parser->pushState("T_EXPRESSION"); $this->leftBraces++; } elseif ($char === "(" && $state === "T_EXPRESSION") { $this->leftBraces++; } elseif ($char === ")" && $state === "T_EXPRESSION") { $this->rightBraces++; } elseif (($char === ";" || $char === "}") && $state === "T_EXPRESSION" && $this->leftBraces === $this->rightBraces) { $this->leftBraces = $this->rightBraces = 0; $this->parser->popState(); return $index - 1; } else { return false; } return true; } } class CssError { public $File = ""; public $Line = 0; public $Message = ""; public $Source = ""; public function __construct($file, $line, $message, $source = "") { $this->File = $file; $this->Line = $line; $this->Message = $message; $this->Source = $source; } public function __toString() { return $this->Message . ($this->Source ? ": <br /><code>" . $this->Source . "</code>": "") . "<br />in file " . $this->File . " at line " . $this->Line; } } class CssConvertRgbColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/rgb\s*\(\s*([0-9%]+)\s*,\s*([0-9%]+)\s*,\s*([0-9%]+)\s*\)/iS"; public function apply(aCssToken &$token) { if (stripos($token->Value, "rgb") !== false && preg_match($this->reMatch, $token->Value, $m)) { for ($i = 1, $l = count($m); $i < $l; $i++) { if (strpos("%", $m[$i]) !== false) { $m[$i] = substr($m[$i], 0, -1); $m[$i] = (int) (256 * ($m[$i] / 100)); } $m[$i] = str_pad(dechex($m[$i]), 2, "0", STR_PAD_LEFT); } $token->Value = str_replace($m[0], "#" . $m[1] . $m[2] . $m[3], $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssConvertNamedColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = null; private $reReplace = "\"\${1}\" . \$this->transformation[strtolower(\"\${2}\")] . \"\${3}\""; private $transformation = array ( "aliceblue" => "#f0f8ff", "antiquewhite" => "#faebd7", "aqua" => "#0ff", "aquamarine" => "#7fffd4", "azure" => "#f0ffff", "beige" => "#f5f5dc", "black" => "#000", "blue" => "#00f", "blueviolet" => "#8a2be2", "brown" => "#a52a2a", "burlywood" => "#deb887", "cadetblue" => "#5f9ea0", "chartreuse" => "#7fff00", "chocolate" => "#d2691e", "coral" => "#ff7f50", "cornflowerblue" => "#6495ed", "cornsilk" => "#fff8dc", "crimson" => "#dc143c", "darkblue" => "#00008b", "darkcyan" => "#008b8b", "darkgoldenrod" => "#b8860b", "darkgray" => "#a9a9a9", "darkgreen" => "#006400", "darkkhaki" => "#bdb76b", "darkmagenta" => "#8b008b", "darkolivegreen" => "#556b2f", "darkorange" => "#ff8c00", "darkorchid" => "#9932cc", "darkred" => "#8b0000", "darksalmon" => "#e9967a", "darkseagreen" => "#8fbc8f", "darkslateblue" => "#483d8b", "darkslategray" => "#2f4f4f", "darkturquoise" => "#00ced1", "darkviolet" => "#9400d3", "deeppink" => "#ff1493", "deepskyblue" => "#00bfff", "dimgray" => "#696969", "dodgerblue" => "#1e90ff", "firebrick" => "#b22222", "floralwhite" => "#fffaf0", "forestgreen" => "#228b22", "fuchsia" => "#f0f", "gainsboro" => "#dcdcdc", "ghostwhite" => "#f8f8ff", "gold" => "#ffd700", "goldenrod" => "#daa520", "gray" => "#808080", "green" => "#008000", "greenyellow" => "#adff2f", "honeydew" => "#f0fff0", "hotpink" => "#ff69b4", "indianred" => "#cd5c5c", "indigo" => "#4b0082", "ivory" => "#fffff0", "khaki" => "#f0e68c", "lavender" => "#e6e6fa", "lavenderblush" => "#fff0f5", "lawngreen" => "#7cfc00", "lemonchiffon" => "#fffacd", "lightblue" => "#add8e6", "lightcoral" => "#f08080", "lightcyan" => "#e0ffff", "lightgoldenrodyellow" => "#fafad2", "lightgreen" => "#90ee90", "lightgrey" => "#d3d3d3", "lightpink" => "#ffb6c1", "lightsalmon" => "#ffa07a", "lightseagreen" => "#20b2aa", "lightskyblue" => "#87cefa", "lightslategray" => "#789", "lightsteelblue" => "#b0c4de", "lightyellow" => "#ffffe0", "lime" => "#0f0", "limegreen" => "#32cd32", "linen" => "#faf0e6", "maroon" => "#800000", "mediumaquamarine" => "#66cdaa", "mediumblue" => "#0000cd", "mediumorchid" => "#ba55d3", "mediumpurple" => "#9370db", "mediumseagreen" => "#3cb371", "mediumslateblue" => "#7b68ee", "mediumspringgreen" => "#00fa9a", "mediumturquoise" => "#48d1cc", "mediumvioletred" => "#c71585", "midnightblue" => "#191970", "mintcream" => "#f5fffa", "mistyrose" => "#ffe4e1", "moccasin" => "#ffe4b5", "navajowhite" => "#ffdead", "navy" => "#000080", "oldlace" => "#fdf5e6", "olive" => "#808000", "olivedrab" => "#6b8e23", "orange" => "#ffa500", "orangered" => "#ff4500", "orchid" => "#da70d6", "palegoldenrod" => "#eee8aa", "palegreen" => "#98fb98", "paleturquoise" => "#afeeee", "palevioletred" => "#db7093", "papayawhip" => "#ffefd5", "peachpuff" => "#ffdab9", "peru" => "#cd853f", "pink" => "#ffc0cb", "plum" => "#dda0dd", "powderblue" => "#b0e0e6", "purple" => "#800080", "red" => "#f00", "rosybrown" => "#bc8f8f", "royalblue" => "#4169e1", "saddlebrown" => "#8b4513", "salmon" => "#fa8072", "sandybrown" => "#f4a460", "seagreen" => "#2e8b57", "seashell" => "#fff5ee", "sienna" => "#a0522d", "silver" => "#c0c0c0", "skyblue" => "#87ceeb", "slateblue" => "#6a5acd", "slategray" => "#708090", "snow" => "#fffafa", "springgreen" => "#00ff7f", "steelblue" => "#4682b4", "tan" => "#d2b48c", "teal" => "#008080", "thistle" => "#d8bfd8", "tomato" => "#ff6347", "turquoise" => "#40e0d0", "violet" => "#ee82ee", "wheat" => "#f5deb3", "white" => "#fff", "whitesmoke" => "#f5f5f5", "yellow" => "#ff0", "yellowgreen" => "#9acd32" ); public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)) . ")(\s|$)+/eiS"; parent::__construct($minifier, $configuration); } public function apply(aCssToken &$token) { $lcValue = strtolower($token->Value); if (isset($this->transformation[$lcValue])) { $token->Value = $this->transformation[$lcValue]; } elseif (preg_match($this->reMatch, $token->Value)) { $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssConvertLevel3PropertiesMinifierFilter extends aCssMinifierFilter { private $transformations = array ( "animation" => array(null, "-webkit-animation", null, null), "animation-delay" => array(null, "-webkit-animation-delay", null, null), "animation-direction" => array(null, "-webkit-animation-direction", null, null), "animation-duration" => array(null, "-webkit-animation-duration", null, null), "animation-fill-mode" => array(null, "-webkit-animation-fill-mode", null, null), "animation-iteration-count" => array(null, "-webkit-animation-iteration-count", null, null), "animation-name" => array(null, "-webkit-animation-name", null, null), "animation-play-state" => array(null, "-webkit-animation-play-state", null, null), "animation-timing-function" => array(null, "-webkit-animation-timing-function", null, null), "appearance" => array("-moz-appearance", "-webkit-appearance", null, null), "backface-visibility" => array(null, "-webkit-backface-visibility", null, null), "background-clip" => array(null, "-webkit-background-clip", null, null), "background-composite" => array(null, "-webkit-background-composite", null, null), "background-inline-policy" => array("-moz-background-inline-policy", null, null, null), "background-origin" => array(null, "-webkit-background-origin", null, null), "background-position-x" => array(null, null, null, "-ms-background-position-x"), "background-position-y" => array(null, null, null, "-ms-background-position-y"), "background-size" => array(null, "-webkit-background-size", null, null), "behavior" => array(null, null, null, "-ms-behavior"), "binding" => array("-moz-binding", null, null, null), "border-after" => array(null, "-webkit-border-after", null, null), "border-after-color" => array(null, "-webkit-border-after-color", null, null), "border-after-style" => array(null, "-webkit-border-after-style", null, null), "border-after-width" => array(null, "-webkit-border-after-width", null, null), "border-before" => array(null, "-webkit-border-before", null, null), "border-before-color" => array(null, "-webkit-border-before-color", null, null), "border-before-style" => array(null, "-webkit-border-before-style", null, null), "border-before-width" => array(null, "-webkit-border-before-width", null, null), "border-border-bottom-colors" => array("-moz-border-bottom-colors", null, null, null), "border-bottom-left-radius" => array("-moz-border-radius-bottomleft", "-webkit-border-bottom-left-radius", null, null), "border-bottom-right-radius" => array("-moz-border-radius-bottomright", "-webkit-border-bottom-right-radius", null, null), "border-end" => array("-moz-border-end", "-webkit-border-end", null, null), "border-end-color" => array("-moz-border-end-color", "-webkit-border-end-color", null, null), "border-end-style" => array("-moz-border-end-style", "-webkit-border-end-style", null, null), "border-end-width" => array("-moz-border-end-width", "-webkit-border-end-width", null, null), "border-fit" => array(null, "-webkit-border-fit", null, null), "border-horizontal-spacing" => array(null, "-webkit-border-horizontal-spacing", null, null), "border-image" => array("-moz-border-image", "-webkit-border-image", null, null), "border-left-colors" => array("-moz-border-left-colors", null, null, null), "border-radius" => array("-moz-border-radius", "-webkit-border-radius", null, null), "border-border-right-colors" => array("-moz-border-right-colors", null, null, null), "border-start" => array("-moz-border-start", "-webkit-border-start", null, null), "border-start-color" => array("-moz-border-start-color", "-webkit-border-start-color", null, null), "border-start-style" => array("-moz-border-start-style", "-webkit-border-start-style", null, null), "border-start-width" => array("-moz-border-start-width", "-webkit-border-start-width", null, null), "border-top-colors" => array("-moz-border-top-colors", null, null, null), "border-top-left-radius" => array("-moz-border-radius-topleft", "-webkit-border-top-left-radius", null, null), "border-top-right-radius" => array("-moz-border-radius-topright", "-webkit-border-top-right-radius", null, null), "border-vertical-spacing" => array(null, "-webkit-border-vertical-spacing", null, null), "box-align" => array("-moz-box-align", "-webkit-box-align", null, null), "box-direction" => array("-moz-box-direction", "-webkit-box-direction", null, null), "box-flex" => array("-moz-box-flex", "-webkit-box-flex", null, null), "box-flex-group" => array(null, "-webkit-box-flex-group", null, null), "box-flex-lines" => array(null, "-webkit-box-flex-lines", null, null), "box-ordinal-group" => array("-moz-box-ordinal-group", "-webkit-box-ordinal-group", null, null), "box-orient" => array("-moz-box-orient", "-webkit-box-orient", null, null), "box-pack" => array("-moz-box-pack", "-webkit-box-pack", null, null), "box-reflect" => array(null, "-webkit-box-reflect", null, null), "box-shadow" => array("-moz-box-shadow", "-webkit-box-shadow", null, null), "box-sizing" => array("-moz-box-sizing", null, null, null), "color-correction" => array(null, "-webkit-color-correction", null, null), "column-break-after" => array(null, "-webkit-column-break-after", null, null), "column-break-before" => array(null, "-webkit-column-break-before", null, null), "column-break-inside" => array(null, "-webkit-column-break-inside", null, null), "column-count" => array("-moz-column-count", "-webkit-column-count", null, null), "column-gap" => array("-moz-column-gap", "-webkit-column-gap", null, null), "column-rule" => array("-moz-column-rule", "-webkit-column-rule", null, null), "column-rule-color" => array("-moz-column-rule-color", "-webkit-column-rule-color", null, null), "column-rule-style" => array("-moz-column-rule-style", "-webkit-column-rule-style", null, null), "column-rule-width" => array("-moz-column-rule-width", "-webkit-column-rule-width", null, null), "column-span" => array(null, "-webkit-column-span", null, null), "column-width" => array("-moz-column-width", "-webkit-column-width", null, null), "columns" => array(null, "-webkit-columns", null, null), "filter" => array(__CLASS__, "filter"), "float-edge" => array("-moz-float-edge", null, null, null), "font-feature-settings" => array("-moz-font-feature-settings", null, null, null), "font-language-override" => array("-moz-font-language-override", null, null, null), "font-size-delta" => array(null, "-webkit-font-size-delta", null, null), "font-smoothing" => array(null, "-webkit-font-smoothing", null, null), "force-broken-image-icon" => array("-moz-force-broken-image-icon", null, null, null), "highlight" => array(null, "-webkit-highlight", null, null), "hyphenate-character" => array(null, "-webkit-hyphenate-character", null, null), "hyphenate-locale" => array(null, "-webkit-hyphenate-locale", null, null), "hyphens" => array(null, "-webkit-hyphens", null, null), "force-broken-image-icon" => array("-moz-image-region", null, null, null), "ime-mode" => array(null, null, null, "-ms-ime-mode"), "interpolation-mode" => array(null, null, null, "-ms-interpolation-mode"), "layout-flow" => array(null, null, null, "-ms-layout-flow"), "layout-grid" => array(null, null, null, "-ms-layout-grid"), "layout-grid-char" => array(null, null, null, "-ms-layout-grid-char"), "layout-grid-line" => array(null, null, null, "-ms-layout-grid-line"), "layout-grid-mode" => array(null, null, null, "-ms-layout-grid-mode"), "layout-grid-type" => array(null, null, null, "-ms-layout-grid-type"), "line-break" => array(null, "-webkit-line-break", null, "-ms-line-break"), "line-clamp" => array(null, "-webkit-line-clamp", null, null), "line-grid-mode" => array(null, null, null, "-ms-line-grid-mode"), "logical-height" => array(null, "-webkit-logical-height", null, null), "logical-width" => array(null, "-webkit-logical-width", null, null), "margin-after" => array(null, "-webkit-margin-after", null, null), "margin-after-collapse" => array(null, "-webkit-margin-after-collapse", null, null), "margin-before" => array(null, "-webkit-margin-before", null, null), "margin-before-collapse" => array(null, "-webkit-margin-before-collapse", null, null), "margin-bottom-collapse" => array(null, "-webkit-margin-bottom-collapse", null, null), "margin-collapse" => array(null, "-webkit-margin-collapse", null, null), "margin-end" => array("-moz-margin-end", "-webkit-margin-end", null, null), "margin-start" => array("-moz-margin-start", "-webkit-margin-start", null, null), "margin-top-collapse" => array(null, "-webkit-margin-top-collapse", null, null), "marquee " => array(null, "-webkit-marquee", null, null), "marquee-direction" => array(null, "-webkit-marquee-direction", null, null), "marquee-increment" => array(null, "-webkit-marquee-increment", null, null), "marquee-repetition" => array(null, "-webkit-marquee-repetition", null, null), "marquee-speed" => array(null, "-webkit-marquee-speed", null, null), "marquee-style" => array(null, "-webkit-marquee-style", null, null), "mask" => array(null, "-webkit-mask", null, null), "mask-attachment" => array(null, "-webkit-mask-attachment", null, null), "mask-box-image" => array(null, "-webkit-mask-box-image", null, null), "mask-clip" => array(null, "-webkit-mask-clip", null, null), "mask-composite" => array(null, "-webkit-mask-composite", null, null), "mask-image" => array(null, "-webkit-mask-image", null, null), "mask-origin" => array(null, "-webkit-mask-origin", null, null), "mask-position" => array(null, "-webkit-mask-position", null, null), "mask-position-x" => array(null, "-webkit-mask-position-x", null, null), "mask-position-y" => array(null, "-webkit-mask-position-y", null, null), "mask-repeat" => array(null, "-webkit-mask-repeat", null, null), "mask-repeat-x" => array(null, "-webkit-mask-repeat-x", null, null), "mask-repeat-y" => array(null, "-webkit-mask-repeat-y", null, null), "mask-size" => array(null, "-webkit-mask-size", null, null), "match-nearest-mail-blockquote-color" => array(null, "-webkit-match-nearest-mail-blockquote-color", null, null), "max-logical-height" => array(null, "-webkit-max-logical-height", null, null), "max-logical-width" => array(null, "-webkit-max-logical-width", null, null), "min-logical-height" => array(null, "-webkit-min-logical-height", null, null), "min-logical-width" => array(null, "-webkit-min-logical-width", null, null), "object-fit" => array(null, null, "-o-object-fit", null), "object-position" => array(null, null, "-o-object-position", null), "opacity" => array(__CLASS__, "opacity"), "outline-radius" => array("-moz-outline-radius", null, null, null), "outline-bottom-left-radius" => array("-moz-outline-radius-bottomleft", null, null, null), "outline-bottom-right-radius" => array("-moz-outline-radius-bottomright", null, null, null), "outline-top-left-radius" => array("-moz-outline-radius-topleft", null, null, null), "outline-top-right-radius" => array("-moz-outline-radius-topright", null, null, null), "padding-after" => array(null, "-webkit-padding-after", null, null), "padding-before" => array(null, "-webkit-padding-before", null, null), "padding-end" => array("-moz-padding-end", "-webkit-padding-end", null, null), "padding-start" => array("-moz-padding-start", "-webkit-padding-start", null, null), "perspective" => array(null, "-webkit-perspective", null, null), "perspective-origin" => array(null, "-webkit-perspective-origin", null, null), "perspective-origin-x" => array(null, "-webkit-perspective-origin-x", null, null), "perspective-origin-y" => array(null, "-webkit-perspective-origin-y", null, null), "rtl-ordering" => array(null, "-webkit-rtl-ordering", null, null), "scrollbar-3dlight-color" => array(null, null, null, "-ms-scrollbar-3dlight-color"), "scrollbar-arrow-color" => array(null, null, null, "-ms-scrollbar-arrow-color"), "scrollbar-base-color" => array(null, null, null, "-ms-scrollbar-base-color"), "scrollbar-darkshadow-color" => array(null, null, null, "-ms-scrollbar-darkshadow-color"), "scrollbar-face-color" => array(null, null, null, "-ms-scrollbar-face-color"), "scrollbar-highlight-color" => array(null, null, null, "-ms-scrollbar-highlight-color"), "scrollbar-shadow-color" => array(null, null, null, "-ms-scrollbar-shadow-color"), "scrollbar-track-color" => array(null, null, null, "-ms-scrollbar-track-color"), "stack-sizing" => array("-moz-stack-sizing", null, null, null), "svg-shadow" => array(null, "-webkit-svg-shadow", null, null), "tab-size" => array("-moz-tab-size", null, "-o-tab-size", null), "table-baseline" => array(null, null, "-o-table-baseline", null), "text-align-last" => array(null, null, null, "-ms-text-align-last"), "text-autospace" => array(null, null, null, "-ms-text-autospace"), "text-combine" => array(null, "-webkit-text-combine", null, null), "text-decorations-in-effect" => array(null, "-webkit-text-decorations-in-effect", null, null), "text-emphasis" => array(null, "-webkit-text-emphasis", null, null), "text-emphasis-color" => array(null, "-webkit-text-emphasis-color", null, null), "text-emphasis-position" => array(null, "-webkit-text-emphasis-position", null, null), "text-emphasis-style" => array(null, "-webkit-text-emphasis-style", null, null), "text-fill-color" => array(null, "-webkit-text-fill-color", null, null), "text-justify" => array(null, null, null, "-ms-text-justify"), "text-kashida-space" => array(null, null, null, "-ms-text-kashida-space"), "text-overflow" => array(null, null, "-o-text-overflow", "-ms-text-overflow"), "text-security" => array(null, "-webkit-text-security", null, null), "text-size-adjust" => array(null, "-webkit-text-size-adjust", null, "-ms-text-size-adjust"), "text-stroke" => array(null, "-webkit-text-stroke", null, null), "text-stroke-color" => array(null, "-webkit-text-stroke-color", null, null), "text-stroke-width" => array(null, "-webkit-text-stroke-width", null, null), "text-underline-position" => array(null, null, null, "-ms-text-underline-position"), "transform" => array("-moz-transform", "-webkit-transform", "-o-transform", null), "transform-origin" => array("-moz-transform-origin", "-webkit-transform-origin", "-o-transform-origin", null), "transform-origin-x" => array(null, "-webkit-transform-origin-x", null, null), "transform-origin-y" => array(null, "-webkit-transform-origin-y", null, null), "transform-origin-z" => array(null, "-webkit-transform-origin-z", null, null), "transform-style" => array(null, "-webkit-transform-style", null, null), "transition" => array("-moz-transition", "-webkit-transition", "-o-transition", null), "transition-delay" => array("-moz-transition-delay", "-webkit-transition-delay", "-o-transition-delay", null), "transition-duration" => array("-moz-transition-duration", "-webkit-transition-duration", "-o-transition-duration", null), "transition-property" => array("-moz-transition-property", "-webkit-transition-property", "-o-transition-property", null), "transition-timing-function" => array("-moz-transition-timing-function", "-webkit-transition-timing-function", "-o-transition-timing-function", null), "user-drag" => array(null, "-webkit-user-drag", null, null), "user-focus" => array("-moz-user-focus", null, null, null), "user-input" => array("-moz-user-input", null, null, null), "user-modify" => array("-moz-user-modify", "-webkit-user-modify", null, null), "user-select" => array("-moz-user-select", "-webkit-user-select", null, null), "white-space" => array(__CLASS__, "whiteSpace"), "window-shadow" => array("-moz-window-shadow", null, null, null), "word-break" => array(null, null, null, "-ms-word-break"), "word-wrap" => array(null, null, null, "-ms-word-wrap"), "writing-mode" => array(null, "-webkit-writing-mode", null, "-ms-writing-mode"), "zoom" => array(null, null, null, "-ms-zoom") ); public function apply(array &$tokens) { $r = 0; $transformations = &$this->transformations; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssRulesetDeclarationToken") { $tProperty = $tokens[$i]->Property; if (isset($transformations[$tProperty])) { $result = array(); if (is_callable($transformations[$tProperty])) { $result = call_user_func_array($transformations[$tProperty], array($tokens[$i])); if (!is_array($result) && is_object($result)) { $result = array($result); } } else { $tValue = $tokens[$i]->Value; $tMediaTypes = $tokens[$i]->MediaTypes; foreach ($transformations[$tProperty] as $property) { if ($property !== null) { $result[] = new CssRulesetDeclarationToken($property, $tValue, $tMediaTypes); } } } if (count($result) > 0) { array_splice($tokens, $i + 1, 0, $result); $i += count($result); $l += count($result); } } } } return $r; } private static function filter($token) { $r = array ( new CssRulesetDeclarationToken("-ms-filter", "\"" . $token->Value . "\"", $token->MediaTypes), ); return $r; } private static function opacity($token) { $ieValue = (int) ((float) $token->Value * 100); $r = array ( new CssRulesetDeclarationToken("-ms-filter", "\"alpha(opacity=" . $ieValue . ")\"", $token->MediaTypes), new CssRulesetDeclarationToken("filter", "alpha(opacity=" . $ieValue . ")", $token->MediaTypes), new CssRulesetDeclarationToken("zoom", "1", $token->MediaTypes) ); return $r; } private static function whiteSpace($token) { if (strtolower($token->Value) === "pre-wrap") { $r = array ( new CssRulesetDeclarationToken("white-space", "-moz-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-webkit-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-o-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("word-wrap", "break-word", $token->MediaTypes) ); return $r; } else { return array(); } } } class CssConvertLevel3AtKeyframesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; $transformations = array("-moz-keyframes", "-webkit-keyframes"); for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtKeyframesStartToken") { for ($ii = $i; $ii < $l; $ii++) { if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") { break; } } if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") { $add = array(); $source = array(); for ($iii = $i; $iii <= $ii; $iii++) { $source[] = clone($tokens[$iii]); } foreach ($transformations as $transformation) { $t = array(); foreach ($source as $token) { $t[] = clone($token); } $t[0]->AtRuleName = $transformation; $add = array_merge($add, $t); } if (isset($this->configuration["RemoveSource"]) && $this->configuration["RemoveSource"] === true) { array_splice($tokens, $i, $ii - $i + 1, $add); } else { array_splice($tokens, $ii + 1, 0, $add); } $l = count($tokens); $i = $ii + count($add); $r += count($add); } } } return $r; } } class CssConvertHslColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/^hsl\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*%\s*,\s*([0-9]+)\s*%\s*\)/iS"; public function apply(aCssToken &$token) { if (stripos($token->Value, "hsl") !== false && preg_match($this->reMatch, $token->Value, $m)) { $token->Value = str_replace($m[0], $this->hsl2hex($m[1], $m[2], $m[3]), $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } private function hsl2hex($hue, $saturation, $lightness) { $hue = $hue / 360; $saturation = $saturation / 100; $lightness = $lightness / 100; if ($saturation == 0) { $red = $lightness * 255; $green = $lightness * 255; $blue = $lightness * 255; } else { if ($lightness < 0.5 ) { $v2 = $lightness * (1 + $saturation); } else { $v2 = ($lightness + $saturation) - ($saturation * $lightness); } $v1 = 2 * $lightness - $v2; $red = 255 * self::hue2rgb($v1, $v2, $hue + (1 / 3)); $green = 255 * self::hue2rgb($v1, $v2, $hue); $blue = 255 * self::hue2rgb($v1, $v2, $hue - (1 / 3)); } return "#" . str_pad(dechex(round($red)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($green)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($blue)), 2, "0", STR_PAD_LEFT); } private function hue2rgb($v1, $v2, $hue) { if ($hue < 0) { $hue += 1; } if ($hue > 1) { $hue -= 1; } if ((6 * $hue) < 1) { return ($v1 + ($v2 - $v1) * 6 * $hue); } if ((2 * $hue) < 1) { return ($v2); } if ((3 * $hue) < 2) { return ($v1 + ($v2 - $v1) * (( 2 / 3) - $hue) * 6); } return $v1; } } class CssConvertFontWeightMinifierPlugin extends aCssMinifierPlugin { private $include = array ( "font", "font-weight" ); private $reMatch = null; private $reReplace = "\"\${1}\" . \$this->transformation[\"\${2}\"] . \"\${3}\""; private $transformation = array ( "normal" => "400", "bold" => "700" ); public function __construct(CssMinifier $minifier) { $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)). ")(\s|$)+/eiS"; parent::__construct($minifier); } public function apply(aCssToken &$token) { if (in_array($token->Property, $this->include) && preg_match($this->reMatch, $token->Value, $m)) { $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressUnitValuesMinifierPlugin extends aCssMinifierPlugin { private $re = array ( "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}.\${2}\${4}", "/(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}0", "/(^0\s0\s0\s0)|(^0\s0\s0$)|(^0\s0$)/iS" => "0" ); private $reMatch = "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)|(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)|(^0\s0\s0\s0$)|(^0\s0\s0$)|(^0\s0$)/iS"; public function apply(aCssToken &$token) { if (preg_match($this->reMatch, $token->Value)) { foreach ($this->re as $reMatch => $reReplace) { $token->Value = preg_replace($reMatch, $reReplace, $token->Value); } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressExpressionValuesMinifierPlugin extends aCssMinifierPlugin { public function apply(aCssToken &$token) { if (class_exists("JSMin") && stripos($token->Value, "expression(") !== false) { $value = $token->Value; $value = substr($token->Value, stripos($token->Value, "expression(") + 10); $value = trim(JSMin::minify($value)); $token->Value = "expression(" . $value . ")"; } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressColorValuesMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/\#([0-9a-f]{6})/iS"; public function apply(aCssToken &$token) { if (strpos($token->Value, "#") !== false && preg_match($this->reMatch, $token->Value, $m)) { $value = strtolower($m[1]); if ($value[0] == $value[1] && $value[2] == $value[3] && $value[4] == $value[5]) { $token->Value = str_replace($m[0], "#" . $value[0] . $value[2] . $value[4], $token->Value); } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCommentToken extends aCssToken { public $Comment = ""; public function __construct($comment) { $this->Comment = $comment; } public function __toString() { return $this->Comment; } } class CssCommentParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("*", "/"); } public function getTriggerStates() { return false; } private $restoreBuffer = ""; public function parse($index, $char, $previousChar, $state) { if ($char === "*" && $previousChar === "/" && $state !== "T_COMMENT") { $this->parser->pushState("T_COMMENT"); $this->parser->setExclusive(__CLASS__); $this->restoreBuffer = substr($this->parser->getAndClearBuffer(), 0, -2); } elseif ($char === "/" && $previousChar === "*" && $state === "T_COMMENT") { $this->parser->popState(); $this->parser->unsetExclusive(); $this->parser->appendToken(new CssCommentToken("/*" . $this->parser->getAndClearBuffer())); $this->parser->setBuffer($this->restoreBuffer); } else { return false; } return true; } } class CssAtVariablesStartToken extends aCssAtBlockStartToken { public $MediaTypes = array(); public function __construct($mediaTypes = null) { $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); } public function __toString() { return ""; } } class CssAtVariablesParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_VARIABLES::PREPARE", "T_AT_VARIABLES", "T_AT_VARIABLES_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@variables") { $this->parser->pushState("T_AT_VARIABLES::PREPARE"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "{" && $state === "T_AT_VARIABLES::PREPARE") { $this->parser->setState("T_AT_VARIABLES"); $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); $this->parser->appendToken(new CssAtVariablesStartToken($mediaTypes)); } if ($char === ":" && $state === "T_AT_VARIABLES") { $this->buffer = $this->parser->getAndClearBuffer(":"); $this->parser->pushState("T_AT_VARIABLES_DECLARATION"); } elseif ($char === ":" && $state === "T_AT_VARIABLES_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @variables declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_VARIABLES_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtVariablesDeclarationToken($this->buffer, $value, $isImportant)); $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_VARIABLES") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtVariablesEndToken()); } else { return false; } return true; } } class CssAtVariablesEndToken extends aCssAtBlockEndToken { public function __toString() { return ""; } } class CssAtVariablesDeclarationToken extends aCssDeclarationToken { public function __toString() { return ""; } } class CssAtPageStartToken extends aCssAtBlockStartToken { public $Selector = ""; public function __construct($selector = "") { $this->Selector = $selector; } public function __toString() { return "@page" . ($this->Selector ? " " . $this->Selector : "") . "{"; } } class CssAtPageParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_PAGE::SELECTOR", "T_AT_PAGE", "T_AT_PAGE_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 5)) === "@page") { $this->parser->pushState("T_AT_PAGE::SELECTOR"); $this->parser->clearBuffer(); return $index + 5; } elseif ($char === "{" && $state === "T_AT_PAGE::SELECTOR") { $selector = $this->parser->getAndClearBuffer("{"); $this->parser->setState("T_AT_PAGE"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtPageStartToken($selector)); } elseif ($char === ":" && $state === "T_AT_PAGE") { $this->parser->pushState("T_AT_PAGE_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":", true); } elseif ($char === ":" && $state === "T_AT_PAGE_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @page declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state == "T_AT_PAGE_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) == "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtPageDeclarationToken($this->buffer, $value, $isImportant)); if ($char === "}") { $this->parser->popState(); $this->parser->appendToken(new CssAtPageEndToken()); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_PAGE") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtPageEndToken()); } else { return false; } return true; } } class CssAtPageEndToken extends aCssAtBlockEndToken { } class CssAtPageDeclarationToken extends aCssDeclarationToken { } class CssAtMediaStartToken extends aCssAtBlockStartToken { public function __construct(array $mediaTypes = array()) { $this->MediaTypes = $mediaTypes; } public function __toString() { return "@media " . implode(",", $this->MediaTypes) . "{"; } } class CssAtMediaParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_MEDIA::PREPARE", "T_AT_MEDIA"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 6)) === "@media") { $this->parser->pushState("T_AT_MEDIA::PREPARE"); $this->parser->clearBuffer(); return $index + 6; } elseif ($char === "{" && $state === "T_AT_MEDIA::PREPARE") { $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); $this->parser->setMediaTypes($mediaTypes); $this->parser->setState("T_AT_MEDIA"); $this->parser->appendToken(new CssAtMediaStartToken($mediaTypes)); } elseif ($char === "}" && $state === "T_AT_MEDIA") { $this->parser->appendToken(new CssAtMediaEndToken()); $this->parser->clearBuffer(); $this->parser->unsetMediaTypes(); $this->parser->popState(); } else { return false; } return true; } } class CssAtMediaEndToken extends aCssAtBlockEndToken { } class CssAtKeyframesStartToken extends aCssAtBlockStartToken { public $AtRuleName = "keyframes"; public $Name = ""; public function __construct($name, $atRuleName = null) { $this->Name = $name; if (!is_null($atRuleName)) { $this->AtRuleName = $atRuleName; } } public function __toString() { return "@" . $this->AtRuleName . " \"" . $this->Name . "\"{"; } } class CssAtKeyframesRulesetStartToken extends aCssRulesetStartToken { public $Selectors = array(); public function __construct(array $selectors = array()) { $this->Selectors = $selectors; } public function __toString() { return implode(",", $this->Selectors) . "{"; } } class CssAtKeyframesRulesetEndToken extends aCssRulesetEndToken { } class CssAtKeyframesRulesetDeclarationToken extends aCssDeclarationToken { } class CssAtKeyframesParserPlugin extends aCssParserPlugin { private $atRuleName = ""; private $selectors = array(); public function getTriggerChars() { return array("@", "{", "}", ":", ",", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_KEYFRAMES::NAME", "T_AT_KEYFRAMES", "T_AT_KEYFRAMES_RULESETS", "T_AT_KEYFRAMES_RULESET", "T_AT_KEYFRAMES_RULESET_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@keyframes") { $this->atRuleName = "keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 15)) === "@-moz-keyframes") { $this->atRuleName = "-moz-keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 15; } elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 18)) === "@-webkit-keyframes") { $this->atRuleName = "-webkit-keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 18; } elseif ($char === "{" && $state === "T_AT_KEYFRAMES::NAME") { $name = $this->parser->getAndClearBuffer("{\"'"); $this->parser->setState("T_AT_KEYFRAMES_RULESETS"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtKeyframesStartToken($name, $this->atRuleName)); } if ($char === "," && $state === "T_AT_KEYFRAMES_RULESETS") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); } elseif ($char === "{" && $state === "T_AT_KEYFRAMES_RULESETS") { if ($this->parser->getBuffer() !== "") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); $this->parser->pushState("T_AT_KEYFRAMES_RULESET"); $this->parser->appendToken(new CssAtKeyframesRulesetStartToken($this->selectors)); $this->selectors = array(); } } elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET") { $this->parser->pushState("T_AT_KEYFRAMES_RULESET_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":;", true); } elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @keyframes ruleset declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesRulesetDeclarationToken($this->buffer, $value, $isImportant)); if ($char === "}") { $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); $this->parser->popState(); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESET") { $this->parser->clearBuffer(); $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); } elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESETS") { $this->parser->clearBuffer(); $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesEndToken()); } else { return false; } return true; } } class CssAtKeyframesEndToken extends aCssAtBlockEndToken { } class CssAtImportToken extends aCssToken { public $Import = ""; public $MediaTypes = array(); public function __construct($import, $mediaTypes) { $this->Import = $import; $this->MediaTypes = $mediaTypes ? $mediaTypes : array(); } public function __toString() { return "@import \"" . $this->Import . "\"" . (count($this->MediaTypes) > 0 ? " " . implode(",", $this->MediaTypes) : ""). ";"; } } class CssAtImportParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", ";", ",", "\n"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_IMPORT"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 7)) === "@import") { $this->parser->pushState("T_AT_IMPORT"); $this->parser->clearBuffer(); return $index + 7; } elseif (($char === ";" || $char === "\n") && $state === "T_AT_IMPORT") { $this->buffer = $this->parser->getAndClearBuffer(";"); $pos = false; foreach (array(")", "\"", "'") as $needle) { if (($pos = strrpos($this->buffer, $needle)) !== false) { break; } } $import = substr($this->buffer, 0, $pos + 1); if (stripos($import, "url(") === 0) { $import = substr($import, 4, -1); } $import = trim($import, " \t\n\r\0\x0B'\""); $mediaTypes = array_filter(array_map("trim", explode(",", trim(substr($this->buffer, $pos + 1), " \t\n\r\0\x0B{")))); if ($pos) { $this->parser->appendToken(new CssAtImportToken($import, $mediaTypes)); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Invalid @import at-rule syntax", $this->parser->buffer)); } $this->parser->popState(); } else { return false; } return true; } } class CssAtFontFaceStartToken extends aCssAtBlockStartToken { public function __toString() { return "@font-face{"; } } class CssAtFontFaceParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_FONT_FACE::PREPARE", "T_AT_FONT_FACE", "T_AT_FONT_FACE_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@font-face") { $this->parser->pushState("T_AT_FONT_FACE::PREPARE"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "{" && $state === "T_AT_FONT_FACE::PREPARE") { $this->parser->setState("T_AT_FONT_FACE"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtFontFaceStartToken()); } elseif ($char === ":" && $state === "T_AT_FONT_FACE") { $this->parser->pushState("T_AT_FONT_FACE_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":", true); } elseif ($char === ":" && $state === "T_AT_FONT_FACE_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @font-face declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_FONT_FACE_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtFontFaceDeclarationToken($this->buffer, $value, $isImportant)); $this->buffer = ""; if ($char === "}") { $this->parser->appendToken(new CssAtFontFaceEndToken()); $this->parser->popState(); } } elseif ($char === "}" && $state === "T_AT_FONT_FACE") { $this->parser->appendToken(new CssAtFontFaceEndToken()); $this->parser->clearBuffer(); $this->parser->popState(); } else { return false; } return true; } } class CssAtFontFaceEndToken extends aCssAtBlockEndToken { } class CssAtFontFaceDeclarationToken extends aCssDeclarationToken { } class CssAtCharsetToken extends aCssToken { public $Charset = ""; public function __construct($charset) { $this->Charset = $charset; } public function __toString() { return "@charset " . $this->Charset . ";"; } } class CssAtCharsetParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", ";", "\n"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_CHARSET"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 8)) === "@charset") { $this->parser->pushState("T_AT_CHARSET"); $this->parser->clearBuffer(); return $index + 8; } elseif (($char === ";" || $char === "\n") && $state === "T_AT_CHARSET") { $charset = $this->parser->getAndClearBuffer(";"); $this->parser->popState(); $this->parser->appendToken(new CssAtCharsetToken($charset)); } else { return false; } return true; } } 
+?>
Index: /tags/2.6.0RC1/include/dblayer/functions_mysql.inc.php
===================================================================
--- /tags/2.6.0RC1/include/dblayer/functions_mysql.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/dblayer/functions_mysql.inc.php	(revision 25596)
@@ -0,0 +1,763 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('DB_ENGINE', 'MySQL');
+define('REQUIRED_MYSQL_VERSION', '5.0.0');
+
+define('DB_REGEX_OPERATOR', 'REGEXP');
+define('DB_RANDOM_FUNCTION', 'RAND');
+
+/**
+ *
+ * simple functions
+ *
+ */
+
+function pwg_db_connect($host, $user, $password, $database)
+{  
+  $link = @mysql_connect($host, $user, $password);
+  if (!$link)
+  {
+    throw new Exception("Can't connect to server");
+  }
+  if (!mysql_select_db($database, $link))
+  {
+    throw new Exception('Connection to server succeed, but it was impossible to connect to database');
+  }
+}
+
+function pwg_db_check_charset() 
+{
+  $db_charset = 'utf8';
+  if (defined('DB_CHARSET') and DB_CHARSET != '')
+  {
+    $db_charset = DB_CHARSET;
+  }
+  pwg_query('SET NAMES "'.$db_charset.'"');
+}
+
+function pwg_db_check_version()
+{
+  $current_mysql = pwg_get_db_version();
+  if (version_compare($current_mysql, REQUIRED_MYSQL_VERSION, '<'))
+  {
+    fatal_error(
+      sprintf(
+        'your MySQL version is too old, you have "%s" and you need at least "%s"',
+        $current_mysql,
+        REQUIRED_MYSQL_VERSION
+        )
+      );
+  }
+}
+
+function pwg_get_db_version() 
+{
+  return mysql_get_server_info();
+}
+
+function pwg_query($query)
+{
+  global $conf,$page,$debug,$t2;
+
+  $start = microtime(true);
+  ($result = mysql_query($query)) or my_error($query, $conf['die_on_sql_error']);
+
+  $time = microtime(true) - $start;
+
+  if (!isset($page['count_queries']))
+  {
+    $page['count_queries'] = 0;
+    $page['queries_time'] = 0;
+  }
+
+  $page['count_queries']++;
+  $page['queries_time']+= $time;
+
+  if ($conf['show_queries'])
+  {
+    $output = '';
+    $output.= '<pre>['.$page['count_queries'].'] ';
+    $output.= "\n".$query;
+    $output.= "\n".'(this query time : ';
+    $output.= '<b>'.number_format($time, 3, '.', ' ').' s)</b>';
+    $output.= "\n".'(total SQL time  : ';
+    $output.= number_format($page['queries_time'], 3, '.', ' ').' s)';
+    $output.= "\n".'(total time      : ';
+    $output.= number_format( ($time+$start-$t2), 3, '.', ' ').' s)';
+    if ( $result!=null and preg_match('/\s*SELECT\s+/i',$query) )
+    {
+      $output.= "\n".'(num rows        : ';
+      $output.= mysql_num_rows($result).' )';
+    }
+    elseif ( $result!=null
+      and preg_match('/\s*INSERT|UPDATE|REPLACE|DELETE\s+/i',$query) )
+    {
+      $output.= "\n".'(affected rows   : ';
+      $output.= mysql_affected_rows().' )';
+    }
+    $output.= "</pre>\n";
+
+    $debug .= $output;
+  }
+
+  return $result;
+}
+
+function pwg_db_nextval($column, $table)
+{
+  $query = '
+SELECT IF(MAX('.$column.')+1 IS NULL, 1, MAX('.$column.')+1)
+  FROM '.$table;
+  list($next) = pwg_db_fetch_row(pwg_query($query));
+
+  return $next;
+}
+
+function pwg_db_changes() 
+{
+  return mysql_affected_rows();
+}
+
+function pwg_db_num_rows($result) 
+{
+  return mysql_num_rows($result);
+}
+
+function pwg_db_fetch_array($result)
+{
+  return mysql_fetch_array($result);
+}
+
+function pwg_db_fetch_assoc($result)
+{
+  return mysql_fetch_assoc($result);
+}
+
+function pwg_db_fetch_row($result)
+{
+  return mysql_fetch_row($result);
+}
+
+function pwg_db_fetch_object($result)
+{
+  return mysql_fetch_object($result);
+}
+
+function pwg_db_free_result($result) 
+{
+  return mysql_free_result($result);
+}
+
+function pwg_db_real_escape_string($s)
+{
+  return mysql_real_escape_string($s);
+}
+
+function pwg_db_insert_id()
+{
+  return mysql_insert_id();
+}
+
+function pwg_db_errno()
+{
+  return mysql_errno();
+}
+
+function pwg_db_error()
+{
+  return mysql_error();
+}
+
+function pwg_db_close()
+{
+  return mysql_close();
+}
+
+/**
+ *
+ * complex functions
+ *
+ */
+
+define('MASS_UPDATES_SKIP_EMPTY', 1);
+/**
+ * updates multiple lines in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array datas
+ * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
+ * @return void
+ */
+function mass_updates($tablename, $dbfields, $datas, $flags=0)
+{
+  if (count($datas) == 0)
+    return;
+  
+  // depending on the MySQL version, we use the multi table update or N update queries
+  if (count($datas) < 10)
+  {
+    foreach ($datas as $data)
+    {
+      $query = '
+UPDATE '.$tablename.'
+  SET ';
+      $is_first = true;
+      foreach ($dbfields['update'] as $key)
+      {
+        $separator = $is_first ? '' : ",\n    ";
+
+        if (isset($data[$key]) and $data[$key] != '')
+        {
+          $query.= $separator.$key.' = \''.$data[$key].'\'';
+        }
+        else
+        {
+          if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+            continue; // next field
+          $query.= "$separator$key = NULL";
+        }
+        $is_first = false;
+      }
+      if (!$is_first)
+      {// only if one field at least updated
+        $query.= '
+  WHERE ';
+        $is_first = true;
+        foreach ($dbfields['primary'] as $key)
+        {
+          if (!$is_first)
+          {
+            $query.= ' AND ';
+          }
+          if ( isset($data[$key]) )
+          {
+            $query.= $key.' = \''.$data[$key].'\'';
+          }
+          else
+          {
+            $query.= $key.' IS NULL';
+          }
+          $is_first = false;
+        }
+        pwg_query($query);
+      }
+    } // foreach update
+  } // if mysql_ver or count<X
+  else
+  {
+    // creation of the temporary table
+    $query = '
+SHOW FULL COLUMNS FROM '.$tablename;
+    $result = pwg_query($query);
+    $columns = array();
+    $all_fields = array_merge($dbfields['primary'], $dbfields['update']);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if (in_array($row['Field'], $all_fields))
+      {
+        $column = $row['Field'];
+        $column.= ' '.$row['Type'];
+
+        $nullable = true;
+        if (!isset($row['Null']) or $row['Null'] == '' or $row['Null']=='NO')
+        {
+          $column.= ' NOT NULL';
+          $nullable = false;
+        }
+        if (isset($row['Default']))
+        {
+          $column.= " default '".$row['Default']."'";
+        }
+        elseif ($nullable)
+        {
+          $column.= " default NULL";
+        }
+        if (isset($row['Collation']) and $row['Collation'] != 'NULL')
+        {
+          $column.= " collate '".$row['Collation']."'";
+        }
+        $columns[] = $column;
+      }
+    }
+
+    $temporary_tablename = $tablename.'_'.micro_seconds();
+
+    $query = '
+CREATE TABLE '.$temporary_tablename.'
+(
+  '.implode(",\n  ", $columns).',
+  UNIQUE KEY the_key ('.implode(',', $dbfields['primary']).')
+)';
+
+    pwg_query($query);
+    mass_inserts($temporary_tablename, $all_fields, $datas);
+    if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+      $func_set = create_function('$s', 'return "t1.$s = IFNULL(t2.$s, t1.$s)";');
+    else
+      $func_set = create_function('$s', 'return "t1.$s = t2.$s";');
+
+    // update of images table by joining with temporary table
+    $query = '
+UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2
+  SET '.
+      implode(
+        "\n    , ",
+        array_map($func_set,$dbfields['update'])
+        ).'
+  WHERE '.
+      implode(
+        "\n    AND ",
+        array_map(
+          create_function('$s', 'return "t1.$s = t2.$s";'),
+          $dbfields['primary']
+          )
+        );
+    pwg_query($query);
+    $query = '
+DROP TABLE '.$temporary_tablename;
+    pwg_query($query);
+  }
+}
+
+/**
+ * updates one line in a table
+ *
+ * @param string table_name
+ * @param array set_fields
+ * @param array where_fields
+ * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
+ * @return void
+ */
+function single_update($tablename, $set_fields, $where_fields, $flags=0)
+{
+  if (count($set_fields) == 0)
+  {
+    return;
+  }
+
+  $query = '
+UPDATE '.$tablename.'
+  SET ';
+  $is_first = true;
+  foreach ($set_fields as $key => $value)
+  {
+    $separator = $is_first ? '' : ",\n    ";
+
+    if (isset($value) and $value !== '')
+    {
+      $query.= $separator.$key.' = \''.$value.'\'';
+    }
+    else
+    {
+      if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+        continue; // next field
+      $query.= "$separator$key = NULL";
+    }
+    $is_first = false;
+  }
+  if (!$is_first)
+  {// only if one field at least updated
+    $query.= '
+  WHERE ';
+    $is_first = true;
+    foreach ($where_fields as $key => $value)
+    {
+      if (!$is_first)
+      {
+        $query.= ' AND ';
+      }
+      if ( isset($value) )
+      {
+        $query.= $key.' = \''.$value.'\'';
+      }
+      else
+      {
+        $query.= $key.' IS NULL';
+      }
+      $is_first = false;
+    }
+    pwg_query($query);
+  }
+}
+
+
+/**
+ * inserts multiple lines in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array inserts
+ * @return void
+ */
+function mass_inserts($table_name, $dbfields, $datas, $options=array())
+{
+  $ignore = '';
+  if (isset($options['ignore']) and $options['ignore'])
+  {
+    $ignore = 'IGNORE';
+  }
+  
+  if (count($datas) != 0)
+  {
+    $first = true;
+
+    $query = 'SHOW VARIABLES LIKE \'max_allowed_packet\'';
+    list(, $packet_size) = pwg_db_fetch_row(pwg_query($query));
+    $packet_size = $packet_size - 2000; // The last list of values MUST not exceed 2000 character*/
+    $query = '';
+
+    foreach ($datas as $insert)
+    {
+      if (strlen($query) >= $packet_size)
+      {
+        pwg_query($query);
+        $first = true;
+      }
+
+      if ($first)
+      {
+        $query = '
+INSERT '.$ignore.' INTO '.$table_name.'
+  ('.implode(',', $dbfields).')
+  VALUES';
+        $first = false;
+      }
+      else
+      {
+        $query .= '
+  , ';
+      }
+
+      $query .= '(';
+      foreach ($dbfields as $field_id => $dbfield)
+      {
+        if ($field_id > 0)
+        {
+          $query .= ',';
+        }
+
+        if (!isset($insert[$dbfield]) or $insert[$dbfield] === '')
+        {
+          $query .= 'NULL';
+        }
+        else
+        {
+          $query .= "'".$insert[$dbfield]."'";
+        }
+      }
+      $query .= ')';
+    }
+    pwg_query($query);
+  }
+}
+
+/**
+ * inserts one line in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array insert
+ * @return void
+ */
+function single_insert($table_name, $data)
+{
+  if (count($data) != 0)
+  {
+    $query = '
+INSERT INTO '.$table_name.'
+  ('.implode(',', array_keys($data)).')
+  VALUES';
+
+    $query .= '(';
+    $is_first = true;
+    foreach ($data as $key => $value)
+    {
+      if (!$is_first)
+      {
+        $query .= ',';
+      }
+      else
+      {
+        $is_first = false;
+      }
+      
+      if ($value === '')
+      {
+        $query .= 'NULL';
+      }
+      else
+      {
+        $query .= "'".$value."'";
+      }
+    }
+    $query .= ')';
+    
+    pwg_query($query);
+  }
+}
+
+/**
+ * Do maintenance on all PWG tables
+ *
+ * @return none
+ */
+function do_maintenance_all_tables()
+{
+  global $prefixeTable, $page;
+
+  $all_tables = array();
+
+  // List all tables
+  $query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\'';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_row($result))
+  {
+    $all_tables[] = $row[0];
+  }
+
+  // Repair all tables
+  $query = 'REPAIR TABLE '.implode(', ', $all_tables);
+  $mysql_rc = pwg_query($query);
+
+  // Re-Order all tables
+  foreach ($all_tables as $table_name)
+  {
+    $all_primary_key = array();
+
+    $query = 'DESC '.$table_name.';';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if ($row['Key'] == 'PRI')
+      {
+        $all_primary_key[] = $row['Field'];
+      }
+    }
+
+    if (count($all_primary_key) != 0)
+    {
+      $query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';';
+      $mysql_rc = $mysql_rc && pwg_query($query);
+    }
+  }
+
+  // Optimize all tables
+  $query = 'OPTIMIZE TABLE '.implode(', ', $all_tables);
+  $mysql_rc = $mysql_rc && pwg_query($query);
+  if ($mysql_rc)
+  {
+    $page['infos'][] = l10n('All optimizations have been successfully completed.');
+  }
+  else
+  {
+    $page['errors'][] = l10n('Optimizations have been completed with some errors.');
+  }
+}
+
+function pwg_db_concat($array)
+{
+  $string = implode($array, ',');
+  return 'CONCAT('. $string.')';
+}
+
+function pwg_db_concat_ws($array, $separator)
+{
+  $string = implode($array, ',');
+  return 'CONCAT_WS(\''.$separator.'\','. $string.')';
+}
+
+function pwg_db_cast_to_text($string)
+{
+  return $string;
+}
+
+/**
+ * returns an array containing the possible values of an enum field
+ *
+ * @param string tablename
+ * @param string fieldname
+ */
+function get_enums($table, $field)
+{
+  // retrieving the properties of the table. Each line represents a field :
+  // columns are 'Field', 'Type'
+  $result = pwg_query('desc '.$table);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    // we are only interested in the the field given in parameter for the
+    // function
+    if ($row['Field'] == $field)
+    {
+      // retrieving possible values of the enum field
+      // enum('blue','green','black')
+      $options = explode(',', substr($row['Type'], 5, -1));
+      foreach ($options as $i => $option)
+      {
+        $options[$i] = str_replace("'", '',$option);
+      }
+    }
+  }
+  pwg_db_free_result($result);
+  return $options;
+}
+
+/**
+ * Smartly checks if a variable is equivalent to true or false
+ *
+ * @param mixed input
+ * @return bool
+ */
+function get_boolean($input)
+{
+  if ('false' === strtolower($input))
+  {
+    return false;
+  }
+
+  return (bool)$input;
+}
+
+/**
+ * returns boolean string 'true' or 'false' if the given var is boolean
+ *
+ * @param mixed $var
+ * @return mixed
+ */
+function boolean_to_string($var)
+{
+  if (is_bool($var))
+  {
+    return $var ? 'true' : 'false';
+  }
+  else
+  {
+    return $var;
+  }
+}
+
+/**
+ *
+ * interval and date functions 
+ *
+ */
+
+function pwg_db_get_recent_period_expression($period, $date='CURRENT_DATE')
+{
+  if ($date!='CURRENT_DATE')
+  {
+    $date = '\''.$date.'\'';
+  }
+
+  return 'SUBDATE('.$date.',INTERVAL '.$period.' DAY)';
+}
+
+function pwg_db_get_recent_period($period, $date='CURRENT_DATE')
+{
+  $query = '
+SELECT '.pwg_db_get_recent_period_expression($period);
+  list($d) = pwg_db_fetch_row(pwg_query($query));
+
+  return $d;
+}
+
+function pwg_db_get_flood_period_expression($seconds)
+{
+  return 'SUBDATE(now(), INTERVAL '.$seconds.' SECOND)';
+}
+
+function pwg_db_get_hour($date) 
+{
+  return 'hour('.$date.')';
+}
+
+function pwg_db_get_date_YYYYMM($date)
+{
+  return 'DATE_FORMAT('.$date.', \'%Y%m\')';
+}
+
+function pwg_db_get_date_MMDD($date)
+{
+  return 'DATE_FORMAT('.$date.', \'%m%d\')';
+}
+
+function pwg_db_get_year($date)
+{
+  return 'YEAR('.$date.')';
+}
+
+function pwg_db_get_month($date)
+{
+  return 'MONTH('.$date.')';
+}
+
+function pwg_db_get_week($date, $mode=null)
+{
+  if ($mode)
+  {
+    return 'WEEK('.$date.', '.$mode.')';
+  }
+  else
+  {
+    return 'WEEK('.$date.')';
+  }
+}
+
+function pwg_db_get_dayofmonth($date)
+{
+  return 'DAYOFMONTH('.$date.')';
+}
+
+function pwg_db_get_dayofweek($date)
+{
+  return 'DAYOFWEEK('.$date.')';
+}
+
+function pwg_db_get_weekday($date)
+{
+  return 'WEEKDAY('.$date.')';
+}
+
+function pwg_db_date_to_ts($date) 
+{
+  return 'UNIX_TIMESTAMP('.$date.')';
+}
+
+// my_error returns (or send to standard output) the message concerning the
+// error occured for the last mysql query.
+function my_error($header, $die)
+{
+  $error = "[mysql error ".mysql_errno().'] '.mysql_error()."\n";
+  $error .= $header;
+
+  if ($die)
+  {
+    fatal_error($error);
+  }
+  echo("<pre>");
+  trigger_error($error, E_USER_WARNING);
+  echo("</pre>");
+}
+
+?>
Index: /tags/2.6.0RC1/include/dblayer/functions_mysqli.inc.php
===================================================================
--- /tags/2.6.0RC1/include/dblayer/functions_mysqli.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/dblayer/functions_mysqli.inc.php	(revision 25596)
@@ -0,0 +1,802 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2012 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('DB_ENGINE', 'MySQL');
+define('REQUIRED_MYSQL_VERSION', '5.0.0');
+
+define('DB_REGEX_OPERATOR', 'REGEXP');
+define('DB_RANDOM_FUNCTION', 'RAND');
+
+/**
+ *
+ * simple functions
+ *
+ */
+
+function pwg_db_connect($host, $user, $password, $database)
+{
+  global $mysqli;
+
+  // $host can be:
+  //
+  // $host = localhost
+  // $host = 1.2.3.4:3405
+  // $host = /path/to/socket
+
+  $port = null;
+  $socket = null;
+  
+  if (strpos($host, '/') === 0)
+  {
+    $socket = $host;
+    $host = null;
+  }
+  elseif (strpos($host, ':') !== false)
+  {
+    list($host, $port) = explode(':', $host);
+  }
+
+  $dbname = null;
+  
+  $mysqli = new mysqli($host, $user, $password, $dbname, $port, $socket);
+  if (mysqli_connect_error())
+  {
+    throw new Exception("Can't connect to server");
+  }
+  if (!$mysqli->select_db($database))
+  {
+    throw new Exception('Connection to server succeed, but it was impossible to connect to database');
+  }
+}
+
+function pwg_db_check_charset() 
+{
+  $db_charset = 'utf8';
+  if (defined('DB_CHARSET') and DB_CHARSET != '')
+  {
+    $db_charset = DB_CHARSET;
+  }
+  pwg_query('SET NAMES "'.$db_charset.'"');
+}
+
+function pwg_db_check_version()
+{
+  $current_mysql = pwg_get_db_version();
+  if (version_compare($current_mysql, REQUIRED_MYSQL_VERSION, '<'))
+  {
+    fatal_error(
+      sprintf(
+        'your MySQL version is too old, you have "%s" and you need at least "%s"',
+        $current_mysql,
+        REQUIRED_MYSQL_VERSION
+        )
+      );
+  }
+}
+
+function pwg_get_db_version() 
+{
+  global $mysqli;
+  
+  return $mysqli->server_info;
+}
+
+function pwg_query($query)
+{
+  global $mysqli, $conf, $page, $debug, $t2;
+
+  $start = microtime(true);
+  ($result = $mysqli->query($query)) or my_error($query, $conf['die_on_sql_error']);
+
+  $time = microtime(true) - $start;
+
+  if (!isset($page['count_queries']))
+  {
+    $page['count_queries'] = 0;
+    $page['queries_time'] = 0;
+  }
+
+  $page['count_queries']++;
+  $page['queries_time']+= $time;
+
+  if ($conf['show_queries'])
+  {
+    $output = '';
+    $output.= '<pre>['.$page['count_queries'].'] ';
+    $output.= "\n".$query;
+    $output.= "\n".'(this query time : ';
+    $output.= '<b>'.number_format($time, 3, '.', ' ').' s)</b>';
+    $output.= "\n".'(total SQL time  : ';
+    $output.= number_format($page['queries_time'], 3, '.', ' ').' s)';
+    $output.= "\n".'(total time      : ';
+    $output.= number_format( ($time+$start-$t2), 3, '.', ' ').' s)';
+    if ( $result!=null and preg_match('/\s*SELECT\s+/i',$query) )
+    {
+      $output.= "\n".'(num rows        : ';
+      $output.= pwg_db_num_rows($result).' )';
+    }
+    elseif ( $result!=null
+      and preg_match('/\s*INSERT|UPDATE|REPLACE|DELETE\s+/i',$query) )
+    {
+      $output.= "\n".'(affected rows   : ';
+      $output.= pwg_db_changes().' )';
+    }
+    $output.= "</pre>\n";
+
+    $debug .= $output;
+  }
+
+  return $result;
+}
+
+function pwg_db_nextval($column, $table)
+{
+  $query = '
+SELECT IF(MAX('.$column.')+1 IS NULL, 1, MAX('.$column.')+1)
+  FROM '.$table;
+  list($next) = pwg_db_fetch_row(pwg_query($query));
+
+  return $next;
+}
+
+function pwg_db_changes() 
+{
+  global $mysqli;
+  
+  return $mysqli->affected_rows;
+}
+
+function pwg_db_num_rows($result) 
+{
+  return $result->num_rows;
+}
+
+function pwg_db_fetch_array($result)
+{
+  return $result->fetch_array();
+}
+
+function pwg_db_fetch_assoc($result)
+{
+  return $result->fetch_assoc();
+}
+
+function pwg_db_fetch_row($result)
+{
+  return $result->fetch_row();
+}
+
+function pwg_db_fetch_object($result)
+{
+  return $result->fetch_object();
+}
+
+function pwg_db_free_result($result) 
+{
+  return $result->free_result();
+}
+
+function pwg_db_real_escape_string($s)
+{
+  global $mysqli;
+  
+  return $mysqli->real_escape_string($s);
+}
+
+function pwg_db_insert_id()
+{
+  global $mysqli;
+  
+  return $mysqli->insert_id;
+}
+
+function pwg_db_errno()
+{
+  global $mysqli;
+  
+  return $mysqli->errno;
+}
+
+function pwg_db_error()
+{
+  global $mysqli;
+  
+  return $mysqli->error;
+}
+
+function pwg_db_close()
+{
+  global $mysqli;
+  
+  return $mysqli->close();
+}
+
+/**
+ *
+ * complex functions
+ *
+ */
+
+define('MASS_UPDATES_SKIP_EMPTY', 1);
+/**
+ * updates multiple lines in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array datas
+ * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
+ * @return void
+ */
+function mass_updates($tablename, $dbfields, $datas, $flags=0)
+{
+  if (count($datas) == 0)
+    return;
+  
+  // depending on the MySQL version, we use the multi table update or N update queries
+  if (count($datas) < 10)
+  {
+    foreach ($datas as $data)
+    {
+      $query = '
+UPDATE '.$tablename.'
+  SET ';
+      $is_first = true;
+      foreach ($dbfields['update'] as $key)
+      {
+        $separator = $is_first ? '' : ",\n    ";
+
+        if (isset($data[$key]) and $data[$key] != '')
+        {
+          $query.= $separator.$key.' = \''.$data[$key].'\'';
+        }
+        else
+        {
+          if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+            continue; // next field
+          $query.= "$separator$key = NULL";
+        }
+        $is_first = false;
+      }
+      if (!$is_first)
+      {// only if one field at least updated
+        $query.= '
+  WHERE ';
+        $is_first = true;
+        foreach ($dbfields['primary'] as $key)
+        {
+          if (!$is_first)
+          {
+            $query.= ' AND ';
+          }
+          if ( isset($data[$key]) )
+          {
+            $query.= $key.' = \''.$data[$key].'\'';
+          }
+          else
+          {
+            $query.= $key.' IS NULL';
+          }
+          $is_first = false;
+        }
+        pwg_query($query);
+      }
+    } // foreach update
+  } // if mysqli_ver or count<X
+  else
+  {
+    // creation of the temporary table
+    $query = '
+SHOW FULL COLUMNS FROM '.$tablename;
+    $result = pwg_query($query);
+    $columns = array();
+    $all_fields = array_merge($dbfields['primary'], $dbfields['update']);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if (in_array($row['Field'], $all_fields))
+      {
+        $column = $row['Field'];
+        $column.= ' '.$row['Type'];
+
+        $nullable = true;
+        if (!isset($row['Null']) or $row['Null'] == '' or $row['Null']=='NO')
+        {
+          $column.= ' NOT NULL';
+          $nullable = false;
+        }
+        if (isset($row['Default']))
+        {
+          $column.= " default '".$row['Default']."'";
+        }
+        elseif ($nullable)
+        {
+          $column.= " default NULL";
+        }
+        if (isset($row['Collation']) and $row['Collation'] != 'NULL')
+        {
+          $column.= " collate '".$row['Collation']."'";
+        }
+        $columns[] = $column;
+      }
+    }
+
+    $temporary_tablename = $tablename.'_'.micro_seconds();
+
+    $query = '
+CREATE TABLE '.$temporary_tablename.'
+(
+  '.implode(",\n  ", $columns).',
+  UNIQUE KEY the_key ('.implode(',', $dbfields['primary']).')
+)';
+
+    pwg_query($query);
+    mass_inserts($temporary_tablename, $all_fields, $datas);
+    if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+      $func_set = create_function('$s', 'return "t1.$s = IFNULL(t2.$s, t1.$s)";');
+    else
+      $func_set = create_function('$s', 'return "t1.$s = t2.$s";');
+
+    // update of images table by joining with temporary table
+    $query = '
+UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2
+  SET '.
+      implode(
+        "\n    , ",
+        array_map($func_set,$dbfields['update'])
+        ).'
+  WHERE '.
+      implode(
+        "\n    AND ",
+        array_map(
+          create_function('$s', 'return "t1.$s = t2.$s";'),
+          $dbfields['primary']
+          )
+        );
+    pwg_query($query);
+    $query = '
+DROP TABLE '.$temporary_tablename;
+    pwg_query($query);
+  }
+}
+
+/**
+ * updates one line in a table
+ *
+ * @param string table_name
+ * @param array set_fields
+ * @param array where_fields
+ * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
+ * @return void
+ */
+function single_update($tablename, $set_fields, $where_fields, $flags=0)
+{
+  if (count($set_fields) == 0)
+  {
+    return;
+  }
+
+  $query = '
+UPDATE '.$tablename.'
+  SET ';
+  $is_first = true;
+  foreach ($set_fields as $key => $value)
+  {
+    $separator = $is_first ? '' : ",\n    ";
+
+    if (isset($value) and $value !== '')
+    {
+      $query.= $separator.$key.' = \''.$value.'\'';
+    }
+    else
+    {
+      if ( $flags & MASS_UPDATES_SKIP_EMPTY )
+        continue; // next field
+      $query.= "$separator$key = NULL";
+    }
+    $is_first = false;
+  }
+  if (!$is_first)
+  {// only if one field at least updated
+    $query.= '
+  WHERE ';
+    $is_first = true;
+    foreach ($where_fields as $key => $value)
+    {
+      if (!$is_first)
+      {
+        $query.= ' AND ';
+      }
+      if ( isset($value) )
+      {
+        $query.= $key.' = \''.$value.'\'';
+      }
+      else
+      {
+        $query.= $key.' IS NULL';
+      }
+      $is_first = false;
+    }
+    pwg_query($query);
+  }
+}
+
+
+/**
+ * inserts multiple lines in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array inserts
+ * @return void
+ */
+function mass_inserts($table_name, $dbfields, $datas, $options=array())
+{
+  $ignore = '';
+  if (isset($options['ignore']) and $options['ignore'])
+  {
+    $ignore = 'IGNORE';
+  }
+  
+  if (count($datas) != 0)
+  {
+    $first = true;
+
+    $query = 'SHOW VARIABLES LIKE \'max_allowed_packet\'';
+    list(, $packet_size) = pwg_db_fetch_row(pwg_query($query));
+    $packet_size = $packet_size - 2000; // The last list of values MUST not exceed 2000 character*/
+    $query = '';
+
+    foreach ($datas as $insert)
+    {
+      if (strlen($query) >= $packet_size)
+      {
+        pwg_query($query);
+        $first = true;
+      }
+
+      if ($first)
+      {
+        $query = '
+INSERT '.$ignore.' INTO '.$table_name.'
+  ('.implode(',', $dbfields).')
+  VALUES';
+        $first = false;
+      }
+      else
+      {
+        $query .= '
+  , ';
+      }
+
+      $query .= '(';
+      foreach ($dbfields as $field_id => $dbfield)
+      {
+        if ($field_id > 0)
+        {
+          $query .= ',';
+        }
+
+        if (!isset($insert[$dbfield]) or $insert[$dbfield] === '')
+        {
+          $query .= 'NULL';
+        }
+        else
+        {
+          $query .= "'".$insert[$dbfield]."'";
+        }
+      }
+      $query .= ')';
+    }
+    pwg_query($query);
+  }
+}
+
+/**
+ * inserts one line in a table
+ *
+ * @param string table_name
+ * @param array dbfields
+ * @param array insert
+ * @return void
+ */
+function single_insert($table_name, $data)
+{
+  if (count($data) != 0)
+  {
+    $query = '
+INSERT INTO '.$table_name.'
+  ('.implode(',', array_keys($data)).')
+  VALUES';
+
+    $query .= '(';
+    $is_first = true;
+    foreach ($data as $key => $value)
+    {
+      if (!$is_first)
+      {
+        $query .= ',';
+      }
+      else
+      {
+        $is_first = false;
+      }
+      
+      if ($value === '')
+      {
+        $query .= 'NULL';
+      }
+      else
+      {
+        $query .= "'".$value."'";
+      }
+    }
+    $query .= ')';
+    
+    pwg_query($query);
+  }
+}
+
+/**
+ * Do maintenance on all PWG tables
+ *
+ * @return none
+ */
+function do_maintenance_all_tables()
+{
+  global $prefixeTable, $page;
+
+  $all_tables = array();
+
+  // List all tables
+  $query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\'';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_row($result))
+  {
+    $all_tables[] = $row[0];
+  }
+
+  // Repair all tables
+  $query = 'REPAIR TABLE '.implode(', ', $all_tables);
+  $mysqli_rc = pwg_query($query);
+
+  // Re-Order all tables
+  foreach ($all_tables as $table_name)
+  {
+    $all_primary_key = array();
+
+    $query = 'DESC '.$table_name.';';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if ($row['Key'] == 'PRI')
+      {
+        $all_primary_key[] = $row['Field'];
+      }
+    }
+
+    if (count($all_primary_key) != 0)
+    {
+      $query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';';
+      $mysqli_rc = $mysqli_rc && pwg_query($query);
+    }
+  }
+
+  // Optimize all tables
+  $query = 'OPTIMIZE TABLE '.implode(', ', $all_tables);
+  $mysqli_rc = $mysqli_rc && pwg_query($query);
+  if ($mysqli_rc)
+  {
+    $page['infos'][] = l10n('All optimizations have been successfully completed.');
+  }
+  else
+  {
+    $page['errors'][] = l10n('Optimizations have been completed with some errors.');
+  }
+}
+
+function pwg_db_concat($array)
+{
+  $string = implode($array, ',');
+  return 'CONCAT('. $string.')';
+}
+
+function pwg_db_concat_ws($array, $separator)
+{
+  $string = implode($array, ',');
+  return 'CONCAT_WS(\''.$separator.'\','. $string.')';
+}
+
+function pwg_db_cast_to_text($string)
+{
+  return $string;
+}
+
+/**
+ * returns an array containing the possible values of an enum field
+ *
+ * @param string tablename
+ * @param string fieldname
+ */
+function get_enums($table, $field)
+{
+  // retrieving the properties of the table. Each line represents a field :
+  // columns are 'Field', 'Type'
+  $result = pwg_query('desc '.$table);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    // we are only interested in the the field given in parameter for the
+    // function
+    if ($row['Field'] == $field)
+    {
+      // retrieving possible values of the enum field
+      // enum('blue','green','black')
+      $options = explode(',', substr($row['Type'], 5, -1));
+      foreach ($options as $i => $option)
+      {
+        $options[$i] = str_replace("'", '',$option);
+      }
+    }
+  }
+  pwg_db_free_result($result);
+  return $options;
+}
+
+/**
+ * Smartly checks if a variable is equivalent to true or false
+ *
+ * @param mixed input
+ * @return bool
+ */
+function get_boolean($input)
+{
+  if ('false' === strtolower($input))
+  {
+    return false;
+  }
+
+  return (bool)$input;
+}
+
+/**
+ * returns boolean string 'true' or 'false' if the given var is boolean
+ *
+ * @param mixed $var
+ * @return mixed
+ */
+function boolean_to_string($var)
+{
+  if (is_bool($var))
+  {
+    return $var ? 'true' : 'false';
+  }
+  else
+  {
+    return $var;
+  }
+}
+
+/**
+ *
+ * interval and date functions 
+ *
+ */
+
+function pwg_db_get_recent_period_expression($period, $date='CURRENT_DATE')
+{
+  if ($date!='CURRENT_DATE')
+  {
+    $date = '\''.$date.'\'';
+  }
+
+  return 'SUBDATE('.$date.',INTERVAL '.$period.' DAY)';
+}
+
+function pwg_db_get_recent_period($period, $date='CURRENT_DATE')
+{
+  $query = '
+SELECT '.pwg_db_get_recent_period_expression($period);
+  list($d) = pwg_db_fetch_row(pwg_query($query));
+
+  return $d;
+}
+
+function pwg_db_get_flood_period_expression($seconds)
+{
+  return 'SUBDATE(now(), INTERVAL '.$seconds.' SECOND)';
+}
+
+function pwg_db_get_hour($date) 
+{
+  return 'hour('.$date.')';
+}
+
+function pwg_db_get_date_YYYYMM($date)
+{
+  return 'DATE_FORMAT('.$date.', \'%Y%m\')';
+}
+
+function pwg_db_get_date_MMDD($date)
+{
+  return 'DATE_FORMAT('.$date.', \'%m%d\')';
+}
+
+function pwg_db_get_year($date)
+{
+  return 'YEAR('.$date.')';
+}
+
+function pwg_db_get_month($date)
+{
+  return 'MONTH('.$date.')';
+}
+
+function pwg_db_get_week($date, $mode=null)
+{
+  if ($mode)
+  {
+    return 'WEEK('.$date.', '.$mode.')';
+  }
+  else
+  {
+    return 'WEEK('.$date.')';
+  }
+}
+
+function pwg_db_get_dayofmonth($date)
+{
+  return 'DAYOFMONTH('.$date.')';
+}
+
+function pwg_db_get_dayofweek($date)
+{
+  return 'DAYOFWEEK('.$date.')';
+}
+
+function pwg_db_get_weekday($date)
+{
+  return 'WEEKDAY('.$date.')';
+}
+
+function pwg_db_date_to_ts($date) 
+{
+  return 'UNIX_TIMESTAMP('.$date.')';
+}
+
+// my_error returns (or send to standard output) the message concerning the
+// error occured for the last mysql query.
+function my_error($header, $die)
+{
+  global $mysqli;
+  
+  $error = "[mysql error ".$mysqli->errno.'] '.$mysqli->error."\n";
+  $error .= $header;
+
+  if ($die)
+  {
+    fatal_error($error);
+  }
+  echo("<pre>");
+  trigger_error($error, E_USER_WARNING);
+  echo("</pre>");
+}
+
+?>
Index: /tags/2.6.0RC1/include/derivative.inc.php
===================================================================
--- /tags/2.6.0RC1/include/derivative.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/derivative.inc.php	(revision 25596)
@@ -0,0 +1,444 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*A source image is used to get a derivative image. A source image is either the original file for a jpg or a
+'representative' image of a non image file or a standard icon for the non-image file.*/
+final class SrcImage
+{
+  const IS_ORIGINAL = 0x01;
+  const IS_MIMETYPE = 0x02;
+  const DIM_NOT_GIVEN = 0x04;
+
+  public $id;
+  public $rel_path;
+  public $rotation = 0;
+
+  private $size=null;
+  private $flags=0;
+
+  /*@param infos assoc array of data from images table*/
+  function __construct($infos)
+  {
+    global $conf;
+
+    $this->id = $infos['id'];
+    $ext = get_extension($infos['path']);
+    if (in_array($ext, $conf['picture_ext']))
+    {
+      $this->rel_path = $infos['path'];
+      $this->flags |= self::IS_ORIGINAL;
+    }
+    elseif (!empty($infos['representative_ext']))
+    {
+      $this->rel_path = original_to_representative($infos['path'], $infos['representative_ext']);
+    }
+    else
+    {
+      $ext = strtolower($ext);
+      $this->rel_path = trigger_event('get_mimetype_location', get_themeconf('mime_icon_dir').$ext.'.png', $ext );
+      $this->flags |= self::IS_MIMETYPE;
+      if ( ($size=@getimagesize(PHPWG_ROOT_PATH.$this->rel_path)) === false)
+      {
+        $this->rel_path = 'themes/default/icon/mimetypes/unknown.png';
+        $size = getimagesize(PHPWG_ROOT_PATH.$this->rel_path);
+      }
+      $this->size = array($size[0],$size[1]);
+    }
+
+    if (!$this->size)
+    {
+      if (isset($infos['width']) && isset($infos['height']))
+      {
+        $width = $infos['width'];
+        $height = $infos['height'];
+
+        $this->rotation = intval($infos['rotation']) % 4;
+        // 1 or 5 =>  90 clockwise
+        // 3 or 7 => 270 clockwise
+        if ($this->rotation % 2)
+        {
+          $width = $infos['height'];
+          $height = $infos['width'];
+        }
+
+        $this->size = array($width, $height);
+      }
+      elseif (!array_key_exists('width', $infos))
+      {
+        $this->flags |= self::DIM_NOT_GIVEN;
+      }
+    }
+  }
+
+  function is_original()
+  {
+    return $this->flags & self::IS_ORIGINAL;
+  }
+
+  function is_mimetype()
+  {
+    return $this->flags & self::IS_MIMETYPE;
+  }
+
+  function get_path()
+  {
+    return PHPWG_ROOT_PATH.$this->rel_path;
+  }
+
+  function get_url()
+  {
+    $url = get_root_url().$this->rel_path;
+    if ( !($this->flags & self::IS_MIMETYPE) )
+    {
+      $url = trigger_event('get_src_image_url', $url, $this);
+    }
+    return embellish_url($url);
+  }
+
+  function has_size()
+  {
+    return $this->size != null;
+  }
+
+  /* @return a 2-element array containing width/height or null if dimensions are not available*/
+  function get_size()
+  {
+    if ($this->size == null)
+    {
+      if ($this->flags & self::DIM_NOT_GIVEN)
+        fatal_error('SrcImage dimensions required but not provided');
+      // probably not metadata synced
+      if ( ($size = getimagesize( $this->get_path() )) !== false)
+      {
+        $this->size = array($size[0],$size[1]);
+        pwg_query('UPDATE '.IMAGES_TABLE.' SET width='.$size[0].', height='.$size[1].' WHERE id='.$this->id);
+      }
+    }
+    return $this->size;
+  }
+}
+
+
+/*Holds information (path, url, dimensions) about a derivative image. A derivative image is constructed from a source
+image (SrcImage class) and derivative parameters (DerivativeParams class).
+*/
+final class DerivativeImage
+{
+  public $src_image;
+
+  private $params;
+  private $rel_path, $rel_url, $is_cached=true;
+
+  /*
+  @param type string of standard derivative param type (e.g. IMG_???) or a DerivativeParams object
+  @param src_image the source image of this derivative*/
+  function __construct($type, SrcImage $src_image)
+  {
+    $this->src_image = $src_image;
+    if (is_string($type))
+    {
+      $this->params = ImageStdParams::get_by_type($type);
+    }
+    else
+    {
+      $this->params = $type;
+    }
+
+    self::build($src_image, $this->params, $this->rel_path, $this->rel_url, $this->is_cached);
+  }
+
+  static function thumb_url($infos)
+  {
+    return self::url(IMG_THUMB, $infos);
+  }
+
+  /**
+  @return derivative image url
+  @param type string of standard derivative param type (e.g. IMG_???) or a DerivativeParams object
+  @param infos assoc array of data from images table or a SrcImage object
+  */
+  static function url($type, $infos)
+  {
+    $src_image = is_object($infos) ? $infos : new SrcImage($infos);
+    $params = is_string($type) ? ImageStdParams::get_by_type($type) : $type;
+    self::build($src_image, $params, $rel_path, $rel_url);
+    if ($params == null)
+    {
+      return $src_image->get_url();
+    }
+    return embellish_url(
+        trigger_event('get_derivative_url',
+          get_root_url().$rel_url,
+          $params, $src_image, $rel_url
+          ) );
+  }
+
+  /**
+   * Return associative an array of all DerivativeImage for a specific image.
+   * Disabled derivative types can be still found in the return mapped to an
+   * enabled derivative (e.g. the values are not unique in the return array).
+   * This is useful for any plugin/theme to just use $deriv[IMG_XLARGE] even if 
+   * the XLARGE is disabled.
+   *
+   * @param array|SrcImage $src_image array of info from db or SrcImage
+   * @return DerivativeImage[]
+   */
+  static function get_all($src_image)
+  {
+    if (!is_object($src_image))
+    {
+      $src_image = new SrcImage($src_image);
+    }
+
+    $ret = array();
+    // build enabled types
+    foreach (ImageStdParams::get_defined_type_map() as $type => $params)
+    {
+      $derivative = new DerivativeImage($params, $src_image);
+      $ret[$type] = $derivative;
+    }
+    // disabled types, fallback to enabled types
+    foreach (ImageStdParams::get_undefined_type_map() as $type => $type2)
+    {
+      $ret[$type] = $ret[$type2];
+    }
+
+    return $ret;
+  }
+
+  /**
+   * Returns an instance of DerivativeImage for a specific image and size.
+   * Disabled derivatives fallback to an enabled derivative.
+   *
+   * @param string $type
+   * @param array|SrcImage $src_image array of info from db or SrcImage
+   * @return DerivativeImage|null null if $type not found
+   */
+  static function get_one($type, $src_image)
+  {
+    if (!is_object($src_image))
+    {
+      $src_image = new SrcImage($src_image);
+    }
+
+    $defined = ImageStdParams::get_defined_type_map();
+    if (isset($defined[$type]))
+    {
+      return new DerivativeImage($defined[$type], $src_image);
+    }
+
+    $undefined = ImageStdParams::get_undefined_type_map();
+    if (isset($undefined[$type]))
+    {
+      return new DerivativeImage($defined[ $undefined[$type] ], $src_image);
+    }
+
+    return null;
+  }
+
+  private static function build($src, &$params, &$rel_path, &$rel_url, &$is_cached=null)
+  {
+    if ( $src->has_size() && $params->is_identity( $src->get_size() ) )
+    {// the source image is smaller than what we should do - we do not upsample
+      if (!$params->will_watermark($src->get_size()) && !$src->rotation)
+      {// no watermark, no rotation required -> we will use the source image
+        $params = null;
+        $rel_path = $rel_url = $src->rel_path;
+        return;
+      }
+      $defined_types = array_keys(ImageStdParams::get_defined_type_map());
+      for ($i=0; $i<count($defined_types); $i++)
+      {
+        if ($defined_types[$i] == $params->type)
+        {
+          for ($i--; $i>=0; $i--)
+          {
+            $smaller = ImageStdParams::get_by_type($defined_types[$i]);
+            if ($smaller->sizing->max_crop==$params->sizing->max_crop && $smaller->is_identity( $src->get_size() ))
+            {
+              $params = $smaller;
+              self::build($src, $params, $rel_path, $rel_url, $is_cached);
+              return;
+            }
+          }
+          break;
+        }
+      }
+    }
+
+    $tokens=array();
+    $tokens[] = substr($params->type,0,2);
+
+    if ($params->type==IMG_CUSTOM)
+    {
+      $params->add_url_tokens($tokens);
+    }
+
+    $loc = $src->rel_path;
+    if (substr_compare($loc, './', 0, 2)==0)
+    {
+      $loc = substr($loc, 2);
+    }
+    elseif (substr_compare($loc, '../', 0, 3)==0)
+    {
+      $loc = substr($loc, 3);
+    }
+    $loc = substr_replace($loc, '-'.implode('_', $tokens), strrpos($loc, '.'), 0 );
+
+    $rel_path = PWG_DERIVATIVE_DIR.$loc;
+
+    global $conf;
+    $url_style=$conf['derivative_url_style'];
+    if (!$url_style)
+    {
+      $mtime = @filemtime(PHPWG_ROOT_PATH.$rel_path);
+      if ($mtime===false or $mtime < $params->last_mod_time)
+      {
+        $is_cached = false;
+        $url_style = 2;
+      }
+      else
+      {
+        $url_style = 1;
+      }
+    }
+
+    if ($url_style == 2)
+    {
+      $rel_url = 'i';
+      if ($conf['php_extension_in_urls']) $rel_url .= '.php';
+      if ($conf['question_mark_in_urls']) $rel_url .= '?';
+      $rel_url .= '/'.$loc;
+    }
+    else
+    {
+      $rel_url = $rel_path;
+    }
+  }
+
+  function get_path()
+  {
+    return PHPWG_ROOT_PATH.$this->rel_path;
+  }
+
+  function get_url()
+  {
+    if ($this->params == null)
+    {
+      return $this->src_image->get_url();
+    }
+    return embellish_url(
+        trigger_event('get_derivative_url',
+          get_root_url().$this->rel_url,
+          $this->params, $this->src_image, $this->rel_url
+          ) );
+  }
+
+  function same_as_source()
+  {
+    return $this->params == null;
+  }
+
+
+  function get_type()
+  {
+    if ($this->params == null)
+      return 'Original';
+    return $this->params->type;
+  }
+
+  /* returns the size of the derivative image*/
+  function get_size()
+  {
+    if ($this->params == null)
+    {
+      return $this->src_image->get_size();
+    }
+    return $this->params->compute_final_size($this->src_image->get_size());
+  }
+
+  function get_size_css()
+  {
+    $size = $this->get_size();
+    if ($size)
+    {
+      return 'width:'.$size[0].'px; height:'.$size[1].'px';
+    }
+  }
+
+  function get_size_htm()
+  {
+    $size = $this->get_size();
+    if ($size)
+    {
+      return 'width="'.$size[0].'" height="'.$size[1].'"';
+    }
+  }
+
+  function get_size_hr()
+  {
+    $size = $this->get_size();
+    if ($size)
+    {
+      return $size[0].' x '.$size[1];
+    }
+  }
+
+  function get_scaled_size($maxw, $maxh)
+  {
+    $size = $this->get_size();
+    if ($size)
+    {
+      $ratio_w = $size[0] / $maxw;
+      $ratio_h = $size[1] / $maxh;
+      if ($ratio_w>1 || $ratio_h>1)
+      {
+        if ($ratio_w > $ratio_h)
+        {
+          $size[0] = $maxw;
+          $size[1] = floor($size[1] / $ratio_w);
+        }
+        else
+        {
+          $size[0] = floor($size[0] / $ratio_h);
+          $size[1] = $maxh;
+        }
+      }
+    }
+    return $size;
+  }
+
+  function get_scaled_size_htm($maxw=9999, $maxh=9999)
+  {
+    $size = $this->get_scaled_size($maxw, $maxh);
+    if ($size)
+    {
+      return 'width="'.$size[0].'" height="'.$size[1].'"';
+    }
+  }
+
+  function is_cached()
+  {
+    return $this->is_cached;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/derivative_params.inc.php
===================================================================
--- /tags/2.6.0RC1/include/derivative_params.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/derivative_params.inc.php	(revision 25596)
@@ -0,0 +1,313 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function derivative_to_url($t)
+{
+  return substr($t, 0, 2);
+}
+
+function size_to_url($s)
+{
+  if ($s[0]==$s[1])
+  {
+    return $s[0];
+  }
+  return $s[0].'x'.$s[1];
+}
+
+function size_equals($s1, $s2)
+{
+  return ($s1[0]==$s2[0] && $s1[1]==$s2[1]);
+}
+
+function char_to_fraction($c)
+{
+	return (ord($c) - ord('a'))/25;
+}
+
+function fraction_to_char($f)
+{
+	return chr(ord('a') + round($f*25));
+}
+
+/** small utility to manipulate a 'rectangle'*/
+final class ImageRect
+{
+  public $l,$t,$r,$b;
+
+  function __construct($l)
+  {
+    $this->l = $this->t = 0;
+    $this->r = $l[0];
+    $this->b = $l[1];
+  }
+
+  function width()
+  {
+    return $this->r - $this->l;
+  }
+
+  function height()
+  {
+    return $this->b - $this->t;
+  }
+
+  /** crops horizontally this rectangle by increasing left side and/or reducing the right side.
+  @param pixels the amount to substract from the width
+  @param coi a 4 character string (or null) containing the center of interest*/
+  function crop_h($pixels, $coi)
+  {
+    if ($this->width() <= $pixels)
+      return;
+    $tlcrop = floor($pixels/2);
+
+    if (!empty($coi))
+    {
+      $coil = floor($this->r * char_to_fraction($coi[0]));
+      $coir = ceil($this->r * char_to_fraction($coi[2]));
+      $availableL = $coil > $this->l ? $coil - $this->l : 0;
+      $availableR = $coir < $this->r ? $this->r - $coir : 0;
+      if ($availableL + $availableR >= $pixels)
+      {
+        if ($availableL < $tlcrop)
+        {
+          $tlcrop = $availableL;
+        }
+        elseif ($availableR < $tlcrop)
+        {
+          $tlcrop = $pixels - $availableR;
+        }
+      }
+    }
+    $this->l += $tlcrop;
+    $this->r -= $pixels - $tlcrop;
+  }
+
+  /** crops vertically this rectangle by increasing top side and/or reducing the bottom side.
+  @param pixels the amount to substract from the height
+  @param coi a 4 character string (or null) containing the center of interest*/
+  function crop_v($pixels, $coi)
+  {
+    if ($this->height() <= $pixels)
+      return;
+    $tlcrop = floor($pixels/2);
+
+    if (!empty($coi))
+    {
+      $coit = floor($this->b * char_to_fraction($coi[1]));
+      $coib = ceil($this->b * char_to_fraction($coi[3]));
+      $availableT = $coit > $this->t ? $coit - $this->t : 0;
+      $availableB = $coib < $this->b ? $this->b - $coib : 0;
+      if ($availableT + $availableB >= $pixels)
+      {
+        if ($availableT < $tlcrop)
+        {
+          $tlcrop = $availableT;
+        }
+        elseif ($availableB < $tlcrop)
+        {
+          $tlcrop = $pixels - $availableB;
+        }
+      }
+    }
+    $this->t += $tlcrop;
+    $this->b -= $pixels - $tlcrop;
+  }
+
+}
+
+
+/** Paramaters for derivative scaling and cropping. Instance of this class contained by DerivativeParams class.*/
+final class SizingParams
+{
+  /**
+  @param ideal_size two element array of maximum output dimensions (width, height)
+  @param max_crop range 0=no cropping ... 1= max cropping (100% of width/height); expressed as a factor of the input width/height
+  @param min_size used only if max_crop != 0 - two element array of output dimensions (width, height)
+  */
+  function __construct($ideal_size, $max_crop = 0, $min_size = null)
+  {
+    $this->ideal_size = $ideal_size;
+    $this->max_crop = $max_crop; // range 0=no cropping ... 1= max cropping (100% of width/height)
+    $this->min_size = $min_size;
+  }
+
+  static function classic($w, $h)
+  {
+    return new SizingParams( array($w,$h) );
+  }
+
+  static function square($w)
+  {
+    return new SizingParams( array($w,$w), 1, array($w,$w) );
+  }
+
+  function add_url_tokens(&$tokens)
+  {
+      if ($this->max_crop == 0)
+      {
+        $tokens[] = 's'.size_to_url($this->ideal_size);
+      }
+      elseif ($this->max_crop == 1 && size_equals($this->ideal_size, $this->min_size) )
+      {
+        $tokens[] = 'e'.size_to_url($this->ideal_size);
+      }
+      else
+      {
+        $tokens[] = size_to_url($this->ideal_size);
+        $tokens[] = fraction_to_char($this->max_crop);
+        $tokens[] = size_to_url($this->min_size);
+      }
+  }
+
+  /* calculate the cropping rectangle and the scaled size for an input image size
+  @param in_size two element array of input dimensions (width, height)
+  @param coi empty or a four character encoded string containing the center of interest (unused if max_crop=0)
+  @param crop_rect output ImageRect containing the cropping rectangle or null if cropping is not required
+  @param scale_size output two element array containing width and height of the scaled image
+  */
+  function compute($in_size, $coi, &$crop_rect, &$scale_size)
+  {
+    $destCrop = new ImageRect($in_size);
+
+    if ($this->max_crop > 0)
+    {
+      $ratio_w = $destCrop->width() / $this->ideal_size[0];
+      $ratio_h = $destCrop->height() / $this->ideal_size[1];
+      if ($ratio_w>1 || $ratio_h>1)
+      {
+        if ($ratio_w > $ratio_h)
+        {
+          $h = $destCrop->height() / $ratio_w;
+          if ($h < $this->min_size[1])
+          {
+            $idealCropPx = $destCrop->width() - floor($destCrop->height() * $this->ideal_size[0] / $this->min_size[1]);
+            $maxCropPx = round($this->max_crop * $destCrop->width());
+            $destCrop->crop_h( min($idealCropPx, $maxCropPx), $coi);
+          }
+        }
+        else
+        {
+          $w = $destCrop->width() / $ratio_h;
+          if ($w < $this->min_size[0])
+          {
+            $idealCropPx = $destCrop->height() - floor($destCrop->width() * $this->ideal_size[1] / $this->min_size[0]);
+            $maxCropPx = round($this->max_crop * $destCrop->height());
+            $destCrop->crop_v( min($idealCropPx, $maxCropPx), $coi);
+          }
+        }
+      }
+    }
+
+    $scale_size = array($destCrop->width(), $destCrop->height());
+
+    $ratio_w = $destCrop->width() / $this->ideal_size[0];
+    $ratio_h = $destCrop->height() / $this->ideal_size[1];
+    if ($ratio_w>1 || $ratio_h>1)
+    {
+      if ($ratio_w > $ratio_h)
+      {
+        $scale_size[0] = $this->ideal_size[0];
+        $scale_size[1] = floor(1e-6 + $scale_size[1] / $ratio_w);
+      }
+      else
+      {
+        $scale_size[0] = floor(1e-6 + $scale_size[0] / $ratio_h);
+        $scale_size[1] = $this->ideal_size[1];
+      }
+    }
+    else
+    {
+      $scale_size = null;
+    }
+
+    $crop_rect = null;
+    if ($destCrop->width()!=$in_size[0] || $destCrop->height()!=$in_size[1] )
+    {
+      $crop_rect = $destCrop;
+    }
+  }
+
+}
+
+
+/** All needed parameters to generate a derivative image.*/
+final class DerivativeParams
+{
+  public $type = IMG_CUSTOM; // string IMG_xxx
+  public $last_mod_time = 0; // used for non-custom images to regenerate the cached files
+  public $use_watermark = false;
+  public $sizing; // of type SizingParams
+  public $sharpen = 0; // range 0= no sharpening ... 1= max sharpening
+
+  function __construct($sizing)
+  {
+    $this->sizing = $sizing;
+  }
+
+  public function __sleep()
+  {
+      return array('last_mod_time', 'sizing', 'sharpen');
+  }
+
+  function add_url_tokens(&$tokens)
+  {
+    $this->sizing->add_url_tokens($tokens);
+  }
+
+  function compute_final_size($in_size)
+  {
+    $this->sizing->compute( $in_size, null, $crop_rect, $scale_size );
+    return $scale_size != null ? $scale_size : $in_size;
+  }
+
+  function max_width()
+  {
+    return $this->sizing->ideal_size[0];
+  }
+
+  function max_height()
+  {
+    return $this->sizing->ideal_size[1];
+  }
+
+  function is_identity($in_size)
+  {
+    if ($in_size[0] > $this->sizing->ideal_size[0] or
+        $in_size[1] > $this->sizing->ideal_size[1] )
+    {
+      return false;
+    }
+    return true;
+  }
+
+  function will_watermark($out_size)
+  {
+    if ($this->use_watermark)
+    {
+      $min_size = ImageStdParams::get_watermark()->min_size;
+      return $min_size[0]<=$out_size[0]
+        || $min_size[1]<=$out_size[1];
+    }
+    return false;
+  }
+}
+?>
Index: /tags/2.6.0RC1/include/derivative_std_params.inc.php
===================================================================
--- /tags/2.6.0RC1/include/derivative_std_params.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/derivative_std_params.inc.php	(revision 25596)
@@ -0,0 +1,206 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('IMG_SQUARE', 'square');
+define('IMG_THUMB', 'thumb');
+define('IMG_XXSMALL', '2small');
+define('IMG_XSMALL', 'xsmall');
+define('IMG_SMALL', 'small');
+define('IMG_MEDIUM', 'medium');
+define('IMG_LARGE', 'large');
+define('IMG_XLARGE', 'xlarge');
+define('IMG_XXLARGE', 'xxlarge');
+define('IMG_CUSTOM', 'custom');
+
+final class WatermarkParams
+{
+  public $file = '';
+  public $min_size = array(500,500);
+  public $xpos = 50;
+  public $ypos = 50;
+  public $xrepeat = 0;
+  public $opacity = 100;
+}
+
+
+final class ImageStdParams
+{
+  private static $all_types = array(
+    IMG_SQUARE,IMG_THUMB,IMG_XXSMALL,IMG_XSMALL,IMG_SMALL,IMG_MEDIUM,IMG_LARGE,IMG_XLARGE,IMG_XXLARGE
+    );
+  private static $all_type_map = array();
+  private static $type_map = array();
+  private static $undefined_type_map = array();
+  private static $watermark;
+  public static $custom = array();
+  public static $quality=95;
+
+  static function get_all_types()
+  {
+    return self::$all_types;
+  }
+
+  static function get_all_type_map()
+  {
+    return self::$all_type_map;
+  }
+
+  static function get_defined_type_map()
+  {
+    return self::$type_map;
+  }
+
+  static function get_undefined_type_map()
+  {
+    return self::$undefined_type_map;
+  }
+
+  static function get_by_type($type)
+  {
+    return self::$all_type_map[$type];
+  }
+
+  static function get_custom($w, $h, $crop=0, $minw=null, $minh=null)
+  {
+    $params = new DerivativeParams( new SizingParams( array($w,$h), $crop, array($minw,$minh)) );
+    self::apply_global($params);
+
+    $key = array();
+    $params->add_url_tokens($key);
+    $key = implode('_',$key);
+    if ( @self::$custom[$key] < time() - 24*3600)
+    {
+      self::$custom[$key] = time();
+      self::save();
+    }
+    return $params;
+  }
+
+  static function get_watermark()
+  {
+    return self::$watermark;
+  }
+
+  static function load_from_db()
+  {
+    global $conf;
+    $arr = @unserialize($conf['derivatives']);
+    if (false!==$arr)
+    {
+      self::$type_map = $arr['d'];
+      self::$watermark = @$arr['w'];
+      if (!self::$watermark) self::$watermark = new WatermarkParams();
+      self::$custom = @$arr['c'];
+      if (!self::$custom) self::$custom = array();
+      if (isset($arr['q'])) self::$quality = $arr['q'];
+    }
+    else
+    {
+      self::$watermark = new WatermarkParams();
+      self::$type_map = self::get_default_sizes();
+      self::save();
+    }
+    self::build_maps();
+  }
+
+  static function set_watermark($watermark)
+  {
+    self::$watermark = $watermark;
+  }
+
+  static function set_and_save($map)
+  {
+    self::$type_map = $map;
+    self::save();
+    self::build_maps();
+  }
+
+  static function save()
+  {
+    global $conf;
+
+    $ser = serialize( array(
+      'd' => self::$type_map,
+      'q' => self::$quality,
+      'w' => self::$watermark,
+      'c' => self::$custom,
+      ) );
+    conf_update_param('derivatives', addslashes($ser) );
+  }
+
+  static function get_default_sizes()
+  {
+    $arr = array(
+      IMG_SQUARE => new DerivativeParams( SizingParams::square(120,120) ),
+      IMG_THUMB => new DerivativeParams( SizingParams::classic(144,144) ),
+      IMG_XXSMALL => new DerivativeParams( SizingParams::classic(240,240) ),
+      IMG_XSMALL => new DerivativeParams( SizingParams::classic(432,324) ),
+      IMG_SMALL => new DerivativeParams( SizingParams::classic(576,432) ),
+      IMG_MEDIUM => new DerivativeParams( SizingParams::classic(792,594) ),
+      IMG_LARGE => new DerivativeParams( SizingParams::classic(1008,756) ),
+      IMG_XLARGE => new DerivativeParams( SizingParams::classic(1224,918) ),
+      IMG_XXLARGE => new DerivativeParams( SizingParams::classic(1656,1242) ),
+    );
+    foreach($arr as $params)
+    {
+      $params->last_mod_time = time();
+    }
+    return $arr;
+  }
+
+  static function apply_global($params)
+  {
+    $params->use_watermark = !empty(self::$watermark->file) &&
+        (self::$watermark->min_size[0]<=$params->sizing->ideal_size[0]
+        or self::$watermark->min_size[1]<=$params->sizing->ideal_size[1] );
+  }
+
+  private static function build_maps()
+  {
+    foreach (self::$type_map as $type=>$params)
+    {
+      $params->type = $type;
+      self::apply_global($params);
+    }
+    self::$all_type_map = self::$type_map;
+
+    for ($i=0; $i<count(self::$all_types); $i++)
+    {
+      $tocheck = self::$all_types[$i];
+      if (!isset(self::$type_map[$tocheck]))
+      {
+        for ($j=$i-1; $j>=0; $j--)
+        {
+          $target = self::$all_types[$j];
+          if (isset(self::$type_map[$target]))
+          {
+            self::$all_type_map[$tocheck] = self::$type_map[$target];
+            self::$undefined_type_map[$tocheck] = $target;
+            break;
+          }
+        }
+      }
+    }
+  }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/emogrifier.class.php
===================================================================
--- /tags/2.6.0RC1/include/emogrifier.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/emogrifier.class.php	(revision 25596)
@@ -0,0 +1,404 @@
+<?php
+/*
+UPDATES
+
+    2008-08-10  Fixed CSS comment stripping regex to add PCRE_DOTALL (changed from '/\/\*.*\*\//U' to '/\/\*.*\*\//sU')
+    2008-08-18  Added lines instructing DOMDocument to attempt to normalize HTML before processing
+    2008-10-20  Fixed bug with bad variable name... Thanks Thomas!
+    2008-03-02  Added licensing terms under the MIT License
+                Only remove unprocessable HTML tags if they exist in the array
+    2009-06-03  Normalize existing CSS (style) attributes in the HTML before we process the CSS.
+                Made it so that the display:none stripper doesn't require a trailing semi-colon.
+    2009-08-13  Added support for subset class values (e.g. "p.class1.class2").
+                Added better protection for bad css attributes.
+                Fixed support for HTML entities.
+    2009-08-17  Fixed CSS selector processing so that selectors are processed by precedence/specificity, and not just in order.
+    2009-10-29  Fixed so that selectors appearing later in the CSS will have precedence over identical selectors appearing earlier.
+    2009-11-04  Explicitly declared static functions static to get rid of E_STRICT notices.
+    2010-05-18  Fixed bug where full url filenames with protocols wouldn't get split improperly when we explode on ':'... Thanks Mark!
+                Added two new attribute selectors
+    2010-06-16  Added static caching for less processing overhead in situations where multiple emogrification takes place
+    2010-07-26  Fixed bug where '0' values were getting discarded because of php's empty() function... Thanks Scott!
+    2010-09-03  Added checks to invisible node removal to ensure that we don't try to remove non-existent child nodes of parents that have already been deleted
+    2011-04-08  Fixed errors in CSS->XPath conversion for adjacent sibling selectors and id/class combinations... Thanks Bob V.!
+    2011-06-08  Fixed an error where CSS @media types weren't being parsed correctly... Thanks Will W.!
+    2011-08-03  Fixed an error where an empty selector at the beginning of the CSS would cause a parse error on the next selector... Thanks Alexei T.!
+    2011-10-13  Fully fixed a bug introduced in 2011-06-08 where selectors at the beginning of the CSS would be parsed incorrectly... Thanks Thomas A.!
+    2011-10-26  Added an option to allow you to output emogrified code without extended characters being turned into HTML entities.
+                Moved static references to class attributes so they can be manipulated.
+                Added the ability to clear out the (formerly) static cache when CSS is reloaded.
+    2011-12-22  Fixed a bug that was overwriting existing inline styles from the original HTML... Thanks Sagi L.!
+    2012-01-31  Fixed a bug that was introduced with the 2011-12-22 revision... Thanks Sagi L. and M. Bąkowski!
+                Added extraction of <style> blocks within the HTML due to popular demand.
+                Added several new pseudo-selectors (first-child, last-child, nth-child, and nth-of-type).
+    2012-02-07  Fixed some recent code introductions to use class constants rather than global constants.
+                Fixed some recent code introductions to make it cleaner to read.
+    2012-05-01  Made removal of invisible nodes operate in a case-insensitive manner... Thanks Juha P.!
+    2013-10-10  Add preserveStyleTag option
+*/
+
+define('CACHE_CSS', 0);
+define('CACHE_SELECTOR', 1);
+define('CACHE_XPATH', 2);
+
+class Emogrifier {
+
+    // for calculating nth-of-type and nth-child selectors
+    const INDEX = 0;
+    const MULTIPLIER = 1;
+
+    private $html = '';
+    private $css = '';
+    private $unprocessableHTMLTags = array('wbr');
+    private $caches = array();
+
+    // this attribute applies to the case where you want to preserve your original text encoding.
+    // by default, emogrifier translates your text into HTML entities for two reasons:
+    // 1. because of client incompatibilities, it is better practice to send out HTML entities rather than unicode over email
+    // 2. it translates any illegal XML characters that DOMDocument cannot work with
+    // if you would like to preserve your original encoding, set this attribute to true.
+    public $preserveEncoding = false;
+    
+    // by default, emogrifier removes <style> tags, set preserveStyleTag to true to keep them
+    public $preserveStyleTag = false;
+
+    public function __construct($html = '', $css = '') {
+        $this->html = $html;
+        $this->css  = $css;
+        $this->clearCache();
+    }
+
+    public function setHTML($html = '') { $this->html = $html; }
+    public function setCSS($css = '') {
+        $this->css = $css;
+        $this->clearCache(CACHE_CSS);
+    }
+
+    public function clearCache($key = null) {
+        if (!is_null($key)) {
+            if (isset($this->caches[$key])) $this->caches[$key] = array();
+        } else {
+            $this->caches = array(
+                CACHE_CSS       => array(),
+                CACHE_SELECTOR  => array(),
+                CACHE_XPATH     => array(),
+            );
+        }
+    }
+
+    // there are some HTML tags that DOMDocument cannot process, and will throw an error if it encounters them.
+    // in particular, DOMDocument will complain if you try to use HTML5 tags in an XHTML document.
+    // these functions allow you to add/remove them if necessary.
+    // it only strips them from the code (does not remove actual nodes).
+    public function addUnprocessableHTMLTag($tag) { $this->unprocessableHTMLTags[] = $tag; }
+    public function removeUnprocessableHTMLTag($tag) {
+        if (($key = array_search($tag,$this->unprocessableHTMLTags)) !== false)
+            unset($this->unprocessableHTMLTags[$key]);
+    }
+
+    // applies the CSS you submit to the html you submit. places the css inline
+    public function emogrify() {
+        $body = $this->html;
+
+        // remove any unprocessable HTML tags (tags that DOMDocument cannot parse; this includes wbr and many new HTML5 tags)
+        if (count($this->unprocessableHTMLTags)) {
+            $unprocessableHTMLTags = implode('|',$this->unprocessableHTMLTags);
+            $body = preg_replace("/<\/?($unprocessableHTMLTags)[^>]*>/i",'',$body);
+        }
+
+        $encoding = mb_detect_encoding($body);
+        $body = mb_convert_encoding($body, 'HTML-ENTITIES', $encoding);
+
+        $xmldoc = new DOMDocument;
+        $xmldoc->encoding = $encoding;
+        $xmldoc->strictErrorChecking = false;
+        $xmldoc->formatOutput = true;
+        $xmldoc->loadHTML($body);
+        $xmldoc->normalizeDocument();
+
+        $xpath = new DOMXPath($xmldoc);
+
+        // before be begin processing the CSS file, parse the document and normalize all existing CSS attributes (changes 'DISPLAY: none' to 'display: none');
+        // we wouldn't have to do this if DOMXPath supported XPath 2.0.
+        // also store a reference of nodes with existing inline styles so we don't overwrite them
+        $vistedNodes = $vistedNodeRef = array();
+        $nodes = @$xpath->query('//*[@style]');
+        foreach ($nodes as $node) {
+            $normalizedOrigStyle = preg_replace('/[A-z\-]+(?=\:)/Se',"strtolower('\\0')", $node->getAttribute('style'));
+
+            // in order to not overwrite existing style attributes in the HTML, we have to save the original HTML styles
+            $nodeKey = md5($node->getNodePath());
+            if (!isset($vistedNodeRef[$nodeKey])) {
+                $vistedNodeRef[$nodeKey] = $this->cssStyleDefinitionToArray($normalizedOrigStyle);
+                $vistedNodes[$nodeKey]   = $node;
+            }
+
+            $node->setAttribute('style', $normalizedOrigStyle);
+        }
+
+        // grab any existing style blocks from the html and append them to the existing CSS
+        // (these blocks should be appended so as to have precedence over conflicting styles in the existing CSS)
+        $css = $this->css;
+        $nodes = @$xpath->query('//style');
+        foreach ($nodes as $node) {
+            // append the css
+            $css .= "\n\n{$node->nodeValue}";
+            // remove the <style> node
+            if (!$this->preserveStyleTag) {
+                $node->parentNode->removeChild($node);
+            }
+        }
+
+        // filter the CSS
+        $search = array(
+            '/\/\*.*\*\//sU', // get rid of css comment code
+            '/^\s*@import\s[^;]+;/misU', // strip out any import directives
+            '/^\s*@media\s[^{]+{\s*}/misU', // strip any empty media enclosures
+            '/^\s*@media\s+((aural|braille|embossed|handheld|print|projection|speech|tty|tv)\s*,*\s*)+{.*}\s*}/misU', // strip out all media types that are not 'screen' or 'all' (these don't apply to email)
+            '/^\s*@media\s[^{]+{(.*})\s*}/misU', // get rid of remaining media type enclosures
+        );
+
+        $replace = array(
+            '',
+            '',
+            '',
+            '',
+            '\\1',
+        );
+
+        $css = preg_replace($search, $replace, $css);
+
+        $csskey = md5($css);
+        if (!isset($this->caches[CACHE_CSS][$csskey])) {
+
+            // process the CSS file for selectors and definitions
+            preg_match_all('/(^|[^{}])\s*([^{]+){([^}]*)}/mis', $css, $matches, PREG_SET_ORDER);
+
+            $all_selectors = array();
+            foreach ($matches as $key => $selectorString) {
+                // if there is a blank definition, skip
+                if (!strlen(trim($selectorString[3]))) continue;
+
+                // else split by commas and duplicate attributes so we can sort by selector precedence
+                $selectors = explode(',',$selectorString[2]);
+                foreach ($selectors as $selector) {
+
+                    // don't process pseudo-elements and behavioral (dynamic) pseudo-classes; ONLY allow structural pseudo-classes
+                    if (strpos($selector, ':') !== false && !preg_match('/:\S+\-(child|type)\(/i', $selector)) continue;
+
+                    $all_selectors[] = array('selector' => trim($selector),
+                                             'attributes' => trim($selectorString[3]),
+                                             'line' => $key, // keep track of where it appears in the file, since order is important
+                    );
+                }
+            }
+
+            // now sort the selectors by precedence
+            usort($all_selectors, array($this,'sortBySelectorPrecedence'));
+
+            $this->caches[CACHE_CSS][$csskey] = $all_selectors;
+        }
+
+        foreach ($this->caches[CACHE_CSS][$csskey] as $value) {
+
+            // query the body for the xpath selector
+            $nodes = $xpath->query($this->translateCSStoXpath(trim($value['selector'])));
+
+            foreach($nodes as $node) {
+                // if it has a style attribute, get it, process it, and append (overwrite) new stuff
+                if ($node->hasAttribute('style')) {
+                    // break it up into an associative array
+                    $oldStyleArr = $this->cssStyleDefinitionToArray($node->getAttribute('style'));
+                    $newStyleArr = $this->cssStyleDefinitionToArray($value['attributes']);
+
+                    // new styles overwrite the old styles (not technically accurate, but close enough)
+                    $combinedArr = array_merge($oldStyleArr,$newStyleArr);
+                    $style = '';
+                    foreach ($combinedArr as $k => $v) $style .= (strtolower($k) . ':' . $v . ';');
+                } else {
+                    // otherwise create a new style
+                    $style = trim($value['attributes']);
+                }
+                $node->setAttribute('style', $style);
+            }
+        }
+
+        // now iterate through the nodes that contained inline styles in the original HTML
+        foreach ($vistedNodeRef as $nodeKey => $origStyleArr) {
+            $node = $vistedNodes[$nodeKey];
+            $currStyleArr = $this->cssStyleDefinitionToArray($node->getAttribute('style'));
+
+            $combinedArr = array_merge($currStyleArr, $origStyleArr);
+            $style = '';
+            foreach ($combinedArr as $k => $v) $style .= (strtolower($k) . ':' . $v . ';');
+
+            $node->setAttribute('style', $style);
+        }
+
+        // This removes styles from your email that contain display:none.
+        // We need to look for display:none, but we need to do a case-insensitive search. Since DOMDocument only supports XPath 1.0,
+        // lower-case() isn't available to us. We've thus far only set attributes to lowercase, not attribute values. Consequently, we need
+        // to translate() the letters that would be in 'NONE' ("NOE") to lowercase.
+        $nodes = $xpath->query('//*[contains(translate(translate(@style," ",""),"NOE","noe"),"display:none")]');
+        // The checks on parentNode and is_callable below ensure that if we've deleted the parent node,
+        // we don't try to call removeChild on a nonexistent child node
+        if ($nodes->length > 0)
+            foreach ($nodes as $node)
+                if ($node->parentNode && is_callable(array($node->parentNode,'removeChild')))
+                        $node->parentNode->removeChild($node);
+
+        if ($this->preserveEncoding) {
+            return mb_convert_encoding($xmldoc->saveHTML(), $encoding, 'HTML-ENTITIES');
+        } else {
+            return $xmldoc->saveHTML();
+        }
+    }
+
+    private function sortBySelectorPrecedence($a, $b) {
+        $precedenceA = $this->getCSSSelectorPrecedence($a['selector']);
+        $precedenceB = $this->getCSSSelectorPrecedence($b['selector']);
+
+        // we want these sorted ascendingly so selectors with lesser precedence get processed first and
+        // selectors with greater precedence get sorted last
+        return ($precedenceA == $precedenceB) ? ($a['line'] < $b['line'] ? -1 : 1) : ($precedenceA < $precedenceB ? -1 : 1);
+    }
+
+    private function getCSSSelectorPrecedence($selector) {
+        $selectorkey = md5($selector);
+        if (!isset($this->caches[CACHE_SELECTOR][$selectorkey])) {
+            $precedence = 0;
+            $value = 100;
+            $search = array('\#','\.',''); // ids: worth 100, classes: worth 10, elements: worth 1
+
+            foreach ($search as $s) {
+                if (trim($selector == '')) break;
+                $num = 0;
+                $selector = preg_replace('/'.$s.'\w+/','',$selector,-1,$num);
+                $precedence += ($value * $num);
+                $value /= 10;
+            }
+            $this->caches[CACHE_SELECTOR][$selectorkey] = $precedence;
+        }
+
+        return $this->caches[CACHE_SELECTOR][$selectorkey];
+    }
+
+    // right now we support all CSS 1 selectors and most CSS2/3 selectors.
+    // http://plasmasturm.org/log/444/
+    private function translateCSStoXpath($css_selector) {
+
+        $css_selector = trim($css_selector);
+        $xpathkey = md5($css_selector);
+        if (!isset($this->caches[CACHE_XPATH][$xpathkey])) {
+            // returns an Xpath selector
+            $search = array(
+                               '/\s+>\s+/', // Matches any element that is a child of parent.
+                               '/\s+\+\s+/', // Matches any element that is an adjacent sibling.
+                               '/\s+/', // Matches any element that is a descendant of an parent element element.
+                               '/([^\/]+):first-child/i', // first-child pseudo-selector
+                               '/([^\/]+):last-child/i', // last-child pseudo-selector
+                               '/(\w)\[(\w+)\]/', // Matches element with attribute
+                               '/(\w)\[(\w+)\=[\'"]?(\w+)[\'"]?\]/', // Matches element with EXACT attribute
+                               '/(\w+)?\#([\w\-]+)/e', // Matches id attributes
+                               '/(\w+|[\*\]])?((\.[\w\-]+)+)/e', // Matches class attributes
+
+            );
+            $replace = array(
+                               '/',
+                               '/following-sibling::*[1]/self::',
+                               '//',
+                               '*[1]/self::\\1',
+                               '*[last()]/self::\\1',
+                               '\\1[@\\2]',
+                               '\\1[@\\2="\\3"]',
+                               "(strlen('\\1') ? '\\1' : '*').'[@id=\"\\2\"]'",
+                               "(strlen('\\1') ? '\\1' : '*').'[contains(concat(\" \",@class,\" \"),concat(\" \",\"'.implode('\",\" \"))][contains(concat(\" \",@class,\" \"),concat(\" \",\"',explode('.',substr('\\2',1))).'\",\" \"))]'",
+            );
+
+            $css_selector = '//'.preg_replace($search, $replace, $css_selector);
+
+            // advanced selectors are going to require a bit more advanced emogrification
+            // if we required PHP 5.3 we could do this with closures
+            $css_selector = preg_replace_callback('/([^\/]+):nth-child\(\s*(odd|even|[+\-]?\d|[+\-]?\d?n(\s*[+\-]\s*\d)?)\s*\)/i', array($this, 'translateNthChild'), $css_selector);
+            $css_selector = preg_replace_callback('/([^\/]+):nth-of-type\(\s*(odd|even|[+\-]?\d|[+\-]?\d?n(\s*[+\-]\s*\d)?)\s*\)/i', array($this, 'translateNthOfType'), $css_selector);
+
+            $this->caches[CACHE_SELECTOR][$xpathkey] = $css_selector;
+        }
+        return $this->caches[CACHE_SELECTOR][$xpathkey];
+    }
+
+    private function translateNthChild($match) {
+
+        $result = $this->parseNth($match);
+
+        if (isset($result[self::MULTIPLIER])) {
+            if ($result[self::MULTIPLIER] < 0) {
+                $result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
+                return sprintf("*[(last() - position()) mod %u = %u]/self::%s", $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
+            } else {
+                return sprintf("*[position() mod %u = %u]/self::%s", $result[self::MULTIPLIER], $result[self::INDEX], $match[1]);
+            }
+        } else {
+            return sprintf("*[%u]/self::%s", $result[self::INDEX], $match[1]);
+        }
+    }
+
+    private function translateNthOfType($match) {
+
+        $result = $this->parseNth($match);
+
+        if (isset($result[self::MULTIPLIER])) {
+            if ($result[self::MULTIPLIER] < 0) {
+                $result[self::MULTIPLIER] = abs($result[self::MULTIPLIER]);
+                return sprintf("%s[(last() - position()) mod %u = %u]", $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
+            } else {
+                return sprintf("%s[position() mod %u = %u]", $match[1], $result[self::MULTIPLIER], $result[self::INDEX]);
+            }
+        } else {
+            return sprintf("%s[%u]", $match[1], $result[self::INDEX]);
+        }
+    }
+
+    private function parseNth($match) {
+
+        if (in_array(strtolower($match[2]), array('even','odd'))) {
+            $index = strtolower($match[2]) == 'even' ? 0 : 1;
+            return array(self::MULTIPLIER => 2, self::INDEX => $index);
+        // if there is a multiplier
+        } else if (stripos($match[2], 'n') === false) {
+            $index = intval(str_replace(' ', '', $match[2]));
+            return array(self::INDEX => $index);
+        } else {
+
+            if (isset($match[3])) {
+                $multiple_term = str_replace($match[3], '', $match[2]);
+                $index = intval(str_replace(' ', '', $match[3]));
+            } else {
+                $multiple_term = $match[2];
+                $index = 0;
+            }
+
+            $multiplier = str_ireplace('n', '', $multiple_term);
+
+            if (!strlen($multiplier)) $multiplier = 1;
+            elseif ($multiplier == 0) return array(self::INDEX => $index);
+            else $multiplier = intval($multiplier);
+
+            while ($index < 0) $index += abs($multiplier);
+
+            return array(self::MULTIPLIER => $multiplier, self::INDEX => $index);
+        }
+    }
+
+    private function cssStyleDefinitionToArray($style) {
+        $definitions = explode(';',$style);
+        $retArr = array();
+        foreach ($definitions as $def) {
+            if (empty($def) || strpos($def, ':') === false) continue;
+            list($key,$value) = explode(':',$def,2);
+            if (empty($key) || strlen(trim($value)) === 0) continue;
+            $retArr[trim($key)] = trim($value);
+        }
+        return $retArr;
+    }
+}
Index: /tags/2.6.0RC1/include/feedcreator.class.php
===================================================================
--- /tags/2.6.0RC1/include/feedcreator.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/feedcreator.class.php	(revision 25596)
@@ -0,0 +1,1541 @@
+<?php
+/***************************************************************************
+
+FeedCreator class v1.7.2
+originally (c) Kai Blankenhorn
+www.bitfolge.de
+kaib@bitfolge.de
+v1.3 work by Scott Reynen (scott@randomchaos.com) and Kai Blankenhorn
+v1.5 OPML support by Dirk Clemens
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+****************************************************************************
+
+
+Changelog:
+
+v1.7.2	10-11-04
+	license changed to LGPL
+
+v1.7.1
+	fixed a syntax bug
+	fixed left over debug code
+
+v1.7	07-18-04
+	added HTML and JavaScript feeds (configurable via CSS) (thanks to Pascal Van Hecke)
+	added HTML descriptions for all feed formats (thanks to Pascal Van Hecke)
+	added a switch to select an external stylesheet (thanks to Pascal Van Hecke)
+	changed default content-type to application/xml
+	added character encoding setting
+	fixed numerous smaller bugs (thanks to Sören Fuhrmann of golem.de)
+	improved changing ATOM versions handling (thanks to August Trometer)
+	improved the UniversalFeedCreator's useCached method (thanks to Sören Fuhrmann of golem.de)
+	added charset output in HTTP headers (thanks to Sören Fuhrmann of golem.de)
+	added Slashdot namespace to RSS 1.0 (thanks to Sören Fuhrmann of golem.de)
+
+v1.6	05-10-04
+	added stylesheet to RSS 1.0 feeds
+	fixed generator comment (thanks Kevin L. Papendick and Tanguy Pruvot)
+	fixed RFC822 date bug (thanks Tanguy Pruvot)
+	added TimeZone customization for RFC8601 (thanks Tanguy Pruvot)
+	fixed Content-type could be empty (thanks Tanguy Pruvot)
+	fixed author/creator in RSS1.0 (thanks Tanguy Pruvot)
+
+v1.6 beta	02-28-04
+	added Atom 0.3 support (not all features, though)
+	improved OPML 1.0 support (hopefully - added more elements)
+	added support for arbitrary additional elements (use with caution)
+	code beautification :-)
+	considered beta due to some internal changes
+
+v1.5.1	01-27-04
+	fixed some RSS 1.0 glitches (thanks to Stéphane Vanpoperynghe)
+	fixed some inconsistencies between documentation and code (thanks to Timothy Martin)
+
+v1.5	01-06-04
+	added support for OPML 1.0
+	added more documentation
+
+v1.4	11-11-03
+	optional feed saving and caching
+	improved documentation
+	minor improvements
+
+v1.3    10-02-03
+	renamed to FeedCreator, as it not only creates RSS anymore
+	added support for mbox
+	tentative support for echo/necho/atom/pie/???
+
+v1.2    07-20-03
+	intelligent auto-truncating of RSS 0.91 attributes
+	don't create some attributes when they're not set
+	documentation improved
+	fixed a real and a possible bug with date conversions
+	code cleanup
+
+v1.1    06-29-03
+	added images to feeds
+	now includes most RSS 0.91 attributes
+	added RSS 2.0 feeds
+
+v1.0    06-24-03
+	initial release
+
+
+
+***************************************************************************/
+
+/*** GENERAL USAGE *********************************************************
+
+include("feedcreator.class.php");
+
+$rss = new UniversalFeedCreator();
+$rss->useCached(); // use cached version if age<1 hour
+$rss->title = "PHP news";
+$rss->description = "daily news from the PHP scripting world";
+
+//optional
+$rss->descriptionTruncSize = 500;
+$rss->descriptionHtmlSyndicated = true;
+
+$rss->link = "http://www.dailyphp.net/news";
+$rss->syndicationURL = "http://www.dailyphp.net/".$_SERVER["PHP_SELF"];
+
+$image = new FeedImage();
+$image->title = "dailyphp.net logo";
+$image->url = "http://www.dailyphp.net/images/logo.gif";
+$image->link = "http://www.dailyphp.net";
+$image->description = "Feed provided by dailyphp.net. Click to visit.";
+
+//optional
+$image->descriptionTruncSize = 500;
+$image->descriptionHtmlSyndicated = true;
+
+$rss->image = $image;
+
+// get your news items from somewhere, e.g. your database:
+mysql_select_db($dbHost, $dbUser, $dbPass);
+$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
+while ($data = mysql_fetch_object($res)) {
+    $item = new FeedItem();
+    $item->title = $data->title;
+    $item->link = $data->url;
+    $item->description = $data->short;
+
+    //optional
+    item->descriptionTruncSize = 500;
+    item->descriptionHtmlSyndicated = true;
+
+    $item->date = $data->newsdate;
+    $item->source = "http://www.dailyphp.net";
+    $item->author = "John Doe";
+
+    $rss->addItem($item);
+}
+
+// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1 (deprecated),
+// MBOX, OPML, ATOM, ATOM0.3, HTML, JS
+echo $rss->saveFeed("RSS1.0", "news/feed.xml");
+
+
+***************************************************************************
+*          A little setup                                                 *
+**************************************************************************/
+
+// your local timezone, set to "" to disable or for GMT
+define("TIME_ZONE","+00:00");
+
+
+
+
+/**
+ * Version string.
+ **/
+define("FEEDCREATOR_VERSION", "FeedCreator 1.7.2");
+
+
+
+/**
+ * A FeedItem is a part of a FeedCreator feed.
+ *
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ * @since 1.3
+ */
+class FeedItem extends HtmlDescribable {
+	/**
+	 * Mandatory attributes of an item.
+	 */
+	var $title, $description, $link;
+
+	/**
+	 * Optional attributes of an item.
+	 */
+	var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
+
+	/**
+	 * Publishing date of an item. May be in one of the following formats:
+	 *
+	 *	RFC 822:
+	 *	"Mon, 20 Jan 03 18:05:41 +0400"
+	 *	"20 Jan 03 18:05:41 +0000"
+	 *
+	 *	ISO 8601:
+	 *	"2003-01-20T18:05:41+04:00"
+	 *
+	 *	Unix:
+	 *	1043082341
+	 */
+	var $date;
+
+	/**
+	 * Any additional elements to include as an assiciated array. All $key => $value pairs
+	 * will be included unencoded in the feed item in the form
+	 *     <$key>$value</$key>
+	 * Again: No encoding will be used! This means you can invalidate or enhance the feed
+	 * if $value contains markup. This may be abused to embed tags not implemented by
+	 * the FeedCreator class used.
+	 */
+	var $additionalElements = Array();
+
+	// on hold
+	// var $source;
+}
+
+
+
+/**
+ * An FeedImage may be added to a FeedCreator feed.
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ * @since 1.3
+ */
+class FeedImage extends HtmlDescribable {
+	/**
+	 * Mandatory attributes of an image.
+	 */
+	var $title, $url, $link;
+
+	/**
+	 * Optional attributes of an image.
+	 */
+	var $width, $height, $description;
+}
+
+
+
+/**
+ * An HtmlDescribable is an item within a feed that can have a description that may
+ * include HTML markup.
+ */
+class HtmlDescribable {
+	/**
+	 * Indicates whether the description field should be rendered in HTML.
+	 */
+	var $descriptionHtmlSyndicated;
+
+	/**
+	 * Indicates whether and to how many characters a description should be truncated.
+	 */
+	var $descriptionTruncSize;
+
+	/**
+	 * Returns a formatted description field, depending on descriptionHtmlSyndicated and
+	 * $descriptionTruncSize properties
+	 * @return    string    the formatted description
+	 */
+	function getDescription() {
+		$descriptionField = new FeedHtmlField($this->description);
+		$descriptionField->syndicateHtml = $this->descriptionHtmlSyndicated;
+		$descriptionField->truncSize = $this->descriptionTruncSize;
+		return $descriptionField->output();
+	}
+
+}
+
+
+/**
+ * An FeedHtmlField describes and generates
+ * a feed, item or image html field (probably a description). Output is
+ * generated based on $truncSize, $syndicateHtml properties.
+ * @author Pascal Van Hecke <feedcreator.class.php@vanhecke.info>
+ * @version 1.6
+ */
+class FeedHtmlField {
+	/**
+	 * Mandatory attributes of a FeedHtmlField.
+	 */
+	var $rawFieldContent;
+
+	/**
+	 * Optional attributes of a FeedHtmlField.
+	 *
+	 */
+	var $truncSize, $syndicateHtml;
+
+	/**
+	 * Creates a new instance of FeedHtmlField.
+	 * @param  $string: if given, sets the rawFieldContent property
+	 */
+	function FeedHtmlField($parFieldContent) {
+		if ($parFieldContent) {
+			$this->rawFieldContent = $parFieldContent;
+		}
+	}
+
+
+	/**
+	 * Creates the right output, depending on $truncSize, $syndicateHtml properties.
+	 * @return string    the formatted field
+	 */
+	function output() {
+		// when field available and syndicated in html we assume
+		// - valid html in $rawFieldContent and we enclose in CDATA tags
+		// - no truncation (truncating risks producing invalid html)
+		if (!$this->rawFieldContent) {
+			$result = "";
+		}	elseif ($this->syndicateHtml) {
+			$result = "<![CDATA[".$this->rawFieldContent."]]>";
+		} else {
+			if ($this->truncSize and is_int($this->truncSize)) {
+				$result = FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);
+			} else {
+				$result = htmlspecialchars($this->rawFieldContent);
+			}
+		}
+		return $result;
+	}
+
+}
+
+
+
+/**
+ * UniversalFeedCreator lets you choose during runtime which
+ * format to build.
+ * For general usage of a feed class, see the FeedCreator class
+ * below or the example above.
+ *
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class UniversalFeedCreator extends FeedCreator {
+	var $_feed;
+
+	function _setFormat($format) {
+		switch (strtoupper($format)) {
+
+			case "2.0":
+				// fall through
+			case "RSS2.0":
+				$this->_feed = new RSSCreator20();
+				break;
+
+			case "1.0":
+				// fall through
+			case "RSS1.0":
+				$this->_feed = new RSSCreator10();
+				break;
+
+			case "0.91":
+				// fall through
+			case "RSS0.91":
+				$this->_feed = new RSSCreator091();
+				break;
+
+			case "PIE0.1":
+				$this->_feed = new PIECreator01();
+				break;
+
+			case "MBOX":
+				$this->_feed = new MBOXCreator();
+				break;
+
+			case "OPML":
+				$this->_feed = new OPMLCreator();
+				break;
+
+			case "ATOM":
+				// fall through: always the latest ATOM version
+
+			case "ATOM0.3":
+				$this->_feed = new AtomCreator03();
+				break;
+
+			case "HTML":
+				$this->_feed = new HTMLCreator();
+				break;
+
+			case "JS":
+				// fall through
+			case "JAVASCRIPT":
+				$this->_feed = new JSCreator();
+				break;
+
+			default:
+				$this->_feed = new RSSCreator091();
+				break;
+		}
+
+		$vars = get_object_vars($this);
+		foreach ($vars as $key => $value) {
+			// prevent overwriting of properties "contentType", "encoding"; do not copy "_feed" itself
+			if (!in_array($key, array("_feed", "contentType"/*PWG, "encoding"*/))) {
+				$this->_feed->{$key} = $this->{$key};
+			}
+		}
+	}
+
+	/**
+	 * Creates a syndication feed based on the items previously added.
+	 *
+	 * @see        FeedCreator::addItem()
+	 * @param    string    format    format the feed should comply to. Valid values are:
+	 *			"PIE0.1", "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3", "HTML", "JS"
+	 * @return    string    the contents of the feed.
+	 */
+	function createFeed($format = "RSS0.91") {
+		$this->_setFormat($format);
+		return $this->_feed->createFeed();
+	}
+
+
+
+	/**
+	 * Saves this feed as a file on the local disk. After the file is saved, an HTTP redirect
+	 * header may be sent to redirect the use to the newly created file.
+	 * @since 1.4
+	 *
+	 * @param	string	format	format the feed should comply to. Valid values are:
+	 *			"PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM", "ATOM0.3", "HTML", "JS"
+	 * @param	string	filename	optional	the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+	 * @param	boolean	displayContents	optional	send the content of the file or not. If true, the file will be sent in the body of the response.
+	 */
+	function saveFeed($format="RSS0.91", $filename="", $displayContents=true) {
+		$this->_setFormat($format);
+		$this->_feed->saveFeed($filename, $displayContents);
+	}
+
+
+   /**
+    * Turns on caching and checks if there is a recent version of this feed in the cache.
+    * If there is, an HTTP redirect header is sent.
+    * To effectively use caching, you should create the FeedCreator object and call this method
+    * before anything else, especially before you do the time consuming task to build the feed
+    * (web fetching, for example).
+    *
+    * @param   string   format   format the feed should comply to. Valid values are:
+    *       "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
+    * @param filename   string   optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+    * @param timeout int      optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+    */
+   function useCached($format="RSS0.91", $filename="", $timeout=3600) {
+      $this->_setFormat($format);
+      $this->_feed->useCached($filename, $timeout);
+   }
+
+}
+
+
+/**
+ * FeedCreator is the abstract base implementation for concrete
+ * implementations that implement a specific format of syndication.
+ *
+ * @abstract
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ * @since 1.4
+ */
+class FeedCreator extends HtmlDescribable {
+
+	/**
+	 * Mandatory attributes of a feed.
+	 */
+	var $title, $description, $link;
+
+
+	/**
+	 * Optional attributes of a feed.
+	 */
+	var $syndicationURL, $image, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
+
+	/**
+	* The url of the external xsl stylesheet used to format the naked rss feed.
+	* Ignored in the output when empty.
+	*/
+	var $xslStyleSheet = "";
+
+
+	/**
+	 * @access private
+	 */
+	var $items = Array();
+
+
+	/**
+	 * This feed's MIME content type.
+	 * @since 1.4
+	 * @access private
+	 */
+	var $contentType = "application/xml";
+
+
+	/**
+	 * This feed's character encoding.
+	 * @since 1.6.1
+	 **/
+	var $encoding = "ISO-8859-1";
+
+
+	/**
+	 * Any additional elements to include as an assiciated array. All $key => $value pairs
+	 * will be included unencoded in the feed in the form
+	 *     <$key>$value</$key>
+	 * Again: No encoding will be used! This means you can invalidate or enhance the feed
+	 * if $value contains markup. This may be abused to embed tags not implemented by
+	 * the FeedCreator class used.
+	 */
+	var $additionalElements = Array();
+
+
+	/**
+	 * Adds an FeedItem to the feed.
+	 *
+	 * @param object FeedItem $item The FeedItem to add to the feed.
+	 * @access public
+	 */
+	function addItem($item) {
+		$this->items[] = $item;
+	}
+
+
+	/**
+	 * Truncates a string to a certain length at the most sensible point.
+	 * First, if there's a '.' character near the end of the string, the string is truncated after this character.
+	 * If there is no '.', the string is truncated after the last ' ' character.
+	 * If the string is truncated, " ..." is appended.
+	 * If the string is already shorter than $length, it is returned unchanged.
+	 *
+	 * @static
+	 * @param string    string A string to be truncated.
+	 * @param int        length the maximum length the string should be truncated to
+	 * @return string    the truncated string
+	 */
+	function iTrunc($string, $length) {
+		if (strlen($string)<=$length) {
+			return $string;
+		}
+
+		$pos = strrpos($string,".");
+		if ($pos>=$length-4) {
+			$string = substr($string,0,$length-4);
+			$pos = strrpos($string,".");
+		}
+		if ($pos>=$length*0.4) {
+			return substr($string,0,$pos+1)." ...";
+		}
+
+		$pos = strrpos($string," ");
+		if ($pos>=$length-4) {
+			$string = substr($string,0,$length-4);
+			$pos = strrpos($string," ");
+		}
+		if ($pos>=$length*0.4) {
+			return substr($string,0,$pos)." ...";
+		}
+
+		return substr($string,0,$length-4)." ...";
+
+	}
+
+
+	/**
+	 * Creates a comment indicating the generator of this feed.
+	 * The format of this comment seems to be recognized by
+	 * Syndic8.com.
+	 */
+	function _createGeneratorComment() {
+		return "<!-- generator=\"".FEEDCREATOR_VERSION."\" -->\n";
+	}
+
+
+	/**
+	 * Creates a string containing all additional elements specified in
+	 * $additionalElements.
+	 * @param	elements	array	an associative array containing key => value pairs
+	 * @param indentString	string	a string that will be inserted before every generated line
+	 * @return    string    the XML tags corresponding to $additionalElements
+	 */
+	function _createAdditionalElements($elements, $indentString="") {
+		$ae = "";
+		if (is_array($elements)) {
+			foreach($elements AS $key => $value) {
+				$ae.= $indentString."<$key>$value</$key>\n";
+			}
+		}
+		return $ae;
+	}
+
+	function _createStylesheetReferences() {
+		$xml = "";
+		if (isset($this->cssStyleSheet)) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n";
+		if ($this->xslStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n";
+		return $xml;
+	}
+
+
+	/**
+	 * Builds the feed's text.
+	 * @abstract
+	 * @return    string    the feed's complete text
+	 */
+	function createFeed() {
+	}
+
+	/**
+	 * Generate a filename for the feed cache file. The result will be $_SERVER["PHP_SELF"] with the extension changed to .xml.
+	 * For example:
+	 *
+	 * echo $_SERVER["PHP_SELF"]."\n";
+	 * echo FeedCreator::_generateFilename();
+	 *
+	 * would produce:
+	 *
+	 * /rss/latestnews.php
+	 * latestnews.xml
+	 *
+	 * @return string the feed cache filename
+	 * @since 1.4
+	 * @access private
+	 */
+	function _generateFilename() {
+		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml";
+	}
+
+
+	/**
+	 * @since 1.4
+	 * @access private
+	 */
+	function _redirect($filename) {
+		// attention, heavily-commented-out-area
+
+		// maybe use this in addition to file time checking
+		//Header("Expires: ".date("r",time()+$this->_timeout));
+
+		/* no caching at all, doesn't seem to work as good:
+		Header("Cache-Control: no-cache");
+		Header("Pragma: no-cache");
+		*/
+
+		// HTTP redirect, some feed readers' simple HTTP implementations don't follow it
+		//Header("Location: ".$filename);
+
+		Header("Content-Type: ".$this->contentType."; charset=".$this->encoding."; filename=".basename($filename));
+		Header("Content-Disposition: inline; filename=".basename($filename));
+		readfile($filename, "r");
+		die();
+	}
+
+	/**
+	 * Turns on caching and checks if there is a recent version of this feed in the cache.
+	 * If there is, an HTTP redirect header is sent.
+	 * To effectively use caching, you should create the FeedCreator object and call this method
+	 * before anything else, especially before you do the time consuming task to build the feed
+	 * (web fetching, for example).
+	 * @since 1.4
+	 * @param filename	string	optional	the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+	 * @param timeout	int		optional	the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+	 */
+	function useCached($filename="", $timeout=3600) {
+		$this->_timeout = $timeout;
+		if ($filename=="") {
+			$filename = $this->_generateFilename();
+		}
+		if (file_exists($filename) AND (time()-filemtime($filename) < $timeout)) {
+			$this->_redirect($filename);
+		}
+	}
+
+
+	/**
+	 * Saves this feed as a file on the local disk. After the file is saved, a redirect
+	 * header may be sent to redirect the user to the newly created file.
+	 * @since 1.4
+	 *
+	 * @param filename	string	optional	the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+	 * @param redirect	boolean	optional	send an HTTP redirect header or not. If true, the user will be automatically redirected to the created file.
+	 */
+	function saveFeed($filename="", $displayContents=true) {
+		if ($filename=="") {
+			$filename = $this->_generateFilename();
+		}
+		$feedFile = fopen($filename, "w+");
+		if ($feedFile) {
+			fputs($feedFile,$this->createFeed());
+			fclose($feedFile);
+			if ($displayContents) {
+				$this->_redirect($filename);
+			}
+		} else {
+			echo "<br><b>Error creating feed file, please check write permissions.</b><br>";
+		}
+	}
+
+}
+
+
+/**
+ * FeedDate is an internal class that stores a date for a feed or feed item.
+ * Usually, you won't need to use this.
+ */
+class FeedDate {
+	var $unix;
+
+	/**
+	 * Creates a new instance of FeedDate representing a given date.
+	 * Accepts RFC 822, ISO 8601 date formats as well as unix time stamps.
+	 * @param mixed $dateString optional the date this FeedDate will represent. If not specified, the current date and time is used.
+	 */
+	function FeedDate($dateString="") {
+		if ($dateString=="") $dateString = date("r");
+
+		if (is_integer($dateString)) {
+			$this->unix = $dateString;
+			return;
+		}
+		if (preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+)?(\\d{1,2})\\s+([a-zA-Z]{3})\\s+(\\d{4})\\s+(\\d{2}):(\\d{2}):(\\d{2})\\s+(.*)~",$dateString,$matches)) {
+			$months = Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);
+			$this->unix = mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]);
+			if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
+				$tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
+			} else {
+				if (strlen($matches[7])==1) {
+					$oneHour = 3600;
+					$ord = ord($matches[7]);
+					if ($ord < ord("M")) {
+						$tzOffset = (ord("A") - $ord - 1) * $oneHour;
+					} elseif ($ord >= ord("M") AND $matches[7]!="Z") {
+						$tzOffset = ($ord - ord("M")) * $oneHour;
+					} elseif ($matches[7]=="Z") {
+						$tzOffset = 0;
+					}
+				}
+				switch ($matches[7]) {
+					case "UT":
+					case "GMT":	$tzOffset = 0;
+				}
+			}
+			$this->unix += $tzOffset;
+			return;
+		}
+		if (preg_match("~(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(.*)~",$dateString,$matches)) {
+			$this->unix = mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
+			if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
+				$tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
+			} else {
+				if ($matches[7]=="Z") {
+					$tzOffset = 0;
+				}
+			}
+			$this->unix += $tzOffset;
+			return;
+		}
+		$this->unix = 0;
+	}
+
+	/**
+	 * Gets the date stored in this FeedDate as an RFC 822 date.
+	 *
+	 * @return a date in RFC 822 format
+	 */
+	function rfc822() {
+		//return gmdate("r",$this->unix);
+		$date = gmdate("D, d M Y H:i:s", $this->unix);
+		if (TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE);
+		return $date;
+	}
+
+	/**
+	 * Gets the date stored in this FeedDate as an ISO 8601 date.
+	 *
+	 * @return a date in ISO 8601 format
+	 */
+	function iso8601() {
+		$date = gmdate("Y-m-d\TH:i:sO",$this->unix);
+		$date = substr($date,0,22) . ':' . substr($date,-2);
+		if (TIME_ZONE!="") $date = str_replace("+00:00",TIME_ZONE,$date);
+		return $date;
+	}
+
+	/**
+	 * Gets the date stored in this FeedDate as unix time stamp.
+	 *
+	 * @return a date as a unix time stamp
+	 */
+	function unix() {
+		return $this->unix;
+	}
+}
+
+
+/**
+ * RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0.
+ *
+ * @see http://www.purl.org/rss/1.0/
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class RSSCreator10 extends FeedCreator {
+
+	/**
+	 * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
+	 * The feed will contain all items previously added in the same order.
+	 * @return    string    the feed's complete text
+	 */
+	function createFeed() {
+		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+		$feed.= $this->_createGeneratorComment();
+		if ($this->cssStyleSheet=="") {
+			$cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css";
+		}
+		$feed.= $this->_createStylesheetReferences();
+		$feed.= "<rdf:RDF\n";
+		$feed.= "    xmlns=\"http://purl.org/rss/1.0/\"\n";
+		$feed.= "    xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
+		$feed.= "    xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n";
+		$feed.= "    xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
+		$feed.= "    <channel rdf:about=\"".$this->syndicationURL."\">\n";
+		$feed.= "        <title>".htmlspecialchars($this->title)."</title>\n";
+		$feed.= "        <description>".htmlspecialchars($this->description)."</description>\n";
+		$feed.= "        <link>".$this->link."</link>\n";
+		if ($this->image!=null) {
+			$feed.= "        <image rdf:resource=\"".$this->image->url."\" />\n";
+		}
+		$now = new FeedDate();
+		$feed.= "       <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n";
+		$feed.= "        <items>\n";
+		$feed.= "            <rdf:Seq>\n";
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "                <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
+		}
+		$feed.= "            </rdf:Seq>\n";
+		$feed.= "        </items>\n";
+		$feed.= "    </channel>\n";
+		if ($this->image!=null) {
+			$feed.= "    <image rdf:about=\"".$this->image->url."\">\n";
+			$feed.= "        <title>".$this->image->title."</title>\n";
+			$feed.= "        <link>".$this->image->link."</link>\n";
+			$feed.= "        <url>".$this->image->url."</url>\n";
+			$feed.= "    </image>\n";
+		}
+		$feed.= $this->_createAdditionalElements($this->additionalElements, "    ");
+
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "    <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n";
+			//$feed.= "        <dc:type>Posting</dc:type>\n";
+			$feed.= "        <dc:format>text/html</dc:format>\n";
+			if ($this->items[$i]->date!=null) {
+				$itemDate = new FeedDate($this->items[$i]->date);
+				$feed.= "        <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n";
+			}
+			if ($this->items[$i]->source!="") {
+				$feed.= "        <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n";
+			}
+			if ($this->items[$i]->author!="") {
+				$feed.= "        <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n";
+			}
+			$feed.= "        <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r","  ")))."</title>\n";
+			$feed.= "        <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+			$feed.= "        <description>".htmlspecialchars($this->items[$i]->description)."</description>\n";
+			$feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, "        ");
+			$feed.= "    </item>\n";
+		}
+		$feed.= "</rdf:RDF>\n";
+		return $feed;
+	}
+}
+
+
+
+/**
+ * RSSCreator091 is a FeedCreator that implements RSS 0.91 Spec, revision 3.
+ *
+ * @see http://my.netscape.com/publish/formats/rss-spec-0.91.html
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class RSSCreator091 extends FeedCreator {
+
+	/**
+	 * Stores this RSS feed's version number.
+	 * @access private
+	 */
+	var $RSSVersion;
+
+	function RSSCreator091() {
+		$this->_setRSSVersion("0.91");
+		$this->contentType = "application/rss+xml";
+	}
+
+	/**
+	 * Sets this RSS feed's version number.
+	 * @access private
+	 */
+	function _setRSSVersion($version) {
+		$this->RSSVersion = $version;
+	}
+
+	/**
+	 * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
+	 * The feed will contain all items previously added in the same order.
+	 * @return    string    the feed's complete text
+	 */
+	function createFeed() {
+		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+		$feed.= $this->_createGeneratorComment();
+		$feed.= $this->_createStylesheetReferences();
+		$feed.= "<rss version=\"".$this->RSSVersion."\">\n";
+		$feed.= "    <channel>\n";
+		$feed.= "        <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
+		$this->descriptionTruncSize = 500;
+		$feed.= "        <description>".$this->getDescription()."</description>\n";
+		$feed.= "        <link>".$this->link."</link>\n";
+		$now = new FeedDate();
+		$feed.= "        <lastBuildDate>".htmlspecialchars($now->rfc822())."</lastBuildDate>\n";
+		$feed.= "        <generator>".FEEDCREATOR_VERSION."</generator>\n";
+
+		if ($this->image!=null) {
+			$feed.= "        <image>\n";
+			$feed.= "            <url>".$this->image->url."</url>\n";
+			$feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n";
+			$feed.= "            <link>".$this->image->link."</link>\n";
+			if ($this->image->width!="") {
+				$feed.= "            <width>".$this->image->width."</width>\n";
+			}
+			if ($this->image->height!="") {
+				$feed.= "            <height>".$this->image->height."</height>\n";
+			}
+			if ($this->image->description!="") {
+				$feed.= "            <description>".$this->image->getDescription()."</description>\n";
+			}
+			$feed.= "        </image>\n";
+		}
+		if ($this->language!="") {
+			$feed.= "        <language>".$this->language."</language>\n";
+		}
+		if ($this->copyright!="") {
+			$feed.= "        <copyright>".FeedCreator::iTrunc(htmlspecialchars($this->copyright),100)."</copyright>\n";
+		}
+		if ($this->editor!="") {
+			$feed.= "        <managingEditor>".FeedCreator::iTrunc(htmlspecialchars($this->editor),100)."</managingEditor>\n";
+		}
+		if ($this->webmaster!="") {
+			$feed.= "        <webMaster>".FeedCreator::iTrunc(htmlspecialchars($this->webmaster),100)."</webMaster>\n";
+		}
+		if ($this->pubDate!="") {
+			$pubDate = new FeedDate($this->pubDate);
+			$feed.= "        <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
+		}
+		if ($this->category!="") {
+			$feed.= "        <category>".htmlspecialchars($this->category)."</category>\n";
+		}
+		if ($this->docs!="") {
+			$feed.= "        <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs),500)."</docs>\n";
+		}
+		if ($this->ttl!="") {
+			$feed.= "        <ttl>".htmlspecialchars($this->ttl)."</ttl>\n";
+		}
+		if ($this->rating!="") {
+			$feed.= "        <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating),500)."</rating>\n";
+		}
+		if ($this->skipHours!="") {
+			$feed.= "        <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n";
+		}
+		if ($this->skipDays!="") {
+			$feed.= "        <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n";
+		}
+		$feed.= $this->_createAdditionalElements($this->additionalElements, "    ");
+
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "        <item>\n";
+			$feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
+			$feed.= "            <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+			$feed.= "            <description>".$this->items[$i]->getDescription()."</description>\n";
+
+			if ($this->items[$i]->author!="") {
+				$feed.= "            <author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
+			}
+			/*
+			// on hold
+			if ($this->items[$i]->source!="") {
+					$feed.= "            <source>".htmlspecialchars($this->items[$i]->source)."</source>\n";
+			}
+			*/
+			if ($this->items[$i]->category!="") {
+				$feed.= "            <category>".htmlspecialchars($this->items[$i]->category)."</category>\n";
+			}
+			if ($this->items[$i]->comments!="") {
+				$feed.= "            <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n";
+			}
+			if ($this->items[$i]->date!="") {
+			$itemDate = new FeedDate($this->items[$i]->date);
+				$feed.= "            <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
+			}
+			if ($this->items[$i]->guid!="") {
+				$feed.= "            <guid isPermaLink=\"false\">".htmlspecialchars($this->items[$i]->guid)."</guid>\n";
+			}
+			$feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, "        ");
+			$feed.= "        </item>\n";
+		}
+		$feed.= "    </channel>\n";
+		$feed.= "</rss>\n";
+		return $feed;
+	}
+}
+
+
+
+/**
+ * RSSCreator20 is a FeedCreator that implements RDF Site Summary (RSS) 2.0.
+ *
+ * @see http://backend.userland.com/rss
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class RSSCreator20 extends RSSCreator091 {
+
+    function RSSCreator20() {
+        parent::_setRSSVersion("2.0");
+    }
+
+}
+
+
+/**
+ * PIECreator01 is a FeedCreator that implements the emerging PIE specification,
+ * as in http://intertwingly.net/wiki/pie/Syntax.
+ *
+ * @deprecated
+ * @since 1.3
+ * @author Scott Reynen <scott@randomchaos.com> and Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class PIECreator01 extends FeedCreator {
+
+	function PIECreator01() {
+		$this->encoding = "utf-8";
+	}
+
+	function createFeed() {
+		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+		$feed.= $this->_createStylesheetReferences();
+		$feed.= "<feed version=\"0.1\" xmlns=\"http://example.com/newformat#\">\n";
+		$feed.= "    <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
+		$this->truncSize = 500;
+		$feed.= "    <subtitle>".$this->getDescription()."</subtitle>\n";
+		$feed.= "    <link>".$this->link."</link>\n";
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "    <entry>\n";
+			$feed.= "        <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
+			$feed.= "        <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+			$itemDate = new FeedDate($this->items[$i]->date);
+			$feed.= "        <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
+			$feed.= "        <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
+			$feed.= "        <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
+			$feed.= "        <id>".htmlspecialchars($this->items[$i]->guid)."</id>\n";
+			if ($this->items[$i]->author!="") {
+				$feed.= "        <author>\n";
+				$feed.= "            <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+				if ($this->items[$i]->authorEmail!="") {
+					$feed.= "            <email>".$this->items[$i]->authorEmail."</email>\n";
+				}
+				$feed.="        </author>\n";
+			}
+			$feed.= "        <content type=\"text/html\" xml:lang=\"en-us\">\n";
+			$feed.= "            <div xmlns=\"http://www.w3.org/1999/xhtml\">".$this->items[$i]->getDescription()."</div>\n";
+			$feed.= "        </content>\n";
+			$feed.= "    </entry>\n";
+		}
+		$feed.= "</feed>\n";
+		return $feed;
+	}
+}
+
+
+/**
+ * AtomCreator03 is a FeedCreator that implements the atom specification,
+ * as in http://www.intertwingly.net/wiki/pie/FrontPage.
+ * Please note that just by using AtomCreator03 you won't automatically
+ * produce valid atom files. For example, you have to specify either an editor
+ * for the feed or an author for every single feed item.
+ *
+ * Some elements have not been implemented yet. These are (incomplete list):
+ * author URL, item author's email and URL, item contents, alternate links,
+ * other link content types than text/html. Some of them may be created with
+ * AtomCreator03::additionalElements.
+ *
+ * @see FeedCreator#additionalElements
+ * @since 1.6
+ * @author Kai Blankenhorn <kaib@bitfolge.de>, Scott Reynen <scott@randomchaos.com>
+ */
+class AtomCreator03 extends FeedCreator {
+
+	function AtomCreator03() {
+		$this->contentType = "application/atom+xml";
+		$this->encoding = "utf-8";
+	}
+
+	function createFeed() {
+		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+		$feed.= $this->_createGeneratorComment();
+		$feed.= $this->_createStylesheetReferences();
+		$feed.= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\"";
+		if ($this->language!="") {
+			$feed.= " xml:lang=\"".$this->language."\"";
+		}
+		$feed.= ">\n";
+		$feed.= "    <title>".htmlspecialchars($this->title)."</title>\n";
+		$feed.= "    <tagline>".htmlspecialchars($this->description)."</tagline>\n";
+		$feed.= "    <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
+		$feed.= "    <id>".htmlspecialchars($this->link)."</id>\n";
+		$now = new FeedDate();
+		$feed.= "    <modified>".htmlspecialchars($now->iso8601())."</modified>\n";
+		if ($this->editor!="") {
+			$feed.= "    <author>\n";
+			$feed.= "        <name>".$this->editor."</name>\n";
+			if ($this->editorEmail!="") {
+				$feed.= "        <email>".$this->editorEmail."</email>\n";
+			}
+			$feed.= "    </author>\n";
+		}
+		$feed.= "    <generator>".FEEDCREATOR_VERSION."</generator>\n";
+		$feed.= $this->_createAdditionalElements($this->additionalElements, "    ");
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "    <entry>\n";
+			$feed.= "        <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
+			$feed.= "        <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
+			if ($this->items[$i]->date=="") {
+				$this->items[$i]->date = time();
+			}
+			$itemDate = new FeedDate($this->items[$i]->date);
+			$feed.= "        <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
+			$feed.= "        <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
+			$feed.= "        <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
+			$feed.= "        <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
+			$feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, "        ");
+			if ($this->items[$i]->author!="") {
+				$feed.= "        <author>\n";
+				$feed.= "            <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+				$feed.= "        </author>\n";
+			}
+			if ($this->items[$i]->description!="") {
+				$feed.= "        <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
+			}
+			$feed.= "    </entry>\n";
+		}
+		$feed.= "</feed>\n";
+		return $feed;
+	}
+}
+
+
+/**
+ * MBOXCreator is a FeedCreator that implements the mbox format
+ * as described in http://www.qmail.org/man/man5/mbox.html
+ *
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class MBOXCreator extends FeedCreator {
+
+	function MBOXCreator() {
+		$this->contentType = "text/plain";
+		$this->encoding = "ISO-8859-15";
+	}
+
+	function qp_enc($input = "", $line_max = 76) {
+		$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
+		$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
+		$eol = "\r\n";
+		$escape = "=";
+		$output = "";
+		while( list(, $line) = each($lines) ) {
+			//$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary
+			$linlen = strlen($line);
+			$newline = "";
+			for($i = 0; $i < $linlen; $i++) {
+				$c = substr($line, $i, 1);
+				$dec = ord($c);
+				if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only
+					$c = "=20";
+				} elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
+					$h2 = floor($dec/16); $h1 = floor($dec%16);
+					$c = $escape.$hex["$h2"].$hex["$h1"];
+				}
+				if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
+					$output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
+					$newline = "";
+				}
+				$newline .= $c;
+			} // end of for
+			$output .= $newline.$eol;
+		}
+		return trim($output);
+	}
+
+
+	/**
+	 * Builds the MBOX contents.
+	 * @return    string    the feed's complete text
+	 */
+	function createFeed() {
+		for ($i=0;$i<count($this->items);$i++) {
+			if ($this->items[$i]->author!="") {
+				$from = $this->items[$i]->author;
+			} else {
+				$from = $this->title;
+			}
+			$itemDate = new FeedDate($this->items[$i]->date);
+			$feed.= "From ".strtr(MBOXCreator::qp_enc($from)," ","_")." ".date("D M d H:i:s Y",$itemDate->unix())."\n";
+			$feed.= "Content-Type: text/plain;\n";
+			$feed.= "	charset=\"".$this->encoding."\"\n";
+			$feed.= "Content-Transfer-Encoding: quoted-printable\n";
+			$feed.= "Content-Type: text/plain\n";
+			$feed.= "From: \"".MBOXCreator::qp_enc($from)."\"\n";
+			$feed.= "Date: ".$itemDate->rfc822()."\n";
+			$feed.= "Subject: ".MBOXCreator::qp_enc(FeedCreator::iTrunc($this->items[$i]->title,100))."\n";
+			$feed.= "\n";
+			$body = chunk_split(MBOXCreator::qp_enc($this->items[$i]->description));
+			$feed.= preg_replace("~\nFrom ([^\n]*)(\n?)~","\n>From $1$2\n",$body);
+			$feed.= "\n";
+			$feed.= "\n";
+		}
+		return $feed;
+	}
+
+	/**
+	 * Generate a filename for the feed cache file. Overridden from FeedCreator to prevent XML data types.
+	 * @return string the feed cache filename
+	 * @since 1.4
+	 * @access private
+	 */
+	function _generateFilename() {
+		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".mbox";
+	}
+}
+
+
+/**
+ * OPMLCreator is a FeedCreator that implements OPML 1.0.
+ *
+ * @see http://opml.scripting.com/spec
+ * @author Dirk Clemens, Kai Blankenhorn
+ * @since 1.5
+ */
+class OPMLCreator extends FeedCreator {
+
+	function OPMLCreator() {
+		$this->encoding = "utf-8";
+	}
+
+	function createFeed() {
+		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+		$feed.= $this->_createGeneratorComment();
+		$feed.= $this->_createStylesheetReferences();
+		$feed.= "<opml xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
+		$feed.= "    <head>\n";
+		$feed.= "        <title>".htmlspecialchars($this->title)."</title>\n";
+		if ($this->pubDate!="") {
+			$date = new FeedDate($this->pubDate);
+			$feed.= "         <dateCreated>".$date->rfc822()."</dateCreated>\n";
+		}
+		if ($this->lastBuildDate!="") {
+			$date = new FeedDate($this->lastBuildDate);
+			$feed.= "         <dateModified>".$date->rfc822()."</dateModified>\n";
+		}
+		if ($this->editor!="") {
+			$feed.= "         <ownerName>".$this->editor."</ownerName>\n";
+		}
+		if ($this->editorEmail!="") {
+			$feed.= "         <ownerEmail>".$this->editorEmail."</ownerEmail>\n";
+		}
+		$feed.= "    </head>\n";
+		$feed.= "    <body>\n";
+		for ($i=0;$i<count($this->items);$i++) {
+			$feed.= "    <outline type=\"rss\" ";
+			$title = htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r","  ")));
+			$feed.= " title=\"".$title."\"";
+			$feed.= " text=\"".$title."\"";
+			//$feed.= " description=\"".htmlspecialchars($this->items[$i]->description)."\"";
+			$feed.= " url=\"".htmlspecialchars($this->items[$i]->link)."\"";
+			$feed.= "/>\n";
+		}
+		$feed.= "    </body>\n";
+		$feed.= "</opml>\n";
+		return $feed;
+	}
+}
+
+
+
+/**
+ * HTMLCreator is a FeedCreator that writes an HTML feed file to a specific
+ * location, overriding the createFeed method of the parent FeedCreator.
+ * The HTML produced can be included over http by scripting languages, or serve
+ * as the source for an IFrame.
+ * All output by this class is embedded in <div></div> tags to enable formatting
+ * using CSS.
+ *
+ * @author Pascal Van Hecke
+ * @since 1.7
+ */
+class HTMLCreator extends FeedCreator {
+
+	var $contentType = "text/html";
+
+	/**
+	 * Contains HTML to be output at the start of the feed's html representation.
+	 */
+	var $header;
+
+	/**
+	 * Contains HTML to be output at the end of the feed's html representation.
+	 */
+	var $footer ;
+
+	/**
+	 * Contains HTML to be output between entries. A separator is only used in
+	 * case of multiple entries.
+	 */
+	var $separator;
+
+	/**
+	 * Used to prefix the stylenames to make sure they are unique
+	 * and do not clash with stylenames on the users' page.
+	 */
+	var $stylePrefix;
+
+	/**
+	 * Determines whether the links open in a new window or not.
+	 */
+	var $openInNewWindow = true;
+
+	var $imageAlign ="right";
+
+	/**
+	 * In case of very simple output you may want to get rid of the style tags,
+	 * hence this variable.  There's no equivalent on item level, but of course you can
+	 * add strings to it while iterating over the items ($this->stylelessOutput .= ...)
+	 * and when it is non-empty, ONLY the styleless output is printed, the rest is ignored
+	 * in the function createFeed().
+	 */
+	var $stylelessOutput ="";
+
+	/**
+	 * Writes the HTML.
+	 * @return    string    the scripts's complete text
+	 */
+	function createFeed() {
+		// if there is styleless output, use the content of this variable and ignore the rest
+		if ($this->stylelessOutput!="") {
+			return $this->stylelessOutput;
+		}
+
+		//if no stylePrefix is set, generate it yourself depending on the script name
+		if ($this->stylePrefix=="") {
+			$this->stylePrefix = str_replace(".", "_", $this->_generateFilename())."_";
+		}
+
+		//set an openInNewWindow_token_to be inserted or not
+		if ($this->openInNewWindow) {
+			$targetInsert = " target='_blank'";
+		}
+
+		// use this array to put the lines in and implode later with "document.write" javascript
+		$feedArray = array();
+		if ($this->image!=null) {
+			$imageStr = "<a href='".$this->image->link."'".$targetInsert.">".
+							"<img src='".$this->image->url."' border='0' alt='".
+							FeedCreator::iTrunc(htmlspecialchars($this->image->title),100).
+							"' align='".$this->imageAlign."' ";
+			if ($this->image->width) {
+				$imageStr .=" width='".$this->image->width. "' ";
+			}
+			if ($this->image->height) {
+				$imageStr .=" height='".$this->image->height."' ";
+			}
+			$imageStr .="/></a>";
+			$feedArray[] = $imageStr;
+		}
+
+		if ($this->title) {
+			$feedArray[] = "<div class='".$this->stylePrefix."title'><a href='".$this->link."' ".$targetInsert." class='".$this->stylePrefix."title'>".
+				FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</a></div>";
+		}
+		if ($this->getDescription()) {
+			$feedArray[] = "<div class='".$this->stylePrefix."description'>".
+				str_replace("]]>", "", str_replace("<![CDATA[", "", $this->getDescription())).
+				"</div>";
+		}
+
+		if ($this->header) {
+			$feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>";
+		}
+
+		for ($i=0;$i<count($this->items);$i++) {
+			if ($this->separator and $i > 0) {
+				$feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>";
+			}
+
+			if ($this->items[$i]->title) {
+				if ($this->items[$i]->link) {
+					$feedArray[] =
+						"<div class='".$this->stylePrefix."item_title'><a href='".$this->items[$i]->link."' class='".$this->stylePrefix.
+						"item_title'".$targetInsert.">".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
+						"</a></div>";
+				} else {
+					$feedArray[] =
+						"<div class='".$this->stylePrefix."item_title'>".
+						FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
+						"</div>";
+				}
+			}
+			if ($this->items[$i]->getDescription()) {
+				$feedArray[] =
+				"<div class='".$this->stylePrefix."item_description'>".
+					str_replace("]]>", "", str_replace("<![CDATA[", "", $this->items[$i]->getDescription())).
+					"</div>";
+			}
+		}
+		if ($this->footer) {
+			$feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>";
+		}
+
+		$feed= "".join($feedArray, "\r\n");
+		return $feed;
+	}
+
+	/**
+	 * Overrrides parent to produce .html extensions
+	 *
+	 * @return string the feed cache filename
+	 * @since 1.4
+	 * @access private
+	 */
+	function _generateFilename() {
+		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".html";
+	}
+}
+
+
+/**
+ * JSCreator is a class that writes a js file to a specific
+ * location, overriding the createFeed method of the parent HTMLCreator.
+ *
+ * @author Pascal Van Hecke
+ */
+class JSCreator extends HTMLCreator {
+	var $contentType = "text/javascript";
+
+	/**
+	 * writes the javascript
+	 * @return    string    the scripts's complete text
+	 */
+	function createFeed()
+	{
+		$feed = parent::createFeed();
+		$feedArray = explode("\n",$feed);
+
+		$jsFeed = "";
+		foreach ($feedArray as $value) {
+			$jsFeed .= "document.write('".trim(addslashes($value))."');\n";
+		}
+		return $jsFeed;
+	}
+
+	/**
+	 * Overrrides parent to produce .js extensions
+	 *
+	 * @return string the feed cache filename
+	 * @since 1.4
+	 * @access private
+	 */
+	function _generateFilename() {
+		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".js";
+	}
+
+}
+
+
+
+/*** TEST SCRIPT *********************************************************
+
+//include("feedcreator.class.php");
+
+$rss = new UniversalFeedCreator();
+$rss->useCached();
+$rss->title = "PHP news";
+$rss->description = "daily news from the PHP scripting world";
+
+//optional
+//$rss->descriptionTruncSize = 500;
+//$rss->descriptionHtmlSyndicated = true;
+//$rss->xslStyleSheet = "http://feedster.com/rss20.xsl";
+
+$rss->link = "http://www.dailyphp.net/news";
+$rss->feedURL = "http://www.dailyphp.net/".$PHP_SELF;
+
+$image = new FeedImage();
+$image->title = "dailyphp.net logo";
+$image->url = "http://www.dailyphp.net/images/logo.gif";
+$image->link = "http://www.dailyphp.net";
+$image->description = "Feed provided by dailyphp.net. Click to visit.";
+
+//optional
+$image->descriptionTruncSize = 500;
+$image->descriptionHtmlSyndicated = true;
+
+$rss->image = $image;
+
+// get your news items from somewhere, e.g. your database:
+//mysql_select_db($dbHost, $dbUser, $dbPass);
+//$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
+//while ($data = mysql_fetch_object($res)) {
+	$item = new FeedItem();
+	$item->title = "This is an the test title of an item";
+	$item->link = "http://localhost/item/";
+	$item->description = "<b>description in </b><br/>HTML";
+
+	//optional
+	//item->descriptionTruncSize = 500;
+	$item->descriptionHtmlSyndicated = true;
+
+	$item->date = time();
+	$item->source = "http://www.dailyphp.net";
+	$item->author = "John Doe";
+
+	$rss->addItem($item);
+//}
+
+// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1, MBOX, OPML, ATOM0.3, HTML, JS
+echo $rss->saveFeed("RSS0.91", "feed.xml");
+
+
+
+***************************************************************************/
+
+?>
Index: /tags/2.6.0RC1/include/filter.inc.php
===================================================================
--- /tags/2.6.0RC1/include/filter.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/filter.inc.php	(revision 25596)
@@ -0,0 +1,146 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// $filter['enabled']: Filter is enabled
+// $filter['recent_period']: Recent period used to computed filter data
+// $filter['categories']: Computed data of filtered categories
+// $filter['visible_categories']:
+//  List of visible categories (count(visible) < count(forbidden) more often)
+// $filter['visible_images']: List of visible images
+
+if (!get_filter_page_value('cancel'))
+{
+  if (isset($_GET['filter']))
+  {
+    $filter['matches'] = array();
+    $filter['enabled'] =
+      preg_match('/^start-recent-(\d+)$/', $_GET['filter'], $filter['matches']) === 1;
+  }
+  else
+  {
+    $filter['enabled'] = pwg_get_session_var('filter_enabled', false);
+  }
+}
+else
+{
+  $filter['enabled'] = false;
+}
+
+if ($filter['enabled'])
+{
+  $filter_key = pwg_get_session_var('filter_check_key', array('user'=>0,'recent_period'=>-1, 'time'=>0, 'date'=> '') );
+
+  if (isset($filter['matches']))
+  {
+    $filter['recent_period'] = $filter['matches'][1];
+  }
+  else
+  {
+    $filter['recent_period'] = $filter_key['recent_period']>0 ? $filter_key['recent_period'] : $user['recent_period'];
+  }
+
+  if (
+      // New filter
+      !pwg_get_session_var('filter_enabled', false) or
+      // Cache data updated
+      $filter_key['time'] <= $user['cache_update_time'] or
+      // Date, period, user are changed
+      $filter_key['user'] != $user['id'] or
+      $filter_key['recent_period'] != $filter['recent_period'] or
+      $filter_key['date'] != date('Ymd')
+    )
+  {
+    // Need to compute dats
+    $filter_key = array(
+      'user'=>(int)$user['id'],'recent_period'=>(int)$filter['recent_period'], 'time'=>time(), 'date'=> date('Ymd')
+     );
+
+    $filter['categories'] = get_computed_categories($user, (int)$filter['recent_period']);
+
+    $filter['visible_categories'] = implode(',', array_keys($filter['categories']));
+    if (empty($filter['visible_categories']))
+    {
+      // Must be not empty
+      $filter['visible_categories'] = -1;
+    }
+
+    $query ='
+SELECT
+  distinct image_id
+FROM '.
+  IMAGE_CATEGORY_TABLE.' INNER JOIN '.IMAGES_TABLE.' ON image_id = id
+WHERE ';
+    if (!empty($filter['visible_categories']))
+    {
+    $query.= '
+  category_id  IN ('.$filter['visible_categories'].') and';
+    }
+  $query.= '
+    date_available >= '.pwg_db_get_recent_period_expression($filter['recent_period']);
+
+    $filter['visible_images'] = implode(',', array_from_query($query, 'image_id'));
+
+    if (empty($filter['visible_images']))
+    {
+      // Must be not empty
+      $filter['visible_images'] = -1;
+    }
+
+    // Save filter data on session
+    pwg_set_session_var('filter_enabled', $filter['enabled']);
+    pwg_set_session_var('filter_check_key', $filter_key);
+    pwg_set_session_var('filter_categories', serialize($filter['categories']));
+    pwg_set_session_var('filter_visible_categories', $filter['visible_categories']);
+    pwg_set_session_var('filter_visible_images', $filter['visible_images']);
+  }
+  else
+  {
+    // Read only data
+    $filter['categories'] = unserialize(pwg_get_session_var('filter_categories', serialize(array())));
+    $filter['visible_categories'] = pwg_get_session_var('filter_visible_categories', '');
+    $filter['visible_images'] = pwg_get_session_var('filter_visible_images', '');
+  }
+  unset($filter_key);
+  if (get_filter_page_value('add_notes'))
+  {
+    $header_notes[] = l10n_dec(
+      'Photos posted within the last %d day.', 'Photos posted within the last %d days.',
+      $filter['recent_period']
+      );
+  }
+  include_once(PHPWG_ROOT_PATH.'include/functions_filter.inc.php');
+}
+else
+{
+  if (pwg_get_session_var('filter_enabled', false))
+  {
+    pwg_unset_session_var('filter_enabled');
+    pwg_unset_session_var('filter_check_key');
+    pwg_unset_session_var('filter_categories');
+    pwg_unset_session_var('filter_visible_categories');
+    pwg_unset_session_var('filter_visible_images');
+  }
+}
+
+
+?>
Index: /tags/2.6.0RC1/include/functions.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions.inc.php	(revision 25596)
@@ -0,0 +1,2065 @@
+<?php 
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\___
+ */
+
+include_once( PHPWG_ROOT_PATH .'include/functions_plugins.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_user.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_cookie.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_session.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_category.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_html.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_tag.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/functions_url.inc.php' );
+include_once( PHPWG_ROOT_PATH .'include/derivative_params.inc.php');
+include_once( PHPWG_ROOT_PATH .'include/derivative_std_params.inc.php');
+include_once( PHPWG_ROOT_PATH .'include/derivative.inc.php');
+//require_once( PHPWG_ROOT_PATH .'include/smarty/libs/Smarty.class.php');
+require_once( PHPWG_ROOT_PATH .'include/smarty/libs/SmartyBC.class.php');
+include_once( PHPWG_ROOT_PATH .'include/template.class.php');
+
+
+/**
+ * returns the current microsecond since Unix epoch
+ *
+ * @return int
+ */
+function micro_seconds()
+{
+  $t1 = explode(' ', microtime());
+  $t2 = explode('.', $t1[0]);
+  $t2 = $t1[1].substr($t2[1], 0, 6);
+  return $t2;
+}
+
+/**
+ * returns a float value coresponding to the number of seconds since
+ * the unix epoch (1st January 1970) and the microseconds are precised
+ * e.g. 1052343429.89276600
+ *
+ * @return float
+ */
+function get_moment()
+{
+  return microtime(true);
+}
+
+/**
+ * returns the number of seconds (with 3 decimals precision)
+ * between the start time and the end time given
+ *
+ * @param float $start
+ * @param float $end
+ * @return string "$TIME s"
+ */
+function get_elapsed_time($start, $end)
+{
+  return number_format($end - $start, 3, '.', ' ').' s';
+}
+
+/**
+ * returns the part of the string after the last "."
+ *
+ * @param string $filename
+ * @return string
+ */
+function get_extension( $filename )
+{
+  return substr( strrchr( $filename, '.' ), 1, strlen ( $filename ) );
+}
+
+/**
+ * returns the part of the string before the last ".".
+ * get_filename_wo_extension( 'test.tar.gz' ) = 'test.tar'
+ *
+ * @param string $filename
+ * @return string
+ */
+function get_filename_wo_extension( $filename )
+{
+  $pos = strrpos( $filename, '.' );
+  return ($pos===false) ? $filename : substr( $filename, 0, $pos);
+}
+
+/** no option for mkgetdir() */
+define('MKGETDIR_NONE', 0);
+/** sets mkgetdir() recursive */
+define('MKGETDIR_RECURSIVE', 1);
+/** sets mkgetdir() exit script on error */
+define('MKGETDIR_DIE_ON_ERROR', 2);
+/** sets mkgetdir() add a index.htm file */
+define('MKGETDIR_PROTECT_INDEX', 4);
+/** sets mkgetdir() add a .htaccess file*/
+define('MKGETDIR_PROTECT_HTACCESS', 8);
+/** default options for mkgetdir() = MKGETDIR_RECURSIVE | MKGETDIR_DIE_ON_ERROR | MKGETDIR_PROTECT_INDEX */
+define('MKGETDIR_DEFAULT', MKGETDIR_RECURSIVE | MKGETDIR_DIE_ON_ERROR | MKGETDIR_PROTECT_INDEX);
+
+/**
+ * creates directory if not exists and ensures that directory is writable
+ *
+ * @param string $dir
+ * @param int $flags combination of MKGETDIR_xxx
+ * @return bool
+ */
+function mkgetdir($dir, $flags=MKGETDIR_DEFAULT)
+{
+  if ( !is_dir($dir) )
+  {
+    global $conf;
+    if (substr(PHP_OS, 0, 3) == 'WIN')
+    {
+      $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
+    }
+    $umask = umask(0);
+    $mkd = @mkdir($dir, $conf['chmod_value'], ($flags&MKGETDIR_RECURSIVE) ? true:false );
+    umask($umask);
+    if ($mkd==false)
+    {
+      !($flags&MKGETDIR_DIE_ON_ERROR) or fatal_error( "$dir ".l10n('no write access'));
+      return false;
+    }
+    if( $flags&MKGETDIR_PROTECT_HTACCESS )
+    {
+      $file = $dir.'/.htaccess';
+      file_exists($file) or @file_put_contents( $file, 'deny from all' );
+    }
+    if( $flags&MKGETDIR_PROTECT_INDEX )
+    {
+      $file = $dir.'/index.htm';
+      file_exists($file) or @file_put_contents( $file, 'Not allowed!' );
+    }
+  }
+  if ( !is_writable($dir) )
+  {
+    !($flags&MKGETDIR_DIE_ON_ERROR) or fatal_error( "$dir ".l10n('no write access'));
+    return false;
+  }
+  return true;
+}
+
+/**
+ * finds out if a string is in ASCII, UTF-8 or other encoding
+ *
+ * @param string $str
+ * @return int *0* if _$str_ is ASCII, *1* if UTF-8, *-1* otherwise
+ */
+function qualify_utf8($Str)
+{
+  $ret = 0;
+  for ($i=0; $i<strlen($Str); $i++)
+  {
+    if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
+    $ret = 1;
+    if ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
+    elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
+    elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb
+    elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb
+    elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b
+    else return -1; # Does not match any model
+    for ($j=0; $j<$n; $j++)
+    { # n bytes matching 10bbbbbb follow ?
+      if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
+        return -1;
+    }
+  }
+  return $ret;
+}
+
+/**
+ * Remove accents from a UTF-8 or ISO-8859-1 string (from wordpress)
+ *
+ * @param string $string
+ * @return string
+ */
+function remove_accents($string)
+{
+  $utf = qualify_utf8($string);
+  if ( $utf == 0 )
+  {
+    return $string; // ascii
+  }
+
+  if ( $utf > 0 )
+  {
+    $chars = array(
+    // Decompositions for Latin-1 Supplement
+    "\xc3\x80"=>'A', "\xc3\x81"=>'A',
+    "\xc3\x82"=>'A', "\xc3\x83"=>'A',
+    "\xc3\x84"=>'A', "\xc3\x85"=>'A',
+    "\xc3\x87"=>'C', "\xc3\x88"=>'E',
+    "\xc3\x89"=>'E', "\xc3\x8a"=>'E',
+    "\xc3\x8b"=>'E', "\xc3\x8c"=>'I',
+    "\xc3\x8d"=>'I', "\xc3\x8e"=>'I',
+    "\xc3\x8f"=>'I', "\xc3\x91"=>'N',
+    "\xc3\x92"=>'O', "\xc3\x93"=>'O',
+    "\xc3\x94"=>'O', "\xc3\x95"=>'O',
+    "\xc3\x96"=>'O', "\xc3\x99"=>'U',
+    "\xc3\x9a"=>'U', "\xc3\x9b"=>'U',
+    "\xc3\x9c"=>'U', "\xc3\x9d"=>'Y',
+    "\xc3\x9f"=>'s', "\xc3\xa0"=>'a',
+    "\xc3\xa1"=>'a', "\xc3\xa2"=>'a',
+    "\xc3\xa3"=>'a', "\xc3\xa4"=>'a',
+    "\xc3\xa5"=>'a', "\xc3\xa7"=>'c',
+    "\xc3\xa8"=>'e', "\xc3\xa9"=>'e',
+    "\xc3\xaa"=>'e', "\xc3\xab"=>'e',
+    "\xc3\xac"=>'i', "\xc3\xad"=>'i',
+    "\xc3\xae"=>'i', "\xc3\xaf"=>'i',
+    "\xc3\xb1"=>'n', "\xc3\xb2"=>'o',
+    "\xc3\xb3"=>'o', "\xc3\xb4"=>'o',
+    "\xc3\xb5"=>'o', "\xc3\xb6"=>'o',
+    "\xc3\xb9"=>'u', "\xc3\xba"=>'u',
+    "\xc3\xbb"=>'u', "\xc3\xbc"=>'u',
+    "\xc3\xbd"=>'y', "\xc3\xbf"=>'y',
+    // Decompositions for Latin Extended-A
+    "\xc4\x80"=>'A', "\xc4\x81"=>'a',
+    "\xc4\x82"=>'A', "\xc4\x83"=>'a',
+    "\xc4\x84"=>'A', "\xc4\x85"=>'a',
+    "\xc4\x86"=>'C', "\xc4\x87"=>'c',
+    "\xc4\x88"=>'C', "\xc4\x89"=>'c',
+    "\xc4\x8a"=>'C', "\xc4\x8b"=>'c',
+    "\xc4\x8c"=>'C', "\xc4\x8d"=>'c',
+    "\xc4\x8e"=>'D', "\xc4\x8f"=>'d',
+    "\xc4\x90"=>'D', "\xc4\x91"=>'d',
+    "\xc4\x92"=>'E', "\xc4\x93"=>'e',
+    "\xc4\x94"=>'E', "\xc4\x95"=>'e',
+    "\xc4\x96"=>'E', "\xc4\x97"=>'e',
+    "\xc4\x98"=>'E', "\xc4\x99"=>'e',
+    "\xc4\x9a"=>'E', "\xc4\x9b"=>'e',
+    "\xc4\x9c"=>'G', "\xc4\x9d"=>'g',
+    "\xc4\x9e"=>'G', "\xc4\x9f"=>'g',
+    "\xc4\xa0"=>'G', "\xc4\xa1"=>'g',
+    "\xc4\xa2"=>'G', "\xc4\xa3"=>'g',
+    "\xc4\xa4"=>'H', "\xc4\xa5"=>'h',
+    "\xc4\xa6"=>'H', "\xc4\xa7"=>'h',
+    "\xc4\xa8"=>'I', "\xc4\xa9"=>'i',
+    "\xc4\xaa"=>'I', "\xc4\xab"=>'i',
+    "\xc4\xac"=>'I', "\xc4\xad"=>'i',
+    "\xc4\xae"=>'I', "\xc4\xaf"=>'i',
+    "\xc4\xb0"=>'I', "\xc4\xb1"=>'i',
+    "\xc4\xb2"=>'IJ', "\xc4\xb3"=>'ij',
+    "\xc4\xb4"=>'J', "\xc4\xb5"=>'j',
+    "\xc4\xb6"=>'K', "\xc4\xb7"=>'k',
+    "\xc4\xb8"=>'k', "\xc4\xb9"=>'L',
+    "\xc4\xba"=>'l', "\xc4\xbb"=>'L',
+    "\xc4\xbc"=>'l', "\xc4\xbd"=>'L',
+    "\xc4\xbe"=>'l', "\xc4\xbf"=>'L',
+    "\xc5\x80"=>'l', "\xc5\x81"=>'L',
+    "\xc5\x82"=>'l', "\xc5\x83"=>'N',
+    "\xc5\x84"=>'n', "\xc5\x85"=>'N',
+    "\xc5\x86"=>'n', "\xc5\x87"=>'N',
+    "\xc5\x88"=>'n', "\xc5\x89"=>'N',
+    "\xc5\x8a"=>'n', "\xc5\x8b"=>'N',
+    "\xc5\x8c"=>'O', "\xc5\x8d"=>'o',
+    "\xc5\x8e"=>'O', "\xc5\x8f"=>'o',
+    "\xc5\x90"=>'O', "\xc5\x91"=>'o',
+    "\xc5\x92"=>'OE', "\xc5\x93"=>'oe',
+    "\xc5\x94"=>'R', "\xc5\x95"=>'r',
+    "\xc5\x96"=>'R', "\xc5\x97"=>'r',
+    "\xc5\x98"=>'R', "\xc5\x99"=>'r',
+    "\xc5\x9a"=>'S', "\xc5\x9b"=>'s',
+    "\xc5\x9c"=>'S', "\xc5\x9d"=>'s',
+    "\xc5\x9e"=>'S', "\xc5\x9f"=>'s',
+    "\xc5\xa0"=>'S', "\xc5\xa1"=>'s',
+    "\xc5\xa2"=>'T', "\xc5\xa3"=>'t',
+    "\xc5\xa4"=>'T', "\xc5\xa5"=>'t',
+    "\xc5\xa6"=>'T', "\xc5\xa7"=>'t',
+    "\xc5\xa8"=>'U', "\xc5\xa9"=>'u',
+    "\xc5\xaa"=>'U', "\xc5\xab"=>'u',
+    "\xc5\xac"=>'U', "\xc5\xad"=>'u',
+    "\xc5\xae"=>'U', "\xc5\xaf"=>'u',
+    "\xc5\xb0"=>'U', "\xc5\xb1"=>'u',
+    "\xc5\xb2"=>'U', "\xc5\xb3"=>'u',
+    "\xc5\xb4"=>'W', "\xc5\xb5"=>'w',
+    "\xc5\xb6"=>'Y', "\xc5\xb7"=>'y',
+    "\xc5\xb8"=>'Y', "\xc5\xb9"=>'Z',
+    "\xc5\xba"=>'z', "\xc5\xbb"=>'Z',
+    "\xc5\xbc"=>'z', "\xc5\xbd"=>'Z',
+    "\xc5\xbe"=>'z', "\xc5\xbf"=>'s',
+    // Decompositions for Latin Extended-B
+    "\xc8\x98"=>'S', "\xc8\x99"=>'s',
+    "\xc8\x9a"=>'T', "\xc8\x9b"=>'t',
+    // Euro Sign
+    "\xe2\x82\xac"=>'E',
+    // GBP (Pound) Sign
+    "\xc2\xa3"=>'');
+
+    $string = strtr($string, $chars);
+  }
+  else
+  {
+    // Assume ISO-8859-1 if not UTF-8
+    $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
+      .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
+      .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
+      .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
+      .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
+      .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
+      .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
+      .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
+      .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
+      .chr(252).chr(253).chr(255);
+
+    $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
+
+    $string = strtr($string, $chars['in'], $chars['out']);
+    $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
+    $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
+    $string = str_replace($double_chars['in'], $double_chars['out'], $string);
+  }
+
+  return $string;
+}
+
+if (function_exists('mb_strtolower') && defined('PWG_CHARSET'))
+{
+  /**
+   * removes accents from a string and converts it to lower case
+   *
+   * @param string $term
+   * @return string
+   */
+  function transliterate($term)
+  {
+    return remove_accents( mb_strtolower($term, PWG_CHARSET) );
+  }
+}
+else
+{
+  /**
+   * @ignore
+   */
+  function transliterate($term)
+  {
+    return remove_accents( strtolower($term) );
+  }
+}
+
+/**
+ * simplify a string to insert it into an URL
+ *
+ * @param string $str
+ * @return string
+ */
+function str2url($str)
+{
+  $str = $safe = transliterate($str);
+  $str = preg_replace('/[^\x80-\xffa-z0-9_\s\'\:\/\[\],-]/','',$str);
+  $str = preg_replace('/[\s\'\:\/\[\],-]+/',' ',trim($str));
+  $res = str_replace(' ','_',$str);
+
+  if (empty($res))
+  {
+    $res = str_replace(' ','_', $safe);
+  }
+
+  return $res;
+}
+
+/**
+ * returns an array with a list of {language_code => language_name}
+ *
+ * @return string[]
+ */
+function get_languages()
+{
+  $query = '
+SELECT id, name
+  FROM '.LANGUAGES_TABLE.'
+  ORDER BY name ASC
+;';
+  $result = pwg_query($query);
+
+  $languages = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (is_dir(PHPWG_ROOT_PATH.'language/'.$row['id']))
+    {
+      $languages[ $row['id'] ] = $row['name'];
+    }
+  }
+
+  return $languages;
+}
+
+/**
+ * log the visit into history table
+ *
+ * @param int $image_id
+ * @param string $image_type
+ * @return bool
+ */
+function pwg_log($image_id = null, $image_type = null)
+{
+  global $conf, $user, $page;
+
+  $do_log = $conf['log'];
+  if (is_admin())
+  {
+    $do_log = $conf['history_admin'];
+  }
+  if (is_a_guest())
+  {
+    $do_log = $conf['history_guest'];
+  }
+
+  $do_log = trigger_event('pwg_log_allowed', $do_log, $image_id, $image_type);
+
+  if (!$do_log)
+  {
+    return false;
+  }
+
+  $tags_string = null;
+  if ('tags'==@$page['section'])
+  {
+    $tags_string = implode(',', $page['tag_ids']);
+  }
+
+  $query = '
+INSERT INTO '.HISTORY_TABLE.'
+  (
+    date,
+    time,
+    user_id,
+    IP,
+    section,
+    category_id,
+    image_id,
+    image_type,
+    tag_ids
+  )
+  VALUES
+  (
+    CURRENT_DATE,
+    CURRENT_TIME,
+    '.$user['id'].',
+    \''.$_SERVER['REMOTE_ADDR'].'\',
+    '.(isset($page['section']) ? "'".$page['section']."'" : 'NULL').',
+    '.(isset($page['category']['id']) ? $page['category']['id'] : 'NULL').',
+    '.(isset($image_id) ? $image_id : 'NULL').',
+    '.(isset($image_type) ? "'".$image_type."'" : 'NULL').',
+    '.(isset($tags_string) ? "'".$tags_string."'" : 'NULL').'
+  )
+;';
+  pwg_query($query);
+
+  return true;
+}
+
+/**
+ * Computes the difference between two dates.
+ * returns a DateInterval object or a stdClass with the same attributes
+ * http://stephenharris.info/date-intervals-in-php-5-2
+ *
+ * @param DateTime $date1
+ * @param DateTime $date2
+ * @return DateInterval|stdClass
+ */
+function dateDiff($date1, $date2)
+{
+  if (version_compare(PHP_VERSION, '5.3.0') >= 0)
+  {
+    return $date1->diff($date2);
+  }
+  
+  $diff = new stdClass();
+  
+  //Make sure $date1 is ealier
+  $diff->invert = $date2 < $date1;
+  if ($diff->invert)
+  {
+    list($date1, $date2) = array($date2, $date1);
+  }
+  
+  //Calculate R values
+  $R = ($date1 <= $date2 ? '+' : '-');
+  $r = ($date1 <= $date2 ? '' : '-');
+
+  //Calculate total days
+  $diff->days = round(abs($date1->format('U') - $date2->format('U'))/86400);
+
+  //A leap year work around - consistent with DateInterval
+  $leap_year = $date1->format('m-d') == '02-29';
+  if ($leap_year)
+  {
+    $date1->modify('-1 day');
+  }
+
+  //Years, months, days, hours
+  $periods = array('years'=>-1, 'months'=>-1, 'days'=>-1, 'hours'=>-1);
+
+  foreach ($periods as $period => &$i)
+  {
+    if ($period == 'days' && $leap_year)
+    {
+      $date1->modify('+1 day');
+    }
+
+    while ($date1 <= $date2 )
+    {
+      $date1->modify('+1 '.$period);
+      $i++;
+    }
+
+    //Reset date and record increments
+    $date1->modify('-1 '.$period);
+  }
+  
+  list($diff->y, $diff->m, $diff->d, $diff->h) = array_values($periods);
+
+  //Minutes, seconds
+  $diff->s = round(abs($date1->format('U') - $date2->format('U')));
+  $diff->i = floor($diff->s/60);
+  $diff->s = $diff->s - $diff->i*60;
+  
+  return $diff;
+}
+
+/**
+ * converts a string into a DateTime object
+ *
+ * @param int|string timestamp or datetime string
+ * @param string $format input format respecting date() syntax
+ * @return DateTime|false
+ */
+function str2DateTime($original, $format=null)
+{
+  if ( !empty($format) && version_compare(PHP_VERSION, '5.3.0') >= 0 )// from known date format
+  {
+    return DateTime::createFromFormat('!'.$format, $original); // ! char to reset fields to UNIX epoch
+  }
+  else
+  {
+    $date = new DateTime();
+    
+    $t = trim($original, '0123456789');
+    if (empty($t)) // from timestamp
+    {
+      $date->setTimestamp($original);
+    }
+    else // from unknown date format (assuming something like Y-m-d H:i:s)
+    {
+      $ymdhms = array();
+      $tok = strtok($original, '- :/');
+      while ($tok !== false)
+      {
+        $ymdhms[] = $tok;
+        $tok = strtok('- :/');
+      }
+      
+      if (count($ymdhms)<3) return false;
+      if (!isset($ymdhms[3])) $ymdhms[3] = 0;
+      if (!isset($ymdhms[4])) $ymdhms[4] = 0;
+      if (!isset($ymdhms[5])) $ymdhms[5] = 0;
+      
+      $date->setDate($ymdhms[0], $ymdhms[1], $ymdhms[2]);
+      $date->setTime($ymdhms[3], $ymdhms[4], $ymdhms[5]);
+    }
+    
+    return $date;
+  }
+}
+
+/**
+ * returns a formatted and localized date for display
+ *
+ * @param int|string timestamp or datetime string
+ * @param bool $show_time
+ * @param bool $show_day_name
+ * @param string $format input format respecting date() syntax
+ * @return string
+ */
+function format_date($original, $show_time=false, $show_day_name=true, $format=null)
+{
+  global $lang;
+  
+  $date = str2DateTime($original, $format);
+
+  if (!$date)
+  {
+    return l10n('N/A');
+  }
+
+  $print = '';
+  if ($show_day_name)
+  {
+    $print.= $lang['day'][ $date->format('w') ].' ';
+  }
+  
+  $print.= $date->format('j');
+  $print.= ' '.$lang['month'][ $date->format('n') ];
+  $print.= ' '.$date->format('Y');
+  
+  if ($show_time)
+  {
+    $temp = $date->format('H:i');
+    if ($temp != '00:00')
+    {
+      $print.= ' '.$temp;
+    }
+  }
+
+  return trim($print);
+}
+
+/**
+ * Works out the time since the given date
+ *
+ * @param int|string timestamp or datetime string
+ * @param string $stop year,month,week,day,hour,minute,second
+ * @param string $format input format respecting date() syntax
+ * @param bool $with_text append "ago" or "in the future"
+ * @param bool $with_weeks
+ * @return string
+ */
+function time_since($original, $stop='minute', $format=null, $with_text=true, $with_week=true)
+{
+  $date = str2DateTime($original, $format);
+
+  if (!$date)
+  {
+    return l10n('N/A');
+  }
+  
+  $now = new DateTime();
+  $diff = dateDiff($now, $date);
+  
+  $chunks = array(
+    'year' => $diff->y,
+    'month' => $diff->m,
+    'week' => 0,
+    'day' => $diff->d,
+    'hour' => $diff->h,
+    'minute' => $diff->i,
+    'second' => $diff->s,
+  );
+  
+  // DateInterval does not contain the number of weeks
+  if ($with_week)
+  {
+    $chunks['week'] = (int)floor($chunks['day']/7);
+    $chunks['day'] = $chunks['day'] - $chunks['week']*7;
+  }
+  
+  $j = array_search($stop, array_keys($chunks));
+  
+  $print = ''; $i=0;
+  foreach ($chunks as $name => $value)
+  {
+    if ($value != 0)
+    {
+      $print.= ' '.l10n_dec('%d '.$name, '%d '.$name.'s', $value);
+    }
+    if (!empty($print) && $i >= $j)
+    {
+      break;
+    }
+    $i++;
+  }
+  
+  $print = trim($print);
+  
+  if ($with_text)
+  {
+    if ($diff->invert)
+    {
+      $print = l10n('%s ago', $print);
+    }
+    else
+    {
+      $print = l10n('%s in the future', $print);
+    }
+  }
+
+  return $print;
+}
+
+/**
+ * transform a date string from a format to another (MySQL to d/M/Y for instance)
+ *
+ * @param string $original
+ * @param string $format_in respecting date() syntax
+ * @param string $format_out respecting date() syntax
+ * @param string $default if _$original_ is empty
+ * @return string
+ */
+function transform_date($original, $format_in, $format_out, $default=null)
+{
+  if (empty($original)) return $default;
+  $date = str2DateTime($original, $format_in);
+  return $date->format($format_out);
+}
+
+/**
+ * append a variable to _$debug_ global
+ *
+ * @param string $string
+ */
+function pwg_debug( $string )
+{
+  global $debug,$t2,$page;
+
+  $now = explode( ' ', microtime() );
+  $now2 = explode( '.', $now[0] );
+  $now2 = $now[1].'.'.$now2[1];
+  $time = number_format( $now2 - $t2, 3, '.', ' ').' s';
+  $debug .= '<p>';
+  $debug.= '['.$time.', ';
+  $debug.= $page['count_queries'].' queries] : '.$string;
+  $debug.= "</p>\n";
+}
+
+/**
+ * Redirects to the given URL (HTTP method).
+ * once this function called, the execution doesn't go further
+ * (presence of an exit() instruction.
+ *
+ * @param string $url
+ * @return void
+ */
+function redirect_http( $url )
+{
+  if (ob_get_length () !== FALSE)
+  {
+    ob_clean();
+  }
+  // default url is on html format
+  $url = html_entity_decode($url);
+  header('Request-URI: '.$url);
+  header('Content-Location: '.$url);
+  header('Location: '.$url);
+  exit();
+}
+
+/**
+ * Redirects to the given URL (HTML method).
+ * once this function called, the execution doesn't go further
+ * (presence of an exit() instruction.
+ *
+ * @param string $url
+ * @param string $msg
+ * @param integer $refresh_time
+ * @return void
+ */
+function redirect_html( $url , $msg = '', $refresh_time = 0)
+{
+  global $user, $template, $lang_info, $conf, $lang, $t2, $page, $debug;
+
+  if (!isset($lang_info) || !isset($template) )
+  {
+    $user = build_user( $conf['guest_id'], true);
+    load_language('common.lang');
+    trigger_action('loading_lang');
+    load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) );
+    $template = new Template(PHPWG_ROOT_PATH.'themes', get_default_theme());
+  }
+	elseif (defined('IN_ADMIN') and IN_ADMIN)
+	{
+		$template = new Template(PHPWG_ROOT_PATH.'themes', get_default_theme());
+	}
+
+  if (empty($msg))
+  {
+    $msg = nl2br(l10n('Redirection...'));
+  }
+
+  $refresh = $refresh_time;
+  $url_link = $url;
+  $title = 'redirection';
+
+  $template->set_filenames( array( 'redirect' => 'redirect.tpl' ) );
+
+  include( PHPWG_ROOT_PATH.'include/page_header.php' );
+
+  $template->set_filenames( array( 'redirect' => 'redirect.tpl' ) );
+  $template->assign('REDIRECT_MSG', $msg);
+
+  $template->parse('redirect');
+
+  include( PHPWG_ROOT_PATH.'include/page_tail.php' );
+
+  exit();
+}
+
+/**
+ * Redirects to the given URL (automatically choose HTTP or HTML method).
+ * once this function called, the execution doesn't go further
+ * (presence of an exit() instruction.
+ *
+ * @param string $url
+ * @param string $msg
+ * @param integer $refresh_time
+ * @return void
+ */
+function redirect( $url , $msg = '', $refresh_time = 0)
+{
+  global $conf;
+
+  // with RefeshTime <> 0, only html must be used
+  if ($conf['default_redirect_method']=='http'
+      and $refresh_time==0
+      and !headers_sent()
+    )
+  {
+    redirect_http($url);
+  }
+  else
+  {
+    redirect_html($url, $msg, $refresh_time);
+  }
+}
+
+/**
+ * returns $_SERVER['QUERY_STRING'] whithout keys given in parameters
+ *
+ * @param string[] $rejects
+ * @param boolean $escape escape *&* to *&amp;*
+ * @returns string
+ */
+function get_query_string_diff($rejects=array(), $escape=true)
+{
+  if (empty($_SERVER['QUERY_STRING']))
+  {
+    return '';
+  }
+
+  parse_str($_SERVER['QUERY_STRING'], $vars);
+
+  $vars = array_diff_key($vars, array_flip($rejects));
+  
+  return '?' . http_build_query($vars, '', $escape ? '&amp;' : '&');
+}
+
+/**
+ * returns true if the url is absolute (begins with http)
+ *
+ * @param string $url
+ * @returns boolean
+ */
+function url_is_remote($url)
+{
+  if ( strncmp($url, 'http://', 7)==0
+    or strncmp($url, 'https://', 8)==0 )
+  {
+    return true;
+  }
+  return false;
+}
+
+/**
+ * returns available themes
+ *
+ * @param bool $show_mobile
+ * @return array
+ */
+function get_pwg_themes($show_mobile=false)
+{
+  global $conf;
+
+  $themes = array();
+
+  $query = '
+SELECT
+    id,
+    name
+  FROM '.THEMES_TABLE.'
+  ORDER BY name ASC
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['id'] == $conf['mobile_theme'])
+    {
+      if (!$show_mobile)
+      {
+        continue;
+      }
+      $row['name'] .= ' ('.l10n('Mobile').')';
+    }
+    if (check_theme_installed($row['id']))
+    {
+      $themes[ $row['id'] ] = $row['name'];
+    }
+  }
+
+  // plugins want remove some themes based on user status maybe?
+  $themes = trigger_event('get_pwg_themes', $themes);
+
+  return $themes;
+}
+
+/**
+ * check if a theme is installed (directory exsists)
+ *
+ * @param string $theme_id
+ * @return bool
+ */
+function check_theme_installed($theme_id)
+{
+  global $conf;
+
+  return file_exists($conf['themes_dir'].'/'.$theme_id.'/'.'themeconf.inc.php');
+}
+
+/**
+ * Transforms an original path to its pwg representative
+ *
+ * @param string $path
+ * @param string $representative_ext
+ * @return string
+ */
+function original_to_representative($path, $representative_ext)
+{
+  $pos = strrpos($path, '/');
+  $path = substr_replace($path, 'pwg_representative/', $pos+1, 0);
+  $pos = strrpos($path, '.');
+  return substr_replace($path, $representative_ext, $pos+1);
+}
+
+/**
+ * get the full path of an image
+ *
+ * @param array $element_info element information from db (at least 'path')
+ * @return string
+ */
+function get_element_path($element_info)
+{
+  $path = $element_info['path'];
+  if ( !url_is_remote($path) )
+  {
+    $path = PHPWG_ROOT_PATH.$path;
+  }
+  return $path;
+}
+
+
+/**
+ * fill the current user caddie with given elements, if not already in caddie
+ *
+ * @param int[] $elements_id
+ */
+function fill_caddie($elements_id)
+{
+  global $user;
+
+  $query = '
+SELECT element_id
+  FROM '.CADDIE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+  $in_caddie = array_from_query($query, 'element_id');
+
+  $caddiables = array_diff($elements_id, $in_caddie);
+
+  $datas = array();
+
+  foreach ($caddiables as $caddiable)
+  {
+    $datas[] = array(
+      'element_id' => $caddiable,
+      'user_id' => $user['id'],
+      );
+  }
+
+  if (count($caddiables) > 0)
+  {
+    mass_inserts(CADDIE_TABLE, array('element_id','user_id'), $datas);
+  }
+}
+
+/**
+ * returns the element name from its filename.
+ * removes file extension and replace underscores by spaces
+ *
+ * @param string $filename
+ * @return string name
+ */
+function get_name_from_file($filename)
+{
+  return str_replace('_',' ',get_filename_wo_extension($filename));
+}
+
+/**
+ * translation function.
+ * returns the corresponding value from _$lang_ if existing else the key is returned
+ * if more than one parameter is provided sprintf is applied
+ *
+ * @param string $key
+ * @param mixed $args,... optional arguments
+ * @return string
+ */
+function l10n($key)
+{
+  global $lang, $conf;
+
+  if ( ($val=@$lang[$key]) == null)
+  {
+    if ($conf['debug_l10n'] and !isset($lang[$key]) and !empty($key))
+    {
+      trigger_error('[l10n] language key "'. $key .'" not defined', E_USER_WARNING);
+    }
+    $val = $key;
+  }
+
+  if (func_num_args() > 1)
+  {
+    $args = func_get_args();
+    $val = vsprintf($val, array_slice($args, 1));
+  }
+
+  return $val;
+}
+
+/**
+ * returns the printf value for strings including %d
+ * returned value is concorded with decimal value (singular, plural)
+ *
+ * @param string $singular_key
+ * @param string $plural_key
+ * @param int $decimal
+ * @return string
+ */
+function l10n_dec($singular_key, $plural_key, $decimal)
+{
+  global $lang_info;
+
+  return
+    sprintf(
+      l10n((
+        (($decimal > 1) or ($decimal == 0 and $lang_info['zero_plural']))
+          ? $plural_key
+          : $singular_key
+        )), $decimal);
+}
+
+/**
+ * returns a single element to use with l10n_args
+ *
+ * @param string $key translation key
+ * @param mixed $args arguments to use on sprintf($key, args)
+ *   if args is a array, each values are used on sprintf
+ * @return string
+ */
+function get_l10n_args($key, $args='')
+{
+  if (is_array($args))
+  {
+    $key_arg = array_merge(array($key), $args);
+  }
+  else
+  {
+    $key_arg = array($key,  $args);
+  }
+  return array('key_args' => $key_arg);
+}
+
+/**
+ * returns a string formated with l10n elements.
+ * it is usefull to "prepare" a text and translate it later
+ * @see get_l10n_args() 
+ *
+ * @param array $key_args one l10n_args element or array of l10n_args elements
+ * @param string $sep used when translated elements are concatened
+ * @return string
+ */
+function l10n_args($key_args, $sep = "\n")
+{
+  if (is_array($key_args))
+  {
+    foreach ($key_args as $key => $element)
+    {
+      if (isset($result))
+      {
+        $result .= $sep;
+      }
+      else
+      {
+        $result = '';
+      }
+
+      if ($key === 'key_args')
+      {
+        array_unshift($element, l10n(array_shift($element))); // translate the key
+        $result .= call_user_func_array('sprintf', $element);
+      }
+      else
+      {
+        $result .= l10n_args($element, $sep);
+      }
+    }
+  }
+  else
+  {
+    fatal_error('l10n_args: Invalid arguments');
+  }
+
+  return $result;
+}
+
+/**
+ * returns the corresponding value from $themeconf if existing or an empty string
+ *
+ * @param string $key
+ * @return string
+ */
+function get_themeconf($key)
+{
+  global $template;
+
+  return $template->get_themeconf($key);
+}
+
+/**
+ * Returns webmaster mail address depending on $conf['webmaster_id']
+ *
+ * @return string
+ */
+function get_webmaster_mail_address()
+{
+  global $conf;
+
+  $query = '
+SELECT '.$conf['user_fields']['email'].'
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['id'].' = '.$conf['webmaster_id'].'
+;';
+  list($email) = pwg_db_fetch_row(pwg_query($query));
+
+  $email = trigger_event('get_webmaster_mail_address', $email);
+
+  return $email;
+}
+
+/**
+ * Add configuration parameters from database to global $conf array
+ *
+ * @param string $condition SQL condition
+ * @return void
+ */
+function load_conf_from_db($condition = '')
+{
+  global $conf;
+
+  $query = '
+SELECT param, value
+ FROM '.CONFIG_TABLE.'
+ '.(!empty($condition) ? 'WHERE '.$condition : '').'
+;';
+  $result = pwg_query($query);
+
+  if ((pwg_db_num_rows($result) == 0) and !empty($condition))
+  {
+    fatal_error('No configuration data');
+  }
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $val = isset($row['value']) ? $row['value'] : '';
+    // If the field is true or false, the variable is transformed into a boolean value.
+    if ($val == 'true')
+    {
+      $val = true;
+    }
+    elseif ($val == 'false')
+    {
+      $val = false;
+    }
+    $conf[ $row['param'] ] = $val;
+  }
+  
+  trigger_action('load_conf', $condition);
+}
+
+/**
+ * Add or update a config parameter
+ *
+ * @param string $param
+ * @param string $value
+ */
+function conf_update_param($param, $value)
+{
+  $query = '
+SELECT
+    param,
+    value
+  FROM '.CONFIG_TABLE.'
+  WHERE param = \''.$param.'\'
+;';
+  $params = array_from_query($query, 'param');
+
+  if (count($params) == 0)
+  {
+    $query = '
+INSERT
+  INTO '.CONFIG_TABLE.'
+  (param, value)
+  VALUES(\''.$param.'\', \''.$value.'\')
+;';
+    pwg_query($query);
+  }
+  else
+  {
+    $query = '
+UPDATE '.CONFIG_TABLE.'
+  SET value = \''.$value.'\'
+  WHERE param = \''.$param.'\'
+;';
+    pwg_query($query);
+  }
+}
+
+/**
+ * Delete one or more config parameters
+ * @since 2.6
+ *
+ * @param string|string[] $params
+ */
+function conf_delete_param($params)
+{
+  global $conf;
+  
+  if (!is_array($params))
+  {
+    $params = array($params);
+  }
+  if (empty($params))
+  {
+    return;
+  }
+  
+  $query = '
+DELETE FROM '.CONFIG_TABLE.'
+  WHERE param IN(\''. implode('\',\'', $params) .'\')
+;';
+  pwg_query($query);
+  
+  foreach ($params as $param)
+  {
+    unset($conf[$param]);
+  }
+}
+
+/**
+ * Prepends and appends strings at each value of the given array.
+ *
+ * @param array $array
+ * @param string $prepend_str
+ * @param string $append_str
+ * @return array
+ */
+function prepend_append_array_items($array, $prepend_str, $append_str)
+{
+  array_walk(
+    $array,
+    create_function('&$s', '$s = "'.$prepend_str.'".$s."'.$append_str.'";')
+    );
+
+  return $array;
+}
+
+/**
+ * creates an simple hashmap based on a SQL query.
+ * choose one to be the key, another one to be the value.
+ *
+ * @param string $query
+ * @param string $keyname
+ * @param string $valuename
+ * @return array
+ */
+function simple_hash_from_query($query, $keyname, $valuename)
+{
+  $array = array();
+
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $array[ $row[$keyname] ] = $row[$valuename];
+  }
+
+  return $array;
+}
+
+/**
+ * creates an associative array based on a SQL query.
+ * choose one to be the key
+ *
+ * @param string $query
+ * @param string $keyname
+ * @return array
+ */
+function hash_from_query($query, $keyname)
+{
+  $array = array();
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $array[ $row[$keyname] ] = $row;
+  }
+  return $array;
+}
+
+/**
+ * creates a numeric array based on a SQL query.
+ * if _$fieldname_ is empty the returned value will be an array of arrays
+ * if _$fieldname_ is provided the returned value will be a one dimension array
+ *
+ * @param string $query
+ * @param string $fieldname
+ * @return array
+ */
+function array_from_query($query, $fieldname=false)
+{
+  $array = array();
+
+  $result = pwg_query($query);
+  if (false === $fieldname)
+  {
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $array[] = $row;      
+    }
+  }
+  else
+  {
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $array[] = $row[$fieldname];
+    }
+  }
+  return $array;
+}
+
+/**
+ * Return the basename of the current script.
+ * The lowercase case filename of the current script without extension
+ *
+ * @return string
+ */
+function script_basename()
+{
+  global $conf;
+
+  foreach (array('SCRIPT_NAME', 'SCRIPT_FILENAME', 'PHP_SELF') as $value)
+  {
+    if (!empty($_SERVER[$value]))
+    {
+      $filename = strtolower($_SERVER[$value]);
+      if ($conf['php_extension_in_urls'] and get_extension($filename)!=='php')
+        continue;
+      $basename = basename($filename, '.php');
+      if (!empty($basename))
+      {
+        return $basename;
+      }
+    }
+  }
+  return '';
+}
+
+/**
+ * Return $conf['filter_pages'] value for the current page
+ *
+ * @param string $value_name
+ * @return mixed
+ */
+function get_filter_page_value($value_name)
+{
+  global $conf;
+
+  $page_name = script_basename();
+
+  if (isset($conf['filter_pages'][$page_name][$value_name]))
+  {
+    return $conf['filter_pages'][$page_name][$value_name];
+  }
+  else if (isset($conf['filter_pages']['default'][$value_name]))
+  {
+    return $conf['filter_pages']['default'][$value_name];
+  }
+  else
+  {
+    return null;
+  }
+}
+
+/**
+ * return the character set used by Piwigo
+ * @return string
+ */
+function get_pwg_charset()
+{
+  $pwg_charset = 'utf-8';
+  if (defined('PWG_CHARSET'))
+  {
+    $pwg_charset = PWG_CHARSET;
+  }
+  return $pwg_charset;
+}
+
+/**
+ * returns the parent (fallback) language of a language.
+ * if _$lang_id_ is null it applies to the current language
+ * @since 2.6
+ *
+ * @param string $lang_id
+ * @return string|null
+ */
+function get_parent_language($lang_id=null)
+{
+  if (empty($lang_id))
+  {
+    global $lang_info;
+    return !empty($lang_info['parent']) ? $lang_info['parent'] : null;
+  }
+  else
+  {
+    $f = PHPWG_ROOT_PATH.'language/'.$lang_id.'/common.lang.php';
+    if (file_exists($f))
+    {
+      include($f);
+      return !empty($lang_info['parent']) ? $lang_info['parent'] : null;
+    }
+  }
+  return null;
+}
+
+/**
+ * includes a language file or returns the content of a language file
+ *
+ * tries to load in descending order:
+ *   param language, user language, default language
+ *
+ * @param string $filename
+ * @param string $dirname
+ * @param mixed options can contain
+ *     @option string language - language to load
+ *     @option bool return - if true the file content is returned
+ *     @option bool no_fallback - if true do not load default language
+ *     @option bool local - if true load file from local directory
+ * @return boolean|string
+ */
+function load_language($filename, $dirname = '', $options = array())
+{
+  global $user, $language_files;
+  
+  if ( !empty($dirname) and !empty($filename) )
+  {
+    if ( empty($language_files[$dirname]) or !in_array($filename,$language_files[$dirname]) )
+    {
+      $language_files[$dirname][] = $filename;
+    }
+  }
+
+  if (! @$options['return'] )
+  {
+    $filename .= '.php'; //MAYBE to do .. load .po and .mo localization files
+  }
+  if (empty($dirname))
+  {
+    $dirname = PHPWG_ROOT_PATH;
+  }
+  $dirname .= 'language/';
+
+  $languages = array();
+  if ( !empty($options['language']) )
+  {
+    $languages[] = $options['language'];
+  }
+  if ( !empty($user['language']) )
+  {
+    $languages[] = $user['language'];
+  }
+  if ( ($parent = get_parent_language()) != null)
+  {
+    $languages[] = $parent;
+  }
+  if ( ! @$options['no_fallback'] )
+  {
+    if ( defined('PHPWG_INSTALLED') )
+    {
+      $languages[] = get_default_language();
+    }
+    $languages[] = PHPWG_DEFAULT_LANGUAGE;
+  }
+
+  $languages = array_unique($languages);
+
+  /*Note: target charset is always utf-8
+  if ( empty($options['target_charset']) )
+  {
+    $target_charset = get_pwg_charset();
+  }
+  else
+  {
+    $target_charset = $options['target_charset'];
+  }
+  $target_charset = strtolower($target_charset);*/
+  $source_file       = '';
+  $selected_language = '';
+  foreach ($languages as $language)
+  {
+    $f = @$options['local'] ?
+      $dirname.$language.'.'.$filename:
+      $dirname.$language.'/'.$filename;
+
+    if (file_exists($f))
+    {
+      $selected_language = $language;
+      $source_file = $f;
+      break;
+    }
+  }
+
+  if ( !empty($source_file) )
+  {
+    if (! @$options['return'] )
+    {
+      @include($source_file);
+      $load_lang = @$lang;
+      $load_lang_info = @$lang_info;
+
+      global $lang, $lang_info;
+      if ( !isset($lang) ) $lang=array();
+      if ( !isset($lang_info) ) $lang_info=array();
+      
+      $parent_language = !empty($load_lang_info['parent']) ? $load_lang_info['parent'] : (
+                            !empty($lang_info['parent']) ? $lang_info['parent'] : null );
+      if (!empty($parent_language) and $parent_language != $selected_language)
+      {
+        @include(str_replace($selected_language, $parent_language, $source_file));
+      }
+
+      /* Note: target charset is always utf-8
+      if ( 'utf-8'!=$target_charset)
+      {
+        if ( is_array($load_lang) )
+        {
+          foreach ($load_lang as $k => $v)
+          {
+            if ( is_array($v) )
+            {
+              $func = create_function('$v', 'return convert_charset($v, "utf-8", "'.$target_charset.'");' );
+              $lang[$k] = array_map($func, $v);
+            }
+            else
+              $lang[$k] = convert_charset($v, 'utf-8', $target_charset);
+          }
+        }
+        if ( is_array($load_lang_info) )
+        {
+          foreach ($load_lang_info as $k => $v)
+          {
+            $lang_info[$k] = convert_charset($v, 'utf-8', $target_charset);
+          }
+        }
+      }
+      else
+      {*/
+        $lang = array_merge( $lang, (array)$load_lang );
+        $lang_info = array_merge( $lang_info, (array)$load_lang_info );
+      //}
+      return true;
+    }
+    else
+    {
+      $content = @file_get_contents($source_file);
+      //Note: target charset is always utf-8 $content = convert_charset($content, 'utf-8', $target_charset);
+      return $content;
+    }
+  }
+  return false;
+}
+
+/**
+ * converts a string from a character set to another character set
+ *
+ * @param string $str
+ * @param string $source_charset
+ * @param string $dest_charset
+ */
+function convert_charset($str, $source_charset, $dest_charset)
+{
+  if ($source_charset==$dest_charset)
+    return $str;
+  if ($source_charset=='iso-8859-1' and $dest_charset=='utf-8')
+  {
+    return utf8_encode($str);
+  }
+  if ($source_charset=='utf-8' and $dest_charset=='iso-8859-1')
+  {
+    return utf8_decode($str);
+  }
+  if (function_exists('iconv'))
+  {
+    return iconv($source_charset, $dest_charset, $str);
+  }
+  if (function_exists('mb_convert_encoding'))
+  {
+    return mb_convert_encoding( $str, $dest_charset, $source_charset );
+  }
+  return $str; // TODO
+}
+
+/**
+ * makes sure a index.htm protects the directory from browser file listing
+ *
+ * @param string $dir
+ */
+function secure_directory($dir)
+{
+  $file = $dir.'/index.htm';
+  if (!file_exists($file))
+  {
+    @file_put_contents($file, 'Not allowed!');
+  }
+}
+
+/**
+ * returns a "secret key" that is to be sent back when a user posts a form
+ *
+ * @param int $valid_after_seconds - key validity start time from now
+ * @param string $aditionnal_data_to_hash
+ * @return string
+ */
+function get_ephemeral_key($valid_after_seconds, $aditionnal_data_to_hash = '')
+{
+	global $conf;
+	$time = round(microtime(true), 1);
+	return $time.':'.$valid_after_seconds.':'
+		.hash_hmac(
+			'md5',
+			$time.substr($_SERVER['REMOTE_ADDR'],0,5).$valid_after_seconds.$aditionnal_data_to_hash,
+			$conf['secret_key']);
+}
+
+/**
+ * verify a key sent back with a form
+ *
+ * @param string $key
+ * @param string $aditionnal_data_to_hash
+ * @return bool
+ */
+function verify_ephemeral_key($key, $aditionnal_data_to_hash = '')
+{
+	global $conf;
+	$time = microtime(true);
+	$key = explode( ':', @$key );
+	if ( count($key)!=3
+		or $key[0]>$time-(float)$key[1] // page must have been retrieved more than X sec ago
+		or $key[0]<$time-3600 // 60 minutes expiration
+		or hash_hmac(
+			  'md5', $key[0].substr($_SERVER['REMOTE_ADDR'],0,5).$key[1].$aditionnal_data_to_hash, $conf['secret_key']
+			) != $key[2]
+	  )
+	{
+		return false;
+	}
+	return true;
+}
+
+/**
+ * return an array which will be sent to template to display navigation bar
+ *
+ * @param string $url base url of all links
+ * @param int $nb_elements
+ * @param int $start
+ * @param int $nb_element_page
+ * @param bool $clean_url
+ * @param string $param_name
+ * @return array
+ */
+function create_navigation_bar($url, $nb_element, $start, $nb_element_page, $clean_url = false, $param_name='start')
+{
+  global $conf;
+
+  $navbar = array();
+  $pages_around = $conf['paginate_pages_around'];
+  $start_str = $clean_url ? '/'.$param_name.'-' : (strpos($url, '?')===false ? '?':'&amp;').$param_name.'=';
+
+  if (!isset($start) or !is_numeric($start) or (is_numeric($start) and $start < 0))
+  {
+    $start = 0;
+  }
+
+  // navigation bar useful only if more than one page to display !
+  if ($nb_element > $nb_element_page)
+  {
+    $url_start = $url.$start_str;
+
+    $cur_page = $navbar['CURRENT_PAGE'] = $start / $nb_element_page + 1;
+    $maximum = ceil($nb_element / $nb_element_page);
+
+    $start = $nb_element_page * round( $start / $nb_element_page );
+    $previous = $start - $nb_element_page;
+    $next = $start + $nb_element_page;
+    $last = ($maximum - 1) * $nb_element_page;
+
+    // link to first page and previous page?
+    if ($cur_page != 1)
+    {
+      $navbar['URL_FIRST'] = $url;
+      $navbar['URL_PREV'] = $previous > 0 ? $url_start.$previous : $url;
+    }
+    // link on next page and last page?
+    if ($cur_page != $maximum)
+    {
+      $navbar['URL_NEXT'] = $url_start.($next < $last ? $next : $last);
+      $navbar['URL_LAST'] = $url_start.$last;
+    }
+
+    // pages to display
+    $navbar['pages'] = array();
+    $navbar['pages'][1] = $url;
+    for ($i = max( floor($cur_page) - $pages_around , 2), $stop = min( ceil($cur_page) + $pages_around + 1, $maximum);
+         $i < $stop; $i++)
+    {
+      $navbar['pages'][$i] = $url.$start_str.(($i - 1) * $nb_element_page);
+    }
+    $navbar['pages'][$maximum] = $url_start.$last;
+    $navbar['NB_PAGE']=$maximum;
+  }
+  return $navbar;
+}
+
+/**
+ * return an array which will be sent to template to display recent icon
+ *
+ * @param string $date
+ * @param bool $is_child_date
+ * @return array
+ */
+function get_icon($date, $is_child_date = false)
+{
+  global $cache, $user;
+
+  if (empty($date))
+  {
+    return false;
+  }
+
+  if (!isset($cache['get_icon']['title']))
+  {
+    $cache['get_icon']['title'] = l10n(
+      'photos posted during the last %d days',
+      $user['recent_period']
+      );
+  }
+
+  $icon = array(
+    'TITLE' => $cache['get_icon']['title'],
+    'IS_CHILD_DATE' => $is_child_date,
+    );
+
+  if (isset($cache['get_icon'][$date]))
+  {
+    return $cache['get_icon'][$date] ? $icon : array();
+  }
+
+  if (!isset($cache['get_icon']['sql_recent_date']))
+  {
+    // Use MySql date in order to standardize all recent "actions/queries"
+    $cache['get_icon']['sql_recent_date'] = pwg_db_get_recent_period($user['recent_period']);
+  }
+
+  $cache['get_icon'][$date] = $date > $cache['get_icon']['sql_recent_date'];
+
+  return $cache['get_icon'][$date] ? $icon : array();
+}
+
+/**
+ * check token comming from form posted or get params to prevent csrf attacks.
+ * if pwg_token is empty action doesn't require token
+ * else pwg_token is compare to server token
+ *
+ * @return void access denied if token given is not equal to server token
+ */
+function check_pwg_token()
+{
+  if (!empty($_REQUEST['pwg_token']))
+  {
+    if (get_pwg_token() != $_REQUEST['pwg_token'])
+    {
+      access_denied();
+    }
+  }
+  else
+  {
+    bad_request('missing token');
+  }
+}
+
+/**
+ * get pwg_token used to prevent csrf attacks
+ *
+ * @return string
+ */
+function get_pwg_token()
+{
+  global $conf;
+
+  return hash_hmac('md5', session_id(), $conf['secret_key']);
+}
+
+/*
+ * breaks the script execution if the given value doesn't match the given
+ * pattern. This should happen only during hacking attempts.
+ *
+ * @param string $param_name
+ * @param array $param_array
+ * @param boolean $is_array
+ * @param string $pattern
+ * @param boolean $mandatory
+ */
+function check_input_parameter($param_name, $param_array, $is_array, $pattern, $mandatory=false)
+{
+  $param_value = null;
+  if (isset($param_array[$param_name]))
+  {
+    $param_value = $param_array[$param_name];
+  }
+
+  // it's ok if the input parameter is null
+  if (empty($param_value))
+  {
+    if ($mandatory)
+    {
+      fatal_error('[Hacking attempt] the input parameter "'.$param_name.'" is not valid');
+    }
+    return true;
+  }
+
+  if ($is_array)
+  {
+    if (!is_array($param_value))
+    {
+      fatal_error('[Hacking attempt] the input parameter "'.$param_name.'" should be an array');
+    }
+
+    foreach ($param_value as $item_to_check)
+    {
+      if (!preg_match($pattern, $item_to_check))
+      {
+        fatal_error('[Hacking attempt] an item is not valid in input parameter "'.$param_name.'"');
+      }
+    }
+  }
+  else
+  {
+    if (!preg_match($pattern, $param_value))
+    {
+      fatal_error('[Hacking attempt] the input parameter "'.$param_name.'" is not valid');
+    }
+  }
+}
+
+/**
+ * get localized privacy level values
+ *
+ * @return string[]
+ */
+function get_privacy_level_options()
+{
+  global $conf;
+
+  $options = array();
+  $label = '';
+  foreach (array_reverse($conf['available_permission_levels']) as $level)
+  {
+    if (0 == $level)
+    {
+      $label = l10n('Everybody');
+    }
+    else
+    {
+      if (strlen($label))
+      {
+        $label .= ', ';
+      }
+      $label .= l10n( sprintf('Level %d', $level) );
+    }
+    $options[$level] = $label;
+  }
+  return $options;
+}
+
+
+/**
+ * return the branch from the version. For example version 2.2.4 is for branch 2.2
+ *
+ * @param string $version
+ * @return string
+ */
+function get_branch_from_version($version)
+{
+  return implode('.', array_slice(explode('.', $version), 0, 2));
+}
+
+/**
+ * return the device type: mobile, tablet or desktop
+ *
+ * @return string
+ */
+function get_device()
+{
+  $device = pwg_get_session_var('device');
+
+  if (is_null($device))
+  {
+    include_once(PHPWG_ROOT_PATH.'include/mdetect.php');
+    $uagent_obj = new uagent_info();
+    if ($uagent_obj->DetectSmartphone())
+    {
+      $device = 'mobile';
+    }
+    elseif ($uagent_obj->DetectTierTablet())
+    {
+      $device = 'tablet';
+    }
+    else
+    {
+      $device = 'desktop';
+    }
+    pwg_set_session_var('device', $device);
+  }
+
+  return $device;
+}
+
+/**
+ * return true if mobile theme should be loaded
+ *
+ * @return bool
+ */
+function mobile_theme()
+{
+  global $conf;
+
+  if (empty($conf['mobile_theme']))
+  {
+    return false;
+  }
+
+  if (isset($_GET['mobile']))
+  {
+    $is_mobile_theme = get_boolean($_GET['mobile']);
+    pwg_set_session_var('mobile_theme', $is_mobile_theme);
+  }
+  else
+  {
+    $is_mobile_theme = pwg_get_session_var('mobile_theme');
+  }
+
+  if (is_null($is_mobile_theme))
+  {
+    $is_mobile_theme = (get_device() == 'mobile');
+    pwg_set_session_var('mobile_theme', $is_mobile_theme);
+  }
+
+  return $is_mobile_theme;
+}
+
+/**
+ * check url format
+ *
+ * @param string $url
+ * @return bool
+ */
+function url_check_format($url)
+{
+  if (version_compare(PHP_VERSION, '5.2.0') >= 0)
+  {
+    return filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED)!==false;
+  }
+  else
+  {
+    // http://mathiasbynens.be/demo/url-regex @imme_emosol
+    return (bool)preg_match('@^https?://(-\.)?([^\s/?\.#-]+\.?)+(/[^\s]*)?$@iS', $url);
+  }
+}
+
+/**
+ * check email format
+ *
+ * @param string $mail_address
+ * @return bool
+ */
+function email_check_format($mail_address)
+{
+  if (version_compare(PHP_VERSION, '5.2.0') >= 0)
+  {
+    return filter_var($mail_address, FILTER_VALIDATE_EMAIL)!==false;
+  }
+  else
+  {
+    $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // before  arobase
+    $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // domain name
+    $regex = '/^' . $atom . '+' . '(\.' . $atom . '+)*' . '@' . '(' . $domain . '{1,63}\.)+' . $domain . '{2,63}$/i';
+
+    return (bool)preg_match($regex, $mail_address);
+  }
+}
+
+/**
+ * returns the number of available comments for the connected user
+ *
+ * @return int
+ */
+function get_nb_available_comments()
+{
+  global $user;
+  if (!isset($user['nb_available_comments']))
+  {
+    $where = array();
+    if ( !is_admin() )
+      $where[] = 'validated=\'true\'';
+    $where[] = get_sql_condition_FandF
+      (
+        array
+          (
+            'forbidden_categories' => 'category_id',
+            'visible_categories' => 'category_id',
+            'visible_images' => 'ic.image_id'
+          ),
+        '', true
+      );
+
+    $query = '
+SELECT COUNT(DISTINCT(com.id))
+  FROM '.IMAGE_CATEGORY_TABLE.' AS ic
+    INNER JOIN '.COMMENTS_TABLE.' AS com
+    ON ic.image_id = com.image_id
+  WHERE '.implode('
+    AND ', $where);
+    list($user['nb_available_comments']) = pwg_db_fetch_row(pwg_query($query));
+
+    single_update(USER_CACHE_TABLE, 
+      array('nb_available_comments'=>$user['nb_available_comments']),
+      array('user_id'=>$user['id'])
+      );
+  }
+  return $user['nb_available_comments'];
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_calendar.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_calendar.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_calendar.inc.php	(revision 25596)
@@ -0,0 +1,304 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\calendar
+ */
+
+/** URL keyword for list view */
+define('CAL_VIEW_LIST',     'list');
+/** URL keyword for calendar view */
+define('CAL_VIEW_CALENDAR', 'calendar');
+
+
+/**
+ * Initialize _$page_ and _$template_ vars for calendar view.
+ */
+function initialize_calendar()
+{
+  global $page, $conf, $user, $template, $filter;
+
+//------------------ initialize the condition on items to take into account ---
+  $inner_sql = ' FROM ' . IMAGES_TABLE;
+
+  if ($page['section']=='categories')
+  { // we will regenerate the items by including subcats elements
+    $page['items'] = array();
+    $inner_sql .= '
+INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id';
+
+    if ( isset($page['category']) )
+    {
+      $sub_ids = array_diff(
+        get_subcat_ids(array($page['category']['id'])),
+        explode(',', $user['forbidden_categories'])
+        );
+
+      if (empty($sub_ids))
+      {
+        return; // nothing to do
+      }
+      $inner_sql .= '
+WHERE category_id IN ('.implode(',',$sub_ids).')';
+      $inner_sql .= '
+    '.get_sql_condition_FandF
+      (
+        array
+          (
+            'visible_images' => 'id'
+          ),
+        'AND', false
+      );
+    }
+    else
+    {
+      $inner_sql .= '
+    '.get_sql_condition_FandF
+      (
+        array
+          (
+            'forbidden_categories' => 'category_id',
+            'visible_categories' => 'category_id',
+            'visible_images' => 'id'
+          ),
+        'WHERE', true
+      );
+    }
+  }
+  else
+  {
+    if ( empty($page['items']) )
+    {
+      return; // nothing to do
+    }
+    $inner_sql .= '
+WHERE id IN (' . implode(',',$page['items']) .')';
+  }
+
+//-------------------------------------- initialize the calendar parameters ---
+  pwg_debug('start initialize_calendar');
+
+  $fields = array(
+    // Created
+    'created' => array(
+      'label'          => l10n('Creation date'),
+      ),
+    // Posted
+    'posted' => array(
+      'label'          => l10n('Post date'),
+      ),
+    );
+
+  $styles = array(
+    // Monthly style
+    'monthly' => array(
+      'include'        => 'calendar_monthly.class.php',
+      'view_calendar'  => true,
+      ),
+    // Weekly style
+    'weekly' => array(
+      'include'        => 'calendar_weekly.class.php',
+      'view_calendar'  => false,
+      ),
+    );
+
+  $views = array(CAL_VIEW_LIST,CAL_VIEW_CALENDAR);
+
+  // Retrieve calendar field
+  isset( $fields[ $page['chronology_field'] ] ) or fatal_error('bad chronology field');
+
+  // Retrieve style
+  if ( !isset( $styles[ $page['chronology_style'] ] ) )
+  {
+    $page['chronology_style'] = 'monthly';
+  }
+  $cal_style = $page['chronology_style'];
+  include(PHPWG_ROOT_PATH.'include/'. $styles[$cal_style]['include']);
+  // TODO : class name overlap, rename them in CalendarMonth and CalendarWeek
+  $calendar = new Calendar(); 
+
+  // Retrieve view
+
+  if ( !isset($page['chronology_view']) or
+       !in_array( $page['chronology_view'], $views ) )
+  {
+    $page['chronology_view'] = CAL_VIEW_LIST;
+  }
+
+  if ( CAL_VIEW_CALENDAR==$page['chronology_view'] and
+        !$styles[$cal_style]['view_calendar'] )
+  {
+
+    $page['chronology_view'] = CAL_VIEW_LIST;
+  }
+
+  // perform a sanity check on $requested
+  if (!isset($page['chronology_date']))
+  {
+    $page['chronology_date'] = array();
+  }
+  while ( count($page['chronology_date']) > 3)
+  {
+    array_pop($page['chronology_date']);
+  }
+
+  $any_count = 0;
+  for ($i = 0; $i < count($page['chronology_date']); $i++)
+  {
+    if ($page['chronology_date'][$i] == 'any')
+    {
+      if ($page['chronology_view'] == CAL_VIEW_CALENDAR)
+      {// we dont allow any in calendar view
+        while ($i < count($page['chronology_date']))
+        {
+          array_pop($page['chronology_date']);
+        }
+        break;
+      }
+      $any_count++;
+    }
+    elseif ($page['chronology_date'][$i] == '')
+    {
+      while ($i < count($page['chronology_date']))
+      {
+        array_pop($page['chronology_date']);
+      }
+    }
+    else
+    {
+      $page['chronology_date'][$i] = (int)$page['chronology_date'][$i];
+    }
+  }
+  if ($any_count == 3)
+  {
+    array_pop($page['chronology_date']);
+  }
+
+  $calendar->initialize($inner_sql);
+
+  //echo ('<pre>'. var_export($calendar, true) . '</pre>');
+
+  $must_show_list = true; // true until calendar generates its own display
+  if (script_basename() != 'picture') // basename without file extention
+  {
+    if ($calendar->generate_category_content())
+    {
+      $page['items'] = array();
+      $must_show_list = false;
+    }
+
+    $page['comment'] = '';
+    $template->assign('FILE_CHRONOLOGY_VIEW', 'month_calendar.tpl');
+
+    foreach ($styles as $style => $style_data)
+    {
+      foreach ($views as $view)
+      {
+        if ( $style_data['view_calendar'] or $view != CAL_VIEW_CALENDAR)
+        {
+          $selected = false;
+
+          if ($style!=$cal_style)
+          {
+            $chronology_date = array();
+            if ( isset($page['chronology_date'][0]) )
+            {
+              $chronology_date[] = $page['chronology_date'][0];
+            }
+          }
+          else
+          {
+            $chronology_date = $page['chronology_date'];
+          }
+          $url = duplicate_index_url(
+              array(
+                'chronology_style' => $style,
+                'chronology_view' => $view,
+                'chronology_date' => $chronology_date,
+                )
+             );
+
+          if ($style==$cal_style and $view==$page['chronology_view'] )
+          {
+            $selected = true;
+          }
+
+          $template->append(
+            'chronology_views',
+            array(
+              'VALUE' => $url,
+              'CONTENT' => l10n('chronology_'.$style.'_'.$view),
+              'SELECTED' => $selected,
+              )
+            );
+        }
+      }
+    }
+    $url = duplicate_index_url(
+              array(), array('start', 'chronology_date')
+            );
+    $calendar_title = '<a href="'.$url.'">'
+        .$fields[$page['chronology_field']]['label'].'</a>';
+    $calendar_title.= $calendar->get_display_name();
+    $template->assign('chronology',
+        array(
+          'TITLE' => $calendar_title
+        )
+      );
+  } // end category calling
+
+  if ($must_show_list)
+  {
+    $query = 'SELECT DISTINCT id ';
+    $query .= ','.$calendar->date_field;
+    $query .= $calendar->inner_sql.'
+  '.$calendar->get_date_where();
+    if ( isset($page['super_order_by']) )
+    {
+      $query .= '
+  '.$conf['order_by'];
+    }
+    else
+    {
+      if ( count($page['chronology_date'])==0
+           or in_array('any', $page['chronology_date']) )
+      {// selected period is very big so we show newest first
+        $order = ' DESC, ';
+      }
+      else
+      {// selected period is small (month,week) so we show oldest first
+        $order = ' ASC, ';
+      }
+      $order_by = str_replace(
+        'ORDER BY ',
+        'ORDER BY '.$calendar->date_field.$order, $conf['order_by']
+        );
+      $query .= '
+  '.$order_by;
+    }
+    $page['items'] = array_from_query($query, 'id');
+  }
+  pwg_debug('end initialize_calendar');
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_category.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_category.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_category.inc.php	(revision 25596)
@@ -0,0 +1,483 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\category
+ */
+
+
+/**
+ * Callback used for sorting by global_rank
+ */
+function global_rank_compare($a, $b)
+{
+  return strnatcasecmp($a['global_rank'], $b['global_rank']);
+}
+
+/**
+ * Callback used for sorting by rank
+ */
+function rank_compare($a, $b)
+{
+  return $a['rank'] - $b['rank'];
+}
+
+/**
+ * Is the category accessible to the connected user ?
+ * If the user is not authorized to see this category, script exits
+ *
+ * @param int $category_id
+ */
+function check_restrictions($category_id)
+{
+  global $user;
+
+  // $filter['visible_categories'] and $filter['visible_images']
+  // are not used because it's not necessary (filter <> restriction)
+  if (in_array($category_id, explode(',', $user['forbidden_categories'])))
+  {
+    access_denied();
+  }
+}
+
+/**
+ * Returns template vars for main categories menu.
+ *
+ * @return array[]
+ */
+function get_categories_menu()
+{
+  global $page, $user, $filter, $conf;
+
+  $query = '
+SELECT ';
+  // From CATEGORIES_TABLE
+  $query.= '
+  id, name, permalink, nb_images, global_rank,';
+  // From USER_CACHE_CATEGORIES_TABLE
+  $query.= '
+  date_last, max_date_last, count_images, count_categories';
+
+  // $user['forbidden_categories'] including with USER_CACHE_CATEGORIES_TABLE
+  $query.= '
+FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.'
+  ON id = cat_id and user_id = '.$user['id'];
+
+  // Always expand when filter is activated
+  if (!$user['expand'] and !$filter['enabled'])
+  {
+    $where = '
+(id_uppercat is NULL';
+    if (isset($page['category']))
+    {
+      $where .= ' OR id_uppercat IN ('.$page['category']['uppercats'].')';
+    }
+    $where .= ')';
+  }
+  else
+  {
+    $where = '
+  '.get_sql_condition_FandF
+    (
+      array
+        (
+          'visible_categories' => 'id',
+        ),
+      null,
+      true
+    );
+  }
+
+  $where = trigger_event('get_categories_menu_sql_where',
+    $where, $user['expand'], $filter['enabled'] );
+
+  $query.= '
+WHERE '.$where.'
+;';
+
+  $result = pwg_query($query);
+  $cats = array();
+  $selected_category = isset($page['category']) ? $page['category'] : null;
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $child_date_last = @$row['max_date_last']> @$row['date_last'];
+    $row = array_merge($row,
+      array(
+        'NAME' => trigger_event(
+          'render_category_name',
+          $row['name'],
+          'get_categories_menu'
+          ),
+        'TITLE' => get_display_images_count(
+          $row['nb_images'],
+          $row['count_images'],
+          $row['count_categories'],
+          false,
+          ' / '
+          ),
+        'URL' => make_index_url(array('category' => $row)),
+        'LEVEL' => substr_count($row['global_rank'], '.') + 1,
+        'SELECTED' => $selected_category['id'] == $row['id'] ? true : false,
+        'IS_UPPERCAT' => $selected_category['id_uppercat'] == $row['id'] ? true : false,
+        )
+      );
+    if ($conf['index_new_icon'])
+    {
+      $row['icon_ts'] = get_icon($row['max_date_last'], $child_date_last);
+    }
+    $cats[] = $row;
+    if ($row['id']==@$page['category']['id']) //save the number of subcats for later optim
+      $page['category']['count_categories'] = $row['count_categories'];
+  }
+  usort($cats, 'global_rank_compare');
+
+  // Update filtered data
+  if (function_exists('update_cats_with_filtered_data'))
+  {
+    update_cats_with_filtered_data($cats);
+  }
+
+  return $cats;
+}
+
+/**
+ * Retrieves informations about a category.
+ *
+ * @param int $id
+ * @return array
+ */
+function get_cat_info($id)
+{
+  $query = '
+SELECT *
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id = '.$id.'
+;';
+  $cat = pwg_db_fetch_assoc(pwg_query($query));
+  if (empty($cat))
+    return null;
+
+  foreach ($cat as $k => $v)
+  {
+    // If the field is true or false, the variable is transformed into a
+    // boolean value.
+    if ($cat[$k] == 'true' or $cat[$k] == 'false')
+    {
+      $cat[$k] = get_boolean( $cat[$k] );
+    }
+  }
+
+  $upper_ids = explode(',', $cat['uppercats']);
+  if ( count($upper_ids)==1 )
+  {// no need to make a query for level 1
+    $cat['upper_names'] = array(
+        array(
+          'id' => $cat['id'],
+          'name' => $cat['name'],
+          'permalink' => $cat['permalink'],
+          )
+      );
+  }
+  else
+  {
+    $query = '
+  SELECT id, name, permalink
+    FROM '.CATEGORIES_TABLE.'
+    WHERE id IN ('.$cat['uppercats'].')
+  ;';
+    $names = hash_from_query($query, 'id');
+
+    // category names must be in the same order than uppercats list
+    $cat['upper_names'] = array();
+    foreach ($upper_ids as $cat_id)
+    {
+      $cat['upper_names'][] = $names[$cat_id];
+    }
+  }
+  return $cat;
+}
+
+/**
+ * Returns an array of image orders available for users/visitors.
+ * Each entry is an array containing
+ *  0: name
+ *  1: SQL ORDER command
+ *  2: visiblity (true or false)
+ *
+ * @return array[]
+ */
+function get_category_preferred_image_orders()
+{
+  global $conf, $page;
+
+  return trigger_event('get_category_preferred_image_orders', array(
+    array(l10n('Default'),                        '',                     true),
+    array(l10n('Photo title, A &rarr; Z'),        'name ASC',             true),
+    array(l10n('Photo title, Z &rarr; A'),        'name DESC',            true),
+    array(l10n('Date created, new &rarr; old'),   'date_creation DESC',   true),
+    array(l10n('Date created, old &rarr; new'),   'date_creation ASC',    true),
+    array(l10n('Date posted, new &rarr; old'),    'date_available DESC',  true),
+    array(l10n('Date posted, old &rarr; new'),    'date_available ASC',   true),
+    array(l10n('Rating score, high &rarr; low'),  'rating_score DESC',    $conf['rate']),
+    array(l10n('Rating score, low &rarr; high'),  'rating_score ASC',     $conf['rate']),
+    array(l10n('Visits, high &rarr; low'),        'hit DESC',             true),
+    array(l10n('Visits, low &rarr; high'),        'hit ASC',              true),
+    array(l10n('Permissions'),                    'level DESC',           is_admin()),
+    ));
+}
+
+/**
+ * Assign a template var useable with {html_options} from a list of categories
+ *
+ * @param array[] $categories (at least id,name,global_rank,uppercats for each)
+ * @param int[] $selected ids of selected items
+ * @param string $blockname variable name in template
+ * @param bool $fullname full breadcrumb or not
+ */
+function display_select_categories($categories,
+                                   $selecteds,
+                                   $blockname,
+                                   $fullname = true)
+{
+  global $template;
+
+  $tpl_cats = array();
+  foreach ($categories as $category)
+  {
+    if ($fullname)
+    {
+      $option = strip_tags(
+        get_cat_display_name_cache(
+          $category['uppercats'],
+          null
+          )
+        );
+    }
+    else
+    {
+      $option = str_repeat('&nbsp;',
+                           (3 * substr_count($category['global_rank'], '.')));
+      $option.= '- ';
+      $option.= strip_tags(
+        trigger_event(
+          'render_category_name',
+          $category['name'],
+          'display_select_categories'
+          )
+        );
+    }
+    $tpl_cats[ $category['id'] ] = $option;
+  }
+
+  $template->assign( $blockname, $tpl_cats);
+  $template->assign( $blockname.'_selected', $selecteds);
+}
+
+/**
+ * Same as display_select_categories but categories are ordered by rank
+ * @see display_select_categories()
+ */
+function display_select_cat_wrapper($query,
+                                    $selecteds,
+                                    $blockname,
+                                    $fullname = true)
+{
+  $categories = array_from_query($query);
+  usort($categories, 'global_rank_compare');
+  display_select_categories($categories, $selecteds, $blockname, $fullname);
+}
+
+/**
+ * Returns all subcategory identifiers of given category ids
+ *
+ * @param int[] $ids
+ * @return int[]
+ */
+function get_subcat_ids($ids)
+{
+  $query = '
+SELECT DISTINCT(id)
+  FROM '.CATEGORIES_TABLE.'
+  WHERE ';
+  foreach ($ids as $num => $category_id)
+  {
+    is_numeric($category_id)
+      or trigger_error(
+        'get_subcat_ids expecting numeric, not '.gettype($category_id),
+        E_USER_WARNING
+      );
+    if ($num > 0)
+    {
+      $query.= '
+    OR ';
+    }
+    $query.= 'uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$category_id.'(,|$)\'';
+  }
+  $query.= '
+;';
+  return array_from_query($query, 'id');
+}
+
+/**
+ * Finds a matching category id from a potential list of permalinks
+ *
+ * @param string[] $permalinks
+ * @param int $idx filled with the index in $permalinks that matches
+ * @return int|null
+ */
+function get_cat_id_from_permalinks($permalinks, &$idx)
+{
+  $in = '';
+  foreach($permalinks as $permalink)
+  {
+    if ( !empty($in) ) $in.=', ';
+    $in .= '\''.$permalink.'\'';
+  }
+  $query ='
+SELECT cat_id AS id, permalink, 1 AS is_old
+  FROM '.OLD_PERMALINKS_TABLE.'
+  WHERE permalink IN ('.$in.')
+UNION
+SELECT id, permalink, 0 AS is_old
+  FROM '.CATEGORIES_TABLE.'
+  WHERE permalink IN ('.$in.')
+;';
+  $perma_hash = hash_from_query($query, 'permalink');
+
+  if ( empty($perma_hash) )
+    return null;
+  for ($i=count($permalinks)-1; $i>=0; $i--)
+  {
+    if ( isset( $perma_hash[ $permalinks[$i] ] ) )
+    {
+      $idx = $i;
+      $cat_id = $perma_hash[ $permalinks[$i] ]['id'];
+      if ($perma_hash[ $permalinks[$i] ]['is_old'])
+      {
+        $query='
+UPDATE '.OLD_PERMALINKS_TABLE.' SET last_hit=NOW(), hit=hit+1
+  WHERE permalink=\''.$permalinks[$i].'\' AND cat_id='.$cat_id.'
+  LIMIT 1';
+        pwg_query($query);
+      }
+      return $cat_id;
+    }
+  }
+  return null;
+}
+
+/**
+ * Returns display text for images counter of category
+ *
+ * @param int $cat_nb_images nb images directly in category
+ * @param int $cat_count_images nb images in category (including subcats)
+ * @param int $cat_count_categories nb subcats
+ * @param bool $short_message if true append " in this album"
+ * @param string $separator
+ * @return string
+ */
+function get_display_images_count($cat_nb_images, $cat_count_images, $cat_count_categories, $short_message = true, $separator = '\n')
+{
+  $display_text = '';
+
+  if ($cat_count_images > 0)
+  {
+    if ($cat_nb_images > 0 and $cat_nb_images < $cat_count_images)
+    {
+      $display_text.= get_display_images_count($cat_nb_images, $cat_nb_images, 0, $short_message, $separator).$separator;
+      $cat_count_images-= $cat_nb_images;
+      $cat_nb_images = 0;
+    }
+
+    //at least one image direct or indirect
+    $display_text.= l10n_dec('%d photo', '%d photos', $cat_count_images);
+
+    if ($cat_count_categories == 0 or $cat_nb_images == $cat_count_images)
+    {
+      //no descendant categories or descendants do not contain images
+      if (!$short_message)
+      {
+        $display_text.= ' '.l10n('in this album');
+      }
+    }
+    else
+    {
+      $display_text.= ' '.l10n_dec('in %d sub-album', 'in %d sub-albums', $cat_count_categories);
+    }
+  }
+
+  return $display_text;
+}
+
+/**
+ * Find a random photo among all photos inside an album (including sub-albums)
+ *
+ * @param array $category (at least id,uppercats,count_images)
+ * @param bool $recursive
+ * @return int|null
+ */
+function get_random_image_in_category($category, $recursive=true)
+{
+  $image_id = null;
+  if ($category['count_images']>0)
+  {
+    $query = '
+SELECT image_id
+  FROM '.CATEGORIES_TABLE.' AS c
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON ic.category_id = c.id
+  WHERE ';
+    if ($recursive)
+    {
+      $query.= '
+    (c.id='.$category['id'].' OR uppercats LIKE \''.$category['uppercats'].',%\')';
+    }
+    else
+    {
+      $query.= '
+    c.id='.$category['id'];
+    }
+    $query.= '
+    '.get_sql_condition_FandF
+    (
+      array
+        (
+          'forbidden_categories' => 'c.id',
+          'visible_categories' => 'c.id',
+          'visible_images' => 'image_id',
+        ),
+      "\n  AND"
+    ).'
+  ORDER BY '.DB_RANDOM_FUNCTION.'()
+  LIMIT 1
+;';
+    $result = pwg_query($query);
+    if (pwg_db_num_rows($result) > 0)
+    {
+      list($image_id) = pwg_db_fetch_row($result);
+    }
+  }
+
+  return $image_id;
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_comment.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_comment.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_comment.inc.php	(revision 25596)
@@ -0,0 +1,529 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\comment
+ */
+ 
+
+add_event_handler('user_comment_check', 'user_comment_check',
+  EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
+
+/**
+ * Does basic check on comment and returns action to perform.
+ * This method is called by a trigger_event()
+ *
+ * @param string $action before check
+ * @param array $comment
+ * @return string validate, moderate, reject
+ */
+function user_comment_check($action, $comment)
+{
+  global $conf,$user;
+
+  if ($action=='reject')
+    return $action;
+
+  $my_action = $conf['comment_spam_reject'] ? 'reject':'moderate';
+
+  if ($action==$my_action)
+    return $action;
+
+  // we do here only BASIC spam check (plugins can do more)
+  if ( !is_a_guest() )
+    return $action;
+
+  $link_count = preg_match_all( '/https?:\/\//',
+    $comment['content'], $matches);
+
+  if ( strpos($comment['author'], 'http://')!==false )
+  {
+    $link_count++;
+  }
+
+  if ( $link_count>$conf['comment_spam_max_links'] )
+  {
+    $_POST['cr'][] = 'links';
+    return $my_action;
+  }
+  return $action;
+}
+
+/**
+ * Tries to insert a user comment and returns action to perform.
+ *
+ * @param array $comm
+ * @param string $key secret key sent back to the browser
+ * @param array $infos output array of error messages
+ * @return string validate, moderate, reject
+ */
+function insert_user_comment(&$comm, $key, &$infos)
+{
+  global $conf, $user;
+
+  $comm = array_merge( $comm,
+    array(
+      'ip' => $_SERVER['REMOTE_ADDR'],
+      'agent' => $_SERVER['HTTP_USER_AGENT']
+    )
+   );
+
+  $infos = array();
+  if (!$conf['comments_validation'] or is_admin())
+  {
+    $comment_action='validate'; //one of validate, moderate, reject
+  }
+  else
+  {
+    $comment_action='moderate'; //one of validate, moderate, reject
+  }
+
+  // display author field if the user status is guest or generic
+  if (!is_classic_user())
+  {
+    if ( empty($comm['author']) )
+    {
+      if ($conf['comments_author_mandatory'])
+      {
+        $infos[] = l10n('Username is mandatory');
+        $comment_action='reject';
+      }
+      $comm['author'] = 'guest';
+    }
+    $comm['author_id'] = $conf['guest_id'];
+    // if a guest try to use the name of an already existing user, he must be
+    // rejected
+    if ( $comm['author'] != 'guest' )
+    {
+      $query = '
+SELECT COUNT(*) AS user_exists
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['username']." = '".addslashes($comm['author'])."'";
+      $row = pwg_db_fetch_assoc( pwg_query( $query ) );
+      if ( $row['user_exists'] == 1 )
+      {
+        $infos[] = l10n('This login is already used by another user');
+        $comment_action='reject';
+      }
+    }
+  }
+  else
+  {
+    $comm['author'] = addslashes($user['username']);
+    $comm['author_id'] = $user['id'];
+  }
+
+  if ( empty($comm['content']) )
+  { // empty comment content
+    $comment_action='reject';
+  }
+
+  if ( !verify_ephemeral_key(@$key, $comm['image_id']) )
+  {
+    $comment_action='reject';
+    $_POST['cr'][] = 'key'; // rvelices: I use this outside to see how spam robots work
+  }
+  
+  // website
+  if (!empty($comm['website_url']))
+  {
+    if (!preg_match('/^https?/i', $comm['website_url']))
+    {
+      $comm['website_url'] = 'http://'.$comm['website_url'];
+    }
+    if (!url_check_format($comm['website_url']))
+    {
+      $infos[] = l10n('Your website URL is invalid');
+      $comment_action='reject';
+    }
+  }
+  
+  // email
+  if (empty($comm['email']))
+  {
+    if (!empty($user['email']))
+    {
+      $comm['email'] = $user['email'];
+    }
+    else if ($conf['comments_email_mandatory'])
+    {
+      $infos[] = l10n('Email address is missing. Please specify an email address.');
+      $comment_action='reject';
+    }
+  }
+  else if (!email_check_format($comm['email']))
+  {
+    $infos[] = l10n('mail address must be like xxx@yyy.eee (example : jack@altern.org)');
+    $comment_action='reject';
+  }
+  
+  // anonymous id = ip address
+  $ip_components = explode('.', $comm['ip']);
+  if (count($ip_components) > 3)
+  {
+    array_pop($ip_components);
+  }
+  $comm['anonymous_id'] = implode('.', $ip_components);
+
+  if ($comment_action!='reject' and $conf['anti-flood_time']>0 and !is_admin())
+  { // anti-flood system
+    $reference_date = pwg_db_get_flood_period_expression($conf['anti-flood_time']);
+
+    $query = '
+SELECT count(1) FROM '.COMMENTS_TABLE.'
+  WHERE date > '.$reference_date.'
+    AND author_id = '.$comm['author_id'];
+    if (!is_classic_user())
+    {
+      $query.= '
+      AND anonymous_id = "'.$comm['anonymous_id'].'"';
+    }
+    $query.= '
+;';
+
+    list($counter) = pwg_db_fetch_row(pwg_query($query));
+    if ( $counter > 0 )
+    {
+      $infos[] = l10n('Anti-flood system : please wait for a moment before trying to post another comment');
+      $comment_action='reject';
+    }
+  }
+
+  // perform more spam check
+  $comment_action = trigger_event('user_comment_check',
+      $comment_action, $comm
+    );
+
+  if ( $comment_action!='reject' )
+  {
+    $query = '
+INSERT INTO '.COMMENTS_TABLE.'
+  (author, author_id, anonymous_id, content, date, validated, validation_date, image_id, website_url, email)
+  VALUES (
+    \''.$comm['author'].'\',
+    '.$comm['author_id'].',
+    \''.$comm['anonymous_id'].'\',
+    \''.$comm['content'].'\',
+    NOW(),
+    \''.($comment_action=='validate' ? 'true':'false').'\',
+    '.($comment_action=='validate' ? 'NOW()':'NULL').',
+    '.$comm['image_id'].',
+    '.(!empty($comm['website_url']) ? '\''.$comm['website_url'].'\'' : 'NULL').',
+    '.(!empty($comm['email']) ? '\''.$comm['email'].'\'' : 'NULL').'
+  )
+';
+    pwg_query($query);
+    $comm['id'] = pwg_db_insert_id(COMMENTS_TABLE);
+
+    invalidate_user_cache_nb_comments();
+
+    if ( ($conf['email_admin_on_comment'] && 'validate' == $comment_action)
+        or ($conf['email_admin_on_comment_validation'] and 'moderate' == $comment_action))
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+      $comment_url = get_absolute_root_url().'comments.php?comment_id='.$comm['id'];
+
+      $keyargs_content = array(
+        get_l10n_args('Author: %s', stripslashes($comm['author']) ),
+        get_l10n_args('Email: %s', stripslashes($comm['email']) ),
+        get_l10n_args('Comment: %s', stripslashes($comm['content']) ),
+        get_l10n_args(''),
+        get_l10n_args('Manage this user comment: %s', $comment_url),
+      );
+
+      if ('moderate' == $comment_action)
+      {
+        $keyargs_content[] = get_l10n_args('(!) This comment requires validation');
+      }
+
+      pwg_mail_notification_admins(
+        get_l10n_args('Comment by %s', stripslashes($comm['author']) ),
+        $keyargs_content
+      );
+    }
+  }
+
+  return $comment_action;
+}
+
+/**
+ * Tries to delete a (or more) user comment.
+ *    only admin can delete all comments
+ *    other users can delete their own comments
+ *
+ * @param int|int[] $comment_id
+ * @return bool false if nothing deleted
+ */
+function delete_user_comment($comment_id)
+{
+  $user_where_clause = '';
+  if (!is_admin())
+  {
+    $user_where_clause = '   AND author_id = \''.$GLOBALS['user']['id'].'\'';
+  }
+  
+  if (is_array($comment_id))
+    $where_clause = 'id IN('.implode(',', $comment_id).')';
+  else
+    $where_clause = 'id = '.$comment_id;
+    
+  $query = '
+DELETE FROM '.COMMENTS_TABLE.'
+  WHERE '.$where_clause.
+$user_where_clause.'
+;';
+  
+  if ( pwg_db_changes(pwg_query($query)) )
+  {
+    invalidate_user_cache_nb_comments();
+
+    email_admin('delete', 
+                array('author' => $GLOBALS['user']['username'],
+                      'comment_id' => $comment_id
+                  ));
+    trigger_action('user_comment_deletion', $comment_id);
+
+    return true;
+  }
+
+  return false;
+}
+
+/**
+ * Tries to update a user comment
+ *    only admin can update all comments
+ *    users can edit their own comments if admin allow them
+ *
+ * @param array $comment
+ * @param string $post_key secret key sent back to the browser
+ * @return string validate, moderate, reject
+ */
+
+function update_user_comment($comment, $post_key)
+{
+  global $conf, $page;
+
+  $comment_action = 'validate';
+
+  if ( !verify_ephemeral_key($post_key, $comment['image_id']) )
+  {
+    $comment_action='reject';
+  }
+  elseif (!$conf['comments_validation'] or is_admin()) // should the updated comment must be validated
+  {
+    $comment_action='validate'; //one of validate, moderate, reject
+  }
+  else
+  {
+    $comment_action='moderate'; //one of validate, moderate, reject
+  }
+
+  // perform more spam check
+  $comment_action =
+    trigger_event('user_comment_check',
+		  $comment_action,
+		  array_merge($comment,
+			      array('author' => $GLOBALS['user']['username'])
+			      )
+		  );
+
+  // website
+  if (!empty($comment['website_url']))
+  {
+    if (!preg_match('/^https?/i', $comment['website_url']))
+    {
+      $comment['website_url'] = 'http://'.$comment['website_url'];
+    }
+    if (!url_check_format($comment['website_url']))
+    {
+      $page['errors'][] = l10n('Your website URL is invalid');
+      $comment_action='reject';
+    }
+  }
+
+  if ( $comment_action!='reject' )
+  {
+    $user_where_clause = '';
+    if (!is_admin())
+    {
+      $user_where_clause = '   AND author_id = \''.
+	$GLOBALS['user']['id'].'\'';
+    }
+
+    $query = '
+UPDATE '.COMMENTS_TABLE.'
+  SET content = \''.$comment['content'].'\',
+      website_url = '.(!empty($comment['website_url']) ? '\''.$comment['website_url'].'\'' : 'NULL').',
+      validated = \''.($comment_action=='validate' ? 'true':'false').'\',
+      validation_date = '.($comment_action=='validate' ? 'NOW()':'NULL').'
+  WHERE id = '.$comment['comment_id'].
+$user_where_clause.'
+;';
+    $result = pwg_query($query);
+    
+    // mail admin and ask to validate the comment
+    if ($result and $conf['email_admin_on_comment_validation'] and 'moderate' == $comment_action) 
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+      $comment_url = get_absolute_root_url().'comments.php?comment_id='.$comment['comment_id'];
+
+      $keyargs_content = array(
+        get_l10n_args('Author: %s', stripslashes($GLOBALS['user']['username']) ),
+        get_l10n_args('Comment: %s', stripslashes($comment['content']) ),
+        get_l10n_args(''),
+        get_l10n_args('Manage this user comment: %s', $comment_url),
+        get_l10n_args('(!) This comment requires validation'),
+      );
+
+      pwg_mail_notification_admins(
+        get_l10n_args('Comment by %s', stripslashes($GLOBALS['user']['username']) ),
+        $keyargs_content
+      );
+    }
+    // just mail admin
+    elseif ($result)
+    {
+      email_admin('edit', array('author' => $GLOBALS['user']['username'],
+				'content' => stripslashes($comment['content'])) );
+    }
+  }
+  
+  return $comment_action;
+}
+
+/**
+ * Notifies admins about updated or deleted comment.
+ * Only used when no validation is needed, otherwise pwg_mail_notification_admins() is used.
+ *
+ * @param string $action edit, delete
+ * @param array $comment
+ */
+function email_admin($action, $comment)
+{
+  global $conf;
+
+  if (!in_array($action, array('edit', 'delete'))
+      or (($action=='edit') and !$conf['email_admin_on_comment_edition'])
+      or (($action=='delete') and !$conf['email_admin_on_comment_deletion']))
+  {
+    return;
+  }
+
+  include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+  $keyargs_content = array(
+    get_l10n_args('Author: %s', $comment['author']),
+    );
+
+  if ($action=='delete')
+  {
+    $keyargs_content[] = get_l10n_args('This author removed the comment with id %d', $comment['comment_id']);
+  }
+  else
+  {
+    $keyargs_content[] = get_l10n_args('This author modified following comment:');
+    $keyargs_content[] = get_l10n_args('Comment: %s', $comment['content']);
+  }
+
+  pwg_mail_notification_admins(
+    get_l10n_args('Comment by %s', $comment['author']),
+    $keyargs_content
+    );
+}
+
+/**
+ * Returns the author id of a comment
+ *
+ * @param int $comment_id
+ * @param bool $die_on_error
+ * @return int
+ */
+function get_comment_author_id($comment_id, $die_on_error=true)
+{
+  $query = '
+SELECT
+    author_id
+  FROM '.COMMENTS_TABLE.'
+  WHERE id = '.$comment_id.'
+;';
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) == 0)
+  {
+    if ($die_on_error)
+    {
+      fatal_error('Unknown comment identifier');
+    }
+    else
+    {
+      return false;
+    }
+  }
+  
+  list($author_id) = pwg_db_fetch_row($result);
+
+  return $author_id;
+}
+
+/**
+ * Tries to validate a user comment.
+ *
+ * @param int|int[] $comment_id
+ */
+function validate_user_comment($comment_id)
+{
+  if (is_array($comment_id))
+    $where_clause = 'id IN('.implode(',', $comment_id).')';
+  else
+    $where_clause = 'id = '.$comment_id;
+    
+  $query = '
+UPDATE '.COMMENTS_TABLE.'
+  SET validated = \'true\'
+    , validation_date = NOW()
+  WHERE '.$where_clause.'
+;';
+  pwg_query($query);
+  
+  invalidate_user_cache_nb_comments();
+  trigger_action('user_comment_validation', $comment_id);
+}
+
+/**
+ * Clears cache of nb comments for all users
+ */
+function invalidate_user_cache_nb_comments()
+{
+  global $user;
+
+  unset($user['nb_available_comments']);
+
+  $query = '
+UPDATE '.USER_CACHE_TABLE.'
+  SET nb_available_comments = NULL
+;';
+  pwg_query($query);
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_cookie.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_cookie.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_cookie.inc.php	(revision 25596)
@@ -0,0 +1,139 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\cookie
+ */
+
+
+/**
+ * Returns the path to use for the Piwigo cookie.
+ * If Piwigo is installed on :
+ * http://domain.org/meeting/gallery/
+ * it will return : "/meeting/gallery"
+ *
+ * @return string
+ */
+function cookie_path()
+{
+  if ( isset($_SERVER['REDIRECT_SCRIPT_NAME']) and
+       !empty($_SERVER['REDIRECT_SCRIPT_NAME']) )
+  {
+    $scr = $_SERVER['REDIRECT_SCRIPT_NAME'];
+  }
+  else if ( isset($_SERVER['REDIRECT_URL']) )
+  {
+    // mod_rewrite is activated for upper level directories. we must set the
+    // cookie to the path shown in the browser otherwise it will be discarded.
+    if
+      (
+        isset($_SERVER['PATH_INFO']) and !empty($_SERVER['PATH_INFO']) and
+        ($_SERVER['REDIRECT_URL'] !== $_SERVER['PATH_INFO']) and
+        (substr($_SERVER['REDIRECT_URL'],-strlen($_SERVER['PATH_INFO']))
+            == $_SERVER['PATH_INFO'])
+      )
+    {
+      $scr = substr($_SERVER['REDIRECT_URL'], 0,
+        strlen($_SERVER['REDIRECT_URL'])-strlen($_SERVER['PATH_INFO']));
+    }
+    else
+    {
+      $scr = $_SERVER['REDIRECT_URL'];
+    }
+  }
+  else
+  {
+    $scr = $_SERVER['SCRIPT_NAME'];
+  }
+
+  $scr = substr($scr,0,strrpos( $scr,'/'));
+
+  // add a trailing '/' if needed
+  if ((strlen($scr) == 0) or ($scr{strlen($scr)-1} !== '/'))
+  {
+    $scr .= '/';
+  }
+
+  if ( substr(PHPWG_ROOT_PATH,0,3)=='../')
+  { // this is maybe a plugin inside pwg directory
+    // TODO - what if it is an external script outside PWG ?
+    $scr = $scr.PHPWG_ROOT_PATH;
+    while (1)
+    {
+      $new = preg_replace('#[^/]+/\.\.(/|$)#', '', $scr);
+      if ($new==$scr)
+      {
+        break;
+      }
+      $scr=$new;
+    }
+  }
+  return $scr;
+}
+
+/**
+ * Persistently stores a variable in pwg cookie.
+ * Set $value to null to delete the cookie.
+ *
+ * @param string $car
+ * @param mixed $value
+ * @param int|null $expire
+ * @return bool
+ */
+function pwg_set_cookie_var($var, $value, $expire=null)
+{
+  if ($value==null or $expire===0)
+  {
+    unset($_COOKIE['pwg_'.$var]);
+    return setcookie('pwg_'.$var, false, 0, cookie_path());
+
+  }
+  else
+  {
+    $_COOKIE['pwg_'.$var] = $value;
+    $expire = is_numeric($expire) ? $expire : strtotime('+10 years');
+    return setcookie('pwg_'.$var, $value, $expire, cookie_path());
+  }
+}
+
+/**
+ * Retrieves the value of a persistent variable in pwg cookie
+ * @see pwg_set_cookie_var
+ *
+ * @param string $var
+ * @param mixed $default
+ * @return mixed
+ */
+function pwg_get_cookie_var($var, $default = null)
+{
+  if (isset($_COOKIE['pwg_'.$var]))
+  {
+    return $_COOKIE['pwg_'.$var];
+  }
+  else
+  {
+    return $default;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_filter.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_filter.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_filter.inc.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\filter
+ */
+
+
+/**
+ * Updates data of categories with filtered values
+ *
+ * @param array $cats
+ */
+function update_cats_with_filtered_data(&$cats)
+{
+  global $filter;
+
+  if ($filter['enabled'])
+  {
+    $upd_fields = array('date_last', 'max_date_last', 'count_images', 'count_categories', 'nb_images');
+
+    foreach ($cats as $cat_id => $category)
+    {
+      foreach ($upd_fields as $upd_field)
+      {
+        $cats[$cat_id][$upd_field] = $filter['categories'][$category['id']][$upd_field];
+      }
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_html.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_html.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_html.inc.php	(revision 25596)
@@ -0,0 +1,689 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\html
+ */
+
+
+/**
+ * Generates breadcrumb from categories list.
+ * Categories string returned contains categories as given in the input
+ * array $cat_informations. $cat_informations array must be an array
+ * of array( id=>?, name=>?, permalink=>?). If url input parameter is null,
+ * returns only the categories name without links.
+ *
+ * @param array $cat_informations
+ * @param string|null $url
+ * @return string
+ */
+function get_cat_display_name($cat_informations, $url='')
+{
+  global $conf;
+
+  //$output = '<a href="'.get_absolute_root_url().$conf['home_page'].'">'.l10n('Home').'</a>';
+  $output = '';
+  $is_first=true;
+
+  foreach ($cat_informations as $cat)
+  {
+    is_array($cat) or trigger_error(
+        'get_cat_display_name wrong type for category ', E_USER_WARNING
+      );
+
+    $cat['name'] = trigger_event(
+      'render_category_name',
+      $cat['name'],
+      'get_cat_display_name'
+      );
+
+    if ($is_first)
+    {
+      $is_first=false;
+    }
+    else
+    {
+      $output.= $conf['level_separator'];
+    }
+
+    if ( !isset($url) )
+    {
+      $output.= $cat['name'];
+    }
+    elseif ($url == '')
+    {
+      $output.= '<a href="'
+            .make_index_url(
+                array(
+                  'category' => $cat,
+                  )
+              )
+            .'">';
+      $output.= $cat['name'].'</a>';
+    }
+    else
+    {
+      $output.= '<a href="'.PHPWG_ROOT_PATH.$url.$cat['id'].'">';
+      $output.= $cat['name'].'</a>';
+    }
+  }
+  return $output;
+}
+
+/**
+ * Generates breadcrumb from categories list using a cache.
+ * @see get_cat_display_name()
+ *
+ * @param string $uppercats
+ * @param string|null $url
+ * @param bool $single_link
+ * @param string|null $link_class
+ * @return string
+ */
+function get_cat_display_name_cache($uppercats,
+                                    $url = '',
+                                    $single_link = false,
+                                    $link_class = null)
+{
+  global $cache, $conf;
+
+  if (!isset($cache['cat_names']))
+  {
+    $query = '
+SELECT id, name, permalink
+  FROM '.CATEGORIES_TABLE.'
+;';
+    $cache['cat_names'] = hash_from_query($query, 'id');
+  }
+
+  $output = '';
+  if ($single_link)
+  {
+    $single_url = get_root_url().$url.array_pop(explode(',', $uppercats));
+    $output.= '<a href="'.$single_url.'"';
+    if (isset($link_class))
+    {
+      $output.= ' class="'.$link_class.'"';
+    }
+    $output.= '>';
+  }
+  $is_first = true;
+  foreach (explode(',', $uppercats) as $category_id)
+  {
+    $cat = $cache['cat_names'][$category_id];
+
+    $cat['name'] = trigger_event(
+      'render_category_name',
+      $cat['name'],
+      'get_cat_display_name_cache'
+      );
+
+    if ($is_first)
+    {
+      $is_first = false;
+    }
+    else
+    {
+      $output.= $conf['level_separator'];
+    }
+
+    if ( !isset($url) or $single_link )
+    {
+      $output.= $cat['name'];
+    }
+    elseif ($url == '')
+    {
+      $output.= '
+<a href="'
+      .make_index_url(
+          array(
+            'category' => $cat,
+            )
+        )
+      .'">'.$cat['name'].'</a>';
+    }
+    else
+    {
+      $output.= '
+<a href="'.PHPWG_ROOT_PATH.$url.$category_id.'">'.$cat['name'].'</a>';
+    }
+  }
+
+  if ($single_link and isset($single_url))
+  {
+    $output.= '</a>';
+  }
+
+  return $output;
+}
+
+/**
+ * Generates breadcrumb for a category.
+ * @see get_cat_display_name()
+ *
+ * @param int $cat_id
+ * @param string|null $url
+ * @return string
+ */
+function get_cat_display_name_from_id($cat_id, $url = '')
+{
+  $cat_info = get_cat_info($cat_id);
+  return get_cat_display_name($cat_info['upper_names'], $url);
+}
+
+/**
+ * Apply basic markdown transformations to a text.
+ * newlines becomes br tags
+ * _word_ becomes underline
+ * /word/ becomes italic
+ * *word* becomes bolded
+ * urls becomes a tags
+ *
+ * @param string $content
+ * @return string
+ */
+function render_comment_content($content)
+{
+  $content = htmlspecialchars($content);
+  $pattern = '/(https?:\/\/\S*)/';
+  $replacement = '<a href="$1" rel="nofollow">$1</a>';
+  $content = preg_replace($pattern, $replacement, $content);
+
+  $content = nl2br($content);
+
+  // replace _word_ by an underlined word
+  $pattern = '/\b_(\S*)_\b/';
+  $replacement = '<span style="text-decoration:underline;">$1</span>';
+  $content = preg_replace($pattern, $replacement, $content);
+
+  // replace *word* by a bolded word
+  $pattern = '/\b\*(\S*)\*\b/';
+  $replacement = '<span style="font-weight:bold;">$1</span>';
+  $content = preg_replace($pattern, $replacement, $content);
+
+  // replace /word/ by an italic word
+  $pattern = "/\/(\S*)\/(\s)/";
+  $replacement = '<span style="font-style:italic;">$1$2</span>';
+  $content = preg_replace($pattern, $replacement, $content);
+
+  // TODO : add a trigger
+
+  return $content;
+}
+
+/**
+ * Returns an HTML list of tags. It can be a multi select field or a list of
+ * checkboxes.
+ *
+ * @param string HTML field name
+ * @param array selected tag ids
+ * @return array
+ */
+function get_html_tag_selection(
+  $tags,
+  $fieldname,
+  $selecteds = array(),
+  $forbidden_categories = null
+  )
+{
+  global $conf;
+
+  if (count ($tags) == 0 )
+  {
+    return '';
+  }
+  $output = '<ul class="tagSelection">';
+  foreach ($tags as $tag)
+  {
+    $output.=
+      '<li>'
+      .'<label>'
+      .'<input type="checkbox" name="'.$fieldname.'[]"'
+      .' value="'.$tag['id'].'"'
+      ;
+
+    if (in_array($tag['id'], $selecteds))
+    {
+      $output.= ' checked="checked"';
+    }
+
+    $output.=
+      '> '
+      .$tag['name']
+      .'</label>'
+      .'</li>'
+      ."\n"
+      ;
+  }
+  $output.= '</ul>';
+
+  return $output;
+}
+
+/**
+ * Callback used for sorting by name.
+ */
+function name_compare($a, $b)
+{
+  return strcmp(strtolower($a['name']), strtolower($b['name']));
+}
+
+/**
+ * Callback used for sorting by name (slug) with cache.
+ */
+function tag_alpha_compare($a, $b)
+{
+  global $cache;
+
+  foreach (array($a, $b) as $tag)
+  {
+    if (!isset($cache[__FUNCTION__][ $tag['name'] ]))
+    {
+      $cache[__FUNCTION__][ $tag['name'] ] = transliterate($tag['name']);
+    }
+  }
+
+  return strcmp($cache[__FUNCTION__][ $a['name'] ], $cache[__FUNCTION__][ $b['name'] ]);
+}
+
+/**
+ * Exits the current script (or redirect to login page if not logged).
+ */
+function access_denied()
+{
+  global $user;
+
+  $login_url =
+      get_root_url().'identification.php?redirect='
+      .urlencode(urlencode($_SERVER['REQUEST_URI']));
+
+  set_status_header(401);
+  if ( isset($user) and !is_a_guest() )
+  {
+    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
+    echo '<div style="text-align:center;">'.l10n('You are not authorized to access the requested page').'<br>';
+    echo '<a href="'.get_root_url().'identification.php">'.l10n('Identification').'</a>&nbsp;';
+    echo '<a href="'.make_index_url().'">'.l10n('Home').'</a></div>';
+    echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size
+    exit();
+  }
+  else
+  {
+    redirect_html($login_url);
+  }
+}
+
+/**
+ * Exits the current script with 403 code.
+ * TODO : nice display if $template loaded
+ *
+ * @param string $msg
+ * @param string|null $alternate_url redirect to this url
+ */
+function page_forbidden($msg, $alternate_url=null)
+{
+  set_status_header(403);
+  if ($alternate_url==null)
+    $alternate_url = make_index_url();
+  redirect_html( $alternate_url,
+    '<div style="text-align:left; margin-left:5em;margin-bottom:5em;">
+<h1 style="text-align:left; font-size:36px;">'.l10n('Forbidden').'</h1><br>'
+.$msg.'</div>',
+    5 );
+}
+
+/**
+ * Exits the current script with 400 code.
+ * TODO : nice display if $template loaded
+ *
+ * @param string $msg
+ * @param string|null $alternate_url redirect to this url
+ */
+function bad_request($msg, $alternate_url=null)
+{
+  set_status_header(400);
+  if ($alternate_url==null)
+    $alternate_url = make_index_url();
+  redirect_html( $alternate_url,
+    '<div style="text-align:left; margin-left:5em;margin-bottom:5em;">
+<h1 style="text-align:left; font-size:36px;">'.l10n('Bad request').'</h1><br>'
+.$msg.'</div>',
+    5 );
+}
+
+/**
+ * Exits the current script with 404 code.
+ * TODO : nice display if $template loaded
+ *
+ * @param string $msg
+ * @param string|null $alternate_url redirect to this url
+ */
+function page_not_found($msg, $alternate_url=null)
+{
+  set_status_header(404);
+  if ($alternate_url==null)
+    $alternate_url = make_index_url();
+  redirect_html( $alternate_url,
+    '<div style="text-align:left; margin-left:5em;margin-bottom:5em;">
+<h1 style="text-align:left; font-size:36px;">'.l10n('Page not found').'</h1><br>'
+.$msg.'</div>',
+    5 );
+}
+
+/**
+ * Exits the current script with 500 code.
+ * TODO : nice display if $template loaded
+ *
+ * @param string $msg
+ * @param string|null $title
+ * @param bool $show_trace
+ */
+function fatal_error($msg, $title=null, $show_trace=true)
+{
+  if (empty($title))
+  {
+    $title = l10n('Piwigo encountered a non recoverable error');
+  }
+
+  $btrace_msg = '';
+  if ($show_trace and function_exists('debug_backtrace'))
+  {
+    $bt = debug_backtrace();
+    for ($i=1; $i<count($bt); $i++)
+    {
+      $class = isset($bt[$i]['class']) ? (@$bt[$i]['class'].'::') : '';
+      $btrace_msg .= "#$i\t".$class.@$bt[$i]['function'].' '.@$bt[$i]['file']."(".@$bt[$i]['line'].")\n";
+    }
+    $btrace_msg = trim($btrace_msg);
+    $msg .= "\n";
+  }
+
+  $display = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
+<h1>$title</h1>
+<pre style='font-size:larger;background:white;color:red;padding:1em;margin:0;clear:both;display:block;width:auto;height:auto;overflow:auto'>
+<b>$msg</b>
+$btrace_msg
+</pre>\n";
+
+  @set_status_header(500);
+  echo $display.str_repeat( ' ', 300); //IE6 doesn't error output if below a size
+
+  if ( function_exists('ini_set') )
+  {// if possible turn off error display (we display it)
+    ini_set('display_errors', false);
+  }
+  error_reporting( E_ALL );
+  trigger_error( strip_tags($msg).$btrace_msg, E_USER_ERROR );
+  die(0); // just in case
+}
+
+/**
+ * Returns the breadcrumb to be displayed above thumbnails on tag page.
+ *
+ * @return string
+ */
+function get_tags_content_title()
+{
+  global $page;
+  $title = '<a href="'.get_root_url().'tags.php" title="'.l10n('display available tags').'">'
+    . l10n( count($page['tags']) > 1 ? 'Tags' : 'Tag' )
+    . '</a> ';
+
+  for ($i=0; $i<count($page['tags']); $i++)
+  {
+    $title.= $i>0 ? ' + ' : '';
+
+    $title.=
+      '<a href="'
+      .make_index_url(
+        array(
+          'tags' => array( $page['tags'][$i] )
+          )
+        )
+      .'" title="'
+      .l10n('display photos linked to this tag')
+      .'">'
+      .trigger_event('render_tag_name', $page['tags'][$i]['name'])
+      .'</a>';
+
+    if (count($page['tags']) > 2)
+    {
+      $other_tags = $page['tags'];
+      unset($other_tags[$i]);
+      $remove_url = make_index_url(
+        array(
+          'tags' => $other_tags
+          )
+        );
+
+      $title.=
+        '<a href="'.$remove_url.'" style="border:none;" title="'
+        .l10n('remove this tag from the list')
+        .'"><img src="'
+          .get_root_url().get_themeconf('icon_dir').'/remove_s.png'
+        .'" alt="x" style="vertical-align:bottom;">'
+        .'</a>';
+    }
+  }
+  return $title;
+}
+
+/**
+ * Sets the http status header (200,401,...)
+ * @param int $code
+ * @param string $text for exotic http codes
+ */
+function set_status_header($code, $text='')
+{
+  if (empty($text))
+  {
+    switch ($code)
+    {
+      case 200: $text='OK';break;
+      case 301: $text='Moved permanently';break;
+      case 302: $text='Moved temporarily';break;
+      case 304: $text='Not modified';break;
+      case 400: $text='Bad request';break;
+      case 401: $text='Authorization required';break;
+      case 403: $text='Forbidden';break;
+      case 404: $text='Not found';break;
+      case 500: $text='Server error';break;
+      case 501: $text='Not implemented';break;
+      case 503: $text='Service unavailable';break;
+    }
+  }
+  $protocol = $_SERVER["SERVER_PROTOCOL"];
+  if ( ('HTTP/1.1' != $protocol) && ('HTTP/1.0' != $protocol) )
+    $protocol = 'HTTP/1.0';
+
+  header( "$protocol $code $text", true, $code );
+  trigger_action('set_status_header', $code, $text);
+}
+
+/**
+ * Returns the category comment for rendering in html textual mode (subcatify)
+ * This method is called by a trigger_action()
+ *
+ * @param string $desc
+ * @return string
+ */
+function render_category_literal_description($desc)
+{
+  return strip_tags($desc, '<span><p><a><br><b><i><small><big><strong><em>');
+}
+
+/**
+ * Add known menubar blocks.
+ * This method is called by a trigger_event()
+ *
+ * @param BlockManager[] $menu_ref_arr
+ */
+function register_default_menubar_blocks($menu_ref_arr)
+{
+  $menu = & $menu_ref_arr[0];
+  if ($menu->get_id() != 'menubar')
+    return;
+  $menu->register_block( new RegisteredBlock( 'mbLinks', 'Links', 'piwigo'));
+  $menu->register_block( new RegisteredBlock( 'mbCategories', 'Albums', 'piwigo'));
+  $menu->register_block( new RegisteredBlock( 'mbTags', 'Related tags', 'piwigo'));
+  $menu->register_block( new RegisteredBlock( 'mbSpecials', 'Specials', 'piwigo'));
+  $menu->register_block( new RegisteredBlock( 'mbMenu', 'Menu', 'piwigo'));
+  $menu->register_block( new RegisteredBlock( 'mbIdentification', 'Identification', 'piwigo') );
+}
+
+/**
+ * Returns display name for an element.
+ * Returns 'name' if exists of name from 'file'.
+ *
+ * @param array $info at least file or name
+ * @return string
+ */
+function render_element_name($info)
+{
+  if (!empty($info['name']))
+  {
+    return trigger_event('render_element_name', $info['name']);
+  }
+  return get_name_from_file($info['file']);
+}
+
+/**
+ * Returns display description for an element.
+ *
+ * @param array $info at least comment
+ * @param string $param used to identify the trigger
+ * @return string
+ */
+function render_element_description($info, $param='')
+{
+  if (!empty($info['comment']))
+  {
+    return trigger_event('render_element_description', $info['comment'], $param);
+  }
+  return '';
+}
+
+/**
+ * Add info to the title of the thumbnail based on photo properties.
+ *
+ * @param array $info hit, rating_score, nb_comments
+ * @param string $title
+ * @param string $comment
+ * @return string
+ */
+function get_thumbnail_title($info, $title, $comment='')
+{
+  global $conf, $user;
+
+  $details = array();
+
+  if (!empty($info['hit']))
+  {
+    $details[] = $info['hit'].' '.strtolower(l10n('Visits'));
+  }
+
+  if ($conf['rate'] and !empty($info['rating_score']))
+  {
+    $details[] = strtolower(l10n('Rating score')).' '.$info['rating_score'];
+  }
+
+  if (isset($info['nb_comments']) and $info['nb_comments'] != 0)
+  {
+    $details[] = l10n_dec('%d comment', '%d comments', $info['nb_comments']);
+  }
+
+  if (count($details) > 0)
+  {
+    $title.= ' ('.implode(', ', $details).')';
+  }
+
+  if (!empty($comment))
+  {
+    $comment = strip_tags($comment);
+    $title.= ' '.substr($comment, 0, 100).(strlen($comment) > 100 ? '...' : '');
+  }
+
+  $title = htmlspecialchars(strip_tags($title));
+  $title = trigger_event('get_thumbnail_title', $title, $info);
+
+  return $title;
+}
+
+/**
+ * Event handler to protect src image urls.
+ *
+ * @param string $url
+ * @param SrcImage $src_image
+ * @return string
+ */
+function get_src_image_url_protection_handler($url, $src_image)
+{
+  return get_action_url($src_image->id, $src_image->is_original() ? 'e' : 'r', false);
+}
+
+/**
+ * Event handler to protect element urls.
+ *
+ * @param string $url
+ * @param array $infos id, path
+ * @return string
+ */
+function get_element_url_protection_handler($url, $infos)
+{
+  global $conf;
+  if ('images'==$conf['original_url_protection'])
+  {// protect only images and not other file types (for example large movies that we don't want to send through our file proxy)
+    $ext = get_extension($infos['path']);
+    if (!in_array($ext, $conf['picture_ext']))
+    {
+      return $url;
+    }
+  }
+  return get_action_url($infos['id'], 'e', false);
+}
+
+/**
+ * Sends to the template all messages stored in $page and in the session.
+ */
+function flush_page_messages()
+{
+  global $template, $page;
+  if ($template->get_template_vars('page_refresh') === null)
+  {
+    foreach (array('errors','infos','warnings') as $mode)
+    {
+      if (isset($_SESSION['page_'.$mode]))
+      {
+        $page[$mode] = array_merge($page[$mode], $_SESSION['page_'.$mode]);
+        unset($_SESSION['page_'.$mode]);
+      }
+
+      if (count($page[$mode]) != 0)
+      {
+        $template->assign($mode, $page[$mode]);
+      }
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_mail.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_mail.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_mail.inc.php	(revision 25596)
@@ -0,0 +1,951 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\mail
+ */
+
+
+/**
+ * Returns the name of the mail sender
+ *
+ * @return string
+ */
+function get_mail_sender_name()
+{
+  global $conf;
+
+  return (empty($conf['mail_sender_name']) ? $conf['gallery_title'] : $conf['mail_sender_name']);
+}
+
+/**
+ * Returns the email of the mail sender
+ *
+ * @since 2.6
+ * @return string
+ */
+function get_mail_sender_email()
+{
+  global $conf;
+
+  return (empty($conf['mail_sender_email']) ? get_webmaster_mail_address() : $conf['mail_sender_email']);
+}
+
+/**
+ * Returns an array of mail configuration parameters.
+ * - send_bcc_mail_webmaster
+ * - mail_allow_html
+ * - use_smtp
+ * - smtp_host
+ * - smtp_user
+ * - smtp_password
+ * - smtp_secure
+ * - email_webmaster
+ * - name_webmaster
+ *
+ * @return array
+ */
+function get_mail_configuration()
+{
+  global $conf;
+
+  $conf_mail = array(
+    'send_bcc_mail_webmaster' => $conf['send_bcc_mail_webmaster'],
+    'mail_allow_html' => $conf['mail_allow_html'],
+    'mail_theme' => $conf['mail_theme'],
+    'use_smtp' => !empty($conf['smtp_host']),
+    'smtp_host' => $conf['smtp_host'],
+    'smtp_user' => $conf['smtp_user'],
+    'smtp_password' => $conf['smtp_password'],
+    'smtp_secure' => $conf['smtp_secure'],
+    'email_webmaster' => get_mail_sender_email(),
+    'name_webmaster' => get_mail_sender_name(),
+    );
+
+  return $conf_mail;
+}
+
+/**
+ * Returns an email address with an associated real name.
+ * Can return either:
+ *    - email@domain.com
+ *    - name <email@domain.com>
+ *
+ * @param string $name
+ * @param string $email
+ * @return string
+ */
+function format_email($name, $email)
+{
+  $cvt_email = trim(preg_replace('#[\n\r]+#s', '', $email));
+  $cvt_name = trim(preg_replace('#[\n\r]+#s', '', $name));
+
+  if ($cvt_name!="")
+  {
+    $cvt_name = '"'.addcslashes($cvt_name,'"').'"'.' ';
+  }
+
+  if (strpos($cvt_email, '<') === false)
+  {
+    return $cvt_name.'<'.$cvt_email.'>';
+  }
+  else
+  {
+    return $cvt_name.$cvt_email;
+  }
+}
+
+/**
+ * Returns the email and the name from a formatted address.
+ * @since 2.6
+ *
+ * @param string|string[] $input - if is an array must contain email[, name]
+ * @return array email, name
+ */
+function unformat_email($input)
+{
+  if (is_array($input))
+  {
+    if (!isset($input['name']))
+    {
+      $input['name'] = '';
+    }
+    return $input;
+  }
+
+  if (preg_match('/(.*)<(.*)>.*/', $input, $matches))
+  {
+    return array(
+      'email' => trim($matches[2]),
+      'name' => trim($matches[1]),
+      );
+  }
+  else
+  {
+    return array(
+      'email' => trim($input),
+      'name' => '',
+      );
+  }
+}
+
+/**
+ * Return a clean array of hashmaps (email, name) removing duplicates.
+ * It accepts various inputs:
+ *    - comma separated list
+ *    - array of emails
+ *    - single hashmap (email[, name])
+ *    - array of incomplete hashmaps
+ * @since 2.6
+ *
+ * @param mixed $data
+ * @return string[][]
+ */
+function get_clean_recipients_list($data)
+{
+  if (empty($data))
+  {
+    return array();
+  }
+  else if (is_array($data))
+  {
+    $values = array_values($data);
+    if (!is_array($values[0]))
+    {
+      $keys = array_keys($data);
+      if (is_int($keys[0]))
+      { // simple array of emails
+        foreach ($data as &$item)
+        {
+          $item = array(
+            'email' => trim($item),
+            'name' => '',
+            );
+        }
+        unset($item);
+      }
+      else
+      { // hashmap of one recipient
+        $data = array(unformat_email($data));
+      }
+    }
+    else
+    { // array of hashmaps
+      $data = array_map('unformat_email', $data);
+    }
+  }
+  else
+  {
+    $data = explode(',', $data);
+    $data = array_map('unformat_email', $data);
+  }
+
+  $existing = array();
+  foreach ($data as $i => $entry)
+  {
+    if (isset($existing[ $entry['email'] ]))
+    {
+      unset($data[$i]);
+    }
+    else
+    {
+      $existing[ $entry['email'] ] = true;
+    }
+  }
+
+  return array_values($data);
+}
+
+/**
+ * Returns an email address list with minimal email string.
+ * @deprecated 2.6
+ *
+ * @param string $email_list - comma separated
+ * @return string
+ */
+function get_strict_email_list($email_list)
+{
+  $result = array();
+  $list = explode(',', $email_list);
+
+  foreach ($list as $email)
+  {
+    if (strpos($email, '<') !== false)
+    {
+       $email = preg_replace('/.*<(.*)>.*/i', '$1', $email);
+    }
+    $result[] = trim($email);
+  }
+
+  return implode(',', array_unique($result));
+}
+
+/**
+ * Return an new mail template.
+ *
+ * @param string $email_format - text/html or text/plain
+ * @return Template
+ */
+function &get_mail_template($email_format)
+{
+  $template = new Template(PHPWG_ROOT_PATH.'themes', 'default', 'template/mail/'.$email_format);
+  return $template;
+}
+
+/**
+ * Return string email format (text/html or text/plain).
+ *
+ * @param bool $is_html
+ * @return string
+ */
+function get_str_email_format($is_html)
+{
+  return ($is_html ? 'text/html' : 'text/plain');
+}
+
+/**
+ * Switch language to specified language.
+ * All entries are push on language stack
+ *
+ * @param string $language
+ */
+function switch_lang_to($language)
+{
+  global $switch_lang, $user, $lang, $lang_info, $language_files;
+
+  // explanation of switch_lang
+  // $switch_lang['language'] contains data of language
+  // $switch_lang['stack'] contains stack LIFO
+  // $switch_lang['initialisation'] allow to know if it's first call
+
+  // Treatment with current user
+  // Language of current user is saved (it's considered OK on firt call)
+  if (!isset($switch_lang['initialisation']) and !isset($switch_lang['language'][$user['language']]))
+  {
+    $switch_lang['initialisation'] = true;
+    $switch_lang['language'][$user['language']]['lang_info'] = $lang_info;
+    $switch_lang['language'][$user['language']]['lang'] = $lang;
+  }
+
+  // Change current infos
+  $switch_lang['stack'][] = $user['language'];
+  $user['language'] = $language;
+
+  // Load new data if necessary
+  if (!isset($switch_lang['language'][$language]))
+  {
+    // Re-Init language arrays
+    $lang_info = array();
+    $lang  = array();
+
+    // language files
+    load_language('common.lang', '', array('language'=>$language) );
+    // No test admin because script is checked admin (user selected no)
+    // Translations are in admin file too
+    load_language('admin.lang', '', array('language'=>$language) );
+    
+    // Reload all plugins files (see load_language declaration)
+    if (!empty($language_files))
+    {
+      foreach ($language_files as $dirname => $files)
+        foreach ($files as $filename)
+          load_language($filename, $dirname, array('language'=>$language) );
+    }
+    
+    trigger_action('loading_lang');
+    load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR,
+      array('language'=>$language, 'no_fallback'=>true, 'local'=>true)
+    );
+
+    $switch_lang['language'][$language]['lang_info'] = $lang_info;
+    $switch_lang['language'][$language]['lang'] = $lang;
+  }
+  else
+  {
+    $lang_info = $switch_lang['language'][$language]['lang_info'];
+    $lang = $switch_lang['language'][$language]['lang'];
+  }
+}
+
+/**
+ * Switch back language pushed with switch_lang_to() function.
+ * @see switch_lang_to()
+ */
+function switch_lang_back()
+{
+  global $switch_lang, $user, $lang, $lang_info;
+
+  if (count($switch_lang['stack']) > 0)
+  {
+    // Get last value
+    $language = array_pop($switch_lang['stack']);
+
+    // Change current infos
+    if (isset($switch_lang['language'][$language]))
+    {
+      $lang_info = $switch_lang['language'][$language]['lang_info'];
+      $lang = $switch_lang['language'][$language]['lang'];
+    }
+    $user['language'] = $language;
+  }
+}
+
+/**
+ * Send a notification email to all administrators.
+ * current user (if admin) is not notified
+ *
+ * @param string|array $subject
+ * @param string|array $content
+ * @param boolean $send_technical_details - send user IP and browser
+ * @return boolean
+ */
+function pwg_mail_notification_admins($subject, $content, $send_technical_details=true)
+{
+  if (empty($subject) or empty($content))
+  {
+    return false;
+  }
+
+  global $conf, $user;
+
+  if (is_array($subject) or is_array($content))
+  {
+    switch_lang_to(get_default_language());
+
+    if (is_array($subject))
+    {
+      $subject = l10n_args($subject);
+    }
+    if (is_array($content))
+    {
+      $content = l10n_args($content);
+    }
+
+    switch_lang_back();
+  }
+
+  $tpl_vars = array();
+  if ($send_technical_details)
+  {
+    $tpl_vars['TECHNICAL'] = array(
+      'username' => stripslashes($user['username']),
+      'ip' => $_SERVER['REMOTE_ADDR'],
+      'user_agent' => $_SERVER['HTTP_USER_AGENT'],
+      );
+  }
+
+  return pwg_mail_admins(
+    array(
+      'subject' => '['. $conf['gallery_title'] .'] '. $subject,
+      'mail_title' => $conf['gallery_title'],
+      'mail_subtitle' => $subject,
+      'content' => $content,
+      'content_format' => 'text/plain',
+      ),
+    array(
+      'filename' => 'notification_admin',
+      'assign' => $tpl_vars,
+      )
+    );
+}
+
+/**
+ * Send a email to all administrators.
+ * current user (if admin) is excluded
+ * @see pwg_mail()
+ * @since 2.6
+ *
+ * @param array $args - as in pwg_mail()
+ * @param array $tpl - as in pwg_mail()
+ * @return boolean
+ */
+function pwg_mail_admins($args=array(), $tpl=array())
+{
+  if (empty($args['content']) and empty($tpl))
+  {
+    return false;
+  }
+
+  global $conf, $user;
+  $return = true;
+
+  // get admins (except ourself)
+  $query = '
+SELECT
+    u.'.$conf['user_fields']['username'].' AS name,
+    u.'.$conf['user_fields']['email'].' AS email
+  FROM '.USERS_TABLE.' AS u
+    JOIN '.USER_INFOS_TABLE.' AS i
+    ON i.user_id =  u.'.$conf['user_fields']['id'].'
+  WHERE i.status in (\'webmaster\',  \'admin\')
+    AND u.'.$conf['user_fields']['email'].' IS NOT NULL
+    AND i.user_id <> '.$user['id'].'
+  ORDER BY username
+;';
+  $admins = array_from_query($query);
+
+  if (empty($admins))
+  {
+    return $return;
+  }
+
+  switch_lang_to(get_default_language());
+
+  $return = pwg_mail($admins, $args, $tpl);
+
+  switch_lang_back();
+
+  return $return;
+}
+
+/**
+ * Send an email to a group.
+ * @see pwg_mail()
+ *
+ * @param int $group_id
+ * @param array $args - as in pwg_mail()
+ *       o language_selected: filters users of the group by language [default value empty]
+ * @param array $tpl - as in pwg_mail()
+ * @return boolean
+ */
+function pwg_mail_group($group_id, $args=array(), $tpl=array())
+{  
+  if (empty($group_id) or ( empty($args['content']) and empty($tpl) ))
+  {
+    return false;
+  }
+
+  global $conf;
+  $return = true;
+
+  // get distinct languages of targeted users
+  $query = '
+SELECT DISTINCT language
+  FROM '.USER_GROUP_TABLE.' AS ug
+    INNER JOIN '.USERS_TABLE.' AS u
+    ON '.$conf['user_fields']['id'].' = ug.user_id
+    INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON ui.user_id = ug.user_id
+  WHERE group_id = '.$group_id.'
+    AND '.$conf['user_fields']['email'].' <> ""';
+  if (!empty($args['language_selected']))
+  {
+    $query .= '
+    AND language = \''.$args['language_selected'].'\'';
+  }
+
+    $query .= '
+;';
+  $languages = array_from_query($query, 'language');
+
+  if (empty($languages))
+  {
+    return $return;
+  }
+
+  foreach ($languages as $language)
+  {
+    // get subset of users in this group for a specific language
+    $query = '
+SELECT
+    u.'.$conf['user_fields']['username'].' AS name,
+    u.'.$conf['user_fields']['email'].' AS email
+  FROM '.USER_GROUP_TABLE.' AS ug
+    INNER JOIN '.USERS_TABLE.' AS u
+    ON '.$conf['user_fields']['id'].' = ug.user_id
+    INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON ui.user_id = ug.user_id
+  WHERE group_id = '.$group_id.'
+    AND '.$conf['user_fields']['email'].' <> ""
+    AND language = \''.$language.'\'
+;';
+    $users = array_from_query($query);
+
+    if (empty($users))
+    {
+      continue;
+    }
+
+    switch_lang_to($language);
+
+    $return&= pwg_mail(null,
+      array_merge(
+        $args,
+        array('Bcc' => $users)
+        ),
+      $tpl
+      );
+
+    switch_lang_back();
+  }
+
+  return $return;
+}
+
+/**
+ * Sends an email, using Piwigo specific informations.
+ *
+ * @param string|array $to
+ * @param array $args
+ *       o from: sender [default value webmaster email]
+ *       o Cc: array of carbon copy receivers of the mail. [default value empty]
+ *       o Bcc: array of blind carbon copy receivers of the mail. [default value empty]
+ *       o subject [default value 'Piwigo']
+ *       o content: content of mail [default value '']
+ *       o content_format: format of mail content [default value 'text/plain']
+ *       o email_format: global mail format [default value $conf_mail['default_email_format']]
+ *       o theme: theme to use [default value $conf_mail['mail_theme']]
+ *       o mail_title: main title of the mail [default value $conf['gallery_title']]
+ *       o mail_subtitle: subtitle of the mail [default value subject]
+ * @param array $tpl - use these options to define a custom content template file
+ *       o filename
+ *       o dirname (optional)
+ *       o assign (optional)
+ *
+ * @return boolean
+ */
+function pwg_mail($to, $args=array(), $tpl=array())
+{
+  global $conf, $conf_mail, $lang_info, $page;
+
+  if (empty($to) and empty($args['Cc']) and empty($args['Bcc']))
+  {
+    return true;
+  }
+
+  if (!isset($conf_mail))
+  {
+    $conf_mail = get_mail_configuration();
+  }
+
+  include_once(PHPWG_ROOT_PATH.'include/phpmailer/class.phpmailer.php');
+
+  $mail = new PHPMailer;
+
+  foreach (get_clean_recipients_list($to) as $recipient)
+  {
+    $mail->addAddress($recipient['email'], $recipient['name']);
+  }
+
+  $mail->WordWrap = 76;
+  $mail->CharSet = 'UTF-8';
+  
+  // Compute root_path in order have complete path
+  set_make_full_url();
+
+  if (empty($args['from']))
+  {
+    $from = array(
+      'email' => $conf_mail['email_webmaster'],
+      'name' => $conf_mail['name_webmaster'],
+      );
+  }
+  else
+  {
+    $from = unformat_email($args['from']);
+  }
+  $mail->setFrom($from['email'], $from['name']);
+  $mail->addReplyTo($from['email'], $from['name']);
+
+  // Subject
+  if (empty($args['subject']))
+  {
+    $args['subject'] = 'Piwigo';
+  }
+  $args['subject'] = trim(preg_replace('#[\n\r]+#s', '', $args['subject']));
+  $mail->Subject = $args['subject'];
+
+  // Cc
+  if (!empty($args['Cc']))
+  {
+    foreach (get_clean_recipients_list($args['Cc']) as $recipient)
+    {
+      $mail->addCC($recipient['email'], $recipient['name']);
+    }
+  }
+
+  // Bcc
+  $Bcc = get_clean_recipients_list(@$args['Bcc']);
+  if ($conf_mail['send_bcc_mail_webmaster'])
+  {
+    $Bcc[] = array(
+      'email' => get_webmaster_mail_address(),
+      'name' => '',
+      );
+  }
+  if (!empty($Bcc))
+  {
+    foreach ($Bcc as $recipient)
+    {
+      $mail->addBCC($recipient['email'], $recipient['name']);
+    }
+  }
+
+  // theme
+  if (empty($args['theme']) or !in_array($args['theme'], array('clear','dark')))
+  {
+    $args['theme'] = $conf_mail['mail_theme'];
+  }
+
+  // content
+  if (!isset($args['content']))
+  {
+    $args['content'] = '';
+  }
+  
+  // try to decompose subject like "[....] ...."
+  if (!isset($args['mail_title']) and !isset($args['mail_subtitle']))
+  {
+    if (preg_match('#^\[(.*)\](.*)$#',  $args['subject'], $matches))
+    {
+      $args['mail_title'] = $matches[1];
+      $args['mail_subtitle'] = $matches[2];
+    }
+  }
+  if (!isset($args['mail_title']))
+  {
+    $args['mail_title'] = $conf['gallery_title'];
+  }
+  if (!isset($args['mail_subtitle']))
+  {
+    $args['mail_subtitle'] = $args['subject'];
+  }
+
+  // content type
+  if (empty($args['content_format']))
+  {
+    $args['content_format'] = 'text/plain';
+  }
+
+  $content_type_list = array();
+  if ($conf_mail['mail_allow_html'] and @$args['email_format'] != 'text/plain')
+  {
+    $content_type_list[] = 'text/html';
+  }
+  $content_type_list[] = 'text/plain';
+
+  $contents = array();
+  foreach ($content_type_list as $content_type)
+  {
+    // key compose of indexes witch allow to cache mail data
+    $cache_key = $content_type.'-'.$lang_info['code'];
+
+    if (!isset($conf_mail[$cache_key]))
+    {
+      // instanciate a new Template
+      if (!isset($conf_mail[$cache_key]['theme']))
+      {
+        $conf_mail[$cache_key]['theme'] = get_mail_template($content_type);
+        trigger_action('before_parse_mail_template', $cache_key, $content_type);
+      }
+      $template = &$conf_mail[$cache_key]['theme'];
+
+      $template->set_filename('mail_header', 'header.tpl');
+      $template->set_filename('mail_footer', 'footer.tpl');
+
+      $template->assign(
+        array(
+          'GALLERY_URL' => get_gallery_home_url(),
+          'GALLERY_TITLE' => isset($page['gallery_title']) ? $page['gallery_title'] : $conf['gallery_title'],
+          'VERSION' => $conf['show_version'] ? PHPWG_VERSION : '',
+          'PHPWG_URL' => defined('PHPWG_URL') ? PHPWG_URL : '',
+          'CONTENT_ENCODING' => get_pwg_charset(),
+          'CONTACT_MAIL' => $conf_mail['email_webmaster'],
+          )
+        );
+
+      if ($content_type == 'text/html')
+      {
+        if ($template->smarty->templateExists('global-mail-css.tpl'))
+        {
+          $template->set_filename('global-css', 'global-mail-css.tpl');
+          $template->assign_var_from_handle('GLOBAL_MAIL_CSS', 'global-css');
+        }
+
+        if ($template->smarty->templateExists('mail-css-'. $args['theme'] .'.tpl'))
+        {
+          $template->set_filename('css', 'mail-css-'. $args['theme'] .'.tpl');
+          $template->assign_var_from_handle('MAIL_CSS', 'css');
+        }
+      }
+    }
+    
+    $template = &$conf_mail[$cache_key]['theme'];
+    $template->assign(
+      array(
+        'MAIL_TITLE' => $args['mail_title'],
+        'MAIL_SUBTITLE' => $args['mail_subtitle'],
+        )
+      );
+
+    // Header
+    $contents[$content_type] = $template->parse('mail_header', true);
+
+    // Content
+    // Stored in a temp variable, if a content template is used it will be assigned
+    // to the $CONTENT template variable, otherwise it will be appened to the mail
+    if ($args['content_format'] == 'text/plain' and $content_type == 'text/html')
+    {
+      // convert plain text to html
+      $mail_content =
+        '<p>'.
+        nl2br(
+          preg_replace(
+            '/(https?:\/\/([-\w\.]+[-\w])+(:\d+)?(\/([\w\/_\.\#-]*(\?\S+)?[^\.\s])?)?)/i',
+            '<a href="$1">$1</a>',
+            htmlspecialchars($args['content'])
+            )
+          ).
+        '</p>';
+    }
+    else if ($args['content_format'] == 'text/html' and $content_type == 'text/plain')
+    {
+      // convert html text to plain text
+      $mail_content = strip_tags($args['content']);
+    }
+    else
+    {
+      $mail_content = $args['content'];
+    }
+
+    // Runtime template
+    if (isset($tpl['filename']))
+    {
+      if (isset($tpl['dirname']))
+      {
+        $template->set_template_dir($tpl['dirname'] .'/'. $content_type);
+      }
+      if ($template->smarty->templateExists($tpl['filename'] .'.tpl'))
+      {
+        $template->set_filename($tpl['filename'], $tpl['filename'] .'.tpl');
+        if (!empty($tpl['assign']))
+        {
+          $template->assign($tpl['assign']);
+        }
+        $template->assign('CONTENT', $mail_content);
+        $contents[$content_type].= $template->parse($tpl['filename'], true);
+      }
+      else
+      {
+        $contents[$content_type].= $mail_content;
+      }
+    }
+    else
+    {
+      $contents[$content_type].= $mail_content;
+    }
+
+    // Footer
+    $contents[$content_type].= $template->parse('mail_footer', true);
+  }
+
+  // Undo Compute root_path in order have complete path
+  unset_make_full_url();
+
+  // Send content to PHPMailer
+  if (isset($contents['text/html']))
+  {
+    $mail->isHTML(true);
+    $mail->Body = move_css_to_body($contents['text/html']);
+    
+    if (isset($contents['text/plain']))
+    {
+      $mail->AltBody = $contents['text/plain'];
+    }
+  }
+  else
+  {
+    $mail->isHTML(false);
+    $mail->Body = $contents['text/plain'];
+  }
+
+  if ($conf_mail['use_smtp'])
+  {
+    // now we need to split port number
+    if (strpos($conf_mail['smtp_host'], ':') !== false)
+    {
+      list($smtp_host, $smtp_port) = explode(':', $conf_mail['smtp_host']);
+    }
+    else
+    {
+      $smtp_host = $conf_mail['smtp_host'];
+      $smtp_port = 25;
+    }
+
+    $mail->IsSMTP();
+
+    // enables SMTP debug information (for testing) 2 - debug, 0 - no message
+    $mail->SMTPDebug = 0;
+    
+    $mail->Host = $smtp_host;
+    $mail->Port = $smtp_port;
+
+    if (!empty($conf_mail['smtp_secure']) and in_array($conf_mail['smtp_secure'], array('ssl', 'tls')))
+    {
+      $mail->SMTPSecure = $conf_mail['smtp_secure'];
+    }
+    
+    if (!empty($conf_mail['smtp_user']))
+    {
+      $mail->SMTPAuth = true;
+      $mail->Username = $conf_mail['smtp_user'];
+      $mail->Password = $conf_mail['smtp_password'];
+    }
+  }
+
+  $ret = true;
+  $pre_result = trigger_event('before_send_mail', true, $to, $args, $mail);
+
+  if ($pre_result)
+  {
+    $ret = $mail->send();
+    if (!$ret and (!ini_get('display_errors') or is_admin()))
+    {
+      trigger_error('Mailer Error: ' . $mail->ErrorInfo, E_USER_WARNING);
+    }
+    if ($conf['debug_mail'])
+    {
+      pwg_send_mail_test($ret, $mail, $args);
+    }
+  }
+
+  return $ret;
+}
+
+/**
+ * @deprecated 2.6
+ */
+function pwg_send_mail($result, $to, $subject, $content, $headers)
+{
+  if (is_admin())
+  {
+    trigger_error('pwg_send_mail function is deprecated', E_USER_NOTICE);
+  }
+  
+  if (!$result)
+  {
+    return pwg_mail($to, array(
+        'content' => $content,
+        'subject' => $subject,
+      ));
+  }
+  else
+  {
+    return $result;
+  }
+}
+
+/**
+ * Moves CSS rules contained in the <style> tag to inline CSS.
+ * Used for compatibility with Gmail and such clients
+ * @since 2.6
+ *
+ * @param string $content
+ * @return string
+ */
+function move_css_to_body($content)
+{
+  include_once(PHPWG_ROOT_PATH.'include/emogrifier.class.php');
+
+  $e = new Emogrifier($content);
+  // $e->preserveStyleTag = true;
+  return $e->emogrify();
+}
+
+/**
+ * Saves a copy of the mail if _data/tmp.
+ *
+ * @param boolean $success
+ * @param PHPMailer $mail
+ * @param array $args
+ */
+function pwg_send_mail_test($success, $mail, $args)
+{
+  global $conf, $user, $lang_info;
+  
+  $dir = PHPWG_ROOT_PATH.$conf['data_location'].'tmp';
+  if (mkgetdir($dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
+  {
+    $filename = $dir.'/mail.'.stripslashes($user['username']).'.'.$lang_info['code'].'-'.date('YmdHis').($success ? '' : '.ERROR');
+    if ($args['content_format'] == 'text/plain')
+    {
+      $filename .= '.txt';
+    }
+    else
+    {
+      $filename .= '.html';
+    }
+    
+    $file = fopen($filename, 'w+');
+    if (!$success)
+    {
+      fwrite($file, "ERROR: " . $mail->ErrorInfo . "\n\n");
+    }
+    fwrite($file, $mail->getSentMIMEMessage());
+    fclose($file);
+  }
+}
+
+trigger_action('functions_mail_included');
+
+?>
Index: /tags/2.6.0RC1/include/functions_metadata.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_metadata.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_metadata.inc.php	(revision 25596)
@@ -0,0 +1,189 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\metadata
+ */
+
+
+/**
+ * returns informations from IPTC metadata, mapping is done in this function.
+ *
+ * @param string $filename
+ * @param array $map
+ * @return array
+ */
+function get_iptc_data($filename, $map)
+{
+  global $conf;
+  
+  $result = array();
+
+  $imginfo = array();
+  if (false == @getimagesize($filename, $imginfo) )
+  {
+    return $result;
+  }
+
+  if (isset($imginfo['APP13']))
+  {
+    $iptc = iptcparse($imginfo['APP13']);
+    if (is_array($iptc))
+    {
+      $rmap = array_flip($map);
+      foreach (array_keys($rmap) as $iptc_key)
+      {
+        if (isset($iptc[$iptc_key][0]))
+        {
+          if ($iptc_key == '2#025')
+          {
+            $value = implode(',',
+                             array_map('clean_iptc_value',$iptc[$iptc_key]));
+          }
+          else
+          {
+            $value = clean_iptc_value($iptc[$iptc_key][0]);
+          }
+
+          foreach (array_keys($map, $iptc_key) as $pwg_key)
+          {
+            $result[$pwg_key] = $value;
+
+            if (!$conf['allow_html_in_metadata'])
+            {
+              // in case the origin of the photo is unsecure (user upload), we
+              // remove HTML tags to avoid XSS (malicious execution of
+              // javascript)
+              $result[$pwg_key] = strip_tags($result[$pwg_key]);
+            }
+          }
+        }
+      }
+    }
+  }
+  return $result;
+}
+
+/**
+ * return a cleaned IPTC value.
+ *
+ * @param string $value
+ * @return string
+ */
+function clean_iptc_value($value)
+{
+  // strip leading zeros (weird Kodak Scanner software)
+  while ( isset($value[0]) and $value[0] == chr(0))
+  {
+    $value = substr($value, 1);
+  }
+  // remove binary nulls
+  $value = str_replace(chr(0x00), ' ', $value);
+
+  if ( preg_match('/[\x80-\xff]/', $value) )
+  {
+    // apparently mac uses some MacRoman crap encoding. I don't know
+    // how to detect it so a plugin should do the trick.
+    $value = trigger_event('clean_iptc_value', $value);
+    if ( ($qual = qualify_utf8($value)) != 0)
+    {// has non ascii chars
+      if ($qual>0)
+      {
+        $input_encoding = 'utf-8';
+      }
+      else
+      {
+        $input_encoding = 'iso-8859-1';
+        if (function_exists('iconv') or function_exists('mb_convert_encoding'))
+        {
+          // using windows-1252 because it supports additional characters
+          // such as "oe" in a single character (ligature). About the
+          // difference between Windows-1252 and ISO-8859-1: the characters
+          // 0x80-0x9F will not convert correctly. But these are control
+          // characters which are almost never used.
+          $input_encoding = 'windows-1252';
+        }
+      }
+      
+      $value = convert_charset($value, $input_encoding, get_pwg_charset());
+    }
+  }
+  return $value;
+}
+
+/**
+ * returns informations from EXIF metadata, mapping is done in this function.
+ *
+ * @param string $filename
+ * @param array $map
+ * @return array
+ */
+function get_exif_data($filename, $map)
+{
+  global $conf;
+  
+  $result = array();
+
+  if (!function_exists('read_exif_data'))
+  {
+    die('Exif extension not available, admin should disable exif use');
+  }
+
+  // Read EXIF data
+  if ($exif = @read_exif_data($filename))
+  {
+    $exif = trigger_event('format_exif_data', $exif, $filename, $map );
+    foreach ($map as $key => $field)
+    {
+      if (strpos($field, ';') === false)
+      {
+        if (isset($exif[$field]))
+        {
+          $result[$key] = $exif[$field];
+        }
+      }
+      else
+      {
+        $tokens = explode(';', $field);
+        if (isset($exif[$tokens[0]][$tokens[1]]))
+        {
+          $result[$key] = $exif[$tokens[0]][$tokens[1]];
+        }
+      }
+    }
+  }
+
+  if (!$conf['allow_html_in_metadata'])
+  {
+    foreach ($result as $key => $value)
+    {
+      // in case the origin of the photo is unsecure (user upload), we remove
+      // HTML tags to avoid XSS (malicious execution of javascript)
+      $result[$key] = strip_tags($value);
+    }
+  }
+
+  return $result;
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_notification.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_notification.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_notification.inc.php	(revision 25596)
@@ -0,0 +1,605 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\notification
+ */
+ 
+// TODO : use a cache for all data returned by custom_notification_query()
+
+
+/**
+ * Get standard sql where in order to restrict and filter categories and images.
+ * IMAGE_CATEGORY_TABLE must be named "ic" in the query
+ *
+ * @param string $prefix_condition
+ * @param string $img_field
+ * @param bool $force_one_condition
+ * @return string
+ */
+function get_std_sql_where_restrict_filter($prefix_condition,
+                                           $img_field = 'ic.image_id',
+                                           $force_one_condition = false)
+{
+  return get_sql_condition_FandF(
+    array(
+      'forbidden_categories' => 'ic.category_id',
+      'visible_categories' => 'ic.category_id',
+      'visible_images' => $img_field
+      ),
+    $prefix_condition,
+    $force_one_condition
+    );
+}
+
+/**
+ * Execute custom notification query.
+ *
+ * @param string $action 'count', 'info'
+ * @param string $type 'new_comments', 'unvalidated_comments', 'new_elements', 'updated_categories', 'new_users'
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int|array int for action count array for info
+ */
+function custom_notification_query($action, $type, $start=null, $end=null)
+{
+  global $user;
+
+  switch($type)
+  {
+    case 'new_comments':
+    {
+      $query = '
+  FROM '.COMMENTS_TABLE.' AS c
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON c.image_id = ic.image_id
+  WHERE 1=1';
+      if (!empty($start))
+      {
+        $query.= '
+    AND c.validation_date > \''.$start.'\'';
+      }
+      if (!empty($end))
+      {
+        $query.= '
+    AND c.validation_date <= \''.$end.'\'';
+      }
+      $query.= get_std_sql_where_restrict_filter('AND');
+      break;
+    }
+
+    case 'unvalidated_comments':
+    {
+      $query = '
+  FROM '.COMMENTS_TABLE.'
+  WHERE 1=1';
+      if (!empty($start))
+      {
+        $query.= '
+    AND date > \''.$start.'\'';
+      }
+      if (!empty($end))
+      {
+        $query.= '
+    AND date <= \''.$end.'\'';
+      }
+      $query.= '
+    AND validated = \'false\'';
+      break;
+    }
+
+    case 'new_elements':
+    {
+      $query = '
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = id
+  WHERE 1=1';
+      if (!empty($start))
+      {
+        $query.= '
+    AND date_available > \''.$start.'\'';
+      }
+      if (!empty($end))
+      {
+        $query.= '
+    AND date_available <= \''.$end.'\'';
+      }
+      $query.= get_std_sql_where_restrict_filter('AND', 'id');
+      break;
+    }
+
+    case 'updated_categories':
+    {
+      $query = '
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = id
+  WHERE 1=1';
+      if (!empty($start))
+      {
+        $query.= '
+    AND date_available > \''.$start.'\'';
+      }
+      if (!empty($end))
+      {
+        $query.= '
+    AND date_available <= \''.$end.'\'';
+      }
+      $query.= get_std_sql_where_restrict_filter('AND', 'id');
+      break;
+    }
+
+    case 'new_users':
+    {
+      $query = '
+  FROM '.USER_INFOS_TABLE.'
+  WHERE 1=1';
+      if (!empty($start))
+      {
+        $query.= '
+    AND registration_date > \''.$start.'\'';
+      }
+      if (!empty($end))
+      {
+        $query.= '
+    AND registration_date <= \''.$end.'\'';
+      }
+      break;
+    }
+
+    default:
+      return null; // stop and return nothing
+  }
+
+  switch($action)
+  {
+    case 'count':
+    {
+      switch($type)
+      {
+        case 'new_comments':
+          $field_id = 'c.id';
+          break;
+        case 'unvalidated_comments':
+          $field_id = 'id';
+          break;
+        case 'new_elements':
+          $field_id = 'image_id';
+          break;
+        case 'updated_categories':
+          $field_id = 'category_id';
+          break;
+        case 'new_users':
+          $field_id = 'user_id';
+          break;
+      }
+      $query = 'SELECT COUNT(DISTINCT '.$field_id.') '.$query.';';
+      list($count) = pwg_db_fetch_row(pwg_query($query));
+      return $count;
+      break;
+    }
+
+    case 'info':
+    {
+      switch($type)
+      {
+        case 'new_comments':
+          $field_id = 'c.id';
+          break;
+        case 'unvalidated_comments':
+          $field_id = 'id';
+          break;
+        case 'new_elements':
+          $field_id = 'image_id';
+          break;
+        case 'updated_categories':
+          $field_id = 'category_id';
+          break;
+        case 'new_users':
+          $field_id = 'user_id';
+          break;
+      }
+      $query = 'SELECT DISTINCT '.$field_id.' '.$query.';';
+      $infos = array_from_query($query);
+      return $infos;
+      break;
+    }
+
+    default:
+      return null; // stop and return nothing
+  }
+}
+
+/**
+ * Returns number of new comments between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int
+ */
+function nb_new_comments($start=null, $end=null)
+{
+  return custom_notification_query('count', 'new_comments', $start, $end);
+}
+
+/**
+ * Returns new comments between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int[] comment ids
+ */
+function new_comments($start=null, $end=null)
+{
+  return custom_notification_query('info', 'new_comments', $start, $end);
+}
+
+/**
+ * Returns number of unvalidated comments between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int
+ */
+function nb_unvalidated_comments($start=null, $end=null)
+{
+  return custom_notification_query('count', 'unvalidated_comments', $start, $end);
+}
+
+
+/**
+ * Returns number of new photos between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int
+ */
+function nb_new_elements($start=null, $end=null)
+{
+  return custom_notification_query('count', 'new_elements', $start, $end);
+}
+
+/**
+ * Returns new photos between two dates.es
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int[] photos ids
+ */
+function new_elements($start=null, $end=null)
+{
+  return custom_notification_query('info', 'new_elements', $start, $end);
+}
+
+/**
+ * Returns number of updated categories between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int
+ */
+function nb_updated_categories($start=null, $end=null)
+{
+  return custom_notification_query('count', 'updated_categories', $start, $end);
+}
+
+/**
+ * Returns updated categories between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int[] categories ids
+ */
+function updated_categories($start=null, $end=null)
+{
+  return custom_notification_query('info', 'updated_categories', $start, $end);
+}
+
+/**
+ * Returns number of new users between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int
+ */
+function nb_new_users($start=null, $end=null)
+{
+  return custom_notification_query('count', 'new_users', $start, $end);
+}
+
+/**
+ * Returns new users between two dates.
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return int[] user ids
+ */
+function new_users($start=null, $end=null)
+{
+  return custom_notification_query('info', 'new_users', $start, $end);
+}
+
+/**
+ * Returns if there was new activity between two dates.
+ *
+ * Takes in account: number of new comments, number of new elements, number of
+ * updated categories. Administrators are also informed about: number of
+ * unvalidated comments, number of new users.
+ * TODO : number of unvalidated elements
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @return boolean
+ */
+function news_exists($start=null, $end=null)
+{
+  return (
+          (nb_new_comments($start, $end) > 0) or
+          (nb_new_elements($start, $end) > 0) or
+          (nb_updated_categories($start, $end) > 0) or
+          ((is_admin()) and (nb_unvalidated_comments($start, $end) > 0)) or
+          ((is_admin()) and (nb_new_users($start, $end) > 0)));
+}
+
+/**
+ * Formats a news line and adds it to the array (e.g. '5 new elements')
+ *
+ * @param array $news
+ * @param int $count
+ * @param string $singular_key
+ * @param string $plural_key
+ * @param string $url
+ * @param bool $add_url
+ */
+function add_news_line(&$news, $count, $singular_key, $plural_key, $url='', $add_url=false)
+{
+  if ($count > 0)
+  {
+    $line = l10n_dec($singular_key, $plural_key, $count);
+    if ($add_url and !empty($url) )
+    {
+      $line = '<a href="'.$url.'">'.$line.'</a>';
+    }
+    $news[] = $line;
+  }
+}
+
+/**
+ * Returns new activity between two dates.
+ *
+ * Takes in account: number of new comments, number of new elements, number of
+ * updated categories. Administrators are also informed about: number of
+ * unvalidated comments, number of new users.
+ * TODO : number of unvalidated elements
+ *
+ * @param string $start (mysql datetime format)
+ * @param string $end (mysql datetime format)
+ * @param bool $exclude_img_cats if true, no info about new images/categories
+ * @param bool $add_url add html link around news
+ * @return array
+ */
+function news($start=null, $end=null, $exclude_img_cats=false, $add_url=false)
+{
+  $news = array();
+
+  if (!$exclude_img_cats)
+  {
+    add_news_line( $news,
+      nb_new_elements($start, $end), '%d new photo', '%d new photos',
+      make_index_url(array('section'=>'recent_pics')), $add_url );
+  }
+
+  if (!$exclude_img_cats)
+  {
+    add_news_line( $news,
+      nb_updated_categories($start, $end), '%d album updated', '%d albums updated',
+      make_index_url(array('section'=>'recent_cats')), $add_url );
+  }
+
+  add_news_line( $news,
+      nb_new_comments($start, $end), '%d new comment', '%d new comments',
+      get_root_url().'comments.php', $add_url );
+
+  if (is_admin())
+  {
+    add_news_line( $news,
+        nb_unvalidated_comments($start, $end), '%d comment to validate', '%d comments to validate',
+        get_root_url().'admin.php?page=comments', $add_url );
+
+    add_news_line( $news,
+        nb_new_users($start, $end), '%d new user', '%d new users',
+        get_root_url().'admin.php?page=user_list', $add_url );
+  }
+
+  return $news;
+}
+
+/**
+ * Returns information about recently published elements grouped by post date.
+ *
+ * @param int $max_dates maximum number of recent dates
+ * @param int $max_elements maximum number of elements per date
+ * @param int $max_cats maximum number of categories per date
+ * @return array
+ */
+function get_recent_post_dates($max_dates, $max_elements, $max_cats)
+{
+  global $conf, $user;
+
+  $where_sql = get_std_sql_where_restrict_filter('WHERE', 'i.id', true);
+
+  $query = '
+SELECT
+    date_available,
+    COUNT(DISTINCT id) AS nb_elements,
+    COUNT(DISTINCT category_id) AS nb_cats
+  FROM '.IMAGES_TABLE.' i INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
+  '.$where_sql.'
+  GROUP BY date_available
+  ORDER BY date_available DESC
+  LIMIT '.$max_dates.'
+;';
+  $dates = array_from_query($query);
+
+  for ($i=0; $i<count($dates); $i++)
+  {
+    if ($max_elements>0)
+    { // get some thumbnails ...
+      $query = '
+SELECT DISTINCT i.*
+  FROM '.IMAGES_TABLE.' i
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id=image_id
+  '.$where_sql.'
+    AND date_available=\''.$dates[$i]['date_available'].'\'
+  ORDER BY '.DB_RANDOM_FUNCTION.'()
+  LIMIT '.$max_elements.'
+;';
+      $dates[$i]['elements'] = array_from_query($query);
+    }
+
+    if ($max_cats>0)
+    {// get some categories ...
+      $query = '
+SELECT
+    DISTINCT c.uppercats,
+    COUNT(DISTINCT i.id) AS img_count
+  FROM '.IMAGES_TABLE.' i
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON i.id=image_id
+    INNER JOIN '.CATEGORIES_TABLE.' c ON c.id=category_id
+  '.$where_sql.'
+    AND date_available=\''.$dates[$i]['date_available'].'\'
+  GROUP BY category_id, c.uppercats
+  ORDER BY img_count DESC
+  LIMIT '.$max_cats.'
+;';
+      $dates[$i]['categories'] = array_from_query($query);
+    }
+  }
+
+  return $dates;
+}
+
+/**
+ * Returns information about recently published elements grouped by post date.
+ * Same as get_recent_post_dates() but parameters as an indexed array.
+ * @see get_recent_post_dates()
+ *
+ * @param array $args
+ * @return array
+ */
+function get_recent_post_dates_array($args)
+{
+  return get_recent_post_dates(
+    (empty($args['max_dates']) ? 3 : $args['max_dates']),
+    (empty($args['max_elements']) ? 3 : $args['max_elements']),
+    (empty($args['max_cats']) ? 3 : $args['max_cats'])
+    );
+}
+
+
+/**
+ * Returns html description about recently published elements grouped by post date.
+ * TODO : clean up HTML output, currently messy and invalid !
+ *
+ * @param array $date_detail returned value of get_recent_post_dates()
+ * @return string
+ */
+function get_html_description_recent_post_date($date_detail)
+{
+  global $conf;
+
+  $description = '<ul>';
+
+  $description .=
+        '<li>'
+        .l10n_dec('%d new photo', '%d new photos', $date_detail['nb_elements'])
+        .' ('
+        .'<a href="'.make_index_url(array('section'=>'recent_pics')).'">'
+          .l10n('Recent photos').'</a>'
+        .')'
+        .'</li><br>';
+
+  foreach($date_detail['elements'] as $element)
+  {
+    $tn_src = DerivativeImage::thumb_url($element);
+    $description .= '<a href="'.
+                    make_picture_url(array(
+                        'image_id' => $element['id'],
+                        'image_file' => $element['file'],
+                      ))
+                    .'"><img src="'.$tn_src.'"></a>';
+  }
+  $description .= '...<br>';
+
+  $description .=
+        '<li>'
+        .l10n_dec('%d album updated', '%d albums updated', $date_detail['nb_cats'])
+        .'</li>';
+
+  $description .= '<ul>';
+  foreach($date_detail['categories'] as $cat)
+  {
+    $description .=
+          '<li>'
+          .get_cat_display_name_cache($cat['uppercats'])
+          .' ('.
+          l10n_dec('%d new photo', '%d new photos', $cat['img_count']).')'
+          .'</li>';
+  }
+  $description .= '</ul>';
+
+  $description .= '</ul>';
+
+  return $description;
+}
+
+/**
+ * Returns title about recently published elements grouped by post date.
+ *
+ * @param array $date_detail returned value of get_recent_post_dates()
+ * @return string
+ */
+function get_title_recent_post_date($date_detail)
+{
+  global $lang;
+
+  $date = $date_detail['date_available'];
+  $exploded_date = strptime($date, '%Y-%m-%d %H:%M:%S');
+
+  $title = l10n_dec('%d new photo', '%d new photos', $date_detail['nb_elements']);
+  $title .= ' ('.$lang['month'][1+$exploded_date['tm_mon']].' '.$exploded_date['tm_mday'].')';
+
+  return $title;
+}
+
+if (!function_exists('strptime'))
+{
+  function strptime($date, $fmt)
+  {
+    if ($fmt != '%Y-%m-%d %H:%M:%S')
+      die('Invalid strptime format '.$fmt);
+    list($y,$m,$d,$H,$M,$S) = preg_split('/[-: ]/', $date);
+    $res = localtime( mktime($H,$M,$S,$m,$d,$y), true );
+    return $res;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_picture.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_picture.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_picture.inc.php	(revision 25596)
@@ -0,0 +1,133 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * @package functions\picture
+ */
+
+
+/**
+ * Returns slideshow default params.
+ * - period
+ * - repeat
+ * - play
+ *
+ * @return array
+ */
+function get_default_slideshow_params()
+{
+  global $conf;
+
+  return array(
+    'period' => $conf['slideshow_period'],
+    'repeat' => $conf['slideshow_repeat'],
+    'play' => true,
+    );
+}
+
+/**
+ * Checks and corrects slideshow params
+ *
+ * @param array $params
+ * @return array
+ */
+function correct_slideshow_params($params=array())
+{
+  global $conf;
+
+  if ($params['period'] < $conf['slideshow_period_min'])
+  {
+    $params['period'] = $conf['slideshow_period_min'];
+  }
+  else if ($params['period'] > $conf['slideshow_period_max'])
+  {
+    $params['period'] = $conf['slideshow_period_max'];
+  }
+
+  return $params;
+}
+
+/**
+ * Decodes slideshow string params into array
+ *
+ * @param string $encode_params
+ * @return array
+ */
+function decode_slideshow_params($encode_params=null)
+{
+  global $conf;
+
+  $result = get_default_slideshow_params();
+
+  if (is_numeric($encode_params))
+  {
+    $result['period'] = $encode_params;
+  }
+  else
+  {
+    $matches = array();
+    if (preg_match_all('/([a-z]+)-(\d+)/', $encode_params, $matches))
+    {
+      $matchcount = count($matches[1]);
+      for ($i = 0; $i < $matchcount; $i++)
+      {
+        $result[$matches[1][$i]] = $matches[2][$i];
+      }
+    }
+
+    if (preg_match_all('/([a-z]+)-(true|false)/', $encode_params, $matches))
+    {
+      $matchcount = count($matches[1]);
+      for ($i = 0; $i < $matchcount; $i++)
+      {
+        $result[$matches[1][$i]] = get_boolean($matches[2][$i]);
+      }
+    }
+  }
+
+  return correct_slideshow_params($result);
+}
+
+/**
+ * Encodes slideshow array params into a string
+ *
+ * @param array $decode_params
+ * @return string
+ */
+function encode_slideshow_params($decode_params=array())
+{
+  global $conf;
+
+  $params = array_diff_assoc(correct_slideshow_params($decode_params), get_default_slideshow_params());
+  $result = '';
+
+  foreach ($params as $name => $value)
+  {
+    // boolean_to_string return $value, if it's not a bool
+    $result .= '+'.$name.'-'.boolean_to_string($value);
+  }
+
+  return $result;
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_plugins.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_plugins.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_plugins.inc.php	(revision 25596)
@@ -0,0 +1,365 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+Events and event handlers are the core of Piwigo plugin management.
+Plugins are addons that are found in plugins subdirectory. If activated, PWG
+will include the index.php of each plugin.
+Events are triggered by PWG core code. Plugins (or even PWG itself) can
+register their functions to handle these events. An event is identified by a
+string.
+*/
+
+define('PHPWG_PLUGINS_PATH', PHPWG_ROOT_PATH.'plugins/');
+define('EVENT_HANDLER_PRIORITY_NEUTRAL', 50);
+
+
+/**
+ * class PluginMaintain
+ * used to declare maintenance methods of a plugin
+ */
+abstract class PluginMaintain 
+{
+  protected $plugin_id;
+  
+  function __construct($id)
+  {
+    $this->plugin_id = $id;
+  }
+  
+  abstract function install($plugin_version, &$errors=array());
+  abstract function activate($plugin_version, &$errors=array());
+  abstract function deactivate();
+  abstract function uninstall();
+  
+  /*
+   * test if a plugin needs to be updated and call a update function
+   * @param: string $version, version exposed by the plugin
+   * @param: string $on_update, name of a method to call when an update is needed
+   *          it receives the previous version as first parameter
+   */
+  function autoUpdate($version, $on_update=null)
+  {
+    global $pwg_loaded_plugins;
+    
+    $current_version = $pwg_loaded_plugins[$this->plugin_id]['version'];
+    
+    if ( $version == 'auto' or $current_version == 'auto'
+        or version_compare($current_version, $version, '<')
+      )
+    {
+      if (!empty($on_update))
+      {
+        call_user_func(array(&$this, $on_update), $current_version);
+      }
+      
+      if ($version != 'auto')
+      {
+        $query = '
+UPDATE '. PLUGINS_TABLE .'
+  SET version = "'. $version .'"
+  WHERE id = "'. $this->plugin_id .'"
+;';
+        pwg_query($query);
+        
+        $pwg_loaded_plugins[$this->plugin_id]['version'] = $version;
+      }
+    }
+  }
+}
+
+/**
+ * class ThemeMaintain
+ * used to declare maintenance methods of a theme
+ */
+abstract class ThemeMaintain 
+{
+  protected $theme_id;
+  
+  function __construct($id)
+  {
+    $this->theme_id = $id;
+  }
+  
+  abstract function activate($theme_version, &$errors=array());
+  abstract function deactivate();
+  abstract function delete();
+  
+  /*
+   * test if a theme needs to be updated and call a update function
+   * @param: string $version, version exposed by the theme
+   * @param: string $on_update, name of a method to call when an update is needed
+   *          it receives the previous version as first parameter
+   */
+  function autoUpdate($version, $on_update=null)
+  {
+    $query = '
+SELECT version
+  FROM '. THEMES_TABLE .'
+  WHERE id = "'. $this->theme_id .'"
+;';
+    list($current_version) = pwg_db_fetch_row(pwg_query($query));
+    
+    if ( $version == 'auto' or $current_version == 'auto'
+        or version_compare($current_version, $version, '<')
+      )
+    {
+      if (!empty($on_update))
+      {
+        call_user_func(array(&$this, $on_update), $current_version);
+      }
+      
+      if ($version != 'auto')
+      {
+        $query = '
+UPDATE '. THEMES_TABLE .'
+  SET version = "'. $version .'"
+  WHERE id = "'. $this->theme_id .'"
+;';
+        pwg_query($query);
+      }
+    }
+  }
+}
+
+
+/* Register a event handler.
+ * @param string $event the name of the event to listen to
+ * @param mixed $func the function that will handle the event
+ * @param int $priority optional priority (greater priority will
+ * be executed at last)
+*/
+function add_event_handler($event, $func,
+    $priority=EVENT_HANDLER_PRIORITY_NEUTRAL, $accepted_args=1)
+{
+  global $pwg_event_handlers;
+
+  if ( isset($pwg_event_handlers[$event][$priority]) )
+  {
+    foreach($pwg_event_handlers[$event][$priority] as $handler)
+    {
+      if ( $handler['function'] == $func )
+      {
+        return false;
+      }
+    }
+  }
+
+  $pwg_event_handlers[$event][$priority][] =
+    array(
+      'function'=>$func,
+      'accepted_args'=>$accepted_args);
+  ksort( $pwg_event_handlers[$event] );
+  return true;
+}
+
+/* Register a event handler.
+ * @param string $event the name of the event to listen to
+ * @param mixed $func the function that needs removal
+ * @param int $priority optional priority (greater priority will
+ * be executed at last)
+*/
+function remove_event_handler($event, $func,
+   $priority=EVENT_HANDLER_PRIORITY_NEUTRAL)
+{
+  global $pwg_event_handlers;
+
+  if (!isset( $pwg_event_handlers[$event][$priority] ) )
+  {
+    return false;
+  }
+  for ($i=0; $i<count($pwg_event_handlers[$event][$priority]); $i++)
+  {
+    if ($pwg_event_handlers[$event][$priority][$i]['function']==$func)
+    {
+      unset($pwg_event_handlers[$event][$priority][$i]);
+      $pwg_event_handlers[$event][$priority] =
+        array_values($pwg_event_handlers[$event][$priority]);
+
+      if ( empty($pwg_event_handlers[$event][$priority]) )
+      {
+        unset( $pwg_event_handlers[$event][$priority] );
+        if (empty( $pwg_event_handlers[$event] ) )
+        {
+          unset( $pwg_event_handlers[$event] );
+        }
+      }
+      return true;
+    }
+  }
+  return false;
+}
+
+/* Triggers an event and calls all registered event handlers
+ * @param string $event name of the event
+ * @param mixed $data data to pass to handlers
+*/
+function trigger_event($event, $data=null)
+{
+  global $pwg_event_handlers;
+
+  if ( isset($pwg_event_handlers['trigger']) )
+  {// just for debugging
+    trigger_action('trigger',
+        array('type'=>'event', 'event'=>$event, 'data'=>$data) );
+  }
+
+  if ( !isset($pwg_event_handlers[$event]) )
+  {
+    return $data;
+  }
+  $args = func_get_args();
+
+  foreach ($pwg_event_handlers[$event] as $priority => $handlers)
+  {
+    foreach($handlers as $handler)
+    {
+      $function_name = $handler['function'];
+      $accepted_args = $handler['accepted_args'];
+      $args[1] = $data;
+      $data = call_user_func_array($function_name, array_slice($args,1,$accepted_args) );
+    }
+  }
+  trigger_action('trigger',
+       array('type'=>'post_event', 'event'=>$event, 'data'=>$data) );
+  return $data;
+}
+
+function trigger_action($event, $data=null)
+{
+  global $pwg_event_handlers;
+  if ( isset($pwg_event_handlers['trigger']) and $event!='trigger' )
+  {// special case for debugging - avoid recursive calls
+    trigger_action('trigger',
+        array('type'=>'action', 'event'=>$event, 'data'=>$data) );
+  }
+
+  if ( !isset($pwg_event_handlers[$event]) )
+  {
+    return;
+  }
+  $args = func_get_args();
+
+  foreach ($pwg_event_handlers[$event] as $priority => $handlers)
+  {
+    foreach($handlers as $handler)
+    {
+      $function_name = $handler['function'];
+      $accepted_args = $handler['accepted_args'];
+
+      call_user_func_array($function_name, array_slice($args,1,$accepted_args) );
+    }
+  }
+}
+
+/** Saves some data with the associated plugim id. It can be retrieved later (
+ * during this script lifetime) using get_plugin_data
+ * @param string plugin_id
+ * @param mixed data
+ * returns true on success, false otherwise
+ */
+function set_plugin_data($plugin_id, &$data)
+{
+  global $pwg_loaded_plugins;
+  if ( isset($pwg_loaded_plugins[$plugin_id]) )
+  {
+    $pwg_loaded_plugins[$plugin_id]['plugin_data'] = &$data;
+    return true;
+  }
+  return false;
+}
+
+/** Retrieves plugin data saved previously with set_plugin_data
+ * @param string plugin_id
+ */
+function &get_plugin_data($plugin_id)
+{
+  global $pwg_loaded_plugins;
+  if ( isset($pwg_loaded_plugins[$plugin_id]) )
+  {
+    return $pwg_loaded_plugins[$plugin_id]['plugin_data'];
+  }
+  return null;
+}
+
+/* Returns an array of plugins defined in the database
+ * @param string $state optional filter on this state
+ * @param string $id optional returns only data about given plugin
+*/
+function get_db_plugins($state='', $id='')
+{
+  $query = '
+SELECT * FROM '.PLUGINS_TABLE;
+  $clauses = array();
+  if (!empty($state))
+  {
+    $clauses[] = 'state=\''.$state.'\'';
+  }
+  if (!empty($id))
+  {
+    $clauses[] = 'id="'.$id.'"';
+  }
+  if (count($clauses))
+  {
+      $query .= '
+  WHERE '. implode(' AND ', $clauses);
+  }
+
+  $result = pwg_query($query);
+  $plugins = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $plugins[] = $row;
+  }
+  return $plugins;
+}
+
+
+function load_plugin($plugin)
+{
+  $file_name = PHPWG_PLUGINS_PATH.$plugin['id'].'/main.inc.php';
+  if ( file_exists($file_name) )
+  {
+    global $pwg_loaded_plugins;
+    $pwg_loaded_plugins[ $plugin['id'] ] = $plugin;
+    include_once( $file_name );
+  }
+}
+
+/*loads all the plugins on startup*/
+function load_plugins()
+{
+  global $conf, $pwg_loaded_plugins;
+  $pwg_loaded_plugins = array();
+  if ($conf['enable_plugins'])
+  {
+    $plugins = get_db_plugins('active');
+    foreach( $plugins as $plugin)
+    {// include main from a function to avoid using same function context
+      load_plugin($plugin);
+    }
+    trigger_action('plugins_loaded');
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_rate.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_rate.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_rate.inc.php	(revision 25596)
@@ -0,0 +1,206 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * rate a picture by a user
+ *
+ * @param int image identifier
+ * @param int rate
+ * @return void
+ */
+function rate_picture($image_id, $rate)
+{
+  global $conf, $user;
+
+  if (!isset($rate)
+      or !$conf['rate']
+      or !in_array($rate, $conf['rate_items']))
+  {
+    return false;
+  }
+
+  $user_anonymous = is_autorize_status(ACCESS_CLASSIC) ? false : true;
+
+  if ($user_anonymous and !$conf['rate_anonymous'])
+  {
+    return false;
+  }
+
+  $ip_components = explode('.', $_SERVER["REMOTE_ADDR"]);
+  if (count($ip_components) > 3)
+  {
+    array_pop($ip_components);
+  }
+  $anonymous_id = implode ('.', $ip_components);
+
+  if ($user_anonymous)
+  {
+    $save_anonymous_id = pwg_get_cookie_var('anonymous_rater', $anonymous_id);
+
+    if ($anonymous_id != $save_anonymous_id)
+    { // client has changed his IP adress or he's trying to fool us
+      $query = '
+SELECT element_id
+  FROM '.RATE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+    AND anonymous_id = \''.$anonymous_id.'\'
+;';
+      $already_there = array_from_query($query, 'element_id');
+
+      if (count($already_there) > 0)
+      {
+        $query = '
+DELETE
+  FROM '.RATE_TABLE.'
+  WHERE user_id = '.$user['id'].'
+    AND anonymous_id = \''.$save_anonymous_id.'\'
+    AND element_id IN ('.implode(',', $already_there).')
+;';
+         pwg_query($query);
+       }
+
+       $query = '
+UPDATE '.RATE_TABLE.'
+  SET anonymous_id = \'' .$anonymous_id.'\'
+  WHERE user_id = '.$user['id'].'
+    AND anonymous_id = \'' . $save_anonymous_id.'\'
+;';
+       pwg_query($query);
+    } // end client changed ip
+
+    pwg_set_cookie_var('anonymous_rater', $anonymous_id);
+  } // end anonymous user
+
+  $query = '
+DELETE
+  FROM '.RATE_TABLE.'
+  WHERE element_id = '.$image_id.'
+    AND user_id = '.$user['id'].'
+';
+  if ($user_anonymous)
+  {
+    $query.= ' AND anonymous_id = \''.$anonymous_id.'\'';
+  }
+  pwg_query($query);
+  $query = '
+INSERT
+  INTO '.RATE_TABLE.'
+  (user_id,anonymous_id,element_id,rate,date)
+  VALUES
+  ('
+    .$user['id'].','
+    .'\''.$anonymous_id.'\','
+    .$image_id.','
+    .$rate
+    .',NOW())
+;';
+  pwg_query($query);
+
+  return update_rating_score($image_id);
+}
+
+
+/* update images.rating_score field
+  * we use a bayesian average (http://en.wikipedia.org/wiki/Bayesian_average) with
+C = average number of rates per item
+m = global average rate (all rates)
+
+ * param int $element_id optional, otherwise applies to all
+ * @return array(rating_score, count) if element_id is specified
+*/
+function update_rating_score($element_id = false)
+{
+  $query = '
+SELECT element_id,
+    COUNT(rate) AS rcount,
+    SUM(rate) AS rsum
+  FROM '.RATE_TABLE.'
+  GROUP by element_id';
+
+  $all_rates_count = 0;
+  $all_rates_avg = 0;
+  $item_ratecount_avg = 0;
+  $by_item = array();
+
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $all_rates_count += $row['rcount'];
+    $all_rates_avg += $row['rsum'];
+    $by_item[$row['element_id']] = $row;
+  }
+
+  if ($all_rates_count>0)
+  {
+    $all_rates_avg /= $all_rates_count;
+    $item_ratecount_avg = $all_rates_count / count($by_item);
+  }
+
+  $updates = array();
+  foreach ($by_item as $id => $rate_summary )
+  {
+    $score = ( $item_ratecount_avg * $all_rates_avg + $rate_summary['rsum'] ) / ($item_ratecount_avg + $rate_summary['rcount']);
+    $score = round($score,2);
+    if ($id==$element_id)
+    {
+      $return = array(
+        'score' => $score,
+        'average' => round($rate_summary['rsum'] / $rate_summary['rcount'], 2),
+        'count' => $rate_summary['rcount'],
+        );
+    }
+    $updates[] = array( 'id'=>$id, 'rating_score'=>$score );
+  }
+  mass_updates(
+    IMAGES_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('rating_score')
+      ),
+    $updates
+    );
+
+  //set to null all items with no rate
+  if ( !isset($by_item[$element_id]) )
+  {
+    $query='
+SELECT id FROM '.IMAGES_TABLE .'
+  LEFT JOIN '.RATE_TABLE.' ON id=element_id
+  WHERE element_id IS NULL AND rating_score IS NOT NULL';
+
+    $to_update = array_from_query( $query, 'id');
+
+    if ( !empty($to_update) )
+    {
+      $query='
+UPDATE '.IMAGES_TABLE .'
+  SET rating_score=NULL
+  WHERE id IN (' . implode(',',$to_update) . ')';
+    pwg_query($query);
+    }
+  }
+
+  return isset($return) ? $return : array('score'=>null, 'average'=>null, 'count'=>0 );
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_search.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_search.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_search.inc.php	(revision 25596)
@@ -0,0 +1,785 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+/**
+ * returns search rules stored into a serialized array in "search"
+ * table. Each search rules set is numericaly identified.
+ *
+ * @param int search_id
+ * @return array
+ */
+function get_search_array($search_id)
+{
+  if (!is_numeric($search_id))
+  {
+    die('Search id must be an integer');
+  }
+
+  $query = '
+SELECT rules
+  FROM '.SEARCH_TABLE.'
+  WHERE id = '.$search_id.'
+;';
+  list($serialized_rules) = pwg_db_fetch_row(pwg_query($query));
+
+  return unserialize($serialized_rules);
+}
+
+/**
+ * returns the SQL clause from a search identifier
+ *
+ * Search rules are stored in search table as a serialized array. This array
+ * need to be transformed into an SQL clause to be used in queries.
+ *
+ * @param array search
+ * @return string
+ */
+function get_sql_search_clause($search)
+{
+  // SQL where clauses are stored in $clauses array during query
+  // construction
+  $clauses = array();
+
+  foreach (array('file','name','comment','author') as $textfield)
+  {
+    if (isset($search['fields'][$textfield]))
+    {
+      $local_clauses = array();
+      foreach ($search['fields'][$textfield]['words'] as $word)
+      {
+        $local_clauses[] = $textfield." LIKE '%".$word."%'";
+      }
+
+      // adds brackets around where clauses
+      $local_clauses = prepend_append_array_items($local_clauses, '(', ')');
+
+      $clauses[] = implode(
+        ' '.$search['fields'][$textfield]['mode'].' ',
+        $local_clauses
+        );
+    }
+  }
+
+  if (isset($search['fields']['allwords']))
+  {
+    $fields = array('file', 'name', 'comment', 'author');
+    // in the OR mode, request bust be :
+    // ((field1 LIKE '%word1%' OR field2 LIKE '%word1%')
+    // OR (field1 LIKE '%word2%' OR field2 LIKE '%word2%'))
+    //
+    // in the AND mode :
+    // ((field1 LIKE '%word1%' OR field2 LIKE '%word1%')
+    // AND (field1 LIKE '%word2%' OR field2 LIKE '%word2%'))
+    $word_clauses = array();
+    foreach ($search['fields']['allwords']['words'] as $word)
+    {
+      $field_clauses = array();
+      foreach ($fields as $field)
+      {
+        $field_clauses[] = $field." LIKE '%".$word."%'";
+      }
+      // adds brackets around where clauses
+      $word_clauses[] = implode(
+        "\n          OR ",
+        $field_clauses
+        );
+    }
+
+    array_walk(
+      $word_clauses,
+      create_function('&$s','$s="(".$s.")";')
+      );
+
+    $clauses[] = "\n         ".
+      implode(
+        "\n         ". $search['fields']['allwords']['mode']. "\n         ",
+        $word_clauses
+        );
+  }
+
+  foreach (array('date_available', 'date_creation') as $datefield)
+  {
+    if (isset($search['fields'][$datefield]))
+    {
+      $clauses[] = $datefield." = '".$search['fields'][$datefield]['date']."'";
+    }
+
+    foreach (array('after','before') as $suffix)
+    {
+      $key = $datefield.'-'.$suffix;
+
+      if (isset($search['fields'][$key]))
+      {
+        $clauses[] = $datefield.
+          ($suffix == 'after'             ? ' >' : ' <').
+          ($search['fields'][$key]['inc'] ? '='  : '').
+          " '".$search['fields'][$key]['date']."'";
+      }
+    }
+  }
+
+  if (isset($search['fields']['cat']))
+  {
+    if ($search['fields']['cat']['sub_inc'])
+    {
+      // searching all the categories id of sub-categories
+      $cat_ids = get_subcat_ids($search['fields']['cat']['words']);
+    }
+    else
+    {
+      $cat_ids = $search['fields']['cat']['words'];
+    }
+
+    $local_clause = 'category_id IN ('.implode(',', $cat_ids).')';
+    $clauses[] = $local_clause;
+  }
+
+  // adds brackets around where clauses
+  $clauses = prepend_append_array_items($clauses, '(', ')');
+
+  $where_separator =
+    implode(
+      "\n    ".$search['mode'].' ',
+      $clauses
+      );
+
+  $search_clause = $where_separator;
+
+  return $search_clause;
+}
+
+/**
+ * returns the list of items corresponding to the advanced search array
+ *
+ * @param array search
+ * @return array
+ */
+function get_regular_search_results($search, $images_where)
+{
+  global $conf;
+  $forbidden = get_sql_condition_FandF(
+        array
+          (
+            'forbidden_categories' => 'category_id',
+            'visible_categories' => 'category_id',
+            'visible_images' => 'id'
+          ),
+        "\n  AND"
+    );
+
+  $items = array();
+  $tag_items = array();
+
+  if (isset($search['fields']['tags']))
+  {
+    $tag_items = get_image_ids_for_tags(
+      $search['fields']['tags']['words'],
+      $search['fields']['tags']['mode']
+      );
+  }
+
+  $search_clause = get_sql_search_clause($search);
+
+  if (!empty($search_clause))
+  {
+    $query = '
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.' i
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE '.$search_clause;
+    if (!empty($images_where))
+    {
+      $query .= "\n  AND ".$images_where;
+    }
+    $query .= $forbidden.'
+  '.$conf['order_by'];
+    $items = array_from_query($query, 'id');
+  }
+
+  if ( !empty($tag_items) )
+  {
+    switch ($search['mode'])
+    {
+      case 'AND':
+        if (empty($search_clause))
+        {
+          $items = $tag_items;
+        }
+        else
+        {
+          $items = array_values( array_intersect($items, $tag_items) );
+        }
+        break;
+      case 'OR':
+        $before_count = count($items);
+        $items = array_unique(
+          array_merge(
+            $items,
+            $tag_items
+            )
+          );
+        break;
+    }
+  }
+
+  return $items;
+}
+
+
+function is_word_char($ch)
+{
+  return ($ch>='0' && $ch<='9') || ($ch>='a' && $ch<='z') || ($ch>='A' && $ch<='Z') || ord($ch)>127;
+}
+
+function is_odd_wbreak_begin($ch)
+{
+  return strpos('[{<=*+', $ch)===false ? false:true;
+}
+
+function is_odd_wbreak_end($ch)
+{
+  return strpos(']}>=*+', $ch)===false ? false:true;
+}
+
+define('QST_QUOTED',   0x01);
+define('QST_NOT',      0x02);
+define('QST_WILDCARD_BEGIN',0x04);
+define('QST_WILDCARD_END',  0x08);
+define('QST_WILDCARD', QST_WILDCARD_BEGIN|QST_WILDCARD_END);
+
+
+/**
+ * analyzes and splits the quick/query search query $q into tokens
+ * q='john bill' => 2 tokens 'john' 'bill'
+ * Special characters for MySql full text search (+,<,>,~) appear in the token modifiers.
+ * The query can contain a phrase: 'Pierre "New York"' will return 'pierre' qnd 'new york'.
+ */
+function analyse_qsearch($q, &$qtokens, &$qtoken_modifiers)
+{
+  $q = stripslashes($q);
+  $tokens = array();
+  $token_modifiers = array();
+  $crt_token = "";
+  $crt_token_modifier = 0;
+
+  for ($i=0; $i<strlen($q); $i++)
+  {
+    $ch = $q[$i];
+    if ( ($crt_token_modifier&QST_QUOTED)==0)
+    {
+        if ($ch=='"')
+        {
+          if (strlen($crt_token))
+          {
+            $tokens[] = $crt_token; $token_modifiers[] = $crt_token_modifier;
+            $crt_token = ""; $crt_token_modifier = 0;
+          }
+          $crt_token_modifier |= QST_QUOTED;
+        }
+        elseif ( strcspn($ch, '*+-><~')==0 )
+        { //special full text modifier
+          if (strlen($crt_token))
+          {
+            $crt_token .= $ch;
+          }
+          else
+          {
+            if ( $ch=='*' )
+              $crt_token_modifier |= QST_WILDCARD_BEGIN;
+            if ( $ch=='-' )
+              $crt_token_modifier |= QST_NOT;
+          }
+        }
+        elseif (preg_match('/[\s,.;!\?]+/', $ch))
+        { // white space
+          if (strlen($crt_token))
+          {
+            $tokens[] = $crt_token; $token_modifiers[] = $crt_token_modifier;
+            $crt_token = "";
+          }
+          $crt_token_modifier = 0;
+        }
+        else
+        {
+          $crt_token .= $ch;
+        }
+    }
+    else // qualified with quotes
+    {
+      if ($ch=='"')
+      {
+        if ($i+1 < strlen($q) && $q[$i+1]=='*')
+        {
+          $crt_token_modifier |= QST_WILDCARD_END;
+          $i++;
+        }
+        $tokens[] = $crt_token; $token_modifiers[] = $crt_token_modifier;
+        $crt_token = ""; $crt_token_modifier = 0;
+        $state=0;
+      }
+      else
+        $crt_token .= $ch;
+    }
+  }
+
+  if (strlen($crt_token))
+  {
+    $tokens[] = $crt_token;
+    $token_modifiers[] = $crt_token_modifier;
+  }
+
+  $qtokens = array();
+  $qtoken_modifiers = array();
+  for ($i=0; $i<count($tokens); $i++)
+  {
+    if ( !($token_modifiers[$i] & QST_QUOTED) )
+    {
+      if ( substr($tokens[$i], -1)=='*' )
+      {
+        $tokens[$i] = rtrim($tokens[$i], '*');
+        $token_modifiers[$i] |= QST_WILDCARD_END;
+      }
+    }
+    if ( strlen($tokens[$i])==0)
+      continue;
+    $qtokens[] = $tokens[$i];
+    $qtoken_modifiers[] = $token_modifiers[$i];
+  }
+}
+
+
+/**
+ * returns the LIKE sql clause corresponding to the quick search query
+ * that has been split into tokens
+ * for example file LIKE '%john%' OR file LIKE '%bill%'.
+ */
+function get_qsearch_like_clause($tokens, $token_modifiers, $field)
+{
+  $clauses = array();
+  for ($i=0; $i<count($tokens); $i++)
+  {
+    $token = trim($tokens[$i], '%');
+    if ($token_modifiers[$i]&QST_NOT)
+      continue;
+    if ( strlen($token)==0 )
+      continue;
+    $token = addslashes($token);
+    $token = str_replace( array('%','_'), array('\\%','\\_'), $token); // escape LIKE specials %_
+    $clauses[] = $field.' LIKE \'%'.$token.'%\'';
+  }
+
+  return count($clauses) ? '('.implode(' OR ', $clauses).')' : null;
+}
+
+/**
+*/
+function get_qsearch_tags($tokens, $token_modifiers, &$token_tag_ids, &$not_tag_ids, &$all_tags)
+{
+  $token_tag_ids = array_fill(0, count($tokens), array() );
+  $not_tag_ids = $all_tags = array();
+
+  $token_tag_scores = $token_tag_ids;
+  $transliterated_tokens = array();
+  foreach ($tokens as $token)
+  {
+    $transliterated_tokens[] = transliterate($token);
+  }
+
+  $query = '
+SELECT t.*, COUNT(image_id) AS counter
+  FROM '.TAGS_TABLE.' t
+    INNER JOIN '.IMAGE_TAG_TABLE.' ON id=tag_id
+  GROUP BY id';
+  $result = pwg_query($query);
+  while ($tag = pwg_db_fetch_assoc($result))
+  {
+    $transliterated_tag = transliterate($tag['name']);
+
+    // find how this tag matches query tokens
+    for ($i=0; $i<count($tokens); $i++)
+    {
+      $transliterated_token = $transliterated_tokens[$i];
+
+      $match = false;
+      $pos = 0;
+      while ( ($pos = strpos($transliterated_tag, $transliterated_token, $pos)) !== false)
+      {
+        if ( ($token_modifiers[$i]&QST_WILDCARD)==QST_WILDCARD )
+        {// wildcard in this token
+          $match = 1;
+          break;
+        }
+        $token_len = strlen($transliterated_token);
+
+        // search begin of word
+        $wbegin_len=0; $wbegin_char=' ';
+        while ($pos-$wbegin_len > 0)
+        {
+          if (! is_word_char($transliterated_tag[$pos-$wbegin_len-1]) )
+          {
+            $wbegin_char = $transliterated_tag[$pos-$wbegin_len-1];
+            break;
+          }
+          $wbegin_len++;
+        }
+
+        // search end of word
+        $wend_len=0; $wend_char=' ';
+        while ($pos+$token_len+$wend_len < strlen($transliterated_tag))
+        {
+          if (! is_word_char($transliterated_tag[$pos+$token_len+$wend_len]) )
+          {
+            $wend_char = $transliterated_tag[$pos+$token_len+$wend_len];
+            break;
+          }
+          $wend_len++;
+        }
+
+        $this_score = 0;
+        if ( ($token_modifiers[$i]&QST_WILDCARD)==0 )
+        {// no wildcard begin or end
+          if ($token_len <= 2)
+          {// search for 1 or 2 characters must match exactly to avoid retrieving too much data
+            if ($wbegin_len==0 && $wend_len==0 && !is_odd_wbreak_begin($wbegin_char) && !is_odd_wbreak_end($wend_char) )
+              $this_score = 1;
+          }
+          elseif ($token_len == 3)
+          {
+            if ($wbegin_len==0)
+              $this_score = $token_len / ($token_len + $wend_len);
+          }
+          else
+          {
+            $this_score = $token_len / ($token_len + 1.1 * $wbegin_len + 0.9 * $wend_len);
+          }
+        }
+
+        if ($this_score>0)
+          $match = max($match, $this_score );
+        $pos++;
+      }
+
+      if ($match)
+      {
+        $tag_id = (int)$tag['id'];
+        $all_tags[$tag_id] = $tag;
+        $token_tag_ids[$i][] = $tag_id;
+        $token_tag_scores[$i][] = $match;
+      }
+    }
+  }
+
+  // process not tags
+  for ($i=0; $i<count($tokens); $i++)
+  {
+    if ( ! ($token_modifiers[$i]&QST_NOT) )
+      continue;
+
+    array_multisort($token_tag_scores[$i], SORT_DESC|SORT_NUMERIC, $token_tag_ids[$i]);
+
+    for ($j=0; $j<count($token_tag_scores[$i]); $j++)
+    {
+      if ($token_tag_scores[$i][$j] < 0.8)
+        break;
+      if ($j>0 && $token_tag_scores[$i][$j] < $token_tag_scores[$i][0])
+        break;
+      $tag_id = $token_tag_ids[$i][$j];
+      if ( isset($all_tags[$tag_id]) )
+      {
+        unset($all_tags[$tag_id]);
+        $not_tag_ids[] = $tag_id;
+      }
+    }
+    $token_tag_ids[$i] = array();
+  }
+
+  // process regular tags
+  for ($i=0; $i<count($tokens); $i++)
+  {
+    if ( $token_modifiers[$i]&QST_NOT )
+      continue;
+
+    array_multisort($token_tag_scores[$i], SORT_DESC|SORT_NUMERIC, $token_tag_ids[$i]);
+
+    $counter = 0;
+    for ($j=0; $j<count($token_tag_scores[$i]); $j++)
+    {
+      $tag_id = $token_tag_ids[$i][$j];
+      if ( ! isset($all_tags[$tag_id]) )
+      {
+        array_splice($token_tag_ids[$i], $j, 1);
+        array_splice($token_tag_scores[$i], $j, 1);
+        $j--;
+        continue;
+      }
+
+      $counter += $all_tags[$tag_id]['counter'];
+      if ($counter > 200 && $j>0 && $token_tag_scores[$i][0] > $token_tag_scores[$i][$j] )
+      {// "many" images in previous tags and starting from this tag is less relevent
+        array_splice($token_tag_ids[$i], $j);
+        array_splice($token_tag_scores[$i], $j);
+        break;
+      }
+    }
+  }
+
+  usort($all_tags, 'tag_alpha_compare');
+  foreach ( $all_tags as &$tag )
+    $tag['name'] = trigger_event('render_tag_name', $tag['name']);
+}
+
+/**
+ * returns the search results corresponding to a quick/query search.
+ * A quick/query search returns many items (search is not strict), but results
+ * are sorted by relevance unless $super_order_by is true. Returns:
+ * array (
+ * 'items' => array(85,68,79...)
+ * 'qs'    => array(
+ *    'matching_tags' => array of matching tags
+ *    'matching_cats' => array of matching categories
+ *    'matching_cats_no_images' =>array(99) - matching categories without images
+ *      ))
+ *
+ * @param string q
+ * @param bool super_order_by
+ * @param string images_where optional aditional restriction on images table
+ * @return array
+ */
+function get_quick_search_results($q, $super_order_by, $images_where='')
+{
+  global $user, $conf;
+
+  $search_results =
+    array(
+      'items' => array(),
+      'qs' => array('q'=>stripslashes($q)),
+    );
+  $q = trim($q);
+  analyse_qsearch($q, $tokens, $token_modifiers);
+  if (count($tokens)==0)
+  {
+    return $search_results;
+  }
+  $debug[] = '<!--'.count($tokens).' tokens';
+
+  $q_like_field = '@@__db_field__@@'; //something never in a search
+  $q_like_clause = get_qsearch_like_clause($tokens, $token_modifiers, $q_like_field );
+
+  // Step 1 - first we find matches in #images table ===========================
+  $where_clauses='MATCH(i.name, i.comment) AGAINST( \''.$q.'\' IN BOOLEAN MODE)';
+  if (!empty($q_like_clause))
+  {
+    $where_clauses .= '
+    OR '. str_replace($q_like_field, 'CONVERT(file, CHAR)', $q_like_clause);
+    $where_clauses = '('.$where_clauses.')';
+  }
+  $where_clauses = array($where_clauses);
+  if (!empty($images_where))
+  {
+    $where_clauses[]='('.$images_where.')';
+  }
+  $where_clauses[] .= get_sql_condition_FandF
+      (
+        array( 'visible_images' => 'i.id' ), null, true
+      );
+  $query = '
+SELECT i.id,
+    MATCH(i.name, i.comment) AGAINST( \''.$q.'\' IN BOOLEAN MODE) AS weight
+  FROM '.IMAGES_TABLE.' i
+  WHERE '.implode("\n AND ", $where_clauses);
+
+  $by_weights=array();
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  { // weight is important when sorting images by relevance
+    if ($row['weight'])
+    {
+      $by_weights[(int)$row['id']] =  2*$row['weight'];
+    }
+    else
+    {//full text does not match but file name match
+      $by_weights[(int)$row['id']] =  2;
+    }
+  }
+  $debug[] = count($by_weights).' fulltext';
+  if (!empty($by_weights))
+  {
+    $debug[] = 'ft score min:'.min($by_weights).' max:'.max($by_weights);
+  }
+
+
+  // Step 2 - get the tags and the images for tags
+  get_qsearch_tags($tokens, $token_modifiers, $token_tag_ids, $not_tag_ids, $search_results['qs']['matching_tags']);
+  $debug[] = count($search_results['qs']['matching_tags']).' tags';
+
+  for ($i=0; $i<count($token_tag_ids); $i++)
+  {
+    $tag_ids = $token_tag_ids[$i];
+    $debug[] = count($tag_ids).' unique tags';
+
+    if (!empty($tag_ids))
+    {
+      $tag_photo_count=0;
+      $query = '
+SELECT image_id FROM '.IMAGE_TAG_TABLE.'
+  WHERE tag_id IN ('.implode(',',$tag_ids).')
+  GROUP BY image_id';
+      $result = pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($result))
+      { // weight is important when sorting images by relevance
+        $image_id=(int)$row['image_id'];
+        @$by_weights[$image_id] += 1;
+        $tag_photo_count++;
+      }
+      $debug[] = $tag_photo_count.' photos for tag';
+      $debug[] = count($by_weights).' photos after';
+    }
+  }
+
+  // Step 3 - search categories corresponding to the query $q ==================
+  $query = '
+SELECT id, name, permalink, nb_images
+  FROM '.CATEGORIES_TABLE.'
+    INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ON id=cat_id
+  WHERE user_id='.$user['id'].'
+    AND MATCH(name, comment) AGAINST( \''.$q.'\' IN BOOLEAN MODE)'.
+  get_sql_condition_FandF (
+      array( 'visible_categories' => 'cat_id' ), "\n    AND"
+    );
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  { // weight is important when sorting images by relevance
+    if ($row['nb_images']==0)
+    {
+      $search_results['qs']['matching_cats_no_images'][] = $row;
+    }
+    else
+    {
+      $search_results['qs']['matching_cats'][$row['id']] = $row;
+    }
+  }
+  $debug[] = count(@$search_results['qs']['matching_cats']).' albums with images';
+
+  if ( empty($by_weights) and empty($search_results['qs']['matching_cats']) )
+  {
+    return $search_results;
+  }
+
+  if (!empty($not_tag_ids))
+  {
+    $query = '
+SELECT image_id FROM '.IMAGE_TAG_TABLE.'
+  WHERE tag_id IN ('.implode(',',$not_tag_ids).')
+  GROUP BY image_id';
+      $result = pwg_query($query);
+      while ($row = pwg_db_fetch_row($result))
+      {
+        $id = $row[0];
+        unset($by_weights[$id]);
+      }
+      $debug[] = count($by_weights).' after not tags';
+  }
+  // Step 4 - now we have $by_weights ( array image id => weight ) that need
+  // permission checks and/or matching categories to get images from
+  $where_clauses = array();
+  if ( !empty($by_weights) )
+  {
+    $where_clauses[]='i.id IN ('
+      . implode(',', array_keys($by_weights)) . ')';
+  }
+  if ( !empty($search_results['qs']['matching_cats']) )
+  {
+    $where_clauses[]='category_id IN ('.
+      implode(',',array_keys($search_results['qs']['matching_cats'])).')';
+  }
+  $where_clauses = array( '('.implode("\n    OR ",$where_clauses).')' );
+  if (!empty($images_where))
+  {
+    $where_clauses[]='('.$images_where.')';
+  }
+  $where_clauses[] = get_sql_condition_FandF(
+      array
+        (
+          'forbidden_categories' => 'category_id',
+          'visible_categories' => 'category_id',
+          'visible_images' => 'i.id'
+        ),
+      null,true
+    );
+
+  $query = '
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.' i
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE '.implode("\n AND ", $where_clauses)."\n".
+  $conf['order_by'];
+
+  $allowed_images = array_from_query( $query, 'id');
+
+  $debug[] = count($allowed_images).' final photo count -->';
+  global $template;
+  $template->append('footer_elements', implode(', ', $debug) );
+
+  if ( $super_order_by or empty($by_weights) )
+  {
+    $search_results['items'] = $allowed_images;
+    return $search_results;
+  }
+
+  $allowed_images = array_flip( $allowed_images );
+  $divisor = 5.0 * count($allowed_images);
+  foreach ($allowed_images as $id=> &$rank )
+  {
+    $weight = isset($by_weights[$id]) ? $by_weights[$id] : 1;
+    $weight -= $rank/$divisor;
+    $rank = $weight;
+  }
+  unset($rank);
+
+  arsort($allowed_images, SORT_NUMERIC);
+  $search_results['items'] = array_keys($allowed_images);
+  return $search_results;
+}
+
+/**
+ * returns an array of 'items' corresponding to the search id
+ *
+ * @param int search id
+ * @param string images_where optional aditional restriction on images table
+ * @return array
+ */
+function get_search_results($search_id, $super_order_by, $images_where='')
+{
+  $search = get_search_array($search_id);
+  if ( !isset($search['q']) )
+  {
+    $result['items'] = get_regular_search_results($search, $images_where);
+    return $result;
+  }
+  else
+  {
+    return get_quick_search_results($search['q'], $super_order_by, $images_where);
+  }
+}
+?>
Index: /tags/2.6.0RC1/include/functions_session.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_session.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_session.inc.php	(revision 25596)
@@ -0,0 +1,235 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// The function generate_key creates a string with pseudo random characters.
+// the size of the string depends on the $conf['session_id_size'].
+// Characters used are a-z A-Z and numerical values. Examples :
+//                    "Er4Tgh6", "Rrp08P", "54gj"
+// input  : none (using global variable)
+// output : $key
+function generate_key($size)
+{
+  global $conf;
+
+  $md5 = md5(substr(microtime(), 2, 6));
+  $init = '';
+  for ( $i = 0; $i < strlen( $md5 ); $i++ )
+  {
+    if ( is_numeric( $md5[$i] ) ) $init.= $md5[$i];
+  }
+  $init = substr( $init, 0, 8 );
+  mt_srand( $init );
+  $key = '';
+  for ( $i = 0; $i < $size; $i++ )
+  {
+    $c = mt_rand( 0, 2 );
+    if ( $c == 0 )      $key .= chr( mt_rand( 65, 90 ) );
+    else if ( $c == 1 ) $key .= chr( mt_rand( 97, 122 ) );
+    else                $key .= mt_rand( 0, 9 );
+  }
+  return $key;
+}
+
+if (isset($conf['session_save_handler'])
+  and ($conf['session_save_handler'] == 'db')
+  and defined('PHPWG_INSTALLED'))
+{
+  session_set_save_handler('pwg_session_open',
+    'pwg_session_close',
+    'pwg_session_read',
+    'pwg_session_write',
+    'pwg_session_destroy',
+    'pwg_session_gc'
+  );
+  if ( function_exists('ini_set') )
+  {
+    ini_set('session.use_cookies', $conf['session_use_cookies']);
+    ini_set('session.use_only_cookies', $conf['session_use_only_cookies']);
+    ini_set('session.use_trans_sid', intval($conf['session_use_trans_sid']));
+    ini_set('session.cookie_httponly', 1);
+  }
+  session_name($conf['session_name']);
+  session_set_cookie_params(0, cookie_path());
+  register_shutdown_function('session_write_close');
+}
+
+/**
+ * returns true; used when the session_start() function is called
+ *
+ * @params not use but useful for php engine
+ */
+function pwg_session_open($path, $name)
+{
+  return true;
+}
+
+/**
+ * returns true; used when the session is closed (unset($_SESSION))
+ *
+ */
+function pwg_session_close()
+{
+  return true;
+}
+
+function get_remote_addr_session_hash()
+{
+  global $conf;
+
+  if (!$conf['session_use_ip_address'])
+  {
+    return '';
+  }
+  
+  if (strpos($_SERVER['REMOTE_ADDR'],':')===false)
+  {//ipv4
+    return vsprintf(
+      "%02X%02X",
+      explode('.',$_SERVER['REMOTE_ADDR'])
+    );
+  }
+  return ''; //ipv6 not yet
+}
+
+/**
+ * this function returns
+ * a string corresponding to the value of the variable save in the session
+ * or an empty string when the variable doesn't exist
+ *
+ * @param string session id
+ */
+function pwg_session_read($session_id)
+{
+  $query = '
+SELECT data
+  FROM '.SESSIONS_TABLE.'
+  WHERE id = \''.get_remote_addr_session_hash().$session_id.'\'
+;';
+  $result = pwg_query($query);
+  if ($result)
+  {
+    $row = pwg_db_fetch_assoc($result);
+    return $row['data'];
+  }
+  else
+  {
+    return '';
+  }
+}
+
+/**
+ * returns true; writes set a variable in the active session
+ *
+ * @param string session id
+ * @data string value of date to be saved
+ */
+function pwg_session_write($session_id, $data)
+{
+  $query = '
+REPLACE INTO '.SESSIONS_TABLE.'
+  (id,data,expiration)
+  VALUES(\''.get_remote_addr_session_hash().$session_id.'\',\''.pwg_db_real_escape_string($data).'\',now())
+;';
+  pwg_query($query);
+  return true;
+}
+
+/**
+ * returns true; delete the active session
+ *
+ * @param string session id
+ */
+function pwg_session_destroy($session_id)
+{
+  $query = '
+DELETE
+  FROM '.SESSIONS_TABLE.'
+  WHERE id = \''.get_remote_addr_session_hash().$session_id.'\'
+;';
+  pwg_query($query);
+  return true;
+}
+
+/**
+ * returns true; delete expired sessions
+ * called each time a session is closed.
+ */
+function pwg_session_gc()
+{
+  global $conf;
+
+  $query = '
+DELETE
+  FROM '.SESSIONS_TABLE.'
+  WHERE '.pwg_db_date_to_ts('NOW()').' - '.pwg_db_date_to_ts('expiration').' > '
+  .$conf['session_length'].'
+;';
+  pwg_query($query);
+  return true;
+}
+
+
+/**
+ * persistently stores a variable for the current session
+ * currently we use standard php sessions but it might change
+ * @return boolean true on success
+ * @see pwg_get_session_var, pwg_unset_session_var
+ */
+function pwg_set_session_var($var, $value)
+{
+  if ( !isset($_SESSION) )
+    return false;
+  $_SESSION['pwg_'.$var] = $value;
+  return true;
+}
+
+/**
+ * retrieves the value of a persistent variable for the current session
+ * currently we use standard php sessions but it might change
+ * @return mixed
+ * @see pwg_set_session_var, pwg_unset_session_var
+ */
+function pwg_get_session_var($var, $default = null)
+{
+  if (isset( $_SESSION['pwg_'.$var] ) )
+  {
+    return $_SESSION['pwg_'.$var];
+  }
+  return $default;
+}
+
+/**
+ * deletes a persistent variable for the current session
+ * currently we use standard php sessions but it might change
+ * @return boolean true on success
+ * @see pwg_set_session_var, pwg_get_session_var
+ */
+function pwg_unset_session_var($var)
+{
+  if ( !isset($_SESSION) )
+    return false;
+  unset( $_SESSION['pwg_'.$var] );
+  return true;
+}
+
+?>
Index: /tags/2.6.0RC1/include/functions_tag.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_tag.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_tag.inc.php	(revision 25596)
@@ -0,0 +1,339 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+/** returns the number of available tags for the connected user */
+function get_nb_available_tags()
+{
+  global $user;
+  if (!isset($user['nb_available_tags']))
+  {
+    $user['nb_available_tags'] = count(get_available_tags());
+    single_update(USER_CACHE_TABLE, 
+      array('nb_available_tags'=>$user['nb_available_tags']),
+      array('user_id'=>$user['id'])
+      );
+  }
+  return $user['nb_available_tags'];
+}
+
+/**
+ * Tags available. Each return tag is represented as an array with its id,
+ * its name, its weight (count), its url name. Tags are not sorted.
+ *
+ * The returned list can be a subset of all existing tags due to
+ * permissions, only if a list of forbidden categories is provided
+ *
+ * @param array forbidden categories
+ * @return array
+ */
+function get_available_tags()
+{
+  // we can find top fatter tags among reachable images
+  $query = '
+SELECT tag_id, COUNT(DISTINCT(it.image_id)) AS counter
+  FROM '.IMAGE_CATEGORY_TABLE.' ic
+    INNER JOIN '.IMAGE_TAG_TABLE.' it ON ic.image_id=it.image_id'.get_sql_condition_FandF
+    (
+      array
+        (
+          'forbidden_categories' => 'category_id',
+          'visible_categories' => 'category_id',
+          'visible_images' => 'ic.image_id'
+        ),
+      '
+  WHERE'
+    ).'
+  GROUP BY tag_id';
+  $tag_counters = simple_hash_from_query($query, 'tag_id', 'counter');
+
+  if ( empty($tag_counters) )
+  {
+    return array();
+  }
+
+  $query = '
+SELECT *
+  FROM '.TAGS_TABLE;
+  $result = pwg_query($query);
+  $tags = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $counter = intval(@$tag_counters[ $row['id'] ]);
+    if ( $counter )
+    {
+      $row['counter'] = $counter;
+      $row['name'] = trigger_event('render_tag_name', $row['name']);
+      $tags[] = $row;
+    }
+  }
+  return $tags;
+}
+
+/**
+ * All tags, even tags associated to no image.
+ *
+ * @return array
+ */
+function get_all_tags()
+{
+  $query = '
+SELECT *
+  FROM '.TAGS_TABLE.'
+;';
+  $result = pwg_query($query);
+  $tags = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['name'] = trigger_event('render_tag_name', $row['name']);
+    $tags[] = $row;
+  }
+
+  usort($tags, 'tag_alpha_compare');
+
+  return $tags;
+}
+
+/**
+ * Giving a set of tags with a counter for each one, calculate the display
+ * level of each tag.
+ *
+ * The level of each tag depends on the average count of tags. This
+ * calcylation method avoid having very different levels for tags having
+ * nearly the same count when set are small.
+ *
+ * @param array tags
+ * @return array
+ */
+function add_level_to_tags($tags)
+{
+  global $conf;
+
+  if (count($tags) == 0)
+  {
+    return $tags;
+  }
+
+  $total_count = 0;
+
+  foreach ($tags as $tag)
+  {
+    $total_count+= $tag['counter'];
+  }
+
+  // average count of available tags will determine the level of each tag
+  $tag_average_count = $total_count / count($tags);
+
+  // tag levels threshold calculation: a tag with an average rate must have
+  // the middle level.
+  for ($i = 1; $i < $conf['tags_levels']; $i++)
+  {
+    $threshold_of_level[$i] =
+      2 * $i * $tag_average_count / $conf['tags_levels'];
+  }
+
+  // display sorted tags
+  foreach ($tags as &$tag)
+  {
+    $tag['level'] = 1;
+
+    // based on threshold, determine current tag level
+    for ($i = $conf['tags_levels'] - 1; $i >= 1; $i--)
+    {
+      if ($tag['counter'] > $threshold_of_level[$i])
+      {
+        $tag['level'] = $i + 1;
+        break;
+      }
+    }
+  }
+  unset($tag);
+
+  return $tags;
+}
+
+/**
+ * return the list of image ids corresponding to given tags. AND & OR mode
+ * supported.
+ *
+ * @param array tag ids
+ * @param string mode
+ * @param string extra_images_where_sql - optionally apply a sql where filter to retrieved images
+ * @param string order_by - optionally overwrite default photo order
+ * @return array
+ */
+function get_image_ids_for_tags($tag_ids, $mode='AND', $extra_images_where_sql='', $order_by='', $use_permissions=true)
+{
+  global $conf;
+  if (empty($tag_ids))
+  {
+    return array();
+  }
+
+  $query = 'SELECT id
+  FROM '.IMAGES_TABLE.' i ';
+
+  if ($use_permissions)
+  {
+    $query.= '
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' ic ON id=ic.image_id';
+  }
+
+  $query.= '
+    INNER JOIN '.IMAGE_TAG_TABLE.' it ON id=it.image_id
+    WHERE tag_id IN ('.implode(',', $tag_ids).')';
+
+  if ($use_permissions)
+  {
+    $query.= get_sql_condition_FandF(
+      array(
+        'forbidden_categories' => 'category_id',
+        'visible_categories' => 'category_id',
+        'visible_images' => 'id'
+        ),
+      "\n  AND"
+      );
+  }
+
+  $query.= (empty($extra_images_where_sql) ? '' : " \nAND (".$extra_images_where_sql.')').'
+  GROUP BY id';
+  
+  if ($mode=='AND' and count($tag_ids)>1)
+  {
+    $query .= '
+  HAVING COUNT(DISTINCT tag_id)='.count($tag_ids);
+  }
+  $query .= "\n".(empty($order_by) ? $conf['order_by'] : $order_by);
+
+  return array_from_query($query, 'id');
+}
+
+/**
+ * return a list of tags corresponding to given items.
+ *
+ * @param array items
+ * @param array max_tags
+ * @param array excluded_tag_ids
+ * @return array
+ */
+function get_common_tags($items, $max_tags, $excluded_tag_ids=null)
+{
+  if (empty($items))
+  {
+    return array();
+  }
+  $query = '
+SELECT t.*, count(*) AS counter
+  FROM '.IMAGE_TAG_TABLE.'
+    INNER JOIN '.TAGS_TABLE.' t ON tag_id = id
+  WHERE image_id IN ('.implode(',', $items).')';
+  if (!empty($excluded_tag_ids))
+  {
+    $query.='
+    AND tag_id NOT IN ('.implode(',', $excluded_tag_ids).')';
+  }
+  $query .='
+  GROUP BY t.id
+  ORDER BY ';
+  if ($max_tags>0)
+  {
+    $query .= 'counter DESC
+  LIMIT '.$max_tags;
+  }
+  else
+  {
+    $query .= 'NULL';
+  }
+
+  $result = pwg_query($query);
+  $tags = array();
+  while($row = pwg_db_fetch_assoc($result))
+  {
+    $row['name'] = trigger_event('render_tag_name', $row['name']);
+    $tags[] = $row;
+  }
+  usort($tags, 'tag_alpha_compare');
+  return $tags;
+}
+
+/**
+ * return a list of tags corresponding to any of ids, url_names, names
+ *
+ * @param array ids
+ * @param array url_names
+ * @param array names
+ * @return array
+ */
+function find_tags($ids, $url_names=array(), $names=array() )
+{
+  $where_clauses = array();
+  if ( !empty($ids) )
+  {
+    $where_clauses[] = 'id IN ('.implode(',', $ids).')';
+  }
+  if ( !empty($url_names) )
+  {
+    $where_clauses[] =
+      'url_name IN ('.
+      implode(
+        ',',
+        array_map(
+          create_function('$s', 'return "\'".$s."\'";'),
+          $url_names
+          )
+        )
+      .')';
+  }
+  if ( !empty($names) )
+  {
+    $where_clauses[] =
+      'name IN ('.
+      implode(
+        ',',
+        array_map(
+          create_function('$s', 'return "\'".$s."\'";'),
+          $names
+          )
+        )
+      .')';
+  }
+  if (empty($where_clauses))
+  {
+    return array();
+  }
+
+  $query = '
+SELECT *
+  FROM '.TAGS_TABLE.'
+  WHERE '. implode( '
+    OR ', $where_clauses);
+
+  $result = pwg_query($query);
+  $tags = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $tags[] = $row;
+  }
+  return $tags;
+}
+?>
Index: /tags/2.6.0RC1/include/functions_url.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_url.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_url.inc.php	(revision 25596)
@@ -0,0 +1,797 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+/**
+ * returns a prefix for each url link on displayed page
+ * and return an empty string for current path
+ * @return string
+ */
+function get_root_url()
+{
+  global $page;
+  if ( ($root_url = @$page['root_path']) == null )
+  {// TODO - add HERE the possibility to call PWG functions from external scripts
+    $root_url = PHPWG_ROOT_PATH;
+    if ( strncmp($root_url, './', 2) == 0 )
+    {
+      return substr($root_url, 2);
+    }
+  }
+  return $root_url;
+}
+
+/**
+ * returns the absolute url to the root of PWG
+ * @param boolean with_scheme if false - does not add http://toto.com
+ */
+function get_absolute_root_url($with_scheme=true)
+{
+  // TODO - add HERE the possibility to call PWG functions from external scripts
+  $url = '';
+  if ($with_scheme)
+  {
+    $is_https = false;
+    if (isset($_SERVER['HTTPS']) &&
+      ((strtolower($_SERVER['HTTPS']) == 'on') or ($_SERVER['HTTPS'] == 1)))
+    {
+      $is_https = true;
+      $url .= 'https://';
+    }
+    else
+    {
+      $url .= 'http://';
+    }
+    $url .= $_SERVER['HTTP_HOST'];
+    if ( (!$is_https && $_SERVER['SERVER_PORT'] != 80)
+          ||($is_https && $_SERVER['SERVER_PORT'] != 443))
+    {
+      $url_port = ':'.$_SERVER['SERVER_PORT'];
+      if (strrchr($url, ':') != $url_port)
+      {
+        $url .= $url_port;
+      }
+    }
+  }
+  $url .= cookie_path();
+  return $url;
+}
+
+/**
+ * adds one or more _GET style parameters to an url
+ * example: add_url_params('/x', array('a'=>'b')) returns /x?a=b
+ * add_url_params('/x?cat_id=10', array('a'=>'b')) returns /x?cat_id=10&amp;a=b
+ * @param string url
+ * @param array params
+ * @return string
+ */
+function add_url_params($url, $params, $arg_separator='&amp;' )
+{
+  if ( !empty($params) )
+  {
+    assert( is_array($params) );
+    $is_first = true;
+    foreach($params as $param=>$val)
+    {
+      if ($is_first)
+      {
+        $is_first = false;
+        $url .= ( strpos($url, '?')===false ) ? '?' : $arg_separator;
+      }
+      else
+      {
+        $url .= $arg_separator;
+      }
+      $url .= $param;
+      if (isset($val))
+      {
+        $url .= '='.$val;
+      }
+    }
+  }
+  return $url;
+}
+
+/**
+ * build an index URL for a specific section
+ *
+ * @param array
+ * @return string
+ */
+function make_index_url($params = array())
+{
+  global $conf;
+  $url = get_root_url().'index';
+  if ($conf['php_extension_in_urls'])
+  {
+    $url .= '.php';
+  }
+  if ($conf['question_mark_in_urls'])
+  {
+    $url .= '?';
+  }
+
+  $url_before_params = $url;
+  
+  $url.= make_section_in_url($params);
+  $url = add_well_known_params_in_url($url, $params);
+
+  if ($url == $url_before_params)
+  {
+    $url = get_absolute_root_url( url_is_remote($url) );
+  }
+  
+  return $url;
+}
+
+/**
+ * build an index URL with current page parameters, but with redefinitions
+ * and removes.
+ *
+ * duplicate_index_url( array(
+ *   'category' => array('id'=>12, 'name'=>'toto'),
+ *   array('start')
+ * ) will create an index URL on the current section (categories), but on
+ * a redefined category and without the start URL parameter.
+ *
+ * @param array redefined keys
+ * @param array removed keys
+ * @return string
+ */
+function duplicate_index_url($redefined = array(), $removed = array())
+{
+  return make_index_url(
+    params_for_duplication($redefined, $removed)
+    );
+}
+
+/**
+ * returns $page global array with key redefined and key removed
+ *
+ * @param array redefined keys
+ * @param array removed keys
+ * @return array
+ */
+function params_for_duplication($redefined, $removed)
+{
+  global $page;
+
+  $params = $page;
+
+  foreach ($removed as $param_key)
+  {
+    unset($params[$param_key]);
+  }
+
+  foreach ($redefined as $redefined_param => $redefined_value)
+  {
+    $params[$redefined_param] = $redefined_value;
+  }
+
+  return $params;
+}
+
+/**
+ * create a picture URL with current page parameters, but with redefinitions
+ * and removes. See duplicate_index_url.
+ *
+ * @param array redefined keys
+ * @param array removed keys
+ * @return string
+ */
+function duplicate_picture_url($redefined = array(), $removed = array())
+{
+  return make_picture_url(
+    params_for_duplication($redefined, $removed)
+    );
+}
+
+/**
+ * create a picture URL on a specific section for a specific picture
+ *
+ * @param array
+ * @return string
+ */
+function make_picture_url($params)
+{
+  global $conf;
+
+  isset($params['image_id']) or fatal_error('make_picture_url: image_id is a required parameter');
+
+  $url = get_root_url().'picture';
+  if ($conf['php_extension_in_urls'])
+  {
+    $url .= '.php';
+  }
+  if ($conf['question_mark_in_urls'])
+  {
+    $url .= '?';
+  }
+  $url.= '/';
+  switch ( $conf['picture_url_style'] )
+  {
+    case 'id-file':
+      $url .= $params['image_id'];
+      if ( isset($params['image_file']) )
+      {
+        $url .= '-'.str2url(get_filename_wo_extension($params['image_file']));
+      }
+      break;
+    case 'file':
+      if ( isset($params['image_file']) )
+      {
+        $fname_wo_ext = get_filename_wo_extension($params['image_file']);
+        if ( ord($fname_wo_ext)>ord('9') or !preg_match('/^\d+(-|$)/', $fname_wo_ext) )
+        {
+          $url .= $fname_wo_ext;
+          break;
+        }
+      }
+    default:
+      $url .= $params['image_id'];
+  }
+  if ( !isset($params['category'] ) )
+  {// make urls shorter ...
+    unset( $params['flat'] );
+  }
+  $url .= make_section_in_url($params);
+  $url = add_well_known_params_in_url($url, $params);
+  return $url;
+}
+
+/**
+ *adds to the url the chronology and start parameters
+*/
+function add_well_known_params_in_url($url, $params)
+{
+  if ( isset($params['chronology_field']) )
+  {
+    $url .= '/'. $params['chronology_field'];
+    $url .= '-'. $params['chronology_style'];
+    if ( isset($params['chronology_view']) )
+    {
+      $url .= '-'. $params['chronology_view'];
+    }
+    if ( !empty($params['chronology_date']) )
+    {
+      $url .= '-'. implode('-', $params['chronology_date'] );
+    }
+  }
+
+  if (isset($params['flat']))
+  {
+    $url.= '/flat';
+  }
+
+  if (isset($params['start']) and $params['start'] > 0)
+  {
+    $url.= '/start-'.$params['start'];
+  }
+  return $url;
+}
+
+/**
+ * return the section token of an index or picture URL.
+ *
+ * Depending on section, other parameters are required (see function code
+ * for details)
+ *
+ * @param array
+ * @return string
+ */
+function make_section_in_url($params)
+{
+  global $conf;
+  $section_string = '';
+  $section = @$params['section'];
+  if (!isset($section))
+  {
+    $section_of = array(
+      'category' => 'categories',
+      'tags'     => 'tags',
+      'list'     => 'list',
+      'search'   => 'search',
+      );
+
+    foreach ($section_of as $param => $s)
+    {
+      if (isset($params[$param]))
+      {
+        $section = $s;
+      }
+    }
+
+    if (!isset($section))
+    {
+      $section = 'none';
+    }
+  }
+
+  switch($section)
+  {
+    case 'categories' :
+    {
+      if (!isset($params['category']))
+      {
+        $section_string.= '/categories';
+      }
+      else
+      {
+        is_array($params['category']) or trigger_error(
+            'make_section_in_url wrong type for category', E_USER_WARNING
+            );
+        is_numeric($params['category']['id']) or trigger_error(
+            'make_section_in_url category id not numeric', E_USER_WARNING
+            );
+        isset($params['category']['name']) or trigger_error(
+            'make_section_in_url category name not set', E_USER_WARNING
+            );
+
+        array_key_exists('permalink', $params['category']) or trigger_error(
+            'make_section_in_url category permalink not set', E_USER_WARNING
+            );
+
+        $section_string.= '/category/';
+        if ( empty($params['category']['permalink']) )
+        {
+          $section_string.= $params['category']['id'];
+          if ( $conf['category_url_style']=='id-name' )
+          {
+            $section_string.= '-'.str2url($params['category']['name']);
+          }
+        }
+        else
+        {
+          $section_string.= $params['category']['permalink'];
+        }
+      }
+
+      break;
+    }
+    case 'tags' :
+    {
+      if (!isset($params['tags']) or count($params['tags']) == 0)
+      {
+        fatal_error('make_section_in_url: require at least one tag');
+      }
+
+      $section_string.= '/tags';
+
+      foreach ($params['tags'] as $tag)
+      {
+        switch ( $conf['tag_url_style'] )
+        {
+          case 'id':
+            $section_string.= '/'.$tag['id'];
+            break;
+          case 'tag':
+            if (isset($tag['url_name']) and !is_numeric($tag['url_name']) )
+            {
+              $section_string.= '/'.$tag['url_name'];
+              break;
+            }
+          default:
+            $section_string.= '/'.$tag['id'];
+            if (isset($tag['url_name']))
+            {
+              $section_string.= '-'.$tag['url_name'];
+            }
+        }
+      }
+
+      break;
+    }
+    case 'search' :
+    {
+      isset($params['search']) or fatal_error('make_section_in_url: require a search identifier');
+      $section_string.= '/search/'.$params['search'];
+      break;
+    }
+    case 'list' :
+    {
+      isset($params['list']) or fatal_error('make_section_in_url: require a list of items');
+      $section_string.= '/list/'.implode(',', $params['list']);
+      break;
+    }
+    case 'none' :
+    {
+      break;
+    }
+    default :
+    {
+      $section_string.= '/'.$section;
+    }
+  }
+
+  return $section_string;
+}
+
+/**
+ * the reverse of make_section_in_url
+ * returns the 'section' (categories/tags/...) and the data associated with it
+ *
+ * Depending on section, other parameters are returned (category/tags/list/...)
+ *
+ * @param array of url tokens to parse
+ * @param int the index in the array of url tokens; in/out
+ * @return array
+ */
+function parse_section_url( $tokens, &$next_token)
+{
+  $page=array();
+  if (strncmp(@$tokens[$next_token], 'categor', 7)==0 )
+  {
+    $page['section'] = 'categories';
+    $next_token++;
+
+    if (isset($tokens[$next_token]) )
+    {
+      if (preg_match('/^(\d+)(?:-(.+))?$/', $tokens[$next_token], $matches))
+      {
+        if ( isset($matches[2]) )
+          $page['hit_by']['cat_url_name'] = $matches[2];
+        $page['category'] = $matches[1];
+        $next_token++;
+      }
+      else
+      {// try a permalink
+        $maybe_permalinks = array();
+        $current_token = $next_token;
+        while ( isset($tokens[$current_token])
+            and strpos($tokens[$current_token], 'created-')!==0
+            and strpos($tokens[$current_token], 'posted-')!==0
+            and strpos($tokens[$next_token], 'start-')!==0
+            and strpos($tokens[$next_token], 'startcat-')!==0
+            and $tokens[$current_token] != 'flat')
+        {
+          if (empty($maybe_permalinks))
+          {
+            $maybe_permalinks[] = $tokens[$current_token];
+          }
+          else
+          {
+            $maybe_permalinks[] = 
+                $maybe_permalinks[count($maybe_permalinks)-1]
+                . '/' . $tokens[$current_token];
+          }
+          $current_token++;
+        }
+
+        if ( count($maybe_permalinks) )
+        {
+          $cat_id = get_cat_id_from_permalinks($maybe_permalinks, $perma_index);
+          if ( isset($cat_id) )
+          {
+            $next_token += $perma_index+1;
+            $page['category'] = $cat_id;
+            $page['hit_by']['cat_permalink'] = $maybe_permalinks[$perma_index];
+          }
+          else
+          {
+            page_not_found(l10n('Permalink for album not found'));
+          }
+        }
+      }
+    }
+
+    if (isset($page['category']))
+    {
+      $result = get_cat_info($page['category']);
+      if (empty($result))
+      {
+         page_not_found(l10n('Requested album does not exist'));
+      }
+      $page['category']=$result;
+    }
+  }
+  elseif ( 'tags' == @$tokens[$next_token] )
+  {
+    global $conf;
+
+    $page['section'] = 'tags';
+    $page['tags'] = array();
+
+    $next_token++;
+    $i = $next_token;
+
+    $requested_tag_ids = array();
+    $requested_tag_url_names = array();
+
+    while (isset($tokens[$i]))
+    {
+      if (strpos($tokens[$i], 'created-')===0
+           or strpos($tokens[$i], 'posted-')===0
+           or strpos($tokens[$i], 'start-')===0 )
+        break;
+
+      if ( $conf['tag_url_style'] != 'tag' and preg_match('/^(\d+)(?:-(.*)|)$/', $tokens[$i], $matches) )
+      {
+        $requested_tag_ids[] = $matches[1];
+      }
+      else
+      {
+        $requested_tag_url_names[] = $tokens[$i];
+      }
+      $i++;
+    }
+    $next_token = $i;
+
+    if ( empty($requested_tag_ids) && empty($requested_tag_url_names) )
+    {
+      bad_request('at least one tag required');
+    }
+
+    $page['tags'] = find_tags($requested_tag_ids, $requested_tag_url_names);
+    if ( empty($page['tags']) )
+    {
+      page_not_found(l10n('Requested tag does not exist'), get_root_url().'tags.php' );
+    }
+  }
+  elseif ( 'favorites' == @$tokens[$next_token] )
+  {
+    $page['section'] = 'favorites';
+    $next_token++;
+  }
+  elseif ('most_visited' == @$tokens[$next_token])
+  {
+    $page['section'] = 'most_visited';
+    $next_token++;
+  }
+  elseif ('best_rated' == @$tokens[$next_token])
+  {
+    $page['section'] = 'best_rated';
+    $next_token++;
+  }
+  elseif ('recent_pics' == @$tokens[$next_token])
+  {
+    $page['section'] = 'recent_pics';
+    $next_token++;
+  }
+  elseif ('recent_cats' == @$tokens[$next_token])
+  {
+    $page['section'] = 'recent_cats';
+    $next_token++;
+  }
+  elseif ('search' == @$tokens[$next_token])
+  {
+    $page['section'] = 'search';
+    $next_token++;
+
+    preg_match('/(\d+)/', @$tokens[$next_token], $matches);
+    if (!isset($matches[1]))
+    {
+      bad_request('search identifier is missing');
+    }
+    $page['search'] = $matches[1];
+    $next_token++;
+  }
+  elseif ('list' == @$tokens[$next_token])
+  {
+    $page['section'] = 'list';
+    $next_token++;
+
+    $page['list'] = array();
+
+    // No pictures
+    if (empty($tokens[$next_token]))
+    {
+      // Add dummy element list
+      $page['list'][] = -1;
+    }
+    // With pictures list
+    else
+    {
+      if (!preg_match('/^\d+(,\d+)*$/', $tokens[$next_token]))
+      {
+        bad_request('wrong format on list GET parameter');
+      }
+      foreach (explode(',', $tokens[$next_token]) as $image_id)
+      {
+        $page['list'][] = $image_id;
+      }
+    }
+    $next_token++;
+  }
+  return $page;
+}
+
+/**
+ * the reverse of add_well_known_params_in_url
+ * parses start, flat and chronology from url tokens
+*/
+function parse_well_known_params_url($tokens, &$i)
+{
+  $page = array();
+  while (isset($tokens[$i]))
+  {
+    if ( 'flat' == $tokens[$i] )
+    {
+      // indicate a special list of images
+      $page['flat'] = true;
+    }
+    elseif (strpos($tokens[$i], 'created-')===0 or strpos($tokens[$i], 'posted-')===0)
+    {
+      $chronology_tokens = explode('-', $tokens[$i] );
+
+      $page['chronology_field'] = $chronology_tokens[0];
+
+      array_shift($chronology_tokens);
+      $page['chronology_style'] = $chronology_tokens[0];
+
+      array_shift($chronology_tokens);
+      if ( count($chronology_tokens)>0 )
+      {
+        if ('list'==$chronology_tokens[0] or
+            'calendar'==$chronology_tokens[0])
+        {
+          $page['chronology_view'] = $chronology_tokens[0];
+          array_shift($chronology_tokens);
+        }
+        $page['chronology_date'] = $chronology_tokens;
+      }
+    }
+    elseif (preg_match('/^start-(\d+)/', $tokens[$i], $matches))
+    {
+      $page['start'] = $matches[1];
+    }
+    elseif (preg_match('/^startcat-(\d+)/', $tokens[$i], $matches))
+    {
+      $page['startcat'] = $matches[1];
+    }
+    $i++;
+  }
+  return $page;
+}
+
+
+/**
+ * @param id image id
+ * @param what_part string one of 'e' (element), 'r' (representative)
+ */
+function get_action_url($id, $what_part, $download)
+{
+  $params = array(
+        'id' => $id,
+        'part' => $what_part,
+      );
+  if ($download)
+  {
+    $params['download'] = null;
+  }
+  
+  return add_url_params(get_root_url().'action.php', $params);
+}
+
+/*
+ * @param element_info array containing element information from db;
+ * at least 'id', 'path' should be present
+ */
+function get_element_url($element_info)
+{
+  $url = $element_info['path'];
+  if ( !url_is_remote($url) )
+  {
+    $url = embellish_url(get_root_url().$url);
+  }
+  return $url;
+}
+
+
+/**
+ * Indicate to build url with full path
+ *
+ * @param null
+ * @return null
+ */
+function set_make_full_url()
+{
+  global $page;
+
+  if (!isset($page['save_root_path']))
+  {
+    if (isset($page['root_path']))
+    {
+      $page['save_root_path']['path'] = $page['root_path'];
+    }
+    $page['save_root_path']['count'] = 1;
+    $page['root_path'] = get_absolute_root_url();
+  }
+  else
+  {
+    $page['save_root_path']['count'] += 1;
+  }
+}
+
+/**
+ * Restore old parameter to build url with full path
+ *
+ * @param null
+ * @return null
+ */
+function unset_make_full_url()
+{
+  global $page;
+
+  if (isset($page['save_root_path']))
+  {
+    if ($page['save_root_path']['count'] == 1)
+    {
+      if (isset($page['save_root_path']['path']))
+      {
+        $page['root_path'] = $page['save_root_path']['path'];
+      }
+      else
+      {
+        unset($page['root_path']);
+      }
+      unset($page['save_root_path']);
+    }
+    else
+    {
+      $page['save_root_path']['count'] -= 1;
+    }
+  }
+}
+
+/**
+ * Embellish the url argument
+ *
+ * @param $url
+ * @return $url embellished
+ */
+function embellish_url($url)
+{
+  $url = str_replace('/./', '/', $url);
+  while ( ($dotdot = strpos($url, '/../', 1) ) !== false )
+  {
+    $before = strrpos($url, '/', -(strlen($url)-$dotdot+1) );
+    if ($before !== false)
+    {
+      $url = substr_replace($url, '', $before, $dotdot-$before+3);
+    }
+    else
+      break;
+  }
+  return $url;
+}
+
+/**
+ * Returns the 'home page' of this gallery
+ */
+function get_gallery_home_url()
+{
+  global $conf;
+  if (!empty($conf['gallery_url']))
+  {
+    if (url_is_remote($conf['gallery_url']) or $conf['gallery_url'][0]=='/' )
+    {
+      return $conf['gallery_url'];
+    }
+    return get_root_url().$conf['gallery_url'];
+  }
+  else
+  {
+    return make_index_url();
+  }
+}
+?>
Index: /tags/2.6.0RC1/include/functions_user.inc.php
===================================================================
--- /tags/2.6.0RC1/include/functions_user.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/functions_user.inc.php	(revision 25596)
@@ -0,0 +1,1596 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// validate_mail_address:
+//   o verifies whether the given mail address has the
+//     right format. ie someone@domain.com "someone" can contain ".", "-" or
+//     even "_". Exactly as "domain". The extension doesn't have to be
+//     "com". The mail address can also be empty.
+//   o check if address could be empty
+//   o check if address is not used by a other user
+// If the mail address doesn't correspond, an error message is returned.
+//
+function validate_mail_address($user_id, $mail_address)
+{
+  global $conf;
+
+  if (empty($mail_address) and
+      !($conf['obligatory_user_mail_address'] and
+      in_array(script_basename(), array('register', 'profile'))))
+  {
+    return '';
+  }
+
+  if ( !email_check_format($mail_address) )
+  {
+    return l10n('mail address must be like xxx@yyy.eee (example : jack@altern.org)');
+  }
+
+  if (defined("PHPWG_INSTALLED") and !empty($mail_address))
+  {
+    $query = '
+SELECT count(*)
+FROM '.USERS_TABLE.'
+WHERE upper('.$conf['user_fields']['email'].') = upper(\''.$mail_address.'\')
+'.(is_numeric($user_id) ? 'AND '.$conf['user_fields']['id'].' != \''.$user_id.'\'' : '').'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count != 0)
+    {
+      return l10n('this email address is already in use');
+    }
+  }
+}
+
+// validate_login_case:
+//   o check if login is not used by a other user
+// If the login doesn't correspond, an error message is returned.
+//
+function validate_login_case($login)
+{
+  global $conf;
+
+  if (defined("PHPWG_INSTALLED"))
+  {
+    $query = "
+SELECT ".$conf['user_fields']['username']."
+FROM ".USERS_TABLE."
+WHERE LOWER(".stripslashes($conf['user_fields']['username']).") = '".strtolower($login)."'
+;";
+
+    $count = pwg_db_num_rows(pwg_query($query));
+
+    if ($count > 0)
+    {
+      return l10n('this login is already used');
+    }
+  }
+}
+/**
+ * For test on username case sensitivity
+ *
+ * @param : $username typed in by user for identification
+ *
+ * @return : $username found in database
+ *
+ */
+function search_case_username($username)
+{
+  global $conf;
+
+  $username_lo = strtolower($username);
+
+  $SCU_users = array();
+
+  $q = pwg_query("
+    SELECT ".$conf['user_fields']['username']." AS username
+    FROM `".USERS_TABLE."`;
+  ");
+  while ($r = pwg_db_fetch_assoc($q))
+   $SCU_users[$r['username']] = strtolower($r['username']);
+   // $SCU_users is now an associative table where the key is the account as
+   // registered in the DB, and the value is this same account, in lower case
+
+  $users_found = array_keys($SCU_users, $username_lo);
+  // $users_found is now a table of which the values are all the accounts
+  // which can be written in lowercase the same way as $username
+  if (count($users_found) != 1) // If ambiguous, don't allow lowercase writing
+   return $username; // but normal writing will work
+  else
+   return $users_found[0];
+}
+
+/**
+ * create a new user
+ * @param string $login
+ * @param string $password
+ * @param string $mail_adress
+ * @param bool $notify_admin
+ * @param &array $errors
+ * @param bool $notify_user
+ * @return int|bool
+ */
+function register_user($login, $password, $mail_address, $notify_admin=true, &$errors = array(), $notify_user=false)
+{
+  global $conf;
+
+  if ($login == '')
+  {
+    $errors[] = l10n('Please, enter a login');
+  }
+  if (preg_match('/^.* $/', $login))
+  {
+    $errors[] = l10n('login mustn\'t end with a space character');
+  }
+  if (preg_match('/^ .*$/', $login))
+  {
+    $errors[] = l10n('login mustn\'t start with a space character');
+  }
+  if (get_userid($login))
+  {
+    $errors[] = l10n('this login is already used');
+  }
+  if ($login != strip_tags($login))
+  {
+    $errors[] = l10n('html tags are not allowed in login');
+  }
+  $mail_error = validate_mail_address(null, $mail_address);
+  if ('' != $mail_error)
+  {
+    $errors[] = $mail_error;
+  }
+
+  if ($conf['insensitive_case_logon'] == true)
+  {
+    $login_error = validate_login_case($login);
+    if ($login_error != '')
+    {
+      $errors[] = $login_error;
+    }
+  }
+
+  $errors = trigger_event(
+    'register_user_check',
+    $errors,
+    array(
+      'username'=>$login,
+      'password'=>$password,
+      'email'=>$mail_address,
+      )
+    );
+
+  // if no error until here, registration of the user
+  if (count($errors) == 0)
+  {
+    $insert = array(
+      $conf['user_fields']['username'] => pwg_db_real_escape_string($login),
+      $conf['user_fields']['password'] => $conf['password_hash']($password),
+      $conf['user_fields']['email'] => $mail_address
+      );
+
+    single_insert(USERS_TABLE, $insert);
+    $user_id = pwg_db_insert_id();
+
+    // Assign by default groups
+    $query = '
+SELECT id
+  FROM '.GROUPS_TABLE.'
+  WHERE is_default = \''.boolean_to_string(true).'\'
+  ORDER BY id ASC
+;';
+    $result = pwg_query($query);
+
+    $inserts = array();
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $inserts[] = array(
+        'user_id' => $user_id,
+        'group_id' => $row['id']
+        );
+    }
+
+    if (count($inserts) != 0)
+    {
+      mass_inserts(USER_GROUP_TABLE, array('user_id', 'group_id'), $inserts);
+    }
+
+    $override = null;
+    if ($notify_admin and $conf['browser_language'])
+    {
+      if (!get_browser_language($override['language']))
+      {
+        $override=null;
+      }
+    }
+    create_user_infos($user_id, $override);
+
+    if ($notify_admin and $conf['email_admin_on_new_user'])
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+      $admin_url = get_absolute_root_url().'admin.php?page=user_list&username='.$login;
+
+      $keyargs_content = array(
+        get_l10n_args('User: %s', stripslashes($login) ),
+        get_l10n_args('Email: %s', $_POST['mail_address']),
+        get_l10n_args(''),
+        get_l10n_args('Admin: %s', $admin_url),
+        );
+
+      pwg_mail_notification_admins(
+        get_l10n_args('Registration of %s', stripslashes($login) ),
+        $keyargs_content
+        );
+    }
+
+    if ($notify_user and email_check_format($mail_address))
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+            
+      $keyargs_content = array(
+        get_l10n_args('Hello %s,', $login),
+        get_l10n_args('Thank you for registering at %s!', $conf['gallery_title']),
+        get_l10n_args('', ''),
+        get_l10n_args('Here are your connection settings', ''),
+        get_l10n_args('Username: %s', $login),
+        get_l10n_args('Password: %s', $password),
+        get_l10n_args('Email: %s', $mail_address),
+        get_l10n_args('', ''),
+        get_l10n_args('If you think you\'ve received this email in error, please contact us at %s', get_webmaster_mail_address()),
+        );
+        
+      pwg_mail(
+        $mail_address,
+        array(
+          'subject' => '['.$conf['gallery_title'].'] '.l10n('Registration'),
+          'content' => l10n_args($keyargs_content),
+          'content_format' => 'text/plain',
+          )
+        );
+    }
+
+    trigger_action(
+      'register_user',
+      array(
+        'id'=>$user_id,
+        'username'=>$login,
+        'email'=>$mail_address,
+        )
+      );
+      
+    return $user_id;
+  }
+  else
+  {
+    return false;
+  }
+}
+
+function build_user( $user_id, $use_cache )
+{
+  global $conf;
+
+  $user['id'] = $user_id;
+  $user = array_merge( $user, getuserdata($user_id, $use_cache) );
+
+  if ($user['id'] == $conf['guest_id'] and $user['status'] <> 'guest')
+  {
+    $user['status'] = 'guest';
+    $user['internal_status']['guest_must_be_guest'] = true;
+  }
+
+  // Check user theme
+  if (!isset($user['theme_name']))
+  {
+    $user['theme'] = get_default_theme();
+  }
+
+  return $user;
+}
+
+/**
+ * find informations related to the user identifier
+ *
+ * @param int user identifier
+ * @param boolean use_cache
+ * @param array
+ */
+function getuserdata($user_id, $use_cache)
+{
+  global $conf;
+
+  // retrieve basic user data
+  $query = '
+SELECT ';
+  $is_first = true;
+  foreach ($conf['user_fields'] as $pwgfield => $dbfield)
+  {
+    if ($is_first)
+    {
+      $is_first = false;
+    }
+    else
+    {
+      $query.= '
+     , ';
+    }
+    $query.= $dbfield.' AS '.$pwgfield;
+  }
+  $query.= '
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['id'].' = \''.$user_id.'\'';
+
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+
+  // retrieve additional user data ?
+  if ($conf['external_authentification'])
+  {
+    $query = '
+SELECT
+    COUNT(1) AS counter
+  FROM '.USER_INFOS_TABLE.' AS ui
+    LEFT JOIN '.USER_CACHE_TABLE.' AS uc ON ui.user_id = uc.user_id
+    LEFT JOIN '.THEMES_TABLE.' AS t ON t.id = ui.theme
+  WHERE ui.user_id = '.$user_id.'
+  GROUP BY ui.user_id
+;';
+    list($counter) = pwg_db_fetch_row(pwg_query($query));
+    if ($counter != 1)
+    {
+      create_user_infos($user_id);
+    }
+  }
+
+  // retrieve user info
+  $query = '
+SELECT
+    ui.*,
+    uc.*,
+    t.name AS theme_name
+  FROM '.USER_INFOS_TABLE.' AS ui
+    LEFT JOIN '.USER_CACHE_TABLE.' AS uc ON ui.user_id = uc.user_id
+    LEFT JOIN '.THEMES_TABLE.' AS t ON t.id = ui.theme
+  WHERE ui.user_id = '.$user_id.'
+;';
+
+  $result = pwg_query($query);
+  $user_infos_row = pwg_db_fetch_assoc($result);
+
+  // then merge basic + additional user data
+  $userdata = array_merge($row, $user_infos_row);
+
+  foreach ($userdata as &$value)
+  {
+      // If the field is true or false, the variable is transformed into a boolean value.
+      if ($value == 'true')
+      {
+        $value = true;
+      }
+      elseif ($value == 'false')
+      {
+        $value = false;
+      }
+  }
+  unset($value);
+
+  if ($use_cache)
+  {
+    if (!isset($userdata['need_update'])
+        or !is_bool($userdata['need_update'])
+        or $userdata['need_update'] == true)
+    {
+      $userdata['cache_update_time'] = time();
+
+      // Set need update are done
+      $userdata['need_update'] = false;
+
+      $userdata['forbidden_categories'] =
+        calculate_permissions($userdata['id'], $userdata['status']);
+
+      /* now we build the list of forbidden images (this list does not contain
+      images that are not in at least an authorized category)*/
+      $query = '
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id
+  WHERE category_id NOT IN ('.$userdata['forbidden_categories'].')
+    AND level>'.$userdata['level'];
+      $forbidden_ids = array_from_query($query, 'id');
+
+      if ( empty($forbidden_ids) )
+      {
+        $forbidden_ids[] = 0;
+      }
+      $userdata['image_access_type'] = 'NOT IN'; //TODO maybe later
+      $userdata['image_access_list'] = implode(',',$forbidden_ids);
+
+
+      $query = '
+SELECT COUNT(DISTINCT(image_id)) as total
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE category_id NOT IN ('.$userdata['forbidden_categories'].')
+    AND image_id '.$userdata['image_access_type'].' ('.$userdata['image_access_list'].')';
+      list($userdata['nb_total_images']) = pwg_db_fetch_row(pwg_query($query));
+
+
+      // now we update user cache categories
+      $user_cache_cats = get_computed_categories($userdata, null);
+      if ( !is_admin($userdata['status']) )
+      { // for non admins we forbid categories with no image (feature 1053)
+        $forbidden_ids = array();
+        foreach ($user_cache_cats as $cat)
+        {
+          if ($cat['count_images']==0)
+          {
+            $forbidden_ids[] = $cat['cat_id'];
+            remove_computed_category($user_cache_cats, $cat);
+          }
+        }
+        if ( !empty($forbidden_ids) )
+        {
+          if ( empty($userdata['forbidden_categories']) )
+          {
+            $userdata['forbidden_categories'] = implode(',', $forbidden_ids);
+          }
+          else
+          {
+            $userdata['forbidden_categories'] .= ','.implode(',', $forbidden_ids);
+          }
+        }
+      }
+
+      // delete user cache
+      $query = '
+DELETE FROM '.USER_CACHE_CATEGORIES_TABLE.'
+  WHERE user_id = '.$userdata['id'];
+      pwg_query($query);
+
+      // Due to concurrency issues, we ask MySQL to ignore errors on
+      // insert. This may happen when cache needs refresh and that Piwigo is
+      // called "very simultaneously".
+      mass_inserts(
+        USER_CACHE_CATEGORIES_TABLE,
+        array(
+          'user_id', 'cat_id',
+          'date_last', 'max_date_last', 'nb_images', 'count_images', 'nb_categories', 'count_categories'
+          ),
+        $user_cache_cats,
+        array('ignore' => true)
+      );
+
+
+      // update user cache
+      $query = '
+DELETE FROM '.USER_CACHE_TABLE.'
+  WHERE user_id = '.$userdata['id'];
+      pwg_query($query);
+
+      // for the same reason as user_cache_categories, we ignore error on
+      // this insert
+      $query = '
+INSERT IGNORE INTO '.USER_CACHE_TABLE.'
+  (user_id, need_update, cache_update_time, forbidden_categories, nb_total_images,
+    last_photo_date,
+    image_access_type, image_access_list)
+  VALUES
+  ('.$userdata['id'].',\''.boolean_to_string($userdata['need_update']).'\','
+  .$userdata['cache_update_time'].',\''
+  .$userdata['forbidden_categories'].'\','.$userdata['nb_total_images'].','.
+  (empty($userdata['last_photo_date']) ? 'NULL': '\''.$userdata['last_photo_date'].'\'').
+  ',\''.$userdata['image_access_type'].'\',\''.$userdata['image_access_list'].'\')';
+      pwg_query($query);
+    }
+  }
+
+  return $userdata;
+}
+
+/*
+ * deletes favorites of the current user if he's not allowed to see them
+ *
+ * @return void
+ */
+function check_user_favorites()
+{
+  global $user;
+
+  if ($user['forbidden_categories'] == '')
+  {
+    return;
+  }
+
+  // $filter['visible_categories'] and $filter['visible_images']
+  // must be not used because filter <> restriction
+  // retrieving images allowed : belonging to at least one authorized
+  // category
+  $query = '
+SELECT DISTINCT f.image_id
+  FROM '.FAVORITES_TABLE.' AS f INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
+    ON f.image_id = ic.image_id
+  WHERE f.user_id = '.$user['id'].'
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'ic.category_id',
+      ),
+    'AND'
+  ).'
+;';
+  $authorizeds = array_from_query($query, 'image_id');
+
+  $query = '
+SELECT image_id
+  FROM '.FAVORITES_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+  $favorites = array_from_query($query, 'image_id');
+
+  $to_deletes = array_diff($favorites, $authorizeds);
+  if (count($to_deletes) > 0)
+  {
+    $query = '
+DELETE FROM '.FAVORITES_TABLE.'
+  WHERE image_id IN ('.implode(',', $to_deletes).')
+    AND user_id = '.$user['id'].'
+;';
+    pwg_query($query);
+  }
+}
+
+/**
+ * calculates the list of forbidden categories for a given user
+ *
+ * Calculation is based on private categories minus categories authorized to
+ * the groups the user belongs to minus the categories directly authorized
+ * to the user. The list contains at least -1 to be compliant with queries
+ * such as "WHERE category_id NOT IN ($forbidden_categories)"
+ *
+ * @param int user_id
+ * @param string user_status
+ * @return string forbidden_categories
+ */
+function calculate_permissions($user_id, $user_status)
+{
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'private\'
+;';
+  $private_array = array_from_query($query, 'id');
+
+  // retrieve category ids directly authorized to the user
+  $query = '
+SELECT cat_id
+  FROM '.USER_ACCESS_TABLE.'
+  WHERE user_id = '.$user_id.'
+;';
+  $authorized_array = array_from_query($query, 'cat_id');
+
+  // retrieve category ids authorized to the groups the user belongs to
+  $query = '
+SELECT cat_id
+  FROM '.USER_GROUP_TABLE.' AS ug INNER JOIN '.GROUP_ACCESS_TABLE.' AS ga
+    ON ug.group_id = ga.group_id
+  WHERE ug.user_id = '.$user_id.'
+;';
+  $authorized_array =
+    array_merge(
+      $authorized_array,
+      array_from_query($query, 'cat_id')
+      );
+
+  // uniquify ids : some private categories might be authorized for the
+  // groups and for the user
+  $authorized_array = array_unique($authorized_array);
+
+  // only unauthorized private categories are forbidden
+  $forbidden_array = array_diff($private_array, $authorized_array);
+
+  // if user is not an admin, locked categories are forbidden
+  if (!is_admin($user_status))
+  {
+    $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE visible = \'false\'
+;';
+    $result = pwg_query($query);
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $forbidden_array[] = $row['id'];
+    }
+    $forbidden_array = array_unique($forbidden_array);
+  }
+
+  if ( empty($forbidden_array) )
+  {// at least, the list contains 0 value. This category does not exists so
+   // where clauses such as "WHERE category_id NOT IN(0)" will always be
+   // true.
+    $forbidden_array[] = 0;
+  }
+
+  return implode(',', $forbidden_array);
+}
+
+
+/*update counters with a category removal*/
+function remove_computed_category(&$cats, $cat)
+{
+  if ( isset( $cats[$cat['id_uppercat']] ) )
+  {
+    $parent = & $cats[ $cat['id_uppercat'] ];
+    $parent['nb_categories']--;
+
+    do
+    {
+
+      $parent['count_images'] -= $cat['nb_images'];
+      $parent['count_categories'] -= 1+$cat['count_categories'];
+
+      if ( !isset( $cats[$parent['id_uppercat']] ) )
+        break;
+      $parent = & $cats[$parent['id_uppercat']];
+    }
+    while (true);
+  }
+
+  unset($cats[$cat['cat_id']]);
+}
+
+/**
+ * get computed array of categories
+ *
+ * @param array userdata
+ * @param int filter_days number of recent days to filter on or null
+ * @return array
+ */
+function get_computed_categories(&$userdata, $filter_days=null)
+{
+  $query = 'SELECT c.id AS cat_id, id_uppercat';
+  // Count by date_available to avoid count null
+  $query .= ',
+  MAX(date_available) AS date_last, COUNT(date_available) AS nb_images
+FROM '.CATEGORIES_TABLE.' as c
+  LEFT JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON ic.category_id = c.id
+  LEFT JOIN '.IMAGES_TABLE.' AS i
+    ON ic.image_id = i.id
+      AND i.level<='.$userdata['level'];
+
+  if ( isset($filter_days) )
+  {
+    $query .= ' AND i.date_available > '.pwg_db_get_recent_period_expression($filter_days);
+  }
+
+  if ( !empty($userdata['forbidden_categories']) )
+  {
+    $query.= '
+  WHERE c.id NOT IN ('.$userdata['forbidden_categories'].')';
+  }
+
+  $query.= '
+  GROUP BY c.id';
+
+  $result = pwg_query($query);
+
+  $userdata['last_photo_date'] = null;
+  $cats = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['user_id'] = $userdata['id'];
+    $row['nb_categories'] = 0;
+    $row['count_categories'] = 0;
+    $row['count_images'] = (int)$row['nb_images'];
+    $row['max_date_last'] = $row['date_last'];
+    if ($row['date_last'] > $userdata['last_photo_date'])
+    {
+      $userdata['last_photo_date'] = $row['date_last'];
+    }
+
+    $cats[$row['cat_id']] = $row;
+  }
+
+  foreach ($cats as $cat)
+  {
+    if ( !isset( $cat['id_uppercat'] ) )
+      continue;
+
+    $parent = & $cats[ $cat['id_uppercat'] ];
+    $parent['nb_categories']++;
+
+    do
+    {
+      $parent['count_images'] += $cat['nb_images'];
+      $parent['count_categories']++;
+
+      if ((empty($parent['max_date_last'])) or ($parent['max_date_last'] < $cat['date_last']))
+      {
+        $parent['max_date_last'] = $cat['date_last'];
+      }
+
+      if ( !isset( $parent['id_uppercat'] ) )
+        break;
+      $parent = & $cats[$parent['id_uppercat']];
+    }
+    while (true);
+    unset($parent);
+  }
+
+  if ( isset($filter_days) )
+  {
+    foreach ($cats as $category)
+    {
+      if (empty($category['max_date_last']))
+      {
+        remove_computed_category($cats, $category);
+      }
+    }
+  }
+  return $cats;
+}
+
+/**
+ * returns user identifier thanks to his name, false if not found
+ *
+ * @param string username
+ * @param int user identifier
+ */
+function get_userid($username)
+{
+  global $conf;
+
+  $username = pwg_db_real_escape_string($username);
+
+  $query = '
+SELECT '.$conf['user_fields']['id'].'
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['username'].' = \''.$username.'\'
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return false;
+  }
+  else
+  {
+    list($user_id) = pwg_db_fetch_row($result);
+    return $user_id;
+  }
+}
+
+function get_userid_by_email($email)
+{
+  global $conf;
+
+  $email = pwg_db_real_escape_string($email);
+
+  $query = '
+SELECT
+    '.$conf['user_fields']['id'].'
+  FROM '.USERS_TABLE.'
+  WHERE UPPER('.$conf['user_fields']['email'].') = UPPER(\''.$email.'\')
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return false;
+  }
+  else
+  {
+    list($user_id) = pwg_db_fetch_row($result);
+    return $user_id;
+  }
+}
+
+/*
+ * Returns a array with default user value
+ *
+ * @param convert_str allows to convert string value if necessary
+ */
+function get_default_user_info($convert_str = true)
+{
+  global $cache, $conf;
+
+  if (!isset($cache['default_user']))
+  {
+    $query = '
+SELECT *
+  FROM '.USER_INFOS_TABLE.'
+  WHERE user_id = '.$conf['default_user_id'].'
+;';
+
+    $result = pwg_query($query);
+
+    if (pwg_db_num_rows($result) > 0)
+    {
+      $cache['default_user'] = pwg_db_fetch_assoc($result);
+
+      unset($cache['default_user']['user_id']);
+      unset($cache['default_user']['status']);
+      unset($cache['default_user']['registration_date']);
+    }
+    else
+    {
+      $cache['default_user'] = false;
+    }
+  }
+
+  if (is_array($cache['default_user']) and $convert_str)
+  {
+    $default_user = $cache['default_user'];
+    foreach ($default_user as &$value)
+    {
+      // If the field is true or false, the variable is transformed into a boolean value.
+      if ($value == 'true')
+      {
+        $value = true;
+      }
+      elseif ($value == 'false')
+      {
+        $value = false;
+      }
+    }
+    return $default_user;
+  }
+  else
+  {
+    return $cache['default_user'];
+  }
+}
+
+/*
+ * Returns a default user value
+ *
+ * @param value_name: name of value
+ * @param sos_value: value used if don't exist value
+ */
+function get_default_user_value($value_name, $sos_value)
+{
+  $default_user = get_default_user_info(true);
+  if ($default_user === false or empty($default_user[$value_name]))
+  {
+    return $sos_value;
+  }
+  else
+  {
+   return $default_user[$value_name];
+  }
+}
+
+/*
+ * Returns the default template value
+ *
+ */
+function get_default_theme()
+{
+  $theme = get_default_user_value('theme', PHPWG_DEFAULT_TEMPLATE);
+  if (check_theme_installed($theme))
+  {
+    return $theme;
+  }
+
+  // let's find the first available theme
+  $active_themes = get_pwg_themes();
+  foreach (array_keys(get_pwg_themes()) as $theme_id)
+  {
+    return $theme_id;
+  }
+}
+
+/*
+ * Returns the default language value
+ *
+ */
+function get_default_language()
+{
+  return get_default_user_value('language', PHPWG_DEFAULT_LANGUAGE);
+}
+
+/**
+  * Returns true if the browser language value is set into param $lang
+  *
+  */
+function get_browser_language(&$lang)
+{
+  $browser_language = substr(@$_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
+  foreach (get_languages() as $language_code => $language_name)
+  {
+    if (substr($language_code, 0, 2) == $browser_language)
+    {
+      $lang = $language_code;
+      return true;
+    }
+  }
+  return false;
+}
+
+/**
+ * add user informations based on default values
+ *
+ * @param int user_id / array of user_if
+ * @param array of values used to override default user values
+ */
+function create_user_infos($arg_id, $override_values = null)
+{
+  global $conf;
+
+  if (is_array($arg_id))
+  {
+    $user_ids = $arg_id;
+  }
+  else
+  {
+    $user_ids = array();
+    if (is_numeric($arg_id))
+    {
+      $user_ids[] = $arg_id;
+    }
+  }
+
+  if (!empty($user_ids))
+  {
+    $inserts = array();
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+    $default_user = get_default_user_info(false);
+    if ($default_user === false)
+    {
+      // Default on structure are used
+      $default_user = array();
+    }
+
+    if (!is_null($override_values))
+    {
+      $default_user = array_merge($default_user, $override_values);
+    }
+
+    foreach ($user_ids as $user_id)
+    {
+      $level= isset($default_user['level']) ? $default_user['level'] : 0;
+      if ($user_id == $conf['webmaster_id'])
+      {
+        $status = 'webmaster';
+        $level = max( $conf['available_permission_levels'] );
+      }
+      else if (($user_id == $conf['guest_id']) or
+               ($user_id == $conf['default_user_id']))
+      {
+        $status = 'guest';
+      }
+      else
+      {
+        $status = 'normal';
+      }
+
+      $insert = array_merge(
+        $default_user,
+        array(
+          'user_id' => $user_id,
+          'status' => $status,
+          'registration_date' => $dbnow,
+          'level' => $level
+          ));
+
+      $inserts[] = $insert;
+    }
+
+    mass_inserts(USER_INFOS_TABLE, array_keys($inserts[0]), $inserts);
+  }
+}
+
+/**
+ * returns the auto login key or false on error
+ * @param int user_id
+ * @param time_t time
+ * @param string [out] username
+*/
+function calculate_auto_login_key($user_id, $time, &$username)
+{
+  global $conf;
+  $query = '
+SELECT '.$conf['user_fields']['username'].' AS username
+  , '.$conf['user_fields']['password'].' AS password
+FROM '.USERS_TABLE.'
+WHERE '.$conf['user_fields']['id'].' = '.$user_id;
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result) > 0)
+  {
+    $row = pwg_db_fetch_assoc($result);
+    $username = stripslashes($row['username']);
+    $data = $time.$user_id.$username;
+    $key = base64_encode( hash_hmac('sha1', $data, $conf['secret_key'].$row['password'],true) );
+    return $key;
+  }
+  return false;
+}
+
+/*
+ * Performs all required actions for user login
+ * @param int user_id
+ * @param bool remember_me
+ * @return void
+*/
+function log_user($user_id, $remember_me)
+{
+  global $conf, $user;
+
+  if ($remember_me and $conf['authorize_remembering'])
+  {
+    $now = time();
+    $key = calculate_auto_login_key($user_id, $now, $username);
+    if ($key!==false)
+    {
+      $cookie = $user_id.'-'.$now.'-'.$key;
+      if (version_compare(PHP_VERSION, '5.2', '>=') )
+      {
+        setcookie($conf['remember_me_name'],
+            $cookie,
+            time()+$conf['remember_me_length'],
+            cookie_path(),ini_get('session.cookie_domain'),ini_get('session.cookie_secure'),
+            ini_get('session.cookie_httponly')
+          );
+      }
+      else
+      {
+        setcookie($conf['remember_me_name'],
+            $cookie,
+            time()+$conf['remember_me_length'],
+            cookie_path(),ini_get('session.cookie_domain'),ini_get('session.cookie_secure')
+          );
+      }
+    }
+  }
+  else
+  { // make sure we clean any remember me ...
+    setcookie($conf['remember_me_name'], '', 0, cookie_path(),ini_get('session.cookie_domain'));
+  }
+  if ( session_id()!="" )
+  { // we regenerate the session for security reasons
+    // see http://www.acros.si/papers/session_fixation.pdf
+    session_regenerate_id(true);
+  }
+  else
+  {
+    session_start();
+  }
+  $_SESSION['pwg_uid'] = (int)$user_id;
+
+  $user['id'] = $_SESSION['pwg_uid'];
+  trigger_action('user_login', $user['id']);
+}
+
+/*
+ * Performs auto-connexion when cookie remember_me exists
+ * @return true/false
+*/
+function auto_login() {
+  global $conf;
+
+  if ( isset( $_COOKIE[$conf['remember_me_name']] ) )
+  {
+    $cookie = explode('-', stripslashes($_COOKIE[$conf['remember_me_name']]));
+    if ( count($cookie)===3
+        and is_numeric(@$cookie[0]) /*user id*/
+        and is_numeric(@$cookie[1]) /*time*/
+        and time()-$conf['remember_me_length']<=@$cookie[1]
+        and time()>=@$cookie[1] /*cookie generated in the past*/ )
+    {
+      $key = calculate_auto_login_key( $cookie[0], $cookie[1], $username );
+      if ($key!==false and $key===$cookie[2])
+      {
+        log_user($cookie[0], true);
+        trigger_action('login_success', stripslashes($username));
+        return true;
+      }
+    }
+    setcookie($conf['remember_me_name'], '', 0, cookie_path(),ini_get('session.cookie_domain'));
+  }
+  return false;
+}
+
+/**
+ * hashes a password, with the PasswordHash class from phpass security
+ * library. We use an "pwg_" prefix because function password_hash is
+ * planned for PHP 5.5. Code inspired from Wordpress.
+ *
+ * @param string $password Plain text user password to hash
+ * @return string The hash string of the password
+ */
+function pwg_password_hash($password)
+{
+  global $pwg_hasher;
+
+  if (empty($pwg_hasher))
+  {
+    require_once(PHPWG_ROOT_PATH.'include/passwordhash.class.php');
+
+    // We use the portable hash feature from phpass because we can't be sure
+    // Piwigo runs on PHP 5.3+ (and won't run on an older version in the
+    // future)
+    $pwg_hasher = new PasswordHash(13, true);
+  }
+
+  return $pwg_hasher->HashPassword($password);
+}
+
+/**
+ * Verifies a password, with the PasswordHash class from phpass security
+ * library. We use an "pwg_" prefix because function password_verify is
+ * planned for PHP 5.5. Code inspired from Wordpress.
+ *
+ * @param string $password Plain text user password to hash
+ * @param string $hash may be md5 or phpass hashed password
+ * @param integer $account_id only useful to update password hash from md5 to phpass
+ * @return string The hash string of the password
+ */
+function pwg_password_verify($password, $hash, $user_id=null)
+{
+  global $conf, $pwg_hasher;
+
+  // If the password has not been hashed with the current algorithm.
+  if (strpos('$P', $hash) !== 0)
+  {
+    if (!empty($conf['pass_convert']))
+    {
+      $check = ($hash == $conf['pass_convert']($password));
+    }
+    else
+    {
+      $check = ($hash == md5($password));
+    }
+
+    if ($check)
+    {
+      if (!isset($user_id) or $conf['external_authentification'])
+      {
+        return true;
+      }
+      
+      // Rehash using new hash.
+      $hash = pwg_password_hash($password);
+
+      single_update(
+        USERS_TABLE,
+        array('password' => $hash),
+        array('id' => $user_id)
+        );
+    }
+  }
+
+  // If the stored hash is longer than an MD5, presume the
+  // new style phpass portable hash.
+  if (empty($pwg_hasher))
+  {
+    require_once(PHPWG_ROOT_PATH.'include/passwordhash.class.php');
+
+    // We use the portable hash feature
+    $pwg_hasher = new PasswordHash(13, true);
+  }
+
+  return $pwg_hasher->CheckPassword($password, $hash);
+}
+
+/**
+ * Tries to login a user given username and password (must be MySql escaped)
+ * return true on success
+ */
+function try_log_user($username, $password, $remember_me)
+{
+  return trigger_event('try_log_user', false, $username, $password, $remember_me);
+}
+
+add_event_handler('try_log_user', 'pwg_login', EVENT_HANDLER_PRIORITY_NEUTRAL, 4);
+
+function pwg_login($success, $username, $password, $remember_me)
+{
+  if ($success===true)
+  {
+    return true;
+  }
+
+  // we force the session table to be clean
+  pwg_session_gc();
+
+  global $conf;
+  // retrieving the encrypted password of the login submitted
+  $query = '
+SELECT '.$conf['user_fields']['id'].' AS id,
+       '.$conf['user_fields']['password'].' AS password
+  FROM '.USERS_TABLE.'
+  WHERE '.$conf['user_fields']['username'].' = \''.pwg_db_real_escape_string($username).'\'
+;';
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+  if ($conf['password_verify']($password, $row['password'], $row['id']))
+  {
+    log_user($row['id'], $remember_me);
+    trigger_action('login_success', stripslashes($username));
+    return true;
+  }
+  trigger_action('login_failure', stripslashes($username));
+  return false;
+}
+
+/** Performs all the cleanup on user logout */
+function logout_user()
+{
+  global $conf;
+
+  trigger_action('user_logout', @$_SESSION['pwg_uid']);
+
+  $_SESSION = array();
+  session_unset();
+  session_destroy();
+  setcookie(session_name(),'',0,
+      ini_get('session.cookie_path'),
+      ini_get('session.cookie_domain')
+    );
+  setcookie($conf['remember_me_name'], '', 0, cookie_path(),ini_get('session.cookie_domain'));
+}
+
+/*
+ * Return user status used in this library
+ * @return string
+*/
+function get_user_status($user_status)
+{
+  global $user;
+
+  if (empty($user_status))
+  {
+    if (isset($user['status']))
+    {
+      $user_status = $user['status'];
+    }
+    else
+    {
+      // swicth to default value
+      $user_status = '';
+    }
+  }
+  return $user_status;
+}
+
+/*
+ * Return access_type definition of user
+ * Test does with user status
+ * @return bool
+*/
+function get_access_type_status($user_status='')
+{
+  global $conf;
+
+  switch (get_user_status($user_status))
+  {
+    case 'guest':
+    {
+      $access_type_status =
+        ($conf['guest_access'] ? ACCESS_GUEST : ACCESS_FREE);
+      break;
+    }
+    case 'generic':
+    {
+      $access_type_status = ACCESS_GUEST;
+      break;
+    }
+    case 'normal':
+    {
+      $access_type_status = ACCESS_CLASSIC;
+      break;
+    }
+    case 'admin':
+    {
+      $access_type_status = ACCESS_ADMINISTRATOR;
+      break;
+    }
+    case 'webmaster':
+    {
+      $access_type_status = ACCESS_WEBMASTER;
+      break;
+    }
+    default:
+    {
+      $access_type_status = ACCESS_FREE;
+      break;
+    }
+  }
+
+  return $access_type_status;
+}
+
+/*
+ * Return if user have access to access_type definition
+ * Test does with user status
+ * @return bool
+*/
+function is_autorize_status($access_type, $user_status = '')
+{
+  return (get_access_type_status($user_status) >= $access_type);
+}
+
+/*
+ * Check if user have access to access_type definition
+ * Stop action if there are not access
+ * Test does with user status
+ * @return none
+*/
+function check_status($access_type, $user_status = '')
+{
+  if (!is_autorize_status($access_type, $user_status))
+  {
+    access_denied();
+  }
+}
+
+/*
+ * Return if user is generic
+ * @return bool
+*/
+ function is_generic($user_status = '')
+{
+  return get_user_status($user_status) == 'generic';
+}
+
+/*
+ * Return if user is only a guest
+ * @return bool
+*/
+ function is_a_guest($user_status = '')
+{
+  return get_user_status($user_status) == 'guest';
+}
+
+/*
+ * Return if user is, at least, a classic user
+ * @return bool
+*/
+ function is_classic_user($user_status = '')
+{
+  return is_autorize_status(ACCESS_CLASSIC, $user_status);
+}
+
+/*
+ * Return if user is, at least, an administrator
+ * @return bool
+*/
+ function is_admin($user_status = '')
+{
+  return is_autorize_status(ACCESS_ADMINISTRATOR, $user_status);
+}
+
+/*
+ * Return if user is, at least, a webmaster
+ * @return bool
+*/
+ function is_webmaster($user_status = '')
+{
+  return is_autorize_status(ACCESS_WEBMASTER, $user_status);
+}
+
+/*
+ * Adviser status is depreciated from piwigo 2.2
+ * @return false
+*/
+function is_adviser()
+{
+  // TODO for Piwigo 2.4 : trigger a warning. We don't do it on Piwigo 2.3
+  // to avoid changes for plugin contributors
+  // trigger_error('call to obsolete function is_adviser', E_USER_WARNING);
+  return false;
+}
+
+/*
+ * Return if current user can edit/delete/validate a comment
+ * @param action edit/delete/validate
+ * @return bool
+ */
+function can_manage_comment($action, $comment_author_id)
+{
+  global $user, $conf;
+
+  if (is_a_guest())
+  {
+    return false;
+  }
+
+  if (!in_array($action, array('delete','edit', 'validate')))
+  {
+    return false;
+  }
+
+  if (is_admin())
+  {
+    return true;
+  }
+
+  if ('edit' == $action and $conf['user_can_edit_comment'])
+  {
+    if ($comment_author_id == $user['id']) {
+      return true;
+    }
+  }
+
+  if ('delete' == $action and $conf['user_can_delete_comment'])
+  {
+    if ($comment_author_id == $user['id']) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+/*
+ * Return mail address as display text
+ * @return string
+*/
+function get_email_address_as_display_text($email_address)
+{
+  global $conf;
+
+  if (!isset($email_address) or (trim($email_address) == ''))
+  {
+    return '';
+  }
+  else
+  {
+    return $email_address;
+  }
+}
+
+/*
+ * Compute sql where condition with restrict and filter data. "FandF" means
+ * Forbidden and Filters.
+ *
+ * @param array condition_fields: read function body
+ * @param string prefix_condition: prefixes sql if condition is not empty
+ * @param boolean force_one_condition: use at least "1 = 1"
+ *
+ * @return string sql where/conditions
+ */
+function get_sql_condition_FandF(
+  $condition_fields,
+  $prefix_condition = null,
+  $force_one_condition = false
+  )
+{
+  global $user, $filter;
+
+  $sql_list = array();
+
+  foreach ($condition_fields as $condition => $field_name)
+  {
+    switch($condition)
+    {
+      case 'forbidden_categories':
+      {
+        if (!empty($user['forbidden_categories']))
+        {
+          $sql_list[] =
+            $field_name.' NOT IN ('.$user['forbidden_categories'].')';
+        }
+        break;
+      }
+      case 'visible_categories':
+      {
+        if (!empty($filter['visible_categories']))
+        {
+          $sql_list[] =
+            $field_name.' IN ('.$filter['visible_categories'].')';
+        }
+        break;
+      }
+      case 'visible_images':
+        if (!empty($filter['visible_images']))
+        {
+          $sql_list[] =
+            $field_name.' IN ('.$filter['visible_images'].')';
+        }
+        // note there is no break - visible include forbidden
+      case 'forbidden_images':
+        if (
+            !empty($user['image_access_list'])
+            or $user['image_access_type']!='NOT IN'
+            )
+        {
+          $table_prefix=null;
+          if ($field_name=='id')
+          {
+            $table_prefix = '';
+          }
+          elseif ($field_name=='i.id')
+          {
+            $table_prefix = 'i.';
+          }
+          if ( isset($table_prefix) )
+          {
+            $sql_list[]=$table_prefix.'level<='.$user['level'];
+          }
+          elseif ( !empty($user['image_access_list']) and !empty($user['image_access_type']) )
+          {
+            $sql_list[]=$field_name.' '.$user['image_access_type']
+                .' ('.$user['image_access_list'].')';
+          }
+        }
+        break;
+      default:
+      {
+        die('Unknow condition');
+        break;
+      }
+    }
+  }
+
+  if (count($sql_list) > 0)
+  {
+    $sql = '('.implode(' AND ', $sql_list).')';
+  }
+  else
+  {
+    $sql = $force_one_condition ? '1 = 1' : '';
+  }
+
+  if (isset($prefix_condition) and !empty($sql))
+  {
+    $sql = $prefix_condition.' '.$sql;
+  }
+
+  return $sql;
+}
+
+/** @return the sql condition to show recent photos/albums based on user preferences and latest available photo.*/
+function get_recent_photos_sql($db_field)
+{
+  global $user;
+  if (!isset($user['last_photo_date']))
+  {
+    return '0=1';
+  }
+  return $db_field.'>=LEAST('
+    .pwg_db_get_recent_period_expression($user['recent_period'])
+    .','.pwg_db_get_recent_period_expression(1,$user['last_photo_date']).')';
+}
+
+/**
+ * search an available activation_key
+ *
+ * @return string
+ */
+function get_user_activation_key()
+{
+  while (true)
+  {
+    $key = generate_key(20);
+    $query = '
+SELECT COUNT(*)
+  FROM '.USER_INFOS_TABLE.'
+  WHERE activation_key = \''.$key.'\'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if (0 == $count)
+    {
+      return $key;
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/index.php
===================================================================
--- /tags/2.6.0RC1/include/index.php	(revision 25596)
+++ /tags/2.6.0RC1/include/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/include/jshrink.class.php
===================================================================
--- /tags/2.6.0RC1/include/jshrink.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/jshrink.class.php	(revision 25596)
@@ -0,0 +1,469 @@
+<?php
+/**
+ * JShrink
+ *
+ * Copyright (c) 2009-2012, Robert Hafner <tedivm@tedivm.com>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   * Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in
+ *     the documentation and/or other materials provided with the
+ *     distribution.
+ *
+ *   * Neither the name of Robert Hafner nor the names of his
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package    JShrink
+ * @author     Robert Hafner <tedivm@tedivm.com>
+ * @copyright  2009-2012 Robert Hafner <tedivm@tedivm.com>
+ * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
+ * @link       https://github.com/tedivm/JShrink
+ * @version    Release: 0.5.1
+ */
+
+
+/**
+ * JShrink_Minifier
+ *
+ * Usage - JShrink_Minifier::minify($js);
+ * Usage - JShrink_Minifier::minify($js, $options);
+ * Usage - JShrink_Minifier::minify($js, array('flaggedComments' => false));
+ *
+ * @package	JShrink
+ * @author	Robert Hafner <tedivm@tedivm.com>
+ * @license	http://www.opensource.org/licenses/bsd-license.php  BSD License
+ */
+class JShrink_Minifier
+{
+	/**
+	 * The input javascript to be minified.
+	 *
+	 * @var string
+	 */
+	protected $input;
+
+	/**
+	 * The location of the character (in the input string) that is next to be
+     * processed.
+	 *
+	 * @var int
+	 */
+	protected $index = 0;
+
+	/**
+	 * The first of the characters currently being looked at.
+	 *
+	 * @var string
+	 */
+	protected $a = '';
+
+
+	/**
+	 * The next character being looked at (after a);
+	 *
+	 * @var string
+	 */
+	protected $b = '';
+
+	/**
+	 * This character is only active when certain look ahead actions take place.
+	 *
+	 *  @var string
+	 */
+	protected $c;
+
+	/**
+	 * Contains the options for the current minification process.
+	 *
+	 * @var array
+	 */
+	protected $options;
+
+	/**
+	 * Contains the default options for minification. This array is merged with
+     * the one passed in by the user to create the request specific set of
+     * options (stored in the $options attribute).
+	 *
+	 * @var array
+	 */
+	static protected $defaultOptions = array('flaggedComments' => true);
+
+	/**
+	 * Contains a copy of the JShrink object used to run minification. This is
+     * only used internally, and is only stored for performance reasons. There
+     * is no internal data shared between minification requests.
+	 */
+	static protected $jshrink;
+
+	/**
+	 * Minifier::minify takes a string containing javascript and removes
+     * unneeded characters in order to shrink the code without altering it's
+     * functionality.
+	 */
+	static public function minify($js, $options = array())
+	{
+		try{
+			ob_start();
+			$currentOptions = array_merge(self::$defaultOptions, $options);
+
+			if(!isset(self::$jshrink))
+				self::$jshrink = new JShrink_Minifier();
+
+			self::$jshrink->breakdownScript($js, $currentOptions);
+			return ob_get_clean();
+
+		}catch(Exception $e){
+			if(isset(self::$jshrink))
+				self::$jshrink->clean();
+
+			ob_end_clean();
+			throw $e;
+		}
+	}
+
+	/**
+	 * Processes a javascript string and outputs only the required characters,
+     * stripping out all unneeded characters.
+	 *
+	 * @param string $js The raw javascript to be minified
+	 * @param array $currentOptions Various runtime options in an associative array
+	 */
+	protected function breakdownScript($js, $currentOptions)
+	{
+		// reset work attributes in case this isn't the first run.
+		$this->clean();
+
+		$this->options = $currentOptions;
+
+		$js = str_replace("\r\n", "\n", $js);
+		$this->input = str_replace("\r", "\n", $js);
+
+
+		$this->a = $this->getReal();
+
+		// the only time the length can be higher than 1 is if a conditional
+        // comment needs to be displayed and the only time that can happen for
+        // $a is on the very first run
+		while(strlen($this->a) > 1)
+		{
+			echo $this->a;
+			$this->a = $this->getReal();
+		}
+
+		$this->b = $this->getReal();
+
+		while($this->a !== false && !is_null($this->a) && $this->a !== '')
+		{
+
+			// now we give $b the same check for conditional comments we gave $a
+            // before we began looping
+			if(strlen($this->b) > 1)
+			{
+				echo $this->a . $this->b;
+				$this->a = $this->getReal();
+				$this->b = $this->getReal();
+				continue;
+			}
+
+			switch($this->a)
+			{
+				// new lines
+				case "\n":
+					// if the next line is something that can't stand alone
+                    // preserve the newline
+					if(strpos('(-+{[@', $this->b) !== false)
+					{
+						echo $this->a;
+						$this->saveString();
+						break;
+					}
+
+					// if its a space we move down to the string test below
+					if($this->b === ' ')
+						break;
+
+					// otherwise we treat the newline like a space
+
+				case ' ':
+					if(self::isAlphaNumeric($this->b))
+						echo $this->a;
+
+					$this->saveString();
+					break;
+
+				default:
+					switch($this->b)
+					{
+						case "\n":
+							if(strpos('}])+-"\'', $this->a) !== false)
+							{
+								echo $this->a;
+								$this->saveString();
+								break;
+							}else{
+								if(self::isAlphaNumeric($this->a))
+								{
+									echo $this->a;
+									$this->saveString();
+								}
+							}
+							break;
+
+						case ' ':
+							if(!self::isAlphaNumeric($this->a))
+								break;
+
+						default:
+							// check for some regex that breaks stuff
+							if($this->a == '/' && ($this->b == '\'' || $this->b == '"'))
+							{
+								$this->saveRegex();
+								continue;
+							}
+
+							echo $this->a;
+							$this->saveString();
+							break;
+					}
+			}
+
+			// do reg check of doom
+			$this->b = $this->getReal();
+
+			if(($this->b == '/' && strpos('(,=:[!&|?', $this->a) !== false))
+				$this->saveRegex();
+		}
+		$this->clean();
+	}
+
+	/**
+	 * Returns the next string for processing based off of the current index.
+	 *
+	 * @return string
+	 */
+	protected function getChar()
+	{
+		if(isset($this->c))
+		{
+			$char = $this->c;
+			unset($this->c);
+		}else{
+			$tchar = substr($this->input, $this->index, 1);
+			if(isset($tchar) && $tchar !== false)
+			{
+				$char = $tchar;
+				$this->index++;
+			}else{
+				return false;
+			}
+		}
+
+		if($char !== "\n" && ord($char) < 32)
+			return ' ';
+
+		return $char;
+	}
+
+	/**
+	 * This function gets the next "real" character. It is essentially a wrapper
+     * around the getChar function that skips comments. This has significant
+     * performance benefits as the skipping is done using native functions (ie,
+     * c code) rather than in script php.
+	 *
+	 * @return string Next 'real' character to be processed.
+	 */
+	protected function getReal()
+	{
+		$startIndex = $this->index;
+		$char = $this->getChar();
+
+		if($char == '/')
+		{
+			$this->c = $this->getChar();
+
+			if($this->c == '/')
+			{
+				$thirdCommentString = substr($this->input, $this->index, 1);
+
+				// kill rest of line
+				$char = $this->getNext("\n");
+
+				if($thirdCommentString == '@')
+				{
+					$endPoint = ($this->index) - $startIndex;
+					unset($this->c);
+					$char = "\n" . substr($this->input, $startIndex, $endPoint);
+				}else{
+					$char = $this->getChar();
+					$char = $this->getChar();
+				}
+
+			}elseif($this->c == '*'){
+
+				$this->getChar(); // current C
+				$thirdCommentString = $this->getChar();
+
+				if($thirdCommentString == '@')
+				{
+					// conditional comment
+
+					// we're gonna back up a bit and and send the comment back,
+                    // where the first char will be echoed and the rest will be
+                    // treated like a string
+					$this->index = $this->index-2;
+					return '/';
+
+				}elseif($this->getNext('*/')){
+				// kill everything up to the next */
+
+					$this->getChar(); // get *
+					$this->getChar(); // get /
+
+					$char = $this->getChar(); // get next real character
+
+					// if YUI-style comments are enabled we reinsert it into the stream
+					if($this->options['flaggedComments'] && $thirdCommentString == '!')
+					{
+						$endPoint = ($this->index - 1) - $startIndex;
+						echo "\n" . substr($this->input, $startIndex, $endPoint) . "\n";
+					}
+
+				}else{
+					$char = false;
+				}
+
+				if($char === false)
+					throw new RuntimeException('Stray comment. ' . $this->index);
+
+				// if we're here c is part of the comment and therefore tossed
+				if(isset($this->c))
+					unset($this->c);
+			}
+		}
+		return $char;
+	}
+
+	/**
+	 * Pushes the index ahead to the next instance of the supplied string. If it
+     * is found the first character of the string is returned.
+	 *
+	 * @return string|false Returns the first character of the string or false.
+	 */
+	protected function getNext($string)
+	{
+		$pos = strpos($this->input, $string, $this->index);
+
+		if($pos === false)
+			return false;
+
+		$this->index = $pos;
+		return substr($this->input, $this->index, 1);
+	}
+
+	/**
+	 * When a javascript string is detected this function crawls for the end of
+     * it and saves the whole string.
+	 *
+	 */
+	protected function saveString()
+	{
+		$this->a = $this->b;
+		if($this->a == "'" || $this->a == '"') // is the character a quote
+		{
+			// save literal string
+			$stringType = $this->a;
+
+			while(1)
+			{
+				echo $this->a;
+				$this->a = $this->getChar();
+
+				switch($this->a)
+				{
+					case $stringType:
+						break 2;
+
+					case "\n":
+						throw new RuntimeException('Unclosed string. ' . $this->index);
+						break;
+
+					case '\\':
+						echo $this->a;
+						$this->a = $this->getChar();
+				}
+			}
+		}
+	}
+
+	/**
+	 * When a regular expression is detected this funcion crawls for the end of
+     * it and saves the whole regex.
+	 */
+	protected function saveRegex()
+	{
+		echo $this->a . $this->b;
+
+		while(($this->a = $this->getChar()) !== false)
+		{
+			if($this->a == '/')
+				break;
+
+			if($this->a == '\\')
+			{
+				echo $this->a;
+				$this->a = $this->getChar();
+			}
+
+			if($this->a == "\n")
+				throw new RuntimeException('Stray regex pattern. ' . $this->index);
+
+			echo $this->a;
+		}
+		$this->b = $this->getReal();
+	}
+
+	/**
+	 * Resets attributes that do not need to be stored between requests so that
+     * the next request is ready to go.
+	 */
+	protected function clean()
+	{
+		unset($this->input);
+		$this->index = 0;
+		$this->a = $this->b = '';
+		unset($this->c);
+		unset($this->options);
+	}
+
+	/**
+	 * Checks to see if a character is alphanumeric.
+	 *
+	 * @return bool
+	 */
+	static protected function isAlphaNumeric($char)
+	{
+		return preg_match('/^[\w\$]$/', $char) === 1 || $char == '/';
+	}
+
+}
Index: /tags/2.6.0RC1/include/mdetect.php
===================================================================
--- /tags/2.6.0RC1/include/mdetect.php	(revision 25596)
+++ /tags/2.6.0RC1/include/mdetect.php	(revision 25596)
@@ -0,0 +1,1033 @@
+<?php
+
+/* *******************************************
+// Copyright 2010-2012, Anthony Hand
+//
+// File version date: April 23, 2012
+//              Update:
+//              - Updated DetectAmazonSilk(): Fixed an issue in the detection logic.  
+//
+// File version date: April 22, 2012 - Second update
+//              Update: To address additional Kindle issues...
+//              - Updated DetectRichCSS(): Excluded e-Ink Kindle devices. 
+//              - Created DetectAmazonSilk(): Created to detect Kindle Fire devices in Silk mode. 
+//              - Updated DetectMobileQuick(): Updated to include e-Ink Kindle devices and the Kindle Fire in Silk mode.  
+//
+// File version date: April 11, 2012
+//              Update: 
+//              - Added a new variable for the new BlackBerry Curve Touch (9380): deviceBBCurveTouch. 
+//              - Updated DetectBlackBerryTouch() to support the new BlackBerry Curve Touch (9380). 
+//              - Updated DetectKindle(): Added the missing 'this' class identifier for the DetectAndroid() call.
+//
+// File version date: January 21, 2012
+//              Update: 
+//              - Added the constructor method per new features in PHP 5.0: __construct(). 
+//              - Moved Windows Phone 7 to the iPhone Tier. WP7.5's IE 9-based browser is good enough now.  
+//              - Added a new variable for 2 versions of the new BlackBerry Bold Touch (9900 and 9930): deviceBBBoldTouch. 
+//              - Updated DetectBlackBerryTouch() to support the 2 versions of the new BlackBerry Bold Touch (9900 and 9930). 
+//              - Updated DetectKindle() to focus on eInk devices only. The Kindle Fire should be detected as a regular Android device.
+//
+// File version date: August 22, 2011
+//              Update: 
+//              - Updated DetectAndroidTablet() to fix a bug introduced in the last fix! The true/false returns were mixed up. 
+//
+// File version date: August 16, 2011
+//              Update: 
+//              - Updated DetectAndroidTablet() to exclude Opera Mini, which was falsely reporting as running on a tablet device when on a phone.
+//
+//
+// LICENSE INFORMATION
+// Licensed under the Apache License, Version 2.0 (the "License"); 
+// you may not use this file except in compliance with the License. 
+// You may obtain a copy of the License at 
+//        http://www.apache.org/licenses/LICENSE-2.0 
+// Unless required by applicable law or agreed to in writing, 
+// software distributed under the License is distributed on an 
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+// either express or implied. See the License for the specific 
+// language governing permissions and limitations under the License. 
+//
+//
+// ABOUT THIS PROJECT
+//   Project Owner: Anthony Hand
+//   Email: anthony.hand@gmail.com
+//   Web Site: http://www.mobileesp.com
+//   Source Files: http://code.google.com/p/mobileesp/
+//   
+//   Versions of this code are available for:
+//      PHP, JavaScript, Java, ASP.NET (C#), and Ruby
+//
+// *******************************************
+*/
+
+
+
+//**************************
+// The uagent_info class encapsulates information about
+//   a browser's connection to your web site. 
+//   You can use it to find out whether the browser asking for
+//   your site's content is probably running on a mobile device.
+//   The methods were written so you can be as granular as you want.
+//   For example, enquiring whether it's as specific as an iPod Touch or
+//   as general as a smartphone class device.
+//   The object's methods return 1 for true, or 0 for false.
+class uagent_info
+{
+   var $useragent = "";
+   var $httpaccept = "";
+
+   //standardized values for true and false.
+   var $true = 1;
+   var $false = 0;
+
+   //Let's store values for quickly accessing the same info multiple times.
+   var $isIphone = 0; //Stores whether the device is an iPhone or iPod Touch.
+   var $isAndroidPhone = 0; //Stores whether the device is a (small-ish) Android phone or media player.
+   var $isTierTablet = 0; //Stores whether is the Tablet (HTML5-capable, larger screen) tier of devices.
+   var $isTierIphone = 0; //Stores whether is the iPhone tier of devices.
+   var $isTierRichCss = 0; //Stores whether the device can probably support Rich CSS, but JavaScript support is not assumed. (e.g., newer BlackBerry, Windows Mobile)
+   var $isTierGenericMobile = 0; //Stores whether it is another mobile device, which cannot be assumed to support CSS or JS (eg, older BlackBerry, RAZR)
+
+   //Initialize some initial smartphone string variables.
+   var $engineWebKit = 'webkit';
+   var $deviceIphone = 'iphone';
+   var $deviceIpod = 'ipod';
+   var $deviceIpad = 'ipad';
+   var $deviceMacPpc = 'macintosh'; //Used for disambiguation
+
+   var $deviceAndroid = 'android';
+   var $deviceGoogleTV = 'googletv';
+   var $deviceXoom = 'xoom'; //Motorola Xoom
+   var $deviceHtcFlyer = 'htc_flyer'; //HTC Flyer
+   
+   var $deviceNuvifone = 'nuvifone'; //Garmin Nuvifone
+
+   var $deviceSymbian = 'symbian';
+   var $deviceS60 = 'series60';
+   var $deviceS70 = 'series70';
+   var $deviceS80 = 'series80';
+   var $deviceS90 = 'series90';
+   
+   var $deviceWinPhone7 = 'windows phone os 7'; 
+   var $deviceWinMob = 'windows ce';
+   var $deviceWindows = 'windows'; 
+   var $deviceIeMob = 'iemobile';
+   var $devicePpc = 'ppc'; //Stands for PocketPC
+   var $enginePie = 'wm5 pie'; //An old Windows Mobile
+   
+   var $deviceBB = 'blackberry';   
+   var $vndRIM = 'vnd.rim'; //Detectable when BB devices emulate IE or Firefox
+   var $deviceBBStorm = 'blackberry95';  //Storm 1 and 2
+   var $deviceBBBold = 'blackberry97'; //Bold 97x0 (non-touch)
+   var $deviceBBBoldTouch = 'blackberry 99'; //Bold 99x0 (touchscreen)
+   var $deviceBBTour = 'blackberry96'; //Tour
+   var $deviceBBCurve = 'blackberry89'; //Curve2
+   var $deviceBBCurveTouch = 'blackberry 938'; //Curve Touch
+   var $deviceBBTorch = 'blackberry 98'; //Torch
+   var $deviceBBPlaybook = 'playbook'; //PlayBook tablet
+   
+   var $devicePalm = 'palm';
+   var $deviceWebOS = 'webos'; //For Palm's line of WebOS devices
+   var $deviceWebOShp = 'hpwos'; //For HP's line of WebOS devices
+   
+   var $engineBlazer = 'blazer'; //Old Palm browser
+   var $engineXiino = 'xiino'; //Another old Palm
+   
+   var $deviceKindle = 'kindle'; //Amazon Kindle, eInk one
+   var $engineSilk = 'silk'; //Amazon's accelerated Silk browser for Kindle Fire
+   
+   //Initialize variables for mobile-specific content.
+   var $vndwap = 'vnd.wap';
+   var $wml = 'wml';   
+   
+   //Initialize variables for other random devices and mobile browsers.
+   var $deviceTablet = 'tablet'; //Generic term for slate and tablet devices
+   var $deviceBrew = 'brew';
+   var $deviceDanger = 'danger';
+   var $deviceHiptop = 'hiptop';
+   var $devicePlaystation = 'playstation';
+   var $deviceNintendoDs = 'nitro';
+   var $deviceNintendo = 'nintendo';
+   var $deviceWii = 'wii';
+   var $deviceXbox = 'xbox';
+   var $deviceArchos = 'archos';
+   
+   var $engineOpera = 'opera'; //Popular browser
+   var $engineNetfront = 'netfront'; //Common embedded OS browser
+   var $engineUpBrowser = 'up.browser'; //common on some phones
+   var $engineOpenWeb = 'openweb'; //Transcoding by OpenWave server
+   var $deviceMidp = 'midp'; //a mobile Java technology
+   var $uplink = 'up.link';
+   var $engineTelecaQ = 'teleca q'; //a modern feature phone browser
+   
+   var $devicePda = 'pda'; //some devices report themselves as PDAs
+   var $mini = 'mini';  //Some mobile browsers put 'mini' in their names.
+   var $mobile = 'mobile'; //Some mobile browsers put 'mobile' in their user agent strings.
+   var $mobi = 'mobi'; //Some mobile browsers put 'mobi' in their user agent strings.
+   
+   //Use Maemo, Tablet, and Linux to test for Nokia's Internet Tablets.
+   var $maemo = 'maemo';
+   var $linux = 'linux';
+   var $qtembedded = 'qt embedded'; //for Sony Mylo and others
+   var $mylocom2 = 'com2'; //for Sony Mylo also
+   
+   //In some UserAgents, the only clue is the manufacturer.
+   var $manuSonyEricsson = "sonyericsson";
+   var $manuericsson = "ericsson";
+   var $manuSamsung1 = "sec-sgh";
+   var $manuSony = "sony";
+   var $manuHtc = "htc"; //Popular Android and WinMo manufacturer
+
+   //In some UserAgents, the only clue is the operator.
+   var $svcDocomo = "docomo";
+   var $svcKddi = "kddi";
+   var $svcVodafone = "vodafone";
+
+   //Disambiguation strings.
+   var $disUpdate = "update"; //pda vs. update
+
+
+   //**************************
+   //The constructor. Allows the latest PHP (5.0+) to locate a constructor object and initialize the object.
+   function __construct()
+   {
+                $this->uagent_info();
+   }
+
+
+   //**************************
+   //The object initializer. Initializes several default variables.
+   function uagent_info()
+   { 
+                $this->useragent = isset($_SERVER['HTTP_USER_AGENT'])?strtolower($_SERVER['HTTP_USER_AGENT']):'';
+                $this->httpaccept = isset($_SERVER['HTTP_ACCEPT'])?strtolower($_SERVER['HTTP_ACCEPT']):'';
+                
+                //Let's initialize some values to save cycles later.
+                $this->InitDeviceScan();
+   }
+   
+   //**************************
+   // Initialize Key Stored Values.
+   function InitDeviceScan()
+   {
+        global $isIphone, $isAndroidPhone, $isTierTablet, $isTierIphone;
+        
+        //We'll use these 4 variables to speed other processing. They're super common.
+        $this->isIphone = $this->DetectIphoneOrIpod();
+        $this->isAndroidPhone = $this->DetectAndroidPhone();
+        $this->isTierIphone = $this->DetectTierIphone();
+        $this->isTierTablet = $this->DetectTierTablet();
+        
+        //Optional: Comment these out if you don't need them.
+        global $isTierRichCss, $isTierGenericMobile;
+        $this->isTierRichCss = $this->DetectTierRichCss();
+        $this->isTierGenericMobile = $this->DetectTierOtherPhones();
+   }
+
+   //**************************
+   //Returns the contents of the User Agent value, in lower case.
+   function Get_Uagent()
+   { 
+       return $this->useragent;
+   }
+
+   //**************************
+   //Returns the contents of the HTTP Accept value, in lower case.
+   function Get_HttpAccept()
+   { 
+       return $this->httpaccept;
+   }
+   
+
+   //**************************
+   // Detects if the current device is an iPhone.
+   function DetectIphone()
+   {
+      if (stripos($this->useragent, $this->deviceIphone) > -1)
+      {
+         //The iPad and iPod Touch say they're an iPhone. So let's disambiguate.
+         if ($this->DetectIpad() == $this->true ||
+             $this->DetectIpod() == $this->true)
+            return $this->false;
+         //Yay! It's an iPhone!
+         else
+            return $this->true; 
+      }
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is an iPod Touch.
+   function DetectIpod()
+   {
+      if (stripos($this->useragent, $this->deviceIpod) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is an iPad tablet.
+   function DetectIpad()
+   {
+      if (stripos($this->useragent, $this->deviceIpad) > -1 &&
+          $this->DetectWebkit() == $this->true)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is an iPhone or iPod Touch.
+   function DetectIphoneOrIpod()
+   {
+       //We repeat the searches here because some iPods may report themselves as an iPhone, which would be okay.
+       if (stripos($this->useragent, $this->deviceIphone) > -1 ||
+           stripos($this->useragent, $this->deviceIpod) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects *any* iOS device: iPhone, iPod Touch, iPad.
+   function DetectIos()
+   {
+      if (($this->DetectIphoneOrIpod() == $this->true) ||
+        ($this->DetectIpad() == $this->true))
+         return $this->true; 
+      else
+         return $this->false;
+   }
+
+
+   //**************************
+   // Detects *any* Android OS-based device: phone, tablet, and multi-media player.
+   // Also detects Google TV.
+   function DetectAndroid()
+   {
+      if ((stripos($this->useragent, $this->deviceAndroid) > -1) ||
+         ($this->DetectGoogleTV() == $this->true))
+         return $this->true; 
+      //Special check for the HTC Flyer 7" tablet
+      if ((stripos($this->useragent, $this->deviceHtcFlyer) > -1))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is a (small-ish) Android OS-based device
+   // used for calling and/or multi-media (like a Samsung Galaxy Player).
+   // Google says these devices will have 'Android' AND 'mobile' in user agent.
+   // Ignores tablets (Honeycomb and later).
+   function DetectAndroidPhone()
+   {
+      if (($this->DetectAndroid() == $this->true) &&
+                (stripos($this->useragent, $this->mobile) > -1))
+         return $this->true; 
+      //Special check for Android phones with Opera Mobile. They should report here.
+      if (($this->DetectOperaAndroidPhone() == $this->true))
+         return $this->true; 
+      //Special check for the HTC Flyer 7" tablet. It should report here.
+      if ((stripos($this->useragent, $this->deviceHtcFlyer) > -1))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is a (self-reported) Android tablet.
+   // Google says these devices will have 'Android' and NOT 'mobile' in their user agent.
+   function DetectAndroidTablet()
+   {
+      //First, let's make sure we're on an Android device.
+      if ($this->DetectAndroid() == $this->false)
+         return $this->false; 
+
+      //Special check for Opera Android Phones. They should NOT report here.
+      if ($this->DetectOperaMobile() == $this->true)
+         return $this->false; 
+      //Special check for the HTC Flyer 7" tablet. It should NOT report here.
+      if ((stripos($this->useragent, $this->deviceHtcFlyer) > -1))
+         return $this->false; 
+         
+      //Otherwise, if it's Android and does NOT have 'mobile' in it, Google says it's a tablet.
+      if (stripos($this->useragent, $this->mobile) > -1)
+         return $this->false;
+      else
+         return $this->true; 
+   }
+
+   //**************************
+   // Detects if the current device is an Android OS-based device and
+   //   the browser is based on WebKit.
+   function DetectAndroidWebKit()
+   {
+      if (($this->DetectAndroid() == $this->true) &&
+                ($this->DetectWebkit() == $this->true))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is a GoogleTV.
+   function DetectGoogleTV()
+   {
+      if (stripos($this->useragent, $this->deviceGoogleTV) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is based on WebKit.
+   function DetectWebkit()
+   {
+      if (stripos($this->useragent, $this->engineWebKit) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+
+   //**************************
+   // Detects if the current browser is the Nokia S60 Open Source Browser.
+   function DetectS60OssBrowser()
+   {
+      //First, test for WebKit, then make sure it's either Symbian or S60.
+      if ($this->DetectWebkit() == $this->true)
+      {
+        if (stripos($this->useragent, $this->deviceSymbian) > -1 ||
+            stripos($this->useragent, $this->deviceS60) > -1)
+        {
+           return $this->true;
+        }
+        else
+           return $this->false; 
+      }
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is any Symbian OS-based device,
+   //   including older S60, Series 70, Series 80, Series 90, and UIQ, 
+   //   or other browsers running on these devices.
+   function DetectSymbianOS()
+   {
+       if (stripos($this->useragent, $this->deviceSymbian) > -1 || 
+           stripos($this->useragent, $this->deviceS60) > -1 ||
+           stripos($this->useragent, $this->deviceS70) > -1 || 
+           stripos($this->useragent, $this->deviceS80) > -1 ||
+           stripos($this->useragent, $this->deviceS90) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a 
+   // Windows Phone 7 device.
+   function DetectWindowsPhone7()
+   {
+      if (stripos($this->useragent, $this->deviceWinPhone7) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a Windows Mobile device.
+   // Excludes Windows Phone 7 devices. 
+   // Focuses on Windows Mobile 6.xx and earlier.
+   function DetectWindowsMobile()
+   {
+      if ($this->DetectWindowsPhone7() == $this->true)
+         return $this->false; 
+      //Most devices use 'Windows CE', but some report 'iemobile' 
+      //  and some older ones report as 'PIE' for Pocket IE. 
+      if (stripos($this->useragent, $this->deviceWinMob) > -1 ||
+          stripos($this->useragent, $this->deviceIeMob) > -1 ||
+          stripos($this->useragent, $this->enginePie) > -1)
+         return $this->true; 
+      //Test for Windows Mobile PPC but not old Macintosh PowerPC.
+          if (stripos($this->useragent, $this->devicePpc) > -1
+                  && !(stripos($this->useragent, $this->deviceMacPpc) > 1))
+         return $this->true; 
+      //Test for certain Windwos Mobile-based HTC devices.
+      if (stripos($this->useragent, $this->manuHtc) > -1 &&
+          stripos($this->useragent, $this->deviceWindows) > -1)
+         return $this->true; 
+      if ($this->DetectWapWml() == $this->true &&
+          stripos($this->useragent, $this->deviceWindows) > -1) 
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is any BlackBerry device.
+   // Includes the PlayBook.
+   function DetectBlackBerry()
+   {
+       if ((stripos($this->useragent, $this->deviceBB) > -1) ||
+          (stripos($this->httpaccept, $this->vndRIM) > -1))
+         return $this->true; 
+       else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current browser is on a BlackBerry tablet device.
+   //    Examples: PlayBook
+   function DetectBlackBerryTablet()
+   {
+      if ((stripos($this->useragent, $this->deviceBBPlaybook) > -1))
+         return $this->true; 
+      else
+        return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a BlackBerry phone device AND uses a
+   //    WebKit-based browser. These are signatures for the new BlackBerry OS 6.
+   //    Examples: Torch. Includes the Playbook.
+   function DetectBlackBerryWebKit()
+   {
+      if (($this->DetectBlackBerry() == $this->true) &&
+                ($this->DetectWebkit() == $this->true))
+         return $this->true; 
+      else
+        return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a BlackBerry Touch phone device with
+   //    a large screen, such as the Storm, Torch, and Bold Touch. Excludes the Playbook.
+   function DetectBlackBerryTouch()
+   {  
+       if ((stripos($this->useragent, $this->deviceBBStorm) > -1) ||
+                (stripos($this->useragent, $this->deviceBBTorch) > -1) ||
+                (stripos($this->useragent, $this->deviceBBBoldTouch) > -1) ||
+                (stripos($this->useragent, $this->deviceBBCurveTouch) > -1))
+         return $this->true; 
+       else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current browser is a BlackBerry OS 5 device AND
+   //    has a more capable recent browser. Excludes the Playbook.
+   //    Examples, Storm, Bold, Tour, Curve2
+   //    Excludes the new BlackBerry OS 6 and 7 browser!!
+   function DetectBlackBerryHigh()
+   {
+      //Disambiguate for BlackBerry OS 6 or 7 (WebKit) browser
+      if ($this->DetectBlackBerryWebKit() == $this->true)
+         return $this->false; 
+      if ($this->DetectBlackBerry() == $this->true)
+      {
+          if (($this->DetectBlackBerryTouch() == $this->true) ||
+            stripos($this->useragent, $this->deviceBBBold) > -1 ||
+            stripos($this->useragent, $this->deviceBBTour) > -1 ||
+            stripos($this->useragent, $this->deviceBBCurve) > -1)
+          {
+             return $this->true; 
+          }
+          else
+            return $this->false; 
+      }
+      else
+        return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a BlackBerry device AND
+   //    has an older, less capable browser. 
+   //    Examples: Pearl, 8800, Curve1.
+   function DetectBlackBerryLow()
+   {
+      if ($this->DetectBlackBerry() == $this->true)
+      {
+          //Assume that if it's not in the High tier, then it's Low.
+          if (($this->DetectBlackBerryHigh() == $this->true) ||
+                        ($this->DetectBlackBerryWebKit() == $this->true))
+             return $this->false; 
+          else
+            return $this->true; 
+      }
+      else
+        return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is on a PalmOS device.
+   function DetectPalmOS()
+   {
+      //Most devices nowadays report as 'Palm', but some older ones reported as Blazer or Xiino.
+      if (stripos($this->useragent, $this->devicePalm) > -1 ||
+          stripos($this->useragent, $this->engineBlazer) > -1 ||
+          stripos($this->useragent, $this->engineXiino) > -1)
+      {
+         //Make sure it's not WebOS first
+         if ($this->DetectPalmWebOS() == $this->true)
+            return $this->false;
+         else
+            return $this->true; 
+      }
+      else
+         return $this->false; 
+   }
+
+
+   //**************************
+   // Detects if the current browser is on a Palm device
+   //   running the new WebOS.
+   function DetectPalmWebOS()
+   {
+      if (stripos($this->useragent, $this->deviceWebOS) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is on an HP tablet running WebOS.
+   function DetectWebOSTablet()
+   {
+      if ((stripos($this->useragent, $this->deviceWebOShp) > -1)
+                        && (stripos($this->useragent, $this->deviceTablet) > -1))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a
+   //   Garmin Nuvifone.
+   function DetectGarminNuvifone()
+   {
+      if (stripos($this->useragent, $this->deviceNuvifone) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+
+   //**************************
+   // Check to see whether the device is any device
+   //   in the 'smartphone' category.
+   function DetectSmartphone()
+   {
+      global $isIphone, $isAndroidPhone, $isTierIphone;
+
+      if (($this->isIphone == $this->true)
+                        || ($this->isAndroidPhone == $this->true)
+                        || ($this->isTierIphone == $this->true)
+                        || ($this->DetectS60OssBrowser() == $this->true)
+                        || ($this->DetectSymbianOS() == $this->true) 
+                        || ($this->DetectWindowsMobile() == $this->true)
+                        || ($this->DetectWindowsPhone7() == $this->true)
+                        || ($this->DetectBlackBerry() == $this->true)
+                        || ($this->DetectPalmWebOS() == $this->true)
+                        || ($this->DetectPalmOS() == $this->true)
+                        || ($this->DetectGarminNuvifone() == $this->true))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+
+   //**************************
+   // Detects whether the device is a Brew-powered device.
+   function DetectBrewDevice()
+   {
+       if (stripos($this->useragent, $this->deviceBrew) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects the Danger Hiptop device.
+   function DetectDangerHiptop()
+   {
+      if (stripos($this->useragent, $this->deviceDanger) > -1 ||
+          stripos($this->useragent, $this->deviceHiptop) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is Opera Mobile or Mini.
+   function DetectOperaMobile()
+   {
+      if (stripos($this->useragent, $this->engineOpera) > -1)
+      {
+         if ((stripos($this->useragent, $this->mini) > -1) ||
+          (stripos($this->useragent, $this->mobi) > -1))
+            return $this->true; 
+         else
+            return $this->false; 
+      }
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is Opera Mobile
+   // running on an Android phone.
+   function DetectOperaAndroidPhone()
+   {
+      if ((stripos($this->useragent, $this->engineOpera) > -1) &&
+        (stripos($this->useragent, $this->deviceAndroid) > -1) &&
+                (stripos($this->useragent, $this->mobi) > -1))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is Opera Mobile
+   // running on an Android tablet.  
+   function DetectOperaAndroidTablet()
+   {
+      if ((stripos($this->useragent, $this->engineOpera) > -1) &&
+        (stripos($this->useragent, $this->deviceAndroid) > -1) &&
+                (stripos($this->useragent, $this->deviceTablet) > -1))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects whether the device supports WAP or WML.
+   function DetectWapWml()
+   {
+       if (stripos($this->httpaccept, $this->vndwap) > -1 ||
+           stripos($this->httpaccept, $this->wml) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is an Amazon Kindle (eInk devices only).
+   // Note: For the Kindle Fire, use the normal Android methods. 
+   function DetectKindle()
+   {
+      if (stripos($this->useragent, $this->deviceKindle) > -1 &&
+          $this->DetectAndroid() == $this->false)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current Amazon device is using the Silk Browser.
+   // Note: Typically used by the the Kindle Fire.
+   function DetectAmazonSilk()
+   {
+      if (stripos($this->useragent, $this->engineSilk) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   
+   //**************************
+   // The quick way to detect for a mobile device.
+   //   Will probably detect most recent/current mid-tier Feature Phones
+   //   as well as smartphone-class devices. Excludes Apple iPads and other modern tablets.
+   function DetectMobileQuick()
+   {
+      //Let's exclude tablets
+      if ($this->isTierTablet == $this->true) 
+         return $this->false;
+      
+      //Most mobile browsing is done on smartphones
+      if ($this->DetectSmartphone() == $this->true) 
+         return $this->true;
+
+      if (($this->DetectWapWml() == $this->true) 
+                        || ($this->DetectBrewDevice() == $this->true) 
+                        || ($this->DetectOperaMobile() == $this->true))
+         return $this->true;
+         
+      if ((stripos($this->useragent, $this->engineNetfront) > -1)
+                        || (stripos($this->useragent, $this->engineUpBrowser) > -1)
+                        || (stripos($this->useragent, $this->engineOpenWeb) > -1))
+         return $this->true; 
+         
+      if (($this->DetectDangerHiptop() == $this->true) 
+                        || ($this->DetectMidpCapable() == $this->true) 
+                        || ($this->DetectMaemoTablet() == $this->true) 
+                        || ($this->DetectArchos() == $this->true))
+         return $this->true; 
+
+       if ((stripos($this->useragent, $this->devicePda) > -1) &&
+                 !(stripos($this->useragent, $this->disUpdate) > -1))
+         return $this->true; 
+       if (stripos($this->useragent, $this->mobile) > -1)
+         return $this->true; 
+
+      //We also look for Kindle devices
+      if ($this->DetectKindle() == $this->true ||
+         $this->DetectAmazonSilk() == $this->true) 
+         return $this->true;
+
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is a Sony Playstation.
+   function DetectSonyPlaystation()
+   {
+      if (stripos($this->useragent, $this->devicePlaystation) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is a Nintendo game device.
+   function DetectNintendo()
+   {
+      if (stripos($this->useragent, $this->deviceNintendo) > -1 || 
+           stripos($this->useragent, $this->deviceWii) > -1 ||
+           stripos($this->useragent, $this->deviceNintendoDs) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is a Microsoft Xbox.
+   function DetectXbox()
+   {
+      if (stripos($this->useragent, $this->deviceXbox) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is an Internet-capable game console.
+   function DetectGameConsole()
+   {
+      if ($this->DetectSonyPlaystation() == $this->true) 
+         return $this->true; 
+      else if ($this->DetectNintendo() == $this->true) 
+         return $this->true; 
+      else if ($this->DetectXbox() == $this->true) 
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device supports MIDP, a mobile Java technology.
+   function DetectMidpCapable()
+   {
+       if (stripos($this->useragent, $this->deviceMidp) > -1 || 
+           stripos($this->httpaccept, $this->deviceMidp) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // Detects if the current device is on one of the Maemo-based Nokia Internet Tablets.
+   function DetectMaemoTablet()
+   {
+      if (stripos($this->useragent, $this->maemo) > -1)
+         return $this->true; 
+      //For Nokia N810, must be Linux + Tablet, or else it could be something else. 
+      if ((stripos($this->useragent, $this->linux) > -1)
+                && (stripos($this->useragent, $this->deviceTablet) > -1) 
+                && ($this->DetectWebOSTablet() == $this->false)
+                && ($this->DetectAndroid() == $this->false))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current device is an Archos media player/Internet tablet.
+   function DetectArchos()
+   {
+      if (stripos($this->useragent, $this->deviceArchos) > -1)
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // Detects if the current browser is a Sony Mylo device.
+   function DetectSonyMylo()
+   {
+      if (stripos($this->useragent, $this->manuSony) > -1)
+      {
+         if ((stripos($this->useragent, $this->qtembedded) > -1) ||
+          (stripos($this->useragent, $this->mylocom2) > -1))
+         {
+            return $this->true; 
+         }
+         else
+            return $this->false; 
+      }
+      else
+         return $this->false; 
+   }
+   
+  
+   //**************************
+   // The longer and more thorough way to detect for a mobile device.
+   //   Will probably detect most feature phones,
+   //   smartphone-class devices, Internet Tablets, 
+   //   Internet-enabled game consoles, etc.
+   //   This ought to catch a lot of the more obscure and older devices, also --
+   //   but no promises on thoroughness!
+   function DetectMobileLong()
+   {
+      if ($this->DetectMobileQuick() == $this->true) 
+         return $this->true; 
+      if ($this->DetectGameConsole() == $this->true) 
+         return $this->true; 
+      if ($this->DetectSonyMylo() == $this->true) 
+         return $this->true; 
+
+       //Detect older phones from certain manufacturers and operators. 
+       if (stripos($this->useragent, $this->uplink) > -1)
+         return $this->true; 
+       if (stripos($this->useragent, $this->manuSonyEricsson) > -1)
+         return $this->true; 
+       if (stripos($this->useragent, $this->manuericsson) > -1)
+         return $this->true; 
+
+       if (stripos($this->useragent, $this->manuSamsung1) > -1)
+         return $this->true; 
+       if (stripos($this->useragent, $this->svcDocomo) > -1)
+         return $this->true; 
+       if (stripos($this->useragent, $this->svcKddi) > -1)
+         return $this->true; 
+       if (stripos($this->useragent, $this->svcVodafone) > -1)
+         return $this->true; 
+
+      else
+         return $this->false; 
+   }
+
+
+
+  //*****************************
+  // For Mobile Web Site Design
+  //*****************************
+
+   //**************************
+   // The quick way to detect for a tier of devices.
+   //   This method detects for the new generation of
+   //   HTML 5 capable, larger screen tablets.
+   //   Includes iPad, Android (e.g., Xoom), BB Playbook, WebOS, etc.
+   function DetectTierTablet()
+   {
+      if (($this->DetectIpad() == $this->true) 
+         || ($this->DetectAndroidTablet() == $this->true) 
+         || ($this->DetectBlackBerryTablet() == $this->true) 
+         || ($this->DetectWebOSTablet() == $this->true))
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+
+
+   //**************************
+   // The quick way to detect for a tier of devices.
+   //   This method detects for devices which can 
+   //   display iPhone-optimized web content.
+   //   Includes iPhone, iPod Touch, Android, Windows Phone 7, WebOS, etc.
+   function DetectTierIphone()
+   {
+      if (($this->isIphone == $this->true) ||
+                        ($this->isAndroidPhone == $this->true))
+         return $this->true; 
+   
+      if (($this->DetectBlackBerryWebKit() == $this->true) &&
+                ($this->DetectBlackBerryTouch() == $this->true))
+         return $this->true; 
+      if ($this->DetectWindowsPhone7() == $this->true)
+         return $this->true; 
+      if ($this->DetectPalmWebOS() == $this->true) 
+         return $this->true; 
+      if ($this->DetectGarminNuvifone() == $this->true) 
+         return $this->true; 
+      else
+         return $this->false; 
+   }
+   
+   //**************************
+   // The quick way to detect for a tier of devices.
+   //   This method detects for devices which are likely to be capable 
+   //   of viewing CSS content optimized for the iPhone, 
+   //   but may not necessarily support JavaScript.
+   //   Excludes all iPhone Tier devices.
+   function DetectTierRichCss()
+   {
+      if ($this->DetectMobileQuick() == $this->true) 
+      {
+        //Exclude iPhone Tier and e-Ink Kindle devices
+        if (($this->DetectTierIphone() == $this->true) ||
+            ($this->DetectKindle() == $this->true))
+           return $this->false;
+           
+        //The following devices are explicitly ok.
+        if ($this->DetectWebkit() == $this->true) //Any WebKit
+           return $this->true;
+        if ($this->DetectS60OssBrowser() == $this->true)
+           return $this->true;
+           
+        //Note: 'High' BlackBerry devices ONLY
+        if ($this->DetectBlackBerryHigh() == $this->true)
+           return $this->true;
+        
+        //Older Windows 'Mobile' isn't good enough for iPhone Tier. 
+        if ($this->DetectWindowsMobile() == $this->true)
+           return $this->true;
+        if (stripos($this->useragent, $this->engineTelecaQ) > -1)
+           return $this->true;
+         
+        //default
+        else
+           return $this->false;
+      }
+      else
+         return $this->false; 
+   }
+
+   //**************************
+   // The quick way to detect for a tier of devices.
+   //   This method detects for all other types of phones,
+   //   but excludes the iPhone and RichCSS Tier devices.
+   function DetectTierOtherPhones()
+   {
+      //Exclude devices in the other 2 categories 
+      if (($this->DetectMobileLong() == $this->true)
+                && ($this->DetectTierIphone() == $this->false)
+                && ($this->DetectTierRichCss() == $this->false))
+           return $this->true;
+      else
+         return $this->false; 
+   }
+      
+
+}
+
+
+//Was informed by a MobileESP user that it's a best practice 
+//  to omit the closing ?&gt; marks here. They can sometimes
+//  cause errors with HTML headers.
Index: /tags/2.6.0RC1/include/menubar.inc.php
===================================================================
--- /tags/2.6.0RC1/include/menubar.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/menubar.inc.php	(revision 25596)
@@ -0,0 +1,332 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the main page to show the menu bar
+ *
+ */
+
+include_once(PHPWG_ROOT_PATH.'include/block.class.php');
+
+initialize_menu();
+
+function initialize_menu()
+{
+  global $page, $conf, $user, $template, $filter;
+
+  $menu = new BlockManager("menubar");
+  $menu->load_registered_blocks();
+  $menu->prepare_display();
+
+//--------------------------------------------------------------- external links
+  if ( ($block=$menu->get_block('mbLinks')) and !empty($conf['links']) )
+  {
+    $block->data = array();
+    foreach ($conf['links'] as $url => $url_data)
+    {
+      if (!is_array($url_data))
+      {
+        $url_data = array('label' => $url_data);
+      }
+
+      if
+        (
+          (!isset($url_data['eval_visible']))
+          or
+          (eval($url_data['eval_visible']))
+        )
+      {
+        $tpl_var = array(
+            'URL' => $url,
+            'LABEL' => $url_data['label']
+          );
+
+        if (!isset($url_data['new_window']) or $url_data['new_window'])
+        {
+          $tpl_var['new_window'] =
+            array(
+              'NAME' => (isset($url_data['nw_name']) ? $url_data['nw_name'] : ''),
+              'FEATURES' => (isset($url_data['nw_features']) ? $url_data['nw_features'] : '')
+            );
+        }
+        $block->data[] = $tpl_var;
+      }
+    }
+    if ( !empty($block->data) )
+    {
+      $block->template = 'menubar_links.tpl';
+    }
+  }
+
+//-------------------------------------------------------------- categories
+  $block = $menu->get_block('mbCategories');
+//------------------------------------------------------------------------ filter
+  if ($conf['menubar_filter_icon'] and !empty($conf['filter_pages']) and get_filter_page_value('used'))
+  {
+    if ($filter['enabled'])
+    {
+      $template->assign(
+        'U_STOP_FILTER',
+        add_url_params(make_index_url(array()), array('filter' => 'stop'))
+        );
+    }
+    else
+    {
+      $template->assign(
+        'U_START_FILTER',
+        add_url_params(make_index_url(array()), array('filter' => 'start-recent-'.$user['recent_period']))
+        );
+    }
+  }
+
+  if ( $block!=null )
+  {
+    $block->data = array(
+      'NB_PICTURE' => $user['nb_total_images'],
+      'MENU_CATEGORIES' => get_categories_menu(),
+      'U_CATEGORIES' => make_index_url(array('section' => 'categories')),
+    );
+    $block->template = 'menubar_categories.tpl';
+  }
+
+//------------------------------------------------------------------------ tags
+  $block = $menu->get_block('mbTags');
+  if ( $block!=null and !empty($page['items']) and 'picture' != script_basename() )
+  {
+    if ('tags'==@$page['section'])
+    {
+      $tags = get_common_tags(
+        $page['items'],
+        $conf['menubar_tag_cloud_items_number'],
+        $page['tag_ids']
+        );
+      $tags = add_level_to_tags($tags);
+
+      foreach ($tags as $tag)
+      {
+        $block->data[] = array_merge(
+          $tag,
+          array(
+            'U_ADD' => make_index_url(
+              array(
+                'tags' => array_merge(
+                  $page['tags'],
+                  array($tag)
+                  )
+                )
+              ),
+            'URL' => make_index_url( array( 'tags' => array($tag) )
+              ),
+            )
+          );
+      }
+    }
+    else
+    {
+      $selection = array_slice( $page['items'], $page['start'], $page['nb_image_page'] );
+      $tags = add_level_to_tags( get_common_tags($selection, $conf['content_tag_cloud_items_number']) );
+      foreach ($tags as $tag)
+      {
+        $block->data[] =
+        array_merge( $tag,
+          array(
+            'URL' => make_index_url( array( 'tags' => array($tag) ) ),
+          )
+        );
+      }
+    }
+    if ( !empty($block->data) )
+    {
+      $block->template = 'menubar_tags.tpl';
+    }
+  }
+
+//----------------------------------------------------------- special categories
+  if ( ($block = $menu->get_block('mbSpecials')) != null )
+  {
+    if ( !is_a_guest() )
+    {// favorites
+      $block->data['favorites'] =
+        array(
+          'URL' => make_index_url(array('section' => 'favorites')),
+          'TITLE' => l10n('display your favorites photos'),
+          'NAME' => l10n('Your favorites')
+          );
+    }
+
+    $block->data['most_visited'] =
+      array(
+        'URL' => make_index_url(array('section' => 'most_visited')),
+        'TITLE' => l10n('display most visited photos'),
+        'NAME' => l10n('Most visited')
+      );
+
+    if ($conf['rate'])
+    {
+       $block->data['best_rated'] =
+        array(
+          'URL' => make_index_url(array('section' => 'best_rated')),
+          'TITLE' => l10n('display best rated photos'),
+          'NAME' => l10n('Best rated')
+        );
+    }
+
+    $block->data['recent_pics'] =
+      array(
+        'URL' => make_index_url(array('section' => 'recent_pics')),
+        'TITLE' => l10n('display most recent photos'),
+        'NAME' => l10n('Recent photos'),
+      );
+
+    $block->data['recent_cats'] =
+      array(
+        'URL' => make_index_url(array('section' => 'recent_cats')),
+        'TITLE' => l10n('display recently updated albums'),
+        'NAME' => l10n('Recent albums'),
+      );
+
+    $block->data['random'] =
+      array(
+        'URL' => get_root_url().'random.php',
+        'TITLE' => l10n('display a set of random photos'),
+        'NAME' => l10n('Random photos'),
+        'REL'=> 'rel="nofollow"'
+      );
+
+    $block->data['calendar'] =
+      array(
+        'URL' =>
+          make_index_url(
+            array(
+              'chronology_field' => ($conf['calendar_datefield']=='date_available'
+                                      ? 'posted' : 'created'),
+               'chronology_style'=> 'monthly',
+               'chronology_view' => 'calendar'
+            )
+          ),
+        'TITLE' => l10n('display each day with photos, month per month'),
+        'NAME' => l10n('Calendar'),
+        'REL'=> 'rel="nofollow"'
+      );
+    $block->template = 'menubar_specials.tpl';
+  }
+
+
+//---------------------------------------------------------------------- summary
+  if ( ($block=$menu->get_block('mbMenu')) != null )
+  {
+    // quick search block will be displayed only if data['qsearch'] is set
+    // to "yes"
+    $block->data['qsearch']=true;
+
+    // tags link
+    $block->data['tags'] =
+      array(
+        'TITLE' => l10n('display available tags'),
+        'NAME' => l10n('Tags'),
+        'URL'=> get_root_url().'tags.php',
+        'COUNTER' => get_nb_available_tags(),
+      );
+
+    // search link
+    $block->data['search'] =
+      array(
+        'TITLE'=>l10n('search'),
+        'NAME'=>l10n('Search'),
+        'URL'=> get_root_url().'search.php',
+        'REL'=> 'rel="search"'
+      );
+
+    if ($conf['activate_comments'])
+    {
+      // comments link
+      $block->data['comments'] =
+        array(
+          'TITLE'=>l10n('display last user comments'),
+          'NAME'=>l10n('Comments'),
+          'URL'=> get_root_url().'comments.php',
+          'COUNTER' => get_nb_available_comments(),
+        );
+    }
+
+    // about link
+    $block->data['about'] =
+      array(
+        'TITLE'     => l10n('About Piwigo'),
+        'NAME'      => l10n('About'),
+        'URL' => get_root_url().'about.php',
+      );
+
+    // notification
+    $block->data['rss'] =
+      array(
+        'TITLE'=>l10n('RSS feed'),
+        'NAME'=>l10n('Notification'),
+        'URL'=> get_root_url().'notification.php',
+        'REL'=> 'rel="nofollow"'
+      );
+    $block->template = 'menubar_menu.tpl';
+  }
+
+
+//--------------------------------------------------------------- identification
+  if (is_a_guest())
+  {
+    $template->assign(
+        array(
+          'U_LOGIN' => get_root_url().'identification.php',
+          'U_LOST_PASSWORD' => get_root_url().'password.php',
+          'AUTHORIZE_REMEMBERING' => $conf['authorize_remembering']
+        )
+      );
+    if ($conf['allow_user_registration'])
+    {
+      $template->assign( 'U_REGISTER', get_root_url().'register.php');
+    }
+  }
+  else
+  {
+    $template->assign('USERNAME', stripslashes($user['username']));
+    if (is_autorize_status(ACCESS_CLASSIC))
+    {
+      $template->assign('U_PROFILE', get_root_url().'profile.php');
+    }
+
+    // the logout link has no meaning with Apache authentication : it is not
+    // possible to logout with this kind of authentication.
+    if (!$conf['apache_authentication'])
+    {
+      $template->assign('U_LOGOUT', get_root_url().'?act=logout');
+    }
+    if (is_admin())
+    {
+      $template->assign('U_ADMIN', get_root_url().'admin.php');
+    }
+  }
+  if ( ($block=$menu->get_block('mbIdentification')) != null )
+  {
+    $block->template = 'menubar_identification.tpl';
+  }
+  $menu->apply('MENUBAR',  'menubar.tpl' );
+}
+?>
Index: /tags/2.6.0RC1/include/no_photo_yet.inc.php
===================================================================
--- /tags/2.6.0RC1/include/no_photo_yet.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/no_photo_yet.inc.php	(revision 25596)
@@ -0,0 +1,109 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+// The "No Photo Yet" feature: if you have no photo yet in your gallery, the
+// gallery displays only a big box to show you the way for adding your first
+// photos
+if (
+  !(defined('IN_ADMIN') and IN_ADMIN)   // no message inside administration
+  and script_basename() != 'identification' // keep the ability to login
+  and script_basename() != 'ws'             // keep the ability to discuss with web API
+  and script_basename() != 'popuphelp'      // keep the ability to display help popups
+  and !isset($_SESSION['no_photo_yet'])     // temporary hide
+  )
+{
+  $query = '
+SELECT
+    COUNT(*)
+  FROM '.IMAGES_TABLE.'
+;';
+  list($nb_photos) = pwg_db_fetch_row(pwg_query($query));
+  if (0 == $nb_photos)
+  {
+    // make sure we don't use the mobile theme, which is not compatible with
+    // the "no photo yet" feature
+    $template = new Template(PHPWG_ROOT_PATH.'themes', $user['theme']);
+    
+    if (isset($_GET['no_photo_yet']))
+    {
+      if ('browse' == $_GET['no_photo_yet'])
+      {
+        $_SESSION['no_photo_yet'] = 'browse';
+        redirect(make_index_url());
+        exit();
+      }
+
+      if ('deactivate' == $_GET['no_photo_yet'])
+      {
+        conf_update_param('no_photo_yet', 'false');
+        redirect(make_index_url());
+        exit();
+      }
+    }
+
+    header('Content-Type: text/html; charset='.get_pwg_charset());
+    $template->set_filenames(array('no_photo_yet'=>'no_photo_yet.tpl'));
+
+    if (is_admin())
+    {
+      $url = $conf['no_photo_yet_url'];
+      if (substr($url, 0, 4) != 'http')
+      {
+        $url = get_root_url().$url;
+      }
+
+      $template->assign(
+        array(
+          'step' => 2,
+          'intro' => l10n(
+            'Hello %s, your Piwigo photo gallery is empty!',
+            $user['username']
+            ),
+          'next_step_url' => $url,
+          'deactivate_url' => get_root_url().'?no_photo_yet=deactivate',
+          )
+        );
+    }
+    else
+    {
+
+      $template->assign(
+        array(
+          'step' => 1,
+          'U_LOGIN' => 'identification.php',
+          'deactivate_url' => get_root_url().'?no_photo_yet=browse',
+          )
+        );
+    }
+
+    $template->pparse('no_photo_yet');
+    exit();
+  }
+  else
+  {
+    conf_update_param('no_photo_yet', 'false');
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/page_header.php
===================================================================
--- /tags/2.6.0RC1/include/page_header.php	(revision 25596)
+++ /tags/2.6.0RC1/include/page_header.php	(revision 25596)
@@ -0,0 +1,105 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//
+// Start output of page
+//
+$template->set_filenames(array('header'=>'header.tpl'));
+
+trigger_action('loc_begin_page_header');
+
+$template->assign(
+  array(
+    'GALLERY_TITLE' =>
+      isset($page['gallery_title']) ?
+        $page['gallery_title'] : $conf['gallery_title'],
+
+    'PAGE_BANNER' =>
+      trigger_event(
+        'render_page_banner',
+        str_replace(
+          '%gallery_title%',
+          $conf['gallery_title'],
+          isset($page['page_banner']) ? $page['page_banner'] : $conf['page_banner']
+          )
+        ),
+
+    'BODY_ID' =>
+      isset($page['body_id']) ?
+        $page['body_id'] : '',
+
+    'CONTENT_ENCODING' => get_pwg_charset(),
+    'PAGE_TITLE' => strip_tags($title),
+
+    'U_HOME' => get_gallery_home_url(),
+
+    'LEVEL_SEPARATOR' => $conf['level_separator'],
+    ));
+
+
+// Header notes
+if ( !empty($header_notes) )
+{
+  $template->assign('header_notes',$header_notes);
+}
+
+// No referencing is required
+if ( !$conf['meta_ref'] )
+{
+  $page['meta_robots']['noindex'] = 1;
+  $page['meta_robots']['nofollow'] = 1;
+}
+
+if ( !empty($page['meta_robots']) )
+{
+  $template->append('head_elements',
+        '<meta name="robots" content="'
+        .implode(',', array_keys($page['meta_robots']))
+        .'">'
+    );
+}
+if ( !isset($page['meta_robots']['noindex']) )
+{
+  $template->assign('meta_ref',1);
+}
+
+// refresh
+if ( isset( $refresh ) and intval($refresh) >= 0
+    and isset( $url_link ) )
+{
+  $template->assign(
+    array(
+      'page_refresh' => array(
+            'TIME' => $refresh,
+            'U_REFRESH' => $url_link
+          )
+      ));
+}
+
+trigger_action('loc_end_page_header');
+
+header('Content-Type: text/html; charset='.get_pwg_charset());
+$template->parse('header');
+
+trigger_action('loc_after_page_header');
+?>
Index: /tags/2.6.0RC1/include/page_tail.php
===================================================================
--- /tags/2.6.0RC1/include/page_tail.php	(revision 25596)
+++ /tags/2.6.0RC1/include/page_tail.php	(revision 25596)
@@ -0,0 +1,85 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array('tail'=>'footer.tpl'));
+
+trigger_action('loc_begin_page_tail');
+
+$template->assign(
+  array(
+    'VERSION' => $conf['show_version'] ? PHPWG_VERSION : '',
+    'PHPWG_URL' => defined('PHPWG_URL') ? PHPWG_URL : '',
+    ));
+
+//--------------------------------------------------------------------- contact
+
+if (!is_a_guest())
+{
+  $template->assign(
+    'CONTACT_MAIL', get_webmaster_mail_address()
+    );
+}
+
+//------------------------------------------------------------- generation time
+$debug_vars = array();
+
+if ($conf['show_queries'])
+{
+  $debug_vars = array_merge($debug_vars, array('QUERIES_LIST' => $debug) );
+}
+
+if ($conf['show_gt'])
+{
+  if (!isset($page['count_queries']))
+  {
+    $page['count_queries'] = 0;
+    $page['queries_time'] = 0;
+  }
+  $time = get_elapsed_time($t2, get_moment());
+
+  $debug_vars = array_merge($debug_vars,
+    array('TIME' => $time,
+          'NB_QUERIES' => $page['count_queries'],
+          'SQL_TIME' => number_format($page['queries_time'],3,'.',' ').' s')
+          );
+}
+
+$template->assign('debug', $debug_vars );
+
+//------------------------------------------------------------- mobile version
+if ( !empty($conf['mobile_theme']) && (get_device() != 'desktop' || mobile_theme()))
+{
+  $template->assign('TOGGLE_MOBILE_THEME_URL',
+      add_url_params(
+        duplicate_index_url(),
+        array('mobile' => mobile_theme() ? 'false' : 'true')
+      )
+    );
+}
+
+trigger_action('loc_end_page_tail');
+//
+// Generate the page
+//
+$template->parse('tail');
+$template->p();
+?>
Index: /tags/2.6.0RC1/include/passwordhash.class.php
===================================================================
--- /tags/2.6.0RC1/include/passwordhash.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/passwordhash.class.php	(revision 25596)
@@ -0,0 +1,253 @@
+<?php
+#
+# Portable PHP password hashing framework.
+#
+# Version 0.3 / genuine.
+#
+# Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
+# the public domain.  Revised in subsequent years, still public domain.
+#
+# There's absolutely no warranty.
+#
+# The homepage URL for this framework is:
+#
+#	http://www.openwall.com/phpass/
+#
+# Please be sure to update the Version line if you edit this file in any way.
+# It is suggested that you leave the main version number intact, but indicate
+# your project name (after the slash) and add your own revision information.
+#
+# Please do not change the "private" password hashing method implemented in
+# here, thereby making your hashes incompatible.  However, if you must, please
+# change the hash type identifier (the "$P$") to something different.
+#
+# Obviously, since this code is in the public domain, the above are not
+# requirements (there can be none), but merely suggestions.
+#
+class PasswordHash {
+	var $itoa64;
+	var $iteration_count_log2;
+	var $portable_hashes;
+	var $random_state;
+
+	function PasswordHash($iteration_count_log2, $portable_hashes)
+	{
+		$this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+
+		if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
+			$iteration_count_log2 = 8;
+		$this->iteration_count_log2 = $iteration_count_log2;
+
+		$this->portable_hashes = $portable_hashes;
+
+		$this->random_state = microtime();
+		if (function_exists('getmypid'))
+			$this->random_state .= getmypid();
+	}
+
+	function get_random_bytes($count)
+	{
+		$output = '';
+		if (@is_readable('/dev/urandom') &&
+		    ($fh = @fopen('/dev/urandom', 'rb'))) {
+			$output = fread($fh, $count);
+			fclose($fh);
+		}
+
+		if (strlen($output) < $count) {
+			$output = '';
+			for ($i = 0; $i < $count; $i += 16) {
+				$this->random_state =
+				    md5(microtime() . $this->random_state);
+				$output .=
+				    pack('H*', md5($this->random_state));
+			}
+			$output = substr($output, 0, $count);
+		}
+
+		return $output;
+	}
+
+	function encode64($input, $count)
+	{
+		$output = '';
+		$i = 0;
+		do {
+			$value = ord($input[$i++]);
+			$output .= $this->itoa64[$value & 0x3f];
+			if ($i < $count)
+				$value |= ord($input[$i]) << 8;
+			$output .= $this->itoa64[($value >> 6) & 0x3f];
+			if ($i++ >= $count)
+				break;
+			if ($i < $count)
+				$value |= ord($input[$i]) << 16;
+			$output .= $this->itoa64[($value >> 12) & 0x3f];
+			if ($i++ >= $count)
+				break;
+			$output .= $this->itoa64[($value >> 18) & 0x3f];
+		} while ($i < $count);
+
+		return $output;
+	}
+
+	function gensalt_private($input)
+	{
+		$output = '$P$';
+		$output .= $this->itoa64[min($this->iteration_count_log2 +
+			((PHP_VERSION >= '5') ? 5 : 3), 30)];
+		$output .= $this->encode64($input, 6);
+
+		return $output;
+	}
+
+	function crypt_private($password, $setting)
+	{
+		$output = '*0';
+		if (substr($setting, 0, 2) == $output)
+			$output = '*1';
+
+		$id = substr($setting, 0, 3);
+		# We use "$P$", phpBB3 uses "$H$" for the same thing
+		if ($id != '$P$' && $id != '$H$')
+			return $output;
+
+		$count_log2 = strpos($this->itoa64, $setting[3]);
+		if ($count_log2 < 7 || $count_log2 > 30)
+			return $output;
+
+		$count = 1 << $count_log2;
+
+		$salt = substr($setting, 4, 8);
+		if (strlen($salt) != 8)
+			return $output;
+
+		# We're kind of forced to use MD5 here since it's the only
+		# cryptographic primitive available in all versions of PHP
+		# currently in use.  To implement our own low-level crypto
+		# in PHP would result in much worse performance and
+		# consequently in lower iteration counts and hashes that are
+		# quicker to crack (by non-PHP code).
+		if (PHP_VERSION >= '5') {
+			$hash = md5($salt . $password, TRUE);
+			do {
+				$hash = md5($hash . $password, TRUE);
+			} while (--$count);
+		} else {
+			$hash = pack('H*', md5($salt . $password));
+			do {
+				$hash = pack('H*', md5($hash . $password));
+			} while (--$count);
+		}
+
+		$output = substr($setting, 0, 12);
+		$output .= $this->encode64($hash, 16);
+
+		return $output;
+	}
+
+	function gensalt_extended($input)
+	{
+		$count_log2 = min($this->iteration_count_log2 + 8, 24);
+		# This should be odd to not reveal weak DES keys, and the
+		# maximum valid value is (2**24 - 1) which is odd anyway.
+		$count = (1 << $count_log2) - 1;
+
+		$output = '_';
+		$output .= $this->itoa64[$count & 0x3f];
+		$output .= $this->itoa64[($count >> 6) & 0x3f];
+		$output .= $this->itoa64[($count >> 12) & 0x3f];
+		$output .= $this->itoa64[($count >> 18) & 0x3f];
+
+		$output .= $this->encode64($input, 3);
+
+		return $output;
+	}
+
+	function gensalt_blowfish($input)
+	{
+		# This one needs to use a different order of characters and a
+		# different encoding scheme from the one in encode64() above.
+		# We care because the last character in our encoded string will
+		# only represent 2 bits.  While two known implementations of
+		# bcrypt will happily accept and correct a salt string which
+		# has the 4 unused bits set to non-zero, we do not want to take
+		# chances and we also do not want to waste an additional byte
+		# of entropy.
+		$itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+
+		$output = '$2a$';
+		$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
+		$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
+		$output .= '$';
+
+		$i = 0;
+		do {
+			$c1 = ord($input[$i++]);
+			$output .= $itoa64[$c1 >> 2];
+			$c1 = ($c1 & 0x03) << 4;
+			if ($i >= 16) {
+				$output .= $itoa64[$c1];
+				break;
+			}
+
+			$c2 = ord($input[$i++]);
+			$c1 |= $c2 >> 4;
+			$output .= $itoa64[$c1];
+			$c1 = ($c2 & 0x0f) << 2;
+
+			$c2 = ord($input[$i++]);
+			$c1 |= $c2 >> 6;
+			$output .= $itoa64[$c1];
+			$output .= $itoa64[$c2 & 0x3f];
+		} while (1);
+
+		return $output;
+	}
+
+	function HashPassword($password)
+	{
+		$random = '';
+
+		if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
+			$random = $this->get_random_bytes(16);
+			$hash =
+			    crypt($password, $this->gensalt_blowfish($random));
+			if (strlen($hash) == 60)
+				return $hash;
+		}
+
+		if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) {
+			if (strlen($random) < 3)
+				$random = $this->get_random_bytes(3);
+			$hash =
+			    crypt($password, $this->gensalt_extended($random));
+			if (strlen($hash) == 20)
+				return $hash;
+		}
+
+		if (strlen($random) < 6)
+			$random = $this->get_random_bytes(6);
+		$hash =
+		    $this->crypt_private($password,
+		    $this->gensalt_private($random));
+		if (strlen($hash) == 34)
+			return $hash;
+
+		# Returning '*' on error is safe here, but would _not_ be safe
+		# in a crypt(3)-like function used _both_ for generating new
+		# hashes and for validating passwords against existing hashes.
+		return '*';
+	}
+
+	function CheckPassword($password, $stored_hash)
+	{
+		$hash = $this->crypt_private($password, $stored_hash);
+		if ($hash[0] == '*')
+			$hash = crypt($password, $stored_hash);
+
+		return $hash == $stored_hash;
+	}
+}
+
+?>
Index: /tags/2.6.0RC1/include/php_compat/array_intersect_key.php
===================================================================
--- /tags/2.6.0RC1/include/php_compat/array_intersect_key.php	(revision 25596)
+++ /tags/2.6.0RC1/include/php_compat/array_intersect_key.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+// http://www.php.net/manual/en/function.array-intersect-key.php
+// PHP 5 >= 5.1.0RC1
+function array_intersect_key()
+{
+  $args = func_get_args();
+  if (count($args) < 2) {
+      trigger_error('Wrong parameter count for array_intersect_key()', E_USER_WARNING);
+      return;
+  }
+
+  // Check arrays
+  $array_count = count($args);
+  for ($i = 0; $i !== $array_count; $i++) {
+      if (!is_array($args[$i])) {
+          trigger_error('array_intersect_key() Argument #' . ($i + 1) . ' is not an array', E_USER_WARNING);
+          return;
+      }
+  }
+
+  // Compare entries
+  $result = array();
+  foreach ($args[0] as $key1 => $value1) {
+      for ($i = 1; $i !== $array_count; $i++) {
+          foreach ($args[$i] as $key2 => $value2) {
+              if ((string) $key1 === (string) $key2) {
+                  $result[$key1] = $value1;
+              }
+          }
+      }
+  }
+
+  return $result;
+}
+?>
Index: /tags/2.6.0RC1/include/php_compat/hash_hmac.php
===================================================================
--- /tags/2.6.0RC1/include/php_compat/hash_hmac.php	(revision 25596)
+++ /tags/2.6.0RC1/include/php_compat/hash_hmac.php	(revision 25596)
@@ -0,0 +1,25 @@
+<?php
+//(hash) - enabled by default as of PHP 5.1.2
+function hash_hmac($algo, $data, $key, $raw_output=false)
+{
+  /* md5 and sha1 only */
+  $algo=strtolower($algo);
+  $p=array('md5'=>'H32','sha1'=>'H40');
+  if ( !isset($p[$algo]) or !function_exists($algo) )
+  {
+    $algo = 'md5';
+  }
+  if(strlen($key)>64) $key=pack($p[$algo],$algo($key));
+  if(strlen($key)<64) $key=str_pad($key,64,chr(0));
+
+  $ipad=substr($key,0,64) ^ str_repeat(chr(0x36),64);
+  $opad=substr($key,0,64) ^ str_repeat(chr(0x5C),64);
+
+  $ret = $algo($opad.pack($p[$algo],$algo($ipad.$data)));
+  if ($raw_output)
+  {
+    $ret = pack('H*', $ret);
+  }
+  return $ret;
+}
+?>
Index: /tags/2.6.0RC1/include/php_compat/index.php
===================================================================
--- /tags/2.6.0RC1/include/php_compat/index.php	(revision 25596)
+++ /tags/2.6.0RC1/include/php_compat/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/include/php_compat/json_encode.php
===================================================================
--- /tags/2.6.0RC1/include/php_compat/json_encode.php	(revision 25596)
+++ /tags/2.6.0RC1/include/php_compat/json_encode.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function json_encode($data) {
+  switch (gettype($data)) {
+    case 'boolean':
+      return ($data ? 'true' : 'false');
+    case 'null':
+    case 'NULL':
+      return 'null';
+    case 'integer':
+    case 'double':
+      return $data;
+    case 'string':
+      return '"'. str_replace(array("\\",'"',"/","\n","\r","\t"), array("\\\\",'\"',"\\/","\\n","\\r","\\t"), $data) .'"';
+    case 'object':
+    case 'array':
+      if ($data === array()) return '[]'; # empty array
+      if (range(0, count($data) - 1) !== array_keys($data) ) { # string keys, unordered, non-incremental keys, .. - whatever, make object
+        $out = "\n".'{';
+        foreach($data as $key => $value) {
+          $out .= json_encode((string) $key) . ':' . json_encode($value) . ',';
+        }
+        $out = substr($out, 0, -1) . "\n". '}';
+      }else{
+        # regular array
+        $out = "\n".'[' . join("\n".',', array_map('json_encode', $data)) ."\n".']';
+      }
+      return $out;
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/php_compat/preg_last_error.php
===================================================================
--- /tags/2.6.0RC1/include/php_compat/preg_last_error.php	(revision 25596)
+++ /tags/2.6.0RC1/include/php_compat/preg_last_error.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// http://www.php.net/manual/fr/function.preg-last-error.php
+// PHP 5 >= 5.2.0
+if (!defined('PREG_NO_ERROR'))
+  define('PREG_NO_ERROR', 0);
+if (!defined('PREG_INTERNAL_ERROR'))
+  define('PREG_INTERNAL_ERROR', 1);
+if (!defined('PREG_BACKTRACK_LIMIT_ERROR'))
+  define('PREG_BACKTRACK_LIMIT_ERROR', 2);
+if (!defined('PREG_RECURSION_LIMIT_ERROR'))
+  define('PREG_RECURSION_LIMIT_ERROR', 3);
+if (!defined('PREG_BAD_UTF8_ERROR'))
+  define('PREG_BAD_UTF8_ERROR', 4);
+
+function preg_last_error()
+{
+  return PREG_NO_ERROR;
+}
+?>
Index: /tags/2.6.0RC1/include/phpmailer/PHPMailerAutoload.php
===================================================================
--- /tags/2.6.0RC1/include/phpmailer/PHPMailerAutoload.php	(revision 25596)
+++ /tags/2.6.0RC1/include/phpmailer/PHPMailerAutoload.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * PHPMailer SPL autoloader.
+ * PHP Version 5.0.0
+ * @package PHPMailer
+ * @link https://github.com/PHPMailer/PHPMailer/
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author Brent R. Matzelle (original founder)
+ * @copyright 2013 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/**
+ * PHPMailer SPL autoloader.
+ * @param string $classname The name of the class to load
+ */
+function PHPMailerAutoload($classname)
+{
+    //Can't use __DIR__ as it's only in PHP 5.3+
+    $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';
+    if (is_readable($filename)) {
+        require $filename;
+    }
+}
+
+spl_autoload_register('PHPMailerAutoload');
Index: /tags/2.6.0RC1/include/phpmailer/class.phpmailer.php
===================================================================
--- /tags/2.6.0RC1/include/phpmailer/class.phpmailer.php	(revision 25596)
+++ /tags/2.6.0RC1/include/phpmailer/class.phpmailer.php	(revision 25596)
@@ -0,0 +1,3268 @@
+<?php
+/**
+ * PHPMailer - PHP email creation and transport class.
+ * PHP Version 5.0.0
+ * Version 5.2.7
+ * @package PHPMailer
+ * @link https://github.com/PHPMailer/PHPMailer/
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author Brent R. Matzelle (original founder)
+ * @copyright 2013 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+if (version_compare(PHP_VERSION, '5.0.0', '<')) {
+    exit("Sorry, PHPMailer will only run on PHP version 5 or greater!\n");
+}
+
+/**
+ * PHPMailer - PHP email creation and transport class.
+ * PHP Version 5.0.0
+ * @package PHPMailer
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author Brent R. Matzelle (original founder)
+ * @copyright 2013 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ */
+class PHPMailer
+{
+    /**
+     * The PHPMailer Version number.
+     * @type string
+     */
+    public $Version = '5.2.7';
+
+    /**
+     * Email priority.
+     * Options: 1 = High, 3 = Normal, 5 = low.
+     * @type int
+     */
+    public $Priority = 3;
+
+    /**
+     * The character set of the message.
+     * @type string
+     */
+    public $CharSet = 'iso-8859-1';
+
+    /**
+     * The MIME Content-type of the message.
+     * @type string
+     */
+    public $ContentType = 'text/plain';
+
+    /**
+     * The message encoding.
+     * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable".
+     * @type string
+     */
+    public $Encoding = '8bit';
+
+    /**
+     * Holds the most recent mailer error message.
+     * @type string
+     */
+    public $ErrorInfo = '';
+
+    /**
+     * The From email address for the message.
+     * @type string
+     */
+    public $From = 'root@localhost';
+
+    /**
+     * The From name of the message.
+     * @type string
+     */
+    public $FromName = 'Root User';
+
+    /**
+     * The Sender email (Return-Path) of the message.
+     * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
+     * @type string
+     */
+    public $Sender = '';
+
+    /**
+     * The Return-Path of the message.
+     * If empty, it will be set to either From or Sender.
+     * @type string
+     */
+    public $ReturnPath = '';
+
+    /**
+     * The Subject of the message.
+     * @type string
+     */
+    public $Subject = '';
+
+    /**
+     * An HTML or plain text message body.
+     * If HTML then call isHTML(true).
+     * @type string
+     */
+    public $Body = '';
+
+    /**
+     * The plain-text message body.
+     * This body can be read by mail clients that do not have HTML email
+     * capability such as mutt & Eudora.
+     * Clients that can read HTML will view the normal Body.
+     * @type string
+     */
+    public $AltBody = '';
+
+    /**
+     * An iCal message part body.
+     * Only supported in simple alt or alt_inline message types
+     * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator
+     * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/
+     * @link http://kigkonsult.se/iCalcreator/
+     * @type string
+     */
+    public $Ical = '';
+
+    /**
+     * The complete compiled MIME message body.
+     * @access protected
+     * @type string
+     */
+    protected $MIMEBody = '';
+
+    /**
+     * The complete compiled MIME message headers.
+     * @type string
+     * @access protected
+     */
+    protected $MIMEHeader = '';
+
+    /**
+     * Extra headers that createHeader() doesn't fold in.
+     * @type string
+     * @access protected
+     */
+    protected $mailHeader = '';
+
+    /**
+     * Word-wrap the message body to this number of chars.
+     * @type int
+     */
+    public $WordWrap = 0;
+
+    /**
+     * Which method to use to send mail.
+     * Options: "mail", "sendmail", or "smtp".
+     * @type string
+     */
+    public $Mailer = 'mail';
+
+    /**
+     * The path to the sendmail program.
+     * @type string
+     */
+    public $Sendmail = '/usr/sbin/sendmail';
+
+    /**
+     * Whether mail() uses a fully sendmail-compatible MTA.
+     * One which supports sendmail's "-oi -f" options.
+     * @type bool
+     */
+    public $UseSendmailOptions = true;
+
+    /**
+     * Path to PHPMailer plugins.
+     * Useful if the SMTP class is not in the PHP include path.
+     * @type string
+     * @deprecated Should not be needed now there is an autoloader.
+     */
+    public $PluginDir = '';
+
+    /**
+     * The email address that a reading confirmation should be sent to.
+     * @type string
+     */
+    public $ConfirmReadingTo = '';
+
+    /**
+     * The hostname to use in Message-Id and Received headers
+     * and as default HELO string.
+     * If empty, the value returned
+     * by SERVER_NAME is used or 'localhost.localdomain'.
+     * @type string
+     */
+    public $Hostname = '';
+
+    /**
+     * An ID to be used in the Message-Id header.
+     * If empty, a unique id will be generated.
+     * @type string
+     */
+    public $MessageID = '';
+
+    /**
+     * The message Date to be used in the Date header.
+     * If empty, the current date will be added.
+     * @type string
+     */
+    public $MessageDate = '';
+
+    /**
+     * SMTP hosts.
+     * Either a single hostname or multiple semicolon-delimited hostnames.
+     * You can also specify a different port
+     * for each host by using this format: [hostname:port]
+     * (e.g. "smtp1.example.com:25;smtp2.example.com").
+     * Hosts will be tried in order.
+     * @type string
+     */
+    public $Host = 'localhost';
+
+    /**
+     * The default SMTP server port.
+     * @type int
+     * @Todo Why is this needed when the SMTP class takes care of it?
+     */
+    public $Port = 25;
+
+    /**
+     * The SMTP HELO of the message.
+     * Default is $Hostname.
+     * @type string
+     * @see PHPMailer::$Hostname
+     */
+    public $Helo = '';
+
+    /**
+     * The secure connection prefix.
+     * Options: "", "ssl" or "tls"
+     * @type string
+     */
+    public $SMTPSecure = '';
+
+    /**
+     * Whether to use SMTP authentication.
+     * Uses the Username and Password properties.
+     * @type bool
+     * @see PHPMailer::$Username
+     * @see PHPMailer::$Password
+     */
+    public $SMTPAuth = false;
+
+    /**
+     * SMTP username.
+     * @type string
+     */
+    public $Username = '';
+
+    /**
+     * SMTP password.
+     * @type string
+     */
+    public $Password = '';
+
+    /**
+     * SMTP auth type.
+     * Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
+     * @type string
+     */
+    public $AuthType = '';
+
+    /**
+     * SMTP realm.
+     * Used for NTLM auth
+     * @type string
+     */
+    public $Realm = '';
+
+    /**
+     * SMTP workstation.
+     * Used for NTLM auth
+     * @type string
+     */
+    public $Workstation = '';
+
+    /**
+     * The SMTP server timeout in seconds.
+     * @type int
+     */
+    public $Timeout = 10;
+
+    /**
+     * SMTP class debug output mode.
+     * Options: 0 = off, 1 = commands, 2 = commands and data
+     * @type int
+     * @see SMTP::$do_debug
+     */
+    public $SMTPDebug = 0;
+
+    /**
+     * The function/method to use for debugging output.
+     * Options: "echo" or "error_log"
+     * @type string
+     * @see SMTP::$Debugoutput
+     */
+    public $Debugoutput = "echo";
+
+    /**
+     * Whether to keep SMTP connection open after each message.
+     * If this is set to true then to close the connection
+     * requires an explicit call to smtpClose().
+     * @type bool
+     */
+    public $SMTPKeepAlive = false;
+
+    /**
+     * Whether to split multiple to addresses into multiple messages
+     * or send them all in one message.
+     * @type bool
+     */
+    public $SingleTo = false;
+
+    /**
+     * Storage for addresses when SingleTo is enabled.
+     * @type array
+     * @todo This should really not be public
+     */
+    public $SingleToArray = array();
+
+    /**
+     * Whether to generate VERP addresses on send.
+     * Only applicable when sending via SMTP.
+     * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
+     * @type bool
+     */
+    public $do_verp = false;
+
+    /**
+     * Whether to allow sending messages with an empty body.
+     * @type bool
+     */
+    public $AllowEmpty = false;
+
+    /**
+     * The default line ending.
+     * @note The default remains "\n". We force CRLF where we know
+     *        it must be used via self::CRLF.
+     * @type string
+     */
+    public $LE = "\n";
+
+    /**
+     * DKIM selector.
+     * @type string
+     */
+    public $DKIM_selector = '';
+
+    /**
+     * DKIM Identity.
+     * Usually the email address used as the source of the email
+     * @type string
+     */
+    public $DKIM_identity = '';
+
+    /**
+     * DKIM passphrase.
+     * Used if your key is encrypted.
+     * @type string
+     */
+    public $DKIM_passphrase = '';
+
+    /**
+     * DKIM signing domain name.
+     * @example 'example.com'
+     * @type string
+     */
+    public $DKIM_domain = '';
+
+    /**
+     * DKIM private key file path.
+     * @type string
+     */
+    public $DKIM_private = '';
+
+    /**
+     * Callback Action function name.
+     *
+     * The function that handles the result of the send email action.
+     * It is called out by send() for each email sent.
+     *
+     * Value can be:
+     * - 'function_name' for function names
+     * - 'Class::Method' for static method calls
+     * - array($object, 'Method') for calling methods on $object
+     * See http://php.net/is_callable manual page for more details.
+     *
+     * Parameters:
+     *   bool    $result        result of the send action
+     *   string  $to            email address of the recipient
+     *   string  $cc            cc email addresses
+     *   string  $bcc           bcc email addresses
+     *   string  $subject       the subject
+     *   string  $body          the email body
+     *   string  $from          email address of sender
+     * 
+     * @type string
+     */
+    public $action_function = '';
+
+    /**
+     * What to use in the X-Mailer header.
+     * Options: null for default, whitespace for none, or a string to use
+     * @type string
+     */
+    public $XMailer = '';
+
+    /**
+     * An instance of the SMTP sender class.
+     * @type SMTP
+     * @access protected
+     */
+    protected $smtp = null;
+
+    /**
+     * The array of 'to' addresses.
+     * @type array
+     * @access protected
+     */
+    protected $to = array();
+
+    /**
+     * The array of 'cc' addresses.
+     * @type array
+     * @access protected
+     */
+    protected $cc = array();
+
+    /**
+     * The array of 'bcc' addresses.
+     * @type array
+     * @access protected
+     */
+    protected $bcc = array();
+
+    /**
+     * The array of reply-to names and addresses.
+     * @type array
+     * @access protected
+     */
+    protected $ReplyTo = array();
+
+    /**
+     * An array of all kinds of addresses.
+     * Includes all of $to, $cc, $bcc, $replyto
+     * @type array
+     * @access protected
+     */
+    protected $all_recipients = array();
+
+    /**
+     * The array of attachments.
+     * @type array
+     * @access protected
+     */
+    protected $attachment = array();
+
+    /**
+     * The array of custom headers.
+     * @type array
+     * @access protected
+     */
+    protected $CustomHeader = array();
+
+    /**
+     * The most recent Message-ID (including angular brackets).
+     * @type string
+     * @access protected
+     */
+    protected $lastMessageID = '';
+
+    /**
+     * The message's MIME type.
+     * @type string
+     * @access protected
+     */
+    protected $message_type = '';
+
+    /**
+     * The array of MIME boundary strings.
+     * @type array
+     * @access protected
+     */
+    protected $boundary = array();
+
+    /**
+     * The array of available languages.
+     * @type array
+     * @access protected
+     */
+    protected $language = array();
+
+    /**
+     * The number of errors encountered.
+     * @type integer
+     * @access protected
+     */
+    protected $error_count = 0;
+
+    /**
+     * The S/MIME certificate file path.
+     * @type string
+     * @access protected
+     */
+    protected $sign_cert_file = '';
+
+    /**
+     * The S/MIME key file path.
+     * @type string
+     * @access protected
+     */
+    protected $sign_key_file = '';
+
+    /**
+     * The S/MIME password for the key.
+     * Used only if the key is encrypted.
+     * @type string
+     * @access protected
+     */
+    protected $sign_key_pass = '';
+
+    /**
+     * Whether to throw exceptions for errors.
+     * @type bool
+     * @access protected
+     */
+    protected $exceptions = false;
+
+    /**
+     * Error severity: message only, continue processing
+     */
+    const STOP_MESSAGE = 0;
+
+    /**
+     * Error severity: message, likely ok to continue processing
+     */
+    const STOP_CONTINUE = 1;
+
+    /**
+     * Error severity: message, plus full stop, critical error reached
+     */
+    const STOP_CRITICAL = 2;
+
+    /**
+     * SMTP RFC standard line ending
+     */
+    const CRLF = "\r\n";
+
+    /**
+     * Constructor
+     * @param bool $exceptions Should we throw external exceptions?
+     */
+    public function __construct($exceptions = false)
+    {
+        $this->exceptions = ($exceptions == true);
+        //Make sure our autoloader is loaded
+        if (!in_array('PHPMailerAutoload', spl_autoload_functions())) {
+          require 'PHPMailerAutoload.php';
+        }
+    }
+
+    /**
+     * Destructor.
+     */
+    public function __destruct()
+    {
+        if ($this->Mailer == 'smtp') { //close any open SMTP connection nicely
+            $this->smtpClose();
+        }
+    }
+
+    /**
+     * Call mail() in a safe_mode-aware fashion.
+     * Also, unless sendmail_path points to sendmail (or something that
+     * claims to be sendmail), don't pass params (not a perfect fix,
+     * but it will do)
+     * @param string $to To
+     * @param string $subject Subject
+     * @param string $body Message Body
+     * @param string $header Additional Header(s)
+     * @param string $params Params
+     * @access private
+     * @return bool
+     */
+    private function mailPassthru($to, $subject, $body, $header, $params)
+    {
+        if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
+            $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header);
+        } else {
+            $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header, $params);
+        }
+        return $rt;
+    }
+
+    /**
+     * Output debugging info via user-defined method.
+     * Only if debug output is enabled.
+     * @see PHPMailer::$Debugoutput
+     * @see PHPMailer::$SMTPDebug
+     * @param string $str
+     */
+    protected function edebug($str)
+    {
+        if (!$this->SMTPDebug) {
+            return;
+        }
+        switch ($this->Debugoutput) {
+            case 'error_log':
+                error_log($str);
+                break;
+            case 'html':
+                //Cleans up output a bit for a better looking display that's HTML-safe
+                echo htmlentities(preg_replace('/[\r\n]+/', '', $str), ENT_QUOTES, $this->CharSet) . "<br>\n";
+                break;
+            case 'echo':
+            default:
+                //Just echoes exactly what was received
+                echo $str;
+        }
+    }
+
+    /**
+     * Sets message type to HTML or plain.
+     * @param bool $ishtml True for HTML mode.
+     * @return void
+     */
+    public function isHTML($ishtml = true)
+    {
+        if ($ishtml) {
+            $this->ContentType = 'text/html';
+        } else {
+            $this->ContentType = 'text/plain';
+        }
+    }
+
+    /**
+     * Send messages using SMTP.
+     * @return void
+     */
+    public function isSMTP()
+    {
+        $this->Mailer = 'smtp';
+    }
+
+    /**
+     * Send messages using PHP's mail() function.
+     * @return void
+     */
+    public function isMail()
+    {
+        $this->Mailer = 'mail';
+    }
+
+    /**
+     * Send messages using $Sendmail.
+     * @return void
+     */
+    public function isSendmail()
+    {
+        if (!stristr(ini_get('sendmail_path'), 'sendmail')) {
+            $this->Sendmail = '/var/qmail/bin/sendmail';
+        }
+        $this->Mailer = 'sendmail';
+    }
+
+    /**
+     * Send messages using qmail.
+     * @return void
+     */
+    public function isQmail()
+    {
+        if (stristr(ini_get('sendmail_path'), 'qmail')) {
+            $this->Sendmail = '/var/qmail/bin/sendmail';
+        }
+        $this->Mailer = 'sendmail';
+    }
+
+    /**
+     * Add a "To" address.
+     * @param string $address
+     * @param string $name
+     * @return bool true on success, false if address already used
+     */
+    public function addAddress($address, $name = '')
+    {
+        return $this->addAnAddress('to', $address, $name);
+    }
+
+    /**
+     * Add a "CC" address.
+     * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
+     * @param string $address
+     * @param string $name
+     * @return bool true on success, false if address already used
+     */
+    public function addCC($address, $name = '')
+    {
+        return $this->addAnAddress('cc', $address, $name);
+    }
+
+    /**
+     * Add a "BCC" address.
+     * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
+     * @param string $address
+     * @param string $name
+     * @return bool true on success, false if address already used
+     */
+    public function addBCC($address, $name = '')
+    {
+        return $this->addAnAddress('bcc', $address, $name);
+    }
+
+    /**
+     * Add a "Reply-to" address.
+     * @param string $address
+     * @param string $name
+     * @return bool
+     */
+    public function addReplyTo($address, $name = '')
+    {
+        return $this->addAnAddress('Reply-To', $address, $name);
+    }
+
+    /**
+     * Add an address to one of the recipient arrays.
+     * Addresses that have been added already return false, but do not throw exceptions
+     * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo'
+     * @param string $address The email address to send to
+     * @param string $name
+     * @throws phpmailerException
+     * @return bool true on success, false if address already used or invalid in some way
+     * @access protected
+     */
+    protected function addAnAddress($kind, $address, $name = '')
+    {
+        if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
+            $this->setError($this->lang('Invalid recipient array') . ': ' . $kind);
+            if ($this->exceptions) {
+                throw new phpmailerException('Invalid recipient array: ' . $kind);
+            }
+            $this->edebug($this->lang('Invalid recipient array') . ': ' . $kind);
+            return false;
+        }
+        $address = trim($address);
+        $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+        if (!$this->validateAddress($address)) {
+            $this->setError($this->lang('invalid_address') . ': ' . $address);
+            if ($this->exceptions) {
+                throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
+            }
+            $this->edebug($this->lang('invalid_address') . ': ' . $address);
+            return false;
+        }
+        if ($kind != 'Reply-To') {
+            if (!isset($this->all_recipients[strtolower($address)])) {
+                array_push($this->$kind, array($address, $name));
+                $this->all_recipients[strtolower($address)] = true;
+                return true;
+            }
+        } else {
+            if (!array_key_exists(strtolower($address), $this->ReplyTo)) {
+                $this->ReplyTo[strtolower($address)] = array($address, $name);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Set the From and FromName properties.
+     * @param string $address
+     * @param string $name
+     * @param bool $auto Whether to also set the Sender address, defaults to true
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function setFrom($address, $name = '', $auto = true)
+    {
+        $address = trim($address);
+        $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+        if (!$this->validateAddress($address)) {
+            $this->setError($this->lang('invalid_address') . ': ' . $address);
+            if ($this->exceptions) {
+                throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
+            }
+            $this->edebug($this->lang('invalid_address') . ': ' . $address);
+            return false;
+        }
+        $this->From = $address;
+        $this->FromName = $name;
+        if ($auto) {
+            if (empty($this->Sender)) {
+                $this->Sender = $address;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Return the Message-ID header of the last email.
+     * Technically this is the value from the last time the headers were created,
+     * but it's also the message ID of the last sent message except in
+     * pathological cases.
+     * @return string
+     */
+    public function getLastMessageID()
+    {
+        return $this->lastMessageID;
+    }
+
+    /**
+     * Check that a string looks like an email address.
+     * @param string $address The email address to check
+     * @param string $patternselect A selector for the validation pattern to use :
+     *   'auto' - pick best one automatically;
+     *   'pcre8' - use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
+     *   'pcre' - use old PCRE implementation;
+     *   'php' - use PHP built-in FILTER_VALIDATE_EMAIL; faster, less thorough;
+     *   'noregex' - super fast, really dumb.
+     * @return bool
+     * @static
+     * @access public
+     */
+    public static function validateAddress($address, $patternselect = 'auto')
+    {
+        if ($patternselect == 'auto') {
+            if (defined(
+                'PCRE_VERSION'
+            )
+            ) { //Check this instead of extension_loaded so it works when that function is disabled
+                if (version_compare(PCRE_VERSION, '8.0') >= 0) {
+                    $patternselect = 'pcre8';
+                } else {
+                    $patternselect = 'pcre';
+                }
+            } else {
+                //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension
+                if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
+                    $patternselect = 'php';
+                } else {
+                    $patternselect = 'noregex';
+                }
+            }
+        }
+        switch ($patternselect) {
+            case 'pcre8':
+                /**
+                 * Conforms to RFC5322: Uses *correct* regex on which FILTER_VALIDATE_EMAIL is
+                 * based; So why not use FILTER_VALIDATE_EMAIL? Because it was broken to
+                 * not allow a@b type valid addresses :(
+                 * @link http://squiloople.com/2009/12/20/email-address-validation/
+                 * @copyright 2009-2010 Michael Rushton
+                 * Feel free to use and redistribute this code. But please keep this copyright notice.
+                 */
+                return (bool)preg_match(
+                    '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' .
+                    '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' .
+                    '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' .
+                    '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' .
+                    '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' .
+                    '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' .
+                    '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' .
+                    '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' .
+                    '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD',
+                    $address
+                );
+                break;
+            case 'pcre':
+                //An older regex that doesn't need a recent PCRE
+                return (bool)preg_match(
+                    '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' .
+                    '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' .
+                    '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' .
+                    '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' .
+                    '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' .
+                    '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' .
+                    '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' .
+                    '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' .
+                    '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' .
+                    '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD',
+                    $address
+                );
+                break;
+            case 'php':
+            default:
+                return (bool)filter_var($address, FILTER_VALIDATE_EMAIL);
+                break;
+            case 'noregex':
+                //No PCRE! Do something _very_ approximate!
+                //Check the address is 3 chars or longer and contains an @ that's not the first or last char
+                return (strlen($address) >= 3
+                    and strpos($address, '@') >= 1
+                    and strpos($address, '@') != strlen($address) - 1);
+                break;
+        }
+    }
+
+    /**
+     * Create a message and send it.
+     * Uses the sending method specified by $Mailer.
+     * Returns false on error - Use the ErrorInfo variable to view description of the error.
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function send()
+    {
+        try {
+            if (!$this->preSend()) {
+                return false;
+            }
+            return $this->postSend();
+        } catch (phpmailerException $e) {
+            $this->mailHeader = '';
+            $this->setError($e->getMessage());
+            if ($this->exceptions) {
+                throw $e;
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Prepare a message for sending.
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function preSend()
+    {
+        try {
+            $this->mailHeader = "";
+            if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
+                throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL);
+            }
+
+            // Set whether the message is multipart/alternative
+            if (!empty($this->AltBody)) {
+                $this->ContentType = 'multipart/alternative';
+            }
+
+            $this->error_count = 0; // reset errors
+            $this->setMessageType();
+            // Refuse to send an empty message unless we are specifically allowing it
+            if (!$this->AllowEmpty and empty($this->Body)) {
+                throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL);
+            }
+
+            $this->MIMEHeader = $this->createHeader();
+            $this->MIMEBody = $this->createBody();
+
+            // To capture the complete message when using mail(), create
+            // an extra header list which createHeader() doesn't fold in
+            if ($this->Mailer == 'mail') {
+                if (count($this->to) > 0) {
+                    $this->mailHeader .= $this->addrAppend("To", $this->to);
+                } else {
+                    $this->mailHeader .= $this->headerLine("To", "undisclosed-recipients:;");
+                }
+                $this->mailHeader .= $this->headerLine(
+                    'Subject',
+                    $this->encodeHeader($this->secureHeader(trim($this->Subject)))
+                );
+            }
+
+            // Sign with DKIM if enabled
+            if (!empty($this->DKIM_domain)
+                && !empty($this->DKIM_private)
+                && !empty($this->DKIM_selector)
+                && !empty($this->DKIM_domain)
+                && file_exists($this->DKIM_private)) {
+                $header_dkim = $this->DKIM_Add(
+                    $this->MIMEHeader . $this->mailHeader,
+                    $this->encodeHeader($this->secureHeader($this->Subject)),
+                    $this->MIMEBody
+                );
+                $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . self::CRLF .
+                    str_replace("\r\n", "\n", $header_dkim) . self::CRLF;
+            }
+            return true;
+
+        } catch (phpmailerException $e) {
+            $this->setError($e->getMessage());
+            if ($this->exceptions) {
+                throw $e;
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Actually send a message.
+     * Send the email via the selected mechanism
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function postSend()
+    {
+        try {
+            // Choose the mailer and send through it
+            switch ($this->Mailer) {
+                case 'sendmail':
+                    return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody);
+                case 'smtp':
+                    return $this->smtpSend($this->MIMEHeader, $this->MIMEBody);
+                case 'mail':
+                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
+                default:
+                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
+            }
+        } catch (phpmailerException $e) {
+            $this->setError($e->getMessage());
+            if ($this->exceptions) {
+                throw $e;
+            }
+            $this->edebug($e->getMessage() . "\n");
+        }
+        return false;
+    }
+
+    /**
+     * Send mail using the $Sendmail program.
+     * @param string $header The message headers
+     * @param string $body The message body
+     * @see PHPMailer::$Sendmail
+     * @throws phpmailerException
+     * @access protected
+     * @return bool
+     */
+    protected function sendmailSend($header, $body)
+    {
+        if ($this->Sender != '') {
+            $sendmail = sprintf("%s -oi -f%s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
+        } else {
+            $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
+        }
+        if ($this->SingleTo === true) {
+            foreach ($this->SingleToArray as $val) {
+                if (!@$mail = popen($sendmail, 'w')) {
+                    throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+                }
+                fputs($mail, "To: " . $val . "\n");
+                fputs($mail, $header);
+                fputs($mail, $body);
+                $result = pclose($mail);
+                // implement call back function if it exists
+                $isSent = ($result == 0) ? 1 : 0;
+                $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
+                if ($result != 0) {
+                    throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+                }
+            }
+        } else {
+            if (!@$mail = popen($sendmail, 'w')) {
+                throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+            }
+            fputs($mail, $header);
+            fputs($mail, $body);
+            $result = pclose($mail);
+            // implement call back function if it exists
+            $isSent = ($result == 0) ? 1 : 0;
+            $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
+            if ($result != 0) {
+                throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Send mail using the PHP mail() function.
+     * @param string $header The message headers
+     * @param string $body The message body
+     * @link http://www.php.net/manual/en/book.mail.php
+     * @throws phpmailerException
+     * @access protected
+     * @return bool
+     */
+    protected function mailSend($header, $body)
+    {
+        $toArr = array();
+        foreach ($this->to as $t) {
+            $toArr[] = $this->addrFormat($t);
+        }
+        $to = implode(', ', $toArr);
+
+        if (empty($this->Sender)) {
+            $params = " ";
+        } else {
+            $params = sprintf("-f%s", $this->Sender);
+        }
+        if ($this->Sender != '' and !ini_get('safe_mode')) {
+            $old_from = ini_get('sendmail_from');
+            ini_set('sendmail_from', $this->Sender);
+        }
+        $rt = false;
+        if ($this->SingleTo === true && count($toArr) > 1) {
+            foreach ($toArr as $val) {
+                $rt = $this->mailPassthru($val, $this->Subject, $body, $header, $params);
+                // implement call back function if it exists
+                $isSent = ($rt == 1) ? 1 : 0;
+                $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
+            }
+        } else {
+            $rt = $this->mailPassthru($to, $this->Subject, $body, $header, $params);
+            // implement call back function if it exists
+            $isSent = ($rt == 1) ? 1 : 0;
+            $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
+        }
+        if (isset($old_from)) {
+            ini_set('sendmail_from', $old_from);
+        }
+        if (!$rt) {
+            throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL);
+        }
+        return true;
+    }
+
+    /**
+     * Get an instance to use for SMTP operations.
+     * Override this function to load your own SMTP implementation
+     * @return SMTP
+     */
+    public function getSMTPInstance()
+    {
+        if (!is_object($this->smtp)) {
+            $this->smtp = new SMTP;
+        }
+        return $this->smtp;
+    }
+
+    /**
+     * Send mail via SMTP.
+     * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
+     * Uses the PHPMailerSMTP class by default.
+     * @see PHPMailer::getSMTPInstance() to use a different class.
+     * @param string $header The message headers
+     * @param string $body The message body
+     * @throws phpmailerException
+     * @uses SMTP
+     * @access protected
+     * @return bool
+     */
+    protected function smtpSend($header, $body)
+    {
+        $bad_rcpt = array();
+
+        if (!$this->smtpConnect()) {
+            throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
+        }
+        $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
+        if (!$this->smtp->mail($smtp_from)) {
+            $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
+            throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL);
+        }
+
+        // Attempt to send attach all recipients
+        foreach ($this->to as $to) {
+            if (!$this->smtp->recipient($to[0])) {
+                $bad_rcpt[] = $to[0];
+                $isSent = 0;
+            } else {
+                $isSent = 1;
+            }
+            $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body, $this->From);
+        }
+        foreach ($this->cc as $cc) {
+            if (!$this->smtp->recipient($cc[0])) {
+                $bad_rcpt[] = $cc[0];
+                $isSent = 0;
+            } else {
+                $isSent = 1;
+            }
+            $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body, $this->From);
+        }
+        foreach ($this->bcc as $bcc) {
+            if (!$this->smtp->recipient($bcc[0])) {
+                $bad_rcpt[] = $bcc[0];
+                $isSent = 0;
+            } else {
+                $isSent = 1;
+            }
+            $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body, $this->From);
+        }
+
+        if (count($bad_rcpt) > 0) { //Create error message for any bad addresses
+            throw new phpmailerException($this->lang('recipients_failed') . implode(', ', $bad_rcpt));
+        }
+        if (!$this->smtp->data($header . $body)) {
+            throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL);
+        }
+        if ($this->SMTPKeepAlive == true) {
+            $this->smtp->reset();
+        } else {
+            $this->smtp->quit();
+            $this->smtp->close();
+        }
+        return true;
+    }
+
+    /**
+     * Initiate a connection to an SMTP server.
+     * Returns false if the operation failed.
+     * @param array $options An array of options compatible with stream_context_create()
+     * @uses SMTP
+     * @access public
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function smtpConnect($options = array())
+    {
+        if (is_null($this->smtp)) {
+            $this->smtp = $this->getSMTPInstance();
+        }
+
+        //Already connected?
+        if ($this->smtp->connected()) {
+            return true;
+        }
+
+        $this->smtp->setTimeout($this->Timeout);
+        $this->smtp->setDebugLevel($this->SMTPDebug);
+        $this->smtp->setDebugOutput($this->Debugoutput);
+        $this->smtp->setVerp($this->do_verp);
+        $tls = ($this->SMTPSecure == 'tls');
+        $ssl = ($this->SMTPSecure == 'ssl');
+        $hosts = explode(';', $this->Host);
+        $lastexception = null;
+
+        foreach ($hosts as $hostentry) {
+            $hostinfo = array();
+            $host = $hostentry;
+            $port = $this->Port;
+            if (preg_match(
+                '/^(.+):([0-9]+)$/',
+                $hostentry,
+                $hostinfo
+            )
+            ) { //If $hostentry contains 'address:port', override default
+                $host = $hostinfo[1];
+                $port = $hostinfo[2];
+            }
+            if ($this->smtp->connect(($ssl ? 'ssl://' : '') . $host, $port, $this->Timeout, $options)) {
+                try {
+                    if ($this->Helo) {
+                        $hello = $this->Helo;
+                    } else {
+                        $hello = $this->serverHostname();
+                    }
+                    $this->smtp->hello($hello);
+
+                    if ($tls) {
+                        if (!$this->smtp->startTLS()) {
+                            throw new phpmailerException($this->lang('connect_host'));
+                        }
+                        //We must resend HELO after tls negotiation
+                        $this->smtp->hello($hello);
+                    }
+                    if ($this->SMTPAuth) {
+                        if (!$this->smtp->authenticate(
+                            $this->Username,
+                            $this->Password,
+                            $this->AuthType,
+                            $this->Realm,
+                            $this->Workstation
+                        )
+                        ) {
+                            throw new phpmailerException($this->lang('authenticate'));
+                        }
+                    }
+                    return true;
+                } catch (phpmailerException $e) {
+                    $lastexception = $e;
+                    //We must have connected, but then failed TLS or Auth, so close connection nicely
+                    $this->smtp->quit();
+                }
+            }
+        }
+        //If we get here, all connection attempts have failed, so close connection hard
+        $this->smtp->close();
+        //As we've caught all exceptions, just report whatever the last one was
+        if ($this->exceptions and !is_null($lastexception)) {
+            throw $lastexception;
+        }
+        return false;
+    }
+
+    /**
+     * Close the active SMTP session if one exists.
+     * @return void
+     */
+    public function smtpClose()
+    {
+        if ($this->smtp !== null) {
+            if ($this->smtp->connected()) {
+                $this->smtp->quit();
+                $this->smtp->close();
+            }
+        }
+    }
+
+    /**
+     * Set the language for error messages.
+     * Returns false if it cannot load the language file.
+     * The default language is English.
+     * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr")
+     * @param string $lang_path Path to the language file directory, with trailing separator (slash)
+     * @return bool
+     * @access public
+     */
+    public function setLanguage($langcode = 'en', $lang_path = 'language/')
+    {
+        //Define full set of translatable strings
+        $PHPMAILER_LANG = array(
+            'authenticate' => 'SMTP Error: Could not authenticate.',
+            'connect_host' => 'SMTP Error: Could not connect to SMTP host.',
+            'data_not_accepted' => 'SMTP Error: data not accepted.',
+            'empty_message' => 'Message body empty',
+            'encoding' => 'Unknown encoding: ',
+            'execute' => 'Could not execute: ',
+            'file_access' => 'Could not access file: ',
+            'file_open' => 'File Error: Could not open file: ',
+            'from_failed' => 'The following From address failed: ',
+            'instantiate' => 'Could not instantiate mail function.',
+            'invalid_address' => 'Invalid address',
+            'mailer_not_supported' => ' mailer is not supported.',
+            'provide_address' => 'You must provide at least one recipient email address.',
+            'recipients_failed' => 'SMTP Error: The following recipients failed: ',
+            'signing' => 'Signing Error: ',
+            'smtp_connect_failed' => 'SMTP connect() failed.',
+            'smtp_error' => 'SMTP server error: ',
+            'variable_set' => 'Cannot set or reset variable: '
+        );
+        //Overwrite language-specific strings.
+        //This way we'll never have missing translations - no more "language string failed to load"!
+        $l = true;
+        if ($langcode != 'en') { //There is no English translation file
+            $l = @include $lang_path . 'phpmailer.lang-' . $langcode . '.php';
+        }
+        $this->language = $PHPMAILER_LANG;
+        return ($l == true); //Returns false if language not found
+    }
+
+    /**
+     * Get the array of strings for the current language.
+     * @return array
+     */
+    public function getTranslations()
+    {
+        return $this->language;
+    }
+
+    /**
+     * Create recipient headers.
+     * @access public
+     * @param string $type
+     * @param array $addr An array of recipient,
+     * where each recipient is a 2-element indexed array with element 0 containing an address
+     * and element 1 containing a name, like:
+     * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User'))
+     * @return string
+     */
+    public function addrAppend($type, $addr)
+    {
+        $addresses = array();
+        foreach ($addr as $a) {
+            $addresses[] = $this->addrFormat($a);
+        }
+        return $type . ': ' . implode(', ', $addresses) . $this->LE;
+    }
+
+    /**
+     * Format an address for use in a message header.
+     * @access public
+     * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name
+     *      like array('joe@example.com', 'Joe User')
+     * @return string
+     */
+    public function addrFormat($addr)
+    {
+        if (empty($addr[1])) { // No name provided
+            return $this->secureHeader($addr[0]);
+        } else {
+            return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . " <" . $this->secureHeader(
+                $addr[0]
+            ) . ">";
+        }
+    }
+
+    /**
+     * Word-wrap message.
+     * For use with mailers that do not automatically perform wrapping
+     * and for quoted-printable encoded messages.
+     * Original written by philippe.
+     * @param string $message The message to wrap
+     * @param integer $length The line length to wrap to
+     * @param bool $qp_mode Whether to run in Quoted-Printable mode
+     * @access public
+     * @return string
+     */
+    public function wrapText($message, $length, $qp_mode = false)
+    {
+        $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
+        // If utf-8 encoding is used, we will need to make sure we don't
+        // split multibyte characters when we wrap
+        $is_utf8 = (strtolower($this->CharSet) == "utf-8");
+        $lelen = strlen($this->LE);
+        $crlflen = strlen(self::CRLF);
+
+        $message = $this->fixEOL($message);
+        if (substr($message, -$lelen) == $this->LE) {
+            $message = substr($message, 0, -$lelen);
+        }
+
+        $line = explode($this->LE, $message); // Magic. We know fixEOL uses $LE
+        $message = '';
+        for ($i = 0; $i < count($line); $i++) {
+            $line_part = explode(' ', $line[$i]);
+            $buf = '';
+            for ($e = 0; $e < count($line_part); $e++) {
+                $word = $line_part[$e];
+                if ($qp_mode and (strlen($word) > $length)) {
+                    $space_left = $length - strlen($buf) - $crlflen;
+                    if ($e != 0) {
+                        if ($space_left > 20) {
+                            $len = $space_left;
+                            if ($is_utf8) {
+                                $len = $this->utf8CharBoundary($word, $len);
+                            } elseif (substr($word, $len - 1, 1) == "=") {
+                                $len--;
+                            } elseif (substr($word, $len - 2, 1) == "=") {
+                                $len -= 2;
+                            }
+                            $part = substr($word, 0, $len);
+                            $word = substr($word, $len);
+                            $buf .= ' ' . $part;
+                            $message .= $buf . sprintf("=%s", self::CRLF);
+                        } else {
+                            $message .= $buf . $soft_break;
+                        }
+                        $buf = '';
+                    }
+                    while (strlen($word) > 0) {
+                        if ($length <= 0) {
+                            break;
+                        }
+                        $len = $length;
+                        if ($is_utf8) {
+                            $len = $this->utf8CharBoundary($word, $len);
+                        } elseif (substr($word, $len - 1, 1) == "=") {
+                            $len--;
+                        } elseif (substr($word, $len - 2, 1) == "=") {
+                            $len -= 2;
+                        }
+                        $part = substr($word, 0, $len);
+                        $word = substr($word, $len);
+
+                        if (strlen($word) > 0) {
+                            $message .= $part . sprintf("=%s", self::CRLF);
+                        } else {
+                            $buf = $part;
+                        }
+                    }
+                } else {
+                    $buf_o = $buf;
+                    $buf .= ($e == 0) ? $word : (' ' . $word);
+
+                    if (strlen($buf) > $length and $buf_o != '') {
+                        $message .= $buf_o . $soft_break;
+                        $buf = $word;
+                    }
+                }
+            }
+            $message .= $buf . self::CRLF;
+        }
+
+        return $message;
+    }
+
+    /**
+     * Find the last character boundary prior to $maxLength in a utf-8
+     * quoted (printable) encoded string.
+     * Original written by Colin Brown.
+     * @access public
+     * @param string $encodedText utf-8 QP text
+     * @param int $maxLength   find last character boundary prior to this length
+     * @return int
+     */
+    public function utf8CharBoundary($encodedText, $maxLength)
+    {
+        $foundSplitPos = false;
+        $lookBack = 3;
+        while (!$foundSplitPos) {
+            $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
+            $encodedCharPos = strpos($lastChunk, "=");
+            if ($encodedCharPos !== false) {
+                // Found start of encoded character byte within $lookBack block.
+                // Check the encoded byte value (the 2 chars after the '=')
+                $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
+                $dec = hexdec($hex);
+                if ($dec < 128) { // Single byte character.
+                    // If the encoded char was found at pos 0, it will fit
+                    // otherwise reduce maxLength to start of the encoded char
+                    $maxLength = ($encodedCharPos == 0) ? $maxLength :
+                        $maxLength - ($lookBack - $encodedCharPos);
+                    $foundSplitPos = true;
+                } elseif ($dec >= 192) { // First byte of a multi byte character
+                    // Reduce maxLength to split at start of character
+                    $maxLength = $maxLength - ($lookBack - $encodedCharPos);
+                    $foundSplitPos = true;
+                } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
+                    $lookBack += 3;
+                }
+            } else {
+                // No encoded character found
+                $foundSplitPos = true;
+            }
+        }
+        return $maxLength;
+    }
+
+
+    /**
+     * Set the body wrapping.
+     * @access public
+     * @return void
+     */
+    public function setWordWrap()
+    {
+        if ($this->WordWrap < 1) {
+            return;
+        }
+
+        switch ($this->message_type) {
+            case 'alt':
+            case 'alt_inline':
+            case 'alt_attach':
+            case 'alt_inline_attach':
+                $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap);
+                break;
+            default:
+                $this->Body = $this->wrapText($this->Body, $this->WordWrap);
+                break;
+        }
+    }
+
+    /**
+     * Assemble message headers.
+     * @access public
+     * @return string The assembled headers
+     */
+    public function createHeader()
+    {
+        $result = '';
+
+        // Set the boundaries
+        $uniq_id = md5(uniqid(time()));
+        $this->boundary[1] = 'b1_' . $uniq_id;
+        $this->boundary[2] = 'b2_' . $uniq_id;
+        $this->boundary[3] = 'b3_' . $uniq_id;
+
+        if ($this->MessageDate == '') {
+            $result .= $this->headerLine('Date', self::rfcDate());
+        } else {
+            $result .= $this->headerLine('Date', $this->MessageDate);
+        }
+
+        if ($this->ReturnPath) {
+            $result .= $this->headerLine('Return-Path', '<' . trim($this->ReturnPath) . '>');
+        } elseif ($this->Sender == '') {
+            $result .= $this->headerLine('Return-Path', '<' . trim($this->From) . '>');
+        } else {
+            $result .= $this->headerLine('Return-Path', '<' . trim($this->Sender) . '>');
+        }
+
+        // To be created automatically by mail()
+        if ($this->Mailer != 'mail') {
+            if ($this->SingleTo === true) {
+                foreach ($this->to as $t) {
+                    $this->SingleToArray[] = $this->addrFormat($t);
+                }
+            } else {
+                if (count($this->to) > 0) {
+                    $result .= $this->addrAppend('To', $this->to);
+                } elseif (count($this->cc) == 0) {
+                    $result .= $this->headerLine('To', 'undisclosed-recipients:;');
+                }
+            }
+        }
+
+        $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName)));
+
+        // sendmail and mail() extract Cc from the header before sending
+        if (count($this->cc) > 0) {
+            $result .= $this->addrAppend('Cc', $this->cc);
+        }
+
+        // sendmail and mail() extract Bcc from the header before sending
+        if ((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
+            $result .= $this->addrAppend('Bcc', $this->bcc);
+        }
+
+        if (count($this->ReplyTo) > 0) {
+            $result .= $this->addrAppend('Reply-To', $this->ReplyTo);
+        }
+
+        // mail() sets the subject itself
+        if ($this->Mailer != 'mail') {
+            $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
+        }
+
+        if ($this->MessageID != '') {
+            $this->lastMessageID = $this->MessageID;
+        } else {
+            $this->lastMessageID = sprintf("<%s@%s>", $uniq_id, $this->ServerHostname());
+        }
+        $result .= $this->HeaderLine('Message-ID', $this->lastMessageID);
+        $result .= $this->headerLine('X-Priority', $this->Priority);
+        if ($this->XMailer == '') {
+            $result .= $this->headerLine(
+                'X-Mailer',
+                'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer/)'
+            );
+        } else {
+            $myXmailer = trim($this->XMailer);
+            if ($myXmailer) {
+                $result .= $this->headerLine('X-Mailer', $myXmailer);
+            }
+        }
+
+        if ($this->ConfirmReadingTo != '') {
+            $result .= $this->headerLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+        }
+
+        // Add custom headers
+        for ($index = 0; $index < count($this->CustomHeader); $index++) {
+            $result .= $this->headerLine(
+                trim($this->CustomHeader[$index][0]),
+                $this->encodeHeader(trim($this->CustomHeader[$index][1]))
+            );
+        }
+        if (!$this->sign_key_file) {
+            $result .= $this->headerLine('MIME-Version', '1.0');
+            $result .= $this->getMailMIME();
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get the message MIME type headers.
+     * @access public
+     * @return string
+     */
+    public function getMailMIME()
+    {
+        $result = '';
+        switch ($this->message_type) {
+            case 'inline':
+                $result .= $this->headerLine('Content-Type', 'multipart/related;');
+                $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
+                break;
+            case 'attach':
+            case 'inline_attach':
+            case 'alt_attach':
+            case 'alt_inline_attach':
+                $result .= $this->headerLine('Content-Type', 'multipart/mixed;');
+                $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
+                break;
+            case 'alt':
+            case 'alt_inline':
+                $result .= $this->headerLine('Content-Type', 'multipart/alternative;');
+                $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
+                break;
+            default:
+                // Catches case 'plain': and case '':
+                $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet);
+                break;
+        }
+        //RFC1341 part 5 says 7bit is assumed if not specified
+        if ($this->Encoding != '7bit') {
+            $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding);
+        }
+
+        if ($this->Mailer != 'mail') {
+            $result .= $this->LE;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Returns the whole MIME message.
+     * Includes complete headers and body.
+     * Only valid post PreSend().
+     * @see PHPMailer::PreSend()
+     * @access public
+     * @return string
+     */
+    public function getSentMIMEMessage()
+    {
+        return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
+    }
+
+
+    /**
+     * Assemble the message body.
+     * Returns an empty string on failure.
+     * @access public
+     * @throws phpmailerException
+     * @return string The assembled message body
+     */
+    public function createBody()
+    {
+        $body = '';
+
+        if ($this->sign_key_file) {
+            $body .= $this->getMailMIME() . $this->LE;
+        }
+
+        $this->setWordWrap();
+
+        switch ($this->message_type) {
+            case 'inline':
+                $body .= $this->getBoundary($this->boundary[1], '', '', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->attachAll('inline', $this->boundary[1]);
+                break;
+            case 'attach':
+                $body .= $this->getBoundary($this->boundary[1], '', '', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'inline_attach':
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', 'multipart/related;');
+                $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
+                $body .= $this->LE;
+                $body .= $this->getBoundary($this->boundary[2], '', '', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->attachAll('inline', $this->boundary[2]);
+                $body .= $this->LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'alt':
+                $body .= $this->getBoundary($this->boundary[1], '', 'text/plain', '');
+                $body .= $this->encodeString($this->AltBody, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->getBoundary($this->boundary[1], '', 'text/html', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                if (!empty($this->Ical)) {
+                    $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', '');
+                    $body .= $this->encodeString($this->Ical, $this->Encoding);
+                    $body .= $this->LE . $this->LE;
+                }
+                $body .= $this->endBoundary($this->boundary[1]);
+                break;
+            case 'alt_inline':
+                $body .= $this->getBoundary($this->boundary[1], '', 'text/plain', '');
+                $body .= $this->encodeString($this->AltBody, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', 'multipart/related;');
+                $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
+                $body .= $this->LE;
+                $body .= $this->getBoundary($this->boundary[2], '', 'text/html', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->attachAll('inline', $this->boundary[2]);
+                $body .= $this->LE;
+                $body .= $this->endBoundary($this->boundary[1]);
+                break;
+            case 'alt_attach':
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', 'multipart/alternative;');
+                $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
+                $body .= $this->LE;
+                $body .= $this->getBoundary($this->boundary[2], '', 'text/plain', '');
+                $body .= $this->encodeString($this->AltBody, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->getBoundary($this->boundary[2], '', 'text/html', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->endBoundary($this->boundary[2]);
+                $body .= $this->LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'alt_inline_attach':
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', 'multipart/alternative;');
+                $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
+                $body .= $this->LE;
+                $body .= $this->getBoundary($this->boundary[2], '', 'text/plain', '');
+                $body .= $this->encodeString($this->AltBody, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->textLine('--' . $this->boundary[2]);
+                $body .= $this->headerLine('Content-Type', 'multipart/related;');
+                $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"');
+                $body .= $this->LE;
+                $body .= $this->getBoundary($this->boundary[3], '', 'text/html', '');
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                $body .= $this->LE . $this->LE;
+                $body .= $this->attachAll('inline', $this->boundary[3]);
+                $body .= $this->LE;
+                $body .= $this->endBoundary($this->boundary[2]);
+                $body .= $this->LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            default:
+                // catch case 'plain' and case ''
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                break;
+        }
+
+        if ($this->isError()) {
+            $body = '';
+        } elseif ($this->sign_key_file) {
+            try {
+                if (!defined('PKCS7_TEXT')) {
+                    throw new phpmailerException($this->lang('signing') . ' OpenSSL extension missing.');
+                }
+                $file = tempnam(sys_get_temp_dir(), 'mail');
+                file_put_contents($file, $body); //TODO check this worked
+                $signed = tempnam(sys_get_temp_dir(), 'signed');
+                if (@openssl_pkcs7_sign(
+                    $file,
+                    $signed,
+                    'file://' . realpath($this->sign_cert_file),
+                    array('file://' . realpath($this->sign_key_file), $this->sign_key_pass),
+                    null
+                )
+                ) {
+                    @unlink($file);
+                    $body = file_get_contents($signed);
+                    @unlink($signed);
+                } else {
+                    @unlink($file);
+                    @unlink($signed);
+                    throw new phpmailerException($this->lang('signing') . openssl_error_string());
+                }
+            } catch (phpmailerException $e) {
+                $body = '';
+                if ($this->exceptions) {
+                    throw $e;
+                }
+            }
+        }
+        return $body;
+    }
+
+    /**
+     * Return the start of a message boundary.
+     * @access protected
+     * @param string $boundary
+     * @param string $charSet
+     * @param string $contentType
+     * @param string $encoding
+     * @return string
+     */
+    protected function getBoundary($boundary, $charSet, $contentType, $encoding)
+    {
+        $result = '';
+        if ($charSet == '') {
+            $charSet = $this->CharSet;
+        }
+        if ($contentType == '') {
+            $contentType = $this->ContentType;
+        }
+        if ($encoding == '') {
+            $encoding = $this->Encoding;
+        }
+        $result .= $this->textLine('--' . $boundary);
+        $result .= sprintf("Content-Type: %s; charset=%s", $contentType, $charSet);
+        $result .= $this->LE;
+        $result .= $this->headerLine('Content-Transfer-Encoding', $encoding);
+        $result .= $this->LE;
+
+        return $result;
+    }
+
+    /**
+     * Return the end of a message boundary.
+     * @access protected
+     * @param string $boundary
+     * @return string
+     */
+    protected function endBoundary($boundary)
+    {
+        return $this->LE . '--' . $boundary . '--' . $this->LE;
+    }
+
+    /**
+     * Set the message type.
+     * PHPMailer only supports some preset message types,
+     * not arbitrary MIME structures.
+     * @access protected
+     * @return void
+     */
+    protected function setMessageType()
+    {
+        $this->message_type = array();
+        if ($this->alternativeExists()) {
+            $this->message_type[] = "alt";
+        }
+        if ($this->inlineImageExists()) {
+            $this->message_type[] = "inline";
+        }
+        if ($this->attachmentExists()) {
+            $this->message_type[] = "attach";
+        }
+        $this->message_type = implode("_", $this->message_type);
+        if ($this->message_type == "") {
+            $this->message_type = "plain";
+        }
+    }
+
+    /**
+     * Format a header line.
+     * @access public
+     * @param string $name
+     * @param string $value
+     * @return string
+     */
+    public function headerLine($name, $value)
+    {
+        return $name . ': ' . $value . $this->LE;
+    }
+
+    /**
+     * Return a formatted mail line.
+     * @access public
+     * @param string $value
+     * @return string
+     */
+    public function textLine($value)
+    {
+        return $value . $this->LE;
+    }
+
+    /**
+     * Add an attachment from a path on the filesystem.
+     * Returns false if the file could not be found or read.
+     * @param string $path Path to the attachment.
+     * @param string $name Overrides the attachment name.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File extension (MIME) type.
+     * @param string $disposition Disposition to use
+     * @throws phpmailerException
+     * @return bool
+     */
+    public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment')
+    {
+        try {
+            if (!@is_file($path)) {
+                throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE);
+            }
+
+            //If a MIME type is not specified, try to work it out from the file name
+            if ($type == '') {
+                $type = self::filenameToType($path);
+            }
+
+            $filename = basename($path);
+            if ($name == '') {
+                $name = $filename;
+            }
+
+            $this->attachment[] = array(
+                0 => $path,
+                1 => $filename,
+                2 => $name,
+                3 => $encoding,
+                4 => $type,
+                5 => false, // isStringAttachment
+                6 => $disposition,
+                7 => 0
+            );
+
+        } catch (phpmailerException $e) {
+            $this->setError($e->getMessage());
+            if ($this->exceptions) {
+                throw $e;
+            }
+            $this->edebug($e->getMessage() . "\n");
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Return the array of attachments.
+     * @return array
+     */
+    public function getAttachments()
+    {
+        return $this->attachment;
+    }
+
+    /**
+     * Attach all file, string, and binary attachments to the message.
+     * Returns an empty string on failure.
+     * @access protected
+     * @param string $disposition_type
+     * @param string $boundary
+     * @return string
+     */
+    protected function attachAll($disposition_type, $boundary)
+    {
+        // Return text of body
+        $mime = array();
+        $cidUniq = array();
+        $incl = array();
+
+        // Add all attachments
+        foreach ($this->attachment as $attachment) {
+            // Check if it is a valid disposition_filter
+            if ($attachment[6] == $disposition_type) {
+                // Check for string attachment
+                $string = '';
+                $path = '';
+                $bString = $attachment[5];
+                if ($bString) {
+                    $string = $attachment[0];
+                } else {
+                    $path = $attachment[0];
+                }
+
+                $inclhash = md5(serialize($attachment));
+                if (in_array($inclhash, $incl)) {
+                    continue;
+                }
+                $incl[] = $inclhash;
+                $name = $attachment[2];
+                $encoding = $attachment[3];
+                $type = $attachment[4];
+                $disposition = $attachment[6];
+                $cid = $attachment[7];
+                if ($disposition == 'inline' && isset($cidUniq[$cid])) {
+                    continue;
+                }
+                $cidUniq[$cid] = true;
+
+                $mime[] = sprintf("--%s%s", $boundary, $this->LE);
+                $mime[] = sprintf(
+                    "Content-Type: %s; name=\"%s\"%s",
+                    $type,
+                    $this->encodeHeader($this->secureHeader($name)),
+                    $this->LE
+                );
+                $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
+
+                if ($disposition == 'inline') {
+                    $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+                }
+
+                // If a filename contains any of these chars, it should be quoted,
+                // but not otherwise: RFC2183 & RFC2045 5.1
+                // Fixes a warning in IETF's msglint MIME checker
+                // Allow for bypassing the Content-Disposition header totally
+                if (!(empty($disposition))) {
+                    if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $name)) {
+                        $mime[] = sprintf(
+                            "Content-Disposition: %s; filename=\"%s\"%s",
+                            $disposition,
+                            $this->encodeHeader($this->secureHeader($name)),
+                            $this->LE . $this->LE
+                        );
+                    } else {
+                        $mime[] = sprintf(
+                            "Content-Disposition: %s; filename=%s%s",
+                            $disposition,
+                            $this->encodeHeader($this->secureHeader($name)),
+                            $this->LE . $this->LE
+                        );
+                    }
+                } else {
+                    $mime[] = $this->LE;
+                }
+
+                // Encode as string attachment
+                if ($bString) {
+                    $mime[] = $this->encodeString($string, $encoding);
+                    if ($this->isError()) {
+                        return '';
+                    }
+                    $mime[] = $this->LE . $this->LE;
+                } else {
+                    $mime[] = $this->encodeFile($path, $encoding);
+                    if ($this->isError()) {
+                        return '';
+                    }
+                    $mime[] = $this->LE . $this->LE;
+                }
+            }
+        }
+
+        $mime[] = sprintf("--%s--%s", $boundary, $this->LE);
+
+        return implode("", $mime);
+    }
+
+    /**
+     * Encode a file attachment in requested format.
+     * Returns an empty string on failure.
+     * @param string $path The full path to the file
+     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+     * @throws phpmailerException
+     * @see EncodeFile(encodeFile
+     * @access protected
+     * @return string
+     */
+    protected function encodeFile($path, $encoding = 'base64')
+    {
+        try {
+            if (!is_readable($path)) {
+                throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE);
+            }
+            $magic_quotes = get_magic_quotes_runtime();
+            if ($magic_quotes) {
+                if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+                    set_magic_quotes_runtime(0);
+                } else {
+                    ini_set('magic_quotes_runtime', 0);
+                }
+            }
+            $file_buffer = file_get_contents($path);
+            $file_buffer = $this->encodeString($file_buffer, $encoding);
+            if ($magic_quotes) {
+                if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+                    set_magic_quotes_runtime($magic_quotes);
+                } else {
+                    ini_set('magic_quotes_runtime', $magic_quotes);
+                }
+            }
+            return $file_buffer;
+        } catch (Exception $e) {
+            $this->setError($e->getMessage());
+            return '';
+        }
+    }
+
+    /**
+     * Encode a string in requested format.
+     * Returns an empty string on failure.
+     * @param string $str The text to encode
+     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+     * @access public
+     * @return string
+     */
+    public function encodeString($str, $encoding = 'base64')
+    {
+        $encoded = '';
+        switch (strtolower($encoding)) {
+            case 'base64':
+                $encoded = chunk_split(base64_encode($str), 76, $this->LE);
+                break;
+            case '7bit':
+            case '8bit':
+                $encoded = $this->fixEOL($str);
+                //Make sure it ends with a line break
+                if (substr($encoded, -(strlen($this->LE))) != $this->LE) {
+                    $encoded .= $this->LE;
+                }
+                break;
+            case 'binary':
+                $encoded = $str;
+                break;
+            case 'quoted-printable':
+                $encoded = $this->encodeQP($str);
+                break;
+            default:
+                $this->setError($this->lang('encoding') . $encoding);
+                break;
+        }
+        return $encoded;
+    }
+
+    /**
+     * Encode a header string optimally.
+     * Picks shortest of Q, B, quoted-printable or none.
+     * @access public
+     * @param string $str
+     * @param string $position
+     * @return string
+     */
+    public function encodeHeader($str, $position = 'text')
+    {
+        $x = 0;
+        switch (strtolower($position)) {
+            case 'phrase':
+                if (!preg_match('/[\200-\377]/', $str)) {
+                    // Can't use addslashes as we don't know what value has magic_quotes_sybase
+                    $encoded = addcslashes($str, "\0..\37\177\\\"");
+                    if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
+                        return ($encoded);
+                    } else {
+                        return ("\"$encoded\"");
+                    }
+                }
+                $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+                break;
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'comment':
+                $x = preg_match_all('/[()"]/', $str, $matches);
+                // Intentional fall-through
+            case 'text':
+            default:
+                $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+                break;
+        }
+
+        if ($x == 0) { //There are no chars that need encoding
+            return ($str);
+        }
+
+        $maxlen = 75 - 7 - strlen($this->CharSet);
+        // Try to select the encoding which should produce the shortest output
+        if ($x > strlen($str) / 3) {
+            //More than a third of the content will need encoding, so B encoding will be most efficient
+            $encoding = 'B';
+            if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) {
+                // Use a custom function which correctly encodes and wraps long
+                // multibyte strings without breaking lines within a character
+                $encoded = $this->base64EncodeWrapMB($str, "\n");
+            } else {
+                $encoded = base64_encode($str);
+                $maxlen -= $maxlen % 4;
+                $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
+            }
+        } else {
+            $encoding = 'Q';
+            $encoded = $this->encodeQ($str, $position);
+            $encoded = $this->wrapText($encoded, $maxlen, true);
+            $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded));
+        }
+
+        $encoded = preg_replace('/^(.*)$/m', " =?" . $this->CharSet . "?$encoding?\\1?=", $encoded);
+        $encoded = trim(str_replace("\n", $this->LE, $encoded));
+
+        return $encoded;
+    }
+
+    /**
+     * Check if a string contains multi-byte characters.
+     * @access public
+     * @param string $str multi-byte text to wrap encode
+     * @return bool
+     */
+    public function hasMultiBytes($str)
+    {
+        if (function_exists('mb_strlen')) {
+            return (strlen($str) > mb_strlen($str, $this->CharSet));
+        } else { // Assume no multibytes (we can't handle without mbstring functions anyway)
+            return false;
+        }
+    }
+
+    /**
+     * Encode and wrap long multibyte strings for mail headers
+     * without breaking lines within a character.
+     * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
+     * @access public
+     * @param string $str multi-byte text to wrap encode
+     * @param string $lf string to use as linefeed/end-of-line
+     * @return string
+     */
+    public function base64EncodeWrapMB($str, $lf = null)
+    {
+        $start = "=?" . $this->CharSet . "?B?";
+        $end = "?=";
+        $encoded = "";
+        if ($lf === null) {
+            $lf = $this->LE;
+        }
+
+        $mb_length = mb_strlen($str, $this->CharSet);
+        // Each line must have length <= 75, including $start and $end
+        $length = 75 - strlen($start) - strlen($end);
+        // Average multi-byte ratio
+        $ratio = $mb_length / strlen($str);
+        // Base64 has a 4:3 ratio
+        $avgLength = floor($length * $ratio * .75);
+
+        for ($i = 0; $i < $mb_length; $i += $offset) {
+            $lookBack = 0;
+            do {
+                $offset = $avgLength - $lookBack;
+                $chunk = mb_substr($str, $i, $offset, $this->CharSet);
+                $chunk = base64_encode($chunk);
+                $lookBack++;
+            } while (strlen($chunk) > $length);
+            $encoded .= $chunk . $lf;
+        }
+
+        // Chomp the last linefeed
+        $encoded = substr($encoded, 0, -strlen($lf));
+        return $encoded;
+    }
+
+    /**
+     * Encode a string in quoted-printable format.
+     * According to RFC2045 section 6.7.
+     * @access public
+     * @param string $string The text to encode
+     * @param integer $line_max Number of chars allowed on a line before wrapping
+     * @return string
+     * @link PHP version adapted from http://www.php.net/manual/en/function.quoted-printable-decode.php#89417
+     */
+    public function encodeQP($string, $line_max = 76)
+    {
+        if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3)
+            return quoted_printable_encode($string);
+        }
+        //Fall back to a pure PHP implementation
+        $string = str_replace(
+            array('%20', '%0D%0A.', '%0D%0A', '%'),
+            array(' ', "\r\n=2E", "\r\n", '='),
+            rawurlencode($string)
+        );
+        $string = preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string);
+        return $string;
+    }
+
+    /**
+     * Backward compatibility wrapper for an old QP encoding function that was removed.
+     * @see PHPMailer::encodeQP()
+     * @access public
+     * @param string $string
+     * @param integer $line_max
+     * @param bool $space_conv
+     * @return string
+     * @deprecated Use encodeQP instead.
+     */
+    public function encodeQPphp(
+        $string,
+        $line_max = 76,
+        /** @noinspection PhpUnusedParameterInspection */ $space_conv = false
+    ) {
+        return $this->encodeQP($string, $line_max);
+    }
+
+    /**
+     * Encode a string using Q encoding.
+     * @link http://tools.ietf.org/html/rfc2047
+     * @param string $str the text to encode
+     * @param string $position Where the text is going to be used, see the RFC for what that means
+     * @access public
+     * @return string
+     */
+    public function encodeQ($str, $position = 'text')
+    {
+        //There should not be any EOL in the string
+        $pattern = '';
+        $encoded = str_replace(array("\r", "\n"), '', $str);
+        switch (strtolower($position)) {
+            case 'phrase':
+                //RFC 2047 section 5.3
+                $pattern = '^A-Za-z0-9!*+\/ -';
+                break;
+            /** @noinspection PhpMissingBreakStatementInspection */
+            case 'comment':
+                //RFC 2047 section 5.2
+                $pattern = '\(\)"';
+                //intentional fall-through
+                //for this reason we build the $pattern without including delimiters and []
+            case 'text':
+            default:
+                //RFC 2047 section 5.1
+                //Replace every high ascii, control, =, ? and _ characters
+                $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern;
+                break;
+        }
+        $matches = array();
+        if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
+            //If the string contains an '=', make sure it's the first thing we replace
+            //so as to avoid double-encoding
+            $s = array_search('=', $matches[0]);
+            if ($s !== false) {
+                unset($matches[0][$s]);
+                array_unshift($matches[0], '=');
+            }
+            foreach (array_unique($matches[0]) as $char) {
+                $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
+            }
+        }
+        //Replace every spaces to _ (more readable than =20)
+        return str_replace(' ', '_', $encoded);
+    }
+
+
+    /**
+     * Add a string or binary attachment (non-filesystem).
+     * This method can be used to attach ascii or binary data,
+     * such as a BLOB record from a database.
+     * @param string $string String attachment data.
+     * @param string $filename Name of the attachment.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File extension (MIME) type.
+     * @param string $disposition Disposition to use
+     * @return void
+     */
+    public function addStringAttachment(
+        $string,
+        $filename,
+        $encoding = 'base64',
+        $type = '',
+        $disposition = 'attachment'
+    ) {
+        //If a MIME type is not specified, try to work it out from the file name
+        if ($type == '') {
+            $type = self::filenameToType($filename);
+        }
+        // Append to $attachment array
+        $this->attachment[] = array(
+            0 => $string,
+            1 => $filename,
+            2 => basename($filename),
+            3 => $encoding,
+            4 => $type,
+            5 => true, // isStringAttachment
+            6 => $disposition,
+            7 => 0
+        );
+    }
+
+    /**
+     * Add an embedded (inline) attachment from a file.
+     * This can include images, sounds, and just about any other document type.
+     * These differ from 'regular' attachmants in that they are intended to be
+     * displayed inline with the message, not just attached for download.
+     * This is used in HTML messages that embed the images
+     * the HTML refers to using the $cid value.
+     * @param string $path Path to the attachment.
+     * @param string $cid Content ID of the attachment; Use this to reference
+     *        the content when using an embedded image in HTML.
+     * @param string $name Overrides the attachment name.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File MIME type.
+     * @param string $disposition Disposition to use
+     * @return bool True on successfully adding an attachment
+     */
+    public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline')
+    {
+        if (!@is_file($path)) {
+            $this->setError($this->lang('file_access') . $path);
+            return false;
+        }
+
+        //If a MIME type is not specified, try to work it out from the file name
+        if ($type == '') {
+            $type = self::filenameToType($path);
+        }
+
+        $filename = basename($path);
+        if ($name == '') {
+            $name = $filename;
+        }
+
+        // Append to $attachment array
+        $this->attachment[] = array(
+            0 => $path,
+            1 => $filename,
+            2 => $name,
+            3 => $encoding,
+            4 => $type,
+            5 => false, // isStringAttachment
+            6 => $disposition,
+            7 => $cid
+        );
+        return true;
+    }
+
+    /**
+     * Add an embedded stringified attachment.
+     * This can include images, sounds, and just about any other document type.
+     * Be sure to set the $type to an image type for images:
+     * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'.
+     * @param string $string The attachment binary data.
+     * @param string $cid Content ID of the attachment; Use this to reference
+     *        the content when using an embedded image in HTML.
+     * @param string $name
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type MIME type.
+     * @param string $disposition Disposition to use
+     * @return bool True on successfully adding an attachment
+     */
+    public function addStringEmbeddedImage(
+        $string,
+        $cid,
+        $name = '',
+        $encoding = 'base64',
+        $type = '',
+        $disposition = 'inline'
+    ) {
+        //If a MIME type is not specified, try to work it out from the name
+        if ($type == '') {
+            $type = self::filenameToType($name);
+        }
+
+        // Append to $attachment array
+        $this->attachment[] = array(
+            0 => $string,
+            1 => $name,
+            2 => $name,
+            3 => $encoding,
+            4 => $type,
+            5 => true, // isStringAttachment
+            6 => $disposition,
+            7 => $cid
+        );
+        return true;
+    }
+
+    /**
+     * Check if an inline attachment is present.
+     * @access public
+     * @return bool
+     */
+    public function inlineImageExists()
+    {
+        foreach ($this->attachment as $attachment) {
+            if ($attachment[6] == 'inline') {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if an attachment (non-inline) is present.
+     * @return bool
+     */
+    public function attachmentExists()
+    {
+        foreach ($this->attachment as $attachment) {
+            if ($attachment[6] == 'attachment') {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if this message has an alternative body set.
+     * @return bool
+     */
+    public function alternativeExists()
+    {
+        return !empty($this->AltBody);
+    }
+
+    /**
+     * Clear all To recipients.
+     * @return void
+     */
+    public function clearAddresses()
+    {
+        foreach ($this->to as $to) {
+            unset($this->all_recipients[strtolower($to[0])]);
+        }
+        $this->to = array();
+    }
+
+    /**
+     * Clear all CC recipients.
+     * @return void
+     */
+    public function clearCCs()
+    {
+        foreach ($this->cc as $cc) {
+            unset($this->all_recipients[strtolower($cc[0])]);
+        }
+        $this->cc = array();
+    }
+
+    /**
+     * Clear all BCC recipients.
+     * @return void
+     */
+    public function clearBCCs()
+    {
+        foreach ($this->bcc as $bcc) {
+            unset($this->all_recipients[strtolower($bcc[0])]);
+        }
+        $this->bcc = array();
+    }
+
+    /**
+     * Clear all ReplyTo recipients.
+     * @return void
+     */
+    public function clearReplyTos()
+    {
+        $this->ReplyTo = array();
+    }
+
+    /**
+     * Clear all recipient types.
+     * @return void
+     */
+    public function clearAllRecipients()
+    {
+        $this->to = array();
+        $this->cc = array();
+        $this->bcc = array();
+        $this->all_recipients = array();
+    }
+
+    /**
+     * Clear all filesystem, string, and binary attachments.
+     * @return void
+     */
+    public function clearAttachments()
+    {
+        $this->attachment = array();
+    }
+
+    /**
+     * Clear all custom headers.
+     * @return void
+     */
+    public function clearCustomHeaders()
+    {
+        $this->CustomHeader = array();
+    }
+
+    /**
+     * Add an error message to the error container.
+     * @access protected
+     * @param string $msg
+     * @return void
+     */
+    protected function setError($msg)
+    {
+        $this->error_count++;
+        if ($this->Mailer == 'smtp' and !is_null($this->smtp)) {
+            $lasterror = $this->smtp->getError();
+            if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) {
+                $msg .= '<p>' . $this->lang('smtp_error') . $lasterror['smtp_msg'] . "</p>\n";
+            }
+        }
+        $this->ErrorInfo = $msg;
+    }
+
+    /**
+     * Return an RFC 822 formatted date.
+     * @access public
+     * @return string
+     * @static
+     */
+    public static function rfcDate()
+    {
+        //Set the time zone to whatever the default is to avoid 500 errors
+        //Will default to UTC if it's not set properly in php.ini
+        date_default_timezone_set(@date_default_timezone_get());
+        return date('D, j M Y H:i:s O');
+    }
+
+    /**
+     * Get the server hostname.
+     * Returns 'localhost.localdomain' if unknown.
+     * @access protected
+     * @return string
+     */
+    protected function serverHostname()
+    {
+        if (!empty($this->Hostname)) {
+            $result = $this->Hostname;
+        } elseif (isset($_SERVER['SERVER_NAME'])) {
+            $result = $_SERVER['SERVER_NAME'];
+        } else {
+            $result = 'localhost.localdomain';
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get an error message in the current language.
+     * @access protected
+     * @param string $key
+     * @return string
+     */
+    protected function lang($key)
+    {
+        if (count($this->language) < 1) {
+            $this->setLanguage('en'); // set the default language
+        }
+
+        if (isset($this->language[$key])) {
+            return $this->language[$key];
+        } else {
+            return 'Language string failed to load: ' . $key;
+        }
+    }
+
+    /**
+     * Check if an error occurred.
+     * @access public
+     * @return bool True if an error did occur.
+     */
+    public function isError()
+    {
+        return ($this->error_count > 0);
+    }
+
+    /**
+     * Ensure consistent line endings in a string.
+     * Changes every end of line from CRLF, CR or LF to $this->LE.
+     * @access public
+     * @param string $str String to fixEOL
+     * @return string
+     */
+    public function fixEOL($str)
+    {
+        // Normalise to \n
+        $nstr = str_replace(array("\r\n", "\r"), "\n", $str);
+        // Now convert LE as needed
+        if ($this->LE !== "\n") {
+            $nstr = str_replace("\n", $this->LE, $nstr);
+        }
+        return $nstr;
+    }
+
+    /**
+     * Add a custom header.
+     * $name value can be overloaded to contain
+     * both header name and value (name:value)
+     * @access public
+     * @param string $name Custom header name
+     * @param string $value Header value
+     * @return void
+     */
+    public function addCustomHeader($name, $value = null)
+    {
+        if ($value === null) {
+            // Value passed in as name:value
+            $this->CustomHeader[] = explode(':', $name, 2);
+        } else {
+            $this->CustomHeader[] = array($name, $value);
+        }
+    }
+
+    /**
+     * Create a message from an HTML string.
+     * Automatically makes modifications for inline images and backgrounds
+     * and creates a plain-text version by converting the HTML.
+     * Overwrites any existing values in $this->Body and $this->AltBody
+     * @access public
+     * @param string $message HTML message string
+     * @param string $basedir baseline directory for path
+     * @param bool $advanced Whether to use the advanced HTML to text converter
+     * @return string $message
+     */
+    public function msgHTML($message, $basedir = '', $advanced = false)
+    {
+        preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
+        if (isset($images[2])) {
+            foreach ($images[2] as $i => $url) {
+                // do not change urls for absolute images (thanks to corvuscorax)
+                if (!preg_match('#^[A-z]+://#', $url)) {
+                    $filename = basename($url);
+                    $directory = dirname($url);
+                    if ($directory == '.') {
+                        $directory = '';
+                    }
+                    $cid = md5($url) . '@phpmailer.0'; //RFC2392 S 2
+                    if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
+                        $basedir .= '/';
+                    }
+                    if (strlen($directory) > 1 && substr($directory, -1) != '/') {
+                        $directory .= '/';
+                    }
+                    if ($this->addEmbeddedImage(
+                        $basedir . $directory . $filename,
+                        $cid,
+                        $filename,
+                        'base64',
+                        self::_mime_types(self::mb_pathinfo($filename, PATHINFO_EXTENSION))
+                    )
+                    ) {
+                        $message = preg_replace(
+                            "/" . $images[1][$i] . "=[\"']" . preg_quote($url, '/') . "[\"']/Ui",
+                            $images[1][$i] . "=\"cid:" . $cid . "\"",
+                            $message
+                        );
+                    }
+                }
+            }
+        }
+        $this->isHTML(true);
+        if (empty($this->AltBody)) {
+            $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
+        }
+        //Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
+        $this->Body = $this->normalizeBreaks($message);
+        $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
+        return $this->Body;
+    }
+
+    /**
+     * Convert an HTML string into plain text.
+     * @param string $html The HTML text to convert
+     * @param bool $advanced Should this use the more complex html2text converter or just a simple one?
+     * @return string
+     */
+    public function html2text($html, $advanced = false)
+    {
+        if ($advanced) {
+            require_once 'extras/class.html2text.php';
+            $h = new html2text($html);
+            return $h->get_text();
+        }
+        return html_entity_decode(
+            trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))),
+            ENT_QUOTES,
+            $this->CharSet
+        );
+    }
+
+    /**
+     * Get the MIME type for a file extension.
+     * @param string $ext File extension
+     * @access public
+     * @return string MIME type of file.
+     * @static
+     */
+    public static function _mime_types($ext = '')
+    {
+        $mimes = array(
+            'xl' => 'application/excel',
+            'hqx' => 'application/mac-binhex40',
+            'cpt' => 'application/mac-compactpro',
+            'bin' => 'application/macbinary',
+            'doc' => 'application/msword',
+            'word' => 'application/msword',
+            'class' => 'application/octet-stream',
+            'dll' => 'application/octet-stream',
+            'dms' => 'application/octet-stream',
+            'exe' => 'application/octet-stream',
+            'lha' => 'application/octet-stream',
+            'lzh' => 'application/octet-stream',
+            'psd' => 'application/octet-stream',
+            'sea' => 'application/octet-stream',
+            'so' => 'application/octet-stream',
+            'oda' => 'application/oda',
+            'pdf' => 'application/pdf',
+            'ai' => 'application/postscript',
+            'eps' => 'application/postscript',
+            'ps' => 'application/postscript',
+            'smi' => 'application/smil',
+            'smil' => 'application/smil',
+            'mif' => 'application/vnd.mif',
+            'xls' => 'application/vnd.ms-excel',
+            'ppt' => 'application/vnd.ms-powerpoint',
+            'wbxml' => 'application/vnd.wap.wbxml',
+            'wmlc' => 'application/vnd.wap.wmlc',
+            'dcr' => 'application/x-director',
+            'dir' => 'application/x-director',
+            'dxr' => 'application/x-director',
+            'dvi' => 'application/x-dvi',
+            'gtar' => 'application/x-gtar',
+            'php3' => 'application/x-httpd-php',
+            'php4' => 'application/x-httpd-php',
+            'php' => 'application/x-httpd-php',
+            'phtml' => 'application/x-httpd-php',
+            'phps' => 'application/x-httpd-php-source',
+            'js' => 'application/x-javascript',
+            'swf' => 'application/x-shockwave-flash',
+            'sit' => 'application/x-stuffit',
+            'tar' => 'application/x-tar',
+            'tgz' => 'application/x-tar',
+            'xht' => 'application/xhtml+xml',
+            'xhtml' => 'application/xhtml+xml',
+            'zip' => 'application/zip',
+            'mid' => 'audio/midi',
+            'midi' => 'audio/midi',
+            'mp2' => 'audio/mpeg',
+            'mp3' => 'audio/mpeg',
+            'mpga' => 'audio/mpeg',
+            'aif' => 'audio/x-aiff',
+            'aifc' => 'audio/x-aiff',
+            'aiff' => 'audio/x-aiff',
+            'ram' => 'audio/x-pn-realaudio',
+            'rm' => 'audio/x-pn-realaudio',
+            'rpm' => 'audio/x-pn-realaudio-plugin',
+            'ra' => 'audio/x-realaudio',
+            'wav' => 'audio/x-wav',
+            'bmp' => 'image/bmp',
+            'gif' => 'image/gif',
+            'jpeg' => 'image/jpeg',
+            'jpe' => 'image/jpeg',
+            'jpg' => 'image/jpeg',
+            'png' => 'image/png',
+            'tiff' => 'image/tiff',
+            'tif' => 'image/tiff',
+            'eml' => 'message/rfc822',
+            'css' => 'text/css',
+            'html' => 'text/html',
+            'htm' => 'text/html',
+            'shtml' => 'text/html',
+            'log' => 'text/plain',
+            'text' => 'text/plain',
+            'txt' => 'text/plain',
+            'rtx' => 'text/richtext',
+            'rtf' => 'text/rtf',
+            'xml' => 'text/xml',
+            'xsl' => 'text/xml',
+            'mpeg' => 'video/mpeg',
+            'mpe' => 'video/mpeg',
+            'mpg' => 'video/mpeg',
+            'mov' => 'video/quicktime',
+            'qt' => 'video/quicktime',
+            'rv' => 'video/vnd.rn-realvideo',
+            'avi' => 'video/x-msvideo',
+            'movie' => 'video/x-sgi-movie'
+        );
+        return (array_key_exists(strtolower($ext), $mimes) ? $mimes[strtolower($ext)]: 'application/octet-stream');
+    }
+
+    /**
+     * Map a file name to a MIME type.
+     * Defaults to 'application/octet-stream', i.e.. arbitrary binary data.
+     * @param string $filename A file name or full path, does not need to exist as a file
+     * @return string
+     * @static
+     */
+    public static function filenameToType($filename)
+    {
+        //In case the path is a URL, strip any query string before getting extension
+        $qpos = strpos($filename, '?');
+        if ($qpos !== false) {
+            $filename = substr($filename, 0, $qpos);
+        }
+        $pathinfo = self::mb_pathinfo($filename);
+        return self::_mime_types($pathinfo['extension']);
+    }
+
+    /**
+     * Multi-byte-safe pathinfo replacement.
+     * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe.
+     * Works similarly to the one in PHP >= 5.2.0
+     * @link http://www.php.net/manual/en/function.pathinfo.php#107461
+     * @param string $path A filename or path, does not need to exist as a file
+     * @param integer|string $options Either a PATHINFO_* constant,
+     *      or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2
+     * @return string|array
+     * @static
+     */
+    public static function mb_pathinfo($path, $options = null)
+    {
+        $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => '');
+        $m = array();
+        preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $m);
+        if (array_key_exists(1, $m)) {
+            $ret['dirname'] = $m[1];
+        }
+        if (array_key_exists(2, $m)) {
+            $ret['basename'] = $m[2];
+        }
+        if (array_key_exists(5, $m)) {
+            $ret['extension'] = $m[5];
+        }
+        if (array_key_exists(3, $m)) {
+            $ret['filename'] = $m[3];
+        }
+        switch ($options) {
+            case PATHINFO_DIRNAME:
+            case 'dirname':
+                return $ret['dirname'];
+                break;
+            case PATHINFO_BASENAME:
+            case 'basename':
+                return $ret['basename'];
+                break;
+            case PATHINFO_EXTENSION:
+            case 'extension':
+                return $ret['extension'];
+                break;
+            case PATHINFO_FILENAME:
+            case 'filename':
+                return $ret['filename'];
+                break;
+            default:
+                return $ret;
+        }
+    }
+
+    /**
+     * Set or reset instance properties.
+     *
+     * Usage Example:
+     * $page->set('X-Priority', '3');
+     *
+     * @access public
+     * @param string $name
+     * @param mixed $value
+     * NOTE: will not work with arrays, there are no arrays to set/reset
+     * @throws phpmailerException
+     * @return bool
+     * @todo Should this not be using __set() magic function?
+     */
+    public function set($name, $value = '')
+    {
+        try {
+            if (isset($this->$name)) {
+                $this->$name = $value;
+            } else {
+                throw new phpmailerException($this->lang('variable_set') . $name, self::STOP_CRITICAL);
+            }
+        } catch (Exception $e) {
+            $this->setError($e->getMessage());
+            if ($e->getCode() == self::STOP_CRITICAL) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Strip newlines to prevent header injection.
+     * @access public
+     * @param string $str
+     * @return string
+     */
+    public function secureHeader($str)
+    {
+        return trim(str_replace(array("\r", "\n"), '', $str));
+    }
+
+    /**
+     * Normalize line breaks in a string.
+     * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format.
+     * Defaults to CRLF (for message bodies) and preserves consecutive breaks.
+     * @param string $text
+     * @param string $breaktype What kind of line break to use, defaults to CRLF
+     * @return string
+     * @access public
+     * @static
+     */
+    public static function normalizeBreaks($text, $breaktype = "\r\n")
+    {
+        return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text);
+    }
+
+
+    /**
+     * Set the private key file and password for S/MIME signing.
+     * @access public
+     * @param string $cert_filename
+     * @param string $key_filename
+     * @param string $key_pass Password for private key
+     */
+    public function sign($cert_filename, $key_filename, $key_pass)
+    {
+        $this->sign_cert_file = $cert_filename;
+        $this->sign_key_file = $key_filename;
+        $this->sign_key_pass = $key_pass;
+    }
+
+    /**
+     * Quoted-Printable-encode a DKIM header.
+     * @access public
+     * @param string $txt
+     * @return string
+     */
+    public function DKIM_QP($txt)
+    {
+        $line = '';
+        for ($i = 0; $i < strlen($txt); $i++) {
+            $ord = ord($txt[$i]);
+            if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) {
+                $line .= $txt[$i];
+            } else {
+                $line .= "=" . sprintf("%02X", $ord);
+            }
+        }
+        return $line;
+    }
+
+    /**
+     * Generate a DKIM signature.
+     * @access public
+     * @param string $s Header
+     * @throws phpmailerException
+     * @return string
+     */
+    public function DKIM_Sign($s)
+    {
+        if (!defined('PKCS7_TEXT')) {
+            if ($this->exceptions) {
+                throw new phpmailerException($this->lang("signing") . ' OpenSSL extension missing.');
+            }
+            return '';
+        }
+        $privKeyStr = file_get_contents($this->DKIM_private);
+        if ($this->DKIM_passphrase != '') {
+            $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
+        } else {
+            $privKey = $privKeyStr;
+        }
+        if (openssl_sign($s, $signature, $privKey)) {
+            return base64_encode($signature);
+        }
+        return '';
+    }
+
+    /**
+     * Generate a DKIM canonicalization header.
+     * @access public
+     * @param string $s Header
+     * @return string
+     */
+    public function DKIM_HeaderC($s)
+    {
+        $s = preg_replace("/\r\n\s+/", " ", $s);
+        $lines = explode("\r\n", $s);
+        foreach ($lines as $key => $line) {
+            list($heading, $value) = explode(":", $line, 2);
+            $heading = strtolower($heading);
+            $value = preg_replace("/\s+/", " ", $value); // Compress useless spaces
+            $lines[$key] = $heading . ":" . trim($value); // Don't forget to remove WSP around the value
+        }
+        $s = implode("\r\n", $lines);
+        return $s;
+    }
+
+    /**
+     * Generate a DKIM canonicalization body.
+     * @access public
+     * @param string $body Message Body
+     * @return string
+     */
+    public function DKIM_BodyC($body)
+    {
+        if ($body == '') {
+            return "\r\n";
+        }
+        // stabilize line endings
+        $body = str_replace("\r\n", "\n", $body);
+        $body = str_replace("\n", "\r\n", $body);
+        // END stabilize line endings
+        while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
+            $body = substr($body, 0, strlen($body) - 2);
+        }
+        return $body;
+    }
+
+    /**
+     * Create the DKIM header and body in a new message header.
+     * @access public
+     * @param string $headers_line Header lines
+     * @param string $subject Subject
+     * @param string $body Body
+     * @return string
+     */
+    public function DKIM_Add($headers_line, $subject, $body)
+    {
+        $DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms
+        $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
+        $DKIMquery = 'dns/txt'; // Query method
+        $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
+        $subject_header = "Subject: $subject";
+        $headers = explode($this->LE, $headers_line);
+        $from_header = '';
+        $to_header = '';
+        $current = '';
+        foreach ($headers as $header) {
+            if (strpos($header, 'From:') === 0) {
+                $from_header = $header;
+                $current = 'from_header';
+            } elseif (strpos($header, 'To:') === 0) {
+                $to_header = $header;
+                $current = 'to_header';
+            } else {
+                if ($current && strpos($header, ' =?') === 0) {
+                    $current .= $header;
+                } else {
+                    $current = '';
+                }
+            }
+        }
+        $from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
+        $to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
+        $subject = str_replace(
+            '|',
+            '=7C',
+            $this->DKIM_QP($subject_header)
+        ); // Copied header fields (dkim-quoted-printable)
+        $body = $this->DKIM_BodyC($body);
+        $DKIMlen = strlen($body); // Length of body
+        $DKIMb64 = base64_encode(pack("H*", sha1($body))); // Base64 of packed binary SHA-1 hash of body
+        $ident = ($this->DKIM_identity == '') ? '' : " i=" . $this->DKIM_identity . ";";
+        $dkimhdrs = "DKIM-Signature: v=1; a=" .
+            $DKIMsignatureType . "; q=" .
+            $DKIMquery . "; l=" .
+            $DKIMlen . "; s=" .
+            $this->DKIM_selector .
+            ";\r\n" .
+            "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n" .
+            "\th=From:To:Subject;\r\n" .
+            "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n" .
+            "\tz=$from\r\n" .
+            "\t|$to\r\n" .
+            "\t|$subject;\r\n" .
+            "\tbh=" . $DKIMb64 . ";\r\n" .
+            "\tb=";
+        $toSign = $this->DKIM_HeaderC(
+            $from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs
+        );
+        $signed = $this->DKIM_Sign($toSign);
+        return $dkimhdrs . $signed . "\r\n";
+    }
+
+    /**
+     * Perform a callback.
+     * @param bool $isSent
+     * @param string $to
+     * @param string $cc
+     * @param string $bcc
+     * @param string $subject
+     * @param string $body
+     * @param string $from
+     */
+    protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from = null)
+    {
+        if (!empty($this->action_function) && is_callable($this->action_function)) {
+            $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from);
+            call_user_func_array($this->action_function, $params);
+        }
+    }
+}
+
+/**
+ * PHPMailer exception handler
+ * @package PHPMailer
+ */
+class phpmailerException extends Exception
+{
+    /**
+     * Prettify error message output
+     * @return string
+     */
+    public function errorMessage()
+    {
+        $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />\n";
+        return $errorMsg;
+    }
+}
Index: /tags/2.6.0RC1/include/phpmailer/class.smtp.php
===================================================================
--- /tags/2.6.0RC1/include/phpmailer/class.smtp.php	(revision 25596)
+++ /tags/2.6.0RC1/include/phpmailer/class.smtp.php	(revision 25596)
@@ -0,0 +1,943 @@
+<?php
+/**
+ * PHPMailer RFC821 SMTP email transport class.
+ * Version 5.2.7
+ * PHP version 5.0.0
+ * @category  PHP
+ * @package   PHPMailer
+ * @link      https://github.com/PHPMailer/PHPMailer/
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @copyright 2013 Marcus Bointon
+ * @copyright 2004 - 2008 Andy Prevost
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @license   http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
+ */
+
+/**
+ * PHPMailer RFC821 SMTP email transport class.
+ *
+ * Implements RFC 821 SMTP commands
+ * and provides some utility methods for sending mail to an SMTP server.
+ *
+ * PHP Version 5.0.0
+ *
+ * @category PHP
+ * @package  PHPMailer
+ * @link     https://github.com/PHPMailer/PHPMailer/blob/master/class.smtp.php
+ * @author   Chris Ryan <unknown@example.com>
+ * @author   Marcus Bointon <phpmailer@synchromedia.co.uk>
+ * @license  http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
+ */
+
+class SMTP
+{
+    /**
+     * The PHPMailer SMTP Version number.
+     */
+    const VERSION = '5.2.7';
+
+    /**
+     * SMTP line break constant.
+     */
+    const CRLF = "\r\n";
+
+    /**
+     * The SMTP port to use if one is not specified.
+     */
+    const DEFAULT_SMTP_PORT = 25;
+
+    /**
+     * The PHPMailer SMTP Version number.
+     * @type string
+     * @deprecated This should be a constant
+     * @see SMTP::VERSION
+     */
+    public $Version = '5.2.7';
+
+    /**
+     * SMTP server port number.
+     * @type int
+     * @deprecated This is only ever ued as default value, so should be a constant
+     * @see SMTP::DEFAULT_SMTP_PORT
+     */
+    public $SMTP_PORT = 25;
+
+    /**
+     * SMTP reply line ending
+     * @type string
+     * @deprecated Use the class constant instead
+     * @see SMTP::CRLF
+     */
+    public $CRLF = "\r\n";
+
+    /**
+     * Debug output level.
+     * Options: 0 for no output, 1 for commands, 2 for data and commands
+     * @type int
+     */
+    public $do_debug = 0;
+
+    /**
+     * The function/method to use for debugging output.
+     * Options: 'echo', 'html' or 'error_log'
+     * @type string
+     */
+    public $Debugoutput = 'echo';
+
+    /**
+     * Whether to use VERP.
+     * @type bool
+     */
+    public $do_verp = false;
+
+    /**
+     * The SMTP timeout value for reads, in seconds.
+     * @type int
+     */
+    public $Timeout = 15;
+
+    /**
+     * The SMTP timelimit value for reads, in seconds.
+     * @type int
+     */
+    public $Timelimit = 30;
+
+    /**
+     * The socket for the server connection.
+     * @type resource
+     */
+    protected $smtp_conn;
+
+    /**
+     * Error message, if any, for the last call.
+     * @type string
+     */
+    protected $error = '';
+
+    /**
+     * The reply the server sent to us for HELO.
+     * @type string
+     */
+    protected $helo_rply = '';
+
+    /**
+     * The most recent reply received from the server.
+     * @type string
+     */
+    protected $last_reply = '';
+
+    /**
+     * Constructor.
+     * @access public
+     */
+    public function __construct()
+    {
+        $this->smtp_conn = 0;
+        $this->error = null;
+        $this->helo_rply = null;
+
+        $this->do_debug = 0;
+    }
+
+    /**
+     * Output debugging info via a user-selected method.
+     * @param string $str Debug string to output
+     * @return void
+     */
+    protected function edebug($str)
+    {
+        switch ($this->Debugoutput) {
+            case 'error_log':
+                //Don't output, just log
+                error_log($str);
+                break;
+            case 'html':
+                //Cleans up output a bit for a better looking, HTML-safe output
+                echo htmlentities(
+                    preg_replace('/[\r\n]+/', '', $str),
+                    ENT_QUOTES,
+                    'UTF-8'
+                )
+                . "<br>\n";
+                break;
+            case 'echo':
+            default:
+                //Just echoes whatever was received
+                echo $str;
+        }
+    }
+
+    /**
+     * Connect to an SMTP server.
+     * @param string $host    SMTP server IP or host name
+     * @param int $port    The port number to connect to
+     * @param int $timeout How long to wait for the connection to open
+     * @param array $options An array of options for stream_context_create()
+     * @access public
+     * @return bool
+     */
+    public function connect($host, $port = null, $timeout = 30, $options = array())
+    {
+        // Clear errors to avoid confusion
+        $this->error = null;
+
+        // Make sure we are __not__ connected
+        if ($this->connected()) {
+            // Already connected, generate error
+            $this->error = array('error' => 'Already connected to a server');
+            return false;
+        }
+
+        if (empty($port)) {
+            $port = self::DEFAULT_SMTP_PORT;
+        }
+
+        // Connect to the SMTP server
+        $errno = 0;
+        $errstr = '';
+        $socket_context = stream_context_create($options);
+        //Suppress errors; connection failures are handled at a higher level
+        $this->smtp_conn = @stream_socket_client(
+            $host . ":" . $port,
+            $errno,
+            $errstr,
+            $timeout,
+            STREAM_CLIENT_CONNECT,
+            $socket_context
+        );
+
+        // Verify we connected properly
+        if (empty($this->smtp_conn)) {
+            $this->error = array(
+                'error' => 'Failed to connect to server',
+                'errno' => $errno,
+                'errstr' => $errstr
+            );
+            if ($this->do_debug >= 1) {
+                $this->edebug(
+                    'SMTP -> ERROR: ' . $this->error['error']
+                    . ": $errstr ($errno)"
+                );
+            }
+            return false;
+        }
+
+        // SMTP server can take longer to respond, give longer timeout for first read
+        // Windows does not have support for this timeout function
+        if (substr(PHP_OS, 0, 3) != 'WIN') {
+            $max = ini_get('max_execution_time');
+            if ($max != 0 && $timeout > $max) { // Don't bother if unlimited
+                @set_time_limit($timeout);
+            }
+            stream_set_timeout($this->smtp_conn, $timeout, 0);
+        }
+
+        // Get any announcement
+        $announce = $this->get_lines();
+
+        if ($this->do_debug >= 2) {
+            $this->edebug('SMTP -> FROM SERVER:' . $announce);
+        }
+
+        return true;
+    }
+
+    /**
+     * Initiate a TLS (encrypted) session.
+     * @access public
+     * @return bool
+     */
+    public function startTLS()
+    {
+        if (!$this->sendCommand("STARTTLS", "STARTTLS", 220)) {
+            return false;
+        }
+        // Begin encrypted connection
+        if (!stream_socket_enable_crypto(
+            $this->smtp_conn,
+            true,
+            STREAM_CRYPTO_METHOD_TLS_CLIENT
+        )
+        ) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Perform SMTP authentication.
+     * Must be run after hello().
+     * @see hello()
+     * @param string $username    The user name
+     * @param string $password    The password
+     * @param string $authtype    The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5)
+     * @param string $realm       The auth realm for NTLM
+     * @param string $workstation The auth workstation for NTLM
+     * @access public
+     * @return bool True if successfully authenticated.
+     */
+    public function authenticate(
+        $username,
+        $password,
+        $authtype = 'LOGIN',
+        $realm = '',
+        $workstation = ''
+    ) {
+        if (empty($authtype)) {
+            $authtype = 'LOGIN';
+        }
+
+        switch ($authtype) {
+            case 'PLAIN':
+                // Start authentication
+                if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) {
+                    return false;
+                }
+                // Send encoded username and password
+                if (!$this->sendCommand(
+                    'User & Password',
+                    base64_encode("\0" . $username . "\0" . $password),
+                    235
+                )
+                ) {
+                    return false;
+                }
+                break;
+            case 'LOGIN':
+                // Start authentication
+                if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) {
+                    return false;
+                }
+                if (!$this->sendCommand("Username", base64_encode($username), 334)) {
+                    return false;
+                }
+                if (!$this->sendCommand("Password", base64_encode($password), 235)) {
+                    return false;
+                }
+                break;
+            case 'NTLM':
+                /*
+                 * ntlm_sasl_client.php
+                 * Bundled with Permission
+                 *
+                 * How to telnet in windows:
+                 * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx
+                 * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication
+                 */
+                require_once 'extras/ntlm_sasl_client.php';
+                $temp = new stdClass();
+                $ntlm_client = new ntlm_sasl_client_class;
+                //Check that functions are available
+                if (!$ntlm_client->Initialize($temp)) {
+                    $this->error = array('error' => $temp->error);
+                    if ($this->do_debug >= 1) {
+                        $this->edebug(
+                            'You need to enable some modules in your php.ini file: '
+                            . $this->error['error']
+                        );
+                    }
+                    return false;
+                }
+                //msg1
+                $msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
+
+                if (!$this->sendCommand(
+                    'AUTH NTLM',
+                    'AUTH NTLM ' . base64_encode($msg1),
+                    334
+                )
+                ) {
+                    return false;
+                }
+
+                //Though 0 based, there is a white space after the 3 digit number
+                //msg2
+                $challenge = substr($this->last_reply, 3);
+                $challenge = base64_decode($challenge);
+                $ntlm_res = $ntlm_client->NTLMResponse(
+                    substr($challenge, 24, 8),
+                    $password
+                );
+                //msg3
+                $msg3 = $ntlm_client->TypeMsg3(
+                    $ntlm_res,
+                    $username,
+                    $realm,
+                    $workstation
+                );
+                // send encoded username
+                return $this->sendCommand('Username', base64_encode($msg3), 235);
+                break;
+            case 'CRAM-MD5':
+                // Start authentication
+                if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) {
+                    return false;
+                }
+                // Get the challenge
+                $challenge = base64_decode(substr($this->last_reply, 4));
+
+                // Build the response
+                $response = $username . ' ' . $this->hmac($challenge, $password);
+
+                // send encoded credentials
+                return $this->sendCommand('Username', base64_encode($response), 235);
+                break;
+        }
+        return true;
+    }
+
+    /**
+     * Calculate an MD5 HMAC hash.
+     * Works like hash_hmac('md5', $data, $key)
+     * in case that function is not available
+     * @param string $data The data to hash
+     * @param string $key  The key to hash with
+     * @access protected
+     * @return string
+     */
+    protected function hmac($data, $key)
+    {
+        if (function_exists('hash_hmac')) {
+            return hash_hmac('md5', $data, $key);
+        }
+
+        // The following borrowed from
+        // http://php.net/manual/en/function.mhash.php#27225
+
+        // RFC 2104 HMAC implementation for php.
+        // Creates an md5 HMAC.
+        // Eliminates the need to install mhash to compute a HMAC
+        // Hacked by Lance Rushing
+
+        $b = 64; // byte length for md5
+        if (strlen($key) > $b) {
+            $key = pack('H*', md5($key));
+        }
+        $key = str_pad($key, $b, chr(0x00));
+        $ipad = str_pad('', $b, chr(0x36));
+        $opad = str_pad('', $b, chr(0x5c));
+        $k_ipad = $key ^ $ipad;
+        $k_opad = $key ^ $opad;
+
+        return md5($k_opad . pack('H*', md5($k_ipad . $data)));
+    }
+
+    /**
+     * Check connection state.
+     * @access public
+     * @return bool True if connected.
+     */
+    public function connected()
+    {
+        if (!empty($this->smtp_conn)) {
+            $sock_status = stream_get_meta_data($this->smtp_conn);
+            if ($sock_status['eof']) {
+                // the socket is valid but we are not connected
+                if ($this->do_debug >= 1) {
+                    $this->edebug(
+                        'SMTP -> NOTICE: EOF caught while checking if connected'
+                    );
+                }
+                $this->close();
+                return false;
+            }
+            return true; // everything looks good
+        }
+        return false;
+    }
+
+    /**
+     * Close the socket and clean up the state of the class.
+     * Don't use this function without first trying to use QUIT.
+     * @see quit()
+     * @access public
+     * @return void
+     */
+    public function close()
+    {
+        $this->error = null; // so there is no confusion
+        $this->helo_rply = null;
+        if (!empty($this->smtp_conn)) {
+            // close the connection and cleanup
+            fclose($this->smtp_conn);
+            $this->smtp_conn = 0;
+        }
+    }
+
+    /**
+     * Send an SMTP DATA command.
+     * Issues a data command and sends the msg_data to the server,
+     * finializing the mail transaction. $msg_data is the message
+     * that is to be send with the headers. Each header needs to be
+     * on a single line followed by a <CRLF> with the message headers
+     * and the message body being separated by and additional <CRLF>.
+     * Implements rfc 821: DATA <CRLF>
+     * @param string $msg_data Message data to send
+     * @access public
+     * @return bool
+     */
+    public function data($msg_data)
+    {
+        if (!$this->sendCommand('DATA', 'DATA', 354)) {
+            return false;
+        }
+
+        /* The server is ready to accept data!
+         * according to rfc821 we should not send more than 1000
+         * including the CRLF
+         * characters on a single line so we will break the data up
+         * into lines by \r and/or \n then if needed we will break
+         * each of those into smaller lines to fit within the limit.
+         * in addition we will be looking for lines that start with
+         * a period '.' and append and additional period '.' to that
+         * line. NOTE: this does not count towards limit.
+         */
+
+        // Normalize the line breaks before exploding
+        $msg_data = str_replace("\r\n", "\n", $msg_data);
+        $msg_data = str_replace("\r", "\n", $msg_data);
+        $lines = explode("\n", $msg_data);
+
+        /* We need to find a good way to determine if headers are
+         * in the msg_data or if it is a straight msg body
+         * currently I am assuming rfc822 definitions of msg headers
+         * and if the first field of the first line (':' separated)
+         * does not contain a space then it _should_ be a header
+         * and we can process all lines before a blank "" line as
+         * headers.
+         */
+
+        $field = substr($lines[0], 0, strpos($lines[0], ':'));
+        $in_headers = false;
+        if (!empty($field) && !strstr($field, ' ')) {
+            $in_headers = true;
+        }
+
+        //RFC 2822 section 2.1.1 limit
+        $max_line_length = 998;
+
+        foreach ($lines as $line) {
+            $lines_out = null;
+            if ($line == '' && $in_headers) {
+                $in_headers = false;
+            }
+            // ok we need to break this line up into several smaller lines
+            while (strlen($line) > $max_line_length) {
+                $pos = strrpos(substr($line, 0, $max_line_length), ' ');
+
+                // Patch to fix DOS attack
+                if (!$pos) {
+                    $pos = $max_line_length - 1;
+                    $lines_out[] = substr($line, 0, $pos);
+                    $line = substr($line, $pos);
+                } else {
+                    $lines_out[] = substr($line, 0, $pos);
+                    $line = substr($line, $pos + 1);
+                }
+
+                /* If processing headers add a LWSP-char to the front of new line
+                 * rfc822 on long msg headers
+                 */
+                if ($in_headers) {
+                    $line = "\t" . $line;
+                }
+            }
+            $lines_out[] = $line;
+
+            // send the lines to the server
+            while (list(, $line_out) = @each($lines_out)) {
+                if (strlen($line_out) > 0) {
+                    if (substr($line_out, 0, 1) == '.') {
+                        $line_out = '.' . $line_out;
+                    }
+                }
+                $this->client_send($line_out . self::CRLF);
+            }
+        }
+
+        // Message data has been sent, complete the command
+        return $this->sendCommand('DATA END', '.', 250);
+    }
+
+    /**
+     * Send an SMTP HELO or EHLO command.
+     * Used to identify the sending server to the receiving server.
+     * This makes sure that client and server are in a known state.
+     * Implements from RFC 821: HELO <SP> <domain> <CRLF>
+     * and RFC 2821 EHLO.
+     * @param string $host The host name or IP to connect to
+     * @access public
+     * @return bool
+     */
+    public function hello($host = '')
+    {
+        // Try extended hello first (RFC 2821)
+        if (!$this->sendHello('EHLO', $host)) {
+            if (!$this->sendHello('HELO', $host)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Send an SMTP HELO or EHLO command.
+     * Low-level implementation used by hello()
+     * @see hello()
+     * @param string $hello The HELO string
+     * @param string $host  The hostname to say we are
+     * @access protected
+     * @return bool
+     */
+    protected function sendHello($hello, $host)
+    {
+        $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250);
+        $this->helo_rply = $this->last_reply;
+        return $noerror;
+    }
+
+    /**
+     * Send an SMTP MAIL command.
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more recipient
+     * commands may be called followed by a data command.
+     * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
+     * @param string $from Source address of this message
+     * @access public
+     * @return bool
+     */
+    public function mail($from)
+    {
+        $useVerp = ($this->do_verp ? ' XVERP' : '');
+        return $this->sendCommand(
+            'MAIL FROM',
+            'MAIL FROM:<' . $from . '>' . $useVerp,
+            250
+        );
+    }
+
+    /**
+     * Send an SMTP QUIT command.
+     * Closes the socket if there is no error or the $close_on_error argument is true.
+     * Implements from rfc 821: QUIT <CRLF>
+     * @param bool $close_on_error Should the connection close if an error occurs?
+     * @access public
+     * @return bool
+     */
+    public function quit($close_on_error = true)
+    {
+        $noerror = $this->sendCommand('QUIT', 'QUIT', 221);
+        $e = $this->error; //Save any error
+        if ($noerror or $close_on_error) {
+            $this->close();
+            $this->error = $e; //Restore any error from the quit command
+        }
+        return $noerror;
+    }
+
+    /**
+     * Send an SMTP RCPT command.
+     * Sets the TO argument to $to.
+     * Returns true if the recipient was accepted false if it was rejected.
+     * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
+     * @param string $to The address the message is being sent to
+     * @access public
+     * @return bool
+     */
+    public function recipient($to)
+    {
+        return $this->sendCommand(
+            'RCPT TO ',
+            'RCPT TO:<' . $to . '>',
+            array(250, 251)
+        );
+    }
+
+    /**
+     * Send an SMTP RSET command.
+     * Abort any transaction that is currently in progress.
+     * Implements rfc 821: RSET <CRLF>
+     * @access public
+     * @return bool True on success.
+     */
+    public function reset()
+    {
+        return $this->sendCommand('RSET', 'RSET', 250);
+    }
+
+    /**
+     * Send a command to an SMTP server and check its return code.
+     * @param string $command       The command name - not sent to the server
+     * @param string $commandstring The actual command to send
+     * @param int|array $expect     One or more expected integer success codes
+     * @access protected
+     * @return bool True on success.
+     */
+    protected function sendCommand($command, $commandstring, $expect)
+    {
+        if (!$this->connected()) {
+            $this->error = array(
+                "error" => "Called $command without being connected"
+            );
+            return false;
+        }
+        $this->client_send($commandstring . self::CRLF);
+
+        $reply = $this->get_lines();
+        $code = substr($reply, 0, 3);
+
+        if ($this->do_debug >= 2) {
+            $this->edebug('SMTP -> FROM SERVER:' . $reply);
+        }
+
+        if (!in_array($code, (array)$expect)) {
+            $this->last_reply = null;
+            $this->error = array(
+                "error" => "$command command failed",
+                "smtp_code" => $code,
+                "detail" => substr($reply, 4)
+            );
+            if ($this->do_debug >= 1) {
+                $this->edebug(
+                    'SMTP -> ERROR: ' . $this->error['error'] . ': ' . $reply
+                );
+            }
+            return false;
+        }
+
+        $this->last_reply = $reply;
+        $this->error = null;
+        return true;
+    }
+
+    /**
+     * Send an SMTP SAML command.
+     * Starts a mail transaction from the email address specified in $from.
+     * Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more recipient
+     * commands may be called followed by a data command. This command
+     * will send the message to the users terminal if they are logged
+     * in and send them an email.
+     * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
+     * @param string $from The address the message is from
+     * @access public
+     * @return bool
+     */
+    public function sendAndMail($from)
+    {
+        return $this->sendCommand("SAML", "SAML FROM:$from", 250);
+    }
+
+    /**
+     * Send an SMTP VRFY command.
+     * @param string $name The name to verify
+     * @access public
+     * @return bool
+     */
+    public function verify($name)
+    {
+        return $this->sendCommand("VRFY", "VRFY $name", array(250, 251));
+    }
+
+    /**
+     * Send an SMTP NOOP command.
+     * Used to keep keep-alives alive, doesn't actually do anything
+     * @access public
+     * @return bool
+     */
+    public function noop()
+    {
+        return $this->sendCommand("NOOP", "NOOP", 250);
+    }
+
+    /**
+     * Send an SMTP TURN command.
+     * This is an optional command for SMTP that this class does not support.
+     * This method is here to make the RFC821 Definition
+     * complete for this class and __may__ be implemented in future
+     * Implements from rfc 821: TURN <CRLF>
+     * @access public
+     * @return bool
+     */
+    public function turn()
+    {
+        $this->error = array(
+            'error' => 'The SMTP TURN command is not implemented'
+        );
+        if ($this->do_debug >= 1) {
+            $this->edebug('SMTP -> NOTICE: ' . $this->error['error']);
+        }
+        return false;
+    }
+
+    /**
+     * Send raw data to the server.
+     * @param string $data The data to send
+     * @access public
+     * @return int|bool The number of bytes sent to the server or FALSE on error
+     */
+    public function client_send($data)
+    {
+        if ($this->do_debug >= 1) {
+            $this->edebug("CLIENT -> SMTP: $data");
+        }
+        return fwrite($this->smtp_conn, $data);
+    }
+
+    /**
+     * Get the latest error.
+     * @access public
+     * @return array
+     */
+    public function getError()
+    {
+        return $this->error;
+    }
+
+    /**
+     * Get the last reply from the server.
+     * @access public
+     * @return string
+     */
+    public function getLastReply()
+    {
+        return $this->last_reply;
+    }
+
+    /**
+     * Read the SMTP server's response.
+     * Either before eof or socket timeout occurs on the operation.
+     * With SMTP we can tell if we have more lines to read if the
+     * 4th character is '-' symbol. If it is a space then we don't
+     * need to read anything else.
+     * @access protected
+     * @return string
+     */
+    protected function get_lines()
+    {
+        $data = '';
+        $endtime = 0;
+        // If the connection is bad, give up now
+        if (!is_resource($this->smtp_conn)) {
+            return $data;
+        }
+        stream_set_timeout($this->smtp_conn, $this->Timeout);
+        if ($this->Timelimit > 0) {
+            $endtime = time() + $this->Timelimit;
+        }
+        while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
+            $str = @fgets($this->smtp_conn, 515);
+            if ($this->do_debug >= 4) {
+                $this->edebug("SMTP -> get_lines(): \$data was \"$data\"");
+                $this->edebug("SMTP -> get_lines(): \$str is \"$str\"");
+            }
+            $data .= $str;
+            if ($this->do_debug >= 4) {
+                $this->edebug("SMTP -> get_lines(): \$data is \"$data\"");
+            }
+            // if 4th character is a space, we are done reading, break the loop
+            if (substr($str, 3, 1) == ' ') {
+                break;
+            }
+            // Timed-out? Log and break
+            $info = stream_get_meta_data($this->smtp_conn);
+            if ($info['timed_out']) {
+                if ($this->do_debug >= 4) {
+                    $this->edebug(
+                        'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)'
+                    );
+                }
+                break;
+            }
+            // Now check if reads took too long
+            if ($endtime) {
+                if (time() > $endtime) {
+                    if ($this->do_debug >= 4) {
+                        $this->edebug(
+                            'SMTP -> get_lines(): timelimit reached ('
+                            . $this->Timelimit . ' sec)'
+                        );
+                    }
+                    break;
+                }
+            }
+        }
+        return $data;
+    }
+
+    /**
+     * Enable or disable VERP address generation.
+     * @param bool $enabled
+     */
+    public function setVerp($enabled = false)
+    {
+        $this->do_verp = $enabled;
+    }
+
+    /**
+     * Get VERP address generation mode.
+     * @return bool
+     */
+    public function getVerp()
+    {
+        return $this->do_verp;
+    }
+
+    /**
+     * Set debug output method.
+     * @param string $method The function/method to use for debugging output.
+     */
+    public function setDebugOutput($method = 'echo')
+    {
+        $this->Debugoutput = $method;
+    }
+
+    /**
+     * Get debug output method.
+     * @return string
+     */
+    public function getDebugOutput()
+    {
+        return $this->Debugoutput;
+    }
+
+    /**
+     * Set debug output level.
+     * @param int $level
+     */
+    public function setDebugLevel($level = 0)
+    {
+        $this->do_debug = $level;
+    }
+
+    /**
+     * Get debug output level.
+     * @return int
+     */
+    public function getDebugLevel()
+    {
+        return $this->do_debug;
+    }
+
+    /**
+     * Set SMTP timeout.
+     * @param int $timeout
+     */
+    public function setTimeout($timeout = 0)
+    {
+        $this->Timeout = $timeout;
+    }
+
+    /**
+     * Get SMTP timeout.
+     * @return int
+     */
+    public function getTimeout()
+    {
+        return $this->Timeout;
+    }
+}
Index: /tags/2.6.0RC1/include/picture_comment.inc.php
===================================================================
--- /tags/2.6.0RC1/include/picture_comment.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/picture_comment.inc.php	(revision 25596)
@@ -0,0 +1,278 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the picture page to manage user comments
+ *
+ */
+
+// the picture is commentable if it belongs at least to one category which
+// is commentable
+$page['show_comments'] = false;
+foreach ($related_categories as $category)
+{
+  if ($category['commentable']=='true')
+  {
+    $page['show_comments'] = true;
+    break;
+  }
+}
+
+if ( $page['show_comments'] and isset( $_POST['content'] ) )
+{
+  if ( is_a_guest() and !$conf['comments_forall'] )
+  {
+    die ('Session expired');
+  }
+
+  $comm = array(
+    'author' => trim( @$_POST['author'] ),
+    'content' => trim( $_POST['content'] ),
+    'website_url' => trim( $_POST['website_url'] ),
+    'email' => trim( @$_POST['email'] ),
+    'image_id' => $page['image_id'],
+   );
+
+  include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+
+  $comment_action = insert_user_comment($comm, @$_POST['key'], $page['errors']);
+
+  switch ($comment_action)
+  {
+    case 'moderate':
+      $page['infos'][] = l10n('An administrator must authorize your comment before it is visible.');
+    case 'validate':
+      $page['infos'][] = l10n('Your comment has been registered');
+      break;
+    case 'reject':
+      set_status_header(403);
+      $page['errors'][] = l10n('Your comment has NOT been registered because it did not pass the validation rules');
+      break;
+    default:
+      trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING);
+  }
+
+  // allow plugins to notify what's going on
+  trigger_action( 'user_comment_insertion',
+      array_merge($comm, array('action'=>$comment_action) )
+    );
+}
+elseif ( isset($_POST['content']) )
+{
+  set_status_header(403);
+  die('ugly spammer');
+}
+
+if ($page['show_comments'])
+{
+  if ( !is_admin() )
+  {
+    $validated_clause = '  AND validated = \'true\'';
+  }
+  else
+  {
+    $validated_clause = '';
+  }
+
+  // number of comments for this picture
+  $query = '
+SELECT
+    COUNT(*) AS nb_comments
+  FROM '.COMMENTS_TABLE.'
+  WHERE image_id = '.$page['image_id']
+  .$validated_clause.'
+;';
+  $row = pwg_db_fetch_assoc( pwg_query( $query ) );
+
+  // navigation bar creation
+  if (!isset($page['start']))
+  {
+    $page['start'] = 0;
+  }
+
+  $navigation_bar = create_navigation_bar(
+    duplicate_picture_url(array(), array('start')),
+    $row['nb_comments'],
+    $page['start'],
+    $conf['nb_comment_page'],
+    true // We want a clean URL
+    );
+
+  $template->assign(
+    array(
+      'COMMENT_COUNT' => $row['nb_comments'],
+      'navbar' => $navigation_bar,
+      )
+    );
+
+  if ($row['nb_comments'] > 0)
+  {
+    // comments order (get, session, conf)
+    if (!empty($_GET['comments_order']) && in_array(strtoupper($_GET['comments_order']), array('ASC', 'DESC')))
+    {
+      pwg_set_session_var('comments_order', $_GET['comments_order']);
+    }
+    $comments_order = pwg_get_session_var('comments_order', $conf['comments_order']);
+
+    $template->assign(array(
+      'COMMENTS_ORDER_URL' => add_url_params( duplicate_picture_url(), array('comments_order'=> ($comments_order == 'ASC' ? 'DESC' : 'ASC') ) ),
+      'COMMENTS_ORDER_TITLE' => $comments_order == 'ASC' ? l10n('Show latest comments first') : l10n('Show oldest comments first'),
+      ));
+
+    $query = '
+SELECT
+    com.id,
+    author,
+    author_id,
+    u.'.$conf['user_fields']['email'].' AS user_email,
+    date,
+    image_id,
+    website_url,
+    com.email,
+    content,
+    validated
+  FROM '.COMMENTS_TABLE.' AS com
+  LEFT JOIN '.USERS_TABLE.' AS u
+    ON u.'.$conf['user_fields']['id'].' = author_id
+  WHERE image_id = '.$page['image_id'].'
+    '.$validated_clause.'
+  ORDER BY date '.$comments_order.'
+  LIMIT '.$conf['nb_comment_page'].' OFFSET '.$page['start'].'
+;';
+    $result = pwg_query( $query );
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if ($row['author'] == 'guest')
+      {
+        $row['author'] = l10n('guest');
+      }
+
+      $email = null;
+      if (!empty($row['user_email']))
+      {
+        $email = $row['user_email'];
+      }
+      elseif (!empty($row['email']))
+      {
+        $email = $row['email'];
+      }
+
+      $tpl_comment =
+        array(
+          'ID' => $row['id'],
+          'AUTHOR' => trigger_event('render_comment_author', $row['author']),
+          'DATE' => format_date($row['date'], true),
+          'CONTENT' => trigger_event('render_comment_content',$row['content']),
+          'WEBSITE_URL' => $row['website_url'],
+        );
+
+      if (can_manage_comment('delete', $row['author_id']))
+      {
+        $tpl_comment['U_DELETE'] = add_url_params(
+          $url_self,
+          array(
+            'action'=>'delete_comment',
+            'comment_to_delete'=>$row['id'],
+            'pwg_token' => get_pwg_token(),
+            )
+          );
+      }
+      if (can_manage_comment('edit', $row['author_id']))
+      {
+        $tpl_comment['U_EDIT'] = add_url_params(
+          $url_self,
+          array(
+            'action'=>'edit_comment',
+            'comment_to_edit'=>$row['id'],
+            )
+          );
+          if (isset($edit_comment) and ($row['id'] == $edit_comment))
+          {
+            $tpl_comment['IN_EDIT'] = true;
+            $key = get_ephemeral_key(2, $page['image_id']);
+            $tpl_comment['KEY'] = $key;
+            $tpl_comment['CONTENT'] = $row['content'];
+            $tpl_comment['PWG_TOKEN'] = get_pwg_token();
+            $tpl_comment['U_CANCEL'] = $url_self;
+          }
+      }
+      if (is_admin())
+      {
+        $tpl_comment['EMAIL'] = $email;
+
+        if ($row['validated'] != 'true')
+        {
+          $tpl_comment['U_VALIDATE'] = add_url_params(
+                  $url_self,
+                  array(
+                    'action' => 'validate_comment',
+                    'comment_to_validate' => $row['id'],
+                    'pwg_token' => get_pwg_token(),
+                    )
+                  );
+        }
+      }
+      $template->append('comments', $tpl_comment);
+    }
+  }
+
+  $show_add_comment_form = true;
+  if (isset($edit_comment))
+  {
+    $show_add_comment_form = false;
+  }
+  if (is_a_guest() and !$conf['comments_forall'])
+  {
+    $show_add_comment_form = false;
+  }
+
+  if ($show_add_comment_form)
+  {
+    $key = get_ephemeral_key(3, $page['image_id']);
+
+    $tpl_var =  array(
+        'F_ACTION' =>         $url_self,
+        'KEY' =>              $key,
+        'CONTENT' =>          '',
+        'SHOW_AUTHOR' =>      !is_classic_user(),
+        'AUTHOR_MANDATORY' => $conf['comments_author_mandatory'],
+        'AUTHOR' =>           '',
+        'WEBSITE_URL' =>      '',
+        'SHOW_EMAIL' =>       !is_classic_user() or empty($user['email']),
+        'EMAIL_MANDATORY' =>  $conf['comments_email_mandatory'],
+        'EMAIL' =>            '',
+      );
+
+    if ('reject'==@$comment_action)
+    {
+      foreach( array('content', 'author', 'website_url', 'email') as $k)
+      {
+        $tpl_var[strtoupper($k)] = htmlspecialchars( stripslashes(@$_POST[$k]) );
+      }
+    }
+    $template->assign('comment_add', $tpl_var);
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/picture_metadata.inc.php
===================================================================
--- /tags/2.6.0RC1/include/picture_metadata.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/picture_metadata.inc.php	(revision 25596)
@@ -0,0 +1,105 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the picture page to manage picture metadata
+ *
+ */
+
+
+include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
+if (($conf['show_exif']) and (function_exists('read_exif_data')))
+{
+  $exif_mapping = array();
+  foreach ($conf['show_exif_fields'] as $field)
+  {
+    $exif_mapping[$field] = $field;
+  }
+
+  $exif = get_exif_data($picture['current']['src_image']->get_path(), $exif_mapping);
+  
+  if (count($exif) > 0)
+  {
+    $tpl_meta = array(
+        'TITLE' => l10n('EXIF Metadata'),
+        'lines' => array(),
+      );
+
+    foreach ($conf['show_exif_fields'] as $field)
+    {
+      if (strpos($field, ';') === false)
+      {
+        if (isset($exif[$field]))
+        {
+          $key = $field;
+          if (isset($lang['exif_field_'.$field]))
+          {
+            $key = $lang['exif_field_'.$field];
+          }
+          $tpl_meta['lines'][$key] = $exif[$field];
+        }
+      }
+      else
+      {
+        $tokens = explode(';', $field);
+        if (isset($exif[$field]))
+        {
+          $key = $tokens[1];
+          if (isset($lang['exif_field_'.$key]))
+          {
+            $key = $lang['exif_field_'.$key];
+          }
+          $tpl_meta['lines'][$key] = $exif[$field];
+        }
+      }
+    }
+    $template->append('metadata', $tpl_meta);
+  }
+}
+
+if ($conf['show_iptc'])
+{
+  $iptc = get_iptc_data($picture['current']['src_image']->get_path(), $conf['show_iptc_mapping']);
+
+  if (count($iptc) > 0)
+  {
+    $tpl_meta = array(
+        'TITLE' => l10n('IPTC Metadata'),
+        'lines' => array(),
+      );
+
+    foreach ($iptc as $field => $value)
+    {
+      $key = $field;
+      if (isset($lang[$field]))
+      {
+        $key = $lang[$field];
+      }
+      $tpl_meta['lines'][$key] = $value;
+    }
+    $template->append('metadata', $tpl_meta);
+  }
+}
+
+
+?>
Index: /tags/2.6.0RC1/include/picture_rate.inc.php
===================================================================
--- /tags/2.6.0RC1/include/picture_rate.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/picture_rate.inc.php	(revision 25596)
@@ -0,0 +1,87 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This file is included by the picture page to manage rates
+ *
+ */
+
+if ($conf['rate'])
+{
+  $rate_summary = array( 'count'=>0, 'score'=>$picture['current']['rating_score'], 'average'=>null );
+  if ( NULL != $rate_summary['score'] )
+  {
+    $query = '
+SELECT COUNT(rate) AS count
+     , ROUND(AVG(rate),2) AS average
+  FROM '.RATE_TABLE.'
+  WHERE element_id = '.$picture['current']['id'].'
+;';
+		list($rate_summary['count'], $rate_summary['average']) = pwg_db_fetch_row(pwg_query($query));
+  }
+  $template->assign('rate_summary', $rate_summary);
+
+  $user_rate = null;
+  if ($conf['rate_anonymous'] or is_autorize_status(ACCESS_CLASSIC) )
+  {
+    if ($rate_summary['count']>0)
+    {
+      $query = 'SELECT rate
+      FROM '.RATE_TABLE.'
+      WHERE element_id = '.$page['image_id'] . '
+      AND user_id = '.$user['id'] ;
+
+      if ( !is_autorize_status(ACCESS_CLASSIC) )
+      {
+        $ip_components = explode('.', $_SERVER['REMOTE_ADDR']);
+        if ( count($ip_components)>3 )
+        {
+          array_pop($ip_components);
+        }
+        $anonymous_id = implode ('.', $ip_components);
+        $query .= ' AND anonymous_id = \''.$anonymous_id . '\'';
+      }
+
+      $result = pwg_query($query);
+      if (pwg_db_num_rows($result) > 0)
+      {
+        $row = pwg_db_fetch_assoc($result);
+        $user_rate = $row['rate'];
+      }
+    }
+
+    $template->assign(
+        'rating',
+        array(
+          'F_ACTION' => add_url_params(
+                        $url_self,
+                        array('action'=>'rate')
+                      ),
+          'USER_RATE'=> $user_rate,
+          'marks'    => $conf['rate_items']
+        )
+      );
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/section_init.inc.php
===================================================================
--- /tags/2.6.0RC1/include/section_init.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/section_init.inc.php	(revision 25596)
@@ -0,0 +1,647 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * This included page checks section related parameter and provides
+ * following informations:
+ *
+ * - $page['title']
+ *
+ * - $page['items']: ordered list of items to display
+ *
+ */
+
+// "index.php?/category/12-foo/start-24" or
+// "index.php/category/12-foo/start-24"
+// must return :
+//
+// array(
+//   'section'  => 'categories',
+//   'category' => array('id'=>12, ...),
+//   'start'    => 24
+//   );
+
+
+$page['items'] = array();
+$page['start'] = $page['startcat'] = 0;
+
+// some ISPs set PATH_INFO to empty string or to SCRIPT_FILENAME while in the
+// default apache implementation it is not set
+if ( $conf['question_mark_in_urls']==false and
+     isset($_SERVER["PATH_INFO"]) and !empty($_SERVER["PATH_INFO"]) )
+{
+  $rewritten = $_SERVER["PATH_INFO"];
+  $rewritten = str_replace('//', '/', $rewritten);
+  $path_count = count( explode('/', $rewritten) );
+  $page['root_path'] = PHPWG_ROOT_PATH.str_repeat('../', $path_count-1);
+}
+else
+{
+  $rewritten = '';
+  foreach (array_keys($_GET) as $keynum => $key)
+  {
+    $rewritten = $key;
+    break;
+  }
+
+  // the $_GET keys are not protected in include/common.inc.php, only the values
+  $rewritten = pwg_db_real_escape_string($rewritten);
+  $page['root_path'] = PHPWG_ROOT_PATH;
+}
+
+if ( strncmp($page['root_path'], './', 2) == 0 )
+{
+  $page['root_path'] = substr($page['root_path'], 2);
+}
+
+// deleting first "/" if displayed
+$tokens = explode('/', ltrim($rewritten, '/') );
+// $tokens = array(
+//   0 => category,
+//   1 => 12-foo,
+//   2 => start-24
+//   );
+
+$next_token = 0;
+
+// +-----------------------------------------------------------------------+
+// |                             picture page                              |
+// +-----------------------------------------------------------------------+
+// the first token must be the identifier for the picture
+if (script_basename() == 'picture')
+{
+  // url compatibility with versions below 1.6
+  if ( isset($_GET['image_id'])
+       and isset($_GET['cat']) 
+       and is_numeric($_GET['cat']) )
+  {
+    $url = make_picture_url( array(
+        'section' => 'categories',
+        'category' => get_cat_info($_GET['cat']),
+        'image_id' => $_GET['image_id']
+      ) );
+    redirect($url);
+  }
+  
+  $token = $tokens[$next_token];
+  $next_token++;
+  if ( is_numeric($token) )
+  {
+    $page['image_id'] = $token;
+    if ($page['image_id']==0)
+    {
+      bad_request('invalid picture identifier');
+    }
+  }
+  else
+  {
+    preg_match('/^(\d+-)?(.*)?$/', $token, $matches);
+    if (isset($matches[1]) and is_numeric($matches[1]=rtrim($matches[1],'-')) )
+    {
+      $page['image_id'] = $matches[1];
+      if ( !empty($matches[2]) )
+      {
+        $page['image_file'] = $matches[2];
+      }
+    }
+    else
+    {
+      $page['image_id'] = 0; // more work in picture.php
+      if ( !empty($matches[2]) )
+      {
+        $page['image_file'] = $matches[2];
+      }
+      else
+      {
+        bad_request('picture identifier is missing');
+      }
+    }
+  }
+}
+
+
+$page = array_merge( $page, parse_section_url( $tokens, $next_token) );
+
+if ( !isset($page['section']) )
+{
+  $page['section'] = 'categories';
+
+  switch (script_basename())
+  {
+    case 'picture':
+      break;
+    case 'index':
+    {
+      // No section defined, go to random url
+      if ( !empty($conf['random_index_redirect']) and empty($tokens[$next_token]) )
+      {
+        $random_index_redirect = array();
+        foreach ($conf['random_index_redirect'] as $random_url => $random_url_condition)
+        {
+          if (empty($random_url_condition) or eval($random_url_condition))
+          {
+            $random_index_redirect[] = $random_url;
+          }
+        }
+        if (!empty($random_index_redirect))
+        {
+          redirect($random_index_redirect[mt_rand(0, count($random_index_redirect)-1)]);
+        }
+      }
+      $page['is_homepage'] = true;
+      break;
+    }
+    default:
+      trigger_error('script_basename "'.script_basename().'" unknown',
+        E_USER_WARNING);
+  }
+}
+
+$page = array_merge( $page, parse_well_known_params_url( $tokens, $next_token) );
+
+//access a picture only by id, file or id-file without given section
+if ( script_basename()=='picture' and 'categories'==$page['section'] and
+      !isset($page['category']) and !isset($page['chronology_field']) )
+{
+  $page['flat'] = true;
+}
+
+// $page['nb_image_page'] is the number of picture to display on this page
+// By default, it is the same as the $user['nb_image_page']
+$page['nb_image_page'] = $user['nb_image_page'];
+
+// if flat mode is active, we must consider the image set as a standard set
+// and not as a category set because we can't use the #image_category.rank :
+// displayed images are not directly linked to the displayed category
+if ('categories' == $page['section'] and !isset($page['flat']))
+{
+  $conf['order_by'] = $conf['order_by_inside_category'];
+}
+
+if (pwg_get_session_var('image_order',0) > 0)
+{
+  $image_order_id = pwg_get_session_var('image_order');
+
+  $orders = get_category_preferred_image_orders();
+
+  // the current session stored image_order might be not compatible with
+  // current image set, for example if the current image_order is the rank
+  // and that we are displaying images related to a tag.
+  //
+  // In case of incompatibility, the session stored image_order is removed.
+  if ($orders[$image_order_id][2])
+  {
+    $conf['order_by'] = str_replace(
+        'ORDER BY ',
+        'ORDER BY '.$orders[$image_order_id][1].',',
+        $conf['order_by']
+        );
+    $page['super_order_by'] = true;
+  }
+  else
+  {
+    pwg_unset_session_var('image_order');
+    $page['super_order_by'] = false;
+  }
+}
+
+$forbidden = get_sql_condition_FandF(
+      array(
+        'forbidden_categories' => 'category_id',
+        'visible_categories' => 'category_id',
+        'visible_images' => 'id'
+        ),
+      'AND'
+  );
+
+// +-----------------------------------------------------------------------+
+// |                              category                                 |
+// +-----------------------------------------------------------------------+
+if ('categories' == $page['section'])
+{
+  if (isset($page['category']))
+  {
+    $page = array_merge(
+      $page, 
+      array(
+        'comment' => trigger_event(
+            'render_category_description',
+            $page['category']['comment'],
+            'main_page_category_description'
+            ),
+        'title'   => get_cat_display_name($page['category']['upper_names'], '', false),
+        )
+      );
+  }
+  else
+  {
+    $page['title'] = ''; // will be set later
+  }
+
+  // GET IMAGES LIST
+  if
+    (
+      $page['startcat'] == 0 and
+      (!isset($page['chronology_field'])) and // otherwise the calendar will requery all subitems
+      (
+        (isset($page['category'])) or
+        (isset($page['flat']))
+      )
+    )
+  {
+    if ( !empty($page['category']['image_order']) and !isset($page['super_order_by']) )
+    {
+      $conf[ 'order_by' ] = ' ORDER BY '.$page['category']['image_order'];
+    }
+
+    // flat categories mode
+    if (isset($page['flat']))
+    {
+      // get all allowed sub-categories
+      if ( isset($page['category']) )
+      {
+        $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE
+    uppercats LIKE \''.$page['category']['uppercats'].',%\' '
+    .get_sql_condition_FandF(
+        array(
+          'forbidden_categories' => 'id',
+          'visible_categories' => 'id',
+          ),
+        "\n  AND"
+        );
+        
+        $subcat_ids = array_from_query($query, 'id');
+        $subcat_ids[] = $page['category']['id'];
+        $where_sql = 'category_id IN ('.implode(',',$subcat_ids).')';
+        // remove categories from forbidden because just checked above
+        $forbidden = get_sql_condition_FandF(
+              array( 'visible_images' => 'id' ),
+              'AND'
+          );
+      }
+      else
+      {
+        unset($page['is_homepage']);
+        $where_sql = '1=1';
+      }
+    }
+    // normal mode
+    else
+    {
+      $where_sql = 'category_id = '.$page['category']['id'];
+    }
+
+    // main query
+    $query = '
+SELECT DISTINCT(image_id)
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    INNER JOIN '.IMAGES_TABLE.' ON id = image_id
+  WHERE
+    '.$where_sql.'
+'.$forbidden.'
+  '.$conf['order_by'].'
+;';
+
+    $page['items'] = array_from_query($query, 'image_id');
+  }
+}
+// special sections
+else
+{
+// +-----------------------------------------------------------------------+
+// |                            tags section                               |
+// +-----------------------------------------------------------------------+
+  if ($page['section'] == 'tags')
+  {
+    $page['tag_ids'] = array();
+    foreach ($page['tags'] as $tag)
+    {
+      $page['tag_ids'][] = $tag['id'];
+    }
+
+    $items = get_image_ids_for_tags($page['tag_ids']);
+
+    $page = array_merge(
+      $page,
+      array(
+        'title' => get_tags_content_title(),
+        'items' => $items,
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                           search section                              |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'search')
+  {
+    include_once( PHPWG_ROOT_PATH .'include/functions_search.inc.php' );
+
+    $search_result = get_search_results($page['search'], @$page['super_order_by'] );
+    //save the details of the query search
+    if ( isset($search_result['qs']) )
+    {
+      $page['qsearch_details'] = $search_result['qs'];
+    }
+
+    $page = array_merge(
+      $page,
+      array(
+        'items' => $search_result['items'],
+        'title' => '<a href="'.duplicate_index_url(array('start'=>0)).'">'
+                    .l10n('Search results').'</a>',
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                           favorite section                            |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'favorites')
+  {
+    check_user_favorites();
+
+    $page = array_merge(
+      $page,
+      array(
+        'title' => l10n('Favorites')
+      )
+    );
+
+    if (!empty($_GET['action']) && ($_GET['action'] == 'remove_all_from_favorites'))
+    {
+      $query = '
+DELETE FROM '.FAVORITES_TABLE.'
+  WHERE user_id = '.$user['id'].'
+;';
+      pwg_query($query);
+      redirect(make_index_url( array('section'=>'favorites') ));
+    }
+    else
+    {
+      $query = '
+SELECT image_id
+  FROM '.FAVORITES_TABLE.'
+    INNER JOIN '.IMAGES_TABLE.' ON image_id = id
+  WHERE user_id = '.$user['id'].'
+'.get_sql_condition_FandF(
+      array(
+        'visible_images' => 'id'
+        ),
+      'AND'
+      ).'
+  '.$conf['order_by'].'
+;';
+      $page = array_merge(
+        $page,
+        array(
+          'items' => array_from_query($query, 'image_id'),
+          )
+        );
+
+      if (count($page['items'])>0)
+      {
+        $template->assign(
+            'favorite',
+            array(
+              'U_FAVORITE' => add_url_params(
+                  make_index_url( array('section'=>'favorites') ),
+                  array('action'=>'remove_all_from_favorites')
+                  ),
+              )
+            );
+      }
+    }
+  }
+// +-----------------------------------------------------------------------+
+// |                       recent pictures section                         |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'recent_pics')
+  {
+    if ( !isset($page['super_order_by']) )
+    {
+      $conf['order_by'] = str_replace(
+          'ORDER BY ',
+          'ORDER BY date_available DESC,',
+          $conf['order_by']
+          );
+    }
+
+    $query = '
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE '
+  .get_recent_photos_sql('date_available').'
+  '.$forbidden
+  .$conf['order_by'].'
+;';
+
+    $page = array_merge(
+      $page,
+      array(
+        'title' => '<a href="'.duplicate_index_url(array('start'=>0)).'">'
+                    .l10n('Recent photos').'</a>',
+        'items' => array_from_query($query, 'id'),
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                 recently updated categories section                   |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'recent_cats')
+  {
+    $page = array_merge(
+      $page,
+      array(
+        'title' => l10n('Recent albums'),
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                        most visited section                           |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'most_visited')
+  {
+    $page['super_order_by'] = true;
+    $conf['order_by'] = ' ORDER BY hit DESC, id DESC';
+    
+    $query = '
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE hit > 0
+    '.$forbidden.'
+    '.$conf['order_by'].'
+  LIMIT '.$conf['top_number'].'
+;';
+
+    $page = array_merge(
+      $page,
+      array(
+        'title' => '<a href="'.duplicate_index_url(array('start'=>0)).'">'
+                    .$conf['top_number'].' '.l10n('Most visited').'</a>',
+        'items' => array_from_query($query, 'id'),
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                          best rated section                           |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'best_rated')
+  {
+    $page['super_order_by'] = true;
+    $conf['order_by'] = ' ORDER BY rating_score DESC, id DESC';
+
+    $query ='
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE rating_score IS NOT NULL
+    '.$forbidden.'
+    '.$conf['order_by'].'
+  LIMIT '.$conf['top_number'].'
+;';
+    $page = array_merge(
+      $page,
+      array(
+        'title' => '<a href="'.duplicate_index_url(array('start'=>0)).'">'
+                    .$conf['top_number'].' '.l10n('Best rated').'</a>',
+        'items' => array_from_query($query, 'id'),
+        )
+      );
+  }
+// +-----------------------------------------------------------------------+
+// |                             list section                              |
+// +-----------------------------------------------------------------------+
+  else if ($page['section'] == 'list')
+  {
+    $query ='
+SELECT DISTINCT(id)
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+  WHERE image_id IN ('.implode(',', $page['list']).')
+    '.$forbidden.'
+  '.$conf['order_by'].'
+;';
+
+    $page = array_merge(
+      $page,
+      array(
+        'title' => '<a href="'.duplicate_index_url(array('start'=>0)).'">'
+                    .l10n('Random photos').'</a>',
+        'items' => array_from_query($query, 'id'),
+        )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                             chronology                                |
+// +-----------------------------------------------------------------------+
+if (isset($page['chronology_field']))
+{
+  unset($page['is_homepage']);
+  include_once( PHPWG_ROOT_PATH.'include/functions_calendar.inc.php' );
+  initialize_calendar();
+}
+
+// title update
+if (isset($page['title']))
+{
+  $page['section_title'] = '<a href="'.get_gallery_home_url().'">'.l10n('Home').'</a>';
+  if (!empty($page['title']))
+  {
+    $page['section_title'] .= $conf['level_separator'].$page['title'];
+  }
+  else
+  {
+    $page['title'] = $page['section_title'];
+  }
+}
+
+// add meta robots noindex, nofollow to avoid unnecesary robot crawls
+$page['meta_robots']=array();
+if ( isset($page['chronology_field'])
+      or ( isset($page['flat']) and isset($page['category']) )
+      or 'list'==$page['section'] or 'recent_pics'==$page['section'] )
+{
+  $page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+}
+elseif ('tags'==$page['section'])
+{
+  if ( count($page['tag_ids'])>1 )
+  {
+    $page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+  }
+}
+elseif ('recent_cats'==$page['section'])
+{
+  $page['meta_robots']['noindex']=1;
+}
+elseif ('search'==$page['section'])
+{
+  $page['meta_robots']['nofollow']=1;
+}
+if ( $filter['enabled'] )
+{
+  $page['meta_robots']['noindex']=1;
+}
+
+// see if we need a redirect because of a permalink
+if ( 'categories'==$page['section'] and isset($page['category']) )
+{
+  $need_redirect=false;
+  if ( empty($page['category']['permalink']) )
+  {
+    if ( $conf['category_url_style'] == 'id-name' and
+        @$page['hit_by']['cat_url_name'] !== str2url($page['category']['name']) )
+    {
+      $need_redirect=true;
+    }
+  }
+  else
+  {
+    if ( $page['category']['permalink'] !== @$page['hit_by']['cat_permalink'] )
+    {
+      $need_redirect=true;
+    }
+  }
+
+  if ($need_redirect)
+  {
+    $redirect_url = script_basename()=='picture' ? duplicate_picture_url() : duplicate_index_url();
+    
+    if (!headers_sent())
+    { // this is a permanent redirection
+      set_status_header(301);
+      redirect_http( $redirect_url );
+    }
+    redirect( $redirect_url );
+  }
+  unset( $need_redirect, $page['hit_by'] );
+}
+
+trigger_action('loc_end_section_init');
+?>
Index: /tags/2.6.0RC1/include/smarty/COPYING.lib
===================================================================
--- /tags/2.6.0RC1/include/smarty/COPYING.lib	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/COPYING.lib	(revision 25596)
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
Index: /tags/2.6.0RC1/include/smarty/README
===================================================================
--- /tags/2.6.0RC1/include/smarty/README	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/README	(revision 25596)
@@ -0,0 +1,574 @@
+Smarty 3.1.13
+
+Author: Monte Ohrt <monte at ohrt dot com >
+Author: Uwe Tews
+
+AN INTRODUCTION TO SMARTY 3
+
+NOTICE FOR 3.1 release:
+
+Please see the SMARTY_3.1_NOTES.txt file that comes with the distribution.
+
+NOTICE for 3.0.5 release:
+
+Smarty now follows the PHP error_reporting level by default. If PHP does not mask E_NOTICE and you try to access an unset template variable, you will now get an E_NOTICE warning. To revert to the old behavior:
+
+$smarty->error_reporting = E_ALL & ~E_NOTICE;
+
+NOTICE for 3.0 release:
+
+IMPORTANT: Some API adjustments have been made between the RC4 and 3.0 release.
+We felt it is better to make these now instead of after a 3.0 release, then have to
+immediately deprecate APIs in 3.1. Online documentation has been updated
+to reflect these changes. Specifically:
+
+---- API CHANGES RC4 -> 3.0 ----
+
+$smarty->register->*
+$smarty->unregister->*
+$smarty->utility->*
+$samrty->cache->*
+
+Have all been changed to local method calls such as:
+
+$smarty->clearAllCache()
+$smarty->registerFoo()
+$smarty->unregisterFoo()
+$smarty->testInstall()
+etc.
+
+Registration of function, block, compiler, and modifier plugins have been
+consolidated under two API calls:
+
+$smarty->registerPlugin(...)
+$smarty->unregisterPlugin(...)
+
+Registration of pre, post, output and variable filters have been
+consolidated under two API calls:
+
+$smarty->registerFilter(...)
+$smarty->unregisterFilter(...)
+
+Please refer to the online documentation for all specific changes:
+
+http://www.smarty.net/documentation
+
+----
+
+The Smarty 3 API has been refactored to a syntax geared
+for consistency and modularity. The Smarty 2 API syntax is still supported, but
+will throw a deprecation notice. You can disable the notices, but it is highly
+recommended to adjust your syntax to Smarty 3, as the Smarty 2 syntax must run
+through an extra rerouting wrapper.
+
+Basically, all Smarty methods now follow the "fooBarBaz" camel case syntax. Also,
+all Smarty properties now have getters and setters. So for example, the property
+$smarty->cache_dir can be set with $smarty->setCacheDir('foo/') and can be
+retrieved with $smarty->getCacheDir().
+
+Some of the Smarty 3 APIs have been revoked such as the "is*" methods that were
+just duplicate functions of the now available "get*" methods.
+
+Here is a rundown of the Smarty 3 API:
+
+$smarty->fetch($template, $cache_id = null, $compile_id = null, $parent = null)
+$smarty->display($template, $cache_id = null, $compile_id = null, $parent = null)
+$smarty->isCached($template, $cache_id = null, $compile_id = null)
+$smarty->createData($parent = null)
+$smarty->createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
+$smarty->enableSecurity()
+$smarty->disableSecurity()
+$smarty->setTemplateDir($template_dir)
+$smarty->addTemplateDir($template_dir)
+$smarty->templateExists($resource_name)
+$smarty->loadPlugin($plugin_name, $check = true)
+$smarty->loadFilter($type, $name)
+$smarty->setExceptionHandler($handler)
+$smarty->addPluginsDir($plugins_dir)
+$smarty->getGlobal($varname = null)
+$smarty->getRegisteredObject($name)
+$smarty->getDebugTemplate()
+$smarty->setDebugTemplate($tpl_name)
+$smarty->assign($tpl_var, $value = null, $nocache = false)
+$smarty->assignGlobal($varname, $value = null, $nocache = false)
+$smarty->assignByRef($tpl_var, &$value, $nocache = false)
+$smarty->append($tpl_var, $value = null, $merge = false, $nocache = false)
+$smarty->appendByRef($tpl_var, &$value, $merge = false)
+$smarty->clearAssign($tpl_var)
+$smarty->clearAllAssign()
+$smarty->configLoad($config_file, $sections = null)
+$smarty->getVariable($variable, $_ptr = null, $search_parents = true, $error_enable = true)
+$smarty->getConfigVariable($variable)
+$smarty->getStreamVariable($variable)
+$smarty->getConfigVars($varname = null)
+$smarty->clearConfig($varname = null)
+$smarty->getTemplateVars($varname = null, $_ptr = null, $search_parents = true)
+$smarty->clearAllCache($exp_time = null, $type = null)
+$smarty->clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
+
+$smarty->registerPlugin($type, $tag, $callback, $cacheable = true, $cache_attr = array())
+
+$smarty->registerObject($object_name, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+
+$smarty->registerFilter($type, $function_name)
+$smarty->registerResource($resource_type, $function_names)
+$smarty->registerDefaultPluginHandler($function_name)
+$smarty->registerDefaultTemplateHandler($function_name)
+
+$smarty->unregisterPlugin($type, $tag)
+$smarty->unregisterObject($object_name)
+$smarty->unregisterFilter($type, $function_name)
+$smarty->unregisterResource($resource_type)
+
+$smarty->compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
+$smarty->clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
+$smarty->testInstall()
+
+// then all the getters/setters, available for all properties. Here are a few:
+
+$caching = $smarty->getCaching();      // get $smarty->caching
+$smarty->setCaching(true);             // set $smarty->caching
+$smarty->setDeprecationNotices(false); // set $smarty->deprecation_notices
+$smarty->setCacheId($id);              // set $smarty->cache_id
+$debugging = $smarty->getDebugging();  // get $smarty->debugging
+
+
+FILE STRUCTURE
+
+The Smarty 3 file structure is similar to Smarty 2:
+
+/libs/
+  Smarty.class.php
+/libs/sysplugins/
+  internal.*
+/libs/plugins/
+  function.mailto.php
+  modifier.escape.php
+  ...
+
+A lot of Smarty 3 core functionality lies in the sysplugins directory; you do
+not need to change any files here. The /libs/plugins/ folder is where Smarty
+plugins are located. You can add your own here, or create a separate plugin
+directory, just the same as Smarty 2. You will still need to create your own
+/cache/, /templates/, /templates_c/, /configs/ folders. Be sure /cache/ and
+/templates_c/ are writable.
+
+The typical way to use Smarty 3 should also look familiar:
+
+require('Smarty.class.php');
+$smarty = new Smarty;
+$smarty->assign('foo','bar');
+$smarty->display('index.tpl');
+
+
+However, Smarty 3 works completely different on the inside. Smarty 3 is mostly
+backward compatible with Smarty 2, except for the following items:
+
+*) Smarty 3 is PHP 5 only. It will not work with PHP 4.
+*) The {php} tag is disabled by default. Enable with $smarty->allow_php_tag=true.
+*) Delimiters surrounded by whitespace are no longer treated as Smarty tags.
+   Therefore, { foo } will not compile as a tag, you must use {foo}. This change
+   Makes Javascript/CSS easier to work with, eliminating the need for {literal}.
+   This can be disabled by setting $smarty->auto_literal = false;
+*) The Smarty 3 API is a bit different. Many Smarty 2 API calls are deprecated
+   but still work. You will want to update your calls to Smarty 3 for maximum
+   efficiency.
+
+
+There are many things that are new to Smarty 3. Here are the notable items:
+   
+LEXER/PARSER
+============
+
+Smarty 3 now uses a lexing tokenizer for its parser/compiler. Basically, this
+means Smarty has some syntax additions that make life easier such as in-template
+math, shorter/intuitive function parameter options, infinite function recursion,
+more accurate error handling, etc.
+
+
+WHAT IS NEW IN SMARTY TEMPLATE SYNTAX
+=====================================
+
+Smarty 3 allows expressions almost anywhere. Expressions can include PHP
+functions as long as they are not disabled by the security policy, object
+methods and properties, etc. The {math} plugin is no longer necessary but
+is still supported for BC.
+
+Examples:
+{$x+$y}                           will output the sum of x and y.
+{$foo = strlen($bar)}             function in assignment
+{assign var=foo value= $x+$y}     in attributes 
+{$foo = myfunct( ($x+$y)*3 )}     as function parameter 
+{$foo[$x+3]}                      as array index
+
+Smarty tags can be used as values within other tags.
+Example:  {$foo={counter}+3}
+
+Smarty tags can also be used inside double quoted strings.
+Example:  {$foo="this is message {counter}"}
+
+You can define arrays within templates.
+Examples:
+{assign var=foo value=[1,2,3]}
+{assign var=foo value=['y'=>'yellow','b'=>'blue']}
+Arrays can be nested.
+{assign var=foo value=[1,[9,8],3]}
+
+There is a new short syntax supported for assigning variables.
+Example: {$foo=$bar+2}
+
+You can assign a value to a specific array element. If the variable exists but
+is not an array, it is converted to an array before the new values are assigned.
+Examples:
+{$foo['bar']=1}
+{$foo['bar']['blar']=1}
+
+You can append values to an array. If the variable exists but is not an array,
+it is converted to an array before the new values are assigned.
+Example: {$foo[]=1}
+
+You can use a PHP-like syntax for accessing array elements, as well as the
+original "dot" notation.
+Examples:
+{$foo[1]}             normal access
+{$foo['bar']}
+{$foo['bar'][1]}
+{$foo[$x+$x]}         index may contain any expression
+{$foo[$bar[1]]}       nested index
+{$foo[section_name]}  smarty section access, not array access!
+
+The original "dot" notation stays, and with improvements.
+Examples:
+{$foo.a.b.c}        =>  $foo['a']['b']['c'] 
+{$foo.a.$b.c}       =>  $foo['a'][$b]['c']        with variable index
+{$foo.a.{$b+4}.c}   =>  $foo['a'][$b+4]['c']       with expression as index
+{$foo.a.{$b.c}}     =>  $foo['a'][$b['c']]         with nested index
+
+note that { and } are used to address ambiguties when nesting the dot syntax. 
+
+Variable names themselves can be variable and contain expressions.
+Examples:
+$foo         normal variable
+$foo_{$bar}  variable name containing other variable 
+$foo_{$x+$y} variable name containing expressions 
+$foo_{$bar}_buh_{$blar}  variable name with multiple segments
+{$foo_{$x}}  will output the variable $foo_1 if $x has a value of 1.
+
+Object method chaining is implemented.
+Example: {$object->method1($x)->method2($y)}
+
+{for} tag added for looping (replacement for {section} tag):
+{for $x=0, $y=count($foo); $x<$y; $x++}  ....  {/for}
+Any number of statements can be used separated by comma as the first
+inital expression at {for}.
+
+{for $x = $start to $end step $step} ... {/for}is in the SVN now .
+You can use also
+{for $x = $start to $end} ... {/for}
+In this case the step value will be automaticall 1 or -1 depending on the start and end values.
+Instead of $start and $end you can use any valid expression.
+Inside the loop the following special vars can be accessed:
+$x@iteration = number of iteration
+$x@total = total number of iterations
+$x@first = true on first iteration
+$x@last = true on last iteration
+
+
+The Smarty 2 {section} syntax is still supported.
+
+New shorter {foreach} syntax to loop over an array.
+Example: {foreach $myarray as $var}...{/foreach}
+
+Within the foreach loop, properties are access via:
+
+$var@key            foreach $var array key
+$var@iteration      foreach current iteration count (1,2,3...)
+$var@index          foreach current index count (0,1,2...)
+$var@total          foreach $var array total
+$var@first          true on first iteration
+$var@last           true on last iteration
+
+The Smarty 2 {foreach} tag syntax is still supported.
+
+NOTE: {$bar[foo]} still indicates a variable inside of a {section} named foo. 
+If you want to access an array element with index foo, you must use quotes
+such as {$bar['foo']}, or use the dot syntax {$bar.foo}.
+
+while block tag is now implemented:
+{while $foo}...{/while}
+{while $x lt 10}...{/while}
+
+Direct access to PHP functions:
+Just as you can use PHP functions as modifiers directly, you can now access
+PHP functions directly, provided they are permitted by security settings:
+{time()}
+
+There is a new {function}...{/function} block tag to implement a template function.
+This enables reuse of code sequences like a plugin function. It can call itself recursively.
+Template function must be called with the new {call name=foo...} tag.
+
+Example:
+
+Template file:
+{function name=menu level=0}
+  <ul class="level{$level}">
+  {foreach $data as $entry}
+    {if is_array($entry)}
+      <li>{$entry@key}</li>
+       {call name=menu data=$entry level=$level+1}
+    {else}
+      <li>{$entry}</li>
+    {/if}
+  {/foreach}
+  </ul>
+{/function}
+
+{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
+  ['item3-3-1','item3-3-2']],'item4']}
+
+{call name=menu data=$menu}
+
+
+Generated output:
+    * item1
+    * item2
+    * item3
+          o item3-1
+          o item3-2
+          o item3-3
+                + item3-3-1
+                + item3-3-2
+    * item4
+
+The function tag itself must have the "name" attribute. This name is the tag
+name when calling the function. The function tag may have any number of
+additional attributes. These will be default settings for local variables.
+
+New {nocache} block function:
+{nocache}...{/nocache} will declare a section of the template to be non-cached
+when template caching is enabled.
+
+New nocache attribute:
+You can declare variable/function output as non-cached with the nocache attribute.
+Examples:
+
+{$foo nocache=true}
+{$foo nocache} /* same */
+
+{foo bar="baz" nocache=true}
+{foo bar="baz" nocache} /* same */
+
+{time() nocache=true}
+{time() nocache} /* same */
+
+Or you can also assign the variable in your script as nocache:
+$smarty->assign('foo',$something,true); // third param is nocache setting
+{$foo} /* non-cached */
+
+$smarty.current_dir returns the directory name of the current template.
+
+You can use strings directly as templates with the "string" resource type.
+Examples:
+$smarty->display('string:This is my template, {$foo}!'); // php
+{include file="string:This is my template, {$foo}!"} // template
+
+
+
+VARIABLE SCOPE / VARIABLE STORAGE
+=================================
+
+In Smarty 2, all assigned variables were stored within the Smarty object. 
+Therefore, all variables assigned in PHP were accessible by all subsequent 
+fetch and display template calls.
+
+In Smarty 3, we have the choice to assign variables to the main Smarty object, 
+to user-created data objects, and to user-created template objects. 
+These objects can be chained. The object at the end of a chain can access all
+variables belonging to that template and all variables within the parent objects.
+The Smarty object can only be the root of a chain, but a chain can be isolated
+from the Smarty object.
+
+All known Smarty assignment interfaces will work on the data and template objects.
+
+Besides the above mentioned objects, there is also a special storage area for
+global variables.
+
+A Smarty data object can be created as follows:
+$data = $smarty->createData();    // create root data object
+$data->assign('foo','bar');       // assign variables as usual
+$data->config_load('my.conf');									 // load config file    
+
+$data= $smarty->createData($smarty);  // create data object having a parent link to
+the Smarty object
+
+$data2= $smarty->createData($data);   // create data object having a parent link to
+the $data data object
+
+A template object can be created by using the createTemplate method. It has the
+same parameter assignments as the fetch() or display() method.
+Function definition:
+function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
+
+The first parameter can be a template name, a smarty object or a data object.
+
+Examples:
+$tpl = $smarty->createTemplate('mytpl.tpl'); // create template object not linked to any parent
+$tpl->assign('foo','bar');                   // directly assign variables
+$tpl->config_load('my.conf');									 // load config file    
+
+$tpl = $smarty->createTemplate('mytpl.tpl',$smarty);  // create template having a parent link to the Smarty object
+$tpl = $smarty->createTemplate('mytpl.tpl',$data);    // create template having a parent link to the $data object
+
+The standard fetch() and display() methods will implicitly create a template object.
+If the $parent parameter is not specified in these method calls, the template object
+is will link back to the Smarty object as it's parent.
+
+If a template is called by an {include...} tag from another template, the
+subtemplate links back to the calling template as it's parent. 
+
+All variables assigned locally or from a parent template are accessible. If the
+template creates or modifies a variable by using the {assign var=foo...} or
+{$foo=...} tags, these new values are only known locally (local scope). When the
+template exits, none of the new variables or modifications can be seen in the
+parent template(s). This is same behavior as in Smarty 2. 
+
+With Smarty 3, we can assign variables with a scope attribute which allows the
+availablility of these new variables or modifications globally (ie in the parent
+templates.)
+
+Possible scopes are local, parent, root and global. 
+Examples:
+{assign var=foo value='bar'}       // no scope is specified, the default 'local'
+{$foo='bar'}                       // same, local scope
+{assign var=foo value='bar' scope='local'} // same, local scope
+
+{assign var=foo value='bar' scope='parent'} // Values will be available to the parent object 
+{$foo='bar' scope='parent'}                 // (normally the calling template)
+
+{assign var=foo value='bar' scope='root'}   // Values will be exported up to the root object, so they can 
+{$foo='bar' scope='root'}                   // be seen from all templates using the same root.
+
+{assign var=foo value='bar' scope='global'} // Values will be exported to global variable storage, 
+{$foo='bar' scope='global'}                 // they are available to any and all templates.
+
+
+The scope attribute can also be attached to the {include...} tag. In this case,
+the specified scope will be the default scope for all assignments within the
+included template.
+
+
+PLUGINS
+=======
+
+Smarty3 are following the same coding rules as in Smarty2. 
+The only difference is that the template object is passed as additional third parameter.
+
+smarty_plugintype_name (array $params, object $smarty, object $template)
+
+The Smarty 2 plugins are still compatible as long as they do not make use of specific Smarty2 internals.
+
+
+TEMPLATE INHERITANCE:
+=====================
+
+With template inheritance you can define blocks, which are areas that can be
+overriden by child templates, so your templates could look like this: 
+
+parent.tpl:
+<html>
+  <head>
+    <title>{block name='title'}My site name{/block}</title>
+  </head>
+  <body>
+    <h1>{block name='page-title'}Default page title{/block}</h1>
+    <div id="content">
+      {block name='content'}
+        Default content
+      {/block}
+    </div>
+  </body>
+</html>
+
+child.tpl:
+{extends file='parent.tpl'} 
+{block name='title'}
+Child title
+{/block}
+
+grandchild.tpl:
+{extends file='child.tpl'} 
+{block name='title'}Home - {$smarty.block.parent}{/block} 
+{block name='page-title'}My home{/block}
+{block name='content'}
+  {foreach $images as $img}
+    <img src="{$img.url}" alt="{$img.description}" />
+  {/foreach}
+{/block}
+
+We redefined all the blocks here, however in the title block we used {$smarty.block.parent},
+which tells Smarty to insert the default content from the parent template in its place.
+The content block was overriden to display the image files, and page-title has also be 
+overriden to display a completely different title. 
+
+If we render grandchild.tpl we will get this: 
+<html>
+  <head>
+    <title>Home - Child title</title>
+  </head>
+  <body>
+    <h1>My home</h1>
+    <div id="content">
+      <img src="/example.jpg" alt="image" />
+      <img src="/example2.jpg" alt="image" />
+      <img src="/example3.jpg" alt="image" />
+    </div>
+  </body>
+</html>
+
+NOTE: In the child templates everything outside the {extends} or {block} tag sections
+is ignored.
+
+The inheritance tree can be as big as you want (meaning you can extend a file that 
+extends another one that extends another one and so on..), but be aware that all files 
+have to be checked for modifications at runtime so the more inheritance the more overhead you add.
+
+Instead of defining the parent/child relationships with the {extends} tag in the child template you
+can use the resource as follow:
+
+$smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl');
+
+Child {block} tags may optionally have a append or prepend attribute. In this case the parent block content 
+is appended or prepended to the child block content.
+
+{block name='title' append} My title {/block}
+
+
+PHP STREAMS:
+============
+
+(see online documentation)
+
+VARIBLE FILTERS:
+================
+
+(see online documentation)
+
+
+STATIC CLASS ACCESS AND NAMESPACE SUPPORT
+=========================================
+
+You can register a class with optional namespace for the use in the template like:
+
+$smarty->register->templateClass('foo','name\name2\myclass');
+
+In the template you can use it like this:
+{foo::method()}  etc.
+
+
+=======================
+
+Please look through it and send any questions/suggestions/etc to the forums.
+
+http://www.phpinsider.com/smarty-forum/viewtopic.php?t=14168
+
+Monte and Uwe
Index: /tags/2.6.0RC1/include/smarty/SMARTY_2_BC_NOTES.txt
===================================================================
--- /tags/2.6.0RC1/include/smarty/SMARTY_2_BC_NOTES.txt	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/SMARTY_2_BC_NOTES.txt	(revision 25596)
@@ -0,0 +1,109 @@
+= Known incompatibilities with Smarty 2 =
+
+== Syntax ==
+
+Smarty 3 API has a new syntax. Much of the Smarty 2 syntax is supported 
+by a wrapper but deprecated. See the README that comes with Smarty 3 for more 
+information.
+
+The {$array|@mod} syntax has always been a bit confusing, where an "@" is required
+to apply a modifier to an array instead of the individual elements. Normally you
+always want the modifier to apply to the variable regardless of its type. In Smarty 3,
+{$array|mod} and {$array|@mod} behave identical. It is safe to drop the "@" and the
+modifier will still apply to the array. If you really want the modifier to apply to
+each array element, you must loop the array in-template, or use a custom modifier that
+supports array iteration. Most smarty functions already escape values where necessary
+such as {html_options}
+
+== PHP Version ==
+Smarty 3 is PHP 5 only. It will not work with PHP 4.
+
+== {php} Tag ==
+The {php} tag is disabled by default. The use of {php} tags is
+deprecated. It can be enabled with $smarty->allow_php_tag=true.
+
+But if you scatter PHP code which belongs together into several
+{php} tags it may not work any longer.
+
+== Delimiters and whitespace ==
+Delimiters surrounded by whitespace are no longer treated as Smarty tags.
+Therefore, { foo } will not compile as a tag, you must use {foo}. This change
+Makes Javascript/CSS easier to work with, eliminating the need for {literal}.
+This can be disabled by setting $smarty->auto_literal = false;
+
+== Unquoted Strings ==
+Smarty 2 was a bit more forgiving (and ambiguous) when it comes to unquoted strings 
+in parameters. Smarty3 is more restrictive. You can still pass strings without quotes 
+so long as they contain no special characters. (anything outside of A-Za-z0-9_) 
+
+For example filename strings must be quoted
+<source lang="smarty">
+{include file='path/foo.tpl'}
+</source>
+
+== Extending the Smarty class ==
+Smarty 3 makes use of the __construct method for initialization. If you are extending 
+the Smarty class, its constructor is not called implicitly if the your child class defines 
+its own constructor. In order to run Smarty's constructor, a call to parent::__construct() 
+within your child constructor is required. 
+
+<source lang="php">
+class MySmarty extends Smarty {
+   function __construct() {
+       parent::__construct();
+    
+       // your initialization code goes here
+
+   }
+}
+</source>
+
+== Autoloader ==
+Smarty 3 does register its own autoloader with spl_autoload_register. If your code has 
+an existing __autoload function then this function must be explicitly registered on 
+the __autoload stack. See http://us3.php.net/manual/en/function.spl-autoload-register.php 
+for further details.
+
+== Plugin Filenames ==
+Smarty 3 optionally supports the PHP spl_autoloader. The autoloader requires filenames 
+to be lower case. Because of this, Smarty plugin file names must also be lowercase. 
+In Smarty 2, mixed case file names did work.
+
+== Scope of Special Smarty Variables ==
+In Smarty 2 the special Smarty variables $smarty.section... and $smarty.foreach... 
+had global scope. If you had loops with the same name in subtemplates you could accidentally 
+overwrite values of parent template.
+
+In Smarty 3 these special Smarty variable have only local scope in the template which 
+is defining the loop. If you need their value in a subtemplate you have to pass them 
+as parameter.
+<source lang="smarty">
+{include file='path/foo.tpl' index=$smarty.section.foo.index}
+</source>
+
+== SMARTY_RESOURCE_CHAR_SET ==
+Smarty 3 sets the constant SMARTY_RESOURCE_CHAR_SET to utf-8 as default template charset. 
+This is now used also on modifiers like escape as default charset. If your templates use 
+other charsets make sure that you define the constant accordingly. Otherwise you may not 
+get any output.
+
+== newline at {if} tags ==
+A \n was added to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source. 
+If one of the {if} tags is at the line end you will now get a newline in the HTML output.
+
+== trigger_error() ==
+The API function trigger_error() has been removed because it did just map to PHP trigger_error.
+However it's still included in the Smarty2 API wrapper.
+
+== Smarty constants ==
+The constants 
+SMARTY_PHP_PASSTHRU
+SMARTY_PHP_QUOTE
+SMARTY_PHP_REMOVE
+SMARTY_PHP_ALLOW
+have been replaced with class constants
+Smarty::PHP_PASSTHRU
+Smarty::PHP_QUOTE
+Smarty::PHP_REMOVE
+Smarty::PHP_ALLOW
+
Index: /tags/2.6.0RC1/include/smarty/SMARTY_3.0_BC_NOTES.txt
===================================================================
--- /tags/2.6.0RC1/include/smarty/SMARTY_3.0_BC_NOTES.txt	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/SMARTY_3.0_BC_NOTES.txt	(revision 25596)
@@ -0,0 +1,24 @@
+== Smarty2 backward compatibility ==
+All Smarty2 specific API functions and deprecated functionallity has been moved
+to the SmartyBC class.
+
+== {php} Tag ==
+The {php} tag is no longer available in the standard Smarty calls. 
+The use of {php} tags is deprecated and only available in the SmartyBC class. 
+
+== {include_php} Tag ==
+The {include_php} tag is no longer available in the standard Smarty calls. 
+The use of {include_php} tags is deprecated and only available in the SmartyBC class. 
+
+== php template resource ==
+The support of the php template resource is removed.
+
+== $cache_dir, $compile_dir, $config_dir, $template_dir access ==
+The mentioned properties can't be accessed directly any longer. You must use
+corresponding getter/setters like addConfigDir(), setConfigDir(), getConfigDir()
+
+== obsolete Smarty class properties ==
+The following no longer used properties are removed:
+$allow_php_tag
+$allow_php_template
+$deprecation_notices
Index: /tags/2.6.0RC1/include/smarty/SMARTY_3.1_NOTES.txt
===================================================================
--- /tags/2.6.0RC1/include/smarty/SMARTY_3.1_NOTES.txt	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/SMARTY_3.1_NOTES.txt	(revision 25596)
@@ -0,0 +1,306 @@
+Smarty 3.1 Notes
+================
+
+Smarty 3.1 is a departure from 2.0 compatibility. Most notably, all
+backward compatibility has been moved to a separate class file named
+SmartyBC.class.php. If you require compatibility with 2.0, you will
+need to use this class.
+
+Some differences from 3.0 are also present. 3.1 begins the journey of
+requiring setters/getters for property access. So far this is only
+implemented on the five directory properties: template_dir,
+plugins_dir, configs_dir, compile_dir and cache_dir. These properties
+are now protected, it is required to use the setters/getters instead.
+That said, direct property access will still work, however slightly
+slower since they will now fall through __set() and __get() and in
+turn passed through the setter/getter methods. 3.2 will exhibit a full
+list of setter/getter methods for all (currently) public properties,
+so code-completion in your IDE will work as expected.
+
+There is absolutely no PHP allowed in templates any more. All
+deprecated features of Smarty 2.0 are gone. Again, use the SmartyBC
+class if you need any backward compatibility.
+
+Internal Changes
+
+  Full UTF-8 Compatibility
+
+The plugins shipped with Smarty 3.1 have been rewritten to fully
+support UTF-8 strings if Multibyte String is available. Without
+MBString UTF-8 cannot be handled properly. For those rare cases where
+templates themselves have to juggle encodings, the new modifiers
+to_charset and from_charset may come in handy.
+
+  Plugin API and Performance
+
+All Plugins (modifiers, functions, blocks, resources,
+default_template_handlers, etc) are now receiving the
+Smarty_Internal_Template instance, where they were supplied with the
+Smarty instance in Smarty 3.0. *. As The Smarty_Internal_Template
+mimics the behavior of Smarty, this API simplification should not
+require any changes to custom plugins.
+
+The plugins shipped with Smarty 3.1 have been rewritten for better
+performance. Most notably {html_select_date} and {html_select_time}
+have been improved vastly. Performance aside, plugins have also been
+reviewed and generalized in their API. {html_select_date} and
+{html_select_time} now share almost all available options.
+
+The escape modifier now knows the $double_encode option, which will
+prevent entities from being encoded again.
+
+The capitalize modifier now know the $lc_rest option, which makes sure
+all letters following a captial letter are lower-cased.
+
+The count_sentences modifier now accepts (.?!) as
+legitimate endings of a sentence - previously only (.) was
+accepted
+
+The new unescape modifier is there to reverse the effects of the
+escape modifier. This applies to the escape formats html, htmlall and
+entity.
+
+  default_template_handler_func
+
+The invocation of $smarty->$default_template_handler_func had to be 
+altered. Instead of a Smarty_Internal_Template, the fifth argument is
+now provided with the Smarty instance. New footprint:
+
+
+/**
+ * Default Template Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ * 
+ * @param string   $type     resource type (e.g. "file", "string", "eval", "resource")
+ * @param string   $name     resource name (e.g. "foo/bar.tpl")
+ * @param string  &$content  template's content
+ * @param integer &$modified template's modification time
+ * @param Smarty   $smarty   Smarty instance
+ * @return string|boolean   path to file or boolean true if $content and $modified 
+ *                          have been filled, boolean false if no default template 
+ *                          could be loaded
+ */
+function default_template_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+    if (false) {
+        // return corrected filepath
+        return "/tmp/some/foobar.tpl";
+    } elseif (false) {
+        // return a template directly
+        $content = "the template source";
+        $modified = time();
+        return true;
+    } else {
+        // tell smarty that we failed
+        return false;
+    }
+}
+
+  Stuff done to the compiler
+
+Many performance improvements have happened internally. One notable
+improvement is that all compiled templates are now handled as PHP
+functions. This speeds up repeated templates tremendously, as each one
+calls an (in-memory) PHP function instead of performing another file
+include/scan.
+
+New Features
+
+  Template syntax
+
+ {block}..{/block}
+
+The {block} tag has a new hide option flag. It does suppress the block
+content if no corresponding child block exists.
+EXAMPLE:
+parent.tpl
+{block name=body hide} child content "{$smarty.block.child}" was
+inserted {block}
+In the above example the whole block will be suppressed if no child
+block "body" is existing.
+
+ {setfilter}..{/setfilter}
+
+The new {setfilter} block tag allows the definition of filters which
+run on variable output.
+SYNTAX:
+{setfilter filter1|filter2|filter3....}
+Smarty3 will lookup up matching filters in the following search order:
+1. varibale filter plugin in plugins_dir.
+2. a valid modifier. A modifier specification will also accept
+additional parameter like filter2:'foo'
+3. a PHP function
+{/setfilter} will turn previous filter setting off again.
+{setfilter} tags can be nested.
+EXAMPLE:
+{setfilter filter1}
+  {$foo}
+  {setfilter filter2}
+    {$bar}
+  {/setfilter}
+  {$buh}
+{/setfilter}
+{$blar}
+In the above example filter1 will run on the output of $foo, filter2
+on $bar, filter1 again on $buh and no filter on $blar.
+NOTES:
+- {$foo nofilter} will suppress the filters
+- These filters will run in addition to filters defined by
+registerFilter('variable',...), autoLoadFilter('variable',...) and
+defined default modifier.
+- {setfilter} will effect only the current template, not included
+subtemplates.
+
+  Resource API
+
+Smarty 3.1 features a new approach to resource management. The
+Smarty_Resource API allows simple, yet powerful integration of custom
+resources for templates and configuration files. It offers simple
+functions for loading data from a custom resource (e.g. database) as
+well as define new template types adhering to the special
+non-compiling (e,g, plain php) and non-compile-caching (e.g. eval:
+resource type) resources.
+
+See demo/plugins/resource.mysql.php for an example custom database
+resource.
+
+Note that old-fashioned registration of callbacks for resource
+management has been deprecated but is still possible with SmartyBC.
+
+  CacheResource API
+
+In line with the Resource API, the CacheResource API offers a more
+comfortable handling of output-cache data. With the
+Smarty_CacheResource_Custom accessing databases is made simple. With
+the introduction of Smarty_CacheResource_KeyValueStore the
+implementation of resources like memcache or APC became a no-brainer;
+simple hash-based storage systems are now supporting hierarchical
+output-caches.
+
+See demo/plugins/cacheresource.mysql.php for an example custom
+database CacheResource.
+See demo/plugins/cacheresource.memcache.php for an example custom
+memcache CacheResource using the KeyValueStore helper.
+
+Note that old-fashioned registration of $cache_handler is not possible
+anymore. As the functionality had not been ported to Smarty 3.0.x
+properly, it has been dropped from 3.1 completely.
+
+Locking facilities have been implemented to avoid concurrent cache 
+generation. Enable cache locking by setting 
+$smarty->cache_locking = true;
+
+  Relative Paths in Templates (File-Resource)
+
+As of Smarty 3.1 {include file="../foo.tpl"} and {include
+file="./foo.tpl"} will resolve relative to the template they're in.
+Relative paths are available with {include file="..."} and
+{extends file="..."}. As $smarty->fetch('../foo.tpl') and
+$smarty->fetch('./foo.tpl') cannot be relative to a template, an
+exception is thrown.
+
+  Adressing a specific $template_dir
+
+Smarty 3.1 introduces the $template_dir index notation.
+$smarty->fetch('[foo]bar.tpl') and {include file="[foo]bar.tpl"}
+require the template bar.tpl to be loaded from $template_dir['foo'];
+Smarty::setTemplateDir() and Smarty::addTemplateDir() offer ways to
+define indexes along with the actual directories.
+
+  Mixing Resources in extends-Resource
+
+Taking the php extends: template resource one step further, it is now
+possible to mix resources within an extends: call like
+$smarty->fetch("extends:file:foo.tpl|db:bar.tpl");
+
+To make eval: and string: resources available to the inheritance
+chain, eval:base64:TPL_STRING and eval:urlencode:TPL_STRING have been
+introduced. Supplying the base64 or urlencode flags will trigger
+decoding the TPL_STRING in with either base64_decode() or urldecode().
+
+  extends-Resource in template inheritance
+
+Template based inheritance may now inherit from php's extends:
+resource like {extends file="extends:foo.tpl|db:bar.tpl"}.
+
+  New Smarty property escape_html
+
+$smarty->escape_html = true will autoescape all template variable
+output by calling htmlspecialchars({$output}, ENT_QUOTES,
+SMARTY_RESOURCE_CHAR_SET).
+NOTE:
+This is a compile time option. If you change the setting you must make
+sure that the templates get recompiled.
+
+  New option at Smarty property compile_check
+
+The automatic recompilation of modified templates can now be
+controlled by the following settings:
+$smarty->compile_check = COMPILECHECK_OFF (false) - template files
+will not be checked
+$smarty->compile_check = COMPILECHECK_ON (true) - template files will
+always be checked
+$smarty->compile_check = COMPILECHECK_CACHEMISS - template files will
+be checked if caching is enabled and there is no existing cache file
+or it has expired
+
+  Automatic recompilation on Smarty version change
+
+Templates will now be automatically recompiled on Smarty version
+changes to avoide incompatibillities in the compiled code. Compiled
+template checked against the current setting of the SMARTY_VERSION
+constant.
+
+  default_config_handler_func()
+
+Analogous to the default_template_handler_func()
+default_config_handler_func() has been introduced.
+
+  default_plugin_handler_func()
+
+An optional default_plugin_handler_func() can be defined which gets called 
+by the compiler on tags which can't be resolved internally or by plugins.
+The default_plugin_handler() can map tags to plugins on the fly.
+
+New getters/setters
+
+The following setters/getters will be part of the official
+documentation, and will be strongly recommended. Direct property
+access will still work for the foreseeable future... it will be
+transparently routed through the setters/getters, and consequently a
+bit slower.
+
+array|string getTemplateDir( [string $index] )
+replaces $smarty->template_dir; and $smarty->template_dir[$index];
+Smarty setTemplateDir( array|string $path )
+replaces $smarty->template_dir = "foo"; and $smarty->template_dir =
+array("foo", "bar");
+Smarty addTemplateDir( array|string $path, [string $index])
+replaces $smarty->template_dir[] = "bar"; and
+$smarty->template_dir[$index] = "bar";
+
+array|string getConfigDir( [string $index] )
+replaces $smarty->config_dir; and $smarty->config_dir[$index];
+Smarty setConfigDir( array|string $path )
+replaces $smarty->config_dir = "foo"; and $smarty->config_dir =
+array("foo", "bar");
+Smarty addConfigDir( array|string $path, [string $index])
+replaces $smarty->config_dir[] = "bar"; and
+$smarty->config_dir[$index] = "bar";
+
+array getPluginsDir()
+replaces $smarty->plugins_dir;
+Smarty setPluginsDir( array|string $path )
+replaces $smarty->plugins_dir = "foo";
+Smarty addPluginsDir( array|string $path )
+replaces $smarty->plugins_dir[] = "bar";
+
+string getCompileDir()
+replaces $smarty->compile_dir;
+Smarty setCompileDir( string $path )
+replaces $smarty->compile_dir = "foo";
+
+string getCacheDir()
+replaces $smarty->cache_dir;
+Smarty setCacheDir( string $path )
+replaces $smarty->cache_dir;
Index: /tags/2.6.0RC1/include/smarty/change_log.txt
===================================================================
--- /tags/2.6.0RC1/include/smarty/change_log.txt	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/change_log.txt	(revision 25596)
@@ -0,0 +1,2153 @@
+﻿===== Smarty-3.1.13  =====
+13.01.2013
+- enhancement allow to disable exception message escaping by SmartyException::$escape = false;  (Issue #130)
+
+09.01.2013
+- bugfix compilation did fail when a prefilter did modify an {extends} tag (Forum Topic 23966)
+- bugfix template inheritance could fail if nested {block} tags in childs did contain {$smarty.block.child} (Issue #127)
+- bugfix template inheritance could fail if {block} tags in childs did have similar name as used plugins (Issue #128)
+- added abstract method declaration doCompile() in Smarty_Internal_TemplateCompilerBase (Forum Topic 23969)
+
+06.01.2013
+- Allow '://' URL syntax in template names of stream resources  (Issue #129)
+
+27.11.2012
+- bugfix wrong variable usage in smarty_internal_utility.php (Issue #125)
+
+26.11.2012
+- bugfix global variable assigned within template function are not seen after template function exit (Forum Topic 23800) 
+
+24.11.2012
+- made SmartyBC loadable via composer (Issue #124)
+
+20.11.2012
+- bugfix assignGlobal() called from plugins did not work (Forum Topic 23771)
+
+13.11.2012
+- adding attribute "strict" to html_options, html_checkboxes, html_radios to only print disabled/readonly attributes if their values are true or "disabled"/"readonly" (Issue #120)
+
+01.11.2012
+- bugfix muteExcpetedErrors() would screw up for non-readable paths (Issue #118)
+
+===== Smarty-3.1.12  =====
+14.09.2012
+- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008)
+
+11.09.2012
+- bugfix escape Smarty exception messages to avoid possible script execution
+
+10.09.2012
+- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979)
+
+31.08.2012
+- bugfix resolving relative paths broke in some circumstances (Issue #114)
+
+22.08.2012
+- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex).
+  Either we get MBstring's full package, or we pretend it's not there at all.
+
+21.08.2012
+- bugfix $auto_literal = false did not work with { block} tags in child templates 
+  (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581)
+
+17.08.2012
+- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810)
+
+15.08.2012
+- bugfix template inheritance did produce wrong code if subtemplates with {block} was
+  included several times (from smarty-developers forum)
+
+14.08.2012
+- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110)
+
+01.08.2012
+- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608)
+
+30.07.2012
+-bugfix {assign} in a nocache section should not overwrite existing variable values 
+   during compilation (issue 109)
+   
+28.07.2012
+- bugfix array access of config variables did not work (Forum Topic 22527)
+
+19.07.2012
+- bugfix the default plugin handler did create wrong compiled code for static class methods
+  from external script files (issue 108)
+  
+===== Smarty-3.1.11 =====
+30.06.2012
+- bugfix {block.. hide} did not work as nested child (Forum Topic 22216)
+
+25.06.2012
+- bugfix the default plugin handler did not allow static class methods for modifier (issue 85)
+
+24.06.2012
+- bugfix escape modifier support for PHP < 5.2.3 (Forum Topic 21176)
+
+11.06.2012
+- bugfix the patch for Topic 21856 did break tabs between tag attributes (Forum Topic 22124)
+
+===== Smarty-3.1.10  =====
+09.06.2012
+- bugfix the compiler did ignore registered compiler plugins for closing tags (Forum Topic 22094)
+- bugfix the patch for Topic 21856 did break multiline tags (Forum Topic 22124)
+
+===== Smarty-3.1.9 =====
+07.06.2012
+- bugfix fetch() and display() with relative paths (Issue 104)
+- bugfix treat "0000-00-00" as 0 in modifier.date_format (Issue 103)
+
+24.05.2012
+- bugfix Smarty_Internal_Write_File::writeFile() could cause race-conditions on linux systems (Issue 101)
+- bugfix attribute parameter names of plugins may now contain also "-"  and ":"  (Forum Topic 21856)
+- bugfix add compile_id to cache key of of source (Issue 97)
+
+22.05.2012
+- bugfix recursive {include} within {section} did fail (Smarty developer group)
+
+12.05.2012
+- bugfix {html_options} did not properly escape values (Issue 98)
+
+03.05.2012
+- bugfix make HTTP protocall version variable (issue 96)
+
+02.05.2012
+- bugfix  {nocache}{block}{plugin}... did produce wrong compiled code when caching is disabled (Forum Topic 21572, issue 95)
+
+12.04.2012
+- bugfix Smarty did eat the linebreak after the <?xml...?> closing tag (Issue 93)
+- bugfix concurrent cache updates could create a warning (Forum Topic 21403)
+
+08.04.2012
+- bugfix "\\" was not escaped correctly when generating nocache code (Forum Topic 21364)
+
+30.03.2012
+- bugfix template inheritance did  not throw exception when a parent template was deleted (issue 90)
+
+27.03.2012
+- bugfix prefilter did run multiple times on inline subtemplates compiled into several main templates (Forum Topic 21325)
+- bugfix implement Smarty2's behaviour of variables assigned by reference in SmartyBC. {assign} will affect all references.
+  (issue 88)
+
+21.03.2012
+- bugfix compileAllTemplates() and compileAllConfig() did not return the number of compiled files (Forum Topic 21286)
+
+13.03.2012
+- correction of yesterdays bugfix (Forum Topic 21175 and 21182)
+
+12.03.2012
+- bugfix a double quoted string of "$foo" did not compile into PHP "$foo" (Forum Topic 21175)
+- bugfix template inheritance did set $merge_compiled_includes globally true
+
+03.03.2012
+- optimization of compiling speed when same modifier was used several times
+
+02.03.2012
+- enhancement the default plugin handler can now also resolve undefined modifier (Smarty::PLUGIN_MODIFIER)
+  (Issue 85)
+
+===== Smarty-3.1.8  =====
+19.02.2012
+- bugfix {include} could result in a fatal error if used in appended or prepended nested {block} tags
+  (reported by mh and Issue 83)
+- enhancement added Smarty special variable $smarty.template_object to return the current template object (Forum Topic 20289)
+
+
+07.02.2012
+- bugfix increase entropy of internal function names in compiled and cached template files (Forum Topic 20996)
+- enhancement cacheable parameter added to default plugin handler, same functionality as in registerPlugin (request by calguy1000)
+
+06.02.2012
+- improvement stream_resolve_include_path() added to Smarty_Internal_Get_Include_Path (Forum Topic 20980)
+- bugfix fetch('extends:foo.tpl') always yielded $source->exists == true (Forum Topic 20980)
+- added modifier unescape:"url", fix (Forum Topic 20980)
+- improvement replaced some calls of preg_replace with str_replace (Issue 73)
+
+30.01.2012
+- bugfix Smarty_Security internal $_resource_dir cache wasn't properly propagated
+
+27.01.2012
+- bugfix Smarty did not a template name of "0" (Forum Topic 20895)
+
+20.01.2012
+- bugfix typo in Smarty_Internal_Get_IncludePath did cause runtime overhead (Issue 74)
+- improvment remove unneeded assigments (Issue 75 and 76)
+- fixed typo in template parser
+- bugfix output filter must not run before writing cache when template does contain nocache code (Issue 71)
+
+02.01.2012
+- bugfix {block foo nocache} did not load plugins within child {block} in nocache mode (Forum Topic 20753)
+
+29.12.2011
+- bugfix enable more entropy in Smarty_Internal_Write_File for "more uniqueness" and Cygwin compatibility (Forum Topic 20724)
+- bugfix embedded quotes in single quoted strings did not compile correctly in {nocache} sections (Forum Topic 20730)
+
+28.12.2011
+- bugfix Smarty's internal header code must be excluded from postfilters (issue 71)
+
+22.12.2011
+- bugfix the new lexer of 17.12.2011 did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
+- bugfix template inheritace did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680)
+
+20.12.2011
+- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return 
+  content after {$smarty.block.child} (Forum Topic 20564)
+
+===== Smarty-3.1.7 =====
+18.12.2011
+- bugfix strings ending with " in multiline strings of config files failed to compile (issue #67)
+- added chaining to Smarty_Internal_Templatebase
+- changed unloadFilter() to not return a boolean in favor of chaining and API conformity
+- bugfix unregisterObject() raised notice when object to unregister did not exist
+- changed internals to use Smarty::$_MBSTRING ($_CHARSET, $_DATE_FORMAT) for better unit testing
+- added Smarty::$_UTF8_MODIFIER for proper PCRE charset handling (Forum Topic 20452)
+- added Smarty_Security::isTrustedUri() and Smarty_Security::$trusted_uri to validate 
+  remote resource calls through {fetch} and {html_image} (Forum Topic 20627)
+
+17.12.2011
+- improvement of compiling speed by new handling of plain text blocks in the lexer/parser (issue #68)
+
+16.12.2011
+- bugfix the source exits flag and timestamp was not setup when template was in php include path (issue #69)
+
+9.12.2011
+- bugfix {capture} tags around recursive {include} calls did throw exception (Forum Topic 20549)
+- bugfix $auto_literal = false did not work with { block} tags in child templates (Forum Topic 20581)
+- bugfix template inheritance: do not include code of {include} in overloaded {block} into compiled 
+  parent template (Issue #66}
+- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return expected
+  result (Forum Topic 20564)
+    
+===== Smarty-3.1.6  =====
+30.11.2011
+- bugfix is_cache() for individual cached subtemplates with $smarty->caching = CACHING_OFF did produce
+  an exception (Forum Topic 20531)
+
+29.11.2011
+- bugfix added exception if the default plugin handler did return a not static callback (Forum Topic 20512)
+
+25.11.2011
+- bugfix {html_select_date} and {html_slecet_time} did not default to current time if "time" was not specified 
+  since r4432 (issue 60)
+
+24.11.2011
+- bugfix a subtemplate later used as main template did use old variable values
+
+21.11.2011
+- bugfix cache file could include unneeded modifier plugins under certain condition
+
+18.11.2011
+- bugfix declare all directory properties private to map direct access to getter/setter also on extended Smarty class
+
+16.11.2011
+- bugfix Smarty_Resource::load() did not always return a proper resource handler (Forum Topic 20414)
+- added escape argument to html_checkboxes and html_radios (Forum Topic 20425)
+
+===== Smarty-3.1.5  =====
+14.11.2011
+- bugfix allow space between function name and open bracket (forum topic 20375)
+
+09.11.2011
+- bugfix different behaviour of uniqid() on cygwin. See https://bugs.php.net/bug.php?id=34908
+  (forum topic 20343)
+
+01.11.2011
+- bugfix {if} and {while} tags without condition did not throw a SmartyCompilerException (Issue #57)
+- bugfix multiline strings in config files could fail on longer strings (reopened Issue #55)
+
+22.10.2011
+- bugfix smarty_mb_from_unicode() would not decode unicode-points properly
+- bugfix use catch Exception instead UnexpectedValueException in 
+  clearCompiledTemplate to be PHP 5.2 compatible
+
+21.10.2011
+- bugfix apostrophe in plugins_dir path name failed (forum topic 20199)
+- improvement sha1() for array keys longer than 150 characters
+- add Smarty::$allow_ambiguous_resources to activate unique resource handling (Forum Topic 20128)
+
+20.10.2011
+- @silenced unlink() in Smarty_Internal_Write_File since debuggers go haywire without it.
+- bugfix Smarty::clearCompiledTemplate() threw an Exception if $cache_id was not present in $compile_dir when $use_sub_dirs = true.
+- bugfix {html_select_date} and {html_select_time} did not properly handle empty time arguments (Forum Topic 20190)
+- improvement removed unnecessary sha1()
+
+19.10.2011
+- revert PHP4 constructor message
+- fixed PHP4 constructor message
+
+===== Smarty-3.1.4 =====
+19.10.2011
+- added exception when using PHP4 style constructor
+
+16.10.2011
+- bugfix testInstall() did not propery check cache_dir and compile_dir
+
+15.10.2011
+- bugfix Smarty_Resource and Smarty_CacheResource runtime caching (Forum Post 75264)
+
+14.10.2011
+- bugfix unique_resource did not properly apply to compiled resources (Forum Topic 20128)
+- add locking to custom resources (Forum Post 75252)
+- add Smarty_Internal_Template::clearCache() to accompany isCached() fetch() etc.
+
+13.10.2011
+- add caching for config files in Smarty_Resource
+- bugfix disable of caching after isCached() call did not work (Forum Topic 20131)
+- add concept unique_resource to combat potentially ambiguous template_resource values when custom resource handlers are used (Forum Topic 20128)
+- bugfix multiline strings in config files could fail on longer strings (Issue #55)
+
+11.10.2011
+- add runtime checks for not matching {capture}/{/capture} calls (Forum Topic 20120)
+ 
+10.10.2011
+- bugfix variable name typo in {html_options} and {html_checkboxes} (Issue #54)
+- bugfix <?xml> tag did create wrong output when caching enabled and the tag was in included subtemplate
+- bugfix Smarty_CacheResource_mysql example was missing strtotime() calls
+
+===== Smarty-3.1.3  =====
+07.10.2011
+- improvement removed html comments from {mailto} (Forum Topic 20092)
+- bugfix testInstall() would not show path to internal plugins_dir (Forum Post 74627)
+- improvement testInstall() now showing resolved paths and checking the include_path if necessary
+- bugfix html_options plugin did not handle object values properly (Issue #49, Forum Topic 20049)
+- improvement html_checkboxes and html_radios to accept null- and object values, and label_ids attribute
+- improvement removed some unnecessary count()s
+- bugfix parent pointer was not set when fetch() for other template was called on template object
+
+06.10.2011
+- bugfix switch lexer internals depending on mbstring.func_overload
+- bugfix start_year and end_year of {html_select_date} did not use current year as offset base (Issue #53)
+
+05.10.2011
+- bugfix of problem introduced with r4342 by replacing strlen() with isset()
+- add environment configuration issue with mbstring.func_overload Smarty cannot compensate for (Issue #45)
+- bugfix nofilter tag option did not disable default modifier
+- bugfix html_options plugin did not handle null- and object values properly (Issue #49, Forum Topic 20049)
+
+04.10.2011
+- bugfix assign() in plugins called in subtemplates did change value also in parent template
+- bugfix of problem introduced with r4342 on math plugin 
+- bugfix output filter should not run on individually cached subtemplates
+- add unloadFilter() method
+- bugfix has_nocache_code flag was not reset before compilation
+
+===== Smarty-3.1.2  =====
+03.10.2011
+- improvement add internal $joined_template_dir property instead computing it on the fly several times
+
+01.10.2011
+- improvement replaced most in_array() calls by more efficient isset() on array_flip()ed haystacks
+- improvement replaced some strlen($foo) > 3 calls by isset($foo[3])
+- improvement Smarty_Internal_Utility::clearCompiledTemplate() removed redundant strlen()s
+
+29.09.2011
+- improvement of Smarty_Internal_Config::loadConfigVars() dropped the in_array for index look up
+
+28.09.2011
+- bugfix on template functions called nocache calling other template functions
+
+27.09.2011
+- bugfix possible warning "attempt to modify property of non-object" in {section} (issue #34)
+- added chaining to Smarty_Internal_Data so $smarty->assign('a',1)->assign('b',2); is possible now
+- bugfix remove race condition when a custom resource did change timestamp during compilation
+- bugfix variable property did not work on objects variable in template
+- bugfix smarty_make_timestamp() failed to process DateTime objects properly
+- bugfix wrong resource could be used on compile check of custom resource
+
+26.09.2011
+- bugfix repeated calls to same subtemplate did not make use of cached template object
+
+24.09.2011
+- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application
+- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable
+- added compile_dir and cache_dir to list of muted directories
+- improvment better error message for undefined templates at {include}
+
+23.09.2011
+- remove unused properties
+- optimization use real function instead anonymous function for preg_replace_callback
+- bugfix a relative {include} in child template blocks failed
+- bugfix direct setting of $template_dir, $config_dir, $plugins_dir in __construct() of an 
+  extended Smarty class created problems
+- bugfix error muting was not implemented for cache locking
+
+===== Smarty 3.1.1  =====
+22.09.2011
+- bugfix {foreachelse} does fail if {section} was nested inside {foreach}
+- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
+
+21.09.2011
+- bugfix look for mixed case plugin file names as in 3.0 if not found try all lowercase
+- added $error_muting to suppress error messages even for badly implemented error_handlers
+- optimized autoloader
+- reverted ./ and ../ handling in fetch() and display() - they're allowed again
+
+20.09.2011
+- bugfix removed debug echo output while compiling template inheritance
+- bugfix relative paths in $template_dir broke relative path resolving in {include "../foo.tpl"}
+- bugfix {include} did not work inside nested {block} tags
+- bugfix {assign} with scope root and global did not work in all cases
+
+19.09.2011
+- bugfix regression in Smarty_CacheReource_KeyValueStore introduced by r4261
+- bugfix output filter shall not run on included subtemplates
+
+18.09.2011
+- bugfix template caching did not care about file.tpl in different template_dir
+- bugfix {include $file} was broken when merge_compiled_incluges = true
+- bugfix {include} was broken when merge_compiled_incluges = true and same indluded template
+  was used in different main templates in one compilation run
+- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
+- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true
+
+17.09.2011
+- bugfix lock_id for file resource would create invalid filepath
+- bugfix resource caching did not care about file.tpl in different template_dir
+
+===== Smarty 3.1.0  =====
+15/09/2011
+- optimization of {foreach}; call internal _count() method only when "total" or "last" {foreach} properties are used
+
+11/09/2011
+- added  unregisterObject() method
+
+06/09/2011
+- bugfix  isset() did not work in templates on config variables
+
+03/09/2011
+- bugfix createTemplate() must default to cache_id and compile_id of Smarty object
+- bugfix Smarty_CacheResource_KeyValueStore must include $source->uid in cache filepath to keep templates with same
+  name but different folders seperated
+- added cacheresource.apc.php example in demo folder
+
+02/09/2011
+- bugfix cache lock file must use absolute filepath
+
+01/09/2011
+- update of cache locking
+
+30/08/2011
+- added locking mechanism to CacheResource API (implemented with File and KeyValueStores)
+
+28/08/2011
+- bugfix clearCompileTemplate() did not work for specific template subfolder or resource
+
+27/08/2011
+- bugfix {$foo|bar+1} did create syntax error
+
+26/08/2011
+- bugfix when generating nocache code which contains double \
+- bugfix handle race condition if cache file was deleted between filemtime and include
+
+17/08/2011
+- bugfix CacheResource_Custom bad internal fetch() call
+
+15/08/2011
+- bugfix CacheResource would load content twice for KeyValueStore and Custom handlers
+
+06/08/2011
+- bugfix {include} with scope attribute could execute in wrong scope
+- optimization of compile_check processing
+
+03/08/2011
+- allow comment tags to comment {block} tags out in child templates
+
+26/07/2011
+- bugfix experimental getTags() method did not work
+
+24/07/2011
+- sure opened output buffers are closed on exception
+- bugfix {foreach} did not work on IteratorAggregate
+
+22/07/2011
+- clear internal caches on clearAllCache(), clearCache(), clearCompiledTemplate()
+
+21/07/2011
+- bugfix value changes of variable values assigned to Smarty object could not be seen on repeated $smarty->fetch() calls
+
+17/07/2011
+- bugfix {$smarty.block.child} did drop a notice at undefined child
+
+15/07/2011
+- bugfix individual cache_lifetime of {include} did not work correctly inside {block} tags
+- added caches for Smarty_Template_Source and Smarty_Template_Compiled to reduce I/O for multiple cache_id rendering
+
+14/07/2011
+- made Smarty::loadPlugin() respect the include_path if required
+
+13/07/2011
+- optimized internal file write functionality
+- bugfix PHP did eat line break on nocache sections
+- fixed typo of Smarty_Security properties $allowed_modifiers and $disabled_modifiers
+
+06/07/2011
+- bugfix variable modifier must run befor gereral filtering/escaping
+
+04/07/2011
+- bugfix use (?P<name>) syntax at preg_match as some pcre libraries failed on (?<name>)
+- some performance improvement when using generic getter/setter on template objects
+
+30/06/2011
+- bugfix generic getter/setter of Smarty properties used on template objects did throw exception
+- removed is_dir and is_readable checks from directory setters for better performance
+
+28/06/2011
+- added back support of php template resource as undocumented feature
+- bugfix automatic recompilation on version change could drop undefined index notice on old 3.0 cache and compiled files
+- update of README_3_1_DEV.txt and moved into the distribution folder
+- improvement show first characters of eval and string templates instead sha1 Uid in debug window
+
+===== Smarty 3.1-RC1 =====
+25/06/2011
+- revert change of 17/06/2011. $_smarty varibale removed. call loadPlugin() from inside plugin code if required
+- code cleanup, remove no longer used properties and methods
+- update of PHPdoc comments
+
+23/06/2011
+- bugfix {html_select_date} would not respect current time zone
+
+19/06/2011
+- added $errors argument to testInstall() functions to suppress output.
+- added plugin-file checks to testInstall()
+
+18/06/2011
+- bugfix mixed use of same subtemplate inline and not inline in same script could cause a warning during compilation
+
+17/06/2011
+- bugfix/change use $_smarty->loadPlugin() when loading nested depending plugins via loadPlugin
+- bugfix {include ... inline} within {block}...{/block} did fail
+
+16/06/2011
+- bugfix do not overwrite '$smarty' template variable when {include ... scope=parent} is called
+- bugfix complete empty inline subtemplates did fail
+
+15/06/2011
+- bugfix template variables where not accessable within inline subtemplates
+
+12/06/2011
+- bugfix removed unneeded merging of template variable when fetching includled subtemplates
+
+10/06/2011
+- made protected properties $template_dir, $plugins_dir, $cache_dir, $compile_dir, $config_dir accessible via magic methods
+
+09/06/2011
+- fix smarty security_policy issue in plugins {html_image} and {fetch}
+
+05/06/2011
+- update of SMARTY_VERSION
+- bugfix made getTags() working again
+
+04/06/2011
+- allow extends resource in file attribute of {extends} tag
+
+03/06/2011
+- added {setfilter} tag to set filters for variable output
+- added escape_html property to control autoescaping of variable output
+
+27/05/2011
+- added allowed/disabled tags and modifiers in security for sandboxing
+
+23/05/2011
+- added base64: and urlencode: arguments to eval and string resource types
+
+22/05/2011
+- made time-attribute of {html_select_date} and {html_select_time} accept arrays as defined by attributes prefix and field_array
+
+13/05/2011
+- remove setOption / getOption calls from SamrtyBC class
+
+02/05/2011
+- removed experimental setOption() getOption() methods
+- output returned content also on opening tag calls of block plugins
+- rewrite of default plugin handler
+- compile code of variable filters for better performance 
+
+20/04/2011
+- allow {php} {include_php} tags and PHP_ALLOW handling only with the SmartyBC class
+- removed support of php template resource
+
+20/04/2011
+- added extendsall resource example
+- optimization of template variable access
+- optimization of subtemplate handling {include}
+- optimization of template class
+
+01/04/2011
+- bugfix quote handling in capitalize modifier
+
+28/03/2011
+- bugfix stripslashes() requried when using PCRE e-modifier
+
+04/03/2011
+- upgrade to new PHP_LexerGenerator version 0.4.0 for better performance
+
+27/02/2011
+- ignore .svn folders when clearing cache and compiled files
+- string resources do not need a modify check
+
+26/02/2011
+- replaced smarty_internal_wrapper by SmartyBC class
+- load utility functions as static methods instead through __call()
+- bugfix in extends resource when subresources are used
+- optimization of modify checks
+
+25/02/2011
+- use $smarty->error_unassigned to control NOTICE handling on unassigned variables
+
+21/02/2011
+- added new new compile_check mode COMPILECHECK_CACHEMISS
+- corrected new cloning behaviour of createTemplate()
+- do no longer store the compiler object as property in the compile_tag classes to avoid possible memory leaks 
+  during compilation
+
+19/02/2011
+- optimizations on merge_compiled_includes handling
+- a couple of optimizations and bugfixes related to new resource structure
+
+17/02/2011
+- changed ./ and ../ behaviour
+
+14/02/2011
+- added {block ... hide} option to supress block if no child is defined
+
+13/02/2011
+- update handling of recursive subtemplate calls
+- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
+
+12/02/2011
+- new class Smarty_Internal_TemplateBase with shared methods of Smarty and Template objects
+- optimizations of template processing
+- made register... methods permanet
+- code for default_plugin_handler
+- add automatic recompilation at version change
+
+04/02/2011
+- change in Smarty_CacheResource_Custom
+- bugfix cache_lifetime did not compile correctly at {include} after last update
+- moved isCached processing into CacheResource class
+- bugfix new CacheResource API did not work with disabled compile_check
+
+03/02/2011
+- handle template content as function to improve speed on multiple calls of same subtemplate and isCached()/display() calls
+- bugfixes and improvents in the new resource API
+- optimizations of template class code
+
+25/01/2011
+- optimized function html_select_time
+
+22/01/2011
+- added Smarty::$use_include_path configuration directive for Resource API
+
+21/01/2011
+- optimized function html_select_date
+
+19/01/2011
+- optimized outputfilter trimwhitespace
+
+18/01/2011
+- bugfix Config to use Smarty_Resource to fetch sources
+- optimized Smarty_Security's isTrustedDir() and isTrustedPHPDir()
+
+17/01/2011
+- bugfix HTTP headers for CGI SAPIs
+
+16/01/2011
+- optimized internals of Smarty_Resource and Smarty_CacheResource
+
+14/01/2011
+- added modifiercompiler escape to improve performance of escaping html, htmlall, url, urlpathinfo, quotes, javascript
+- added support to choose template_dir to load from: [index]filename.tpl
+
+12/01/2011
+- added unencode modifier to revert results of encode modifier
+- added to_charset and from_charset modifier for character encoding
+
+11/01/2011
+- added SMARTY_MBSTRING to generalize MBString detection
+- added argument $lc_rest to modifier.capitalize to lower-case anything but the first character of a word
+- changed strip modifier to consider unicode white-space, too
+- changed wordwrap modifier to accept UTF-8 strings
+- changed count_sentences modifier to consider unicode characters and treat sequences delimited by ? and ! as sentences, too
+- added argument $double_encode to modifier.escape (applies to html and htmlall only)
+- changed escape modifier to be UTF-8 compliant
+- changed textformat block to be UTF-8 compliant
+- optimized performance of mailto function
+- fixed spacify modifier so characters are not prepended and appended, made it unicode compatible
+- fixed truncate modifier to properly use mb_string if possible
+- removed UTF-8 frenzy from count_characters modifier
+- fixed count_words modifier to treat "hello-world" as a single word like str_count_words() does
+- removed UTF-8 frenzy from upper modifier
+- removed UTF-8 frenzy from lower modifier
+
+01/01/2011
+- optimize smarty_modified_escape for hex, hexentity, decentity.
+
+28/12/2010
+- changed $tpl_vars, $config_vars and $parent to belong to Smarty_Internal_Data
+- added Smarty::registerCacheResource() for dynamic cache resource object registration
+
+27/12/2010
+- added Smarty_CacheResource API and refactored existing cache resources accordingly
+- added Smarty_CacheResource_Custom and Smarty_CacheResource_Mysql
+
+26/12/2010
+- added Smarty_Resource API and refactored existing resources accordingly
+- added Smarty_Resource_Custom and Smarty_Resource_Mysql
+- bugfix Smarty::createTemplate() to return properly cloned template instances
+
+24/12/2010
+- optimize smarty_function_escape_special_chars() for PHP >= 5.2.3
+
+===== SVN 3.0 trunk  =====
+14/05/2011
+- bugfix error handling at stream resources
+
+13/05/2011
+- bugfix condition starting with "-" did fail at {if} and {while} tags
+
+22/04/2011
+- bugfix allow only fixed string as file attribute at {extends} tag
+
+01/04/2011
+- bugfix do not run filters and default modifier when displaying the debug template
+- bugfix of embedded double quotes within multi line strings (""")
+
+29/03/2011
+- bugfix on error message in smarty_internal_compile_block.php
+- bugfix mb handling in strip modifier
+- bugfix for Smarty2 style registered compiler function on unnamed attribute passing like {tag $foo $bar}
+
+17/03/2011
+- bugfix on default {function} parameters when {function} was used in nocache sections
+- bugfix on compiler object destruction. compiler_object property was by mistake unset.
+
+09/03/2011
+-bugfix a variable filter should run before modifers on an output tag (see change of 23/07/2010)
+
+08/03/2011
+- bugfix loading config file without section should load only defaults
+
+03/03/2011
+- bugfix "smarty" template variable was not recreated when cached templated had expired
+- bugfix internal rendered_content must be cleared after subtemplate was included
+
+01/03/2011
+- bugfix replace modifier did not work in 3.0.7 on systems without multibyte support
+- bugfix {$smarty.template} could return in 3.0.7 parent template name instead of 
+         child name when it needed to compile
+
+25/02/2011
+- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}
+
+24/02/2011
+- bugfix $smarty->clearCache('some.tpl') did by mistake cache the template object
+
+18/02/2011
+- bugfix removed possible race condition when isCached() was called for an individually cached subtemplate
+- bugfix force default debug.tpl to be loaded by the file resource
+
+17/02/2011
+-improvement not to delete files starting with '.' from cache and template_c folders on clearCompiledTemplate() and clearCache()
+
+16/02/2011
+-fixed typo in exception message of Smarty_Internal_Template
+-improvement allow leading spaces on } tag closing if auto_literal is enabled
+
+13/02/2011
+- bufix replace $smarty->triggerError() by exception
+- removed obsolete {popup_init..} plugin from demo templates
+- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
+
+===== Smarty 3.0.7  =====
+09/02/2011
+- patched vulnerability when using {$smarty.template}
+
+01/02/2011
+- removed assert() from config and template parser
+
+31/01/2011
+- bugfix the lexer/parser did fail on special characters like VT
+
+16/01/2011
+-bugfix of ArrayAccess object handling in internal _count() method
+-bugfix of Iterator object handling in internal _count() method
+
+14/01/2011
+-bugfix removed memory leak while processing compileAllTemplates
+
+12/01/2011
+- bugfix in {if} and {while} tag compiler when using assignments as condition and nocache mode
+
+10/01/2011
+- bugfix when using {$smarty.block.child} and name of {block} was in double quoted string
+- bugfix updateParentVariables() was called twice when leaving {include} processing
+
+- bugfix mb_str_replace in replace and escape modifiers work with utf8
+
+31/12/2010
+- bugfix dynamic configuration of $debugging_crtl did not work
+- bugfix default value of $config_read_hidden changed to false
+- bugfix format of attribute array on compiler plugins
+- bugfix getTemplateVars() could return value from wrong scope
+
+28/12/2010
+- bugfix multiple {append} tags failed to compile.
+
+22/12/2010
+- update do not clone the Smarty object an internal createTemplate() calls to increase performance
+
+21/12/2010
+- update html_options to support class and id attrs
+
+17/12/2010
+- bugfix added missing support of $cache_attrs for registered plugins
+
+15/12/2010
+- bugfix assignment as condition in {while} did drop an E_NOTICE
+
+14/12/2010
+- bugfix when passing an array as default parameter at {function} tag
+
+13/12/2010
+- bugfix {$smarty.template} in child template did not return right content
+- bugfix Smarty3 did not search the PHP include_path for template files
+
+===== Smarty 3.0.6  =====
+
+12/12/2010
+- bugfix fixed typo regarding yesterdays change to allow streamWrapper
+
+11/12/2010
+- bugfix nested block tags in template inheritance child templates did not work correctly
+- bugfix {$smarty.current_dir} in child template did not point to dir of child template
+- bugfix changed code when writing temporary compiled files to allow stream_wrapper
+
+06/12/2010
+- bugfix getTemplateVars() should return 'null' instead dropping E_NOTICE on an unassigned variable
+
+05/12/2010
+- bugfix missing declaration of $smarty in Smarty class
+- bugfix empty($foo) in {if} did drop a notice when $foo was not assigned
+
+01/12/2010
+- improvement of {debug} tag output
+
+27/11/2010
+-change run output filter before cache file is written. (same as in Smarty2)
+
+24/11/2011
+-bugfix on parser at  !$foo|modifier
+-change parser logic when assignments used as condition in {if] and {while} to allow assign to array element
+
+23/11/2011
+-bugfix allow integer as attribute name in plugin calls
+-change  trimm whitespace from error message, removed long list of expected tokens
+
+22/11/2010
+- bugfix on template inheritance when an {extends} tag was inserted by a prefilter
+- added error message for illegal variable file attributes at {extends...} tags
+
+===== Smarty 3.0.5  =====
+
+
+19/11/2010
+- bugfix on block plugins with modifiers
+
+18/11/2010
+- change on handling of unassigned template variable -- default will drop E_NOTICE
+- bugfix on Smarty2 wrapper load_filter() did not work
+
+17/11/2010
+- bugfix on {call} with variable function name
+- bugfix on {block} if name did contain '-'
+- bugfix in function.fetch.php , referece to undefined $smarty
+
+16/11/2010
+- bugfix whitespace in front of "<?php" in smarty_internal_compile_private_block_plugin.php
+- bugfix {$smarty.now} did compile incorrectly
+- bugfix on reset(),end(),next(),prev(),current() within templates
+- bugfix on default parameter for {function}
+
+15/11/2010
+- bugfix when using {$smarty.session} as object
+- bugfix scoping problem on $smarty object passed to filters
+- bugfix captured content could not be accessed globally
+- bugfix Smarty2 wrapper functions could not be call from within plugins
+
+===== Smarty 3.0.4  =====
+
+14/11/2010
+- bugfix isset() did not allow multiple parameter
+- improvment of some error messages
+- bugfix html_image did use removed property $request_use_auto_globals
+- small performace patch in Smarty class
+
+13/11/2010
+- bugfix  overloading problem when $smarty->fetch()/display() have been used in plugins
+				(introduced with 3.0.2)
+- code cleanup
+								
+===== Smarty 3.0.3  =====
+
+13/11/2010
+- bugfix on {debug}
+- reverted location of loadPlugin() to Smarty class
+- fixed comments in plugins
+- fixed internal_config (removed unwanted code line)
+- improvement  remove last linebreak from {function} definition
+
+===== Smarty 3.0.2  =====
+
+12/11/2010
+- reactivated $error_reporting property handling
+- fixed typo in compile_continue
+- fixed security in {fetch} plugin
+- changed back plugin parameters to two. second is template object 
+  with transparent access to Smarty object
+- fixed {config_load} scoping form compile time to run time
+
+===== Smarty 3.0.0  =====
+
+
+
+11/11/2010
+- major update including some API changes
+
+10/11/2010
+- observe compile_id also for config files
+
+09/11/2010
+-bugfix on  complex expressions as start value for {for} tag
+request_use_auto_globals
+04/11/2010
+- bugfix do not allow access of dynamic and private object members of assigned objects when
+  security is enabled.
+
+01/11/2010
+- bugfix related to E_NOTICE change.  {if empty($foo)} did fail when $foo contained a string 
+
+28/10/2010
+- bugfix on compiling modifiers within $smarty special vars like {$smarty.post.{$foo|lower}}
+
+27/10/2010
+- bugfix default parameter values did not work for template functions included with {include}
+
+25/10/2010
+- bugfix for E_NOTICE change, array elements did not work as modifier parameter
+
+20/10/2010
+- bugfix for the E_NOTICE change
+
+19/10/2010
+- change Smarty does no longer mask out E_NOTICE by default during template processing
+
+13/10/2010
+- bugfix removed ambiguity between ternary and stream variable in template syntax
+- bugfix use caching properties of template instead of smarty object when compiling child {block}
+- bugfix {*block}...{/block*} did throw an exception in template inheritance
+- bugfix on template inheritance using nested eval or string resource in {extends} tags
+- bugfix on output buffer handling in isCached() method
+
+=====  RC4 =====
+
+01/10/2010
+- added {break} and {continue} tags for flow control of {foreach},{section},{for} and {while} loops
+- change of 'string' resource. It's no longer evaluated and compiled files are now stored
+- new 'eval' resource which evaluates a template without saving the compiled file
+- change in isCached() method to allow multiple calls for the same template
+
+25/09/2010
+- bugfix on some compiling modifiers
+
+24/09/2010
+- bugfix merge_compiled_includes flag was not restored correctly in {block} tag
+
+22/09/2010
+- bugfix on default modifier
+
+18/09/2010
+- bugfix untility compileAllConfig() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
+- bugfix on templateExists() for extends resource
+
+17/09/2010
+- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
+- bugfix corrected error message on missing template files in extends resource
+- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
+
+16/09/2010
+- bugfix when a doublequoted modifier parameter did contain Smarty tags and ':'
+
+15/09/2010
+- bugfix resolving conflict between '<%'/'%>' as custom Smarty delimiter and ASP tags
+- use ucfirst for resource name on internal resource class names
+
+12/09/2010
+- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
+
+10/09/2010
+- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)
+
+08/09/2010
+- allow multiple template inheritance branches starting in subtemplates
+
+07/09/2010
+- bugfix {counter} and {cycle} plugin assigned result to smarty variable not in local(template) scope
+- bugfix templates containing just {strip} {/strip} tags did produce an error
+
+
+23/08/2010
+- fixed E_STRICT errors for uninitialized variables
+
+22/08/2010
+- added attribute cache_id to {include} tag
+
+13/08/2010
+- remove exception_handler property from Smarty class
+- added Smarty's own exceptions SmartyException and SmartyCompilerException
+
+09/08/2010
+- bugfix on modifier with doublequoted strings as parameter containing embedded tags
+
+06/08/2010
+- bugfix when cascading some modifier like |strip|strip_tags modifier
+
+05/08/2010
+- added plugin type modifiercompiler to produce compiled modifier code
+- changed standard modifier plugins to the compiling versions whenever possible
+- bugfix in nocache sections {include} must not cache the subtemplate
+
+02/08/2010
+- bugfix strip did not work correctly in conjunction with comment lines
+
+31/07/2010
+- bugfix on nocache attribute at {assign} and {append}
+
+30/07/2010
+- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append}
+
+25/07/2010
+- another bugfix of change from 23/07/2010 when compiling modifer
+
+24/07/2010
+- bugfix of change from 23/07/2010 when compiling modifer
+
+23/07/2010
+- changed execution order. A variable filter does now run before modifiers on output of variables
+- bugfix use always { and } as delimiter for debug.tpl
+
+
+22/07/2010
+- bugfix in templateExists() method
+
+20/07/2010
+- fixed handling of { strip } tag with whitespaces
+
+15/07/2010
+- bufix  {$smarty.template} does include now the relative path, not just filename
+
+=====  RC3 =====
+
+
+
+
+15/07/2010
+- make the date_format modifier work also on objects of the DateTime class
+- implementation of parsetrees in the parser to close security holes and remove unwanted empty line in HTML output
+
+08/07/2010
+- bugfix on assigning multidimensional arrays within templates
+- corrected bugfix for truncate modifier
+
+07/07/2010
+- bugfix the truncate modifier needs to check if the string is utf-8 encoded or not
+- bugfix support of script files relative to trusted_dir
+
+06/07/2010
+- create exception on recursive {extends} calls
+- fixed reported line number at "unexpected closing tag " exception
+- bugfix on escape:'mail' modifier
+- drop exception if 'item' variable is equal 'from' variable in {foreach} tag
+
+01/07/2010
+- removed call_user_func_array calls for optimization of compiled code when using registered modifiers and plugins
+
+25/06/2010
+- bugfix escaping " when block tags are used within doublequoted strings
+
+24/06/2010
+- replace internal get_time() calls with standard PHP5 microtime(true) calls in Smarty_Internal_Utility
+- added $smarty->register->templateClass() and $smarty->unregister->templateClass() methods for supporting static classes with namespace
+
+
+22/06/2010
+- allow spaces between typecast and value in template syntax
+- bugfix get correct count of traversables in {foreach} tag
+
+21/06/2010
+- removed use of PHP shortags SMARTY_PHP_PASSTHRU mode
+- improved speed of cache->clear() when a compile_id was specified and use_sub_dirs is true 
+
+20/06/2010
+- replace internal get_time() calls with standard PHP5 microtime(true) calls
+- closed security hole when php.ini asp_tags = on
+
+18/06/2010
+- added __toString method to the Smarty_Variable class
+
+
+14/06/2010
+- make handling of Smarty comments followed by newline BC to Smarty2
+
+
+=====  RC2 =====
+
+
+
+13/06/2010
+- bugfix Smarty3 did not handle hexadecimals like 0x0F as numerical value
+- bugifx Smarty3 did not accept numerical constants like .1 or 2. (without a leading or trailing digit)
+
+11/06/2010
+- bugfix the lexer did fail on larger {literal} ... {/literal} sections
+
+03/06/2010
+- bugfix on calling template functions like Smarty tags
+
+01/06/2010
+- bugfix on template functions used with template inheritance
+- removed /* vim: set expandtab: */ comments
+- bugfix of auto literal problem introduce with fix of 31/05/2010
+
+31/05/2010
+- bugfix the parser did not allow some smarty variables with special name like $for, $if, $else and others.
+
+27/05/2010
+- bugfix on object chaining using variable properties
+- make scope of {counter} and {cycle} tags again global as in Smarty2
+
+26/05/2010
+- bugfix removed decrepated register_resource call in smarty_internal_template.php
+
+25/05/2010
+- rewrite of template function handling to improve speed
+- bugfix on file dependency when merge_compiled_includes = true
+
+
+16/05/2010
+- bugfix when passing parameter with numeric name like {foo 1='bar' 2='blar'}
+
+14/05/2010
+- bugfix compile new config files if compile_check and force_compile = false
+- added variable static classes names to template syntax
+
+11/05/2010
+- bugfix  make sure that the cache resource is loaded in all conditions when template methods getCached... are called externally
+- reverted the change 0f 30/04/2010. With the exception of forward references template functions can be again called by a standard tag.
+
+10/05/2010
+- bugfix on {foreach} and {for} optimizations of 27/04/2010 
+
+09/05/2010
+- update of template and config file parser because of minor parser generator bugs 
+
+07/05/2010
+- bugfix on {insert} 
+
+06/05/2010
+- bugfix when merging compiled templates and objects are passed as parameter of the {include} tag
+
+05/05/2010
+- bugfix on {insert} to cache parameter
+- implementation of $smarty->default_modifiers as in Smarty2
+- bugfix on getTemplateVars method 
+
+01/05/2010
+- bugfix on handling of variable method names at object chaning
+
+30/04/2010
+- bugfix when comparing timestamps in sysplugins/smarty_internal_config.php
+- work around of a substr_compare bug in older PHP5 versions
+- bugfix on template inheritance for tag names starting with "block"
+- bugfix on {function} tag with name attribute in doublequoted strings
+- fix to make calling of template functions unambiguously by madatory usage of the {call} tag
+
+=====  RC1 =====
+
+27/04/2010
+- change default of $debugging_ctrl to 'NONE'
+- optimization of compiled code of {foreach} and {for} loops
+- change of compiler for config variables
+
+27/04/2010
+- bugfix in $smarty->cache->clear() method. (do not cache template object)
+
+
+17/04/2010
+- security fix in {math} plugin
+
+
+12/04/2010
+- bugfix in smarty_internal_templatecompilerbase (overloaded property)
+- removed parser restrictions in using true,false and null as ID
+
+07/04/2010
+- bugfix typo in smarty_internal_templatecompilerbase 
+
+31/03/2010
+- compile locking by touching old compiled files to avoid concurrent compilations
+
+29/03/2010
+- bugfix allow array definitions as modifier parameter
+- bugfix observe compile_check property when loading config files
+- added the template object as third filter parameter
+
+25/03/2010
+- change of utility->compileAllTemplates() log messages
+- bugfix on nocache code in {function} tags 
+- new method utility->compileAllConfig() to compile all config files
+
+24/03/2010
+- bugfix on register->modifier() error messages
+
+23/03/2010
+- bugfix on template inheritance when calling multiple child/parent relations
+- bugfix on caching mode SMARTY_CACHING_LIFETIME_SAVED and cache_lifetime = 0
+
+22/03/2010
+- bugfix make directory separator operating system independend in compileAllTemplates()
+
+21/03/2010
+- removed unused code in compileAllTemplates()
+
+19/03/2010
+- bugfix for multiple {/block} tags on same line
+
+17/03/2010
+- bugfix make $smarty->cache->clear() function independent from caching status
+
+16/03/2010
+- bugfix on assign attribute at registered template objects
+- make handling of modifiers on expression BC to Smarty2
+ 
+15/03/2010
+- bugfix on block plugin calls
+
+11/03/2010
+- changed parsing of <?php and ?> back to Smarty2 behaviour
+
+08/03/2010
+- bugfix on uninitialized properties in smarty_internal_template
+- bugfix on $smarty->disableSecurity()
+
+04/03/2010
+- bugfix allow uppercase chars in registered resource names
+- bugfix on accessing chained objects of static classes
+
+01/03/2010
+- bugfix on nocache code in {block} tags if child template was included by {include}
+
+27/02/2010
+- allow block tags inside double quoted string 
+
+26/02/2010
+- cache modified check implemented
+- support of access to a class constant from an object (since PHP 5.3)
+
+24/02/2010
+- bugfix on expressions in doublequoted string enclosed in backticks
+- added security property $static_classes for static class security
+
+18/02/2010
+- bugfix on parsing Smarty tags inside <?xml ... ?>
+- bugfix on truncate modifier
+
+17/02/2010
+- removed restriction that modifiers did require surrounding parenthesis in some cases
+- added {$smarty.block.child} special variable for template inheritance
+
+16/02/2010
+- bugfix on <?xml ... ?> tags for all php_handling modes
+- bugfix on parameter of variablefilter.htmlspecialchars.php plugin
+
+14/02/2010
+- added missing _plugins property in smarty.class.php
+- bugfix $smarty.const... inside doublequoted strings and backticks was compiled into wrong PHP code
+
+12/02/2010
+- bugfix on nested {block} tags
+- changed Smarty special variable $smarty.parent to $smarty.block.parent
+- added support of nested {bock} tags
+
+10/02/2010
+- avoid possible notice on $smarty->cache->clear(...), $smarty->clear_cache(....)
+- allow Smarty tags inside <? ... ?> tags in SMARTY_PHP_QUOTE and SMARTY_PHP_PASSTHRU mode
+- bugfix at new "for" syntax like {for $x=1 to 10 step 2}
+
+09/02/2010
+- added $smarty->_tag_stack for tracing block tag hierarchy
+
+08/02/2010
+- bugfix  use template fullpath at §smarty->cache->clear(...), $smarty->clear_cache(....)
+- bugfix of cache filename on extended templates when force_compile=true
+
+07/02/2010
+- bugfix on changes of 05/02/2010
+- preserve line endings type form template source
+- API changes (see README file)
+
+05/02/2010
+- bugfix on modifier and block plugins with same name
+
+02/02/2010
+- retaining newlines at registered functions and function plugins
+
+01/25/2010
+- bugfix cache resource was not loaded when caching was globally off but enabled at a template object
+- added test that $_SERVER['SCRIPT_NAME'] does exist in Smarty.class.php
+
+01/22/2010
+- new method $smarty->createData([$parent]) for creating a data object (required for bugfixes below)
+- bugfix config_load() method now works also on a data object
+- bugfix get_config_vars() method now works also on a data and template objects
+- bugfix clear_config() method now works also on a data and template objects
+
+01/19/2010
+- bugfix on plugins if same plugin was called from a nocache section first and later from a cached section
+
+
+###beta 7###
+
+
+01/17/2010
+- bugfix on $smarty.const... in double quoted strings
+
+01/16/2010
+- internal change of config file lexer/parser on handling of section names
+- bugfix on registered objects (format parameter of register_object was not handled correctly)
+
+01/14/2010
+- bugfix on backslash within single quoted strings
+- bugfix allow absolute filepath for config files
+- bugfix on special Smarty variable $smarty.cookies
+- revert handling of newline on no output tags like {if...} 
+- allow special characters in config file section names for Smarty2 BC
+
+01/13/2010
+- bugfix on {if} tags 
+
+01/12/2010
+- changed back modifer handling in parser. Some restrictions still apply:
+    if modifiers are used in side {if...} expression or in mathematical expressions 
+    parentheses must be used.
+- bugfix the {function..} tag did not accept the name attribute in double quotes
+- closed possible security hole at <?php ... ?> tags
+- bugfix of config file parser on large config files
+
+
+###beta 6####
+
+01/11/2010
+- added \n to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source
+- added missing support of insert plugins
+- added optional nocache attribute to {block} tags in parent template
+- updated <?php...?> handling supporting now heredocs and newdocs. (thanks to Thue Jnaus Kristensen)
+
+01/09/2010
+- bugfix on nocache {block} tags in parent templates
+
+01/08/2010
+- bugfix on variable filters. filter/nofilter attributes did not work on output statements
+
+01/07/2010
+- bugfix on file dependency at template inheritance
+- bugfix on nocache code at template inheritance
+
+01/06/2010
+- fixed typo in smarty_internal_resource_registered
+- bugfix for custom delimiter at extends resource and {extends} tag
+
+01/05/2010
+- bugfix sha1() calculations at extends resource and some general improvments on sha1() handling 
+
+
+01/03/2010
+- internal change on building cache files
+
+01/02/2010
+- update cached_timestamp at the template object after cache file is written to avoid possible side effects
+- use internally always SMARTY_CACHING_LIFETIME_* constants
+
+01/01/2010
+- bugfix for obtaining plugins which must be included (related to change of 12/30/2009)
+- bugfix for {php} tag (trow an exception if allow_php_tag = false)
+
+12/31/2009
+- optimization of generated code for doublequoted strings containing variables
+- rewrite of {function} tag handling
+  - can now be declared in an external subtemplate
+  - can contain nocache sections (nocache_hash handling)
+  - can be called in noccache sections (nocache_hash handling)
+  - new {call..} tag to call template functions with a variable name {call name=$foo}
+- fixed nocache_hash handling in merged compiled templates
+
+12/30/2009
+- bugfix for plugins defined in the script as smarty_function_foo
+
+12/29/2009
+- use sha1() for filepath encoding
+- updates on nocache_hash handling
+- internal change on merging some data
+- fixed cache filename for custom resources 
+
+12/28/2009
+- update for security fixes
+- make modifier plugins always trusted
+- fixed bug loading modifiers in child template at template inheritance
+
+12/27/2009
+--- this is a major update with a couple of internal changes ---
+- new config file lexer/parser (thanks to Thue Jnaus Kristensen)
+- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen)
+- fix on registered plugins with different type but same name
+- rewrite of plugin handling (optimized execution speed)
+- closed a security hole regarding PHP code injection into cache files
+- fixed bug in clear cache handling
+- Renamed a couple of internal classes
+- code cleanup for merging compiled templates
+- couple of runtime optimizations (still not all done)
+- update of getCachedTimestamp()
+- fixed bug on modifier plugins at nocache output
+
+12/19/2009
+- bugfix on comment lines in config files
+
+12/17/2009
+- bugfix of parent/global variable update at included/merged subtemplates
+- encode final template filepath into filename of compiled and cached files
+- fixed {strip} handling in auto literals
+
+12/16/2009
+- update of changelog
+- added {include file='foo.tpl' inline}  inline option to merge compiled code of subtemplate into the calling template
+
+12/14/2009
+- fixed sideefect of last modification (objects in array index did not work anymore)
+
+12/13/2009
+- allow boolean negation ("!") as operator on variables outside {if} tag
+
+12/12/2009
+- bugfix on single quotes inside {function} tag
+- fix short append/prepend attributes in {block} tags
+
+12/11/2009
+- bugfix on clear_compiled_tpl (avoid possible warning)
+
+12/10/2009
+- bugfix on {function} tags and template inheritance
+
+12/05/2009
+- fixed problem when a cached file was fetched several times
+- removed unneeded lexer code
+
+12/04/2009
+- added max attribute to for loop
+- added security mode allow_super_globals
+
+12/03/2009
+- template inheritance: child templates can now call functions defined by the {function} tag in the parent template
+- added {for $foo = 1 to 5 step 2}  syntax
+- bugfix for {$foo.$x.$y.$z}
+
+12/01/2009
+- fixed parsing of names of special formated tags like if,elseif,while,for,foreach
+- removed direct access to constants in templates because of some syntax problems
+- removed cache resource plugin for mysql from the distribution
+- replaced most hard errors (exceptions) by softerrors(trigger_error) in plugins
+- use $template_class property for template class name when compiling {include},{eval} and {extends} tags
+
+11/30/2009
+- map 'true' to SMARTY_CACHING_LIFETIME_CURRENT for the $smarty->caching parameter
+- allow {function} tags within {block} tags
+
+11/28/2009
+- ignore compile_id at debug template
+- added direct access to constants in templates
+- some lexer/parser optimizations
+
+11/27/2009
+- added cache resource MYSQL plugin
+
+11/26/2009
+- bugfix on nested doublequoted strings
+- correct line number on unknown tag error message
+- changed {include} compiled code
+- fix on checking dynamic varibales with error_unassigned = true
+
+11/25/2009
+- allow the following writing for boolean: true, TRUE, True, false, FALSE, False
+- {strip} tag functionality rewritten
+
+11/24/2009
+- bugfix for $smarty->config_overwrite = false
+
+11/23/2009
+- suppress warnings on unlink caused by race conditions
+- correct line number on unknown tag error message
+
+------- beta 5
+11/23/2009
+- fixed configfile parser for text starting with a numeric char
+- the default_template_handler_func may now return a filepath to a template source
+
+11/20/2009
+- bugfix for empty config files
+- convert timestamps of registered resources to integer
+
+11/19/2009
+- compiled templates are no longer touched with the filemtime of template source
+
+11/18/2009
+- allow integer as attribute name in plugin calls
+
+------- beta 4
+11/18/2009
+- observe umask settings when setting file permissions
+- avoide unneeded cache file creation for subtemplates which did occur in some situations
+- make $smarty->_current_file available during compilation for Smarty2 BC
+
+11/17/2009
+- sanitize compile_id and cache_id (replace illegal chars with _)
+- use _dir_perms and _file_perms properties at file creation
+- new constant SMARTY_RESOURCE_DATE_FORMAT (default '%b %e, %Y') which is used as default format in modifier date_format
+- added {foreach $array as $key=>$value} syntax
+- renamed extend tag and resource to extends: {extends file='foo.tol'} , $smarty->display('extends:foo.tpl|bar.tpl);
+- bugfix cycle plugin
+
+11/15/2009
+- lexer/parser optimizations on quoted strings
+
+11/14/2009
+- bugfix on merging compiled templates when source files got removed or renamed.
+- bugfix modifiers on registered object tags
+- fixed locaion where outputfilters are running
+- fixed config file definitions at EOF
+- fix on merging compiled templates with nocache sections in nocache includes
+- parser could run into a PHP error on wrong file attribute
+
+11/12/2009
+- fixed variable filenames in {include_php} and {insert}
+- added scope to Smarty variables in the {block} tag compiler
+- fix on nocache code in child {block} tags
+
+11/11/2009
+- fixed {foreachelse}, {forelse}, {sectionelse} compiled code at nocache variables
+- removed checking for reserved variables
+- changed debugging handling
+
+11/10/2009
+- fixed preg_qoute on delimiters
+
+11/09/2009
+- lexer/parser bugfix 
+- new SMARTY_SPL_AUTOLOAD constant to control the autoloader option
+- bugfix for {function} block tags in included templates
+
+11/08/2009
+- fixed alphanumeric array index 
+- bugfix on complex double quoted strings
+
+11/05/2009
+- config_load method can now be called on data and template objects
+
+11/04/2009
+- added typecasting support for template variables
+- bugfix on complex indexed special Smarty variables
+
+11/03/2009
+- fixed parser error on objects with special smarty vars
+- fixed file dependency for {incude} inside {block} tag
+- fixed not compiling on non existing compiled templates when compile_check = false
+- renamed function names of autoloaded Smarty methods to Smarty_Method_....
+- new security_class property (default is Smarty_Security)
+
+11/02/2009
+- added neq,lte,gte,mod as aliases to if conditions 
+- throw exception on illegal Smarty() constructor calls
+
+10/31/2009
+- change of filenames in sysplugins folder for internal spl_autoload function
+- lexer/parser changed for increased compilation speed
+
+10/27/2009
+- fixed missing quotes in include_php.php
+
+10/27/2009
+- fixed typo in method.register_resource
+- pass {} through as literal
+
+10/26/2009
+- merge only compiled subtemplates into the compiled code of the main template
+
+10/24/2009
+- fixed nocache vars at internal block tags
+- fixed merging of recursive includes
+
+10/23/2009
+- fixed nocache var problem
+
+10/22/2009
+- fix trimwhitespace outputfilter parameter
+
+10/21/2009
+- added {$foo++}{$foo--} syntax
+- buxfix changed PHP "if (..):" to "if (..){" because of possible bad code when concenating PHP tags
+- autoload Smarty internal classes
+- fixed file dependency for config files 
+- some code optimizations
+- fixed function definitions on some autoloaded methods
+- fixed nocache variable inside if condition of {if} tag
+
+10/20/2009
+- check at compile time for variable filter to improve rendering speed if no filter is used
+- fixed bug at combination of {elseif} tag and {...} in double quoted strings of static class parameter
+
+10/19/2009
+- fixed compiled template merging on variable double quoted strings as name
+- fixed bug in caching mode 2 and cache_lifetime -1 
+- fixed modifier support on block tags
+
+10/17/2009
+- remove ?>\n<?php and ?><?php sequences from compiled template
+
+10/15/2009
+- buxfix on assigning array elements inside templates
+- parser bugfix on array access
+
+10/15/2009
+- allow bit operator '&' inside {if} tag
+- implementation of ternary operator
+
+10/13/2009
+- do not recompile evaluated templates if reused just with other data
+- recompile config files when config properties did change
+- some lexer/parser otimizations
+
+10/11/2009
+- allow {block} tags inside included templates
+- bugfix for resource plugins in Smarty2 format
+- some optimizations of internal.template.php
+
+10/11/2009
+- fixed bug when template with same name is used with different data objects
+- fixed bug with double quoted name attribute at {insert} tag
+- reenabled assign_by_ref and append_by_ref methods
+
+10/07/2009
+- removed block nesting checks for {capture}
+
+10/05/2009
+- added support of "isinstance" to {if} tag
+
+10/03/2009
+- internal changes to improve performance
+- fix registering of filters for classes
+
+10/01/2009
+- removed default timezone setting
+- reactivated PHP resource for simple PHP templates. Must set allow_php_templates = true to enable
+- {PHP} tag can be enabled by allow_php_tag = true
+
+09/30/2009
+- fixed handling template_exits method for all resource types
+- bugfix for other cache resources than file
+- the methods assign_by_ref is now wrapped to assign, append_by_ref to append
+- allow arrays of variables pass in display, fetch and createTemplate calls
+  $data = array('foo'=>'bar','foo2'=>'blar');
+  $smarty->display('my.tpl',$data);
+
+09/29/2009
+- changed {php} tag handling
+- removed support of Smarty::instance()
+- removed support of PHP resource type
+- improved execution speed of {foreach} tags
+- fixed bug in {section} tag
+
+09/23/2009
+- improvements and bugfix on {include} tag handling
+NOTICE: existing compiled template and cache files must be deleted
+
+09/19/2009
+- replace internal "eval()" calls by "include" during rendering process
+- speed improvment for templates which have included subtemplates
+    the compiled code of included templates is merged into the compiled code of the parent template
+- added logical operator "xor" for {if} tag
+- changed parameter ordering for Smarty2 BC
+    fetch($template, $cache_id = null, $compile_id = null, $parent = null)
+    display($template, $cache_id = null, $compile_id = null, $parent = null)
+    createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
+- property resource_char_set is now replaced by constant SMARTY_RESOURCE_CHAR_SET
+- fixed handling of classes in registered blocks
+- speed improvement of lexer on text sections
+
+09/01/2009
+- dropped nl2br as plugin
+- added '<>' as comparission operator in {if} tags
+- cached caching_lifetime property to cache_liftime for backward compatibility with Smarty2.
+  {include} optional attribute is also now cache_lifetime
+- fixed trigger_error method (moved into Smarty class)
+- version is now  Beta!!!
+
+
+08/30/2009
+- some speed optimizations on loading internal plugins
+
+
+08/29/2009
+- implemented caching of registered Resources
+- new property 'auto_literal'. if true(default)  '{ ' and ' }' interpreted as literal, not as Smarty delimiter
+
+
+08/28/2009
+- Fix on line breaks inside {if} tags
+
+08/26/2009
+- implemented registered resources as in Smarty2. NOTE: caching does not work yet
+- new property 'force_cache'. if true it forces the creation of a new cache file
+- fixed modifiers on arrays
+- some speed optimization on loading internal classes
+
+
+08/24/2009
+- fixed typo in lexer definition for '!==' operator
+- bugfix - the ouput of plugins was not cached
+- added global variable SCRIPT_NAME
+
+08/21/2009
+- fixed problems whitespace in conjuction with custom delimiters
+- Smarty tags can now be used as value anywhere
+
+08/18/2009
+- definition of template class name moded in internal.templatebase.php
+- whitespace parser changes
+
+08/12/2009
+- fixed parser problems
+
+08/11/2009
+- fixed parser problems with custom delimiter
+
+08/10/2009
+- update of mb support in plugins
+
+
+08/09/2009
+- fixed problems with doublequoted strings at name attribute of {block} tag
+- bugfix at scope attribute of {append} tag
+
+08/08/2009
+- removed all internal calls of Smarty::instance()
+- fixed code in double quoted strings
+
+08/05/2009
+- bugfix mb_string support
+- bugfix of \n.\t etc in double quoted strings
+
+07/29/2009
+- added syntax for variable config vars  like  #$foo#
+
+07/28/2009
+- fixed parsing of $smarty.session vars containing objects
+
+07/22/2009
+- fix of "$" handling in double quoted strings
+
+07/21/2009
+- fix that {$smarty.current_dir} return correct value within {block} tags.
+
+07/20/2009
+- drop error message on unmatched {block} {/block} pairs
+
+07/01/2009
+- fixed smarty_function_html_options call in plugin function.html_select_date.php (missing ,)
+
+06/24/2009
+- fixed smarty_function_html_options call in plugin function.html_select_date.php
+
+06/22/2009
+- fix on \n and spaces inside smarty tags
+- removed request_use_auto_globals propert as it is no longer needed because Smarty 3 will always run under PHP 5
+
+
+06/18/2009
+- fixed compilation of block plugins when caching enabled
+- added $smarty.current_dir  which returns the current working directory
+
+06/14/2009
+- fixed array access on super globals
+- allow smarty tags within xml tags
+
+06/13/2009
+- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files
+- update extend resource to handle appen and prepend block attributes
+- instantiate classes of plugins instead of calling them static
+
+06/03/2009
+- fixed repeat at block plugins
+
+05/25/2009
+- fixed problem with caching of compiler plugins
+
+05/14/2009
+- fixed directory separator handling
+
+05/09/2009
+- syntax change for stream variables
+- fixed bug when using absolute template filepath and caching
+
+05/08/2009
+- fixed bug of {nocache}  tag in included templates
+
+05/06/2009
+- allow that plugins_dir folder names can end without directory separator
+
+05/05/2009
+- fixed E_STRICT incompabilities
+- {function} tag bug fix 
+- security policy definitions have been moved from plugins folder to file Security.class.php in libs folder
+- added allow_super_global configuration to security
+
+04/30/2009
+- functions defined with the {function} tag now always have global scope
+
+04/29/2009
+- fixed problem with directory setter methods
+- allow that cache_dir can end without directory separator
+
+04/28/2009
+- the {function} tag can no longer overwrite standard smarty tags
+- inherit functions defined by the {fuction} tag into subtemplates
+- added {while <statement>} sytax to while tag
+
+04/26/2009
+- added trusted stream checking to security
+- internal changes at file dependency check for caching
+
+04/24/2009
+- changed name of {template} tag to {function}
+- added new {template} tag
+
+04/23/2009
+- fixed access of special smarty variables from included template
+
+04/22/2009
+- unified template stream syntax with standard Smarty resource syntax  $smarty->display('mystream:mytemplate')
+
+04/21/2009
+- change of new style syntax for forach. Now:  {foreach $array as $var}  like in PHP
+
+04/20/2009
+- fixed "$foo.bar  ..." variable replacement in double quoted strings
+- fixed error in {include} tag with variable file attribute
+
+04/18/2009
+- added stream resources  ($smarty->display('mystream://mytemplate'))
+- added stream variables  {$mystream:myvar}
+
+04/14/2009
+- fixed compile_id handling on {include} tags
+- fixed append/prepend attributes in {block} tag
+- added  {if  'expression' is in 'array'}  syntax
+- use crc32 as hash for compiled config files.
+
+04/13/2009
+- fixed scope problem with parent variables when appending variables within templates.
+- fixed code for {block} without childs (possible sources for notice errors removed)
+
+04/12/2009
+- added append and prepend attribute to {block} tag
+
+04/11/2009
+- fixed variables in 'file' attribute of {extend} tag
+- fixed problems in modifiers (if mb string functions not present)
+
+04/10/2009
+- check if mb string functions available otherwise fallback to normal string functions
+- added global variable scope SMARTY_GLOBAL_SCOPE 
+- enable 'variable' filter by default
+- fixed {$smarty.block.parent.foo} 
+- implementation of a 'variable' filter as replacement for default modifier
+
+04/09/2009
+- fixed execution of filters defined by classes
+- compile the always the content of {block} tags to make shure that the filters are running over it
+- syntax corrections on variable object property
+- syntax corrections on array access in dot syntax
+
+04/08/2009
+- allow variable object property
+
+04/07/2009
+- changed variable scopes to SMARTY_LOCAL_SCOPE, SMARTY_PARENT_SCOPE, SMARTY_ROOT_SCOPE to avoid possible conflicts with user constants
+- Smarty variable global attribute replaced with scope attribute
+
+04/06/2009
+- variable scopes LOCAL_SCOPE, PARENT_SCOPE, ROOT_SCOPE
+- more getter/setter methods
+
+04/05/2009
+- replaced new array looping syntax {for $foo in $array} with {foreach $foo in $array} to avoid confusion
+- added append array for short form of assign  {$foo[]='bar'} and allow assignments to nested arrays {$foo['bla']['blue']='bar'}
+
+04/04/2009
+- make output of template default handlers cachable and save compiled source
+- some fixes on yesterdays update
+
+04/03/2006
+- added registerDefaultTemplateHandler method and functionallity
+- added registerDefaultPluginHandler method and functionallity
+- added {append} tag to extend Smarty array variabled
+
+04/02/2009
+- added setter/getter methods
+- added $foo@first and $foo@last properties at {for} tag
+- added $set_timezone (true/false) property to setup optionally the default time zone
+
+03/31/2009
+- bugfix smarty.class and internal.security_handler
+- added compile_check configuration 
+- added setter/getter methods
+
+03/30/2009
+- added all major setter/getter methods
+
+03/28/2009
+- {block} tags can be nested now
+- md5 hash function replace with crc32 for speed optimization
+- file order for exted resource inverted
+- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer
+
+03/27/2009
+- added extend resource
+
+03/26/2009
+- fixed parser not to create error on `word` in double quoted strings
+- allow PHP  array(...)
+- implemented  $smarty.block.name.parent to access parent block content
+- fixed smarty.class
+
+
+03/23/2009
+- fixed {foreachelse} and {forelse} tags
+
+03/22/2009
+- fixed possible sources for notice errors
+- rearrange SVN into distribution and development folders
+
+03/21/2009
+- fixed exceptions in function plugins
+- fixed notice error in Smarty.class.php
+- allow chained objects to span multiple lines
+- fixed error in modifers 
+
+03/20/2009
+- moved /plugins folder into /libs folder
+- added noprint modifier
+- autoappend a directory separator if the xxxxx_dir definition have no trailing one
+
+03/19/2009
+- allow array definition as modifer parameter
+- changed modifier to use multi byte string funktions. 
+
+03/17/2009
+- bugfix 
+
+03/15/2009
+- added {include_php} tag for BC
+- removed @ error suppression 
+- bugfix fetch did always repeat output of first call when calling same template several times
+- PHPunit tests extended
+
+03/13/2009
+- changed block syntax to be Smarty like  {block:titel} -> {block name=titel}
+- compiling of {block} and {extend} tags rewriten for better performance
+- added special Smarty variable block  ($smarty.block.foo} returns the parent definition of block foo
+- optimization of {block} tag compiled code.
+- fixed problem with escaped double quotes in double quoted strings
+
+03/12/2009
+- added support of template inheritance by {extend } and {block } tags.
+- bugfix comments within literals
+- added scope attribuie to {include} tag
+
+03/10/2009
+- couple of bugfixes and improvements
+- PHPunit tests extended
+
+03/09/2009
+- added support for global template vars.  {assign_global...}  $smarty->assign_global(...)
+- added direct_access_security
+- PHPunit tests extended
+- added missing {if} tag conditions like "is div by" etc.
+
+03/08/2009
+- splitted up the Compiler class to make it easier to use a coustom compiler
+- made default plugins_dir relative to Smarty root and not current working directory
+- some changes to make the lexer parser better configurable
+- implemented {section} tag for Smarty2 BC
+
+03/07/2009
+- fixed problem with comment tags
+- fixed problem with #xxxx in double quoted string
+- new {while} tag implemented
+- made lexer and paser class configurable as $smarty property
+- Smarty method get_template_vars implemented
+- Smarty method get_registered_object implemented
+- Smarty method trigger_error implemented
+- PHPunit tests extended
+
+03/06/2009
+- final changes on config variable handling
+- parser change - unquoted strings will by be converted into single quoted strings
+- PHPunit tests extended
+- some code cleanup
+- fixed problem on catenate strings with expression
+- update of count_words modifier
+- bugfix on comment tags
+
+
+03/05/2009
+- bugfix on <?xml...> tag with caching enabled
+- changes on exception handling (by Monte)
+
+03/04/2009
+- added support for config variables
+- bugfix on <?xml...> tag
+
+03/02/2009
+- fixed unqouted strings within modifier parameter
+- bugfix parsing of mofifier parameter
+
+03/01/2009
+- modifier chaining works now as in Smarty2
+
+02/28/2009
+- changed handling of unqouted strings
+
+02/26/2009
+- bugfix
+- changed $smarty.capture.foo to be global for Smarty2 BC.
+
+02/24/2009
+- bugfix {php} {/php} tags for backward compatibility
+- bugfix for expressions on arrays
+- fixed usage of "null" value
+- added $smarty.foreach.foo.first and $smarty.foreach.foo.last
+
+02/06/2009
+- bugfix for request variables without index  for example $smarty.get
+- experimental solution for variable functions in static class
+
+02/05/2009
+- update of popup plugin
+- added config variables to template parser (load config functions still missing)
+- parser bugfix for empty quoted strings
+
+02/03/2009
+- allow array of objects as static class variabales.
+- use htmlentities at source output at template errors.
+
+02/02/2009
+- changed search order on modifiers to look at plugins folder first
+- parser bug fix for modifier on array elements  $foo.bar|modifier
+- parser bug fix on single quoted srings
+- internal: splitted up compiler plugin files 
+
+02/01/2009
+- allow method chaining on static classes
+- special Smarty variables  $smarty.... implemented
+- added {PHP} {/PHP} tags for backward compatibility
+
+01/31/2009
+- added {math} plugin for Smarty2 BC
+- added template_exists method
+- changed Smarty3 method enable_security() to enableSecurity() to follow camelCase standards
+
+01/30/2009
+- bugfix in single quoted strings
+- changed syntax for variable property access from $foo:property to $foo@property because of ambiguous syntax at modifiers
+
+01/29/2009
+- syntax for array definition changed from (1,2,3) to [1,2,3] to remove ambiguous syntax
+- allow  {for $foo in [1,2,3]} syntax
+- bugfix in double quoted strings
+- allow <?xml...?> tags in template even if short_tags are enabled
+
+01/28/2009
+- fixed '!==' if condition.
+
+01/28/2009
+- added support of {strip} {/strip} tag.
+
+01/27/2009
+- bug fix on backticks in double quoted strings at objects
+
+01/25/2009
+- Smarty2 modfiers added to SVN
+
+01/25/2009
+- bugfix allow arrays at object properties in Smarty syntax
+- the template object is now passed as additional parameter at plugin calls
+- clear_compiled_tpl method completed
+
+01/20/2009
+- access to class constants implemented  ( class::CONSTANT )
+- access to static class variables implemented ( class::$variable )
+- call of static class methods implemented ( class::method() )
+
+01/16/2009
+- reallow leading _ in variable names  {$_var}
+- allow array of objects  {$array.index->method()} syntax
+- finished work on clear_cache and clear_cache_all methods
+
+01/11/2009
+- added support of {literal} tag
+- added support of {ldelim} and {rdelim} tags
+- make code compatible to run with E_STRICT error setting
+
+01/08/2009
+- moved clear_assign and clear_all_assign to internal.templatebase.php
+- added assign_by_ref, append and append_by_ref methods
+
+01/02/2009
+- added load_filter method
+- fished work on filter handling
+- optimization of plugin loading
+
+12/30/2008
+- added compiler support of registered object 
+- added backtick support in doubled quoted strings for backward compatibility
+- some minor bug fixes and improvments
+
+12/23/2008
+- fixed problem of not working "not" operator in if-expressions
+- added handling of compiler function plugins
+- finished work on (un)register_compiler_function method
+- finished work on (un)register_modifier method
+- plugin handling from plugins folder changed for modifier plugins
+  deleted - internal.modifier.php
+- added modifier chaining to parser 
+
+12/17/2008
+- finished (un)register_function method
+- finished (un)register_block method
+- added security checking for PHP functions in PHP templates
+- plugin handling from plugins folder rewritten
+  new - internal.plugin_handler.php
+  deleted - internal.block.php
+  deleted - internal.function.php
+- removed plugin checking from security handler
+
+12/16/2008
+
+- new start of this change_log file
Index: /tags/2.6.0RC1/include/smarty/libs/Smarty.class.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/Smarty.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/Smarty.class.php	(revision 25596)
@@ -0,0 +1,1528 @@
+<?php
+/**
+ * Project:     Smarty: the PHP compiling template engine
+ * File:        Smarty.class.php
+ * SVN:         $Id: Smarty.class.php 4694 2013-01-13 21:13:14Z uwe.tews@googlemail.com $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ * @version 3.1.13
+ */
+
+/**
+ * define shorthand directory separator constant
+ */
+if (!defined('DS')) {
+    define('DS', DIRECTORY_SEPARATOR);
+}
+
+/**
+ * set SMARTY_DIR to absolute path to Smarty library files.
+ * Sets SMARTY_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_DIR')) {
+    define('SMARTY_DIR', dirname(__FILE__) . DS);
+}
+
+/**
+ * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins.
+ * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_SYSPLUGINS_DIR')) {
+    define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS);
+}
+if (!defined('SMARTY_PLUGINS_DIR')) {
+    define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);
+}
+if (!defined('SMARTY_MBSTRING')) {
+    define('SMARTY_MBSTRING', function_exists('mb_split'));
+}
+if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
+    // UTF-8 can only be done properly when mbstring is available!
+    /**
+     * @deprecated in favor of Smarty::$_CHARSET
+     */
+    define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1');
+}
+if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) {
+    /**
+     * @deprecated in favor of Smarty::$_DATE_FORMAT
+     */
+    define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y');
+}
+
+/**
+ * register the class autoloader
+ */
+if (!defined('SMARTY_SPL_AUTOLOAD')) {
+    define('SMARTY_SPL_AUTOLOAD', 0);
+}
+
+if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) {
+    $registeredAutoLoadFunctions = spl_autoload_functions();
+    if (!isset($registeredAutoLoadFunctions['spl_autoload'])) {
+        spl_autoload_register();
+    }
+} else {
+    spl_autoload_register('smartyAutoload');
+}
+
+/**
+ * Load always needed external class files
+ */
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_data.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_templatebase.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_template.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_resource.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_resource_file.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_cacheresource.php';
+include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_cacheresource_file.php';
+
+/**
+ * This is the main Smarty class
+ * @package Smarty
+ */
+class Smarty extends Smarty_Internal_TemplateBase {
+
+    /**#@+
+     * constant definitions
+     */
+
+    /**
+     * smarty version
+     */
+    const SMARTY_VERSION = 'Smarty-3.1.13';
+
+    /**
+     * define variable scopes
+     */
+    const SCOPE_LOCAL = 0;
+    const SCOPE_PARENT = 1;
+    const SCOPE_ROOT = 2;
+    const SCOPE_GLOBAL = 3;
+    /**
+     * define caching modes
+     */
+    const CACHING_OFF = 0;
+    const CACHING_LIFETIME_CURRENT = 1;
+    const CACHING_LIFETIME_SAVED = 2;
+    /**
+     * define compile check modes
+     */
+    const COMPILECHECK_OFF = 0;
+    const COMPILECHECK_ON = 1;
+    const COMPILECHECK_CACHEMISS = 2;
+    /**
+     * modes for handling of "<?php ... ?>" tags in templates.
+     */
+    const PHP_PASSTHRU = 0; //-> print tags as plain text
+    const PHP_QUOTE = 1; //-> escape tags as entities
+    const PHP_REMOVE = 2; //-> escape tags as entities
+    const PHP_ALLOW = 3; //-> escape tags as entities
+    /**
+     * filter types
+     */
+    const FILTER_POST = 'post';
+    const FILTER_PRE = 'pre';
+    const FILTER_OUTPUT = 'output';
+    const FILTER_VARIABLE = 'variable';
+    /**
+     * plugin types
+     */
+    const PLUGIN_FUNCTION = 'function';
+    const PLUGIN_BLOCK = 'block';
+    const PLUGIN_COMPILER = 'compiler';
+    const PLUGIN_MODIFIER = 'modifier';
+    const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
+
+    /**#@-*/
+
+    /**
+     * assigned global tpl vars
+     */
+    public static $global_tpl_vars = array();
+
+    /**
+     * error handler returned by set_error_hanlder() in Smarty::muteExpectedErrors()
+     */
+    public static $_previous_error_handler = null;
+    /**
+     * contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors()
+     */
+    public static $_muted_directories = array();
+    /**
+     * Flag denoting if Multibyte String functions are available
+     */
+    public static $_MBSTRING = SMARTY_MBSTRING;
+    /**
+     * The character set to adhere to (e.g. "UTF-8")
+     */
+    public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;
+    /**
+     * The date format to be used internally
+     * (accepts date() and strftime())
+     */
+    public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT;
+    /**
+     * Flag denoting if PCRE should run in UTF-8 mode
+     */
+    public static $_UTF8_MODIFIER = 'u';
+
+    /**
+     * Flag denoting if operating system is windows
+     */
+    public static $_IS_WINDOWS = false;
+
+    /**#@+
+     * variables
+     */
+
+    /**
+     * auto literal on delimiters with whitspace
+     * @var boolean
+     */
+    public $auto_literal = true;
+    /**
+     * display error on not assigned variables
+     * @var boolean
+     */
+    public $error_unassigned = false;
+    /**
+     * look up relative filepaths in include_path
+     * @var boolean
+     */
+    public $use_include_path = false;
+    /**
+     * template directory
+     * @var array
+     */
+    private $template_dir = array();
+    /**
+     * joined template directory string used in cache keys
+     * @var string
+     */
+    public $joined_template_dir = null;
+    /**
+     * joined config directory string used in cache keys
+     * @var string
+     */
+    public $joined_config_dir = null;
+    /**
+     * default template handler
+     * @var callable
+     */
+    public $default_template_handler_func = null;
+    /**
+     * default config handler
+     * @var callable
+     */
+    public $default_config_handler_func = null;
+    /**
+     * default plugin handler
+     * @var callable
+     */
+    public $default_plugin_handler_func = null;
+    /**
+     * compile directory
+     * @var string
+     */
+    private $compile_dir = null;
+    /**
+     * plugins directory
+     * @var array
+     */
+    private $plugins_dir = array();
+    /**
+     * cache directory
+     * @var string
+     */
+    private $cache_dir = null;
+    /**
+     * config directory
+     * @var array
+     */
+    private $config_dir = array();
+    /**
+     * force template compiling?
+     * @var boolean
+     */
+    public $force_compile = false;
+    /**
+     * check template for modifications?
+     * @var boolean
+     */
+    public $compile_check = true;
+    /**
+     * use sub dirs for compiled/cached files?
+     * @var boolean
+     */
+    public $use_sub_dirs = false;
+    /**
+     * allow ambiguous resources (that are made unique by the resource handler)
+     * @var boolean
+     */
+    public $allow_ambiguous_resources = false;
+    /**
+     * caching enabled
+     * @var boolean
+     */
+    public $caching = false;
+    /**
+     * merge compiled includes
+     * @var boolean
+     */
+    public $merge_compiled_includes = false;
+    /**
+     * cache lifetime in seconds
+     * @var integer
+     */
+    public $cache_lifetime = 3600;
+    /**
+     * force cache file creation
+     * @var boolean
+     */
+    public $force_cache = false;
+    /**
+     * Set this if you want different sets of cache files for the same
+     * templates.
+     *
+     * @var string
+     */
+    public $cache_id = null;
+    /**
+     * Set this if you want different sets of compiled files for the same
+     * templates.
+     *
+     * @var string
+     */
+    public $compile_id = null;
+    /**
+     * template left-delimiter
+     * @var string
+     */
+    public $left_delimiter = "{";
+    /**
+     * template right-delimiter
+     * @var string
+     */
+    public $right_delimiter = "}";
+    /**#@+
+     * security
+     */
+    /**
+     * class name
+     *
+     * This should be instance of Smarty_Security.
+     *
+     * @var string
+     * @see Smarty_Security
+     */
+    public $security_class = 'Smarty_Security';
+    /**
+     * implementation of security class
+     *
+     * @var Smarty_Security
+     */
+    public $security_policy = null;
+    /**
+     * controls handling of PHP-blocks
+     *
+     * @var integer
+     */
+    public $php_handling = self::PHP_PASSTHRU;
+    /**
+     * controls if the php template file resource is allowed
+     *
+     * @var bool
+     */
+    public $allow_php_templates = false;
+    /**
+     * Should compiled-templates be prevented from being called directly?
+     *
+     * {@internal
+     * Currently used by Smarty_Internal_Template only.
+     * }}
+     *
+     * @var boolean
+     */
+    public $direct_access_security = true;
+    /**#@-*/
+    /**
+     * debug mode
+     *
+     * Setting this to true enables the debug-console.
+     *
+     * @var boolean
+     */
+    public $debugging = false;
+    /**
+     * This determines if debugging is enable-able from the browser.
+     * <ul>
+     *  <li>NONE => no debugging control allowed</li>
+     *  <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
+     * </ul>
+     * @var string
+     */
+    public $debugging_ctrl = 'NONE';
+    /**
+     * Name of debugging URL-param.
+     *
+     * Only used when $debugging_ctrl is set to 'URL'.
+     * The name of the URL-parameter that activates debugging.
+     *
+     * @var type
+     */
+    public $smarty_debug_id = 'SMARTY_DEBUG';
+    /**
+     * Path of debug template.
+     * @var string
+     */
+    public $debug_tpl = null;
+    /**
+     * When set, smarty uses this value as error_reporting-level.
+     * @var int
+     */
+    public $error_reporting = null;
+    /**
+     * Internal flag for getTags()
+     * @var boolean
+     */
+    public $get_used_tags = false;
+
+    /**#@+
+     * config var settings
+     */
+
+    /**
+     * Controls whether variables with the same name overwrite each other.
+     * @var boolean
+     */
+    public $config_overwrite = true;
+    /**
+     * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+     * @var boolean
+     */
+    public $config_booleanize = true;
+    /**
+     * Controls whether hidden config sections/vars are read from the file.
+     * @var boolean
+     */
+    public $config_read_hidden = false;
+
+    /**#@-*/
+
+    /**#@+
+     * resource locking
+     */
+
+    /**
+     * locking concurrent compiles
+     * @var boolean
+     */
+    public $compile_locking = true;
+    /**
+     * Controls whether cache resources should emply locking mechanism
+     * @var boolean
+     */
+    public $cache_locking = false;
+    /**
+     * seconds to wait for acquiring a lock before ignoring the write lock
+     * @var float
+     */
+    public $locking_timeout = 10;
+
+    /**#@-*/
+
+    /**
+     * global template functions
+     * @var array
+     */
+    public $template_functions = array();
+    /**
+     * resource type used if none given
+     *
+     * Must be an valid key of $registered_resources.
+     * @var string
+     */
+    public $default_resource_type = 'file';
+    /**
+     * caching type
+     *
+     * Must be an element of $cache_resource_types.
+     *
+     * @var string
+     */
+    public $caching_type = 'file';
+    /**
+     * internal config properties
+     * @var array
+     */
+    public $properties = array();
+    /**
+     * config type
+     * @var string
+     */
+    public $default_config_type = 'file';
+    /**
+     * cached template objects
+     * @var array
+     */
+    public $template_objects = array();
+    /**
+     * check If-Modified-Since headers
+     * @var boolean
+     */
+    public $cache_modified_check = false;
+    /**
+     * registered plugins
+     * @var array
+     */
+    public $registered_plugins = array();
+    /**
+     * plugin search order
+     * @var array
+     */
+    public $plugin_search_order = array('function', 'block', 'compiler', 'class');
+    /**
+     * registered objects
+     * @var array
+     */
+    public $registered_objects = array();
+    /**
+     * registered classes
+     * @var array
+     */
+    public $registered_classes = array();
+    /**
+     * registered filters
+     * @var array
+     */
+    public $registered_filters = array();
+    /**
+     * registered resources
+     * @var array
+     */
+    public $registered_resources = array();
+    /**
+     * resource handler cache
+     * @var array
+     */
+    public $_resource_handlers = array();
+    /**
+     * registered cache resources
+     * @var array
+     */
+    public $registered_cache_resources = array();
+    /**
+     * cache resource handler cache
+     * @var array
+     */
+    public $_cacheresource_handlers = array();
+    /**
+     * autoload filter
+     * @var array
+     */
+    public $autoload_filters = array();
+    /**
+     * default modifier
+     * @var array
+     */
+    public $default_modifiers = array();
+    /**
+     * autoescape variable output
+     * @var boolean
+     */
+    public $escape_html = false;
+    /**
+     * global internal smarty vars
+     * @var array
+     */
+    public static $_smarty_vars = array();
+    /**
+     * start time for execution time calculation
+     * @var int
+     */
+    public $start_time = 0;
+    /**
+     * default file permissions
+     * @var int
+     */
+    public $_file_perms = 0644;
+    /**
+     * default dir permissions
+     * @var int
+     */
+    public $_dir_perms = 0771;
+    /**
+     * block tag hierarchy
+     * @var array
+     */
+    public $_tag_stack = array();
+    /**
+     * self pointer to Smarty object
+     * @var Smarty
+     */
+    public $smarty;
+    /**
+     * required by the compiler for BC
+     * @var string
+     */
+    public $_current_file = null;
+    /**
+     * internal flag to enable parser debugging
+     * @var bool
+     */
+    public $_parserdebug = false;
+    /**
+     * Saved parameter of merged templates during compilation
+     *
+     * @var array
+     */
+    public $merged_templates_func = array();
+    /**#@-*/
+
+    /**
+     * Initialize new Smarty object
+     *
+     */
+    public function __construct()
+    {
+        // selfpointer needed by some other class methods
+        $this->smarty = $this;
+        if (is_callable('mb_internal_encoding')) {
+            mb_internal_encoding(Smarty::$_CHARSET);
+        }
+        $this->start_time = microtime(true);
+        // set default dirs
+        $this->setTemplateDir('.' . DS . 'templates' . DS)
+            ->setCompileDir('.' . DS . 'templates_c' . DS)
+            ->setPluginsDir(SMARTY_PLUGINS_DIR)
+            ->setCacheDir('.' . DS . 'cache' . DS)
+            ->setConfigDir('.' . DS . 'configs' . DS);
+
+        $this->debug_tpl = 'file:' . dirname(__FILE__) . '/debug.tpl';
+        if (isset($_SERVER['SCRIPT_NAME'])) {
+            $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
+        }
+    }
+
+
+    /**
+     * Class destructor
+     */
+    public function __destruct()
+    {
+        // intentionally left blank
+    }
+
+    /**
+     * <<magic>> set selfpointer on cloned object
+     */
+    public function __clone()
+    {
+        $this->smarty = $this;
+    }
+
+
+    /**
+     * <<magic>> Generic getter.
+     *
+     * Calls the appropriate getter function.
+     * Issues an E_USER_NOTICE if no valid getter is found.
+     *
+     * @param string $name property name
+     * @return mixed
+     */
+    public function __get($name)
+    {
+        $allowed = array(
+        'template_dir' => 'getTemplateDir',
+        'config_dir' => 'getConfigDir',
+        'plugins_dir' => 'getPluginsDir',
+        'compile_dir' => 'getCompileDir',
+        'cache_dir' => 'getCacheDir',
+        );
+
+        if (isset($allowed[$name])) {
+            return $this->{$allowed[$name]}();
+        } else {
+            trigger_error('Undefined property: '. get_class($this) .'::$'. $name, E_USER_NOTICE);
+        }
+    }
+
+    /**
+     * <<magic>> Generic setter.
+     *
+     * Calls the appropriate setter function.
+     * Issues an E_USER_NOTICE if no valid setter is found.
+     *
+     * @param string $name  property name
+     * @param mixed  $value parameter passed to setter
+     */
+    public function __set($name, $value)
+    {
+        $allowed = array(
+        'template_dir' => 'setTemplateDir',
+        'config_dir' => 'setConfigDir',
+        'plugins_dir' => 'setPluginsDir',
+        'compile_dir' => 'setCompileDir',
+        'cache_dir' => 'setCacheDir',
+        );
+
+        if (isset($allowed[$name])) {
+            $this->{$allowed[$name]}($value);
+        } else {
+            trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
+        }
+    }
+
+    /**
+     * Check if a template resource exists
+     *
+     * @param string $resource_name template name
+     * @return boolean status
+     */
+    public function templateExists($resource_name)
+    {
+        // create template object
+        $save = $this->template_objects;
+        $tpl = new $this->template_class($resource_name, $this);
+        // check if it does exists
+        $result = $tpl->source->exists;
+        $this->template_objects = $save;
+        return $result;
+    }
+
+    /**
+     * Returns a single or all global  variables
+     *
+     * @param object $smarty
+     * @param string $varname variable name or null
+     * @return string variable value or or array of variables
+     */
+    public function getGlobal($varname = null)
+    {
+        if (isset($varname)) {
+            if (isset(self::$global_tpl_vars[$varname])) {
+                return self::$global_tpl_vars[$varname]->value;
+            } else {
+                return '';
+            }
+        } else {
+            $_result = array();
+            foreach (self::$global_tpl_vars AS $key => $var) {
+                $_result[$key] = $var->value;
+            }
+            return $_result;
+        }
+    }
+
+    /**
+     * Empty cache folder
+     *
+     * @param integer $exp_time expiration time
+     * @param string  $type     resource type
+     * @return integer number of cache files deleted
+     */
+    function clearAllCache($exp_time = null, $type = null)
+    {
+        // load cache resource and call clearAll
+        $_cache_resource = Smarty_CacheResource::load($this, $type);
+        Smarty_CacheResource::invalidLoadedCache($this);
+        return $_cache_resource->clearAll($this, $exp_time);
+    }
+
+    /**
+     * Empty cache for a specific template
+     *
+     * @param string  $template_name template name
+     * @param string  $cache_id      cache id
+     * @param string  $compile_id    compile id
+     * @param integer $exp_time      expiration time
+     * @param string  $type          resource type
+     * @return integer number of cache files deleted
+     */
+    public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
+    {
+        // load cache resource and call clear
+        $_cache_resource = Smarty_CacheResource::load($this, $type);
+        Smarty_CacheResource::invalidLoadedCache($this);
+        return $_cache_resource->clear($this, $template_name, $cache_id, $compile_id, $exp_time);
+    }
+
+    /**
+     * Loads security class and enables security
+     *
+     * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+     * @return Smarty current Smarty instance for chaining
+     * @throws SmartyException when an invalid class name is provided
+     */
+    public function enableSecurity($security_class = null)
+    {
+        if ($security_class instanceof Smarty_Security) {
+            $this->security_policy = $security_class;
+            return $this;
+        } elseif (is_object($security_class)) {
+            throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
+        }
+        if ($security_class == null) {
+            $security_class = $this->security_class;
+        }
+        if (!class_exists($security_class)) {
+            throw new SmartyException("Security class '$security_class' is not defined");
+        } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) {
+            throw new SmartyException("Class '$security_class' must extend Smarty_Security.");
+        } else {
+            $this->security_policy = new $security_class($this);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Disable security
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function disableSecurity()
+    {
+        $this->security_policy = null;
+
+        return $this;
+    }
+
+    /**
+     * Set template directory
+     *
+     * @param string|array $template_dir directory(s) of template sources
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setTemplateDir($template_dir)
+    {
+        $this->template_dir = array();
+        foreach ((array) $template_dir as $k => $v) {
+            $this->template_dir[$k] = rtrim($v, '/\\') . DS;
+        }
+
+        $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir);
+        return $this;
+    }
+
+    /**
+     * Add template directory(s)
+     *
+     * @param string|array $template_dir directory(s) of template sources
+     * @param string       $key          of the array element to assign the template dir to
+     * @return Smarty current Smarty instance for chaining
+     * @throws SmartyException when the given template directory is not valid
+     */
+    public function addTemplateDir($template_dir, $key=null)
+    {
+        // make sure we're dealing with an array
+        $this->template_dir = (array) $this->template_dir;
+
+        if (is_array($template_dir)) {
+            foreach ($template_dir as $k => $v) {
+                if (is_int($k)) {
+                    // indexes are not merged but appended
+                    $this->template_dir[] = rtrim($v, '/\\') . DS;
+                } else {
+                    // string indexes are overridden
+                    $this->template_dir[$k] = rtrim($v, '/\\') . DS;
+                }
+            }
+        } elseif ($key !== null) {
+            // override directory at specified index
+            $this->template_dir[$key] = rtrim($template_dir, '/\\') . DS;
+        } else {
+            // append new directory
+            $this->template_dir[] = rtrim($template_dir, '/\\') . DS;
+        }
+        $this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir);
+        return $this;
+    }
+
+    /**
+     * Get template directories
+     *
+     * @param mixed index of directory to get, null to get all
+     * @return array|string list of template directories, or directory of $index
+     */
+    public function getTemplateDir($index=null)
+    {
+        if ($index !== null) {
+            return isset($this->template_dir[$index]) ? $this->template_dir[$index] : null;
+        }
+
+        return (array)$this->template_dir;
+    }
+
+    /**
+     * Set config directory
+     *
+     * @param string|array $template_dir directory(s) of configuration sources
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setConfigDir($config_dir)
+    {
+        $this->config_dir = array();
+        foreach ((array) $config_dir as $k => $v) {
+            $this->config_dir[$k] = rtrim($v, '/\\') . DS;
+        }
+
+        $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir);
+        return $this;
+    }
+
+    /**
+     * Add config directory(s)
+     *
+     * @param string|array $config_dir directory(s) of config sources
+     * @param string key of the array element to assign the config dir to
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function addConfigDir($config_dir, $key=null)
+    {
+        // make sure we're dealing with an array
+        $this->config_dir = (array) $this->config_dir;
+
+        if (is_array($config_dir)) {
+            foreach ($config_dir as $k => $v) {
+                if (is_int($k)) {
+                    // indexes are not merged but appended
+                    $this->config_dir[] = rtrim($v, '/\\') . DS;
+                } else {
+                    // string indexes are overridden
+                    $this->config_dir[$k] = rtrim($v, '/\\') . DS;
+                }
+            }
+        } elseif( $key !== null ) {
+            // override directory at specified index
+            $this->config_dir[$key] = rtrim($config_dir, '/\\') . DS;
+        } else {
+            // append new directory
+            $this->config_dir[] = rtrim($config_dir, '/\\') . DS;
+        }
+
+        $this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir);
+        return $this;
+    }
+
+    /**
+     * Get config directory
+     *
+     * @param mixed index of directory to get, null to get all
+     * @return array|string configuration directory
+     */
+    public function getConfigDir($index=null)
+    {
+        if ($index !== null) {
+            return isset($this->config_dir[$index]) ? $this->config_dir[$index] : null;
+        }
+
+        return (array)$this->config_dir;
+    }
+
+    /**
+     * Set plugins directory
+     *
+     * @param string|array $plugins_dir directory(s) of plugins
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setPluginsDir($plugins_dir)
+    {
+        $this->plugins_dir = array();
+        foreach ((array)$plugins_dir as $k => $v) {
+            $this->plugins_dir[$k] = rtrim($v, '/\\') . DS;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Adds directory of plugin files
+     *
+     * @param object $smarty
+     * @param string $ |array $ plugins folder
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function addPluginsDir($plugins_dir)
+    {
+        // make sure we're dealing with an array
+        $this->plugins_dir = (array) $this->plugins_dir;
+
+        if (is_array($plugins_dir)) {
+            foreach ($plugins_dir as $k => $v) {
+                if (is_int($k)) {
+                    // indexes are not merged but appended
+                    $this->plugins_dir[] = rtrim($v, '/\\') . DS;
+                } else {
+                    // string indexes are overridden
+                    $this->plugins_dir[$k] = rtrim($v, '/\\') . DS;
+                }
+            }
+        } else {
+            // append new directory
+            $this->plugins_dir[] = rtrim($plugins_dir, '/\\') . DS;
+        }
+
+        $this->plugins_dir = array_unique($this->plugins_dir);
+        return $this;
+    }
+
+    /**
+     * Get plugin directories
+     *
+     * @return array list of plugin directories
+     */
+    public function getPluginsDir()
+    {
+        return (array)$this->plugins_dir;
+    }
+
+    /**
+     * Set compile directory
+     *
+     * @param string $compile_dir directory to store compiled templates in
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setCompileDir($compile_dir)
+    {
+        $this->compile_dir = rtrim($compile_dir, '/\\') . DS;
+        if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
+            Smarty::$_muted_directories[$this->compile_dir] = null;
+        }
+        return $this;
+    }
+
+    /**
+     * Get compiled directory
+     *
+     * @return string path to compiled templates
+     */
+    public function getCompileDir()
+    {
+        return $this->compile_dir;
+    }
+
+    /**
+     * Set cache directory
+     *
+     * @param string $cache_dir directory to store cached templates in
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setCacheDir($cache_dir)
+    {
+        $this->cache_dir = rtrim($cache_dir, '/\\') . DS;
+        if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
+            Smarty::$_muted_directories[$this->cache_dir] = null;
+        }
+        return $this;
+    }
+
+    /**
+     * Get cache directory
+     *
+     * @return string path of cache directory
+     */
+    public function getCacheDir()
+    {
+        return $this->cache_dir;
+    }
+
+    /**
+     * Set default modifiers
+     *
+     * @param array|string $modifiers modifier or list of modifiers to set
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setDefaultModifiers($modifiers)
+    {
+        $this->default_modifiers = (array) $modifiers;
+        return $this;
+    }
+
+    /**
+     * Add default modifiers
+     *
+     * @param array|string $modifiers modifier or list of modifiers to add
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function addDefaultModifiers($modifiers)
+    {
+        if (is_array($modifiers)) {
+            $this->default_modifiers = array_merge($this->default_modifiers, $modifiers);
+        } else {
+            $this->default_modifiers[] = $modifiers;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Get default modifiers
+     *
+     * @return array list of default modifiers
+     */
+    public function getDefaultModifiers()
+    {
+        return $this->default_modifiers;
+    }
+
+
+    /**
+     * Set autoload filters
+     *
+     * @param array $filters filters to load automatically
+     * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function setAutoloadFilters($filters, $type=null)
+    {
+        if ($type !== null) {
+            $this->autoload_filters[$type] = (array) $filters;
+        } else {
+            $this->autoload_filters = (array) $filters;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Add autoload filters
+     *
+     * @param array $filters filters to load automatically
+     * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+     * @return Smarty current Smarty instance for chaining
+     */
+    public function addAutoloadFilters($filters, $type=null)
+    {
+        if ($type !== null) {
+            if (!empty($this->autoload_filters[$type])) {
+                $this->autoload_filters[$type] = array_merge($this->autoload_filters[$type], (array) $filters);
+            } else {
+                $this->autoload_filters[$type] = (array) $filters;
+            }
+        } else {
+            foreach ((array) $filters as $key => $value) {
+                if (!empty($this->autoload_filters[$key])) {
+                    $this->autoload_filters[$key] = array_merge($this->autoload_filters[$key], (array) $value);
+                } else {
+                    $this->autoload_filters[$key] = (array) $value;
+                }
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Get autoload filters
+     *
+     * @param string $type type of filter to get autoloads for. Defaults to all autoload filters
+     * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified
+     */
+    public function getAutoloadFilters($type=null)
+    {
+        if ($type !== null) {
+            return isset($this->autoload_filters[$type]) ? $this->autoload_filters[$type] : array();
+        }
+
+        return $this->autoload_filters;
+    }
+
+    /**
+     * return name of debugging template
+     *
+     * @return string
+     */
+    public function getDebugTemplate()
+    {
+        return $this->debug_tpl;
+    }
+
+    /**
+     * set the debug template
+     *
+     * @param string $tpl_name
+     * @return Smarty current Smarty instance for chaining
+     * @throws SmartyException if file is not readable
+     */
+    public function setDebugTemplate($tpl_name)
+    {
+        if (!is_readable($tpl_name)) {
+            throw new SmartyException("Unknown file '{$tpl_name}'");
+        }
+        $this->debug_tpl = $tpl_name;
+
+        return $this;
+    }
+
+    /**
+     * creates a template object
+     *
+     * @param string $template the resource handle of the template file
+     * @param mixed $cache_id cache id to be used with this template
+     * @param mixed $compile_id compile id to be used with this template
+     * @param object $parent next higher level of Smarty variables
+     * @param boolean $do_clone flag is Smarty object shall be cloned
+     * @return object template object
+     */
+    public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
+    {
+        if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) {
+            $parent = $cache_id;
+            $cache_id = null;
+        }
+        if (!empty($parent) && is_array($parent)) {
+            $data = $parent;
+            $parent = null;
+        } else {
+            $data = null;
+        }
+        // default to cache_id and compile_id of Smarty object
+        $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
+        $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
+        // already in template cache?
+        if ($this->allow_ambiguous_resources) {
+            $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id;
+        } else {
+            $_templateId = $this->joined_template_dir . '#' . $template . $cache_id . $compile_id;
+        }
+        if (isset($_templateId[150])) {
+            $_templateId = sha1($_templateId);
+        }
+        if ($do_clone) {
+            if (isset($this->template_objects[$_templateId])) {
+                // return cached template object
+                $tpl = clone $this->template_objects[$_templateId];
+                $tpl->smarty = clone $tpl->smarty;
+                $tpl->parent = $parent;
+                $tpl->tpl_vars = array();
+                $tpl->config_vars = array();
+            } else {
+                $tpl = new $this->template_class($template, clone $this, $parent, $cache_id, $compile_id);
+            }
+        } else {
+            if (isset($this->template_objects[$_templateId])) {
+                // return cached template object
+                $tpl = $this->template_objects[$_templateId];
+                $tpl->parent = $parent;
+                $tpl->tpl_vars = array();
+                $tpl->config_vars = array();
+            } else {
+                $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id);
+            }
+        }
+        // fill data if present
+        if (!empty($data) && is_array($data)) {
+            // set up variable values
+            foreach ($data as $_key => $_val) {
+                $tpl->tpl_vars[$_key] = new Smarty_variable($_val);
+            }
+        }
+        return $tpl;
+    }
+
+
+    /**
+     * Takes unknown classes and loads plugin files for them
+     * class name format: Smarty_PluginType_PluginName
+     * plugin filename format: plugintype.pluginname.php
+     *
+     * @param string $plugin_name    class plugin name to load
+     * @param bool   $check          check if already loaded
+     * @return string |boolean filepath of loaded file or false
+     */
+    public function loadPlugin($plugin_name, $check = true)
+    {
+        // if function or class exists, exit silently (already loaded)
+        if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) {
+            return true;
+        }
+        // Plugin name is expected to be: Smarty_[Type]_[Name]
+        $_name_parts = explode('_', $plugin_name, 3);
+        // class name must have three parts to be valid plugin
+        // count($_name_parts) < 3 === !isset($_name_parts[2])
+        if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') {
+            throw new SmartyException("plugin {$plugin_name} is not a valid name format");
+            return false;
+        }
+        // if type is "internal", get plugin from sysplugins
+        if (strtolower($_name_parts[1]) == 'internal') {
+            $file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php';
+            if (file_exists($file)) {
+                require_once($file);
+                return $file;
+            } else {
+                return false;
+            }
+        }
+        // plugin filename is expected to be: [type].[name].php
+        $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php";
+
+        $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+
+        // loop through plugin dirs and find the plugin
+        foreach($this->getPluginsDir() as $_plugin_dir) {
+            $names = array(
+                $_plugin_dir . $_plugin_filename,
+                $_plugin_dir . strtolower($_plugin_filename),
+            );
+            foreach ($names as $file) {
+                if (file_exists($file)) {
+                    require_once($file);
+                    return $file;
+                }
+                if ($this->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
+                    // try PHP include_path
+                    if ($_stream_resolve_include_path) {
+                        $file = stream_resolve_include_path($file);
+                    } else {
+                        $file = Smarty_Internal_Get_Include_Path::getIncludePath($file);
+                    }
+
+                    if ($file !== false) {
+                        require_once($file);
+                        return $file;
+                    }
+                }
+            }
+        }
+        // no plugin loaded
+        return false;
+    }
+
+    /**
+     * Compile all template files
+     *
+     * @param string $extension file extension
+     * @param bool $force_compile force all to recompile
+     * @param int $time_limit
+     * @param int $max_errors
+     * @return integer number of template files recompiled
+     */
+    public function compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
+    {
+        return Smarty_Internal_Utility::compileAllTemplates($extention, $force_compile, $time_limit, $max_errors, $this);
+    }
+
+    /**
+     * Compile all config files
+     *
+     * @param string $extension file extension
+     * @param bool $force_compile force all to recompile
+     * @param int $time_limit
+     * @param int $max_errors
+     * @return integer number of template files recompiled
+     */
+    public function compileAllConfig($extention = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
+    {
+        return Smarty_Internal_Utility::compileAllConfig($extention, $force_compile, $time_limit, $max_errors, $this);
+    }
+
+    /**
+     * Delete compiled template file
+     *
+     * @param string $resource_name template name
+     * @param string $compile_id compile id
+     * @param integer $exp_time expiration time
+     * @return integer number of template files deleted
+     */
+    public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
+    {
+        return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this);
+    }
+
+
+    /**
+     * Return array of tag/attributes of all tags used by an template
+     *
+     * @param object $templae template object
+     * @return array of tag/attributes
+     */
+    public function getTags(Smarty_Internal_Template $template)
+    {
+        return Smarty_Internal_Utility::getTags($template);
+    }
+
+    /**
+     * Run installation test
+     *
+     * @param array $errors Array to write errors into, rather than outputting them
+     * @return boolean true if setup is fine, false if something is wrong
+     */
+    public function testInstall(&$errors=null)
+    {
+        return Smarty_Internal_Utility::testInstall($this, $errors);
+    }
+
+    /**
+     * Error Handler to mute expected messages
+     *
+     * @link http://php.net/set_error_handler
+     * @param integer $errno Error level
+     * @return boolean
+     */
+    public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
+    {
+        $_is_muted_directory = false;
+
+        // add the SMARTY_DIR to the list of muted directories
+        if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) {
+            $smarty_dir = realpath(SMARTY_DIR);
+            if ($smarty_dir !== false) {
+                Smarty::$_muted_directories[SMARTY_DIR] = array(
+                    'file' => $smarty_dir,
+                    'length' => strlen($smarty_dir),
+                );
+            }
+        }
+
+        // walk the muted directories and test against $errfile
+        foreach (Smarty::$_muted_directories as $key => &$dir) {
+            if (!$dir) {
+                // resolve directory and length for speedy comparisons
+                $file = realpath($key);
+                if ($file === false) {
+                    // this directory does not exist, remove and skip it
+                    unset(Smarty::$_muted_directories[$key]);
+                    continue;
+                }
+                $dir = array(
+                    'file' => $file,
+                    'length' => strlen($file),
+                );
+            }
+            if (!strncmp($errfile, $dir['file'], $dir['length'])) {
+                $_is_muted_directory = true;
+                break;
+            }
+        }
+
+        // pass to next error handler if this error did not occur inside SMARTY_DIR
+        // or the error was within smarty but masked to be ignored
+        if (!$_is_muted_directory || ($errno && $errno & error_reporting())) {
+            if (Smarty::$_previous_error_handler) {
+                return call_user_func(Smarty::$_previous_error_handler, $errno, $errstr, $errfile, $errline, $errcontext);
+            } else {
+                return false;
+            }
+        }
+    }
+
+    /**
+     * Enable error handler to mute expected messages
+     *
+     * @return void
+     */
+    public static function muteExpectedErrors()
+    {
+        /*
+            error muting is done because some people implemented custom error_handlers using
+            http://php.net/set_error_handler and for some reason did not understand the following paragraph:
+
+                It is important to remember that the standard PHP error handler is completely bypassed for the
+                error types specified by error_types unless the callback function returns FALSE.
+                error_reporting() settings will have no effect and your error handler will be called regardless -
+                however you are still able to read the current value of error_reporting and act appropriately.
+                Of particular note is that this value will be 0 if the statement that caused the error was
+                prepended by the @ error-control operator.
+
+            Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include
+                - @filemtime() is almost twice as fast as using an additional file_exists()
+                - between file_exists() and filemtime() a possible race condition is opened,
+                  which does not exist using the simple @filemtime() approach.
+        */
+        $error_handler = array('Smarty', 'mutingErrorHandler');
+        $previous = set_error_handler($error_handler);
+
+        // avoid dead loops
+        if ($previous !== $error_handler) {
+            Smarty::$_previous_error_handler = $previous;
+        }
+    }
+
+    /**
+     * Disable error handler muting expected messages
+     *
+     * @return void
+     */
+    public static function unmuteExpectedErrors()
+    {
+        restore_error_handler();
+    }
+}
+
+// Check if we're running on windows
+Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+
+// let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
+if (Smarty::$_CHARSET !== 'UTF-8') {
+    Smarty::$_UTF8_MODIFIER = '';
+}
+
+/**
+ * Smarty exception class
+ * @package Smarty
+ */
+class SmartyException extends Exception {
+    public static $escape = true;
+    public function __construct($message) {
+        $this->message = self::$escape ? htmlentities($message) : $message;
+    }
+}
+
+/**
+ * Smarty compiler exception class
+ * @package Smarty
+ */
+class SmartyCompilerException extends SmartyException  {
+}
+
+/**
+ * Autoloader
+ */
+function smartyAutoload($class)
+{
+    $_class = strtolower($class);
+    $_classes = array(
+        'smarty_config_source' => true,
+        'smarty_config_compiled' => true,
+        'smarty_security' => true,
+        'smarty_cacheresource' => true,
+        'smarty_cacheresource_custom' => true,
+        'smarty_cacheresource_keyvaluestore' => true,
+        'smarty_resource' => true,
+        'smarty_resource_custom' => true,
+        'smarty_resource_uncompiled' => true,
+        'smarty_resource_recompiled' => true,
+    );
+
+    if (!strncmp($_class, 'smarty_internal_', 16) || isset($_classes[$_class])) {
+        include SMARTY_SYSPLUGINS_DIR . $_class . '.php';
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/SmartyBC.class.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/SmartyBC.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/SmartyBC.class.php	(revision 25596)
@@ -0,0 +1,460 @@
+<?php
+/**
+ * Project:     Smarty: the PHP compiling template engine
+ * File:        SmartyBC.class.php
+ * SVN:         $Id: $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ */
+/**
+ * @ignore
+ */
+require(dirname(__FILE__) . '/Smarty.class.php');
+
+/**
+ * Smarty Backward Compatability Wrapper Class
+ *
+ * @package Smarty
+ */
+class SmartyBC extends Smarty {
+
+    /**
+     * Smarty 2 BC
+     * @var string
+     */
+    public $_version = self::SMARTY_VERSION;
+
+    /**
+     * Initialize new SmartyBC object
+     *
+     * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
+     */
+    public function __construct(array $options=array())
+    {
+        parent::__construct($options);
+        // register {php} tag
+        $this->registerPlugin('block', 'php', 'smarty_php_tag');
+    }
+
+    /**
+     * wrapper for assign_by_ref
+     *
+     * @param string $tpl_var the template variable name
+     * @param mixed  &$value  the referenced value to assign
+     */
+    public function assign_by_ref($tpl_var, &$value)
+    {
+        $this->assignByRef($tpl_var, $value);
+    }
+
+    /**
+     * wrapper for append_by_ref
+     *
+     * @param string  $tpl_var the template variable name
+     * @param mixed   &$value  the referenced value to append
+     * @param boolean $merge   flag if array elements shall be merged
+     */
+    public function append_by_ref($tpl_var, &$value, $merge = false)
+    {
+        $this->appendByRef($tpl_var, $value, $merge);
+    }
+
+    /**
+     * clear the given assigned template variable.
+     *
+     * @param string $tpl_var the template variable to clear
+     */
+    public function clear_assign($tpl_var)
+    {
+        $this->clearAssign($tpl_var);
+    }
+
+    /**
+     * Registers custom function to be used in templates
+     *
+     * @param string $function      the name of the template function
+     * @param string $function_impl the name of the PHP function to register
+     * @param bool   $cacheable
+     * @param mixed  $cache_attrs
+     */
+    public function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null)
+    {
+        $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
+    }
+
+    /**
+     * Unregisters custom function
+     *
+     * @param string $function name of template function
+     */
+    public function unregister_function($function)
+    {
+        $this->unregisterPlugin('function', $function);
+    }
+
+    /**
+     * Registers object to be used in templates
+     *
+     * @param string  $object      name of template object
+     * @param object  $object_impl the referenced PHP object to register
+     * @param array   $allowed     list of allowed methods (empty = all)
+     * @param boolean $smarty_args smarty argument format, else traditional
+     * @param array   $block_functs list of methods that are block format
+     */
+    public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+    {
+        settype($allowed, 'array');
+        settype($smarty_args, 'boolean');
+        $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
+    }
+
+    /**
+     * Unregisters object
+     *
+     * @param string $object name of template object
+     */
+    public function unregister_object($object)
+    {
+        $this->unregisterObject($object);
+    }
+
+    /**
+     * Registers block function to be used in templates
+     *
+     * @param string $block      name of template block
+     * @param string $block_impl PHP function to register
+     * @param bool   $cacheable
+     * @param mixed  $cache_attrs
+     */
+    public function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)
+    {
+        $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
+    }
+
+    /**
+     * Unregisters block function
+     *
+     * @param string $block name of template function
+     */
+    public function unregister_block($block)
+    {
+        $this->unregisterPlugin('block', $block);
+    }
+
+    /**
+     * Registers compiler function
+     *
+     * @param string $function      name of template function
+     * @param string $function_impl name of PHP function to register
+     * @param bool   $cacheable
+     */
+    public function register_compiler_function($function, $function_impl, $cacheable=true)
+    {
+        $this->registerPlugin('compiler', $function, $function_impl, $cacheable);
+    }
+
+    /**
+     * Unregisters compiler function
+     *
+     * @param string $function name of template function
+     */
+    public function unregister_compiler_function($function)
+    {
+        $this->unregisterPlugin('compiler', $function);
+    }
+
+    /**
+     * Registers modifier to be used in templates
+     *
+     * @param string $modifier name of template modifier
+     * @param string $modifier_impl name of PHP function to register
+     */
+    public function register_modifier($modifier, $modifier_impl)
+    {
+        $this->registerPlugin('modifier', $modifier, $modifier_impl);
+    }
+
+    /**
+     * Unregisters modifier
+     *
+     * @param string $modifier name of template modifier
+     */
+    public function unregister_modifier($modifier)
+    {
+        $this->unregisterPlugin('modifier', $modifier);
+    }
+
+    /**
+     * Registers a resource to fetch a template
+     *
+     * @param string $type      name of resource
+     * @param array  $functions array of functions to handle resource
+     */
+    public function register_resource($type, $functions)
+    {
+        $this->registerResource($type, $functions);
+    }
+
+    /**
+     * Unregisters a resource
+     *
+     * @param string $type name of resource
+     */
+    public function unregister_resource($type)
+    {
+        $this->unregisterResource($type);
+    }
+
+    /**
+     * Registers a prefilter function to apply
+     * to a template before compiling
+     *
+     * @param callable $function
+     */
+    public function register_prefilter($function)
+    {
+        $this->registerFilter('pre', $function);
+    }
+
+    /**
+     * Unregisters a prefilter function
+     *
+     * @param callable $function
+     */
+    public function unregister_prefilter($function)
+    {
+        $this->unregisterFilter('pre', $function);
+    }
+
+    /**
+     * Registers a postfilter function to apply
+     * to a compiled template after compilation
+     *
+     * @param callable $function
+     */
+    public function register_postfilter($function)
+    {
+        $this->registerFilter('post', $function);
+    }
+
+    /**
+     * Unregisters a postfilter function
+     *
+     * @param callable $function
+     */
+    public function unregister_postfilter($function)
+    {
+        $this->unregisterFilter('post', $function);
+    }
+
+    /**
+     * Registers an output filter function to apply
+     * to a template output
+     *
+     * @param callable $function
+     */
+    public function register_outputfilter($function)
+    {
+        $this->registerFilter('output', $function);
+    }
+
+    /**
+     * Unregisters an outputfilter function
+     *
+     * @param callable $function
+     */
+    public function unregister_outputfilter($function)
+    {
+        $this->unregisterFilter('output', $function);
+    }
+
+    /**
+     * load a filter of specified type and name
+     *
+     * @param string $type filter type
+     * @param string $name filter name
+     */
+    public function load_filter($type, $name)
+    {
+        $this->loadFilter($type, $name);
+    }
+
+    /**
+     * clear cached content for the given template and cache id
+     *
+     * @param string $tpl_file   name of template file
+     * @param string $cache_id   name of cache_id
+     * @param string $compile_id name of compile_id
+     * @param string $exp_time   expiration time
+     * @return boolean
+     */
+    public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
+    {
+        return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
+    }
+
+    /**
+     * clear the entire contents of cache (all templates)
+     *
+     * @param string $exp_time expire time
+     * @return boolean
+     */
+    public function clear_all_cache($exp_time = null)
+    {
+        return $this->clearCache(null, null, null, $exp_time);
+    }
+
+    /**
+     * test to see if valid cache exists for this template
+     *
+     * @param string $tpl_file name of template file
+     * @param string $cache_id
+     * @param string $compile_id
+     * @return boolean
+     */
+    public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
+    {
+        return $this->isCached($tpl_file, $cache_id, $compile_id);
+    }
+
+    /**
+     * clear all the assigned template variables.
+     */
+    public function clear_all_assign()
+    {
+        $this->clearAllAssign();
+    }
+
+    /**
+     * clears compiled version of specified template resource,
+     * or all compiled template files if one is not specified.
+     * This function is for advanced use only, not normally needed.
+     *
+     * @param string $tpl_file
+     * @param string $compile_id
+     * @param string $exp_time
+     * @return boolean results of {@link smarty_core_rm_auto()}
+     */
+    public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
+    {
+        return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
+    }
+
+    /**
+     * Checks whether requested template exists.
+     *
+     * @param string $tpl_file
+     * @return boolean
+     */
+    public function template_exists($tpl_file)
+    {
+        return $this->templateExists($tpl_file);
+    }
+
+    /**
+     * Returns an array containing template variables
+     *
+     * @param string $name
+     * @return array
+     */
+    public function get_template_vars($name=null)
+    {
+        return $this->getTemplateVars($name);
+    }
+
+    /**
+     * Returns an array containing config variables
+     *
+     * @param string $name
+     * @return array
+     */
+    public function get_config_vars($name=null)
+    {
+        return $this->getConfigVars($name);
+    }
+
+    /**
+     * load configuration values
+     *
+     * @param string $file
+     * @param string $section
+     * @param string $scope
+     */
+    public function config_load($file, $section = null, $scope = 'global')
+    {
+        $this->ConfigLoad($file, $section, $scope);
+    }
+
+    /**
+     * return a reference to a registered object
+     *
+     * @param string $name
+     * @return object
+     */
+    public function get_registered_object($name)
+    {
+        return $this->getRegisteredObject($name);
+    }
+
+    /**
+     * clear configuration values
+     *
+     * @param string $var
+     */
+    public function clear_config($var = null)
+    {
+        $this->clearConfig($var);
+    }
+
+    /**
+     * trigger Smarty error
+     *
+     * @param string $error_msg
+     * @param integer $error_type
+     */
+    public function trigger_error($error_msg, $error_type = E_USER_WARNING)
+    {
+        trigger_error("Smarty error: $error_msg", $error_type);
+    }
+
+}
+
+/**
+ * Smarty {php}{/php} block function
+ *
+ * @param array   $params   parameter list
+ * @param string  $content  contents of the block
+ * @param object  $template template object
+ * @param boolean &$repeat  repeat flag
+ * @return string content re-formatted
+ */
+function smarty_php_tag($params, $content, $template, &$repeat)
+{
+    eval($content);
+    return '';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/debug.tpl
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/debug.tpl	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/debug.tpl	(revision 25596)
@@ -0,0 +1,133 @@
+{capture name='_smarty_debug' assign=debug_output}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+    <title>Smarty Debug Console</title>
+<style type="text/css">
+{literal}
+body, h1, h2, td, th, p {
+    font-family: sans-serif;
+    font-weight: normal;
+    font-size: 0.9em;
+    margin: 1px;
+    padding: 0;
+}
+
+h1 {
+    margin: 0;
+    text-align: left;
+    padding: 2px;
+    background-color: #f0c040;
+    color:  black;
+    font-weight: bold;
+    font-size: 1.2em;
+ }
+
+h2 {
+    background-color: #9B410E;
+    color: white;
+    text-align: left;
+    font-weight: bold;
+    padding: 2px;
+    border-top: 1px solid black;
+}
+
+body {
+    background: black; 
+}
+
+p, table, div {
+    background: #f0ead8;
+} 
+
+p {
+    margin: 0;
+    font-style: italic;
+    text-align: center;
+}
+
+table {
+    width: 100%;
+}
+
+th, td {
+    font-family: monospace;
+    vertical-align: top;
+    text-align: left;
+    width: 50%;
+}
+
+td {
+    color: green;
+}
+
+.odd {
+    background-color: #eeeeee;
+}
+
+.even {
+    background-color: #fafafa;
+}
+
+.exectime {
+    font-size: 0.8em;
+    font-style: italic;
+}
+
+#table_assigned_vars th {
+    color: blue;
+}
+
+#table_config_vars th {
+    color: maroon;
+}
+{/literal}
+</style>
+</head>
+<body>
+
+<h1>Smarty Debug Console  -  {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
+
+{if !empty($template_data)}
+<h2>included templates &amp; config files (load time in seconds)</h2>
+
+<div>
+{foreach $template_data as $template}
+  <font color=brown>{$template.name}</font>
+  <span class="exectime">
+   (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
+  </span>
+  <br>
+{/foreach}
+</div>
+{/if}
+
+<h2>assigned template variables</h2>
+
+<table id="table_assigned_vars">
+    {foreach $assigned_vars as $vars}
+       <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">   
+       <th>${$vars@key|escape:'html'}</th>
+       <td>{$vars|debug_print_var nofilter}</td></tr>
+    {/foreach}
+</table>
+
+<h2>assigned config file variables (outer template scope)</h2>
+
+<table id="table_config_vars">
+    {foreach $config_vars as $vars}
+       <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">   
+       <th>{$vars@key|escape:'html'}</th>
+       <td>{$vars|debug_print_var nofilter}</td></tr>
+    {/foreach}
+
+</table>
+</body>
+</html>
+{/capture}
+<script type="text/javascript">
+{$id = $template_name|default:''|md5}
+    _smarty_console = window.open("","console{$id}","width=680,height=600,resizable,scrollbars=yes");
+    _smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
+    _smarty_console.document.close();
+</script>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/block.textformat.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/block.textformat.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/block.textformat.php	(revision 25596)
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Smarty plugin to format text blocks
+ *
+ * @package Smarty
+ * @subpackage PluginsBlock
+ */
+
+/**
+ * Smarty {textformat}{/textformat} block plugin
+ *
+ * Type:     block function<br>
+ * Name:     textformat<br>
+ * Purpose:  format text a certain way with preset styles
+ *           or custom wrap/indent settings<br>
+ * Params:
+ * <pre>
+ * - style         - string (email)
+ * - indent        - integer (0)
+ * - wrap          - integer (80)
+ * - wrap_char     - string ("\n")
+ * - indent_char   - string (" ")
+ * - wrap_boundary - boolean (true)
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
+ *       (Smarty online manual)
+ * @param array                    $params   parameters
+ * @param string                   $content  contents of the block
+ * @param Smarty_Internal_Template $template template object
+ * @param boolean                  &$repeat  repeat flag
+ * @return string content re-formatted
+ * @author Monte Ohrt <monte at ohrt dot com>
+ */
+function smarty_block_textformat($params, $content, $template, &$repeat)
+{
+    if (is_null($content)) {
+        return;
+    }
+
+    $style = null;
+    $indent = 0;
+    $indent_first = 0;
+    $indent_char = ' ';
+    $wrap = 80;
+    $wrap_char = "\n";
+    $wrap_cut = false;
+    $assign = null;
+
+    foreach ($params as $_key => $_val) {
+        switch ($_key) {
+            case 'style':
+            case 'indent_char':
+            case 'wrap_char':
+            case 'assign':
+                $$_key = (string)$_val;
+                break;
+
+            case 'indent':
+            case 'indent_first':
+            case 'wrap':
+                $$_key = (int)$_val;
+                break;
+
+            case 'wrap_cut':
+                $$_key = (bool)$_val;
+                break;
+
+            default:
+                trigger_error("textformat: unknown attribute '$_key'");
+        }
+    }
+
+    if ($style == 'email') {
+        $wrap = 72;
+    }
+    // split into paragraphs
+    $_paragraphs = preg_split('![\r\n]{2}!', $content);
+    $_output = '';
+
+
+    foreach ($_paragraphs as &$_paragraph) {
+        if (!$_paragraph) {
+            continue;
+        }
+        // convert mult. spaces & special chars to single space
+        $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph);
+        // indent first line
+        if ($indent_first > 0) {
+            $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
+        }
+        // wordwrap sentences
+        if (Smarty::$_MBSTRING) {
+            require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php');
+            $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+        } else {
+            $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+        }
+        // indent lines
+        if ($indent > 0) {
+            $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
+        }
+    }
+    $_output = implode($wrap_char . $wrap_char, $_paragraphs);
+    
+    if ($assign) {
+        $template->assign($assign, $_output);
+    } else {
+        return $_output;
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.counter.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.counter.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.counter.php	(revision 25596)
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {counter} function plugin
+ *
+ * Type:     function<br>
+ * Name:     counter<br>
+ * Purpose:  print out a counter value
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
+ *       (Smarty online manual)
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string|null
+ */
+function smarty_function_counter($params, $template)
+{
+    static $counters = array();
+
+    $name = (isset($params['name'])) ? $params['name'] : 'default';
+    if (!isset($counters[$name])) {
+        $counters[$name] = array(
+            'start'=>1,
+            'skip'=>1,
+            'direction'=>'up',
+            'count'=>1
+            );
+    }
+    $counter =& $counters[$name];
+
+    if (isset($params['start'])) {
+        $counter['start'] = $counter['count'] = (int)$params['start'];
+    }
+
+    if (!empty($params['assign'])) {
+        $counter['assign'] = $params['assign'];
+    }
+
+    if (isset($counter['assign'])) {
+        $template->assign($counter['assign'], $counter['count']);
+    }
+    
+    if (isset($params['print'])) {
+        $print = (bool)$params['print'];
+    } else {
+        $print = empty($counter['assign']);
+    }
+
+    if ($print) {
+        $retval = $counter['count'];
+    } else {
+        $retval = null;
+    }
+
+    if (isset($params['skip'])) {
+        $counter['skip'] = $params['skip'];
+    }
+    
+    if (isset($params['direction'])) {
+        $counter['direction'] = $params['direction'];
+    }
+
+    if ($counter['direction'] == "down")
+        $counter['count'] -= $counter['skip'];
+    else
+        $counter['count'] += $counter['skip'];
+    
+    return $retval;
+    
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.cycle.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.cycle.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.cycle.php	(revision 25596)
@@ -0,0 +1,106 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {cycle} function plugin
+ *
+ * Type:     function<br>
+ * Name:     cycle<br>
+ * Date:     May 3, 2002<br>
+ * Purpose:  cycle through given values<br>
+ * Params:
+ * <pre>
+ * - name      - name of cycle (optional)
+ * - values    - comma separated list of values to cycle, or an array of values to cycle
+ *               (this can be left out for subsequent calls)
+ * - reset     - boolean - resets given var to true
+ * - print     - boolean - print var or not. default is true
+ * - advance   - boolean - whether or not to advance the cycle
+ * - delimiter - the value delimiter, default is ","
+ * - assign    - boolean, assigns to template var instead of printed.
+ * </pre>
+ * Examples:<br>
+ * <pre>
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Mark Priatel <mpriatel@rogers.com>
+ * @author credit to Gerard <gerard@interfold.com>
+ * @author credit to Jason Sweat <jsweat_php@yahoo.com>
+ * @version  1.3
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string|null
+ */
+
+function smarty_function_cycle($params, $template)
+{
+    static $cycle_vars;
+
+    $name = (empty($params['name'])) ? 'default' : $params['name'];
+    $print = (isset($params['print'])) ? (bool)$params['print'] : true;
+    $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
+    $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
+
+    if (!isset($params['values'])) {
+        if(!isset($cycle_vars[$name]['values'])) {
+            trigger_error("cycle: missing 'values' parameter");
+            return;
+        }
+    } else {
+        if(isset($cycle_vars[$name]['values'])
+            && $cycle_vars[$name]['values'] != $params['values'] ) {
+            $cycle_vars[$name]['index'] = 0;
+        }
+        $cycle_vars[$name]['values'] = $params['values'];
+    }
+
+    if (isset($params['delimiter'])) {
+        $cycle_vars[$name]['delimiter'] = $params['delimiter'];
+    } elseif (!isset($cycle_vars[$name]['delimiter'])) {
+        $cycle_vars[$name]['delimiter'] = ',';
+    }
+
+    if(is_array($cycle_vars[$name]['values'])) {
+        $cycle_array = $cycle_vars[$name]['values'];
+    } else {
+        $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
+    }
+
+    if(!isset($cycle_vars[$name]['index']) || $reset ) {
+        $cycle_vars[$name]['index'] = 0;
+    }
+
+    if (isset($params['assign'])) {
+        $print = false;
+        $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
+    }
+
+    if($print) {
+        $retval = $cycle_array[$cycle_vars[$name]['index']];
+    } else {
+        $retval = null;
+    }
+
+    if($advance) {
+        if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
+            $cycle_vars[$name]['index'] = 0;
+        } else {
+            $cycle_vars[$name]['index']++;
+        }
+    }
+
+    return $retval;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.fetch.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.fetch.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.fetch.php	(revision 25596)
@@ -0,0 +1,214 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {fetch} plugin
+ *
+ * Type:     function<br>
+ * Name:     fetch<br>
+ * Purpose:  fetch file, web or ftp data and display results
+ *
+ * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
+ *       (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+function smarty_function_fetch($params, $template)
+{
+    if (empty($params['file'])) {
+        trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE);
+        return;
+    }
+    
+    // strip file protocol
+    if (stripos($params['file'], 'file://') === 0) {
+        $params['file'] = substr($params['file'], 7);
+    }
+    
+    $protocol = strpos($params['file'], '://');
+    if ($protocol !== false) {
+        $protocol = strtolower(substr($params['file'], 0, $protocol));
+    }
+    
+    if (isset($template->smarty->security_policy)) {
+        if ($protocol) {
+            // remote resource (or php stream, …)
+            if(!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+                return;
+            }
+        } else {
+            // local file
+            if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+                return;
+            }
+        }
+    }
+
+    $content = '';
+    if ($protocol == 'http') {
+        // http fetch
+        if($uri_parts = parse_url($params['file'])) {
+            // set defaults
+            $host = $server_name = $uri_parts['host'];
+            $timeout = 30;
+            $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+            $agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION;
+            $referer = "";
+            $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
+            $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+            $_is_proxy = false;
+            if(empty($uri_parts['port'])) {
+                $port = 80;
+            } else {
+                $port = $uri_parts['port'];
+            }
+            if(!empty($uri_parts['user'])) {
+                $user = $uri_parts['user'];
+            }
+            if(!empty($uri_parts['pass'])) {
+                $pass = $uri_parts['pass'];
+            }
+            // loop through parameters, setup headers
+            foreach($params as $param_key => $param_value) {
+                switch($param_key) {
+                    case "file":
+                    case "assign":
+                    case "assign_headers":
+                        break;
+                    case "user":
+                        if(!empty($param_value)) {
+                            $user = $param_value;
+                        }
+                        break;
+                    case "pass":
+                        if(!empty($param_value)) {
+                            $pass = $param_value;
+                        }
+                        break;
+                    case "accept":
+                        if(!empty($param_value)) {
+                            $accept = $param_value;
+                        }
+                        break;
+                    case "header":
+                        if(!empty($param_value)) {
+                            if(!preg_match('![\w\d-]+: .+!',$param_value)) {
+                                trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE);
+                                return;
+                            } else {
+                                $extra_headers[] = $param_value;
+                            }
+                        }
+                        break;
+                    case "proxy_host":
+                        if(!empty($param_value)) {
+                            $proxy_host = $param_value;
+                        }
+                        break;
+                    case "proxy_port":
+                        if(!preg_match('!\D!', $param_value)) {
+                            $proxy_port = (int) $param_value;
+                        } else {
+                            trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+                            return;
+                        }
+                        break;
+                    case "agent":
+                        if(!empty($param_value)) {
+                            $agent = $param_value;
+                        }
+                        break;
+                    case "referer":
+                        if(!empty($param_value)) {
+                            $referer = $param_value;
+                        }
+                        break;
+                    case "timeout":
+                        if(!preg_match('!\D!', $param_value)) {
+                            $timeout = (int) $param_value;
+                        } else {
+                            trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+                            return;
+                        }
+                        break;
+                    default:
+                        trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE);
+                        return;
+                }
+            }
+            if(!empty($proxy_host) && !empty($proxy_port)) {
+                $_is_proxy = true;
+                $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
+            } else {
+                $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
+            }
+
+            if(!$fp) {
+                trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE);
+                return;
+            } else {
+                if($_is_proxy) {
+                    fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+                } else {
+                    fputs($fp, "GET $uri HTTP/1.0\r\n");
+                }
+                if(!empty($host)) {
+                    fputs($fp, "Host: $host\r\n");
+                }
+                if(!empty($accept)) {
+                    fputs($fp, "Accept: $accept\r\n");
+                }
+                if(!empty($agent)) {
+                    fputs($fp, "User-Agent: $agent\r\n");
+                }
+                if(!empty($referer)) {
+                    fputs($fp, "Referer: $referer\r\n");
+                }
+                if(isset($extra_headers) && is_array($extra_headers)) {
+                    foreach($extra_headers as $curr_header) {
+                        fputs($fp, $curr_header."\r\n");
+                    }
+                }
+                if(!empty($user) && !empty($pass)) {
+                    fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
+                }
+
+                fputs($fp, "\r\n");
+                while(!feof($fp)) {
+                    $content .= fgets($fp,4096);
+                }
+                fclose($fp);
+                $csplit = preg_split("!\r\n\r\n!",$content,2);
+
+                $content = $csplit[1];
+
+                if(!empty($params['assign_headers'])) {
+                    $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0]));
+                }
+            }
+        } else {
+            trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE);
+            return;
+        }
+    } else {
+        $content = @file_get_contents($params['file']);
+        if ($content === false) {
+            throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'");
+        }
+    }
+
+    if (!empty($params['assign'])) {
+        $template->assign($params['assign'], $content);
+    } else {
+        return $content;
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_checkboxes.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_checkboxes.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_checkboxes.php	(revision 25596)
@@ -0,0 +1,233 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_checkboxes} function plugin
+ *
+ * File:       function.html_checkboxes.php<br>
+ * Type:       function<br>
+ * Name:       html_checkboxes<br>
+ * Date:       24.Feb.2003<br>
+ * Purpose:    Prints out a list of checkbox input types<br>
+ * Examples:
+ * <pre>
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ * Params:
+ * <pre>
+ * - name       (optional) - string default "checkbox"
+ * - values     (required) - array
+ * - options    (optional) - associative array
+ * - checked    (optional) - array default not set
+ * - separator  (optional) - ie <br> or &nbsp;
+ * - output     (optional) - the output next to each checkbox
+ * - assign     (optional) - assign the output as an array to this variable
+ * - escape     (optional) - escape the content (not value), defaults to true
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ *      (Smarty online manual)
+ * @author     Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @version    1.0
+ * @param array $params parameters
+ * @param object $template template object
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_checkboxes($params, $template)
+{
+    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+
+    $name = 'checkbox';
+    $values = null;
+    $options = null;
+    $selected = array();
+    $separator = '';
+    $escape = true;
+    $labels = true;
+    $label_ids = false;
+    $output = null;
+
+    $extra = '';
+
+    foreach($params as $_key => $_val) {
+        switch($_key) {
+            case 'name':
+            case 'separator':
+                $$_key = (string) $_val;
+                break;
+
+            case 'escape':
+            case 'labels':
+            case 'label_ids':
+                $$_key = (bool) $_val;
+                break;
+
+            case 'options':
+                $$_key = (array) $_val;
+                break;
+
+            case 'values':
+            case 'output':
+                $$_key = array_values((array) $_val);
+                break;
+
+            case 'checked':
+            case 'selected':
+                if (is_array($_val)) {
+                    $selected = array();
+                    foreach ($_val as $_sel) {
+                        if (is_object($_sel)) {
+                            if (method_exists($_sel, "__toString")) {
+                                $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
+                            } else {
+                                trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
+                                continue;
+                            }
+                        } else {
+                            $_sel = smarty_function_escape_special_chars((string) $_sel);
+                        }
+                        $selected[$_sel] = true;
+                    }
+                } elseif (is_object($_val)) {
+                    if (method_exists($_val, "__toString")) {
+                        $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+                    } else {
+                        trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+                    }
+                } else {
+                    $selected = smarty_function_escape_special_chars((string) $_val);
+                }
+                break;
+
+            case 'checkboxes':
+                trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
+                $options = (array) $_val;
+                break;
+
+            case 'assign':
+                break;
+
+            case 'strict': break;
+
+            case 'disabled':
+            case 'readonly':
+                if (!empty($params['strict'])) {
+                    if (!is_scalar($_val)) {
+                        trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+                    }
+
+                    if ($_val === true || $_val === $_key) {
+                        $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+                    }
+
+                    break;
+                }
+                // omit break; to fall through!
+
+            default:
+                if(!is_array($_val)) {
+                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+                } else {
+                    trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (!isset($options) && !isset($values))
+        return ''; /* raise error here? */
+
+    $_html_result = array();
+
+    if (isset($options)) {
+        foreach ($options as $_key=>$_val) {
+            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+        }
+    } else {
+        foreach ($values as $_i=>$_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+        }
+    }
+
+    if(!empty($params['assign'])) {
+        $template->assign($params['assign'], $_html_result);
+    } else {
+        return implode("\n", $_html_result);
+    }
+
+}
+
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true) {
+    $_output = '';
+    
+    if (is_object($value)) {
+        if (method_exists($value, "__toString")) {
+            $value = (string) $value->__toString();
+        } else {
+            trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+            return '';
+        }
+    } else {
+        $value = (string) $value;
+    }
+    
+    if (is_object($output)) {
+        if (method_exists($output, "__toString")) {
+            $output = (string) $output->__toString();
+        } else {
+            trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
+            return '';
+        }
+    } else {
+        $output = (string) $output;
+    }
+    
+    if ($labels) {
+        if ($label_ids) {
+            $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
+            $_output .= '<label for="' . $_id . '">';
+        } else {
+            $_output .= '<label>';
+        } 
+    }
+    
+    $name = smarty_function_escape_special_chars($name);
+    $value = smarty_function_escape_special_chars($value);
+    if ($escape) {
+        $output = smarty_function_escape_special_chars($output);
+    }
+    
+    $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
+    
+    if ($labels && $label_ids) {
+        $_output .= ' id="' . $_id . '"';
+    }
+    
+    if (is_array($selected)) {
+        if (isset($selected[$value])) {
+            $_output .= ' checked="checked"';
+        }
+    } elseif ($value === $selected) {
+        $_output .= ' checked="checked"';
+    }
+    
+    $_output .= $extra . ' />' . $output;
+    if ($labels) {
+        $_output .= '</label>';
+    }
+    
+    $_output .=  $separator;
+    return $_output;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_image.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_image.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_image.php	(revision 25596)
@@ -0,0 +1,159 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_image} function plugin
+ * 
+ * Type:     function<br>
+ * Name:     html_image<br>
+ * Date:     Feb 24, 2003<br>
+ * Purpose:  format HTML tags for the image<br>
+ * Examples: {html_image file="/images/masthead.gif"}<br>
+ * Output:   <img src="/images/masthead.gif" width=400 height=23><br>
+ * Params:
+ * <pre>
+ * - file        - (required) - file (and path) of image
+ * - height      - (optional) - image height (default actual height)
+ * - width       - (optional) - image width (default actual width)
+ * - basedir     - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
+ * - path_prefix - prefix for path output (optional, default empty)
+ * </pre>
+ * 
+ * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
+ *      (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @author credits to Duda <duda@big.hu> 
+ * @version 1.0
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string 
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_image($params, $template)
+{
+    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+ 
+    $alt = '';
+    $file = '';
+    $height = '';
+    $width = '';
+    $extra = '';
+    $prefix = '';
+    $suffix = '';
+    $path_prefix = '';
+    $basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
+    foreach($params as $_key => $_val) {
+        switch ($_key) {
+            case 'file':
+            case 'height':
+            case 'width':
+            case 'dpi':
+            case 'path_prefix':
+            case 'basedir':
+                $$_key = $_val;
+                break;
+
+            case 'alt':
+                if (!is_array($_val)) {
+                    $$_key = smarty_function_escape_special_chars($_val);
+                } else {
+                    throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                } 
+                break;
+
+            case 'link':
+            case 'href':
+                $prefix = '<a href="' . $_val . '">';
+                $suffix = '</a>';
+                break;
+
+            default:
+                if (!is_array($_val)) {
+                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+                } else {
+                    throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                } 
+                break;
+        } 
+    } 
+
+    if (empty($file)) {
+        trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
+        return;
+    } 
+
+    if ($file[0] == '/') {
+        $_image_path = $basedir . $file;
+    } else {
+        $_image_path = $file;
+    }
+    
+    // strip file protocol
+    if (stripos($params['file'], 'file://') === 0) {
+        $params['file'] = substr($params['file'], 7);
+    }
+    
+    $protocol = strpos($params['file'], '://');
+    if ($protocol !== false) {
+        $protocol = strtolower(substr($params['file'], 0, $protocol));
+    }
+    
+    if (isset($template->smarty->security_policy)) {
+        if ($protocol) {
+            // remote resource (or php stream, …)
+            if(!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+                return;
+            }
+        } else {
+            // local file
+            if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+                return;
+            }
+        }
+    }
+
+    if (!isset($params['width']) || !isset($params['height'])) {
+        // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
+        if (!$_image_data = @getimagesize($_image_path)) {
+            if (!file_exists($_image_path)) {
+                trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
+                return;
+            } else if (!is_readable($_image_path)) {
+                trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
+                return;
+            } else {
+                trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
+                return;
+            } 
+        }
+
+        if (!isset($params['width'])) {
+            $width = $_image_data[0];
+        } 
+        if (!isset($params['height'])) {
+            $height = $_image_data[1];
+        } 
+    } 
+
+    if (isset($params['dpi'])) {
+        if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
+            // FIXME: (rodneyrehm) wrong dpi assumption
+            // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
+            $dpi_default = 72;
+        } else {
+            $dpi_default = 96;
+        } 
+        $_resize = $dpi_default / $params['dpi'];
+        $width = round($width * $_resize);
+        $height = round($height * $_resize);
+    } 
+
+    return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_options.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_options.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_options.php	(revision 25596)
@@ -0,0 +1,193 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_options} function plugin
+ * 
+ * Type:     function<br>
+ * Name:     html_options<br>
+ * Purpose:  Prints the list of <option> tags generated from
+ *           the passed parameters<br>
+ * Params:
+ * <pre>
+ * - name       (optional) - string default "select"
+ * - values     (required) - if no options supplied) - array
+ * - options    (required) - if no values supplied) - associative array
+ * - selected   (optional) - string default not set
+ * - output     (required) - if not options supplied) - array
+ * - id         (optional) - string default not set
+ * - class      (optional) - string default not set
+ * </pre>
+ * 
+ * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
+ *      (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string 
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_options($params, $template)
+{
+    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+
+    $name = null;
+    $values = null;
+    $options = null;
+    $selected = null;
+    $output = null;
+    $id = null;
+    $class = null;
+
+    $extra = '';
+
+    foreach ($params as $_key => $_val) {
+        switch ($_key) {
+            case 'name':
+            case 'class':
+            case 'id':
+                $$_key = (string) $_val;
+                break;
+
+            case 'options':
+                $options = (array) $_val;
+                break;
+
+            case 'values':
+            case 'output':
+                $$_key = array_values((array) $_val);
+                break;
+
+            case 'selected':
+                if (is_array($_val)) {
+                    $selected = array();
+                    foreach ($_val as $_sel) {
+                        if (is_object($_sel)) {
+                            if (method_exists($_sel, "__toString")) {
+                                $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
+                            } else {
+                                trigger_error("html_options: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
+                                continue;
+                            }
+                        } else {
+                            $_sel = smarty_function_escape_special_chars((string) $_sel);
+                        }
+                        $selected[$_sel] = true;
+                    }
+                } elseif (is_object($_val)) {
+                    if (method_exists($_val, "__toString")) {
+                        $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+                    } else {
+                        trigger_error("html_options: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+                    }
+                } else {
+                    $selected = smarty_function_escape_special_chars((string) $_val);
+                }
+                break;
+            
+            case 'strict': break;
+            
+            case 'disabled':
+            case 'readonly':
+                if (!empty($params['strict'])) {
+                    if (!is_scalar($_val)) {
+                        trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+                    }
+                    
+                    if ($_val === true || $_val === $_key) {
+                        $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+                    }
+                    
+                    break;
+                }
+                // omit break; to fall through!
+            
+            default:
+                if (!is_array($_val)) {
+                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+                } else {
+                    trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                } 
+                break;
+        } 
+    }
+
+    if (!isset($options) && !isset($values)) {
+        /* raise error here? */
+        return '';
+    }
+
+    $_html_result = '';
+    $_idx = 0;
+
+    if (isset($options)) {
+        foreach ($options as $_key => $_val) {
+            $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+        }
+    } else {
+        foreach ($values as $_i => $_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+        } 
+    }
+
+    if (!empty($name)) {
+        $_html_class = !empty($class) ? ' class="'.$class.'"' : '';
+        $_html_id = !empty($id) ? ' id="'.$id.'"' : '';
+        $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
+    } 
+
+    return $_html_result;
+}
+
+function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
+{
+    if (!is_array($value)) {
+        $_key = smarty_function_escape_special_chars($key);
+        $_html_result = '<option value="' . $_key . '"';
+        if (is_array($selected)) {
+            if (isset($selected[$_key])) {
+                $_html_result .= ' selected="selected"';
+            }
+        } elseif ($_key === $selected) {
+            $_html_result .= ' selected="selected"';
+        }
+        $_html_class = !empty($class) ? ' class="'.$class.' option"' : '';
+        $_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : '';
+        if (is_object($value)) {
+            if (method_exists($value, "__toString")) {
+                $value = smarty_function_escape_special_chars((string) $value->__toString());
+            } else {
+                trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+                return '';
+            }
+        } else {
+            $value = smarty_function_escape_special_chars((string) $value);
+        }
+        $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
+        $idx++;
+    } else {
+        $_idx = 0;
+        $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id.'-'.$idx) : null, $class, $_idx);
+        $idx++;
+    }
+    return $_html_result;
+} 
+
+function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
+{
+    $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
+    foreach ($values as $key => $value) {
+        $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
+    } 
+    $optgroup_html .= "</optgroup>\n";
+    return $optgroup_html;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_radios.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_radios.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_radios.php	(revision 25596)
@@ -0,0 +1,217 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_radios} function plugin
+ * 
+ * File:       function.html_radios.php<br>
+ * Type:       function<br>
+ * Name:       html_radios<br>
+ * Date:       24.Feb.2003<br>
+ * Purpose:    Prints out a list of radio input types<br>
+ * Params:
+ * <pre>
+ * - name       (optional) - string default "radio"
+ * - values     (required) - array
+ * - options    (required) - associative array
+ * - checked    (optional) - array default not set
+ * - separator  (optional) - ie <br> or &nbsp;
+ * - output     (optional) - the output next to each radio button
+ * - assign     (optional) - assign the output as an array to this variable
+ * - escape     (optional) - escape the content (not value), defaults to true
+ * </pre>
+ * Examples:
+ * <pre>
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator='<br>' output=$names}
+ * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
+ * </pre>
+ * 
+ * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
+ *      (Smarty online manual)
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com> 
+ * @author credits to Monte Ohrt <monte at ohrt dot com> 
+ * @version 1.0
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string 
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_radios($params, $template)
+{
+    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+
+    $name = 'radio';
+    $values = null;
+    $options = null;
+    $selected = null;
+    $separator = '';
+    $escape = true;
+    $labels = true;
+    $label_ids = false;
+    $output = null;
+    $extra = '';
+
+    foreach($params as $_key => $_val) {
+        switch ($_key) {
+            case 'name':
+            case 'separator':
+                $$_key = (string) $_val;
+                break;
+
+            case 'checked':
+            case 'selected':
+                if (is_array($_val)) {
+                    trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+                } elseif (is_object($_val)) {
+                    if (method_exists($_val, "__toString")) {
+                        $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+                    } else {
+                        trigger_error("html_radios: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+                    }
+                } else {
+                    $selected = (string) $_val;
+                } 
+                break;
+
+            case 'escape':
+            case 'labels':
+            case 'label_ids':
+                $$_key = (bool) $_val;
+                break;
+
+            case 'options':
+                $$_key = (array) $_val;
+                break;
+
+            case 'values':
+            case 'output':
+                $$_key = array_values((array) $_val);
+                break;
+
+            case 'radios':
+                trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
+                $options = (array) $_val;
+                break;
+
+            case 'assign':
+                break;
+
+            case 'strict': break;
+
+            case 'disabled':
+            case 'readonly':
+                if (!empty($params['strict'])) {
+                    if (!is_scalar($_val)) {
+                        trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+                    }
+
+                    if ($_val === true || $_val === $_key) {
+                        $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+                    }
+
+                    break;
+                }
+                // omit break; to fall through!
+
+            default:
+                if (!is_array($_val)) {
+                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+                } else {
+                    trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                } 
+                break;
+        } 
+    } 
+
+    if (!isset($options) && !isset($values)) {
+        /* raise error here? */
+        return '';
+    }
+
+    $_html_result = array();
+
+    if (isset($options)) {
+        foreach ($options as $_key => $_val) {
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+        }
+    } else {
+        foreach ($values as $_i => $_key) {
+            $_val = isset($output[$_i]) ? $output[$_i] : '';
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+        } 
+    } 
+
+    if (!empty($params['assign'])) {
+        $template->assign($params['assign'], $_html_result);
+    } else {
+        return implode("\n", $_html_result);
+    } 
+} 
+
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
+{
+    $_output = '';
+    
+    if (is_object($value)) {
+        if (method_exists($value, "__toString")) {
+            $value = (string) $value->__toString();
+        } else {
+            trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+            return '';
+        }
+    } else {
+        $value = (string) $value;
+    }
+    
+    if (is_object($output)) {
+        if (method_exists($output, "__toString")) {
+            $output = (string) $output->__toString();
+        } else {
+            trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
+            return '';
+        }
+    } else {
+        $output = (string) $output;
+    }
+    
+    if ($labels) {
+        if ($label_ids) {
+            $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
+            $_output .= '<label for="' . $_id . '">';
+        } else {
+            $_output .= '<label>';
+        } 
+    }
+    
+    $name = smarty_function_escape_special_chars($name);
+    $value = smarty_function_escape_special_chars($value);
+    if ($escape) {
+        $output = smarty_function_escape_special_chars($output);
+    }
+    
+    $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
+
+    if ($labels && $label_ids) {
+        $_output .= ' id="' . $_id . '"';
+    }
+
+    if ($value === $selected) {
+        $_output .= ' checked="checked"';
+    }
+    
+    $_output .= $extra . ' />' . $output;
+    if ($labels) {
+        $_output .= '</label>';
+    }
+    
+    $_output .= $separator;
+    return $_output;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_date.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_date.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_date.php	(revision 25596)
@@ -0,0 +1,394 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * @ignore
+ */
+require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+/**
+ * @ignore
+ */
+require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+
+/**
+ * Smarty {html_select_date} plugin
+ * 
+ * Type:     function<br>
+ * Name:     html_select_date<br>
+ * Purpose:  Prints the dropdowns for date selection.
+ * 
+ * ChangeLog:
+ * <pre>
+ *            - 1.0 initial release
+ *            - 1.1 added support for +/- N syntax for begin
+ *              and end year values. (Monte)
+ *            - 1.2 added support for yyyy-mm-dd syntax for
+ *              time value. (Jan Rosier)
+ *            - 1.3 added support for choosing format for
+ *              month values (Gary Loescher)
+ *            - 1.3.1 added support for choosing format for
+ *              day values (Marcus Bointon)
+ *            - 1.3.2 support negative timestamps, force year
+ *              dropdown to include given date unless explicitly set (Monte)
+ *            - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
+ *              of 0000-00-00 dates (cybot, boots)
+ *            - 2.0 complete rewrite for performance,  
+ *              added attributes month_names, *_id
+ * </pre>
+ * 
+ * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
+ *      (Smarty online manual)
+ * @version 2.0
+ * @author Andrei Zmievski 
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @author Rodney Rehm
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string 
+ */
+function smarty_function_html_select_date($params, $template)
+{
+    // generate timestamps used for month names only
+    static $_month_timestamps = null;
+    static $_current_year = null;
+    if ($_month_timestamps === null) {
+        $_current_year = date('Y');
+        $_month_timestamps = array();
+        for ($i = 1; $i <= 12; $i++) {
+            $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
+        }
+    }
+
+    /* Default values. */
+    $prefix = "Date_";
+    $start_year = null;
+    $end_year = null;
+    $display_days = true;
+    $display_months = true;
+    $display_years = true;
+    $month_format = "%B";
+    /* Write months as numbers by default  GL */
+    $month_value_format = "%m";
+    $day_format = "%02d";
+    /* Write day values using this format MB */
+    $day_value_format = "%d";
+    $year_as_text = false;
+    /* Display years in reverse order? Ie. 2000,1999,.... */
+    $reverse_years = false;
+    /* Should the select boxes be part of an array when returned from PHP?
+       e.g. setting it to "birthday", would create "birthday[Day]",
+       "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+    $field_array = null;
+    /* <select size>'s of the different <select> tags.
+       If not set, uses default dropdown. */
+    $day_size = null;
+    $month_size = null;
+    $year_size = null;
+    /* Unparsed attributes common to *ALL* the <select>/<input> tags.
+       An example might be in the template: all_extra ='class ="foo"'. */
+    $all_extra = null;
+    /* Separate attributes for the tags. */
+    $day_extra = null;
+    $month_extra = null;
+    $year_extra = null;
+    /* Order in which to display the fields.
+       "D" -> day, "M" -> month, "Y" -> year. */
+    $field_order = 'MDY';
+    /* String printed between the different fields. */
+    $field_separator = "\n";
+    $option_separator = "\n";
+    $time = null;
+    // $all_empty = null;
+    // $day_empty = null;
+    // $month_empty = null;
+    // $year_empty = null;
+    $extra_attrs = '';
+    $all_id = null;
+    $day_id = null;
+    $month_id = null;
+    $year_id = null;
+
+    foreach ($params as $_key => $_value) {
+        switch ($_key) {
+            case 'time':
+                if (!is_array($_value) && $_value !== null) {
+                    $time = smarty_make_timestamp($_value);
+                }
+                break;
+                
+            case 'month_names':
+                if (is_array($_value) && count($_value) == 12) {
+                    $$_key = $_value;
+                } else {
+                    trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
+                }
+                break;
+                
+            case 'prefix':
+            case 'field_array':
+            case 'start_year':
+            case 'end_year':
+            case 'day_format':
+            case 'day_value_format':
+            case 'month_format':
+            case 'month_value_format':
+            case 'day_size':
+            case 'month_size':
+            case 'year_size':
+            case 'all_extra':
+            case 'day_extra':
+            case 'month_extra':
+            case 'year_extra':
+            case 'field_order':
+            case 'field_separator':
+            case 'option_separator':
+            case 'all_empty':
+            case 'month_empty':
+            case 'day_empty':
+            case 'year_empty':
+            case 'all_id':
+            case 'month_id':
+            case 'day_id':
+            case 'year_id':
+                $$_key = (string)$_value;
+                break;
+
+            case 'display_days':
+            case 'display_months':
+            case 'display_years':
+            case 'year_as_text':
+            case 'reverse_years':
+                $$_key = (bool)$_value;
+                break;
+
+            default:
+                if (!is_array($_value)) {
+                    $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+                } else {
+                    trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                } 
+                break;
+        } 
+    }
+    
+    // Note: date() is faster than strftime()
+    // Note: explode(date()) is faster than date() date() date()
+    if (isset($params['time']) && is_array($params['time'])) {
+        if (isset($params['time'][$prefix . 'Year'])) {
+            // $_REQUEST[$field_array] given
+            foreach (array('Y' => 'Year',  'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+                $_variableName = '_' . strtolower($_elementName);
+                $$_variableName = isset($params['time'][$prefix . $_elementName])
+                    ? $params['time'][$prefix . $_elementName]
+                    : date($_elementKey);
+            }
+            $time = mktime(0, 0, 0, $_month, $_day, $_year);
+        } elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
+            // $_REQUEST given
+            foreach (array('Y' => 'Year',  'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+                $_variableName = '_' . strtolower($_elementName);
+                $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
+                    ? $params['time'][$field_array][$prefix . $_elementName]
+                    : date($_elementKey);
+            }
+            $time = mktime(0, 0, 0, $_month, $_day, $_year);
+        } else {
+            // no date found, use NOW
+            list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+        }
+    } elseif ($time === null) {
+        if (array_key_exists('time', $params)) {
+            $_year = $_month = $_day = $time = null;
+        } else {
+            list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+        }
+    } else {
+        list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time));
+    }
+
+    // make syntax "+N" or "-N" work with $start_year and $end_year
+    // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
+    foreach (array('start', 'end') as $key) {
+        $key .= '_year';
+        $t = $$key;
+        if ($t === null) {
+            $$key = (int)$_current_year;
+        } else if ($t[0] == '+') {
+            $$key = (int)($_current_year + trim(substr($t, 1)));
+        } else if ($t[0] == '-') {
+            $$key = (int)($_current_year - trim(substr($t, 1)));
+        } else {
+            $$key = (int)$$key;
+        }
+    }
+
+    // flip for ascending or descending
+    if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
+        $t = $end_year;
+        $end_year = $start_year;
+        $start_year = $t;
+    }
+
+    // generate year <select> or <input>
+    if ($display_years) {
+        $_html_years = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        } 
+        if ($year_extra) {
+            $_extra .= ' ' . $year_extra;
+        }
+        
+        if ($year_as_text) {
+            $_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />';
+        } else {
+            $_html_years = '<select name="' . $_name . '"';
+            if ($year_id !== null || $all_id !== null) {
+                $_html_years .= ' id="' . smarty_function_escape_special_chars( 
+                    $year_id !== null ? ( $year_id ? $year_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name ) 
+                ) . '"';
+            }
+            if ($year_size) {
+                $_html_years .= ' size="' . $year_size . '"';
+            } 
+            $_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
+            
+            if (isset($year_empty) || isset($all_empty)) {
+                $_html_years .= '<option value="">' . ( isset($year_empty) ? $year_empty : $all_empty ) . '</option>' . $option_separator;
+            }
+            
+            $op = $start_year > $end_year ? -1 : 1;
+            for ($i=$start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+                $_html_years .= '<option value="' . $i . '"'
+                    . ($_year == $i ? ' selected="selected"' : '')
+                    . '>' . $i . '</option>' . $option_separator;
+            }
+            
+            $_html_years .= '</select>';
+        }
+    }
+    
+    // generate month <select> or <input>
+    if ($display_months) {
+        $_html_month = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        } 
+        if ($month_extra) {
+            $_extra .= ' ' . $month_extra;
+        }
+        
+        $_html_months = '<select name="' . $_name . '"';
+        if ($month_id !== null || $all_id !== null) {
+            $_html_months .= ' id="' . smarty_function_escape_special_chars( 
+                $month_id !== null ? ( $month_id ? $month_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name ) 
+            ) . '"';
+        }
+        if ($month_size) {
+            $_html_months .= ' size="' . $month_size . '"';
+        } 
+        $_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
+        
+        if (isset($month_empty) || isset($all_empty)) {
+            $_html_months .= '<option value="">' . ( isset($month_empty) ? $month_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+        
+        for ($i = 1; $i <= 12; $i++) {
+            $_val = sprintf('%02d', $i);
+            $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i]));
+            $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]);
+            $_html_months .= '<option value="' . $_value . '"'
+                . ($_val == $_month ? ' selected="selected"' : '')
+                . '>' . $_text . '</option>' . $option_separator;
+        }
+        
+        $_html_months .= '</select>';
+    }
+    
+    // generate day <select> or <input>
+    if ($display_days) {
+        $_html_day = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        } 
+        if ($day_extra) {
+            $_extra .= ' ' . $day_extra;
+        }
+        
+        $_html_days = '<select name="' . $_name . '"';
+        if ($day_id !== null || $all_id !== null) {
+            $_html_days .= ' id="' . smarty_function_escape_special_chars( 
+                $day_id !== null ? ( $day_id ? $day_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name ) 
+            ) . '"';
+        }
+        if ($day_size) {
+            $_html_days .= ' size="' . $day_size . '"';
+        } 
+        $_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
+        
+        if (isset($day_empty) || isset($all_empty)) {
+            $_html_days .= '<option value="">' . ( isset($day_empty) ? $day_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+        
+        for ($i = 1; $i <= 31; $i++) {
+            $_val = sprintf('%02d', $i);
+            $_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
+            $_value = $day_value_format ==  '%02d' ? $_val : sprintf($day_value_format, $i);
+            $_html_days .= '<option value="' . $_value . '"'
+                . ($_val == $_day ? ' selected="selected"' : '')
+                . '>' . $_text . '</option>' . $option_separator;
+        }
+        
+        $_html_days .= '</select>';
+    }
+
+    // order the fields for output
+    $_html = '';
+    for ($i=0; $i <= 2; $i++) {
+        switch ($field_order[$i]) {
+            case 'Y':
+            case 'y':
+                if (isset($_html_years)) {
+                    if ($_html) {
+                        $_html .= $field_separator;
+                    }
+                    $_html .= $_html_years;
+                }
+            break;
+            
+            case 'm':
+            case 'M':
+                if (isset($_html_months)) {
+                    if ($_html) {
+                        $_html .= $field_separator;
+                    }
+                    $_html .= $_html_months;
+                }
+            break;
+            
+            case 'd':
+            case 'D':
+                if (isset($_html_days)) {
+                    if ($_html) {
+                        $_html .= $field_separator;
+                    }
+                    $_html .= $_html_days;
+                }
+            break;
+        }
+    }
+    return $_html;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_time.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_time.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_select_time.php	(revision 25596)
@@ -0,0 +1,366 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * @ignore
+ */
+require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+/**
+ * @ignore
+ */
+require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+
+/**
+ * Smarty {html_select_time} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_select_time<br>
+ * Purpose:  Prints the dropdowns for time selection
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
+ *          (Smarty online manual)
+ * @author Roberto Berto <roberto@berto.net>
+ * @author Monte Ohrt <monte AT ohrt DOT com>
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string
+ * @uses smarty_make_timestamp()
+ */
+function smarty_function_html_select_time($params, $template)
+{
+    $prefix = "Time_";
+    $field_array = null;
+    $field_separator = "\n";
+    $option_separator = "\n";
+    $time = null;
+
+    $display_hours = true;
+    $display_minutes = true;
+    $display_seconds = true;
+    $display_meridian = true;
+
+    $hour_format = '%02d';
+    $hour_value_format = '%02d';
+    $minute_format = '%02d';
+    $minute_value_format = '%02d';
+    $second_format = '%02d';
+    $second_value_format = '%02d';
+
+    $hour_size = null;
+    $minute_size = null;
+    $second_size = null;
+    $meridian_size = null;
+
+    $all_empty = null;
+    $hour_empty = null;
+    $minute_empty = null;
+    $second_empty = null;
+    $meridian_empty = null;
+
+    $all_id = null;
+    $hour_id = null;
+    $minute_id = null;
+    $second_id = null;
+    $meridian_id = null;
+
+    $use_24_hours = true;
+    $minute_interval = 1;
+    $second_interval = 1;
+
+    $extra_attrs = '';
+    $all_extra = null;
+    $hour_extra = null;
+    $minute_extra = null;
+    $second_extra = null;
+    $meridian_extra = null;
+
+    foreach ($params as $_key => $_value) {
+        switch ($_key) {
+            case 'time':
+                if (!is_array($_value) && $_value !== null) {
+                    $time = smarty_make_timestamp($_value);
+                }
+                break;
+
+            case 'prefix':
+            case 'field_array':
+
+            case 'field_separator':
+            case 'option_separator':
+
+            case 'all_extra':
+            case 'hour_extra':
+            case 'minute_extra':
+            case 'second_extra':
+            case 'meridian_extra':
+
+            case 'all_empty':
+            case 'hour_empty':
+            case 'minute_empty':
+            case 'second_empty':
+            case 'meridian_empty':
+
+            case 'all_id':
+            case 'hour_id':
+            case 'minute_id':
+            case 'second_id':
+            case 'meridian_id':
+
+            case 'hour_format':
+            case 'hour_value_format':
+            case 'minute_format':
+            case 'minute_value_format':
+            case 'second_format':
+            case 'second_value_format':
+                $$_key = (string)$_value;
+                break;
+
+            case 'display_hours':
+            case 'display_minutes':
+            case 'display_seconds':
+            case 'display_meridian':
+            case 'use_24_hours':
+                $$_key = (bool)$_value;
+                break;
+
+            case 'minute_interval':
+            case 'second_interval':
+
+            case 'hour_size':
+            case 'minute_size':
+            case 'second_size':
+            case 'meridian_size':
+                $$_key = (int)$_value;
+                break;
+
+            default:
+                if (!is_array($_value)) {
+                    $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+                } else {
+                    trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+                }
+                break;
+        }
+    }
+
+    if (isset($params['time']) && is_array($params['time'])) {
+        if (isset($params['time'][$prefix . 'Hour'])) {
+            // $_REQUEST[$field_array] given
+            foreach (array('H' => 'Hour',  'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+                $_variableName = '_' . strtolower($_elementName);
+                $$_variableName = isset($params['time'][$prefix . $_elementName])
+                    ? $params['time'][$prefix . $_elementName]
+                    : date($_elementKey);
+            }
+            $_meridian = isset($params['time'][$prefix . 'Meridian'])
+                ? (' ' . $params['time'][$prefix . 'Meridian'])
+                : '';
+            $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
+            list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+        } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
+            // $_REQUEST given
+            foreach (array('H' => 'Hour',  'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+                $_variableName = '_' . strtolower($_elementName);
+                $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
+                    ? $params['time'][$field_array][$prefix . $_elementName]
+                    : date($_elementKey);
+            }
+            $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian'])
+                ? (' ' . $params['time'][$field_array][$prefix . 'Meridian'])
+                : '';
+            $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
+            list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+        } else {
+            // no date found, use NOW
+            list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+        }
+    } elseif ($time === null) {
+        if (array_key_exists('time', $params)) {
+            $_hour = $_minute = $_second = $time = null;
+        } else {
+            list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
+        }
+    } else {
+        list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+    }
+
+    // generate hour <select>
+    if ($display_hours) {
+        $_html_hours = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        }
+        if ($hour_extra) {
+            $_extra .= ' ' . $hour_extra;
+        }
+
+        $_html_hours = '<select name="' . $_name . '"';
+        if ($hour_id !== null || $all_id !== null) {
+            $_html_hours .= ' id="' . smarty_function_escape_special_chars(
+                $hour_id !== null ? ( $hour_id ? $hour_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
+            ) . '"';
+        }
+        if ($hour_size) {
+            $_html_hours .= ' size="' . $hour_size . '"';
+        }
+        $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
+
+        if (isset($hour_empty) || isset($all_empty)) {
+            $_html_hours .= '<option value="">' . ( isset($hour_empty) ? $hour_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+
+        $start = $use_24_hours ? 0 : 1;
+        $end = $use_24_hours ? 23 : 12;
+        for ($i=$start; $i <= $end; $i++) {
+            $_val = sprintf('%02d', $i);
+            $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
+            $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
+
+            if (!$use_24_hours) {
+                $_hour12 = $_hour == 0
+                    ? 12
+                    : ($_hour <= 12 ? $_hour : $_hour -12);
+            }
+
+            $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
+            $_html_hours .= '<option value="' . $_value . '"'
+                . ($selected ? ' selected="selected"' : '')
+                . '>' . $_text . '</option>' . $option_separator;
+        }
+
+        $_html_hours .= '</select>';
+    }
+
+    // generate minute <select>
+    if ($display_minutes) {
+        $_html_minutes = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        }
+        if ($minute_extra) {
+            $_extra .= ' ' . $minute_extra;
+        }
+
+        $_html_minutes = '<select name="' . $_name . '"';
+        if ($minute_id !== null || $all_id !== null) {
+            $_html_minutes .= ' id="' . smarty_function_escape_special_chars(
+                $minute_id !== null ? ( $minute_id ? $minute_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
+            ) . '"';
+        }
+        if ($minute_size) {
+            $_html_minutes .= ' size="' . $minute_size . '"';
+        }
+        $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
+
+        if (isset($minute_empty) || isset($all_empty)) {
+            $_html_minutes .= '<option value="">' . ( isset($minute_empty) ? $minute_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+
+        $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
+        for ($i=0; $i <= 59; $i += $minute_interval) {
+            $_val = sprintf('%02d', $i);
+            $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
+            $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
+            $_html_minutes .= '<option value="' . $_value . '"'
+                . ($selected === $i ? ' selected="selected"' : '')
+                . '>' . $_text . '</option>' . $option_separator;
+        }
+
+        $_html_minutes .= '</select>';
+    }
+
+    // generate second <select>
+    if ($display_seconds) {
+        $_html_seconds = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        }
+        if ($second_extra) {
+            $_extra .= ' ' . $second_extra;
+        }
+
+        $_html_seconds = '<select name="' . $_name . '"';
+        if ($second_id !== null || $all_id !== null) {
+            $_html_seconds .= ' id="' . smarty_function_escape_special_chars(
+                $second_id !== null ? ( $second_id ? $second_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
+            ) . '"';
+        }
+        if ($second_size) {
+            $_html_seconds .= ' size="' . $second_size . '"';
+        }
+        $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
+
+        if (isset($second_empty) || isset($all_empty)) {
+            $_html_seconds .= '<option value="">' . ( isset($second_empty) ? $second_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+
+        $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
+        for ($i=0; $i <= 59; $i += $second_interval) {
+            $_val = sprintf('%02d', $i);
+            $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
+            $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
+            $_html_seconds .= '<option value="' . $_value . '"'
+                . ($selected === $i ? ' selected="selected"' : '')
+                . '>' . $_text . '</option>' . $option_separator;
+        }
+
+        $_html_seconds .= '</select>';
+    }
+
+    // generate meridian <select>
+    if ($display_meridian && !$use_24_hours) {
+        $_html_meridian = '';
+        $_extra = '';
+        $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
+        if ($all_extra) {
+            $_extra .= ' ' . $all_extra;
+        }
+        if ($meridian_extra) {
+            $_extra .= ' ' . $meridian_extra;
+        }
+
+        $_html_meridian = '<select name="' . $_name . '"';
+        if ($meridian_id !== null || $all_id !== null) {
+            $_html_meridian .= ' id="' . smarty_function_escape_special_chars(
+                $meridian_id !== null ? ( $meridian_id ? $meridian_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
+            ) . '"';
+        }
+        if ($meridian_size) {
+            $_html_meridian .= ' size="' . $meridian_size . '"';
+        }
+        $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
+
+        if (isset($meridian_empty) || isset($all_empty)) {
+            $_html_meridian .= '<option value="">' . ( isset($meridian_empty) ? $meridian_empty : $all_empty ) . '</option>' . $option_separator;
+        }
+
+        $_html_meridian .= '<option value="am"'. ($_hour < 12 ? ' selected="selected"' : '') .'>AM</option>' . $option_separator
+            . '<option value="pm"'. ($_hour < 12 ? '' : ' selected="selected"') .'>PM</option>' . $option_separator
+            . '</select>';
+    }
+
+    $_html = '';
+    foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) {
+        if (isset($$k)) {
+            if ($_html) {
+                $_html .= $field_separator;
+            }
+            $_html .= $$k;
+        }
+    }
+
+    return $_html;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_table.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_table.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.html_table.php	(revision 25596)
@@ -0,0 +1,177 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {html_table} function plugin
+ *
+ * Type:     function<br>
+ * Name:     html_table<br>
+ * Date:     Feb 17, 2003<br>
+ * Purpose:  make an html table from an array of data<br>
+ * Params:
+ * <pre>
+ * - loop       - array to loop through
+ * - cols       - number of columns, comma separated list of column names
+ *                or array of column names
+ * - rows       - number of rows
+ * - table_attr - table attributes
+ * - th_attr    - table heading attributes (arrays are cycled)
+ * - tr_attr    - table row attributes (arrays are cycled)
+ * - td_attr    - table cell attributes (arrays are cycled)
+ * - trailpad   - value to pad trailing cells with
+ * - caption    - text for caption element
+ * - vdir       - vertical direction (default: "down", means top-to-bottom)
+ * - hdir       - horizontal direction (default: "right", means left-to-right)
+ * - inner      - inner loop (default "cols": print $loop line by line,
+ *                $loop will be printed column by column otherwise)
+ * </pre>
+ * Examples:
+ * <pre>
+ * {table loop=$data}
+ * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
+ * {table loop=$data cols="first,second,third" tr_attr=$colors}
+ * </pre>
+ *
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
+ * @author credit to boots <boots dot smarty at yahoo dot com>
+ * @version 1.1
+ * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
+ *          (Smarty online manual)
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string
+ */
+function smarty_function_html_table($params, $template)
+{
+    $table_attr = 'border="1"';
+    $tr_attr = '';
+    $th_attr = '';
+    $td_attr = '';
+    $cols = $cols_count = 3;
+    $rows = 3;
+    $trailpad = '&nbsp;';
+    $vdir = 'down';
+    $hdir = 'right';
+    $inner = 'cols';
+    $caption = '';
+    $loop = null;
+
+    if (!isset($params['loop'])) {
+        trigger_error("html_table: missing 'loop' parameter",E_USER_WARNING);
+        return;
+    }
+
+    foreach ($params as $_key => $_value) {
+        switch ($_key) {
+            case 'loop':
+                $$_key = (array)$_value;
+                break;
+
+            case 'cols':
+                if (is_array($_value) && !empty($_value)) {
+                    $cols = $_value;
+                    $cols_count = count($_value);
+                } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
+                    $cols = explode(',', $_value);
+                    $cols_count = count($cols);
+                } elseif (!empty($_value)) {
+                    $cols_count = (int)$_value;
+                } else {
+                    $cols_count = $cols;
+                }
+                break;
+
+            case 'rows':
+                $$_key = (int)$_value;
+                break;
+
+            case 'table_attr':
+            case 'trailpad':
+            case 'hdir':
+            case 'vdir':
+            case 'inner':
+            case 'caption':
+                $$_key = (string)$_value;
+                break;
+
+            case 'tr_attr':
+            case 'td_attr':
+            case 'th_attr':
+                $$_key = $_value;
+                break;
+        }
+    }
+
+    $loop_count = count($loop);
+    if (empty($params['rows'])) {
+        /* no rows specified */
+        $rows = ceil($loop_count / $cols_count);
+    } elseif (empty($params['cols'])) {
+        if (!empty($params['rows'])) {
+            /* no cols specified, but rows */
+            $cols_count = ceil($loop_count / $rows);
+        }
+    }
+
+    $output = "<table $table_attr>\n";
+
+    if (!empty($caption)) {
+        $output .= '<caption>' . $caption . "</caption>\n";
+    }
+
+    if (is_array($cols)) {
+        $cols = ($hdir == 'right') ? $cols : array_reverse($cols);
+        $output .= "<thead><tr>\n";
+
+        for ($r = 0; $r < $cols_count; $r++) {
+            $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
+            $output .= $cols[$r];
+            $output .= "</th>\n";
+        }
+        $output .= "</tr></thead>\n";
+    }
+
+    $output .= "<tbody>\n";
+    for ($r = 0; $r < $rows; $r++) {
+        $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
+        $rx = ($vdir == 'down') ? $r * $cols_count : ($rows-1 - $r) * $cols_count;
+
+        for ($c = 0; $c < $cols_count; $c++) {
+            $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count-1 - $c;
+            if ($inner != 'cols') {
+                /* shuffle x to loop over rows*/
+                $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
+            }
+
+            if ($x < $loop_count) {
+                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
+            } else {
+                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
+            }
+        }
+        $output .= "</tr>\n";
+    }
+    $output .= "</tbody>\n";
+    $output .= "</table>\n";
+
+    return $output;
+}
+
+function smarty_function_html_table_cycle($name, $var, $no)
+{
+    if (!is_array($var)) {
+        $ret = $var;
+    } else {
+        $ret = $var[$no % count($var)];
+    }
+
+    return ($ret) ? ' ' . $ret : '';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.mailto.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.mailto.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.mailto.php	(revision 25596)
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {mailto} function plugin
+ *
+ * Type:     function<br>
+ * Name:     mailto<br>
+ * Date:     May 21, 2002
+ * Purpose:  automate mailto address link creation, and optionally encode them.<br>
+ * Params:
+ * <pre>
+ * - address    - (required) - e-mail address
+ * - text       - (optional) - text to display, default is address
+ * - encode     - (optional) - can be one of:
+ *                             * none : no encoding (default)
+ *                             * javascript : encode with javascript
+ *                             * javascript_charcode : encode with javascript charcode
+ *                             * hex : encode with hexidecimal (no javascript)
+ * - cc         - (optional) - address(es) to carbon copy
+ * - bcc        - (optional) - address(es) to blind carbon copy
+ * - subject    - (optional) - e-mail subject
+ * - newsgroups - (optional) - newsgroup(s) to post to
+ * - followupto - (optional) - address(es) to follow up to
+ * - extra      - (optional) - extra tags for the href link
+ * </pre>
+ * Examples:
+ * <pre>
+ * {mailto address="me@domain.com"}
+ * {mailto address="me@domain.com" encode="javascript"}
+ * {mailto address="me@domain.com" encode="hex"}
+ * {mailto address="me@domain.com" subject="Hello to you!"}
+ * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
+ * {mailto address="me@domain.com" extra='class="mailto"'}
+ * </pre>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
+ *          (Smarty online manual)
+ * @version 1.2
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string
+ */
+function smarty_function_mailto($params, $template)
+{
+    static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
+    $extra = '';
+
+    if (empty($params['address'])) {
+        trigger_error("mailto: missing 'address' parameter",E_USER_WARNING);
+        return;
+    } else {
+        $address = $params['address'];
+    }
+
+    $text = $address;
+    // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+    // so, don't encode it.
+    $search = array('%40', '%2C');
+    $replace = array('@', ',');
+    $mail_parms = array();
+    foreach ($params as $var => $value) {
+        switch ($var) {
+            case 'cc':
+            case 'bcc':
+            case 'followupto':
+                if (!empty($value))
+                    $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
+                break;
+
+            case 'subject':
+            case 'newsgroups':
+                $mail_parms[] = $var . '=' . rawurlencode($value);
+                break;
+
+            case 'extra':
+            case 'text':
+                $$var = $value;
+
+            default:
+        }
+    }
+
+    if ($mail_parms) {
+        $address .= '?' . join('&', $mail_parms);
+    }
+    
+    $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
+    if (!isset($_allowed_encoding[$encode])) {
+        trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING);
+        return;
+    }
+    // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
+    if ($encode == 'javascript') {
+        $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
+
+        $js_encode = '';
+        for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+            $js_encode .= '%' . bin2hex($string[$x]);
+        }
+
+        return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
+    } elseif ($encode == 'javascript_charcode') {
+        $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
+
+        for($x = 0, $y = strlen($string); $x < $y; $x++) {
+            $ord[] = ord($string[$x]);
+        }
+
+        $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"
+            . "{document.write(String.fromCharCode("
+            . implode(',', $ord)
+            . "))"
+            . "}\n"
+            . "</script>\n";
+
+        return $_ret;
+    } elseif ($encode == 'hex') {
+        preg_match('!^(.*)(\?.*)$!', $address, $match);
+        if (!empty($match[2])) {
+            trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.",E_USER_WARNING);
+            return;
+        }
+        $address_encode = '';
+        for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
+            if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) {
+                $address_encode .= '%' . bin2hex($address[$x]);
+            } else {
+                $address_encode .= $address[$x];
+            }
+        }
+        $text_encode = '';
+        for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
+            $text_encode .= '&#x' . bin2hex($text[$x]) . ';';
+        }
+
+        $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
+        return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
+    } else {
+        // no encoding
+        return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/function.math.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/function.math.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/function.math.php	(revision 25596)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * This plugin is only for Smarty2 BC
+ * @package Smarty
+ * @subpackage PluginsFunction
+ */
+
+/**
+ * Smarty {math} function plugin
+ *
+ * Type:     function<br>
+ * Name:     math<br>
+ * Purpose:  handle math computations in template
+ *
+ * @link http://www.smarty.net/manual/en/language.function.math.php {math}
+ *          (Smarty online manual)
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param array                    $params   parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string|null
+ */
+function smarty_function_math($params, $template)
+{
+    static $_allowed_funcs = array(
+        'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
+        'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true,
+        'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true ,'tan' => true
+    );
+    // be sure equation parameter is present
+    if (empty($params['equation'])) {
+        trigger_error("math: missing equation parameter",E_USER_WARNING);
+        return;
+    }
+
+    $equation = $params['equation'];
+
+    // make sure parenthesis are balanced
+    if (substr_count($equation,"(") != substr_count($equation,")")) {
+        trigger_error("math: unbalanced parenthesis",E_USER_WARNING);
+        return;
+    }
+
+    // match all vars in equation, make sure all are passed
+    preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!",$equation, $match);
+
+    foreach($match[1] as $curr_var) {
+        if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
+            trigger_error("math: function call $curr_var not allowed",E_USER_WARNING);
+            return;
+        }
+    }
+
+    foreach($params as $key => $val) {
+        if ($key != "equation" && $key != "format" && $key != "assign") {
+            // make sure value is not empty
+            if (strlen($val)==0) {
+                trigger_error("math: parameter $key is empty",E_USER_WARNING);
+                return;
+            }
+            if (!is_numeric($val)) {
+                trigger_error("math: parameter $key: is not numeric",E_USER_WARNING);
+                return;
+            }
+            $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+        }
+    }
+    $smarty_math_result = null;
+    eval("\$smarty_math_result = ".$equation.";");
+
+    if (empty($params['format'])) {
+        if (empty($params['assign'])) {
+            return $smarty_math_result;
+        } else {
+            $template->assign($params['assign'],$smarty_math_result);
+        }
+    } else {
+        if (empty($params['assign'])){
+            printf($params['format'],$smarty_math_result);
+        } else {
+            $template->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
+        }
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.capitalize.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.capitalize.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.capitalize.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty capitalize modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     capitalize<br>
+ * Purpose:  capitalize words in the string
+ *
+ * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
+ *
+ * @param string  $string    string to capitalize
+ * @param boolean $uc_digits also capitalize "x123" to "X123"
+ * @param boolean $lc_rest   capitalize first letters, lowercase all following letters "aAa" to "Aaa"
+ * @return string capitalized string
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @author Rodney Rehm
+ */
+function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
+{
+    if (Smarty::$_MBSTRING) {
+        if ($lc_rest) {
+            // uppercase (including hyphenated words)
+            $upper_string = mb_convert_case( $string, MB_CASE_TITLE, Smarty::$_CHARSET );
+        } else {
+            // uppercase word breaks
+            $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!eS" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').mb_convert_case(stripslashes('\\2'),MB_CASE_UPPER, '" . addslashes(Smarty::$_CHARSET) . "')", $string);
+        }
+        // check uc_digits case
+        if (!$uc_digits) {
+            if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
+                foreach($matches[1] as $match) {
+                    $upper_string = substr_replace($upper_string, mb_strtolower($match[0], Smarty::$_CHARSET), $match[1], strlen($match[0]));
+                }
+            } 
+        }
+        $upper_string = preg_replace("!((^|\s)['\"])(\w)!e" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').mb_convert_case(stripslashes('\\3'),MB_CASE_UPPER, '" . addslashes(Smarty::$_CHARSET) . "')", $upper_string);
+        return $upper_string;
+    }
+    
+    // lowercase first
+    if ($lc_rest) {
+        $string = strtolower($string);
+    }
+    // uppercase (including hyphenated words)
+    $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!eS" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').ucfirst(stripslashes('\\2'))", $string); 
+    // check uc_digits case
+    if (!$uc_digits) {
+        if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
+            foreach($matches[1] as $match) {
+                $upper_string = substr_replace($upper_string, strtolower($match[0]), $match[1], strlen($match[0]));
+            }
+        } 
+    }
+    $upper_string = preg_replace("!((^|\s)['\"])(\w)!e" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').strtoupper(stripslashes('\\3'))", $upper_string);
+    return $upper_string;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.date_format.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.date_format.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.date_format.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty date_format modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     date_format<br>
+ * Purpose:  format datestamps via strftime<br>
+ * Input:<br>
+ *          - string: input date string
+ *          - format: strftime format for output
+ *          - default_date: default date if $string is empty
+ * 
+ * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @param string $string       input date string
+ * @param string $format       strftime format for output
+ * @param string $default_date default date if $string is empty
+ * @param string $formatter    either 'strftime' or 'auto'
+ * @return string |void
+ * @uses smarty_make_timestamp()
+ */
+function smarty_modifier_date_format($string, $format=null, $default_date='', $formatter='auto')
+{
+    if ($format === null) {
+        $format = Smarty::$_DATE_FORMAT;
+    }
+    /**
+    * Include the {@link shared.make_timestamp.php} plugin
+    */
+    require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
+    if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
+        $timestamp = smarty_make_timestamp($string);
+    } elseif ($default_date != '') {
+        $timestamp = smarty_make_timestamp($default_date);
+    } else {
+        return;
+    } 
+    if($formatter=='strftime'||($formatter=='auto'&&strpos($format,'%')!==false)) {
+        if (DS == '\\') {
+            $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
+            $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
+            if (strpos($format, '%e') !== false) {
+                $_win_from[] = '%e';
+                $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
+            } 
+            if (strpos($format, '%l') !== false) {
+                $_win_from[] = '%l';
+                $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
+            } 
+            $format = str_replace($_win_from, $_win_to, $format);
+        } 
+        return strftime($format, $timestamp);
+    } else {
+        return date($format, $timestamp);
+    }
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.debug_print_var.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.debug_print_var.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.debug_print_var.php	(revision 25596)
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Smarty plugin
+ * 
+ * @package Smarty
+ * @subpackage Debug
+ */
+
+/**
+ * Smarty debug_print_var modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     debug_print_var<br>
+ * Purpose:  formats variable contents for display in the console
+ *
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @param array|object $var     variable to be formatted
+ * @param integer      $depth   maximum recursion depth if $var is an array
+ * @param integer      $length  maximum string length if $var is a string
+ * @return string 
+ */
+function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
+{
+    $_replace = array("\n" => '<i>\n</i>',
+        "\r" => '<i>\r</i>',
+        "\t" => '<i>\t</i>'
+        );
+
+    switch (gettype($var)) {
+        case 'array' :
+            $results = '<b>Array (' . count($var) . ')</b>';
+            foreach ($var as $curr_key => $curr_val) {
+                $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
+                 . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
+                 . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+                $depth--;
+            } 
+            break;
+            
+        case 'object' :
+            $object_vars = get_object_vars($var);
+            $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
+            foreach ($object_vars as $curr_key => $curr_val) {
+                $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
+                 . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
+                 . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+                $depth--;
+            } 
+            break;
+            
+        case 'boolean' :
+        case 'NULL' :
+        case 'resource' :
+            if (true === $var) {
+                $results = 'true';
+            } elseif (false === $var) {
+                $results = 'false';
+            } elseif (null === $var) {
+                $results = 'null';
+            } else {
+                $results = htmlspecialchars((string) $var);
+            } 
+            $results = '<i>' . $results . '</i>';
+            break;
+            
+        case 'integer' :
+        case 'float' :
+            $results = htmlspecialchars((string) $var);
+            break;
+            
+        case 'string' :
+            $results = strtr($var, $_replace);
+            if (Smarty::$_MBSTRING) {
+                if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
+                    $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
+                }
+            } else {
+                if (isset($var[$length])) {
+                    $results = substr($var, 0, $length - 3) . '...';
+                }
+            }
+
+            $results = htmlspecialchars('"' . $results . '"');
+            break;
+            
+        case 'unknown type' :
+        default :
+            $results = strtr((string) $var, $_replace);
+            if (Smarty::$_MBSTRING) {
+                if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
+                    $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
+                }
+            } else {
+                if (strlen($results) > $length) {
+                    $results = substr($results, 0, $length - 3) . '...';
+                }
+            }
+             
+            $results = htmlspecialchars($results);
+    } 
+
+    return $results;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.escape.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.escape.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.escape.php	(revision 25596)
@@ -0,0 +1,188 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty escape modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     escape<br>
+ * Purpose:  escape string for output
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param string  $string        input string
+ * @param string  $esc_type      escape type
+ * @param string  $char_set      character set, used for htmlspecialchars() or htmlentities()
+ * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ * @return string escaped input string
+ */
+function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
+{
+    static $_double_encode = null;
+    if ($_double_encode === null) {
+        $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
+    }
+    
+    if (!$char_set) {
+        $char_set = Smarty::$_CHARSET;
+    }
+
+    switch ($esc_type) {
+        case 'html':
+            if ($_double_encode) {
+                // php >=5.3.2 - go native
+                return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+            } else {
+                if ($double_encode) {
+                    // php <5.2.3 - only handle double encoding
+                    return htmlspecialchars($string, ENT_QUOTES, $char_set);
+                } else {
+                    // php <5.2.3 - prevent double encoding
+                    $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+                    $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+                    $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+                    return $string;
+                }
+            }
+
+        case 'htmlall':
+            if (Smarty::$_MBSTRING) {
+                // mb_convert_encoding ignores htmlspecialchars()
+                if ($_double_encode) {
+                    // php >=5.3.2 - go native
+                    $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+                } else {
+                    if ($double_encode) {
+                        // php <5.2.3 - only handle double encoding
+                        $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+                    } else {
+                        // php <5.2.3 - prevent double encoding
+                        $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+                        $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
+                        $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+                        return $string;
+                    }
+                }
+                
+                // htmlentities() won't convert everything, so use mb_convert_encoding
+                return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
+            }
+
+            // no MBString fallback
+            if ($_double_encode) {
+                return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
+            } else {
+                if ($double_encode) {
+                    return htmlentities($string, ENT_QUOTES, $char_set);
+                } else {
+                    $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+                    $string = htmlentities($string, ENT_QUOTES, $char_set);
+                    $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+                    return $string;
+                }
+            }
+
+        case 'url':
+            return rawurlencode($string);
+
+        case 'urlpathinfo':
+            return str_replace('%2F', '/', rawurlencode($string));
+
+        case 'quotes':
+            // escape unescaped single quotes
+            return preg_replace("%(?<!\\\\)'%", "\\'", $string);
+
+        case 'hex':
+            // escape every byte into hex
+            // Note that the UTF-8 encoded character ä will be represented as %c3%a4
+            $return = '';
+            $_length = strlen($string);
+            for ($x = 0; $x < $_length; $x++) {
+                $return .= '%' . bin2hex($string[$x]);
+            }
+            return $return;
+
+        case 'hexentity':
+            $return = '';
+            if (Smarty::$_MBSTRING) {
+                require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+                $return = '';
+                foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+                    $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
+                }
+                return $return;
+            }
+            // no MBString fallback
+            $_length = strlen($string);
+            for ($x = 0; $x < $_length; $x++) {
+                $return .= '&#x' . bin2hex($string[$x]) . ';';
+            }
+            return $return;
+
+        case 'decentity':
+            $return = '';
+            if (Smarty::$_MBSTRING) {
+                require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+                $return = '';
+                foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+                    $return .= '&#' . $unicode . ';';
+                }
+                return $return;
+            }
+            // no MBString fallback
+            $_length = strlen($string);
+            for ($x = 0; $x < $_length; $x++) {
+                $return .= '&#' . ord($string[$x]) . ';';
+            }
+            return $return;
+
+        case 'javascript':
+            // escape quotes and backslashes, newlines, etc.
+            return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/'));
+
+        case 'mail':
+            if (Smarty::$_MBSTRING) {
+                require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+                return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
+            }
+            // no MBString fallback
+            return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
+
+        case 'nonstd':
+            // escape non-standard chars, such as ms document quotes
+            $return = '';
+            if (Smarty::$_MBSTRING) {
+                require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
+                foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
+                    if ($unicode >= 126) {
+                        $return .= '&#' . $unicode . ';';
+                    } else {
+                        $return .= chr($unicode);
+                    }
+                }
+                return $return;
+            }
+
+            $_length = strlen($string);
+            for ($_i = 0; $_i < $_length; $_i++) {
+                $_ord = ord(substr($string, $_i, 1));
+                // non-standard char, escape it
+                if ($_ord >= 126) {
+                    $return .= '&#' . $_ord . ';';
+                } else {
+                    $return .= substr($string, $_i, 1);
+                }
+            }
+            return $return;
+
+        default:
+            return $string;
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.regex_replace.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.regex_replace.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.regex_replace.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty regex_replace modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     regex_replace<br>
+ * Purpose:  regular expression search/replace
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
+ *          regex_replace (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @param string       $string   input string
+ * @param string|array $search   regular expression(s) to search for
+ * @param string|array $replace  string(s) that should be replaced
+ * @return string
+ */
+function smarty_modifier_regex_replace($string, $search, $replace)
+{
+    if(is_array($search)) {
+        foreach($search as $idx => $s) {
+            $search[$idx] = _smarty_regex_replace_check($s);
+        }
+    } else {
+        $search = _smarty_regex_replace_check($search);
+    }
+    return preg_replace($search, $replace, $string);
+}
+
+/**
+ * @param  string $search string(s) that should be replaced
+ * @return string
+ * @ignore
+ */
+function _smarty_regex_replace_check($search)
+{
+    // null-byte injection detection
+    // anything behind the first null-byte is ignored
+    if (($pos = strpos($search,"\0")) !== false) {
+        $search = substr($search,0,$pos);
+    }
+    // remove eval-modifier from $search
+    if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
+        $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
+    }
+    return $search;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.replace.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.replace.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.replace.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty replace modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     replace<br>
+ * Purpose:  simple search/replace
+ * 
+ * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @author Uwe Tews 
+ * @param string $string  input string
+ * @param string $search  text to search for
+ * @param string $replace replacement text
+ * @return string 
+ */
+function smarty_modifier_replace($string, $search, $replace)
+{
+    if (Smarty::$_MBSTRING) {
+        require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+        return smarty_mb_str_replace($search, $replace, $string);
+    }
+    
+    return str_replace($search, $replace, $string);
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.spacify.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.spacify.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.spacify.php	(revision 25596)
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+
+/**
+ * Smarty spacify modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     spacify<br>
+ * Purpose:  add spaces between characters in a string
+ * 
+ * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @param string $string       input string
+ * @param string $spacify_char string to insert between characters.
+ * @return string
+ */
+function smarty_modifier_spacify($string, $spacify_char = ' ')
+{
+    // well… what about charsets besides latin and UTF-8?
+    return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.truncate.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.truncate.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifier.truncate.php	(revision 25596)
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifier
+ */
+ 
+/**
+ * Smarty truncate modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     truncate<br>
+ * Purpose:  Truncate a string to a certain length if necessary,
+ *               optionally splitting in the middle of a word, and
+ *               appending the $etc string or inserting $etc into the middle.
+ * 
+ * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com> 
+ * @param string  $string      input string
+ * @param integer $length      length of truncated text
+ * @param string  $etc         end string
+ * @param boolean $break_words truncate at word boundary
+ * @param boolean $middle      truncate in the middle of text
+ * @return string truncated string
+ */
+function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) {
+    if ($length == 0)
+        return '';
+
+    if (Smarty::$_MBSTRING) {
+        if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
+            $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
+            if (!$break_words && !$middle) {
+                $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
+            } 
+            if (!$middle) {
+                return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
+            }
+            return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
+        }
+        return $string;
+    }
+    
+    // no MBString fallback
+    if (isset($string[$length])) {
+        $length -= min($length, strlen($etc));
+        if (!$break_words && !$middle) {
+            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
+        } 
+        if (!$middle) {
+            return substr($string, 0, $length) . $etc;
+        }
+        return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
+    }
+    return $string;
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.cat.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.cat.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.cat.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty cat modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     cat<br>
+ * Date:     Feb 24, 2003<br>
+ * Purpose:  catenate a value to a variable<br>
+ * Input:    string to catenate<br>
+ * Example:  {$var|cat:"foo"}
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
+ *          (Smarty online manual)
+ * @author   Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_cat($params, $compiler)
+{
+    return '('.implode(').(', $params).')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_characters.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_characters.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_characters.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_characters modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_characteres<br>
+ * Purpose:  count the number of characters in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_characters($params, $compiler)
+{
+    if (!isset($params[1]) || $params[1] != 'true') {
+        return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';
+    }
+    if (Smarty::$_MBSTRING) {
+        return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+    }
+    // no MBString fallback
+    return 'strlen(' . $params[0] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_paragraphs.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_paragraphs.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_paragraphs.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_paragraphs modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_paragraphs<br>
+ * Purpose:  count the number of paragraphs in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ *          count_paragraphs (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_paragraphs($params, $compiler)
+{
+    // count \r or \n characters
+    return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_sentences.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_sentences.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_sentences.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_sentences modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_sentences
+ * Purpose:  count the number of sentences in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ *          count_sentences (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_sentences($params, $compiler)
+{
+    // find periods, question marks, exclamation marks with a word before but not after.
+    return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_words.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_words.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.count_words.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_words modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     count_words<br>
+ * Purpose:  count the number of words in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+*/
+function smarty_modifiercompiler_count_words($params, $compiler)
+{
+    if (Smarty::$_MBSTRING) {
+        // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+        // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
+        return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+    }
+    // no MBString fallback
+    return 'str_word_count(' . $params[0] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.default.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.default.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.default.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty default modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     default<br>
+ * Purpose:  designate default value for empty variables
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_default ($params, $compiler)
+{
+    $output = $params[0];
+    if (!isset($params[1])) {
+        $params[1] = "''";
+    }
+    
+    array_shift($params);
+    foreach ($params as $param) {
+        $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
+    }
+    return $output;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.escape.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.escape.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.escape.php	(revision 25596)
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * @ignore
+ */
+require_once( SMARTY_PLUGINS_DIR .'shared.literal_compiler_param.php' );
+
+/**
+ * Smarty escape modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     escape<br>
+ * Purpose:  escape string for output
+ *
+ * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
+ * @author Rodney Rehm
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_escape($params, $compiler)
+{
+    static $_double_encode = null;
+    if ($_double_encode === null) {
+        $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
+    }
+    
+    try {
+        $esc_type = smarty_literal_compiler_param($params, 1, 'html');
+        $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
+        $double_encode = smarty_literal_compiler_param($params, 3, true);
+
+        if (!$char_set) {
+            $char_set = Smarty::$_CHARSET;
+        }
+
+        switch ($esc_type) {
+            case 'html':
+                if ($_double_encode) {
+                    return 'htmlspecialchars('
+                        . $params[0] .', ENT_QUOTES, '
+                        . var_export($char_set, true) . ', '
+                        . var_export($double_encode, true) . ')';
+                } else if ($double_encode) {
+                    return 'htmlspecialchars('
+                        . $params[0] .', ENT_QUOTES, '
+                        . var_export($char_set, true) . ')';
+                } else {
+                    // fall back to modifier.escape.php
+                }
+
+            case 'htmlall':
+                if (Smarty::$_MBSTRING) {
+                    if ($_double_encode) {
+                        // php >=5.2.3 - go native
+                        return 'mb_convert_encoding(htmlspecialchars('
+                            . $params[0] .', ENT_QUOTES, '
+                            . var_export($char_set, true) . ', '
+                            . var_export($double_encode, true)
+                            . '), "HTML-ENTITIES", '
+                            . var_export($char_set, true) . ')';
+                    } else if ($double_encode) {
+                        // php <5.2.3 - only handle double encoding
+                        return 'mb_convert_encoding(htmlspecialchars('
+                            . $params[0] .', ENT_QUOTES, '
+                            . var_export($char_set, true)
+                            . '), "HTML-ENTITIES", '
+                            . var_export($char_set, true) . ')';
+                    } else {
+                        // fall back to modifier.escape.php
+                    }
+                }
+
+                // no MBString fallback
+                if ($_double_encode) {
+                    // php >=5.2.3 - go native
+                    return 'htmlentities('
+                        . $params[0] .', ENT_QUOTES, '
+                        . var_export($char_set, true) . ', '
+                        . var_export($double_encode, true) . ')';
+                } else if ($double_encode) {
+                    // php <5.2.3 - only handle double encoding
+                    return 'htmlentities('
+                        . $params[0] .', ENT_QUOTES, '
+                        . var_export($char_set, true) . ')';
+                } else {
+                    // fall back to modifier.escape.php
+                }
+
+            case 'url':
+                return 'rawurlencode(' . $params[0] . ')';
+
+            case 'urlpathinfo':
+                return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))';
+
+            case 'quotes':
+                // escape unescaped single quotes
+                return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')';
+
+            case 'javascript':
+                // escape quotes and backslashes, newlines, etc.
+                return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
+
+        }
+    } catch(SmartyException $e) {
+        // pass through to regular plugin fallback
+    }
+
+    // could not optimize |escape call, so fallback to regular plugin
+    if ($compiler->tag_nocache | $compiler->nocache) {
+        $compiler->template->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR .'modifier.escape.php';
+        $compiler->template->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+    } else {
+        $compiler->template->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR .'modifier.escape.php';
+        $compiler->template->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+    }
+    return 'smarty_modifier_escape(' . join( ', ', $params ) . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.from_charset.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.from_charset.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.from_charset.php	(revision 25596)
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty from_charset modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     from_charset<br>
+ * Purpose:  convert character encoding from $charset to internal encoding
+ *
+ * @author Rodney Rehm
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_from_charset($params, $compiler)
+{
+    if (!Smarty::$_MBSTRING) {
+        // FIXME: (rodneyrehm) shouldn't this throw an error?
+        return $params[0];
+    }
+
+    if (!isset($params[1])) {
+        $params[1] = '"ISO-8859-1"';
+    }
+
+    return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.indent.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.indent.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.indent.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty indent modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     indent<br>
+ * Purpose:  indent lines of text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_indent($params, $compiler)
+{
+    if (!isset($params[1])) {
+        $params[1] = 4;
+    }
+    if (!isset($params[2])) {
+        $params[2] = "' '";
+    }
+    return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.lower.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.lower.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.lower.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty lower modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     lower<br>
+ * Purpose:  convert string to lowercase
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_lower($params, $compiler)
+{
+    if (Smarty::$_MBSTRING) {
+        return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')' ;
+    }
+    // no MBString fallback
+    return 'strtolower(' . $params[0] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.noprint.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.noprint.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.noprint.php	(revision 25596)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty noprint modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     noprint<br>
+ * Purpose:  return an empty string
+ *
+ * @author   Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_noprint($params, $compiler)
+{
+    return "''";
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.string_format.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.string_format.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.string_format.php	(revision 25596)
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty string_format modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     string_format<br>
+ * Purpose:  format strings via sprintf
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_string_format($params, $compiler)
+{
+    return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     strip<br>
+ * Purpose:  Replace all repeated spaces, newlines, tabs
+ *              with a single space or supplied replacement string.<br>
+ * Example:  {$var|strip} {$var|strip:"&nbsp;"}<br>
+ * Date:     September 25th, 2002
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_strip($params, $compiler)
+{
+    if (!isset($params[1])) {
+        $params[1] = "' '";
+    }
+    return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip_tags.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip_tags.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.strip_tags.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip_tags modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     strip_tags<br>
+ * Purpose:  strip html tags from text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual)
+ * @author Uwe Tews
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_strip_tags($params, $compiler)
+{
+   if (!isset($params[1])) {
+        $params[1] = true;
+    }
+    if ($params[1] === true) {
+        return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
+    } else {
+        return 'strip_tags(' . $params[0] . ')';
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.to_charset.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.to_charset.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.to_charset.php	(revision 25596)
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty to_charset modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     to_charset<br>
+ * Purpose:  convert character encoding from internal encoding to $charset
+ *
+ * @author Rodney Rehm
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_to_charset($params, $compiler)
+{
+    if (!Smarty::$_MBSTRING) {
+        // FIXME: (rodneyrehm) shouldn't this throw an error?
+        return $params[0];
+    }
+
+    if (!isset($params[1])) {
+        $params[1] = '"ISO-8859-1"';
+    }
+
+    return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.unescape.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.unescape.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.unescape.php	(revision 25596)
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty unescape modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     unescape<br>
+ * Purpose:  unescape html entities
+ *
+ * @author Rodney Rehm
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_unescape($params, $compiler)
+{
+    if (!isset($params[1])) {
+        $params[1] = 'html';
+    }
+    if (!isset($params[2])) {
+        $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
+    } else {
+        $params[2] = "'" . $params[2] . "'";
+    }
+
+    switch (trim($params[1], '"\'')) {
+        case 'entity':
+        case 'htmlall':
+            if (Smarty::$_MBSTRING) {
+                return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')';
+            }
+
+            return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')';
+
+        case 'html':
+            return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)';
+
+        case 'url':
+            return 'rawurldecode(' . $params[0] . ')';
+
+        default:
+            return $params[0];
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.upper.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.upper.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.upper.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty upper modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     lower<br>
+ * Purpose:  convert string to uppercase
+ * 
+ * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
+ * @author Uwe Tews 
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_upper($params, $compiler)
+{
+    if (Smarty::$_MBSTRING) {
+        return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')' ;
+    }
+    // no MBString fallback
+    return 'strtoupper(' . $params[0] . ')';
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.wordwrap.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.wordwrap.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/modifiercompiler.wordwrap.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty wordwrap modifier plugin
+ * 
+ * Type:     modifier<br>
+ * Name:     wordwrap<br>
+ * Purpose:  wrap a string of text at a given length
+ * 
+ * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
+ * @author Uwe Tews 
+ * @param array $params parameters
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_wordwrap($params, $compiler)
+{
+    if (!isset($params[1])) {
+        $params[1] = 80;
+    } 
+    if (!isset($params[2])) {
+        $params[2] = '"\n"';
+    } 
+    if (!isset($params[3])) {
+        $params[3] = 'false';
+    } 
+    $function = 'wordwrap';
+    if (Smarty::$_MBSTRING) {
+        if ($compiler->tag_nocache | $compiler->nocache) {
+            $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR .'shared.mb_wordwrap.php';
+            $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+        } else {
+            $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR .'shared.mb_wordwrap.php';
+            $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+        }
+        $function = 'smarty_mb_wordwrap';
+    }
+    return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/outputfilter.trimwhitespace.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/outputfilter.trimwhitespace.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/outputfilter.trimwhitespace.php	(revision 25596)
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFilter
+ */
+
+/**
+ * Smarty trimwhitespace outputfilter plugin
+ *
+ * Trim unnecessary whitespace from HTML markup.
+ *
+ * @author   Rodney Rehm
+ * @param string                   $source input string
+ * @param Smarty_Internal_Template $smarty Smarty object
+ * @return string filtered output
+ * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
+ */
+function smarty_outputfilter_trimwhitespace($source, Smarty_Internal_Template $smarty)
+{
+    $store = array();
+    $_store = 0;
+    $_offset = 0;
+
+    // Unify Line-Breaks to \n
+    $source = preg_replace("/\015\012|\015|\012/", "\n", $source);
+
+    // capture Internet Explorer Conditional Comments
+    if (preg_match_all('#<!--\[[^\]]+\]>.*?<!\[[^\]]+\]-->#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+        foreach ($matches as $match) {
+            $store[] = $match[0][0];
+            $_length = strlen($match[0][0]);
+            $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+            $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
+
+            $_offset += $_length - strlen($replace);
+            $_store++;
+        }
+    }
+
+    // Strip all HTML-Comments
+    // yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124
+    $source = preg_replace( '#<!--.*?-->#ms', '', $source );
+
+    // capture html elements not to be messed with
+    $_offset = 0;
+    if (preg_match_all('#<(script|pre|textarea)[^>]*>.*?</\\1>#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+        foreach ($matches as $match) {
+            $store[] = $match[0][0];
+            $_length = strlen($match[0][0]);
+            $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+            $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
+
+            $_offset += $_length - strlen($replace);
+            $_store++;
+        }
+    }
+
+    $expressions = array(
+        // replace multiple spaces between tags by a single space
+        // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
+        '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+        // remove spaces between attributes (but not in attribute values!)
+        '#(([a-z0-9]\s*=\s*(["\'])[^\3]*?\3)|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \4',
+        // note: for some very weird reason trim() seems to remove spaces inside attributes.
+        // maybe a \0 byte or something is interfering?
+        '#^\s+<#Ss' => '<',
+        '#>\s+$#Ss' => '>',
+    );
+
+    $source = preg_replace( array_keys($expressions), array_values($expressions), $source );
+    // note: for some very weird reason trim() seems to remove spaces inside attributes.
+    // maybe a \0 byte or something is interfering?
+    // $source = trim( $source );
+
+    // capture html elements not to be messed with
+    $_offset = 0;
+    if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+        foreach ($matches as $match) {
+            $store[] = $match[0][0];
+            $_length = strlen($match[0][0]);
+            $replace = array_shift($store);
+            $source = substr_replace($source, $replace, $match[0][1] + $_offset, $_length);
+
+            $_offset += strlen($replace) - $_length;
+            $_store++;
+        }
+    }
+
+    return $source;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.escape_special_chars.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.escape_special_chars.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.escape_special_chars.php	(revision 25596)
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
+    /**
+     * escape_special_chars common function
+     *
+     * Function: smarty_function_escape_special_chars<br>
+     * Purpose:  used by other smarty functions to escape
+     *           special chars except for already escaped ones
+     *
+     * @author   Monte Ohrt <monte at ohrt dot com>
+     * @param string $string text that should by escaped
+     * @return string
+     */
+    function smarty_function_escape_special_chars($string)
+    {
+        if (!is_array($string)) {
+            $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
+        }
+        return $string;
+    }  
+} else {         
+    /**
+     * escape_special_chars common function
+     *
+     * Function: smarty_function_escape_special_chars<br>
+     * Purpose:  used by other smarty functions to escape
+     *           special chars except for already escaped ones
+     *
+     * @author   Monte Ohrt <monte at ohrt dot com>
+     * @param string $string text that should by escaped
+     * @return string
+     */
+    function smarty_function_escape_special_chars($string)
+    {
+        if (!is_array($string)) {
+            $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
+            $string = htmlspecialchars($string);
+            $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); 
+        }
+        return $string;
+    }                                                                                                             
+} 
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.literal_compiler_param.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.literal_compiler_param.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.literal_compiler_param.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * evaluate compiler parameter
+ *
+ * @param array   $params  parameter array as given to the compiler function
+ * @param integer $index   array index of the parameter to convert
+ * @param mixed   $default value to be returned if the parameter is not present
+ * @return mixed evaluated value of parameter or $default
+ * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
+ * @author Rodney Rehm
+ */
+function smarty_literal_compiler_param($params, $index, $default=null)
+{
+    // not set, go default
+    if (!isset($params[$index])) {
+        return $default;
+    }
+    // test if param is a literal
+    if (!preg_match('/^([\'"]?)[a-zA-Z0-9]+(\\1)$/', $params[$index])) {
+        throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time');
+    }
+
+    $t = null;
+    eval("\$t = " . $params[$index] . ";");
+    return $t;
+}
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.make_timestamp.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.make_timestamp.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.make_timestamp.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * Function: smarty_make_timestamp<br>
+ * Purpose:  used by other smarty functions to make a timestamp from a string.
+ *
+ * @author   Monte Ohrt <monte at ohrt dot com>
+ * @param DateTime|int|string $string  date object, timestamp or string that can be converted using strtotime()
+ * @return int
+ */
+function smarty_make_timestamp($string)
+{
+    if (empty($string)) {
+        // use "now":
+        return time();
+    } elseif ($string instanceof DateTime) {
+        return $string->getTimestamp();
+    } elseif (strlen($string) == 14 && ctype_digit($string)) {
+        // it is mysql timestamp format of YYYYMMDDHHMMSS?
+        return mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2),
+                       substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4));
+    } elseif (is_numeric($string)) {
+        // it is a numeric string, we handle it as timestamp
+        return (int) $string;
+    } else {
+        // strtotime should handle it
+        $time = strtotime($string);
+        if ($time == -1 || $time === false) {
+            // strtotime() was not able to parse $string, use "now":
+            return time();
+        }
+        return $time;
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_str_replace.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_str_replace.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_str_replace.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+if (!function_exists('smarty_mb_str_replace')) {
+
+    /**
+     * Multibyte string replace
+     *
+     * @param string $search  the string to be searched
+     * @param string $replace the replacement string
+     * @param string $subject the source string
+     * @param int    &$count  number of matches found
+     * @return string replaced string
+     * @author Rodney Rehm
+     */
+    function smarty_mb_str_replace($search, $replace, $subject, &$count=0)
+    {
+        if (!is_array($search) && is_array($replace)) {
+            return false;
+        }
+        if (is_array($subject)) {
+            // call mb_replace for each single string in $subject
+            foreach ($subject as &$string) {
+                $string = &smarty_mb_str_replace($search, $replace, $string, $c);
+                $count += $c;
+            }
+        } elseif (is_array($search)) {
+            if (!is_array($replace)) {
+                foreach ($search as &$string) {
+                    $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
+                    $count += $c;
+                }
+            } else {
+                $n = max(count($search), count($replace));
+                while ($n--) {
+                    $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
+                    $count += $c;
+                    next($search);
+                    next($replace);
+                }
+            }
+        } else {
+            $parts = mb_split(preg_quote($search), $subject);
+            $count = count($parts) - 1;
+            $subject = implode($replace, $parts);
+        }
+        return $subject;
+    }
+
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_unicode.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_unicode.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_unicode.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+/**
+ * convert characters to their decimal unicode equivalents
+ *
+ * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ * @param string $string   characters to calculate unicode of
+ * @param string $encoding encoding of $string, if null mb_internal_encoding() is used
+ * @return array sequence of unicodes
+ * @author Rodney Rehm
+ */
+function smarty_mb_to_unicode($string, $encoding=null) {
+    if ($encoding) {
+        $expanded = mb_convert_encoding($string, "UTF-32BE", $encoding);
+    } else {
+        $expanded = mb_convert_encoding($string, "UTF-32BE");
+    }
+    return unpack("N*", $expanded);
+}
+
+/**
+ * convert unicodes to the character of given encoding
+ *
+ * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ * @param integer|array $unicode  single unicode or list of unicodes to convert
+ * @param string        $encoding encoding of returned string, if null mb_internal_encoding() is used
+ * @return string unicode as character sequence in given $encoding
+ * @author Rodney Rehm
+ */
+function smarty_mb_from_unicode($unicode, $encoding=null) {
+    $t = '';
+    if (!$encoding) {
+        $encoding = mb_internal_encoding();
+    }
+    foreach((array) $unicode as $utf32be) {
+        $character = pack("N*", $utf32be);
+        $t .= mb_convert_encoding($character, $encoding, "UTF-32BE");
+    }
+    return $t;
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_wordwrap.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_wordwrap.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/shared.mb_wordwrap.php	(revision 25596)
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Smarty shared plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsShared
+ */
+
+if(!function_exists('smarty_mb_wordwrap')) {
+
+    /**
+     * Wrap a string to a given number of characters
+     *
+     * @link http://php.net/manual/en/function.wordwrap.php for similarity
+     * @param string  $str   the string to wrap
+     * @param int     $width the width of the output
+     * @param string  $break the character used to break the line
+     * @param boolean $cut   ignored parameter, just for the sake of
+     * @return string wrapped string
+     * @author Rodney Rehm
+     */
+    function smarty_mb_wordwrap($str, $width=75, $break="\n", $cut=false)
+    {
+        // break words into tokens using white space as a delimiter
+        $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+        $length = 0;
+        $t = '';
+        $_previous = false;
+
+        foreach ($tokens as $_token) {
+            $token_length = mb_strlen($_token, Smarty::$_CHARSET);
+            $_tokens = array($_token);
+            if ($token_length > $width) {
+                // remove last space
+                $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
+                $_previous = false;
+                $length = 0;
+
+                if ($cut) {
+                    $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+                    // broken words go on a new line
+                    $t .= $break;
+                }
+            }
+
+            foreach ($_tokens as $token) {
+                $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
+                $token_length = mb_strlen($token, Smarty::$_CHARSET);
+                $length += $token_length;
+
+                if ($length > $width) {
+                    // remove space before inserted break
+                    if ($_previous && $token_length < $width) {
+                        $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
+                    }
+
+                    // add the break before the token
+                    $t .= $break;
+                    $length = $token_length;
+
+                    // skip space after inserting a break
+                    if ($_space) {
+                        $length = 0;
+                        continue;
+                    }
+                } else if ($token == "\n") {
+                    // hard break must reset counters
+                    $_previous = 0;
+                    $length = 0;
+                } else {
+                    // remember if we had a space or not
+                    $_previous = $_space;
+                }
+                // add the token
+                $t .= $token;
+            }
+        }
+
+        return $t;
+    }
+
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/plugins/variablefilter.htmlspecialchars.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/plugins/variablefilter.htmlspecialchars.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/plugins/variablefilter.htmlspecialchars.php	(revision 25596)
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsFilter
+ */
+
+/**
+ * Smarty htmlspecialchars variablefilter plugin
+ *
+ * @param string                   $source input string
+ * @param Smarty_Internal_Template $smarty Smarty object
+ * @return string filtered output
+ */
+function smarty_variablefilter_htmlspecialchars($source, $smarty)
+{
+    return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET);
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource.php	(revision 25596)
@@ -0,0 +1,381 @@
+<?php
+/**
+* Smarty Internal Plugin
+*
+* @package Smarty
+* @subpackage Cacher
+*/
+
+/**
+* Cache Handler API
+*
+* @package Smarty
+* @subpackage Cacher
+* @author Rodney Rehm
+*/
+abstract class Smarty_CacheResource {
+    /**
+    * cache for Smarty_CacheResource instances
+    * @var array
+    */
+    public static $resources = array();
+
+    /**
+    * resource types provided by the core
+    * @var array
+    */
+    protected static $sysplugins = array(
+        'file' => true,
+    );
+
+    /**
+    * populate Cached Object with meta data from Resource
+    *
+    * @param Smarty_Template_Cached $cached cached object
+    * @param Smarty_Internal_Template $_template template object
+    * @return void
+    */
+    public abstract function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
+
+    /**
+    * populate Cached Object with timestamp and exists from Resource
+    *
+    * @param Smarty_Template_Cached $source cached object
+    * @return void
+    */
+    public abstract function populateTimestamp(Smarty_Template_Cached $cached);
+
+    /**
+    * Read the cached template and process header
+    *
+    * @param Smarty_Internal_Template $_template template object
+    * @param Smarty_Template_Cached $cached cached object
+    * @return booelan true or false if the cached content does not exist
+    */
+    public abstract function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null);
+
+    /**
+    * Write the rendered template output to cache
+    *
+    * @param Smarty_Internal_Template $_template template object
+    * @param string $content content to cache
+    * @return boolean success
+    */
+    public abstract function writeCachedContent(Smarty_Internal_Template $_template, $content);
+
+    /**
+    * Return cached content
+    *
+    * @param Smarty_Internal_Template $_template template object
+    * @param string $content content of cache
+    */
+    public function getCachedContent(Smarty_Internal_Template $_template)
+    {
+        if ($_template->cached->handler->process($_template)) {
+            ob_start();
+            $_template->properties['unifunc']($_template);
+            return ob_get_clean();
+        }
+        return null;
+    }
+
+    /**
+    * Empty cache
+    *
+    * @param Smarty $smarty Smarty object
+    * @param integer $exp_time expiration time (number of seconds, not timestamp)
+    * @return integer number of cache files deleted
+    */
+    public abstract function clearAll(Smarty $smarty, $exp_time=null);
+
+    /**
+    * Empty cache for a specific template
+    *
+    * @param Smarty $smarty Smarty object
+    * @param string $resource_name template name
+    * @param string $cache_id cache id
+    * @param string $compile_id compile id
+    * @param integer $exp_time expiration time (number of seconds, not timestamp)
+    * @return integer number of cache files deleted
+    */
+    public abstract function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+
+
+    public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        // theoretically locking_timeout should be checked against time_limit (max_execution_time)
+        $start = microtime(true);
+        $hadLock = null;
+        while ($this->hasLock($smarty, $cached)) {
+            $hadLock = true;
+            if (microtime(true) - $start > $smarty->locking_timeout) {
+                // abort waiting for lock release
+                return false;
+            }
+            sleep(1);
+        }
+        return $hadLock;
+    }
+
+    public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        // check if lock exists
+        return false;
+    }
+
+    public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        // create lock
+        return true;
+    }
+
+    public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        // release lock
+        return true;
+    }
+
+
+    /**
+    * Load Cache Resource Handler
+    *
+    * @param Smarty $smarty Smarty object
+    * @param string $type name of the cache resource
+    * @return Smarty_CacheResource Cache Resource Handler
+    */
+    public static function load(Smarty $smarty, $type = null)
+    {
+        if (!isset($type)) {
+            $type = $smarty->caching_type;
+        }
+
+        // try smarty's cache
+        if (isset($smarty->_cacheresource_handlers[$type])) {
+            return $smarty->_cacheresource_handlers[$type];
+        }
+        
+        // try registered resource
+        if (isset($smarty->registered_cache_resources[$type])) {
+            // do not cache these instances as they may vary from instance to instance
+            return $smarty->_cacheresource_handlers[$type] = $smarty->registered_cache_resources[$type];
+        }
+        // try sysplugins dir
+        if (isset(self::$sysplugins[$type])) {
+            if (!isset(self::$resources[$type])) {
+                $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
+                self::$resources[$type] = new $cache_resource_class();
+            }
+            return $smarty->_cacheresource_handlers[$type] = self::$resources[$type];
+        }
+        // try plugins dir
+        $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
+        if ($smarty->loadPlugin($cache_resource_class)) {
+            if (!isset(self::$resources[$type])) {
+                self::$resources[$type] = new $cache_resource_class();
+            }
+            return $smarty->_cacheresource_handlers[$type] = self::$resources[$type];
+        }
+        // give up
+        throw new SmartyException("Unable to load cache resource '{$type}'");
+    }
+
+    /**
+    * Invalid Loaded Cache Files
+    *
+    * @param Smarty $smarty Smarty object
+    */
+    public static function invalidLoadedCache(Smarty $smarty)
+    {
+        foreach ($smarty->template_objects as $tpl) {
+            if (isset($tpl->cached)) {
+                $tpl->cached->valid = false;
+                $tpl->cached->processed = false;
+            }
+        }
+    }
+}
+
+/**
+* Smarty Resource Data Object
+*
+* Cache Data Container for Template Files
+*
+* @package Smarty
+* @subpackage TemplateResources
+* @author Rodney Rehm
+*/
+class Smarty_Template_Cached {
+    /**
+    * Source Filepath
+    * @var string
+    */
+    public $filepath = false;
+
+    /**
+    * Source Content
+    * @var string
+    */
+    public $content = null;
+
+    /**
+    * Source Timestamp
+    * @var integer
+    */
+    public $timestamp = false;
+
+    /**
+    * Source Existance
+    * @var boolean
+    */
+    public $exists = false;
+
+    /**
+    * Cache Is Valid
+    * @var boolean
+    */
+    public $valid = false;
+
+    /**
+    * Cache was processed
+    * @var boolean
+    */
+    public $processed = false;
+
+    /**
+    * CacheResource Handler
+    * @var Smarty_CacheResource
+    */
+    public $handler = null;
+
+    /**
+    * Template Compile Id (Smarty_Internal_Template::$compile_id)
+    * @var string
+    */
+    public $compile_id = null;
+
+    /**
+    * Template Cache Id (Smarty_Internal_Template::$cache_id)
+    * @var string
+    */
+    public $cache_id = null;
+
+    /**
+    * Id for cache locking
+    * @var string
+    */
+    public $lock_id = null;
+
+    /**
+    * flag that cache is locked by this instance
+    * @var bool
+    */
+    public $is_locked = false;
+
+    /**
+    * Source Object
+    * @var Smarty_Template_Source
+    */
+    public $source = null;
+
+    /**
+    * create Cached Object container
+    *
+    * @param Smarty_Internal_Template $_template template object
+    */
+    public function __construct(Smarty_Internal_Template $_template)
+    {
+        $this->compile_id = $_template->compile_id;
+        $this->cache_id = $_template->cache_id;
+        $this->source = $_template->source;
+        $_template->cached = $this;
+        $smarty = $_template->smarty;
+
+        //
+        // load resource handler
+        //
+        $this->handler = $handler = Smarty_CacheResource::load($smarty); // Note: prone to circular references
+
+        //
+        //    check if cache is valid
+        //
+        if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->recompiled) {
+            $handler->populate($this, $_template);
+            return;
+        }
+        while (true) {
+            while (true) {
+                $handler->populate($this, $_template);
+                if ($this->timestamp === false || $smarty->force_compile || $smarty->force_cache) {
+                    $this->valid = false;
+                } else {
+                    $this->valid = true;
+                }
+                if ($this->valid && $_template->caching == Smarty::CACHING_LIFETIME_CURRENT && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)) {
+                    // lifetime expired
+                    $this->valid = false;
+                }
+                if ($this->valid || !$_template->smarty->cache_locking) {
+                    break;
+                }
+                if (!$this->handler->locked($_template->smarty, $this)) {
+                    $this->handler->acquireLock($_template->smarty, $this);
+                    break 2;
+                }
+            }
+            if ($this->valid) {
+                if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) {
+                    // load cache file for the following checks
+                    if ($smarty->debugging) {
+                        Smarty_Internal_Debug::start_cache($_template);
+                    }
+                    if($handler->process($_template, $this) === false) {
+                        $this->valid = false;
+                    } else {
+                        $this->processed = true;
+                    }
+                    if ($smarty->debugging) {
+                        Smarty_Internal_Debug::end_cache($_template);
+                    }
+                } else {
+                    continue;
+                }
+            } else {
+                return;
+            }
+            if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED && $_template->properties['cache_lifetime'] >= 0 && (time() > ($_template->cached->timestamp + $_template->properties['cache_lifetime']))) {
+                $this->valid = false;
+            }
+            if (!$this->valid && $_template->smarty->cache_locking) {
+                $this->handler->acquireLock($_template->smarty, $this);
+                return;
+            } else {
+                return;
+            }
+        }
+    }
+
+    /**
+    * Write this cache object to handler
+    *
+    * @param Smarty_Internal_Template $_template template object
+    * @param string $content content to cache
+    * @return boolean success
+    */
+    public function write(Smarty_Internal_Template $_template, $content)
+    {
+        if (!$_template->source->recompiled) {
+            if ($this->handler->writeCachedContent($_template, $content)) {
+                $this->timestamp = time();
+                $this->exists = true;
+                $this->valid = true;
+                if ($_template->smarty->cache_locking) {
+                    $this->handler->releaseLock($_template->smarty, $this);
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_custom.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_custom.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_custom.php	(revision 25596)
@@ -0,0 +1,237 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+
+/**
+ * Cache Handler API
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
+
+    /**
+     * fetch cached content and its modification time from data source
+     *
+     * @param string $id         unique cache content identifier
+     * @param string $name       template name
+     * @param string $cache_id   cache id
+     * @param string $compile_id compile id
+     * @param string $content    cached content
+     * @param integer $mtime cache modification timestamp (epoch)
+     * @return void
+     */
+    protected abstract function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
+
+    /**
+     * Fetch cached content's modification timestamp from data source
+     *
+     * {@internal implementing this method is optional.
+     *  Only implement it if modification times can be accessed faster than loading the complete cached content.}}
+     *
+     * @param string $id         unique cache content identifier
+     * @param string $name       template name
+     * @param string $cache_id   cache id
+     * @param string $compile_id compile id
+     * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+     */
+    protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
+    {
+        return null;
+    }
+
+    /**
+     * Save content to cache
+     *
+     * @param string       $id         unique cache content identifier
+     * @param string       $name       template name
+     * @param string       $cache_id   cache id
+     * @param string       $compile_id compile id
+     * @param integer|null $exp_time   seconds till expiration or null
+     * @param string $content content to cache
+     * @return boolean success
+     */
+    protected abstract function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
+
+    /**
+     * Delete content from cache
+     *
+     * @param string       $name       template name
+     * @param string       $cache_id   cache id
+     * @param string       $compile_id compile id
+     * @param integer|null $exp_time   seconds till expiration time in seconds or null
+     * @return integer number of deleted caches
+     */
+    protected abstract function delete($name, $cache_id, $compile_id, $exp_time);
+
+    /**
+     * populate Cached Object with meta data from Resource
+     *
+     * @param Smarty_Template_Cached   $cached    cached object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+    {
+        $_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
+        $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w\|]+!', '_', $cached->compile_id) : null;
+
+        $cached->filepath = sha1($cached->source->filepath . $_cache_id . $_compile_id);
+        $this->populateTimestamp($cached);
+    }
+
+    /**
+     * populate Cached Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Cached $source cached object
+     * @return void
+     */
+    public function populateTimestamp(Smarty_Template_Cached $cached)
+    {
+        $mtime = $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
+        if ($mtime !== null) {
+            $cached->timestamp = $mtime;
+            $cached->exists = !!$cached->timestamp;
+            return;
+        }
+        $timestamp = null;
+        $this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $cached->content, $timestamp);
+        $cached->timestamp = isset($timestamp) ? $timestamp : false;
+        $cached->exists = !!$cached->timestamp;
+    }
+
+    /**
+     * Read the cached template and process the header
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if the cached content does not exist
+     */
+    public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+    {
+        if (!$cached) {
+            $cached = $_template->cached;
+        }
+        $content = $cached->content ? $cached->content : null;
+        $timestamp = $cached->timestamp ? $cached->timestamp : null;
+        if ($content === null || !$timestamp) {
+            $this->fetch(
+                $_template->cached->filepath,
+                $_template->source->name,
+                $_template->cache_id,
+                $_template->compile_id,
+                $content,
+                $timestamp
+            );
+        }
+        if (isset($content)) {
+            $_smarty_tpl = $_template;
+            eval("?>" . $content);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Write the rendered template output to cache
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param string                   $content   content to cache
+     * @return boolean success
+     */
+    public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+    {
+        return $this->save(
+            $_template->cached->filepath,
+            $_template->source->name,
+            $_template->cache_id,
+            $_template->compile_id,
+            $_template->properties['cache_lifetime'],
+            $content
+        );
+    }
+
+    /**
+     * Empty cache
+     *
+     * @param Smarty  $smarty   Smarty object
+     * @param integer $exp_time expiration time (number of seconds, not timestamp)
+     * @return integer number of cache files deleted
+     */
+    public function clearAll(Smarty $smarty, $exp_time=null)
+    {
+        $this->cache = array();
+        return $this->delete(null, null, null, $exp_time);
+    }
+
+    /**
+     * Empty cache for a specific template
+     *
+     * @param Smarty  $smarty        Smarty object
+     * @param string  $resource_name template name
+     * @param string  $cache_id      cache id
+     * @param string  $compile_id    compile id
+     * @param integer $exp_time      expiration time (number of seconds, not timestamp)
+     * @return integer number of cache files deleted
+     */
+    public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+    {
+        $this->cache = array();
+        return $this->delete($resource_name, $cache_id, $compile_id, $exp_time);
+    }
+
+    /**
+     * Check is cache is locked for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if cache is locked
+     */
+    public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $id = $cached->filepath;
+        $name = $cached->source->name . '.lock';
+
+        $mtime = $this->fetchTimestamp($id, $name, null, null);
+        if ($mtime === null) {
+            $this->fetch($id, $name, null, null, $content, $mtime);
+        }
+
+        return $mtime && time() - $mtime < $smarty->locking_timeout;
+    }
+
+    /**
+     * Lock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = true;
+
+        $id = $cached->filepath;
+        $name = $cached->source->name . '.lock';
+        $this->save($id, $name, null, null, $smarty->locking_timeout, '');
+    }
+
+    /**
+     * Unlock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = false;
+
+        $name = $cached->source->name . '.lock';
+        $this->delete($name, null, null, null);
+    }
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php	(revision 25596)
@@ -0,0 +1,463 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+
+/**
+ * Smarty Cache Handler Base for Key/Value Storage Implementations
+ *
+ * This class implements the functionality required to use simple key/value stores
+ * for hierarchical cache groups. key/value stores like memcache or APC do not support
+ * wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
+ * is no problem to filesystem and RDBMS implementations.
+ *
+ * This implementation is based on the concept of invalidation. While one specific cache
+ * can be identified and cleared, any range of caches cannot be identified. For this reason
+ * each level of the cache group hierarchy can have its own value in the store. These values
+ * are nothing but microtimes, telling us when a particular cache group was cleared for the
+ * last time. These keys are evaluated for every cache read to determine if the cache has
+ * been invalidated since it was created and should hence be treated as inexistent.
+ *
+ * Although deep hierarchies are possible, they are not recommended. Try to keep your
+ * cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
+ * »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
+ * cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
+ * consider using »a|b|c|$page-$items-$whatever« instead.
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
+
+    /**
+     * cache for contents
+     * @var array
+     */
+    protected $contents = array();
+    /**
+     * cache for timestamps
+     * @var array
+     */
+    protected $timestamps = array();
+
+    /**
+     * populate Cached Object with meta data from Resource
+     *
+     * @param Smarty_Template_Cached   $cached    cached object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+    {
+        $cached->filepath = $_template->source->uid
+                . '#' . $this->sanitize($cached->source->name)
+                . '#' . $this->sanitize($cached->cache_id)
+                . '#' . $this->sanitize($cached->compile_id);
+
+        $this->populateTimestamp($cached);
+    }
+
+    /**
+     * populate Cached Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Cached $cached cached object
+     * @return void
+     */
+    public function populateTimestamp(Smarty_Template_Cached $cached)
+    {
+        if (!$this->fetch($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id, $content, $timestamp, $cached->source->uid)) {
+            return;
+        }
+        $cached->content = $content;
+        $cached->timestamp = (int) $timestamp;
+        $cached->exists = $cached->timestamp;
+    }
+
+    /**
+     * Read the cached template and process the header
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if the cached content does not exist
+     */
+    public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+    {
+        if (!$cached) {
+            $cached = $_template->cached;
+        }
+        $content = $cached->content ? $cached->content : null;
+        $timestamp = $cached->timestamp ? $cached->timestamp : null;
+        if ($content === null || !$timestamp) {
+            if (!$this->fetch($_template->cached->filepath, $_template->source->name, $_template->cache_id, $_template->compile_id, $content, $timestamp, $_template->source->uid)) {
+                return false;
+            }
+        }
+        if (isset($content)) {
+            $_smarty_tpl = $_template;
+            eval("?>" . $content);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Write the rendered template output to cache
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param string $content content to cache
+     * @return boolean success
+     */
+    public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+    {
+        $this->addMetaTimestamp($content);
+        return $this->write(array($_template->cached->filepath => $content), $_template->properties['cache_lifetime']);
+    }
+
+    /**
+     * Empty cache
+     *
+     * {@internal the $exp_time argument is ignored altogether }}
+     *
+     * @param Smarty  $smarty   Smarty object
+     * @param integer $exp_time expiration time [being ignored]
+     * @return integer number of cache files deleted [always -1]
+     * @uses purge() to clear the whole store
+     * @uses invalidate() to mark everything outdated if purge() is inapplicable
+     */
+    public function clearAll(Smarty $smarty, $exp_time=null)
+    {
+        if (!$this->purge()) {
+            $this->invalidate(null);
+        }
+        return -1;
+    }
+
+    /**
+     * Empty cache for a specific template
+     *
+     * {@internal the $exp_time argument is ignored altogether}}
+     *
+     * @param Smarty  $smarty        Smarty object
+     * @param string  $resource_name template name
+     * @param string  $cache_id      cache id
+     * @param string  $compile_id    compile id
+     * @param integer $exp_time      expiration time [being ignored]
+     * @return integer number of cache files deleted [always -1]
+     * @uses buildCachedFilepath() to generate the CacheID
+     * @uses invalidate() to mark CacheIDs parent chain as outdated
+     * @uses delete() to remove CacheID from cache
+     */
+    public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+    {
+        $uid = $this->getTemplateUid($smarty, $resource_name, $cache_id, $compile_id);
+        $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' . $this->sanitize($compile_id);
+        $this->delete(array($cid));
+        $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
+        return -1;
+    }
+    /**
+     * Get template's unique ID
+     *
+     * @param Smarty $smarty        Smarty object
+     * @param string $resource_name template name
+     * @param string $cache_id      cache id
+     * @param string $compile_id    compile id
+     * @return string filepath of cache file
+     */
+    protected function getTemplateUid(Smarty $smarty, $resource_name, $cache_id, $compile_id)
+    {
+        $uid = '';
+        if (isset($resource_name)) {
+            $tpl = new $smarty->template_class($resource_name, $smarty);
+            if ($tpl->source->exists) {
+                $uid = $tpl->source->uid;
+            }
+            
+            // remove from template cache
+            if ($smarty->allow_ambiguous_resources) {
+                $_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id;
+            } else {
+                $_templateId = $smarty->joined_template_dir . '#' . $resource_name . $tpl->cache_id . $tpl->compile_id;
+            }
+            if (isset($_templateId[150])) {
+                $_templateId = sha1($_templateId);
+            }
+            unset($smarty->template_objects[$_templateId]);
+        }
+        return $uid;
+    }
+
+    /**
+     * Sanitize CacheID components
+     *
+     * @param string $string CacheID component to sanitize
+     * @return string sanitized CacheID component
+     */
+    protected function sanitize($string)
+    {
+        // some poeple smoke bad weed
+        $string = trim($string, '|');
+        if (!$string) {
+            return null;
+        }
+        return preg_replace('#[^\w\|]+#S', '_', $string);
+    }
+
+    /**
+     * Fetch and prepare a cache object.
+     *
+     * @param string  $cid           CacheID to fetch
+     * @param string  $resource_name template name
+     * @param string  $cache_id      cache id
+     * @param string  $compile_id    compile id
+     * @param string  $content       cached content
+     * @param integer &$timestamp    cached timestamp (epoch)
+     * @param string  $resource_uid  resource's uid
+     * @return boolean success
+     */
+    protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null)
+    {
+        $t = $this->read(array($cid));
+        $content = !empty($t[$cid]) ? $t[$cid] : null;
+        $timestamp = null;
+
+        if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
+            $invalidated = $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
+            if ($invalidated > $timestamp) {
+                $timestamp = null;
+                $content = null;
+            }
+        }
+
+        return !!$content;
+    }
+
+    /**
+     * Add current microtime to the beginning of $cache_content
+     *
+     * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
+     *
+     * @param string &$content the content to be cached
+     */
+    protected function addMetaTimestamp(&$content)
+    {
+        $mt = explode(" ", microtime());
+        $ts = pack("NN", $mt[1], (int) ($mt[0] * 100000000));
+        $content = $ts . $content;
+    }
+
+    /**
+     * Extract the timestamp the $content was cached
+     *
+     * @param string &$content the cached content
+     * @return float the microtime the content was cached
+     */
+    protected function getMetaTimestamp(&$content)
+    {
+        $s = unpack("N", substr($content, 0, 4));
+        $m = unpack("N", substr($content, 4, 4));
+        $content = substr($content, 8);
+        return $s[1] + ($m[1] / 100000000);
+    }
+
+    /**
+     * Invalidate CacheID
+     *
+     * @param string $cid           CacheID
+     * @param string $resource_name template name
+     * @param string $cache_id      cache id
+     * @param string $compile_id    compile id
+     * @param string $resource_uid  source's uid
+     * @return void
+     */
+    protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+    {
+        $now = microtime(true);
+        $key = null;
+        // invalidate everything
+        if (!$resource_name && !$cache_id && !$compile_id) {
+            $key = 'IVK#ALL';
+        }
+        // invalidate all caches by template
+        else if ($resource_name && !$cache_id && !$compile_id) {
+            $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
+        }
+        // invalidate all caches by cache group
+        else if (!$resource_name && $cache_id && !$compile_id) {
+            $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
+        }
+        // invalidate all caches by compile id
+        else if (!$resource_name && !$cache_id && $compile_id) {
+            $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
+        }
+        // invalidate by combination
+        else {
+            $key = 'IVK#CID#' . $cid;
+        }
+        $this->write(array($key => $now));
+    }
+
+    /**
+     * Determine the latest timestamp known to the invalidation chain
+     *
+     * @param string $cid           CacheID to determine latest invalidation timestamp of
+     * @param string $resource_name template name
+     * @param string $cache_id      cache id
+     * @param string $compile_id    compile id
+     * @param string $resource_uid  source's filepath
+     * @return float the microtime the CacheID was invalidated
+     */
+    protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+    {
+        // abort if there is no CacheID
+        if (false && !$cid) {
+            return 0;
+        }
+        // abort if there are no InvalidationKeys to check
+        if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
+            return 0;
+        }
+        
+        // there are no InValidationKeys
+        if (!($values = $this->read($_cid))) {
+            return 0;
+        }
+        // make sure we're dealing with floats
+        $values = array_map('floatval', $values);
+        return max($values);
+    }
+
+    /**
+     * Translate a CacheID into the list of applicable InvalidationKeys.
+     *
+     * Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
+     *
+     * @param string $cid           CacheID to translate
+     * @param string $resource_name template name
+     * @param string $cache_id      cache id
+     * @param string $compile_id    compile id
+     * @param string $resource_uid  source's filepath
+     * @return array list of InvalidationKeys
+     * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
+     */
+    protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
+    {
+        $t = array('IVK#ALL');
+        $_name = $_compile = '#';
+        if ($resource_name) {
+            $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
+            $t[] = 'IVK#TEMPLATE' . $_name;
+        }
+        if ($compile_id) {
+            $_compile .= $this->sanitize($compile_id);
+            $t[] = 'IVK#COMPILE' . $_compile;
+        }
+        $_name .= '#';
+        // some poeple smoke bad weed
+        $cid = trim($cache_id, '|');
+        if (!$cid) {
+            return $t;
+        }
+        $i = 0;
+        while (true) {
+            // determine next delimiter position
+            $i = strpos($cid, '|', $i);
+            // add complete CacheID if there are no more delimiters
+            if ($i === false) {
+                $t[] = 'IVK#CACHE#' . $cid;
+                $t[] = 'IVK#CID' . $_name . $cid . $_compile;
+                $t[] = 'IVK#CID' . $_name . $_compile;
+                break;
+            }
+            $part = substr($cid, 0, $i);
+            // add slice to list
+            $t[] = 'IVK#CACHE#' . $part;
+            $t[] = 'IVK#CID' . $_name . $part . $_compile;
+            // skip past delimiter position
+            $i++;
+        }
+        return $t;
+    }
+
+    /**
+     * Check is cache is locked for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if cache is locked
+     */
+    public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $key = 'LOCK#' . $cached->filepath;
+        $data = $this->read(array($key));
+        return $data && time() - $data[$key] < $smarty->locking_timeout;
+    }
+
+    /**
+     * Lock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = true;
+        $key = 'LOCK#' . $cached->filepath;
+        $this->write(array($key => time()), $smarty->locking_timeout);
+    }
+
+    /**
+     * Unlock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = false;
+        $key = 'LOCK#' . $cached->filepath;
+        $this->delete(array($key));
+    }
+
+    /**
+     * Read values for a set of keys from cache
+     *
+     * @param array $keys list of keys to fetch
+     * @return array list of values with the given keys used as indexes
+     */
+    protected abstract function read(array $keys);
+
+    /**
+     * Save values for a set of keys to cache
+     *
+     * @param array $keys   list of values to save
+     * @param int   $expire expiration time
+     * @return boolean true on success, false on failure
+     */
+    protected abstract function write(array $keys, $expire=null);
+
+    /**
+     * Remove values from cache
+     *
+     * @param array $keys list of keys to delete
+     * @return boolean true on success, false on failure
+     */
+    protected abstract function delete(array $keys);
+
+    /**
+     * Remove *all* values from cache
+     *
+     * @return boolean true on success, false on failure
+     */
+    protected function purge()
+    {
+        return false;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_config_source.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_config_source.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_config_source.php	(revision 25596)
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+
+/**
+ * Smarty Resource Data Object
+ *
+ * Meta Data Container for Config Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ *
+ * @property string $content
+ * @property int    $timestamp
+ * @property bool   $exists
+ */
+class Smarty_Config_Source extends Smarty_Template_Source {
+
+    /**
+     * create Config Object container
+     *
+     * @param Smarty_Resource $handler          Resource Handler this source object communicates with
+     * @param Smarty          $smarty           Smarty instance this source object belongs to
+     * @param string          $resource         full config_resource
+     * @param string          $type             type of resource
+     * @param string          $name             resource name
+     * @param string          $unique_resource  unqiue resource name
+     */
+    public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name, $unique_resource)
+    {
+        $this->handler = $handler; // Note: prone to circular references
+
+        // Note: these may be ->config_compiler_class etc in the future
+        //$this->config_compiler_class = $handler->config_compiler_class;
+        //$this->config_lexer_class = $handler->config_lexer_class;
+        //$this->config_parser_class = $handler->config_parser_class;
+
+        $this->smarty = $smarty;
+        $this->resource = $resource;
+        $this->type = $type;
+        $this->name = $name;
+        $this->unique_resource = $unique_resource;
+    }
+
+    /**
+     * <<magic>> Generic setter.
+     *
+     * @param string $property_name valid: content, timestamp, exists
+     * @param mixed  $value         newly assigned value (not check for correct type)
+     * @throws SmartyException when the given property name is not valid
+     */
+    public function __set($property_name, $value)
+    {
+        switch ($property_name) {
+            case 'content':
+            case 'timestamp':
+            case 'exists':
+                $this->$property_name = $value;
+                break;
+
+            default:
+                throw new SmartyException("invalid config property '$property_name'.");
+        }
+    }
+
+    /**
+     * <<magic>> Generic getter.
+     *
+     * @param string $property_name valid: content, timestamp, exists
+     * @throws SmartyException when the given property name is not valid
+     */
+    public function __get($property_name)
+    {
+        switch ($property_name) {
+            case 'timestamp':
+            case 'exists':
+                $this->handler->populateTimestamp($this);
+                return $this->$property_name;
+
+            case 'content':
+                return $this->content = $this->handler->getContent($this);
+
+            default:
+                throw new SmartyException("config property '$property_name' does not exist.");
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php	(revision 25596)
@@ -0,0 +1,266 @@
+<?php
+/**
+ * Smarty Internal Plugin CacheResource File
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * This class does contain all necessary methods for the HTML cache on file system
+ *
+ * Implements the file system as resource for the HTML cache Version ussing nocache inserts.
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
+class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
+
+    /**
+     * populate Cached Object with meta data from Resource
+     *
+     * @param Smarty_Template_Cached   $cached    cached object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
+    {
+        $_source_file_path = str_replace(':', '.', $_template->source->filepath);
+        $_cache_id = isset($_template->cache_id) ? preg_replace('![^\w\|]+!', '_', $_template->cache_id) : null;
+        $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null;
+        $_filepath = $_template->source->uid;
+        // if use_sub_dirs, break file into directories
+        if ($_template->smarty->use_sub_dirs) {
+            $_filepath = substr($_filepath, 0, 2) . DS
+                . substr($_filepath, 2, 2) . DS
+                . substr($_filepath, 4, 2) . DS
+                . $_filepath;
+        }
+        $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
+        if (isset($_cache_id)) {
+            $_cache_id = str_replace('|', $_compile_dir_sep, $_cache_id) . $_compile_dir_sep;
+        } else {
+            $_cache_id = '';
+        }
+        if (isset($_compile_id)) {
+            $_compile_id = $_compile_id . $_compile_dir_sep;
+        } else {
+            $_compile_id = '';
+        }
+        $_cache_dir = $_template->smarty->getCacheDir();
+        if ($_template->smarty->cache_locking) {
+            // create locking file name
+            // relative file name?
+            if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_cache_dir)) {
+                $_lock_dir = rtrim(getcwd(), '/\\') . DS . $_cache_dir;
+            } else {
+                $_lock_dir = $_cache_dir;
+            }
+            $cached->lock_id = $_lock_dir.sha1($_cache_id.$_compile_id.$_template->source->uid).'.lock';
+        }
+        $cached->filepath = $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_source_file_path) . '.php';
+        $cached->timestamp = @filemtime($cached->filepath);
+        $cached->exists = !!$cached->timestamp;
+    }
+
+    /**
+     * populate Cached Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Cached $cached cached object
+     * @return void
+     */
+    public function populateTimestamp(Smarty_Template_Cached $cached)
+    {
+        $cached->timestamp = @filemtime($cached->filepath);
+        $cached->exists = !!$cached->timestamp;
+    }
+
+    /**
+     * Read the cached template and process its header
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if the cached content does not exist
+     */
+    public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+    {
+        $_smarty_tpl = $_template;
+        return @include $_template->cached->filepath;
+    }
+
+    /**
+     * Write the rendered template output to cache
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param string                   $content   content to cache
+     * @return boolean success
+     */
+    public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+    {
+        if (Smarty_Internal_Write_File::writeFile($_template->cached->filepath, $content, $_template->smarty) === true) {
+            $_template->cached->timestamp = @filemtime($_template->cached->filepath);
+            $_template->cached->exists = !!$_template->cached->timestamp;
+            if ($_template->cached->exists) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Empty cache
+     *
+     * @param Smarty_Internal_Template $_template template object
+     * @param integer                  $exp_time  expiration time (number of seconds, not timestamp)
+     * @return integer number of cache files deleted
+     */
+    public function clearAll(Smarty $smarty, $exp_time = null)
+    {
+        return $this->clear($smarty, null, null, null, $exp_time);
+    }
+
+    /**
+     * Empty cache for a specific template
+     *
+     * @param Smarty  $_template     template object
+     * @param string  $resource_name template name
+     * @param string  $cache_id      cache id
+     * @param string  $compile_id    compile id
+     * @param integer $exp_time      expiration time (number of seconds, not timestamp)
+     * @return integer number of cache files deleted
+    */
+    public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+    {
+        $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
+        $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
+        $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
+        $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
+        $_dir = $smarty->getCacheDir();
+        $_dir_length = strlen($_dir);
+        if (isset($_cache_id)) {
+            $_cache_id_parts = explode('|', $_cache_id);
+            $_cache_id_parts_count = count($_cache_id_parts);
+            if ($smarty->use_sub_dirs) {
+                foreach ($_cache_id_parts as $id_part) {
+                    $_dir .= $id_part . DS;
+                }
+            }
+        }
+        if (isset($resource_name)) {
+            $_save_stat = $smarty->caching;
+            $smarty->caching = true;
+            $tpl = new $smarty->template_class($resource_name, $smarty);
+            $smarty->caching = $_save_stat;
+
+            // remove from template cache
+            $tpl->source; // have the template registered before unset()
+            if ($smarty->allow_ambiguous_resources) {
+                $_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id;
+            } else {
+                $_templateId = $smarty->joined_template_dir . '#' . $resource_name . $tpl->cache_id . $tpl->compile_id;
+            }
+            if (isset($_templateId[150])) {
+                $_templateId = sha1($_templateId);
+            }
+            unset($smarty->template_objects[$_templateId]);
+
+            if ($tpl->source->exists) {
+                $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath));
+            } else {
+                return 0;
+            }
+        }
+        $_count = 0;
+        $_time = time();
+        if (file_exists($_dir)) {
+            $_cacheDirs = new RecursiveDirectoryIterator($_dir);
+            $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
+            foreach ($_cache as $_file) {
+                if (substr(basename($_file->getPathname()),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+                // directory ?
+                if ($_file->isDir()) {
+                    if (!$_cache->isDot()) {
+                        // delete folder if empty
+                        @rmdir($_file->getPathname());
+                    }
+                } else {
+                    $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string)$_file, $_dir_length)));
+                    $_parts_count = count($_parts);
+                    // check name
+                    if (isset($resource_name)) {
+                        if ($_parts[$_parts_count-1] != $_resourcename_parts) {
+                            continue;
+                        }
+                    }
+                    // check compile id
+                    if (isset($_compile_id) && (!isset($_parts[$_parts_count-2 - $_compile_id_offset]) || $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id)) {
+                        continue;
+                    }
+                    // check cache id
+                    if (isset($_cache_id)) {
+                        // count of cache id parts
+                        $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset : $_parts_count - 1 - $_compile_id_offset;
+                        if ($_parts_count < $_cache_id_parts_count) {
+                            continue;
+                        }
+                        for ($i = 0; $i < $_cache_id_parts_count; $i++) {
+                            if ($_parts[$i] != $_cache_id_parts[$i]) continue 2;
+                        }
+                    }
+                    // expired ?
+                    if (isset($exp_time) && $_time - @filemtime($_file) < $exp_time) {
+                        continue;
+                    }
+                    $_count += @unlink((string) $_file) ? 1 : 0;
+                }
+            }
+        }
+        return $_count;
+    }
+
+    /**
+     * Check is cache is locked for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     * @return booelan true or false if cache is locked
+     */
+    public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            clearstatcache(true, $cached->lock_id);
+        } else {
+            clearstatcache();
+        }
+        $t = @filemtime($cached->lock_id);
+        return $t && (time() - $t < $smarty->locking_timeout);
+    }
+
+    /**
+     * Lock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = true;
+        touch($cached->lock_id);
+    }
+
+    /**
+     * Unlock cache for this template
+     *
+     * @param Smarty $smarty Smarty object
+     * @param Smarty_Template_Cached $cached cached object
+     */
+    public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+    {
+        $cached->is_locked = false;
+        @unlink($cached->lock_id);
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_append.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_append.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_append.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Append
+ *
+ * Compiles the {append} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Append Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign {
+
+    /**
+     * Compiles code for the {append} tag
+     *
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // the following must be assigned at runtime because it will be overwritten in parent class
+        $this->required_attributes = array('var', 'value');
+        $this->shorttag_order = array('var', 'value');
+        $this->optional_attributes = array('scope', 'index');
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // map to compile assign attributes
+        if (isset($_attr['index'])) {
+            $_params['smarty_internal_index'] = '[' . $_attr['index'] . ']';
+            unset($_attr['index']);
+        } else {
+            $_params['smarty_internal_index'] = '[]';
+        }
+        $_new_attr = array();
+        foreach ($_attr as $key => $value) {
+            $_new_attr[] = array($key => $value);
+        }
+        // call compile assign
+        return parent::compile($_new_attr, $compiler, $_params);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_assign.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_assign.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_assign.php	(revision 25596)
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Assign
+ *
+ * Compiles the {assign} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Assign Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {assign} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
+        $this->required_attributes = array('var', 'value');
+        $this->shorttag_order = array('var', 'value');
+        $this->optional_attributes = array('scope');
+        $_nocache = 'null';
+        $_scope = Smarty::SCOPE_LOCAL;
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // nocache ?
+        if ($compiler->tag_nocache || $compiler->nocache) {
+            $_nocache = 'true';
+            // create nocache var to make it know for further compiling
+            if (isset($compiler->template->tpl_vars[trim($_attr['var'], "'")])) {
+                $compiler->template->tpl_vars[trim($_attr['var'], "'")]->nocache = true;
+            } else {
+                $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_variable(null, true);
+            }
+        }
+        // scope setup
+        if (isset($_attr['scope'])) {
+            $_attr['scope'] = trim($_attr['scope'], "'\"");
+            if ($_attr['scope'] == 'parent') {
+                $_scope = Smarty::SCOPE_PARENT;
+            } elseif ($_attr['scope'] == 'root') {
+                $_scope = Smarty::SCOPE_ROOT;
+            } elseif ($_attr['scope'] == 'global') {
+                $_scope = Smarty::SCOPE_GLOBAL;
+            } else {
+                $compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno);
+            }
+        }
+        // compiled output
+        if (isset($parameter['smarty_internal_index'])) {
+            $output = "<?php \$_smarty_tpl->createLocalArrayVariable($_attr[var], $_nocache, $_scope);\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value$parameter[smarty_internal_index] = $_attr[value];";
+        } else {
+            // implement Smarty2's behaviour of variables assigned by reference
+            if ($compiler->template->smarty instanceof SmartyBC) {
+                $output = "<?php if (isset(\$_smarty_tpl->tpl_vars[$_attr[var]])) {\$_smarty_tpl->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
+                $output .= "\n\$_smarty_tpl->tpl_vars[$_attr[var]]->value = $_attr[value]; \$_smarty_tpl->tpl_vars[$_attr[var]]->nocache = $_nocache; \$_smarty_tpl->tpl_vars[$_attr[var]]->scope = $_scope;";
+                $output .= "\n} else \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_variable($_attr[value], $_nocache, $_scope);";
+            } else {
+                $output = "<?php \$_smarty_tpl->tpl_vars[$_attr[var]] = new Smarty_variable($_attr[value], $_nocache, $_scope);";
+            }
+        }
+        if ($_scope == Smarty::SCOPE_PARENT) {
+            $output .= "\nif (\$_smarty_tpl->parent != null) \$_smarty_tpl->parent->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
+        } elseif ($_scope == Smarty::SCOPE_ROOT || $_scope == Smarty::SCOPE_GLOBAL) {
+            $output .= "\n\$_ptr = \$_smarty_tpl->parent; while (\$_ptr != null) {\$_ptr->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]]; \$_ptr = \$_ptr->parent; }";
+        }
+        if ( $_scope == Smarty::SCOPE_GLOBAL) {
+            $output .= "\nSmarty::\$global_tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
+        }
+        $output .= '?>';
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_block.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_block.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_block.php	(revision 25596)
@@ -0,0 +1,282 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Block
+ *
+ * Compiles the {block}{/block} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('name');
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name', 'hide');
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('hide');
+
+    /**
+     * Compiles code for the {block} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return boolean true
+     */
+    public function compile($args, $compiler) {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        $save = array($_attr, $compiler->parser->current_buffer, $compiler->nocache, $compiler->smarty->merge_compiled_includes, $compiler->merged_templates, $compiler->smarty->merged_templates_func, $compiler->template->properties, $compiler->template->has_nocache_code);
+        $this->openTag($compiler, 'block', $save);
+        if ($_attr['nocache'] == true) {
+            $compiler->nocache = true;
+        }
+        // set flag for {block} tag
+        $compiler->inheritance = true;
+        // must merge includes
+        $compiler->smarty->merge_compiled_includes = true;
+
+        $compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser);
+        $compiler->has_code = false;
+        return true;
+    }
+
+    /**
+     * Save or replace child block source by block name during parsing
+     *
+     * @param string $block_content     block source content
+     * @param string $block_tag         opening block tag
+     * @param object $template          template object
+     * @param string $filepath          filepath of template source
+     */
+    public static function saveBlockData($block_content, $block_tag, $template, $filepath) {
+        $_rdl = preg_quote($template->smarty->right_delimiter);
+        $_ldl = preg_quote($template->smarty->left_delimiter);
+        if (!$template->smarty->auto_literal) {
+            $al = '\s*';
+        } else {
+            $al = '';
+        }
+        if (0 == preg_match("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")(\s*?)?((append|prepend|nocache)?(\s*)?(hide)?)?(\s*{$_rdl})!", $block_tag, $_match)) {
+            $error_text = 'Syntax Error in template "' . $template->source->filepath . '"   "' . htmlspecialchars($block_tag) . '" illegal options';
+            throw new SmartyCompilerException($error_text);
+        } else {
+            $_name = trim($_match[3], '\'"');
+            if ($_match[8] != 'hide' || isset($template->block_data[$_name])) {        // replace {$smarty.block.child}
+                // get nested block tags
+                if (0 != preg_match_all("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")([\s\S]*?)(hide)?(\s*{$_rdl})([\s\S]*?)(.*)?({$_ldl}{$al}/block\s*{$_rdl})!", $block_content, $_match2)) {
+                    foreach ($_match2[3] as $key => $name) {
+                        // get it's replacement
+                        $_name2 = trim($name, '\'"');
+                        if ($_match2[5][$key] != 'hide' || isset($template->block_data[$_name2])) {
+                            if (isset($template->block_data[$_name2])) {
+                                $replacement = $template->block_data[$_name2]['source'];
+                            } else {
+                                $replacement = '';
+                            }
+                            // replace {$smarty.block.child} tag
+                            if (preg_match("!{$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl}!",$_match2[7][$key])) {
+                                 $replacement =  preg_replace("!({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})!", $replacement, $_match2[7][$key]);
+                                 $block_content = preg_replace("!(({$_ldl}{$al}block)(.*)?{$name}(.*)?({$_rdl}[\s\S]*?{$_ldl}{$al}/block\s*{$_rdl}))!", $replacement, $block_content);
+                           }
+                             if (preg_match("!{$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl}!",$_match2[8][$key])) {
+                                 $replacement =  preg_replace("!{$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl}!", $replacement, $_match2[8][$key]);
+                                 $block_content = preg_replace("!(({$_ldl}{$al}block)(.*)?{$name}(.*)?({$_rdl})(.*)?({$_ldl}{$al}/block\s*{$_rdl}))!", $replacement, $block_content);
+                             }
+                        } else {
+                            // remove hidden blocks
+                            $block_content = preg_replace("!(({$_ldl}{$al}block)(.*)?{$name}(.*)?({$_rdl}[\s\S]*?{$_ldl}{$al}/block\s*{$_rdl}))!", '', $block_content);
+                        }
+                    }
+                }
+                // do we have not nested {$smart.block.child}
+                if (0 != preg_match("!({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})!", $block_content, $_match2)) {
+                    // get child replacement for this block
+                    if (isset($template->block_data[$_name])) {
+                        $replacement = $template->block_data[$_name]['source'];
+                        unset($template->block_data[$_name]);
+                    } else {
+                        $replacement = '';
+                    }
+                    $block_content = preg_replace("!({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})!", $replacement, $block_content);
+                }
+                if (isset($template->block_data[$_name])) {
+                    if (strpos($template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) {
+                        $template->block_data[$_name]['source'] =
+                                str_replace('%%%%SMARTY_PARENT%%%%', $block_content, $template->block_data[$_name]['source']);
+                    } elseif ($template->block_data[$_name]['mode'] == 'prepend') {
+                        $template->block_data[$_name]['source'] .= $block_content;
+                    } elseif ($template->block_data[$_name]['mode'] == 'append') {
+                        $template->block_data[$_name]['source'] = $block_content . $template->block_data[$_name]['source'];
+                    }
+                } else {
+                    $template->block_data[$_name]['source'] = $block_content;
+                    $template->block_data[$_name]['file'] = $filepath;
+                }
+                if ($_match[6] == 'append') {
+                    $template->block_data[$_name]['mode'] = 'append';
+                } elseif ($_match[6] == 'prepend') {
+                    $template->block_data[$_name]['mode'] = 'prepend';
+                } else {
+                    $template->block_data[$_name]['mode'] = 'replace';
+                }
+            }
+        }
+    }
+
+    /**
+     * Compile saved child block source
+     *
+     * @param object $compiler  compiler object
+     * @param string $_name     optional name of child block
+     * @return string   compiled code of schild block
+     */
+    public static function compileChildBlock($compiler, $_name = null) {
+        $_output = '';
+        // if called by {$smarty.block.child} we must search the name of enclosing {block}
+        if ($_name == null) {
+            $stack_count = count($compiler->_tag_stack);
+            while (--$stack_count >= 0) {
+                if ($compiler->_tag_stack[$stack_count][0] == 'block') {
+                    $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "'\"");
+                    break;
+                }
+            }
+            // flag that child is already compile by {$smarty.block.child} inclusion
+            $compiler->template->block_data[$_name]['compiled'] = true;
+        }
+        if ($_name == null) {
+            $compiler->trigger_template_error('{$smarty.block.child} used out of context', $compiler->lex->taglineno);
+        }
+        // undefined child?
+        if (!isset($compiler->template->block_data[$_name]['source'])) {
+            return '';
+        }
+        $_tpl = new Smarty_Internal_template('string:' . $compiler->template->block_data[$_name]['source'], $compiler->smarty, $compiler->template, $compiler->template->cache_id,
+                        $compiler->template->compile_id = null, $compiler->template->caching, $compiler->template->cache_lifetime);
+        $_tpl->variable_filters = $compiler->template->variable_filters;
+        $_tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash'];
+        $_tpl->source->filepath = $compiler->template->block_data[$_name]['file'];
+        $_tpl->allow_relative_path = true;
+        if ($compiler->nocache) {
+            $_tpl->compiler->forceNocache = 2;
+        } else {
+            $_tpl->compiler->forceNocache = 1;
+        }
+        $_tpl->compiler->suppressHeader = true;
+        $_tpl->compiler->suppressTemplatePropertyHeader = true;
+        $_tpl->compiler->suppressMergedTemplates = true;
+        if (strpos($compiler->template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) {
+            $_output = str_replace('%%%%SMARTY_PARENT%%%%', $compiler->parser->current_buffer->to_smarty_php(), $_tpl->compiler->compileTemplate($_tpl));
+        } elseif ($compiler->template->block_data[$_name]['mode'] == 'prepend') {
+            $_output = $_tpl->compiler->compileTemplate($_tpl) . $compiler->parser->current_buffer->to_smarty_php();
+        } elseif ($compiler->template->block_data[$_name]['mode'] == 'append') {
+            $_output = $compiler->parser->current_buffer->to_smarty_php() . $_tpl->compiler->compileTemplate($_tpl);
+        } elseif (!empty($compiler->template->block_data[$_name])) {
+            $_output = $_tpl->compiler->compileTemplate($_tpl);
+        }
+        $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $_tpl->properties['file_dependency']);
+        $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $_tpl->properties['function']);
+        $compiler->merged_templates = array_merge($compiler->merged_templates, $_tpl->compiler->merged_templates);
+        $compiler->template->variable_filters = $_tpl->variable_filters;
+        if ($_tpl->has_nocache_code) {
+            $compiler->template->has_nocache_code = true;
+        }
+        foreach ($_tpl->required_plugins as $key => $tmp1) {
+            if ($compiler->nocache && $compiler->template->caching) {
+                $code = 'nocache';
+            } else {
+                $code = $key;
+            }
+            foreach ($tmp1 as $name => $tmp) {
+                foreach ($tmp as $type => $data) {
+                    $compiler->template->required_plugins[$code][$name][$type] = $data;
+                }
+            }
+        }
+        unset($_tpl);
+        return $_output;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile BlockClose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/block} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler) {
+        $compiler->has_code = true;
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        $saved_data = $this->closeTag($compiler, array('block'));
+        $_name = trim($saved_data[0]['name'], "\"'");
+        if (isset($compiler->template->block_data[$_name]) && !isset($compiler->template->block_data[$_name]['compiled'])) {
+            // restore to status before {block} tag as new subtemplate code of parent {block} is not needed
+            // TODO: Below code was disabled in 3.1.8 because of problems with {include} in nested {block} tags in child templates
+            //       combined with append/prepend or $smarty.block.parent
+            //       For later versions it should be checked under which conditions it could run for optimisation
+            //
+            //$compiler->merged_templates = $saved_data[4];
+            //$compiler->smarty->merged_templates_func = $saved_data[5];
+            //$compiler->template->properties = $saved_data[6];
+            //$compiler->template->has_nocache_code = $saved_data[7];
+            $_output = Smarty_Internal_Compile_Block::compileChildBlock($compiler, $_name);
+        } else {
+            if (isset($saved_data[0]['hide']) && !isset($compiler->template->block_data[$_name]['source'])) {
+                $_output = '';
+            } else {
+                $_output = $compiler->parser->current_buffer->to_smarty_php();
+            }
+            unset($compiler->template->block_data[$_name]['compiled']);
+        }
+        // reset flags
+        $compiler->parser->current_buffer = $saved_data[1];
+        $compiler->nocache = $saved_data[2];
+        $compiler->smarty->merge_compiled_includes = $saved_data[3];
+        // reset flag for {block} tag
+        $compiler->inheritance = false;
+        // $_output content has already nocache code processed
+        $compiler->suppressNocacheProcessing = true;
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_break.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_break.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_break.php	(revision 25596)
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Break
+ *
+ * Compiles the {break} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+/**
+ * Smarty Internal Plugin Compile Break Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('levels');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('levels');
+
+    /**
+     * Compiles code for the {break} tag
+     *
+     * @param array  $args array with attributes from parser
+     * @param object $compiler   compiler object
+     * @param array  $parameter  array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+
+        if (isset($_attr['levels'])) {
+            if (!is_numeric($_attr['levels'])) {
+                $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
+            }
+            $_levels = $_attr['levels'];
+        } else {
+            $_levels = 1;
+        }
+        $level_count = $_levels;
+        $stack_count = count($compiler->_tag_stack) - 1;
+        while ($level_count > 0 && $stack_count >= 0) {
+            if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
+                $level_count--;
+            }
+            $stack_count--;
+        }
+        if ($level_count != 0) {
+            $compiler->trigger_template_error("cannot break {$_levels} level(s)", $compiler->lex->taglineno);
+        }
+        $compiler->has_code = true;
+        return "<?php break {$_levels}?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_call.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_call.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_call.php	(revision 25596)
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function_Call
+ *
+ * Compiles the calls of user defined tags defined by {function}
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function_Call Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles the calls of user defined tags defined by {function}
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // save possible attributes
+        if (isset($_attr['assign'])) {
+            // output will be stored in a smarty variable instead of beind displayed
+            $_assign = $_attr['assign'];
+        }
+        $_name = $_attr['name'];
+        if ($compiler->compiles_template_function) {
+            $compiler->called_functions[] = trim($_name, "'\"");
+        }
+        unset($_attr['name'], $_attr['assign'], $_attr['nocache']);
+        // set flag (compiled code of {function} must be included in cache file
+        if ($compiler->nocache || $compiler->tag_nocache) {
+            $_nocache = 'true';
+        } else {
+            $_nocache = 'false';
+        }
+        $_paramsArray = array();
+        foreach ($_attr as $_key => $_value) {
+            if (is_int($_key)) {
+                $_paramsArray[] = "$_key=>$_value";
+            } else {
+                $_paramsArray[] = "'$_key'=>$_value";
+            }
+        }
+        if (isset($compiler->template->properties['function'][$_name]['parameter'])) {
+            foreach ($compiler->template->properties['function'][$_name]['parameter'] as $_key => $_value) {
+                if (!isset($_attr[$_key])) {
+                    if (is_int($_key)) {
+                        $_paramsArray[] = "$_key=>$_value";
+                    } else {
+                        $_paramsArray[] = "'$_key'=>$_value";
+                    }
+                }
+            }
+        } elseif (isset($compiler->smarty->template_functions[$_name]['parameter'])) {
+            foreach ($compiler->smarty->template_functions[$_name]['parameter'] as $_key => $_value) {
+                if (!isset($_attr[$_key])) {
+                    if (is_int($_key)) {
+                        $_paramsArray[] = "$_key=>$_value";
+                    } else {
+                        $_paramsArray[] = "'$_key'=>$_value";
+                    }
+                }
+            }
+        }
+        //varibale name?
+        if (!(strpos($_name, '$') === false)) {
+            $call_cache = $_name;
+            $call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp';
+        } else {
+            $_name = trim($_name, "'\"");
+            $call_cache = "'{$_name}'";
+            $call_function = 'smarty_template_function_' . $_name;
+        }
+
+        $_params = 'array(' . implode(",", $_paramsArray) . ')';
+        $_hash = str_replace('-', '_', $compiler->template->properties['nocache_hash']);
+        // was there an assign attribute
+        if (isset($_assign)) {
+            if ($compiler->template->caching) {
+                $_output = "<?php ob_start(); Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
+            } else {
+                $_output = "<?php ob_start(); {$call_function}(\$_smarty_tpl,{$_params}); \$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
+            }
+        } else {
+            if ($compiler->template->caching) {
+                $_output = "<?php Smarty_Internal_Function_Call_Handler::call ({$call_cache},\$_smarty_tpl,{$_params},'{$_hash}',{$_nocache});?>\n";
+            } else {
+                $_output = "<?php {$call_function}(\$_smarty_tpl,{$_params});?>\n";
+            }
+        }
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_capture.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_capture.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_capture.php	(revision 25596)
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Capture
+ *
+ * Compiles the {capture} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Capture Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('name', 'assign', 'append');
+
+    /**
+     * Compiles code for the {capture} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'";
+        $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null';
+        $append = isset($_attr['append']) ? $_attr['append'] : 'null';
+
+        $compiler->_capture_stack[0][] = array($buffer, $assign, $append, $compiler->nocache);
+        // maybe nocache because of nocache variables
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+        $_output = "<?php \$_smarty_tpl->_capture_stack[0][] = array($buffer, $assign, $append); ob_start(); ?>";
+
+        return $_output;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Captureclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/capture} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+
+        list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]);
+
+        $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_capture_stack[0]);\n";
+        $_output .= "if (!empty(\$_capture_buffer)) {\n";
+        $_output .= " if (isset(\$_capture_assign)) \$_smarty_tpl->assign(\$_capture_assign, ob_get_contents());\n";
+        $_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n";
+        $_output .= " Smarty::\$_smarty_vars['capture'][\$_capture_buffer]=ob_get_clean();\n";
+        $_output .= "} else \$_smarty_tpl->capture_error();?>";
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_config_load.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_config_load.php	(revision 25596)
@@ -0,0 +1,85 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Config Load
+ *
+ * Compiles the {config load} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Config Load Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('file');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('file','section');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('section', 'scope');
+
+    /**
+     * Compiles code for the {config_load} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        static $_is_legal_scope = array('local' => true,'parent' => true,'root' => true,'global' => true);
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+
+
+        // save posible attributes
+        $conf_file = $_attr['file'];
+        if (isset($_attr['section'])) {
+            $section = $_attr['section'];
+        } else {
+            $section = 'null';
+        }
+        $scope = 'local';
+        // scope setup
+        if (isset($_attr['scope'])) {
+            $_attr['scope'] = trim($_attr['scope'], "'\"");
+            if (isset($_is_legal_scope[$_attr['scope']])) {
+                $scope = $_attr['scope'];
+           } else {
+                $compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno);
+           }
+        }
+        // create config object
+        $_output = "<?php  \$_config = new Smarty_Internal_Config($conf_file, \$_smarty_tpl->smarty, \$_smarty_tpl);";
+        $_output .= "\$_config->loadConfigVars($section, '$scope'); ?>";
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_continue.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_continue.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_continue.php	(revision 25596)
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Continue
+ *
+ * Compiles the {continue} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Continue Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('levels');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('levels');
+
+    /**
+     * Compiles code for the {continue} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+
+        if (isset($_attr['levels'])) {
+            if (!is_numeric($_attr['levels'])) {
+                $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
+            }
+            $_levels = $_attr['levels'];
+        } else {
+            $_levels = 1;
+        }
+        $level_count = $_levels;
+        $stack_count = count($compiler->_tag_stack) - 1;
+        while ($level_count > 0 && $stack_count >= 0) {
+            if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
+                $level_count--;
+            }
+            $stack_count--;
+        }
+        if ($level_count != 0) {
+            $compiler->trigger_template_error("cannot continue {$_levels} level(s)", $compiler->lex->taglineno);
+        }
+        $compiler->has_code = true;
+        return "<?php continue {$_levels}?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_debug.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_debug.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_debug.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Debug
+ *
+ * Compiles the {debug} tag.
+ * It opens a window the the Smarty Debugging Console.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Debug Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {debug} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        // compile always as nocache
+        $compiler->tag_nocache = true;
+
+        // display debug template
+        $_output = "<?php \$_smarty_tpl->smarty->loadPlugin('Smarty_Internal_Debug'); Smarty_Internal_Debug::display_debug(\$_smarty_tpl); ?>";
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_eval.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_eval.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_eval.php	(revision 25596)
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Eval
+ *
+ * Compiles the {eval} tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Eval Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('var');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('assign');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('var','assign');
+
+    /**
+     * Compiles code for the {eval} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        $this->required_attributes = array('var');
+        $this->optional_attributes = array('assign');
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        if (isset($_attr['assign'])) {
+              // output will be stored in a smarty variable instead of beind displayed
+            $_assign = $_attr['assign'];
+        }
+
+        // create template object
+        $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'.".$_attr['var'].", \$_smarty_tpl->smarty, \$_smarty_tpl);";
+        //was there an assign attribute?
+        if (isset($_assign)) {
+            $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
+        } else {
+            $_output .= "echo \$_template->fetch();";
+        }
+        return "<?php $_output ?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_extends.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_extends.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_extends.php	(revision 25596)
@@ -0,0 +1,133 @@
+<?php
+
+/**
+* Smarty Internal Plugin Compile extend
+*
+* Compiles the {extends} tag
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+/**
+* Smarty Internal Plugin Compile extend Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase {
+
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $required_attributes = array('file');
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $shorttag_order = array('file');
+    /**
+    * mbstring.overload flag
+    *
+    * @var int
+    */
+    public $mbstring_overload = 0;
+
+    /**
+    * Compiles code for the {extends} tag
+    *
+    * @param array  $args     array with attributes from parser
+    * @param object $compiler compiler object
+    * @return string compiled code
+    */
+    public function compile($args, $compiler)
+    {
+        static $_is_stringy = array('string' => true, 'eval' => true);
+        $this->_rdl = preg_quote($compiler->smarty->right_delimiter);
+        $this->_ldl = preg_quote($compiler->smarty->left_delimiter);
+        if (!$compiler->smarty->auto_literal) {
+            $al = '\s*';
+        } else {
+            $al = '';
+        }
+        $filepath = $compiler->template->source->filepath;
+        $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+
+        $_smarty_tpl = $compiler->template;
+        $include_file = null;
+        if (strpos($_attr['file'], '$_tmp') !== false) {
+            $compiler->trigger_template_error('illegal value for file attribute', $compiler->lex->taglineno);
+        }
+        eval('$include_file = ' . $_attr['file'] . ';');
+        // create template object
+        $_template = new $compiler->smarty->template_class($include_file, $compiler->smarty, $compiler->template);
+        // save file dependency
+        if (isset($_is_stringy[$_template->source->type])) {
+            $template_sha1 = sha1($include_file);
+        } else {
+            $template_sha1 = sha1($_template->source->filepath);
+        }
+        if (isset($compiler->template->properties['file_dependency'][$template_sha1])) {
+            $compiler->trigger_template_error("illegal recursive call of \"{$include_file}\"", $compiler->lex->line - 1);
+        }
+        $compiler->template->properties['file_dependency'][$template_sha1] = array($_template->source->filepath, $_template->source->timestamp, $_template->source->type);
+        $_content = ($this->mbstring_overload ? mb_substr($compiler->lex->data, $compiler->lex->counter - 1, 20000000, 'latin1') : substr($compiler->lex->data, $compiler->lex->counter - 1));
+        if (preg_match_all("!({$this->_ldl}{$al}block\s(.+?)\s*{$this->_rdl})!", $_content, $s) !=
+        preg_match_all("!({$this->_ldl}{$al}/block\s*{$this->_rdl})!", $_content, $c)) {
+            $compiler->trigger_template_error('unmatched {block} {/block} pairs');
+        }
+        preg_match_all("!{$this->_ldl}{$al}block\s(.+?)\s*{$this->_rdl}|{$this->_ldl}{$al}/block\s*{$this->_rdl}|{$this->_ldl}\*([\S\s]*?)\*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+        $_result_count = count($_result[0]);
+        $_start = 0;
+        while ($_start+1 < $_result_count) {
+            $_end = 0;
+            $_level = 1;
+            if (($this->mbstring_overload ? mb_substr($_result[0][$_start][0],0,mb_strlen($compiler->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start][0],0,strlen($compiler->smarty->left_delimiter)+1)) == $compiler->smarty->left_delimiter.'*') {
+                $_start++;
+                continue;
+            }
+            while ($_level != 0) {
+                $_end++;
+                if (($this->mbstring_overload ? mb_substr($_result[0][$_start + $_end][0],0,mb_strlen($compiler->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start + $_end][0],0,strlen($compiler->smarty->left_delimiter)+1)) == $compiler->smarty->left_delimiter.'*') {
+                    continue;
+                }
+                if (!strpos($_result[0][$_start + $_end][0], '/')) {
+                    $_level++;
+                } else {
+                    $_level--;
+                }
+            }
+            $_block_content = str_replace($compiler->smarty->left_delimiter . '$smarty.block.parent' . $compiler->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%',
+            ($this->mbstring_overload ? mb_substr($_content, $_result[0][$_start][1] + mb_strlen($_result[0][$_start][0], 'latin1'), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + mb_strlen($_result[0][$_start][0], 'latin1'), 'latin1') : substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))));
+            Smarty_Internal_Compile_Block::saveBlockData($_block_content, $_result[0][$_start][0], $compiler->template, $filepath);
+            $_start = $_start + $_end + 1;
+        }
+        if ($_template->source->type == 'extends') {
+            $_template->block_data = $compiler->template->block_data;
+        }
+        $compiler->template->source->content = $_template->source->content;
+        if ($_template->source->type == 'extends') {
+            $compiler->template->block_data = $_template->block_data;
+            foreach ($_template->source->components as $key => $component) {
+                $compiler->template->properties['file_dependency'][$key] = array($component->filepath, $component->timestamp, $component->type);
+            }
+        }
+        $compiler->template->source->filepath = $_template->source->filepath;
+        $compiler->abort_and_recompile = true;
+        return '';
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_for.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_for.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_for.php	(revision 25596)
@@ -0,0 +1,151 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile For
+ *
+ * Compiles the {for} {forelse} {/for} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile For Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {for} tag
+     *
+     * Smarty 3 does implement two different sytaxes:
+     *
+     * - {for $var in $array}
+     * For looping over arrays or iterators
+     *
+     * - {for $x=0; $x<$y; $x++}
+     * For general loops
+     *
+     * The parser is gereration different sets of attribute by which this compiler can
+     * determin which syntax is used.
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        if ($parameter == 0) {
+            $this->required_attributes = array('start', 'to');
+            $this->optional_attributes = array('max', 'step');
+        } else {
+            $this->required_attributes = array('start', 'ifexp', 'var', 'step');
+            $this->optional_attributes = array();
+        }
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        $output = "<?php ";
+        if ($parameter == 1) {
+            foreach ($_attr['start'] as $_statement) {
+                $output .= " \$_smarty_tpl->tpl_vars[$_statement[var]] = new Smarty_Variable;";
+                $output .= " \$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value];\n";
+            }
+            $output .= "  if ($_attr[ifexp]){ for (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$_attr[var]]->value$_attr[step]){\n";
+        } else {
+            $_statement = $_attr['start'];
+            $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]] = new Smarty_Variable;";
+            if (isset($_attr['step'])) {
+                $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->step = $_attr[step];";
+            } else {
+                $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->step = 1;";
+            }
+            if (isset($_attr['max'])) {
+                $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int)min(ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step)),$_attr[max]);\n";
+            } else {
+                $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int)ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step));\n";
+            }
+            $output .= "if (\$_smarty_tpl->tpl_vars[$_statement[var]]->total > 0){\n";
+            $output .= "for (\$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value], \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration = 1;\$_smarty_tpl->tpl_vars[$_statement[var]]->iteration <= \$_smarty_tpl->tpl_vars[$_statement[var]]->total;\$_smarty_tpl->tpl_vars[$_statement[var]]->value += \$_smarty_tpl->tpl_vars[$_statement[var]]->step, \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration++){\n";
+            $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->first = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == 1;";
+            $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->last = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == \$_smarty_tpl->tpl_vars[$_statement[var]]->total;";
+        }
+        $output .= "?>";
+
+        $this->openTag($compiler, 'for', array('for', $compiler->nocache));
+        // maybe nocache because of nocache variables
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+        // return compiled code
+        return $output;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Forelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {forelse} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr  = $this->getAttributes($compiler, $args);
+
+        list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
+        $this->openTag($compiler, 'forelse', array('forelse', $nocache));
+        return "<?php }} else { ?>";
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Forclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/for} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+
+        list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse'));
+
+        if ($openTag == 'forelse') {
+            return "<?php }  ?>";
+        } else {
+            return "<?php }} ?>";
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_foreach.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_foreach.php	(revision 25596)
@@ -0,0 +1,231 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Foreach
+ *
+ * Compiles the {foreach} {foreachelse} {/foreach} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Foreach Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('from', 'item');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('name', 'key');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('from','item','key','name');
+
+    /**
+     * Compiles code for the {foreach} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        $tpl = $compiler->template;
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        $from = $_attr['from'];
+        $item = $_attr['item'];
+        if (!strncmp("\$_smarty_tpl->tpl_vars[$item]", $from, strlen($item) + 24)) {
+            $compiler->trigger_template_error("item variable {$item} may not be the same variable as at 'from'", $compiler->lex->taglineno);
+        }
+
+        if (isset($_attr['key'])) {
+            $key = $_attr['key'];
+        } else {
+            $key = null;
+        }
+
+        $this->openTag($compiler, 'foreach', array('foreach', $compiler->nocache, $item, $key));
+        // maybe nocache because of nocache variables
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+        if (isset($_attr['name'])) {
+            $name = $_attr['name'];
+            $has_name = true;
+            $SmartyVarName = '$smarty.foreach.' . trim($name, '\'"') . '.';
+        } else {
+            $name = null;
+            $has_name = false;
+        }
+        $ItemVarName = '$' . trim($item, '\'"') . '@';
+        // evaluates which Smarty variables and properties have to be computed
+        if ($has_name) {
+            $usesSmartyFirst = strpos($tpl->source->content, $SmartyVarName . 'first') !== false;
+            $usesSmartyLast = strpos($tpl->source->content, $SmartyVarName . 'last') !== false;
+            $usesSmartyIndex = strpos($tpl->source->content, $SmartyVarName . 'index') !== false;
+            $usesSmartyIteration = strpos($tpl->source->content, $SmartyVarName . 'iteration') !== false;
+            $usesSmartyShow = strpos($tpl->source->content, $SmartyVarName . 'show') !== false;
+            $usesSmartyTotal = strpos($tpl->source->content, $SmartyVarName . 'total') !== false;
+        } else {
+            $usesSmartyFirst = false;
+            $usesSmartyLast = false;
+            $usesSmartyTotal = false;
+            $usesSmartyShow = false;
+        }
+
+        $usesPropFirst = $usesSmartyFirst || strpos($tpl->source->content, $ItemVarName . 'first') !== false;
+        $usesPropLast = $usesSmartyLast || strpos($tpl->source->content, $ItemVarName . 'last') !== false;
+        $usesPropIndex = $usesPropFirst || strpos($tpl->source->content, $ItemVarName . 'index') !== false;
+        $usesPropIteration = $usesPropLast || strpos($tpl->source->content, $ItemVarName . 'iteration') !== false;
+        $usesPropShow = strpos($tpl->source->content, $ItemVarName . 'show') !== false;
+        $usesPropTotal = $usesSmartyTotal || $usesSmartyShow || $usesPropShow || $usesPropLast || strpos($tpl->source->content, $ItemVarName . 'total') !== false;
+        // generate output code
+        $output = "<?php ";
+        $output .= " \$_smarty_tpl->tpl_vars[$item] = new Smarty_Variable; \$_smarty_tpl->tpl_vars[$item]->_loop = false;\n";
+        if ($key != null) {
+            $output .= " \$_smarty_tpl->tpl_vars[$key] = new Smarty_Variable;\n";
+        }
+        $output .= " \$_from = $from; if (!is_array(\$_from) && !is_object(\$_from)) { settype(\$_from, 'array');}\n";
+        if ($usesPropTotal) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->total= \$_smarty_tpl->_count(\$_from);\n";
+        }
+        if ($usesPropIteration) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->iteration=0;\n";
+        }
+        if ($usesPropIndex) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->index=-1;\n";
+        }
+        if ($usesPropShow) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->show = (\$_smarty_tpl->tpl_vars[$item]->total > 0);\n";
+        }
+        if ($has_name) {
+            if ($usesSmartyTotal) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['total'] = \$_smarty_tpl->tpl_vars[$item]->total;\n";
+            }
+            if ($usesSmartyIteration) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['iteration']=0;\n";
+            }
+            if ($usesSmartyIndex) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['index']=-1;\n";
+            }
+            if ($usesSmartyShow) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['show']=(\$_smarty_tpl->tpl_vars[$item]->total > 0);\n";
+            }
+        }
+        $output .= "foreach (\$_from as \$_smarty_tpl->tpl_vars[$item]->key => \$_smarty_tpl->tpl_vars[$item]->value){\n\$_smarty_tpl->tpl_vars[$item]->_loop = true;\n";
+        if ($key != null) {
+            $output .= " \$_smarty_tpl->tpl_vars[$key]->value = \$_smarty_tpl->tpl_vars[$item]->key;\n";
+        }
+        if ($usesPropIteration) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->iteration++;\n";
+        }
+        if ($usesPropIndex) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->index++;\n";
+        }
+        if ($usesPropFirst) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->first = \$_smarty_tpl->tpl_vars[$item]->index === 0;\n";
+        }
+        if ($usesPropLast) {
+            $output .= " \$_smarty_tpl->tpl_vars[$item]->last = \$_smarty_tpl->tpl_vars[$item]->iteration === \$_smarty_tpl->tpl_vars[$item]->total;\n";
+        }
+        if ($has_name) {
+            if ($usesSmartyFirst) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['first'] = \$_smarty_tpl->tpl_vars[$item]->first;\n";
+            }
+            if ($usesSmartyIteration) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['iteration']++;\n";
+            }
+            if ($usesSmartyIndex) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['index']++;\n";
+            }
+            if ($usesSmartyLast) {
+                $output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['last'] = \$_smarty_tpl->tpl_vars[$item]->last;\n";
+            }
+        }
+        $output .= "?>";
+
+        return $output;
+    }
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {foreachelse} tag
+     *
+     * @param array  $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        list($openTag, $nocache, $item, $key) = $this->closeTag($compiler, array('foreach'));
+        $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $item, $key));
+
+        return "<?php }\nif (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>";
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/foreach} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+
+        list($openTag, $compiler->nocache, $item, $key) = $this->closeTag($compiler, array('foreach', 'foreachelse'));
+
+        return "<?php } ?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_function.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_function.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_function.php	(revision 25596)
@@ -0,0 +1,166 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function
+ *
+ * Compiles the {function} {/function} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the {function} tag
+     *
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array $parameter array with compilation parameter
+     * @return boolean true
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+        unset($_attr['nocache']);
+        $save = array($_attr, $compiler->parser->current_buffer,
+            $compiler->template->has_nocache_code, $compiler->template->required_plugins);
+        $this->openTag($compiler, 'function', $save);
+        $_name = trim($_attr['name'], "'\"");
+        unset($_attr['name']);
+        // set flag that we are compiling a template function
+        $compiler->compiles_template_function = true;
+        $compiler->template->properties['function'][$_name]['parameter'] = array();
+        $_smarty_tpl = $compiler->template;
+        foreach ($_attr as $_key => $_data) {
+            eval ('$tmp='.$_data.';');
+            $compiler->template->properties['function'][$_name]['parameter'][$_key] = $tmp;
+        }
+        $compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
+        if ($compiler->template->caching) {
+            $output = '';
+        } else {
+            $output = "<?php if (!function_exists('smarty_template_function_{$_name}')) {
+    function smarty_template_function_{$_name}(\$_smarty_tpl,\$params) {
+    \$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
+    foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
+    foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
+        }
+        // Init temporay context
+        $compiler->template->required_plugins = array('compiled' => array(), 'nocache' => array());
+        $compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser);
+        $compiler->parser->current_buffer->append_subtree(new _smarty_tag($compiler->parser, $output));
+        $compiler->template->has_nocache_code = false;
+        $compiler->has_code = false;
+        $compiler->template->properties['function'][$_name]['compiled'] = '';
+        return true;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Functionclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/function} tag
+     *
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array $parameter array with compilation parameter
+     * @return boolean true
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        $saved_data = $this->closeTag($compiler, array('function'));
+        $_name = trim($saved_data[0]['name'], "'\"");
+        // build plugin include code
+        $plugins_string = '';
+        if (!empty($compiler->template->required_plugins['compiled'])) {
+            $plugins_string = '<?php ';
+            foreach($compiler->template->required_plugins['compiled'] as $tmp) {
+                foreach($tmp as $data) {
+                    $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$data['file']}';\n";
+                }
+            }
+            $plugins_string .= '?>';
+        }
+        if (!empty($compiler->template->required_plugins['nocache'])) {
+            $plugins_string .= "<?php echo '/*%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/<?php ";
+            foreach($compiler->template->required_plugins['nocache'] as $tmp) {
+                foreach($tmp as $data) {
+                    $plugins_string .= "if (!is_callable(\'{$data['function']}\')) include \'{$data['file']}\';\n";
+                }
+            }
+            $plugins_string .= "?>/*/%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/';?>\n";
+        }
+         // remove last line break from function definition
+         $last = count($compiler->parser->current_buffer->subtrees) - 1;
+         if ($compiler->parser->current_buffer->subtrees[$last] instanceof _smarty_linebreak) {
+             unset($compiler->parser->current_buffer->subtrees[$last]);
+         }
+        // if caching save template function for possible nocache call
+        if ($compiler->template->caching) {
+            $compiler->template->properties['function'][$_name]['compiled'] .= $plugins_string
+             . $compiler->parser->current_buffer->to_smarty_php();
+            $compiler->template->properties['function'][$_name]['nocache_hash'] = $compiler->template->properties['nocache_hash'];
+            $compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code;
+            $compiler->template->properties['function'][$_name]['called_functions'] = $compiler->called_functions;
+            $compiler->called_functions = array();
+            $compiler->smarty->template_functions[$_name] = $compiler->template->properties['function'][$_name];
+            $compiler->has_code = false;
+            $output = true;
+        } else {
+            $output = $plugins_string . $compiler->parser->current_buffer->to_smarty_php() . "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;
+foreach (Smarty::\$global_tpl_vars as \$key => \$value) if(!isset(\$_smarty_tpl->tpl_vars[\$key])) \$_smarty_tpl->tpl_vars[\$key] = \$value;}}?>\n";
+        }
+        // reset flag that we are compiling a template function
+        $compiler->compiles_template_function = false;
+        // restore old compiler status
+        $compiler->parser->current_buffer = $saved_data[1];
+        $compiler->template->has_nocache_code = $compiler->template->has_nocache_code | $saved_data[2];
+        $compiler->template->required_plugins = $saved_data[3];
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_if.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_if.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_if.php	(revision 25596)
@@ -0,0 +1,207 @@
+<?php
+/**
+* Smarty Internal Plugin Compile If
+*
+* Compiles the {if} {else} {elseif} {/if} tags
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+/**
+* Smarty Internal Plugin Compile If Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase {
+
+    /**
+    * Compiles code for the {if} tag
+    *
+    * @param array  $args       array with attributes from parser
+    * @param object $compiler   compiler object
+    * @param array  $parameter  array with compilation parameter
+    * @return string compiled code
+    */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        $this->openTag($compiler, 'if', array(1, $compiler->nocache));
+        // must whole block be nocache ?
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+        if (!array_key_exists("if condition",$parameter)) {
+            $compiler->trigger_template_error("missing if condition", $compiler->lex->taglineno);
+        }
+
+        if (is_array($parameter['if condition'])) {
+            if ($compiler->nocache) {
+                $_nocache = ',true';
+                // create nocache var to make it know for further compiling
+                if (is_array($parameter['if condition']['var'])) {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var']['var'], "'")] = new Smarty_variable(null, true);
+                } else {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true);
+                }
+            } else {
+                $_nocache = '';
+            }
+            if (is_array($parameter['if condition']['var'])) {
+                $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]) || !is_array(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]->value)) \$_smarty_tpl->createLocalArrayVariable(".$parameter['if condition']['var']['var']."$_nocache);\n";
+                $_output .= "if (\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]->value".$parameter['if condition']['var']['smarty_internal_index']." = ".$parameter['if condition']['value']."){?>";
+            } else {
+                $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."])) \$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."] = new Smarty_Variable(null{$_nocache});";
+                $_output .= "if (\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."]->value = ".$parameter['if condition']['value']."){?>";
+            }
+            return $_output;
+        } else {
+            return "<?php if ({$parameter['if condition']}){?>";
+        }
+    }
+
+}
+
+/**
+* Smarty Internal Plugin Compile Else Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase {
+
+    /**
+    * Compiles code for the {else} tag
+    *
+    * @param array  $args       array with attributes from parser
+    * @param object $compiler   compiler object
+    * @param array  $parameter  array with compilation parameter
+    * @return string compiled code
+    */
+    public function compile($args, $compiler, $parameter)
+    {
+        list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+        $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
+
+        return "<?php }else{ ?>";
+    }
+
+}
+
+/**
+* Smarty Internal Plugin Compile ElseIf Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase {
+
+    /**
+    * Compiles code for the {elseif} tag
+    *
+    * @param array  $args       array with attributes from parser
+    * @param object $compiler   compiler object
+    * @param array  $parameter  array with compilation parameter
+    * @return string compiled code
+    */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+
+        if (!array_key_exists("if condition",$parameter)) {
+            $compiler->trigger_template_error("missing elseif condition", $compiler->lex->taglineno);
+        }
+
+        if (is_array($parameter['if condition'])) {
+            $condition_by_assign = true;
+            if ($compiler->nocache) {
+                $_nocache = ',true';
+                // create nocache var to make it know for further compiling
+                if (is_array($parameter['if condition']['var'])) {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var']['var'], "'")] = new Smarty_variable(null, true);
+                } else {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true);
+                }
+            } else {
+                $_nocache = '';
+            }
+        } else {
+            $condition_by_assign = false;
+        }
+
+        if (empty($compiler->prefix_code)) {
+            if ($condition_by_assign) {
+                $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+                if (is_array($parameter['if condition']['var'])) {
+                    $_output = "<?php }else{ if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+                    $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+                } else {
+                    $_output = "<?php  }else{ if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+                    $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+                }
+                return $_output;
+            } else {
+                $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
+                return "<?php }elseif({$parameter['if condition']}){?>";
+            }
+        } else {
+            $tmp = '';
+            foreach ($compiler->prefix_code as $code)
+            $tmp .= $code;
+            $compiler->prefix_code = array();
+            $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+            if ($condition_by_assign) {
+                if (is_array($parameter['if condition']['var'])) {
+                    $_output = "<?php }else{?>{$tmp}<?php  if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+                    $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+                } else {
+                    $_output = "<?php }else{?>{$tmp}<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+                    $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+                }
+                return $_output;
+            } else {
+                return "<?php }else{?>{$tmp}<?php if ({$parameter['if condition']}){?>";
+            }
+        }
+    }
+
+}
+
+/**
+* Smarty Internal Plugin Compile Ifclose Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase {
+
+    /**
+    * Compiles code for the {/if} tag
+    *
+    * @param array  $args       array with attributes from parser
+    * @param object $compiler   compiler object
+    * @param array  $parameter  array with compilation parameter
+    * @return string compiled code
+    */
+    public function compile($args, $compiler, $parameter)
+    {
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+        list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
+        $tmp = '';
+        for ($i = 0; $i < $nesting; $i++) {
+            $tmp .= '}';
+        }
+        return "<?php {$tmp}?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include.php	(revision 25596)
@@ -0,0 +1,215 @@
+<?php
+/**
+* Smarty Internal Plugin Compile Include
+*
+* Compiles the {include} tag
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+/**
+* Smarty Internal Plugin Compile Include Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
+
+    /**
+    * caching mode to create nocache code but no cache file
+    */
+    const CACHING_NOCACHE_CODE = 9999;
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $required_attributes = array('file');
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $shorttag_order = array('file');
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $option_flags = array('nocache', 'inline', 'caching');
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $optional_attributes = array('_any');
+
+    /**
+    * Compiles code for the {include} tag
+    *
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // save posible attributes
+        $include_file = $_attr['file'];
+
+        if (isset($_attr['assign'])) {
+            // output will be stored in a smarty variable instead of beind displayed
+            $_assign = $_attr['assign'];
+        }
+
+        $_parent_scope = Smarty::SCOPE_LOCAL;
+        if (isset($_attr['scope'])) {
+            $_attr['scope'] = trim($_attr['scope'], "'\"");
+            if ($_attr['scope'] == 'parent') {
+                $_parent_scope = Smarty::SCOPE_PARENT;
+            } elseif ($_attr['scope'] == 'root') {
+                $_parent_scope = Smarty::SCOPE_ROOT;
+            } elseif ($_attr['scope'] == 'global') {
+                $_parent_scope = Smarty::SCOPE_GLOBAL;
+            }
+        }
+        $_caching = 'null';
+        if ($compiler->nocache || $compiler->tag_nocache) {
+            $_caching = Smarty::CACHING_OFF;
+        }
+        // default for included templates
+        if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
+            $_caching = self::CACHING_NOCACHE_CODE;
+        }
+        /*
+        * if the {include} tag provides individual parameter for caching
+        * it will not be included into the common cache file and treated like
+        * a nocache section
+        */
+        if (isset($_attr['cache_lifetime'])) {
+            $_cache_lifetime = $_attr['cache_lifetime'];
+            $compiler->tag_nocache = true;
+            $_caching = Smarty::CACHING_LIFETIME_CURRENT;
+        } else {
+            $_cache_lifetime = 'null';
+        }
+        if (isset($_attr['cache_id'])) {
+            $_cache_id = $_attr['cache_id'];
+            $compiler->tag_nocache = true;
+            $_caching = Smarty::CACHING_LIFETIME_CURRENT;
+        } else {
+            $_cache_id = '$_smarty_tpl->cache_id';
+        }
+        if (isset($_attr['compile_id'])) {
+            $_compile_id = $_attr['compile_id'];
+        } else {
+            $_compile_id = '$_smarty_tpl->compile_id';
+        }
+        if ($_attr['caching'] === true) {
+            $_caching = Smarty::CACHING_LIFETIME_CURRENT;
+        }
+        if ($_attr['nocache'] === true) {
+            $compiler->tag_nocache = true;
+            $_caching = Smarty::CACHING_OFF;
+        }
+
+        $has_compiled_template = false;
+        if (($compiler->smarty->merge_compiled_includes || $_attr['inline'] === true) && !$compiler->template->source->recompiled
+            && !($compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache)) && $_caching != Smarty::CACHING_LIFETIME_CURRENT) {
+            // check if compiled code can be merged (contains no variable part)
+            if (!$compiler->has_variable_string && (substr_count($include_file, '"') == 2 or substr_count($include_file, "'") == 2)
+               and substr_count($include_file, '(') == 0 and substr_count($include_file, '$_smarty_tpl->') == 0) {
+                $tpl_name = null;
+                eval("\$tpl_name = $include_file;");
+                if (!isset($compiler->smarty->merged_templates_func[$tpl_name]) || $compiler->inheritance) {
+                    $tpl = new $compiler->smarty->template_class ($tpl_name, $compiler->smarty, $compiler->template, $compiler->template->cache_id, $compiler->template->compile_id);
+                    // save unique function name
+                    $compiler->smarty->merged_templates_func[$tpl_name]['func'] = $tpl->properties['unifunc'] = 'content_'. str_replace('.', '_', uniqid('', true));
+                    // use current nocache hash for inlined code
+                    $compiler->smarty->merged_templates_func[$tpl_name]['nocache_hash'] = $tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash'];
+                    if ($compiler->template->caching) {
+                        // needs code for cached page but no cache file
+                        $tpl->caching = self::CACHING_NOCACHE_CODE;
+                    }
+                    // make sure whole chain gest compiled
+                    $tpl->mustCompile = true;
+                    if (!($tpl->source->uncompiled) && $tpl->source->exists) {
+                        // get compiled code
+                        $compiled_code = $tpl->compiler->compileTemplate($tpl);
+                        // release compiler object to free memory
+                        unset($tpl->compiler);
+                        // merge compiled code for {function} tags
+                        $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $tpl->properties['function']);
+                        // merge filedependency
+                        $tpl->properties['file_dependency'][$tpl->source->uid] = array($tpl->source->filepath, $tpl->source->timestamp,$tpl->source->type);
+                        $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $tpl->properties['file_dependency']);
+                        // remove header code
+                        $compiled_code = preg_replace("/(<\?php \/\*%%SmartyHeaderCode:{$tpl->properties['nocache_hash']}%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s", '', $compiled_code);
+                        if ($tpl->has_nocache_code) {
+                            // replace nocache_hash
+                            $compiled_code = str_replace("{$tpl->properties['nocache_hash']}", $compiler->template->properties['nocache_hash'], $compiled_code);
+                            $compiler->template->has_nocache_code = true;
+                        }
+                        $compiler->merged_templates[$tpl->properties['unifunc']] = $compiled_code;
+                        $has_compiled_template = true;
+                    }
+                } else {
+                    $has_compiled_template = true;
+                }
+            }
+        }
+        // delete {include} standard attributes
+        unset($_attr['file'], $_attr['assign'], $_attr['cache_id'], $_attr['compile_id'], $_attr['cache_lifetime'], $_attr['nocache'], $_attr['caching'], $_attr['scope'], $_attr['inline']);
+        // remaining attributes must be assigned as smarty variable
+        if (!empty($_attr)) {
+            if ($_parent_scope == Smarty::SCOPE_LOCAL) {
+                // create variables
+                foreach ($_attr as $key => $value) {
+                    $_pairs[] = "'$key'=>$value";
+                }
+                $_vars = 'array('.join(',',$_pairs).')';
+                $_has_vars = true;
+            } else {
+                $compiler->trigger_template_error('variable passing not allowed in parent/global scope', $compiler->lex->taglineno);
+            }
+        } else {
+            $_vars = 'array()';
+            $_has_vars = false;
+        }
+        if ($has_compiled_template) {
+            $_hash = $compiler->smarty->merged_templates_func[$tpl_name]['nocache_hash'];
+            $_output = "<?php /*  Call merged included template \"" . $tpl_name . "\" */\n";
+            $_output .= "\$_tpl_stack[] = \$_smarty_tpl;\n";
+            $_output .= " \$_smarty_tpl = \$_smarty_tpl->setupInlineSubTemplate($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope, '$_hash');\n";
+            if (isset($_assign)) {
+                $_output .= 'ob_start(); ';
+            }
+            $_output .= $compiler->smarty->merged_templates_func[$tpl_name]['func']. "(\$_smarty_tpl);\n";
+            $_output .= "\$_smarty_tpl = array_pop(\$_tpl_stack); ";
+            if (isset($_assign)) {
+                $_output .= " \$_smarty_tpl->tpl_vars[$_assign] = new Smarty_variable(ob_get_clean());";
+            }
+            $_output .= "/*  End of included template \"" . $tpl_name . "\" */?>";
+            return $_output;
+        }
+
+        // was there an assign attribute
+        if (isset($_assign)) {
+            $_output = "<?php \$_smarty_tpl->tpl_vars[$_assign] = new Smarty_variable(\$_smarty_tpl->getSubTemplate ($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope));?>\n";;
+        } else {
+            $_output = "<?php echo \$_smarty_tpl->getSubTemplate ($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope);?>\n";
+        }
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php	(revision 25596)
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Include PHP
+ *
+ * Compiles the {include_php} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('file');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('file');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('once', 'assign');
+
+    /**
+     * Compiles code for the {include_php} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        if (!($compiler->smarty instanceof SmartyBC)) {
+            throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable");
+        }
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        $_output = '<?php ';
+
+        $_smarty_tpl = $compiler->template;
+        $_filepath = false;
+        eval('$_file = ' . $_attr['file'] . ';');
+        if (!isset($compiler->smarty->security_policy) && file_exists($_file)) {
+            $_filepath = $_file;
+        } else {
+            if (isset($compiler->smarty->security_policy)) {
+                $_dir = $compiler->smarty->security_policy->trusted_dir;
+            } else {
+                $_dir = $compiler->smarty->trusted_dir;
+            }
+            if (!empty($_dir)) {
+                foreach((array)$_dir as $_script_dir) {
+                    $_script_dir = rtrim($_script_dir, '/\\') . DS;
+                    if (file_exists($_script_dir . $_file)) {
+                        $_filepath = $_script_dir .  $_file;
+                        break;
+                    }
+                }
+            }
+        }
+        if ($_filepath == false) {
+            $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $compiler->lex->taglineno);
+        }
+
+        if (isset($compiler->smarty->security_policy)) {
+            $compiler->smarty->security_policy->isTrustedPHPDir($_filepath);
+        }
+
+        if (isset($_attr['assign'])) {
+            // output will be stored in a smarty variable instead of being displayed
+            $_assign = $_attr['assign'];
+        }
+        $_once = '_once';
+        if (isset($_attr['once'])) {
+            if ($_attr['once'] == 'false') {
+                $_once = '';
+            }
+        }
+
+        if (isset($_assign)) {
+            return "<?php ob_start(); include{$_once} ('{$_filepath}'); \$_smarty_tpl->assign({$_assign},ob_get_contents()); ob_end_clean();?>";
+        } else {
+            return "<?php include{$_once} ('{$_filepath}');?>\n";
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_insert.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_insert.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_insert.php	(revision 25596)
@@ -0,0 +1,142 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Insert
+ *
+ * Compiles the {insert} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the {insert} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // never compile as nocache code
+        $compiler->suppressNocacheProcessing = true;
+        $compiler->tag_nocache = true;
+        $_smarty_tpl = $compiler->template;
+        $_name = null;
+        $_script = null;
+
+        $_output = '<?php ';
+        // save posible attributes
+        eval('$_name = ' . $_attr['name'] . ';');
+        if (isset($_attr['assign'])) {
+            // output will be stored in a smarty variable instead of being displayed
+            $_assign = $_attr['assign'];
+            // create variable to make shure that the compiler knows about its nocache status
+            $compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true);
+        }
+        if (isset($_attr['script'])) {
+            // script which must be included
+            $_function = "smarty_insert_{$_name}";
+            $_smarty_tpl = $compiler->template;
+            $_filepath = false;
+            eval('$_script = ' . $_attr['script'] . ';');
+            if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
+                $_filepath = $_script;
+            } else {
+                if (isset($compiler->smarty->security_policy)) {
+                    $_dir = $compiler->smarty->security_policy->trusted_dir;
+                } else {
+                    $_dir = $compiler->smarty->trusted_dir;
+                }
+                if (!empty($_dir)) {
+                    foreach((array)$_dir as $_script_dir) {
+                        $_script_dir = rtrim($_script_dir, '/\\') . DS;
+                        if (file_exists($_script_dir . $_script)) {
+                            $_filepath = $_script_dir . $_script;
+                            break;
+                        }
+                    }
+                }
+            }
+            if ($_filepath == false) {
+                $compiler->trigger_template_error("{insert} missing script file '{$_script}'", $compiler->lex->taglineno);
+            }
+            // code for script file loading
+            $_output .= "require_once '{$_filepath}' ;";
+            require_once $_filepath;
+            if (!is_callable($_function)) {
+                $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", $compiler->lex->taglineno);
+            }
+        } else {
+            $_filepath = 'null';
+            $_function = "insert_{$_name}";
+            // function in PHP script ?
+            if (!is_callable($_function)) {
+                // try plugin
+                if (!$_function = $compiler->getPlugin($_name, 'insert')) {
+                    $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", $compiler->lex->taglineno);
+                }
+            }
+        }
+        // delete {insert} standard attributes
+        unset($_attr['name'], $_attr['assign'], $_attr['script'], $_attr['nocache']);
+        // convert attributes into parameter array string
+        $_paramsArray = array();
+        foreach ($_attr as $_key => $_value) {
+            $_paramsArray[] = "'$_key' => $_value";
+        }
+        $_params = 'array(' . implode(", ", $_paramsArray) . ')';
+        // call insert
+        if (isset($_assign)) {
+            if ($_smarty_tpl->caching) {
+                $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>";
+            } else {
+                $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
+            }
+        } else {
+            $compiler->has_output = true;
+            if ($_smarty_tpl->caching) {
+                $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
+            } else {
+                $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
+            }
+        }
+        return $_output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Ldelim
+ *
+ * Compiles the {ldelim} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Ldelim Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {ldelim} tag
+     *
+     * This tag does output the left delimiter
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+        // this tag does not return compiled code
+        $compiler->has_code = true;
+        return $compiler->smarty->left_delimiter;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_nocache.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_nocache.php	(revision 25596)
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Nocache
+ *
+ * Compiles the {nocache} {/nocache} tags.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Nocache Classv
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {nocache} tag
+     *
+     * This tag does not generate compiled output. It only sets a compiler flag.
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return bool
+     */
+    public function compile($args, $compiler)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+        // enter nocache mode
+        $compiler->nocache = true;
+        // this tag does not return compiled code
+        $compiler->has_code = false;
+        return true;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Nocacheclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/nocache} tag
+     *
+     * This tag does not generate compiled output. It only sets a compiler flag.
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return bool
+     */
+    public function compile($args, $compiler)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        // leave nocache mode
+        $compiler->nocache = false;
+        // this tag does not return compiled code
+        $compiler->has_code = false;
+        return true;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php	(revision 25596)
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Block Plugin
+ *
+ * Compiles code for the execution of block plugin
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Block Plugin Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of block plugin
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @param string $tag       name of block plugin
+     * @param string $function  PHP function name
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag, $function)
+    {
+        if (!isset($tag[5]) || substr($tag, -5) != 'close') {
+            // opening tag of block plugin
+            // check and get attributes
+            $_attr = $this->getAttributes($compiler, $args);
+            if ($_attr['nocache'] === true) {
+                $compiler->tag_nocache = true;
+            }
+               unset($_attr['nocache']);
+            // convert attributes into parameter array string
+            $_paramsArray = array();
+            foreach ($_attr as $_key => $_value) {
+                if (is_int($_key)) {
+                    $_paramsArray[] = "$_key=>$_value";
+                } else {
+                    $_paramsArray[] = "'$_key'=>$_value";
+                }
+            }
+            $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+            $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
+            // maybe nocache because of nocache variables or nocache plugin
+            $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+            // compile code
+            $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+        } else {
+            // must endblock be nocache?
+            if ($compiler->nocache) {
+                $compiler->tag_nocache = true;
+            }
+            // closing tag of block plugin, restore nocache
+            list($_params, $compiler->nocache) = $this->closeTag($compiler, substr($tag, 0, -5));
+            // This tag does create output
+            $compiler->has_output = true;
+            // compile code
+            if (!isset($parameter['modifier_list'])) {
+                $mod_pre = $mod_post ='';
+            } else {
+                $mod_pre = ' ob_start(); ';
+                $mod_post = 'echo '.$compiler->compileTag('private_modifier',array(),array('modifierlist'=>$parameter['modifier_list'],'value'=>'ob_get_clean()')).';';
+            }
+            $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post." } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+        }
+        return $output . "\n";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php	(revision 25596)
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Function Plugin
+ *
+ * Compiles code for the execution of function plugin
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Function Plugin Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array();
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of function plugin
+     *
+     * @param array $args array with attributes from parser
+     * @param object $compiler compiler object
+     * @param array $parameter array with compilation parameter
+     * @param string $tag name of function plugin
+     * @param string $function PHP function name
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag, $function)
+    {
+        // This tag does create output
+        $compiler->has_output = true;
+
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->tag_nocache = true;
+        }
+        unset($_attr['nocache']);
+        // convert attributes into parameter array string
+        $_paramsArray = array();
+        foreach ($_attr as $_key => $_value) {
+            if (is_int($_key)) {
+                $_paramsArray[] = "$_key=>$_value";
+            } else {
+                $_paramsArray[] = "'$_key'=>$_value";
+            }
+        }
+        $_params = 'array(' . implode(",", $_paramsArray) . ')';
+        // compile code
+        $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php	(revision 25596)
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Modifier
+ *
+ * Compiles code for modifier execution
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Modifier Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for modifier execution
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter) {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        $output = $parameter['value'];
+        // loop over list of modifiers
+        foreach ($parameter['modifierlist'] as $single_modifier) {
+            $modifier = $single_modifier[0];
+            $single_modifier[0] = $output;
+            $params = implode(',', $single_modifier);
+            // check if we know already the type of modifier
+            if (isset($compiler->known_modifier_type[$modifier])) {
+                $modifier_types = array($compiler->known_modifier_type[$modifier]);
+            } else {
+                $modifier_types = array(1, 2, 3, 4, 5, 6);
+            }
+            foreach ($modifier_types as $type) {
+                switch ($type) {
+                    case 1:
+                        // registered modifier
+                        if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
+                            $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+                            if (!is_array($function)) {
+                                $output = "{$function}({$params})";
+                            } else {
+                                if (is_object($function[0])) {
+                                    $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+                                } else {
+                                    $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+                                }
+                            }
+                            $compiler->known_modifier_type[$modifier] = $type;
+                            break 2;
+                        }
+                        break;
+                    case 2:
+                        // registered modifier compiler
+                        if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
+                            $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
+                            $compiler->known_modifier_type[$modifier] = $type;
+                            break 2;
+                        }
+                        break;
+                    case 3:
+                        // modifiercompiler plugin
+                        if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
+                            // check if modifier allowed
+                            if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+                                $plugin = 'smarty_modifiercompiler_' . $modifier;
+                                $output = $plugin($single_modifier, $compiler);
+                            }
+                            $compiler->known_modifier_type[$modifier] = $type;
+                            break 2;
+                        }
+                        break;
+                    case 4:
+                        // modifier plugin
+                        if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
+                            // check if modifier allowed
+                            if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+                                $output = "{$function}({$params})";
+                            }
+                            $compiler->known_modifier_type[$modifier] = $type;
+                            break 2;
+                        }
+                        break;
+                    case 5:
+                        // PHP function
+                        if (is_callable($modifier)) {
+                            // check if modifier allowed
+                            if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)) {
+                                $output = "{$modifier}({$params})";
+                            }
+                            $compiler->known_modifier_type[$modifier] = $type;
+                            break 2;
+                        }
+                        break;
+                    case 6:
+                        // default plugin handler
+                        if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) || (is_callable($compiler->smarty->default_plugin_handler_func) && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))) {
+                            $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+                            // check if modifier allowed
+                            if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+                                if (!is_array($function)) {
+                                    $output = "{$function}({$params})";
+                                } else {
+                                    if (is_object($function[0])) {
+                                        $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+                                    } else {
+                                        $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+                                    }
+                                }
+                            }
+                            if (isset($compiler->template->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) || isset($compiler->template->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])) {
+                                // was a plugin
+                                $compiler->known_modifier_type[$modifier] = 4;
+                            } else {
+                                $compiler->known_modifier_type[$modifier] = $type;
+                            }
+                            break 2;
+                        }
+                }
+            }
+            if (!isset($compiler->known_modifier_type[$modifier])) {
+                $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", $compiler->lex->taglineno);
+            }
+        }
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php	(revision 25596)
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Block Function
+ *
+ * Compiles code for registered objects as block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Object Block Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of block plugin
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @param string $tag       name of block object
+     * @param string $method    name of method to call
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag, $method)
+    {
+        if (!isset($tag[5]) || substr($tag, -5) != 'close') {
+            // opening tag of block plugin
+            // check and get attributes
+            $_attr = $this->getAttributes($compiler, $args);
+            if ($_attr['nocache'] === true) {
+                $compiler->tag_nocache = true;
+            }
+            unset($_attr['nocache']);
+            // convert attributes into parameter array string
+            $_paramsArray = array();
+            foreach ($_attr as $_key => $_value) {
+                if (is_int($_key)) {
+                    $_paramsArray[] = "$_key=>$_value";
+                } else {
+                    $_paramsArray[] = "'$_key'=>$_value";
+                }
+            }
+            $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+            $this->openTag($compiler, $tag . '->' . $method, array($_params, $compiler->nocache));
+            // maybe nocache because of nocache variables or nocache plugin
+            $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+            // compile code
+            $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}->{$method}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+        } else {
+            $base_tag = substr($tag, 0, -5);
+            // must endblock be nocache?
+            if ($compiler->nocache) {
+                $compiler->tag_nocache = true;
+            }
+            // closing tag of block plugin, restore nocache
+            list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag . '->' . $method);
+            // This tag does create output
+            $compiler->has_output = true;
+            // compile code
+            if (!isset($parameter['modifier_list'])) {
+                $mod_pre = $mod_post = '';
+            } else {
+                $mod_pre = ' ob_start(); ';
+                $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'], 'value' => 'ob_get_clean()')) . ';';
+            }
+            $output = "<?php \$_block_content = ob_get_contents(); ob_end_clean(); \$_block_repeat=false;" . $mod_pre . " echo \$_smarty_tpl->smarty->registered_objects['{$base_tag}'][0]->{$method}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . "  } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+        }
+        return $output . "\n";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php	(revision 25596)
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Object Funtion
+ *
+ * Compiles code for registered objects as function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Object Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of function plugin
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @param string $tag       name of function
+     * @param string $method    name of method to call
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag, $method)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->tag_nocache = true;
+        }
+        unset($_attr['nocache']);
+        $_assign = null;
+        if (isset($_attr['assign'])) {
+            $_assign = $_attr['assign'];
+            unset($_attr['assign']);
+        }
+        // convert attributes into parameter array string
+        if ($compiler->smarty->registered_objects[$tag][2]) {
+            $_paramsArray = array();
+            foreach ($_attr as $_key => $_value) {
+                if (is_int($_key)) {
+                    $_paramsArray[] = "$_key=>$_value";
+                } else {
+                    $_paramsArray[] = "'$_key'=>$_value";
+                }
+            }
+            $_params = 'array(' . implode(",", $_paramsArray) . ')';
+            $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
+        } else {
+            $_params = implode(",", $_attr);
+            $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
+        }
+        if (empty($_assign)) {
+            // This tag does create output
+            $compiler->has_output = true;
+            $output = "<?php echo {$return};?>\n";
+        } else {
+            $output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";
+        }
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php	(revision 25596)
@@ -0,0 +1,156 @@
+<?php
+/**
+* Smarty Internal Plugin Compile Print Expression
+*
+* Compiles any tag which will output an expression or variable
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+/**
+* Smarty Internal Plugin Compile Print Expression Class
+*
+* @package Smarty
+* @subpackage Compiler
+*/
+class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase {
+
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $optional_attributes = array('assign');
+    /**
+    * Attribute definition: Overwrites base class.
+    *
+    * @var array
+    * @see Smarty_Internal_CompileBase
+    */
+    public $option_flags = array('nocache', 'nofilter');
+
+    /**
+    * Compiles code for gererting output from any expression
+    *
+    * @param array  $args      array with attributes from parser
+    * @param object $compiler  compiler object
+    * @param array  $parameter array with compilation parameter
+    * @return string compiled code
+    */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        // nocache option
+        if ($_attr['nocache'] === true) {
+            $compiler->tag_nocache = true;
+        }
+        // filter handling
+        if ($_attr['nofilter'] === true) {
+            $_filter = 'false';
+        } else {
+            $_filter = 'true';
+        }
+        if (isset($_attr['assign'])) {
+            // assign output to variable
+            $output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>";
+        } else {
+            // display value
+            $output = $parameter['value'];
+            // tag modifier
+            if (!empty($parameter['modifierlist'])) {
+                $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifierlist'], 'value' => $output));
+            }
+            if (!$_attr['nofilter']) {
+                // default modifier
+                if (!empty($compiler->smarty->default_modifiers)) {
+                    if (empty($compiler->default_modifier_list)) {
+                        $modifierlist = array();
+                        foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
+                            preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', $single_default_modifier, $mod_array);
+                            for ($i = 0, $count = count($mod_array[0]);$i < $count;$i++) {
+                                if ($mod_array[0][$i] != ':') {
+                                    $modifierlist[$key][] = $mod_array[0][$i];
+                                }
+                            }
+                        }
+                        $compiler->default_modifier_list  = $modifierlist;
+                    }
+                    $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $compiler->default_modifier_list, 'value' => $output));
+                }
+                // autoescape html
+                if ($compiler->template->smarty->escape_html) {
+                    $output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
+                }
+                // loop over registerd filters
+                if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) {
+                    foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key => $function) {
+                        if (!is_array($function)) {
+                            $output = "{$function}({$output},\$_smarty_tpl)";
+                        } else if (is_object($function[0])) {
+                            $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE][{$key}][0]->{$function[1]}({$output},\$_smarty_tpl)";
+                        } else {
+                            $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
+                        }
+                    }
+                }
+                // auto loaded filters
+                if (isset($compiler->smarty->autoload_filters[Smarty::FILTER_VARIABLE])) {
+                    foreach ((array)$compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) {
+                        $result = $this->compile_output_filter($compiler, $name, $output);
+                        if ($result !== false) {
+                            $output = $result;
+                        } else {
+                            // not found, throw exception
+                            throw new SmartyException("Unable to load filter '{$name}'");
+                        }
+                    }
+                }
+                if (isset($compiler->template->variable_filters)) {
+                    foreach ($compiler->template->variable_filters as $filter) {
+                        if (count($filter) == 1 && ($result = $this->compile_output_filter($compiler, $filter[0], $output)) !== false) {
+                            $output = $result;
+                        } else {
+                            $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => array($filter), 'value' => $output));
+                        }
+                    }
+                }
+            }
+
+            $compiler->has_output = true;
+            $output = "<?php echo {$output};?>";
+        }
+        return $output;
+    }
+
+    /**
+    * @param object $compiler compiler object
+    * @param string $name     name of variable filter
+    * @param type   $output   embedded output
+    * @return string
+    */
+    private function compile_output_filter($compiler, $name, $output)
+    {
+        $plugin_name = "smarty_variablefilter_{$name}";
+        $path = $compiler->smarty->loadPlugin($plugin_name, false);
+        if ($path) {
+            if ($compiler->template->caching) {
+                $compiler->template->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
+                $compiler->template->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
+            } else {
+                $compiler->template->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['file'] = $path;
+                $compiler->template->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name;
+            }
+        } else {
+            // not found
+            return false;
+        }
+        return "{$plugin_name}({$output},\$_smarty_tpl)";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php	(revision 25596)
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Block
+ *
+ * Compiles code for the execution of a registered block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of a block function
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @param string $tag       name of block function
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag)
+    {
+        if (!isset($tag[5]) || substr($tag,-5) != 'close') {
+            // opening tag of block plugin
+            // check and get attributes
+            $_attr = $this->getAttributes($compiler, $args);
+            if ($_attr['nocache']) {
+                $compiler->tag_nocache = true;
+            }
+               unset($_attr['nocache']);
+               if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
+                   $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
+               } else {
+                   $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
+               }
+            // convert attributes into parameter array string
+            $_paramsArray = array();
+            foreach ($_attr as $_key => $_value) {
+                if (is_int($_key)) {
+                    $_paramsArray[] = "$_key=>$_value";
+                } elseif ($compiler->template->caching && in_array($_key,$tag_info[2])) {
+                    $_value = str_replace("'","^#^",$_value);
+                    $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+                } else {
+                    $_paramsArray[] = "'$_key'=>$_value";
+                }
+            }
+            $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+            $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
+            // maybe nocache because of nocache variables or nocache plugin
+            $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
+            $function = $tag_info[0];
+            // compile code
+            if (!is_array($function)) {
+                $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+            } else if (is_object($function[0])) {
+                $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+            } else {
+                $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+            }
+        } else {
+            // must endblock be nocache?
+            if ($compiler->nocache) {
+                $compiler->tag_nocache = true;
+            }
+            $base_tag = substr($tag, 0, -5);
+            // closing tag of block plugin, restore nocache
+            list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
+            // This tag does create output
+            $compiler->has_output = true;
+               if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
+                   $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
+               } else {
+                   $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
+               }
+            // compile code
+            if (!isset($parameter['modifier_list'])) {
+                $mod_pre = $mod_post ='';
+            } else {
+                $mod_pre = ' ob_start(); ';
+                $mod_post = 'echo '.$compiler->compileTag('private_modifier',array(),array('modifierlist'=>$parameter['modifier_list'],'value'=>'ob_get_clean()')).';';
+            }
+            if (!is_array($function)) {
+                $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);".$mod_post." } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+            } else if (is_object($function[0])) {
+                $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post."} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+            } else {
+                $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post."} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+            }
+        }
+        return $output . "\n";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php	(revision 25596)
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Function
+ *
+ * Compiles code for the execution of a registered function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('_any');
+
+    /**
+     * Compiles code for the execution of a registered function
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @param string $tag       name of function
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter, $tag)
+    {
+        // This tag does create output
+        $compiler->has_output = true;
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache']) {
+            $compiler->tag_nocache = true;
+        }
+        unset($_attr['nocache']);
+               if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
+                   $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+               } else {
+                   $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+               }
+        // not cachable?
+        $compiler->tag_nocache =  $compiler->tag_nocache || !$tag_info[1];
+        // convert attributes into parameter array string
+        $_paramsArray = array();
+        foreach ($_attr as $_key => $_value) {
+            if (is_int($_key)) {
+                $_paramsArray[] = "$_key=>$_value";
+            } elseif ($compiler->template->caching && in_array($_key,$tag_info[2])) {
+                $_value = str_replace("'","^#^",$_value);
+                $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+            } else {
+                $_paramsArray[] = "'$_key'=>$_value";
+            }
+        }
+        $_params = 'array(' . implode(",", $_paramsArray) . ')';
+        $function = $tag_info[0];
+        // compile code
+        if (!is_array($function)) {
+            $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
+        } else if (is_object($function[0])) {
+            $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+        } else {
+            $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+        }
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php	(revision 25596)
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Special Smarty Variable
+ *
+ * Compiles the special $smarty variables
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile special Smarty Variable Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the speical $smarty variables
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        $_index = preg_split("/\]\[/",substr($parameter, 1, strlen($parameter)-2));
+        $compiled_ref = ' ';
+        $variable = trim($_index[0], "'");
+        switch ($variable) {
+            case 'foreach':
+                return "\$_smarty_tpl->getVariable('smarty')->value$parameter";
+            case 'section':
+                return "\$_smarty_tpl->getVariable('smarty')->value$parameter";
+            case 'capture':
+                return "Smarty::\$_smarty_vars$parameter";
+            case 'now':
+                return 'time()';
+            case 'cookies':
+                if (isset($compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_super_globals) {
+                    $compiler->trigger_template_error("(secure mode) super globals not permitted");
+                    break;
+                }
+                $compiled_ref = '$_COOKIE';
+                break;
+
+            case 'get':
+            case 'post':
+            case 'env':
+            case 'server':
+            case 'session':
+            case 'request':
+                if (isset($compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_super_globals) {
+                    $compiler->trigger_template_error("(secure mode) super globals not permitted");
+                    break;
+                }
+                $compiled_ref = '$_'.strtoupper($variable);
+                break;
+
+            case 'template':
+                return 'basename($_smarty_tpl->source->filepath)';
+
+            case 'template_object':
+                return '$_smarty_tpl';
+
+            case 'current_dir':
+                return 'dirname($_smarty_tpl->source->filepath)';
+
+            case 'version':
+                $_version = Smarty::SMARTY_VERSION;
+                return "'$_version'";
+
+            case 'const':
+                if (isset($compiler->smarty->security_policy) && !$compiler->smarty->security_policy->allow_constants) {
+                    $compiler->trigger_template_error("(secure mode) constants not permitted");
+                    break;
+                }
+                return "@constant({$_index[1]})";
+
+            case 'config':
+                if (isset($_index[2])) {
+                    return "(is_array(\$tmp = \$_smarty_tpl->getConfigVariable($_index[1])) ? \$tmp[$_index[2]] : null)";
+                } else {
+                    return "\$_smarty_tpl->getConfigVariable($_index[1])";
+                }
+            case 'ldelim':
+                $_ldelim = $compiler->smarty->left_delimiter;
+                return "'$_ldelim'";
+
+            case 'rdelim':
+                $_rdelim = $compiler->smarty->right_delimiter;
+                return "'$_rdelim'";
+
+            default:
+                $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is invalid');
+                break;
+        }
+        if (isset($_index[1])) {
+            array_shift($_index);
+            foreach ($_index as $_ind) {
+                $compiled_ref = $compiled_ref . "[$_ind]";
+            }
+        }
+        return $compiled_ref;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Rdelim
+ *
+ * Compiles the {rdelim} tag
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Rdelim Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {rdelim} tag
+     *
+     * This tag does output the right delimiter.
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        if ($_attr['nocache'] === true) {
+            $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+        }
+        // this tag does not return compiled code
+        $compiler->has_code = true;
+        return $compiler->smarty->right_delimiter;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_section.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_section.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_section.php	(revision 25596)
@@ -0,0 +1,203 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Section
+ *
+ * Compiles the {section} {sectionelse} {/section} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Section Class
+ * 
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
+
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $required_attributes = array('name', 'loop');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $shorttag_order = array('name', 'loop');
+    /**
+     * Attribute definition: Overwrites base class.
+     *
+     * @var array
+     * @see Smarty_Internal_CompileBase
+     */
+    public $optional_attributes = array('start', 'step', 'max', 'show');
+
+    /**
+     * Compiles code for the {section} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        $this->openTag($compiler, 'section', array('section', $compiler->nocache));
+        // maybe nocache because of nocache variables
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+
+        $output = "<?php ";
+
+        $section_name = $_attr['name'];
+
+        $output .= "if (isset(\$_smarty_tpl->tpl_vars['smarty']->value['section'][$section_name])) unset(\$_smarty_tpl->tpl_vars['smarty']->value['section'][$section_name]);\n";
+        $section_props = "\$_smarty_tpl->tpl_vars['smarty']->value['section'][$section_name]";
+
+        foreach ($_attr as $attr_name => $attr_value) {
+            switch ($attr_name) {
+                case 'loop':
+                    $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n";
+                    break;
+
+                case 'show':
+                    if (is_bool($attr_value))
+                        $show_attr_value = $attr_value ? 'true' : 'false';
+                    else
+                        $show_attr_value = "(bool)$attr_value";
+                    $output .= "{$section_props}['show'] = $show_attr_value;\n";
+                    break;
+
+                case 'name':
+                    $output .= "{$section_props}['$attr_name'] = $attr_value;\n";
+                    break;
+
+                case 'max':
+                case 'start':
+                    $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n";
+                    break;
+
+                case 'step':
+                    $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n";
+                    break;
+            }
+        }
+
+        if (!isset($_attr['show']))
+            $output .= "{$section_props}['show'] = true;\n";
+
+        if (!isset($_attr['loop']))
+            $output .= "{$section_props}['loop'] = 1;\n";
+
+        if (!isset($_attr['max']))
+            $output .= "{$section_props}['max'] = {$section_props}['loop'];\n";
+        else
+            $output .= "if ({$section_props}['max'] < 0)\n" . "    {$section_props}['max'] = {$section_props}['loop'];\n";
+
+        if (!isset($_attr['step']))
+            $output .= "{$section_props}['step'] = 1;\n";
+
+        if (!isset($_attr['start']))
+            $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n";
+        else {
+            $output .= "if ({$section_props}['start'] < 0)\n" . "    {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . "else\n" . "    {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n";
+        }
+
+        $output .= "if ({$section_props}['show']) {\n";
+        if (!isset($_attr['start']) && !isset($_attr['step']) && !isset($_attr['max'])) {
+            $output .= "    {$section_props}['total'] = {$section_props}['loop'];\n";
+        } else {
+            $output .= "    {$section_props}['total'] = min(ceil(({$section_props}['step'] > 0 ? {$section_props}['loop'] - {$section_props}['start'] : {$section_props}['start']+1)/abs({$section_props}['step'])), {$section_props}['max']);\n";
+        }
+        $output .= "    if ({$section_props}['total'] == 0)\n" . "        {$section_props}['show'] = false;\n" . "} else\n" . "    {$section_props}['total'] = 0;\n";
+
+        $output .= "if ({$section_props}['show']):\n";
+        $output .= "
+            for ({$section_props}['index'] = {$section_props}['start'], {$section_props}['iteration'] = 1;
+                 {$section_props}['iteration'] <= {$section_props}['total'];
+                 {$section_props}['index'] += {$section_props}['step'], {$section_props}['iteration']++):\n";
+        $output .= "{$section_props}['rownum'] = {$section_props}['iteration'];\n";
+        $output .= "{$section_props}['index_prev'] = {$section_props}['index'] - {$section_props}['step'];\n";
+        $output .= "{$section_props}['index_next'] = {$section_props}['index'] + {$section_props}['step'];\n";
+        $output .= "{$section_props}['first']      = ({$section_props}['iteration'] == 1);\n";
+        $output .= "{$section_props}['last']       = ({$section_props}['iteration'] == {$section_props}['total']);\n";
+
+        $output .= "?>";
+        return $output;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionelse Class
+ * 
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {sectionelse} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        list($openTag, $nocache) = $this->closeTag($compiler, array('section'));
+        $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache));
+
+        return "<?php endfor; else: ?>";
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionclose Class
+ * 
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/section} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+
+        list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('section', 'sectionelse'));
+
+        if ($openTag == 'sectionelse') {
+            return "<?php endif; ?>";
+        } else {
+            return "<?php endfor; endif; ?>";
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php	(revision 25596)
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile Setfilter
+ *
+ * Compiles code for setfilter tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Setfilter Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for setfilter tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        $compiler->variable_filter_stack[] = $compiler->template->variable_filters;
+        $compiler->template->variable_filters = $parameter['modifier_list'];
+        // this tag does not return compiled code
+        $compiler->has_code = false;
+        return true;
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Setfilterclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/setfilter} tag
+     *
+     * This tag does not generate compiled output. It resets variable filter.
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        $_attr = $this->getAttributes($compiler, $args);
+        // reset variable filter to previous state
+        if (count($compiler->variable_filter_stack)) {
+            $compiler->template->variable_filters = array_pop($compiler->variable_filter_stack);
+        } else {
+            $compiler->template->variable_filters = array();
+        }
+        // this tag does not return compiled code
+        $compiler->has_code = false;
+        return true;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_while.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_while.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compile_while.php	(revision 25596)
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty Internal Plugin Compile While
+ *
+ * Compiles the {while} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile While Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {while} tag
+     *
+     * @param array  $args      array with attributes from parser
+     * @param object $compiler  compiler object
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compile($args, $compiler, $parameter)
+    {
+        // check and get attributes
+        $_attr = $this->getAttributes($compiler, $args);
+        $this->openTag($compiler, 'while', $compiler->nocache);
+
+        if (!array_key_exists("if condition",$parameter)) {
+            $compiler->trigger_template_error("missing while condition", $compiler->lex->taglineno);
+        }
+
+        // maybe nocache because of nocache variables
+        $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+        if (is_array($parameter['if condition'])) {
+            if ($compiler->nocache) {
+                $_nocache = ',true';
+                // create nocache var to make it know for further compiling
+                if (is_array($parameter['if condition']['var'])) {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var']['var'], "'")] = new Smarty_variable(null, true);
+                } else {
+                    $compiler->template->tpl_vars[trim($parameter['if condition']['var'], "'")] = new Smarty_variable(null, true);
+                }
+            } else {
+                $_nocache = '';
+            }
+            if (is_array($parameter['if condition']['var'])) {
+                $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+                $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+            } else {
+                $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+                $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+            }
+            return $_output;
+        } else {
+            return "<?php while ({$parameter['if condition']}){?>";
+        }
+    }
+
+}
+
+/**
+ * Smarty Internal Plugin Compile Whileclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase {
+
+    /**
+     * Compiles code for the {/while} tag
+     *
+     * @param array  $args     array with attributes from parser
+     * @param object $compiler compiler object
+     * @return string compiled code
+     */
+    public function compile($args, $compiler)
+    {
+        // must endblock be nocache?
+        if ($compiler->nocache) {
+            $compiler->tag_nocache = true;
+        }
+        $compiler->nocache = $this->closeTag($compiler, array('while'));
+        return "<?php }?>";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compilebase.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compilebase.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_compilebase.php	(revision 25596)
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Smarty Internal Plugin CompileBase
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * This class does extend all internal compile plugins
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+abstract class Smarty_Internal_CompileBase {
+
+    /**
+     * Array of names of required attribute required by tag
+     *
+     * @var array
+     */
+    public $required_attributes = array();
+    /**
+     * Array of names of optional attribute required by tag
+     * use array('_any') if there is no restriction of attributes names
+     *
+     * @var array
+     */
+    public $optional_attributes = array();
+    /**
+     * Shorttag attribute order defined by its names
+     *
+     * @var array
+     */
+    public $shorttag_order = array();
+    /**
+     * Array of names of valid option flags
+     *
+     * @var array
+     */
+    public $option_flags = array('nocache');
+
+    /**
+     * This function checks if the attributes passed are valid
+     *
+     * The attributes passed for the tag to compile are checked against the list of required and
+     * optional attributes. Required attributes must be present. Optional attributes are check against
+     * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
+     * as valid
+     *
+     * @param object $compiler   compiler object
+     * @param array  $attributes attributes applied to the tag
+     * @return array of mapped attributes for further processing
+     */
+    public function getAttributes($compiler, $attributes)
+    {
+        $_indexed_attr = array();
+        // loop over attributes
+        foreach ($attributes as $key => $mixed) {
+            // shorthand ?
+            if (!is_array($mixed)) {
+                // option flag ?
+                if (in_array(trim($mixed, '\'"'), $this->option_flags)) {
+                    $_indexed_attr[trim($mixed, '\'"')] = true;
+                    // shorthand attribute ?
+                } else if (isset($this->shorttag_order[$key])) {
+                    $_indexed_attr[$this->shorttag_order[$key]] = $mixed;
+                } else {
+                    // too many shorthands
+                    $compiler->trigger_template_error('too many shorthand attributes', $compiler->lex->taglineno);
+                }
+                // named attribute
+            } else {
+                $kv = each($mixed);
+                // option flag?
+                if (in_array($kv['key'], $this->option_flags)) {
+                    if (is_bool($kv['value'])) {
+                        $_indexed_attr[$kv['key']] = $kv['value'];
+                    } else if (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
+                        if (trim($kv['value']) == 'true') {
+                            $_indexed_attr[$kv['key']] = true;
+                        } else {
+                            $_indexed_attr[$kv['key']] = false;
+                        }
+                    } else if (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
+                        if ($kv['value'] == 1) {
+                            $_indexed_attr[$kv['key']] = true;
+                        } else {
+                            $_indexed_attr[$kv['key']] = false;
+                        }
+                    } else {
+                        $compiler->trigger_template_error("illegal value of option flag \"{$kv['key']}\"", $compiler->lex->taglineno);
+                    }
+                    // must be named attribute
+                } else {
+                    reset($mixed);
+                    $_indexed_attr[key($mixed)] = $mixed[key($mixed)];
+                }
+            }
+        }
+        // check if all required attributes present
+        foreach ($this->required_attributes as $attr) {
+            if (!array_key_exists($attr, $_indexed_attr)) {
+                $compiler->trigger_template_error("missing \"" . $attr . "\" attribute", $compiler->lex->taglineno);
+            }
+        }
+        // check for unallowed attributes
+        if ($this->optional_attributes != array('_any')) {
+            $tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
+            foreach ($_indexed_attr as $key => $dummy) {
+                if (!in_array($key, $tmp_array) && $key !== 0) {
+                    $compiler->trigger_template_error("unexpected \"" . $key . "\" attribute", $compiler->lex->taglineno);
+                }
+            }
+        }
+        // default 'false' for all option flags not set
+        foreach ($this->option_flags as $flag) {
+            if (!isset($_indexed_attr[$flag])) {
+                $_indexed_attr[$flag] = false;
+            }
+        }
+
+        return $_indexed_attr;
+    }
+
+    /**
+     * Push opening tag name on stack
+     *
+     * Optionally additional data can be saved on stack
+     *
+     * @param object    $compiler   compiler object
+     * @param string    $openTag    the opening tag's name
+     * @param mixed     $data       optional data saved
+     */
+    public function openTag($compiler, $openTag, $data = null)
+    {
+        array_push($compiler->_tag_stack, array($openTag, $data));
+    }
+
+    /**
+     * Pop closing tag
+     *
+     * Raise an error if this stack-top doesn't match with expected opening tags
+     *
+     * @param object       $compiler    compiler object
+     * @param array|string $expectedTag the expected opening tag names
+     * @return mixed any type the opening tag's name or saved data
+     */
+    public function closeTag($compiler, $expectedTag)
+    {
+        if (count($compiler->_tag_stack) > 0) {
+            // get stacked info
+            list($_openTag, $_data) = array_pop($compiler->_tag_stack);
+            // open tag must match with the expected ones
+            if (in_array($_openTag, (array) $expectedTag)) {
+                if (is_null($_data)) {
+                    // return opening tag
+                    return $_openTag;
+                } else {
+                    // return restored data
+                    return $_data;
+                }
+            }
+            // wrong nesting of tags
+            $compiler->trigger_template_error("unclosed {" . $_openTag . "} tag");
+            return;
+        }
+        // wrong nesting of tags
+        $compiler->trigger_template_error("unexpected closing tag", $compiler->lex->taglineno);
+        return;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config.php	(revision 25596)
@@ -0,0 +1,302 @@
+<?php
+/**
+ * Smarty Internal Plugin Config
+ *
+ * @package Smarty
+ * @subpackage Config
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Config
+ *
+ * Main class for config variables
+ *
+ * @package Smarty
+ * @subpackage Config
+ *
+ * @property Smarty_Config_Source   $source
+ * @property Smarty_Config_Compiled $compiled
+ * @ignore
+ */
+class Smarty_Internal_Config {
+
+    /**
+     * Samrty instance
+     *
+     * @var Smarty object
+     */
+    public $smarty = null;
+    /**
+     * Object of config var storage
+     *
+     * @var object
+     */
+    public $data = null;
+    /**
+     * Config resource
+     * @var string
+     */
+    public $config_resource = null;
+    /**
+     * Compiled config file
+     *
+     * @var string
+     */
+    public $compiled_config = null;
+    /**
+     * filepath of compiled config file
+     *
+     * @var string
+     */
+    public $compiled_filepath = null;
+    /**
+     * Filemtime of compiled config Filemtime
+     *
+     * @var int
+     */
+    public $compiled_timestamp = null;
+    /**
+     * flag if compiled config file is invalid and must be (re)compiled
+     * @var bool
+     */
+    public $mustCompile = null;
+    /**
+     * Config file compiler object
+     *
+     * @var Smarty_Internal_Config_File_Compiler object
+     */
+    public $compiler_object = null;
+
+    /**
+     * Constructor of config file object
+     *
+     * @param string $config_resource config file resource name
+     * @param Smarty $smarty Smarty instance
+     * @param object $data object for config vars storage
+     */
+    public function __construct($config_resource, $smarty, $data = null)
+    {
+        $this->data = $data;
+        $this->smarty = $smarty;
+        $this->config_resource = $config_resource;
+    }
+
+    /**
+     * Returns the compiled  filepath
+     *
+     * @return string the compiled filepath
+     */
+    public function getCompiledFilepath()
+    {
+        return $this->compiled_filepath === null ?
+                ($this->compiled_filepath = $this->buildCompiledFilepath()) :
+                $this->compiled_filepath;
+    }
+
+    /**
+     * Get file path.
+     *
+     * @return string
+     */
+    public function buildCompiledFilepath()
+    {
+        $_compile_id = isset($this->smarty->compile_id) ? preg_replace('![^\w\|]+!', '_', $this->smarty->compile_id) : null;
+        $_flag = (int) $this->smarty->config_read_hidden + (int) $this->smarty->config_booleanize * 2
+                + (int) $this->smarty->config_overwrite * 4;
+        $_filepath = sha1($this->source->name . $_flag);
+        // if use_sub_dirs, break file into directories
+        if ($this->smarty->use_sub_dirs) {
+            $_filepath = substr($_filepath, 0, 2) . DS
+                    . substr($_filepath, 2, 2) . DS
+                    . substr($_filepath, 4, 2) . DS
+                    . $_filepath;
+        }
+        $_compile_dir_sep = $this->smarty->use_sub_dirs ? DS : '^';
+        if (isset($_compile_id)) {
+            $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
+        }
+        $_compile_dir = $this->smarty->getCompileDir();
+        return $_compile_dir . $_filepath . '.' . basename($this->source->name) . '.config' . '.php';
+    }
+
+    /**
+     * Returns the timpestamp of the compiled file
+     *
+     * @return integer the file timestamp
+     */
+    public function getCompiledTimestamp()
+    {
+        return $this->compiled_timestamp === null
+            ? ($this->compiled_timestamp = (file_exists($this->getCompiledFilepath())) ? filemtime($this->getCompiledFilepath()) : false)
+            : $this->compiled_timestamp;
+    }
+
+    /**
+     * Returns if the current config file must be compiled
+     *
+     * It does compare the timestamps of config source and the compiled config and checks the force compile configuration
+     *
+     * @return boolean true if the file must be compiled
+     */
+    public function mustCompile()
+    {
+        return $this->mustCompile === null ?
+            $this->mustCompile = ($this->smarty->force_compile || $this->getCompiledTimestamp () === false || $this->smarty->compile_check && $this->getCompiledTimestamp () < $this->source->timestamp):
+            $this->mustCompile;
+    }
+
+    /**
+     * Returns the compiled config file
+     *
+     * It checks if the config file must be compiled or just read the compiled version
+     *
+     * @return string the compiled config file
+     */
+    public function getCompiledConfig()
+    {
+        if ($this->compiled_config === null) {
+            // see if template needs compiling.
+            if ($this->mustCompile()) {
+                $this->compileConfigSource();
+            } else {
+                $this->compiled_config = file_get_contents($this->getCompiledFilepath());
+            }
+        }
+        return $this->compiled_config;
+    }
+
+    /**
+     * Compiles the config files
+     *
+     * @throws Exception
+     */
+    public function compileConfigSource()
+    {
+        // compile template
+        if (!is_object($this->compiler_object)) {
+            // load compiler
+            $this->compiler_object = new Smarty_Internal_Config_File_Compiler($this->smarty);
+        }
+        // compile locking
+        if ($this->smarty->compile_locking) {
+            if ($saved_timestamp = $this->getCompiledTimestamp()) {
+                touch($this->getCompiledFilepath());
+            }
+        }
+        // call compiler
+        try {
+            $this->compiler_object->compileSource($this);
+        } catch (Exception $e) {
+            // restore old timestamp in case of error
+            if ($this->smarty->compile_locking && $saved_timestamp) {
+                touch($this->getCompiledFilepath(), $saved_timestamp);
+            }
+            throw $e;
+        }
+        // compiling succeded
+        // write compiled template
+        Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->getCompiledConfig(), $this->smarty);
+    }
+
+    /**
+     * load config variables
+     *
+     * @param mixed $sections array of section names, single section or null
+     * @param object $scope global,parent or local
+     */
+    public function loadConfigVars($sections = null, $scope = 'local')
+    {
+        if ($this->data instanceof Smarty_Internal_Template) {
+            $this->data->properties['file_dependency'][sha1($this->source->filepath)] = array($this->source->filepath, $this->source->timestamp, 'file');
+        }
+        if ($this->mustCompile()) {
+            $this->compileConfigSource();
+        }
+        // pointer to scope
+        if ($scope == 'local') {
+            $scope_ptr = $this->data;
+        } elseif ($scope == 'parent') {
+            if (isset($this->data->parent)) {
+                $scope_ptr = $this->data->parent;
+            } else {
+                $scope_ptr = $this->data;
+            }
+        } elseif ($scope == 'root' || $scope == 'global') {
+            $scope_ptr = $this->data;
+            while (isset($scope_ptr->parent)) {
+                $scope_ptr = $scope_ptr->parent;
+            }
+        }
+        $_config_vars = array();
+        include($this->getCompiledFilepath());
+        // copy global config vars
+        foreach ($_config_vars['vars'] as $variable => $value) {
+            if ($this->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
+                $scope_ptr->config_vars[$variable] = $value;
+            } else {
+                $scope_ptr->config_vars[$variable] = array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
+            }
+        }
+        // scan sections
+        if (!empty($sections)) {
+            foreach ((array) $sections as $this_section) {
+                if (isset($_config_vars['sections'][$this_section])) {
+                    foreach ($_config_vars['sections'][$this_section]['vars'] as $variable => $value) {
+                        if ($this->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
+                            $scope_ptr->config_vars[$variable] = $value;
+                        } else {
+                            $scope_ptr->config_vars[$variable] = array_merge((array) $scope_ptr->config_vars[$variable], (array) $value);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * set Smarty property in template context
+     *
+     * @param string $property_name property name
+     * @param mixed  $value         value
+     * @throws SmartyException if $property_name is not valid
+     */
+    public function __set($property_name, $value)
+    {
+        switch ($property_name) {
+            case 'source':
+            case 'compiled':
+                $this->$property_name = $value;
+                return;
+        }
+
+        throw new SmartyException("invalid config property '$property_name'.");
+    }
+
+    /**
+     * get Smarty property in template context
+     *
+     * @param string $property_name property name
+     * @throws SmartyException if $property_name is not valid
+     */
+    public function __get($property_name)
+    {
+        switch ($property_name) {
+            case 'source':
+                if (empty($this->config_resource)) {
+                    throw new SmartyException("Unable to parse resource name \"{$this->config_resource}\"");
+                }
+                $this->source = Smarty_Resource::config($this);
+                return $this->source;
+
+            case 'compiled':
+                $this->compiled = $this->source->getCompiled($this);
+                return $this->compiled;
+        }
+
+        throw new SmartyException("config attribute '$property_name' does not exist.");
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php	(revision 25596)
@@ -0,0 +1,144 @@
+<?php
+/**
+ * Smarty Internal Plugin Config File Compiler
+ *
+ * This is the config file compiler class. It calls the lexer and parser to
+ * perform the compiling.
+ *
+ * @package Smarty
+ * @subpackage Config
+ * @author Uwe Tews
+ */
+
+/**
+ * Main config file compiler class
+ *
+ * @package Smarty
+ * @subpackage Config
+ */
+class Smarty_Internal_Config_File_Compiler {
+
+    /**
+     * Lexer object
+     *
+     * @var object
+     */
+    public $lex;
+
+    /**
+     * Parser object
+     *
+     * @var object
+     */
+    public $parser;
+
+    /**
+     * Smarty object
+     *
+     * @var Smarty object
+     */
+    public $smarty;
+
+    /**
+     * Smarty object
+     *
+     * @var Smarty_Internal_Config object
+     */
+    public $config;
+
+    /**
+     * Compiled config data sections and variables
+     *
+     * @var array
+     */
+    public $config_data = array();
+
+    /**
+     * Initialize compiler
+     *
+     * @param Smarty $smarty base instance
+     */
+    public function __construct($smarty)
+    {
+        $this->smarty = $smarty;
+        $this->config_data['sections'] = array();
+        $this->config_data['vars'] = array();
+    }
+
+    /**
+     * Method to compile a Smarty template.
+     *
+     * @param  Smarty_Internal_Config $config config object
+     * @return bool true if compiling succeeded, false if it failed
+     */
+    public function compileSource(Smarty_Internal_Config $config)
+    {
+        /* here is where the compiling takes place. Smarty
+          tags in the templates are replaces with PHP code,
+          then written to compiled files. */
+        $this->config = $config;
+        // get config file source
+        $_content = $config->source->content . "\n";
+        // on empty template just return
+        if ($_content == '') {
+            return true;
+        }
+        // init the lexer/parser to compile the config file
+        $lex = new Smarty_Internal_Configfilelexer($_content, $this->smarty);
+        $parser = new Smarty_Internal_Configfileparser($lex, $this);
+        if ($this->smarty->_parserdebug) $parser->PrintTrace();
+        // get tokens from lexer and parse them
+        while ($lex->yylex()) {
+            if ($this->smarty->_parserdebug) echo "<br>Parsing  {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
+            $parser->doParse($lex->token, $lex->value);
+        }
+        // finish parsing process
+        $parser->doParse(0, 0);
+        $config->compiled_config = '<?php $_config_vars = ' . var_export($this->config_data, true) . '; ?>';
+    }
+
+    /**
+     * display compiler error messages without dying
+     *
+     * If parameter $args is empty it is a parser detected syntax error.
+     * In this case the parser is called to obtain information about exspected tokens.
+     *
+     * If parameter $args contains a string this is used as error message
+     *
+     * @param string $args individual error message or null
+     */
+    public function trigger_config_file_error($args = null)
+    {
+        $this->lex = Smarty_Internal_Configfilelexer::instance();
+        $this->parser = Smarty_Internal_Configfileparser::instance();
+        // get template source line which has error
+        $line = $this->lex->line;
+        if (isset($args)) {
+            // $line--;
+        }
+        $match = preg_split("/\n/", $this->lex->data);
+        $error_text = "Syntax error in config file '{$this->config->source->filepath}' on line {$line} '{$match[$line-1]}' ";
+        if (isset($args)) {
+            // individual error message
+            $error_text .= $args;
+        } else {
+            // exspected token from parser
+            foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+                $exp_token = $this->parser->yyTokenName[$token];
+                if (isset($this->lex->smarty_token_names[$exp_token])) {
+                    // token type from lexer
+                    $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
+                } else {
+                    // otherwise internal token name
+                    $expect[] = $this->parser->yyTokenName[$token];
+                }
+            }
+            // output parser error message
+            $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
+        }
+        throw new SmartyCompilerException($error_text);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfilelexer.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfilelexer.php	(revision 25596)
@@ -0,0 +1,622 @@
+<?php
+/**
+* Smarty Internal Plugin Configfilelexer
+*
+* This is the lexer to break the config file source into tokens
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Configfilelexer
+*/
+class Smarty_Internal_Configfilelexer
+{
+
+    public $data;
+    public $counter;
+    public $token;
+    public $value;
+    public $node;
+    public $line;
+    private $state = 1;
+    public $smarty_token_names = array (		// Text for parser error messages
+   				);
+
+
+    function __construct($data, $smarty)
+    {
+        // set instance object
+        self::instance($this);
+        $this->data = $data . "\n"; //now all lines are \n-terminated
+        $this->counter = 0;
+        $this->line = 1;
+        $this->smarty = $smarty;
+        $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+    }
+    public static function &instance($new_instance = null)
+    {
+        static $instance = null;
+        if (isset($new_instance) && is_object($new_instance))
+            $instance = $new_instance;
+        return $instance;
+    }
+
+
+
+    private $_yy_state = 1;
+    private $_yy_stack = array();
+
+    function yylex()
+    {
+        return $this->{'yylex' . $this->_yy_state}();
+    }
+
+    function yypushstate($state)
+    {
+        array_push($this->_yy_stack, $this->_yy_state);
+        $this->_yy_state = $state;
+    }
+
+    function yypopstate()
+    {
+        $this->_yy_state = array_pop($this->_yy_stack);
+    }
+
+    function yybegin($state)
+    {
+        $this->_yy_state = $state;
+    }
+
+
+
+
+    function yylex1()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 0,
+              4 => 0,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+              8 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state START');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r1_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const START = 1;
+    function yy_r1_1($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+    $this->yypushstate(self::COMMENT);
+    }
+    function yy_r1_2($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+    $this->yypushstate(self::SECTION);
+    }
+    function yy_r1_3($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+    }
+    function yy_r1_4($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+    $this->yypushstate(self::VALUE);
+    }
+    function yy_r1_5($yy_subpatterns)
+    {
+
+    return false;
+    }
+    function yy_r1_6($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+    }
+    function yy_r1_7($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+    }
+    function yy_r1_8($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+    }
+
+
+
+    function yylex2()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 0,
+              4 => 0,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+              8 => 0,
+              9 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state VALUE');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r2_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const VALUE = 2;
+    function yy_r2_1($yy_subpatterns)
+    {
+
+    return false;
+    }
+    function yy_r2_2($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+    $this->yypopstate();
+    }
+    function yy_r2_3($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+    $this->yypopstate();
+    }
+    function yy_r2_4($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
+    $this->yypushstate(self::TRIPPLE);
+    }
+    function yy_r2_5($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+    $this->yypopstate();
+    }
+    function yy_r2_6($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+    $this->yypopstate();
+    }
+    function yy_r2_7($yy_subpatterns)
+    {
+
+    if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) {
+        $this->yypopstate();
+        $this->yypushstate(self::NAKED_STRING_VALUE);
+        return true; //reprocess in new state
+    } else {
+        $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+        $this->yypopstate();
+    }
+    }
+    function yy_r2_8($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+    $this->yypopstate();
+    }
+    function yy_r2_9($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+    $this->value = "";
+    $this->yypopstate();
+    }
+
+
+
+    function yylex3()
+    {
+        $tokenMap = array (
+              1 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G([^\n]+?(?=[ \t\r]*\n))/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state NAKED_STRING_VALUE');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const NAKED_STRING_VALUE = 3;
+    function yy_r3_1($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+    $this->yypopstate();
+    }
+
+
+
+    function yylex4()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state COMMENT');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const COMMENT = 4;
+    function yy_r4_1($yy_subpatterns)
+    {
+
+    return false;
+    }
+    function yy_r4_2($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+    }
+    function yy_r4_3($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+    $this->yypopstate();
+    }
+
+
+
+    function yylex5()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state SECTION');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r5_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const SECTION = 5;
+    function yy_r5_1($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+    }
+    function yy_r5_2($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
+    $this->yypopstate();
+    }
+
+
+    function yylex6()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state TRIPPLE');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r6_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const TRIPPLE = 6;
+    function yy_r6_1($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
+    $this->yypopstate();
+    $this->yypushstate(self::START);
+    }
+    function yy_r6_2($yy_subpatterns)
+    {
+
+  if ($this->mbstring_overload) {
+    $to = mb_strlen($this->data,'latin1');
+  } else {
+    $to = strlen($this->data);
+  }
+  preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+  if (isset($match[0][1])) {
+    $to = $match[0][1];
+  } else {
+    $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+  }
+  if ($this->mbstring_overload) {
+    $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
+  } else {
+    $this->value = substr($this->data,$this->counter,$to-$this->counter);
+  }
+  $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
+    }
+
+
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfileparser.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfileparser.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_configfileparser.php	(revision 25596)
@@ -0,0 +1,921 @@
+<?php
+/**
+* Smarty Internal Plugin Configfileparser
+*
+* This is the config file parser.
+* It is generated from the internal.configfileparser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+class TPC_yyToken implements ArrayAccess
+{
+    public $string = '';
+    public $metadata = array();
+
+    function __construct($s, $m = array())
+    {
+        if ($s instanceof TPC_yyToken) {
+            $this->string = $s->string;
+            $this->metadata = $s->metadata;
+        } else {
+            $this->string = (string) $s;
+            if ($m instanceof TPC_yyToken) {
+                $this->metadata = $m->metadata;
+            } elseif (is_array($m)) {
+                $this->metadata = $m;
+            }
+        }
+    }
+
+    function __toString()
+    {
+        return $this->_string;
+    }
+
+    function offsetExists($offset)
+    {
+        return isset($this->metadata[$offset]);
+    }
+
+    function offsetGet($offset)
+    {
+        return $this->metadata[$offset];
+    }
+
+    function offsetSet($offset, $value)
+    {
+        if ($offset === null) {
+            if (isset($value[0])) {
+                $x = ($value instanceof TPC_yyToken) ?
+                    $value->metadata : $value;
+                $this->metadata = array_merge($this->metadata, $x);
+                return;
+            }
+            $offset = count($this->metadata);
+        }
+        if ($value === null) {
+            return;
+        }
+        if ($value instanceof TPC_yyToken) {
+            if ($value->metadata) {
+                $this->metadata[$offset] = $value->metadata;
+            }
+        } elseif ($value) {
+            $this->metadata[$offset] = $value;
+        }
+    }
+
+    function offsetUnset($offset)
+    {
+        unset($this->metadata[$offset]);
+    }
+}
+
+class TPC_yyStackEntry
+{
+    public $stateno;       /* The state-number */
+    public $major;         /* The major token value.  This is the code
+                     ** number for the token at this stack level */
+    public $minor; /* The user-supplied minor token value.  This
+                     ** is the value of the token  */
+};
+
+
+#line 12 "smarty_internal_configfileparser.y"
+class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser.php"
+{
+#line 14 "smarty_internal_configfileparser.y"
+
+    // states whether the parse was successful or not
+    public $successful = true;
+    public $retvalue = 0;
+    private $lex;
+    private $internalError = false;
+
+    function __construct($lex, $compiler) {
+        // set instance object
+        self::instance($this);
+        $this->lex = $lex;
+        $this->smarty = $compiler->smarty;
+        $this->compiler = $compiler;
+    }
+    public static function &instance($new_instance = null)
+    {
+        static $instance = null;
+        if (isset($new_instance) && is_object($new_instance))
+            $instance = $new_instance;
+        return $instance;
+    }
+
+    private function parse_bool($str) {
+        if (in_array(strtolower($str) ,array('on','yes','true'))) {
+            $res = true;
+        } else {
+            $res = false;
+        }
+        return $res;
+    }
+
+    private static $escapes_single = Array('\\' => '\\',
+                                          '\'' => '\'');
+    private static function parse_single_quoted_string($qstr) {
+        $escaped_string = substr($qstr, 1, strlen($qstr)-2); //remove outer quotes
+
+        $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+        $str = "";
+        foreach ($ss as $s) {
+            if (strlen($s) === 2 && $s[0] === '\\') {
+                if (isset(self::$escapes_single[$s[1]])) {
+                    $s = self::$escapes_single[$s[1]];
+                }
+             }
+
+             $str .= $s;
+        }
+
+        return $str;
+    }
+
+    private static function parse_double_quoted_string($qstr) {
+        $inner_str = substr($qstr, 1, strlen($qstr)-2);
+        return stripcslashes($inner_str);
+    }
+
+    private static function parse_tripple_double_quoted_string($qstr) {
+        return stripcslashes($qstr);
+    }
+
+    private function set_var(Array $var, Array &$target_array) {
+        $key = $var["key"];
+        $value = $var["value"];
+
+        if ($this->smarty->config_overwrite || !isset($target_array['vars'][$key])) {
+            $target_array['vars'][$key] = $value;
+        } else {
+            settype($target_array['vars'][$key], 'array');
+            $target_array['vars'][$key][] = $value;
+        }
+    }
+
+    private function add_global_vars(Array $vars) {
+        if (!isset($this->compiler->config_data['vars'])) {
+      $this->compiler->config_data['vars'] = Array();
+        }
+        foreach ($vars as $var) {
+            $this->set_var($var, $this->compiler->config_data);
+        }
+    }
+
+    private function add_section_vars($section_name, Array $vars) {
+        if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+            $this->compiler->config_data['sections'][$section_name]['vars'] = Array();
+        }
+        foreach ($vars as $var) {
+            $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+        }
+    }
+#line 173 "smarty_internal_configfileparser.php"
+
+    const TPC_OPENB                          =  1;
+    const TPC_SECTION                        =  2;
+    const TPC_CLOSEB                         =  3;
+    const TPC_DOT                            =  4;
+    const TPC_ID                             =  5;
+    const TPC_EQUAL                          =  6;
+    const TPC_FLOAT                          =  7;
+    const TPC_INT                            =  8;
+    const TPC_BOOL                           =  9;
+    const TPC_SINGLE_QUOTED_STRING           = 10;
+    const TPC_DOUBLE_QUOTED_STRING           = 11;
+    const TPC_TRIPPLE_QUOTES                 = 12;
+    const TPC_TRIPPLE_TEXT                   = 13;
+    const TPC_TRIPPLE_QUOTES_END             = 14;
+    const TPC_NAKED_STRING                   = 15;
+    const TPC_OTHER                          = 16;
+    const TPC_NEWLINE                        = 17;
+    const TPC_COMMENTSTART                   = 18;
+    const YY_NO_ACTION = 60;
+    const YY_ACCEPT_ACTION = 59;
+    const YY_ERROR_ACTION = 58;
+
+    const YY_SZ_ACTTAB = 38;
+static public $yy_action = array(
+ /*     0 */    29,   30,   34,   33,   24,   13,   19,   25,   35,   21,
+ /*    10 */    59,    8,    3,    1,   20,   12,   14,   31,   20,   12,
+ /*    20 */    15,   17,   23,   18,   27,   26,    4,    5,    6,   32,
+ /*    30 */     2,   11,   28,   22,   16,    9,    7,   10,
+    );
+    static public $yy_lookahead = array(
+ /*     0 */     7,    8,    9,   10,   11,   12,    5,   27,   15,   16,
+ /*    10 */    20,   21,   23,   23,   17,   18,   13,   14,   17,   18,
+ /*    20 */    15,    2,   17,    4,   25,   26,    6,    3,    3,   14,
+ /*    30 */    23,    1,   24,   17,    2,   25,   22,   25,
+);
+    const YY_SHIFT_USE_DFLT = -8;
+    const YY_SHIFT_MAX = 19;
+    static public $yy_shift_ofst = array(
+ /*     0 */    -8,    1,    1,    1,   -7,   -3,   -3,   30,   -8,   -8,
+ /*    10 */    -8,   19,    5,    3,   15,   16,   24,   25,   32,   20,
+);
+    const YY_REDUCE_USE_DFLT = -21;
+    const YY_REDUCE_MAX = 10;
+    static public $yy_reduce_ofst = array(
+ /*     0 */   -10,   -1,   -1,   -1,  -20,   10,   12,    8,   14,    7,
+ /*    10 */   -11,
+);
+    static public $yyExpectedTokens = array(
+        /* 0 */ array(),
+        /* 1 */ array(5, 17, 18, ),
+        /* 2 */ array(5, 17, 18, ),
+        /* 3 */ array(5, 17, 18, ),
+        /* 4 */ array(7, 8, 9, 10, 11, 12, 15, 16, ),
+        /* 5 */ array(17, 18, ),
+        /* 6 */ array(17, 18, ),
+        /* 7 */ array(1, ),
+        /* 8 */ array(),
+        /* 9 */ array(),
+        /* 10 */ array(),
+        /* 11 */ array(2, 4, ),
+        /* 12 */ array(15, 17, ),
+        /* 13 */ array(13, 14, ),
+        /* 14 */ array(14, ),
+        /* 15 */ array(17, ),
+        /* 16 */ array(3, ),
+        /* 17 */ array(3, ),
+        /* 18 */ array(2, ),
+        /* 19 */ array(6, ),
+        /* 20 */ array(),
+        /* 21 */ array(),
+        /* 22 */ array(),
+        /* 23 */ array(),
+        /* 24 */ array(),
+        /* 25 */ array(),
+        /* 26 */ array(),
+        /* 27 */ array(),
+        /* 28 */ array(),
+        /* 29 */ array(),
+        /* 30 */ array(),
+        /* 31 */ array(),
+        /* 32 */ array(),
+        /* 33 */ array(),
+        /* 34 */ array(),
+        /* 35 */ array(),
+);
+    static public $yy_default = array(
+ /*     0 */    44,   37,   41,   40,   58,   58,   58,   36,   39,   44,
+ /*    10 */    44,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+ /*    20 */    55,   54,   57,   56,   50,   45,   43,   42,   38,   46,
+ /*    30 */    47,   52,   51,   49,   48,   53,
+);
+    const YYNOCODE = 29;
+    const YYSTACKDEPTH = 100;
+    const YYNSTATE = 36;
+    const YYNRULE = 22;
+    const YYERRORSYMBOL = 19;
+    const YYERRSYMDT = 'yy0';
+    const YYFALLBACK = 0;
+    static public $yyFallback = array(
+    );
+    static function Trace($TraceFILE, $zTracePrompt)
+    {
+        if (!$TraceFILE) {
+            $zTracePrompt = 0;
+        } elseif (!$zTracePrompt) {
+            $TraceFILE = 0;
+        }
+        self::$yyTraceFILE = $TraceFILE;
+        self::$yyTracePrompt = $zTracePrompt;
+    }
+
+    static function PrintTrace()
+    {
+        self::$yyTraceFILE = fopen('php://output', 'w');
+        self::$yyTracePrompt = '<br>';
+    }
+
+    static public $yyTraceFILE;
+    static public $yyTracePrompt;
+    public $yyidx;                    /* Index of top element in stack */
+    public $yyerrcnt;                 /* Shifts left before out of the error */
+    public $yystack = array();  /* The parser's stack */
+
+    public $yyTokenName = array(
+  '$',             'OPENB',         'SECTION',       'CLOSEB',
+  'DOT',           'ID',            'EQUAL',         'FLOAT',
+  'INT',           'BOOL',          'SINGLE_QUOTED_STRING',  'DOUBLE_QUOTED_STRING',
+  'TRIPPLE_QUOTES',  'TRIPPLE_TEXT',  'TRIPPLE_QUOTES_END',  'NAKED_STRING',
+  'OTHER',         'NEWLINE',       'COMMENTSTART',  'error',
+  'start',         'global_vars',   'sections',      'var_list',
+  'section',       'newline',       'var',           'value',
+    );
+
+    static public $yyRuleName = array(
+ /*   0 */ "start ::= global_vars sections",
+ /*   1 */ "global_vars ::= var_list",
+ /*   2 */ "sections ::= sections section",
+ /*   3 */ "sections ::=",
+ /*   4 */ "section ::= OPENB SECTION CLOSEB newline var_list",
+ /*   5 */ "section ::= OPENB DOT SECTION CLOSEB newline var_list",
+ /*   6 */ "var_list ::= var_list newline",
+ /*   7 */ "var_list ::= var_list var",
+ /*   8 */ "var_list ::=",
+ /*   9 */ "var ::= ID EQUAL value",
+ /*  10 */ "value ::= FLOAT",
+ /*  11 */ "value ::= INT",
+ /*  12 */ "value ::= BOOL",
+ /*  13 */ "value ::= SINGLE_QUOTED_STRING",
+ /*  14 */ "value ::= DOUBLE_QUOTED_STRING",
+ /*  15 */ "value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END",
+ /*  16 */ "value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END",
+ /*  17 */ "value ::= NAKED_STRING",
+ /*  18 */ "value ::= OTHER",
+ /*  19 */ "newline ::= NEWLINE",
+ /*  20 */ "newline ::= COMMENTSTART NEWLINE",
+ /*  21 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE",
+    );
+
+    function tokenName($tokenType)
+    {
+        if ($tokenType === 0) {
+            return 'End of Input';
+        }
+        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+            return $this->yyTokenName[$tokenType];
+        } else {
+            return "Unknown";
+        }
+    }
+
+    static function yy_destructor($yymajor, $yypminor)
+    {
+        switch ($yymajor) {
+            default:  break;   /* If no destructor action specified: do nothing */
+        }
+    }
+
+    function yy_pop_parser_stack()
+    {
+        if (!count($this->yystack)) {
+            return;
+        }
+        $yytos = array_pop($this->yystack);
+        if (self::$yyTraceFILE && $this->yyidx >= 0) {
+            fwrite(self::$yyTraceFILE,
+                self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+                    "\n");
+        }
+        $yymajor = $yytos->major;
+        self::yy_destructor($yymajor, $yytos->minor);
+        $this->yyidx--;
+        return $yymajor;
+    }
+
+    function __destruct()
+    {
+        while ($this->yystack !== Array()) {
+            $this->yy_pop_parser_stack();
+        }
+        if (is_resource(self::$yyTraceFILE)) {
+            fclose(self::$yyTraceFILE);
+        }
+    }
+
+    function yy_get_expected_tokens($token)
+    {
+        $state = $this->yystack[$this->yyidx]->stateno;
+        $expected = self::$yyExpectedTokens[$state];
+        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
+            return $expected;
+        }
+        $stack = $this->yystack;
+        $yyidx = $this->yyidx;
+        do {
+            $yyact = $this->yy_find_shift_action($token);
+            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+                // reduce action
+                $done = 0;
+                do {
+                    if ($done++ == 100) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // too much recursion prevents proper detection
+                        // so give up
+                        return array_unique($expected);
+                    }
+                    $yyruleno = $yyact - self::YYNSTATE;
+                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
+                    $nextstate = $this->yy_find_reduce_action(
+                        $this->yystack[$this->yyidx]->stateno,
+                        self::$yyRuleInfo[$yyruleno]['lhs']);
+                    if (isset(self::$yyExpectedTokens[$nextstate])) {
+		        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+                            if (in_array($token,
+                                  self::$yyExpectedTokens[$nextstate], true)) {
+                            $this->yyidx = $yyidx;
+                            $this->yystack = $stack;
+                            return array_unique($expected);
+                        }
+                    }
+                    if ($nextstate < self::YYNSTATE) {
+                        // we need to shift a non-terminal
+                        $this->yyidx++;
+                        $x = new TPC_yyStackEntry;
+                        $x->stateno = $nextstate;
+                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
+                        $this->yystack[$this->yyidx] = $x;
+                        continue 2;
+                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // the last token was just ignored, we can't accept
+                        // by ignoring input, this is in essence ignoring a
+                        // syntax error!
+                        return array_unique($expected);
+                    } elseif ($nextstate === self::YY_NO_ACTION) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // input accepted, but not shifted (I guess)
+                        return $expected;
+                    } else {
+                        $yyact = $nextstate;
+                    }
+                } while (true);
+            }
+            break;
+        } while (true);
+	$this->yyidx = $yyidx;
+	$this->yystack = $stack;
+        return array_unique($expected);
+    }
+
+    function yy_is_expected_token($token)
+    {
+        if ($token === 0) {
+            return true; // 0 is not part of this
+        }
+        $state = $this->yystack[$this->yyidx]->stateno;
+        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
+            return true;
+        }
+        $stack = $this->yystack;
+        $yyidx = $this->yyidx;
+        do {
+            $yyact = $this->yy_find_shift_action($token);
+            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+                // reduce action
+                $done = 0;
+                do {
+                    if ($done++ == 100) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // too much recursion prevents proper detection
+                        // so give up
+                        return true;
+                    }
+                    $yyruleno = $yyact - self::YYNSTATE;
+                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
+                    $nextstate = $this->yy_find_reduce_action(
+                        $this->yystack[$this->yyidx]->stateno,
+                        self::$yyRuleInfo[$yyruleno]['lhs']);
+                    if (isset(self::$yyExpectedTokens[$nextstate]) &&
+                          in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        return true;
+                    }
+                    if ($nextstate < self::YYNSTATE) {
+                        // we need to shift a non-terminal
+                        $this->yyidx++;
+                        $x = new TPC_yyStackEntry;
+                        $x->stateno = $nextstate;
+                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
+                        $this->yystack[$this->yyidx] = $x;
+                        continue 2;
+                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        if (!$token) {
+                            // end of input: this is valid
+                            return true;
+                        }
+                        // the last token was just ignored, we can't accept
+                        // by ignoring input, this is in essence ignoring a
+                        // syntax error!
+                        return false;
+                    } elseif ($nextstate === self::YY_NO_ACTION) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // input accepted, but not shifted (I guess)
+                        return true;
+                    } else {
+                        $yyact = $nextstate;
+                    }
+                } while (true);
+            }
+            break;
+        } while (true);
+        $this->yyidx = $yyidx;
+        $this->yystack = $stack;
+        return true;
+    }
+
+   function yy_find_shift_action($iLookAhead)
+    {
+        $stateno = $this->yystack[$this->yyidx]->stateno;
+
+        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
+        if (!isset(self::$yy_shift_ofst[$stateno])) {
+            // no shift actions
+            return self::$yy_default[$stateno];
+        }
+        $i = self::$yy_shift_ofst[$stateno];
+        if ($i === self::YY_SHIFT_USE_DFLT) {
+            return self::$yy_default[$stateno];
+        }
+        if ($iLookAhead == self::YYNOCODE) {
+            return self::YY_NO_ACTION;
+        }
+        $i += $iLookAhead;
+        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+              self::$yy_lookahead[$i] != $iLookAhead) {
+            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+                   && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+                if (self::$yyTraceFILE) {
+                    fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
+                        $this->yyTokenName[$iLookAhead] . " => " .
+                        $this->yyTokenName[$iFallback] . "\n");
+                }
+                return $this->yy_find_shift_action($iFallback);
+            }
+            return self::$yy_default[$stateno];
+        } else {
+            return self::$yy_action[$i];
+        }
+    }
+
+    function yy_find_reduce_action($stateno, $iLookAhead)
+    {
+        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+        if (!isset(self::$yy_reduce_ofst[$stateno])) {
+            return self::$yy_default[$stateno];
+        }
+        $i = self::$yy_reduce_ofst[$stateno];
+        if ($i == self::YY_REDUCE_USE_DFLT) {
+            return self::$yy_default[$stateno];
+        }
+        if ($iLookAhead == self::YYNOCODE) {
+            return self::YY_NO_ACTION;
+        }
+        $i += $iLookAhead;
+        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+              self::$yy_lookahead[$i] != $iLookAhead) {
+            return self::$yy_default[$stateno];
+        } else {
+            return self::$yy_action[$i];
+        }
+    }
+
+    function yy_shift($yyNewState, $yyMajor, $yypMinor)
+    {
+        $this->yyidx++;
+        if ($this->yyidx >= self::YYSTACKDEPTH) {
+            $this->yyidx--;
+            if (self::$yyTraceFILE) {
+                fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
+            }
+            while ($this->yyidx >= 0) {
+                $this->yy_pop_parser_stack();
+            }
+#line 125 "smarty_internal_configfileparser.y"
+
+    $this->internalError = true;
+    $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
+#line 593 "smarty_internal_configfileparser.php"
+            return;
+        }
+        $yytos = new TPC_yyStackEntry;
+        $yytos->stateno = $yyNewState;
+        $yytos->major = $yyMajor;
+        $yytos->minor = $yypMinor;
+        array_push($this->yystack, $yytos);
+        if (self::$yyTraceFILE && $this->yyidx > 0) {
+            fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
+                $yyNewState);
+            fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
+            for($i = 1; $i <= $this->yyidx; $i++) {
+                fprintf(self::$yyTraceFILE, " %s",
+                    $this->yyTokenName[$this->yystack[$i]->major]);
+            }
+            fwrite(self::$yyTraceFILE,"\n");
+        }
+    }
+
+    static public $yyRuleInfo = array(
+  array( 'lhs' => 20, 'rhs' => 2 ),
+  array( 'lhs' => 21, 'rhs' => 1 ),
+  array( 'lhs' => 22, 'rhs' => 2 ),
+  array( 'lhs' => 22, 'rhs' => 0 ),
+  array( 'lhs' => 24, 'rhs' => 5 ),
+  array( 'lhs' => 24, 'rhs' => 6 ),
+  array( 'lhs' => 23, 'rhs' => 2 ),
+  array( 'lhs' => 23, 'rhs' => 2 ),
+  array( 'lhs' => 23, 'rhs' => 0 ),
+  array( 'lhs' => 26, 'rhs' => 3 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 3 ),
+  array( 'lhs' => 27, 'rhs' => 2 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 27, 'rhs' => 1 ),
+  array( 'lhs' => 25, 'rhs' => 1 ),
+  array( 'lhs' => 25, 'rhs' => 2 ),
+  array( 'lhs' => 25, 'rhs' => 3 ),
+    );
+
+    static public $yyReduceMap = array(
+        0 => 0,
+        2 => 0,
+        3 => 0,
+        19 => 0,
+        20 => 0,
+        21 => 0,
+        1 => 1,
+        4 => 4,
+        5 => 5,
+        6 => 6,
+        7 => 7,
+        8 => 8,
+        9 => 9,
+        10 => 10,
+        11 => 11,
+        12 => 12,
+        13 => 13,
+        14 => 14,
+        15 => 15,
+        16 => 16,
+        17 => 17,
+        18 => 17,
+    );
+#line 131 "smarty_internal_configfileparser.y"
+    function yy_r0(){
+    $this->_retvalue = null;
+    }
+#line 666 "smarty_internal_configfileparser.php"
+#line 136 "smarty_internal_configfileparser.y"
+    function yy_r1(){
+    $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;
+    }
+#line 671 "smarty_internal_configfileparser.php"
+#line 149 "smarty_internal_configfileparser.y"
+    function yy_r4(){
+    $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+    $this->_retvalue = null;
+    }
+#line 677 "smarty_internal_configfileparser.php"
+#line 154 "smarty_internal_configfileparser.y"
+    function yy_r5(){
+    if ($this->smarty->config_read_hidden) {
+        $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+    }
+    $this->_retvalue = null;
+    }
+#line 685 "smarty_internal_configfileparser.php"
+#line 162 "smarty_internal_configfileparser.y"
+    function yy_r6(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+    }
+#line 690 "smarty_internal_configfileparser.php"
+#line 166 "smarty_internal_configfileparser.y"
+    function yy_r7(){
+    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
+    }
+#line 695 "smarty_internal_configfileparser.php"
+#line 170 "smarty_internal_configfileparser.y"
+    function yy_r8(){
+    $this->_retvalue = Array();
+    }
+#line 700 "smarty_internal_configfileparser.php"
+#line 176 "smarty_internal_configfileparser.y"
+    function yy_r9(){
+    $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 705 "smarty_internal_configfileparser.php"
+#line 181 "smarty_internal_configfileparser.y"
+    function yy_r10(){
+    $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 710 "smarty_internal_configfileparser.php"
+#line 185 "smarty_internal_configfileparser.y"
+    function yy_r11(){
+    $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 715 "smarty_internal_configfileparser.php"
+#line 189 "smarty_internal_configfileparser.y"
+    function yy_r12(){
+    $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 720 "smarty_internal_configfileparser.php"
+#line 193 "smarty_internal_configfileparser.y"
+    function yy_r13(){
+    $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 725 "smarty_internal_configfileparser.php"
+#line 197 "smarty_internal_configfileparser.y"
+    function yy_r14(){
+    $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 730 "smarty_internal_configfileparser.php"
+#line 201 "smarty_internal_configfileparser.y"
+    function yy_r15(){
+    $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + -1]->minor);
+    }
+#line 735 "smarty_internal_configfileparser.php"
+#line 205 "smarty_internal_configfileparser.y"
+    function yy_r16(){
+    $this->_retvalue = '';
+    }
+#line 740 "smarty_internal_configfileparser.php"
+#line 209 "smarty_internal_configfileparser.y"
+    function yy_r17(){
+    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 745 "smarty_internal_configfileparser.php"
+
+    private $_retvalue;
+
+    function yy_reduce($yyruleno)
+    {
+        $yymsp = $this->yystack[$this->yyidx];
+        if (self::$yyTraceFILE && $yyruleno >= 0
+              && $yyruleno < count(self::$yyRuleName)) {
+            fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
+                self::$yyTracePrompt, $yyruleno,
+                self::$yyRuleName[$yyruleno]);
+        }
+
+        $this->_retvalue = $yy_lefthand_side = null;
+        if (array_key_exists($yyruleno, self::$yyReduceMap)) {
+            // call the action
+            $this->_retvalue = null;
+            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+            $yy_lefthand_side = $this->_retvalue;
+        }
+        $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
+        $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
+        $this->yyidx -= $yysize;
+        for($i = $yysize; $i; $i--) {
+            // pop all of the right-hand side parameters
+            array_pop($this->yystack);
+        }
+        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+        if ($yyact < self::YYNSTATE) {
+            if (!self::$yyTraceFILE && $yysize) {
+                $this->yyidx++;
+                $x = new TPC_yyStackEntry;
+                $x->stateno = $yyact;
+                $x->major = $yygoto;
+                $x->minor = $yy_lefthand_side;
+                $this->yystack[$this->yyidx] = $x;
+            } else {
+                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+            }
+        } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+            $this->yy_accept();
+        }
+    }
+
+    function yy_parse_failed()
+    {
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
+        }
+        while ($this->yyidx >= 0) {
+            $this->yy_pop_parser_stack();
+        }
+    }
+
+    function yy_syntax_error($yymajor, $TOKEN)
+    {
+#line 118 "smarty_internal_configfileparser.y"
+
+    $this->internalError = true;
+    $this->yymajor = $yymajor;
+    $this->compiler->trigger_config_file_error();
+#line 808 "smarty_internal_configfileparser.php"
+    }
+
+    function yy_accept()
+    {
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
+        }
+        while ($this->yyidx >= 0) {
+            $stack = $this->yy_pop_parser_stack();
+        }
+#line 110 "smarty_internal_configfileparser.y"
+
+    $this->successful = !$this->internalError;
+    $this->internalError = false;
+    $this->retvalue = $this->_retvalue;
+    //echo $this->retvalue."\n\n";
+#line 826 "smarty_internal_configfileparser.php"
+    }
+
+    function doParse($yymajor, $yytokenvalue)
+    {
+        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
+
+        if ($this->yyidx === null || $this->yyidx < 0) {
+            $this->yyidx = 0;
+            $this->yyerrcnt = -1;
+            $x = new TPC_yyStackEntry;
+            $x->stateno = 0;
+            $x->major = 0;
+            $this->yystack = array();
+            array_push($this->yystack, $x);
+        }
+        $yyendofinput = ($yymajor==0);
+
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sInput %s\n",
+                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+        }
+
+        do {
+            $yyact = $this->yy_find_shift_action($yymajor);
+            if ($yymajor < self::YYERRORSYMBOL &&
+                  !$this->yy_is_expected_token($yymajor)) {
+                // force a syntax error
+                $yyact = self::YY_ERROR_ACTION;
+            }
+            if ($yyact < self::YYNSTATE) {
+                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+                $this->yyerrcnt--;
+                if ($yyendofinput && $this->yyidx >= 0) {
+                    $yymajor = 0;
+                } else {
+                    $yymajor = self::YYNOCODE;
+                }
+            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+                $this->yy_reduce($yyact - self::YYNSTATE);
+            } elseif ($yyact == self::YY_ERROR_ACTION) {
+                if (self::$yyTraceFILE) {
+                    fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
+                        self::$yyTracePrompt);
+                }
+                if (self::YYERRORSYMBOL) {
+                    if ($this->yyerrcnt < 0) {
+                        $this->yy_syntax_error($yymajor, $yytokenvalue);
+                    }
+                    $yymx = $this->yystack[$this->yyidx]->major;
+                    if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
+                        if (self::$yyTraceFILE) {
+                            fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
+                                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+                        }
+                        $this->yy_destructor($yymajor, $yytokenvalue);
+                        $yymajor = self::YYNOCODE;
+                    } else {
+                        while ($this->yyidx >= 0 &&
+                                 $yymx != self::YYERRORSYMBOL &&
+        ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+                              ){
+                            $this->yy_pop_parser_stack();
+                        }
+                        if ($this->yyidx < 0 || $yymajor==0) {
+                            $this->yy_destructor($yymajor, $yytokenvalue);
+                            $this->yy_parse_failed();
+                            $yymajor = self::YYNOCODE;
+                        } elseif ($yymx != self::YYERRORSYMBOL) {
+                            $u2 = 0;
+                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+                        }
+                    }
+                    $this->yyerrcnt = 3;
+                    $yyerrorhit = 1;
+                } else {
+                    if ($this->yyerrcnt <= 0) {
+                        $this->yy_syntax_error($yymajor, $yytokenvalue);
+                    }
+                    $this->yyerrcnt = 3;
+                    $this->yy_destructor($yymajor, $yytokenvalue);
+                    if ($yyendofinput) {
+                        $this->yy_parse_failed();
+                    }
+                    $yymajor = self::YYNOCODE;
+                }
+            } else {
+                $this->yy_accept();
+                $yymajor = self::YYNOCODE;
+            }
+        } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+    }
+}
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_data.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_data.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_data.php	(revision 25596)
@@ -0,0 +1,556 @@
+<?php
+/**
+ * Smarty Internal Plugin Data
+ *
+ * This file contains the basic classes and methodes for template and variable creation
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Base class with template and variable methodes
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Smarty_Internal_Data {
+
+    /**
+     * name of class used for templates
+     *
+     * @var string
+     */
+    public $template_class = 'Smarty_Internal_Template';
+    /**
+     * template variables
+     *
+     * @var array
+     */
+    public $tpl_vars = array();
+    /**
+     * parent template (if any)
+     *
+     * @var Smarty_Internal_Template
+     */
+    public $parent = null;
+    /**
+     * configuration settings
+     *
+     * @var array
+     */
+    public $config_vars = array();
+
+    /**
+     * assigns a Smarty variable
+     *
+     * @param array|string $tpl_var the template variable name(s)
+     * @param mixed        $value   the value to assign
+     * @param boolean      $nocache if true any output of this variable will be not cached
+     * @param boolean $scope the scope the variable will have  (local,parent or root)
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function assign($tpl_var, $value = null, $nocache = false)
+    {
+        if (is_array($tpl_var)) {
+            foreach ($tpl_var as $_key => $_val) {
+                if ($_key != '') {
+                    $this->tpl_vars[$_key] = new Smarty_variable($_val, $nocache);
+                }
+            }
+        } else {
+            if ($tpl_var != '') {
+                $this->tpl_vars[$tpl_var] = new Smarty_variable($value, $nocache);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * assigns a global Smarty variable
+     *
+     * @param string $varname the global variable name
+     * @param mixed  $value   the value to assign
+     * @param boolean $nocache if true any output of this variable will be not cached
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function assignGlobal($varname, $value = null, $nocache = false)
+    {
+        if ($varname != '') {
+            Smarty::$global_tpl_vars[$varname] = new Smarty_variable($value, $nocache);
+            $ptr = $this;
+            while ($ptr instanceof Smarty_Internal_Template) {
+                $ptr->tpl_vars[$varname] = clone Smarty::$global_tpl_vars[$varname];
+                $ptr = $ptr->parent;
+            }
+        }
+
+        return $this;
+    }
+    /**
+     * assigns values to template variables by reference
+     *
+     * @param string $tpl_var the template variable name
+     * @param mixed $ &$value the referenced value to assign
+     * @param boolean $nocache if true any output of this variable will be not cached
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function assignByRef($tpl_var, &$value, $nocache = false)
+    {
+        if ($tpl_var != '') {
+            $this->tpl_vars[$tpl_var] = new Smarty_variable(null, $nocache);
+            $this->tpl_vars[$tpl_var]->value = &$value;
+        }
+
+        return $this;
+    }
+
+    /**
+     * appends values to template variables
+     *
+     * @param array|string $tpl_var the template variable name(s)
+     * @param mixed        $value   the value to append
+     * @param boolean      $merge   flag if array elements shall be merged
+     * @param boolean $nocache if true any output of this variable will be not cached
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function append($tpl_var, $value = null, $merge = false, $nocache = false)
+    {
+        if (is_array($tpl_var)) {
+            // $tpl_var is an array, ignore $value
+            foreach ($tpl_var as $_key => $_val) {
+                if ($_key != '') {
+                    if (!isset($this->tpl_vars[$_key])) {
+                        $tpl_var_inst = $this->getVariable($_key, null, true, false);
+                        if ($tpl_var_inst instanceof Undefined_Smarty_Variable) {
+                            $this->tpl_vars[$_key] = new Smarty_variable(null, $nocache);
+                        } else {
+                            $this->tpl_vars[$_key] = clone $tpl_var_inst;
+                        }
+                    }
+                    if (!(is_array($this->tpl_vars[$_key]->value) || $this->tpl_vars[$_key]->value instanceof ArrayAccess)) {
+                        settype($this->tpl_vars[$_key]->value, 'array');
+                    }
+                    if ($merge && is_array($_val)) {
+                        foreach($_val as $_mkey => $_mval) {
+                            $this->tpl_vars[$_key]->value[$_mkey] = $_mval;
+                        }
+                    } else {
+                        $this->tpl_vars[$_key]->value[] = $_val;
+                    }
+                }
+            }
+        } else {
+            if ($tpl_var != '' && isset($value)) {
+                if (!isset($this->tpl_vars[$tpl_var])) {
+                    $tpl_var_inst = $this->getVariable($tpl_var, null, true, false);
+                    if ($tpl_var_inst instanceof Undefined_Smarty_Variable) {
+                        $this->tpl_vars[$tpl_var] = new Smarty_variable(null, $nocache);
+                    } else {
+                        $this->tpl_vars[$tpl_var] = clone $tpl_var_inst;
+                    }
+                }
+                if (!(is_array($this->tpl_vars[$tpl_var]->value) || $this->tpl_vars[$tpl_var]->value instanceof ArrayAccess)) {
+                    settype($this->tpl_vars[$tpl_var]->value, 'array');
+                }
+                if ($merge && is_array($value)) {
+                    foreach($value as $_mkey => $_mval) {
+                        $this->tpl_vars[$tpl_var]->value[$_mkey] = $_mval;
+                    }
+                } else {
+                    $this->tpl_vars[$tpl_var]->value[] = $value;
+                }
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * appends values to template variables by reference
+     *
+     * @param string $tpl_var the template variable name
+     * @param mixed  &$value  the referenced value to append
+     * @param boolean $merge  flag if array elements shall be merged
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function appendByRef($tpl_var, &$value, $merge = false)
+    {
+        if ($tpl_var != '' && isset($value)) {
+            if (!isset($this->tpl_vars[$tpl_var])) {
+                $this->tpl_vars[$tpl_var] = new Smarty_variable();
+            }
+            if (!is_array($this->tpl_vars[$tpl_var]->value)) {
+                settype($this->tpl_vars[$tpl_var]->value, 'array');
+            }
+            if ($merge && is_array($value)) {
+                foreach($value as $_key => $_val) {
+                    $this->tpl_vars[$tpl_var]->value[$_key] = &$value[$_key];
+                }
+            } else {
+                $this->tpl_vars[$tpl_var]->value[] = &$value;
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Returns a single or all template variables
+     *
+     * @param string  $varname        variable name or null
+     * @param string  $_ptr           optional pointer to data object
+     * @param boolean $search_parents include parent templates?
+     * @return string variable value or or array of variables
+     */
+    public function getTemplateVars($varname = null, $_ptr = null, $search_parents = true)
+    {
+        if (isset($varname)) {
+            $_var = $this->getVariable($varname, $_ptr, $search_parents, false);
+            if (is_object($_var)) {
+                return $_var->value;
+            } else {
+                return null;
+            }
+        } else {
+            $_result = array();
+            if ($_ptr === null) {
+                $_ptr = $this;
+            } while ($_ptr !== null) {
+                foreach ($_ptr->tpl_vars AS $key => $var) {
+                    if (!array_key_exists($key, $_result)) {
+                        $_result[$key] = $var->value;
+                    }
+                }
+                // not found, try at parent
+                if ($search_parents) {
+                    $_ptr = $_ptr->parent;
+                } else {
+                    $_ptr = null;
+                }
+            }
+            if ($search_parents && isset(Smarty::$global_tpl_vars)) {
+                foreach (Smarty::$global_tpl_vars AS $key => $var) {
+                    if (!array_key_exists($key, $_result)) {
+                        $_result[$key] = $var->value;
+                    }
+                }
+            }
+            return $_result;
+        }
+    }
+
+    /**
+     * clear the given assigned template variable.
+     *
+     * @param string|array $tpl_var the template variable(s) to clear
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function clearAssign($tpl_var)
+    {
+        if (is_array($tpl_var)) {
+            foreach ($tpl_var as $curr_var) {
+                unset($this->tpl_vars[$curr_var]);
+            }
+        } else {
+            unset($this->tpl_vars[$tpl_var]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * clear all the assigned template variables.
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function clearAllAssign()
+    {
+        $this->tpl_vars = array();
+        return $this;
+    }
+
+    /**
+     * load a config file, optionally load just selected sections
+     *
+     * @param string $config_file filename
+     * @param mixed  $sections    array of section names, single section or null
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function configLoad($config_file, $sections = null)
+    {
+        // load Config class
+        $config = new Smarty_Internal_Config($config_file, $this->smarty, $this);
+        $config->loadConfigVars($sections);
+        return $this;
+    }
+
+    /**
+     * gets the object of a Smarty variable
+     *
+     * @param string  $variable the name of the Smarty variable
+     * @param object  $_ptr     optional pointer to data object
+     * @param boolean $search_parents search also in parent data
+     * @return object the object of the variable
+     */
+    public function getVariable($variable, $_ptr = null, $search_parents = true, $error_enable = true)
+    {
+        if ($_ptr === null) {
+            $_ptr = $this;
+        } while ($_ptr !== null) {
+            if (isset($_ptr->tpl_vars[$variable])) {
+                // found it, return it
+                return $_ptr->tpl_vars[$variable];
+            }
+            // not found, try at parent
+            if ($search_parents) {
+                $_ptr = $_ptr->parent;
+            } else {
+                $_ptr = null;
+            }
+        }
+        if (isset(Smarty::$global_tpl_vars[$variable])) {
+            // found it, return it
+            return Smarty::$global_tpl_vars[$variable];
+        }
+        if ($this->smarty->error_unassigned && $error_enable) {
+            // force a notice
+            $x = $$variable;
+        }
+        return new Undefined_Smarty_Variable;
+    }
+
+    /**
+     * gets  a config variable
+     *
+     * @param string $variable the name of the config variable
+     * @return mixed the value of the config variable
+     */
+    public function getConfigVariable($variable, $error_enable = true)
+    {
+        $_ptr = $this;
+        while ($_ptr !== null) {
+            if (isset($_ptr->config_vars[$variable])) {
+                // found it, return it
+                return $_ptr->config_vars[$variable];
+            }
+            // not found, try at parent
+            $_ptr = $_ptr->parent;
+        }
+        if ($this->smarty->error_unassigned && $error_enable) {
+            // force a notice
+            $x = $$variable;
+        }
+        return null;
+    }
+
+    /**
+     * gets  a stream variable
+     *
+     * @param string $variable the stream of the variable
+     * @return mixed the value of the stream variable
+     */
+    public function getStreamVariable($variable)
+    {
+        $_result = '';
+        $fp = fopen($variable, 'r+');
+        if ($fp) {
+            while (!feof($fp) && ($current_line = fgets($fp)) !== false ) {
+                $_result .= $current_line;
+            }
+            fclose($fp);
+            return $_result;
+        }
+
+        if ($this->smarty->error_unassigned) {
+            throw new SmartyException('Undefined stream variable "' . $variable . '"');
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Returns a single or all config variables
+     *
+     * @param string $varname variable name or null
+     * @return string variable value or or array of variables
+     */
+    public function getConfigVars($varname = null, $search_parents = true)
+    {
+        $_ptr = $this;
+        $var_array = array();
+        while ($_ptr !== null) {
+            if (isset($varname)) {
+                if (isset($_ptr->config_vars[$varname])) {
+                    return $_ptr->config_vars[$varname];
+                }
+            } else {
+                $var_array = array_merge($_ptr->config_vars, $var_array);
+            }
+             // not found, try at parent
+            if ($search_parents) {
+                $_ptr = $_ptr->parent;
+            } else {
+                $_ptr = null;
+            }
+        }
+        if (isset($varname)) {
+            return '';
+        } else {
+            return $var_array;
+        }
+    }
+
+    /**
+     * Deassigns a single or all config variables
+     *
+     * @param string $varname variable name or null
+     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function clearConfig($varname = null)
+    {
+        if (isset($varname)) {
+            unset($this->config_vars[$varname]);
+        } else {
+            $this->config_vars = array();
+        }
+        return $this;
+    }
+
+}
+
+/**
+ * class for the Smarty data object
+ *
+ * The Smarty data object will hold Smarty variables in the current scope
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Smarty_Data extends Smarty_Internal_Data {
+
+    /**
+     * Smarty object
+     *
+     * @var Smarty
+     */
+    public $smarty = null;
+
+    /**
+     * create Smarty data object
+     *
+     * @param Smarty|array $_parent  parent template
+     * @param Smarty       $smarty   global smarty instance
+     */
+    public function __construct ($_parent = null, $smarty = null)
+    {
+        $this->smarty = $smarty;
+        if (is_object($_parent)) {
+            // when object set up back pointer
+            $this->parent = $_parent;
+        } elseif (is_array($_parent)) {
+            // set up variable values
+            foreach ($_parent as $_key => $_val) {
+                $this->tpl_vars[$_key] = new Smarty_variable($_val);
+            }
+        } elseif ($_parent != null) {
+            throw new SmartyException("Wrong type for template variables");
+        }
+    }
+
+}
+
+/**
+ * class for the Smarty variable object
+ *
+ * This class defines the Smarty variable object
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Smarty_Variable {
+
+    /**
+     * template variable
+     *
+     * @var mixed
+     */
+    public $value = null;
+    /**
+     * if true any output of this variable will be not cached
+     *
+     * @var boolean
+     */
+    public $nocache = false;
+    /**
+     * the scope the variable will have  (local,parent or root)
+     *
+     * @var int
+     */
+    public $scope = Smarty::SCOPE_LOCAL;
+
+    /**
+     * create Smarty variable object
+     *
+     * @param mixed   $value   the value to assign
+     * @param boolean $nocache if true any output of this variable will be not cached
+     * @param int     $scope   the scope the variable will have  (local,parent or root)
+     */
+    public function __construct($value = null, $nocache = false, $scope = Smarty::SCOPE_LOCAL)
+    {
+        $this->value = $value;
+        $this->nocache = $nocache;
+        $this->scope = $scope;
+    }
+
+    /**
+     * <<magic>> String conversion
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return (string) $this->value;
+    }
+
+}
+
+/**
+ * class for undefined variable object
+ *
+ * This class defines an object for undefined variable handling
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+class Undefined_Smarty_Variable {
+
+    /**
+     * Returns FALSE for 'nocache' and NULL otherwise.
+     *
+     * @param string $name
+     * @return bool
+     */
+    public function __get($name)
+    {
+        if ($name == 'nocache') {
+            return false;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Always returns an empty string.
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return "";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_debug.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_debug.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_debug.php	(revision 25596)
@@ -0,0 +1,206 @@
+<?php
+/**
+ * Smarty Internal Plugin Debug
+ *
+ * Class to collect data for the Smarty Debugging Consol
+ *
+ * @package Smarty
+ * @subpackage Debug
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Debug Class
+ *
+ * @package Smarty
+ * @subpackage Debug
+ */
+class Smarty_Internal_Debug extends Smarty_Internal_Data {
+
+    /**
+     * template data
+     *
+     * @var array
+     */
+    public static $template_data = array();
+
+    /**
+     * Start logging of compile time
+     *
+     * @param object $template
+     */
+    public static function start_compile($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['start_time'] = microtime(true);
+    }
+
+    /**
+     * End logging of compile time
+     *
+     * @param object $template
+     */
+    public static function end_compile($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['compile_time'] += microtime(true) - self::$template_data[$key]['start_time'];
+    }
+
+    /**
+     * Start logging of render time
+     *
+     * @param object $template
+     */
+    public static function start_render($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['start_time'] = microtime(true);
+    }
+
+    /**
+     * End logging of compile time
+     *
+     * @param object $template
+     */
+    public static function end_render($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['render_time'] += microtime(true) - self::$template_data[$key]['start_time'];
+    }
+
+    /**
+     * Start logging of cache time
+     *
+     * @param object $template cached template
+     */
+    public static function start_cache($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['start_time'] = microtime(true);
+    }
+
+    /**
+     * End logging of cache time
+     *
+     * @param object $template cached template
+     */
+    public static function end_cache($template)
+    {
+        $key = self::get_key($template);
+        self::$template_data[$key]['cache_time'] += microtime(true) - self::$template_data[$key]['start_time'];
+    }
+
+    /**
+     * Opens a window for the Smarty Debugging Consol and display the data
+     *
+     * @param Smarty_Internal_Template|Smarty $obj object to debug
+     */
+    public static function display_debug($obj)
+    {
+        // prepare information of assigned variables
+        $ptr = self::get_debug_vars($obj);
+        if ($obj instanceof Smarty) {
+            $smarty = clone $obj;
+        } else {
+            $smarty = clone $obj->smarty;
+        }
+        $_assigned_vars = $ptr->tpl_vars;
+        ksort($_assigned_vars);
+        $_config_vars = $ptr->config_vars;
+        ksort($_config_vars);
+        $smarty->registered_filters = array();
+        $smarty->autoload_filters = array();
+        $smarty->default_modifiers = array();
+        $smarty->force_compile = false;
+        $smarty->left_delimiter = '{';
+        $smarty->right_delimiter = '}';
+        $smarty->debugging = false;
+        $smarty->force_compile = false;
+        $_template = new Smarty_Internal_Template($smarty->debug_tpl, $smarty);
+        $_template->caching = false;
+        $_template->disableSecurity();
+        $_template->cache_id = null;
+        $_template->compile_id = null;
+        if ($obj instanceof Smarty_Internal_Template) {
+            $_template->assign('template_name', $obj->source->type . ':' . $obj->source->name);
+        }
+        if ($obj instanceof Smarty) {
+            $_template->assign('template_data', self::$template_data);
+        } else {
+            $_template->assign('template_data', null);
+        }
+        $_template->assign('assigned_vars', $_assigned_vars);
+        $_template->assign('config_vars', $_config_vars);
+        $_template->assign('execution_time', microtime(true) - $smarty->start_time);
+        echo $_template->fetch();
+    }
+
+    /**
+     * Recursively gets variables from all template/data scopes
+     *
+     * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
+     * @return StdClass
+     */
+    public static function get_debug_vars($obj)
+    {
+        $config_vars = $obj->config_vars;
+        $tpl_vars = array();
+        foreach ($obj->tpl_vars as $key => $var) {
+            $tpl_vars[$key] = clone $var;
+            if ($obj instanceof Smarty_Internal_Template) {
+                $tpl_vars[$key]->scope = $obj->source->type . ':' . $obj->source->name;
+            } elseif ($obj instanceof Smarty_Data) {
+                $tpl_vars[$key]->scope = 'Data object';
+            } else {
+                $tpl_vars[$key]->scope = 'Smarty root';
+            }
+        }
+
+        if (isset($obj->parent)) {
+            $parent = self::get_debug_vars($obj->parent);
+            $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
+            $config_vars = array_merge($parent->config_vars, $config_vars);
+        } else {
+            foreach (Smarty::$global_tpl_vars as $name => $var) {
+                if (!array_key_exists($name, $tpl_vars)) {
+                    $clone = clone $var;
+                    $clone->scope = 'Global';
+                    $tpl_vars[$name] = $clone;
+                }
+            }
+        }
+        return (object) array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
+    }
+
+    /**
+     * Return key into $template_data for template
+     *
+     * @param object $template  template object
+     * @return string   key into $template_data
+     */
+    private static function get_key($template)
+    {
+        static $_is_stringy = array('string' => true, 'eval' => true);
+        // calculate Uid if not already done
+        if ($template->source->uid == '') {
+            $template->source->filepath;
+        }
+        $key = $template->source->uid;
+        if (isset(self::$template_data[$key])) {
+            return $key;
+        } else {
+            if (isset($_is_stringy[$template->source->type])) {
+                self::$template_data[$key]['name'] = '\''.substr($template->source->name,0,25).'...\'';
+            } else {
+                self::$template_data[$key]['name'] = $template->source->filepath;
+            }
+            self::$template_data[$key]['compile_time'] = 0;
+            self::$template_data[$key]['render_time'] = 0;
+            self::$template_data[$key]['cache_time'] = 0;
+            return $key;
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_filter_handler.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_filter_handler.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_filter_handler.php	(revision 25596)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Smarty Internal Plugin Filter Handler
+ *
+ * Smarty filter handler class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+
+/**
+ * Class for filter processing
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Filter_Handler {
+
+    /**
+     * Run filters over content
+     *
+     * The filters will be lazy loaded if required
+     * class name format: Smarty_FilterType_FilterName
+     * plugin filename format: filtertype.filtername.php
+     * Smarty2 filter plugins could be used
+     *
+     * @param string                   $type     the type of filter ('pre','post','output') which shall run
+     * @param string                   $content  the content which shall be processed by the filters
+     * @param Smarty_Internal_Template $template template object
+     * @return string the filtered content
+     */
+    public static function runFilter($type, $content, Smarty_Internal_Template $template)
+    {
+        $output = $content;
+        // loop over autoload filters of specified type
+        if (!empty($template->smarty->autoload_filters[$type])) {
+            foreach ((array)$template->smarty->autoload_filters[$type] as $name) {
+                $plugin_name = "Smarty_{$type}filter_{$name}";
+                if ($template->smarty->loadPlugin($plugin_name)) {
+                    if (function_exists($plugin_name)) {
+                        // use loaded Smarty2 style plugin
+                        $output = $plugin_name($output, $template);
+                    } elseif (class_exists($plugin_name, false)) {
+                        // loaded class of filter plugin
+                        $output = call_user_func(array($plugin_name, 'execute'), $output, $template);
+                    }
+                } else {
+                    // nothing found, throw exception
+                    throw new SmartyException("Unable to load filter {$plugin_name}");
+                }
+            }
+        }
+        // loop over registerd filters of specified type
+        if (!empty($template->smarty->registered_filters[$type])) {
+            foreach ($template->smarty->registered_filters[$type] as $key => $name) {
+                if (is_array($template->smarty->registered_filters[$type][$key])) {
+                    $output = call_user_func($template->smarty->registered_filters[$type][$key], $output, $template);
+                } else {
+                    $output = $template->smarty->registered_filters[$type][$key]($output, $template);
+                }
+            }
+        }
+        // return filtered output
+        return $output;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_function_call_handler.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_function_call_handler.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_function_call_handler.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Smarty Internal Plugin Function Call Handler
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+
+/**
+ * This class does call function defined with the {function} tag
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Function_Call_Handler {
+
+    /**
+     * This function handles calls to template functions defined by {function}
+     * It does create a PHP function at the first call
+     *
+     * @param string                   $_name       template function name
+     * @param Smarty_Internal_Template $_template   template object
+     * @param array                    $_params     Smarty variables passed as call parameter
+     * @param string                   $_hash       nocache hash value
+     * @param bool                     $_nocache    nocache flag
+     */
+    public static function call($_name, Smarty_Internal_Template $_template, $_params, $_hash, $_nocache)
+    {
+        if ($_nocache) {
+            $_function = "smarty_template_function_{$_name}_nocache";
+        } else {
+            $_function = "smarty_template_function_{$_hash}_{$_name}";
+        }
+        if (!is_callable($_function)) {
+            $_code = "function {$_function}(\$_smarty_tpl,\$params) {
+    \$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
+    foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
+    foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
+            if ($_nocache) {
+                $_code .= preg_replace(array("!<\?php echo \\'/\*%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/|/\*/%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/\\';\?>!",
+                        "!\\\'!"), array('', "'"), $_template->smarty->template_functions[$_name]['compiled']);
+                $_template->smarty->template_functions[$_name]['called_nocache'] = true;
+            } else {
+                $_code .= preg_replace("/{$_template->smarty->template_functions[$_name]['nocache_hash']}/", $_template->properties['nocache_hash'], $_template->smarty->template_functions[$_name]['compiled']);
+            }
+            $_code .= "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;}";
+            eval($_code);
+        }
+        $_function($_template, $_params);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_get_include_path.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_get_include_path.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_get_include_path.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Smarty read include path plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Monte Ohrt
+ */
+
+/**
+ * Smarty Internal Read Include Path Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Get_Include_Path {
+
+    /**
+     * Return full file path from PHP include_path
+     *
+     * @param string $filepath filepath
+     * @return string|boolean full filepath or false
+     */
+    public static function getIncludePath($filepath)
+    {
+        static $_include_path = null;
+        
+        if (function_exists('stream_resolve_include_path')) {
+            // available since PHP 5.3.2
+            return stream_resolve_include_path($filepath);
+        }
+
+        if ($_include_path === null) {
+            $_include_path = explode(PATH_SEPARATOR, get_include_path());
+        }
+
+        foreach ($_include_path as $_path) {
+            if (file_exists($_path . DS . $filepath)) {
+                return $_path . DS . $filepath;
+            }
+        }
+
+        return false;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_nocache_insert.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_nocache_insert.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Smarty Internal Plugin Nocache Insert
+ *
+ * Compiles the {insert} tag into the cache file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Nocache_Insert {
+
+    /**
+     * Compiles code for the {insert} tag into cache file
+     *
+     * @param string                   $_function insert function name
+     * @param array                    $_attr     array with parameter
+     * @param Smarty_Internal_Template $_template template object
+     * @param string                   $_script   script name to load or 'null'
+     * @param string                   $_assign   optional variable name
+     * @return string compiled code
+     */
+    public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
+    {
+        $_output = '<?php ';
+        if ($_script != 'null') {
+            // script which must be included
+            // code for script file loading
+            $_output .= "require_once '{$_script}';";
+        }
+        // call insert
+        if (isset($_assign)) {
+            $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
+        } else {
+            $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
+        }
+        $_tpl = $_template;
+        while ($_tpl->parent instanceof Smarty_Internal_Template) {
+            $_tpl = $_tpl->parent;
+        }
+        return "/*%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/";
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_parsetree.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_parsetree.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_parsetree.php	(revision 25596)
@@ -0,0 +1,395 @@
+<?php
+/**
+ * Smarty Internal Plugin Templateparser Parsetrees
+ *
+ * These are classes to build parsetrees in the template parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+abstract class _smarty_parsetree {
+
+    /**
+     * Parser object
+     * @var object
+     */
+    public $parser;
+    /**
+     * Buffer content
+     * @var mixed
+     */
+    public $data;
+
+    /**
+     * Return buffer
+     *
+     * @return string  buffer content
+     */
+    abstract public function to_smarty_php();
+
+}
+
+/**
+ * A complete smarty tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_tag extends _smarty_parsetree {
+
+    /**
+     * Saved block nesting level
+     * @var int
+     */
+    public $saved_block_nesting;
+
+    /**
+     * Create parse tree buffer for Smarty tag
+     *
+     * @param object $parser    parser object
+     * @param string $data      content
+     */
+    public function __construct($parser, $data)
+    {
+        $this->parser = $parser;
+        $this->data = $data;
+        $this->saved_block_nesting = $parser->block_nesting_level;
+    }
+
+    /**
+     * Return buffer content
+     *
+     * @return string  content
+     */
+    public function to_smarty_php()
+    {
+        return $this->data;
+    }
+
+    /**
+     * Return complied code that loads the evaluated outout of buffer content into a temporary variable
+     *
+     * @return string template code
+     */
+    public function assign_to_var()
+    {
+        $var = sprintf('$_tmp%d', ++$this->parser->prefix_number);
+        $this->parser->compiler->prefix_code[] = sprintf('<?php ob_start();?>%s<?php %s=ob_get_clean();?>', $this->data, $var);
+        return $var;
+    }
+
+}
+
+/**
+ * Code fragment inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_code extends _smarty_parsetree {
+
+
+    /**
+     * Create parse tree buffer for code fragment
+     *
+     * @param object $parser    parser object
+     * @param string $data      content
+     */
+    public function __construct($parser, $data)
+    {
+        $this->parser = $parser;
+        $this->data = $data;
+    }
+
+    /**
+     * Return buffer content in parentheses
+     *
+     * @return string  content
+     */
+    public function to_smarty_php()
+    {
+        return sprintf("(%s)", $this->data);
+    }
+
+}
+
+/**
+ * Double quoted string inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_doublequoted extends _smarty_parsetree {
+
+    /**
+     * Create parse tree buffer for double quoted string subtrees
+     *
+     * @param object $parser    parser object
+     * @param _smarty_parsetree $subtree    parsetree buffer
+     */
+    public function __construct($parser, _smarty_parsetree $subtree)
+    {
+        $this->parser = $parser;
+        $this->subtrees[] = $subtree;
+        if ($subtree instanceof _smarty_tag) {
+            $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
+        }
+    }
+
+    /**
+     * Append buffer to subtree
+     *
+     * @param _smarty_parsetree $subtree  parsetree buffer
+     */
+    public function append_subtree(_smarty_parsetree $subtree)
+    {
+        $last_subtree = count($this->subtrees) - 1;
+        if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof _smarty_tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) {
+            if ($subtree instanceof _smarty_code) {
+                $this->subtrees[$last_subtree]->data .= '<?php echo ' . $subtree->data . ';?>';
+            } elseif ($subtree instanceof _smarty_dq_content) {
+                $this->subtrees[$last_subtree]->data .= '<?php echo "' . $subtree->data . '";?>';
+            } else {
+                $this->subtrees[$last_subtree]->data .= $subtree->data;
+            }
+        } else {
+            $this->subtrees[] = $subtree;
+        }
+        if ($subtree instanceof _smarty_tag) {
+            $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
+        }
+    }
+
+    /**
+     * Merge subtree buffer content together
+     *
+     * @return string  compiled template code
+     */
+    public function to_smarty_php()
+    {
+        $code = '';
+        foreach ($this->subtrees as $subtree) {
+            if ($code !== "") {
+                $code .= ".";
+            }
+            if ($subtree instanceof _smarty_tag) {
+                $more_php = $subtree->assign_to_var();
+            } else {
+                $more_php = $subtree->to_smarty_php();
+            }
+
+            $code .= $more_php;
+
+            if (!$subtree instanceof _smarty_dq_content) {
+                $this->parser->compiler->has_variable_string = true;
+            }
+        }
+        return $code;
+    }
+
+}
+
+/**
+ * Raw chars as part of a double quoted string.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_dq_content extends _smarty_parsetree {
+
+
+    /**
+     * Create parse tree buffer with string content
+     *
+     * @param object $parser  parser object
+     * @param string $data    string section
+     */
+    public function __construct($parser, $data)
+    {
+        $this->parser = $parser;
+        $this->data = $data;
+    }
+
+    /**
+     * Return content as double quoted string
+     *
+     * @return string doubled quoted string
+     */
+    public function to_smarty_php()
+    {
+        return '"' . $this->data . '"';
+    }
+
+}
+
+/**
+ * Template element
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_template_buffer extends _smarty_parsetree {
+
+    /**
+     * Array of template elements
+     *
+     * @var array
+     */
+    public $subtrees = Array();
+
+    /**
+     * Create root of parse tree for template elements
+     *
+     * @param object $parser    parse object
+     */
+    public function __construct($parser)
+    {
+        $this->parser = $parser;
+    }
+
+    /**
+     * Append buffer to subtree
+     *
+     * @param _smarty_parsetree $subtree
+     */
+    public function append_subtree(_smarty_parsetree $subtree)
+    {
+        $this->subtrees[] = $subtree;
+    }
+
+    /**
+     * Sanitize and merge subtree buffers together
+     *
+     * @return string template code content
+     */
+    public function to_smarty_php()
+    {
+        $code = '';
+        for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
+            if ($key + 2 < $cnt) {
+                if ($this->subtrees[$key] instanceof _smarty_linebreak && $this->subtrees[$key + 1] instanceof _smarty_tag && $this->subtrees[$key + 1]->data == '' && $this->subtrees[$key + 2] instanceof _smarty_linebreak) {
+                    $key = $key + 1;
+                    continue;
+                }
+                if (substr($this->subtrees[$key]->data, -1) == '<' && $this->subtrees[$key + 1]->data == '' && substr($this->subtrees[$key + 2]->data, -1) == '?') {
+                    $key = $key + 2;
+                    continue;
+                }
+            }
+            if (substr($code, -1) == '<') {
+                $subtree = $this->subtrees[$key]->to_smarty_php();
+                if (substr($subtree, 0, 1) == '?') {
+                    $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>?' . substr($subtree, 1);
+                } elseif ($this->parser->asp_tags && substr($subtree, 0, 1) == '%') {
+                    $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>%' . substr($subtree, 1);
+                } else {
+                    $code .= $subtree;
+                }
+                continue;
+            }
+            if ($this->parser->asp_tags && substr($code, -1) == '%') {
+                $subtree = $this->subtrees[$key]->to_smarty_php();
+                if (substr($subtree, 0, 1) == '>') {
+                    $code = substr($code, 0, strlen($code) - 1) . '%<?php ?>>' . substr($subtree, 1);
+                } else {
+                    $code .= $subtree;
+                }
+                continue;
+            }
+            if (substr($code, -1) == '?') {
+                $subtree = $this->subtrees[$key]->to_smarty_php();
+                if (substr($subtree, 0, 1) == '>') {
+                    $code = substr($code, 0, strlen($code) - 1) . '?<?php ?>>' . substr($subtree, 1);
+                } else {
+                    $code .= $subtree;
+                }
+                continue;
+            }
+            $code .= $this->subtrees[$key]->to_smarty_php();
+        }
+        return $code;
+    }
+
+}
+
+/**
+ * template text
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_text extends _smarty_parsetree {
+
+
+    /**
+     * Create template text buffer
+     *
+     * @param object $parser    parser object
+     * @param string $data      text
+     */
+    public function __construct($parser, $data)
+    {
+        $this->parser = $parser;
+        $this->data = $data;
+    }
+
+    /**
+     * Return buffer content
+     *
+     * @return strint text
+     */
+    public function to_smarty_php()
+    {
+        return $this->data;
+    }
+
+}
+
+/**
+ * template linebreaks
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_linebreak extends _smarty_parsetree {
+
+    /**
+     * Create buffer with linebreak content
+     *
+     * @param object $parser    parser object
+     * @param string  $data     linebreak string
+     */
+    public function __construct($parser, $data)
+    {
+        $this->parser = $parser;
+        $this->data = $data;
+    }
+
+    /**
+     * Return linebrak
+     *
+     * @return string linebreak
+     */
+    public function to_smarty_php()
+    {
+        return $this->data;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_eval.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_eval.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_eval.php	(revision 25596)
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Eval
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Eval
+ *
+ * Implements the strings as resource for Smarty template
+ *
+ * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled {
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->uid = $source->filepath = sha1($source->name);
+        $source->timestamp = false;
+        $source->exists = true;
+    }
+
+    /**
+     * Load template's source from $resource_name into current template object
+     *
+     * @uses decode() to decode base64 and urlencoded template_resources
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        return $this->decode($source->name);
+    }
+    
+    /**
+     * decode base64 and urlencode
+     *
+     * @param string $string template_resource to decode
+     * @return string decoded template_resource
+     */
+    protected function decode($string)
+    {
+        // decode if specified
+        if (($pos = strpos($string, ':')) !== false) {
+            if (!strncmp($string, 'base64', 6)) {
+                return base64_decode(substr($string, 7));
+            } elseif (!strncmp($string, 'urlencode', 9)) {
+                return urldecode(substr($string, 10));
+            }
+        }
+        
+        return $string;
+    }
+    
+    /**
+     * modify resource_name according to resource handlers specifications
+     *
+     * @param Smarty $smarty        Smarty instance
+     * @param string $resource_name resource_name to make unique
+     * @return string unique resource name
+     */
+    protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+    {
+        return get_class($this) . '#' .$this->decode($resource_name);
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    protected function getBasename(Smarty_Template_Source $source)
+    {
+        return '';
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_extends.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_extends.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_extends.php	(revision 25596)
@@ -0,0 +1,162 @@
+<?php
+/**
+* Smarty Internal Plugin Resource Extends
+*
+* @package Smarty
+* @subpackage TemplateResources
+* @author Uwe Tews
+* @author Rodney Rehm
+*/
+
+/**
+* Smarty Internal Plugin Resource Extends
+*
+* Implements the file system as resource for Smarty which {extend}s a chain of template files templates
+*
+* @package Smarty
+* @subpackage TemplateResources
+*/
+class Smarty_Internal_Resource_Extends extends Smarty_Resource {
+
+    /**
+    * mbstring.overload flag
+    *
+    * @var int
+    */
+    public $mbstring_overload = 0;
+
+    /**
+    * populate Source Object with meta data from Resource
+    *
+    * @param Smarty_Template_Source   $source    source object
+    * @param Smarty_Internal_Template $_template template object
+    */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $uid = '';
+        $sources = array();
+        $components = explode('|', $source->name);
+        $exists = true;
+        foreach ($components as $component) {
+            $s = Smarty_Resource::source(null, $source->smarty, $component);
+            if ($s->type == 'php') {
+                throw new SmartyException("Resource type {$s->type} cannot be used with the extends resource type");
+            }
+            $sources[$s->uid] = $s;
+            $uid .= $s->filepath;
+            if ($_template && $_template->smarty->compile_check) {
+                $exists = $exists && $s->exists;
+            }
+        }
+        $source->components = $sources;
+        $source->filepath = $s->filepath;
+        $source->uid = sha1($uid);
+        if ($_template && $_template->smarty->compile_check) {
+            $source->timestamp = $s->timestamp;
+            $source->exists = $exists;
+        }
+        // need the template at getContent()
+        $source->template = $_template;
+    }
+
+    /**
+    * populate Source Object with timestamp and exists from Resource
+    *
+    * @param Smarty_Template_Source $source source object
+    */
+    public function populateTimestamp(Smarty_Template_Source $source)
+    {
+        $source->exists = true;
+        foreach ($source->components as $s) {
+            $source->exists = $source->exists && $s->exists;
+        }
+        $source->timestamp = $s->timestamp;
+    }
+
+    /**
+    * Load template's source from files into current template object
+    *
+    * @param Smarty_Template_Source $source source object
+    * @return string template source
+    * @throws SmartyException if source cannot be loaded
+    */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        if (!$source->exists) {
+            throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+        }
+
+        $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+        $_rdl = preg_quote($source->smarty->right_delimiter);
+        $_ldl = preg_quote($source->smarty->left_delimiter);
+        if (!$source->smarty->auto_literal) {
+            $al = '\s*';
+        } else {
+            $al = '';
+        }
+        $_components = array_reverse($source->components);
+        $_first = reset($_components);
+        $_last = end($_components);
+
+        foreach ($_components as $_component) {
+            // register dependency
+            if ($_component != $_first) {
+                $source->template->properties['file_dependency'][$_component->uid] = array($_component->filepath, $_component->timestamp, $_component->type);
+            }
+
+            // read content
+            $source->filepath = $_component->filepath;
+            $_content = $_component->content;
+
+            // extend sources
+            if ($_component != $_last) {
+                if (preg_match_all("!({$_ldl}{$al}block\s(.+?)\s*{$_rdl})!", $_content, $_open) !=
+                preg_match_all("!({$_ldl}{$al}/block\s*{$_rdl})!", $_content, $_close)) {
+                    throw new SmartyException("unmatched {block} {/block} pairs in template {$_component->type} '{$_component->name}'");
+                }
+                preg_match_all("!{$_ldl}{$al}block\s(.+?)\s*{$_rdl}|{$_ldl}{$al}/block\s*{$_rdl}|{$_ldl}\*([\S\s]*?)\*{$_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+                $_result_count = count($_result[0]);
+                $_start = 0;
+                while ($_start+1 < $_result_count) {
+                    $_end = 0;
+                    $_level = 1;
+                    if (($this->mbstring_overload ? mb_substr($_result[0][$_start][0],0,mb_strlen($source->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start][0],0,strlen($source->smarty->left_delimiter)+1)) == $source->smarty->left_delimiter.'*') {
+                        $_start++;
+                        continue;
+                    }
+                    while ($_level != 0) {
+                        $_end++;
+                        if (($this->mbstring_overload ? mb_substr($_result[0][$_start + $_end][0],0,mb_strlen($source->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start + $_end][0],0,strlen($source->smarty->left_delimiter)+1)) == $source->smarty->left_delimiter.'*') {
+                            continue;
+                        }
+                        if (!strpos($_result[0][$_start + $_end][0], '/')) {
+                            $_level++;
+                        } else {
+                            $_level--;
+                        }
+                    }
+                    $_block_content = str_replace($source->smarty->left_delimiter . '$smarty.block.parent' . $source->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%',
+                    ($this->mbstring_overload ? mb_substr($_content, $_result[0][$_start][1] + mb_strlen($_result[0][$_start][0], 'latin1'), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + mb_strlen($_result[0][$_start][0], 'latin1'), 'latin1') : substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))));
+                    Smarty_Internal_Compile_Block::saveBlockData($_block_content, $_result[0][$_start][0], $source->template, $_component->filepath);
+                    $_start = $_start + $_end + 1;
+                }
+            } else {
+                return $_content;
+            }
+        }
+    }
+
+    /**
+    * Determine basename for compiled filename
+    *
+    * @param Smarty_Template_Source $source source object
+    * @return string resource's basename
+    */
+    public function getBasename(Smarty_Template_Source $source)
+    {
+        return str_replace(':', '.', basename($source->filepath));
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_file.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_file.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_file.php	(revision 25596)
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource File
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource File
+ *
+ * Implements the file system as resource for Smarty templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_File extends Smarty_Resource {
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->filepath = $this->buildFilepath($source, $_template);
+
+        if ($source->filepath !== false) {
+            if (is_object($source->smarty->security_policy)) {
+                $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
+            }
+
+            $source->uid = sha1($source->filepath);
+            if ($source->smarty->compile_check && !isset($source->timestamp)) {
+                $source->timestamp = @filemtime($source->filepath);
+                $source->exists = !!$source->timestamp;
+            }
+        }
+    }
+
+    /**
+     * populate Source Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Source $source source object
+     */
+    public function populateTimestamp(Smarty_Template_Source $source)
+    {
+        $source->timestamp = @filemtime($source->filepath);
+        $source->exists = !!$source->timestamp;
+    }
+
+    /**
+     * Load template's source from file into current template object
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     * @throws SmartyException if source cannot be loaded
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        if ($source->timestamp) {
+            return file_get_contents($source->filepath);
+        }
+        if ($source instanceof Smarty_Config_Source) {
+            throw new SmartyException("Unable to read config {$source->type} '{$source->name}'");
+        }
+        throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    public function getBasename(Smarty_Template_Source $source)
+    {
+        $_file = $source->name;
+        if (($_pos = strpos($_file, ']')) !== false) {
+            $_file = substr($_file, $_pos + 1);
+        }
+        return basename($_file);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_php.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_php.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_php.php	(revision 25596)
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Resource PHP
+ *
+ * Implements the file system as resource for PHP templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
+    /**
+     * container for short_open_tag directive's value before executing PHP templates
+     * @var string
+     */
+    protected $short_open_tag;
+
+    /**
+     * Create a new PHP Resource
+     *
+     */
+    public function __construct()
+    {
+        $this->short_open_tag = ini_get( 'short_open_tag' );
+    }
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source $source source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->filepath = $this->buildFilepath($source, $_template);
+
+        if ($source->filepath !== false) {
+            if (is_object($source->smarty->security_policy)) {
+                $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
+            }
+
+            $source->uid = sha1($source->filepath);
+            if ($source->smarty->compile_check) {
+                $source->timestamp = @filemtime($source->filepath);
+                $source->exists = !!$source->timestamp;
+            }
+        }
+    }
+
+    /**
+     * populate Source Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return void
+     */
+    public function populateTimestamp(Smarty_Template_Source $source)
+    {
+        $source->timestamp = @filemtime($source->filepath);
+        $source->exists = !!$source->timestamp;
+    }
+
+    /**
+     * Load template's source from file into current template object
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     * @throws SmartyException if source cannot be loaded
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        if ($source->timestamp) {
+            return '';
+        }
+        throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+    }
+
+    /**
+     * Render and output the template (without using the compiler)
+     *
+     * @param Smarty_Template_Source $source source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
+     */
+    public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+    {
+        $_smarty_template = $_template;
+
+        if (!$source->smarty->allow_php_templates) {
+            throw new SmartyException("PHP templates are disabled");
+        }
+        if (!$source->exists) {
+            if ($_template->parent instanceof Smarty_Internal_Template) {
+                $parent_resource = " in '{$_template->parent->template_resource}'";
+            } else {
+                $parent_resource = '';
+            }
+            throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
+        }
+
+        // prepare variables
+        extract($_template->getTemplateVars());
+
+        // include PHP template with short open tags enabled
+        ini_set( 'short_open_tag', '1' );
+        include($source->filepath);
+        ini_set( 'short_open_tag', $this->short_open_tag );
+    }
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_registered.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_registered.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_registered.php	(revision 25596)
@@ -0,0 +1,95 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource Registered
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Registered
+ *
+ * Implements the registered resource for Smarty template
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @deprecated
+ */
+class Smarty_Internal_Resource_Registered extends Smarty_Resource {
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->filepath = $source->type . ':' . $source->name;
+        $source->uid = sha1($source->filepath);
+        if ($source->smarty->compile_check) {
+            $source->timestamp = $this->getTemplateTimestamp($source);
+            $source->exists = !!$source->timestamp;
+        }
+    }
+
+    /**
+     * populate Source Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return void
+     */
+    public function populateTimestamp(Smarty_Template_Source $source)
+    {
+        $source->timestamp = $this->getTemplateTimestamp($source);
+        $source->exists = !!$source->timestamp;
+    }
+
+    /**
+     * Get timestamp (epoch) the template source was modified
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
+     */
+    public function getTemplateTimestamp(Smarty_Template_Source $source)
+    {
+        // return timestamp
+        $time_stamp = false;
+        call_user_func_array($source->smarty->registered_resources[$source->type][0][1], array($source->name, &$time_stamp, $source->smarty));
+        return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
+    }
+
+    /**
+     * Load template's source by invoking the registered callback into current template object
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     * @throws SmartyException if source cannot be loaded
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        // return template string
+        $t = call_user_func_array($source->smarty->registered_resources[$source->type][0][0], array($source->name, &$source->content, $source->smarty));
+        if (is_bool($t) && !$t) {
+            throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+        }
+        return $source->content;
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    protected function getBasename(Smarty_Template_Source $source)
+    {
+        return basename($source->name);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_stream.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_stream.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_stream.php	(revision 25596)
@@ -0,0 +1,78 @@
+<?php
+/**
+* Smarty Internal Plugin Resource Stream
+*
+* Implements the streams as resource for Smarty template
+*
+* @package Smarty
+* @subpackage TemplateResources
+* @author Uwe Tews
+* @author Rodney Rehm
+*/
+
+/**
+* Smarty Internal Plugin Resource Stream
+*
+* Implements the streams as resource for Smarty template
+*
+* @link http://php.net/streams
+* @package Smarty
+* @subpackage TemplateResources
+*/
+class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled {
+
+    /**
+    * populate Source Object with meta data from Resource
+    *
+    * @param Smarty_Template_Source   $source    source object
+    * @param Smarty_Internal_Template $_template template object
+    * @return void
+    */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        if(strpos($source->resource, '://') !== false) {
+            $source->filepath = $source->resource;
+        } else {
+            $source->filepath = str_replace(':', '://', $source->resource);
+        }
+        $source->uid = false;
+        $source->content = $this->getContent($source);
+        $source->timestamp = false;
+        $source->exists = !!$source->content;
+    }
+
+    /**
+    * Load template's source from stream into current template object
+    *
+    * @param Smarty_Template_Source $source source object
+    * @return string template source
+    * @throws SmartyException if source cannot be loaded
+    */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        $t = '';
+        // the availability of the stream has already been checked in Smarty_Resource::fetch()
+        $fp = fopen($source->filepath, 'r+');
+        if ($fp) {
+            while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+                $t .= $current_line;
+            }
+            fclose($fp);
+            return $t;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+    * modify resource_name according to resource handlers specifications
+    *
+    * @param Smarty $smarty        Smarty instance
+    * @param string $resource_name resource_name to make unique
+    * @return string unique resource name
+    */
+    protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+    {
+        return get_class($this) . '#' . $resource_name;
+    }
+}
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_string.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_string.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_resource_string.php	(revision 25596)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Smarty Internal Plugin Resource String
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource String
+ *
+ * Implements the strings as resource for Smarty template
+ *
+ * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_String extends Smarty_Resource {
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->uid = $source->filepath = sha1($source->name);
+        $source->timestamp = 0;
+        $source->exists = true;
+    }
+
+    /**
+     * Load template's source from $resource_name into current template object
+     *
+     * @uses decode() to decode base64 and urlencoded template_resources
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        return $this->decode($source->name);
+    }
+    
+    /**
+     * decode base64 and urlencode
+     *
+     * @param string $string template_resource to decode
+     * @return string decoded template_resource
+     */
+    protected function decode($string)
+    {
+        // decode if specified
+        if (($pos = strpos($string, ':')) !== false) {
+            if (!strncmp($string, 'base64', 6)) {
+                return base64_decode(substr($string, 7));
+            } elseif (!strncmp($string, 'urlencode', 9)) {
+                return urldecode(substr($string, 10));
+            }
+        }
+        
+        return $string;
+    }
+    
+    /**
+     * modify resource_name according to resource handlers specifications
+     *
+     * @param Smarty $smarty        Smarty instance
+     * @param string $resource_name resource_name to make unique
+     * @return string unique resource name
+     */
+    protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+    {
+        return get_class($this) . '#' .$this->decode($resource_name);
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * Always returns an empty string.
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    protected function getBasename(Smarty_Template_Source $source)
+    {
+        return '';
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php	(revision 25596)
@@ -0,0 +1,127 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ *
+ * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * @ignore
+ */
+include ("smarty_internal_parsetree.php");
+
+/**
+ * Class SmartyTemplateCompiler
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase {
+
+    /**
+     * Lexer class name
+     *
+     * @var string
+     */
+    public $lexer_class;
+
+    /**
+     * Parser class name
+     *
+     * @var string
+     */
+    public $parser_class;
+
+    /**
+     * Lexer object
+     *
+     * @var object
+     */
+    public $lex;
+
+    /**
+     * Parser object
+     *
+     * @var object
+     */
+    public $parser;
+
+    /**
+     * Smarty object
+     *
+     * @var object
+     */
+    public $smarty;
+
+    /**
+     * array of vars which can be compiled in local scope
+     *
+     * @var array
+     */
+    public $local_var = array();
+
+    /**
+     * Initialize compiler
+     *
+     * @param string $lexer_class  class name
+     * @param string $parser_class class name
+     * @param Smarty $smarty       global instance
+     */
+    public function __construct($lexer_class, $parser_class, $smarty)
+    {
+        $this->smarty = $smarty;
+        parent::__construct();
+        // get required plugins
+        $this->lexer_class = $lexer_class;
+        $this->parser_class = $parser_class;
+    }
+
+    /**
+     * Methode to compile a Smarty template
+     *
+     * @param  mixed $_content template source
+     * @return bool true if compiling succeeded, false if it failed
+     */
+    protected function doCompile($_content)
+    {
+        /* here is where the compiling takes place. Smarty
+          tags in the templates are replaces with PHP code,
+          then written to compiled files. */
+        // init the lexer/parser to compile the template
+        $this->lex = new $this->lexer_class($_content, $this);
+        $this->parser = new $this->parser_class($this->lex, $this);
+        if ($this->smarty->_parserdebug)
+            $this->parser->PrintTrace();
+        // get tokens from lexer and parse them
+        while ($this->lex->yylex() && !$this->abort_and_recompile) {
+            if ($this->smarty->_parserdebug) {
+                echo "<pre>Line {$this->lex->line} Parsing  {$this->parser->yyTokenName[$this->lex->token]} Token " .
+                    htmlentities($this->lex->value) . "</pre>";
+            }
+            $this->parser->doParse($this->lex->token, $this->lex->value);
+        }
+
+        if ($this->abort_and_recompile) {
+            // exit here on abort
+            return false;
+        }
+        // finish parsing process
+        $this->parser->doParse(0, 0);
+        // check for unclosed tags
+        if (count($this->_tag_stack) > 0) {
+            // get stacked info
+            list($openTag, $_data) = array_pop($this->_tag_stack);
+            $this->trigger_template_error("unclosed {" . $openTag . "} tag");
+        }
+        // return compiled code
+        // return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
+        return $this->parser->retvalue;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_template.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_template.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_template.php	(revision 25596)
@@ -0,0 +1,692 @@
+<?php
+/**
+ * Smarty Internal Plugin Template
+ *
+ * This file contains the Smarty template engine
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Main class with template data structures and methods
+ *
+ * @package Smarty
+ * @subpackage Template
+ *
+ * @property Smarty_Template_Source   $source
+ * @property Smarty_Template_Compiled $compiled
+ * @property Smarty_Template_Cached   $cached
+ */
+class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
+
+    /**
+     * cache_id
+     * @var string
+     */
+    public $cache_id = null;
+    /**
+     * $compile_id
+     * @var string
+     */
+    public $compile_id = null;
+    /**
+     * caching enabled
+     * @var boolean
+     */
+    public $caching = null;
+    /**
+     * cache lifetime in seconds
+     * @var integer
+     */
+    public $cache_lifetime = null;
+    /**
+     * Template resource
+     * @var string
+     */
+    public $template_resource = null;
+    /**
+     * flag if compiled template is invalid and must be (re)compiled
+     * @var bool
+     */
+    public $mustCompile = null;
+    /**
+     * flag if template does contain nocache code sections
+     * @var bool
+     */
+    public $has_nocache_code = false;
+    /**
+     * special compiled and cached template properties
+     * @var array
+     */
+    public $properties = array('file_dependency' => array(),
+        'nocache_hash' => '',
+        'function' => array());
+    /**
+     * required plugins
+     * @var array
+     */
+    public $required_plugins = array('compiled' => array(), 'nocache' => array());
+    /**
+     * Global smarty instance
+     * @var Smarty
+     */
+    public $smarty = null;
+    /**
+     * blocks for template inheritance
+     * @var array
+     */
+    public $block_data = array();
+    /**
+     * variable filters
+     * @var array
+     */
+    public $variable_filters = array();
+    /**
+     * optional log of tag/attributes
+     * @var array
+     */
+    public $used_tags = array();
+    /**
+     * internal flag to allow relative path in child template blocks
+     * @var bool
+     */
+    public $allow_relative_path = false;
+    /**
+     * internal capture runtime stack
+     * @var array
+     */
+    public $_capture_stack = array(0 => array());
+
+    /**
+     * Create template data object
+     *
+     * Some of the global Smarty settings copied to template scope
+     * It load the required template resources and cacher plugins
+     *
+     * @param string                   $template_resource template resource string
+     * @param Smarty                   $smarty            Smarty instance
+     * @param Smarty_Internal_Template $_parent           back pointer to parent object with variables or null
+     * @param mixed                    $_cache_id cache   id or null
+     * @param mixed                    $_compile_id       compile id or null
+     * @param bool                     $_caching          use caching?
+     * @param int                      $_cache_lifetime   cache life-time in seconds
+     */
+    public function __construct($template_resource, $smarty, $_parent = null, $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null)
+    {
+        $this->smarty = &$smarty;
+        // Smarty parameter
+        $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
+        $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
+        $this->caching = $_caching === null ? $this->smarty->caching : $_caching;
+        if ($this->caching === true)
+            $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+        $this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
+        $this->parent = $_parent;
+        // Template resource
+        $this->template_resource = $template_resource;
+        // copy block data of template inheritance
+        if ($this->parent instanceof Smarty_Internal_Template) {
+            $this->block_data = $this->parent->block_data;
+        }
+    }
+
+    /**
+     * Returns if the current template must be compiled by the Smarty compiler
+     *
+     * It does compare the timestamps of template source and the compiled templates and checks the force compile configuration
+     *
+     * @return boolean true if the template must be compiled
+     */
+    public function mustCompile()
+    {
+        if (!$this->source->exists) {
+            if ($this->parent instanceof Smarty_Internal_Template) {
+                $parent_resource = " in '$this->parent->template_resource}'";
+            } else {
+                $parent_resource = '';
+            }
+            throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'{$parent_resource}");
+        }
+        if ($this->mustCompile === null) {
+            $this->mustCompile = (!$this->source->uncompiled && ($this->smarty->force_compile || $this->source->recompiled || $this->compiled->timestamp === false ||
+                    ($this->smarty->compile_check && $this->compiled->timestamp < $this->source->timestamp)));
+        }
+        return $this->mustCompile;
+    }
+
+    /**
+     * Compiles the template
+     *
+     * If the template is not evaluated the compiled template is saved on disk
+     */
+    public function compileTemplateSource()
+    {
+        if (!$this->source->recompiled) {
+            $this->properties['file_dependency'] = array();
+            if ($this->source->components) {
+                // uses real resource for file dependency
+                $source = end($this->source->components);
+                $this->properties['file_dependency'][$this->source->uid] = array($this->source->filepath, $this->source->timestamp, $source->type);
+            } else {
+                $this->properties['file_dependency'][$this->source->uid] = array($this->source->filepath, $this->source->timestamp, $this->source->type);
+            }
+        }
+        if ($this->smarty->debugging) {
+            Smarty_Internal_Debug::start_compile($this);
+        }
+        // compile locking
+        if ($this->smarty->compile_locking && !$this->source->recompiled) {
+            if ($saved_timestamp = $this->compiled->timestamp) {
+                touch($this->compiled->filepath);
+            }
+        }
+        // call compiler
+        try {
+            $code = $this->compiler->compileTemplate($this);
+        } catch (Exception $e) {
+            // restore old timestamp in case of error
+            if ($this->smarty->compile_locking && !$this->source->recompiled && $saved_timestamp) {
+                touch($this->compiled->filepath, $saved_timestamp);
+            }
+            throw $e;
+        }
+        // compiling succeded
+        if (!$this->source->recompiled && $this->compiler->write_compiled_code) {
+            // write compiled template
+            $_filepath = $this->compiled->filepath;
+            if ($_filepath === false)
+                throw new SmartyException('getCompiledFilepath() did not return a destination to save the compiled template to');
+            Smarty_Internal_Write_File::writeFile($_filepath, $code, $this->smarty);
+            $this->compiled->exists = true;
+            $this->compiled->isCompiled = true;
+        }
+        if ($this->smarty->debugging) {
+            Smarty_Internal_Debug::end_compile($this);
+        }
+        // release compiler object to free memory
+        unset($this->compiler);
+    }
+
+    /**
+     * Writes the cached template output
+     *
+     * @return bool
+     */
+    public function writeCachedContent($content)
+    {
+        if ($this->source->recompiled || !($this->caching == Smarty::CACHING_LIFETIME_CURRENT || $this->caching == Smarty::CACHING_LIFETIME_SAVED)) {
+            // don't write cache file
+            return false;
+        }
+        $this->properties['cache_lifetime'] = $this->cache_lifetime;
+        $this->properties['unifunc'] = 'content_' . str_replace('.', '_', uniqid('', true));
+        $content = $this->createTemplateCodeFrame($content, true);
+        $_smarty_tpl = $this;
+        eval("?>" . $content);
+        $this->cached->valid = true;
+        $this->cached->processed = true;
+        return $this->cached->write($this, $content);
+    }
+
+    /**
+     * Template code runtime function to get subtemplate content
+     *
+     * @param string  $template       the resource handle of the template file
+     * @param mixed   $cache_id       cache id to be used with this template
+     * @param mixed   $compile_id     compile id to be used with this template
+     * @param integer $caching        cache mode
+     * @param integer $cache_lifetime life time of cache data
+     * @param array   $vars optional  variables to assign
+     * @param int     $parent_scope   scope in which {include} should execute
+     * @returns string template content
+     */
+    public function getSubTemplate($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $parent_scope)
+    {
+        // already in template cache?
+        if ($this->smarty->allow_ambiguous_resources) {
+            $_templateId = Smarty_Resource::getUniqueTemplateName($this->smarty, $template) . $cache_id . $compile_id;
+        } else {
+            $_templateId = $this->smarty->joined_template_dir . '#' . $template . $cache_id . $compile_id;
+        }
+
+        if (isset($_templateId[150])) {
+            $_templateId = sha1($_templateId);
+        }
+        if (isset($this->smarty->template_objects[$_templateId])) {
+            // clone cached template object because of possible recursive call
+            $tpl = clone $this->smarty->template_objects[$_templateId];
+            $tpl->parent = $this;
+            $tpl->caching = $caching;
+            $tpl->cache_lifetime = $cache_lifetime;
+        } else {
+            $tpl = new $this->smarty->template_class($template, $this->smarty, $this, $cache_id, $compile_id, $caching, $cache_lifetime);
+        }
+        // get variables from calling scope
+        if ($parent_scope == Smarty::SCOPE_LOCAL) {
+            $tpl->tpl_vars = $this->tpl_vars;
+            $tpl->tpl_vars['smarty'] = clone $this->tpl_vars['smarty'];
+        } elseif ($parent_scope == Smarty::SCOPE_PARENT) {
+            $tpl->tpl_vars = &$this->tpl_vars;
+        } elseif ($parent_scope == Smarty::SCOPE_GLOBAL) {
+            $tpl->tpl_vars = &Smarty::$global_tpl_vars;
+        } elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
+            $tpl->tpl_vars = &$this->tpl_vars;
+        } else {
+            $tpl->tpl_vars = &$scope_ptr->tpl_vars;
+        }
+        $tpl->config_vars = $this->config_vars;
+        if (!empty($data)) {
+            // set up variable values
+            foreach ($data as $_key => $_val) {
+                $tpl->tpl_vars[$_key] = new Smarty_variable($_val);
+            }
+        }
+        return $tpl->fetch(null, null, null, null, false, false, true);
+    }
+
+    /**
+     * Template code runtime function to set up an inline subtemplate
+     *
+     * @param string  $template       the resource handle of the template file
+     * @param mixed   $cache_id       cache id to be used with this template
+     * @param mixed   $compile_id     compile id to be used with this template
+     * @param integer $caching        cache mode
+     * @param integer $cache_lifetime life time of cache data
+     * @param array   $vars optional  variables to assign
+     * @param int     $parent_scope   scope in which {include} should execute
+     * @param string  $hash           nocache hash code
+     * @returns string template content
+     */
+    public function setupInlineSubTemplate($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $parent_scope, $hash)
+    {
+        $tpl = new $this->smarty->template_class($template, $this->smarty, $this, $cache_id, $compile_id, $caching, $cache_lifetime);
+        $tpl->properties['nocache_hash']  = $hash;
+        // get variables from calling scope
+        if ($parent_scope == Smarty::SCOPE_LOCAL ) {
+            $tpl->tpl_vars = $this->tpl_vars;
+            $tpl->tpl_vars['smarty'] = clone $this->tpl_vars['smarty'];
+        } elseif ($parent_scope == Smarty::SCOPE_PARENT) {
+            $tpl->tpl_vars = &$this->tpl_vars;
+        } elseif ($parent_scope == Smarty::SCOPE_GLOBAL) {
+            $tpl->tpl_vars = &Smarty::$global_tpl_vars;
+        } elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
+            $tpl->tpl_vars = &$this->tpl_vars;
+        } else {
+            $tpl->tpl_vars = &$scope_ptr->tpl_vars;
+        }
+        $tpl->config_vars = $this->config_vars;
+        if (!empty($data)) {
+            // set up variable values
+            foreach ($data as $_key => $_val) {
+                $tpl->tpl_vars[$_key] = new Smarty_variable($_val);
+            }
+        }
+        return $tpl;
+    }
+
+
+    /**
+     * Create code frame for compiled and cached templates
+     *
+     * @param string $content   optional template content
+     * @param bool   $cache     flag for cache file
+     * @return string
+     */
+    public function createTemplateCodeFrame($content = '', $cache = false)
+    {
+        $plugins_string = '';
+        // include code for plugins
+        if (!$cache) {
+            if (!empty($this->required_plugins['compiled'])) {
+                $plugins_string = '<?php ';
+                foreach ($this->required_plugins['compiled'] as $tmp) {
+                    foreach ($tmp as $data) {
+                        $file = addslashes($data['file']);
+                        if (is_Array($data['function'])){
+                            $plugins_string .= "if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n";
+                        } else {
+                            $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$file}';\n";
+                        }
+                    }
+                }
+                $plugins_string .= '?>';
+            }
+            if (!empty($this->required_plugins['nocache'])) {
+                $this->has_nocache_code = true;
+                $plugins_string .= "<?php echo '/*%%SmartyNocache:{$this->properties['nocache_hash']}%%*/<?php \$_smarty = \$_smarty_tpl->smarty; ";
+                foreach ($this->required_plugins['nocache'] as $tmp) {
+                    foreach ($tmp as $data) {
+                        $file = addslashes($data['file']);
+                        if (is_Array($data['function'])){
+                            $plugins_string .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n");
+                        } else {
+                            $plugins_string .= addslashes("if (!is_callable('{$data['function']}')) include '{$file}';\n");
+                        }
+                    }
+                }
+                $plugins_string .= "?>/*/%%SmartyNocache:{$this->properties['nocache_hash']}%%*/';?>\n";
+            }
+        }
+        // build property code
+        $this->properties['has_nocache_code'] = $this->has_nocache_code;
+        $output = '';
+        if (!$this->source->recompiled) {
+            $output = "<?php /*%%SmartyHeaderCode:{$this->properties['nocache_hash']}%%*/";
+            if ($this->smarty->direct_access_security) {
+                $output .= "if(!defined('SMARTY_DIR')) exit('no direct access allowed');\n";
+            }
+        }
+        if ($cache) {
+            // remove compiled code of{function} definition
+            unset($this->properties['function']);
+            if (!empty($this->smarty->template_functions)) {
+                // copy code of {function} tags called in nocache mode
+                foreach ($this->smarty->template_functions as $name => $function_data) {
+                    if (isset($function_data['called_nocache'])) {
+                        foreach ($function_data['called_functions'] as $func_name) {
+                            $this->smarty->template_functions[$func_name]['called_nocache'] = true;
+                        }
+                    }
+                }
+                 foreach ($this->smarty->template_functions as $name => $function_data) {
+                    if (isset($function_data['called_nocache'])) {
+                        unset($function_data['called_nocache'], $function_data['called_functions'], $this->smarty->template_functions[$name]['called_nocache']);
+                        $this->properties['function'][$name] = $function_data;
+                    }
+                }
+            }
+        }
+        $this->properties['version'] = Smarty::SMARTY_VERSION;
+        if (!isset($this->properties['unifunc'])) {
+            $this->properties['unifunc'] = 'content_' . str_replace('.', '_', uniqid('', true));
+        }
+        if (!$this->source->recompiled) {
+            $output .= "\$_valid = \$_smarty_tpl->decodeProperties(" . var_export($this->properties, true) . ',' . ($cache ? 'true' : 'false') . "); /*/%%SmartyHeaderCode%%*/?>\n";
+            $output .= '<?php if ($_valid && !is_callable(\'' . $this->properties['unifunc'] . '\')) {function ' . $this->properties['unifunc'] . '($_smarty_tpl) {?>';
+        }
+        $output .= $plugins_string;
+        $output .= $content;
+        if (!$this->source->recompiled) {
+            $output .= '<?php }} ?>';
+        }
+        return $output;
+    }
+
+    /**
+     * This function is executed automatically when a compiled or cached template file is included
+     *
+     * - Decode saved properties from compiled template and cache files
+     * - Check if compiled or cache file is valid
+     *
+     * @param array $properties     special template properties
+     * @param bool  $cache          flag if called from cache file
+     * @return bool                 flag if compiled or cache file is valid
+     */
+    public function decodeProperties($properties, $cache = false)
+    {
+        $this->has_nocache_code = $properties['has_nocache_code'];
+        $this->properties['nocache_hash'] = $properties['nocache_hash'];
+        if (isset($properties['cache_lifetime'])) {
+            $this->properties['cache_lifetime'] = $properties['cache_lifetime'];
+        }
+        if (isset($properties['file_dependency'])) {
+            $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $properties['file_dependency']);
+        }
+        if (!empty($properties['function'])) {
+            $this->properties['function'] = array_merge($this->properties['function'], $properties['function']);
+            $this->smarty->template_functions = array_merge($this->smarty->template_functions, $properties['function']);
+        }
+        $this->properties['version'] = (isset($properties['version'])) ? $properties['version'] : '';
+        $this->properties['unifunc'] = $properties['unifunc'];
+        // check file dependencies at compiled code
+        $is_valid = true;
+        if ($this->properties['version'] != Smarty::SMARTY_VERSION) {
+            $is_valid = false;
+        } else if (((!$cache && $this->smarty->compile_check && empty($this->compiled->_properties) && !$this->compiled->isCompiled) || $cache && ($this->smarty->compile_check === true || $this->smarty->compile_check === Smarty::COMPILECHECK_ON)) && !empty($this->properties['file_dependency'])) {
+            foreach ($this->properties['file_dependency'] as $_file_to_check) {
+                if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'php') {
+                    if ($this->source->filepath == $_file_to_check[0] && isset($this->source->timestamp)) {
+                        // do not recheck current template
+                        $mtime = $this->source->timestamp;
+                    } else {
+                        // file and php types can be checked without loading the respective resource handlers
+                        $mtime = @filemtime($_file_to_check[0]);
+                    }
+                } elseif ($_file_to_check[2] == 'string') {
+                    continue;
+                } else {
+                    $source = Smarty_Resource::source(null, $this->smarty, $_file_to_check[0]);
+                    $mtime = $source->timestamp;
+                }
+                if (!$mtime || $mtime > $_file_to_check[1]) {
+                    $is_valid = false;
+                    break;
+                }
+            }
+        }
+        if ($cache) {
+            $this->cached->valid = $is_valid;
+        } else {
+            $this->mustCompile = !$is_valid;
+        }
+        // store data in reusable Smarty_Template_Compiled
+        if (!$cache) {
+            $this->compiled->_properties = $properties;
+        }
+        return $is_valid;
+    }
+
+    /**
+     * Template code runtime function to create a local Smarty variable for array assignments
+     *
+     * @param string $tpl_var   tempate variable name
+     * @param bool   $nocache   cache mode of variable
+     * @param int    $scope     scope of variable
+     */
+    public function createLocalArrayVariable($tpl_var, $nocache = false, $scope = Smarty::SCOPE_LOCAL)
+    {
+        if (!isset($this->tpl_vars[$tpl_var])) {
+            $this->tpl_vars[$tpl_var] = new Smarty_variable(array(), $nocache, $scope);
+        } else {
+            $this->tpl_vars[$tpl_var] = clone $this->tpl_vars[$tpl_var];
+            if ($scope != Smarty::SCOPE_LOCAL) {
+                $this->tpl_vars[$tpl_var]->scope = $scope;
+            }
+            if (!(is_array($this->tpl_vars[$tpl_var]->value) || $this->tpl_vars[$tpl_var]->value instanceof ArrayAccess)) {
+                settype($this->tpl_vars[$tpl_var]->value, 'array');
+            }
+        }
+    }
+
+    /**
+     * Template code runtime function to get pointer to template variable array of requested scope
+     *
+     * @param int $scope    requested variable scope
+     * @return array        array of template variables
+     */
+    public function &getScope($scope)
+    {
+        if ($scope == Smarty::SCOPE_PARENT && !empty($this->parent)) {
+            return $this->parent->tpl_vars;
+        } elseif ($scope == Smarty::SCOPE_ROOT && !empty($this->parent)) {
+            $ptr = $this->parent;
+            while (!empty($ptr->parent)) {
+                $ptr = $ptr->parent;
+            }
+            return $ptr->tpl_vars;
+        } elseif ($scope == Smarty::SCOPE_GLOBAL) {
+            return Smarty::$global_tpl_vars;
+        }
+        $null = null;
+        return $null;
+    }
+
+    /**
+     * Get parent or root of template parent chain
+     *
+     * @param int $scope    pqrent or root scope
+     * @return mixed object
+     */
+    public function getScopePointer($scope)
+    {
+        if ($scope == Smarty::SCOPE_PARENT && !empty($this->parent)) {
+            return $this->parent;
+        } elseif ($scope == Smarty::SCOPE_ROOT && !empty($this->parent)) {
+            $ptr = $this->parent;
+            while (!empty($ptr->parent)) {
+                $ptr = $ptr->parent;
+            }
+            return $ptr;
+        }
+        return null;
+    }
+
+    /**
+     * [util function] counts an array, arrayaccess/traversable or PDOStatement object
+     *
+     * @param mixed $value
+     * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 for empty elements
+     */
+    public function _count($value)
+    {
+        if (is_array($value) === true || $value instanceof Countable) {
+            return count($value);
+        } elseif ($value instanceof IteratorAggregate) {
+            // Note: getIterator() returns a Traversable, not an Iterator
+            // thus rewind() and valid() methods may not be present
+            return iterator_count($value->getIterator());
+        } elseif ($value instanceof Iterator) {
+            return iterator_count($value);
+        } elseif ($value instanceof PDOStatement) {
+            return $value->rowCount();
+        } elseif ($value instanceof Traversable) {
+            return iterator_count($value);
+        } elseif ($value instanceof ArrayAccess) {
+            if ($value->offsetExists(0)) {
+                return 1;
+            }
+        } elseif (is_object($value)) {
+            return count($value);
+        }
+        return 0;
+    }
+
+    /**
+     * runtime error not matching capture tags
+     *
+     */
+    public function capture_error()
+    {
+        throw new SmartyException("Not matching {capture} open/close in \"{$this->template_resource}\"");
+    }
+
+    /**
+    * Empty cache for this template
+    *
+    * @param integer $exp_time      expiration time
+    * @return integer number of cache files deleted
+    */
+    public function clearCache($exp_time=null)
+    {
+        Smarty_CacheResource::invalidLoadedCache($this->smarty);
+        return $this->cached->handler->clear($this->smarty, $this->template_name, $this->cache_id, $this->compile_id, $exp_time);
+    }
+
+     /**
+     * set Smarty property in template context
+     *
+     * @param string $property_name property name
+     * @param mixed  $value         value
+     */
+    public function __set($property_name, $value)
+    {
+        switch ($property_name) {
+            case 'source':
+            case 'compiled':
+            case 'cached':
+            case 'compiler':
+                $this->$property_name = $value;
+                return;
+
+            // FIXME: routing of template -> smarty attributes
+            default:
+                if (property_exists($this->smarty, $property_name)) {
+                    $this->smarty->$property_name = $value;
+                    return;
+                }
+        }
+
+        throw new SmartyException("invalid template property '$property_name'.");
+    }
+
+    /**
+     * get Smarty property in template context
+     *
+     * @param string $property_name property name
+     */
+    public function __get($property_name)
+    {
+        switch ($property_name) {
+            case 'source':
+                if (strlen($this->template_resource) == 0) {
+                    throw new SmartyException('Missing template name');
+                }
+                $this->source = Smarty_Resource::source($this);
+                // cache template object under a unique ID
+                // do not cache eval resources
+                if ($this->source->type != 'eval') {
+                    if ($this->smarty->allow_ambiguous_resources) {
+                        $_templateId = $this->source->unique_resource . $this->cache_id . $this->compile_id;
+                    } else {
+                        $_templateId = $this->smarty->joined_template_dir . '#' . $this->template_resource . $this->cache_id . $this->compile_id;
+                    }
+
+                    if (isset($_templateId[150])) {
+                        $_templateId = sha1($_templateId);
+                    }
+                    $this->smarty->template_objects[$_templateId] = $this;
+                }
+                return $this->source;
+
+            case 'compiled':
+                $this->compiled = $this->source->getCompiled($this);
+                return $this->compiled;
+
+            case 'cached':
+                if (!class_exists('Smarty_Template_Cached')) {
+                    include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
+                }
+                $this->cached = new Smarty_Template_Cached($this);
+                return $this->cached;
+
+            case 'compiler':
+                $this->smarty->loadPlugin($this->source->compiler_class);
+                $this->compiler = new $this->source->compiler_class($this->source->template_lexer_class, $this->source->template_parser_class, $this->smarty);
+                return $this->compiler;
+
+            // FIXME: routing of template -> smarty attributes
+            default:
+                if (property_exists($this->smarty, $property_name)) {
+                    return $this->smarty->$property_name;
+                }
+        }
+
+        throw new SmartyException("template property '$property_name' does not exist.");
+    }
+
+    /**
+     * Template data object destrutor
+     *
+     */
+    public function __destruct()
+    {
+        if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) {
+            $this->cached->handler->releaseLock($this->smarty, $this->cached);
+        }
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatebase.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatebase.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatebase.php	(revision 25596)
@@ -0,0 +1,811 @@
+<?php
+/**
+ * Smarty Internal Plugin Smarty Template  Base
+ *
+ * This file contains the basic shared methodes for template handling
+ *
+ * @package Smarty
+ * @subpackage Template
+ * @author Uwe Tews
+ */
+
+/**
+ * Class with shared template methodes
+ *
+ * @package Smarty
+ * @subpackage Template
+ */
+abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
+
+    /**
+     * fetches a rendered Smarty template
+     *
+     * @param string $template          the resource handle of the template file or template object
+     * @param mixed  $cache_id          cache id to be used with this template
+     * @param mixed  $compile_id        compile id to be used with this template
+     * @param object $parent            next higher level of Smarty variables
+     * @param bool   $display           true: display, false: fetch
+     * @param bool   $merge_tpl_vars    if true parent template variables merged in to local scope
+     * @param bool   $no_output_filter  if true do not run output filter
+     * @return string rendered template output
+     */
+    public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null, $display = false, $merge_tpl_vars = true, $no_output_filter = false)
+    {
+        if ($template === null && $this instanceof $this->template_class) {
+            $template = $this;
+        }
+        if (!empty($cache_id) && is_object($cache_id)) {
+            $parent = $cache_id;
+            $cache_id = null;
+        }
+        if ($parent === null && ($this instanceof Smarty || is_string($template))) {
+            $parent = $this;
+        }
+        // create template object if necessary
+        $_template = ($template instanceof $this->template_class)
+        ? $template
+        : $this->smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
+        // if called by Smarty object make sure we use current caching status
+        if ($this instanceof Smarty) {
+            $_template->caching = $this->caching;
+        }
+        // merge all variable scopes into template
+        if ($merge_tpl_vars) {
+            // save local variables
+            $save_tpl_vars = $_template->tpl_vars;
+            $save_config_vars = $_template->config_vars;
+            $ptr_array = array($_template);
+            $ptr = $_template;
+            while (isset($ptr->parent)) {
+                $ptr_array[] = $ptr = $ptr->parent;
+            }
+            $ptr_array = array_reverse($ptr_array);
+            $parent_ptr = reset($ptr_array);
+            $tpl_vars = $parent_ptr->tpl_vars;
+            $config_vars = $parent_ptr->config_vars;
+            while ($parent_ptr = next($ptr_array)) {
+                if (!empty($parent_ptr->tpl_vars)) {
+                    $tpl_vars = array_merge($tpl_vars, $parent_ptr->tpl_vars);
+                }
+                if (!empty($parent_ptr->config_vars)) {
+                    $config_vars = array_merge($config_vars, $parent_ptr->config_vars);
+                }
+            }
+            if (!empty(Smarty::$global_tpl_vars)) {
+                $tpl_vars = array_merge(Smarty::$global_tpl_vars, $tpl_vars);
+            }
+            $_template->tpl_vars = $tpl_vars;
+            $_template->config_vars = $config_vars;
+        }
+        // dummy local smarty variable
+        if (!isset($_template->tpl_vars['smarty'])) {
+            $_template->tpl_vars['smarty'] = new Smarty_Variable;
+        }
+        if (isset($this->smarty->error_reporting)) {
+            $_smarty_old_error_level = error_reporting($this->smarty->error_reporting);
+        }
+        // check URL debugging control
+        if (!$this->smarty->debugging && $this->smarty->debugging_ctrl == 'URL') {
+            if (isset($_SERVER['QUERY_STRING'])) {
+                $_query_string = $_SERVER['QUERY_STRING'];
+            } else {
+                $_query_string = '';
+            }
+            if (false !== strpos($_query_string, $this->smarty->smarty_debug_id)) {
+                if (false !== strpos($_query_string, $this->smarty->smarty_debug_id . '=on')) {
+                    // enable debugging for this browser session
+                    setcookie('SMARTY_DEBUG', true);
+                    $this->smarty->debugging = true;
+                } elseif (false !== strpos($_query_string, $this->smarty->smarty_debug_id . '=off')) {
+                    // disable debugging for this browser session
+                    setcookie('SMARTY_DEBUG', false);
+                    $this->smarty->debugging = false;
+                } else {
+                    // enable debugging for this page
+                    $this->smarty->debugging = true;
+                }
+            } else {
+                if (isset($_COOKIE['SMARTY_DEBUG'])) {
+                    $this->smarty->debugging = true;
+                }
+            }
+        }
+        // must reset merge template date
+        $_template->smarty->merged_templates_func = array();
+        // get rendered template
+        // disable caching for evaluated code
+        if ($_template->source->recompiled) {
+            $_template->caching = false;
+        }
+        // checks if template exists
+        if (!$_template->source->exists) {
+            if ($_template->parent instanceof Smarty_Internal_Template) {
+                $parent_resource = " in '{$_template->parent->template_resource}'";
+            } else {
+                $parent_resource = '';
+            }
+            throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
+        }
+        // read from cache or render
+        if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || !$_template->cached->valid) {
+            // render template (not loaded and not in cache)
+            if (!$_template->source->uncompiled) {
+                $_smarty_tpl = $_template;
+                if ($_template->source->recompiled) {
+                    if ($this->smarty->debugging) {
+                        Smarty_Internal_Debug::start_compile($_template);
+                    }
+                    $code = $_template->compiler->compileTemplate($_template);
+                    if ($this->smarty->debugging) {
+                        Smarty_Internal_Debug::end_compile($_template);
+                    }
+                    if ($this->smarty->debugging) {
+                        Smarty_Internal_Debug::start_render($_template);
+                    }
+                    try {
+                        ob_start();
+                        eval("?>" . $code);
+                        unset($code);
+                    } catch (Exception $e) {
+                        ob_get_clean();
+                        throw $e;
+                    }
+                } else {
+                    if (!$_template->compiled->exists || ($_template->smarty->force_compile && !$_template->compiled->isCompiled)) {
+                        $_template->compileTemplateSource();
+                    }
+                    if ($this->smarty->debugging) {
+                        Smarty_Internal_Debug::start_render($_template);
+                    }
+                    if (!$_template->compiled->loaded) {
+                        include($_template->compiled->filepath);
+                        if ($_template->mustCompile) {
+                            // recompile and load again
+                            $_template->compileTemplateSource();
+                            include($_template->compiled->filepath);
+                        }
+                        $_template->compiled->loaded = true;
+                    } else {
+                        $_template->decodeProperties($_template->compiled->_properties, false);
+                    }
+                    try {
+                        ob_start();
+                        if (empty($_template->properties['unifunc']) || !is_callable($_template->properties['unifunc'])) {
+                            throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
+                        }
+                        array_unshift($_template->_capture_stack,array());
+                        //
+                        // render compiled template
+                        //
+                        $_template->properties['unifunc']($_template);
+                        // any unclosed {capture} tags ?
+                        if (isset($_template->_capture_stack[0][0])) {
+                            $_template->capture_error();
+                        }
+                        array_shift($_template->_capture_stack);
+                    } catch (Exception $e) {
+                        ob_get_clean();
+                        throw $e;
+                    }
+                }
+            } else {
+                if ($_template->source->uncompiled) {
+                    if ($this->smarty->debugging) {
+                        Smarty_Internal_Debug::start_render($_template);
+                    }
+                    try {
+                        ob_start();
+                        $_template->source->renderUncompiled($_template);
+                    } catch (Exception $e) {
+                        ob_get_clean();
+                        throw $e;
+                    }
+                } else {
+                    throw new SmartyException("Resource '$_template->source->type' must have 'renderUncompiled' method");
+                }
+            }
+            $_output = ob_get_clean();
+            if (!$_template->source->recompiled && empty($_template->properties['file_dependency'][$_template->source->uid])) {
+                $_template->properties['file_dependency'][$_template->source->uid] = array($_template->source->filepath, $_template->source->timestamp, $_template->source->type);
+            }
+            if ($_template->parent instanceof Smarty_Internal_Template) {
+                $_template->parent->properties['file_dependency'] = array_merge($_template->parent->properties['file_dependency'], $_template->properties['file_dependency']);
+                foreach ($_template->required_plugins as $code => $tmp1) {
+                    foreach ($tmp1 as $name => $tmp) {
+                        foreach ($tmp as $type => $data) {
+                            $_template->parent->required_plugins[$code][$name][$type] = $data;
+                        }
+                    }
+                }
+            }
+            if ($this->smarty->debugging) {
+                Smarty_Internal_Debug::end_render($_template);
+            }
+            // write to cache when nessecary
+            if (!$_template->source->recompiled && ($_template->caching == Smarty::CACHING_LIFETIME_SAVED || $_template->caching == Smarty::CACHING_LIFETIME_CURRENT)) {
+                if ($this->smarty->debugging) {
+                    Smarty_Internal_Debug::start_cache($_template);
+                }
+                $_template->properties['has_nocache_code'] = false;
+                // get text between non-cached items
+                $cache_split = preg_split("!/\*%%SmartyNocache:{$_template->properties['nocache_hash']}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->properties['nocache_hash']}%%\*/!s", $_output);
+                // get non-cached items
+                preg_match_all("!/\*%%SmartyNocache:{$_template->properties['nocache_hash']}%%\*\/(.+?)/\*/%%SmartyNocache:{$_template->properties['nocache_hash']}%%\*/!s", $_output, $cache_parts);
+                $output = '';
+                // loop over items, stitch back together
+                foreach ($cache_split as $curr_idx => $curr_split) {
+                    // escape PHP tags in template content
+                    $output .= preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '<?php echo \'$1\'; ?>', $curr_split);
+                    if (isset($cache_parts[0][$curr_idx])) {
+                        $_template->properties['has_nocache_code'] = true;
+                        // remove nocache tags from cache output
+                        $output .= preg_replace("!/\*/?%%SmartyNocache:{$_template->properties['nocache_hash']}%%\*/!", '', $cache_parts[0][$curr_idx]);
+                    }
+                }
+                if (!$no_output_filter && !$_template->has_nocache_code && (isset($this->smarty->autoload_filters['output']) || isset($this->smarty->registered_filters['output']))) {
+                    $output = Smarty_Internal_Filter_Handler::runFilter('output', $output, $_template);
+                }
+                // rendering (must be done before writing cache file because of {function} nocache handling)
+                $_smarty_tpl = $_template;
+                try {
+                    ob_start();
+                    eval("?>" . $output);
+                    $_output = ob_get_clean();
+                } catch (Exception $e) {
+                    ob_get_clean();
+                    throw $e;
+                }
+                // write cache file content
+                $_template->writeCachedContent($output);
+                if ($this->smarty->debugging) {
+                    Smarty_Internal_Debug::end_cache($_template);
+                }
+            } else {
+                // var_dump('renderTemplate', $_template->has_nocache_code, $_template->template_resource, $_template->properties['nocache_hash'], $_template->parent->properties['nocache_hash'], $_output);
+                if (!empty($_template->properties['nocache_hash']) && !empty($_template->parent->properties['nocache_hash'])) {
+                    // replace nocache_hash
+                    $_output = str_replace("{$_template->properties['nocache_hash']}", $_template->parent->properties['nocache_hash'], $_output);
+                    $_template->parent->has_nocache_code = $_template->parent->has_nocache_code || $_template->has_nocache_code;
+                }
+            }
+        } else {
+            if ($this->smarty->debugging) {
+                Smarty_Internal_Debug::start_cache($_template);
+            }
+            try {
+                ob_start();
+                array_unshift($_template->_capture_stack,array());
+                //
+                // render cached template
+                //
+                $_template->properties['unifunc']($_template);
+                // any unclosed {capture} tags ?
+                if (isset($_template->_capture_stack[0][0])) {
+                    $_template->capture_error();
+                }
+                array_shift($_template->_capture_stack);
+                $_output = ob_get_clean();
+            } catch (Exception $e) {
+                ob_get_clean();
+                throw $e;
+            }
+            if ($this->smarty->debugging) {
+                Smarty_Internal_Debug::end_cache($_template);
+            }
+        }
+        if ((!$this->caching || $_template->has_nocache_code || $_template->source->recompiled) && !$no_output_filter && (isset($this->smarty->autoload_filters['output']) || isset($this->smarty->registered_filters['output']))) {
+            $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_output, $_template);
+        }
+        if (isset($this->error_reporting)) {
+            error_reporting($_smarty_old_error_level);
+        }
+        // display or fetch
+        if ($display) {
+            if ($this->caching && $this->cache_modified_check) {
+                $_isCached = $_template->isCached() && !$_template->has_nocache_code;
+                $_last_modified_date = @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
+                if ($_isCached && $_template->cached->timestamp <= strtotime($_last_modified_date)) {
+                    switch (PHP_SAPI) {
+                        case 'cgi':         // php-cgi < 5.3
+                        case 'cgi-fcgi':    // php-cgi >= 5.3
+                        case 'fpm-fcgi':    // php-fpm >= 5.3.3
+                        header('Status: 304 Not Modified');
+                        break;
+
+                        case 'cli':
+                        if (/* ^phpunit */!empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS'])/* phpunit$ */) {
+                            $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+                        }
+                        break;
+
+                        default:
+                        header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');
+                        break;
+                    }
+                } else {
+                    switch (PHP_SAPI) {
+                        case 'cli':
+                        if (/* ^phpunit */!empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS'])/* phpunit$ */) {
+                            $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT';
+                        }
+                        break;
+
+                        default:
+                        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT');
+                        break;
+                    }
+                    echo $_output;
+                }
+            } else {
+                echo $_output;
+            }
+            // debug output
+            if ($this->smarty->debugging) {
+                Smarty_Internal_Debug::display_debug($this);
+            }
+            if ($merge_tpl_vars) {
+                // restore local variables
+                $_template->tpl_vars = $save_tpl_vars;
+                $_template->config_vars =  $save_config_vars;
+            }
+            return;
+        } else {
+            if ($merge_tpl_vars) {
+                // restore local variables
+                $_template->tpl_vars = $save_tpl_vars;
+                $_template->config_vars =  $save_config_vars;
+            }
+            // return fetched content
+            return $_output;
+        }
+    }
+
+    /**
+     * displays a Smarty template
+     *
+     * @param string $template   the resource handle of the template file or template object
+     * @param mixed  $cache_id   cache id to be used with this template
+     * @param mixed  $compile_id compile id to be used with this template
+     * @param object $parent     next higher level of Smarty variables
+     */
+    public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
+    {
+        // display template
+        $this->fetch($template, $cache_id, $compile_id, $parent, true);
+    }
+
+    /**
+     * test if cache is valid
+     *
+     * @param string|object $template   the resource handle of the template file or template object
+     * @param mixed         $cache_id   cache id to be used with this template
+     * @param mixed         $compile_id compile id to be used with this template
+     * @param object        $parent     next higher level of Smarty variables
+     * @return boolean cache status
+     */
+    public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null)
+    {
+        if ($template === null && $this instanceof $this->template_class) {
+            return $this->cached->valid;
+        }
+        if (!($template instanceof $this->template_class)) {
+            if ($parent === null) {
+                $parent = $this;
+            }
+            $template = $this->smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
+        }
+        // return cache status of template
+        return $template->cached->valid;
+    }
+
+    /**
+     * creates a data object
+     *
+     * @param object $parent next higher level of Smarty variables
+     * @returns Smarty_Data data object
+     */
+    public function createData($parent = null)
+    {
+        return new Smarty_Data($parent, $this);
+    }
+
+    /**
+     * Registers plugin to be used in templates
+     *
+     * @param string   $type       plugin type
+     * @param string   $tag        name of template tag
+     * @param callback $callback   PHP callback to register
+     * @param boolean  $cacheable  if true (default) this fuction is cachable
+     * @param array    $cache_attr caching attributes if any
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException when the plugin tag is invalid
+     */
+    public function registerPlugin($type, $tag, $callback, $cacheable = true, $cache_attr = null)
+    {
+        if (isset($this->smarty->registered_plugins[$type][$tag])) {
+            throw new SmartyException("Plugin tag \"{$tag}\" already registered");
+        } elseif (!is_callable($callback)) {
+            throw new SmartyException("Plugin \"{$tag}\" not callable");
+        } else {
+            $this->smarty->registered_plugins[$type][$tag] = array($callback, (bool) $cacheable, (array) $cache_attr);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Unregister Plugin
+     *
+     * @param string $type of plugin
+     * @param string $tag name of plugin
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unregisterPlugin($type, $tag)
+    {
+        if (isset($this->smarty->registered_plugins[$type][$tag])) {
+            unset($this->smarty->registered_plugins[$type][$tag]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers a resource to fetch a template
+     *
+     * @param string $type name of resource type
+     * @param Smarty_Resource|array $callback or instance of Smarty_Resource, or array of callbacks to handle resource (deprecated)
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function registerResource($type, $callback)
+    {
+        $this->smarty->registered_resources[$type] = $callback instanceof Smarty_Resource ? $callback : array($callback, false);
+        return $this;
+    }
+
+    /**
+     * Unregisters a resource
+     *
+     * @param string $type name of resource type
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unregisterResource($type)
+    {
+        if (isset($this->smarty->registered_resources[$type])) {
+            unset($this->smarty->registered_resources[$type]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers a cache resource to cache a template's output
+     *
+     * @param string               $type     name of cache resource type
+     * @param Smarty_CacheResource $callback instance of Smarty_CacheResource to handle output caching
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function registerCacheResource($type, Smarty_CacheResource $callback)
+    {
+        $this->smarty->registered_cache_resources[$type] = $callback;
+        return $this;
+    }
+
+    /**
+     * Unregisters a cache resource
+     *
+     * @param string $type name of cache resource type
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unregisterCacheResource($type)
+    {
+        if (isset($this->smarty->registered_cache_resources[$type])) {
+            unset($this->smarty->registered_cache_resources[$type]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers object to be used in templates
+     *
+     * @param string  $object        name of template object
+     * @param object  $object_impl   the referenced PHP object to register
+     * @param array   $allowed       list of allowed methods (empty = all)
+     * @param boolean $smarty_args   smarty argument format, else traditional
+     * @param array   $block_methods list of block-methods
+     * @param array $block_functs list of methods that are block format
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException if any of the methods in $allowed or $block_methods are invalid
+     */
+    public function registerObject($object_name, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+    {
+        // test if allowed methodes callable
+        if (!empty($allowed)) {
+            foreach ((array) $allowed as $method) {
+                if (!is_callable(array($object_impl, $method))) {
+                    throw new SmartyException("Undefined method '$method' in registered object");
+                }
+            }
+        }
+        // test if block methodes callable
+        if (!empty($block_methods)) {
+            foreach ((array) $block_methods as $method) {
+                if (!is_callable(array($object_impl, $method))) {
+                    throw new SmartyException("Undefined method '$method' in registered object");
+                }
+            }
+        }
+        // register the object
+        $this->smarty->registered_objects[$object_name] =
+        array($object_impl, (array) $allowed, (boolean) $smarty_args, (array) $block_methods);
+        return $this;
+    }
+
+    /**
+     * return a reference to a registered object
+     *
+     * @param string $name object name
+     * @return object
+     * @throws SmartyException if no such object is found
+     */
+    public function getRegisteredObject($name)
+    {
+        if (!isset($this->smarty->registered_objects[$name])) {
+            throw new SmartyException("'$name' is not a registered object");
+        }
+        if (!is_object($this->smarty->registered_objects[$name][0])) {
+            throw new SmartyException("registered '$name' is not an object");
+        }
+        return $this->smarty->registered_objects[$name][0];
+    }
+
+    /**
+     * unregister an object
+     *
+     * @param string $name object name
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unregisterObject($name)
+    {
+        if (isset($this->smarty->registered_objects[$name])) {
+            unset($this->smarty->registered_objects[$name]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers static classes to be used in templates
+     *
+     * @param string $class name of template class
+     * @param string $class_impl the referenced PHP class to register
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException if $class_impl does not refer to an existing class
+     */
+    public function registerClass($class_name, $class_impl)
+    {
+        // test if exists
+        if (!class_exists($class_impl)) {
+            throw new SmartyException("Undefined class '$class_impl' in register template class");
+        }
+        // register the class
+        $this->smarty->registered_classes[$class_name] = $class_impl;
+        return $this;
+    }
+
+    /**
+     * Registers a default plugin handler
+     *
+     * @param callable $callback class/method name
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException if $callback is not callable
+     */
+    public function registerDefaultPluginHandler($callback)
+    {
+        if (is_callable($callback)) {
+            $this->smarty->default_plugin_handler_func = $callback;
+        } else {
+            throw new SmartyException("Default plugin handler '$callback' not callable");
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers a default template handler
+     *
+     * @param callable $callback class/method name
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException if $callback is not callable
+     */
+    public function registerDefaultTemplateHandler($callback)
+    {
+        if (is_callable($callback)) {
+            $this->smarty->default_template_handler_func = $callback;
+        } else {
+            throw new SmartyException("Default template handler '$callback' not callable");
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers a default template handler
+     *
+     * @param callable $callback class/method name
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     * @throws SmartyException if $callback is not callable
+     */
+    public function registerDefaultConfigHandler($callback)
+    {
+        if (is_callable($callback)) {
+            $this->smarty->default_config_handler_func = $callback;
+        } else {
+            throw new SmartyException("Default config handler '$callback' not callable");
+        }
+
+        return $this;
+    }
+
+    /**
+     * Registers a filter function
+     *
+     * @param string $type filter type
+     * @param callback $callback
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function registerFilter($type, $callback)
+    {
+        $this->smarty->registered_filters[$type][$this->_get_filter_name($callback)] = $callback;
+        return $this;
+    }
+
+    /**
+     * Unregisters a filter function
+     *
+     * @param string $type filter type
+     * @param callback $callback
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unregisterFilter($type, $callback)
+    {
+        $name = $this->_get_filter_name($callback);
+        if (isset($this->smarty->registered_filters[$type][$name])) {
+            unset($this->smarty->registered_filters[$type][$name]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Return internal filter name
+     *
+     * @param callback $function_name
+     * @return string internal filter name
+     */
+    public function _get_filter_name($function_name)
+    {
+        if (is_array($function_name)) {
+            $_class_name = (is_object($function_name[0]) ?
+            get_class($function_name[0]) : $function_name[0]);
+            return $_class_name . '_' . $function_name[1];
+        } else {
+            return $function_name;
+        }
+    }
+
+    /**
+     * load a filter of specified type and name
+     *
+     * @param string $type filter type
+     * @param string $name filter name
+     * @throws SmartyException if filter could not be loaded
+     */
+    public function loadFilter($type, $name)
+    {
+        $_plugin = "smarty_{$type}filter_{$name}";
+        $_filter_name = $_plugin;
+        if ($this->smarty->loadPlugin($_plugin)) {
+            if (class_exists($_plugin, false)) {
+                $_plugin = array($_plugin, 'execute');
+            }
+            if (is_callable($_plugin)) {
+                $this->smarty->registered_filters[$type][$_filter_name] = $_plugin;
+                return true;
+            }
+        }
+        throw new SmartyException("{$type}filter \"{$name}\" not callable");
+    }
+
+    /**
+     * unload a filter of specified type and name
+     *
+     * @param string $type filter type
+     * @param string $name filter name
+     * @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
+     */
+    public function unloadFilter($type, $name)
+    {
+        $_filter_name = "smarty_{$type}filter_{$name}";
+        if (isset($this->smarty->registered_filters[$type][$_filter_name])) {
+            unset ($this->smarty->registered_filters[$type][$_filter_name]);
+        }
+
+        return $this;
+    }
+
+    /**
+     * preg_replace callback to convert camelcase getter/setter to underscore property names
+     *
+     * @param string $match match string
+     * @return string replacemant
+     */
+    private function replaceCamelcase($match) {
+        return "_" . strtolower($match[1]);
+    }
+
+    /**
+     * Handle unknown class methods
+     *
+     * @param string $name unknown method-name
+     * @param array  $args argument array
+     */
+    public function __call($name, $args)
+    {
+        static $_prefixes = array('set' => true, 'get' => true);
+        static $_resolved_property_name = array();
+        static $_resolved_property_source = array();
+
+        // method of Smarty object?
+        if (method_exists($this->smarty, $name)) {
+            return call_user_func_array(array($this->smarty, $name), $args);
+        }
+        // see if this is a set/get for a property
+        $first3 = strtolower(substr($name, 0, 3));
+        if (isset($_prefixes[$first3]) && isset($name[3]) && $name[3] !== '_') {
+            if (isset($_resolved_property_name[$name])) {
+                $property_name = $_resolved_property_name[$name];
+            } else {
+                // try to keep case correct for future PHP 6.0 case-sensitive class methods
+                // lcfirst() not available < PHP 5.3.0, so improvise
+                $property_name = strtolower(substr($name, 3, 1)) . substr($name, 4);
+                // convert camel case to underscored name
+                $property_name = preg_replace_callback('/([A-Z])/', array($this,'replaceCamelcase'), $property_name);
+                $_resolved_property_name[$name] = $property_name;
+            }
+            if (isset($_resolved_property_source[$property_name])) {
+                $_is_this = $_resolved_property_source[$property_name];
+            } else {
+                $_is_this = null;
+                if (property_exists($this, $property_name)) {
+                    $_is_this = true;
+                } else if (property_exists($this->smarty, $property_name)) {
+                    $_is_this = false;
+                }
+                $_resolved_property_source[$property_name] = $_is_this;
+            }
+            if ($_is_this) {
+                if ($first3 == 'get')
+                return $this->$property_name;
+                else
+                return $this->$property_name = $args[0];
+            } else if ($_is_this === false) {
+                if ($first3 == 'get')
+                return $this->smarty->$property_name;
+                else
+                return $this->smarty->$property_name = $args[0];
+            } else {
+                throw new SmartyException("property '$property_name' does not exist.");
+                return false;
+            }
+        }
+        if ($name == 'Smarty') {
+            throw new SmartyException("PHP5 requires you to call __construct() instead of Smarty()");
+        }
+        // must be unknown
+        throw new SmartyException("Call of unknown method '$name'.");
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php	(revision 25596)
@@ -0,0 +1,670 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ *
+ * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Main abstract compiler class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+abstract class Smarty_Internal_TemplateCompilerBase {
+
+    /**
+     * hash for nocache sections
+     *
+     * @var mixed
+     */
+    private $nocache_hash = null;
+
+    /**
+     * suppress generation of nocache code
+     *
+     * @var bool
+     */
+    public $suppressNocacheProcessing = false;
+
+    /**
+     * suppress generation of merged template code
+     *
+     * @var bool
+     */
+    public $suppressMergedTemplates = false;
+
+    /**
+     * compile tag objects
+     *
+     * @var array
+     */
+    public static $_tag_objects = array();
+
+    /**
+     * tag stack
+     *
+     * @var array
+     */
+    public $_tag_stack = array();
+
+    /**
+     * current template
+     *
+     * @var Smarty_Internal_Template
+     */
+    public $template = null;
+
+    /**
+     * merged templates
+     *
+     * @var array
+     */
+    public $merged_templates = array();
+
+    /**
+     * flag when compiling {block}
+     *
+     * @var bool
+     */
+    public $inheritance = false;
+
+    /**
+     * plugins loaded by default plugin handler
+     *
+     * @var array
+     */
+    public $default_handler_plugins = array();
+
+    /**
+     * saved preprocessed modifier list
+     *
+     * @var mixed
+     */
+    public $default_modifier_list = null;
+
+    /**
+     * force compilation of complete template as nocache
+     * @var boolean
+     */
+    public $forceNocache = false;
+
+    /**
+     * suppress Smarty header code in compiled template
+     * @var bool
+     */
+    public $suppressHeader = false;
+
+    /**
+     * suppress template property header code in compiled template
+     * @var bool
+     */
+    public $suppressTemplatePropertyHeader = false;
+
+    /**
+     * flag if compiled template file shall we written
+     * @var bool
+     */
+    public $write_compiled_code = true;
+
+    /**
+     * flag if currently a template function is compiled
+     * @var bool
+     */
+    public $compiles_template_function = false;
+
+    /**
+     * called subfuntions from template function
+     * @var array
+     */
+    public $called_functions = array();
+
+    /**
+     * flags for used modifier plugins
+     * @var array
+     */
+    public $modifier_plugins = array();
+
+    /**
+     * type of already compiled modifier
+     * @var array
+     */
+    public $known_modifier_type = array();
+
+    /**
+     * Methode to compile a Smarty template
+     *
+     * @param  mixed $_content template source
+     * @return bool true if compiling succeeded, false if it failed
+     */
+    abstract protected function doCompile($_content);
+
+    /**
+     * Initialize compiler
+     */
+    public function __construct() {
+        $this->nocache_hash = str_replace('.', '-', uniqid(rand(), true));
+    }
+
+    /**
+     * Method to compile a Smarty template
+     *
+     * @param  Smarty_Internal_Template $template template object to compile
+     * @return bool true if compiling succeeded, false if it failed
+     */
+    public function compileTemplate(Smarty_Internal_Template $template) {
+        if (empty($template->properties['nocache_hash'])) {
+            $template->properties['nocache_hash'] = $this->nocache_hash;
+        } else {
+            $this->nocache_hash = $template->properties['nocache_hash'];
+        }
+        // flag for nochache sections
+        $this->nocache = false;
+        $this->tag_nocache = false;
+        // save template object in compiler class
+        $this->template = $template;
+        // reset has noche code flag
+        $this->template->has_nocache_code = false;
+        $this->smarty->_current_file = $saved_filepath = $this->template->source->filepath;
+        // template header code
+        $template_header = '';
+        if (!$this->suppressHeader) {
+            $template_header .= "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n";
+            $template_header .= "         compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
+        }
+
+        do {
+            // flag for aborting current and start recompile
+            $this->abort_and_recompile = false;
+            // get template source
+            $_content = $template->source->content;
+            // run prefilter if required
+            if (isset($this->smarty->autoload_filters['pre']) || isset($this->smarty->registered_filters['pre'])) {
+                $_content = Smarty_Internal_Filter_Handler::runFilter('pre', $_content, $template);
+            }
+            // on empty template just return header
+            if ($_content == '') {
+                if ($this->suppressTemplatePropertyHeader) {
+                    $code = '';
+                } else {
+                    $code = $template_header . $template->createTemplateCodeFrame();
+                }
+                return $code;
+            }
+            // call compiler
+            $_compiled_code = $this->doCompile($_content);
+        } while ($this->abort_and_recompile);
+        $this->template->source->filepath = $saved_filepath;
+        // free memory
+        unset($this->parser->root_buffer, $this->parser->current_buffer, $this->parser, $this->lex, $this->template);
+        self::$_tag_objects = array();
+        // return compiled code to template object
+        $merged_code = '';
+        if (!$this->suppressMergedTemplates && !empty($this->merged_templates)) {
+            foreach ($this->merged_templates as $code) {
+                $merged_code .= $code;
+            }
+            // run postfilter if required on merged code
+            if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) {
+                $merged_code = Smarty_Internal_Filter_Handler::runFilter('post', $merged_code, $template);
+            }
+        }
+        // run postfilter if required on compiled template code
+        if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) {
+            $_compiled_code = Smarty_Internal_Filter_Handler::runFilter('post', $_compiled_code, $template);
+        }
+        if ($this->suppressTemplatePropertyHeader) {
+            $code = $_compiled_code . $merged_code;
+        } else {
+            $code = $template_header . $template->createTemplateCodeFrame($_compiled_code) . $merged_code;
+        }
+        // unset content because template inheritance could have replace source with parent code
+        unset ($template->source->content);
+        return $code;
+    }
+
+    /**
+     * Compile Tag
+     *
+     * This is a call back from the lexer/parser
+     * It executes the required compile plugin for the Smarty tag
+     *
+     * @param string $tag       tag name
+     * @param array  $args      array with tag attributes
+     * @param array  $parameter array with compilation parameter
+     * @return string compiled code
+     */
+    public function compileTag($tag, $args, $parameter = array()) {
+        // $args contains the attributes parsed and compiled by the lexer/parser
+        // assume that tag does compile into code, but creates no HTML output
+        $this->has_code = true;
+        $this->has_output = false;
+        // log tag/attributes
+        if (isset($this->smarty->get_used_tags) && $this->smarty->get_used_tags) {
+            $this->template->used_tags[] = array($tag, $args);
+        }
+        // check nocache option flag
+        if (in_array("'nocache'", $args) || in_array(array('nocache' => 'true'), $args)
+                || in_array(array('nocache' => '"true"'), $args) || in_array(array('nocache' => "'true'"), $args)) {
+            $this->tag_nocache = true;
+        }
+        // compile the smarty tag (required compile classes to compile the tag are autoloaded)
+        if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
+            if (isset($this->smarty->template_functions[$tag])) {
+                // template defined by {template} tag
+                $args['_attr']['name'] = "'" . $tag . "'";
+                $_output = $this->callTagCompiler('call', $args, $parameter);
+            }
+        }
+        if ($_output !== false) {
+            if ($_output !== true) {
+                // did we get compiled code
+                if ($this->has_code) {
+                    // Does it create output?
+                    if ($this->has_output) {
+                        $_output .= "\n";
+                    }
+                    // return compiled code
+                    return $_output;
+                }
+            }
+            // tag did not produce compiled code
+            return '';
+        } else {
+            // map_named attributes
+            if (isset($args['_attr'])) {
+                foreach ($args['_attr'] as $key => $attribute) {
+                    if (is_array($attribute)) {
+                        $args = array_merge($args, $attribute);
+                    }
+                }
+            }
+            // not an internal compiler tag
+            if (strlen($tag) < 6 || substr($tag, -5) != 'close') {
+                // check if tag is a registered object
+                if (isset($this->smarty->registered_objects[$tag]) && isset($parameter['object_methode'])) {
+                    $methode = $parameter['object_methode'];
+                    if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) &&
+                            (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) {
+                        return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $methode);
+                    } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) {
+                        return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $methode);
+                    } else {
+                        return $this->trigger_template_error('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno);
+                    }
+                }
+                // check if tag is registered
+                foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK) as $plugin_type) {
+                    if (isset($this->smarty->registered_plugins[$plugin_type][$tag])) {
+                        // if compiler function plugin call it now
+                        if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+                            $new_args = array();
+                            foreach ($args as $key => $mixed) {
+                                if (is_array($mixed)) {
+                                    $new_args = array_merge($new_args, $mixed);
+                                } else {
+                                    $new_args[$key] = $mixed;
+                                }
+                            }
+                            if (!$this->smarty->registered_plugins[$plugin_type][$tag][1]) {
+                                $this->tag_nocache = true;
+                            }
+                            $function = $this->smarty->registered_plugins[$plugin_type][$tag][0];
+                            if (!is_array($function)) {
+                                return $function($new_args, $this);
+                            } else if (is_object($function[0])) {
+                                return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
+                            } else {
+                                return call_user_func_array($function, array($new_args, $this));
+                            }
+                        }
+                        // compile registered function or block function
+                        if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
+                            return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
+                        }
+                    }
+                }
+                // check plugins from plugins folder
+                foreach ($this->smarty->plugin_search_order as $plugin_type) {
+                    if ($plugin_type == Smarty::PLUGIN_BLOCK && $this->smarty->loadPlugin('smarty_compiler_' . $tag) && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))) {
+                        $plugin = 'smarty_compiler_' . $tag;
+                        if (is_callable($plugin)) {
+                            // convert arguments format for old compiler plugins
+                            $new_args = array();
+                            foreach ($args as $key => $mixed) {
+                                if (is_array($mixed)) {
+                                    $new_args = array_merge($new_args, $mixed);
+                                } else {
+                                    $new_args[$key] = $mixed;
+                                }
+                            }
+                            return $plugin($new_args, $this->smarty);
+                        }
+                        if (class_exists($plugin, false)) {
+                            $plugin_object = new $plugin;
+                            if (method_exists($plugin_object, 'compile')) {
+                                return $plugin_object->compile($args, $this);
+                            }
+                        }
+                        throw new SmartyException("Plugin \"{$tag}\" not callable");
+                    } else {
+                        if ($function = $this->getPlugin($tag, $plugin_type)) {
+                            if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+                                return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $parameter, $tag, $function);
+                            }
+                        }
+                    }
+                }
+                if (is_callable($this->smarty->default_plugin_handler_func)) {
+                    $found = false;
+                    // look for already resolved tags
+                    foreach ($this->smarty->plugin_search_order as $plugin_type) {
+                        if (isset($this->default_handler_plugins[$plugin_type][$tag])) {
+                            $found = true;
+                            break;
+                        }
+                    }
+                    if (!$found) {
+                        // call default handler
+                        foreach ($this->smarty->plugin_search_order as $plugin_type) {
+                            if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
+                                $found = true;
+                                break;
+                            }
+                        }
+                    }
+                    if ($found) {
+                        // if compiler function plugin call it now
+                        if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+                            $new_args = array();
+                            foreach ($args as $mixed) {
+                                $new_args = array_merge($new_args, $mixed);
+                            }
+                            $function = $this->default_handler_plugins[$plugin_type][$tag][0];
+                            if (!is_array($function)) {
+                                return $function($new_args, $this);
+                            } else if (is_object($function[0])) {
+                                return $this->default_handler_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
+                            } else {
+                                return call_user_func_array($function, array($new_args, $this));
+                            }
+                        } else {
+                            return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
+                        }
+                    }
+                }
+            } else {
+                // compile closing tag of block function
+                $base_tag = substr($tag, 0, -5);
+                // check if closing tag is a registered object
+                if (isset($this->smarty->registered_objects[$base_tag]) && isset($parameter['object_methode'])) {
+                    $methode = $parameter['object_methode'];
+                    if (in_array($methode, $this->smarty->registered_objects[$base_tag][3])) {
+                        return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $methode);
+                    } else {
+                        return $this->trigger_template_error('unallowed closing tag methode "' . $methode . '" in registered object "' . $base_tag . '"', $this->lex->taglineno);
+                    }
+                }
+                // registered block tag ?
+                if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag]) || isset($this->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
+                    return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
+                }
+                // block plugin?
+                if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
+                    return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
+                }
+                // registered compiler plugin ?
+                if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag])) {
+                    // if compiler function plugin call it now
+                    $args = array();
+                    if (!$this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][1]) {
+                        $this->tag_nocache = true;
+                    }
+                    $function = $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0];
+                    if (!is_array($function)) {
+                        return $function($args, $this);
+                    } else if (is_object($function[0])) {
+                        return $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0][0]->$function[1]($args, $this);
+                    } else {
+                        return call_user_func_array($function, array($args, $this));
+                    }
+                }
+                if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+                    $plugin = 'smarty_compiler_' . $tag;
+                    if (is_callable($plugin)) {
+                        return $plugin($args, $this->smarty);
+                    }
+                    if (class_exists($plugin, false)) {
+                        $plugin_object = new $plugin;
+                        if (method_exists($plugin_object, 'compile')) {
+                            return $plugin_object->compile($args, $this);
+                        }
+                    }
+                    throw new SmartyException("Plugin \"{$tag}\" not callable");
+                }
+            }
+            $this->trigger_template_error("unknown tag \"" . $tag . "\"", $this->lex->taglineno);
+        }
+    }
+
+    /**
+     * lazy loads internal compile plugin for tag and calls the compile methode
+     *
+     * compile objects cached for reuse.
+     * class name format:  Smarty_Internal_Compile_TagName
+     * plugin filename format: Smarty_Internal_Tagname.php
+     *
+     * @param string $tag   tag name
+     * @param array $args   list of tag attributes
+     * @param mixed $param1 optional parameter
+     * @param mixed $param2 optional parameter
+     * @param mixed $param3 optional parameter
+     * @return string compiled code
+     */
+    public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null) {
+        // re-use object if already exists
+        if (isset(self::$_tag_objects[$tag])) {
+            // compile this tag
+            return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
+        }
+        // lazy load internal compiler plugin
+        $class_name = 'Smarty_Internal_Compile_' . $tag;
+        if ($this->smarty->loadPlugin($class_name)) {
+            // check if tag allowed by security
+            if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+                // use plugin if found
+                self::$_tag_objects[$tag] = new $class_name;
+                // compile this tag
+                return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
+            }
+        }
+        // no internal compile plugin for this tag
+        return false;
+    }
+
+    /**
+     * Check for plugins and return function name
+     *
+     * @param string $pugin_name  name of plugin or function
+     * @param string $plugin_type type of plugin
+     * @return string call name of function
+     */
+    public function getPlugin($plugin_name, $plugin_type) {
+        $function = null;
+        if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+            if (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
+                $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
+            } else if (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
+                $this->template->required_plugins['nocache'][$plugin_name][$plugin_type] = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type];
+                $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
+            }
+        } else {
+            if (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
+                $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
+            } else if (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
+                $this->template->required_plugins['compiled'][$plugin_name][$plugin_type] = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type];
+                $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
+            }
+        }
+        if (isset($function)) {
+            if ($plugin_type == 'modifier') {
+                $this->modifier_plugins[$plugin_name] = true;
+            }
+            return $function;
+        }
+        // loop through plugin dirs and find the plugin
+        $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
+        $file = $this->smarty->loadPlugin($function, false);
+
+        if (is_string($file)) {
+            if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+                $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['file'] = $file;
+                $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'] = $function;
+            } else {
+                $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['file'] = $file;
+                $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'] = $function;
+            }
+            if ($plugin_type == 'modifier') {
+                $this->modifier_plugins[$plugin_name] = true;
+            }
+            return $function;
+        }
+        if (is_callable($function)) {
+            // plugin function is defined in the script
+            return $function;
+        }
+        return false;
+    }
+
+    /**
+     * Check for plugins by default plugin handler
+     *
+     * @param string $tag         name of tag
+     * @param string $plugin_type type of plugin
+     * @return boolean true if found
+     */
+    public function getPluginFromDefaultHandler($tag, $plugin_type) {
+        $callback = null;
+        $script = null;
+        $cacheable = true;
+        $result = call_user_func_array(
+                $this->smarty->default_plugin_handler_func, array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable)
+        );
+        if ($result) {
+            $this->tag_nocache = $this->tag_nocache || !$cacheable;
+            if ($script !== null) {
+                if (is_file($script)) {
+                    if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+                        $this->template->required_plugins['nocache'][$tag][$plugin_type]['file'] = $script;
+                        $this->template->required_plugins['nocache'][$tag][$plugin_type]['function'] = $callback;
+                    } else {
+                        $this->template->required_plugins['compiled'][$tag][$plugin_type]['file'] = $script;
+                        $this->template->required_plugins['compiled'][$tag][$plugin_type]['function'] = $callback;
+                    }
+                    include_once $script;
+                } else {
+                    $this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
+                }
+            }
+            if (!is_string($callback) && !(is_array($callback) && is_string($callback[0]) && is_string($callback[1]))) {
+                $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" must be a static function name or array of class and function name");
+            }
+            if (is_callable($callback)) {
+                $this->default_handler_plugins[$plugin_type][$tag] = array($callback, true, array());
+                return true;
+            } else {
+                $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" not callable");
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Inject inline code for nocache template sections
+     *
+     * This method gets the content of each template element from the parser.
+     * If the content is compiled code and it should be not cached the code is injected
+     * into the rendered output.
+     *
+     * @param string  $content content of template element
+     * @param boolean $is_code true if content is compiled code
+     * @return string content
+     */
+    public function processNocacheCode($content, $is_code) {
+        // If the template is not evaluated and we have a nocache section and or a nocache tag
+        if ($is_code && !empty($content)) {
+            // generate replacement code
+            if ((!($this->template->source->recompiled) || $this->forceNocache) && $this->template->caching && !$this->suppressNocacheProcessing &&
+                    ($this->nocache || $this->tag_nocache || $this->forceNocache == 2)) {
+                $this->template->has_nocache_code = true;
+                $_output = addcslashes($content,'\'\\');
+                $_output = str_replace("^#^", "'", $_output);
+                $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
+                // make sure we include modifer plugins for nocache code
+                foreach ($this->modifier_plugins as $plugin_name => $dummy) {
+                    if (isset($this->template->required_plugins['compiled'][$plugin_name]['modifier'])) {
+                        $this->template->required_plugins['nocache'][$plugin_name]['modifier'] = $this->template->required_plugins['compiled'][$plugin_name]['modifier'];
+                    }
+                }
+            } else {
+                $_output = $content;
+            }
+        } else {
+            $_output = $content;
+        }
+        $this->modifier_plugins = array();
+        $this->suppressNocacheProcessing = false;
+        $this->tag_nocache = false;
+        return $_output;
+    }
+
+    /**
+     * display compiler error messages without dying
+     *
+     * If parameter $args is empty it is a parser detected syntax error.
+     * In this case the parser is called to obtain information about expected tokens.
+     *
+     * If parameter $args contains a string this is used as error message
+     *
+     * @param string $args individual error message or null
+     * @param string $line line-number
+     * @throws SmartyCompilerException when an unexpected token is found
+     */
+    public function trigger_template_error($args = null, $line = null) {
+        // get template source line which has error
+        if (!isset($line)) {
+            $line = $this->lex->line;
+        }
+        $match = preg_split("/\n/", $this->lex->data);
+        $error_text = 'Syntax Error in template "' . $this->template->source->filepath . '"  on line ' . $line . ' "' . htmlspecialchars(trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1]))) . '" ';
+        if (isset($args)) {
+            // individual error message
+            $error_text .= $args;
+        } else {
+            // expected token from parser
+            $error_text .= ' - Unexpected "' . $this->lex->value . '"';
+            if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+                foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+                    $exp_token = $this->parser->yyTokenName[$token];
+                    if (isset($this->lex->smarty_token_names[$exp_token])) {
+                        // token type from lexer
+                        $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
+                    } else {
+                        // otherwise internal token name
+                        $expect[] = $this->parser->yyTokenName[$token];
+                    }
+                }
+                $error_text .= ', expected one of: ' . implode(' , ', $expect);
+            }
+        }
+        throw new SmartyCompilerException($error_text);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatelexer.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatelexer.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templatelexer.php	(revision 25596)
@@ -0,0 +1,1203 @@
+<?php
+/**
+* Smarty Internal Plugin Templatelexer
+*
+* This is the lexer to break the template source into tokens
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Templatelexer
+*/
+class Smarty_Internal_Templatelexer
+{
+    public $data;
+    public $counter;
+    public $token;
+    public $value;
+    public $node;
+    public $line;
+    public $taglineno;
+    public $state = 1;
+    private $heredoc_id_stack = Array();
+    public $smarty_token_names = array (		// Text for parser error messages
+    				'IDENTITY'	=> '===',
+    				'NONEIDENTITY'	=> '!==',
+    				'EQUALS'	=> '==',
+    				'NOTEQUALS'	=> '!=',
+    				'GREATEREQUAL' => '(>=,ge)',
+    				'LESSEQUAL' => '(<=,le)',
+    				'GREATERTHAN' => '(>,gt)',
+    				'LESSTHAN' => '(<,lt)',
+    				'MOD' => '(%,mod)',
+    				'NOT'			=> '(!,not)',
+    				'LAND'		=> '(&&,and)',
+    				'LOR'			=> '(||,or)',
+    				'LXOR'			=> 'xor',
+    				'OPENP'		=> '(',
+    				'CLOSEP'	=> ')',
+    				'OPENB'		=> '[',
+    				'CLOSEB'	=> ']',
+    				'PTR'			=> '->',
+    				'APTR'		=> '=>',
+    				'EQUAL'		=> '=',
+    				'NUMBER'	=> 'number',
+    				'UNIMATH'	=> '+" , "-',
+    				'MATH'		=> '*" , "/" , "%',
+    				'INCDEC'	=> '++" , "--',
+    				'SPACE'		=> ' ',
+    				'DOLLAR'	=> '$',
+    				'SEMICOLON' => ';',
+    				'COLON'		=> ':',
+    				'DOUBLECOLON'		=> '::',
+    				'AT'		=> '@',
+    				'HATCH'		=> '#',
+    				'QUOTE'		=> '"',
+    				'BACKTICK'		=> '`',
+    				'VERT'		=> '|',
+    				'DOT'			=> '.',
+    				'COMMA'		=> '","',
+    				'ANDSYM'		=> '"&"',
+    				'QMARK'		=> '"?"',
+    				'ID'			=> 'identifier',
+    				'TEXT'		=> 'text',
+     				'FAKEPHPSTARTTAG'	=> 'Fake PHP start tag',
+     				'PHPSTARTTAG'	=> 'PHP start tag',
+     				'PHPENDTAG'	=> 'PHP end tag',
+ 						'LITERALSTART'  => 'Literal start',
+ 						'LITERALEND'    => 'Literal end',
+    				'LDELSLASH' => 'closing tag',
+    				'COMMENT' => 'comment',
+    				'AS' => 'as',
+    				'TO' => 'to',
+    				);
+
+
+    function __construct($data,$compiler)
+    {
+//        $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
+        $this->data = $data;
+        $this->counter = 0;
+        $this->line = 1;
+        $this->smarty = $compiler->smarty;
+        $this->compiler = $compiler;
+        $this->ldel = preg_quote($this->smarty->left_delimiter,'/');
+        $this->ldel_length = strlen($this->smarty->left_delimiter);
+        $this->rdel = preg_quote($this->smarty->right_delimiter,'/');
+        $this->rdel_length = strlen($this->smarty->right_delimiter);
+        $this->smarty_token_names['LDEL'] =	$this->smarty->left_delimiter;
+        $this->smarty_token_names['RDEL'] =	$this->smarty->right_delimiter;
+        $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+     }
+
+
+    private $_yy_state = 1;
+    private $_yy_stack = array();
+
+    function yylex()
+    {
+        return $this->{'yylex' . $this->_yy_state}();
+    }
+
+    function yypushstate($state)
+    {
+        array_push($this->_yy_stack, $this->_yy_state);
+        $this->_yy_state = $state;
+    }
+
+    function yypopstate()
+    {
+        $this->_yy_state = array_pop($this->_yy_stack);
+    }
+
+    function yybegin($state)
+    {
+        $this->_yy_state = $state;
+    }
+
+
+
+    function yylex1()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 1,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+              8 => 0,
+              9 => 0,
+              10 => 0,
+              11 => 1,
+              13 => 0,
+              14 => 0,
+              15 => 0,
+              16 => 0,
+              17 => 0,
+              18 => 0,
+              19 => 0,
+              20 => 0,
+              21 => 0,
+              22 => 0,
+              23 => 0,
+              24 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(".$this->ldel."[$]smarty\\.block\\.child".$this->rdel.")|\G(\\{\\})|\G(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|\G(".$this->ldel."strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s*setfilter\\s+)|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(".$this->rdel.")|\G(<%)|\G(%>)|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state TEXT');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r1_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const TEXT = 1;
+    function yy_r1_1($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILD;
+    }
+    function yy_r1_2($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+    function yy_r1_3($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_COMMENT;
+    }
+    function yy_r1_5($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
+    }
+    function yy_r1_6($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+    $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+    $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
+  }
+    }
+    function yy_r1_7($yy_subpatterns)
+    {
+
+    $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
+    }
+    function yy_r1_8($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+    $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
+  }
+    }
+    function yy_r1_9($yy_subpatterns)
+    {
+
+   $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+   $this->yypushstate(self::LITERAL);
+    }
+    function yy_r1_10($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_11($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_13($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_14($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_15($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_16($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r1_17($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r1_18($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r1_19($yy_subpatterns)
+    {
+
+  if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
+    $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
+  } elseif ($this->value == '<?xml') {
+      $this->token = Smarty_Internal_Templateparser::TP_XMLTAG;
+  } else {
+    $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
+    $this->value = substr($this->value, 0, 2);
+  }
+     }
+    function yy_r1_20($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
+    }
+    function yy_r1_21($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+    function yy_r1_22($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
+    }
+    function yy_r1_23($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
+    }
+    function yy_r1_24($yy_subpatterns)
+    {
+
+  if ($this->mbstring_overload) {
+    $to = mb_strlen($this->data,'latin1');
+  } else {
+    $to = strlen($this->data);
+  }
+  preg_match("/{$this->ldel}|<\?|\?>|<%|%>/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+  if (isset($match[0][1])) {
+    $to = $match[0][1];
+  }
+  if ($this->mbstring_overload) {
+    $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
+  } else {
+    $this->value = substr($this->data,$this->counter,$to-$this->counter);
+  }
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+
+
+    function yylex2()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 1,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+              8 => 0,
+              9 => 0,
+              10 => 0,
+              11 => 0,
+              12 => 0,
+              13 => 0,
+              14 => 0,
+              15 => 0,
+              16 => 0,
+              17 => 0,
+              18 => 0,
+              19 => 0,
+              20 => 1,
+              22 => 1,
+              24 => 1,
+              26 => 0,
+              27 => 0,
+              28 => 0,
+              29 => 0,
+              30 => 0,
+              31 => 0,
+              32 => 0,
+              33 => 0,
+              34 => 0,
+              35 => 0,
+              36 => 0,
+              37 => 0,
+              38 => 0,
+              39 => 0,
+              40 => 0,
+              41 => 0,
+              42 => 0,
+              43 => 3,
+              47 => 0,
+              48 => 0,
+              49 => 0,
+              50 => 0,
+              51 => 0,
+              52 => 0,
+              53 => 0,
+              54 => 0,
+              55 => 1,
+              57 => 1,
+              59 => 0,
+              60 => 0,
+              61 => 0,
+              62 => 0,
+              63 => 0,
+              64 => 0,
+              65 => 0,
+              66 => 0,
+              67 => 0,
+              68 => 0,
+              69 => 0,
+              70 => 0,
+              71 => 0,
+              72 => 0,
+              73 => 0,
+              74 => 0,
+              75 => 0,
+              76 => 0,
+              77 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(".$this->rdel.")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\s*\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(\\$)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(@)|\G(#)|\G(\")|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*=\\s*)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(\\s+)|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state SMARTY');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r2_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const SMARTY = 2;
+    function yy_r2_1($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
+    }
+    function yy_r2_2($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_3($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_5($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_6($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_7($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r2_8($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+  $this->yypopstate();
+    }
+    function yy_r2_9($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r2_10($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r2_11($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+     $this->yypopstate();
+    }
+    function yy_r2_12($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISIN;
+    }
+    function yy_r2_13($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_AS;
+    }
+    function yy_r2_14($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TO;
+    }
+    function yy_r2_15($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_STEP;
+    }
+    function yy_r2_16($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
+    }
+    function yy_r2_17($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
+    }
+    function yy_r2_18($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
+    }
+    function yy_r2_19($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_EQUALS;
+    }
+    function yy_r2_20($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
+    }
+    function yy_r2_22($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
+    }
+    function yy_r2_24($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
+    }
+    function yy_r2_26($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
+    }
+    function yy_r2_27($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
+    }
+    function yy_r2_28($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_MOD;
+    }
+    function yy_r2_29($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_NOT;
+    }
+    function yy_r2_30($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LAND;
+    }
+    function yy_r2_31($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LOR;
+    }
+    function yy_r2_32($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LXOR;
+    }
+    function yy_r2_33($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
+    }
+    function yy_r2_34($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
+    }
+    function yy_r2_35($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISODD;
+    }
+    function yy_r2_36($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
+    }
+    function yy_r2_37($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
+    }
+    function yy_r2_38($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
+    }
+    function yy_r2_39($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
+    }
+    function yy_r2_40($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
+    }
+    function yy_r2_41($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
+    }
+    function yy_r2_42($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
+    }
+    function yy_r2_43($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
+    }
+    function yy_r2_47($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_OPENP;
+    }
+    function yy_r2_48($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
+    }
+    function yy_r2_49($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_OPENB;
+    }
+    function yy_r2_50($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
+    }
+    function yy_r2_51($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_PTR;
+    }
+    function yy_r2_52($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_APTR;
+    }
+    function yy_r2_53($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
+    }
+    function yy_r2_54($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
+    }
+    function yy_r2_55($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
+    }
+    function yy_r2_57($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_MATH;
+    }
+    function yy_r2_59($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
+    }
+    function yy_r2_60($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
+    }
+    function yy_r2_61($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
+    }
+    function yy_r2_62($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_COLON;
+    }
+    function yy_r2_63($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_AT;
+    }
+    function yy_r2_64($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_HATCH;
+    }
+    function yy_r2_65($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+  $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+    }
+    function yy_r2_66($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+  $this->yypopstate();
+    }
+    function yy_r2_67($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_VERT;
+    }
+    function yy_r2_68($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_DOT;
+    }
+    function yy_r2_69($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_COMMA;
+    }
+    function yy_r2_70($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
+    }
+    function yy_r2_71($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_QMARK;
+    }
+    function yy_r2_72($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_HEX;
+    }
+    function yy_r2_73($yy_subpatterns)
+    {
+
+  // resolve conflicts with shorttag and right_delimiter starting with '='
+  if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) == $this->smarty->right_delimiter) {
+     preg_match("/\s+/",$this->value,$match);
+     $this->value = $match[0];
+     $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+  }
+    }
+    function yy_r2_74($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ID;
+    }
+    function yy_r2_75($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
+    }
+    function yy_r2_76($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+    }
+    function yy_r2_77($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+
+
+
+    function yylex3()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 0,
+              3 => 0,
+              4 => 0,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s*\/literal\\s*".$this->rdel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state LITERAL');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const LITERAL = 3;
+    function yy_r3_1($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+  $this->yypushstate(self::LITERAL);
+    }
+    function yy_r3_2($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+  $this->yypopstate();
+    }
+    function yy_r3_3($yy_subpatterns)
+    {
+
+  if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
+    $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
+   } else {
+    $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
+    $this->value = substr($this->value, 0, 2);
+   }
+    }
+    function yy_r3_4($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
+    }
+    function yy_r3_5($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
+    }
+    function yy_r3_6($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
+    }
+    function yy_r3_7($yy_subpatterns)
+    {
+
+  if ($this->mbstring_overload) {
+    $to = mb_strlen($this->data,'latin1');
+  } else {
+    $to = strlen($this->data);
+  }
+  preg_match("/{$this->ldel}\/?literal{$this->rdel}|<\?|<%|\?>|%>/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+  if (isset($match[0][1])) {
+    $to = $match[0][1];
+  } else {
+    $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+  }
+  if ($this->mbstring_overload) {
+    $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
+  } else {
+    $this->value = substr($this->data,$this->counter,$to-$this->counter);
+  }
+  $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+    }
+
+
+    function yylex4()
+    {
+        $tokenMap = array (
+              1 => 0,
+              2 => 1,
+              4 => 0,
+              5 => 0,
+              6 => 0,
+              7 => 0,
+              8 => 0,
+              9 => 0,
+              10 => 0,
+              11 => 0,
+              12 => 0,
+              13 => 3,
+              17 => 0,
+            );
+        if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+            return false; // end of input
+        }
+        $yy_global_pattern = "/\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(\")|\G(`\\$)|\G(\\$[0-9]*[a-zA-Z_]\\w*)|\G(\\$)|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|\G([\S\s])/iS";
+
+        do {
+            if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+                $yysubmatches = $yymatches;
+                $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+                if (!count($yymatches)) {
+                    throw new Exception('Error: lexing failed because a rule matched' .
+                        ' an empty string.  Input "' . substr($this->data,
+                        $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+                }
+                next($yymatches); // skip global match
+                $this->token = key($yymatches); // token number
+                if ($tokenMap[$this->token]) {
+                    // extract sub-patterns for passing to lex function
+                    $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+                        $tokenMap[$this->token]);
+                } else {
+                    $yysubmatches = array();
+                }
+                $this->value = current($yymatches); // token value
+                $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
+                if ($r === null) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    // accept this token
+                    return true;
+                } elseif ($r === true) {
+                    // we have changed state
+                    // process this token in the new state
+                    return $this->yylex();
+                } elseif ($r === false) {
+                    $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+                    $this->line += substr_count($this->value, "\n");
+                    if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+                        return false; // end of input
+                    }
+                    // skip this token
+                    continue;
+                }            } else {
+                throw new Exception('Unexpected input at line' . $this->line .
+                    ': ' . $this->data[$this->counter]);
+            }
+            break;
+        } while (true);
+
+    } // end function
+
+
+    const DOUBLEQUOTEDSTRING = 4;
+    function yy_r4_1($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_2($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_4($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_5($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_6($yy_subpatterns)
+    {
+
+  if ($this->smarty->auto_literal) {
+     $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+  }
+    }
+    function yy_r4_7($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r4_8($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+     $this->yypushstate(self::SMARTY);
+     $this->taglineno = $this->line;
+    }
+    function yy_r4_9($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+  $this->yypopstate();
+    }
+    function yy_r4_10($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+  $this->value = substr($this->value,0,-1);
+  $this->yypushstate(self::SMARTY);
+  $this->taglineno = $this->line;
+    }
+    function yy_r4_11($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+    }
+    function yy_r4_12($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+    function yy_r4_13($yy_subpatterns)
+    {
+
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+    function yy_r4_17($yy_subpatterns)
+    {
+
+  if ($this->mbstring_overload) {
+    $to = mb_strlen($this->data,'latin1');
+  } else {
+    $to = strlen($this->data);
+  }
+  if ($this->mbstring_overload) {
+    $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
+  } else {
+    $this->value = substr($this->data,$this->counter,$to-$this->counter);
+  }
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+    }
+
+}
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templateparser.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templateparser.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_templateparser.php	(revision 25596)
@@ -0,0 +1,3254 @@
+<?php
+/**
+* Smarty Internal Plugin Templateparser
+*
+* This is the template parser.
+* It is generated from the internal.templateparser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+
+class TP_yyToken implements ArrayAccess
+{
+    public $string = '';
+    public $metadata = array();
+
+    function __construct($s, $m = array())
+    {
+        if ($s instanceof TP_yyToken) {
+            $this->string = $s->string;
+            $this->metadata = $s->metadata;
+        } else {
+            $this->string = (string) $s;
+            if ($m instanceof TP_yyToken) {
+                $this->metadata = $m->metadata;
+            } elseif (is_array($m)) {
+                $this->metadata = $m;
+            }
+        }
+    }
+
+    function __toString()
+    {
+        return $this->_string;
+    }
+
+    function offsetExists($offset)
+    {
+        return isset($this->metadata[$offset]);
+    }
+
+    function offsetGet($offset)
+    {
+        return $this->metadata[$offset];
+    }
+
+    function offsetSet($offset, $value)
+    {
+        if ($offset === null) {
+            if (isset($value[0])) {
+                $x = ($value instanceof TP_yyToken) ?
+                    $value->metadata : $value;
+                $this->metadata = array_merge($this->metadata, $x);
+                return;
+            }
+            $offset = count($this->metadata);
+        }
+        if ($value === null) {
+            return;
+        }
+        if ($value instanceof TP_yyToken) {
+            if ($value->metadata) {
+                $this->metadata[$offset] = $value->metadata;
+            }
+        } elseif ($value) {
+            $this->metadata[$offset] = $value;
+        }
+    }
+
+    function offsetUnset($offset)
+    {
+        unset($this->metadata[$offset]);
+    }
+}
+
+class TP_yyStackEntry
+{
+    public $stateno;       /* The state-number */
+    public $major;         /* The major token value.  This is the code
+                     ** number for the token at this stack level */
+    public $minor; /* The user-supplied minor token value.  This
+                     ** is the value of the token  */
+};
+
+
+#line 12 "smarty_internal_templateparser.y"
+class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php"
+{
+#line 14 "smarty_internal_templateparser.y"
+
+    const Err1 = "Security error: Call to private object member not allowed";
+    const Err2 = "Security error: Call to dynamic object member not allowed";
+    const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
+    // states whether the parse was successful or not
+    public $successful = true;
+    public $retvalue = 0;
+    private $lex;
+    private $internalError = false;
+    private $strip = false;
+
+    function __construct($lex, $compiler) {
+        $this->lex = $lex;
+        $this->compiler = $compiler;
+        $this->smarty = $this->compiler->smarty;
+        $this->template = $this->compiler->template;
+        $this->compiler->has_variable_string = false;
+        $this->compiler->prefix_code = array();
+        $this->prefix_number = 0;
+        $this->block_nesting_level = 0;
+        if ($this->security = isset($this->smarty->security_policy)) {
+            $this->php_handling = $this->smarty->security_policy->php_handling;
+        } else {
+            $this->php_handling = $this->smarty->php_handling;
+        }
+        $this->is_xml = false;
+        $this->asp_tags = (ini_get('asp_tags') != '0');
+        $this->current_buffer = $this->root_buffer = new _smarty_template_buffer($this);
+    }
+
+    public static function escape_start_tag($tag_text) {
+        $tag = preg_replace('/\A<\?(.*)\z/', '<<?php ?>?\1', $tag_text, -1 , $count); //Escape tag
+        return $tag;
+    }
+
+    public static function escape_end_tag($tag_text) {
+        return '?<?php ?>>';
+    }
+
+    public function compileVariable($variable) {
+        if (strpos($variable,'(') == 0) {
+            // not a variable variable
+            $var = trim($variable,'\'');
+            $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable($var, null, true, false)->nocache;
+            $this->template->properties['variables'][$var] = $this->compiler->tag_nocache|$this->compiler->nocache;
+        }
+//       return '(isset($_smarty_tpl->tpl_vars['. $variable .'])?$_smarty_tpl->tpl_vars['. $variable .']->value:$_smarty_tpl->getVariable('. $variable .')->value)';
+        return '$_smarty_tpl->tpl_vars['. $variable .']->value';
+    }
+#line 132 "smarty_internal_templateparser.php"
+
+    const TP_VERT                           =  1;
+    const TP_COLON                          =  2;
+    const TP_COMMENT                        =  3;
+    const TP_PHPSTARTTAG                    =  4;
+    const TP_PHPENDTAG                      =  5;
+    const TP_ASPSTARTTAG                    =  6;
+    const TP_ASPENDTAG                      =  7;
+    const TP_FAKEPHPSTARTTAG                =  8;
+    const TP_XMLTAG                         =  9;
+    const TP_TEXT                           = 10;
+    const TP_STRIPON                        = 11;
+    const TP_STRIPOFF                       = 12;
+    const TP_LITERALSTART                   = 13;
+    const TP_LITERALEND                     = 14;
+    const TP_LITERAL                        = 15;
+    const TP_LDEL                           = 16;
+    const TP_RDEL                           = 17;
+    const TP_DOLLAR                         = 18;
+    const TP_ID                             = 19;
+    const TP_EQUAL                          = 20;
+    const TP_PTR                            = 21;
+    const TP_LDELIF                         = 22;
+    const TP_LDELFOR                        = 23;
+    const TP_SEMICOLON                      = 24;
+    const TP_INCDEC                         = 25;
+    const TP_TO                             = 26;
+    const TP_STEP                           = 27;
+    const TP_LDELFOREACH                    = 28;
+    const TP_SPACE                          = 29;
+    const TP_AS                             = 30;
+    const TP_APTR                           = 31;
+    const TP_LDELSETFILTER                  = 32;
+    const TP_SMARTYBLOCKCHILD               = 33;
+    const TP_LDELSLASH                      = 34;
+    const TP_ATTR                           = 35;
+    const TP_INTEGER                        = 36;
+    const TP_COMMA                          = 37;
+    const TP_OPENP                          = 38;
+    const TP_CLOSEP                         = 39;
+    const TP_MATH                           = 40;
+    const TP_UNIMATH                        = 41;
+    const TP_ANDSYM                         = 42;
+    const TP_ISIN                           = 43;
+    const TP_ISDIVBY                        = 44;
+    const TP_ISNOTDIVBY                     = 45;
+    const TP_ISEVEN                         = 46;
+    const TP_ISNOTEVEN                      = 47;
+    const TP_ISEVENBY                       = 48;
+    const TP_ISNOTEVENBY                    = 49;
+    const TP_ISODD                          = 50;
+    const TP_ISNOTODD                       = 51;
+    const TP_ISODDBY                        = 52;
+    const TP_ISNOTODDBY                     = 53;
+    const TP_INSTANCEOF                     = 54;
+    const TP_QMARK                          = 55;
+    const TP_NOT                            = 56;
+    const TP_TYPECAST                       = 57;
+    const TP_HEX                            = 58;
+    const TP_DOT                            = 59;
+    const TP_SINGLEQUOTESTRING              = 60;
+    const TP_DOUBLECOLON                    = 61;
+    const TP_AT                             = 62;
+    const TP_HATCH                          = 63;
+    const TP_OPENB                          = 64;
+    const TP_CLOSEB                         = 65;
+    const TP_EQUALS                         = 66;
+    const TP_NOTEQUALS                      = 67;
+    const TP_GREATERTHAN                    = 68;
+    const TP_LESSTHAN                       = 69;
+    const TP_GREATEREQUAL                   = 70;
+    const TP_LESSEQUAL                      = 71;
+    const TP_IDENTITY                       = 72;
+    const TP_NONEIDENTITY                   = 73;
+    const TP_MOD                            = 74;
+    const TP_LAND                           = 75;
+    const TP_LOR                            = 76;
+    const TP_LXOR                           = 77;
+    const TP_QUOTE                          = 78;
+    const TP_BACKTICK                       = 79;
+    const TP_DOLLARID                       = 80;
+    const YY_NO_ACTION = 597;
+    const YY_ACCEPT_ACTION = 596;
+    const YY_ERROR_ACTION = 595;
+
+    const YY_SZ_ACTTAB = 2383;
+static public $yy_action = array(
+ /*     0 */   225,  275,  263,  276,  259,  257,  260,  390,  356,  359,
+ /*    10 */   353,  193,   18,  127,   42,  317,  381,  351,  196,  350,
+ /*    20 */     6,  108,   24,   98,  128,  190,  134,  318,   41,   41,
+ /*    30 */   249,  329,  231,   18,   43,   43,  317,   26,  298,   50,
+ /*    40 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*    50 */   341,   40,   20,  387,  308,  307,  309,  374,  254,  248,
+ /*    60 */   252,  217,  193,  385,  291,  375,  376,  377,  373,  372,
+ /*    70 */   368,  367,  369,  370,  371,  378,  379,  225,  312,  255,
+ /*    80 */   225,  225,  118,    2,  207,   76,  135,  596,   95,  281,
+ /*    90 */   271,  264,    2,  366,  315,  386,  461,  383,  232,  294,
+ /*   100 */   303,  388,  313,  389,  227,   41,  144,  225,  461,  245,
+ /*   110 */   282,   43,  218,  358,  461,  144,   50,   47,   48,   44,
+ /*   120 */    10,   13,  305,  306,   12,   11,  340,  341,   40,   20,
+ /*   130 */   105,  177,  522,   46,   46,   41,   19,  522,  143,  297,
+ /*   140 */   325,   43,  375,  376,  377,  373,  372,  368,  367,  369,
+ /*   150 */   370,  371,  378,  379,  225,  312,  293,  206,  225,  141,
+ /*   160 */   124,  225,   54,  119,  123,  225,  459,   38,  173,  246,
+ /*   170 */   319,  315,  386,  347,  455,  232,  294,  303,  459,  313,
+ /*   180 */   139,  321,   41,   31,  459,   41,   41,    2,   43,  188,
+ /*   190 */     2,   43,   43,   50,   47,   48,   44,   10,   13,  305,
+ /*   200 */   306,   12,   11,  340,  341,   40,   20,  225,  136,  301,
+ /*   210 */   144,  194,  350,  144,   46,  202,  206,  328,  198,  375,
+ /*   220 */   376,  377,  373,  372,  368,  367,  369,  370,  371,  378,
+ /*   230 */   379,   21,    9,   28,  185,   41,  318,  225,  265,  271,
+ /*   240 */   264,   43,  206,   27,  173,  206,   50,   47,   48,   44,
+ /*   250 */    10,   13,  305,  306,   12,   11,  340,  341,   40,   20,
+ /*   260 */   225,  178,   18,  212,  330,  317,   17,   32,    8,   14,
+ /*   270 */   325,  267,  375,  376,  377,  373,  372,  368,  367,  369,
+ /*   280 */   370,  371,  378,  379,  136,  363,  363,  207,   41,    4,
+ /*   290 */    46,    5,  131,  233,   43,   25,  186,  289,  318,   50,
+ /*   300 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   310 */   341,   40,   20,  225,  100,  161,   18,  355,  361,  317,
+ /*   320 */    26,  109,  360,  346,  325,  375,  376,  377,  373,  372,
+ /*   330 */   368,  367,  369,  370,  371,  378,  379,  106,  201,  172,
+ /*   340 */    25,  206,  288,   25,   18,  261,  181,  317,  325,   45,
+ /*   350 */   339,  129,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   360 */    12,   11,  340,  341,   40,   20,  225,  104,  162,   18,
+ /*   370 */    16,  205,  317,  206,  248,  238,   43,  325,  375,  376,
+ /*   380 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   390 */   255,  354,  243,  229,  206,  342,   18,  239,  242,  241,
+ /*   400 */   248,  266,  300,  330,  240,   50,   47,   48,   44,   10,
+ /*   410 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  225,
+ /*   420 */   165,  176,  184,   18,   18,   18,  253,  215,  251,  325,
+ /*   430 */   325,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   440 */   371,  378,  379,  304,  268,  159,  207,  207,  247,  206,
+ /*   450 */   148,   41,  195,  350,  325,   27,   33,   43,   50,   47,
+ /*   460 */    48,   44,   10,   13,  305,  306,   12,   11,  340,  341,
+ /*   470 */    40,   20,  163,  225,  328,  199,  133,   29,  187,   23,
+ /*   480 */   250,  325,  101,  225,  375,  376,  377,  373,  372,  368,
+ /*   490 */   367,  369,  370,  371,  378,  379,  225,  298,  207,  334,
+ /*   500 */   225,   45,  312,  103,  299,  192,  154,  364,   18,  302,
+ /*   510 */   135,  317,  285,   35,  173,  203,  320,    3,  236,    6,
+ /*   520 */   108,   41,  232,  294,  303,  134,  313,   43,  130,  249,
+ /*   530 */   329,  231,  250,  225,  280,   50,   47,   48,   44,   10,
+ /*   540 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  336,
+ /*   550 */    36,  166,  212,  230,  332,  228,  338,    8,  132,  330,
+ /*   560 */   325,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   570 */   371,  378,  379,  225,  312,  345,   37,  362,  141,  312,
+ /*   580 */    94,   77,  135,  156,  236,  182,  173,  135,  122,  204,
+ /*   590 */   315,  386,  365,  225,  232,  294,  303,  137,  313,  232,
+ /*   600 */   294,  303,  125,  313,   41,  222,  333,  180,  277,  337,
+ /*   610 */    43,  225,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   620 */    12,   11,  340,  341,   40,   20,  136,  335,  316,    5,
+ /*   630 */    22,  197,  269,   34,  173,  148,  126,  116,  375,  376,
+ /*   640 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   650 */   225,  312,  298,  225,  292,  141,  312,  258,   77,  135,
+ /*   660 */   153,  183,  318,  301,  135,  175,  284,  315,  386,  461,
+ /*   670 */   117,  232,  294,  303,  325,  313,  232,  294,  303,  382,
+ /*   680 */   313,  461,  220,  110,  329,  298,  318,  461,  329,   50,
+ /*   690 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   700 */   341,   40,   20,  225,   30,  191,   46,  189,  314,  107,
+ /*   710 */   329,  329,  146,   97,  102,  375,  376,  377,  373,  372,
+ /*   720 */   368,  367,  369,  370,  371,  378,  379,  298,  298,  298,
+ /*   730 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   740 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   750 */    12,   11,  340,  341,   40,   20,  225,  329,  329,  329,
+ /*   760 */   329,  329,  329,  329,  329,  114,  160,  115,  375,  376,
+ /*   770 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   780 */   298,  298,  298,  329,  329,  329,  329,  329,  329,  329,
+ /*   790 */   329,  329,  329,  329,  283,   50,   47,   48,   44,   10,
+ /*   800 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  329,
+ /*   810 */   225,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   820 */   329,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   830 */   371,  378,  379,  200,  329,  329,  329,  329,  329,  329,
+ /*   840 */   329,  329,  329,  329,  329,  329,  329,  329,  329,   50,
+ /*   850 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   860 */   341,   40,   20,  225,  329,  329,  329,  329,  329,  329,
+ /*   870 */   329,  329,  329,  329,  329,  375,  376,  377,  373,  372,
+ /*   880 */   368,  367,  369,  370,  371,  378,  379,  329,  329,  329,
+ /*   890 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   900 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   910 */    12,   11,  340,  341,   40,   20,  329,  329,  329,  329,
+ /*   920 */   329,  329,  329,  329,  329,  329,  329,  290,  375,  376,
+ /*   930 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   940 */   225,  312,  329,  225,  329,  141,  312,  329,   77,  135,
+ /*   950 */   152,  329,  329,  329,  135,  158,  208,  315,  386,  458,
+ /*   960 */   329,  232,  294,  303,  325,  313,  232,  294,  303,  329,
+ /*   970 */   313,  458,  223,  329,  329,  329,  318,  458,  329,   50,
+ /*   980 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   990 */   341,   40,   20,  225,  329,  329,   46,  329,  329,  329,
+ /*  1000 */   329,  329,  329,  329,  329,  375,  376,  377,  373,  372,
+ /*  1010 */   368,  367,  369,  370,  371,  378,  379,  329,  329,  329,
+ /*  1020 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*  1030 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*  1040 */    12,   11,  340,  341,   40,   20,  329,  329,  329,  329,
+ /*  1050 */   329,  329,  329,  329,  329,  329,  329,  329,  375,  376,
+ /*  1060 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*  1070 */   329,  329,  329,   50,   47,   48,   44,   10,   13,  305,
+ /*  1080 */   306,   12,   11,  340,  341,   40,   20,  329,  329,  329,
+ /*  1090 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  375,
+ /*  1100 */   376,  377,  373,  372,  368,  367,  369,  370,  371,  378,
+ /*  1110 */   379,  329,  329,  329,  329,  329,   42,  329,  145,  211,
+ /*  1120 */   329,  329,    6,  108,  329,  279,  329,  312,  134,  329,
+ /*  1130 */   329,  150,  249,  329,  231,  135,  235,   41,   39,  329,
+ /*  1140 */   329,   52,  329,   43,  311,  329,  312,  232,  294,  303,
+ /*  1150 */   147,  313,  329,  170,  135,  329,   51,   49,  331,  237,
+ /*  1160 */   296,  329,  325,  106,    1,  278,  232,  294,  303,  329,
+ /*  1170 */   313,  155,  329,   42,  318,  145,  216,  329,   96,    6,
+ /*  1180 */   108,   18,  329,  226,  317,  134,  329,  313,  329,  249,
+ /*  1190 */   329,  231,  329,  235,   41,   39,  256,  329,   52,  329,
+ /*  1200 */    43,  329,  312,  329,  329,  329,  141,  329,  329,   66,
+ /*  1210 */   119,  238,  329,   51,   49,  331,  237,  296,  315,  386,
+ /*  1220 */   106,    1,  232,  294,  303,  329,  313,  270,  329,  329,
+ /*  1230 */    42,  329,  140,   92,  329,   96,    6,  108,   18,   41,
+ /*  1240 */   169,  317,  134,  329,  273,   43,  249,  329,  231,  325,
+ /*  1250 */   235,   41,   39,  244,  329,   52,   41,   43,  329,  312,
+ /*  1260 */   329,  318,   43,  141,  329,  329,   67,  135,  225,  329,
+ /*  1270 */    51,   49,  331,  237,  296,  315,  386,  106,    1,  224,
+ /*  1280 */   294,  303,  329,  313,  310,  329,  329,   42,  329,  145,
+ /*  1290 */   213,  329,   96,    6,  108,  329,   41,  329,  329,  134,
+ /*  1300 */   329,  323,   43,  249,  329,  231,  329,  235,  329,   39,
+ /*  1310 */   329,  329,   52,   41,  329,  329,  312,  329,  329,   43,
+ /*  1320 */   141,   46,  329,   86,  135,  329,  329,   51,   49,  331,
+ /*  1330 */   237,  296,  315,  386,  106,    1,  232,  294,  303,  329,
+ /*  1340 */   313,  274,  329,  329,   42,  329,  142,  216,  329,   96,
+ /*  1350 */     6,  108,  329,   41,  329,  329,  134,  329,  348,   43,
+ /*  1360 */   249,  329,  231,  329,  235,  329,    7,  329,  329,   52,
+ /*  1370 */    41,  329,  329,  312,  329,  329,   43,  141,  329,  329,
+ /*  1380 */    90,  135,  329,  329,   51,   49,  331,  237,  296,  315,
+ /*  1390 */   386,  106,    1,  232,  294,  303,  329,  313,  295,  329,
+ /*  1400 */   329,   42,  329,  138,  216,  329,   96,    6,  108,  329,
+ /*  1410 */    41,  329,  329,  134,  329,  322,   43,  249,  329,  231,
+ /*  1420 */   329,  235,  329,   39,  329,  329,   52,   41,  329,  329,
+ /*  1430 */   312,  329,  329,   43,  141,  329,  329,   87,  135,  329,
+ /*  1440 */   329,   51,   49,  331,  237,  296,  315,  386,  106,    1,
+ /*  1450 */   232,  294,  303,  329,  313,  384,  329,  329,   42,  329,
+ /*  1460 */   131,  216,  329,   96,    6,  108,  329,   41,  329,  329,
+ /*  1470 */   134,  329,  380,   43,  249,  329,  231,  329,  235,  329,
+ /*  1480 */    15,  329,  329,   52,   41,  329,  329,  312,  329,  329,
+ /*  1490 */    43,  141,  329,  329,   79,  135,  329,  329,   51,   49,
+ /*  1500 */   331,  237,  296,  315,  386,  106,    1,  232,  294,  303,
+ /*  1510 */   329,  313,  272,  329,  329,   42,  329,  145,  210,  329,
+ /*  1520 */    96,    6,  108,  329,   41,  329,  329,  134,  329,  349,
+ /*  1530 */    43,  249,  329,  231,  329,  221,  329,   39,  329,  329,
+ /*  1540 */    52,   41,  329,  329,  312,  329,  329,   43,  141,  329,
+ /*  1550 */   329,   70,  135,  329,  329,   51,   49,  331,  237,  296,
+ /*  1560 */   315,  386,  106,    1,  232,  294,  303,  329,  313,  324,
+ /*  1570 */   329,  329,   42,  329,  145,  209,  329,   96,    6,  108,
+ /*  1580 */   329,   41,  329,  329,  134,  329,  326,   43,  249,  329,
+ /*  1590 */   231,  329,  235,  329,   39,  329,  329,   52,   41,  329,
+ /*  1600 */   329,  312,  329,  329,   43,  141,  329,  329,   74,  135,
+ /*  1610 */   329,  329,   51,   49,  331,  237,  296,  315,  386,  106,
+ /*  1620 */     1,  232,  294,  303,  329,  313,  262,  329,  329,   42,
+ /*  1630 */   329,  131,  214,  329,   96,    6,  108,  329,   41,  329,
+ /*  1640 */   329,  134,  329,  327,   43,  249,  329,  231,  329,  235,
+ /*  1650 */   329,   15,  329,  329,   52,   41,  329,  329,  312,  329,
+ /*  1660 */   329,   43,  141,  329,  329,   53,  135,  329,  329,   51,
+ /*  1670 */    49,  331,  237,  296,  315,  386,  106,  329,  232,  294,
+ /*  1680 */   303,  329,  313,  286,  329,  329,   42,  329,  131,  216,
+ /*  1690 */   329,   96,    6,  108,  329,   41,  329,  329,  134,  329,
+ /*  1700 */   343,   43,  249,  329,  231,  329,  235,  329,   15,  329,
+ /*  1710 */   329,   52,   41,  329,  329,  312,  329,  329,   43,  118,
+ /*  1720 */   329,  329,   76,  135,  329,  329,   51,   49,  331,  237,
+ /*  1730 */   296,  315,  386,  106,  329,  232,  294,  303,  329,  313,
+ /*  1740 */   329,  329,  329,  329,  504,  329,  329,  329,   96,  329,
+ /*  1750 */   357,  504,  329,  504,  504,  364,  504,  504,  329,  329,
+ /*  1760 */   329,   35,  504,  329,  504,    2,  504,    6,  108,  329,
+ /*  1770 */   198,  174,  329,  134,  329,  329,  329,  249,  329,  231,
+ /*  1780 */   325,  504,  329,   21,    9,  329,  329,  329,  144,  329,
+ /*  1790 */   329,  329,  504,  329,  312,   99,  179,  206,  141,  329,
+ /*  1800 */   329,   58,  135,  329,  329,  325,  504,  329,   21,    9,
+ /*  1810 */   315,  386,  329,  312,  232,  294,  303,  141,  313,  329,
+ /*  1820 */    71,  135,  206,  344,   37,  362,  329,  329,  329,  315,
+ /*  1830 */   386,  329,  329,  232,  294,  303,  312,  313,  329,  329,
+ /*  1840 */   141,  329,  329,   72,  135,  329,  329,  312,  329,  329,
+ /*  1850 */   329,  141,  315,  386,   65,  135,  232,  294,  303,  329,
+ /*  1860 */   313,  329,  329,  315,  386,  329,  329,  232,  294,  303,
+ /*  1870 */   329,  313,  329,  329,  312,  198,  167,  329,  141,  329,
+ /*  1880 */   329,   69,  135,  329,  329,  325,  329,  329,   21,    9,
+ /*  1890 */   315,  386,  329,  329,  232,  294,  303,  312,  313,  329,
+ /*  1900 */   329,  141,  206,  329,   85,  135,  329,  312,  329,  329,
+ /*  1910 */   329,  149,  329,  315,  386,  135,  312,  232,  294,  303,
+ /*  1920 */   141,  313,  329,   81,  135,  329,  329,  232,  294,  303,
+ /*  1930 */   329,  313,  315,  386,  329,  329,  232,  294,  303,  312,
+ /*  1940 */   313,  329,  329,  141,  329,  329,   82,  135,  329,  329,
+ /*  1950 */   312,  329,  329,  329,  141,  315,  386,   63,  135,  232,
+ /*  1960 */   294,  303,  329,  313,  329,  329,  315,  386,  329,  329,
+ /*  1970 */   232,  294,  303,  329,  313,  329,  312,  329,  329,  329,
+ /*  1980 */   141,  329,  329,   73,  135,  329,  329,  312,  329,  329,
+ /*  1990 */   329,  141,  315,  386,   83,  135,  232,  294,  303,  329,
+ /*  2000 */   313,  329,  329,  315,  386,  329,  312,  232,  294,  303,
+ /*  2010 */   141,  313,  329,   89,  135,  329,  329,  329,  329,  329,
+ /*  2020 */   329,  329,  315,  386,  329,  312,  232,  294,  303,  111,
+ /*  2030 */   313,  329,   68,  135,  329,  329,  312,  329,  329,  329,
+ /*  2040 */   141,  315,  386,   62,  135,  232,  294,  303,  329,  313,
+ /*  2050 */   329,  329,  315,  386,  329,  329,  232,  294,  303,  329,
+ /*  2060 */   313,  329,  312,  329,  329,  329,  141,  329,  329,   61,
+ /*  2070 */   135,  329,  329,  312,  329,  329,  329,  141,  315,  386,
+ /*  2080 */    91,  135,  232,  294,  303,  329,  313,  329,  329,  315,
+ /*  2090 */   386,  329,  312,  232,  294,  303,  141,  313,  329,   78,
+ /*  2100 */   135,  329,  329,  329,  329,  329,  329,  329,  315,  386,
+ /*  2110 */   329,  312,  232,  294,  303,  141,  313,  329,   66,  135,
+ /*  2120 */   329,  329,  312,  329,  329,  329,  141,  315,  386,   80,
+ /*  2130 */   135,  232,  294,  303,  329,  313,  329,  329,  315,  386,
+ /*  2140 */   329,  329,  232,  294,  303,  329,  313,  329,  312,  329,
+ /*  2150 */   329,  329,  113,  329,  329,   88,  135,  329,  329,  312,
+ /*  2160 */   329,  329,  329,  112,  315,  386,   84,  135,  232,  294,
+ /*  2170 */   303,  329,  313,  329,  329,  315,  386,  329,  312,  232,
+ /*  2180 */   294,  303,  141,  313,  329,   57,  135,  329,  329,  329,
+ /*  2190 */   329,  329,  329,  329,  315,  386,  329,  312,  232,  294,
+ /*  2200 */   303,   93,  313,  329,   59,  121,  329,  329,  312,  329,
+ /*  2210 */   329,  329,  141,  315,  386,   75,  135,  232,  294,  303,
+ /*  2220 */   329,  313,  329,  329,  315,  386,  329,  329,  232,  294,
+ /*  2230 */   303,  329,  313,  329,  312,  329,  329,  329,  141,  329,
+ /*  2240 */   329,   60,  135,  329,  329,  312,  329,  329,  329,  141,
+ /*  2250 */   315,  386,   64,  135,  232,  294,  303,  329,  313,  329,
+ /*  2260 */   329,  315,  386,  329,  312,  232,  294,  303,  120,  313,
+ /*  2270 */   329,   55,  135,  329,  329,  329,  329,  329,  329,  329,
+ /*  2280 */   315,  386,  329,  312,  232,  294,  303,   93,  313,  329,
+ /*  2290 */    56,  121,  225,  329,  312,  329,  198,  164,  157,  315,
+ /*  2300 */   386,  329,  135,  219,  294,  303,  325,  313,  352,   21,
+ /*  2310 */     9,  287,  234,  329,  232,  294,  303,  329,  313,  329,
+ /*  2320 */    41,  329,  329,  206,  312,  329,   43,  329,  151,    2,
+ /*  2330 */   329,  329,  135,  329,  329,  329,  329,  329,  329,  329,
+ /*  2340 */   198,  168,  329,  329,  232,  294,  303,  329,  313,  329,
+ /*  2350 */   325,  329,  144,   21,    9,  198,  171,  329,  329,  329,
+ /*  2360 */   329,  329,  329,  329,  329,  325,  329,  206,   21,    9,
+ /*  2370 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*  2380 */   329,  329,  206,
+    );
+    static public $yy_lookahead = array(
+ /*     0 */     1,    3,    4,    5,    6,    7,    8,    9,   10,   11,
+ /*    10 */    12,   13,   16,   98,   16,   19,   17,   17,  113,  114,
+ /*    20 */    22,   23,   16,   97,   18,   19,   28,  112,   29,   29,
+ /*    30 */    32,   33,   34,   16,   35,   35,   19,   20,  112,   40,
+ /*    40 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*    50 */    51,   52,   53,    4,    5,    6,    7,    8,   62,   93,
+ /*    60 */    94,   95,   13,   14,   15,   66,   67,   68,   69,   70,
+ /*    70 */    71,   72,   73,   74,   75,   76,   77,    1,   85,   62,
+ /*    80 */     1,    1,   89,   38,  117,   92,   93,   82,   83,   84,
+ /*    90 */    85,   86,   38,   17,  101,  102,   17,   17,  105,  106,
+ /*   100 */   107,   86,  109,   88,   59,   29,   61,    1,   29,   30,
+ /*   110 */    65,   35,  119,  120,   35,   61,   40,   41,   42,   43,
+ /*   120 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+ /*   130 */    90,   91,   59,   54,   54,   29,   16,   64,   18,   19,
+ /*   140 */   100,   35,   66,   67,   68,   69,   70,   71,   72,   73,
+ /*   150 */    74,   75,   76,   77,    1,   85,   36,  117,    1,   89,
+ /*   160 */    18,    1,   92,   93,   94,    1,   17,   20,   21,   20,
+ /*   170 */    17,  101,  102,   17,   17,  105,  106,  107,   29,  109,
+ /*   180 */    38,   17,   29,   31,   35,   29,   29,   38,   35,   90,
+ /*   190 */    38,   35,   35,   40,   41,   42,   43,   44,   45,   46,
+ /*   200 */    47,   48,   49,   50,   51,   52,   53,    1,   61,  111,
+ /*   210 */    61,  113,  114,   61,   54,   90,  117,  118,   90,   66,
+ /*   220 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
+ /*   230 */    77,  103,  104,   27,  110,   29,  112,    1,   84,   85,
+ /*   240 */    86,   35,  117,   20,   21,  117,   40,   41,   42,   43,
+ /*   250 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+ /*   260 */     1,   91,   16,   59,   25,   19,   20,   31,   64,   16,
+ /*   270 */   100,   25,   66,   67,   68,   69,   70,   71,   72,   73,
+ /*   280 */    74,   75,   76,   77,   61,   85,   85,  117,   29,   37,
+ /*   290 */    54,   38,   18,   19,   35,   37,  110,   39,  112,   40,
+ /*   300 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   310 */    51,   52,   53,    1,   90,   91,   16,   65,   79,   19,
+ /*   320 */    20,  121,  122,  122,  100,   66,   67,   68,   69,   70,
+ /*   330 */    71,   72,   73,   74,   75,   76,   77,   63,   24,   91,
+ /*   340 */    37,  117,   39,   37,   16,   39,   90,   19,  100,    2,
+ /*   350 */    19,   37,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   360 */    48,   49,   50,   51,   52,   53,    1,   90,   91,   16,
+ /*   370 */    29,   19,   19,  117,   93,   94,   35,  100,   66,   67,
+ /*   380 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   390 */    62,   79,   96,   62,  117,   17,   16,   18,   19,   19,
+ /*   400 */    93,   94,   19,   25,   39,   40,   41,   42,   43,   44,
+ /*   410 */    45,   46,   47,   48,   49,   50,   51,   52,   53,    1,
+ /*   420 */    91,   91,   90,   16,   16,   16,   19,   19,   19,  100,
+ /*   430 */   100,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   440 */    75,   76,   77,  108,   29,   91,  117,  117,   30,  117,
+ /*   450 */   115,   29,  113,  114,  100,   20,   96,   35,   40,   41,
+ /*   460 */    42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
+ /*   470 */    52,   53,   91,    1,  118,   99,   18,   26,  110,   20,
+ /*   480 */     2,  100,   97,    1,   66,   67,   68,   69,   70,   71,
+ /*   490 */    72,   73,   74,   75,   76,   77,    1,  112,  117,   17,
+ /*   500 */     1,    2,   85,   99,   19,  110,   89,   10,   16,   19,
+ /*   510 */    93,   19,   17,   16,   21,   99,   17,   38,   59,   22,
+ /*   520 */    23,   29,  105,  106,  107,   28,  109,   35,   18,   32,
+ /*   530 */    33,   34,    2,    1,   65,   40,   41,   42,   43,   44,
+ /*   540 */    45,   46,   47,   48,   49,   50,   51,   52,   53,   17,
+ /*   550 */    20,   91,   59,   21,   36,   19,   19,   64,   19,   25,
+ /*   560 */   100,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   570 */    75,   76,   77,    1,   85,   78,   79,   80,   89,   85,
+ /*   580 */    19,   92,   93,   89,   59,   63,   21,   93,   19,   17,
+ /*   590 */   101,  102,   17,    1,  105,  106,  107,   18,  109,  105,
+ /*   600 */   106,  107,   18,  109,   29,  116,   36,   63,   19,   17,
+ /*   610 */    35,    1,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   620 */    48,   49,   50,   51,   52,   53,   61,   17,  108,   38,
+ /*   630 */     2,   19,   39,   55,   21,  115,   18,   97,   66,   67,
+ /*   640 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   650 */     1,   85,  112,    1,  100,   89,   85,  115,   92,   93,
+ /*   660 */    89,  110,  112,  111,   93,   91,   17,  101,  102,   17,
+ /*   670 */    97,  105,  106,  107,  100,  109,  105,  106,  107,   14,
+ /*   680 */   109,   29,  116,   87,  123,  112,  112,   35,  123,   40,
+ /*   690 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   700 */    51,   52,   53,    1,    2,  110,   54,  110,  114,  110,
+ /*   710 */   123,  123,   97,   97,   97,   66,   67,   68,   69,   70,
+ /*   720 */    71,   72,   73,   74,   75,   76,   77,  112,  112,  112,
+ /*   730 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   740 */   123,  123,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   750 */    48,   49,   50,   51,   52,   53,    1,  123,  123,  123,
+ /*   760 */   123,  123,  123,  123,  123,   97,   97,   97,   66,   67,
+ /*   770 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   780 */   112,  112,  112,  123,  123,  123,  123,  123,  123,  123,
+ /*   790 */   123,  123,  123,  123,   39,   40,   41,   42,   43,   44,
+ /*   800 */    45,   46,   47,   48,   49,   50,   51,   52,   53,  123,
+ /*   810 */     1,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   820 */   123,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   830 */    75,   76,   77,   24,  123,  123,  123,  123,  123,  123,
+ /*   840 */   123,  123,  123,  123,  123,  123,  123,  123,  123,   40,
+ /*   850 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   860 */    51,   52,   53,    1,  123,  123,  123,  123,  123,  123,
+ /*   870 */   123,  123,  123,  123,  123,   66,   67,   68,   69,   70,
+ /*   880 */    71,   72,   73,   74,   75,   76,   77,  123,  123,  123,
+ /*   890 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   900 */   123,  123,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   910 */    48,   49,   50,   51,   52,   53,  123,  123,  123,  123,
+ /*   920 */   123,  123,  123,  123,  123,  123,  123,   65,   66,   67,
+ /*   930 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   940 */     1,   85,  123,    1,  123,   89,   85,  123,   92,   93,
+ /*   950 */    89,  123,  123,  123,   93,   91,   17,  101,  102,   17,
+ /*   960 */   123,  105,  106,  107,  100,  109,  105,  106,  107,  123,
+ /*   970 */   109,   29,  116,  123,  123,  123,  112,   35,  123,   40,
+ /*   980 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   990 */    51,   52,   53,    1,  123,  123,   54,  123,  123,  123,
+ /*  1000 */   123,  123,  123,  123,  123,   66,   67,   68,   69,   70,
+ /*  1010 */    71,   72,   73,   74,   75,   76,   77,  123,  123,  123,
+ /*  1020 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*  1030 */   123,  123,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*  1040 */    48,   49,   50,   51,   52,   53,  123,  123,  123,  123,
+ /*  1050 */   123,  123,  123,  123,  123,  123,  123,  123,   66,   67,
+ /*  1060 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*  1070 */   123,  123,  123,   40,   41,   42,   43,   44,   45,   46,
+ /*  1080 */    47,   48,   49,   50,   51,   52,   53,  123,  123,  123,
+ /*  1090 */   123,  123,  123,  123,  123,  123,  123,  123,  123,   66,
+ /*  1100 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
+ /*  1110 */    77,  123,  123,  123,  123,  123,   16,  123,   18,   19,
+ /*  1120 */   123,  123,   22,   23,  123,   17,  123,   85,   28,  123,
+ /*  1130 */   123,   89,   32,   33,   34,   93,   36,   29,   38,  123,
+ /*  1140 */   123,   41,  123,   35,  102,  123,   85,  105,  106,  107,
+ /*  1150 */    89,  109,  123,   91,   93,  123,   56,   57,   58,   59,
+ /*  1160 */    60,  123,  100,   63,   64,   65,  105,  106,  107,  123,
+ /*  1170 */   109,   93,  123,   16,  112,   18,   19,  123,   78,   22,
+ /*  1180 */    23,   16,  123,  105,   19,   28,  123,  109,  123,   32,
+ /*  1190 */    33,   34,  123,   36,   29,   38,   31,  123,   41,  123,
+ /*  1200 */    35,  123,   85,  123,  123,  123,   89,  123,  123,   92,
+ /*  1210 */    93,   94,  123,   56,   57,   58,   59,   60,  101,  102,
+ /*  1220 */    63,   64,  105,  106,  107,  123,  109,   17,  123,  123,
+ /*  1230 */    16,  123,   18,   19,  123,   78,   22,   23,   16,   29,
+ /*  1240 */    91,   19,   28,  123,   17,   35,   32,   33,   34,  100,
+ /*  1250 */    36,   29,   38,   31,  123,   41,   29,   35,  123,   85,
+ /*  1260 */   123,  112,   35,   89,  123,  123,   92,   93,    1,  123,
+ /*  1270 */    56,   57,   58,   59,   60,  101,  102,   63,   64,  105,
+ /*  1280 */   106,  107,  123,  109,   17,  123,  123,   16,  123,   18,
+ /*  1290 */    19,  123,   78,   22,   23,  123,   29,  123,  123,   28,
+ /*  1300 */   123,   17,   35,   32,   33,   34,  123,   36,  123,   38,
+ /*  1310 */   123,  123,   41,   29,  123,  123,   85,  123,  123,   35,
+ /*  1320 */    89,   54,  123,   92,   93,  123,  123,   56,   57,   58,
+ /*  1330 */    59,   60,  101,  102,   63,   64,  105,  106,  107,  123,
+ /*  1340 */   109,   17,  123,  123,   16,  123,   18,   19,  123,   78,
+ /*  1350 */    22,   23,  123,   29,  123,  123,   28,  123,   17,   35,
+ /*  1360 */    32,   33,   34,  123,   36,  123,   38,  123,  123,   41,
+ /*  1370 */    29,  123,  123,   85,  123,  123,   35,   89,  123,  123,
+ /*  1380 */    92,   93,  123,  123,   56,   57,   58,   59,   60,  101,
+ /*  1390 */   102,   63,   64,  105,  106,  107,  123,  109,   17,  123,
+ /*  1400 */   123,   16,  123,   18,   19,  123,   78,   22,   23,  123,
+ /*  1410 */    29,  123,  123,   28,  123,   17,   35,   32,   33,   34,
+ /*  1420 */   123,   36,  123,   38,  123,  123,   41,   29,  123,  123,
+ /*  1430 */    85,  123,  123,   35,   89,  123,  123,   92,   93,  123,
+ /*  1440 */   123,   56,   57,   58,   59,   60,  101,  102,   63,   64,
+ /*  1450 */   105,  106,  107,  123,  109,   17,  123,  123,   16,  123,
+ /*  1460 */    18,   19,  123,   78,   22,   23,  123,   29,  123,  123,
+ /*  1470 */    28,  123,   17,   35,   32,   33,   34,  123,   36,  123,
+ /*  1480 */    38,  123,  123,   41,   29,  123,  123,   85,  123,  123,
+ /*  1490 */    35,   89,  123,  123,   92,   93,  123,  123,   56,   57,
+ /*  1500 */    58,   59,   60,  101,  102,   63,   64,  105,  106,  107,
+ /*  1510 */   123,  109,   17,  123,  123,   16,  123,   18,   19,  123,
+ /*  1520 */    78,   22,   23,  123,   29,  123,  123,   28,  123,   17,
+ /*  1530 */    35,   32,   33,   34,  123,   36,  123,   38,  123,  123,
+ /*  1540 */    41,   29,  123,  123,   85,  123,  123,   35,   89,  123,
+ /*  1550 */   123,   92,   93,  123,  123,   56,   57,   58,   59,   60,
+ /*  1560 */   101,  102,   63,   64,  105,  106,  107,  123,  109,   17,
+ /*  1570 */   123,  123,   16,  123,   18,   19,  123,   78,   22,   23,
+ /*  1580 */   123,   29,  123,  123,   28,  123,   17,   35,   32,   33,
+ /*  1590 */    34,  123,   36,  123,   38,  123,  123,   41,   29,  123,
+ /*  1600 */   123,   85,  123,  123,   35,   89,  123,  123,   92,   93,
+ /*  1610 */   123,  123,   56,   57,   58,   59,   60,  101,  102,   63,
+ /*  1620 */    64,  105,  106,  107,  123,  109,   17,  123,  123,   16,
+ /*  1630 */   123,   18,   19,  123,   78,   22,   23,  123,   29,  123,
+ /*  1640 */   123,   28,  123,   17,   35,   32,   33,   34,  123,   36,
+ /*  1650 */   123,   38,  123,  123,   41,   29,  123,  123,   85,  123,
+ /*  1660 */   123,   35,   89,  123,  123,   92,   93,  123,  123,   56,
+ /*  1670 */    57,   58,   59,   60,  101,  102,   63,  123,  105,  106,
+ /*  1680 */   107,  123,  109,   17,  123,  123,   16,  123,   18,   19,
+ /*  1690 */   123,   78,   22,   23,  123,   29,  123,  123,   28,  123,
+ /*  1700 */    17,   35,   32,   33,   34,  123,   36,  123,   38,  123,
+ /*  1710 */   123,   41,   29,  123,  123,   85,  123,  123,   35,   89,
+ /*  1720 */   123,  123,   92,   93,  123,  123,   56,   57,   58,   59,
+ /*  1730 */    60,  101,  102,   63,  123,  105,  106,  107,  123,  109,
+ /*  1740 */   123,  123,  123,  123,   17,  123,  123,  123,   78,  123,
+ /*  1750 */   120,   24,  123,   26,   27,   10,   29,   30,  123,  123,
+ /*  1760 */   123,   16,   35,  123,   37,   38,   39,   22,   23,  123,
+ /*  1770 */    90,   91,  123,   28,  123,  123,  123,   32,   33,   34,
+ /*  1780 */   100,   54,  123,  103,  104,  123,  123,  123,   61,  123,
+ /*  1790 */   123,  123,   65,  123,   85,   90,   91,  117,   89,  123,
+ /*  1800 */   123,   92,   93,  123,  123,  100,   79,  123,  103,  104,
+ /*  1810 */   101,  102,  123,   85,  105,  106,  107,   89,  109,  123,
+ /*  1820 */    92,   93,  117,   78,   79,   80,  123,  123,  123,  101,
+ /*  1830 */   102,  123,  123,  105,  106,  107,   85,  109,  123,  123,
+ /*  1840 */    89,  123,  123,   92,   93,  123,  123,   85,  123,  123,
+ /*  1850 */   123,   89,  101,  102,   92,   93,  105,  106,  107,  123,
+ /*  1860 */   109,  123,  123,  101,  102,  123,  123,  105,  106,  107,
+ /*  1870 */   123,  109,  123,  123,   85,   90,   91,  123,   89,  123,
+ /*  1880 */   123,   92,   93,  123,  123,  100,  123,  123,  103,  104,
+ /*  1890 */   101,  102,  123,  123,  105,  106,  107,   85,  109,  123,
+ /*  1900 */   123,   89,  117,  123,   92,   93,  123,   85,  123,  123,
+ /*  1910 */   123,   89,  123,  101,  102,   93,   85,  105,  106,  107,
+ /*  1920 */    89,  109,  123,   92,   93,  123,  123,  105,  106,  107,
+ /*  1930 */   123,  109,  101,  102,  123,  123,  105,  106,  107,   85,
+ /*  1940 */   109,  123,  123,   89,  123,  123,   92,   93,  123,  123,
+ /*  1950 */    85,  123,  123,  123,   89,  101,  102,   92,   93,  105,
+ /*  1960 */   106,  107,  123,  109,  123,  123,  101,  102,  123,  123,
+ /*  1970 */   105,  106,  107,  123,  109,  123,   85,  123,  123,  123,
+ /*  1980 */    89,  123,  123,   92,   93,  123,  123,   85,  123,  123,
+ /*  1990 */   123,   89,  101,  102,   92,   93,  105,  106,  107,  123,
+ /*  2000 */   109,  123,  123,  101,  102,  123,   85,  105,  106,  107,
+ /*  2010 */    89,  109,  123,   92,   93,  123,  123,  123,  123,  123,
+ /*  2020 */   123,  123,  101,  102,  123,   85,  105,  106,  107,   89,
+ /*  2030 */   109,  123,   92,   93,  123,  123,   85,  123,  123,  123,
+ /*  2040 */    89,  101,  102,   92,   93,  105,  106,  107,  123,  109,
+ /*  2050 */   123,  123,  101,  102,  123,  123,  105,  106,  107,  123,
+ /*  2060 */   109,  123,   85,  123,  123,  123,   89,  123,  123,   92,
+ /*  2070 */    93,  123,  123,   85,  123,  123,  123,   89,  101,  102,
+ /*  2080 */    92,   93,  105,  106,  107,  123,  109,  123,  123,  101,
+ /*  2090 */   102,  123,   85,  105,  106,  107,   89,  109,  123,   92,
+ /*  2100 */    93,  123,  123,  123,  123,  123,  123,  123,  101,  102,
+ /*  2110 */   123,   85,  105,  106,  107,   89,  109,  123,   92,   93,
+ /*  2120 */   123,  123,   85,  123,  123,  123,   89,  101,  102,   92,
+ /*  2130 */    93,  105,  106,  107,  123,  109,  123,  123,  101,  102,
+ /*  2140 */   123,  123,  105,  106,  107,  123,  109,  123,   85,  123,
+ /*  2150 */   123,  123,   89,  123,  123,   92,   93,  123,  123,   85,
+ /*  2160 */   123,  123,  123,   89,  101,  102,   92,   93,  105,  106,
+ /*  2170 */   107,  123,  109,  123,  123,  101,  102,  123,   85,  105,
+ /*  2180 */   106,  107,   89,  109,  123,   92,   93,  123,  123,  123,
+ /*  2190 */   123,  123,  123,  123,  101,  102,  123,   85,  105,  106,
+ /*  2200 */   107,   89,  109,  123,   92,   93,  123,  123,   85,  123,
+ /*  2210 */   123,  123,   89,  101,  102,   92,   93,  105,  106,  107,
+ /*  2220 */   123,  109,  123,  123,  101,  102,  123,  123,  105,  106,
+ /*  2230 */   107,  123,  109,  123,   85,  123,  123,  123,   89,  123,
+ /*  2240 */   123,   92,   93,  123,  123,   85,  123,  123,  123,   89,
+ /*  2250 */   101,  102,   92,   93,  105,  106,  107,  123,  109,  123,
+ /*  2260 */   123,  101,  102,  123,   85,  105,  106,  107,   89,  109,
+ /*  2270 */   123,   92,   93,  123,  123,  123,  123,  123,  123,  123,
+ /*  2280 */   101,  102,  123,   85,  105,  106,  107,   89,  109,  123,
+ /*  2290 */    92,   93,    1,  123,   85,  123,   90,   91,   89,  101,
+ /*  2300 */   102,  123,   93,  105,  106,  107,  100,  109,   17,  103,
+ /*  2310 */   104,  102,   21,  123,  105,  106,  107,  123,  109,  123,
+ /*  2320 */    29,  123,  123,  117,   85,  123,   35,  123,   89,   38,
+ /*  2330 */   123,  123,   93,  123,  123,  123,  123,  123,  123,  123,
+ /*  2340 */    90,   91,  123,  123,  105,  106,  107,  123,  109,  123,
+ /*  2350 */   100,  123,   61,  103,  104,   90,   91,  123,  123,  123,
+ /*  2360 */   123,  123,  123,  123,  123,  100,  123,  117,  103,  104,
+ /*  2370 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*  2380 */   123,  123,  117,
+);
+    const YY_SHIFT_USE_DFLT = -5;
+    const YY_SHIFT_MAX = 256;
+    static public $yy_shift_ofst = array(
+ /*     0 */    -2, 1271, 1157, 1157, 1271, 1157, 1328, 1328, 1100, 1157,
+ /*    10 */  1157, 1157, 1157, 1157, 1157, 1157, 1499, 1157, 1157, 1157,
+ /*    20 */  1157, 1157, 1556, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+ /*    30 */  1157, 1157, 1157, 1157, 1385, 1214, 1157, 1157, 1157, 1157,
+ /*    40 */  1157, 1499, 1214, 1157, 1442, 1442, 1613, 1670, 1670, 1670,
+ /*    50 */  1670, 1670, 1670,  206,  153,   76,   -1,  259,  259,  259,
+ /*    60 */   809,  939,  755,  862,  702,  649,  365,  312,  418,  495,
+ /*    70 */   572,  992,  992,  992,  992,  992,  992,  992,  992,  992,
+ /*    80 */   992,  992,  992,  992,  992,  992,  992,  992,  992,  992,
+ /*    90 */  1033, 1033, 2291, 1267,  106,   -2, 1745, 1222, 1165,  157,
+ /*   100 */   157,  492,  492,  499,  106,  106,  274,  493,  142,  497,
+ /*   110 */    49,   79,  942,  652,  246,   17,  328,  300,  236,  223,
+ /*   120 */    80,  147,  532, 1227,  353,  353,  353,  422,  407,  142,
+ /*   130 */   353,  353,  610,  353,  341,  565,  379,  353,  380,  142,
+ /*   140 */   408,  160,  409,  353,  379,  409,  353,  472,  613,  472,
+ /*   150 */   472,  472,  472,  472,  472,  613,  472,   -5, 1284, 1210,
+ /*   160 */    -4, 1108,    0,  156,  575, 1683, 1552, 1512, 1569, 1609,
+ /*   170 */  1666, 1324, 1626,    6, 1495, 1398, 1381, 1341, 1438, 1455,
+ /*   180 */    73,  482,   73,  204,  592,  204,  204,  204,  164,  204,
+ /*   190 */   253,  204,  204,  665,  613,  613,  613,  479,  472,  347,
+ /*   200 */   415,  415,  472,  347,   -5,   -5,   -5,   -5,   -5, 1727,
+ /*   210 */   149,   45,  120,  152,   54,  530,   54,  314,  252,  378,
+ /*   220 */   306,  459,  258,  303,  239,  331,  522,  536,  469,  537,
+ /*   230 */   539,  569,  534,  544,  561,  525,  518,  570,  593,  612,
+ /*   240 */   578,  628,  591,  579,  510,  584,  589,  458,  435,  352,
+ /*   250 */   485,  478,  451,  479,  490,  383,  618,
+);
+    const YY_REDUCE_USE_DFLT = -96;
+    const YY_REDUCE_MAX = 208;
+    static public $yy_reduce_ofst = array(
+ /*     0 */     5,   -7,  489,  566, 1630,  856,   70, 1117, 1865, 1854,
+ /*    10 */  1831, 1812, 1891, 1902, 1977, 1951, 1940, 1921, 1789, 1762,
+ /*    20 */  1402, 1345, 1288, 1231, 1459, 1516, 1751, 1728, 1709, 1573,
+ /*    30 */  1988, 2007, 2123, 2149, 2160, 2198, 2179, 1174, 2093, 2026,
+ /*    40 */  2037, 2063, 2112, 2074, 1042, 2209, 1822, 2239, 1061,  861,
+ /*    50 */   494,  417,  571, 2265, 2250, 2206, 1705, 1785, 1680, 1705,
+ /*    60 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    70 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    80 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    90 */   128,  128,  277,  224,   40,  154,  200,  864, 1062,  170,
+ /*   100 */   330,  574, 1149,   99,  329,  381, 1078,   98,  -34,  201,
+ /*   110 */    15,  125,  125,  125,  -85,  124,  124,  124,  125,  -95,
+ /*   120 */   125,  -95,  332,  354,  573,  616,  617,  460,  615,  307,
+ /*   130 */   385,  540,  256,  -74,  248,  -95,  335,  668,  540,  281,
+ /*   140 */   540,  125,  670,  669,  520,  540,  186,  125,  339,  125,
+ /*   150 */   125,  125,  125,  125,  125,  -95,  125,  125,  554,  554,
+ /*   160 */   550,  554,  554,  554,  554,  554,  554,  554,  554,  554,
+ /*   170 */   554,  554,  554,  542,  554,  554,  554,  554,  554,  554,
+ /*   180 */   595,  -33,  551,  552,  -33,  552,  552,  552,  -33,  552,
+ /*   190 */   597,  552,  552,  596,  594,  594,  594,  599,  -33,  356,
+ /*   200 */   296,  360,  -33,  356,  395,  404,  376,  416,  368,
+);
+    static public $yyExpectedTokens = array(
+        /* 0 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 22, 23, 28, 32, 33, 34, ),
+        /* 1 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 2 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 3 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 4 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 5 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 6 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 7 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 8 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 65, 78, ),
+        /* 9 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 10 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 11 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 12 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 13 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 14 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 15 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 16 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 17 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 18 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 19 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 20 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 21 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 22 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 23 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 24 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 25 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 26 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 27 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 28 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 29 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 30 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 31 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 32 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 33 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 34 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 35 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 36 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 37 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 38 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 39 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 40 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 41 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 42 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 43 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 44 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 45 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
+        /* 46 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 47 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 48 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 49 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 50 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 51 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 52 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
+        /* 53 */ array(1, 27, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 54 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 55 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 56 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 57 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 58 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 59 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 60 */ array(1, 24, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 61 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 62 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 63 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 64 */ array(1, 2, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 65 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 66 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 67 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, ),
+        /* 68 */ array(1, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 69 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 70 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 71 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 72 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 73 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 74 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 75 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 76 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 77 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 78 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 79 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 80 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 81 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 82 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 83 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 84 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 85 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 86 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 87 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 88 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 89 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 90 */ array(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 91 */ array(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 92 */ array(1, 17, 21, 29, 35, 38, 61, ),
+        /* 93 */ array(1, 17, 29, 35, 54, ),
+        /* 94 */ array(1, 29, 35, ),
+        /* 95 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 22, 23, 28, 32, 33, 34, ),
+        /* 96 */ array(10, 16, 22, 23, 28, 32, 33, 34, 78, 79, 80, ),
+        /* 97 */ array(16, 19, 29, 31, 35, ),
+        /* 98 */ array(16, 19, 29, 31, 35, ),
+        /* 99 */ array(1, 17, 29, 35, ),
+        /* 100 */ array(1, 17, 29, 35, ),
+        /* 101 */ array(16, 19, 29, 35, ),
+        /* 102 */ array(16, 19, 29, 35, ),
+        /* 103 */ array(1, 2, 17, ),
+        /* 104 */ array(1, 29, 35, ),
+        /* 105 */ array(1, 29, 35, ),
+        /* 106 */ array(18, 19, 63, ),
+        /* 107 */ array(21, 59, 64, ),
+        /* 108 */ array(18, 38, ),
+        /* 109 */ array(10, 16, 22, 23, 28, 32, 33, 34, 78, 79, 80, ),
+        /* 110 */ array(4, 5, 6, 7, 8, 13, 14, 15, ),
+        /* 111 */ array(1, 17, 29, 30, 35, 54, ),
+        /* 112 */ array(1, 17, 29, 35, 54, ),
+        /* 113 */ array(1, 17, 29, 35, 54, ),
+        /* 114 */ array(16, 19, 20, 25, ),
+        /* 115 */ array(16, 19, 20, 62, ),
+        /* 116 */ array(16, 19, 62, ),
+        /* 117 */ array(16, 19, 20, ),
+        /* 118 */ array(1, 31, 54, ),
+        /* 119 */ array(20, 21, 61, ),
+        /* 120 */ array(1, 17, 54, ),
+        /* 121 */ array(20, 21, 61, ),
+        /* 122 */ array(1, 17, 21, ),
+        /* 123 */ array(17, 29, 35, ),
+        /* 124 */ array(16, 19, ),
+        /* 125 */ array(16, 19, ),
+        /* 126 */ array(16, 19, ),
+        /* 127 */ array(29, 35, ),
+        /* 128 */ array(16, 19, ),
+        /* 129 */ array(18, 38, ),
+        /* 130 */ array(16, 19, ),
+        /* 131 */ array(16, 19, ),
+        /* 132 */ array(1, 17, ),
+        /* 133 */ array(16, 19, ),
+        /* 134 */ array(29, 35, ),
+        /* 135 */ array(21, 61, ),
+        /* 136 */ array(18, 19, ),
+        /* 137 */ array(16, 19, ),
+        /* 138 */ array(16, 19, ),
+        /* 139 */ array(18, 38, ),
+        /* 140 */ array(16, 19, ),
+        /* 141 */ array(1, 54, ),
+        /* 142 */ array(16, 19, ),
+        /* 143 */ array(16, 19, ),
+        /* 144 */ array(18, 19, ),
+        /* 145 */ array(16, 19, ),
+        /* 146 */ array(16, 19, ),
+        /* 147 */ array(1, ),
+        /* 148 */ array(21, ),
+        /* 149 */ array(1, ),
+        /* 150 */ array(1, ),
+        /* 151 */ array(1, ),
+        /* 152 */ array(1, ),
+        /* 153 */ array(1, ),
+        /* 154 */ array(1, ),
+        /* 155 */ array(21, ),
+        /* 156 */ array(1, ),
+        /* 157 */ array(),
+        /* 158 */ array(17, 29, 35, ),
+        /* 159 */ array(17, 29, 35, ),
+        /* 160 */ array(16, 19, 62, ),
+        /* 161 */ array(17, 29, 35, ),
+        /* 162 */ array(17, 29, 35, ),
+        /* 163 */ array(17, 29, 35, ),
+        /* 164 */ array(17, 29, 35, ),
+        /* 165 */ array(17, 29, 35, ),
+        /* 166 */ array(17, 29, 35, ),
+        /* 167 */ array(17, 29, 35, ),
+        /* 168 */ array(17, 29, 35, ),
+        /* 169 */ array(17, 29, 35, ),
+        /* 170 */ array(17, 29, 35, ),
+        /* 171 */ array(17, 29, 35, ),
+        /* 172 */ array(17, 29, 35, ),
+        /* 173 */ array(16, 18, 19, ),
+        /* 174 */ array(17, 29, 35, ),
+        /* 175 */ array(17, 29, 35, ),
+        /* 176 */ array(17, 29, 35, ),
+        /* 177 */ array(17, 29, 35, ),
+        /* 178 */ array(17, 29, 35, ),
+        /* 179 */ array(17, 29, 35, ),
+        /* 180 */ array(59, 64, ),
+        /* 181 */ array(1, 17, ),
+        /* 182 */ array(59, 64, ),
+        /* 183 */ array(59, 64, ),
+        /* 184 */ array(1, 17, ),
+        /* 185 */ array(59, 64, ),
+        /* 186 */ array(59, 64, ),
+        /* 187 */ array(59, 64, ),
+        /* 188 */ array(1, 17, ),
+        /* 189 */ array(59, 64, ),
+        /* 190 */ array(16, 38, ),
+        /* 191 */ array(59, 64, ),
+        /* 192 */ array(59, 64, ),
+        /* 193 */ array(14, ),
+        /* 194 */ array(21, ),
+        /* 195 */ array(21, ),
+        /* 196 */ array(21, ),
+        /* 197 */ array(38, ),
+        /* 198 */ array(1, ),
+        /* 199 */ array(2, ),
+        /* 200 */ array(29, ),
+        /* 201 */ array(29, ),
+        /* 202 */ array(1, ),
+        /* 203 */ array(2, ),
+        /* 204 */ array(),
+        /* 205 */ array(),
+        /* 206 */ array(),
+        /* 207 */ array(),
+        /* 208 */ array(),
+        /* 209 */ array(17, 24, 26, 27, 29, 30, 35, 37, 38, 39, 54, 61, 65, 79, ),
+        /* 210 */ array(17, 20, 29, 35, 38, 61, ),
+        /* 211 */ array(38, 59, 61, 65, ),
+        /* 212 */ array(16, 18, 19, 36, ),
+        /* 213 */ array(31, 38, 61, ),
+        /* 214 */ array(38, 61, ),
+        /* 215 */ array(2, 20, ),
+        /* 216 */ array(38, 61, ),
+        /* 217 */ array(24, 37, ),
+        /* 218 */ array(37, 65, ),
+        /* 219 */ array(17, 25, ),
+        /* 220 */ array(37, 39, ),
+        /* 221 */ array(20, 59, ),
+        /* 222 */ array(37, 39, ),
+        /* 223 */ array(37, 39, ),
+        /* 224 */ array(25, 79, ),
+        /* 225 */ array(19, 62, ),
+        /* 226 */ array(63, ),
+        /* 227 */ array(19, ),
+        /* 228 */ array(65, ),
+        /* 229 */ array(19, ),
+        /* 230 */ array(19, ),
+        /* 231 */ array(19, ),
+        /* 232 */ array(25, ),
+        /* 233 */ array(63, ),
+        /* 234 */ array(19, ),
+        /* 235 */ array(59, ),
+        /* 236 */ array(36, ),
+        /* 237 */ array(36, ),
+        /* 238 */ array(39, ),
+        /* 239 */ array(19, ),
+        /* 240 */ array(55, ),
+        /* 241 */ array(2, ),
+        /* 242 */ array(38, ),
+        /* 243 */ array(18, ),
+        /* 244 */ array(18, ),
+        /* 245 */ array(18, ),
+        /* 246 */ array(19, ),
+        /* 247 */ array(18, ),
+        /* 248 */ array(20, ),
+        /* 249 */ array(19, ),
+        /* 250 */ array(19, ),
+        /* 251 */ array(2, ),
+        /* 252 */ array(26, ),
+        /* 253 */ array(38, ),
+        /* 254 */ array(19, ),
+        /* 255 */ array(19, ),
+        /* 256 */ array(18, ),
+        /* 257 */ array(),
+        /* 258 */ array(),
+        /* 259 */ array(),
+        /* 260 */ array(),
+        /* 261 */ array(),
+        /* 262 */ array(),
+        /* 263 */ array(),
+        /* 264 */ array(),
+        /* 265 */ array(),
+        /* 266 */ array(),
+        /* 267 */ array(),
+        /* 268 */ array(),
+        /* 269 */ array(),
+        /* 270 */ array(),
+        /* 271 */ array(),
+        /* 272 */ array(),
+        /* 273 */ array(),
+        /* 274 */ array(),
+        /* 275 */ array(),
+        /* 276 */ array(),
+        /* 277 */ array(),
+        /* 278 */ array(),
+        /* 279 */ array(),
+        /* 280 */ array(),
+        /* 281 */ array(),
+        /* 282 */ array(),
+        /* 283 */ array(),
+        /* 284 */ array(),
+        /* 285 */ array(),
+        /* 286 */ array(),
+        /* 287 */ array(),
+        /* 288 */ array(),
+        /* 289 */ array(),
+        /* 290 */ array(),
+        /* 291 */ array(),
+        /* 292 */ array(),
+        /* 293 */ array(),
+        /* 294 */ array(),
+        /* 295 */ array(),
+        /* 296 */ array(),
+        /* 297 */ array(),
+        /* 298 */ array(),
+        /* 299 */ array(),
+        /* 300 */ array(),
+        /* 301 */ array(),
+        /* 302 */ array(),
+        /* 303 */ array(),
+        /* 304 */ array(),
+        /* 305 */ array(),
+        /* 306 */ array(),
+        /* 307 */ array(),
+        /* 308 */ array(),
+        /* 309 */ array(),
+        /* 310 */ array(),
+        /* 311 */ array(),
+        /* 312 */ array(),
+        /* 313 */ array(),
+        /* 314 */ array(),
+        /* 315 */ array(),
+        /* 316 */ array(),
+        /* 317 */ array(),
+        /* 318 */ array(),
+        /* 319 */ array(),
+        /* 320 */ array(),
+        /* 321 */ array(),
+        /* 322 */ array(),
+        /* 323 */ array(),
+        /* 324 */ array(),
+        /* 325 */ array(),
+        /* 326 */ array(),
+        /* 327 */ array(),
+        /* 328 */ array(),
+        /* 329 */ array(),
+        /* 330 */ array(),
+        /* 331 */ array(),
+        /* 332 */ array(),
+        /* 333 */ array(),
+        /* 334 */ array(),
+        /* 335 */ array(),
+        /* 336 */ array(),
+        /* 337 */ array(),
+        /* 338 */ array(),
+        /* 339 */ array(),
+        /* 340 */ array(),
+        /* 341 */ array(),
+        /* 342 */ array(),
+        /* 343 */ array(),
+        /* 344 */ array(),
+        /* 345 */ array(),
+        /* 346 */ array(),
+        /* 347 */ array(),
+        /* 348 */ array(),
+        /* 349 */ array(),
+        /* 350 */ array(),
+        /* 351 */ array(),
+        /* 352 */ array(),
+        /* 353 */ array(),
+        /* 354 */ array(),
+        /* 355 */ array(),
+        /* 356 */ array(),
+        /* 357 */ array(),
+        /* 358 */ array(),
+        /* 359 */ array(),
+        /* 360 */ array(),
+        /* 361 */ array(),
+        /* 362 */ array(),
+        /* 363 */ array(),
+        /* 364 */ array(),
+        /* 365 */ array(),
+        /* 366 */ array(),
+        /* 367 */ array(),
+        /* 368 */ array(),
+        /* 369 */ array(),
+        /* 370 */ array(),
+        /* 371 */ array(),
+        /* 372 */ array(),
+        /* 373 */ array(),
+        /* 374 */ array(),
+        /* 375 */ array(),
+        /* 376 */ array(),
+        /* 377 */ array(),
+        /* 378 */ array(),
+        /* 379 */ array(),
+        /* 380 */ array(),
+        /* 381 */ array(),
+        /* 382 */ array(),
+        /* 383 */ array(),
+        /* 384 */ array(),
+        /* 385 */ array(),
+        /* 386 */ array(),
+        /* 387 */ array(),
+        /* 388 */ array(),
+        /* 389 */ array(),
+        /* 390 */ array(),
+);
+    static public $yy_default = array(
+ /*     0 */   394,  578,  549,  549,  595,  549,  595,  595,  595,  595,
+ /*    10 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    20 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    30 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    40 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    50 */   595,  595,  595,  455,  595,  595,  595,  455,  455,  455,
+ /*    60 */   595,  595,  595,  595,  595,  595,  595,  595,  460,  595,
+ /*    70 */   595,  466,  465,  484,  547,  579,  581,  548,  580,  489,
+ /*    80 */   488,  480,  479,  481,  457,  485,  462,  476,  460,  437,
+ /*    90 */   492,  493,  504,  468,  455,  391,  595,  455,  455,  475,
+ /*   100 */   512,  455,  455,  595,  455,  455,  595,  561,  595,  595,
+ /*   110 */   595,  468,  468,  468,  595,  522,  522,  522,  468,  513,
+ /*   120 */   468,  513,  595,  595,  595,  595,  595,  455,  595,  595,
+ /*   130 */   595,  595,  595,  595,  455,  513,  595,  595,  595,  595,
+ /*   140 */   595,  468,  595,  595,  595,  595,  522,  473,  558,  491,
+ /*   150 */   478,  472,  497,  495,  496,  513,  471,  556,  595,  595,
+ /*   160 */   523,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*   170 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*   180 */   516,  595,  518,  519,  595,  520,  540,  542,  595,  539,
+ /*   190 */   522,  517,  541,  410,  562,  559,  536,  522,  475,  551,
+ /*   200 */   594,  594,  512,  550,  522,  555,  555,  555,  522,  470,
+ /*   210 */   504,  504,  595,  504,  490,  534,  504,  595,  595,  494,
+ /*   220 */   595,  500,  595,  595,  494,  595,  595,  595,  595,  595,
+ /*   230 */   595,  595,  494,  595,  595,  500,  502,  595,  595,  595,
+ /*   240 */   506,  534,  560,  595,  595,  595,  595,  595,  595,  595,
+ /*   250 */   595,  534,  463,  534,  595,  595,  595,  401,  543,  400,
+ /*   260 */   402,  546,  445,  398,  397,  393,  464,  438,  593,  467,
+ /*   270 */   435,  395,  440,  434,  439,  396,  399,  456,  531,  420,
+ /*   280 */   529,  392,  528,  506,  527,  535,  444,  557,  545,  544,
+ /*   290 */   530,  412,  453,  526,  505,  419,  507,  525,  532,  470,
+ /*   300 */   514,  521,  524,  508,  510,  482,  483,  416,  415,  417,
+ /*   310 */   418,  477,  511,  515,  538,  469,  509,  534,  533,  432,
+ /*   320 */   446,  447,  443,  442,  436,  454,  433,  441,  554,  448,
+ /*   330 */   498,  499,  501,  503,  452,  451,  449,  450,  552,  553,
+ /*   340 */   486,  487,  589,  430,  582,  583,  584,  431,  429,  426,
+ /*   350 */   537,  427,  428,  406,  587,  575,  404,  577,  576,  405,
+ /*   360 */   585,  586,  588,  591,  592,  425,  424,  569,  568,  570,
+ /*   370 */   571,  572,  567,  566,  414,  563,  564,  565,  573,  574,
+ /*   380 */   422,  590,  407,  423,  421,  408,  474,  413,  411,  409,
+ /*   390 */   403,
+);
+    const YYNOCODE = 124;
+    const YYSTACKDEPTH = 100;
+    const YYNSTATE = 391;
+    const YYNRULE = 204;
+    const YYERRORSYMBOL = 81;
+    const YYERRSYMDT = 'yy0';
+    const YYFALLBACK = 0;
+    static public $yyFallback = array(
+    );
+    static function Trace($TraceFILE, $zTracePrompt)
+    {
+        if (!$TraceFILE) {
+            $zTracePrompt = 0;
+        } elseif (!$zTracePrompt) {
+            $TraceFILE = 0;
+        }
+        self::$yyTraceFILE = $TraceFILE;
+        self::$yyTracePrompt = $zTracePrompt;
+    }
+
+    static function PrintTrace()
+    {
+        self::$yyTraceFILE = fopen('php://output', 'w');
+        self::$yyTracePrompt = '<br>';
+    }
+
+    static public $yyTraceFILE;
+    static public $yyTracePrompt;
+    public $yyidx;                    /* Index of top element in stack */
+    public $yyerrcnt;                 /* Shifts left before out of the error */
+    public $yystack = array();  /* The parser's stack */
+
+    public $yyTokenName = array(
+  '$',             'VERT',          'COLON',         'COMMENT',
+  'PHPSTARTTAG',   'PHPENDTAG',     'ASPSTARTTAG',   'ASPENDTAG',
+  'FAKEPHPSTARTTAG',  'XMLTAG',        'TEXT',          'STRIPON',
+  'STRIPOFF',      'LITERALSTART',  'LITERALEND',    'LITERAL',
+  'LDEL',          'RDEL',          'DOLLAR',        'ID',
+  'EQUAL',         'PTR',           'LDELIF',        'LDELFOR',
+  'SEMICOLON',     'INCDEC',        'TO',            'STEP',
+  'LDELFOREACH',   'SPACE',         'AS',            'APTR',
+  'LDELSETFILTER',  'SMARTYBLOCKCHILD',  'LDELSLASH',     'ATTR',
+  'INTEGER',       'COMMA',         'OPENP',         'CLOSEP',
+  'MATH',          'UNIMATH',       'ANDSYM',        'ISIN',
+  'ISDIVBY',       'ISNOTDIVBY',    'ISEVEN',        'ISNOTEVEN',
+  'ISEVENBY',      'ISNOTEVENBY',   'ISODD',         'ISNOTODD',
+  'ISODDBY',       'ISNOTODDBY',    'INSTANCEOF',    'QMARK',
+  'NOT',           'TYPECAST',      'HEX',           'DOT',
+  'SINGLEQUOTESTRING',  'DOUBLECOLON',   'AT',            'HATCH',
+  'OPENB',         'CLOSEB',        'EQUALS',        'NOTEQUALS',
+  'GREATERTHAN',   'LESSTHAN',      'GREATEREQUAL',  'LESSEQUAL',
+  'IDENTITY',      'NONEIDENTITY',  'MOD',           'LAND',
+  'LOR',           'LXOR',          'QUOTE',         'BACKTICK',
+  'DOLLARID',      'error',         'start',         'template',
+  'template_element',  'smartytag',     'literal',       'literal_elements',
+  'literal_element',  'value',         'modifierlist',  'attributes',
+  'expr',          'varindexed',    'statement',     'statements',
+  'optspace',      'varvar',        'foraction',     'modparameters',
+  'attribute',     'ternary',       'array',         'ifcond',
+  'lop',           'variable',      'function',      'doublequoted_with_quotes',
+  'static_class_access',  'object',        'arrayindex',    'indexdef',
+  'varvarele',     'objectchain',   'objectelement',  'method',
+  'params',        'modifier',      'modparameter',  'arrayelements',
+  'arrayelement',  'doublequoted',  'doublequotedcontent',
+    );
+
+    static public $yyRuleName = array(
+ /*   0 */ "start ::= template",
+ /*   1 */ "template ::= template_element",
+ /*   2 */ "template ::= template template_element",
+ /*   3 */ "template ::=",
+ /*   4 */ "template_element ::= smartytag",
+ /*   5 */ "template_element ::= COMMENT",
+ /*   6 */ "template_element ::= literal",
+ /*   7 */ "template_element ::= PHPSTARTTAG",
+ /*   8 */ "template_element ::= PHPENDTAG",
+ /*   9 */ "template_element ::= ASPSTARTTAG",
+ /*  10 */ "template_element ::= ASPENDTAG",
+ /*  11 */ "template_element ::= FAKEPHPSTARTTAG",
+ /*  12 */ "template_element ::= XMLTAG",
+ /*  13 */ "template_element ::= TEXT",
+ /*  14 */ "template_element ::= STRIPON",
+ /*  15 */ "template_element ::= STRIPOFF",
+ /*  16 */ "literal ::= LITERALSTART LITERALEND",
+ /*  17 */ "literal ::= LITERALSTART literal_elements LITERALEND",
+ /*  18 */ "literal_elements ::= literal_elements literal_element",
+ /*  19 */ "literal_elements ::=",
+ /*  20 */ "literal_element ::= literal",
+ /*  21 */ "literal_element ::= LITERAL",
+ /*  22 */ "literal_element ::= PHPSTARTTAG",
+ /*  23 */ "literal_element ::= FAKEPHPSTARTTAG",
+ /*  24 */ "literal_element ::= PHPENDTAG",
+ /*  25 */ "literal_element ::= ASPSTARTTAG",
+ /*  26 */ "literal_element ::= ASPENDTAG",
+ /*  27 */ "smartytag ::= LDEL value RDEL",
+ /*  28 */ "smartytag ::= LDEL value modifierlist attributes RDEL",
+ /*  29 */ "smartytag ::= LDEL value attributes RDEL",
+ /*  30 */ "smartytag ::= LDEL expr modifierlist attributes RDEL",
+ /*  31 */ "smartytag ::= LDEL expr attributes RDEL",
+ /*  32 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
+ /*  33 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
+ /*  34 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
+ /*  35 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
+ /*  36 */ "smartytag ::= LDEL ID attributes RDEL",
+ /*  37 */ "smartytag ::= LDEL ID RDEL",
+ /*  38 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
+ /*  39 */ "smartytag ::= LDEL ID modifierlist attributes RDEL",
+ /*  40 */ "smartytag ::= LDEL ID PTR ID modifierlist attributes RDEL",
+ /*  41 */ "smartytag ::= LDELIF expr RDEL",
+ /*  42 */ "smartytag ::= LDELIF expr attributes RDEL",
+ /*  43 */ "smartytag ::= LDELIF statement RDEL",
+ /*  44 */ "smartytag ::= LDELIF statement attributes RDEL",
+ /*  45 */ "smartytag ::= LDELFOR statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction attributes RDEL",
+ /*  46 */ "foraction ::= EQUAL expr",
+ /*  47 */ "foraction ::= INCDEC",
+ /*  48 */ "smartytag ::= LDELFOR statement TO expr attributes RDEL",
+ /*  49 */ "smartytag ::= LDELFOR statement TO expr STEP expr attributes RDEL",
+ /*  50 */ "smartytag ::= LDELFOREACH attributes RDEL",
+ /*  51 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar attributes RDEL",
+ /*  52 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar attributes RDEL",
+ /*  53 */ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar attributes RDEL",
+ /*  54 */ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar APTR DOLLAR varvar attributes RDEL",
+ /*  55 */ "smartytag ::= LDELSETFILTER ID modparameters RDEL",
+ /*  56 */ "smartytag ::= LDELSETFILTER ID modparameters modifierlist RDEL",
+ /*  57 */ "smartytag ::= SMARTYBLOCKCHILD",
+ /*  58 */ "smartytag ::= LDELSLASH ID RDEL",
+ /*  59 */ "smartytag ::= LDELSLASH ID modifierlist RDEL",
+ /*  60 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
+ /*  61 */ "smartytag ::= LDELSLASH ID PTR ID modifierlist RDEL",
+ /*  62 */ "attributes ::= attributes attribute",
+ /*  63 */ "attributes ::= attribute",
+ /*  64 */ "attributes ::=",
+ /*  65 */ "attribute ::= SPACE ID EQUAL ID",
+ /*  66 */ "attribute ::= ATTR expr",
+ /*  67 */ "attribute ::= ATTR value",
+ /*  68 */ "attribute ::= SPACE ID",
+ /*  69 */ "attribute ::= SPACE expr",
+ /*  70 */ "attribute ::= SPACE value",
+ /*  71 */ "attribute ::= SPACE INTEGER EQUAL expr",
+ /*  72 */ "statements ::= statement",
+ /*  73 */ "statements ::= statements COMMA statement",
+ /*  74 */ "statement ::= DOLLAR varvar EQUAL expr",
+ /*  75 */ "statement ::= varindexed EQUAL expr",
+ /*  76 */ "statement ::= OPENP statement CLOSEP",
+ /*  77 */ "expr ::= value",
+ /*  78 */ "expr ::= ternary",
+ /*  79 */ "expr ::= DOLLAR ID COLON ID",
+ /*  80 */ "expr ::= expr MATH value",
+ /*  81 */ "expr ::= expr UNIMATH value",
+ /*  82 */ "expr ::= expr ANDSYM value",
+ /*  83 */ "expr ::= array",
+ /*  84 */ "expr ::= expr modifierlist",
+ /*  85 */ "expr ::= expr ifcond expr",
+ /*  86 */ "expr ::= expr ISIN array",
+ /*  87 */ "expr ::= expr ISIN value",
+ /*  88 */ "expr ::= expr lop expr",
+ /*  89 */ "expr ::= expr ISDIVBY expr",
+ /*  90 */ "expr ::= expr ISNOTDIVBY expr",
+ /*  91 */ "expr ::= expr ISEVEN",
+ /*  92 */ "expr ::= expr ISNOTEVEN",
+ /*  93 */ "expr ::= expr ISEVENBY expr",
+ /*  94 */ "expr ::= expr ISNOTEVENBY expr",
+ /*  95 */ "expr ::= expr ISODD",
+ /*  96 */ "expr ::= expr ISNOTODD",
+ /*  97 */ "expr ::= expr ISODDBY expr",
+ /*  98 */ "expr ::= expr ISNOTODDBY expr",
+ /*  99 */ "expr ::= value INSTANCEOF ID",
+ /* 100 */ "expr ::= value INSTANCEOF value",
+ /* 101 */ "ternary ::= OPENP expr CLOSEP QMARK DOLLAR ID COLON expr",
+ /* 102 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
+ /* 103 */ "value ::= variable",
+ /* 104 */ "value ::= UNIMATH value",
+ /* 105 */ "value ::= NOT value",
+ /* 106 */ "value ::= TYPECAST value",
+ /* 107 */ "value ::= variable INCDEC",
+ /* 108 */ "value ::= HEX",
+ /* 109 */ "value ::= INTEGER",
+ /* 110 */ "value ::= INTEGER DOT INTEGER",
+ /* 111 */ "value ::= INTEGER DOT",
+ /* 112 */ "value ::= DOT INTEGER",
+ /* 113 */ "value ::= ID",
+ /* 114 */ "value ::= function",
+ /* 115 */ "value ::= OPENP expr CLOSEP",
+ /* 116 */ "value ::= SINGLEQUOTESTRING",
+ /* 117 */ "value ::= doublequoted_with_quotes",
+ /* 118 */ "value ::= ID DOUBLECOLON static_class_access",
+ /* 119 */ "value ::= varindexed DOUBLECOLON static_class_access",
+ /* 120 */ "value ::= smartytag",
+ /* 121 */ "value ::= value modifierlist",
+ /* 122 */ "variable ::= varindexed",
+ /* 123 */ "variable ::= DOLLAR varvar AT ID",
+ /* 124 */ "variable ::= object",
+ /* 125 */ "variable ::= HATCH ID HATCH",
+ /* 126 */ "variable ::= HATCH ID HATCH arrayindex",
+ /* 127 */ "variable ::= HATCH variable HATCH",
+ /* 128 */ "variable ::= HATCH variable HATCH arrayindex",
+ /* 129 */ "varindexed ::= DOLLAR varvar arrayindex",
+ /* 130 */ "arrayindex ::= arrayindex indexdef",
+ /* 131 */ "arrayindex ::=",
+ /* 132 */ "indexdef ::= DOT DOLLAR varvar",
+ /* 133 */ "indexdef ::= DOT DOLLAR varvar AT ID",
+ /* 134 */ "indexdef ::= DOT ID",
+ /* 135 */ "indexdef ::= DOT INTEGER",
+ /* 136 */ "indexdef ::= DOT LDEL expr RDEL",
+ /* 137 */ "indexdef ::= OPENB ID CLOSEB",
+ /* 138 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
+ /* 139 */ "indexdef ::= OPENB expr CLOSEB",
+ /* 140 */ "indexdef ::= OPENB CLOSEB",
+ /* 141 */ "varvar ::= varvarele",
+ /* 142 */ "varvar ::= varvar varvarele",
+ /* 143 */ "varvarele ::= ID",
+ /* 144 */ "varvarele ::= LDEL expr RDEL",
+ /* 145 */ "object ::= varindexed objectchain",
+ /* 146 */ "objectchain ::= objectelement",
+ /* 147 */ "objectchain ::= objectchain objectelement",
+ /* 148 */ "objectelement ::= PTR ID arrayindex",
+ /* 149 */ "objectelement ::= PTR DOLLAR varvar arrayindex",
+ /* 150 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 151 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 152 */ "objectelement ::= PTR method",
+ /* 153 */ "function ::= ID OPENP params CLOSEP",
+ /* 154 */ "method ::= ID OPENP params CLOSEP",
+ /* 155 */ "method ::= DOLLAR ID OPENP params CLOSEP",
+ /* 156 */ "params ::= params COMMA expr",
+ /* 157 */ "params ::= expr",
+ /* 158 */ "params ::=",
+ /* 159 */ "modifierlist ::= modifierlist modifier modparameters",
+ /* 160 */ "modifierlist ::= modifier modparameters",
+ /* 161 */ "modifier ::= VERT AT ID",
+ /* 162 */ "modifier ::= VERT ID",
+ /* 163 */ "modparameters ::= modparameters modparameter",
+ /* 164 */ "modparameters ::=",
+ /* 165 */ "modparameter ::= COLON value",
+ /* 166 */ "modparameter ::= COLON array",
+ /* 167 */ "static_class_access ::= method",
+ /* 168 */ "static_class_access ::= method objectchain",
+ /* 169 */ "static_class_access ::= ID",
+ /* 170 */ "static_class_access ::= DOLLAR ID arrayindex",
+ /* 171 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
+ /* 172 */ "ifcond ::= EQUALS",
+ /* 173 */ "ifcond ::= NOTEQUALS",
+ /* 174 */ "ifcond ::= GREATERTHAN",
+ /* 175 */ "ifcond ::= LESSTHAN",
+ /* 176 */ "ifcond ::= GREATEREQUAL",
+ /* 177 */ "ifcond ::= LESSEQUAL",
+ /* 178 */ "ifcond ::= IDENTITY",
+ /* 179 */ "ifcond ::= NONEIDENTITY",
+ /* 180 */ "ifcond ::= MOD",
+ /* 181 */ "lop ::= LAND",
+ /* 182 */ "lop ::= LOR",
+ /* 183 */ "lop ::= LXOR",
+ /* 184 */ "array ::= OPENB arrayelements CLOSEB",
+ /* 185 */ "arrayelements ::= arrayelement",
+ /* 186 */ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 187 */ "arrayelements ::=",
+ /* 188 */ "arrayelement ::= value APTR expr",
+ /* 189 */ "arrayelement ::= ID APTR expr",
+ /* 190 */ "arrayelement ::= expr",
+ /* 191 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
+ /* 192 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
+ /* 193 */ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 194 */ "doublequoted ::= doublequotedcontent",
+ /* 195 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 196 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 197 */ "doublequotedcontent ::= DOLLARID",
+ /* 198 */ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 199 */ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 200 */ "doublequotedcontent ::= smartytag",
+ /* 201 */ "doublequotedcontent ::= TEXT",
+ /* 202 */ "optspace ::= SPACE",
+ /* 203 */ "optspace ::=",
+    );
+
+    function tokenName($tokenType)
+    {
+        if ($tokenType === 0) {
+            return 'End of Input';
+        }
+        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+            return $this->yyTokenName[$tokenType];
+        } else {
+            return "Unknown";
+        }
+    }
+
+    static function yy_destructor($yymajor, $yypminor)
+    {
+        switch ($yymajor) {
+            default:  break;   /* If no destructor action specified: do nothing */
+        }
+    }
+
+    function yy_pop_parser_stack()
+    {
+        if (!count($this->yystack)) {
+            return;
+        }
+        $yytos = array_pop($this->yystack);
+        if (self::$yyTraceFILE && $this->yyidx >= 0) {
+            fwrite(self::$yyTraceFILE,
+                self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+                    "\n");
+        }
+        $yymajor = $yytos->major;
+        self::yy_destructor($yymajor, $yytos->minor);
+        $this->yyidx--;
+        return $yymajor;
+    }
+
+    function __destruct()
+    {
+        while ($this->yystack !== Array()) {
+            $this->yy_pop_parser_stack();
+        }
+        if (is_resource(self::$yyTraceFILE)) {
+            fclose(self::$yyTraceFILE);
+        }
+    }
+
+    function yy_get_expected_tokens($token)
+    {
+        $state = $this->yystack[$this->yyidx]->stateno;
+        $expected = self::$yyExpectedTokens[$state];
+        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
+            return $expected;
+        }
+        $stack = $this->yystack;
+        $yyidx = $this->yyidx;
+        do {
+            $yyact = $this->yy_find_shift_action($token);
+            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+                // reduce action
+                $done = 0;
+                do {
+                    if ($done++ == 100) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // too much recursion prevents proper detection
+                        // so give up
+                        return array_unique($expected);
+                    }
+                    $yyruleno = $yyact - self::YYNSTATE;
+                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
+                    $nextstate = $this->yy_find_reduce_action(
+                        $this->yystack[$this->yyidx]->stateno,
+                        self::$yyRuleInfo[$yyruleno]['lhs']);
+                    if (isset(self::$yyExpectedTokens[$nextstate])) {
+		        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+                            if (in_array($token,
+                                  self::$yyExpectedTokens[$nextstate], true)) {
+                            $this->yyidx = $yyidx;
+                            $this->yystack = $stack;
+                            return array_unique($expected);
+                        }
+                    }
+                    if ($nextstate < self::YYNSTATE) {
+                        // we need to shift a non-terminal
+                        $this->yyidx++;
+                        $x = new TP_yyStackEntry;
+                        $x->stateno = $nextstate;
+                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
+                        $this->yystack[$this->yyidx] = $x;
+                        continue 2;
+                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // the last token was just ignored, we can't accept
+                        // by ignoring input, this is in essence ignoring a
+                        // syntax error!
+                        return array_unique($expected);
+                    } elseif ($nextstate === self::YY_NO_ACTION) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // input accepted, but not shifted (I guess)
+                        return $expected;
+                    } else {
+                        $yyact = $nextstate;
+                    }
+                } while (true);
+            }
+            break;
+        } while (true);
+	$this->yyidx = $yyidx;
+	$this->yystack = $stack;
+        return array_unique($expected);
+    }
+
+    function yy_is_expected_token($token)
+    {
+        if ($token === 0) {
+            return true; // 0 is not part of this
+        }
+        $state = $this->yystack[$this->yyidx]->stateno;
+        if (in_array($token, self::$yyExpectedTokens[$state], true)) {
+            return true;
+        }
+        $stack = $this->yystack;
+        $yyidx = $this->yyidx;
+        do {
+            $yyact = $this->yy_find_shift_action($token);
+            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+                // reduce action
+                $done = 0;
+                do {
+                    if ($done++ == 100) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // too much recursion prevents proper detection
+                        // so give up
+                        return true;
+                    }
+                    $yyruleno = $yyact - self::YYNSTATE;
+                    $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
+                    $nextstate = $this->yy_find_reduce_action(
+                        $this->yystack[$this->yyidx]->stateno,
+                        self::$yyRuleInfo[$yyruleno]['lhs']);
+                    if (isset(self::$yyExpectedTokens[$nextstate]) &&
+                          in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        return true;
+                    }
+                    if ($nextstate < self::YYNSTATE) {
+                        // we need to shift a non-terminal
+                        $this->yyidx++;
+                        $x = new TP_yyStackEntry;
+                        $x->stateno = $nextstate;
+                        $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
+                        $this->yystack[$this->yyidx] = $x;
+                        continue 2;
+                    } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        if (!$token) {
+                            // end of input: this is valid
+                            return true;
+                        }
+                        // the last token was just ignored, we can't accept
+                        // by ignoring input, this is in essence ignoring a
+                        // syntax error!
+                        return false;
+                    } elseif ($nextstate === self::YY_NO_ACTION) {
+                        $this->yyidx = $yyidx;
+                        $this->yystack = $stack;
+                        // input accepted, but not shifted (I guess)
+                        return true;
+                    } else {
+                        $yyact = $nextstate;
+                    }
+                } while (true);
+            }
+            break;
+        } while (true);
+        $this->yyidx = $yyidx;
+        $this->yystack = $stack;
+        return true;
+    }
+
+   function yy_find_shift_action($iLookAhead)
+    {
+        $stateno = $this->yystack[$this->yyidx]->stateno;
+
+        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
+        if (!isset(self::$yy_shift_ofst[$stateno])) {
+            // no shift actions
+            return self::$yy_default[$stateno];
+        }
+        $i = self::$yy_shift_ofst[$stateno];
+        if ($i === self::YY_SHIFT_USE_DFLT) {
+            return self::$yy_default[$stateno];
+        }
+        if ($iLookAhead == self::YYNOCODE) {
+            return self::YY_NO_ACTION;
+        }
+        $i += $iLookAhead;
+        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+              self::$yy_lookahead[$i] != $iLookAhead) {
+            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+                   && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+                if (self::$yyTraceFILE) {
+                    fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
+                        $this->yyTokenName[$iLookAhead] . " => " .
+                        $this->yyTokenName[$iFallback] . "\n");
+                }
+                return $this->yy_find_shift_action($iFallback);
+            }
+            return self::$yy_default[$stateno];
+        } else {
+            return self::$yy_action[$i];
+        }
+    }
+
+    function yy_find_reduce_action($stateno, $iLookAhead)
+    {
+        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+        if (!isset(self::$yy_reduce_ofst[$stateno])) {
+            return self::$yy_default[$stateno];
+        }
+        $i = self::$yy_reduce_ofst[$stateno];
+        if ($i == self::YY_REDUCE_USE_DFLT) {
+            return self::$yy_default[$stateno];
+        }
+        if ($iLookAhead == self::YYNOCODE) {
+            return self::YY_NO_ACTION;
+        }
+        $i += $iLookAhead;
+        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+              self::$yy_lookahead[$i] != $iLookAhead) {
+            return self::$yy_default[$stateno];
+        } else {
+            return self::$yy_action[$i];
+        }
+    }
+
+    function yy_shift($yyNewState, $yyMajor, $yypMinor)
+    {
+        $this->yyidx++;
+        if ($this->yyidx >= self::YYSTACKDEPTH) {
+            $this->yyidx--;
+            if (self::$yyTraceFILE) {
+                fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
+            }
+            while ($this->yyidx >= 0) {
+                $this->yy_pop_parser_stack();
+            }
+#line 84 "smarty_internal_templateparser.y"
+
+    $this->internalError = true;
+    $this->compiler->trigger_template_error("Stack overflow in template parser");
+#line 1724 "smarty_internal_templateparser.php"
+            return;
+        }
+        $yytos = new TP_yyStackEntry;
+        $yytos->stateno = $yyNewState;
+        $yytos->major = $yyMajor;
+        $yytos->minor = $yypMinor;
+        array_push($this->yystack, $yytos);
+        if (self::$yyTraceFILE && $this->yyidx > 0) {
+            fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
+                $yyNewState);
+            fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
+            for($i = 1; $i <= $this->yyidx; $i++) {
+                fprintf(self::$yyTraceFILE, " %s",
+                    $this->yyTokenName[$this->yystack[$i]->major]);
+            }
+            fwrite(self::$yyTraceFILE,"\n");
+        }
+    }
+
+    static public $yyRuleInfo = array(
+  array( 'lhs' => 82, 'rhs' => 1 ),
+  array( 'lhs' => 83, 'rhs' => 1 ),
+  array( 'lhs' => 83, 'rhs' => 2 ),
+  array( 'lhs' => 83, 'rhs' => 0 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 84, 'rhs' => 1 ),
+  array( 'lhs' => 86, 'rhs' => 2 ),
+  array( 'lhs' => 86, 'rhs' => 3 ),
+  array( 'lhs' => 87, 'rhs' => 2 ),
+  array( 'lhs' => 87, 'rhs' => 0 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 88, 'rhs' => 1 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 5 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 5 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 85, 'rhs' => 7 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 85, 'rhs' => 5 ),
+  array( 'lhs' => 85, 'rhs' => 7 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 12 ),
+  array( 'lhs' => 98, 'rhs' => 2 ),
+  array( 'lhs' => 98, 'rhs' => 1 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 85, 'rhs' => 8 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 8 ),
+  array( 'lhs' => 85, 'rhs' => 11 ),
+  array( 'lhs' => 85, 'rhs' => 8 ),
+  array( 'lhs' => 85, 'rhs' => 11 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 5 ),
+  array( 'lhs' => 85, 'rhs' => 1 ),
+  array( 'lhs' => 85, 'rhs' => 3 ),
+  array( 'lhs' => 85, 'rhs' => 4 ),
+  array( 'lhs' => 85, 'rhs' => 5 ),
+  array( 'lhs' => 85, 'rhs' => 6 ),
+  array( 'lhs' => 91, 'rhs' => 2 ),
+  array( 'lhs' => 91, 'rhs' => 1 ),
+  array( 'lhs' => 91, 'rhs' => 0 ),
+  array( 'lhs' => 100, 'rhs' => 4 ),
+  array( 'lhs' => 100, 'rhs' => 2 ),
+  array( 'lhs' => 100, 'rhs' => 2 ),
+  array( 'lhs' => 100, 'rhs' => 2 ),
+  array( 'lhs' => 100, 'rhs' => 2 ),
+  array( 'lhs' => 100, 'rhs' => 2 ),
+  array( 'lhs' => 100, 'rhs' => 4 ),
+  array( 'lhs' => 95, 'rhs' => 1 ),
+  array( 'lhs' => 95, 'rhs' => 3 ),
+  array( 'lhs' => 94, 'rhs' => 4 ),
+  array( 'lhs' => 94, 'rhs' => 3 ),
+  array( 'lhs' => 94, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 1 ),
+  array( 'lhs' => 92, 'rhs' => 1 ),
+  array( 'lhs' => 92, 'rhs' => 4 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 1 ),
+  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 92, 'rhs' => 2 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 92, 'rhs' => 3 ),
+  array( 'lhs' => 101, 'rhs' => 8 ),
+  array( 'lhs' => 101, 'rhs' => 7 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 3 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 3 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 3 ),
+  array( 'lhs' => 89, 'rhs' => 3 ),
+  array( 'lhs' => 89, 'rhs' => 1 ),
+  array( 'lhs' => 89, 'rhs' => 2 ),
+  array( 'lhs' => 105, 'rhs' => 1 ),
+  array( 'lhs' => 105, 'rhs' => 4 ),
+  array( 'lhs' => 105, 'rhs' => 1 ),
+  array( 'lhs' => 105, 'rhs' => 3 ),
+  array( 'lhs' => 105, 'rhs' => 4 ),
+  array( 'lhs' => 105, 'rhs' => 3 ),
+  array( 'lhs' => 105, 'rhs' => 4 ),
+  array( 'lhs' => 93, 'rhs' => 3 ),
+  array( 'lhs' => 110, 'rhs' => 2 ),
+  array( 'lhs' => 110, 'rhs' => 0 ),
+  array( 'lhs' => 111, 'rhs' => 3 ),
+  array( 'lhs' => 111, 'rhs' => 5 ),
+  array( 'lhs' => 111, 'rhs' => 2 ),
+  array( 'lhs' => 111, 'rhs' => 2 ),
+  array( 'lhs' => 111, 'rhs' => 4 ),
+  array( 'lhs' => 111, 'rhs' => 3 ),
+  array( 'lhs' => 111, 'rhs' => 5 ),
+  array( 'lhs' => 111, 'rhs' => 3 ),
+  array( 'lhs' => 111, 'rhs' => 2 ),
+  array( 'lhs' => 97, 'rhs' => 1 ),
+  array( 'lhs' => 97, 'rhs' => 2 ),
+  array( 'lhs' => 112, 'rhs' => 1 ),
+  array( 'lhs' => 112, 'rhs' => 3 ),
+  array( 'lhs' => 109, 'rhs' => 2 ),
+  array( 'lhs' => 113, 'rhs' => 1 ),
+  array( 'lhs' => 113, 'rhs' => 2 ),
+  array( 'lhs' => 114, 'rhs' => 3 ),
+  array( 'lhs' => 114, 'rhs' => 4 ),
+  array( 'lhs' => 114, 'rhs' => 5 ),
+  array( 'lhs' => 114, 'rhs' => 6 ),
+  array( 'lhs' => 114, 'rhs' => 2 ),
+  array( 'lhs' => 106, 'rhs' => 4 ),
+  array( 'lhs' => 115, 'rhs' => 4 ),
+  array( 'lhs' => 115, 'rhs' => 5 ),
+  array( 'lhs' => 116, 'rhs' => 3 ),
+  array( 'lhs' => 116, 'rhs' => 1 ),
+  array( 'lhs' => 116, 'rhs' => 0 ),
+  array( 'lhs' => 90, 'rhs' => 3 ),
+  array( 'lhs' => 90, 'rhs' => 2 ),
+  array( 'lhs' => 117, 'rhs' => 3 ),
+  array( 'lhs' => 117, 'rhs' => 2 ),
+  array( 'lhs' => 99, 'rhs' => 2 ),
+  array( 'lhs' => 99, 'rhs' => 0 ),
+  array( 'lhs' => 118, 'rhs' => 2 ),
+  array( 'lhs' => 118, 'rhs' => 2 ),
+  array( 'lhs' => 108, 'rhs' => 1 ),
+  array( 'lhs' => 108, 'rhs' => 2 ),
+  array( 'lhs' => 108, 'rhs' => 1 ),
+  array( 'lhs' => 108, 'rhs' => 3 ),
+  array( 'lhs' => 108, 'rhs' => 4 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 103, 'rhs' => 1 ),
+  array( 'lhs' => 104, 'rhs' => 1 ),
+  array( 'lhs' => 104, 'rhs' => 1 ),
+  array( 'lhs' => 104, 'rhs' => 1 ),
+  array( 'lhs' => 102, 'rhs' => 3 ),
+  array( 'lhs' => 119, 'rhs' => 1 ),
+  array( 'lhs' => 119, 'rhs' => 3 ),
+  array( 'lhs' => 119, 'rhs' => 0 ),
+  array( 'lhs' => 120, 'rhs' => 3 ),
+  array( 'lhs' => 120, 'rhs' => 3 ),
+  array( 'lhs' => 120, 'rhs' => 1 ),
+  array( 'lhs' => 107, 'rhs' => 2 ),
+  array( 'lhs' => 107, 'rhs' => 3 ),
+  array( 'lhs' => 121, 'rhs' => 2 ),
+  array( 'lhs' => 121, 'rhs' => 1 ),
+  array( 'lhs' => 122, 'rhs' => 3 ),
+  array( 'lhs' => 122, 'rhs' => 3 ),
+  array( 'lhs' => 122, 'rhs' => 1 ),
+  array( 'lhs' => 122, 'rhs' => 3 ),
+  array( 'lhs' => 122, 'rhs' => 3 ),
+  array( 'lhs' => 122, 'rhs' => 1 ),
+  array( 'lhs' => 122, 'rhs' => 1 ),
+  array( 'lhs' => 96, 'rhs' => 1 ),
+  array( 'lhs' => 96, 'rhs' => 0 ),
+    );
+
+    static public $yyReduceMap = array(
+        0 => 0,
+        1 => 1,
+        2 => 1,
+        4 => 4,
+        5 => 5,
+        6 => 6,
+        7 => 7,
+        8 => 8,
+        9 => 9,
+        10 => 10,
+        11 => 11,
+        12 => 12,
+        13 => 13,
+        14 => 14,
+        15 => 15,
+        16 => 16,
+        19 => 16,
+        203 => 16,
+        17 => 17,
+        76 => 17,
+        18 => 18,
+        104 => 18,
+        106 => 18,
+        107 => 18,
+        130 => 18,
+        168 => 18,
+        20 => 20,
+        21 => 20,
+        47 => 20,
+        69 => 20,
+        70 => 20,
+        77 => 20,
+        78 => 20,
+        83 => 20,
+        103 => 20,
+        108 => 20,
+        109 => 20,
+        114 => 20,
+        116 => 20,
+        117 => 20,
+        124 => 20,
+        141 => 20,
+        167 => 20,
+        169 => 20,
+        185 => 20,
+        190 => 20,
+        202 => 20,
+        22 => 22,
+        23 => 22,
+        24 => 24,
+        25 => 25,
+        26 => 26,
+        27 => 27,
+        28 => 28,
+        29 => 29,
+        31 => 29,
+        30 => 30,
+        32 => 32,
+        33 => 32,
+        34 => 34,
+        35 => 35,
+        36 => 36,
+        37 => 37,
+        38 => 38,
+        39 => 39,
+        40 => 40,
+        41 => 41,
+        42 => 42,
+        44 => 42,
+        43 => 43,
+        45 => 45,
+        46 => 46,
+        48 => 48,
+        49 => 49,
+        50 => 50,
+        51 => 51,
+        52 => 52,
+        53 => 53,
+        54 => 54,
+        55 => 55,
+        56 => 56,
+        57 => 57,
+        58 => 58,
+        59 => 59,
+        60 => 60,
+        61 => 61,
+        62 => 62,
+        63 => 63,
+        72 => 63,
+        157 => 63,
+        161 => 63,
+        165 => 63,
+        166 => 63,
+        64 => 64,
+        158 => 64,
+        164 => 64,
+        65 => 65,
+        66 => 66,
+        67 => 66,
+        68 => 68,
+        71 => 71,
+        73 => 73,
+        74 => 74,
+        75 => 74,
+        79 => 79,
+        80 => 80,
+        81 => 80,
+        82 => 80,
+        84 => 84,
+        121 => 84,
+        85 => 85,
+        88 => 85,
+        99 => 85,
+        86 => 86,
+        87 => 87,
+        89 => 89,
+        90 => 90,
+        91 => 91,
+        96 => 91,
+        92 => 92,
+        95 => 92,
+        93 => 93,
+        98 => 93,
+        94 => 94,
+        97 => 94,
+        100 => 100,
+        101 => 101,
+        102 => 102,
+        105 => 105,
+        110 => 110,
+        111 => 111,
+        112 => 112,
+        113 => 113,
+        115 => 115,
+        118 => 118,
+        119 => 119,
+        120 => 120,
+        122 => 122,
+        123 => 123,
+        125 => 125,
+        126 => 126,
+        127 => 127,
+        128 => 128,
+        129 => 129,
+        131 => 131,
+        187 => 131,
+        132 => 132,
+        133 => 133,
+        134 => 134,
+        135 => 135,
+        136 => 136,
+        139 => 136,
+        137 => 137,
+        138 => 138,
+        140 => 140,
+        142 => 142,
+        143 => 143,
+        144 => 144,
+        145 => 145,
+        146 => 146,
+        147 => 147,
+        148 => 148,
+        149 => 149,
+        150 => 150,
+        151 => 151,
+        152 => 152,
+        153 => 153,
+        154 => 154,
+        155 => 155,
+        156 => 156,
+        159 => 159,
+        160 => 160,
+        162 => 162,
+        163 => 163,
+        170 => 170,
+        171 => 171,
+        172 => 172,
+        173 => 173,
+        174 => 174,
+        175 => 175,
+        176 => 176,
+        177 => 177,
+        178 => 178,
+        179 => 179,
+        180 => 180,
+        181 => 181,
+        182 => 182,
+        183 => 183,
+        184 => 184,
+        186 => 186,
+        188 => 188,
+        189 => 189,
+        191 => 191,
+        192 => 192,
+        193 => 193,
+        194 => 194,
+        195 => 195,
+        196 => 195,
+        198 => 195,
+        197 => 197,
+        199 => 199,
+        200 => 200,
+        201 => 201,
+    );
+#line 95 "smarty_internal_templateparser.y"
+    function yy_r0(){
+    $this->_retvalue = $this->root_buffer->to_smarty_php();
+    }
+#line 2160 "smarty_internal_templateparser.php"
+#line 103 "smarty_internal_templateparser.y"
+    function yy_r1(){
+    $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2165 "smarty_internal_templateparser.php"
+#line 119 "smarty_internal_templateparser.y"
+    function yy_r4(){
+    if ($this->compiler->has_code) {
+        $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
+        $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor,true));
+    } else {
+        $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+    $this->compiler->has_variable_string = false;
+    $this->block_nesting_level = count($this->compiler->_tag_stack);
+    }
+#line 2177 "smarty_internal_templateparser.php"
+#line 131 "smarty_internal_templateparser.y"
+    function yy_r5(){
+    $this->_retvalue = new _smarty_tag($this, '');
+    }
+#line 2182 "smarty_internal_templateparser.php"
+#line 136 "smarty_internal_templateparser.y"
+    function yy_r6(){
+    $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2187 "smarty_internal_templateparser.php"
+#line 141 "smarty_internal_templateparser.y"
+    function yy_r7(){
+    if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+        $this->_retvalue = new _smarty_text($this, self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
+    } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+        $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
+    } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+        if (!($this->smarty instanceof SmartyBC)) {
+            $this->compiler->trigger_template_error (self::Err3);
+        }
+        $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('<?php', true));
+    } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+        $this->_retvalue = new _smarty_text($this, '');
+    }
+    }
+#line 2203 "smarty_internal_templateparser.php"
+#line 157 "smarty_internal_templateparser.y"
+    function yy_r8(){
+    if ($this->is_xml) {
+        $this->compiler->tag_nocache = true;
+        $this->is_xml = false;
+        $save = $this->template->has_nocache_code;
+        $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true));
+        $this->template->has_nocache_code = $save;
+    } elseif ($this->php_handling == Smarty::PHP_PASSTHRU) {
+        $this->_retvalue = new _smarty_text($this, '?<?php ?>>');
+    } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+        $this->_retvalue = new _smarty_text($this, htmlspecialchars('?>', ENT_QUOTES));
+    } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+        $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('?>', true));
+    } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+        $this->_retvalue = new _smarty_text($this, '');
+    }
+    }
+#line 2222 "smarty_internal_templateparser.php"
+#line 176 "smarty_internal_templateparser.y"
+    function yy_r9(){
+    if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+        $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
+    } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+        $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
+    } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+        if ($this->asp_tags) {
+            if (!($this->smarty instanceof SmartyBC)) {
+                $this->compiler->trigger_template_error (self::Err3);
+            }
+            $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('<%', true));
+        } else {
+            $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
+        }
+    } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+        if ($this->asp_tags) {
+            $this->_retvalue = new _smarty_text($this, '');
+        } else {
+            $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
+        }
+    }
+    }
+#line 2246 "smarty_internal_templateparser.php"
+#line 200 "smarty_internal_templateparser.y"
+    function yy_r10(){
+    if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+        $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
+    } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+        $this->_retvalue = new _smarty_text($this, htmlspecialchars('%>', ENT_QUOTES));
+    } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+        if ($this->asp_tags) {
+            $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('%>', true));
+        } else {
+            $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
+        }
+    } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+        if ($this->asp_tags) {
+            $this->_retvalue = new _smarty_text($this, '');
+        } else {
+            $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
+        }
+    }
+    }
+#line 2267 "smarty_internal_templateparser.php"
+#line 220 "smarty_internal_templateparser.y"
+    function yy_r11(){
+    if ($this->strip) {
+        $this->_retvalue = new _smarty_text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', ' ', self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor)));
+    } else {
+        $this->_retvalue = new _smarty_text($this, self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
+    }
+    }
+#line 2276 "smarty_internal_templateparser.php"
+#line 229 "smarty_internal_templateparser.y"
+    function yy_r12(){
+    $this->compiler->tag_nocache = true;
+    $this->is_xml = true;
+    $save = $this->template->has_nocache_code;
+    $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true));
+    $this->template->has_nocache_code = $save;
+    }
+#line 2285 "smarty_internal_templateparser.php"
+#line 238 "smarty_internal_templateparser.y"
+    function yy_r13(){
+    if ($this->strip) {
+        $this->_retvalue = new _smarty_text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', ' ', $this->yystack[$this->yyidx + 0]->minor));
+    } else {
+        $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+    }
+#line 2294 "smarty_internal_templateparser.php"
+#line 247 "smarty_internal_templateparser.y"
+    function yy_r14(){
+    $this->strip = true;
+    $this->_retvalue = new _smarty_text($this, '');
+    }
+#line 2300 "smarty_internal_templateparser.php"
+#line 252 "smarty_internal_templateparser.y"
+    function yy_r15(){
+    $this->strip = false;
+    $this->_retvalue = new _smarty_text($this, '');
+    }
+#line 2306 "smarty_internal_templateparser.php"
+#line 258 "smarty_internal_templateparser.y"
+    function yy_r16(){
+    $this->_retvalue = '';
+    }
+#line 2311 "smarty_internal_templateparser.php"
+#line 262 "smarty_internal_templateparser.y"
+    function yy_r17(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+    }
+#line 2316 "smarty_internal_templateparser.php"
+#line 266 "smarty_internal_templateparser.y"
+    function yy_r18(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2321 "smarty_internal_templateparser.php"
+#line 274 "smarty_internal_templateparser.y"
+    function yy_r20(){
+    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2326 "smarty_internal_templateparser.php"
+#line 282 "smarty_internal_templateparser.y"
+    function yy_r22(){
+    $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2331 "smarty_internal_templateparser.php"
+#line 290 "smarty_internal_templateparser.y"
+    function yy_r24(){
+    $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2336 "smarty_internal_templateparser.php"
+#line 294 "smarty_internal_templateparser.y"
+    function yy_r25(){
+    $this->_retvalue = '<<?php ?>%';
+    }
+#line 2341 "smarty_internal_templateparser.php"
+#line 298 "smarty_internal_templateparser.y"
+    function yy_r26(){
+    $this->_retvalue = '%<?php ?>>';
+    }
+#line 2346 "smarty_internal_templateparser.php"
+#line 307 "smarty_internal_templateparser.y"
+    function yy_r27(){
+    $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2351 "smarty_internal_templateparser.php"
+#line 311 "smarty_internal_templateparser.y"
+    function yy_r28(){
+    $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
+    }
+#line 2356 "smarty_internal_templateparser.php"
+#line 315 "smarty_internal_templateparser.y"
+    function yy_r29(){
+    $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor));
+    }
+#line 2361 "smarty_internal_templateparser.php"
+#line 319 "smarty_internal_templateparser.y"
+    function yy_r30(){
+    $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor,'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
+    }
+#line 2366 "smarty_internal_templateparser.php"
+#line 332 "smarty_internal_templateparser.y"
+    function yy_r32(){
+    $this->_retvalue = $this->compiler->compileTag('assign',array(array('value'=>$this->yystack[$this->yyidx + -1]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")));
+    }
+#line 2371 "smarty_internal_templateparser.php"
+#line 340 "smarty_internal_templateparser.y"
+    function yy_r34(){
+    $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'")),$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2376 "smarty_internal_templateparser.php"
+#line 344 "smarty_internal_templateparser.y"
+    function yy_r35(){
+    $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>$this->yystack[$this->yyidx + -4]->minor['var'])),$this->yystack[$this->yyidx + -1]->minor),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -4]->minor['smarty_internal_index']));
+    }
+#line 2381 "smarty_internal_templateparser.php"
+#line 349 "smarty_internal_templateparser.y"
+    function yy_r36(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);
+    }
+#line 2386 "smarty_internal_templateparser.php"
+#line 353 "smarty_internal_templateparser.y"
+    function yy_r37(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array());
+    }
+#line 2391 "smarty_internal_templateparser.php"
+#line 358 "smarty_internal_templateparser.y"
+    function yy_r38(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor));
+    }
+#line 2396 "smarty_internal_templateparser.php"
+#line 363 "smarty_internal_templateparser.y"
+    function yy_r39(){
+    $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
+    $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
+    }
+#line 2402 "smarty_internal_templateparser.php"
+#line 369 "smarty_internal_templateparser.y"
+    function yy_r40(){
+    $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -3]->minor)).'<?php echo ';
+    $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
+    }
+#line 2408 "smarty_internal_templateparser.php"
+#line 375 "smarty_internal_templateparser.y"
+    function yy_r41(){
+    $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
+    $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2414 "smarty_internal_templateparser.php"
+#line 380 "smarty_internal_templateparser.y"
+    function yy_r42(){
+    $tag = trim(substr($this->yystack[$this->yyidx + -3]->minor,$this->lex->ldel_length));
+    $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + -1]->minor,array('if condition'=>$this->yystack[$this->yyidx + -2]->minor));
+    }
+#line 2420 "smarty_internal_templateparser.php"
+#line 385 "smarty_internal_templateparser.y"
+    function yy_r43(){
+    $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
+    $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2426 "smarty_internal_templateparser.php"
+#line 396 "smarty_internal_templateparser.y"
+    function yy_r45(){
+    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -10]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -7]->minor),array('var'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),1);
+    }
+#line 2431 "smarty_internal_templateparser.php"
+#line 400 "smarty_internal_templateparser.y"
+    function yy_r46(){
+    $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2436 "smarty_internal_templateparser.php"
+#line 408 "smarty_internal_templateparser.y"
+    function yy_r48(){
+    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -4]->minor),array('to'=>$this->yystack[$this->yyidx + -2]->minor))),0);
+    }
+#line 2441 "smarty_internal_templateparser.php"
+#line 412 "smarty_internal_templateparser.y"
+    function yy_r49(){
+    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('to'=>$this->yystack[$this->yyidx + -4]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),0);
+    }
+#line 2446 "smarty_internal_templateparser.php"
+#line 417 "smarty_internal_templateparser.y"
+    function yy_r50(){
+    $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + -1]->minor);
+    }
+#line 2451 "smarty_internal_templateparser.php"
+#line 422 "smarty_internal_templateparser.y"
+    function yy_r51(){
+    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
+    }
+#line 2456 "smarty_internal_templateparser.php"
+#line 426 "smarty_internal_templateparser.y"
+    function yy_r52(){
+    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
+    }
+#line 2461 "smarty_internal_templateparser.php"
+#line 430 "smarty_internal_templateparser.y"
+    function yy_r53(){
+    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
+    }
+#line 2466 "smarty_internal_templateparser.php"
+#line 434 "smarty_internal_templateparser.y"
+    function yy_r54(){
+    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
+    }
+#line 2471 "smarty_internal_templateparser.php"
+#line 439 "smarty_internal_templateparser.y"
+    function yy_r55(){
+    $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor))));
+    }
+#line 2476 "smarty_internal_templateparser.php"
+#line 443 "smarty_internal_templateparser.y"
+    function yy_r56(){
+    $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -3]->minor),$this->yystack[$this->yyidx + -2]->minor)),$this->yystack[$this->yyidx + -1]->minor)));
+    }
+#line 2481 "smarty_internal_templateparser.php"
+#line 448 "smarty_internal_templateparser.y"
+    function yy_r57(){
+    $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
+    }
+#line 2486 "smarty_internal_templateparser.php"
+#line 454 "smarty_internal_templateparser.y"
+    function yy_r58(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array());
+    }
+#line 2491 "smarty_internal_templateparser.php"
+#line 458 "smarty_internal_templateparser.y"
+    function yy_r59(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2496 "smarty_internal_templateparser.php"
+#line 463 "smarty_internal_templateparser.y"
+    function yy_r60(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2501 "smarty_internal_templateparser.php"
+#line 467 "smarty_internal_templateparser.y"
+    function yy_r61(){
+    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
+    }
+#line 2506 "smarty_internal_templateparser.php"
+#line 475 "smarty_internal_templateparser.y"
+    function yy_r62(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+    $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2512 "smarty_internal_templateparser.php"
+#line 481 "smarty_internal_templateparser.y"
+    function yy_r63(){
+    $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2517 "smarty_internal_templateparser.php"
+#line 486 "smarty_internal_templateparser.y"
+    function yy_r64(){
+    $this->_retvalue = array();
+    }
+#line 2522 "smarty_internal_templateparser.php"
+#line 491 "smarty_internal_templateparser.y"
+    function yy_r65(){
+    if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'true');
+    } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'false');
+    } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'null');
+    } else {
+        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'");
+    }
+    }
+#line 2535 "smarty_internal_templateparser.php"
+#line 503 "smarty_internal_templateparser.y"
+    function yy_r66(){
+    $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2540 "smarty_internal_templateparser.php"
+#line 511 "smarty_internal_templateparser.y"
+    function yy_r68(){
+    $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
+    }
+#line 2545 "smarty_internal_templateparser.php"
+#line 523 "smarty_internal_templateparser.y"
+    function yy_r71(){
+    $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2550 "smarty_internal_templateparser.php"
+#line 536 "smarty_internal_templateparser.y"
+    function yy_r73(){
+    $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
+    }
+#line 2556 "smarty_internal_templateparser.php"
+#line 541 "smarty_internal_templateparser.y"
+    function yy_r74(){
+    $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2561 "smarty_internal_templateparser.php"
+#line 569 "smarty_internal_templateparser.y"
+    function yy_r79(){
+    $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';
+    }
+#line 2566 "smarty_internal_templateparser.php"
+#line 574 "smarty_internal_templateparser.y"
+    function yy_r80(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2571 "smarty_internal_templateparser.php"
+#line 593 "smarty_internal_templateparser.y"
+    function yy_r84(){
+    $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor));
+    }
+#line 2576 "smarty_internal_templateparser.php"
+#line 599 "smarty_internal_templateparser.y"
+    function yy_r85(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2581 "smarty_internal_templateparser.php"
+#line 603 "smarty_internal_templateparser.y"
+    function yy_r86(){
+    $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2586 "smarty_internal_templateparser.php"
+#line 607 "smarty_internal_templateparser.y"
+    function yy_r87(){
+    $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2591 "smarty_internal_templateparser.php"
+#line 615 "smarty_internal_templateparser.y"
+    function yy_r89(){
+    $this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2596 "smarty_internal_templateparser.php"
+#line 619 "smarty_internal_templateparser.y"
+    function yy_r90(){
+    $this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2601 "smarty_internal_templateparser.php"
+#line 623 "smarty_internal_templateparser.y"
+    function yy_r91(){
+    $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
+    }
+#line 2606 "smarty_internal_templateparser.php"
+#line 627 "smarty_internal_templateparser.y"
+    function yy_r92(){
+    $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
+    }
+#line 2611 "smarty_internal_templateparser.php"
+#line 631 "smarty_internal_templateparser.y"
+    function yy_r93(){
+    $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2616 "smarty_internal_templateparser.php"
+#line 635 "smarty_internal_templateparser.y"
+    function yy_r94(){
+    $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
+    }
+#line 2621 "smarty_internal_templateparser.php"
+#line 659 "smarty_internal_templateparser.y"
+    function yy_r100(){
+    $this->prefix_number++;
+    $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>';
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;
+    }
+#line 2628 "smarty_internal_templateparser.php"
+#line 668 "smarty_internal_templateparser.y"
+    function yy_r101(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.' ? '. $this->compileVariable("'".$this->yystack[$this->yyidx + -2]->minor."'") . ' : '.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2633 "smarty_internal_templateparser.php"
+#line 672 "smarty_internal_templateparser.y"
+    function yy_r102(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2638 "smarty_internal_templateparser.php"
+#line 687 "smarty_internal_templateparser.y"
+    function yy_r105(){
+    $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2643 "smarty_internal_templateparser.php"
+#line 708 "smarty_internal_templateparser.y"
+    function yy_r110(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2648 "smarty_internal_templateparser.php"
+#line 712 "smarty_internal_templateparser.y"
+    function yy_r111(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
+    }
+#line 2653 "smarty_internal_templateparser.php"
+#line 716 "smarty_internal_templateparser.y"
+    function yy_r112(){
+    $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2658 "smarty_internal_templateparser.php"
+#line 721 "smarty_internal_templateparser.y"
+    function yy_r113(){
+    if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = 'true';
+    } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = 'false';
+    } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+        $this->_retvalue = 'null';
+    } else {
+        $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
+    }
+    }
+#line 2671 "smarty_internal_templateparser.php"
+#line 739 "smarty_internal_templateparser.y"
+    function yy_r115(){
+    $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";
+    }
+#line 2676 "smarty_internal_templateparser.php"
+#line 754 "smarty_internal_templateparser.y"
+    function yy_r118(){
+    if (!$this->security || isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor]) || $this->smarty->security_policy->isTrustedStaticClass($this->yystack[$this->yyidx + -2]->minor, $this->compiler)) {
+        if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
+            $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor;
+        } else {
+            $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor;
+        }
+    } else {
+        $this->compiler->trigger_template_error ("static class '".$this->yystack[$this->yyidx + -2]->minor."' is undefined or not allowed by security setting");
+    }
+    }
+#line 2689 "smarty_internal_templateparser.php"
+#line 766 "smarty_internal_templateparser.y"
+    function yy_r119(){
+    if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') {
+        $this->_retvalue =  $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).'::'.$this->yystack[$this->yyidx + 0]->minor;
+    } else {
+        $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].'::'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+    }
+#line 2698 "smarty_internal_templateparser.php"
+#line 775 "smarty_internal_templateparser.y"
+    function yy_r120(){
+    $this->prefix_number++;
+    $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>';
+    $this->_retvalue = '$_tmp'.$this->prefix_number;
+    }
+#line 2705 "smarty_internal_templateparser.php"
+#line 790 "smarty_internal_templateparser.y"
+    function yy_r122(){
+    if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
+        $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+        $this->_retvalue = $smarty_var;
+    } else {
+        // used for array reset,next,prev,end,current
+        $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
+        $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+        $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+    }
+    }
+#line 2718 "smarty_internal_templateparser.php"
+#line 803 "smarty_internal_templateparser.y"
+    function yy_r123(){
+    $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2723 "smarty_internal_templateparser.php"
+#line 813 "smarty_internal_templateparser.y"
+    function yy_r125(){
+    $this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')';
+    }
+#line 2728 "smarty_internal_templateparser.php"
+#line 817 "smarty_internal_templateparser.y"
+    function yy_r126(){
+    $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'\')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
+    }
+#line 2733 "smarty_internal_templateparser.php"
+#line 821 "smarty_internal_templateparser.y"
+    function yy_r127(){
+    $this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')';
+    }
+#line 2738 "smarty_internal_templateparser.php"
+#line 825 "smarty_internal_templateparser.y"
+    function yy_r128(){
+    $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -2]->minor .')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
+    }
+#line 2743 "smarty_internal_templateparser.php"
+#line 829 "smarty_internal_templateparser.y"
+    function yy_r129(){
+    $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2748 "smarty_internal_templateparser.php"
+#line 842 "smarty_internal_templateparser.y"
+    function yy_r131(){
+    return;
+    }
+#line 2753 "smarty_internal_templateparser.php"
+#line 848 "smarty_internal_templateparser.y"
+    function yy_r132(){
+    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
+    }
+#line 2758 "smarty_internal_templateparser.php"
+#line 852 "smarty_internal_templateparser.y"
+    function yy_r133(){
+    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
+    }
+#line 2763 "smarty_internal_templateparser.php"
+#line 856 "smarty_internal_templateparser.y"
+    function yy_r134(){
+    $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";
+    }
+#line 2768 "smarty_internal_templateparser.php"
+#line 860 "smarty_internal_templateparser.y"
+    function yy_r135(){
+    $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";
+    }
+#line 2773 "smarty_internal_templateparser.php"
+#line 864 "smarty_internal_templateparser.y"
+    function yy_r136(){
+    $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";
+    }
+#line 2778 "smarty_internal_templateparser.php"
+#line 869 "smarty_internal_templateparser.y"
+    function yy_r137(){
+    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
+    }
+#line 2783 "smarty_internal_templateparser.php"
+#line 873 "smarty_internal_templateparser.y"
+    function yy_r138(){
+    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
+    }
+#line 2788 "smarty_internal_templateparser.php"
+#line 883 "smarty_internal_templateparser.y"
+    function yy_r140(){
+    $this->_retvalue = '[]';
+    }
+#line 2793 "smarty_internal_templateparser.php"
+#line 896 "smarty_internal_templateparser.y"
+    function yy_r142(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2798 "smarty_internal_templateparser.php"
+#line 901 "smarty_internal_templateparser.y"
+    function yy_r143(){
+    $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+    }
+#line 2803 "smarty_internal_templateparser.php"
+#line 906 "smarty_internal_templateparser.y"
+    function yy_r144(){
+    $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+    }
+#line 2808 "smarty_internal_templateparser.php"
+#line 913 "smarty_internal_templateparser.y"
+    function yy_r145(){
+    if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') {
+        $this->_retvalue =  $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
+    } else {
+        $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
+    }
+    }
+#line 2817 "smarty_internal_templateparser.php"
+#line 922 "smarty_internal_templateparser.y"
+    function yy_r146(){
+    $this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2822 "smarty_internal_templateparser.php"
+#line 927 "smarty_internal_templateparser.y"
+    function yy_r147(){
+    $this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2827 "smarty_internal_templateparser.php"
+#line 932 "smarty_internal_templateparser.y"
+    function yy_r148(){
+    if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) == '_') {
+        $this->compiler->trigger_template_error (self::Err1);
+    }
+    $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2835 "smarty_internal_templateparser.php"
+#line 939 "smarty_internal_templateparser.y"
+    function yy_r149(){
+    if ($this->security) {
+        $this->compiler->trigger_template_error (self::Err2);
+    }
+    $this->_retvalue = '->{'.$this->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
+    }
+#line 2843 "smarty_internal_templateparser.php"
+#line 946 "smarty_internal_templateparser.y"
+    function yy_r150(){
+    if ($this->security) {
+        $this->compiler->trigger_template_error (self::Err2);
+    }
+    $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+    }
+#line 2851 "smarty_internal_templateparser.php"
+#line 953 "smarty_internal_templateparser.y"
+    function yy_r151(){
+    if ($this->security) {
+        $this->compiler->trigger_template_error (self::Err2);
+    }
+    $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+    }
+#line 2859 "smarty_internal_templateparser.php"
+#line 961 "smarty_internal_templateparser.y"
+    function yy_r152(){
+    $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2864 "smarty_internal_templateparser.php"
+#line 969 "smarty_internal_templateparser.y"
+    function yy_r153(){
+    if (!$this->security || $this->smarty->security_policy->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
+        if (strcasecmp($this->yystack[$this->yyidx + -3]->minor,'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'array') === 0 || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
+            $func_name = strtolower($this->yystack[$this->yyidx + -3]->minor);
+            if ($func_name == 'isset') {
+                if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
+                    $this->compiler->trigger_template_error ('Illegal number of paramer in "isset()"');
+                }
+                $par = implode(',',$this->yystack[$this->yyidx + -1]->minor);
+                if (strncasecmp($par,'$_smarty_tpl->getConfigVariable',strlen('$_smarty_tpl->getConfigVariable')) === 0) {
+                    $this->prefix_number++;
+                    $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.str_replace(')',', false)',$par).';?>';
+                    $isset_par = '$_tmp'.$this->prefix_number;
+                } else {
+                    $isset_par=str_replace("')->value","',null,true,false)->value",$par);
+                }
+                $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $isset_par .")";
+            } elseif (in_array($func_name,array('empty','reset','current','end','prev','next'))){
+                if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
+                    $this->compiler->trigger_template_error ('Illegal number of paramer in "empty()"');
+                }
+                if ($func_name == 'empty') {
+                    $this->_retvalue = $func_name.'('.str_replace("')->value","',null,true,false)->value",$this->yystack[$this->yyidx + -1]->minor[0]).')';
+                } else {
+                    $this->_retvalue = $func_name.'('.$this->yystack[$this->yyidx + -1]->minor[0].')';
+                }
+            } else {
+                $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")";
+            }
+        } else {
+            $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
+        }
+    }
+    }
+#line 2900 "smarty_internal_templateparser.php"
+#line 1007 "smarty_internal_templateparser.y"
+    function yy_r154(){
+    if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) == '_') {
+        $this->compiler->trigger_template_error (self::Err1);
+    }
+    $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")";
+    }
+#line 2908 "smarty_internal_templateparser.php"
+#line 1014 "smarty_internal_templateparser.y"
+    function yy_r155(){
+    if ($this->security) {
+        $this->compiler->trigger_template_error (self::Err2);
+    }
+    $this->prefix_number++;
+    $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->compileVariable("'".$this->yystack[$this->yyidx + -3]->minor."'").';?>';
+    $this->_retvalue = '$_tmp'.$this->prefix_number.'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+    }
+#line 2918 "smarty_internal_templateparser.php"
+#line 1025 "smarty_internal_templateparser.y"
+    function yy_r156(){
+    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
+    }
+#line 2923 "smarty_internal_templateparser.php"
+#line 1042 "smarty_internal_templateparser.y"
+    function yy_r159(){
+    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
+    }
+#line 2928 "smarty_internal_templateparser.php"
+#line 1046 "smarty_internal_templateparser.y"
+    function yy_r160(){
+    $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
+    }
+#line 2933 "smarty_internal_templateparser.php"
+#line 1054 "smarty_internal_templateparser.y"
+    function yy_r162(){
+    $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2938 "smarty_internal_templateparser.php"
+#line 1062 "smarty_internal_templateparser.y"
+    function yy_r163(){
+    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 2943 "smarty_internal_templateparser.php"
+#line 1096 "smarty_internal_templateparser.y"
+    function yy_r170(){
+    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2948 "smarty_internal_templateparser.php"
+#line 1101 "smarty_internal_templateparser.y"
+    function yy_r171(){
+    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2953 "smarty_internal_templateparser.php"
+#line 1107 "smarty_internal_templateparser.y"
+    function yy_r172(){
+    $this->_retvalue = '==';
+    }
+#line 2958 "smarty_internal_templateparser.php"
+#line 1111 "smarty_internal_templateparser.y"
+    function yy_r173(){
+    $this->_retvalue = '!=';
+    }
+#line 2963 "smarty_internal_templateparser.php"
+#line 1115 "smarty_internal_templateparser.y"
+    function yy_r174(){
+    $this->_retvalue = '>';
+    }
+#line 2968 "smarty_internal_templateparser.php"
+#line 1119 "smarty_internal_templateparser.y"
+    function yy_r175(){
+    $this->_retvalue = '<';
+    }
+#line 2973 "smarty_internal_templateparser.php"
+#line 1123 "smarty_internal_templateparser.y"
+    function yy_r176(){
+    $this->_retvalue = '>=';
+    }
+#line 2978 "smarty_internal_templateparser.php"
+#line 1127 "smarty_internal_templateparser.y"
+    function yy_r177(){
+    $this->_retvalue = '<=';
+    }
+#line 2983 "smarty_internal_templateparser.php"
+#line 1131 "smarty_internal_templateparser.y"
+    function yy_r178(){
+    $this->_retvalue = '===';
+    }
+#line 2988 "smarty_internal_templateparser.php"
+#line 1135 "smarty_internal_templateparser.y"
+    function yy_r179(){
+    $this->_retvalue = '!==';
+    }
+#line 2993 "smarty_internal_templateparser.php"
+#line 1139 "smarty_internal_templateparser.y"
+    function yy_r180(){
+    $this->_retvalue = '%';
+    }
+#line 2998 "smarty_internal_templateparser.php"
+#line 1143 "smarty_internal_templateparser.y"
+    function yy_r181(){
+    $this->_retvalue = '&&';
+    }
+#line 3003 "smarty_internal_templateparser.php"
+#line 1147 "smarty_internal_templateparser.y"
+    function yy_r182(){
+    $this->_retvalue = '||';
+    }
+#line 3008 "smarty_internal_templateparser.php"
+#line 1151 "smarty_internal_templateparser.y"
+    function yy_r183(){
+    $this->_retvalue = ' XOR ';
+    }
+#line 3013 "smarty_internal_templateparser.php"
+#line 1158 "smarty_internal_templateparser.y"
+    function yy_r184(){
+    $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
+    }
+#line 3018 "smarty_internal_templateparser.php"
+#line 1166 "smarty_internal_templateparser.y"
+    function yy_r186(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 3023 "smarty_internal_templateparser.php"
+#line 1174 "smarty_internal_templateparser.y"
+    function yy_r188(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 3028 "smarty_internal_templateparser.php"
+#line 1178 "smarty_internal_templateparser.y"
+    function yy_r189(){
+    $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 3033 "smarty_internal_templateparser.php"
+#line 1190 "smarty_internal_templateparser.y"
+    function yy_r191(){
+    $this->_retvalue = "''";
+    }
+#line 3038 "smarty_internal_templateparser.php"
+#line 1194 "smarty_internal_templateparser.y"
+    function yy_r192(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();
+    }
+#line 3043 "smarty_internal_templateparser.php"
+#line 1199 "smarty_internal_templateparser.y"
+    function yy_r193(){
+    $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+    }
+#line 3049 "smarty_internal_templateparser.php"
+#line 1204 "smarty_internal_templateparser.y"
+    function yy_r194(){
+    $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 3054 "smarty_internal_templateparser.php"
+#line 1208 "smarty_internal_templateparser.y"
+    function yy_r195(){
+    $this->_retvalue = new _smarty_code($this, '(string)'.$this->yystack[$this->yyidx + -1]->minor);
+    }
+#line 3059 "smarty_internal_templateparser.php"
+#line 1216 "smarty_internal_templateparser.y"
+    function yy_r197(){
+    $this->_retvalue = new _smarty_code($this, '(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
+    }
+#line 3064 "smarty_internal_templateparser.php"
+#line 1224 "smarty_internal_templateparser.y"
+    function yy_r199(){
+    $this->_retvalue = new _smarty_code($this, '(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+    }
+#line 3069 "smarty_internal_templateparser.php"
+#line 1228 "smarty_internal_templateparser.y"
+    function yy_r200(){
+    $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 3074 "smarty_internal_templateparser.php"
+#line 1232 "smarty_internal_templateparser.y"
+    function yy_r201(){
+    $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 3079 "smarty_internal_templateparser.php"
+
+    private $_retvalue;
+
+    function yy_reduce($yyruleno)
+    {
+        $yymsp = $this->yystack[$this->yyidx];
+        if (self::$yyTraceFILE && $yyruleno >= 0
+              && $yyruleno < count(self::$yyRuleName)) {
+            fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
+                self::$yyTracePrompt, $yyruleno,
+                self::$yyRuleName[$yyruleno]);
+        }
+
+        $this->_retvalue = $yy_lefthand_side = null;
+        if (array_key_exists($yyruleno, self::$yyReduceMap)) {
+            // call the action
+            $this->_retvalue = null;
+            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+            $yy_lefthand_side = $this->_retvalue;
+        }
+        $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
+        $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
+        $this->yyidx -= $yysize;
+        for($i = $yysize; $i; $i--) {
+            // pop all of the right-hand side parameters
+            array_pop($this->yystack);
+        }
+        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+        if ($yyact < self::YYNSTATE) {
+            if (!self::$yyTraceFILE && $yysize) {
+                $this->yyidx++;
+                $x = new TP_yyStackEntry;
+                $x->stateno = $yyact;
+                $x->major = $yygoto;
+                $x->minor = $yy_lefthand_side;
+                $this->yystack[$this->yyidx] = $x;
+            } else {
+                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+            }
+        } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+            $this->yy_accept();
+        }
+    }
+
+    function yy_parse_failed()
+    {
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
+        }
+        while ($this->yyidx >= 0) {
+            $this->yy_pop_parser_stack();
+        }
+    }
+
+    function yy_syntax_error($yymajor, $TOKEN)
+    {
+#line 77 "smarty_internal_templateparser.y"
+
+    $this->internalError = true;
+    $this->yymajor = $yymajor;
+    $this->compiler->trigger_template_error();
+#line 3142 "smarty_internal_templateparser.php"
+    }
+
+    function yy_accept()
+    {
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
+        }
+        while ($this->yyidx >= 0) {
+            $stack = $this->yy_pop_parser_stack();
+        }
+#line 69 "smarty_internal_templateparser.y"
+
+    $this->successful = !$this->internalError;
+    $this->internalError = false;
+    $this->retvalue = $this->_retvalue;
+    //echo $this->retvalue."\n\n";
+#line 3160 "smarty_internal_templateparser.php"
+    }
+
+    function doParse($yymajor, $yytokenvalue)
+    {
+        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
+
+        if ($this->yyidx === null || $this->yyidx < 0) {
+            $this->yyidx = 0;
+            $this->yyerrcnt = -1;
+            $x = new TP_yyStackEntry;
+            $x->stateno = 0;
+            $x->major = 0;
+            $this->yystack = array();
+            array_push($this->yystack, $x);
+        }
+        $yyendofinput = ($yymajor==0);
+
+        if (self::$yyTraceFILE) {
+            fprintf(self::$yyTraceFILE, "%sInput %s\n",
+                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+        }
+
+        do {
+            $yyact = $this->yy_find_shift_action($yymajor);
+            if ($yymajor < self::YYERRORSYMBOL &&
+                  !$this->yy_is_expected_token($yymajor)) {
+                // force a syntax error
+                $yyact = self::YY_ERROR_ACTION;
+            }
+            if ($yyact < self::YYNSTATE) {
+                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+                $this->yyerrcnt--;
+                if ($yyendofinput && $this->yyidx >= 0) {
+                    $yymajor = 0;
+                } else {
+                    $yymajor = self::YYNOCODE;
+                }
+            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+                $this->yy_reduce($yyact - self::YYNSTATE);
+            } elseif ($yyact == self::YY_ERROR_ACTION) {
+                if (self::$yyTraceFILE) {
+                    fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
+                        self::$yyTracePrompt);
+                }
+                if (self::YYERRORSYMBOL) {
+                    if ($this->yyerrcnt < 0) {
+                        $this->yy_syntax_error($yymajor, $yytokenvalue);
+                    }
+                    $yymx = $this->yystack[$this->yyidx]->major;
+                    if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
+                        if (self::$yyTraceFILE) {
+                            fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
+                                self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+                        }
+                        $this->yy_destructor($yymajor, $yytokenvalue);
+                        $yymajor = self::YYNOCODE;
+                    } else {
+                        while ($this->yyidx >= 0 &&
+                                 $yymx != self::YYERRORSYMBOL &&
+        ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+                              ){
+                            $this->yy_pop_parser_stack();
+                        }
+                        if ($this->yyidx < 0 || $yymajor==0) {
+                            $this->yy_destructor($yymajor, $yytokenvalue);
+                            $this->yy_parse_failed();
+                            $yymajor = self::YYNOCODE;
+                        } elseif ($yymx != self::YYERRORSYMBOL) {
+                            $u2 = 0;
+                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+                        }
+                    }
+                    $this->yyerrcnt = 3;
+                    $yyerrorhit = 1;
+                } else {
+                    if ($this->yyerrcnt <= 0) {
+                        $this->yy_syntax_error($yymajor, $yytokenvalue);
+                    }
+                    $this->yyerrcnt = 3;
+                    $this->yy_destructor($yymajor, $yytokenvalue);
+                    if ($yyendofinput) {
+                        $this->yy_parse_failed();
+                    }
+                    $yymajor = self::YYNOCODE;
+                }
+            } else {
+                $this->yy_accept();
+                $yymajor = self::YYNOCODE;
+            }
+        } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
+    }
+}
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_utility.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_utility.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_utility.php	(revision 25596)
@@ -0,0 +1,830 @@
+<?php
+/**
+ * Project:     Smarty: the PHP compiling template engine
+ * File:        smarty_internal_utility.php
+ * SVN:         $Id: $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @version 3-SVN$Rev: 3286 $
+ */
+
+
+/**
+ * Utility class
+ *
+ * @package Smarty
+ * @subpackage Security
+ */
+class Smarty_Internal_Utility {
+
+    /**
+     * private constructor to prevent calls creation of new instances
+     */
+    private final function __construct()
+    {
+        // intentionally left blank
+    }
+
+    /**
+     * Compile all template files
+     *
+     * @param string $extension     template file name extension
+     * @param bool   $force_compile force all to recompile
+     * @param int    $time_limit    set maximum execution time
+     * @param int    $max_errors    set maximum allowed errors
+     * @param Smarty $smarty        Smarty instance
+     * @return integer number of template files compiled
+     */
+    public static function compileAllTemplates($extention, $force_compile, $time_limit, $max_errors, Smarty $smarty)
+    {
+        // switch off time limit
+        if (function_exists('set_time_limit')) {
+            @set_time_limit($time_limit);
+        }
+        $smarty->force_compile = $force_compile;
+        $_count = 0;
+        $_error_count = 0;
+        // loop over array of template directories
+        foreach($smarty->getTemplateDir() as $_dir) {
+            $_compileDirs = new RecursiveDirectoryIterator($_dir);
+            $_compile = new RecursiveIteratorIterator($_compileDirs);
+            foreach ($_compile as $_fileinfo) {
+                $_file = $_fileinfo->getFilename();
+                if (substr(basename($_fileinfo->getPathname()),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+                if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
+                if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
+                   $_template_file = $_file;
+                } else {
+                   $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
+                }
+                echo '<br>', $_dir, '---', $_template_file;
+                flush();
+                $_start_time = microtime(true);
+                try {
+                    $_tpl = $smarty->createTemplate($_template_file,null,null,null,false);
+                    if ($_tpl->mustCompile()) {
+                        $_tpl->compileTemplateSource();
+                        $_count++;
+                        echo ' compiled in  ', microtime(true) - $_start_time, ' seconds';
+                        flush();
+                    } else {
+                        echo ' is up to date';
+                        flush();
+                    }
+                }
+                catch (Exception $e) {
+                    echo 'Error: ', $e->getMessage(), "<br><br>";
+                    $_error_count++;
+                }
+                // free memory
+                $smarty->template_objects = array();
+                $_tpl->smarty->template_objects = array();
+                $_tpl = null;
+                if ($max_errors !== null && $_error_count == $max_errors) {
+                    echo '<br><br>too many errors';
+                    exit();
+                }
+            }
+        }
+        return $_count;
+    }
+
+    /**
+     * Compile all config files
+     *
+     * @param string $extension     config file name extension
+     * @param bool   $force_compile force all to recompile
+     * @param int    $time_limit    set maximum execution time
+     * @param int    $max_errors    set maximum allowed errors
+     * @param Smarty $smarty        Smarty instance
+     * @return integer number of config files compiled
+     */
+    public static function compileAllConfig($extention, $force_compile, $time_limit, $max_errors, Smarty $smarty)
+    {
+        // switch off time limit
+        if (function_exists('set_time_limit')) {
+            @set_time_limit($time_limit);
+        }
+        $smarty->force_compile = $force_compile;
+        $_count = 0;
+        $_error_count = 0;
+        // loop over array of template directories
+        foreach($smarty->getConfigDir() as $_dir) {
+            $_compileDirs = new RecursiveDirectoryIterator($_dir);
+            $_compile = new RecursiveIteratorIterator($_compileDirs);
+            foreach ($_compile as $_fileinfo) {
+                $_file = $_fileinfo->getFilename();
+                if (substr(basename($_fileinfo->getPathname()),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+                if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
+                if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
+                    $_config_file = $_file;
+                } else {
+                    $_config_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
+                }
+                echo '<br>', $_dir, '---', $_config_file;
+                flush();
+                $_start_time = microtime(true);
+                try {
+                    $_config = new Smarty_Internal_Config($_config_file, $smarty);
+                    if ($_config->mustCompile()) {
+                        $_config->compileConfigSource();
+                        $_count++;
+                        echo ' compiled in  ', microtime(true) - $_start_time, ' seconds';
+                        flush();
+                    } else {
+                        echo ' is up to date';
+                        flush();
+                    }
+                }
+                catch (Exception $e) {
+                    echo 'Error: ', $e->getMessage(), "<br><br>";
+                    $_error_count++;
+                }
+                if ($max_errors !== null && $_error_count == $max_errors) {
+                    echo '<br><br>too many errors';
+                    exit();
+                }
+            }
+        }
+        return $_count;
+    }
+
+    /**
+     * Delete compiled template file
+     *
+     * @param string  $resource_name template name
+     * @param string  $compile_id    compile id
+     * @param integer $exp_time      expiration time
+     * @param Smarty  $smarty        Smarty instance
+     * @return integer number of template files deleted
+     */
+    public static function clearCompiledTemplate($resource_name, $compile_id, $exp_time, Smarty $smarty)
+    {
+        $_compile_dir = $smarty->getCompileDir();
+        $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
+        $_dir_sep = $smarty->use_sub_dirs ? DS : '^';
+        if (isset($resource_name)) {
+            $_save_stat = $smarty->caching;
+            $smarty->caching = false;
+            $tpl = new $smarty->template_class($resource_name, $smarty);
+            $smarty->caching = $_save_stat;
+
+            // remove from template cache
+            $tpl->source; // have the template registered before unset()
+            if ($smarty->allow_ambiguous_resources) {
+                $_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id;
+            } else {
+                $_templateId = $smarty->joined_template_dir . '#' . $resource_name . $tpl->cache_id . $tpl->compile_id;
+            }
+            if (isset($_templateId[150])) {
+                $_templateId = sha1($_templateId);
+            }
+            unset($smarty->template_objects[$_templateId]);
+
+            if ($tpl->source->exists) {
+                 $_resource_part_1 = basename(str_replace('^', '/', $tpl->compiled->filepath));
+                 $_resource_part_1_length = strlen($_resource_part_1);
+            } else {
+                return 0;
+            }
+
+            $_resource_part_2 = str_replace('.php','.cache.php',$_resource_part_1);
+            $_resource_part_2_length = strlen($_resource_part_2);
+        }
+        $_dir = $_compile_dir;
+        if ($smarty->use_sub_dirs && isset($_compile_id)) {
+            $_dir .= $_compile_id . $_dir_sep;
+        }
+        if (isset($_compile_id)) {
+            $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+            $_compile_id_part_length = strlen($_compile_id_part);
+        }
+        $_count = 0;
+        try {
+            $_compileDirs = new RecursiveDirectoryIterator($_dir);
+        // NOTE: UnexpectedValueException thrown for PHP >= 5.3
+        } catch (Exception $e) {
+            return 0;
+        }
+        $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
+        foreach ($_compile as $_file) {
+            if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false)
+                continue;
+
+            $_filepath = (string) $_file;
+
+            if ($_file->isDir()) {
+                if (!$_compile->isDot()) {
+                    // delete folder if empty
+                    @rmdir($_file->getPathname());
+                }
+            } else {
+                $unlink = false;
+                if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) && !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
+                    && (!isset($resource_name)
+                        || (isset($_filepath[$_resource_part_1_length])
+                            && substr_compare($_filepath, $_resource_part_1, -$_resource_part_1_length, $_resource_part_1_length) == 0)
+                        || (isset($_filepath[$_resource_part_2_length])
+                            && substr_compare($_filepath, $_resource_part_2, -$_resource_part_2_length, $_resource_part_2_length) == 0))) {
+                    if (isset($exp_time)) {
+                        if (time() - @filemtime($_filepath) >= $exp_time) {
+                            $unlink = true;
+                        }
+                    } else {
+                        $unlink = true;
+                    }
+                }
+
+                if ($unlink && @unlink($_filepath)) {
+                    $_count++;
+                }
+            }
+        }
+        // clear compiled cache
+        Smarty_Resource::$sources = array();
+        Smarty_Resource::$compileds = array();
+        return $_count;
+    }
+
+    /**
+     * Return array of tag/attributes of all tags used by an template
+     *
+     * @param Smarty_Internal_Template $templae template object
+     * @return array of tag/attributes
+     */
+    public static function getTags(Smarty_Internal_Template $template)
+    {
+        $template->smarty->get_used_tags = true;
+        $template->compileTemplateSource();
+        return $template->used_tags;
+    }
+
+
+    /**
+     * diagnose Smarty setup
+     *
+     * If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
+     *
+     * @param Smarty $smarty  Smarty instance to test
+     * @param array  $errors array to push results into rather than outputting them
+     * @return bool status, true if everything is fine, false else
+     */
+    public static function testInstall(Smarty $smarty, &$errors=null)
+    {
+        $status = true;
+
+        if ($errors === null) {
+            echo "<PRE>\n";
+            echo "Smarty Installation test...\n";
+            echo "Testing template directory...\n";
+        }
+
+        $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+
+        // test if all registered template_dir are accessible
+        foreach($smarty->getTemplateDir() as $template_dir) {
+            $_template_dir = $template_dir;
+            $template_dir = realpath($template_dir);
+            // resolve include_path or fail existance
+            if (!$template_dir) {
+                if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
+                    // try PHP include_path
+                    if ($_stream_resolve_include_path) {
+                        $template_dir = stream_resolve_include_path($_template_dir);
+                    } else {
+                        $template_dir = Smarty_Internal_Get_Include_Path::getIncludePath($_template_dir);
+                    }
+
+                    if ($template_dir !== false) {
+                        if ($errors === null) {
+                            echo "$template_dir is OK.\n";
+                        }
+
+                        continue;
+                    } else {
+                        $status = false;
+                        $message = "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
+                        if ($errors === null) {
+                            echo $message . ".\n";
+                        } else {
+                            $errors['template_dir'] = $message;
+                        }
+
+                        continue;
+                    }
+                } else {
+                    $status = false;
+                    $message = "FAILED: $_template_dir does not exist";
+                    if ($errors === null) {
+                        echo $message . ".\n";
+                    } else {
+                        $errors['template_dir'] = $message;
+                    }
+
+                    continue;
+                }
+            }
+
+            if (!is_dir($template_dir)) {
+                $status = false;
+                $message = "FAILED: $template_dir is not a directory";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['template_dir'] = $message;
+                }
+            } elseif (!is_readable($template_dir)) {
+                $status = false;
+                $message = "FAILED: $template_dir is not readable";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['template_dir'] = $message;
+                }
+            } else {
+                if ($errors === null) {
+                    echo "$template_dir is OK.\n";
+                }
+            }
+        }
+
+
+        if ($errors === null) {
+            echo "Testing compile directory...\n";
+        }
+
+        // test if registered compile_dir is accessible
+        $__compile_dir = $smarty->getCompileDir();
+        $_compile_dir = realpath($__compile_dir);
+        if (!$_compile_dir) {
+            $status = false;
+            $message = "FAILED: {$__compile_dir} does not exist";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['compile_dir'] = $message;
+            }
+        } elseif (!is_dir($_compile_dir)) {
+            $status = false;
+            $message = "FAILED: {$_compile_dir} is not a directory";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['compile_dir'] = $message;
+            }
+        } elseif (!is_readable($_compile_dir)) {
+            $status = false;
+            $message = "FAILED: {$_compile_dir} is not readable";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['compile_dir'] = $message;
+            }
+        } elseif (!is_writable($_compile_dir)) {
+            $status = false;
+            $message = "FAILED: {$_compile_dir} is not writable";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['compile_dir'] = $message;
+            }
+        } else {
+            if ($errors === null) {
+                echo "{$_compile_dir} is OK.\n";
+            }
+        }
+
+
+        if ($errors === null) {
+            echo "Testing plugins directory...\n";
+        }
+
+        // test if all registered plugins_dir are accessible
+        // and if core plugins directory is still registered
+        $_core_plugins_dir = realpath(dirname(__FILE__) .'/../plugins');
+        $_core_plugins_available = false;
+        foreach($smarty->getPluginsDir() as $plugin_dir) {
+            $_plugin_dir = $plugin_dir;
+            $plugin_dir = realpath($plugin_dir);
+            // resolve include_path or fail existance
+            if (!$plugin_dir) {
+                if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
+                    // try PHP include_path
+                    if ($_stream_resolve_include_path) {
+                        $plugin_dir = stream_resolve_include_path($_plugin_dir);
+                    } else {
+                        $plugin_dir = Smarty_Internal_Get_Include_Path::getIncludePath($_plugin_dir);
+                    }
+
+                    if ($plugin_dir !== false) {
+                        if ($errors === null) {
+                            echo "$plugin_dir is OK.\n";
+                        }
+
+                        continue;
+                    } else {
+                        $status = false;
+                        $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)";
+                        if ($errors === null) {
+                            echo $message . ".\n";
+                        } else {
+                            $errors['plugins_dir'] = $message;
+                        }
+
+                        continue;
+                    }
+                } else {
+                    $status = false;
+                    $message = "FAILED: $_plugin_dir does not exist";
+                    if ($errors === null) {
+                        echo $message . ".\n";
+                    } else {
+                        $errors['plugins_dir'] = $message;
+                    }
+
+                    continue;
+                }
+            }
+
+            if (!is_dir($plugin_dir)) {
+                $status = false;
+                $message = "FAILED: $plugin_dir is not a directory";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['plugins_dir'] = $message;
+                }
+            } elseif (!is_readable($plugin_dir)) {
+                $status = false;
+                $message = "FAILED: $plugin_dir is not readable";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['plugins_dir'] = $message;
+                }
+            } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) {
+                $_core_plugins_available = true;
+                if ($errors === null) {
+                    echo "$plugin_dir is OK.\n";
+                }
+            } else {
+                if ($errors === null) {
+                    echo "$plugin_dir is OK.\n";
+                }
+            }
+        }
+        if (!$_core_plugins_available) {
+            $status = false;
+            $message = "WARNING: Smarty's own libs/plugins is not available";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } elseif (!isset($errors['plugins_dir'])) {
+                $errors['plugins_dir'] = $message;
+            }
+        }
+
+        if ($errors === null) {
+            echo "Testing cache directory...\n";
+        }
+
+
+        // test if all registered cache_dir is accessible
+        $__cache_dir = $smarty->getCacheDir();
+        $_cache_dir = realpath($__cache_dir);
+        if (!$_cache_dir) {
+            $status = false;
+            $message = "FAILED: {$__cache_dir} does not exist";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['cache_dir'] = $message;
+            }
+        } elseif (!is_dir($_cache_dir)) {
+            $status = false;
+            $message = "FAILED: {$_cache_dir} is not a directory";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['cache_dir'] = $message;
+            }
+        } elseif (!is_readable($_cache_dir)) {
+            $status = false;
+            $message = "FAILED: {$_cache_dir} is not readable";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['cache_dir'] = $message;
+            }
+        } elseif (!is_writable($_cache_dir)) {
+            $status = false;
+            $message = "FAILED: {$_cache_dir} is not writable";
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['cache_dir'] = $message;
+            }
+        } else {
+            if ($errors === null) {
+                echo "{$_cache_dir} is OK.\n";
+            }
+        }
+
+
+        if ($errors === null) {
+            echo "Testing configs directory...\n";
+        }
+
+        // test if all registered config_dir are accessible
+        foreach($smarty->getConfigDir() as $config_dir) {
+            $_config_dir = $config_dir;
+            $config_dir = realpath($config_dir);
+            // resolve include_path or fail existance
+            if (!$config_dir) {
+                if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
+                    // try PHP include_path
+                    if ($_stream_resolve_include_path) {
+                        $config_dir = stream_resolve_include_path($_config_dir);
+                    } else {
+                        $config_dir = Smarty_Internal_Get_Include_Path::getIncludePath($_config_dir);
+                    }
+
+                    if ($config_dir !== false) {
+                        if ($errors === null) {
+                            echo "$config_dir is OK.\n";
+                        }
+
+                        continue;
+                    } else {
+                        $status = false;
+                        $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
+                        if ($errors === null) {
+                            echo $message . ".\n";
+                        } else {
+                            $errors['config_dir'] = $message;
+                        }
+
+                        continue;
+                    }
+                } else {
+                    $status = false;
+                    $message = "FAILED: $_config_dir does not exist";
+                    if ($errors === null) {
+                        echo $message . ".\n";
+                    } else {
+                        $errors['config_dir'] = $message;
+                    }
+
+                    continue;
+                }
+            }
+
+            if (!is_dir($config_dir)) {
+                $status = false;
+                $message = "FAILED: $config_dir is not a directory";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['config_dir'] = $message;
+                }
+            } elseif (!is_readable($config_dir)) {
+                $status = false;
+                $message = "FAILED: $config_dir is not readable";
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['config_dir'] = $message;
+                }
+            } else {
+                if ($errors === null) {
+                    echo "$config_dir is OK.\n";
+                }
+            }
+        }
+
+
+        if ($errors === null) {
+            echo "Testing sysplugin files...\n";
+        }
+        // test if sysplugins are available
+        $source = SMARTY_SYSPLUGINS_DIR;
+        if (is_dir($source)) {
+            $expected = array(
+                "smarty_cacheresource.php" => true,
+                "smarty_cacheresource_custom.php" => true,
+                "smarty_cacheresource_keyvaluestore.php" => true,
+                "smarty_config_source.php" => true,
+                "smarty_internal_cacheresource_file.php" => true,
+                "smarty_internal_compile_append.php" => true,
+                "smarty_internal_compile_assign.php" => true,
+                "smarty_internal_compile_block.php" => true,
+                "smarty_internal_compile_break.php" => true,
+                "smarty_internal_compile_call.php" => true,
+                "smarty_internal_compile_capture.php" => true,
+                "smarty_internal_compile_config_load.php" => true,
+                "smarty_internal_compile_continue.php" => true,
+                "smarty_internal_compile_debug.php" => true,
+                "smarty_internal_compile_eval.php" => true,
+                "smarty_internal_compile_extends.php" => true,
+                "smarty_internal_compile_for.php" => true,
+                "smarty_internal_compile_foreach.php" => true,
+                "smarty_internal_compile_function.php" => true,
+                "smarty_internal_compile_if.php" => true,
+                "smarty_internal_compile_include.php" => true,
+                "smarty_internal_compile_include_php.php" => true,
+                "smarty_internal_compile_insert.php" => true,
+                "smarty_internal_compile_ldelim.php" => true,
+                "smarty_internal_compile_nocache.php" => true,
+                "smarty_internal_compile_private_block_plugin.php" => true,
+                "smarty_internal_compile_private_function_plugin.php" => true,
+                "smarty_internal_compile_private_modifier.php" => true,
+                "smarty_internal_compile_private_object_block_function.php" => true,
+                "smarty_internal_compile_private_object_function.php" => true,
+                "smarty_internal_compile_private_print_expression.php" => true,
+                "smarty_internal_compile_private_registered_block.php" => true,
+                "smarty_internal_compile_private_registered_function.php" => true,
+                "smarty_internal_compile_private_special_variable.php" => true,
+                "smarty_internal_compile_rdelim.php" => true,
+                "smarty_internal_compile_section.php" => true,
+                "smarty_internal_compile_setfilter.php" => true,
+                "smarty_internal_compile_while.php" => true,
+                "smarty_internal_compilebase.php" => true,
+                "smarty_internal_config.php" => true,
+                "smarty_internal_config_file_compiler.php" => true,
+                "smarty_internal_configfilelexer.php" => true,
+                "smarty_internal_configfileparser.php" => true,
+                "smarty_internal_data.php" => true,
+                "smarty_internal_debug.php" => true,
+                "smarty_internal_filter_handler.php" => true,
+                "smarty_internal_function_call_handler.php" => true,
+                "smarty_internal_get_include_path.php" => true,
+                "smarty_internal_nocache_insert.php" => true,
+                "smarty_internal_parsetree.php" => true,
+                "smarty_internal_resource_eval.php" => true,
+                "smarty_internal_resource_extends.php" => true,
+                "smarty_internal_resource_file.php" => true,
+                "smarty_internal_resource_registered.php" => true,
+                "smarty_internal_resource_stream.php" => true,
+                "smarty_internal_resource_string.php" => true,
+                "smarty_internal_smartytemplatecompiler.php" => true,
+                "smarty_internal_template.php" => true,
+                "smarty_internal_templatebase.php" => true,
+                "smarty_internal_templatecompilerbase.php" => true,
+                "smarty_internal_templatelexer.php" => true,
+                "smarty_internal_templateparser.php" => true,
+                "smarty_internal_utility.php" => true,
+                "smarty_internal_write_file.php" => true,
+                "smarty_resource.php" => true,
+                "smarty_resource_custom.php" => true,
+                "smarty_resource_recompiled.php" => true,
+                "smarty_resource_uncompiled.php" => true,
+                "smarty_security.php" => true,
+            );
+            $iterator = new DirectoryIterator($source);
+            foreach ($iterator as $file) {
+                if (!$file->isDot()) {
+                    $filename = $file->getFilename();
+                    if (isset($expected[$filename])) {
+                        unset($expected[$filename]);
+                    }
+                }
+            }
+            if ($expected) {
+                $status = false;
+                $message = "FAILED: files missing from libs/sysplugins: ". join(', ', array_keys($expected));
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['sysplugins'] = $message;
+                }
+            } elseif ($errors === null) {
+                echo "... OK\n";
+            }
+        } else {
+            $status = false;
+            $message = "FAILED: ". SMARTY_SYSPLUGINS_DIR .' is not a directory';
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['sysplugins_dir_constant'] = $message;
+            }
+        }
+
+        if ($errors === null) {
+            echo "Testing plugin files...\n";
+        }
+        // test if core plugins are available
+        $source = SMARTY_PLUGINS_DIR;
+        if (is_dir($source)) {
+            $expected = array(
+                "block.textformat.php" => true,
+                "function.counter.php" => true,
+                "function.cycle.php" => true,
+                "function.fetch.php" => true,
+                "function.html_checkboxes.php" => true,
+                "function.html_image.php" => true,
+                "function.html_options.php" => true,
+                "function.html_radios.php" => true,
+                "function.html_select_date.php" => true,
+                "function.html_select_time.php" => true,
+                "function.html_table.php" => true,
+                "function.mailto.php" => true,
+                "function.math.php" => true,
+                "modifier.capitalize.php" => true,
+                "modifier.date_format.php" => true,
+                "modifier.debug_print_var.php" => true,
+                "modifier.escape.php" => true,
+                "modifier.regex_replace.php" => true,
+                "modifier.replace.php" => true,
+                "modifier.spacify.php" => true,
+                "modifier.truncate.php" => true,
+                "modifiercompiler.cat.php" => true,
+                "modifiercompiler.count_characters.php" => true,
+                "modifiercompiler.count_paragraphs.php" => true,
+                "modifiercompiler.count_sentences.php" => true,
+                "modifiercompiler.count_words.php" => true,
+                "modifiercompiler.default.php" => true,
+                "modifiercompiler.escape.php" => true,
+                "modifiercompiler.from_charset.php" => true,
+                "modifiercompiler.indent.php" => true,
+                "modifiercompiler.lower.php" => true,
+                "modifiercompiler.noprint.php" => true,
+                "modifiercompiler.string_format.php" => true,
+                "modifiercompiler.strip.php" => true,
+                "modifiercompiler.strip_tags.php" => true,
+                "modifiercompiler.to_charset.php" => true,
+                "modifiercompiler.unescape.php" => true,
+                "modifiercompiler.upper.php" => true,
+                "modifiercompiler.wordwrap.php" => true,
+                "outputfilter.trimwhitespace.php" => true,
+                "shared.escape_special_chars.php" => true,
+                "shared.literal_compiler_param.php" => true,
+                "shared.make_timestamp.php" => true,
+                "shared.mb_str_replace.php" => true,
+                "shared.mb_unicode.php" => true,
+                "shared.mb_wordwrap.php" => true,
+                "variablefilter.htmlspecialchars.php" => true,
+            );
+            $iterator = new DirectoryIterator($source);
+            foreach ($iterator as $file) {
+                if (!$file->isDot()) {
+                    $filename = $file->getFilename();
+                    if (isset($expected[$filename])) {
+                        unset($expected[$filename]);
+                    }
+                }
+            }
+            if ($expected) {
+                $status = false;
+                $message = "FAILED: files missing from libs/plugins: ". join(', ', array_keys($expected));
+                if ($errors === null) {
+                    echo $message . ".\n";
+                } else {
+                    $errors['plugins'] = $message;
+                }
+            } elseif ($errors === null) {
+                echo "... OK\n";
+            }
+        } else {
+            $status = false;
+            $message = "FAILED: ". SMARTY_PLUGINS_DIR .' is not a directory';
+            if ($errors === null) {
+                echo $message . ".\n";
+            } else {
+                $errors['plugins_dir_constant'] = $message;
+            }
+        }
+
+        if ($errors === null) {
+            echo "Tests complete.\n";
+            echo "</PRE>\n";
+        }
+
+        return $status;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_write_file.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_write_file.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_internal_write_file.php	(revision 25596)
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Smarty write file plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Monte Ohrt
+ */
+
+/**
+ * Smarty Internal Write File Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Write_File {
+
+    /**
+     * Writes file in a safe way to disk
+     *
+     * @param string $_filepath complete filepath
+     * @param string $_contents file content
+     * @param Smarty $smarty    smarty instance
+     * @return boolean true
+     */
+    public static function writeFile($_filepath, $_contents, Smarty $smarty)
+    {
+        $_error_reporting = error_reporting();
+        error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
+        if ($smarty->_file_perms !== null) {
+            $old_umask = umask(0);
+        }
+
+        $_dirpath = dirname($_filepath);
+        // if subdirs, create dir structure
+        if ($_dirpath !== '.' && !file_exists($_dirpath)) {
+            mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true);
+        }
+
+        // write to tmp file, then move to overt file lock race condition
+        $_tmp_file = $_dirpath . DS . uniqid('wrt', true);
+        if (!file_put_contents($_tmp_file, $_contents)) {
+            error_reporting($_error_reporting);
+            throw new SmartyException("unable to write file {$_tmp_file}");
+            return false;
+        }
+        
+        /*
+         * Windows' rename() fails if the destination exists,
+         * Linux' rename() properly handles the overwrite.
+         * Simply unlink()ing a file might cause other processes 
+         * currently reading that file to fail, but linux' rename()
+         * seems to be smart enough to handle that for us.
+         */
+        if (Smarty::$_IS_WINDOWS) {
+            // remove original file
+            @unlink($_filepath);
+            // rename tmp file
+            $success = @rename($_tmp_file, $_filepath);
+        } else {
+            // rename tmp file
+            $success = @rename($_tmp_file, $_filepath);
+            if (!$success) {
+                // remove original file
+                @unlink($_filepath);
+                // rename tmp file
+                $success = @rename($_tmp_file, $_filepath);
+            }
+        }
+
+        if (!$success) {
+            error_reporting($_error_reporting);
+            throw new SmartyException("unable to write file {$_filepath}");
+            return false;
+        }
+
+        if ($smarty->_file_perms !== null) {
+            // set file permissions
+            chmod($_filepath, $smarty->_file_perms);
+            umask($old_umask);
+        }
+        error_reporting($_error_reporting);
+        return true;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource.php	(revision 25596)
@@ -0,0 +1,857 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ *
+ * Base implementation for resource plugins
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource {
+    /**
+     * cache for Smarty_Template_Source instances
+     * @var array
+     */
+    public static $sources = array();
+    /**
+     * cache for Smarty_Template_Compiled instances
+     * @var array
+     */
+    public static $compileds = array();
+    /**
+     * cache for Smarty_Resource instances
+     * @var array
+     */
+    public static $resources = array();
+    /**
+     * resource types provided by the core
+     * @var array
+     */
+    protected static $sysplugins = array(
+        'file' => true,
+        'string' => true,
+        'extends' => true,
+        'stream' => true,
+        'eval' => true,
+        'php' => true
+    );
+
+    /**
+     * Name of the Class to compile this resource's contents with
+     * @var string
+     */
+    public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
+
+    /**
+     * Name of the Class to tokenize this resource's contents with
+     * @var string
+     */
+    public $template_lexer_class = 'Smarty_Internal_Templatelexer';
+
+    /**
+     * Name of the Class to parse this resource's contents with
+     * @var string
+     */
+    public $template_parser_class = 'Smarty_Internal_Templateparser';
+
+    /**
+     * Load template's source into current template object
+     *
+     * {@internal The loaded source is assigned to $_template->source->content directly.}}
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     * @throws SmartyException if source cannot be loaded
+     */
+    public abstract function getContent(Smarty_Template_Source $source);
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source source object
+     * @param Smarty_Internal_Template $_template     template object
+     */
+    public abstract function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null);
+
+    /**
+     * populate Source Object with timestamp and exists from Resource
+     *
+     * @param Smarty_Template_Source $source source object
+     */
+    public function populateTimestamp(Smarty_Template_Source $source)
+    {
+        // intentionally left blank
+    }
+
+
+    /**
+     * modify resource_name according to resource handlers specifications
+     *
+     * @param Smarty $smarty        Smarty instance
+     * @param string $resource_name resource_name to make unique
+     * @return string unique resource name
+     */
+    protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+    {
+        return get_class($this) . '#' . $smarty->joined_template_dir . '#' . $resource_name;
+    }
+
+    /**
+     * populate Compiled Object with compiled filepath
+     *
+     * @param Smarty_Template_Compiled $compiled  compiled object
+     * @param Smarty_Internal_Template $_template template object
+     */
+    public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+    {
+        $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null;
+        $_filepath = $compiled->source->uid;
+        // if use_sub_dirs, break file into directories
+        if ($_template->smarty->use_sub_dirs) {
+            $_filepath = substr($_filepath, 0, 2) . DS
+             . substr($_filepath, 2, 2) . DS
+             . substr($_filepath, 4, 2) . DS
+             . $_filepath;
+        }
+        $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
+        if (isset($_compile_id)) {
+            $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
+        }
+        // caching token
+        if ($_template->caching) {
+            $_cache = '.cache';
+        } else {
+            $_cache = '';
+        }
+        $_compile_dir = $_template->smarty->getCompileDir();
+        // set basename if not specified
+        $_basename = $this->getBasename($compiled->source);
+        if ($_basename === null) {
+            $_basename = basename( preg_replace('![^\w\/]+!', '_', $compiled->source->name) );
+        }
+        // separate (optional) basename by dot
+        if ($_basename) {
+            $_basename = '.' . $_basename;
+        }
+
+        $compiled->filepath = $_compile_dir . $_filepath . '.' . $compiled->source->type . $_basename . $_cache . '.php';
+    }
+    
+    /**
+     * Normalize Paths "foo/../bar" to "bar" 
+     *
+     * @param string $_path path to normalize
+     * @param boolean $ds respect windows directory separator
+     * @return string normalized path
+     */
+    protected function normalizePath($_path, $ds=true)
+    {
+        if ($ds) {
+            // don't we all just love windows?
+            $_path = str_replace('\\', '/', $_path);
+        }
+        
+        $offset = 0;
+        
+        // resolve simples
+        $_path = preg_replace('#(/\./(\./)*)|/{2,}#', '/', $_path);
+        // resolve parents
+        while (true) {
+            $_parent = strpos($_path, '/../', $offset);
+            if (!$_parent) {
+                break;
+            } else if ($_path[$_parent - 1] === '.') {
+                $offset = $_parent + 3;
+                continue;
+            }
+            
+            $_pos = strrpos($_path, '/', $_parent - strlen($_path) - 1);
+            if ($_pos === false) {
+                // don't we all just love windows?
+                $_pos = $_parent;
+            }
+            
+            $_path = substr_replace($_path, '', $_pos, $_parent + 3 - $_pos);
+        }
+        
+        if ($ds && DS != '/') {
+            // don't we all just love windows?
+            $_path = str_replace('/', '\\', $_path);
+        }
+        
+        return $_path;
+    }
+    
+    /**
+     * build template filepath by traversing the template_dir array
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     * @return string fully qualified filepath
+     * @throws SmartyException if default template handler is registered but not callable
+     */
+    protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $file = $source->name;
+        if ($source instanceof Smarty_Config_Source) {
+            $_directories = $source->smarty->getConfigDir();
+            $_default_handler = $source->smarty->default_config_handler_func;
+        } else {
+            $_directories = $source->smarty->getTemplateDir();
+            $_default_handler = $source->smarty->default_template_handler_func;
+        }
+
+        // go relative to a given template?
+        $_file_is_dotted = $file[0] == '.' && ($file[1] == '.' || $file[1] == '/' || $file[1] == "\\");
+        if ($_template && $_template->parent instanceof Smarty_Internal_Template && $_file_is_dotted) {
+            if ($_template->parent->source->type != 'file' && $_template->parent->source->type != 'extends' && !$_template->parent->allow_relative_path) {
+                throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
+            }
+            $file = dirname($_template->parent->source->filepath) . DS . $file;
+            $_file_exact_match = true;
+            if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
+                // the path gained from the parent template is relative to the current working directory
+                // as expansions (like include_path) have already been done
+                $file = getcwd() . DS . $file;
+            }
+        }
+
+        // resolve relative path
+        if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
+            // don't we all just love windows?
+            $_path = str_replace('\\', '/', $file);
+            $_path = DS . trim($file, '/');
+            $_was_relative = true;
+        } else {
+            // don't we all just love windows?
+            $_path = str_replace('\\', '/', $file);
+        }
+        $_path = $this->normalizePath($_path, false);
+        if (DS != '/') {
+            // don't we all just love windows?
+            $_path = str_replace('/', '\\', $_path);
+        }
+        // revert to relative
+        if (isset($_was_relative)) {
+            $_path = substr($_path, 1);
+        }
+
+        // this is only required for directories
+        $file = rtrim($_path, '/\\');
+
+        // files relative to a template only get one shot
+        if (isset($_file_exact_match)) {
+            return $this->fileExists($source, $file) ? $file : false;
+        }
+
+        // template_dir index?
+        if (preg_match('#^\[(?P<key>[^\]]+)\](?P<file>.+)$#', $file, $match)) {
+            $_directory = null;
+            // try string indexes
+            if (isset($_directories[$match['key']])) {
+                $_directory = $_directories[$match['key']];
+            } else if (is_numeric($match['key'])) {
+                // try numeric index
+                $match['key'] = (int) $match['key'];
+                if (isset($_directories[$match['key']])) {
+                    $_directory = $_directories[$match['key']];
+                } else {
+                    // try at location index
+                    $keys = array_keys($_directories);
+                    $_directory = $_directories[$keys[$match['key']]];
+                }
+            }
+
+            if ($_directory) {
+                $_file = substr($file, strpos($file, ']') + 1);
+                $_filepath = $_directory . $_file;
+                if ($this->fileExists($source, $_filepath)) {
+                    return $_filepath;
+                }
+            }
+        }
+
+        $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+
+        // relative file name?
+        if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
+            foreach ($_directories as $_directory) {
+                $_filepath = $_directory . $file;
+                if ($this->fileExists($source, $_filepath)) {
+                    return $this->normalizePath($_filepath);
+                }
+                if ($source->smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_directory)) {
+                    // try PHP include_path
+                    if ($_stream_resolve_include_path) {
+                        $_filepath = stream_resolve_include_path($_filepath);
+                    } else {
+                        $_filepath = Smarty_Internal_Get_Include_Path::getIncludePath($_filepath);
+                    }
+
+                    if ($_filepath !== false) {
+                        if ($this->fileExists($source, $_filepath)) {
+                            return $this->normalizePath($_filepath);
+                        }
+                    }
+                }
+            }
+        }
+
+        // try absolute filepath
+        if ($this->fileExists($source, $file)) {
+            return $file;
+        }
+
+        // no tpl file found
+        if ($_default_handler) {
+            if (!is_callable($_default_handler)) {
+                if ($source instanceof Smarty_Config_Source) {
+                    throw new SmartyException("Default config handler not callable");
+                } else {
+                    throw new SmartyException("Default template handler not callable");
+                }
+            }
+            $_return = call_user_func_array($_default_handler,
+                array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
+            if (is_string($_return)) {
+                $source->timestamp = @filemtime($_return);
+                $source->exists = !!$source->timestamp;
+                return $_return;
+            } elseif ($_return === true) {
+                $source->content = $_content;
+                $source->timestamp = $_timestamp;
+                $source->exists = true;
+                return $_filepath;
+            }
+        }
+
+        // give up
+        return false;
+    }
+
+    /**
+     * test is file exists and save timestamp
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param string $file file name
+     * @return bool  true if file exists
+     */
+    protected function fileExists(Smarty_Template_Source $source, $file)
+    {
+        $source->timestamp = @filemtime($file);
+        return $source->exists = !!$source->timestamp;
+
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    protected function getBasename(Smarty_Template_Source $source)
+    {
+        return null;
+    }
+
+    /**
+     * Load Resource Handler
+     *
+     * @param Smarty $smarty    smarty object
+     * @param string $type      name of the resource
+     * @return Smarty_Resource Resource Handler
+     */
+    public static function load(Smarty $smarty, $type)
+    {
+        // try smarty's cache
+        if (isset($smarty->_resource_handlers[$type])) {
+            return $smarty->_resource_handlers[$type];
+        }
+
+        // try registered resource
+        if (isset($smarty->registered_resources[$type])) {
+            if ($smarty->registered_resources[$type] instanceof Smarty_Resource) {
+                $smarty->_resource_handlers[$type] = $smarty->registered_resources[$type];
+                // note registered to smarty is not kept unique!
+                return $smarty->_resource_handlers[$type];
+            }
+
+            if (!isset(self::$resources['registered'])) {
+                self::$resources['registered'] = new Smarty_Internal_Resource_Registered();
+            }
+            if (!isset($smarty->_resource_handlers[$type])) {
+                $smarty->_resource_handlers[$type] = self::$resources['registered'];
+            }
+
+            return $smarty->_resource_handlers[$type];
+        }
+
+        // try sysplugins dir
+        if (isset(self::$sysplugins[$type])) {
+            if (!isset(self::$resources[$type])) {
+                $_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type);
+                self::$resources[$type] = new $_resource_class();
+            }
+            return $smarty->_resource_handlers[$type] = self::$resources[$type];
+        }
+
+        // try plugins dir
+        $_resource_class = 'Smarty_Resource_' . ucfirst($type);
+        if ($smarty->loadPlugin($_resource_class)) {
+            if (isset(self::$resources[$type])) {
+                return $smarty->_resource_handlers[$type] = self::$resources[$type];
+            }
+
+            if (class_exists($_resource_class, false)) {
+                self::$resources[$type] = new $_resource_class();
+                return $smarty->_resource_handlers[$type] = self::$resources[$type];
+            } else {
+                $smarty->registerResource($type, array(
+                    "smarty_resource_{$type}_source",
+                    "smarty_resource_{$type}_timestamp",
+                    "smarty_resource_{$type}_secure",
+                    "smarty_resource_{$type}_trusted"
+                ));
+
+                // give it another try, now that the resource is registered properly
+                return self::load($smarty, $type);
+            }
+        }
+
+        // try streams
+        $_known_stream = stream_get_wrappers();
+        if (in_array($type, $_known_stream)) {
+            // is known stream
+            if (is_object($smarty->security_policy)) {
+                $smarty->security_policy->isTrustedStream($type);
+            }
+            if (!isset(self::$resources['stream'])) {
+                self::$resources['stream'] = new Smarty_Internal_Resource_Stream();
+            }
+            return $smarty->_resource_handlers[$type] = self::$resources['stream'];
+        }
+
+        // TODO: try default_(template|config)_handler
+
+        // give up
+        throw new SmartyException("Unkown resource type '{$type}'");
+    }
+
+    /**
+     * extract resource_type and resource_name from template_resource and config_resource
+     *
+     * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
+     * @param string  $resource_name    template_resource or config_resource to parse
+     * @param string  $default_resource the default resource_type defined in $smarty
+     * @param string &$name             the parsed resource name
+     * @param string &$type             the parsed resource type
+     * @return void
+     */
+    protected static function parseResourceName($resource_name, $default_resource, &$name, &$type)
+    {
+        $parts = explode(':', $resource_name, 2);
+        if (!isset($parts[1]) || !isset($parts[0][1])) {
+            // no resource given, use default
+            // or single character before the colon is not a resource type, but part of the filepath
+            $type = $default_resource;
+            $name = $resource_name;
+        } else {
+            $type = $parts[0];
+            $name = $parts[1];
+        }
+    }
+
+
+    /**
+     * modify resource_name according to resource handlers specifications
+     *
+     * @param Smarty $smarty        Smarty instance
+     * @param string $resource_name resource_name to make unique
+     * @return string unique resource name
+     */
+
+    /**
+     * modify template_resource according to resource handlers specifications
+     *
+     * @param string $smarty            Smarty instance
+     * @param string $template_resource template_resource to extracate resource handler and name of
+     * @return string unique resource name
+     */
+    public static function getUniqueTemplateName($smarty, $template_resource)
+    {
+        self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
+        // TODO: optimize for Smarty's internal resource types
+        $resource = Smarty_Resource::load($smarty, $type);
+        return $resource->buildUniqueResourceName($smarty, $name);
+    }
+
+    /**
+     * initialize Source Object for given resource
+     *
+     * Either [$_template] or [$smarty, $template_resource] must be specified
+     *
+     * @param Smarty_Internal_Template $_template         template object
+     * @param Smarty                   $smarty            smarty object
+     * @param string                   $template_resource resource identifier
+     * @return Smarty_Template_Source Source Object
+     */
+    public static function source(Smarty_Internal_Template $_template=null, Smarty $smarty=null, $template_resource=null)
+    {
+        if ($_template) {
+            $smarty = $_template->smarty;
+            $template_resource = $_template->template_resource;
+        }
+
+        // parse resource_name, load resource handler, identify unique resource name
+        self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
+        $resource = Smarty_Resource::load($smarty, $type);
+        $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name);
+
+        // check runtime cache
+        $_cache_key = 'template|' . $unique_resource_name;
+        if ($smarty->compile_id) {
+            $_cache_key .= '|'.$smarty->compile_id;
+        }
+        if (isset(self::$sources[$_cache_key])) {
+            return self::$sources[$_cache_key];
+        }
+
+        // create source
+        $source = new Smarty_Template_Source($resource, $smarty, $template_resource, $type, $name, $unique_resource_name);
+        $resource->populate($source, $_template);
+
+        // runtime cache
+        self::$sources[$_cache_key] = $source;
+        return $source;
+    }
+
+    /**
+     * initialize Config Source Object for given resource
+     *
+     * @param Smarty_Internal_Config $_config config object
+     * @return Smarty_Config_Source Source Object
+     */
+    public static function config(Smarty_Internal_Config $_config)
+    {
+        static $_incompatible_resources = array('eval' => true, 'string' => true, 'extends' => true, 'php' => true);
+        $config_resource = $_config->config_resource;
+        $smarty = $_config->smarty;
+
+        // parse resource_name
+        self::parseResourceName($config_resource, $smarty->default_config_type, $name, $type);
+
+        // make sure configs are not loaded via anything smarty can't handle
+        if (isset($_incompatible_resources[$type])) {
+            throw new SmartyException ("Unable to use resource '{$type}' for config");
+        }
+
+        // load resource handler, identify unique resource name
+        $resource = Smarty_Resource::load($smarty, $type);
+        $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name);
+
+        // check runtime cache
+        $_cache_key = 'config|' . $unique_resource_name;
+        if (isset(self::$sources[$_cache_key])) {
+            return self::$sources[$_cache_key];
+        }
+
+        // create source
+        $source = new Smarty_Config_Source($resource, $smarty, $config_resource, $type, $name, $unique_resource_name);
+        $resource->populate($source, null);
+
+        // runtime cache
+        self::$sources[$_cache_key] = $source;
+        return $source;
+    }
+
+}
+
+/**
+ * Smarty Resource Data Object
+ *
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ *
+ * @property integer $timestamp Source Timestamp
+ * @property boolean $exists    Source Existance
+ * @property boolean $template  Extended Template reference
+ * @property string  $content   Source Content
+ */
+class Smarty_Template_Source {
+
+    /**
+     * Name of the Class to compile this resource's contents with
+     * @var string
+     */
+    public $compiler_class = null;
+
+    /**
+     * Name of the Class to tokenize this resource's contents with
+     * @var string
+     */
+    public $template_lexer_class = null;
+
+    /**
+     * Name of the Class to parse this resource's contents with
+     * @var string
+     */
+    public $template_parser_class = null;
+
+    /**
+     * Unique Template ID
+     * @var string
+     */
+    public $uid = null;
+
+    /**
+     * Template Resource (Smarty_Internal_Template::$template_resource)
+     * @var string
+     */
+    public $resource = null;
+
+    /**
+     * Resource Type
+     * @var string
+     */
+    public $type = null;
+
+    /**
+     * Resource Name
+     * @var string
+     */
+    public $name = null;
+
+    /**
+     * Unique Resource Name
+     * @var string
+     */
+    public $unique_resource = null;
+
+    /**
+     * Source Filepath
+     * @var string
+     */
+    public $filepath = null;
+
+    /**
+     * Source is bypassing compiler
+     * @var boolean
+     */
+    public $uncompiled = null;
+
+    /**
+     * Source must be recompiled on every occasion
+     * @var boolean
+     */
+    public $recompiled = null;
+
+    /**
+     * The Components an extended template is made of
+     * @var array
+     */
+    public $components = null;
+
+    /**
+     * Resource Handler
+     * @var Smarty_Resource
+     */
+    public $handler = null;
+
+    /**
+     * Smarty instance
+     * @var Smarty
+     */
+    public $smarty = null;
+
+    /**
+     * create Source Object container
+     *
+     * @param Smarty_Resource $handler          Resource Handler this source object communicates with
+     * @param Smarty          $smarty           Smarty instance this source object belongs to
+     * @param string          $resource         full template_resource
+     * @param string          $type             type of resource
+     * @param string          $name             resource name
+     * @param string          $unique_resource  unqiue resource name
+     */
+    public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name, $unique_resource)
+    {
+        $this->handler = $handler; // Note: prone to circular references
+
+        $this->compiler_class = $handler->compiler_class;
+        $this->template_lexer_class = $handler->template_lexer_class;
+        $this->template_parser_class = $handler->template_parser_class;
+        $this->uncompiled = $this->handler instanceof Smarty_Resource_Uncompiled;
+        $this->recompiled = $this->handler instanceof Smarty_Resource_Recompiled;
+
+        $this->smarty = $smarty;
+        $this->resource = $resource;
+        $this->type = $type;
+        $this->name = $name;
+        $this->unique_resource = $unique_resource;
+    }
+
+    /**
+     * get a Compiled Object of this source
+     *
+     * @param Smarty_Internal_Template $_template template objet
+     * @return Smarty_Template_Compiled compiled object
+     */
+    public function getCompiled(Smarty_Internal_Template $_template)
+    {
+        // check runtime cache
+        $_cache_key = $this->unique_resource . '#' . $_template->compile_id;
+        if (isset(Smarty_Resource::$compileds[$_cache_key])) {
+            return Smarty_Resource::$compileds[$_cache_key];
+        }
+
+        $compiled = new Smarty_Template_Compiled($this);
+        $this->handler->populateCompiledFilepath($compiled, $_template);
+        $compiled->timestamp = @filemtime($compiled->filepath);
+        $compiled->exists = !!$compiled->timestamp;
+
+        // runtime cache
+        Smarty_Resource::$compileds[$_cache_key] = $compiled;
+
+        return $compiled;
+    }
+
+    /**
+     * render the uncompiled source
+     *
+     * @param Smarty_Internal_Template $_template template object
+     */
+    public function renderUncompiled(Smarty_Internal_Template $_template)
+    {
+        return $this->handler->renderUncompiled($this, $_template);
+    }
+
+    /**
+     * <<magic>> Generic Setter.
+     *
+     * @param string $property_name valid: timestamp, exists, content, template
+     * @param mixed  $value        new value (is not checked)
+     * @throws SmartyException if $property_name is not valid
+     */
+    public function __set($property_name, $value)
+    {
+        switch ($property_name) {
+            // regular attributes
+            case 'timestamp':
+            case 'exists':
+            case 'content':
+            // required for extends: only
+            case 'template':
+                $this->$property_name = $value;
+                break;
+
+            default:
+                throw new SmartyException("invalid source property '$property_name'.");
+        }
+    }
+
+    /**
+     * <<magic>> Generic getter.
+     *
+     * @param string $property_name valid: timestamp, exists, content
+     * @return mixed
+     * @throws SmartyException if $property_name is not valid
+     */
+    public function __get($property_name)
+    {
+        switch ($property_name) {
+            case 'timestamp':
+            case 'exists':
+                $this->handler->populateTimestamp($this);
+                return $this->$property_name;
+
+            case 'content':
+                return $this->content = $this->handler->getContent($this);
+
+            default:
+                throw new SmartyException("source property '$property_name' does not exist.");
+        }
+    }
+
+}
+
+/**
+ * Smarty Resource Data Object
+ *
+ * Meta Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ *
+ * @property string $content compiled content
+ */
+class Smarty_Template_Compiled {
+
+    /**
+     * Compiled Filepath
+     * @var string
+     */
+    public $filepath = null;
+
+    /**
+     * Compiled Timestamp
+     * @var integer
+     */
+    public $timestamp = null;
+
+    /**
+     * Compiled Existance
+     * @var boolean
+     */
+    public $exists = false;
+
+    /**
+     * Compiled Content Loaded
+     * @var boolean
+     */
+    public $loaded = false;
+
+    /**
+     * Template was compiled
+     * @var boolean
+     */
+    public $isCompiled = false;
+
+    /**
+     * Source Object
+     * @var Smarty_Template_Source
+     */
+    public $source = null;
+
+    /**
+     * Metadata properties
+     *
+     * populated by Smarty_Internal_Template::decodeProperties()
+     * @var array
+     */
+    public $_properties = null;
+
+    /**
+     * create Compiled Object container
+     *
+     * @param Smarty_Template_Source $source source object this compiled object belongs to
+     */
+    public function __construct(Smarty_Template_Source $source)
+    {
+        $this->source = $source;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_custom.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_custom.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_custom.php	(revision 25596)
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ *
+ * Wrapper Implementation for custom resource plugins
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Custom extends Smarty_Resource {
+
+    /**
+     * fetch template and its modification time from data source
+     *
+     * @param string  $name    template name
+     * @param string  &$source template source
+     * @param integer &$mtime  template modification timestamp (epoch)
+     */
+    protected abstract function fetch($name, &$source, &$mtime);
+
+    /**
+     * Fetch template's modification timestamp from data source
+     *
+     * {@internal implementing this method is optional.
+     *  Only implement it if modification times can be accessed faster than loading the complete template source.}}
+     *
+     * @param string $name template name
+     * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+     */
+    protected function fetchTimestamp($name)
+    {
+        return null;
+    }
+
+    /**
+     * populate Source Object with meta data from Resource
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     */
+    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+    {
+        $source->filepath = strtolower($source->type . ':' . $source->name);
+        $source->uid = sha1($source->type . ':' . $source->name);
+
+        $mtime = $this->fetchTimestamp($source->name);
+        if ($mtime !== null) {
+            $source->timestamp = $mtime;
+        } else {
+            $this->fetch($source->name, $content, $timestamp);
+            $source->timestamp = isset($timestamp) ? $timestamp : false;
+            if( isset($content) )
+                $source->content = $content;
+        }
+        $source->exists = !!$source->timestamp;
+    }
+
+    /**
+     * Load template's source into current template object
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string template source
+     * @throws SmartyException if source cannot be loaded
+     */
+    public function getContent(Smarty_Template_Source $source)
+    {
+        $this->fetch($source->name, $content, $timestamp);
+        if (isset($content)) {
+            return $content;
+        }
+
+        throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+    }
+
+    /**
+     * Determine basename for compiled filename
+     *
+     * @param Smarty_Template_Source $source source object
+     * @return string resource's basename
+     */
+    protected function getBasename(Smarty_Template_Source $source)
+    {
+        return basename($source->name);
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_recompiled.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_recompiled.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_recompiled.php	(revision 25596)
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ *
+ * Base implementation for resource plugins that don't compile cache
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Recompiled extends Smarty_Resource {
+
+    /**
+     * populate Compiled Object with compiled filepath
+     *
+     * @param Smarty_Template_Compiled $compiled compiled object
+     * @param Smarty_Internal_Template $_template template object
+     * @return void
+     */
+    public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+    {
+        $compiled->filepath = false;
+        $compiled->timestamp = false;
+        $compiled->exists = false;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_uncompiled.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_uncompiled.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_resource_uncompiled.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Smarty Resource Plugin
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Resource Plugin
+ *
+ * Base implementation for resource plugins that don't use the compiler
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+abstract class Smarty_Resource_Uncompiled extends Smarty_Resource {
+
+    /**
+     * Render and output the template (without using the compiler)
+     *
+     * @param Smarty_Template_Source   $source    source object
+     * @param Smarty_Internal_Template $_template template object
+     * @throws SmartyException on failure
+     */
+    public abstract function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template);
+
+    /**
+     * populate compiled object with compiled filepath
+     *
+     * @param Smarty_Template_Compiled $compiled  compiled object
+     * @param Smarty_Internal_Template $_template template object (is ignored)
+     */
+    public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+    {
+        $compiled->filepath = false;
+        $compiled->timestamp = false;
+        $compiled->exists = false;
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_security.php
===================================================================
--- /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_security.php	(revision 25596)
+++ /tags/2.6.0RC1/include/smarty/libs/sysplugins/smarty_security.php	(revision 25596)
@@ -0,0 +1,459 @@
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage Security
+ * @author Uwe Tews
+ */
+ 
+/*
+ * FIXME: Smarty_Security API
+ *      - getter and setter instead of public properties would allow cultivating an internal cache properly
+ *      - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir are immutable
+ *        the cache is killed every time either of the variables change. That means that two distinct Smarty objects with differing
+ *        $template_dir or $config_dir should NOT share the same Smarty_Security instance, 
+ *        as this would lead to (severe) performance penalty! how should this be handled? 
+ */
+
+/**
+ * This class does contain the security settings
+ */
+class Smarty_Security {
+
+    /**
+     * This determines how Smarty handles "<?php ... ?>" tags in templates.
+     * possible values:
+     * <ul>
+     *   <li>Smarty::PHP_PASSTHRU -> echo PHP tags as they are</li>
+     *   <li>Smarty::PHP_QUOTE    -> escape tags as entities</li>
+     *   <li>Smarty::PHP_REMOVE   -> remove php tags</li>
+     *   <li>Smarty::PHP_ALLOW    -> execute php tags</li>
+     * </ul>
+     *
+     * @var integer
+     */
+    public $php_handling = Smarty::PHP_PASSTHRU;
+    /**
+     * This is the list of template directories that are considered secure.
+     * $template_dir is in this list implicitly.
+     *
+     * @var array
+     */
+    public $secure_dir = array();
+    /**
+     * This is an array of directories where trusted php scripts reside.
+     * {@link $security} is disabled during their inclusion/execution.
+     *
+     * @var array
+     */
+    public $trusted_dir = array();
+    /**
+     * List of regular expressions (PCRE) that include trusted URIs
+     *
+     * @var array
+     */
+    public $trusted_uri = array();
+    /**
+     * This is an array of trusted static classes.
+     *
+     * If empty access to all static classes is allowed.
+     * If set to 'none' none is allowed.
+     * @var array
+     */
+    public $static_classes = array();
+    /**
+     * This is an array of trusted PHP functions.
+     *
+     * If empty all functions are allowed.
+     * To disable all PHP functions set $php_functions = null.
+     * @var array
+     */
+    public $php_functions = array(
+        'isset', 'empty',
+        'count', 'sizeof',
+        'in_array', 'is_array',
+        'time',
+        'nl2br',
+    );
+    /**
+     * This is an array of trusted PHP modifers.
+     *
+     * If empty all modifiers are allowed.
+     * To disable all modifier set $modifiers = null.
+     * @var array
+     */
+    public $php_modifiers = array(
+        'escape',
+        'count'
+    );
+    /**
+     * This is an array of allowed tags.
+     *
+     * If empty no restriction by allowed_tags.
+     * @var array
+     */
+    public $allowed_tags = array();
+    /**
+     * This is an array of disabled tags.
+     *
+     * If empty no restriction by disabled_tags.
+     * @var array
+     */
+    public $disabled_tags = array();
+    /**
+     * This is an array of allowed modifier plugins.
+     *
+     * If empty no restriction by allowed_modifiers.
+     * @var array
+     */
+    public $allowed_modifiers = array();
+    /**
+     * This is an array of disabled modifier plugins.
+     *
+     * If empty no restriction by disabled_modifiers.
+     * @var array
+     */
+    public $disabled_modifiers = array();
+    /**
+     * This is an array of trusted streams.
+     *
+     * If empty all streams are allowed.
+     * To disable all streams set $streams = null.
+     * @var array
+     */
+    public $streams = array('file');
+    /**
+     * + flag if constants can be accessed from template
+     * @var boolean
+     */
+    public $allow_constants = true;
+    /**
+     * + flag if super globals can be accessed from template
+     * @var boolean
+     */
+    public $allow_super_globals = true;
+
+    /**
+     * Cache for $resource_dir lookups
+     * @var array
+     */
+    protected $_resource_dir = null;
+    /**
+     * Cache for $template_dir lookups
+     * @var array
+     */
+    protected $_template_dir = null;
+    /**
+     * Cache for $config_dir lookups
+     * @var array
+     */
+    protected $_config_dir = null;
+    /**
+     * Cache for $secure_dir lookups
+     * @var array
+     */
+    protected $_secure_dir = null;
+    /**
+     * Cache for $php_resource_dir lookups
+     * @var array
+     */
+    protected $_php_resource_dir = null;
+    /**
+     * Cache for $trusted_dir lookups
+     * @var array
+     */
+    protected $_trusted_dir = null;
+    
+    
+    /**
+     * @param Smarty $smarty
+     */
+    public function __construct($smarty)
+    {
+        $this->smarty = $smarty;
+    }
+    
+    /**
+     * Check if PHP function is trusted.
+     *
+     * @param string $function_name
+     * @param object $compiler compiler object
+     * @return boolean true if function is trusted
+     * @throws SmartyCompilerException if php function is not trusted
+     */
+    public function isTrustedPhpFunction($function_name, $compiler)
+    {
+        if (isset($this->php_functions) && (empty($this->php_functions) || in_array($function_name, $this->php_functions))) {
+            return true;
+        }
+
+        $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
+        return false; // should not, but who knows what happens to the compiler in the future?
+    }
+
+    /**
+     * Check if static class is trusted.
+     *
+     * @param string $class_name
+     * @param object $compiler compiler object
+     * @return boolean true if class is trusted
+     * @throws SmartyCompilerException if static class is not trusted
+     */
+    public function isTrustedStaticClass($class_name, $compiler)
+    {
+        if (isset($this->static_classes) && (empty($this->static_classes) || in_array($class_name, $this->static_classes))) {
+            return true;
+        }
+
+        $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+        return false; // should not, but who knows what happens to the compiler in the future?
+    }
+
+    /**
+     * Check if PHP modifier is trusted.
+     *
+     * @param string $modifier_name
+     * @param object $compiler compiler object
+     * @return boolean true if modifier is trusted
+     * @throws SmartyCompilerException if modifier is not trusted
+     */
+    public function isTrustedPhpModifier($modifier_name, $compiler)
+    {
+        if (isset($this->php_modifiers) && (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers))) {
+            return true;
+        }
+
+        $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
+        return false; // should not, but who knows what happens to the compiler in the future?
+    }
+
+    /**
+     * Check if tag is trusted.
+     *
+     * @param string $tag_name
+     * @param object $compiler compiler object
+     * @return boolean true if tag is trusted
+     * @throws SmartyCompilerException if modifier is not trusted
+     */
+    public function isTrustedTag($tag_name, $compiler)
+    {
+        // check for internal always required tags
+        if (in_array($tag_name, array('assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin', 'private_object_block_function',
+                    'private_object_function', 'private_registered_function', 'private_registered_block', 'private_special_variable', 'private_print_expression', 'private_modifier'))) {
+            return true;
+        }
+        // check security settings
+        if (empty($this->allowed_tags)) {
+            if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
+                return true;
+            } else {
+                $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", $compiler->lex->taglineno);
+            }
+        } else if (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+            return true;
+        } else {
+            $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", $compiler->lex->taglineno);
+        }
+        return false; // should not, but who knows what happens to the compiler in the future?
+    }
+
+    /**
+     * Check if modifier plugin is trusted.
+     *
+     * @param string $modifier_name
+     * @param object $compiler compiler object
+     * @return boolean true if tag is trusted
+     * @throws SmartyCompilerException if modifier is not trusted
+     */
+    public function isTrustedModifier($modifier_name, $compiler)
+    {
+        // check for internal always allowed modifier
+        if (in_array($modifier_name, array('default'))) {
+            return true;
+        }
+        // check security settings
+        if (empty($this->allowed_modifiers)) {
+            if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
+                return true;
+            } else {
+                $compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", $compiler->lex->taglineno);
+            }
+        } else if (in_array($modifier_name, $this->allowed_modifiers) && !in_array($modifier_name, $this->disabled_modifiers)) {
+            return true;
+        } else {
+            $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", $compiler->lex->taglineno);
+        }
+        return false; // should not, but who knows what happens to the compiler in the future?
+    }
+
+    /**
+     * Check if stream is trusted.
+     *
+     * @param string $stream_name
+     * @return boolean true if stream is trusted
+     * @throws SmartyException if stream is not trusted
+     */
+    public function isTrustedStream($stream_name)
+    {
+        if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
+            return true;
+        }
+
+        throw new SmartyException("stream '{$stream_name}' not allowed by security setting");
+    }
+
+    /**
+     * Check if directory of file resource is trusted.
+     *
+     * @param string $filepath
+     * @return boolean true if directory is trusted
+     * @throws SmartyException if directory is not trusted
+     */
+    public function isTrustedResourceDir($filepath)
+    {
+        $_template = false;
+        $_config = false;
+        $_secure = false;
+
+        $_template_dir = $this->smarty->getTemplateDir();
+        $_config_dir = $this->smarty->getConfigDir();
+
+        // check if index is outdated
+        if ((!$this->_template_dir || $this->_template_dir !== $_template_dir)
+                || (!$this->_config_dir || $this->_config_dir !== $_config_dir)
+                || (!empty($this->secure_dir) && (!$this->_secure_dir || $this->_secure_dir !== $this->secure_dir))
+        ) {
+            $this->_resource_dir = array();
+            $_template = true;
+            $_config = true;
+            $_secure = !empty($this->secure_dir);
+        }
+
+        // rebuild template dir index
+        if ($_template) {
+            $this->_template_dir = $_template_dir;
+            foreach ($_template_dir as $directory) {
+                $directory = realpath($directory);
+                $this->_resource_dir[$directory] = true;
+            }
+        }
+
+        // rebuild config dir index
+        if ($_config) {
+            $this->_config_dir = $_config_dir;
+            foreach ($_config_dir as $directory) {
+                $directory = realpath($directory);
+                $this->_resource_dir[$directory] = true;
+            }
+        }
+
+        // rebuild secure dir index
+        if ($_secure) {
+            $this->_secure_dir = $this->secure_dir;
+            foreach ((array) $this->secure_dir as $directory) {
+                $directory = realpath($directory);
+                $this->_resource_dir[$directory] = true;
+            }
+        }
+
+        $_filepath = realpath($filepath);
+        $directory = dirname($_filepath);
+        $_directory = array();
+        while (true) {
+            // remember the directory to add it to _resource_dir in case we're successful
+            $_directory[$directory] = true;
+            // test if the directory is trusted
+            if (isset($this->_resource_dir[$directory])) {
+                // merge sub directories of current $directory into _resource_dir to speed up subsequent lookups
+                $this->_resource_dir = array_merge($this->_resource_dir, $_directory);
+                return true;
+            }
+            // abort if we've reached root
+            if (($pos = strrpos($directory, DS)) === false || !isset($directory[1])) {
+                break;
+            }
+            // bubble up one level
+            $directory = substr($directory, 0, $pos);
+        }
+
+        // give up
+        throw new SmartyException("directory '{$_filepath}' not allowed by security setting");
+    }
+    
+    /**
+     * Check if URI (e.g. {fetch} or {html_image}) is trusted
+     *
+     * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
+     * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
+     * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
+     * @param string $uri 
+     * @return boolean true if URI is trusted
+     * @throws SmartyException if URI is not trusted
+     * @uses $trusted_uri for list of patterns to match against $uri
+     */
+    public function isTrustedUri($uri)
+    {
+        $_uri = parse_url($uri);
+        if (!empty($_uri['scheme']) && !empty($_uri['host'])) {
+            $_uri = $_uri['scheme'] . '://' . $_uri['host'];
+            foreach ($this->trusted_uri as $pattern) {
+                if (preg_match($pattern, $_uri)) {
+                    return true;
+                }
+            }
+        }
+        
+        throw new SmartyException("URI '{$uri}' not allowed by security setting");
+    }
+    
+    /**
+     * Check if directory of file resource is trusted.
+     *
+     * @param string $filepath
+     * @return boolean true if directory is trusted
+     * @throws SmartyException if PHP directory is not trusted
+     */
+    public function isTrustedPHPDir($filepath)
+    {
+        if (empty($this->trusted_dir)) {
+            throw new SmartyException("directory '{$filepath}' not allowed by security setting (no trusted_dir specified)");
+        }
+
+        // check if index is outdated
+        if (!$this->_trusted_dir || $this->_trusted_dir !== $this->trusted_dir) {
+            $this->_php_resource_dir = array();
+
+            $this->_trusted_dir = $this->trusted_dir;
+            foreach ((array) $this->trusted_dir as $directory) {
+                $directory = realpath($directory);
+                $this->_php_resource_dir[$directory] = true;
+            }
+        }
+
+        $_filepath = realpath($filepath);
+        $directory = dirname($_filepath);
+        $_directory = array();
+        while (true) {
+            // remember the directory to add it to _resource_dir in case we're successful
+            $_directory[] = $directory;
+            // test if the directory is trusted
+            if (isset($this->_php_resource_dir[$directory])) {
+                // merge sub directories of current $directory into _resource_dir to speed up subsequent lookups
+                $this->_php_resource_dir = array_merge($this->_php_resource_dir, $_directory);
+                return true;
+            }
+            // abort if we've reached root
+            if (($pos = strrpos($directory, DS)) === false || !isset($directory[2])) {
+                break;
+            }
+            // bubble up one level
+            $directory = substr($directory, 0, $pos);
+        }
+
+        throw new SmartyException("directory '{$_filepath}' not allowed by security setting");
+    }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/template.class.php
===================================================================
--- /tags/2.6.0RC1/include/template.class.php	(revision 25596)
+++ /tags/2.6.0RC1/include/template.class.php	(revision 25596)
@@ -0,0 +1,1574 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('BUTTONS_RANK_NEUTRAL', 50);
+
+class Template {
+
+  var $smarty;
+
+  var $output = '';
+
+  // Hash of filenames for each template handle.
+  var $files = array();
+
+  // Template extents filenames for each template handle.
+  var $extents = array();
+
+  // Templates prefilter from external sources (plugins)
+  var $external_filters = array();
+
+  // used by html_head smarty block to add content before </head>
+  var $html_head_elements = array();
+  private $html_style = '';
+
+  const COMBINED_SCRIPTS_TAG = '<!-- COMBINED_SCRIPTS -->';
+  var $scriptLoader;
+
+  const COMBINED_CSS_TAG = '<!-- COMBINED_CSS -->';
+  var $cssLoader;
+
+  var $picture_buttons = array();
+  var $index_buttons = array();
+
+  function Template($root = ".", $theme= "", $path = "template")
+  {
+    global $conf, $lang_info;
+
+    SmartyException::$escape = false;
+
+    $this->scriptLoader = new ScriptLoader;
+    $this->cssLoader = new CssLoader;
+    $this->smarty = new SmartyBC;
+    $this->smarty->debugging = $conf['debug_template'];
+    if (!$this->smarty->debugging)
+      $this->smarty->error_reporting = error_reporting() & ~E_NOTICE;
+    $this->smarty->compile_check = $conf['template_compile_check'];
+    $this->smarty->force_compile = $conf['template_force_compile'];
+
+    if (!isset($conf['data_dir_checked']))
+    {
+      $dir = PHPWG_ROOT_PATH.$conf['data_location'];
+      mkgetdir($dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
+      if (!is_writable($dir))
+      {
+        load_language('admin.lang');
+        fatal_error(
+          l10n(
+            'Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation',
+            $conf['data_location']
+            ),
+          l10n('an error happened'),
+          false // show trace
+          );
+      }
+      if (function_exists('pwg_query')) {
+        conf_update_param('data_dir_checked', 1);
+      }
+    }
+
+    $compile_dir = PHPWG_ROOT_PATH.$conf['data_location'].'templates_c';
+    mkgetdir( $compile_dir );
+
+    $this->smarty->setCompileDir($compile_dir);
+
+    $this->smarty->assign( 'pwg', new PwgTemplateAdapter() );
+    $this->smarty->registerPlugin('modifiercompiler', 'translate', array('Template', 'modcompiler_translate') );
+    $this->smarty->registerPlugin('modifiercompiler', 'translate_dec', array('Template', 'modcompiler_translate_dec') );
+    $this->smarty->registerPlugin('modifier', 'explode', array('Template', 'mod_explode') );
+    $this->smarty->registerPlugin('modifier', 'get_extent', array($this, 'get_extent') );
+    $this->smarty->registerPlugin('block', 'html_head', array($this, 'block_html_head') );
+    $this->smarty->registerPlugin('block', 'html_style', array($this, 'block_html_style') );
+    $this->smarty->registerPlugin('function', 'combine_script', array($this, 'func_combine_script') );
+    $this->smarty->registerPlugin('function', 'get_combined_scripts', array($this, 'func_get_combined_scripts') );
+    $this->smarty->registerPlugin('function', 'combine_css', array($this, 'func_combine_css') );
+    $this->smarty->registerPlugin('function', 'define_derivative', array($this, 'func_define_derivative') );
+    $this->smarty->registerPlugin('compiler', 'get_combined_css', array($this, 'func_get_combined_css') );
+    $this->smarty->registerPlugin('block', 'footer_script', array($this, 'block_footer_script') );
+    $this->smarty->registerFilter('pre', array('Template', 'prefilter_white_space') );
+    if ( $conf['compiled_template_cache_language'] )
+    {
+      $this->smarty->registerFilter('post', array('Template', 'postfilter_language') );
+    }
+
+    $this->smarty->setTemplateDir(array());
+    if ( !empty($theme) )
+    {
+      $this->set_theme($root, $theme, $path);
+      if (!defined('IN_ADMIN'))
+      {
+        $this->set_prefilter( 'header', array('Template', 'prefilter_local_css') );
+      }
+    }
+    else
+      $this->set_template_dir($root);
+
+    $this->smarty->assign('lang_info', $lang_info);
+
+    if (!defined('IN_ADMIN') and isset($conf['extents_for_templates']))
+    {
+      $tpl_extents = unserialize($conf['extents_for_templates']);
+      $this->set_extents($tpl_extents, './template-extension/', true, $theme);
+    }
+  }
+
+  /**
+   * Load theme's parameters.
+   */
+  function set_theme($root, $theme, $path, $load_css=true, $load_local_head=true)
+  {
+    $this->set_template_dir($root.'/'.$theme.'/'.$path);
+
+    $themeconf = $this->load_themeconf($root.'/'.$theme);
+
+    if (isset($themeconf['parent']) and $themeconf['parent'] != $theme)
+    {
+      $this->set_theme(
+        $root,
+        $themeconf['parent'],
+        $path,
+        isset($themeconf['load_parent_css']) ? $themeconf['load_parent_css'] : $load_css,
+        isset($themeconf['load_parent_local_head']) ? $themeconf['load_parent_local_head'] : $load_local_head
+      );
+    }
+
+    $tpl_var = array(
+      'id' => $theme,
+      'load_css' => $load_css,
+    );
+    if (!empty($themeconf['local_head']) and $load_local_head)
+    {
+      $tpl_var['local_head'] = realpath($root.'/'.$theme.'/'.$themeconf['local_head'] );
+    }
+    $themeconf['id'] = $theme;
+    $this->smarty->append('themes', $tpl_var);
+    $this->smarty->append('themeconf', $themeconf, true);
+  }
+
+  /**
+   * Add template directory for this Template object.
+   * Set compile id if not exists.
+   */
+  function set_template_dir($dir)
+  {
+    $this->smarty->addTemplateDir($dir);
+
+    if (!isset($this->smarty->compile_id))
+    {
+      $compile_id = "1";
+      $compile_id .= ($real_dir = realpath($dir))===false ? $dir : $real_dir;
+      $this->smarty->compile_id = base_convert(crc32($compile_id), 10, 36 );
+    }
+  }
+
+  /**
+   * Gets the template root directory for this Template object.
+   */
+  function get_template_dir()
+  {
+    return $this->smarty->getTemplateDir();
+  }
+
+  /**
+   * Deletes all compiled templates.
+   */
+  function delete_compiled_templates()
+  {
+      $save_compile_id = $this->smarty->compile_id;
+      $this->smarty->compile_id = null;
+      $this->smarty->clearCompiledTemplate();
+      $this->smarty->compile_id = $save_compile_id;
+      file_put_contents($this->smarty->getCompileDir().'/index.htm', 'Not allowed!');
+  }
+
+  function get_themeconf($val)
+  {
+    $tc = $this->smarty->getTemplateVars('themeconf');
+    return isset($tc[$val]) ? $tc[$val] : '';
+  }
+
+  /**
+   * Sets the template filename for handle.
+   */
+  function set_filename($handle, $filename)
+  {
+    return $this->set_filenames( array($handle=>$filename) );
+  }
+
+  /**
+   * Sets the template filenames for handles. $filename_array should be a
+   * hash of handle => filename pairs.
+   */
+  function set_filenames($filename_array)
+  {
+    if (!is_array($filename_array))
+    {
+      return false;
+    }
+    reset($filename_array);
+    while(list($handle, $filename) = each($filename_array))
+    {
+      if (is_null($filename))
+      {
+        unset($this->files[$handle]);
+      }
+      else
+      {
+        $this->files[$handle] = $this->get_extent($filename, $handle);
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Sets template extention filename for handles.
+   */
+  function set_extent($filename, $param, $dir='', $overwrite=true, $theme='N/A')
+  {
+    return $this->set_extents(array($filename => $param), $dir, $overwrite);
+  }
+
+  /**
+   * Sets template extentions filenames for handles.
+   * $filename_array should be an hash of filename => array( handle, param) or filename => handle
+   */
+  function set_extents($filename_array, $dir='', $overwrite=true, $theme='N/A')
+  {
+    if (!is_array($filename_array))
+    {
+      return false;
+    }
+    foreach ($filename_array as $filename => $value)
+    {
+      if (is_array($value))
+      {
+        $handle = $value[0];
+        $param = $value[1];
+        $thm = $value[2];
+      }
+      elseif (is_string($value))
+      {
+        $handle = $value;
+        $param = 'N/A';
+        $thm = 'N/A';
+      }
+      else
+      {
+        return false;
+      }
+
+      if ((stripos(implode('',array_keys($_GET)), '/'.$param) !== false or $param == 'N/A')
+        and ($thm == $theme or $thm == 'N/A')
+        and (!isset($this->extents[$handle]) or $overwrite)
+        and file_exists($dir . $filename))
+      {
+        $this->extents[$handle] = realpath($dir . $filename);
+      }
+    }
+    return true;
+  }
+
+  /** return template extension if exists  */
+  function get_extent($filename='', $handle='')
+  {
+    if (isset($this->extents[$handle]))
+    {
+      $filename = $this->extents[$handle];
+    }
+    return $filename;
+  }
+
+  /** see smarty assign http://www.smarty.net/manual/en/api.assign.php */
+  function assign($tpl_var, $value = null)
+  {
+    $this->smarty->assign( $tpl_var, $value );
+  }
+
+  /**
+   * Inserts the uncompiled code for $handle as the value of $varname in the
+   * root-level. This can be used to effectively include a template in the
+   * middle of another template.
+   * This is equivalent to assign($varname, $this->parse($handle, true))
+   */
+  function assign_var_from_handle($varname, $handle)
+  {
+    $this->assign($varname, $this->parse($handle, true));
+    return true;
+  }
+
+  /** see smarty append http://www.smarty.net/manual/en/api.append.php */
+  function append($tpl_var, $value=null, $merge=false)
+  {
+    $this->smarty->append( $tpl_var, $value, $merge );
+  }
+
+  /**
+   * Root-level variable concatenation. Appends a  string to an existing
+   * variable assignment with the same name.
+   */
+  function concat($tpl_var, $value)
+  {
+    $this->assign($tpl_var,
+      $this->smarty->getTemplateVars($tpl_var) . $value);
+  }
+
+  /** see smarty append http://www.smarty.net/manual/en/api.clear_assign.php */
+  function clear_assign($tpl_var)
+  {
+    $this->smarty->clearAssign( $tpl_var );
+  }
+
+  /** see smarty get_template_vars http://www.smarty.net/manual/en/api.get_template_vars.php */
+  function get_template_vars($name=null)
+  {
+    return $this->smarty->getTemplateVars( $name );
+  }
+
+
+  /**
+   * Load the file for the handle, eventually compile the file and run the compiled
+   * code. This will add the output to the results or return the result if $return
+   * is true.
+   */
+  function parse($handle, $return=false)
+  {
+    if ( !isset($this->files[$handle]) )
+    {
+      fatal_error("Template->parse(): Couldn't load template file for handle $handle");
+    }
+
+    $this->smarty->assign( 'ROOT_URL', get_root_url() );
+
+    $save_compile_id = $this->smarty->compile_id;
+    $this->load_external_filters($handle);
+
+    global $conf, $lang_info;
+    if ( $conf['compiled_template_cache_language'] and isset($lang_info['code']) )
+    {
+      $this->smarty->compile_id .= '_'.$lang_info['code'];
+    }
+
+    $v = $this->smarty->fetch($this->files[$handle]);
+
+    $this->smarty->compile_id = $save_compile_id;
+    $this->unload_external_filters($handle);
+
+    if ($return)
+    {
+      return $v;
+    }
+    $this->output .= $v;
+  }
+
+  /**
+   * Load the file for the handle, eventually compile the file and run the compiled
+   * code. This will print out the results of executing the template.
+   */
+  function pparse($handle)
+  {
+    $this->parse($handle, false);
+    $this->flush();
+  }
+
+  function flush()
+  {
+    if (!$this->scriptLoader->did_head())
+    {
+      $pos = strpos( $this->output, self::COMBINED_SCRIPTS_TAG );
+      if ($pos !== false)
+      {
+          $scripts = $this->scriptLoader->get_head_scripts();
+          $content = array();
+          foreach ($scripts as $script)
+          {
+              $content[]=
+                  '<script type="text/javascript" src="'
+                  . self::make_script_src($script)
+                  .'"></script>';
+          }
+
+          $this->output = substr_replace( $this->output, implode( "\n", $content ), $pos, strlen(self::COMBINED_SCRIPTS_TAG) );
+      } //else maybe error or warning ?
+    }
+
+    $css = $this->cssLoader->get_css();
+
+    $content = array();
+    foreach( $css as $combi )
+    {
+      $href = embellish_url(get_root_url().$combi->path);
+      if ($combi->version !== false)
+        $href .= '?v' . ($combi->version ? $combi->version : PHPWG_VERSION);
+      // trigger the event for eventual use of a cdn
+      $href = trigger_event('combined_css', $href, $combi);
+      $content[] = '<link rel="stylesheet" type="text/css" href="'.$href.'">';
+    }
+    $this->output = str_replace(self::COMBINED_CSS_TAG,
+        implode( "\n", $content ),
+        $this->output );
+    $this->cssLoader->clear();
+
+    if ( count($this->html_head_elements) || strlen($this->html_style) )
+    {
+      $search = "\n</head>";
+      $pos = strpos( $this->output, $search );
+      if ($pos !== false)
+      {
+        $rep = "\n".implode( "\n", $this->html_head_elements );
+        if (strlen($this->html_style))
+        {
+          $rep.='<style type="text/css">'.$this->html_style.'</style>';
+        }
+        $this->output = substr_replace( $this->output, $rep, $pos, 0 );
+      } //else maybe error or warning ?
+      $this->html_head_elements = array();
+      $this->html_style = '';
+    }
+
+    echo $this->output;
+    $this->output='';
+  }
+
+  /** flushes the output */
+  function p()
+  {
+    $this->flush();
+
+    if ($this->smarty->debugging)
+    {
+      global $t2;
+      $this->smarty->assign(
+        array(
+        'AAAA_DEBUG_TOTAL_TIME__' => get_elapsed_time($t2, get_moment())
+        )
+        );
+      Smarty_Internal_Debug::display_debug($this->smarty);
+    }
+  }
+
+  static function get_php_str_val($str)
+  {
+    if (is_string($str) && strlen($str)>1)
+    {
+      if ( ($str[0]=='\'' && $str[strlen($str)-1]=='\'')
+        || ($str[0]=='"' && $str[strlen($str)-1]=='"'))
+      {
+        eval('$tmp='.$str.';');
+        return $tmp;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * translate variable modifier - translates a text to the currently loaded language
+   */
+  static function modcompiler_translate($params)
+  {
+    global $conf, $lang;
+
+    switch (count($params))
+    {
+    case 1:
+      if ($conf['compiled_template_cache_language']
+        && ($key=self::get_php_str_val($params[0])) !== null
+        && isset($lang[$key])
+      ) {
+        return var_export($lang[$key], true);
+      }
+      return 'l10n('.$params[0].')';
+
+    default:
+      if ($conf['compiled_template_cache_language'])
+      {
+        $ret = 'sprintf(';
+        $ret .= self::modcompiler_translate( array($params[0]) );
+        $ret .= ','. implode(',', array_slice($params, 1));
+        $ret .= ')';
+        return $ret;
+      }
+      return 'l10n('.$params[0].','.implode(',', array_slice($params, 1)).')';
+    }
+  }
+
+  static function modcompiler_translate_dec($params)
+  {
+    global $conf, $lang, $lang_info;
+    if ($conf['compiled_template_cache_language'])
+    {
+      $ret = 'sprintf(';
+      if ($lang_info['zero_plural'])
+      {
+        $ret .= '($tmp=('.$params[0].'))>1||$tmp==0';
+      }
+      else
+      {
+        $ret .= '($tmp=('.$params[0].'))>1';
+      }
+      $ret .= '?';
+      $ret .= self::modcompiler_translate( array($params[2]) );
+      $ret .= ':';
+      $ret .= self::modcompiler_translate( array($params[1]) );
+      $ret .= ',$tmp';
+      $ret .= ')';
+      return $ret;
+    }
+    return 'l10n_dec('.$params[1].','.$params[2].','.$params[0].')';
+  }
+
+  /**
+   * explode variable modifier - similar to php explode
+   * 'Yes;No'|@explode:';' -> array('Yes', 'No')
+   */
+  static function mod_explode($text, $delimiter=',')
+  {
+    return explode($delimiter, $text);
+  }
+
+  /**
+   * This smarty "html_head" block allows to add content just before
+   * </head> element in the output after the head has been parsed. This is
+   * handy in order to respect strict standards when <style> and <link>
+   * html elements must appear in the <head> element
+   */
+  function block_html_head($params, $content)
+  {
+    $content = trim($content);
+    if ( !empty($content) )
+    { // second call
+      $this->html_head_elements[] = $content;
+    }
+  }
+
+  function block_html_style($params, $content)
+  {
+    $content = trim($content);
+    if ( !empty($content) )
+    { // second call
+      $this->html_style .= "\n".$content;
+    }
+  }
+
+  function func_define_derivative($params, $smarty)
+  {
+    !empty($params['name']) or fatal_error('define_derivative missing name');
+    if (isset($params['type']))
+    {
+      $derivative = ImageStdParams::get_by_type($params['type']);
+      $smarty->assign( $params['name'], $derivative);
+      return;
+    }
+    !empty($params['width']) or fatal_error('define_derivative missing width');
+    !empty($params['height']) or fatal_error('define_derivative missing height');
+
+    $w = intval($params['width']);
+    $h = intval($params['height']);
+    $crop = 0;
+    $minw=null;
+    $minh=null;
+
+    if (isset($params['crop']))
+    {
+      if (is_bool($params['crop']))
+      {
+        $crop = $params['crop'] ? 1:0;
+      }
+      else
+      {
+        $crop = round($params['crop']/100, 2);
+      }
+
+      if ($crop)
+      {
+        $minw = empty($params['min_width']) ? $w : intval($params['min_width']);
+        $minw <= $w or fatal_error('define_derivative invalid min_width');
+        $minh = empty($params['min_height']) ? $h : intval($params['min_height']);
+        $minh <= $h or fatal_error('define_derivative invalid min_height');
+      }
+    }
+
+    $smarty->assign( $params['name'], ImageStdParams::get_custom($w, $h, $crop, $minw, $minh) );
+  }
+
+   /**
+    * combine_script smarty function allows inclusion of a javascript file in the current page.
+    * The engine will combine several js files into a single one in order to reduce the number of
+    * required http requests.
+    * param id - required
+    * param path - required - the path to js file RELATIVE to piwigo root dir
+    * param load - optional - header|footer|async, default header
+    * param require - optional - comma separated list of script ids required to be loaded and executed
+        before this one
+    * param version - optional - plugins could use this and change it in order to force a
+        browser refresh
+    */
+  function func_combine_script($params)
+  {
+    if (!isset($params['id']))
+    {
+      trigger_error("combine_script: missing 'id' parameter", E_USER_ERROR);
+    }
+    $load = 0;
+    if (isset($params['load']))
+    {
+      switch ($params['load'])
+      {
+        case 'header': break;
+        case 'footer': $load=1; break;
+        case 'async': $load=2; break;
+        default: trigger_error("combine_script: invalid 'load' parameter", E_USER_ERROR);
+      }
+    }
+
+    $this->scriptLoader->add( $params['id'], $load,
+      empty($params['require']) ? array() : explode( ',', $params['require'] ),
+      @$params['path'],
+      isset($params['version']) ? $params['version'] : 0 );
+  }
+
+
+  function func_get_combined_scripts($params)
+  {
+    if (!isset($params['load']))
+    {
+      trigger_error("get_combined_scripts: missing 'load' parameter", E_USER_ERROR);
+    }
+    $load = $params['load']=='header' ? 0 : 1;
+    $content = array();
+
+    if ($load==0)
+    {
+      return self::COMBINED_SCRIPTS_TAG;
+    }
+    else
+    {
+      $scripts = $this->scriptLoader->get_footer_scripts();
+      foreach ($scripts[0] as $script)
+      {
+        $content[]=
+          '<script type="text/javascript" src="'
+          . self::make_script_src($script)
+          .'"></script>';
+      }
+      if (count($this->scriptLoader->inline_scripts))
+      {
+        $content[]= '<script type="text/javascript">//<![CDATA[
+';
+        $content = array_merge($content, $this->scriptLoader->inline_scripts);
+        $content[]= '//]]></script>';
+      }
+
+      if (count($scripts[1]))
+      {
+        $content[]= '<script type="text/javascript">';
+        $content[]= '(function() {
+var s,after = document.getElementsByTagName(\'script\')[document.getElementsByTagName(\'script\').length-1];';
+        foreach ($scripts[1] as $id => $script)
+        {
+          $content[]=
+            's=document.createElement(\'script\'); s.type=\'text/javascript\'; s.async=true; s.src=\''
+            . self::make_script_src($script)
+            .'\';';
+          $content[]= 'after = after.parentNode.insertBefore(s, after);';
+        }
+        $content[]= '})();';
+        $content[]= '</script>';
+      }
+    }
+    return implode("\n", $content);
+  }
+
+
+  private static function make_script_src( $script )
+  {
+    $ret = '';
+    if ( $script->is_remote() )
+      $ret = $script->path;
+    else
+    {
+      $ret = get_root_url().$script->path;
+      if ($script->version!==false)
+      {
+        $ret.= '?v'. ($script->version ? $script->version : PHPWG_VERSION);
+      }
+    }
+    // trigger the event for eventual use of a cdn
+    $ret = trigger_event('combined_script', $ret, $script);
+    return embellish_url($ret);
+  }
+
+  function block_footer_script($params, $content)
+  {
+    $content = trim($content);
+    if ( !empty($content) )
+    { // second call
+
+      $this->scriptLoader->add_inline(
+        $content,
+        empty($params['require']) ? array() : explode(',', $params['require'])
+      );
+    }
+  }
+
+  /**
+    * combine_css smarty function allows inclusion of a css stylesheet file in the current page.
+    * The engine will combine several css files into a single one in order to reduce the number of
+    * required http requests.
+    * param path - required - the path to css file RELATIVE to piwigo root dir
+    * param version - optional - plugins could use this and change it in order to force a
+        browser refresh
+    */
+  function func_combine_css($params)
+  {
+    if (empty($params['path']))
+    {
+      fatal_error('combine_css missing path');
+    }
+
+    if (!isset($params['id']))
+    {
+      $params['id'] = md5($params['path']);
+    }
+
+    $this->cssLoader->add($params['id'], $params['path'], isset($params['version']) ? $params['version'] : 0, (int)@$params['order'], (bool)@$params['template']);
+  }
+
+  function func_get_combined_css($params)
+  {
+    return self::COMBINED_CSS_TAG;
+  }
+
+
+ /**
+   * This function allows to declare a Smarty prefilter from a plugin, thus allowing
+   * it to modify template source before compilation and without changing core files
+   * They will be processed by weight ascending.
+   * http://www.smarty.net/manual/en/advanced.features.prefilters.php
+   */
+  function set_prefilter($handle, $callback, $weight=50)
+  {
+    $this->external_filters[$handle][$weight][] = array('pre', $callback);
+    ksort($this->external_filters[$handle]);
+  }
+
+  function set_postfilter($handle, $callback, $weight=50)
+  {
+    $this->external_filters[$handle][$weight][] = array('post', $callback);
+    ksort($this->external_filters[$handle]);
+  }
+
+  function set_outputfilter($handle, $callback, $weight=50)
+  {
+    $this->external_filters[$handle][$weight][] = array('output', $callback);
+    ksort($this->external_filters[$handle]);
+  }
+
+ /**
+   * This function actually triggers the filters on the tpl files.
+   * Called in the parse method.
+   * http://www.smarty.net/manual/en/advanced.features.prefilters.php
+   */
+  function load_external_filters($handle)
+  {
+    if (isset($this->external_filters[$handle]))
+    {
+      $compile_id = '';
+      foreach ($this->external_filters[$handle] as $filters)
+      {
+        foreach ($filters as $filter)
+        {
+          list($type, $callback) = $filter;
+          $compile_id .= $type.( is_array($callback) ? implode('', $callback) : $callback );
+          $this->smarty->registerFilter($type, $callback);
+        }
+      }
+      $this->smarty->compile_id .= '.'.base_convert(crc32($compile_id), 10, 36);
+    }
+  }
+
+  function unload_external_filters($handle)
+  {
+    if (isset($this->external_filters[$handle]))
+    {
+      foreach ($this->external_filters[$handle] as $filters)
+      {
+        foreach ($filters as $filter)
+        {
+          list($type, $callback) = $filter;
+          $this->smarty->unregisterFilter($type, $callback);
+        }
+      }
+    }
+  }
+
+  static function prefilter_white_space($source, $smarty)
+  {
+    $ld = $smarty->left_delimiter;
+    $rd = $smarty->right_delimiter;
+    $ldq = preg_quote($ld, '#');
+    $rdq = preg_quote($rd, '#');
+
+    $regex = array();
+    $tags = array('if','foreach','section','footer_script');
+    foreach($tags as $tag)
+    {
+      $regex[] = "#^[ \t]+($ldq$tag"."[^$ld$rd]*$rdq)\s*$#m";
+      $regex[] = "#^[ \t]+($ldq/$tag$rdq)\s*$#m";
+    }
+    $tags = array('include','else','combine_script','html_head');
+    foreach($tags as $tag)
+    {
+      $regex[] = "#^[ \t]+($ldq$tag"."[^$ld$rd]*$rdq)\s*$#m";
+    }
+    $source = preg_replace( $regex, "$1", $source);
+    return $source;
+  }
+
+  /**
+   * Smarty postfilter
+   */
+  static function postfilter_language($source, $smarty)
+  {
+    // replaces echo PHP_STRING_LITERAL; with the string literal value
+    $source = preg_replace_callback(
+      '/\\<\\?php echo ((?:\'(?:(?:\\\\.)|[^\'])*\')|(?:"(?:(?:\\\\.)|[^"])*"));\\?\\>\\n/',
+      create_function('$matches', 'eval(\'$tmp=\'.$matches[1].\';\');return $tmp;'),
+      $source);
+    return $source;
+  }
+
+  static function prefilter_local_css($source, $smarty)
+  {
+    $css = array();
+    foreach ($smarty->getTemplateVars('themes') as $theme)
+    {
+      $f = PWG_LOCAL_DIR.'css/'.$theme['id'].'-rules.css';
+      if (file_exists(PHPWG_ROOT_PATH.$f))
+      {
+        $css[] = "{combine_css path='$f' order=10}";
+      }
+    }
+    $f = PWG_LOCAL_DIR.'css/rules.css';
+    if (file_exists(PHPWG_ROOT_PATH.$f))
+    {
+      $css[] = "{combine_css path='$f' order=10}";
+    }
+
+    if (!empty($css))
+    {
+      $source = str_replace("\n{get_combined_css}", "\n".implode( "\n", $css )."\n{get_combined_css}", $source);
+    }
+
+    return $source;
+  }
+
+  function load_themeconf($dir)
+  {
+    global $themeconfs, $conf;
+
+    $dir = realpath($dir);
+    if (!isset($themeconfs[$dir]))
+    {
+      $themeconf = array();
+      include($dir.'/themeconf.inc.php');
+      // Put themeconf in cache
+      $themeconfs[$dir] = $themeconf;
+    }
+    return $themeconfs[$dir];
+  }
+
+  function add_picture_button($content, $rank=BUTTONS_RANK_NEUTRAL)
+  {
+    $this->picture_buttons[$rank][] = $content;
+  }
+
+  function add_index_button($content, $rank=BUTTONS_RANK_NEUTRAL)
+  {
+    $this->index_buttons[$rank][] = $content;
+  }
+
+  function parse_picture_buttons()
+  {
+    if (!empty($this->picture_buttons))
+    {
+      ksort($this->picture_buttons);
+      $this->assign('PLUGIN_PICTURE_BUTTONS',
+          array_reduce(
+            $this->picture_buttons,
+            create_function('$v,$w', 'return array_merge($v, $w);'),
+            array()
+          ));
+    }
+  }
+
+  function parse_index_buttons()
+  {
+    if (!empty($this->index_buttons))
+    {
+      ksort($this->index_buttons);
+      $this->assign('PLUGIN_INDEX_BUTTONS',
+          array_reduce(
+            $this->index_buttons,
+            create_function('$v,$w', 'return array_merge($v, $w);'),
+            array()
+          ));
+    }
+  }
+
+}
+
+
+/**
+ * This class contains basic functions that can be called directly from the
+ * templates in the form $pwg->l10n('edit')
+ */
+class PwgTemplateAdapter
+{
+  function l10n($text)
+  {
+    return l10n($text);
+  }
+
+  function l10n_dec($s, $p, $v)
+  {
+    return l10n_dec($s, $p, $v);
+  }
+
+  function sprintf()
+  {
+    $args = func_get_args();
+    return call_user_func_array('sprintf',  $args );
+  }
+
+  function derivative($type, $img)
+  {
+    return new DerivativeImage($type, $img);
+  }
+
+  function derivative_url($type, $img)
+  {
+    return DerivativeImage::url($type, $img);
+  }
+}
+
+
+class Combinable
+{
+  public $id;
+  public $path;
+  public $version;
+  public $is_template;
+
+  function __construct($id, $path, $version)
+  {
+    $this->id = $id;
+    $this->set_path($path);
+    $this->version = $version;
+  }
+
+  function set_path($path)
+  {
+    if (!empty($path))
+      $this->path = $path;
+  }
+
+  function is_remote()
+  {
+    return url_is_remote( $this->path ) || strncmp($this->path, '//', 2)==0;
+  }
+}
+
+final class Script extends Combinable
+{
+  public $load_mode;
+  public $precedents = array();
+  public $extra = array();
+
+  function __construct($load_mode, $id, $path, $version, $precedents)
+  {
+    parent::__construct($id, $path, $version);
+    $this->load_mode = $load_mode;
+    $this->precedents = $precedents;
+  }
+}
+
+final class Css extends Combinable
+{
+  public $order;
+
+  function __construct($id, $path, $version, $order)
+  {
+    parent::__construct($id, $path, $version);
+    $this->order = $order;
+  }
+}
+
+
+/** Manage a list of css files */
+class CssLoader
+{
+  private $registered_css;
+  
+  /** used to keep declaration order */
+  private $counter;
+  
+  function __construct()
+  {
+    $this->clear();
+  }
+  
+  function clear()
+  {
+    $this->registered_css = array();
+    $this->counter = 0;
+  }
+  
+  function get_css()
+  {
+    uasort($this->registered_css, array('CssLoader', 'cmp_by_order'));
+    $combiner = new FileCombiner('css', $this->registered_css);
+    return $combiner->combine();
+  }
+  
+  private static function cmp_by_order($a, $b)
+  {
+    return $a->order - $b->order;
+  }
+  
+  function add($id, $path, $version=0, $order=0, $is_template=false)
+  {
+    if (!isset($this->registered_css[$id]))
+    {
+      // costum order as an higher impact than declaration order
+      $css = new Css($id, $path, $version, $order*1000+$this->counter);
+      $css->is_template = $is_template;
+      $this->registered_css[$id] = $css;
+      $this->counter++;
+    }
+    else
+    {
+      $css = $this->registered_css[$id];
+      if ($css->order<$order || version_compare($css->version, $version)<0)
+      {
+        unset($this->registered_css[$id]);
+        $this->add($id, $path, $version, $order, $is_template);
+      }
+    }
+  }
+}
+
+
+/** Manage a list of required scripts for a page, by optimizing their loading location (head, bottom, async)
+and later on by combining them in a unique file respecting at the same time dependencies.*/
+class ScriptLoader
+{
+  private $registered_scripts;
+  public $inline_scripts;
+
+  private $did_head;
+  private $head_done_scripts;
+  private $did_footer;
+
+  private static $known_paths = array(
+      'core.scripts' => 'themes/default/js/scripts.js',
+      'jquery' => 'themes/default/js/jquery.min.js',
+      'jquery.ui' => 'themes/default/js/ui/minified/jquery.ui.core.min.js',
+      'jquery.ui.effect' => 'themes/default/js/ui/minified/jquery.ui.effect.min.js',
+    );
+
+  private static $ui_core_dependencies = array(
+      'jquery.ui.widget' => array('jquery'),
+      'jquery.ui.position' => array('jquery'),
+      'jquery.ui.mouse' => array('jquery', 'jquery.ui', 'jquery.ui.widget'),
+    );
+
+  function __construct()
+  {
+    $this->clear();
+  }
+
+  function clear()
+  {
+    $this->registered_scripts = array();
+    $this->inline_scripts = array();
+    $this->head_done_scripts = array();
+    $this->did_head = $this->did_footer = false;
+  }
+
+  function get_all()
+  {
+    return $this->registered_scripts;
+  }
+
+  function add_inline($code, $require)
+  {
+    !$this->did_footer || trigger_error("Attempt to add inline script but the footer has been written", E_USER_WARNING);
+    if(!empty($require))
+    {
+      foreach ($require as $id)
+      {
+        if(!isset($this->registered_scripts[$id]))
+          $this->load_known_required_script($id, 1) or fatal_error("inline script not found require $id");
+        $s = $this->registered_scripts[$id];
+        if($s->load_mode==2)
+          $s->load_mode=1; // until now the implementation does not allow executing inline script depending on another async script
+      }
+    }
+    $this->inline_scripts[] = $code;
+  }
+
+  function add($id, $load_mode, $require, $path, $version=0)
+  {
+    if ($this->did_head && $load_mode==0)
+    {
+      trigger_error("Attempt to add script $id but the head has been written", E_USER_WARNING);
+    }
+    elseif ($this->did_footer)
+    {
+      trigger_error("Attempt to add script $id but the footer has been written", E_USER_WARNING);
+    }
+    if (! isset( $this->registered_scripts[$id] ) )
+    {
+      $script = new Script($load_mode, $id, $path, $version, $require);
+      self::fill_well_known($id, $script);
+      $this->registered_scripts[$id] = $script;
+
+      // Load or modify all UI core files
+      if ($id == 'jquery.ui' and $script->path == self::$known_paths['jquery.ui'])
+      {
+        foreach (self::$ui_core_dependencies as $script_id => $required_ids)
+          $this->add($script_id, $load_mode, $required_ids, null, $version);
+      }
+
+      // Try to load undefined required script
+      foreach ($script->precedents as $script_id)
+      {
+        if (! isset( $this->registered_scripts[$script_id] ) )
+          $this->load_known_required_script($script_id, $load_mode);
+      }
+    }
+    else
+    {
+      $script = $this->registered_scripts[$id];
+      if (count($require))
+      {
+        $script->precedents = array_unique( array_merge($script->precedents, $require) );
+      }
+      $script->set_path($path);
+      if ($version && version_compare($script->version, $version)<0 )
+        $script->version = $version;
+      if ($load_mode < $script->load_mode)
+        $script->load_mode = $load_mode;
+    }
+  }
+
+  function did_head()
+  {
+    return $this->did_head;
+  }
+
+  function get_head_scripts()
+  {
+    self::check_load_dep($this->registered_scripts);
+    foreach( array_keys($this->registered_scripts) as $id )
+    {
+      $this->compute_script_topological_order($id);
+    }
+
+    uasort($this->registered_scripts, array('ScriptLoader', 'cmp_by_mode_and_order'));
+
+    foreach( $this->registered_scripts as $id => $script)
+    {
+      if ($script->load_mode > 0)
+        break;
+      if ( !empty($script->path) )
+        $this->head_done_scripts[$id] = $script;
+      else
+        trigger_error("Script $id has an undefined path", E_USER_WARNING);
+    }
+    $this->did_head = true;
+    return self::do_combine($this->head_done_scripts, 0);
+  }
+
+  function get_footer_scripts()
+  {
+    if (!$this->did_head)
+    {
+      self::check_load_dep($this->registered_scripts);
+    }
+    $this->did_footer = true;
+    $todo = array();
+    foreach( $this->registered_scripts as $id => $script)
+    {
+      if (!isset($this->head_done_scripts[$id]))
+      {
+        $todo[$id] = $script;
+      }
+    }
+
+    foreach( array_keys($todo) as $id )
+    {
+      $this->compute_script_topological_order($id);
+    }
+
+    uasort($todo, array('ScriptLoader', 'cmp_by_mode_and_order'));
+
+    $result = array( array(), array() );
+    foreach( $todo as $id => $script)
+    {
+      $result[$script->load_mode-1][$id] = $script;
+    }
+    return array( self::do_combine($result[0],1), self::do_combine($result[1],2) );
+  }
+
+  private static function do_combine($scripts, $load_mode)
+  {
+    $combiner = new FileCombiner('js', $scripts);
+    return $combiner->combine();
+  }
+
+  // checks that if B depends on A, then B->load_mode >= A->load_mode in order to respect execution order
+  private static function check_load_dep($scripts)
+  {
+    global $conf;
+    do
+    {
+      $changed = false;
+      foreach( $scripts as $id => $script)
+      {
+        $load = $script->load_mode;
+        foreach( $script->precedents as $precedent)
+        {
+          if ( !isset($scripts[$precedent] ) )
+            continue;
+          if ( $scripts[$precedent]->load_mode > $load )
+          {
+            $scripts[$precedent]->load_mode = $load;
+            $changed = true;
+          }
+          if ($load==2 && $scripts[$precedent]->load_mode==2 && ($scripts[$precedent]->is_remote() or !$conf['template_combine_files']) )
+          {// we are async -> a predecessor cannot be async unlesss it can be merged; otherwise script execution order is not guaranteed
+            $scripts[$precedent]->load_mode = 1;
+            $changed = true;
+          }
+        }
+      }
+    }
+    while ($changed);
+  }
+
+
+  private static function fill_well_known($id, $script)
+  {
+    if ( empty($script->path) && isset(self::$known_paths[$id]))
+    {
+      $script->path = self::$known_paths[$id];
+    }
+    if ( strncmp($id, 'jquery.', 7)==0 )
+    {
+      $required_ids = array('jquery');
+
+      if ( strncmp($id, 'jquery.ui.effect-', 17)==0 )
+      {
+        $required_ids = array('jquery', 'jquery.ui.effect');
+
+        if ( empty($script->path) )
+          $script->path = dirname(self::$known_paths['jquery.ui.effect'])."/$id.min.js";
+      }
+      elseif ( strncmp($id, 'jquery.ui.', 10)==0 )
+      {
+        if ( !isset(self::$ui_core_dependencies[$id]) )
+          $required_ids = array_merge(array('jquery', 'jquery.ui'), array_keys(self::$ui_core_dependencies));
+
+        if ( empty($script->path) )
+          $script->path = dirname(self::$known_paths['jquery.ui'])."/$id.min.js";
+      }
+
+      foreach ($required_ids as $required_id)
+      {
+        if ( !in_array($required_id, $script->precedents ) )
+          $script->precedents[] = $required_id;
+      }
+    }
+  }
+
+  private function load_known_required_script($id, $load_mode)
+  {
+    if ( isset(self::$known_paths[$id]) or strncmp($id, 'jquery.ui.', 10)==0  )
+    {
+      $this->add($id, $load_mode, array(), null);
+      return true;
+    }
+    return false;
+  }
+
+  private function compute_script_topological_order($script_id, $recursion_limiter=0)
+  {
+    if (!isset($this->registered_scripts[$script_id]))
+    {
+      trigger_error("Undefined script $script_id is required by someone", E_USER_WARNING);
+      return 0;
+    }
+    $recursion_limiter<5 or fatal_error("combined script circular dependency");
+    $script = $this->registered_scripts[$script_id];
+    if (isset($script->extra['order']))
+      return $script->extra['order'];
+    if (count($script->precedents) == 0)
+      return ($script->extra['order'] = 0);
+    $max = 0;
+    foreach( $script->precedents as $precedent)
+      $max = max($max, $this->compute_script_topological_order($precedent, $recursion_limiter+1) );
+    $max++;
+    return ($script->extra['order'] = $max);
+  }
+
+  private static function cmp_by_mode_and_order($s1, $s2)
+  {
+    $ret = $s1->load_mode - $s2->load_mode;
+    if ($ret) return $ret;
+
+    $ret = $s1->extra['order'] - $s2->extra['order'];
+    if ($ret) return $ret;
+
+    if ($s1->extra['order']==0 and ($s1->is_remote() xor $s2->is_remote()) )
+    {
+      return $s1->is_remote() ? -1 : 1;
+    }
+    return strcmp($s1->id,$s2->id);
+  }
+}
+
+
+/*Allows merging of javascript and css files into a single one.*/
+final class FileCombiner
+{
+  private $type; // js or css
+  private $is_css;
+  private $combinables;
+
+  function FileCombiner($type, $combinables=array())
+  {
+    $this->type = $type;
+    $this->is_css = $type=='css';
+    $this->combinables = $combinables;
+  }
+
+  static function clear_combined_files()
+  {
+    $dir = opendir(PHPWG_ROOT_PATH.PWG_COMBINED_DIR);
+    while ($file = readdir($dir))
+    {
+      if ( get_extension($file)=='js' || get_extension($file)=='css')
+        unlink(PHPWG_ROOT_PATH.PWG_COMBINED_DIR.$file);
+    }
+    closedir($dir);
+  }
+
+  function add($combinables)
+  {
+    if ($combinables instanceof Combinable)
+    {
+      $this->combinables[] = $combinables;
+    }
+    else
+    {
+      foreach($combinables as $combinable)
+        $this->combinables[] = $combinable;
+    }
+  }
+
+  function combine()
+  {
+    global $conf;
+    $force = false;
+    if (is_admin() && ($this->is_css || !$conf['template_compile_check']) )
+    {
+      $force = (isset($_SERVER['HTTP_CACHE_CONTROL']) && strpos($_SERVER['HTTP_CACHE_CONTROL'], 'max-age=0') !== false)
+        || (isset($_SERVER['HTTP_PRAGMA']) && strpos($_SERVER['HTTP_PRAGMA'], 'no-cache'));
+    }
+
+    $result = array();
+    $pending = array();
+    $ini_key = $this->is_css ? array(get_absolute_root_url(false)): array(); //because for css we modify bg url;
+    $key = $ini_key;
+
+    foreach ($this->combinables as $combinable)
+    {
+      if ($combinable->is_remote())
+      {
+        $this->flush_pending($result, $pending, $key, $force);
+        $key = $ini_key;
+        $result[] = $combinable;
+        continue;
+      }
+      elseif (!$conf['template_combine_files'])
+      {
+        $this->flush_pending($result, $pending, $key, $force);
+        $key = $ini_key;
+      }
+
+      $key[] = $combinable->path;
+      $key[] = $combinable->version;
+      if ($conf['template_compile_check'])
+        $key[] = filemtime( PHPWG_ROOT_PATH . $combinable->path );
+      $pending[] = $combinable;
+    }
+    $this->flush_pending($result, $pending, $key, $force);
+    return $result;
+  }
+
+  private function flush_pending(&$result, &$pending, $key, $force)
+  {
+    if (count($pending)>1)
+    {
+      $key = join('>', $key);
+      $file = PWG_COMBINED_DIR . base_convert(crc32($key),10,36) . '.' . $this->type;
+      if ($force || !file_exists(PHPWG_ROOT_PATH.$file) )
+      {
+        $output = '';
+        foreach ($pending as $combinable)
+        {
+          $output .= "/*BEGIN $combinable->path */\n";
+          $output .= $this->process_combinable($combinable, true, $force);
+          $output .= "\n";
+        }
+        mkgetdir( dirname(PHPWG_ROOT_PATH.$file) );
+        file_put_contents( PHPWG_ROOT_PATH.$file, $output );
+        @chmod(PHPWG_ROOT_PATH.$file, 0644);
+      }
+      $result[] = new Combinable("combi", $file, false);
+    }
+    elseif ( count($pending)==1)
+    {
+      $this->process_combinable($pending[0], false, $force);
+      $result[] = $pending[0];
+    }
+    $key = array();
+    $pending = array();
+  }
+
+  private function process_combinable($combinable, $return_content, $force)
+  {
+    global $conf;
+    if ($combinable->is_template)
+    {
+      if (!$return_content)
+      {
+        $key = array($combinable->path, $combinable->version);
+        if ($conf['template_compile_check'])
+          $key[] = filemtime( PHPWG_ROOT_PATH . $combinable->path );
+        $file = PWG_COMBINED_DIR . 't' . base_convert(crc32(implode(',',$key)),10,36) . '.' . $this->type;
+        if (!$force && file_exists(PHPWG_ROOT_PATH.$file) )
+        {
+          $combinable->path = $file;
+          $combinable->version = false;
+          return;
+        }
+      }
+
+      global $template;
+      $handle = $this->type. '.' .$combinable->id;
+      $template->set_filename($handle, realpath(PHPWG_ROOT_PATH.$combinable->path));
+      trigger_action( 'combinable_preparse', $template, $combinable, $this); //allow themes and plugins to set their own vars to template ...
+      $content = $template->parse($handle, true);
+
+      if ($this->is_css)
+        $content = self::process_css($content, dirname($combinable->path) );
+      else
+        $content = self::process_js($content, $combinable->path );
+
+      if ($return_content)
+        return $content;
+      file_put_contents( PHPWG_ROOT_PATH.$file, $content );
+      $combinable->path = $file;
+    }
+    elseif ($return_content)
+    {
+      $content = file_get_contents(PHPWG_ROOT_PATH . $combinable->path);
+      if ($this->is_css)
+        $content = self::process_css($content, dirname($combinable->path) );
+      else
+        $content = self::process_js($content, $combinable->path );
+      return $content;
+    }
+  }
+
+  private static function process_js($js, $file)
+  {
+    if (strpos($file, '.min')===false and strpos($file, '.packed')===false )
+    {
+      require_once(PHPWG_ROOT_PATH.'include/jshrink.class.php');
+      try { $js = JShrink_Minifier::minify($js); } catch(Exception $e) {}
+    }
+    return trim($js, " \t\r\n;").";\n";
+  }
+
+  private static function process_css($css, $dir)
+  {
+    $css = self::process_css_rec($css, $dir);
+    if (version_compare(PHP_VERSION, '5.2.4', '>='))
+    {
+      require_once(PHPWG_ROOT_PATH.'include/cssmin.class.php');
+      $css = CssMin::minify($css, array('Variables'=>false));
+    }
+    $css = trigger_event('combined_css_postfilter', $css);
+    return $css;
+  }
+
+  private static function process_css_rec($css, $dir)
+  {
+    static $PATTERN = "#url\(\s*['|\"]{0,1}(.*?)['|\"]{0,1}\s*\)#";
+
+    if (preg_match_all($PATTERN, $css, $matches, PREG_SET_ORDER))
+    {
+      $search = $replace = array();
+      foreach ($matches as $match)
+      {
+        if ( !url_is_remote($match[1]) && $match[1][0] != '/')
+        {
+          $relative = $dir . "/$match[1]";
+          $search[] = $match[0];
+          $replace[] = 'url('.embellish_url(get_absolute_root_url(false).$relative).')';
+        }
+      }
+      $css = str_replace($search, $replace, $css);
+    }
+
+    $imports = preg_match_all("#@import\s*['|\"]{0,1}(.*?)['|\"]{0,1};#", $css, $matches, PREG_SET_ORDER);
+    if ($imports)
+    {
+      $search = $replace = array();
+      foreach ($matches as $match)
+      {
+        $search[] = $match[0];
+        $sub_css = file_get_contents(PHPWG_ROOT_PATH . $dir . "/$match[1]");
+        $replace[] = self::process_css_rec($sub_css, dirname($dir . "/$match[1]") );
+      }
+      $css = str_replace($search, $replace, $css);
+    }
+    return $css;
+  }
+
+}
+
+?>
Index: /tags/2.6.0RC1/include/user.inc.php
===================================================================
--- /tags/2.6.0RC1/include/user.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/user.inc.php	(revision 25596)
@@ -0,0 +1,76 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// by default we start with guest
+$user['id'] = $conf['guest_id'];
+
+if (isset($_COOKIE[session_name()]))
+{
+  if (isset($_GET['act']) and $_GET['act'] == 'logout')
+  { // logout
+    logout_user();
+    redirect(get_gallery_home_url());
+  }
+  elseif (!empty($_SESSION['pwg_uid']))
+  {
+    $user['id'] = $_SESSION['pwg_uid'];
+  }
+}
+
+// Now check the auto-login
+if ( $user['id']==$conf['guest_id'] )
+{
+  auto_login();
+}
+
+// using Apache authentication override the above user search
+if ($conf['apache_authentication'])
+{
+  $remote_user = null;
+  foreach (array('REMOTE_USER', 'REDIRECT_REMOTE_USER') as $server_key)
+  {
+    if (isset($_SERVER[$server_key]))
+    {
+      $remote_user = $_SERVER[$server_key];
+      break;
+    }
+  }
+
+  if (isset($remote_user))
+  {
+    if (!($user['id'] = get_userid($remote_user)))
+    {
+      $user['id'] = register_user($remote_user, '', '', false);
+    }
+  }
+}
+
+$user = build_user( $user['id'],
+          ( defined('IN_ADMIN') and IN_ADMIN ) ? false : true // use cache ?
+         );
+if ($conf['browser_language'] and (is_a_guest() or is_generic()) )
+{
+  get_browser_language($user['language']);
+}
+trigger_action('user_init', $user);
+?>
Index: /tags/2.6.0RC1/include/ws_core.inc.php
===================================================================
--- /tags/2.6.0RC1/include/ws_core.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_core.inc.php	(revision 25596)
@@ -0,0 +1,691 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**** WEB SERVICE CORE CLASSES************************************************
+ * PwgServer - main object - the link between web service methods, request
+ *  handler and response encoder
+ * PwgRequestHandler - base class for handlers
+ * PwgResponseEncoder - base class for response encoders
+ * PwgError, PwgNamedArray, PwgNamedStruct - can be used by web service functions
+ * as return values
+ */
+
+
+define( 'WS_PARAM_ACCEPT_ARRAY',  0x010000 );
+define( 'WS_PARAM_FORCE_ARRAY',   0x030000 );
+define( 'WS_PARAM_OPTIONAL',      0x040000 );
+
+define( 'WS_TYPE_BOOL',           0x01 );
+define( 'WS_TYPE_INT',            0x02 );
+define( 'WS_TYPE_FLOAT',          0x04 );
+define( 'WS_TYPE_POSITIVE',       0x10 );
+define( 'WS_TYPE_NOTNULL',        0x20 );
+define( 'WS_TYPE_ID', WS_TYPE_INT | WS_TYPE_POSITIVE | WS_TYPE_NOTNULL);
+
+define( 'WS_ERR_INVALID_METHOD',  501 );
+define( 'WS_ERR_MISSING_PARAM',   1002 );
+define( 'WS_ERR_INVALID_PARAM',   1003 );
+
+define( 'WS_XML_ATTRIBUTES', 'attributes_xml_');
+
+/**
+ * PwgError object can be returned from any web service function implementation.
+ */
+class PwgError
+{
+  private $_code;
+  private $_codeText;
+
+  function PwgError($code, $codeText)
+  {
+    if ($code>=400 and $code<600)
+    {
+      set_status_header($code, $codeText);
+    }
+
+    $this->_code = $code;
+    $this->_codeText = $codeText;
+  }
+
+  function code() { return $this->_code; }
+  function message() { return $this->_codeText; }
+}
+
+/**
+ * Simple wrapper around an array (keys are consecutive integers starting at 0).
+ * Provides naming clues for xml output (xml attributes vs. xml child elements?)
+ * Usually returned by web service function implementation.
+ */
+class PwgNamedArray
+{
+  /*private*/ var $_content;
+  /*private*/ var $_itemName;
+  /*private*/ var $_xmlAttributes;
+
+  /**
+   * Constructs a named array
+   * @param arr array (keys must be consecutive integers starting at 0)
+   * @param itemName string xml element name for values of arr (e.g. image)
+   * @param xmlAttributes array of sub-item attributes that will be encoded as
+   *      xml attributes instead of xml child elements
+   */
+  function PwgNamedArray($arr, $itemName, $xmlAttributes=array() )
+  {
+    $this->_content = $arr;
+    $this->_itemName = $itemName;
+    $this->_xmlAttributes = array_flip($xmlAttributes);
+  }
+}
+/**
+ * Simple wrapper around a "struct" (php array whose keys are not consecutive
+ * integers starting at 0). Provides naming clues for xml output (what is xml
+ * attributes and what is element)
+ */
+class PwgNamedStruct
+{
+  /*private*/ var $_content;
+  /*private*/ var $_xmlAttributes;
+
+  /**
+   * Constructs a named struct (usually returned by web service function
+   * implementation)
+   * @param name string - containing xml element name
+   * @param content array - the actual content (php array)
+   * @param xmlAttributes array - name of the keys in $content that will be
+   *    encoded as xml attributes (if null - automatically prefer xml attributes
+   *    whenever possible)
+   */
+  function PwgNamedStruct($content, $xmlAttributes=null, $xmlElements=null )
+  {
+    $this->_content = $content;
+    if ( isset($xmlAttributes) )
+    {
+      $this->_xmlAttributes = array_flip($xmlAttributes);
+    }
+    else
+    {
+      $this->_xmlAttributes = array();
+      foreach ($this->_content as $key=>$value)
+      {
+        if (!empty($key) and (is_scalar($value) or is_null($value)) )
+        {
+          if ( empty($xmlElements) or !in_array($key,$xmlElements) )
+          {
+            $this->_xmlAttributes[$key]=1;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+/**
+ * Abstract base class for request handlers.
+ */
+abstract class PwgRequestHandler
+{
+  /** Virtual abstract method. Decodes the request (GET or POST) handles the
+   * method invocation as well as response sending.
+   */
+  abstract function handleRequest(&$service);
+}
+
+/**
+ *
+ * Base class for web service response encoder.
+ */
+abstract class PwgResponseEncoder
+{
+  /** encodes the web service response to the appropriate output format
+   * @param response mixed the unencoded result of a service method call
+   */
+  abstract function encodeResponse($response);
+
+  /** default "Content-Type" http header for this kind of response format
+   */
+  abstract function getContentType();
+
+  /**
+   * returns true if the parameter is a 'struct' (php array type whose keys are
+   * NOT consecutive integers starting with 0)
+   */
+  static function is_struct(&$data)
+  {
+    if (is_array($data) )
+    {
+      if (range(0, count($data) - 1) !== array_keys($data) )
+      { # string keys, unordered, non-incremental keys, .. - whatever, make object
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * removes all XML formatting from $response (named array, named structs, etc)
+   * usually called by every response encoder, except rest xml.
+   */
+  static function flattenResponse(&$value)
+  {
+    self::flatten($value);
+  }
+
+  private static function flatten(&$value)
+  {
+    if (is_object($value))
+    {
+      $class = strtolower( @get_class($value) );
+      if ($class == 'pwgnamedarray')
+      {
+        $value = $value->_content;
+      }
+      if ($class == 'pwgnamedstruct')
+      {
+        $value = $value->_content;
+      }
+    }
+
+    if (!is_array($value))
+      return;
+
+    if (self::is_struct($value))
+    {
+      if ( isset($value[WS_XML_ATTRIBUTES]) )
+      {
+        $value = array_merge( $value, $value[WS_XML_ATTRIBUTES] );
+        unset( $value[WS_XML_ATTRIBUTES] );
+      }
+    }
+
+    foreach ($value as $key=>&$v)
+    {
+      self::flatten($v);
+    }
+  }
+}
+
+
+
+class PwgServer
+{
+  var $_requestHandler;
+  var $_requestFormat;
+  var $_responseEncoder;
+  var $_responseFormat;
+
+  var $_methods = array();
+
+  function PwgServer()
+  {
+  }
+
+  /**
+   *  Initializes the request handler.
+   */
+  function setHandler($requestFormat, &$requestHandler)
+  {
+    $this->_requestHandler = &$requestHandler;
+    $this->_requestFormat = $requestFormat;
+  }
+
+  /**
+   *  Initializes the request handler.
+   */
+  function setEncoder($responseFormat, &$encoder)
+  {
+    $this->_responseEncoder = &$encoder;
+    $this->_responseFormat = $responseFormat;
+  }
+
+  /**
+   * Runs the web service call (handler and response encoder should have been
+   * created)
+   */
+  function run()
+  {
+    if ( is_null($this->_responseEncoder) )
+    {
+      set_status_header(400);
+      @header("Content-Type: text/plain");
+      echo ("Cannot process your request. Unknown response format.
+Request format: ".@$this->_requestFormat." Response format: ".@$this->_responseFormat."\n");
+      var_export($this);
+      die(0);
+    }
+
+    if ( is_null($this->_requestHandler) )
+    {
+      $this->sendResponse( new PwgError(400, 'Unknown request format') );
+      return;
+    }
+
+    // add reflection methods
+    $this->addMethod(
+        'reflection.getMethodList',
+        array('PwgServer', 'ws_getMethodList')
+        );
+    $this->addMethod(
+        'reflection.getMethodDetails',
+        array('PwgServer', 'ws_getMethodDetails'),
+        array('methodName')
+        );
+
+    trigger_action('ws_add_methods', array(&$this) );
+    uksort( $this->_methods, 'strnatcmp' );
+    $this->_requestHandler->handleRequest($this);
+  }
+
+  /**
+   * Encodes a response and sends it back to the browser.
+   */
+  function sendResponse($response)
+  {
+    $encodedResponse = $this->_responseEncoder->encodeResponse($response);
+    $contentType = $this->_responseEncoder->getContentType();
+
+    @header('Content-Type: '.$contentType.'; charset='.get_pwg_charset());
+    print_r($encodedResponse);
+    trigger_action('sendResponse', $encodedResponse );
+  }
+
+  /**
+   * Registers a web service method.
+   * @param methodName string - the name of the method as seen externally
+   * @param callback mixed - php method to be invoked internally
+   * @param params array - map of allowed parameter names with options
+   *    @option mixed default (optional)
+   *    @option int flags (optional)
+   *      possible values: WS_PARAM_ALLOW_ARRAY, WS_PARAM_FORCE_ARRAY, WS_PARAM_OPTIONAL
+   *    @option int type (optional)
+   *      possible values: WS_TYPE_BOOL, WS_TYPE_INT, WS_TYPE_FLOAT, WS_TYPE_ID
+   *                       WS_TYPE_POSITIVE, WS_TYPE_NOTNULL
+   *    @option int|float maxValue (optional)
+   * @param description string - a description of the method.
+   * @param include_file string - a file to be included befaore the callback is executed
+   * @param options array
+   *    @option bool hidden (optional) - if true, this method won't be visible by reflection.getMethodList
+   *    @option bool admin_only (optional)
+   *    @option bool post_only (optional)
+   */
+  function addMethod($methodName, $callback, $params=array(), $description='', $include_file='', $options=array())
+  {
+    if (!is_array($params))
+    {
+      $params = array();
+    }
+
+    if ( range(0, count($params) - 1) === array_keys($params) )
+    {
+      $params = array_flip($params);
+    }
+
+    foreach( $params as $param=>$data)
+    {
+      if ( !is_array($data) )
+      {
+        $params[$param] = array('flags'=>0,'type'=>0);
+      }
+      else
+      {
+        if ( !isset($data['flags']) )
+        {
+          $data['flags'] = 0;
+        }
+        if ( array_key_exists('default', $data) )
+        {
+          $data['flags'] |= WS_PARAM_OPTIONAL;
+        }
+        if ( !isset($data['type']) )
+        {
+          $data['type'] = 0;
+        }
+        $params[$param] = $data;
+      }
+    }
+
+    $this->_methods[$methodName] = array(
+      'callback'    => $callback,
+      'description' => $description,
+      'signature'   => $params,
+      'include'     => $include_file,
+      'options'     => $options,
+      );
+  }
+
+  function hasMethod($methodName)
+  {
+    return isset($this->_methods[$methodName]);
+  }
+
+  function getMethodDescription($methodName)
+  {
+    $desc = @$this->_methods[$methodName]['description'];
+    return isset($desc) ? $desc : '';
+  }
+
+  function getMethodSignature($methodName)
+  {
+    $signature = @$this->_methods[$methodName]['signature'];
+    return isset($signature) ? $signature : array();
+  }
+  
+  /**
+   * @since 2.6
+   */
+  function getMethodOptions($methodName)
+  {
+    $options = @$this->_methods[$methodName]['options'];
+    return isset($options) ? $options : array();
+  }
+
+  static function isPost()
+  {
+    return isset($HTTP_RAW_POST_DATA) or !empty($_POST);
+  }
+
+  static function makeArrayParam(&$param)
+  {
+    if ( $param==null )
+    {
+      $param = array();
+    }
+    else
+    {
+      if ( !is_array($param) )
+      {
+        $param = array($param);
+      }
+    }
+  }
+  
+  static function checkType(&$param, $type, $name)
+  {
+    $opts = array();
+    $msg = '';
+    if ( self::hasFlag($type, WS_TYPE_POSITIVE | WS_TYPE_NOTNULL) )
+    {
+      $opts['options']['min_range'] = 1;
+      $msg = ' positive and not null';
+    }
+    else if ( self::hasFlag($type, WS_TYPE_POSITIVE) )
+    {
+      $opts['options']['min_range'] = 0;
+      $msg = ' positive';
+    }
+    
+    if ( is_array($param) )
+    {
+      if ( self::hasFlag($type, WS_TYPE_BOOL) )
+      {
+        foreach ($param as &$value)
+        {
+          if ( ($value = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) === null )
+          {
+            return new PwgError(WS_ERR_INVALID_PARAM, $name.' must only contain booleans' );
+          }
+        }
+        unset($value);
+      }
+      else if ( self::hasFlag($type, WS_TYPE_INT) )
+      {
+        foreach ($param as &$value)
+        {
+          if ( ($value = filter_var($value, FILTER_VALIDATE_INT, $opts)) === false )
+          {
+            return new PwgError(WS_ERR_INVALID_PARAM, $name.' must only contain'.$msg.' integers' );
+          }
+        }
+        unset($value);
+      }
+      else if ( self::hasFlag($type, WS_TYPE_FLOAT) )
+      {
+        foreach ($param as &$value)
+        {
+          if (
+            ($value = filter_var($value, FILTER_VALIDATE_FLOAT)) === false
+            or ( isset($opts['options']['min_range']) and $value < $opts['options']['min_range'] )
+          ) {
+            return new PwgError(WS_ERR_INVALID_PARAM, $name.' must only contain'.$msg.' floats' );
+          }
+        }
+        unset($value);
+      }
+    }
+    else if ( $param !== '' )
+    {
+      if ( self::hasFlag($type, WS_TYPE_BOOL) )
+      {
+        if ( ($param = filter_var($param, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) === null )
+        {
+          return new PwgError(WS_ERR_INVALID_PARAM, $name.' must be a boolean' );
+        }
+      }
+      else if ( self::hasFlag($type, WS_TYPE_INT) )
+      {
+        if ( ($param = filter_var($param, FILTER_VALIDATE_INT, $opts)) === false )
+        {
+          return new PwgError(WS_ERR_INVALID_PARAM, $name.' must be an'.$msg.' integer' );
+        }
+      }
+      else if ( self::hasFlag($type, WS_TYPE_FLOAT) )
+      {
+        if (
+          ($param = filter_var($param, FILTER_VALIDATE_FLOAT)) === false
+          or ( isset($opts['options']['min_range']) and $param < $opts['options']['min_range'] )
+        ) {
+          return new PwgError(WS_ERR_INVALID_PARAM, $name.' must be a'.$msg.' float' );
+        }
+      }
+    }
+    
+    return null;
+  }
+  
+  static function hasFlag($val, $flag)
+  {
+    return ($val & $flag) == $flag;
+  }
+
+  /**
+   *  Invokes a registered method. Returns the return of the method (or
+   *  a PwgError object if the method is not found)
+   *  @param methodName string the name of the method to invoke
+   *  @param params array array of parameters to pass to the invoked method
+   */
+  function invoke($methodName, $params)
+  {
+    $method = @$this->_methods[$methodName];
+
+    if ( $method == null )
+    {
+      return new PwgError(WS_ERR_INVALID_METHOD, 'Method name is not valid');
+    }
+    
+    if ( isset($method['options']['post_only']) and $method['options']['post_only'] and !self::isPost() )
+    {
+      return new PwgError(405, 'This method requires HTTP POST');
+    }
+    
+    if ( isset($method['options']['admin_only']) and $method['options']['admin_only'] and !is_admin() )
+    {
+      return new PwgError(401, 'Access denied');
+    }
+
+    // parameter check and data correction
+    $signature = $method['signature'];
+    $missing_params = array();
+    
+    foreach ($signature as $name => $options)
+    {
+      $flags = $options['flags'];
+      
+      // parameter not provided in the request
+      if ( !array_key_exists($name, $params) )
+      {
+        if ( !self::hasFlag($flags, WS_PARAM_OPTIONAL) )
+        {
+          $missing_params[] = $name;
+        }
+        else if ( array_key_exists('default', $options) )
+        {
+          $params[$name] = $options['default'];
+          if ( self::hasFlag($flags, WS_PARAM_FORCE_ARRAY) )
+          {
+            self::makeArrayParam($params[$name]);
+          }
+        }
+      }
+      // parameter provided but empty
+      else if ( $params[$name]==='' and !self::hasFlag($flags, WS_PARAM_OPTIONAL) )
+      {
+        $missing_params[] = $name;
+      }
+      // parameter provided - do some basic checks
+      else
+      {
+        $the_param = $params[$name];
+        
+        if ( is_array($the_param) and !self::hasFlag($flags, WS_PARAM_ACCEPT_ARRAY) )
+        {
+          return new PwgError(WS_ERR_INVALID_PARAM, $name.' must be scalar' );
+        }
+        
+        if ( self::hasFlag($flags, WS_PARAM_FORCE_ARRAY) )
+        {
+          self::makeArrayParam($the_param);
+        }
+        
+        if ( $options['type'] > 0 )
+        {
+          if ( ($ret = self::checkType($the_param, $options['type'], $name)) !== null )
+          {
+            return $ret;
+          }
+        }
+        
+        if ( isset($options['maxValue']) and $the_param>$options['maxValue'])
+        {
+          $the_param = $options['maxValue'];
+        }
+        
+        $params[$name] = $the_param;
+      }
+    }
+    
+    if (count($missing_params))
+    {
+      return new PwgError(WS_ERR_MISSING_PARAM, 'Missing parameters: '.implode(',',$missing_params));
+    }
+    
+    $result = trigger_event('ws_invoke_allowed', true, $methodName, $params);
+    if ( strtolower( @get_class($result) )!='pwgerror')
+    {
+      if ( !empty($method['include']) )
+      {
+        include_once( $method['include'] );
+      }
+      $result = call_user_func_array($method['callback'], array($params, &$this) );
+    }
+    
+    return $result;
+  }
+
+  /**
+   * WS reflection method implementation: lists all available methods
+   */
+  static function ws_getMethodList($params, &$service)
+  {
+    $methods = array_filter($service->_methods,
+            create_function('$m', 'return empty($m["options"]["hidden"]) || !$m["options"]["hidden"];'));
+    return array('methods' => new PwgNamedArray( array_keys($methods),'method' ) );
+  }
+
+  /**
+   * WS reflection method implementation: gets information about a given method
+   */
+  static function ws_getMethodDetails($params, &$service)
+  {
+    $methodName = $params['methodName'];
+    
+    if (!$service->hasMethod($methodName))
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Requested method does not exist');
+    }
+    
+    $res = array(
+      'name' => $methodName,
+      'description' => $service->getMethodDescription($methodName),
+      'params' => array(),
+      'options' => $service->getMethodOptions($methodName),
+    );
+    
+    foreach ($service->getMethodSignature($methodName) as $name => $options)
+    {
+      $param_data = array(
+        'name' => $name,
+        'optional' => self::hasFlag($options['flags'], WS_PARAM_OPTIONAL),
+        'acceptArray' => self::hasFlag($options['flags'], WS_PARAM_ACCEPT_ARRAY),
+        'type' => 'mixed',
+        );
+      
+      if (isset($options['default']))
+      {
+        $param_data['defaultValue'] = $options['default'];
+      }
+      if (isset($options['maxValue']))
+      {
+        $param_data['maxValue'] = $options['maxValue'];
+      }
+      if (isset($options['info']))
+      {
+        $param_data['info'] = $options['info'];
+      }
+      
+      if ( self::hasFlag($options['type'], WS_TYPE_BOOL) )
+      {
+        $param_data['type'] = 'bool';
+      }
+      else if ( self::hasFlag($options['type'], WS_TYPE_INT) )
+      {
+        $param_data['type'] = 'int';
+      }
+      else if ( self::hasFlag($options['type'], WS_TYPE_FLOAT) )
+      {
+        $param_data['type'] = 'float';
+      }
+      if ( self::hasFlag($options['type'], WS_TYPE_POSITIVE) )
+      {
+        $param_data['type'].= ' positive';
+      }
+      if ( self::hasFlag($options['type'], WS_TYPE_NOTNULL) )
+      {
+        $param_data['type'].= ' notnull';
+      }
+      
+      $res['params'][] = $param_data;
+    }
+    return $res;
+  }
+}
+?>
Index: /tags/2.6.0RC1/include/ws_functions.inc.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions.inc.php	(revision 25596)
@@ -0,0 +1,257 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Event handler for method invocation security check. Should return a PwgError
+ * if the preconditions are not satifsied for method invocation.
+ */
+function ws_isInvokeAllowed($res, $methodName, $params)
+{
+  global $conf;
+
+  if ( strpos($methodName,'reflection.')===0 )
+  { // OK for reflection
+    return $res;
+  }
+
+  if ( !is_autorize_status(ACCESS_GUEST) and
+      strpos($methodName,'pwg.session.')!==0 )
+  {
+    return new PwgError(401, 'Access denied');
+  }
+
+  return $res;
+}
+
+/**
+ * returns a "standard" (for our web service) array of sql where clauses that
+ * filters the images (images table only)
+ */
+function ws_std_image_sql_filter( $params, $tbl_name='' )
+{
+  $clauses = array();
+  if ( is_numeric($params['f_min_rate']) )
+  {
+    $clauses[] = $tbl_name.'rating_score>='.$params['f_min_rate'];
+  }
+  if ( is_numeric($params['f_max_rate']) )
+  {
+    $clauses[] = $tbl_name.'rating_score<='.$params['f_max_rate'];
+  }
+  if ( is_numeric($params['f_min_hit']) )
+  {
+    $clauses[] = $tbl_name.'hit>='.$params['f_min_hit'];
+  }
+  if ( is_numeric($params['f_max_hit']) )
+  {
+    $clauses[] = $tbl_name.'hit<='.$params['f_max_hit'];
+  }
+  if ( isset($params['f_min_date_available']) )
+  {
+    $clauses[] = $tbl_name."date_available>='".$params['f_min_date_available']."'";
+  }
+  if ( isset($params['f_max_date_available']) )
+  {
+    $clauses[] = $tbl_name."date_available<'".$params['f_max_date_available']."'";
+  }
+  if ( isset($params['f_min_date_created']) )
+  {
+    $clauses[] = $tbl_name."date_creation>='".$params['f_min_date_created']."'";
+  }
+  if ( isset($params['f_max_date_created']) )
+  {
+    $clauses[] = $tbl_name."date_creation<'".$params['f_max_date_created']."'";
+  }
+  if ( is_numeric($params['f_min_ratio']) )
+  {
+    $clauses[] = $tbl_name.'width/'.$tbl_name.'height>='.$params['f_min_ratio'];
+  }
+  if ( is_numeric($params['f_max_ratio']) )
+  {
+    $clauses[] = $tbl_name.'width/'.$tbl_name.'height<='.$params['f_max_ratio'];
+  }
+  if (is_numeric($params['f_max_level']) )
+  {
+    $clauses[] = $tbl_name.'level <= '.$params['f_max_level'];
+  }
+  return $clauses;
+}
+
+/**
+ * returns a "standard" (for our web service) ORDER BY sql clause for images
+ */
+function ws_std_image_sql_order( $params, $tbl_name='' )
+{
+  $ret = '';
+  if ( empty($params['order']) )
+  {
+    return $ret;
+  }
+  $matches = array();
+  preg_match_all('/([a-z_]+) *(?:(asc|desc)(?:ending)?)? *(?:, *|$)/i',
+    $params['order'], $matches);
+  for ($i=0; $i<count($matches[1]); $i++)
+  {
+    switch ($matches[1][$i])
+    {
+      case 'date_created':
+        $matches[1][$i] = 'date_creation'; break;
+      case 'date_posted':
+        $matches[1][$i] = 'date_available'; break;
+      case 'rand': case 'random':
+        $matches[1][$i] = DB_RANDOM_FUNCTION.'()'; break;
+    }
+    $sortable_fields = array('id', 'file', 'name', 'hit', 'rating_score',
+      'date_creation', 'date_available', DB_RANDOM_FUNCTION.'()' );
+    if ( in_array($matches[1][$i], $sortable_fields) )
+    {
+      if (!empty($ret))
+        $ret .= ', ';
+      if ($matches[1][$i] != DB_RANDOM_FUNCTION.'()' )
+      {
+        $ret .= $tbl_name;
+      }
+      $ret .= $matches[1][$i];
+      $ret .= ' '.$matches[2][$i];
+    }
+  }
+  return $ret;
+}
+
+/**
+ * returns an array map of urls (thumb/element) for image_row - to be returned
+ * in a standard way by different web service methods
+ */
+function ws_std_get_urls($image_row)
+{
+  $ret = array();
+
+  $ret['page_url'] = make_picture_url( array(
+            'image_id' => $image_row['id'],
+            'image_file' => $image_row['file'],
+          )
+        );
+
+  $src_image = new SrcImage($image_row);
+
+  if ( $src_image->is_original() )
+  {// we have a photo
+    global $user;
+    if ($user['enabled_high'])
+    {
+      $ret['element_url'] = $src_image->get_url();
+    }
+  }
+  else
+  {
+    $ret['element_url'] = get_element_url($image_row);
+  }
+
+  $derivatives = DerivativeImage::get_all($src_image);
+  $derivatives_arr = array();
+  foreach($derivatives as $type=>$derivative)
+  {
+    $size = $derivative->get_size();
+    $size != null or $size=array(null,null);
+    $derivatives_arr[$type] = array('url' => $derivative->get_url(), 'width'=>$size[0], 'height'=>$size[1] );
+  }
+  $ret['derivatives'] = $derivatives_arr;;
+  return $ret;
+}
+
+/**
+ * returns an array of image attributes that are to be encoded as xml attributes
+ * instead of xml elements
+ */
+function ws_std_get_image_xml_attributes()
+{
+  return array(
+    'id','element_url', 'page_url', 'file','width','height','hit','date_available','date_creation'
+    );
+}
+
+function ws_std_get_category_xml_attributes()
+{
+  return array(
+    'id', 'url', 'nb_images', 'total_nb_images', 'nb_categories', 'date_last', 'max_date_last',
+    );
+}
+
+function ws_std_get_tag_xml_attributes()
+{
+  return array(
+    'id', 'name', 'url_name', 'counter', 'url', 'page_url',
+    );
+}
+
+/**
+ * Writes info to the log file
+ */
+function ws_logfile($string)
+{
+  global $conf;
+
+  if (!$conf['ws_enable_log'])
+  {
+    return true;
+  }
+
+  file_put_contents(
+    $conf['ws_log_filepath'],
+    '['.date('c').'] '.$string."\n",
+    FILE_APPEND
+    );
+}
+
+/**
+ * create a tree from a flat list of categories, no recursivity for high speed
+ */
+function categories_flatlist_to_tree($categories)
+{
+  $tree = array();
+  $key_of_cat = array();
+
+  foreach ($categories as $key => &$node)
+  {
+    $key_of_cat[$node['id']] = $key;
+
+    if (!isset($node['id_uppercat']))
+    {
+      $tree[] = &$node;
+    }
+    else
+    {
+      if (!isset($categories[ $key_of_cat[ $node['id_uppercat'] ] ]['sub_categories']))
+      {
+        $categories[ $key_of_cat[ $node['id_uppercat'] ] ]['sub_categories'] =
+          new PwgNamedArray(array(), 'category', ws_std_get_category_xml_attributes());
+      }
+
+      $categories[ $key_of_cat[ $node['id_uppercat'] ] ]['sub_categories']->_content[] = &$node;
+    }
+  }
+
+  return $tree;
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/index.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/index.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.categories.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.categories.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.categories.php	(revision 25596)
@@ -0,0 +1,838 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns images per category
+ * @param mixed[] $params
+ *    @option int[] cat_id (optional)
+ *    @option bool recursive
+ *    @option int per_page
+ *    @option int page
+ *    @option string order (optional)
+ */
+function ws_categories_getImages($params, &$service)
+{
+  global $user, $conf;
+
+  $images = array();
+
+  //------------------------------------------------- get the related categories
+  $where_clauses = array();
+  foreach ($params['cat_id'] as $cat_id)
+  {
+    if ($params['recursive'])
+    {
+      $where_clauses[] = 'uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$cat_id.'(,|$)\'';
+    }
+    else
+    {
+      $where_clauses[] = 'id='.$cat_id;
+    }
+  }
+  if (!empty($where_clauses))
+  {
+    $where_clauses = array('('. implode("\n    OR ", $where_clauses) . ')');
+  }
+  $where_clauses[] = get_sql_condition_FandF(
+    array('forbidden_categories' => 'id'),
+    null, true
+    );
+
+  $query = '
+SELECT id, name, permalink, image_order
+  FROM '. CATEGORIES_TABLE .'
+  WHERE '. implode("\n    AND ", $where_clauses) .'
+;';
+  $result = pwg_query($query);
+
+  $cats = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['id'] = (int)$row['id'];
+    $cats[ $row['id'] ] = $row;
+  }
+
+  //-------------------------------------------------------- get the images
+  if (!empty($cats))
+  {
+    $where_clauses = ws_std_image_sql_filter($params, 'i.');
+    $where_clauses[] = 'category_id IN ('. implode(',', array_keys($cats)) .')';
+    $where_clauses[] = get_sql_condition_FandF(
+      array('visible_images' => 'i.id'),
+      null, true
+      );
+
+    $order_by = ws_std_image_sql_order($params, 'i.');
+    if ( empty($order_by)
+          and count($params['cat_id'])==1
+          and isset($cats[ $params['cat_id'][0] ]['image_order'])
+        )
+    {
+      $order_by = $cats[ $params['cat_id'][0] ]['image_order'];
+    }
+    $order_by = empty($order_by) ? $conf['order_by'] : 'ORDER BY '.$order_by;
+
+    $query = '
+SELECT i.*, GROUP_CONCAT(category_id) AS cat_ids
+  FROM '. IMAGES_TABLE .' i
+    INNER JOIN '. IMAGE_CATEGORY_TABLE .' ON i.id=image_id
+  WHERE '. implode("\n    AND ", $where_clauses) .'
+  GROUP BY i.id
+  '. $order_by .'
+  LIMIT '. $params['per_page'] .'
+  OFFSET '. ($params['per_page']*$params['page']) .'
+;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $image = array();
+      foreach (array('id', 'width', 'height', 'hit') as $k)
+      {
+        if (isset($row[$k]))
+        {
+          $image[$k] = (int)$row[$k];
+        }
+      }
+      foreach (array('file', 'name', 'comment', 'date_creation', 'date_available') as $k)
+      {
+        $image[$k] = $row[$k];
+      }
+      $image = array_merge($image, ws_std_get_urls($row));
+
+      $image_cats = array();
+      foreach (explode(',', $row['cat_ids']) as $cat_id)
+      {
+        $url = make_index_url(
+          array(
+            'category' => $cats[$cat_id],
+            )
+          );
+        $page_url = make_picture_url(
+          array(
+            'category' => $cats[$cat_id],
+            'image_id' => $row['id'],
+            'image_file' => $row['file'],
+            )
+          );
+        $image_cats[] = array(
+          'id' => (int)$cat_id,
+          'url' => $url,
+          'page_url' => $page_url,
+          );
+      }
+
+      $image['categories'] = new PwgNamedArray(
+        $image_cats,
+        'category',
+        array('id', 'url', 'page_url')
+        );
+      $images[] = $image;
+    }
+  }
+
+  return array(
+    'paging' => new PwgNamedStruct(
+      array(
+        'page' => $params['page'],
+        'per_page' => $params['per_page'],
+        'count' => count($images)
+        )
+      ),
+    'images' => new PwgNamedArray(
+      $images, 'image',
+      ws_std_get_image_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Returns a list of categories
+ * @param mixed[] $params
+ *    @option int cat_id (optional)
+ *    @option bool recursive
+ *    @option bool public
+ *    @option bool tree_output
+ *    @option bool fullname
+ */
+function ws_categories_getList($params, &$service)
+{
+  global $user, $conf;
+
+  $where = array('1=1');
+  $join_type = 'INNER';
+  $join_user = $user['id'];
+
+  if (!$params['recursive'])
+  {
+    if ($params['cat_id']>0)
+    {
+      $where[] = '(
+        id_uppercat = '. (int)($params['cat_id']) .'
+        OR id='.(int)($params['cat_id']).'
+      )';
+    }
+    else
+    {
+      $where[] = 'id_uppercat IS NULL';
+    }
+  }
+  else if ($params['cat_id']>0)
+  {
+    $where[] = 'uppercats '. DB_REGEX_OPERATOR .' \'(^|,)'.
+      (int)($params['cat_id']) .'(,|$)\'';
+  }
+
+  if ($params['public'])
+  {
+    $where[] = 'status = "public"';
+    $where[] = 'visible = "true"';
+
+    $join_user = $conf['guest_id'];
+  }
+  else if (is_admin())
+  {
+    // in this very specific case, we don't want to hide empty
+    // categories. Function calculate_permissions will only return
+    // categories that are either locked or private and not permitted
+    //
+    // calculate_permissions does not consider empty categories as forbidden
+    $forbidden_categories = calculate_permissions($user['id'], $user['status']);
+    $where[]= 'id NOT IN ('.$forbidden_categories.')';
+    $join_type = 'LEFT';
+  }
+
+  $query = '
+SELECT
+    id, name, comment, permalink,
+    uppercats, global_rank, id_uppercat,
+    nb_images, count_images AS total_nb_images,
+    representative_picture_id, user_representative_picture_id, count_images, count_categories,
+    date_last, max_date_last, count_categories AS nb_categories
+  FROM '. CATEGORIES_TABLE .'
+    '.$join_type.' JOIN '. USER_CACHE_CATEGORIES_TABLE .'
+    ON id=cat_id AND user_id='.$join_user.'
+  WHERE '. implode("\n    AND ", $where) .'
+;';
+  $result = pwg_query($query);
+
+  // management of the album thumbnail -- starts here
+  $image_ids = array();
+  $categories = array();
+  $user_representative_updates_for = array();
+  // management of the album thumbnail -- stops here
+
+  $cats = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['url'] = make_index_url(
+      array(
+        'category' => $row
+        )
+      );
+    foreach (array('id','nb_images','total_nb_images','nb_categories') as $key)
+    {
+      $row[$key] = (int)$row[$key];
+    }
+
+    if ($params['fullname'])
+    {
+      $row['name'] = strip_tags(get_cat_display_name_cache($row['uppercats'], null));
+    }
+    else
+    {
+      $row['name'] = strip_tags(
+        trigger_event(
+          'render_category_name',
+          $row['name'],
+          'ws_categories_getList'
+          )
+        );
+    }
+
+    $row['comment'] = strip_tags(
+      trigger_event(
+        'render_category_description',
+        $row['comment'],
+        'ws_categories_getList'
+        )
+      );
+
+    // management of the album thumbnail -- starts here
+    //
+    // on branch 2.3, the algorithm is duplicated from
+    // include/category_cats, but we should use a common code for Piwigo 2.4
+    //
+    // warning : if the API method is called with $params['public'], the
+    // album thumbnail may be not accurate. The thumbnail can be viewed by
+    // the connected user, but maybe not by the guest. Changing the
+    // filtering method would be too complicated for now. We will simply
+    // avoid to persist the user_representative_picture_id in the database
+    // if $params['public']
+    if (!empty($row['user_representative_picture_id']))
+    {
+      $image_id = $row['user_representative_picture_id'];
+    }
+    else if (!empty($row['representative_picture_id']))
+    { // if a representative picture is set, it has priority
+      $image_id = $row['representative_picture_id'];
+    }
+    else if ($conf['allow_random_representative'])
+    {
+      // searching a random representant among elements in sub-categories
+      $image_id = get_random_image_in_category($row);
+    }
+    else
+    { // searching a random representant among representant of sub-categories
+      if ($row['count_categories']>0 and $row['count_images']>0)
+      {
+        $query = '
+SELECT representative_picture_id
+  FROM '. CATEGORIES_TABLE .'
+    INNER JOIN '. USER_CACHE_CATEGORIES_TABLE .'
+    ON id=cat_id AND user_id='.$user['id'].'
+  WHERE uppercats LIKE \''.$row['uppercats'].',%\'
+    AND representative_picture_id IS NOT NULL
+        '.get_sql_condition_FandF(
+          array('visible_categories' => 'id'),
+          "\n  AND"
+          ).'
+  ORDER BY '. DB_RANDOM_FUNCTION .'()
+  LIMIT 1
+;';
+        $subresult = pwg_query($query);
+
+        if (pwg_db_num_rows($subresult) > 0)
+        {
+          list($image_id) = pwg_db_fetch_row($subresult);
+        }
+      }
+    }
+
+    if (isset($image_id))
+    {
+      if ($conf['representative_cache_on_subcats'] and $row['user_representative_picture_id'] != $image_id)
+      {
+        $user_representative_updates_for[ $row['id'] ] = $image_id;
+      }
+
+      $row['representative_picture_id'] = $image_id;
+      $image_ids[] = $image_id;
+      $categories[] = $row;
+    }
+    unset($image_id);
+    // management of the album thumbnail -- stops here
+
+    $cats[] = $row;
+  }
+  usort($cats, 'global_rank_compare');
+
+  // management of the album thumbnail -- starts here
+  if (count($categories) > 0)
+  {
+    $thumbnail_src_of = array();
+    $new_image_ids = array();
+
+    $query = '
+SELECT id, path, representative_ext, level
+  FROM '. IMAGES_TABLE .'
+  WHERE id IN ('. implode(',', $image_ids) .')
+;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      if ($row['level'] <= $user['level'])
+      {
+        $thumbnail_src_of[$row['id']] = DerivativeImage::thumb_url($row);
+      }
+      else
+      {
+        // problem: we must not display the thumbnail of a photo which has a
+        // higher privacy level than user privacy level
+        //
+        // * what is the represented category?
+        // * find a random photo matching user permissions
+        // * register it at user_representative_picture_id
+        // * set it as the representative_picture_id for the category
+        foreach ($categories as &$category)
+        {
+          if ($row['id'] == $category['representative_picture_id'])
+          {
+            // searching a random representant among elements in sub-categories
+            $image_id = get_random_image_in_category($category);
+
+            if (isset($image_id) and !in_array($image_id, $image_ids))
+            {
+              $new_image_ids[] = $image_id;
+            }
+            if ($conf['representative_cache_on_level'])
+            {
+              $user_representative_updates_for[ $category['id'] ] = $image_id;
+            }
+
+            $category['representative_picture_id'] = $image_id;
+          }
+        }
+        unset($category);
+      }
+    }
+
+    if (count($new_image_ids) > 0)
+    {
+      $query = '
+SELECT id, path, representative_ext
+  FROM '. IMAGES_TABLE .'
+  WHERE id IN ('. implode(',', $new_image_ids) .')
+;';
+      $result = pwg_query($query);
+
+      while ($row = pwg_db_fetch_assoc($result))
+      {
+        $thumbnail_src_of[ $row['id'] ] = DerivativeImage::thumb_url($row);
+      }
+    }
+  }
+
+  // compared to code in include/category_cats, we only persist the new
+  // user_representative if we have used $user['id'] and not the guest id,
+  // or else the real guest may see thumbnail that he should not
+  if (!$params['public'] and count($user_representative_updates_for))
+  {
+    $updates = array();
+
+    foreach ($user_representative_updates_for as $cat_id => $image_id)
+    {
+      $updates[] = array(
+        'user_id' => $user['id'],
+        'cat_id' => $cat_id,
+        'user_representative_picture_id' => $image_id,
+        );
+    }
+
+    mass_updates(
+      USER_CACHE_CATEGORIES_TABLE,
+      array(
+        'primary' => array('user_id', 'cat_id'),
+        'update'  => array('user_representative_picture_id')
+        ),
+      $updates
+      );
+  }
+
+  foreach ($cats as &$cat)
+  {
+    foreach ($categories as $category)
+    {
+      if ($category['id'] == $cat['id'] and isset($category['representative_picture_id']))
+      {
+        $cat['tn_url'] = $thumbnail_src_of[$category['representative_picture_id']];
+      }
+    }
+    // we don't want them in the output
+    unset($cat['user_representative_picture_id'], $cat['count_images'], $cat['count_categories']);
+  }
+  unset($cat);
+  // management of the album thumbnail -- stops here
+
+  if ($params['tree_output'])
+  {
+    $cats = categories_flatlist_to_tree($cats);
+  }
+
+  return array(
+    'categories' => new PwgNamedArray(
+      $cats,
+      'category',
+      ws_std_get_category_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Returns the list of categories as you can see them in administration
+ * @param mixed[] $params
+ *
+ * Only admin can run this method and permissions are not taken into
+ * account.
+ */
+function ws_categories_getAdminList($params, &$service)
+{
+  $query = '
+SELECT category_id, COUNT(*) AS counter
+  FROM '. IMAGE_CATEGORY_TABLE .'
+  GROUP BY category_id
+;';
+  $nb_images_of = simple_hash_from_query($query, 'category_id', 'counter');
+
+  $query = '
+SELECT id, name, comment, uppercats, global_rank
+  FROM '. CATEGORIES_TABLE .'
+;';
+  $result = pwg_query($query);
+
+  $cats = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $id = $row['id'];
+    $row['nb_images'] = isset($nb_images_of[$id]) ? $nb_images_of[$id] : 0;
+
+    $row['name'] = strip_tags(
+      trigger_event(
+        'render_category_name',
+        $row['name'],
+        'ws_categories_getAdminList'
+        )
+      );
+    $row['comment'] = strip_tags(
+      trigger_event(
+        'render_category_description',
+        $row['comment'],
+        'ws_categories_getAdminList'
+        )
+      );
+
+    $cats[] = $row;
+  }
+
+  usort($cats, 'global_rank_compare');
+  return array(
+    'categories' => new PwgNamedArray(
+      $cats,
+      'category',
+      array('id', 'nb_images', 'name', 'uppercats', 'global_rank')
+      )
+    );
+}
+
+/**
+ * API method
+ * Adds a category
+ * @param mixed[] $params
+ *    @option string name
+ *    @option int parent (optional)
+ *    @option string comment (optional)
+ *    @option bool visible
+ *    @option string status (optional)
+ *    @option bool commentable
+ */
+function ws_categories_add($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $options = array();
+  if (!empty($params['status']) and in_array($params['status'], array('private','public')))
+  {
+    $options['status'] = $params['status'];
+  }
+
+  if (!empty($params['comment']))
+  {
+    $options['comment'] = $params['comment'];
+  }
+
+  $creation_output = create_virtual_category(
+    $params['name'],
+    $params['parent'],
+    $options
+    );
+
+  if (isset($creation_output['error']))
+  {
+    return new PwgError(500, $creation_output['error']);
+  }
+
+  invalidate_user_cache();
+
+  return $creation_output;
+}
+
+/**
+ * API method
+ * Sets details of a category
+ * @param mixed[] $params
+ *    @option int cat_id
+ *    @option string name (optional)
+ *    @option string comment (optional)
+ */
+function ws_categories_setInfo($params, &$service)
+{
+  $update = array(
+    'id' => $params['category_id'],
+    );
+
+  $info_columns = array('name', 'comment',);
+
+  $perform_update = false;
+  foreach ($info_columns as $key)
+  {
+    if (isset($params[$key]))
+    {
+      $perform_update = true;
+      $update[$key] = $params[$key];
+    }
+  }
+
+  if ($perform_update)
+  {
+    single_update(
+      CATEGORIES_TABLE,
+      $update,
+      array('id' => $update['id'])
+      );
+  }
+}
+
+/**
+ * API method
+ * Sets representative image of a category
+ * @param mixed[] $params
+ *    @option int category_id
+ *    @option int image_id
+ */
+function ws_categories_setRepresentative($params, &$service)
+{
+  // does the category really exist?
+  $query = '
+SELECT COUNT(*)
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id = '. $params['category_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(404, 'category_id not found');
+  }
+
+  // does the image really exist?
+  $query = '
+SELECT COUNT(*)
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(404, 'image_id not found');
+  }
+
+  // apply change
+  $query = '
+UPDATE '. CATEGORIES_TABLE .'
+  SET representative_picture_id = '. $params['image_id'] .'
+  WHERE id = '. $params['category_id'] .'
+;';
+  pwg_query($query);
+
+  $query = '
+UPDATE '. USER_CACHE_CATEGORIES_TABLE .'
+  SET user_representative_picture_id = NULL
+  WHERE cat_id = '. $params['category_id'] .'
+;';
+  pwg_query($query);
+}
+
+/**
+ * API method
+ * Deletes a category
+ * @param mixed[] $params
+ *    @option string|int[] category_id
+ *    @option string photo_deletion_mode
+ *    @option string pwg_token
+ */
+function ws_categories_delete($params, &$service)
+{
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  $modes = array('no_delete', 'delete_orphans', 'force_delete');
+  if (!in_array($params['photo_deletion_mode'], $modes))
+  {
+    return new PwgError(500,
+      '[ws_categories_delete]'
+      .' invalid parameter photo_deletion_mode "'.$params['photo_deletion_mode'].'"'
+      .', possible values are {'.implode(', ', $modes).'}.'
+      );
+  }
+
+  if (!is_array($params['category_id']))
+  {
+    $params['category_id'] = preg_split(
+      '/[\s,;\|]/',
+      $params['category_id'],
+      -1,
+      PREG_SPLIT_NO_EMPTY
+      );
+  }
+  $params['category_id'] = array_map('intval', $params['category_id']);
+
+  $category_ids = array();
+  foreach ($params['category_id'] as $category_id)
+  {
+    if ($category_id > 0)
+    {
+      $category_ids[] = $category_id;
+    }
+  }
+
+  if (count($category_ids) == 0)
+  {
+    return;
+  }
+
+  $query = '
+SELECT id
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id IN ('. implode(',', $category_ids) .')
+;';
+  $category_ids = array_from_query($query, 'id');
+
+  if (count($category_ids) == 0)
+  {
+    return;
+  }
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  delete_categories($category_ids, $params['photo_deletion_mode']);
+  update_global_rank();
+}
+
+/**
+ * API method
+ * Moves a category
+ * @param mixed[] $params
+ *    @option string|int[] category_id
+ *    @option int parent
+ *    @option string pwg_token
+ */
+function ws_categories_move($params, &$service)
+{
+  global $page;
+
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  if (!is_array($params['category_id']))
+  {
+    $params['category_id'] = preg_split(
+      '/[\s,;\|]/',
+      $params['category_id'],
+      -1,
+      PREG_SPLIT_NO_EMPTY
+      );
+  }
+  $params['category_id'] = array_map('intval', $params['category_id']);
+
+  $category_ids = array();
+  foreach ($params['category_id'] as $category_id)
+  {
+    if ($category_id > 0)
+    {
+      $category_ids[] = $category_id;
+    }
+  }
+
+  if (count($category_ids) == 0)
+  {
+    return new PwgError(403, 'Invalid category_id input parameter, no category to move');
+  }
+
+  // we can't move physical categories
+  $categories_in_db = array();
+
+  $query = '
+SELECT id, name, dir
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id IN ('. implode(',', $category_ids) .')
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $categories_in_db[ $row['id'] ] = $row;
+
+    // we break on error at first physical category detected
+    if (!empty($row['dir']))
+    {
+      $row['name'] = strip_tags(
+        trigger_event(
+          'render_category_name',
+          $row['name'],
+          'ws_categories_move'
+          )
+        );
+
+      return new PwgError(403,
+        sprintf(
+          'Category %s (%u) is not a virtual category, you cannot move it',
+          $row['name'],
+          $row['id']
+          )
+        );
+    }
+  }
+
+  if (count($categories_in_db) != count($category_ids))
+  {
+    $unknown_category_ids = array_diff($category_ids, array_keys($categories_in_db));
+
+    return new PwgError(403,
+      sprintf(
+        'Category %u does not exist',
+        $unknown_category_ids[0]
+        )
+      );
+  }
+
+  // does this parent exists? This check should be made in the
+  // move_categories function, not here
+  // 0 as parent means "move categories at gallery root"
+  if (0 != $params['parent'])
+  {
+    $subcat_ids = get_subcat_ids(array($params['parent']));
+    if (count($subcat_ids) == 0)
+    {
+      return new PwgError(403, 'Unknown parent category id');
+    }
+  }
+
+  $page['infos'] = array();
+  $page['errors'] = array();
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  move_categories($category_ids, $params['parent']);
+  invalidate_user_cache();
+
+  if (count($page['errors']) != 0)
+  {
+    return new PwgError(403, implode('; ', $page['errors']));
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.extensions.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.extensions.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.extensions.php	(revision 25596)
@@ -0,0 +1,343 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns the list of all plugins
+ * @param mixed[] $params
+ */
+function ws_plugins_getList($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php');
+
+  $plugins = new plugins();
+  $plugins->sort_fs_plugins('name');
+  $plugin_list = array();
+
+  foreach ($plugins->fs_plugins as $plugin_id => $fs_plugin)
+  {
+    if (isset($plugins->db_plugins_by_id[$plugin_id]))
+    {
+      $state = $plugins->db_plugins_by_id[$plugin_id]['state'];
+    }
+    else
+    {
+      $state = 'uninstalled';
+    }
+
+    $plugin_list[] = array(
+      'id' => $plugin_id,
+      'name' => $fs_plugin['name'],
+      'version' => $fs_plugin['version'],
+      'state' => $state,
+      'description' => $fs_plugin['description'],
+      );
+  }
+
+  return $plugin_list;
+}
+
+/**
+ * API method
+ * Performs an action on a plugin
+ * @param mixed[] $params
+ *    @option string action
+ *    @option string plugin
+ *    @option string pwg_token
+ */
+function ws_plugins_performAction($params, &$service)
+{
+  global $template;
+
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  define('IN_ADMIN', true);
+  include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php');
+
+  $plugins = new plugins();
+  $errors = $plugins->perform_action($params['action'], $params['plugin']);
+
+  if (!empty($errors))
+  {
+    return new PwgError(500, $errors);
+  }
+  else
+  {
+    if (in_array($params['action'], array('activate', 'deactivate')))
+    {
+      $template->delete_compiled_templates();
+    }
+    return true;
+  }
+}
+
+/**
+ * API method
+ * Performs an action on a theme
+ * @param mixed[] $params
+ *    @option string action
+ *    @option string theme
+ *    @option string pwg_token
+ */
+function ws_themes_performAction($params, &$service)
+{
+  global $template;
+
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  define('IN_ADMIN', true);
+  include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+
+  $themes = new themes();
+  $errors = $themes->perform_action($params['action'], $params['theme']);
+
+  if (!empty($errors))
+  {
+    return new PwgError(500, $errors);
+  }
+  else
+  {
+    if (in_array($params['action'], array('activate', 'deactivate')))
+    {
+      $template->delete_compiled_templates();
+    }
+    return true;
+  }
+}
+
+/**
+ * API method
+ * Updates an extension
+ * @param mixed[] $params
+ *    @option string type
+ *    @option string id
+ *    @option string revision
+ *    @option string pwg_token
+ *    @option bool reactivate (optional - undocumented)
+ */
+function ws_extensions_update($params, &$service)
+{
+  if (!is_webmaster())
+  {
+    return new PwgError(401, l10n('Webmaster status is required.'));
+  }
+
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  if (!in_array($params['type'], array('plugins', 'themes', 'languages')))
+  {
+    return new PwgError(403, "invalid extension type");
+  }
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  include_once(PHPWG_ROOT_PATH.'admin/include/'.$params['type'].'.class.php');
+
+  $type = $params['type'];
+  $extension_id = $params['id'];
+  $revision = $params['revision'];
+
+  $extension = new $type();
+
+  if ($type == 'plugins')
+  {
+    if (
+      isset($extension->db_plugins_by_id[$extension_id])
+      and $extension->db_plugins_by_id[$extension_id]['state'] == 'active'
+      )
+    {
+      $extension->perform_action('deactivate', $extension_id);
+
+      redirect(PHPWG_ROOT_PATH
+        . 'ws.php'
+        . '?method=pwg.extensions.update'
+        . '&type=plugins'
+        . '&id=' . $extension_id
+        . '&revision=' . $revision
+        . '&reactivate=true'
+        . '&pwg_token=' . get_pwg_token()
+        . '&format=json'
+      );
+    }
+
+    $upgrade_status = $extension->extract_plugin_files('upgrade', $revision, $extension_id);
+    $extension_name = $extension->fs_plugins[$extension_id]['name'];
+
+    if (isset($params['reactivate']))
+    {
+      $extension->perform_action('activate', $extension_id);
+    }
+  }
+  else if ($type == 'themes')
+  {
+    $upgrade_status = $extension->extract_theme_files('upgrade', $revision, $extension_id);
+    $extension_name = $extension->fs_themes[$extension_id]['name'];
+  }
+  else if ($type == 'languages')
+  {
+    $upgrade_status = $extension->extract_language_files('upgrade', $revision, $extension_id);
+    $extension_name = $extension->fs_languages[$extension_id]['name'];
+  }
+
+  global $template;
+  $template->delete_compiled_templates();
+
+  switch ($upgrade_status)
+  {
+    case 'ok':
+      return l10n('%s has been successfully updated.', $extension_name);
+
+    case 'temp_path_error':
+      return new PwgError(null, l10n('Can\'t create temporary file.'));
+
+    case 'dl_archive_error':
+      return new PwgError(null, l10n('Can\'t download archive.'));
+
+    case 'archive_error':
+      return new PwgError(null, l10n('Can\'t read or extract archive.'));
+
+    default:
+      return new PwgError(null, l10n('An error occured during extraction (%s).', $upgrade_status));
+  }
+}
+
+/**
+ * API method
+ * Ignore an update
+ * @param mixed[] $params
+ *    @option string type (optional)
+ *    @option string id (optional)
+ *    @option bool reset
+ *    @option string pwg_token
+ */
+function ws_extensions_ignoreupdate($params, &$service)
+{
+  global $conf;
+
+  define('IN_ADMIN', true);
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  if (!is_webmaster())
+  {
+    return new PwgError(401, 'Access denied');
+  }
+
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  $conf['updates_ignored'] = unserialize($conf['updates_ignored']);
+
+  // Reset ignored extension
+  if ($params['reset'])
+  {
+    if (!empty($params['type']) and isset($conf['updates_ignored'][ $params['type'] ]))
+    {
+      $conf['updates_ignored'][$params['type']] = array();
+    }
+    else
+    {
+      $conf['updates_ignored'] = array(
+        'plugins'=>array(),
+        'themes'=>array(),
+        'languages'=>array()
+      );
+    }
+
+    conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored'])));
+    unset($_SESSION['extensions_need_update']);
+    return true;
+  }
+
+  if (empty($params['id']) or empty($params['type']) or !in_array($params['type'], array('plugins', 'themes', 'languages')))
+  {
+    return new PwgError(403, 'Invalid parameters');
+  }
+
+  // Add or remove extension from ignore list
+  if (!in_array($params['id'], $conf['updates_ignored'][ $params['type'] ]))
+  {
+    $conf['updates_ignored'][ $params['type'] ][] = $params['id'];
+  }
+
+  conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored'])));
+  unset($_SESSION['extensions_need_update']);
+  return true;
+}
+
+/**
+ * API method
+ * Checks for updates (core and extensions)
+ * @param mixed[] $params
+ */
+function ws_extensions_checkupdates($params, &$service)
+{
+  global $conf;
+
+  define('IN_ADMIN', true);
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php');
+
+  $update = new updates();
+  $result = array();
+
+  if (!isset($_SESSION['need_update']))
+  {
+    $update->check_piwigo_upgrade();
+  }
+
+  $result['piwigo_need_update'] = $_SESSION['need_update'];
+
+  $conf['updates_ignored'] = unserialize($conf['updates_ignored']);
+
+  if (!isset($_SESSION['extensions_need_update']))
+  {
+    $update->check_extensions();
+  }
+  else
+  {
+    $update->check_updated_extensions();
+  }
+
+  if (!is_array($_SESSION['extensions_need_update']))
+  {
+    $result['ext_need_update'] = null;
+  }
+  else
+  {
+    $result['ext_need_update'] = !empty($_SESSION['extensions_need_update']);
+  }
+
+  return $result;
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.groups.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.groups.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.groups.php	(revision 25596)
@@ -0,0 +1,284 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns the list of groups
+ * @param mixed[] $params
+ *    @option int[] group_id (optional)
+ *    @option string name (optional)
+ */
+function ws_groups_getList($params, &$service)
+{
+  $where_clauses = array('1=1');
+
+  if (!empty($params['name']))
+  {
+    $where_clauses[] = 'LOWER(name) LIKE \''. pwg_db_real_escape_string($params['name']) .'\'';
+  }
+
+  if (!empty($params['group_id']))
+  {
+    $where_clauses[] = 'id IN('. implode(',', $params['group_id']) .')';
+  }
+
+  $query = '
+SELECT
+    g.*, COUNT(user_id) AS nb_users
+  FROM '. GROUPS_TABLE .' AS g
+    LEFT JOIN '. USER_GROUP_TABLE .' AS ug
+    ON ug.group_id = g.id
+  WHERE '. implode(' AND ', $where_clauses) .'
+  GROUP BY id
+  ORDER BY '. $params['order'] .'
+  LIMIT '. $params['per_page'] .'
+  OFFSET '. ($params['per_page']*$params['page']) .'
+;';
+
+  $groups = array_from_query($query);
+
+  return array(
+    'paging' => new PwgNamedStruct(array(
+      'page' => $params['page'],
+      'per_page' => $params['per_page'],
+      'count' => count($groups)
+      )),
+    'groups' => new PwgNamedArray($groups, 'group')
+    );
+}
+
+/**
+ * API method
+ * Adds a group
+ * @param mixed[] $params
+ *    @option string name
+ *    @option bool is_default
+ */
+function ws_groups_add($params, &$service)
+{
+  $params['name'] = pwg_db_real_escape_string($params['name']);
+
+  // is the name not already used ?
+  $query = '
+SELECT COUNT(*)
+  FROM '.GROUPS_TABLE.'
+  WHERE name = \''.$params['name'].'\'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count != 0)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'This name is already used by another group.');
+  }
+
+  // creating the group
+  single_insert(
+    GROUPS_TABLE,
+    array(
+      'name' => $params['name'],
+      'is_default' => boolean_to_string($params['is_default']),
+      )
+    );
+
+  return $service->invoke('pwg.groups.getList', array('group_id' => pwg_db_insert_id()));
+}
+
+/**
+ * API method
+ * Deletes a group
+ * @param mixed[] $params
+ *    @option int[] group_id
+ *    @option string pwg_token
+ */
+function ws_groups_delete($params, &$service)
+{
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  $group_id_string = implode(',', $params['group_id']);
+
+  // destruction of the access linked to the group
+  $query = '
+DELETE
+  FROM '. GROUP_ACCESS_TABLE .'
+  WHERE group_id IN('. $group_id_string  .')
+;';
+  pwg_query($query);
+
+  // destruction of the users links for this group
+  $query = '
+DELETE
+  FROM '. USER_GROUP_TABLE .'
+  WHERE group_id IN('. $group_id_string  .')
+;';
+  pwg_query($query);
+
+  $query = '
+SELECT name
+  FROM '. GROUPS_TABLE .'
+  WHERE id IN('. $group_id_string  .')
+;';
+  $groupnames = array_from_query($query, 'name');
+
+  // destruction of the group
+  $query = '
+DELETE
+  FROM '. GROUPS_TABLE .'
+  WHERE id IN('. $group_id_string  .')
+;';
+  pwg_query($query);
+
+  return new PwgNamedArray($groupnames, 'group_deleted');
+}
+
+/**
+ * API method
+ * Updates a group
+ * @param mixed[] $params
+ *    @option int group_id
+ *    @option string name (optional)
+ *    @option bool is_default (optional)
+ */
+function ws_groups_setInfo($params, &$service)
+{
+  $updates = array();
+
+  // does the group exist ?
+  $query = '
+SELECT COUNT(*)
+  FROM '. GROUPS_TABLE .'
+  WHERE id = '. $params['group_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'This group does not exist.');
+  }
+
+  if (!empty($params['name']))
+  {
+    $params['name'] = pwg_db_real_escape_string($params['name']);
+
+    // is the name not already used ?
+    $query = '
+SELECT COUNT(*)
+  FROM '. GROUPS_TABLE .'
+  WHERE name = \''. $params['name'] .'\'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count != 0)
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'This name is already used by another group.');
+    }
+
+    $updates['name'] = $params['name'];
+  }
+
+  if (!empty($params['is_default']) or @$params['is_default']===false)
+  {
+    $updates['is_default'] = boolean_to_string($params['is_default']);
+  }
+
+  single_update(
+    GROUPS_TABLE,
+    $updates,
+    array('id' => $params['group_id'])
+    );
+
+  return $service->invoke('pwg.groups.getList', array('group_id' => $params['group_id']));
+}
+
+/**
+ * API method
+ * Adds user(s) to a group
+ * @param mixed[] $params
+ *    @option int group_id
+ *    @option int[] user_id
+ */
+function ws_groups_addUser($params, &$service)
+{
+  // does the group exist ?
+  $query = '
+SELECT COUNT(*)
+  FROM '. GROUPS_TABLE .'
+  WHERE id = '. $params['group_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'This group does not exist.');
+  }
+
+  $inserts = array();
+  foreach ($params['user_id'] as $user_id)
+  {
+    $inserts[] = array(
+      'group_id' => $params['group_id'],
+      'user_id' => $user_id,
+      );
+  }
+
+  mass_inserts(
+    USER_GROUP_TABLE,
+    array('group_id', 'user_id'),
+    $inserts,
+    array('ignore'=>true)
+    );
+
+  return $service->invoke('pwg.groups.getList', array('group_id' => $params['group_id']));
+}
+
+/**
+ * API method
+ * Removes user(s) from a group
+ * @param mixed[] $params
+ *    @option int group_id
+ *    @option int[] user_id
+ */
+function ws_groups_deleteUser($params, &$service)
+{
+  // does the group exist ?
+  $query = '
+SELECT COUNT(*)
+  FROM '. GROUPS_TABLE .'
+  WHERE id = '. $params['group_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'This group does not exist.');
+  }
+
+  $query = '
+DELETE FROM '. USER_GROUP_TABLE .'
+  WHERE
+    group_id = '. $params['group_id'] .'
+    AND user_id IN('. implode(',', $params['user_id']) .')
+;';
+  pwg_query($query);
+
+  return $service->invoke('pwg.groups.getList', array('group_id' => $params['group_id']));
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.images.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.images.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.images.php	(revision 25596)
@@ -0,0 +1,1582 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// | UTILITIES                                                             |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Sets associations of an image
+ * @param int $image_id
+ * @param string $categories_string - "cat_id[,rank];cat_id[,rank]"
+ * @param bool $replace_mode - removes old associations
+ */
+function ws_add_image_category_relations($image_id, $categories_string, $replace_mode=false)
+{
+  // let's add links between the image and the categories
+  //
+  // $params['categories'] should look like 123,12;456,auto;789 which means:
+  //
+  // 1. associate with category 123 on rank 12
+  // 2. associate with category 456 on automatic rank
+  // 3. associate with category 789 on automatic rank
+  $cat_ids = array();
+  $rank_on_category = array();
+  $search_current_ranks = false;
+
+  $tokens = explode(';', $categories_string);
+  foreach ($tokens as $token)
+  {
+    @list($cat_id, $rank) = explode(',', $token);
+
+    if (!preg_match('/^\d+$/', $cat_id))
+    {
+      continue;
+    }
+
+    $cat_ids[] = $cat_id;
+
+    if (!isset($rank))
+    {
+      $rank = 'auto';
+    }
+    $rank_on_category[$cat_id] = $rank;
+
+    if ($rank == 'auto')
+    {
+      $search_current_ranks = true;
+    }
+  }
+
+  $cat_ids = array_unique($cat_ids);
+
+  if (count($cat_ids) == 0)
+  {
+    return new PwgError(500,
+      '[ws_add_image_category_relations] there is no category defined in "'.$categories_string.'"'
+      );
+  }
+
+  $query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',', $cat_ids).')
+;';
+  $db_cat_ids = array_from_query($query, 'id');
+
+  $unknown_cat_ids = array_diff($cat_ids, $db_cat_ids);
+  if (count($unknown_cat_ids) != 0)
+  {
+    return new PwgError(500,
+      '[ws_add_image_category_relations] the following categories are unknown: '.implode(', ', $unknown_cat_ids)
+      );
+  }
+
+  $to_update_cat_ids = array();
+
+  // in case of replace mode, we first check the existing associations
+  $query = '
+SELECT category_id
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id = '.$image_id.'
+;';
+  $existing_cat_ids = array_from_query($query, 'category_id');
+
+  if ($replace_mode)
+  {
+    $to_remove_cat_ids = array_diff($existing_cat_ids, $cat_ids);
+    if (count($to_remove_cat_ids) > 0)
+    {
+      $query = '
+DELETE
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE image_id = '.$image_id.'
+    AND category_id IN ('.implode(', ', $to_remove_cat_ids).')
+;';
+      pwg_query($query);
+      update_category($to_remove_cat_ids);
+    }
+  }
+
+  $new_cat_ids = array_diff($cat_ids, $existing_cat_ids);
+  if (count($new_cat_ids) == 0)
+  {
+    return true;
+  }
+
+  if ($search_current_ranks)
+  {
+    $query = '
+SELECT category_id, MAX(rank) AS max_rank
+  FROM '.IMAGE_CATEGORY_TABLE.'
+  WHERE rank IS NOT NULL
+    AND category_id IN ('.implode(',', $new_cat_ids).')
+  GROUP BY category_id
+;';
+    $current_rank_of = simple_hash_from_query(
+      $query,
+      'category_id',
+      'max_rank'
+      );
+
+    foreach ($new_cat_ids as $cat_id)
+    {
+      if (!isset($current_rank_of[$cat_id]))
+      {
+        $current_rank_of[$cat_id] = 0;
+      }
+
+      if ('auto' == $rank_on_category[$cat_id])
+      {
+        $rank_on_category[$cat_id] = $current_rank_of[$cat_id] + 1;
+      }
+    }
+  }
+
+  $inserts = array();
+
+  foreach ($new_cat_ids as $cat_id)
+  {
+    $inserts[] = array(
+      'image_id' => $image_id,
+      'category_id' => $cat_id,
+      'rank' => $rank_on_category[$cat_id],
+      );
+  }
+
+  mass_inserts(
+    IMAGE_CATEGORY_TABLE,
+    array_keys($inserts[0]),
+    $inserts
+    );
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  update_category($new_cat_ids);
+}
+
+/**
+ * Merge chunks added by pwg.images.addChunk
+ * @param string $output_filepath
+ * @param string $original_sum
+ * @param string $type
+ */
+function merge_chunks($output_filepath, $original_sum, $type)
+{
+  global $conf;
+
+  ws_logfile('[merge_chunks] input parameter $output_filepath : '.$output_filepath);
+
+  if (is_file($output_filepath))
+  {
+    unlink($output_filepath);
+
+    if (is_file($output_filepath))
+    {
+      return new PwgError(500, '[merge_chunks] error while trying to remove existing '.$output_filepath);
+    }
+  }
+
+  $upload_dir = $conf['upload_dir'].'/buffer';
+  $pattern = '/'.$original_sum.'-'.$type.'/';
+  $chunks = array();
+
+  if ($handle = opendir($upload_dir))
+  {
+    while (false !== ($file = readdir($handle)))
+    {
+      if (preg_match($pattern, $file))
+      {
+        ws_logfile($file);
+        $chunks[] = $upload_dir.'/'.$file;
+      }
+    }
+    closedir($handle);
+  }
+
+  sort($chunks);
+
+  if (function_exists('memory_get_usage')) {
+    ws_logfile('[merge_chunks] memory_get_usage before loading chunks: '.memory_get_usage());
+  }
+
+  $i = 0;
+
+  foreach ($chunks as $chunk)
+  {
+    $string = file_get_contents($chunk);
+
+    if (function_exists('memory_get_usage')) {
+      ws_logfile('[merge_chunks] memory_get_usage on chunk '.++$i.': '.memory_get_usage());
+    }
+
+    if (!file_put_contents($output_filepath, $string, FILE_APPEND))
+    {
+      return new PwgError(500, '[merge_chunks] error while writting chunks for '.$output_filepath);
+    }
+
+    unlink($chunk);
+  }
+
+  if (function_exists('memory_get_usage')) {
+    ws_logfile('[merge_chunks] memory_get_usage after loading chunks: '.memory_get_usage());
+  }
+}
+
+/**
+ * Deletes chunks added with pwg.images.addChunk
+ * @param string $original_sum
+ * @param string $type
+ *
+ * Function introduced for Piwigo 2.4 and the new "multiple size"
+ * (derivatives) feature. As we only need the biggest sent photo as
+ * "original", we remove chunks for smaller sizes. We can't make it earlier
+ * in ws_images_add_chunk because at this moment we don't know which $type
+ * will be the biggest (we could remove the thumb, but let's use the same
+ * algorithm)
+ */
+function remove_chunks($original_sum, $type)
+{
+  global $conf;
+
+  $upload_dir = $conf['upload_dir'].'/buffer';
+  $pattern = '/'.$original_sum.'-'.$type.'/';
+  $chunks = array();
+
+  if ($handle = opendir($upload_dir))
+  {
+    while (false !== ($file = readdir($handle)))
+    {
+      if (preg_match($pattern, $file))
+      {
+        $chunks[] = $upload_dir.'/'.$file;
+      }
+    }
+    closedir($handle);
+  }
+
+  foreach ($chunks as $chunk)
+  {
+    unlink($chunk);
+  }
+}
+
+
+// +-----------------------------------------------------------------------+
+// | METHODS                                                               |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Adds a comment to an image
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option string author
+ *    @option string content
+ *    @option string key
+ */
+function ws_images_addComment($params, &$service)
+{
+  $query = '
+SELECT DISTINCT image_id
+  FROM '. IMAGE_CATEGORY_TABLE .'
+      INNER JOIN '.CATEGORIES_TABLE.' ON category_id=id
+  WHERE commentable="true"
+    AND image_id='.$params['image_id'].
+    get_sql_condition_FandF(
+      array(
+        'forbidden_categories' => 'id',
+        'visible_categories' => 'id',
+        'visible_images' => 'image_id'
+        ),
+      ' AND'
+      ).'
+;';
+
+  if (!pwg_db_num_rows(pwg_query($query)))
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid image_id');
+  }
+
+  $comm = array(
+    'author' => trim($params['author']),
+    'content' => trim($params['content']),
+    'image_id' => $params['image_id'],
+   );
+
+  include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+
+  $comment_action = insert_user_comment($comm, $params['key'], $infos);
+
+  switch ($comment_action)
+  {
+    case 'reject':
+      $infos[] = l10n('Your comment has NOT been registered because it did not pass the validation rules');
+      return new PwgError(403, implode("; ", $infos) );
+
+    case 'validate':
+    case 'moderate':
+      $ret = array(
+        'id' => $comm['id'],
+        'validation' => $comment_action=='validate',
+        );
+      return array('comment' => new PwgNamedStruct($ret));
+
+    default:
+      return new PwgError(500, "Unknown comment action ".$comment_action );
+  }
+}
+
+/**
+ * API method
+ * Returns detailed information for an element
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option int comments_page
+ *    @option int comments_per_page
+ */
+function ws_images_getInfo($params, &$service)
+{
+  global $user, $conf;
+
+  $query='
+SELECT *
+  FROM '. IMAGES_TABLE .'
+  WHERE id='. $params['image_id'] .
+    get_sql_condition_FandF(
+      array('visible_images' => 'id'),
+      ' AND'
+      ).'
+LIMIT 1
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return new PwgError(404, 'image_id not found');
+  }
+
+  $image_row = pwg_db_fetch_assoc($result);
+  $image_row = array_merge($image_row, ws_std_get_urls($image_row));
+
+  //-------------------------------------------------------- related categories
+  $query = '
+SELECT id, name, permalink, uppercats, global_rank, commentable
+  FROM '. IMAGE_CATEGORY_TABLE .'
+    INNER JOIN '. CATEGORIES_TABLE .' ON category_id = id
+  WHERE image_id = '. $image_row['id'] .
+    get_sql_condition_FandF(
+      array('forbidden_categories' => 'category_id'),
+      ' AND'
+      ).'
+;';
+  $result = pwg_query($query);
+
+  $is_commentable = false;
+  $related_categories = array();
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['commentable']=='true')
+    {
+      $is_commentable = true;
+    }
+    unset($row['commentable']);
+
+    $row['url'] = make_index_url(
+      array(
+        'category' => $row
+        )
+      );
+
+    $row['page_url'] = make_picture_url(
+      array(
+        'image_id' => $image_row['id'],
+        'image_file' => $image_row['file'],
+        'category' => $row
+        )
+      );
+
+    $row['id']=(int)$row['id'];
+    $related_categories[] = $row;
+  }
+  usort($related_categories, 'global_rank_compare');
+
+  if (empty($related_categories))
+  {
+    return new PwgError(401, 'Access denied');
+  }
+
+  //-------------------------------------------------------------- related tags
+  $related_tags = get_common_tags(array($image_row['id']), -1);
+  foreach ($related_tags as $i=>$tag)
+  {
+    $tag['url'] = make_index_url(
+      array(
+        'tags' => array($tag)
+        )
+      );
+    $tag['page_url'] = make_picture_url(
+      array(
+        'image_id' => $image_row['id'],
+        'image_file' => $image_row['file'],
+        'tags' => array($tag),
+        )
+      );
+
+    unset($tag['counter']);
+    $tag['id'] = (int)$tag['id'];
+    $related_tags[$i] = $tag;
+  }
+
+  //------------------------------------------------------------- related rates
+	$rating = array(
+    'score' => $image_row['rating_score'],
+    'count' => 0,
+    'average' => null,
+    );
+	if (isset($rating['score']))
+	{
+		$query = '
+SELECT COUNT(rate) AS count, ROUND(AVG(rate),2) AS average
+  FROM '. RATE_TABLE .'
+  WHERE element_id = '. $image_row['id'] .'
+;';
+		$row = pwg_db_fetch_assoc(pwg_query($query));
+
+		$rating['score'] = (float)$rating['score'];
+		$rating['average'] = (float)$row['average'];
+		$rating['count'] = (int)$row['count'];
+	}
+
+  //---------------------------------------------------------- related comments
+  $related_comments = array();
+
+  $where_comments = 'image_id = '.$image_row['id'];
+  if (!is_admin())
+  {
+    $where_comments .= ' AND validated="true"';
+  }
+
+  $query = '
+SELECT COUNT(id) AS nb_comments
+  FROM '. COMMENTS_TABLE .'
+  WHERE '. $where_comments .'
+;';
+  list($nb_comments) = array_from_query($query, 'nb_comments');
+  $nb_comments = (int)$nb_comments;
+
+  if ($nb_comments>0 and $params['comments_per_page']>0)
+  {
+    $query = '
+SELECT id, date, author, content
+  FROM '. COMMENTS_TABLE .'
+  WHERE '. $where_comments .'
+  ORDER BY date
+  LIMIT '. (int)$params['comments_per_page'] .'
+  OFFSET '. (int)($params['comments_per_page']*$params['comments_page']) .'
+;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $row['id'] = (int)$row['id'];
+      $related_comments[] = $row;
+    }
+  }
+
+  $comment_post_data = null;
+  if ($is_commentable and
+      (!is_a_guest()
+        or (is_a_guest() and $conf['comments_forall'] )
+      )
+    )
+  {
+    $comment_post_data['author'] = stripslashes($user['username']);
+    $comment_post_data['key'] = get_ephemeral_key(2, $params['image_id']);
+  }
+
+  $ret = $image_row;
+  foreach (array('id','width','height','hit','filesize') as $k)
+  {
+    if (isset($ret[$k]))
+    {
+      $ret[$k] = (int)$ret[$k];
+    }
+  }
+  foreach (array('path', 'storage_category_id') as $k)
+  {
+    unset($ret[$k]);
+  }
+
+  $ret['rates'] = array(
+    WS_XML_ATTRIBUTES => $rating
+    );
+  $ret['categories'] = new PwgNamedArray(
+    $related_categories,
+    'category',
+    array('id','url', 'page_url')
+    );
+  $ret['tags'] = new PwgNamedArray(
+    $related_tags,
+    'tag',
+    ws_std_get_tag_xml_attributes()
+    );
+  if (isset($comment_post_data))
+  {
+    $ret['comment_post'] = array(
+      WS_XML_ATTRIBUTES => $comment_post_data
+      );
+  }
+  $ret['comments_paging'] = new PwgNamedStruct(
+    array(
+      'page' => $params['comments_page'],
+      'per_page' => $params['comments_per_page'],
+      'count' => count($related_comments),
+      'total_count' => $nb_comments,
+      )
+    );
+  $ret['comments'] = new PwgNamedArray(
+    $related_comments,
+    'comment',
+    array('id','date')
+    );
+
+  if ($service->_responseFormat != 'rest')
+  {
+    return $ret; // for backward compatibility only
+  }
+  else
+  {
+    return array(
+      'image' => new PwgNamedStruct($ret, null, array('name','comment'))
+      );
+  }
+}
+
+/**
+ * API method
+ * Rates an image
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option float rate
+ */
+function ws_images_rate($params, &$service)
+{
+  $query = '
+SELECT DISTINCT id
+  FROM '. IMAGES_TABLE .'
+    INNER JOIN '. IMAGE_CATEGORY_TABLE .' ON id=image_id
+  WHERE id='. $params['image_id']
+    .get_sql_condition_FandF(
+      array(
+        'forbidden_categories' => 'category_id',
+        'forbidden_images' => 'id',
+        ),
+      '    AND'
+      ).'
+  LIMIT 1
+;';
+  if (pwg_db_num_rows(pwg_query($query))==0)
+  {
+    return new PwgError(404, 'Invalid image_id or access denied');
+  }
+
+  include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
+  $res = rate_picture($params['image_id'], (int)$params['rate']);
+
+  if ($res==false)
+  {
+    global $conf;
+    return new PwgError(403, 'Forbidden or rate not in '. implode(',', $conf['rate_items']));
+  }
+  return $res;
+}
+
+/**
+ * API method
+ * Returns a list of elements corresponding to a query search
+ * @param mixed[] $params
+ *    @option string query
+ *    @option int per_page
+ *    @option int page
+ *    @option string order (optional)
+ */
+function ws_images_search($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH .'include/functions_search.inc.php');
+
+  $images = array();
+  $where_clauses = ws_std_image_sql_filter($params, 'i.');
+  $order_by = ws_std_image_sql_order($params, 'i.');
+
+  $super_order_by = false;
+  if (!empty($order_by))
+  {
+    global $conf;
+    $conf['order_by'] = 'ORDER BY '.$order_by;
+    $super_order_by = true; // quick_search_result might be faster
+  }
+
+  $search_result = get_quick_search_results(
+    $params['query'],
+    $super_order_by,
+    implode(' AND ', $where_clauses)
+    );
+
+  $image_ids = array_slice(
+    $search_result['items'],
+    $params['page']*$params['per_page'],
+    $params['per_page']
+    );
+
+  if (count($image_ids))
+  {
+    $query = '
+SELECT *
+  FROM '. IMAGES_TABLE .'
+  WHERE id IN ('. implode(',', $image_ids) .')
+;';
+    $result = pwg_query($query);
+    $image_ids = array_flip($image_ids);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $image = array();
+      foreach (array('id', 'width', 'height', 'hit') as $k)
+      {
+        if (isset($row[$k]))
+        {
+          $image[$k] = (int)$row[$k];
+        }
+      }
+      foreach (array('file', 'name', 'comment', 'date_creation', 'date_available') as $k)
+      {
+        $image[$k] = $row[$k];
+      }
+
+      $image = array_merge($image, ws_std_get_urls($row));
+      $images[ $image_ids[ $image['id'] ] ] = $image;
+    }
+    ksort($images, SORT_NUMERIC);
+    $images = array_values($images);
+  }
+
+  return array (
+    'paging' => new PwgNamedStruct(
+      array(
+        'page' => $params['page'],
+        'per_page' => $params['per_page'],
+        'count' => count($images),
+        'total_count' => count($search_result['items']),
+        )
+      ),
+    'images' => new PwgNamedArray(
+      $images,
+      'image',
+      ws_std_get_image_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Sets the level of an image
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option int level
+ */
+function ws_images_setPrivacyLevel($params, &$service)
+{
+  global $conf;
+
+  if (!in_array($params['level'], $conf['available_permission_levels']))
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid level');
+  }
+
+  $query = '
+UPDATE '. IMAGES_TABLE .'
+  SET level='. (int)$params['level'] .'
+  WHERE id IN ('. implode(',',$params['image_id']) .')
+;';
+  $result = pwg_query($query);
+
+  $affected_rows = pwg_db_changes($result);
+  if ($affected_rows)
+  {
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+    invalidate_user_cache();
+  }
+  return $affected_rows;
+}
+
+/**
+ * API method
+ * Sets the rank of an image in a category
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option int category_id
+ *    @option int rank
+ */
+function ws_images_setRank($params, &$service)
+{
+  // does the image really exist?
+  $query = '
+SELECT COUNT(*)
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(404, 'image_id not found');
+  }
+
+  // is the image associated to this category?
+  $query = '
+SELECT COUNT(*)
+  FROM '. IMAGE_CATEGORY_TABLE .'
+  WHERE image_id = '. $params['image_id'] .'
+    AND category_id = '. $params['category_id'] .'
+;';
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+  if ($count == 0)
+  {
+    return new PwgError(404, 'This image is not associated to this category');
+  }
+
+  // what is the current higher rank for this category?
+  $query = '
+SELECT MAX(rank) AS max_rank
+  FROM '. IMAGE_CATEGORY_TABLE .'
+  WHERE category_id = '. $params['category_id'] .'
+;';
+  $row = pwg_db_fetch_assoc(pwg_query($query));
+
+  if (is_numeric($row['max_rank']))
+  {
+    if ($params['rank'] > $row['max_rank'])
+    {
+      $params['rank'] = $row['max_rank'] + 1;
+    }
+  }
+  else
+  {
+    $params['rank'] = 1;
+  }
+
+  // update rank for all other photos in the same category
+  $query = '
+UPDATE '. IMAGE_CATEGORY_TABLE .'
+  SET rank = rank + 1
+  WHERE category_id = '. $params['category_id'] .'
+    AND rank IS NOT NULL
+    AND rank >= '. $params['rank'] .'
+;';
+  pwg_query($query);
+
+  // set the new rank for the photo
+  $query = '
+UPDATE '. IMAGE_CATEGORY_TABLE .'
+  SET rank = '. $params['rank'] .'
+  WHERE image_id = '. $params['image_id'] .'
+    AND category_id = '. $params['category_id'] .'
+;';
+  pwg_query($query);
+
+  // return data for client
+  return array(
+    'image_id' => $params['image_id'],
+    'category_id' => $params['category_id'],
+    'rank' => $params['rank'],
+    );
+}
+
+/**
+ * API method
+ * Adds a file chunk
+ * @param mixed[] $params
+ *    @option string data
+ *    @option string original_sum
+ *    @option string type = 'file'
+ *    @option int position
+ */
+function ws_images_add_chunk($params, &$service)
+{
+  global $conf;
+
+  foreach ($params as $param_key => $param_value)
+  {
+    if ('data' == $param_key)
+    {
+      continue;
+    }
+    ws_logfile(
+      sprintf(
+        '[ws_images_add_chunk] input param "%s" : "%s"',
+        $param_key,
+        is_null($param_value) ? 'NULL' : $param_value
+        )
+      );
+  }
+
+  $upload_dir = $conf['upload_dir'].'/buffer';
+
+  // create the upload directory tree if not exists
+  if (!mkgetdir($upload_dir, MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR))
+  {
+    return new PwgError(500, 'error during buffer directory creation');
+  }
+
+  $filename = sprintf(
+    '%s-%s-%05u.block',
+    $params['original_sum'],
+    $params['type'],
+    $params['position']
+    );
+
+  ws_logfile('[ws_images_add_chunk] data length : '.strlen($params['data']));
+
+  $bytes_written = file_put_contents(
+    $upload_dir.'/'.$filename,
+    base64_decode($params['data'])
+    );
+
+  if (false === $bytes_written)
+  {
+    return new PwgError(500,
+      'an error has occured while writting chunk '.$params['position'].' for '.$params['type']
+      );
+  }
+}
+
+/**
+ * API method
+ * Adds a file
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option string type = 'file'
+ *    @option string sum
+ */
+function ws_images_addFile($params, &$service)
+{
+  ws_logfile(__FUNCTION__.', input :  '.var_export($params, true));
+
+  global $conf;
+
+  // what is the path and other infos about the photo?
+  $query = '
+SELECT
+    path, file, md5sum,
+    width, height, filesize
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return new PwgError(404, "image_id not found");
+  }
+
+  $image = pwg_db_fetch_assoc($result);
+
+  // since Piwigo 2.4 and derivatives, we do not take the imported "thumb" into account
+  if ('thumb' == $params['type'])
+  {
+    remove_chunks($image['md5sum'], $type);
+    return true;
+  }
+
+  // since Piwigo 2.4 and derivatives, we only care about the "original"
+  $original_type = 'file';
+  if ('high' == $params['type'])
+  {
+    $original_type = 'high';
+  }
+
+  $file_path = $conf['upload_dir'].'/buffer/'.$image['md5sum'].'-original';
+
+  merge_chunks($file_path, $image['md5sum'], $original_type);
+  chmod($file_path, 0644);
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+  // if we receive the "file", we only update the original if the "file" is
+  // bigger than current original
+  if ('file' == $params['type'])
+  {
+    $do_update = false;
+
+    $infos = pwg_image_infos($file_path);
+
+    foreach (array('width', 'height', 'filesize') as $image_info)
+    {
+      if ($infos[$image_info] > $image[$image_info])
+      {
+        $do_update = true;
+      }
+    }
+
+    if (!$do_update)
+    {
+      unlink($file_path);
+      return true;
+    }
+  }
+
+  $image_id = add_uploaded_file(
+    $file_path,
+    $image['file'],
+    null,
+    null,
+    $params['image_id'],
+    $image['md5sum'] // we force the md5sum to remain the same
+    );
+}
+
+/**
+ * API method
+ * Adds an image
+ * @param mixed[] $params
+ *    @option string original_sum
+ *    @option string original_filename (optional)
+ *    @option string name (optional)
+ *    @option string author (optional)
+ *    @option string date_creation (optional)
+ *    @option string comment (optional)
+ *    @option string categories (optional) - "cat_id[,rank];cat_id[,rank]"
+ *    @option string tags_ids (optional) - "tag_id,tag_id"
+ *    @option int level
+ *    @option bool check_uniqueness
+ *    @option int image_id (optional)
+ */
+function ws_images_add($params, &$service)
+{
+  global $conf, $user;
+
+  foreach ($params as $param_key => $param_value)
+  {
+    ws_logfile(
+      sprintf(
+        '[pwg.images.add] input param "%s" : "%s"',
+        $param_key,
+        is_null($param_value) ? 'NULL' : $param_value
+        )
+      );
+  }
+
+  if ($params['image_id'] > 0)
+  {
+    $query = '
+SELECT COUNT(*)
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count == 0)
+    {
+      return new PwgError(404, 'image_id not found');
+    }
+  }
+
+  // does the image already exists ?
+  if ($params['check_uniqueness'])
+  {
+    if ('md5sum' == $conf['uniqueness_mode'])
+    {
+      $where_clause = "md5sum = '".$params['original_sum']."'";
+    }
+    if ('filename' == $conf['uniqueness_mode'])
+    {
+      $where_clause = "file = '".$params['original_filename']."'";
+    }
+
+    $query = '
+SELECT COUNT(*)
+  FROM '. IMAGES_TABLE .'
+  WHERE '. $where_clause .'
+;';
+    list($counter) = pwg_db_fetch_row(pwg_query($query));
+    if ($counter != 0)
+    {
+      return new PwgError(500, 'file already exists');
+    }
+  }
+
+  // due to the new feature "derivatives" (multiple sizes) introduced for
+  // Piwigo 2.4, we only take the biggest photos sent on
+  // pwg.images.addChunk. If "high" is available we use it as "original"
+  // else we use "file".
+  remove_chunks($params['original_sum'], 'thumb');
+
+  if (isset($params['high_sum']))
+  {
+    $original_type = 'high';
+    remove_chunks($params['original_sum'], 'file');
+  }
+  else
+  {
+    $original_type = 'file';
+  }
+
+  $file_path = $conf['upload_dir'].'/buffer/'.$params['original_sum'].'-original';
+
+  merge_chunks($file_path, $params['original_sum'], $original_type);
+  chmod($file_path, 0644);
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+  $image_id = add_uploaded_file(
+    $file_path,
+    $params['original_filename'],
+    null, // categories
+    isset($params['level']) ? $params['level'] : null,
+    $params['image_id'] > 0 ? $params['image_id'] : null,
+    $params['original_sum']
+    );
+
+  $info_columns = array(
+    'name',
+    'author',
+    'comment',
+    'date_creation',
+    );
+
+  $update = array();
+  foreach ($info_columns as $key)
+  {
+    if (isset($params[$key]))
+    {
+      $update[$key] = $params[$key];
+    }
+  }
+
+  if (count(array_keys($update)) > 0)
+  {
+    single_update(
+      IMAGES_TABLE,
+      $update,
+      array('id' => $image_id)
+      );
+  }
+
+  $url_params = array('image_id' => $image_id);
+
+  // let's add links between the image and the categories
+  if (isset($params['categories']))
+  {
+    ws_add_image_category_relations($image_id, $params['categories']);
+
+    if (preg_match('/^\d+/', $params['categories'], $matches))
+    {
+      $category_id = $matches[0];
+
+      $query = '
+SELECT id, name, permalink
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id = '. $category_id .'
+;';
+      $result = pwg_query($query);
+      $category = pwg_db_fetch_assoc($result);
+
+      $url_params['section'] = 'categories';
+      $url_params['category'] = $category;
+    }
+  }
+
+  // and now, let's create tag associations
+  if (isset($params['tag_ids']) and !empty($params['tag_ids']))
+  {
+    set_tags(
+      explode(',', $params['tag_ids']),
+      $image_id
+      );
+  }
+
+  invalidate_user_cache();
+
+  return array(
+    'image_id' => $image_id,
+    'url' => make_picture_url($url_params),
+    );
+}
+
+/**
+ * API method
+ * Adds a image (simple way)
+ * @param mixed[] $params
+ *    @option int[] category
+ *    @option string name (optional)
+ *    @option string author (optional)
+ *    @option string comment (optional)
+ *    @option int level
+ *    @option string|string[] tags
+ *    @option int image_id (optional)
+ */
+function ws_images_addSimple($params, &$service)
+{
+  global $conf;
+
+  if (!isset($_FILES['image']))
+  {
+    return new PwgError(405, 'The image (file) is missing');
+  }
+
+  if ($params['image_id'] > 0)
+  {
+    $query='
+SELECT COUNT(*)
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if ($count == 0)
+    {
+      return new PwgError(404, 'image_id not found');
+    }
+  }
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+  $image_id = add_uploaded_file(
+    $_FILES['image']['tmp_name'],
+    $_FILES['image']['name'],
+    $params['category'],
+    8,
+    $params['image_id'] > 0 ? $params['image_id'] : null
+    );
+
+  $info_columns = array(
+    'name',
+    'author',
+    'comment',
+    'level',
+    'date_creation',
+    );
+
+  $update = array();
+  foreach ($info_columns as $key)
+  {
+    if (isset($params[$key]))
+    {
+      $update[$key] = $params[$key];
+    }
+  }
+
+  single_update(
+    IMAGES_TABLE,
+    $update,
+    array('id' => $image_id)
+    );
+
+  if (isset($params['tags']) and !empty($params['tags']))
+  {
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+    $tag_ids = array();
+    if (is_array($params['tags']))
+    {
+      foreach ($params['tags'] as $tag_name)
+      {
+        $tag_ids[] = tag_id_from_tag_name($tag_name);
+      }
+    }
+    else
+    {
+      $tag_names = preg_split('~(?<!\\\),~', $params['tags']);
+      foreach ($tag_names as $tag_name)
+      {
+        $tag_ids[] = tag_id_from_tag_name(preg_replace('#\\\\*,#', ',', $tag_name));
+      }
+    }
+
+    add_tags($tag_ids, array($image_id));
+  }
+
+  $url_params = array('image_id' => $image_id);
+
+  if (!empty($params['category']))
+  {
+    $query = '
+SELECT id, name, permalink
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id = '. $params['category'][0] .'
+;';
+    $result = pwg_query($query);
+    $category = pwg_db_fetch_assoc($result);
+
+    $url_params['section'] = 'categories';
+    $url_params['category'] = $category;
+  }
+
+  // update metadata from the uploaded file (exif/iptc), even if the sync
+  // was already performed by add_uploaded_file().
+  require_once(PHPWG_ROOT_PATH.'admin/include/functions_metadata.php');
+  sync_metadata(array($image_id));
+
+  return array(
+    'image_id' => $image_id,
+    'url' => make_picture_url($url_params),
+    );
+}
+
+/**
+ * API method
+ * Check if an image exists by it's name or md5 sum
+ * @param mixed[] $params
+ *    @option string md5sum_list (optional)
+ *    @option string filename_list (optional)
+ */
+function ws_images_exist($params, &$service)
+{
+  ws_logfile(__FUNCTION__.' '.var_export($params, true));
+
+  global $conf;
+
+  $split_pattern = '/[\s,;\|]/';
+  $result = array();
+
+  if ('md5sum' == $conf['uniqueness_mode'])
+  {
+    // search among photos the list of photos already added, based on md5sum list
+    $md5sums = preg_split(
+      $split_pattern,
+      $params['md5sum_list'],
+      -1,
+      PREG_SPLIT_NO_EMPTY
+    );
+
+    $query = '
+SELECT id, md5sum
+  FROM '. IMAGES_TABLE .'
+  WHERE md5sum IN (\''. implode("','", $md5sums) .'\')
+;';
+    $id_of_md5 = simple_hash_from_query($query, 'md5sum', 'id');
+
+    foreach ($md5sums as $md5sum)
+    {
+      $result[$md5sum] = null;
+      if (isset($id_of_md5[$md5sum]))
+      {
+        $result[$md5sum] = $id_of_md5[$md5sum];
+      }
+    }
+  }
+  else if ('filename' == $conf['uniqueness_mode'])
+  {
+    // search among photos the list of photos already added, based on
+    // filename list
+    $filenames = preg_split(
+      $split_pattern,
+      $params['filename_list'],
+      -1,
+      PREG_SPLIT_NO_EMPTY
+    );
+
+    $query = '
+SELECT id, file
+  FROM '.IMAGES_TABLE.'
+  WHERE file IN (\''. implode("','", $filenames) .'\')
+;';
+    $id_of_filename = simple_hash_from_query($query, 'file', 'id');
+
+    foreach ($filenames as $filename)
+    {
+      $result[$filename] = null;
+      if (isset($id_of_filename[$filename]))
+      {
+        $result[$filename] = $id_of_filename[$filename];
+      }
+    }
+  }
+
+  return $result;
+}
+
+/**
+ * API method
+ * Check is file has been update
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option string file_sum
+ */
+function ws_images_checkFiles($params, &$service)
+{
+  ws_logfile(__FUNCTION__.', input :  '.var_export($params, true));
+
+  $query = '
+SELECT path
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return new PwgError(404, 'image_id not found');
+  }
+
+  list($path) = pwg_db_fetch_row($result);
+
+  $ret = array();
+
+  if (isset($params['thumbnail_sum']))
+  {
+    // We always say the thumbnail is equal to create no reaction on the
+    // other side. Since Piwigo 2.4 and derivatives, the thumbnails and web
+    // sizes are always generated by Piwigo
+    $ret['thumbnail'] = 'equals';
+  }
+
+  if (isset($params['high_sum']))
+  {
+    $ret['file'] = 'equals';
+    $compare_type = 'high';
+  }
+  else if (isset($params['file_sum']))
+  {
+    $compare_type = 'file';
+  }
+
+  if (isset($compare_type))
+  {
+    ws_logfile(__FUNCTION__.', md5_file($path) = '.md5_file($path));
+    if (md5_file($path) != $params[$compare_type.'_sum'])
+    {
+      $ret[$compare_type] = 'differs';
+    }
+    else
+    {
+      $ret[$compare_type] = 'equals';
+    }
+  }
+
+  ws_logfile(__FUNCTION__.', output :  '.var_export($ret, true));
+
+  return $ret;
+}
+
+/**
+ * API method
+ * Sets details of an image
+ * @param mixed[] $params
+ *    @option int image_id
+ *    @option string file (optional)
+ *    @option string name (optional)
+ *    @option string author (optional)
+ *    @option string date_creation (optional)
+ *    @option string comment (optional)
+ *    @option string categories (optional) - "cat_id[,rank];cat_id[,rank]"
+ *    @option string tags_ids (optional) - "tag_id,tag_id"
+ *    @option int level (optional)
+ *    @option string single_value_mode
+ *    @option string multiple_value_mode
+ */
+function ws_images_setInfo($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $query='
+SELECT *
+  FROM '. IMAGES_TABLE .'
+  WHERE id = '. $params['image_id'] .'
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    return new PwgError(404, 'image_id not found');
+  }
+
+  $image_row = pwg_db_fetch_assoc($result);
+
+  // database registration
+  $update = array();
+
+  $info_columns = array(
+    'name',
+    'author',
+    'comment',
+    'level',
+    'date_creation',
+    );
+
+  foreach ($info_columns as $key)
+  {
+    if (isset($params[$key]))
+    {
+      if ('fill_if_empty' == $params['single_value_mode'])
+      {
+        if (empty($image_row[$key]))
+        {
+          $update[$key] = $params[$key];
+        }
+      }
+      elseif ('replace' == $params['single_value_mode'])
+      {
+        $update[$key] = $params[$key];
+      }
+      else
+      {
+        return new PwgError(500,
+          '[ws_images_setInfo]'
+          .' invalid parameter single_value_mode "'.$params['single_value_mode'].'"'
+          .', possible values are {fill_if_empty, replace}.'
+          );
+      }
+    }
+  }
+
+  if (isset($params['file']))
+  {
+    if (!empty($image_row['storage_category_id']))
+    {
+      return new PwgError(500,
+        '[ws_images_setInfo] updating "file" is forbidden on photos added by synchronization'
+        );
+    }
+
+    $update['file'] = $params['file'];
+  }
+
+  if (count(array_keys($update)) > 0)
+  {
+    $update['id'] = $params['image_id'];
+
+    single_update(
+      IMAGES_TABLE,
+      $update,
+      array('id' => $update['id'])
+      );
+  }
+
+  if (isset($params['categories']))
+  {
+    ws_add_image_category_relations(
+      $params['image_id'],
+      $params['categories'],
+      ('replace' == $params['multiple_value_mode'] ? true : false)
+      );
+  }
+
+  // and now, let's create tag associations
+  if (isset($params['tag_ids']))
+  {
+    $tag_ids = array();
+
+    foreach (explode(',', $params['tag_ids']) as $candidate)
+    {
+      $candidate = trim($candidate);
+
+      if (preg_match(PATTERN_ID, $candidate))
+      {
+        $tag_ids[] = $candidate;
+      }
+    }
+
+    if ('replace' == $params['multiple_value_mode'])
+    {
+      set_tags(
+        $tag_ids,
+        $params['image_id']
+        );
+    }
+    elseif ('append' == $params['multiple_value_mode'])
+    {
+      add_tags(
+        $tag_ids,
+        array($params['image_id'])
+        );
+    }
+    else
+    {
+      return new PwgError(500,
+        '[ws_images_setInfo]'
+        .' invalid parameter multiple_value_mode "'.$params['multiple_value_mode'].'"'
+        .', possible values are {replace, append}.'
+        );
+    }
+  }
+
+  invalidate_user_cache();
+}
+
+/**
+ * API method
+ * Deletes an image
+ * @param mixed[] $params
+ *    @option int|int[] image_id
+ *    @option string pwg_token
+ */
+function ws_images_delete($params, &$service)
+{
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  if (!is_array($params['image_id']))
+  {
+    $params['image_id'] = preg_split(
+      '/[\s,;\|]/',
+      $params['image_id'],
+      -1,
+      PREG_SPLIT_NO_EMPTY
+      );
+  }
+  $params['image_id'] = array_map('intval', $params['image_id']);
+
+  $image_ids = array();
+  foreach ($params['image_id'] as $image_id)
+  {
+    if ($image_id > 0)
+    {
+      $image_ids[] = $image_id;
+    }
+  }
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  delete_elements($image_ids, true);
+  invalidate_user_cache();
+}
+
+/**
+ * API method
+ * Checks if Piwigo is ready for upload
+ * @param mixed[] $params
+ */
+function ws_images_checkUpload($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+  $ret['message'] = ready_for_upload_message();
+  $ret['ready_for_upload'] = true;
+  if (!empty($ret['message']))
+  {
+    $ret['ready_for_upload'] = false;
+  }
+
+  return $ret;
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.permissions.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.permissions.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.permissions.php	(revision 25596)
@@ -0,0 +1,235 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns permissions
+ * @param mixed[] $params
+ *    @option int[] cat_id (optional)
+ *    @option int[] group_id (optional)
+ *    @option int[] user_id (optional)
+ */
+function ws_permissions_getList($params, &$service)
+{
+  $my_params = array_intersect(array_keys($params), array('cat_id','group_id','user_id'));
+  if (count($my_params) > 1)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, 'Too many parameters, provide cat_id OR user_id OR group_id');
+  }
+
+  $cat_filter = '';
+  if (!empty($params['cat_id']))
+  {
+    $cat_filter = 'WHERE cat_id IN('. implode(',', $params['cat_id']) .')';
+  }
+
+  $perms = array();
+
+  // direct users
+  $query = '
+SELECT user_id, cat_id
+  FROM '. USER_ACCESS_TABLE .'
+  '. $cat_filter .'
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (!isset($perms[ $row['cat_id'] ]))
+    {
+      $perms[ $row['cat_id'] ]['id'] = intval($row['cat_id']);
+    }
+    $perms[ $row['cat_id'] ]['users'][] = intval($row['user_id']);
+  }
+
+  // indirect users
+  $query = '
+SELECT ug.user_id, ga.cat_id
+  FROM '. USER_GROUP_TABLE .' AS ug
+    INNER JOIN '. GROUP_ACCESS_TABLE .' AS ga
+    ON ug.group_id = ga.group_id
+  '. $cat_filter .'
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (!isset($perms[ $row['cat_id'] ]))
+    {
+      $perms[ $row['cat_id'] ]['id'] = intval($row['cat_id']);
+    }
+    $perms[ $row['cat_id'] ]['users_indirect'][] = intval($row['user_id']);
+  }
+
+  // groups
+  $query = '
+SELECT group_id, cat_id
+  FROM '. GROUP_ACCESS_TABLE .'
+  '. $cat_filter .'
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if (!isset($perms[ $row['cat_id'] ]))
+    {
+      $perms[ $row['cat_id'] ]['id'] = intval($row['cat_id']);
+    }
+    $perms[ $row['cat_id'] ]['groups'][] = intval($row['group_id']);
+  }
+
+  // filter by group and user
+  foreach ($perms as $cat_id => &$cat)
+  {
+    if (isset($filters['group_id']))
+    {
+      if (empty($cat['groups']) or count(array_intersect($cat['groups'], $params['group_id'])) == 0)
+      {
+        unset($perms[$cat_id]);
+        continue;
+      }
+    }
+    if (isset($filters['user_id']))
+    {
+      if (
+        (empty($cat['users_indirect']) or count(array_intersect($cat['users_indirect'], $params['user_id'])) == 0)
+        and (empty($cat['users']) or count(array_intersect($cat['users'], $params['user_id'])) == 0)
+      ) {
+        unset($perms[$cat_id]);
+        continue;
+      }
+    }
+
+    $cat['groups'] = !empty($cat['groups']) ? array_values(array_unique($cat['groups'])) : array();
+    $cat['users'] = !empty($cat['users']) ? array_values(array_unique($cat['users'])) : array();
+    $cat['users_indirect'] = !empty($cat['users_indirect']) ? array_values(array_unique($cat['users_indirect'])) : array();
+  }
+  unset($cat);
+
+  return array(
+    'categories' => new PwgNamedArray(
+      array_values($perms),
+      'category',
+      array('id')
+      )
+    );
+}
+
+/**
+ * API method
+ * Add permissions
+ * @param mixed[] $params
+ *    @option int[] cat_id
+ *    @option int[] group_id (optional)
+ *    @option int[] user_id (optional)
+ *    @option bool recursive
+ */
+function ws_permissions_add($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  if (!empty($params['group_id']))
+  {
+    $cat_ids = get_uppercat_ids($params['cat_id']);
+    if ($params['recursive'])
+    {
+      $cat_ids = array_merge($cat_ids, get_subcat_ids($params['cat_id']));
+    }
+
+    $query = '
+SELECT id
+  FROM '. CATEGORIES_TABLE .'
+  WHERE id IN ('. implode(',', $cat_ids) .')
+    AND status = \'private\'
+;';
+    $private_cats = array_from_query($query, 'id');
+
+    $inserts = array();
+    foreach ($private_cats as $cat_id)
+    {
+      foreach ($params['group_id'] as $group_id)
+      {
+        $inserts[] = array(
+          'group_id' => $group_id,
+          'cat_id' => $cat_id
+          );
+      }
+    }
+
+    mass_inserts(
+      GROUP_ACCESS_TABLE,
+      array('group_id','cat_id'),
+      $inserts,
+      array('ignore'=>true)
+      );
+  }
+
+  if (!empty($params['user_id']))
+  {
+    if ($params['recursive']) $_POST['apply_on_sub'] = true;
+    add_permission_on_category($params['cat_id'], $params['user_id']);
+  }
+
+  return $service->invoke('pwg.permissions.getList', array('cat_id'=>$params['cat_id']));
+}
+
+/**
+ * API method
+ * Removes permissions
+ * @param mixed[] $params
+ *    @option int[] cat_id
+ *    @option int[] group_id (optional)
+ *    @option int[] user_id (optional)
+ */
+function ws_permissions_remove($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $cat_ids = get_subcat_ids($params['cat_id']);
+
+  if (!empty($params['group_id']))
+  {
+    $query = '
+DELETE
+  FROM '. GROUP_ACCESS_TABLE .'
+  WHERE group_id IN ('. implode(',', $params['group_id']).')
+    AND cat_id IN ('. implode(',', $cat_ids).')
+;';
+    pwg_query($query);
+  }
+
+  if (!empty($params['user_id']))
+  {
+    $query = '
+DELETE
+  FROM '. USER_ACCESS_TABLE .'
+  WHERE user_id IN ('. implode(',', $params['user_id']) .')
+    AND cat_id IN ('. implode(',', $cat_ids) .')
+;';
+    pwg_query($query);
+  }
+
+  return $service->invoke('pwg.permissions.getList', array('cat_id'=>$params['cat_id']));
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.php	(revision 25596)
@@ -0,0 +1,338 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns a list of missing derivatives (not generated yet)
+ * @param mixed[] $params
+ *    @option string types (optional)
+ *    @option int[] ids
+ *    @option int max_urls
+ *    @option int prev_page (optional)
+ */
+function ws_getMissingDerivatives($params, &$service)
+{
+  global $conf;
+
+  if (empty($params['types']))
+  {
+    $types = array_keys(ImageStdParams::get_defined_type_map());
+  }
+  else
+  {
+    $types = array_intersect(array_keys(ImageStdParams::get_defined_type_map()), $params['types']);
+    if (count($types)==0)
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, "Invalid types");
+    }
+  }
+
+  $max_urls = $params['max_urls'];
+  $query = 'SELECT MAX(id)+1, COUNT(*) FROM '. IMAGES_TABLE .';';
+  list($max_id, $image_count) = pwg_db_fetch_row(pwg_query($query));
+
+  if (0 == $image_count)
+  {
+    return array();
+  }
+
+  $start_id = $params['prev_page'];
+  if ($start_id<=0)
+  {
+    $start_id = $max_id;
+  }
+
+  $uid = '&b='.time();
+
+  $conf['question_mark_in_urls'] = $conf['php_extension_in_urls'] = true;
+  $conf['derivative_url_style'] = 2; //script
+
+  $qlimit = min(5000, ceil(max($image_count/500, $max_urls/count($types))));
+  $where_clauses = ws_std_image_sql_filter( $params, '' );
+  $where_clauses[] = 'id<start_id';
+
+  if (!empty($params['ids']))
+  {
+    $where_clauses[] = 'id IN ('.implode(',',$params['ids']).')';
+  }
+
+  $query_model = '
+SELECT id, path, representative_ext, width, height, rotation
+  FROM '. IMAGES_TABLE .'
+  WHERE '. implode(' AND ', $where_clauses) .'
+  ORDER BY id DESC
+  LIMIT '. $qlimit .'
+;';
+
+  $urls = array();
+  do
+  {
+    $result = pwg_query(str_replace('start_id', $start_id, $query_model));
+    $is_last = pwg_db_num_rows($result) < $qlimit;
+
+    while ($row=pwg_db_fetch_assoc($result))
+    {
+      $start_id = $row['id'];
+      $src_image = new SrcImage($row);
+      if ($src_image->is_mimetype())
+      {
+        continue;
+      }
+
+      foreach($types as $type)
+      {
+        $derivative = new DerivativeImage($type, $src_image);
+        if ($type != $derivative->get_type())
+        {
+          continue;
+        }
+        if (@filemtime($derivative->get_path())===false)
+        {
+          $urls[] = $derivative->get_url().$uid;
+        }
+      }
+
+      if (count($urls)>=$max_urls and !$is_last)
+      {
+        break;
+      }
+    }
+    if ($is_last)
+    {
+      $start_id = 0;
+    }
+  } while (count($urls)<$max_urls and $start_id);
+
+  $ret = array();
+  if ($start_id)
+  {
+    $ret['next_page'] = $start_id;
+  }
+  $ret['urls'] = $urls;
+  return $ret;
+}
+
+/**
+ * API method
+ * Returns Piwigo version
+ * @param mixed[] $params
+ */
+function ws_getVersion($params, &$service)
+{
+  global $conf;
+
+  if ($conf['show_version'] or is_admin())
+  {
+    return PHPWG_VERSION;
+  }
+  else
+  {
+    return new PwgError(403, 'Forbidden');
+  }
+}
+
+/**
+ * API method
+ * Returns general informations about the installation
+ * @param mixed[] $params
+ */
+function ws_getInfos($params, &$service)
+{
+  $infos['version'] = PHPWG_VERSION;
+
+  $query = 'SELECT COUNT(*) FROM '.IMAGES_TABLE.';';
+  list($infos['nb_elements']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.CATEGORIES_TABLE.';';
+  list($infos['nb_categories']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.CATEGORIES_TABLE.' WHERE dir IS NULL;';
+  list($infos['nb_virtual']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.CATEGORIES_TABLE.' WHERE dir IS NOT NULL;';
+  list($infos['nb_physical']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.IMAGE_CATEGORY_TABLE.';';
+  list($infos['nb_image_category']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.TAGS_TABLE.';';
+  list($infos['nb_tags']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.IMAGE_TAG_TABLE.';';
+  list($infos['nb_image_tag']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.USERS_TABLE.';';
+  list($infos['nb_users']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.GROUPS_TABLE.';';
+  list($infos['nb_groups']) = pwg_db_fetch_row(pwg_query($query));
+
+  $query = 'SELECT COUNT(*) FROM '.COMMENTS_TABLE.';';
+  list($infos['nb_comments']) = pwg_db_fetch_row(pwg_query($query));
+
+  // first element
+  if ($infos['nb_elements'] > 0)
+  {
+    $query = 'SELECT MIN(date_available) FROM '.IMAGES_TABLE.';';
+    list($infos['first_date']) = pwg_db_fetch_row(pwg_query($query));
+  }
+
+  // unvalidated comments
+  if ($infos['nb_comments'] > 0)
+  {
+    $query = 'SELECT COUNT(*) FROM '.COMMENTS_TABLE.' WHERE validated=\'false\';';
+    list($infos['nb_unvalidated_comments']) = pwg_db_fetch_row(pwg_query($query));
+  }
+
+  foreach ($infos as $name => $value)
+  {
+    $output[] = array(
+      'name' => $name,
+      'value' => $value,
+    );
+  }
+
+  return array('infos' => new PwgNamedArray($output, 'item'));
+}
+
+/**
+ * API method
+ * Adds images to the caddie
+ * @param mixed[] $params
+ *    @option int[] image_id
+ */
+function ws_caddie_add($params, &$service)
+{
+  global $user;
+
+  $query = '
+SELECT id
+  FROM '. IMAGES_TABLE .'
+      LEFT JOIN '. CADDIE_TABLE .'
+      ON id=element_id AND user_id='. $user['id'] .'
+  WHERE id IN ('. implode(',',$params['image_id']) .')
+    AND element_id IS NULL
+;';
+  $result = array_from_query($query, 'id');
+
+  $datas = array();
+  foreach ($result as $id)
+  {
+    $datas[] = array(
+      'element_id' => $id,
+      'user_id' => $user['id'],
+      );
+  }
+  if (count($datas))
+  {
+    mass_inserts(
+      CADDIE_TABLE,
+      array('element_id','user_id'),
+      $datas
+      );
+  }
+  return count($datas);
+}
+
+/**
+ * API method
+ * Deletes rates of an user
+ * @param mixed[] $params
+ *    @option int user_id
+ *    @option string anonymous_id (optional)
+ */
+function ws_rates_delete($params, &$service)
+{
+  $query = '
+DELETE FROM '. RATE_TABLE .'
+  WHERE user_id='. $params['user_id'];
+
+  if (!empty($params['anonymous_id']))
+  {
+    $query .= ' AND anonymous_id=\''.$params['anonymous_id'].'\'';
+  }
+
+  $changes = pwg_db_changes(pwg_query($query));
+  if ($changes)
+  {
+    include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
+    update_rating_score();
+  }
+  return $changes;
+}
+
+/**
+ * API method
+ * Performs a login
+ * @param mixed[] $params
+ *    @option string username
+ *    @option string password
+ */
+function ws_session_login($params, &$service)
+{
+  if (try_log_user($params['username'], $params['password'], false))
+  {
+    return true;
+  }
+  return new PwgError(999, 'Invalid username/password');
+}
+
+
+/**
+ * API method
+ * Performs a logout
+ * @param mixed[] $params
+ */
+function ws_session_logout($params, &$service)
+{
+  if (!is_a_guest())
+  {
+    logout_user();
+  }
+  return true;
+}
+
+/**
+ * API method
+ * Returns info about the current user
+ * @param mixed[] $params
+ */
+function ws_session_getStatus($params, &$service)
+{
+  global $user;
+
+  $res['username'] = is_a_guest() ? 'guest' : stripslashes($user['username']);
+  foreach ( array('status', 'theme', 'language') as $k )
+  {
+    $res[$k] = $user[$k];
+  }
+  $res['pwg_token'] = get_pwg_token();
+  $res['charset'] = get_pwg_charset();
+
+  list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+  $res['current_datetime'] = $dbnow;
+
+  return $res;
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.tags.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.tags.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.tags.php	(revision 25596)
@@ -0,0 +1,244 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns a list of tags
+ * @param mixed[] $params
+ *    @option bool sort_by_counter
+ */
+function ws_tags_getList($params, &$service)
+{
+  $tags = get_available_tags();
+  if ($params['sort_by_counter'])
+  {
+    usort($tags, create_function('$a,$b', 'return -$a["counter"]+$b["counter"];') );
+  }
+  else
+  {
+    usort($tags, 'tag_alpha_compare');
+  }
+
+  for ($i=0; $i<count($tags); $i++)
+  {
+    $tags[$i]['id'] = (int)$tags[$i]['id'];
+    $tags[$i]['counter'] = (int)$tags[$i]['counter'];
+    $tags[$i]['url'] = make_index_url(
+      array(
+        'section'=>'tags',
+        'tags'=>array($tags[$i])
+        )
+      );
+  }
+
+  return array(
+    'tags' => new PwgNamedArray(
+      $tags,
+      'tag',
+      ws_std_get_tag_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Returns the list of tags as you can see them in administration
+ * @param mixed[] $params
+ *
+ * Only admin can run this method and permissions are not taken into
+ * account.
+ */
+function ws_tags_getAdminList($params, &$service)
+{
+  return array(
+    'tags' => new PwgNamedArray(
+      get_all_tags(),
+      'tag',
+      ws_std_get_tag_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Returns a list of images for tags
+ * @param mixed[] $params
+ *    @option int[] tag_id (optional)
+ *    @option string[] tag_url_name (optional)
+ *    @option string[] tag_name (optional)
+ *    @option bool tag_mode_and
+ *    @option int per_page
+ *    @option int page
+ *    @option string order
+ */
+function ws_tags_getImages($params, &$service)
+{
+  // first build all the tag_ids we are interested in
+  $tags = find_tags($params['tag_id'], $params['tag_url_name'], $params['tag_name']);
+  $tags_by_id = array();
+  foreach ($tags as $tag)
+  {
+    $tags['id'] = (int)$tag['id'];
+    $tags_by_id[ $tag['id'] ] = $tag;
+  }
+  unset($tags);
+  $tag_ids = array_keys($tags_by_id);
+
+  $where_clauses = ws_std_image_sql_filter($params);
+  if (!empty($where_clauses))
+  {
+    $where_clauses = implode(' AND ', $where_clauses);
+  }
+
+  $image_ids = get_image_ids_for_tags(
+    $tag_ids,
+    $params['tag_mode_and'] ? 'AND' : 'OR',
+    $where_clauses,
+    ws_std_image_sql_order($params)
+    );
+
+  $count_set = count($image_ids);
+  $image_ids = array_slice($image_ids, $params['per_page']*$params['page'], $params['per_page'] );
+
+  $image_tag_map = array();
+  // build list of image ids with associated tags per image
+  if (!empty($image_ids) and !$params['tag_mode_and'])
+  {
+    $query = '
+SELECT image_id, GROUP_CONCAT(tag_id) AS tag_ids
+  FROM '. IMAGE_TAG_TABLE .'
+  WHERE tag_id IN ('. implode(',', $tag_ids) .')
+    AND image_id IN ('. implode(',', $image_ids) .')
+  GROUP BY image_id
+;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $row['image_id'] = (int)$row['image_id'];
+      $image_ids[] = $row['image_id'];
+      $image_tag_map[ $row['image_id'] ] = explode(',', $row['tag_ids']);
+    }
+  }
+
+  $images = array();
+  if (!empty($image_ids))
+  {
+    $rank_of = array_flip($image_ids);
+
+    $query = '
+SELECT *
+  FROM '. IMAGES_TABLE .'
+  WHERE id IN ('. implode(',',$image_ids) .')
+;';
+    $result = pwg_query($query);
+
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $image = array();
+      $image['rank'] = $rank_of[ $row['id'] ];
+
+      foreach (array('id', 'width', 'height', 'hit') as $k)
+      {
+        if (isset($row[$k]))
+        {
+          $image[$k] = (int)$row[$k];
+        }
+      }
+      foreach (array('file', 'name', 'comment', 'date_creation', 'date_available') as $k)
+      {
+        $image[$k] = $row[$k];
+      }
+      $image = array_merge( $image, ws_std_get_urls($row) );
+
+      $image_tag_ids = ($params['tag_mode_and']) ? $tag_ids : $image_tag_map[$image['id']];
+      $image_tags = array();
+      foreach ($image_tag_ids as $tag_id)
+      {
+        $url = make_index_url(
+          array(
+            'section'=>'tags',
+            'tags'=> array($tags_by_id[$tag_id])
+            )
+          );
+        $page_url = make_picture_url(
+          array(
+            'section'=>'tags',
+            'tags'=> array($tags_by_id[$tag_id]),
+            'image_id' => $row['id'],
+            'image_file' => $row['file'],
+            )
+          );
+        $image_tags[] = array(
+          'id' => (int)$tag_id,
+          'url' => $url,
+          'page_url' => $page_url,
+          );
+      }
+
+      $image['tags'] = new PwgNamedArray($image_tags, 'tag', ws_std_get_tag_xml_attributes() );
+      $images[] = $image;
+    }
+
+    usort($images, 'rank_compare');
+    unset($rank_of);
+  }
+
+  return array(
+    'paging' => new PwgNamedStruct(
+      array(
+        'page' => $params['page'],
+        'per_page' => $params['per_page'],
+        'count' => count($images),
+        'total_count' => $count_set,
+        )
+      ),
+    'images' => new PwgNamedArray(
+      $images,
+      'image',
+      ws_std_get_image_xml_attributes()
+      )
+    );
+}
+
+/**
+ * API method
+ * Adds a tag
+ * @param mixed[] $params
+ *    @option string name
+ */
+function ws_tags_add($params, &$service)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $creation_output = create_tag($params['name']);
+
+  if (isset($creation_output['error']))
+  {
+    return new PwgError(500, $creation_output['error']);
+  }
+
+  return $creation_output;
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_functions/pwg.users.php
===================================================================
--- /tags/2.6.0RC1/include/ws_functions/pwg.users.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_functions/pwg.users.php	(revision 25596)
@@ -0,0 +1,569 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * API method
+ * Returns a list of users
+ * @param mixed[] $params
+ *    @option int[] user_id (optional)
+ *    @option string username (optional)
+ *    @option string[] status (optional)
+ *    @option int min_level (optional)
+ *    @option int[] group_id (optional)
+ *    @option int per_page
+ *    @option int page
+ *    @option string order
+ *    @option string display
+ */
+function ws_users_getList($params, &$service)
+{
+  global $conf;
+
+  $where_clauses = array('1=1');
+
+  if (!empty($params['user_id']))
+  {
+    $where_clauses[] = 'u.'.$conf['user_fields']['id'].' IN('. implode(',', $params['user_id']) .')';
+  }
+
+  if (!empty($params['username']))
+  {
+    $where_clauses[] = 'u.'.$conf['user_fields']['username'].' LIKE \''.pwg_db_real_escape_string($params['username']).'\'';
+  }
+
+  if (!empty($params['status']))
+  {
+    $params['status'] = array_intersect($params['status'], get_enums(USER_INFOS_TABLE, 'status'));
+    if (count($params['status']) > 0)
+    {
+      $where_clauses[] = 'ui.status IN("'. implode('","', $params['status']) .'")';
+    }
+  }
+
+  if (!empty($params['min_level']))
+  {
+    if ( !in_array($params['min_level'], $conf['available_permission_levels']) )
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid level');
+    }
+    $where_clauses[] = 'ui.level >= '.$params['min_level'];
+  }
+
+  if (!empty($params['group_id']))
+  {
+    $where_clauses[] = 'ug.group_id IN('. implode(',', $params['group_id']) .')';
+  }
+
+  $display = array('u.'.$conf['user_fields']['id'] => 'id');
+
+  if ($params['display'] != 'none')
+  {
+    $params['display'] = array_map('trim', explode(',', $params['display']));
+
+    if (in_array('all', $params['display']))
+    {
+      $params['display'] = array(
+        'username','email','status','level','groups','language','theme',
+        'nb_image_page','recent_period','expand','show_nb_comments','show_nb_hits',
+        'enabled_high','registration_date','registration_date_string',
+        'registration_date_since', 'last_visit', 'last_visit_string',
+        'last_visit_since'
+        );
+    }
+    else if (in_array('basics', $params['display']))
+    {
+      $params['display'] = array_merge($params['display'], array(
+        'username','email','status','level','groups',
+        ));
+    }
+    $params['display'] = array_flip($params['display']);
+
+    // if registration_date_string or registration_date_since is requested,
+    // then registration_date is automatically added
+    if (isset($params['display']['registration_date_string']) or isset($params['display']['registration_date_since']))
+    {
+      $params['display']['registration_date'] = true;
+    }
+
+    // if last_visit_string or last_visit_since is requested, then
+    // last_visit is automatically added
+    if (isset($params['display']['last_visit_string']) or isset($params['display']['last_visit_since']))
+    {
+      $params['display']['last_visit'] = true;
+    }
+
+    if (isset($params['display']['username']))
+    {
+      $display['u.'.$conf['user_fields']['username']] = 'username';
+    }
+    if (isset($params['display']['email']))
+    {
+      $display['u.'.$conf['user_fields']['email']] = 'email';
+    }
+
+    $ui_fields = array(
+      'status','level','language','theme','nb_image_page','recent_period','expand',
+      'show_nb_comments','show_nb_hits','enabled_high','registration_date'
+      );
+    foreach ($ui_fields as $field)
+    {
+      if (isset($params['display'][$field]))
+      {
+        $display['ui.'.$field] = $field;
+      }
+    }
+  }
+  else
+  {
+    $params['display'] = array();
+  }
+
+  $query = '
+SELECT DISTINCT ';
+
+  $first = true;
+  foreach ($display as $field => $name)
+  {
+    if (!$first) $query.= ', ';
+    else $first = false;
+    $query.= $field .' AS '. $name;
+  }
+  if (isset($params['display']['groups']))
+  {
+    if (!$first) $query.= ', ';
+    $query.= '"" AS groups';
+  }
+
+  $query.= '
+  FROM '. USERS_TABLE .' AS u
+    INNER JOIN '. USER_INFOS_TABLE .' AS ui
+      ON u.'. $conf['user_fields']['id'] .' = ui.user_id
+    LEFT JOIN '. USER_GROUP_TABLE .' AS ug
+      ON u.'. $conf['user_fields']['id'] .' = ug.user_id
+  WHERE
+    '. implode(' AND ', $where_clauses) .'
+  ORDER BY '. $params['order'] .'
+  LIMIT '. $params['per_page'] .'
+  OFFSET '. ($params['per_page']*$params['page']) .'
+;';
+
+  $users = array();
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $row['id'] = intval($row['id']);
+    $users[ $row['id'] ] = $row;
+  }
+
+  if (count($users) > 0)
+  {
+    if (isset($params['display']['groups']))
+    {
+      $query = '
+SELECT user_id, group_id
+  FROM '. USER_GROUP_TABLE .'
+  WHERE user_id IN ('. implode(',', array_keys($users)) .')
+;';
+      $result = pwg_query($query);
+      
+      while ($row = pwg_db_fetch_assoc($result))
+      {
+        $users[ $row['user_id'] ]['groups'][] = intval($row['group_id']);
+      }
+    }
+    
+    if (isset($params['display']['registration_date_string']))
+    {
+      foreach ($users as $cur_user)
+      {
+        $users[$cur_user['id']]['registration_date_string'] = format_date($cur_user['registration_date'], false, false);
+      }
+    }
+
+    if (isset($params['display']['registration_date_since']))
+    {
+      foreach ($users as $cur_user)
+      {
+        $users[ $cur_user['id'] ]['registration_date_since'] = time_since($cur_user['registration_date'], 'month');
+      }
+    }
+
+    if (isset($params['display']['last_visit']))
+    {
+      $query = '
+SELECT
+    MAX(id) as history_id
+  FROM '.HISTORY_TABLE.'
+  WHERE user_id IN ('.implode(',', array_keys($users)).')
+  GROUP BY user_id
+;';
+      $history_ids = array_from_query($query, 'history_id');
+      
+      if (count($history_ids) == 0)
+      {
+        $history_ids[] = -1;
+      }
+      
+      $query = '
+SELECT
+    user_id,
+    date,
+    time
+  FROM '.HISTORY_TABLE.'
+  WHERE id IN ('.implode(',', $history_ids).')
+;';
+      $result = pwg_query($query);
+      while ($row = pwg_db_fetch_assoc($result))
+      {
+        $last_visit = $row['date'].' '.$row['time'];
+        $users[ $row['user_id'] ]['last_visit'] = $last_visit;
+        
+        if (isset($params['display']['last_visit_string']))
+        {
+          $users[ $row['user_id'] ]['last_visit_string'] = format_date($last_visit, false, false);
+        }
+        
+        if (isset($params['display']['last_visit_since']))
+        {
+          $users[ $row['user_id'] ]['last_visit_since'] = time_since($last_visit, 'day');
+        }
+      }
+    }
+  }
+
+  return array(
+    'paging' => new PwgNamedStruct(
+      array(
+        'page' => $params['page'],
+        'per_page' => $params['per_page'],
+        'count' => count($users)
+        )
+      ),
+    'users' => new PwgNamedArray(array_values($users), 'user')
+    );
+}
+
+/**
+ * API method
+ * Adds a user
+ * @param mixed[] $params
+ *    @option string username
+ *    @option string password (optional)
+ *    @option string email (optional)
+ */
+function ws_users_add($params, &$service)
+{
+  global $conf;
+
+  if ($conf['double_password_type_in_admin'])
+  {
+    if ($params['password'] != $params['password_confirm'])
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, l10n('The passwords do not match'));
+    }
+  }
+
+  $user_id = register_user(
+    $params['username'],
+    $params['password'],
+    $params['email'],
+    false, // notify admin
+    $errors,
+    $params['send_password_by_mail']
+    );
+
+  if (!$user_id)
+  {
+    return new PwgError(WS_ERR_INVALID_PARAM, $errors[0]);
+  }
+
+  return $service->invoke('pwg.users.getList', array('user_id'=>$user_id));
+}
+
+/**
+ * API method
+ * Deletes users
+ * @param mixed[] $params
+ *    @option int[] user_id
+ *    @option string pwg_token
+ */
+function ws_users_delete($params, &$service)
+{
+  if (get_pwg_token() != $params['pwg_token'])
+  {
+    return new PwgError(403, 'Invalid security token');
+  }
+
+  global $conf, $user;
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  // protect some users
+  $params['user_id'] = array_diff(
+    $params['user_id'],
+    array(
+      $user['id'],
+      $conf['guest_id'],
+      $conf['default_user_id'],
+      $conf['webmaster_id'],
+      )
+    );
+
+  foreach ($params['user_id'] as $user_id)
+  {
+    delete_user($user_id);
+  }
+
+  return l10n_dec(
+        '%d user deleted', '%d users deleted',
+        count($params['user_id'])
+        );
+}
+
+/**
+ * API method
+ * Updates users
+ * @param mixed[] $params
+ *    @option int[] user_id
+ *    @option string username (optional)
+ *    @option string password (optional)
+ *    @option string email (optional)
+ *    @option string status (optional)
+ *    @option int level (optional)
+ *    @option string language (optional)
+ *    @option string theme (optional)
+ *    @option int nb_image_page (optional)
+ *    @option int recent_period (optional)
+ *    @option bool expand (optional)
+ *    @option bool show_nb_comments (optional)
+ *    @option bool show_nb_hits (optional)
+ *    @option bool enabled_high (optional)
+ */
+function ws_users_setInfo($params, &$service)
+{
+  global $conf, $user;
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $updates = $updates_infos = array();
+  $update_status = null;
+
+  if (count($params['user_id']) == 1)
+  {
+    if (get_username($params['user_id'][0]) === false)
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'This user does not exist.');
+    }
+
+    if (!empty($params['username']))
+    {
+      $user_id = get_userid($params['username']);
+      if ($user_id and $user_id != $params['user_id'][0])
+      {
+        return new PwgError(WS_ERR_INVALID_PARAM, l10n('this login is already used'));
+      }
+      if ($params['username'] != strip_tags($params['username']))
+      {
+        return new PwgError(WS_ERR_INVALID_PARAM, l10n('html tags are not allowed in login'));
+      }
+      $updates[ $conf['user_fields']['username'] ] = $params['username'];
+    }
+
+    if (!empty($params['email']))
+    {
+      if ( ($error = validate_mail_address($params['user_id'][0], $params['email'])) != '')
+      {
+        return new PwgError(WS_ERR_INVALID_PARAM, $error);
+      }
+      $updates[ $conf['user_fields']['email'] ] = $params['email'];
+    }
+
+    if (!empty($params['password']))
+    {
+      $updates[ $conf['user_fields']['password'] ] = $conf['password_hash']($params['password']);
+    }
+  }
+
+  if (!empty($params['status']))
+  {
+    if ( $params['status'] == 'webmaster' and !is_webmaster() )
+    {
+      return new PwgError(403, 'Only webmasters can grant "webmaster" status');
+    }
+    if ( !in_array($params['status'], array('guest','generic','normal','admin','webmaster')) )
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid status');
+    }
+
+    // status update query is separated from the rest as not applying to the same
+    // set of users (current, guest and webmaster can't be changed)
+    $params['user_id_for_status'] = array_diff(
+      $params['user_id'],
+      array(
+        $user['id'],
+        $conf['guest_id'],
+        $conf['webmaster_id'],
+        )
+      );
+
+    $update_status = $params['status'];
+  }
+
+  if (!empty($params['level']) or @$params['level']===0)
+  {
+    if ( !in_array($params['level'], $conf['available_permission_levels']) )
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid level');
+    }
+    $updates_infos['level'] = $params['level'];
+  }
+
+  if (!empty($params['language']))
+  {
+    if ( !in_array($params['language'], array_keys(get_languages())) )
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid language');
+    }
+    $updates_infos['language'] = $params['language'];
+  }
+
+  if (!empty($params['theme']))
+  {
+    if ( !in_array($params['theme'], array_keys(get_pwg_themes())) )
+    {
+      return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid theme');
+    }
+    $updates_infos['theme'] = $params['theme'];
+  }
+
+  if (!empty($params['nb_image_page']))
+  {
+    $updates_infos['nb_image_page'] = $params['nb_image_page'];
+  }
+
+  if (!empty($params['recent_period']) or @$params['recent_period']===0)
+  {
+    $updates_infos['recent_period'] = $params['recent_period'];
+  }
+
+  if (!empty($params['expand']) or @$params['expand']===false)
+  {
+    $updates_infos['expand'] = boolean_to_string($params['expand']);
+  }
+
+  if (!empty($params['show_nb_comments']) or @$params['show_nb_comments']===false)
+  {
+    $updates_infos['show_nb_comments'] = boolean_to_string($params['show_nb_comments']);
+  }
+
+  if (!empty($params['show_nb_hits']) or @$params['show_nb_hits']===false)
+  {
+    $updates_infos['show_nb_hits'] = boolean_to_string($params['show_nb_hits']);
+  }
+
+  if (!empty($params['enabled_high']) or @$params['enabled_high']===false)
+  {
+    $updates_infos['enabled_high'] = boolean_to_string($params['enabled_high']);
+  }
+
+  // perform updates
+  single_update(
+    USERS_TABLE,
+    $updates,
+    array($conf['user_fields']['id'] => $params['user_id'][0])
+    );
+
+  if (isset($update_status) and count($params['user_id_for_status']) > 0)
+  {
+    $query = '
+UPDATE '. USER_INFOS_TABLE .' SET
+    status = "'. $update_status .'"
+  WHERE user_id IN('. implode(',', $params['user_id_for_status']) .')
+;';
+    pwg_query($query);
+  }
+
+  if (count($updates_infos) > 0)
+  {
+    $query = '
+UPDATE '. USER_INFOS_TABLE .' SET ';
+
+    $first = true;
+    foreach ($updates_infos as $field => $value)
+    {
+      if (!$first) $query.= ', ';
+      else $first = false;
+      $query.= $field .' = "'. $value .'"';
+    }
+
+    $query.= '
+  WHERE user_id IN('. implode(',', $params['user_id']) .')
+;';
+    pwg_query($query);
+  }
+
+  // manage association to groups
+  if (!empty($params['group_id']))
+  {
+    $query = '
+DELETE
+  FROM '.USER_GROUP_TABLE.'
+  WHERE user_id IN ('.implode(',', $params['user_id']).')
+;';
+    pwg_query($query);
+
+    // we remove all provided groups that do not really exist
+    $query = '
+SELECT
+    id
+  FROM '.GROUPS_TABLE.'
+  WHERE id IN ('.implode(',', $params['group_id']).')
+;';
+    $group_ids = array_from_query($query, 'id');
+
+    // if only -1 (a group id that can't exist) is in the list, then no
+    // group is associated
+    
+    if (count($group_ids) > 0)
+    {
+      $inserts = array();
+      
+      foreach ($group_ids as $group_id)
+      {
+        foreach ($params['user_id'] as $user_id)
+        {
+          $inserts[] = array('user_id' => $user_id, 'group_id' => $group_id);
+        }
+      }
+
+      mass_inserts(USER_GROUP_TABLE, array_keys($inserts[0]), $inserts);
+    }
+  }
+
+  return $service->invoke('pwg.users.getList', array(
+    'user_id' => $params['user_id'],
+    'display' => 'basics,'.implode(',', array_keys($updates_infos)),
+    ));
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/index.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/index.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/json_encoder.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/json_encoder.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/json_encoder.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class PwgJsonEncoder extends PwgResponseEncoder
+{
+  function encodeResponse($response)
+  {
+    $respClass = strtolower( @get_class($response) );
+    if ($respClass=='pwgerror')
+    {
+      return json_encode(
+        array(
+          'stat' => 'fail',
+          'err' => $response->code(),
+          'message' => $response->message(),
+          )
+      );
+    }
+    parent::flattenResponse($response);
+    return json_encode(
+        array(
+          'stat' => 'ok',
+          'result' => $response,
+      )
+    );
+  }
+
+  function getContentType()
+  {
+    return 'text/plain';
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/php_encoder.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/php_encoder.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/php_encoder.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class PwgSerialPhpEncoder extends PwgResponseEncoder
+{
+  function encodeResponse($response)
+  {
+    $respClass = strtolower( @get_class($response) );
+    if ($respClass=='pwgerror')
+    {
+      return serialize(
+        array(
+          'stat' => 'fail',
+          'err' => $response->code(),
+          'message' => $response->message(),
+          )
+      );
+    }
+    parent::flattenResponse($response);
+    return serialize(
+        array(
+          'stat' => 'ok',
+          'result' => $response
+      )
+    );
+  }
+
+  function getContentType()
+  {
+    return 'text/plain';
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/rest_encoder.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/rest_encoder.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/rest_encoder.php	(revision 25596)
@@ -0,0 +1,284 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+class PwgXmlWriter
+{
+  var $_indent;
+  var $_indentStr;
+
+  var $_elementStack;
+  var $_lastTagOpen;
+  var $_indentLevel;
+
+  var $_encodedXml;
+
+  function PwgXmlWriter()
+  {
+    $this->_elementStack = array();
+    $this->_lastTagOpen = false;
+    $this->_indentLevel = 0;
+
+    $this->_encodedXml = '';
+    $this->_indent = true;
+    $this->_indentStr = "\t";
+  }
+
+  function &getOutput()
+  {
+    return $this->_encodedXml;
+  }
+
+
+  function start_element($name)
+  {
+    $this->_end_prev(false);
+    if (!empty($this->_elementStack))
+    {
+      $this->_eol_indent();
+    }
+    $this->_indentLevel++;
+    $this->_indent();
+    $diff = ord($name[0])-ord('0');
+    if ($diff>=0 && $diff<=9)
+    {
+      $name='_'.$name;
+    }
+    $this->_output( '<'.$name );
+    $this->_lastTagOpen = true;
+    $this->_elementStack[] = $name;
+  }
+
+  function end_element($x)
+  {
+    $close_tag = $this->_end_prev(true);
+    $name = array_pop( $this->_elementStack );
+    if ($close_tag)
+    {
+      $this->_indentLevel--;
+      $this->_indent();
+//      $this->_eol_indent();
+      $this->_output('</'.$name.">");
+    }
+  }
+
+  function write_content($value)
+  {
+    $this->_end_prev(false);
+    $value = (string)$value;
+    $this->_output( htmlspecialchars( $value ) );
+  }
+
+  function write_cdata($value)
+  {
+    $this->_end_prev(false);
+    $value = (string)$value;
+    $this->_output(
+      '<![CDATA['
+      . str_replace(']]>', ']]&gt;', $value)
+      . ']]>' );
+  }
+
+  function write_attribute($name, $value)
+  {
+    $this->_output(' '.$name.'="'.$this->encode_attribute($value).'"');
+  }
+
+  function encode_attribute($value)
+  {
+    return htmlspecialchars( (string)$value);
+  }
+
+  function _end_prev($done)
+  {
+    $ret = true;
+    if ($this->_lastTagOpen)
+    {
+      if ($done)
+      {
+        $this->_indentLevel--;
+        $this->_output( ' />' );
+        //$this->_eol_indent();
+        $ret = false;
+      }
+      else
+      {
+        $this->_output( '>' );
+      }
+      $this->_lastTagOpen = false;
+    }
+    return $ret;
+  }
+
+  function _eol_indent()
+  {
+    if ($this->_indent)
+      $this->_output("\n");
+  }
+
+  function _indent()
+  {
+    if ($this->_indent and
+        $this->_indentLevel > count($this->_elementStack) )
+    {
+      $this->_output(
+        str_repeat( $this->_indentStr, count($this->_elementStack) )
+       );
+    }
+  }
+
+  function _output($raw_content)
+  {
+    $this->_encodedXml .= $raw_content;
+  }
+}
+
+class PwgRestEncoder extends PwgResponseEncoder
+{
+  function encodeResponse($response)
+  {
+    $respClass = strtolower( @get_class($response) );
+    if ($respClass=='pwgerror')
+    {
+      $ret = '<?xml version="1.0"?>
+<rsp stat="fail">
+	<err code="'.$response->code().'" msg="'.htmlspecialchars($response->message()).'" />
+</rsp>';
+      return $ret;
+    }
+
+    $this->_writer = new PwgXmlWriter();
+    $this->encode($response);
+    $ret = $this->_writer->getOutput();
+    $ret = '<?xml version="1.0" encoding="'.get_pwg_charset().'" ?>
+<rsp stat="ok">
+'.$ret.'
+</rsp>';
+
+    return $ret;
+  }
+
+  function getContentType()
+  {
+    return 'text/xml';
+  }
+
+  function encode_array($data, $itemName, $xml_attributes=array())
+  {
+    foreach ($data as $item)
+    {
+      $this->_writer->start_element( $itemName );
+      $this->encode($item, $xml_attributes);
+      $this->_writer->end_element( $itemName );
+    }
+  }
+
+  function encode_struct($data, $skip_underscore, $xml_attributes=array())
+  {
+    foreach ($data as $name => $value)
+    {
+      if (is_numeric($name))
+        continue;
+      if ($skip_underscore and $name[0]=='_')
+        continue;
+      if ( is_null($value) )
+        continue; // null means we dont put it
+      if ( $name==WS_XML_ATTRIBUTES)
+      {
+        foreach ($value as $attr_name => $attr_value)
+        {
+          $this->_writer->write_attribute($attr_name, $attr_value);
+        }
+        unset($data[$name]);
+      }
+      else if ( isset($xml_attributes[$name]) )
+      {
+        $this->_writer->write_attribute($name, $value);
+        unset($data[$name]);
+      }
+    }
+
+    foreach ($data as $name => $value)
+    {
+      if (is_numeric($name))
+        continue;
+      if ($skip_underscore and $name[0]=='_')
+        continue;
+      if ( is_null($value) )
+        continue; // null means we dont put it
+      $this->_writer->start_element($name);
+      $this->encode($value);
+      $this->_writer->end_element($name);
+    }
+  }
+
+  function encode($data, $xml_attributes=array() )
+  {
+    switch (gettype($data))
+    {
+      case 'null':
+      case 'NULL':
+        $this->_writer->write_content('');
+        break;
+      case 'boolean':
+        $this->_writer->write_content($data ? '1' : '0');
+        break;
+      case 'integer':
+      case 'double':
+        $this->_writer->write_content($data);
+        break;
+      case 'string':
+        $this->_writer->write_content($data);
+        break;
+      case 'array':
+        $is_array = range(0, count($data) - 1) === array_keys($data);
+        if ($is_array)
+        {
+          $this->encode_array($data, 'item' );
+        }
+        else
+        {
+          $this->encode_struct($data, false, $xml_attributes);
+        }
+        break;
+      case 'object':
+        switch ( strtolower(@get_class($data)) )
+        {
+          case 'pwgnamedarray':
+            $this->encode_array($data->_content, $data->_itemName, $data->_xmlAttributes);
+            break;
+          case 'pwgnamedstruct':
+						$this->encode_struct($data->_content, false, $data->_xmlAttributes);
+            break;
+          default:
+            $this->encode_struct(get_object_vars($data), true);
+            break;
+        }
+        break;
+      default:
+        trigger_error("Invalid type ". gettype($data)." ".@get_class($data), E_USER_WARNING );
+    }
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/rest_handler.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/rest_handler.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/rest_handler.php	(revision 25596)
@@ -0,0 +1,61 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+class PwgRestRequestHandler extends PwgRequestHandler
+{
+  function handleRequest(&$service)
+  {
+    $params = array();
+
+    $param_array = $service->isPost() ? $_POST : $_GET;
+    foreach ($param_array as $name => $value)
+    {
+      if ($name=='format')
+        continue; // ignore - special keys
+      if ($name=='method')
+      {
+        $method = $value;
+      }
+      else
+      {
+        $params[$name]=$value;
+      }
+    }
+		if ( empty($method) && isset($_GET['method']) )
+		{
+			$method = $_GET['method'];
+		}
+
+    if ( empty($method) )
+    {
+      $service->sendResponse(
+          new PwgError(WS_ERR_INVALID_METHOD, 'Missing "method" name')
+        );
+      return;
+    }
+    $resp = $service->invoke($method, $params);
+    $service->sendResponse($resp);
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/include/ws_protocols/xmlrpc_encoder.php
===================================================================
--- /tags/2.6.0RC1/include/ws_protocols/xmlrpc_encoder.php	(revision 25596)
+++ /tags/2.6.0RC1/include/ws_protocols/xmlrpc_encoder.php	(revision 25596)
@@ -0,0 +1,115 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function xmlrpc_encode($data)
+{
+  switch (gettype($data))
+  {
+    case 'boolean':
+      return '<boolean>'.($data ? '1' : '0').'</boolean>';
+    case 'integer':
+      return '<int>'.$data.'</int>';
+    case 'double':
+      return '<double>'.$data.'</double>';
+    case 'string':
+      return '<string>'.htmlspecialchars($data).'</string>';
+    case 'object':
+    case 'array':
+      $is_array = range(0, count($data) - 1) === array_keys($data);
+      if ($is_array)
+      {
+        $return = '<array><data>'."\n";
+        foreach ($data as $item)
+        {
+          $return .= '  <value>'.xmlrpc_encode($item)."</value>\n";
+        }
+        $return .= '</data></array>';
+      }
+      else
+      {
+        $return = '<struct>'."\n";
+        foreach ($data as $name => $value)
+        {
+					$name = htmlspecialchars($name);
+          $return .= "  <member><name>$name</name><value>";
+          $return .= xmlrpc_encode($value)."</value></member>\n";
+        }
+        $return .= '</struct>';
+      }
+      return $return;
+  }
+}
+
+class PwgXmlRpcEncoder extends PwgResponseEncoder
+{
+  function encodeResponse($response)
+  {
+    $respClass = strtolower( @get_class($response) );
+    if ($respClass=='pwgerror')
+    {
+      $code = $response->code();
+      $msg = htmlspecialchars($response->message());
+      $ret = <<<EOD
+<methodResponse>
+  <fault>
+    <value>
+      <struct>
+        <member>
+          <name>faultCode</name>
+          <value><int>{$code}</int></value>
+        </member>
+        <member>
+          <name>faultString</name>
+          <value><string>{$msg}</string></value>
+        </member>
+      </struct>
+    </value>
+  </fault>
+</methodResponse>
+EOD;
+      return $ret;
+    }
+
+    parent::flattenResponse($response);
+    $ret = xmlrpc_encode($response);
+    $ret = <<<EOD
+<methodResponse>
+  <params>
+    <param>
+      <value>
+        $ret
+      </value>
+    </param>
+  </params>
+</methodResponse>
+EOD;
+    return $ret;
+  }
+
+  function getContentType()
+  {
+    return 'text/xml';
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/index.php
===================================================================
--- /tags/2.6.0RC1/index.php	(revision 25596)
+++ /tags/2.6.0RC1/index.php	(revision 25596)
@@ -0,0 +1,366 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//--------------------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+include(PHPWG_ROOT_PATH.'include/section_init.inc.php');
+
+// Check Access and exit when user status is not ok
+check_status(ACCESS_GUEST);
+
+
+// access authorization check
+if (isset($page['category']))
+{
+  check_restrictions($page['category']['id']);
+}
+if ($page['start']>0 && $page['start']>=count($page['items']))
+{
+  page_not_found('', duplicate_index_url(array('start'=>0)));
+}
+
+trigger_action('loc_begin_index');
+
+//---------------------------------------------- change of image display order
+if (isset($_GET['image_order']))
+{
+  if ( (int)$_GET['image_order'] > 0)
+  {
+    pwg_set_session_var('image_order', (int)$_GET['image_order']);
+  }
+  else
+  {
+    pwg_unset_session_var('image_order');
+  }
+  redirect(
+    duplicate_index_url(
+      array(),        // nothing to redefine
+      array('start')  // changing display order goes back to section first page
+      )
+    );
+}
+if (isset($_GET['display']))
+{
+  $page['meta_robots']['noindex']=1;
+  if (array_key_exists($_GET['display'], ImageStdParams::get_defined_type_map()))
+  {
+    pwg_set_session_var('index_deriv', $_GET['display']);
+  }
+}
+
+//-------------------------------------------------------------- initialization
+// navigation bar
+$page['navigation_bar'] = array();
+if (count($page['items']) > $page['nb_image_page'])
+{
+  $page['navigation_bar'] = create_navigation_bar(
+    duplicate_index_url(array(), array('start')),
+    count($page['items']),
+    $page['start'],
+    $page['nb_image_page'],
+    true, 'start'
+    );
+}
+
+$template->assign('thumb_navbar', $page['navigation_bar'] );
+
+// caddie filling :-)
+if (isset($_GET['caddie']))
+{
+  fill_caddie($page['items']);
+  redirect(duplicate_index_url());
+}
+
+if (isset($page['is_homepage']) and $page['is_homepage'])
+{
+  $canonical_url = get_gallery_home_url();
+}
+else
+{
+  $start = $page['nb_image_page'] * round($page['start'] / $page['nb_image_page']);
+  if ($start>0 && $start >= count($page['items']) )
+  {
+    $start -= $page['nb_image_page'];
+  }
+  $canonical_url = duplicate_index_url(array('start' => $start));
+}
+$template->assign('U_CANONICAL', $canonical_url);
+
+//-------------------------------------------------------------- page title
+$title = $page['title'];
+$template_title = $page['section_title'];
+if (count($page['items']) > 0)
+{
+  $template_title.= ' ['.count($page['items']).']';
+}
+$template->assign('TITLE', $template_title);
+
+//-------------------------------------------------------------- menubar
+include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+
+$template->set_filename('index', 'index.tpl');
+
+// +-----------------------------------------------------------------------+
+// |  index page (categories, thumbnails, search, calendar, random, etc.)  |
+// +-----------------------------------------------------------------------+
+if ( empty($page['is_external']) or !$page['is_external'] )
+{
+  //----------------------------------------------------- template initialization
+  $page['body_id'] = 'theCategoryPage';
+  
+  if (isset($page['flat']) or isset($page['chronology_field']))
+  {
+    $template->assign(
+      'U_MODE_NORMAL',
+      duplicate_index_url( array(), array('chronology_field', 'start', 'flat') )
+      );
+  }
+
+  if ($conf['index_flat_icon'] and !isset($page['flat']) and 'categories' == $page['section'])
+  {
+    $template->assign(
+      'U_MODE_FLAT',
+      duplicate_index_url(array('flat' => ''), array('start', 'chronology_field'))
+      );
+  }
+
+  if (!isset($page['chronology_field']))
+  {
+    $chronology_params = array(
+      'chronology_field' => 'created',
+      'chronology_style' => 'monthly',
+      'chronology_view' => 'list',
+      );
+    if ($conf['index_created_date_icon'])
+    {
+      $template->assign(
+        'U_MODE_CREATED',
+        duplicate_index_url( $chronology_params, array('start', 'flat') )
+        );
+    }
+    if ($conf['index_posted_date_icon'])
+    {
+      $chronology_params['chronology_field'] = 'posted';
+      $template->assign(
+        'U_MODE_POSTED',
+        duplicate_index_url( $chronology_params, array('start', 'flat') )
+        );
+    }
+  }
+  else
+  {
+    if ($page['chronology_field'] == 'created')
+    {
+      $chronology_field = 'posted';
+    }
+    else
+    {
+      $chronology_field = 'created';
+    }
+    if ($conf['index_'.$chronology_field.'_date_icon'])
+    {
+      $url = duplicate_index_url(
+                array('chronology_field'=>$chronology_field ),
+                array('chronology_date', 'start', 'flat')
+              );
+      $template->assign(
+          'U_MODE_'.strtoupper($chronology_field),
+          $url
+        );
+    }
+  }
+
+  if ('search' == $page['section'])
+  {
+    $template->assign(
+      'U_SEARCH_RULES',
+      get_root_url().'search_rules.php?search_id='.$page['search']
+      );
+  }
+
+  if (isset($page['category']) and is_admin())
+  {
+    $template->assign(
+      'U_EDIT',
+      get_root_url().'admin.php?page=album-'.$page['category']['id']
+      );
+  }
+
+  if (is_admin() and !empty($page['items']))
+  {
+    $template->assign(
+      'U_CADDIE',
+       add_url_params(duplicate_index_url(), array('caddie'=>1) )
+      );
+  }
+
+  if ( $page['section']=='search' and $page['start']==0 and
+      !isset($page['chronology_field']) and isset($page['qsearch_details']) )
+  {
+    $template->assign('QUERY_SEARCH',
+      htmlspecialchars($page['qsearch_details']['q']) );
+
+    $cats = array_merge(
+        (array)@$page['qsearch_details']['matching_cats_no_images'],
+        (array)@$page['qsearch_details']['matching_cats'] );
+    if (count($cats))
+    {
+      usort($cats, 'name_compare');
+      $hints = array();
+      foreach ( $cats as $cat )
+      {
+        $hints[] = get_cat_display_name( array($cat), '' );
+      }
+      $template->assign( 'category_search_results', $hints);
+    }
+
+    $tags = (array)@$page['qsearch_details']['matching_tags'];
+    foreach ( $tags as $tag )
+    {
+      $tag['URL'] = make_index_url(array('tags'=>array($tag)));
+      $template->append( 'tag_search_results', $tag);
+    }
+  }
+
+  // image order
+  if ( $conf['index_sort_order_input']
+      and count($page['items']) > 0
+      and $page['section'] != 'most_visited'
+      and $page['section'] != 'best_rated')
+  {
+    $preferred_image_orders = get_category_preferred_image_orders();
+    $order_idx = pwg_get_session_var( 'image_order', 0 );
+    
+    // get first order field and direction
+    $first_order = substr($conf['order_by'], 9);
+    if (($pos = strpos($first_order, ',')) !== false)
+    {
+      $first_order = substr($first_order, 0, $pos);
+    }
+    $first_order = trim($first_order);
+    
+    $url = add_url_params(
+            duplicate_index_url(),
+            array('image_order' => '')
+          );
+    $tpl_orders = array();
+    $order_selected = false;
+    
+    foreach ($preferred_image_orders as $order_id => $order)
+    {
+      if ($order[2])
+      {
+        // force select if the field is the first field of order_by
+        if (!$order_selected && $order[1]==$first_order)
+        {
+          $order_idx = $order_id;
+          $order_selected = true;
+        }
+        
+        $tpl_orders[ $order_id ] = array(
+          'DISPLAY' => $order[0],
+          'URL' => $url.$order_id,
+          'SELECTED' => $order_idx==$order_id,
+          );
+      }
+    }
+    
+    $tpl_orders[0]['SELECTED'] = !$order_selected; // unselect "Default" if another one is selected
+    $template->assign('image_orders', $tpl_orders);
+  }
+
+  // category comment
+  if ($page['start']==0 and !isset($page['chronology_field']) and !empty($page['comment']) )
+  {
+    $template->assign('CONTENT_DESCRIPTION', $page['comment'] );
+  }
+
+  if ( isset($page['category']['count_categories']) and $page['category']['count_categories']==0 )
+  {// count_categories might be computed by menubar - if the case unassign flat link if no sub albums
+    $template->clear_assign('U_MODE_FLAT');
+  }
+
+  //------------------------------------------------------ main part : thumbnails
+  if ( 0==$page['start']
+    and !isset($page['flat'])
+    and !isset($page['chronology_field'])
+    and ('recent_cats'==$page['section'] or 'categories'==$page['section'])
+    and (!isset($page['category']['count_categories']) or $page['category']['count_categories']>0 )
+  )
+  {
+    include(PHPWG_ROOT_PATH.'include/category_cats.inc.php');
+  }
+
+  if ( !empty($page['items']) )
+  {
+    include(PHPWG_ROOT_PATH.'include/category_default.inc.php');
+    $url = add_url_params(
+            duplicate_index_url(),
+            array('display' => '')
+          );
+    
+    $selected_type = $template->get_template_vars('derivative_params')->type;
+    $template->clear_assign( 'derivative_params' );
+    $type_map = ImageStdParams::get_defined_type_map();
+    unset($type_map[IMG_XXLARGE], $type_map[IMG_XLARGE]);
+    
+    foreach($type_map as $params)
+    {
+      $template->append(
+        'image_derivatives',
+        array(
+          'DISPLAY' => l10n($params->type),
+          'URL' => $url.$params->type,
+          'SELECTED' => ($params->type == $selected_type ? true:false),
+          )
+        );
+    }
+  }
+
+  // slideshow
+  // execute after init thumbs in order to have all picture informations
+  if (!empty($page['cat_slideshow_url']))
+  {
+    if (isset($_GET['slideshow']))
+    {
+      redirect($page['cat_slideshow_url']);
+    }
+    elseif ($conf['index_slideshow_icon'])
+    {
+      $template->assign('U_SLIDESHOW', $page['cat_slideshow_url']);
+    }
+  }
+}
+
+//------------------------------------------------------------ end
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_index');
+flush_page_messages();
+$template->parse_index_buttons();
+$template->pparse('index');
+
+//------------------------------------------------------------ log informations
+pwg_log();
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/install.php
===================================================================
--- /tags/2.6.0RC1/install.php	(revision 25596)
+++ /tags/2.6.0RC1/install.php	(revision 25596)
@@ -0,0 +1,528 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+
+@set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
+//
+// addslashes to vars if magic_quotes_gpc is off this is a security
+// precaution to prevent someone trying to break out of a SQL statement.
+//
+if( !@get_magic_quotes_gpc() )
+{
+  if( is_array($_POST) )
+  {
+    while( list($k, $v) = each($_POST) )
+    {
+      if( is_array($_POST[$k]) )
+      {
+        while( list($k2, $v2) = each($_POST[$k]) )
+        {
+          $_POST[$k][$k2] = addslashes($v2);
+        }
+        @reset($_POST[$k]);
+      }
+      else
+      {
+        $_POST[$k] = addslashes($v);
+      }
+    }
+    @reset($_POST);
+  }
+
+  if( is_array($_GET) )
+  {
+    while( list($k, $v) = each($_GET) )
+    {
+      if( is_array($_GET[$k]) )
+      {
+        while( list($k2, $v2) = each($_GET[$k]) )
+        {
+          $_GET[$k][$k2] = addslashes($v2);
+        }
+        @reset($_GET[$k]);
+      }
+      else
+      {
+        $_GET[$k] = addslashes($v);
+      }
+    }
+    @reset($_GET);
+  }
+
+  if( is_array($_COOKIE) )
+  {
+    while( list($k, $v) = each($_COOKIE) )
+    {
+      if( is_array($_COOKIE[$k]) )
+      {
+        while( list($k2, $v2) = each($_COOKIE[$k]) )
+        {
+          $_COOKIE[$k][$k2] = addslashes($v2);
+        }
+        @reset($_COOKIE[$k]);
+      }
+      else
+      {
+        $_COOKIE[$k] = addslashes($v);
+      }
+    }
+    @reset($_COOKIE);
+  }
+}
+
+//----------------------------------------------------- variable initialization
+
+define('DEFAULT_PREFIX_TABLE', 'piwigo_');
+
+if (isset($_POST['install']))
+{
+  $prefixeTable = $_POST['prefix'];
+}
+else
+{
+  $prefixeTable = DEFAULT_PREFIX_TABLE;
+}
+
+include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
+
+include(PHPWG_ROOT_PATH . 'include/functions.inc.php');
+
+// download database config file if exists
+check_input_parameter('dl', $_GET, false, '/^[a-f0-9]{32}$/');
+
+if (!empty($_GET['dl']) && file_exists(PHPWG_ROOT_PATH.$conf['data_location'].'pwg_'.$_GET['dl']))
+{
+  $filename = PHPWG_ROOT_PATH.$conf['data_location'].'pwg_'.$_GET['dl'];
+  header('Cache-Control: no-cache, must-revalidate');
+  header('Pragma: no-cache');
+  header('Content-Disposition: attachment; filename="database.inc.php"');
+  header('Content-Transfer-Encoding: binary');
+  header('Content-Length: '.filesize($filename));
+  echo file_get_contents($filename);
+  unlink($filename);
+  exit();
+} 
+
+// Obtain various vars
+$dbhost = (!empty($_POST['dbhost'])) ? $_POST['dbhost'] : 'localhost';
+$dbuser = (!empty($_POST['dbuser'])) ? $_POST['dbuser'] : '';
+$dbpasswd = (!empty($_POST['dbpasswd'])) ? $_POST['dbpasswd'] : '';
+$dbname = (!empty($_POST['dbname'])) ? $_POST['dbname'] : '';
+$dblayer = extension_loaded('mysqli') ? 'mysqli' : 'mysql';
+
+$admin_name = (!empty($_POST['admin_name'])) ? $_POST['admin_name'] : '';
+$admin_pass1 = (!empty($_POST['admin_pass1'])) ? $_POST['admin_pass1'] : '';
+$admin_pass2 = (!empty($_POST['admin_pass2'])) ? $_POST['admin_pass2'] : '';
+$admin_mail = (!empty($_POST['admin_mail'])) ? $_POST['admin_mail'] : '';
+
+$is_newsletter_subscribe = true;
+if (isset($_POST['install']))
+{
+  $is_newsletter_subscribe = isset($_POST['newsletter_subscribe']);
+}
+
+$infos = array();
+$errors = array();
+
+$config_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php';
+if (@file_exists($config_file))
+{
+  include($config_file);
+  // Is Piwigo already installed ?
+  if (defined("PHPWG_INSTALLED"))
+  {
+    die('Piwigo is already installed');
+  }
+}
+
+include(PHPWG_ROOT_PATH . 'include/constants.php');
+include(PHPWG_ROOT_PATH . 'admin/include/functions.php');
+
+include(PHPWG_ROOT_PATH . 'admin/include/languages.class.php');
+$languages = new languages('utf-8');
+
+if (isset($_GET['language']))
+{
+  $language = strip_tags($_GET['language']);
+  
+  if (!in_array($language, array_keys($languages->fs_languages)))
+  {
+    $language = PHPWG_DEFAULT_LANGUAGE;
+  }
+}
+else
+{
+  $language = 'en_UK';
+  // Try to get browser language
+  foreach ($languages->fs_languages as $language_code => $fs_language)
+  {
+    if (substr($language_code,0,2) == @substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2))
+    {
+      $language = $language_code;
+      break;
+    }
+  }
+}
+
+if ('fr_FR' == $language) {
+  define('PHPWG_DOMAIN', 'fr.piwigo.org');
+}
+else if ('it_IT' == $language) {
+  define('PHPWG_DOMAIN', 'it.piwigo.org');
+}
+else if ('de_DE' == $language) {
+  define('PHPWG_DOMAIN', 'de.piwigo.org');
+}
+else if ('es_ES' == $language) {
+  define('PHPWG_DOMAIN', 'es.piwigo.org');
+}
+else if ('pl_PL' == $language) {
+  define('PHPWG_DOMAIN', 'pl.piwigo.org');
+}
+else if ('zh_CN' == $language) {
+  define('PHPWG_DOMAIN', 'cn.piwigo.org');
+}
+else if ('hu_HU' == $language) {
+  define('PHPWG_DOMAIN', 'hu.piwigo.org');
+}
+else if ('ru_RU' == $language) {
+  define('PHPWG_DOMAIN', 'ru.piwigo.org');
+}
+else if ('nl_NL' == $language) {
+  define('PHPWG_DOMAIN', 'nl.piwigo.org');
+}
+else if ('tr_TR' == $language) {
+  define('PHPWG_DOMAIN', 'tr.piwigo.org');
+}
+else if ('da_DK' == $language) {
+  define('PHPWG_DOMAIN', 'da.piwigo.org');
+}
+else if ('pt_BR' == $language) {
+  define('PHPWG_DOMAIN', 'br.piwigo.org');
+}
+else {
+  define('PHPWG_DOMAIN', 'piwigo.org');
+}
+define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
+
+load_language('common.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+load_language('admin.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+load_language('install.lang', '', array('language' => $language, 'target_charset'=>'utf-8'));
+
+header('Content-Type: text/html; charset=UTF-8');
+//------------------------------------------------- check php version
+if (version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '<'))
+{
+  include(PHPWG_ROOT_PATH.'install/php5_apache_configuration.php');
+}
+
+//----------------------------------------------------- template initialization
+$template = new Template(PHPWG_ROOT_PATH.'admin/themes', 'clear');
+$template->set_filenames( array('install' => 'install.tpl') );
+if (!isset($step))
+{
+  $step = 1;
+}
+//---------------------------------------------------------------- form analyze
+include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$dblayer.'.inc.php');
+include(PHPWG_ROOT_PATH . 'admin/include/functions_install.inc.php');
+include(PHPWG_ROOT_PATH . 'admin/include/functions_upgrade.php');
+
+if (isset($_POST['install']))
+{
+  install_db_connect($infos, $errors);
+  pwg_db_check_charset();
+
+  $webmaster = trim(preg_replace('/\s{2,}/', ' ', $admin_name));
+  if (empty($webmaster))
+  {
+    $errors[] = l10n('enter a login for webmaster');
+  }
+  else if (preg_match( '/[\'"]/', $webmaster))
+  {
+    $errors[] = l10n('webmaster login can\'t contain characters \' or "');
+  }
+  if ($admin_pass1 != $admin_pass2 || empty($admin_pass1))
+  {
+    $errors[] = l10n('please enter your password again');
+  }
+  if (empty($admin_mail))
+  {
+    $errors[] = l10n('mail address must be like xxx@yyy.eee (example : jack@altern.org)');
+  }
+  else
+  {
+    $error_mail_address = validate_mail_address(null, $admin_mail);
+    if (!empty($error_mail_address))
+    {
+      $errors[] = $error_mail_address;
+    }
+  }
+
+  if ( count( $errors ) == 0 )
+  {
+    $step = 2;
+    $file_content = '<?php
+$conf[\'dblayer\'] = \''.$dblayer.'\';
+$conf[\'db_base\'] = \''.$dbname.'\';
+$conf[\'db_user\'] = \''.$dbuser.'\';
+$conf[\'db_password\'] = \''.$dbpasswd.'\';
+$conf[\'db_host\'] = \''.$dbhost.'\';
+
+$prefixeTable = \''.$prefixeTable.'\';
+
+define(\'PHPWG_INSTALLED\', true);
+define(\'PWG_CHARSET\', \'utf-8\');
+define(\'DB_CHARSET\', \'utf8\');
+define(\'DB_COLLATE\', \'\');
+
+?'.'>';
+
+    @umask(0111);
+    // writing the configuration file
+    if ( !($fp = @fopen( $config_file, 'w' )))
+    {
+      // make sure nobody can list files of _data directory
+      secure_directory(PHPWG_ROOT_PATH.$conf['data_location']);
+      
+      $tmp_filename = md5(uniqid(time()));
+      $fh = @fopen( PHPWG_ROOT_PATH.$conf['data_location'] . 'pwg_' . $tmp_filename, 'w' );
+      @fputs($fh, $file_content, strlen($file_content));
+      @fclose($fh);
+
+      $template->assign(
+        array(
+          'config_creation_failed' => true,
+          'config_url' => 'install.php?dl='.$tmp_filename,
+          'config_file_content' => $file_content,
+          )
+        );
+    }
+    @fputs($fp, $file_content, strlen($file_content));
+    @fclose($fp);
+
+    // tables creation, based on piwigo_structure.sql
+    execute_sqlfile(
+      PHPWG_ROOT_PATH.'install/piwigo_structure-mysql.sql',
+      DEFAULT_PREFIX_TABLE,
+      $prefixeTable,
+      'mysql'
+      );
+    // We fill the tables with basic informations
+    execute_sqlfile(
+      PHPWG_ROOT_PATH.'install/config.sql',
+      DEFAULT_PREFIX_TABLE,
+      $prefixeTable,
+      'mysql'
+      );
+
+    $query = '
+INSERT INTO '.$prefixeTable.'config (param,value,comment) 
+   VALUES (\'secret_key\',md5('.pwg_db_cast_to_text(DB_RANDOM_FUNCTION.'()').'),
+   \'a secret key specific to the gallery for internal use\');';
+    pwg_query($query);
+
+    conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
+    conf_update_param('gallery_title', l10n('Just another Piwigo gallery'));
+    conf_update_param('page_banner', '<h1>%gallery_title%</h1>'."\n\n<p>".l10n('Welcome to my photo gallery').'</p>');
+
+    // fill languages table
+    foreach ($languages->fs_languages as $language_code => $fs_language)
+    {
+      $languages->perform_action('activate', $language_code);
+    }
+
+    // fill $conf global array
+    load_conf_from_db();
+
+    // PWG_CHARSET is required for building the fs_themes array in the
+    // themes class
+    if (!defined('PWG_CHARSET'))
+    {
+      define('PWG_CHARSET', 'utf-8');
+    }
+    activate_core_themes();
+
+    $insert = array(
+      'id' => 1,
+      'galleries_url' => PHPWG_ROOT_PATH.'galleries/',
+      );
+    mass_inserts(SITES_TABLE, array_keys($insert), array($insert));
+
+    // webmaster admin user
+    $inserts = array(
+      array(
+        'id'           => 1,
+        'username'     => $admin_name,
+        'password'     => md5($admin_pass1),
+        'mail_address' => $admin_mail,
+        ),
+      array(
+        'id'           => 2,
+        'username'     => 'guest',
+        ),
+      );
+    mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts);
+
+    create_user_infos(array(1,2), array('language' => $language));
+
+    // Available upgrades must be ignored after a fresh installation. To
+    // make PWG avoid upgrading, we must tell it upgrades have already been
+    // made.
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+    define('CURRENT_DATE', $dbnow);
+    $datas = array();
+    foreach (get_available_upgrade_ids() as $upgrade_id)
+    {
+      $datas[] = array(
+        'id'          => $upgrade_id,
+        'applied'     => CURRENT_DATE,
+        'description' => 'upgrade included in installation',
+        );
+    }
+    mass_inserts(
+      UPGRADE_TABLE,
+      array_keys($datas[0]),
+      $datas
+      );
+
+    if ($is_newsletter_subscribe)
+    {
+      fetchRemote(
+        get_newsletter_subscribe_base_url($language).$admin_mail,
+        $result,
+        array(),
+        array('origin' => 'installation')
+        );
+    }
+  }
+}
+
+//------------------------------------------------------ start template output
+foreach ($languages->fs_languages as $language_code => $fs_language)
+{
+  if ($language == $language_code)
+  {
+    $template->assign('language_selection', $language_code);
+  }
+  $languages_options[$language_code] = $fs_language['name'];
+}
+$template->assign('language_options', $languages_options);
+
+$template->assign(
+  array(
+    'T_CONTENT_ENCODING' => 'utf-8',
+    'RELEASE' => PHPWG_VERSION,
+    'F_ACTION' => 'install.php?language=' . $language,
+    'F_DB_HOST' => $dbhost,
+    'F_DB_USER' => $dbuser,
+    'F_DB_NAME' => $dbname,
+    'F_DB_PREFIX' => $prefixeTable,
+    'F_ADMIN' => $admin_name,
+    'F_ADMIN_EMAIL' => $admin_mail,
+    'EMAIL' => '<span class="adminEmail">'.$admin_mail.'</span>',
+    'F_NEWSLETTER_SUBSCRIBE' => $is_newsletter_subscribe,
+    'L_INSTALL_HELP' => l10n('Need help ? Ask your question on <a href="%s">Piwigo message board</a>.', PHPWG_URL.'/forum'),
+    ));
+
+//------------------------------------------------------ errors & infos display
+if ($step == 1)
+{
+  $template->assign('install', true);
+}
+else
+{
+  $infos[] = l10n('Congratulations, Piwigo installation is completed');
+
+  if (isset($error_copy))
+  {
+    $errors[] = $error_copy;
+  }
+  else
+  {
+    session_set_save_handler('pwg_session_open',
+      'pwg_session_close',
+      'pwg_session_read',
+      'pwg_session_write',
+      'pwg_session_destroy',
+      'pwg_session_gc'
+    );
+    if ( function_exists('ini_set') )
+    {
+      ini_set('session.use_cookies', $conf['session_use_cookies']);
+      ini_set('session.use_only_cookies', $conf['session_use_only_cookies']);
+      ini_set('session.use_trans_sid', intval($conf['session_use_trans_sid']));
+      ini_set('session.cookie_httponly', 1);
+    }
+    session_name($conf['session_name']);
+    session_set_cookie_params(0, cookie_path());
+    register_shutdown_function('session_write_close');
+    
+    $user = build_user(1, true);
+    log_user($user['id'], false);
+    
+    // email notification
+    if (isset($_POST['send_password_by_mail']))
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+            
+      $keyargs_content = array(
+        get_l10n_args('Hello %s,', $admin_name),
+        get_l10n_args('Welcome to your new installation of Piwigo!', ''),
+        get_l10n_args('', ''),
+        get_l10n_args('Here are your connection settings', ''),
+        get_l10n_args('Username: %s', $admin_name),
+        get_l10n_args('Password: %s', $admin_pass1),
+        get_l10n_args('Email: %s', $admin_mail),
+        get_l10n_args('', ''),
+        get_l10n_args('Don\'t hesitate to consult our forums for any help: %s', PHPWG_URL),
+        );
+        
+      pwg_mail(
+        $admin_mail,
+        array(
+          'subject' => l10n('Just another Piwigo gallery'),
+          'content' => l10n_args($keyargs_content),
+          'content_format' => 'text/plain',
+          )
+        );
+    }
+  }
+}
+if (count($errors) != 0)
+{
+  $template->assign('errors', $errors);
+}
+
+if (count($infos) != 0 )
+{
+  $template->assign('infos', $infos);
+}
+
+//----------------------------------------------------------- html code display
+$template->pparse('install');
+?>
Index: /tags/2.6.0RC1/install/config.sql
===================================================================
--- /tags/2.6.0RC1/install/config.sql	(revision 25596)
+++ /tags/2.6.0RC1/install/config.sql	(revision 25596)
@@ -0,0 +1,66 @@
+-- initial configuration for Piwigo
+
+INSERT INTO piwigo_config (param,value,comment) VALUES ('activate_comments','true','Global parameter for usage of comments system');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nb_comment_page','10','number of comments to display on each page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('log','true','keep an history of visits on your website');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_validation','false','administrators validate users comments before becoming visible');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_forall','false','even guest not registered can post comments');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_order','ASC','comments order on picture page and cie');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_author_mandatory','false','Comment author is mandatory');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_email_mandatory','false','Comment email is mandatory');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('user_can_delete_comment','false','administrators can allow user delete their own comments');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('user_can_edit_comment','false','administrators can allow user edit their own comments');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_edition','false','Send an email to the administrators when a comment is modified');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_deletion','false','Send an email to the administrators when a comment is deleted');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('gallery_locked','false','Lock your gallery temporary for non admin users');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('gallery_title','','Title at top of each page and for RSS feed');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('rate','true','Rating pictures feature is enabled');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('rate_anonymous','true','Rating pictures feature is also enabled for visitors');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('page_banner','','html displayed on the top each page of your gallery');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('history_admin','false','keep a history of administrator visits on your website');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('history_guest','true','keep a history of guest visits on your website');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_registration','true','allow visitors to register?');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_customization','true','allow users to customize their gallery?');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nb_categories_page','12','Param for categories pagination');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_html_mail','true','Send mail on HTML format for notification by mail');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_mail_as','','Send mail as param value for notification by mail');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_detailed_content','true','Send detailed content for notification by mail');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_complementary_mail_content','','Complementary mail content for notification by mail');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_recent_post_dates','true','Send recent post by dates for notification by mail');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_new_user','false','Send an email to theadministrators when a user registers');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment','false','Send an email to the administrators when a valid comment is entered');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_validation','true','Send an email to the administrators when a comment requires validation');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('obligatory_user_mail_address','false','Mail address is obligatory for users');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('c13y_ignore',null,'List of ignored anomalies');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('extents_for_templates','a:0:{}','Actived template-extension(s)');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('blk_menubar','','Menubar options');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('menubar_filter_icon','false','Display filter icon');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_sort_order_input','true','Display image order selection list');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_flat_icon','false','Display flat icon');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_posted_date_icon','true','Display calendar by posted date');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_created_date_icon','true','Display calendar by creation date icon');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_slideshow_icon','true','Display slideshow icon');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('index_new_icon','true','Display new icons next albums and pictures');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_metadata_icon','true','Display metadata icon on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_slideshow_icon','true','Display slideshow icon on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_favorite_icon','true','Display favorite icon on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_download_icon','true','Display download icon on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_navigation_icons','true','Display navigation icons on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_navigation_thumb','true','Display navigation thumbnails on picture page');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_menu','false','Show menubar on picture page');
+INSERT INTO piwigo_config (param,value,comment)
+  VALUES (
+    'picture_informations',
+    'a:11:{s:6:"author";b:1;s:10:"created_on";b:1;s:9:"posted_on";b:1;s:10:"dimensions";b:0;s:4:"file";b:0;s:8:"filesize";b:0;s:4:"tags";b:1;s:10:"categories";b:1;s:6:"visits";b:1;s:12:"rating_score";b:1;s:13:"privacy_level";b:1;}',
+    'Information displayed on picture page'
+  );
+INSERT INTO piwigo_config (param,value,comment) VALUES ('week_starts_on','monday','Monday may not be the first day of the week');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('updates_ignored','a:3:{s:7:"plugins";a:0:{}s:6:"themes";a:0:{}s:9:"languages";a:0:{}}','Extensions ignored for update');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by','ORDER BY date_available DESC, file ASC, id ASC','default photo order');
+INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by_inside_category','ORDER BY date_available DESC, file ASC, id ASC','default photo order inside category');
+INSERT INTO piwigo_config (param,value) VALUES ('original_resize','false');
+INSERT INTO piwigo_config (param,value) VALUES ('original_resize_maxwidth','2016');
+INSERT INTO piwigo_config (param,value) VALUES ('original_resize_maxheight','2016');
+INSERT INTO piwigo_config (param,value) VALUES ('original_resize_quality','95');
+INSERT INTO piwigo_config (param,value) VALUES ('mobile_theme',null);
+INSERT INTO piwigo_config (param,value) VALUES ('mail_theme','clear');
Index: /tags/2.6.0RC1/install/db/100-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/100-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/100-database.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add high_width and high_height fields into IMAGES_TABLE';
+
+if ('mysql' == $conf['dblayer'])
+{
+  $query = 'ALTER TABLE '.IMAGES_TABLE.' 
+    ADD COLUMN `high_width` smallint(9) unsigned default NULL, 
+    ADD COLUMN `high_height` smallint(9) unsigned default NULL;';
+}
+
+if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite')))
+{
+  $query = 'ALTER TABLE '.IMAGES_TABLE.' 
+    ADD COLUMN "high_width" INTEGER, 
+    ADD COLUMN "high_height" INTEGER;';
+}
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/101-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/101-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/101-database.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'merge nb_line_page and nb_image_line into nb_image_page';
+
+// add column
+if ('mysql' == $conf['dblayer'])
+{
+  pwg_query('
+    ALTER TABLE '.USER_INFOS_TABLE.' 
+      ADD COLUMN `nb_image_page` smallint(3) unsigned NOT NULL default \'15\'
+  ;');
+}
+else if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite')))
+{
+  pwg_query('
+    ALTER TABLE '.USER_INFOS_TABLE.' 
+      ADD COLUMN "nb_image_page" INTEGER default 15 NOT NULL
+  ;');
+}
+
+// merge datas
+pwg_query('
+  UPDATE '.USER_INFOS_TABLE.' 
+  SET nb_image_page = nb_line_page*nb_image_line
+;');
+
+// delete old columns
+pwg_query('
+  ALTER TABLE '.USER_INFOS_TABLE.' 
+    DROP `nb_line_page`,
+    DROP `nb_image_line`
+;');
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/102-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/102-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/102-database.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'change nb_image_page into smallint(3)';
+
+// add column
+if ('mysql' == $conf['dblayer'])
+{
+  pwg_query('
+    ALTER TABLE '.USER_INFOS_TABLE.' 
+      CHANGE `nb_image_page` `nb_image_page` SMALLINT(3) UNSIGNED NOT NULL DEFAULT 15
+  ;');
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/103-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/103-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/103-database.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Extensions ignored for update';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config (param,value,comment)
+  VALUES (\'updates_ignored\',\'a:3:{s:7:"plugins";a:0:{}s:6:"themes";a:0:{}s:9:"languages";a:0:{}}\', \''.$upgrade_description.'\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/104-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/104-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/104-database.php	(revision 25596)
@@ -0,0 +1,86 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add upload form parameters in database';
+
+global $conf;
+
+load_conf_from_db();
+
+$upload_form_config = array(
+  'websize_resize' => true,
+  'websize_maxwidth' => 800,
+  'websize_maxheight' => 600,
+  'websize_quality' => 95,
+  'thumb_maxwidth' => 128,
+  'thumb_maxheight' => 96,
+  'thumb_quality' => 95,
+  'thumb_crop' => false,
+  'thumb_follow_orientation' => true,
+  'hd_keep' => true,
+  'hd_resize' => false,
+  'hd_maxwidth' => 2000,
+  'hd_maxheight' => 2000,
+  'hd_quality' => 95,
+);
+
+$inserts = array();
+
+foreach ($upload_form_config as $param_shortname => $param)
+{
+  $param_name = 'upload_form_'.$param_shortname;
+
+  if (!isset($conf[$param_name]))
+  {
+    $conf[$param_name] = $param;
+    
+    array_push(
+      $inserts,
+      array(
+        'param' => $param_name,
+        'value' => boolean_to_string($param),
+        )
+      );
+  }
+}
+
+if (count($inserts) > 0)
+{
+  mass_inserts(
+    CONFIG_TABLE,
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/105-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/105-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/105-database.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Show menubar on picture page';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config (param,value,comment)
+  VALUES (\'picture_menu\',\'false\', \''.$upgrade_description.'\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/106-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/106-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/106-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add order parameters to bdd';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config(param,value,comment) 
+  VALUES (\'order_by\', \''.$conf['order_by'].'\', \'default photos order\')
+;';
+pwg_query($query);
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config(param,value,comment) 
+  VALUES (\'order_by_inside_category\', \''.$conf['order_by_inside_category'].'\', \'default photos order inside category\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/107-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/107-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/107-database.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Display new icons next albums and pictures';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config (param,value,comment) 
+  VALUES (\'index_new_icon\',\'true\',\'Display new icons next albums and pictures\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/108-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/108-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/108-database.php	(revision 25596)
@@ -0,0 +1,127 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add order parameters to bdd #2';
+
+$order_regex = '#^(( *)(id|file|name|date_available|date_creation|hit|average_rate|comment|author|filesize|width|height|high_filesize|high_width|high_height|rank) (ASC|DESC),{1}){1,}$#';
+
+// local file is writable
+if ( is_writable($local_file = PHPWG_ROOT_PATH. 'local/config/config.inc.php') )
+{
+  $order_by = str_ireplace(
+    array('order by ', 'asc', 'desc'),
+    array(null, 'ASC', 'DESC'),
+    trim($conf['order_by_inside_category'])
+    );
+    
+  // for a simple patern
+  if ( preg_match($order_regex, $order_by.',') )
+  {
+    $order_by = 'ORDER BY '.$order_by;
+    // update database
+    $query = '
+    UPDATE '.PREFIX_TABLE.'config
+      SET value = \''.preg_replace('# rank (ASC|DESC)(,?)#', null, $order_by).'\'
+      WHERE param = \'order_by\'
+    ;';
+    pwg_query($query);
+    $query = '
+    UPDATE '.PREFIX_TABLE.'config
+      SET value = \''.$order_by.'\'
+      WHERE param = \'order_by_inside_category\'
+    ';
+    pwg_query($query);
+    
+    // update local file (delete lines)
+    $local_config = file($local_file);
+    $new_local_config = array();
+    foreach ($local_config as $line)
+    {
+      if (strpos($line, 'order_by') === false)
+      {
+        $new_local_config[] = $line;
+      }
+    }
+    var_dump($new_local_config);
+    file_put_contents(
+      $local_file,
+      implode("", $new_local_config)
+      );
+  }
+  // for a complex patern
+  else
+  {
+    // update database with default param
+    $query = '
+    UPDATE '.PREFIX_TABLE.'config
+      SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+      WHERE param = \'order_by\'
+    ;';
+    pwg_query($query);
+    $query = '
+    UPDATE '.PREFIX_TABLE.'config
+      SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+      WHERE param = \'order_by_inside_category\'
+    ';
+    pwg_query($query);
+    
+    // update local file (rename lines)
+    $local_config = file_get_contents($local_file);
+    $new_local_config = str_replace(
+      array("['order_by']", "['order_by_inside_category']"),
+      array("['order_by_custom']", "['order_by_inside_category_custom']"),
+      $local_config
+      );
+    file_put_contents($local_file, $new_local_config);
+  }
+  
+}
+// local file is locked
+else
+{
+  // update database with default param
+  $query = '
+  UPDATE '.PREFIX_TABLE.'config
+    SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+    WHERE param = \'order_by\'
+  ;';
+  pwg_query($query);
+  $query = '
+  UPDATE '.PREFIX_TABLE.'config
+    SET value = \'ORDER BY date_available DESC, file ASC, id ASC\'
+    WHERE param = \'order_by_inside_category\'
+  ';
+  pwg_query($query);
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/109-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/109-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/109-database.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'Rename #images.average_rate to ratingscore.';
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+if ('mysql' == $conf['dblayer'])
+  $q = 'ALTER TABLE '.IMAGES_TABLE.' CHANGE average_rate rating_score float(5,2) unsigned default NULL';
+else
+  $q = 'ALTER TABLE '.IMAGES_TABLE.' RENAME average_rate TO rating_score';
+pwg_query($q);
+
+$q="UPDATE ".CATEGORIES_TABLE." SET image_order=REPLACE(image_order, 'average_rate', 'rating_score')";
+pwg_query($q);
+
+$q="UPDATE ".CONFIG_TABLE." SET value=REPLACE(value, 'average_rate', 'rating_score')
+WHERE param IN ('picture_informations', 'order_by', 'order_by_inside_category')";
+pwg_query($q);
+?>
Index: /tags/2.6.0RC1/install/db/110-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/110-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/110-database.php	(revision 25596)
@@ -0,0 +1,117 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'Move "gallery_url" parameter from config table to local configuration file';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+if (!isset($page))
+{
+  $page = array();
+}
+
+if (!isset($page['errors']))
+{
+  $page['errors'] = array();
+}
+
+$query = '
+SELECT
+    value
+  FROM '.CONFIG_TABLE.'
+  WHERE param =\'gallery_url\'
+;';
+list($gallery_url) = pwg_db_fetch_row(pwg_query($query));
+
+if (!empty($gallery_url))
+{
+  // let's try to write it in the local configuration file
+  $local_conf = PHPWG_ROOT_PATH. 'local/config/config.inc.php';
+  if (isset($conf['local_dir_site']))
+  {
+    $local_conf = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'config/config.inc.php';
+  }
+
+  $conf_line = '$conf[\'gallery_url\'] = \''.$gallery_url.'\';';
+
+  if (!is_file($local_conf))
+  {
+    $config_file_contents_new = "<?php\n".$conf_line."\n?>";
+  }
+  else
+  {
+    // we have to update the local conf
+    $config_file_contents = @file_get_contents($local_conf);
+    if ($config_file_contents === false)
+    {
+      $error = 'Cannot load '.$local_conf.', add by hand: '.$conf_line;
+      
+      array_push($page['errors'], $error);
+      echo $error;
+    }
+    else
+    {
+      $php_end_tag = strrpos($config_file_contents, '?'.'>');
+      if ($php_end_tag === false)
+      {
+        // the file is empty
+        $config_file_contents_new = "<?php\n".$conf_line."\n?>";
+      }
+      else
+      {
+        $config_file_contents_new =
+          substr($config_file_contents, 0, $php_end_tag) . "\n"
+          .$conf_line."\n"
+          .substr($config_file_contents, $php_end_tag)
+          ;
+      }
+    }
+  }
+
+  if (isset($config_file_contents_new))
+  {
+    if (!@file_put_contents($local_conf, $config_file_contents_new))
+    {
+      $error = 'Cannot write into local configuration file '.$local_conf.', add by hand: '.$conf_line;
+      
+      array_push($page['errors'], $error);
+      echo $error;
+    }
+  }
+}
+
+$query = '
+DELETE
+  FROM '.CONFIG_TABLE.'
+  WHERE param =\'gallery_url\'
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/111-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/111-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/111-database.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'New colum user_infos.activation_key';
+
+// Add column
+$query = 'ALTER TABLE '.USER_INFOS_TABLE.' ADD COLUMN ';
+
+if ('mysql' == $conf['dblayer'])
+{
+  $query.= ' `activation_key` char(20) default NULL';
+}
+
+if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite')))
+{
+  $query.= ' "activation_key" CHAR(20) default NULL';
+}
+
+$query.= ';';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/112-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/112-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/112-database.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Change combined dir';
+
+// Add column
+$query = 'DELETE FROM '.CONFIG_TABLE.'
+  WHERE param IN (\'local_data_dir_checked\', \'combined_dir_checked\') ';
+
+pwg_query($query);
+
+$dir=PHPWG_ROOT_PATH.'local/combined/';
+if (is_dir($dir))
+{
+  foreach (glob($dir.'*.css') as $file)
+  {
+    @unlink($file);
+  }
+  foreach (glob($dir.'*.js') as $file)
+    @unlink($file);
+  @unlink($dir.'index.htm');
+  @rmdir($dir);
+}
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/113-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/113-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/113-database.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'New settings for resizing original photo (related to multiple sizes feature)';
+
+conf_update_param('original_resize', 'false');
+conf_update_param('original_resize_maxwidth', 2016);
+conf_update_param('original_resize_maxheight', 2016);
+conf_update_param('original_resize_quality', 95);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/114-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/114-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/114-database.php	(revision 25596)
@@ -0,0 +1,38 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'new parameter: Activate comments';
+
+conf_update_param('activate_comments', 'true');
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/115-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/115-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/115-database.php	(revision 25596)
@@ -0,0 +1,38 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'New setting for comments order on picture page';
+
+conf_update_param('comments_order', 'ASC');
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/116-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/116-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/116-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add #images.coi';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+ALTER TABLE '.IMAGES_TABLE.' ADD COLUMN coi CHAR(4) DEFAULT NULL COMMENT \'center of interest\' AFTER height
+';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/117-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/117-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/117-database.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'fill empty images name with filename';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'SELECT id, file FROM '.IMAGES_TABLE.' WHERE name IS NULL;';
+$images = pwg_query($query);
+
+$updates = array();
+while ($row = pwg_db_fetch_assoc($images))
+{
+  $updates[] = array(
+    'id' => $row['id'],
+    'name' => get_name_from_file($row['file']),
+    );
+}
+  
+mass_updates(
+  IMAGES_TABLE,
+  array(
+    'primary' => array('id'),
+    'update' => array('name'),
+    ),
+  $updates
+  );
+
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/118-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/118-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/118-database.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Automatically activate mobile theme.';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+$themes = new themes();
+$themes->perform_action('activate', 'smartpocket');
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/119-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/119-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/119-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Reset derivative configuration to include XXS and XS sizes.';
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+clear_derivative_cache();
+
+$derivative_conf_file = PHPWG_ROOT_PATH.$conf['data_location'].'derivatives.dat';
+if (is_file($derivative_conf_file))
+{
+  unlink($derivative_conf_file);
+}
+
+conf_update_param('derivatives', '');
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/120-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/120-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/120-database.php	(revision 25596)
@@ -0,0 +1,39 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'rotation mode (code, not angle) is stored in the database';
+
+$query = 'ALTER TABLE '.IMAGES_TABLE.' ADD COLUMN rotation tinyint unsigned DEFAULT NULL';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/121-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/121-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/121-database.php	(revision 25596)
@@ -0,0 +1,39 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+// see http://piwigo.org/doc/doku.php?id=user_documentation:htaccess_and_hotlink_in_2.4
+
+$upgrade_description = 'add/append htaccess for hotlinks (cancelled, see plugin "Hotlink Compatibility")';
+
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/122-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/122-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/122-database.php	(revision 25596)
@@ -0,0 +1,83 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'derivatives: new organization of "upload" and "galleries" directories';
+
+$query = '
+SELECT
+    id,
+    path,
+    tn_ext,
+    has_high,
+    high_filesize,
+    high_width,
+    high_height
+  FROM '.IMAGES_TABLE.'
+;';
+$result = pwg_query($query);
+$starttime = get_moment();
+
+$updates = array();
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if ('true' == $row['has_high'])
+  {
+    $high_path = dirname($row['path']).'/pwg_high/'.basename($row['path']);
+    rename($high_path, $row['path']);
+
+    array_push(
+      $updates,
+      array(
+        'id' => $row['id'],
+        'width' => $row['high_width'],
+        'height' => $row['high_height'],
+        'filesize' => $row['high_filesize'],
+        )
+      );
+  }
+}
+
+if (count($updates) > 0)
+{
+  mass_updates(
+    IMAGES_TABLE,
+    array(
+      'primary' => array('id'),
+      'update' => array('width', 'height', 'filesize'),
+      ),
+    $updates
+    );
+}
+
+echo
+"\n"
+. $upgrade_description.sprintf(' (execution in %.3fs)', (get_moment() - $starttime))
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/123-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/123-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/123-database.php	(revision 25596)
@@ -0,0 +1,218 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'convert 2.3 resize settings into 2.4 derivative settings';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$dbconf = array();
+$conf_orig = $conf;
+load_conf_from_db();
+$dbconf = $conf;
+$conf = $conf_orig;
+
+//
+// Piwigo 2.3 "HD resize" settings become "original resize" settings in Piwigo 2.4
+//
+
+if ($dbconf['upload_form_hd_keep'])
+{
+  if ($dbconf['upload_form_hd_resize'])
+  {
+    conf_update_param('original_resize', 'true');
+    conf_update_param('original_resize_maxwidth', $dbconf['upload_form_hd_maxwidth']);
+    conf_update_param('original_resize_maxheight', $dbconf['upload_form_hd_maxheight']);
+    conf_update_param('original_resize_quality', $dbconf['upload_form_hd_quality']);
+  }
+}
+else
+{
+  // The user has decided to remove the high quality. In Piwigo 2.4, this
+  // setting does not exists anymore, but we can simulate it by an original
+  // resize with 2.3 websize dimensions
+  conf_update_param('original_resize', 'true');
+  
+  conf_update_param(
+    'original_resize_maxwidth',
+    is_numeric($dbconf['upload_form_websize_maxwidth']) ? $dbconf['upload_form_websize_maxwidth'] : 800
+    );
+                    
+  conf_update_param(
+    'original_resize_maxheight',
+    is_numeric($dbconf['upload_form_websize_maxheight']) ? $dbconf['upload_form_websize_maxheight'] : 600
+    );
+  
+  conf_update_param('original_resize_quality', $dbconf['upload_form_hd_quality']);
+}
+
+$types = ImageStdParams::get_default_sizes();
+
+// 
+// Piwigo 2.3 "thumbnail" becomes "thumb" size in Piwigo 2.4
+//
+
+$thumb_width_min = 128; // the default value in Piwigo 2.3
+$thumb_width_max = 300; // slightly bigger than XXS default maxwidth
+$thumb_height_min = 96; // the default value in Piwigo 2.3
+$thumb_height_max = 300; // slightly bigger than XXS default maxheight
+
+$thumb_is_square = false;
+if ($dbconf['upload_form_thumb_crop'])
+{
+  if ($dbconf['upload_form_thumb_maxwidth'] == $dbconf['upload_form_thumb_maxheight'])
+  {
+    $thumb_is_square = true;
+  }
+}
+
+if ($dbconf['upload_form_thumb_maxwidth'] < $thumb_width_min)
+{
+  $dbconf['upload_form_thumb_maxwidth'] = $thumb_width_min;
+}
+
+if ($dbconf['upload_form_thumb_maxwidth'] > $thumb_width_max)
+{
+  $dbconf['upload_form_thumb_maxwidth'] = $thumb_width_max;
+}
+
+if ($dbconf['upload_form_thumb_maxheight'] < $thumb_height_min)
+{
+  $dbconf['upload_form_thumb_maxheight'] = $thumb_height_min;
+}
+
+if ($dbconf['upload_form_thumb_maxheight'] > $thumb_height_max)
+{
+  $dbconf['upload_form_thumb_maxheight'] = $thumb_height_max;
+}
+
+if ($thumb_is_square)
+{
+  $dbconf['upload_form_thumb_maxheight'] = $dbconf['upload_form_thumb_maxwidth'];
+}
+
+$size = array($dbconf['upload_form_thumb_maxwidth'], $dbconf['upload_form_thumb_maxheight']);
+
+$thumb = new DerivativeParams(
+  new SizingParams(
+    $size,
+    $dbconf['upload_form_thumb_crop'] ? 1 : 0,
+    $dbconf['upload_form_thumb_crop'] ? $size : null
+    )
+  );
+
+$types[IMG_THUMB] = $thumb;
+
+// slightly enlarge XSS to be bigger than thumbnail size (but smaller than XS)
+if ($dbconf['upload_form_thumb_maxwidth'] >= $types[IMG_XXSMALL]->sizing->ideal_size[0]
+    or $dbconf['upload_form_thumb_maxheight'] >= $types[IMG_XXSMALL]->sizing->ideal_size[1])
+{
+  $xxs_maxwidth = $types[IMG_XXSMALL]->sizing->ideal_size[0];
+  if ($dbconf['upload_form_thumb_maxwidth'] >= $xxs_maxwidth)
+  {
+    $xxs_maxwidth = 350;
+  }
+
+  $xxs_maxheight = $types[IMG_XXSMALL]->sizing->ideal_size[1];
+  if ($dbconf['upload_form_thumb_maxheight'] >= $xxs_maxheight)
+  {
+    $xxs_maxheight = 310;
+  }
+
+  $xxs = new DerivativeParams(new SizingParams(array($xxs_maxwidth, $xxs_maxheight)));
+
+  $types[IMG_XXSMALL] = $xxs;
+}
+
+// 
+// Piwigo 2.3 "websize" becomes "medium" size in Piwigo 2.4
+//
+
+// if there was no "websize resize" on Piwigo 2.3, we can't take the resize
+// settings into account, we keep the default settings of Piwigo 2.4.
+if ($dbconf['upload_form_websize_resize'])
+{
+  $medium_width_min = 577; // default S maxwidth + 1 pixel
+  $medium_width_max = 1007; // default L maxwidth - 1 pixel
+  $medium_height_min = 433; // default S maxheight + 1 pixel
+  $medium_height_max = 755; // default L maxheight - 1 pixel
+
+  // width
+  if (!is_numeric($dbconf['upload_form_websize_maxwidth'])) // sometimes maxwidth="false"
+  {
+    $dbconf['upload_form_websize_maxwidth'] = $medium_width_max;
+  }
+  
+  if ($dbconf['upload_form_websize_maxwidth'] < $medium_width_min)
+  {
+    $dbconf['upload_form_websize_maxwidth'] = $medium_width_min;
+  }
+  
+  if ($dbconf['upload_form_websize_maxwidth'] > $medium_width_max)
+  {
+    $dbconf['upload_form_websize_maxwidth'] = $medium_width_max;
+  }
+  
+  // height
+  if (!is_numeric($dbconf['upload_form_websize_maxheight'])) // sometimes maxheight="false"
+  {
+    $dbconf['upload_form_websize_maxheight'] = $medium_height_max;
+  }
+  
+  if ($dbconf['upload_form_websize_maxheight'] < $medium_height_min)
+  {
+    $dbconf['upload_form_websize_maxheight'] = $medium_height_min;
+  }
+  
+  if ($dbconf['upload_form_websize_maxheight'] > $medium_height_max)
+  {
+    $dbconf['upload_form_websize_maxheight'] = $medium_height_max;
+  }
+
+  $medium = new DerivativeParams(
+    new SizingParams(
+      array(
+        $dbconf['upload_form_websize_maxwidth'],
+        $dbconf['upload_form_websize_maxheight']
+        )
+      )
+    );
+
+  $types[IMG_MEDIUM] = $medium;
+}
+
+//
+// Save derivative new settings
+// 
+
+ImageStdParams::set_and_save($types);
+
+pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param = \'disabled_derivatives\'');
+clear_derivative_cache();
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/124-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/124-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/124-database.php	(revision 25596)
@@ -0,0 +1,60 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'derivatives: remove useless configuration settings and columns';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+//
+// Clean useless configuration settings
+//
+pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param like \'upload_form_%\';');
+
+//
+// Remove useless columns
+//
+
+$query = '
+ALTER TABLE '.USER_INFOS_TABLE.'
+  DROP `maxwidth`,
+  DROP `maxheight`
+;';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.IMAGES_TABLE.'
+  DROP `high_width`,
+  DROP `high_height`,
+  DROP `high_filesize`,
+  DROP `has_high`,
+  DROP `tn_ext`
+;';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/125-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/125-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/125-database.php	(revision 25596)
@@ -0,0 +1,197 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'derivatives: search and replace hotlinks inside Piwigo (page_banner';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+if (!isset($conf['prefix_thumbnail']))
+{
+  $conf['prefix_thumbnail'] = 'TN-';
+}
+
+if (!isset($conf['dir_thumbnail']))
+{
+  $conf['dir_thumbnail'] = 'thumbnail';
+}
+
+$dbconf = array();
+$conf_orig = $conf;
+load_conf_from_db();
+$dbconf = $conf;
+$conf = $conf_orig;
+
+$banner_orig = $dbconf['page_banner'];
+$banner_new = replace_hotlinks($dbconf['page_banner']);
+if ($banner_orig != $banner_new)
+{
+  conf_update_param('page_banner', pwg_db_real_escape_string($banner_new));
+}
+
+//
+// Additional Pages
+//
+$is_plugin_installed = false;
+$plugin_table = $prefixeTable.'additionalpages';
+
+$query = 'SHOW TABLES LIKE \''.$plugin_table.'\';';
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_row($result))
+{
+  if ($plugin_table == $row[0])
+  {
+    $is_plugin_installed = true;
+  }
+}
+
+if ($is_plugin_installed)
+{
+  $query = '
+SELECT
+    id,
+    content
+  FROM '.$plugin_table.'
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $content_orig = $row['content'];
+    $content_new = replace_hotlinks($content_orig);
+    if ($content_orig != $content_new)
+    {
+      single_update(
+        $plugin_table,
+        array('content' => pwg_db_real_escape_string($content_new)),
+        array('id' => $row['id'])
+        );
+    }
+  }
+
+  $upgrade_description.= ', Additional Pages';
+}
+
+//
+// PWG Stuffs
+// 
+$is_plugin_installed = false;
+$plugin_table = $prefixeTable.'stuffs';
+
+$query = 'SHOW TABLES LIKE \''.$plugin_table.'\';';
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_row($result))
+{
+  if ($plugin_table == $row[0])
+  {
+    $is_plugin_installed = true;
+  }
+}
+
+if ($is_plugin_installed)
+{
+  $query = '
+SELECT
+    id,
+    datas
+  FROM '.$plugin_table.'
+  WHERE path LIKE \'%plugins/PWG_Stuffs/modules/Personal%\'
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $content_orig = $row['datas'];
+    $content_new = serialize(replace_hotlinks(unserialize($content_orig)));
+    if ($content_orig != $content_new)
+    {
+      single_update(
+        $plugin_table,
+        array('datas' => pwg_db_real_escape_string($content_new)),
+        array('id' => $row['id'])
+        );
+    }
+  }
+  
+  $upgrade_description.= ', PWG Stuffs';
+}
+
+$upgrade_description.= ')';
+
+echo "\n".$upgrade_description."\n";
+
+// +-----------------------------------------------------------------------+
+// | Functions                                                             |
+// +-----------------------------------------------------------------------+
+
+function replace_hotlinks($string)
+{
+  global $conf;
+  
+  // websize 2.3 = medium 2.4
+  $string = preg_replace(
+    '#(upload/\d{4}/\d{2}/\d{2}/\d{14}-\w{8})(\.(jpg|png))#',
+    'i.php?/$1-me$2',
+    $string
+    );
+
+// I've tried but I didn't find the way to do it correctly
+// $string = preg_replace(
+//   '#(galleries/.*?/)(?!:(pwg_high|'.$conf['dir_thumbnail'].')/)([^/]*?)(\.[a-z0-9]{3,4})([\'"])#',
+//   'i.php?/(1=$1)(2=$2)-me(3=$3)(4=$4)', // 'i.php?/$1$2-me$3',
+//   $string
+//   );
+
+  // thumbnail 2.3 = th size 2.4
+  $string = preg_replace(
+    '#(upload/\d{4}/\d{2}/\d{2}/)'.$conf['dir_thumbnail'].'/'.$conf['prefix_thumbnail'].'(\d{14}-\w{8})(\.(jpg|png))#',
+    'i.php?/$1$2-th$3',
+    $string
+    );
+  
+  $string = preg_replace(
+    '#(galleries/.*?/)'.$conf['dir_thumbnail'].'/'.$conf['prefix_thumbnail'].'(.*?)(\.[a-z0-9]{3,4})([\'"])#',
+    'i.php?/$1$2-th$3$4',
+    $string
+    );
+  
+  // HD 2.3 = original 2.4
+  $string = preg_replace(
+    '#(upload/\d{4}/\d{2}/\d{2}/)pwg_high/(\d{14}-\w{8}\.(jpg|png))#',
+    '$1$2',
+    $string
+    );
+
+  $string = preg_replace(
+    '#(galleries/.*?)/pwg_high(/.*?\.[a-z0-9]{3,4})#',
+    '$1$2',
+    $string
+    );
+  
+  return $string;
+}
+?>
Index: /tags/2.6.0RC1/install/db/126-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/126-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/126-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'rename language sl_SL into sl_SI';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \'sl_SI\'
+  WHERE language = \'sl_SL\'
+;';
+pwg_query($query);
+
+$query = '
+UPDATE '.LANGUAGES_TABLE.'
+  SET id = \'sl_SI\'
+  WHERE id = \'sl_SL\'
+;';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/127-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/127-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/127-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'rename language no_NO into nb_NO';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \'nb_NO\'
+  WHERE language = \'no_NO\'
+;';
+pwg_query($query);
+
+$query = '
+UPDATE '.LANGUAGES_TABLE.'
+  SET id = \'nb_NO\'
+  WHERE id = \'no_NO\'
+;';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/128-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/128-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/128-database.php	(revision 25596)
@@ -0,0 +1,38 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add anonymous_id in comments table';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$query = 'ALTER TABLE `'.COMMENTS_TABLE.'` ADD `anonymous_id` VARCHAR( 45 ) DEFAULT NULL;';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/129-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/129-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/129-database.php	(revision 25596)
@@ -0,0 +1,38 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add "website_url" field in comments table';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$query = 'ALTER TABLE `'.COMMENTS_TABLE.'` ADD `website_url` varchar(255) DEFAULT NULL;';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/130-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/130-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/130-database.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add "email" field in comments table';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+$query = 'ALTER TABLE `'.COMMENTS_TABLE.'` ADD `email` varchar(255) default NULL;';
+pwg_query($query);
+
+conf_update_param('comments_author_mandatory', 'false');
+conf_update_param('comments_email_mandatory', 'false');
+
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/131-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/131-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/131-database.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add "nb_categories_page" parameter';
+
+conf_update_param('nb_categories_page', '50');
+
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/132-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/132-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/132-database.php	(revision 25596)
@@ -0,0 +1,36 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'Enlarge #users.password to increase security.';
+
+global $prefixeTable;
+
+// we don't use USERS_TABLE because it might be an external table, here we
+// want to change to users table specific to Piwigo
+$query = 'ALTER TABLE '.$prefixeTable.'users CHANGE password password varchar(255) default NULL';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/133-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/133-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/133-database.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = '#categories.site_id default value.';
+
+$query = 'ALTER TABLE '.CATEGORIES_TABLE.' CHANGE site_id site_id tinyint(4) unsigned default NULL';
+pwg_query($query);
+
+$query = 'UPDATE '.CATEGORIES_TABLE.' SET site_id=NULL WHERE dir IS NULL';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/134-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/134-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/134-database.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'replace dblayer to "mysqli" if available.';
+
+global $conf;
+
+$config_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php';
+
+if ( extension_loaded('mysqli') and $conf['dblayer']=='mysql' and is_writable($config_file) )
+{
+  $file_content = file_get_contents($config_file);
+  $file_content = preg_replace(
+                            '#\$conf\[\'dblayer\'\]( *)=( *)\'mysql\';#', 
+                            '$conf[\'dblayer\']$1=$2\'mysqli\';', 
+                            $file_content);
+  file_put_contents($config_file, $file_content);
+}
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/135-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/135-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/135-database.php	(revision 25596)
@@ -0,0 +1,47 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'add nb available comments/tags';
+
+$query = 'ALTER TABLE '.USER_INFOS_TABLE.'
+ADD PRIMARY KEY (`user_id`) 
+, DROP INDEX `user_infos_ui1`';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `last_photo_date` datetime DEFAULT NULL AFTER `nb_total_images`';
+pwg_query($query);
+invalidate_user_cache();
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `nb_available_tags` INT(5) DEFAULT NULL AFTER `last_photo_date`';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.USER_CACHE_TABLE.'
+ ADD COLUMN `nb_available_comments` INT(5) DEFAULT NULL AFTER `nb_available_tags`';
+pwg_query($query);
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/136-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/136-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/136-database.php	(revision 25596)
@@ -0,0 +1,37 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'add nb direct child categories';
+
+$query = '
+ALTER TABLE '.USER_CACHE_CATEGORIES_TABLE.'
+  ADD COLUMN nb_categories mediumint(8) unsigned NOT NULL default 0 AFTER count_images';
+pwg_query($query);
+
+invalidate_user_cache();
+
+
+echo "\n".$upgrade_description."\n";
+?>
Index: /tags/2.6.0RC1/install/db/137-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/137-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/137-database.php	(revision 25596)
@@ -0,0 +1,62 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
+
+$upgrade_description = 'add ASC keyword to categories image_order field';
+
+
+$query = '
+SELECT id, image_order
+  FROM '.CATEGORIES_TABLE.'
+  WHERE image_order != ""
+;';
+$cats = hash_from_query($query, 'id');
+
+foreach ($cats as $id => &$data)
+{
+  $image_order = explode(',',$data['image_order']);
+  foreach ($image_order as &$order)
+  {
+    if (strpos($order, ' ASC')===false && strpos($order, ' DESC')===false)
+    {
+      $order.= ' ASC';
+    }
+  }
+  unset($order);
+  $data['image_order'] = implode(',',$image_order);
+}
+unset($data);
+
+mass_updates(CATEGORIES_TABLE,
+  array(
+    'primary' => array('id'),
+    'update' => array('image_order'),
+  ),
+  $cats
+  );
+  
+  
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/138-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/138-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/138-database.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add "mail_theme" parameter';
+
+conf_update_param('mail_theme', 'clear');
+
+echo "\n".$upgrade_description."\n";
+
+?>
Index: /tags/2.6.0RC1/install/db/61-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/61-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/61-database.php	(revision 25596)
@@ -0,0 +1,50 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add unique index on #_groups for name';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+
+$query = "
+alter table ".GROUPS_TABLE."
+  add UNIQUE KEY `groups_ui1` (`name`)
+;";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/62-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/62-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/62-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add obligatory_user_mail config';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+INSERT INTO ".CONFIG_TABLE." (param,value,comment) VALUES ('obligatory_user_mail_address','false','Mail address is obligatory for users');
+";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/63-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/63-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/63-database.php	(revision 25596)
@@ -0,0 +1,73 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add #user_infos.level, #images.level and #user_cache.forbidden_images';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+ALTER TABLE '.IMAGES_TABLE.' ADD COLUMN level TINYINT UNSIGNED NOT NULL DEFAULT 0
+';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.USER_INFOS_TABLE.' ADD COLUMN level TINYINT UNSIGNED NOT NULL DEFAULT 0
+';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.USER_CACHE_TABLE.' ADD COLUMN image_access_type enum("NOT IN","IN") NOT NULL default "NOT IN"
+';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.USER_CACHE_TABLE.' ADD COLUMN image_access_list TEXT DEFAULT NULL
+';
+pwg_query($query);
+
+$query = '
+UPDATE '.USER_INFOS_TABLE.' SET level=8 WHERE status="webmaster"
+';
+pwg_query($query);
+
+$query = '
+UPDATE '.USER_CACHE_TABLE.' SET need_update=true
+';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/64-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/64-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/64-database.php	(revision 25596)
@@ -0,0 +1,50 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Activation of c13_upgrade plugin';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+REPLACE INTO '.PLUGINS_TABLE.'
+  (id, state)
+  VALUES (\'c13y_upgrade\', \'active\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/65-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/65-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/65-database.php	(revision 25596)
@@ -0,0 +1,300 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+function upgrade65_change_table_to_blob($table, $field_definitions)
+{
+  $types = array('varchar'  => 'varbinary',
+    'text' => 'blob',
+    'mediumtext' => 'mediumblob',
+    'longtext' => 'longblob');
+
+  $changes=array();
+  foreach( $field_definitions as $row)
+  {
+    if ( !isset($row['Collation']) or $row['Collation']=='NULL' )
+      continue;
+    list ($type) = explode('(', $row['Type']);
+    if (!isset($types[$type]))
+      continue; // no need
+    $binaryType = preg_replace('/'. $type .'/i', $types[$type], $row['Type'] );
+    $changes[] = 'MODIFY COLUMN '.$row['Field'].' '.$binaryType;
+  }
+  if (count($changes))
+  {
+    $query = 'ALTER TABLE '.$table.' '.implode(', ', $changes);
+    pwg_query($query);
+  }
+}
+
+function upgrade65_change_table_to_charset($table, $field_definitions, $db_charset)
+{
+  $changes=array();
+  foreach( $field_definitions as $row)
+  {
+    if ( !isset($row['Collation']) or $row['Collation']=='NULL' )
+      continue;
+    $query = $row['Field'].' '.$row['Type'];
+    $query .= ' CHARACTER SET '.$db_charset;
+    if (strpos($row['Collation'],'_bin')!==false)
+    {
+      $query .= ' BINARY';
+    }
+    if ($row['Null']!='YES')
+    {
+      $query.=' NOT NULL';
+      if (isset($row['Default']))
+        $query.=' DEFAULT "'.addslashes($row['Default']).'"';
+    }
+    else
+    {
+      if (!isset($row['Default']))
+        $query.=' DEFAULT NULL';
+      else
+        $query.=' DEFAULT "'.addslashes($row['Default']).'"';
+    }
+
+    if ($row['Extra']=='auto_increment')
+    {
+      $query.=' auto_increment';
+    }
+    $changes[] = 'MODIFY COLUMN '.$query;
+  }
+
+  if (count($changes))
+  {
+    $query = 'ALTER TABLE `'.$table.'` '.implode(', ', $changes);
+    pwg_query($query);
+  }
+}
+
+
+$upgrade_description = 'PWG charset migration';
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+if ( !defined('PWG_CHARSET') )
+{
+  $upgrade_log = '';
+
+// +-----------------------------------------------------------------------+
+// load all the user languages
+  $all_langs=array();
+  $query='
+SELECT language, COUNT(user_id) AS count FROM '.USER_INFOS_TABLE.'
+  GROUP BY language';
+  $result = pwg_query($query);
+  while ( $row=pwg_db_fetch_assoc($result) )
+  {
+    $language = $row["language"];
+    $lang_def = explode('.', $language);
+    if ( count($lang_def)==2 )
+    {
+      $new_lang = $lang_def[0];
+      $charset = strtolower($lang_def[1]);
+    }
+    else
+    {
+      $new_lang = 'en_UK';
+      $charset = 'iso-8859-1';
+    }
+    $all_langs[$language] = array(
+      'count' => $row['count'],
+      'new_lang' => $new_lang,
+      'charset' => $charset,
+      );
+    $upgrade_log .= ">>user_lang\t".$language."\t".$row['count']."\n";
+  }
+  $upgrade_log .= "\n";
+
+
+// +-----------------------------------------------------------------------+
+// get admin charset
+  include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+  @include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+  $admin_charset='iso-8859-1';
+  $query='
+SELECT language FROM '.USER_INFOS_TABLE.'
+  WHERE user_id='.$conf['webmaster_id'];
+  $result = pwg_query($query);
+  if (pwg_db_num_rows($result)==0)
+  {
+    $query='
+SELECT language FROM '.USER_INFOS_TABLE.'
+  WHERE status="webmaster" and adviser="false"
+  LIMIT 1';
+    $result = pwg_query($query);
+  }
+
+  if ( $row=pwg_db_fetch_assoc($result) )
+  {
+    $admin_charset = $all_langs[$row['language']]['charset'];
+  }
+  $upgrade_log .= ">>admin_charset\t".$admin_charset."\n";
+
+
+// +-----------------------------------------------------------------------+
+// get mysql version and structure of tables
+  $mysql_version = mysql_get_server_info();
+  $upgrade_log .= ">>mysql_ver\t".$mysql_version."\n";
+
+  $all_tables = array();
+  $query = 'SHOW TABLES LIKE "'.$prefixeTable.'%"';
+  $result = pwg_query($query);
+  while ( $row=pwg_db_fetch_row($result) )
+  {
+    array_push($all_tables, $row[0]);
+  }
+
+  $all_tables_definition = array();
+  foreach( $all_tables as $table)
+  {
+    $query = 'SHOW FULL COLUMNS FROM '.$table;
+    $result = pwg_query($query);
+    $field_definitions=array();
+    while ( $row=pwg_db_fetch_assoc($result) )
+    {
+      if ( !isset($row['Collation']) or $row['Collation']=='NULL' )
+        continue;
+      array_push($field_definitions, $row);
+    }
+    $all_tables_definition[$table] = $field_definitions;
+  }
+
+// +-----------------------------------------------------------------------+
+// calculate the result and convert the tables
+
+//tables that can be converted without going through binary (they contain only ascii data)
+  $safe_tables=array('history','history_backup','history_summary','old_permalinks','plugins','rate','upgrade','user_cache','user_feed','user_infos','user_mail_notification', 'users', 'waiting','ws_access');
+  $safe_tables=array_flip($safe_tables);
+
+  $pwg_charset = 'iso-8859-1';
+  $db_charset = 'latin1';
+  $db_collate = '';
+  if ( version_compare($mysql_version, '4.1', '<') )
+  { // below 4.1 no charset support
+    $upgrade_log .= "< conversion\tnothing\n";
+  }
+  elseif ($admin_charset=='iso-8859-1')
+  {
+    $pwg_charset = 'utf-8';
+    $db_charset = 'utf8';
+    foreach($all_tables as $table)
+    {
+      upgrade65_change_table_to_charset($table, $all_tables_definition[$table], 'utf8' );
+      $query = 'ALTER TABLE '.$table.' DEFAULT CHARACTER SET utf8';
+      pwg_query($query);
+    }
+    $upgrade_log .= "< conversion\tchange utf8\n";
+  }
+/*ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; (or change column character set)
+
+Warning: The preceding operation converts column values between the character sets. This is not what you want if you have a column in one character set (like latin1) but the stored values actually use some other, incompatible character set (like utf8). In this case, you have to do the following for each such column:
+
+ALTER TABLE t1 CHANGE c1 c1 BLOB;
+ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
+*/
+  elseif ( $admin_charset=='utf-8')
+  {
+    $pwg_charset = 'utf-8';
+    $db_charset = 'utf8';
+    foreach($all_tables as $table)
+    {
+      if ( !isset($safe_tables[ substr($table, strlen($prefixeTable)) ]) )
+        upgrade65_change_table_to_blob($table, $all_tables_definition[$table] );
+      upgrade65_change_table_to_charset($table, $all_tables_definition[$table], 'utf8' );
+      $query = 'ALTER TABLE '.$table.' DEFAULT CHARACTER SET utf8';
+      pwg_query($query);
+    }
+    $upgrade_log .= "< conversion\tchange binary\n";
+    $upgrade_log .= "< conversion\tchange utf8\n";
+  }
+  elseif ( $admin_charset=='iso-8859-2'/*Central European*/)
+  {
+    $pwg_charset = 'utf-8';
+    $db_charset = 'utf8';
+    foreach($all_tables as $table)
+    {
+      if ( !isset($safe_tables[ substr($table, strlen($prefixeTable)) ]) )
+      {
+        upgrade65_change_table_to_blob($table, $all_tables_definition[$table] );
+        upgrade65_change_table_to_charset($table, $all_tables_definition[$table], 'latin2' );
+      }
+      upgrade65_change_table_to_charset($table, $all_tables_definition[$table], 'utf8' );
+      $query = 'ALTER TABLE '.$table.' DEFAULT CHARACTER SET utf8';
+      pwg_query($query);
+    }
+    $upgrade_log .= "< conversion\tchange binary\n";
+    $upgrade_log .= "< conversion\tchange latin2\n";
+    $upgrade_log .= "< conversion\tchange utf8\n";
+  }
+
+
+// +-----------------------------------------------------------------------+
+// changes to write in database.inc.php
+  array_push($mysql_changes,
+'define(\'PWG_CHARSET\', \''.$pwg_charset.'\');
+define(\'DB_CHARSET\',  \''.$db_charset.'\');
+define(\'DB_COLLATE\',  \'\');'
+  );
+
+  foreach ($all_langs as $old_lang=>$lang_data)
+  {
+    $query='
+  UPDATE '.USER_INFOS_TABLE.' SET language="'.$lang_data['new_lang'].'"
+    WHERE language="'.$old_lang.'"';
+    pwg_query($query);
+  }
+
+  define('PWG_CHARSET', $pwg_charset);
+  define('DB_CHARSET',  $db_charset);
+  define('DB_COLLATE',  '');
+
+  if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') and DB_CHARSET!='' )
+  {
+    pwg_query('SET NAMES "'.DB_CHARSET.'"');
+  }
+
+  echo $upgrade_log;
+  $fp = @fopen( PHPWG_ROOT_PATH.'upgrade65.log', 'w' );
+  if ($fp)
+  {
+    @fputs($fp, $upgrade_log, strlen($upgrade_log));
+    @fclose($fp);
+  }
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+}
+else
+{
+  echo 'PWG_CHARSET already defined - nada';
+}
+?>
Index: /tags/2.6.0RC1/install/db/66-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/66-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/66-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add c13y_ignore config';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+INSERT INTO ".CONFIG_TABLE." (param,value,comment) VALUES ('c13y_ignore',null,'List of ignored anomalies');
+";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/67-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/67-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/67-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Uninstall dew plugin';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+delete from ".PLUGINS_TABLE." where id ='dew';
+";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/68-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/68-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/68-database.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Change type from text to mediumtext for #sessions.data #user_cache.forbidden_categories and #user_cache.image_access_list';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+ALTER TABLE '.SESSIONS_TABLE.'
+  MODIFY COLUMN data MEDIUMTEXT NOT NULL';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.USER_CACHE_TABLE.'
+  MODIFY COLUMN forbidden_categories MEDIUMTEXT,
+  MODIFY COLUMN image_access_list MEDIUMTEXT
+  ';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/69-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/69-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/69-database.php	(revision 25596)
@@ -0,0 +1,58 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Move #categories.date_last and nb_images to #user_cache_categories';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+ALTER TABLE '.USER_CACHE_CATEGORIES_TABLE.'
+  ADD COLUMN date_last datetime default NULL AFTER cat_id,
+  ADD COLUMN nb_images mediumint(8) unsigned NOT NULL default 0 AFTER max_date_last';
+pwg_query($query);
+
+$query = '
+ALTER TABLE '.CATEGORIES_TABLE.'
+  DROP COLUMN date_last,
+  DROP COLUMN nb_images
+  ';
+pwg_query($query);
+
+invalidate_user_cache(); // just to force recalculation
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/70-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/70-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/70-database.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add upload config';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+replace into ".CONFIG_TABLE."
+  (param, value, comment)
+values
+('upload_link_everytime','false','Show Upload link every time'),
+('upload_user_access',".ACCESS_CLASSIC.",'Minimal user status allowed to upload pictures')
+;";
+
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/71-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/71-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/71-database.php	(revision 25596)
@@ -0,0 +1,58 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Delete unnecessary #history_summary.id, #history.year, #history.month, #history.day and #history.hour';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'ALTER TABLE '.HISTORY_SUMMARY_TABLE.'
+DROP PRIMARY KEY,
+DROP COLUMN id,
+ADD UNIQUE KEY history_summary_ymdh (`year`, `month`, `day`, `hour`)
+;';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.HISTORY_TABLE.'
+DROP COLUMN year,
+DROP COLUMN month,
+DROP COLUMN day,
+DROP COLUMN hour
+;';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/72-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/72-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/72-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add extents_for_templates config';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+INSERT INTO ".CONFIG_TABLE." (param,value,comment) VALUES ('extents_for_templates','a:0:{}','Actived template-extension(s)');
+";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/73-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/73-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/73-database.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add #user_cache.cache_update_time';
+
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = '
+ALTER TABLE '.USER_CACHE_TABLE.' ADD COLUMN `cache_update_time` INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER need_update';
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/74-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/74-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/74-database.php	(revision 25596)
@@ -0,0 +1,48 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add blk_menubar config';
+
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = "
+INSERT INTO ".CONFIG_TABLE." (param,value,comment) VALUES ('blk_menubar','','Menubar options');
+";
+pwg_query($query);
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/75-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/75-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/75-database.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add blk_menubar config';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'DROP TABLE IF EXISTS '.$prefixeTable.'ws_access';
+pwg_query($query);
+
+$upgrade_description = $query;
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/76-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/76-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/76-database.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add image_category.rank column';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'ALTER TABLE '.IMAGE_CATEGORY_TABLE.' add column `rank` mediumint(8) unsigned default NULL';
+pwg_query($query);
+
+$upgrade_description = $query;
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/77-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/77-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/77-database.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'images.file categories.permalink old_permalinks.permalink - become binary';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'ALTER TABLE '.CATEGORIES_TABLE.'
+  MODIFY COLUMN permalink varchar(64) binary default NULL';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.OLD_PERMALINKS_TABLE.'
+  MODIFY COLUMN permalink varchar(64) binary NOT NULL default ""';
+pwg_query($query);
+
+$query = 'ALTER TABLE '.IMAGES_TABLE.'
+  MODIFY COLUMN file varchar(255) binary NOT NULL default ""';
+pwg_query($query);
+
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/78-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/78-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/78-database.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add images.md5sum column, for web API uploaded photos';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+$query = 'ALTER TABLE '.IMAGES_TABLE.' add column `md5sum` char(32) default NULL';
+pwg_query($query);
+
+$upgrade_description = $query;
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/79-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/79-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/79-database.php	(revision 25596)
@@ -0,0 +1,47 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Update default template';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+
+// set yoga/Sylvia as default value for user_infos.template column
+$query = '
+ALTER TABLE '.PREFIX_TABLE.'user_infos
+  CHANGE COLUMN template template varchar(255) NOT NULL default \'yoga/Sylvia\'
+;';
+pwg_query($query);
+
+echo
+"\n"
+.'Default template modified to yoga/Sylvia'
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/80-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/80-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/80-database.php	(revision 25596)
@@ -0,0 +1,988 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+/* $list_files generated by this sh
+#!/bin/sh
+
+final_src=trunk-r3105
+
+LIST_SOURCES="\
+phpwebgallery-1.0.0 \
+phpwebgallery-1.1.0 \
+phpwebgallery-1.2.1 \
+phpwebgallery-1.3.0 \
+phpwebgallery-1.3.1 \
+phpwebgallery-1.3.2 \
+phpwebgallery-1.3.3 \
+phpwebgallery-1.3.4 \
+phpwebgallery-1.4.0 \
+phpwebgallery-1.4.1 \
+phpwebgallery-1.5.0 \
+phpwebgallery-1.5.1 \
+phpwebgallery-1.5.2 \
+phpwebgallery-1.6.0RC1 \
+phpwebgallery-1.6.0RC2 \
+phpwebgallery-1.6.0 \
+phpwebgallery-1.6.1 \
+phpwebgallery-1.6.2 \
+phpwebgallery-1.7.0RC1 \
+phpwebgallery-1.7.0RC2 \
+phpwebgallery-1.7.0 \
+phpwebgallery-1.7.1 \
+phpwebgallery-1.7.2 \
+phpwebgallery-1.7.3 \
+phpwebgallery-2.0.0RC1 \
+phpwebgallery-2.0.0RC2 \
+phpwebgallery-2.0.0RC3 \
+phpwebgallery-2.0.0RC4 \
+$final_src \
+"
+
+set $LIST_SOURCES
+LastSrc=$1
+shift
+
+dir_all=`pwd`
+dir_final_src=$dir_all/$Src/$final_src
+
+for Src in $@
+do
+  dir_current=$dir_all/$Src
+  cd $LastSrc
+  echo "// Comparison between $Src and $LastSrc"
+  for f in `find *`
+  do
+    current_file_or_dir=$dir_current/$f
+    final_file_or_dir=$dir_final_src/$f
+    # if not exists on current src
+    [ ! -f  $current_file_or_dir ] && [ ! -d  $current_file_or_dir ] && \
+    # if not exists on final src
+    [ ! -f  $final_file_or_dir ] && [ ! -d  $final_file_or_dir ] && \
+    # Display file or dir to delete
+      echo "'$f',"
+  done
+  cd -
+  LastSrc=$Src;
+done
+
+*/
+
+$list_files = array(
+// Comparison between phpwebgallery-1.1.0 and phpwebgallery-1.0.0
+'admin_phpwebgallery',
+'admin_phpwebgallery/admin.php',
+'admin_phpwebgallery/ajout.php',
+'admin_phpwebgallery/configuration.php',
+'admin_phpwebgallery/creationBD.php',
+'admin_phpwebgallery/historique.php',
+'admin_phpwebgallery/index.htm',
+'admin_phpwebgallery/install_step1.php',
+'admin_phpwebgallery/install_step2.php',
+'admin_phpwebgallery/isadmin.php',
+'admin_phpwebgallery/liste_users.php',
+'admin_phpwebgallery/manuel.php',
+'admin_phpwebgallery/miseajour.php',
+'admin_phpwebgallery/perm.php',
+'commenter.php',
+'debut_tableau.inc',
+'fin_tableau.inc',
+'help_phpwebgallery',
+'help_phpwebgallery/admin.png',
+'help_phpwebgallery/config_step2.png',
+'help_phpwebgallery/index.htm',
+'images_phpwebgallery',
+'images_phpwebgallery/bleu_01.gif',
+'images_phpwebgallery/bleu_02.gif',
+'images_phpwebgallery/bleu_03.gif',
+'images_phpwebgallery/bleu_04.gif',
+'images_phpwebgallery/bleu_05.gif',
+'images_phpwebgallery/bleu_06.gif',
+'images_phpwebgallery/bleu_07.gif',
+'images_phpwebgallery/bleu_08.gif',
+'images_phpwebgallery/bleu_09.gif',
+'images_phpwebgallery/commentaire.gif',
+'images_phpwebgallery/espace.gif',
+'images_phpwebgallery/gris_01.gif',
+'images_phpwebgallery/gris_02.gif',
+'images_phpwebgallery/gris_03.gif',
+'images_phpwebgallery/gris_04.gif',
+'images_phpwebgallery/gris_05.gif',
+'images_phpwebgallery/gris_06.gif',
+'images_phpwebgallery/gris_07.gif',
+'images_phpwebgallery/gris_08.gif',
+'images_phpwebgallery/gris_09.gif',
+'images_phpwebgallery/index.htm',
+'images_phpwebgallery/info.gif',
+'images_phpwebgallery/lost.gif',
+'images_phpwebgallery/lost2.gif',
+'images_phpwebgallery/moins.gif',
+'images_phpwebgallery/new_2.gif',
+'images_phpwebgallery/new_rouge.gif',
+'images_phpwebgallery/perm.gif',
+'images_phpwebgallery/php_sqreuil_artistes.gif',
+'images_phpwebgallery/plus.gif',
+'images_phpwebgallery/prev.gif',
+'images_phpwebgallery/puce.gif',
+'images_phpwebgallery/puce_noire.gif',
+'images_phpwebgallery/register.gif',
+'images_phpwebgallery/register2.gif',
+'images_phpwebgallery/supprimer.gif',
+'images_phpwebgallery/vert_01.gif',
+'images_phpwebgallery/vert_02.gif',
+'images_phpwebgallery/vert_03.gif',
+'images_phpwebgallery/vert_04.gif',
+'images_phpwebgallery/vert_05.gif',
+'images_phpwebgallery/vert_06.gif',
+'images_phpwebgallery/vert_07.gif',
+'images_phpwebgallery/vert_08.gif',
+'images_phpwebgallery/vert_09.gif',
+'images_phpwebgallery/violet_01.gif',
+'images_phpwebgallery/violet_02.gif',
+'images_phpwebgallery/violet_03.gif',
+'images_phpwebgallery/violet_04.gif',
+'images_phpwebgallery/violet_05.gif',
+'images_phpwebgallery/violet_06.gif',
+'images_phpwebgallery/violet_07.gif',
+'images_phpwebgallery/violet_08.gif',
+'images_phpwebgallery/violet_09.gif',
+'include_phpwebgallery',
+'include_phpwebgallery/config.php',
+'include_phpwebgallery/index.htm',
+'include_phpwebgallery/local/config/database.inc.php',
+'index.htm',
+// Comparison between phpwebgallery-1.2.1 and phpwebgallery-1.1.0
+'admin/isadmin.php',
+'images/commentaire.gif',
+'images/lost.gif',
+'images/prev.gif',
+'images/register.gif',
+'include/config.php',
+'template/agjimmy/blue',
+'template/agjimmy/blue/01.gif',
+'template/agjimmy/blue/02.gif',
+'template/agjimmy/blue/03.gif',
+'template/agjimmy/blue/04.gif',
+'template/agjimmy/blue/05.gif',
+'template/agjimmy/blue/06.gif',
+'template/agjimmy/blue/07.gif',
+'template/agjimmy/blue/08.gif',
+'template/agjimmy/blue/09.gif',
+'template/agjimmy/blue/collapsed.gif',
+'template/agjimmy/blue/commentaire.gif',
+'template/agjimmy/blue/conf.php',
+'template/agjimmy/blue/expanded.gif',
+'template/agjimmy/blue/lost.gif',
+'template/agjimmy/blue/new_long.gif',
+'template/agjimmy/blue/new_short.gif',
+'template/agjimmy/blue/prev.gif',
+'template/agjimmy/blue/register.gif',
+'template/eexell/coldblue/commentaire.gif',
+'template/eexell/coldblue/prev.gif',
+'template/neon',
+'template/neon/black',
+'template/neon/black/01.gif',
+'template/neon/black/02.gif',
+'template/neon/black/03.gif',
+'template/neon/black/04.gif',
+'template/neon/black/05.gif',
+'template/neon/black/06.gif',
+'template/neon/black/07.gif',
+'template/neon/black/08.gif',
+'template/neon/black/09.gif',
+'template/neon/black/collapsed.gif',
+'template/neon/black/commentaire.gif',
+'template/neon/black/conf.php',
+'template/neon/black/expanded.gif',
+'template/neon/black/lost.gif',
+'template/neon/black/new_long.gif',
+'template/neon/black/new_short.gif',
+'template/neon/black/prev.gif',
+'template/neon/black/register.gif',
+'template/rounded/blue',
+'template/rounded/blue/01.gif',
+'template/rounded/blue/02.gif',
+'template/rounded/blue/03.gif',
+'template/rounded/blue/04.gif',
+'template/rounded/blue/05.gif',
+'template/rounded/blue/06.gif',
+'template/rounded/blue/07.gif',
+'template/rounded/blue/08.gif',
+'template/rounded/blue/09.gif',
+'template/rounded/blue/collapsed.gif',
+'template/rounded/blue/commentaire.gif',
+'template/rounded/blue/conf.php',
+'template/rounded/blue/expanded.gif',
+'template/rounded/blue/lost.gif',
+'template/rounded/blue/new_long.gif',
+'template/rounded/blue/new_short.gif',
+'template/rounded/blue/prev.gif',
+'template/rounded/blue/register.gif',
+'template/rounded/darkgray/commentaire.gif',
+'template/rounded/darkgray/prev.gif',
+'template/rounded/gray',
+'template/rounded/gray/01.gif',
+'template/rounded/gray/02.gif',
+'template/rounded/gray/03.gif',
+'template/rounded/gray/04.gif',
+'template/rounded/gray/05.gif',
+'template/rounded/gray/06.gif',
+'template/rounded/gray/07.gif',
+'template/rounded/gray/08.gif',
+'template/rounded/gray/09.gif',
+'template/rounded/gray/collapsed.gif',
+'template/rounded/gray/commentaire.gif',
+'template/rounded/gray/conf.php',
+'template/rounded/gray/expanded.gif',
+'template/rounded/gray/lost.gif',
+'template/rounded/gray/new_long.gif',
+'template/rounded/gray/new_short.gif',
+'template/rounded/gray/prev.gif',
+'template/rounded/gray/register.gif',
+// Comparison between phpwebgallery-1.3.0 and phpwebgallery-1.2.1
+'a_propos.php',
+'admin/ajout.php',
+'admin/cat.php',
+'admin/edit_cat.php',
+'admin/historique.php',
+'admin/images/arrow_up.gif',
+'admin/images/moins.gif',
+'admin/images/plus.gif',
+'admin/images/puce.gif',
+'admin/liste_users.php',
+'admin/manuel.php',
+'admin/miseajour.php',
+'admin/perm.php',
+'diapo.php',
+'images',
+'images/php_sqreuil_artistes.gif',
+'include/functions.php',
+'include/index.htm',
+'include/style.php',
+'language/czech.php',
+'language/danish.php',
+'language/italiano.php',
+'language/nederlands.php',
+'personnaliser.php',
+'photo.php',
+'template/agjimmy',
+'template/agjimmy/lightred',
+'template/agjimmy/lightred/01.gif',
+'template/agjimmy/lightred/02.gif',
+'template/agjimmy/lightred/03.gif',
+'template/agjimmy/lightred/04.gif',
+'template/agjimmy/lightred/05.gif',
+'template/agjimmy/lightred/06.gif',
+'template/agjimmy/lightred/07.gif',
+'template/agjimmy/lightred/08.gif',
+'template/agjimmy/lightred/09.gif',
+'template/agjimmy/lightred/collapsed.gif',
+'template/agjimmy/lightred/commentaire.gif',
+'template/agjimmy/lightred/conf.php',
+'template/agjimmy/lightred/delete.gif',
+'template/agjimmy/lightred/del_favorite.gif',
+'template/agjimmy/lightred/expanded.gif',
+'template/agjimmy/lightred/favorite.gif',
+'template/agjimmy/lightred/lost.gif',
+'template/agjimmy/lightred/new_long.gif',
+'template/agjimmy/lightred/new_short.gif',
+'template/agjimmy/lightred/register.gif',
+'template/eexell',
+'template/eexell/coldblue',
+'template/eexell/coldblue/01.gif',
+'template/eexell/coldblue/02.gif',
+'template/eexell/coldblue/03.gif',
+'template/eexell/coldblue/04.gif',
+'template/eexell/coldblue/05.gif',
+'template/eexell/coldblue/06.gif',
+'template/eexell/coldblue/07.gif',
+'template/eexell/coldblue/08.gif',
+'template/eexell/coldblue/09.gif',
+'template/eexell/coldblue/collapsed.gif',
+'template/eexell/coldblue/conf.php',
+'template/eexell/coldblue/delete.gif',
+'template/eexell/coldblue/del_favorite.gif',
+'template/eexell/coldblue/expanded.gif',
+'template/eexell/coldblue/favorite.gif',
+'template/eexell/coldblue/lost.gif',
+'template/eexell/coldblue/new_long.gif',
+'template/eexell/coldblue/new_short.gif',
+'template/eexell/coldblue/register.gif',
+'template/erya',
+'template/erya/blue',
+'template/erya/blue/01.gif',
+'template/erya/blue/02.gif',
+'template/erya/blue/03.gif',
+'template/erya/blue/04.gif',
+'template/erya/blue/05.gif',
+'template/erya/blue/06.gif',
+'template/erya/blue/07.gif',
+'template/erya/blue/08.gif',
+'template/erya/blue/09.gif',
+'template/erya/blue/collapsed.gif',
+'template/erya/blue/conf.php',
+'template/erya/blue/delete.gif',
+'template/erya/blue/del_favorite.gif',
+'template/erya/blue/expanded.gif',
+'template/erya/blue/favorite.gif',
+'template/erya/blue/lost.gif',
+'template/erya/blue/new_long.gif',
+'template/erya/blue/new_short.gif',
+'template/erya/blue/register.gif',
+'template/melodie',
+'template/melodie/blue',
+'template/melodie/blue/01.gif',
+'template/melodie/blue/02.gif',
+'template/melodie/blue/03.gif',
+'template/melodie/blue/04.gif',
+'template/melodie/blue/05.gif',
+'template/melodie/blue/06.gif',
+'template/melodie/blue/07.gif',
+'template/melodie/blue/08.gif',
+'template/melodie/blue/09.gif',
+'template/melodie/blue/collapsed.gif',
+'template/melodie/blue/conf.php',
+'template/melodie/blue/delete.gif',
+'template/melodie/blue/del_favorite.gif',
+'template/melodie/blue/expanded.gif',
+'template/melodie/blue/favorite.gif',
+'template/melodie/blue/lost.gif',
+'template/melodie/blue/new_long.gif',
+'template/melodie/blue/new_short.gif',
+'template/melodie/blue/register.gif',
+'template/rounded',
+'template/rounded/darkgray',
+'template/rounded/darkgray/01.gif',
+'template/rounded/darkgray/02.gif',
+'template/rounded/darkgray/03.gif',
+'template/rounded/darkgray/04.gif',
+'template/rounded/darkgray/05.gif',
+'template/rounded/darkgray/06.gif',
+'template/rounded/darkgray/07.gif',
+'template/rounded/darkgray/08.gif',
+'template/rounded/darkgray/09.gif',
+'template/rounded/darkgray/collapsed.gif',
+'template/rounded/darkgray/conf.php',
+'template/rounded/darkgray/delete.gif',
+'template/rounded/darkgray/del_favorite.gif',
+'template/rounded/darkgray/expanded.gif',
+'template/rounded/darkgray/favorite.gif',
+'template/rounded/darkgray/lost.gif',
+'template/rounded/darkgray/new_long.gif',
+'template/rounded/darkgray/new_short.gif',
+'template/rounded/darkgray/register.gif',
+'template/square',
+'template/square/light',
+'template/square/light/01.gif',
+'template/square/light/02.gif',
+'template/square/light/03.gif',
+'template/square/light/04.gif',
+'template/square/light/05.gif',
+'template/square/light/06.gif',
+'template/square/light/07.gif',
+'template/square/light/08.gif',
+'template/square/light/09.gif',
+'template/square/light/collapsed.gif',
+'template/square/light/conf.php',
+'template/square/light/delete.gif',
+'template/square/light/del_favorite.gif',
+'template/square/light/expanded.gif',
+'template/square/light/favorite.gif',
+'template/square/light/lost.gif',
+'template/square/light/new_long.gif',
+'template/square/light/new_short.gif',
+'template/square/light/register.gif',
+// Comparison between phpwebgallery-1.3.1 and phpwebgallery-1.3.0
+'template/default/style.inc.php',
+'template/default/theme/conf.php',
+// Comparison between phpwebgallery-1.3.2 and phpwebgallery-1.3.1
+// Comparison between phpwebgallery-1.3.3 and phpwebgallery-1.3.2
+// Comparison between phpwebgallery-1.3.4 and phpwebgallery-1.3.3
+// Comparison between phpwebgallery-1.4.0 and phpwebgallery-1.3.4
+'admin/admin.php',
+'admin/create_listing_file.php',
+'admin/images/admin.png',
+'admin/install.php',
+'admin/phpwebgallery_structure.sql',
+'admin/user_modify.php',
+'include/init.inc.php',
+'include/vtemplate.class.php',
+'language/catala.php',
+'language/czech.php',
+'language/deutsch.php',
+'language/dutch.php',
+'language/english.php',
+'language/francais.php',
+'language/japanese.php',
+'language/magyar.php',
+'language/norsk.php',
+'language/portuguese-br.php',
+'language/russian.php',
+'language/spanish.php',
+'language/svenska.php',
+'readme.txt',
+'template/default/about.vtp',
+'template/default/admin/admin.vtp',
+'template/default/admin/cat_list.vtp',
+'template/default/admin/cat_modify.vtp',
+'template/default/admin/comments.vtp',
+'template/default/admin/configuration.vtp',
+'template/default/admin/group_list.vtp',
+'template/default/admin/group_perm.vtp',
+'template/default/admin/help.vtp',
+'template/default/admin/infos_image.vtp',
+'template/default/admin/install.vtp',
+'template/default/admin/picture_modify.vtp',
+'template/default/admin/stats.vtp',
+'template/default/admin/thumbnail.vtp',
+'template/default/admin/update.vtp',
+'template/default/admin/user_list.vtp',
+'template/default/admin/user_modify.vtp',
+'template/default/admin/user_perm.vtp',
+'template/default/admin/waiting.vtp',
+'template/default/category.vtp',
+'template/default/comments.vtp',
+'template/default/default-admin.css',
+'template/default/footer.htm',
+'template/default/footer.vtp',
+'template/default/header.htm',
+'template/default/header.vtp',
+'template/default/htmlfunctions.inc.php',
+'template/default/identification.vtp',
+'template/default/picture.vtp',
+'template/default/profile.vtp',
+'template/default/register.vtp',
+'template/default/search.vtp',
+'template/default/theme/01.gif',
+'template/default/theme/02.gif',
+'template/default/theme/03.gif',
+'template/default/theme/04.gif',
+'template/default/theme/05.gif',
+'template/default/theme/06.gif',
+'template/default/theme/07.gif',
+'template/default/theme/08.gif',
+'template/default/theme/09.gif',
+'template/default/theme/collapsed.gif',
+'template/default/theme/expanded.gif',
+'template/default/theme/new_long.gif',
+'template/default/theme/new_short.gif',
+'template/default/upload.vtp',
+// Comparison between phpwebgallery-1.4.1 and phpwebgallery-1.4.0
+// Comparison between phpwebgallery-1.5.0 and phpwebgallery-1.4.1
+'admin/admin_phpinfo.php',
+'admin/infos_images.php',
+'admin/search.php',
+'include/config.inc.php',
+'install/dbscheme.txt',
+'install/upgrade_1.3.2.php',
+'install/upgrade_1.3.3.php',
+'install/upgrade_1.3.4.php',
+'language/en_UK.iso-8859-1/faq.lang.php',
+'language/fr_FR.iso-8859-1/faq.lang.php',
+'template/default',
+'template/default/about.tpl',
+'template/default/admin',
+'template/default/admin/cat_list.tpl',
+'template/default/admin/cat_modify.tpl',
+'template/default/admin/cat_options.tpl',
+'template/default/admin/cat_perm.vtp',
+'template/default/admin/configuration.tpl',
+'template/default/admin/group_list.tpl',
+'template/default/admin/group_perm.tpl',
+'template/default/admin/help.tpl',
+'template/default/admin/images',
+'template/default/admin/images/arrow_down.gif',
+'template/default/admin/images/arrow_first.gif',
+'template/default/admin/images/arrow_last.gif',
+'template/default/admin/images/arrow_select.gif',
+'template/default/admin/images/arrow_up.gif',
+'template/default/admin/images/collapsed.gif',
+'template/default/admin/images/delete.gif',
+'template/default/admin/images/expanded.gif',
+'template/default/admin/images/icon_folder.gif',
+'template/default/admin/images/icon_folder_link.gif',
+'template/default/admin/images/icon_folder_lock.gif',
+'template/default/admin/images/icon_subfolder.gif',
+'template/default/admin/images/moins.gif',
+'template/default/admin/images/plus.gif',
+'template/default/admin/images/puce.gif',
+'template/default/admin/images/stat_left.gif',
+'template/default/admin/images/stat_middle.gif',
+'template/default/admin/images/stat_right.gif',
+'template/default/admin/infos_images.tpl',
+'template/default/admin/picture_modify.tpl',
+'template/default/admin/remote_site.tpl',
+'template/default/admin/search_username.tpl',
+'template/default/admin/stats.tpl',
+'template/default/admin/thumbnail.tpl',
+'template/default/admin/update.tpl',
+'template/default/admin/user_perm.tpl',
+'template/default/admin/waiting.tpl',
+'template/default/admin.tpl',
+'template/default/category.tpl',
+'template/default/comments.tpl',
+'template/default/default.css',
+'template/default/footer.tpl',
+'template/default/header.tpl',
+'template/default/identification.tpl',
+'template/default/images',
+'template/default/images/logo.jpg',
+'template/default/images/php_sqreuil_artistes.gif',
+'template/default/install.tpl',
+'template/default/mimetypes',
+'template/default/mimetypes/avi.png',
+'template/default/mimetypes/mp3.png',
+'template/default/mimetypes/mpg.png',
+'template/default/mimetypes/ogg.png',
+'template/default/mimetypes/zip.png',
+'template/default/picture.tpl',
+'template/default/profile.tpl',
+'template/default/redirect.tpl',
+'template/default/register.tpl',
+'template/default/search.tpl',
+'template/default/theme',
+'template/default/theme/button_bg.gif',
+'template/default/theme/categories.gif',
+'template/default/theme/delete.gif',
+'template/default/theme/del_favorite.gif',
+'template/default/theme/download.gif',
+'template/default/theme/eCard.gif',
+'template/default/theme/favorite.gif',
+'template/default/theme/left-arrow.gif',
+'template/default/theme/lost.gif',
+'template/default/theme/metadata.gif',
+'template/default/theme/properties.gif',
+'template/default/theme/recent.gif',
+'template/default/theme/register.gif',
+'template/default/theme/right-arrow.gif',
+'template/default/theme/slideshow.gif',
+'template/default/theme/tableh1_bg.gif',
+'template/default/upgrade.tpl',
+'template/default/upload.tpl',
+// Comparison between phpwebgallery-1.5.1 and phpwebgallery-1.5.0
+'include/.cvsignore',
+// Comparison between phpwebgallery-1.5.2 and phpwebgallery-1.5.1
+// Comparison between phpwebgallery-1.6.0RC1 and phpwebgallery-1.5.2
+'admin/include/isadmin.inc.php',
+'admin/remote_site.php',
+'admin/update.php',
+'include/category_calendar.inc.php',
+'install/upgrade_1.4.1.php',
+'template/yoga/admin/images',
+'template/yoga/admin/images/errors.png',
+'template/yoga/admin/images/infos.png',
+'template/yoga/admin/remote_site.tpl',
+'template/yoga/admin/update.tpl',
+'template/yoga/category.tpl',
+'template/yoga/mimetypes',
+'template/yoga/mimetypes/avi.png',
+'template/yoga/mimetypes/mp3.png',
+'template/yoga/mimetypes/mpg.png',
+'template/yoga/mimetypes/ogg.png',
+'template/yoga/mimetypes/zip.png',
+'template/yoga/theme/caddie_add.png',
+'template/yoga/theme/category_children.png',
+'template/yoga/theme/category_delete.png',
+'template/yoga/theme/category_edit.png',
+'template/yoga/theme/category_elements.png',
+'template/yoga/theme/category_jump-to.png',
+'template/yoga/theme/category_permissions.png',
+'template/yoga/theme/category_representant_random.png',
+'template/yoga/theme/delete.png',
+'template/yoga/theme/del_favorite.png',
+'template/yoga/theme/exit.png',
+'template/yoga/theme/favorite.png',
+'template/yoga/theme/help.png',
+'template/yoga/theme/home.png',
+'template/yoga/theme/left.png',
+'template/yoga/theme/lost_password.png',
+'template/yoga/theme/metadata.png',
+'template/yoga/theme/permissions.png',
+'template/yoga/theme/preferences.png',
+'template/yoga/theme/recent.png',
+'template/yoga/theme/register.png',
+'template/yoga/theme/representative.png',
+'template/yoga/theme/right.png',
+'template/yoga/theme/save.png',
+'template/yoga/theme/slideshow.png',
+'template/yoga/theme/sync_metadata.png',
+'template/yoga/theme/up.png',
+'template/yoga-dark',
+'template/yoga-dark/about.tpl',
+'template/yoga-dark/admin',
+'template/yoga-dark/admin/cat_list.tpl',
+'template/yoga-dark/admin/cat_modify.tpl',
+'template/yoga-dark/admin/cat_move.tpl',
+'template/yoga-dark/admin/cat_options.tpl',
+'template/yoga-dark/admin/cat_perm.tpl',
+'template/yoga-dark/admin/comments.tpl',
+'template/yoga-dark/admin/configuration.tpl',
+'template/yoga-dark/admin/double_select.tpl',
+'template/yoga-dark/admin/element_set_global.tpl',
+'template/yoga-dark/admin/element_set_unit.tpl',
+'template/yoga-dark/admin/group_list.tpl',
+'template/yoga-dark/admin/group_perm.tpl',
+'template/yoga-dark/admin/images',
+'template/yoga-dark/admin/images/errors.png',
+'template/yoga-dark/admin/images/infos.png',
+'template/yoga-dark/admin/intro.tpl',
+'template/yoga-dark/admin/maintenance.tpl',
+'template/yoga-dark/admin/picture_modify.tpl',
+'template/yoga-dark/admin/remote_site.tpl',
+'template/yoga-dark/admin/stats.tpl',
+'template/yoga-dark/admin/thumbnail.tpl',
+'template/yoga-dark/admin/update.tpl',
+'template/yoga-dark/admin/user_list.tpl',
+'template/yoga-dark/admin/user_perm.tpl',
+'template/yoga-dark/admin/waiting.tpl',
+'template/yoga-dark/admin.tpl',
+'template/yoga-dark/category.tpl',
+'template/yoga-dark/comments.tpl',
+'template/yoga-dark/content.css',
+'template/yoga-dark/dclear.css',
+'template/yoga-dark/default-colors.css',
+'template/yoga-dark/default-layout.css',
+'template/yoga-dark/fix-khtml.css',
+'template/yoga-dark/footer.tpl',
+'template/yoga-dark/header.tpl',
+'template/yoga-dark/identification.tpl',
+'template/yoga-dark/image.css',
+'template/yoga-dark/install.tpl',
+'template/yoga-dark/menubar.css',
+'template/yoga-dark/mimetypes',
+'template/yoga-dark/mimetypes/avi.png',
+'template/yoga-dark/mimetypes/mp3.png',
+'template/yoga-dark/mimetypes/mpg.png',
+'template/yoga-dark/mimetypes/ogg.png',
+'template/yoga-dark/mimetypes/zip.png',
+'template/yoga-dark/notification.tpl',
+'template/yoga-dark/password.tpl',
+'template/yoga-dark/picture.tpl',
+'template/yoga-dark/popuphelp.css',
+'template/yoga-dark/popuphelp.tpl',
+'template/yoga-dark/print.css',
+'template/yoga-dark/profile.tpl',
+'template/yoga-dark/redirect.tpl',
+'template/yoga-dark/register.tpl',
+'template/yoga-dark/search.tpl',
+'template/yoga-dark/theme',
+'template/yoga-dark/theme/button_bg.gif',
+'template/yoga-dark/theme/caddie_add.png',
+'template/yoga-dark/theme/category_children.png',
+'template/yoga-dark/theme/category_delete.png',
+'template/yoga-dark/theme/category_edit.png',
+'template/yoga-dark/theme/category_elements.png',
+'template/yoga-dark/theme/category_jump-to.png',
+'template/yoga-dark/theme/category_permissions.png',
+'template/yoga-dark/theme/category_representant_random.png',
+'template/yoga-dark/theme/delete.png',
+'template/yoga-dark/theme/del_favorite.png',
+'template/yoga-dark/theme/exit.png',
+'template/yoga-dark/theme/favorite.png',
+'template/yoga-dark/theme/help.png',
+'template/yoga-dark/theme/home.png',
+'template/yoga-dark/theme/left.png',
+'template/yoga-dark/theme/lost_password.png',
+'template/yoga-dark/theme/metadata.png',
+'template/yoga-dark/theme/permissions.png',
+'template/yoga-dark/theme/preferences.png',
+'template/yoga-dark/theme/recent.png',
+'template/yoga-dark/theme/register.png',
+'template/yoga-dark/theme/representative.png',
+'template/yoga-dark/theme/right.png',
+'template/yoga-dark/theme/save.png',
+'template/yoga-dark/theme/slideshow.png',
+'template/yoga-dark/theme/sync_metadata.png',
+'template/yoga-dark/theme/tableh1_bg.gif',
+'template/yoga-dark/theme/tableh2_bg.gif',
+'template/yoga-dark/theme/up.png',
+'template/yoga-dark/upgrade.tpl',
+'template/yoga-dark/upload.tpl',
+// Comparison between phpwebgallery-1.6.0RC2 and phpwebgallery-1.6.0RC1
+// Comparison between phpwebgallery-1.6.0 and phpwebgallery-1.6.0RC2
+'template/yoga/dclear.css',
+'template/yoga/image.css',
+// Comparison between phpwebgallery-1.6.1 and phpwebgallery-1.6.0
+'admin/images/index.htm',
+'admin/include/index.htm',
+'admin/index.htm',
+'galleries/index.htm',
+'language/index.htm',
+// Comparison between phpwebgallery-1.6.2 and phpwebgallery-1.6.1
+// Comparison between phpwebgallery-1.7.0RC1 and phpwebgallery-1.6.2
+'admin/images/daily_stats.img.php',
+'admin/images/global_stats.img.php',
+'admin/images/monthly_stats.img.php',
+'admin/images/phpBarGraph.php',
+'include/category_recent_cats.inc.php',
+'include/category_subcats.inc.php',
+'include/pngfix.js',
+'include/scripts.js',
+'install/db/22.1-database.php',
+'install/db/22.2-database.php',
+'install/db/22.3-database.php',
+'install/db/22.5-database.php',
+'install/db/22.6-database.php',
+'install/db/22.7-database.php',
+'install/db/22.8-database.php',
+'install/db/22.9-database.php',
+'language/en_UK.iso-8859-1/help/remote_site.html',
+'language/fr_FR.iso-8859-1/help/remote_site.html',
+'template/yoga/upgrade.tpl',
+// Comparison between phpwebgallery-1.7.0RC2 and phpwebgallery-1.7.0RC1
+'admin/waiting.php',
+'template/yoga/admin/waiting.tpl',
+// Comparison between phpwebgallery-1.7.0 and phpwebgallery-1.7.0RC2
+// Comparison between phpwebgallery-1.7.1 and phpwebgallery-1.7.0
+// Comparison between phpwebgallery-1.7.2 and phpwebgallery-1.7.1
+'include/functions_group.inc.php',
+'template/yoga/thumbnails-fix-ie5-ie6.css',
+// Comparison between phpwebgallery-1.7.3 and phpwebgallery-1.7.2
+// Comparison between phpwebgallery-2.0.0RC1 and phpwebgallery-1.7.3
+'admin/include/functions_check_integrity.inc.php',
+'admin/include/functions_tabsheet.inc.php',
+'admin/plugins.php',
+'admin/ws_checker.php',
+'include/template.php',
+'install/phpwebgallery_structure.sql',
+'language/en_UK.iso-8859-1',
+'language/en_UK.iso-8859-1/about.html',
+'language/en_UK.iso-8859-1/admin.lang.php',
+'language/en_UK.iso-8859-1/common.lang.php',
+'language/en_UK.iso-8859-1/help',
+'language/en_UK.iso-8859-1/help/advanced_feature.html',
+'language/en_UK.iso-8859-1/help/cat_modify.html',
+'language/en_UK.iso-8859-1/help/cat_move.html',
+'language/en_UK.iso-8859-1/help/cat_options.html',
+'language/en_UK.iso-8859-1/help/cat_perm.html',
+'language/en_UK.iso-8859-1/help/configuration.html',
+'language/en_UK.iso-8859-1/help/group_list.html',
+'language/en_UK.iso-8859-1/help/history.html',
+'language/en_UK.iso-8859-1/help/index.php',
+'language/en_UK.iso-8859-1/help/maintenance.html',
+'language/en_UK.iso-8859-1/help/notification_by_mail.html',
+'language/en_UK.iso-8859-1/help/permalinks.html',
+'language/en_UK.iso-8859-1/help/search.html',
+'language/en_UK.iso-8859-1/help/site_manager.html',
+'language/en_UK.iso-8859-1/help/synchronize.html',
+'language/en_UK.iso-8859-1/help/thumbnail.html',
+'language/en_UK.iso-8859-1/help/user_list.html',
+'language/en_UK.iso-8859-1/help/web_service.html',
+'language/en_UK.iso-8859-1/help.html',
+'language/en_UK.iso-8859-1/index.php',
+'language/en_UK.iso-8859-1/install.lang.php',
+'language/en_UK.iso-8859-1/iso.txt',
+'language/fr_FR.iso-8859-1',
+'language/fr_FR.iso-8859-1/about.html',
+'language/fr_FR.iso-8859-1/admin.lang.php',
+'language/fr_FR.iso-8859-1/common.lang.php',
+'language/fr_FR.iso-8859-1/help',
+'language/fr_FR.iso-8859-1/help/advanced_feature.html',
+'language/fr_FR.iso-8859-1/help/cat_modify.html',
+'language/fr_FR.iso-8859-1/help/cat_move.html',
+'language/fr_FR.iso-8859-1/help/cat_options.html',
+'language/fr_FR.iso-8859-1/help/cat_perm.html',
+'language/fr_FR.iso-8859-1/help/configuration.html',
+'language/fr_FR.iso-8859-1/help/group_list.html',
+'language/fr_FR.iso-8859-1/help/history.html',
+'language/fr_FR.iso-8859-1/help/index.php',
+'language/fr_FR.iso-8859-1/help/maintenance.html',
+'language/fr_FR.iso-8859-1/help/notification_by_mail.html',
+'language/fr_FR.iso-8859-1/help/permalinks.html',
+'language/fr_FR.iso-8859-1/help/search.html',
+'language/fr_FR.iso-8859-1/help/site_manager.html',
+'language/fr_FR.iso-8859-1/help/synchronize.html',
+'language/fr_FR.iso-8859-1/help/thumbnail.html',
+'language/fr_FR.iso-8859-1/help/user_list.html',
+'language/fr_FR.iso-8859-1/help/web_service.html',
+'language/fr_FR.iso-8859-1/help.html',
+'language/fr_FR.iso-8859-1/index.php',
+'language/fr_FR.iso-8859-1/install.lang.php',
+'language/fr_FR.iso-8859-1/iso.txt',
+'plugins/add_index/language/en_UK.iso-8859-1',
+'plugins/add_index/language/en_UK.iso-8859-1/help',
+'plugins/add_index/language/en_UK.iso-8859-1/help/advanced_feature.html',
+'plugins/add_index/language/en_UK.iso-8859-1/help/index.php',
+'plugins/add_index/language/en_UK.iso-8859-1/help/site_manager.html',
+'plugins/add_index/language/en_UK.iso-8859-1/index.php',
+'plugins/add_index/language/en_UK.iso-8859-1/plugin.lang.php',
+'plugins/add_index/language/fr_FR.iso-8859-1',
+'plugins/add_index/language/fr_FR.iso-8859-1/help',
+'plugins/add_index/language/fr_FR.iso-8859-1/help/advanced_feature.html',
+'plugins/add_index/language/fr_FR.iso-8859-1/help/index.php',
+'plugins/add_index/language/fr_FR.iso-8859-1/help/site_manager.html',
+'plugins/add_index/language/fr_FR.iso-8859-1/index.php',
+'plugins/add_index/language/fr_FR.iso-8859-1/plugin.lang.php',
+'plugins/admin_advices/en_UK.iso-8859-1',
+'plugins/admin_advices/en_UK.iso-8859-1/index.php',
+'plugins/admin_advices/en_UK.iso-8859-1/lang.adv.php',
+'plugins/admin_advices/fr_FR.iso-8859-1',
+'plugins/admin_advices/fr_FR.iso-8859-1/index.php',
+'plugins/admin_advices/fr_FR.iso-8859-1/lang.adv.php',
+'plugins/hello_world',
+'plugins/hello_world/index.php',
+'plugins/hello_world/main.inc.php',
+'template/yoga/admin',
+'template/yoga/admin/advanced_feature.tpl',
+'template/yoga/admin/cat_list.tpl',
+'template/yoga/admin/cat_modify.tpl',
+'template/yoga/admin/cat_move.tpl',
+'template/yoga/admin/cat_options.tpl',
+'template/yoga/admin/cat_perm.tpl',
+'template/yoga/admin/check_integrity.tpl',
+'template/yoga/admin/comments.tpl',
+'template/yoga/admin/configuration.tpl',
+'template/yoga/admin/default-layout.css',
+'template/yoga/admin/double_select.tpl',
+'template/yoga/admin/element_set_global.tpl',
+'template/yoga/admin/element_set_unit.tpl',
+'template/yoga/admin/group_list.tpl',
+'template/yoga/admin/group_perm.tpl',
+'template/yoga/admin/history.tpl',
+'template/yoga/admin/index.php',
+'template/yoga/admin/intro.tpl',
+'template/yoga/admin/maintenance.tpl',
+'template/yoga/admin/notification_by_mail.tpl',
+'template/yoga/admin/permalinks.tpl',
+'template/yoga/admin/picture_modify.tpl',
+'template/yoga/admin/plugin.tpl',
+'template/yoga/admin/plugins.tpl',
+'template/yoga/admin/profile.tpl',
+'template/yoga/admin/rating.tpl',
+'template/yoga/admin/site_manager.tpl',
+'template/yoga/admin/site_update.tpl',
+'template/yoga/admin/stats.tpl',
+'template/yoga/admin/tabsheet.tpl',
+'template/yoga/admin/tags.tpl',
+'template/yoga/admin/thumbnail.tpl',
+'template/yoga/admin/upload.tpl',
+'template/yoga/admin/user_list.tpl',
+'template/yoga/admin/user_perm.tpl',
+'template/yoga/admin/ws_checker.tpl',
+'template/yoga/admin.tpl',
+'template/yoga/icon/category_delete.png',
+'template/yoga/icon/category_elements.png',
+'template/yoga/icon/category_jump-to.png',
+'template/yoga/icon/category_permissions.png',
+'template/yoga/icon/check.png',
+'template/yoga/icon/edit_s.png',
+'template/yoga/icon/page_end.png',
+'template/yoga/icon/page_top.png',
+'template/yoga/icon/permissions.png',
+'template/yoga/icon/slideshow.png',
+'template/yoga/icon/star_e.gif',
+'template/yoga/icon/star_f.gif',
+'template/yoga/icon/sync_metadata.png',
+'template/yoga/icon/toggle_is_default_group.png',
+'template/yoga/icon/uncheck.png',
+'template/yoga/icon/virt_category.png',
+'template/yoga/popuphelp.css',
+'template-common/layout.css',
+// Comparison between phpwebgallery-2.0.0RC2 and phpwebgallery-2.0.0RC1
+'language/en_UK/help/web_service.html',
+'language/es_ES/help/web_service.html',
+'language/fr_FR/help/web_service.html',
+'language/it_IT/help/web_service.html',
+'language/nl_NL/help/web_service.html',
+'template/yoga/mail/text/html/admin',
+'template/yoga/mail/text/html/admin/cat_group_info.tpl',
+'template/yoga/mail/text/html/admin/index.php',
+'template/yoga/mail/text/html/admin/notification_by_mail.tpl',
+'template/yoga/mail/text/plain/admin',
+'template/yoga/mail/text/plain/admin/cat_group_info.tpl',
+'template/yoga/mail/text/plain/admin/index.php',
+'template/yoga/mail/text/plain/admin/notification_by_mail.tpl',
+'template-common/lib/plugins/jquery.growfield.js',
+'template-common/lib/plugins/jquery.growfield.packed.js',
+// Comparison between phpwebgallery-2.0.0RC3 and phpwebgallery-2.0.0RC2
+'admin/template/goto/icon/del_favorite.png',
+'admin/template/goto/theme/roma/datepicker.css',
+// Comparison between phpwebgallery-2.0.0RC4 and phpwebgallery-2.0.0RC3
+'template/yoga/install.tpl',
+'template/yoga/upgrade.tpl',
+// Comparison between trunk-r3105 and phpwebgallery-2.0.0RC4
+'admin/template/goto/theme/roma/images/bottom-left-bg.png',
+'admin/template/goto/theme/roma/images/top-left-bg.png',
+'local/config/database.inc.php',
+'template-common/lib/ui/ui.accordion.packed.js',
+'template-common/lib/ui/ui.core.packed.js',
+'template-common/lib/ui/ui.datepicker.css',
+'template-common/lib/ui/ui.datepicker.packed.js',
+'template-common/lib/ui/ui.dialog.packed.js',
+'template-common/lib/ui/ui.draggable.packed.js',
+'template-common/lib/ui/ui.droppable.packed.js',
+'template-common/lib/ui/ui.resizable.packed.js',
+'template-common/lib/ui/ui.selectable.packed.js',
+'template-common/lib/ui/ui.slider.packed.js',
+'template-common/lib/ui/ui.sortable.packed.js',
+'template-common/lib/ui/ui.tabs.packed.js',
+);
+
+$list_exlude_files = array(
+'local/config/database.inc.php',
+);
+
+
+$upgrade_description = 'Delete old and not used files';
+
+// +-----------------------------------------------------------------------+
+// |                            Upgrade content                            |
+// +-----------------------------------------------------------------------+
+// remove exclude files
+$files=array_diff($list_files, $list_exlude_files);
+// inverse sort in order to remove corretly directory
+rsort($files);
+
+foreach ($files as $file)
+{
+  if (is_file($file))
+  {
+    echo 'Delete file '.$file."\n";
+    @chmod($file, 0777);
+    if (! unlink($file))
+    {
+      echo 'Error on delete file '.$file."\n";
+    }
+  }
+  elseif (is_dir($file))
+  {
+    echo 'Delete directory '.$file."\n";
+    @chmod($file, 0777);
+    if (! rmdir($file))
+    {
+      echo 'Error on directory file '.$file."\n";
+    }
+  }
+}
+
+echo
+"\n"
+.'"'.$upgrade_description.'"'.' ended'
+."\n"
+;
+
+?>
Index: /tags/2.6.0RC1/install/db/81-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/81-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/81-database.php	(revision 25596)
@@ -0,0 +1,50 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add new email features : 
+users can modify/delete their owns comments';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config (param,value,comment)
+  VALUES (\'user_can_delete_comment\',\'false\',
+    \'administrators can allow user delete their own comments\'),
+  (\'user_can_edit_comment\',\'false\',
+    \'administrators can allow user edit their own comments\'),
+  (\'email_admin_on_comment_edition\',\'false\',
+    \'Send an email to the administrators when a comment is modified\'),
+  (\'email_admin_on_comment_deletion\',\'false\',
+    \'Send an email to the administrators when a comment is deleted\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/82-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/82-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/82-database.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add new column to save author_id. 
+Guest users names are saved in author column';
+
+$query = '
+ALTER TABLE '.PREFIX_TABLE.'comments
+  ADD COLUMN author_id smallint(5) DEFAULT NULL
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/83-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/83-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/83-database.php	(revision 25596)
@@ -0,0 +1,59 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Update column save author_id with value.';
+
+$query = '
+UPDATE
+  '.COMMENTS_TABLE.' AS c ,
+  '.USERS_TABLE.' AS u,
+  '.USER_INFOS_TABLE.' AS i
+SET c.author_id = u.'.$conf['user_fields']['id'].'
+WHERE
+    c.author_id is null
+AND c.author = u.'.$conf['user_fields']['username'].' 
+AND u.'.$conf['user_fields']['id'].' = i.user_id
+AND i.registration_date <= c.date
+;';
+
+pwg_query($query);
+
+$query = '
+UPDATE '.COMMENTS_TABLE.' AS c 
+SET c.author_id = '.$conf['guest_id'].'
+WHERE c.author_id is null
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/84-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/84-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/84-database.php	(revision 25596)
@@ -0,0 +1,96 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Update default template to default theme.';
+
+$query = '
+ALTER TABLE '.USER_INFOS_TABLE.'
+  CHANGE COLUMN template theme varchar(255) NOT NULL default \'Sylvia\'
+;';
+
+pwg_query($query);
+
+$query = '
+SELECT user_id, theme
+  FROM '.USER_INFOS_TABLE.'
+;';
+
+$result = pwg_query($query);
+
+$users = array();
+while ($row = pwg_db_fetch_assoc($result))
+{
+  list($user_template, $user_theme) = explode('/', $row['theme']);
+
+  switch ($user_template)
+  {
+    case 'yoga':
+      break;
+
+    case 'gally':
+      $user_theme = 'gally-'.$user_theme;
+      break;
+
+    case 'floPure':
+      $user_theme = 'Pure_'.$user_theme;
+      break;
+
+    case 'floOs':
+      $user_theme = 'OS_'.$user_theme;
+      break;
+
+    case 'simple':
+      $user_theme = 'simple-'.$user_theme;
+      break;
+
+    default:
+      $user_theme = 'Sylvia';
+  }
+
+  array_push($users, array(
+    'user_id' => $row['user_id'],
+    'theme' => $user_theme
+    )
+  );
+}
+
+mass_updates(
+  USER_INFOS_TABLE,
+  array(
+    'primary' => array('user_id'),
+    'update'  => array('theme')
+    ),
+  $users
+  );
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/85-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/85-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/85-database.php	(revision 25596)
@@ -0,0 +1,51 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add a table to manage themes.';
+
+$query = "
+CREATE TABLE ".PREFIX_TABLE."themes (
+  `id` varchar(64) NOT NULL default '',
+  `version` varchar(64) NOT NULL default '0',
+  `name` varchar(64) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM";
+
+if (DB_CHARSET == 'utf8')
+{
+  $query .= " DEFAULT CHARACTER SET utf8";
+}
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/86-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/86-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/86-database.php	(revision 25596)
@@ -0,0 +1,39 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Automatically activate core themes.';
+
+include_once(PHPWG_ROOT_PATH . 'admin/include/functions_install.inc.php');
+activate_core_themes();
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/87-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/87-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/87-database.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined("PHPWG_ROOT_PATH"))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add display configuration options.';
+
+$query = '
+INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
+  VALUES
+    ("menubar_filter_icon","true","Display filter icon"),
+    ("index_sort_order_input","true","Display image order selection list"),
+    ("index_flat_icon","true","Display flat icon"),
+    ("index_posted_date_icon","true","Display calendar by posted date"),
+    ("index_created_date_icon","true","Display calendar by creation date icon"),
+    ("index_slideshow_icon","true","Display slideshow icon"),
+    ("picture_metadata_icon","true","Display metadata icon on picture page"),
+    ("picture_slideshow_icon","true","Display slideshow icon on picture page"),
+    ("picture_favorite_icon","true","Display favorite icon on picture page"),
+    ("picture_navigation_icons","true","Display navigation icons on picture page"),
+    ("picture_navigation_thumb","true","Display navigation thumbnails on picture page")
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/88-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/88-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/88-database.php	(revision 25596)
@@ -0,0 +1,49 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined("PHPWG_ROOT_PATH"))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add display configuration for picture properties.';
+
+$query = '
+INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
+  VALUES
+    ("picture_download_icon","true","Display download icon on picture page"),
+    (
+      "picture_informations", 
+      "a:11:{s:6:\"author\";b:1;s:10:\"created_on\";b:1;s:9:\"posted_on\";b:1;s:10:\"dimensions\";b:1;s:4:\"file\";b:1;s:8:\"filesize\";b:1;s:4:\"tags\";b:1;s:10:\"categories\";b:1;s:6:\"visits\";b:1;s:12:\"average_rate\";b:1;s:13:\"privacy_level\";b:1;}",
+      "Information displayed on picture page"
+    )
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/89-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/89-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/89-database.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined("PHPWG_ROOT_PATH"))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Admins can activate/deactivate user customization.';
+
+$query = '
+INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
+  VALUES
+    ("allow_user_customization","true","allow users to customize their gallery?")
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/90-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/90-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/90-database.php	(revision 25596)
@@ -0,0 +1,62 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add a table to manage languages.';
+
+$query = "
+CREATE TABLE ".PREFIX_TABLE."languages (
+  `id` varchar(64) NOT NULL default '',
+  `version` varchar(64) NOT NULL default '0',
+  `name` varchar(64) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM";
+
+if (DB_CHARSET == 'utf8')
+{
+  $query .= " DEFAULT CHARACTER SET utf8";
+}
+
+pwg_query($query);
+
+// Fill table
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/languages.class.php');
+
+$languages = new languages(PWG_CHARSET);
+
+foreach ($languages->fs_languages as $language_code => $fs_language)
+{
+  $languages->perform_action('activate', $language_code);
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/91-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/91-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/91-database.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Remove adviser status.';
+
+// Existing adviser become normal user
+$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = 'normal'
+WHERE status IN ('webmaster', 'admin')
+  AND adviser = 'true'
+;";
+
+pwg_query($query);
+
+// Remove adviser column
+$query = '
+ALTER TABLE '.USER_INFOS_TABLE.'
+DROP COLUMN adviser
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/92-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/92-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/92-database.php	(revision 25596)
@@ -0,0 +1,57 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'New colum images.added_by, reference to users.id';
+
+// Add column
+$query = 'ALTER TABLE '.IMAGES_TABLE.' ADD COLUMN ';
+
+if ('mysql' == $conf['dblayer'])
+{
+  $query.= ' added_by smallint(5)';
+}
+
+if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite')))
+{
+  $query.= ' "added_by" INTEGER default 0';
+}
+
+$query.= ' NOT NULL;';
+
+pwg_query($query);
+
+// set the existing photos with the webmaster_id as added_by
+$query = 'UPDATE '.IMAGES_TABLE.' SET added_by = '.$conf['webmaster_id'].';';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/93-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/93-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/93-database.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'Monday may not be the first day of the week';
+
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config (param,value,comment)
+  VALUES (\'week_starts_on\',\'monday\', \''.$upgrade_description.'\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/94-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/94-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/94-database.php	(revision 25596)
@@ -0,0 +1,109 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'remove user upload as core feature and save config for Community plugin';
+
+$user_upload_conf = array();
+
+// upload_user_access
+$conf_orig = $conf;
+load_conf_from_db();
+$user_upload_conf['upload_user_access'] = $conf['upload_user_access'];
+$conf = $conf_orig;
+
+// unvalidated photos submitted by users
+$query = '
+SELECT *
+  FROM '.PREFIX_TABLE.'waiting
+;';
+$result = pwg_query($query);
+$user_upload_conf['waiting_rows'] = array();
+while ($row = pwg_db_fetch_assoc($result)) {
+  array_push($user_upload_conf['waiting_rows'], $row);
+}
+
+// uploadable categories
+$query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE uploadable = \'true\'
+;';
+$result = pwg_query($query);
+$user_upload_conf['uploadable_categories'] = array();
+while ($row = pwg_db_fetch_assoc($result)) {
+  array_push($user_upload_conf['uploadable_categories'], $row['id']);
+}
+
+// save configuration for a future use by the Community plugin
+$backup_filepath = PHPWG_ROOT_PATH.$conf['data_location'].'plugins/core_user_upload_to_community.php';
+$save_conf = true;
+if (is_dir(dirname($backup_filepath)))
+{
+  if (!is_writable(dirname($backup_filepath)))
+  {
+    $save_conf = false;
+  }
+}
+elseif (!is_writable( PHPWG_ROOT_PATH.$conf['data_location'] ))
+{
+  $save_conf = false;
+}
+
+if ($save_conf)
+{
+  mkgetdir(dirname($backup_filepath));
+
+  file_put_contents(
+    $backup_filepath,
+    '<?php $user_upload_conf = \''.serialize($user_upload_conf).'\'; ?>'
+    );
+}
+
+//
+// remove all what is related to user upload in the database
+//
+
+// categories.uploadable
+pwg_query('ALTER TABLE '.CATEGORIES_TABLE.' DROP COLUMN uploadable;');
+
+// waiting
+pwg_query('DROP TABLE '.PREFIX_TABLE.'waiting;');
+
+// config parameter settings : upload_user_access, upload_link_everytime
+$query = '
+DELETE FROM '.PREFIX_TABLE.'config
+  WHERE param IN (\'upload_user_access\', \'upload_link_everytime\', \'email_admin_on_picture_uploaded\')
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/95-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/95-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/95-database.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'New colum user_cache_categories.user_representative_picture_id';
+
+// Add column
+$query = 'ALTER TABLE '.USER_CACHE_CATEGORIES_TABLE.' ADD COLUMN ';
+
+if ('mysql' == $conf['dblayer'])
+{
+  $query.= ' `user_representative_picture_id` mediumint(8) unsigned default NULL';
+}
+
+if (in_array($conf['dblayer'], array('pgsql', 'sqlite', 'pdo-sqlite')))
+{
+  $query.= ' "user_representative_picture_id" INTEGER';
+}
+
+$query.= ';';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/96-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/96-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/96-database.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add time in images.date_creation column';
+
+// Only MySQL is concerned, other DB engines are already "timestamp"
+if ('mysql' == $conf['dblayer'])
+{
+  $query = '
+ALTER TABLE '.IMAGES_TABLE.'
+  MODIFY date_creation datetime
+;';
+  pwg_query($query);
+}
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/97-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/97-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/97-database.php	(revision 25596)
@@ -0,0 +1,63 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'makes sure default user has a theme and a language';
+
+$query = '
+SELECT
+    theme,
+    language
+  FROM '.USER_INFOS_TABLE.'
+  WHERE user_id = '.$conf['default_user_id'].'
+;';
+$result = pwg_query($query);
+list($theme, $language) = pwg_db_fetch_row($result);
+
+$data = array(
+  'user_id' => $conf['default_user_id'],
+  'theme' => empty($theme) ? 'Sylvia' : $theme,
+  'language' => empty($language) ? 'en_UK' : $language,
+  );
+
+mass_updates(
+  USER_INFOS_TABLE,
+  array(
+    'primary' => array('user_id'),
+    'update'  => array('theme', 'language')
+    ),
+  array(
+    $data
+    )
+  );
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/98-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/98-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/98-database.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'add the config parameter comments_update_validation';
+
+$query = '
+INSERT INTO '.CONFIG_TABLE.'
+  (
+    param,
+    value,
+    comment
+  )
+  VALUES (
+    \'comments_update_validation\',
+    false,
+    \'administrators validate users updated comments before becoming visible\'
+   )
+;';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/99-database.php
===================================================================
--- /tags/2.6.0RC1/install/db/99-database.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/99-database.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$upgrade_description = 'delete the config parameter comments_update_validation';
+
+$query = 'DELETE FROM '.CONFIG_TABLE.' WHERE param = \'comments_update_validation\';';
+
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
Index: /tags/2.6.0RC1/install/db/index.php
===================================================================
--- /tags/2.6.0RC1/install/db/index.php	(revision 25596)
+++ /tags/2.6.0RC1/install/db/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/install/hosting.php
===================================================================
--- /tags/2.6.0RC1/install/hosting.php	(revision 25596)
+++ /tags/2.6.0RC1/install/hosting.php	(revision 25596)
@@ -0,0 +1,59 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+/* PHP5 configuration for known servers */
+$hosting = array(
+
+  //1and1
+    'kundenserver.de' => 'AddType x-mapp-php5 .php',
+
+  //Apinc
+    'apinc.org' => 'AddHandler x-httpd-php5 .php',
+
+  //Free
+    'free.fr' => 'php 1',
+
+  //Lost Oasis
+    'lost-oasis.net' => 'PHP_Version 5.0',
+    'lo-data.net' => 'PHP_Version 5.0',
+
+  //MediaTemple
+    'gridserver.com' => 'AddHandler php5-script .php',
+
+  //Online
+    'online.net' => 'AddType application/x-httpd-php5 .php',
+
+  //Ouvaton
+    'web.ocsa-data.net' => 'AddHandler application/x-suexec-php5 .php',
+
+  //OVH
+    'ovh.net' => 'SetEnv PHP_VER 5',
+
+  //Strato
+    'rzone.de' => 'AddType application/x-httpd-php5 .php',
+
+  //Web1.fr - NFrance
+    'nfrance.com' => 'AddHandler php-fastcgi5 .php',
+);
+?>
Index: /tags/2.6.0RC1/install/index.php
===================================================================
--- /tags/2.6.0RC1/install/index.php	(revision 25596)
+++ /tags/2.6.0RC1/install/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/install/obsolete.list
===================================================================
--- /tags/2.6.0RC1/install/obsolete.list	(revision 25596)
+++ /tags/2.6.0RC1/install/obsolete.list	(revision 25596)
@@ -0,0 +1,131 @@
+readme.txt
+photo.php
+index.htm
+commenter.php
+a_propos.php
+diapo.php
+personnaliser.php
+debut_tableau.inc
+fin_tableau.inc
+help_phpwebgallery
+tools/translation_validated.inc.php
+tools/config_local.inc.php
+galleries/index.htm
+galleries/.cvsignore
+install/upgrade_1.3.2.php
+install/upgrade_1.4.1.php
+install/phpwebgallery_structure.sql
+install/dbscheme.txt
+install/upgrade_1.3.3.php
+install/upgrade_1.3.4.php
+install/piwigo_structure.sql
+install/db/22.7-database.php
+install/db/22.6-database.php
+install/db/22.8-database.php
+install/db/22.9-database.php
+install/db/22.5-database.php
+install/db/22.2-database.php
+install/db/22.3-database.php
+install/db/22.1-database.php
+include_phpwebgallery
+plugins/admin_advices
+plugins/event_tracer
+plugins/language_switch/icons
+plugins/add_index
+plugins/hello_world
+admin/update.php
+admin/remote_site.php
+admin/user_modify.php
+admin/index.htm
+admin/ws_checker.php
+admin/admin_phpinfo.php
+admin/isadmin.php
+admin/admin.php
+admin/search.php
+admin/infos_images.php
+admin/ajout.php
+admin/create_listing_file.php
+admin/liste_users.php
+admin/advanced_feature.php
+admin/phpwebgallery_structure.sql
+admin/manuel.php
+admin/cat.php
+admin/waiting.php
+admin/install.php
+admin/historique.php
+admin/miseajour.php
+admin/edit_cat.php
+admin/perm.php
+admin/images
+admin/include/functions_waiting.inc.php
+admin/include/index.htm
+admin/include/isadmin.inc.php
+admin/include/functions_themes.inc.php
+admin/include/functions_tabsheet.inc.php
+admin/include/functions_check_integrity.inc.php
+admin/template
+doc/ChangeLog
+admin_phpwebgallery
+images
+template-common
+include/template.php
+include/config.php
+include/style.php
+include/scripts.js
+include/index.htm
+include/functions_group.inc.php
+include/category_recent_cats.inc.php
+include/vtemplate.class.php
+include/mysql.inc.php
+include/init.inc.php
+include/category_calendar.inc.php
+include/.cvsignore
+include/category_subcats.inc.php
+include/pngfix.js
+include/functions.php
+include/config.inc.php
+include/php_compat/file_put_contents.php
+template
+images_phpwebgallery
+language/dutch.php
+language/nederlands.php
+language/index.htm
+language/svenska.php
+language/english.php
+language/catala.php
+language/francais.php
+language/czech.php
+language/magyar.php
+language/russian.php
+language/portuguese-br.php
+language/spanish.php
+language/italiano.php
+language/deutsch.php
+language/norsk.php
+language/japanese.php
+language/es_ES/help.html
+language/es_ES/help/advanced_feature.html
+language/ja_JP/help.html
+language/ja_JP/help/advanced_feature.html
+language/it_IT/help.html
+language/it_IT/help/advanced_feature.html
+language/hr_HR/help.html
+language/hr_HR/help/advanced_feature.html
+language/zh_CN/help.html
+language/de_DE/help.html
+language/de_DE/help/advanced_feature.html
+language/fr_FR/help.html
+language/fr_FR/help/advanced_feature.html
+language/fr_FR.iso-8859-1
+language/cz_CZ
+language/hu_HU/help.html
+language/en_UK.iso-8859-1
+language/pl_PL/help.html
+language/pl_PL/help/advanced_feature.html
+language/pt_BR/help.html
+language/ru_RU/help.html
+language/ru_RU/help/advanced_feature.html
+language/nl_NL/help.html
+language/nl_NL/help/advanced_feature.html
+language/en_UK/help.html
+language/en_UK/help/advanced_feature.html
Index: /tags/2.6.0RC1/install/obsolete_extensions.list
===================================================================
--- /tags/2.6.0RC1/install/obsolete_extensions.list	(revision 25596)
+++ /tags/2.6.0RC1/install/obsolete_extensions.list	(revision 25596)
@@ -0,0 +1,12 @@
+411: pwg_images_addSimple
+396: albums
+449: Photos
+405: unTagged
+440: bulk_manager
+302: autoupdate
+525: regenerateThumbnails
+529: regenerateWebsize
+388: square_thumbnails
+522: external_ImageMagick
+327: Ajax_Thumbnailer
+400: spread_menus
Index: /tags/2.6.0RC1/install/php5_apache_configuration.php
===================================================================
--- /tags/2.6.0RC1/install/php5_apache_configuration.php	(revision 25596)
+++ /tags/2.6.0RC1/install/php5_apache_configuration.php	(revision 25596)
@@ -0,0 +1,201 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+$script = script_basename();
+
+if (($script != 'install' and $script != 'upgrade')
+  or version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '>='))
+{
+  die('Nothing to do here...');
+}
+
+function initPHP5()
+{
+  include(PHPWG_ROOT_PATH.'install/hosting.php');
+  $htaccess = PHPWG_ROOT_PATH.'.htaccess';
+  
+  if ((file_exists($htaccess) and (!is_readable($htaccess) or !is_writable($htaccess)))
+    or !($my_hostname = @gethostbyaddr($_SERVER['SERVER_ADDR'])))
+  {
+    return false;
+  }
+
+  foreach ($hosting as $hostname => $rule)
+  {
+    if (preg_match('!'.preg_quote($hostname).'$!',$my_hostname))
+    {
+      if (false !== ($fh = @fopen($htaccess,"ab")))
+      {
+        fwrite($fh,"\n".$rule);
+        fclose($fh);
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+function openPage()
+{
+  global $script;
+
+  $title = 'Piwigo '.PHPWG_VERSION.' - '.l10n(ucwords($script));
+
+  header('Content-Type: text/html; charset=UTF-8');
+
+  echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Content-script-type" content="text/javascript">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<link rel="shortcut icon" type="image/x-icon" href="themes/default/icon/favicon.ico">
+<link rel="stylesheet" type="text/css" href="admin/themes/roma/default-colors.css">
+<link rel="stylesheet" type="text/css" href="admin/themes/roma/theme.css">
+<style type="text/css">
+body {
+  background:url("admin/themes/roma/images/bottom-left-bg.jpg") no-repeat fixed left bottom #111111;
+}
+
+.content {
+ background:url("admin/themes/roma/images/fillet.png") repeat-x scroll left top #222222;
+ width: 800px;
+ min-height: 0px !important;
+ margin: auto;
+ text-align: left;
+ padding: 25px;
+}
+
+#headbranch  {
+  background:url("admin/themes/roma/images/top-left-bg.jpg") no-repeat scroll left top transparent;
+}
+
+#theHeader {
+  display: block;
+  background:url("admin/themes/roma/images/piwigo_logo_sombre_214x100.png") no-repeat scroll 245px top transparent;
+}
+
+.content h2 {
+  display:block;
+  font-size:28px;
+  height:104px;
+  width:54%;
+  color:#666666;
+  letter-spacing:-1px;
+  margin:0 30px 3px 20px;
+  overflow:hidden;
+  position:absolute;
+  right:0;
+  text-align:right;
+  top:0;
+  width:770px;
+  text-align:right;
+  text-transform:none; 
+}
+
+table { margin: 0 0 15px 0; }
+td {  padding: 3px 10px; }
+h1 { text-align: left; }
+</style>
+<title>'.$title.'</title>
+</head>
+
+<body>
+<div id="headbranch"></div>
+<div id="the_page">
+<div id="theHeader"></div>
+<div id="content" class="content">
+
+<h2>'.$title.'</h2>';
+}
+
+function closePage()
+{
+  echo '
+</div>
+<div style="text-align: center">'.sprintf(l10n('Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'), PHPWG_URL.'/forum').'</div>
+</div>
+</body>
+</html>';
+}
+
+if (isset($_GET['setphp5']))
+{
+  // Try to configure php5
+  if (initPHP5())
+  {
+    header('Location: '.$script.'.php?language='.$language);
+  }
+  else
+  {
+    openPage();
+    echo '
+<h1>'.l10n('Sorry!').'</h1>
+<p>
+'.l10n('Piwigo was not able to configure PHP 5.').'<br>
+'.l10n("You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself.").'<br>
+'.l10n('Hope to see you back soon.').'
+</p>';
+    closePage();
+  }
+}
+else
+{
+  openPage();
+  echo '
+  <table>
+  <tr>
+    <td>'.l10n('Language').'</td>
+    <td>
+      <select name="language" onchange="document.location = \''.$script.'.php?language=\'+this.options[this.selectedIndex].value;">';
+  foreach ($languages->fs_languages as $code => $fs_language)
+  {
+    echo '
+      <option label="'.$fs_language['name'].'" value="'.$code.'" '.($code == $language ? 'selected="selected"' : '') .'>'.$fs_language['name'].'</option>';
+  }
+  echo '
+      </select>
+    </td>
+  </tr>
+</table>
+
+<h1>'.l10n('PHP 5 is required').'</h1>
+<p>
+'.sprintf(l10n('It appears your webhost is currently running PHP %s.'), PHP_VERSION).'<br>
+'.l10n('Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.').'<br>
+'.l10n('Note you can change your configuration by yourself and restart Piwigo after that.').'<br>
+</p>
+<p style="text-align: center;"><br>
+<input type="button" value="'.l10n('Try to configure PHP 5').'" onClick="document.location = \''.$script.'.php?language='.$language.'&amp;setphp5=\';">
+</p>';
+  closePage();
+}
+
+exit();
+?>
Index: /tags/2.6.0RC1/install/piwigo_structure-mysql.sql
===================================================================
--- /tags/2.6.0RC1/install/piwigo_structure-mysql.sql	(revision 25596)
+++ /tags/2.6.0RC1/install/piwigo_structure-mysql.sql	(revision 25596)
@@ -0,0 +1,452 @@
+-- MySQL dump 9.11
+--
+-- Host: localhost    Database: pwg-bsf
+-- ------------------------------------------------------
+-- Server version	4.0.24_Debian-10-log
+
+--
+-- Table structure for table `piwigo_caddie`
+--
+
+DROP TABLE IF EXISTS `piwigo_caddie`;
+CREATE TABLE `piwigo_caddie` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `element_id` mediumint(8) NOT NULL default '0',
+  PRIMARY KEY  (`user_id`,`element_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_categories`
+--
+
+DROP TABLE IF EXISTS `piwigo_categories`;
+CREATE TABLE `piwigo_categories` (
+  `id` smallint(5) unsigned NOT NULL auto_increment,
+  `name` varchar(255) NOT NULL default '',
+  `id_uppercat` smallint(5) unsigned default NULL,
+  `comment` text,
+  `dir` varchar(255) default NULL,
+  `rank` smallint(5) unsigned default NULL,
+  `status` enum('public','private') NOT NULL default 'public',
+  `site_id` tinyint(4) unsigned default NULL,
+  `visible` enum('true','false') NOT NULL default 'true',
+  `representative_picture_id` mediumint(8) unsigned default NULL,
+  `uppercats` varchar(255) NOT NULL default '',
+  `commentable` enum('true','false') NOT NULL default 'true',
+  `global_rank` varchar(255) default NULL,
+  `image_order` varchar(128) default NULL,
+  `permalink` varchar(64) binary default NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `categories_i3` (`permalink`),
+  KEY `categories_i2` (`id_uppercat`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_comments`
+--
+
+DROP TABLE IF EXISTS `piwigo_comments`;
+CREATE TABLE `piwigo_comments` (
+  `id` int(11) unsigned NOT NULL auto_increment,
+  `image_id` mediumint(8) unsigned NOT NULL default '0',
+  `date` datetime NOT NULL default '0000-00-00 00:00:00',
+  `author` varchar(255) default NULL,
+  `email` varchar(255) default NULL,
+  `author_id` smallint(5) DEFAULT NULL,
+  `anonymous_id` varchar(45) NOT NULL,
+  `website_url` varchar(255) DEFAULT NULL,
+  `content` longtext,
+  `validated` enum('true','false') NOT NULL default 'false',
+  `validation_date` datetime default NULL,
+  PRIMARY KEY  (`id`),
+  KEY `comments_i2` (`validation_date`),
+  KEY `comments_i1` (`image_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_config`
+--
+
+DROP TABLE IF EXISTS `piwigo_config`;
+CREATE TABLE `piwigo_config` (
+  `param` varchar(40) NOT NULL default '',
+  `value` text,
+  `comment` varchar(255) default NULL,
+  PRIMARY KEY  (`param`)
+) ENGINE=MyISAM COMMENT='configuration table';
+
+--
+-- Table structure for table `piwigo_favorites`
+--
+
+DROP TABLE IF EXISTS `piwigo_favorites`;
+CREATE TABLE `piwigo_favorites` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `image_id` mediumint(8) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`user_id`,`image_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_group_access`
+--
+
+DROP TABLE IF EXISTS `piwigo_group_access`;
+CREATE TABLE `piwigo_group_access` (
+  `group_id` smallint(5) unsigned NOT NULL default '0',
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`group_id`,`cat_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_groups`
+--
+
+DROP TABLE IF EXISTS `piwigo_groups`;
+CREATE TABLE `piwigo_groups` (
+  `id` smallint(5) unsigned NOT NULL auto_increment,
+  `name` varchar(255) NOT NULL default '',
+  `is_default` enum('true','false') NOT NULL default 'false',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `groups_ui1` (`name`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_history`
+--
+
+DROP TABLE IF EXISTS `piwigo_history`;
+CREATE TABLE `piwigo_history` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `date` date NOT NULL default '0000-00-00',
+  `time` time NOT NULL default '00:00:00',
+  `user_id` smallint(5) NOT NULL default '0',
+  `IP` varchar(15) NOT NULL default '',
+  `section` enum('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats') default NULL,
+  `category_id` smallint(5) default NULL,
+  `tag_ids` varchar(50) default NULL,
+  `image_id` mediumint(8) default NULL,
+  `summarized` enum('true','false') default 'false',
+  `image_type` enum('picture','high','other') default NULL,
+  PRIMARY KEY  (`id`),
+  KEY `history_i1` (`summarized`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_history_summary`
+--
+
+DROP TABLE IF EXISTS `piwigo_history_summary`;
+CREATE TABLE `piwigo_history_summary` (
+  `year` smallint(4) NOT NULL default '0',
+  `month` tinyint(2) default NULL,
+  `day` tinyint(2) default NULL,
+  `hour` tinyint(2) default NULL,
+  `nb_pages` int(11) default NULL,
+  UNIQUE KEY history_summary_ymdh (`year`,`month`,`day`,`hour`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_image_category`
+--
+
+DROP TABLE IF EXISTS `piwigo_image_category`;
+CREATE TABLE `piwigo_image_category` (
+  `image_id` mediumint(8) unsigned NOT NULL default '0',
+  `category_id` smallint(5) unsigned NOT NULL default '0',
+  `rank` mediumint(8) unsigned default NULL,
+  PRIMARY KEY  (`image_id`,`category_id`),
+  KEY `image_category_i1` (`category_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_image_tag`
+--
+
+DROP TABLE IF EXISTS `piwigo_image_tag`;
+CREATE TABLE `piwigo_image_tag` (
+  `image_id` mediumint(8) unsigned NOT NULL default '0',
+  `tag_id` smallint(5) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`image_id`,`tag_id`),
+  KEY `image_tag_i1` (`tag_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_images`
+--
+
+DROP TABLE IF EXISTS `piwigo_images`;
+CREATE TABLE `piwigo_images` (
+  `id` mediumint(8) unsigned NOT NULL auto_increment,
+  `file` varchar(255) binary NOT NULL default '',
+  `date_available` datetime NOT NULL default '0000-00-00 00:00:00',
+  `date_creation` datetime default NULL,
+  `name` varchar(255) default NULL,
+  `comment` text,
+  `author` varchar(255) default NULL,
+  `hit` int(10) unsigned NOT NULL default '0',
+  `filesize` mediumint(9) unsigned default NULL,
+  `width` smallint(9) unsigned default NULL,
+  `height` smallint(9) unsigned default NULL,
+  `coi` char(4) default NULL COMMENT 'center of interest',
+  `representative_ext` varchar(4) default NULL,
+  `date_metadata_update` date default NULL,
+  `rating_score` float(5,2) unsigned default NULL,
+  `path` varchar(255) NOT NULL default '',
+  `storage_category_id` smallint(5) unsigned default NULL,
+  `level` tinyint unsigned NOT NULL default '0',
+  `md5sum` char(32) default NULL,
+  `added_by` smallint(5) NOT NULL default '0',
+  `rotation` tinyint unsigned default null,
+  PRIMARY KEY  (`id`),
+  KEY `images_i2` (`date_available`),
+  KEY `images_i3` (`rating_score`),
+  KEY `images_i4` (`hit`),
+  KEY `images_i5` (`date_creation`),
+  KEY `images_i1` (`storage_category_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_languages`
+--
+
+DROP TABLE IF EXISTS `piwigo_languages`;
+CREATE TABLE `piwigo_languages` (
+  `id` varchar(64) NOT NULL default '',
+  `version` varchar(64) NOT NULL default '0',
+  `name` varchar(64) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_old_permalinks`
+--
+
+DROP TABLE IF EXISTS `piwigo_old_permalinks`;
+CREATE TABLE `piwigo_old_permalinks` (
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  `permalink` varchar(64) binary NOT NULL default '',
+  `date_deleted` datetime NOT NULL default '0000-00-00 00:00:00',
+  `last_hit` datetime default NULL,
+  `hit` int(10) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`permalink`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_plugins`
+--
+
+DROP TABLE IF EXISTS `piwigo_plugins`;
+CREATE TABLE `piwigo_plugins` (
+  `id` varchar(64) binary NOT NULL default '',
+  `state` enum('inactive','active') NOT NULL default 'inactive',
+  `version` varchar(64) NOT NULL default '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_rate`
+--
+
+DROP TABLE IF EXISTS `piwigo_rate`;
+CREATE TABLE `piwigo_rate` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `element_id` mediumint(8) unsigned NOT NULL default '0',
+  `anonymous_id` varchar(45) NOT NULL default '',
+  `rate` tinyint(2) unsigned NOT NULL default '0',
+  `date` date NOT NULL default '0000-00-00',
+  PRIMARY KEY  (`element_id`,`user_id`,`anonymous_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_search`
+--
+
+DROP TABLE IF EXISTS `piwigo_search`;
+CREATE TABLE `piwigo_search` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `last_seen` date default NULL,
+  `rules` text,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_sessions`
+--
+
+DROP TABLE IF EXISTS `piwigo_sessions`;
+CREATE TABLE `piwigo_sessions` (
+  `id` varchar(255) binary NOT NULL default '',
+  `data` mediumtext NOT NULL,
+  `expiration` datetime NOT NULL default '0000-00-00 00:00:00',
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_sites`
+--
+
+DROP TABLE IF EXISTS `piwigo_sites`;
+CREATE TABLE `piwigo_sites` (
+  `id` tinyint(4) NOT NULL auto_increment,
+  `galleries_url` varchar(255) NOT NULL default '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `sites_ui1` (`galleries_url`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_tags`
+--
+
+DROP TABLE IF EXISTS `piwigo_tags`;
+CREATE TABLE `piwigo_tags` (
+  `id` smallint(5) unsigned NOT NULL auto_increment,
+  `name` varchar(255) binary NOT NULL default '',
+  `url_name` varchar(255) binary NOT NULL default '',
+  PRIMARY KEY  (`id`),
+  KEY `tags_i1` (`url_name`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_themes`
+--
+
+DROP TABLE IF EXISTS `piwigo_themes`;
+CREATE TABLE `piwigo_themes` (
+  `id` varchar(64) NOT NULL default '',
+  `version` varchar(64) NOT NULL default '0',
+  `name` varchar(64) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_upgrade`
+--
+
+DROP TABLE IF EXISTS `piwigo_upgrade`;
+CREATE TABLE `piwigo_upgrade` (
+  `id` varchar(20) NOT NULL default '',
+  `applied` datetime NOT NULL default '0000-00-00 00:00:00',
+  `description` varchar(255) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_access`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_access`;
+CREATE TABLE `piwigo_user_access` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`user_id`,`cat_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_cache`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_cache`;
+CREATE TABLE `piwigo_user_cache` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `need_update` enum('true','false') NOT NULL default 'true',
+  `cache_update_time` integer unsigned NOT NULL default 0,
+  `forbidden_categories` mediumtext,
+  `nb_total_images` mediumint(8) unsigned default NULL,
+  `last_photo_date` datetime DEFAULT NULL,
+  `nb_available_tags` INT(5) DEFAULT NULL,
+  `nb_available_comments` INT(5) DEFAULT NULL,
+  `image_access_type` enum('NOT IN','IN') NOT NULL default 'NOT IN',
+  `image_access_list` mediumtext default NULL,
+  PRIMARY KEY  (`user_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_cache_categories`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_cache_categories`;
+CREATE TABLE `piwigo_user_cache_categories` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  `date_last` datetime default NULL,
+  `max_date_last` datetime default NULL,
+  `nb_images` mediumint(8) unsigned NOT NULL default '0',
+  `count_images` mediumint(8) unsigned default '0',
+  `nb_categories` mediumint(8) unsigned default '0',
+  `count_categories` mediumint(8) unsigned default '0',
+  `user_representative_picture_id` mediumint(8) unsigned default NULL,
+  PRIMARY KEY  (`user_id`,`cat_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_feed`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_feed`;
+CREATE TABLE `piwigo_user_feed` (
+  `id` varchar(50) binary NOT NULL default '',
+  `user_id` smallint(5) NOT NULL default '0',
+  `last_check` datetime default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_group`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_group`;
+CREATE TABLE `piwigo_user_group` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `group_id` smallint(5) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`group_id`,`user_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_infos`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_infos`;
+CREATE TABLE `piwigo_user_infos` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `nb_image_page` smallint(3) unsigned NOT NULL default '15',
+  `status` enum('webmaster','admin','normal','generic','guest') NOT NULL default 'guest',
+  `language` varchar(50) NOT NULL default 'en_UK',
+  `expand` enum('true','false') NOT NULL default 'false',
+  `show_nb_comments` enum('true','false') NOT NULL default 'false',
+  `show_nb_hits` enum('true','false') NOT NULL default 'false',
+  `recent_period` tinyint(3) unsigned NOT NULL default '7',
+  `theme` varchar(255) NOT NULL default 'elegant',
+  `registration_date` datetime NOT NULL default '0000-00-00 00:00:00',
+  `enabled_high` enum('true','false') NOT NULL default 'true',
+  `level` tinyint unsigned NOT NULL default '0',
+  `activation_key` char(20) default NULL,
+  PRIMARY KEY (`user_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_user_mail_notification`
+--
+
+DROP TABLE IF EXISTS `piwigo_user_mail_notification`;
+CREATE TABLE `piwigo_user_mail_notification` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `check_key` varchar(16) binary NOT NULL default '',
+  `enabled` enum('true','false') NOT NULL default 'false',
+  `last_send` datetime default NULL,
+  PRIMARY KEY  (`user_id`),
+  UNIQUE KEY `user_mail_notification_ui1` (`check_key`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `piwigo_users`
+--
+
+DROP TABLE IF EXISTS `piwigo_users`;
+CREATE TABLE `piwigo_users` (
+  `id` smallint(5) NOT NULL auto_increment,
+  `username` varchar(100) binary NOT NULL default '',
+  `password` varchar(255) default NULL,
+  `mail_address` varchar(255) default NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `users_ui1` (`username`)
+) ENGINE=MyISAM;
Index: /tags/2.6.0RC1/install/upgrade_1.3.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.3.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.3.0.php	(revision 25596)
@@ -0,0 +1,126 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+/**
+ * Upgrade from 1.3.0 to 1.3.1
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+$queries = array(
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD COLUMN uppercats varchar(255) NOT NULL default ''
+;",
+
+  "
+CREATE TABLE phpwebgallery_user_category (
+  user_id smallint(5) unsigned NOT NULL default '0'
+)
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD INDEX id (id)
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD INDEX id_uppercat (id_uppercat)
+;",
+
+  "
+ALTER TABLE phpwebgallery_image_category
+  ADD INDEX category_id (category_id)
+;",
+
+  "
+ALTER TABLE phpwebgallery_image_category
+  ADD INDEX image_id (image_id)
+;",
+  );
+
+foreach ($queries as $query)
+{
+  $query = str_replace('phpwebgallery_', PREFIX_TABLE, $query);
+  pwg_query($query);
+}
+// filling the new column categories.uppercats
+$id_uppercats = array();
+
+$query = '
+SELECT id, id_uppercat
+  FROM '.CATEGORIES_TABLE.'
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if (!isset($row['id_uppercat']) or $row['id_uppercat'] == '')
+  {
+    $row['id_uppercat'] = 'NULL';
+  }
+  $id_uppercats[$row['id']] = $row['id_uppercat'];
+}
+
+$datas = array();
+
+foreach (array_keys($id_uppercats) as $id)
+{
+  $data = array();
+  $data['id'] = $id;
+  $uppercats = array();
+  
+  array_push($uppercats, $id);
+  while (isset($id_uppercats[$id]) and $id_uppercats[$id] != 'NULL')
+  {
+    array_push($uppercats, $id_uppercats[$id]);
+    $id = $id_uppercats[$id];
+  }
+  $data['uppercats'] = implode(',', array_reverse($uppercats));
+
+  array_push($datas, $data);
+}
+
+mass_updates(
+  CATEGORIES_TABLE,
+  array(
+    'primary' => array('id'),
+    'update' => array('uppercats')
+    ),
+  $datas
+  );
+
+// now we upgrade from 1.3.1 to 1.6.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.3.1.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.3.1.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.3.1.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.3.1.php	(revision 25596)
@@ -0,0 +1,613 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Upgrade from 1.3.x (x >= 1) to 1.4.0
+ */
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// save data before deletion
+$query = '
+SELECT prefix_thumbnail, mail_webmaster
+  FROM '.PREFIX_TABLE.'config
+;';
+$save = pwg_db_fetch_assoc(pwg_query($query));
+
+$queries = array(
+  "
+DROP TABLE phpwebgallery_config
+;",
+
+  "
+CREATE TABLE phpwebgallery_config (
+  param varchar(40) NOT NULL default '',
+  value varchar(255) default NULL,
+  comment varchar(255) default NULL,
+  PRIMARY KEY  (param)
+) ENGINE=MyISAM COMMENT='configuration table'
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  CHANGE COLUMN site_id site_id tinyint(4) unsigned default '1'
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD COLUMN commentable enum('true','false') NOT NULL default 'true'
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD COLUMN global_rank varchar(255) default NULL
+;",
+
+  "
+ALTER TABLE phpwebgallery_categories
+  ADD INDEX categories_i2 (id_uppercat)
+;",
+
+  "
+ALTER TABLE phpwebgallery_comments
+  ADD COLUMN date_temp int(11) unsigned
+;",
+
+  "
+UPDATE phpwebgallery_comments
+  SET date_temp = date
+;",
+
+  "
+ALTER TABLE phpwebgallery_comments
+  CHANGE COLUMN date date datetime NOT NULL default '0000-00-00 00:00:00'
+;",
+
+  "
+UPDATE phpwebgallery_comments
+  SET date = FROM_UNIXTIME(date_temp)
+;",
+
+  "
+ALTER TABLE phpwebgallery_comments
+  DROP COLUMN date_temp
+;",
+
+  "
+ALTER TABLE phpwebgallery_favorites
+  DROP INDEX user_id
+;",
+
+  "
+ALTER TABLE phpwebgallery_favorites
+  ADD PRIMARY KEY (user_id,image_id)
+;",
+
+  "
+ALTER TABLE phpwebgallery_history
+  ADD COLUMN date_temp int(11) unsigned
+;",
+
+  "
+UPDATE phpwebgallery_history
+  SET date_temp = date
+;",
+
+  "
+ALTER TABLE phpwebgallery_history
+  CHANGE COLUMN date date datetime NOT NULL default '0000-00-00 00:00:00'
+;",
+
+  "
+UPDATE phpwebgallery_history
+  SET date = FROM_UNIXTIME(date_temp)
+;",
+
+  "
+ALTER TABLE phpwebgallery_history
+  DROP COLUMN date_temp
+;",
+
+  "
+ALTER TABLE phpwebgallery_history
+  ADD INDEX history_i1 (date)
+;",
+
+  "
+ALTER TABLE phpwebgallery_image_category
+  ADD INDEX image_category_i1 (image_id),
+  ADD INDEX image_category_i2 (category_id)
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  CHANGE COLUMN tn_ext tn_ext varchar(4) default ''
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD COLUMN path varchar(255) NOT NULL default ''
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD COLUMN date_metadata_update date default NULL
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD COLUMN average_rate float(5,2) unsigned default NULL
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD COLUMN representative_ext varchar(4) default NULL
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  DROP INDEX storage_category_id
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD INDEX images_i1 (storage_category_id)
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD INDEX images_i2 (date_available)
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD INDEX images_i3 (average_rate)
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD INDEX images_i4 (hit)
+;",
+
+  "
+ALTER TABLE phpwebgallery_images
+  ADD INDEX images_i5 (date_creation)
+;",
+
+  "
+ALTER TABLE phpwebgallery_sessions
+  DROP COLUMN ip
+;",
+
+    "
+ALTER TABLE phpwebgallery_sessions
+  ADD COLUMN expiration_temp int(11) unsigned
+;",
+
+  "
+UPDATE phpwebgallery_sessions
+  SET expiration_temp = expiration
+;",
+
+  "
+ALTER TABLE phpwebgallery_sessions
+  CHANGE COLUMN expiration expiration datetime NOT NULL default '0000-00-00 00:00:00'
+;",
+
+  "
+UPDATE phpwebgallery_sessions
+  SET expiration = FROM_UNIXTIME(expiration_temp)
+;",
+
+  "
+ALTER TABLE phpwebgallery_sessions
+  DROP COLUMN expiration_temp
+;",
+
+  "
+ALTER TABLE phpwebgallery_sites
+  DROP INDEX galleries_url
+;",
+
+  "
+ALTER TABLE phpwebgallery_sites
+  ADD UNIQUE sites_ui1 (galleries_url)
+;",
+
+  "
+DROP TABLE phpwebgallery_user_category
+;",
+
+  "
+ALTER TABLE phpwebgallery_users
+  DROP COLUMN long_period
+;",
+
+  "
+ALTER TABLE phpwebgallery_users
+  DROP COLUMN short_period
+;",
+
+  "
+ALTER TABLE phpwebgallery_users
+  ADD COLUMN recent_period tinyint(3) unsigned NOT NULL default '7'
+;",
+
+  "
+ALTER TABLE phpwebgallery_users
+  DROP INDEX username
+;",
+
+  "
+ALTER TABLE phpwebgallery_users
+  ADD UNIQUE users_ui1 (username)
+;",
+
+  "
+CREATE TABLE phpwebgallery_rate (
+  user_id smallint(5) unsigned NOT NULL default '0',
+  element_id mediumint(8) unsigned NOT NULL default '0',
+  rate tinyint(2) unsigned NOT NULL default '0',
+  PRIMARY KEY  (user_id,element_id)
+) ENGINE=MyISAM
+;",
+
+  "
+CREATE TABLE phpwebgallery_user_forbidden (
+  user_id smallint(5) unsigned NOT NULL default '0',
+  need_update enum('true','false') NOT NULL default 'true',
+  forbidden_categories text,
+  PRIMARY KEY  (user_id)
+) ENGINE=MyISAM
+;",
+
+  "
+UPDATE phpwebgallery_users
+  SET language = 'en_UK.iso-8859-1'
+    , template = 'default'
+;",
+
+  "
+DELETE FROM phpwebgallery_user_access
+;",
+
+  "
+DELETE FROM phpwebgallery_group_access
+;"
+
+  );
+
+foreach ($queries as $query)
+{
+  $query = str_replace('phpwebgallery_', PREFIX_TABLE, $query);
+  pwg_query($query);
+}
+
+//
+// check indexes
+//
+$indexes_of = array(
+  'categories' => array(
+    'categories_i2' => array(
+      'columns' => array('id_uppercat'),
+      'unique' => false,
+      )
+    ),
+  'image_category' => array(
+    'image_category_i1' => array(
+      'columns' => array('image_id'),
+      'unique' => false,
+      ),
+    'image_category_i2' => array(
+      'columns' => array('category_id'),
+      'unique' => false,
+      ),
+    ),
+  );
+
+foreach (array_keys($indexes_of) as $table)
+{
+  $existing_indexes = array();
+
+  $query = '
+SHOW INDEX
+  FROM '.PREFIX_TABLE.$table.'
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    if ($row['Key_name'] != 'PRIMARY')
+    {
+      if (!in_array($row['Key_name'], array_keys($indexes_of[$table])))
+      {
+        $query = '
+ALTER TABLE '.PREFIX_TABLE.$table.'
+  DROP INDEX '.$row['Key_name'].'
+;';
+        pwg_query($query);
+      }
+      else
+      {
+        array_push($existing_indexes, $row['Key_name']);
+      }
+    }
+  }
+
+  foreach ($indexes_of[$table] as $index_name => $index)
+  {
+    if (!in_array($index_name, $existing_indexes))
+    {
+      $query = '
+ALTER TABLE '.PREFIX_TABLE.$table.'
+  ADD '.($index['unique'] ? 'UNIQUE' : 'INDEX').' '
+        .$index_name.' ('.implode(',', $index['columns']).')
+;';
+      pwg_query($query);
+    }
+  }
+}
+
+//
+// insert params in new configuration table
+//
+$params = array(
+  array(
+    'param'   => 'prefix_thumbnail',
+    'value'   => $save['prefix_thumbnail'],
+    'comment' => 'thumbnails filename prefix'
+    ),
+  array(
+    'param'   => 'mail_webmaster',
+    'value'   => $save['mail_webmaster'],
+    'comment' => 'webmaster mail'
+    ),
+  array(
+    'param'   => 'default_language',
+    'value'   => 'en_UK.iso-8859-1',
+    'comment' => 'Default gallery language'
+    ),
+  array(
+    'param'   => 'default_template',
+    'value'   => 'default',
+    'comment' => 'Default gallery style'
+    ),
+  array(
+    'param'   => 'default_maxwidth',
+    'value'   => '',
+    'comment' => 'maximum width authorized for displaying images'
+    ),
+  array(
+    'param'   => 'default_maxheight',
+    'value'   => '',
+    'comment' => 'maximum height authorized for the displaying images'
+    ),
+  array(
+    'param'   => 'nb_comment_page',
+    'value'   => '10',
+    'comment' => 'number of comments to display on each page'
+    ),
+  array(
+    'param'   => 'upload_maxfilesize',
+    'value'   => '150',
+    'comment' => 'maximum filesize for the uploaded pictures'
+    ),
+  array(
+    'param'   => 'upload_maxwidth',
+    'value'   => '800',
+    'comment' => 'maximum width authorized for the uploaded images'
+    ),
+  array(
+    'param'   => 'upload_maxheight',
+    'value'   => '600',
+    'comment' => 'maximum height authorized for the uploaded images'
+    ),
+  array(
+    'param'   => 'upload_maxwidth_thumbnail',
+    'value'   => '150',
+    'comment' => 'maximum width authorized for the uploaded thumbnails'
+    ),
+  array(
+    'param'   => 'upload_maxheight_thumbnail',
+    'value'   => '100',
+    'comment' => 'maximum height authorized for the uploaded thumbnails'
+    ),
+  array(
+    'param'   => 'log',
+    'value'   => 'false',
+    'comment' => 'keep an history of visits on your website'
+    ),
+  array(
+    'param'   => 'comments_validation',
+    'value'   => 'false',
+    'comment' => 'administrators validate users comments before becoming visible'
+    ),
+  array(
+    'param'   => 'comments_forall',
+    'value'   => 'false',
+    'comment' => 'even guest not registered can post comments'
+    ),
+  array(
+    'param'   => 'mail_notification',
+    'value'   => 'false',
+    'comment' => 'automated mail notification for adminsitrators'
+    ),
+  array(
+    'param'   => 'nb_image_line',
+    'value'   => '5',
+    'comment' => 'Number of images displayed per row'
+    ),
+  array(
+    'param'   => 'nb_line_page',
+    'value'   => '3',
+    'comment' => 'Number of rows displayed per page'
+    ),
+  array(
+    'param'   => 'recent_period',
+    'value'   => '7',
+    'comment' => 'Period within which pictures are displayed as new (in days)'
+    ),
+  array(
+    'param'   => 'auto_expand',
+    'value'   => 'false',
+    'comment' => 'Auto expand of the category tree'
+    ),
+  array(
+    'param'   => 'show_nb_comments',
+    'value'   => 'false',
+    'comment' => 'Show the number of comments under the thumbnails'
+    ),
+  array(
+    'param'   => 'use_iptc',
+    'value'   => 'false',
+    'comment' => 'Use IPTC data during database synchronization with files metadata'
+    ),
+  array(
+    'param'   => 'use_exif',
+    'value'   => 'false',
+    'comment' => 'Use EXIF data during database synchronization with files metadata'
+    ),
+  array(
+    'param'   => 'show_iptc',
+    'value'   => 'false',
+    'comment' => 'Show IPTC metadata on picture.php if asked by user'
+    ),
+  array(
+    'param'   => 'show_exif',
+    'value'   => 'true',
+    'comment' => 'Show EXIF metadata on picture.php if asked by user'
+    ),
+  array(
+    'param'   => 'authorize_remembering',
+    'value'   => 'true',
+    'comment' => 'Authorize users to be remembered, see $conf{remember_me_length}'
+    ),
+  array(
+    'param'   => 'gallery_locked',
+    'value'   => 'false',
+    'comment' => 'Lock your gallery temporary for non admin users'
+    ),
+  );
+
+mass_inserts(
+  CONFIG_TABLE,
+  array_keys($params[0]),
+  $params
+  );
+
+// refresh calculated datas
+update_global_rank();
+update_category();
+
+// update calculated field "images.path"
+$cat_ids = array();
+
+$query = '
+SELECT DISTINCT(storage_category_id) AS unique_storage_category_id
+  FROM '.IMAGES_TABLE.'
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  array_push($cat_ids, $row['unique_storage_category_id']);
+}
+$fulldirs = get_fulldirs($cat_ids);
+
+foreach ($cat_ids as $cat_id)
+{
+  $query = '
+UPDATE '.IMAGES_TABLE.'
+  SET path = CONCAT(\''.$fulldirs[$cat_id].'\',\'/\',file)
+  WHERE storage_category_id = '.$cat_id.'
+;';
+  pwg_query($query);
+}
+
+// all sub-categories of private categories become private
+$cat_ids = array();
+
+$query = '
+SELECT id
+  FROM '.CATEGORIES_TABLE.'
+  WHERE status = \'private\'
+;';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  array_push($cat_ids, $row['id']);
+}
+
+if (count($cat_ids) > 0)
+{
+  $privates = get_subcat_ids($cat_ids);
+
+  $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET status = \'private\'
+  WHERE id IN ('.implode(',', $privates).')
+;';
+  pwg_query($query);
+}
+
+// load the config file
+$config_file = PHPWG_ROOT_PATH.'local/config/database.inc.php';
+$config_file_contents = @file_get_contents($config_file);
+if ($config_file_contents === false)
+{
+  die('CANNOT LOAD '.$config_file);
+}
+$php_end_tag = strrpos($config_file_contents, '?'.'>');
+if ($php_end_tag === false)
+{
+  die('CANNOT FIND PHP END TAG IN '.$config_file);
+}
+if (!is_writable($config_file))
+{
+  die('FILE NOT WRITABLE '.$config_file);
+}
+
+// changes to write in database.inc.php
+array_push($mysql_changes, 'define(\'PHPWG_INSTALLED\', true);');
+
+// Send infos
+$page['infos'] = array_merge(
+  $page['infos'],
+  array(
+    l10n('All sub-albums of private albums become private'),
+    l10n('User permissions and group permissions have been erased'),
+    l10n('Only thumbnails prefix and webmaster mail address have been saved from previous configuration')
+    )
+  );
+
+// now we upgrade from 1.4.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.4.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.4.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.4.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.4.0.php	(revision 25596)
@@ -0,0 +1,292 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+$last_time = get_moment();
+
+// will the user have to edit include/config_local.inc.php for
+// prefix_thumbnail configuration parameter
+$query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+  WHERE param = \'prefix_thumbnail\'
+;';
+list($prefix_thumbnail) = pwg_db_fetch_row(pwg_query($query));
+
+// delete obsolete configuration
+$query = '
+DELETE
+  FROM '.PREFIX_TABLE.'config
+  WHERE param IN (
+   \'prefix_thumbnail\',
+   \'mail_webmaster\',
+   \'upload_maxfilesize\',
+   \'upload_maxwidth\',
+   \'upload_maxheight\',
+   \'upload_maxwidth_thumbnail\',
+   \'upload_maxheight_thumbnail\',
+   \'mail_notification\',
+   \'use_iptc\',
+   \'use_exif\',
+   \'show_iptc\',
+   \'show_exif\',
+   \'authorize_remembering\'
+   )
+;';
+pwg_query($query);
+
+$queries = array(
+
+  "
+ALTER TABLE piwigo_categories
+  CHANGE COLUMN date_last date_last datetime default NULL
+;",
+
+  "
+ALTER TABLE piwigo_comments
+  ADD COLUMN validation_date datetime default NULL
+;",
+
+  "
+UPDATE piwigo_comments
+  SET validation_date = date
+",
+
+  "
+ALTER TABLE piwigo_comments
+  ADD INDEX comments_i1 (image_id)
+;",
+
+  "
+ALTER TABLE piwigo_comments
+  ADD INDEX comments_i2 (validation_date)
+;",
+
+  "
+ALTER TABLE piwigo_favorites
+  CHANGE COLUMN user_id user_id smallint(5) NOT NULL default '0'
+;",
+
+  "
+ALTER TABLE piwigo_images
+  CHANGE COLUMN date_available
+    date_available datetime NOT NULL default '0000-00-00 00:00:00'
+;",
+
+  "
+ALTER TABLE piwigo_rate
+  CHANGE COLUMN user_id user_id smallint(5) NOT NULL default '0'
+;",
+
+  "
+ALTER TABLE piwigo_sessions
+  CHANGE COLUMN user_id user_id smallint(5) NOT NULL default '0'
+;",
+
+  "
+ALTER TABLE piwigo_user_access
+  CHANGE COLUMN user_id user_id smallint(5) NOT NULL default '0'
+;",
+
+  "
+DROP TABLE piwigo_user_forbidden
+;",
+
+  "
+ALTER TABLE piwigo_user_group
+ CHANGE COLUMN user_id user_id smallint(5) NOT NULL default '0'
+;",
+
+  "
+ALTER TABLE piwigo_users
+  CHANGE COLUMN id id smallint(5) NOT NULL auto_increment
+;",
+
+  "
+CREATE TABLE piwigo_caddie (
+  user_id smallint(5) NOT NULL default '0',
+  element_id mediumint(8) NOT NULL default '0',
+  PRIMARY KEY  (user_id,element_id)
+) ENGINE=MyISAM
+;",
+
+  "
+CREATE TABLE piwigo_user_cache (
+  user_id smallint(5) NOT NULL default '0',
+  need_update enum('true','false') NOT NULL default 'true',
+  forbidden_categories text,
+  PRIMARY KEY  (user_id)
+) ENGINE=MyISAM
+;",
+
+  "
+CREATE TABLE piwigo_user_feed (
+  id varchar(50) binary NOT NULL default '',
+  user_id smallint(5) NOT NULL default '0',
+  last_check datetime default NULL,
+  PRIMARY KEY  (id)
+) ENGINE=MyISAM
+;",
+
+  "
+CREATE TABLE piwigo_user_infos (
+  user_id smallint(5) NOT NULL default '0',
+  nb_image_line tinyint(1) unsigned NOT NULL default '5',
+  nb_line_page tinyint(3) unsigned NOT NULL default '3',
+  status enum('admin','guest') NOT NULL default 'guest',
+  language varchar(50) NOT NULL default 'english',
+  maxwidth smallint(6) default NULL,
+  maxheight smallint(6) default NULL,
+  expand enum('true','false') NOT NULL default 'false',
+  show_nb_comments enum('true','false') NOT NULL default 'false',
+  recent_period tinyint(3) unsigned NOT NULL default '7',
+  template varchar(255) NOT NULL default 'yoga',
+  registration_date datetime NOT NULL default '0000-00-00 00:00:00',
+  UNIQUE KEY user_infos_ui1 (user_id)
+) ENGINE=MyISAM
+;"
+  );
+
+foreach ($queries as $query)
+{
+  $query = str_replace('piwigo_', PREFIX_TABLE, $query);
+  pwg_query($query);
+}
+
+// user datas migration from piwigo_users to piwigo_user_infos
+$query = '
+SELECT *
+  FROM '.USERS_TABLE.'
+;';
+
+$datas = array();
+list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  $row['user_id'] = $row['id'];
+  $row['registration_date'] = $dbnow;
+  array_push($datas, $row);
+}
+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+mass_inserts(
+  USER_INFOS_TABLE,
+  array(
+    'user_id',
+    'nb_image_line',
+    'nb_line_page',
+    'status',
+    'language',
+    'maxwidth',
+    'maxheight',
+    'expand',
+    'show_nb_comments',
+    'recent_period',
+    'template',
+    'registration_date'
+    ),
+  $datas
+  );
+
+$queries = array(
+
+  "
+UPDATE ".USER_INFOS_TABLE."
+  SET template = 'yoga'
+;",
+
+  "
+UPDATE ".USER_INFOS_TABLE."
+  SET language = 'en_UK.iso-8859-1'
+  WHERE language NOT IN ('en_UK.iso-8859-1', 'fr_FR.iso-8859-1')
+;",
+
+  "
+UPDATE ".CONFIG_TABLE."
+  SET value = 'en_UK.iso-8859-1'
+  WHERE param = 'default_language'
+    AND value NOT IN ('en_UK.iso-8859-1', 'fr_FR.iso-8859-1')
+;",
+
+  "
+UPDATE ".CONFIG_TABLE."
+  SET value = 'yoga'
+  WHERE param = 'default_template'
+;",
+
+  "
+INSERT INTO ".CONFIG_TABLE."
+  (param,value,comment)
+  VALUES
+  (
+    'gallery_title',
+    'Piwigo demonstration site',
+    'Title at top of each page and for RSS feed'
+  )
+;",
+
+  "
+INSERT INTO ".CONFIG_TABLE."
+  (param,value,comment)
+  VALUES
+  (
+    'gallery_description',
+    'My photos web site',
+    'Short description displayed with gallery title'
+  )
+;"
+
+  );
+
+foreach ($queries as $query)
+{
+  $query = str_replace('piwigo_', PREFIX_TABLE, $query);
+  pwg_query($query);
+}
+
+if ($prefix_thumbnail != 'TN-')
+{
+  array_push(
+    $page['infos'],
+    'the thumbnail prefix configuration parameter was moved to configuration
+file, copy config.inc.php from "tools" directory to "local/config" directory
+and edit $conf[\'prefix_thumbnail\'] = '.$prefix_thumbnail
+    );
+}
+
+// now we upgrade from 1.5.0 to 1.6.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.5.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.5.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.5.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.5.0.php	(revision 25596)
@@ -0,0 +1,469 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+/**
+ * replace old style #images.keywords by #tags. Requires a big data
+ * migration.
+ *
+ * @return void
+ */
+function tag_replace_keywords()
+{
+  // code taken from upgrades 19 and 22
+  
+  $query = '
+CREATE TABLE '.PREFIX_TABLE.'tags (
+  id smallint(5) UNSIGNED NOT NULL auto_increment,
+  name varchar(255) BINARY NOT NULL,
+  url_name varchar(255) BINARY NOT NULL,
+  PRIMARY KEY (id)
+)
+;';
+  pwg_query($query);
+  
+  $query = '
+CREATE TABLE '.PREFIX_TABLE.'image_tag (
+  image_id mediumint(8) UNSIGNED NOT NULL,
+  tag_id smallint(5) UNSIGNED NOT NULL,
+  PRIMARY KEY (image_id,tag_id)
+)
+;';
+  pwg_query($query);
+  
+  //
+  // Move keywords to tags
+  //
+
+  // each tag label is associated to a numeric identifier
+  $tag_id = array();
+  // to each tag id (key) a list of image ids (value) is associated
+  $tag_images = array();
+
+  $current_id = 1;
+
+  $query = '
+SELECT id, keywords
+  FROM '.PREFIX_TABLE.'images
+  WHERE keywords IS NOT NULL
+;';
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    foreach(preg_split('/[,]+/', $row['keywords']) as $keyword)
+    {
+      if (!isset($tag_id[$keyword]))
+      {
+        $tag_id[$keyword] = $current_id++;
+      }
+
+      if (!isset($tag_images[ $tag_id[$keyword] ]))
+      {
+        $tag_images[ $tag_id[$keyword] ] = array();
+      }
+
+      array_push(
+        $tag_images[ $tag_id[$keyword] ],
+        $row['id']
+        );
+    }
+  }
+
+  $datas = array();
+  foreach ($tag_id as $tag_name => $tag_id)
+  {
+    array_push(
+      $datas,
+      array(
+        'id'       => $tag_id,
+        'name'     => $tag_name,
+        'url_name' => str2url($tag_name),
+        )
+      );
+  }
+  
+  if (!empty($datas))
+  {
+    mass_inserts(
+      PREFIX_TABLE.'tags',
+      array_keys($datas[0]),
+      $datas
+      );
+  }
+
+  $datas = array();
+  foreach ($tag_images as $tag_id => $images)
+  {
+    foreach (array_unique($images) as $image_id)
+    {
+      array_push(
+        $datas,
+        array(
+          'tag_id'   => $tag_id,
+          'image_id' => $image_id,
+          )
+        );
+    }
+  }
+  
+  if (!empty($datas))
+  {
+    mass_inserts(
+      PREFIX_TABLE.'image_tag',
+      array_keys($datas[0]),
+      $datas
+      );
+  }
+
+  //
+  // Delete images.keywords
+  //
+  $query = '
+ALTER TABLE '.PREFIX_TABLE.'images DROP COLUMN keywords
+;';
+  pwg_query($query);
+
+  //
+  // Add useful indexes
+  //
+  $query = '
+ALTER TABLE '.PREFIX_TABLE.'tags
+  ADD INDEX tags_i1(url_name)
+;';
+  pwg_query($query);
+
+
+  $query = '
+ALTER TABLE '.PREFIX_TABLE.'image_tag
+  ADD INDEX image_tag_i1(tag_id)
+;';
+  pwg_query($query);
+
+  // print_time('tags have replaced keywords');
+}
+
+tag_replace_keywords();
+
+$queries = array(
+  "
+CREATE TABLE ".PREFIX_TABLE."search (
+  id int UNSIGNED NOT NULL AUTO_INCREMENT,
+  last_seen date DEFAULT NULL,
+  rules text,
+  PRIMARY KEY  (id)
+);",
+
+  "
+CREATE TABLE ".PREFIX_TABLE."user_mail_notification (
+  user_id smallint(5) NOT NULL default '0',
+  check_key varchar(16) binary NOT NULL default '',
+  enabled enum('true','false') NOT NULL default 'false',
+  last_send datetime default NULL,
+  PRIMARY KEY  (user_id),
+  UNIQUE KEY uidx_check_key (check_key)
+);",
+
+  "
+CREATE TABLE ".PREFIX_TABLE."upgrade (
+  id varchar(20) NOT NULL default '',
+  applied datetime NOT NULL default '0000-00-00 00:00:00',
+  description varchar(255) default NULL,
+  PRIMARY KEY  (`id`)
+);",
+
+  "
+ALTER TABLE ".PREFIX_TABLE."config
+  MODIFY COLUMN value TEXT
+;",
+
+  "
+ALTER TABLE ".PREFIX_TABLE."images
+  ADD COLUMN has_high enum('true') default NULL
+;",
+
+  "
+ALTER TABLE ".PREFIX_TABLE."rate
+  ADD COLUMN anonymous_id varchar(45) NOT NULL default ''
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."rate
+  ADD COLUMN date date NOT NULL default '0000-00-00'
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."rate
+  DROP PRIMARY KEY
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."rate
+  ADD PRIMARY KEY (element_id,user_id,anonymous_id)
+;",
+  "
+UPDATE ".PREFIX_TABLE."rate
+  SET date = CURDATE()
+;",
+  
+  "
+DELETE
+  FROM ".PREFIX_TABLE."sessions
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."sessions
+  DROP COLUMN user_id
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."sessions
+  ADD COLUMN data text NOT NULL
+;",
+  
+  "
+ALTER TABLE ".PREFIX_TABLE."user_cache
+  ADD COLUMN nb_total_images mediumint(8) unsigned default NULL
+;",
+  
+  "
+ALTER TABLE ".PREFIX_TABLE."user_infos
+  CHANGE COLUMN status
+     status enum('webmaster','admin','normal','generic','guest')
+     NOT NULL default 'guest'
+;",
+  "
+UPDATE ".PREFIX_TABLE."user_infos
+  SET status = 'normal'
+  WHERE status = 'guest'
+;",
+  "
+UPDATE ".PREFIX_TABLE."user_infos
+  SET status = 'guest'
+  WHERE user_id = ".$conf['guest_id']."
+;",
+  "
+UPDATE ".PREFIX_TABLE."user_infos
+  SET status = 'webmaster'
+  WHERE user_id = ".$conf['webmaster_id']."
+;",
+
+  "
+ALTER TABLE ".PREFIX_TABLE."user_infos
+   CHANGE COLUMN template template varchar(255) NOT NULL default 'yoga/clear'
+;",
+
+  "
+UPDATE ".PREFIX_TABLE."user_infos
+  SET template = 'yoga/dark'
+  WHERE template = 'yoga-dark'
+;",
+  "
+UPDATE ".PREFIX_TABLE."user_infos
+  SET template = 'yoga/clear'
+  WHERE template != 'yoga/dark'
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."user_infos
+  ADD COLUMN adviser enum('true','false') NOT NULL default 'false'
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."user_infos
+  ADD COLUMN enabled_high enum('true','false') NOT NULL default 'true'
+;",
+  "
+ALTER TABLE ".PREFIX_TABLE."categories
+  CHANGE COLUMN rank rank SMALLINT(5) UNSIGNED DEFAULT NULL
+;",
+  // configuration table
+  "
+UPDATE ".PREFIX_TABLE."config
+  SET value = 'yoga/clear'
+  WHERE param = 'default_template'
+;"
+  );
+
+foreach ($queries as $query)
+{
+  pwg_query($query);
+}
+
+//
+// Move rate, rate_anonymous and gallery_url from config file to database
+//
+$params = array(
+  'gallery_url' => array(
+    '',
+    'Optional alternate homepage for the gallery'
+    ),
+  'rate' => array(
+    'true',
+    'Rating pictures feature is enabled'
+    ),
+  'rate_anonymous' => array(
+    'true',
+    'Rating pictures feature is also enabled for visitors'
+    )
+  );
+// Get real values from config file
+$conf_save = $conf;
+unset($conf);
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+if ( isset($conf['gallery_url']) )
+{
+  $params['gallery_url'][0] = $conf['gallery_url'];
+}
+if ( isset($conf['rate']) and is_bool($conf['rate']) )
+{
+  $params['rate'][0] = $conf['rate'] ? 'true' : 'false';
+}
+if ( isset($conf['rate_anonymous']) and is_bool($conf['rate_anonymous']) )
+{
+  $params['rate_anonymous'][0] = $conf['rate_anonymous'] ? 'true' : 'false';
+}
+$conf = $conf_save;
+
+// Do I already have them in DB ?
+$query = 'SELECT param FROM '.PREFIX_TABLE.'config';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  unset( $params[ $row['param'] ] );
+}
+
+// Perform the insert query
+foreach ($params as $param_key => $param_values)
+{
+  $query = '
+INSERT INTO '.PREFIX_TABLE.'config
+  (param,value,comment)
+  VALUES
+ ('."'$param_key','$param_values[0]','$param_values[1]')
+;";
+  pwg_query($query);
+}
+
+$query = "
+ALTER TABLE ".PREFIX_TABLE."config MODIFY COLUMN `value` TEXT;";
+pwg_query($query);
+
+
+//
+// replace gallery_description by page_banner
+//
+$query = '
+SELECT value
+  FROM '.PREFIX_TABLE.'config
+  WHERE param=\'gallery_title\'
+;';
+list($t) = array_from_query($query, 'value');
+
+$query = '
+SELECT value
+  FROM '.PREFIX_TABLE.'config
+  WHERE param=\'gallery_description\'
+;';
+list($d) = array_from_query($query, 'value');
+
+$page_banner='<h1>'.$t.'</h1><p>'.$d.'</p>';
+$page_banner=addslashes($page_banner);
+$query = '
+INSERT INTO '.PREFIX_TABLE.'config
+  (param,value,comment)
+  VALUES
+  (
+    \'page_banner\',
+    \''.$page_banner.'\',
+    \'html displayed on the top each page of your gallery\'
+  )
+;';
+pwg_query($query);
+
+$query = '
+DELETE FROM '.PREFIX_TABLE.'config
+  WHERE param=\'gallery_description\'
+;';
+pwg_query($query);
+
+//
+// configuration for notification by mail
+//
+$query = "
+INSERT INTO ".CONFIG_TABLE."
+  (param,value,comment)
+  VALUES
+  (
+    'nbm_send_mail_as',
+    '',
+    'Send mail as param value for notification by mail'
+  ),
+  (
+    'nbm_send_detailed_content',
+    'true',
+    'Send detailed content for notification by mail'
+  ),
+  (
+    'nbm_complementary_mail_content',
+    '',
+    'Complementary mail content for notification by mail'
+  )
+;";
+pwg_query($query);
+
+// depending on the way the 1.5.0 was installed (from scratch or by upgrade)
+// the database structure has small differences that should be corrected.
+
+$query = '
+ALTER TABLE '.PREFIX_TABLE.'users
+  CHANGE COLUMN password password varchar(32) default NULL
+;';
+pwg_query($query);
+
+$to_keep = array('id', 'username', 'password', 'mail_address');
+  
+$query = '
+DESC '.PREFIX_TABLE.'users
+;';
+
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if (!in_array($row['Field'], $to_keep))
+  {
+    $query = '
+ALTER TABLE '.PREFIX_TABLE.'users
+  DROP COLUMN '.$row['Field'].'
+;';
+    pwg_query($query);
+  }
+}
+
+// now we upgrade from 1.6.0 to 1.6.2
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.6.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.6.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.6.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.6.0.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+$queries = array(
+  "
+ALTER TABLE ".PREFIX_TABLE."user_infos
+  ADD auto_login_key varchar(64) NOT NULL
+;",
+  '
+ALTER TABLE '.PREFIX_TABLE.'users
+  CHANGE username username VARCHAR(100) binary NOT NULL
+;',
+  );
+
+foreach ($queries as $query)
+{
+  pwg_query($query);
+}
+
+// now we upgrade from 1.6.2
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.6.2.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.6.2.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.6.2.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.6.2.php	(revision 25596)
@@ -0,0 +1,347 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+$queries = array(
+"
+ALTER TABLE `".PREFIX_TABLE."categories`
+  ADD COLUMN `permalink` varchar(64) default NULL
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."categories`
+  ADD COLUMN `image_order` varchar(128) default NULL
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."categories`
+  ADD UNIQUE `categories_i3` (`permalink`)
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."groups`
+  ADD COLUMN `is_default` enum('true','false') NOT NULL default 'false'
+;",
+
+"
+RENAME TABLE `".PREFIX_TABLE."history` TO `".PREFIX_TABLE."history_backup`
+;",
+
+"
+CREATE TABLE `".PREFIX_TABLE."history` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `date` date NOT NULL default '0000-00-00',
+  `time` time NOT NULL default '00:00:00',
+  `year` smallint(4) NOT NULL default '0',
+  `month` tinyint(2) NOT NULL default '0',
+  `day` tinyint(2) NOT NULL default '0',
+  `hour` tinyint(2) NOT NULL default '0',
+  `user_id` smallint(5) NOT NULL default '0',
+  `IP` varchar(15) NOT NULL default '',
+  `section` enum('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats') default NULL,
+  `category_id` smallint(5) default NULL,
+  `tag_ids` varchar(50) default NULL,
+  `image_id` mediumint(8) default NULL,
+  `summarized` enum('true','false') default 'false',
+  `image_type` enum('picture','high','other') default NULL,
+  PRIMARY KEY  (`id`),
+  KEY `history_i1` (`summarized`)
+) ENGINE=MyISAM
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."image_category`
+  DROP INDEX `image_category_i1`
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."image_category`
+  ADD INDEX `image_category_i1` (`category_id`)
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."image_category`
+  DROP INDEX `image_category_i2`
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."images`
+  ADD COLUMN `high_filesize` mediumint(9) unsigned default NULL
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."user_infos`
+  CHANGE COLUMN `language`
+    `language` varchar(50) NOT NULL default 'en_UK.iso-8859-1'
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."user_infos`
+  DROP COLUMN `auto_login_key`
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."user_infos`
+  ADD COLUMN `show_nb_hits` enum('true','false') NOT NULL default 'false'
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."user_mail_notification`
+  DROP INDEX `uidx_check_key`
+;",
+
+"
+ALTER TABLE `".PREFIX_TABLE."user_mail_notification`
+  ADD UNIQUE `user_mail_notification_ui1` (`check_key`)
+;",
+
+"
+CREATE TABLE `".PREFIX_TABLE."history_summary` (
+  `id` varchar(13) NOT NULL default '',
+  `year` smallint(4) NOT NULL default '0',
+  `month` tinyint(2) default NULL,
+  `day` tinyint(2) default NULL,
+  `hour` tinyint(2) default NULL,
+  `nb_pages` int(11) default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM
+;",
+
+"
+CREATE TABLE `".PREFIX_TABLE."old_permalinks` (
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  `permalink` varchar(64) NOT NULL default '',
+  `date_deleted` datetime NOT NULL default '0000-00-00 00:00:00',
+  `last_hit` datetime default NULL,
+  `hit` int(10) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`permalink`)
+) ENGINE=MyISAM
+;",
+
+"
+CREATE TABLE `".PREFIX_TABLE."plugins` (
+  `id` varchar(64) binary NOT NULL default '',
+  `state` enum('inactive','active') NOT NULL default 'inactive',
+  `version` varchar(64) NOT NULL default '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM
+;",
+
+"
+CREATE TABLE `".PREFIX_TABLE."user_cache_categories` (
+  `user_id` smallint(5) NOT NULL default '0',
+  `cat_id` smallint(5) unsigned NOT NULL default '0',
+  `max_date_last` datetime default NULL,
+  `count_images` mediumint(8) unsigned default '0',
+  `count_categories` mediumint(8) unsigned default '0',
+  PRIMARY KEY  (`user_id`,`cat_id`)
+) ENGINE=MyISAM
+;",
+
+/* TABLE DROPPED BEFORE Butterfly/Piwigo release - see later DROP IF EXISTS
+"
+CREATE TABLE `".PREFIX_TABLE."ws_access` (
+  `id` smallint(5) unsigned NOT NULL auto_increment,
+  `name` varchar(32) NOT NULL default '',
+  `access` varchar(255) default NULL,
+  `start` datetime default NULL,
+  `end` datetime default NULL,
+  `request` varchar(255) default NULL,
+  `limit` smallint(5) unsigned default NULL,
+  `comment` varchar(255) default NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `ws_access_ui1` (`name`)
+) ENGINE=MyISAM COMMENT='Access for Web Services'
+;",*/
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('show_nb_hits', 'false', 'Show hits count under thumbnails')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('history_admin','false','keep a history of administrator visits on your website')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('history_guest','true','keep a history of guest visits on your website')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('allow_user_registration','true','allow visitors to register?')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('secret_key', MD5(RAND()), 'a secret key specific to the gallery for internal use')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('nbm_send_html_mail','true','Send mail on HTML format for notification by mail')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('nbm_send_recent_post_dates','true','Send recent post by dates for notification by mail')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('email_admin_on_new_user','false','Send an email to theadministrators when a user registers')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('email_admin_on_comment','false','Send an email to the administrators when a valid comment is entered')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('email_admin_on_comment_validation','false','Send an email to the administrators when a comment requires validation')
+;",
+
+"
+INSERT INTO ".PREFIX_TABLE."config
+  (param,value,comment)
+  VALUES
+  ('email_admin_on_picture_uploaded','false','Send an email to the administrators when a picture is uploaded')
+;",
+
+"
+UPDATE ".PREFIX_TABLE."user_cache
+  SET need_update = 'true'
+;",
+
+);
+
+foreach ($queries as $query)
+{
+  pwg_query($query);
+}
+
+$replacements = array(
+  array('&#039;', '\''),
+  array('&quot;', '"'),
+  array('&lt;',   '<'),
+  array('&gt;',   '>'),
+  array('&amp;',  '&') // <- this must be the last one
+  );
+
+foreach ($replacements as $replacement)
+{
+    $query = '
+UPDATE '.PREFIX_TABLE.'comments
+  SET content = REPLACE(content, "'.
+  addslashes($replacement[0]).
+  '", "'.
+  addslashes($replacement[1]).
+  '")
+;';
+    pwg_query($query);
+}
+
+load_conf_from_db();
+
+$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET
+  template = '".$conf['default_template']."',
+  nb_image_line = ".$conf['nb_image_line'].",
+  nb_line_page = ".$conf['nb_line_page'].",
+  language = '".$conf['default_language']."',
+  maxwidth = ".
+  (empty($conf['default_maxwidth']) ? "NULL" : $conf['default_maxwidth']).
+  ",
+  maxheight = ".
+  (empty($conf['default_maxheight']) ? "NULL" : $conf['default_maxheight']).
+  ",
+  recent_period = ".$conf['recent_period'].",
+  expand = '".boolean_to_string($conf['auto_expand'])."',
+  show_nb_comments = '".boolean_to_string($conf['show_nb_comments'])."',
+  show_nb_hits = '".boolean_to_string($conf['show_nb_hits'])."',
+  enabled_high = '".boolean_to_string(
+    (isset($conf['newuser_default_enabled_high']) ?
+      $conf['newuser_default_enabled_high'] : true)
+    ).
+  "'
+WHERE
+  user_id = ".$conf['default_user_id'].";";
+pwg_query($query);
+
+$query = "
+DELETE FROM ".CONFIG_TABLE."
+WHERE
+  param IN
+(
+  'default_template',
+  'nb_image_line',
+  'nb_line_page',
+  'default_language',
+  'default_maxwidth',
+  'default_maxheight',
+  'recent_period',
+  'auto_expand',
+  'show_nb_comments',
+  'show_nb_hits'
+)
+;";
+pwg_query($query);
+
+// now we upgrade from 1.7.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_1.7.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_1.7.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_1.7.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_1.7.0.php	(revision 25596)
@@ -0,0 +1,118 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id > 60)
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 1.7.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 61; $upgrade_id <= 79; $upgrade_id++)
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    break;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 1.7.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.0.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_2.0.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_2.0.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_2.0.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_2.0.0.php	(revision 25596)
@@ -0,0 +1,118 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id >= 81)
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 2.0.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 81; $upgrade_id <= 90; $upgrade_id++)
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    break;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 2.0.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.1.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_2.1.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_2.1.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_2.1.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_2.1.0.php	(revision 25596)
@@ -0,0 +1,118 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id >= 91)
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 2.1.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 91; $upgrade_id <= 97; $upgrade_id++)
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    break;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 2.1.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.2.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_2.2.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_2.2.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_2.2.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_2.2.0.php	(revision 25596)
@@ -0,0 +1,118 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id >= 98)
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 2.2.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 98; $upgrade_id <= 111; $upgrade_id++)
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    break;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 2.2.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.3.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_2.3.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_2.3.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_2.3.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_2.3.0.php	(revision 25596)
@@ -0,0 +1,125 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id >= 112) // TODO change on each release
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 2.3.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 112; $upgrade_id <= 127; $upgrade_id++) // TODO change on each release
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    continue;
+  }
+
+  // maybe the upgrade task has already been applied in a previous and
+  // incomplete upgrade
+  if (in_array($upgrade_id, $applied))
+  {
+    continue;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 2.3.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.4.0
+include_once(PHPWG_ROOT_PATH.'install/upgrade_2.4.0.php');
+?>
Index: /tags/2.6.0RC1/install/upgrade_2.4.0.php
===================================================================
--- /tags/2.6.0RC1/install/upgrade_2.4.0.php	(revision 25596)
+++ /tags/2.6.0RC1/install/upgrade_2.4.0.php	(revision 25596)
@@ -0,0 +1,125 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die ('This page cannot be loaded directly, load upgrade.php');
+}
+else
+{
+  if (!defined('PHPWG_IN_UPGRADE') or !PHPWG_IN_UPGRADE)
+  {
+    die ('Hacking attempt!');
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |             Fill upgrade table without applying upgrade               |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+$inserts = array();
+foreach ($to_apply as $upgrade_id)
+{
+  if ($upgrade_id >= 128) // TODO change on each release
+  {
+    break;
+  }
+  
+  array_push(
+    $inserts,
+    array(
+      'id' => $upgrade_id,
+      'applied' => CURRENT_DATE,
+      'description' => '[migration from 2.4.0 to '.PHPWG_VERSION.'] not applied',
+      )
+    );
+}
+
+if (!empty($inserts))
+{
+  mass_inserts(
+    '`'.UPGRADE_TABLE.'`',
+    array_keys($inserts[0]),
+    $inserts
+    );
+}
+
+// +-----------------------------------------------------------------------+
+// |                          Perform upgrades                             |
+// +-----------------------------------------------------------------------+
+
+ob_start();
+echo '<pre>';
+
+for ($upgrade_id = 128; $upgrade_id <= 134; $upgrade_id++) // TODO change on each release
+{
+  if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
+  {
+    continue;
+  }
+
+  // maybe the upgrade task has already been applied in a previous and
+  // incomplete upgrade
+  if (in_array($upgrade_id, $applied))
+  {
+    continue;
+  }
+  
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO `'.PREFIX_TABLE.'upgrade`
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \'[migration from 2.4.0 to '.PHPWG_VERSION.'] '.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+ob_end_clean();
+
+// now we upgrade from 2.5.0
+// include_once(PHPWG_ROOT_PATH.'install/upgrade_2.5.0.php');
+?>
Index: /tags/2.6.0RC1/language/af_ZA/about.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/about.html	(revision 25596)
@@ -0,0 +1,17 @@
+<p>Hierdie fotogallery is geskep deur Piwigo.</p>
+
+<p>Piwigo is webgebaseerde fotogallery sagteware. Dit word ontwikkel en onderhou
+deur 'n aktiewe gemeenskap gebruikers en ontwikkelaars. Piwigo kan soos verkies
+aangepas word deur 'n verskeidenheid modules. Kersie op die koek: Piwigo is gratis
+en oopkode.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Besoek die Piwigo webblad</a></p>
+
+<p>Die Afrikaanse vertaling word onderhou deur (in alfabetiese volgorde):
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=16744">jpmeijers</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13577">maeztro</a></li>
+    <li>Marius Loots and Mignon Smit</li>
+    </ul>
+           .... Baie dankie aan almal</p>
Index: /tags/2.6.0RC1/language/af_ZA/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/admin.lang.php	(revision 25596)
@@ -0,0 +1,949 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Average rate'] = 'Gemiddelde tempo';
+$lang['Rate'] = "Gradeer";
+$lang['Access type'] = 'Toegangstipe';
+$lang['ACCESS_0'] = 'Vry toegang';
+$lang['ACCESS_1'] = 'Toegang tot alles';
+$lang['ACCESS_2'] = 'Toegang aan geregistreerde gebruikers';
+$lang['ACCESS_3'] = 'Toegang aan administrateurs';
+$lang['ACCESS_4'] = 'Toegang aan webmeesters';
+$lang['ACCESS_5'] = 'Geen toegang';
+$lang[' and %d virtual'] = 'en %d virtuele';
+$lang['%d album including'] = '%d album ingesluit';
+$lang['%d album moved'] = '%d album geskuif';
+$lang['%d albums including'] = '%d albums insluitend';
+$lang['%d albums moved'] = '%d albums geskuif';
+$lang['%d anomalies have been detected corrected.'] = '%d onreëlmatighede is gevind en reggemaak';
+$lang['%d anomalies have been detected.'] = '%d onreëlmatighede is gevind';
+$lang['%d anomalies have been ignored.'] = '%d onreëlmatighede is geignoreer';
+$lang['%d anomalies have not been corrected.'] = '%d onreëlmatighede is nie reggemaak nie';
+$lang['%d anomaly has been corrected.'] = '%d onreëlmatigheid is reggemaak';
+$lang['%d anomaly has been detected.'] = '%d onreëlmatigheid is gevind';
+$lang['%d anomaly has been ignored.'] = '%d onreëlmatigheid is geignoreer';
+$lang['%d anomaly has not been corrected.'] = '%d onreëlmatigheid is nie reggemaak nie';
+$lang['%d association'] = '%d assosiasie';
+$lang['%d associations'] = '%d assosiasies';
+$lang['%d group'] = '%d groep';
+$lang['%d groups'] = '%d groepe';
+$lang['%d guest'] = '%d gas';
+$lang['%d guests'] = '%d gaste';
+$lang['%d line filtered'] = '%d lyn gefilter';
+$lang['%d lines filtered'] = '%d lyne gefilter';
+$lang['%d mail was not sent.'] = '%d e-pos is nie gestuur nie';
+$lang['%d mail was sent.'] = '%d e-pos is gestuur';
+$lang['%d mails were not sent.'] = '%d e-posse is nie gestuur nie';
+$lang['%d mails were sent.'] = '%d e-posse is gestuur';
+$lang['%d member'] = '%d lid';
+$lang['%d members'] = '%d lede';
+$lang['%d of %d photos selected'] = '%d van %d fotos gekies';
+$lang['%d parameter was updated.'] = '%d parameter is opgedateer';
+$lang['%d parameters were updated.'] = '%d parameters is opgedateer';
+$lang['%d photo was deleted'] = '%d foto is verwyder';
+$lang['%d photos uploaded'] = '%d fotos opgelaai';
+$lang['%d photos were deleted'] = '%d fotos verwyder';
+$lang['%d physical'] = '%d fisies';
+$lang['%d tag'] = '%d etiket';
+$lang['%d tags'] = '%d etikette';
+$lang['%d user'] = '%d gebruiker ';
+$lang['%d user comment rejected'] = '%d gebruikerskommentaar verwerp';
+$lang['%d user comment validated'] = '%d gebruikerskommentaar aanvaar';
+$lang['%d user comments rejected'] = '%d gebruikerskommentare verwerp ';
+$lang['%d user comments validated'] = '%d gebruikerskommentare aanvaar';
+$lang['%d user deleted'] = '%d gebruikers verwyder';
+$lang['%d user was not updated.'] = '%d gebruiker is nie opgedateer nie';
+$lang['%d user was updated.'] = '%d gebruikers is opgedateer ';
+$lang['%d users'] = '%d gebruikers ';
+$lang['%d users deleted'] = '%d gebruikers verwyder ';
+$lang['%d users were not updated.'] = '%d gebruikers is nie opgedateer nie';
+$lang['%d users were updated.'] = '%d gebruikers is opgedateer ';
+$lang['%d waiting for validation'] = '%d wag vir bekragtiging';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s moet as "false" gemerk word in jou local/config/config.inc.php lêer';
+$lang['%s value is not correct file because exif are not supported'] = '%s waarde is nie regte lêer nie want exif word nie ondersteun nie';
+$lang['+ Add an upload box'] = '+ Voeg oplaai vakkie by';
+$lang[', click on'] = ', kliek op';
+$lang['A new version of Piwigo is available.'] = '\'n Nuwe weergawe van Piwigo is beskikbaar.';
+$lang['Action'] = 'Aksie';
+$lang['Actions'] = 'Aksies';
+$lang['Activate'] = 'Aktiveer ';
+$lang['Activate icon "%s"'] = 'Aktiveer ikoon "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktiveer ikoon "nuut" langs albums en prentjies';
+$lang['Activate Navigation Bar'] = 'Aktiveer Navigasie Staaf';
+$lang['Activate Navigation Thumbnails'] = 'Aktiveer Navigasie Duimnaels';
+$lang['Active Languages'] = 'Aktiveer Tale';
+$lang['Active Plugins'] = 'Aktiveer Invoegsels';
+$lang['Active Themes'] = 'Aktiveer Temas';
+$lang['... or '] = '... of';
+$lang['Add'] = 'Voeg by';
+$lang['Add a criteria'] = 'Voeg kriteria by';
+$lang['Add a filter'] = 'Voeg filter by';
+$lang['Add a tag'] = 'Voeg sleutelwoord by';
+$lang['Add a user'] = 'Voeg gebruiker by';
+$lang['Add a virtual album'] = 'Voeg virtuele album by';
+$lang['Add another set of photos'] = 'Voeg nog \'n stel fotos by';
+$lang['Add group'] = 'Voeg groep by';
+$lang['Add New Language'] = 'Voeg Nuwe Taal by';
+$lang['add new photos to caddie'] = 'plaas nuwe fotos in mandjie';
+$lang['Add New Theme'] = 'Voeg Nuwe Tema by';
+$lang['Add Photos'] = 'Voeg fotos by';
+$lang['Add tags'] = 'Voeg sleutelwoorde by';
+$lang['Add/delete a permalink'] = 'Voeg by/verwyder permanente skakel';
+$lang['added'] = 'bygevoeg';
+$lang['Album "%s" has been added'] = 'Album "%s" is bygevoeg';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" bevat nou %d fotos';
+$lang['Album name'] = 'Album naam';
+$lang['Album updated successfully'] = 'Album opdatering suksesvol';
+$lang['all'] = 'alles';
+$lang['an error happened'] = '\'n fout het voorgekom';
+$lang['An error occured during extraction (%s).'] = '\'n fout het voorgekom met ontbondeling (%s).';
+$lang['and'] = 'en';
+$lang['Anomaly'] = 'Anomalie';
+$lang['Create'] = 'Skep';
+$lang['Crop'] = 'Snoei';
+$lang['GD version'] = 'GD-biblioteek weergawe';
+$lang['General statistics'] = 'Algemene statistiek';
+$lang['Get Support on Piwigo Forum'] = 'Kry hulp op die Piwigo Forum';
+$lang['Go to'] = 'Gaan na';
+$lang['Group name'] = 'Groep naam';
+$lang['Groups'] = 'Groepe';
+$lang['guest'] = 'gas';
+$lang['Guest cannot be deleted'] = 'Gaste kan nie verwyder word nie';
+$lang['Guest Settings'] = 'Gas Instellings';
+$lang['Guests'] = 'Gaste';
+$lang['Height'] = 'Hoogte';
+$lang['height must be a number superior to'] = 'hoogte moet \'n getal groter wees as';
+$lang['Hello'] = 'Hallo';
+$lang['Hello,'] = 'Hallo,';
+$lang['Help Me'] = 'Help My';
+$lang['Hide'] = 'Steek weg';
+$lang['high'] = 'hoog';
+$lang['High definition'] = 'Hoë skerpheid';
+$lang['History'] = 'Geskiedenis';
+$lang['Hour'] = 'Uur';
+$lang['Ignore All'] = 'Ignoreer Almal';
+$lang['Image id'] = 'Beeld id';
+$lang['Image Quality'] = 'Beeld kwaliteit';
+$lang['Inactive Languages'] = 'Onaktiewe Tale';
+$lang['Inactive Plugins'] = 'Onaktiewe Byvoegsels';
+$lang['Inactive Themes'] = 'Onaktiewe Temas';
+$lang['Install'] = 'Installeer';
+$lang['Install on your computer,'] = 'Installeer op jou rekenaar,';
+$lang['Installed Languages'] = 'Geïnstalleerde Tale';
+$lang['Installed Themes'] = 'Geïnstalleerde Temas';
+$lang['Instructions to use Piwigo'] = 'Instruksies in die gebruik van Piwigo';
+$lang['IP'] = 'IP';
+$lang['jump to album'] = 'spring na album';
+$lang['jump to photo'] = 'spring na foto';
+$lang['Languages'] = 'Tale';
+$lang['Last import'] = 'Laaste invoer';
+$lang['Last revisions'] = 'Laaste wysigings';
+$lang['Last send'] = 'Laaste stuur';
+$lang['leave'] = 'verlaat';
+$lang['Level 0'] = 'Vlak 0';
+$lang['Level 1'] = 'Vlak 1';
+$lang['Level 2'] = 'Vlak 2';
+$lang['Level 4'] = 'Vlak 4';
+$lang['Level 8'] = 'Vlak 8';
+$lang['Main'] = 'Hoof';
+$lang['Main Page'] = 'Hoofblad';
+$lang['Width'] = 'Wydte';
+$lang['Add to caddie'] = "plaas in mandjie";
+$lang['Caddie'] = 'Mandjie';
+$lang['%s photos can not be regenerated'] = '%s fotos kan nie herskep word nie';
+$lang['%s photos have been regenerated'] = '%s fotos is herskep';
+$lang['(this tag will be deleted)'] = '(hierdie sleutel gaan verwyder word)';
+$lang['Add detailed content'] = 'Voeg detail inhoud by';
+$lang['Add tags'] = 'Voeg sleutels by';
+$lang['Add write access to the "%s" directory'] = 'Voeg skryfregte by die "%s" gids';
+$lang['Administration Home'] = 'Administrasie Tuiste';
+$lang['Advanced features'] = 'Gevorderde kenmerke';
+$lang['Album list management'] = 'Album lys bestuur';
+$lang['Album manual order was saved'] = 'Album handroliese rangskikking is gebêre';
+$lang['Album photos associated to the following albums: %s'] = 'Album fotos geassosieer met die volgende albums: %s';
+$lang['albums added in the database'] = 'albums bygevoeg tot die databasis';
+$lang['Albums authorized thanks to group associations'] = 'Albums bevestig aan die hand van groep verbintenis';
+$lang['Albums automatically sorted'] = 'Albums outomaties gesorteer';
+$lang['albums deleted in the database'] = 'albums verwyder uit databasis';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dae';
+$lang['%d hour'] = '%d uur';
+$lang['%d hours'] = '%d ure';
+$lang['%d minute'] = '%d minuut';
+$lang['%d minutes'] = '%d minute';
+$lang['%d month'] = '%d maand';
+$lang['%d months'] = '%d maande';
+$lang['%d second'] = '%d sekonde';
+$lang['%d seconds'] = '%d sekondes';
+$lang['%d year'] = '%d jaar';
+$lang['%d years'] = '%d jare';
+$lang['%s has been successfully updated.'] = '%s is suksesvol opgedateer.';
+$lang['A locked gallery is only visible to administrators'] = '\'n Geslote gallery is slegs sigbaar vir administrateurs';
+$lang['Activate comments'] = 'Aktiveer opmerkings';
+$lang['Added by %s'] = 'Bygevoeg deur %s';
+$lang['All %d photos are selected'] = 'Al %d fotos is geselekteer';
+$lang['All extensions are up to date.'] = 'Alle uitbreidings is op datum.';
+$lang['All languages are up to date.'] = 'Alle tale is op datum.';
+$lang['All optimizations have been successfully completed.'] = 'Alle optimalisasies is suksesvol voltooi.';
+$lang['All plugins are up to date.'] = 'Alle inpropsels is op datum.';
+$lang['All themes are up to date.'] = 'Alle temas is op datum.';
+$lang['Allow rating'] = 'Laat gradering toe';
+$lang['Allow user customization'] = 'Laat gebruiker aanpassing toe';
+$lang['Allow user registration'] = 'Laat gebruiker registrasie toe';
+$lang['Allow users to delete their own comments'] = 'Laat gebruikers to om eie opmerkings te verwyder';
+$lang['Allow users to edit their own comments'] = 'Laat gebruikers to om eie opmerkings te verander';
+$lang['Allowed file types: %s.'] = 'Toegelate lêertipes: %s';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Daar was \'n fout tydens ontrekking. Gaan asseblief lêer toestemmings van jou Piwigo installasie na. <br><a href="%s">Kliek hier om die loglêer te wys</a>.';
+$lang['An error has occured during upgrade.'] = 'Daar was \'n fout tydens opgradering.';
+$lang['An information email was sent to group "%s"'] = 'Al %d fotos is geselekteer';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Slegs webmeesters, nie administrateurs, kan hierdie lip sien.';
+$lang['Apply action'] = 'Voer aksie uit';
+$lang['Apply selected corrections'] = 'Maak geselekteerde korreksies';
+$lang['Apply to sub-albums'] = 'Pas toe op sub-albums';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Naastenbye maksimum resolusie: %dM piksels (dis %dx%d piksels).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Is jy seker jy wil hierdie opgradering installeer? Jy moet verseker dat hierdie weergawe nie vooraf verwyder moet word nie.';
+$lang['Are you sure you want to delete this plugin?'] = 'Is jy seker jy wil hierdie invoegsel verwyder?';
+$lang['Are you sure you want to install this plugin?'] = 'Is jy seker jy wil hierdie invoegsel installeer?';
+$lang['Associate to album'] = 'Assosieer met album';
+$lang['Associated'] = 'Geassosieer';
+$lang['Automatic sort order'] = 'Outomatiese sorteer volgorde';
+$lang['Available on'] = 'Beskikbaar op';
+$lang['By %s'] = 'Deur %s';
+$lang['Can\'t download archive.'] = 'Argief kan nie afgelaai word nie.';
+$lang['Can\'t read or extract archive.'] = 'Argief kan nie gelees of onttrek word nie.';
+$lang['Cancel'] = 'Kanselleer';
+$lang['Choose an option'] = 'Kies \'n opsie';
+$lang['Classic display'] = 'Klassieke vertoon';
+$lang['Comments for all'] = 'Opmerkings vir almal';
+$lang['Configuration'] = 'Konfigurasie';
+$lang['Confirm merge'] = 'Bevestig versmelting';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Reggestelde onreëlmatigheid sal nie verder geïgnoreer word nie';
+$lang['Correction'] = 'Regstelling';
+$lang['Create this site'] = 'Skep hierdie webtuiste';
+$lang['Current name'] = 'Huidige naam';
+$lang['Database synchronization with files'] = 'Sinkroniseer databasis met lêers';
+$lang['Delete Representant'] = 'Verwyder album duimnael';
+$lang['Delete selected photos'] = 'Verwyder geselekteerde fotos';
+$lang['Delete selected users'] = 'Verwyder geselekteerde gebruikers';
+$lang['Delete this language'] = 'Verwyder hierdie taal';
+$lang['Delete this theme'] = 'Verwyder hierdie tema';
+$lang['Deleted on'] = 'Verwyder op';
+$lang['Description'] = 'Beskrywing';
+$lang['Directory does not exist'] = 'Subgids bestaan nie';
+$lang['Directory'] = 'Subgids';
+$lang['Discover album:'] = 'Ontdek album:';
+$lang['Gallery unlocked'] = 'Gallery ontsluit';
+$lang['List'] = 'Lys';
+$lang['Move to album'] = 'Skuif na album';
+$lang['Not cropped correctly?'] = 'Nie korrek gesny nie?';
+$lang['Notify administrators when a comment is'] = 'Stel administrateurs in kennis as \'n opmerking';
+$lang['Opacity'] = 'Deursigtigheid';
+$lang['Original Size'] = 'Oorspronklike grootte';
+$lang['Original file : %s'] = 'Oorspronklike lêer: %s';
+$lang['Piwigo for Android'] = 'Piwigo vir Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo vir iOS (iPhone, iPad, iPod Touch)10217569';
+$lang['Posted %s on %s'] = 'Gepos %s op %s';
+$lang['Select a file'] = 'Kies \'n lêer';
+$lang['Select groups...'] = 'Kies groepe...';
+$lang['Select users...'] = 'Kies gebruikers...';
+$lang['Sharpen'] = 'Verskerp';
+$lang['There is no group in this gallery.'] = 'Daar is nie \'n groep in hierdie gallery nie.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Hierdie album bevat %d fotos, bygevoeg tussen %s en %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Hierdie album bevat %d fotos, bygevoeg op %s.';
+$lang['This album contains no photo.'] = 'Hierdie album bevat geen fotos.';
+$lang['Unlock gallery'] = 'Ontsluit gallery';
+$lang['Update All'] = 'Opdateer alles';
+$lang['Update Complete'] = 'Opdatering Voltooi';
+$lang['Update albums informations'] = 'Opdateer album inligting';
+$lang['Update in progress... Please wait.'] = 'Opdatering besig... Wag asseblief.';
+$lang['Update photos information'] = 'Opdateer foto inligting';
+$lang['Update to Piwigo %s'] = 'Opdateer na Piwigo %s';
+$lang['Updates'] = 'Opdaterings';
+$lang['Upload Photos'] = 'Laai fotos op';
+$lang['Upload'] = 'Laai op';
+$lang['Uploaded Photos'] = 'Opgelaaide Fotos';
+$lang['Used metadata'] = 'Metadata gebruik';
+$lang['User "%s" created with "%s" like password'] = 'Gebruiker "%s" geskep met "%s" as wagwoord';
+$lang['User %s [%s] added.'] = 'Gebruiker %s [%s] bygevoeg.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Gebruiker %s [%s] bygevoeg by intekenaar lys.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Gebruiker %s [%s] nie by intekenaar lys gevoeg nie.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Gebruiker %s [%s] nie verwyder van intekenaar lys nie.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Gebruiker %s [%s] verwyder van intekenaar lys';
+$lang['User comments validation'] = 'Gebruiker kommentaar bekragtiging';
+$lang['User list'] = 'Gebruikerslys';
+$lang['User status'] = 'Gebruikerstatus';
+$lang['User'] = 'Gebruiker';
+$lang['Users'] = 'Gebruikers';
+$lang['Validate'] = 'Bekragtig';
+$lang['Validation'] = 'Bekragtiging';
+$lang['Version'] = 'Weergawe';
+$lang['Virtual Links'] = 'Virtuele skakels';
+$lang['Virtual album added'] = 'Virtuele album bygevoeg';
+$lang['Virtual album deleted'] = 'Virtuele album verwyder';
+$lang['Virtual album name'] = 'Virtuele album naam';
+$lang['Virtual album'] = 'Virtuele album ';
+$lang['Virtual albums to move'] = 'Virtuele album om te skuif';
+$lang['Visit Gallery'] = 'Besoek die gallery';
+$lang['Visit Piwigo project website'] = 'Besoek Piwigo projek webblad';
+$lang['Visit language site'] = 'Besoek taal blad';
+$lang['Visit plugin site'] = 'Besoek invoegsel blad';
+$lang['Visit theme site'] = 'Besoek tema blad';
+$lang['Visited %d times'] = '%d kere besoek';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WAARSKUWING! Hierdie invoegsel is moontlik nie aanpasbaar met hierdie weergawe van Piwigo nie.';
+$lang['Waiting'] = 'Wagtend';
+$lang['Watermark'] = 'Watermerk';
+$lang['Web Form'] = 'Web Vorm';
+$lang['Webmaster cannot be deleted'] = 'Webmeester kan nie verwyder word nie';
+$lang['Webmaster status is required.'] = 'Webmeester status word benodig.';
+$lang['Week starts on'] = 'Week begin op';
+$lang['Who can see these photos?'] = 'Wie kan hierdie fotos sien?';
+$lang['Who can see this photo?'] = 'Wie kan hierdie foto sien?';
+$lang['With blank value, gallery title will be used'] = 'Indien leeg, sal die gallery titel gebruik word';
+$lang['With no album'] = 'Met geen album';
+$lang['With no tag'] = 'Met geen etiket';
+$lang['With no virtual album'] = 'Met geen virtuele album';
+$lang['X Position'] = 'X Posisie';
+$lang['X Repeat'] = 'X Herhaling';
+$lang['Y Position'] = 'Y Posisie';
+$lang['Year'] = 'Jaar';
+$lang['You are running the latest version of Piwigo.'] = 'Jy gebruik die nuutste weergawe van Piwigo.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Jy gebruik die Webleser oplaaier. Probeer die <a href="%s">Flash oplaaier</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Jy gebruik die Flash oplaaier. Probleme? Probeer die <a href="%s">Webleser oplaaier</a>.';
+$lang['You can activate only one mobile theme.'] = 'Jy kan slegs een mobiele tema aktiveer.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Jy kan direk na Piwigo %s opgradeer, sonder opgradering na Piwigo %s (aanbeveel).';
+$lang['You cannot delete your account'] = 'Jy kan nie jou rekenaar verwyder nie';
+$lang['You cannot move an album in its own sub album'] = 'Jy kan nie \'n album as sy eie subalbum skuif nie';
+$lang['You have %d orphan tags: %s.'] = 'Jy het %d los etikette: %s.';
+$lang['Your configuration settings are saved'] = 'Jou konfigurasie verstellings is gebêre';
+$lang['Zoom'] = 'Zoem';
+$lang['add a new watermark'] = 'voeg \'n nuwe watermerk by';
+$lang['administrators'] = 'administrateurs';
+$lang['associate to group'] = 'assosieer met groep';
+$lang['automatic order'] = 'outomatiese volgorde';
+$lang['average time'] = 'gemiddelde tyd';
+$lang['between'] = 'tussen';
+$lang['bottom left corner'] = 'onderste linker hoek';
+$lang['bottom right corner'] = 'onderste regter hoek';
+$lang['clean'] = 'maak skoon';
+$lang['confirm'] = 'bevestig';
+$lang['create a new album'] = 'skep nuwe album';
+$lang['created'] = 'geskep';
+$lang['delete photo'] = 'verwyder foto';
+$lang['delete this site and all its attached elements'] = 'verwyder hierdie blad en alle verwante inligting';
+$lang['delete'] = 'verwyder';
+$lang['deleted'] = 'verwyder';
+$lang['directories + files'] = 'subgidse + lêers';
+$lang['middle'] = 'middel';
+$lang['modified'] = 'verander';
+$lang['registered users'] = 'geregistreerde gebruikers';
+$lang['simple visitors'] = 'eenvoudige besoeker';
+$lang['top left corner'] = 'boonste linker hoek';
+$lang['top right corner'] = 'boonste regter hoek';
+$lang['update the database from files'] = 'opdateer die databasis met lêers';
+$lang['user "%s" added'] = 'gebruiker "%s" bygevoeg';
+$lang['user_status_admin'] = 'Administrateur';
+$lang['user_status_generic'] = 'Generies';
+$lang['user_status_guest'] = 'Gas';
+$lang['user_status_normal'] = 'Gebruiker';
+$lang['user_status_webmaster'] = 'Webmeester';
+$lang['width must be a number superior to'] = 'wydte moet \'n getal groter wees as';
+$lang['wrong filename'] = 'verkeerde lêernaam';
+$lang['Summary'] = 'Opsomming';
+$lang['Support'] = 'Ondersteuning';
+$lang['Switch to clear or dark colors for administration'] = 'Skakel na skoon of donker kleure vir administrasie';
+$lang['Synchronize metadata'] = 'Sinchroniseer metadata';
+$lang['Synchronize'] = 'Sinchroniseer';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'HIERDIE INVOEGSEL IS NOU DEEL VAN DIE PIWIGO KERN! VERWYDER ONMIDDELIK!';
+$lang['Templates'] = 'Template';
+$lang['The %d following tags were deleted'] = 'Die volgende %d etikette is verwyder';
+$lang['The anomaly will be ignored until next application version'] = 'Die anomalie sal geignoreer word tot die volgende toepassing weergawe';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Die lêer of gids kan nie bereik word nie (dit bestaan nie of toegang is gewyer)';
+$lang['The following tag was deleted'] = 'Die volgende etiket is verwyder';
+$lang['The gallery URL is not valid.'] = 'Die gallery URL is nie geldig nie.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Die naam van \'n groep mag nie " of \' bevat nie of leeg wees nie.';
+$lang['The name of an album must not be empty'] = 'Die naam van \'n album kan nie leeg wees nie';
+$lang['The original image quality must be a number between %d and %d'] = 'Die oorspronklike beeld kwaliteit moet \'n getal tussen %d en %d wees';
+$lang['The original maximum height must be a number between %d and %d'] = 'Die oorspronklike maksimum hoogte moet \'n getal tussen %d en %d wees';
+$lang['The original maximum width must be a number between %d and %d'] = 'Die oorspronklike maksimum wydte moet \'n getal tussen %d en %d wees';
+$lang['The whole page'] = 'Die hele blad';
+$lang['The whole set'] = 'Die hele stel';
+$lang['Theme has been successfully installed'] = 'Tema is suksesvol geinstalleer';
+$lang['Themes which need upgrade'] = 'Tema wat opgradeer moet word';
+$lang['Themes'] = 'Temas';
+$lang['There is no available subscribers to mail.'] = 'Daar is nie intekenaars wat per epos in kennis gestel moet word nie.';
+$lang['There is no other language available.'] = 'Daar is nie ander tale beskikbaar nie.';
+$lang['There is no other plugin available.'] = 'Daar is nie ander invoegsels beskikbaar nie.';
+$lang['There is no other theme available.'] = 'Daar is nie ander temas beskikbaar nie.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Hierdie is \'n groot opdatering, met <a href="%s">nuwe opwindende kenmerke</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Hierdie is \'n klein opdatering, met slegs goggas verwyder.';
+$lang['This name is already used by another group.'] = 'Hierdie naam is reeds ingebruik deur \'n ander groep.';
+$lang['This site already exists'] = 'Hierdie blad bestaan alreeds.';
+$lang['This theme was not designed to be directly activated'] = 'Hierdie tema was nie ontwerp om direk geaktiveer te word nie.';
+$lang['Thumbnail'] = 'Duimnael';
+$lang['Thumbnails generation in progress...'] = 'Besig met duimnael skepping...';
+$lang['Time'] = 'Tyd';
+$lang['Title'] = 'titel';
+$lang['To send ?'] = 'Om te stuur?';
+$lang['To subscribe'] = 'Om in te teken?';
+$lang['To unsubscribe'] = 'Om af te teken';
+$lang['Tools'] = 'Gereedskap';
+$lang['Two updates are available'] = 'Twee opdaterings beskikbaar';
+$lang['Type here the author name'] = 'Tik hier die outeur se naam';
+$lang['Type here the title'] = 'Tik hier die titel';
+$lang['Type in a search term'] = 'Tik hier \'n soekterm';
+$lang['Unable to check for upgrade.'] = 'Nie in staat om vir opgradering te soek nie.';
+$lang['Unable to dump database.'] = 'Nie in staat om databasis te stort nie.';
+$lang['Uninstall'] = 'Oninstalleer';
+$lang['Unknown upload error'] = 'Onbekende oplaai fout';
+$lang['Unlocked'] = 'Ontsluit';
+$lang['Unsubscribe from notification by mail'] = 'Afteken van kennisgewing deur epos';
+$lang['Unsubscribed'] = 'Afgeteken';
+$lang['synchronize files metadata with database photos informations'] = 'sinchroniseer databasis fotos met lêer metadata';
+$lang['synchronize files structure with database'] = 'sinchroniseer lêer struktuur met databasis';
+$lang['target'] = 'teiken';
+$lang['test this remote site'] = 'toets hierdie buite blad';
+$lang['test'] = 'toets';
+$lang['the forum'] = 'die forum';
+$lang['the wiki'] = 'die wiki';
+$lang['total time'] = 'totale tyd';
+$lang['unit mode'] = 'enkel modus';
+$lang['unknown'] = 'onbekend';
+$lang['Authorize users to add comments on selected albums'] = 'Magtig gebruikers om kommentaar te lewer op geselekteerde albums';
+$lang['Authorized'] = 'Gemagtig';
+$lang['Automatic correction'] = 'Outomatiese korreksie';
+$lang['Available only with HTML format'] = 'Slegs beskikbaar met HTML formaat';
+$lang['Batch Manager'] = 'Bondelbestuurder';
+$lang['Can\'t connect to server.'] = 'Verbinding met bediener onmoontlik.';
+$lang['Can\'t create temporary file.'] = 'Tydelike lêer kan nie geskep word nie.';
+$lang['Change Admin Colors'] = 'Ruil administrateur kleure';
+$lang['Check all'] = 'Gaan alles na';
+$lang['Check automatic corrections'] = 'Gaan outomatiese korreksies na';
+$lang['Check for updates'] = 'Soek vir opdaterings';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Opgraderingsoektog faal vir onbekende redes.';
+$lang['Check for upgrade'] = 'Soek vir opgradering';
+$lang['Check integrity'] = 'Gaan integriteit na';
+$lang['Choose an action'] = 'Kies \'n aksie';
+$lang['Database'] = 'Databasis';
+$lang['Date'] = 'Datum';
+$lang['Day'] = 'Dag';
+$lang['Deactivate all'] = 'Deaktiveer alles';
+$lang['Deactivate'] = 'Deaktiveer';
+$lang['Default comments order'] = 'Standaard kommentaar volgorde';
+$lang['Default display'] = 'Verstek vertoon';
+$lang['Default photos order'] = 'Standaard foto volgorde';
+$lang['Default user cannot be deleted'] = 'Verstek gebruiker kan nie verwyder word nie';
+$lang['Groups and users'] = 'Groepe en gebruikers';
+$lang['Multiple Size'] = 'Verskeie groottes';
+$lang['Permission granted for groups'] = 'Regte toegeken aan groepe';
+$lang['Permission granted for users'] = 'Regte toegeken aan gebruikers';
+$lang['Search for new images in the directories'] = 'Soek vir nuwe beelde in subgidse';
+$lang['Searching...'] = 'Soek...';
+$lang['Section'] = 'Gedeelte';
+$lang['See you soon,'] = 'Totsiens,';
+$lang['See you soon.'] = 'Totsiens.';
+$lang['Select an album'] = 'Kies \'n album';
+$lang['Select at least one album'] = 'Kies tenminste een album';
+$lang['Select at least one comment'] = 'Kies tenminste een opmerking';
+$lang['Select at least one photo'] = 'Kies tenminste een foto';
+$lang['Select at least one user'] = 'Kies tenminste een gebruiker';
+$lang['Select files'] = 'Kies lêers';
+$lang['Select recipients'] = 'Kies ontvangers';
+$lang['Select:'] = 'Kies:';
+$lang['Selection'] = 'Keuse';
+$lang['Send mail as'] = 'Stuur epos as';
+$lang['Send mail on HTML format'] = 'Stuur epos in HTML formaat';
+$lang['Send mail to users'] = 'Stuur epos na gebruikers';
+$lang['Send'] = 'Stuur';
+$lang['Set as default language for unregistered and new users'] = 'Kies as verstek taal vir ongeregistreerde en nuwe gebruikers';
+$lang['Set as default theme for unregistered and new users'] = 'Kies as verstek tema vir ongeregistreerde en nuwe gebruikers';
+$lang['Set author'] = 'Verstel outeur';
+$lang['Set title'] = 'Verstel titel';
+$lang['Settings'] = 'Verstellings';
+$lang['Show info'] = 'Wys inligting';
+$lang['Simulation'] = 'Simulasie';
+$lang['Some themes and plugins may be not available yet.'] = 'Sommige temas en invoegsels is moontlik nog nie beskikbaar nie.';
+$lang['Some upgrades are available for extensions.'] = 'Sommige opgraderings beskikbaar vir uitbreidings.';
+$lang['selection'] = 'keuse';
+$lang['show details'] = 'wys detail';
+$lang['Default user does not exist'] = 'Verstekgebruiker bestaan nie';
+$lang['Delete orphan tags'] = 'Verwyder wees etikette';
+$lang['Delete selected tags'] = 'Verwyder gekose etikette';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FOUT: HIERDIE BYVOEGSEL WORD VERMIS, MAAR IS GEINSTALLEER! VERWYDER DIT NOU.';
+$lang['ERROR'] = 'FOUT';
+$lang['Environment'] = 'Omgewing';
+$lang['Error list'] = 'Lys van foute';
+$lang['Error on file "%s" : %s'] = 'Fout met lêer "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = 'Fout met stuur van e-pos na %s [%s].';
+$lang['Errors caption'] = 'Foute byskrifte';
+$lang['Everybody'] = 'Almal';
+$lang['Extend for templates'] = 'Brei sjabloon uit';
+$lang['Extensions Update'] = 'Dateer uitbreidings op';
+$lang['Ignore this update'] = 'Ignoreer hierdie opdatering';
+$lang['Impossible automatic correction'] = 'Outomatiese verbetering onmoontlik';
+$lang['Informations'] = 'Inligting';
+$lang['Manage Permissions'] = 'Organiseer magtigings';
+$lang['Manage tags'] = 'Organiseer etikette';
+$lang['Manage this set of %d photos'] = 'Organiseer hierdie stel van %d fotos';
+$lang['Manage'] = 'Organiseer';
+$lang['Manual order'] = 'Handroliese rangskikking';
+$lang['Maximum height'] = 'Maksimum hoogte';
+$lang['Maximum width'] = 'Maksimum Wydte';
+$lang['Members'] = 'Lede';
+$lang['Menu Management'] = 'Kieskaarte';
+$lang['Merge selected tags'] = 'Versmelt geselekteerde etikette';
+$lang['Merge tags'] = 'Versmelt etikette';
+$lang['Minimum privacy level'] = 'Minimum privaatvlak';
+$lang['default values'] = 'verstekwaardes';
+$lang['default'] = 'verstek';
+$lang['delete album'] = 'verwyder album';
+$lang['errors during synchronization'] = 'foute gedurende sinchronisasie';
+$lang['existing album'] = 'Bestaande album';
+$lang['include child albums'] = 'sluit subalbums in';
+$lang['manage sub-albums'] = 'organiseer subalbums';
+$lang['manual order'] = 'handroliese rangskikking';
+$lang['Mail content'] = 'Epos inhoud';
+$lang['Mail sent to %s [%s].'] = 'Epos gestuur na %s [%s].';
+$lang['Main "guest" user does not exist'] = 'Die hoof "gas" gebruiker bestaan nie';
+$lang['Main "guest" user status is incorrect'] = 'Die hoof "gas" gebruiker se status is verkeerd';
+$lang['Main "webmaster" user does not exist'] = 'Die hoof "webmeester" bestaan nie';
+$lang['Main "webmaster" user status is incorrect'] = 'Die hoof "webmeester" gebruiker se status is verkeerd';
+$lang['Maintenance'] = 'Onderhoud';
+$lang['Make this language available to users'] = 'Maak hierdie taal beskikbaar aan gebruikers';
+$lang['Make this theme available to users'] = 'Maak hierdie tema beskikbaar aan gebruikers';
+$lang['Month'] = 'Maand';
+$lang['Move albums'] = 'Skuif albums';
+$lang['Move'] = 'Skuif';
+$lang['Name'] = 'Naam';
+$lang['New Version'] = 'Nuwe Weergawe';
+$lang['New name'] = 'Nuwe naam';
+$lang['New parent album'] = 'Nuwe ouer album';
+$lang['New photos added'] = 'Nuwe fotos bygevoeg';
+$lang['New photos were added'] = 'Nuwe fotos is bygevoeg';
+$lang['New tag'] = 'Nuwe etiket';
+$lang['No display'] = 'Geen vertoon';
+$lang['No file was uploaded'] = 'Geen lêer is opgelaai nie';
+$lang['No mail to send.'] = 'Geen epos is gestuur nie.';
+$lang['No photo can be deleted'] = 'Geen foto kan verwyder word nie';
+$lang['No photo in the current set.'] = 'Geen foto in die huidige stel nie.';
+$lang['No photo in this album'] = 'Geen foto in hierdie album nie';
+$lang['None'] = 'Geen';
+$lang['Number of comments per page'] = 'Aantal opmerkings per blad';
+$lang['new'] = 'nuut';
+$lang['none'] = 'geen';
+$lang['nothing'] = 'niks';
+$lang['number of miniaturized photos'] = 'aantal duimnaels geskep';
+$lang['Modify information'] = 'Verander inligting';
+$lang['No photo selected, %d photos in current set'] = 'Geen foto gekies, %d fotos in huidige stel';
+$lang['No photo selected, no action possible.'] = 'Geen foto gekies, geen aksie moontlik.';
+$lang['No results'] = 'Geen resultate';
+$lang['Notification'] = 'Kennisgewing';
+$lang['Obsolete Plugins'] = 'Verouderde invoegsels';
+$lang['Only private albums are listed'] = 'Slegs privaat albums is gelys';
+$lang['Photo Page'] = 'Foto blad';
+$lang['Photo Properties'] = 'Foto eienskappe';
+$lang['Photo name'] = 'Foto naam';
+$lang['Photos'] = 'Fotos';
+$lang['Piwigo Administration'] = 'Piwigo Administrasie';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Aankondigings Nuusbrief';
+$lang['Piwigo Update'] = 'Piwigo opdatering';
+$lang['Piwigo Uploader'] = 'Piwigo Oplaaier';
+$lang['Piwigo configuration'] = 'Piwigo opstelling';
+$lang['Private'] = 'Privaat';
+$lang['Properties'] = 'Kenmerke';
+$lang['Random photo'] = 'Lukraak foto';
+$lang['Representant'] = 'Album duimnael';
+$lang['Representation of albums'] = 'Album duimnael';
+$lang['Representative'] = 'Album duimnael';
+$lang['Represents'] = 'Is duimnael vir';
+$lang['Tag "%s" already exists'] = 'Etiket "%s" bestaan alreeds';
+$lang['on'] = 'op';
+$lang['only directories'] = 'slegs subgidse';
+$lang['photos added in the database'] = 'fotos bygevoeg in databasis';
+$lang['photos deleted from the database'] = 'fotos verwyder van databasis';
+$lang['photos per page'] = 'fotos per blad';
+$lang['photos updated in the database'] = 'fotos opgedateer in databasis';
+$lang['private'] = 'privaat';
+$lang['randomly represented'] = 'lukraak album duimnael';
+$lang['remove tags'] = 'verwyder etikette';
+$lang['remove this filter'] = 'verwyder hierdie filter';
+$lang['remove title'] = 'verwyder titel';
+$lang['%d physicals'] = '%d fisiese';
+$lang['%d week'] = '%d week';
+$lang['%d weeks'] = '%d weke';
+$lang['%s ago'] = '%s terug';
+$lang['%s in the future'] = '%s in die toekoms';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u gebruikers het outomaties toegang omdat hulle aan \'n toegelate groep behoort.';
+$lang['Apply watermark if height is bigger than'] = 'Voeg \'n watermerk by as die hoogte groter is as';
+$lang['Apply watermark if width is bigger than'] = 'Voeg \'n watermerk by as die breedte groter is as';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Standaard sal Piwigo \'n nuwe kleiner weergawe van die foto maak om op die web te vertoon.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Standaard word die middel van die foto gekies as die gebied om op te fokus.';
+$lang['Caddie management'] = 'Bewerk mandjie';
+$lang['Correction applied with error'] = 'Fout tydens regstelling';
+$lang['Correction applied with success'] = 'Regstelling suksesvol gemaak';
+$lang['Delete multiple size images'] = 'Verwyder multi-grootte beelde';
+$lang['Deletions'] = 'Verwyderings';
+$lang['Deny selected groups'] = 'Verbied geselekteerde groepe';
+$lang['Deny selected users'] = 'Verbied geselekteerde gebruiker';
+$lang['Detailed informations'] = 'Gedetailleerde inligting';
+$lang['Display options'] = 'Vertoon keuses';
+$lang['Dissociate from album'] = 'verwyder vanuit album';
+$lang['Dissociated'] = 'verwyder';
+$lang['Do you want to activate anyway?'] = 'Wil jy inelkgeval aktiveer?';
+$lang['Documentation'] = 'Dokumentasie';
+$lang['Does not represent'] = 'Nie \'n voorbeeld van';
+$lang['Download,'] = 'Laai af,';
+$lang['Downloads'] = 'Aflaai';
+$lang['Drag to re-order'] = 'Kliek-en-skuif om volgeorde te verander';
+$lang['Drop into album'] = 'Kies \'n album';
+$lang['Dump Database'] = 'Stort databasis';
+$lang['Duplicates'] = 'Kopieë';
+$lang['Edit album permissions'] = 'Verander album toegang';
+$lang['Edit album'] = 'Verander album';
+$lang['Edit photo information'] = 'Verander foto inligting';
+$lang['Edit photo'] = 'Bewerk foto';
+$lang['Edit ranks'] = 'Verander range';
+$lang['Edit selected tags'] = 'Verander geselekteerde etikette';
+$lang['Edit tags'] = 'Verander etikette';
+$lang['Email administrators when a comment is deleted'] = 'E-pos die administrateur as kommentaar verwyder is';
+$lang['Email administrators when a comment is modified'] = 'E-pos die administrateur as kommentaar verander is';
+$lang['Email admins when a comment requires validation'] = 'E-pos die administrateurs as kommentaar nagegaan moet word';
+$lang['Email admins when a new user registers'] = 'E-pos die administrateurs as \'n nuwe gebruiker registreer';
+$lang['Email admins when a valid comment is entered'] = 'E-pos die administrateurs as daar geldige kommentaar gelaat is';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif-aanvullings is nie beskikbaar nie. Die administrateur moet die gebruik van exif afskakel.';
+$lang['FTP + Synchronization'] = 'FTP + Sinkronisasie';
+$lang['Failed to write file to disk'] = 'Fout met skryf van lêers na hardeskyf';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funksionaliteit sluit in gallery besigtiging, die skep van albums en die oplaai van foto\'s.';
+$lang['File upload stopped by extension'] = 'Oplaai van lêer is deur \'n uitbreiding gestop';
+$lang['File/directory read error'] = 'Fout met lees van lêer/gids';
+$lang['File'] = 'Lêer';
+$lang['Find a new representant by random'] = 'Kies \'n willekeurige album voorbeeldfoto';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Hierdie uitbreidings mag onversoenbaar wees met die nuwe weergawe van Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Hierdie temas mag onversoenbaar wees met die nuwe weergawe van Piwigo:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Piwigo sal sy bes probeer om die area van fokus in die middel te plaas wanneer die foto gesnoei word. (Soos na \'n vierkant.)';
+$lang['Forbid this language to users'] = 'Steek hierdie taal vir gebruikers weg';
+$lang['Forbid this theme to users'] = 'Steek hierdie tema vir gebruikers weg';
+$lang['Forbidden'] = 'Ongemagtig';
+$lang['Form'] = 'Vorm';
+$lang['GD library is missing'] = 'GD-biblioteek is nie beskikbaar nie';
+$lang['Gallery title'] = 'Titel van gallery';
+$lang['Generate multiple size images'] = 'Skep multi-grootte beelde';
+$lang['Go to %s or %s for more informations'] = 'Gaan na %S of %s vir meet inligting';
+$lang['Grant selected groups'] = 'Ken geselekteerde groepe toe';
+$lang['Grant selected users'] = 'Ken geselekteerde gebruikers toe';
+$lang['Graphics Library'] = 'Grafika-biblioteek';
+$lang['Group management'] = 'Bestuur groepe';
+$lang['Group'] = 'Groep';
+$lang['High definition enabled'] = 'Hoë skerpheid is aktief';
+$lang['Hoverbox display'] = 'Sweefskerm';
+$lang['I decide to update anyway'] = 'Ek wil inelkgeval opdateer';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'As hoë resolusie nie beskikbaar is nie, en die huidige webgrootte-kopie groter is as die normale webgrootte, sal Piwigo die huidige kopie as hoë resolusie gebruik en \'n nuwe webgrootte-kopie maak.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Indien jy enige probleme, klagtes of kommentaar het, stuur \'n e-pos aan';
+$lang['Ignore selected anomalies'] = 'Ignoreer geselekteerde onreëlmatighede';
+$lang['Images manual order was saved'] = 'Stoor handmatig-gekose volgorde';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Hierdie tema kan nie geaktiveer word nie aangesien die basis-tema "%s" nie beskikbaar is nie.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Kies eers \'n ander taal as standaard voor hierdie taal gedeaktiveer kan word.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Hierdie is die enigste taal en kan dus nie gedeaktiveer word nie.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Hierdie is die enigste tema en kan dus ne gedeaktiveer word nie.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Hierdie tema kan nie verwyder word nie aangesien ander (%s) dit as basis gebruik.';
+$lang['No group is permitted to see this private album'] = 'Geen groep mag hierdie private album sien nie';
+$lang['Numeric identifier : %d'] = 'Numeriese id : %d';
+$lang['Permission management'] = 'Bestuur toegangsregte';
+$lang['Photo sizes with crop'] = 'Foto groottes tydens snoei.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo uitvoer uitbreiding vir iPhoto.';
+$lang['Rated %d times, score : %.2f'] = '%d stemme met \'n gemiddelde telling van: %.2f';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Kies \'n gebied met die muis om \'n area van fokus aan te dui.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Die area van fokus is die gebied of deel van die foto wat die meeste sê.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Om jou foto\'s vanaf digiKam na Piwigo te stuur, installeer die digiKam- en Kipi-uitbreidings.';
+$lang['any visitor can see this album'] = 'enige besoeker kan hierdie album sien';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is ontwerp vir fotograwe wat foto\'s wil bekyk, bestuur, bewerk, verbeter, organiseer, deel en etikette daaraan wil toevoeg.';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'vertoon alle inligting (toegevoegde albums en foto\'s, verwyderde albums en foto\'s)';
+$lang['display'] = 'skerm';
+$lang['dissociate from group'] = 'verwyder vanuit groep';
+$lang['even already synchronized photos'] = 'selfs reeds gesinkroniseerde foto\'s';
+$lang['first photo added on %s'] = 'eerste foto toegevoeg op %s';
+$lang['for the file format'] = 'vir die lêer-tipe';
+$lang['for this file format'] = 'vir die lêer-tipe';
+$lang['group "%s" added'] = 'groep "%s" is toegevoeg';
+$lang['group "%s" deleted'] = 'groep "%s" is verwyder';
+$lang['group "%s" updated'] = 'die groep "%s" is opgedateer';
+$lang['hide details'] = 'steek details weg';
+$lang['include photos with lower privacy level'] = 'sluit foto\'s met laer toegangsregte in';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besoekers moet aanteken en voldoende regte hê om hierdie album te kan sien';
+$lang['Applications'] = 'Toepassings';
+$lang['Available versions for'] = 'Beskikbare weergawes vir';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publiseer hegstuk vir Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Publiseer hegstuk vir Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo Publiseer hegstuk vir digiKam';
+$lang['Refresh'] = 'Verfris';
+$lang['Reject'] = 'Verwerp';
+$lang['Released on'] = 'Vrygestel op';
+$lang['Remove all filters'] = 'Verwyder alle filters';
+$lang['Repair and optimize database'] = 'Herstel en optimaliseer databasis';
+$lang['Storage album'] = 'Stoor album';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Teken %s in op Piwigo Aankondigings Nuusbrief';
+$lang['Subscribe %s'] = 'Inteken %s';
+$lang['Subscribe to notification by mail'] = 'Teken in op kennisgewings per epos';
+$lang['Subscribe'] = 'Inteken';
+$lang['Subscribed'] = 'Ingeteken';
+$lang['Tag "%s" was added'] = 'Etiket "%s" is bygevoeg';
+$lang['Tag selection'] = 'Kies etikette';
+$lang['Templates configuration has been recorded.'] = 'Templaat konfigurasie is aangeteken.';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Die name van gidse en lêers mag net bestaan uit letters, nommers, "-", "_" of "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Die aantal opmerkings per bladsy moet tussen 5 en 50 ingesluit wees.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Die permaskakel naam moet opgemaak word van a-z, A-Z, 0-9, "-", "_" of "/". Dit mag nie numeries wees of begin met \'n nommer gevolg deur \'n "-"';
+$lang['The uploaded file was only partially uploaded'] = 'Die opgelaaide lêer is slegs gedeeltelik opgelaai';
+$lang['registration date'] = 'registrasie datum';
+$lang['remove author'] = 'verwyder outeur';
+$lang['remove creation date'] = 'verwyder skeppingsdatum';
+$lang['sub-albums'] = 'sub-albums';
+$lang['Orphan tags deleted'] = 'Weesetikette verwyder';
+$lang['Other private albums'] = 'Ander privaat albums';
+$lang['Overall'] = 'Oorsig';
+$lang['Page banner'] = 'Blad banier';
+$lang['Page end'] = 'Bladsy einde';
+$lang['Pages seen'] = 'Bladsye gesien';
+$lang['Parameter'] = 'Verstellings';
+$lang['Parameters'] = 'Parameters';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Wagwoord bevestiging nie gedoen. Bevestig asseblief die gekose wagwoord.';
+$lang['Password is missing. Please enter the password.'] = 'Wagwoord nie ingevul nie. Vul asseblief die wagwoord in.';
+$lang['Path'] = 'Pad';
+$lang['Permission denied'] = 'Regte geweier';
+$lang['Permission granted thanks to a group'] = 'Regte gekoppel aan \'n groep toegeken ';
+$lang['Permission granted'] = 'Regte toegeken';
+$lang['Permissions'] = 'Regte';
+$lang['Photo %s of %s'] = 'Foto %s van %s';
+$lang['Photo informations updated'] = 'Foto inligting opgedateer';
+$lang['Photo unreachable or no support'] = 'Foto onbereikbaar of formaat nie ondersteun nie';
+$lang['Piwigo version'] = 'Piwigo weergawe';
+$lang['Please wait...'] = 'Wag asseblief...';
+$lang['Plugin has been successfully copied'] = 'Die invoegsel is suksesvol gekopieër';
+$lang['Plugin list'] = 'Invoegsel lys';
+$lang['Plugins which need upgrade'] = 'Invoegsels wat opgradeer gaan word';
+$lang['Show menubar'] = 'Wys keuserak';
+$lang['Start Upload'] = 'Begin Oplaai';
+$lang['Statistics'] = 'Statistiek';
+$lang['Status'] = 'Status';
+$lang['You need to confirm deletion'] = 'Jy moet verwyderings bevestig';
+$lang['[%s] Visit album %s'] = '[%s] Besoek album %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Probleme of vrae';
+$lang['other'] = 'ander';
+$lang['pixels'] = 'piksels';
+$lang['set to'] = 'stel na';
+$lang['status'] = 'status';
+$lang['Cannot delete the old permalink !'] = 'Die ou permaskakel kan nie verwyder word nie!';
+$lang['Center of interest'] = 'Fokusmiddelpunt';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Bly betrokke by die Piwigo-projek deur in te skryf vir die Piwigo Afkondingings-nuusbrief. Jy sal \'n e-pos ontvang as \'n nuwe weergawe uitgegee word of as daar enige ander groot nuus rakende die projek is. Dit is gewoonlik net enkele e-posse per jaar.';
+$lang['Languages which need upgrade'] = 'Tale wat opgedateer moet word';
+$lang['Last hit'] = 'Onlangste besoek';
+$lang['Learn more'] = 'Ek wil meer weet';
+$lang['Lock albums'] = 'Sluit album';
+$lang['Lock gallery'] = 'Sluit gallery';
+$lang['Lock'] = 'Sluit';
+$lang['Locked'] = 'Geslote';
+$lang['Other plugins'] = 'Ander uitbreidings is beskikbaar';
+$lang['Parent album'] = 'Ouer-album';
+$lang['Pending Comments'] = 'Kommentaar om nog na te gaan';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permaskakel %s is voorheen deur die album %s gebruik. Verwyder dit eers van die permaskakel-geskiedenis.';
+$lang['Permalink %s is already used by album %s'] = 'Permaskakel %s is alreeds in gebruik deur die album %s';
+$lang['Permalink history'] = 'Permaskakel-geskiedenis';
+$lang['Permalink'] = 'Permaskakel';
+$lang['Permalinks'] = 'Permaskakels';
+$lang['Plugins'] = 'Uitbreidings';
+$lang['Position'] = 'Posisie';
+$lang['Preferences'] = 'Instellings';
+$lang['Privacy level set to "%s"'] = 'Privaatheidsvlak is op %s';
+$lang['Privacy level'] = 'Privaatheidsvlak';
+$lang['Public / Private'] = 'Publiek / Privaat';
+$lang['Public'] = 'Publiek';
+$lang['Purge compiled templates'] = 'Verwyder opgeboude sjablone';
+$lang['Purge history detail'] = 'Verwyder gedetailleerde geskiedenis';
+$lang['Purge history summary'] = 'Verwyder opsommende geskiedenis';
+$lang['Purge search history'] = 'Verwyder soek-geskiedenis';
+$lang['Read Piwigo Documentation'] = 'Lees Piwigo dokumentasie';
+$lang['Replacers (customized templates)'] = 'Vervang (aangemete sjablone)';
+$lang['Reset ignored updates'] = 'Hou op opdaterings ignoreer';
+$lang['Resize'] = 'Verander grootte';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Herstel standaard-opstelling. Jy sal jou uitbreidings se instellings verloor.';
+$lang['Restore'] = 'Herstel';
+$lang['Save Settings'] = 'Stoor instellings';
+$lang['Save Template Directory'] = 'Stoor sjabloon-gids';
+$lang['Save manual order'] = 'Stoor handmatige volgorde';
+$lang['Save order'] = 'Stoor volgorde';
+$lang['Save to permalink history'] = 'Stoor in permaskakel-geskiedenis';
+$lang['Save visits in history for'] = 'Stoor geskiedenis van besoeke vir';
+$lang['Select at least two tags for merging'] = 'Kies twee etikette om saam te smelt';
+$lang['Select the destination tag'] = 'Kies die eindbestemming-etiket';
+$lang['Site manager'] = 'Webmeester';
+$lang['Start pLoader and add your photos.'] = 'Voer pLoader uit en voeg jou fotos by.';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Etiket <em>%s</em> is saamgesmelt met etiket <em>%s</em>';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Die weergawe van %s [%s] wat geïnstalleer is is nie aanpasbaar met die weergawe wat benodig word nie [%s].';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Die webmeester het jou ingeskryf vir kennisgewings per e-pos.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Die webmeester het jou inskrywing vir kennisgewings per e-pos gekanselleer.';
+$lang['Uncheck all'] = 'Kies geen';
+$lang['Uninstalled Plugins'] = 'Verwyder uitbreidings';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Gebruik die standaard fotovolgorde (soos in opstellingslêer)';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Jy is ingeskryf vir kennisgewings per e-pos.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Jou inskrywing vir kennisgewings per e-pos is gekanselleer.';
+$lang['You might go to plugin list to install and activate it.'] = 'Gaan na die uitbreidingslys om dit te installeer en te aktiveer.';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Jy moet verkieslik jou stelsel opdateer om die program ten volle te kan gebruik, anders kan daar nie probleme voorkom nie.';
+$lang['apply automatic sort order'] = 'Sorteer outomaties';
+$lang['cancel manual order'] = 'Kanselleer handmatige volgorde';
+$lang['custom'] = 'Aangemeet';
+$lang['overrides existing values with empty ones'] = 'vervang bestaande waardes met leë waardes';
+$lang['pending validation'] = 'wag vir goedkeuring';
+$lang['public'] = 'publiek';
+$lang['ranks'] = 'range';
+$lang['singly represented'] = 'album voorbeeldfoto is reggemaak';
+$lang[' and %d virtuals'] = 'en %d virtuele';
+$lang['Complementary mail content'] = 'Ekstra e-pos inhoud';
+$lang['Continue processing treatment'] = 'Gaan voort met huidige behandeling';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Skep \'n vouer genaamd "%s" in die basis pad van jou Piwigo-installasie';
+$lang['Element type'] = 'Element tipe';
+$lang['Element'] = 'Element';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Maksimum uitvoertyd is bereik, maar behandeling moet voortgaan [Tyd om te gaan: %d sekondes]';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Maksimum uitvoertyd is verby, maar behandeling moet voortgaan [Tyd om te gaan: %d sekondes]';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Gee skryfregte (chmod 777) aan die vouer "%s" in die basis pad van jou Piwigo-installasie';
+$lang['Information data registered in database'] = 'Inligting aangeteken in databasis';
+$lang['Invert'] = 'Keer om';
+$lang['Language has been successfully installed'] = 'Taal is suksesvol geïnstalleer';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo vir Android</em> toepassing stel jou in staat om met jou Android foon of tablet aan jou Piwigo gallery te verbind, albums te skep en fotos op te laai.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo vir iOS</em> toepassing stel jou in staat om met jou iPhone, iPad of iPad touch aan jou Piwigo gallery te verbind, albums te skep en fotos op te laai.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is fotografie sagteware wat ontwerp is om groot hoeveelhede digitale beelde te administreer en postproduksie werk te doen.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is \'n kragtige pakket om beelde te verwerk en groot biblioteke op Mac te hanteer.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is ontwerk vir professionele fotograwe met iPhoto eenvoudigheid.';
+$lang['Bound Theme'] = 'Gebonde tema';
+$lang['By rank'] = 'Volgens rangorde';
+$lang['Follow Orientation'] = 'Volg oriëntasie';
+$lang['Hit'] = 'Tref';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In jou php.ini lêer is die upload_max_filesize (%sB) groter as die post_max_size (%sB). Jy moet hierdie verstelling verander';
+$lang['Include display of recent photos grouped by dates'] = 'Sluit in die vertoon van onlangse fotos gegroepeer volgens datum';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Sluit geskiedkundige data in (Waarskuwing: bediener geheue limiet kan oorskrei word)';
+$lang['Link all album photos to a new album'] = 'Koppel alle album fotos aan \'n nuwe album';
+$lang['Link all album photos to some existing albums'] = 'Koppel alle album fotos aan sommige bestaande albums';
+$lang['Linked albums'] = 'Gekoppelde albums';
+$lang['Local'] = 'Plaaslik';
+$lang['Mail address is obligatory for all users'] = 'Epos adres is verpligtend vir alle gebruikers';
+$lang['Manage authorizations for selected albums'] = 'Beheer regte vir gekose albums';
+$lang['Manage permissions for group "%s"'] = 'Bheer regte vir die groep "%s"';
+$lang['Manage permissions for user "%s"'] = 'Bheer regte vir die gebruiker "%s"';
+$lang['Manage photo ranks'] = 'Beheer foto rangordes';
+$lang['Maximum file size: %sB.'] = 'Maksimum lêer groote: %sB';
+$lang['Metadata synchronization results'] = 'Metadata sinchronisasie resultate';
+$lang['Metadata synchronized from file'] = 'Metadata sinchronisasie vanaf lêer';
+$lang['Miscellaneous'] = 'Allerlei';
+$lang['Missing Plugins'] = 'Vermiste Invoegsels';
+$lang['Missing a temporary folder'] = 'Vermis \'n tydelike gids';
+$lang['No destination tag selected'] = 'Geen bestemming etiket gekies nie';
+$lang['No user to send notifications by mail.'] = 'Geen gebruikers vir epos inkennisstelling';
+$lang['Number of downloads'] = 'Aantal aflaaie';
+$lang['Number of rates'] = 'Aantal graderings';
+$lang['Number of thumbnails to create'] = 'Aantal duimnaels om te skep';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Op jou Linux, installeer eenvoudig Shotwell met jou pakketbeheerder en aktiveer die Piwigo publikasie opsie.';
+$lang['Operating system'] = 'Bedryfstelsel';
+$lang['Operation in progress'] = 'Behandeling onderweg.';
+$lang['Optimizations have been completed with some errors.'] = 'Optimalisasies is met \'n paar foute voltooi.';
+$lang['Optional URL keyword'] = 'Opsionele URL sleutelwoord';
+$lang['Options'] = 'Keuses';
+$lang['Order of menubar items has been updated successfully.'] = 'Volgorde van kieslys items is suksesvol opgedateer.';
+$lang['Original templates'] = 'Oorspronklike template';
+$lang['Photos generation in progress...'] = 'Besig met fotoskepping...';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan nie opgraderingslêer van bediener verkry nie';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo uitvoer invoeging vir Aperture';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Gaan asseblief "plugins" subgids se toestemmings na (CHMOD).';
+$lang['Predefined filter'] = 'Voorafopgestelde filter';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Die tyd om die lys van gebruikers vir wie epos gestuur word voor te berei, is beperk. Ander gebruikers word nie gelys nie.';
+$lang['Purge never used notification feeds'] = 'Maak ongebruikte kennisname strome skoon';
+$lang['Purge sessions'] = 'Maak sessies skoon';
+$lang['Quick Local Synchronization'] = 'Vinnige Plaaslike Sinchronisasie';
+$lang['Rate date'] = 'Gradeer datum';
+$lang['Rating by guests'] = 'Gradering deur gaste';
+$lang['Rating'] = 'Gradering';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is \'n oopbron (GPL v3) Piwigo kliënt vir die Android dek.';
+$lang['Refresh photo set'] = 'Herlaai fotostel';
+$lang['Reinitialize check integrity'] = 'Hervat integriteit nasiening';
+$lang['Remote'] = 'Afstand';
+$lang['Remove from caddie'] = 'Verwyder uit mandjie';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Vervanging van oorspronklike sjablone deur aangemete sjablone uit die sjabloon-uitbreidings subgids';
+$lang['Resize after upload'] = 'Verander grootte na oplaai';
+$lang['Send an information email to group members'] = 'Stuur \'n inligtings-epos aan groep lede';
+$lang['Send connection settings by email'] = 'Stuur verbindingsverstellings deur epos';
+$lang['Set creation date'] = 'Stel skeppingsdatum';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is \'n oopbron digitale fotobeheerder wat op Linux loop. Dit is die verstek fotobeheerder in Ubuntu en Fedora.';
+$lang['Status of user "%s" updated'] = 'Gebruiker "%s" status opdateer';
+$lang['Subscribe/unsubscribe users'] = 'Gebruikers Inteken/afteken ';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Intekenaars kan slegs gelys word (beskikbaar) as daar nuwe elemente is om in kennis te stel.';
+$lang['Sum of rates'] = 'Totaal van graderings';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Die Piwigo uitvoer invoegsel laat jou toe om albums te skep en fotos uit te voer.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Die Piwigo publiseer invoegsel laat jou toe om fotos direk uit Lightroom na jou Piwigo gallery op te laai en te sinchroniseer.';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Die opgelaaide lêer is groter as die MAX_FILE_SIZE opdrag wat in die HTML vorm gespesifiseer is';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Die opgelaaide lêer is groter as die upload_max_filesize opdrag in php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Die opgelaaide lêers is groter as die upload_max_filesize opdrag in php.ini: %sB';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Die beskikbare tyd om epos te stuur is beperk. Ander eposse is oorgeslaan.';
+$lang['Toggle \'default group\' property'] = 'Draai \'verstek groep\' eienskap om';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Waarskuwing: inteken of afteken sal epos na gebruikers stuur';
+$lang['You are running on development sources, no check possible.'] = 'Jy gebruik ontwikkelaarskode, geen nasiening moontlik nie.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Jy kan nie \'n verstek foto volgorde kies nie want jy het \'n aangemete verstelling in jou lokale konfigurasie.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Jy het <i>$conf[\'order_by\']</i> in jou lokale konfigurasie gespesifiseer. Hierdie parameter is afgekeur. Verwyder dit of vernoem dit na <i>$conf[\'order_by_custom\']</i>!';
+$lang['create a new site'] = 'skep \'n nuwe werf';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is \'n gevorderde gratis foto hanteringsagteware pakket vir Linux, Windows en MacOSX.';
+$lang['global mode'] = 'globale modus';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is die verstek fotohanteringsagteware op MacOSX. Die Piwigo uitvoer invoegsel laat jou nuwe albums skep en direk fotos van iPhoto na jou Piwigo gallery oplaai.';
+$lang['manage album photos'] = 'beheer album fotos';
+$lang['no write access'] = 'geen skryf regte';
+$lang['on the %d selected photos'] = 'op die %d gekose fotos';
+$lang['only perform a simulation (no change in database will be made)'] = 'doen net \'n simulasie (niks sal in die databasis verander word nie)';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader is kort vir <em>Piwigo Uploader</em>. pLoader berei fotos voor op jou rekenaar en dra dit oor na jou Piwigo fotogallery.';
+$lang['photos candidates for metadata synchronization'] = 'foto kandidate vir metadata sinchronisasie';
+$lang['photos informations synchronized with files metadata'] = 'foto inligting gesinchroniseerd met lêer metadata';
+$lang['reduce to single existing albums'] = 'verminder na enkel bestaande albums';
+$lang['unset'] = 'onstel';
+$lang['No order field selected'] = 'Geen veld om volgens te sorteer is gekies nie';
+$lang['Duplicate selected tags'] = 'Dupliseer gekose etikette';
+$lang['Name of the duplicate'] = 'Naam van die duplikaat';
+$lang['Source tag'] = 'Bron etiket';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Etiket "%s" is nou \'n duplikaat van "%s"';
+$lang['between %d and %d pixels'] = 'tussen %d en %d piksels';
+$lang['Duplicate'] = 'Duplikaat';
+$lang['Landscape'] = 'Landskap';
+$lang['Manage photos'] = 'Administreer fotos';
+$lang['Manage the members'] = 'Administreer lede';
+$lang['Merge selected groups'] = 'Versmelt gekose groepe';
+$lang['Minimum height'] = 'Minimum hoogte';
+$lang['Minimum width'] = 'Minimum wydte';
+$lang['No group selected, no action possible.'] = 'Geen groep gekies, geen aksies moontlik';
+$lang['No members to manage'] = 'Geen lede';
+$lang['Number of albums per page'] = 'Aantal albums per blad';
+$lang['Panorama'] = 'Panorama';
+$lang['Please select at least two groups'] = 'Kies asseblief ten minste twee groepe';
+$lang['Portrait'] = 'Potret';
+$lang['Ratio'] = 'Verhouding';
+$lang['Rename'] = 'Vernoem';
+$lang['This group will be set to default'] = 'Hierdie groep sal by verstek gebruik word';
+$lang['This group will be unset to default'] = 'Hierdie groep sal nie meer by verstek gebruik word nie';
+$lang['Type here the name of the new group'] = 'Tik hier die naam van die nuwe groep';
+$lang['View in gallery'] = 'Wys in gallery';
+$lang['between %.2f and %.2f'] = 'tussen %.2f en %.2f';
+$lang['Purge user cache'] = 'Maak pakstoor leeg';
+$lang['Select at least one tag'] = 'Kies ten minste een etiket';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Die beeld se grootte sal verminder word tot %dx%d piksels.';
+?>
Index: /tags/2.6.0RC1/language/af_ZA/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Afrikaans [ZA]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=572
+Author: Marius Loots and Mignon Smit
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Afrikaans";
+$lang_info['country'] = "Suid-Afrika";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "af";
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = "%d Kb";
+$lang['%d album updated'] = "%d album opdateer";
+$lang['%d albums updated'] = "%d albums opdateer";
+$lang['%d comment to validate'] = "%d kommentaar om te verifieer";
+$lang['%d comments to validate'] = "%d kommentaar om te verifieer";
+$lang['%d new comment'] = "%d nuwe kommentaar";
+$lang['%d new comments'] = "%d nuwe kommentaar";
+$lang['%d comment'] = "%d kommentaar";
+$lang['%d comments'] = "%d kommentaar";
+$lang['%d hit'] = "%d besoeke";
+$lang['%d hits'] = "%d besoeke";
+$lang['%d new photo'] = "%d nuwe foto";
+$lang['%d new photos'] = "%d nuwe fotos";
+$lang['%d new user'] = "%d nuwe gebruiker";
+$lang['%d new users'] = "%d nuwe gebruikers";
+$lang['About'] = "Waaroor";
+$lang['All tags'] = "Alle sleutelwoorde";
+$lang['Any tag'] = "Enige sleutelwoorde";
+$lang['At least one listed rule must be satisfied.'] = "Ten minste een kriteria moet aan voldoen word.";
+$lang['Author'] = "Outeur";
+$lang['Albums'] = "Albums";
+$lang['Album'] = "Album";
+$lang['Close this window'] = "Maak die skerm toe";
+$lang['Complete RSS feed (photos, comments)'] = "Volledige RSS string (Fotos, kommentaar)";
+$lang['Confirm Password'] = "Bevestig wagwoord";
+$lang['Connection settings'] = "Verbinding stelling";
+$lang['Login'] = 'Teken aan';
+$lang['Contact webmaster'] = "Kontak Webwerf Admin";
+$lang['Create a new account'] = "Skep nuwe rekening";
+$lang['Created on'] = "Geskep op";
+$lang['Creation date'] = "Skep datum";
+$lang['Current password is wrong'] = "Huidige wagwoord is verkeerd";
+$lang['Dimensions'] = "Afmetings";
+$lang['Display'] = "Vertoon";
+$lang['Each listed rule must be satisfied.'] = "Elke gelyste kriteria moet aan voldoen word.";
+$lang['Email address'] = "Epos adres";
+$lang['Enter your personnal informations'] = "Sleutel persoonlike data in";
+$lang['Error sending email'] = "Fout wanneer epos gestuur word";
+$lang['File name'] = "Lêernaam";
+$lang['File'] = "Lêer";
+$lang['Filesize'] = "Lêer grootte";
+$lang['Filter and display'] = "Filtreer en vertoon";
+$lang['Filter'] = "Filtreer";
+$lang['Forgot your password?'] = "Wagwoord vergeet?";
+$lang['Go through the gallery as a visitor'] = "Navigeer deur die gallery as 'n besoeker";
+$lang['Help'] = "Hulp";
+$lang['Identification'] = "Identifikasie";
+$lang['Photos only RSS feed'] = "Foto RSS string";
+$lang['Keyword'] = "Sleutelwoord";
+$lang['Links'] = "Skakels";
+$lang['N/A'] = "Nvt";
+$lang['New on %s'] = "Nuut op %s";
+$lang['Notification'] = "Kennisgewing";
+$lang['Number of items'] = "Getal items";
+$lang['Original dimensions'] = "Oorspronklike afmetings";
+$lang['Password forgotten'] = "Wagwoord vergeet";
+$lang['Password'] = "Wagwoord";
+$lang['Post date'] = "Datum bygevoeg";
+$lang['Posted on'] = "Bygevoeg op";
+$lang['Profile'] = "Profiel";
+$lang['Quick connect'] = "Vinnig verbind";
+$lang['RSS feed'] = "RSS string";
+$lang['Register'] = "Registreer";
+$lang['Registration'] = "Registrasie";
+$lang['Related tags'] = "Verbandhoudende sleutelwoorde";
+$lang['Reset'] = "Herstel";
+$lang['Retrieve password'] = "Herwin wagwoord";
+$lang['Search rules'] = "Soek kriteria";
+$lang['Search tags'] = "Soek sleutelwoorde";
+$lang['Search'] = "Soek";
+$lang['display available tags'] = "Vertoon beskikbare sleutelwoorde";
+$lang['Since'] = "Sedert";
+$lang['Sort by'] = "Sorteer volgens";
+$lang['Sort order'] = "Sorteer orde";
+$lang['Tag'] = "Sleutelwoord";
+$lang['Tags'] = "Sleutelwoorde";
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = "Die RSS string gee kennis van nuwe gebeure op die webwerf: nuwe fotos, opdatering van albums en nuwe kommentaar. Gebruik saam met RSS stringleser.";
+$lang['Unknown feed identifier'] = "Onbekende string identifiseerder";
+$lang['User comments'] = "Gebruikerskommentaar";
+$lang['Username'] = "Gebruikersnaam";
+$lang['Visits'] = "Besoeke";
+$lang['Webmaster'] = "Webwerf admin";
+$lang['Week %d'] = 'Week %d';
+$lang['remove this tag from the list'] = "haal die sleutelwoord uit die lys uit";
+$lang['representative'] = "verteenwoordiger";
+$lang['Search for Author'] = "Soek vir 'n outeur";
+$lang['Search in albums'] = "Soek in albums";
+$lang['Search by date'] = "Soek volgens datum";
+$lang['Date'] = "Datum";
+$lang['End-Date'] = "Eind datum";
+$lang['Kind of date'] = "Tipe datum";
+$lang['Search for words'] = "Soek vir woorde";
+$lang['Search for all terms'] = "Soek vir alle terme";
+$lang['Search for any term'] = "Soek vir enige term";
+$lang['Empty query. No criteria has been entered.'] = "Soektog leeg. Geen kriteria is ingevul nie.";
+$lang['Search results'] = "Soektog resultate";
+$lang['Search in sub-albums'] = "Soek in sub-albums";
+$lang['searched words : %s'] = 'soek woorde : %s';
+$lang['Welcome'] = 'Welkom';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Welkom by u Piwigo foto gallery!';
+$lang['... or browse your empty gallery'] = '... of kyk deur die spook gallery';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... of haal die boodskap af, ek sal my eie pad vind';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hallo %s, jou Piwigo foto gallery is leeg!';
+$lang['I want to add photos'] = 'Ek wil fotos byvoeg';
+$lang['Manage this user comment: %s'] = 'Bestuur die gebruiker se kommentaar: %s';
+$lang['Email address is missing. Please specify an email address.'] = "Epos adres word vermis. Spesifiseer asb. epos adres.";
+$lang['This author modified following comment:'] = 'Die outeur het die volgende kommentaar verander:';
+$lang['This author removed the comment with id %d'] = 'Die outeur het die kommentaar met id %d verwyder';
+$lang['html tags are not allowed in login'] = 'html mag nie in aantekening gebruik word nie';
+$lang['%d rates'] = '%d graderings';
+$lang['Rating score'] = 'Gradering telling';
+$lang['The number of photos per page must be a not null scalar'] = 'Die aantal fotos per bladsy mag nie nul wees nie';
+$lang['Number of photos per page'] = 'Aantal fotos per bladsy';
+$lang['Invalid username or email'] = 'Ongeldige gebruikersnaam of epos adres';
+$lang['Password reset is not allowed for this user'] = 'Wagwoord herstel word nie vir hierdie gebruiker toegelaat nie';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Gebruiker "%s" het nie \'n epos adres nie, wagwoord herstel is nie moontlik nie';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Iemand het gevra dat die wagwoord vir die volgende gebruiker herstel moet word:';
+$lang['Username "%s" on gallery %s'] = 'Gebruikersnaam "%s" op gallery %s';
+$lang['To reset your password, visit the following address:'] = 'Om jou wagwoord te herstel, besoek die volgende adres:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'As dit \'n fout was, ignoreer hierdie epos en niks sal gebeur nie.';
+$lang['Password Reset'] = 'Wagwoord Herstel';
+$lang['Check your email for the confirmation link'] = '\'n Bevestigingskakel word per epos aan jou gestuur';
+$lang['Invalid key'] = 'Ongeldige sleutel';
+$lang['The passwords do not match'] = 'Die wagwoorde pas nie';
+$lang['Your password has been reset'] = 'Jou wagwoord is herstel';
+$lang['Return to home page'] = 'Gaan terug na die tuisblad';
+$lang['Please enter your username or email address.'] = 'Vul asseblief jou gebruikersnaam of epos adres in.';
+$lang['You will receive a link to create a new password via email.'] = 'Jy sal met epos \'n skakel ontvang om \'n nuwe wagwoord te skep.';
+$lang['Username or email'] = 'Gebruikersnaam of epos adres';
+$lang['Change my password'] = 'Verander my wagwoord';
+$lang['Enter your new password below.'] = 'Vul jou wagwoord hier onder in';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['About Piwigo'] = "Oor Piwigo";
+$lang['You are not authorized to access the requested page'] = "U is nie gemagtig om die blad te besoek nie";
+$lang['add this photo to your favorites'] = "plaas die foto by u gunstelinge";
+$lang['Administration'] = "Administrasie";
+$lang['all'] = "alles";
+$lang['ascending'] = "toenemend";
+$lang['author(s) : %s'] = "outeur(s) : %s";
+$lang['Expand all albums'] = "Vergroot alle albums";
+$lang['posted after %s (%s)'] = "bygevoeg na %s (%s)";
+$lang['posted before %s (%s)'] = "bygevoeg voor %s (%s)";
+$lang['posted between %s (%s) and %s (%s)'] = "bygevoeg tussen %s (%s) en %s (%s)";
+$lang['posted on %s'] = "bygevoeg op %s";
+$lang['Best rated'] = "Hoogste gradering";
+$lang['display best rated photos'] = "Vertoon gewildste fotos";
+$lang['Calendar'] = "Kalender";
+$lang['All'] = "Almal";
+$lang['display each day with photos, month per month'] = "Vertoon elke dag met nuwe fotos, maand per maand";
+$lang['View'] = "Besigtig";
+$lang['chronology_monthly_calendar'] = "Maandelikse kalender";
+$lang['chronology_monthly_list'] = "Maandelikse lys";
+$lang['chronology_weekly_list'] = "Weeklikse lys";
+$lang['Click here if your browser does not automatically forward you'] = "Kliek hier as die leser u nie automaties neem nie";
+$lang['comment date'] = "kommentaar datum";
+$lang['Comment'] = "Kommentaar";
+$lang['Your comment has been registered'] = "U kommentaar is geregistreer";
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = "Gemorspos voorkoming : Was asb 'n oomblik voor u weer probeer";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = "U kommentaar is in die asblik, dit het nie die verifikasie toets deurstaan nie";
+$lang['An administrator must authorize your comment before it is visible.'] = "Die Administrateur moet u kommentaar goedkeur VOOR dit sal vertoon.";
+$lang['This login is already used by another user'] = "Die aanteken naam is ongelukkig reeds in gebruik";
+$lang['Comments'] = "Kommentaar";
+$lang['Add a comment'] = "Los kommentaar";
+$lang['created after %s (%s)'] = "geskep na %s (%s)";
+$lang['created before %s (%s)'] = "geskep voor %s (%s)";
+$lang['created between %s (%s) and %s (%s)'] = "geskep tussen %s (%s) en %s (%s)";
+$lang['created on %s'] = "geskep op %s";
+$lang['Customize'] = "Verander na smaak";
+$lang['Your Gallery Customization'] = "Verander U gallery na smaak";
+$lang['day'][0] = "Sondag";
+$lang['day'][1] = "Maandag";
+$lang['day'][2] = "Dinsdag";
+$lang['day'][3] = "Woensdag";
+$lang['day'][4] = "Donderdag";
+$lang['day'][5] = "Vrydag";
+$lang['day'][6] = "Saterdag";
+$lang['Default'] = "Verstek";
+$lang['delete this photo from your favorites'] = "Verwyder die foto onder u gunstelinge";
+$lang['Delete'] = "Verwyder";
+$lang['descending'] = "afnemend";
+$lang['Download'] = "Laai af";
+$lang['Download this file'] = "Laai die lêer af";
+$lang['edit'] = "verander";
+$lang['wrong date'] = "verkeerde datum";
+$lang['excluded'] = "uitgesluit";
+$lang['Your favorites'] = "U gunstelinge";
+$lang['display your favorites photos'] = "vertoon u gunsteling fotos";
+$lang['Favorites'] = "Gunstelinge";
+$lang['First'] = "Eerste";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = "Die gallery is toe vir instandhouding. Kom besoek ons asb. later weer.";
+$lang['Page generated in'] = "Bladsy gegenereer in";
+$lang['guest'] = "gas";
+$lang['Hello'] = "Hallo";
+$lang['available for administrators only'] = "slegs vir administrateur beskikbaar";
+$lang['display this album'] = "vertoon hierdie album";
+$lang['display last user comments'] = "vertoon die laaste gebruiker se kommentaar";
+$lang['customize the appareance of the gallery'] = "Verander die voorkoms van die gallery";
+$lang['search'] = "soek";
+$lang['Home'] = "Tuis";
+$lang['in this album'] = "in hierdie album";
+$lang['in %d sub-album'] = "in %d sub-album";
+$lang['in %d sub-albums'] = "in %d sub-albums";
+$lang['included'] = "ingesluit";
+$lang['Invalid password!'] = "Ongeldige wagwoord!";
+$lang['Language'] = "Taal";
+$lang['last %d days'] = "laaste %d dae";
+$lang['Last'] = "Laaste";
+$lang['Logout'] = "Teken uit";
+$lang['obligatory'] = "verplig";
+$lang['display a calendar by creation date'] = "vertoon 'n kalender volgens datum geskep";
+$lang['display all photos in all sub-albums'] = "vertoon alle fotos in alle sub-albums";
+$lang['return to normal view mode'] = "gaan terug na normale voorkoms";
+$lang['display a calendar by posted date'] = "vertoon die kalender volgens publikasie datum";
+$lang['month'][10] = "Oktober";
+$lang['month'][11] = "November";
+$lang['month'][12] = "Desember";
+$lang['month'][1] = "Januarie";
+$lang['month'][2] = "Februarie";
+$lang['month'][3] = "Maart";
+$lang['month'][4] = "April";
+$lang['month'][5] = "Mei";
+$lang['month'][6] = "Junie";
+$lang['month'][7] = "Julie";
+$lang['month'][8] = "Augustus";
+$lang['month'][9] = "September";
+$lang['Most visited'] = "Meeste besoek";
+$lang['display most visited photos'] = "vertoon gewildste fotos";
+$lang['Unknown identifier'] = "Onbekende identifiseerder";
+$lang['New password'] = "Nuwe wagwoord";
+$lang['Rate this photo'] = "Gradeer die foto";
+$lang['Next'] = "Volgende";
+$lang['no rate'] = "geen gradering";
+$lang['Photos posted within the last %d day.'] = "Slegs fotos wat binne die laaste %d dae gepos is.";
+$lang['Photos posted within the last %d days.'] = "Slegs fotos wat die laaste %d dae gepos is.";
+$lang['password updated'] = "wagwoord opgedateer";
+$lang['Recent period must be a positive integer value'] = "Onlangse periode moet 'n positiewe waarde wees";
+$lang['photo'] = "foto";
+$lang['Click on the photo to see it in high definition'] = "Kliek om die foto in hoë definisie te sien";
+$lang['Show file metadata'] = "Wys lêer metadata";
+$lang['Powered by'] = "Aangedryf deur";
+$lang['Preferences'] = "Voorkeure";
+$lang['Previous'] = "Vorige";
+$lang['Random photos'] = "Lukraak fotos";
+$lang['display a set of random photos'] = "vertoon 'n stel lukraak fotos";
+$lang['Recent albums'] = "Onlangse albums";
+$lang['display recently updated albums'] = "Vertoon albums wat onlangs opgedateer is";
+$lang['Recent period'] = "Onlangs periode";
+$lang['Recent photos'] = "Onlangse fotos";
+$lang['display most recent photos'] = "Vertoon mees onlangse fotos";
+$lang['Redirection...'] = "Verwysing...";
+$lang['Please, enter a login'] = "Vul 'n aanteken naam in";
+$lang['login mustn\'t end with a space character'] = "Aanteken naam mag nie op 'n spasie eindig nie";
+$lang['login mustn\'t start with a space character'] = "Aanteken naam kan nie met 'n spasie begin nie";
+$lang['this login is already used'] = "die aanteken naam is reeds in gebruik";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = "epos adres moet wees soos xxx@yyy.ee.ee (voorbeeld : koos@vlooi.co.za)";
+$lang['Auto login'] = 'Automatiese aanteken';
+$lang['Contact'] = "Kontak";
+$lang['set as album representative'] = "Stel as album verteenwoordiger";
+$lang['Show number of comments'] = "Toon aantal kommentare";
+$lang['Show number of hits'] = "Wys aantal besoeke";
+$lang['slideshow'] = "skyfiereeks";
+$lang['stop the slideshow'] = "stop die skyfiereeks";
+$lang['Specials'] = "Treffers";
+$lang['SQL queries in'] = "SQL navrae in";
+$lang['display only recently posted photos'] = "Vertoon slegs fotos wat onlangs gepos is";
+$lang['return to the display of all photos'] = "gaan terug na vertoning van alle fotos";
+$lang['the beginning'] = "die begin";
+$lang['Thumbnails'] = "Duimnale";
+$lang['Menu'] = "Keusepaneel";
+$lang['A comment on your site'] = "Kommentaar op u werf";
+$lang['today'] = "vandag";
+$lang['Update your rating'] = "Dateer u gradering op";
+$lang['the username must be given'] = "die gebruikersnaam word vereis";
+$lang['useful when password forgotten'] = "handig indien wagwoord vergeet is";
+$lang['Quick search'] = "Vinnige soek";
+$lang['Connected user: %s'] = "Gebruikers aanlyn: %s";
+$lang['IP: %s'] = "IP: %s";
+$lang['Browser: %s'] = "Leser: %s";
+$lang['Author: %s'] = "Outeur: %s";
+$lang['Comment: %s'] = "Kommentaar: %s";
+$lang['Comment by %s'] = "Kommentaar deur %s";
+$lang['User: %s'] = "Gebruiker: %s";
+$lang['Email: %s'] = "Epos: %s";
+$lang['Admin: %s'] = "Admin: %s";
+$lang['Registration of %s'] = "Registrasie van %s";
+$lang['Album: %s'] = "Album: %s";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "Swak status vir gebruiker \"gas\", verstek status sal gebruik word. Kontak die webwerf adminisrateur.";
+$lang['this email address is already in use'] = "die epos is reeds in gebruik";
+$lang['Album results for'] = "Album resultate vir";
+$lang['Tag results for'] = "Sleutelwoord resultate vir";
+$lang['from %s to %s'] = "van %s na %s";
+$lang['Play of slideshow'] = "Speel skyfiereeks";
+$lang['Pause of slideshow'] = "Halt skyfiereeks";
+$lang['Repeat the slideshow'] = "Herhaal skyfiereeks";
+$lang['Not repeat the slideshow'] = "Moenie skyfiereeks herhaal nie";
+$lang['Reduce diaporama speed'] = "Verminder skyfiereeks spoed";
+$lang['Accelerate diaporama speed'] = "Verhoog skyfiereeks spoed";
+$lang['Submit'] = "Stuur";
+$lang['Yes'] = "Ja";
+$lang['No'] = "Nee";
+$lang['%d photo'] = "%d foto";
+$lang['%d photos'] = "%d fotos";
+$lang['%d photo is also linked to current tags'] = "%d foto is gekoppel aan huidige sleutelwoorde";
+$lang['%d photos are also linked to current tags'] = "%d fotos is gekoppel aan huidige sleutelwoorde";
+$lang['display photos linked to this tag'] = "vertoon fotos gekoppel aan die sleutelwoorde";
+$lang['photos posted during the last %d days'] = "fotos gepos die laaste %d dae";
+$lang['Piwigo Help'] = "Piwigo hulp";
+$lang['Rank'] = "Orde";
+$lang['group by letters'] = "groepeer volgens letters";
+$lang['letters'] = "letters";
+$lang['show tag cloud'] = "wys sleutelwoorde in sleutelwolk";
+$lang['cloud'] = "wolk";
+$lang['Reset to default values'] = "Herstel na verstek waardes";
+$lang['delete all photos from your favorites'] = "verwyder alle fotos vanuit gunstelinge";
+$lang['Sent by'] = "Gestuur deur";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Koekblik is toe, of word nie deur u leser ondersteun nie. U moet koekies ontvang om te kan aanteken.";
+$lang['Edit a comment'] = "Wysig kommentaar";
+$lang['Are you sure?'] = "Is jy seker?";
+$lang['(!) This comment requires validation'] = '(!) Die kommentaar vereis validasie';
+$lang['Edit'] = 'Redigeer';
+$lang['Hello %s,'] = 'Hallo %s,';
+$lang['Send my connection settings by email'] = 'Stuur my verbindingopstelling met epos';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Sukselvolle registrasie, jy sal binnekort \'n epos ontvan met jou verbinding opstellings. Welkom!';
+$lang['Username modification'] = 'Gebruikersnaam verandering';
+$lang['Your username has been successfully changed to : %s'] = 'Jou gebruikersnaam is suksesvol verander na: %s';
+$lang['square'] = 'Vierkantig';
+$lang['thumb'] = 'Duim';
+$lang['small'] = 'Klein';
+$lang['medium'] = 'Medium';
+$lang['large'] = 'Groot';
+$lang['xlarge'] = 'Groter';
+$lang['xxlarge'] = 'Baie groot';
+$lang['Original'] = 'Oorspronklike';
+$lang['Thank you for registering at %s!'] = 'Dankie vir registrasie by %s!';
+$lang['Here are your connection settings'] = 'Hier is jou verbindingopstellings';
+$lang['Password: %s'] = 'Wagwoord: %s';
+$lang['Username: %s'] = 'Gebruikersnaam: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'As jy dink jy het foutiewelik hierdie epos ontvang, kontak ons by %s';
+$lang['Photo sizes'] = 'Foto groottes';
+
+$lang['2small'] = 'XXS - piepklein';
+$lang['Date created, new &rarr; old'] = 'Datum geskep, nuut &rarr; oud';
+$lang['Date created, old &rarr; new'] = 'Datum geskep, oud &rarr; nuut';
+$lang['Date posted, new &rarr; old'] = 'Datum gepos, nuut &rarr; oud';
+$lang['Date posted, old &rarr; new'] = 'Datum gepos, oud &rarr; nuut';
+$lang['Desktop'] = 'Tafelblad';
+$lang['File name, A &rarr; Z'] = 'Lêernaam, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Lêernaam, Z &rarr; A';
+$lang['Manual sort order'] = 'Handroliese sorteer volgorde';
+$lang['Mobile'] = 'Mobiel';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numeriese identifiseerder, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numeriese identifiseerder, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Foto titel, Z &rarr; A';
+$lang['Photo title, Z &rarr; A'] = 'Foto titel, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Graderingspunt, hoog &rarr; laag';
+$lang['Rating score, low &rarr; high'] = 'Graderingspunt, laag &rarr; hoog';
+$lang['Show latest comments first'] = 'Wys nuutste opmerkings eerste';
+$lang['Show oldest comments first'] = 'Wys oudste opmerkings eerste';
+$lang['View in'] = 'Bekyk in';
+$lang['Visits, high &rarr; low'] = 'Besoeke, hoog &rarr; laag';
+$lang['Visits, low &rarr; high'] = 'Besoeke, laag &rarr; hoog';
+$lang['xsmall'] = 'XS - baie klein';
+$lang['%d rate'] = '%d gradering';
+$lang['Bad request'] = 'Ongeldige versoek';
+$lang['Forbidden'] = 'Verbode';
+$lang['Page not found'] = 'Die bladsy kan nie gevind word nie';
+$lang['Permalink for album not found'] = 'Permaskakel vir album kan nie gevind word nie';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo het \'n onherstelbare fout teëgekom';
+$lang['Requested album does not exist'] = 'Aangevraagde album bestaan nie';
+$lang['Requested tag does not exist'] = 'Aangevraagde etiket bestaan nie';
+$lang['Email address is mandatory'] = 'Epos adres is verpligtend';
+$lang['Username is mandatory'] = 'Gebruikersnaam is nie opsioneel nie';
+$lang['mandatory'] = 'verpligtend';
+$lang['Website'] = 'Webblad';
+$lang['Your website URL is invalid'] = 'Jou webblad URL is ongeldig';
+$lang['Email'] = 'Epos';
+$lang['First Page'] = 'Eerste blad';
+$lang['Go back to the album'] = 'Gaan terug na die album';
+$lang['Last Page'] = 'Laaste blad';
+$lang['Password is missing. Please enter the password.'] = 'Wagwoord nie ingevul nie. Vul asseblief die wagwoord in.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Wagwoord bevestiging nie gedoen. Bevestig asseblief die gekose wagwoord.';
+?>
Index: /tags/2.6.0RC1/language/af_ZA/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,110 @@
+<h2>Redigeer album</h2>
+
+<h3>Inligting</h3>
+
+<ul>
+
+  <li><strong>naam</strong>: vernoem die album ('n virtuele vernoeming in geval van 'n fisiese album).</li>
+
+  <li><strong>beskrywing</strong>: kort teks met 'n algemene oorsig van die inhoud, hierdie teks sal op die onderkant van die duimnael blad vertoon word.</li>
+
+</ul>
+
+<h3>Skuif</h3>
+
+<p>As die album virtueel is, kan jy dit skuif. Skuif beteken dat die ouer album verander word.</p>
+
+<h3>Opsies</h3>
+
+<ul>
+
+  <li><strong>Toegang tipe</strong>: Toestemmingsbeheer. As jy 'n album privaat maak, word al die kinder albums privaat. As jy 'n album publiek maak, word al die ouer albums publiek.</li>
+
+  <li><strong>Sluit</strong>: Die album en sub-albums sal tydelik gesluit wees vir onderhoud.</li>
+
+  <li><strong>Opmerkings</strong>: Magtig gebruikers om kommentaar te lewer op fotos in hierdie album.</li>
+
+</ul>
+
+<p>Jy kan hierdie keuses ook op die "Eienskappe" bestuurblad verander (skerm <span
+class="pwgScreen">Opmerkings</span>, <span class="pwgScreen">Sluit</span>,
+<span class="pwgScreen">Publiek/Privaat</span>, <span
+class="pwgScreen">Verteenwoordiger</span> beskikbaar vanaf <span
+class="pwgScreen">Administrasie &raquo; Albums &raquo; Eienskappe</span>).</p>
+
+<h3>Sorteer orde</h3>
+
+<p>Gebruik die verstek beeld sorteer orde.</p>
+
+<p>Dui aan of hierdie orde ook op subalbums van toepassing sal wees.</p>
+
+<p>Select specific sorting criteria to be used with this album.</p>
+<ul>
+<li><strong>Skep datum</strong>: Datum waarop foto geneem is</li>
+<li><strong>Pos datum</strong>: Sinkronisasie datum</li>
+<li><strong>Gemiddelde evaluering (*)</strong>: Gemiddelde evaluering kan deur die besoeker se evaluering verander word</li>
+<li><strong>Meeste besoeke (*)</strong>: Die huidige besoek kan die meeste besoeke volgorde verander</li>
+<li><strong>Lêer naam</strong>: Naam gegee in die inligtingsveld</li>
+<li><strong>Id</strong>: Interne Id (onlangse kategorieë het 'n hoër id as voriges.</li>
+
+</ul>
+<p><strong>(*)</strong>Waarskuwing: Toets self hierdie sorteer volgordes want dit kan onverwagte resultate tot gevolg hê.</p>
+
+
+<h3>Verteenwoordiger</h3>
+
+<p>Die album verteenwoordiger is die duimnael wat vertoon word op die hoofblad (<span class="pwgScreen">category.php</span>) om die album te verteenwoordig indien dit slegs subalbums en nie direkte fotos bevat nie (soos die basis album).</p>
+foto van 'n album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Foto blad</span>: een van die aksie knoppies laat jou toe om die huidige foto as verteenwoordigend van die vertoonde album te kies. Hierdie knoppie is slegs beskikbaar vir administrateurs.</li>
+
+  <li><span class="pwgScreen">Verander inligting van 'n foto</span> in
+  administrasie. Hierdie skerm kan bereik word deur <span
+  class="pwgScreen">picture.php</span> of <span class="pwgScreen">Groep adminstrasie</span> in <em>eenheidsmodus</em>. Sien die help van hierdie skerm vir meer inligting.</li>
+
+  <li><span class="pwgScreen">Administrasie &raquo; Albums &raquo; Eienskappe,
+  Verteenwoordiger</span>. Sien die help van hierdie skerm vir meer inligting.</li>
+
+  <li><span class="pwgScreen">Redigeer album</span> (die huidige skerm).</li>
+
+</ul>
+
+<p>Die keuse van 'n verteenwoordiger hang af van die <code>allow_random_representative</code> konfigurasie parameter (sien <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In verstek modus (<code>allow_random_representative</code> gekies as vals),
+word elke album met ten minste een element verteenwoordig deur 'n vaste element. As dit gekies is (met die skep van 'n album), verander die verteenwoordiger eers wanneer 'n administrateur daarvoor vra. As die verteenwoordiger nie toepaslik is nie, kan jy vra dat <strong>'n Nuwe verteenwoordiger lukraak gekies moet word</strong>.</p>
+
+<p>As die <code>allow_random_representative</code> konfigurasie parameter as waar gesit is, kan 'n kategorie met fotos nie 'n vaste verteenwoordiger hê nie. Gebruik net <strong>Verwyder verteenwoordiger</strong> knoppie.</p>
+
+<p>As die album net sub-albums en geen fotos bevat nie, kan dit nog steeds verteenwoordig word deur enige element, deur die <span class="pwgScreen">Modifiseer inligting oor 'n foto</span> skerm. Die enigste opsie op die huidige skerm is die <strong>Verwyder verteenwoordiger</strong> knoppie.</p>
+
+<h3>Verbind alle album fotos aan 'n nuwe album</h3>
+
+<ul>
+
+<li><strong>Virtuele album naam</strong>: Naam van die album wat geskep moet word, al die fotos van die huidige kategorie sal aan die nuwe geskakel word.</li>
+
+<li><strong>Ouer album</strong>: Waar die nuwe album sal kom, laat leeg om dit aan die basis te skep.</li>
+
+</ul>
+
+<h3>Verbind alle album fotos aan 'n bestaande album</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Kies die bestemming album.</li>
+
+</ul>
+
+<h3>Stuur 'n inligtings-epos aan al die groeplede</h3>
+
+<ul>
+
+<li><strong>Groep</strong>: ontvangersgroep</li>
+
+<li><strong>Epos inhoud</strong>: Enige teks om aan hulle te stuur.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/af_ZA/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/cat_move.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Skuif van virtuele Albums</h2>
+
+<p>Slegs virtuele albums kan 'n nuwe ouer album hê.</p>
+
+<h3>Virtuele albums om te skuif</h3>
+
+<p>Kies een of meer virtuele albums wat jy wil skuif. As die lys leeg is, bestaan daar nog nie virtuele albums nie.</p>
+
+<h3>Nuwe ouer album</h3>
+
+<p>Kies die nuwe ouer album (virtueel of fisies). 
+As jy nie 'n ouer kies nie, sal die geselekteerde virtuele albums na die basis geskuif word. 'n Album kan nie in homself of 'n kinderalbum geskuif word nie.</p>
Index: /tags/2.6.0RC1/language/af_ZA/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permanente skakels</h2>
+
+<p>Permanente skakels word gebruik om die album adres mooier te laat lyk. Indien 'n album met 'n permanente skakel verbind word, is die id van die album nie meer nodig in die adres nie.</p>
+
+<p>Wanneer 'n permanente skakel verwyder word, kan dit in die permanente skakel argief gestoor word. Eksterne skakels na die Piwigo blaaie sal dan nog steeds werk. In die argief van permanente skakels, kan die datum wanneer die skakel verwyder is, die laaste datum wat dit gebruik is, en die aantal kere wat dit gebruik is, gesien word.</p>
+
+<p>Neem kennis dat permanente skakels vir elke album uniek moet wees. In die argief van permanente skakels kan dieselfde permanente skakel nie meer as een keer gebruik word nie.</p>
Index: /tags/2.6.0RC1/language/af_ZA/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Soek</h2>
+
+<p>Hierdie blad laat jou soek deur al die fotos op die gallery.</p>
+
+<dl>
+
+  <dt>Soek vir woorde</dt>
+  <dd>Soek vir een of meer woorde binne die attribute wat verband hou met die fotos in die gallery. Gebruik * as 'n paskaart vir gedeeltelike ooreenstemmings.</dd>
+
+  <dt>Soek vir 'n outeur</dt>
+  <dd>Gebruik * as 'n paskaart vir gedeeltelike ooreenstemmings.</dd>
+
+  <dt>Soek deur datums</dt>
+  <dd>Kies 'n datum/of eind datum vir jou navraag. Laat die datum veld leeg as jy 'n "voor" soektog wil doen. Die jaar in die laaste veld moet in die volgende formaat wees : AAAA (i.e. 2004)</dd>
+
+  <dt>Soek in albums</dt>
+  <dd>Kies een of meer albums om te deursoek. Alle sub-albums kan deursoek word deur die ouer album te kies en die sub-album keuse te merk.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/af_ZA/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Sinkronisasie</h2>
+
+<p>Daar is twee verskillende tipes sinkronisasie:</p>
+<ul>
+	<li>gidse en lêers</li>
+	<li>Lêer metadata</li>
+</ul>
+
+<p>Sinkronisasie van gidse en lêers behels die opdatering van jou gidsbook met die albumboom in die databasis. 
+Sinkronisasie van die metadata behels die opdatering van foto inligting, soos lêer grootte, afmetings in piksels en EXIF of IPTC inligting in die databasis.</p>
+
+<p>Vir sinkronisasie van opgelaaide lêers met die gallery, moet jy eerste gidse en lêers sinkroniseer.</p>
+
+<p>Die sinkronisasie proses kan lank neem (na gelang van die bedienerlading en die aantal elemente), so dit is moontlik om dit op 'n per album basis te doen.</p>
Index: /tags/2.6.0RC1/language/af_ZA/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Gebruikerslys</h2>
+
+<p>Hierdie is waar jy die gebruikers van jou Piwigo gallery administreer.</p>
+
+<h3>Voeg gebruiker by</h3>
+
+<p>'n Administrateur kan gebruikers byvoeg. Vir elke gebruiker, skep 'n gebruikersnaam, wagwoord en 'n geldige epos adres.</p>
+
+<h3>Gebruikerslys</h3>
+
+<p>Die lys van bestaande gebruikers kan gefilter word op die gebruikersnaam (gebruik * as 'n pas-alles), groep of status. Dit kan gerangskik word op registrasiedatum of gebruikersnaam, in stygende of dalende volgorde.</p>
+
+<p>Hierdie skerm word gebruik vir die administrasie van verskeie gebruikers op een slag, met verskillende aksies beskikbaar:</p>
+
+<ul>
+  <li>verwyder gebruikers (benodig bevestiging)</li>
+  <li>verander die status van die gebruiker</li>
+  <li>verbind met of verwyder van groepe</li>
+  <li>verander vertoon eienskappe</li>
+  <li>verander bykomende voorkeure</li>
+</ul>
+
+<p>Die teiken is die gekose gebruiker (verstekwaarde) of alle gebruikers wat in 'n filterlys vertoon word.</p>
Index: /tags/2.6.0RC1/language/af_ZA/index.php
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/af_ZA/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Admin konfigurasie';
+$lang['Basic configuration'] = 'Basiese konfigurasie';
+$lang['Congratulations, Piwigo installation is completed'] = 'Baie geluk, Piwigo installasie is voltooi';
+$lang['Database configuration'] = 'Databasis konfigurasie';
+$lang['Download the config file'] = 'Laai die konfigurasie lêer af';
+$lang['Installation'] = 'Installasie';
+$lang['Just another Piwigo gallery'] = 'Net nog \'n Piwigo gallery';
+$lang['Password [confirm]'] = 'Wagwoord [bevestig]';
+$lang['PHP 5 is required'] = 'PHP 5 word vereis';
+$lang['Sorry!'] = 'Jammer!';
+$lang['Start Install'] = 'Begin installasie';
+$lang['User'] = 'Gebruiker';
+$lang['verification'] = 'verifikasie';
+$lang['Welcome to my photo gallery'] = 'Welkom by my fotogallery';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Jy kan die konfigurasie lêer aflaai en oplaai na die local/config gids van jou installasie';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternatiewelik kan die teks in die boksie hier bo gekopiëer word en in die lêer "local/config/database.inc.php" gestoor word. Maak seker die lêer bevat slegs die teks hier bo en geen nuwe-lyn karakters of spasies nie.';
+$lang['Can\'t connect to server'] = 'Kan nie aan die bediener verbind nie';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Verbinding aan bediener was suksesvol, maar daar kon nie aan die databasis verbind word nie';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Fout tydens die skepping van opstellings-lêer local/config/database.inc.php ';
+$lang['Database name'] = 'Databasisnaam';
+$lang['Database table prefix'] = 'Databasis tabelnaam-voorvoegsel';
+$lang['Default gallery language'] = 'Gallery se standaard taal';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Moet nie skroom om ons forum om hulp te besoek nie: %s';
+$lang['Hope to see you back soon.'] = 'Tot later.';
+$lang['Host'] = 'Gasheer (naam van bediener)';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Dit wil voorkom of jou bediener PHP weergawe %s gebruik.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Dit sal vir besoekers getoon word en is noodsaaklik vir webtuiste-administrasie';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hou dit geheim. Dit laat jou toe om administrasieblasye te sien';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Benodig hulp? Vra jou vraag op die <a href="%s">Piwigo aanplakbord</a>';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Let op dat jy self die opstelling kan verander en daarna Piwigo heruitvoer.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan probeer om PHP 5 te gebruik deur \'n .htaccess-lêer te skep of te verander.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo kon nie PHP 5 opstel nie.';
+$lang['Try to configure PHP 5'] = 'Probeer PHP 5 op te stel';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Besoekers sal hierdie adres kan gebruik om die webmeester te kontak';
+$lang['Welcome to your new installation of Piwigo!'] = 'Welkom by jou nuwe Piwigo webtuiste!';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Verwys na jou diensverskaffer om uit te vind hoe jy PHP 5 kan gebruik.';
+$lang['also given by your host provider'] = 'ook deur diensverskaffer voorsien';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'dit sal vooraan tabelname geheg word om tabelle beter te bestuur';
+$lang['enter a login for webmaster'] = 'kies \'n gebruikersnaam vir die webmeester';
+$lang['please enter your password again'] = 'tike assblief weer jou wagwoord in';
+$lang['user login given by your host provider'] = 'gebruikersnaam deur diensverskaffer voorsien';
+$lang['user password given by your host provider'] = 'wagwoord deur diensverskaffer voorsien';
+$lang['webmaster login can\'t contain characters \' or "'] = 'gebruikersnaam kan nie die karakter \' en " bevat nie';
+$lang['localhost or other, supplied by your host provider'] = 'localhost of ander, voorsien deur jou diensverskaffer';
+?>
Index: /tags/2.6.0RC1/language/af_ZA/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Afrikaans [ZA]
Index: /tags/2.6.0RC1/language/af_ZA/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/af_ZA/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/af_ZA/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = "Upgrade";
+$lang['Upgrade'] = "Opgradering";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Hierdie blad se doel is om die Piwigo databasis van 'n ou na nuwer weergawe te opgradeer. Die opgraderingassistent dink jy gebruik tans <strong>weergawe %s</strong> (of ekwivalent).";
+$lang['Upgrade from version %s to %s'] = "Opgradeer van weergawe %s na %s";
+$lang['Statistics'] = "Statistiek";
+$lang['total upgrade time'] = "totale opgraderingstyd";
+$lang['total SQL time'] = "totale SQL tyd";
+$lang['SQL queries'] = "SQL navrae";
+$lang['Upgrade informations'] = "Opgraderingsinligting";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Doen 'n instandhoudingsondersoek by [Administrasie>Werktuie>Instandhouding] indien jy enige probleme ondervind.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "As voorsorg is die volgende invoegings gedeaktiveer. Voor heraktivering moet jy eers vir opgraderings soek:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Net die administrateur kan opgraderings doen: teken hier onder aan.";
+$lang['You do not have access rights to run upgrade'] = "Jy het nie toegangsregte op 'n opgradering te doen nie";
+$lang['All sub-albums of private albums become private'] = "Alle onderalbums van privaat albums word ook privaat";
+$lang['User permissions and group permissions have been erased'] = "Gebruiker en groepregte is uitgevee";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Slegs duimnaels en webmeester se pos adres is uit die vorige opstelling behou";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, voor <b>?></b>, voeg in:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'As voorsorg is die volgende temas gedeaktiveer. Voor heraktivering moet jy eers vir opgraderings soek:';
+?>
Index: /tags/2.6.0RC1/language/ar_MA/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ar_MA/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_MA/common.lang.php	(revision 25596)
@@ -0,0 +1,39 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: العربية [MA]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Arabic';
+$lang_info['country'] = 'Morocco';
+$lang_info['direction'] = 'rtl';
+$lang_info['code'] = 'ar';
+$lang_info['zero_plural'] = true;
+$lang_info['parent']= "ar_SA";
+
+?>
Index: /tags/2.6.0RC1/language/ar_MA/index.php
===================================================================
--- /tags/2.6.0RC1/language/ar_MA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_MA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ar_MA/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ar_MA/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_MA/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+العربية [MA]
Index: /tags/2.6.0RC1/language/ar_SA/Translator.txt
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/Translator.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/Translator.txt	(revision 25596)
@@ -0,0 +1,6 @@
+Translator
+
+mohammed ahmed al mobarak
+
+http://boayoob.tawaslcom.com
+m0h@msn.com
Index: /tags/2.6.0RC1/language/ar_SA/about.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/about.html	(revision 25596)
@@ -0,0 +1,15 @@
+<p>معرض الصور بدعم من Piwigo</p>
+
+<p>
+piwigo برنامج  معرض الصور برنامج  لشبكة الانترنت ، أنشأه مجموعه من المطورين و المستخدمين ،  وجود الإضافات جعلت من Piwigo سهل التخصيص ، كتبريد الحلوه ، برنامج Piwigo  برنامج مجاني و مفتوح .</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">زيارة موقع Piwigo</a></p>
+
+<p>تم ترجمته الى اللغة العربية  حسب ( الترتيب الأبجدي ) بواسطة :
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=12203">bakir</a></li>
+        <li><a href="http://piwigo.org/forum/profile.php?id=16128">dolomats</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=5100">mohammed</a></li>
+    </ul>
+           .... جزيل الشكر و الامتنان لك </p>
Index: /tags/2.6.0RC1/language/ar_SA/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/admin.lang.php	(revision 25596)
@@ -0,0 +1,956 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d مجموعه';
+$lang['%d associations'] = '%d جمعيات';
+$lang['%d album including'] = '%d ألبوم متضمن ';
+$lang['%d albums including'] = '%d ألبومات متضامنه ';
+$lang['%d physical'] = '%d طبيعي';
+$lang[' and %d virtual'] = ' و %d افتراضي';
+$lang['%d album moved'] = '%d نقل الألبوم';
+$lang['%d albums moved'] = '%d نقل الألبومات';
+$lang['%d group'] = '%d مجموعه';
+$lang['%d groups'] = '%d مجموعات';
+$lang['%d member'] = '%d عدد';
+$lang['%d members'] = '%d أعداد';
+$lang['%d tag'] = '%d كلمة دلائلية';
+$lang['%d tags'] = '%d كلمات';
+$lang['%d user comment rejected'] = '%d تعليق المستخدم رُفض';
+$lang['%d user comments rejected'] = '%d تعليقات المستخدمين رفض';
+$lang['%d user comment validated'] = '%d تم مصادقة التعليق';
+$lang['%d user comments validated'] = '%d تم مصادقة التلعيقات';
+$lang['%d user deleted'] = '%d تم حذف المستخدم';
+$lang['%d users deleted'] = '%d تم حذف المستخدمين';
+$lang['%d user'] = '%d مستخدم';
+$lang['%d users'] = '%d مستخدمين';
+$lang['%d waiting for validation'] = '%d ينتظر المصادقة';
+$lang['Actions'] = 'الاجراءات';
+$lang['Activate'] = 'تفعيل';
+$lang['Add/delete a permalink'] = 'اضافة/حذف الرابط الدائم';
+$lang['Add a tag'] = 'اضافة كلمة دلائلية';
+$lang['Add a user'] = 'اضافة مستخدم';
+$lang['Add group'] = 'اضافة مجموعه';
+$lang['Add'] = 'أضف';
+$lang['Allow user registration'] = 'السماح للمستخدمين بالتسجيل';
+$lang['Apply to sub-albums'] = 'التطبيق على الألبوم الفرعي';
+$lang['Associated'] = 'مرتبط';
+$lang['Caddie management'] = 'ادارة السلة';
+$lang['Caddie'] = 'السلة';
+$lang['Albums authorized thanks to group associations'] = 'تم المصادقة عى الألبومات ، شكرا لله';
+$lang['Album manual order was saved'] = 'طلب الألبومات اليدوية تم حفظه';
+$lang['Check for upgrade failed for unknown reasons.'] = 'لم يتم التحدث لاسباب غير معروفه.';
+$lang['Check for upgrade'] = 'التأكد من التحديثات';
+$lang['Comments for all'] = 'يسمح للجميع بالتعليق دون استثناء و دون طائفية :)';
+$lang['Current name'] = 'الاسم الحالي';
+$lang['Database'] = 'قاعدة البيانات';
+$lang['Deactivate'] = 'تعطيل';
+$lang['Delete Representant'] = 'حذف هذا الرد';
+$lang['Delete selected tags'] = 'حذف الكلمات المختارة';
+$lang['Delete selected users'] = 'حذف المستخدمين المحددين';
+$lang['Deletions'] = 'الازالة';
+$lang['Deny selected groups'] = 'نفي المجموعات المختارة';
+$lang['Deny selected users'] = 'حذف المستخدم المحدد';
+$lang['Description'] = 'الوصف';
+$lang['Display options'] = 'عرض الخيارت';
+$lang['Dissociated'] = 'فصل';
+$lang['Does not represent'] = 'لا يمكن الرد';
+$lang['Edit selected tags'] = 'تحرير الكلمات المختارة';
+$lang['Edit tags'] = 'تحرير الكلمات الدلائلية';
+$lang['Email admins when a new user registers'] = 'ارسل للمدير عند تسجيل مستخدم جديد';
+$lang['Email admins when a valid comment is entered'] = 'اعلم المدير عند اي تعليق جديد';
+$lang['Email admins when a comment requires validation'] = 'اعلم المدير للمصادقة على تعليقات جديدة';
+$lang['Environment'] = 'البيئة';
+$lang['Form'] = 'نموذج';
+$lang['Gallery title'] = 'عنوان المعرض';
+$lang['Grant selected groups'] = 'تصريح المجموعه المختارة';
+$lang['Grant selected users'] = 'تصريح المستخدم المحدد';
+$lang['Group name'] = 'اسم المجموهة';
+$lang['Groups'] = 'مجموعات';
+$lang['Guests'] = 'الضيوف';
+$lang['History'] = 'السجـل';
+$lang['Informations'] = 'المعلومات';
+$lang['Install'] = 'تثبيت';
+$lang['Link all album photos to a new album'] = 'اربط جميع عناصر الألبومات بالألبوم الجديد';
+$lang['Link all album photos to some existing albums'] = 'اربط جميع عناصر الألبوم للقائمة الألبومات المشابهه';
+$lang['Linked albums'] = 'ربط الألبومات';
+$lang['Lock gallery'] = 'اغلاق المعرض';
+$lang['Maintenance'] = 'صيانة';
+$lang['Edit album permissions'] = 'ادراة تصاريح الألبومات';
+$lang['Manage permissions for group "%s"'] = 'ادارة تصاريح المجموعه "%s"';
+$lang['Manage permissions for user "%s"'] = 'ادارة تصاريح المشتركين "%s"';
+$lang['Manage tags'] = 'ادارة الكلمات الدلائلية';
+$lang['Members'] = 'الاعضاء';
+$lang['Metadata synchronized from file'] = 'تزامن البيانات الوصفية للملف';
+$lang['Move albums'] = 'نقل الألبومات';
+$lang['Move'] = 'نقل';
+$lang['Name'] = 'الاسم';
+$lang['New name'] = 'اسم جديد';
+$lang['New parent album'] = 'ألبوم فرعي جديد';
+$lang['New tag'] = 'كلمة جديد';
+$lang['Number of comments per page'] = 'عدد التلعيقات في الصفحة';
+$lang['Number of rates'] = 'عدد التقيمات';
+$lang['Number of thumbnails to create'] = 'عدد المصغرات المنشأة';
+$lang['Only private albums are listed'] = 'فقط للألبومات المدرجة';
+$lang['Operating system'] = 'نظام المعالجة';
+$lang['Options'] = 'الخيارات';
+$lang['Other private albums'] = 'ألبومات أخرى مدرجة';
+$lang['Page banner'] = 'عنوان المعرض ( أعلى الصفحة) يمكنك استخدام HTML';
+$lang['Parent album'] = 'الألبوم الرئيسي';
+$lang['Path'] = 'مسار';
+$lang['Permalink'] = 'رابط دائم';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'الرابط الدائم %sكان يستخدم من قبل الألبوم سابقا أحذفه   اولا من تاريخ %sالرابط الدائم';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'يجب ان يكون الرابط من الحروف الانجليزية   فقط مع امكانية استخدام الارقام ';
+$lang['Permalink %s is already used by album %s'] = 'هذا الرابط   %s بمستخدم من قبل هذا الألبوم ـ%s ';
+$lang['Permalink history'] = 'سجل الرابط الدائم';
+$lang['Permalinks'] = 'الروابط الدائمة';
+$lang['Permission denied'] = 'تصريح مرفوض';
+$lang['Permission granted thanks to a group'] = 'تم التصريح مع الشكر للمجموعه';
+$lang['Permission granted'] = 'منح التصريح';
+$lang['Photo informations updated'] = 'تم تحديث معلومات الصورة';
+$lang['Plugins'] = 'الاضافات';
+$lang['Position'] = 'المـوقع';
+$lang['Preferences'] = 'التفضبلات';
+$lang['Properties'] = 'الخصائص';
+$lang['Random photo'] = 'صورة عشوائية';
+$lang['Rate date'] = 'تاريخ التقييم';
+$lang['Rating by guests'] = 'امكانية التقييم للضيوف';
+$lang['Rating'] = 'تقييم';
+$lang['Reject'] = 'رفض';
+$lang['Representant'] = ' موصوف أو مُـمثل';
+$lang['Representation of albums'] = 'توصيف الألبومات';
+$lang['Representative'] = 'التوصيف  أو التمثيل';
+$lang['Represents'] = 'يُـمثل';
+$lang['Save order'] = 'حفظ المطلوب';
+$lang['Save to permalink history'] = 'حفظ في سجل الرابط الدائم';
+$lang['Select at least one album'] = 'اختر على الاقل ألبوم واحد يا أخي';
+$lang['Select at least one photo'] = 'اختر على الاقل صورة واحدة يا حبيبي';
+$lang['Select at least one user'] = 'اختر  عضوا واحد على الاقل';
+$lang['Show info'] = 'اعرض المعلومات';
+$lang['Site manager'] = 'إدارة الموقع';
+$lang['Status'] = 'الحالة';
+$lang['Statistics'] = 'الأحصائيات';
+$lang['Storage album'] = 'مخزن الألبومات';
+$lang['Sum of rates'] = 'مجموع التقييم';
+$lang['Tag "%s" already exists'] = 'الكلمات  "%s" موجودة بالفعل';
+$lang['Tag "%s" was added'] = 'تم اضافة هذه الكلمة "%s"';
+$lang['Tag selection'] = 'اختيار الكلمات الدلائلية';
+$lang['The %d following tags were deleted'] = 'تم حذف هذه الكلمات %d مسبقا';
+$lang['Unable to check for upgrade.'] = 'لا يمكن التأكد عن تحديثات جديدة';
+$lang['Uninstall'] = 'إلغاء التثبيت';
+$lang['Use the default photo sort order (defined in the configuration file)']='استخدام الصورة الافتراضية من أجل نوع (المحددة في ملف)';
+$lang['User comments validation'] = 'تعليقات تنتظر التصريح';
+$lang['Users'] = 'المستخدمين';
+$lang['Validate'] = 'تصريح';
+$lang['Validation'] = 'التصريح';
+$lang['Version'] = 'الاصدار';
+$lang['Virtual albums to move'] = 'لنقل الألبومات';
+$lang['Virtual album name'] = 'أسم الألبوم';
+$lang['Webmaster cannot be deleted'] = 'لا يمكنك حذف مدير الموقع';
+$lang['You are running on development sources, no check possible.'] = 'ربما لا يمكن تطوير المصادر';
+$lang['You cannot delete your account'] = "لا تستطيع حذف حسابك";
+$lang['You cannot move an album in its own sub album'] = 'لايمكن حذف ألبوم يحتوي على ألبوم فرعي';
+$lang['You need to confirm deletion'] = 'تحتاج  تأكيد الحذف';
+$lang['Associate to album'] = 'المرتبط بهذا الألبوم';
+$lang['associate to group'] = 'مرتبط بهذه المجموعه';
+$lang['Authorized'] = 'المرخص';
+$lang['Add a virtual album'] = 'انشاء ألبوم';
+$lang['Authorize users to add comments on selected albums'] = 'السماح للمستخدمين باضافة تعليق على ألبومات معينة';
+$lang['The name of an album must not be empty'] = 'لا يمكن ان  تبقي اسم الألبوم خالي';
+$lang['Lock albums'] = 'قفل الألبوم';
+$lang['Private'] = 'ألبوم خاص';
+$lang['Public'] = 'ألبوم عام';
+$lang['Find a new representant by random'] = 'اظهر  جديد التواصيف او التمثيل بطريقة عشوائية';
+$lang['Public / Private'] = 'العام/ الخاص';
+$lang['Manage authorizations for selected albums'] = 'ادارة  تصريح التعليقات على الألبومات';
+$lang['Virtual album added'] = 'الألبوم المضاف';
+$lang['Virtual album deleted'] = 'الألبوم المحذوف';
+$lang['Access type'] = 'طريقة الدخول';
+$lang['Information data registered in database'] = '     تم تحديث المعرض بنجاح  ';
+$lang['Default display'] = 'العرض الافتراضي';
+$lang['History'] = 'السجل';
+$lang['The gallery URL is not valid.'] = 'رابط المعرض غير صحيح';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'عدد التعليقات في الصفحة يجب أن تكون ما بين 5 و 50.';
+$lang['Configuration'] = 'التهيئة';
+$lang['confirm'] = 'تـأكيد';
+$lang['Date'] = 'التاريخ';
+$lang['delete album'] = 'حذف الألبوم';
+$lang['Dissociate from album'] = 'فصل من الألبوم';
+$lang['dissociate from group'] = 'فصل من المجموعه';
+$lang['Album updated successfully'] = 'تم تحديث معلومات الألبومات بنجاح منقط النظير.';
+$lang['photos per page'] = 'عدد في كل صفحة';
+$lang['High definition enabled'] = 'تمكين ابعاد الارتفاع';
+$lang['File'] = 'ملف';
+$lang['first photo added on %s'] = ' اول ما اضيف في  %s';
+$lang['Forbidden'] = 'ممنوع';
+$lang['global mode'] = 'النمط الشائع';
+$lang['group "%s" added'] = 'المجموعه  "%s"  أضيفت';
+$lang['group "%s" deleted'] = 'المجموعه  "%s"  جذفت';
+$lang['group "%s" updated'] = 'المجموعه  "%s"  تم تحميلها';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'لا تستخدم الترقيم "/" و لا تترك اسم المجموع فارغ';
+$lang['This name is already used by another group.'] = 'هذا الاسم مستخدم من قبل مجموعه أ×خرى.';
+$lang['High definition'] = 'ابعاد الارتفاع';
+$lang['jump to album'] = 'اغفز للمجموعة';
+$lang['jump to photo'] = 'اغفز للصورة';
+$lang['leave'] = 'تـَرك';
+$lang['Lock'] = 'قفل';
+$lang['Locked'] = 'مقفول';
+$lang['manage album photos'] = 'ادارةعناصر الألبوم';
+$lang['manage sub-albums'] = 'صور الألبوم الفرعي';
+$lang['Manage'] = 'إدارة';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = ' أستنفذت الوقت المتاح للتنفيذ وهو %d دقيقة';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'أستنفذت الوقت المتاح للتنفيذ وهو %d دقائق';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'الوقت المتاح لامراسلة قائمة المستخدمين محدود ،هناك متخدمين لم يتم اضافتهم في القائمة.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'الوقت للارسال محدود ، تم تجاهل بعض العناوين.';
+$lang['To send ?'] = 'إرسـال؟';
+$lang['Last send'] = 'الارسال الاخير';
+$lang['User'] = 'المستخدم';
+$lang['See you soon,'] = 'ستسعدنا جدا  زيارتك';
+$lang['Go to'] = 'يمكنك زيارتنا من خلال هذا الرابط ';
+$lang['Hello'] = 'السلام عليكم و رحمة الله و بركاته ';
+$lang['New photos were added'] = 'هناك صور جديدة في المعرض';
+$lang['on'] = 'صور واحدة جديدة ';
+$lang['between'] = ' بين ';
+$lang['and'] = ' و ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'تم اضافة بريدك لقائمة مراسلات المعرض ..لنعلمك بكل جديد ';
+$lang['You have subscribed to receiving notifications by mail.'] = 'نشكر لك ثقتك بنا .. تم اضافة بريدك  الى  قائمة  المراسلات  بنجاح';
+$lang['To subscribe'] = 'للاشتراك';
+$lang['If you encounter problems or have any question, please send a message to'] = 'إذا واجهتك اي مشكلة او كان لديك سؤال  أرسل فورا إلي ';
+$lang['[NBM] Problems or questions'] = '[NBM] مشكلةأو استفسار';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'تم الغاء بريدك من قائمة المراسلات .. و نحن جداآسفون لذلك';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'نأسف جدا لعدم تمكننا من خدمتك ..تم إلغاء بريدك  ';
+$lang[', click on'] = ', اضغط على ';
+$lang['To unsubscribe'] = 'لإلغاء الاشتراك';
+$lang['With blank value, gallery title will be used'] = 'القيمة فارغة ،عنوان المعرض سيستخدم';
+$lang['Notification'] = 'إدارة التبليغات';
+$lang['Error when sending email to %s [%s].'] = 'هناك خطأ عند الارسال الي %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'تم الارسل الي %s [%s].';
+$lang['%d mail was sent.'] = '%d تم ارسال البريد.';
+$lang['%d mails were sent.'] = '%d تم ارسال الرسائل .';
+$lang['%d mail was not sent.'] = '%d لم يتم الارسال.';
+$lang['%d mails were not sent.'] = '%d لم يتم ارسال الرسائل.';
+$lang['No mail to send.'] = 'البريد ليس موجود في قائمة المرسلات';
+$lang['There is no available subscribers to mail.'] = 'ليس هناك مشتركين للارسال.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'ممكنه لقائمة المشتركين فقط إذا كان مصرح لهم  بالعلم بمستجدات المعرض.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'متاح فقط لمسؤول المعرض المشاهدة.';
+$lang['No user to send notifications by mail.'] = 'لا يوجد مستخدمين للارسال.';
+$lang['New photos added'] = 'هناك صور جديدة في المعرض';
+$lang['Subscribe to notification by mail'] = ' تم اضافة بريدك';
+$lang['Unsubscribe from notification by mail'] = 'تم الغاء بريدك ';
+$lang['Parameter'] = 'نموذج الارسال';
+$lang['Continue processing treatment'] = 'معالجة المعاملة مسـتمرة';
+$lang['Complementary mail content'] = 'استكمال حساب البريد';
+$lang['Add detailed content'] = 'تم اضافة تفاصيل أخرى للحساب';
+$lang['Send mail as'] = 'أرسل بريد كـ ';
+$lang['Send mail to users'] = 'ارسل بريد للمستخدمين';
+$lang['Send'] = 'أرسل';
+$lang['Options'] = 'خيارات';
+$lang['Subscribed'] = 'مشترك';
+$lang['Subscribe'] = 'اشتـراك';
+$lang['Parameters'] = 'البارامترات';
+$lang['Select recipients'] = 'اختيار المستفيدين';
+$lang['Subscribe/unsubscribe users'] = 'اشتراك/الغاء اشتراك المستخدمين';
+$lang['Unsubscribed'] = 'الغاء الاشتراك';
+$lang['%d parameter was updated.'] = '%d تم تحديث البارامتر.';
+$lang['%d parameters were updated.'] = '%d البارمتر حُـدث.';
+$lang['%d user was not updated.'] = '%d المستخدم لم يتم تحديثه.';
+$lang['%d users were not updated.'] = '%d المستخدمين لم يتم تحديثهم.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'أسم المستخدم%s [%s] تم إزالة هذا البريد من قائمة المراسلات.';
+$lang['User %s [%s] was added to the subscription list.'] = 'بأسم : %s [%s] تم اضافة هذا البريد الي قائمة المراسلات.';
+$lang['%d user was updated.'] = '%d المستخدم تم تحديثه.';
+$lang['%d users were updated.'] = '%d تم تحديث قائمة المراسلات';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'المستخدم%s [%s] تم ازالة هذا البريد من قائمة المراسلات.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'المستخدم %s [%s] تم اضافة هذا البريد الى قائمة المراسلات.';
+$lang['User %s [%s] added.'] = 'المستخدم %s [%s]تم اضافة.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'تحذير : سيتم اعلام المشتركين باالاغلاء و الاشتراك';
+$lang['Send mail on HTML format'] = 'ارسال البريد بصيغة HTML';
+$lang['Include display of recent photos grouped by dates'] = 'تضمين عرض الصور الاخير حسب تاريخها';
+$lang['Available only with HTML format'] = 'متاح فقط بصيغة HTML';
+$lang['no write access'] = 'حرية التنفيذ مقيدة';
+$lang['Permissions'] = 'أذونات';
+$lang['private'] = 'خاص';
+$lang['public'] = 'العام';
+$lang['Purge never used notification feeds'] = 'عدم تسهيل استخدام التغذية الراجعه ';
+$lang['Purge sessions'] = 'تبسط او تسهيل الجلسات';
+$lang['randomly represented'] = 'تمثيل عشوائي';
+$lang['registration date'] = 'تاريخ التسجيل';
+$lang['clean'] = 'نظـيف';
+$lang['Create this site'] = 'عيّـن هذا الموقع';
+$lang['test'] = 'أختبار';
+$lang['test this remote site'] = 'اختبر هذا الموقع البعيد';
+$lang['remove tags'] = 'ازالة الكلمات الدلائلية';
+$lang['Repair and optimize database'] = 'اصلاح و تحسين قاعدة البيانات';
+$lang['selection'] = 'الاختيار';
+$lang['set to'] = 'أعـد لـ ';
+$lang['singly represented'] = 'نوصيف او تمثيل منفرد';
+$lang['This site already exists'] = 'هذا الموقع موجود بالفعل';
+$lang['created'] = 'تم الانشاء';
+$lang['delete'] = 'حـذف';
+$lang['delete this site and all its attached elements'] = 'احذف هذا الموقع بكل عناصره المرتبطه به';
+$lang['deleted'] = 'تم الحــذف يا عبد الله';
+$lang['an error happened'] = 'هناك خطأ ما';
+$lang['Local'] = 'محلي';
+$lang['Remote'] = 'البعيد';
+$lang['update the database from files'] = 'تحديث قاعدة البيانات من الملف';
+$lang['status'] = 'الحالة';
+$lang['Directory'] = 'الدليل';
+$lang['sub-albums'] = 'الألبوم الفرعي';
+$lang['Synchronize metadata'] = 'مزامنة البيانات الوصفية';
+$lang['target'] = 'الهـدف';
+$lang['Thumbnail'] = 'المــصغرة';
+$lang['Title'] = 'العنوان';
+$lang['Album list management'] = 'إدارة الألبومات';
+$lang['Piwigo configuration'] = 'تهيئة المعرض';
+$lang['Edit album'] = 'تحرير الألبوم';
+$lang['Group management'] = 'ادارة المجموعات';
+$lang['User list'] = 'قائمة المستخدم';
+$lang['Edit photo information'] = 'تعديل معلومات عن الصورة';
+$lang['Database synchronization with files'] = 'قاعدة بيانت المزامنة مع الملفات';
+$lang['all'] = 'الكل';
+$lang['height must be a number superior to'] = 'يجب عن يكون عدد الارتفاع يتعدى';
+$lang['width must be a number superior to'] = 'يجب ان يكون عدد العرض يتعدى';
+$lang['for the file format'] = 'لتنسيق الملف';
+$lang['Photo unreachable or no support'] = 'صور لا يمكن الوصول لها او لم تدعم';
+$lang['GD version'] = 'GD أصدار';
+$lang['General statistics'] = 'الاحصائيات العامة';
+$lang['average time'] = 'متوسط الوقت';
+$lang['number of miniaturized photos'] = 'عدد الصور المصغرة';
+$lang['total time'] = 'الوقت الكلي';
+$lang['for this file format'] = 'لتنسيق هذا الملف';
+$lang['unit mode'] = 'نمط موحد';
+$lang['Unlocked'] = 'غيرمقفل';
+$lang['unset'] = 'غير مهيأ';
+$lang['Update albums informations'] = 'تحديث ملعومات الألبومات';
+$lang['Update photos information'] = 'تحديث معلومات الصور';
+$lang['Synchronize'] = 'التزامن';
+$lang['reduce to single existing albums'] = 'تقليص الألبومات الحاليه';
+$lang['Choose an option'] = 'اختر واحد من الخيارات';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'الحد الاقصى لعرض الملعومات (حذف ،اضافة صور او ألبومات)';
+$lang['Error list'] = 'خطأ في القائمة';
+$lang['Errors caption'] = 'أخطاء في الايجاد';
+$lang['Detailed informations'] = 'ملعومات محذوفة';
+$lang['File/directory read error'] = 'خطأ في قراءة ملف/دليل';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'ملف أو دليل لا يمكن الوصول إليها (أي أنه لا وجود لها ، أو منعوا من الدخول)';
+$lang['albums deleted in the database'] = 'الألبومات محذوفة من قاعدة البيانات';
+$lang['photos deleted from the database'] = 'الصور محذوفة من قاعدة البيانات';
+$lang['photos candidates for metadata synchronization'] = 'تزامن المعلومات التفصيلة للصور المرشحه';
+$lang['photos informations synchronized with files metadata'] = 'ملعومات الصور متزامنة مع المعلومات التفصيلة للصور';
+$lang['errors during synchronization'] = 'أخطاء اثناء التزامن';
+$lang['albums added in the database'] = 'ألبومات اضيفت في قاعدة البيانات';
+$lang['photos added in the database'] = 'صور اضيفت في قاعدة البيانات';
+$lang['photos updated in the database'] = 'تم تحديث الصور في قاعدة البيانات';
+$lang['Search for new images in the directories'] = 'البحث عن صور جديدة في الألبومات';
+$lang['added'] = 'تمت الاضافة';
+$lang['deleted'] = 'تم الحذف للاسف الشديد';
+$lang['Metadata synchronization results'] = 'نتائج تزامن المعلومات التفصيلية';
+$lang['only perform a simulation (no change in database will be made)'] = 'اداة للمحاكاة فقط (لن يتم أي تغير في قاعدة البيانات)';
+$lang['Simulation'] = 'محاكات';
+$lang['directories + files'] = 'مجلدات + ملفات';
+$lang['only directories'] = 'فقط المجلدات';
+$lang['synchronize files structure with database'] = 'مزامنة الملفات مع هيكل قاعدة البيانات';
+$lang['synchronize files metadata with database photos informations'] = 'مزامنة الملعومات التفصيلة مع الصور الموجودة في قاعدة البيانات';
+$lang['even already synchronized photos'] = 'سبق التزامن مع الصور';
+$lang['Used metadata'] = 'معومات التفصيلة مُـستخدمة';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'اسم الأدلة والملفات يجب أن تكون مكونة من الحروف والأرقام ، "--" ، "_" أو "."';
+$lang['wrong filename'] = 'خطأ فادح  في اسم الملف';
+$lang['Upload'] = 'تحميل';
+$lang['user "%s" added'] = ' تم اضافة المستخدم"%s"  بنجاح';
+$lang['User status'] = 'حالة المستخدم';
+$lang['user_status_admin'] = 'مدير عام';
+$lang['user_status_generic'] = 'عام';
+$lang['user_status_guest'] = 'ضيف محترم';
+$lang['user_status_normal'] = 'مستخدم';
+$lang['user_status_webmaster'] = 'مسؤول الموقع';
+$lang['Virtual album'] = 'ألبوم افتراضي';
+$lang['Waiting'] = 'تحت الانتظار';
+$lang['default'] = 'افتراضي';
+$lang['Toggle \'default group\' property'] = 'ترجيح \'مجموعة افتراضية\' الخصوصية';
+$lang['Advanced features'] = 'مميزات متقدمة';
+$lang['Overall'] = 'اجماليا';
+$lang['Year'] = 'سنة';
+$lang['Month'] = 'شهر';
+$lang['Day'] = 'يوم';
+$lang['Pages seen'] = 'صفحة مشاهده';
+$lang['Time'] = 'الوقت';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'عنصر';
+$lang['Section'] = 'القسم';
+$lang['An information email was sent to group "%s"'] = 'معلومات تم ارسالها الي المجموعة "%s';
+$lang['Send an information email to group members'] = 'أرسل الملعومات الي أعضاء المجموعة';
+$lang['Group'] = 'مجموعه';
+$lang['[%s] Visit album %s'] = 'ألبوم تم تحديثه [%s]';
+$lang['Hello,'] = '  السلام عليكم و رحمة الله و بركاته,';
+$lang['See you soon.'] = 'زيارتك للمعرض تعني لي الكثير ..';
+$lang['Discover album:'] = ' البوم يحتوي صور جديدة :';
+$lang['Mail content'] = 'محتوى البريد';
+$lang['none'] = 'لا شيء';
+$lang['high'] = 'الارتفاع';
+$lang['other'] = 'آخــر';
+$lang['Element type'] = 'نوع العنـصر';
+$lang['Image id'] = 'هوية الصورة';
+$lang['Summary'] = 'ملخص';
+$lang['%d line filtered'] = '%d خط مـُرشح';
+$lang['%d lines filtered'] = '%d خطوط مُـرشح';
+$lang['%d guest'] = '%d ضيف كريم';
+$lang['%d guests'] = '%d ضيوف كرام';
+$lang['Hour'] = 'سـاعـة';
+$lang['guest'] = 'ضيف';
+$lang['default values'] = 'قيم أفتراضية';
+$lang['Guest cannot be deleted'] = 'هل انت جاد بطرد الضيف و حذفه (لايمكن ذلك)';
+$lang['Default user cannot be deleted'] = 'المستخدم الافتراضي لا يمكن حذفه';
+$lang['Purge history detail'] = 'معالجة تفاصيل السجل';
+$lang['Purge history summary'] = 'معالجة ملخص التفاصيل';
+$lang['Check integrity'] = 'فحص سلامة المراقبة';
+$lang['Anomaly'] = 'شـاذ';
+$lang['Correction'] = 'التصحيح';
+$lang['Automatic correction'] = 'تصحيح تلقائي';
+$lang['Impossible automatic correction'] = 'استحالة التصحيح التلقائي';
+$lang['Correction applied with success'] = 'تم التصحيح بنجاح منقطع التظير';
+$lang['Correction applied with error'] = 'لم يتم التحصيح هناك خطأ ما';
+$lang['%d anomaly has been detected.'] = '%d تم العثور على شذوذ .';
+$lang['%d anomalies have been detected.'] = '%d تم اكتشاف حالات شاذة.';
+$lang['%d anomaly has been corrected.'] = '%d تم تصحيح الحالة الشاذة.';
+$lang['%d anomalies have been detected corrected.'] = '%d تم تصحيح الحالات الشاذة.';
+$lang['%d anomaly has not been corrected.'] = '%d للاسف لم يتم تصحيح الحالة الشاذة.';
+$lang['%d anomalies have not been corrected.'] = '%d أوه..لم يتم تصحيح الحالات الشاذة.';
+$lang['Go to %s or %s for more informations'] = 'أذهب الي %s أو %s لمزيد من المعلومات';
+$lang['the forum'] = 'النـموذج';
+$lang['the wiki'] = 'the wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s القيم غير صحيح لانه exif غير مدعوم';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s لابد ان هناك فشل ما في ملف config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'الرئيسية "ضيفا" المستخدم غير موجود';
+$lang['Main "guest" user status is incorrect'] = 'حالة المستخدم غير صحيح';
+$lang['Default user does not exist'] = 'المستخدم الافتراضي غير صحيح';
+$lang['Main "webmaster" user does not exist'] = 'الرئيسية "مدير الموقع"غير موجود';
+$lang['Main "webmaster" user status is incorrect'] = 'الرئيسية حالة مدير الموقع " غير موجودة';
+$lang['User "%s" created with "%s" like password'] = 'المستخدم "%s" أنشأ مع  "%s" مثل كلمة المرور';
+$lang['Status of user "%s" updated'] = 'تم نحديث حالة المستخدم"%s" ';
+$lang['add new photos to caddie'] = 'اضف صور جديدة الى السلة';
+$lang['No display'] = 'لم يعرض';
+$lang['Classic display'] = 'عرض عادي';
+$lang['Hoverbox display'] = 'عرض مربعات عائمة';
+$lang['Mail address is obligatory for all users'] = 'عنوان البريد الإلكتروني إلزامي لجميع المستخدمين';
+$lang['Minimum privacy level'] = 'الحد الأدنى لمستوى الخصوصية';
+$lang['Privacy level'] = 'مستوى الخصوصية';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'متصلين';
+$lang['Level 2'] = 'اصدقاء';
+$lang['Level 4'] = 'العائلة';
+$lang['Level 8'] = 'مدراء';
+$lang['Reinitialize check integrity'] = 'اعادة فحص السلامة';
+$lang['Check all'] = 'أختر الجميع';
+$lang['Uncheck all'] = 'إلغاء الاختيار';
+$lang['Check automatic corrections'] = 'فحص وتصحيح آلي';
+$lang['Apply selected corrections'] = 'تطبيق التصحيح على البنود المختارة';
+$lang['Ignore selected anomalies'] = 'تجاهل اختيار المفارقات';
+$lang['Refresh'] = 'إنعاش';
+$lang['The anomaly will be ignored until next application version'] = 'سيتم تجاهل الشذوذ في النسخ القادمة';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'تصحيح وضع شاذ سيلغي أنه\'s متجاهل';
+$lang['%d anomaly has been ignored.'] = '%d تم تجاهل هذا الشيئ الشاذ.';
+$lang['%d anomalies have been ignored.'] = '%d تم تجاهل هذه الحلات الشاذه.';
+$lang['Plugins which need upgrade'] = 'اضافات تحتاج لتحديث';
+$lang['Plugin list'] = 'قائمة الاضافات';
+$lang['Check for updates'] = 'فحص للتحديث';
+$lang['Other plugins'] = 'اضافات أخرى';
+$lang['Last revisions'] = 'الاصدارت الاخيرة';
+$lang['Are you sure you want to delete this plugin?'] = 'هل انت متأكد من حذف هذه الاضاة?';
+$lang['Are you sure you want to install this plugin?'] = 'هل تريد فعلا تثبيت هذه الاضافة?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'هل فعلا تريد ترقية هذا التحديث ؟ قد تحتاج ان تتأكد انك لن تحتاج لعلمية الغاء التنصيب.';
+$lang['Plugin has been successfully copied'] = 'تم نسخ الاضافة الجديدة بنجاح';
+$lang['You might go to plugin list to install and activate it.'] = 'ينبقي عليك تفعيلها من قائمة الاضافات.';
+$lang['Can\'t create temporary file.'] = 'يمكن\'لا انشاء ملف مؤقت.';
+$lang['Can\'t download archive.'] = 'يمكن\'لا تحميل الارشيف.';
+$lang['Can\'t read or extract archive.'] = 'يمكن\'لا قراءة او استخراج الارشيف.';
+$lang['An error occured during extraction (%s).'] = ' (%s)حدث خطأ أثناء استخراج';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'ارجوا فحص "الاضافات" المجلدو المجلد الفرعي (CHMOD).';
+$lang['Can\'t connect to server.'] = 'يمكن\'لا الاتصال بالخادم.';
+$lang['Purge compiled templates'] = 'معالجة جميع النماذج';
+$lang['ACCESS_0'] = 'حرية الوصول';
+$lang['ACCESS_1'] = 'الوصول للجميع';
+$lang['ACCESS_2'] = 'للمشتركين فقط';
+$lang['ACCESS_3'] = 'للمدراء';
+$lang['ACCESS_4'] = 'لمدير الموقع';
+$lang['ACCESS_5'] = 'ليس لاحد';
+$lang['Support'] = 'الدعم الفني';
+$lang['Documentation'] = 'الوثائق';
+$lang['A new version of Piwigo is available.'] = 'هناك نسخة جديدة من Piwigo متاحة.';
+$lang['Piwigo Administration'] = 'Piwigo الإدارة';
+$lang['Piwigo version'] = 'Piwigo الاصدار';
+$lang['You are running the latest version of Piwigo.'] = 'انت تستعمل آخر نسخة من سكبرت المعرض .';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'اصدار الـ %s [%s] ليس متوافق من تنسيق الاصدار المطلوب[%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'انت بحاجة لتطوير النظام للتمع بكل امتيازات هذا البرنامج او انك لن تتمكن من تشغيل البرنامج على الاطلاق';
+$lang['Deleted on'] = 'محذزف';
+$lang['Last hit'] =  'النقرة الاخيرة';
+$lang['GD library is missing'] = '  مفقودة GD مكتبة ';
+$lang['Templates'] = 'النماذج';
+$lang['Extend for templates'] = 'توسيع النماذج';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'استبدال النماذج الأصلية من خلال نماذج من قالب مخصص في المجلد الفرعي';
+$lang['Replacers (customized templates)'] = 'تبديل(نماذج مخصصة)';
+$lang['Original templates'] = 'نماذج اصلية';
+$lang['Optional URL keyword'] = 'الكلمات الاساسية URL خيارات';
+$lang['Templates configuration has been recorded.'] = 'تم تسجيل قاولب التشكيل';
+$lang['All optimizations have been successfully completed.'] = 'تمت عملية التحسينات بنجاح.';
+$lang['Optimizations have been completed with some errors.'] = 'اكتملت عملية التحسين مع';
+$lang['Modify information'] = 'تعديل المعلومات';
+$lang['nothing'] = 'لا شيء';
+$lang['overrides existing values with empty ones'] = 'استبدل القيم الموجودة بقيم فارغة';
+$lang['Manage photo ranks'] = 'إدارة ترتيب الصور';
+$lang['Edit ranks'] = 'تحرير الترتيب';
+$lang['No photo in this album'] = 'لا يوجد صور في الالبوم';
+$lang['Images manual order was saved'] = 'تم حفظ الصور المطلوبة يديويا';
+$lang['ranks'] = 'الترتيب';
+$lang['Drag to re-order'] = 'أسحب لتغيير';
+$lang['Quick Local Synchronization'] = 'فحص سريع للمستجدات';
+$lang['No photo can be deleted'] = 'لا صور يمكن حذفها';
+$lang['Delete selected photos'] = 'حذف الصورالمختارة';
+$lang['%d photo was deleted'] = ' صورة محذوفة %d';
+$lang['%d photos were deleted'] = ' صور محذوفة %d';
+$lang['Downloads'] = 'تنزيل';
+$lang['Released on'] = 'Released on تمكين استخدام';
+$lang['Number of downloads'] = 'عدد التنزيلات';
+$lang['Piwigo Announcements Newsletter'] = 'اعلانات Piwigo الإخبارية';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'البقاء على اتصال مع Piwigo المشروع ، الاشتراك في النشرة Piwigo إعلان. سوف تتلقى رسائل البريد الإلكتروني عندما يتوفر الإصدار الجديد (في بعض الأحيان بما في تثبيت الأمن علة ، / / من المهم معرفة والارتقاء) ، وعندما يحدث الأحداث الرئيسية لهذا المشروع. سوى عدد قليل من الرسائل الإلكترونية في السنة.';
+$lang['Subscribe %s'] = ' %s اشتراك ';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'اشترك  %s لـ اعلانات Piwigo الإخبارية';
+$lang['Purge search history'] = 'معالجة احصائيات البحث';
+$lang['Hide'] = 'أخفاء';
+$lang['Menu Management'] = 'القائمة الرئيسية';
+$lang['Operation in progress'] = 'معالجة العرض';
+$lang['Please wait...'] = 'لحظات الانتظار أشغلها بالإستغفار ..';
+$lang['By rank'] = 'حسب المنزلة';
+$lang['Manual order'] = 'دليل النظام';
+$lang['Password is missing. Please enter the password.'] = 'لم تكتب كلمة المرور، فضلا ً أكتب كلمة المرور';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'لم يتم تأكيد كلمة المرور، فضلا ً لا أمر أكد المرور رحم الله والديك';
+$lang['Allow users to edit their own comments'] = 'اسمح للمستخدم بتحريرتعليقه الخاص';
+$lang['Allow users to delete their own comments'] = 'اسمح للمستخدم بحذف تعليقه الخاص';
+$lang['Email administrators when a comment is modified'] = 'ابلغ المديرعن تعديل التعليم ';
+$lang['Email administrators when a comment is deleted'] = 'ابلغ المدير عند حذف تعليق عن طريق البريد';
+$lang['Cannot delete the old permalink !'] = 'الروابط الدائمة و القديمة لا يمكن حذفها';
+$lang['Hit'] = 'نقرة';
+$lang['Tools'] = 'أدوات';
+$lang['Photos'] = 'الصور';
+$lang['Themes'] = 'واجهة العرض';
+$lang['Instructions to use Piwigo'] = 'دليل استخدام Piwigo';
+$lang['Installed Themes'] = 'تثبيت واجهات العرض';
+$lang['Add New Theme'] = 'اضف واجهة جديدة';
+$lang['Forbid this theme to users'] = 'امنع هذه الواجهة عن المستخدمين';
+$lang['Set as default theme for unregistered and new users'] = 'اجعلها كواجهة افتراضية لغير المسجلين و المستخدمين الجدد';
+$lang['unknown'] = 'غير معروف';
+$lang['Upload Photos'] = 'رفع الصور';
+$lang['Drop into album'] = 'اتركها داخل الالبوم';
+$lang['+ Add an upload box'] = '+ اضف عن طريق برنامج الرفع';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'إنشاء "%s" دليل على جذر التثبيت الخاص Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'اعطي تصريح الكتابة (chmod 777) على مجلد "%s" الذي ثبت فيه المعرض  ';
+$lang['existing album'] = 'الالبومات الموجودة';
+$lang['create a new album'] = 'انشأ ألبوم جديد ';
+$lang['Album name'] = 'أسم الألبوم';
+$lang['Album "%s" has been added'] = 'تم اضافته"%s"الألبوم ';
+$lang['Uploaded Photos'] = 'رفع الصور';
+$lang['%d photos uploaded'] = 'صور تم رفعها %d';
+$lang['Privacy level set to "%s"'] = '"%s"اعد مستوى الخصوصية ';
+$lang['Album "%s" now contains %d photos'] = ' الألبوم "%s" يحوي الآن %d صورة ';
+$lang['Manage this set of %d photos'] = '%d إدارة اعدادت صور';
+$lang['Select files'] = 'اختيار الملفات';
+$lang['Everybody'] = 'الجميع';
+$lang['Who can see these photos?'] = 'من يمكنه رؤية هذه الصور';
+$lang['Who can see this photo?'] = 'من يمكنه رؤية هذه الصورة؟';
+$lang['Settings'] = 'الإعدادت';
+$lang['Resize'] = 'تغيير المقاس';
+$lang['Maximum width'] = 'الحد الأعلى لعرض الصورة';
+$lang['pixels'] = 'بكسل ';
+$lang['Maximum height'] = 'الحد الاعلى لطول الصورة';
+$lang['Image Quality'] = 'جودة الصورة';
+$lang['Save Settings'] = 'حفظ الإعدادات';
+$lang['Your configuration settings are saved'] = 'تم حفظ الإعدادت ';
+$lang['Active Themes'] = 'تنشيط الواجهة';
+$lang['Add write access to the "%s" directory'] = ' "%s" اعطي تصريح الوصول و الكتابة على المجلد ';
+$lang['Administration Home'] = 'الأدارة الرئيسية';
+$lang['Change Admin Colors'] = 'تغير ألوان لوحة التحكم';
+$lang['Delete this theme'] = 'أحذف هذه الواجهة';
+$lang['Directory does not exist'] = 'المجلد غير موجود';
+$lang['Download,'] = ',تحميل';
+$lang['FTP + Synchronization'] = 'أف تي بي + التزامن ';
+$lang['Get Support on Piwigo Forum'] = 'أحصل على الدعم الفني من منتدى Piwigo';
+$lang['Help Me'] = 'ساعدني';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = ' %s لا يمكن تفعيل هذه الواجهة شيء ما مفقود ';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = ' %sلا يمكن حذف هذه الواجهة لرتباطها  بأشياء أخرى : ';
+$lang['Inactive Themes'] = 'الواجهات المفعلة';
+$lang['Install on your computer,'] = 'التثبيب على جهاز الكمبيوتر,';
+$lang['Make this theme available to users'] = 'أجعل هذه الواجهة متاحة للمستخدمين';
+$lang['Page end'] = 'نهاية الصفحة';
+$lang['Piwigo Uploader'] = 'برنامج piwigo للتحميل الصور';
+$lang['Read Piwigo Documentation'] = 'وثائق عن Piwigo';
+$lang['Start pLoader and add your photos.'] = 'بدء pLoader وإضافة الصور الخاصة بك.';
+$lang['Switch to clear or dark colors for administration'] = 'تغير لون لوحة التحكم أسود أو ابيض';
+$lang['Theme has been successfully installed'] = 'تم تثبيت واجهة المعرض بنجاح';
+$lang['Visit Gallery'] = 'معاينة المعرض';
+$lang['Visit Piwigo project website'] = 'زيارة الموقع الرئيسي لمشروع Piwigo ';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader اعتمد على <em>Piwigo Uploader</em>. من الكمبيوتر ، pLoader تستعد صورك وتحويلها الى معرض الصور الخاص بك Piwigo.';
+$lang['Guest Settings'] = 'اعدادت الضيوف';
+$lang['Main Page'] = 'صفحة رئيسية';
+$lang['Photo Page'] = 'صفحة الصورة';
+$lang['Activate Navigation Bar'] = 'اظهار لوح تبديل و اظهار الصور';
+$lang['Activate Navigation Thumbnails'] = 'تنشيط امكانية المشاهدة عن طريق المصغرات أسف صفحة الصورة';
+$lang['Activate icon "%s"'] = 'اظهار ايقونة  "%s"';
+$lang['Photo Properties'] = 'خصائص الصور';
+$lang['Allow user customization'] = 'السماح للمستخدم بتغيير خصائص العرض';
+$lang['Languages'] = 'اللغة';
+$lang['Installed Languages'] = 'تثبيت لغة';
+$lang['Add New Language'] = 'اضف لغة جديدة';
+$lang['Language has been successfully installed'] = 'تم تثبيت اللغة بنجاح';
+$lang['Select:'] = 'أختيار:';
+$lang['None'] = 'لا شيء';
+$lang['Invert'] = 'عكس';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'لا يمكن حذف الواجهة لانها الأخيرة ، لابد من وجود واجهة واحدة ';
+$lang['Webmaster status is required.'] = 'تم تغير حالة المدير العالم .';
+$lang['Bound Theme'] = 'واجهة إلزامية';
+$lang['Allow rating'] = 'السماح بالتوصويت';
+$lang['Select at least one comment'] = 'أختر تعليقا واحدا على الأقل';
+$lang['Active Plugins'] = 'تنشيط الإضافات';
+$lang['Inactive Plugins'] = 'تعطيل الإضافات';
+$lang['Missing Plugins'] = 'إضافات مفقودة';
+$lang['Uninstalled Plugins'] = 'اضافات غير مثبته';
+$lang['By %s'] = ' %s بواسطة';
+$lang['Visit plugin site'] = 'زيارة موقع الاضافة';
+$lang['Active Languages'] = 'تنشيط اللغة';
+$lang['Delete this language'] = 'اخذف هذه اللغة';
+$lang['Forbid this language to users'] = 'أمنع هذه اللغة عن المستخدمين';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'لا يمكن تعطيل هذه اللغة ، أولا ً قم باختيار لغة أخرى كلغة افتراضية';
+$lang['Impossible to deactivate this language, you need at least one language.'] = ' لا يمكن تعطيل هذه اللغة ، يجب اختيار لغة واحدة على الأقل';
+$lang['Inactive Languages'] = 'تعطيل اللغات';
+$lang['Make this language available to users'] = 'اجعل هذه اللغة متاحة للمستخدمين';
+$lang['Set as default language for unregistered and new users'] = 'اجعلها كلغة افتراضية لغير المسجلين و المستخدمين الجدد';
+$lang['Add Photos'] = 'أضف صور';
+$lang['The following tag was deleted'] = 'هذه الكلمات الدلائلية حُـذفت';
+$lang['Miscellaneous'] = 'متفرقات';
+$lang['Virtual Links'] = 'روابط ظاهرة';
+$lang['There is no other language available.'] = 'ليس هناك لغة أخرى متاحة.';
+$lang['There is no other plugin available.'] = 'ليس هناك اضافة أخرى متاحة.';
+$lang['There is no other theme available.'] = 'ليس هناك واجهة عرض أخرى متاحة.';
+$lang['Add another set of photos'] = 'اضف مجوعة أخرى من الصور';
+$lang['Order of menubar items has been updated successfully.'] = 'تم تحديث ترتيب العناصر بنجاح';
+$lang['This theme was not designed to be directly activated'] = 'لم يتم تصميم هذه الواجهة لتفعيلها مباشرة';
+$lang['Pending Comments'] = 'تعليقات تحت الانتظار';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'ملف PHP.ini the upload_max_filesize (%sB) أكبر منpost_max_size (%sB), يتوجب عليك تغير الاعدادت';
+$lang['Exif extension not available, admin should disable exif use'] = 'خاصية Exif غير متاحة ، ينبغي على المدير تعطيلها';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'الملف الذي تم تحميله يتجاوز upload_max_filesize  مباشرة في php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'الملف الذي تم تحميلة يتجاوز post_max_size مباشرة في php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'الملف الذي تم تحميلة يتجاور  MAX_FILE_SIZE التوجيه الذي تم تحديده في شكل أتش تي أم أل';
+$lang['The uploaded file was only partially uploaded'] = 'الملف الذي رُفع ، تم رفه جزئيا ً ';
+$lang['No file was uploaded'] = 'لم يتم رفع الملفات';
+$lang['Missing a temporary folder'] = 'مجلد الملفات المؤقته مفقود';
+$lang['Failed to write file to disk'] = 'فشل في كتابة الملف للقرص';
+$lang['File upload stopped by extension'] = 'تم يقاف رفع الملفات بسبب امتداد الملفات';
+$lang['Unknown upload error'] = 'خطأ غير معروف في رفع الملفات';
+$lang['Error on file "%s" : %s'] = ' "%s" : %s خطأ في الملف';
+$lang['automatic order'] = 'ترتيب آلي';
+$lang['manual order'] = 'ترتيب يدوي';
+$lang['Albums automatically sorted'] = 'ترتيب الألبومات آليا ً ';
+$lang['Batch Manager'] = 'دعم المدير';
+$lang['include child albums'] = 'تضمين الالبومات الفرعية';
+$lang['Selection'] = 'الاختيار';
+$lang['Action'] = 'الأداء';
+$lang['Set author'] = 'تعيين كاتب';
+$lang['Set title'] = 'تعيين عنوان';
+$lang['Set creation date'] = 'تعين تاريخ الأنشاء';
+$lang['Apply action'] = 'تطبيق الأجراءات';
+$lang['on the %d selected photos'] = 'تم اختيار الصور  %d في ';
+$lang['%d of %d photos selected'] = '%d من %d اختيار الصور';
+$lang['No photo selected, %d photos in current set'] = 'لم يتم اختيار صوره, %d صور في المجموعة الحالية';
+$lang['All %d photos are selected'] = 'كل %d الصور المختارة ';
+$lang['remove this filter'] = 'ازل هذه المرشح';
+$lang['Duplicates'] = 'المكرر';
+$lang['Add a filter'] = 'أضف مُـرشح';
+$lang['Remove all filters'] = 'احذف جميع المُرشحات';
+$lang['Refresh photo set'] = 'حدث مجموعة الصور';
+$lang['The whole page'] = 'صفحة كاملة';
+$lang['The whole set'] = 'مجموعة كلمة';
+$lang['No photo in the current set.'] = 'لا صور في المجموعة الحالية';
+$lang['No photo selected, no action possible.'] = 'لا توجد صور محددة ، أي إجراء ممكن';
+$lang['Choose an action'] = 'اختر اجراء';
+$lang['remove author'] = 'احذف الكاتب';
+$lang['Type here the author name'] = 'أكتب هنا أسم الكاتب ';
+$lang['remove title'] = 'احذف العنوان';
+$lang['Type here the title'] = 'أكتب هنا عنوان ';
+$lang['remove creation date'] = 'احذف تاريخ الانشاء';
+$lang['Album photos associated to the following albums: %s'] = 'صور الالبوم المرتبطة بالابومات اللاحقة : %s';
+$lang['Delete orphan tags'] = 'جذف الاكواد اليتيمة';
+$lang['delete photo'] = 'حذف صورة';
+$lang['Orphan tags deleted'] = 'الاكواد اليتيمة حذفت';
+$lang['Remove from caddie'] = 'حذف من السلة';
+$lang['Week starts on'] = 'يبدأ الاسبوع بيوم';
+$lang['You have %d orphan tags: %s.'] = 'يوجد %d اكواد يتيمة :%s';
+$lang['Themes which need upgrade'] = 'الثيمات التي تحتاج الى تحديث';
+$lang['Languages which need upgrade'] = 'اللغات التي تحتاج الى تحديث';
+$lang['All themes are up to date.'] = 'كل الثيم محدثة';
+$lang['All plugins are up to date.'] = 'كل الادوات محدثة';
+$lang['All languages are up to date.'] = 'كل اللغات محدثة';
+$lang['Visit theme site'] = 'زر موقع الثيمات';
+$lang['Visit language site'] = 'زر موقع اللغات';
+$lang['New Version'] = 'اصدار جديد';
+$lang['Obsolete Plugins'] = 'ادوات قديمة';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'تحذير !! هذه الاضافة لا تبدو ناها متوافقة مع اصدار PIWIGO.';
+$lang['Do you want to activate anyway?'] = 'هل تريد تفعيلها بأي شكل تفعيلها';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'هذه الاداة اصبحت جزءا من PIWIGO نفسها يجب ان تزيلها الان';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'خطأ : هذه الاداة مفقودة لكنها مثبتة, الغ تثبيتها الان';
+$lang['new'] = 'جديد';
+$lang['No results'] = 'لا نتائج';
+$lang['Searching...'] = 'جاري البحث ..';
+$lang['Type in a search term'] = 'اكتب كلمات البحث';
+$lang['display'] = 'عرض';
+$lang['Learn more'] = 'تعلم أكثر';
+$lang['An error has occured during upgrade.'] = 'حصل خطأ ما أثناء الترقية.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'حدث خطأ أثناء الأستخراج. يرجى التحقق من أذونات الملفات من التثبيت piwigo الخاص.<br><a href="%s">اضغط هنا لإظهار الخطأ</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'لا يمكن Piwigo استرداد ملف الترقية من الملقم';
+$lang['Rate'] = 'قيمة';
+$lang['Average rate'] = 'متوسط التصويت';
+$lang['Update Complete'] = 'اكتملت الترقية';
+$lang['Piwigo Update'] = 'ترقية Piwigo';
+$lang['Extensions Update'] = 'ترقية الاضافات';
+$lang['Update in progress... Please wait.'] = 'يتم معالجة التحديثات ،لحظات الانتظار .. املئها بالاستغفار';
+$lang['Ignore this update'] = 'اهمال هذا التحديث';
+$lang['Reset ignored updates'] = 'اعادة تعييين التحديثات المهملة';
+$lang['Update All'] = 'تجديث الكل';
+$lang['ERROR'] = 'خطأ';
+$lang['All extensions are up to date.'] = 'كل الاضافة محدثة.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'الادوات التالية يمكن ان تكون غير متوافقة مع الاصدار الجديد ل Piwigo :';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'الثيمات التالية يمكن ان تكون غير مكتملة مع الاصدار الجديد ل Piwigo:';
+$lang['I decide to update anyway'] = 'أقر التحديث بأي شكل';
+$lang['Update to Piwigo %s'] = ' Piwigo %s الترقية إلى ';
+$lang['Two updates are available'] = 'هناك ترقيتان متاحة';
+$lang['This is a minor update, with only bug corrections.'] = 'هذه ترقية ثانوية لتصحيح بعض الأخطاء.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'هذه تحديثات رئيسية مع <a href="%s"> ملحقات جديدة و مميزة</a>.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'تستطيع ترقية Piwigo إلى %s مباشرة ، بدون  تحديث Piwigo إلى %s (مستحسن )';
+$lang['Dump Database'] = 'تفريغ قاعدة البيانات';
+$lang['Save Template Directory'] = 'حفظ نماذج الدليل';
+$lang['Some themes and plugins may be not available yet.'] = 'بعض الواجهات مع بعض الإضافات قد لا يمكن تشغليها في الوقت الحالي';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'تضمين تاريخ البيانات (تنبيه:يجب توسيع ذاكرة الخادم)ـ';
+$lang['Unable to dump database.'] = 'غير قادرعلى تفريق قاعدة البيانات.';
+$lang['Some upgrades are available for extensions.'] = 'تتوفر بعض الترقية للاضافات';
+$lang['Height'] = 'الارتفاع';
+$lang['Width'] = 'العرض';
+$lang['Add to caddie'] = 'اضفها الي السلة';
+$lang['%s has been successfully updated.'] = '
+%s تم تحديثه بنجاح ';
+$lang['%s photos can not be regenerated'] = '%s لا يمكن تجديد الصور';
+$lang['%s photos have been regenerated'] = '%s تم تجديد الصور';
+$lang['(this tag will be deleted)'] = '( الكلمه الدلاذليه سيتم حذفها )';
+$lang['... or '] = '..آو';
+$lang['Add a criteria'] = 'إضافة معايير';
+$lang['Add tags'] = 'إضافه كلمات دلائليه';
+$lang['Allowed file types: %s.'] = ' %s :انواع ملفات الصور المسموح بها ';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'الحد الاقصى التقريبي لدقه العرض: %dM بكسلات (هكذا  %dx%d بكسلات).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'افتراضياً سيتم انشاء معرض Piwigo بالقيم عاليه الدقه من صوزك';
+$lang['Confirm merge'] = 'تأكيد الدمج';
+$lang['Create'] = 'انشأ';
+$lang['Crop'] = 'اعاده قص';
+$lang['Deactivate all'] = 'تعطيل الكل';
+$lang['Default photos order'] = 'طلب القيم الافتراضيه للصور';
+$lang['Follow Orientation'] = 'اتبع التوجيهات';
+$lang['Graphics Library'] = 'مكتبة الرسومات';
+$lang['hide details'] = 'اخفاء التفاصيل';
+$lang['Ignore All'] = 'تجاهل الكل';
+$lang['Last import'] = 'الاستيراد الاخير';
+$lang['Manage Permissions'] = 'اداره التصاريح';
+$lang['Activate comments'] = 'فعل التعليقات';
+$lang['Activate icon "new" next to albums and pictures'] = 'فعل ايقونه "جديد" بجانب الالبومات و الصور';
+$lang['Default comments order'] = 'الوضع الافتراضي للتعليقات';
+$lang['Maximum file size: %sB.'] = 'الحد الآعلى لحجم الملف : %sB. ';
+$lang['Merge selected tags'] = 'دمج الكلمات الدلائليه المختاره';
+$lang['Merge tags'] = 'دمج الكلمات الدلائليه';
+$lang['Photo %s of %s'] = 'صوره %s من %s';
+$lang['Photo name'] = 'آسم الصوره ';
+$lang['Photos generation in progress...'] = 'يتم معالجة  مجموعه الصور ..';
+$lang['Restore'] = 'استعاده';
+$lang['Select an album'] = 'اختيار الالبوم';
+$lang['Select at least two tags for merging'] = 'اختر آخر كلمتين دلاليتين للدمج';
+$lang['A locked gallery is only visible to administrators'] = 'غلق المعرض متاح لمديرالمعرض فقط';
+$lang['administrators'] = 'الأدارة';
+$lang['Applications'] = 'تطبيقات';
+$lang['apply automatic sort order'] = 'نفذ حسب الترتيب الآلي';
+$lang['Automatic sort order'] = 'ترتيب آلي ';
+$lang['Available on'] = 'متاح لـ';
+$lang['Available versions for'] = 'الإصدارات المتاحه لـ';
+$lang['cancel manual order'] = 'إلغي الأمر اليدوي';
+$lang['Cancel'] = 'إلغي';
+$lang['Center of interest'] = 'مركز الإهتمام';
+$lang['Gallery unlocked'] = 'تم فتح المعرض';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'إذا لم تكن هناك جوده عالية متاحة وكانت الإعدادات الحالية  أكبر من الأبعاد,سيقوم المعرض بتقليص الصورة  بما يناسب ابعاد صفحة الويب';
+$lang['List'] = 'آخر';
+$lang['modified'] = 'تعديل';
+$lang['Move to album'] = 'حرك إلى الألبوم';
+$lang['No destination tag selected'] = 'لم يتم تحديد كلمات دلائلية مستهدفه';
+$lang['Not cropped correctly?'] = 'الإقتطاع غير صحيح؟';
+$lang['Notify administrators when a comment is'] = 'أبلغ المدير عندالتعليق';
+$lang['Original Size'] = 'الحجم الأصلي';
+$lang['pending validation'] = 'في إنتظار التصريح';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo أضافة للنشر بوا سطة برنامج  Lightroom';
+$lang['Predefined filter'] = 'مُرشح مُحدد مُسبقاً';
+$lang['registered users'] = 'تسجيل المستخدمين';
+$lang['Resize after upload'] = 'غير الحجم بعد الرفع';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'استعادة التكوين الإفتراضي . سوف تفقد إعدادات الإضافات!';
+$lang['Save manual order'] = 'حفظ الأمر يدوياً';
+$lang['Save visits in history for'] = 'حفظ سجل الزوار لـ';
+$lang['Select the destination tag'] = 'أختر الكلمات الدلائلية المُستهدفة';
+$lang['Send connection settings by email'] = 'أرسل معلومات الاتصال عبر البريد';
+$lang['show details'] = 'أظهر التفاصيل';
+$lang['Show menubar'] = 'أظهر الأرقام';
+$lang['simple visitors'] = 'زوار عاديين';
+$lang['Start Upload'] = 'إبدأ الرفع';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = ' <em>%s</em>تم دمج الكلمات الدلائلية <em>%s</em> مع الكلمات الدلائية ';
+$lang['The original image quality must be a number between %d and %d'] = 'جودةالصورة الأصلية يجب أن تكون بين الرقم %d و %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'الحد الأدنى لإرتفاع الصورة يجب أن يكون بين الرقم %d و %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'الحد الأدنى لعرض الصورة يجب أن يكون بين الرقم %d و %d';
+$lang['This album contains %d photos, added between %s and %s.'] = 'هذا الألبوم يحتوي على %d أضيفت بين %s و %s .';
+$lang['This album contains %d photos, added on %s.'] = 'هذا الألبوم يحتوي على %d صورة,أضيفت في %s.';
+$lang['This album contains no photo.'] = 'هذا الألبوم لايحوي أي صورة';
+$lang['Thumbnails generation in progress...'] = 'معالجة إنشاء الصور المصغرة..';
+$lang['Unlock gallery'] = 'أفتح المعرض';
+$lang['Updates'] = 'تحديثات';
+$lang['Web Form'] = 'نموذج ويب';
+$lang['With no album'] = 'من غير ألبوم';
+$lang['With no tag'] = 'من غير كلمات دلائلية';
+$lang['With no virtual album'] = 'من غير ألبوم ظاهر';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'أنت تستخدم رافع الصور الخاص بالمتصفح .جرب استخدام <a href="%s">Flash uploader</a> بدلا ً منه ';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = ' هل تجد مشكله في رفع الصور بالفلاش جرب استخدام  <a href="%s">Browser uploader</a>  بدلً';
+$lang['You can activate only one mobile theme.'] = 'تستطيع تفعيل واجهة واحدة فقط  للموبايلي ';
+$lang['Zoom'] = 'تكبير';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'تصريح المستخدم %u تلقائي  لانه ضمن مجموعه لها تصريح';
+$lang['any visitor can see this album'] = 'أي زائر يمكنه مشاهدة هذا الألبوم';
+$lang['custom'] = 'تخصيص';
+$lang['Delete multiple size images'] = 'خذف الصور المتعددة الأحجام';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'ملامح استعراض المعرض , إنشاء ألبوم  و رفع الصور';
+$lang['Generate multiple size images'] = 'توليد صور بأحجام متعدده';
+$lang['Groups and users'] = 'مجموعات و مستخدمين';
+$lang['include photos with lower privacy level'] = 'استدعاء الصور بمستوى خصوصية أقل';
+$lang['No group is permitted to see this private album'] = 'لا يمكن لأي مجموعه مشاهدة هذا الألبوم';
+$lang['Permission granted for groups'] = 'تصريح ممنوح للمجموعات';
+$lang['Permission granted for users'] = 'التصريح الممنوح للمستخدم';
+$lang['Permission management'] = 'إدارة التصريحات';
+$lang['Select groups...'] = 'تحديد مجموعات ..';
+$lang['Select users...'] = 'تحديد المستخدمين';
+$lang['There is no group in this gallery.'] = 'لا توجد مجموعه لهذا الألبوم';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'الزوار في حاجه لتسجيل الدخول او  التصريح حتى يمكنهم مشاهده هذا الألبوم';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> تطبيقات للاجهزه اللمسيه التي تعمل علي نظام آندرويذ ، يتيح لهذه الاجهزه رفع الصور و انشاء الآلبومات';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em>  تطبيقات للاجهزه اللمسيه الخاصة بشركه أبل ،آيفون ، آيباد و آيبود  ، تطبيق يتيح لهذه الاجهزه الاتصال بمعرضك الخاص و رفع الصور و انشاء و الألبومات ';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'أدوبي فوتوشوب لايتروم  هو برنامج التصوير المصممة لإدارة كميات كبيرة من الصور الرقمية والقيام بأعمال ما بعد الإنتاج.';
+$lang['Piwigo publish plugin for Shotwell'] = 'اضافة النشر في Piwigo  الخاصه ببرنامج  Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell برنامج مفتوح المصدر لتنظيم و إدارة و معالجة الصور يعمل في بيئه لينوكس 
+هذا البرنامج باداره  Ubuntu و Fedora. ';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'اضافة للنشر في Piwigo  تسمح لك بتصدير ومزامنة الصور من لايترووم مباشرة إلى معرض الصور الخاص بك Piwigo. ';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'لا يمكنك تحديد ترتيب الصورة الافتراضية لأنه لديك إعداد مخصص في التكوين الخاص بك ';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'لقد حددت   <i>$conf[\'order_by\']</i>  في ملف التكوينات  ستم اهمال هذه التغيرات ، الرجاد تحزيك اوتغيير الاسم إلي <i>$conf[\'order_by_custom\']</i> !';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = ' Aperture برنامج بأدوات قوية لتحسين و ادارة الصور  خاص ببئة الماكنتوش';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture صمم من اجل الفوتوغرافين المحترفين  مع بساطة  iPhoto';
+$lang['Apply watermark if height is bigger than'] = 'تطبيق العلامة المائية إذا كان الإرتفاع أكبر من ';
+$lang['Apply watermark if width is bigger than'] = 'تطبيق العلامة المائية إذا كان العرض أكبر من';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'افتراضيا ، سيكون مركز الاهتمام في الوسط';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'لتحجيم الصور مع الاستقطاع " لتكون مربعه الشكل مثلا "   سيتم المحافظة على مركز الاهتمام  بأقصى ما يمكن';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'على اللينكس الخاص بك ، ثبت Shotwell ببساطه  عن طريق ادارة الحزم  ثم فعل خيارات النشر في Piwigo .';
+$lang['Opacity'] = 'غموض';
+$lang['Photo sizes with crop'] = 'حجم الصورة مع الاستقطاع';
+$lang['Piwigo export plugin for Aperture'] = 'إضافة التصدير الى Piwigo  لبرنامج  Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'إضافة التصدير الى Piwigo  لبرنامج iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'إضافة النشر الخاص بـ digikam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.';
+$lang['Select a file'] = 'حدد الملف';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'حدد منطقة الاهتمام  بالفأرة لإنشاء  مركز جديد للاهتمام';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'الاضافة للتصدير الى Piwigo  اضافة تتيج لك أن تنشأ الألبوم و اضافة الصور';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'مركز الاهتمام ، هي المنطقة الأكثر وضوحا في الصورة';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'لتصدير صورك من digiKam  الى  Piwigo  ، ثبت digiKam ببساطه و اضف Kipi-plugins.';
+$lang['X Position'] = ' موضع X';
+$lang['X Repeat'] = 'كرر X';
+$lang['Y Position'] = 'موضع Y';
+$lang['add a new watermark'] = 'أضف علامة مائية جديدة';
+$lang['bottom left corner'] = 'الزاوية اليسرى السفلى';
+$lang['bottom right corner'] = 'الزاوية اليمنى السفلى';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam برنامج متقدم لتحرير  و ادارة الصور الرقمية ، يمكن تشغيله على  الوندوز و الماكنتوش و اللينكس';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'تم تصميم digiKam للمصورين الذين يرغبون في عرض وإدارة وتحرير وتعزيز وتنظيم والعلامة، ومشاركة الصورالفوتوغرافية.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto هو البرنامج الافتراضي لتحرير و تنظيم الصور لأجهزة المكنتوش .  إضافة التصدير  لهذا البرنامج تتيح لك انشاء الألبومات و تصدير الصور الى المعرض';
+$lang['middle'] = 'وسط';
+$lang['top left corner'] = 'الزاوية اليسرى العليا';
+$lang['top right corner'] = 'الزاوية اليمنى العليا';
+$lang['Multiple Size'] = 'حجم متعدد';
+$lang['%d day'] = '%d يوم';
+$lang['%d days'] = '%d ايام';
+$lang['%d hour'] = '%d ساعة';
+$lang['%d hours'] = '%d ساعات';
+$lang['%d minute'] = '%d دقيقة';
+$lang['%d minutes'] = '%d دقائق ';
+$lang['%d month'] = '%d  شهر';
+$lang['%d months'] = '%d  شهور';
+$lang['%d second'] = '%d ثانية';
+$lang['%d seconds'] = '%d ثواني';
+$lang['%d year'] = 'سنة %d';
+$lang['%d years'] = '%d  سنين';
+$lang['%s ago'] = 'منذ %s';
+$lang['%s in the future'] = '%s  في المستقبل';
+$lang['Added by %s'] = 'أضيفت بواسطة %s';
+$lang['Numeric identifier : %d'] = 'المعرف الرقمي :%d';
+$lang['Original file : %s'] = ': %s الملف الأصلي ';
+$lang['Posted %s on %s'] = 'أضيفت  %s في %s';
+$lang['Rated %d times, score : %.2f'] = 'تم التصويت %d مرة ، المجموع : : %.2f';
+$lang['Sharpen'] = 'الحدة';
+$lang['Visited %d times'] = 'عدد التصويتات  %d  مرة';
+$lang['Watermark'] = 'علامة مائية';
+$lang[' and %d virtuals'] = 'و %d الظاهري';
+$lang['%d physicals'] = '%d  مادي';
+$lang['%d week'] = '%d أسبوع';
+$lang['%d weeks'] = '%d أسابيع';
+$lang['Edit photo'] = ' تحرير الصورة';
+$lang['No order field selected'] = 'لم يتم اختيار أي خافة';
+$lang['create a new site'] = 'انشأ موقع جديد';
+$lang['Duplicate selected tags'] = 'كرر الكلمه الدائليه المحددة';
+$lang['Name of the duplicate'] = 'تسميه المكرر';
+$lang['Source tag'] = 'مصدر الكلمه الدلائليه';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'الكلمه الدلائليه "%s" كررت لـ "%s"';
+$lang['Landscape'] = 'منظر طبيعي';
+$lang['Manage photos'] = 'إدارة الصور';
+$lang['Minimum height'] = 'الحد الأدني للارتفاع';
+$lang['Minimum width'] = 'الحد الادني للعرض';
+$lang['Number of albums per page'] = 'عدد الالبومات في كل صفحة';
+$lang['Panorama'] = 'بانوراما';
+$lang['Portrait'] = 'صوره شخصية';
+$lang['View in gallery'] = 'عرض في المعرض';
+$lang['Duplicate'] = 'كرر ';
+$lang['Manage the members'] = 'إدارة الأعضاء';
+$lang['This group will be unset to default'] = 'لم يتم استخدام هذه المجموعة من قبل';
+$lang['Ratio'] = 'نبسة';
+$lang['Please select at least two groups'] = 'فضلا ً لا أمرا ٍ أختر فيما لا يقل عن مجموعتين ';
+$lang['No members to manage'] = 'لا يوجد أعضاد لإدارتهم';
+$lang['No group selected, no action possible.'] = 'لم يتم تحديد أي مجموعة  ، لا تتوقع التفاعل';
+$lang['Merge selected groups'] = 'إدارة المجموعة المختارة';
+$lang['between %d and %d pixels'] = 'ما بين  %d و %d  بكسل';
+$lang['between %.2f and %.2f'] = 'ما بين %.2f  و %.2f ';
+$lang['Type here the name of the new group'] = 'أكتب هنا أسم المجموعة الجديدة';
+$lang['Rename'] = 'إعادة تسمية';
+$lang['This group will be set to default'] = 'هذا المجموعة ستستخدم كمجموعة افتراضية';
+$lang['Purge user cache'] = 'مسح الذاكرة المؤقتة للمستخدم';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'تغيير حجم بعد تعطيل الرفع نتيجة لاستخدام GD كما مكتبة الرسم';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'سيتم تخفيض أبعاد الصورة لل %dx%d  بكسل.';
+$lang['Select at least one tag'] = 'حدد علامة واحدة على الأقل';
+$lang['Mail theme'] = 'طراز بريد';
+$lang['General'] = 'عام';
+$lang['Basic settings'] = 'الإعدادات الأساسية';
+?>
Index: /tags/2.6.0RC1/language/ar_SA/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/common.lang.php	(revision 25596)
@@ -0,0 +1,426 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: العربية [AR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=412
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Arbic';
+$lang_info['country'] = 'saudi';
+$lang_info['direction'] = 'rtl';
+$lang_info['code'] = 'ar';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d كيلوبايت';
+$lang['%d album updated'] = '%d ألبوم يحوي صور جديدة';
+$lang['%d albums updated'] = '%d ألبومات تحتوي على صور جديدة';
+$lang['%d comment to validate'] = '%d مصادقة التعليق';
+$lang['%d comments to validate'] = '%d مصادقة التعليقات';
+$lang['%d new comment'] = '%d تعليق جديد';
+$lang['%d new comments'] = '%d تعليقات جديدة';
+$lang['%d comment'] = ' التعليقات %d ';
+$lang['%d comments'] = ' عدد التعليقات %d ';
+$lang['%d hit'] = ' المشاهد %d ';
+$lang['%d hits'] = ' المشاهدين %d ';
+$lang['%d new photo'] = '%d صورة جديدة';
+$lang['%d new photos'] = '%d صور جديدة';
+$lang['%d new user'] = '%d مسخدم جديد';
+$lang['%d new users'] = '%d مستخدمين جدد';
+$lang['About'] = 'ماذا عن Piwgo ?';
+$lang['All tags'] = 'كل الكلمات الدلائلية';
+$lang['Any tag'] = 'أي كلمة دلائلية';
+$lang['At least one listed rule must be satisfied.'] = 'على الأقل واحدة لهذه يجب أن تكون مستوفية.';
+$lang['Author'] = 'بواسطة :';
+$lang['Albums'] = 'الألبومات';
+$lang['Album'] = 'ألبوم';
+$lang['Close this window'] = 'أغلق هذه النافذة';
+$lang['Complete RSS feed (photos, comments)'] = 'تابع تحديثات الموقع من صور جديدة و تعليقات  عبر الاشتراك في هذه الخدمة RSS';
+$lang['Confirm Password'] = 'تأكيد كلمة المرور';
+$lang['Connection settings'] = 'إعداد الاتصال';
+$lang['Login'] = 'دخول';
+$lang['Contact webmaster'] = 'اتصل بمدير الموقع';
+$lang['Create a new account'] = 'حساب جديد';
+$lang['Created on'] = 'تاريخ الصورة';
+$lang['Creation date'] = 'تاريخ الصورة';
+$lang['Current password is wrong'] = 'كلمة المرور غير صحيحة';
+$lang['Dimensions'] = 'الأبعاد';
+$lang['Display'] = 'المظهر';
+$lang['Each listed rule must be satisfied.'] = 'كل العناصر يجب ان تكون مكتملة.';
+$lang['Email address is missing. Please specify an email address.'] = 'البريد الإلكتروني غير موجود';
+$lang['Email address'] = 'البريد الالكتروني';
+$lang['Enter your personnal informations'] = 'ادخل معلوماتك الشخصية';
+$lang['Error sending email'] = 'خطأ في إرسال الرسالة';
+$lang['File name'] = 'أسم الملف';
+$lang['File'] = 'ملف';
+$lang['Filesize'] = 'حجم الملف';
+$lang['Filter and display'] = 'أعرض مع الترشيح';
+$lang['Filter'] = 'مُرشح ';
+$lang['Forgot your password?'] = 'هل نسيت كلمة المرور?';
+$lang['Go through the gallery as a visitor'] = 'شاهد معرض الصور كأحد الزوار';
+$lang['Help'] = 'مساعدة';
+$lang['Identification'] = 'الخصوصية';
+$lang['Photos only RSS feed'] = 'التغذية الراجعه للصورة RSS';
+$lang['Keyword'] = 'كلمة مفتاحية';
+$lang['Links'] = 'روابط';
+$lang['N/A'] = 'غير معروف';
+$lang['New on %s'] = 'جديد لـ  %s';
+$lang['Notification'] = 'تحديثات جديدة';
+$lang['Number of items'] = 'عدد البنود';
+$lang['Original dimensions'] = 'الأبعاد الأصلية';
+$lang['Password forgotten'] = 'نسيت كلمة المرور';
+$lang['Password'] = 'كلمة المرور';
+$lang['Post date'] = ' تاريخ الإضافة';
+$lang['Posted on'] = 'تاريخ إضافة الصورة في المعرض';
+$lang['Profile'] = 'ملف التعريف';
+$lang['Quick connect'] = 'تسجيل الدخول';
+$lang['RSS feed'] = 'RSS التغذية الراجعه';
+$lang['Register'] = 'تسجيل';
+$lang['Registration'] = 'التسجيل';
+$lang['Related tags'] = ' كلمات الدلائلية لها صلة';
+$lang['Reset'] = 'إستعادة';
+$lang['Retrieve password'] = 'إسترجاع كلمة المرور';
+$lang['Search rules'] = 'شروط البحث';
+$lang['Search tags'] = 'كلمات البحث';
+$lang['Search'] = 'بحث';
+$lang['display available tags'] = 'أنظر في الكلمات الدلائلية';
+$lang['Since'] = 'منذ';
+$lang['Sort by'] = 'ترتيب حسب ..';
+$lang['Sort order'] = 'طريقة العرض';
+$lang['Tag'] = 'كلمة دلائلية';
+$lang['Tags'] = 'الكلمات الدلائلية';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'استخدم خدمة التغذية الراجعه RSS للحصول التحديثات الجديدة من تعليقات و اضافات في هذا الموقع';
+$lang['Unknown feed identifier'] = 'التغذية غير معرفة';
+$lang['User comments'] = 'آخر التلعيقات في المعرض';
+$lang['Username'] = 'أسم المستخدم';
+$lang['Visits'] = 'الزوار';
+$lang['Webmaster'] = 'مدير المعرض';
+$lang['Week %d'] = 'أسبوع %d';
+$lang['About Piwigo'] = 'ماذا عن Piwigo';
+$lang['You are not authorized to access the requested page'] = 'لم تقم بتسجيل الدخول أو انك غير مشترك  أو .. غير مصرح لك';
+$lang['add this photo to your favorites'] = 'أضف هذه الصوة لمفضلتك ';
+$lang['Administration'] = 'الإدارة';
+$lang['all'] = 'كل';
+$lang['ascending'] = 'تصاعدي';
+$lang['author(s) : %s'] = 'الكتاب(s) : %s';
+$lang['Expand all albums'] = 'عرض جميع الألبومات المتفرعه';
+$lang['posted after %s (%s)'] = 'أضيفت بعد %s (%s)';
+$lang['posted before %s (%s)'] = 'أضيفت قبل %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'أضيفت بين %s (%s) و %s (%s)';
+$lang['posted on %s'] = 'أضيفت لـ . %s';
+$lang['Best rated'] = 'افضل تصويت';
+$lang['display best rated photos'] = 'اعرض الصور الاكثر تقيما من قبل المشاهدين';
+$lang['Calendar'] = 'التقويم';
+$lang['All'] = 'الجميع';
+$lang['display each day with photos, month per month'] = 'أعرض جميع صور هذا اليوم ،شهريا';
+$lang['View'] = 'عرض';
+$lang['chronology_monthly_calendar'] = 'تقويم شهري';
+$lang['chronology_monthly_list'] = 'القائم الشهرية';
+$lang['chronology_weekly_list'] = 'القائمة الأسبوعية';
+$lang['Click here if your browser does not automatically forward you'] = 'إذا كان متصفحك لا يدعم الإنتقال الآلي أضغط هنا';
+$lang['comment date'] = 'تاريخ التعليق';
+$lang['Comment'] = 'التلعيق';
+$lang['Your comment has been registered'] = 'سيتم إعتماد كلماتك الطيبة في أقرب وقت';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'نرجوا الانتظار قبل اضافة تعليق آخر ';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'لم يتم إعتماد تعليقك لأنه مخالف لشروط التعليقات';
+$lang['An administrator must authorize your comment before it is visible.'] = 'لن يطول انتظارك حتى ترى تعليقك هنا بعد مراجعة الإدارة.';
+$lang['This login is already used by another user'] = 'يبدو أن هناك مستخدم آخر بنفس هذا المعلومات';
+$lang['Comments'] = 'التعليقات';
+$lang['Add a comment'] = 'أكتب تعليق';
+$lang['created after %s (%s)'] = 'أنشأ قبل %s (%s)';
+$lang['Comments'] = 'آخر التلعيقات';
+$lang['Add a comment'] = 'اكتب تعليق';
+$lang['created after %s (%s)'] = 'انشأ قبل %s (%s)';
+$lang['created before %s (%s)'] = 'اُنشأ بعد %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'اُنشأ بين %s (%s) و %s (%s)';
+$lang['created on %s'] = 'تاريخ الإنشاء %s';
+$lang['Customize'] = 'تخصيص';
+$lang['Your Gallery Customization'] = 'تخصيص المعرض ';
+$lang['day'][0] = 'الاحد';
+$lang['day'][1] = 'الاثنين';
+$lang['day'][2] = 'الثلاثاء';
+$lang['day'][3] = 'الاربعاء';
+$lang['day'][4] = 'الخميس';
+$lang['day'][5] = 'الجمعه';
+$lang['day'][6] = 'السبت';
+$lang['Default'] = 'إفتراضي';
+$lang['delete this photo from your favorites'] = 'أزل هذه الصورة من مفضلتك';
+$lang['descending'] = 'تنازلي';
+$lang['Download'] = 'تحميل';
+$lang['Download this file'] = 'تحميل هذا الصورة';
+$lang['edit'] = 'تحرير';
+$lang['wrong date'] = 'تاريخ خطأ';
+$lang['excluded'] = 'استبعاد';
+$lang['Your favorites'] = 'مفضلتي';
+$lang['display your favorites photos'] = 'عرض صور المفضلة';
+$lang['Favorites'] = 'المفضلات';
+$lang['First'] = 'الأولى';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'مغلق للصيانة و التحديث .. نرجوا إعادة الزيارة مرة أخرى.';
+$lang['Page generated in'] = 'صفحة أنشئت في ..';
+$lang['guest'] = 'ضيف';
+$lang['Hello'] = 'السلام عليكم ';
+$lang['available for administrators only'] = 'متاح للأدارين فقط';
+$lang['display this album'] = 'عرض  جميع صور هذا الألبوم';
+$lang['display last user comments'] = 'شاهد آخر التعليقات';
+$lang['customize the appareance of the gallery'] = 'تخصيص معلوماتك الشخصية';
+$lang['search'] = 'بحث';
+$lang['Home'] = 'الرئيسية';
+$lang['Identification'] = 'إدارة المستخدمين';
+$lang['in this album'] = 'في هذا الألبوم';
+$lang['in %d sub-album'] = 'في %d البوم فرعي';
+$lang['in %d sub-albums'] = 'في %d ألبومات فرعية';
+$lang['included'] = 'مستدعى';
+$lang['Invalid password!'] = 'عفوا كلمة المرور غير صحيحة!';
+$lang['Language']='اللغة';
+$lang['last %d days'] = 'آخر %d الأيام';
+$lang['Last'] = 'الأخيرة';
+$lang['Logout'] = 'خروج';
+$lang['obligatory'] = 'ضروري';
+$lang['display a calendar by creation date'] = 'عرض التقويم حسب الألبومات';
+$lang['display all photos in all sub-albums'] = 'عرض جميع الصور ';
+$lang['return to normal view mode'] = 'العودة لنمط العرض العادي';
+$lang['display a calendar by posted date'] = 'عرض التقويم حسب تاريخ الصورة المضافة';
+$lang['month'][10] = 'أكتوبر';
+$lang['month'][11] = 'نوفمبر';
+$lang['month'][12] = 'ديسمبر';
+$lang['month'][1] = 'جينوري';
+$lang['month'][2] = 'فبراير';
+$lang['month'][3] = 'مارس';
+$lang['month'][4] = 'ابريل';
+$lang['month'][5] = 'ماي';
+$lang['month'][6] = 'يونيو';
+$lang['month'][7] = 'جولاي';
+$lang['month'][8] = 'أغسطس';
+$lang['month'][9] = 'سبتمبر';
+$lang['Most visited'] = 'الصور الأكثر مشاهدة';
+$lang['display most visited photos'] = ' عرض الصور الأكثر مشاهدة';
+$lang['Unknown identifier'] = 'معرف مجهول';
+$lang['New password'] = 'كلمة مرور جديدة';
+$lang['Rate this photo'] = 'قيم هذه الصورة';
+$lang['Next'] = 'التالي';
+$lang['no rate'] = 'كن أول من يعطي تقيمه لهذه الصورة';
+$lang['Photos posted within the last %d day.'] = 'صور اضيفت في آخر  %d يوم.';
+$lang['Photos posted within the last %d days.'] = 'صور ادخلت في آخر %d الايام.';
+$lang['password updated'] = 'تم تغير كلمة المرور ';
+$lang['Recent period must be a positive integer value'] = 'يجب أن تكون القيمة إيجابية في الفترة السابقة';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'صورة';
+$lang['Click on the photo to see it in high definition'] = 'أنقر على الصورة لتراها بحجم أكبر ';
+$lang['Show file metadata'] = 'أظهر المعلومات الفوتوغرافية للصورة';
+$lang['Powered by'] = 'بدعم من';
+$lang['Preferences'] = 'التفضيلات';
+$lang['Previous'] = 'الصورة السابقة';
+$lang['Random photos'] = 'صور  عشوائية';
+$lang['display a set of random photos'] = 'عرض مجموعة من الصورة عشوائياً';
+$lang['Recent albums'] = 'الألبومات الأخيرة';
+$lang['display recently updated albums'] = 'عرض أحدث الألبومات الحالية';
+$lang['Recent period'] = 'الفترة الأخيرة';
+$lang['Recent photos'] = 'الصور الأخيرة';
+$lang['display most recent photos'] = 'عرض أحدث الصور';
+$lang['Redirection...'] = 'إعادة التوجيه .....';
+$lang['Please, enter a login'] = 'من فضلك ، سجل دخولك';
+$lang['login mustn\'t end with a space character'] = 'لا يمكن تسجيل الدخول بترك مسافه خاليه';
+$lang['login mustn\'t start with a space character'] = 'لا يمكن تسجيل الدخول بالبدء بمسافه حرف خاليه';
+$lang['this login is already used'] = 'this login is already used';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mail address must be like xxx@yyy.eee (example : jack@altern.org)';
+$lang['this login is already used'] = 'هذا المستخدم موجود حاليا';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'يجب ان يكون البريد بهذه الكيفيةxxx@yyy.eee (مثلا : jack@altern.org)';
+$lang['Auto login'] = 'دخول آلي';
+$lang['remove this tag from the list'] = 'حذف هذه الكلمات من القائمة';
+$lang['representative'] = 'صفه /نموذجي';
+$lang['Search for Author'] = 'أبحث عن الكاتب';
+$lang['Search in albums'] = 'أبحث في الألبومات';
+$lang['Search by date'] = 'بحث حسب التاريخ';
+$lang['Date'] = 'التاريح';
+$lang['End-Date'] = 'نهاية التاريح';
+$lang['Kind of date'] = 'صيغة التاريخ';
+$lang['Search for words'] = 'بحث بواسطة الكلمة';
+$lang['Search for all terms'] = 'بحث بوسطة جميع البنود ';
+$lang['Search for any term'] = 'بحث بواسطة أي بند';
+$lang['Empty query. No criteria has been entered.'] = 'الاستعلام فارغ .. ماذا تريد أن تفعل ؟!!.';
+$lang['Search results'] = 'نتائج البحث ';
+$lang['Search in sub-albums'] = 'بحث في الألبومات الفرعية';
+$lang['searched words : %s'] = 'نتيجة البحث عن : %s';
+$lang['Contact'] = 'إتصل بـ';
+$lang['set as album representative'] = 'تحديد فئة الصفة او النموذج';
+$lang['Show number of comments'] = 'أظهر عدد التعليقات';
+$lang['Show number of hits'] = 'أظهر عدد الزيارت';
+$lang['slideshow'] = 'عرض الشرائح';
+$lang['stop the slideshow'] = 'إيقاف العرض';
+$lang['Specials'] = 'إمتيازات';
+$lang['SQL queries in'] = 'استفسارات في SQL';
+$lang['display only recently posted photos'] = 'عرض الصور المضافة حديثا';
+$lang['return to the display of all photos'] = 'العودة لعرض جميع الصورة';
+$lang['the beginning'] = 'البداية';
+$lang['Thumbnails'] = 'الصور المصغرة';
+$lang['Menu'] = 'القائمة الرئيسية';
+$lang['A comment on your site'] = 'استفسار مهم';
+$lang['today'] = 'اليوم';
+$lang['Update your rating'] = 'غير تقييمك';
+$lang['the username must be given'] = 'اسم المستخدم ضروري';
+$lang['useful when password forgotten'] = 'مهم ( لاستعاده كلمه المرور حال فقدانها )ـ';
+$lang['Quick search'] = 'بحث سريع';
+$lang['Connected user: %s'] = 'الاتصال بالمستخدم: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'استعراض: %s';
+$lang['Author: %s'] = 'بواسطة: %s';
+$lang['Comment: %s'] = 'تعليق : %s';
+$lang['Comment by %s'] = 'كاتب التعليق  %s';
+$lang['User: %s'] = 'المستخدم: %s';
+$lang['Email: %s'] = 'البريد الالكتروني: %s';
+$lang['Admin: %s'] = 'المدير: %s';
+$lang['Registration of %s'] = 'تسجيل  %s';
+$lang['Album: %s'] = 'الألبوم: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'وضغ سيئ للضيف "ضيف", استخدم الحالة الافرتاضية. يرجى ابلاغ المسؤول عن الموقع.';
+$lang['this email address is already in use'] = 'هذا البريد مسجل لدينامن قبل';
+$lang['Album results for'] = 'نتيجة البحث في الألبومات عن:';
+$lang['Tag results for'] = 'نتائج الكلمات الدلائلية';
+$lang['from %s to %s'] = 'من%s الي %s';
+$lang['Play of slideshow'] = ' عرض شرائح الصور';
+$lang['Pause of slideshow'] = 'إيقاف العرض';
+$lang['Repeat the slideshow'] = 'أعد عرض الشرائح';
+$lang['Not repeat the slideshow'] = 'لا تكرر عرض الشرائح';
+$lang['Reduce diaporama speed'] = 'خفض سرعة العرض';
+$lang['Accelerate diaporama speed'] = 'تسريع العرض';
+$lang['Submit'] = 'أرسل';
+$lang['Yes'] = 'نعم';
+$lang['No'] = 'لا';
+$lang['%d photo']=' صورة %d';
+$lang['%d photos'] = 'مجموع الصور %d';
+$lang['%d photo is also linked to current tags'] = '%d صورة لها صله بالكلمات';
+$lang['%d photos are also linked to current tags'] = '%d صور لها ارتباط بــ';
+$lang['display photos linked to this tag'] = 'شاهد الصور التي لها إرتباط بالكلمات الدلائلية ';
+$lang['photos posted during the last %d days'] = 'صور الايــ %d ــام الاخيرة ';
+$lang['Piwigo Help'] = 'الدعم الفني ';
+$lang['Rank'] = 'الألبوم';
+$lang['group by letters'] = 'عرض الكلمات في مجموعات';
+$lang['letters'] = 'الرسائل';
+$lang['show tag cloud'] = 'عرض سحابة الكلمات الدلائيه';
+$lang['cloud'] = 'سحابة';
+$lang['Are you sure?'] = 'هل انت متأكد?';
+$lang['Reset to default values'] = 'إستعادة القيم الافتراضيه';
+$lang['delete all photos from your favorites'] = 'حذف كل الصور من مفضلتي';
+$lang['Sent by'] = 'أرسل بواسطة : ';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'ملفات الإرتباط محضورة في متصفحك أو غير معتمده ،يجب تمكين الكوكيز للتمكن من التسجيل';
+$lang['Edit a comment'] = 'حرر تعليق';
+$lang['(!) This comment requires validation'] = '(!) التعليق يحتاج تصريح';
+$lang['Welcome'] = 'أهلاً وسهلا ً';
+$lang['Welcome to your Piwigo photo gallery!'] = ' Piwigo مرحبا بك في  معرض الصور الخاص بك';
+$lang['... or browse your empty gallery'] = '.. أو تصفح معرضك الفارغ';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... أو أخفي هذه الرسالة ، وسوف أجد طريقي بنفسي';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'مرحبا بك %s، معرض الصور Piwigo فارغ ';
+$lang['I want to add photos'] = 'أريد أن أضيف صور';
+$lang['Manage this user comment: %s'] = ' %s حرر تعليق المستخدم :';
+$lang['This author modified following comment:'] = 'هذا الكاتب حرر تعليقه  : ';
+$lang['This author removed the comment with id %d'] = 'هذا الكاتب حذف تعليقه : %d';
+$lang['html tags are not allowed in login'] = 'اكواد html غير مسموحة في تسجيل الدخول';
+$lang['%d rates'] = '%d التقييم';
+$lang['Change my password'] = 'غيّر كلمة المرور';
+$lang['Check your email for the confirmation link'] = 'تم أرسال رابط التأكيد الى بريدك الإلكتروني ..أفحص بريدك';
+$lang['Delete'] = 'حذف';
+$lang['Edit'] = 'تحرير';
+$lang['Enter your new password below.'] = 'ادخل كلمة المرور الجديدة .';
+$lang['EXIF Metadata'] = 'البيانات الوصفية EXIF';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'اذا وصلتك هذه الرسالة عن طريق الخطأ فقط تجاهل هذه الرسالة  و لا شيء سوف يحدث ';
+$lang['Invalid key'] = 'مفتاح خاطئ';
+$lang['Invalid username or email'] = 'اسم المستخدم او البريد الالكتروني غير صحيح ';
+$lang['IPTC Metadata'] = 'IPTC البيانات الوصفية ';
+$lang['Number of photos per page'] = 'عدد الصور في كل صفحة';
+$lang['Password reset is not allowed for this user'] = 'لا يمكن تغير كلمة المرور لهذا المستخدم';
+$lang['Password Reset'] = 'إعادة تعين كلمة المرور ';
+$lang['Please enter your username or email address.'] = 'فضلاً أكتب أسم المستخدم أو بريدك الألكتروني ';
+$lang['Rating score'] = 'حسب معدل التقييم';
+$lang['Return to home page'] = 'العودة للصفحة الرئيسية للمعرض';
+$lang['Someone requested that the password be reset for the following user account:'] = 'أحدهم طلب إعادة تعين كلمة المرور للحساب : ';
+$lang['The number of photos per page must be a not null scalar'] = 'عدد الصور في كل صفحة لا يمكن ان يكون صفر';
+$lang['The passwords do not match'] = 'كلمة المرور لا تتطابق ';
+$lang['To reset your password, visit the following address:'] = 'لإعادة تعين كلمة المرور تفضل بزيارة العنوان التالي :';
+$lang['User "%s" has no email address, password reset is not possible'] = 'ليس للمستخدم "%s" بريد الكتروني .. لا يمكن اعادة تعين كامة المرور ';
+$lang['Username "%s" on gallery %s'] = 'اسم المستخدم "%s"  في  معرض %s ';
+$lang['Username or email'] = 'أسم المستخدم أو البريد الإلكتروني ';
+$lang['You will receive a link to create a new password via email.'] = 'ستصل إلى بريدك رسالة فيها رابط إنشاء كلمة مرور جديدة ';
+$lang['Your password has been reset'] = ' تم إعادة تعيين كلمة المرور بنجاج ';
+
+$lang['large'] = 'كبير';
+$lang['medium'] = 'متوسط';
+$lang['Original'] = 'الاصلي';
+$lang['small'] = 'صغير';
+$lang['square'] = 'مربع';
+$lang['thumb'] = 'تصفح';
+$lang['xlarge'] = 'كبير جداً';
+$lang['xxlarge'] = 'كبير جداً جداً';
+$lang['2small'] = 'XXS-صغير';
+$lang['Desktop'] = 'سطح المكتب';
+$lang['Hello %s,'] = 'السلام عليكم %s.';
+$lang['Here are your connection settings'] = 'هنا تجد معلومات الدخول ';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'إذا كنت تعتقد أن هناك خطأ في تلقيك  هذه الرسالة , فضلاً اتصل بنا عبر %s';
+$lang['Mobile'] = 'محمول';
+$lang['Password: %s'] = 'كلمة المرور:  %s';
+$lang['Photo sizes'] = 'حجم الصورة ';
+$lang['Send my connection settings by email'] = 'أرسل إعدادات الإتصال عبر البريد';
+$lang['Show latest comments first'] = 'أظهر آخر التعليقات أولا ً';
+$lang['Show oldest comments first'] = 'أظهر التعليقات الاقدم  أولا ً';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'تم التسجيل بنجاح , قريبا ً تصلك معلومات الدخول إلى بريدك . مرحبا بك';
+$lang['Thank you for registering at %s!'] = 'شكراً لتسجيلك بأسم %s!';
+$lang['Username modification'] = 'تعديل أسم المستخدم';
+$lang['Username: %s'] = 'أسم المستخدم : %s';
+$lang['View in'] = 'عرض كـ';
+$lang['xsmall'] = 'XS - صغير أكثر';
+$lang['Your username has been successfully changed to : %s'] = 'تم تغيير أسم المستخدم الخاص بك  إلى : %s.';
+$lang['Date created, new &rarr; old'] = 'تاريخ الإنشاء , جديد  &rarr; قديم ';
+$lang['Date created, old &rarr; new'] = 'تاريخ الإنشاء , جديد  &rarr; قديم';
+$lang['Date posted, new &rarr; old'] = 'تاريخ الإضافة , جديد  &rarr; قديم ';
+$lang['Date posted, old &rarr; new'] = 'تاريخ الإضافة , جديد  &rarr; قديم';
+$lang['File name, A &rarr; Z'] = 'أسم الملف , أ  &rarr; ي';
+$lang['File name, Z &rarr; A'] = 'أسم الملف , أ  &rarr; ي';
+$lang['Manual sort order'] = 'ترتيب يدوي';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'رقمي , 1  &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'رقمي , 1  &rarr; 9';
+$lang['Photo title, A &rarr; Z'] = 'عنوان الصورة , أ  &rarr; ي';
+$lang['Photo title, Z &rarr; A'] = 'عنوان الصورة , أ  &rarr; ي';
+$lang['Rating score, high &rarr; low'] = 'درجة التقييم ,عالية &rarr; متدنية';
+$lang['Rating score, low &rarr; high'] = 'درجة التقييم , عالية &rarr; متدنية';
+$lang['Visits, high &rarr; low'] = 'المشاهدة , عالية&rarr; متدنية';
+$lang['Visits, low &rarr; high'] = 'المشاهدة , عالية &rarr; متدنية';
+$lang['%d rate'] = ' نسبة التصويت %d';
+$lang['Bad request'] = 'طلب غير صالح';
+$lang['Forbidden'] = 'محظور';
+$lang['Page not found'] = 'الصفحة غير موجودة';
+$lang['Permalink for album not found'] = 'لم يتم العثور على رابط الألبوم';
+$lang['Piwigo encountered a non recoverable error'] = 'صادف معرض Piwigo  خطأ لايمكن معالجته';
+$lang['Requested album does not exist'] = 'الألبوم المطلوب غير موجود';
+$lang['Requested tag does not exist'] = 'الكلمة الدلائلية غير موجوده';
+$lang['Email address is mandatory'] = 'عنوان البريد الإلكتروني إلزامي';
+$lang['Username is mandatory'] = 'أسم المستخدم  إلزامي';
+$lang['mandatory'] = 'إلزامي';
+$lang['Website'] = 'الموقع';
+$lang['Your website URL is invalid'] = 'URL موقع الويب الخاص بك غير صالح';
+$lang['Email'] = 'البريد الإلكتروني';
+$lang['First Page'] = 'الصفحة الأولى';
+$lang['Go back to the album'] = 'إرجع للألبوم';
+$lang['Last Page'] = 'الصفحة الأخيرة';
+$lang['Password is missing. Please enter the password.'] = 'لم تكتب كلمة المرور، فضلا ً أكتب كلمة المرور';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'لم يتم تأكيد كلمة المرور، فضلا ً لا أمر أكد المرور رحم الله والديك';
+?>
Index: /tags/2.6.0RC1/language/ar_SA/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,142 @@
+<h2>تعديل البوم</h2>
+
+<h3>المعلومات</h3>
+
+<ul>
+
+<li><strong>الاسم</strong>: اعادة تسمية البوم (تغيير وهمي في حالة الالبوم الحقيقي).</li>
+
+<li><strong>description</strong>: نص قصير يعطي معلومات عامة عن الالبوم,
+   سيعرض هذا النص اسفل صفحة الصور المصغرة</li>
+
+</ul>
+
+<h3>تحريك</h3>
+
+<p>اذا كان هذا الالبوم وهمي يمكنك تحريكه.
+وهذا يعني تغيير الالبوم الاب.</p>
+
+<h3>خيارات</h3>
+
+<ul>
+
+<li><strong>نوع الوصول</strong>: تنظيم السماح. اذا جعلت البوم وهمي خاص كل الالبومات
+فيه ستكون خاصة. وعلى العكس اض اذا كانت عامة.</li>
+
+<li><strong>قفل</strong>: الالبوم وما فيه من البومات فرعية ستغلق للصيانة.</li>
+
+<li><strong>التعليقات</strong>: المستخدمون المخولون لاضافة التعليقات.</li>
+
+<li><strong>تخويل الرفع</strong>: السماح لمستخدم برفع الصور وهذا يكون للالبومات الحقيقية
+وليست الوهمية .</li>
+
+</ul>
+
+<p>يمكنك أيضا إدارة هذه الخيارات على "خصائص"
+إدارة الشاشة (الشاشات<span class="pwgScreen">الرفع</span>, <span
+class="pwgScreen">التعلبقات</span>, <span class="pwgScreen">القفل</span>,
+<span class="pwgScreen">عام/خاص</span>, <span
+class="pwgScreen">الممثل</span> متاح من <span
+class="pwgScreen">الادارة &raquo;الالبوم &raquo;
+وخصائصها</span>).</p>
+
+<h3>الترتيب</h3>
+
+<p>استخدام الصور في الترتيب الافتراضي</p>
+
+<p>بيان ما إذا كان هذا الترتيب  سينطبق أيضا على الالبومات الفرعية.</p>
+
+<p>عدد الساعات لاستخدامها في معايير الفرز المحددة مع هذا الألبوم.</p>
+<ul>
+<li><strong>تاريخ الإنشاء</strong>: وقت اخذ الصور</li>
+<li><strong>تاريخ النشر</strong>: تاريخ المزامنة</li>
+<li><strong>معدل التقييم(*)</strong>: يمكن تغيير متوسط التقييم من قبل
+الزوار</li>
+<li><strong>الاكثر زيارة (*)</strong>: الزيارة الحالية قد تغير
+الترتيب</li>
+<li><strong>اسم الملف</strong>: الاسم المعطى في حقل المعلومات</li>
+<li><strong>الرقم</strong>: الرقم الداخلي الفئات الأخيرة لديها أعلى
+رقم من سابقاتها.</li>
+
+</ul>
+<p><strong>(*)</strong>تحذير : يجب التأكد من اختبار هذه الأوامر حسب
+نفسك كما أنها يمكن أن تعطي نتائج غير متوقعة.</p>
+
+
+<h3>التمثيل</h3>
+
+<p>ممثل الألبوم هو تصغير يعرض على الصفحة الرئيسية
+(<span class="pwgScreen">category.php</span>) لتمثيل
+الألبوم
+إلا أنه يحتوي على البومات فرعية للصور مباشرة وليس (فقط كجذر
+ألبوم).</p>
+صورة  ألبوم :</p>
+
+<ul>
+
+<li><span class="pwgScreen">صفحة الصور</span>: واحدة من أزرار الإجراءات
+تتيح لك تعيين الصورة الحالية ممثلا لعرض الألبوم. يتوفر هذا الزر فقط للمشرفين.</li>
+
+<li><span class="pwgScreen">تعديل معلومات عن صورة</span>في
+الإدارة. يمكن الوصول إلى هذه الشاشة من <span
+   class="pwgScreen">picture.php</span> او <span class="pwgScreen">دفعة
+    إدارة</span> in <em>وضع الوحدة</em>. راجع التعليمات من هذه الشاشة ل
+    تفاصيل.</li>
+
+<li><span class="pwgScreen">الادارة &raquo; البومات &raquo;
+وخصائصها,
+   التمثيل</span>. راجع التعليمات من هذه الشاشة للحصول على تفاصيل.</li>
+
+<li><span class="pwgScreen">تعديل البوم</span> (الشاشة الحالية).</li>
+
+</ul>
+
+<p>اختيار ممثل يعتمد على
+<code>allow_random_representative</code> اعدادات التكوين (انظر<span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>في الوضع الافتراضي (<code>allow_random_representative</code> يوضع ل خطأ),
+يتم تمثيل كل الألبوم يحتوي على عنصر واحد على الأقل من قبل ثابت
+العنصر. مجموعة مرة واحدة (في خلق ألبوم)، ممثل من التغييرات فقط
+عندما تسأل الادارة عن ذلك. وإذا كان ممثل من غير المناسب،
+يمكنك ان تطلب من الممثل واحدة جديدة عشوائية</strong>.</p>
+
+<p>اذا كان <code>allow_random_representative</code> الاعدادت
+المكونة
+وضعت ل صحيحة, التصنيف قد لا يحتوي على ممثل ثابت
+فقط استخدم <strong>احذف التمثيل</strong> الزر.</p>
+
+<p>إذا كان الألبوم الفرعي والبومات الصور فارغة لا يمكن أن
+تكون ممثلة من قبل أي عنصر شكرا ل <span
+class="pwgScreen">تعديل معلومات عن صورة</span> شاشة. الخيار الوحيد الحالي علىالشاشة
+هو<strong>حذف الممثل</strong> زر.</p>
+
+<h3>وصل كل عناصر الالبوم ل البوم جديد</h3>
+
+<ul>
+
+<li><strong>اسم الالبوم الوهمي</strong>: اسم الالبوم الجديد للانشاء
+كل صور التصنيف الحالي ستربط به</li>
+
+<li><strong>الالبوم الاب</strong>: المكان الذي سيكون به الالبوم الجديد,
+اتركه فارغا للانشاء في الجذر</li>
+
+</ul>
+
+<h3>وصل كل عناصر الالبوم ل البوم موجود</h3>
+
+<ul>
+
+<li><strong>البومات</strong>: اختر الالبوم المستهدف</li>
+
+</ul>
+
+<h3>ارسل ايميل معلوماتي لمجموعة اشخاص</h3>
+
+<ul>
+
+<li><strong>المجموعة</strong>: المجموعة المستقبلة</li>
+
+<li><strong>محتوى الايميل</strong>: النص للارسال لهم.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ar_SA/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/cat_move.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>نقل الالبومات الوهمية</h2>
+
+<p>فقط الالبومات الفرعية يمكن ان يكون لها البوم اب</p>
+
+<h3>البومات وهمية للنقل</h3>
+
+<p>اختار البوم واحد او اكثر للنقل, اذا القائمة لم تحتوي على البومات, هذا يعني انك لم تنشئ واحدا بعد</p>
+
+<h3>البوم اب جديد</h3>
+
+<p>اختار البوم اب وهمي كان ام حقيقي , اذا لم تختار سيتم اضافة الالبوم الجديد الى جذر المعرض
+لايمكن نقل الالبوم الى نفسه او احد الالبومات الفرعية داخله</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>خيارات الالبوم</h2>
+
+<p>تنظيم الخيارات لعدة البومات مرة واحدة.</p>
+
+<dl>
+
+<dt>التعليقات</dt>
+<dd>الصورة ممكن تستقبل تعليقات من زوارك في البوم التعليقات فيه مفعلة.</dd>
+
+<dt>الاغلاق</dt>
+<dd>الالبومات المغلقة للصيانة , فقط المسؤول يمكنه رؤيتهم اثناء تصفحه للالبوم</dd>
+
+<dt>عام او خاص</dt>
+<dd>عندما يصبح الالبوم خاص , سيتم منح صلاحيات الوصول لمستخدمون ومجموعات يتم تعينها مسبقا</dd>
+
+<dt>التقديم</dt>
+<dd>هذا الخيار متاح عندما تضع اعدادات التكوين
+<code>allow_random_representative</code> (انظر<span
+  class="filename">include/config_defaults.inc.php</span>) الى
+<em>true</em>. كل البوم ممكن ان يقدم بواسطة صورة عشوائية او صورة توضع على انها صورة فريدة للالبوم</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ar_SA/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>تعديل تصاريح الالبوم</h2>
+
+<p>هذه الشاشة متاحة للألبومات خاصة. هنا يمكنك تحديد
+أذون للمستخدمين والمجموعات للألبوم.</p>
+
+<h3>المجموعات</h3>
+
+<p>يمكنك إازالة أو منح الجماعات وصول الألبوم الحالي. عن طريق تعديل
+مجموعات التراخيص، وسوف يمنح المستخدمين الذين ينتمون إلى هذه الجماعات  حق الوصول او المنع إلى هذا الألبوم.</p>
+
+<h3>المستخدمون</h3>
+
+<p>يمكنك منع او اضافة التصاريح للمستخدمون لوحدهم اما المنتمون لمجموعة فيجب اعطائهم
+استثناء بالمنع او السماح</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/configuration.html	(revision 25596)
@@ -0,0 +1,141 @@
+<h2>الاعدادات</h2>
+
+<p>تدع هذه الشاشة المسؤول القيام ب التكوين الأساسي. والواقع أن هذا
+الشاشة لا تظهر الا معايير الاعدادات البسيطة التي ينبغي أن تكون كافية ل
+الغالبية العظمى من المسؤولين. إذا كنت تريد أن ترى عديدة أخرى (و
+المتقدمة) المعايير الاعدادات، اقرأ الملف<span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>وتنقسم هذه الشاشة في عدة أقسام، تجميع اعدادات
+المعايير حسب الثيم.</p>
+
+
+<h3>الرئيسية</h3>
+<ul>
+<li><strong>عنوان المعرض</strong>: المستخدمة في آر إس إس وإخطارات
+البريد الإلكتروني.</li>
+
+<li><strong>بنر الصفحة</strong>: تعرض على رأس كل
+صفحةعامة.</li>
+
+<li><strong>رابط المعرض</strong>: المستخدمة في آر إس إس.</li>
+
+<li><strong>اغلاق المعرض</strong>: قفل كامل للمعرض
+للصيانةالعامة. فقط سوف يكون المستخدم المسؤول قادرا على الوصول الى
+المعرض.</li>
+
+<li><strong>التقييم</strong>: خاصية تقييم الصور مفعلة.</li>
+
+<li><strong>التقييم من الضيوف</strong>: حتى الضيوف يمكنهم تقييم الصور.</li>
+
+<li><strong>اتاحة التسجيل</strong>: اي شخص يستطيع التسجيل.</li>
+
+<li><strong>عنوان البريد إلزامي لجميع المستخدمين</strong>: عنوان البريد
+سوف يتم التحقق منه عند تحديث تسجيل الشخصي، إلا إذا
+تم ذلك العمل من قبل مسؤول.</li>
+
+<li><strong>ارسال بريد الى المسؤول عند تسجيل احدهم</strong>:
+المسؤول سوف يتم اخطاره بعملية تسجل مستخدم</li>
+
+</ul>
+
+<h3>التاريخ</h3>
+
+<p>زيارة الصفحات <span
+   class="pwgScreen">category.php</span> و<span
+   class="pwgScreen">picture.php</span> سوف يتم الحفظ في
+<code>التاريخ</code> قاعدة</p>
+
+<p>الزيارات سوف تظهر في<span
+   class="pwgScreen">الادارة&raquo; الادوات &raquo;
+التاريخ</span>.</p>
+
+<ul>
+<li><strong>حفظ زيارات الصفحة من الضيوف</strong>: الزيارات التي يقوم بها الضيوف
+سيتم تسجيلها.</li>
+
+<li><strong>حفظ زيارات المستخدمين</strong>: سوف يتم حفظ زيارات الاعضاء المسجلين.</li>
+
+<li><strong>حفظ  زيارات المسؤولون</strong>: زيارات المسؤولون سوف تحفظ</li>
+
+</ul>
+
+<h3>التعليقات</h3>
+<ul>
+
+<li><strong>التعليقات للكل</strong>: حتى الضيوف يمكنهم اضافة التعليقات</li>
+
+<li><strong>عدد التعليقات في الصفحة الواحدة</strong>.</li>
+
+<li><strong>التحقق</strong>:المسؤول يجب التحقق من صحة
+تعليقات المستخدمين قبل أن تصبح مرئية في الموقع. التحقق من صحة تعليقات المستخدم
+يحدث في الشاشة <span class="pwgScreen">الادارةn &raquo;
+الادوات &raquo; التعليقات المنتظرة</span>.</li>
+
+<li><strong>ارسال بريد عندما يتم ادخال تعليق حقيقي</strong>:
+يرسل بريد إلكتروني إلى المسؤولين عندما يقوم المستخدم بإدخال تعليق و
+هذا التعليق هو تم التحقق من صحته.</li>
+
+<li><strong>ارسال بريد الى المسؤول عندما يوجد تعليق يجب التحقق منه</strong>:
+يرسل بريد إلكتروني إلى المسؤولين عندما يقوم المستخدم بإدخال تعليقا
+يتطلب المصادقة من قبل الإدارة.
+التحقق من صحة تعليقات المستخدم يحدث في الشاشة <span
+class="pwgScreen">الادارة, الصور, التعليقات</span>.</li>
+
+</ul>
+
+<h3>الرفع</h3>
+<ul>
+<li><strong>اظهار رابط الرفع كل وقت</strong>:إذا البومات قابلة للرفع
+موجود، سيظهر رابط رفع لكل الألبوم.</li>
+<li><strong>مستوى الوصول للمستخدمين</strong>: يقيد رفع
+بعض الألبومات من المستخدمين</li>
+<li><strong>ارسال بريد للمسؤول عند رفع صورة</strong>:
+تنبيه المسؤول في كل مرة ترفع فيها صورة</li>
+</ul>
+
+<h3>العرض الافتراضي</h3>
+
+<p>هنا يمكنك تغيير خيارات العرض المستخدمة من قبل الضيف، المستخدم الافتراضي
+غير المتصل
+بمجرد الاتصال، وهذه الخيارات يتم تجاوزها من قبل خيارات المستخدم الخاصة
+(القابلة للتعديل في <span class="pwgScreen">الملف الشخصي</span>).</p>
+
+<p>It is possible to change the display options for all existing users,
+on the <span class="pwgScreen">الادارة &raquo;
+المستخدمون &raquo; تنظيم</span> الشاشة,حيث يمكنك اختيار قائمة من المستخدمين</p>
+
+<ul>
+
+<li><strong>اللغة</strong>: تتطبق ل Piwigo
+  التسميات فقط أسماء الألبوم، وأسماء وصور جميع المجالات أوصاف غير
+المترجمة.</li>
+
+<li><strong>عدد الصور في كل صف</strong></li>
+
+<li><strong>عدد الصفوف في كل صفحة</strong></li>
+
+<li><strong>ثيم الواجهة</strong></li>
+
+<li><strong>الفترة الحديثة</strong>: بواسطة أيام, الفترة التي كانت الصورة
+جديدة يجب أن تكون أكبر من 1 في اليوم.</li>
+
+<li><strong>توسيع كل الالبومات</strong>: توسيع كل الالبومات افتراضيا في القائمة<em>Warning</em>: هذا الخيار يتم استهلاك الموارد
+و يمكن توليد قائمة ضخمة إذا شجرة الألبوم تحتوي على العديد من
+البومات.</li>
+
+<li><strong>اظهار عدد التعليقات</strong>: عرض عدد من التعليقات
+    عن كل صورة على الصور المصغرة. فيها استهلاك الموارد</li>
+
+<li><strong>اظهار عدد النقرات</strong>: عرض اسفل الصفحة فقط عند الصور المصغرة حيث يتم عرض عدد النقرات ويمكن اعداد ذلك في الاعدادات المتقدمة <br>
+   $conf['show_nb_hits'] = true; <br>
+   ملاحظة خطأ افتراضيا</li>
+
+<li><strong>اكبر عرض للصور</strong>: عرض الحد الأقصى
+    العرض, وسيتم تغيير حجم الصور أكبر من هذا االعرض
+    في العرض, بدلا من اختيار هذا الخيار ، قد ترغب في النظر في
+    تعديل عرض الصور الخاصة بك، وهذا سيكون افضل</li>
+
+<li><strong>اقصى ارتفاع للصورة</strong>: انظر نفس اعدادات العرض في الاعلى.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ar_SA/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,92 @@
+<h2>توسع في اعدادت النماذج</h2>
+
+<h3>الهدف</h3>
+<p>تحديد الشروط البديلة لكل نموذج من ملحق - النماذج (النموذج يسمى "البدل").</p>
+
+<p>سيتم استبدال "./themes/default/template النموذج الأصلي" من (أو أي ثيم آخر) من قبل "البدل" إذا تم ربط البدل لهذا " النموذج الأصلي"(وبشكل اختياري ، عندما عنوان المطلوب يحتوي على
+"الكلمة اختياري عنوان الموقع").</p>
+
+<p>"كلمات عنوان الموقع الاختياري " هي تلك التي يمكنك أن تجد بعد اسم الوحدة النمطية في عناوين المواقع.</p>
+
+<p>ولذلك "كلمات عنوان الموقع الاختياري " يمكن أن تكون نشطة "الرابط الثابت"
+(انظر الرابط الدائم في الوثائق الخاصة بنا لمزيد من التوضيح).</p>
+
+<p>اقرأ: `<a href="#warnings">Warning</a>`شروط الاستخدام.</p>
+
+<h3>ماهي ملحقات النماذج؟</h3>
+
+<p>هذا التكوين هو أداة قوية للمبتدئين والمستخدمين المتقدمين. بواسطة بروتوكول نقل الملفات ، في المجلد template-extension ، لا يمكن لل مسؤول الموقع تكرار الكثير من الملفات. امتداد .tpl (" النموذج الأصلي") مع اسم مختلف ("البدل"). " النماذج الأصلية "، الحالية المدعومة هي </p>
+<ul>
+<li><span class="filename">index.tpl</span></li>
+<li><span class="filename">mainpage_categories.tpl</span> and/or <span
+class="filename">thumbnails.tpl</span></li>
+<li><span class="filename">menubar.tpl</span></li>
+<li><span class="filename">header.tpl</span> and/or <span
+class="filename">footer.tpl</span></li>
+<li><span class="filename">picture_content.tpl</span> and/or <span
+class="filename">picture.tpl</span></li>
+<!-- <li><span class="filename">slideshow.tpl</span></li> -->
+<li><span class="filename">profile.tpl</span> and/or <span
+class="filename">profile_content.tpl</span></li>
+<li><span class="filename">tags.tpl</span></li>
+<li><span class="filename">upload.tpl</span></li>
+<li><span class="filename">about.tpl</span></li>
+<li><span class="filename">popuphelp.tpl</span></li>
+<li><span class="filename">search.tpl</span> and/or <span
+class="filename">search_rules.tpl</span></li>
+<li><span class="filename">nbm.tpl</span> and/or <span
+class="filename">notification.tpl</span></li>
+<li><span class="filename">identification.tpl</span> and/or <span
+class="filename">register.tpl</span></li>
+<li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>اين اجد النماذج الاصلية؟</h3>
+
+<p>النماذج الاصلية موزعة في /themes/default/template/
+(لا تعدل عليهم للاستخدام في عملية الترقية). ف مع النماذج الاصلية
+اي مسؤول موقع يستطيع انشاء اي بديل ويجهزه حسب ما يريد.</p>
+
+<h3>اين يجب ان احفظ البدائل</h3>
+
+<p><strong>البدائل(النماذج المشكلة)</strong> يجب ان توضع في اي فولدر او فولدر فرعي <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>كيف افعل النموذج البديل؟</h3>
+<p>اي <strong>نموذج اصلي</strong> يجب ان يكون موصول لكل
+<strong>بديل(نموذج مشكل)</strong> لتفعيل كل ابدائل ذات العلاقة
+وهذا هو الهدف من "توسيع لل نماذج" في تكوين
+قوائم الإدارة .</p>
+
+<p>اذا اخترت  <strong>كلمات الروابط الاختيارية</strong> وسوف يتم استبدال ثم تعمل فقط على صفحات مع هذه الكلمة الرئيسية. على سبيل المثال : <span
+   class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+
+<p>المستخدمون المتقدمون سو يستخدمون الرابط الدائم ك <strong>كلمة الروابط الاختيارية</strong>. </p>
+
+<p>اذا اخترت <strong>نموذج محاط</strong> لاستبدال سوف تعمل فقط على هذا القالب.</p>
+
+<h3>كيف يمكن ان الغي"البدائل"؟</h3>
+<ul>
+<li>الغ اختيار "القالب الاصلي"</li>
+<li>بواسط بروتوكول FTP احذف "البدل"</li>
+</ul>
+<a name="warnings"></a>
+<h3>تحذيرات</h3>
+<ul>
+
+<li><strong>القالب الاصلي</strong> يجب أن يكون نموذج "الأصلي" يمكن أن يكون خلاف ذلك نتائج غير متوقعة!</li>
+
+<li>في العديد <strong>البدائل(القوالب المشكلة)</strong> التي هي تملك نفس<strong>القالب الاصلي</strong> ونفس<strong>الكلمات الاختيارية للرابط</strong>فقط البدل الاخير سوف يفعل</li>
+
+<li>الغير مختارة من  <strong>الكلمات الاختيارية للرابط</strong> سوف ينشط البديل عند أي استخدام للقالب. كما النقطة السابقة، الترتيب يمكن تجاوز بدائل مختارة سابقا.</li>
+
+<li>المجلدات الفرعية :
+يتم تجاهل المجلدات الفرعية كنها مفيدة لتغيير المجلد الحالي.<br>
+توزيع العينات : ويتم ذلك لغرض الاختبار!
+<strong>لا تقم بتعديلها</strong> قم بانشاء خاصتك
+</li>
+
+<li>في حالة حذف البديل <strong>القالب الاصلي</strong>مباشرة سوف يعاد تفعيلها</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ar_SA/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>قائمة بالمجموعات</h2>
+
+<p>في هذا المكان تستطيع تنظيم المجموعات</p>
+
+<h3>اضافة مجموعة</h3>
+
+<p>المسؤول بامكانه اضافة مجموعة</p>
+
+<h3>قائمة المجموعات</h3>
+
+<p>لكل عنصر ,القائمة تسمح ب:</p>
+
+
+<ul>
+<li>الذهاب الى قائمة الاعضاء</li>
+<li>الذهاب الى شاشة تنظيم الصلاحيات</li>
+<li>حذف مجموعة (تتطلب تأكيد)</li>
+<li>تغيير حالة "الافتراضي" (تتطلب تأكيد)</li>
+</ul>
+
+<h3>لالمجموعات الافتراضية</h3>
+<p>المجموعات الافتراضية هي التي يوضع بها العضو المسجل الجديد او المضاف من قبل المسؤول</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>هناك عدة طرق لإضافة الصور في المعرض</p>
+
+<ul>
+  <li><strong>الإضافة مباشرة </strong> ابسط و أسهل طريقة  لرفع الصور استخدام  مستعرض الويب . و ذلك يعتمد على امكانيات المتصفح و خادم الموقع ، للكمية كبيرة من الصور قد تواجه بعض المشاكل لذلك فهناك أساليب أخرى في انتظارك</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">أذهب إلى إضافة الصور مباشرة</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> برنامج يمكنك تثبيته على سطح المكتبه ، بعدها يمكنك سحب و افلات الصورة في نافذة ploade ثم تضغط على زر <em>"Upload to Piwigo"</em> ثم دع البرنامج يقوم بعمله في رفع الصور لمعرضك. يمكنكأن تجد  برامج مشابه مثل <strong>WinToPiwigo</strong> أو <strong>Digikam</strong> تصدير الاضافات إلى piwigo</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">أذهب إلى pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP ناقل الملفات</strong> هي الطريقةالمفضلة و الموصى بها لإضافة أعداد كبيرة من الصور في المعرض بقليل من النقرات ، فقط عليك اتباع التلعيمات الخاص باعداد الصور ،يسمح لك  اسلوب بروتوكول نقل الملفات FTP تنظيم صورك على الموقع  حسب تصنيفك الخاص ، </li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">FTPأذهب إلى </a></p>
+</div>
Index: /tags/2.6.0RC1/language/ar_SA/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/help_groups.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>المجموعات هي وسيلة ملائمة لتعيين الأذونات لقائمة المستخدمين.</p>
+
+<p>لـ إنشاء مجموعة <span class="pwgScreen"> الإدارة &raquo; المستخدمين
+&raquo; مجموعات </span> ولمشاهدة الأعضاء المنتسبين لمجموعة <span class="pwgScreen"> الإدارة &raquo; المستخدمين &raquo;
+إدارة</span>.</p>
+
+<p>  يمكن للمستخدم ان يكون في أكثر من مجموعة حسب تصنيفك الخاص .للمنع اوتخصيص بعض الصوراوالالبومات يمكنك انشاء مجموعه كـ مجموعة( مثلا )  الاسرة التي تختص بصور لا  يراها إلا أعضاء مجموعة الأسرة فقط </p>
Index: /tags/2.6.0RC1/language/ar_SA/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>بمجرد إنشاء معرض الصور يمكنك اعداد تكوينه للزوار حسب ما يلي :
+<ul>
+    <li> العرض الافتراضي الذي تفضله،  <span class="pwgScreen">الاإدارة  &raquo; التهيئة  &raquo;   الخيارات  </span>جدول  <span class="pwgScreen">إعدادت الضيوف، </span></li>
+    <li>الواجهة الافتراضية للمعرض ، <span class="pwgScreen">الادارة  &raquo; التهيئة  &raquo; واجهات العرض</span></li>
+    <li> اللغة الافتراضية للمعرض، <span class="pwgScreen">الادارة  &raquo; التهيئة  &raquo; اللغة   </span></li>
+</ul>
+سيتم تطبيق هذه الخيارات الافتراضية للمستخدمين الجدد
+</p>
+<p>نرحب بك و بأسئتلك في مجتمع   <a href="http://piwigo.org/forum">منتدى Piwigo</a>.</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,59 @@
+<fieldset>
+<legend>تخصيص الصور </legend>
+
+<p>
+لكل صورة <strong>مستوى من الخصوية</strong>  .(مغلقه) . كل مستخدم له أيضا ً خمس مستويات من الخصوصية ( مفتاح( . مستويات الخصوصية 5 و هي كما يلي:</p>
+<ol>
+  <li>لا شيء</li>
+  <li><em>متصلين </em></li>
+  <li><em>الاصدقاء (الذين لديهم مستوى عالي من الوصول للصور)</em></li>
+  <li><em>العائلة (الذين لديهم مستوى أعلى من مستوى الأصدقاء في الوصول)</em></li>
+  <li><em>المدراء (المستوى الأعلى من أي مستوى )</em></li>
+</ol>
+
+<p>
+المستويات العليا  لديها خصوصية أوسع من المستويات الادنى  الممنوحة لمستخدم معين  ، المستوى العالي يمنح مشاهدة المزيد من الصور.</p>
+
+<p>مثلا ، إذا كان مستوى الخصوصية لـ صورة "زواج علي " هي   لـ <em>"العائلة"</em>  إذن : </p>
+<ul>
+  <li>محمد ( هو  "<em>"المدير"</em> " )يستطيع مشاهد الصورة ، لانه مدير يستطيع أن يشاهد كل الصور</li>
+  <li>حسن ( هو أحد أفراد <em>"العائلة"</em> ) يستطيع أن يشاهد هذه الصورة</li>
+  <li>عمر ( هو مجرد <em>"صديق"</em> ) فلن يستطيع أن يشاهد الصورة</li>
+</ul>
+
+<p>
+المشاهد الذي لا يملك تصريح لمشاهدة الصور لفئة معينة فلن يشاهد الصور و لا حتى العنوان او حتى الكلمات الدلائلية </p>
+
+<p>يمكنك مشاهدة  مستوى الخصوية للمستخدمين  <span class="pwgScreen">الإدارة  &raquo; المستخدمين  &raquo; إدارة</span> </p>
+
+</fieldset>
+
+<fieldset>
+<legend>تخصيص الالبومات</legend>
+
+<p>
+إذا كانت مستويات الخصوصية لا تناسب احتياجاتك ، يمكنك أيضا إدارة الخصوصية  على الألبومات  لمستخدم أو مجموعة. يمكنك إدارة الصورة  على صور و الألبومات في نفس الوقت، دون تعارض.</p>
+
+<p>تخصيص مشاهدة الألبومات . التبديل السريع الى الخصوصية إذا كنت تريد إدارة التخصيص </p>
+
+<p>يمكنك تعيين البوم خاص من خلال تحريره بمفرده
+(<span class="pwgScreen">الإدارة &raquo; الألبومات &raquo;  إدارة 
+&raquo; تحرير </span>) او عن  طريق وضع و اختيار  الألبومات  في  أي خانة الخاص  أو العام
+(<span class="pwgScreen"> الإدارة  &raquo;  الألبومات &raquo;
+الخصائص  &raquo;  ألبوم عام  / ألبوم خاص  </span>).</p>
+
+<p>
+وضعية تخصيص الالبومات ، تستطيع إدارة التخصيص للمجموعات و المستخدمين في ثلاث شاشات :</p>
+
+<ul>
+
+  <li><span class="pwgScreen"> الإدارة &raquo;  المستخدمين  &raquo; إدارة &raquo;
+إجراء التفضيلات  </span> (رابط واحد لكل مستخدم )</li>
+
+  <li><span class="pwgScreen">الإدارة   &raquo; المستخدمين  &raquo; المجموعات &raquo;
+   الاجراءات لكل مجموعه</span> (رابط لكل مجموعة)</li>
+
+  <li><span class="pwgScreen">الإدارة &raquo; الألبومات &raquo;  إدارة  &raquo; تحرير الألبوم و إجراء نقل الالبومات </span> (رابط لكل ألبوم)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ar_SA/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>عرض صورة في ألبوم آخر  </p>
+
+<p>تستطيع ربط صورة واحدة أو أكثر في أكثر من البوم  دون ان تتكرر هذه الصورة ودون الحاجة لاعادة تحرير معلوماتها  مرة أخرى ،تستطيعع ذلك من خلال ايوقنة ا  التحرير الظاهرة  في كل صورة اثناء التصفح ( هذه الايقونة مخصصة فقط للمدير ) ـ </p>
+
+
+<p>لربط الصورة لاي ألبوم من نموذج تحرير الصورة  ( يمكن  لمدير المعرض الوصول لاي صورة و تحريرها عبر تصفحة المعرض ) ـ</p>
+
+<p>كذلك يمكنك  تصنيف الصور في الالبومات بهذه الطريقة ، لانشاء ألبوم <span class="pwgScreen"> الإدارة  &raquo;  الألبومات  &raquo;
+إدارة  </span>.</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/history.html	(revision 25596)
@@ -0,0 +1,41 @@
+<h2>التاريخ</h2>
+
+<p>على هذه الشاشات، يمكنك مراقبة تاريخ زيارات المعرض
+وفقا للخيارات التي اخترتها في -- إدارة &raquo; التكوين&raquo; تاريخ &raquo; المؤشر .</p>
+
+<h3>إحصاءات</h3>
+<ul>
+<p>إذا كنت قد اخترت تسجيل (<span
+class="pwgScreen">index.php</span>و<span
+class="pwgScreen">picture.php</span>(الصفحات التي تمت زيارتها في الجدول
+<code>التاريخ</code>,
+يمكنك متابعة هذه من هذا التبويب.</p>
+
+<li><strong>الإحصاءات العالمية</strong>: الزيارات سنويا.</li>
+
+<li><strong>إحصاءات سنوية</strong>: زيارة شهريا في العام المحدد.</li>
+
+<li><strong>إحصاءات شهرية</strong>: الزيارات في الأيام في الشهر المحدد.</li>
+
+<li><strong>الإحصائيات اليومية</strong>: الزيارات لكل ساعة في اليوم المحدد.</li>
+
+</ul>
+
+<h3>البحث</h3>
+<ul>
+<p>إذا كنت قد اخترت تسجيل (<span
+class="pwgScreen">index.php</span> و <span
+class="pwgScreen">picture.php</span>زار صفحات في الجدول(
+<code>التاريخ </code>، يمكنك استعراض تفاصيل الصفحات التي تمت زيارتها
+من هذا التبويب ، بمساعدة مرشحات مختلفة.</p>
+
+<li><strong>تصفية لكل تاريخ</strong> : اختر مدى التاريخ الذي تريد مراقبة الأنشطة.</li>
+
+<li><strong>تصفية لكل نوع من العنصر</strong>: اختيار نوع العنصر الذي تريده مراقبة نشاطه.</li>
+
+<li><strong>تصفية لكل مستخدم</strong>: اختر المستخدم الذي تريد مراقبة نشاطه.</li>
+
+<li><strong>تصفية لكل اسم ملف</strong> : اختر اسم الملف الذي تريد مراقبة نشاطه.</li>
+
+<li><strong>تصفية لكل معرف  صورة r</strong>: اختر معرف صورة تريد مراقبة نشاطه.</li>
+</ul>
Index: /tags/2.6.0RC1/language/ar_SA/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/maintenance.html	(revision 25596)
@@ -0,0 +1,52 @@
+<h2>الاصلاحات</h2>
+
+<p>لتحسين وقت انشاء الصفحة، Piwigo يستخدم مؤقتا
+المعلومات. على سبيل المثال ، بدلا من احصاء عدد الصور
+المتضمنة في كل ألبوم في كل تحديث، يتم تخزين هذه المعلومات في قاعدة البيانات. من الناحية النظرية ، ينبغي أن تكون هذه المعلومات صحيحة دائما، ولكن أحيانا يحدث خطأ ويمكن أن تصبح المعلومات المخزنة مؤقتا خاطئة.</p>
+
+<p>بعض المعلومات تصبح عديمة الفائدة مع مرور الوقت مع مرور الوقت. حذف هذه المعلومات عديمة الفائدة من قاعدة البيانات تجعلك توفر مساحة على القرص.</p>
+
+<ul>
+
+<li>
+<strong>الصور غير المرتبطة:</strong>
+   عرض الصور التي لا ترتبط إلى أي ألبوم وهمي.
+</li>
+<li>
+<strong>ملفات تحمل الاسم نفسه في أكثر من ألبوم حقيقي واحد :</strong>
+     عرض الصور أو ملفات التي وجدت في نفس اسم الملف في
+ألبومات عدة.
+</li>
+
+</ul>
+
+<ul>
+
+<li><strong>تحديث معلومات الألبومات :</strong> Fأو كل الألبوم،
+يتم التحقق من المعلومات التالية ، وتحديث إذا لزم الأمر : قائمة الألبومات الأصل، وعدد من الصور وتاريخ آخر الصورة، بين موقع الألبومات المتشابهة، وموقع بين جميع الالبومات. هذا الإجراء أيضا يتحقق ثبات الصور الممثلة.</li>
+
+<li><strong>تحديث معلومات الصور :</strong> عن كل صورة،
+معلومات محدثة : المسار الكامل إلى الملف متوسط التقييم.<em>تحذير</em>, لا تخلط الامور : المعلومات الوصفية تكون متزامنة من<span class="pwgScreen">الادارة &raquo;
+   الادوات &raquo; التزامن</span>, أو في شاشة تعديل صورة واحدة (من خلال<span class="pwgScreen">صورة</span> على سبيل المثال).</li>
+
+<li><strong>إصلاح وتحسين قاعدة البيانات :</strong>
+  تنفيذ إعادة ترتيب وإصلاح وتحسين العمليات على كل جدول من قاعدة البيانات.
+</li>
+</ul>
+
+<ul>
+<li><strong>تفاصيل إزالة التاريخ :</strong> حذف كافة الأسطر من
+<code>التاريخ</code> جدول. الشاشة <span
+class="pwgScreen">الادارة &raquo;
+   الادارة &raquo; التاريخ</span>لن تظهر معلومات التاريخ الماضي لفترة أطول<em>Warning</em>: سيتم فقدان كافة البيانات، من دون أي طريقة للحصول عليها مرة أخرى.</li>
+
+<li><strong>إزالة ملخص التاريخ :</strong> حذف كافة معلومات ملخص التاريخ عن تاريخ الزيارة. ويحسب هذا التلخيص من تفاصيل التاريخ.</li>
+
+<li><strong>إزالة الجلسات :</strong> حذف جلسات عمل المستخدم منتهية الصلاحية.</li>
+
+<li><strong>إزالة الإخطارات المستخدمة</strong></li>
+
+<li><strong>ازالة تاريخ الحذف</strong></li>
+
+<li><strong>إزالة النماذج المترجمة</strong></li>
+</ul>
Index: /tags/2.6.0RC1/language/ar_SA/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,16 @@
+<h2>اخطار بالايميل</h2>
+
+<p>تسمح هذه الشاشة لتكوين وإدارة البريد الإلكتروني للمستخدمين ، لإخطارهم من التغييرات على موقعك.</p>
+
+<p>تضم هذه الشاشة 3 علامات التبويب:</p>
+
+<h3>المعايير</h3>
+<p>متاحة فقط لأصحاب المواقع، هذا التبويب مجموعات بارامترات
+إخطار عن طريق البريد.</p>
+
+<h3>اشترك</h3>
+<p>متاحة فقط لأصحاب المواقع، هذا التبويب تدير المستخدمين
+اشتراك / إلغاء الاشتراك في تبليغات البريد الإلكتروني.</p>
+
+<h3>Envoi</h3>
+<p>متاحة فقط لأصحاب المواقع والإداريين، هذا التبويب يسمح بإرسال رسائل إخطار عن التغييرات.</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/permalinks.html	(revision 25596)
@@ -0,0 +1,9 @@
+<h2>الرابط النهائي</h2>
+
+<p>الرابط النهائي تستخدم لجعل عناوين الألبوم أجمل. عندما ألبوم له الرابط الدائم محددة ، غير مطلوب معرف الالبوم بعد الان</p>
+
+<p>عندما تم حذف الرابط الدائم، يمكنك حفظه في تاريخ الرابط الدائم
+، بحيث الارتباطات الخارجية للصفحات Piwigo لا تزال تعمل. في
+جدول تاريخ الرابط الدائم تستطيع أن ترى تاريخ حذف الرابط الدائم، آخر مرة تم استخدامه وعدد مرات هذا الرابط الدائم قد استخدمت.</p>
+
+<p>لاحظ أن الرابط الدائم يجب أن تكون فريدة لكل البوم. أيضا في جدول تاريخ الرابط الدائم لا يمكن أن يكون نفس جدول تاريخ الرابط الدائم معرف أكثر من مرة.</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,120 @@
+<fieldset>
+<legend>بداية سريعة</legend>
+
+<ol>
+<li>انشاء مجلد في جهازك.</li>
+
+<li>انسخ بعض الصور في المجلد,قم بتغيير الحجم للعرض في الويب
+<em>تحذير</em>: اسم المجلد او الملف يجب ان يحتوي على حروف, الارقام, "-", "_" او ".". لا فواص ولا حتى احرف مبرزة/li>
+
+<li>باستخدام برنامج (FTP) قم بنسخ الصور من جهازك  الى معرضك</li>
+
+<li>سجل الدخول في معرضك واذهب الى <span class="pwgScreen">الادارة
+&raquo; الادوات &raquo; الصور المصغرة</span> لانشاء صور مصغرة مفقودة.</li>
+
+<li>اذهب الى <span class="pwgScreen">الادارة</span> وانقر على زر التزامن الكبير</li>
+</ol>
+
+تهانينا لقد خلقت اول البوم في معرضك
+</fieldset>
+
+<fieldset>
+<legend>تنظيم المجلدات والملفات</legend>
+
+<ul>
+
+<li>
+
+<p>مجلد الالبوم هو في مجلد PIWIGO
+     "معرض". وفي ما يلي دليل شجرة صغيرة جدا
+المعرض (ولكن
+به العديد من الميزات:</p>
+
+<pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- album-1
+|   |   |-- album-1.1
+|   |   |   |-- album-1.1.1
+|   |   |   |   |-- album-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- album-1.1.1.2
+|   |   |   +-- album-1.1.2
+|   |   |-- album-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- album-1.3
+|   +-- album-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- local
+|-- plugins
+|-- template-extension
+|-- themes
++-- tool</pre>
+
+</li>
+
+<li>باستثناء تلك المسماة "تصغير"، "pwg_high "
+"pwg_representative"(انظر شرح أدناه)، تحت كل مجلد
+"معرض" تنتج ألبوم, لا يوجد حد في العمق,</li>
+
+<li>في الأساس ، اي عنصر يمثل ب ملف, يمكن أن يكون ملف
+عنصر Piwigo إذا كان امتداده بين <code>file_ext</code>
+   إمكانيات اعدادات (انظر <span
+   class="filename">include/config_default.inc.php</span> ملف). يمكن أن يكون الملف صورة إذا كان امتداده بين <code>picture_ext</code>
+   إمكانيات اعدادات.</li>
+
+<li>عناصر الصور يجب يكون لها ذات الصلة صورة مصغرة (انظر المقطع أدناه حول الصور المصغرة)</li>
+
+<li>عناصر الصور يمكن أن يكون لها جودة عالية من ملف مرتبط بها أما بالنسبة
+wedding.jpg في المثال أعلاه, بدون اختصار على الصورة ذات الجودة العالية</li>
+
+<li>ليس اي عناصر من الصورة (نصوص ملف الفيديو والأصوات، كل ما تريد...
+يتم تمثيلها بواسطة الافتراضي بأيقونة المقابلة لملحق اسم الملف, اختياريا ، يمكنك ربط الصورة المصغرة و الملف الممثل لها (انظر video.avi في المثال أعلاه),</li>
+
+<li><em>تحذير</em>اسم المجلد او الملف يجب ان يحتوي على حروف, الارقام, "-", "_" او ".". لا فواص ولا حتى احرف مبرزة/li>
+
+<li>بمجرد، الملفات والصور المصغرة والصور الممثلة يتم وضعها بشكل صحيح في
+    المجلدات، انتقل إلى : <span class="pwgScreen">الادارة &raquo;
+الادوات &raquo;
+   التزامن</span></li>
+
+</ul>
+</fieldset>
+
+<fieldset>
+<legend>الصور الممثلة</legend>
+<ul>
+
+<li>كل صورة يجب ان تملك صورة مصغرة</li>
+
+<li>يتم تخزين الصور المصغرة في "الصورة المصغرة" الفرعي في مجلدالالبوم
+والصورة المصغرة لها نفس اسم الملف كما الصورة المناظرة، مع اعدادات المعايير <code>prefix_thumbnail</code> كما بادئة (انظر <span class="filename">include/config.inc.php</span>).</li>
+
+<li>ملفات الصور المصغرة وليس من الضروري ان يكون ملحقها نفس
+الصورة المرتبطة بها (على سبيل المثال " JPG" صورة قد يكون لها ملحق " GIF").</li>
+
+<li>من المستحسن استخدام وحدة خارجية انشاء صورة مصغرة</li>
+
+<li>إستخدام أداة إنشاء الصورة المصغرة المتكاملة في Piwigo هو
+ليس من المستحسن، وذلك لأن جودة الناتجة قد تكون مخيبة للآمال، وهذا سوف تقع بشكل كبير على موارد الخادم (والتي يمكن أن يمثل مشكلة خطيرة على خادم مشترك)
+
+<li>إذا اخترت استخدام خادم الويب ل إنشاء الصور المصغرة ، يجب السماح حق الوصول للكتابة على كافة مجلدات الالبومات</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ar_SA/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/search.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>البحث</h2>
+
+<p>تتيح لك هذه الصفحة البحث عن صورة في كل المعرض</p>
+
+<dl>
+
+<dt>البحث عن كلمات</dt>
+<dd>البحث ل واحدة أو عدة كلمات ضمن سمات ذات الصلة
+صور المعرض الخاص بك. استخدام * كعلامة شاملة للمطابقة الجزئية.</dd>
+
+<dt>البحث عن مؤلف</dt>
+<dd>استخدام * كعلامة شاملة للمطابقة الجزئية.</dd>
+
+<dt>البحث بالتاريخ</dt>
+<dd>دد تاريخا و / أو تاريخ إنهاء للاستعلام. ترك حقل تاريخ فارغ إذا كان كنت تريد أن تجعل من "قبل" الاستعلام. يجب إدخال السنة في الحقل الأخير في الشكل التالي : AAAA (مثال 2004)</dd>
+
+<dt>البحث في الالبومات</dt>
+<dd>حدد الألبوم أو الالبومات التي تريد البحث. جميع
+الالبومات الفرعية يمكن البحث عن طريق اختيار الألبوم الأصل و إعداد تمكين البحث في الالبومات الفرعية أدناه.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ar_SA/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/synchronize.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>التزامن</h2>
+
+<p>هناك نوعين مختلفين من التزامن : المجلدات / الملفات والبيانات الوصفية . المجلدات / الملفات تزامن معلومات عن مع شجرة شجرة الألبوم في قاعدة البيانات. البيانات الوصفية هو تحديث المعلومات عن الصور مثل حجم الملف، والأبعاد بالبكسل معلومات EXIF أو IPTC.</p>
+
+<p>ويجب أن يكون التزامن الأول ل المجلدات / الملفات واحدة.</p>
+
+<p>المزامنة عملية قد تستغرق وقتا طويلا (اعتمادا على تحميل الخادم وكمية في العناصر لالمراد ادارتها) لذلك فمن الممكن أن تفعل ذلك ألبوم بعد ألبوم.</p>
Index: /tags/2.6.0RC1/language/ar_SA/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/help/user_list.html	(revision 25596)
@@ -0,0 +1,29 @@
+<h2>قوائم المستخدمون</h2>
+
+<p>هذا هو المكان المناسب لإدارة الخصائص للمستخدمين المسجلين، ما عدا
+الصلاحيات التي تدار من الشاشات الاخرى.</p>
+
+<h3>اضافة مستخدم</h3>
+
+<p>المسؤولون بامكانهم اضافة مستخدم يدويا</p>
+
+<h3>قوائم المستخدمون</h3>
+
+<p>ويمكن تصفية قائمة على اسم المستخدم (* استخدامها بدل اي حرف)، مجموعة او
+الحالة. يمكن ان يكون الامر حسب تاريخ التسجيل أو اسم المستخدم ، بالترتيب التصاعدي
+أو تنازلي.</p>
+
+<p>هذه الشاشة تسمح إدارة العديد من المستخدمين في آن واحد، وذلك باستخدام إجراءات مختلفة :</p>
+
+<ul>
+
+<li>حذف المستخدمين (يتطلب تأكيد)</li>
+<li>تغيير حالة</li>
+<li>اضافة او ازالة الى مجموعه</li>
+<li>تعديل اعدادات العرض</li>
+<li>تعديل خصائص اضافية</li>
+
+</ul>
+
+<p>الهدف هو تحديد (افتراضيا) أو لكافة المستخدمين كما
+تم عرضها في قائمة تمت تصفيتها.</p>
Index: /tags/2.6.0RC1/language/ar_SA/index.php
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ar_SA/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'التثبيت ';
+$lang['Basic configuration'] = 'التكوينات الأساسية';
+$lang['Default gallery language'] = 'اللغة الافتراضية للمعرض';
+$lang['Database configuration'] = 'تكوين قاعدة البيانات';
+$lang['Admin configuration'] = 'اعدادات المدير';
+$lang['Start Install'] = 'ابدأ التثبيت';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'سوف تظهر للزوار ، ضرورية للادارة و لوحة التحكم';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'تم الاتصال بالخادم الموقع ، لكن لم يتم يتم الاتصال بقاعدة البيانات';
+$lang['Can\'t connect to server'] = 'لا يمكن الاتصال بالخادم';
+$lang['Host'] = 'المضيف';
+$lang['User'] = 'المستخدم';
+$lang['user login given by your host provider'] = 'اصرح للمستخدم  الدخول بواسطة المضيف الخاص بك';
+$lang['user password given by your host provider'] = 'اعطي  للمستخدم كلمة المرور  بواسطة المضيف الخاص بك';
+$lang['Database name'] = 'أسم قاعدة البيانات';
+$lang['also given by your host provider'] = 'ايضا بواسط المضيف الخاص بك ';
+$lang['Database table prefix'] = 'بداية جداول قاعدة البيانات';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'الاسماءالمبتدأ في جداول قاعدة البيانات ( تمكنك من أدارة قاعدة البيانات بشكل أفضل)ـ';
+$lang['enter a login for webmaster'] = 'دخول مدير الموقع';
+$lang['webmaster login can\'t contain characters \' or "'] = 'دخول المدر لا \ يمكن تتضمن الأحرف  \' أو "';
+$lang['please enter your password again'] = 'فضلا ً أعد كتابة كلمة المرور مرةأخرى';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'ابقائه سريا، فإنه يتيح لك الوصول إلى لوحة الإدارة';
+$lang['Password [confirm]'] = 'كلمة المرور [confirm]';
+$lang['verification'] = 'التحقق';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'هل تحتاج لمساعده؟ يمكنك السؤال  <a href="%s">Piwigo لجنة الأسئلة في </a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = ' سيتمكن الزوار لاستخدام هذا البريد إلى الاتصال بالمسؤول عن الموقع';
+$lang['PHP 5 is required'] = 'مطلوب  PHP 5 ';
+$lang['It appears your webhost is currently running PHP %s.'] = 'PHP %s يبدوا أن المضيف يستخدم حاليا ';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'قد يحاول تبديل التكوين الخاص بك إلىPHP 5 عن طريق إنشاء أو تعديل ملف htaccess . Piwigo ';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'ملاحظة يمكنك تغيير التكوين الخاص بك من نفسك وإعادة Piwigo بعد ذلك.';
+$lang['Try to configure PHP 5'] = 'PHP 5 محاولة تكوين ';
+$lang['Sorry!'] = 'مـعـذرة !1';
+$lang['Piwigo was not able to configure PHP 5.'] = ' Piwigo غير قادر على تكوين PHP 5';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'تحقق من مزود الاستضافة حول دعمه لـ PHP 5';
+$lang['Hope to see you back soon.'] = 'نأمل أن نرى عودتك إلى هنا قريبا';
+$lang['Congratulations, Piwigo installation is completed'] = 'تم بحمد الله تثبيت معرضPiwigo  بنجاح  ، مبروك ';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'حل آخر هو نسخ النص في المربع أعلاه ولصقه في ملف"local/config/database.inc.php" (تحذير : database.inc.php يجب أن تحتوي فقط ما هو موجود في   النص،  الخط أو حرف مسافة)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'فشل في إنشاء ملف التكوين local/config/database.inc.php ';
+$lang['Download the config file'] = 'تحميل ملف التكوين';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'يمكنك تحميل ملف التكوين وتحميله إلى الدليل المحلي';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'لاتتردد في طلب الإستشارة و الاستفسار من خلال منتدانا للمساعده : %s';
+$lang['Just another Piwigo gallery'] = 'معرض آخر من Piwigo';
+$lang['Welcome to my photo gallery'] = 'مرحباً بك في معرض الصور';
+$lang['Welcome to your new installation of Piwigo!'] = 'مرحبا بكم في التثبيت الجديد من Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'المضيف المحلي او المقدم من قبل موفر الخدمة الخاص بك';
+?>
Index: /tags/2.6.0RC1/language/ar_SA/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+العربية [AR]
Index: /tags/2.6.0RC1/language/ar_SA/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ar_SA/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ar_SA/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'تحديث';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'معالجة التحديث يقترح تحديث قاعدة البيانات القديمة الخاصة بـ Piwigo من الاصدار القديم إلى الاصدار الجديد . مساعد الترقية يتعقد انك جاليا ً تشغل<strong> %s الأصدار </strong> ( أو ما يعادلها ).';
+$lang['Upgrade from version %s to %s'] = '%s إلى %s التحديث من الأصدار';
+$lang['Statistics'] = 'إحصاءات';
+$lang['total upgrade time'] = 'الوقت الذي يحتاجه التحديث';
+$lang['total SQL time'] = 'الوقت الذي يجتاجه المزو SQL';
+$lang['SQL queries'] = ' SQLمزود الاستعلامات';
+$lang['Upgrade informations'] = 'ترقية المعلومات ';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'للفحص والتدقيق والصيانى  [الإدارة>أدوات>الصيانة] إذا واجهتك أي مشكلة  ';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'كأجراء وقائي يجب تعطيل الاضافات ، كما ينبغي التأكد من وجود تحديثات جديدة لهذه الاضافات';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'فقط يمكن للمسؤول تشغيل الترقية : الرجاء تسجيل الدخول أدناه.';
+$lang['You do not have access rights to run upgrade'] = 'ليس لديك حقق الوصول  في تشغيل الترقية';
+$lang['All sub-albums of private albums become private'] = 'جميع البومات الفرعية من الألبومات الخاصة أصبحت خاصة';
+$lang['User permissions and group permissions have been erased'] = 'تم مسح للمستخدمين وأذونات المجموعات';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'تم حفظ بدائة الصور المصغرة ، و عنواين مدير الموقع حفظت من التكوين السابق';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'في <i>%s</i>, قبل <b>?></b>, إدراج:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'للاحتياط,الثيمات التالية تم الغاء تفعيلها.يجب ان تقوم بعملية تحديث للثيمات قبل تفعيلها';
+
+?>
Index: /tags/2.6.0RC1/language/az_AZ/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/az_AZ/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/az_AZ/common.lang.php	(revision 25596)
@@ -0,0 +1,88 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Azərbaycanca [AZ]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=618
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'Azərbaycanca';
+$lang_info['country'] = 'Azərbaycan';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'az';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d albom yeniləndi';
+$lang['%d albums updated'] = '%d albomlar yeniləndi';
+$lang['%d comment to validate'] = '%d təsdiqlənməli şərh';
+$lang['%d comment'] = '%d şərh';
+$lang['%d comments to validate'] = '%d təsdiqlənməli şərhlər';
+$lang['%d comments'] = '%d şərhlər';
+$lang['%d hit'] = '%d keçid';
+$lang['%d hits'] = '%d keçidlər';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d yeni şərh';
+$lang['%d new comments'] = '%d yeni şərhlər';
+$lang['%d new photo'] = '%d yeni foto';
+$lang['%d new photos'] = '%d yeni fotolar';
+$lang['%d new user'] = '%d yeni istifadəçi';
+$lang['%d new users'] = '%d yeni istifadəçilər';
+$lang['%d photo is also linked to current tags'] = '%d foto həmçinin bu etiketlərlə əlaqələndirilmişdir';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos are also linked to current tags'] = '%d fotolar həmçinin bu etiketlərlə əlaqələndirilmişdir';
+$lang['%d photos'] = '%d foto';
+$lang['%d rates'] = '%d qiymətlər';
+$lang['(!) This comment requires validation'] = '(!) Şərh təsdiq olunmalıdır';
+$lang['... or browse your empty gallery'] = '... ya da boş qalereyanızı gözdən keçirdin';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ya da zəhmət olmasa bu mesajı deaktiv edin, mən özüm yolu tapacam';
+$lang['A comment on your site'] = 'Saytınızdakı şərh';
+$lang['About Piwigo'] = 'Piwigo haqqında';
+$lang['About'] = 'Haqqında';
+$lang['Album'] = 'albom
+';
+$lang['File'] = 'fayl';
+$lang['Display'] = 'göstər';
+$lang['Delete'] = 'sil
+';
+$lang['Date'] = 'tarix';
+$lang['Contact'] = 'təmas';
+$lang['Calendar'] = 'təqvim';
+$lang['Are you sure?'] = 'əminsinizmi?';
+$lang['All'] = 'Bütün';
+$lang['Author'] = 'Müəllif
+';
+$lang['Album: %s'] = 'Albom: %5';
+$lang['Administration'] = 'Müdiriyyət';
+$lang['Accelerate diaporama speed'] = 'Sürətin artır
+';
+$lang['Add a comment'] = 'Geyd əlavə et';
+$lang['Admin: %s'] = 'Müdir: %5';
+$lang['%d rate'] = '%d norma';
+$lang['2small'] = 'XXS-bapbalaca';
+$lang['Comment'] = '	
+qeyd';
+$lang['Albums'] = 'Albomlar';
+?>
Index: /tags/2.6.0RC1/language/az_AZ/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/az_AZ/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/az_AZ/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Azərbaycanca [AZ]
Index: /tags/2.6.0RC1/language/bg_BG/about.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/about.html	(revision 25596)
@@ -0,0 +1,15 @@
+<p>Тази фотогалерия e базирана на Piwigo.</p>
+
+<p>Piwigo е интернет приложение,  разработено от активна общност от потребители и разработчици. Допълнителните разширения, правят Piwigo лесен за персонализиране. Черешката на тортата е, че Piwigo е безплатен и с отворен код.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Посетете страницата на  Piwigo</a></p>
+
+<p>Българският превод  се поддържа от (по азбучен ред):
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=7483">hamsia</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=14471">josifbg</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13458">n0kS</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17837">picsvet</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16006">turnokopa</a></li>
+    </ul>
+           .... благодарности</p>
Index: /tags/2.6.0RC1/language/bg_BG/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/admin.lang.php	(revision 25596)
@@ -0,0 +1,956 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Hello'] = 'Здравей';
+$lang['Notification'] = 'RSS';
+$lang['File'] = 'Файл';
+$lang['Preferences'] = 'Предпочитания';
+$lang['Rate'] = 'Оценка';
+$lang['Average rate'] = 'Средна оценка';
+$lang['Zoom'] = 'Увеличи';
+$lang['Add to caddie'] = 'Добави в кутийката';
+$lang['Width'] = 'Ширина';
+$lang['With blank value, gallery title will be used'] = 'Ако е празно, името на галерията ще се ползва';
+$lang['With no album'] = 'Без албум';
+$lang['With no tag'] = 'Без етикет';
+$lang['With no virtual album'] = 'Без виртуален албум';
+$lang['wrong filename'] = 'грешно име на файл';
+$lang['Year'] = 'Година';
+$lang['You are running on development sources, no check possible.'] = 'Вие сте стартирали разработващ се код, невъзможна проверка.';
+$lang['You are running the latest version of Piwigo.'] = 'Вие използвате последната версия на Piwigo.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Вие ползване качване през браузъра. Пробвайте <a href="%s">Флаш качване</a> като алтернатива.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Вие използвате Флаш качване. Проблеми? Пробвайте <a href="%s">качване през браузър</a> като алтернатива.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Може да надстроите до Piwigo %s направо, без актуализация с Piwigo %s (recommended).';
+$lang['You cannot delete your account'] = 'Вие не може да изтриете акаунта си';
+$lang['You cannot move an album in its own sub album'] = 'Не може да преместите албум в негов собствен под-албум';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Не може да дефинирате ред на снимките по подразбиране, заради потребителските Ви настройки в локалната конфигурация.';
+$lang['You have %d orphan tags: %s.'] = 'Имате %d необвързани етикети: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Вие сте задали <i>$conf[\'order_by\']</i> в локалния си конфигурационен файл, този параметър не се използва вече, моля премахнете го или го преименувайте на<i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Вие се абонирахте да получавате известия по имейл.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Вие прекратихте абонамента си за уведомяване по имейл.';
+$lang['You might go to plugin list to install and activate it.'] = 'Идете на списъка с добавки за да го инсталирате и активирате.';
+$lang['You need to confirm deletion'] = 'Трябва да потвърдите изтриването';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Необходимо е да актуализирате вашата система за да може да използвате пълните функции на програмата, в противен случай тя може да не работи коректно или изцяло';
+$lang['Your configuration settings are saved'] = 'Вашите конфигурационни настройки са записани';
+$lang['[%s] Visit album %s'] = '[%s] Посетен албум %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Проблеми или въпроси';
+$lang['Resize after upload'] = 'Промени размера след качването';
+$lang['Original Size'] = 'Оригинален размер';
+$lang['A locked gallery is only visible to administrators'] = 'Заключена галерия е видима само за Администратори';
+$lang['Unlock gallery'] = 'Отключи галерията';
+$lang['Gallery unlocked'] = 'Галерията е отключена';
+$lang['%d albums moved'] = '%d албуми са преместени';
+$lang['%d group'] = '%d група';
+$lang['%d groups'] = '%d групи';
+$lang['%d guest'] = '%d посетител';
+$lang['%d guests'] = '%d посетители';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ВНИМАНИЕ!Тази добавка не е съвместима с тази версия на Piwigo.';
+$lang['Week starts on'] = 'Седмицата започва от';
+$lang['Who can see these photos?'] = 'Кой може да види тези снимки?';
+$lang['Who can see this photo?'] = 'Кой може да види тази снимка?';
+$lang['width must be a number superior to'] = 'ширината трябва да бъде число, по-голямо от';
+$lang['Notification'] = "Съобщение";
+$lang['Upload Photos'] = 'Качи Снимки';
+$lang['Select an album'] = 'Избери Албум';
+$lang['... or '] = '... или ';
+$lang['create a new album'] = 'създай нов албум';
+$lang['Select files'] = 'Избери файлове';
+$lang['Start Upload'] = 'Стартирай Качването';
+$lang['Learn more'] = 'Научи повече';
+$lang['Maximum file size: %sB.'] = 'Максимален размер на файла: %sB.';
+$lang['Allowed file types: %s.'] = 'Позволени файлови формати: %s.';
+$lang['+ Add an upload box'] = '+ Добави кутийка за качване';
+$lang['Add another set of photos'] = 'Добави друг набор от снимки';
+$lang['Photo %s of %s'] = 'Снимка %s на %s';
+$lang['%d photos uploaded'] = '%d качени снимки';
+$lang['All %d photos are selected'] = 'Всички %d снимки са селектирани';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Вие използвате качване през Браузер. Можете да превключите в режим <a href="%s">Качване чрез Флаш</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Вие използвате качване чрез Флаш. Имате проблем? Можете да превключите в режим <a href="%s">Качване през Браузер</a>.';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif форматът не е разрешен, администратора трябва да забрани използването на exif';
+$lang['Hide'] = "Скрий";
+$lang['ACCESS_0'] = "Свободен достъп";
+$lang['ACCESS_1'] = "Достъп за всички";
+$lang['ACCESS_2'] = "Достъп за регистрирани потребители";
+$lang['ACCESS_3'] = "Достъп за администратори";
+$lang['ACCESS_4'] = "Достъп за уебмастери";
+$lang['ACCESS_5'] = "Достъп забранен";
+$lang['Level 1'] = "Контакти";
+$lang['Level 2'] = "Приятели";
+$lang['Photo Properties'] = 'Настройки на снимките';
+$lang['Photo name'] = 'Име на снимката';
+$lang['Name'] = 'Име';
+$lang['Description'] = 'Описание';
+$lang['Parent album'] = 'Родителски албум';
+$lang['Album name'] = 'Име на албума';
+$lang['Create'] = 'Създай';
+$lang['Level 4'] = "Семейство";
+$lang['Level 8'] = "Администратори";
+$lang['Informations'] = "Информация";
+$lang['Discover album:'] = "Разгледайте албум:";
+$lang['See you soon.'] = "До скоро.";
+$lang['Hello,'] = "Здравейте,";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "Администраторът на сайта Ви е абонирал за получаване на известия по пощата.";
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "Администраторът на сайта Ви е отписал от абонамента за получаване на известия по пощата.";
+$lang['New photos were added'] = "Нови снимки са добавени";
+$lang['on'] = "на";
+$lang['between'] = "между";
+$lang['Go to'] = "Посетете";
+$lang['See you soon,'] = "До скоро,";
+$lang['To unsubscribe'] = "За да се отпишете от абонамента";
+$lang['To subscribe'] = "За да се абонирате";
+$lang['If you encounter problems or have any question, please send a message to'] = "Ако имате проблеми или въпроси, моля изпратете съобщение до";
+
+$lang['This album contains %d photos, added on %s.'] = 'Този албум съдържа %d фотографиии, добавени на %s';
+$lang[' and %d virtual'] = 'и %d витруален';
+$lang['%d album including'] = '%d албум наличен';
+$lang['%d album moved'] = '%d албум преместен';
+$lang['%d albums including'] = '%d налични албума';
+$lang['%d anomalies have been detected corrected.'] = '%d открити и оправене проблема ';
+$lang['%d anomalies have been detected.'] = '%d открити проблема ';
+$lang['%d anomalies have been ignored.'] = '%d игнорирани проблема ';
+$lang['%d anomalies have not been corrected.'] = '%d неоправени проблема';
+$lang['%d anomaly has been corrected.'] = '%d оправен проблем';
+$lang['%d anomaly has been detected.'] = '%d открит проблем';
+$lang['%d anomaly has been ignored.'] = '%d игнориран проблем';
+$lang['%d anomaly has not been corrected.'] = '%d неоправен проблем';
+$lang['%d mail was not sent.'] = '%d имейл не е изпратен';
+$lang['%d mail was sent.'] = '%d изпратен имейл';
+$lang['%d mails were not sent.'] = '%d имейли не са изпратени';
+$lang['%d mails were sent.'] = '%d изпратени имейли';
+$lang['%d member'] = '%d потребител';
+$lang['%d members'] = '%d потребители';
+$lang['%d of %d photos selected'] = '%d от %d избрани снимки';
+$lang['%d parameter was updated.'] = '%d запаметена стойност';
+$lang['%d parameters were updated.'] = '%d запаметени стойности';
+$lang['%d photo was deleted'] = '%d изтрита снимка';
+$lang['%d photos were deleted'] = '%d изтрити снимки';
+$lang['%d tag'] = '%d таг';
+$lang['%d tags'] = '%d тагове';
+$lang['%d user deleted'] = '%d изтрит потребител';
+$lang['%d users deleted'] = '%d изтрити потребители';
+$lang['%d users'] = '%d потребители';
+$lang['%d waiting for validation'] = '%d чакат за потвърждение';
+$lang['%d user was not updated.'] = '%d потребител не е актуализиран';
+$lang['%d user was updated.'] = '%d актуализиран потребител';
+$lang['%d user'] = '%d потребител';
+$lang['%d users were not updated.'] = '%d не актуализирани потребители';
+$lang['%d users were updated.'] = '%d актуализирани потребители';
+$lang['%s has been successfully updated.'] = '%d са успешно актуализирани';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u потребители имат автоматичен достъп, като част от сигурна група';
+$lang['A new version of Piwigo is available.'] = 'Нова версия ва Piwigo е налична';
+$lang['Active Languages'] = 'Текущ език';
+$lang['Active Plugins'] = 'Активни добавки';
+$lang['Active Themes'] = 'Активни теми';
+$lang['Add a criteria'] = 'Добави критерии';
+$lang['Add a filter'] = 'Добави филтър';
+$lang['Add a tag'] = 'Добави таг';
+$lang['Add a user'] = 'Добави потребител';
+$lang['Add a virtual album'] = 'Добави виртуален албум';
+$lang['Add group'] = 'Добави група';
+$lang['Add New Language'] = 'Добави нов език';
+$lang['Add New Theme'] = 'Добави нова тема';
+$lang['Add Photos'] = 'Добави снимки';
+$lang['Add tags'] = 'Добави тагове';
+$lang['Add'] = 'Добави';
+$lang['added'] = 'добавен';
+$lang['administrators'] = 'администратори';
+$lang['Advanced features'] = 'Разширени добавки';
+$lang['Album updated successfully'] = 'Албума е обновен успешно';
+$lang['albums added in the database'] = 'албуми добавени в базата данни';
+$lang['all'] = 'всички';
+$lang['and'] = 'и';
+$lang['any visitor can see this album'] = 'албума е видим от всички';
+$lang['Applications'] = 'Приложения';
+$lang['Apply action'] = 'Потвърди действието';
+$lang['Apply selected corrections'] = 'Потвърди избраните корекции';
+$lang['Available on'] = 'Налична от';
+$lang['Available versions for'] = 'Налични версии за';
+$lang['Cancel'] = 'Отказ';
+$lang['Groups and users'] = 'Групи и потребители';
+$lang['List'] = 'Списък';
+$lang['Move to album'] = 'Премести в албум';
+$lang['Permission granted for groups'] = 'Достъпа е гарантиран за групите';
+$lang['Permission granted for users'] = 'Достъпа е гарантиран за потребители';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo за iOS (iPhone, iPad, iPod Touch)';
+$lang['registered users'] = 'регистрирани потребители';
+$lang['Select groups...'] = 'Избрани групи';
+$lang['Select users...'] = 'Избрани потребители';
+$lang['simple visitors'] = 'обикновенни потребители';
+$lang['There is no group in this gallery.'] = 'Няма групи в тази галерия';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'необходима регистрация на потребителите и допълнителен достъп за да видят този албум';
+$lang['Web Form'] = 'Уеб бланка';
+$lang[' and %d virtuals'] = 'и %d витруален';
+$lang['%d association'] = '%d свързан';
+$lang['%d associations'] = '%d свързани';
+$lang['%d line filtered'] = '%d линия филтрирана';
+$lang['%d lines filtered'] = '%d линии филтрирани';
+$lang['%d physical'] = '%d физически';
+$lang['%d physicals'] = '%d физически';
+$lang['%d user comment rejected'] = '%d потребителски коментар отхвърлен';
+$lang['%d user comment validated'] = '%d user comment одобрен';
+$lang['%d user comments rejected'] = '%d потребителски коментара отхвърлени';
+$lang['%d user comments validated'] = '%d потребителски коментара одобрени';
+$lang['(this tag will be deleted)'] = '(този таг ще бъде изтрит)';
+$lang[', click on'] = ', натисни';
+$lang['Access type'] = 'Вид достъп';
+$lang['Action'] = 'Действие';
+$lang['Actions'] = 'Действия';
+$lang['Activate'] = 'Активен';
+$lang['Add detailed content'] = 'Добавяне на детайлно съдържание';
+$lang['Add write access to the "%s" directory'] = 'Разрешаване на записване в  "%s" папка';
+$lang['Add/delete a permalink'] = 'Добавяне/изтриване на линк за връзка';
+$lang['Administration Home'] = 'Начало на Админ панел';
+$lang['Album list management'] = 'Управление на списъка с албуми';
+$lang['Albums automatically sorted'] = 'Албуми сортирани автоматично';
+$lang['All plugins are up to date.'] = 'Всички приложиния са актуализирани.';
+$lang['All themes are up to date.'] = 'Всички теми са актуализирани.';
+$lang['Allow rating'] = 'Разреши оценяване';
+$lang['Select a file'] = 'Избор на файл';
+$lang['Version'] = 'Версия';
+$lang['Virtual album added'] = 'Добавен виртуален албум';
+$lang['Virtual album deleted'] = 'Изтрит виртуален албум';
+$lang['Virtual album name'] = 'Име на виртуален албум';
+$lang['Virtual album'] = 'Виртуален албум';
+$lang['X Position'] = 'X позиция';
+$lang['Y Position'] = 'Y позиция';
+$lang['add a new watermark'] = 'добавяне на нов воден знак';
+$lang['add new photos to caddie'] = 'Добавяне на нови снимки в кутията';
+$lang['albums deleted in the database'] = 'албуми изтрити от базата данни';
+$lang['bottom left corner'] = 'долен ляв ъгъл';
+$lang['bottom right corner'] = 'долен десен ъгъл';
+$lang['top left corner'] = 'горен ляв ъгъл';
+$lang['top right corner'] = 'горен десен ъгъл';
+$lang['user_status_guest'] = 'Гост';
+$lang['user_status_normal'] = 'Потребител';
+$lang['user_status_webmaster'] = 'Уебмастър';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s трябва да зададен като "false" във вашия  local/config/config.inc.php файл';
+$lang['%s photos can not be regenerated'] = '%s снимки не могат да бъдат регенерирани';
+$lang['%s photos have been regenerated'] = '%s снимки са регенерирани';
+$lang['%s value is not correct file because exif are not supported'] = '%s стойността е невярна защото EXIF не се подържа';
+$lang['Activate Navigation Bar'] = 'Активено навигационено меню';
+$lang['Activate Navigation Thumbnails'] = 'Активни навигационни миниатюри';
+$lang['Activate comments'] = 'Активиране на коментари';
+$lang['Activate icon "%s"'] = 'Активна икона "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Активна икона "нов" до албум и снимки ';
+$lang['Album "%s" has been added'] = 'Албум "%s" беше добавен';
+$lang['Album "%s" now contains %d photos'] = 'Албум "%s" съдържа сега %d снимки';
+$lang['Album manual order was saved'] = 'Заявката за албума беше записана';
+$lang['Album photos associated to the following albums: %s'] = 'Снимките в албума са асоциирани със следните албуми: %s';
+$lang['Albums authorized thanks to group associations'] = 'Албумите са разрешени благодарение на групави асоциации';
+$lang['All extensions are up to date.'] = 'Всички разширения са актуализирани.';
+$lang['All languages are up to date.'] = 'Всички езици са актуализирани.';
+$lang['All optimizations have been successfully completed.'] = 'Всички оптимизации приключиха успешно.';
+$lang['Allow user customization'] = 'Позволи потребителски настройки';
+$lang['Allow user registration'] = 'Позволи регистрация на потребители';
+$lang['Allow users to delete their own comments'] = 'Позволи на потребителите да изтриват собствените си коментари';
+$lang['Allow users to edit their own comments'] = 'Позволи на потребителите да трият собствените си коментари';
+$lang['Anomaly'] = 'Нередност';
+$lang['Apply to sub-albums'] = 'Приложи за дъщерните албуми';
+$lang['Associate to album'] = 'Свързан с албум';
+$lang['Associated'] = 'Асоцииран';
+$lang['Authorized'] = 'Оторизиран';
+$lang['Automatic correction'] = 'Автоматична корекция';
+$lang['Available only with HTML format'] = 'Налино само с HTML формат';
+$lang['Batch Manager'] = 'Batch Мениджър';
+$lang['By rank'] = 'По ранг';
+$lang['Can\'t connect to server.'] = 'Връзката със сървъра е невъзможна.';
+$lang['Can\'t create temporary file.'] = 'Временен файл не може да бъде създаден.';
+$lang['Can\'t download archive.'] = 'Архива не може да бъде свален.';
+$lang['Can\'t read or extract archive.'] = 'Архива не може да прочетен или извлечен.';
+$lang['Cannot delete the old permalink !'] = 'Старият директен линк неможе да бъде изтрит!';
+$lang['Change Admin Colors'] = 'Промени цветовете в Админ';
+$lang['Check all'] = 'Провери всички';
+$lang['Check automatic corrections'] = 'Провери автоматични корекции';
+$lang['Check for upgrade'] = 'Проверете за ъпгрейд';
+$lang['Choose an action'] = 'Изберете действие';
+$lang['Choose an option'] = 'Изберете опция';
+$lang['Classic display'] = 'Класически изглед';
+$lang['Comments for all'] = 'Коментари за всички';
+$lang['Configuration'] = 'Конфигурация';
+$lang['Correction'] = 'Корекция';
+$lang['Database'] = 'База данни';
+$lang['Date'] = 'Дата';
+$lang['Day'] = 'Ден';
+$lang['an error happened'] = 'възникна грешка';
+$lang['associate to group'] = 'свързан с група';
+$lang['automatic order'] = 'автоматична поръчка';
+$lang['average time'] = 'средно време';
+$lang['clean'] = 'изчистване';
+$lang['confirm'] = 'потвърдение';
+$lang['created'] = 'създаден';
+$lang['%d day'] = '%d ден';
+$lang['%d days'] = '%d дни';
+$lang['%d hour'] = '%d час';
+$lang['%d hours'] = '%d часове';
+$lang['%d minute'] = '%d минута';
+$lang['%d minutes'] = '%d минути';
+$lang['%d month'] = '%d месец';
+$lang['%d months'] = '%d месеци';
+$lang['%d second'] = '%d секунда';
+$lang['%d seconds'] = '%d секунди';
+$lang['%d week'] = '%d седмица';
+$lang['%d weeks'] = '%d седмици';
+$lang['%d year'] = '%d година';
+$lang['%d years'] = '%d години';
+$lang['%s ago'] = '%s преди';
+$lang['%s in the future'] = '%s в бъдеще';
+$lang['Added by %s'] = 'Добавено от %s';
+$lang['Apply watermark if height is bigger than'] = 'Сложи водния знак, ако височината е по-голям от';
+$lang['Apply watermark if width is bigger than'] = 'Сложи водния знак, ако ширината е по-голям от';
+$lang['By %s'] = 'С %s';
+$lang['Check for updates'] = 'Провери за актуализации';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Проверката за актуализации прекъсна поради неизвестна причина.';
+$lang['Confirm merge'] = 'Потвърждение за подравняване';
+$lang['Crop'] = 'Отрязване';
+$lang['Current name'] = 'Текущо име';
+$lang['Database synchronization with files'] = 'Синхронизация на базата данни с файловете';
+$lang['Deactivate all'] = 'Деактивиране на всички';
+$lang['Deactivate'] = 'Деактивиране';
+$lang['Default user cannot be deleted'] = 'Потребителя по подразбиране не може да бъде изтрит';
+$lang['Default user does not exist'] = 'Потребител по подразбиране не същиствува';
+$lang['Delete multiple size images'] = 'Изтриване на снимки с няколко размера';
+$lang['Delete orphan tags'] = 'Изтриване на празните тагове';
+$lang['Delete selected photos'] = 'Изтриване на избраните снимки';
+$lang['Edit photo'] = 'Редакция на снимка';
+$lang['Generate multiple size images'] = 'Генериране на няколко размера на снимките';
+$lang['Multiple Size'] = 'Няколко размера';
+$lang['No group is permitted to see this private album'] = 'Няма групи с разрешение да виждат този личен албум';
+$lang['Numeric identifier : %d'] = 'Числов идентификатор : %d';
+$lang['Opacity'] = 'Затъмняване';
+$lang['Original file : %s'] = 'Оригинален файл : %s';
+$lang['Permission management'] = 'Редактиране на разрешителните за достъп';
+$lang['Photo sizes with crop'] = 'Фото размер с кроп';
+$lang['Posted %s on %s'] = 'Написано %s на %s';
+$lang['Rated %d times, score : %.2f'] = 'Оценени %d пъти, оценка : %.2f';
+$lang['Sharpen'] = 'Изостряне';
+$lang['Visited %d times'] = 'Посещения %d пъти';
+$lang['Watermark'] = 'Воден знак';
+$lang['X Repeat'] = 'X повторение';
+$lang['custom'] = 'Частен';
+$lang['default'] = 'по подразбиране';
+$lang['delete album'] = 'изтриване на албум';
+$lang['delete photo'] = 'изтриване на снимка';
+$lang['include photos with lower privacy level'] = 'включително снимки с ниско ниво на сигурност';
+$lang['middle'] = 'средно';
+$lang['Create this site'] = 'Създай този сайт';
+$lang['Default display'] = 'Екран по подразбиране';
+$lang['Delete selected users'] = 'Изтриване на избранете потребители';
+$lang['Deny selected groups'] = 'Забрани избраните групи';
+$lang['Deny selected users'] = 'Забрани избраните потребители';
+$lang['Directory does not exist'] = 'Директорията не съществува';
+$lang['Directory'] = 'Директория';
+$lang['Display options'] = 'Екранни опции';
+$lang['Download,'] = 'Сваляне,';
+$lang['Downloads'] = 'Сваляния';
+$lang['Drop into album'] = 'Избор на албум';
+$lang['ERROR'] = 'ГРЕШКА';
+$lang['Edit album permissions'] = 'Редактиране албумни разрешения';
+$lang['Edit album'] = 'Редакция на албум';
+$lang['Edit photo information'] = 'Редакция информацията на снимка';
+$lang['Edit selected tags'] = 'Редактиране на избраните тагове';
+$lang['Edit tags'] = 'Редактиране на тагове';
+$lang['Element'] = 'Елемент';
+$lang['Error list'] = 'Списък на грешките';
+$lang['Everybody'] = 'Всички';
+$lang['FTP + Synchronization'] = 'FTP + Синхронизация';
+$lang['Forbidden'] = 'Забранен достъп';
+$lang['Form'] = 'Форма';
+$lang['GD library is missing'] = 'GD библиотека липсва';
+$lang['GD version'] = 'GD версия';
+$lang['Gallery title'] = 'Име на галерия';
+$lang['Guests'] = 'Гости';
+$lang['Height'] = 'Височина';
+$lang['High definition enabled'] = 'Разрешена висока разделителна способност';
+$lang['High definition'] = 'Висока разделителна способност';
+$lang['delete'] = 'изтриване';
+$lang['deleted'] = 'изтрито';
+$lang['directories + files'] = 'директории + файлове';
+$lang['existing album'] = 'съществуващ албум';
+$lang['guest'] = 'гост';
+$lang['hide details'] = 'скриване на детайли';
+$lang['high'] = 'високо';
+$lang['Unlocked'] = 'Отключен';
+$lang['Uncheck all'] = 'Отказване на всички';
+$lang['Uninstall'] = 'Деинсталация';
+$lang['To send ?'] = 'За изпращане?';
+$lang['Templates'] = 'Шаблони';
+$lang['Support'] = 'Подръжка';
+$lang['Status'] = 'Статус';
+$lang['Statistics'] = 'Статистика';
+$lang['Show info'] = 'Показване на инфо';
+$lang['Settings'] = 'Настройки';
+$lang['Send'] = 'Изпращане';
+$lang['Selection'] = 'Селекция';
+$lang['Select:'] = 'Избери:';
+$lang['Searching...'] = 'Търсене...';
+$lang['Section'] = 'Раздел';
+$lang['Save Template Directory'] = 'Запази шаблона директория';
+$lang['Save Settings'] = 'Запази настройките';
+$lang['Restore'] = 'Възстанови';
+$lang['Resize'] = 'Преоразмеряване';
+$lang['Refresh'] = 'Опресняване';
+$lang['Random photo'] = 'Пройзволна снимка';
+$lang['Rating'] = 'Рейтинг';
+$lang['Please wait...'] = 'Моля изчакайте...';
+$lang['Plugins'] = 'Plugins';
+$lang['Public / Private'] = 'Частен/Публичен';
+$lang['Public'] = 'Публичен';
+$lang['Properties'] = 'Свойства';
+$lang['Private'] = 'Частен';
+$lang['Position'] = 'Позиция';
+$lang['Plugins which need upgrade'] = 'Plugins налични за обновяване';
+$lang['Piwigo version'] = 'Piwigo версия';
+$lang['Piwigo for Android'] = 'Piwigo за Android';
+$lang['Piwigo configuration'] = 'Piwigo конфигурация';
+$lang['Piwigo Administration'] = 'Piwigo Администриране';
+$lang['Piwigo Update'] = 'Piwigo Update';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Parameters'] = 'Параметри';
+$lang['Photos'] = 'Снимки';
+$lang['Photo Page'] = 'Фото страница';
+$lang['Permissions'] = 'Разрешения';
+$lang['Path'] = 'Път';
+$lang['Parameter'] = 'Настройки';
+$lang['Page end'] = 'Край на страница';
+$lang['Original templates'] = 'Оргинални шаблони';
+$lang['Options'] = 'Опции';
+$lang['Operating system'] = 'Операционна система';
+$lang['None'] = 'Нищо';
+$lang['No results'] = 'Няма резултати';
+$lang['New tag'] = 'Нов таг';
+$lang['New name'] = 'Ново име';
+$lang['New Version'] = 'Нова версия';
+$lang['Month'] = 'Месец';
+$lang['Move'] = 'Премести';
+$lang['Menu Management'] = 'Менюта';
+$lang['Members'] = 'Членове';
+$lang['Lock'] = 'Заключи';
+$lang['Lock albums'] = 'Заключи албум';
+$lang['Lock gallery'] = 'Заключи галерия';
+$lang['Locked'] = 'Заключен';
+$lang['Local'] = 'Локален';
+$lang['Languages'] = 'Езици';
+$lang['Install'] = 'Инсталиране';
+$lang['Image id'] = 'Номер снимка';
+$lang['Image Quality'] = 'Качество на снимка';
+$lang['Ignore selected anomalies'] = 'Игнориране на избраните аномалии';
+$lang['Ignore this update'] = 'Игнориране на този ъпдейт';
+$lang['Ignore All'] = 'Игнориране на всички';
+$lang['IP'] = 'IP адрес';
+$lang['Hour'] = 'Час';
+$lang['History'] = 'История';
+$lang['Guest cannot be deleted'] = '"Гост" не може да бъде изтрит';
+$lang['Help Me'] = 'Помощ';
+$lang['Guest Settings'] = 'Настройки на "Гост"';
+$lang['Groups'] = 'Групи';
+$lang['Group name'] = 'Име на група';
+$lang['Group'] = 'Група';
+$lang['Edit ranks'] = 'Редакция на ранговете';
+$lang['Documentation'] = 'Документация';
+$lang['Thumbnail'] = 'Миниатюри';
+$lang['Themes'] = 'Теми';
+$lang['Tools'] = 'Инструменти';
+$lang['Title'] = 'заглавие';
+$lang['Time'] = 'Време';
+$lang['User list'] = 'Списък на потребителите';
+$lang['User'] = 'Потребител';
+$lang['Uploaded Photos'] = 'Качени снимки';
+$lang['Upload'] = 'Качване';
+$lang['Updates'] = 'Обновявания';
+$lang['Update albums informations'] = 'Обновяване на информацията в албумите';
+$lang['Update Complete'] = 'Обнавяването е завършено';
+$lang['Update All'] = 'Обновяване на всички';
+$lang['errors during synchronization'] = 'грешки по време на синхронизация';
+$lang['default values'] = 'настройки по подразбиране';
+$lang['create a new site'] = 'създаване на нов сайт';
+$lang['cancel manual order'] = 'отказване на ръчна заявка';
+$lang['Validate'] = 'Потвърдено';
+$lang['Webmaster status is required.'] = 'Статуса на уебмастъра е необходим.';
+$lang['Webmaster cannot be deleted'] = 'Уебмастъра не може да бъде изтрит';
+$lang['Visit Piwigo project website'] = 'Посети Piwigo уебсайта проекти';
+$lang['Visit language site'] = 'Виж езиковият сайт';
+$lang['Visit plugin site'] = 'Виж сайта на добавката';
+$lang['Visit theme site'] = 'Виж сайта на темата';
+$lang['Waiting'] = 'В очакване';
+$lang['Visit Gallery'] = 'Посети галерията';
+$lang['Virtual Links'] = 'Виртуален линк';
+$lang['Validation'] = 'Потвърждение';
+$lang['User status'] = 'Статус на потребител';
+$lang['Users'] = 'Потребител';
+$lang['jump to album'] = 'директно към албума';
+$lang['jump to photo'] = 'директно към снимката';
+$lang['global mode'] = 'глобален начин';
+$lang['for this file format'] = 'за този файлов формат';
+$lang['for the file format'] = 'за файлов формат';
+$lang['display'] = 'екран';
+$lang['number of miniaturized photos'] = 'брой на създадените миниатюри';
+$lang['manage album photos'] = 'редактиране на албума снимки';
+$lang['photos deleted from the database'] = 'снимките са изтрити в базата данни';
+$lang['photos added in the database'] = 'снимките са добавени в базата данни';
+$lang['pending validation'] = 'в очакване на потвърждаване';
+$lang['other'] = 'друг';
+$lang['only directories'] = 'само за директории';
+$lang['manage sub-albums'] = 'администриране на под-албумите';
+$lang['manual order'] = 'ръчна заявка';
+$lang['modified'] = 'променен';
+$lang['new'] = 'нов';
+$lang['none'] = 'никой';
+$lang['nothing'] = 'нищо';
+$lang['no write access'] = 'забранен запис';
+$lang['reduce to single existing albums'] = 'намали до еденични съществуващите албуми';
+$lang['photos informations synchronized with files metadata'] = 'информацията за снимките е синхронизирана с файловете метаданни';
+$lang['photos per page'] = 'снимки на страница';
+$lang['photos updated in the database'] = 'снимката е актуализирана в базата данни';
+$lang['randomly represented'] = 'пройзволнен албум миниатюри';
+$lang['public'] = 'обществен';
+$lang['private'] = 'частен';
+$lang['pixels'] = 'пиксели';
+$lang['ranks'] = 'ранг';
+$lang['registration date'] = 'регистрационна дата';
+$lang['remove author'] = 'премахване на автора';
+$lang['remove creation date'] = 'премахване датата на създаване';
+$lang['remove tags'] = 'премахване на тагове';
+$lang['remove this filter'] = 'премахване на този филтър';
+$lang['remove title'] = 'премахване на заглавие';
+$lang['selection'] = 'избор';
+$lang['set to'] = 'задай';
+$lang['show details'] = 'показване детайли';
+$lang['singly represented'] = 'фиксиран албум миниатюри';
+$lang['status'] = 'статус';
+$lang['target'] = 'цел';
+$lang['test this remote site'] = 'тест на този отдалечен сайт';
+$lang['synchronize files metadata with database photos informations'] = 'синхронизиране на базата данни на снимките с файловете мета данни ';
+$lang['synchronize files structure with database'] = 'синхронизиране на файловата структура с базата данни';
+$lang['user_status_generic'] = 'Основен';
+$lang['user_status_admin'] = 'Администратор';
+$lang['user "%s" added'] = 'потребител "%s" добавен';
+$lang['update the database from files'] = 'обновяване на базата данни с файлове';
+$lang['unset'] = 'незададено';
+$lang['unit mode'] = 'единичен режим';
+$lang['unknown'] = 'непознат';
+$lang['the wiki'] = 'уйкипедията';
+$lang['total time'] = 'общо време';
+$lang['the forum'] = 'форумът';
+$lang['test'] = 'тест';
+$lang['sub-albums'] = 'под-албум';
+$lang['Graphics Library'] = 'Графична библиотека';
+$lang['General statistics'] = 'Обща статистика';
+$lang['Installed Languages'] = 'Инсталирани езици';
+$lang['Install on your computer,'] = 'Инсталирай на твоя компютър,';
+$lang['Invert'] = 'Обърни';
+$lang['Maximum width'] = 'Максимална ширина';
+$lang['Maximum height'] = 'Максимална височина';
+$lang['Manual order'] = 'Ръчна заявка';
+$lang['Manage Permissions'] = 'Промяна на достъпа';
+$lang['Main Page'] = 'Основна страница';
+$lang['New photos added'] = 'Нови снимки добавени';
+$lang['Move albums'] = 'Преместване на албуми';
+$lang['Page banner'] = 'Банер на страница';
+$lang['Overall'] = 'Преглед';
+$lang['Permission granted'] = 'Достъпът потвърден';
+$lang['Permission denied'] = 'Достъпът отказан';
+$lang['Read Piwigo Documentation'] = 'Прочети Piwigo Документация';
+$lang['Plugin list'] = 'Лист Плъгини (Добавки)';
+$lang['Remove all filters'] = 'Примахни всички филтри';
+$lang['Set author'] = 'Задай автор';
+$lang['Show menubar'] = 'Показване на лентата с менюто';
+$lang['Set title'] = 'Задай заглавие';
+$lang['Set creation date'] = 'Задай дата на създаване';
+$lang['Send mail to users'] = 'Напишете имейл да потребител';
+$lang['Send mail as'] = 'Напишете ни имейл';
+$lang['Synchronize'] = 'Синхронизация';
+$lang['Site manager'] = 'Сайт менаджер';
+$lang['Simulation'] = 'Симулация';
+$lang['The gallery URL is not valid.'] = 'Адреса на галерията е невалиден.';
+$lang['The whole page'] = 'Цялата страница';
+$lang['Update to Piwigo %s'] = 'Актуализирай до Piwigo %s';
+$lang['Unable to check for upgrade.'] = 'Невъзможна е проверката за актуализации';
+$lang['Two updates are available'] = 'Две актуализации са налични';
+$lang['Uninstalled Plugins'] = 'Деинсталирани Плъгини';
+$lang['Type here the title'] = 'Въведете заглавие';
+$lang['Type here the author name'] = 'Въведете името на автора';
+$lang['This site already exists'] = 'Сайта вече съществува';
+$lang['leave'] = 'оставяне';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo за Android</em> приложение ви позволява да свържете вашия Android телефон или таблица, с вашата галерия Piwigo,и да създавате няколко албума или да качване няколко снимки наведнъж.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em> Piwigo за IOS </ EM> приложението, което дава възможност да се свържете към вашата галерия Piwigo от вашия iPhone, IPAD или IPod Touch,и да създаване няколко албума или да качване няколко снимки наведнъж.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom е фотографски софтуер, предназначени за управление на големи количества цифрови изображения и публикуването им след редактирането.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Възникнала е грешка по време на извличането.Моля,проверете файловите разрешения на вашата Piwigo инсталация.<br><a href="%s">Кликнете тук за да видите грешката</a>.';
+$lang['An error has occured during upgrade.'] = 'Възникнала е грешка по време на ъпгрейд.';
+$lang['An error occured during extraction (%s).'] = 'Възникнала е грешка по време на файловата(%s)екстракция.';
+$lang['An information email was sent to group "%s"'] = 'Информационен имейл, изпратен към групата"%s"';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Както и да е само уебмастъри могат да видят този раздел, не администраторите.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture е мощен инструмент за обработка на изображения и управление на огромни библиотеки на Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture е предназначена за професионални фотографи с iPhoto.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Приблизително максимална резолюция: %dM пиксела (това  %dx%d пиксела).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Сигурен ли сте, че искате да инсталирате този ъпгрейд?Трябва да се провери дали тази версия не се нуждае от предварително деинсталиране.';
+$lang['Are you sure you want to delete this plugin?'] = 'Сигурен ли сте, че искате да изтриете този плъгин?';
+$lang['Are you sure you want to install this plugin?'] = 'Сигурен ли сте, че искате да инсталирате този плъгин?';
+$lang['Authorize users to add comments on selected albums'] = 'Разрешаване на потребителите да добавят коментари в избрани албуми';
+$lang['Automatic sort order'] = 'Автоматично подреждане';
+$lang['Bound Theme'] = 'Bound Тема';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'По подразбиране, Piwigo ще създаде нов уебразмер от HD (висока разделителна способност) версия на снимката.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'По подразбиране,центъра на интерес се поставя в средата на снимката.';
+$lang['Caddie'] = 'Caddie';
+$lang['between %.2f and %.2f'] = 'между%.2fи%.2f';
+$lang['between %d and %d pixels'] = 'между%dи%dпиксела';
+$lang['delete this site and all its attached elements'] = 'изтрийте този сайт с цялата информация свързана с него';
+$lang['dissociate from group'] = 'разграничи от групата';
+$lang['first photo added on %s'] = 'първа снимка добавена% S';
+$lang['group "%s" added'] = 'група "% S", добави';
+$lang['group "%s" deleted'] = 'групи "%s" изтрити';
+$lang['group "%s" updated'] = 'група "% S" обновена';
+$lang['Caddie management'] = 'Caddie управление';
+$lang['Center of interest'] = 'Център на интереси';
+$lang['Check integrity'] = 'проверка на цялостта';
+$lang['Complementary mail content'] = 'Допълнително към съдържанието на писмото';
+$lang['Continue processing treatment'] = 'Продължаване на провежданото лечение';
+$lang['Correction applied with error'] = 'Корекция се прилага с грешка';
+$lang['Correction applied with success'] = 'Корекцията е успешно приложена';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Коригираните аномалии вече няма да бъдат пренебрегнати';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Създайте директория "% S" в основата на вашата инсталация Piwigo';
+$lang['Default comments order'] = 'Коментари по подразбиране';
+$lang['Default photos order'] = 'Ред на снимки по подразбиране';
+$lang['Delete Representant'] = 'Изтриване умалените албуми';
+$lang['Delete selected tags'] = 'Изтриване на избраните тагове';
+$lang['Delete this language'] = 'Изтриване на този език';
+$lang['Delete this theme'] = 'Изтриване на тази тема';
+$lang['Deleted on'] = 'Изтрити';
+$lang['Deletions'] = 'Изтривания';
+$lang['Detailed informations'] = 'Подробни информации';
+$lang['Dissociate from album'] = 'Разграничаване от албум';
+$lang['Dissociated'] = 'Разграничаване';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Времето за изпълнение изтече,обработването трябва да продължи [Приблизително време: %d секунди].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Времето за изпълнение е просрочено,обработването трябва да продължи [Приблизително време: %d секунди].';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Сайтът предлага разглеждане на галерии,създаване на албуми и качване на снимки.';
+$lang['File/directory read error'] = 'Файлът/директорията не може да бъде прочетен.';
+$lang['Find a new representant by random'] = 'Изберете на случаен принцип нова икона за албума си.';
+$lang['Follow Orientation'] = 'Следвай ориентацията';
+$lang['Forbid this language to users'] = 'Забранете този език за потребителите';
+$lang['Forbid this theme to users'] = 'Забранете тази тема за потребителите';
+$lang['Get Support on Piwigo Forum'] = 'Получете помощ от форума Piwigo ';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Дайте права (chmod 777)на инсталационната директория "%s" на Piwigo';
+$lang['Go to %s or %s for more informations'] = 'Отидете %s или %s за повече информация';
+$lang['Dump Database'] = 'Изхвърляне на базата данни';
+$lang['Extensions Update'] = 'Extensions Актуализация';
+$lang['Failed to write file to disk'] = 'Записът на файла е неуспешен!';
+$lang['I decide to update anyway'] = 'Искам да ъпдейтна въпреки всичко';
+$lang['Inactive Languages'] = 'Неактивни езици';
+$lang['Inactive Plugins'] = 'Неактивни плъини';
+$lang['Inactive Themes'] = 'Активни плъгини';
+$lang['Installed Themes'] = 'Инсталирани теми';
+$lang['Instructions to use Piwigo'] = 'Инструкций за ползване на Piwigo';
+$lang['Landscape'] = 'Пейзажи';
+$lang['Language has been successfully installed'] = 'Език е инсталиран успешно';
+$lang['Languages which need upgrade'] = 'Езици, които се нуждаят от ъпгрейд';
+$lang['Extend for templates'] = 'Разширяване на шаблони';
+$lang['File upload stopped by extension'] = 'Качване на файлове спряни от разширение';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Плъгините може да не са съвместими с новата версия на Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следните теми не може да бъде съвместими с новата версия на Piwigo:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'За размери на снимки, като "Квадрат", Piwigo ще направи всичко възможно да се включи центъра на интереса.';
+$lang['Grant selected groups'] = 'Избрани големи групи';
+$lang['Do you want to activate anyway?'] = 'Искате ли да активирате така или иначе?';
+$lang['Does not represent'] = 'Не е ли картинка за';
+$lang['Drag to re-order'] = 'Щракнете и плъзнете, за да пренаредите';
+$lang['Duplicate'] = 'Дубликат';
+$lang['Duplicate selected tags'] = 'Дублиране на избраните тагове';
+$lang['Duplicates'] = 'Дублиране';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ГРЕШКА: Този плъгин липсва, но е инсталиран!Деинсталирайте сега.';
+$lang['Element type'] = 'Тип елемент';
+$lang['Email administrators when a comment is deleted'] = 'Имейл на администраторите, когато коментарът е изтрит';
+$lang['Email administrators when a comment is modified'] = 'Имейл на администраторите, когато е променен коментар';
+$lang['Email admins when a comment requires validation'] = 'Имейл на администраторите когато коментар изисква одобрение';
+$lang['Email admins when a new user registers'] = 'Имейл на администраторите, когато нов потребител се регистрира';
+$lang['Email admins when a valid comment is entered'] = 'Имейл администраторите, когато се вписва валиден коментар';
+$lang['Environment'] = 'Околна среда';
+$lang['Error on file "%s" : %s'] = 'Грешка на файла "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = 'Грешка при изпращане на електронна поща %s [%s].';
+$lang['Errors caption'] = 'Грешки легенди';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Този албум съдържа%d снимки, добавен между%sand%s.';
+$lang['There is no other language available.'] = 'Няма друг език.';
+$lang['There is no other plugin available.'] = 'Няма друг плъгин.';
+$lang['There is no other theme available.'] = 'TherНяма друга тема.';
+$lang['The name of an album must not be empty'] = 'Имената на албумите не трябва да са празни';
+$lang['Representative'] = 'Албум малки снимки';
+$lang['Representation of albums'] = 'Албум малки снимки';
+$lang['Representant'] = 'Албум Малки снимки';
+$lang['Please select at least two groups'] = 'Моля,селектирайте последните две групи';
+$lang['Portrait'] = 'Портрет';
+$lang['Other private albums'] = 'Други частни албуми';
+$lang['Panorama'] = 'Панорама';
+$lang['Manage the members'] = 'Управление на регистрираните потребители';
+$lang['Manage tags'] = 'Управление на тагавете';
+$lang['Manage photos'] = 'Управление на снимките';
+$lang['Manage photo ranks'] = 'Управление на рейтинга на снимките';
+$lang['Manage permissions for user "%s"'] = 'Управление правата на потребителите "%s"';
+$lang['Manage permissions for group "%s"'] = 'Управление на правата на групите "%s"';
+$lang['Manage authorizations for selected albums'] = 'Управление на разрешения за избрани албуми';
+$lang['Manage'] = 'Управление';
+$lang['Make this theme available to users'] = 'Направи тази тема достъпна за потребителите';
+$lang['Make this language available to users'] = 'Направи този език достъпен за потребителите';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включване на данни от историята (Внимание:паметта на сървъра,може да бъде надвишена)';
+$lang['Last send'] = 'Последно изпратено';
+$lang['Mail sent to %s [%s].'] = 'Емейла е изпратен към %s [%s].';
+$lang['Maintenance'] = 'Поддръжка';
+$lang['Include display of recent photos grouped by dates'] = '
+Включва показване на последните снимки, групирани по дати';
+$lang['Information data registered in database'] = 'Информацията е записана в базата данни';
+$lang['Last hit'] = 'Последни посещения';
+$lang['Last import'] = 'Последно внесено';
+$lang['Last revisions'] = 'Последно посещение';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Тази тема не може да бъде изтрита, защото други теми зависят от нея:% S';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Невъзможно е да деактивирате тази тема, трябва има най-малко една тема.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Невъзможно е да деактивирате този език, трябва има най-малко един език.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Невъзможно е да деактивирате този език,преди това изберете език по подразбиране.';
+$lang['Impossible automatic correction'] = 'Автоматичната корекция е невъзможна';
+$lang['Hit'] = 'Показвания';
+$lang['Group management'] = 'Управление на групите';
+$lang['Grant selected users'] = 'Избрани потребители';
+$lang['No members to manage'] = 'Няма членове за управление';
+$lang['No order field selected'] = 'Не е за избраното поле';
+$lang['No photo can be deleted'] = 'Не може да бъде изтрита снимка';
+$lang['No photo in the current set.'] = 'Няма снимка в сегашния набор.';
+$lang['Link all album photos to some existing albums'] = 'Връзка всички албуми снимки на някои съществуващи албуми';
+$lang['Mail address is obligatory for all users'] = 'Мейл адрес е задължителна за всички потребители';
+$lang['Minimum height'] = 'Минимална височина';
+$lang['Minimum privacy level'] = 'Минимална поверителност ниво';
+$lang['Minimum width'] = 'Минимална ширина';
+$lang['Miscellaneous'] = 'Разни';
+$lang['Missing Plugins'] = 'Липсващи Plugins';
+$lang['Missing a temporary folder'] = 'Липсва временна папка';
+$lang['Modify information'] = 'Промяна на информация';
+$lang['Name of the duplicate'] = 'Име на дубликата';
+$lang['Link all album photos to a new album'] = 'Връзка всички албум снимки на новия си албум';
+$lang['Linked albums'] = 'Свързаните албуми';
+$lang['Manage this set of %d photos'] = 'Управление на този набор от%d снимки';
+$lang['Merge selected groups'] = 'Обединяване на избраните групи';
+$lang['Merge selected tags'] = 'Обединяване на избрани тагове';
+$lang['Merge tags'] = 'Обединяване тагове';
+$lang['Metadata synchronization results'] = 'Резултатите от метаданни за синхронизация';
+$lang['Metadata synchronized from file'] = 'Метаданните синхронизирани от файл';
+$lang['Hoverbox display'] = 'hoverbox дисплей';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Тази тема не може да бъде активиран, тъй като основната тема липсва:%s';
+$lang['No user to send notifications by mail.'] = 'Не е посочен потребител,който да бъде уведомен с имейл';
+$lang['No photo selected, no action possible.'] = 'Не е избрана снимка,не мове да бъде предприето действие';
+$lang['No photo selected, %d photos in current set'] = 'Не е избрана снимка, %d снимки в настоящият сет.';
+$lang['No group selected, no action possible.'] = 'Не е избрана група,не може да бъде предприето действие';
+$lang['Images manual order was saved'] = 'Снимките са запазени в ръчно избран ред.';
+$lang['New parent album'] = 'Нов главен албум';
+$lang['No destination tag selected'] = 'Не е избрана дестинация';
+$lang['No display'] = 'Няма дисплей';
+$lang['No file was uploaded'] = 'Не е качен файл';
+$lang['No mail to send.'] = 'Няма имейл за изпращане.';
+$lang['No photo in this album'] = 'Няма снимка в този албум';
+$lang['Main "webmaster" user status is incorrect'] = 'Статусът на основния потребител "уебмастер" е неточен.';
+$lang['Main "webmaster" user does not exist'] = 'Основният потребител "уебмастер" не съществува';
+$lang['Main "guest" user status is incorrect'] = 'Статусът на основния потребител "гост" е неточен.';
+$lang['Main "guest" user does not exist'] = 'Основният потребител "гост" не съществува';
+$lang['Mail content'] = 'Съдържание на имейла.';
+$lang['Level 0'] = '–––';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Дръжте връзка с проектът Piwigo, абонирайте се за рекламният Newsletter на Piwigo. Ще ви бъдат изпращани имейли за новости (понякога включващи насоки за "security bug fix",които е важно да знаете и да обновявате),както и когато се случват същестшени промени с проекта. Само няколко имейла годишно.';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Във вашият php.ini файл, файлът "upload_max_filesize(%sB)  е по-голям от "post_max_size (%sB)"", трябва да промените тази настройка.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ако няма налично HD и,ако настоящият уеб размер е по-голям от параметрите на новия мащаб, Piwigo  ще го премести като HD формат и ще създаде по-малка по размер снимка,копие на оригинала.';
+$lang['Number of albums per page'] = 'Брой албуми на страница';
+$lang['Number of comments per page'] = 'Брой коментари на страница';
+$lang['Number of downloads'] = 'Брой на свалянията';
+$lang['Number of rates'] = 'Брой на ставките';
+$lang['Only private albums are listed'] = 'Само частни албуми са изброени';
+$lang['Optimizations have been completed with some errors.'] = 'Оптимизацията завършена с някои грешки.';
+$lang['Pages seen'] = 'Посетени страници';
+$lang['Pending Comments'] = 'Очакващи одобрение коментари';
+$lang['User comments validation'] = 'Потвърждаване на потребителски коментари';
+$lang['View in gallery'] = 'Преглед в галерия';
+$lang['Used metadata'] = 'Метадата използвана';
+$lang['Update photos information'] = 'Обновяване на информацията на снимки';
+$lang['Unknown upload error'] = 'Нейзвестна грешка при качване';
+$lang['Synchronize metadata'] = 'Синхронизиране на метаданни';
+$lang['Summary'] = 'Общо';
+$lang['Rename'] = 'Прейменуване';
+$lang['Ratio'] = 'Съотношение';
+$lang['Privacy level'] = 'Ниво на достъп';
+$lang['Photo informations updated'] = 'Имформацияна за снимката ъпдейтвана';
+$lang['Password is missing. Please enter the password.'] = 'Липсва парола. Моля въведете.';
+$lang['Permalink'] = 'Персонализиран линков';
+$lang['Permalink %s is already used by album %s'] = 'Пермалинкае %s се използва вече от друг албум %s';
+$lang['Permalink history'] = 'История на пермалинковете';
+$lang['Permalinks'] = 'Персонализирани линкове';
+$lang['Other plugins'] = 'Други налични плъгини';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Моля,проверете "plugins" папката и под папките за права  (CHMOD). ';
+$lang['Operation in progress'] = 'Лечение в ход.';
+$lang['Notify administrators when a comment is'] = 'Уведомяване на администратора когато има коментар';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Името на пермалинка може да съдържа само a-z, A-Z, 0-9, "-", "_" или "/". Не трябва да е само число или да започва с "-"';
+$lang['Sum of rates'] = 'Обща оценка';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader означава <em>Piwigo Uploader</em>. От вашия компютър, pLoader подготвя вашите снимки и ги качва в Piwigo галерията Ви.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo публикуваните плъгини позволяват да експортирате и синхронизирате снимки от Lightroom директно във Piwigo галерията.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Абонатите могат да бъдат изброени (свободно), само ако има нови елементи, за уведомяване.';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Пермалинка %s е вече използван от албум %s. Изтрийте го първо от списъка с пермалинкове.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = ' Piwigo export плъгина ви позволява да създадете албуми и експортирате снимки.';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Версията на %s [%s] която е инсталирана не е съвместима със заявената версия [%s]';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Използвай сортиране на снимки по подръзбиране (зададено в конфигурационния файл)';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Този е важен ъпдейт, с <a href="%s">нови важни елементи</a>.';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Името на директориите и файловете трябва да съдържат само букви, цифри , "-", "_" или "."';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Файла или директорията не е достъпен (или липсва или е със забранен достъп)';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Цевтъра на внимание и мястото най-важно във фотографията.';
+$lang['Some upgrades are available for extensions.'] = 'Някой актуализации са налични за разширенията.';
+$lang['Some themes and plugins may be not available yet.'] = 'Някои теми и плъгини може още да не са налични.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell е с отворен код цифрова организатор на снимки, който работи на Linux. Това е фото мениджърът по подразбиране и в Ubuntu и Fedora.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Изберете зона с мишката, за да определят нов център на интереси.';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Подмяна на оригиналните шаблони със персонализирани шаблони от папката с разширени шаблони';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'За да експортирате вашите снимки от digiKam към Piwigo, просто инсталирайте digiKam и Kipi-плъгини.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Потребител %s [%s] добавен в абонаментния списък.';
+$lang['Switch to clear or dark colors for administration'] = 'Изберете светли или тъмни цветове за админ панела';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Потребител %s [%s] не е добавен към списъка с абонамент.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto е мениджърът по подразбиране на снимки в MacOSX. Piwigo експорт плъгина ви позволи да създадете нови албуми и експортирате вашите снимки директно от iPhoto към снимката Piwigo галерия.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Името на група не може да съдържа " ири \' или да е празно.';
+$lang['Toggle \'default group\' property'] = 'Обърни \'default group\' собственост';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Времето,за подготвка на списъка с потребителите, на които ще бъде изпратена поща е ограничен. Други потребители не са изброени.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery клиент за Android) е с отворен код (GPL v3) Piwigo клиент за платформата Android.';
+$lang['Purge user cache'] = 'Почистване на потребителския кеш';
+$lang['Purge compiled templates'] = 'Почестване на съставните шаблони';
+$lang['Photos generation in progress...'] = 'Генерирането на снимки е в прогрес...';
+$lang['Type in a search term'] = 'Въведете дума за търсене';
+$lang['This name is already used by another group.'] = 'Името вече е използвано от друга група';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Времето за изпращане на поща е ограничено. Другите мейли ще бъдат пропуснати.';
+$lang['This is a minor update, with only bug corrections.'] = 'Това е малък ъпдейт, само с корекции на грешките.';
+$lang['There is no available subscribers to mail.'] = 'Няма налични абонати за уведомяване по имейл.';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'показване на максимална информация (добавени албуми и снимки, изтрити албуми и снимки)';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam е предназначен за фотографи, които искат да преглеждат, управляват, редактират, подобряват, организират и споделят снимки.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam e разширен фото менаджер и безплатен софтуер за Linux, Windows и MacOSX.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Предупреждение: абониране или отписването ще изпрати имейли до потребителите';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Качения файл надвишава upload_max_filesize ограничение записано в php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Качения файл надвишава MAX_FILE_SIZE ограничението записано в HTML формата';
+$lang['The original maximum height must be a number between %d and %d'] = 'Оригиналната максимална височина трябва да е число между %d и %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Оригиналната максимална ширина трябва да е число между %d и %d';
+$lang['The original image quality must be a number between %d and %d'] = 'Оригиналното качество на изображението трябва да е число между %d и %d';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Броя коментари на страница трябва да бъде между 5 и 50 включени';
+$lang['apply automatic sort order'] = 'задай автоматичния ред на сортиране';
+$lang['only perform a simulation (no change in database will be made)'] = 'изпълнява само симулация (нищо няма да се промени в базата данни)';
+$lang['even already synchronized photos'] = 'дори вече синхронизирани снимки';
+$lang['Subscribe/unsubscribe users'] = 'Запиши / отпиши потребители';
+$lang['The anomaly will be ignored until next application version'] = 'Нередността ще бъде игнорирана до следващата версия на програмата';
+$lang['Refresh photo set'] = 'Обнови зададената снимка';
+$lang['Start pLoader and add your photos.'] = 'Стартиране pLoader и добавяне на снимките Ви.';
+$lang['Repair and optimize database'] = 'Възстановяване и оптимизация на базата';
+$lang['Reinitialize check integrity'] = 'Повторна проверка на цялостта';
+$lang['Photo unreachable or no support'] = 'Снимката недостъпна или неподържан формат';
+$lang['Permission granted thanks to a group'] = 'Достъп гарантиран благодарине на група';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Потвърждение на паролата липсва. Моля повторете паролата.';
+$lang['Order of menubar items has been updated successfully.'] = 'Заявката с елементи в менюбар-а е актуализирана успешно';
+$lang['Optional URL keyword'] = 'Незадължителна URL ключова дума';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Във Linux, просто инсталирайте Shotwell с вашият мениджър за управление на пакетите и след това активирайте Piwigo опция за публикуване.';
+$lang['Select recipients'] = 'Избор на получатели';
+$lang['Send an information email to group members'] = 'Изпратете имейл с информация до члуновете на групата';
+$lang['Select the destination tag'] = 'Изберете носочващия таг';
+$lang['Predefined filter'] = 'Предварително зададен филтър';
+$lang['Unable to dump database.'] = 'Не може да се отдели от базата данни';
+$lang['Type here the name of the new group'] = 'Въведете тук името на новата група';
+$lang['This theme was not designed to be directly activated'] = 'Темата не е създадена за директно активиране';
+$lang['This group will be set to default'] = 'Тази група е използване по подразбиране';
+$lang['This group will be unset to default'] = 'Тази група вече не е използвана по подразбиране';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Потребител %s [%s] не е премахнат от списъка с абонаментите.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Потребител %s [%s] е премахнат от списъка с абонаментите.';
+$lang['Select at least one comment'] = 'Изберете поне един коментар';
+$lang['Select at least one album'] = 'Изберете поне един албум';
+$lang['Source tag'] = 'Таг източник';
+$lang['Select at least two tags for merging'] = 'Изберете поне два тага за обединяване';
+$lang['Select at least one user'] = 'Изберете поне един потребител';
+$lang['Select at least one photo'] = 'Изберете поне една снимка';
+$lang['Replacers (customized templates)'] = 'Заместители (персонализирани шаблони)';
+$lang['Search for new images in the directories'] = 'Търсене на нови снимки в директориите';
+$lang['Save to permalink history'] = 'Запази история на пармалинковете';
+$lang['Reset ignored updates'] = 'Нулиране игнорираните ъпдейти';
+$lang['Represents'] = 'Е миниатюра за';
+$lang['The %d following tags were deleted'] = 'Следните %d тагове бяха изтрити';
+$lang['Templates configuration has been recorded.'] = 'Конфигурацията на темата беше записана.';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Тагове <em>%s</em> обединени в тагове <em>%s</em>';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Таг "%s" сега се дублира с "%s"';
+$lang['Tag "%s" was added'] = 'Таг "%s" беше добавен';
+$lang['Remove from caddie'] = 'Премахни от caddie';
+$lang['Remote'] = 'Дистанционно';
+$lang['Released on'] = 'Издадено от';
+$lang['Rating by guests'] = 'Рейтинг от гост';
+$lang['Reject'] = 'Отхвърляне';
+$lang['Subscribed'] = 'Абонирахте се';
+$lang['Tag selection'] = 'Тагове избрани';
+$lang['Subscribe to notification by mail'] = 'Абониране за уведомяване по имейл';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Абониране %s за Piwigo новини и съобщения';
+$lang['Status of user "%s" updated'] = 'Потребител "%s" статус актуализиран';
+$lang['Subscribe'] = 'Абониране';
+$lang['Subscribe %s'] = 'Абониране %s';
+$lang['Thumbnails generation in progress...'] = 'Образуване на миниатюри в процес...';
+$lang['This album contains no photo.'] = 'Албума не съдържа снимки.';
+$lang['Themes which need upgrade'] = 'Теми нуждаещи се от актуализация';
+$lang['The following tag was deleted'] = 'Избраният таг е изтрит';
+$lang['Orphan tags deleted'] = 'Необвързаните тагове изтрити';
+$lang['Obsolete Plugins'] = 'Остаряли плъгини';
+$lang['Rate date'] = 'Дата на оценяване';
+$lang['Purge sessions'] = 'Почистване на сесиите';
+$lang['Purge search history'] = 'Почистване на историята на търсене';
+$lang['Purge never used notification feeds'] = 'Почистване на никога нейзползвани полета';
+$lang['Purge history summary'] = 'Почистване на историята общо';
+$lang['Purge history detail'] = 'Почистване на историята детайли';
+$lang['Theme has been successfully installed'] = 'Темата беше успешно инсталирана';
+$lang['The whole set'] = 'Целият комплект';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Качените файлове надхвърлят post_max_size размера в php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Качвания файл беше качен частично';
+$lang['height must be a number superior to'] = 'Височината трябва да е число, по-голямо от';
+$lang['Virtual albums to move'] = 'Виртуалнни албуми за местене';
+$lang['Unsubscribe from notification by mail'] = 'Отписване от уведомявания по имейл';
+$lang['Unsubscribed'] = 'Отписване';
+$lang['You can activate only one mobile theme.'] = 'Може да активирате само една мобилна тема.';
+$lang['Update in progress... Please wait.'] = 'Ъпдейт в изпълнение... Моля изчакайте.';
+$lang['User "%s" created with "%s" like password'] = 'Потребител "%s" създаден с "%s" за парола';
+$lang['User %s [%s] added.'] = 'Потребител %s [%s] добавен.';
+$lang['include child albums'] = 'включително дъщерни албуми';
+$lang['on the %d selected photos'] = 'във %d избрани снимки';
+$lang['overrides existing values with empty ones'] = 'замяна на съществуващо съдържание с празини полета';
+$lang['photos candidates for metadata synchronization'] = 'снимки кандидати за синхронизация на метатаговете';
+$lang['Tag "%s" already exists'] = 'Тага "%s" вече съществува';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ТОЗИ ПЛЪГИН НЕ Е ЧАСТ ОТ PIWIGO !!! ДЕИНСТАЛИРАЙТЕ ГО !!!';
+$lang['Storage album'] = 'Съхранен албум';
+$lang['Set as default theme for unregistered and new users'] = 'Задаване на тема по подразбиране за нерегистрирани и нови потрибители';
+$lang['Set as default language for unregistered and new users'] = 'Задаване на език по подразбиране за нерегистрирани и нови потрибители';
+$lang['Send mail on HTML format'] = 'Изпрати мейл в HTML формат';
+$lang['Send connection settings by email'] = 'Изпрати найстройките за връзка по имейл';
+$lang['Save visits in history for'] = 'Запазване на историята на посещенията за';
+$lang['Save manual order'] = 'Запази индивидуална заявка';
+$lang['Save order'] = 'Запази заявка';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Върни в начални настройки. Ще загубите всички плъгин настройки.';
+$lang['Quick Local Synchronization'] = 'Бърза локална синхронизация';
+$lang['Privacy level set to "%s"'] = 'Зададено ниво на достър "%s"';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo публикува плъгин за Aperture';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не може да открие файла за актуалезация на сървъра';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo публикува плъгин за Lightroom';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo публикува новини';
+$lang['Number of thumbnails to create'] = 'Брой на миниатюрите за създаване';
+$lang['Not cropped correctly?'] = 'Не е кропнат провилно?';
+$lang['Plugin has been successfully copied'] = 'Този плъгин беше записан успешно';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo издаде плъгин за digiKam';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo издаде плъгин за Shotwell';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo издаде плъгин за iPhoto';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Размерите на снимката ще бъдат редуцирани до %dx%d пиксела.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Преоразмеряване след качването е забранено ако ползвате GD за графична библиотека';
+$lang['Select at least one tag'] = 'Изберете поне един таг';
+$lang['General'] = 'Общо';
+$lang['Mail theme'] = 'Mail тема';
+$lang['Basic settings'] = 'Основни настройки';
+?>
Index: /tags/2.6.0RC1/language/bg_BG/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Български [BG]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=510
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Български";
+$lang_info['country'] = "България";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "bg";
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d албума е обновен';
+$lang['%d albums updated'] = '%d албумите са обновени';
+$lang['%d comment to validate'] = '%d коментар за одобрение';
+$lang['%d comments to validate'] = '%d коментари за одобрение';
+$lang['%d new comment'] = '%d нов коментар';
+$lang['%d new comments'] = '%d нови коментари';
+$lang['%d comment'] = '%d коментар';
+$lang['%d comments'] = '%d коментари';
+$lang['%d hit'] = '%d показан';
+$lang['%d hits'] = '%d показвания';
+$lang['%d new photo'] = '%d нова снимка';
+$lang['%d new photos'] = '%d нови снимки';
+$lang['%d new user'] = '%d нов потребител';
+$lang['%d new users'] = '%d нови потребители';
+$lang['About'] = 'За нас';
+$lang['All tags'] = 'Всички етикети';
+$lang['Any tag'] = 'Всеки етикет';
+$lang['At least one listed rule must be satisfied.'] = 'Най-малко един критерии трябва да бъде изпълнен.';
+$lang['Author'] = 'Автор';
+$lang['Albums'] = 'Албуми';
+$lang['Album'] = 'Албум';
+$lang['Close this window'] = 'Затворете този прозорец';
+$lang['Complete RSS feed (photos, comments)'] = 'Пълна RSS емисия (снимки, коментари)';
+$lang['Confirm Password'] = 'Потвърдете паролата';
+$lang['Connection settings'] = 'Настройки за свързване';
+$lang['Login'] = 'Вход';
+$lang['Contact webmaster'] = 'Контакт Уебмастър';
+$lang['Create a new account'] = 'Регистрация на нов потребител';
+$lang['Created on'] = 'Създаден на';
+$lang['Creation date'] = 'Дата на създаване';
+$lang['Current password is wrong'] = 'Въведената парола е грешна';
+$lang['Dimensions'] = 'Размери';
+$lang['Display'] = 'Изглед';
+$lang['Each listed rule must be satisfied.'] = 'Всяко правило от списъка трябва да е изпълнено.';
+$lang['Email address'] = 'Мейл адрес';
+$lang['Enter your personnal informations'] = 'Въведете Вашата лична информация';
+$lang['Error sending email'] = 'Грешка при изпращането на електронната поща';
+$lang['File name'] = 'Име на файла';
+$lang['File'] = 'Файл';
+$lang['Filesize'] = 'Размер на файла';
+$lang['Filter and display'] = 'Филтър и изглед';
+$lang['Filter'] = 'Филтър';
+$lang['Forgot your password?'] = 'Забравена парола';
+$lang['Go through the gallery as a visitor'] = 'Преглед на галерията като посетител';
+$lang['Help'] = 'Помощ';
+$lang['Identification'] = 'Регистрация/Вход';
+$lang['Photos only RSS feed'] = 'RSS Емисия само за снимки';
+$lang['Keyword'] = 'Ключова дума';
+$lang['day'][0] = 'Нд';
+$lang['day'][1] = 'Пн';
+$lang['day'][2] = 'Вт';
+$lang['day'][3] = 'Ср';
+$lang['day'][4] = 'Чт';
+$lang['day'][5] = 'Пт';
+$lang['day'][6] = 'Сб';
+$lang['month'][10] = 'Октомври';
+$lang['month'][11] = 'Ноември';
+$lang['month'][12] = 'Декември';
+$lang['month'][1] = 'Януари';
+$lang['month'][2] = 'Февруари';
+$lang['month'][3] = 'Март';
+$lang['month'][4] = 'Април';
+$lang['month'][5] = 'Май';
+$lang['month'][6] = 'Юни';
+$lang['month'][7] = 'Юли';
+$lang['month'][8] = 'Август';
+$lang['month'][9] = 'Септември';
+$lang['slideshow'] = 'Слайдшоу';
+$lang['stop the slideshow'] = 'Спри слайдшоуто';
+$lang['Specials'] = 'Покажи';
+$lang['SQL queries in'] = 'SQL запитвания в';
+$lang['display only recently posted photos'] = 'покажи само наскоро добавени снимки';
+$lang['return to the display of all photos'] = 'върни се на преглед на всички снимки';
+$lang['the beginning'] = 'началото';
+$lang['Thumbnails'] = 'Умален преглед';
+$lang['Menu'] = 'Меню';
+$lang['A comment on your site'] = 'Коментар на Вашият сайт';
+$lang['today'] = 'днес';
+$lang['Update your rating'] = 'Обновете Вашето гласуване';
+$lang['the username must be given'] = 'потребителското име е задължително';
+$lang['useful when password forgotten'] = 'полезно в случай на забравена парола';
+$lang['Quick search'] = 'Бързо търсене';
+$lang['Connected user: %s'] = 'Свързан потребител: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Браузър: %s';
+$lang['Author: %s'] = 'Автор: %s';
+$lang['Comment: %s'] = 'Коментар: %s';
+$lang['Comment by %s'] = 'Коментар от %s';
+$lang['User: %s'] = 'Потребител: %s';
+$lang['Email: %s'] = 'Мейл: %s';
+$lang['Admin: %s'] = 'Админ: %s';
+$lang['Registration of %s'] = 'Регистрация на %s';
+$lang['Album: %s'] = 'Албум: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Грешен статус за потребител "guest", ще бъде използвана настройка по подразбиране. Моля уведомете уебмастерът.';
+$lang['this email address is already in use'] = 'този емайл адрес вече се използва.';
+$lang['Album results for'] = 'Албумни резултати за';
+$lang['Tag results for'] = 'Таг резултати за';
+$lang['from %s to %s'] = 'от %s до %s';
+$lang['Play of slideshow'] = 'Пусни слайдшоу';
+$lang['Pause of slideshow'] = 'Пауза на слайдшоуто';
+$lang['Repeat the slideshow'] = 'Повтори слайдшоуто';
+$lang['Not repeat the slideshow'] = 'Не повтаряй слайдшоуто';
+$lang['Reduce diaporama speed'] = 'Намали скоростта на слайдшоуто';
+$lang['Accelerate diaporama speed'] = 'Увеличи скоростта на слайдшоуто';
+$lang['Submit'] = 'Изпрати';
+$lang['Yes'] = 'Да';
+$lang['No'] = 'Не';
+$lang['%d photo'] = '%d снимка';
+$lang['%d photos'] = '%d снимки';
+$lang['%d photo is also linked to current tags'] = '%d снимката е свързана също и с настоящите тагове';
+$lang['%d photos are also linked to current tags'] = '%d снимките са свързани също и с настоящите тагове';
+$lang['display photos linked to this tag'] = 'покажи снимките свързани с този таг';
+$lang['photos posted during the last %d days'] = 'добавени снимки през последните %d дни';
+$lang['Piwigo Help'] = 'Piwigo Помощ';
+$lang['Rank'] = 'Ранг';
+$lang['group by letters'] = 'групирай по букви';
+$lang['letters'] = 'букви';
+$lang['show tag cloud'] = 'покажи облак от тагове';
+$lang['cloud'] = 'облак';
+$lang['Reset to default values'] = 'Върни до настройки по подразбиране';
+$lang['delete all photos from your favorites'] = 'изтрий всички снимки от любими';
+$lang['Sent by'] = 'Изпратено от';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Блокирали сте бисквитките или Вашият браузър не ги поддържа. Разрешете бисквитките за да влезете в системата.';
+$lang['Edit a comment'] = 'Редактирай коментар';
+$lang['Are you sure?'] = 'Сигурен ли сте?';
+$lang['%d Kb'] = '%d Кб';
+$lang['Links'] = 'Линкове';
+$lang['N/A'] = 'Не е налична';
+$lang['New on %s'] = 'Нови на %s';
+$lang['Notification'] = 'RSS';
+$lang['Number of items'] = 'Брой обекти';
+$lang['Original dimensions'] = 'Оригинален размер';
+$lang['Password forgotten'] = 'Забравена парола';
+$lang['Password'] = 'Парола';
+$lang['Post date'] = 'Дата на добавяне';
+$lang['Posted on'] = 'Добавен на';
+$lang['Profile'] = 'Профил';
+$lang['Quick connect'] = 'Вход/Регистрация';
+$lang['RSS feed'] = 'RSS запис';
+$lang['Register'] = 'Регистрация';
+$lang['Registration'] = 'Регистрация';
+$lang['Related tags'] = 'Свързани тагове';
+$lang['Reset'] = 'Изчистване';
+$lang['Retrieve password'] = 'Възстанови парола';
+$lang['Search rules'] = 'Критерий за търсене';
+$lang['Search tags'] = 'Търси тагове';
+$lang['Search'] = 'Търси';
+$lang['display available tags'] = 'покажи налични тагове';
+$lang['Since'] = 'От';
+$lang['Sort by'] = 'Сортирано по';
+$lang['Sort order'] = 'Сортирай по';
+$lang['Tag'] = 'Таг';
+$lang['Tags'] = 'Тагове';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS записа предлага уведомяване от този сайт, когато има: нови снимки, обновени албуми, нови коментари. Използвайте четец за RSS записи.';
+$lang['Unknown feed identifier'] = 'Неизвестен идентификатор на записи';
+$lang['User comments'] = 'Потребителски коментари';
+$lang['Username'] = 'Потребителско име';
+$lang['Visits'] = 'Посещения';
+$lang['Webmaster'] = 'Уебмастър';
+$lang['Week %d'] = 'Седмица %d';
+$lang['About Piwigo'] = 'За Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Вие нямате права за достъп до желаната страница.';
+$lang['add this photo to your favorites'] = 'добави снимката в любими';
+$lang['Administration'] = 'Администрация';
+$lang['all'] = 'всички';
+$lang['ascending'] = 'възходящ ред';
+$lang['author(s) : %s'] = 'автор(и) : %s';
+$lang['Expand all albums'] = 'Покажи всички албуми';
+$lang['posted after %s (%s)'] = 'качени след %s (%s)';
+$lang['posted before %s (%s)'] = 'качени преди %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'качени между %s (%s) и %s (%s)';
+$lang['posted on %s'] = 'качени на %s';
+$lang['Best rated'] = 'Най-добра оценка';
+$lang['display best rated photos'] = 'покажи снимките с най-добри оценки';
+$lang['Calendar'] = 'Календар';
+$lang['All'] = 'Всички';
+$lang['display each day with photos, month per month'] = 'покажи всеки ден със снимки, месец по месец';
+$lang['View'] = 'Изглед';
+$lang['chronology_monthly_calendar'] = 'хронологичен месечен календар';
+$lang['chronology_monthly_list'] = 'хронологичен списък с месеци';
+$lang['chronology_weekly_list'] = 'хронологичен списък със седмици';
+$lang['Click here if your browser does not automatically forward you'] = 'Натиснете тук ако браузера не Ви пренасочи автоматично';
+$lang['comment date'] = 'дата на коментар';
+$lang['Comment'] = 'Коментар';
+$lang['Your comment has been registered'] = 'Вашият коментар бе регистриран';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Анти-флуд система: моля изчакайте малко преди да напишете друг коментар';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Вашият коментар не бе регистриран защото не отговаря на правилата за писане на коментари';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Администратор трябва да одобри Вашият коментар преди да бъде видим.';
+$lang['This login is already used by another user'] = 'Това потребителско име вече се използва от друг потребител.';
+$lang['Comments'] = 'Коментари';
+$lang['Add a comment'] = 'Добави коментар';
+$lang['created after %s (%s)'] = 'добавени след %s (%s)';
+$lang['created before %s (%s)'] = 'добавени преди %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'добавени между %s (%s) и %s (%s)';
+$lang['created on %s'] = 'добавени на %s';
+$lang['Customize'] = 'Персонализирай';
+$lang['Your Gallery Customization'] = 'Персонализиране на Вашата Галерия';
+$lang['Default'] = 'По подразбиране';
+$lang['delete this photo from your favorites'] = 'изтрий тази снимка от любими';
+$lang['Delete'] = 'Изтрий';
+$lang['descending'] = 'низходящ ред';
+$lang['Download'] = 'изтегли';
+$lang['Download this file'] = 'свалете този файл';
+$lang['edit'] = 'редактирай';
+$lang['wrong date'] = 'грешна дата';
+$lang['excluded'] = 'изключени';
+$lang['Your favorites'] = 'Вашите любими';
+$lang['display your favorites photos'] = 'покажи вашите любими снимки';
+$lang['Favorites'] = 'Любими';
+$lang['First'] = 'Първа';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Галерията е заключена за поправка. Моля, елате по-късно.';
+$lang['Page generated in'] = 'Страница генерирана за';
+$lang['guest'] = 'гост';
+$lang['Hello'] = 'Здравей';
+$lang['available for administrators only'] = 'само за администратори';
+$lang['display this album'] = 'покажи този албум';
+$lang['display last user comments'] = 'покажи последните коментари';
+$lang['customize the appareance of the gallery'] = 'персонализиране на външния вид на галерията';
+$lang['search'] = 'търси';
+$lang['Home'] = 'Начало';
+$lang['in this album'] = 'в този албум';
+$lang['in %d sub-album'] = 'в %d под-албум';
+$lang['in %d sub-albums'] = 'в %d под-албуми';
+$lang['included'] = 'включено';
+$lang['Invalid password!'] = 'Грешна парола!';
+$lang['Language'] = 'Език';
+$lang['last %d days'] = 'последните %d дни';
+$lang['Last'] = 'Последна';
+$lang['Logout'] = 'Изход';
+$lang['obligatory'] = 'задължително';
+$lang['display a calendar by creation date'] = 'покажи календар по дата на създаване';
+$lang['display all photos in all sub-albums'] = 'покажи всички снимки във всички под-албуми';
+$lang['return to normal view mode'] = 'върнете се към нормален изглед';
+$lang['display a calendar by posted date'] = 'показване на календар от дата на публикуване';
+$lang['display most visited photos'] = 'покажи най-посещаваните снимки';
+$lang['Unknown identifier'] = 'Неизвестен идентификатор';
+$lang['New password'] = 'Нова парола';
+$lang['Rate this photo'] = 'Оцени тази снимка';
+$lang['Next'] = 'Следващ';
+$lang['no rate'] = 'няма оценка';
+$lang['Photos posted within the last %d day.'] = 'Снимки, публикувани в рамките на последния/те %d ден/дни.';
+$lang['Photos posted within the last %d days.'] = 'Снимки, публикувани в рамките на последния/те %d ден/дни.';
+$lang['password updated'] = 'паролата е актуализирана';
+$lang['Recent period must be a positive integer value'] = 'Последния период трябва да бъде положително цяло число';
+$lang['Click on the photo to see it in high definition'] = 'Кликнете върху снимката за да я видите с висока резолюция';
+$lang['Show file metadata'] = 'Покажи метаданните на файла';
+$lang['Preferences'] = 'Предпочитания';
+$lang['Previous'] = 'Предишен';
+$lang['Random photos'] = 'Случайни снимки';
+$lang['display a set of random photos'] = 'показване набор от случайни снимки';
+$lang['Recent albums'] = 'Последни албуми';
+$lang['display recently updated albums'] = 'показване наскоро актуализирани албуми';
+$lang['Recent period'] = 'Последния период';
+$lang['Recent photos'] = 'Последните снимки';
+$lang['display most recent photos'] = 'показване най-новите снимки';
+$lang['Redirection...'] = 'Пренасочване...';
+$lang['Please, enter a login'] = 'Моля, въведете потребителско име';
+$lang['login mustn\'t end with a space character'] = 'потребителското име не трябва да завършва с интервал';
+$lang['login mustn\'t start with a space character'] = 'потребителското име неможе да започва с интервал';
+$lang['this login is already used'] = 'потребителското име е заето';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'мейл адресът трябва да бъде подобно на xxx@yyy.eee (пример : jack@altern.org)';
+$lang['Auto login'] = 'Автоматично влизане';
+$lang['remove this tag from the list'] = 'премахване на този маркер от списъка';
+$lang['representative'] = 'представител';
+$lang['Search for Author'] = 'Търсене на автор';
+$lang['Search in albums'] = 'Търсене в албумите';
+$lang['Search by date'] = 'Търсене по дата';
+$lang['Date'] = 'Дата';
+$lang['End-Date'] = 'Крайна дата';
+$lang['Kind of date'] = 'Вид дата';
+$lang['Search for words'] = 'Търсене за думи';
+$lang['Search for all terms'] = 'Търсене за всички условия';
+$lang['Search for any term'] = 'Търсене за условия ';
+$lang['Most visited'] = 'Най-посещавани';
+$lang['photo'] = 'снимка';
+$lang['Powered by'] = 'Осъществено от';
+$lang['Empty query. No criteria has been entered.'] = 'Празна заявка. Не е въведен критерии.';
+$lang['Search results'] = 'Резултати от търсенето';
+$lang['Search in sub-albums'] = 'Търсене в под-албуми';
+$lang['searched words : %s'] = 'търсени думи : %s';
+$lang['Contact'] = 'Контакт';
+$lang['set as album representative'] = 'задай снимка на албума';
+$lang['Show number of comments'] = 'Показване броя на коментарите';
+$lang['Show number of hits'] = 'Покажи брой на попаденията';
+$lang['(!) This comment requires validation'] = '(!) Този коментар изисква валидация';
+$lang['Welcome'] = 'Добре дошъл';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Добре дошли във Вашата Piwigo фото галерия!';
+$lang['... or browse your empty gallery'] = '... или разгледайте Вашите празни галерии';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... или моля деактивирайте това съобщение, аз ще намеря друг начин';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Здравейте %s, Вашата Piwigo фото галерия е празна!';
+$lang['I want to add photos'] = 'Искам да добавя снимки';
+$lang['Manage this user comment: %s'] = 'Управление на потребителския коментар: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Липсва е-Мейл адрес. Моля въведете е-Мейл адрес.';
+$lang['This author modified following comment:'] = 'Автора промени следния коментар:';
+$lang['This author removed the comment with id %d'] = 'Автора премахна коментара с id %d';
+$lang['html tags are not allowed in login'] = 'html тагове не са разрешени в логина';
+$lang['Unknown feed identifier'] = 'Неизвестен индетификатор';
+$lang['The number of photos per page must be a not null scalar'] = 'Броят на снимките на страница трябва да е различен от нула';
+$lang['Number of photos per page'] = 'Брои на снимки за страница';
+$lang['Change my password'] = 'Смана на паролата';
+$lang['Invalid key'] = 'Невалиден ключ';
+$lang['Invalid username or email'] = 'Невалидно потребителско име или е-майл';
+$lang['Please enter your username or email address.'] = 'Моля, въведете Вашето потребителско име или е-майл';
+$lang['Return to home page'] = 'Връщане към началната страница';
+$lang['The passwords do not match'] = 'Въведените пароли не съвпадат';
+$lang['To reset your password, visit the following address:'] = 'За да анулирате паролата, посетете този адрес:';
+$lang['Username or email'] = 'Потребителско име или е-майл';
+$lang['You will receive a link to create a new password via email.'] = 'Ще получите линк на електронната си поща, с който ще съзадате нова парола';
+$lang['Your password has been reset'] = 'Вашата парола е анулирана';
+$lang['Check your email for the confirmation link'] = 'Проверете вашата поща за връзка за потвърждение';
+$lang['Edit'] = 'Редактиране';
+$lang['Enter your new password below.'] = 'Въведете новата парола отдолу:';
+$lang['EXIF Metadata'] = 'EXIF метаданни';
+$lang['Hello %s,'] = 'Здравей %s,';
+$lang['Here are your connection settings'] = 'Вашите настройки за свързване';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ако смятатае, че това съобщение е грешка,просто го ингнорирайте без никакви последствия.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ако смятате, че сте получили това съобщение вследстиве на грешка, моля свържете се с нас на %s';
+$lang['IPTC Metadata'] = 'IPTC метаданни';
+$lang['large'] = 'голям';
+$lang['medium'] = 'среден';
+$lang['Original'] = 'оригинал';
+$lang['Password Reset'] = 'Нулиране на парола';
+$lang['Password reset is not allowed for this user'] = 'Нулирае на парола не е разрешено за този потребител';
+$lang['Password: %s'] = 'Парола: %s';
+$lang['Rating score'] = 'Резултат оценка';
+$lang['Send my connection settings by email'] = 'Изпращане на настройките за свързване по пощата!';
+$lang['small'] = 'малък';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Зявака за нулиране на парола за потребителско име:';
+$lang['square'] = 'правоъгълен';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Успешна регистрация, скоро ще получите съобщение на електронната поща, със настройките за свързване. Добре дошли!';
+$lang['Thank you for registering at %s!'] = 'Благодарим Ви, за регистрацията на  %s!';
+$lang['thumb'] = 'прелиствам';
+$lang['User "%s" has no email address, password reset is not possible'] = 'За потребителят  "%s" липсва електронна поща, затова нулирането на паролата е невъзможно';
+$lang['Username "%s" on gallery %s'] = 'Потребител  "%s" на галерия %s';
+$lang['Username modification'] = 'Промяна на потребител';
+$lang['Username: %s'] = 'Потребител: %s';
+$lang['xlarge'] = 'по-голям';
+$lang['xxlarge'] = 'огромен';
+$lang['Your username has been successfully changed to : %s'] = 'Вашетопотребителско име беше успешно промененно на : %s';
+$lang['%d rates'] = '%d оценки';
+
+$lang['Show latest comments first'] = 'Покажи първо най-новите коментари';
+$lang['Show oldest comments first'] = 'Покажи първо най-старите коментари';
+$lang['Desktop'] = 'Настолна';
+$lang['Mobile'] = 'Мобилна';
+$lang['Photo sizes'] = 'Размери на снимката';
+$lang['View in'] = 'Вижте в';
+$lang['2small'] = 'XXS - мъничък';
+$lang['File name, A &rarr; Z'] = 'Име на файл, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Име на файл, Z &rarr; A';
+$lang['Manual sort order'] = 'Ръчно определяне на подредбата';
+$lang['xsmall'] = 'XS - много малък';
+$lang['%d rate'] = '%d процент';
+$lang['Date created, new &rarr; old'] = 'Дата на създаване, нови &rarr; стари';
+$lang['Date created, old &rarr; new'] = 'Дата на създаване, стари &rarr; нови';
+$lang['Date posted, new &rarr; old'] = 'Дата на публикуване, нови &rarr; стари';
+$lang['Date posted, old &rarr; new'] = 'Дата на публикуване, стари &rarr; нови';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'По ID номер, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'По ID номер, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Име на снимка,A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Име на снимка, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Рейтинг, висок &rarr; нисък';
+$lang['Rating score, low &rarr; high'] = 'Рейтинг, нисък &rarr; висок';
+$lang['Visits, high &rarr; low'] = 'Посещения, висок &rarr; нисък';
+$lang['Visits, low &rarr; high'] = 'Посещения, нисък &rarr; висок';
+$lang['Bad request'] = 'Невалидна заявка';
+$lang['Forbidden'] = 'Забранено';
+$lang['Page not found'] = 'Страницата не е намерена';
+$lang['Permalink for album not found'] = 'Дирктен линк за албума не е открит';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo се сблъска с невъзстановима грешка';
+$lang['Requested album does not exist'] = 'Търсения албум не съществува';
+$lang['Requested tag does not exist'] = 'Търсения таг не съществува';
+$lang['mandatory'] = 'задължително';
+$lang['Username is mandatory'] = 'Потребителското име е задължително';
+$lang['Email address is mandatory'] = 'Имейл адреса е задължителен';
+$lang['Your website URL is invalid'] = 'Вашия уебсайт адрес е грешен';
+$lang['Website'] = 'Уебсайт';
+$lang['Email'] = 'Имейл';
+$lang['First Page'] = 'Първа страница';
+$lang['Go back to the album'] = 'Връщане обратно към албума';
+$lang['Last Page'] = 'Последна страница';
+$lang['Password is missing. Please enter the password.'] = 'Липсва парола. Моля въведете.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Потвърждение на паролата липсва. Моля повторете паролата.';
+$lang['%d photos per page'] = '%d снимки за страница';
+?>
Index: /tags/2.6.0RC1/language/bg_BG/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,124 @@
+<h2>Редакция на албум</h2>
+
+<h3>Информация</h3>
+
+<ul>
+
+  <li><strong>Име</strong>: преименуване на албум(преименуване на съществуващ албум).</li>
+
+  <li><strong>описание</strong>: кратък текст дава обща представа за съдържанието,
+  този текст ще се появи в долната част на страницата с миниатюри.</li>
+
+</ul>
+
+<h3>Преместване</h3>
+
+<p>Ако албум е виртуален, можете да го преместите. Преместване на албума означава
+промяна основния албум.</p>
+
+<h3>Опции</h3>
+
+<ul>
+
+  <li><strong>Типове права</strong>: Управление на правата. Ако направите албума частен, 
+всички под албуми стават частни. Ако направите албума публичен, 
+всички под албуми стават публични.</li>
+
+  <li><strong>Заключване </strong>: Албума и под-албумите
+  са временно извън подръжка.</li>
+
+  <li><strong>Коментари</strong>: Разрешаване на потребителите да коментират снимки в този
+  албум.</li>
+
+</ul>
+
+<p>Също можете да управлявате тези опции от страницата "Properties"
+(страници <span
+class="pwgScreen">Коментари</span>, <span class="pwgScreen">Заключено</span>,
+<span class="pwgScreen">Публично/Частно</span>, <span
+class="pwgScreen">Представително</span> Налично от <span
+class="pwgScreen">Администрация &raquo; Албуми &raquo; Опции </span>).</p>
+
+<h3>Подреди опции </h3>
+
+<p>Използвай зададените снимки подреди ред.</p>
+
+<p>Посочете дали този ред важи и за всички подалбуми. </p>
+
+<p>Изберете специфичен критерии за подредба, приложим за този албум.</p>
+<ul>
+<li><strong>Дата на създаване</strong>: Фото Дата на снимане</li>
+<li><strong>Дата на постване</strong>: Синхронизация дата</li>
+<li><strong>Среден рейт (*)</strong>:Средният рейт може да бъде променян в зависимост от оценките на потребителите</li>
+<li><strong>Най-посещавани(*)</strong>:Натоящото посещение може да промени реда на най-посещавани </li>
+<li><strong>Име на файла</strong>: Име,посочено в информационното поле</li>
+<li><strong>Идентификация</strong>:Вътрешна идентификация(скоро създадени/посетени категории имат по-високо id от по-старите такива)</li>
+
+</ul>
+<p><strong>(*)</strong>Внимание:Прегледайте този ред на подредба,тъй като може да даде неочаквани резултати .</p>
+
+
+<h3>Представител</h3>
+
+<p>Представителната икона за албума, съвпада с тази,показана на главната страница(<span class="pwgScreen">category.php</span>) да представя албума,когато той съдържа само подалбуми и никакви директни сними (както в началния албум).</p>
+снимка на албума :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>:един от бутоните ви позволява да направите настоящата снимка представителна за албума.Този бутон е активен само за администратори.</li>
+
+  <li><span class="pwgScreen">Промени информацията за снимката</span> в администрацията. До това поле може да се достигне чрез <span
+  class="pwgScreen">picture.php</span> или <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>.Вижте помощното менщ за повече информация</li>
+ 
+  <li><span class="pwgScreen">Администрация &raquo; Албуми&raquo; Опции,
+ Представител</span>.Вижте помощното менщ за повече информация.</li>
+
+  <li><span class="pwgScreen"Промени настройките на албума</span> (the present screen).</li>
+
+</ul>
+
+<p>Изборът на представителна снимка зависи от
+<code>allow_random_representative</code> параметрите на конфигурация(see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>В настоящият модел (<code>allow_random_representative</code> set to false),
+всеки албум,съдържащ поне един елемент е представен от сборен такъв.Веднъж настроен (при създаването на албума), предтсавителната снимка се променя само
+когато администраторът пожелае това. Ако представителната снимка не е подходяща,
+може да пожелаете да  <strong>бъде намерена нова произвелна представителна снимка</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>Ако албумът съдържа само подалбуми и никакви снимки, може да бъде предтавен от произволен елемент <span class="pwgScreen">Промени информацията за снимка</span> екран. Единствената опция в настоящето поле е  <strong>Изтрий предтавителна снимка </strong> бутон.</p>
+
+<h3>Обвържете всички снимки опт албума с нов албум</h3>
+
+<ul>
+
+<li><strong>Виртуално име на албума</strong>:Име на новосъздадения албум, 
+всички снимки от настоящата категория ще бъдат обвързани с новия албум.</li>
+
+<li><strong>Албум майка</strong>: Където ще се намира новият албум, 
+оставете празно място.</li>
+
+</ul>
+
+<h3>Връзка на всички албуми със снимки на съществуващите албуми</h3>
+
+<ul>
+
+<li><strong>Албуми</strong>: Изберете дестинацията на албума.</li>
+
+</ul>
+
+<h3>Изпрати имейл с информация за членовете на групата</h3>
+
+<ul>
+
+<li><strong>Група</strong>: Група получатели</li>
+
+<li><strong>Mail съдържание</strong>: Свободен текст, за да изпрати на тях.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/bg_BG/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Преместване на виртуални Албуми</h2>
+
+<p>Само виртуални албуми може да има в нов албум майка.</p>
+
+<h3>Виртуални албуми за движение</h3>
+
+<p>Изберете един или няколко виртуални албуми, които искате да преместите. 
+Ако списъкът е празен, това означава, че не са създали още албуми.</p>
+
+<h3>Нов албум майка</h3>
+
+<p>Изберете новия албум-родител (виртуален или физически).
+Ако не сте израли родител, избраните виртуални албуми ще бъдат преместени като начални.
+Един албум не може да бъде преместен в сания себе си или в някой от дъщерните албуми.</p>
Index: /tags/2.6.0RC1/language/bg_BG/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/help/cat_options.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Опции за Албум</h2>
+
+<p>Опции за управление на няколко албуми едновременно</p>
+
+<dl>
+
+<dt>Коментари</dt>
+<dd>Снимка може да отговаря на коментар на вашите посетители ако това е зададено и активирано предварително.</dd>
+
+<dt>Заключване</dt>
+<dd>Заключените албуми са скрити. Само администраторите могат да ги виждат в галерията си.</dd>
+
+<dt>Публично/ частно</dt>
+<dd>Веднъж обявен за частен албума позволява да му се задават групи и потребители с достъп</dd>
+
+<dt>Представяне</dt>
+<dd>Тази опция и възможно когато зададете в конфигурационните настройки <code>allow_random_representative</code>
+ (виж <span class="filename">include/config_defaults.inc.php</span>) за <em>true</em>. 
+Всеки албум може да бъде представляван от сменящи се снимки или от постоянно зададана такава.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/bg_BG/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Синхронизиране</h2>
+
+<p>Има два различни вида синхронизация:</p>
+<ul>
+	<li>директории/файлове</li>
+	<li>файлов мениджър</li>
+</ul>
+
+<p>Синхронизаране на директорите и файловете е когато ъпдейтвате дървовидната структура на папките си с тази на базата данни (логичната). 
+Синхронизиране на metadata на файловете е когато се ъпдейтва инфо за снимките като размер , пропорция, пиксели и прочие информация в базата данни.</p>
+
+<p>Когато синхронизирате файлове с базата данни е необходимо първо да се синхронизират папките.</p>
+
+<p>Синхронизацията може да отнеме достатъчно дълго време (зависи от сървъра и броя на елеметите който ще се синхронизират), затова е удобно да го правите албум по албум.</p>
Index: /tags/2.6.0RC1/language/bg_BG/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Списък потребители</h2>
+
+<p>Това е мястото където вие редактирате потребителите във вашата галерия.</p>
+
+<h3>Добавяне</h3>
+
+<p>Администраторите могат да добавят потрелбители ръчно.  Нужно е потребителско име, парола и имейл адрес.</p>
+
+<h3>Списък на потребителите</h3>
+
+<p>Списъка с текущите потребители може да бъде филтриран по име (използвайте * за нейзвесно), групи по статус. Може да се потреди по дата на регистрация или потребителско име и прочие...</p>
+
+<p>В този екран може да редактирате няколко потребителя едновременно, ползвайки различни действия:</p>
+
+<ul>
+  <li>изтриване (изисква потвърждение)</li>
+  <li>смяна на статуса</li>
+  <li>свързване или премахване в групи</li>
+  <li>промяна на визуалните настройки</li>
+  <li>промяна на допълнителните настройки</li>
+</ul>
+
+<p>целта е избран потребител (по подразбиране) или всички потребители избрани по критерии.</p>
Index: /tags/2.6.0RC1/language/bg_BG/index.php
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/bg_BG/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['also given by your host provider'] = 'също предоставена от доставчика на услугата';
+$lang['Basic configuration'] = 'Основно конфигуриране';
+$lang['Database configuration'] = 'Конфигуриране на базата данни';
+$lang['Database name'] = 'Име на базата данни';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'имената на таблиците в базата данни, ще имат тази представка ( това Ви дава възможност да управлявате таблиците по-добре)';
+$lang['Default gallery language'] = 'Език по подразбиране за галерията';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не се колебайте да се консултира в нашите форуми за всяка помощ:%s';
+$lang['Download the config file'] = 'Изтегляне на конфигурационния файл';
+$lang['enter a login for webmaster'] = 'въведете потребителско име за уебмастер';
+$lang['Installation'] = 'Инсталиране';
+$lang['Just another Piwigo gallery'] = 'Още една  Piwigo фотогалерия';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Пазете я в тайна, тя Ви дава достъп до административния панел';
+$lang['Password [confirm]'] = 'Парола [потвърждаване]';
+$lang['please enter your password again'] = 'моля, въведете паролата още веднъж';
+$lang['User'] = 'Потребител';
+$lang['verification'] = 'проверка';
+$lang['webmaster login can\'t contain characters \' or "'] = 'потребителското име за уебмастера, не може да съдържа символите\' или "';
+$lang['Welcome to my photo gallery'] = 'Здравейте и добре дошли в моята фотогалерия';
+$lang['Welcome to your new installation of Piwigo!'] = 'Здравейте и добре дошли във вашата нова Piwigo инсталация! ';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Вие можете да изтеглите конфигурационния файл и да го качите в директорията  local/config на вашата инсталация';
+$lang['PHP 5 is required'] = 'Изисква се инсталиран PHP 5';
+$lang['Start Install'] = 'Стартиране на инсталацията';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo не успя да конфигурира PHP5';
+$lang['Admin configuration'] = 'Администратор настройки';
+$lang['Congratulations, Piwigo installation is completed'] = 'Поздравления, Piwigo е инсталиран успешно';
+$lang['Database table prefix'] = 'Префикс на базата с данни';
+$lang['Hope to see you back soon.'] = 'Надяваме се да се видим скоро';
+$lang['Host'] = 'Доставчик';
+$lang['Sorry!'] = 'Съжаляваме!';
+$lang['Try to configure PHP 5'] = 'Опитайте да настройте PHP 5';
+$lang['user login given by your host provider'] = 'потребителско име за достъп до вашия доставчик';
+$lang['user password given by your host provider'] = 'парола за достъп до вашия доставчик';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Потребителите ще могат да използват този имейл за контакт с Администратора на сайта';
+$lang['Can\'t connect to server'] = 'Невъзможен достъп до сървъра';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Връзката със сървъра е успешна, но достъпа до базата данни е невъзможен';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Това ще е видимо от потребителите. Необходимо е за администриране на сайта';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Нужна ви е помощ? Задайте вашият въпрос в <a href="%s">Piwigo борда за съобщения</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Вие може да промените конфигурацията и сами и да рестартирате Piwigo след това.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Алтернативно решение е да копирате текста от кутията горе и да го добавите ръчно във файла "local/config/database.inc.php" (ВНИМАНИЕ: database.inc.php трябва да съдържа само това от текстовото поле, без празни знаци)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Създаването на конфигурационен файл local/config/database.inc.php е неуспещно.';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Изглежда вашият уеб хост се изпълнява в PHP %s';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo може да се опита да превключите вашата конфигурация на PHP 5 като създаде или промени .htaccess файла.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Обърнете се към вашия хостинг доставчик и вижте как можете да преминете към PHP 5 самостоятелно.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost или друг, предоставен от вашият хост провайдер';
+?>
Index: /tags/2.6.0RC1/language/bg_BG/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Български [BG]
Index: /tags/2.6.0RC1/language/bg_BG/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/bg_BG/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bg_BG/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Само администратор може да стартира обновяване: моля, влезте в профила си.';
+$lang['SQL queries'] = 'SQL заявки';
+$lang['Statistics'] = 'Статистика';
+$lang['total SQL time'] = 'общо време за SQL';
+$lang['total upgrade time'] = 'общо време за обновяване';
+$lang['Upgrade'] = 'Обновяване';
+$lang['Upgrade from version %s to %s'] = 'Обновяване от версия %s към %s';
+$lang['Upgrade informations'] = 'Информация за обновяването';
+$lang['You do not have access rights to run upgrade'] = 'Вие нямате права, за да стартирате обновяване.';
+$lang['All sub-albums of private albums become private'] = 'Всички под-албуми на лични албуми, стават също лични.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Като предпазна мярка, следните приставки са били деактивирани. Трябва да проверите за ъпгрейд на приставките преди да ги активирате отново:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Като предпазна мярка, следните теми бяха деактивирани. Трябва да проверите за ъпгрейд на темите преди да ги активирате отново:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Във <i>%s</i>, преди <b>?></b>, добави:';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Само миниатюрата на префикса и webmaster имейл адреса бяха запазени от предишната конфигурация';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Направете проверка за подръжка в  [Administration>Tools>Maintenance] ако имате някакви проблеми.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Тази страница предлага да актуализира базата данни от вашия Piwigo стара версия към поновата версия. Ъпгрейд асистента мисли, че в момента използвате <strong> релииз %s</ strong> (или подобна).';
+$lang['User permissions and group permissions have been erased'] = 'Разрешенията на потребителите и групите бяха изтрити';
+?>
Index: /tags/2.6.0RC1/language/bn_IN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/bn_IN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/bn_IN/common.lang.php	(revision 25596)
@@ -0,0 +1,65 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: বাংলা[IN]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=657
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'বাংলা';
+$lang_info['country'] = 'ভারত';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'bn';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d অ্যালবাম আপডেট হয়েছে';
+$lang['%d albums updated'] = '%d অ্যালবামগুলি আপডেট হয়েছে';
+$lang['%d comment to validate'] = '%d সক্রিয় করতে মন্তব্য';
+$lang['%d comment'] = '%d মন্তব্য';
+$lang['%d comments to validate'] = '%d সক্রিয় করতে মন্তব্যগুলি';
+$lang['%d comments'] = '%d মন্তব্যগুলি';
+$lang['%d hit'] = '%d hit';
+$lang['%d hits'] = '%d hits';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d নূতন মন্তব্য';
+$lang['%d new comments'] = '%d নূতন মন্তব্যসমূহ';
+$lang['%d new photo'] = '%d নূতন ছবি';
+$lang['%d new photos'] = '%d নূতন ছবিসমূহ';
+$lang['%d new user'] = '%d নূতন গ্রাহক';
+$lang['%d new users'] = '%d নূতন গ্রাহকগণ';
+$lang['%d photo is also linked to current tags'] = '%d বর্তমান ট্যাগের সাথে ছবি সংযোজিত আছে';
+$lang['%d photo'] = '%d ছবি';
+$lang['%d photos are also linked to current tags'] = '%d বর্তমান ট্যাগের সাথে ছবি সংযোজিত আছে';
+$lang['%d photos'] = '%d ছবিসমূহ';
+$lang['%d rates'] = '%d rates';
+$lang['(!) This comment requires validation'] = '(!) মন্তব্য বৈধ করতে হবে';
+$lang['... or browse your empty gallery'] = '... অথবা আপনার খালি গ্যালারী দেখুন';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... অথবা মন্তব্যটি নিষ্ক্রিয় করুন, আমি আমার করণীয় নিজেই করতে পারব';
+$lang['A comment on your site'] = 'আপনার সাইটে একটি মন্তব্য';
+$lang['About Piwigo'] = 'পিউইগো বিষয়ক';
+$lang['About'] = 'বিষয়ক';
+
+?>
Index: /tags/2.6.0RC1/language/bn_IN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/bn_IN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/bn_IN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+বাংলা[IN]
Index: /tags/2.6.0RC1/language/br_FR/about.html
===================================================================
--- /tags/2.6.0RC1/language/br_FR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/br_FR/about.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Ar palier-luc'hskeudennoù-mañ a zo diazezet war Piwigo.</p>
+
+<p>Ur meziant palier-luc'hskeudennoù evit ar web eo Piwigo, savet gant ur gumuniezh bev a implijerien hag a ziorroerien. Aes eo da bersonelaat Piwigo gant an astennoù. Frank ha digoust eo Piwigo zoken.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Gweladenniñ lec'hienn web Piwigo</a></p>
Index: /tags/2.6.0RC1/language/br_FR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/br_FR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/br_FR/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Brezhoneg [FR]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=698
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Brezhoneg';
+$lang_info['country'] = 'Frañs';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'br';
+$lang_info['zero_plural'] = true;
+
+$lang['%d comments'] = '%d evezhiadenn';
+$lang['%d hit'] = '%d klik';
+$lang['%d hits'] = '%d klik';
+$lang['%d Kb'] = '%d Ko';
+$lang['%d new comment'] = '%d evezhiadenn nevez';
+$lang['%d new comments'] = '%d evezhiadenn nevez';
+$lang['%d new photo'] = '%d luc\'hskeudenn nevez';
+$lang['%d new photos'] = '%d luc\'hskeudenn nevez';
+$lang['%d new user'] = '%d implijer nevez';
+$lang['%d new users'] = '%d implijer nevez';
+$lang['Date'] = 'Deiziad';
+$lang['day'][0] = 'Sul';
+$lang['day'][1] = 'Lun';
+$lang['day'][2] = 'Meurzh';
+$lang['day'][3] = 'Merc\'her';
+$lang['day'][4] = 'Yaou';
+$lang['day'][5] = 'Gwener';
+$lang['day'][6] = 'Sadorn';
+$lang['month'][10] = 'Here';
+$lang['month'][11] = 'Du';
+$lang['month'][12] = 'Kerzu';
+$lang['month'][1] = 'Genver';
+$lang['month'][2] = 'C\'hwevrer';
+$lang['month'][3] = 'Meurzh';
+$lang['month'][4] = 'Ebrel';
+$lang['month'][5] = 'Mae';
+$lang['month'][6] = 'Mezheven';
+$lang['month'][7] = 'Gouere';
+$lang['month'][8] = 'Eost';
+$lang['month'][9] = 'Gwengolo'; 
+$lang['... or please deactivate this message, I will find my way by myself'] = '... pe ziweredekait ar c\'hemenn-maÃ±, va-unan e tibabin';
+$lang['2small'] = 'XXS - bihan';
+$lang['... or browse your empty gallery'] = '... pe verdeit d\'ho palier goullo';
+$lang['(!) This comment requires validation'] = '(!) Ret eo kadarnaat an evezhiadenn-maÃ±';
+$lang['%d photos are also linked to current tags'] = '%d luc\'hskeudenn a zo liammet d\'ar merkerioÃ¹ red ivez';
+$lang['%d rate'] = '%d notenn';
+$lang['%d rates'] = '%d notenn';
+$lang['%d photo is also linked to current tags'] = '%d luc\'hskeudenn a zo liammet d\'ar merkerioÃ¹ red ivez';
+$lang['%d album updated'] = '%d rummad hizivaet';
+$lang['%d albums updated'] = '%d rummad hizivaet';
+$lang['%d comment'] = '%d evezhiadenn';
+$lang['%d comment to validate'] = '%d evezhiadenn implijer da gadarnaat';
+$lang['%d comments to validate'] = '%d evezhiadenn implijerien da gadarnaat';
+$lang['%d photo'] = '%d luc\'hskeudenn';
+$lang['%d photos'] = '%d luc\'hskeudenn';
+$lang['About Piwigo'] = 'Diwar-benn Piwigo';
+$lang['About'] = 'Diwar-benn';
+$lang['A comment on your site'] = 'Un evezhiadenn war ho lec\'hienn';
+$lang['All tags'] = 'An holl merkerioÃ¹';
+$lang['Album'] = 'Rummad';
+$lang['Album results for'] = 'Disoc\'hoÃ¹ ar rummadoÃ¹ evit';
+$lang['Album: %s'] = 'Rummad : %s';
+$lang['Albums'] = 'RummadoÃ¹';
+$lang['All'] = 'Holl';
+$lang['Administration'] = 'Mererezh';
+$lang['Admin: %s'] = 'Mererezh : %s';
+$lang['Add a comment'] = 'Lakaat un evezhiadenn ouzhpenn';
+$lang['Accelerate diaporama speed'] = 'Buanaat an diaporama';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Gwelet vo hoc\'h evezhiadenn goude ma vo aotreet gant ur merour';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Lusker enepstrob : gortozit a-raok lakaat un evezhiadenn ouzhpenn';
+$lang['Any tag'] = 'Ur merker bennak';
+$lang['Best rated'] = 'Notet ar gwellaÃ±';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Statud fall evit an implijer "guest", ar statud dre ziouer a vo implijet. Kemennit ar mestr-gwiad.';
+$lang['Bad request'] = 'Reked fall';
+$lang['Author'] = 'Oberour';
+$lang['Author: %s'] = 'Oberour: %s';
+$lang['Auto login'] = 'Kevreadenn emgefre';
+$lang['At least one listed rule must be satisfied.'] = 'Un dezverk d\'an neubeutaÃ± a renk bezaÃ± gwiriet';
+$lang['Are you sure?'] = 'Ha sur oc\'h ?';
+$lang['Calendar'] = 'Deiziadur';
+$lang['Browser: %s'] = 'Ergerzher: %s';
+$lang['Check your email for the confirmation link'] = 'Sellit ouzh ho posteloÃ¹ evit al liamm-kadarnaat';
+$lang['Change my password'] = 'CheÃ±ch va ger-tremen';
+$lang['Complete RSS feed (photos, comments)'] = 'Gwazh RSS klok (luc\'hskeudennoÃ¹, evezhiadennoÃ¹)';
+$lang['Comment'] = 'evezhiadenn';
+$lang['Comment by %s'] = 'evezhiadenn gant %s';
+$lang['Comment: %s'] = 'evezhiadenn : %s';
+$lang['Comments'] = 'EvezhiadennoÃ¹';
+$lang['Close this window'] = 'SerriÃ± ar prenestr-maÃ±';
+$lang['Click on the photo to see it in high definition'] = 'Klikit war al luc\'hskeudenn evit gwelet anezhi uhel e zespizadur';
+$lang['Click here if your browser does not automatically forward you'] = 'Klikit amaÃ± ma ne vez ket kerzhet emgefreek';
+$lang['Confirm Password'] = 'Kadarnaat ar ger-tremen';
+$lang['Contact'] = 'Mont e darempred';
+$lang['Contact webmaster'] = 'Mont e darempred gant ar mestr-gwiad';
+$lang['Connection settings'] = 'ArventennoÃ¹ kevreaÃ±';
+$lang['Connected user: %s'] = 'Implijer enlinenn : %s';
+$lang['Default'] = 'Dre ziouer';
+$lang['Delete'] = 'Dilemel';
+$lang['Desktop'] = 'Klasel';
+$lang['Date posted, new &rarr; old'] = 'Deiziad ouzhpennaÃ±, nevez &rarr; kozh';
+$lang['Date posted, old &rarr; new'] = 'Deiziad ouzhpennaÃ±, kozh &rarr; nevez';
+$lang['Date created, new &rarr; old'] = 'Deiziad krouiÃ±, nevez &rarr; kozh';
+$lang['Date created, old &rarr; new'] = 'Deiziad krouiÃ±, kozh &rarr; nevez';
+$lang['Customize'] = 'Personelaat';
+$lang['Creation date'] = 'Deiziad krouiÃ±';
+$lang['Current password is wrong'] = 'Fazi gant ar ger-tremen a vremaÃ±';
+$lang['Created on'] = 'Krouet d\'an';
+$lang['Create a new account'] = 'KrouiÃ± ur gont nevez';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Stanket eo an toupinoÃ¹ pe n\'int ket skoret gant hoc\'h ergerzher. Ret eo deoc\'h aotren an toupinoÃ¹ evit kevreaÃ±.';
+$lang['Email: %s'] = 'Postel: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Mankout a ra ar chomlec\'h postel. Lakit ho postel mar-plij.';
+$lang['Each listed rule must be satisfied.'] = 'An holl dezverkoÃ¹ a renk bezaÃ± gwiriet';
+$lang['Edit'] = 'AozaÃ±';
+$lang['Edit a comment'] = 'AozaÃ± un evezhiadenn';
+$lang['Email address'] = 'Chomlec\'h postel';
+$lang['Email address is mandatory'] = 'Chomlec\'h postel a zo ret';
+$lang['EXIF Metadata'] = 'MetaroadennoÃ¹ EXIF';
+$lang['Download this file'] = 'PellgargaÃ± ar restr-maÃ±';
+$lang['Download'] = 'PellgargaÃ±';
+$lang['Display'] = 'Diskwel';
+$lang['Dimensions'] = 'MentoÃ¹';
+$lang['Password: %s'] = 'Ger-tremen: %s';
+$lang['Your password has been reset'] = 'Ho ger-tremen a zo bet adderaouekaet';
+$lang['Enter your new password below.'] = 'Lakait ho ger-tremen nevez amaÃ± dindan.';
+$lang['Forgot your password?'] = 'DisoÃ±jet ho ger-tremen ?';
+$lang['Password Reset'] = 'Adderaouekaat ar ger-tremen';
+$lang['Password forgotten'] = 'Ger-tremen disoÃ±jet';
+$lang['Invalid password!'] = 'Ger-tremen direiz !';
+$lang['New password'] = 'Ger-tremen nevez';
+$lang['End-Date'] = 'Deizad an dibenn';
+$lang['Empty query. No criteria has been entered.'] = 'Reked goullo. Dezverk ebet a zo bet lakaet.';
+$lang['Search rules'] = 'Dezverk an enklask';
+$lang['Error sending email'] = 'Fazi en ur gas ar postel';
+$lang['this email address is already in use'] = 'En implij emaÃ± ar postel-se dija';
+$lang['Please enter your username or email address.'] = 'Lakait ho anv implijer pe postel';
+$lang['Invalid username or email'] = 'Anv implijer pe postel direiz';
+$lang['Username or email'] = 'Anv implijer pe postel';
+$lang['Username: %s'] = 'Anv implijer: %s';
+$lang['Favorites'] = 'PennrolloÃ¹';
+$lang['add this photo to your favorites'] = 'Lakaat al luc\'hskeudenn-maÃ± en ho pennrolloÃ¹';
+$lang['delete all photos from your favorites'] = 'Dilemel an holl luc\'hskeudennoÃ¹ eus ho pennrolloÃ¹';
+$lang['delete this photo from your favorites'] = 'Dilemel al luc\'hskeudenn-maÃ± eus ho pennrolloÃ¹';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Prennet eo ar palier evit trezalc\'h. Deuit en-dro diwezhatoc\'h.';
+$lang['Go through the gallery as a visitor'] = 'DedreuziÃ± ar palier evel un implijer';
+$lang['customize the appareance of the gallery'] = 'Personelaat neuz ar palier';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Demat %s, ho palier luc\'hskeudennoÃ¹ Piwigo a zo goullo !';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Degemer mat war ho palier-luc\'hskeudennoÃ¹ Piwigo !';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Gwazh RSS a kemenn an darvoudoÃ¹ ar palier : luc\'hskeudennoÃ¹ nevez, rummadoÃ¹ hizivaet, evezhiadennoÃ¹ nevez an implijerien. Da vezaÃ± implijet gant ul lenner-gwazhioÃ¹ RSS.';
+$lang['Username "%s" on gallery %s'] = 'Implijer "%s" war palier %s';
+$lang['display recently updated albums'] = 'diskouez ar rummadoÃ¹ krouet pe hizivaet nevez-zo';
+$lang['Search in sub-albums'] = 'Klask en iz-rummadoÃ¹';
+$lang['display this album'] = 'diskouez al luc\'hskeudennoÃ¹ e pennelfenn ar rummad-maÃ±';
+$lang['in %d sub-album'] = 'e %d iz-rummad';
+$lang['in %d sub-albums'] = 'e %d iz-rummad';
+$lang['set as album representative'] = 'Dibab evel dileuriad ar rummad-maÃ±';
+$lang['Requested album does not exist'] = 'N\'ez eus ket ar rummad goulennet';
+$lang['in this album'] = 'er rummad-maÃ±';
+$lang['Search in albums'] = 'Klask er rummadoÃ¹';
+$lang['Permalink for album not found'] = 'N\'eo ket bet kavet peurliamm ar rummad ';
+$lang['Recent albums'] = 'RummadoÃ¹ a-nevez';
+$lang['Expand all albums'] = 'DisplegaÃ± an holl rummadoÃ¹';
+$lang['Please, enter a login'] = 'Lakait un anv implijer';
+$lang['Enter your personnal informations'] = 'Lakait ho titouroÃ¹ personel';
+$lang['This author removed the comment with id %d'] = 'An oberour-maÃ± en deus dilemet an evezhiadenn gant an anavezer %d';
+$lang['author(s) : %s'] = 'oberour(ien) : %s';
+$lang['Here are your connection settings'] = 'Setu hoc\'h anavezerioÃ¹';
+$lang['Identification'] = 'Anaout';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Anavezer, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Anavezer, 9 &rarr; 1';
+$lang['Unknown feed identifier'] = 'Anavezer gwazh dianav';
+$lang['Unknown identifier'] = 'AnavezerioÃ¹ dianav';
+$lang['Help'] = 'Skoazell';
+$lang['Hello'] = 'Demat';
+$lang['Hello %s,'] = 'Demat %s,';
+$lang['Forbidden'] = 'Berzet';
+$lang['First'] = 'KentaÃ±';
+$lang['Filter'] = 'Sil';
+$lang['Filter and display'] = 'Ober gant ar siloÃ¹ ha diskouez';
+$lang['Show file metadata'] = 'Diskouez metaroadennoÃ¹ ar restr';
+$lang['IPTC Metadata'] = 'MetaroadennoÃ¹ IPTC';
+$lang['File name, A &rarr; Z'] = 'Anv ar restr, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Anv ar restr, Z &rarr; A';
+$lang['File'] = 'Restr';
+$lang['File name'] = 'Anv ar restr';
+$lang['Filesize'] = 'Ment ar restr';
+$lang['Email'] = 'Postel';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ma \'z eus bet ur fazi, ne grit netra ha netra a c\'hoarvezo.';
+$lang['User comments'] = 'EvezhiadennoÃ¹ implijerien';
+$lang['comment date'] = 'deiziad an evezhiadenn';
+$lang['Show latest comments first'] = 'Diskouez an evezhiadennoÃ¹ diwezhaÃ± da gentaÃ±';
+$lang['Show number of comments'] = 'Diskouez niver an evezhiadennoÃ¹';
+$lang['Show oldest comments first'] = 'Diskouez an evezhiadennoÃ¹ kozhaÃ± da gentaÃ±';
+$lang['This author modified following comment:'] = 'An oberour-maÃ± en deus cheÃ±chet an evezhiadenn-se :';
+$lang['Manage this user comment: %s'] = 'MeraÃ± an evezhiadenn-maÃ± : %s';
+$lang['Keyword'] = 'Ger alc\'hwez ';
+$lang['Password'] = 'Ger-tremen';
+$lang['Menu'] = 'LaÃ±ser';
+$lang['Most visited'] = 'MuiaÃ±-gwelet';
+$lang['New on %s'] = 'Nevez d\'an %s';
+$lang['Next'] = 'Da-heul';
+$lang['Logout'] = 'DigevreaÃ±';
+$lang['Login'] = 'KevreaÃ±';
+$lang['Links'] = 'LiammoÃ¹';
+$lang['Last'] = 'DiwezhaÃ±';
+$lang['Last Page'] = 'Pajenn diwezhaÃ±';
+$lang['IP: %s'] = 'IP : %s';
+$lang['Language'] = 'Yezh';
+$lang['I want to add photos'] = 'C\'hoant am eus da lakaat luc\'hskeudennoÃ¹ ouzhpenn';
+$lang['Home'] = 'Degemer';
+$lang['display all photos in all sub-albums'] = 'diskouez luc\'hskeudennoÃ¹ ar rummadoÃ¹ hag iz-rummadoÃ¹ a-blad';
+$lang['Go back to the album'] = 'DistreiÃ± d\'ar rummad';
+$lang['First Page'] = 'Pajenn gentaÃ±';
+$lang['Posted on'] = 'Ouzhpennet d\'an';
+$lang['photos posted during the last %d days'] = 'luc\'hskeudennoÃ¹ ouzhpennet e-pad an %d devezh diwezhaÃ±';
+$lang['posted after %s (%s)'] = 'ouzhpennet goude %s (%s)';
+$lang['posted before %s (%s)'] = 'ouzhpennet a-raok %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'ouzhpennet etre %s (%s) ha %s (%s)';
+$lang['posted on %s'] = 'ouzhpennet d\'an %s';
+$lang['Photos only RSS feed'] = 'Gwazh RSS gant al luc\'hskeudennoÃ¹ hepken';
+$lang['RSS feed'] = 'Gwazh RSS';
+$lang['Photo sizes'] = 'Ment al luc\'hskeudennoÃ¹';
+$lang['Return to home page'] = 'Mont en-dro da bajenn-degemer';
+$lang['Number of photos per page'] = 'Niver a skeudennig e pep pajenn';
+$lang['Page generated in'] = 'Pajenn jedet e ';
+$lang['display a set of random photos'] = 'diskouez ur stroll dargouezhek a luc\'hskeudennoÃ¹';
+$lang['display only recently posted photos'] = 'diskouez luc\'hskeudennoÃ¹ nevez hepken';
+$lang['display most visited photos'] = 'diskouez al luc\'hskeudennoÃ¹ ar muiaÃ±-gwelet';
+$lang['display most recent photos'] = 'diskouez al luc\'hskeudennoÃ¹ nevezaÃ±';
+$lang['Rate this photo'] = 'ReiÃ± un notenn d\'al luc\'hskeudenn-se';
+$lang['Recent photos'] = 'Luc\'hskeudennoÃ¹ nevez';
+$lang['photo'] = 'luc\'hskeudenn';
+$lang['The number of photos per page must be a not null scalar'] = 'Niver al luc\'hskeudennoÃ¹ a pep pajenn a rank bezaÃ± un niver pegementiÃ±';
+$lang['display best rated photos'] = 'diskouez al luc\'hskeudennoÃ¹ gant an notennoÃ¹ uhelaÃ±';
+$lang['Related tags'] = 'MerkerioÃ¹ stag';
+$lang['Requested tag does not exist'] = 'N\'ez eus ket ar merker goulennet';
+$lang['Search tags'] = 'Klask merkerioÃ¹';
+$lang['Tag'] = 'Merker';
+$lang['Tags'] = 'MerkerioÃ¹';
+$lang['Page not found'] = 'N\'eo ket bet kavet ar bajenn';
+$lang['Rating score, high &rarr; low'] = 'Notenn, uhel &rarr; izel';
+$lang['Rating score, low &rarr; high'] = 'Notenn, izel &rarr; uhel';
+$lang['Previous'] = 'War-gil';
+$lang['Quick connect'] = 'Kevreadenn buan';
+$lang['Piwigo Help'] = 'Skoazell Piwigo';
+$lang['Manual sort order'] = 'Urzh dre zorn';
+$lang['Preferences'] = 'DibaboÃ¹';
+$lang['Notification'] = 'KemennoÃ¹ RSS';
+$lang['Not repeat the slideshow'] = 'HarzaÃ± adlenn an diaporama';
+$lang['Pause of slideshow'] = 'EhanaÃ± an diaporama';
+$lang['Play of slideshow'] = 'Lenn an diaporama';
+$lang['Post date'] = 'Deiziad-ouzhpennaÃ±';
+$lang['Photo title, A &rarr; Z'] = 'Titl al luc\'hskeudenn, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Titl al luc\'hskeudenn, Z &rarr; A';
+$lang['Original'] = 'Skouerenn orin';
+$lang['Original dimensions'] = 'MentoÃ¹ orin';
+$lang['Invalid key'] = 'Alc\'hwez direiz';
+$lang['Your website URL is invalid'] = 'Chomlec\'h hol lec\'hienn web a zo direiz';
+$lang['The passwords do not match'] = 'Ar gerioÃ¹-tremen n\'int ket mat';
+$lang['To reset your password, visit the following address:'] = 'Evit cheÃ±ch ho ger-tremen, kit d\'ar chomlec\'h-maÃ± :';
+$lang['User "%s" has no email address, password reset is not possible'] = 'N\'en deus ket an implijer "%s" a bostel, n\'eo ket posubl cheÃ±ch e ger-tremen';
+$lang['Password reset is not allowed for this user'] = 'N\'eo ket posubl cheÃ±ch ger-tremen an implijer-maÃ±';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Unan-bennak en deus goulennet cheÃ±chamant ar ger-tremen evit an implijer :';
+$lang['Retrieve password'] = 'Adtapout ur ger-tremen';
+$lang['You will receive a link to create a new password via email.'] = 'Dre bostel, ul liamm a resevit da glikaÃ± evit cheÃ±ch ho ger-tremen.';
+$lang['password updated'] = 'Ger-tremen hizivaet';
+$lang['useful when password forgotten'] = 'Talvoudus m\'ho peus ankounac\'haet ho ger-tremen';
+$lang['No'] = 'Ket';
+$lang['Powered by'] = 'PajennoÃ¹ graet gant';
+$lang['Profile'] = 'Profil';
+$lang['Rank'] = 'Renk';
+$lang['Rating score'] = 'Skor';
+$lang['Reset'] = 'NullaÃ±';
+$lang['Search'] = 'Klask';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'N\'eo ket bet enrollet hoc\'h evezhiadenn peogwir ne pleg ket d\'ar reolennoÃ¹ kadarnaat';
+$lang['display last user comments'] = 'Gwelet evezhiadennoÃ¹ diwezhaÃ± an implijerien';
+$lang['Register'] = 'EnrollaÃ±';
+$lang['Registration'] = 'EnrollaÃ±';
+$lang['Registration of %s'] = 'Enrolladenn %s';
+$lang['Your comment has been registered'] = 'Enrollet eo bet hoc\'h evezhiadenn';
+$lang['Mobile'] = 'Hezoug';
+$lang['User: %s'] = 'Implijer: %s';
+$lang['Username'] = 'Anv implijer';
+$lang['Username modification'] = 'CheÃ±ch anv an implijer';
+$lang['this login is already used'] = 'En implij emaÃ± an anv-implijer-maÃ± dija';
+$lang['N/A'] = 'dizimplijadus';
+$lang['Sent by'] = 'Kaset gant';
+$lang['Submit'] = 'Gwiriekaat';
+$lang['Send my connection settings by email'] = 'BezaÃ± kelaouet gant ma anavezerioÃ¹ dre bostel';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Enrollet mat out, kelaouet e voc\'h gant hoc\'h anavezerioÃ¹ dre bostel. Degemer mat !';
+$lang['Thank you for registering at %s!'] = 'Trugarez evit bezaÃ± enrollet war %s !';
+$lang['Tag results for'] = 'Disoc\'h ar merkerioÃ¹ evit';
+$lang['display available tags'] = 'Gwelet ar merkerioÃ¹ hegerz';
+$lang['display photos linked to this tag'] = 'Gwelet luc\'hskeudennoÃ¹ liammet gant ar merker-maÃ± hepken';
+$lang['remove this tag from the list'] = 'Lemel ar merker-maÃ± diouzh al listenn';
+$lang['show tag cloud'] = 'Diskouez koumoulenn ar merkerioÃ¹';
+$lang['Recent period must be a positive integer value'] = 'Ar prantad diwezhaÃ± a rank bezaÃ± un niver pegementiÃ± muiel';
+$lang['Recent period'] = 'Prantad diwezhaÃ±';
+$lang['Sort by'] = 'RummaÃ± dre';
+$lang['Sort order'] = 'Urzh rummaÃ±';
+$lang['Kind of date'] = 'Seurt deiziad';
+$lang['display a calendar by creation date'] = 'diskouez un deiziadur dre deiziad krouiÃ±';
+$lang['display a calendar by posted date'] = 'diskouez un deiziadur dre deiziad ouzhpennaÃ±';
+$lang['wrong date'] = 'deiziad fall';
+$lang['Quick search'] = 'Klask buan';
+$lang['Search by date'] = 'Klask dre deiziad';
+$lang['Search for words'] = 'Klask gerioÃ¹';
+$lang['Search results'] = 'Disoc\'hoÃ¹ an enklask';
+$lang['search'] = 'enklask';
+$lang['Search for Author'] = 'Klask un oberour';
+$lang['Search for all terms'] = 'Klask an holl ger';
+$lang['Search for any term'] = 'Klask ur ger';
+$lang['Thumbnails'] = 'SkeudennoÃ¹igoÃ¹';
+$lang['thumb'] = 'Skeudennig';
+$lang['today'] = 'hiziv';
+$lang['Update your rating'] = 'Hizivaat ho notenn';
+$lang['no rate'] = 'Notenn ebet';
+$lang['Visits'] = 'GweladennoÃ¹';
+$lang['Welcome'] = 'Degemer mat';
+$lang['Yes'] = 'Ya';
+$lang['This login is already used by another user'] = 'En implij emaÃ± an anv-implijer-maÃ± dija';
+$lang['login mustn\'t end with a space character'] = 'Arabat eo echuiÃ± an anv implijer gant un arouezenn esaouiÃ±';
+$lang['login mustn\'t start with a space character'] = 'Arabat eo kregiÃ± an anv implijer gant un arouezenn esaouiÃ±';
+$lang['the username must be given'] = 'Ret eo lakaat an anv implijer';
+$lang['Username is mandatory'] = 'Anv implijer ret';
+$lang['Your username has been successfully changed to : %s'] = 'Hoc\'h anv implijer a zo bet cheÃ±chet evit : %s';
+$lang['Since'] = 'Abaoe';
+$lang['Specials'] = 'Dibar';
+$lang['View'] = 'Gwellet';
+$lang['View in'] = 'Diskouez';
+$lang['Visits, high &rarr; low'] = 'Niver a gweladenn, bras &rarr; bihan';
+$lang['Visits, low &rarr; high'] = 'Niver a gweladenn, bihan &rarr; bras';
+$lang['Show number of hits'] = 'Diskouez niver a taolioÃ¹ lagad';
+$lang['SQL queries in'] = 'rekedoÃ¹ SQL e';
+$lang['Reset to default values'] = 'Adlakaat talvoudoÃ¹ dre ziouer.';
+$lang['Reduce diaporama speed'] = 'Gorrekaat an diaporama';
+$lang['Repeat the slideshow'] = 'Adlenn an diaporama';
+$lang['slideshow'] = 'diaporama';
+$lang['stop the slideshow'] = 'Paouez an diaporama';
+$lang['Redirection...'] = 'O sturiaÃ± d\'ul lec\'h allâ¦';
+$lang['Random photos'] = 'Luc\'hskeudennoÃ¹ dre zegouezh';
+$lang['Piwigo encountered a non recoverable error'] = 'Ur fazi diremed a zo c\'hoarvezet gant Piwigo';
+$lang['Photos posted within the last %d day.'] = 'Diskouez al luc\'hskeudennoÃ¹ nevezoc\'h eget %d deizad';
+$lang['Photos posted within the last %d days.'] = 'Diskouez al luc\'hskeudennoÃ¹ nevezoc\'h eget %d deizad';
+$lang['Number of items'] = 'Niver a elfennoÃ¹';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ma soÃ±jit ho peus resevet ar postel-maÃ± dre fazi, deuit e darempred ganeomp dre ';
+$lang['cloud'] = 'koumoulenn';
+$lang['created after %s (%s)'] = 'Krouet goude an %s (%s)';
+$lang['created before %s (%s)'] = 'Krouet a-raok an %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'Krouet etre an %s (%s) hag an %s (%s)';
+$lang['created on %s'] = 'Krouet d\'an %s';
+$lang['representative'] = 'Dileuriad ar rummad';
+$lang['available for administrators only'] = 'Hegerz evit merourien hepken';
+$lang['display your favorites photos'] = 'Diskouez luc\'hskeudennoÃ¹ eus ho pennrolloÃ¹';
+$lang['Your favorites'] = 'Ho pennrolloÃ¹';
+$lang['chronology_weekly_list'] = 'Listenn ur Sizhunvezh';
+$lang['chronology_monthly_list'] = 'Listenn ur mizvezh';
+$lang['all'] = 'pep tra';
+$lang['Your Gallery Customization'] = 'Personeladur ho palier';
+$lang['chronology_monthly_calendar'] = 'Deiziadur ar mizvezh';
+$lang['You are not authorized to access the requested page'] = 'Difennet eo deoc\'h mont d\'ar bajenn-maÃ±';
+$lang['Week %d'] = 'Sizhun %d';
+$lang['Website'] = 'Lec\'hienn web';
+$lang['Webmaster'] = 'Mestr-gwiad';
+$lang['return to the display of all photos'] = 'distreiÃ± d\'ar gwel an holl luc\'hskeudenn';
+$lang['return to normal view mode'] = 'distreiÃ± d\'ar gwel reizh';
+$lang['last %d days'] = 'an %s dewezhioÃ¹ diwezhaÃ±';
+$lang['letters'] = 'lizherennoÃ¹';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'Ret eo ar chomlec\'h bostel bezhaÃ± e stumm xxx@yyy.eee (da skouer jakez@altern.org)';
+$lang['mandatory'] = 'ret';
+$lang['obligatory'] = 'ret';
+$lang['searched words : %s'] = 'gerioÃ¹ klasket : %s';
+$lang['square'] = 'Karrez';
+$lang['the beginning'] = 'penn-kentaÃ±';
+$lang['included'] = 'e-barzh';
+$lang['large'] = 'L - bras';
+$lang['medium'] = 'M - krenn';
+$lang['small'] = 'S - bihan';
+$lang['xlarge'] = 'XL - bras-kenaÃ±';
+$lang['xsmall'] = 'XS - bihan-kenaÃ±';
+$lang['xxlarge'] = 'XXL - ramzeg';
+$lang['html tags are not allowed in login'] = 'Difennet eo lakaat balizennoÃ¹ HTML en anv implijer';
+$lang['guest'] = 'implijer';
+$lang['ascending'] = 'war gresk';
+$lang['descending'] = 'war zigresk';
+$lang['display each day with photos, month per month'] = 'Diskouez dre vloaz, dre viz, dre zeiz';
+$lang['edit'] = 'aozaÃ±';
+$lang['excluded'] = 'dispelled';
+$lang['from %s to %s'] = 'eus an %s betek an %s';
+$lang['group by letters'] = 'strollaÃ± dre lizherenn';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'N\'ho peus ket kadarnaet ar ger-tremen. Kadarnait ar ger-tremen ho peus skrivet.';
+$lang['Password is missing. Please enter the password.'] = 'Mankout a ra ar ger-tremen. Skrivit ar ger-tremen.';
+$lang['%d photos per page'] = '%d luc\'hskeudenn e pep pajenn';
+$lang['Theme'] = 'Tem';
+?>
Index: /tags/2.6.0RC1/language/br_FR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/br_FR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/br_FR/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Posubl eo deoc\'h cheñch ho-unan kefluniadur PHP, ha adloc\'hañ Piwigo da c\'houde.';
+$lang['Download the config file'] = 'Pellgargañ ar restr gefluniañ';
+$lang['Try to configure PHP 5'] = 'Esaeit kefluniañ PHP 5';
+$lang['Basic configuration'] = 'Kefluniadur diazez';
+$lang['Database configuration'] = 'Kefluniadur an diaz roadennoù';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Un diskoulm all a zo eilañ an destenn eus boest a-us ha pegañ anezhañ da restr "local/config/database.inc.php" (Diwallit: ret eo lakaat e-barzh database.inc.php ar pezh a zo er framm-testenn, distro d\'al linenn ebet, hag arouezenn esaouiñ ebet)';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'An anavezer-mañ a vo gwellet gant an implijerien. Ret eo evit merañ al lec\'hienn.';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Ret eo dezhañ chom kuzhut, gantañ e vez digoret skramm ar mererezh.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'An implijerien a c\'hello dont e darempred gant merour al lec\'hienn gant ar bostel-mañ';
+$lang['Admin configuration'] = 'Kefluniadur ar mererezh';
+$lang['User'] = 'Implijer';
+$lang['please enter your password again'] = 'Lakait ho ger-tremen adarre';
+$lang['user password given by your host provider'] = 'ger-tremen roet gant ho pourvezer ostiz';
+$lang['Password ']['confirm'] = 'Ger-tremen [evit kadarnaat]';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo n\'eo ket deuet a-benn da gefluniañ PHP 5.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo a c\'hell cheñch ho kefluniadur da PHP 5 en ur grouiñ pe kemmañ ur restr .htaccess.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'C\'hwitet eo krouadur ar restr gefluniañ local/config/database.inc.php.';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Posubl eo deoc\'h pellgargañ ar restr gefluniañ, hag ezkargañ anezhañ da kavlec\'h local/config ho staliadur.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gourc\'hemennoù, echu eo staliadur Piwigo';
+$lang['Installation'] = 'Staliadur';
+$lang['Start Install'] = 'Kregiñ gant ar staliadur';
+$lang['Welcome to your new installation of Piwigo!'] = 'Degemer mat en ho staliadur nevez Piwigo !';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Goulennit da skor ho pourvezer ostiz penaos e c\'hellit implij PHP 5.';
+$lang['It appears your webhost is currently running PHP %s.'] = 'PHP %s a zo o labourat war hoc\'h ostiz.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost pe anv all, roet gant ho pourvezer ostiz';
+$lang['also given by your host provider'] = 'roet gant ho pourvezer ostiz ivez';
+$lang['user login given by your host provider'] = 'anv-implijer roet gant ho pourvezer ostiz';
+$lang['Host'] = 'Ostiz';
+$lang['Can\'t connect to server'] = 'Ne oa ket posubl kevreañ ouzh ar servijer';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Sikour ho peus ezhom? Savit ho goulennoù war <a href="%s">Forom Piwigo</a>.';
+$lang['verification'] = 'gwiriadur';
+$lang['Sorry!'] = 'Digarezit !';
+$lang['PHP 5 is required'] = 'Ret eo kaout PHP 5';
+$lang['Just another Piwigo gallery'] = 'Ur palier-luc\'hskeudennoù Piwigo all';
+$lang['Hope to see you back soon.'] = 'Ken ar wech all !';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Lennit hor foromoù evit kaout sikour: %s';
+$lang['enter a login for webmaster'] = 'Lakait anv implijer ar mestr-gwiad';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Arabat eo lakaat lizherennoù \' pe " e-barzh anv implijer ar mestr-gwiad';
+$lang['Default gallery language'] = 'Yezh dre ziouer ar palier';
+$lang['Welcome to my photo gallery'] = 'Degemer mat war ma palier-luc\'hskeudennoù';
+$lang['Database table prefix'] = 'Rakger taolennoù an diaz roadennoù';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Ar rakger-mañ a vo ouzhpennet da anvioù taolennoù an diaz roadennoù (Gwelloc\'h e vo mererezh ho taolennoù)';
+$lang['Database name'] = 'Anv an diaz roadennoù';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Kevreet mat ouzh ar servijer omp, met ne oa ket posubl kevreañ ouzh an diaz roadennoù.';
+?>
Index: /tags/2.6.0RC1/language/br_FR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/br_FR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/br_FR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Brezhoneg [FR]
Index: /tags/2.6.0RC1/language/br_FR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/br_FR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/br_FR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Ar bajenn-mañ a ginnig hizivadur an diaz roadennoù eus ho stumm Piwigo kozh d\'ar stumm nevez. An ameiler hizivaat a soñj emañ <strong>stumm %s</strong> o labourat (pe gevatal).';
+$lang['User permissions and group permissions have been erased'] = 'Implijerien ha strolladoù a zo bet dilemet';
+$lang['You do not have access rights to run upgrade'] = 'Difennet eo deoc\'h hizivaat';
+$lang['Statistics'] = 'Stadegoù';
+$lang['total upgrade time'] = 'Hollad amzer an hizivadur';
+$lang['Upgrade'] = 'Hizivadur';
+$lang['Upgrade from version %s to %s'] = 'Hizivaat eus stumm %s betek %s';
+$lang['Upgrade informations'] = 'Titouroù hizivadur';
+$lang['total SQL time'] = 'Hollad an amzer SQL ';
+$lang['SQL queries'] = 'Rekedoù SQL';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Ret eo bezañ merour evit hizivaat: kevreit amañ dindan mar plij.';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gwiriit an trezalc\'h e [Mererezh>Ostilhoù>Trezalc\'h] m\'ho peus kudennoù.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Nemet rakger ar skeudennoùigoù ha postel ar mestr-gwiad a zo bet saveteet eus ar c\'hefluniadur kozh';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'E <i>%s</i>, a-raok <b>?></b>, lakaat:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Evit diwall, an tenoù-se a zo bet diweredekaet. Ret e vo deoc\'h sellout ma\'z eus temoù da hizivaat a-raok gweredekaat anezho en-dro.';
+$lang['All sub-albums of private albums become private'] = 'An holl iz-rummadoù e-barzh rummadoù prevez a vo prevez';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Evit diwall, al lugantoù-se a zo bet diweredekaet. Ret e vo deoc\'h sellout ma\'z eus lugantoù da hizivaat a-raok gweredekaat anezho en-dro.';
+?>
Index: /tags/2.6.0RC1/language/ca_ES/about.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/about.html	(revision 25596)
@@ -0,0 +1,19 @@
+<p>Aquesta galeria fotogràfica es basa en el programari Piwigo.</p>
+
+<p>Piwigo és una aplicació de gestió d'àlbums de fotos per al web. Està escrita en llenguatge PHP i interactua amb bases de dades MySQL.</p>
+
+<p>Fou escrita originàriment pel seu creador, Pierrick Le Gall, com un projecte personal a la tardor de l'any 2001 amb el nom de PhpWebGallery. A la primavera de l'any 2002, es va publicar sota llicència GPL, i va nèixer tota una comunitat en torn al projecte que, d'avui ençà, sumen ja més de 10 anys.</p>
+
+<p>PhpWebGallery, el nom del projecte original, evoluciona al nom actual de Piwigo el 15 de febrer de 2009. Es tracta d'un nom més curt, únic, sense referències a llenguatges de programació i, a més, conserva l'acrònim PWG. Fins i tot el lloc web es renova en profunditat amb l'objectiu d'oferir un espai més agradable, còmode, i amb un gran nombre d'eines a disposició de la comunitat per establir una base evolutiva sòlida i permanent.</p>
+
+<p>Actualment, el projecte està impulsat per una comunitat plenament activa d'usuaris i desenvolupadors que prospera constantment. A dia d'avui, per tant, a aquest any 2012, consta d'un equip format per 20 membres i 50 traductors i llocs web disponibles en 10 idiomes. Disposa d'un gran nombre d'extensions que n'estenen àmpliament les seves funcionalitats. Permeten incorporar nous complements, temes, eines, idiomes i modificacions que fan que sigui fàcilment personalitzable. I el millor de tot és que Piwigo és un programari madur, estable, lliure i totalment gratuït.</p>
+
+<p>La traducció de Piwigo a la llengua catalana és creada i mantinguda per: (en ordre alfabètic)
+ <ul>
+  <li><a href="http://piwigo.org/forum/profile.php?id=16604">AlbertParera</a></li>
+  <li><a href="http://piwigo.org/forum/profile.php?id=8387">josep.torne</a></li>
+ </ul>
+Gràcies per la vostra aportació!</p>
+
+<p id="linkToPiwigo"><a href="http://es.piwigo.org/">Visiti el web de Piwigo</a></p>
+<p id="linkToPiwigo"><a href="http://es.piwigo.org/basics/contribute">Animi's a col·laborar amb el projecte Piwigo</a></p>
Index: /tags/2.6.0RC1/language/ca_ES/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/admin.lang.php	(revision 25596)
@@ -0,0 +1,977 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d associació';
+$lang['%d associations'] = '%d associacions';
+$lang['%d album including'] = 'Inclou %d àlbums ';
+$lang['%d albums including'] = 'Inclou %d àlbums';
+$lang['%d physical'] = '%d física';
+$lang['%d physicals'] = '%d físics';
+$lang[' and %d virtual'] = ' i %d virtual';
+$lang[' and %d virtuals'] = ' i %d virtuals';
+$lang['%d album moved'] = 'S\'ha mogut %d àlbum';
+$lang['%d albums moved'] = 'S\'han mogut %d àlbums';
+$lang['%d member'] = '%d membre';
+$lang['%d members'] = '%d membres';
+$lang['%d tag'] = '%d etiqueta';
+$lang['%d tags'] = '%d etiquetes';
+$lang['%d user comment rejected'] = 'S\'ha rebutjat %d comentari d\'usuari';
+$lang['%d user comments rejected'] = 'S\'han rebutjat %d comentaris d\'usuari';
+$lang['%d user comment validated'] = 'S\'ha validat %d comentari d\'usuari';
+$lang['%d user comments validated'] = 'S\'han validat %d comentaris d\'usuari';
+$lang['%d user deleted'] = 'S\'ha eliminat %d usuari';
+$lang['%d users deleted'] = '%d usuaris eliminats';
+$lang['%d user'] = '%d usuari';
+$lang['%d users'] = '%d usuaris';
+$lang['%d waiting for validation'] = '%d pendents de validar';
+$lang['Actions'] = 'Accions';
+$lang['Activate'] = 'Activa';
+$lang['Add/delete a permalink'] = 'Afegeix/Elimina un enllaç permanent';
+$lang['Add a tag'] = 'Afegeix una etiqueta';
+$lang['Add a user'] = 'Afegeix un usuari';
+$lang['Add'] = 'Afegeix';
+$lang['Allow user registration'] = 'Permet el registre d\'usuaris';
+$lang['Apply to sub-albums'] = 'Aplica als sub-àlbums';
+$lang['Associated'] = 'S\'ha associat';
+$lang['Caddie management'] = 'Gestiona el carret';
+$lang['Caddie'] = 'Carret';
+$lang['Album manual order was saved'] = 'S\'ha desat l\'orde manual de l\'àlbum.';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Per causes desconegudes no s\'ha pogut comprovar si existeix una nova versió.';
+$lang['Check for upgrade'] = 'Comprova si hi ha una nova versió disponible';
+$lang['Current name'] = 'Nom actual';
+$lang['Database'] = 'Base de dades';
+$lang['Deactivate'] = 'Desactiva';
+$lang['Deletions'] = 'Eliminacions';
+$lang['Deny selected users'] = 'Denega els ususaris seleccionats';
+$lang['Description'] = 'Descripció';
+$lang['Display options'] = 'Visualitza les opcions';
+$lang['Dissociated'] = 'Dissociats';
+$lang['Does not represent'] = 'No és miniatura per';
+$lang['Edit selected tags'] = 'Edita les etiquetes seleccionades';
+$lang['Edit tags'] = 'Edita etiquetes';
+$lang['Email admins when a new user registers'] = 'Envia un correu electrònic als administradors quan s\'inscrigui un nou usuari';
+$lang['Email admins when a valid comment is entered'] = 'Envia un correu electrònic als administradors quan s\'afegeixi un comentari vàlid';
+$lang['Email admins when a comment requires validation'] = 'Envia un correu electrònic als administradors quan un comentari requereixi validació';
+$lang['Environment'] = 'Entorn';
+$lang['Form'] = 'Formulari';
+$lang['Gallery title'] = 'Títol de la galeria';
+$lang['Grant selected users'] = 'Atorgar els usuaris seleccionats';
+$lang['Group name'] = 'Nom del grup';
+$lang['Groups'] = 'Grups';
+$lang['Guests'] = 'Visitants';
+$lang['History'] = 'Història';
+$lang['Informations'] = 'Informació';
+$lang['Install'] = 'Instal·la';
+$lang['Link all album photos to a new album'] = 'Enllaça tots els àlbums de fotos al nou àlbum';
+$lang['Link all album photos to some existing albums'] = 'Enllaça tots els àlbums de fotos a alguns àlbums existents';
+$lang['Linked albums'] = 'Àlbums enllaçats';
+$lang['Lock gallery'] = 'Bloqueja la galeria';
+$lang['Maintenance'] = 'Manteniment';
+$lang['Edit album permissions'] = 'Edita els permisos de l\'àlbum';
+$lang['Manage permissions for user "%s"'] = 'Gestionar els permisos de l\'usuari "%s"';
+$lang['Manage tags'] = 'Gestiona les etiquetes';
+$lang['Members'] = 'Membres';
+$lang['Move albums'] = 'Mou àlbums';
+$lang['Move'] = 'Mou';
+$lang['Name'] = 'Nom';
+$lang['New name'] = 'Nou nom';
+$lang['New parent album'] = 'Nou àlbum pare';
+$lang['New tag'] = 'Nova etiqueta';
+$lang['Number of comments per page'] = 'Nombre de comentaris per pàgina';
+$lang['Number of rates'] = 'Nombre de valoracions ';
+$lang['Number of thumbnails to create'] = 'Nombre de diapositives per crear';
+$lang['Only private albums are listed'] = 'Només es llisten els àlbums privats';
+$lang['Operating system'] = 'Sistema operatiu';
+$lang['Options'] = 'Opcions';
+$lang['Other private albums'] = 'Altres àlbums privats';
+$lang['Page banner'] = 'Banner de la pàgina';
+$lang['Parent album'] = 'Àlbum pare';
+$lang['Path'] = 'Camí';
+$lang['Permalink'] = 'Enllaç permanent';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'El nom de l\'enllaç permanent s\'ha de composar per els caràcters a-z, A-Z, 0-9, "-", "_" o "/". No ha de ser numèric o començar amb un número seguit per "-"';
+$lang['Permalink %s is already used by album %s'] = 'L\'enllaç permanent %s ja s\'utilitza per l\'àlbum %s';
+$lang['Permalink history'] = 'Historial d\'enllaços permanents';
+$lang['Permalinks'] = 'Enllaços permanents';
+$lang['Permission denied'] = 'Permís denegat';
+$lang['Permission granted'] = 'Permís atorgat';
+$lang['Photo informations updated'] = 'Informació de la foto actualitzada';
+$lang['Plugins'] = 'Connectors';
+$lang['Position'] = 'Posició';
+$lang['Preferences'] = 'Preferències';
+$lang['Properties'] = 'Propietats';
+$lang['Random photo'] = 'Foto aleatòria';
+$lang['Rate date'] = 'Data de la valoració';
+$lang['Rating by guests'] = 'Valoració dels visitants';
+$lang['Rating'] = 'Valoracions';
+$lang['Reject'] = 'Rebutja';
+$lang['Representant'] = 'Miniatura de l\'àlbum';
+$lang['Representation of albums'] = 'Miniatura de l\'àlbum';
+$lang['Representative'] = 'Miniatura de l\'àlbum';
+$lang['Represents'] = 'Miniatura per a';
+$lang['Save order'] = 'Desa l\'ordre';
+$lang['Save to permalink history'] = 'Desa a l\'historial d\'enllaços permanents';
+$lang['Select at least one album'] = 'Seleccioneu almenys un àlbum';
+$lang['Select at least one photo'] = 'Seleccioneu almenys una foto';
+$lang['Select at least one user'] = 'Seleccioneu almenys un usuari';
+$lang['Show info'] = 'Visualitza la informació';
+$lang['Site manager'] = 'Gestió del lloc';
+$lang['Status'] = 'Estat';
+$lang['Statistics'] = 'Estadístiques';
+$lang['Storage album'] = 'Àlbum d\'emmagatzemament';
+$lang['Sum of rates'] = 'Suma de valoracions';
+$lang['Tag "%s" already exists'] = 'L\'etiqueta "%s" ja existeix';
+$lang['Tag "%s" was added'] = 'S\'ha afegit l\'etiqueta "%s".';
+$lang['Tag selection'] = 'Selecció d\'etiquetes';
+$lang['The %d following tags were deleted'] = 'S\'han eliminat les següents %d etiquetes ';
+$lang['Unable to check for upgrade.'] = 'No ha estat possible comprovar si existeixen actualitzacions.';
+$lang['Uninstall'] = 'Desinstal·la';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Aplicar l\'ordre predeterminat (definit a l\'arxiu de configuració)';
+$lang['User comments validation'] = 'Validació dels comentaris d\'usuari';
+$lang['Users'] = 'Usuaris';
+$lang['Validate'] = 'Valida';
+$lang['Validation'] = 'Validació';
+$lang['Version'] = 'Versió';
+$lang['Virtual albums to move'] = 'Àlbums virtuals per a moure';
+$lang['Virtual album name'] = 'Nom de l\'àlbum virtual';
+$lang['Webmaster cannot be deleted'] = 'L\'usuari Webmaster no es pot eliminar';
+$lang['You are running on development sources, no check possible.'] = 'Esteu treballant sobre un codi en desenvolupament. No hi ha comprovacions possible.
+';
+$lang['You cannot delete your account'] = 'No podeu eliminar el vostre compte.';
+$lang['You cannot move an album in its own sub album'] = 'No podeu moure un àlbum dins del seu propi sub-àlbum';
+$lang['You need to confirm deletion'] = 'Cal confirmar l\'eliminació';
+$lang['Associate to album'] = 'Assòcia a l\'àlbum';
+$lang['Authorized'] = 'S\'ha autoritzat';
+$lang['Add a virtual album'] = 'Afegeix un àlbum virtual';
+$lang['Authorize users to add comments on selected albums'] = 'Autoritza usuaris a afegir comentaris en els àlbums seleccionats';
+$lang['The name of an album must not be empty'] = 'El nom d\'un àlbum no pot estar buit';
+$lang['Lock albums'] = 'Bloqueja d\'àlbums';
+$lang['Private'] = 'Privat';
+$lang['Public'] = 'Públic';
+$lang['Find a new representant by random'] = 'Estableix de forma aleatòria una nova miniatura de l\'àlbum';
+$lang['Public / Private'] = 'Nivell de visibilitat';
+$lang['Manage authorizations for selected albums'] = 'Gestiona el nivell de visibilitat dels àlbums';
+$lang['Virtual album added'] = 'S\'ha afegit l\'àlbum virtual';
+$lang['Virtual album deleted'] = 'S\'ha eliminat l\'àlbum virtual';
+$lang['Access type'] = 'Tipus d\'accès';
+$lang['Information data registered in database'] = 'S\'ha registrat la informació de les dades a la base de dades';
+$lang['Default display'] = 'Visualització predeterminada';
+$lang['History'] = 'Historial';
+$lang['The gallery URL is not valid.'] = 'La URL de la galeria no es vàlida.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'El nombre de comentaris d\'una pàgina ha d\'estar entre 5 i 50 inclosos.';
+$lang['Configuration'] = 'Configuració';
+$lang['confirm'] = 'confirma';
+$lang['Date'] = 'Data';
+$lang['delete album'] = 'Elimina l\'àlbum';
+$lang['Dissociate from album'] = 'Dissocia de l\'àlbum';
+$lang['Album updated successfully'] = 'Àlbum s\'ha actualitzat correctament';
+$lang['photos per page'] = 'fotos per pàgina';
+$lang['High definition enabled'] = 'Alta definició habilitada';
+$lang['File'] = 'Arxiu';
+$lang['first photo added on %s'] = 'primera foto afegida el %s';
+$lang['Forbidden'] = 'Prohibit';
+$lang['global mode'] = 'mode global';
+$lang['group "%s" updated'] = 'S\'ha actualitzat el grup "%s"';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'El nom d\'un grup no pot contenir " o \' o estar buit.';
+$lang['This name is already used by another group.'] = 'Aquest nom ja està en us per un altre grup.';
+$lang['High definition'] = 'Alta definició';
+$lang['jump to album'] = 'Salta a l\'àlbum';
+$lang['jump to photo'] = 'Salta a la foto';
+$lang['leave'] = 'Deixa';
+$lang['Lock'] = 'Bloquejos';
+$lang['Locked'] = 'Bloquejat';
+$lang['manage album photos'] = 'Gestiona les fotos de l\'àlbum';
+$lang['manage sub-albums'] = 'gestiona els sub-àlbums';
+$lang['Manage'] = 'Gestiona';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'El temps d\'execució s\'ha acabat. El tractament ha de continuar [Temps estimat: %d segons].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'El temps d\'execució s\'ha excedit. El processament ha de continuar [Temps estimat: %d segons].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'El temps requerit per a processar la llista d\'usuaris a enviar-los correus és limitat. No s\'han pogut processar tots els usuaris.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'El temps d\'enviament del correu és limitat. No tots els missatges han pogut ser enviats. S\'han omès missatges de correu electrònic.';
+$lang['To send ?'] = 'Enviar-ho?';
+$lang['User'] = 'Usuari';
+$lang['Complementary mail content'] = 'Contingut complementari del correu electrònic';
+$lang['See you soon,'] = 'Fins aviat,';
+$lang['Go to'] = 'Ves a';
+$lang['Hello'] = 'Hola';
+$lang['New photos were added'] = 'S\'han afegit fotos noves';
+$lang['on'] = 'sobre';
+$lang['between'] = 'entre';
+$lang['and'] = 'i';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'L\'administrador del web t\'ha subscrit per rebre notificacions per correu electrònic.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Us heu subscrit per a rebre notificacions per correu electrònic.';
+$lang['To subscribe'] = 'Subscriure\'s';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Si trobeu problemes o teniu qüalsevol qüestió, si us plau envieu un missatge a';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemes o preguntes';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'L\'administrador de la web us ha donat de baixa de rebre notificacions per correu.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Us heu donat de baixa de rebre notificacions per correu.';
+$lang[', click on'] = ', cliqueu a sobre';
+$lang['To unsubscribe'] = 'Dona de baixa';
+$lang['With blank value, gallery title will be used'] = 'Si es deixa en blanc, s\'utilitzarà el títol de la galeria';
+$lang['Notification'] = 'Notificacions';
+$lang['Error when sending email to %s [%s].'] = 'Error en enviar un correu electrònic a %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Correu electrònic enviat a %s [%s].';
+$lang['%d mail was sent.'] = 'S\'ha pogut enviar %d correu electrònic.';
+$lang['%d mails were sent.'] = 's\'han enviat %d correus electrònics.';
+$lang['%d mail was not sent.'] = 'No s\'ha pogut enviar %d correu electrònic.';
+$lang['%d mails were not sent.'] = 'No s\'han pogut enviar %d correus electrònics.';
+$lang['No mail to send.'] = 'No hi ha correus electrònics per enviar.';
+$lang['There is no available subscribers to mail.'] = 'No hi ha usuaris subscrits per enviar notificacions per correu electrònic.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Els usuaris inscrits només es llistaran (si la opció està habilitada) sempre que hi hagi nous elements a notificar.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'De totes formes només els webmasters poden veure aquesta pestanya, no els administradors.';
+$lang['No user to send notifications by mail.'] = 'No hi ha usuaris a qui enviar notificacions per correu electrònic';
+$lang['New photos added'] = 'Fotos noves afegides';
+$lang['Subscribe to notification by mail'] = 'Subscriviu-vos per notificacions per correu electrònic';
+$lang['Unsubscribe from notification by mail'] = 'Donar-se de baixa de les notificacions per correu';
+$lang['Parameter'] = 'Configuració';
+$lang['Continue processing treatment'] = 'Continua el tractament en curs';
+$lang['Complementary mail content'] = 'Contingut de correu complementari';
+$lang['Add detailed content'] = 'Afegeix algun contingut detallat';
+$lang['Send mail as'] = 'Envia un correu electrònic com';
+$lang['Send mail to users'] = 'Envia un correu electrònic als usuaris';
+$lang['Send'] = 'Envia';
+$lang['Options'] = 'Opcions';
+$lang['Subscribed'] = 'Subscrit';
+$lang['Subscribe'] = 'Subscriviu-vos';
+$lang['Parameters'] = 'Paràmetres';
+$lang['Select recipients'] = 'Seleccioneu els destinataris';
+$lang['Subscribe/unsubscribe users'] = 'Subscriu/Dona de baixa usuaris';
+$lang['Unsubscribed'] = 'Dóna de baixa';
+$lang['%d parameter was updated.'] = 'S\'ha actualitzat %d paràmetre.';
+$lang['%d parameters were updated.'] = 'S\'ha actualitzat %d paràmetres.';
+$lang['%d user was not updated.'] = '%d usuari no actualitzat.';
+$lang['%d users were not updated.'] = '%d usuaris no actualitzats.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'L\'usuari %s [%s] ha estat eliminat de la llista de subscripció.';
+$lang['User %s [%s] was added to the subscription list.'] = 'L\'usuari %s [%s] ha estat afegit a la llista de subscripció.';
+$lang['%d user was updated.'] = '%d usuari actualitzat.';
+$lang['%d users were updated.'] = '%d usuaris actualitzats.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'L\'usuari %s [%s] no ha estat eliminat de la llista de subscripció.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'L\'usuari %s [%s] no ha estat afegit a la llista de subscripció';
+$lang['User %s [%s] added.'] = 'S\'ha afegit l\'usuari %s [%s].';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Avís: Tant en subscripcions com en baixes s\'enviarà un coreu electrònic als usuaris.';
+$lang['Send mail on HTML format'] = 'Envia un correu electrònic en format HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Inclou una visualització de les fotos recents agrupades per dates';
+$lang['Available only with HTML format'] = 'Només disponible en format HTML';
+$lang['no write access'] = 'accés d\'escriptura no permès';
+$lang['Permissions'] = 'Permisos';
+$lang['private'] = 'privat';
+$lang['Properties'] = 'Propietats';
+$lang['public'] = 'públic';
+$lang['Purge never used notification feeds'] = 'Elimina els feeds de notificació que no s\'han utilitzat mai';
+$lang['Purge sessions'] = 'Elimina les sessions';
+$lang['randomly represented'] = 'miniatura de l\'àlbum aleatòria';
+$lang['registration date'] = 'data de registre';
+$lang['clean'] = 'neteja';
+$lang['Create this site'] = 'Crea aquest lloc';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'testeja aquest lloc remot';
+$lang['remove tags'] = 'elimina les etiquetes';
+$lang['Repair and optimize database'] = 'Repara i optimitza la base de dades';
+$lang['selection'] = 'selecció';
+$lang['set to'] = 'estableix a';
+$lang['singly represented'] = 'miniatura de l\'àlbum fixa';
+$lang['This site already exists'] = 'Aquest lloc ja existeix';
+$lang['created'] = 'creat';
+$lang['delete'] = 'elimina';
+$lang['delete this site and all its attached elements'] = 'Elimina aquest lloc i tota la informació relacionada';
+$lang['deleted'] = 'eliminat';
+$lang['an error happened'] = 'hi ha hagut algun error';
+$lang['Local'] = 'Local';
+$lang['Remote'] = 'Remot';
+$lang['update the database from files'] = 'Actualitza la base de dades amb els arxius.';
+$lang['status'] = 'estat';
+$lang['Directory'] = 'Directori';
+$lang['sub-albums'] = 'sub-àlbums';
+$lang['target'] = 'aplicar a';
+$lang['Thumbnail'] = 'Diapositiva';
+$lang['Title'] = 'Títol';
+$lang['Album list management'] = 'Gestió de la llista d\'àlbums';
+$lang['Piwigo configuration'] = 'Configuració del Piwigo';
+$lang['Edit album'] = 'Edita l\'àlbum';
+$lang['Group management'] = 'Gestió de grups';
+$lang['User list'] = 'Llista d\'usuaris';
+$lang['Edit photo information'] = 'Edita la informació de la foto';
+$lang['Database synchronization with files'] = 'Sincronització d\'arxius amb la la base de dades';
+$lang['all'] = 'Totes';
+$lang['height must be a number superior to'] = 'l\'alçada ha de ser un número superior a';
+$lang['width must be a number superior to'] = 'l\'amplada ha de ser un número superior a';
+$lang['for the file format'] = 'per al format de fitxer';
+$lang['Photo unreachable or no support'] = 'Foto inaccessible o format no suportat';
+$lang['GD version'] = 'versió de GD';
+$lang['General statistics'] = 'Estadístiques generals';
+$lang['average time'] = 'Temps mitjà';
+$lang['number of miniaturized photos'] = 'nombre de miniatures creades';
+$lang['total time'] = 'temps total';
+$lang['for this file format'] = 'per aquest format de fitxer';
+$lang['unit mode'] = 'mode unitari';
+$lang['Unlocked'] = 'Desbloquejada';
+$lang['unset'] = 'no configurar';
+$lang['Update albums informations'] = 'Actualitza la informació dels àlbums';
+$lang['Update photos information'] = 'Actualitza la informació de les fotos';
+$lang['Synchronize'] = 'Sincronitza';
+$lang['reduce to single existing albums'] = 'redueix solament als àlbums existents';
+$lang['Choose an option'] = 'Escolliu una opció';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Visualitza la màxima informació (àlbums i fotos afegides i eliminades)';
+$lang['Error list'] = 'Llista d\'errors';
+$lang['Errors caption'] = 'Llegenda dels errors';
+$lang['Detailed informations'] = 'Informacions detallades';
+$lang['File/directory read error'] = 'Error de lectura de l\'arxiu/directori';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'No es pot accedir a l\'arxiu o al directori (potser no existeix o l\'accés està denegat)';
+$lang['albums deleted in the database'] = 'àlbums eliminats de la base de dades';
+$lang['photos deleted from the database'] = 'fotos eliminades de la base de dades';
+$lang['photos candidates for metadata synchronization'] = 'fotos candidates per la sincronització de metadades';
+$lang['photos informations synchronized with files metadata'] = 'informació de les fotos sincronitzades amb els arxius de metadades';
+$lang['errors during synchronization'] = 'errors durant la sincronització';
+$lang['albums added in the database'] = 'Àlbums afegits a la base de dades';
+$lang['photos added in the database'] = 'fotos afegides a la base de dades';
+$lang['photos updated in the database'] = 'fotos actualitzades a la base de dades';
+$lang['Search for new images in the directories'] = 'Cerca noves fotos en els directoris';
+$lang['added'] = 'afegit';
+$lang['deleted'] = 'eliminades';
+$lang['Metadata synchronization results'] = 'Resultats de la sincronització de les metadades';
+$lang['only perform a simulation (no change in database will be made)'] = 'realitzar només una simulació (no es farà cap canvi a la base de dades)';
+$lang['Simulation'] = 'Simulació';
+$lang['directories + files'] = 'Directoris i arxius';
+$lang['only directories'] = 'només directoris';
+$lang['synchronize files structure with database'] = 'Sincronitza l\'estructura d\'arxius amb la base de dades';
+$lang['synchronize files metadata with database photos informations'] = 'sincronitza les fotos de la base de dades amb els arxius de metadades';
+$lang['even already synchronized photos'] = 'també les fotos ja sincronitzades';
+$lang['Used metadata'] = 'Metadades utilitzades';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'El nom dels directoris i fitxers ha de estar composat per lletres, números, "-", "_" o "."';
+$lang['wrong filename'] = 'nom de fitxer erroni';
+$lang['Upload'] = 'Carregar';
+$lang['user "%s" added'] = 's\'ha afegit l\'usuari "%s"';
+$lang['User status'] = 'Estat de l\'usuari';
+$lang['user_status_admin'] = 'Administrador';
+$lang['user_status_generic'] = 'Genèric';
+$lang['user_status_guest'] = 'Visitant';
+$lang['user_status_normal'] = 'Usuari';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Users'] = 'Usuaris';
+$lang['Virtual album'] = 'Àlbum virtual';
+$lang['Waiting'] = 'Pendent';
+$lang['default'] = 'Per defecte';
+$lang['Toggle \'default group\' property'] = 'Revertir la propietat \'grup per defecte\'';
+$lang['Advanced features'] = 'Funcions avançades';
+$lang['Overall'] = 'Informació general';
+$lang['Year'] = 'Any';
+$lang['Month'] = 'Mes';
+$lang['Day'] = 'Dia';
+$lang['Pages seen'] = 'Pàgines vistes';
+$lang['Time'] = 'Hora';
+$lang['User'] = 'Usuari';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'Secció';
+$lang['Properties'] = 'Propietats';
+$lang['An information email was sent to group "%s"'] = 'S\'ha enviat un correu electrònic informatiu al grup "%s" ';
+$lang['Send an information email to group members'] = 'Envia una notificació per correu electrònic als membres del grup';
+$lang['Group'] = 'Grup';
+$lang['[%s] Visit album %s'] = '[%s] Visiteu l\'àlbum %s';
+$lang['Hello,'] = 'Hola,';
+$lang['See you soon.'] = 'Fins aviat.';
+$lang['Discover album:'] = 'Descobrir l\'àlbum:';
+$lang['Mail content'] = 'Contingut del correu';
+$lang['none'] = 'cap';
+$lang['high'] = 'alt';
+$lang['other'] = 'altres';
+$lang['Element type'] = 'Tipus d\'element';
+$lang['User'] = 'Usuari';
+$lang['Image id'] = 'Identificador de la imatge';
+$lang['Summary'] = 'Resum';
+$lang['%d line filtered'] = '%d línia filtrada';
+$lang['%d lines filtered'] = '%d línies filtrades';
+$lang['%d guest'] = '%d visitant';
+$lang['%d guests'] = '%d visitants';
+$lang['Hour'] = 'Hora';
+$lang['guest'] = 'visitant';
+$lang['default values'] = 'valors per defecte';
+$lang['Guest cannot be deleted'] = 'L\'usuari visitant no es pot eliminar';
+$lang['Default user cannot be deleted'] = 'L\'usuari predeterminat no es pot eliminar';
+$lang['Purge history detail'] = 'Elimina l\'historial dels detalls';
+$lang['Purge history summary'] = 'Elimina l\'historial del resum';
+$lang['Check integrity'] = 'Comprova la integritat';
+$lang['Anomaly'] = 'Anomalia';
+$lang['Correction'] = 'Correcció';
+$lang['Automatic correction'] = 'Correció automàtica';
+$lang['Impossible automatic correction'] = 'No es possible aplicar la correcció automàtica';
+$lang['Correction applied with success'] = 'Correcció aplicada amb èxit';
+$lang['Correction applied with error'] = 'Correcció aplicada amb errors';
+$lang['%d anomaly has been detected.'] = 'S\'ha detectat %d anomalia.';
+$lang['%d anomalies have been detected.'] = 'S\'han detectat %d anomalies.';
+$lang['%d anomaly has been corrected.'] = 'S\'ha corregit %d anomalia.';
+$lang['%d anomalies have been detected corrected.'] = 'S\'han detectat i corregit %d anomalies.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalia no s\'ha pogut corregit.';
+$lang['%d anomalies have not been corrected.'] = 'No s\'han pogut corregit %d anomalies.';
+$lang['Go to %s or %s for more informations'] = 'Aneu a %s o %s per a més informació';
+$lang['the forum'] = 'el fòrum';
+$lang['the wiki'] = 'la wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s valor de l\'arxiu incorrecte perquè Exif no és suportat';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s s\'ha d\'establir a fals en el fitxer local/config/config.inc.php';
+$lang['Main "guest" user does not exist'] = 'No existeix l\'usuari principal "guest" ';
+$lang['Main "guest" user status is incorrect'] = 'L\'estat de l\'usuari principal "guest" és incorrecte';
+$lang['Default user does not exist'] = 'L\'usuari predeterminat no existeix';
+$lang['Main "webmaster" user does not exist'] = 'El principal usuari "webmaster" no existeix';
+$lang['Main "webmaster" user status is incorrect'] = 'L\'estat de l\'usuari principal "webmaster" és incorrecte';
+$lang['User "%s" created with "%s" like password'] = 'S\'ha creat l\'usuari "%s" amb contrasenya "%s"';
+$lang['Status of user "%s" updated'] = 'S\'ha actualitzat l\'estat de l\'usuari "%s"';
+$lang['add new photos to caddie'] = 'Afegeix noves fotos al carret';
+$lang['No display'] = 'Sense visualització';
+$lang['Classic display'] = 'Visualització clàssica';
+$lang['Hoverbox display'] = 'Visualització Hoverbox';
+$lang['Mail address is obligatory for all users'] = 'L\'adreça de correu és obligatòria per a tots els usuaris';
+$lang['Minimum privacy level'] = 'Nivell mínim de privacitat';
+$lang['Privacy level'] = 'Nivell de privacitat';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contactes';
+$lang['Level 2'] = 'Amics';
+$lang['Level 4'] = 'Família';
+$lang['Level 8'] = 'Administradors';
+$lang['Reinitialize check integrity'] = 'Reinicia la comprovació de la integritat';
+$lang['Check all'] = 'Marcar-ho tot';
+$lang['Uncheck all'] = 'Desmarca-ho tot';
+$lang['Check automatic corrections'] = 'Comprova les correccions automàtiques';
+$lang['Apply selected corrections'] = 'Aplica les correccions seleccionades';
+$lang['Ignore selected anomalies'] = 'Ignora les anomalies seleccionades';
+$lang['Refresh'] = 'Actualitza';
+$lang['The anomaly will be ignored until next application version'] = 'L\'anomalia serà ignorada fins a la següent versió de l\'aplicació';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'L\'anomalia no pot ser ignorada per a la seva correcció';
+$lang['%d anomaly has been ignored.'] = 'S\'ha ignorat  %d anomalia.';
+$lang['%d anomalies have been ignored.'] = 'S\'han ignorat %d anomalies.';
+$lang['Plugins which need upgrade'] = 'Connectors que necessiten actualitzar-se';
+$lang['Plugin list'] = 'Llista de connectors';
+$lang['Check for updates'] = 'Comprova si hi ha actualitzacions';
+$lang['Other plugins'] = 'Altres connectors disponibles';
+$lang['Last revisions'] = 'Últimes modificacions';
+$lang['Are you sure you want to delete this plugin?'] = 'Esteu segurs que vol eliminar aquest connector?';
+$lang['Are you sure you want to install this plugin?'] = 'Esteu segurs que voleu instal·lar aquest connector?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Està segur que vol instal·lar aquesta actualització? És important verificar abans d\'actualitzar si aquesta versió no necessita una desinstal·lació prèvia.';
+$lang['Plugin has been successfully copied'] = 'El connector s\'ha copiat correctament';
+$lang['You might go to plugin list to install and activate it.'] = 'Heu d\'anar a la llista de connectors instal·lats i activar-lo.';
+$lang['Can\'t create temporary file.'] = 'No s\'ha pogut crear el fitxer temporal.';
+$lang['Can\'t download archive.'] = 'No s\'ha pogut descarregar l\'arxiu.';
+$lang['Can\'t read or extract archive.'] = 'No s\'ha pogut llegir o extreure l\'arxiu.';
+$lang['An error occured during extraction (%s).'] = 'S\'ha produït un error durant l\'extracció dels fitxers (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Si us plau, reviseu els permisos de la carpeta dels connectors "plugins", així com a les seves subcarpetes (CHMOD).';
+$lang['Can\'t connect to server.'] = 'No s\'ha pogut establir la connexió al servidor ';
+$lang['Purge compiled templates'] = 'Elimina les plantilles compilades';
+$lang['Upload'] = 'Penja';
+$lang['ACCESS_0'] = 'Accés lliure';
+$lang['ACCESS_1'] = 'Accés a tothom';
+$lang['ACCESS_2'] = 'Accés als usuaris registrats';
+$lang['ACCESS_3'] = 'Accés als administradors';
+$lang['ACCESS_4'] = 'Accés als webmasters';
+$lang['ACCESS_5'] = 'Sense accés';
+$lang['Support'] = 'Suport';
+$lang['Documentation'] = 'Documentació';
+$lang['A new version of Piwigo is available.'] = 'Hi ha una nova versió disponible.';
+$lang['Piwigo Administration'] = 'Administració de Piwigo';
+$lang['Piwigo version'] = 'Versió de Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Ja esteu executant l\'última versió de Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'La versió instal·lada de %s [%s] no és compatible amb la versió requerida [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Cal actualitzar el sistema per treure profit de totes les funcionalitats de l\'aplicació. Fins que no s\'actualitzi, és possible que l\'aplicació no funcioni correctament.';
+$lang['Deleted on'] = 'Eliminada el';
+$lang['Last hit'] = 'Última visita';
+$lang['GD library is missing'] = 'No es troba la llibreria GD';
+$lang['Templates'] = 'Plantilles';
+$lang['Extend for templates'] = 'Extensió de plantilles';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Substitueix les plantilles originals per plantilles fetes a mida des de la subcarpeta template-extension';
+$lang['Replacers (customized templates)'] = 'Substitueix (plantilles fetes a mida)';
+$lang['Original templates'] = 'Plantilla original';
+$lang['Optional URL keyword'] = 'Paraula clau opcional a la URL';
+$lang['Templates configuration has been recorded.'] = 'S\'ha registrat la configuració de les plantilles';
+$lang['All optimizations have been successfully completed.'] = 'Totes les optimitzacions s\'han realizat correctament.';
+$lang['Optimizations have been completed with some errors.'] = 'Les optimitzacions s\'han realitzat amb errors.';
+$lang['Modify information'] = 'Modifica la informació';
+$lang['nothing'] = 'res';
+$lang['overrides existing values with empty ones'] = 'buida els valors existents';
+$lang['Manage photo ranks'] = 'Administra les classificacions de les fotos';
+$lang['Edit ranks'] = 'Edita les valoracions';
+$lang['No photo in this album'] = 'Aquest àlbum no conté fotos';
+$lang['Images manual order was saved'] = 'S\'ha desat l\'ordre manual de les imatges';
+$lang['ranks'] = 'valoracions';
+$lang['Drag to re-order'] = 'Clicar i arrossegar per a reordenar';
+$lang['Quick Local Synchronization'] = 'Sincronització local ràpida';
+$lang['No photo can be deleted'] = 'No es pot seleccionar cap foto';
+$lang['Delete selected photos'] = 'Elimina les fotos seleccionades';
+$lang['%d photo was deleted'] = 'S\'ha eliminat %d foto';
+$lang['%d photos were deleted'] = 'S\'han eliminat %d fotos';
+$lang['Released on'] = 'Llançat el';
+$lang['Number of downloads'] = 'Nombre de descàrregues';
+$lang['Piwigo Announcements Newsletter'] = 'Butlletí informatiu de Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Mantingue\'t informat quant al projecte Piwigo. Subscriu-te al butlletí de notícies. Rebràs un correu electrònic quan una nova versió estigui disponible (de vegades un bug de seguretat és corregit..., és important estar alerta) o que hi hagi un aconteixement important sobre el projecte. Únicament seran alguns missatges durant l\'any.';
+$lang['Subscribe %s'] = 'Subscriviu-vos %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Subscriviu-vos %s al butlletí de notícies <i>Piwigo Newsletter</i>';
+$lang['Purge search history'] = 'Elimina l\'historial de cerques';
+$lang['Hide'] = 'Oculta';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Sobrepasado el tiempo de ejecución, el procesamiento debe continuar [Tiempo estimado: %d secundas].';
+$lang['Operation in progress'] = 'Tractament en progrés.';
+$lang['Please wait...'] = 'Si us plau, esperi...';
+$lang['Password is missing. Please enter the password.'] = 'Falta la clau d\'accès. Si us plau, introdueix-la.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta confirmar la contrasenya. Si us plau, confirmeu la contrasenya escollida.';
+$lang['Allow users to edit their own comments'] = 'Permet que els usuaris puguin editar els seus propis comentaris';
+$lang['Allow users to delete their own comments'] = 'Permet que els usuaris puguin eliminar els seus propis comentaris';
+$lang['Email administrators when a comment is modified'] = 'Envia un correu electrònic als administradors quan es modifiqui un comentari';
+$lang['Email administrators when a comment is deleted'] = 'Envia un correu electrònic als administradors quan s\'elimini un comentari';
+$lang['Cannot delete the old permalink !'] = 'No s\'ha pogut eliminar l\'antic enllaç permanent!';
+$lang['Hit'] = 'Accés';
+$lang['Tools'] = 'Eines';
+$lang['Photos'] = 'Fotos';
+$lang['Themes'] = 'Temes';
+$lang['Instructions to use Piwigo'] = 'Instruccions d\'ús de Piwigo';
+$lang['Installed Themes'] = 'Temes instal·lats';
+$lang['Add New Theme'] = 'Afegeix un nou tema';
+$lang['Forbid this theme to users'] = 'Prohibeix aquest tema als usuaris';
+$lang['Set as default theme for unregistered and new users'] = 'Estableix com a tema predeterminat per als nous usuaris i usuaris no registrats';
+$lang['unknown'] = 'desconegut';
+$lang['Upload Photos'] = 'Penja fotos';
+$lang['Drop into album'] = 'Seleccioneu un àlbum';
+$lang['+ Add an upload box'] = '<i>Afegir</i>';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crea el directori "%s" a l\'arrel de la instal·lació Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Cal concedir permisos d\'escriptura (chmod 777) al directori "%s" a l\'arrel de la instal·lació de Piwigo';
+$lang['existing album'] = 'àlbum existent';
+$lang['create a new album'] = 'creeu un nou àlbum';
+$lang['Album name'] = 'Nom de l\'àlbum';
+$lang['Album "%s" has been added'] = 'S\'ha afegit l\'àlbum "%s"';
+$lang['Uploaded Photos'] = 'Fotos penjades';
+$lang['%d photos uploaded'] = 'S\'han penjat %d fotos';
+$lang['Privacy level set to "%s"'] = 'Nivell de confidencialitat "%s"';
+$lang['Album "%s" now contains %d photos'] = 'En aquests moments l\'àlbum "%s" conté %d fotos';
+$lang['Manage this set of %d photos'] = 'Administra aquest conjunt de %d fotos';
+$lang['Select files'] = 'Seleccioneu els arxius';
+$lang['Everybody'] = 'Tothom';
+$lang['Who can see these photos?'] = 'Qui podrà veure aquestes fotos?';
+$lang['Settings'] = 'Configuració';
+$lang['Resize'] = 'Redimensionar';
+$lang['Maximum width'] = 'Amplada màxima';
+$lang['pixels'] = 'píxels';
+$lang['Maximum height'] = 'Altura máxima';
+$lang['Image Quality'] = 'Qualitat d\'imatge';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Save Settings'] = 'Desa els ajustos';
+$lang['Your configuration settings are saved'] = 'Les modificacions s\'han desat correctament';
+$lang['Active Themes'] = 'Temes actius';
+$lang['Add write access to the "%s" directory'] = 'Afegeix l\'accés l\'escriptura al directori "%s"';
+$lang['Administration Home'] = 'Taulell de control';
+$lang['Change Admin Colors'] = 'Intercanvia els colors d\'administració';
+$lang['Delete this theme'] = 'Elimina aquest tema';
+$lang['Directory does not exist'] = 'Aquest directori no existeix';
+$lang['FTP + Synchronization'] = 'FTP + Sincronització';
+$lang['Get Support on Piwigo Forum'] = 'Obteniu suport al fòrum de Piwigo';
+$lang['Help Me'] = 'Ajuda\'m';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Aquest tema no s\'ha pogut activar, degut a que falta el tema pare: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Aquest tema no pot ser eliminat perquè n\'hi ha d\'altres que en depenen d\'ell: %s';
+$lang['Inactive Themes'] = 'Temes inactius';
+$lang['Install on your computer,'] = 'Instal·la al vostre ordinador,';
+$lang['Make this theme available to users'] = 'Permet aquest tema als usuaris';
+$lang['Page end'] = 'Final de pàgina';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = 'Llegiu la documentació de Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Inicia pLoader i afegiu les vostres fotos.';
+$lang['Switch to clear or dark colors for administration'] = 'Canvi de colors clars a foscos per als administradors';
+$lang['Theme has been successfully installed'] = 'El tema s\'ha instal·lat amb èxit.';
+$lang['Visit Gallery'] = 'Visiteu la galeria';
+$lang['Visit Piwigo project website'] = 'Visiteu el web del projecte Piwigo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'PLoader representa a <em>Piwigo Uploader</em>. Des del seu ordinador pLoader prepara les seves fotos i les trasllada a la seva galeria Piwigo.';
+$lang['Guest Settings'] = 'Ajustos de l\'usuari visitant';
+$lang['Main Page'] = 'Pàgina principal';
+$lang['Photo Page'] = 'Pàgina de la foto';
+$lang['Activate Navigation Bar'] = 'Activa la barra de navegació';
+$lang['Activate Navigation Thumbnails'] = 'Activa les miniatures de navegació';
+$lang['Activate icon "%s"'] = 'Activa la icona "%s"';
+$lang['Photo Properties'] = 'Propietats de la foto';
+$lang['Allow user customization'] = 'Permet la personalització de l\'usuari';
+$lang['Languages'] = 'Idiomes';
+$lang['Installed Languages'] = 'Idiomes instal·lats';
+$lang['Add New Language'] = 'Afegeix un nou idioma';
+$lang['Language has been successfully installed'] = 'L\'idioma s\'ha instal·lat correctament';
+$lang['Select:'] = 'Selecciona:';
+$lang['None'] = 'Cap';
+$lang['Invert'] = 'Invertir';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Aquest és l\'únic tema disponible de la galeria. Per a poder-lo desactivar cal tenir-ne un altre.';
+$lang['Webmaster status is required.'] = 'Aquesta acció només la pot dur a terme un webmaster';
+$lang['Bound Theme'] = 'Tema limitat';
+$lang['Allow rating'] = 'Permet valoracions';
+$lang['Select at least one comment'] = 'Seleccioneu al menys un comentari';
+$lang['Active Plugins'] = 'Connectors actius';
+$lang['Inactive Plugins'] = 'Connectors inactius';
+$lang['Missing Plugins'] = 'Connectors que falten';
+$lang['Uninstalled Plugins'] = 'Connectors desinstal·lats';
+$lang['By %s'] = 'Per %s';
+$lang['Visit plugin site'] = 'Visiteu el lloc web del connector';
+$lang['Active Languages'] = 'Idiomes actius';
+$lang['Delete this language'] = 'Elimina aquest idioma';
+$lang['Forbid this language to users'] = 'Prohibeix aquest idioma als usuaris';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'No es pot desactivar aquest idioma, primer definiu un altre idioma per defecte.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Aquest és l\'únic idioma disponible de la galeria. Per a poder-lo desactivar cal que tenir-ne un altre.';
+$lang['Inactive Languages'] = 'Idiomes inactius';
+$lang['Make this language available to users'] = 'Permet aquest idioma als usuaris';
+$lang['Set as default language for unregistered and new users'] = 'Estableix com a idioma predeterminat per als nous usuaris i usuaris no registrats';
+$lang['Miscellaneous'] = 'Miscel·lània ';
+$lang['Virtual Links'] = 'Enllaços virtuals';
+$lang['Add Photos'] = 'Afegeix fotos';
+$lang['The following tag was deleted'] = 'S\'ha eliminat la següent etiqueta';
+$lang['There is no other language available.'] = 'No hi ha més idiomes disponibles';
+$lang['There is no other plugin available.'] = 'No hi ha cap connector disponible.';
+$lang['There is no other theme available.'] = 'No hi ha un altre tema disponible';
+$lang['By rank'] = 'Per valoració';
+$lang['Manual order'] = 'Ordre manual';
+$lang['Add another set of photos'] = 'Afegeix un altre conjunt de fotos';
+$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre de la barra de menú s\'ha actualitzat correctament.';
+$lang['This theme was not designed to be directly activated'] = 'Aquest tema no va ser dissenyat per ser directament activat';
+$lang['Who can see this photo?'] = 'Qui pot veure aquesta foto?';
+$lang['Pending Comments'] = 'Comentaris pendents de validar';
+$lang['Menu Management'] = 'Gestiona els menús';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'En el vostre arxiu php.ini, la variable upload_max_filesize (%sB) es major que post_max_size (%sB), Hauríeu de canviar aquesta configuració.';
+$lang['Exif extension not available, admin should disable exif use'] = 'L\'extensió Exif no està disponible. L\'administrador hauria de deshabilitar l\'ús de metadades Exif.';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'La mida de l\'arxiu penjat excedeix el valor upload_max_filesize de l\'arxiu php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'La mida total dels arxius que esteu penjant excedeix el valor post_max_size de l\'arxiu php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'La mida de l\'arxiu penjat excedeix el MAX_FILE_SIZE definit en el formulari HTML';
+$lang['The uploaded file was only partially uploaded'] = 'L\'arxiu s\'ha pujat només parcialment.';
+$lang['No file was uploaded'] = 'No s\'ha penjat cap arxiu';
+$lang['Missing a temporary folder'] = 'No es troba el directori temporal';
+$lang['Failed to write file to disk'] = 'No s\'ha pogut escriure el fitxer al disc';
+$lang['File upload stopped by extension'] = 'La càrrega d\'arxius s\'ha aturat per extensió';
+$lang['Unknown upload error'] = 'Hi ha hagut un error desconegut en penjar les fotos';
+$lang['Error on file "%s" : %s'] = 'Error a l\'arxiu "%s": %s';
+$lang['automatic order'] = 'Ordre automàtic';
+$lang['manual order'] = 'ordre manual';
+$lang['Albums automatically sorted'] = 'Àlbums ordenats automàticament';
+$lang['Batch Manager'] = 'Gestor per lots';
+$lang['include child albums'] = 'incloure els sub-àlbums';
+$lang['Selection'] = 'Selecció';
+$lang['Action'] = 'Acció';
+$lang['Set author'] = 'Estableix autor';
+$lang['Set title'] = 'Estableix el títol';
+$lang['Set creation date'] = 'Estableix la data de creació';
+$lang['Apply action'] = 'Aplica acció';
+$lang['on the %d selected photos'] = 'en les %d fotos seleccionades';
+$lang['%d of %d photos selected'] = '%d de %d fotos seleccionades';
+$lang['No photo selected, %d photos in current set'] = 'No hi ha cap foto seleccionada entre les %d fotos l\'actual conjunt';
+$lang['All %d photos are selected'] = 'S\'han seleccionat totes les %d fotos';
+$lang['remove this filter'] = 'elimina aquest filtre';
+$lang['Add a filter'] = 'Afegeix filtre';
+$lang['Remove all filters'] = 'Elimina tots els filtres';
+$lang['Refresh photo set'] = 'Actualitza les fotos del conjunt';
+$lang['The whole page'] = 'La pàgina sencera';
+$lang['The whole set'] = 'Tot el conjunt';
+$lang['No photo in the current set.'] = 'No hi ha fotos en aquest conjunt.';
+$lang['No photo selected, no action possible.'] = 'No es pot realitzar cap acció ja que no hi ha cap foto seleccionada.';
+$lang['Choose an action'] = 'Seleccioneu una acció';
+$lang['remove author'] = 'elimina l\'autor';
+$lang['Type here the author name'] = 'Escriviu aquí el nom de l\'autor';
+$lang['remove title'] = 'eliminar el títol';
+$lang['Type here the title'] = 'Escriviu aquí el títol';
+$lang['remove creation date'] = 'elimina la data de creació';
+$lang['Album photos associated to the following albums: %s'] = 'Àlbums de fotos associats als següents àlbums: %s';
+$lang['Delete orphan tags'] = 'Elimina les etiquetes orfes';
+$lang['delete photo'] = 'Elimina la foto';
+$lang['Orphan tags deleted'] = 'S\'han eliminat les etiquetes orfes';
+$lang['Week starts on'] = 'La setmana comença el';
+$lang['You have %d orphan tags: %s.'] = 'Teniu %d etiquetes orfes: %s.';
+$lang['Remove from caddie'] = 'Treu del carret';
+$lang['Themes which need upgrade'] = 'Temes per actualitzar';
+$lang['Languages which need upgrade'] = 'Idiomes per actualitzar';
+$lang['All themes are up to date.'] = 'Tots els temes estan actualitzats.';
+$lang['All plugins are up to date.'] = 'Tots els connectors estan actualizats.';
+$lang['All languages are up to date.'] = 'Tots els idiomes estan actualitzats.';
+$lang['Visit theme site'] = 'Visiteu el web del tema';
+$lang['Visit language site'] = 'Visiteu el web de l\'idioma';
+$lang['New Version'] = 'Nova versió';
+$lang['Obsolete Plugins'] = 'Connectors obsolets';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVERTÈNCIA! Aquest connector sembla no ser compatible amb la vostra versió de Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Voleu activar-ho de totes maneres?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'AQUEST CONNECTOR ARA ÉS PART DEL NUCLI DE PIWIGO! DESINSTAL·LA\'L! ';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: FALTA AQUEST CONNECTOR TOT I QUE ESTÀ INSTAL·LAT. DESINSTAL·LA\'L ARA!';
+$lang['Thumbnails generation in progress...'] = 'Generació de miniatures en curs...';
+$lang['Photos generation in progress...'] = 'Generació de fotos en curs...';
+$lang['%s photos have been regenerated'] = 's\'han regenerat %s fotos';
+$lang['%s photos can not be regenerated'] = '%s fotos no es poden regenerar';
+$lang['display'] = 'Visualitza';
+$lang['Type in a search term'] = 'Escriviu un terme de cerca';
+$lang['new'] = 'nou';
+$lang['No results'] = 'Sense resultats.';
+$lang['Searching...'] = 'Buscant...';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activa la icona "nou" al costat dels àlbums i de les imatges';
+$lang['Add a criteria'] = 'Afegeix criteris';
+$lang['Deactivate all'] = 'Desactiva-ho tot';
+$lang['Default photos order'] = 'Ordre per defecte de les fotos';
+$lang['Restore'] = 'Restaura';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restableix els valors de configuració predeterminats. Es perdran tots els ajustos personalitzats.';
+$lang['Show menubar'] = 'Visualitza la barra de menú';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'No es pot definir un ordre predeterminat de les fotos perquè hi ha establerta una configuració fet a mida a la configuració local de l\'aplicació.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Heu especificat <i>$conf[\'order_by\']</ i> en l\'arxiu de configuració local. Aquest paràmetre està obsolet. Elimineu-lo o canvieu-li el nom a <i>$conf[\'order_by_custom\']</ i>!';
+$lang['Updates'] = 'Actualizaciones';
+$lang['Update in progress... Please wait.'] = 'Actualització en curs... Si us plau, espereu.';
+$lang['Ignore this update'] = 'Ignora aquesta actualització';
+$lang['Reset ignored updates'] = 'Restableix les actualitzacions que han estat omeses';
+$lang['Update All'] = 'Actualitza-ho tot';
+$lang['ERROR'] = 'ERROR';
+$lang['Update Complete'] = 'Actualització realitzada';
+$lang['Piwigo Update'] = 'Piwigo Update';
+$lang['Extensions Update'] = 'Actualitza les extensions';
+$lang['All extensions are up to date.'] = 'Totes les extensions estàn actualitzades.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Els següents connectors poden no ser compatibles amb la nova versió de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Els següents temes poden no ser compatibles amb la nova versió de Piwigo:';
+$lang['I decide to update anyway'] = 'Vull actualitzar de totes maneres';
+$lang['Update to Piwigo %s'] = 'Actualitza a Piwigo %s';
+$lang['Two updates are available'] = 'Hi ha dues actualitzacions disponibles';
+$lang['This is a minor update, with only bug corrections.'] = 'Aquesta actualització és menor. Només conté correccions d\'errors.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Aquesta es una actualització major, amb <a href="%s"> noves i entusiasmadores funcions</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Alguns temes i connectors poden no estar disponibles.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Podeu actualitzar a Piwigo %s directament, sense necessitat d\'actualitzar a Piwigo %s (recomanat).';
+$lang['Save Template Directory'] = 'Desa el directori de plantilles';
+$lang['Dump Database'] = 'Abocar la base de dades';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclou la informació de l\'historial. (Advertència: es pot superar el limit de memòria del servidor)';
+$lang['Unable to dump database.'] = 'No és possible abocar la base de dades.';
+$lang['Some upgrades are available for extensions.'] = 'Hi ha actualitzacions disponibles per a algunes extensions';
+$lang['Ignore All'] = 'Ignora tot';
+$lang['Crop'] = 'Retalla';
+$lang['Width'] = 'Amplada';
+$lang['Height'] = 'Altura';
+$lang['Follow Orientation'] = 'Segueix la orientació';
+$lang['Graphics Library'] = 'Llibreria gràfica';
+$lang['Learn more'] = 'Més informació';
+$lang['Rate'] = 'Valoració';
+$lang['Average rate'] = 'Valoració mitjana';
+$lang['... or '] = '... o ';
+$lang['Create'] = 'Crea';
+$lang['Start Upload'] = 'Inicia la càrrega';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Esteu utilitzant el carregador Flash. Problemes? Proveu el <a href="%s"> carregador del navegador.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Esteu utilitzant el carregador del navegador. Podeu provar el <a href="%s">Carregador Flash</a> ';
+$lang['Maximum file size: %sB.'] = 'Mida màxima dels arxius: %sB.';
+$lang['Allowed file types: %s.'] = 'Tipus de fitxers permesos: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ressolució màxima aproximada: %dM píxels (és a dir %dx%d píxels).';
+$lang['Manage Permissions'] = 'Gestiona els permisos';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['show details'] = 'mostrar detalls';
+$lang['hide details'] = 'Oculta detalls';
+$lang['Merge tags'] = 'Fusiona les etiquetes';
+$lang['Select the destination tag'] = 'Seleccioneu l\'etiqueta de destí';
+$lang['(this tag will be deleted)'] = '(aquesta etiqueta serà eliminada)';
+$lang['Confirm merge'] = 'Confirmeu la fusió';
+$lang['Merge selected tags'] = 'Fusiona';
+$lang['No destination tag selected'] = 'No ha seleccionat cap etiqueta de destí';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Les etiquetes <em>%s</em> s\'han fusionat creant l\'etiqueta <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Seleccioneu al menys dues etiquetes per a la fusió';
+$lang['Select an album'] = 'Seleccioneu un àlbum';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Per defecte, Piwigo crearà una nova mida per a la web a partir de les vostres fotos en versió HD (high definition) ';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si no està disponible en alta definició i la mida actual es més gran que les dimensions del canvi de mida, es considerarà \'alta definició\' (HD) tot i què finalment caldrà reduir la mida de la imatge.';
+$lang['An error has occured during upgrade.'] = 'S\'ha produït un error durant el procés d\'actualització.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'S\'ha produït un error mentre l\'extracció. Reviseu els permisos dels fitxers de la instal·lació de piwigo. <br><a href="%s"> Cliqueu aquí per mostrar el registre de l\'error</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo no pot recuperar l\'arxiu d\'actualització del servidor';
+$lang['Updates'] = 'Actualitzacions';
+$lang['%s has been successfully updated.'] = '%s s\'ha actualitzat correctament.';
+$lang['A locked gallery is only visible to administrators'] = 'Una galeria bloquejada només és visible als administradors';
+$lang['Activate comments'] = 'Activa els comentaris';
+$lang['Add tags'] = 'Afegeix etiquetes';
+$lang['Add to caddie'] = 'Afegeix al carret';
+$lang['Applications'] = 'Aplicacions';
+$lang['Automatic sort order'] = 'Ordena de forma automàtica';
+$lang['Available on'] = 'Disponible en';
+$lang['Available versions for'] = 'Versions disponibles per';
+$lang['Cancel'] = 'Cancel·la';
+$lang['Center of interest'] = 'Punt d\'interès';
+$lang['Default comments order'] = 'Ordre dels comentaris per defecte';
+$lang['Delete multiple size images'] = 'Elimina les imatges de múltiples mides';
+$lang['Duplicates'] = 'Duplicades';
+$lang['Gallery unlocked'] = 'Galeria desbloquejada';
+$lang['Generate multiple size images'] = 'Genera múltiples mides d\'imatge';
+$lang['Groups and users'] = 'Grups i usuaris';
+$lang['Last import'] = 'Última importació';
+$lang['List'] = 'Llista';
+$lang['Move to album'] = 'Mou a l\'àlbum';
+$lang['Multiple Size'] = 'Mida múltiple';
+$lang['Notify administrators when a comment is'] = 'Notifica als administradors quan un comentari sigui';
+$lang['Original Size'] = 'Mida original';
+$lang['Permission granted for groups'] = 'Permisos atorgats a grups';
+$lang['Permission granted for users'] = 'Permís atorgat a usuaris';
+$lang['Photo name'] = 'Nom de la foto';
+$lang['Piwigo for Android'] = 'Piwigo per Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo per iOS (iPhone, iPad, iPod Touch)';
+$lang['Predefined filter'] = 'Filtre predeterminat';
+$lang['Resize after upload'] = 'Redimensionar després de penjar la foto al servidor';
+$lang['Save manual order'] = 'Desa l\'ordre manual';
+$lang['Save visits in history for'] = 'Desa les visites a l\'historial pels';
+$lang['Select a file'] = 'Seleccioneu un arxiu';
+$lang['Select groups...'] = 'Seleccioneu els grups...';
+$lang['Select users...'] = 'Seleccioneu els usuaris...';
+$lang['Send connection settings by email'] = 'Envia la configuració de la connexió per correu electrònic';
+$lang['Synchronize metadata'] = 'Sincronitza les metadades';
+$lang['The original image quality must be a number between %d and %d'] = 'La qualitat de la foto original ha de ser un número comprès entre %d i %d.';
+$lang['There is no group in this gallery.'] = 'No hi ha cap grup en aquesta galeria.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Aquest àlbum conté %d fotos, afegides entre %s i %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Aquest àlbum conté %d fotos, afegides el %s.';
+$lang['This album contains no photo.'] = 'Aquest àlbum no conté fotos.';
+$lang['Unlock gallery'] = 'Desbloqueja la galeria';
+$lang['With no album'] = 'Sense àlbums';
+$lang['With no tag'] = 'Sense etiquetes';
+$lang['With no virtual album'] = 'Sense àlbum virtual';
+$lang['You can activate only one mobile theme.'] = 'Nomes podeu activar un tema mòbil. ';
+$lang['Zoom'] = 'Zoom';
+$lang['add a new watermark'] = 'afegeix una nova marca d\'aigua';
+$lang['administrators'] = 'administradors';
+$lang['apply automatic sort order'] = 'Aplica l\'ordenació automàtica';
+$lang['cancel manual order'] = 'Cancel·la l\'ordre manual';
+$lang['custom'] = 'Fet a mida';
+$lang['modified'] = 'modificat';
+$lang['pending validation'] = 'pendent de validar';
+$lang['registered users'] = 'usuaris registrats';
+$lang['%d group'] = '%d grup';
+$lang['%d groups'] = '%d grups';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u usuaris han obtingut permisos automàticament perquè pertanyen a un grup que li han atorgat el permís.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo per Android</em> Aquesta aplicació us permet connectar a la vostra galeria Piwigo des d\'un dispositiu Android, crear nous àlbums i penjar vàries fotos a la vegada.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo per iOS</em> Aquesta aplicació us permet connectar a la vostra galeria Piwigo des d\'un iPhone, iPad o iPod Touch, crear àlbums i penjar vàries fotos a la vegada.';
+$lang['Add group'] = 'Afegeix grup';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom és un programari de fotografia dissenyat per a gestionar grans quantitats d\'imatges digitals i realitzar tasques de postproducció.';
+$lang['Albums authorized thanks to group associations'] = 'Àlbums autoritzats gràcies a les associacions de grups';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture és una poderosa eina per perfeccionar les imatges i gestionar grans biblioteques per a Mac';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture s\'ha dissenyat per als fotògrafs professionals amb la senzillesa de iPhoto.';
+$lang['Apply watermark if height is bigger than'] = 'Aplica la marca d\'aigua si l\'altura és major de';
+$lang['Apply watermark if width is bigger than'] = 'Aplica la marca d\'aigua si l\'ample és més gran de';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Per defecte, el punt d\'interès es col·loca al centre de la foto.';
+$lang['Comments for all'] = 'Comentaris per a tots';
+$lang['Delete Representant'] = 'Elimina la miniatura de l\'àlbum';
+$lang['Delete selected tags'] = 'Elimina';
+$lang['Delete selected users'] = 'Elimina els usuaris seleccionats';
+$lang['Deny selected groups'] = 'Denega els grups seleccionats';
+$lang['Download,'] = 'Descarregar,';
+$lang['Downloads'] = 'Descàrregues';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Les funcions inclouen la navegació per la galeria, la creació d\'àlbums i la càrrega de fotos.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Per a les fotos amb mides retallades, per exemple les quadrades, Piwigo farà tot el possible per a ressaltar-ne el seu punt d\'interès.';
+$lang['Grant selected groups'] = 'Atorgar els grups seleccionats';
+$lang['Manage permissions for group "%s"'] = 'Gestiona els permisos del grup "%s"';
+$lang['Metadata synchronized from file'] = 'S\'ha sincronitzat les metadades de l\'arxiu';
+$lang['No group is permitted to see this private album'] = 'Aquest àlbum és privat, per tant, cap grup el pot visualitzar.';
+$lang['Not cropped correctly?'] = 'No s\'ha retallat correctament?';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Per a Linux, només cal instal·lar Shotwell amb el seu gestor de paquets i permetre la publicació de Piwigo.';
+$lang['Opacity'] = 'Opacitat';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'L\'enllaç permanent %s s\'ha utilitzat anteriorment per l\'àlbum %s. Esborra\'l primer de l\'historial d\'enllaços permanents';
+$lang['Permission granted thanks to a group'] = 'Permís atorgat gràcies a un grup';
+$lang['Permission management'] = 'Gestió de permisos';
+$lang['Photo sizes with crop'] = 'Fotos amb mides retallades';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Connector de publicació Piwigo per a Lightroom';
+$lang['Piwigo export plugin for Aperture'] = 'Connector d\'exportació Piwigo per a Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Connector d\'exportació Piwigo per a iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'Connector de publicació Piwigo per a Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Connector de publicació Piwigo per digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (client RemoteGallery per Android) és un client de Piwigo per a la plataforma Android de codi lliure (GPL v3)';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleccioneu una zona amb el ratolí per definir un nou punt d\'interès.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell és un organitzador de codi obert digital que s\'executa a Linux. És el gestor de fotos per defecte en Ubuntu i Fedora.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'El connector Piwigo Export li permet crear àlbums i exportar fotos.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'El connector Piwigo Publish us permet exportar i sincronitzar fotos des de Lightroom directament a la vostra galeria de fotos Piwigo.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'El punt d\'interès és la zona més significativa d\'una foto.';
+$lang['The original maximum height must be a number between %d and %d'] = 'L\'alçada màxima original ha de ser un número entre %d i %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'L\'amplada màxima original ha de ser un número entre %d i %d';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Per a exportar les teves fotos des de digiKam a Piwigo, hauràs d\'instal·lar els connectors digiKam i Kipi.';
+$lang['Web Form'] = 'Formulari web';
+$lang['X Position'] = 'Posició X';
+$lang['X Repeat'] = 'Repeteix X';
+$lang['Y Position'] = 'Posició Y';
+$lang['any visitor can see this album'] = 'qualsevol visitant pot veure aquest àlbum';
+$lang['associate to group'] = 'Associa-ho al grup';
+$lang['bottom left corner'] = 'Costat inferior esquerre';
+$lang['bottom right corner'] = 'Costat inferior dret';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam és un avançat software de gestió de fotografies digitals lliure per a Linux, Windows i MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam està dissenyat per als fotògrafs que volen veure, administrar, editar, millorar, organitzar, etiquetar i compartir fotografies.';
+$lang['dissociate from group'] = 'Dissociar del grup';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto és el gestor de fotos per defecte en MacOSX. El connector d\'exportació Piwigo li permet crear nous àlbums i exportar les seves fotos directament des de iPhoto a la seva galeria Piwigo.';
+$lang['include photos with lower privacy level'] = 'incloure fotos amb el mínim nivell de privacitat';
+$lang['middle'] = 'al centre';
+$lang['simple visitors'] = 'visitants únics';
+$lang['top left corner'] = 'costat superior esquerre';
+$lang['top right corner'] = 'costat superior dret';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'els visitants han d\'autenticar-se i disposar dels permisos adequats per veure aquest àlbum';
+$lang['Last send'] = 'Últim enviament';
+$lang['group "%s" added'] = 'S\'ha afegit el grup "%s"';
+$lang['group "%s" deleted'] = 'S\'ha eliminat el grup "%s"';
+$lang['%d day'] = '%d dia';
+$lang['%d days'] = '$d dies';
+$lang['%d hour'] = '%d hora';
+$lang['%d hours'] = '%d hores';
+$lang['%d minute'] = '%d minut';
+$lang['%d minutes'] = '%d minuts';
+$lang['%d month'] = '%d mes';
+$lang['%d months'] = '%d mesos';
+$lang['%d second'] = '%d segon';
+$lang['%d seconds'] = '%d segons';
+$lang['%d year'] = '%d any';
+$lang['%d years'] = '%d anys';
+$lang['%s ago'] = 'fa %s';
+$lang['%s in the future'] = '%s en el futur';
+$lang['Added by %s'] = 'Afegida per %s';
+$lang['Numeric identifier : %d'] = 'Identificador numèric: %d';
+$lang['Original file : %s'] = 'Arxiu original: %s';
+$lang['Posted %s on %s'] = 'Publicada %s, el %s';
+$lang['Rated %d times, score : %.2f'] = 'Valorada %d vegades. Resultat: %.2f';
+$lang['Sharpen'] = 'Sharpen (aguditzar)';
+$lang['Visited %d times'] = 'Visitada %d vegades';
+$lang['Watermark'] = 'Marca d\'aigua';
+$lang['%d week'] = '%d setmana';
+$lang['%d weeks'] = '%d setmanes';
+$lang['Edit photo'] = 'Edita la foto';
+$lang['create a new site'] = 'Crea un lloc nou';
+$lang['No order field selected'] = 'No s\'ha seleccionat cap camp per a ordenar';
+$lang['Duplicate selected tags'] = 'Duplica les etiquetes seleccionades';
+$lang['Name of the duplicate'] = 'Nom del duplicat';
+$lang['Source tag'] = 'Etiqueta font';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'L\'etiqueta "%s" és ara un duplicat de "%s"';
+$lang['Landscape'] = 'Paisatge';
+$lang['Manage photos'] = 'Administra les fotos';
+$lang['Minimum height'] = 'Alçada mínima';
+$lang['Minimum width'] = 'Amplada mínima';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Retrat';
+$lang['View in gallery'] = 'Veure en la galeria';
+$lang['Number of albums per page'] = 'Nombre d\'àlbums per pàgina';
+$lang['Ratio'] = 'Ràtio';
+$lang['between %.2f and %.2f'] = 'entre %.2f i %.2f';
+$lang['between %d and %d pixels'] = 'entre %d i %d píxels';
+$lang['Duplicate'] = 'Duplica';
+$lang['Merge selected groups'] = 'Fusiona els grups seleccionats';
+$lang['No group selected, no action possible.'] = 'No hi ha cap grup seleccionat, l\'acció no s\'ha pogut dur a terme.';
+$lang['No members to manage'] = 'No existeixen membres per a gestionar';
+$lang['Please select at least two groups'] = 'Heu de selecciona almenys dos grups';
+$lang['Rename'] = 'Canvia de nom';
+$lang['This group will be set to default'] = 'Estableix aquest grup com a predeterminat';
+$lang['This group will be unset to default'] = 'Aquest grup deixarà de ser el predeterminat';
+$lang['Type here the name of the new group'] = 'Escriviu aquí el nom del nou grup';
+$lang['Manage the members'] = 'Gestiona els membres';
+$lang['Purge user cache'] = 'Elimina la memòria cau de l\'usuari';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Es reduiran les mides de les fotos a %dx%d píxels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionar després de penjar la foto al servidor deshabilitat degut a l\'ús de la llibreria gràfica GD';
+$lang['Select at least one tag'] = 'Seleccioneu almenys una etiqueta';
+$lang['Last visit on %s, %s.'] = 'L\'última visita el %s, %s.';
+$lang['No user selected, no action possible.'] = 'No hi ha usuaris seleccionats, l\'acció no ha estat possible';
+$lang['Registered on %s, %s.'] = 'Registrat el %s, %s';
+$lang['Show %s users'] = 'Mostra %s usuaris';
+$lang['Users modified'] = 'Usuaris que s\'han modificat';
+$lang['Basic settings'] = 'Configuració bàsica';
+$lang['Change password'] = 'Canvia la contrasenya';
+$lang['Change username'] = 'Canvia el nom d\'usuari';
+$lang['General'] = 'General';
+$lang['Loading...'] = 'S\'està carregant...';
+$lang['Mail theme'] = 'Tema del correu electrònic';
+$lang['Password updated'] = 'La contrasenya s\'ha actualitzat';
+$lang['Update user'] = 'Actualitza l\'usuari';
+$lang['User %s added'] = 'S\'ha afegit l\'usuari %s';
+$lang['User %s updated'] = 'S\'ha actualitzat l\'usuari %s';
+?>
Index: /tags/2.6.0RC1/language/ca_ES/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Català [CA]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=413
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Català';
+$lang_info['country'] = 'Catalunya/Spain';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ca';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d àlbum actualitzat';
+$lang['%d albums updated'] = '%d àlbums actualitzats';
+$lang['%d comment to validate'] = '%d comentari per validar';
+$lang['%d comments to validate'] = '%d comentaris per validar';
+$lang['%d new comment'] = '%d nou comentari';
+$lang['%d new comments'] = '%d nous comentaris';
+$lang['%d comment'] = '%d comentari';
+$lang['%d comments'] = '%d comentaris';
+$lang['%d hit'] = '%d visualització';
+$lang['%d hits'] = '%d visualitzacions';
+$lang['%d new photo'] = '%d nova foto';
+$lang['%d new photos'] = '%d noves fotos';
+$lang['%d new user'] = '%d nou usuari';
+$lang['%d new users'] = '%d nous usuaris';
+$lang['About'] = 'Quant a';
+$lang['All tags'] = 'Totes les etiquetes';
+$lang['Any tag'] = 'Qualsevol etiqueta';
+$lang['At least one listed rule must be satisfied.'] = 'Almenys cal satisfer un criteri de la llista.';
+$lang['Albums'] = 'Àlbums';
+$lang['Album'] = 'Àlbum';
+$lang['Close this window'] = 'Tanca aquesta finestra';
+$lang['Complete RSS feed (photos, comments)'] = 'Canal RSS complet (fotos, comentaris...)';
+$lang['Confirm Password'] = 'Confirmeu la nova contrasenya';
+$lang['Connection settings'] = 'Paràmetres de connexió';
+$lang['Login'] = 'Identificar-se';
+$lang['Contact webmaster'] = 'Contacteu amb l\'administrador del web';
+$lang['Create a new account'] = 'Crea un nou compte d\'usuari';
+$lang['Created on'] = 'Creada el';
+$lang['Creation date'] = 'Data de creació';
+$lang['Current password is wrong'] = 'La contrasenya actual és errònia';
+$lang['Dimensions'] = 'Dimensions';
+$lang['Display'] = 'Visualitza';
+$lang['Each listed rule must be satisfied.'] = 'S\'ha de satisfer cada regla llistada.';
+$lang['Email address'] = 'Correu electrònic';
+$lang['Enter your personnal informations'] = 'Introduïu la vostra informació personal';
+$lang['Error sending email'] = 'Error enviant el correu electrònic';
+$lang['File name'] = 'Nom d\'arxiu';
+$lang['File'] = 'Arxiu';
+$lang['Filesize'] = 'Mida';
+$lang['Filter and display'] = 'Aplica el filtre i visualitza';
+$lang['Filter'] = 'Filtra';
+$lang['Forgot your password?'] = 'Heu oblidat la contrasenya?';
+$lang['Go through the gallery as a visitor'] = 'Navegueu per la galeria com a visitant';
+$lang['Help'] = 'Ajuda';
+$lang['Identification'] = 'Autenticació';
+$lang['Photos only RSS feed'] = 'Canal RSS només de fotos';
+$lang['Keyword'] = 'Paraula clau';
+$lang['Links'] = 'Enllaços';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Nou a %s';
+$lang['Notification'] = 'Notificacions RSS';
+$lang['Number of items'] = 'Nombre d\'elements';
+$lang['Original dimensions'] = 'Dimensions originals';
+$lang['Password forgotten'] = 'He oblidat la contrasenya';
+$lang['Password'] = 'Contrasenya';
+$lang['Post date'] = 'Data de publicació';
+$lang['Posted on'] = 'Publicada el';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'Connexió ràpida';
+$lang['RSS feed'] = 'Canal RSS';
+$lang['Register'] = 'Inscriure\'s';
+$lang['Registration'] = 'Registre';
+$lang['Related tags'] = 'Etiquetes relacionades';
+$lang['Reset'] = 'Restableix';
+$lang['Retrieve password'] = 'Recupera la contrasenya';
+$lang['Search rules'] = 'Criteris de cerca';
+$lang['Search tags'] = 'Cerca etiquetes';
+$lang['Search'] = 'Cerca';
+$lang['display available tags'] = 'visualitza les etiquetes disponibles';
+$lang['Since'] = 'Des de';
+$lang['Sort by'] = 'Ordena per';
+$lang['Sort order'] = 'Ordena';
+$lang['Tag'] = 'Etiqueta';
+$lang['Tags'] = 'Etiquetes';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'La font de redifusió amb format RSS proporciona notificacions automàtiques de les novetats d\'aquest lloc web: noves fotos, actualitzacions en els àlbums, nous comentaris... Cal utilitzar un lector de canal RSS.';
+$lang['Unknown feed identifier'] = 'Identificador de canal desconegut';
+$lang['User comments'] = 'Comentaris dels usuaris';
+$lang['Username'] = 'Usuari';
+$lang['Visits'] = 'Visites';
+$lang['Webmaster'] = 'webmaster';
+$lang['Week %d'] = 'Setmana %d';
+$lang['About Piwigo'] = 'Quant al Piwigo';
+$lang['You are not authorized to access the requested page'] = 'No esteu autoritzats a accedir en aquesta pàgina';
+$lang['add this photo to your favorites'] = 'afegir a preferits';
+$lang['Administration'] = 'Administració';
+$lang['all'] = 'Tot ';
+$lang['ascending'] = 'ascendent';
+$lang['author(s) : %s'] = 'autor(s) : %s';
+$lang['Expand all albums'] = 'Expandeix tots els àlbums';
+$lang['posted after %s (%s)'] = 'publicades després %s (%s)';
+$lang['posted before %s (%s)'] = 'publicades abans %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'publicades entre %s (%s) i %s (%s)';
+$lang['posted on %s'] = 'publicades el %s';
+$lang['Best rated'] = 'Millor valorades';
+$lang['display best rated photos'] = 'Visualitzar elements millor valorats';
+$lang['Calendar'] = 'Calendari';
+$lang['All'] = 'Tot ';
+$lang['display each day with photos, month per month'] = 'visualitza cada dia amb les fotos, mes a mes';
+$lang['View'] = 'Visualitza';
+$lang['chronology_monthly_calendar'] = 'Calendari mensual';
+$lang['chronology_monthly_list'] = 'Llista mensual';
+$lang['chronology_weekly_list'] = 'Llista setmanal';
+$lang['Click here if your browser does not automatically forward you'] = 'Feu clic aquí si el navegador no us redirecciona automàticament';
+$lang['comment date'] = 'Data del comentari';
+$lang['Comment'] = 'Comentari';
+$lang['Your comment has been registered'] = 'El comentari s\'ha registrat correctament';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'S\'ha activat el sistema de prevenció anti col·lapse. Si us plau, esperi un moment abans d\'afegir un altre comentari. En aquest moment el servidor està processant nombroses peticions d\'altres usuaris.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Atenció, el comentari NO serà publicat perquè no ha ha estat validat correctament.';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrador ha d\'autoritzar el teu comentari per a què sigui visible.';
+$lang['This login is already used by another user'] = 'Aquest nom d\'usuari ja està en ús per un altre usuari';
+$lang['Comments'] = 'Comentaris';
+$lang['Add a comment'] = 'Afegir un comentari';
+$lang['created after %s (%s)'] = 'creat després %s (%s)';
+$lang['created before %s (%s)'] = 'creat abans %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creat entre %s (%s) i %s (%s)';
+$lang['created on %s'] = 'creada el %s';
+$lang['Customize'] = 'Perfil';
+$lang['Your Gallery Customization'] = 'Personalització de la galeria';
+$lang['day'][0] = 'Diumenge';
+$lang['day'][1] = 'Dilluns';
+$lang['day'][2] = 'Dimarts';
+$lang['day'][3] = 'Dimecres';
+$lang['day'][4] = 'Dijous';
+$lang['day'][5] = 'Divendres';
+$lang['day'][6] = 'Dissabte';
+$lang['Default'] = 'Per defecte';
+$lang['delete this photo from your favorites'] = 'elimina aquesta foto dels vostres preferits';
+$lang['descending'] = 'descendent';
+$lang['edit'] = 'Edita';
+$lang['wrong date'] = 'data errònia';
+$lang['excluded'] = 'exclosa';
+$lang['Your favorites'] = 'Els vostres preferits';
+$lang['display your favorites photos'] = 'visualitza les fotos dels vostres preferits';
+$lang['Favorites'] = 'Preferits';
+$lang['First'] = 'Primera';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galeria roman temporalment tancada per tasques de manteniment. Disculpi les molèsties. La galeria tornarà a estar operativa en uns minuts.';
+$lang['Page generated in'] = 'Pàgina generada en';
+$lang['guest'] = 'visitant';
+$lang['Hello'] = 'Hola';
+$lang['available for administrators only'] = 'disponible només per a administradors';
+$lang['display this album'] = 'Visualitza el contingut d\'aquest àlbum';
+$lang['display last user comments'] = 'visualitza els últims comentaris dels usuaris';
+$lang['customize the appareance of the gallery'] = 'personalitzar l\'aparença de la galeria';
+$lang['search'] = 'cerca';
+$lang['in this album'] = 'en aquest àlbum';
+$lang['in %d sub-album'] = 'en %d sub-àlbum';
+$lang['in %d sub-albums'] = 'en %d sub-àlbums';
+$lang['included'] = 'inclòs';
+$lang['Invalid password!'] = 'Contrasenya no vàlida!';
+$lang['Language']='Idioma';
+$lang['last %d days'] = 'últims %d dies';
+$lang['Last'] = 'Última';
+$lang['Logout'] = 'Sortir';
+$lang['obligatory'] = 'obligatori';
+$lang['display a calendar by creation date'] = 'visualitza un calendari segons la data de creació';
+$lang['display all photos in all sub-albums'] = 'visualitza les fotos de tots els sub-àlbums';
+$lang['return to normal view mode'] = 'torna a la vista normal';
+$lang['display a calendar by posted date'] = 'visualitza un calendari segons la data de publicació';
+$lang['month'][10] = 'Octubre';
+$lang['month'][11] = 'Novembre';
+$lang['month'][12] = 'Desembre';
+$lang['month'][1] = 'Gener';
+$lang['month'][2] = 'Febrer';
+$lang['month'][3] = 'Març';
+$lang['month'][4] = 'Abril';
+$lang['month'][5] = 'Maig';
+$lang['month'][6] = 'Juny';
+$lang['month'][7] = 'Juliol';
+$lang['month'][8] = 'Agost';
+$lang['month'][9] = 'Setembre';
+$lang['Most visited'] = 'Més visitades';
+$lang['display most visited photos'] = 'visualitza les fotos més visitades';
+$lang['The number of photos per page must be a not null scalar'] = 'El nombre de fotos per pàgina ha de ser una xifra entera diferent de zero';
+$lang['Number of photos per page'] = 'Número de fotos per pàgina';
+$lang['Unknown identifier'] = 'Identificador desconegut';
+$lang['New password'] = 'Nova contrasenya';
+$lang['Rate this photo'] = 'Valoreu aquesta foto';
+$lang['Next'] = 'Següent';
+$lang['Home'] = 'Inici';
+$lang['no rate'] = 'sense valorar';
+$lang['photos posted during the last %d days'] = 'fotos publicades durant els últims %d dies';
+$lang['Photos posted within the last %d day.'] = 'Fotos publicades únicament l\'últim %d dia.';
+$lang['Photos posted within the last %d days.'] = 'Fotos publicades únicament els últims %d dies.';
+$lang['password updated'] = 'Clau d\'accés actualitzada';
+$lang['Recent period must be a positive integer value'] = 'El període ha de ser un valor enter positiu';
+$lang['photo'] = 'foto';
+$lang['Click on the photo to see it in high definition'] = 'Feu clic sobre la foto per a veure-la amb més qualitat';
+$lang['Show file metadata'] = 'Mostra/Oculta informació addicional de la càmera fotogràrica (metadades Exif)';
+$lang['Powered by'] = 'Desenvolupat per';
+$lang['Preferences'] = 'Preferències';
+$lang['Previous'] = 'Anterior';
+$lang['Random photos'] = 'Fotos aleatòries';
+$lang['display a set of random photos'] = 'visualitza un conjunt de fotos aleatòries';
+$lang['Recent albums'] = 'Àlbums recents';
+$lang['display recently updated albums'] = 'Visualitza els àlbums actualitzats recentment';
+$lang['Recent period'] = 'Període recent (dies)';
+$lang['Recent photos'] = 'Fotos recents';
+$lang['display most recent photos'] = 'visualitza les fotos més recents';
+$lang['Redirection...'] = 'Redirecció...';
+$lang['Please, enter a login'] = 'Si us plau, introdueixi les seves credencials d\'autenticació';
+$lang['login mustn\'t end with a space character'] = 'el nom d\'usuari no pot acabar amb el caràcter \'espai\'';
+$lang['login mustn\'t start with a space character'] = 'el nom d\'usuari no pot començar amb el caràcter \'espai\'';
+$lang['this login is already used'] = 'aquest nom d\'usuari ja s\'està utilitzant';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'L\'adreça de correu ha de ser com xxx@yyy.eee (exemple: jack@altern.org)';
+$lang['Auto login'] = 'Recordar';
+$lang['remove this tag from the list'] = 'elimineu aquesta etiqueta de la llista';
+$lang['representative'] = 'miniatura de l\'àlbum';
+$lang['Search for Author'] = 'Cerca per autor';
+$lang['Search in albums'] = 'Cerca en els àlbums';
+$lang['Date'] = 'Data inicial';
+$lang['End-Date'] = 'Data final';
+$lang['Kind of date'] = 'Quina?';
+$lang['Search for words'] = 'Cerca per paraules';
+$lang['Search for all terms'] = 'Cerca per tots els termes';
+$lang['Empty query. No criteria has been entered.'] = 'No ha introduït cap criteri de cerca.';
+$lang['Search results'] = 'Resultats de la cerca';
+$lang['Search in sub-albums'] = 'Cerca en els sub-àlbums';
+$lang['searched words : %s'] = 'paraules trobades : %s';
+$lang['Contact'] = 'Contacta amb el';
+$lang['set as album representative'] = 'estableix com a icona de l\'àlbum';
+$lang['Show number of comments'] = 'Mostra el nombre de comentaris';
+$lang['Show number of hits'] = 'Mostra el nombre de visualitzacions';
+$lang['slideshow'] = 'Presentació de diapositives';
+$lang['stop the slideshow'] = 'aturar la presentació';
+$lang['Specials'] = 'Especials';
+$lang['SQL queries in'] = 'consultes SQL en';
+$lang['display only recently posted photos'] = 'visualitza només les fotos publicades recentment';
+$lang['return to the display of all photos'] = 'torna a la visualització de totes les fotos';
+$lang['the beginning'] = 'principi';
+$lang['Thumbnails'] = 'Miniatures';
+$lang['Menu'] = 'Menú';
+$lang['A comment on your site'] = 'Un comentari sobre el vostre lloc web';
+$lang['today'] = 'avui';
+$lang['Update your rating'] = 'Actualitzeu la vostra valoració';
+$lang['Author'] = 'Autor';
+$lang['the username must be given'] = 'cal indicar el nom d\'usuari';
+$lang['useful when password forgotten'] = 'útil en cas de pèrdua de la contrasenya';
+$lang['Quick search'] = 'Cerca ràpida';
+$lang['Connected user: %s'] = 'Usuari connectat: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Comentari: %s';
+$lang['Comment by %s'] = 'Comentat per %s';
+$lang['User: %s'] = 'Usuari: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registrat de %s';
+$lang['Album: %s'] = 'Àlbum: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Estat erroni de l\'usuari "convidat". S\'està utilitzant l\'estat predeterminat. Si us plau, informeu-ho a l\'administrador del web.';
+$lang['this email address is already in use'] = 'un usuari ja utilitza aquesta adreça de correu';
+$lang['Album results for'] = 'Resultats dels àlbums per';
+$lang['Tag results for'] = 'Resultats de l\'etiqueta per';
+$lang['from %s to %s'] = 'de %s a %s';
+$lang['Play of slideshow'] = 'Reprodueix';
+$lang['Pause of slideshow'] = 'Pausa';
+$lang['Repeat the slideshow'] = 'Activa la repetició';
+$lang['Not repeat the slideshow'] = 'Desactiva repetició';
+$lang['Reduce diaporama speed'] = 'Disminueix la velocitat';
+$lang['Accelerate diaporama speed'] = 'Incrementa la velocitat';
+$lang['Submit'] = 'Tramet';
+$lang['Yes'] = 'Sí';
+$lang['No'] = 'No';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d fotos';
+$lang['%d photo is also linked to current tags'] = '%d foto també ha estat enllaçada amb aquesta etiqueta';
+$lang['%d photos are also linked to current tags'] = '%d fotos també han estat enllaçades amb aquestes etiquetes';
+$lang['display photos linked to this tag'] = 'visualitza només les fotos enllaçades amb aquesta etiqueta';
+$lang['Piwigo Help'] = 'Ajuda';
+$lang['Rank'] = 'Millor valorades';
+$lang['group by letters'] = 'Agrupa per lletres';
+$lang['letters'] = 'lletres';
+$lang['show tag cloud'] = 'mostra núvol d\'etiquetes';
+$lang['cloud'] = 'núvol';
+$lang['Reset to default values'] = 'Restaura els valors predeterminats';
+$lang['delete all photos from your favorites'] = 'elimina totes les fotos dels vostres preferits';
+$lang['Sent by'] = 'Enviat per';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Les galetes (cookies) estan bloquejades o el navegador no en permet l\'ús. Heu d\'habilitar-les per poder-vos connectar.';
+$lang['Edit a comment'] = "Edita un comentari";
+$lang['Are you sure?'] = 'Confirmeu que desitgeu realitzar aquesta acció';
+$lang['Email address is missing. Please specify an email address.'] = 'Falta l\'adreça de correu electrònic. Si us plau, introduiu-la.';
+$lang['Delete'] = 'Elimina';
+$lang['(!) This comment requires validation'] = '(!) Aquest comentari necessita ser validat';
+$lang['Welcome'] = 'Benvingut';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Benvingut a la galeria fotogràfica Piwigo!';
+$lang['... or browse your empty gallery'] = '...o navegui per la galeria (actualment buida)';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... o si us plau, desactiva aquest missatge per trobar la manera de fer-ho pel teu compte.';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hola %s, la galeria no conté elements per mostrar.';
+$lang['I want to add photos'] = 'Vull afegir fotos';
+$lang['Manage this user comment: %s'] = 'Gestionar el comentari: %s';
+$lang['This author modified following comment:'] = 'Aquest autor ha modificat el següent comentari:';
+$lang['This author removed the comment with id %d'] = 'Aquest autor ha eliminat el comentari amb l\'identificador numèric %d';
+$lang['html tags are not allowed in login'] = 'No es permeten etiquetes html en les dades d\'inici de sessió';
+$lang['%d rates'] = '%d valoracions';
+$lang['Rating score'] = 'Puntuació';
+$lang['Invalid username or email'] = 'Nom d\'usuari o correu electrònic no vàlid';
+$lang['Password reset is not allowed for this user'] = 'No està permès restablir la contrasenya per aquest usuari';
+$lang['User "%s" has no email address, password reset is not possible'] = 'L\'usuari "%s" no ha registrat cap adreça de correu electrònic. No es pot restablir seva la contrasenya.';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Algú ha demanat que contrasenya d\'accés sigui restablerta pels següents comptes d\'usuari';
+$lang['Username "%s" on gallery %s'] = 'El nom d\'usuari "%s" sobre la galeria %s';
+$lang['To reset your password, visit the following address:'] = 'Per restablir la seva contrasenya visiti l\'adreça següent:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Si es tracta d\'un error, ignoreu aquest correu electrònic com si res hagués passat.';
+$lang['Password Reset'] = 'Estableixi una nova contrasenya';
+$lang['Check your email for the confirmation link'] = 'Comprovi que ha rebut l\'enllaç de confirmació al seu correu electrònic';
+$lang['Invalid key'] = 'Clau invàlida';
+$lang['The passwords do not match'] = 'Les contrasenyes no coincideixen';
+$lang['Your password has been reset'] = 'S\'ha restablert la seva contrasenya.';
+$lang['Return to home page'] = 'Torna a la pàgina d\'inici';
+$lang['Please enter your username or email address.'] = 'Introdueixi el nom d\'usuari o el correu electrònic que va emprar per donar-se d\'alta.';
+$lang['You will receive a link to create a new password via email.'] = 'Rebrà un enllaç al seu correu electrònic que li permetrà crear una nova contrasenya.';
+$lang['Username or email'] = 'Nom d\'usuari o correu electrònic';
+$lang['Change my password'] = 'Restableix la meva contrasenya';
+$lang['Enter your new password below.'] = 'Introduïu la nova contrasenya.';
+$lang['EXIF Metadata'] = 'Metadades EXIF';
+$lang['IPTC Metadata'] = 'Metadades IPTC';
+$lang['2small'] = 'XXS - diminut';
+$lang['Desktop'] = 'Escriptori';
+$lang['Edit'] = 'Edita';
+$lang['File name, A &rarr; Z'] = 'Nom d\'arxiu, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nom d\'arxiu, Z &rarr; A';
+$lang['Hello %s,'] = 'Hola %s,';
+$lang['Here are your connection settings'] = 'Aquests son els seus paràmetres de connexió';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Si us plau, contacti amb nosaltres a %s si creu que ha rebut per error aquest correu electrònic.';
+$lang['Manual sort order'] = 'Ordre manual';
+$lang['Mobile'] = 'Mòbil';
+$lang['Original'] = 'Original';
+$lang['Password: %s'] = 'Contrasenya: %s';
+$lang['Photo sizes'] = 'Canviar mides';
+$lang['Photo title, A &rarr; Z'] = 'Nom de l\'arxiu, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Nom de l\'arxiu, Z &rarr; A';
+$lang['Send my connection settings by email'] = 'Envia credencials al meu correu electrònic';
+$lang['Show latest comments first'] = 'Mostra els comentaris nous primer';
+$lang['Show oldest comments first'] = 'Mostra primer els comentaris més antics ';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'S\'ha inscrit correctament. En breu rebrà un correu electrònic amb les seves credencials de connexió.<br>Benvingut!';
+$lang['Thank you for registering at %s!'] = 'Gràcies per registrar-te a %s!';
+$lang['Username modification'] = 'Modifica el nom d\'usuari';
+$lang['Username: %s'] = 'Usuari: %s';
+$lang['View in'] = 'Veure en';
+$lang['Your username has been successfully changed to : %s'] = 'El nom d\'usuari s\'ha modificat correctament per: %s';
+$lang['large'] = 'L - gran';
+$lang['medium'] = 'M - mitjà';
+$lang['small'] = 'S - petit';
+$lang['square'] = 'Quadrat';
+$lang['thumb'] = 'Miniatura';
+$lang['xlarge'] = 'XL - extra gran';
+$lang['xsmall'] = 'XS - extra petit';
+$lang['xxlarge'] = 'XXL - enorme';
+$lang['Date created, new &rarr; old'] = 'Data de creació, nou &rarr; antic';
+$lang['Date created, old &rarr; new'] = 'Data de creació, antic &rarr; nou';
+$lang['Date posted, new &rarr; old'] = 'Data de publicació, nou &rarr; antic';
+$lang['Date posted, old &rarr; new'] = 'Data de publicació, antic &rarr; nou';
+$lang['Download this file'] = 'Descarrega aquest fitxer';
+$lang['Download'] = 'Descarrega';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificador numèric, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificador numèric, 9 &rarr; 1';
+$lang['Rating score, high &rarr; low'] = 'Puntuació, alta &rarr; baixa';
+$lang['Rating score, low &rarr; high'] = 'Puntuació, baixa &rarr; alta';
+$lang['Search by date'] = 'Cerca per data';
+$lang['Search for any term'] = 'Cerca per qualsevol terme';
+$lang['Visits, high &rarr; low'] = 'Visites, alt &rarr; baix';
+$lang['Visits, low &rarr; high'] = 'Visites, baix &rarr; alt';
+$lang['%d rate'] = '%d valoració';
+$lang['Bad request'] = 'Sol·licitud incorrecta';
+$lang['Forbidden'] = 'Prohibit';
+$lang['Page not found'] = 'Pàgina no trobada';
+$lang['Permalink for album not found'] = 'No es troba l\'enllaç permanent per a l\'àlbum';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ha detectat un error no recuperable';
+$lang['Requested album does not exist'] = 'No existeix l\'àlbum sol·licitat';
+$lang['Requested tag does not exist'] = 'No existeix l\'etiqueta sol·licitada';
+$lang['Email address is mandatory'] = 'L\'adreça de correu és obligatòria';
+$lang['Username is mandatory'] = 'El nom d\'usuari és obligatori';
+$lang['mandatory'] = 'obligatori';
+$lang['Website'] = 'lloc web';
+$lang['Your website URL is invalid'] = 'La URL del vostre lloc web és invàlida';
+$lang['Email'] = 'Correu elecrònic';
+$lang['First Page'] = 'Primera pàgina';
+$lang['Go back to the album'] = 'Tornar a l\'àlbum';
+$lang['Last Page'] = 'Última pàgina';
+$lang['Password is missing. Please enter the password.'] = 'Falta la clau d\'accès. Si us plau, introdueix-la.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta confirmar la contrasenya. Si us plau, confirmeu la contrasenya escollida.';
+$lang['%d photos per page'] = '%d fotos per pàgina';
+?>
Index: /tags/2.6.0RC1/language/ca_ES/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,123 @@
+<h2>Edita l'&agrave;lbum</h2>
+
+<h3>Informaci&oacute;</h3>
+
+<ul>
+
+  <li><strong>Nom</strong>: Canvia el nom de l'&agrave;lbum (virtualment per un &agrave;lbum f&iacute;sic).</li>
+
+  <li><strong>Descripci&oacute;</strong>: Un text curt donant una idea del contingut de l'&agrave;lbum.
+  Aquesta indicaci&oacute; es mostrar&agrave; al final de la p&agrave;gina de les miniatures.</li>
+
+</ul>
+
+<h3>Despla&ccedil;ar</h3>
+
+<p>Els &agrave;lbums virtuals poden ser despla&ccedil;ats. Despla&ccedil;ar un &agrave;lbum significa canviar el seu &agrave;lbum pare.</p>
+
+<h3>Opcions</h3>
+
+<ul>
+
+  <li><strong>Tipus d'acc&egrave;s</strong>: Administraci&oacute; de permisos. Si afegiu un &agrave;lbum privat, tots els seus 
+  &agrave;lbums fills esdevenir&agrave;n privats. Si afegiu un &agrave;lbum p&uacute;blic, tots els seus &agrave;lbums pare esdevenir&agrave;n p&uacute;blics.</li>
+
+  <li><strong>Bloquejar</strong>: L'&agrave;lbum i tots els seus sub-&agrave;lbums esdevenir&agrave;n temporalment inaccessibles per manteniment.</li>
+
+  <li><strong>Comentaris</strong>: Autoritza als usuaris a afegir comentaris dels elements de l'&agrave;lbum.</li>
+
+</ul>
+
+<p>Tamb&eacute; pot administrar aquestes opcions de gesti&oacute; de "Propietats" <span
+class="pwgScreen">Comentaris</span>, <span class="pwgScreen">Bloquejats</span>,
+<span class="pwgScreen">P&uacute;blic/Privats</span>, <span
+class="pwgScreen">Representatiu</span> Disponibles a <span
+class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats</span>).</p>
+
+<h3>Ordenar</h3>
+
+<p>Utilitza l'ordre dels elements per defecte.</p>
+
+<p>Indica si l'ordre s'aplica tamb&eacute; als sub-&agrave;lbums.</p>
+
+<p>Selecciona els criteris a utilitzar per aquest &agrave;lbum.</p>
+<ul>
+<li><strong>Data de creaci&oacute;</strong>: Data de presa de la imatge</li>
+<li><strong>Data de publicaci&oacute;</strong>: Data de sincronitzaci&oacute;</li>
+<li><strong>Nota mitja (*)</strong>: S'actualitza segons la qualificaci&oacute; dels visitants</li>
+<li><strong>Les m&eacute;s visitades (*)</strong>: La visita actual podria canviar l'ordre m&eacute;s visitat</li>
+<li><strong>Nom de l'arxiu</strong>: Nom que es d&oacute;na en el camp de la informaci&oacute;</li>
+<li><strong>Id</strong>: Id inern (les categories m&eacute;s recents tenen un identificador m&eacute;s alt que els anteriors.</li>
+
+</ul>
+<p><strong>(*)</strong>Atenci&oacute;: Assegureu-vos de provar els criteris d'ordenaci&oacute; perqu&egrave; de vegades poden generar resultats inesperats.</p>
+
+
+<h3>Representatiu</h3>
+
+<p>L'&agrave;lbum representatiu &eacute;s la imatge que apareix a la a la p&agrave;gina principal <span class="pwgScreen">category.php</span>) per representar
+aquell &agrave;lbum que cont&eacute; sub-&agrave;lbums per&ograve; no imatges: (per exemple l'&agrave;lbum arrel del directori).
+</p>
+
+<p>Existeixen 4 maneres diferents d'escollir la representaci&oacute; de l'&agrave;lbum:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Imatges de p&agrave;gina</span>: un dels botons d'acci&oacute; permet escollir la present imatge per a representar el seu propi &agrave;lbum.</li>
+
+  <li><span class="pwgScreen">Modifica la informaci&oacute; d'una imatge.</span> a Administraci&oacute;. Hi pots accedir des de <span
+  class="pwgScreen">picture.php</span> o <span class="pwgScreen">Gesti&oacute; de lots</span> a <em>mode unitari</em>. Consulta l'ajuda per a m&eacute;s detalls.</li>
+
+  <li><span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats,
+  Representatiu</span>. Consulta l'ajuda per a m&eacute;s detalls.</li>
+
+  <li><span class="pwgScreen">Editar &agrave;lbum</span> (aquesta pantalla).</li>
+
+</ul>
+
+<p>L'elecci&oacute; de la representaci&oacute; dep&eacute;n del par&agrave;metre de configuraci&oacute; 
+<code>allow_random_representative</code> (veure <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Mode Per defecte (<code>allow_random_representative</code> establert a fals),
+cada &agrave;lbum que cont&eacute; almenys un element que est&agrave; representat per un element fix. 
+Un cop establert (a la creaci&oacute; de l'&agrave;lbum), la representaci&oacute; nom&eacute;s canvia
+ quan un administrador jo sol&middot;licita. Si la representaci&oacute; no &eacute;s apropiada,
+ pots <strong>establir-se una nova representaci&oacute; de l'&agrave;lbum a l'atzar.</strong></p>
+
+<p>Si el <code>allow_random_representative</code>par&agrave;metre de configuraci&oacute; &eacute;s cert,
+ una categoria que contingui elements pot no tindre una represetnaci&oacute; fixe. Simplement utilitza el bot&oacute; 
+ <strong>Eliminar representant</strong>.</p>
+
+<p>Si l'&agrave;lbum cont&eacute; sub-&agrave;lbums per&ograve; no elements (imatges), pot ser representat per qualsevol element gr&agrave;cies a la pantalla <span class="pwgScreen">Modicar
+informaci&oacute; quant a la imatge</span>. L'&uacute;nica opci&oacute; en la pantalla actual
+&eacute;s el bot&oacute;<strong>Eliminar representaci&oacute;</strong>.</p>
+
+<h3>Enlla&ccedil;a tots els elements de l'&agrave;lbum a un nou &agrave;lbum</h3>
+
+<ul>
+
+<li><strong>Nom de l'&agrave;lbum virtual</strong>: Nom del nou &agrave;lbum que es crear&agrave;. 
+Tots els elements de la categoria actual es vincularan amb la nova.</li>
+
+<li><strong>&Agrave;lbum pare</strong>: Crea sub-&agrave;lbums jer&agrave;rquicament.</li>
+
+</ul>
+
+<h3>Enlla&ccedil;a totes les fotos de l'&agrave;lbum als &agrave;lbums existents</h3>
+
+<ul>
+
+<li><strong>&Agrave;lbums</strong>: Selecciona l'&agrave;lbum de dest&iacute;.</li>
+
+</ul>
+
+<h3>Informa per correu electr&ograve;nic als tots els membres d'un grup.</h3>
+
+<ul>
+
+<li><strong>Grups</strong>: grup de destinataris</li>
+
+<li><strong>Contingut del correu electr&ograve;nic</strong>: Amb la possibilitat de redactar textes lliurement.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/ca_ES/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/cat_move.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Despla&ccedil;ament de categories virtuals</h2>
+
+<p>Pots canviar l'arrel del directori d'una categoria virtual.</p>
+
+<h3>Categories virtuals que s'han de despla&ccedil;ar</h3>
+
+<p>Selecciona un o varis &agrave;lbums virtuals a despla&ccedil;ar. Si la llista est&agrave; buida, &eacute;s perqu&egrave; encara s'ha creat.</p>
+
+<h3>Crear un nou &agrave;lbum a un nivell superior</h3>
+
+<p>Selecciona el nou &agrave;lbum pare (virtual o f&iacute;sica). Si no se'n selecciona cap, els &agrave;lbums que s'han de moure haur&agrave;n pujat a l'arrel dels &agrave;lbums. No es pot moure una categoria dins d'ella mateixa o dels seus nivells inferiors.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/cat_options.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Opcions dels &agrave;lbums</h2>
+
+<p>Gestiona les opcions per varis &agrave;lbums a la vegada.</p>
+
+<dl>
+
+    <dt>Comentaris dels usuaris</dt>
+
+  <dd>Autoritza als usuaris a afegir comentaris als &agrave;lbums seleccionats.
+Per her&egrave;ncia, una imatge pot ser comentada sempre que aquesta pertanyi a un &agrave;lbum amb autoritzaci&oacute; de publicaci&oacute; de comentaris per part del l'administrador.</dd>
+  
+  <dt>Bloquejar</dt>
+
+  <dd>Els &agrave;lbums es tornen temporalment inactius durant les tasques de manteniment. &Eacute;s important tenir en compte que al bloquejar un &agrave;lbum, tots els seus nivells inferiors s&oacute;n tamb&eacute; bloquejats. Per contra, al desbloquejar un &agrave;lbum, totes els &agrave;lbums d'aquell nivell queden sense restriccions d'acc&egrave;s.</dd>
+
+  <dt>P&uacute;blic/Privat</dt>
+
+  <dd>Els permisos nom&eacute;s tenen sentit per als &agrave;lbums privats. Una vegada que un &agrave;lbum &eacute;s privat, cal autoritzar-ne l'acc&egrave;s als usuaris o grups de forma expl&iacute;cita. Quan un &agrave;lbum &eacute;s considerat com a P&uacute;blic, tots els nivells inferiors que en depenen d'ell esdevenen tamb&eacute; p&uacute;blics.</dd>
+
+  <dt>Representant</dt>
+
+  <dd>Aquesta opci&oacute; est&agrave; disponible &uacute;nicament si el par&agrave;metre de configuraci&oacute; <code>allow_random_representative</code> (Veure <span
+class="filename">include/config_default.inc.php</span>) &eacute;st&agrave;
+<em>activada</em>. Cada &agrave;lbum pot ser representat per una imatge presa a l'atzar o per una miniatura fixa &uacute;nica.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ca_ES/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Administrar els permisos d'un &agrave;lbum</h2>
+
+<p>Aquesta pantalla nom&eacute;s est&agrave; disponible per als &agrave;lbums privats. Aqu&iacute; pots seleccionar usuaris i grups autoritzats per a un &agrave;lbum.</p>
+
+<h3>Grups</h3>
+
+<p>Pots autoritzar o denegar l'acc&eacute;s a un &agrave;lbum a un grup concret. Gr&agrave;cies a la a pertinen&ccedil;a a grups, es poden elaborar llistes d'usuaris amb un perfil com&uacute; per ajudar als administradors a gestionar el nivell de privacitat dels elements publicats.</p>
+
+<h3>Usuaris</h3>
+
+<p>Pots autoritzar o denegar l'acc&egrave;s a usuaris individuals.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/configuration.html	(revision 25596)
@@ -0,0 +1,89 @@
+<h2>Configuraci&oacute;</h2>
+
+<p>Aquesta secci&oacute; permet administrar la configuraci&oacute; b&agrave;sica. Evidentment nom&eacute;s es mostren els par&agrave;metres de configuraci&oacute; suficients per a la majoria d'administradors. En cas de qu&egrave; sigui necessari consultar detalladament tots els par&agrave;metres configuraci&oacute;, llegiu el fitxer<span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Aquesta secci&oacute; es troba dividida en paries parts, reagrupant els par&agrave;metres per tem&agrave;tica.</p>
+
+<h3>Principal</h3>
+<ul>
+
+  <li><strong>T&iacute;tol de la galeria</strong>: utilitzato per al canal RSS i les notificacions per correu electr&ograve;nic.</li>
+
+  <li><strong>P&agrave;gines de la bandera</strong>: codi html visible dalt de les p&agrave;gines.</li>
+
+  <li><strong>URL de la galer&iacute;a</strong>: utilitzat pel canal RSS.</li>
+
+  <li><strong>Bloqueig de la galeria</strong>: Bloquejar el conjunt de galeries per a dur a terme tasques de manteniment. Nom&eacute;s els administradors tenen acc&eacute;s a la galeria.</li>
+
+  <li><strong>Comentaris</strong>: &Eacute;s possible comentar les imatges de la galeria.</li>
+
+  <li><strong>Comentaris dels visitants</strong>: Activant aquesta opci&oacute;, tots els visitants encara que siguin convidats no registrats, poden comentar les imatges.</li>
+
+  <li><strong>Notificar als administradors la inscripci&oacute; d'un nou usuari</strong>: Els administradors rebr&agrave;n un missatge de correu electr&ograve;nic per a cada nou usuari inscrit.</li>
+
+  <li><strong>Permere la inscripci&oacute; de nous usuaris</strong>: La inscripci&oacute; &eacute;s lliure per tothom que s'hi vulgui registrar.</li>
+
+</ul>
+
+<h3>Historial</h3>
+
+  <p>Les visites a les p&agrave;gines<span
+class="pwgScreen">index.php</span> i <span
+class="pwgScreen">picture.php</span> queden registrades a la taula <code>history</code>.</p>
+
+  <p>Les visites es mostren a la pantalla <span class="pwgScreen">Tauler de control &raquo; Eines &raquo; Historial</span>.</p>
+
+<ul>
+  <li><strong>Enregistrament de les p&agrave;gines visitades pels convidats</strong>: Les entrades queden totalment consignades.</li>
+
+  <li><strong>Enregistrament de les p&agrave;gines visitades pels usuaris</strong>: Les entrades queden totalment consignades.</li>
+
+  <li><strong>Enregistrament de les p&agrave;gines visitades pels administradors</strong>: Les entrades queden totalment consignades.</li>
+
+</ul>
+
+<h3>Comentaris</h3>
+<ul>
+
+  <li><strongComentaris dels usuaris per a tots</strong>: fins i tot els usuaris no registrats poden deixar comentaris.</li>
+
+  <li><strong>Nombre de comentaris dels usuaris per p&agrave;gina</strong>.</li>
+
+  <li><strong>Validaci&oacute;</strong>: Un administrador ha de validar els comentaris dels usuaris abans que puguin ser visibles p&uacute;blicament. La validaci&oacute; es porta a terme per mitj&agrave; de la pantalla <span class="pwgScreen">Tauler de control &raquo; Eines &raquo; Comentaris en espera</span>.</li>
+
+  <li><strong>Notificaci&oacute; als administradors quan es requereixi la validaci&oacute; d'un comentari</strong>: Envia un correu electr&ograve;nic als administradors quan un usuari afegeixi comentari que sigui validat.</li>
+
+  <li><strong>Notificar als administradors quan es requereixi la validaci&oacute; d'un comentari </strong>: Envia un correu electr&ograve;nic als administradors quan un usuari afegeixi un comentari que requereix validaci&oacute; per part dels administradors.
+ Validaci&oacute; dels comentaris dels usuaris s'efectua a la pantalla <span class="pwgScreen">Tauler de control &raquo; Eines &raquo; Comentaris en espera</span>.</li>
+
+</ul>
+
+<h3>Visualitzaci&oacute; per defecte</h3>
+<p>Canviar les opcions de visualitzaci&oacute; per defecte: per als visitants no connectats. Un cop connectat, aquestes opcions s&oacute;n reempla&ccedil;ades per la de l'usuari. Es poden modificar a la pantalla <span
+class="pwgScreen">perfil</span>.</p>
+
+<p>Podeu canviar aquestes opcions per als usuaris existents, per&ograve; aix&ograve; &eacute;s una altra pantalla: <span class="pwgScreen">Tauler de control &raquo; Usuaris &raquo; Gestionar</span>, on es poden canviar aquestes opcions per obtenir una llista d'usuaris seleccionats.</p>
+
+<ul>
+
+  <li><strong>Idioma</strong>: Nom&eacute;s afecta a les etiquetes de Piwigo. Els noms dels &agrave;lbums, fotos i descripcions no s'han tradu&iuml;t (&eacute;s a dir, multiling&uuml;e).</li>
+
+  <li><strong>N&uacute;mero de miniatures por l&iacute;nia</strong></li>
+
+  <li><strong>N&uacute;mero de l&iacute;nies per p&agrave;gina</strong></li>
+
+  <li><strong>Tema de la interf&iacute;cie</strong></li>
+
+  <li><strong>Elements recents</strong>: en dies. Per&iacute;ode durant el qual la imatge &eacute;s considerada com a una novetat. Aquest per&iacute;ode ha de ser superior a 1 dia</li>
+
+  <li><strong>Desenvolupar tots els &agrave;lbums</strong>: Desenvolupar tots els &agrave;lbums al men&uacute;? <em>Atenci&oacute;n</em>: Aquesta opci&oacute; &eacute;s la susceptible de consumir recursos innecess&agrave;riament si el seu &agrave;lbum d'arbre cont&eacute; molts elements.</li>
+
+  <li><strong>Mostrar el n&uacute;mero de comentaris</strong>: mostren el nombre de comentaris dels usuaris per sota de cada miniatura. Aquesta caracter&iacute;stica consumeix recursos.</li>
+
+  <li><strong>Mostrar el n&uacute;mero de visualitzacions</strong>: Enumera les vegades que l'element ha estat visualitzat pels usuaris sota la seva miniatura a la p&agrave;gina de miniatures. Nom&eacute;s &eacute;s v&agrave;lid si el par&agrave;metre de configuraci&oacute; avan&ccedil;ada es: <br />
+  $conf['show_nb_hits'] = true; <br /> (No es visualitzen per defecte. Cal activar-ho manualment.)</li>
+
+  <li><strong>Amplada i al&ccedil;ada m&agrave;xima de les imatges</strong>: A la pantalla. Si la imatge &eacute;s m&eacute;s ampla que aquest par&agrave;metre, llavors ser&agrave; redimensionada. Si penses que necessites modificar aquests par&agrave;metres, (aix&iacute; com per a una visualitzaci&oacute; per defecte), seria rellevant redimensionar directament les imatges emmagatzemades.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ca_ES/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,55 @@
+<h2>Configuraci&oacute; d'extensions per a les plantilles</h2>
+
+<h3>Objectiu</h3>
+<p>La seva galeria Piwigo es pot personalitzar mitjan&ccedil;ant la substituci&oacute; dels arxius existents de la plantilla amb versions personalitzades. Per exemple, la plantilla de cap&ccedil;alera per defecte (header.tpl) pot ser substitu&iuml;da per una plantilla de cap&ccedil;alera personalitzada (my-header.tpl). Despr&eacute;s d'enviar els canvis a la base de dades la galeria mostrar&agrave; la cap&ccedil;alera personalitzada en lloc de la cap&ccedil;alera original.<br>
+Les extensions de les plantilles s&oacute;n una poderosa manera de crear temes personalitzats tant per als usuaris nous com per als usuaris avan&ccedil;ats. Si s'utilitza conjuntament amb l'editor <i>LocalFiles Editor</i> es poden fer adaptacions de temes existents.</p>
+
+<h3>Plantilla original</h3>
+<p>Els temes contenen una s&egrave;rie d'arxius de plantilla que componen les p&agrave;gines de la galeria. Aquestes s&oacute;n les plantilles originals.</p>
+
+<h3>Paraula clau opcional a la URL</h3>
+<p>Aquestes s&oacute;n les paraules que es troben a la URL de la galeria despr&eacute;s del nom del m&ograve;dul. Tamb&eacute; poden ser enlla&ccedil;os permanents actius(permalinks). (Consulteu la documentaci&oacute; d'enlla&ccedil;os permanents per a m&eacute;s informaci&oacute;) <a href="#warnings">ADVERT&Egrave;NCIA:</a> si la mateixa plantilla original i les mateixes paraules clau s'utilitzen en m&eacute;s d'una plantilla personalitzada nom&eacute;s l'&uacute;ltima estar&agrave; activa.</p>
+
+<h3>Tema personalitzat</h3>
+<p>Un tema personalitzat &eacute;s un tema que t&eacute; reempla&ccedil;ats els arxius de la seva plantilla.</p>
+
+<h3>On s&oacute;n les plantilles originals?</h3>
+<p>Le plantilles originals s&oacute;n els arxius de plantilla que conformen cada tema. Aquests es guarden en <em>/themes/default/template</em> (o <em>themes/<theme name>/template</em>).  Aquests arxius de plantilla no poden ser editats direcmennt al seu directori original. En d'editar-los directament sense canviar-los de lloc, els canvis es perdran en el moment d'actualitzar-se.<br>
+Les plantilles originals suportades actualment inclouen:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> i/o <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> i/o <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> i/o <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> i/o <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> i/o <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> i/o <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> i/o <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Guardar plantilles personalitzades</h3>
+<p>Les plantilles personalitzades s'han de guardar a la carpeta o subcarpetes template-extension. Per exemple, <em>/template-extension/my-default/header.tpl</em> (o <em>/template-extension/<my-theme-name>/header.tpl</em>)  
+
+
+Els arxius de plantilla pot tenir qualsevol nom amb l'extensi&oacute; .tpl.  Els arxius de plantilla a les subcarpetes apareixen a la pantalla Configuraci&oacute; de plantilles si es disposa de plantilles personalitzades.</p>
+<h3>Activaci&oacute; de plantilles personalitzades</h3>
+<p>
+Seleccioneu la plantilla original a reempla&ccedil;ar. Si ho desitja triar una paraula clau URL per assegurar-se que la plantilla personalitzada nom&eacute;s apareix a les p&agrave;gines amb la paraula clau introdu&iuml;da. Seleccioneu el tema que hagueu personalitzat i els canvis es faran efectius per al tema. Recorda desar-ho per a enviar els canvis a la base de dades.</p>
+<h3>Desactivaci&oacute; de plantilles personalitzades</h3>
+<p>Anul&middot;li la selecci&oacute; de la plantilla original i envi&iuml; els canvis a la base de dades.<br>
+Eliminar els arxius de plantilla personalitzats de la carpeta <i>template-extension</i>.</p>
+
+<a name="warnings"></a>
+<h3>Advert&egrave;ncies</h3>
+<ul>
+  <li><strong>La plantilla original</strong> ha de ser la plantilla original. En cas contrari pot tenir resultats impredictibles.</li>
+  <li>Si la mateixa plantilla original i la mateixa paraula clau s'utilitzen en m&eacute;s d'una plantilla personalitzada nom&eacute;s l'&uacute;ltima estar&agrave; activa.</li>
+  <li>Els arxius de la plantilla de mostra proporcionats s&oacute;n nom&eacute;s per a prop&ograve;sits de prova. No els editi. Cre&iuml;'n els seus propis o copi&iuml; els arxius existents de plantilla del tema a <em>/template-extension/<my-theme>/</em></li>
+  <li>Quan s'elimina la plantilla personalitzada, el fitxer original de plantillal ser&agrave; reactivat immediatament.</li>
+</ul>
Index: /tags/2.6.0RC1/language/ca_ES/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>LLista de grups</h2>
+
+<p>Administrar les propietats dels grups.</p>
+
+<h3>Afegir un grup</h3>
+
+<p>L'administrador pot afegir grups.</p>
+
+<h3>Llista de grups</h3>
+
+<p>La llista permet per a cada grup:</p>
+
+<ul>
+  <li>Accedir a la llista dels seus membres</li>
+  <li>Accedir als permisos</li>
+  <li>Suprimir el grup (es necessita confirmaci&oacute;)</li>
+  <li>Invertir l'estat "per defecte" (es necessita confirmaci&oacute;)</li>
+</ul>
+
+<h3>Grups predeterminats</h3>
+<p>Els grups predeterminats (o grups per defecte) s&oacute;n els grups associats a cada nou usuari de forma autom&agrave;tica en el moment de la seva inscripci&oacute; o si va ser inscri't per un administrador.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,24 @@
+<p>Existeixen varis m&egrave;todes per a afegir imatges a la galeria Piwigo:</p>
+
+<ul>
+
+  <li><strong>Afegirles de forma directa</strong> des del seu navegador web &eacute;s el m&egrave;tode m&eacute;s simple i m&eacute;s inmediat. Dep&eacute;n de la capacitat del navegador i sobretot de la capacitat del servidor. Per a grans quantitats d'imatges o en el cas de qu&egrave; sorgissin problemes, tamb&eacute; existeixen m&egrave;todes alternatius.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Afegir imatges de forma directa</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> &eacute;s un software que cal instal&middot;lar al seu ordinador.
+  Arrosegui les imatges a la finestra de pLoader, clicar sobre <em>"Traslladar a Piwigo"</em> i pLoader s'ocupar&agrave; de tot.
+  Existeixen altres softwares client com ara <strong>WinToPiwigo</strong> o el m&ograve;dul <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Utilitzar pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Pujar imateges per mitj&agrave; del protocol FTP</strong> &eacute;s el m&egrave;tode ideal per afegir coleccions importants en un m&iacute;nim d'operacions. Amb aquest m&egrave;tode &eacute;s f&agrave;cil controlar de forma precisa la organitzaci&oacute; f&iacute;sica de les seves imatges al servidor.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Utilitzar FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/ca_ES/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/help_groups.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>Els grups s&oacute;n una forma convenient d'establir permisos per a una llista d'usuaris.</p>
+
+<p>Es poden crear grups a <span class="pwgScreen">Tauler de control; &raquo; Usuaris
+&raquo; Grups</span> i associar usuaris als diferents grups a <span class="pwgScreen">Tauler de control; &raquo; Usuaris &raquo;
+Gestionar</span>.</p>
+
+<p>Un usuari pot pert&agrave;nyer a diversos grups. L'autoritzaci&oacute; t&eacute; prioritat sobre la prohibici&oacute;: si l'usuari "Jack" pertany als grups de "Fam&iacute;lia" i "Amics", i nom&eacute;s el grup "fam&iacute;lia" pot veure l'&agrave;lbum "Nadal 2010", llavors "Jack" podr&agrave; veure tamb&eacute; l'&agrave;lbum "Nadal 2010".</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Una vegada que ha creat la galeria la podeu configurar per als vostres visitants
+<ul>
+	<li>Configura la pantalla per defecte a <span class="pwgScreen">Tauler de control &raquo; Configuraci&oacute; &raquo; Opcions</span> Etiquetes <span class="pwgScreen">Configuraci&oacute; per als visitants</span></li>
+	<li>El tema per defecte a <span class="pwgScreen">Tauler de control &raquo; Configuraci&oacute; &raquo; Temas</span></li>
+	<li>L'idioma per defecte a <span class="pwgScreen">Tauler de control &raquo; Configuraci&oacute; &raquo; Idiomes</span></li>
+ </ul>
+ Per defecte, cada nou usuari heretar&agrave; aquestes propietats en el moment de la inscripci&oacute;.
+</p>
+<p>Per a qualsevol dubte, la comunitat Piwigo posa a la seva disposici&oacute; el seu f&ograve;rum <a href="http://piwigo.org/forum"> per a ajudar-lo a resoldre totes les preguntes i aclaracions que li puguin esdevindre</a>.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,57 @@
+<fieldset>
+<legend>Permisos</legend>
+
+<p>Poden establir-se diferents <strong>nivells de privacitat</strong> per a les imatges (bloquejos). Cada usuari tamb&eacute; t&eacute; un nivell de privacitat (una clau). Existeixen 5 nivells diferents:</p>
+<ol>
+  <li>Cap</li>
+  <li><em>Contactes</em></li>
+  <li><em>Amics </em>(que &eacute;s superior a dels contactes)</li>
+  <li><em>Familia </em>(que &eacute;s superior als dels Amics)</li>
+  <li><em>Administradors </em>(que est&agrave; per sobre de tots)</li>
+</ol>
+
+<p>Els nivells m&eacute;s alts tenen permisos sobre els nivells inferiors. Per a un usuari determinat, quan major &eacute;s el nivell de privacitat, m&eacute;s imatges pot veure.</p>
+
+<p>Per exemple, si la imatge "peter_wedding-0024.jpg" t&eacute; el nivell de privacitat <em>"Familia"</em>, llavors:</p>
+<ul>
+  <li>Pere (com &eacute;s l'<em>"Administrador"</em>) veur&agrave; la imatge perqu&egrave; els <em>"Administradors"</em> poden veure totes les imatges</li>
+  <li>Beth (com &eacute;s un membre de la <em>"Familia"</em>) tamb&eacute; podr&agrave; veure la imatge.</li>
+  <li>Maria (com &eacute;s nom&eacute;s un <em>"Amic"</em>) no podr&agrave; veure la imatge.</li>
+</ul>
+
+<p>Un usuari que no t&eacute; perm&iacute;s per veure el contingut d'un &agrave;lbum no veur&agrave; l'&agrave;lbum en si, ni tan sols el seu t&iacute;tol. El mateix principi s'aplica a una etiqueta.</p>
+
+<p>El nivell de privacitat d'un usuari es pot veure a la pantalla <span class="pwgScreen">Tauler de control &raquo; Usuaris &raquo; Gestionar</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Permisos dels &agrave;lbums</legend>
+
+<p>Si els nivells de privacitat no s'ajusten a les seves necessitats, tamb&eacute; pot administrar els permisos dels &agrave;lbums per a un usuari o per a un grup. Els permisos es poden administrar alhora per a imatges i &agrave;lbums, sense cap problema.</p>
+
+<p>Es pot prohibir l'acc&eacute;s als &agrave;lbums. Cal canviar el tipus d'acc&eacute;s a "Privat" per gestionar els permisos d'un &agrave;lbum.</p>
+
+
+
+
+
+
+<p>Podeu configurar un &agrave;lbum a "Privat" mitjan&ccedil;ant l'edici&oacute; d'un sol &agrave;lbum (<span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Gestionar
+&raquo; Editar</span>) o configurant les opcions a tots els nivells de l'arbre de l'&agrave;lbum 
+(<span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Propietats &raquo; P&uacute;blic / Privat</span>).</p>
+
+<p>Una vegada l'&agrave;lbum es marca com a "Privat", podeu administrar els permisos per a grups i usuaris per mitj&agrave; de les tres seg&uuml;ents pantalles:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Tauler de control &raquo; Usuaris &raquo; Gestionar &raquo;
+  Permisos</span> (un vincle per usuari)</li>
+
+  <li><span class="pwgScreen">Tauler de control &raquo; Ussuaris &raquo; Grups &raquo;
+  Permisos</span> (un vincle per grup)</li>
+
+  <li><span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Gestionar &raquo; Editar permisos d'&agrave;lbums</span> (un vincle per &agrave;lbum)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ca_ES/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Les imatges estan al directori de cada &agrave;lbum corresponent.</p>
+
+<p>Tamb&eacute; pot visualitzar-se una imatge en diversos &agrave;lbums, sense duplicar l'arxiu al servidor web. &Eacute;s possible associar la imatge a qualsevol &agrave;lbum des de la pantalla d'edici&oacute; de la imatge (Els administradors poden arrivar-hi des de la p&agrave;gina de la imatge al costat de la galeria).</p>
+
+<p>Els &agrave;lbums virtuals no tenen cap directori. Crea &agrave;lbums virtuals des de <span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo;
+Gestionar</span>.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/history.html	(revision 25596)
@@ -0,0 +1,32 @@
+h2>Historial</h2>
+
+<p>Aqu&iacute; pots monitoritzar el registre de visites de la galeria segons les opcions escollides en: Tauler de control &raquo; Configuraci&oacute; &raquo; Opcions &raquo; Historial</p>
+	
+<h3>Estad&iacute;stiques</h3>
+<ul>
+  <p>Si heu optat per registrar les p&agrave;gines visitades (<span class="pwgScreen">index.php</span> i <span class="pwgScreen">picture.php</span>),  ho podeu monitoritzar des d'aquesta pestanya.</p>
+	
+	<li><strong>Estad&iacute;stiques generals</strong>: visualitza les estad&iacute;stiques per anys.</li>
+	
+	<li><strong>Estad&iacute;stiques anuals</strong> : visualitza les visites per mes en el any seleccionat.</li>
+	
+	<li><strong>Estad&iacute;stiques mensuals</strong> : visualitza les visites per dia en el mes seleccionat .</li>
+	
+	<li><strong>Estad&iacute;sticas de un d&iacute;a</strong> : visualiza las visites per hora en el dia seleccionat.</li>
+	
+</ul>
+
+<h3>Cercar</h3>
+<ul>
+  <p>Si heu optat per registrar les p&agrave;gines visitades (<span class="pwgScreen">index.php</span> i <span class="pwgScreen">picture.php</span>) pot navegar pels detalls d'aquesta fitxa amb l'ajuda de diferents filtres.</p>
+ 
+	<li><strong>Filtrar per data</strong>: seleccionar l'interval de dates per realitzar la cerca mitjan&ccedil;ant l'establiment de dates d'inici i fi.</li>
+	
+	<li><strong>Filtrar por tipus d'element</strong>: seleccionar el tipus d'element per a visualitzar-ne l'activitat.</li>
+	
+	<li><strong>Filtrar per usuari</strong>: seleccionar un usuari per a visualitzar-ne la seva activitat.</li>
+	
+	<li><strong>Filtrar pel nom de l'arxiu</strong>  seleccionar el nom de l'arxiu per a visualitzar-ne la seva activitat.</li>
+	
+	<li><strong>Filtrar per l'identificador de la imatge</strong>: seleccionar l'identificador de la imatge per a visualitzar-ne la seva activitat.</li>
+</ul>
Index: /tags/2.6.0RC1/language/ca_ES/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/maintenance.html	(revision 25596)
@@ -0,0 +1,50 @@
+<h2>Manteniment</h2>
+
+<p>Per optimitzar el temps de generaci&oacute; de p&agrave;gines, Piwigo utilitza informaci&oacute; emmagatzemada en mem&ograve;ria cach&eacute;. Per exemple, cada vegada que &eacute;s sol&middot;licitada una p&agrave;gina, en lloc de comptar el nombre d'imatges que cont&eacute; cada &agrave;lbum, Piwigo lleigeix aquesta informaci&oacute; a la base de dades. En teoria, aquesta informaci&oacute; ha de ser sempre correcta, per&ograve; de vegades un error pot oc&oacute;rrer i la informaci&oacute; emmagatzemada en mem&ograve;ria cache pot ser err&ograve;nia.</p>
+
+<p>Amb el temps, hi ha informaci&oacute; que esdev&eacute; in&uacute;til. Suprimir-la de la base de dades ajuda a alliberar espai en el disc.</p>
+
+<ul>
+
+  <li>
+    <strong>Elements orfes que han perdut tota relaci&oacute;:</strong>
+   Mostra les imatges que no tenen relaci&oacute; amb cap &agrave;lbum virtual
+  </li>
+  <li>
+    <strong>Arxius amb el mateix nom en diversos &agrave;lbums f&iacute;sics:</strong>
+    Visualitza imatges o qualsevol altre arxiu que es poden trobar en diversos &agrave;lbums. 
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Actualitzar la informaci&oacute; de l'&agrave;lbum:</strong> 
+  Per a cada &agrave;lbum, es supervisa i s'actualitza si es necessari la seg&uuml;ent informaci&oacute;: la organitzaci&oacute;, posici&oacute; i her&egrave;ncia jer&agrave;rquica dels &agrave;lbums, el nombre d'imatges i la data de l'&uacute;ltima imatge. Aquesta acci&oacute; tamb&eacute; comprova la coher&egrave;ncia de les imatges representatives.</li>
+
+  <li><strong>Actualitzar la informai&oacute; de les imatges:</strong> 
+  Per a cada imatge, la informaci&oacute; actualitzada &eacute;s la seg&uuml;ent: la ruta completa a l'arxiu i la valoraci&oacute; promig. <em>Atenci&oacute;</em>: No confondre amb les metadades que son sincronitzados a la pantalla <span class="pwgScreen">Tauler de control &raquo; &Agrave;lbums &raquo; Sincronitzar</span> o a la pantalla <span class="pwgScreen">Modificar la informaci&oacute; d'una imatge</span>
+(accessible des de la p&agrave;gina de visualitzaci&oacute; d'una imatge<span class="pwgScreen">picture.php</span>).</li>
+
+  <li><strong>Reparar i optimitzar la base de dades:</strong> Es porta a terme la reordenaci&oacute;, la reparaci&oacute; i l'optimitzaci&oacute; de cada taula que conforma la base de dades.
+  </li>
+
+</ul>
+
+<ul>
+  <li><strong>Eliminar l'historial :</strong>
+Suprimeix totes les l&iacute;nies de la taula <code>history</code>. La pantalla <span class="pwgScreen">Tauler de control &raquo; Eines &raquo; Historial</span>
+ eliminar&agrave; tota la informaci&oacute; registrada. <Em>Atenci&oacute;</em>: es perdr&agrave; tota la informaci&oacute; sense possibilitat de recuperaci&oacute;.
+  </li>
+  
+  <li><strong>Eliminar el sumari de l'historial:</strong>Elimina tots els resum de la informaci&oacute; (obtinguda dels detalls de registre).</li>
+
+  <li><strong>Eliminar les sessions:</strong> Suprimir les sessions expirades.</li>
+
+  <li><strong>Eliminar les fonts de notificaci&oacute; no utilitzades.</strong></li>
+
+  <li><strong>Eliminar la hist&ograve;ria de cerques</strong></li>
+  
+  <li><strong>Eliminar el temes compilats</strong></li>
+  
+</ul>
Index: /tags/2.6.0RC1/language/ca_ES/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Notificaci&oacute; per correu electr&ograve;nic</h2>
+
+<p>Configuraci&oacute; i gesti&oacute; de notificacions per correu electr&ograve;nic als usuaris per a informar de canvis en el lloc web.</p>
+
+<p>Aquesta pantalla consta de 3 seccions:</p>
+
+<h3>Configuraci&oacute;</h3>
+<p>Disponible nom&eacute;s per a webmasters. S'estableixen notificacions per par&agrave;metres de correu.</p>
+
+<h3>Inscripcions</h3>
+<p>Disponible nom&eacute;s per a webmasters. Es gestiona la inscripci&oacute; d'usuaris a les notificacions per correu electr&ograve;nic. Afegir usuaris a la secci&oacute; d'inscripcions per a qu&egrave; puguin rebre les corresponents notificacions.</p>
+
+<h3>Enviament</h3>
+<p>Disponible nom&eacute;s per a webmasters. Permet als administradors enviar missatges de notificaci&oacute; als usuaris subscrits.</p>
+
Index: /tags/2.6.0RC1/language/ca_ES/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/permalinks.html	(revision 25596)
@@ -0,0 +1,8 @@
+<h2>Enlla&ccedil;os/Vincles permanents</h2>
+
+<p>Els enlla&ccedil;os permanents (Permalinks) s'utilitzen per fer m&eacute;s agradables les URL dels &agrave;lbums.
+Quan un &agrave;lbum cont&eacute; definit un enlla&ccedil; permanent, l'identificador de l'&agrave;lbum no requereix m&eacute;s en la URL.</p>
+
+<p>Quan un enlla&ccedil; permanent s'elimina, pot guardar-lo a l'historial d'enlla&ccedil;os permanents de manera que els enlla&ccedil;os externs a p&agrave;gines Piwigo encara funcionen. A la taula de l'historial enlla&ccedil;os permanents es pot veure la data en qu&egrave; l'enlla&ccedil; permanent s'ha eliminat, l'&uacute;ltima vegada que es va utilitzar i el nombre de vegades que s'ha utilitzat.</p>
+
+<p>Cal recordar que els enlla&ccedil;os permanents han de ser &uacute;nics per &agrave;lbum. Nom&eacute;s es poden definir una vegada en l'historial.</p>
Index: /tags/2.6.0RC1/language/ca_ES/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,58 @@
+<fieldset>
+  <legend>Guia r&agrave;pida</legend>
+
+<ol>
+  <li>Crear un directori en el seu ordinador</li>
+
+  <li>Copieu les fotos dins d'aquest directori i canviar-ne la seva mida per a una visualitzaci&oacute; web. <em>Atenci&oacute;</em>: el nom dels directoris i arxius ha de contenir nom&eacute;s lletres, xifres, "-", "_" o ".". No hi poden haver espais en blanc ni car&agrave;cters accentuats.</li>
+
+  <li>Amb un client FTP, copiar els seus arxius en el directori "galleries" de la instal.laci&oacute; Piwigo.</li>
+
+  <li>Iniciar sessi&oacute; a la galeria.</li>
+
+  <li>Anar a <span class="pwgScreen">Tauler de control</span> i clicar el bot&oacute; gros Sincronitzaci&oacute; ràpida.</li>
+</ol>
+
+<p>Felicitats! Acabes de crear el primer &agrave;lbum de la teva galeria Piwigo.</p>
+
+</fieldset>
+<fieldset>
+  <legend>Organitzaci&oacute; d'arxius i directoris</legend>
+
+<ul>
+
+  <li>
+
+    <p>Els directoris que representen els &agrave;lbums estan en el directori "galleries". Heus aqu&iacute; la jerarquia d'una galeria molt petita (per&ograve; amb moltes caracter&iacute;stiques):</p>
+  
+<pre>
+galleries
+|-- casament
+|   |-- celebracio
+|   |   |-- sortida
+|   |   |   |-- pol-sol.jpg
+|   |   |   +-- sara-sola.jpg
+|   |   +-- arrivada
+|   |       +-- pol-i-sara.jpg
+|   +-- festa
+|       |-- ball001.jpg
+|       |-- ball002.jpg
+|       +-- ball003.jpg
++-- llunademel
+    |-- hotel.png
+    |-- video-avio.avi
+    +-- pwg_representacio
+        +-- video-avio.jpg
+</pre>
+
+  </li>
+  
+  <li>A excepci&oacute; de "pwg_representative" (vegeu les explicacions a sota), cada directori en "galleries" produeix un &agrave;lbum. No hi ha l&iacute;mit quan a profunditat, &eacute;s a dir, es poden crear &agrave;lbums i sub-&agrave;lbums a voluntat.</li>
+
+  <li>B&agrave;sicament, un element est&agrave; representat per un arxiu. Un arxiu pot ser un element per a Piwigo si la seva extensi&oacute; &eacute;s entre la llista de par&agrave;metres de configuraci&oacute; <code>file_ext</code> (veure arxiu <span class="filename">include/config.inc.php</span>). Un arxiu pot ser una imatge si la seva extensi&oacute; &egrave;s entre el par&agrave;metre de configuraci&oacute; <code>picture_ext</code>.</li>
+
+  <li>No es representen amb una icona per defecte elements com ara arxius de v&iacute;deo, sons, textos d'arxius, i altres extensions. Opcionalment, es pot associar una miniatura i un arxiu de representanci&oacute; (veure el video-avio.avi en l'exemple anterior).</li>
+
+  <li>Una vegada que les fotos estan ben col &middot; locades en els directoris, aneu a: <span class="pwgScreen">Gestionar (al Tauler de control) &raquo; Eines &raquo; Sincronitzar</span></li>
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ca_ES/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/search.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Cerques</h2>
+
+<p>Cerca d'imatges a trav&eacute;s del conjunt de la galer&iacute;a.</p>
+
+<dl>
+
+  <dt>Cerca per paraules</dt>
+
+  <dd>Cercar una o diverses paraules entre els atributs relacionats amb les imatges de la galeria. Utilitza * com a comod&iacute; per a coincid&egrave;ncies parcials.</dd>
+  
+  <dt>Cerca per autor</dt>
+
+  <dd>Utilitza * com a comod&iacute; per a coincid&egrave;ncies parcials.</dd>
+
+  <dt>Cerca per data</dt>
+
+  <dd>Seleccioneu una data d'inici i/o una data de finalitzaci&oacute; per a realitzar la consulta. Deixar el camp de data buit, per a fer una consulta "abans". L'any en l'&uacute;ltim camp s'ha d'introduir amb format de quatre xifres (per exemple, 2012).</dd>
+
+  <dt>Cerca en els &agrave;lbums</dt>
+
+  <dd>Seleccionar l'&agrave;lbum o els &agrave;lbums a cercar. Tots els sub-&agrave;lbums poden ser cercats seleccionant l'&agrave;lbum pare.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ca_ES/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/synchronize.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Sincronitzar</h2>
+
+<ul>
+
+  <li>Existeixen 2 tipus de sincronitzacions: de l'estructura (directoris i arxius) i metadades. Sincronitzar l'estructura consisteix en sincronitzar la jerarquia dels directoris i arxius amb la seva representaci&oacute; a la base de dades. La sincronitzaci&oacute; de metadades proporciona informaci&oacute; actualitzada com la mida del fitxer, les dimensions, EXIF o IPTC.</li>
+
+  <li>La primera sincronitzaci&oacute; a efectuar ser&agrave; la de l'estructura</li>
+
+  <li>El proc&eacute;s de sincronitzaci&oacute; pot trigar temps (depenent de la c&agrave;rrega del servidor i la quantitat d'arxius a processar), aix&iacute; que &eacute;s tamb&eacute; possible procedir individualment d'&agrave;lbum a &agrave;lbum.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ca_ES/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>LLista d'usuaris</h2>
+
+<p>Permet gestionar les propietats dels usuaris inscrits amb l'excepci&oacute; dels permisos, que es gestionen a trav&eacute;s d'altres seccions.</p>
+
+<h3>Afegir un usuari</h3>
+
+<p>L'administrador pot afegir usuaris manualment.</p>
+
+<h3>Llista d'usuaris</h3>
+
+<p>La llista pot ser filtrada amb el nom d'usuari (* = comod&iacute;), amb el grup o l'estat. La llista pot ser ordenada per data d'inscripci&oacute; o per nom d'usuari, de forma ascendent o descendent.</p>
+
+<p>Aquesta pantalla permet la modificaci&oacute; de diversos usuaris simult&agrave;niament:</p>
+
+<ul>
+  <li>suprimir usuaris (es necessita confirmaci&oacute;)</li>
+  <li>canviar l'estat dels usuaris</li>
+  <li>associar o dissociar grups</li>
+  <li>modificar les propietats de visualitzaci&oacute;</li>
+  <li>modificar les propietats annexes</li>
+</ul>
+
+<p>Els usuaris modificats s&oacute;n aquells usuaris seleccionats (per defecte) o la totalitat de la llista filtrada.</p>
Index: /tags/2.6.0RC1/language/ca_ES/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "Instal·lació";
+$lang['Basic configuration'] = "Configuració bàsica";
+$lang['Default gallery language'] = "Idioma predeterminat de la galeria";
+$lang['Database configuration'] = "Configuració de la base de dades";
+$lang['Admin configuration'] = "Configuració de l'administrador";
+$lang['Start Install'] = "Inicia la instal·lació";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Això es mostrarà als visitants. És necessari pel web d\'administració';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'La connexió amb el servidor s\'ha establert correctament però no és possible connectar amb la base de dades.';
+$lang['Can\'t connect to server'] = "No es pot connectar amb el servidor";
+$lang['Host'] = 'Allotjament';
+$lang['User'] = "Usuari";
+$lang['user login given by your host provider'] = 'nom d\'usuari facilitat pel teu proveïdor d\'allotjament';
+$lang['user password given by your host provider'] = 'clau d\'accès de l\'usuari facilitada pel teu proveïdor d\'allotjament';
+$lang['Database name'] = "Nom de la base de dades";
+$lang['also given by your host provider'] = 'també el dóna el teu proveïdor d\'allotjament';
+$lang['Database table prefix'] = "Prefix de les taules de la base de dades";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "Els noms de les taules de la base de dades començaran amb aquest prefix (permet gestionar millor les taules)";
+$lang['enter a login for webmaster'] = "Introdueix un nom d'usuari per l'administrador de la web";
+$lang['webmaster login can\'t contain characters \' or "'] = "El nom d'usuari de l'administrador de la web no pot contenir caràcters \' o \"";
+$lang['please enter your password again'] = "si us plau introduïu una altra vegada la vostra contrasenya";
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Manté la confidencialitat, permet accedir al panell d\'administració';
+$lang['Password [confirm]'] = "Contrasenya [confirmeu]";
+$lang['verification'] = "verificació";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "Necessiteu ajuda? Feu la vostra pregunta a <a href=\"%s\">Piwigo message board</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "Els visitants poden utilitzar aquesta adreça de correu electrònic per a contactar amb l'administrador del lloc";
+$lang['PHP 5 is required'] = "Es requereix PHP 5 ";
+$lang['It appears your webhost is currently running PHP %s.'] = "Sembla que el vostre amfitrió web està executant la versió PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pot tractar de canviar la teva configuració per PHP 5 mitjançant la creació o modificació de l\'arxiu .htaccess';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Tingues en compte que en qualsevol moment pots canviar la configuració i reiniciar Piwigo.';
+$lang['Try to configure PHP 5'] = "Intenteu configurar PHP 5";
+$lang['Sorry!'] = "Perdó!";
+$lang['Piwigo was not able to configure PHP 5.'] = "A Piwigo no li ha estat possible configurar PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Haurieu d'adreçar-vos al vostre proveidor d'hostatge i averiguar com poder canviar-vos cap a PHP 5.";
+$lang['Hope to see you back soon.'] = "Esperem tornar-vos a veure ben aviat.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Felicitats, la instal·lació de Piwigo s\'ha completat';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una solució alternativa és copiar el text del quadre del costat i pegar-lo dins del fitxer "local/config/database.inc.php" (Advertiment : el fitxer database.inc.php només ha de contenir el que hi ha a l\'àrea de text, sense linia de retorn o caràcter d\'espai)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'La creació del fitxer de configuració local/config/database.inc.php ha fallat.';
+$lang['Download the config file'] = 'Descarregat l\'arxiu de configuració';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Pots descarregar l\'arxiu de configuració i penjar-lo al directori local/config de la teva instal·lació.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'No dubtis en consultar als nostres fòrums per a qualsevol ajuda: %s';
+$lang['Just another Piwigo gallery'] = 'Just another Piwigo gallery';
+$lang['Welcome to my photo gallery'] = 'Benvingut a la meva galeria fotogràfica';
+$lang['Welcome to your new installation of Piwigo!'] = 'Benvingut a la nova instal·lació de Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost o un altre, facilitat pel teu proveïdor d\'allotjament';
+?>
Index: /tags/2.6.0RC1/language/ca_ES/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Català [CA]
Index: /tags/2.6.0RC1/language/ca_ES/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ca_ES/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ca_ES/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Actualització";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Aquesta pàgina actualitza la base de dades de la teva antiga galeria Piwigo a la nova versió. L'assistent d'actualització detecta que esteu executant la <strong>versió %s</strong> (o equivalent).";
+$lang['Upgrade from version %s to %s'] = "Actualitzar la versió %s a la %s";
+$lang['Statistics'] = "Estadístiques";
+$lang['total upgrade time'] = "temps total d'actualització";
+$lang['total SQL time'] = "temps total SQL ";
+$lang['SQL queries'] = "consultes SQL";
+$lang['Upgrade informations'] = "Informació de l'actualització";
+
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Si trobeu algun problema realitzeu una revisió de manteniment [Administració>Eines>Manteniment].";
+
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Com a precaució, els següents connectors s'han desactivat. Haureu de revisar les actualitzacions dels connectors abans de reactivar-los:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Únicament un usuari administrador pot executar l'actualització: si us plau, inicieu la sessió a sota.";
+$lang['You do not have access rights to run upgrade'] = "No teniu drets d'accés per executar l'actualització";
+$lang['All sub-albums of private albums become private'] = "Tots els sub-àlbums dels àlbums privats esdeveneixen privats";
+$lang['User permissions and group permissions have been erased'] = "S'han eliminat els permisos d'usuaris i de grups";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Només s'ha guardat de l'anterior configuració els prefixos de les miniatures i l'adreça de correu electrònic de l'administrador de la web";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'En <i>%s</i>, abans <b>?></b>, insertar:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Com a precaució, els següents tempes s\'han desactivat. Haureu de revisar les actualitzacions dels temes abans de reactivar-los:';
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/about.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/about.html	(revision 25596)
@@ -0,0 +1,23 @@
+<p>Tato web fotogalerie je založena na aplikaci Piwigo.</p>
+
+<p>Piwigo je software foto galerie pro web, vytvořený aktivní 
+komunitou uživatelů a vývojářů. Rozšíření a doplňky dělají Piwigo jednoduše
+přizpůsobitelné. Zásadní výhoda nakonec, Piwigo je bezplatné a opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Navštivte Piwigo web stránky</a></p>
+
+<p>České Piwigo udržují:
+
+	<ul>
+        <a href="http://piwigo.org/forum/profile.php?id=16188">coudy</a></li>
+		<li>Honza Kříž</li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16305">lanius</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=3828">Pavel Budka</a></li>
+        <li>Petr Jirsa</li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13662">puschpull</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16598">sichr</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=11239">TPY</a></li>
+        <li>webprostor hosting</li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15925">ZdenekMaterna</a></li>
+	</ul>
+            .... díky nim</p>
Index: /tags/2.6.0RC1/language/cs_CZ/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/admin.lang.php	(revision 25596)
@@ -0,0 +1,958 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d spojení';
+$lang['%d associations'] = '%d spojení';
+$lang['%d album including'] = '%d album';
+$lang['%d albums including'] = '%d alb';
+$lang['%d physical'] = '%d fyzický';
+$lang['%d physicals'] = '%d fyzických';
+$lang[' and %d virtual'] = 'a %d virtuální';
+$lang[' and %d virtuals'] = 'a %d virtuálních';
+$lang['%d album moved'] = '%d album přesunuto';
+$lang['%d albums moved'] = '%d alb přesunuto';
+$lang['%d group'] = '%d skupina';
+$lang['%d groups'] = '%d skupin';
+$lang['%d member'] = '%d účastník';
+$lang['%d members'] = '%d účastníků';
+$lang['%d tag'] = '%d štítek';
+$lang['%d tags'] = '%d štítků';
+$lang['%d user comment rejected'] = '%d komentář uživatele odmítnut';
+$lang['%d user comments rejected'] = '%d komentářů uživatelů odmítnuto';
+$lang['%d user comment validated'] = '%d komentář uživatele schválen';
+$lang['%d user comments validated'] = '%d komentářů uživatelů schváleno';
+$lang['%d user deleted'] = '%d uživatel smazán';
+$lang['%d users deleted'] = '%d uživatelů smazáno';
+$lang['%d user'] = '%d uživatel';
+$lang['%d users'] = '%d uživatelů';
+$lang['%d waiting for validation'] = '%d čeká na schválení';
+$lang['Actions'] = 'Akce';
+$lang['Activate'] = 'Aktivovat';
+$lang['Add/delete a permalink'] = 'Přidat/odebrat pernamentní odkaz';
+$lang['Add a tag'] = 'Přidat štítek';
+$lang['Add a user'] = 'Přidat uživatele';
+$lang['Add group'] = 'Přidat skupinu';
+$lang['Add'] = 'Přidat';
+$lang['Allow user registration'] = 'Povolit registraci uživatelů';
+$lang['Apply to sub-albums'] = 'Použít na pod-alba';
+$lang['Associated'] = 'Přiřazeno';
+$lang['Caddie management'] = 'Správa košíku';
+$lang['Caddie'] = 'Košík';
+$lang['Albums authorized thanks to group associations'] = 'Alba autorizována díky skupinovému sloučení';
+$lang['Album manual order was saved'] = 'Alba s ručním vyběrem byla uložena';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Zjištění možnosti aktualizace se nezdařilo';
+$lang['Check for upgrade'] = 'Zkontroluj nové aktualizace';
+$lang['Comments for all'] = 'Komentáře pro všechny';
+$lang['Current name'] = 'Současný název';
+$lang['Database'] = 'Databáze';
+$lang['Deactivate'] = 'Deaktivovat';
+$lang['Delete Representant'] = 'Smazat reprezentativní obrázek';
+$lang['Delete selected tags'] = 'Smazat vybrané štítky';
+$lang['Delete selected users'] = 'Smazat vybrané uživatele';
+$lang['Deletions'] = 'Smazání';
+$lang['Deny selected groups'] = 'Zakázat vybraným skupinám';
+$lang['Deny selected users'] = 'Zakázat vybraným uživatelům';
+$lang['Description'] = 'Popis';
+$lang['Display options'] = 'Nastavení zobrazení';
+$lang['Dissociated'] = 'Vazba zrušena';
+$lang['Does not represent'] = 'Nereprezentuje';
+$lang['Edit selected tags'] = 'Upravit vybrané štítky';
+$lang['Edit tags'] = 'Upravit štítky';
+$lang['Email admins when a new user registers'] = 'Poslat e-mail administrátorovi při registraci nového uživatele';
+$lang['Email admins when a valid comment is entered'] = 'Poslat e-mail administrátorovi při vložení nového komentáře';
+$lang['Email admins when a comment requires validation'] = 'Poslat e-mail administrátorovi při vložení nového komentáře vyžadujícího schválení.';
+$lang['Environment'] = 'Prostředí';
+$lang['Form'] = 'Formulář';
+$lang['Gallery title'] = 'Název galerie';
+$lang['Grant selected groups'] = 'Povolit vybrané skupiny';
+$lang['Grant selected users'] = 'Povolit vybrané uživatele';
+$lang['Group name'] = 'Jméno skupiny';
+$lang['Groups'] = 'Skupiny';
+$lang['Guests'] = 'Hosté';
+$lang['History'] = 'Historie';
+$lang['Informations'] = 'Informace';
+$lang['Install'] = 'Instalovat';
+$lang['Link all album photos to a new album'] = 'Napojí všechny fotky do nového alba';
+$lang['Link all album photos to some existing albums'] = 'Napojí všechny fotky na existující alba';
+$lang['Linked albums'] = 'Propojená alba';
+$lang['Lock gallery'] = 'Zamknout galerii';
+$lang['Maintenance'] = 'Údržba';
+$lang['Edit album permissions'] = 'Editace oprávnění pro dané album';
+$lang['Manage permissions for group "%s"'] = 'Nastavit práva pro skupinu "%s"';
+$lang['Manage permissions for user "%s"'] = 'Nastavit práva pro uživatele "%s"';
+$lang['Manage tags'] = 'Správa štítků';
+$lang['Members'] = 'Členové';
+$lang['Metadata synchronized from file'] = 'Metadata synchronizována ze souboru';
+$lang['Move albums'] = 'Přesun alb';
+$lang['Move'] = 'Přesunout';
+$lang['Name'] = 'Jméno';
+$lang['New name'] = 'Nové jméno';
+$lang['New parent album'] = 'Nové hlavní album';
+$lang['New tag'] = 'Nový štítek';
+$lang['Number of comments per page'] = 'Počet komentářů na stránce';
+$lang['Number of rates'] = 'Počet hodnocení';
+$lang['Number of thumbnails to create'] = 'Počet náhledů k vytvoření';
+$lang['Only private albums are listed'] = 'Pouze soukromá alba jsou uvedena';
+$lang['Operating system'] = 'Operační systém';
+$lang['Options'] = 'Nastavení';
+$lang['Other private albums'] = 'Ostatní soukromá alba';
+$lang['Page banner'] = 'Banner stránky';
+$lang['Parent album'] = 'Hlavní album';
+$lang['Path'] = 'Cesta';
+$lang['Permalink'] = 'Pernamentní spojení';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s byl dříve používán albem %s. Nejprve ho vymažte z historie permalinků';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Pernamentní spojení musí být složeno ze znaků a-z, A-Z, 0-9, "-", "_" nebo "/". Nelze použít pouze číslo nebo číslo následované "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s již používá album %s';
+$lang['Permalink history'] = 'Historie pernamentního spojení';
+$lang['Permalinks'] = 'Pernamentní spojení';
+$lang['Permission denied'] = 'Přístup zamítnut';
+$lang['Permission granted thanks to a group'] = 'Přístup povolen díky skupině';
+$lang['Permission granted'] = 'Přístup povolen';
+$lang['Photo informations updated'] = 'Informace o fotografiích aktualizovány';
+$lang['Plugins'] = 'Doplňky';
+$lang['Position'] = 'Pozice';
+$lang['Preferences'] = 'Nastavení';
+$lang['Properties'] = 'Vlastnosti';
+$lang['Random photo'] = 'Náhodná fotografie';
+$lang['Rate date'] = 'Datum hodnocení';
+$lang['Rating by guests'] = 'Hodnocení hosty';
+$lang['Rating'] = 'Hodnocení';
+$lang['Reject'] = 'Zamítnout';
+$lang['Representant'] = 'Reprezentant';
+$lang['Representation of albums'] = 'Alba reprezentace';
+$lang['Representative'] = 'Reprezentativní fotografie';
+$lang['Represents'] = 'Reprezentativní fotografie';
+$lang['Save order'] = 'Uložit pořadí';
+$lang['Save to permalink history'] = 'Uložit do historie pernamentního spojení';
+$lang['Select at least one album'] = 'Vyberte alespoň jedno album';
+$lang['Select at least one photo'] = 'Je nutné zvolit alespoň jednu fotografii';
+$lang['Select at least one user'] = 'Je nutné zvolit alespoň jednoho uživatele';
+$lang['Show info'] = 'Zobrazit informace';
+$lang['Site manager'] = 'Správce stránky';
+$lang['Status'] = 'Stav';
+$lang['Statistics'] = 'Statistiky';
+$lang['Storage album'] = 'Uložené album';
+$lang['Sum of rates'] = 'Součet hodnot';
+$lang['Tag "%s" already exists'] = 'Štítek "%" už existuje';
+$lang['Tag "%s" was added'] = '"%" štítků bylo přidáno';
+$lang['Tag selection'] = 'Výběr štítků';
+$lang['The %d following tags were deleted'] = 'Následujících %d štítků bylo odstraněno';
+$lang['Unable to check for upgrade.'] = 'Unable to check for upgrade.';
+$lang['Uninstall'] = 'Odinstalovat';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Použít výchozí řazení (definované v konfiguračním souboru)';
+$lang['User comments validation'] = 'Schválení komentářů uživatelů';
+$lang['Users'] = 'Uživatelé';
+$lang['Validate'] = 'Schválit';
+$lang['Validation'] = 'Schválení';
+$lang['Version'] = 'Verze';
+$lang['Virtual albums to move'] = 'Virtuální alba k přesunu';
+$lang['Virtual album name'] = 'Název virtuálního alba';
+$lang['Webmaster cannot be deleted'] = 'Administrátor nemůže být smazán';
+$lang['You are running on development sources, no check possible.'] = 'Jsou používány vývojové zdrojové kódy, zjištění není možné.';
+$lang['You cannot delete your account'] = 'Nemůžete smazat svůj účet';
+$lang['You cannot move an album in its own sub album'] = 'Nemůžete přesunout album do jeho vlastního pod-alba';
+$lang['You need to confirm deletion'] = 'Je nutné potvrdit vymazání';
+$lang['Associate to album'] = 'přiřadit k albu';
+$lang['associate to group'] = 'Přiřadit ke skupině';
+$lang['Authorized'] = 'Autorizováno';
+$lang['Add a virtual album'] = 'Přidat virtuální album';
+$lang['Authorize users to add comments on selected albums'] = 'Povolit uživatelům přidávat komentáře k vybraným albám';
+$lang['The name of an album must not be empty'] = 'Název alba nesmí být prázdný';
+$lang['Lock albums'] = 'Zamknout alba';
+$lang['Private'] = 'Privátní album';
+$lang['Public'] = 'Veřejné album';
+$lang['Find a new representant by random'] = 'Najít reprezentativní obrázek pomocí náhodného výběru';
+$lang['Public / Private'] = 'Veřejná / Soukromá';
+$lang['Manage authorizations for selected albums'] = 'Nastavit oprávnění pro vybraná alba';
+$lang['Virtual album added'] = 'Virtuální album přidáno';
+$lang['Virtual album deleted'] = 'Virtuální album odstraněno';
+$lang['Access type'] = 'Druh přístupu';
+$lang['Information data registered in database'] = 'Data byla uložena do databáze';
+$lang['Default display'] = 'Výchozí zobrazení';
+$lang['The gallery URL is not valid.'] = 'URL galerie není platné';
+$lang['Main'] = 'Hlavní';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Počet komentářů na stránku musí být číslo mezi 5 a 50 včetně';
+$lang['Configuration'] = 'Konfigurace';
+$lang['confirm'] = 'Potvrdit';
+$lang['Date'] = 'Datum';
+$lang['delete album'] = 'smazat album';
+$lang['Dissociate from album'] = 'Odebrat z alba';
+$lang['dissociate from group'] = 'Odebrat ze skupiny';
+$lang['Album updated successfully'] = 'Informace o album uloženy.';
+$lang['photos per page'] = 'Položek na stránce';
+$lang['High definition enabled'] = 'Vysoké rozlišení povoleno';
+$lang['File'] = 'Soubor';
+$lang['first photo added on %s'] = 'první položka přidána %s';
+$lang['Forbidden'] = 'Zakázáno';
+$lang['global mode'] = 'Více najednou';
+$lang['group "%s" added'] = 'skupina "%s" přidána';
+$lang['group "%s" deleted'] = 'skupina "%s" vymazána';
+$lang['group "%s" updated'] = 'skupina "%s" aktualizována';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Název skupiny nesmí obsahovat " nebo \' nebo být prázdný.';
+$lang['This name is already used by another group.'] = 'Toto jméno je již používáno pro jinou skupinu.';
+$lang['High definition'] = 'Vysoké rozlišení';
+$lang['jump to album'] = 'přejít na album';
+$lang['jump to photo'] = 'Přejít na obrázek';
+$lang['leave'] = 'Ponechat';
+$lang['Lock'] = 'Zamknout';
+$lang['Locked'] = 'Uzamknuto';
+$lang['manage album photos'] = 'Spravuj fotky alba';
+$lang['manage sub-albums'] = 'Správa pod-alb';
+$lang['Manage'] = 'Správa';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vykonávání operace překročilo povolený čas, zvolte jestli chcete pokračovat [očekávaný čas: %d sekund].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vykonávání překročilo maximální čas, zvolte jestli chcete pokračovat [očekávaný čas: %d sekund].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Nastavený čas pro zobrazení seznamu uživatelů byl překročen. Další uživatelé nebudou zobrazeni.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Nastavený čas pro odeslání zprávy byl překročen. Další zprávy nebudou odeslány.';
+$lang['To send ?'] = 'Odeslat?';
+$lang['Last send'] = 'Naposledy odesláno';
+$lang['User'] = 'Uživatel';
+$lang['See you soon,'] = 'Nashledanou';
+$lang['Go to'] = 'Přejít na';
+$lang['Hello'] = 'Dobrý den ';
+$lang['New photos were added'] = 'Byly přidány nové fotografie';
+$lang['on'] = ' v ';
+$lang['between'] = 'mezi ';
+$lang['and'] = ' a ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Administrátor Vás přihlásil k odběru novinek e-mailem.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Přihlášení k odběru novinek e-mailem proběhlo úspěšně.';
+$lang['To subscribe'] = 'Pro přihlášení klikněte na %s .';
+$lang['If you encounter problems or have any question, please send a message to'] = 'V případě problémů nebo dotazů kontaktujte ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problémy a dotazy';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Administrátor Vás odhlásil z odběru novinek e-mailem.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Odhlášení od odebírání novinek e-mailem proběhlo úspěšně.';
+$lang[', click on'] = ', klikněte na ';
+$lang['To unsubscribe'] = 'Pro odhlášení klikněte na %s .';
+$lang['With blank value, gallery title will be used'] = 'Pokud není zadáno, použije se název galerie';
+$lang['Notification'] = 'Upozornění';
+$lang['Error when sending email to %s [%s].'] = 'Chyba při odesílání zprávy příjemci %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Zpráva odeslána příjemci %s [%s].';
+$lang['%d mail was sent.'] = '%d zpráva odeslána.';
+$lang['%d mails were sent.'] = '%d zpráv odesláno.';
+$lang['%d mail was not sent.'] = '%d zpráva nebyla odeslána.';
+$lang['%d mails were not sent.'] = '%d zpráv nebylo odesláno.';
+$lang['No mail to send.'] = 'Žádná zpráva k odeslání.';
+$lang['There is no available subscribers to mail.'] = 'Nejsou žádní odběratelé přihlášení pro příjem zprávy.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Přihlášení odběratelé mohou být zobrazeni pouze pokud existují novinky k upozornění.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Tato záložka se zobrazuje pouze administrátorovi.';
+$lang['No user to send notifications by mail.'] = 'Nebyl nalezen žádný uživatel pro odebírání novinek e-mailem.';
+$lang['New photos added'] = 'Nové položky byly přidány';
+$lang['Subscribe to notification by mail'] = 'Přihlásit k odběru novinek e-mailem';
+$lang['Unsubscribe from notification by mail'] = 'Odhlásit od odebírání novinek e-mailem';
+$lang['Parameter'] = 'Parametr';
+$lang['Continue processing treatment'] = 'Pokračovat v údržbě';
+$lang['Complementary mail content'] = 'Doplňkový obsah zprávy';
+$lang['Add detailed content'] = 'Odeslat obsah';
+$lang['Send mail as'] = 'Odeslat zprávu jako';
+$lang['Send mail to users'] = 'Odeslat e-mail uživateli';
+$lang['Send'] = 'Odeslat';
+$lang['Options'] = 'Volby';
+$lang['Subscribed'] = 'Přihlášení uživatelé';
+$lang['Subscribe'] = 'Přihlásit';
+$lang['Parameters'] = 'Parametry';
+$lang['Select recipients'] = 'Zvolte příjemce';
+$lang['Subscribe/unsubscribe users'] = 'Přihlásit/odhlásit uživatele';
+$lang['Unsubscribed'] = 'Nepřihlášení uživatelé';
+$lang['%d parameter was updated.'] = '%d parametrů aktualizováno.';
+$lang['%d parameters were updated.'] = '%d parametrů aktualizováno.';
+$lang['%d user was not updated.'] = '%d uživatel(ů) nebylo aktualizováno.';
+$lang['%d users were not updated.'] = '%d uživatelů nebylo aktualizováno.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Uživatel %s [%s] byl odhlášen od odebírání novinek e-mailem.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Uživatel %s [%s] byl přihlášen k odebírání novinek e-mailem.';
+$lang['%d user was updated.'] = '%d uživatel(ů) aktualizováno.';
+$lang['%d users were updated.'] = '%d uživatel(ů) aktualizováno.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Uživatel %s [%s] nebyl odebrán ze seznamu přihlášených k odebírání novinek.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Uživatel %s [%s] nebyl přidán do seznamu přihlášených  k odebírání novinek.';
+$lang['User %s [%s] added.'] = 'Uživatel %s [%s] přidán.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Upozornění: přihlášení nebo odhlášení má za následek odeslání e-mailů uživatelům';
+$lang['Send mail on HTML format'] = 'Odesílat zprávy v HTML formátu';
+$lang['Include display of recent photos grouped by dates'] = 'Zahrnout nové skupiny fotografií podle data';
+$lang['Available only with HTML format'] = 'Dostupné pouze pro zprávy ve formátu HTML';
+$lang['no write access'] = 'nemáte přístupová práva';
+$lang['Permissions'] = 'Oprávnění';
+$lang['private'] = 'soukromé';
+$lang['public'] = 'veřejné';
+$lang['Purge never used notification feeds'] = 'Provést údržbu nepoužitých RSS vláken';
+$lang['Purge sessions'] = 'Provést údržbu relací';
+$lang['randomly represented'] = 'náhodný náhled alba';
+$lang['registration date'] = 'datum registrace';
+$lang['clean'] = 'Vyčistit';
+$lang['Create this site'] = 'Vytvořit tuto stránku';
+$lang['test'] = 'Test';
+$lang['test this remote site'] = 'Otestovat vzdálenou stránku';
+$lang['remove tags'] = 'Odebrat štítky';
+$lang['Repair and optimize database'] = 'Opravit a optimalizovat databázi';
+$lang['selection'] = 'Výběr';
+$lang['set to'] = 'Nastavit ';
+$lang['singly represented'] = 'stálý náhled alba';
+$lang['This site already exists'] = 'Tato stránka již existuje';
+$lang['created'] = 'Vytvořeno';
+$lang['delete'] = 'Vymazat';
+$lang['delete this site and all its attached elements'] = 'Vymazat tuto stránku a všechny související položky';
+$lang['deleted'] = 'Vymazáno';
+$lang['an error happened'] = 'Došlo k chybě';
+$lang['Local'] = 'Místní';
+$lang['Remote'] = 'Vzdálený';
+$lang['update the database from files'] = 'Aktualizovat databázi ze souborů';
+$lang['status'] = 'Stav';
+$lang['Directory'] = 'Adresář';
+$lang['sub-albums'] = 'pod-alba';
+$lang['Synchronize metadata'] = 'Synchronizovat metadata';
+$lang['target'] = 'Cíl';
+$lang['Thumbnail'] = 'Náhled';
+$lang['Title'] = 'Název';
+$lang['Album list management'] = 'Správa alb';
+$lang['Piwigo configuration'] = 'Nastavení aplikace Piwigo';
+$lang['Edit album'] = 'Edituj album';
+$lang['Group management'] = 'Správa skupin';
+$lang['User list'] = 'Seznam uživatelů';
+$lang['Edit photo information'] = 'Upravit informace o fotografii';
+$lang['Database synchronization with files'] = 'Synchronizace databáze se soubory';
+$lang['all'] = 'Vše';
+$lang['height must be a number superior to'] = 'Výška musí být větší než';
+$lang['width must be a number superior to'] = 'Šířka musí být větší než';
+$lang['for the file format'] = 'pro formát souboru';
+$lang['Photo unreachable or no support'] = 'Fotografie není dostupná nebo podporovaná';
+$lang['GD version'] = 'Verze GD knihovny';
+$lang['General statistics'] = 'Celková statistika';
+$lang['average time'] = 'průměrný čas';
+$lang['number of miniaturized photos'] = 'počet miniaturizovaných fotografií';
+$lang['total time'] = 'celkový čas';
+$lang['for this file format'] = 'pro tento formát souboru';
+$lang['unit mode'] = 'jednotlivě';
+$lang['Unlocked'] = 'Odemknuto';
+$lang['unset'] = 'Nenastavovat';
+$lang['Update albums informations'] = 'Aktualizuj informace alb';
+$lang['Update photos information'] = 'Aktualizovat informace o fotografiích';
+$lang['Synchronize'] = 'Synchronizace';
+$lang['reduce to single existing albums'] = 'zredukuj na stávající alba';
+$lang['Choose an option'] = 'Zvolit nastavení';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'zobrazit maximum informací (přidaná alba a elementy, odstraněná alba a elementy)';
+$lang['Error list'] = 'Seznam chyb';
+$lang['Errors caption'] = 'Chyby - legenda';
+$lang['Detailed informations'] = 'Detailní informace';
+$lang['File/directory read error'] = 'Chyba při čtení souboru/adresáře';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Soubor nebo adresář není přístupný nebo neexistuje';
+$lang['albums deleted in the database'] = 'alba odstraněna v databázi';
+$lang['photos deleted from the database'] = 'položek odstraněno z databáze';
+$lang['photos candidates for metadata synchronization'] = 'fotografií pro synchronizaci metadat';
+$lang['photos informations synchronized with files metadata'] = 'informace synchronizované z metadat souborů';
+$lang['errors during synchronization'] = 'chyb během synchronizace';
+$lang['albums added in the database'] = 'alba vložena do databáze';
+$lang['photos added in the database'] = 'položek přidáno do databáze';
+$lang['photos updated in the database'] = 'položek aktualizováno v databázi';
+$lang['Search for new images in the directories'] = 'Hledat nové obrázky v kategoriích';
+$lang['added'] = 'přidáno';
+$lang['deleted'] = 'smazáno';
+$lang['Metadata synchronization results'] = 'Výsledky synchronizace metadat';
+$lang['only perform a simulation (no change in database will be made)'] = 'pouze simulace přidání (nebudou učiněny žádné změny v databázi)';
+$lang['Simulation'] = 'Simulace';
+$lang['directories + files'] = 'adresáře + soubory';
+$lang['only directories'] = 'pouze adresáře';
+$lang['synchronize files structure with database'] = 'synchronizovat strukturu souborů s databází';
+$lang['synchronize files metadata with database photos informations'] = 'synchronizovat metadata souborů s databází';
+$lang['even already synchronized photos'] = 'zahrnout i dříve synchronizované položky';
+$lang['Used metadata'] = 'Použitá metadata';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Název adresářů a souborů musí být tvořen písmeny, čísly, "-", "_" nebo "."';
+$lang['wrong filename'] = 'chybný název souboru';
+$lang['Upload'] = 'Nahrát fotografie';
+$lang['user "%s" added'] = 'uživatel "%s" přidán';
+$lang['User status'] = 'Stav uživatele';
+$lang['user_status_admin'] = 'Administrátor';
+$lang['user_status_generic'] = 'Generic';
+$lang['user_status_guest'] = 'Host';
+$lang['user_status_normal'] = 'Uživatel';
+$lang['user_status_webmaster'] = 'Administrátor';
+$lang['Virtual album'] = 'Virtuální album';
+$lang['Waiting'] = 'Ke schválení';
+$lang['default'] = 'výchozí';
+$lang['Toggle \'default group\' property'] = 'Přepnout vlastnost \'základní skupina\'';
+$lang['Advanced features'] = 'Rozšířené vlastnosti';
+$lang['Overall'] = 'Celkově';
+$lang['Year'] = 'Rok';
+$lang['Month'] = 'Měsíc';
+$lang['Day'] = 'Den';
+$lang['Pages seen'] = 'Prohlédnuto stránek';
+$lang['Time'] = 'čas';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Fotografie';
+$lang['Section'] = 'sekce';
+$lang['An information email was sent to group "%s"'] = 'Informační e-mail byl poslán skupině "%s';
+$lang['Send an information email to group members'] = 'Poslat informační e-mail uživatelům skupiny';
+$lang['Group'] = 'Skupina';
+$lang['[%s] Visit album %s'] = '[%s] Navštivte album %s';
+$lang['Hello,'] = 'Dobrý den,';
+$lang['See you soon.'] = 'Nashledanou.';
+$lang['Discover album:'] = 'Objevit album:';
+$lang['Mail content'] = 'Obsah e-mailu';
+$lang['none'] = 'žádný';
+$lang['high'] = 'vysoký';
+$lang['other'] = 'jiný';
+$lang['Element type'] = 'Typ položky';
+$lang['Image id'] = 'ID fotografie';
+$lang['Summary'] = 'Souhrn';
+$lang['%d line filtered'] = '%d řádka filtrována';
+$lang['%d lines filtered'] = '%d řádek filtrováno';
+$lang['%d guest'] = '%d host';
+$lang['%d guests'] = '%d hostů';
+$lang['Hour'] = 'Hodina';
+$lang['guest'] = 'host';
+$lang['default values'] = 'výchozí hodnoty';
+$lang['Guest cannot be deleted'] = 'Uživatele host nelze vymazat';
+$lang['Default user cannot be deleted'] = 'Výchozího uživatele nelze vymazat';
+$lang['Purge history detail'] = 'Provést údržbu detailů historie';
+$lang['Purge history summary'] = 'Provést údržbu celé historie';
+$lang['Check integrity'] = 'Zkontrolovat integritu';
+$lang['Anomaly'] = 'Anomálie';
+$lang['Correction'] = 'Oprava';
+$lang['Automatic correction'] = 'Automatická oprava';
+$lang['Impossible automatic correction'] = 'Automatická oprava není možná';
+$lang['Correction applied with success'] = 'Oprava úspěšně provedena';
+$lang['Correction applied with error'] = 'Oprava se nezdařila';
+$lang['%d anomaly has been detected.'] = '%d anomálie detekována.';
+$lang['%d anomalies have been detected.'] = '%d anomálií detekováno.';
+$lang['%d anomaly has been corrected.'] = '%d anomálie byla opravena.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomálií bylo opraveno.';
+$lang['%d anomaly has not been corrected.'] = '%d anomálie byla opravena.';
+$lang['%d anomalies have not been corrected.'] = '%d anomálií nebylo opraveno.';
+$lang['Go to %s or %s for more informations'] = 'Více informací naleznete na %s a %s';
+$lang['the forum'] = 'fórum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s není korektní soubor - EXIF není podporován';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s musí být nastaven na false v souboru config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'Hlavní uživatel "host" neexistuje';
+$lang['Main "guest" user status is incorrect'] = 'Stav hlavního uživatele "host" je chybný';
+$lang['Default user does not exist'] = 'Výchozí hlavní uživatel neexistuje';
+$lang['Main "webmaster" user does not exist'] = 'Hlavní uživatel "administrátor" neexistuje';
+$lang['Main "webmaster" user status is incorrect'] = 'Stav hlavního uživatele "administrátor" je chybný';
+$lang['User "%s" created with "%s" like password'] = 'Uživatel "%s" vytvořen s heslem "%s"';
+$lang['Status of user "%s" updated'] = 'Stav uživatele "%s" aktualizován';
+$lang['add new photos to caddie'] = 'přidat nové položky do košíku';
+$lang['No display'] = 'Bez zobrazení';
+$lang['Classic display'] = 'Běžné zobrazení';
+$lang['Hoverbox display'] = 'Zobrazit při najetí myší';
+$lang['Mail address is obligatory for all users'] = 'E-mailová adresa je povinná pro všechny uživatele';
+$lang['Minimum privacy level'] = 'Nejnižší stupeň ochrany soukromí';
+$lang['Privacy level'] = 'Stupeň ochrany soukromí';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakty';
+$lang['Level 2'] = 'Přátelé';
+$lang['Level 4'] = 'Rodina';
+$lang['Level 8'] = 'Administrátoři';
+$lang['Reinitialize check integrity'] = 'Znovu spustit kontrolu integrity';
+$lang['Check all'] = 'Vybrat vše';
+$lang['Uncheck all'] = 'Zrušit výběr';
+$lang['Check automatic corrections'] = 'Vybrat automatické opravy';
+$lang['Apply selected corrections'] = 'Provést vybrané opravy';
+$lang['Ignore selected anomalies'] = 'Ignorovat vybrané anomálie';
+$lang['Refresh'] = 'Aktualizovat';
+$lang['The anomaly will be ignored until next application version'] = 'Anomálie bude ignorována do nové verze aplikace';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Provedením opravy anomálie se zruší její ignorace';
+$lang['%d anomaly has been ignored.'] = '%d anomálie byla ignorována.';
+$lang['%d anomalies have been ignored.'] = '%d anomálií bylo ignorováno.';
+$lang['Plugins which need upgrade'] = 'Doplňky vyžadující aktualizaci';
+$lang['Plugin list'] = 'Seznam doplňků';
+$lang['Check for updates'] = 'Zkontrolovat aktualizace';
+$lang['Other plugins'] = 'Další doplňky';
+$lang['Last revisions'] = 'Poslední revize';
+$lang['Are you sure you want to delete this plugin?'] = 'Přejete si odstranit tento doplněk?';
+$lang['Are you sure you want to install this plugin?'] = 'Přejete si nainstalovat tento doplněk?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Přejete si nainstalovat tuto aktualizaci? Je potřeba ověřit, jestli stávající verzi není nutné nejdříve odinstalovat.';
+$lang['Plugin has been successfully copied'] = 'Doplněk byl úspěšně nainstalován';
+$lang['You might go to plugin list to install and activate it.'] = 'Doplněk je potřeba aktivovat v seznamu doplňků.';
+$lang['Can\'t create temporary file.'] = 'Nelze vytvořit dočasný soubor.';
+$lang['Can\'t download archive.'] = 'Nelze stáhnout archiv.';
+$lang['Can\'t read or extract archive.'] = 'Archiv nelze rozbalit nebo přečíst.';
+$lang['An error occured during extraction (%s).'] = 'Během rozbalování došlo k chybě (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prosím zkontrolujte oprávnění pro adresář "plugins" včetně podadresářů (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Nelze se připojit k serveru.';
+$lang['Purge compiled templates'] = 'Provést údržbu šablon';
+$lang['Upload'] = 'Nahrát fotografie';
+$lang['ACCESS_0'] = 'Volný přístup';
+$lang['ACCESS_1'] = 'Přístupné všem';
+$lang['ACCESS_2'] = 'Přístupné přihlášeným';
+$lang['ACCESS_3'] = 'Přístupné administrátorům';
+$lang['ACCESS_4'] = 'Přístupné správcům';
+$lang['ACCESS_5'] = 'Nepřístupné';
+$lang['Support'] = 'Podpora';
+$lang['Documentation'] = 'Dokumentace';
+$lang['A new version of Piwigo is available.'] = 'Je dostupná nová verze Piwigo.';
+$lang['Piwigo Administration'] = 'Administrace Piwigo';
+$lang['Piwigo version'] = 'Verze Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Používáte nejnovější verzi Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Používaná verze %s [%s] není kompatibilní s požadovanou verzí [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Je nutné aktualizovat systém pokud chcete využívat všechny funkce aplikace - jinak nemusí aplikace pracovat správně nebo vůbec';
+$lang['Deleted on'] = 'Vymazáno';
+$lang['Last hit'] = 'Poslední zobrazení';
+$lang['GD library is missing'] = 'GD knihovna neexistuje';
+$lang['Templates'] = 'Šablony';
+$lang['Extend for templates'] = 'Rozšířit pro šablony';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Nahradit původní šablony uživatelskými z podadresáře template-extension';
+$lang['Replacers (customized templates)'] = 'Nahradit uživatelskými šablonami';
+$lang['Original templates'] = 'Původní šablony';
+$lang['Optional URL keyword'] = 'Volitelné klíčové slovo URL';
+$lang['Templates configuration has been recorded.'] = 'Nastavení šablon bylo uloženo.';
+$lang['All optimizations have been successfully completed.'] = 'Všechny změny byly úspěšně dokončeny.';
+$lang['Optimizations have been completed with some errors.'] = 'Změny byly dokončeny s několika chybami.';
+$lang['Modify information'] = 'Upravit informace';
+$lang['nothing'] = 'prázdné';
+$lang['overrides existing values with empty ones'] = 'nahradit stávající hodnoty prázdnými';
+$lang['Manage photo ranks'] = 'Spravovat řazení fotografií';
+$lang['Edit ranks'] = 'Upravit pozice';
+$lang['No photo in this album'] = 'Žádný element v tomto albu';
+$lang['Images manual order was saved'] = 'Pořadí fotografií bylo uloženo';
+$lang['ranks'] = 'pozice';
+$lang['Drag to re-order'] = 'Pořadí změníte táhnutím myši';
+$lang['Quick Local Synchronization'] = 'Rychlá místní synchronizace';
+$lang['No photo can be deleted'] = 'Fotografie nemůže být vymazána';
+$lang['Delete selected photos'] = 'Vymazat vybrané fotografie';
+$lang['%d photo was deleted'] = '%d fotografie vymazána';
+$lang['%d photos were deleted'] = '%d fotografií vymazáno';
+$lang['Downloads'] = 'Staženo';
+$lang['Released on'] = 'Vydáno';
+$lang['Number of downloads'] = 'Počet stažení';
+$lang['Upload Photos'] = 'Nahrát fotografie';
+$lang['Drop into album'] = 'Dát do alba';
+$lang['+ Add an upload box'] = '+ Přidat pole';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Vytvořte "%s" adresáře v kořenovém adresáři instalace Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Povolte zápis (chmod 777,644,atd.) do "%s" adresáře v kořenovém adresáři instalace Piwigo';
+$lang['existing album'] = 'existující album';
+$lang['create a new album'] = 'vytvořit nové album';
+$lang['Album name'] = 'Název alba';
+$lang['Album "%s" has been added'] = 'Kategorie "%s" přidána';
+$lang['Uploaded Photos'] = 'Nahrát fotografie';
+$lang['%d photos uploaded'] = '%d fotografií nahráno';
+$lang['Privacy level set to "%s"'] = 'Uroveň soukromí údajú nastaven na "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Kategorie "%s" nyní obsahuje %d fotografií';
+$lang['Manage this set of %d photos'] = 'Spravovat tento soubor %d fotografií';
+$lang['Select files'] = 'Výběr souborů';
+$lang['Operation in progress'] = 'Provádím údržbu.';
+$lang['Please wait...'] = 'Prosím počkejte...';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Zpravodaj';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Přihlašte se k odběru Piwigo zpravodaje, aby jste byli informování o novinkách. Dostanete tak e-mail, když bude k dispozici nová verze Piwigo (která může obsahovat bezpečnostní záplatu, o čemž je důležité být informován) a nebo v případě důležitých novinek v projektu. Jedná se jen o několik mailů ročně.';
+$lang['Subscribe %s'] = 'Přihlásit %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Přihlásit %s k Zpravodaji Piwigo';
+$lang['Purge search history'] = 'Odstranit historii hledání';
+$lang['Hide'] = 'Skrýt';
+$lang['Password is missing. Please enter the password.'] = 'Chybí heslo. Prosím napište heslo.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Chybí potvrzení hesla. Prosím potvrďte vybrané heslo.';
+$lang['Allow users to edit their own comments'] = 'Povolit uzivatelům upravovat jejich vlastní komentáře';
+$lang['Allow users to delete their own comments'] = 'Povolit uzivatelům mazat jejich vlastní komentáře';
+$lang['Email administrators when a comment is modified'] = 'Informovat e-mailem administrátory, když je upraven komentář';
+$lang['Email administrators when a comment is deleted'] = 'Informovat e-mailem administrátory, když je smazán komentář';
+$lang['Cannot delete the old permalink !'] = 'Starý pernamentní odkaz nemůže být smazán!';
+$lang['Hit'] = 'Zobrazení';
+$lang['Tools'] = 'Nástroje';
+$lang['Photos'] = 'Fotografie';
+$lang['Themes'] = 'Témata';
+$lang['Instructions to use Piwigo'] = 'Informace jak používat Piwigo';
+$lang['Installed Themes'] = 'Instalovaná témata';
+$lang['Add New Theme'] = 'Přidat nové téma';
+$lang['Forbid this theme to users'] = 'Zakázat použití tohoto tématu uživatelům';
+$lang['Set as default theme for unregistered and new users'] = 'Nastavit výchozí téma pro nezaregistrované a nové uživatele';
+$lang['unknown'] = 'neznámý';
+$lang['Everybody'] = 'Každý';
+$lang['Who can see these photos?'] = 'Kdo může vidět tyto fotografie?';
+$lang['Who can see this photo?'] = 'Kdo může vidět tuto fotografii?'; 
+$lang['Pending Comments'] = 'Nevyřízené komentáře';
+$lang['Settings'] = 'Nastavení';
+$lang['Resize'] = 'Změnit velikost';
+$lang['Maximum width'] = 'Maximální šířka';
+$lang['pixels'] = 'bodů';
+$lang['Maximum height'] = 'Maximální výška';
+$lang['Image Quality'] = 'Kvalita formátu';
+$lang['Save Settings'] = 'Uložit nastavení';
+$lang['Your configuration settings are saved'] = 'Vaše nastavení bylo uloženo';
+$lang['Active Themes'] = 'Aktivní témata';
+$lang['Add write access to the "%s" directory'] = 'nastavte přístup pro zápis do adresáře "%s"';
+$lang['Administration Home'] = 'Úvodní stránka administrace';
+$lang['Change Admin Colors'] = 'Změňte barvy administrace';
+$lang['Delete this theme'] = 'Zrušte toto téma';
+$lang['Directory does not exist'] = 'Adresář neexistuje';
+$lang['Download,'] = 'Stáhnout,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronizace';
+$lang['Get Support on Piwigo Forum'] = 'Získat podporu na fóru Piwigo';
+$lang['Help Me'] = 'Pomoc';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Toto téma nemůže být aktivováno, protože chybí rodičovské téma: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Toto téma nemůže být zrušeno, protože na něm závisí další témata: %s';
+$lang['Inactive Themes'] = 'Neaktivní témata';
+$lang['Install on your computer,'] = 'Instalovat na Váš počítač,';
+$lang['Make this theme available to users'] = 'Zpřístupnit uživatelům';
+$lang['Page end'] = 'Konec stránky';
+$lang['Piwigo Uploader'] = 'Piwigo nahrávání fotografií';
+$lang['Read Piwigo Documentation'] = 'Čtěte Piwigo dokumentaci';
+$lang['Start pLoader and add your photos.'] = 'Spusťte pLoader a přidejte Vaše fotografie.';
+$lang['Switch to clear or dark colors for administration'] = 'Přepnout na světlé nebo tmavé barvy pro administraci';
+$lang['Theme has been successfully installed'] = 'Téma bylo úspěšně nainstalováno';
+$lang['Visit Gallery'] = 'Navštívit galerii';
+$lang['Visit Piwigo project website'] = 'Navštívit Piwigo projektový web portál';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je <em>Piwigo nahrávání</em>. pLoader připraví Vaše fotografie na Vašem počítači a nahraje je na Vaši Piwigo foto galerii.';
+$lang['Guest Settings'] = 'Nastavení pro hosty';
+$lang['Main Page'] = 'Hlavní strana';
+$lang['Photo Page'] = 'Strana fotografie';
+$lang['Activate Navigation Bar'] = 'Aktivovat navigační lištu';
+$lang['Activate Navigation Thumbnails'] = 'Aktivovat navigační náhledy';
+$lang['Activate icon "%s"'] = 'Aktivovat ikonu "%s"';
+$lang['Photo Properties'] = 'Vlastnosti fotografie';
+$lang['Allow user customization'] = 'Povolit uživatelskou úpravu nastavení';
+$lang['Languages'] = 'Jazyky';
+$lang['Installed Languages'] = 'Instalované jazyky';
+$lang['Add New Language'] = 'Přidat nový jazyk';
+$lang['Language has been successfully installed'] = 'Jazyk byl úspěšně nainstalován';
+$lang['Select:'] = 'Vybrat:';
+$lang['None'] = 'Žádný';
+$lang['Invert'] = 'Obrátit';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Není možno deaktivovat toto téma, potřebujete alespoň jedno téma.';
+$lang['Webmaster status is required.'] = 'Je požadován status správce stránky.';
+$lang['Bound Theme'] = 'Svázat téma';
+$lang['Allow rating'] = 'Povolit hodnocení';
+$lang['Select at least one comment'] = 'Vyberte alespoň jeden komentář';
+$lang['Active Plugins'] = 'Aktivní doplňky';
+$lang['Inactive Plugins'] = 'Deaktivované doplňky';
+$lang['Missing Plugins'] = 'Chybějící doplňky';
+$lang['Uninstalled Plugins'] = 'Nenainstalované doplňky';
+$lang['By %s'] = 'od %s';
+$lang['Visit plugin site'] = 'navštivte web portál doplňku';
+$lang['Active Languages'] = 'Aktivní jazyky';
+$lang['Delete this language'] = 'Odstranit tento jazyk';
+$lang['Forbid this language to users'] = 'Znepřístupnit tento jazyk uživatelům';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Není možné deaktivovat tento jazyk, nejprve vyberte jiný výchozí jazyk.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Není možné deaktivovat tento jazyk, potřebujete alespoň jeden jazyk.';
+$lang['Inactive Languages'] = 'Deaktivované jazyky';
+$lang['Make this language available to users'] = 'Zpřístupnit tento jazyk uživatelům';
+$lang['Set as default language for unregistered and new users'] = 'Nastavit jako výchozí jazyk pro nezaregistrované a nové uživatele';
+$lang['Add Photos'] = 'Přidat fotografie';
+$lang['The following tag was deleted'] = 'Následující štítek byl odstraněn';
+$lang['Miscellaneous'] = 'Různé';
+$lang['Virtual Links'] = 'Virtuální odkazy';
+$lang['There is no other language available.'] = 'Není dostupný žádný další jazyk.';
+$lang['There is no other plugin available.'] = 'Není dostupný žádný další doplněk.';
+$lang['There is no other theme available.'] = 'Není dostupné žádné další téma.';
+$lang['Add another set of photos'] = 'Přidat další množinu fotografií';
+$lang['Unable to check for upgrade.'] = 'Není možno ověřit zda exituje nová verze.';
+$lang['user_status_generic'] = 'Všeobecné';
+$lang['IP'] = 'IP';
+$lang['By rank'] = 'Podle hodnoceni';
+$lang['Manual order'] = 'Řazeno ručně';
+$lang['Order of menubar items has been updated successfully.'] = 'Pořadí položek v menu bylo úspěšně aktualizováno.';
+$lang['This theme was not designed to be directly activated'] = 'Toto téma nebylo navrženo tak, aby bylo přímo aktivovatelné';
+$lang['Menu Management'] = 'Další funkce';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Ve vašem souboru php.ini, je nastavení upload_max_filesize (%sB) větší než nastavení post_max_size (%sB), ';
+$lang['Exif extension not available, admin should disable exif use'] = 'PHP rozšíření Exif není dostupné, admininstrátor by měl vypnout použití exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Velikost nahraváného souboru je větší než nastavení upload_max_filesize ve Vašem souboru php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Velikost nahraváného souboru je větší než nastavení post_max_size directive ve Vašem souboru php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Velikost nahraváného souboru je větší než nastavení MAX_FILE_SIZE definovaná v HTML form';
+$lang['The uploaded file was only partially uploaded'] = 'Nahrávaný soubor byl nahrán pouze částečně';
+$lang['No file was uploaded'] = 'Žádný soubor nebyl nahrán';
+$lang['Missing a temporary folder'] = 'Chybějící dočasný adresář';
+$lang['Failed to write file to disk'] = 'Nepodařilo se zapsat soubor na disk';
+$lang['File upload stopped by extension'] = 'Nahrávání souboru bylo zastaveno kvůlu přípony';
+$lang['Unknown upload error'] = 'Neznámá chyba při nahrávání';
+$lang['Error on file "%s" : %s'] = 'Chyba souboru "%s" : %s';
+$lang['automatic order'] = 'automatické řazení';
+$lang['manual order'] = 'ruční řazení';
+$lang['Albums automatically sorted'] = 'Alba jsou řazena automaticky';
+$lang['Batch Manager'] = 'Dávkové zpracování';
+$lang['include child albums'] = 'zahrnout podřízená alba';
+$lang['Selection'] = 'Výběr';
+$lang['Action'] = 'Akce';
+$lang['Set author'] = 'Nastavit autora';
+$lang['Set title'] = 'Nastavit název';
+$lang['Set creation date'] = 'Nastavit datum vytvoření';
+$lang['Apply action'] = 'Provést akci';
+$lang['on the %d selected photos'] = 'na %d vybraných fotografiích';
+$lang['%d of %d photos selected'] = '%d z %d fotografií vybráno';
+$lang['No photo selected, %d photos in current set'] = 'Žádná fotografie nebyla vybrána, %d fotografií v množině';
+$lang['All %d photos are selected'] = 'Všech %d fotografií bylo vybráno';
+$lang['remove this filter'] = 'smazat tento filtr';
+$lang['Duplicates'] = 'Duplikáty';
+$lang['Add a filter'] = 'Přidat filtr';
+$lang['Remove all filters'] = 'Smazat všechny filtry';
+$lang['Refresh photo set'] = 'Obnovit množinu fotografií';
+$lang['The whole page'] = 'Celou stránku';
+$lang['The whole set'] = 'Celou množinu';
+$lang['No photo in the current set.'] = 'Žádná fotografie v aktuální množině.';
+$lang['No photo selected, no action possible.'] = 'Žádná fotografie není vybrána, žádná akce není možná.';
+$lang['Choose an action'] = 'Vyberte akci';
+$lang['remove author'] = 'smazat autora';
+$lang['Type here the author name'] = 'Napište zde jmého autora';
+$lang['remove title'] = 'smazat název';
+$lang['Type here the title'] = 'Napište zde název';
+$lang['remove creation date'] = 'smazat datum vytvoření';
+$lang['Album photos associated to the following albums: %s'] = 'Fotky alba přiřazeny k následujícím albům: %s';
+$lang['Delete orphan tags'] = 'Smazat štítky';
+$lang['delete photo'] = 'smazat fotky';
+$lang['Orphan tags deleted'] = 'Štítky odstraněny';
+$lang['Remove from caddie'] = 'Odebrat z košíku';
+$lang['Week starts on'] = 'Týden začíná v';
+$lang['You have %d orphan tags: %s.'] = 'Máte %d štítků: %s.';
+$lang['Themes which need upgrade'] = 'Šablony, které potřebují aktualizovat';
+$lang['Languages which need upgrade'] = 'Jazyky které potřebují aktualizovat';
+$lang['All themes are up to date.'] = 'Všechny šablony jsou akuální.';
+$lang['All plugins are up to date.'] = 'Všechny doplňky jsou akuální.';
+$lang['All languages are up to date.'] = 'Všechny překlady jsou akuální.';
+$lang['Visit theme site'] = 'Navštívit web šablony';
+$lang['Visit language site'] = 'Navštívit web překladu';
+$lang['New Version'] = 'Nová verze';
+$lang['Obsolete Plugins'] = 'Zastaralé Pluginy';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'POZOR! Tento plugin se zdá nekompatibilní s touto verzí Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Přejete si je přesto aktivovat?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TENTO PLUGIN JE NYNÍ SOUČÁSTÍ JÁDRA PIWIGO! ODINSTALUJTE HO!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'CHYBA: TENTO PLUGIN CHYBÍ, ALE JE NAINSTALOVÁN! ODINSTALUJTE HO.';
+$lang['display'] = 'zobrazit';
+$lang['new'] = 'nové';
+$lang['No results'] = 'Žádný výsledek';
+$lang['Searching...'] = 'Hledám...';
+$lang['Type in a search term'] = 'Zadejte hledaný výraz';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivovat ikonu "nové" vedle alb a obrázků';
+$lang['Deactivate all'] = 'Deaktivovat vše';
+$lang['Default photos order'] = 'Výchozí pořadí fotografií';
+$lang['Restore'] = 'Obnovit';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnovit výchozí konfiguraci. Přijdete o nastavení v pluginech!';
+$lang['Show menubar'] = 'Zobrazit menu';
+$lang['Thumbnails generation in progress...'] = 'Generování náhledů v přípravě...';
+$lang['Photos generation in progress...'] = 'Generování fotek v přípravě...';
+$lang['%s photos have been regenerated'] = '%s fotek bylo regenerováno';
+$lang['%s photos can not be regenerated'] = '%s fotek nemohlo být regenerováno';
+$lang['Updates'] = 'Aktualizace';
+$lang['Update in progress... Please wait.'] = 'Probíhá aktualizace... Prosím čekejte.';
+$lang['Ignore this update'] = 'Ignoruj tuto aktualizaci';
+$lang['Reset ignored updates'] = 'Resetuj ignorované aktualizace';
+$lang['Update All'] = 'Aktualizuj vše';
+$lang['ERROR'] = 'CHYBA';
+$lang['Update Complete'] = 'Aktualizace kompletní';
+$lang['Piwigo Update'] = 'Piwigo Aktualizace';
+$lang['Extensions Update'] = 'Aktualizace Doplňků';
+$lang['All extensions are up to date.'] = 'Veškerá rozšíření jsou aktuální.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Následující pluginy nemusejí být kompatibilní s novou verzí Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Následující šablony vzhledu nemusejí být kompatibilní s novou verzí Piwigo:';
+$lang['I decide to update anyway'] = 'Rozhodl jsem se aktualizovat';
+$lang['Update to Piwigo %s'] = 'Aktualizace na Piwigo %s';
+$lang['Two updates are available'] = 'dvě aktualizace jsou k dispozici';
+$lang['This is a minor update, with only bug corrections.'] = 'Toto je minoritní aktualizace, opravuje zejména chyby.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Toto je velká aktualizace, s <a href="%s">novými funkcemi</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Některé šablony vzhledu a pluginy nemusejí být dostupné.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Můžete aktualizovat na vyšší verzi Piwigo %s přímo, bez nutnosti upgradu na Piwigo %s (doporučeno).';
+$lang['Save Template Directory'] = 'Uložit složku šablony';
+$lang['Dump Database'] = 'Záloha (Dump) Databáze';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Ponech data historie (Upozornění: limit paměti serveru může být překročen)';
+$lang['Unable to dump database.'] = 'Nelze zálohovat databázi.';
+$lang['Some upgrades are available for extensions.'] = 'Pro některý z doplňků je připravena aktualizace.';
+$lang['Ignore All'] = 'Ignoruj Vše';
+$lang['Crop'] = 'Ořez';
+$lang['Width'] = 'Šířka';
+$lang['Height'] = 'Výška';
+$lang['Follow Orientation'] = 'Postupuj podle orientace';
+$lang['Graphics Library'] = 'Grafická knihovna';
+$lang['Average rate'] = 'Průměrné hodnocení';
+$lang['Rate'] = 'Hodnocení';
+$lang['Add a criteria'] = 'Přidání kritéria';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nemužete definovat výchozí pořadí fotografií, protože máte nadefinováno vlastní nastavení v konfiguraci';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Specifikovali jste <i>$conf[\'order_by\']</i> v konfiguračním souboru, tento parametr je zastaralý, prosím odstraňte ho nebo přejmenujte na <i>$conf[\'order_by_custom\']</i> !';
+$lang['Learn more'] = 'Zjistit více';
+$lang['... or '] = '... nebo ';
+$lang['Create'] = 'Vytvořit';
+$lang['Start Upload'] = 'Zahájit Upload';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Nyní používáte Flash uploader. Problémy? Zkuste <a href="%s">Browser uploader</a> místo něj.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Používáte Browser uploader. Můžete zkusit <a href="%s">Flash uploader</a> místo něj.';
+$lang['Maximum file size: %sB.'] = 'Maximální velikost souboru: %sB.';
+$lang['Allowed file types: %s.'] = 'Povolené typy souborů: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Aproximované max. rozlišení: %dM pixelů (to je %dx%d pixelů).';
+$lang['Manage Permissions'] = 'Nastavení oprávnění';
+$lang['Photo %s of %s'] = 'Fotografií %s ze %s';
+$lang['show details'] = 'zobrazit detaily';
+$lang['hide details'] = 'skrýt detaily';
+$lang['Merge tags'] = 'Sloučit štítky';
+$lang['Select the destination tag'] = 'Vyberte cílový štítek';
+$lang['(this tag will be deleted)'] = '(tento štítek bude vymazán)';
+$lang['Confirm merge'] = 'Potvrdit sloučení';
+$lang['Merge selected tags'] = 'Sloučit vybrané štítky';
+$lang['No destination tag selected'] = 'Cílový štítek nebyl vybrán';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Štítky <em>%s</em> sloučeny do štítku <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Vyberte alespoň 2 štítky pro sloučení';
+$lang['Select an album'] = 'Vyberte album';
+$lang['An error has occured during upgrade.'] = 'Během aktualizace došlo k chybě.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'K chybě došlo během rozbalování. Prosím ověřte oprávnění na soubory Vaší instalace Piwigo.<br><a href="%s">Pro zobrazení chybového logu klikněte zde</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nemùže získat novou verzi ze serveru';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Jako výchozí, Piwigo vytvoří nový rozměr(upraví rozlišení) vašich nahrávaných fotografií v HD rozlišení.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Pokud nemáte obrázek v HD rozlišení a pokud stávající webové rozlišení je větší než nastavené rozsahy dimenzí obrázku, Piwigo fotku vezme jako HD a vytvoří zmenšenou verzi obrázku pro web z originálu.';
+$lang['Zoom'] = 'Přiblížit';
+$lang['Add to caddie'] = 'Přidat do košíku';
+$lang['%s has been successfully updated.'] = '%s: úspěšně aktualizováno.';
+$lang['Add tags'] = 'Přidat štítky';
+$lang['Last import'] = 'Poslední import';
+$lang['Photo name'] = 'Název fotografie';
+$lang['Predefined filter'] = 'Předdefinovaný filtr';
+$lang['With no album'] = 'Bez alba';
+$lang['With no tag'] = 'Bez štítku';
+$lang['With no virtual album'] = 'Bez virtuálního alba';
+$lang['Activate comments'] = 'Aktivovat komentáře';
+$lang['Default comments order'] = 'Výchozí řazení komentářů';
+$lang['Send connection settings by email'] = 'Zaslat přístupové údaje emailem';
+$lang['The original image quality must be a number between %d and %d'] = 'Původní kvalita obrázku musí být mezi %d a %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Výška originálu musí být mezi %d a %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Šířka originálu musí být mezi %d a %d';
+$lang['Resize after upload'] = 'Změnit velikost po uploadu';
+$lang['Original Size'] = 'Původní velikost';
+$lang['A locked gallery is only visible to administrators'] = 'Zamčenou galerii může zobrazovat pouze administrátor';
+$lang['Unlock gallery'] = 'Odemknout galerii';
+$lang['Gallery unlocked'] = 'Galerie je odemčena';
+$lang['Notify administrators when a comment is'] = 'Upozornit administrátora na komentář když je';
+$lang['modified'] = 'modifikován';
+$lang['pending validation'] = 'čekající na ověření';
+$lang['Save visits in history for'] = 'Uložit historii návštěv pro';
+$lang['simple visitors'] = 'jednotlivé návštěvy';
+$lang['registered users'] = 'registrované uživatele';
+$lang['administrators'] = 'administrátory';
+$lang['This album contains %d photos, added on %s.'] = 'Album obsahuje %d fotek, přidaných v %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Album obsahuje %d fotky přidané mezi %s a %s.';
+$lang['This album contains no photo.'] = 'Album neobsahuje žádné fotografie.';
+$lang['Not cropped correctly?'] = 'Je ořez v pořádku?';
+$lang['Center of interest'] = 'Střed zájmu';
+$lang['Move to album'] = 'Přesunout do alba';
+$lang['You can activate only one mobile theme.'] = 'Jde aktivovat pouze v mobilním zobrazení.';
+$lang['Automatic sort order'] = 'Automatické pořadí';
+$lang['apply automatic sort order'] = 'Použij automatické pořadí';
+$lang['Save manual order'] = 'Ulož ruční uspořádání';
+$lang['cancel manual order'] = 'zruš ruční uspořádání';
+$lang['Cancel'] = 'Zruš';
+$lang['List'] = 'Přehled';
+$lang['Web Form'] = 'Webový Formulář';
+$lang['Applications'] = 'Aplikace';
+$lang['Available versions for'] = 'Dostupné verze pro';
+$lang['Available on'] = 'K dispozici na';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pro iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo pro iOS</em> aplikace vám dává možnost se připojit do galerie Piwigo z vašeho iPhone, iPad nebo iPod Touch, vytvořit nějaké alba a nahrávat více fotografií najednou.';
+$lang['Piwigo for Android'] = 'Piwigo pro Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo pro Android</em> aplikace vám dává možnost se připojit do galerie Piwigo z vašeho Android telefonu nebo tabletu, vytvořit nějaké alba a nahrávat více fotografií najednou.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publikační plugin pro Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je fotografický software určený ke správě velkého množství digitálních fotografií a postprodukčních prací.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publikační Plug-in umožňuje export a synchronizaci fotek z Lightroom přímo do vaší Piwigo fotogalerie.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publikační plugin pro Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je open source digitalní foto organizér pro Linux. Je to základní foto manažer v  distribucích Ubuntu a Fedora.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na linuxu, jednoduše nainstalujte Shotwell s pomocí vašeho správce balíčků a potom aktivujte Piwigo publikační volbu.';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publikační plugin pro digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je pokročilý správce fotografií free software pro Linux, Windows, and MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je určen pro fotografy, kteří chtějí prohlížet, spravovat, upravovat, zlepšovat, uspořádávat, označovat a sdílet fotografie.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Chcete-li exportovat své fotografie z Digikam do Piwigo, jednoduše nainstalujte digiKam a Kipi-plugin.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo exportní plugin pro iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je výchozí správce fotografií na MacOSX. Exportní Piwigo plugin vám umožní vytvořit nová alba a exportovat své fotografie přímo z iPhoto do fotogalerie Piwigo.';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo exportní plugin pro Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je výkonný nástroj pro zdokonalení snímků a správu obrovských knihoven na Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je navržen pro profesionální fotografy s jednoduchostí iPhoto.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo exportní plugin umožňuje vytvářet alba a exportovat fotografie.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient pro Android) je open source (GPL v3) Piwigo klient pro Android platformu.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkce obsahuje prohlížení galerie, tvorbu alb a upload fotografií.';
+$lang['Generate multiple size images'] = 'Generovat více velikostí obrázků';
+$lang['Delete multiple size images'] = 'Odstranění více velikostí obrázků';
+$lang['any visitor can see this album'] = 'každý návštěvník může prohlížet toto album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'návštěvník se musí přihlásit a mít přidělena vhodná oprávnění pro prohlížení tohoto album';
+$lang['Groups and users'] = 'Skupiny a uživatelé';
+$lang['Permission granted for groups'] = 'Oprávnění udělená pro skupiny';
+$lang['Select groups...'] = 'Výběr skupiny...';
+$lang['There is no group in this gallery.'] = 'Nemáte žádnou skupinu v této galerii.';
+$lang['Permission granted for users'] = 'Oprávnění udělená pro uživatele';
+$lang['Select users...'] = 'Výběr uživatelů...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uživatelé mají automatické oprávnění, protože patří do vybrané skupiny.';
+$lang['include photos with lower privacy level'] = 'zahrnuje fotky s nižší úrovní soukromí ';
+$lang['custom'] = 'Vlastní';
+$lang['No group is permitted to see this private album'] = 'Žádná ze skupin nemá oprávnění prohlížet toto soukromé album';
+$lang['Permission management'] = 'Správa pravidel přístupu';
+$lang['add a new watermark'] = 'Přidej vodoznak';
+$lang['Apply watermark if height is bigger than'] = 'Vlož vodoznak pokud je výška delší než';
+$lang['Apply watermark if width is bigger than'] = 'Vlož vodoznak pokud je šířka delší než';
+$lang['bottom left corner'] = 'Levý spodní roh';
+$lang['bottom right corner'] = 'Pravý spodní roh';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Podle púuvodního nastavení je střed zájmu umístěn doprostřed fotografie.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pro fotografie s ořezem, jako třeba "čtverec", se Piwigo pokusí umístit střed zájmu do vysledného ořezu.';
+$lang['middle'] = 'střední';
+$lang['Opacity'] = 'Průhlednost';
+$lang['Photo sizes with crop'] = 'Fotografie s ořezem';
+$lang['Select a file'] = 'Vyber soubor';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vyber myší zónu nového středu zájmu';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Střed zájmu je nejdůležitější část(zóna) fotky';
+$lang['top left corner'] = 'Levý horní roh';
+$lang['top right corner'] = 'Pravý horní roh';
+$lang['X Position'] = 'pozice X';
+$lang['X Repeat'] = 'X opakování';
+$lang['Y Position'] = 'pozice Y';
+$lang['Multiple Size'] = 'Více velikostí';
+$lang['%d day'] = '%d den';
+$lang['%d days'] = '%d dní';
+$lang['%d hour'] = '%d hodina';
+$lang['%d hours'] = '%d hodin';
+$lang['%d minute'] = '%d minuta';
+$lang['%d minutes'] = '%d minut';
+$lang['%d month'] = '%d měsíc';
+$lang['%d months'] = '%d měsíců';
+$lang['%d second'] = '%d vteřin';
+$lang['%d seconds'] = '%d vteřin';
+$lang['%d year'] = '%d rok';
+$lang['%d years'] = '%d let';
+$lang['%s ago'] = 'před %s';
+$lang['%s in the future'] = '%s v budoucnosti';
+$lang['Added by %s'] = 'Přidal %s';
+$lang['Numeric identifier : %d'] = 'Číselný identifikátor: %d';
+$lang['Original file : %s'] = 'Původní soubor: %s';
+$lang['Posted %s on %s'] = 'Posláno %s na %s';
+$lang['Rated %d times, score : %.2f'] = 'Hodnoceno %d-krát, hodnocení: %.2f';
+$lang['Sharpen'] = 'Doostřit';
+$lang['Visited %d times'] = 'Navštíveno %d-krát';
+$lang['Watermark'] = 'Vodoznak';
+$lang['%d week'] = '%d týden';
+$lang['%d weeks'] = '%d týdny';
+$lang['Edit photo'] = 'Upravit foto';
+$lang['create a new site'] = 'vytvoř nové místo';
+$lang['No order field selected'] = 'Není vybráno pole řazení';
+$lang['Duplicate selected tags'] = 'Duplikuj vybrané štítky';
+$lang['Name of the duplicate'] = 'Název duplikátu';
+$lang['Source tag'] = 'Zdrojový štítek';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Štítek "%s" je nyní duplikátem "%s"';
+$lang['Landscape'] = 'Naležato';
+$lang['Manage photos'] = 'Spravovat fotografie';
+$lang['Minimum height'] = 'Minimální výška';
+$lang['Minimum width'] = 'Minimální šířka';
+$lang['Number of albums per page'] = 'Počet alb na stránku';
+$lang['Panorama'] = 'Panoráma';
+$lang['Portrait'] = 'Na výšku';
+$lang['View in gallery'] = 'Zobrazit v galerii';
+$lang['Ratio'] = 'Poměr';
+$lang['between %.2f and %.2f'] = 'mezi %.2f a %.2f';
+$lang['between %d and %d pixels'] = 'mezi %d a %d pixely';
+$lang['Duplicate'] = 'Duplikovat';
+$lang['Manage the members'] = 'Organizovat členy';
+$lang['Merge selected groups'] = 'Spojit vybrané skupiny';
+$lang['No group selected, no action possible.'] = 'Není vybrána žádná skupina, není možná řádná akce';
+$lang['No members to manage'] = 'Žádní členové k organizování';
+$lang['Please select at least two groups'] = 'Prosím vyberte nejméně dvě skupiny';
+$lang['Rename'] = 'Přejmenovat';
+$lang['This group will be set to default'] = 'Tato skupina bude použita jako defaultní';
+$lang['This group will be unset to default'] = 'Tato skupina nebude dále použita jako defaultní';
+$lang['Type here the name of the new group'] = 'Napište sem jméno nové skupiny';
+$lang['Purge user cache'] = 'Provést údržbu uživatelské mezipaměťi';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Rozměry obrázku budou zmenšeny na %dx%d pixelů.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Změna velikosti po uploadu není aktivní, kvůli používání GD jako grafické knihovny.';
+$lang['Select at least one tag'] = 'vyberte alespoň jeden tag';
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/common.lang.php	(revision 25596)
@@ -0,0 +1,426 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Česky [CZ]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=414
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Čeština';
+$lang_info['country'] = 'Česká Republika';
+$lang_info['charset'] = 'UTF-8';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'cz';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album aktualizováno';
+$lang['%d albums updated'] = '%d alba aktualizovány';
+$lang['%d comment to validate'] = '%d komentář k validaci';
+$lang['%d comments to validate'] = '%d komentářů k validaci';
+$lang['%d new comment'] = '%d nový komentář';
+$lang['%d new comments'] = '%d nových komentářů';
+$lang['%d comment'] = '%d komentář';
+$lang['%d comments'] = '%d komentářů';
+$lang['%d hit'] = '%d zobrazení';
+$lang['%d hits'] = '%d zobrazení';
+$lang['%d new photo'] = '%d nový objekt';
+$lang['%d new photos'] = '%d nových objektů';
+$lang['%d new user'] = '%d nový uživatel';
+$lang['%d new users'] = '%d nových uživatelů';
+$lang['About'] = 'O aplikaci';
+$lang['All tags'] = 'Všechny štítky';
+$lang['Any tag'] = 'Kterýkoliv štítek';
+$lang['At least one listed rule must be satisfied.'] = 'Alespoň jedno pravidlo ze seznamu musí být splněno.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Alba';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Zavřít okno';
+$lang['Complete RSS feed (photos, comments)'] = 'Kompletní RSS vlákno (fotografie, komentáře)';
+$lang['Confirm Password'] = 'Potvrdit heslo';
+$lang['Connection settings'] = 'Nastavení přihlašovacích údajů';
+$lang['Login'] = 'Přihlásit se';
+$lang['Contact webmaster'] = 'Kontaktovat administrátora';
+$lang['Create a new account'] = 'Vytvořit nový účet';
+$lang['Created on'] = 'Vytvořeno';
+$lang['Creation date'] = 'Datum vytvoření';
+$lang['Current password is wrong'] = 'Chybně zadané heslo';
+$lang['Dimensions'] = 'Rozměry';
+$lang['Display'] = 'Zobrazit';
+$lang['Each listed rule must be satisfied.'] = 'Všechna pravidla ze seznamu musí být splněna.';
+$lang['Email address is missing. Please specify an email address.'] = 'Chybí e-mailová adresa';
+$lang['Email address'] = 'E-mail';
+$lang['Enter your personnal informations'] = 'Vyplňte svá osobní data';
+$lang['Error sending email'] = 'Chyba při odesílání zprávy';
+$lang['File name'] = 'Název souboru';
+$lang['File'] = 'Soubor';
+$lang['Filesize'] = 'Velikost souboru';
+$lang['Filter and display'] = 'Zobrazit podle filtru';
+$lang['Filter'] = 'Filtr';
+$lang['Forgot your password?'] = 'Zapomenuté heslo?';
+$lang['Go through the gallery as a visitor'] = 'Procházet galerii jako host';
+$lang['Help'] = 'Nápověda';
+$lang['Identification'] = 'Identifikace';
+$lang['Photos only RSS feed'] = 'RSS vlákno jen s fotografiemi';
+$lang['Keyword'] = 'Klíčové slovo';
+$lang['Links'] = 'Odkazy';
+$lang['N/A'] = 'nezadáno';
+$lang['New on %s'] = 'Nový na %s';
+$lang['Notification'] = 'RSS vlákno';
+$lang['Number of items'] = 'Počet položek';
+$lang['Original dimensions'] = 'Původní rozměry';
+$lang['Password forgotten'] = 'Zapomenuté heslo';
+$lang['Password'] = 'Heslo';
+$lang['Post date'] = 'Datum zveřejnění';
+$lang['Posted on'] = 'Odesláno';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Rychlé přihlášení';
+$lang['RSS feed'] = 'RSS čtečka';
+$lang['Register'] = 'Zaregistrovat se';
+$lang['Registration'] = 'Registrace';
+$lang['Related tags'] = 'Související štítky';
+$lang['Reset'] = 'Vynulovat';
+$lang['Retrieve password'] = 'Obnovit heslo';
+$lang['Search rules'] = 'Podmínky pro vyhledávání';
+$lang['Search tags'] = 'Hledat podle štítků';
+$lang['Search'] = 'Vyhledat';
+$lang['display available tags'] = 'Ukázat dostupné štítky';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Řadit podle';
+$lang['Sort order'] = 'Směr řazení';
+$lang['Tag'] = 'Štítek';
+$lang['Tags'] = 'Štítky';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS zdroj obsahuje upozornění na nové události z tohoto webu: nové fotky, aktualizované galerie, nové komentáře. K použití se čtečkami RSS kanálů.';
+$lang['Unknown feed identifier'] = 'Neznámý identifikátor vlákna';
+$lang['User comments'] = 'Komentáře uživatelů';
+$lang['Username'] = 'Uživatelské jméno';
+$lang['Visits'] = 'Návštěv';
+$lang['Webmaster'] = 'Administrátor';
+$lang['Week %d'] = 'Týden %d';
+$lang['About Piwigo'] = 'O aplikaci Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Nemáte oprávnění k přístupu na požadovanou stránku';
+$lang['add this photo to your favorites'] = 'Přidat tuto fotografii k oblíbeným';
+$lang['Administration'] = 'Administrace';
+$lang['all'] = 'vše';
+$lang['ascending'] = 'vzestupně';
+$lang['author(s) : %s'] = 'autor : %s';
+$lang['Expand all albums'] = 'Rozbalit všechny alba';
+$lang['posted after %s (%s)'] = 'vloženo po %s (%s)';
+$lang['posted before %s (%s)'] = 'vloženo před %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'vloženo mezi %s (%s) a %s (%s)';
+$lang['posted on %s'] = 'vloženo %s';
+$lang['Best rated'] = 'Nejlépe hodnocené';
+$lang['display best rated photos'] = 'Zobrazit nejlépe hodnocené položky';
+$lang['Calendar'] = 'Kalendář';
+$lang['All'] = 'Vše';
+$lang['display each day with photos, month per month'] = 'Fotografie podle dnů, měsíc po měsíci';
+$lang['View'] = 'Zobrazit';
+$lang['chronology_monthly_calendar'] = 'Kalendář na měsíc';
+$lang['chronology_monthly_list'] = 'Seznam na měsíc';
+$lang['chronology_weekly_list'] = 'Týdenní seznam';
+$lang['Click here if your browser does not automatically forward you'] = 'Pokud neproběhlo automatické přesměrování, klikněte sem';
+$lang['comment date'] = 'Datum vložení komentáře';
+$lang['Comment'] = 'Komentář';
+$lang['Your comment has been registered'] = 'Váš komentář byl zaregistrován';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Ochrana proti zahlcení : prosím počkejte chvíli před vložením nového komentáře';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Váš komentář nebyl vložen, protože neprošel schválením';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Váš komentář nebude zobrazen dokud jej neschválí administrátor.';
+$lang['This login is already used by another user'] = 'Přihlašovací jméno je již používáno jiným uživatelem';
+$lang['Comments'] = 'Komentáře';
+$lang['Add a comment'] = 'Vložit komentář';
+$lang['created after %s (%s)'] = 'vytvořeno po %s (%s)';
+$lang['created before %s (%s)'] = 'vytvořeno před %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'vytvořeno mezi %s (%s) a %s (%s)';
+$lang['created on %s'] = 'vytvořeno %s';
+$lang['Customize'] = 'Upravit';
+$lang['Your Gallery Customization'] = 'Přizpůsobit galerii ';
+$lang['day'][0] = 'Neděle';
+$lang['day'][1] = 'Pondělí';
+$lang['day'][2] = 'Úterý';
+$lang['day'][3] = 'Středa';
+$lang['day'][4] = 'Čtvrtek';
+$lang['day'][5] = 'Pátek';
+$lang['day'][6] = 'Sobota';
+$lang['Default'] = 'Výchozí';
+$lang['delete this photo from your favorites'] = 'Odstranit fotografii z oblíbených';
+$lang['Delete'] = 'Smazat';
+$lang['descending'] = 'sestupně';
+$lang['Download'] = 'Stáhnout';
+$lang['Download this file'] = 'stáhnout tento soubor';
+$lang['edit'] = 'Editovat';
+$lang['wrong date'] = 'Chybné datum';
+$lang['excluded'] = 'Vyjmuto z výběru';
+$lang['Your favorites'] = 'Oblíbené';
+$lang['display your favorites photos'] = 'Zobrazí Vaše oblíbené fotografie';
+$lang['Favorites'] = 'Oblíbené';
+$lang['First'] = 'První';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galerie je uzamčena z důvodu administrace. Zkuste to prosím později.';
+$lang['Page generated in'] = 'Stránka vytvořena ';
+$lang['guest'] = 'host';
+$lang['Hello'] = 'Přihlášen jako';
+$lang['available for administrators only'] = 'Přístupné pouze adminitrátorům';
+$lang['display this album'] = 'zobrazí fotky v rootu tohoto alba';
+$lang['display last user comments'] = 'Zobrazit nejnovější komentáře uživatelů';
+$lang['customize the appareance of the gallery'] = 'Přizpůsobit vzhled galerie';
+$lang['search'] = 'Hledat';
+$lang['Home'] = 'Úvodní stránka';
+$lang['Identification'] = 'Identifikace';
+$lang['in this album'] = 'v tomto albu';
+$lang['in %d sub-album'] = 'v %d podalbu';
+$lang['in %d sub-albums'] = 'v %d podalbech';
+$lang['included'] = 'včetně';
+$lang['Invalid password!'] = 'Špatné heslo!';
+$lang['Language'] = 'Jazyk';
+$lang['last %d days'] = 'posledních %d dnů';
+$lang['Last'] = 'Poslední';
+$lang['Logout'] = 'Odhlásit se';
+$lang['obligatory'] = 'povinné';
+$lang['display a calendar by creation date'] = 'Zobrazit v kalendáři podle datumu vytvoření';
+$lang['display all photos in all sub-albums'] = 'zobrazit všechny prvky ve všech albech a podalbech';
+$lang['return to normal view mode'] = 'Návrat do normálního zobrazení';
+$lang['display a calendar by posted date'] = 'Zobrazit v kalendáři podle data vložení';
+$lang['month'][10] = 'Říjen';
+$lang['month'][11] = 'Listopad';
+$lang['month'][12] = 'Prosinec';
+$lang['month'][1] = 'Leden';
+$lang['month'][2] = 'Únor';
+$lang['month'][3] = 'Březen';
+$lang['month'][4] = 'Duben';
+$lang['month'][5] = 'Květen';
+$lang['month'][6] = 'Červen';
+$lang['month'][7] = 'Červenec';
+$lang['month'][8] = 'Srpen';
+$lang['month'][9] = 'Září';
+$lang['Most visited'] = 'Nejčastěji zobrazované';
+$lang['display most visited photos'] = 'Nejčastěji zobrazované fotografie';
+$lang['The number of photos per page must be a not null scalar'] = 'Počet fotografií v stránce musí být číslo větší než 0.';
+$lang['Number of photos per page'] = 'Počet fotografií v stránce';
+$lang['Unknown identifier'] = 'Neznámý identifikátor';
+$lang['New password'] = 'Nové heslo';
+$lang['Rate this photo'] = 'Ohodnotit tuto fotografii';
+$lang['Next'] = 'Následující';
+$lang['no rate'] = 'bez hodnocení';
+$lang['Photos posted within the last %d day.'] = 'Fotografie vložené během posledního %d dne.';
+$lang['Photos posted within the last %d days.'] = 'Fotografie vložené během posledních %d dnů.';
+$lang['password updated'] = 'heslo aktualizováno';
+$lang['Recent period must be a positive integer value'] = 'Aktuální interval musí být číslo větší než 0.';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'fotografie';
+$lang['Click on the photo to see it in high definition'] = 'Pro zobrazení ve vyšším rozlišení klikněte na fotografii';
+$lang['Show file metadata'] = 'Zobrazit metadata';
+$lang['Powered by'] = 'Publikováno pomocí aplikace';
+$lang['Preferences'] = 'Nastavení';
+$lang['Previous'] = 'Předchozí';
+$lang['Random photos'] = 'Náhodný výběr';
+$lang['display a set of random photos'] = 'Zobrazit sadu fotografií podle náhodného výběru';
+$lang['Recent albums'] = 'Poslední alba';
+$lang['display recently updated albums'] = 'zobraz poslední aktualizovaná alba';
+$lang['Recent period'] = 'Doba, po kterou jsou fotografie zobrazeny jako nově přidané';
+$lang['Recent photos'] = 'Nové fotografie';
+$lang['display most recent photos'] = 'Zobrazit nově přidané fotografie';
+$lang['Redirection...'] = 'Přesměrování...';
+$lang['Please, enter a login'] = 'Zadejte prosím přihlašovací údaje';
+$lang['login mustn\'t end with a space character'] = 'uživatelské jméno nesmí končit mezerou';
+$lang['login mustn\'t start with a space character'] = 'uživatelské jméno nesmí začínat mezerou';
+$lang['this login is already used'] = 'tyto přihlašovací údaje už jsou používány';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'E-mail musí být ve formátu xxx@yyy.eee (například : novak@seznam.cz)';
+$lang['Auto login'] = 'Automatické přihlášení';
+$lang['remove this tag from the list'] = 'odstranit tento štítek ze seznamu';
+$lang['representative'] = 'Reprezentant';
+$lang['Search for Author'] = 'Hledat autora';
+$lang['Search in albums'] = 'Hledat v albech';
+$lang['Search by date'] = 'Hledat podle data přidání';
+$lang['Date'] = 'Od';
+$lang['End-Date'] = 'Do';
+$lang['Kind of date'] = 'Datum:';
+$lang['Search for words'] = 'Hledat slova';
+$lang['Search for all terms'] = 'Hledat uvedené výrazy ';
+$lang['Search for any term'] = 'Hledat všechny výrazy';
+$lang['Empty query. No criteria has been entered.'] = 'Neúplný dotaz. Nebyly zadány žádné podmínky pro vyhledávání.';
+$lang['Search results'] = 'Výsledky vyhledávání';
+$lang['Search in sub-albums'] = 'Hledat v podalbech';
+$lang['searched words : %s'] = 'hledat slova : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'nastavit jako zástupce alba';
+$lang['Show number of comments'] = 'Ukázat počet komentářů';
+$lang['Show number of hits'] = 'Ukázat počet zobrazení';
+$lang['slideshow'] = 'Automatické přehrávání';
+$lang['stop the slideshow'] = 'zastavit automatické přehrávání';
+$lang['Specials'] = 'Zobrazit';
+$lang['SQL queries in'] = 'SQL dotazů během';
+$lang['display only recently posted photos'] = 'Zobrazí pouze nově vložené fotografie';
+$lang['return to the display of all photos'] = 'Návrat ke zobrazení všech fotografií';
+$lang['the beginning'] = 'začátku';
+$lang['Thumbnails'] = 'Náhledy';
+$lang['Menu'] = 'Další funkce';
+$lang['A comment on your site'] = 'Komentář k Vašim stránkám';
+$lang['today'] = 'dnes';
+$lang['Update your rating'] = 'Aktualizovat hodnocení';
+$lang['the username must be given'] = 'Je nutné zadat uživatelské jméno';
+$lang['useful when password forgotten'] = 'užitečné při zapomenutí hesla';
+$lang['Quick search'] = 'Rychlé hledání';
+$lang['Connected user: %s'] = 'Připojený uživatel: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Prohlížeč: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Komentář: %s';
+$lang['Comment by %s'] = 'Komentář od %s';
+$lang['User: %s'] = 'Uživatel: %s';
+$lang['Email: %s'] = 'E-mail: %s';
+$lang['Admin: %s'] = 'Administrátor: %s';
+$lang['Registration of %s'] = 'Registrace %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Špatný stav pro uživatele "host", bude použit výchozí stav. Prosím informujte administrátora.';
+$lang['this email address is already in use'] = 'Tato e-mailová adresa je již používána';
+$lang['Album results for'] = 'Alba výsledky pro';
+$lang['Tag results for'] = 'Výsledky pro štítky';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Spustit prezentaci';
+$lang['Pause of slideshow'] = 'Zastavit prezentaci';
+$lang['Repeat the slideshow'] = 'Opakovat prezentaci';
+$lang['Not repeat the slideshow'] = 'Neopakovat prezentaci';
+$lang['Reduce diaporama speed'] = 'Zpomalit';
+$lang['Accelerate diaporama speed'] = 'Zrychlit';
+$lang['Submit'] = 'Poslat';
+$lang['Yes'] = 'Ano';
+$lang['No'] = 'Ne';
+$lang['%d photo'] = '%d fotografie';
+$lang['%d photos'] = '%d fotografií';
+$lang['%d photo is also linked to current tags'] = '%d fotografie je také spojena s aktuálními štítky';
+$lang['%d photos are also linked to current tags'] = '%d fotografií je také spojeno s aktuálními štítky';
+$lang['display photos linked to this tag'] = 'Ukázat pouze fotografie spojené s aktuálním štítkem';
+$lang['photos posted during the last %d days'] = 'fotografie vložené za posledních %d dnů';
+$lang['Piwigo Help'] = 'Nápověda Piwigo';
+$lang['Rank'] = 'Hodnotit';
+$lang['group by letters'] = 'Setřídit podle abecedy';
+$lang['letters'] = 'Roztřídit dle počátečního písmene';
+$lang['show tag cloud'] = 'Zobrazit shluk štítků';
+$lang['cloud'] = 'Shluk';
+$lang['Are you sure?'] = 'Jste si jistý?';
+$lang['Reset to default values'] = 'Obnovit výchozí hodnoty';
+$lang['delete all photos from your favorites'] = 'vymazat všechny obrázky z Vašich oblíbených';
+$lang['Sent by'] = 'Posláno';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies jsou buď blokovány, nebo nejsou povoleny ve Vašem prohlížeči. Musíte povolit cookies, aby bylo možné se přihlásit.';
+$lang['Edit a comment'] = 'Upravit komentář';
+$lang['(!) This comment requires validation'] = '(!) Tento komentář vyžaduje kontrolu';
+$lang['Welcome'] = 'Vítejte';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Vítejte ve Vaší Piwigo foto galerii!';
+$lang['... or browse your empty gallery'] = '... nebo prohlížejte Vaši prázdnou galerii';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... nebo prosím zrušte tuto zprávu, program najde způsob sám';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Vítejte %s, Vaše Piwigo foto galerie je prázdná!';
+$lang['I want to add photos'] = 'Chci přidat fotografie';
+$lang['Manage this user comment: %s'] = 'Spravujte tento uživatelský komentář: %s';
+$lang['This author modified following comment:'] = 'Tento autor upravil následující komentář:';
+$lang['This author removed the comment with id %d'] = 'Tento autor smazal komentář s identifikátorem %d';
+$lang['%d Kb'] = '%d KB';
+$lang['IP: %s'] = 'IP: %s';
+$lang['html tags are not allowed in login'] = 'html značky nejsou povoleny v loginu';
+$lang['%d rates'] = '%d ohodnocení';
+$lang['Rating score'] = 'Bodové hodnocení';
+$lang['Invalid username or email'] = 'Neplatné uživatelské jméno nebo email';
+$lang['Password reset is not allowed for this user'] = 'Obnovení hesla není pro tohoto uživatele povoleno';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Uživatel "%s" nemá email adresu, obnova hesla není možná';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Někdo se dožadoval aby bylo heslo resetováno pro tento uživatelský účet:';
+$lang['Username "%s" on gallery %s'] = 'Uživatel "%s" na galerii %s';
+$lang['To reset your password, visit the following address:'] = 'Pro obnovu hesla, navštivte tento odkaz:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Pokud jste si obnovu hesla nevyžádal, jedná se o chybu a tento email prostě ignorujte, nic se nestane.';
+$lang['Password Reset'] = 'Reset hesla';
+$lang['Check your email for the confirmation link'] = 'Zkontrolujte si email jestli už dorazil potvrzovací odkaz';
+$lang['Invalid key'] = 'Neplatný klíč';
+$lang['The passwords do not match'] = 'Hesla se neshodují';
+$lang['Your password has been reset'] = 'Vaše heslo bylo resetováno';
+$lang['Return to home page'] = 'Návrat na hlavní stránku';
+$lang['Please enter your username or email address.'] = 'Prosím, zadejte uživatelské jméno nebo emailovou adresu.';
+$lang['You will receive a link to create a new password via email.'] = 'Brzy obdržíte odkaz pro vytvoření nového hesla na váš e-mail.';
+$lang['Username or email'] = 'Uživatelské jméno nebo email';
+$lang['Change my password'] = 'Změnit heslo';
+$lang['Enter your new password below.'] = 'Zadejte vaše nové heslo níže.';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Edit'] = 'Edituj';
+$lang['Hello %s,'] = 'Vítejte %s,';
+$lang['Send my connection settings by email'] = 'Zaslat přístupové údaje emailem';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registrace proběhla úspěšně, Zanedlouho obdržíte email s přístupovými údaji. Vítejte!';
+$lang['Username modification'] = 'Změna uživatelského jména';
+$lang['Your username has been successfully changed to : %s'] = 'Vaše uživatelské jméno bylo úspěšně změněno na: %s';
+$lang['square'] = 'Čtverec';
+$lang['thumb'] = 'Náhled';
+$lang['small'] = 'S - Malé';
+$lang['medium'] = 'M -Střední';
+$lang['large'] = 'Velký';
+$lang['xlarge'] = 'Větší XL';
+$lang['xxlarge'] = 'Větší XXL';
+$lang['Original'] = 'Originál';
+$lang['Thank you for registering at %s!'] = 'Děkujeme za registraci na stránkách %s!';
+$lang['Here are your connection settings'] = 'Toto jsou vaše přístupové údaje';
+$lang['Password: %s'] = 'Heslo: %s';
+$lang['Username: %s'] = 'Uživatelské jméno: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Pokud myslíte, že jste tento mail obdržel omylem, kontaktujte nás na  %s';
+$lang['Show oldest comments first'] = 'Řadit od nejstarších komentářů';
+$lang['Show latest comments first'] = 'Řadit od nejnovějších komentářů';
+$lang['Photo sizes'] = 'Velikosti fotografií';
+$lang['View in'] = 'Zobrazení';
+$lang['Mobile'] = 'Mobilní';
+$lang['Desktop'] = 'Standardní';
+$lang['2small'] = 'XXS - nejmenší';
+$lang['xsmall'] = 'XS - extra malé';
+$lang['File name, A &rarr; Z'] = 'Název souboru, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Název souboru, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Nadpis fotky, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Nadpis fotky, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Datum vytvoření, nové &rarr; staré';
+$lang['Date created, old &rarr; new'] = 'Datum vytvoření, staré &rarr; nové';
+$lang['Date posted, new &rarr; old'] = 'Datum uveřejnění, nové &rarr; staré';
+$lang['Date posted, old &rarr; new'] = 'Datum uveřejnění, staré &rarr; nové';
+$lang['Rating score, high &rarr; low'] = 'Hodnocení, vyšší &rarr; nižší';
+$lang['Rating score, low &rarr; high'] = 'Hodnocení, nižší &rarr; vyšší';
+$lang['Visits, high &rarr; low'] = 'Zobrazení, vyšší &rarr; nižší';
+$lang['Visits, low &rarr; high'] = 'Zobrazení, nižší &rarr; vyšší';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Číselný ID, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Číselný ID, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Ruční výběr řazení';
+$lang['%d rate'] = '%d ohodnocení';
+$lang['Bad request'] = 'Špatný požadavek';
+$lang['Forbidden'] = 'Zakázáno';
+$lang['Page not found'] = 'Stránka nebyla nalezena';
+$lang['Permalink for album not found'] = 'Permanentní odkaz na almun nenalezen';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo se setkalo s nevratnou chybou';
+$lang['Requested album does not exist'] = 'Požadované album neexistuje';
+$lang['Requested tag does not exist'] = 'Požadovaná visačka neexistuje';
+$lang['Email address is mandatory'] = 'Emailová adresa je povinná';
+$lang['Username is mandatory'] = 'Uživatelské jméno je povinné';
+$lang['mandatory'] = 'povinné';
+$lang['Website'] = 'Webová stránka';
+$lang['Your website URL is invalid'] = 'URL vaší stránky je neplatné';
+$lang['Last Page'] = 'Poslední stránka';
+$lang['Go back to the album'] = 'Zpět do alba';
+$lang['First Page'] = 'První stránka';
+$lang['Email'] = 'E-mail';
+$lang['Password is missing. Please enter the password.'] = 'Chybí heslo. Prosím napište heslo.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Chybí potvrzení hesla. Prosím potvrďte vybrané heslo.';
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,115 @@
+<h2>Editovat kategorii</h2>
+
+<h3>Informace</h3>
+
+<ul>
+
+<li><strong>Adresář</strong>: přejmenování kategorie (virtuální kategorie se přejmenovává stejně jako fyzická).</li>
+
+<li><strong>popis</strong>: krátký text popisující obsah kategorie, který bude zobrazen vespod stránky s náhledy.</li>
+
+</ul>
+
+<h3>Přesun</h3>
+
+<p>Virtuální kategorii je možné přesunout. Přesunem kategorie se rozumí změna její rodičovské (nadřazené) kategorie.</p>
+
+<h3>Volby</h3>
+
+<ul>
+
+<li><strong>Druh přístupu</strong>: Povolení přístupu. nastavením kategorie jako soukromé, stávají se soukromé i všechny příslušné podkategorie. Nastavíte-li kategorii jako veřejnou, nastaví se jako veřejné i všechny kategorie nadřazené.</li>
+
+<li><strong>Zamknout</strong>: Kategorie včetně podkategorií bude zamčena z důvodu údržby.</li>
+
+<li><strong>Komentáře uživatelů</strong>: Umožní uživatelům přidávat komentáře k jednotlivým položkám kategorie.</li>
+
+<li><strong>Povolit nahrávání fotografií</strong>: Umožní uživatelům přidávat do kategorie obrázky. Tato volba je přístupná pouze pro fyzické (ne virtuální) kategorie.</li>
+
+</ul>
+
+<p>Tyto volby jsou také dostupné v nastavení "Vlastnosti" (záložky <span class="pwgScreen">Nahrát fotografie</span>, <span
+class="pwgScreen">Komentáře uživatelů</span>, <span class="pwgScreen">Zamknout</span>,
+<span class="pwgScreen">Veřejná/soukromá</span>, <span
+class="pwgScreen">Reprezentant</span> dostupné z <span
+class="pwgScreen">Administrace, Kategorie, Nastavení</span>).</p>
+
+<h3>Směr řazení</h3>
+
+<p>Použít výchozí řazení.</p>
+
+<p>Použít na podkategorie. Určí jestli toto řazení bude použito i na podkategorie.</p>
+
+<p>Vyberte specifická kriteria použitá pro řazení této kategorie.</p>
+<ul>
+<li><strong>Datum vytvoření</strong>: Datum pořízení obrázku</li>
+<li><strong>Datum zveřejnění</strong>: Datum provedení synchronizace.</li>
+<li><strong>Průměrné hodnocení (*)</strong>: průměr je ovlivněn návštěvnickým hodnocením.</li>
+<li><strong>Nejčastěji navštěvované (*)</strong>: Počet návštěv ovlivní řazení.</li>
+<li><strong>Název souboru</strong>: Jméno souboru určené v políčku informace.</li>
+<li><strong>Id</strong>: Vnitřní ID (Novější prvky mají vyšší hodnotu).</li>
+
+</ul>
+<p><strong>(*)</strong>Upozornění: Vlastní nastavení řazení určitě otestujte, ne vždy to může vypadat tak jak očekáváte.</p>
+
+
+<h3>Reprezentant</h3>
+
+<p>Reprezentant kategorie je náhled představující kategorii, zobrazený na hlavní stránce (<span class="pwgScreen">category.php</span>), v případě že kategorie obsahuje pouze podkategorie a nemá jiný obsah (stejně jako kořenová kategorie).</p>
+
+<p>Reprezentanta kategorie je možné nastavit čtyřmi způsoby:</p>
+
+<ul>
+
+<li><span class="pwgScreen">Stránka s obrázky</span>: Jedním tlačítkem u obrázku nastavíte reprezentanta kategorie. Tlačítko je dostupné pouze administrátorům.</li>
+
+<li><span class="pwgScreen">Úpravou informace u obrázku</span> v administraci. Dostupné v <span
+  class="pwgScreen">picture.php</span> nebo ve <span class="pwgScreen">správě dávkových úkonu (administrace/fotografie/košík)</span> v <em>módu jednotlivě</em>. Více v příslušné nápovědě.</li>
+
+<li><span class="pwgScreen">Administrace, Kategorie, Nastavení,
+  Reprezentant</span>. Viz nápověda v příslušném menu.</li>
+
+<li><span class="pwgScreen">Editace galerie</span> (zde v tomto nastavení).</li>
+
+</ul>
+
+<p>Volba reprezentanta záleží na
+<code>allow_random_representative</code> konfiguračním parametru (v souboru <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Výchozí hodnota (<code>allow_random_representative</code> je nastavena na "false"),
+každá kategorie obsahující alespoň jeden prvek má nastaveného fixního reprezentanta. Reprezentant je náhodně zvolen (jednou při vytvoření kategorie), další změna nastane pouze na vyžádání administrátorem. Pokud reprezentant nevyhovuje,
+můžete použít tlačítko <strong>Najít reprezentativní obrázek pomocí náhodného výběru</strong>.</p>
+
+<p>Pokud je konfigurační parametr <code>allow_random_representative</code> nastaven na "true", Kategorie nemusí obsahovat fixního reprezentanta. Stačí použít tlačítko <strong>Smazat reprezentanta</strong>.</p>
+
+<p>Jestliže kategorie obsahuje pouze podkategorie a žádný jiný obsah, může být reprezentována jakýmkoliv prvkem pomocí nastavení<span class="pwgScreen">Upravit informace o obrázku</span>. Jediná volba v tomto nastavení je tlačítko <strong>Smazat reprezentanta</strong>.</p>
+
+<h3>Napojit všechny položky na novou kategorii</h3>
+
+<ul>
+
+<li><strong>Název virtuální kategorie</strong>: jméno nově vytvořené virtuální kategorie,
+všechny obrázky aktuální kategorie budou přiřazeny do kategorie nově vzniklé.</li>
+
+<li><strong>Rodičovská kategorie</strong>: umístění nové kategorie. Prázdný výběr umístí novou kategorii do kořenové kategorie. </li>
+
+</ul>
+
+<h3>Napojit všechny položky na některé existující kategorie</h3>
+
+<ul>
+
+<li><strong>Kategorie</strong>: Vyberte cílovou kategorii.</li>
+
+</ul>
+
+<h3>Poslat informační e-mail uživatelům skupiny</h3>
+
+<ul>
+
+<li><strong>Skupina</strong>: skupina adresátů</li>
+
+<li><strong>Obsah e-mailu</strong>: Libovolný text e-mailu k odeslání.</li>
+
+</ul> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Přesun virtuálních kategorií</h2>
+
+<p>Novou rodičovskou kategorii mohou mít jen kategorie virtuální.</p>
+
+<h3>Virtuální kategorie k přesunu</h3>
+
+<p>Vyberte jednu nebo vice kategorií které chcete přesunout.
+Pokud je list prázdný, pravděpodobně zatím nebyla žádná virtuální kategorie vytvořena.</p>
+
+<h3>Nová rodičovská kategorie</h3>
+
+<p>Vyberte novou rodičovskou kategorii (virtuální nebo fyzickou).
+Pokud nevyberete žádnou rodičovskou kategorii bude virtuální kategorie přesunuta jako kořenová.
+Kategorii nelze přesunout sama do sebe případně do vlastních podkategorií.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/cat_options.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Vlastnosti kategorií</h2>
+
+<p>Zde je možno nastavovat vlastnosti více kategorií najednou.</p>
+
+<dl>
+
+<dt>Nahrát fotografie</dt>
+<dd>Učiní kategorii zapisovatelnou jejími návštěvníky. Volba je dostupná pouze pro fyzické kategorie.</dd>
+
+<dt>Komentáře uživatelů</dt>
+<dd>Umožní uživatelům zanechávat komentáře v určených kategoriích.
+Vyberte kategorie kde má být možno zanechávat komentáře.
+Komentář k obrázku je možné přidávat pokud je zařazen alespoň v jedné komentovatelné kategorii.</dd>
+
+<dt>Zamknout</dt>
+<dd>Zvolené kategorie budou dočasně pro údržbu nepřístupné. Pokud zamknete kategorii, budou zamčené i všechny její podkategorie. Pokud odemknete kategorii, odemknou se i všechny její nadřazené kategorie.</dd>
+
+<dt>Veřejná / soukromá</dt>
+<dd>Autorizovaný přístup je možný pouze do soukromých kategorií. Do soukromé kategorie je třeba nastavit přístupová práva uživateli nebo celé skupině uživatelů. Nastavením kategorie jako soukromé, stanou se soukromými a její podkategorie. Nastavením kategorie jako veřejné, budou jako veřejné nastaveny i všechny kategorie nadřazené.</dd>
+
+<dt>Reprezentativní</dt>
+<dd>Tato volba je přístupná pouze pokud je nastaveno
+<code>allow_random_representative</code> (v souboru <span
+  class="filename">include/config_defaults.inc.php</span>) jako
+<em>true</em>. Každá kategorie může být reprezentována náhodným obrázkem nebo obrázkem vámi určeným.</dd>
+
+</dl> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Nastavení oprávnění pro alba</h2>
+
+<p>Tyto nastavení jsou dostupné pouze pro privátní alba (galerie). Vyberte skupinu, které chcete umožnit/odebrat přístup do daného alba.</p>
+
+<h3>Skupiny</h3>
+
+<p>Prostou změnou oprávněné skupiny uživatelů můžete povolovat nebo zakazovat přístup do alba. Uživatel příslušný do dané skupiny automaticky získá přístupová práva nastavená pro jeho skupinu.</p>
+
+<h3>Uživatele</h3>
+
+<p>Přístup do alba je rovněž možno povolit/zakázat jednotlivým uživatelům nezávisle na skupině do které jsou zařazeni.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/configuration.html	(revision 25596)
@@ -0,0 +1,104 @@
+<h2>Konfigurace</h2>
+
+<p>Na této stránce lze provádět základní nastavení. Výběr nastavení by měl stačit většině správců. Další nastavení naleznete v souboru <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Stránka je rozdělena do několika záložek seskupujících jednotlivá nastavení podle typu.</p>
+
+
+<h3>Hlavní</h3>
+<ul>
+<li><strong>Název galerie</strong>: používá se v RSS vláknech emailových upozorněních.</li>
+
+<li><strong>Banner stránky</strong>: zobrazuje se nahoře na každé veřejné stránce.</li>
+
+<li><strong>URL galerie</strong>: používá se RSS vláknech.</li>
+
+<li><strong>Zamknout galerii</strong>: Uzavře galerii pro provedení údržby. Pouze uživatelé s oprávněním administrátor bude mít přístup ke galerii.</li>
+
+<li><strong>Povolit hodnocení</strong>: Hodnocení obrázků je povoleno.</li>
+
+<li><strong>Hodnocení hosty</strong>: Hodnotit obrázky může i neregistrovaný uživatel.</li>
+
+<li><strong>Povolit registraci uživatelů</strong>: Kdokoliv se může registrovat jako uživatel.</li>
+
+<li><strong>E-mailová adresa je povinná pro všechny uživatele</strong>: e-mailová adresa bude zkontrolována při registraci nebo aktualizaci profilu, vyjma situací kdy akci provedl administrátor.</li>
+
+<li><strong>Poslat e-mail administrátorovi při registraci nového uživatele</strong>: administrátoři budou upozorněni na každou novou registraci uživatele..</li>
+
+</ul>
+
+<h3>Historie</h3>
+
+<p>Návštěva stránek <span   class="pwgScreen">category.php</span> a <span class="pwgScreen">picture.php</span> bude uložena v tabulce <code>historie</code>.</p>
+
+<p>Návštěvy se zobrazují v menu:<span
+  class="pwgScreen">Administrace, Nástroje, Historie</span>.</p>
+
+<ul>
+<li><strong>Ukládat stránky navštívené hosty</strong>: uloží se návštěvy hostů.</li>
+
+<li><strong>Ukládat stránky navštívené uživateli</strong>: uloží se návštěvy registrovaných uživatelů.</li>
+
+<li><strong>Ukládat stránky navštívené administrátory</strong>: uloží se stránky navštívené administrátory.</li>
+
+</ul>
+
+<h3>Komentáře uživatelů</h3>
+<ul>
+
+<li><strong>Komentáře pro všechny</strong>: I neregistrovaný uživatel může zanechat komentář.</li>
+
+<li><strong>Počet komentářů na stránce</strong>.</li>
+
+<li><strong>Schválení</strong>: Před zobrazením na stránkách musí být každý komentář schválen administrátorem. Schvalování komentářů možno provést v menu<span class="pwgScreen">Administrace, nástroje, nevyřízené komentáře</span>.</li>
+
+<li><strong>Poslat e-mail administrátorovi při vložení nového komentáře</strong>:
+Pokud je zadán komentář nevyžadující schváleni pošle se administrátorovi email.</li>
+
+<li><strong>Poslat e-mail administrátorovi při vložení nového komentáře vyžadujícího schválení.</strong>:
+Pokud je zadán komentář nevyžadující schváleni pošle se administrátorovi email.
+Schvalování komentářů možno provést na stránce: <span class="pwgScreen">Administrace, nástroje, nevyřízené komentáře</span>.</li>
+
+</ul>
+
+<h3>Nahrát fotografie</h3>
+<ul>
+<li><strong>Vždy zobrazit odkaz pro nahrání fotografie</strong>: Pokud je do kategorie možno nahrát obrázek, zobrazí se odkaz nahraj obrázek.</li>
+<li><strong>Povolit uživatelům nahrávat fotografie na server</strong>: povolí nahrát obrázek na stránky jen vymezené skupině uživatelů.</li>
+<li><strong>Poslat e-mail administrátorovi při nahrání nové fotografie.</strong>: O každém nahrání nového obrázku uživatelem, bude administrátor informován emailem.</li>
+</ul>
+
+<h3>Nastavení pro hosty</h3>
+
+<p>Zde se nastavuje výchozí vzhled stránky pro hosty a nepřihlášené uživatele. Po přihlášení dojde k automatickému načtení hodnot nastavených přihlášeným uživatelem.
+(nastavení po přihlášení uživatele na hlavní stránce  <span class="pwgScreen">upravit</span>).</p>
+
+<p>Administrátor může měnit vzhled stránky pro jakéhokoliv registrovaného uživatele. <span class="pwgScreen">Administrace,
+uživatelé, Správa</span>: zde je možno vybrat ze seznamu uživatelů.</p>
+
+<ul>
+
+<li><strong>Jazyk</strong>: týká se pouze Piwigo systémových textů. Jména kategorii, jména obrázku a všechny popisná pole nejsou lokalizována.</li>
+
+<li><strong>Počet fotografií v řádku</strong></li>
+
+<li><strong>Počet řádků na stránce</strong></li>
+
+<li><strong>Vzhled uživatelského rozhraní</strong></li>
+
+<li><strong>Doba, po kterou jsou fotografie zobrazeny jako nově přidané</strong>: Ve dnech. musí být větší než jeden den.</li>
+
+<li><strong>Rozbalit všechny kategorie</strong>: Rozbalí všechny kategorie. <em>UPOZORNĚNÍ</em>: tato volba je náročná na systémové zdroje a pokud strom kategorií obsahuje velké množství položek, může vygenerovat rozsáhlé menu.</li>
+
+<li><strong>Ukázat počet komentářů</strong>: Na stránce s náhledy zobrazí počet komentářů u každého obrázku. Zpomaluje systém.</li>
+
+<li><strong>Ukázat počet zobrazení</strong>: zobrazí počet návštěv přímo pod náhledem obrázku. Volba je funkční pouze pokud je rozšířený konfigurační parametr: <br>
+  $conf['show_nb_hits'] = true; <br>
+  poznámka: výchozí hodnota je false.</li>
+
+<li><strong>Maximální šířka fotografií</strong>: maximální zobrazená šířka. Obrázky větší než tento parametr budou zmenšeny. Lepší, než-li používat tuto volbu, je rovnou před nahráním obrázky zmenšit, snižují se nároky na webový prostor a zrychluje načítání fotografie.</li>
+
+<li><strong>Maximální výška fotografií</strong>: maximální zobrazená výška. Obrázky větší než tento parametr budou zmenšeny. Lepší, než-li používat tuto volbu, je rovnou před nahráním obrázky zmenšit, snižují se nároky na webový prostor a zrychluje načítání fotografie..</li>
+
+</ul> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,88 @@
+<h2>Konfigurace rozšíření šablony</h2>
+
+<h3>Cíl</h3>
+<p>Nahradit původní šablony uživatelskými z podadresáře template-extension.
+(šablona s názvem "replacer").</p>
+
+<p>Pro nahrazení původní šablony (např. z ./themes/default/template) "replacerem" je potřeb obě šablony propojit.
+ (případně pokud volaná URL obsahuje volitelné klíčové slovo).</p>
+
+<p>"Volitelná klíčová slova" jsou slova která se zobrazují v URL za jménem modulu.</p>
+
+<p>Proto mohou být "volitelná klíčová slova" zadána jako aktivní permanentní spojení
+(viz. dokumentace permanetní spojení).</p>
+
+<p> `<a href="#warnings">Upozonění</a>` podmínky použití.</p>
+
+<h3>Co jsou rozšíření šablony?</h3>
+
+<p>
+Pomocí  FTP, může webmaster v adresáři "template extension" duplikovat většinu z předinstalovaných .tpl souborů ("původní šablona") různým jménem ("replacer").
+
+ "Originální šablony", podporované šablony:</p>
+<ul>
+<li><span class="filename">index.tpl</span></li>
+<li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+<li><span class="filename">menubar.tpl</span></li>
+<li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+<li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+<!-- <li><span class="filename">slideshow.tpl</span></li> -->
+<li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+<li><span class="filename">tags.tpl</span></li>
+<li><span class="filename">upload.tpl</span></li>
+<li><span class="filename">about.tpl</span></li>
+<li><span class="filename">popuphelp.tpl</span></li>
+<li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+<li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+<li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+<li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Kde najdu původní šablony?</h3>
+
+<p>Původní šablony jsou v /themes/default/template/
+(z duvodu možnosti upgrade šablon je není dobré editovat). Z původní šablony je možné vytvořit vlastní "replacer" (přizpůsobenou šablonu)".</p>
+
+<h3>Kam mohu uložit "replacer"?</h3>
+
+<p><strong>Replacer</strong> musí být umístěn v adresáři template-extension (nebo podadresáři).
+Replacer je možno pojmenovat libovolně, důležitá je koncovka .tpl. Například: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Jak aktivuju "replacer"?</h3>
+<p><strong>Původní šablona</strong> musí být přiřazena ke každému
+<strong>replaceru</strong> pro jeho aktivaci.
+ Toto je účelem "Rošíření šablony" v konfiguraci administrace.</p>
+
+<p>pokud vyberete <strong>volitelné klíčové slovo</strong> dojde k nahrazení pouze u stránek obsahující příslušné klíčové slovo. například: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+
+<p>Zkušení uživatelé mohou použít permanetní spojení jako <strong>volitelné klíčové slovo</strong>. </p>
+
+<p>Pokud vyberete <strong>svázané téma</strong> nahrazení se provede pouze s příslušným tématem.</p>
+
+<h3>Jak deaktivovat "replacery"?</h3>
+<ul>
+<li>Odvyberte navázané "původní šablony".</li>
+<li>Přes FTP smažte "replacery".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Upozornění</h3>
+<ul>
+
+<li><strong>Původní šablona</strong> musí být sktečně "původní" šablona, jinak nelze zaručit plnou funkčnost!</li>
+
+<li>Při použití několika <strong>replacerů</strong> se stejnou <strong>původní šablonou</strong> a stejným <strong>volitelným klíčovým slovem</strong> bude aktivní pouze poslední replacer.</li>
+
+<li>Odvybrání <strong>volitelného klíčového slova</strong> aktivuje replacer pri jakémkoliv použití původní šablony. Stejně jako v předchozím bodě, volba může potlačit předchozí replacery.</li>
+
+<li>Podadresáře:
+Podadresáře jsou igorovány ale hodí se na změnu současného uspořádání.<br>
+distribuované vzorky: určené pro účely testování!
+<strong>needitujte je</strong> vytvořte si vlastní.
+</li>
+
+<li>Smazáním replaceru se <strong>původní šablona</strong> ihned reaktivuje.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/cs_CZ/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Skupiny</h2>
+
+<p>Zde se spravují skupiny uživatelů.</p>
+
+<h3>Přidat skupinu</h3>
+
+<p>Skupinu mohou přidat administrátoři.</p>
+
+<h3>Seznam skupin</h3>
+
+<p>Každá položka umožňuje:</p>
+
+
+<ul>
+<li>přejít na seznam uživatelů</li>
+<li>přejít na administraci uživatelských oprávnění</li>
+<li>smazat skupinu (vyžaduje potvrzení)</li>
+<li>nastavit jako výchozí (vyžaduje potvrzení)</li>
+</ul>
+
+<h3>Výchozí skupiny</h3>
+<p>Výchozí skupina je automaticky přiřazena k novému uživateli po jeho registraci nebo při přidání administrátorem.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Existuje několik možností, jak přidat fotografie do Vaší Piwigo galerie:</p>
+
+<ul>
+  <li><strong>Přímé nahrání</strong> ve Vašem web prohlížeči je nejjednodušší a nejpřímější cesta. Záleží na možnostech Vašeho prohlížeče a Vašeho web serveru.
+  Pro nahrání velkého množství fotografií, nebo v případě, že tento způsob selže, jsou zde další možnosti.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Přejděte na přímé nahrání</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> je aplikace, kterou musíte nainstalovat na Váš počítač. Přetáhněte fotografie do okna pLoader, klikněte na <em>"Upload to Piwigo"</em> a nechte pLoader nahrát fotografie na server. Existují také další aplikace jako <strong>WinToPiwigo</strong>, nebo <strong>Digikam</strong>, doplněk pro nahrávání fotografií do Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Přejděte na pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP přenos</strong> je nejvíce doporučená cesta, jak nahrát velké množství fotografií s minimálním úsilím. Následujte návod, jak připravit Vaše fotografie. Tato metoda Vám dává možnost přesně řídit uspořádání Vašich fotografií na Vašem serveru.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Přejděte na FTP přenos</a></p>
+</div>
Index: /tags/2.6.0RC1/language/cs_CZ/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/help_groups.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Skupiny představují způsob, jak nastavit stejná oprávnění pro vícero uživatelů.</p>
+
+<p>Vytvořte skupinu pomocí <span class="pwgScreen">Administrace &raquo; Uživatelé &raquo; Skupiny</span> a přiřaďte uživatele do této skupiny pomocí
+<span class="pwgScreen">Administrace &raquo; Uživatelé &raquo;
+Správa</span>.</p>
+
+<p>Uživatel může patřit do vícero skupin. Uživatel potom získává práva součtem práv všech těchto skupin: pokud uživatel "honza" patří do skupin "rodina" i "přítelé" a jen "rodina" má oprávnění na kategorii "Vánoce 2003" tak 
+"honza" kategorii "Vánoce 2003" uvidí.</p>
Index: /tags/2.6.0RC1/language/cs_CZ/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/help_misc.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Jakmile jste vytvořili Vaši galerii, nastavte vlastnosti zobrazení v 
+<span class="pwgScreen">Administraci &raquo; Konfigurace &raquo;
+Volby </span>. <br>Každý nově zaregistrovaný uživatel bude mít tyto základní nastavení po registraci.</p>
+
+<p>V případě jakýchkoliv otázek, navštivte Piwigo <a href="http://piwigo.org/forum">fórum</a>.</p>
Index: /tags/2.6.0RC1/language/cs_CZ/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,54 @@
+<fieldset>
+<legend>Oprávnění na fotografiích</legend>
+
+<p>Každá fotografie má <strong>úroveň soukromí</strong> (zámek). Každý uživatel má úroveň přístupu (klíč). Existuje 5 úrovní:</p>
+<ol>
+  <li>Žádná</li>
+  <li><em>Kontakty</em></li>
+  <li><em>Přátelé (vyšší než kontakty)</em></li>
+  <li><em>Rodina (vyšší než přátelé)</em></li>
+  <li><em>Adminstrátoři (nejvyšší)</em></li>
+</ol>
+
+<p>Vyšší úrovně mají oprávnění na nižší úrovně. Pro daného uživatele to znamená, že čím vyšší úroveň přístupu má, tím více fotografií vidí.</p>
+
+<p>Například, pokud fotografie "svatba-0024.jpg" má úroveň soukromí <em>"Rodina"</em> tak:</p>
+<ul>
+  <li>Petr (který je <em>"Administrátor"</em>) jej uvidí, protože <em>"Administrátoři"</em> mohou vidět všechny fotografie</li>
+  <li>Bára (která je <em>"Rodina"</em>) také uvidí</li>
+  <li>Marie (která je jen <em>"Přítel"</em>) ale fotografii neuvidí</li>
+</ul>
+
+<p>Uživatel, který nemá právo vidět obsah kategorie, neuvidí ani kategorii jako takovou a tedy ani její název. Stejný princip platí pro klíčová slova.</p>
+
+<p>Úroveň přístupu (klíč) můžete nastavit na obrazovce <span class="pwgScreen">Administrace &raquo; Uživatelé &raquo; Správa</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Oprávnění na kategoriích</legend>
+
+<p>Pokud Vám výše popsané úrovně soukromí nevyhovují, můžete také spravovat oprávnění pro uživatele a pro skupiny. Můžete spravovat oprávnění pro uživatele i pro skupiny najednou, bez rizika, že by došlo ke konfliktům.</p>
+
+<p>Můžete zakázat přístup do kategorií. Přepněte přístup do kategorie na 
+"soukromý" pokud chcete řídit přístup.</p>
+
+<p>Můžete nastavit přístup do kategorie na "soukromý" při editaci jedné kategorie (<span class="pwgScreen">Administrace &raquo; Kategorie &raquo; Správa
+&raquo; editovat</span>), nebo nastavením vlastností pro celý strom kategorií 
+(<span class="pwgScreen">Administrace &raquo; Kategorie &raquo;
+Vlastnosti &raquo; Veřejná / Soukromá</span>).</p>
+
+<p>Když je přístup do kategorie nastven na "soukromý", můžete řídit přístup pro skupiny a uživatele na třech obrazovkách:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administrace &raquo; Uživatelé &raquo; Správa &raquo;
+  akce oprávnění</span></li>
+
+  <li><span class="pwgScreen">Administrace &raquo; Uživatelé &raquo; Skupiny &raquo;
+  akce oprávnění</span></li>
+
+  <li><span class="pwgScreen">Administrace &raquo; Kategorie &raquo; Správa &raquo; editovat</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/cs_CZ/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Fotografie jsou zobrazeny v kategorii, která odpovídá adresáři, ve kterém jsou uloženy.</p>
+
+<p>Můžete, ale také zobrazit stejnou fotografii ve vícero kategoriích, bez toho, že by musely být uloženy na serveru vícekrát. Provede te to tak, že spojíte fotografii s jakoukoliv jinou kategorií pomocí obrazovky <span class="pwgScreen">Upravit informace o fotografii</span>, kterou může administrátor vyvolat ze stránky zobrazení fotografie.</p>
+
+<p>Virtuální kategorie jsou založeny na tomto konceptu: nemají zádný odpovídající adresář na serveru. Virtuální kategorie můžete vytvořit pomocí <span class="pwgScreen">Administrace &raquo; Kategorie &raquo;
+Správa</span>.</p>
Index: /tags/2.6.0RC1/language/cs_CZ/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/history.html	(revision 25596)
@@ -0,0 +1,37 @@
+<h2>Historie</h2>
+
+<p>Slouží k sledování historie návštěv vaší galerie v závislosti na zvoleném nastavení v administrace &raquo; konfigurace &raquo; volby &raquo; záložka historie</p>
+
+<h3>Statistiky</h3>
+<ul>
+<p>Pokud bylo nastaveno zaznamenávání (<span
+class="pwgScreen">index.php</span> a <span
+class="pwgScreen">picture.php</span>) navštívených stránek v tabu <code>historie</code>,
+je možné je sledovat v tomto tabu.</p>
+
+<li><strong>Celkové statistky</strong>: návštěvy za rok. </li>
+
+<li><strong>Roční statistiky</strong>: návštěvnost po měsících ve zvoleném roce.</li>
+
+<li><strong>Měsíční statistiky</strong>: denní návštěvnost v jednotlivých dnech zvoleného měsíce.</li>
+
+<li><strong>Denní statistiky</strong>: návštěvnost po hodinách během zvoleného dne.</li>
+
+</ul>
+
+<h3>Vyhledávání</h3>
+<ul>
+<p>Pokud bylo nastaveno zaznamenávání (<span
+class="pwgScreen">index.php</span> a <span
+class="pwgScreen">picture.php</span>) navštívených stránek v tabu <code>historie</code>,můžete procházet detaily navštívených stránek za pomocí různých filtrů.</p>
+
+<li><strong>Filtr podle data</strong>: vyberte časové rozpětí ve kterém chcete sledovat aktivitu na stránkách..</li>
+
+<li><strong>Filtr podle typu položky</strong>: vyberte typ položky u které chcete sledovat dění na stránce.</li>
+
+<li><strong>Filtr podle uživatele</strong>: vyberte uživatele jehož navštívené stránky vás zajímají.</li>
+
+<li><strong>Filtr podle názvu souboru</strong>: zvolte jméno souboru jehož návštěvnost vás zajímá.</li>
+
+<li><strong>Filtr podle ID fotografie</strong>: zadejte ID fotografie kterou chcete sledovat.</li>
+</ul> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>&Uacute;držba</h2>
+
+<p>Pro optimalizaci času generov&aacute;n&iacute; str&aacute;nek využ&iacute;v&aacute; Piwigo informace uložen&eacute; v mezipaměti (v datab&aacute;zi). Např&iacute;klad, m&iacute;sto zji&scaron;ťov&aacute;n&iacute; počtu fotek obsažen&yacute;ch v jednotliv&yacute;ch albech při každ&eacute;m nahr&aacute;n&iacute; str&aacute;nky, je tato informace již uložena v datab&aacute;zi. Teoreticky by tato informace měla b&yacute;t vždy spr&aacute;vn&aacute;, nicm&eacute;ně občas se může vloudit chyba a informace uložen&aacute; v datab&aacute;zi je zastaral&aacute;.</p>
+
+<p>Někter&eacute; informace jak plyne čas se stanou nepotřebn&yacute;mi. Maz&aacute;n&iacute;m těchto informac&iacute; z datab&aacute;ze uvoln&iacute;te m&iacute;sto na disku a do značn&eacute; m&iacute;ry urychl&iacute;te pr&aacute;ci s datab&aacute;z&iacute;.</p>
+
+<ul>
+	<li><strong>Smazat tagy (nepřiřazen&yacute;ch kl&iacute;čov&yacute;ch - orphaned tags)</strong></li>
+</ul>
+<ul>
+  <li><strong>Aktualizuj informace alb:</strong> Pro každ&eacute; album jsou nasleduj&iacute;c&iacute; informace kontrolov&aacute;ny a aktualizov&aacute;ny pokud je potřeba : Seznam hlavn&iacute;ch alb, počet fotek, datum posledn&iacute; fotky, spojen&iacute; mezi sestersk&yacute;mi alby, spojen&iacute; mezi v&scaron;emi alby. Tato akce tak&eacute; kontroluje konzistenci reprezentativn&iacute;ch fotografi&iacute;.</li>
+  <li><strong>Aktualizovat informace o fotografi&iacute;ch:</strong> Pro každou fotku jsou nasleduj&iacute;c&iacute; informace kontrolov&aacute;ny a aktualizov&aacute;ny: pln&aacute; cesta k souboru, průměrn&eacute; hodnocen&iacute;. <em>Varov&aacute;n&iacute;</em>, nezapomeňte: Informace metadat mus&iacute; b&yacute;t synchronizov&aacute;na z <span class="pwgScreen">Administrace &raquo; N&aacute;stroje &raquo; Synchronizace</span>, nebo na str&aacute;nce &uacute;prav jednotl&iacute;ch fotografi&iacute; (skrz <span class="pwgScreen">Photo - Upravit Photo</span> na př&iacute;klad).</li>
+</ul>
+<ul>
+  <li><strong>Opravit a optimalizovat datab&aacute;zi:</strong>Provede operace Znovu seřazen&iacute;, Oprav a optamalizac&iacute; na každ&eacute; tabulce v datab&aacute;zi </li>
+  <li><strong>Znovu spustit kontrolu integrity</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Prov&eacute;st &uacute;držbu detailů historie:</strong> Smaz&aacute;n&iacute; v&scaron;ech ř&aacute;dek z tabulky histori&iacute;. Str&aacute;nka <span class="pwgScreen">Administrace &raquo; N&aacute;stroje &raquo; Historie</span> pot&eacute; nezobraz&iacute; ž&aacute;dn&eacute; informace ohledně historie. <em>Upozorněn&iacute;:</em> v&scaron;echna data (historie a statistiky) budou NEN&Aacute;VRATNĚ smaz&aacute;na!!</li>
+  <li><strong>Prov&eacute;st &uacute;držbu cel&eacute; historie:</strong> Smaže ve&scaron;ker&eacute; informace o souhrn historie nav&scaron;těv. Tento souhrn je vygenerov&aacute;n podrobnost&iacute; historie.</li>
+  <li><strong>Prov&eacute;st &uacute;držbu relac&iacute;:</strong> Smaže pro&scaron;l&eacute; uživatelsk&eacute; sessions.</li>
+  <li><strong>Prov&eacute;st &uacute;držbu nepoužit&yacute;ch RSS vl&aacute;ken (smazat)</strong></li>
+  <li><strong>Odstranit historii hled&aacute;n&iacute;</strong></li>
+  <li><strong>Prov&eacute;st &uacute;držbu &scaron;ablon (smazat)</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/cs_CZ/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Emailová upozornění</h2>
+
+<p>Na tomto místě je možné spravovat maily upozorňující uživatele o změnách na vašich stránkách.</p>
+
+<p>K dipozici jsou tyto tři taby:</p>
+
+<h3>Parametry</h3>
+<p>Dostupné pouze pro webmastery. Slouží nastavování parametrů upozorňovacích mailů</p>
+
+<h3>Přihlášení k odběru</h3>
+<p>Dostupné pouze pro webmastery. Umožní přidat nebo odebrat uživatele z listu příjemců mailu.</p>
+
+<h3>Odeslání</h3>
+<p>Dostupné pro webmastery a administrátory. Slouží k odeslání upozorňovacího mailu.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permanetní spojení</h2>
+
+<p>Permanentní spojení jsou zde aby URL jednotlivých kategorii byla krásnější. Po definování permanentního spojení, není dále nutné mít ID kategorie v URL.</p>
+
+<p>Po smazání permanentního spojení, je možné ho uložit do historie pro zachování fungujících externích odkazů. V tabulce historie permanentních spojení je zobrazeno datum vymazání linku, čas posledního použití a počet použití.</p>
+
+<p>Každá kategorie musí mít unikátní název permanentního spojení. Stejně tak do historie není možné uložit stejný link vícekrát.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,102 @@
+<fieldset>
+  <legend>Rychlý návod</legend>
+
+<ol>
+  <li>Vytvořte kategorii (adresář) na Vašem počítači.</li>  
+
+  <li>Zkopírujte nějaké fotografije do tohoto adresáře, změňte jejich velikost pro zobrazení na web. <em>Varování</em>: názvy adresářů a souborů musí obsahovat pouze písmena, čísla, "-", "_" or ".". Žádné mezery nebo znaky s diakritikou.</li>
+
+  <li>Pomocí FTP, zkopírujte Váš adresář do adresáře "galleries" vaší instalace  Piwigo.</li>
+
+  <li>Přihlašte se do Vaší Piwigo galerie a přejděte na <span class="pwgScreen">Administrace &raquo; Nástroje &raquo; Náhledy</span> abyste vytvořili chybějící náhledy.</li>
+
+  <li>Jděte na <span class="pwgScreen">Adminstrace</span> a stiskněte velké tlačítko Rychlá místní synchronizace.</li>
+</ol>
+
+Gratulujeme! Právě jste vytvořili vaší první galerii fotografií ve Vaší Piwigo galerii.
+</fieldset>
+
+<fieldset>
+  <legend>Organizace souboru a adresářů</legend>
+
+<ul>
+
+  <li>
+
+    <p>Adresáře kategorií jsou v Piwigo adresáři 
+    "galleries". tady je ukázka malé adresářové struktury Piwigo (která ale využívá hodně vlastností Piwigo):</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- kategorie-1
+|   |   |-- kategorie-1.1
+|   |   |   |-- kategorie-1.1.1
+|   |   |   |   |-- kategorie-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- svatba.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-svatba.jpg
+|   |   |   |   |   +-- svatba.jpg
+|   |   |   |   +-- kategorie-1.1.1.2
+|   |   |   +-- kategorie-1.1.2
+|   |   |-- kategorie-1.2
+|   |   |   |-- slon.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-slon.jpg
+|   |   +-- kategorie-1.3
+|   +-- kategorie-2
+|       |-- selatko.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-selatko.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+
+  <li>Kromě adreářů pojmenovaných "thumbnail", "pwg_high" nebo "pwg_representative" (čtěte vysvětlení níže), každý adresář v "galleries" vytvoří kategorii. Není zde omezení hloubky adresářů.</li>
+
+  <li>Každý element kategorie je reprezentován souborem. Soubor může být elementem Piwigo pokud jeho přípona odpovídá parametru konfigurace <code>file_ext</code>
+  (viz. soubor <span
+  class="filename">include/config_default.inc.php</span>). Soubor může být obrázek (fotografie) pokud jeho přípona je uvedena v parametru <code>picture_ext</code>.</li>
+
+  <li>Obrázky musí mít přiřazen náhled (viz. sekce o náhledech níže)</li>
+
+  <li>Obrázky mohou mít přiřazenu verzi ve vysoké kvalitě. Jako například svatba.jpg v příkladu výše. Verze ve vysoké kvalitě nemá, na rozdíl od náhledu, žádný prefix v názvu.</li>
+
+  <li>Elementy které nejsou obrázky (video, zvuky, textové sobubory, cokoli chcete...) mají jako výchozí náhled ikonu, které odpovídá jejich příponě. Volitelně můžete přiřadit náhled a reprezentativní soubor (viz. video.avi v příkladu výše).</li>
+
+  <li><em>Varování</em>: názvy adresářů a souborů musí obsahovat pouze písmena, čísla, "-", "_" or ".". Žádné mezery nebo znaky s diakritikou.</li>
+
+  <li>Když jsou elementy, obrázky, náhledy a reprezentativní soubory umístěny v adresářové struktuře přejděte na: <span class="pwgScreen">Administrace &raquo; Kategorie &raquo;
+  Synchronizace</span></li>
+
+</ul>
+</fieldset>
+
+<fieldset>
+  <legend>Náhledy</legend>
+<ul>
+
+  <li>Všechny obrázky (fotografie) musí mít přiřazen náhled.</li>
+
+  <li>Náhledy jsou umístěny v podadresáři "thumbnail", který je v adresáři kategorie. Náhled má stejný název jako jemu odpovídající obrázek, s prefixem podle konfiguračního parametru <code>prefix_thumbnail</code> (viz. <span class="filename">include/config.inc.php</span>).</li>
+
+  <li>Náhled nemusí mít nutně stejnou příponu jako jemu odpovídající obrázek (například ".jpg" obrázek může mít náhled s ".GIF" příponou).</li>
+
+  <li>Doporučujeme použít externí aplikaci protvorbu náhledů.</li>
+
+  <li>Vytvářená náhledů pomocí Piwigo může vést ke špatné kvalitě vytvořených náhledů, protože ta závisí na zdrojích serveru (a toto může být na sdílených serverech (webhosting) problém).
+
+  <li>Pokud budete přesto vytvářet náhledy pomocí Piwigo na serveru, tak musíte povolit přístup pro zápis pro všechny v adresáři "galleries" a všech podadresářích.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/cs_CZ/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Vyhledávání</h2>
+
+<p>Tato stránka umožňuje vyhledávat obrázky z celé galerie.</p>
+
+<dl>
+
+<dt>Vyhledávání klíčových slov</dt>
+<dd> Vyhledání jedno nebo více slov podle atributu přiřazeného k obrazku v galerii. Pro vyhledání slov s částečnou shodou je možno použít * jako wildcard (zástupný znak).</dd>
+
+<dt>Vyhledávání podle autora</dt>
+<dd>Pro vyhledání slov s částečnou shodou je možno použít * jako wildcard (zástupný znak).</dd>
+
+<dt>Vyhledávání podle data</dt>
+<dd>Vyberte počáteční a/nebo koncové datum. Pole nechte prázdné pokud chcete vyhledávat "do teď". Formát letopočtu v posledním políčku musí být ve tvaru: RRRR (např. 2004)</dd>
+
+<dt>Vyhledávání v kategoriích</dt>
+<dd>Vyberte jednu nebo více kategorií ve kterých chcete vyhledávat. Ve všech podkategoriích se dá vyhledávat označením rodičovské kategorie a nastavením volby "umožnit prohledávání podkategorií"</dd>
+
+</dl> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/synchronize.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Synchronizace</h2>
+
+<p>Existují dva různé typy synchronizace: adresáře/soubory a jejich metadata. Adresáře/soubory slouží k synchronizaci stromu adresářů se stromem kategorií v databazi. Metadata doplní položky o informace jako například velikost souboru, rozměry v pixelech, EXIF nebo IPTC informace.</p>
+
+<p>Nejprve je třeba synchronizovat adresáře/soubory.</p>
+
+<p>Synchronizace může zabrat nějaký čas (v závislosti na vytížení a rychlosti serveru a počtu synchronizovaných položek), Pokud je to možné provádějte synchronizaci kategorii po kategorii.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/help/user_list.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Seznam uživatelů</h2>
+
+<p>Na tomto místě můžete spravovat nastavení jednotlivých uživatelů.</p>
+
+<h3>Přidat uživatele</h3>
+
+<p>Administrátoři mohou uživatele přidávat ručně.</p>
+
+<h3>Filtr</h3>
+
+<p>Seznam uživatelů je možno filtrovat podle jména uživatele (wildcard * pro částečnou shodu), skupiny nebo stavu. Výpis můžete nechat seřadit podle data registrace nebo uživatelského jména a to vzestupně nebo sestupně.</p>
+
+<p>Zde je možno editovat více uživatelů najednou. Možné akce:</p>
+
+<ul>
+
+<li>smazání uživatele (vyžaduje potvrzení)</li>
+<li>změna stavu</li>
+<li>změna přiřazení ke skupině</li>
+<li>úprava vlastností zobrazení</li>
+<li>úprava doplňujících vlastností</li>
+
+</ul>
+
+<p>Předmětem úprav jsou vybraní uživatelé (výchozí nastavení) nebo všichni uživatelé vybraní provedením filtru.</p> 
Index: /tags/2.6.0RC1/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/install.lang.php	(revision 25596)
@@ -0,0 +1,72 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalace';
+$lang['Basic configuration'] = 'Základní konfigurace';
+$lang['Default gallery language'] = 'Základní jazyk galerie';
+$lang['Database configuration'] = 'Databázová konfigurace';
+$lang['Admin configuration'] = 'Administrátorská konfigurace';
+$lang['Start Install'] = 'Spustit instalaci';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Bude zobrazen návštěvníkům. Je nutný pro administraci aplikace.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Spojení na server se podařilo, ale nebylo možné připojit databázi';
+$lang['Can\'t connect to server'] = 'Nebylo možné se připojit k serveru';
+$lang['Host'] = 'MySQL server';
+$lang['localhost, sql.multimania.com, toto.freesurf.fr'] = 'localhost, sql.multimania.com, toto.freesurf.cz';
+$lang['User'] = 'Uživatel';
+$lang['user login given by your host provider'] = 'uživatelské jméno, které Vám přidělil provozovatel serveru';
+$lang['user password given by your host provider'] = 'heslo na tomto serveru';
+$lang['Database name'] = 'Jméno databáze';
+$lang['also given by your host provider'] = 'které na tomto serveru';
+$lang['Database table prefix'] = 'Předpona názvů databázových tabulek';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'názvy vytvořených databázových tabulek budou tuto předponu (pro jejich snadnější správu)';
+$lang['enter a login for webmaster'] = 'vložte uživatelské jméno správce';
+$lang['webmaster login can\'t contain characters \' or "'] = 'uživatelské jméno správce nemůže obsahovat znak \' nebo "';
+$lang['please enter your password again'] = 'prosím zadejte znovu heslo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Heslo mějte utajeno, umožní Vám přístup do administrace aplikace';
+$lang['Password [confirm]'] = 'Heslo [potvrzení]';
+$lang['verification'] = 'kontrola';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Potřebujete pomoc ? Zeptejte se na <a href="%s">Piwigo fóru</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Návštěvníci mohou pomocí tohoto e-mailu správce kontaktovat';
+$lang['PHP 5 is required'] = 'Je nutný PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Na Vašem webhostingu je PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo se může pokusit změnit Vaše nastavení na PHP 5 tím, že vytvoří nebo změní soubor .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Případně můžete změnit Vaši konfirguraci sami a potom restartovat Piwigo .';
+$lang['Try to configure PHP 5'] = 'Pokuste se změnit Vaše nastavení na PHP 5';
+$lang['Sorry!'] = 'Bohužel!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nebylo schopno změnit Vaše nastavení na PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Obraťte se na poskytovatele Vašeho webhostingu, aby jste zjistili, jak můžete změnit Vaše nastavení na PHP 5.';
+$lang['Hope to see you back soon.'] = 'Věříme, že se brzy uvidíme.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulujeme, Piwigo instalace je ukončena';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Náhradním řešením je zkopírovat text z boxu výše a vložit jej do souboru "local/config/database.inc.php" (Upozornění : soubor database.inc.php smí obsahovat jen to, co je v tomto boxu, žádné znaky odřádkování nebo mezery)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Vytvoření souboru local/config/database.inc.php se nepodařilo.';
+$lang['Download the config file'] = 'Stáhnout konfigurační soubor';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Můžete stáhnout konfigurační soubor a nahrát jej do adrešáře local/config Vaší instalace.';
+$lang['Just another Piwigo gallery'] = 'Jen další galerie Piwigo';
+$lang['Welcome to my photo gallery'] = 'Vítejte na mé fotogalerii';
+$lang['Welcome to your new installation of Piwigo!'] = 'Vítejte v nové instalaci Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Neváhejte navštívit naše fórum v případě jakýchkoliv dotazů: %s'; 
+$lang['localhost or other, supplied by your host provider'] = 'localhost, nebo jiný, dodaný poskytovatelem hostingu';
+?>
Index: /tags/2.6.0RC1/language/cs_CZ/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Česky [CZ]
Index: /tags/2.6.0RC1/language/cs_CZ/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/cs_CZ/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/cs_CZ/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,49 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Aktualizace';
+$lang['Upgrade from version %s to %s'] = 'Aktualizace z verze %s na %s';
+$lang['Statistics'] = 'Statistika';
+$lang['total upgrade time'] = 'celkový čas aktualizace';
+$lang['total SQL time'] = 'celkový čas SQL';
+$lang['SQL queries'] = 'SQL dotazy';
+$lang['Upgrade informations'] = 'Informace o aktualizaci';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Proveďte kontrolu údržby v [Administrace>Nástroje>Údržba] pokud dojde k problému.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Jen administrátor smí spustit aktualizaci: prosím přihlašte se níže.';
+$lang['You do not have access rights to run upgrade'] = 'nemáte přístupová práva na spuštění upgrade';
+
+// Upgrade informations from upgrade_1.3.1.php
+$lang['All sub-albums of private albums become private'] = 'Všechny sub-alba privátních alb zůstanou privatní';
+$lang['User permissions and group permissions have been erased'] = 'Uživatelská oprávnění a oprávnění skupin byla vymazána';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z předchozí konfigurace byly zachovány pouze předpony náhledů a email adresa správce.';
+
+// missing translations 2.1.0
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Navrhujeme aktualizovat databázi Vaší galerie Piwigo ze starší na novou verzi.
+Asistent aktualizace se domnívá, že aktuálně používáte <strong>verzi %s</strong> (nebo odpovídající).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Jako předběžné opatření byly deaktivovány následující doplňky. Prosím zkontrolujte aktualizace těchto doplňků předtím než je znovu aktivujete:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'V <i>%s</i>, před <b>?></b>, vložením:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Jako preventivní opatření, byli náseldující šablony deaktivovány. Musíte zkontrolovat nejprve jestli není nová verze předtím než je reaktivujete:';
+?>
Index: /tags/2.6.0RC1/language/da_DK/about.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+<p>Dette fotogalleri er baseret på Piwigo.</p>
+
+<p>Piwigo er et fotogalleriprogram til webbrug, opbygget af et aktivt fællesskab bestående af brugere og udviklere. Udvidelser gør at det er let at tilpasse Piwigo. Som prikken over i'et er Piwigo frie software og Open Source.</p>
+
+<p id="linkToPiwigo"><a href="http://da.piwigo.org">Besøg Piwigos websted</a></p>
+
+<p>Den dansksprogede udgave af Piwigo vedligeholdes af følgende personer, i alfabetisk rækkefølge:
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16630">Egorip</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17434">Kaare</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=4888">nileson</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18218">pointman</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=14226">Rollike</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=11616">thomas1956</a></li>
+	</ul>
+           .... tak til dem</p>
Index: /tags/2.6.0RC1/language/da_DK/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/da_DK/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/admin.lang.php	(revision 25596)
@@ -0,0 +1,977 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = '%d tilknytning';
+$lang['%d associations'] = '%d tilknytninger';
+$lang['%d album including'] = '%d album herunder';
+$lang['%d albums including'] = '%d albummer herunder ';
+$lang['%d physical'] = ' %d fysisk';
+$lang[' and %d virtual'] = ' og %d virtuelt';
+$lang['%d album moved'] = '%d album flyttet';
+$lang['%d albums moved'] = '%d albummer flyttet';
+$lang['%d group'] = '%d gruppe';
+$lang['%d groups'] = '%d grupper';
+$lang['%d member'] = '%d medlem';
+$lang['%d members'] = '%d medlemmer';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tags';
+$lang['%d user comment rejected'] = '%d brugerkommentar afvist';
+$lang['%d user comments rejected'] = '%d brugerkommentarer afvist';
+$lang['%d user comment validated'] = '%d brugerkommentar godkendt';
+$lang['%d user comments validated'] = '%d brugerkommentarer godkendt';
+$lang['%d user deleted'] = '%d bruger slettet';
+$lang['%d users deleted'] = '%d brugere slettet';
+$lang['%d user'] = '%d bruger';
+$lang['%d users'] = '%d brugere';
+$lang['%d waiting for validation'] = '%d venter på godkendelse';
+$lang['Actions'] = 'Handlinger';
+$lang['Activate'] = 'Aktiver';
+$lang['Add/delete a permalink'] = 'Tilføj/slet et permalink';
+$lang['Add a tag'] = 'Tilføj et tag';
+$lang['Add a user'] = 'Tilføj en bruger';
+$lang['Add group'] = 'Tilføj gruppe';
+$lang['Add'] = 'Tilføj';
+$lang['Allow user registration'] = 'Tillad brugerregistrering';
+$lang['Apply to sub-albums'] = 'Anvend på underalbummer';
+$lang['Associated'] = 'Tilknyttet ';
+$lang['Caddie management'] = 'Administration af kurv';
+$lang['Caddie'] = 'Kurv';
+$lang['Albums authorized thanks to group associations'] = 'Albummer godkendt takket være gruppetilknytninger';
+$lang['Album manual order was saved'] = 'Manuel albumrækkefølge blev gemt';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Opgraderingtjek mislykkedes af ukendte årsager.';
+$lang['Check for upgrade'] = 'Opgraderingtjek';
+$lang['Comments for all'] = 'Kommentarer til alle';
+$lang['Current name'] = 'Nuværende navn';
+$lang['Database'] = 'Database';
+$lang['Deactivate'] = 'Deaktiver';
+$lang['Delete Representant'] = 'Slet albums miniaturebillede';
+$lang['Delete selected tags'] = 'Slet valgte tags';
+$lang['Delete selected users'] = 'Slet valgte brugere';
+$lang['Deletions'] = 'Sletninger';
+$lang['Deny selected groups'] = 'Afvis valgte grupper';
+$lang['Deny selected users'] = 'Afvis valgte brugere';
+$lang['Description'] = 'Beskrivelse';
+$lang['Display options'] = 'Vis muligheder';
+$lang['Dissociated'] = 'Tilknytning fjernet';
+$lang['Does not represent'] = 'er ikke miniaturebillede for';
+$lang['Edit selected tags'] = 'Rediger valgte tags';
+$lang['Edit tags'] = 'Rediger tags';
+$lang['Email admins when a new user registers'] = 'Send e-mail til admins når en ny bruger registrerer sig';
+$lang['Email admins when a valid comment is entered'] = 'Send e-mail til admins når en gyldig kommentar er gemt';
+$lang['Email admins when a comment requires validation'] = 'Send e-mail til admins når en kommentar kræver godkendelse';
+$lang['Environment'] = 'Miljø';
+$lang['Form'] = 'Formular';
+$lang['Gallery title'] = 'Gallerititel';
+$lang['Grant selected groups'] = 'Tildel valgte grupper';
+$lang['Grant selected users'] = 'Tildel valgte brugere';
+$lang['Group name'] = 'Gruppenavn';
+$lang['Groups'] = 'Grupper';
+$lang['Guests'] = 'Gæster';
+$lang['History'] = 'Historik';
+$lang['Informations'] = 'Information';
+$lang['Install'] = 'Installer';
+$lang['Link all album photos to a new album'] = 'Link alle fotografier i album til et nyt album';
+$lang['Link all album photos to some existing albums'] = 'Link alle fotografier i album til nogle eksisterende albummer';
+$lang['Linked albums'] = 'Linkede albummer';
+$lang['Lock gallery'] = 'Lås galleri';
+$lang['Maintenance'] = 'Vedligeholdelse';
+$lang['Edit album permissions'] = 'Rediger albumstilladelser';
+$lang['Manage permissions for group "%s"'] = 'Administrer tilladelser for gruppen "%s"';
+$lang['Manage permissions for user "%s"'] = 'Administrer tilladelser for brugeren "%s"';
+$lang['Manage tags'] = 'Administrer tags';
+$lang['Members'] = 'Medlemmer';
+$lang['Metadata synchronized from file'] = 'Metadata synkroniseret fra fil';
+$lang['Move albums'] = 'Flyt albummer';
+$lang['Move'] = 'Flyt';
+$lang['Name'] = 'Navn';
+$lang['New name'] = 'Nyt navn';
+$lang['New parent album'] = 'Nyt overordnet album';
+$lang['New tag'] = 'Nyt tag';
+$lang['Number of comments per page'] = 'Antal kommentarer pr. side';
+$lang['Number of rates'] = 'Antal bedømmelser';
+$lang['Number of thumbnails to create'] = 'Antal miniaturebilleder der skal dannes';
+$lang['Only private albums are listed'] = 'Kun private albummer er opført';
+$lang['Operating system'] = 'Styresystem';
+$lang['Options'] = 'Valgmuligheder';
+$lang['Other private albums'] = 'Andre private albummer';
+$lang['Page banner'] = 'Sidebanner';
+$lang['Parent album'] = 'Overordnet album';
+$lang['Path'] = 'Sti';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s har tidligere været benyttet af album %s. Slet det først fra permalinkets historik';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Permalinknavne skal bestå af a-z, A-Z, 0-9, "-", "_" eller "/". Det må ikke være numerisk eller begynde med et tal efterfulgt af "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalinket %s benyttes allerede af albummet %s';
+$lang['Permalink history'] = 'Permalinkets historik';
+$lang['Permalinks'] = 'Permalinks';
+$lang['Permission denied'] = 'Adgang nægtet';
+$lang['Permission granted thanks to a group'] = 'Tilladelser tildelt takket være en gruppe';
+$lang['Permission granted'] = 'Tilladelse tildelt';
+$lang['Photo informations updated'] = 'Billedoplysninger opdateret';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Position';
+$lang['Preferences'] = 'Indstillinger';
+$lang['Properties'] = 'Egenskaber';
+$lang['Random photo'] = 'Tilfældigt foto';
+$lang['Rate date'] = 'Bedømmelsesdato';
+$lang['Rating by guests'] = 'Gæsters bedømmelse';
+$lang['Rating'] = 'Bedømmelse';
+$lang['Reject'] = 'Afvis';
+$lang['Representant'] = 'Albums Miniaturebillede';
+$lang['Representation of albums'] = 'Albums miniaturebillede';
+$lang['Representative'] = 'Albums miniaturebillede';
+$lang['Represents'] = 'Er miniaturebillede for';
+$lang['Save order'] = 'Gem rækkefølge';
+$lang['Save to permalink history'] = 'Gem i permalinks historik';
+$lang['Select at least one album'] = 'Vælg mindst ét album';
+$lang['Select at least one photo'] = 'Vælg mindst et fotografi';
+$lang['Select at least one user'] = 'Vælg mindst én bruger';
+$lang['Show info'] = 'Vis info';
+$lang['Site manager'] = 'Sitemanager';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statistik';
+$lang['Storage album'] = 'Opbevaringsalbum';
+$lang['Sum of rates'] = 'Summen af bedømmelser';
+$lang['Tag "%s" already exists'] = 'Tagget "%s" findes allerede';
+$lang['Tag "%s" was added'] = 'Tagget "%s" er blevet tilføjet';
+$lang['Tag selection'] = 'Valg af tags';
+$lang['The %d following tags were deleted'] = 'Følgende %d tags er blevet slettet';
+$lang['Unable to check for upgrade.'] = 'Kunne ikke foretage opgraderingstjek.';
+$lang['Uninstall'] = 'Afinstaller';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Anvend standarden for fotografiers sorteringsrækkefølge (defineret i opsætningsfilen)';
+$lang['User comments validation'] = 'Godkendelse af brugerkommentarer';
+$lang['Users']  =  'Brugere';
+$lang['Validate']  =  'Godkend';
+$lang['Validation'] = 'Godkendelse';
+$lang['Version']  =  'Version';
+$lang['Virtual albums to move'] = 'Virtuelt album som skal flyttes';
+$lang['Virtual album name'] = 'Virtuelt albums navn';
+$lang['Webmaster cannot be deleted']  =  'Webmaster kan ikke slettes';
+$lang['You are running on development sources, no check possible.'] = 'Du kører på udviklingskildekode, tjek ikke muligt';
+$lang['You cannot delete your account']  =  'Du kan ikke slette din konto';
+$lang['You cannot move an album in its own sub album'] = 'Du kan ikke flytte et album til dets eget underalbum';
+$lang['You need to confirm deletion']  =  'Du skal bekræfte sletning';
+$lang['Add tags']  =  'Tilføj tags';
+$lang['Associate to album'] = 'Knyt til album';
+$lang['associate to group'] = 'tilknyt til gruppe';
+$lang['Authorized']  =  'Autoriseret';
+$lang['Add a virtual album'] = 'Tilføj et virtuelt album';
+$lang['Authorize users to add comments on selected albums'] = 'Autoriser brugere til at føje kommentarer til udvalgte albummer';
+$lang['The name of an album must not be empty'] = 'Et albums navn må ikke ikke være tomt';
+$lang['Lock albums'] = 'Lås albummer';
+$lang['Private'] = 'Privat';
+$lang['Public'] = 'Offentligt';
+$lang['Find a new representant by random'] = 'Find et nyt tilfældigt miniaturebillede til album';
+$lang['Public / Private'] = 'Offentligt / Privat';
+$lang['Manage authorizations for selected albums'] = 'Administrer autorisationer for udvalgte albummer';
+$lang['Virtual album added'] = 'Virtuelt album tilføjet';
+$lang['Virtual album deleted'] = 'Virtuelt album slettet';
+$lang['Access type'] = 'Adgangstype';
+$lang['Information data registered in database'] = 'Oplysningerne er gemt i databasen';
+$lang['Default display'] = 'Standardvisning';
+$lang['The gallery URL is not valid.'] = 'Galleri-URL\'en er ikke gyldig.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Antallet af kommentarer på en side skal være mellem 5 og 50.';
+$lang['Configuration'] = 'Opsætning';
+$lang['confirm'] = 'bekræft';
+$lang['Date']  =  'Dato';
+$lang['delete album'] = 'slet album';
+$lang['Dissociate from album'] = 'Fjern tilknytning til album';
+$lang['dissociate from group'] = 'fjern tilknytning til gruppe';
+$lang['Album updated successfully'] = 'Album opdateret';
+$lang['photos per page'] = 'fotografier pr. side';
+$lang['High definition enabled'] = 'Højopløselig er slået til';
+$lang['File'] = 'Fil';
+$lang['first photo added on %s'] = 'første fotografi tilføjet %s';
+$lang['Forbidden']  =  'Forbudt';
+$lang['global mode'] = 'global tilstand';
+$lang['group "%s" added'] = 'gruppen "%s" tilføjet';
+$lang['group "%s" deleted'] = 'gruppen "%s" slettet';
+$lang['group "%s" updated'] = 'gruppe "%s" opdateret';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Navnet på en gruppe må ikke indeholde " eller \' eller være tom. ';
+$lang['This name is already used by another group.'] = 'Dette navn anvendes allerede af en anden gruppe.';
+$lang['High definition'] = 'Højopløselig';
+$lang['jump to album'] = 'hop til album';
+$lang['jump to photo'] = 'Hop til fotografiet';
+$lang['leave'] = 'uændret';
+$lang['Lock'] = 'Lås';
+$lang['Locked'] = 'Låst';
+$lang['manage album photos'] = 'administrer fotografier i album';
+$lang['manage sub-albums'] = 'administrer underalbummer';
+$lang['Manage'] = 'Administrer';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Udførelsestid er udløbet, behandlingen skal fortsætte [Forventet tid: %d sekunder].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Udførelsestid er overskredet, behandlingen skal fortsætte [Forventet tid: %d sekunder].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Tiden til forberedelse af listen over brugere, der vil modtage mail, er begrænset. Andre brugere er ikke anført.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tiden til at sende mail er begrænset. Andre mails er sprunget over.';
+$lang['To send ?']  =  'Vil du sende?';
+$lang['Last send'] = 'Senest afsendt';
+$lang['User']  =  'Bruger';
+$lang['See you soon,'] = 'Vi ses snart,';
+$lang['Go to']  =  'Gå til';
+$lang['Hello']  =  'Hej';
+$lang['New photos were added'] = 'Nye fotografier er tilføjet';
+$lang['on'] = 'på';
+$lang['between'] = 'mellem';
+$lang['and'] = 'og';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster har tilmeldt dig notifikationer pr. mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Du er tilmeldt notifikationer pr. mail.';
+$lang['To subscribe'] = 'For at tilmelde';
+$lang['If you encounter problems or have any question, please send a message to']  =  'Hvis du støder på problemer eller har spørgsmål, bedes du sende en besked til';
+$lang['[NBM] Problems or questions']  =  '[NBM] Problemer eller spørgsmål';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster har afmeldt dig notifikationer pr. mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Du er afmeldt notifikationer pr. mail.';
+$lang[', click on'] = ', klik på';
+$lang['To unsubscribe']  =  'For at afmelde';
+$lang['With blank value, gallery title will be used'] = 'Hvis tom benyttes galleriets titel';
+$lang['Notification'] = 'Meddelelse';
+$lang['Error when sending email to %s [%s].'] = 'Fejl ved afsendelse af e-mail til %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Mail sendt til %s [%s].';
+$lang['%d mail was sent.'] = '%d mail er blevet sendt.';
+$lang['%d mails were sent.'] = '%d mails er blevet sendt.';
+$lang['%d mail was not sent.'] = '%d mail er ikke blevet sendt.';
+$lang['%d mails were not sent.'] = '%d mails ikke er blevet sendt.';
+$lang['No mail to send.'] = 'Ingen mails skal sendes.';
+$lang['There is no available subscribers to mail.'] = 'Der er ingen tilmeldte, som skal notificeres via mail.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Tilmeldinger kan kun vises (som tilgængelige) når der er nye elementer at give besked om.';
+$lang['Anyway only webmasters can see this tab and never administrators.']  =  'Kun webmastere kan se dette faneblad, ingen administratorer.';
+$lang['No user to send notifications by mail.'] = 'Ingen bruger skal have besked via mail.';
+$lang['New photos added'] = 'Nye fotografier tilføjet';
+$lang['Subscribe to notification by mail'] = 'Bliv tilmeldt notfikation pr. mail';
+$lang['Unsubscribe from notification by mail'] = 'Afmeld notifikationer pr. mail';
+$lang['Parameter'] = 'Indstillinger';
+$lang['Operation in progress'] = 'Behandling i gang';
+$lang['Continue processing treatment']  =  'Fortsæt igangværende behandling';
+$lang['Complementary mail content'] = 'Supplerende mails indhold';
+$lang['Add detailed content'] = 'Tilføj detaljeret indhold';
+$lang['Send mail as'] = 'Send mail som';
+$lang['Send mail to users']  =  'Send mail til brugere';
+$lang['Send'] = 'Gem';
+$lang['Options']  =  'Muligheder';
+$lang['Subscribed']  =  'Tilmeldt';
+$lang['Subscribe']  =  'Abonner';
+$lang['Parameters']  =  'Parametre';
+$lang['Select recipients']  =  'Vælg modtagere';
+$lang['Subscribe/unsubscribe users']  =  'Tilmeld / afmeld brugere';
+$lang['Unsubscribed'] = 'Afmeldt';
+$lang['%d parameter was updated.'] = '%d parameter opdateret.';
+$lang['%d parameters were updated.'] = '%d parametre opdateret.';
+$lang['%d user was not updated.'] = '%d bruger ikke opdateret.';
+$lang['%d users were not updated.'] = '%d brugere ikke opdateret.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Brugeren %s [%s] blev fjernet fra tilmeldingslisten.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Brugeren %s [%s] blev føjet til tilmeldingslisten.';
+$lang['%d user was updated.'] = '%d bruger opdateret.';
+$lang['%d users were updated.'] = '%d brugere opdateret.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Brugeren %s [%s] blev ikke fjernet fra tilmeldingslisten.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Brugeren %s [%s] blev ikke føjet til tilmeldingslisten.';
+$lang['User %s [%s] added.'] = 'Brugeren %s [%s] tilføjet.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Advarsel: tilmelding eller afmelding vil sende mails til brugere';
+$lang['Send mail on HTML format']  =  'Send mail i HTML-format';
+$lang['Include display of recent photos grouped by dates'] = 'Medtag visning af de seneste fotografier grupperet efter datoer';
+$lang['Available only with HTML format'] = 'Findes kun med HTML-format';
+$lang['no write access'] = 'ingen skriveadgang';
+$lang['Permissions'] = 'Tilladelser';
+$lang['private'] = 'privat';
+$lang['public'] = 'offentlig';
+$lang['Purge never used notification feeds'] = 'Tøm aldrig anvendte notificeringsfeeds';
+$lang['Purge sessions'] = 'Tøm sessioner';
+$lang['randomly represented'] = 'tilfældigt albumminiaturebillede';
+$lang['registration date'] = 'registreringsdato';
+$lang['clean'] = 'oprydning';
+$lang['Create this site'] = 'Opret dette websted';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'test dette fjerne websted';
+$lang['remove tags'] = 'Fjern tags';
+$lang['Repair and optimize database'] = 'Reparer og optimer database';
+$lang['selection'] = 'udvælgelse';
+$lang['set to'] = 'opsat til';
+$lang['singly represented'] = 'fast albumminiaturebillede';
+$lang['This site already exists'] = 'Dette websted findes allerede';
+$lang['created'] = 'oprettet';
+$lang['delete'] = 'slet';
+$lang['delete this site and all its attached elements'] = 'Slet dette websted og alle relaterede oplysninger';
+$lang['an error happened'] = 'der opstod en fejl';
+$lang['Local'] = 'Lokal';
+$lang['Remote'] = 'Remote';
+$lang['update the database from files'] = 'opdater databasen med filer';
+$lang['status'] = 'status';
+$lang['Directory']  =  'Mappe';
+$lang['sub-albums'] = 'underalbummer';
+$lang['Synchronize metadata'] = 'Synkroniser metadata';
+$lang['target'] = 'mål';
+$lang['Thumbnail'] = 'Miniaturebillede';
+$lang['Title'] = 'Titel';
+$lang['Album list management'] = 'Håndtering af albumliste';
+$lang['Piwigo configuration'] = 'Piwigo-opsætning';
+$lang['Edit album'] = 'Rediger album';
+$lang['Group management'] = 'Grupperadministration';
+$lang['User list'] = 'Brugerliste';
+$lang['Edit photo information'] = 'Rediger fotografioplysninger';
+$lang['Database synchronization with files'] = 'Databasesynkronisering med filer';
+$lang['all'] = 'alle';
+$lang['height must be a number superior to'] = 'højden skal være et tal større end';
+$lang['width must be a number superior to'] = 'bredde skal være et tal større end';
+$lang['for the file format'] = 'for filformatet';
+$lang['Photo unreachable or no support'] = 'Fotografi utilgængeligt eller ikke-understøttet format';
+$lang['GD version'] = 'GD version';
+$lang['General statistics'] = 'Generelle statistikker';
+$lang['average time'] = 'gennemsnitlig tid';
+$lang['number of miniaturized photos'] = 'antal dannede miniaturebilleder';
+$lang['total time'] = 'total tid';
+$lang['for this file format'] = 'for dette filformat';
+$lang['unit mode'] = 'enkelttilstand';
+$lang['Unlocked'] = 'Låst op';
+$lang['unset'] = 'ikke opsat';
+$lang['Update albums informations'] = 'Opdater albumoplysninger';
+$lang['Update photos information'] = 'Opdater fotografioplysninger';
+$lang['Synchronize']  =  'Synkroniser';
+$lang['reduce to single existing albums'] = 'reducer til enkelte eksisterende albummer';
+$lang['Choose an option'] = 'Vælg en mulighed';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'vis flest mulige oplysninger (tilføjede albummer og fotografier, slettede albummer og fotografier)';
+$lang['Error list']  =  'Liste over fejl';
+$lang['Errors caption'] = 'Fejlforklaringer';
+$lang['Detailed informations']  =  'Detaljeret information';
+$lang['File/directory read error'] = 'Læsefejl ved fil/mappe';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Kan ikke tilgå fil eller mappe (enten eksisterer den ikke også nægtes adgang)';
+$lang['albums deleted in the database'] = 'albummer slettet i databasen';
+$lang['photos deleted from the database'] = 'fotografier slettet i databasen';
+$lang['photos candidates for metadata synchronization'] = 'fotografier som er kandidater til metadatasynkronisering';
+$lang['photos informations synchronized with files metadata'] = 'fotografioplysninger synkroniseret med filers metadata';
+$lang['errors during synchronization'] = 'fejl under synkronisering';
+$lang['albums added in the database'] = 'albummer føjet til databasen';
+$lang['photos added in the database'] = 'fotografier føjet til databasen';
+$lang['photos updated in the database'] = 'fotografier opdateret i databasen';
+$lang['Search for new images in the directories'] = 'Søg efter nye billeder i mapperne';
+$lang['added'] = 'tilføjet';
+$lang['deleted'] = 'slettet';
+$lang['Metadata synchronization results'] = 'Resultat af metadatasynkronisering';
+$lang['only perform a simulation (no change in database will be made)'] = 'udfør kun en simulering (intet vil blive ændret i databasen)';
+$lang['Simulation'] = 'Simulering';
+$lang['directories + files'] = 'mapper + filer';
+$lang['only directories'] = 'kun mapper';
+$lang['synchronize files structure with database'] = 'Synkroniser filstruktur med databasen';
+$lang['synchronize files metadata with database photos informations'] = 'Synkroniser fotografier i databasen med filers metadata';
+$lang['even already synchronized photos'] = 'allerede synkroniserede fotografier';
+$lang['Used metadata']  =  'Metadata anvendes';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Navnet på mapper og filer må kun bestå af bogstaver, tal, "-", "_" eller "."';
+$lang['wrong filename'] = 'forkert filnavn';
+$lang['Upload']  =  'Upload';
+$lang['user "%s" added'] = 'brugeren "%s" er tilføjet';
+$lang['User status'] = 'Brugerstatus';
+$lang['user_status_admin']  =  'Administrator';
+$lang['user_status_generic']  =  'Generisk';
+$lang['user_status_guest']  =  'Gæst';
+$lang['user_status_normal']  =  'Bruger';
+$lang['user_status_webmaster']  =  'Webmaster';
+$lang['Virtual album'] = 'Virtuelt album';
+$lang['Waiting'] = 'Afventer';
+$lang['default'] = 'standard';
+$lang['Toggle \'default group\' property'] = 'Vend \'standardgruppe\'-egenskaben om';
+$lang['Advanced features']  =  'Avancerede funktioner';
+$lang['Overall'] = 'Oversigt';
+$lang['Year'] = 'År';
+$lang['Month'] = 'Måned';
+$lang['Day'] = 'Dag';
+$lang['Pages seen']  =  'Sider set';
+$lang['Time'] = 'Tid';
+$lang['IP']  =  'IP';
+$lang['Element']  =  'Element';
+$lang['Section']  =  'Afsnit';
+$lang['An information email was sent to group "%s"'] = 'Informationsmail sendt til gruppen "%s"';
+$lang['Send an information email to group members'] = 'Send en oplysningsmail til gruppens medlemmer';
+$lang['Group']  =  'Gruppe';
+$lang['[%s] Visit album %s'] = '[%s] Besøg album %s';
+$lang['Hello,']  =  'Hej,';
+$lang['See you soon.'] = 'Vi ses snart.';
+$lang['Discover album:'] = 'Gennemse album:';
+$lang['Mail content'] = 'Mailindhold';
+$lang['none'] = 'ingen';
+$lang['high'] = 'høj';
+$lang['other'] = 'andre';
+$lang['Element type'] = 'Elementtype';
+$lang['Image id'] = 'Billedeid';
+$lang['Summary'] = 'Opsummering';
+$lang['%d line filtered'] = '%d linje filtreret';
+$lang['%d lines filtered'] = '%d linjer filtreret';
+$lang['%d guest'] = '%d gæst';
+$lang['%d guests'] = '%d gæster';
+$lang['Hour']  =  'Time';
+$lang['guest'] = 'gæst';
+$lang['default values'] = 'standardværdier';
+$lang['Guest cannot be deleted']  =  'Gæst kan ikke slettes';
+$lang['Default user cannot be deleted'] = 'Standardbruger kan ikke slettes';
+$lang['Purge history detail'] = 'Tøm historikdetaljer';
+$lang['Purge history summary'] = 'Tøm historiksammendrag';
+$lang['Check integrity'] = 'Integritetskontrol';
+$lang['Anomaly'] = 'Afvigelse';
+$lang['Correction']  =  'Korrektion';
+$lang['Automatic correction']  =  'Automatisk korrektion';
+$lang['Impossible automatic correction'] = 'Automatisk korrektion ikke mulig';
+$lang['Correction applied with success']  =  'Korrektion anvendt med succes';
+$lang['Correction applied with error'] = 'Korrektion anvendt med fejl';
+$lang['%d anomaly has been detected.'] = '%d afvigelse er konstateret.';
+$lang['%d anomalies have been detected.'] = '%d afvigelser er påvist.';
+$lang['%d anomaly has been corrected.'] = '%d afvigelse er korrigeret.';
+$lang['%d anomalies have been detected corrected.'] = '%d afvigelser er blevet opdaget og rettet.';
+$lang['%d anomaly has not been corrected.'] = '%d afvigelse er ikke blevet korrigeret.';
+$lang['%d anomalies have not been corrected.'] = '%d afvigelser har ikke været korrigeret.';
+$lang['Go to %s or %s for more informations'] = 'Gå til %s eller %s for flere oplysninger';
+$lang['the forum'] = 'forummet';
+$lang['the wiki'] = 'wikien';
+$lang['%s value is not correct file because exif are not supported']  =  '%s værdi er forkert, fordi exif ikke er understøttet';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s skal være sat til false i din local/config/config.inc.php-fil';
+$lang['Main "guest" user does not exist'] = 'Den primære "guest"-bruger findes ikke';
+$lang['Main "guest" user status is incorrect'] = 'Den primære "guest"-brugers status er forkert';
+$lang['Default user does not exist'] = 'Standardbruger findes ikke';
+$lang['Main "webmaster" user does not exist'] = 'Den primære "webmaster"-bruger findes ikke';
+$lang['Main "webmaster" user status is incorrect'] = 'Den primære "webmaster"-brugers status er forkert';
+$lang['User "%s" created with "%s" like password'] = 'Brugeren "%s" er oprettet med "%s" som adgangskode';
+$lang['Status of user "%s" updated'] = 'Status for brugeren "%s" er opdateret';
+$lang['add new photos to caddie'] = 'tilføj nye fotografier til kurv';
+$lang['No display'] = 'Intet display';
+$lang['Classic display'] = 'Klassisk visning';
+$lang['Hoverbox display'] = 'Hoverbox-visning';
+$lang['Mail address is obligatory for all users'] = 'Mailadresse er obligatorisk for alle brugere';
+$lang['Minimum privacy level'] = 'Minimalt privatlivniveau';
+$lang['Privacy level'] = 'Privatlivsniveau';
+$lang['Level 0'] = '---';
+$lang['Level 1']  =  'Kontakter';
+$lang['Level 2']  =  'Venner';
+$lang['Level 4']  =  'Familie';
+$lang['Level 8']  =  'Admins';
+$lang['Reinitialize check integrity'] = 'Geninitialiser integritetskontrol';
+$lang['Check all']  =  'Check alle';
+$lang['Uncheck all'] = 'Fravælg alle';
+$lang['Check automatic corrections']  =  'Check automatiske rettelser';
+$lang['Apply selected corrections']  =  'Anvend udvalgte korrektioner';
+$lang['Ignore selected anomalies'] = 'Ignorer valgte afvigelser';
+$lang['Refresh'] = 'Opfrisk';
+$lang['The anomaly will be ignored until next application version'] = 'Afvigelsen vil blive ignoreret indtil næste applikationsversion';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Korrigeret afvigelse vil efterfølgende ikke blive ignoreret';
+$lang['%d anomaly has been ignored.'] = '%d afvigelse er blevet ignoreret.';
+$lang['%d anomalies have been ignored.'] = '%d afvigelser er blevet ignoreret.';
+$lang['Plugins which need upgrade'] = 'Plugins der skal opgraderes';
+$lang['Plugin list'] = 'Pluginliste';
+$lang['Check for updates'] = 'Se efter opdateringer';
+$lang['Other plugins'] = 'Andre tilgængelige plugins';
+$lang['Last revisions'] = 'Seneste revideringer';
+$lang['Are you sure you want to delete this plugin?'] = 'Er du sikker på, at du vil slette denne plugin?';
+$lang['Are you sure you want to install this plugin?'] = 'Er du sikker på, at du vil installere denne plugin?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Er du sikker på, at du vil installere denne opgradering? Du skal undersøge hvorvidt denne version kræver forudgående afinstallering.';
+$lang['Plugin has been successfully copied'] = 'Plugin\'en er blevet kopieret';
+$lang['You might go to plugin list to install and activate it.'] = 'Gå til pluginlisten for at installere og aktivere den.';
+$lang['Can\'t create temporary file.']  =  'Midlertidige filer kan ikke oprettes.';
+$lang['Can\'t download archive.'] = 'Arkiv kan ikke downloades.';
+$lang['Can\'t read or extract archive.'] = 'Arkiv ikke kan læses eller udpakkes.';
+$lang['An error occured during extraction (%s).'] = 'En fejl opstod under filens (%s) udpakning.';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Kontroller tilladelser for mappen "plugins" og dens undermappe (chmod).';
+$lang['Can\'t connect to server.'] = 'Tilslutning til server ikke mulig.';
+$lang['Purge compiled templates'] = 'Tøm kompilerede skabeloner';
+$lang['ACCESS_0']  =  'Fri adgang';
+$lang['ACCESS_1'] = 'Adgang for alle';
+$lang['ACCESS_2'] = 'Adgang for registrerede brugere';
+$lang['ACCESS_3'] = 'Adgang for administratorer';
+$lang['ACCESS_4'] = 'Adgang for webmastere';
+$lang['ACCESS_5']  =  'Ingen adgang';
+$lang['Support']  =  'Support';
+$lang['Documentation']  =  'Dokumentation';
+$lang['A new version of Piwigo is available.']  =  'En ny version af Piwigo er tilgængelig.';
+$lang['Piwigo Administration']  =  'Piwigo Administration';
+$lang['Piwigo version'] = 'Piwigo-version';
+$lang['You are running the latest version of Piwigo.'] = 'Du kører den seneste version af Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Den version af %s [%s] er installeret ikke er kompatibel med den krævede version  [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Du bør opgradere dit system for at drage fuld nytte af programmet, ellers risikerer du at programmet virke forkert, eller slet ikke';
+$lang['Deleted on'] = 'Slettet den';
+$lang['Last hit'] = 'Seneste hit';
+$lang['GD library is missing'] = 'GD-biblioteket mangler';
+$lang['Templates']  =  'Skabeloner';
+$lang['Extend for templates'] = 'Udvid skabeloner';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Erstatning af originale skabeloner med tilpassede skabeloner fra undermappen template-extension';
+$lang['Replacers (customized templates)']  =  'Stedfortrædere (tilpassede skabeloner)';
+$lang['Original templates'] = 'Original skabelon';
+$lang['Optional URL keyword'] = 'Valgfrit URL-nøgleord';
+$lang['Templates configuration has been recorded.'] = 'Opsætning af skabeloner er registreret.';
+$lang['All optimizations have been successfully completed.'] = 'Alle optimeringer er afsluttet med succes.';
+$lang['Optimizations have been completed with some errors.']  =  'Optimeringer er afsluttet med nogle fejl.';
+$lang['Modify information']  =  'Rediger oplysninger';
+$lang['nothing'] = 'intet';
+$lang['overrides existing values with empty ones'] = 'erstatter eksisterende værdier med tomme';
+$lang['Manage photo ranks'] = 'Sorteringsrækkefølge';
+$lang['Edit ranks'] = 'Rediger karakterer';
+$lang['No photo in this album'] = 'Ingen fotografier i dette album';
+$lang['Images manual order was saved'] = 'Manuel billedrækkefølge gemt';
+$lang['ranks'] = 'karakterer';
+$lang['Drag to re-order'] = 'Klik-og-træk for at arrangere';
+$lang['Quick Local Synchronization'] = 'Quick Local Synchronization';
+$lang['No photo can be deleted'] = 'Ingen fotografier kan slettes';
+$lang['Delete selected photos'] = 'Slet valgte fotografier';
+$lang['%d photo was deleted'] = '%d fotografier slettet';
+$lang['%d photos were deleted'] = '%d fotografier slettet';
+$lang['Downloads']  =  'Downloads';
+$lang['Released on'] = 'Frigivet den';
+$lang['Number of downloads'] = 'Antal downloads';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Announcement Newsletter';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hold kontakt med Piwigo-projektet ved at tilmelde dig Piwigo Announcement Newsletter. Du vil modtage e-mails, når en ny udgivelser er tilgængelige (undertiden herunder også  fejlrettelser, som er vigtige at være bekendt med og opgradere til), samt når der sker større begivenheder i projektet. Du vil normal kun modtage få e-mails om året.';
+$lang['Subscribe %s'] = 'Tilmeld %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Tilmeld %s til Piwigo Announcements Newsletter';
+$lang['Purge search history'] = 'Tøm søgehistorik';
+$lang['Hide']  =  'Skjul';
+$lang['Password is missing. Please enter the password.'] = 'Adgangskoden mangler. Indtast adgangskoden.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Adgangskodebekræftelse mangler. Bekræft den valgte adgangskode.';
+$lang['Allow users to edit their own comments'] = 'Tillad at brugere redigerer deres egne kommentarer';
+$lang['Allow users to delete their own comments'] = 'Tillad at brugere sletter deres egne kommentarer';
+$lang['Email administrators when a comment is modified'] = 'Send e-mail til administratorer når en kommentar ændres';
+$lang['Email administrators when a comment is deleted'] = 'Send e-mail til administratorer, når en kommentar er slettet';
+$lang['Cannot delete the old permalink !'] = 'Det eksisterende permalink kan ikke slettes!';
+$lang['Hit']  =  'Hit';
+$lang['Tools'] = 'Værktøjer';
+$lang['Photos'] = 'Fotografier';
+$lang['Themes']  =  'Temaer';
+$lang['Instructions to use Piwigo'] = 'Vejledning i at anvende Piwigo';
+$lang['Installed Themes']  =  'Installerede temaer';
+$lang['Add New Theme']  =  'Tilføj et nyt tema';
+$lang['Forbid this theme to users']  =  'Forbyd dette tema til brugere';
+$lang['Set as default theme for unregistered and new users'] = 'Opsæt som standardtema for ikke-registrerede og nye brugere';
+$lang['unknown'] = 'ukendt';
+$lang['Upload Photos'] = 'Upload fotografier';
+$lang['Drop into album'] = 'Vælg et album';
+$lang['+ Add an upload box'] = '+ Tilføj en uploadboks';
+$lang['Upload']  =  'Upload';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Opret mappen \'%s\' i roden af din Piwigo-installation';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Giv skriveadgang (chmod 777) til mappen \'%s\' i roden af din Piwigo-installation';
+$lang['existing album'] = 'eksisterende album';
+$lang['create a new album'] = 'Opret et nyt album';
+$lang['Album name'] = 'Albumnavn ';
+$lang['Album "%s" has been added'] = 'Albummet \'%s\' er blevet tilføjet ';
+$lang['Uploaded Photos'] = 'Uploadede fotografier ';
+$lang['%d photos uploaded'] = '%d fotografier uploaded';
+$lang['Privacy level set to "%s"'] = 'Privatlivsniveau sat til "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Albummet \'%s\' indeholder nu %d fotografier';
+$lang['Manage this set of %d photos'] = 'Administrer dette sæt bestående af %d fotografier';
+$lang['Select files']  =  'Vælg filer';
+$lang['Everybody']  =  'Alle';
+$lang['Who can see these photos?'] = 'Hvem kan se disse fotografier?';
+$lang['Settings']  =  'Indstillinger';
+$lang['Resize'] = 'Størrelsesændring';
+$lang['Maximum width']  =  'Maksimal bredde';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height']  =  'Maksimal højde';
+$lang['Image Quality']  =  'Billedkvalitet ';
+$lang['Save Settings'] = 'Gem indstillinger ';
+$lang['Your configuration settings are saved'] = 'Din opsætning er gemt';
+$lang['Active Themes'] = 'Aktive temaer';
+$lang['Add write access to the "%s" directory'] = 'Tilføj skriveadgang til mappen "%s"';
+$lang['Administration Home'] = 'Administrationsforside';
+$lang['Change Admin Colors'] = 'Skift farver på administrationsmodul';
+$lang['Delete this theme']  =  'Slet dette tema';
+$lang['Directory does not exist'] = 'Mappe findes ikke ';
+$lang['Download,'] = 'Download,';
+$lang['FTP + Synchronization'] = 'FTP + synkronisering';
+$lang['Get Support on Piwigo Forum'] = 'Få support i Piwigos forum ';
+$lang['Help Me']  =  'Hjælp mig';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Dette tema kunne ikke aktiveres, da det overordnede tema mangler: %s ';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Dette tema kan ikke slettes, fordi andre temaer afhænger af det: %s';
+$lang['Inactive Themes']  =  'Inaktive temaer';
+$lang['Install on your computer,']  =  'Installer på din computer,';
+$lang['Make this theme available to users'] = 'Gør dette tema tilgængeligt for brugerne';
+$lang['Page end'] = 'Sideslut ';
+$lang['Piwigo Uploader']  =  'Piwigo Uploader ';
+$lang['Operation in progress']  =  'Behandler';
+$lang['Please wait...'] = 'Vent venligst ...';
+$lang['Read Piwigo Documentation'] = 'Læs Piwigos dokumentation';
+$lang['Start pLoader and add your photos.'] = 'Start pLoader og tilføj dine fotografier.';
+$lang['Switch to clear or dark colors for administration'] = 'Skift til lyse eller mørke farver i administration';
+$lang['Theme has been successfully installed'] = 'Temaet blev installeret';
+$lang['Visit Gallery']  =  'Besøg galleriet';
+$lang['Visit Piwigo project website'] = 'Besøg Piwigo-projektets hjemmeside';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for <em>Piwigo Uploader</em>. På din computer forbereder pLoader dine fotografier og overfører dem til dit Piwigo-fotogalleri.';
+$lang['Guest Settings'] = 'Gæsteindstillinger ';
+$lang['Main Page']  =  'Forside';
+$lang['Photo Page'] = 'Fotoside ';
+$lang['Activate Navigation Bar'] = 'Aktiver navigationsbjælke';
+$lang['Activate Navigation Thumbnails'] = 'Aktiver navigeringsminiaturebilleder';
+$lang['Activate icon "%s"'] = 'Aktiver ikonen \'%s\'';
+$lang['Photo Properties'] = 'Fotografiegenskaber';
+$lang['Allow user customization']  =  'Tillad brugertilpasning';
+$lang['Languages']  =  'Sprog';
+$lang['Installed Languages'] = 'Installerede sprog';
+$lang['Add New Language']  =  'Tilføj nyt sprog ';
+$lang['Language has been successfully installed'] = 'Sproget er installeret';
+$lang['Select:']  =  'Vælg:';
+$lang['None']  =  'Ingen';
+$lang['Invert']  =  'Vend';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Ikke muligt at deaktivere dette tema, du skal have mindst ét tema';
+$lang['Webmaster status is required.'] = 'Webmasterstatus er krævet.';
+$lang['Bound Theme'] = 'Tilknyttet tema';
+$lang['Allow rating'] = 'Tillad bedømmelse';
+$lang['Select at least one comment']  =  'Vælg mindst én kommentar';
+$lang['Active Plugins'] = 'Aktive plugins ';
+$lang['Inactive Plugins']  =  'Inaktive plugins ';
+$lang['Missing Plugins'] = 'Manglende plugins';
+$lang['Uninstalled Plugins'] = 'Afinstallerede plugins ';
+$lang['By %s'] = 'Af %s';
+$lang['Visit plugin site'] = 'Besøg pluginwebstedet';
+$lang['By rank'] = 'Efter bedømmelse';
+$lang['Manual order'] = 'Manuel rækkefølge';
+$lang['Who can see this photo?'] = 'Hvem kan se dette fotografi?';
+$lang['Active Languages'] = 'Aktive sprog';
+$lang['Delete this language'] = 'Slet dette sprog';
+$lang['Forbid this language to users'] = 'Forbyd dette sprog til brugere';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ikke muligt at deaktivere dette sprog, du skal først vælge et andet sprog som standard.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ikke muligt at deaktivere dette sprog, du skal have mindst ét sprog.';
+$lang['Inactive Languages'] = 'Inaktive sprog';
+$lang['Make this language available to users'] = 'Gør dette sprog tilgængeligt for brugerne';
+$lang['Set as default language for unregistered and new users'] = 'Opsæt som standardsprog for ikke-registrerede og nye brugere';
+$lang['Add Photos'] = 'Tilføj fotografier';
+$lang['The following tag was deleted'] = 'Følgende tag er slettet';
+$lang['Miscellaneous'] = 'Forskelligt';
+$lang['Virtual Links'] = 'Virtuelle links';
+$lang['There is no other language available.'] = 'Der er ikke andre sprog til rådighed.';
+$lang['There is no other plugin available.'] = 'Der er ikke andre tilgængelige plugins.';
+$lang['There is no other theme available.'] = 'Der er ikke andre tilgængelige temaer.';
+$lang['Add another set of photos'] = 'Tilføj et sæt fotografier mere';
+$lang['Order of menubar items has been updated successfully.'] = 'Rækkefølge af menubjælker er opdateret.';
+$lang['This theme was not designed to be directly activated'] = 'Dette tema er ikke beregnet til at blive aktiveret direkte';
+$lang['Pending Comments'] = 'Ventende kommentarer';
+$lang['Menu Management'] = 'Menu';
+$lang['new'] = 'ny';
+$lang['No file was uploaded'] = 'Ingen filer blev uploadet';
+$lang['No photo in the current set.'] = 'Ingen fotografier i det aktuelle sæt.';
+$lang['No photo selected, %d photos in current set'] = 'Ingen fotografier valgt, %d fotografier i nuværende sæt';
+$lang['No photo selected, no action possible.'] = 'Ingen fotografier valgt, ingen mulige handlinger.';
+$lang['No results'] = 'Ingen resultater';
+$lang['on the %d selected photos'] = 'på de %d valgte fotografier';
+$lang['Predefined filter'] = 'Foruddefineret filter';
+$lang['Refresh photo set'] = 'Opfrisk fotosættet';
+$lang['Remove all filters'] = 'Fjern alle filtre';
+$lang['remove author'] = 'fjern forfatter';
+$lang['remove creation date'] = 'fjern oprettelsesdato';
+$lang['Remove from caddie'] = 'Fjern fra kurv';
+$lang['remove this filter'] = 'fjern dette filter';
+$lang['remove title'] = 'fjern titel';
+$lang['Searching...'] = 'Søger ...';
+$lang['Selection'] = 'Udvælgelse';
+$lang['Set author'] = 'Opsæt forfatter';
+$lang['Set creation date'] = 'Opsæt oprettelsesdato';
+$lang['Set title'] = 'Opsæt titel';
+$lang['Learn more'] = 'Lær mere';
+$lang['Rate'] = 'Bedøm';
+$lang['Average rate'] = 'Gennemsnitlig bedømmelse';
+$lang['An error has occured during upgrade.'] = 'Der opstod en fejl under opgraderingen.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Der opstod en fejl under udpakningen. Tjek filrettigheder i din Piwigo-installation.<br><a href="%s">Klik her for at se fejlloggen</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan ikke modtage opgraderingsfiler fra serveren';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Medtag historiske data (Advarsel: Hukommelsesbegrænsning på serveren kan blive overskredet)';
+$lang['Unable to dump database.'] = 'Det er ikke muligt dump\'e databasen.';
+$lang['Update in progress... Please wait.'] = 'Opdateringen er i gang... Vent venligst.';
+$lang['Update to Piwigo %s'] = 'Opdater til Piwigo %s';
+$lang['Two updates are available'] = 'Der er to opdateringer til rådighed';
+$lang['%d of %d photos selected'] = '%d af %d fotografier udvalgt';
+$lang['Action'] = 'Handling';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktiver ikonen "ny" ved siden af albummer og billeder';
+$lang['Add a criteria'] = 'Tilføj kriterium';
+$lang['Add a filter'] = 'Tilføj et filter';
+$lang['Album photos associated to the following albums: %s'] = 'Fotografierne i albummet er knyttet til følgende albummer: %s';
+$lang['Albums automatically sorted'] = 'Albummer er automatisk sorteret';
+$lang['All %d photos are selected'] = 'Alle %d fotografier er valgt';
+$lang['Apply action'] = 'Godkend handling';
+$lang['automatic order'] = 'automatisk rækkefølge';
+$lang['Batch Manager'] = 'Batch Manager';
+$lang['Choose an action'] = 'Vælg en handling';
+$lang['Deactivate all'] = 'Deaktiver alle';
+$lang['Default photos order'] = 'Standardrækkefølge for fotografier';
+$lang['Delete orphan tags'] = 'Slet forældreløse tags';
+$lang['delete photo'] = 'slet fotografi';
+$lang['Duplicates'] = 'Dubletter';
+$lang['Error on file "%s" : %s'] = 'Fejl i filen "%s": %s';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif-udvidelsen er ikke tilgængelig, admin bør deaktivere anvendelse af exif';
+$lang['Failed to write file to disk'] = 'Fejl i skrivning til disk';
+$lang['File upload stopped by extension'] = 'Filupload er stoppet';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini-fil, er upload_max_filesize (%sB) større end post_max_size (%sB), du bør ændre denne indstilling';
+$lang['include child albums'] = 'medtag underalbummer';
+$lang['Last import'] = 'Seneste import';
+$lang['manual order'] = 'manual rækkefølge';
+$lang['Missing a temporary folder'] = 'Mangler midlertidig mappe';
+$lang['Orphan tags deleted'] = 'Forældreløse tags slettet';
+$lang['Restore'] = 'Genopret';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Genopret standardopsætning. Du vil miste dine plugin-indstillinger!';
+$lang['Show menubar'] = 'Vis menubjælke';
+$lang['Add to caddie'] = 'tilføj til kurv';
+$lang['%s has been successfully updated.'] = '%s er blevet opdateret.';
+$lang['%s photos can not be regenerated'] = '%s fotografier kan ikke gendannes';
+$lang['%s photos have been regenerated'] = '%s fotografier er gendannet';
+$lang['(this tag will be deleted)'] = '(dette tag vil blive slettet)';
+$lang['... or '] = '... eller ';
+$lang['Activate comments'] = 'Aktiver kommentarer';
+$lang['All extensions are up to date.'] = 'Alle udvidelser er opdaterede.';
+$lang['All languages are up to date.'] = 'Alle sprog er opdaterede.';
+$lang['All plugins are up to date.'] = 'Alle plugins er opdaterede.';
+$lang['All themes are up to date.'] = 'Alle temaer er opdaterede.';
+$lang['Allowed file types: %s.'] = 'Tilladte filtyper: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Omtrentlig maksimal opløsning: %dM pixels (der er %dx%d pixels).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard vil Piwigo danne en ny webstørrelse fra HD-versionen (højopløselig) af dit fotografi.';
+$lang['Confirm merge'] = 'Bekræft sammenlægning';
+$lang['Create'] = 'Dan';
+$lang['Crop'] = 'Beskær';
+$lang['Default comments order'] = 'Standardkommentarrækkefølge';
+$lang['display'] = 'vis';
+$lang['Do you want to activate anyway?'] = 'Vil du aktivere alligevel?';
+$lang['Dump Database'] = 'Dump database';
+$lang['ERROR'] = 'FEJL';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEJL: DENNE PLUGIN MANGLER, MEN ER INSTALLERET! AFINSTILLER NU.';
+$lang['Extensions Update'] = 'Opdater udvidelser';
+$lang['Follow Orientation'] = 'Følg retning';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Følgende plugins er måske ikke kompatible med den nye version af Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Følgende temaer er måske ikke kompatible med den nye version af Piwigo:';
+$lang['Height'] = 'Højde';
+$lang['hide details'] = 'skjul detaljer';
+$lang['Graphics Library'] = 'Grafikbibliotek';
+$lang['I decide to update anyway'] = 'Jeg vil gerne opdatere alligevel';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Hvis der ikke er HD tilgængelig, og hvis webstørrelsen er større end skaleringsdimensionerne, flytter Piwioi det som HD og danner en nedskaleret fotografi i webstørrelse af det.';
+$lang['Ignore All'] = 'Ignorer alt';
+$lang['Ignore this update'] = 'Ignorer denne opdatering';
+$lang['Manage Permissions'] = 'Administrer tilladelser';
+$lang['Maximum file size: %sB.'] = 'Maksimal filstørrelse: %sB.';
+$lang['Merge selected tags'] = 'Flet udvalgte tags';
+$lang['Merge tags'] = 'Flet tags';
+$lang['New Version'] = 'Ny version';
+$lang['No destination tag selected'] = 'Der er ikke valgt et måltag';
+$lang['Obsolete Plugins'] = 'Forældede plugins';
+$lang['Photo %s of %s'] = 'Fotografi %s af %s';
+$lang['Photo name'] = 'Fotografinavn';
+$lang['Photos generation in progress...'] = 'Dannelse af fotografier er i gang ...';
+$lang['Piwigo Update'] = 'Opdater Piwigo';
+$lang['Reset ignored updates'] = 'Nulstil ignorerede opdateringer';
+$lang['Save Template Directory'] = 'Gem skabelonmappe';
+$lang['Select an album'] = 'Vælg et album';
+$lang['Select at least two tags for merging'] = 'Vælg mindst to tags til sammenlægning';
+$lang['Select the destination tag'] = 'Vælg måltagget';
+$lang['Send connection settings by email'] = 'Send loginoplysninger pr. e-mail';
+$lang['show details'] = 'vis detaljer'; 
+$lang['Some themes and plugins may be not available yet.'] = 'Nogle temaer og plugins er måske endnu ikke tilgængelige.';
+$lang['Some upgrades are available for extensions.'] = 'Der er tilgængelige opgraderinger til nogle udvidelser.';
+$lang['Start Upload'] = 'Begynd Upload';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Taggene <em>%s</em> er blevet lagt ind i tagget <em>%s</em>';
+$lang['The original image quality must be a number between %d and %d'] = 'Det originale billedkvalitet skal være et tal mellem %d og %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Den originale maksimumhøjde skal være et tal mellem %d og %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Den originale maksimumbredde skal være et tal mellem %d og %d';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Dette er en større opdatering, med <a href="%s">nye spændende funktioner</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Dette er en mindre opdatering, kun med fejlrettelser.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE PLUGIN ER NU EN DEL AF PIWIGO CORE! AFINDSTALLER DET NU!';
+$lang['Thumbnails generation in progress...'] = 'Dannelse af miniaturebilleder er i gang ...';
+$lang['Update All'] = 'Opdater alle';
+$lang['Update Complete'] = 'Opdatering gennemført';
+$lang['Updates'] = 'Opdateringer';
+$lang['Visit language site'] = 'Besøg sprogwebsted';
+$lang['Visit theme site'] = 'Besøg temawebstedet';
+$lang['Width'] = 'Bredde';
+$lang['With no album'] = 'Ingen album';
+$lang['With no tag'] = 'Ingen tag';
+$lang['With no virtual album'] = 'Ingen virtuelle albummer';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Du bruger Browser-uploaderen. Prøv <a href="%s">Flash-uploaderen</a> i stedet.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Du bruger Flash-uploaderen. Har du problemer? Prøv <a href="%s">Browser-uploaderen</a> i stedet.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan opdatere til Piwigo %s direkte, uden at opgradere til Piwigo %s (anbefalet).';
+$lang['Zoom'] = 'Zoom';
+$lang['Resize after upload'] = 'Størrelsesændring efter upload';
+$lang['Original Size'] = 'Original størrelse';
+$lang['A locked gallery is only visible to administrators'] = 'Et låst galleri er kun synligt for administratorer';
+$lang['Unlock gallery'] = 'Lås galleri op';
+$lang['Gallery unlocked'] = 'Galleri er låst op';
+$lang['Notify administrators when a comment is'] = 'Giv administratorer besked når en kommentar er';
+$lang['modified'] = 'ændret';
+$lang['pending validation'] = 'afventer godkendelse';
+$lang['Save visits in history for'] = 'Gem besøg i historik for';
+$lang['simple visitors'] = 'simple besøgende';
+$lang['registered users'] = 'registerede brugere';
+$lang['administrators'] = 'administratorer';
+$lang['This album contains %d photos, added on %s.'] = 'Dette album indeholder %d fotografier, tilføjet den %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Dette album indeholder %d fotografier, tilføjet mellem %s og %s.';
+$lang['This album contains no photo.'] = 'Dette album indeholder ingen fotografier.';
+
+$lang['Move to album'] = 'Flyt til album';
+$lang['The whole page'] = 'Hele siden';
+$lang['The whole set'] = 'Hele sættet';
+$lang['Themes which need upgrade'] = 'Temaer der skal opgraderes';
+$lang['Type here the author name'] = 'Skriv forfatterens navn';
+$lang['Type here the title'] = 'Skriv titlen';
+$lang['Type in a search term'] = 'Skriv søgeord';
+$lang['Unknown upload error'] = 'Ukendt fejl ved upload';
+$lang['Week starts on'] = 'Ugen begynder med';
+$lang['Apply watermark if height is bigger than'] = 'Tilføj vandmærke hvis højden er større end';
+$lang['Apply watermark if width is bigger than'] = 'Tilføj vandmærke hvis bredden er større end';
+$lang['Cancel'] = 'Fortryd';
+$lang['Delete multiple size images'] = 'Slet billeder i flere størrelser';
+$lang['Generate multiple size images'] = 'Dan billeder i flere størrelser';
+$lang['Groups and users'] = 'Grupper og brugere';
+$lang['Languages which need upgrade'] = 'Sprog der skal opdateres';
+$lang['Opacity'] = 'Gennemsigtighed';
+$lang['Permission granted for users'] = 'Tilladelser tildelt brugerne';
+$lang['Permission management'] = 'Tilladelsesstyring';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish-plugin til Lightroom';
+$lang['Select a file'] = 'Vælg en fil';
+$lang['Select groups...'] = 'Vælg grupper ...';
+$lang['Select users...'] = 'Vælg brugere ...';
+$lang['The uploaded file was only partially uploaded'] = 'Den uploadede fil blev kun delvist uploadet';
+$lang['There is no group in this gallery.'] = 'Der er ingen grupper i dette galleri.';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVARSEL! Plugin\'en er ikke kompatibelt med denne version af Piwigo.';
+$lang['X Position'] = 'X-position';
+$lang['X Repeat'] = 'X-gentagelse';
+$lang['Y Position'] = 'Y-position';
+$lang['add a new watermark'] = 'tilføj et nyt vandmærke';
+$lang['any visitor can see this album'] = 'alle besøgende kan se dette album';
+$lang['bottom left corner'] = 'nederste venstre hjørne';
+$lang['bottom right corner'] = 'nederste højre hjørne';
+$lang['custom'] = 'Tilpasset';
+$lang['middle'] = 'midt';
+$lang['top left corner'] = 'øverste venstre hjørne';
+$lang['top right corner'] = 'øverste højre hjørne';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Save manual order'] = 'Gem manuel rækkefølge';
+$lang['Automatic sort order'] = 'Automatisk sorteringsrækkefølge';
+$lang['List'] = 'Liste';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo-eksportplugin til Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo-eksportplugin til iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['You can activate only one mobile theme.'] = 'Du kan kun aktivere et mobiltema';
+$lang['apply automatic sort order'] = 'Aktiver automatisk sorteringsrækkefølge';
+$lang['cancel manual order'] = 'afbryd manuel rækkefølge';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam er et avanceret fri software-program til organisering af digitale fotografier til Linux, Windows og Mac OS X.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er designet til fotografer, der ønsker at se, organisere, redigere, optimere, indeksere og dele fotografier.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'App\'en <em>Piwigo for iOS</em> giver dig mulighed for at forbinde en iPhone, iPad eller iPod Touch til dit Piwigo-galleri, oprette albummer og uploade flere fotografier på én gang.';
+$lang['Applications'] = 'Applikationer';
+$lang['Available on'] = 'Tilgængelig på';
+$lang['Available versions for'] = 'Tilgængelige versioner for';
+$lang['Not cropped correctly?'] = 'Ikke beskåret korrekt?';
+$lang['Web Form'] = 'Webformular';
+$lang['You have %d orphan tags: %s.'] = 'Du har %d forældreløse tags: %s';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besøgende skal logge ind samt have de nødvendige tilladelser for at se dette album';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Filstørrelsen på den uploadede fil overstiger MAX_FILE_SIZE-definitionen, som er angivet i HTML-formularen';
+$lang['Multiple Size'] = 'Flere størrelser';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u brugere har automatisk tilladelse, fordi de tilhører en gruppe med tilladelser.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'App\'en <em>Piwigo for Android</em> giver dig mulighed for at forbinde en Android-mobiltelelfon eller -tablet med dit Piwigo-galleri, oprette albummer og uploade flere fotografier på én gang.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom er et fotografiprogram beregnet til at håndtere store mængder digitale billeder og foretage efterbehandling.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er et ydedygtigt værktøj til at forfine billeder og administrere store biblioteker på Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er udviklet til professionelle fotografer med iPhoto-enkelhed.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard er fokusområdet placeret i midten af fotografiet';
+$lang['Center of interest'] = 'Fokusområde';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funktionerne omfatter gennemsyn af galleri, oprettelse af albummer og upload af fotografier.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For fotostørrelser med beskæring, så som "Square", vil Piwigo gøre sit bedste for at medtage fokusområdet.';
+$lang['No group is permitted to see this private album'] = 'Ingen gruppe har rettigheder til at se dette private album';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'På din Linux, installer bare Shotwell med din pakkemanager og aktivér Piwigos udgivelsesvalgmulighed.';
+$lang['Permission granted for groups'] = 'Tilladelse tildelt grupperne';
+$lang['Photo sizes with crop'] = 'Fotostørrelser med beskæring';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Publish-plugin til Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo Publish-plugin til digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery-klient til Android) er en open source-Piwigo-klient (GPL v3) til Android-platformen.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vælg et område med musen for at fastsætte et nyt fokusområde.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell er et open source-organiseringsprogram til digitale fotografier, der kører på Linux. I Ubuntu og Fedora er det standardprogram til organisering af fotografier.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigos eksportplugin giver mulighed for at oprette albummer og eksportere fotografier.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Publish-plugin\'en giver mulighed for at eksportere og synkronisere fotografier fra Lightroom direkte til dit Piwigo-fotogalleri.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Fokusområdet er den mest betydningsfulde område i fotografiet.';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den uploadede fil overstiger upload_max_filesize-definitionen i php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den uploadede fil overstiger post_max_size-definitionen i php.ini: %sB';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For at eksportere dine fotografier fra digiKam til Piwigo, skal du blot installere digiKam og KIPI-plugin\'en.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikke definere en standardrækkefølge for fotografier, fordi du har en tilpasset indstilling i din lokale opsætning.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Du har angivet <i>$conf[\'order_by\']</i> i din lokale opsætningsfil, parameteret er forældet, du skal derfor fjerne det eller omdøbe det til <i>$conf[\'order_by_custom\']</i>!';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standardprogram til håndtering af fotografier under Mac OS X. Ved hjælp af eksportplugin\'en kan du oprette nye albummer og eksportere dine fotografier direkte fra iPhoto til dit Piwigo-fotogalleri.';
+$lang['include photos with lower privacy level'] = 'medtag fotografier med lavere privatlivsniveau';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dage';
+$lang['%d hour'] = '%d time';
+$lang['%d hours'] = '%d timer';
+$lang['%d minute'] = '%d minut';
+$lang['%d minutes'] = '%d minutter';
+$lang['%d month'] = '%d måned';
+$lang['%d months'] = '%d måneder';
+$lang['%d second'] = '%d sekund';
+$lang['%d seconds'] = '%d sekunder';
+$lang['%d year'] = '%d år';
+$lang['%d years'] = '%d år';
+$lang['%s ago'] = '%s siden';
+$lang['%s in the future'] = '%s i fremtiden';
+$lang['Added by %s'] = 'Tilføjet af %s';
+$lang['Numeric identifier : %d'] = 'Numerisk identifikator: %d';
+$lang['Original file : %s'] = 'Original fil: %s';
+$lang['Posted %s on %s'] = 'Sendt %s den %s';
+$lang['Rated %d times, score : %.2f'] = 'Bedømt %d gange, vurdering: %.2f';
+$lang['Sharpen'] = 'Gør skarpere';
+$lang['Visited %d times'] = 'Besøgt %d gange';
+$lang['Watermark'] = 'Vandmærke';
+$lang[' and %d virtuals'] = ' og %d virtuelle';
+$lang['%d physicals'] = ' %d fysiske';
+$lang['%d week'] = '%d uge';
+$lang['%d weeks'] = '%d uger';
+$lang['Edit photo'] = 'Rediger fotografi';
+$lang['create a new site'] = 'opret et nyt websted';
+$lang['No order field selected'] = 'Rækkefølgefeltet er ikke valgt';
+$lang['Duplicate selected tags'] = 'Kopier valgte tags';
+$lang['Name of the duplicate'] = 'Navn på kopi';
+$lang['Source tag'] = 'Kildetag';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagget "%s" er nu en kopi af "%s"';
+$lang['Landscape'] = 'Landskab';
+$lang['Minimum height'] = 'Minimal højde';
+$lang['Minimum width'] = 'Minimal bredde';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portræt';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Den installerede version af %s [%s] er ikke kompatibel med den krævede version [%s]';
+$lang['Manage photos'] = 'Håndter fotografier';
+$lang['View in gallery'] = 'Se i galleri';
+$lang['Number of albums per page'] = 'Antal albummer pr. side';
+$lang['Ratio'] = 'Faktor';
+$lang['between %.2f and %.2f'] = 'mellem %.2f og %.2f';
+$lang['between %d and %d pixels'] = 'mellem %d og %d pixels';
+$lang['Duplicate'] = 'Kopier';
+$lang['Manage the members'] = 'Medlemshåndtering';
+$lang['Merge selected groups'] = 'Læg valgte grupper sammen';
+$lang['No group selected, no action possible.'] = 'Ingen grupper valgt, handling ikke mulig.';
+$lang['No members to manage'] = 'Der er ingen medlemmer at håndtere';
+$lang['Please select at least two groups'] = 'Vælg mindst to grupper';
+$lang['Rename'] = 'Omdøb';
+$lang['This group will be set to default'] = 'Denne gruppe vil blive opsat som standard';
+$lang['This group will be unset to default'] = 'Denne gruppe vil ikke længere være opsat som standard';
+$lang['Type here the name of the new group'] = 'Skriv navnet på den nye gruppe';
+$lang['Purge user cache'] = 'Tøm brugercache';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Billeddimensionerne vil blive reduceret til %dx%d pixels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Størrelsesændring efter upload er deaktiveret, da grafikbiblioteket GD anvendes';
+$lang['Select at least one tag'] = 'Vælg mindst et tag';
+$lang['Basic settings'] = 'Grundlæggende indstillinger';
+$lang['General'] = 'Generelt';
+$lang['Mail theme'] = 'Mailtema';
+$lang['%d of %d users selected'] = '%d af %d brugere valgt';
+$lang['(filtered from %s total users)'] = '(filtreret fra totalt %s brugere)';
+$lang['All %d users are selected'] = 'Alle %d brugere er valgt';
+$lang['Change password'] = 'Ændring af adgangskode';
+$lang['Change username'] = 'Ændring af brugernavn';
+$lang['Last visit on %s, %s.'] = 'Seneste besøg kl. %s den %s.';
+$lang['Loading...'] = 'Indlæser ...';
+$lang['No matching user found'] = 'Ingen brugere fundet som opfylder kriteriet';
+$lang['No user selected of %d users'] = 'Ingen bruger valgt ud af %d brugere';
+$lang['No user selected, no action possible.'] = 'Ingen bruger valgt, ingen handling er mulig.';
+$lang['Password updated'] = 'Adgangskoden er opdateret';
+$lang['Registered on %s, %s.'] = 'Registreret kl. %s den %s.';
+$lang['Show %s users'] = 'Vis %s brugere';
+$lang['Showing %s to %s of %s users'] = 'Viser %s til %s af %s brugere';
+$lang['Update user'] = 'Opdatering af bruger';
+$lang['User %s added'] = 'Brugeren %s er tilføjet';
+$lang['User %s updated'] = 'Brugeren %s er opdateret';
+$lang['Users modified'] = 'Brugere ændret';
+$lang['on the %d selected users'] = 'på de %d valgte brugere';
+?>
Index: /tags/2.6.0RC1/language/da_DK/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/da_DK/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/common.lang.php	(revision 25596)
@@ -0,0 +1,424 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Dansk [DK]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=415
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Dansk';
+$lang_info['country'] = 'Danmark';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'da';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album opdateret';
+$lang['%d albums updated'] = '%d albummer opdateret';
+$lang['%d comment to validate'] = '%d kommentar til godkendelse';
+$lang['%d comments to validate'] = '%d kommentarer til godkendelse';
+$lang['%d new comment'] = '%d ny kommentar';
+$lang['%d new comments'] = '%d nye kommentarer';
+$lang['%d comment'] = '%d kommentar';
+$lang['%d comments'] = '%d kommentarer';
+$lang['%d hit'] = '%d visning';
+$lang['%d hits'] = '%d visninger';
+$lang['%d new photo'] = '%d nyt fotografi';
+$lang['%d new photos'] = '%d nye fotografier';
+$lang['%d new user'] = '%d ny bruger';
+$lang['%d new users'] = '%d nye brugere';
+$lang['About'] = 'Om';
+$lang['All tags'] = 'Alle tags';
+$lang['Any tag'] = 'Ethvert tag';
+$lang['At least one listed rule must be satisfied.'] = 'Mindst en af reglerne skal være opfyldt.';
+$lang['Author'] = 'Forfatter';
+$lang['Albums'] = 'Albummer';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Luk dette vindue';
+$lang['Complete RSS feed (photos, comments)'] = 'Komplet RSS-feed (fotografier, kommentarer)';
+$lang['Confirm Password'] = 'Bekræft adgangskode';
+$lang['Connection settings'] = 'Loginoplysninger';
+$lang['Login'] = 'Log på';
+$lang['Contact webmaster'] = 'Kontakt webmaster';
+$lang['Create a new account'] = 'Opret en ny konto';
+$lang['Created on'] = 'Oprettet den';
+$lang['Creation date'] = 'Oprettelsesdato';
+$lang['Current password is wrong'] = 'Adgangskode er forkert';
+$lang['Dimensions'] = 'Dimensioner';
+$lang['Display'] = 'Visning';
+$lang['Each listed rule must be satisfied.'] = 'Hvert nævnt kriterium skal være opfyldt.';
+$lang['Email address is missing. Please specify an email address.'] = 'E-mail-adresse mangler. Angiv venligst en e-mail-adresse.';
+$lang['Email address'] = 'E-mail-adresse';
+$lang['Enter your personnal informations'] = 'Udfyld dine personlige oplysninger';
+$lang['Error sending email'] = 'Fejl ved afsendelse af e-mail';
+$lang['File name'] = 'Filnavn';
+$lang['File'] = 'Fil';
+$lang['Filesize'] = 'Filstørrelse';
+$lang['Filter and display'] = 'Filtrer og vis';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Har du glemt din adgangskode?';
+$lang['Go through the gallery as a visitor'] = 'Brug galleriet som en besøgende';
+$lang['Help'] = 'Hjælp';
+$lang['Identification'] = 'Identifikation';
+$lang['Photos only RSS feed'] = 'RSS-feed kun med fotografier';
+$lang['Keyword'] = 'Nøgleord';
+$lang['Links'] = 'Links';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Ny på %s';
+$lang['Notification'] = 'RSS-feed';
+$lang['Number of items'] = 'Antal emner';
+$lang['Original dimensions'] = 'Originals dimensioner';
+$lang['Password forgotten'] = 'Glemt adgangskode';
+$lang['Password'] = 'Adgangskode';
+$lang['Post date'] = 'Tilføjelsesdato';
+$lang['Posted on'] = 'Tilføjet den';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Log på hurtigt';
+$lang['RSS feed'] = 'RSS-feed';
+$lang['Register'] = 'Registrer';
+$lang['Registration'] = 'Registrering';
+$lang['Related tags'] = 'Relaterede tags';
+$lang['Reset'] = 'Nulstil';
+$lang['Retrieve password'] = 'Modtag adgangskode';
+$lang['Search rules'] = 'Søgekriterier';
+$lang['Search tags'] = 'Søgetags';
+$lang['Search'] = 'Søg';
+$lang['display available tags'] = 'vis tilgængelige tags';
+$lang['Since'] = 'Siden';
+$lang['Sort by'] = 'Sorter efter';
+$lang['Sort order'] = 'Sorteringsrækkefølge';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tags';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS-feedet giver besked om nyheder fra denne side: Nye fotografier, opdaterede albummer, nye kommentarer. Kræver en RSS-feedlæser.';
+$lang['Unknown feed identifier'] = 'Ukendt feedidentifikation';
+$lang['User comments'] = 'Brugerkommentarer';
+$lang['Username'] = 'Brugernavn';
+$lang['Visits'] = 'Besøg';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Uge %d';
+$lang['About Piwigo'] = 'Om Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Du har ikke tilladelse til at besøge denne side';
+$lang['add this photo to your favorites'] = 'tilføj dette foto til dine favoritter';
+$lang['Administration'] = 'Administration';
+$lang['all'] = 'alle';
+$lang['ascending'] = 'stigende';
+$lang['author(s) : %s'] = 'forfatter(e) : %s';
+$lang['Expand all albums'] = 'Åbn alle albummer';
+$lang['posted after %s (%s)'] = 'tilføjet efter %s (%s)';
+$lang['posted before %s (%s)'] = 'tilføjet før %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'tilføjet mellem %s (%s) og %s (%s)';
+$lang['posted on %s'] = 'tilføjet den %s';
+$lang['Best rated'] = 'Bedst bedømte';
+$lang['display best rated photos'] = 'vis bedste bedømte fotografier';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Alle';
+$lang['display each day with photos, month per month'] = 'vis alle dage med fotografier, måned for måned';
+$lang['View'] = 'Vis';
+$lang['chronology_monthly_calendar'] = 'Månedlig kalender';
+$lang['chronology_monthly_list'] = 'Månedlig liste';
+$lang['chronology_weekly_list'] = 'Ugentlig liste';
+$lang['Click here if your browser does not automatically forward you'] = 'Klik her hvis din browser ikke automatisk sender dig videre';
+$lang['comment date'] = 'kommentardato';
+$lang['Comment'] = 'Kommentar';
+$lang['Your comment has been registered'] = 'Din kommentar er gemt';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-oversvømmelsessystem: Vent et øjeblik før du prøver at oprette en kommentar mere';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Din kommentar blev IKKE gemt, fordi den ikke opfyldte valideringsreglerne';
+$lang['An administrator must authorize your comment before it is visible.'] = 'En administrator skal godkende din kommentar, før den er synlig.';
+$lang['This login is already used by another user'] = 'Dette login anvendes allerede af en anden bruger';
+$lang['Comments'] = 'Kommentarer';
+$lang['Add a comment'] = 'Tilføj en kommentar';
+$lang['created after %s (%s)'] = 'oprettet efter %s (%s)';
+$lang['created before %s (%s)'] = 'oprettet før %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'oprettet mellem %s (%s) og %s (%s)';
+$lang['created on %s'] = 'oprettet den %s';
+$lang['Customize'] = 'Tilpas';
+$lang['Your Gallery Customization'] = 'Tilpasning af dit galleri';
+$lang['day'][0] = 'Søndag';
+$lang['day'][1] = 'Manday';
+$lang['day'][2] = 'Tirsdag';
+$lang['day'][3] = 'Onsdag';
+$lang['day'][4] = 'Torsdag';
+$lang['day'][5] = 'Fredag';
+$lang['day'][6] = 'Lørdag';
+$lang['Default'] = 'Standard';
+$lang['delete this photo from your favorites'] = 'fjern dette fotografi fra dine favoritter';
+$lang['Delete'] = 'Slet';
+$lang['descending'] = 'faldende';
+$lang['Download'] = 'download';
+$lang['Download this file'] = 'Download denne fil';
+$lang['edit'] = 'rediger';
+$lang['wrong date'] = 'forkert dato';
+$lang['excluded'] = 'udelukket';
+$lang['Your favorites'] = 'Dine favoritter';
+$lang['display your favorites photos'] = 'vis mine favoritfotografier';
+$lang['Favorites'] = 'Favoritter';
+$lang['First'] = 'Første';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet er lukket på grund af vedligeholdelse. Kig forbi senere.';
+$lang['Page generated in'] = 'Siden blev dannet på';
+$lang['guest'] = 'gæst';
+$lang['Hello'] = 'Hej';
+$lang['available for administrators only'] = 'kun tilgængelig for administratorer';
+$lang['display this album'] = 'vis dette album';
+$lang['display last user comments'] = 'se seneste brugers kommentarer';
+$lang['customize the appareance of the gallery'] = 'tilpas visningen af galleriet';
+$lang['search'] = 'søg';
+$lang['Home'] = 'Forside';
+$lang['Identification'] = 'Identifikation';
+$lang['in this album'] = 'i dette album';
+$lang['in %d sub-album'] = 'i %d underalbum';
+$lang['in %d sub-albums'] = 'i %d underalbummer';
+$lang['included'] = 'medtaget';
+$lang['Invalid password!'] = 'Forkert adgangskode!';
+$lang['Language']='Sprog';
+$lang['last %d days'] = 'seneste %d dage';
+$lang['Last'] = 'Seneste';
+$lang['Logout'] = 'Log af';
+$lang['obligatory'] = 'obligatorisk';
+$lang['display a calendar by creation date'] = 'viser en kalender over oprettelsesdatoer';
+$lang['display all photos in all sub-albums'] = 'vis alle fotografier i alle underalbummer';
+$lang['return to normal view mode'] = 'tilbage til normal visning';
+$lang['display a calendar by posted date'] = 'viser en kalender over tilføjelsesdatoer';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'December';
+$lang['month'][1] = 'Januar';
+$lang['month'][2] = 'Februar';
+$lang['month'][3] = 'Marts';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Maj';
+$lang['month'][6] = 'Juni';
+$lang['month'][7] = 'Juli';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['Most visited'] = 'Mest sete';
+$lang['display most visited photos'] = 'vis mest sete fotografier';
+$lang['The number of photos per page must be a not null scalar'] = 'Antallet af fotografier pr. side må ikke være nul';
+$lang['Number of photos per page'] = 'Antal fotografier pr. side';
+$lang['Unknown identifier'] = 'Ukendt identifikation';
+$lang['New password'] = 'Ny adgangskode';
+$lang['Rate this photo'] = 'Bedøm dette fotografi';
+$lang['Next'] = 'Næste';
+$lang['no rate'] = 'ingen bedømmelse';
+$lang['Photos posted within the last %d day.'] = 'Kun fotografier tilføjet inden for de seneste %d dag.';
+$lang['Photos posted within the last %d days.'] = 'Kun fotografier tilføjet inden for de seneste %d dage';
+$lang['password updated'] = 'adgangskode opdateret';
+$lang['Recent period must be a positive integer value'] = 'Seneste periode skal være en positiv heltalsværdi';
+$lang['photo'] = 'fotografi';
+$lang['Click on the photo to see it in high definition'] = 'Klik på fotografiet for at se det i høj opløsning';
+$lang['Show file metadata'] = 'Vis fotografiets metadata';
+$lang['Powered by'] = 'Drives af';
+$lang['Preferences'] = 'Indstillinger';
+$lang['Previous'] = 'Tidligere';
+$lang['Random photos'] = 'Tilfældige fotografier';
+$lang['display a set of random photos'] = 'vis et sæt tilfældigt valgte fotografier';
+$lang['Recent albums'] = 'Nyeste albummer';
+$lang['display recently updated albums'] = 'vis nyligt opdaterede albummer';
+$lang['Recent period'] = 'Seneste periode';
+$lang['Recent photos'] = 'Nye fotografier';
+$lang['display most recent photos'] = 'vis de nyeste fotografier';
+$lang['Redirection...'] = 'Omdirigering ...';
+$lang['Please, enter a login'] = 'Skriv loginoplysninger';
+$lang['login mustn\'t end with a space character'] = 'login må ikke slutte med mellemrum';
+$lang['login mustn\'t start with a space character'] = 'login må ikke begynde med mellemrum';
+$lang['this login is already used'] = 'dette login er allerede i brug';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mailadresse skal være på formen xxx@yyy.eee (eksempel: jack@altern.org)';
+$lang['Auto login'] = 'Autologin';
+$lang['remove this tag from the list'] = 'fjern dette tag fra listen';
+$lang['representative'] = 'albums miniaturebillede';
+$lang['Search for Author'] = 'Søg efter forfatter';
+$lang['Search in albums'] = 'Søg i albummer';
+$lang['Search by date'] = 'Søg efter dato';
+$lang['Date'] = 'Dato';
+$lang['End-Date'] = 'Slutdato';
+$lang['Kind of date'] = 'Enhver dato';
+$lang['Search for words'] = 'Søg efter ord';
+$lang['Search for all terms'] = 'Søg efter alle udtryk';
+$lang['Search for any term'] = 'Søg efter enkelte udtryk';
+$lang['Empty query. No criteria has been entered.'] = 'Tom forespørgsel. Ingen kriterier er indtastet.';
+$lang['Search results'] = 'Søgeresultater';
+$lang['Search in sub-albums'] = 'Søg i underalbummer';
+$lang['searched words : %s'] = 'søgte ord: %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'opsæt som albums miniaturebillede';
+$lang['Show number of comments'] = 'Vis antal kommentarer';
+$lang['Show number of hits'] = 'Vis antal af visninger';
+$lang['slideshow'] = 'slideshow';
+$lang['stop the slideshow'] = 'stop slideshow';
+$lang['Specials'] = 'Særligt';
+$lang['SQL queries in'] = 'SQL-forespørgsler på';
+$lang['display only recently posted photos'] = 'vis kun nyligt tilføjede fotografier';
+$lang['return to the display of all photos'] = 'tilbage til alle fotoer';
+$lang['the beginning'] = 'begyndelsen';
+$lang['Thumbnails'] = 'Miniaturebilleder';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'En kommentar vedrørende dit fotogalleri';
+$lang['today'] = 'i dag';
+$lang['Update your rating'] = 'Opdater din bedømmelse';
+$lang['the username must be given'] = 'brugernavn skal angives';
+$lang['useful when password forgotten'] = 'nyttigt ved glemt adgangskode';
+$lang['Quick search'] = 'Hurtig søgning';
+$lang['Connected user: %s'] = 'Indlogget bruger: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Browser: %s';
+$lang['Author: %s'] = 'Forfatter: %s';
+$lang['Comment: %s'] = 'Kommentar: %s';
+$lang['Comment by %s'] = 'Kommentar af %s';
+$lang['User: %s'] = 'Bruger: %s';
+$lang['Email: %s'] = 'E-mail: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registrering af %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Forkert status på brugeren "guest", standardstatussen benyttes. Vær venlig at give webmaster besked.';
+$lang['this email address is already in use'] = 'e-mail-adressen anvendes af en anden bruger';
+$lang['Album results for'] = 'Albumresultater for';
+$lang['Tag results for'] = 'Tagresultater for';
+$lang['from %s to %s'] = 'fra %s til %s';
+$lang['Play of slideshow'] = 'Afspil slideshow';
+$lang['Pause of slideshow'] = 'Sæt slideshow på pause';
+$lang['Repeat the slideshow'] = 'Gentag slideshow';
+$lang['Not repeat the slideshow'] = 'Gentag ikke slideshow';
+$lang['Reduce diaporama speed'] = 'Nedsæt slideshowhastighed';
+$lang['Accelerate diaporama speed'] = 'Forøg slideshowhastighed';
+$lang['Submit'] = 'Send';
+$lang['Yes'] = 'Ja';
+$lang['No'] = 'Nej';
+$lang['%d photo'] = '%d fotografi';
+$lang['%d photos'] = '%d fotografier';
+$lang['%d photo is also linked to current tags'] = '%d fotografi er også linket til disse tags';
+$lang['%d photos are also linked to current tags'] = '%d fotografier er også linket til disse tags';
+$lang['display photos linked to this tag'] = 'Se fotografier knyttet til dette tag';
+$lang['photos posted during the last %d days'] = 'fotografier tilføjet de seneste %d dage';
+$lang['Piwigo Help'] = 'Hjælp til Piwigo';
+$lang['Rank'] = 'Karakter';
+$lang['group by letters'] = 'alfabetiske grupper';
+$lang['letters'] = 'bogstaver';
+$lang['show tag cloud'] = 'vis tag-sky';
+$lang['cloud'] = 'sky';
+$lang['Reset to default values'] = 'Nulstil til standardværdier';
+$lang['delete all photos from your favorites'] = 'fjern alle fotografier fra dine favoritter';
+$lang['Sent by'] = 'Sendt af';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies er blokeret eller ikke understøttet af din browser. Aktiver cookies for at logge på.';
+$lang['Edit a comment'] = 'Rediger en kommentar';
+$lang['Are you sure?'] = 'Er du sikker?';
+$lang['(!) This comment requires validation'] = '(!) Denne kommentar kræver godkendelse';
+$lang['Welcome'] = 'Velkommen';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Velkommen til dit Piwigo-fotogalleri!';
+$lang['... or browse your empty gallery'] = '... eller gennemse dit tomme galleri';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... eller deaktiver denne meddelelse, jeg klarer det selv';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hej %s, dit Piwigo-fotogalleri er tomt!';
+$lang['I want to add photos'] = 'Jeg vil tilføje fotografier';
+$lang['Manage this user comment: %s'] = 'Håndter denne brugerkommentar: %s';
+$lang['This author modified following comment:'] = 'Denne forfatter har ændret følgende kommentar:';
+$lang['This author removed the comment with id %d'] = 'Denne forfatter har fjernet kommentaren med id\'en %d';
+$lang['html tags are not allowed in login'] = 'html-tags er ikke tilladt i login';
+$lang['%d rates'] = '%d bedømmelser';
+$lang['Rating score'] = 'Bedømmelse';
+$lang['Invalid username or email'] = 'Forkert brugernavn eller e-mail';
+$lang['Password reset is not allowed for this user'] = 'Nulstilling af adgangskode er ikke tilladt for denne bruger';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Brugeren "%s" har ingen e-mail-adresse, nulstilling af adgangskode er ikke mulig';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Nogen har anmodet om at nulstille adgangskoden til følgende brugerkonto:';
+$lang['Username "%s" on gallery %s'] = 'Brugernavnet "%s" i galleriet %s';
+$lang['To reset your password, visit the following address:'] = 'For at nulstille din adgangskode, skal du besøge følgende adresse:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Hvis dette var en fejl, så ignorer e-mailen og der vil ikke ske yderligere.';
+$lang['Password Reset'] = 'Nulstil adgangskode';
+$lang['Check your email for the confirmation link'] = 'Tjek din e-mail for bekræftelseslink';
+$lang['Invalid key'] = 'Forkert nøgle';
+$lang['The passwords do not match'] = 'Adgangskoderne stemmer ikke overens';
+$lang['Your password has been reset'] = 'Din adgangskode er nulstillet';
+$lang['Return to home page'] = 'Retur til forsiden';
+$lang['Please enter your username or email address.'] = 'Indtast dit brugernavn eller e-mail-adresse.';
+$lang['You will receive a link to create a new password via email.'] = 'Du vil via e-mail modtage et link til dannelse af en ny adgangskode.';
+$lang['Username or email'] = 'Brugernavn eller e-mail';
+$lang['Change my password'] = 'Skift min adgangskode';
+$lang['Enter your new password below.'] = 'Indtast din nye adgangskode herunder.';
+$lang['EXIF Metadata'] = 'EXIF-metadata';
+$lang['IPTC Metadata'] = 'IPTC-metadata';
+$lang['Edit'] = 'Rediger';
+$lang['Hello %s,'] = 'Hej %s,';
+$lang['Send my connection settings by email'] = 'Send mine loginoplysninger pr. e-mail';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Du er registreret, og du vil snart modtage en e-mail med dine loginoplysninger. Velkommen!';
+$lang['Username modification'] = 'Ændring af brugernavn';
+$lang['Your username has been successfully changed to : %s'] = 'Dit brugernavn er ændret til: %s';
+$lang['square'] = 'Kvadratisk';
+$lang['thumb'] = 'Miniaturebillede';
+$lang['small'] = 'S - lille';
+$lang['medium'] = 'M - medium';
+$lang['large'] = 'L - stor';
+$lang['xlarge'] = 'XL - ekstra stor';
+$lang['xxlarge'] = 'XXL - ekstrem stor';
+$lang['Original'] = 'Original';
+$lang['Thank you for registering at %s!'] = 'Tak for din registrering hos %s!';
+$lang['Here are your connection settings'] = 'Her er dine loginoplysninger';
+$lang['Password: %s'] = 'Adgangskode: %s';
+$lang['Username: %s'] = 'Brugernavn: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Hvis du mener, du har modtaget denne e-mail ved en fejl, så kontakt os på %s';
+$lang['Show oldest comments first'] = 'Vis ældste kommentarer først';
+$lang['Show latest comments first'] = 'Vis seneste kommnetarer først';
+$lang['Photo sizes'] = 'Fotografistørrelser';
+$lang['View in'] = 'Vis i';
+$lang['Mobile'] = 'Mobil';
+$lang['Desktop'] = 'Desktop';
+$lang['2small'] = 'XXS - meget lille';
+$lang['xsmall'] = 'XS - ekstra lille';
+$lang['File name, A &rarr; Z'] = 'Filnavn, A &rarr; Å';
+$lang['File name, Z &rarr; A'] = 'Filnavn, Å &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Fototitel, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Fototitel, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Dato oprettet, ny &rarr; gammel'; 
+$lang['Date created, old &rarr; new'] = 'Dato oprettet, gammel &rarr; ny'; 
+$lang['Date posted, new &rarr; old'] = 'Dato tilføjet, ny &rarr; gammel';
+$lang['Date posted, old &rarr; new'] = 'Dato tilføjet, gammel &rarr; ny';
+$lang['Rating score, high &rarr; low'] = 'bedømmelsesscore, høj &rarr; lav';
+$lang['Rating score, low &rarr; high'] = 'bedømmelsesscore, lav &rarr; høj';
+$lang['Visits, high &rarr; low'] = 'Besøgende, høj &rarr; lav'; 
+$lang['Visits, low &rarr; high'] = 'Besøgende, lav &rarr; høj'; 
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numerisk identifikation, 1 &rarr; 9'; 
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numerisk identifikation, 9 &rarr; 1'; 
+$lang['Manual sort order'] = 'Manuel sorteringsrækkefølge';
+
+$lang['%d rate'] = '%d bedømmelse';
+$lang['Bad request'] = 'Fejlagtig forespørgsel';
+$lang['Forbidden'] = 'Ikke tilladt';
+$lang['Page not found'] = 'Siden blev ikke fundet';
+$lang['Permalink for album not found'] = 'Albums permalink blev ikke fundet';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo stødte på en uoprettelig fejl';
+$lang['Requested album does not exist'] = 'Det valgte album findes ikke';
+$lang['Requested tag does not exist'] = 'Den valgte tag findes ikke';
+$lang['day']['1'] = 'Mandag';
+$lang['Email address is mandatory'] = 'E-mail-adresse er krævet';
+$lang['Username is mandatory'] = 'Brugernavn er krævet';
+$lang['mandatory'] = 'krævet';
+$lang['Website'] = 'Websted';
+$lang['Your website URL is invalid'] = 'Dit websteds URL er ugyldig';
+$lang['Email'] = 'E-mail';
+$lang['First Page'] = 'Første side';
+$lang['Go back to the album'] = 'Gå tilbage til albummet';
+$lang['Last Page'] = 'Sidste side';
+$lang['Password is missing. Please enter the password.'] = 'Adgangskoden mangler. Indtast adgangskoden.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Adgangskodebekræftelse mangler. Bekræft den valgte adgangskode.';
+$lang['%d photos per page'] = '%d fotografier pr. side';
+$lang['Theme'] = 'Tema';
+?>
Index: /tags/2.6.0RC1/language/da_DK/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,97 @@
+<h2>Rediger album</h2>
+
+<h3>Oplysninger</h3>
+
+<ul>
+ <li><strong>navn</strong>: omdøb album (en virtuel omdøbelse i tilfælde af et fysisk album).</li>
+ <li><strong>beskrivelse</strong>: kort tekst, der giver en generel idé om indholdet, teksten vil blive vist nederst på siden med miniaturerbilleder.</li>
+</Ul>
+
+<h3>Flyt</h3>
+
+<p>Hvis albummet er virtuelt, kan du flytte det. Flytning af et album betyder udskiftning af dets overordnede album.</p>
+
+<h3>Valgmuligheder</h3>
+
+<ul>
+ <li><strong>Adgangstype</strong>: Rettighedsstyring. Hvis du gør et album privat, vil alle dets underalbummer også blive private. Hvis du gør et album offentligt, vil alle dets overordenede albummer bliver offentlige.</li>
+ <li><strong>Lås</strong>: Albummet og dets underalbummer bliver midlertidigt deaktiveret på grund af vedligeholdelse.</li>
+ <li><strong>Kommentarer</strong>: Autoriserer brugere til at kommentere billeder i albummet.</li>
+</Ul>
+
+<p>Du kan også håndtere valgmulighederne under administrationssiden "Egenskaber" 
+(siderne 
+<span class="pwgScreen">Kommentarer</span>, 
+<span class="pwgScreen">Lås</span>, 
+<span class="pwgScreen">Offentlig/privat</span>, 
+<span class="pwgScreen">Repræsentant</span> tilgængelige fra 
+<span class="pwgScreen">Administration &raquo; Albummer &raquo; Egenskaber</span>).</p>
+
+<h3>Sorteringsrækkefølge</h3>
+
+<p>Brug standardsorteringsrækkefølgen for billeder.</p>
+
+<p>Angiv hvorvidt sorteringsrækkefølgen også vil gælde underalbummer.</p>
+
+<p>Vælg specifikt sorteringskriterium, der skal anvendes på dette album.</p>
+
+<ul>
+<li><strong>Oprettelsesdato</strong>: Den dato fotoet blev taget</li>
+<li><strong>Tilføjelsesdato</strong>: Synkroniseringsdato</li>
+<li><strong>Gennemsnitlig bedømmelse (*)</strong>: Gennemsnitlig bedømmelse kan ændres ved besøgendes bedømmelser</li>
+<li><strong>Mest besøgte (*)</strong>: Det aktuelle besøg kan ændre rækkefølgen af de mest besøgte</li>
+<li><strong>Filnavn</strong>: Navnet angivet i oplysningsfeltet</li>
+<li><strong>Id</strong>: Intern id (seneste kategorier har en højere id end de tidligere)</li>
+</Ul>
+
+<p>(*)</strong>Advarsel: Sørg selv for at teste sorteringsrækkefølgen, da de kan give uventede resultater.</p>
+
+
+<h3>Repræsentanten</h3>
+
+<p>Albumsrepræsentanten er miniaturebilledet, der vises på hovedsiden (<span class="pwgScreen">category.php</span>), som repræsentant for albummet, når det kun indeholder underalbummer og ingen fotografier (lige som rodalbummet).</p>
+
+<p>Foto fra et album:</p>
+
+<ul>
+  <li><span class="pwgScreen">Fotoside</span>: En af handlingsknapperne giver mulighed for at vælge det aktuelle billede som repræsentant for det viste album. Knappen er kun tilgængelig for administratorer.</Li>
+  <li><span class="pwgScreen">Ændring af fotooplysninger</span> i administration. Siden er tilgængelig fra <span class="pwgScreen">picture.php</span> eller <span class="pwgScreen">Batchadministration</span> i <em>enhedstilstand</em> .Se hjælpen til denne side for flere oplysninger.</li>
+  <li><span class="pwgScreen">Administration &raquo; Albummer  &raquo; Egenskaber, Repræsentant</span>. Se hjælpen til denne side for flere oplysninger.</li>
+  <li><span class="pwgScreen">Rediger album</span> (den aktuelle side).</li>
+</Ul>
+
+<p>Valg af repræsentant afhænger af <code>allow_random_representative</code>-opsætningsparameteret (se <span class="filnavn">include/config_default.inc.php</span>).</p>
+
+<p>I standardtilstand (<code>allow_random_representative</code> sat til false), er hvert album indeholdende mindst et element, repræsenteret af et fast element. Når det er opsat (ved oprettelsen af albummet), ændres repræsentanten kun når en administrator beder om det. Hvis repræsentanten ikke er hensigtsmæssig, kan du benytte <strong>Find en ny tilfældig repræsentant</strong>.</p>
+
+<p>Hvis <code>allow_random_representative</code>-opsætningsparameteret er sat til true, vil et album, der indeholder billeder, ikke have en fast repræsentant. Benyt blot knappen <strong>Slet repræsentant</strong>.</p>
+
+<p>Hvis albummet kun indeholder underalbummer og ingen fotografier, kan det ikke desto mindre være repræsenteret af ethvert element, takket være siden <span class="pwgScreen">Ændring af fotooplysninger</span>. Den eneste valgmulighed på den aktuelle side er knappen <strong>Slet repræsentant</strong>.</p>
+
+<h3>Knyt alle billeder i et album til et nyt album</h3>
+
+<ul>
+
+<li><strong>Virtuelt albumnavn</strong>: Navnet på det nye album, der skal oprettes, alle billeder fra albummet vil blive knyttet til det nye.</li>
+
+<li><strong>Overordnet album</strong>: Hvor det nye album vil være placeret. Lad det være tomt, for at oprette under roden.</li>
+
+</ul>
+
+<h3>Knyt alle billeder i et album til eksisterende album</h3>
+
+<ul>
+
+<li><strong>Albummer</strong>: Vælg målalbummet</li>.
+
+</Ul>
+
+<h3>Send en oplysningsmail til gruppens medlemmer</h3>
+
+<ul>
+
+<li><strong>Gruppe</strong>: Modtagergruppe</li>
+
+<li><strong>Mailindhold</strong>: Fritekst der sendes til dem</li>
+
+</Ul>
Index: /tags/2.6.0RC1/language/da_DK/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Flytning af virtuelle albummer</h2>
+
+<p>Kun virtuelle albummer kan få et nyt overordnet album.</p>
+
+<h3>Virtuelle albummer som skal flyttes</h3>
+
+<p>Vælg et eller flere virtuelle albummer, som du ønsker at flytte.
+Hvis listen er tom, betyder det at du endnu ikke har oprettet en.</p>
+
+<h3>Nyt overordnet album</h3>
+
+<p>Vælg det nye overordnede album (virtuelt eller fysisk). 
+Hvis du ikke vælger et overordnet album, bliver det valgte virtuelle album flyttet til roden.
+Et album kan ikke blive flyttet ind i sig selv eller til et af dets underalbummer.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/cat_options.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Albumvalgmuligheder</h2>
+
+<p>Håndtering af flere albums valgmuligheder på én gang.</p>
+
+<dl>
+
+<dt>Kommentarer</dt>
+<dd>Et fotografi kan modtage kommentarer fra dine besøgende, hvis det hører til et album hvor kommentarer er aktiveret.</ dd>
+
+<dt>Lås</dt>
+<dd>Låste albummer er deaktiveret på grund af vedligeholdelse. Kun administratorer kan se dem i galleriet.</Dd>
+
+<dt>Offentligt / privat</dt>
+<dd>Når et album er blevet privat, gives adgangstilladelser til brugere og grupper</dd>
+
+<dt>Repræsentant</dt>
+<dd>Valgmuligheden er tilgængelig når indstillingen
+<code>allow_random_representative</ code> er sat (se <span class="filename">include/config_defaults.inc.php</span>) til
+<em>true</em>. Hvert album kan repræsenteres af et tilfældigt antal fotografier eller et fotografi udvalgt som en unik repræsentant.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/da_DK/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Rediger albumtilladelser</h2>
+
+<p>Siden er kun tilgængelig ved private albummer. Her kan man vælge brugere og grupper, som er autoriseret til at se albummet.</p>
+
+<h3>Grupper</h3>
+
+<p>Du kan fratage eller tildele gruppeadgang til det aktuelle album. Ved at ændre gruppeautorisationer, vil brugerne som hører til disse grupper få tildelt adgang til albummet.</p>
+
+<h3>Brugere</h3>
+
+<p>Du kan fratage eller tildele adgang til individuelle brugere. Bruger der har adgang via en gruppe, kan via undtagelser få frataget adgang.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/configuration.html	(revision 25596)
@@ -0,0 +1,95 @@
+<h2>Opsætning</h2>
+
+<p>Her foretager administratoren grundlæggende opsætning af sit galleri.  Der vises faktisk kun simple opsætningsparametre, som skulle være tilstrækkeligt for langt størstedelen af administratorer. Ønsker du at se mange andre (og avancerede) opsætningsparametre, så kig i filen med standardopsætningen <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Siden er opdelt i forskellige afsnit, hvor opsætningsparametrene er grupperet efter emne.</p>
+
+
+<h3>Primært</h3>
+<ul>
+  <li><strong>Gallerititel</strong>: anvendes i RSS-feed og notifikation pr. mail.</li>
+
+  <li><strong>Sidebanner</strong>: vises øverst på alle offentlige sider.</li>
+
+  <li><strong>Galleri-URL</strong>: anvendes i RSS-feed'en.</li>
+
+  <li><strong>Lås galleri</strong>: Lås hele galleriet på grund af vedligeholdelse. Kun administratorer kan tilgå galleriet.</li>
+
+  <li><strong>Bedømmelse</strong>: Funktionen til bedømmelse af fotografier er aktiveret.</li>
+
+  <li><strong>Gæsters bedømmelse</strong>: Selv ikke-registrerede brugere kan bedømme billeder.</li>
+
+  <li><strong>Tillad brugerregistrering</strong>: Alle kan registrere sig.</li>
+
+  <li><strong>Mailadresse er krævet for alle brugere</strong>: mailadressen vil blive kontrolleret ved registrering eller profilopdatering, bortset fra hvis handlingen foretages af en administrator.</li>
+
+  <li><strong>Send mail til admins når en ny bruger registrerer sig</strong>: administratorer notificeres pr. mail, hver gang nogen registrerer sig.</li>
+  
+  <li><strong>Standard for fotorækkefølge</strong>: du kan definere en personliggjort rækkefølge ved hjælp af disse dropdownmenuer.</li>
+
+</ul>
+
+<h3>Historik</h3>
+
+  <p>Besøg på siderne <span
+  class="pwgScreen">category.php</span> og <span
+  class="pwgScreen">picture.php</span> vil blive gemt i tabellen <code>history</code>.</p>
+  
+  <p>Besøg vil blive vist i <span  class="pwgScreen">Administration &raquo; Værktøjer &raquo; Historik</span>.</p>
+
+<ul>
+  <li><strong>Gem gæsters sidebesøg</strong>: gæsters sidebesøg gemmes.</li>
+
+  <li><strong>Gem brugeres sidebesøg</strong>: registrerede brugeres sidebesøg gemmes.</li>
+
+  <li><strong>Gem administratorers sidebesøg</strong>: administratorers sidebesøg gemmes.</li>
+
+</ul>
+
+<h3>Kommentarer</h3>
+<ul>
+
+  <li><strong>Kommentarer til alle</strong>: Selv ikke-registrerede gæster kan skrive kommentarer.</li>
+
+  <li><strong>Antal kommentarer pr. side</strong>.</li>
+
+  <li><strong>Godkendelse</strong>: en administrator skal godkende brugerkommentarer, før de bliver synlige på webstedet. Godkendelse af brugerkommentarer foretages på siden <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Ventende kommentarer</span>.</li>
+
+  <li><strong>Send mail til admins når en gyldig kommentar gemmes</strong>: Sender en e-mail til administratorerne når en bruger gemmer en kommentar og denne godkendes.</li>
+
+  <li><strong>Send mail til admins når en kommentar kræver godkendelse</strong>: Sender en e-mail til administratorerne når en bruger gemmer en kommentar, som kræver admingodkendelse. Godkendelse af brugerkommentarer foretages på siden <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Ventende kommentarer</span>.</li>
+
+</ul>
+
+<h3>Standardvisning</h3>
+
+<p>Her ændrer man valgmulighederne i forbindelse med visning for guest-brugeren, standardbrugeren som ikke har en konto.  Når der er logget på, kan valgmulighederne overtrumfes af brugerens egne valgmuligheder (som ændres i <span class="pwgScreen">profil</span>).</p>
+
+<p>Det er muligt at ændre visningsvalgmulighederne for alle eksisterende brugere på siden <span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter</span>, hvor man kan udvælge brugere.</p>
+
+<ul>
+
+  <li><strong>Sprog</strong>: Gælder kun Piwigo-ettiketter. Albumnavne, fotografinavne og alle beskrivelsesfelter er ikke oversætbare.</li>
+
+  <li><strong>Antal fotografier pr. række</strong></li>
+
+  <li><strong>Antal rækker pr. side</strong></li>
+
+  <li><strong>Grænsefladetema</strong></li>
+
+  <li><strong>Seneste periode</strong>: Efter dage. Periode under hvilken et fotografi vises som nyt. Skal være større end 1 dag.</li>
+
+  <li><strong>Åbn alle albummer</strong>: Åbn alle albummer som standard i menuen. <em>Advarsel</em>: valgmuligheden er ressourceintensiv og kan medføre en enorm menu, hvis dit albumtræ indeholder mange albummer.</li>
+
+  <li><strong>Vis antal kommentarer</strong>: Vis antal kommentarer til hvert fotografi på miniturebilledsiden. Ressourceintensiv.</li>
+
+  <li><strong>Vis antal visninger</strong>: Vis et fotografis antal visninger, lige under dets miniturebilleds på miniturebilledsiden. Kun når det avancerede opsætningsparameter er:<br>
+  $conf['show_nb_hits'] = true; <br>
+  Bemærk: false som standard.</li>
+
+  <li><strong>Maksimal bredde på fotografierne</strong>: maksimal visningsbredde.  Fotografier, som er større end denne indstilling vil blive skaleret ved visningen.  Frem for at benytte denne indstilling, kan du overveje at ændre bredden på dine fotografier; det er en bedre praksis.</li>
+
+  <li><strong>Maksimal højde på fotografierne</strong>: tilsvarende opsætningen af maksimal bredde.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/da_DK/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,55 @@
+<h2>Opsætning af skabelonudvidelsen</h2>
+
+<h3>Om</h3>
+<p>Dit Piwigo-galleri kan tilpasses ved at udskifte eksisterende skabelonfiler med tilpassede udgaver.  For eksempel
+kan standardheaderskabelonen (header.tpl) erstattes med en tilpasset headerskabelon (my-header.tpl).  Efter at have gemt ændringerne i databasen, vil galleriet vise den tilpassede header i stedet for den oprindelige header.<br>
+Skabelonudvidelser er en god måde at oprette tilpassede temaer på for både nye og avancerede brugere.  Anvendt sammen med LocalFiles Editor kan du oprette dine egne nedarvede temaer.</p>
+
+<h3>Oprindelig skabelon</h3>
+<p>Et tema indeholder et antal skabelonfiler, som udgår gallerisiderne.  Det er de oprindelige skabeloner.</p>
+
+<h3>Valgfrit URL-nøgleord</h3>
+<p>Det er ord, som findes i galleri-URL'en efter et modulnavn.  De kan også være aktive permalinks  (Se permalink-dokumentationen for flere oplysninger).  <a href="#warnings">ADVARSEL:</a> hvis den samme oprindelige skabelon og det samme nøgleord anvendes i mere end én tilpasset skabelon, er kun den seneste aktiv.</p>
+
+<h3>Bundet tema</h3>
+<p>Det bundne tema, er temaet hvis skabelonfiler udskiftes.</p>
+
+<h3>Hvor er de oprindelige skabeloner?</h3>
+<p>Oprindelige skabeloner er de skabelonfiler, som leveres med de enkelte teamer.  De er gemt i <em>/themes/default/template</em> (eller <em>themes/<temanavn>/template</em>).  Disse skabelonfiler bør ikke redigeres, hvor de befinder sig, da ændringer vil gå tabt når temaet opgraderes.<br>
+Understøttede oprindelige skabeloner er blandt andre:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> og/eller <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> og/eller <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> og/eller <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> og/eller <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> og/eller <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> og/eller <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> og/eller <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Gemning af tilpassede skabeloner</h3>
+<p>Tilpassede skabeloner bør gemmes i mappen template-extension eller undermapper.  For eksempel <em>/template-extension/min-standard/header.tpl</em> (eller <em>/template-extension/<mit-temas-navn>/header.tpl</em>).  Skabelonfiler kan have et vilkårligt nanv, som slutter med filudvidelsen .tpl.  Skabelonfiler i undermapper viser sig på Skabelon-opsætningssiden som tilgængelige tilpassede skabeloner.</p>
+
+<h3>Aktivering af tilpassede skabeloner</h3>
+<p>Vælg den oprindelige skabelon, som skal erstattes.  Det er valgfrit om man vælger et URL-nøgleord for at sikre at den tilpassede skabelon kun vises på sider, med det nøgleord.  Vælg et bundet tema og ændringerne vil kun træde i kraft i det tema.  Gem dine ændringer i databasen.</p>
+
+<h3>Deaktivering af tilpassede skabeloner</h3>
+<p>Fravælg den oprindelige skabelon og gem ændringerne i databasen.<br>
+Slet filerne med den tilpassede skabelon fra mappen template-extension.</p>
+
+<a name="warnings"></a>
+<h3>Advarsler</h3>
+<ul>
+  <li><strong>Den oprindelige skabelon</strong> skal være den oprindelige skablon, ellers kan du opleve uforudsigelige resultater.</li>
+  <li>Hvis den samme oprindelige skabelon og det samme URL-nøgleord anvendes i mere end en tilpasset skabelon, vil kun den sidste være aktiv.</li>
+  <li>Distribuerede eksempler på skabelonfiler er kun til testformål.  Rediger dem ikke.  Opret dine egne eller kopi eksisterende temaskabelonfiler til <em>/template-extension/<mit-tema>/</em></li>
+  <li>Når en tilpasset skabelon slettes, genaktiveres den oprindelige skabelonfil med det samme.</li>
+</ul>
Index: /tags/2.6.0RC1/language/da_DK/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Gruppeliste</h2>
+
+<p>Her håndteres grupper.</p>
+
+<h3>Tilføj en gruppe</h3>
+
+<p>En administrator kan tilføje grupper.</p>
+
+<h3>Gruppeliste</h3>
+
+<p>Hver gruppe kan tildeles følgende handlinger:</p>
+
+
+<ul>
+  <li>gå til brugeradministration (Admin &raquo; Brugere &raquo; Håndter)</li>
+  <li>gå til siden med tilladelsesadministration for at tildele eller fjerne adgang til private albummer.</li>
+  <li>slet gruppen (kræver en bekræftelse)</li>
+  <li>skift "default"-status (kræver en bekræftelse)</li>
+</ul>
+
+<h3>Standardgrupper</h3>
+<p>Standardgrupper er grupper, som automatisk tildeles hver ny bruger ved registrering eller oprettelse ved administrators mellemkomst.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>Nogle måder at tilføje fotografier til dit galleri:</p>
+
+<ul>
+  <li><strong>Direkte upload</strong> i din webbrowser er den mest simple og lettest tilgængelige måde. Det afhænger af din browsers muligheder og din webserver. Når der er tale om store mængder fotografier, eller i tilfælde af at du løber ind i problemer, er de andre metoder klar til brug!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Gå til direkte upload</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> er en desktopapplikation, som installeres på din computer. Træk og slip fotografier ind i pLoader-vinduet, klik på <em>"Upload to Piwigo"</em> og lad pLoader gøre arbejdet. Du kan finde andre desktopapplikationer, så som <strong>WinToPiwigo</strong> eller eksportplugin'en <strong>digiKam</strong> til Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Gå til pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Ftp-overførsel</strong> er den mest anbefalede metode, at tilføje en meget stor mængde fotografier med et minimalt antal klik. Følg vejledningen for at klargøre dine fotografier. Ftp-metoden giver mulighed for, nøjagtigt at kontrollere hvordan fotografierne organiseres fysisk på serveren.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Gå til ftp</a></p>
+</div>
Index: /tags/2.6.0RC1/language/da_DK/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Grupper er en praktisk måde at indstille tilladelser for en liste over brugere.</p>
+
+<p>Opret grupper i 
+<span class="pwgScreen">Administration &raquo; Brugere &raquo; Grupper</span>
+og associerede brugere til denne gruppe i 
+<span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter</span>.</P>
+
+<p>En bruger kan tilhøre flere grupper. Autorisation går forud for
+forbud: Hvis brugeren "Jack" tilhører grupperne "Familie" og "Venner", og
+kun gruppen "Familie" kan se albummet "Jul 2010", så vil 
+"Jack" være i stand til at se "Jul 2010".</p>
Index: /tags/2.6.0RC1/language/da_DK/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Når du har oprettet dit galleri, kan du opsætte det for dine besøgende
+<ul>
+	<li>Vælg en passende standardvisning i <span class="pwgScreen">Administration &raquo; Opsætning &raquo; Valgmuligheder</span>, fanen <span class="pwgScreen">Gæsteindstillinger</span></li>
+	<li>Standardtema i <span class="pwgScreen">Administration &raquo; Opsætning &raquo; Temaer</span></li>
+	<li>Standardsprog i <span class="pwgScreen">Administration &raquo; Opsætning &raquo; Sprog</span></li>
+ </ul>
+ Som standard arver alle nye brugere disse egenskaber ved registreringen.
+</p>
+<p>Hvis du har et spørgsmål, kan Piwigo-fællesskabet med glæde hjælpe dig i <a href="http://da.piwigo.org/forum">dets forum</a>.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,54 @@
+<fieldset>
+<legend>Tilladelser til fotografier</legend>
+
+<p>Hvert fotografi har et <strong>privatlivsniveau</strong> (en lås). Hver bruger har også et privatlivsniveau (en nøgle). Der er fem privatlivsniveauer:</p>
+<ol>
+  <li>Ingen</li>
+  <li><em>Bekendt</em></li>
+  <li><em>Venner (som er højere end en bekendt)</em></li>
+  <li><em>Familie (som er højere end en ven)</em></li>
+  <li><em>Admins (som er højere end noget andet niveau)</em></li>
+</ol>
+
+<p>Højere niveauer har tilladelser fra lavere niveauer. For en given bruger, jo højere privatlivsniveau, desto flere fotografier kan vedkommende se.</p>
+
+<p>Hvis for eksempel fotografiet "peter_bryllup-0024.jpg" har <em>"Familie"</em> som privatlivsniveau, så:</p>
+<ul>
+  <li>Peter (som er en <em>"Admin"</em>) vil kunne se fotografiet, fordi <em>"Admins"</em> kan se alle fotografier</li>
+  <li>Beth (som er et <em>"Familie"</em>-medlem) vil også kunne se fotografiet</li>
+  <li>Mary (som bare er en <em>"Ven"</em>) vil ikke kunne se fotografiet</li>
+</ul>
+
+<p>En bruger, som ikke har tilladelse til at se et albums indhold, vil ikke se albummet selv, ikke engang dets titel. Det samme princip gælder et tag.</p>
+
+<p>Du kan opsætte en brugers privatlivsniveau på siden <span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Tilladelser til albummer</legend>
+
+<p>Hvis privatlivsniveauerne, ikke passer til dine behov, kan du også håndtere albumtilladelser for en bruger eller en gruppe. Du kan håndtere fotografiers og albummers tilladelser på samme tid, uden konflikter.</p>
+
+<p>Du kan forbyde adgang til albummer. Skift albummets adgangstype til "privat", hvis du ønsker at håndtere tilladelser.</p>
+
+<p>Du kan gøre et album privat ved at redigere et enkelt album
+(<span class="pwgScreen">Administration &raquo; Albummer &raquo; Håndter
+&raquo; edit</span>) eller ved at opsætte indstillinger for hele dit albumtræ
+(<span class="pwgScreen">Administration &raquo; Albummer &raquo;
+Egenskaber &raquo; Offentlig / Privat</span>).</p>
+
+<p>Når et album er gjort privat, kan du håndtere tilladelserne for grupper og brugere ved hjælp af tre sider:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administration &raquo; Brugere &raquo; Håndter &raquo;
+  tilladelseshandling</span> (et link pr. bruger)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Users &raquo; Grupper &raquo;
+  tilladelseshandling</span> (et link pr. gruppe)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Håndter &raquo; rediger handler vedr. albumtilladelser</span> (et link pr. album)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/da_DK/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Fotografier vises i albummet svarende til deres mappe med filer.</p>
+
+<p>Du kan også vise et fotografi i flere albummer, uden at have filen flere gange på webserveren. 
+Tilknyt fotografiet til et vilkårligt album fra siden til redigering af et fotografi (som alle 
+administratorer kan få adgang til fra fotosiden på gallerisiden).</p>
+
+<p>Virtuelle albummer er baseret på samme koncept: de har ingen tilsvarende mappe. Opret virtuelle 
+albummer fra <span class="pwgScreen">Administration &raquo; Albummer &raquo; Håndter</span>.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Historik</h2>
+
+<p>På disse sider overvåger man sit galleris besøgshistorik jævnfør indstillingerne valgt i: Administration &raquo; Opsætning &raquo; Valgmuligheder &raquo; Historik</p>
+	
+<h3>Statisk</h3>
+<ul>
+  <p>Hvis du har valgt at registrere besøgte sider (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), kan du overvåge dem fra denne fane.</p>
+	<li><strong>Global statisik</strong>: besøg pr. år.</li>
+	<li><strong>Årlig statistik</strong>: besøg pr. måned i det valgte år.</li>
+	<li><strong>Månedlig statistik</strong>: besøg pr. dag i den valgte måned.</li>
+	<li><strong>Daglig statisik</strong>: besøg pr. time på den valgte dag.</li>
+</ul>
+
+<h3>Søgning</h3>
+<ul>
+  <p>Hvis du har valgt at registrere besøgte sider (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), kan du gennemse oplysningerne fra fanen ved hjælp af forskellige filtre.</p>
+	<li><strong>Filtrering efter dato:</strong> vælg datointervallet der skal gennemsøges, ved at opsætte start- og slutdatoer.</li>
+	<li><strong>Filtrering efter elementtype:</strong> vælg elementtypen for statistik vedrørende det pågældende element.</li>
+	<li><strong>Filtrering efter bruger:</strong> vælg bruger for statistik vedrørende den pågældende bruger.</li>
+	<li><strong>Filtrering efter billedidentifikation:</strong> vælg billedidentifkation for statistik vedrørende det pågældende billede.</li>
+	<li><strong>Filtrering efter filnavn:</strong> vælg filnavn for statistik vedrørende den pågældende fil.</li>
+</ul>
Index: /tags/2.6.0RC1/language/da_DK/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Vedligeholdelse</h2>
+
+<p>For at optimere den tid det tager, at danne en side, anvender Piwigo cachede oplysninger.  Eksempelvis, i stedet for at tælle antallet af fotografier i hvert album, hver gang en side genindlæses, gemmes oplysningen i databasen.  I teorien er oplysningen altid korrekt, men nogle gange opstår der en fejl og den cachede oplysning bliver forældet.</p>
+
+<p>Nogle oplysninger bliver mindre nyttige, efterhånden som tiden går.  Ved at slette unyttige oplysninger fra databasen, sparer du noget diskplads.</p>
+
+<ul>
+	<li><strong>Sletning af forældreløse tags</strong></li>
+</ul>
+<ul>
+  <li><strong>Opdatering af albumoplysninger:</strong> Følgende oplysninger kontrolleres i hvert album, og opdateres om nødvendigt: Liste over overordnede albummer, antal fotografier, senste fotodato, placering blandt albummer på samme niveau, position blandt alle albummer. Handlingen kontrollerer også om de repræsentative fotografier er konsistente.</li>
+  <li><strong>Opdatering af fotografiers oplysninger:</strong> Følgende oplysninger opdateres for hvert fotografi: Fuld sti til filen, gennemsnitlig bedømmelse. <em>Advarsel</em>, må ikke forveksles: metadataoplysninger skal synkroniseres fra <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Synkroniser</span>, eller på ændringssiden hørende til et enkelt fotografi (ved hjælp af fx <span class="pwgScreen">Fotografi</span>).</li>
+</ul>
+<ul>
+  <li><strong>Reparer og optimer databasen:</strong> Udfør re-order-, reparerings- og optimeringshandlinger på hver tabel i databasen.</li>
+  <li><strong>Geninitialiser integritetstjek</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Tøm historikdetaljer:</strong> Slet alle linjer fra historiktabellen. Siden <span class="pwgScreen">Administration &raquo; Værktøjer &raquo; Historik</span> vil ikke længere vise oplysninger om forudgående historik. <em>Advarsel:</em> alle data mistes, uden det på nogen måden er muligt at få dem tilbage.</li>
+  <li><strong>Tøm historiksammendrag:</strong> Slet alle sammendragsoplysninger om besøgshistorik. Sammendraget beregnes ud fra historikdetaljerne.</li>
+  <li><strong>Tøm sessions:</strong> Slet udløbne brugersessioner.</li>
+  <li><strong>Tøm aldrig benyttede notifikationsfeeds</strong></li>
+  <li><strong>Tøm søgehistorik</strong></li>
+  <li><strong>Tøm kompilede skabeloner</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/da_DK/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notifikation pr. mail (NBM)</h2>
+
+<p>Opsætning og administration af notifikationer pr. mail til brugere, indeholdende besked om ændringer af dit websted.</p>
+
+<p>Siden består af tre faner:</p>
+
+<h3>Indstillinger</h3>
+<p>Kun tilgængelig for webmastere: Fanen opsætter parametrene vedrørende notifikation pr. mail.</p>
+
+<h3>Tilmeldte</h3>
+<p>Kun tilgængelig for webmastere: Fanen administrerer en brugers tilmeldinger til notifikation pr. mail. Tilføj brugere til boksen med tilmeldte, for at de kan modtage notifkationer pr. mail.</p>
+
+<h3>Send</h3>
+<p>Kun tilgængelig for webmastere og administratorer: Fanen giver administratorer mulighed for at sende notifikationer pr. mail til tilmeldte brugere.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalinks</h2>
+
+<p>Permalinks anvendes til at gøre albummers URL'er pænere. Når der er defineret permalink til et album, er albummets id ikke længere krævet i URL'en.</p>
+
+<p>Når et permalink slettes, kan du gemme i parmalinkhistorikken, så eksterne links til sider i Piwigo stadig fungerer. I tabellen med  permalinkhistorik, kan du se datoen for hvornår permalinket blev slettet, hvornår det senest blev benyttet og antallet af gange, det har været benyttet.</p>
+
+<p>Bemærk at permalinks skal være unikke pr. album. Desuden kan permalinkhistorikken ikke have det samme permalink mere end én gang.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,67 @@
+<fieldset>
+  <legend>Kom hurtigt i gang</legend>
+
+<ol>
+  <li>Opret en mappe på din computer.</li>  
+
+  <li>Kopier nogle fotografier til mappen og ændr deres størrelser så de er velegnede til webvisning. <em>Advarsel</em>: Navnet på mapperne og filerne må kun indeholde bogstaver, tal, "-", "_" eller ".". Ingen mellemrum eller accenttegn.</li>
+
+  <li>Med en ftp-klient kopieres mappen til "galleries"-mappen i din Piwigo-installation.</li>
+
+  <li>Log ind i dit galleri og gå til <span class="pwgScreen">Administration</span> og klik på den store Synkroniser-knap.</li>
+</ol>
+
+<p>Tillykke! Du har nu oprettet det første album i dit fotogalleri.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Organisering af mapper og filer</legend>
+
+<ul>
+
+  <li>
+
+    <p>Mapper med albummer er i Piwigo-mappen
+    "galleries". Her vises et mappetræ for et lille galleri (med
+    med anvendelse af megen funktionalitet):</p>
+
+    <pre>
+galleries
+|-- bryllup
+|   |-- fejring
+|   |   |-- ankomst
+|   |   |   |-- mads-alene.jpg
+|   |   |   +-- mette-alene.jpg
+|   |   +-- afrejse
+|   |       +-- mads-og-mette.jpg
+|   +-- fest
+|       |-- dansende001.jpg
+|       |-- dansende002.jpg
+|       +-- dansende003.jpg
++-- bryllupsrejse
+    |-- hotel.png
+    |-- video-fra-fly.avi
+    +-- pwg_representative
+        +-- video-fra-fly.jpg
+</pre>
+
+  </li>
+
+  <li>Bortset fra "pwg_representative" (se forklaring herunder), genererer hver mappe under "galleries" et album. Der er ingen begrænsning på hvor mange niveauer, der kan være.</li>
+
+  <li>Grundlæggende repræsenteres et element af en fil. En fil kan være et 
+  Piwigo-element, hvis dets filendelse er blandt mulighederne angivet i opsætningsparameteret
+  <code>file_ext</code> (se filen <span class="filename">include/config_default.inc.php</span> file). 
+  En fil kan være et billede, hvis dets filendelse er blandt mulighederne angivet i opsætningsparameteret 
+  <code>picture_ext</code>.</li>
+
+  <li>Ingen fotoelementer (video, lyde, tekstfiler, alt muligt andet ...) er som standard repræsenteret af en ikon 
+  svarende til filendelsen. Man kan valgfrit associere et miniaturebillede og repræsentativ fil (se video.avi i eksemplet herover).</li>
+
+  <li><em>Advarsel</em>: Navnene på mapper og filer må kun indeholde bogstaver, tal, "-", "_" eller ".". Ingen mellemrum eller accenttegn.</li>
+
+  <li>Når fotografierne er korrekt placeret i mapperne, går man til: <span class="pwgScreen">Administration &raquo; Værktøjer &raquo;
+  Synkroniser</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/da_DK/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Søgning</h2>
+
+<p>Siden giver mulighed for at søge i efter fotografier i hele galleriet.</p>
+
+<dl>
+
+  <dt>Søg efter ord</dt>
+  <dd>Søg efter et eller flere ord blandt attributterne, som er relateret til galleriets fotografier. Anvend * som wildcard til delvis match.</dd>
+
+  <dt>Søg efter en forfatter</dt>
+  <dd>Anvend * som wildcard til delvis match.</dd>
+
+  <dt>Søg efter dato</dt>
+  <dd>Vælg en dato og/eller slutdato til din søgning. Lad datofeltet være tomt hvis du ønsker at foretage en "før"-søgning. Året i det sidste felt skal angives i følgende format: ÅÅÅÅ (fx 2004)</dd>
+
+  <dt>Søg i albummer</dt>
+  <dd>Vælg album eller albummer, du ønsker at søge i. Alle underalbummer kan gennemsøges ved at vælge det overordnede album samt aktivere søgning i underalbummer derunder.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/da_DK/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Synkronisering</h2>
+
+<p>Der findes to forskellige former for synkronisering:</p>
+<ul>
+  <li>mapper/filer</li>
+  <li>filers metadata</li>
+</ul>
+
+<p>Synkronisering af mapper og filer gælder opdatering af dit mappetræ med albumstræet i databasen.
+Synkronisering af filers metadata gælder opdatering fotografioplysninger, så som filstørrelse, dimensioner i pixels, EXIF- eller IPTC-oplysninger, i databasen.</p>
+
+<p>Når man synkroniserer sine uploads med galleriet, skal man først synkronisere mapper og filer.</p>
+
+<p>Synkroniseringsprocessen kan tage lang tid (afhængigt af serverbelastning og antallet af elementer, der skal behandles), så det er muligt at gøre det ét album ad gangen.</p>
Index: /tags/2.6.0RC1/language/da_DK/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/da_DK/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Brugerliste</h2>
+
+<p>Her administreres brugerne af dit Piwigo-galleri.</p>
+
+<h3>Tilføj en bruger</h3>
+
+<p>En administrator kan manuelt tilføje brugere. For hver bruger oprettes et brugernavn, en adgangskode og der angives en gyldig e-mail-adresse.</p>
+
+<h3>Brugerliste</h3>
+
+<p>Listen over eksisterende brugere kan filtreres på brugernavn (brug * som wildcard), gruppe eller status. Der kan sorteres efter tilmeldingdato eller brugernavn, i stigende eller faldende rækkefølge.</p>
+
+<p>Siden giver mulighed for at administrere flere brugere på en gang, med anvendelse af forskellige handlinger:</p>
+
+<ul>
+  <li>slet brugere (kræver bekræftelse)</li>
+  <li>ændre brugerstatus</li>
+  <li>tilknytte eller ophæve tilknytning til grupper</li>
+  <li>ændre visningsegenskaber</li>
+  <li>ændre yderligere indstillinger</li>
+</ul>
+
+<p>Målet er den valgte bruger (som standard) eller alle brugere, der vises i den filtrerede liste.</p>
Index: /tags/2.6.0RC1/language/da_DK/index.php
===================================================================
--- /tags/2.6.0RC1/language/da_DK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/da_DK/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/da_DK/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/install.lang.php	(revision 25596)
@@ -0,0 +1,70 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installation';
+$lang['Basic configuration'] = 'Grundlæggende opsætning';
+$lang['Default gallery language'] = 'Galleriets standardsprog';
+$lang['Database configuration'] = 'Databaseopsætning';
+$lang['Admin configuration'] = 'Admin-opsætning';
+$lang['Start Install'] = 'Begynd installation';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Det vil blive vist til de besøgende. Det er nødvendigt til administration af webstedet';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Forbindelsen til server er oprettet, men det var ikke muligt at få forbindelse til databasen';
+$lang['Can\'t connect to server'] = 'Kan ikke få forbindelse til serveren';
+$lang['Host'] = 'Host';
+$lang['User'] = 'Bruger';
+$lang['user login given by your host provider'] = 'brugerlogin som du har fra din webhost';
+$lang['user password given by your host provider'] = 'brugeradgangskode som du har fra din webhost';
+$lang['Database name'] = 'Databasenavn';
+$lang['also given by your host provider'] = 'som du også har fået af din webhost';
+$lang['Database table prefix'] = 'Tabelpræfiks i databasen';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'tabelnavne i databasen vil være forsynet med et præfiks (giver dig bedre mulighed for at administrere tabellerne)';
+$lang['enter a login for webmaster'] = 'indtast webmasters login';
+$lang['webmaster login can\'t contain characters \' or "'] = 'webmasterlogin må ikke indeholde tegnene \' eller "';
+$lang['please enter your password again'] = 'indtast din adgangskode igen';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hold det hemmeligt, det giver dig adgang til administrationspanelet.';
+$lang['Password [confirm]'] = 'Password [bekræft]';
+$lang['verification'] = 'bekræftelse';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Brug for hjælp? Stil dine spørgsmål i <a href="%s">Piwigos forum</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Besøgende vil ved hjælp af denne e-mail have mulighed for at kontakte administratoren';
+$lang['PHP 5 is required'] = 'PHP 5 er nødvendig';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Det lader til, at din webhost pt. kører PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan prøve at skifte din opsætning til PHP 5 ved at oprette eller ændre en .htaccess-fil.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Bemærk, at du selv kan ændre din opsætning og derefter genstarte Piwigo.';
+$lang['Try to configure PHP 5'] = 'Prøv at opsætte PHP 5';
+$lang['Sorry!'] = 'Hov!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo var ikke i stand til at opsætte PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Du henvises til din webhost for at se hvordan du selv kan skifte til PHP 5.";
+$lang['Hope to see you back soon.'] = 'Håber snart at se dig igen.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Tillykke, installeringen af Piwigo er afsluttet';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ måde er at kopiere teksten i boksen oven over og sætte den ind i filen "local/config/database.inc.php" (Advarsel: database.inc.php må kun indeholde, hvad der er i tekstfeltet, ingen linjeskift eller mellemrum)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Oprettelsen af local/config/database.inc.php gik galt.';
+$lang['Download the config file'] = 'Download opsætningsfilen';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan downloade opsætningsfilen og uploade den til mappen local/config i din installation.';
+$lang['Just another Piwigo gallery'] = 'Bare endnu et Piwigo-galleri';
+$lang['Welcome to my photo gallery'] = 'Velkommen til mit fotogalleri';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Tøv ikke med at besøges vores forum for at få hjælp: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Velkommen til din nye Piwigo-installation';
+$lang['Password ']['confirm'] = 'Adgangskode [bekræft]';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Du henvises til din webhosts support for at finde ud af, om du selv kan skifte til PHP 5.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost eller andet, oplyst af din hostingleverandør';
+?>
Index: /tags/2.6.0RC1/language/da_DK/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/da_DK/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Dansk [DK]
Index: /tags/2.6.0RC1/language/da_DK/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/da_DK/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/da_DK/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Opgrader';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Denne side foreslår at opgradere databasen fra din gamle version af Piwigo til den nye version. Opgraderingsassistenten mener, at du pt. benytter en <strong>release %s</strong> (eller tilsvarende).';
+$lang['Upgrade from version %s to %s'] = 'Opgrader fra version %s til %s';
+$lang['Statistics'] = 'Statistik';
+$lang['total upgrade time'] = 'total opgraderingstid';
+$lang['total SQL time'] = 'total SQL-tid';
+$lang['SQL queries'] = 'SQL-forespørgsler';
+$lang['Upgrade informations'] = 'Opgraderingsinformation';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Udfør et vedligeholdelsestjek i [Administration>Værktøjer>Vedligeholdelse] hvis du oplever problemer.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Som en forholdsregel er følgende plugins blevet deaktiveret. Du skal se efter pluginopdateringer før du genaktiverer dem:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Kun en administrator kan foretage en opgradering: Log ind herunder.';
+$lang['You do not have access rights to run upgrade'] = 'Du har ikke adgangsrettigheder til at foretage en opgradering';
+$lang['All sub-albums of private albums become private'] = 'Alle underalbummer hørende til private albummer bliver private';
+$lang['User permissions and group permissions have been erased'] = 'Brugeres og gruppers tilladelser er blevet slettet';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Kun miniaturebilledepræfix og webmasters mailadresse er gemt fra tidligere opsætning. ';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'I <i>%s</i>, før <b>?></b>, indsæt:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Som en forholdsregel er følgende temaer blevet deaktiveret. Du skal se efter temaopdateringer før du genaktiverer dem:';
+?>
Index: /tags/2.6.0RC1/language/de_DE/about.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/about.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Diese Fotogalerie basiert auf Piwigo.</p>
+
+<p>Piwigo ist eine Fotogaleriesoftware für das Internet, die von einer Gemeinschaft engagierter Nutzer und Programmierer entwickelt wird.   
+Erweiterungen machen Piwigo leicht anpassbar an die verschiedensten Bedürfnisse. Und das Tüpfelchen auf dem i: Piwigo ist frei und quelloffen.</p> 
+
+<p id="linkToPiwigo"><a href="http://de.piwigo.org">Besuchen Sie die Piwigo-Webseite!</a></p>
+
+<p>Die deutsche Übersetzung wird gepflegt von (Namen in alphabetischer Reihenfolge):
+
+	<ul>
+		<li><a href="http://de.piwigo.org/forum/profile.php?id=4722">duke</a></li>
+		<li><a href="http://de.piwigo.org/forum/profile.php?id=2664">el ninjo</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=14037">fs101299</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16906">fragoriscus</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15244">Joergen</a></li>
+		<li><a href="http://de.piwigo.org/forum/profile.php?id=1106">Eric</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?section=essentials&id=16553">MigroMundus</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?section=essentials&id=5918">Polly</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?section=essentials&id=5628">Sugar888</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?section=essentials&id=17104">Yogie</a></li>
+	</ul>
+           Herzlichen Dank den Übersetzern!</p>
Index: /tags/2.6.0RC1/language/de_DE/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/admin.lang.php	(revision 25596)
@@ -0,0 +1,958 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d Element wird angezeigt';
+$lang['%d associations'] = '%d Elemente werden insgesamt angezeigt';
+$lang['%d album including'] = '%d Album inbegriffen, ';
+$lang['%d albums including'] = '%d Alben inbegriffen, ';
+$lang['%d physical'] = 'davon %d physisch';
+$lang['%d physicals'] = 'davon %d physische';
+$lang[' and %d virtual'] = ' und %d virtuell';
+$lang[' and %d virtuals'] = ' und %d virtuelle';
+$lang['%d album moved'] = '%d Album verschoben';
+$lang['%d albums moved'] = '%d Alben verschoben';
+$lang['%d group'] = '%d Gruppe';
+$lang['%d groups'] = '%d Gruppen';
+$lang['%d member'] = '%d Mitglied';
+$lang['%d members'] = '%d Mitglieder';
+$lang['%d tag'] = '%d Schlagwort';
+$lang['%d tags'] = '%d Schlagwörter';
+$lang['%d user comment rejected'] = '%d Benutzerkommentar abgewiesen';
+$lang['%d user comments rejected'] = '%d Benutzerkommentare abgewiesen';
+$lang['%d user comment validated'] = '%d Benutzerkommentar freigeschaltet';
+$lang['%d user comments validated'] = '%d Benutzerkommentare freigeschaltet';
+$lang['%d user deleted'] = '%d Benutzer gelöscht';
+$lang['%d users deleted'] = '%d Benutzer gelöscht';
+$lang['%d user'] = '%d Benutzer';
+$lang['%d users'] = '%d Benutzer';
+$lang['%d waiting for validation'] = '%d warten auf Freischaltung';
+$lang['Actions'] = 'Aktionen';
+$lang['Activate'] = 'Aktiviere';
+$lang['Add/delete a permalink'] = 'Hinzufügen/Löschen eines Permalinks';
+$lang['Add a tag'] = 'Schlagwort hinzufügen';
+$lang['Add a user'] = 'Benutzer hinzufügen';
+$lang['Add group'] = 'Gruppe hinzufügen';
+$lang['Add to caddie'] = 'In den Sammelkorb';
+$lang['Add'] = 'Hinzufügen';
+$lang['Allow user registration'] = 'Erlaube die Neuregistrierung von Benutzern';
+$lang['Apply to sub-albums'] = 'Einstellungen auch für Unteralben übernehmen';
+$lang['Associated'] = 'ist verlinkt';
+$lang['Caddie management'] = 'Sammelkorb verwalten';
+$lang['Caddie'] = 'Sammelkorb';
+$lang['Albums authorized thanks to group associations'] = 'Für Alben freigeschaltet durch Gruppenzugehörigkeit';
+$lang['Album manual order was saved'] = 'Albumreihenfolge wurde gespeichert';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Suche nach einem Upgrade nicht möglich.';
+$lang['Check for upgrade'] = 'Prüfe, ob eine neue Version verfügbar ist.';
+$lang['Comments for all'] = 'Kommentare für alle erlaubt';
+$lang['Current name'] = 'Derzeitiger Name';
+$lang['Database'] = 'Datenbank';
+$lang['Deactivate'] = 'Deaktivieren';
+$lang['Delete Representant'] = 'Lösche das Album-Vorschaubild';
+$lang['Delete selected tags'] = 'Lösche markierte Schlagwörter';
+$lang['Delete selected users'] = 'Lösche markierte Benutzer';
+$lang['Deletions'] = 'Löschen';
+$lang['Deny selected groups'] = 'Ausgewählte Gruppen ablehnen';
+$lang['Deny selected users'] = 'Ausgewählte Benutzer ablehnen';
+$lang['Description'] = 'Beschreibung';
+$lang['Display options'] = 'Anzeigeeinstellungen';
+$lang['Dissociated'] = 'Ist nicht verlinkt';
+$lang['Does not represent'] = 'Ist nicht Vorschaubild für';
+$lang['Edit selected tags'] = 'Bearbeite markierte Schlagwörter';
+$lang['Edit tags'] = 'Bearbeite Schlagwörter';
+$lang['Email admins when a new user registers'] = 'Sende eine E-Mail an die Adminstratoren, wenn sich ein neuer Benutzer registriert hat';
+$lang['Email admins when a valid comment is entered'] = 'Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar hinterlassen wurde';
+$lang['Email admins when a comment requires validation'] = 'Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar die Freischaltung durch einen Administrator erfordert';
+$lang['Environment'] = 'Server-Daten';
+$lang['Form'] = 'Formular';
+$lang['Gallery title'] = 'Galerietitel';
+$lang['Grant selected groups'] = 'Ausgewählte Gruppen zulassen';
+$lang['Grant selected users'] = 'Ausgewählte Benutzer zulassen';
+$lang['Group name'] = 'Gruppenname';
+$lang['Groups'] = 'Gruppen';
+$lang['Guests'] = 'Gäste';
+$lang['History'] = 'Statistik';
+$lang['Informations'] = 'Informationen';
+$lang['Install'] = 'Installiere';
+$lang['Link all album photos to a new album'] = 'Verbinde alle Album-Fotos mit einem neuen Album';
+$lang['Link all album photos to some existing albums'] = 'Verbinde alle Album-Fotos mit einem existierenden Album';
+$lang['Linked albums'] = 'Verlinkte Alben';
+$lang['Lock gallery'] = 'Blockiere den Zugriff auf die Datenbank';
+$lang['Maintenance'] = 'Wartung';
+$lang['Edit album permissions'] = 'Zugriffsrechte für ein privates Album verwalten';
+$lang['Manage permissions for group "%s"'] = 'Verwalte die Zugriffsrechte für die Gruppe "%s"';
+$lang['Manage permissions for user "%s"'] = 'Verwalte die Zugriffsrechte für den Benutzer "%s"';
+$lang['Manage tags'] = 'Schlagwörter verwalten';
+$lang['Members'] = 'Mitglieder';
+$lang['Metadata synchronized from file'] = 'Metadaten synchronisiert von Datei';
+$lang['Move albums'] = 'Alben verschieben';
+$lang['Move'] = 'Verschieben';
+$lang['Name'] = 'Name';
+$lang['New name'] = 'Neuer Name';
+$lang['New parent album'] = 'Neues übergeordnetes Album';
+$lang['New tag'] = 'Neues Schlagwort';
+$lang['Number of comments per page'] = 'Anzahl von Kommentaren pro Seite';
+$lang['Number of rates'] = 'Anzahl von Bewertungen';
+$lang['Number of thumbnails to create'] = 'Anzahl von zu erstellenden Vorschaubildern';
+$lang['Only private albums are listed'] = 'Nur private Alben werden aufgelistet';
+$lang['Operating system'] = 'Betriebssystem';
+$lang['Options'] = 'Optionen';
+$lang['Other private albums'] = 'Weitere private Alben';
+$lang['Page banner'] = 'Seitenbanner';
+$lang['Parent album'] = 'Übergeordnetes Album';
+$lang['Path'] = 'Pfad';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s wurde bereits dem Album %s zugewiesen. Löschen Sie ihn zuerst aus der History';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Ein Permalink darf nur aus folgenden Zeichen bestehen: a-z, A-Z, 0-9, "-" und "_". Er darf nicht numerisch sein oder mit einer Zahl beginnen, der "-" folgt';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s wird zurzeit vom Album %s benutzt';
+$lang['Permalink history'] = 'Permalink-History';
+$lang['Permalinks'] = 'Permalinks';
+$lang['Permission denied'] = 'Zugriff verweigert';
+$lang['Permission granted thanks to a group'] = 'Zugriff erlaubt dank einer Gruppe';
+$lang['Permission granted'] = 'Zugriff erlaubt';
+$lang['Photo informations updated'] = 'Fotoinformationen aktualisiert';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Position';
+$lang['Preferences'] = 'Einstellungen';
+$lang['Properties'] = 'Eigenschaften';
+$lang['Random photo'] = 'Zufälliges Foto';
+$lang['Rate date'] = 'Bewertungsdatum';
+$lang['Rating by guests'] = 'Erlaube Bewertungen durch Gäste';
+$lang['Rating'] = 'Bewertungen';
+$lang['Reject'] = 'Abweisen';
+$lang['Representant'] = 'Vorschaubild';
+$lang['Representation of albums'] = 'Album-Vorschaubild';
+$lang['Representative'] = 'Album-Vorschaubild';
+$lang['Represents'] = 'Ist Vorschaubild für';
+$lang['Save order'] = 'Reihenfolge speichern';
+$lang['Save to permalink history'] = 'Speichere in der Permalink-History';
+$lang['Select at least one album'] = 'Mindestens ein Album auswählen';
+$lang['Select at least one photo'] = 'Wähle mindestens ein Foto';
+$lang['Select at least one user'] = 'Mindestens einen Benutzer auswählen';
+$lang['Show info'] = 'Info anzeigen';
+$lang['Site manager'] = 'Seitenmanager';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statistik';
+$lang['Storage album'] = 'Speicherort des Albums';
+$lang['Sum of rates'] = 'Summe der Bewertungen';
+$lang['Tag "%s" already exists'] = 'Schlagwort "%s" existiert bereits';
+$lang['Tag "%s" was added'] = 'Schlagwort "%s" wurde hinzugefügt';
+$lang['Tag selection'] = 'Schlagwortauswahl';
+$lang['The %d following tags were deleted'] = 'Die %d folgenden Schlagwörter wurden gelöscht';
+$lang['Unable to check for upgrade.'] = 'Update-Prüfung ist nicht möglich.';
+$lang['Uninstall'] = 'Deinstallieren';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Nutze die Standard-Sortierreihenfolge (definiert in der Konfigurationsdatei)';
+$lang['User comments validation'] = 'Auf Freigabe wartende Kommentare';
+$lang['Users'] = 'Benutzer';
+$lang['Validate'] = 'Freigeben';
+$lang['Validation'] = 'Freigabe der Kommentare durch den Administrator';
+$lang['Version'] = 'Version';
+$lang['Virtual albums to move'] = 'Wähle ein oder mehrere virtuelle Alben aus, um sie zu verschieben.';
+$lang['Virtual album name'] = 'Virtueller Albumname';
+$lang['Webmaster cannot be deleted'] = 'Webmaster kann nicht gelöscht werden';
+$lang['You are running on development sources, no check possible.'] = 'Sie benutzen eine Entwicklerversion von Piwigo. Es kann keine Suche nach Aktualisierungen vorgenommen werden.';
+$lang['You cannot delete your account'] = 'Sie können Ihr eigenes Benutzerkonto nicht löschen.';
+$lang['You cannot move an album in its own sub album'] = 'Sie können ein Album nicht in ein ihm untergeordnetes Album verschieben.';
+$lang['You need to confirm deletion'] = 'Löschen bestätigen';
+$lang['Associate to album'] = 'Mit einem Album verbinden';
+$lang['associate to group'] = 'mit Gruppe verbinden';
+$lang['Authorized'] = 'Zugriff erlaubt';
+$lang['Add a virtual album'] = 'Virtuelles Album hinzufügen';
+$lang['Authorize users to add comments on selected albums'] = 'Benutzern erlauben, in ausgewählten Alben Kommentare zu schreiben';
+$lang['The name of an album must not be empty'] = 'Der Name eines Albums darf nicht leer sein.';
+$lang['Lock albums'] = 'Alben sperren';
+$lang['Private'] = 'Privat';
+$lang['Public'] = 'Öffentlich';
+$lang['Find a new representant by random'] = 'Bestimme ein neues zufälliges Album-Vorschaubild';
+$lang['Public / Private'] = 'Öffentlich/Privat';
+$lang['Manage authorizations for selected albums'] = 'Verwalte die Zugriffsrechte auf die ausgewählten Alben';
+$lang['Virtual album added'] = 'Virtuelles Album hinzugefügt';
+$lang['Virtual album deleted'] = 'Virtuelles Album entfernt';
+$lang['Access type'] = 'Zugangsart';
+$lang['Information data registered in database'] = 'Änderungen wurden gespeichert';
+$lang['Default display'] = 'Standarddarstellung';
+$lang['The gallery URL is not valid.'] = 'Die URL der Galerie ist falsch.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Die Anzahl der Kommentare pro Seite muss zwischen 5 und 50 liegen.';
+$lang['Configuration'] = 'Konfiguration';
+$lang['confirm'] = 'bestätigen';
+$lang['Date'] = 'Datum';
+$lang['delete album'] = 'Album löschen';
+$lang['Dissociate from album'] = 'Von Album abtrennen';
+$lang['dissociate from group'] = 'von Gruppe abtrennen';
+$lang['Album updated successfully'] = 'Informationen des Albums wurden erfolgreich aktualisiert.';
+$lang['photos per page'] = 'Fotos je Seite';
+$lang['High definition enabled'] = 'High definition eingeschaltet';
+$lang['File'] = 'Datei';
+$lang['first photo added on %s'] = 'erstes Foto am %s hinzugefügt';
+$lang['Forbidden'] = 'Zugriff verweigert';
+$lang['global mode'] = 'Globaler Modus';
+$lang['group "%s" added'] = 'Gruppe "%s" hinzugefügt';
+$lang['group "%s" deleted'] = 'Gruppe "%s" gelöscht';
+$lang['group "%s" updated'] = 'Gruppe "%s" aktualisiert';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Der Gruppenname darf kein " oder \' enthalten oder leer bleiben.';
+$lang['This name is already used by another group.'] = 'Dieser Gruppenname ist bereits vergeben.';
+$lang['High definition'] = 'High definition';
+$lang['jump to album'] = 'Gehe zum Album';
+$lang['jump to photo'] = 'Springe zu Foto';
+$lang['leave'] = 'beibehalten';
+$lang['Lock'] = 'Sperren';
+$lang['Locked'] = 'Gesperrt';
+$lang['manage album photos'] = 'Verwalte Fotos im Album';
+$lang['manage sub-albums'] = 'Verwalte Unteralben';
+$lang['Manage'] = 'Verwalten';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Ausführungszeit ist beendet, Vorgang muss manuell fortgesetzt werden [Verstrichene Zeit: %d Sekunde].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Die Zeit zum Erstellen der Benachrichtigungsliste ist begrenzt. Andere Benutzer werden nicht aufgenommen.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Die Zeit zum E-Mail Versenden ist begrenzt. Nicht abgearbeitete E-Mails werden übersprungen';
+$lang['To send ?'] = 'Info-E-Mail senden?';
+$lang['Last send'] = 'Letzter Versand';
+$lang['User'] = 'Benutzer';
+$lang['See you soon,'] = 'Bis bald,';
+$lang['Go to'] = 'Gehe zu ';
+$lang['Hello'] = 'Hallo ';
+$lang['New photos were added'] = 'Neue Fotos wurden hinzugefügt';
+$lang['on'] = 'am ';
+$lang['between'] = 'zwischen dem';
+$lang['and'] = 'und dem ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Der Webmaster hat Sie für die E-Mail-Benachrichtigung eingetragen.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Sie sind für die E-Mail-Benachrichtigung eingetragen.';
+$lang['To subscribe'] = 'Zum Anmelden';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Bei Problemen oder Fragen sende eine E-Mail an ';
+$lang['[NBM] Problems or questions'] = '[NBM] Probleme oder Fragen';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Der Webmaster Sie aus der E-Mail-Benachrichtigung ausgetragen.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Sie haben sich aus der E-Mail-Benachrichtigung ausgetragen.';
+$lang[', click on'] = ', klicke auf diesen Link:';
+$lang['To unsubscribe'] = 'Zum Austragen';
+$lang['With blank value, gallery title will be used'] = 'Wenn leer, wird der Galerietitel benutzt';
+$lang['Notification'] = 'Benachrichtigung';
+$lang['Error when sending email to %s [%s].'] = 'Fehler beim Versand an %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'E-Mail versendet an %s [%s].';
+$lang['%d mail was sent.'] = '%d E-Mail wurde gesendet.';
+$lang['%d mails were sent.'] = '%d E-Mails wurden gesendet.';
+$lang['%d mail was not sent.'] = '%d E-Mail wurde nicht gesendet.';
+$lang['%d mails were not sent.'] = '%d E-Mails wurden nicht gesendet.';
+$lang['No mail to send.'] = 'Keine E-Mail zu versenden.';
+$lang['There is no available subscribers to mail.'] = 'Kein Benutzer verfügbar, um eine E-Mail zu senden.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Ein Benutzer ist dann auswählbar, wenn es neue Fotos gibt.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Wenn niemand in der Mailingliste eingetragen ist, können keine E-Mails versendet werden. Nur der Webmaster erscheint bei Aktualisierungen in dieser Liste.';
+$lang['No user to send notifications by mail.'] = 'Kein Benutzer da, um Aktualisierungen zu senden.';
+$lang['New photos added'] = 'Neue Fotos hinzugefügt';
+$lang['Subscribe to notification by mail'] = 'Eintragen zur E-Mail-Benachrichtigung';
+$lang['Unsubscribe from notification by mail'] = 'Austragen aus der E-Mail-Benachrichtigung';
+$lang['Parameter'] = 'Parameter';
+$lang['Continue processing treatment'] = 'Prozess fortsetzen';
+$lang['Complementary mail content'] = 'Zusätzlicher Inhalt der E-Mail';
+$lang['Add detailed content'] = 'Sende detallierten Inhalt';
+$lang['Send mail as'] = 'Sende E-Mail als';
+$lang['Send mail to users'] = 'Sende E-Mail an';
+$lang['Send'] = 'Sende';
+$lang['Options'] = 'Optionen';
+$lang['Subscribed'] = 'Bestätigt';
+$lang['Subscribe'] = 'Bestätigen';
+$lang['Parameters'] = 'Parameter';
+$lang['Select recipients'] = 'Wähle Empfänger';
+$lang['Subscribe/unsubscribe users'] = 'Hinzufügen/Entfernen von Benutzern für die E-Mail-Benachrichtigung';
+$lang['Unsubscribed'] = 'Entfernt';
+$lang['%d parameter was updated.'] = '%d Parameter aktualisiert.';
+$lang['%d parameters were updated.'] = '%d Parameter aktualisiert.';
+$lang['%d user was not updated.'] = '%d Benutzer nicht aktualisiert.';
+$lang['%d users were not updated.'] = '%d Benutzer nicht aktualisiert.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Benutzer %s [%s] entfernt von der Benachrichtigungsliste.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Benutzer %s [%s] hinzugefügt zur Benachrichtigungsliste.';
+$lang['%d user was updated.'] = '%d Benutzer aktualisiert.';
+$lang['%d users were updated.'] = '%d Benutzer aktualisiert.';;
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Benutzer %s [%s] nicht entfernt von der Benachrichtigungsliste.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Benutzer %s [%s] nicht hinzugefügt zur Benachrichtigungsliste.';
+$lang['User %s [%s] added.'] = 'Benutzer %s [%s] hinzugefügt.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'WARNUNG: Hinzufügen oder Entfernen von Benutzern zur Benachrichtigungsliste erwirkt eine automatische E-Mail an den Betreffenden';
+$lang['Send mail on HTML format'] = 'Sende E-Mail im HTML-Format';
+$lang['Include display of recent photos grouped by dates'] = 'Binde die neuesten Bilder gruppiert nach Datum in die E-Mail ein';
+$lang['Available only with HTML format'] = 'Nur verfügbar, wenn die Benachrichtigungen im HTML-Format verschickt werden';
+$lang['no write access'] = 'kein Schreibzugriff';
+$lang['Permissions'] = 'Zugriffsrechte';
+$lang['private'] = 'private';
+$lang['public'] = 'öffentlich';
+$lang['Purge never used notification feeds'] = 'Lösche alle noch nicht verschickten Benachrichtigungen';
+$lang['Purge sessions'] = 'Lösche Sitzungen';
+$lang['randomly represented'] = 'zufälliges Vorschaubild';
+$lang['registration date'] = 'Registrierungsdatum';
+$lang['clean'] = 'reinigen';
+$lang['Create this site'] = 'Erstellen dieser Website';
+$lang['test'] = 'Test';
+$lang['test this remote site'] = 'teste diese Remote-Site';
+$lang['remove tags'] = 'Schlagwörter entfernen';
+$lang['Repair and optimize database'] = 'Repariere und optimiere die Datenbank';
+$lang['selection'] = 'Auswahl';
+$lang['set to'] = 'Setze auf';
+$lang['singly represented'] = 'festgelegtes Album-Vorschaubild';
+$lang['This site already exists'] = 'Diese Seite existiert bereits';
+$lang['created'] = 'erstellt';
+$lang['delete this site and all its attached elements'] = 'Entferne diese Seite und alle damit zusammenhängenden Daten';
+$lang['an error happened'] = 'ein Fehler ist aufgetreten';
+$lang['Local'] = 'Lokal';
+$lang['Remote'] = 'Remote';
+$lang['update the database from files'] = 'Aktualisiert die Datenbank aus den Dateien';
+$lang['status'] = 'Status';
+$lang['Directory'] = 'Verzeichnis';
+$lang['sub-albums'] = 'Unteralben';
+$lang['Synchronize metadata'] = 'Synchronisieren von Metadaten';
+$lang['target'] = 'Ziel:';
+$lang['Thumbnail'] = 'Vorschaubild';
+$lang['Title'] = 'Titel';
+$lang['Album list management'] = 'Alben verwalten';
+$lang['Piwigo configuration'] = 'Konfiguration von Piwigo';
+$lang['Edit album'] = 'Album bearbeiten';
+$lang['Group management'] = 'Gruppen verwalten';
+$lang['User list'] = 'Benutzer verwalten';
+$lang['Edit photo information'] = 'Bearbeite Fotoinformation';
+$lang['Database synchronization with files'] = 'Synchronisierung der Datenbank';
+$lang['all'] = 'alle';
+$lang['height must be a number superior to'] = 'die Höhe muss größer sein als';
+$lang['width must be a number superior to'] = 'die Breite muss größer sein als';
+$lang['for the file format'] = 'für das Format der Datei';
+$lang['Photo unreachable or no support'] = 'Foto unerreichbar oder nicht unterstützt';
+$lang['GD version'] = 'GD-Version';
+$lang['General statistics'] = 'Allgemeine Statistiken';
+$lang['average time'] = 'durchschnittliche Zeit';
+$lang['number of miniaturized photos'] = 'Anzahl erzeugter Vorschaubilder';
+$lang['total time'] = 'Gesamtzeit';
+$lang['for this file format'] = 'für dieses Dateiformat';
+$lang['unit mode'] = 'Einzelmodus';
+$lang['Unlocked'] = 'Entsperrt';
+$lang['unset'] = 'Lösche Einstellung';
+$lang['Update albums informations'] = 'Aktualisiere Albeninformationen';
+$lang['Update photos information'] = 'Aktualisiere Fotoinformationen';
+$lang['Synchronize'] = 'Synchronisieren';
+$lang['reduce to single existing albums'] = 'Auf einzelne bestehende Alben reduzieren';
+$lang['Choose an option'] = 'Eine Option auswählen';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Zeige alle Informationen (hinzugefügte Alben und Fotos, gelöschte Alben und Fotos)';
+$lang['Error list'] = 'Error-Liste';
+$lang['Errors caption'] = 'Fehlerüberschrift';
+$lang['Detailed informations'] = 'Detallierte Informationen';
+$lang['File/directory read error'] = 'Datei-/Verzeichnis-Lesefehler';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Auf diese Datei/dieses Verzeichnis kann nicht zugegriffen werden. Entweder existiert die Datei/das Verzeichnis nicht oder der Zugriff wurde verweigert.';
+$lang['albums deleted in the database'] = 'Alben von der Datenbank entfernt';
+$lang['photos deleted from the database'] = 'von der Datenbank gelöschte Fotos';
+$lang['photos candidates for metadata synchronization'] = 'Fotos bereit zur Metadaten-Synchronisation';
+$lang['photos informations synchronized with files metadata'] = 'Fotoinformationen mit den Datei-Metadaten synchronisiert';
+$lang['errors during synchronization'] = 'Fehler während der Synchronisation';
+$lang['albums added in the database'] = 'Alben in der Datenbank hinzugefügt';
+$lang['photos added in the database'] = 'der Datenbank hinzugefügte Fotos';
+$lang['photos updated in the database'] = 'in der Datenbank aktualisierte Fotos';
+$lang['Search for new images in the directories'] = 'Suche nach neuen Fotos in den vorhandenen Verzeichnissen';
+$lang['added'] = 'hinzugefügt';
+$lang['deleted'] = 'gelöscht';
+$lang['Metadata synchronization results'] = 'Ergebnisse der Metadaten-Synchronisierung';
+$lang['only perform a simulation (no change in database will be made)'] = 'Nur Simulation durchführen, ohne Änderungen in der Datenbank vorzunehmen.';
+$lang['Simulation'] = 'Simulation';
+$lang['directories + files'] = 'Verzeichnisse + Dateien';
+$lang['only directories'] = 'Nur Verzeichnisse';
+$lang['synchronize files structure with database'] = 'Dateistruktur mit Datenbank synchronisieren';
+$lang['synchronize files metadata with database photos informations'] = 'Datei-Metadaten mit den Fotoinformationen der Datenbank synchronisieren';
+$lang['even already synchronized photos'] = 'auch bereits synchronisierte Fotos';
+$lang['Used metadata'] = 'Benutzte Metadaten';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Verzeichnis- und Dateinamen müssen aus Buchstaben oder den Zeichen "-", "_" oder "." bestehen.';
+$lang['wrong filename'] = 'falscher Dateiname';
+$lang['Upload'] = 'Upload';
+$lang['user "%s" added'] = 'Benutzer "%s" hinzugefügt';
+$lang['User status'] = 'Status des Benutzers';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'generischer Status';
+$lang['user_status_guest'] = 'Gast';
+$lang['user_status_normal'] = 'Benutzer';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Virtelles Album';
+$lang['Waiting'] = 'Wartend auf Freigabe';
+$lang['default'] = 'Standard';
+$lang['Toggle \'default group\' property'] = 'Setzt die Gruppe als Standardgruppe. Neu registrierte Benutzer gehören automatisch dieser Gruppe an.';
+$lang['Advanced features'] = 'Erweiterte Einstellungen';
+$lang['Overall'] = 'Gesamt';
+$lang['Year'] = 'Jahr';
+$lang['Month'] = 'Monat';
+$lang['Day'] = 'Tag';
+$lang['Pages seen'] = 'Seitenzugriffe';
+$lang['Time'] = 'Zeit';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'Abschnitt';
+$lang['An information email was sent to group "%s"'] = 'Eine Info-E-Mail wurde gesendet an die Gruppe "%s"';
+$lang['Send an information email to group members'] = 'Sende eine Info-E-Mail an die Mitglieder dieser Gruppe';
+$lang['Group'] = 'Gruppe';
+$lang['[%s] Visit album %s'] = '[%s] Besuchen sie das Album %s';
+$lang['Hello,'] = 'Hallo,';
+$lang['See you soon.'] = 'Bis bald.';
+$lang['Discover album:'] = 'Entdecken Sie das Album:';
+$lang['Mail content'] = 'Text der E-Mail';
+$lang['none'] = 'egal';
+$lang['high'] = 'hoch';
+$lang['other'] = 'anderes';
+$lang['Element type'] = 'Elementtyp';
+$lang['Image id'] = 'Bild-ID';
+$lang['Summary'] = 'Zusammenfassung';
+$lang['%d line filtered'] = '%d Zeile gefiltert';
+$lang['%d lines filtered'] = '%d Zeilen gefiltert';
+$lang['%d guest'] = '%d Gast';
+$lang['%d guests'] = '%d Gäste';
+$lang['Hour'] = 'Stunde';
+$lang['guest'] = 'Gast';
+$lang['default values'] = 'Standardwerte';
+// --------- Starting below: New or revised $lang ---- from version 1.7.1
+$lang['Guest cannot be deleted'] = 'Der Gast kann nicht gelöscht werden';
+$lang['Default user cannot be deleted'] = 'Der Standardbenutzer kann nicht gelöscht werden';
+$lang['Purge history detail'] = 'Lösche History-Einträge';
+$lang['Purge history summary'] = 'Lösche History-Zusammenfassung';
+$lang['Check integrity'] = 'Überprüfung der Integrität';
+$lang['Anomaly'] = 'Anomalie';
+$lang['Correction'] = 'Korrektur';
+$lang['Automatic correction'] = 'Automatische Korrektur';
+$lang['Impossible automatic correction'] = 'Automatische Korrektur nicht möglich';
+$lang['Correction applied with success'] = 'Korrektur erfolgreich';
+$lang['Correction applied with error'] = 'Korrektur mit Fehler';
+$lang['%d anomaly has been detected.'] = '%d Anomalie wurde entdeckt.';
+$lang['%d anomalies have been detected.'] = '%d Anomalien wurden festgestellt.';
+$lang['%d anomaly has been corrected.'] = '%d Anomalie wurde behoben.';
+$lang['%d anomalies have been detected corrected.'] = '%d Anomalien wurden entdeckt und behoben.';
+$lang['%d anomaly has not been corrected.'] = '%d Anomalie konnte nicht behoben werden.';
+$lang['%d anomalies have not been corrected.'] = '%d Anomalien konnten nicht behoben werden.';
+$lang['Go to %s or %s for more informations'] = 'Gehen Sie zu %s oder %s für weitere Informationen';
+$lang['the forum'] = 'das Forum';
+$lang['the wiki'] = 'das Wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'Der Wert %s ist nicht korrekt, weil Exif nicht unterstützt wird';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s muss auf "false" in Ihrer Server-Datei local/config/config.inc.php gesetzt werden';
+$lang['Main "guest" user does not exist'] = 'Der Benutzer "Gast" Haupt nicht mehr';
+$lang['Main "guest" user status is incorrect'] = 'Der Status der Benutzer "Gast" ist falsch';
+$lang['Default user does not exist'] = 'Der Standardbenutzer existiert nicht';
+$lang['Main "webmaster" user does not exist'] = 'Der Benutzer "Webmaster" Haupt nicht mehr';
+$lang['Main "webmaster" user status is incorrect'] = 'Der Status des Benutzers "Webmaster" ist falsch';
+$lang['User "%s" created with "%s" like password'] = 'Benutzer "%s" erstellt mit dem Passwort "%s"';
+$lang['Status of user "%s" updated'] = 'Status des Benutzers "%s" aktualisiert';
+$lang['add new photos to caddie'] = 'Füge neue Fotos zum Sammelkorb hinzu';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = 'Keine Anzeige';
+$lang['Classic display'] = 'Klassische Ansicht';
+$lang['Hoverbox display'] = 'Anzeige beim Überflug';
+$lang['Mail address is obligatory for all users'] = 'Die Angabe einer gültigen E-Mail-Adresse ist für alle Benutzer verpflichtend.';
+$lang['Minimum privacy level'] = 'Minimale Datenschutzstufe';
+$lang['Privacy level'] = 'Datenschutzstufe';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakt';
+$lang['Level 2'] = 'Freunde';
+$lang['Level 4'] = 'Familie';
+$lang['Level 8'] = 'Administratoren';
+$lang['Reinitialize check integrity'] = 'Prüfe erneut die Integrität';
+$lang['Check all'] = 'Alle auswählen';
+$lang['Uncheck all'] = 'Alles entfernen';
+$lang['Check automatic corrections'] = 'Überprüfen Sie die automatischen Korrekturen';
+$lang['Apply selected corrections'] = 'Nehme die ausgewählten Korrekturen vor';
+$lang['Ignore selected anomalies'] = 'Ignorieren Sie die gewählten Anomalien';
+$lang['Refresh'] = 'Aktualisieren';
+$lang['The anomaly will be ignored until next application version'] = 'Der Fehler wird ignoriert bis die nächste Version der Anwendung';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Die korrigierte Anomalie wird nicht mehr ignoriert';
+$lang['%d anomaly has been ignored.'] = '%d Anomalie wurde ignoriert.';
+$lang['%d anomalies have been ignored.'] = '%d Anomalien wurden ignoriert.';
+$lang['Plugins which need upgrade'] = 'Für diese Plugins ist ein Update verfügbar';
+$lang['Plugin list'] = 'Liste der Plugins';
+$lang['Check for updates'] = 'Auf Updates überprüfen';
+$lang['Other plugins'] = 'Weitere Plugins';
+$lang['Last revisions'] = 'Aktuelle Änderungen';
+$lang['Are you sure you want to delete this plugin?'] = 'Sind Sie sicher, dass Sie dieses Plugin löschen möchten?';
+$lang['Are you sure you want to install this plugin?'] = 'Sind Sie sicher, dass Sie dieses Plugin installieren möchten?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Sind Sie sicher, dass Sie dieses Plugin installieren möchten? Stellen Sie sicher, dass die vorhergehende Version nicht deinstalliert werden muss.';
+$lang['Plugin has been successfully copied'] = 'Das Plugin wurde erfolgreich installiert.';
+$lang['You might go to plugin list to install and activate it.'] = 'Gehen Sie zur Liste der Plugins, um Plugins installieren und zu aktivieren.';
+$lang['Can\'t create temporary file.'] = 'Temporäre Datei kann nicht erstellt werden.';
+$lang['Can\'t download archive.'] = 'Kann Archiv nicht downloaden.';
+$lang['Can\'t read or extract archive.'] = 'Kann das Archiv nicht lesen oder entpacken.';
+$lang['An error occured during extraction (%s).'] = 'Fehler beim Entpacken des Archivs (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Überprüfen Sie die Zugriffsrechte des Verzeichnisses "plugins" und seiner Unterverzeichnisse (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Es konnte keine Verbindung zum Server hergestellt werden.';
+$lang['Purge compiled templates'] = 'Lösche die kompilierten Vorlagen';
+$lang['ACCESS_0'] = 'Frei';
+$lang['ACCESS_1'] = 'Alle';
+$lang['ACCESS_2'] = 'Mitglieder';
+$lang['ACCESS_3'] = 'Administratoren';
+$lang['ACCESS_4'] = 'Webmaster';
+$lang['ACCESS_5'] = 'Keine Benutzer';
+$lang['Support'] = 'Support';
+$lang['Documentation'] = 'Dokumentation';
+$lang['A new version of Piwigo is available.'] = 'Es steht eine neue Version von Piwigo zur Verfügung.';
+$lang['Piwigo Administration'] = 'Verwaltung von Piwigo';
+$lang['Piwigo version'] = 'Version von Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Sie verwenden die neueste Version von Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Die Version %s [%s] ist installiert und ist nicht mit der erforderlichen Version kompatibel [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Sie müssen Ihr System aktualisieren, um vollen Nutzen aus der Anwendung zu ziehen, andernfalls wird sie fehlerhaft oder auch gar nicht ausgeführt.';
+$lang['Deleted on'] = 'Gelöscht am';
+$lang['Last hit'] =  'Letzter Zugriff';
+$lang['GD library is missing'] = 'Die GD Library ist nicht auf dem Server installiert';
+$lang['Templates'] = 'Vorlagen';
+$lang['Extend for templates'] = 'Vorlagenerweiterung';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Ersetzen von Originalvorlagen durch angepasste Vorlagen im Verzeichnis template-extension';
+$lang['Replacers (customized templates)'] = 'Angepasste Vorlagen';
+$lang['Original templates'] = 'Originalvorlagen';
+$lang['Optional URL keyword'] = 'Optionale Parameter in der URL';
+$lang['Templates configuration has been recorded.'] = 'Die Konfiguration der Vorlagen wurde gespeichert.';
+$lang['All optimizations have been successfully completed.'] = 'Alle Optimierungen wurden erfolgreich abgeschlossen.';
+$lang['Optimizations have been completed with some errors.'] = 'Einige Optimierungen endeten mit Fehlern.';
+$lang['Modify information'] = 'Informationen ändern';
+$lang['nothing'] = 'nichts';
+$lang['overrides existing values with empty ones'] = 'Setze alle in der Datenbank vorhandenen Werte zurück  ';
+$lang['Manage photo ranks'] = 'Verwalte Foto-Rangordnung';
+$lang['Edit ranks'] = 'Die Reihenfolge ändern';
+$lang['No photo in this album'] = 'Keine Fotos in diesem Album';
+$lang['Images manual order was saved'] = 'Die manuelle Reihenfolge der Bilder wurde gespeichert';
+$lang['ranks'] = 'Reihenfolge';
+$lang['Drag to re-order'] = 'Klicken und Ziehen, um eine neue Reihenfolge festzulegen';
+$lang['Quick Local Synchronization'] = 'Schnelle Synchronisierung';
+$lang['No photo can be deleted'] = 'Kein Foto kann gelöscht werden';
+$lang['Delete selected photos'] = 'Lösche ausgewählte Fotos';
+$lang['%d photo was deleted'] = '%d Foto wurde gelöscht';
+$lang['%d photos were deleted'] = '%d Fotos wurden gelöscht';
+$lang['Downloads'] = 'Downloads';
+$lang['Released on'] = 'Veröffentlicht am';
+$lang['Number of downloads'] = 'Anzahl der Downloads';
+
+
+// --------- Starting below: New or revised $lang ---- from Colibri
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo-Newsletter';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Abonnieren Sie den Piwigo-Newsletter. Wenn eine neue Version von Piwigo bereitsteht oder wichtige Sicherheits-Updates erschienen sind, werden Sie per E-Mail benachrichtigt. Auch über bedeutende Ereignisse rund um das Piwigo-Projekt werden Sie informiert. Es erscheinen nur wenige Newsletter im Jahr.';
+$lang['Subscribe %s'] = 'Abonnieren %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Melde %s an für den Piwigo-Newsletter';
+$lang['Purge search history'] = 'Lösche die Suchhistorie';
+$lang['Hide'] = 'Verstecken';
+$lang['Operation in progress'] = 'Arbeite daran.';
+$lang['Please wait...'] = 'Bitte warten...';
+$lang['Password is missing. Please enter the password.'] = 'Das Kennwort fehlt. Bitte geben Sie Ihr Kennwort ein.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Das Kennwort zum Überprüfen fehlt. Bitte geben Sie ihr gewähltes Kennwort noch einmal ein.';
+$lang['Allow users to edit their own comments'] = 'Erlaube Benutzern, ihre eigenen Kommentare zu editieren';
+$lang['Allow users to delete their own comments'] = 'Erlaube Benutzern, ihre eigenen Kommentare zu löschen';
+$lang['Email administrators when a comment is modified'] = 'Schicke den Administratoren eine E-Mail, wenn ein Kommentar verändert wurde';
+$lang['Email administrators when a comment is deleted'] = 'Schicke den Administratoren eine E-Mail, wenn ein Kommentar gelöscht wurde';
+$lang['Cannot delete the old permalink !'] = 'Kann den alten Permalink nicht löschen!';
+$lang['Hit'] = 'Treffer';
+$lang['Tools'] = 'Werkzeuge';
+$lang['Photos'] = 'Fotos';
+$lang['Themes'] = 'Themen';
+$lang['Instructions to use Piwigo'] = 'Hinweise zur Benutzung von Piwigo';
+$lang['Installed Themes'] = 'Installierte Themen';
+$lang['Add New Theme'] = 'Füge ein neues Thema hinzu';
+$lang['Forbid this theme to users'] = 'Verbieten Sie dieses Thema den Benutzern';
+$lang['Set as default theme for unregistered and new users'] = 'Setze als Standardthema für unregistrierte und neue Benutzer';
+$lang['unknown'] = 'unbekannt';
+$lang['Upload Photos'] = 'Lade Fotos hoch';
+$lang['Drop into album'] = 'In das Album hochladen';
+$lang['+ Add an upload box'] = '+ Füge eine weitere Uploadbox hinzu';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Erstellen Sie das Verzeichnis "%s" im Hauptverzeichnis (root) Ihrer Piwigo-Installation';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Geben Sie dem Verzeichnis "%s" im Hauptverzeichnis (root) Ihrer Piwigo-Installation Schreibrechte (chmod 777)';
+$lang['existing album'] = 'existierendes Album';
+$lang['create a new album'] = 'Erstelle ein neues Album';
+$lang['Album name'] = 'Albumname';
+$lang['Album "%s" has been added'] = 'Album "%s" wurde hinzugefügt';
+$lang['Uploaded Photos'] = 'Hochgeladene Fotos';
+$lang['%d photos uploaded'] = '%d Fotos hochgeladen';
+$lang['Privacy level set to "%s"'] = 'Datenschutzstufe auf "%s" gesetzt';
+$lang['Album "%s" now contains %d photos'] = 'Das Album "%s" enthält nun %d Fotos';
+$lang['Manage this set of %d photos'] = 'Verwalte dieses Set von %d Fotos';
+$lang['Select files'] = 'Wähle Dateien aus';
+$lang['Everybody'] = 'Jeder';
+$lang['Who can see these photos?'] = 'Wer soll die Fotos sehen können?';
+$lang['Who can see this photo?'] = 'Wer soll dieses Foto sehen können?';
+$lang['Settings'] = 'Einstellungen';
+$lang['Resize'] = 'Größe verändern';
+$lang['Maximum width'] = 'Maximale Breite';
+$lang['pixels'] = 'Pixel';
+$lang['Maximum height'] = 'Maximale Höhe';
+$lang['Image Quality'] = 'Bildqualität';
+$lang['Save Settings'] = 'Speichere Einstellungen';
+$lang['Your configuration settings are saved'] = 'Die Konfigurationseinstellungen wurden gespeichert.';
+$lang['Active Themes'] = 'Aktive Themen';
+$lang['Add write access to the "%s" directory'] = 'Geben Sie dem Verzeichnis "%s" Schreibrechte';
+$lang['Administration Home'] = 'Startseite der Administration';
+$lang['Change Admin Colors'] = 'Ändere die Administrationsfarben ';
+$lang['Delete this theme'] = 'Lösche dieses Thema';
+$lang['Directory does not exist'] = 'Verzeichnis existiert nicht';
+$lang['Download,'] = 'Download,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronisieren';
+$lang['Get Support on Piwigo Forum'] = 'Holen Sie sich Hilfe im Piwigo-Forum';
+$lang['Help Me'] = 'Hilfe';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Es ist nicht möglich, dieses Thema zu aktivieren, da das Elternthema %s fehlt';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Es ist nicht möglich, dieses Thema zu löschen; andere Themen basieren darauf: %s';
+$lang['Inactive Themes'] = 'Inaktive Themen';
+$lang['Install on your computer,'] = 'Installiere auf Ihrem Computer,';
+$lang['Make this theme available to users'] = 'Stelle dieses Thema den Benutzern zur Verfügung';
+$lang['Page end'] = 'Ende der Seite';
+$lang['Piwigo Uploader'] = 'Piwigo-Uploader';
+$lang['Read Piwigo Documentation'] = 'Lese die Piwigo-Dokumentation';
+$lang['Start pLoader and add your photos.'] = 'Starten Sie pLoader und fügen Sie Ihre Fotos hinzu.';
+$lang['Switch to clear or dark colors for administration'] = 'Wechsle zwischen hellen und dunklen Farben für die Administration.';
+$lang['Theme has been successfully installed'] = 'Thema wurde erfolgreich installiert';
+$lang['Visit Gallery'] = 'Besuchen Sie die Galerie';
+$lang['Visit Piwigo project website'] = 'Besuchen Sie die Piwigo-Projekthomepage';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader bedeutet <em>Piwigo-Uploader</em>. pLoader überträgt Fotos von Ihrem Computer in Ihre Piwigo-Fotogalerie.';
+$lang['Guest Settings'] = 'Einstellungen für Gäste';
+$lang['Main Page'] = 'Hauptseite';
+$lang['Photo Page'] = 'Fotoseite';
+$lang['Activate Navigation Bar'] = 'Aktiviere Navigationsleiste';
+$lang['Activate Navigation Thumbnails'] = 'Aktiviere Navigationsvorschaubilder';
+$lang['Activate icon "%s"'] = 'Aktiviere Icon "%s"';
+$lang['Photo Properties'] = 'Fotoeigenschaften';
+$lang['Allow user customization'] = 'Erlaube Anpassungen durch Benutzer';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Die Zeit für die Ausführung ist abgelaufen, der Prozess muss fortgesetzt werden [Noch benötigte Zeit: %d Sekunden].';
+$lang['Languages'] = 'Sprachen';
+$lang['Installed Languages'] = 'Installierte Sprachen';
+$lang['Add New Language'] = 'Füge eine neue Sprache hinzu';
+$lang['Language has been successfully installed'] = 'Sprachdateien wurden erfolgreich installiert';
+$lang['Select:'] = 'Auswahl:';
+$lang['None'] = 'Nichts';
+$lang['Invert'] = 'Umkehren';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Es ist nicht möglich, dieses Thema zu deaktivieren, Sie benötigen mindestens ein Thema.';
+$lang['Miscellaneous'] = 'Verschiedenes';
+$lang['Virtual Links'] = 'Virtuelle Verbindungen';
+$lang['Webmaster status is required.'] = 'Sie benötigen Webmaster-Berechtigung.';
+$lang['Bound Theme'] = 'Verbundenes Thema';
+$lang['Allow rating'] = 'Bewertung von Fotos erlauben';
+$lang['Select at least one comment'] = 'Wählen Sie mindestens einen Kommentar aus';
+$lang['Active Plugins'] = 'Aktivierte Plugins';
+$lang['Inactive Plugins'] = 'Deaktivierte Plugins';
+$lang['Missing Plugins'] = 'Fehlende Plugins';
+$lang['Uninstalled Plugins'] = 'Deinstallierte Plugins';
+$lang['By %s'] = 'Von %s';
+$lang['Visit plugin site'] = 'Besuchen Sie die Plugin-Seite';
+$lang['Active Languages'] = 'Aktivierte Sprachen';
+$lang['Delete this language'] = 'Lösche diese Sprache';
+$lang['Forbid this language to users'] = 'Verbiete Benutzern, diese Sprache auszuwählen';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Sie müssen zuerst eine neue Standardsprache wählen, bevor Sie diese Sprache deaktivieren.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Sie können diese Sprache nicht deaktvieren, da mindestens eine Sprache benötigt wird.';
+$lang['Inactive Languages'] = 'Deaktivierte Sprachen';
+$lang['Make this language available to users'] = 'Aktiviere diese Sprache für Benutzer';
+$lang['Set as default language for unregistered and new users'] = 'Als Standardsprache für neue und unregistrierte Benutzer festlegen';
+$lang['delete'] = 'löschen';
+$lang['Add Photos'] = 'Fotos hinzufügen';
+$lang['The following tag was deleted'] = 'Folgendes Schlagwort wurde gelöscht';
+$lang['There is no other language available.'] = 'Es ist keine weitere Sprache verfügbar.';
+$lang['There is no other plugin available.'] = 'Es ist kein weiteres Plugin verfügbar.';
+$lang['There is no other theme available.'] = 'Es ist kein weiteres Thema verfügbar.';
+$lang['Add another set of photos'] = 'Füge ein weiteres Fotoset hinzu';
+$lang['By rank'] = 'Nach Rangfolge';
+$lang['Manual order'] = 'Manuelle Sortierung';
+$lang['Order of menubar items has been updated successfully.'] = 'Die Reihenfolge der Menüelemente wurde erfolgreich angepasst.';
+$lang['This theme was not designed to be directly activated'] = 'Dieses Thema kann nicht direkt aktiviert werden';
+$lang['Pending Comments'] = 'Freizugebende Kommentare';
+$lang['Menu Management'] = 'Menü';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In Ihrer php.ini Datei ist der upload_max_filesize (%sB) größer als post_max_size (%sB). Sie sollten diese Einstellung ändern.';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif-Erweiterung nicht verfügbar, der Administrator sollte die Exif-Verwendung deaktivieren';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Die hochgeladene Datei überschreitet die upload_max_filesize Einstellung in der Datei php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Die hochgeladenen Dateien überschreiten die post_max_size Einstellung in der Datei php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Die hochgeladene Datei überschreitet die MAX_FILE_SIZE-Einstellung, die in der HTML-Form angegeben wurde';
+$lang['The uploaded file was only partially uploaded'] = 'Die hochgeladene Datei wurde nur teilweise übertragen';
+$lang['No file was uploaded'] = 'Keine Datei wurde hochgeladen';
+$lang['Missing a temporary folder'] = 'Ein temporäres Verzeichnis wird vermisst';
+$lang['Failed to write file to disk'] = 'Es ist nicht möglich, die Datei zu schreiben';
+$lang['File upload stopped by extension'] = 'Das Hochladen der Datei wurde infolgedessen gestoppt';
+$lang['Unknown upload error'] = 'Unbekannter Fehler beim Hochladen';
+$lang['Error on file "%s" : %s'] = 'Fehler bei Datei "%s" : %s';
+$lang['automatic order'] = 'automatische Sortierung';
+$lang['manual order'] = 'manuelle Sortierung';
+$lang['Albums automatically sorted'] = 'Alben automatisch sortiert';
+$lang['Batch Manager'] = 'Stapelverarbeitung';
+$lang['include child albums'] = 'inclusive Unteralben';
+$lang['Selection'] = 'Auswahl';
+$lang['Action'] = 'Aktion';
+$lang['Set author'] = 'Setze den Autor';
+$lang['Set title'] = 'Setze den Titel';
+$lang['Set creation date'] = 'Setze das Erstellungsdatum';
+$lang['Apply action'] = 'Bestätige die Aktion';
+$lang['on the %d selected photos'] = 'der %d ausgewählten Fotos';
+$lang['%d of %d photos selected'] = '%d von %d Fotos ausgewählt';
+$lang['No photo selected, %d photos in current set'] = 'Kein Foto ausgewählt, %d Fotos im gegenwärtigen Set';
+$lang['All %d photos are selected'] = 'Alle %d Fotos ausgewählt';
+$lang['remove this filter'] = 'entferne diesen Filter';
+$lang['Duplicates'] = 'doppelte';
+$lang['Add a filter'] = 'Füge einen Filter hinzu';
+$lang['Remove all filters'] = 'Entferne alle Filter';
+$lang['Refresh photo set'] = 'Aktualisiere das Fotoset';
+$lang['The whole page'] = 'Die ganze Seite';
+$lang['The whole set'] = 'Das ganze Set';
+$lang['No photo in the current set.'] = 'Keine Fotos im gegenwärtigen Set.';
+$lang['No photo selected, no action possible.'] = 'Kein Foto ausgewählt, keine Aktion möglich.';
+$lang['Choose an action'] = 'Wähle eine Aktion';
+$lang['remove author'] = 'entferne den Autor';
+$lang['Type here the author name'] = 'Geben Sie hier den Name des Autors ein';
+$lang['remove title'] = 'Entferne Titel';
+$lang['Type here the title'] = 'Geben Sie hier den Titel ein';
+$lang['remove creation date'] = 'Entferne das Erstellungsdatum';
+$lang['Album photos associated to the following albums: %s'] = 'Albumfotos findet man in folgenden Alben: %s';
+$lang['Delete orphan tags'] = 'Lösche nicht benutzte Schlagwörter';
+$lang['delete photo'] = 'Lösche Foto';
+$lang['Orphan tags deleted'] = 'Nicht benutzte Schlagwörter wurden gelöscht';
+$lang['Week starts on'] = 'Die Woche beginnt mit';
+$lang['You have %d orphan tags: %s.'] = 'Sie haben %d nicht benutzte Schlagwörter: %s.';
+$lang['Remove from caddie'] = 'Vom Sammelkorb entfernen';
+$lang['Themes which need upgrade'] = 'Themen, die aktualisiert werden sollten';
+$lang['Languages which need upgrade'] = 'Sprachen, die aktualisiert werden sollten';
+$lang['All themes are up to date.'] = 'Alle Themen sind auf dem neuesten Stand.';
+$lang['All plugins are up to date.'] = 'Alle Plugins sind auf dem neuesten Stand.';
+$lang['All languages are up to date.'] = 'Alle Sprachen sind auf dem neuesten Stand.';
+$lang['Visit theme site'] = 'Besuchen Sie die Themenseite';
+$lang['Visit language site'] = 'Besuchen Sie die Sprachenseite';
+$lang['New Version'] = 'Neue Version';
+$lang['display'] = 'Zeige';
+$lang['Obsolete Plugins'] = 'Veraltete Plugins'; 
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WARNUNG! Dieses Plugin ist nicht kompatibel mit dieser Version von Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Wollen Sie es wirklich wieder aktivieren?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DIESES PLUGIN IST JETZT IN DEN KERN VON PIWIGO INTEGRIERT! BITTE UNBEDINGT DEINSTALLIEREN!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: DIESES PLUGIN FEHLT, OBWOHL ES INSTALLIERT IST! BITTE UNBEDINGT DEINSTALLIEREN! ';
+$lang['Thumbnails generation in progress...'] = 'Vorschaubilder werden neu erstellt...';
+$lang['Photos generation in progress...'] = 'Fotos werden neu erstellt...';
+$lang['%s photos have been regenerated'] = '%s Fotos wurden neu erstellt';
+$lang['%s photos can not be regenerated'] = '%s Fotos konnten nicht neu erstellt werden';
+$lang['new'] = 'neu';
+$lang['No results'] = 'Keine Ergebnisse';
+$lang['Searching...'] = 'Suche...';
+$lang['Type in a search term'] = 'Geben Sie bitte einen Suchbegriff ein';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivieren Sie das Icon "Neu" neben den Alben und Fotos ';
+$lang['Deactivate all'] = 'Deaktiviere alle';
+$lang['Default photos order'] = 'Voreingestellte Fotoanordnung';
+$lang['Restore'] = 'Zurücksetzen';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Zurücksetzen auf Standardkonfiguration. Alle Einstellungen in diesem Plugin gehen verloren!';
+$lang['Show menubar'] = 'Zeige die Menüleiste';
+$lang['Updates'] = 'Updates';
+$lang['Update in progress... Please wait.'] = 'Aktualisiere... Bitte warten.';
+$lang['Ignore this update'] = 'Ignoriere diese Aktualisierung';
+$lang['Reset ignored updates'] = 'Zurücksetzen der ignorierten Aktualisierungen';
+$lang['Update All'] = 'Aktualisiere alles';
+$lang['ERROR'] = 'FEHLER';
+$lang['Update Complete'] = 'Aktualisierung komplett';
+$lang['Piwigo Update'] = 'Piwigo-Aktualisierung';
+$lang['Extensions Update'] = 'Aktualisierung der Erweiterungen';
+$lang['All extensions are up to date.'] = 'Alle Erweiterungen sind aktuell.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Folgende Plugins sind möglicherweise nicht kompatibel mit der neuen Version von Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Folgende Themen sind möglicherweise nicht kompatibel mit der neuen Version von Piwigo:';
+$lang['I decide to update anyway'] = 'Ich möchte trotzdem aktualisieren';
+$lang['Update to Piwigo %s'] = 'Aktualisierung auf Piwigo %s';
+$lang['Two updates are available'] = 'Zwei Aktualisierungen sind verfügbar';
+$lang['This is a minor update, with only bug corrections.'] = 'Dies ist eine kleine Aktualisierung zur Fehlerbeseitigung.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Dies ist eine größere Aktualisierung mit <a href="%s">neuen Funktionen </a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Einige Themen und Plugins sind nun leider nicht mehr verfügbar.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Empfehlung: Sie können direkt auf Piwigo %s aktualisieren. Ein Upgrade auf Piwigo %s ist nicht nötig.';
+$lang['Save Template Directory'] = 'Sichere das Template-Verzeichnis';
+$lang['Dump Database'] = 'Sichere die Datenbank';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Sichere auch die Daten der History. (Warnung: Das Speicherlimit des Servers kann überschreiten werden!)';
+$lang['Unable to dump database.'] = 'Es ist nicht möglich, die Datenbank zu sichern.';
+$lang['Some upgrades are available for extensions.'] = 'Einige Aktualisierungen für Erweiterungen sind verfügbar.';
+$lang['Ignore All'] = 'Ignoriere alle';
+$lang['Crop'] = 'Zuschneiden';
+$lang['Width'] = 'Breite';
+$lang['Height'] = 'Höhe';
+$lang['Follow Orientation'] = 'Folgen Sie der Orientierung';
+$lang['Graphics Library'] = 'Grafikbibliothek';
+$lang['Add a criteria'] = 'Ein Kriterium hinzufügen'; 
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Sie können keine Standardsortierung festlegen, da Sie eine benutzerdefinierte Einstellung in Ihrer lokalen Konfiguration vorgenommen haben.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Sie haben <i>$conf[\'order_by\']</i> in ihrer lokalen Konfigurationsdatei festgelegt. Dieser Parameter ist überholt. Bitte entfernen Sie ihn oder benennen Sie ihn um in <i>$conf[\'order_by_custom\']</i>!';
+$lang['Average rate'] = 'Durchschnittliche Bewertung';
+$lang['Rate'] = 'Bewertung';
+$lang['Learn more'] = 'Mehr Informationen...';
+$lang['An error has occured during upgrade.'] = 'Während des Aktualisierens trat ein Fehler auf.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Während des Entpackens trat ein Fehler auf. Bitte überprüfen Sie die Schreibrechte Ihrer Piwigo-Installation. <br><a href="%s">Klicken Sie hier, um das Fehlerprotokoll einzusehen</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kann die Aktualisierungsdatei nicht vom Server laden';
+$lang['Zoom'] = 'Zoom';
+$lang['(this tag will be deleted)'] = '(dieses Schlagwort wird gelöscht!)';
+$lang['... or '] = '...oder&nbsp;';
+$lang['Allowed file types: %s.'] = 'Erlaubte Dateitypen: %s.';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Standardmäßig erstellt Piwigo eine für das Web optimierte Ansicht der HD-Version (hochaufgelösten Version) Ihres Fotos.';
+$lang['Confirm merge'] = 'Zusammenführen bestätigen';
+$lang['Create'] = 'Erstellen';
+$lang['hide details'] = 'Details verbergen';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Wenn das Bild nicht HD (hochaufgelöst) ist und das Bild kleiner ist als die für das Web optimierte Größe, verwendet Piwigo dieses als HD und erstellt eine verkleinerte weboptimierte Version.';
+$lang['Manage Permissions'] = 'Zugriff verwalten';
+$lang['Maximum file size: %sB.'] = 'Max. Dateigröße: %sB.';
+$lang['Merge selected tags'] = 'Führe markierte Schlagwörter zusammen';
+$lang['Merge tags'] = 'Schlagwörter zusammenführen';
+$lang['No destination tag selected'] = 'Kein Ziel-Schlagwort gewählt';
+$lang['Photo %s of %s'] = 'Bild %s of %s';
+$lang['Select an album'] = 'Wähle ein Album';
+$lang['Select at least two tags for merging'] = 'Wählen Sie mindestens 2 Schlagwörter zum Zusammenführen aus';
+$lang['Select the destination tag'] = 'Wähle Ziel-Schlagwort';
+$lang['show details'] = 'Details zeigen';
+$lang['Start Upload'] = 'Upload starten';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Schlagwörter <em>%s</em> mit <em>%s</em> zusammengeführt';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Sie benutzen den Browser-Uploader. Benutzen Sie stattdessen den <a href="%s">Flash-Uploader</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Probleme mit dem Flash-Uploader? Benutzen Sie stattdessen den <a href="%s">Browser-Uploader</a>.';
+$lang['A locked gallery is only visible to administrators'] = 'Eine gesperrte Galerie kann nur von Administratoren eingesehen werden';
+$lang['Activate comments'] = 'Kommentare aktivieren';
+$lang['administrators'] = 'Administratoren';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Maximale Auflösung (ca.): %dM Pixel (das sind %dx%d Pixel).';
+$lang['Default comments order'] = 'Standardsortierreihenfolge für Kommentare';
+$lang['Gallery unlocked'] = 'Galerie entsperrt';
+$lang['modified'] = 'verändert';
+$lang['Move to album'] = 'Verschiebe ins Album';
+$lang['Notify administrators when a comment is'] = 'Administratoren bei folgenden Kommentaränderungen benachrichtigen';
+$lang['Original Size'] = 'Originalgröße';
+$lang['pending validation'] = 'Auf Bestätigung wartend';
+$lang['Photo name'] = 'Bildname';
+$lang['registered users'] = 'Registrierte Besucher';
+$lang['Resize after upload'] = 'Größe nach dem Upload anpassen';
+$lang['Save visits in history for'] = 'Besuche in der History speichern für';
+$lang['Send connection settings by email'] = 'Verbindungseinstellungen als E-Mail senden';
+$lang['simple visitors'] = 'einfache Besucher';
+$lang['The original image quality must be a number between %d and %d'] = 'Die originale Bildqualität muss eine Zahl zwischen %d und %d sein';
+$lang['The original maximum height must be a number between %d and %d'] = 'Die originale Maximalhöhe muss eine Zahl zwischen %d und %d sein';
+$lang['The original maximum width must be a number between %d and %d'] = 'Die originale Maximalbreite muss eine Zahl zwischen %d und %d sein';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Die %d Fotos dieses Albums wurden zwischen %s und %s hochgeladen.';
+$lang['This album contains %d photos, added on %s.'] = 'Die %d Fotos dieses Albums wurden am %s hochgeladen.';
+$lang['This album contains no photo.'] = 'Dieses Album enthält keine Fotos.';
+$lang['Unlock gallery'] = 'Galerie entsperren';
+$lang['Center of interest'] = 'Bildschwerpunkt';
+$lang['Not cropped correctly?'] = 'Nicht richtig zugeschnitten?';
+$lang['apply automatic sort order'] = 'Automatische Sortierreihenfolge anwenden';
+$lang['Automatic sort order'] = 'Automatische Sortierreihenfolge';
+$lang['Cancel'] = 'Abbrechen';
+$lang['cancel manual order'] = 'manuelle Reihenfolge abbrechen';
+$lang['List'] = 'Liste';
+$lang['Save manual order'] = 'Manuelle Reihenfolge speichern';
+$lang['You can activate only one mobile theme.'] = 'Sie können nur ein Mobil-Layout aktivieren.';
+$lang['%s has been successfully updated.'] = '%s wurde erfolgreich aktualisiert.';
+$lang['Add tags'] = 'Schlagwörter hinzufügen';
+$lang['Applications'] = 'Applikationen';
+$lang['Last import'] = 'Letzter Import';
+$lang['Predefined filter'] = 'Voreingestellter Filter';
+$lang['Web Form'] = 'Webformular';
+$lang['With no album'] = 'Ohne Album';
+$lang['With no tag'] = 'Ohne Schlagwort';
+$lang['With no virtual album'] = 'Ohne virtuelles Album';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Das App <em>Piwigo für Android</em> ermöglicht es Ihnen, sich mit Ihrer Piwigo-Galerie zu verbinden, Alben zu erstellen und mehrere Fotos gleichzeitig hochzuladen.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Das App <em>Piwigo für iOS</em> ermöglicht es Ihnen, sich mit Ihrer Piwigo-Galerie zu verbinden, Alben zu erstellen und mehrere Fotos gleichzeitig hochzuladen.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom ist eine Bildbearbeitungssoftware, die entwickelt wurde, um eine grosse Anzahl von Bildern zu verwalten und zu bearbeiten.';
+$lang['Available on'] = 'Erhältlich bei ';
+$lang['Available versions for'] = 'Verfügbare Versionen für';
+$lang['Piwigo for Android'] = 'Piwigo für Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo für iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo-Publish-Plugin für Lightroom';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Das Piwigo-Publish-Plugin erlaubt es Ihnen, Bilder aus Lightroom zu exportieren und mit Ihrer Piwigo-Fotogalerie zu synchronisieren.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u Benutzer haben automatisch Zugriff, weil sie zu einer Gruppe mit entsprechenden Zugriffsrechten gehören.';
+$lang['any visitor can see this album'] = 'jeder Besucher kann das Album sehen';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture für Mac ist ein mächtiges Werkzeug, um Bilder zu bearbeiten und große Bildersammlungen zu verwalten.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture ist für professionelle Fotografen bestimmt und so einfach zu bedienen wie iPhoto.';
+$lang['Groups and users'] = 'Gruppen und Benutzer';
+$lang['include photos with lower privacy level'] = 'Fotos mit geringerer Privatsphäre einschließen';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto ist die Standard-Fotoverwaltung unter Mac OS X. Das Piwigo-Export-Plugin ermöglicht Ihnen das Erstellen neuer Alben und den Export Ihrer Fotos direkt aus iPhoto in Ihre Piwigo-Fotogalerie.';
+$lang['Permission granted for users'] = 'Zugriff für Benutzer erlaubt';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo-Export-Plugin für Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo-Export-Plugin für iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo ';
+$lang['Select groups...'] = 'Wähle Gruppen...';
+$lang['Select users...'] = 'Wähle Benutzer...';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Das Piwigo-Export-Plugin erlaubt es Ihnen, Alben zu erstellen und Fotos zu exportieren.';
+$lang['There is no group in this gallery.'] = 'Es gibt keine Gruppe in dieser Galerie.';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Besucher müssen sich einloggen und die entsprechenden Rechte besitzen, um das Album zu sehen';
+$lang['Delete multiple size images'] = 'Mehrfache Bildgrößen löschen';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam ist ein modernes Bildverwaltungsprogramm für Linux, Windows und Mac OS X. digikam ist freie Software.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam ist für Fotografen gedacht, die Bilder verwalten, bearbeiten, verbessern, katalogisieren und weitergeben wollen.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Der Leistungsumfang schließt das Durchbättern der Galerie, das Erstellen von Alben und das Hochladen von Fotos ein.';
+$lang['Generate multiple size images'] = 'Mehrfache Bildgrößen generieren';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Unter Linux installieren Sie Shotwell einfach mit Ihrem Paketmanager. Aktivieren Sie die Option "Piwigo Publishing".';
+$lang['Permission granted for groups'] = 'Zugriff für Gruppen erlaubt';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo-Publish-Plugin für digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid ist ein Piwigo-Client für Android. Das App ist Open Source (GPL v3).';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell ist eine Open-Source-Bildverwaltung für Linux und das Standard-Bildverwaltungsprogramm unter Ubuntu und Fedora.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Um Ihre Bilder von digiKam nach Piwigo zu exportieren, installieren Sie einfach digiKam und die Kipi-Plugins.';
+$lang['No group is permitted to see this private album'] = 'Keine Gruppe hat das Recht, dieses private Album zu betrachten';
+$lang['Permission management'] = 'Zugriffsverwaltung';
+$lang['custom'] = 'Anpassung';
+$lang['Photo sizes with crop'] = 'Bild nach Zuschnitt';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Die Mitte ist der bedeutungsvollste Bereich eines Bildes.';
+$lang['add a new watermark'] = 'fügen Sie ein neues Wasserzeichen hinzu.';
+$lang['Apply watermark if height is bigger than'] = 'Wasserzeichen anwenden, wenn die Höhe größer ist als';
+$lang['Apply watermark if width is bigger than'] = 'Wasserzeichen anwenden, wenn die Breite größer ist als';
+$lang['bottom left corner'] = 'linke untere Ecke';
+$lang['bottom right corner'] = 'rechte untere Ecke';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Der Bildschwerpunkt wird für gewöhnlich der Mitte eines Fotos zugeordnet.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Für Fotogrößen mit einem Schnitt, wie zum Beispiel quadratisch, versucht Piwigo, so gut es geht, den Bildschwerpunkt miteinzubeziehen.';
+$lang['middle'] = 'Mitte';
+$lang['Opacity'] = 'Deckkraft';
+$lang['Select a file'] = 'Wählen Sie eine Datei';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Wählen Sie mit der Maus einen Bereich, um einen neuen
+Bildschwerpunkt festzulegen.';
+$lang['top left corner'] = 'obere linke Ecke';
+$lang['top right corner'] = 'obere rechte Ecke';
+$lang['X Position'] = 'X-Position';
+$lang['X Repeat'] = 'X-Wiederholung';
+$lang['Y Position'] = 'Y-Position';
+$lang['Multiple Size'] = 'Bildqualität/Bildgröße';
+$lang['%d day'] = '%d Tag';
+$lang['%d days'] = '%d Tage';
+$lang['%d hour'] = '%d Stunde';
+$lang['%d hours'] = '%d Stunden';
+$lang['%d minute'] = '%d Minute';
+$lang['%d minutes'] = '%d Minuten';
+$lang['%d month'] = '%d Monat';
+$lang['%d months'] = '%d Monate';
+$lang['%d second'] = '%d Sekunde';
+$lang['%d seconds'] = '%d Sekunden';
+$lang['%d year'] = '%d Jahr';
+$lang['%d years'] = '%d Jahre';
+$lang['%s ago'] = 'vor %s';
+$lang['%s in the future'] = '%s in Zukunft';
+$lang['Added by %s'] = 'Hinzugefügt von %s';
+$lang['Numeric identifier : %d'] = 'Numerische Kennzahl: %d';
+$lang['Original file : %s'] = 'Originaldatei: %s';
+$lang['Posted %s on %s'] = '%s gesendet am %s';
+$lang['Rated %d times, score : %.2f'] = 'Bewertet %d mal, Wertung: %.2f';
+$lang['Sharpen'] = 'Schärfen';
+$lang['Visited %d times'] = 'Besucht %d mal';
+$lang['Watermark'] = 'Wasserzeichen';
+$lang['%d week'] = '%d Woche';
+$lang['%d weeks'] = '%d Wochen';
+$lang['Edit photo'] = 'Foto bearbeiten';
+$lang['create a new site'] = 'Erstelle eine neue Seite';
+$lang['No order field selected'] = 'Kein Anordnungsfeld gewählt';
+$lang['Duplicate selected tags'] = 'Ausgewählte Schlagworte duplizieren';
+$lang['Name of the duplicate'] = 'Name des Duplikats';
+$lang['Source tag'] = 'Schlagwort Quelle';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Das Schlagwort "%s" ist jetzt ein Duplikat von "%s"';
+$lang['Landscape'] = 'Quer-Format';
+$lang['Minimum height'] = 'Minimum Höhe';
+$lang['Minimum width'] = 'Minimum Breite';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Hoch-Kant';
+$lang['Manage photos'] = 'Fotos verwalten';
+$lang['View in gallery'] = 'Gallerieansicht';
+$lang['Number of albums per page'] = 'Anzahl der Alben pro Seite';
+$lang['Ratio'] = 'Verhältnis';
+$lang['between %.2f and %.2f'] = 'zwischen %.2f und %.2f';
+$lang['between %d and %d pixels'] = 'zwischen %d und %d Pixel';
+$lang['Duplicate'] = 'Duplikat';
+$lang['Manage the members'] = 'Benutzer verwalten';
+$lang['Merge selected groups'] = 'Gewählte Gruppen zusammenführen';
+$lang['No group selected, no action possible.'] = 'Keine Gruppen ausgewählt, Aktion kann nicht durgeführt werden';
+$lang['No members to manage'] = 'Keine Benutzer zu verwalten';
+$lang['Please select at least two groups'] = 'Bitte wähle mindestens 2 Gruppen';
+$lang['Rename'] = 'Umbenennen';
+$lang['This group will be set to default'] = 'Diese Gruppe wird als Standard verwendet';
+$lang['This group will be unset to default'] = 'Dies Gruppe wird nicht länger als Standard verwendet';
+$lang['Type here the name of the new group'] = 'Name der neuen Gruppe hier eingeben';
+$lang['Purge user cache'] = 'Benutzer cache löschen';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Die Bildgröße wird auf %dx%d Pixel reduziert.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Größenänderung nach hochladen deaktiviert, da die GD Library aktiviert ist. ';
+$lang['Select at least one tag'] = 'Wählen Sie mindesten einen Tag aus';
+$lang['Basic settings'] = 'Grundeinstellungen';
+$lang['General'] = 'Haupteinstellungen';
+$lang['Mail theme'] = 'Mail-Thema';
+?>
Index: /tags/2.6.0RC1/language/de_DE/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/common.lang.php	(revision 25596)
@@ -0,0 +1,422 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Deutsch [DE]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=416
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Deutsch';
+$lang_info['country'] = 'Deutschland';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'de';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d kB';
+$lang['%d album updated'] = '%d Album aktualisiert';
+$lang['%d albums updated'] = '%d Alben aktualisiert';
+$lang['%d comment to validate'] = '%d Kommentar freizuschalten';
+$lang['%d comments to validate'] = '%d Kommentare freizuschalten';
+$lang['%d new comment'] = '%d neuer Kommentar';
+$lang['%d new comments'] = '%d neue Kommentare';
+$lang['%d comment'] = '%d Kommentar';
+$lang['%d comments'] = '%d Kommentare';
+$lang['%d hit'] = '%d Aufruf';
+$lang['%d hits'] = '%d Aufrufe';
+$lang['%d new photo'] = '%d neues Foto';
+$lang['%d new photos'] = '%d neue Fotos';
+$lang['%d new user'] = '%d neuer Benutzer';
+$lang['%d new users'] = '%d neue Benutzer';
+$lang['About'] = 'Über uns';
+$lang['All tags'] = 'Alle Schlagwörter';
+$lang['Any tag'] = 'Beliebiges Schlagwort';
+$lang['At least one listed rule must be satisfied.'] = 'Mindestens eine aufgelistete Regel muss erfüllt werden.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Alben';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Dieses Fenster schließen.';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS-Feed (Fotos und Kommentare)';
+$lang['Confirm Password'] = 'Neues Passwort bestätigen';
+$lang['Connection settings'] = 'Anmeldung';
+$lang['Login'] = 'Anmeldung';
+$lang['Contact webmaster'] = 'E-Mail an den Webmaster';
+$lang['Create a new account'] = 'Neues Benutzerkonto erstellen';
+$lang['Created on'] = 'Erstellt am';
+$lang['Creation date'] = 'Erstellungsdatum';
+$lang['Current password is wrong'] = 'Aktuelles Passwort ist falsch.';
+$lang['Dimensions'] = 'Abmessungen';
+$lang['Display'] = 'Anzeige';
+$lang['Each listed rule must be satisfied.'] = 'Jede aufgelistete Regel muss erfüllt sein.';
+$lang['Email address is missing. Please specify an email address.'] = 'Die E-Mail-Adresse fehlt. Bitte geben Sie eine E-Mail-Adresse an.';
+$lang['Email address'] = 'E-Mail-Adresse';
+$lang['Enter your personnal informations'] = 'Geben Sie Ihre persönlichen Daten an';
+$lang['Error sending email'] = 'Fehler beim Senden der E-Mail.';
+$lang['File name'] = 'Name der Datei';
+$lang['File'] = 'Datei';
+$lang['Filesize'] = 'Dateigröße';
+$lang['Filter and display'] = 'Filtern und anzeigen';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Passwort vergessen?';
+$lang['Go through the gallery as a visitor'] = 'Besuchen Sie die Galerie als Gast.';
+$lang['Help'] = 'Hilfe';
+$lang['Identification'] = 'Anmeldung';
+$lang['Photos only RSS feed'] = 'RSS-Feed (nur Fotos)';
+$lang['Keyword'] = 'Schlagwort';
+$lang['Links'] = 'Links';
+$lang['N/A'] = 'nicht vorhanden';
+$lang['New on %s'] = 'Neu am %s';
+$lang['Notification'] = 'RSS-Feed';
+$lang['Number of items'] = 'Anzahl der Elemente';
+$lang['Original dimensions'] = 'Ursprüngliche Abmessungen';
+$lang['Password forgotten'] = 'Passwort vergessen';
+$lang['Password'] = 'Passwort';
+$lang['Post date'] = 'Einstellungsdatum';
+$lang['Posted on'] = 'Eingetragen am';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Schnelle Anmeldung';
+$lang['RSS feed'] = 'RSS-Feed';
+$lang['Register'] = 'Registrieren';
+$lang['Registration'] = 'Registrierung';
+$lang['Related tags'] = 'Mit den Schlagwörten';
+$lang['Reset'] = 'Zurücksetzen';
+$lang['Retrieve password'] = 'Passwort abrufen';
+$lang['Search rules'] = 'Suchkriterien';
+$lang['Search tags'] = 'Schlagwörter suchen';
+$lang['Search'] = 'Suchen';
+$lang['display available tags'] = 'Alle verfügbaren Schlagwörter anzeigen';
+$lang['Since'] = 'Seit';
+$lang['Sort by'] = 'Sortieren nach';
+$lang['Sort order'] = 'Sortierreihenfolge';
+$lang['Tag'] = 'Schlagwort';
+$lang['Tags'] = 'Schlagwörter';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Der RSS-Feed beinhaltet Neuigkeiten von dieser Webseite: neue Fotos, aktualisierte Alben, neue Kommentare. Benutzen Sie einen RSS-Feed-Reader.';
+$lang['Unknown feed identifier'] = 'Feed-ID unbekannt.';
+$lang['User comments'] = 'Benutzerkommentare';
+$lang['Username'] = 'Benutzername';
+$lang['Visits'] = 'Besuche';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Woche %d';
+$lang['About Piwigo'] = 'Über Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Sie sind nicht berechtigt, die gewünschte Seite aufzurufen.';
+$lang['add this photo to your favorites'] = 'Foto zu den Favoriten hinzufügen';
+$lang['Administration'] = 'Administration';
+$lang['all'] = 'alle';
+$lang['ascending'] = 'aufsteigend';
+$lang['author(s) : %s'] = 'Autor(en): %s';
+$lang['Expand all albums'] = 'Albenbaum komplett ausklappen';
+$lang['posted after %s (%s)'] = 'eingestellt nach dem %s (%s)';
+$lang['posted before %s (%s)'] = 'eingestellt vor dem %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'eingestellt zwischen %s (%s) und %s (%s)';
+$lang['posted on %s'] = 'eingestellt am %s';
+$lang['Best rated'] = 'Am besten bewertet';
+$lang['display best rated photos'] = 'Zeige die am besten bewerteten Fotos';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Alles';
+$lang['display each day with photos, month per month'] = 'Zeige die Tage mit Fotos nach Monaten';
+$lang['View'] = 'Ansicht';
+$lang['chronology_monthly_calendar'] = 'Monatskalender';
+$lang['chronology_monthly_list'] = 'Monatsliste';
+$lang['chronology_weekly_list'] = 'Wochenliste';
+$lang['Click here if your browser does not automatically forward you'] = 'Klicken Sie hier, wenn Sie nicht von Ihrem Browser automatisch weitergeleitet werden.';
+$lang['comment date'] = 'Datum des Kommentars';
+$lang['Comment'] = 'Kommentar';
+$lang['Your comment has been registered'] = 'Ihr Kommentar wurde gespeichert.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-Floot-Sperre: Vor dem Absenden eines weiteren Kommentars bitte kurz warten.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Ihr Kommentar wurde abgelehnt, da er den Validierungsregeln nicht entspricht.';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Ein Administrator muss Ihren Beitrag freischalten, bevor er sichtbar wird.';
+$lang['This login is already used by another user'] = 'Dieser Benutzername ist bereits vergeben.';
+$lang['Comments'] = 'Kommentare';
+$lang['Add a comment'] = 'Kommentar hinzufügen';
+$lang['created after %s (%s)'] = 'erstellt nach dem %s (%s)';
+$lang['created before %s (%s)'] = 'erstellt vor dem %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'erstellt zwischen %s (%s) und %s (%s)';
+$lang['created on %s'] = 'erstellt am %s';
+$lang['Customize'] = 'Benutzerdaten / Layout';
+$lang['Your Gallery Customization'] = 'Anpassung des Seitentitels ';
+$lang['day'][0] = 'Sonntag';
+$lang['day'][1] = 'Montag';
+$lang['day'][2] = 'Dienstag';
+$lang['day'][3] = 'Mittwoch';
+$lang['day'][4] = 'Donnerstag';
+$lang['day'][5] = 'Freitag';
+$lang['day'][6] = 'Samstag';
+$lang['Default'] = 'Standard';
+$lang['delete this photo from your favorites'] = 'Lösche dieses Foto aus der Favoritenliste';
+$lang['Delete'] = 'Löschen';
+$lang['descending'] = 'absteigend';
+$lang['Download'] = 'Herunterladen';
+$lang['Download this file'] = 'Datei herunterladen';
+$lang['edit'] = 'bearbeiten';
+$lang['wrong date'] = 'Datum falsch';
+$lang['excluded'] = 'ausgeschlossen';
+$lang['Your favorites'] = 'Meine Favoriten';
+$lang['display your favorites photos'] = 'Zeige die Favoriten-Fotos';
+$lang['Favorites'] = 'Favoriten';
+$lang['First'] = 'Erste Seite';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Der Schreibzugriff auf die Datenbank ist wegen Wartungsarbeiten blockiert. Bitte besuchen Sie uns später wieder.';
+$lang['Page generated in'] = 'Seite erstellt in';
+$lang['guest'] = 'Gast';
+$lang['Hello'] = 'Hallo';
+$lang['available for administrators only'] = 'Verfügbar nur für Administratoren';
+$lang['display this album'] = 'Zeige dieses Album';
+$lang['display last user comments'] = 'Zeige die letzten Benutzerkommentare';
+$lang['customize the appareance of the gallery'] = 'Anpassen des Erscheinungsbildes der Galerie';
+$lang['search'] = 'Suchen';
+$lang['Home'] = 'Startseite';
+$lang['Identification'] = 'Identifikation';
+$lang['in this album'] = 'in diesem Album';
+$lang['in %d sub-album'] = 'in %d Unteralbum';
+$lang['in %d sub-albums'] = 'in %d Unteralben';
+$lang['included'] = 'enthalten';
+$lang['Invalid password!'] = 'Passwort ungültig!';
+$lang['Language'] = 'Sprache';
+$lang['last %d days'] = '%d letzte Tage';
+$lang['Last'] = 'Letzte Seite';
+$lang['Logout'] = 'Abmelden';
+$lang['obligatory'] = 'obligatorisch';
+$lang['display a calendar by creation date'] = 'Zeige einen Kalender nach Erstellungsdatum';
+$lang['display all photos in all sub-albums'] = 'Zeige alle Fotos in allen Unteralben';
+$lang['return to normal view mode'] = 'Zurück zur normalen Ansicht';
+$lang['display a calendar by posted date'] = 'Zeige einen Kalender nach Einstellungsdatum';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'Dezember';
+$lang['month'][1] = 'Januar';
+$lang['month'][2] = 'Februar';
+$lang['month'][3] = 'März';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Juni';
+$lang['month'][7] = 'Juli';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['Most visited'] = 'Am häufigsten gesehen';
+$lang['display most visited photos'] = 'Zeige die meistbesuchten Fotos';
+$lang['Unknown identifier'] = 'ID unbekannt';
+$lang['New password'] = 'Neues Passwort';
+$lang['Rate this photo'] = 'Foto bewerten';
+$lang['Next'] = 'Vorwärts';
+$lang['no rate'] = 'noch keine Bewertung';
+$lang['Photos posted within the last %d day.'] = 'Fotos eingestellt im letzten %d Tag.';
+$lang['Photos posted within the last %d days.'] = 'Fotos eingestellt in den letzten %d Tagen.';
+$lang['password updated'] = 'Passwort aktualisiert';
+$lang['Recent period must be a positive integer value'] = 'Der Zeitraum muss eine positive ganze Zahl sein.';
+$lang['photo'] = 'Foto';
+$lang['Click on the photo to see it in high definition'] = 'Klicken Sie auf das Foto, um es in hoher Auflösung zu sehen.';
+$lang['Show file metadata'] = 'Zeige die Metadaten';
+$lang['Powered by'] = 'Unterstützt von';
+$lang['Preferences'] = 'Einstellungen';
+$lang['Previous'] = 'Zurück';
+$lang['Random photos'] = 'Zufällige Fotos';
+$lang['display a set of random photos'] = 'Zeige einen Satz zufälliger Fotos';
+$lang['Recent albums'] = 'Neueste Alben';
+$lang['display recently updated albums'] = 'Zeige kürzlich aktualisierte Alben';
+$lang['Recent period'] = 'Wie viele Tage sollen Bilder als neu markiert werden?';
+$lang['Recent photos'] = 'Neueste Fotos';
+$lang['display most recent photos'] = 'Zeige die neuesten Fotos';
+$lang['Redirection...'] = 'Umleitung...';
+$lang['Please, enter a login'] = 'Bitte geben Sie einen Benutzernamen ein.';
+$lang['login mustn\'t end with a space character'] = 'Benutzername darf nicht mit einem Leerzeichen enden';
+$lang['login mustn\'t start with a space character'] = 'Benutzername darf nicht mit einem Leerzeichen anfangen';
+$lang['this login is already used'] = 'Dieser Benutzername ist bereits vergeben';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'E-Mail-Adresse muss dem Muster xxx@yyy.eee (Beispiel: jack@altern.org) entsprechen';
+$lang['Auto login'] = 'Auto-Login';
+$lang['remove this tag from the list'] = 'Entferne dieses Schlagwort von der Liste.';
+$lang['representative'] = 'Album-Vorschaubild';
+$lang['Search for Author'] = 'Suche nach Autor';
+$lang['Search in albums'] = 'Suche in den Alben';
+$lang['Search by date'] = 'Suche nach Datum';
+$lang['Date'] = 'Datum';
+$lang['End-Date'] = 'Enddatum';
+$lang['Kind of date'] = 'Datumstyp';
+$lang['Search for words'] = 'Suche nach Wörtern';
+$lang['Search for all terms'] = 'alle Wörter';
+$lang['Search for any term'] = 'irgendein Wort';
+$lang['Empty query. No criteria has been entered.'] = 'Die Abfrage ist leer. Kein Kriterium eingegeben.';
+$lang['Search results'] = 'Suchergebnisse';
+$lang['Search in sub-albums'] = 'Suche in den Unteralben';
+$lang['searched words : %s'] = 'Suchbegriffe : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'Zum Album-Vorschaubild machen';
+$lang['Show number of comments'] = 'Zeige die Anzahl der Kommentare';
+$lang['Show number of hits'] = 'Zeige die Anzahl der Bildaufrufe';
+$lang['slideshow'] = 'Diashow';
+$lang['stop the slideshow'] = 'Diashow beenden';
+$lang['Specials'] = 'Erweitert';
+$lang['SQL queries in'] = 'SQL-Abfragen in';
+$lang['display only recently posted photos'] = 'Zeige nur kürzlich eingestellte Fotos';
+$lang['return to the display of all photos'] = 'Zurück zu allen Fotos';
+$lang['the beginning'] = 'Beginn';
+$lang['Thumbnails'] = 'Vorschaubilder';
+$lang['Menu'] = 'Menü';
+$lang['A comment on your site'] = 'Ein Kommentar auf Ihrer Website';
+$lang['today'] = 'heute';
+$lang['Update your rating'] = 'Aktualisieren Sie Ihre Bewertung';
+$lang['the username must be given'] = 'Benutzername fehlt';
+$lang['useful when password forgotten'] = 'Nützlich, wenn Sie ihr Passwort vergessen haben.';
+$lang['Quick search'] = 'Schnellsuche';
+$lang['Connected user: %s'] = 'Verbundene Benutzer: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Browser: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Kommentar: %s';
+$lang['Comment by %s'] = 'Kommentar von %s';
+$lang['User: %s'] = 'Benutzer: %s';
+$lang['Email: %s'] = 'E-Mail-Adresse: %s';
+$lang['Admin: %s'] = 'Verwaltung: %s';
+$lang['Registration of %s'] = 'Registrierung von %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Ungültiger Status für den Benutzer "Gast". Der Standartstatus wird stattdessen verwendet. Bitte kontaktieren Sie den Webmaster.';
+$lang['this email address is already in use'] = 'Diese E-Mail-Adresse wird bereits verwendet';
+$lang['Album results for'] = 'Albumresultate für';
+$lang['Tag results for'] = 'Schlagwortergebnisse für';
+$lang['from %s to %s'] = 'von %s bis %s';
+$lang['Play of slideshow'] = 'Diashow fortsetzen';
+$lang['Pause of slideshow'] = 'Diashow anhalten';
+$lang['Repeat the slideshow'] = 'Diashow wiederholen';
+$lang['Not repeat the slideshow'] = 'Diashow nicht wiederholen';
+$lang['Reduce diaporama speed'] = 'Diashow langsamer';
+$lang['Accelerate diaporama speed'] = 'Diashow schneller';
+$lang['Submit'] = 'Bestätigen';
+$lang['Yes'] = 'Ja';
+$lang['No'] = 'Nein';
+$lang['%d photo'] = '%d Foto';
+$lang['%d photos'] = '%d Fotos';
+$lang['%d photo is also linked to current tags'] = '%d Foto ist auch mit diesen Schlagwörtern verbunden';
+$lang['%d photos are also linked to current tags'] = '%d Fotos sind auch mit diesen Schlagwörtern verbunden';
+$lang['display photos linked to this tag'] = 'Zeige Fotos, die mit diesem Schlagwort verbunden sind';
+$lang['photos posted during the last %d days'] = 'Fotos eingestellt während der letzten %d Tage';
+$lang['Piwigo Help'] = 'Piwigo-Hilfe';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'Nach Anfangsbuchstaben gruppieren';
+$lang['letters'] = 'Buchstaben';
+$lang['show tag cloud'] = 'Zeige die Schlagwortwolke';
+$lang['cloud'] = 'Wolke';
+$lang['Reset to default values'] = 'Zurücksetzen auf Standardwerte';
+$lang['delete all photos from your favorites'] = 'Lösche alle Fotos aus der Favoritenliste';
+$lang['Sent by'] = 'Gesendet von';
+$lang['Are you sure?'] = 'Sind Sie sicher?';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies werden geblockt oder von Ihrem Browser nicht unterstützt. Sie müssen Cookies erlauben, um sich zu verbinden.';
+$lang['Edit a comment'] = 'Bearbeite einen Kommentar';
+$lang['(!) This comment requires validation'] = '(!) Dieser Kommentar muss überprüft werden.';
+$lang['Welcome'] = 'Willkommen';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Willkommen!';
+$lang['... or browse your empty gallery'] = '...oder durchstöbern Sie Ihre leere Galerie.';
+$lang['... or please deactivate this message, I will find my way by myself'] = '...oder übergehe diese Meldung. Ich finde mich selbst zurecht.';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hallo %s, Ihre Piwigo-Fotogalerie ist leer!';
+$lang['I want to add photos'] = 'Ich möchte Fotos hinzufügen.';
+$lang['Manage this user comment: %s'] = 'Verwalte diesen Benutzerkommentar: %s';
+$lang['This author modified following comment:'] = 'Dieser Autor veränderte folgenden Kommentar:';
+$lang['This author removed the comment with id %d'] = 'Dieser Autor löschte den Kommentar mit der ID %d';
+$lang['html tags are not allowed in login'] = 'HTML-Tags sind im Benutzernamen nicht erlaubt';
+$lang['The number of photos per page must be a not null scalar'] = 'Die Anzahl der Fotos pro Seite muss eine ganze Zahl größer als Null sein.';
+$lang['Number of photos per page'] = 'Anzahl der Fotos pro Seite';
+$lang['%d rates'] = '%d Bewertungen';
+$lang['Rating score'] = 'Bewertungsstand';
+$lang['Change my password'] = 'Mein Passwort ändern';
+$lang['Check your email for the confirmation link'] = 'Überprüfen Sie Ihr E-Mail-Postfach auf eine E-Mail mit Bestätigungslink.';
+$lang['Enter your new password below.'] = 'Neues Passwort unten eingeben.';
+$lang['EXIF Metadata'] = 'Exif-Metadaten';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Falls ein Irrtum vorliegt, ignorieren Sie einfach diese E-Mail.';
+$lang['Invalid key'] = 'Ungültiger Schlüssel';
+$lang['Invalid username or email'] = 'Ungültiger Benutzername oder ungültige E-Mail-Adresse';
+$lang['IPTC Metadata'] = 'IPTC-Metadaten';
+$lang['Password Reset'] = 'Passwort zurücksetzen';
+$lang['Password reset is not allowed for this user'] = 'Dieser Benutzer darf das Passwort nicht zurücksetzen.';
+$lang['Please enter your username or email address.'] = 'Bitte Benutzernamen oder E-Mail-Adresse eingeben.';
+$lang['Return to home page'] = 'Zurück zur Startseite';
+$lang['The passwords do not match'] = 'Das Passwort stimmt nicht überein';
+$lang['To reset your password, visit the following address:'] = 'Um das Passwort zurückzusetzen, klicken Sie auf den folgenden Link:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Der Benutzer "%s" hat keine E-Mail-Adresse. Zurücksetzen des Passworts nicht möglich.';
+$lang['Username or email'] = 'Benutzername oder E-Mail-Adresse';
+$lang['You will receive a link to create a new password via email.'] = 'Per E-Mail erhalten Sie einen Link, um ein neues Passwort zu erstellen.';
+$lang['Your password has been reset'] = 'Ihr Passwort wurde zurückgesetzt.';
+$lang['Edit'] = 'Bearbeiten';
+$lang['Hello %s,'] = 'Hallo %s,';
+$lang['Here are your connection settings'] = 'Das sind Ihre Verbindungseinstellungen';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Sollten Sie diese E-Mail irrtümlich erhalten haben, setzen Sie sich bitte mit uns in Verbindung %s.';
+$lang['large'] = 'groß';
+$lang['medium'] = 'mittel';
+$lang['Original'] = 'Original';
+$lang['Password: %s'] = 'Passwort: %s';
+$lang['Send my connection settings by email'] = 'Verbindungseinstellungen per E-Mail versenden';
+$lang['small'] = 'klein';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Eine Anfrage zum Zurücksetzen des Passworts für den folgenden Benutzer wurde gestellt:';
+$lang['square'] = 'quadratisch';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Erfolgreich registriert! Sie werden in Kürze eine E-Mail mit Ihren Zugangsdaten erhalten. Herzlich Willkommen!';
+$lang['Thank you for registering at %s!'] = 'Danke für Ihre Registrierung bei %s!';
+$lang['thumb'] = 'Vorschaubild';
+$lang['Username "%s" on gallery %s'] = 'Benutzername "%s" bei Galerie %s';
+$lang['Username modification'] = 'Benutzername ändern';
+$lang['Username: %s'] = 'Benutzername: %s';
+$lang['xlarge'] = 'besonders groß';
+$lang['xxlarge'] = 'sehr groß';
+$lang['Your username has been successfully changed to : %s'] = 'Ihr Benutzername lautet jetzt:';
+$lang['Photo sizes'] = 'Bildgrößen';
+$lang['Desktop'] = 'Desktop';
+$lang['Mobile'] = 'Mobil';
+$lang['Show latest comments first'] = 'Neuesten Kommentar zuerst anzeigen';
+$lang['Show oldest comments first'] = 'Ältesten Kommentar zuerst anzeigen';
+$lang['View in'] = 'Anzeigen in';
+$lang['2small'] = 'winzig';
+$lang['xsmall'] = 'ziemlich klein';
+$lang['Date created, new &rarr; old'] = 'Datum erstellt, neu &rarr; alt';
+$lang['Date created, old &rarr; new'] = 'Datum erstellt, alt &rarr; neu';
+$lang['Date posted, new &rarr; old'] = 'Datum veröffentlicht, neu &rarr; alt';
+$lang['Date posted, old &rarr; new'] = 'Datum veröffentlicht, alt &rarr; neu';
+$lang['File name, A &rarr; Z'] = 'Dateiname, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Dateiname, Z &rarr; A';
+$lang['Manual sort order'] = 'Manuelle Sortierung';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numerischer Bezeichner, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numerischer Bezeichner, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Bildname, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Bildname, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Bewertung, hoch &rarr; niedrig';
+$lang['Rating score, low &rarr; high'] = 'Bewertung, niedrig &rarr; hoch';
+$lang['Visits, high &rarr; low'] = 'Besuche, hoch &rarr; niedrig';
+$lang['Visits, low &rarr; high'] = 'Besuche, niedrig &rarr; hoch';
+$lang['%d rate'] = 'Bewertung';
+$lang['Bad request'] = 'Fehlerhafte Anfrage';
+$lang['Forbidden'] = 'Verboten';
+$lang['Page not found'] = 'Seite nicht gefunden.';
+$lang['Permalink for album not found'] = 'Permalink für Album nicht gefunden.';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ist auf einen nicht nachvollziehbaren Fehler gestoßen.';
+$lang['Requested album does not exist'] = 'Gewähltes Album existiert nicht.';
+$lang['Requested tag does not exist'] = 'Gewähltes Schlagwort existiert nicht.';
+$lang['Email address is mandatory'] = 'Email Adresse ist erforderlich';
+$lang['Username is mandatory'] = 'Benutzername ist erforderlich';
+$lang['mandatory'] = 'erforderlich';
+$lang['Website'] = 'Webseite';
+$lang['Your website URL is invalid'] = 'Deine Webseiten URL ist falsch';
+$lang['Email'] = 'E-Mail';
+$lang['First Page'] = 'Erste Seite';
+$lang['Go back to the album'] = 'Zurück zum Album';
+$lang['Last Page'] = 'Letzte Seite';
+$lang['Password is missing. Please enter the password.'] = 'Das Kennwort fehlt. Bitte geben Sie Ihr Kennwort ein.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Das Kennwort zum Überprüfen fehlt. Bitte geben Sie ihr gewähltes Kennwort noch einmal ein.';
+$lang['%d photos per page'] = '%d Bilder pro Seite';
+$lang['Theme'] = 'Thema';
+?>
Index: /tags/2.6.0RC1/language/de_DE/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,159 @@
+<h2>Ein Album bearbeiten</h2>
+
+<h3>Informationen</h3>
+<ul>
+  <li>
+   <strong>Name</strong>: Umbenennen eines Albums (oder Erstellen eines virtuellen Namens für ein physisches Album).
+  </li>
+  <li>
+   <strong>Beschreibung</strong>: Kurze Beschreibung des Inhalts.
+   Dieser Text wird am unteren Rand der Vorschauseite angezeigt.
+  </li>
+</ul>
+
+<h3>Verschieben</h3>
+<p>
+  Sie können virtuelle Alben verschieben. Verschieben bedeutet, dass Sie dem Album ein
+  neues Vorgängeralbum zuweisen.
+</p>
+
+<h3>Optionen</h3>
+<ul>
+  <li><strong>Art des Zugriffs</strong>: 
+   Verwalten der Zugriffsrechte. Wenn Sie ein Album als privat markieren,
+   werden auch alle Unteralben als privat markiert. 
+   Ebenso werden alle Unteralben eines Albums als öffentlich markiert,
+   wenn Sie es als öffentlich markieren.
+  </li>
+  <li>
+   <strong>Sperren</strong>: Das Album und alle Unteralben werden temporär gesperrt (z.B. für Wartungsarbeiten).
+  </li>
+  <li>
+   <strong>Kommentare</strong>: Erlauben Sie Benutzern, Fotos dieses Albums zu kommentieren.
+  </li>
+</ul>
+<p>
+ Sie können diese Optionen auch auf den Seiten zur Verwaltung der Eigenschaften
+ (Seiten <span class = "pwgScreen">Kommentare</span>, <span
+ class = "pwgScreen">Sperren</span>, <span
+ class = "pwgScreen">Öffentlich/Privat</span>, <span
+ class = "pwgScreen">Vertreter</span> zu finden unter <span
+ class = "pwgScreen">Verwaltung &raquo; Alben &raquo; Eigenschaften</span >) verwalten.
+</p>
+
+<h3>Sortierreihenfolge</h3>
+<p>
+ Verwenden Sie die Standardmethode zum Sortieren der Bilder.
+</p>
+<p>
+ Geben Sie an, ob die Sortiermethode auch für Unteralben angewendet werden soll.
+</p>
+<p>
+ Sortierkriterien für dieses Album auswählen.
+</p>
+<ul>
+ <li>
+  <strong>Erstellungsdatum</strong>: Datum der Aufnahme
+ </li>
+ <li>
+  <strong>Datum</strong>: Datum der Synchronisierung
+ </li>
+ <li>
+  <strong>Durchschnittswertung (*)</strong>: Wird durch die Besucherwertung beeinflusst.
+ </li>
+ <li>
+  <strong>Am häufigsten besucht (*)</strong>: 
+  Wird durch die Anzahl der Aufrufe beeinflusst.
+ </li>
+ <li>
+   <strong>Dateiname</strong>: Name der Datei
+ </li>
+ <li>
+  <strong>ID:</strong> Interne ID (Neuere Alben haben eine höhere ID als ältere.)
+ </li>
+</ul>
+<p>
+ <strong>(*)</strong> Achtung: Testen Sie die ausgewählte Sortiermethode, 
+ da sie unerwartete Ergebnisse liefern könnte.
+</p>
+
+<h3>Vorschau</h3>
+<p>
+ Die Vorschau eines Albums ist die Miniaturansicht, die auf der Hauptseite
+(<span class = "pwgScreen">category.php</span>) angezeigt wird, 
+ wenn das Album selbst keine Bilder, sondern nur Unteralben enthält.
+</p>
+
+<p>Es gibt vier Möglichkeiten zur Auswahl:</p>
+<ul>
+ <li>
+  <span class="pwgScreen">Bilderseite</span>: Eine der Aktionen zu einem Bild erlaubt es Ihnen, das gerade
+  angezeigt Bild als Vorschau für das Album zu definieren. Diese Aktion steht nur Administratoren
+  zur Verfügung.
+ </li>
+ <li>
+  <span class="pwgScreen">Bearbeiten von Bildinformationen</span>
+  in der Verwaltung. Diese Funktion können Sie über <span
+  class = "pwgScreen">picture.php</span> <span class="pwgScreen"> oder die Batchverwaltung
+  </span> im <em>Einzelmodus</em> erreichen. Die Hilfe der angeführten Seiten bietet mehr Informationen
+  zu diesen Funktionen.
+ </li>
+ <li>
+  <span class="pwgScreen">Verwaltung &raquo; Alben &raquo; Eigenschaften &raquo;
+  Vorschaubild</span>. Details hierzu finden Sie in der Hilfe der angeführten Seite.
+ </li>
+ <li>
+  <span class="pwgScreen">Bearbeiten eines Albums</span> (auf dieser Seite).
+ </li>
+</ul>
+<p>
+ Die Wahl des Vorschaubilds wird durch die Option
+ <code>allow_random_representative</code> beinflusst (siehe <span
+ class="filename">include/config_default.inc.php</span>).
+</p>
+<p>
+ In der Standardeinstellung (<code>allow_random_representative</code> auf false) wird jedes Album,
+ das mindestens ein Element enthält, durch ein definiertes Vorschaubild repräsentiert. Einmal gesetzt
+ (während der Albenerstellung), kann das Vorschaubild nur durch einen Administrator geändert werden.
+ Passt das definierte Vorschaubild nicht, wählen Sie einfach die Funktion <strong>Bestimme ein neues
+ zufälliges Vorschaubild</strong>.
+</p>
+<p>
+ Ist die Option <code>allow_random_representative</code> auf true gesetzt, kann ein Album mit Bildern
+ kein definiertes Vorschaubild haben. Verwenden Sie in diesem Fall die Funktion <strong>Lösche Vorschaubild</strong>.
+</p>
+<p>
+ Wenn das Album keine Bilder, sondern nur Unteralben enthält, kann es dennoch von einem Element repräsentiert werden.
+ Verwenden Sie hierzu die Funktion <strong>Lösche Vorschaubild</strong> auf der Seite
+ <span class="pwgScreen">Information eines Bildes bearbeiten</span>.
+</p>
+
+<h3>Verknüpfen aller Bilder eines Albums mit einem neuen Album</h3>
+<ul>
+ <li>
+  <strong>Virtueller Albumname</strong>: Name des neu zu erstellenden Albums.
+  Alle Bilder des aktuellen Albums werden mit dem neuen Album verknüpft.
+ </li>
+ <li>
+  <strong>Vorläuferalbum</strong>: Die Position des neuen Albums. 
+  Tragen Sie hier keinen Wert ein, um das Album
+  an der Spitze Ihrer Alben einzufügen.
+ </li>
+</ul>
+
+<h3>Verknüpfen aller Bilder eines Albums mit einem existieren Album</h3>
+<ul>
+ <li>
+  <strong>Alben</strong>: Wählen Sie das Zielalbum.
+ </li>
+</ul>
+
+<h3>Senden einer Informationsmail an die Gruppenmitglieder</h3>
+<ul>
+ <li>
+  <strong>Gruppe</strong>: Empfängergruppe
+ </li>
+ <li>
+  <strong>Inhalt der E-Mail</strong>: Zu sendender Text.
+ </li>
+</ul>  
Index: /tags/2.6.0RC1/language/de_DE/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/cat_move.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Verschieben von virtuellen Alben</h2>
+
+<p>
+ Nur virtuelle Alben können ein neues Vorgängeralbum erhalten.
+</p>
+
+<h3>Virtuelle Alben verschieben</h3>
+<p>
+ Wählen Sie eines oder mehrere virtuelle Alben, die Sie verschieben wollen.
+ Die Liste ist leer, wenn Sie noch kein virtuelles Album erstellt haben.
+</p>
+
+<h3>Neues Vorgängeralbum</h3>
+<p>
+ Wählen Sie das neue Vorgängeralbum (virtuell oder physisch).
+ Wenn Sie kein Vorgängeralbum auswählen, wird Ihr neues, virtuelles Album an die Spitze
+ der Alben verschoben.
+ Ein Album kann nicht in sich selbst oder in ein ihm untergeordnetes Album verschoben werden.
+</p>
+
+
Index: /tags/2.6.0RC1/language/de_DE/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/cat_options.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Eigenschaften von Alben</h2>
+
+<p>Diese Seite erlaubt die Verwaltung der Eigenschaften mehrerer Alben zugleich.</p>
+
+<dl>
+
+  <dt>Öffentlich/Privat</dt>
+  <dd>Alben können als privat gekennzeichnet werden. Wenn ein Album als privat gekennzeichnet ist, 
+    können Sie erweiterte Zugriffsberechtigungen für Benutzer und Gruppen vergeben.</dd>
+
+  <dt>Sperren</dt>
+  <dd>Gesperrte Alben sind zu Wartungszwecken deaktiviert. Nur Administratoren können diese Alben in der Galerie betrachten.</dd>
+
+  <dt>Benutzerkommentare</dt>
+  <dd>Besucher können Bilder kommentieren, die zu Alben mit aktivierter Kommentaroption gehören.</dd>
+  
+  <dt>Vorschaubild</dt>
+  <dd>Diese Einstellung ist verfügbar, wenn Sie die Option <code>allow_random_representative</code>
+   in der Datei <span class="Dateiname">include/config_defaults.inc.php</span> auf
+   <em>true</em> gesetzt haben. Jedes Album kann durch ein zufälliges oder ein von Ihnen gewähltes Vorschaubild
+    repräsentiert werden.
+  </dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/de_DE/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Zugriffsrechte auf ein privates Album verwalten</h2>
+<p>
+ Diese Seite wird nur bei privaten Alben angezeigt. Hier können Sie bestimmen, welche
+ Benutzer und Gruppen dieses Album betrachten dürfen. Diese Zugriffsrechte wirken zusätzlich 
+ zu den Datenschutzstufen der einzelnen Bilder und der Benutzer.
+</p>
+<p>
+ Siehe auch die Einführung in Gruppen in der Hilfe.
+</p>
+
+<h3>Gruppen</h3>
+<p>
+ Sie können Gruppen den Zugriff auf ein Album verbieten oder erlauben, 
+ wodurch allen Mitgliedern der Gruppe der Zugriff auf das Album ermöglicht 
+ oder verwehrt wird.
+</p>
+
+<h3>Benutzer</h3>
+<p>
+ Sie können einzelnen Benutzern den Zugriff auf ein Album verbieten
+ oder erlauben. Einzelne Benutzer, die Zugriff auf ein Album aufgrund ihrer 
+ Gruppenzugehörigkeit haben, können vom Betrachten des Albums
+ ausgeschlossen werden.
+</p>
Index: /tags/2.6.0RC1/language/de_DE/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/configuration.html	(revision 25596)
@@ -0,0 +1,216 @@
+<h2>Konfiguration</h2>
+
+<p>Auf dieser Seite kann ein Administrator Grundeinstellungen für die Galerie vornehmen. 
+   Die Einstellungsmöglichkeiten beschränken sich auf das Wesentlichste, dürften aber den
+   Anpassungswünschen der meisten Administratoren nachkommen.
+   Zahlreiche weitere Einstellungsmöglichkeiten können Sie in der Datei
+   <span class="filename">include/config_default.inc.php</span> vornehmen.
+</p>
+
+<p>
+  Die Konfigurationsseite ist in mehrere Abschnitte unterteilt, die die Einstellungsmöglichkeiten
+  thematisch gruppieren.
+</p>
+
+<h3>Grundeinstellungen</h3>
+<ul>
+
+<li>
+ <strong>Galerietitel</strong>: Wird für RSS-Feeds und E-Mail-Benachrichtigungen genützt.
+</li>
+
+<li>
+ <strong>Seitenbanner</strong>: Wird im oberen Teil der Seiten angezeigt.
+</li>
+
+<li>
+ <strong>Galerie-URL</strong>: Wird für RSS-Feeds verwendet.
+</li>
+
+<li>
+ <strong>Sperre den Zugriff auf die Galerie</strong>: Sperren der gesamten
+ Galerie für Wartungsarbeiten. Nur Administratoren haben noch Zugriff.
+</li>
+
+<li>
+ <strong>Abstimmung zulassen</strong>: Ermöglicht die Bewertung der Fotos.
+</li>
+
+<li>
+ <strong>Erlaube Bewertung durch Gäste</strong>: 
+ Auch nicht registrierte Benutzer können Bilder bewerten.
+</li>
+
+<li>
+ <strong>Erlaube die Neuregistrierung von Benutzern</strong>: 
+ Jeder kann sich registrieren.
+</li>
+
+<li>
+ <strong>Die Angabe einer gültigen E-Mail-Adresse ist für alle Benutzer 
+ verpflichtend</strong>: 
+ Die E-Mail-Adresse wird bei der Registrierung oder beim Aktualisieren des Profils überprüft, 
+ außer wenn dies von einem Administrator durchgeführt wurde.
+</li>
+
+<li><strong>
+ Sende eine E-Mail an die Adminstratoren, wenn sich ein neuer Benutzer registriert hat</strong>: 
+ Benachrichtigung der Administratoren bei Registrierung.
+</li>
+
+</ul>
+
+<h3>Statistik</h3>
+<!-- *fragoriscus*
+<p>	
+  Besuche auf den Seiten <span class="pwgScreen">category.php</span> und 
+  <span class="pwgScreen">picture.php</span> werden in der <code>History</code>-Tabelle gespeichert.
+</p>
+-->
+
+<p>
+ Besuche werden in <span class="pwgScreen">Administration &raquo; Werkzeuge &raquo; Statistik</span> angezeigt.
+</p>
+
+<ul>
+<li>
+  <strong>Speichere Seitenaufrufe von Gästen</strong>: 
+  Besuche von Gästen werden aufgezeichnet.
+</li>
+
+<li>
+  <strong>Speichere Seitenaufrufe pro Benutzer</strong>: 
+  Besuche von registrierten Benutzern werden aufgezeichnet.
+</li>
+
+<li>
+  <strong>Speichere auch Seitenaufrufe des Administrators</strong>: 
+  Besuche von Administratoren werden aufgezeichnet.
+</li>
+</ul>
+
+<h3>Benutzerkommentare</h3>
+<ul>
+
+<li>
+ <strong>Kommentare für alle erlaubt</strong>: 
+ Auch nicht registrierte Benutzer (Gäste) können Kommentare schreiben.
+</li>
+
+<li>
+ <strong>Anzahl von Kommentaren pro Seite</strong>: 
+ Die Anzahl der pro Seite angezeigten Kommentare.
+</li>
+
+<li>
+ <strong>Freigabe der Kommentare durch den Administrator</strong>: 
+ Ein Administrator muss die Kommentare der Benutzer überprüfen, 
+ bevor sie in der Galerie angezeigt werden. Die Überprüfung der 
+ Benutzerkommentare erfolgt auf der Seite <span class="pwgScreen">Verwaltung, Fotos,
+ Kommentare</span>.
+</li>
+
+<li>
+ <strong>Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar abgegeben wurde</strong>:
+ Bei gültigem Kommentar werden die Administratoren benachrichtigt.
+</li>
+
+<li>
+  <strong>Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar die Freischaltung 
+  durch einen Administrator erfordert</strong>:
+  Sende eine E-Mail an die Administratoren, wenn die Überprüfung eines Kommentars erforderlich ist. 
+  Die Überprüfung der Benutzerkommentare erfolgt auf der Seite 
+  <span class="pwgScreen">Verwaltung, Fotos, Kommentare</span>.
+</li>
+
+</ul>
+
+<!--*fragoriscus*
+<h3>Upload</h3>
+<ul>
+ <li>
+ <strong>Upload-Link immer anzeigen</strong>: 
+  Wenn ein hochladbares Album existiert, wird der Uploadlink für jedes Album angezeigt.</li>
+  <li><strong>... dürfen Bilder hochladen</strong>: Welche Stufe muss ein Benutzer mindestens haben, um Fotos hochladen zu dürfen.</li>
+  <li><strong>sende eine E-Mail an den(die) Adminstrator(en) wenn ein Bild hochgeladen wurde</strong>: Administratoren erhalten eine E-mail, wenn ein Foto hochgeladen wurde.</li>
+</ul>
+-->
+
+<h3>Anzeigeeinstellungen</h3>
+<p>
+ Hier können sie die Anzeigeeinstellungen für Gäste festlegen. 
+ Registrierte Benutzer können diese Einstellungen
+ selbst über ihr <span class="pwgScreen">Profil</span> anpassen.
+</p>
+
+<p>
+ Es ist auch möglich, die Anzeigeeinstellungen aller Benutzer zu verändern. 
+ Besuchen Sie zu diesem Zweck die Seite
+ <span class="pwgScreen">Administration &raquo; Benutzer &raquo; Verwaltung</span>.
+</p>
+
+<ul>
+
+<li>
+ <strong>Sprache</strong>: 
+ Bezieht sich nur auf die Beschriftungen und Texte des Piwigo-Programms. 
+ Namen von Alben, Fotos, Beschreibungen und Kommentare werden nicht übersetzt.
+</li>
+
+<li>
+ <strong>Anzahl der Bilder pro Zeile</strong>:
+ Anzahl der Bilder, die pro Zeile angezeigt werden.
+</li>
+
+<li>
+ <strong>Anzahl der Zeilen pro Seite</strong>:
+ Anzahl der Zeilen, die pro Seite angezeigt werden.
+</li>
+
+<li>
+ <strong>Layout</strong>: Das Layout der Seiten.
+</li>
+
+<li>
+ <strong>Wie viele Tage sollen Bilder als neu markiert werden?</strong>: 
+ Der Zeitraum in Tagen, der festlegt, wie lang Fotos als neu gelten sollen.
+</li>
+
+<li>
+ <strong>Albenstruktur immer vollständig sichtbar</strong>: 
+ Soll die Albenstruktur ausgeklappt angezeigt werden? 
+ <em>Vorsicht</em>:
+ Diese Option kann Ihren Server stark beanspruchen und ein sehr großes Menü generieren, 
+ wenn sie viele Alben angelegt haben.
+</li>
+
+<li>
+ <strong>Zeige die Anzahl der Kommentare</strong>: 
+ Zeigt für jedes Foto die Anzahl der Kommentare unter den Vorschaubildern 
+ auf der Übersichtsseite. 
+ Benötigt viele Ressourcen.</li>
+
+<li>
+ <strong>Zeige die Anzahl der Bildaufrufe</strong>: 
+ Zeigt auf der Übersichtsseite für jedes Foto die Anzahl der Aufrufe.
+ Wird nur angezeigt, wenn der Parameter $conf ['show_nb_hits'] auf "true" 
+ gesetzt ist. Voreingestellt ist "false".
+</li>
+
+<li>
+ <strong>Maximale Breite der Bilder</strong>: 
+ Die maximal angezeigte Breite. 
+ Breitere Bilder werden für die Anzeige verkleinert. 
+ Bevor Sie diese Option verwenden, sollten Sie darüber nachdenken, 
+ die Größe Ihrer Fotos zu verändern.
+</li>
+
+<li>
+ <strong>Maximale Höhe der Bilder</strong>:
+ Die maximal angezeigte Höhe.
+ Höhere Bilder werden für die Anzeige verkleinert. 
+ Bevor Sie diese Option verwenden, sollten Sie darüber nachdenken, 
+ die Größe Ihrer Fotos zu verändern.
+</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/de_DE/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,109 @@
+<h2>Vorlagenerweiterung</h2>
+
+<h3>Sinn und Zweck</h3>
+<p>
+ Sie können das Erscheinungsbild Ihrer Piwigo-Galerie im Einzelnen verändern, 
+ indem Sie vorhandene Vorlagendateien gegen von Ihnen angepasste austauschen.
+ So können Sie z.B. die vorgegebene Vorlagendatei header.tpl, die für die
+ Darstellung des Seitenkopfes Ihrer Galerie verantwortlich ist, durch eine
+ von Ihnen angepasste Version my_header.tpl ersetzen. Wurde der Datenbank
+ der Austausch bekannt gemacht, wird Ihr Seitenkopf an Stelle 
+ des originalen Seitenkopfes in Ihrer Galerie angezeigt.</p>
+<p>
+ Die Erweiterung von Vorlagen ist ein mächtiges Werkzeug, das es Einsteigern 
+ und erfahrenen Anwendern ermöglicht, eigene, angepasste Vorlagen zu erstellen.
+</p>
+
+<h3>Originalvorlagen</h3>
+<p>
+ Ein Thema umfasst ein Reihe von Vorlagendateien, die die Galerie-Seiten bilden.
+ Diese Dateien sind die Orginalvorlagen.
+</p>
+
+<h3>Optionale URL-Schlüsselwörter</h3>
+<p>
+ In die URL der Galerie können Schlüsselwörter oder aktive Permalinks (siehe die
+ Hilfe zu Permalinks) nach dem Modulnamen eingetragen werden.<br>
+ <a href="#warnings">Achtung:</a> Wenn die gleiche Originalvorlage
+ und das gleiche Schlüsselwort für mehr als eine angepasste Vorlage 
+ gebraucht werden, wird nur das letzte Schlüsselwort berücksichtigt.
+</p>
+
+<h3>Verbundenes Thema</h3>
+<p>
+ Ein verbundenes Thema ist ein Thema, aus dem Vorlagendateien ersetzt werden.
+</p>
+
+<h3>Wo sind die Originalvorlagen gespeichert?</h3>
+<p>
+ Die zu jedem Thema gehörenden Originalvorlagen finden sich im Verzeichnis
+ <em>/themes/default/template/</em>. Die Originalvorlagen dort
+ sollten nicht verändert werden, da Änderungen bei späteren Updates
+ verloren gehen.<br>
+ Zu den aktuell unterstützten Originalvorlagen gehören:
+</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> und/oder <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> und/oder <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> und/oder <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> und/oder <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> und/oder <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> und/oder <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> und/oder <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Angepasste Vorlagen abspeichern</h3>
+<p>
+ Angepasste Vorlagen sollten im Verzeichnis template-extension oder in einem Unterverzeichnis
+ dieses Verzeichnisses abgespeichert werden (z.B. <em>/template-extension/my-default/header.tpl</em>
+ oder <em>/template-extension/my-theme-name/header.tpl</em>). 
+ Der Name einer Vorlagendatei ist frei wählbar, die Dateiendung .tpl muss allerdings angefügt werden.
+ <!--***-->
+ The template files in subfolders appear in the Template configuration screen as available custom templates.
+</p>
+
+<h3>Angepasste Vorlagen aktivieren</h3>
+<p>
+ Wählen Sie die zu ersetzende Originalvorlage aus. Sie können auch ein URL-Schlüsselwort benutzen,
+ um sicher zu stellen, dass die angepasste Vorlage nur auf den Seiten mit dem gleichen Schlüsselwort
+ angezeigt wird. Wählen Sie das verbundene Thema aus, auf das sich die Anpassungen auswirken sollen.
+ Teilen Sie der Datenbank die Veränderungen mit.
+</p>
+
+<h3>Angepasste Vorlagen deaktivieren</h3>
+<p>
+ Deselektieren Sie die Originalvorlage und teilen Sie der Datenbank die Veränderungen mit.<br>
+ Entfernen Sie die angepassten Vorlagen aus dem Verzeichnis template-extensions.
+</p>
+
+<h3>Warnhinweise</h3>
+<ul>
+ <li>
+  Die <strong>Originalvorlage</strong> muss wirklich die Originalvorlage sein, sonst kann
+  es zu unvorhersehbaren Ergebnissen kommen.
+ </li>
+ <li>
+  Wenn die gleiche Originalvorlage und das gleiche Schlüsselwort 
+  für mehr als eine angepasste Vorlage gebraucht werden, 
+  wird nur das letzte Schlüsselwort berücksichtigt.
+ </li>
+ <li>
+  Mitgelieferte Beispielvorlagen sind nur für Testzwecke bestimmt und 
+  sollten nicht verändert werden. Erstellen Sie Ihre eigenen Vorlagen
+  oder kopieren Sie vorhandene Vorlagendateien in das Verzeichnis
+  <em>/template-extension/my-theme/</em>.
+ </li>
+ <li>
+  Unmittelbar nach dem Löschen einer angepassten Vorlage wird die
+  Originalvorlage reaktiviert.
+ </li>
+</ul>
+
Index: /tags/2.6.0RC1/language/de_DE/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/group_list.html	(revision 25596)
@@ -0,0 +1,33 @@
+<h2>Gruppen verwalten</h2>
+<p>
+ Auf dieser Seite können Sie Gruppen verwalten.
+</p> 
+
+<h3>Hinzufügen einer Gruppe</h3>
+<p>
+ Administratoren können Gruppen hinzufügen.
+</p>
+
+<h3>Gruppenliste</h3>
+<p>
+ Für jede Gruppe können die folgenden Aktionen ausgeführt werden:
+<ul>
+  <li>
+   Die Zugriffsrechte auf private Alben können verändert werden;
+  </li>
+  <li>
+   eine Gruppe kann gelöscht werden;
+  </li>
+  <li>
+   eine Gruppe kann als Standardgruppe ausgewählt werden.
+  </li>
+</ul>
+
+<dl>
+ <dt>
+  Standard-Gruppen
+ </dt>
+ <dd>
+  Neue Benutzer werden automatisch zu den Standardgruppen hinzugefügt.
+ </dd>
+</dl>
Index: /tags/2.6.0RC1/language/de_DE/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,66 @@
+<p>
+ Sie können Fotos zu Ihrer Galerie unter 
+ <a href="admin.php?page=photos_add"><span class="pwgScreen">Administration &raquo; Fotos &raquo; Hinzufügen</span></a> 
+ hinzufügen. Es gibt mehrere Möglichkeiten, dies zu tun:
+</p>
+
+<fieldset>
+<legend>Interne Möglichkeiten</legend>
+<ul>
+  <li>
+   <strong>Der manuelle Upload</strong> über Ihren Webbrowser ist die einfachste und
+   direkteste Methode. Der Funktionsumfang dieser Methode hängt im Wesentlichen von
+   den Fähigkeiten Ihres Browsers und denen Ihres Webservers ab. 
+   Für den Upload größerer Mengen sollten Sie jedoch auf die unten angeführten Möglichkeiten zurückgreifen.
+  </li>
+</ul>
+<p class="nextStepLink">
+ <a href="admin.php?page=photos_add&section=direct">Zum manuellen Upload</a>
+</p>
+</fieldset>
+
+<fieldset>
+<legend>Externe Möglichkeiten</legend>
+ <ul>
+  <li>
+   <strong>pLoader</strong> ist eine Anwendung, die Sie auf Ihrem Computer installieren können. 
+   Ziehen Sie Fotos in das pLoader-Fenster und klicken Sie auf <em>"Upload zur Piwigo"</em>. 
+   Den Rest erledigt pLoader für Sie. Sie können auch andere Anwendungen,
+   wie <strong>WinToPiwigo</strong> oder das <strong>Digikam</strong> Export-Plugin für Piwigo 
+   für diesen Zweck verwenden.
+  </li>
+</ul>
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Zum pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li>
+   <strong>Der FTP-Upload</strong> ist die Methode, um große Mengen
+   an Fotos mit wenigen Mausklicks zu übertragen. Befolgen Sie die Anweisungen
+   im Handbuch, um Ihre Fotos vorzubereiten, und laden Sie sie mit dem FTP-Programm
+   Ihrer Wahl hoch. Mit der FTP-Methode können Sie selbst bestimmen, wie
+   Ihre Fotos auf Ihrem Server organisiert sein sollen.
+  </li>
+</ul>
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Zum FTP-Upload</a></p>
+</div>
+</fieldset>
+
+<fieldset>
+<legend>Berechtigung zum Upload</legend>
+<p>
+ Normalerweise darf nur der Administrator Fotos in Ihre Piwigo-Fotogalerie hochladen.
+</p>
+<ul>
+ <li>
+   Andere Benutzer können aber den Status eines Administrators erhalten. 
+   Den Status eines Benutzers können Sie unter 
+   <a href="admin.php?page=user_list"><span class="pwgScreen">Administration &raquo; Benutzer &raquo; Verwalten</span></a>
+   ändern.
+  </li>
+  <li>
+   Das Communitiy-Plugin ermöglicht registrierten Benutzern den Upload von Fotos.
+  </li>
+</ul>
+</fieldset>
+
Index: /tags/2.6.0RC1/language/de_DE/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/help_groups.html	(revision 25596)
@@ -0,0 +1,19 @@
+<fieldset>
+<legend>Gruppierung von Benutzern</legend>
+<p>
+ Benutzer können in Gruppen zusammengefasst werden. Der Name einer Gruppe kann frei gewählt werden. Erstellen Sie neue Gruppen unter
+ <a href="admin.php?page=group_list"><span class="pwgScreen">Administration &raquo; Benutzer &raquo; Gruppen</span></a>
+ und verknüpfen Sie Benutzer mit dieser Gruppe in <a href="admin.php?page=user_list"><span class="pwgScreen">Administration 
+ &raquo;Benutzer &raquo; Verwalten</span></a>.
+</p>
+<p>
+ Zusammen mit den erweiterten Zugriffsrechten auf private Alben ergeben Gruppen eine komfortable Möglichkeit, mehreren Benutzern zugleich
+ Zugriffsrechte auf Alben zu geben und die grobe Struktur der Datenschutzstufen zu verfeinern.
+</p>
+<p>
+ Ein Benutzer kann mehreren Gruppen angehören, dabei hat die Erlaubnis Vorrang vor dem Verbot. Ein Beispiel: Peter gehört der
+ Gruppe "Firmenfreunde" an, er darf sich das Album "Weihnachten 2010" anschauen, das für die Benutzer der Gruppen 
+ "Skatabendkumpels"  und "Firmenfreunde" freigeschaltet ist. (Peter muss also nicht zugleich Mitglied der Gruppe "Skatkumpels"
+ und "Firmenfreunde" sein.)
+</p>
+</fieldset>
Index: /tags/2.6.0RC1/language/de_DE/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/help_misc.html	(revision 25596)
@@ -0,0 +1,36 @@
+<fieldset>
+<legend>Voreinstellungen für Benutzer festlegen</legend>
+<p>Nachdem Sie die Galerie erstellt haben, können Sie sie für Ihre Besucher konfigurieren.</p>
+<ul>
+  <li>
+    Die von Ihnen gewünschte Standarddarstellung legen Sie in 
+    <a href="admin.php?page=configuration"><span class="pwgScreen">Administration &raquo; Konfiguration &raquo; Optionen</span></a> 
+    auf der Registerkarte <span class="pwgScreen">Einstellungen für Gäste</span> fest.
+  </li>
+  <li>
+    Das Standardthema legen Sie in 
+    <a href="admin.php?page=themes">
+    <span class="pwgScreen">Administration &raquo; Konfiguration &raquo; Themen</span></a>
+    fest.
+   </li>
+   <li>
+     Die Standardprache legen Sie in 
+     <a href="admin.php?page=languages"><span class="pwgScreen">Administration &raquo; Konfiguration &raquo; Sprachen</span></a>
+     fest.
+   </li>
+</ul>
+<p>Jedem neuen Benutzer werden diese Einstellungen nach erfolgreicher Registrierung vorgegeben.</p>
+</fieldset>
+
+<fieldset>
+<legend>Weitere Hilfen</legend>
+<p>
+ Piwigo hat viele weitere Features und noch mehr können über Plugins hinzugefügt werden. 
+ Fast alle Administrationsseiten haben eigene Hilfeseiten, die über das Fragezeichensymbol
+ <img src="admin/themes/lear/icon/help.png" class="button" alt="(?)"> aufgerufen werden können.
+</p>
+<p>
+ Falls Sie Fragen haben, heißt Sie die Piwigo-Community in ihrem 
+ <a href="http://de.piwigo.org/forum">Forum</a> herzlich willkommen.
+</p>
+</fieldset>
Index: /tags/2.6.0RC1/language/de_DE/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,84 @@
+<fieldset>
+<legend>Zugriffsrechte auf Fotos</legend>
+<p>
+ Jedem Foto ist eine <strong>Datenschutzstufe</strong> (entsprechend einem Türschloss) zugewiesen, 
+ genauso wie jeder Benutzer eine bestimmte Datenschutzstufe besitzt (entsprechend einem Schlüssel). 
+ Es gibt fünf Datenschutzstufen:
+</p>
+<ol>
+  <li>Keine Berechtigung</li>
+  <li><em>Kontakte</em></li>
+  <li><em>Freunde (eine Stufe höher als Kontakte)</em></li>
+  <li><em>Familie (eine Stufe höher als Freunde)</em></li>
+  <li><em>Administratoren (die höchste Datenschutzstufe)</em></li>
+</ol>
+<p>
+ Die höhere Stufe erbt alle Berechtigungen der niedrigeren Stufen. 
+ Für einen Benutzer gilt: Je höher seine Datenschutzstufe, desto mehr Fotos kann er sehen. 
+ Ein Benutzer, der in einem Album keine Berechtigungen für ein Foto hat, 
+ kann weder das Album selbst, noch den Titel des Albums sehen.
+</p>
+<!-- unphysicalix: Versteh ich nicht: -->
+<!--Das selbe Prinzip wird auch auf "Tags" angewandt. -->
+
+<p>
+ Ein Beispiel: Wenn dem Foto "peter_hochzeit-0024.jpg" die Datenschutzstufe <em>"Familie"</em> zugewiesen ist, dann kann
+</p>
+<ul>
+  <li>Peter, der die Stufe <em>"Administrator"</em> besitzt, das Foto sehen, weil <em>"Administratoren"</em> alle Fotos sehen können;</li>
+  <li>Elisabeth, die die Einstufung <em>"Familie"</em> besitzt, das Foto ebenfalls sehen;</li>
+  <li>Marie, die als <em>"Freund"</em> eingestuft ist, das Foto nicht sehen.</li>
+</ul>
+
+<p>
+ Die Datenschutzstufe eines Benutzers ist eine Eigenschaft des Benutzerkontos, die Sie in der Benutzerliste unter 
+ <a href="admin.php?page=user_list"><span class="pwgScreen">Administration &raquo; Benutzer &raquo; Verwalten</span></a>
+ sehen und bearbeiten können. Die Datenschutzstufe eines Fotos ist eine Eigenschaft, die beim Hochladen des Bildes oder auch später
+ festgelegt werden kann.
+</p>
+</fieldset>
+
+<fieldset>
+<legend>Erweiterte Zugriffsrechte auf private Alben</legend>
+
+<p>
+ Wenn die vordefinierten Datenschutzstufen nicht Ihren Bedürfnissen entsprechen, haben Sie auch die Möglichkeit, 
+ Benutzern oder Gruppen (siehe <a href="admin.php?page=help&section=groups">nächste Hilfeseite</a>)
+ gesonderte Zugriffsrechte auf sogenannte <strong>private Alben</strong> zu vergeben.
+</p>
+
+<p>
+ Sie können problemlos Berechtigungen für private Alben und Datenschutzstufen für Fotos parallel verwenden. 
+ Beachten Sie aber, dass ein Benutzer zu einer Berechtigung für ein privates Album ebenfalls die nötige 
+ Datenschutzstufe haben muss, um das Foto sehen zu können.
+</p>
+
+<p>
+ Um Berechtigungen eines Albums gesondert zu verwalten, müssen Sie die Zugangsart des Albums auf <strong>privat</strong> setzen.
+ Sie können entweder für ein einzelnes Album unter 
+ <a href="admin.php?page=cat_list"><span class="pwgScreen">Administration &raquo; Alben &raquo; Verwalten </span></a>
+ die Albuminformationen bearbeiten und die Zugangsart ändern oder indem Sie diese Eigenschaft für mehrere Alben unter
+ <a href="admin.php?page=cat_options"><span class="pwgScreen">Administration
+ &raquo; Alben &raquo; Eigenschaften &raquo; Öffentlich / Privat</span></a> festlegen.
+</p>
+
+<p>
+ Wenn ein Album als "privat" markiert ist, können Sie die Berechtigungen für Benutzer und Gruppen an drei 
+ unterschiedlichen Stellen vornehmen:
+</p>
+
+<ul>
+  <li>
+   Unter <a href="admin.php?page=user_list"><span class="pwgScreen">Administration
+   &raquo; Benutzer &raquo; Verwalten</span></a> kann für jeden einzelnen Benutzer die Aktion "Zugriffsrechte" aufgerufen werden.
+  </li>
+  <li>
+   Unter <a href="admin.php?page=group_list"><span class="pwgScreen">Administration &raquo; Benutzer &raquo; Gruppen </span></a> 
+   kann für jede einzelne Gruppe die Aktion "Zugriffsrechte" aufgerufen werden.
+  </li>
+  <li>
+    Unter <a href="admin.php?page=cat_list"><span class="pwgScreen">Administration &raquo; Alben &raquo; Verwalten </span></a>
+    kann für ein privates Album die Aktion "Zugriffsrechte auf das Album bearbeiten" aufgerufen werden.
+   </li>
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/de_DE/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,13 @@
+<p>
+ Fotos werden normalerweise in dem Album angezeigt, in das sie hochgeladen wurden.
+</p>
+<p>
+ Man kann Fotos auch in einem zweiten Album anzeigen, ohne sie zu duplizieren. Verbinden Sie das Bild einfach mit einem anderen 
+ Album  unter "Informationen ändern" (für Administratoren direkt aus der Galerie aufrufbar).
+</p>
+<p>
+ Virtuelle Alben beruhen auf folgendem Konzept: Ihnen sind keine eigenen Verzeichnisse zugeordnet. Erstellen Sie ein 
+ virtuelles Album unter <span class="pwgScreen">Alben &raquo; Verwalten</span>.
+</p>
+
+
Index: /tags/2.6.0RC1/language/de_DE/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/history.html	(revision 25596)
@@ -0,0 +1,38 @@
+<h2>Statistik</h2>
+
+<p>
+ Hier können Sie die Besucherstatistik Ihrer Bildergalerie einsehen.
+ Grundlage der statistischen Erfassung sind die Voreinstellungen unter
+ Administration &raquo; Konfiguration &raquo; Optionen &raquo; Statistik
+</p>
+
+<h3>Statistik</h3>
+<p>
+  Hier können Sie Jahres-, Monats- und Tagesstatistiken abrufen.
+</p>
+
+<h3>Suchen</h3>
+<p>Hier können Sie Detailanalysen über Statistikfilter erstellen:
+<ul>
+ <li>
+  <strong>Filter "Datum-Enddatum":</strong>: 
+  Legen Sie den Zeitraum fest, den Sie statistisch erfassen wollen.
+ </li>
+ <li>
+  <strong>Filter "Elementtyp":</strong> 
+  Welcher Elementtyp soll statistisch ausgewertet werden?
+ </li>
+ <li>
+  <strong>Filter "Benutzer"</strong>: 
+  Welcher Benutzer soll statistisch ausgewertet werden?
+ </li>
+ <li>
+  <strong>Filter "Name der Datei"</strong>: 
+  Welche Datei soll statistisch ausgewertet werden?
+ </i>
+ <li>
+  <strong>Filter "Element-ID"</strong>: 
+  Welche Element-ID soll statistisch ausgewertet werden?
+ </li>
+</ul>
+
Index: /tags/2.6.0RC1/language/de_DE/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/de_DE/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/maintenance.html	(revision 25596)
@@ -0,0 +1,74 @@
+<h2>Wartung</h2>
+
+<p>
+ Um die Ladezeiten der Seiten zu optimieren, verwendet Piwigo einen
+ Cache. Zum Beispiel wird die Information über die Anzahl der Fotos in
+ einem Album in der Datenbank zwischengespeichert, statt sie jedesmal
+ zu zählen. Im Normalfall sollte diese Information immer korrekt sein,
+ jedoch kann es auch vorkommen, dass die zwischengespeicherte Information
+ ungültig wird.
+</p>
+
+<p>
+ Einige Informationen in der Datenbank werden mit der Zeit unbrauchbar. 
+ Durch Löschen dieser nutzlosen Informationen können Sie Plattenplatz sparen.
+</p>
+
+<ul>
+  <li>
+   <strong>Aktualisiere Albeninformationen:</strong>
+   Für jedes Album werden die folgenden Informationen überprüft 
+   und bei Bedarf angepasst:
+   Liste der Vorgängeralben, Anzahl der Fotos, Datum des aktuellsten Fotos, 
+   Position relativ zu anderen Alben auf derselben Ebene, Position im kompletten Albenbaum.
+   Diese Funktion überprüft auch die Korrektheit der Vorschaubilder.
+  </li>
+  <li>
+   <strong>Aktualisiere Fotoinformationen:</strong>
+   Für jedes Foto werden die folgenden Informationen überprüft und bei Bedarf angepasst:
+   der komplette Pfad zum Foto, Durchschnittsbewertung. <em>Achtung</em>: Diese Funktion ist
+   nicht mit der Synchronisierung der Metadaten zu verwechseln. Diese müssen über
+   <span class="pwgScreen">Verwaltung &raquo; Werkzeuge &raquo; Synchronisieren</span>
+   oder auf der Bearbeitungsseite eines Bildes (z.B. über <span class="pwgScreen">Foto</span>) 
+   synchronisiert werden.
+  </li>
+  <li>
+   <strong>Repariere und optimiere die Datenbank:</strong>
+   Jede Tabelle der Datenbank wird neu sortiert, repariert und optimiert.
+  </li>
+  <li>
+   <strong>Prüfe erneut die Integrität</strong>
+  </li>
+</ul>
+<ul>
+   <li>
+     <strong>Lösche nicht benutzte Stichwörter</strong>
+   </li>
+</ul>
+
+<ul>
+  <li>
+   <strong>Lösche die History-Einträge:</strong> Löscht alle Zeilen
+   der <code>history</code>-Tabelle. Die Seite <span class = "pwgScreen">
+   Verwaltung &raquo; Werkzeuge &raquo; Statstik</span> zeigt dann
+   keine Informationen mehr über vergangene Ereignisse an. <em>Achtung</em>: Alle Daten
+   gehen verloren, und es gibt keine Möglichkeit, sie wiederherzustellen.
+  </li>
+  <li>
+   <strong>Lösche die History-Zusammenfassung:</strong> 
+   Löscht die Zusammenfassungen der Besucherstatistik, die
+   aus den History-Einträgen gewonnen werden.
+  </li>
+  <li>
+   <strong>Lösche Sitzungen:</strong> Löscht abgelaufene User-Sessions.
+  </li>
+  <li>
+   <strong>Lösche alle noch nicht verschickten Benachrichtigungen</strong>
+  </li>
+  <li>
+   <strong>Lösche die Suchhistorie</strong>
+  </li>
+  <li><strong>
+    Lösche die kompilierten Vorlagen</strong>
+  </li>
+</ul>
Index: /tags/2.6.0RC1/language/de_DE/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Benachrichtigung</h2>
+<p>
+ Einstellungen für das Versenden von Benachrichtigungsmails an die Benutzer.<br> Zugänglich nur für Administratoren.
+</p>
+
+<h3>Parameter</h3>
+<p>
+ Sendeoptionen
+</p>
+
+<h3>Bestätigen</h3>
+<p>
+ Hinzufügen/Entfernen von Benutzern für die Benachrichtigung per E-Mail
+</p>
+
+<h3>Sende</h3>
+<p>
+ E-Mail-Benachrichtigung an registrierte Benutzer versenden
+</p>
Index: /tags/2.6.0RC1/language/de_DE/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalinks</h2>
+
+<p>Sog. Permalinks werden verwendet, um die URLs zu den einzelnen Alben zu verkürzen bzw. lesbarer zu machen. Wurde einem Album ein Permalink zugeordnet, wird die ID des Albums in der URL nicht mehr benötigt.</p>
+
+<p>Wenn ein Permalink gelöscht wird, können Sie ihn in der Permalink-History speichern, so dass externe Links auf ihre Piwigo-Galerie weiterhin funktionieren. In der Permalink-History sehen Sie außerdem, wann ein Permalink gelöscht und zuletzt benutzt wurde. Die Anzahl der Zugriffe auf den Permalink wird dort ebenfalls protokolliert.</p>
+
+<p>Bitte beachten Sie, dass nur ein Permalink pro Album vergeben werden darf und ein Permalink nur einmal in der Permalink-History vorkommen kann.</p>
Index: /tags/2.6.0RC1/language/de_DE/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,100 @@
+<fieldset>
+
+  <legend>Schnellstart FTP-Upload</legend>
+
+<ol>
+  <li>
+    Erstellen Sie ein neues Verzeichnis auf Ihrem Computer.
+  </li>
+  <li>
+     Kopieren Sie einige Fotos in dieses Verzeichnis und verkleineren Sie die Bilder auf 
+     eine webtaugliche Größe. <em>Achtung</em>: Im Datei- und Verzeichnisnamen dürfen
+     nur Buchstaben, Zahlen, "-", "_" und "." vorkommen. Leerzeichen, Umlaute, "ß" und
+     Buchstaben mit Akzent sind nicht erlaubt.
+     Zwischen Groß- und Kleinschreibung wird unterschieden.
+  </li>
+  <li>
+    Kopieren Sie das Verzeichnis mit einem FTP-Programm in das Verzeichnis "galleries" 
+    Ihrer Piwigo-Installation.
+  </li>
+  <li>
+    Gehen Sie zu <span class="pwgScreen">Verwaltung</span> und klicken Sie auf 
+    den großen Button "Schnelle Synchronisierung".
+  </li>
+</ol>
+
+<p>Herzlichen Glückwunsch! Sie haben das erste Album in Ihrer Piwigo-Fotogalerie erstellt.</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>Verzeichnis- und Dateiorganisation von Piwigo</legend>
+<ul>
+ <li>
+    <p>
+      Die Albenverzeichnisse sind im Piwigo-Verzeichnis "galleries" untergebracht. 
+      Im Folgenden ist der Verzeichnisbaum einer kleinen Galerie dargestellt: 
+    </p>
+<pre>
+galleries
+|-- Hochzeit
+|   |-- Trauung
+|   |   |-- Ankunft
+|   |   |   |-- Paul.jpg
+|   |   |   +-- Sarah.jpg
+|   |   +-- Abfahrt
+|   |       +-- Paul-und-Sarah.jpg
+|   +-- Feier
+|       |-- tanzen001.jpg
+|       |-- tanzen002.jpg
+|       +-- tanzen003.jpg
++-- Flitterwochen
+    |-- Hotel.png
+    |-- Video-aus-dem-Flugzeug.avi
+    +-- pwg_representative
+        +-- Video-aus-dem-Flugzeug.jpg
+</pre>
+</li>
+
+<li>
+ Außer dem Verzeichnisse "pwg_representative" erzeugt jedes 
+ Unterverzeichnis ein neues Album in der Galerie.
+ Es kann beliebig viele Unterverzeichnisse (Unteralben) geben.
+</li>
+
+<li>
+  Grundsätzlich wird jedes Piwigo-Element durch eine Datei verkörpert.
+
+  Eine Datei kann ein Piwigo-Element sein, wenn deren Endung in den
+  Konfigurationsparameter <code>file_ext</code> der Datei 
+  <span class="filename">include/config_default.inc.php</span> eingetragen ist.
+
+  Eine Datei kann ein Piwigo-Bild sein, wenn deren Endung in den Konfigurationsparameter
+  <code>picture_ext</code> der Datei <span class="filename">include/config_default.inc.php</span>
+  eingetragen ist.
+</li>
+
+<li>
+   Alle Elemente, die keine Bilder sind, wie z.B. Videos, Sounds oder Textdateien, 
+   werden von einem vorgegebenen Symbol, das für die Erweiterung des Dateinamens steht, 
+   dargestellt. Sie können auch selbst ein Vorschaubild erstellen (siehe die Datei <span
+   class = "filename">Video-aus-dem-Flugzeug.jpg</span> im Beispiel oben).
+</li>
+
+<li>
+  <em>Achtung</em>: Der Name für ein Verzeichnis oder eine Datei darf
+  nur aus Buchstaben, Zahlen, "-", "_" und "." bestehen. Leerzeichen, Umlaute, "ß" 
+  und Buchstaben mit Akzent sind nicht erlaubt. 
+  Zwischen Groß- und Kleinschreibung wird unterschieden.
+</li>
+
+<li>
+ Haben Sie die Bilder in die richtigen Verzeichnisse hochgeladen,
+ loggen Sie sich ein und gehen Sie zu 
+ <span class = "pwgScreen">Verwaltung &raquo; Alben &raquo; Synchronisieren</span>.
+</li>
+
+</ul>
+
+</fieldset>
+
Index: /tags/2.6.0RC1/language/de_DE/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/search.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Suche</h2>
+
+<p>Auf dieser Seite können Sie die Galerie nach Bildern durchsuchen</p>
+
+<dl>
+
+  <dt>Suche nach Wörtern</dt>
+  <dd>Sucht nach dem angegebenen Wort/den angegebenen Wörtern in allen Attributen Ihrer Bilder.
+   Verwenden Sie * als Platzhalter.</dd>
+  
+  <dt>Suche nach Autor</dt>
+  <dd>Verwenden Sie * als Platzhalter.</dd>
+
+  <dt>Suche nach Datum</dt>
+  <dd>Wählen Sie ein Start- und/oder Enddatum für Ihre Suche. Lassen Sie das 
+  Datum leer, wenn Sie ein Element suchen, das vor einem bestimmten Zeitpunkt erstellt wurde.
+  Das Jahr muss mit 4 Ziffern angegeben werden (z.B. 2005).</dd>
+
+  <dt>Suche in den Alben</dt>
+  <dd>Beschränken Sie die Suche auf ein oder mehrere Alben. Um auch in den Unteralben eines Albums
+  zu suchen, wählen Sie die Option "Suche in den Unteralben".</dd>
+</dl>
Index: /tags/2.6.0RC1/language/de_DE/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/synchronize.html	(revision 25596)
@@ -0,0 +1,17 @@
+<h2>Synchronisieren</h2>
+<ul>
+  <li>	
+    Es gibt zwei verschiedene Synchronisationsverfahren: "Verzeichnisse/Dateien" und "Datei-
+    Metadaten". "Verzeichnisse/Dateien" synchronisiert die vorhandenen Dateien mit der Datenbank.
+    Die Metadaten-Synchronisation aktualisiert Dateiinformationen, wie Dateigröße, Größe 
+    in Pixeln, Exif- oder IPTC-Informationen.
+  </li>
+  <li>
+    Zuerst müssen immer die Verzeichnis- und Dateiinformationen synchronisiert werden.
+  </li>
+  <li>
+    Abhängig von der Belastung des Servers und der Menge der zu verwaltenden Dateien kann
+    die Synchronisierung einige Zeit in Anspruch nehmen, darum ist es auch möglich, Alben 
+    einzeln zu synchronisieren.
+   </li>
+</ul>
Index: /tags/2.6.0RC1/language/de_DE/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/de_DE/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/help/user_list.html	(revision 25596)
@@ -0,0 +1,33 @@
+<h2>Benutzer verwalten</h2>
+
+<p>
+ Hier können Sie die registrierten Benutzer Ihrer Galerie verwalten.
+</p>
+
+<h3>Benutzer hinzufügen</h3>
+
+<p>
+ Administratoren können eigenständig Benutzer hinzufügen.
+</p>
+
+<h3>Benutzerliste</h3>
+
+<p>
+ Die Benutzerliste kann nach Benutzernamen(Eingabe eines * als Platzhalter), Status und/oder Gruppe gefiltert werden.
+ Die Benutzerliste kann nach Datum der Registrierung oder Benutzernamen in aufsteigender
+ oder absteigender Reihenfolge sortiert werden.
+</p>
+
+<p>
+ In der Liste können Aktionen für einzelne Benutzer über das Anklicken von Symbolen gestartet werden.
+ Der Administrator kann die Zugriffsrechte auf private Alben verwalten und
+ Benutzerprofile einsehen und ändern.
+</p>
+
+<p>
+ Unterhalb der Liste können Benutzer (Häkchen bei "bestätigen" setzen!) gelöscht werden. 
+ Darunter können auch Status, Gruppenzugehörigkeit, wichtige Eigenschaften 
+ und Profileinstellungen von mehreren Benutzern zugleich geändert werden.
+ Unter "Ziel:" wird bestimmt, ob die Änderungen für markierte Benutzer 
+ (Standard) oder alle Benutzer übernommen wird.
+</p>
Index: /tags/2.6.0RC1/language/de_DE/index.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/de_DE/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/install.lang.php	(revision 25596)
@@ -0,0 +1,69 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installation';
+$lang['Basic configuration'] = 'Basis-Konfiguration';
+$lang['Default gallery language'] = 'Standardsprache der Galerie';
+$lang['Database configuration'] = 'Konfiguration der Datenbank';
+$lang['Admin configuration'] = 'Konfiguration des Administrator-Accounts';
+$lang['Start Install'] = 'Start der Installation';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Benutzername des Administrators';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Eine Verbindung zum Server konnte hergestellt werden, nicht aber zur Datenbank.';
+$lang['Can\'t connect to server'] = 'Es konnte keine Verbindung zum Datenbankserver aufgebaut werden.';
+$lang['Host'] = 'MySQL-Host';
+$lang['User'] = 'Benutzer';
+$lang['user login given by your host provider'] = 'Benutzername Ihrer MySQL-Datenbank (wie von Ihrem Hosting-Provider angegeben)';
+$lang['user password given by your host provider'] = 'Passwort Ihrer MySQL-Datenbank (wie von Ihrem Hosting-Provider angegeben)';
+$lang['Database name'] = 'Name der Datenbank';
+$lang['also given by your host provider'] = 'ebenso von Ihrem Host-Provider bereitgestellt';
+$lang['Database table prefix'] = 'Präfix der Datenbanktabellen';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'wird den Namen der Datenbanktabellen vorangestellt, damit Sie Ihre Tabellen einfacher verwalten können';
+$lang['enter a login for webmaster'] = 'Geben Sie einen Benutzernamen für den Webmaster an';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Der Benutzername des Webmasters darf nicht die Zeichen \' und " enthalten';
+$lang['please enter your password again'] = 'Bitte geben Sie Ihr Passwort erneut ein';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Administrator-Passwort';
+$lang['Password [confirm]'] = 'Passwort [Bestätigung]';
+$lang['verification'] = 'Wiederholen Sie das eingegebene Passwort';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Brauchen Sie Hilfe? Stellen Sie Ihre Fragen im <a href="%s"> Piwigo-Forum</ a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Kontakt-E-Mail-Adresse (nur für angemeldete Benutzer sichtbar)';
+$lang['PHP 5 is required'] = 'PHP5 ist erforderlich';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Warscheinlich läuft auf Ihrem Server die PHP-Version %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo wird versuchen, Ihre Konfiguration auf PHP5 umzustellen. Zu diesem Zweck wird eine .htaccess-Datei erstellt oder geändert.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Hinweis: Sie können Ihre Konfiguration selbst ändern. Starten Sie Piwigo danach neu.';
+$lang['Try to configure PHP 5'] = 'Versuche PHP5 zu konfigurieren';
+$lang['Sorry!'] = 'Sorry!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ist nicht in der Lage PHP5 zu konfigurieren.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Sie können Kontakt zu ihrem Hosting-Provider aufnehmen und um Unterstützung bitten zur Umstellung auf PHP 5.";
+$lang['Hope to see you back soon.'] = 'Hoffentlich sehen wir uns bald wieder!';
+$lang['Congratulations, Piwigo installation is completed'] = 'Glückwunsch! Sie haben Piwigo erfolgreich installiert.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Sie können auch den Text in der Box unten kopieren und in die Datei local/config/database.inc.php einfügen. (Warnung: database.inc.php darf nur den reinen Text ohne Zeilenumbrüche und Leerzeichen enthalten.)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Die Erstellung der Datei local/config/database.inc.php ist fehlgeschlagen.';
+$lang['Download the config file'] = 'Lade die Konfigurationsdatei herunter';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Sie können die Konfigurationsdatei herunterladen und in das Verzeichnis local/config ihrer Installation hochladen.';
+$lang['Just another Piwigo gallery'] = 'Meine Piwigo-Fotogalerie';
+$lang['Welcome to my photo gallery'] = 'Willkommen!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Besuchen Sie unser Forum, wenn Sie Hilfe benötigen: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Ihre neue Piwigo-Installation heißt sie willkommen!';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Sie können Kontakt mit Ihrem Provider aufnehmen und um Unterstützung bei der Umstellung auf PHP5 bitten.';
+$lang['localhost or other, supplied by your host provider'] = 'Local Host oder andere, bereit gestellt von deinem Provider.';
+?>
Index: /tags/2.6.0RC1/language/de_DE/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/de_DE/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Deutsch [DE]
Index: /tags/2.6.0RC1/language/de_DE/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/de_DE/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/de_DE/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Upgrade';
+$lang['Upgrade from version %s to %s'] = 'Upgrade von der Version %s auf %s';
+$lang['Statistics'] = 'Statistik';
+$lang['total upgrade time'] = 'benötigte Aktualisierungszeit';
+$lang['total SQL time'] = 'gesamte SQL-Zeit';
+$lang['SQL queries'] = 'SQL-Anfragen';
+$lang['Upgrade informations'] = 'Upgrade-Informationen';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Führen Sie eine Datenbanküberprüfung durch [Verwaltung>Werkzeuge>Wartung], falls Probleme auftreten sollten';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Nur Administratoren dürfen ein Upgrade durchführen. Bitte melden Sie sich unten an.';
+$lang['You do not have access rights to run upgrade'] = 'Sie haben nicht die erforderlichen Rechte, um ein Upgrade durchzuführen';
+$lang['All sub-albums of private albums become private'] = 'Alle Unteralben von privaten Alben werden privat';
+$lang['User permissions and group permissions have been erased'] = 'Alle Benutzer- und Gruppenberechtigungen wurden entfernt';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Es wurden nur das Vorschaubilder-Präfix und die E-Mail-Adresse des Webmasters aus der vorherigen Konfiguration übernommen';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Diese Seite schlägt vor, die Datenbank Ihrer alten Piwigo-Version zu aktualisieren. Der Upgrade-Assistent hat festgestellt, dass Sie gegenwärtig Version <strong>release %s</strong> (oder eine gleichwertige Version) benutzen.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Als Vorsichtsmaßnahme wurden folgende Plugins abgeschaltet. Überprüfen Sie, ob Plugin-Updates verfügbar sind, bevor Sie die Plugins wieder aktivieren:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In der Datei <i>%s</i> vor <b>?></b> Folgendes einfügen:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Als Vorsichtsmaßnahme wurden folgende Themen abgeschaltet. Überprüfen Sie, ob Themen-Updates verfügbar sind, bevor Sie die Themen wieder aktivieren:';
+?>
Index: /tags/2.6.0RC1/language/dv_MV/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/dv_MV/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/dv_MV/common.lang.php	(revision 25596)
@@ -0,0 +1,137 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Dhivehi [MV]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=570
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Dhivehi";
+$lang_info['country'] = "Maldives";
+$lang_info['direction'] = "rtl";
+$lang_info['code'] = "dv";
+$lang_info['zero_plural'] = false;
+
+$lang['%d album updated'] = '%d އަލްބަމް އާކުރެވިފަ';
+$lang['%d albums updated'] = '%d އަލްބަމްތައް އާކުރެވިފަ';
+$lang['%d comment to validate'] = '%d ޞައްހަކުރެއްވުމަށް ޙިޔާލެއް އެބައިން';
+$lang['%d comments to validate'] = '%d ޞައްހަކުރެއްވުމަށް ހުރި ޙިޔާލުތައް';
+$lang['%d new comment'] = '%d އާ ޙިޔާލު';
+$lang['%d new comments'] = '%d އާ ޙިޔާލުތައް';
+$lang['%d comment'] = '%d ޙިޔާލު';
+$lang['%d comments'] = '%d ޙިޔާލުތައް';
+$lang['%d hit'] = '%d ހިޓް';
+$lang['%d hits'] = '%d ހިޓްތައް';
+$lang['%d new photo'] = '%d އާ ފޮޓޯ';
+$lang['%d new photos'] = '%d އާ ފޮޓޯތައް';
+$lang['%d new user'] = '%d އާ ޔޫޒާ';
+$lang['%d new users'] = '%d އާ ޔޫޒާތައް';
+$lang['About'] = 'އާއި ބެހޭ';
+$lang['All tags'] = 'ހުރިހާ ޓެގުތައް';
+$lang['Any tag'] = 'އެއްވެސް ޓެގެއް';
+$lang['At least one listed rule must be satisfied.'] = '.އެންމެ މަދުވެގެން ބަޔާންކުރެވިފައިވާ އެއް ގަވާއިދާ އެއްގޮތްވާންވާނެ';
+$lang['Author'] = 'ޝާއިރު';
+$lang['Average rate'] = 'އެވެރެޖް ރޭޓް';
+$lang['Albums'] = 'އަލްބަމްތައް';
+$lang['Album'] = 'އަލްބަމް';
+$lang['Close this window'] = 'މި ވިންޑޯ ލައްޕާލާ';
+$lang['Complete RSS feed (photos, comments)'] = '(މުޅި އާރު.އެސް.އެސް. ފީޑް (ފޮޓޯތައް, ޙިޔާލުތައް';
+$lang['Confirm Password'] = 'ސިއްރުބަހުގެ ޞައްހަކަން ޔަގީންކުރައްވާ';
+$lang['Connection settings'] = 'ކަނެކްޝަން ސެޓިންގްސް';
+$lang['Login'] = 'ވަންނަވާ';
+$lang['Contact webmaster'] = 'ވެރިޔާ އާ ގުޅުއްވާ';
+$lang['Create a new account'] = 'އާ އެކައުންޓެއް ހައްދަވާ';
+$lang['Created on'] = 'އުފެދިފައިވަނީ';
+$lang['Creation date'] = 'އުފެދުނު ތާރިޚު';
+$lang['Current password is wrong'] = 'ތި ސިއްރުބަސް ރަންގަޅެއް ނޫން';
+$lang['Dimensions'] = 'ޑައިމެންޝަންތައް';
+$lang['Display'] = 'ދައްކަވާ';
+$lang['Each listed rule must be satisfied.'] = 'ހުރިހާ ޝަރުތުތައް ހުރިހަމަ ވާންވާނެ.';
+$lang['Email address'] = 'އީ-މެއިލް އެޑްރެސް';
+$lang['Enter your personnal informations'] = 'އަމިއްލަ މައުލޫމާތުތައް ފުރުއްވާ';
+$lang['Error sending email'] = 'އީ-މެއިލް ފޮނުވުމުގައި މައްސަލައެއް ޖެހިއްޖެ';
+$lang['File name'] = 'ފައިލްގެ ނަން';
+$lang['File'] = 'ފައިލް';
+$lang['Filesize'] = 'ފައިލްގެ ބޮޑުމިން';
+$lang['Filter and display'] = 'ބައިތަކަށް ބެހުމަށް ފަހު ދައްކަވާ';
+$lang['Filter'] = 'ބައިތަކަށް ބައްސަވާ';
+$lang['Forgot your password?'] = 'ސިއްރު ބަސް ހަންދާން ނެތުނީތޯ؟';
+$lang['Go through the gallery as a visitor'] = 'މެހެމާނެއްގެ ގޮތުގައި މައުރަޒު ބައްލަވާ ލައްވާ';
+$lang['Help'] = 'އެހީ';
+$lang['Identification'] = 'ކާކުކަން ވަކިކުރުން';
+$lang['Photos only RSS feed'] = 'ހަމައެކަނި ފޮޓޯ ހިމެނޭ އާރު.އެސް.އެސް. ފީޑް';
+$lang['Keyword'] = 'ކީވޯޑް';
+$lang['day'][0] = "އާދީއްތަ";
+$lang['day'][1] = "ހޯމަ";
+$lang['day'][2] = "އަންގާރަ";
+$lang['day'][3] = "ބުދަ";
+$lang['day'][4] = "ބުރާސްފަތި";
+$lang['day'][5] = "ހުކުރު";
+$lang['day'][6] = "ހޮނިހިރު";
+$lang['month'][10] = "އޮކްޓޯބަރ";
+$lang['month'][11] = "ނޮވެމްބަރ";
+$lang['month'][12] = "ޑިސެންބަރ";
+$lang['month'][1] = "ޖެނުއަރީ";
+$lang['month'][2] = "ފެބްރުއަރީ";
+$lang['month'][3] = "މާރޗް";
+$lang['month'][4] = "އޭޕްރީލް";
+$lang['month'][5] = "މޭ";
+$lang['month'][6] = "ޖޫން";
+$lang['month'][7] = "ޖުލައި";
+$lang['month'][8] = "އޮގަސްޓް";
+$lang['month'][9] = "ސެޕްޓެމްބަރ";
+$lang['Notification'] = 'އެންގުންތައް';
+$lang['Number of items'] = 'ތަކެތީގެ އަދަދު';
+$lang['Original dimensions'] = 'އޮރިޖިނަލް ޑައިމެންޝަންސް';
+$lang['Password forgotten'] = 'ސިއްރުބަސް ހަނދާންނެތިއްޖެ';
+$lang['Password'] = 'ސިއްރުބަސް';
+$lang['Post date'] = 'ތާރީޙު ޕޯސްޓްކުރޭ';
+$lang['Posted on'] = 'ޕޯސްޓްކުރި ތާރީޙު';
+$lang['Profile'] = 'ޕްރޮފައިލް';
+$lang['Quick connect'] = 'އަވަހަށް ގުޅާލުން';
+$lang['RSS feed'] = 'އާރު.އެސް.އެސް. ފީޑު';
+$lang['Rate'] = 'ރޭޓްކުރައްވާ';
+$lang['Register'] = 'ރެޖިސްޓާކުރައްވާ';
+$lang['Registration'] = 'ރެޖިސްޓާކުރުން';
+$lang['Related tags'] = 'ގުޅުންހުރި ޓެގުތައް';
+$lang['Reset'] = 'ރިސެޓް';
+$lang['Retrieve password'] = 'ސިއްރުބަސް ލިބިވަޑައިގަންނަވާ';
+$lang['Search rules'] = 'ހޯދުމުގެ ގަވާއިދުތައް';
+$lang['Search tags'] = 'ހޯދުމުގެ ޓެގްތައް';
+$lang['Search'] = 'ހޯދާ';
+$lang['display available tags'] = 'ހުރި ޓެގުތައް ދައްކަވާ';
+$lang['Since'] = 'އިން ފެށިގެން';
+$lang['Sort by'] = 'ގޮތަކަށް އަތުރާ';
+$lang['Sort order'] = 'އެތުރުމުގެ އޯޑަރު';
+$lang['Tag'] = 'ޓެގް';
+$lang['Tags'] = 'ޓެގުތައް';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'އާރް.އެސް.އެސް. ނޯޓިފިކޭޝަން ފީޑަކުން މިވެބްސައިޓުގެ: އާފޮޓޯ، އަލްބަމް އަޕްޑޭޓްތައް، އާޙިޔާލުތަކާބެހޭ އެންގުންތައް ލިބިވަޑައިގަންނަވާނެއެވެ. އެހެންކަމުން އާރް.އެސް.އެސް. ފީޑް ރީޑަރ އެއް ބޭނުން ކުރައްވާ.';
+$lang['Unknown feed identifier'] = 'އިނގިގެންނުވާ، ފީޑް އައިޑެންޓިފަޔާއެއް';
+$lang['User comments'] = 'ޔޫސާގެ ޙިޔާލު';
+$lang['Username'] = 'ޔޫސާނަން';
+$lang['Visits'] = 'ވަޑައިގެންނެވި ފަހަރު';
+
+
+?>
Index: /tags/2.6.0RC1/language/dv_MV/index.php
===================================================================
--- /tags/2.6.0RC1/language/dv_MV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/dv_MV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/dv_MV/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/dv_MV/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/dv_MV/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Dhivehi [MV]
Index: /tags/2.6.0RC1/language/el_GR/about.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/about.html	(revision 25596)
@@ -0,0 +1,18 @@
+<p>Αυτή η σελίδα χρησιμοποιεί το Piwigo.</p>
+
+<p> Το Piwigo είναι ένα λογισμικό για δημιουργία φωτογραφικών γκαλερί στο διαδίκτυο,
+χτισμένο από μια δραστήρια κοινότητα χρηστών και προγραμματιστών.
+Μπορείτε να το φέρετε εύκολα στα μέτρα σας με τη χρήση διάφορων -ελεύθερων- επεκτάσεων.
+Επιπλέον το Piwigo είναι λογισμικό ανοικτού κώδικα και διανέμεται ελεύθερα.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Επισκεφθείτε τη σελίδα του Piwigo</a></p>
+
+<p>Η Ελληνική μετάφραση συντηρείται από τους χρήστες (αλφαβητικά):
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=14047">andmarios</a></li>
+        <li><a href="http://piwigo.org/forum/profile.php?id=5444">Elizap</a></li>
+		<li>Lamprianidis</li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=9661">Vasilis Fotopoulos</a></li>
+	</ul>
+           ....    .... χάρη σε αυτούς</p>
Index: /tags/2.6.0RC1/language/el_GR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/el_GR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/admin.lang.php	(revision 25596)
@@ -0,0 +1,958 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+// +                                                                       +
+// + Revised by AM on 18/04/2011                                           +
+// +                                                                       +
+// +-----------------------------------------------------------------------+
+
+$lang[' and %d virtual'] = " και %d εικονικό";
+$lang[' and %d virtuals'] = " και %d εικονικά";
+$lang['%d album including'] = "%d λεύκωμα περιλαμβάνει";
+$lang['%d album moved'] = "%d λεύκωμα μετακινήθηκε";
+$lang['%d albums including'] = "%d λευκώματα περιλαμβάνουν";
+$lang['%d albums moved'] = "%d λευκώματα μετακινήθηκαν";
+$lang['%d anomalies have been detected corrected.'] = "%d ασυνέπειες εντοπίστηκαν και διορθώθηκαν.";
+$lang['%d anomalies have been detected.'] = "%d ασυνέπειες εντοπίστηκαν.";
+$lang['%d anomalies have been ignored.'] = "%d ασυνέπειες αγνοήθηκαν.";
+$lang['%d anomalies have not been corrected.'] = "%d ασυνέπειες δεν διορθώθηκαν.";
+$lang['%d anomaly has been corrected.'] = "%d ασυνέπεια εντοπίστηκε και διορθώθηκε.";
+$lang['%d anomaly has been detected.'] = "%d ασυνέπεια εντοπίστηκε.";
+$lang['%d anomaly has been ignored.'] = "%d ασυνέπεια αγνοήθηκε.";
+$lang['%d anomaly has not been corrected.'] = "%d ασυνέπεια δεν διορθώθηκε.";
+$lang['%d association'] = "%d συσχέτιση";
+$lang['%d associations'] = "%d συσχετίσεις";
+$lang['%d group'] = "%d ομάδα";
+$lang['%d groups'] = "%d ομάδες";
+$lang['%d guest'] = "%d επισκέπτης";
+$lang['%d guests'] = "%d επισκέπτης";
+$lang['%d line filtered'] = "%d γραμμή παραλείφθηκε";
+$lang['%d lines filtered'] = "%d γραμμές παραλείφθηκαν";
+$lang['%d mail was not sent.'] = "%d μήνυμα δεν εστάλη.";
+$lang['%d mail was sent.'] = "%d μήνυμα εστάλη.";
+$lang['%d mails were not sent.'] = "%d μηνύματα δεν εστάλησαν.";
+$lang['%d mails were sent.'] = "%d μηνύματα εστάλησαν.";
+$lang['%d member'] = "%d μέλος";
+$lang['%d members'] = "%d μέλη";
+$lang['%d of %d photos selected'] = '%d από %d φωτογραφίες επιλεγμένες';
+$lang['%d parameter was updated.'] = "%d παράμετρος ενημερώθηκε.";
+$lang['%d parameters were updated.'] = "%d παράμετροι ενημερώθηκαν.";
+$lang['%d photo was deleted'] = "%d φωτογραφία διαγράφηκε";
+$lang['%d photos uploaded'] = '%d φωτογραφίες ανέβηκαν';
+$lang['%d photos were deleted'] = "%d φωτογραφίες διαγράφηκαν";
+$lang['%d physical'] = '%d φυσικά';
+$lang['%d physical'] = " %d φυσικά";
+$lang['%d tag'] = "%d ετικέτα";
+$lang['%d tags'] = "%d ετικέτες";
+$lang['%d user comment rejected'] = "%d σχόλιο απορρίφθηκε";
+$lang['%d user comment validated'] = "%d σχόλιο επικυρώθηκε";
+$lang['%d user comments rejected'] = "%d σχόλια απορρίφθηκαν";
+$lang['%d user comments validated'] = "%d σχόλια επικυρώθηκαν";
+$lang['%d user deleted'] = "%d χρήστης διαγράφηκε";
+$lang['%d user was not updated.'] = "%d χρήστης δεν ενημερώθηκε.";
+$lang['%d user was updated.'] = "%d χρήστης ενημερώθηκε.";
+$lang['%d user'] = "%d χρήστης";
+$lang['%d users deleted'] = "%d χρήστες διαγράφηκαν";
+$lang['%d users were not updated.'] = "%d χρήστες δεν ενημερώθηκαν.";
+$lang['%d users were updated.'] = "%d χρήστες ενημερώθηκαν.";
+$lang['%d users'] = "%d χρήστες";
+$lang['%d waiting for validation'] = "%d περιμένουν επικύρωση";
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s must be set to false in your local/config/config.inc.php file";
+$lang['%s value is not correct file because exif are not supported'] = "%s πεδίο είναι λάθος γιατί δεν υποστηρίζεται η πληροφορία EXIF";
+$lang['+ Add an upload box'] = '+ Προσθήκη και άλλου αρχείου για ανέβασμα';
+$lang[', click on'] = ", κάντε κλικ";
+$lang['Average rate'] = 'Μέσος όρος βαθμολογίας';
+$lang['Rate'] = 'Βαθμολογία';
+$lang['A new version of Piwigo is available.'] = 'Μια νέα έκδοση του Piwigo είναι διαθέσιμη.';
+$lang['Access type'] = 'Τύπος πρόσβασης';
+$lang['ACCESS_0'] = 'Ελεύθερη πρόσβαση';
+$lang['ACCESS_1'] = 'Πρόσβαση σε όλους';
+$lang['ACCESS_2'] = 'Πρόσβαση στους εγγεγραμμένους χρήστες';
+$lang['ACCESS_3'] = 'Πρόσβαση στους administrators';
+$lang['ACCESS_4'] = 'Πρόσβαση στους webmasters';
+$lang['ACCESS_5'] = 'Μη πρόσβαση';
+$lang['Action'] = 'Ενέργεια';
+$lang['Actions'] = 'Ενέργειες';
+$lang['Activate icon "%s"'] = 'Εικονίδιο ενεργοποίησης "%s"';
+$lang['Activate Navigation Bar'] = 'Ενεργοποίηση μπάρας πλοήγησης';
+$lang['Activate Navigation Thumbnails'] = 'Ενεργοποίηση εικονιδίων πλοήγησης'; 
+$lang['Activate'] = 'Eνεργοποίηση';
+$lang['Activate icon "new" next to albums and pictures'] = 'Ενεργοποίηση του εικονιδίου "νέο" μετά από τα άλμπουμς και εικόνες';
+$lang['Active Languages'] = 'Ενεργοποίηση Γλώσσων';
+$lang['Active Plugins'] = 'Ενεργοποίηση Προσθέτων';
+$lang['Active Themes'] = 'Ενεργοποίηση Θεμάτων';
+$lang['Add a criteria'] = 'Προσθήκη ενός κριτηρίου';
+$lang['Add a filter'] = 'Προσθήκη ενός φίλτρου';
+$lang['Add a tag'] = 'Προσθήκη μιας ετικέτας';
+$lang['Add a user'] = 'Προσθήκη ενός χρήστη';
+$lang['Add a virtual album'] = 'Προσθήκη ενός εικονικού άλμπουμ';
+$lang['Add another set of photos'] = 'Προσθήκη μιας άλλης ομάδας φωτογραφιών';
+$lang['Add detailed content'] = 'Προσθήκη μερικών λεπτομερών περιοχομένων';
+$lang['Add group'] = 'Προσθήκη γκρουπ';
+$lang['Add New Language'] = 'Προσθήκη Νέας Γλώσσας';
+$lang['add new photos to caddie'] = 'Προσθήκη νέας φωτογραφίας στο κουτί';
+$lang['Add New Theme'] = 'Προσθήκη ενός νέου θέματος';
+$lang['Add Photos'] = 'Προσθήκη φωτογραφιών';
+$lang['Add to caddie'] = 'προσθήκη στο καλάθι';
+$lang['Upload Photos'] = 'Ανέβασμα φωτογραφιών';
+$lang['Select an album'] = 'Επέλεξε άλμπουμ';
+$lang['... or '] = '... ή ';
+$lang['create a new album'] = 'δημιούργησε ένα νέο άλμπουμ';
+$lang['Select files'] = 'Επέλεξε αρχεία';
+$lang['Start Upload'] = 'Έναρξη ανεβάσματος';
+$lang['Learn more'] = 'Μάθε περισσότερα';
+$lang['Maximum file size: %sB.'] = 'Μέγιστο μέγεθος αρχείου: %sB.';
+$lang['Allowed file types: %s.'] = 'Επιτρεπόμενοι τύποι αρχείων: %s.';
+$lang['Photo %s of %s'] = 'Φωτογραφία  %s του %';
+$lang['All %d photos are selected'] = 'Όλεςl %d οι φωτογραφίες επιλέχθηκαν';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Χρησιμοποιείς τον uploader του φυλλομετρητή. Προβλήματα; Προσπάθησε το <a href="%s">ανέβασμα μέσω Flash uploader</a>.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Χρησιμοποιείς τον Flash uploader. Προβλήματα; Προσπάθησε το <a href="%s">ανέβασμα μέσω φυλλομετρητή</a> instead.';
+$lang['Exif extension not available, admin should disable exif use'] = 'Η προέκταση για τα exif δεν είναι διαθέσιμη, ο διαχειριστής θα απενεργοποιήσει την χρήση του  exif';
+$lang['Hide'] = "Κρυφό";
+$lang['Level 1'] = "Επαφές";
+$lang['Level 2'] = "Φίλοι";
+$lang['Level 4'] = "Οικογένεια";
+$lang['Level 8'] = "Διαχειριστές";
+$lang['Set author'] = 'Ορισμός συντάκτη';
+$lang['Set creation date'] = 'Ορισμός ημέρας δημιουργίας';
+$lang['Set title'] = 'Ορισμός τίτλου';
+$lang['set to'] = 'Ορισμός σε';
+$lang['Settings'] = 'Ρυθμίσεις';
+$lang['show details'] = 'Εμφάνιση λεπτομερειών';
+$lang['Show info'] = 'Εμφάνιση πληροφοριών';
+$lang['Show menubar'] = 'Εμφάνιση γραμμής μενού';
+$lang['Simulation'] = 'Προσομείωση';
+$lang['singly represented'] = 'σταθερη μικρογραφία άλμπουμ';
+$lang['Site manager'] = 'Διαχείριση της ιστοσελίδας';
+$lang['Some themes and plugins may be not available yet.'] = 'Ορισμένα θέματα και πρόσθετα μπορεί να μην είναι διαθέσιμα ακόμα.';
+$lang['Some upgrades are available for extensions.'] = 'Μερικές αναβαθμίσεις είναι διαθέσιμες για τις επεκτάσεις.';
+$lang['Start pLoader and add your photos.'] = 'Εκκίνηση pLoader και προσθήκη φωτογραφιών.';
+$lang['Statistics'] = 'Στατιστικά';
+$lang['Status of user "%s" updated'] = 'Η κατάσταση του χρήστη "%s" ενημερώθηκε';
+$lang['Status'] = 'Κατάσταση';
+$lang['status'] = 'κατάσταση';
+$lang['Storage album'] = 'Αποθήκευση άλμπουμ';
+$lang['sub-albums'] = 'υπό-άλμπουμ';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Εγγραφή %s στο ενημερωτικό δελτίο ανακοινώσεων';
+$lang['Subscribe %s'] = 'Εγγραφή %s';
+$lang['Subscribe to notification by mail'] = 'Εγγραφή με κοινοποίηση μέσω ηλεκτρονικού ταχυδρομείου';
+$lang['Subscribe'] = 'Εγγραφή';
+$lang['Subscribe/unsubscribe users'] = 'Εγγραφή/διαγραφή χρηστών';
+$lang['Subscribed'] = 'Εγγεγραμένος';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Τα μέλη μπορεί να εμφανίζονται (διαθέσιμα) μόνο αν υπάρχουν νέα στοιχεία για ενημέρωση.';
+$lang['Sum of rates'] = 'Άθροισμα των τιμών';
+$lang['Summary'] = 'Περίληψη';
+$lang['Support'] = 'Υποστήριξη';
+$lang['Albums authorized thanks to group associations'] = 'Τα άλμπουμς εξουσιοδοτήθηκαν εξαιτίας των σχέσεων του γκρουπ.';
+$lang['Albums automatically sorted'] = 'Το άλμπουμ ταξινομήθηκε αυτόματα';
+$lang['albums deleted in the database'] = 'Το άλμπουμ διαγράφηκε από τη βάση δεδομένων.';
+$lang['All extensions are up to date.'] = 'Όλα τα πρόσθετα ενημερώθηκαν.';
+$lang['All languages are up to date.'] = 'Όλες οι γλώσσες έχουν ενημερωθεί.';
+$lang['All optimizations have been successfully completed.'] = 'Όλες οι βελτιώσεις έχουν ολοκληρωθεί επιτυχώς.';
+$lang['All plugins are up to date.'] = 'Όλα τα plugins έχουν ενημερωθεί.';
+$lang['All themes are up to date.'] = 'Όλα τα θέματα έχουν ενημερωθεί.';
+$lang['all'] = 'Όλα';
+$lang['Allow rating'] = 'Να επιτρέπεται η βαθμολογία';
+$lang['Allow user customization'] = 'Να επιτρέπεται η παραμετροποίηση από τους χρήστες';
+$lang['Allow user registration'] = 'Να επιτρέπεται η εγγραφή χρηστών';
+$lang['Allow users to delete their own comments'] = 'Αν επιτρέπεται οι χρήστες να σβήνουν τα δικά τους σχόλια';
+$lang['Allow users to edit their own comments'] = 'Να επιτρέπεται οι χρήστες να διορθώνουν τα δικά τους σχόλια';
+$lang['an error happened'] = 'Συνέβη ένα σφάλμα';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Συνέβη ένα λάθος κατά την εξαγωγή. Παρακαλούμε ελέγξτε τα δικαιώματα των αρχείων της εγκατάστασης του piwigo.<br><a href="%s">Πάτα εδώ να δεις τα λάθη</a>.';
+$lang['An error has occured during upgrade.'] = 'Συνέβη ένα λάθος κατά την αναβάθμιση.';
+$lang['An error occured during extraction (%s).'] = 'Συνέβη ένα λάθος κατά την διάρκεια της εξαγωγής των αρχείων (%s).';
+$lang['An information email was sent to group "%s"'] = 'Email πληροφόρησης έχουν αποσταλεί στην ομάδα "%s"';
+$lang['and'] = 'και';
+$lang['Anomaly'] = 'Ανωμαλία';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Τέλος πάντων μόνο οι webmasters μπορούν να δουν αυτήν την καρτέλα, όχι οι administrators.';
+$lang['Apply action'] = 'Εφαρμογή δράσης';
+$lang['Apply selected corrections'] = 'Εφαρμογή επιλεγμένων διορθώσεων';
+$lang['Apply to sub-albums'] = 'Επιλογή υπό-άλμπουμ';
+
+$lang['%s has been successfully updated.'] = '%s έχει ενημερωθεί με επιτυχία.';
+$lang['%s photos can not be regenerated'] = '%s φωτογραφίες δεν μπορούν να αναπαραχθούν';
+$lang['%s photos have been regenerated'] = '%s φωτογραφίες έχουν αναπαραχθεί';
+$lang['(this tag will be deleted)'] = '(αυτή η ετικέτα θα διαγραφεί)';
+$lang['Activate comments'] = 'Ενεργοποίηστε τα σχόλια';
+$lang['Add tags'] = 'Προσθέστε ετικέτες';
+$lang['Add write access to the "%s" directory'] = 'Προσθέστε δικαιώματα εγγραφής στον κατάλογο "%s"';
+$lang['Add/delete a permalink'] = 'Προσθέστε/Διαγράψτε μόνιμο σύνδεσμο';
+$lang['Add'] = 'Προσθέστε';
+$lang['Administration Home'] = 'Αρχική σελίδα διαχείρησης';
+$lang['Advanced features'] = 'Προηγμένες λειτουργίες';
+$lang['Album "%s" has been added'] = 'Το λεύκωμα "%s" έχει προστεθεί';
+$lang['Album "%s" now contains %d photos'] = 'Το λεύκωμα "%s" περιέχει τώρα  %d φωτογραφίες';
+$lang['Album list management'] = 'Διαχείριση Λίστας Λευκωμάτων';
+$lang['Album manual order was saved'] = 'Το εγχειρίδιο λευκώματος έχει αποθηκευτεί';
+$lang['Album name'] = 'Όνομα Λευκώματος';
+$lang['Album photos associated to the following albums: %s'] = 'Λευκώματα φωτογραφιών που σχετίζονται με τα ακόλουθα λευκώματα:%s';
+$lang['Album updated successfully'] = 'Το λεύκωμα ενημερώθηκε με επιτυχία';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Κατά προσέγγιση μέγιστη ανάλυση:  %dM pixels (αυτό είναι %dx%d pixels).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Είστε βέβαιοι ότι θέλετε να εγκαταστήσετε αυτήν την αναβάθμιση; Θα πρέπει να ελέγξετε αν αυτή η έκδοση δεν χρειάζεται πριν απεγκατάσταση.';
+$lang['Are you sure you want to delete this plugin?'] = 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το πρόσθετο;';
+$lang['Are you sure you want to install this plugin?'] = 'Είστε βέβαιοι ότι θέλετε να εγκαταστήσετε αυτό το πρόσθετο;';
+$lang['Associate to album'] = 'Συσχετίστε με το λεύκωμα';
+$lang['Associated'] = 'Συσχετίζεται με';
+$lang['Authorize users to add comments on selected albums'] = 'Εξουσιοδοτήστε χρήστες να προσθέτουν σχόλια στα επιλεγμένα λευκώματα';
+$lang['Authorized'] = 'Εξουσιοδοτημένος';
+$lang['Automatic correction'] = 'Αυτόματη διόρθωση';
+$lang['Available only with HTML format'] = 'Διατίθεται μόνο με μορφή HTML';
+$lang['Batch Manager'] = 'Διαχείρηση ενεργειών κατά δέσμη';
+$lang['Bound Theme'] = 'Συνδεδεμένο Θέμα';
+$lang['By %s'] = 'Με %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Από προεπιλογή, το Piwigo θα δημιουργήσει μια νέα ιστοσελίδα από τη HD (υψηλής ευκρίνειας) έκδοση των φωτογραφιών σας.';
+$lang['By rank'] = 'Βάσει σειράς';
+$lang['Caddie management'] = 'Διαχείρηση Caddie';
+$lang['added'] = 'προστέθηκε';
+$lang['albums added in the database'] = 'το λεύκωμα προστεθηκε στη βάση δεδομένων';
+$lang['associate to group'] = 'Συσχετίστε με την ομάδα';
+$lang['automatic order'] = 'αυτόματη σειρά';
+$lang['average time'] = 'μέσος χρόνος';
+$lang['between'] = 'ανάμεσα';
+$lang['Caddie'] = 'Καλάθι';
+$lang['Can\'t connect to server.'] = 'Σύνδεση με τον διακομιστή αδύνατη.';
+$lang['Can\'t create temporary file.'] = 'Προσωρινό αρχείο δεν μπορεί να δημιουργηθεί.';
+$lang['Can\'t download archive.'] = 'Το συμπιεσμένο αρχείο δεν μπορεί να κατέβει.';
+$lang['Can\'t read or extract archive.'] = 'Το συμπιεσμένο αρχείο δεν μπορεί να διαβαστεί ή να εξαχθεί.';
+$lang['Cannot delete the old permalink !'] = 'Ο παλιός μόνιμος σύνδεσμος δεν μπορεί να διαγραφεί!';
+$lang['Change Admin Colors'] = 'Αλλαγή χρωμάτων στο περιβάλλον διαχείρησης';
+$lang['Check all'] = 'Ελέγξτε όλα';
+$lang['Check automatic corrections'] = 'Ελέγξτε τις αυτόματες διορθώσεις';
+$lang['Check for updates'] = 'Έλεγχος για ενημερώσεις';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Ο έλεγχος για αναβάθμιση απέτυχε για άγνωστους λόγους.';
+$lang['Check for upgrade'] = 'Έλεγχος για αναβάθμιση';
+$lang['Check integrity'] = 'Έλεγχος ακεραιότητας';
+$lang['Choose an action'] = 'Επιλέξτε μια ενέργεια';
+$lang['Choose an option'] = 'Επιλέξτε μια επιλογή';
+$lang['Classic display'] = 'Κλασική οθόνη';
+$lang['Comments for all'] = 'Σχόλια για όλους';
+$lang['Complementary mail content'] = 'Συμπληρωματικό περιεχόμενο ταχυδρομείου';
+$lang['Configuration'] = 'Διαμόρφωση';
+$lang['clean'] = 'εκκαθάριση';
+$lang['Confirm merge'] = 'Επιβεβαίωση συγχώνευσης';
+$lang['Continue processing treatment'] = 'Συνεχίστε με την παρούσα συμπεριφορά';
+$lang['Correction applied with error'] = 'Διόρθωση εφαρμόστηκε με λάθη';
+$lang['Correction applied with success'] = 'Διόρθωση εφαρμόστηκε επιτυχώς';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Η ανωμαλία που διορθώθηκε δεν μπορεί πλέον να αγνοηθεί';
+$lang['Correction'] = 'Διόρθωση ';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Δημιουργία καταλόγου "%s" στη ρίζα της εγκατάστασης του Piwigo';
+$lang['Create this site'] = 'Δημιουργήστε την ιστοσελίδα';
+$lang['Create'] = 'Δημιουργήστε';
+$lang['Crop'] = 'ενσωμάτωση';
+$lang['Current name'] = 'Τρέχων όνομα';
+$lang['Database synchronization with files'] = 'Συγχρονισμός βάσης δεδομένων με τα αρχεία';
+$lang['Database'] = 'Βαση Δεδομένων';
+$lang['Date'] = 'Ημερομηνία';
+$lang['Day'] = 'Ημέρα';
+$lang['Deactivate all'] = 'Απενεργοποίηση όλων';
+$lang['Deactivate'] = 'Απενεργοποίηση';
+$lang['confirm'] = 'επιβεβαίωση';
+$lang['created'] = 'δημιουργήθηκε';
+$lang['Default comments order'] = 'προκαθορισμένη σειρά σχολίων';
+$lang['Default display'] = 'προκαθορισμένη προβολή οθόνης';
+$lang['Default photos order'] = 'προκαθορισμένη σειράς φωτογραφιών';
+$lang['Default user cannot be deleted'] = 'Ο προκαθορισμένος χρήστης δεν μπορεί να διαγραφεί';
+$lang['Default user does not exist'] = 'Ο προκαθορισμένος χρήστης δεν υπάρχει';
+$lang['Delete Representant'] = 'Διαγραφή μικρογραφίας λευκώματος';
+$lang['Delete orphan tags'] = 'Διαγραφή ορφανών ετικετών';
+$lang['Delete selected photos'] = 'Διαγραφή επιλεγμένων φωτογραφιών';
+$lang['Delete selected tags'] = 'Διαγραφή επιλεγμένων ετικετών';
+$lang['Delete selected users'] = 'Διαγραφή επιλεγμένων χρηστών';
+$lang['Delete this language'] = 'Διαγραφή αυτής της γλώσσας';
+$lang['Delete this theme'] = 'διαγράψετε αυτό το θέμα';
+$lang['Deleted on'] = 'διαγραφεί';
+$lang['Deletions'] = 'Διαγραφές';
+$lang['Deny selected groups'] = 'Άρνηση επιλεγμένων ομάδων';
+$lang['Deny selected users'] = 'Άρνηση επιλεγμένων ομάδων';
+$lang['Description'] = 'Περιγραφή';
+$lang['Detailed informations'] = 'Λεπτομερείς πληροφορίες';
+$lang['Directory does not exist'] = 'Ο Κατάλογος δεν υπάρχει';
+$lang['Directory'] = 'Κατάλογος';
+$lang['Discover album:'] = 'Ανακαλύψτε λεύκωμα:';
+$lang['Display options'] = 'Επιλογές εμφάνισης';
+$lang['Dissociate from album'] = 'Αποσυνδέστε από το λεύκωμα';
+$lang['Dissociated'] = 'Αποσυνδεδεμένο';
+$lang['Do you want to activate anyway?'] = 'Θέλετε να ενεργοποιήσετε ούτως ή άλλως;';
+$lang['Documentation'] = 'Τεκμηρίωση';
+$lang['Does not represent'] = 'Δεν είναι μικρογραφία για';
+$lang['Download,'] = 'Κατεβάστε,';
+$lang['Downloads'] = 'Λήψεις';
+$lang['Drag to re-order'] = 'Κάντε κλικ και σύρετε για εκ νέου στοίχηση';
+$lang['Drop into album'] = 'Επιλέξτε ένα λεύκωμα';
+$lang['Dump Database'] = 'Εξαγωγή Βάσης Δεδομένων';
+$lang['Duplicates'] = 'Διπλα Αντίγραφα';
+$lang['Edit album permissions'] = 'Επεξεργασία δικαιωμάτων λευκώματος';
+$lang['Edit album'] = 'Επεξεργασία λευκώματος';
+$lang['Edit photo information'] = 'Επεξεργασία πληροφοριών φωτογραφίας';
+$lang['Edit ranks'] = 'Επεξεργασία αξιολογίσεων';
+$lang['Edit selected tags'] = 'Επεξεργασία επιλεγμένων ετικετών';
+$lang['Edit tags'] = 'Επεξεργασία ετικετών';
+$lang['Element type'] = 'Τύπος στοιχείου';
+$lang['Element'] = 'Στοιχείο ';
+$lang['Email administrators when a comment is deleted'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο διαγράφεται';
+$lang['Email administrators when a comment is modified'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο επεξεργάστηκε';
+$lang['Email admins when a comment requires validation'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο χρειάζετε επικύρωση';
+$lang['Email admins when a new user registers'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένας χρήστης εγγράφεται';
+$lang['Email admins when a valid comment is entered'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν εισάγεται ένα έγκυρο σχόλιο';
+$lang['Environment'] = 'Περιβάλλον ';
+$lang['Error list'] = 'Λίστα των σφαλμάτων';
+$lang['Error on file "%s" : %s'] = 'Σφάλμα στο αρχείο "%s":%s';
+$lang['Error when sending email to %s [%s].'] = 'Σφάλμα κατά την αποστολή e-mail στο%s [%s].';
+$lang['default values'] = 'προκαθορισμένες τιμές';
+$lang['default'] = 'προκαθορισμένο';
+$lang['delete album'] = 'Διαγράψτε το λεύκωμα';
+$lang['delete photo'] = 'διαγραφή φωτογραφίας';
+$lang['delete this site and all its attached elements'] = 'διαγράψετε αυτό το site και όλες τις σχετικές πληροφορίες';
+$lang['deleted'] = 'διαγραμμένο';
+$lang['delete'] = 'διαγραφή';
+$lang['directories + files'] = 'κατάλογοι + αρχεία';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'εμφανίζονται μέγιστες πληροφορίες (λευκώματα που προστέθηκαν και φωτογραφίες, διαγραμένα λευκώματα και φωτογραφίες)';
+$lang['display'] = 'Εμφάνιση';
+$lang['dissociate from group'] = 'Αποσυνδέστε από την ομάδα';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ΣΦΑΛΜΑ: ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΛΕΙΠΕΙ ΑΛΛΑ ΕΙΝΑΙ ΕΓΚΑΤΕΣΤΗΜΕΝΟ! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ.';
+$lang['ERROR'] = 'ΣΦΑΛΜΑ';
+$lang['Errors caption'] = 'Λάθος λεζάντες';
+$lang['Everybody'] = 'Όλοι';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Ο χρόνος εκτέλεσης έχει τελειώσει, η  επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Ο χρόνος εκτέλεσης έχει υπερβεί, η  επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].';
+$lang['Extend for templates'] = 'Ανεπτυγμένα πρότυπα';
+$lang['Extensions Update'] = 'Ενημέρωση Επεκτάσεων';
+$lang['FTP + Synchronization'] = 'Ο χρόνος εκτέλεσης έχει υπερβεί, η  επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].';
+$lang['Failed to write file to disk'] = 'Αποτυχία εγγραφής αρχείου στο δίσκο';
+$lang['File upload stopped by extension'] = 'Φόρτωση αρχείου διακόπηκε από επέκταση';
+$lang['File/directory read error'] = 'λάθος ανάγνωσης Αρχείου / Καταλόγου ';
+$lang['File'] = 'Αρχείο';
+$lang['Find a new representant by random'] = 'Βρείτε μια νεα τυχαία μικρογραφία λευκώματος';
+$lang['Follow Orientation'] = 'Ακολουθήστε Προσανατολισμό';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Τα ακόλουθα πρόσθετα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Τα ακόλουθα Θέματα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:';
+$lang['Forbid this language to users'] = 'Λάθος λεζάντες';
+$lang['Forbid this theme to users'] = 'σφάλματα κατά το συγχρονισμό';
+$lang['Forbidden'] = 'ήδη συγχρονισμένα φωτογραφίες';
+$lang['Form'] = 'Όλοι';
+$lang['GD library is missing'] = 'υπάρχον λεύκωμα';
+$lang['GD version'] = 'Ανεπτυγμένα πρότυπα';
+$lang['Gallery title'] = 'Ο χρόνος εκτέλεσης έχει τελειώσει, η  επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].';
+$lang['General statistics'] = 'Ενημέρωση Επεκτάσεων';
+$lang['Get Support on Piwigo Forum'] = 'Αποτυχία εγγραφής αρχείου στο δίσκο';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Φόρτωση αρχείου διακόπηκε από επέκταση';
+$lang['Go to %s or %s for more informations'] = 'λάθος ανάγνωσης Αρχείου / Καταλόγου ';
+$lang['Go to'] = 'Βρείτε μια νεα τυχαία μικρογραφία λευκώματος';
+$lang['Grant selected groups'] = 'πρώτη φωτογραφία προστέθηκε στις %s';
+$lang['Grant selected users'] = 'Ακολουθήστε Προσανατολισμό';
+$lang['Graphics Library'] = 'Τα ακόλουθα πρόσθετα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:';
+$lang['Group management'] = 'Διαχείριση Ομάδων';
+$lang['Group name'] = 'Όνομα Ομάδας';
+$lang['Group'] = 'Ομάδα';
+$lang['Groups'] = 'Ομάδες';
+$lang['Guest Settings'] = 'Ρυθμίσεις Επισκέπτη';
+$lang['Guest cannot be deleted'] = 'Επισκέπτες δεν μπορούν να διαγραφούν';
+$lang['Guests'] = 'Επισκέπτες';
+$lang['Height'] = 'Ύψος';
+$lang['Hello,'] = 'Γεια, ';
+$lang['Hello'] = 'Γεια';
+$lang['Help Me'] = 'Βοηθήστε με';
+$lang['High definition enabled'] = 'Υψηλή ευκρίνεια ενεργοποιημένη';
+$lang['High definition'] = 'Υψηλή ευκρίνεια';
+$lang['History'] = 'Ιστορικό';
+$lang['Hit'] = 'Χτυπήματα';
+$lang['Hour'] = 'Ώρες';
+$lang['I decide to update anyway'] = 'Έχω Αποφάσισει να ενημερώσω ούτως ή άλλως';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Εάν δεν είναι διαθέσιμη HD και αν το τρέχον μέγεθος του ιστού είναι μεγαλύτερο από τις διαστάσεις αλλαγής μεγέθους, Piwigo θα το μετατρέψει ως HD και θα δημιουργήσει μια συρρικνωμένη σε μέγεθος φωτογραφία αντί αυτού.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Εάν αντιμετωπίσετε προβλήματα ή έχετε οποιαδήποτε ερώτηση, παρακαλούμε να στείλετε ένα μήνυμα στο';
+$lang['Ignore All'] = 'Παράβλεψη όλων';
+$lang['Ignore selected anomalies'] = 'Παράβλεψη επιλεγμένων ανωμαλιών';
+$lang['Ignore this update'] = 'Αγνοήστε αυτήν την ενημερωμένη έκδοση';
+$lang['Image Quality'] = 'Ποιότητα της εικόνας';
+$lang['Image id'] = 'id εικόνας';
+$lang['Images manual order was saved'] = 'Η χειροκίνητη διάταξη εικόνων αποθηκεύτικε';
+$lang['Impossible automatic correction'] = 'Αυτόματη διόρθωση αδύνατη';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Αυτό το θέμα δεν θα μπορούσε να ενεργοποιηθεί, επειδή το θέμα της μητρικής λείπει:%s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Αδύνατο να απενεργοποιήσετε αυτή τη γλώσσα, ορίστε πρώτα μια άλλη γλώσσα ως προεπιλεγμένη.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Αδύνατο να απενεργοποιήσετε αυτή τη γλώσσα,χρειάζετε τουλάχιστον μια γλώσσα';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Αδύνατο να απενεργοποιήσετε αυτό το θέμα, χρειάζετε τουλάχιστον ένα θέμα';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Αυτό το θέμα δεν μπορεί να διαγραφεί, επειδή άλλα θέματα εξαρτόνται από αυτό:%s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Στο αρχείο php.ini, η τιμή upload_max_filesize (%sB) είναι μεγαλύτερη από τη τιμή post_max_size (%sB), θα πρέπει να αλλάξετε αυτή τη ρύθμιση';
+$lang['Inactive Languages'] = 'Ανενεργές Γλώσσες';
+$lang['Inactive Plugins'] = 'Ανενεργά Πρόσθετα';
+$lang['Inactive Themes'] = 'Ανενεργά Θέματα';
+$lang['errors during synchronization'] = 'σφάλματα κατά το συγχρονισμό';
+$lang['even already synchronized photos'] = 'ήδη συγχρονισμένα φωτογραφίες';
+$lang['existing album'] = 'υπάρχον λεύκωμα';
+$lang['first photo added on %s'] = 'πρώτη φωτογραφία προστέθηκε στις %s';
+$lang['for the file format'] = 'ΣΦΑΛΜΑ';
+$lang['for this file format'] = 'ΣΦΑΛΜΑ: ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΛΕΙΠΕΙ ΑΛΛΑ ΕΙΝΑΙ ΕΓΚΑΤΕΣΤΗΜΕΝΟ! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ.';
+$lang['global mode'] = 'Αρχείο';
+$lang['group "%s" added'] = 'Τα ακόλουθα Θέματα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:';
+$lang['group "%s" deleted'] = 'Η ομάδα "%s" διαγράφηκε';
+$lang['group "%s" updated'] = 'Η ομάδα "%s" ενημερώθηκε';
+$lang['guest'] = 'Επισκέπτης';
+$lang['height must be a number superior to'] = 'το ύψος πρέπει να είναι ένα νούμερο μεγαλύτερο από';
+$lang['hide details'] = 'απόκρυψη λεπτομερειών';
+$lang['high'] = 'υψηλό';
+$lang['IP'] = 'IP';
+$lang['Include display of recent photos grouped by dates'] = 'Συμπεριλαβάνει απεικονίσεις από πρόσφατες φωτογραφίες ομαδοποιημένες κατά ημερομηνία';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Συμπεριλαμβάνει ιστορικά δεδομένων (Προσοχή: Το όριο μνήμης του διακομιστή  μπορεί να υπερβεί) ';
+$lang['Information data registered in database'] = 'Πληροφορίες για δεδομένα που έχουν καταχωρηθεί στη βάση δεδομένων';
+$lang['Informations'] = 'Πληροφορίες';
+$lang['Install on your computer,'] = 'Εγκαταστήστε στον υπολογιστή σας,';
+$lang['Installed Languages'] = 'Εγκατεστημένες γλώσσες';
+$lang['Installed Themes'] = 'Εγκατεστημένα θέματα';
+$lang['Install'] = 'Εγκατάσταση';
+$lang['Instructions to use Piwigo'] = 'Οδηγίες χρήσης Piwigo';
+$lang['Invert'] = 'Αντιστροφή';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Μείνετε σε επαφή με το έργο του Piwigo, εγγραφείτε στο Newsletter Ανακοινώσεων του Piwigo. Θα σας αποστέλετε e-mail όταν μια νέα έκδοση είναι διαθέσιμη (μερικές φορές περιλαμβανομένων μια διώρθοση ασφαλείας, είναι σημαντικό να γνωρίζετε και να αναβαθμίσετε) και όταν συμβαίνουν σημαντικά γεγονότα για το έργο. Μόνο μερικά emails το χρόνο';
+$lang['Language has been successfully installed'] = 'Η Γλώσσα έχει εγκατασταθεί με επιτυχία';
+$lang['Languages which need upgrade'] = 'Οι Γλώσσες που χρειάζονται αναβάθμιση';
+$lang['Languages'] = 'Γλώσσες';
+$lang['Last hit'] = 'τελευταίο χτύπημα';
+$lang['Last import'] = 'Τελευταία εισαγωγή';
+$lang['Last revisions'] = 'Τελευταίες αναθεωρήσεις';
+$lang['Last send'] = 'Τελευταία αποστολή';
+$lang['Level 0'] = '---';
+$lang['Link all album photos to a new album'] = 'Σύνδεση όλων των φωτογραφιών του λευκώματος  σε ένα νέο λεύκωμα';
+$lang['Link all album photos to some existing albums'] = 'Σύνδεση όλων των φωτογραφιών του λευκώματος σε ορισμένα υφιστάμενα λευκώματα';
+$lang['Linked albums'] = 'Συνδεδεμένα λευκώματα';
+$lang['Local'] = 'Τοπική';
+$lang['Lock albums'] = 'Κλείδωμα άλμπουμ';
+$lang['Lock gallery'] = 'Κλείδωμα γκαλερί';
+$lang['Locked'] = 'Κλειδωμένο';
+$lang['Lock'] = 'Κλείδωμα';
+$lang['Mail address is obligatory for all users'] = 'Ταχυδρομική διεύθυνση είναι υποχρεωτική για όλους τους χρήστες';
+$lang['Mail content'] = 'Περιεχόμενο Αλληλογραφίας';
+$lang['Mail sent to %s [%s].'] = 'Τα μηνύματα στάλθηκαν στο %s[%s].';
+$lang['Main "guest" user does not exist'] = 'Ο κύριος χρήστης "επισκέπτης" δεν υπάρχει';
+$lang['Main "guest" user status is incorrect'] = 'Η κατάσταση κύριου χρήστη "επισκέπτης" είναι εσφαλμένη';
+$lang['Main "webmaster" user does not exist'] = 'Ο κύριος χρήστης "webmaster" δεν υπάρχει';
+$lang['Main "webmaster" user status is incorrect'] = 'H κατάσταση του κύριου χρήστη "webmaster" είναι εσφαλμένη';
+$lang['Main Page'] = 'Αρχική σελίδα';
+$lang['Maintenance'] = 'Συντήρηση';
+$lang['Make this language available to users'] = 'Κάντε αυτή η γλώσσα διαθέσημη στους χρήστες';
+$lang['Make this theme available to users'] = 'Κάντε αυτό το θέμα διαθέσημο στους χρήστες';
+$lang['Manage Permissions'] = 'Διαχείριση Δικαιωμάτων';
+$lang['Manage authorizations for selected albums'] = 'Διαχειριστείτε τις άδειες για τα επιλεγμένα λευκώματα ';
+$lang['Manage permissions for group "%s"'] = 'Διαχείριση δικαιωμάτων για την ομάδα "%s"';
+$lang['Manage permissions for user "%s"'] = 'Διαχείριση δικαιωμάτων για το χρήστη "%s"';
+$lang['Manage photo ranks'] = 'Διαχείριση κατάταξης φωτογραφιών';
+$lang['Manage tags'] = 'Διαχείριση ετικετών';
+$lang['Manage this set of %d photos'] = 'Διαχειριστείτε το σύνολο των %d φωτογραφιών';
+$lang['Manage'] = 'Διαχειριστείτε ';
+$lang['Manual order'] = 'Χειροκίνητη κατάταξη';
+$lang['Maximum height'] = 'Μέγιστο ύψος';
+$lang['Maximum width'] = 'Μέγιστο πλάτος';
+$lang['Members'] = 'Μέλη';
+$lang['Menu Management'] = 'Μενού';
+$lang['Merge selected tags'] = 'Συγχώνευση επιλεγμένων ετικετών';
+$lang['Merge tags'] = 'Συγχώνευση ετικετών';
+$lang['Metadata synchronization results'] = 'Αποτελέσματα συγχρονισμού Μεταδεδομένων';
+$lang['Metadata synchronized from file'] = 'Μεταδεδομένα συγχρονιζμένα από το αρχείο';
+$lang['Minimum privacy level'] = 'Ελάχιστο επίπεδο προστασίας προσωπικού απορρήτου.';
+$lang['Miscellaneous'] = 'Διάφορα';
+$lang['Missing Plugins'] = 'Λείπουν πρόσθετα';
+$lang['Missing a temporary folder'] = 'Λείπει ένας προσωρινός φάκελος';
+$lang['Modify information'] = 'Τροποποίηση πληροφορίας';
+$lang['Month'] = 'Μήνας';
+$lang['Move albums'] = 'Μετακίνηση λευκώματος';
+$lang['Move'] = 'Μετακίνηση ';
+$lang['Name'] = 'Όνομα';
+$lang['New Version'] = 'Νέα Έκδοση';
+$lang['New name'] = 'Νέο Όνομα';
+$lang['New parent album'] = 'Νέο γονικό λεύκωμα';
+$lang['New photos added'] = 'Νέες φωτογραφίες προστέθηκαν';
+$lang['New photos were added'] = 'Νέες φωτογραφίες προστέθηκαν';
+$lang['New tag'] = 'Νέα ετικέτα';
+$lang['include child albums'] = 'περιλαμβάνουν υπο-λευκώματα';
+$lang['jump to album'] = 'μετάβαση στο λεύκωμα';
+$lang['jump to photo'] = 'μετάβαση στη φωτογραφία';
+$lang['leave'] = 'αποχωρεί';
+$lang['manage album photos'] = 'διαχειριστείτε τα λευκώματα φωτογραφιών';
+$lang['manage sub-albums'] = 'διαχείριση υπο-λευκώματα ';
+$lang['manual order'] = 'χειροκίνητη κατάταξη';
+$lang['Hoverbox display'] = 'Εμφάνιση Hoverbox ';
+$lang['No destination tag selected'] = 'Δεν επιλέγχτηκε ετικέτα προορισμού';
+$lang['No display'] = 'καμία ένδειξη';
+$lang['No file was uploaded'] = 'Δεν έγινε μεταφόρτωση αρχείων';
+$lang['No mail to send.'] = 'Κανένα μήνυμα για αποστολή';
+$lang['No photo can be deleted'] = 'Καμιά φωτογραφία δεν μπορεί να διαγραφεί';
+$lang['No photo in the current set.'] = 'Καμιά φωτογραφία στο παρόν σύνολο';
+$lang['No photo in this album'] = 'Καμιά φωτογραφία σ\' αυτό το λεύκωμα';
+$lang['new'] = 'νέο';
+$lang['No photo selected, %d photos in current set'] = 'Δεν έχει επιλεγεί φωτογραφία , %d φωτογραφίες στο τρέχον σύνολο';
+$lang['No photo selected, no action possible.'] = 'Δεν έχει επιλεγεί φωτογραφία , δεν είναι δυνατή ενέργεια';
+$lang['No results'] = 'Δεν υπάρχουν αποτελέσματα';
+$lang['No user to send notifications by mail.'] = 'Κανένας χρήστης δεν θα ειδοποιηθεί μέσω ταχυδρομείου.';
+$lang['None'] = 'Κανένα';
+$lang['Notification'] = 'Ειδοποίηση';
+$lang['Number of comments per page'] = 'Αριθμός σχολίων ανά σελίδα';
+$lang['Number of downloads'] = 'Αριθμός μεταφορτώσεων';
+$lang['Number of rates'] = 'Αριθμός των ποσοστών';
+$lang['Number of thumbnails to create'] = 'Αριθμός των μικρογραφιών για δημιουργία';
+$lang['Obsolete Plugins'] = 'Παρωχημένα Προσθέτων';
+$lang['Only private albums are listed'] = 'Παρατίθενται μόνο ιδιωτικό λευκώματα';
+$lang['Operating system'] = 'Λειτουργικό σύστημα';
+$lang['Operation in progress'] = 'Επεξεργασία σε εξέλιξη.';
+$lang['Optimizations have been completed with some errors.'] = 'Βελτιστοποιήσεις ολοκληρώθηκαν με ορισμένα λάθη.';
+$lang['Optional URL keyword'] = 'URL Προαιρετικών λέξεων-κλειδιών';
+$lang['Options'] = 'Επιλογές';
+$lang['Order of menubar items has been updated successfully.'] = 'Διάταξη αντικειμένων της γραμμής μενού έχει ενημερωθεί με επιτυχία.';
+$lang['Original templates'] = 'Αρχικά πρότυπα';
+$lang['Orphan tags deleted'] = 'Ορφανές ετικέτες διαγράφτηκαν';
+$lang['Other plugins'] = 'Άλλα πρόσθετα διαθέσιμα';
+$lang['Other private albums'] = 'Άλλα ιδιωτικά λευκώματα';
+$lang['Overall'] = 'Επισκόπηση';
+$lang['Page banner'] = 'Σελίδα  banner';
+$lang['Page end'] = 'τέλος σελίδας';
+$lang['Pages seen'] = 'Σελίδες που έχετε δει';
+$lang['Parameter'] = 'Ρυθμίσεις';
+$lang['Parameters'] = 'Παράμετροι';
+$lang['Parent album'] = 'Μητρικό λεύκωμα';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Η επιβεβαίωση κωδικού λείπει. Επιβεβαιώστε τον επιλεγμένο κωδικό πρόσβασης';
+$lang['Password is missing. Please enter the password.'] = 'Κωδικός λείπει. Παρακαλώ εισάγετε τον κωδικό πρόσβασης.';
+$lang['Path'] = 'Διαδρομή';
+$lang['Pending Comments'] = 'Σχόλια Εν αναμονή ';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Ο Μονιμος Συνδεσμος %s έχει ήδη χρησιμοποιηθεί από το %s λεύκωμα. Διαγραψτε το την πρώτα από την ιστορία Μονιμων Συνδέσμων';
+$lang['Permalink %s is already used by album %s'] = 'Ο Μονιμος Συνδεσμος %s χρησιμοποιήτε ήδη από το %s λεύκωμα.';
+$lang['Permalink history'] = 'Ιστορικό Μονιμων Συνδέσμων';
+$lang['Permalink'] = 'Μόνιμος Σύνδεσμος';
+$lang['Permalinks'] = 'Μόνιμοι Σύνδεσμοι';
+$lang['Permission denied'] = 'Δεν έχετε δικαίωμα πρόσβασης';
+$lang['Permission granted thanks to a group'] = 'Η άδεια που χορηγείται χάρη σε μια ομάδα';
+$lang['Permission granted'] = 'Η άδεια εγκρίνετε';
+$lang['Permissions'] = 'Δικαιώματα';
+$lang['Photo Page'] = 'Σελίδα φωτογραφίας ';
+$lang['Photo Properties'] = 'Ιδιότητες φωτογραφίας';
+$lang['Photo informations updated'] = 'Οι πληροφορίες της φωτογραφίας ενημερώθηκαν';
+$lang['Photo name'] = 'Όνομα φωτογραφίας';
+$lang['Photo unreachable or no support'] = 'Φωτογραφία μη προσβάσημη ή μορφή δεν υποστηρίζεται';
+$lang['Photos generation in progress...'] = 'Η Δημιουργία φωτογραφιών είναι σε εξέλιξη ...';
+$lang['Photos'] = 'Φωτογραφίες';
+$lang['Piwigo Administration'] = 'Διαχείρηση Piwigo';
+$lang['Piwigo Announcements Newsletter'] = ' Ενημερωτικό Δελτίο Piwigo';
+$lang['Piwigo Update'] = 'Ενημέρωση Piwigo ';
+$lang['Piwigo Uploader'] = 'Μεταφορτωτής Piwigo';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo δεν μπορεί να ανακτήσει το αρχείο αναβάθμισης από τον διακομιστή';
+$lang['Piwigo configuration'] = 'Διαμόρφωση Piwigo ';
+$lang['Piwigo version'] = 'Έκδοση Piwigo ';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Παρακαλώ ελέγξτε τα δικαιώματα στον φάκελο "Πρόσθετα" και στους υπο-φακέλους (CHMOD).';
+$lang['Please wait...'] = 'Παρακαλώ περιμένετε ...';
+$lang['Plugin has been successfully copied'] = 'Το πρόσθετο έχει αντιγραφεί επιτυχώς';
+$lang['Plugin list'] = 'Λίστα Πρόσθετων';
+$lang['Plugins which need upgrade'] = 'Πρόσθετα υπό ενημέρωση';
+$lang['Plugins'] = 'Πρόσθετα';
+$lang['Position'] = 'Τοποθεσία';
+$lang['Predefined filter'] = 'Προκαθορισμένα φίλτρα';
+$lang['Preferences'] = 'Προτιμήσεις';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Ο χρόνος για να προετοιμάσετε τον κατάλογο των χρηστών που θα σταλεί μήνυμα είναι περιορισμένος. Άλλοι χρήστες δεν είναι στον κατάλογο.';
+$lang['Privacy level'] = 'Επίπεδο προστασίας προσωπικών δεδομένων';
+$lang['Private'] = 'Προσωπικά';
+$lang['Properties'] = 'Ιδιότητες';
+$lang['Public / Private'] = 'Δημόσιο / Ιδιωτικό';
+$lang['Public'] = 'Δημόσιο ';
+$lang['Purge compiled templates'] = 'Εκκαθάριση καταρτισμένων πρότυπων';
+$lang['Purge history detail'] = 'Εκκαθάριση λεπτομερειών ιστορικού';
+$lang['Purge history summary'] = 'Εκκαθάριση περίληψης ιστορικού';
+$lang['Purge never used notification feeds'] = 'Εκκαθάριση δεν έχει χρησιμοποιηθεί ποτέ κοινοποίηση τροφοδότησης';
+$lang['Purge search history'] = 'Εκκαθάριση ιστορικού αναζήτησης';
+$lang['no write access'] = 'Όχι πρόσβαση εγγραφής';
+$lang['none'] = 'κανένα';
+$lang['nothing'] = 'τίποτα';
+$lang['number of miniaturized photos'] = 'ο αριθμός των μικρογραφιών που δημιουργήθηκε';
+$lang['on the %d selected photos'] = 'στις %d επιλεγμένες φωτογραφίες';
+$lang['on'] = 'στο';
+$lang['only directories'] = 'Μόνο κατάλογοι';
+$lang['only perform a simulation (no change in database will be made)'] = 'μόνο εκτέλεση προσομοίωσης (τίποτα δεν θα αλλάξει στη βάση δεδομένων)';
+$lang['other'] = 'άλλα';
+$lang['overrides existing values with empty ones'] = 'παρακάμπτει τις υφιστάμενες τιμές με κενές';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader σημαίνει <em>Μεταφορτωτής Piwigo</em>. Από τον υπολογιστή σας, ο pLoader προετοιμάζει τις φωτογραφίες σας και τις μεταφέρει στο  γκαλερί φωτογραφιών του Piwigo σας.';
+$lang['photos added in the database'] = 'οι φωτογραφίες προστέθηκαν στη βάση δεδομένων';
+$lang['photos candidates for metadata synchronization'] = 'φωτογραφίες υποψήφιες για συγχρονισμό μετα-δεδομένων';
+$lang['photos deleted from the database'] = 'οι φωτογραφίες διαγράφτηκαν από τη βάση δεδομένων';
+$lang['photos informations synchronized with files metadata'] = 'οι πληροφορίες φωτογραφιών συγχρονίζονται με τα μεταδεδομένα αρχείων ';
+$lang['photos per page'] = 'φωτογραφίες ανά σελίδα';
+$lang['photos updated in the database'] = 'φωτογραφίες ενημερώθηκαν στη βάση δεδομένων';
+$lang['pixels'] = 'Εικονοστοιχία';
+$lang['private'] = 'προσωπικά';
+$lang['public'] = 'δημόσιο ';
+$lang['Privacy level set to "%s"'] = 'Επίπεδο προστασίας προσωπικών δεδομένων με "%s"';
+$lang['Purge sessions'] = 'Εκκαθάριση συνεδριών';
+$lang['Quick Local Synchronization'] = 'Γρήγορη Τοπικός Συγχρονισμός';
+$lang['Random photo'] = 'Τυχαία Φωτογραφία';
+$lang['Rate date'] = 'Ημερομηνία Αξιολόγησης';
+$lang['Rating by guests'] = 'Αξιολόγηση από τους επισκέπτες';
+$lang['Rating'] = 'Αξιολόγηση ';
+$lang['Read Piwigo Documentation'] = 'Διαβάστε την Τεκμηρίωση του Piwigo ';
+$lang['Refresh photo set'] = 'Ανανέωση σύνολου φωτογραφίας';
+$lang['randomly represented'] = 'τυχαία μικρογραφία λευκώματος';
+$lang['ranks'] = 'κατάταξη';
+$lang['Refresh'] = 'Ανανέωση';
+$lang['Reinitialize check integrity'] = 'Επανεκινηση εκ νέου έλεγχου ακεραιότητας';
+$lang['Reject'] = 'Απόρριψη';
+$lang['Released on'] = 'Κυκλοφόρησε στις';
+$lang['Remote'] = 'Απομεμακρυσμένος';
+$lang['Remove all filters'] = 'Κατάργηση όλων των φίλτρων';
+$lang['Remove from caddie'] = 'Αφαιρέστε από το καλάθι';
+$lang['Repair and optimize database'] = 'Επισκευή και βελτιστοποίηση της βάσης δεδομένων';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Αντικατάσταση των αρχικών προτύπων με προσαρμοσμένα πρότυπα από τον υπο-κατάλογο πρότυπων-επεκτάσεων';
+$lang['Replacers (customized templates)'] = 'Υποκατάστατα (προσαρμοσμένα πρότυπα)';
+$lang['Representant'] = 'Μικρογραφία Λευκώματος';
+$lang['Representation of albums'] = 'Μικρογραφία λευκώματος';
+$lang['Representative'] = 'Μικρογραφία λευκώματος';
+$lang['Represents'] = 'Είναι μικρογραφία για το';
+$lang['Reset ignored updates'] = 'Επαναφορά αγνοούμενων ενημερώσεων';
+$lang['Resize'] = 'Αλλαγή μεγέθους';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Επαναφορά προεπιλεγμένης ρύθμισης. Θα χάσετε τις ρυθμίσεις των πρόσθετων σας!';
+$lang['Restore'] = 'Επαναφορά';
+$lang['Save Settings'] = 'Αποθήκευση ρυθμίσεων';
+$lang['Save Template Directory'] = 'Αποθήκευση καταλόγου προτύπων';
+$lang['Save order'] = 'Αποθήκευση διάταξης';
+$lang['Save to permalink history'] = 'Αποθήκευση στην ιστορία των Μονιμων Συνδέσμων';
+$lang['Search for new images in the directories'] = 'Αναζήτηση για νέες εικόνες στους καταλόγους';
+$lang['Searching...'] = 'Αναζήτηση ...';
+$lang['Section'] = 'Τμήμα';
+$lang['See you soon,'] = 'Τα λέμε σύντομα,';
+$lang['See you soon.'] = 'Τα λέμε σύντομα.';
+$lang['Select at least one album'] = 'Επιλέξτε τουλάχιστον ένα λεύκωμα';
+$lang['Select at least one comment'] = 'Επιλέξτε τουλάχιστον ένα σχόλιο';
+$lang['Select at least one photo'] = 'Επιλέξτε τουλάχιστον μία φωτογραφία';
+$lang['Select at least one user'] = 'Επιλέξτε τουλάχιστον έναν χρήστη';
+$lang['Select at least two tags for merging'] = 'Επιλέξτε τουλάχιστον δύο ετικέτες για συγχώνευση';
+$lang['Select recipients'] = 'Επιλογή παραληπτών';
+$lang['Select the destination tag'] = 'Επιλέξτε την ετικέτα προορισμού';
+$lang['Select:'] = 'Επιλέξτε:';
+$lang['Selection'] = 'Επιλογή';
+$lang['Send an information email to group members'] = 'Στείλτε ένα e-mail με πληροφορίες στα μέλη της ομάδας';
+$lang['Send connection settings by email'] = 'Αποστολή ρυθμίσεων σύνδεσης μέσω ηλεκτρονικού ταχυδρομείου';
+$lang['Send mail as'] = 'Αποστολή μηνύματος ως';
+$lang['Send mail on HTML format'] = 'Αποστολή ηλεκτρονικού ταχυδρομείου σε μορφή HTML';
+$lang['Send mail to users'] = 'Αποστολή ηλεκτρονικού ταχυδρομείου προς τους χρήστες';
+$lang['Send'] = 'Αποστολή';
+$lang['Set as default language for unregistered and new users'] = 'Ορισμός ως προεπιλεγμένη γλώσσα για τους μη καταγεγραμμένους και τους νέους χρήστες';
+$lang['Set as default theme for unregistered and new users'] = 'Ορισμός ως προεπιλεγμένο θέμα για τους μη καταγεγραμμένους και τους νέους χρήστες';
+$lang['Switch to clear or dark colors for administration'] = 'Αλλαγή σε σαφή ή σκούρα χρώματα για τη διαχείρηση';
+$lang['Synchronize metadata'] = 'Συγχρονίστε τα μεταδεδομένα';
+$lang['Synchronize'] = 'Συγχρονίστε ';
+$lang['Tag "%s" already exists'] = 'Η ετικέτα "%s" υπάρχει ήδη';
+$lang['Tag "%s" was added'] = 'Η ετικέτα "%s" έχει προστεθεί';
+$lang['Tag selection'] = 'Επιλογή Ετικετών';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Ετικέτες <em>%s</em> συγχωνεύθηκαν σε ετικέτα <em>%s</em>';
+$lang['Templates configuration has been recorded.'] = 'Η Διαμόρφωση Προτύπων έχει καταγραφεί.';
+$lang['Templates'] = 'Πρότυπα';
+$lang['The %d following tags were deleted'] = 'Οι ακόλουθες ετικέτες %d έχουν διαγραφεί';
+$lang['The anomaly will be ignored until next application version'] = 'Η ανωμαλία αυτή θα πρέπει να αγνοηθεί μέχρι την επόμενη έκδοση της εφαρμογής';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Το αρχείο ή ο κατάλογος δεν μπορεί να προσπελαστεί (είτε δεν υπάρχει ή η πρόσβαση απορρίφθηκε)';
+$lang['The following tag was deleted'] = 'Η παρακάτω ετικέτα διεγράφη';
+$lang['The gallery URL is not valid.'] = 'Η διεύθυνση URL της γκαλερί δεν είναι έγκυρη.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Το όνομα της ομάδας δεν πρέπει να περιέχει " ή \' ή να είναι άδειο.';
+$lang['The name of an album must not be empty'] = 'Το όνομα του άλμπουμ δεν πρέπει να είναι κενό';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Το όνομα των αρχείων και καταλόγων πρέπει να περιλαμβάνει μόνο γράμματα, αριθμούς, "-", "_" ή "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Ο αριθμός των σχολίων σε μια σελίδα, πρέπει να είναι μεταξύ 5 και 50 που περιλαμβάνονται.';
+$lang['The original image quality must be a number between %d and %d'] = 'Η αρχική ποιότητα της εικόνας πρέπει να είναι ένας αριθμός μεταξύ %d και %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Το αρχικό μέγιστο ύψος πρέπει να είναι ένας αριθμός μεταξύ %d και %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Το αρχικό μέγιστο πλάτος πρέπει να είναι ένας αριθμός μεταξύ %d και %d';
+$lang['reduce to single existing albums'] = 'ελλατώστε τα υφιστάμενα σε απλά λευκώματα';
+$lang['registration date'] = 'ημερομηνία καταχώρησης';
+$lang['remove author'] = 'αφαιρέστε τον δημιουργό';
+$lang['remove creation date'] = 'αφαιρέσετε την ημερομηνία δημιουργίας';
+$lang['remove tags'] = 'αφαιρέσετε ετικέτες';
+$lang['remove this filter'] = 'αφαιρέσετε αυτό το φίλτρο';
+$lang['remove title'] = 'αφαιρέστε τον τίτλο';
+$lang['selection'] = 'επιλογή';
+$lang['synchronize files metadata with database photos informations'] = 'συγχρονίστε βάσης δεδομένων φωτογραφιών με τα αρχείων μεταδεδομένων';
+$lang['synchronize files structure with database'] = 'συγχρονίστε τη δομή αρχείων με τη βάση δεδομένων';
+$lang['target'] = 'στόχος';
+$lang['test this remote site'] = 'ελέγξετε τον απομακρυσμένο τόπο';
+$lang['test'] = 'έλεγχος';
+$lang['the forum'] = 'το φόρουμ';
+$lang['%d day'] = '%d ημέρα';
+$lang['%d days'] = '%d ημέρες';
+$lang['%d hour'] = '%d ώρα';
+$lang['%d hours'] = '%d ώρες';
+$lang['%d minute'] = '%d λεπτό';
+$lang['%d minutes'] = '%d λεπτά';
+$lang['%d month'] = '%d μήνας';
+$lang['%d months'] = '%d μήνες';
+$lang['%d second'] = '%d δευτερόλεπτο';
+$lang['%d seconds'] = '%d δευτερόλεπτα';
+$lang['%d year'] = '%d έτος';
+$lang['%d years'] = '%d χρόνια';
+$lang['%s ago'] = '%s πριν';
+$lang['%s in the future'] = '%s στο μέλλον';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u χρήστες έχουν αυτόματη άδεια επειδή ανήκουν σε μια ομάδα που της έχει χορηγηθεί.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Η εφαρμογή Piwigo για το Android</em> που παρέχει τη δυνατότητα να συνδεθείτε με τη γκαλερί Piwigo σας από το κινητό σας Android ή τη ταμπλέτα σας και δημιουργούν μερικά άλμπουμ και ανεβάζουν πολλές φωτογραφίες ταυτόχρονα.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Η εφαρμογή Piwigo για το iOS</em> που παρέχει τη δυνατότητα να συνδεθείτε με τη γκαλερί Piwigo σας από το iPhone, iPad ή το iPod Touch, δημιουργούν μερικά άλμπουμ και ανεβάζουν πολλές φωτογραφίες ταυτόχρονα.';
+$lang['A locked gallery is only visible to administrators'] = 'Μια κλειδωμένη γκαλερί είναι ορατή μόνο στους διαχειριστές';
+$lang['Added by %s'] = 'Προστέθηκε από %s';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom είναι ένα λογισμικό φωτογραφίας σχεδιασμένο για να διαχειρίζεται μεγάλες ποσότητες ψηφιακών εικόνων και κάνει τη δουλειά του post production.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Το Aperture είναι ένα ισχυρό εργαλείο για να βελτιώσετε τις εικόνες και να διαχειρίζεστε τεράστιες βιβλιοθήκες σε Mac ..';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Το Aperture είναι σχεδιασμένο για επαγγελματίες φωτογράφους με την απλότητα του iPhoto.';
+$lang['Applications'] = 'Εφαρμογές';
+$lang['Apply watermark if height is bigger than'] = 'Εφαρμόστε υδατογράφημα, εάν το ύψος είναι μεγαλύτερο από';
+$lang['Apply watermark if width is bigger than'] = 'Εφαρμόστε υδατογράφημα, εάν το πλάτος είναι μεγαλύτερο από';
+$lang['Automatic sort order'] = 'Αυτόματη σειρά ταξινόμησης';
+$lang['Available on'] = 'διαθέσιμο σε';
+$lang['Available versions for'] = 'Διαθέσιμες εκδόσεις για';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Από προεπιλογή, το κέντρο του ενδιαφέροντος βρίσκεται στη μέση της φωτογραφίας.';
+$lang['Cancel'] = 'Ακύρωση';
+$lang['Center of interest'] = 'Κέντρο του ενδιαφέροντος';
+$lang['Delete multiple size images'] = 'Διαγράφει εικόνες πολλαπλάσιου μεγέθους';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Τα χαρακτηριστικά του περιλαμβάνει είναι περιήγηση γκαλερί, δημιουργία άλμπουμ και ανέβασμα φωτογραφιών.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Για μεγέθη φωτογραφίας με αποκοπή, όπως "Τετράγωνο", το Piwigo θα καταβάλει κάθε δυνατή προσπάθεια για να συμπεριλάβει το κέντρο του ενδιαφέροντος.';
+$lang['Gallery unlocked'] = 'Γκαλερί ξεκλείδωτη';
+$lang['Generate multiple size images'] = 'Δημιουργεί εικόνες πολλαπλάσιου μεγέθους';
+$lang['Groups and users'] = 'Ομάδες και χρήστες';
+$lang['List'] = 'Λίστα';
+$lang['Move to album'] = 'Μετακίνηση σε λεύκωμα ';
+$lang['Multiple Size'] = 'Πολλαπλά μεγέθη';
+$lang['No group is permitted to see this private album'] = 'Καμία ομάδα δεν επιτρέπεται να δει αυτό το ιδιωτικό άλμπουμ';
+$lang['Not cropped correctly?'] = 'Δεν έχει περικοπεί σωστά;';
+$lang['Notify administrators when a comment is'] = 'Ειδοποιεί διαχειριστές όταν ένα σχόλιο είναι';
+$lang['Numeric identifier : %d'] = 'Αριθμητικός αναγνωριστικός κωδικός: %d';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Στο Linux σας, απλά εγκαταστήστε το Shotwell με τον διαχειριστή πακέτων σας και ενεργοποιήστε την επιλογή στο Piwigo.';
+$lang['Opacity'] = 'Αδιαφάνεια';
+$lang['Original Size'] = 'Αρχικό Μέγεθος';
+$lang['Original file : %s'] = 'Αρχικό αρχείο:%s';
+$lang['Permission granted for groups'] = 'Η άδεια χορηγείται για τις ομάδες';
+$lang['Permission granted for users'] = 'Η άδεια χορηγείται για τους χρήστες';
+$lang['Permission management'] = 'Διαχείριση αδειών';
+$lang['Photo sizes with crop'] = 'Μέγεθος φωτογραφίας με την αποκοπή';
+$lang['Piwigo Publish plugin for Lightroom'] = 'πρόσθετο Piwigo για Δημοσίευση από το Lightroom';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin για το Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin για το iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo για Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo για το iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plugin για το Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish plugin για το digiKam';
+$lang['Posted %s on %s'] = 'Το %s δημοσιεύτηκε στο %s';
+$lang['Rated %d times, score : %.2f'] = 'Εχει βαθμοόγιθεί %d φορές, σκορ: %.2f';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'Το ReGalAndroid (RemoteGallery πελάτης για το Android), είναι ένας πελέτης ανοιχτού κώδικα του Piwigo (GPL v3) για την πλατφόρμα Android.';
+$lang['Resize after upload'] = 'Αλλαγή μεγέθους μετά την αποστολή';
+$lang['Save manual order'] = 'Αποθήκευση χειροκίνητης σειράς ταξινόμησης';
+$lang['Save visits in history for'] = 'Αποθήκευση επισκέψεων στο ιστορικό για την';
+$lang['Select a file'] = 'Επιλέξτε ένα αρχείο';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Επιλέξτε μια ζώνη με το ποντίκι σας να ορίσετε ένα νέο κέντρο του ενδιαφέροντος.';
+$lang['Select groups...'] = 'Επιλέξτε τις ομάδες ...';
+$lang['Select users...'] = 'Επιλέξτε τους χρήστες...';
+$lang['Sharpen'] = 'Διαύγεια  ';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell είναι ένας οργανωτής ανοιχτού κώδικα ψηφιακών φωτογραφιών και τρέχει σε Linux. Είναι ο προεπιλεγμένος δαιχειριστής φωτογραφιών στο Ubuntu και στο Fedora.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΕΙΝΑΙ ΤΩΡΑ ΜΕΡΟΣ ΤΟΥ ΠΗΡΥΝΑ ΤΟΥ PIWIGO! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ!';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Το  Piwigo export plugin σας επιτρέπει να δημιουργήσετε άλμπουμ και να εξαγετε φωτογραφίες.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Το πρόσθετο Piwigo  publish Plug-in σας επιτρέπει να εξάγετε και να συγχρονίσετε φωτογραφίες απευθείας από το Lightroom στη γκαλερί φωτογραφιών σας στο Piwigo.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Το κέντρο του ενδιαφέροντος είναι η πιο σημαντική ζώνη στη φωτογραφία.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Το όνομα μόνιμου συνδέσμου πρέπει να αποτελείται απο  a-z, A-Z, 0-9, "-", "_" or "/". Δεν πρέπει να είναι αριθμητικό ή να ξεκινά με έναν αριθμό που ακολουθείται από "-"';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Το αρχείο υπερβαίνει το MAX_FILE_SIZE directive που έχει οριστεί στη φόρμα HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Το αρχείο υπερβαίνει την οδηγία upload_max_filesize στο php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Το αρχείο που μεταφορτώθηκε δεν ολοκλήρωσε την αποστολή';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Το αρχείο υπερβαίνει την οδηγία  post_max_size στο php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Η έκδοση του %s[%s] που εγκαταστάθηκε δεν είναι συμβατή με την έκδοση που απαιτείται [%s]';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Ο webmaster σας έκανε εγγραφή για την παραλαβή κοινοποιήσεων μέσω ηλεκρονικού ταχυδρομείου.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Ο webmaster σας έχει διαγράψει από την παραλαβή κοινοποιήσεων μέσω ταχυδρομείου.';
+$lang['The whole page'] = 'Ολόκληρη η σελίδα';
+$lang['The whole set'] = 'Το σύνολο';
+$lang['Theme has been successfully installed'] = 'Το Θέμα έχει εγκατασταθεί με επιτυχία';
+$lang['Themes which need upgrade'] = 'Τα Θέματα που χρειάζετε να αναβαθμίσετε';
+$lang['Themes'] = 'Θέματα ';
+$lang['There is no available subscribers to mail.'] = 'Δεν υπάρχουν συνδρομητές που πρόκειται να ειδοποιηθούν μέσω ταχυδρομείου.';
+$lang['There is no group in this gallery.'] = 'Δεν υπάρχει καμία ομάδα σε αυτή τη συλλογή.';
+$lang['There is no other language available.'] = 'Δεν υπάρχει άλλη διαθέσιμη γλώσσα.';
+$lang['There is no other plugin available.'] = 'Δεν υπάρχει άλλο διαθέσιμο πρόσθετο';
+$lang['There is no other theme available.'] = 'Δεν υπάρχει διαθέσιμο άλλο θέμα.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Αυτό το λεύκωμα περιέχει %d φωτογραφίες, προστέθηκε μεταξύ  %s και%s.';
+$lang['This album contains %d photos, added on %s.'] = 'Αυτό το λεύκωμα περιέχει %d φωτογραφίες, προστέθηκε στις %s.';
+$lang['This album contains no photo.'] = 'Αυτό το λεύκωμα δεν περιέχει καμία φωτογραφία.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Αυτή είναι μια σημαντική ενημέρωση, με <a href="%s">νέα συναρπαστικά χαρακτηριστικά</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Αυτή είναι μια μικρή ενημέρωση, με μόνο διορθώσεις σφαλμάτων.';
+$lang['This name is already used by another group.'] = 'Αυτό το όνομα χρησιμοποιείται ήδη από άλλη ομάδα.';
+$lang['This site already exists'] = 'Αυτός ο δικτυακός τόπος υπάρχει ήδη';
+$lang['This theme was not designed to be directly activated'] = 'Αυτό το θέμα δεν έχει σχεδιαστεί για να ενεργοποιηθεί άμεσα';
+$lang['Thumbnail'] = 'Μικρογραφία';
+$lang['Thumbnails generation in progress...'] = 'Δημιουργία Μικρογραφιών σε εξέλιξη ...';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Ο χρόνος για την αποστολή αλληλογραφίας είναι περιορισμένος. Άλλα  μηνύματα έχουν ήδη παραληφθεί.';
+$lang['Time'] = 'Χρίνος';
+$lang['Title'] = 'τίτλος';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Για να εξάγετε τις φωτογραφίες σας από το digiKam στο Piwigo, απλά εγκαταστήστε digiKam και το Kipi-plugins.';
+$lang['To send ?'] = 'Να σταλεί;';
+$lang['To subscribe'] = 'Για να εγγραφείτε';
+$lang['To unsubscribe'] = 'Για να διαγραφείτε';
+$lang['Toggle \'default group\' property'] = 'Αντίστροφη ιδιότητας "προεπιλεγμένη ομάδα" ';
+$lang['Tools'] = 'Εργαλεία';
+$lang['Two updates are available'] = 'Δύο ενημερώσεις είναι διαθέσιμες';
+$lang['Type here the author name'] = 'Πληκτρολογήστε εδώ το όνομα του συντάκτη';
+$lang['Type here the title'] = 'Πληκτρολογήστε εδώ τον τίτλο';
+$lang['Type in a search term'] = 'Πληκτρολογήστε έναν όρο αναζήτησης';
+$lang['Unable to check for upgrade.'] = 'Αδύνατον να ελέγξει για αναβάθμιση.';
+$lang['Unable to dump database.'] = 'Δεν είναι δυνατή η εξαγωγή της βάσης δεδομένων.';
+$lang['Uncheck all'] = 'Αποεπιλέξτε όλα';
+$lang['Uninstalled Plugins'] = 'Απεγκατεστημένα πρόσθετα';
+$lang['Uninstall'] = 'Απεγκατάσταση';
+$lang['Unknown upload error'] = 'Άγνωστο σφάλμα αποστολής';
+$lang['Unlock gallery'] = 'Ξεκλειδώστε γκαλερί';
+$lang['Unlocked'] = 'Ξεκλειδωμένο';
+$lang['Unsubscribe from notification by mail'] = 'Διαγραφή από την κοινοποίηση μέσω ταχυδρομείου';
+$lang['Unsubscribed'] = 'Χωρίς συνδρομή';
+$lang['Update All'] = 'Ενημέρωση σε όλα';
+$lang['Update Complete'] = 'Η Ενημέρωση ολοκληρώθηκε';
+$lang['Update albums informations'] = 'Ενημέρωση πληροφοριών λευκώματος';
+$lang['Update in progress... Please wait.'] = 'Ενημέρωση σε εξέλιξη ... Παρακαλώ περιμένετε.';
+$lang['Update photos information'] = 'Ενημέρωση πληροφοριών φωτογραφίας';
+$lang['Update to Piwigo %s'] = 'Ενημέρωση σε Piwigo %s';
+$lang['Updates'] = 'Ενημερώσεις';
+$lang['Uploaded Photos'] = 'Μτεταφορτωμλενες φωτογραφίες';
+$lang['Upload'] = 'Ανεβάστε';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Χρησιμοποιήστε τηn προεπιλεγμένη σειρά ταξινόμησης φωτογραφιών (που ορίζεται στο αρχείο ρυθμίσεων)';
+$lang['Used metadata'] = 'Μεταδεδομένα που χρησιμοποιήθηκαν';
+$lang['User "%s" created with "%s" like password'] = 'Ο χρήστης "%s" με  "%s" ως κωδικό πρόσβασης';
+$lang['User %s [%s] added.'] = 'Ο χρήστης  %s[%s] προστέθηκε';
+$lang['User %s [%s] was added to the subscription list.'] = 'Ο χρήστης  %s[%s] προστέθηκε στην λίστα συνδρομητών.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Ο χρήστης  %s[%s] δεν προστέθηκε στην λίστα συνδρομητών.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Ο χρήστης  %s[%s] δεν αφαιρέθηκε από τη λίστα εγγραφής.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Ο χρήστης  %s[%s] δεν αφαιρέθηκε από τη λίστα εγγραφής.';
+$lang['User comments validation'] = 'Επικύρωση σχολίων χρήστη';
+$lang['User list'] = 'Λίστα Χρηστών';
+$lang['User status'] = 'Κατάσταση χρήστη';
+$lang['User'] = 'Χρήστης';
+$lang['Users'] = 'Χρήστες';
+$lang['Validate'] = 'Επικύρωση';
+$lang['Validation'] = 'Επικύρωση';
+$lang['Version'] = 'Έκδοση';
+$lang['Virtual Links'] = 'Εικονικοί Σύνδεσμοι';
+$lang['Virtual album added'] = 'Προστέθηκε Εικονικό λεύκωμα';
+$lang['Virtual album deleted'] = 'Διαγράφθηκε Εικονικό λεύκωμα';
+$lang['Virtual album name'] = 'Όνομα Εικονικού λευκώματος';
+$lang['Virtual album'] = 'Εικονικό λεύκωμα';
+$lang['Virtual albums to move'] = 'Το Εικονικό λεύκωμα μετακινήθηκε';
+$lang['Visit Gallery'] = 'Επισκεφθείτε τη γκαλερί';
+$lang['Visit Piwigo project website'] = 'Επισκεφτείτε την ιστοσελίδα του έργου Piwigo';
+$lang['Visit language site'] = 'Επισκεφθείτε την ιστοσελίδα γλώσσας';
+$lang['Visit plugin site'] = 'Επισκεφτείτε την ιστοσελίδα των πρόσθετων';
+$lang['Visit theme site'] = 'Επισκεφθείτε την ιστοσελίδα θέμα';
+$lang['Visited %d times'] = 'Έχει επισκευτεί %d φορές';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ΠΡΟΣΟΧΗ! Αυτό το πρόσθετο δεν φαίνεται να είναι συμβατό με αυτή την έκδοση του Piwigo.';
+$lang['Waiting'] = 'Εν αναμονή';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Προειδοποίηση: εγγραφή ή διαγραφής θα στείλει μηνύματα προς τους χρήστες';
+$lang['Watermark'] = 'Υδατογράφημα';
+$lang['Web Form'] = 'Φόρμα Επικοινωνίας';
+$lang['Webmaster cannot be deleted'] = 'Ο Webmaster δεν μπορεί να διαγραφεί';
+$lang['Webmaster status is required.'] = 'Απαιτείται η κατάσταση Webmaster.';
+$lang['Week starts on'] = 'Αρχή εβδομάδας';
+$lang['Who can see these photos?'] = 'Ποιος μπορεί να δει αυτές τις φωτογραφίες;';
+$lang['Who can see this photo?'] = 'Ποιος μπορεί να δει αυτή τη φωτογραφία';
+$lang['Width'] = 'Πλάτος';
+$lang['With blank value, gallery title will be used'] = 'Εάν κενό, ο τίτλος γκαλερί θα χρησιμοποιηθεί';
+$lang['With no album'] = 'Με κανένα άλμπουμ';
+$lang['With no tag'] = 'Με καμία ετικέτα';
+$lang['With no virtual album'] = 'Χωρίς εικονικό λεύκωμα';
+$lang['X Position'] = 'Θέση Χ';
+$lang['X Repeat'] = 'Επανάληψη Χ';
+$lang['Y Position'] = 'Θέση Υ';
+$lang['Year'] = 'Χρονιά';
+$lang['You are running on development sources, no check possible.'] = 'Τρέχετε σε πηγές ανάπτυξης, δεν είναι δυνατόν να ελέγξετε.';
+$lang['You are running the latest version of Piwigo.'] = 'Τρέχετε τελευταία έκδοση του Piwigo.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Χρησιμοποιείς τον Flash uploader. Προβλήματα; Προσπάθησε το <a href="%s">ανέβασμα μέσω φυλλομετρητή</a>.';
+$lang['You can activate only one mobile theme.'] = 'Μπορείτε να ενεργοποιήσετε μόνο ένα κινητό θέμα.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Μπορείτε να ενημερώσετε σε Piwigo%, άμεσα, χωρίς την αναβάθμιση σε Piwigo %s (συνιστάται).';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Δεν μπορείτε να ορίσετε μια προεπιλογή σειράς φωτογραφιών, επειδή έχετε μια προσαρμοσμένη ρύθμιση στην τοπική διαμόρφωση σας.';
+$lang['You cannot delete your account'] = 'Δεν μπορείτε να διαγράψετε το λογαριασμό σας';
+$lang['You cannot move an album in its own sub album'] = 'Δεν μπορείτε να μετακινήσετε ένα λεύκωμα στο δικό του υπο-λεύκωμα';
+$lang['You have %d orphan tags: %s.'] = 'Έχετε %d ορφανές ετικέτες : %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Έχετε καθορίσε  <i>$conf[\'order_by\']</i>  στο τοπικό αρχείο ρυθμίσεων σας, αυτή η παράμετρος είναι παρωχημένη, παρακαλούμε να την αφαιρέσετε ή να το μετονομάσετε σε <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Έχετε εγγραφεί για να λαμβάνετε ειδοποιήσεις με e-mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Έχετε διαγραφεί από την κοινοποίηση μέσω ταχυδρομείου.';
+$lang['You might go to plugin list to install and activate it.'] = 'Πηγαίνετε στον κατάλογο πρόσθετων για να το εγκαταστήσετε και να το ενεργοποιήσετε.';
+$lang['You need to confirm deletion'] = 'Πρέπει να επιβεβαιώσετε τη διαγραφή';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Θα πρέπει να αναβαθμίσετε το σύστημά σας να επωφεληθελιται πλήρως από την εφαρμογή, διαφορετικά η εφαρμογή δεν θα μπορούσε να λειτουργήσει σωστά, ή και καθόλου';
+$lang['Your configuration settings are saved'] = 'Οι ρυθμίσεις σας έχουν αποθηκευτεί';
+$lang['Zoom'] = 'Μεγένθυνση';
+$lang['[%s] Visit album %s'] = '[%s] Επίσκεψη άλμπουμ %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Προβλήματα ή ερωτήσεις';
+$lang['add a new watermark'] = 'προσθέσετε ένα νέο υδατογράφημα';
+$lang['administrators'] = 'διαχειριστές';
+$lang['any visitor can see this album'] = 'οποιοσδήποτε επισκέπτης μπορεί να δει αυτό το λεύκωμα';
+$lang['apply automatic sort order'] = 'Εφαρμόζει αυτόματη σειρά ταξινόμησης';
+$lang['bottom left corner'] = 'κάτω αριστερή γωνία';
+$lang['bottom right corner'] = 'κάτω δεξιά γωνία';
+$lang['cancel manual order'] = 'Ακύρωση χειροκίνητης σειράς ταξινόμησης';
+$lang['custom'] = 'Προσαρμογή';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'Το digiKam είναι μια προηγμένη διαχείριση ψηφιακών φωτογραφιών σε ελεύθερο λογισμικό για Linux, Windows και MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'Το digiKam έχει σχεδιαστεί για φωτογράφους που θέλουν να παρακολουθούν, διαχειρίζονται, επεξεργαζονται, βελτιώνουν, οργανώνουν, προσθέτουν ετικέτες και διαμοιράζονται φωτογραφίες.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Το iPhoto είναι ο προεπιλεγμένος διαχειρηστής φωτογραφίας στο MacOSX. Το export plugin for iPhoto του Piwigo σας επιτρέπουν να δημιουργήσετε νέο άλμπουμ και να εξάγετε τις φωτογραφίες σας απευθείας από το iPhoto στη γκαλερί φωτογραφιών σας στο Piwigo .';
+$lang['include photos with lower privacy level'] = 'περιλαμβάνει φωτογραφίες με χαμηλότερο επίπεδο προστασίας της ιδιωτικότητας';
+$lang['middle'] = 'μέση';
+$lang['modified'] = 'τροποποιημένα';
+$lang['pending validation'] = 'εν αναμονή επικύρωσης';
+$lang['registered users'] = 'εγγεγραμμένοι χρήστες';
+$lang['simple visitors'] = 'απλοί επισκέπτες';
+$lang['the wiki'] = 'το wiki';
+$lang['top left corner'] = 'πάνω αριστερή γωνία';
+$lang['top right corner'] = 'πάνω δεξιά γωνία';
+$lang['total time'] = 'συνολικός χρόνος';
+$lang['unit mode'] = 'απλή κατάσταση';
+$lang['unknown'] = 'άγνωστο';
+$lang['unset'] = 'μηδένισμα';
+$lang['update the database from files'] = 'ενημέρωση της βάσης δεδομένων με τα αρχεία';
+$lang['user "%s" added'] = 'Ο χρήστης "%s" προστέθηκε';
+$lang['user_status_admin'] = 'Διαχειριστής';
+$lang['user_status_generic'] = 'Γενικός';
+$lang['user_status_guest'] = 'Επισκέπτης';
+$lang['user_status_normal'] = 'Χρήστης';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'οι επισκέπτες πρέπει να συνδεθεθούν και να έχουν τα κατάλληλα δικαιώματα για να δουν αυτό το λεύκωμα';
+$lang['width must be a number superior to'] = 'πλάτος πρέπει να είναι ένας αριθμός μεγαλύτερο από ό, τι';
+$lang['wrong filename'] = 'λανθασμένο όνομα αρχείου';
+$lang['%d physicals'] = '%d πραγματικά';
+$lang['%d week'] = '%d εβδομάδα';
+$lang['%d weeks'] = '%d εβδομάδες';
+$lang['Edit photo'] = 'Επεξεργασία φωτογραφίας';
+$lang['create a new site'] = 'δημιουργία νέας ιστοσελίδας';
+$lang['No order field selected'] = 'Δεν επιλέχτηκε διατεταγμένο πεδίο';
+$lang['Duplicate selected tags'] = 'Επιλεγμένες ετικέτες εις διπλούν ';
+$lang['Name of the duplicate'] = 'Όνομα του αντιγράφου';
+$lang['Source tag'] = 'Ετικέτα Πηγή';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Η Ετικέτα "%s" είναι πλέον ένα αντίγραφο του "%s"';
+$lang['Portrait'] = 'Οριζόντια';
+$lang['Panorama'] = 'Πανοραμικό';
+$lang['Minimum width'] = 'Ελάχιστο πλάτος';
+$lang['Minimum height'] = 'Ελάχιστο ύψος';
+$lang['Landscape'] = 'Κατακόρυφα';
+$lang['View in gallery'] = 'Δείτε στην γκαλερί';
+$lang['Manage photos'] = 'Διαχειριστείτε τις φωτογραφίες';
+$lang['Number of albums per page'] = 'Αριθμός λευκωμάτων ανά σελίδα';
+$lang['Ratio'] = 'Αναλογία';
+$lang['between %d and %d pixels'] = 'μεταξύ %d και %d πίξελ';
+$lang['between %.2f and %.2f'] = 'μεταξύ %.2f και %.2f';
+$lang['Type here the name of the new group'] = 'Πληκτρολογήστε εδώ το όνομα της νέας ομάδας';
+$lang['This group will be unset to default'] = 'Η ομάδα αυτή θα φύγει από τις προεπιλεγμένες';
+$lang['This group will be set to default'] = 'Η ομάδα αυτή θα οριστεί ως προεπιλογή';
+$lang['Rename'] = 'Μετονομασία';
+$lang['Please select at least two groups'] = 'Παρακαλώ επιλέξτε τουλάχιστον δύο ομάδες';
+$lang['No members to manage'] = 'Κανένα μέλος για διαχείριση';
+$lang['No group selected, no action possible.'] = 'Καμία ομάδα δεν επιλέχτηκε, δεν είναι δυνατή η συνέχεια.';
+$lang['Merge selected groups'] = 'Συγχώνευση επιλεγμένων ομάδων';
+$lang['Duplicate'] = 'Διπλότυπο';
+$lang['Manage the members'] = 'Διαχειριστείτε τα μέλη';
+$lang['Purge user cache'] = 'Εκκαθάριση cache χρήστη';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Το μέγεθος της εικόνας θα μικρίνει κατα  %dx%d pixels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Η Αλλαγή μεγέθους μετά τη μεταφόρτωση έχει απενεργοποιηθεί λόγω της χρήσης της βιβλιοθήκης γραφικών GD ';
+$lang['Select at least one tag'] = 'Επιλέξτε τουλάχιστον μια ετικέτα. ';
+$lang['Mail theme'] = 'Θέμα Mail';
+$lang['General'] = 'Γενικά';
+$lang['Basic settings'] = 'Βασικές ρυθμίσεις';
+?>
Index: /tags/2.6.0RC1/language/el_GR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/el_GR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Ελληνικά [GR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=508
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Ελληνικά";
+$lang_info['country'] = "Ελλάδα";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "el";
+$lang_info['zero_plural'] = true;
+
+
+$lang['useful when password forgotten'] = "χρήσιμο σε περίπτωση απώλειας του κωδικού";
+$lang['Quick search'] = "Γρήγορη αναζήτηση";
+$lang['Connected user: %s'] = "Συνδεδεμένοι χρήστες: %s";
+$lang['IP: %s'] = "IP: %s";
+$lang['Browser: %s'] = "Φυλλομετρητής: %s";
+$lang['Author: %s'] = "Συντάκτης: %s";
+$lang['Comment: %s'] = "Σχόλιο: %s";
+$lang['Comment by %s'] = "Σχόλιο από %s";
+$lang['User: %s'] = "Χρήστης: %s";
+$lang['Email: %s'] = "Email: %s";
+$lang['Admin: %s'] = "Διαχειριστής: %s";
+$lang['Registration of %s'] = "Εγγραφή του %s";
+$lang['Album: %s'] = "Λεύκωμα: %s";
+$lang['Creation date'] = "Ημερομηνία λήψης";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "Σφάλμα για το χρήστη \"επισκέπτης\", θα χρησιμοποιηθεί η προεπιλεγμένη ρύθμιση. Παρακαλώ ενημερώστε τον διαχειριστή.";
+$lang['Album results for'] = "Αποτελέσματα λευκωμάτων για ";
+$lang['Tag results for'] = "Αποτελέσματα ετικετών για";
+$lang['from %s to %s'] = "από %s σε %s";
+$lang['Play of slideshow'] = "Συνέχιση προβολής";
+$lang['Pause of slideshow'] = "Παύση προβολής";
+$lang['Repeat the slideshow'] = "Επανάληψη προβολής";
+$lang['Not repeat the slideshow'] = "Να μην επαναληφθεί η προβολή σλάιντ";
+$lang['Reduce diaporama speed'] = "Μείωση ταχύτητας προβολής (μεγαλύτερη παύση σε κάθε φωτογραφία)";
+$lang['Accelerate diaporama speed'] = "Αύξηση ταχύτητας προβολής (μικρότερη παύση σε κάθε φωτογραφία)";
+$lang['Submit'] = "Αποθήκευση";
+$lang['Yes'] = "Ναι";
+$lang['No'] = "Όχι";
+$lang['%d photo'] = "%d φωτογραφία";
+$lang['%d photos'] = "%d φωτογραφίες";
+$lang['%d photo is also linked to current tags'] = "%d η φωτογραφία είναι επίσης συνδεδεμένη με τις υπάρχοντες ετικέτες";
+$lang['%d photos are also linked to current tags'] = "%d οι φωτογραφίες είναι είναι επίσης συνδεδεμένες με τις υπάρχοντες ετικέτες";
+$lang['display photos linked to this tag'] = "εμφάνιση μόνο των φωτογραφιών που είναι συνδεδεμένες με αυτή την ετικέτα";
+$lang['photos posted during the last %d days'] = "φωτογραφίες που αναρτήθηκαν κατά την διάρκεια των τελευταίων %d ημερών";
+$lang['Piwigo Help'] = "Βοήθεια για το Piwigo";
+$lang['Rank'] = "Βαθμός";
+$lang['group by letters'] = "ομαδοποίηση κατά γράμμα";
+$lang['letters'] = "γράμματα";
+$lang['show tag cloud'] = "σύννεφο ετικετών";
+$lang['cloud'] = "σύννεφο";
+$lang['Reset to default values'] = "Επαναφορά αρχικών ρυθμίσεων";
+$lang['delete all photos from your favorites'] = "διαγραφή όλων των φωτογραφιών από τα αγαπημένα";
+$lang['Sent by'] = "Αποστολή με";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Τα cookies έχουν  μπλοκαριστεί ή δεν υποστηρίζονται από το φυλλομετρητή σας. Πρέπει να ενεργοποιήσετε τα cookies ώστε να συνδεθείτε.";
+$lang['Photos posted within the last %d days.'] = "Φωτογραφίες που αναρτήθηκαν τις τελευταίες %d μέρες.";
+$lang['password updated'] = "ο κωδικός ενημερώθηκε";
+$lang['Recent period must be a positive integer value'] = "Οι μέρες που μια νέα φωτογραφία θεωρείται πρόσφατη πρέπει να είναι θετικός ακέραιος αριθμός";
+$lang['photo'] = "φωτογραφία";
+$lang['Click on the photo to see it in high definition'] = "Κάντε κλικ στη φωτογραφία για να τη δείτε σε υψηλή ανάλυση";
+$lang['Show file metadata'] = "Εμφάνιση μεταδεδομένων εικόνας";
+$lang['Powered by'] = "Powered by";
+$lang['Preferences'] = "Προτιμήσεις";
+$lang['Previous'] = "Προηγούμενο";
+$lang['Random photos'] = "Τυχαίες φωτογραφίες";
+$lang['display a set of random photos'] = "προβολή μιας ομάδας τυχαίων φωτογραφιών";
+$lang['Recent albums'] = "Πρόσφατα λευκώματα";
+$lang['display recently updated albums'] = "εμφάνιση πρόσφατα ανανεωμένων λευκωμάτων";
+$lang['Recent period'] = "Οι νέες φωτογραφίες θεωρούνται πρόσφατες για";
+$lang['Recent photos'] = "Πρόσφατες φωτογραφίες";
+$lang['display most recent photos'] = "προβολή των πιο πρόσφατων φωτογραφιών";
+$lang['Redirection...'] = "Ανακατεύθυνση...";
+$lang['Please, enter a login'] = "Παρακαλώ εισάγετε όνομα χρήστη";
+$lang['login mustn\'t end with a space character'] = "το όνομα χρήστη δεν πρέπει να τελειώνει με κενό";
+$lang['login mustn\'t start with a space character'] = "το όνομα χρήστη δεν πρέπει να ξεκινάει με κενό";
+$lang['this login is already used'] = "αυτό το όνομα χρήστη χρησιμοποιείται ήδη";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = "η διεύθυνση ηλεκτρονικού ταχυδρομείου πρέπει να είναι της μορφής xxx@yyy.eee (παράδειγμα: jack@altern.org)";
+$lang['Auto login'] = "Αυτόματη σύνδεση";
+$lang['remove this tag from the list'] = "αφαίρεση ετικέτας από τη λίστα";
+$lang['representative'] = "αντιπροσωπευτική";
+$lang['Search for Author'] = "Αναζήτηση συντάκτη";
+$lang['Search in albums'] = "Αναζήτηση στα λευκώματα";
+$lang['Search by date'] = "Αναζήτηση με ημερομηνία";
+$lang['Date'] = "Ημερομηνία";
+$lang['End-Date'] = 'Έως';
+$lang['Kind of date'] = "Είδος ημερομηνίας";
+$lang['Search for words'] = "Αναζήτηση λέξεων";
+$lang['Search for all terms'] = "Αναζήτηση για όλους τους όρους";
+$lang['Search for any term'] = "Αναζήτηση για οποιοδήποτε όρο";
+$lang['Empty query. No criteria has been entered.'] = "Κενή ερώτηση. Δεν έχει εισαχθεί κανένα κριτήριο.";
+$lang['Search results'] = "Αποτελέσματα αναζήτησης";
+$lang['Search in sub-albums'] = "Αναζήτηση στα υπο-λευκώματα";
+$lang['searched words : %s'] = "όροι αναζήτησης: %s";
+$lang['Contact'] = "Επικοινωνία";
+$lang['set as album representative'] = "Ορισμός ως αντιπροσωπευτικής φωτογραφίας για το λεύκωμα";
+$lang['Show number of comments'] = "Προβολή αριθμού σχολίων";
+$lang['Show number of hits'] = "Προβολή αριθμού εμφανίσεων";
+$lang['slideshow'] = 'προβολή σλάιντ';
+$lang['stop the slideshow'] = "παύση προβολής";
+$lang['Specials'] = 'Ξεχωρίζουν';
+$lang['SQL queries in'] = 'Ερωτήματα SQL στη';
+$lang['display only recently posted photos'] = "προβολή μόνο πρόσφατα αναρτηθέντων φωτογραφιών";
+$lang['return to the display of all photos'] = "επιστροφή στην προβολή όλων των φωτογραφιών";
+$lang['the beginning'] = "αρχή";
+$lang['Thumbnails'] = 'Μικρογραφίες';
+$lang['Menu'] = "Μενού";
+$lang['display a calendar by creation date'] = 'προβολή ημερολογίου κατά ημέρα λήψης';
+$lang['display all photos in all sub-albums'] = 'προβολή φωτογραφιών από όλα τα λευκώματα και υπο-λευκώματα';
+$lang['return to normal view mode'] = 'επιστροφή σε κανονική προβολή';
+$lang['display a calendar by posted date'] = 'προβολή ημερολογίου κατά ημέρα ανάρτησης';
+$lang['month'][10] = "Οκτώβριος";
+$lang['month'][11] = "Νοέμβριος";
+$lang['month'][12] = "Δεκέμβριος";
+$lang['month'][1] = "Ιανουάριος";
+$lang['month'][2] = "Φεβρουάριος";
+$lang['month'][3] = "Μάρτιος";
+$lang['month'][4] = "Απρίλιος";
+$lang['month'][5] = "Μάιος";
+$lang['month'][6] = "Ιούνιος";
+$lang['month'][7] = "Ιούλιος";
+$lang['month'][8] = "Αύγουστος";
+$lang['month'][9] = "Σεπτέμβριος";
+$lang['Most visited'] = 'Περισσότερες προβολές';
+$lang['display most visited photos'] = 'οι φωτογραφίες με τις περισσότερες επισκέψεις';
+$lang['Unknown identifier'] = 'Άγνωστο αναγνωριστικό';
+$lang['New password'] = 'Νέος κωδικός';
+$lang['Rate this photo'] = 'Βαθμολογήστε τη φωτογραφία';
+$lang['Next'] = 'Επόμενο';
+$lang['no rate'] = 'χωρίς βαθμό';
+$lang['Photos posted within the last %d day.'] = 'Αρχεία που έχουν αναρτηθεί τις τελευταίες  %d ημέρες.';
+$lang['A comment on your site'] = 'Ένα σχόλιο στη σελίδα σας';
+$lang['today'] = 'σήμερα';
+$lang['Update your rating'] = 'Αλλάξτε τη βαθμολογία σας';
+$lang['the username must be given'] = 'το όνομα χρήστη είναι απαραίτητο';
+$lang['Edit a comment'] = 'Επεξεργασία σχολίου';
+$lang['Are you sure?'] = 'Είστε σίγουρος;';
+$lang['(!) This comment requires validation'] = '(!) Αυτό το σχόλιο απαιτεί επικύρωση';
+$lang['Welcome'] = 'Καλώς ήρθατε';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Καλώς ήρθατε στο Piwigo και την γκαλερί σας!';
+$lang['... or browse your empty gallery'] = '... ή να περιηγηθείτε στην κενή σας γκαλερί';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ή, παρακαλώ απενεργοποιήστε αυτό το μήνυμα, θα βρω τον τρόπο μόνος μου';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Γεια %s, η γκαλερί σας είναι κενή!';
+$lang['I want to add photos'] = 'Θέλω να προσθέσω φωτογραφίες';
+$lang['Manage this user comment: %s'] = 'Διαχειριστείτε αυτό το σχόλιο: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Η διεύθυνση ηλεκτρονικού ταχυδρομείου είναι κενή. Παρακαλώ εισάγετε μία διεύθυνση ηλεκτρονικού ταχυδρομείου.';
+$lang['This author modified following comment:'] = 'Αυτός ο συγγραφέας τροποποίησε το ακόλουθο σχόλιο:';
+$lang['This author removed the comment with id %d'] = 'Αυτός ο συγγραφέας αφαίρεσε το σχόλιο με id %d';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Ένας διαχειριστής πρέπει να εγκρίνει το σχόλιό σας πριν γίνει ορατό.';
+$lang['This login is already used by another user'] = 'Αυτό το όνομα χρήστη χρησιμοποιείται ήδη από κάποιον άλλον χρήστη';
+$lang['Comments'] = 'Σχόλια';
+$lang['Add a comment'] = 'Αφήστε ένα σχόλιο';
+$lang['created after %s (%s)'] = 'δημιουργήθηκε μετά τις %s (%s)';
+$lang['created before %s (%s)'] = 'δημιουργήθηκε πριν τις %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'δημιουργήθηκε μεταξύ %s (%s) και %s (%s)';
+$lang['created on %s'] = 'δημιουργήθηκε στις %s';
+$lang['Customize'] = 'Προσαρμογή';
+$lang['Your Gallery Customization'] = 'Η προσαρμογή της γκαλερί σας';
+$lang['day'][0] = "Κυριακή";
+$lang['day'][1] = "Δευτέρα";
+$lang['day'][2] = "Τρίτη";
+$lang['day'][3] = "Τετάρτη";
+$lang['day'][4] = "Πέμπτη";
+$lang['day'][5] = "Παρασκευή";
+$lang['day'][6] = "Σάββατο";
+$lang['Default'] = 'Προεπιλεγμένη';
+$lang['delete this photo from your favorites'] = 'διαγράψτε αυτή τη φωτογραφία από τα αγαπημένα σας';
+$lang['Delete'] = 'Διαγραφή';
+$lang['descending'] = 'φθίνουσα';
+$lang['Download'] = 'μεταφόρτωση';
+$lang['Download this file'] = 'μεταφόρτωση αυτού του αρχείου';
+$lang['edit'] = 'επεξεργασία';
+$lang['wrong date'] = 'λάθος ημερομηνία';
+$lang['excluded'] = 'εξαιρέθηκαν';
+$lang['display your favorites photos'] = 'προβολή των αγαπημένων σας φωτογραφιών';
+$lang['Favorites'] = 'Αγαπημένα';
+$lang['First'] = 'Πρώτη';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Η γκαλερί είναι κλειστή για συντήρηση. Παρακαλώ επισκεφθείτε τη πάλι αργότερα.';
+$lang['Page generated in'] = 'Η σελίδα δημιουργήθηκε σε';
+$lang['guest'] = 'επισκέπτης';
+$lang['Hello'] = 'Γεια';
+$lang['available for administrators only'] = 'διαθέσιμο μόνο στους διαχειριστές';
+$lang['customize the appareance of the gallery'] = 'προσαρμογή της εμφάνισης της γκαλερί';
+$lang['search'] = 'αναζήτηση';
+$lang['Home'] = 'Αρχική';
+$lang['in this album'] = 'σε αυτό λεύκωμα';
+$lang['in %d sub-album'] = 'σε %d υπο-λεύκωμα';
+$lang['in %d sub-albums'] = 'σε %d υπο-λευκώματα';
+$lang['included'] = 'συμπεριλήφθηκαν';
+$lang['Invalid password!'] = 'Λάθος κωδικός!';
+$lang['Language'] = 'Γλώσσα';
+$lang['last %d days'] = 'τελευταίες %d ημέρες';
+$lang['Last'] = 'Τελευταία';
+$lang['Logout'] = 'Αποσύνδεση';
+$lang['obligatory'] = 'απαραίτητο';
+$lang['%d album updated'] = '%d λεύκωμα ενημερώθηκε';
+$lang['%d albums updated'] = '%d λευκώματα ενημερώθηκαν';
+$lang['%d comment to validate'] = '%d σχόλιο για επικύρωση';
+$lang['%d comments to validate'] = '%d σχόλια για επικύρωση';
+$lang['%d new comment'] = '%d νέο σχόλιο';
+$lang['%d new comments'] = '%d νέα σχόλια';
+$lang['%d comment'] = '%d σχόλιο';
+$lang['%d comments'] = '%d σχόλια';
+$lang['%d hit'] = '%d εμφάνιση';
+$lang['%d hits'] = '%d εμφανίσεις';
+$lang['%d new photo'] = '%d νέα φωτογραφία';
+$lang['%d new photos'] = '%d νέες φωτογραφίες';
+$lang['%d new user'] = '%d νέος χρήστης';
+$lang['%d new users'] = '%d νέοι χρήστες';
+$lang['About'] = 'Σχετικά';
+$lang['All tags'] = 'Όλες οι ετικέτες';
+$lang['Any tag'] = 'Οποιαδήποτε ετικέτα';
+$lang['At least one listed rule must be satisfied.'] = 'Πρέπει να τηρείται τουλάχιστον ένα κριτήριο της λίστας.';
+$lang['Author'] = 'Συντάκτης';
+$lang['Albums'] = 'Λευκώματα';
+$lang['Album'] = 'Λεύκωμα';
+$lang['Close this window'] = 'Κλείσιμο παραθύρου';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS feed για φωτογραφίες και σχόλια';
+$lang['Confirm Password'] = 'Επιβεβαίωση κωδικού';
+$lang['Connection settings'] = 'Ρυθμίσεις σύνδεσης';
+$lang['Login'] = 'Σύνδεση';
+$lang['Contact webmaster'] = 'Επικοινωνία με το διαχειριστή';
+$lang['Create a new account'] = 'Δημιουργία νέου λογαριασμού';
+$lang['Created on'] = 'Δημιουργήθηκε στις';
+$lang['Current password is wrong'] = 'Εισάγατε λάθος κωδικό';
+$lang['Dimensions'] = 'Διαστάσεις';
+$lang['Display'] = 'Εμφάνιση';
+$lang['Each listed rule must be satisfied.'] = 'Πρέπει να ικανοποιηθούν όλοι οι κανόνες.';
+$lang['Email address'] = 'Διεύθυνση ηλεκτρονικού ταχυδρομείου';
+$lang['Enter your personnal informations'] = 'Συμπληρώστε τα στοιχεία σας';
+$lang['Error sending email'] = 'Σφάλμα κατά την αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου';
+$lang['File name'] = 'Όνομα αρχείου';
+$lang['File'] = 'Αρχείο';
+$lang['Filesize'] = 'Μέγεθος αρχείου';
+$lang['Filter and display'] = 'Αναζήτηση';
+$lang['Filter'] = 'Φίλτρα';
+$lang['Forgot your password?'] = 'Ξεχάσατε το κωδικό σας;';
+$lang['Go through the gallery as a visitor'] = 'Περιήγηση ως επισκέπτης';
+$lang['Help'] = 'Βοήθεια';
+$lang['Identification'] = 'Λογαριασμός';
+$lang['Photos only RSS feed'] = 'RSS feed μόνο για φωτογραφίες';
+$lang['Keyword'] = 'Λέξη κλειδί';
+$lang['Links'] = 'Σύνδεσμοι';
+$lang['N/A'] = 'Δ/Υ';
+$lang['New on %s'] = 'Καινούργιο στις %s';
+$lang['Notification'] = 'Ενημερώσεις';
+$lang['Number of items'] = 'Αριθμός αντικειμένων';
+$lang['Original dimensions'] = 'Αρχικές διαστάσεις';
+$lang['Password forgotten'] = 'Χαμένος κωδικός';
+$lang['Password'] = 'Κωδικός';
+$lang['Profile'] = 'Προφίλ';
+$lang['Quick connect'] = 'Γρήγορη σύνδεση';
+$lang['RSS feed'] = 'Τροφοδοσία RSS';
+$lang['Register'] = 'Εγγραφείτε';
+$lang['Registration'] = 'Εγγραφή';
+$lang['Related tags'] = 'Σχετικές ετικέτες';
+$lang['Reset'] = 'Επαναφορά';
+$lang['Retrieve password'] = 'Ανάκτηση κωδικού';
+$lang['Search rules'] = 'Αναζήτηση με κριτήρια';
+$lang['Search tags'] = 'Αναζήτηση στις ετικέτες';
+$lang['Search'] = 'Αναζήτηση';
+$lang['display available tags'] = 'εμφάνιση διαθέσιμων ετικετών';
+$lang['Since'] = 'Από';
+$lang['Sort by'] = 'Ταξινόμηση βάση';
+$lang['Sort order'] = 'Ταξινόμηση';
+$lang['Tag'] = 'Ετικέτα';
+$lang['Tags'] = 'Ετικέτες';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Το RSS βοηθά να είστε πάντα ενήμεροι για τα νέα της σελίδας: ανάρτηση νέων φωτογραφιών, ανανεώσεις των λευκωμάτων, νέα σχόλια. Χρειάζεται ένα λογισμικό ανάγνωσης RSS feeds (RSS reader).';
+$lang['Unknown feed identifier'] = 'Άγνωστο αναγνωριστικό RSS feed';
+$lang['User comments'] = 'Σχόλια χρηστών';
+$lang['Username'] = 'Όνομα χρήστη';
+$lang['Visits'] = 'Επισκέψεις';
+$lang['Webmaster'] = 'Υπεύθυνος σελίδας';
+$lang['Week %d'] = 'Εβδομάδα %d';
+$lang['About Piwigo'] = 'Σχετικά με το Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Δεν έχετε δικαίωμα να δείτε αυτή τη σελίδα';
+$lang['add this photo to your favorites'] = 'προσθέστε αυτή τη φωτογραφία στις αγαπημένες';
+$lang['Administration'] = 'Διαχείριση';
+$lang['all'] = 'όλα';
+$lang['ascending'] = 'αύξουσα';
+$lang['author(s) : %s'] = 'συντάκτες : %s';
+$lang['Expand all albums'] = 'Να φαίνονται πάντα και τα υπο-λευκώματα';
+$lang['posted after %s (%s)'] = 'αναρτήθηκε μετά τις %s (%s)';
+$lang['posted before %s (%s)'] = 'αναρτήθηκε πριν τις %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'αναρτήθηκε ανάμεσα στις %s (%s) και %s (%s)';
+$lang['posted on %s'] = 'αναρτήθηκε στις %s';
+$lang['Best rated'] = 'Υψηλότερες βαθμολογίες';
+$lang['display best rated photos'] = 'προβολή φωτογραφιών με την υψηλότερη βαθμολογία';
+$lang['Calendar'] = 'Ημερολόγιο';
+$lang['All'] = 'Όλα';
+$lang['display each day with photos, month per month'] = 'εμφάνιση φωτογραφιών σε μορφή ημερολογίου';
+$lang['View'] = 'Εμφάνιση';
+$lang['chronology_monthly_calendar'] = 'Ημερολόγιο';
+$lang['chronology_monthly_list'] = 'Μηνιαία λίστα';
+$lang['chronology_weekly_list'] = 'Εβδομαδιαία λίστα';
+$lang['Click here if your browser does not automatically forward you'] = 'Κάντε κλικ εδώ αν δεν μεταφερθείτε αυτόματα';
+$lang['comment date'] = 'ημερομηνία σχολίου';
+$lang['Comment'] = 'Σχόλιο';
+$lang['Your comment has been registered'] = 'Το σχόλιό σας καταχωρήθηκε';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Παρακαλώ περιμένετε λίγο πριν προσπαθήσετε να στείλετε ένα ακόμη σχόλιο';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Το σχόλιο σας δεν καταχωρήθηκε επειδή δεν πέρασε τα κριτήρια επικύρωσης';
+$lang['Your favorites'] = 'Αγαπημένες';
+$lang['display this album'] = 'εμφάνιση λευκώματος';
+$lang['display last user comments'] = 'εμφάνιση πρόσφατων σχολίων';
+$lang['this email address is already in use'] = 'αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου χρησιμοποιείται ήδη';
+$lang['html tags are not allowed in login'] = 'δεν επιτρέπεται κώδικας html στο όνομα χρήστη';
+$lang['%d Kb'] = '%d Kb';
+$lang['Post date'] = 'Ημερομηνία ανάρτησης';
+$lang['Posted on'] = 'Αναρτήθηκε στις';
+$lang['%d rates'] = '%d Κατατάξεις';
+$lang['Rating score'] = 'Βαθμολογία κατάταξης';
+$lang['The number of photos per page must be a not null scalar'] = 'Ο αριθμός των φωτογραφιών ανά σελίδα πρέπει να είναι ακέραιος και διάφορος του μηδενός';
+$lang['Number of photos per page'] = 'Αριθμός φωτογραφιών ανά σελίδα';
+$lang['Invalid username or email'] = 'Μη έγκυρο όνομα χρήστη ή email';
+$lang['Password reset is not allowed for this user'] = 'Η επαναφορά του κωδικού δεν επιτρέπεται για αυτόν τον χρήστη';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Ο χρήστης "%s" δεν έχει email, η επαναφορά του κωδικού δεν είναι δυνατή';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Κάποιος ζήτησε την επαναφορά του κωδικού για τον παρακάτω λογαριασμό χρήστη:';
+$lang['Username "%s" on gallery %s'] = 'Όνομα χρήστη "%s" στην γκάλλερι %s';
+$lang['To reset your password, visit the following address:'] = 'Για την επαναφορά του κωδικού επισκέψου την παρακάτω διεύθυνση:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Αν αυτό ήταν ένα λάθος, απλά αγνοείστε αυτό το email και τίποτα δεν θα συμβεί.';
+$lang['Password Reset'] = 'Ο κωδικός επανήλθε';
+$lang['Check your email for the confirmation link'] = 'Έλεγξε το email σου για το link επιβεβαιώσης';
+$lang['Invalid key'] = 'Λάθος κλειδί';
+$lang['The passwords do not match'] = 'Ο κωδικός δεν ταιριάζει';
+$lang['Your password has been reset'] = 'Ο κωδικός έχει επεναφερθεί';
+$lang['Return to home page'] = 'Επιστροφή στην αρχική σελίδα';
+$lang['Please enter your username or email address.'] = 'Παρακαλώ εισάγεται το όνομα χρήσης ή το email σας.';
+$lang['You will receive a link to create a new password via email.'] = 'Θα λάβεις ένα link για να δημιουργήσεις ένα κωδικό μέσω email.';
+$lang['Username or email'] = 'Όνομα χρήστη ή email';
+$lang['Change my password'] = 'Αλλαγή του κωδικού';
+$lang['Enter your new password below.'] = 'Πληκτρολόγησε τον νέο κωδικό παρακάτω.';
+$lang['EXIF Metadata'] = 'EXIF μεταδεδομένα';
+$lang['IPTC Metadata'] = 'IPTC μεταδεδομένα';
+$lang['Edit'] = 'Επεξεργασία';
+$lang['Hello %s,'] = 'Γεια σου %s,';
+$lang['Send my connection settings by email'] = 'Αποστολή ρυθμίσεων σύνδεσης μέσω ηλεκτρονικού ταχυδρομείου';
+$lang['Show oldest comments first'] = 'Εμφάνιση των παλιών σχολίων πρώτα';
+$lang['Show latest comments first'] = 'Εμφάνιση των νεώτερων σχολίων πρώτα';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Επιτυχημένη εγγραφή, σύντομα θα λάβεις ένα email με τις ρυθμίσεις σύνδεσης. Καλώς ήλθες!';
+$lang['Username modification'] = 'Μετατροπή του ονόματος σύνδεσης';
+$lang['Your username has been successfully changed to : %s'] = 'Το όνομα σύνδεσης έχει αλλάξει σε : %s';
+$lang['square'] = 'Τετράγωνο';
+$lang['thumb'] = 'Μικρογραφία';
+$lang['small'] = 'Μικρό';
+$lang['medium'] = 'Ενδιάμεσο';
+$lang['large'] = 'Μεγάλο';
+$lang['xlarge'] = 'Πολύ μεγάλο';
+$lang['xxlarge'] = 'Εξαιρετικά μεγάλο';
+$lang['Original'] = 'Γνήσιοl';
+$lang['Thank you for registering at %s!'] = 'Ευχαριστούμε για την εγγραφή στο %s!';
+$lang['Here are your connection settings'] = 'Οι ρυθυμίσεις σύνδεσης σας';
+$lang['Password: %s'] = 'Κωδικός: %s';
+$lang['Username: %s'] = 'Όνομα χρήσης: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Αν νομίζεις ότι έχεις λάβει ηλεκτρονικό μήνυμα κατά λάθος, επικοινήστε μαζί μας στο %s';
+$lang['Photo sizes'] = 'Μέγεθος φωτογραφιών';
+$lang['View in'] = 'Εμφάνιση στο';
+$lang['Mobile'] = 'Κινητό';
+$lang['Desktop'] = 'Επιφάνεια εργασίας';
+$lang['2small'] = 'XXS - εξαιρετικά μικρό';
+$lang['xsmall'] = 'XS - πολύ μικρό';
+$lang['File name, A &rarr; Z'] = 'Όνομα αρχείου, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Όνομα αρχείου, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Όνομα φωτογραφίας, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Όνομα φωτογραφίας, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Ημέρα δημιουργίας, νεότερη &rarr; παλαιότερη';
+$lang['Date created, old &rarr; new'] = 'Ημέρα δημιουργίας, παλαιότερη &rarr; νεότερη';
+$lang['Date posted, new &rarr; old'] = 'Ημέρα καταχώρησης, πρόσφατη &rarr; παλαιότερη';
+$lang['Date posted, old &rarr; new'] = 'Ημέρα καταχώρησης, παλαιότερη &rarr; πρόσφατη';
+$lang['Rating score, high &rarr; low'] = 'Βαθμολογία κατάταξης, υψηλή &rarr; χαμηλή';
+$lang['Rating score, low &rarr; high'] = 'Βαθμολογία κατάταξης, χαμηλή &rarr; υψηλή';
+$lang['Visits, high &rarr; low'] = 'Επισκέψεις, περισσότερες &rarr; λιγότερες';
+$lang['Visits, low &rarr; high'] = 'Επισκέψεις, λιγότερες &rarr; περισσότερες';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Αριθμητικό αναγνωριστικό, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Αριθμητικό αναγνωριστικό, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Χειροκίνητη ταξινόμηση'; 
+
+$lang['%d rate'] = '%d βαθμολόγηση';
+$lang['Bad request'] = 'Ατυχές αίτημα';
+$lang['Forbidden'] = 'Απαγορευμένη';
+$lang['Page not found'] = 'Η σελίδα δεν βρέθηκε';
+$lang['Permalink for album not found'] = 'Ο Μόνιμος Σύνδεσμος για το λέυκωμα δεν υπάρχει';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo αντιμετώπισε ένα σφάλμα μη ανακτήσιμο';
+$lang['Requested album does not exist'] = 'Το Ζητούμενο Λεύκωμα δεν υπάρχει';
+$lang['Requested tag does not exist'] = 'Η ζητούμενη ετικετα δεν υπάρχει';
+$lang['mandatory'] = 'υποχρεωτικό';
+$lang['Username is mandatory'] = 'Το όνομα χρήστη είναι υποχρεωτικό';
+$lang['Email address is mandatory'] = 'Η διεύθυνση ηλεκτρονικού ταχυδρομείου είναι υποχρεωτική';
+$lang['Your website URL is invalid'] = 'Το URL της ιστοσελίδας δεν είναι έγκυρο';
+$lang['Website'] = 'Ιστοσελίδα';
+$lang['Email'] = 'Email';
+$lang['Last Page'] = 'Τελευταία Σελίδα';
+$lang['Go back to the album'] = 'Επιστροφή Στο Λεύκωμα';
+$lang['First Page'] = 'Αρχική Σελίδα';
+$lang['Password is missing. Please enter the password.'] = 'Κωδικός λείπει. Παρακαλώ εισάγετε τον κωδικό πρόσβασης.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Η επιβεβαίωση κωδικού λείπει. Επιβεβαιώστε τον επιλεγμένο κωδικό πρόσβασης';
+?>
Index: /tags/2.6.0RC1/language/el_GR/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,132 @@
+<h2>Επεξεργασία λευκώματος</h2>
+
+<h3>Πληροφορίες</h3>
+
+<ul>
+
+  <li><strong>Όνομα</strong>: μετονομάσετε το λεύκωμα (μια εικονική μετονομασία σε περίπτωση 
+  ενός φυσικού λευκώματος).</li>
+
+  <li><strong>περιγραφή</strong>: σύντομο κείμενο δίνει μια γενική ιδέα για το περιεχόμενο,
+  αυτό το κείμενο θα εμφανίζεται στο κάτω μέρος της σελίδας μικρογραφιών.</li>
+
+</ul>
+
+<h3>Μετακίνηση</h3>
+
+<p>Αν το λεύκωμα είναι εικονικό, μπορείτε να το μετακινήσετε. Μετακινώντας ένα άλμπουμ σημαίνει
+αλλαγή μητρικού λευκώματος.</p>
+
+<h3>Επιλογές</h3>
+
+<ul>
+
+  <li><strong>Τύπος πρόσβασης</strong>: Διαχείρισης Δικαιωμάτων. Αν κάνετε ένα
+  λεύκωμα ιδιωτικό, όλα τα υπο-λευκώματα γίνονται ιδιωτικά. Αν κάνετε ένα
+  λεύκωμα δημόσιο, όλα τα υπο-λευκώματα γίνονται δημόσια.</li>
+
+  <li><strong>Κλείδωμα</strong>: Το λεύκωμα και υπο-λευκώματα του θα
+  είναι προσωρινά απενεργοποιημένα.</li>
+
+  <li><strong>Σχόλια</strong>: Εξουσιοδοτεί τους χρήστες να σχολιάσουν τις φωτογραφίες αυτού του
+  λευκώματος.</li>
+
+</ul>
+
+<p>Μπορείτε επίσης να διαχειριστείτε αυτές τις επιλογές στην οθόνη διαχείρισης
+ στις "Ιδιότητες"(screens<span
+class="pwgScreen">Σχόλια</span>, <span class="pwgScreen">Κλείδωμα</span>,
+<span class="pwgScreen">Δημόσιο/Ιδιωτικό</span>, <span
+class="pwgScreen">Αντιπροσωπευτικό</span>διατίθενται από<span
+class="pwgScreen">Διαχείριση » Λευκωμάτων » Ιδιότητες</span>).</p>
+
+<h3>Σειρά Ταξινόμησης</h3>
+
+<p>Χρησιμοποιήστε την προεπιλεγμένη σειρά ταξινόμησης εικόνων.</p>
+
+<p>Δείχνει κατά πόσον αυτή η σειρά ταξινόμησης ισχύει επίσης για τα υπό-λευκώματα.</p>
+
+<p>Επιλέξατε συγκεκριμένα κριτήρια ταξινόμησης που πρέπει να χρησιμοποιούνται με αυτό το λεύκωμα.</p>
+<ul>
+<li><strong>Ημερομηνία Δημιουργίας</strong>: Ημερομηνία Λήψης Φωτογραφία</li>
+<li><strong>Ημερομηνία Δημοσίευσης</strong>: Ημερομηνία Συγχρονισμού</li>
+<li><strong>Μέσος ρυθμός (*)</strong>: Ο Μέσος συντελεστής θα μπορούσε να αλλάξει με την βαθμολογία των επισκεπτών</li>
+<li><strong>Πιο Δημοφιλή (*)</strong>: Η παρούσα επίσκεψη θα μπορούσε να αλλάξει τη σειρά των πιο επισκεψιμων σελίδων</li>
+<li><strong>Όνομα Αρχείου</strong>: Το όνομα που δίνετε στο πεδίο πληροφοριών</li>
+<li><strong>Id</strong>: Εσωτερικό Id (πρόσφατες κατηγορίες έχουν ένα υψηλότερο id από τις προηγούμενες.</li>
+
+</ul>
+<p><strong>(*)</strong>Προειδοποίηση: Μην ξεχάσετε να δοκιμάσετε αυτές τις σειρές ταξινόμησης μόνοι σας, καθώς μπορούν να δώσουν απροσδόκητα αποτελέσματα.</p>
+
+
+<h3>Αντιπροσώπευση</h3>
+
+<p>Η αντιπροσώπευση του λευκώματος είναι η μικρογραφία που εμφανίζεται στην κεντρική σελίδα(<span class="pwgScreen">category.php</span>) και αντιπροσωπεύει το λεύκωμα όταν
+περιέχουν μόνο υπο-λευκώματα και όχι άμεσα φωτογραφίες (όπως ένα μητρικό λεύκωμα).</p>
+φωτογραφία ενός λευκώματος :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: με ένα από τα κουμπιά δράσης μπορείτε να ορίσετε την τρέχουσα φωτογραφία ως εκπρόσωπος του
+  εμφανιζόμενου λευκώματος. Αυτό το κουμπί είναι διαθέσιμο μόνο για τους διαχειριστές.</li>
+
+  <li><span class="pwgScreen">Τροποποιήστε πληροφορίες για μια φωτογραφία</span> στη
+  διαχείρηση. Η οθόνη αυτή μπορεί να επιτευχθεί από <span
+  class="pwgScreen">picture.php</span> ή <span class="pwgScreen">Μαζική
+  διαχείρηση</span> σε <em>λειτουργία μονάδας</em>.Δείτε τη βοήθεια αυτής της οθόνης για
+  λεπτομέρειες.</li>
+
+  <li><span class="pwgScreen">Διαχείρηση » Λευκωμάτων » Ιδιώτητες,
+  Αντιπροσώπευση</span>. Δείτε τη βοήθεια αυτής της οθόνης για λεπτομέρειες.</li>
+
+  <li><span class="pwgScreen">Επεξεργασία λευκώματος</span> (η παρούσα οθόνη).</li>
+
+</ul>
+
+<p>Η επιλογή του αντιπροσώπευσης εξαρτάται από την 
+<code>allow_random_representative</code> παράμετρο διαμόρφωσης (βλέπε <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Στην προεπιλεγμένη λειτουργία (<code>allow_random_representative</code> set to false),
+κάθε λεύκωμα που περιέχει τουλάχιστον ένα στοιχείο αντιπροσωπεύεται από ένα σταθερό
+στοιχείο. Μόλις ορισθεί (κατά τη δημιουργία λευκώματος), η εκπροσώπευση αλλάζει μόνο
+όταν ένας διαχειριστής το απαιτήσει. Εάν η αντιπροσώπευση δεν είναι κατάλληλη,
+<strong>Βρίσκει μια αντιπροσώπευση τυχαία</strong>.</p>
+
+<p>Εαν η <code>allow_random_representative</code>παράμετρος διαμόρφωσης ορίστεί
+ως αληθής, μια κατηγορία που περιέχει τις φωτογραφίες μπορεί να μην έχουν καθορισμένη
+αντιπροσώπευση. Χρησιμοποίησε το κουμπί<strong>Διαγραφή αντιπροσώπευσης</strong>.</p>
+
+<p>Αν το λεύκωμα περιέχει μόνο υπο-λευκώματα και όχι φωτογραφίες, ωστόσο, μπορεί να εκπροσωπείται από ένα στοιχείο, χάρη στην οθόνη <span class="pwgScreen">Τροποποίηση πληροφοριών για μια φωτογραφία</span>. Η μόνη επιλογή για την τρέχουσα οθόνη
+είναι το κουμπί <strong>Διαγραφή αντιπροσώπευσης</strong>.</p>
+
+<h3>Σύνδεση όλων των φωτογραφιών λευκώματος σε ένα νέο λεύκωμα</h3>
+
+<ul>
+
+<li><strong>Όνομα Εικονικού Λευκόματος</strong>: Το Όνομα του νέου άλμπουμ που πρόκειται να δημιουργηθεί, 
+όλες οι φωτογραφίες της παρούσας κατηγορίας θα συνδέεται με το νέο.</li>
+
+<li><strong>Μητρικό λεύκωμα</strong>: Όταν το νέο άλμπουμ θα είναι, 
+αφήστε κενό για να δημιουργηθεί στη ρίζα.</li>
+
+</ul>
+
+<h3>Συνδέστε όλες τις φωτογραφίες του λευκώματος στο υπάρχον λεύκωμα</h3>
+
+<ul>
+
+<li><strong>Λευκώματα</strong>: Επιλέξτε το λεύκωμα προορισμού.</li>
+
+</ul>
+
+<h3>Στείλτε ένα e-mail στα μέλη της ομάδας</h3>
+
+<ul>
+
+<li><strong>Ομάδα</strong>: παραλήπτες της ομάδας</li>
+
+<li><strong>Mail περιεχόμενο</strong>: Ελεύθερο κείμενο για να τους σταλεί.</li>
+
+</ul>  
+Lexiglot © 2011-2012 Strangeplanet.fr - Δημιουργείθηκε από Damie
Index: /tags/2.6.0RC1/language/el_GR/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Μετακίνηση εικονικών Λευκωμάτων</h2>
+
+<p>Μόνο εικονικά άλμπουμ μπορεί να έχει ένα νέο μητρικό λεύκωμα.</p>
+
+<h3>Εικονικά λευκώματα προς μετακίνηση.</h3>
+
+<p>Επιλέξτε ένα ή περισσότερα εικονικά λευκώματα που θέλετε να μετακινήσετε. 
+Αν η λίστα είναι κενή, αυτό σημαίνει ότι δεν έχετε δημιουργήσει ακόμη ένα.</p>
+
+<h3>Νέο μητρικό λεύκωμα</h3>
+
+<p>Επιλέξτε το νέο μητρικό λεύκωμα (εικονικό ή φυσικό). 
+Αν δεν επιλέξετε οποιοδήποτε γονέα, τα εικονικά επιλεγμένα λευκώματα θα μετακινηθούν προς τη ρίζα.
+Ένα λεύκωμα δεν μπορεί να μετακινηθεί στο εαυτό του ή σε ένα από τα παιδιά ττου.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Επιλογές Λευκωμάτων</h2>
+
+<p>Επιλογές διαχείρισης για διάφορα άλμπουμ με τη μία.</p>
+
+<dl>
+
+<dt>Σχόλια</dt>
+<dd>Μια φωτογραφία μπορεί να δεχθεί σχόλια από τους επισκέπτες σας, εάν ανήκει σε ένα λεύκωμα με ενεργοποιημένα τα σχόλια.</dd>
+
+<dt>Κλείδωμα</dt>
+<dd>Κλειδωμένα λευκώματa είναι απενεργοποιημένα για συντήρηση. Μόνο διαχειρηστές μπορούν να δούν τις γκαλερί.</dd>
+
+<dt>Δημόσια / Ιδιωτικά</dt>
+<dd>Μόλις ένα λεύκωμα γίνει ιδιωτικό, δίνει δικαιώματα πρόσβασης σε χρήστες και ομάδες</dd>
+
+<dt>Εκπροσώπηση</dt>
+<dd>Αυτή η επιλογή είναι διαθέσιμη όταν ενεργοποιήτε τη ρύθμιση παραμέτρων
+<code>allow_random_representative</code> (βλέπε <span
+ class="filename">include/config_defaults.inc.php</span>) 
+<em>αλήθεια</em>. Κάθε άλμπουμ μπορεί να εκπροσωπείται από μια τυχαία φωτογραφία ή μια φωτογραφία που επιλέχθηκε ως μοναδική εκπρόσωπο.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/el_GR/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Επεξεργασία δικαιωμάτων λευκώματος</h2>
+
+<p>Αυτή η οθόνη είναι διαθέσιμη μόνο για ιδιωτικά λευκώματα. Εδώ μπορείτε να επιλέξετε
+χρήστες και οι ομάδες έχουν εγκριθεί για ένα λεύκωμα.</p>
+
+<h3>Ομάδες</h3>
+
+<p>Μπορείτε να αρνηθείτε ή να επιτρέψετε την πρόσβαση ομάδων για το τρέχον άλμπουμ. Με την τροποποίηση
+αδειών ομάδων, οι χρήστες που ανήκουν σε αυτές τις ομάδες θα έχουν ή δεν θα έχουν πρόσβαση στο άλμπουμ.</p>
+
+<h3>Χρήστες</h3>
+
+<p>Μπορείτε να αρνηθείτε ή να επιτρέψετε την πρόσβαση σε μεμονωμένους χρήστες. Οι χρήστες που έχουν πρόσβαση μέσω μιας ομάδας μπορεί να αρνηθεί την πρόσβαση κατ' εξαίρεση.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/configuration.html	(revision 25596)
@@ -0,0 +1,99 @@
+<h2>Διαμόρφωση</h2>
+
+<p>Αυτή η οθόνη επιτρέπει στο διαχειριστή να κάνει τη βασική διαμόρφωση της γκαλερί. Πράγματι, αυτή η οθόνη δείχνει μόνο απλές παραμέτρους διαμόρφωσης, αυτό θα πρέπει να είναι αρκετό για τη συντριπτική πλειοψηφία των διαχειριστών. Αν θέλετε να δείτε  πολλές άλλες (για προχωρημένους) παραμέτρους διαμόρφωσης, διαβάστε το αρχείο προεπιλεγμένης ρύθμισης 
+<span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Η οθόνη χωρίζεται σε διαφορετικά τμήματα, ομαδοποιώντας παραμέτρους διαμόρφωσης ανά θέμα.</p>
+
+
+<h3>Κύρια</h3>
+<ul>
+  <li><strong>Τίτλος Γκαλερί</strong>: που χρησιμοποιούνται στις κοινοποιήσεις ανατροφοδώτησης RSS και μέσω ηλεκτρονικού ταχυδρομείου.</li>
+
+  <li><strong>Πανό Σελίδας</strong>: εμφανίζεται πάνω από κάθε δημόσια σελίδα.</li>
+
+  <li><strong>URL της Γκαλερί</strong>: που χρησιμοποιείται στις κοινοποιήσεις ανατροφοδώτησης RSS.</li>
+
+  <li><strong>Lock gallery</strong>: Κλειδώστε ολόκληρη την γκαλερί για συντήρηση. Μόνο οι χρήστες διαχείρισης θα μπορούν να έχουν πρόσβαση στη γκαλερί.</li>
+
+  <li><strong>Βαθμολόγιση</strong>: Βαθμολόγιση φωτογραφιών είναι ενεργοποιημένη.</li>
+
+  <li><strong>Αξιολόγηση από τους επισκέπτες</strong>: Ακόμα και μη εγγεγραμμένους χρήστες μπορούν να αξιολογήσουν τις εικόνες.</li>
+
+  <li><strong>Επιτρέψτε την εγγραφή χρηστών</strong>: Ο καθένας μπορεί να εγγραφεί.</li>
+
+  <li><strong>Η ηλεκτρονική διεύθυνση είναι υποχρεωτική για όλους τους χρήστες</strong>: η διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει να ελέγχετε κατά την εγγραφή ή ενημέρωση προφίλ, εκτός εάν η ενέργεια γίνεται από το διαχειριστή.</li>
+
+  <li><strong>Αποστολή Email στον admin όταν ένας νέος χρήστης καταχωρειθεί</strong>: Οι διαχειριστές θα ειδοποιηθούν με mail για κάθε καταχώριση.</li>
+  
+  <li><strong>Προεπιλογή σειράς για φωτογραφίες</strong>:μπορείτε να ορίσετε μια εξατομικευμένη σειρά με τα drop-down μενού.</li>
+
+</ul>
+
+<h3>Ιστορικό</h3>
+
+  <p>Επισκέψεις στις σελίδες<span
+  class="pwgScreen">category.php</span> και <span
+  class="pwgScreen">picture.php</span> θα αποθηκευτεί στον πίνακα <code>history</code>.</p>
+  
+  <p>οι επισκέψεις θα εμφανιστούν στο <span  class="pwgScreen">Διαχείρηση » Εργαλεία » Ιστορικό</span>.</p>
+
+<ul>
+  <li><strong>Αποθηκεύστε τις επισκέψεις σελίδων ανά επισκέπτη</strong>: οι επισκέψεις σελίδων ανά επισκέπτη θα καταγράφονται.</li>
+
+  <li><strong>Επισκέψεις σελίδων ανά επισκέπτη</strong>: οι επισκέψεις σελίδων ανά εγγεγραμμένο επισκέπτη θα καταγράφονται.</li>
+
+  <li><strong>Επισκέψεις σελίδων ανά διαχειρηστή</strong>:  οι επισκέψεις σελίδων ανά διαχειρηστή θα καταγράφονται.</li>
+
+</ul>
+
+<h3>Σχόλια</h3>
+<ul>
+
+  <li><strong>Σχόλια για όλους</strong>: Ακόμα και μη εγγεγραμμένοι επισκέπτες μπορούν να δημοσιεύουν σχόλια.</li>
+
+  <li><strong>Αριθμός σχολίων ανά σελίδα</strong>.</li>
+
+  <li><strong>Επικύρωση</strong>: ο διαχειριστής πρέπει να επικυρώνει τα σχόλια χρηστών πριν αυτά γίνουν ορατά στην σελιδα. Η επικύρωση σχολίων χρηστών  λαμβάνει χώρα στην οθόνη <span class="pwgScreen">Διαχείρηση » Εργαλεία » Σχόλια Εν αναμονή </span>.</li>
+
+  <li><strong>Αποστολή email στον διαχειρηστή όταν ένα έγκυρο σχόλιο εγγράφεται</strong>: Στέλνει ένα μήνυμα στους διαχειριστές όταν ένας χρήστης εισάγει ένα σχόλιο και αυτό το σχόλιο είναι έγκυρο.</li>
+
+  <li><strong>Αποστολή email στον διαχειρηστή  όταν ένα σχόλιο απαιτεί επικύρωση</strong>:
+Στέλνει ένα μήνυμα στους διαχειριστές όταν ένας χρήστης εισάγει ένα σχόλιο απαιτεί επικύρωση απο τον διαχειρηστή.
+η επικύρωση σχολίων χρηστών λαμβάνει χώρα στην οθόνη <span class="pwgScreen">Διαχείρηση » Εργαλεία » Σχόλια Εν αναμονή</span>.</li>
+
+</ul>
+
+<h3>Προεπιλεγμένη οθόνη</h3>
+
+<p>Εδώ μπορείτε να αλλάξετε τις επιλογές προβολής που χρησιμοποιείται από τους φιλοξενούμενους, ο προεπιλεγμένος χρήστης που δεν είναι συνδεδεμένος. Μόλις συνδεθεί, αυτές οι επιλογές έχουν παρακαμφθεί από τις δικές του επιλογές του χρήστη
+(τροποιήσημες στο <span class="pwgScreen">προφίλ</span>).</p>
+
+<p>Είναι δυνατόν να αλλάξετε τις επιλογές εμφάνισης για όλους τους υπάρχοντες χρήστες στην οθόνη <span class="pwgScreen">Διαχείρηση »
+Χρήστες » διαχείρηση</span> όπου μπορείτε να επιλέξετε μια λίστα χρηστών.</p>
+
+<ul>
+
+  <li><strong>Γλώσσα</strong>: Εφαρμογή σε ετικέτες Piwigo μόνο. Ονόματα άλμπουμ, ονόματα φωτογραφιών και όλα τα πεδία περιγραφών δεν μεταφράζονται </li>
+
+  <li><strong>Αριθμός φωτογραφιών ανά σειρά</strong></li>
+
+  <li><strong>Αριθμός σειρών ανά σελίδα</strong></li>
+
+  <li><strong>Θέμα διεπιφάνειας</strong></li>
+
+  <li><strong>Πρόσφατη περίοδος</strong>: Κατά ημέρα. Περίοδος κατά την οποία μια φωτογραφία εμφανίζεται ως νέα. Πρέπει να είναι μεγαλύτερη από 1 ημέρα.</li>
+
+  <li><strong>Ανάπτυξη όλων των λευκωμάτων</strong>: Ανάπτυξη όλων των λευκωμάτων προεπιλεκτικά στο μενού<em>Προειδοποιήση</em>: Αυτή η επιλογή είναι καταλαμβάνει πολλούς πόρους και μπορεί να δημιουργήσει ένα τεράστιο μενού αν το δέντρο των λευκωμά των σας περιέχει πολλά άλμπουμ.</li>
+
+  <li><strong>Εμφάνιση αριθμού σχολίων</strong>: Εμφάνιση του αριθμού των σχολίων για κάθε φωτογραφία στη σελίδα μικρογραφιών. Καταλαμβάνει πολλούς πόρους.</li>
+
+  <li><strong>Εμφάνιση μερτητή χτυπημάτων</strong>: Εμφάνιση αριθμού χτυπημάτων που παρατηρήθηκαν στη φωτογραφία ακριβώς κάτω από φωτογραφία του στη σελίδα μικρογραφίες. Μόνο όταν η παράμετρος προηγμένες ρυθμίσεις είναι: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Σημείωση: ψευδή από προεπιλογή.</li>
+
+  <li><strong>Μέγιστο πλάτος των φωτογραφιών</strong>: εμφανιζόμενο μέγιστο πλάτος.  Φωτογραφίες μεγαλύτερο από τη ρύθμιση αυτή θα αλλάξει το μέγεθος στην οθόνη.  Αντί αυτή την επιλογή, θα μπορούσε να εξετάσει την τροποποίηση του πλάτους των φωτογραφιών σας; Αυτό θα ήταν μια καλύτερη λύση.</li>
+
+  <li><strong>Μέγιστο ύψος των φωτογραφιών</strong>: Το ίδιο και για την μέγιστη ρύθμιση πλάτους.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/el_GR/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,52 @@
+<h2>Διαμόρφωση Επεκτάσεων προτύπων</h2>
+
+<h3>Για την επέκταση προτύπων</h3>
+<p>Η Piwigo γκαλερί σας μπορεί να διαμορφωθεί με την αντικατάσταση των υπαρχόντων αρχείων προτύπων με προσαρμοσμένες εκδόσεις.  Για παράδειγμα, οι επικεφαλίδες στα προεπιλεγμένα πρότυπα (header.tpl) μπορεί να αντικατασταθούν από άλλές επικεφαλίδες προσαρμοσμένων πρότυπων (my-header.tpl).  Μετά την υποβολή των αλλαγών στη βάση δεδομένων η γκαλερί θα εμφανίσει την προσαρμοσμένη επικεφαλίδα, αντί της αρχικής επικεφαλίδας. <br>
+Οι Επεκτάσεις προτύπων είναι ένας ισχυρός τρόπος να δημιουργήσετε προσαρμοσμένα θέματα τόσο για τους νέους όσο και τους προχωρημένους χρήστες.  Χρησιμοποιείται σε συνδυασμό με τον Επεξεργαστή LocalFiles μπορείτε να δημιουργήσετε τα δικά σας παιδικά θέματα.</p>
+
+<h3>Αρχικό Πρότυπο</h3>
+<p>Ένα θέμα περιέχει μια σειρά από αρχεία προτύπων που συνθέτουν τις σελίδες γκαλερί. Αυτά είναι τα αρχικά πρότυπα.</p>
+
+<h3>Προαιρετικό URL λέξεων-κλειδιών</h3>
+<p>Αυτές είναι λέξεις που βρίσκονται στη διεύθυνση URL γκαλερί μετά το όνομα της ενότητας.  Μπορούν επίσης να είναι ενεργοί Μόνιμοι Σύνδεσμοι. (Δείτε την τεκμηρίωση για Μόνιμους Συνδέσμους για περισσότερες πληροφορίες).  <a href="#warnings">ΠΡΟΕΙΔΟΠΟΙΗΣΗ:</a> εάν το ίδιο αρχικό πρότυπο και την ίδια λέξη-κλειδί χρησιμοποιείται σε περισσότερα από ένα προσαρμοσμένο πρότυπο μόνο η τελευταία είναι ενεργή.</p>
+
+<h3>Δεσμευμένο Θέμα</h3>
+<p>Το δεσμευμένο θέμα είναι το θέμα του οποίου τα αρχεία πρότυπου έχουν αντικασταθεί.</p>
+
+<h3>Πού είναι τα αρχικά πρότυπα;</h3>
+<p>Τα αρχικά πρότυπα είναι τα αρχεία πρότυπου που περιέχονται σε κάθε θέμα αρχικά.  Είναι αποθηκευμένα στο <em>/themes/default/template</em> (ή <em>themes/<theme name>/template</em>).  Αυτά τα αρχεία προτύπωνδεν θα πρέπει να επεξεργάζονται επί τόυ γιατι οι αλλαγές θα χαθούν όταν γίνεται αναβάθμιση θάματος. <br>
+Υποστηριζόμενα αρχικά πρότυπα περιλαμβάνονται:</p>
+<ul>
+<li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> και / ή <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> και / ή <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> και / ή <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> και / ή <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> και / ή <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> και / ή <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Αποθηκεύοντας προσαρμοσμένα πρότυπα</h3>
+<p>Τα προσαρμοσμένα πρότυπα Θα πρέπει να αποθηκευτούν στο φάκελο πρότυπο-επέκταση ή σε υποφακέλους.  Για παράδειγμα, <em>/template-extension/my-default/header.tpl</em> (ή <em>/template-extension/<my-theme-name>/header.tpl</em>)  Τα αρχεία προτύπων μπορεί να έχουν οποιοδήποτε όνομα με .tpl επέκταση.  Τα αρχεία προτύπων στους υποφακέλους εμφανίζονται  στην οθόνη διαμόρφωσης Προτύπου ως διαθέσιμα προσαρμοσμένα πρότυπα.</p>
+
+<h3>Ενεργοποίηση προσαρμοσμένων πρότυπων</h3>
+<p>Επιλέξτε το αρχικό πρότυπο που θέλετε να αντικαταστήσετε.  Προαιρετικά επιλέξετε μια διεύθυνση URL λέξης-κλειδί για να σιγουρευτείτε ότι το προσαρμοσμένο πρότυπο εμφανίζεται μόνο σε σελίδες με τη συγκεκριμένη λέξη.  Επιλέξτε ένα δεσμευμένο θέμα και οι αλλαγές θα ισχύσουν για το θέμα αυτό.  Υποβάλετε τις αλλαγές στη βάση δεδομένων.</p>
+<h3>Απενεργοποίηση προσαρμοσμένων πρότυπων</h3>
+<p>Αποεπιλέξτε το αρχικό πρότυπο και υποβάλετε τις αλλαγές στη βάση δεδομένων.<br>
+Διαγράψτε τα αρχεία προτύπων από το φάκελο πρότυπο-επέκταση.</p>
+
+<a name="warnings"></a>
+<h3>Προειδοποιήσεις</h3>
+<ul>
+  <li><strong>Το αρχικό πρότυπο</strong> πρέπει να είναι το αρχικό πρότυπο, διαφορετικά μπορεί να έχει απρόβλεπτα αποτελέσματα.</li>
+  <li>Αν το αρχικό πρότυπο και η διεύθυνση URL της λέξης-κλειδί είναι ίδια και χρησιμοποιείται σε περισσότερα από ένα προσαρμοσμένη πρότυπα μόνο η τελευταία είναι ενεργή.</li>
+  <li>Τα κατανεμημένα δείγματα αρχείων πρότυπων  είναι για δοκιμαστικούς σκοπούς μόνο.  Μην τα επεξεργαστείτε.  Δημιουργήστε τα δικά σας ή αντίγραφα από υπάρχοντα αρχεία προτύπων του θέματος <em>/template-extension/<my-theme>/</em></li>
+  <li>Όταν το προσαρμοσμένο πρότυπο διαγράφεται το αρχικό αρχείο προτύπου αμέσως επανενεργοποιήται</li>
+</ul>
Index: /tags/2.6.0RC1/language/el_GR/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Λίστες Ομάδων</h2>
+
+<p>Αυτό είναι το μέρος όπου μπορείτε να διαχειριστείτε τις ομάδες.</p>
+
+<h3>Προσθήκη μιας ομάδας</h3>
+
+<p>Ο Διαχειριστής μπορεί να προσθέσει ομάδες.</p>
+
+<h3>Λίστες Ομάδων</h3>
+
+<p>Για κάθε ομάδα οι ακόλουθες δράσεις μπορούν να εφαρμοστούν:</p>
+
+
+<ul>
+  <li>πηγαίνετε στη διαχείριση των χρηστών (Διαχειριστής » Χρήστες » Διαχειριστείτε)</li>
+  <li>μεταβείτε στην οθόνη διαχείρισης δικαιωμάτων για τη χορήγηση ή την άρνηση πρόσβασης σε ιδιωτικά λευκώματα.</li>
+  <li>διαγράψετε την ομάδα (απαιτείται επιβεβαίωση)</li>
+  <li>Εναλλαγή κατάστασης "προεπιλογή" (απαιτεί επιβεβαίωση)</li>
+</ul>
+
+<h3>Προεπιλεγμένες Ομάδες</h3>
+<p>Προκαθορισμένες ομάδες είναι ομάδες που συνδέονται αυτόματα σε κάθε νέο χρήστη κατά την εγγραφή ή τη δημιουργία από ένα διαχειριστή.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+<p>Διάφοροι τρόποι για να προσθέσετε τις φωτογραφίες σας στην γκαλερί σας:</p>
+
+<ul>
+  <li><strong>Κατ' ευθείαν Μεταφόρτωση</strong> μέσα από τον web browser σας είναι ο
+  ο απλούστερος και αμεσότερος τρόπος. Εξαρτάται από τις δυνατότητες του browser σας
+  και τον web server σας. Για μια τεράστια ποσότητα φωτογραφιών ή σε περίπτωση που αντιμετωπίζετε κάποιο πρόβλημα,
+  σας περιμένουν άλλες μέθοδοι !</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Πηγαίνετε να ανεβάσετε εικόνες απευθείας</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> είναι μια desktop εφαρμογή, που θα εγκατασταθεί στον υπολογιστή σας. Drag &amp; drop φωτογραφίες στο παράθυρο του pLoader, κάνε κλικ στο <em>"Ανέβασε στο Piwigo"</em> και αφήστε το pLoader να κάνει τη δουλειά. Μπορείτε να βρείτε άλλες εφαρμογές επιφάνειας εργασίας, όπως το <strong>WinToPiwigo</strong> ή το <strong>Digikam</strong> π΄ροσθετο εξαγωγής γαι το Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Πήγαίνετε στο pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Μεταφόρτωση FTP</strong> είναι ο πιο συνιστώμενος τρόπος για να προσθέσετε μια
+  πολύ μεγάλη συλλογή από φωτογραφίες με τον ελάχιστο αριθμό κλικ. Ακολουθήστε
+  τον οδηγό για την προετοιμασία των φωτογραφιών σας. Η μέθοδος FTP σας επιτρέπει να ελέγχετε με ακρίβεια
+  τη φυσική οργάνωση των φωτογραφιών σας στον server σας.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Πηγαίνετε στο FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/el_GR/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Οι ομάδες είναι ένας βολικός τρόπος για να ρυθμίζετε τα δικαιώματα για μια λίστα χρηστών.</p>
+
+<p>Δημιουργίστε ομάδες στο <span class="pwgScreen">Διαχείρηση &raquo; Χρήστες
+&raquo; Ομάδες</span> και συνδέστε τους χρήστες σε αυτή την ομάδα
+απο <span class="pwgScreen">Διαχείρηση &raquo; Χρήστες &raquo;
+Διαχειριστείτε</span>.</p>
+
+<p>Ένας χρήστης μπορεί να ανήκει σε πολλές ομάδες. Στην Εξουσιοδότηση υπερισχύει
+η απαγόρευση : εαν ο χρήστης "jack" ανήκει στην ομάδα "family" και "friends", και
+μόνο η ομάδα "family" μπορεί να βλέπει το λεύκωμα "Christmas 2010"  τότε ο
+"jack" θα μπορεί να βλέπει το λεύκωμα "Christmas 2010".</p>
Index: /tags/2.6.0RC1/language/el_GR/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/help_misc.html	(revision 25596)
@@ -0,0 +1,10 @@
+<p>Μόλις δημιουργήσετε  τη γκαλερί σας, μπορείτε να τη ρυθμίσετε για τον επισκέπτη σας
+<ul>
+	<li>Η προεπιλεγμένη οθόνη, αν επιθυμείτε στο <span class="pwgScreen">Διαχείριση &raquo; Ρυθμίσεις &raquo; Επιλογές</span> tab 
+		<span class="pwgScreen">Ρυθμίσεις Επισκεπτών </span></li>
+	<li>Το προεπιλεγμένο θέμα στο <span class="pwgScreen">Διαχείριση &raquo; Ρυθμίσεις &raquo; Θέματα</span></li>
+	<li>Η προεπιλεγμένη γλώσσα στο <span class="pwgScreen">Διαχείριση &raquo; Ρυθμίσεις &raquo; Γλώσσες</span></li>
+ </ul>
+ Από προεπιλογή, κάθε νέος χρήστης θα κληρονομήσει αυτές τις ιδιότητες κατά την εγγραφή.
+</p>
+<p>Αν έχετε οποιαδήποτε ερώτηση, Piwigo κοινότητα θα σας καλωσορίσει στο <a href="http://piwigo.org/forum">φόρουμ της</a>.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,57 @@
+<fieldset>
+<legend>Δικαιώματα στις φωτογραφίες</legend>
+
+<p>Κάθε φωτογραφία έχει ένα <strong>επίπεδο προστασίας</strong> (ένα κλείδωμα). Κάθε χρήστης έχει επίσης ένα επίπεδο προστασίας (βασικό). There are 5 privacy levels:</p>
+<ol>
+  <li>Κανένας</li>
+  <li><em>Επαφές</em></li>
+  <li><em>Φίλοι (η οποία είναι υψηλότερη από μια Eπαφή)</em></li>
+  <li><em>Οικογένεια (η οποία είναι υψηλότερη από ένα Φίλο)</em></li>
+  <li><em>Διαχειριστές (το οποίο είναι υψηλότερο από ό, τι οποιοδήποτε άλλο επίπεδο)</em></li>
+</ol>
+
+<p>Τα υψηλότερα επίπεδα έχουν δικαιώματα σε χαμηλότερα επίπεδα. Για ένα συγκεκριμένο χρήστη, όσο υψηλότερο είναι το επίπεδο προστασίας της ιδιωτικότητας, τόσο περισσότερες φωτογραφίες μπορεί να δει.</p>
+
+<p>Για παράδειγμα, εάν η φωτογραφία "peter_wedding-0024.jpg" έχει δικαιώματα <em>"Οικογένεια"</em>, Τότε:</p>
+<ul>
+  <li>Πέτερ (που είναι <em>"Διαχειριστής"</em>) Θα δεί τη φωτογραφία γιατί <em>"Διαχειριστές"</em> μπορούν να δουν όλες τις φωτογραφίες</li>
+  <li>Μπεθ (που είναι μέλος στο <em>"Οικογένεια"</em> ) επίσης θα δει τις φωτογραφίες</li>
+  <li>Μαίρη(που είναι μια <em>"Φίλη"</em>) δεν θα δει τις φωτογραφίες</li>
+</ul>
+
+<p>Ένας χρήστης που δεν έχει άδεια για να δεί το περιεχόμενο του λευκώματος δεν θα δεί το ίδιο το λεύκωμα, ούτε καν τον τίτλο του. Η ίδια αρχή ισχύει και για μια ετικέτα.</p>
+
+<p>Μπορείτε να ρυθμίσετε το επίπεδο προστασίας της ιδιωτικότητας του χρήστη πάτε στην οθόνη <span class="pwgScreen">Διαχείριση &raquo; Χρήστες &raquo; Διαχειριστείτε </span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Δικαιώματα για τα Λευκώματα</legend>
+
+<p>Αν τα επίπεδα της ιδιωτικότητας δεν ταιριάζει στις ανάγκες σας, μπορείτε επίσης να διαχειριστείτε δικαιώματα στα λευκώματα για ένα χρήστη ή μια ομάδα. Μπορείτε να διαχειρίζεστε δικαιώματα για τις φωτογραφίες και τα λευκώματα ταυτόχρονα, χωρίς διενέξεις.</p>
+
+<p>Μπορείτε να απαγορεύσετε την πρόσβαση στα λευκώματα. Ενεργοποιήστε τον τύπο πρόσβασης στο λεύκωμα
+σε "ιδιωτικό" αν θέλετε να διαχειριστείτε δικαιώματα.</p>
+
+<p>Μπορείτε να ορίσετε ένα λεύκωμα ως ιδιωτικό με επεξεργασία κάποιου λευκώματος
+(<span class="pwgScreen">Διαχείριση &raquo; Λευκώματα &raquo; Διαχειριστείτε
+&raquo; Επεξεργαστείτε </span>) ή με τη ρύθμιση των επιλογών για όλο το δέντρο του λευκώματός σας
+(<span class="pwgScreen">Διαχείριση &raquo; Λευκώματα &raquo;
+Ιδιότητες &raquo; Δημόσιο / Ιδιωτικό</span>).</p>
+
+<p>Έτσι και το άλμπουμ είναι ιδιωτικό, μπορείτε να διαχειριστείτε δικαιώματα για τις ομάδες και
+τους χρήστες με 3 οθόνες:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Διαχείριση &raquo; Χρήστες &raquo; Διαχειριστείτε &raquo;
+  δράση δικαιωμάτων </span> (μία σύνδεση ανά χρήστη)</li>
+
+  <li><span class="pwgScreen">Διαχείριση &raquo; Χρήστες &raquo; Ομάδες &raquo;
+  δράση δικαιωμάτων</span> (μία σύνδεση ανά χρήστη)</li>
+
+  <li><span class="pwgScreen">Διαχείριση &raquo; Λευκώματα &raquo; Διαχειριστείτε &raquo; επεξεργαστείτε
+  δράση δικαιωμάτων λευκώματος</span> (μία σύνδεση ανά χρήστη)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/el_GR/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Οι φωτογραφίες εμφανίζονται στο λεύκωμα που αντιστοιχεί στο κατάλογο
+του αρχείου τους.</p>
+
+<p>Μπορείτε επίσης να εμφανίσετε μια φωτογραφία σε διάφορα λευκώματα, χωρίς διπλοκαλύψεις
+του αρχείου στον web server σας. Συσχετίστε τη φωτογραφία σε λεύκωμα από την
+οθόνη επεξεργασίας φωτογραφιών (ότι κάθε διαχειριστής μπορεί να φτάσει από τη σελίδα της φωτογραφίας
+από την πλευρά της γκαλερί).</p>
+
+<p>Τα εικονικά λευκώματα βασίζοται στην έννοια αυτή: δεν έχουν αντίστοιχους
+καταλόγους. Δημιουργία εικονικού λευκώματος
+από <span class="pwgScreen">Διαχείριση &raquo; Λευκώματα &raquo;
+Διαχειριστείται</span>.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Ιστορικό</h2>
+
+<p>Σε αυτές τις οθόνες, μπορείτε να παρακολουθείτε το ιστορικό των επισκέψεων της γκαλερί σας σύμφωνα με τις επιλογές έχετε επιλέξει στο: Διαχείρηση &raquo; Διαμόρφωση &raquo; Επιλογές &raquo; Ιστορικό</p>
+	
+<h3>Στατιστικά</h3>
+<ul>
+  <p>Εάν έχετε επιλέξει να καταγράφονται τις σελίδες που επισκέπτονται (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), μπορείτε να τους παρακολουθείται από αυτήν την καρτέλα..</p>
+	<li><strong>Παγκόσμια στατιστικά</strong>: επισκέψεις ανά έτος. </li>
+	<li><strong>Ετήσιες στατιστικά</strong>: επισκέψεις ανά μήνα του επιλεγμένου έτους.</li>
+	<li><strong>Μηνιαία στατιστικά</strong>: επισκέψεις ανά ημέρα στον επιλεγμένο μήνα .</li>
+	<li><strong>Ημερήσια στατιστικά</strong>: επισκέψεις ανά ώρα στην επιλεγμένη ημέρα.</li>
+</ul>
+
+<h3>Αναζήτηση</h3>
+<ul>
+  <p>Εάν έχετε επιλέξει να καταγράφονται οι σελίδες που επισκέπτονται(<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), μπορείτε να δείτε τα στοιχεία από αυτή την καρτέλα με τη βοήθεια διαφόρων φίλτρων.</p>
+	<li><strong>Φιλτράρισμα με ημερομηνία:</strong> επιλέξτε το εύρος ημερομηνιών αναζήτησης θέτοντας ημερομηνίες έναρξης και λήξης.</li>
+	<li><strong>Φιλτράρισμα με βάση τον τύπο του στοιχείου:</strong> επιλέξτε τον τύπο των στοιχείων για τις στατιστικές σχετικά με αυτό το στοιχείο.</li>
+	<li><strong>Φιλτράρισμα με βάση τον χρήστη:</strong> επιλέξετε τον χρήστη για τις στατιστικές σχετικά με το συγκεκριμένο χρήστη.</li>
+	<li><strong>Φιλτράρισμα με βάση τον αναγνωριστικό εικόνας:</strong> επιλέξτε το αναγνωριστικό εικόνας για τις στατιστικές σχετικά με αυτή την εικόνα.</li>
+	<li><strong>Φιλτράρισμα με βάση το όνομα του αρχείου:</strong> επιλέξετε το όνομα αρχείου για τις στατιστικές σχετικά με αυτό το αρχείο. </li>
+</ul>
Index: /tags/2.6.0RC1/language/el_GR/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Ειδοποίηση μέσω e-mail (NBM)</h2>
+
+<p>Διαμόρφωση και διαχείριση ειδοποιήσεων μέσω e-mail στους χρήστες ενημερώνοντας τους για τις αλλαγές στο δικτυακό σας τόπο.</p>
+
+<p>Αυτή η οθόνη αποτελείται από τρεις καρτέλες:</p>
+
+<h3>Ρυθμίσεις</h3>
+<p>Διαθέσιμο μόνο για webmasters, αυτή η καρτέλα καθορίζει τις παραμέτρους της ειδο[ποίησης μέσω e-mail.</p>
+
+<h3>Eγγραφή</h3>
+<p>Διαθέσιμο μόνο για webmasters, αυτή η καρτέλα διαχειρίζεται την εγγραφή ενός χρήστη για ειδοποιήσεις μέσω e-mail. Προσθήκη στους χρήστες στήν ενότητα εγγεγραμμένων για να λαμβάνουν ειδοποιήσεις με e-mail.</p>
+
+<h3>Αποστολή</h3>
+<p>Διαθέσιμο μόνο για webmasters και διαχειριστές, αυτή η καρτέλλα επιτρέπει στους διαχειρηστές να στέλνουν ειδοποιήσεις μέσω e-mail σε εγγεγραμμένους χρήστες.</p>
Index: /tags/2.6.0RC1/language/el_GR/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,68 @@
+<fieldset>
+  <legend>Γρήγορη Εκκίνηση</legend>
+
+<ol>
+  <li>Δημιουργήστε έναν κατάλογο στον υπολογιστή σας.</li>  
+
+  <li>Αντιγράψτε μερικές φωτογραφίες μέσα σε αυτόν τον κατάλογο, κι αλλάξετε το μέγεθός τους για προβολή σε ιστοσελίδες. <em>Προειδοποίηση</em>: το όνομα των αρχείων και καταλόγων πρέπει να περιέχει μόνο γράμματα, αριθμούς, "-", "_" ή ".". Όχι κενά διαστήματα, ούτε τονιζόμενους χαρακτήρες.</li>
+
+  <li>Με τη βοήθεια ενός προγράμματος FTP, αντιγράψτε τον κατάλογό σας στο κατάλογο "galleries" της Piwigo εγκατάστασης σας .</li>
+
+  <li>Συνδεθείτε στη γκαλερί σας και πηγαίνετε στο <span class="pwgScreen">Διαχείριση</span> και κάντε κλικ στο μεγάλο κουμπί Συγχρονισμός.</li>
+</ol>
+
+<p>Συγχαρητήρια! Έχετε δημιουργήσει με επιτυχία το πρώτο λεύκωμα της συλλογής φωτογραφιών σας.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Οργάνωση καταλόγων και αρχείων</legend>
+
+<ul>
+
+  <li>
+
+    <p>Καταλόγοι λευκωμάτων στον κατάλογο "galleries" του Piwigo.
+     Ακολουθεί παρακάτω το δέντρο καταλόγου μιας πολύ μικρής γκαλερί(αλλά
+    με πολλά χαρακτηριστικά γνωρίσματα):</p>
+
+    <pre>
+Γκαλλερί
+|-- γάμος
+|   |-- εορτασμός
+|   |   |-- άφιξη
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- αναχώρηση
+|   |       +-- paul-and-sarah.jpg
+|   +-- πάρτυ
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- μήνας του μέλιτος
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>Εκτός από "pwg_representative" (βλέπε τις εξηγήσεις παρακάτω), κάθε κατάλογο κάτω απο το "galleries" παράγει ένα λεύκωμα. Δεν υπάρχει όριο στο βάθος.</li>
+
+  <li>Βασικά, κάθε στοιχείο αντιπροσωπεύεται από ένα αρχείο. Ένα αρχείο μπορεί να είναι ένα
+  στοιχείο Piwigo εάν η επέκταση της είναι μεταξύ <code>file_ext</code> των
+  δυνατότητων παράμετρου διαμόρφωσης(βλέπε <span
+  class="filename">include/config_default.inc.php</span> file). Ένα αρχείο μπορεί
+  να είναι μια εικόνα εάν η επέκταση της είναι μεταξύ <code>picture_ext</code>
+  των δυνατότητων παράμετρου διαμόρφωσης.</li>
+
+  <li>Δεν υπάρχουν στοιχεία φωτογραφία (βίντεο, ήχους, κείμενα αρχείου, ό, τι θέλετε ...) αντιπροσωπεύονται από προεπιλογή από ένα εικονίδιο που αντιστοιχεί στο όνομα επέκτασης αρχείου. Προαιρετικά, μπορείτε να συνδέσετε μια μικρογραφία και ένα αντιπροσωπευτικό αρχείο (βλέπε video.avi στο παραπάνω παράδειγμα).</li>
+
+  <li><em>Προειδοποίηση</em>: το όνομα των αρχείων και καταλόγων πρέπει να περιέχει μόνο γράμματα, αριθμούς, "-", "_" ή ".". Όχι κενά διαστήματα, ούτε τονιζόμενους χαρακτήρες.</li>
+
+  <li>Αφού οι φωτογραφίες είναι σωστά τοποθετημένους
+  καταλόγους, μεταβείτε στη διεύθυνση: <span class="pwgScreen">Διαχείρηση &raquo; Εργαλεία &raquo;
+  Συνγχρονισμός</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/el_GR/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/search.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Search</h2>
+<h2>Αναζήτηση</h2>
+
+<p>Αυτή η σελίδα σας επιτρέπει να αναζητήσετε εικόνες στο συνόλο της γκαλερί σας.</p>
+
+<dl>
+
+  <dt>Αναζήτηση για λέξεις</dt>
+  <dd>Αναζήτηση για μία ή περισσότερες λέξεις ανάμεσα στα χαρακτηριστικά που σχετίζονται με τις εικόνες
+  της γκαλερί σας. Χρησιμοποιείται το * ως μπαλαντέρ για επιμέρους αποτελέσματα.</dd>
+
+  <dt>Αναζήτηση για δημιουργό</dt>
+  <dd>Χρησιμοποιείται το * ως μπαλαντέρ για επιμέρους αποτελέσματα.</dd>
+
+  <dt>Αναζήτηση κατά ημερομηνία</dt>
+  <dd>Επιλέξτε μια ημερομηνία και / ή μια ώρα λήξης για το ερώτημά σας. Αφήστε κενό πεδίο της ημερομηνίας
+  αν θέλετε να κάνετε ένα ερώτημα για «πριν». Το έτος κατά το τελευταίο
+  πεδίο πρέπει να αναγράφεται με την ακόλουθη μορφή: ΕΕΕΕ (π.χ. 2004)</dd>
+
+  <dt>Αναζήτηση σε λευκώματα</dt>
+  <dd>Επιλέξτε λεύκωμα ή λευκώματα που θέλετε να αναζητήσετε. Όλα
+  τα υπο-λευκώματα μπορούν να αναζητηθούν επιλέγοντας το μητρικό λεύκωμα και ενεργοποιώντας τη δυνατότητα
+  αναζήτησης σε υπο-λευκώματα.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/el_GR/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/el_GR/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Συγχρονισμός</h2>
+
+<p>Υπάρχουν δύο διαφορετικά είδη συγχρονισμού:</p>
+<ul>
+	<li>κατάλογοι / αρχεία</li>
+	<li>αρχεία μεταδεδομένων</li>
+</ul>
+
+<p>Συγχρονισμός αρχείων και καταλόγων είναι η ενημέρωση του δέντρου των καταλόγων σας με το δέντρο των λευκωμάτων σας από τη  βάση δεδομένων.
+Συγχρονισμός αρχείων μεταδεδομένων είναι η ενημέρωση πληροφοριών φωτογραφιών, όπως το μέγεθος αρχείου, διαστάσεις σε pixels, πληροφορίες EXIF ή IPTC, από τη  βάση δεδομένων.</p>
+
+<p>Όταν συγχρονίζεται τις μεταφορτώσεις σας με την γκαλερί σας θα πρέπει πρώτα να συγχρονίσετε τα αρχεία και τους καταλόγους.</p>
+
+<p>Η διαδικασία συγχρονισμού μπορεί να διαρκέσει μεγάλο χρονικό διάστημα (ανάλογα με το φορτίο του διακομιστή και τον αριθμό των στοιχείων που πρέπει να διαχειριστείτε) έτσι είναι δυνατό να κάνετε για κάθε λεύκωμα χωριστά.</p>
Index: /tags/2.6.0RC1/language/el_GR/index.php
===================================================================
--- /tags/2.6.0RC1/language/el_GR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/el_GR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/el_GR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "τα ονόματα των πινάκων της βάσης δεδομένων θα πάρουν αυτό το πρόθεμα (σας επιτρέπει να διαχειρίζεστε τους πίνακες σας καλύτερα)";
+$lang['enter a login for webmaster'] = "Εισάγετε ένα όνομα χρήστη για τον webmaster";
+$lang['webmaster login can\'t contain characters \' or "'] = "Το όνομα χρήστη δεν μπορεί να περιέχει τους χαρακτήρες ' ή \"";
+$lang['please enter your password again'] = "Παρακαλώ εισάγετε τον κωδικό πάλι";
+$lang['Keep it confidential, it enables you to access administration panel'] = "Κρατήστε το εμπιστευτικό, επιτρέπει να έχετε πρόσβαση σε πίνακα διαχείρισης";
+$lang['Password [confirm]'] = "Κωδικός [επιβεβαίωση]";
+$lang['verification'] = "Επιβεβαίωση";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "Χρειάζεστε βοήθεια; Ρωτήστε στο <a href=\"%s\">Πίνακα μηνυμάτων του Piwigo</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "Οι επισκέπτες θα μπορούν να χρησιμοποιήσουν αυτό το email για να επικοινωνήσουν με τον διαχειριστή του site";
+$lang['PHP 5 is required'] = "Aπαιτείτε PHP 5";
+$lang['It appears your webhost is currently running PHP %s.'] = "Φαίνετται ότι ο webhost τώρα τρέχει PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Το Piwigo θα προσπαθήσει να αλλάξει την διαμόρφωση της PHP 5 δημιουργώντας ή τροποποιώντας ένα .htaccess αρχείο.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Λάβε υπ' όψη ότι μπορείς να αλλάξεις την διαμόρφωση και να επανεκκινήσεις το Piwigo μετά από αυτό.";
+$lang['Try to configure PHP 5'] = "Προσπάθησε να διαμορφώσεις την PHP 5";
+$lang['Sorry!'] = "Συγγνώμη!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Το Piwigo δεν είναι σε θέση να διαμορφώσει την PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Πρέπει να αναφέρετε στην υποστήριξη του παροχέα ςσας για να διαπιστώσετε πως μπορείτε να αλλάξετε σε PHP 5 μόνοι σας.";
+$lang['Hope to see you back soon.'] = "Ελπίζουμε να σας δούμε πάλι σύντομα.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Συγχαρητήρια, η εγκατάσταση του Piwigo ολοκληρώθηκε';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Μια εναλλακτική λύση είναι να αντιγράψετε το κείμενο σε στο πλαίσιο παρακάτω και να το επικολλήστε στο αρχείο "local/config/database.inc.php" (Προειδοποίηση : το database.inc.php πρέπει να περιέχει ότι είναι στην περιοχή κειμένου, χωρίς enter ή κενό)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Η δημιουργία του αρχείου local/config/database.inc.php απέτυχε.';
+$lang['Download the config file'] = 'Κατέβασμα του αρχείου διαμόρωσης';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Μπορείς να κατεβάσεις το αρχείο διαμόρφωσης και να το ανεβάσεις στο local/config κατάλογο της εγκατάστασης σου.';
+$lang['Just another Piwigo gallery'] = 'Ακόμα μια γκαλερί Piwigo';
+$lang['Welcome to my photo gallery'] = 'Καλώς ήλθατε στη φωτογραφική μου γκαλερί'; 
+$lang['Admin configuration'] = 'Ρυθμίσεις Διαχειριστή της ιστοσελίδας';
+$lang['Basic configuration'] = 'Βασικές διαμόρφωση';
+$lang['Can\'t connect to server'] = 'Δεν είναι δυνατή η σύνδεση με τον διακομιστή';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Σύνδεση με διακομιστή επιτυχής, αλλά η σύνδεση με τη βάση δεδομένων είναι αδύνατη';
+$lang['Database configuration'] = 'Διαμόρφωση Βάσης Δεδομένων';
+$lang['Database name'] = 'Όνομα Βάσης Δεδομένων';
+$lang['Database table prefix'] = 'πρόθεμα πίνακα της βάσης δεδομένων ';
+$lang['Default gallery language'] = 'Γλώσσας προεπιλεγμένης γκαλερί';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Μην διστάσετε να συμβουλευτείτε το φόρουμ μας για οποιαδήποτε βοήθεια:%s';
+$lang['Host'] = 'διακομιστήw υποδοχής';
+$lang['Installation'] = 'Εγκατάσταση';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Έτσι Θα δείχνει στους επισκέπτες. Είναι απαραίτητο για την διαχείριση της ιστοσελίδας';
+$lang['Start Install'] = 'Ξεκινήστε την εγκατάσταση';
+$lang['User'] = 'Χρήστης';
+$lang['Welcome to your new installation of Piwigo!'] = 'Καλώς ήρθατε στην νέα σας εγκατάσταση του Piwigo!';
+$lang['also given by your host provider'] = 'Επίσης, δίνεται από την εταιρία φιλοξενίας σας';
+$lang['user login given by your host provider'] = 'Όνομα χρήστη που έχει λάβει από το φορέα υποδοχής σας';
+$lang['user password given by your host provider'] = 'Κωδικός προσβασης χρήστη που έχει λάβει από το φορέα υποδοχής σας';
+$lang['localhost or other, supplied by your host provider'] = 'localhost ή άλλο, που σας παρέχεται από τον πάροχο φιλοξενίας σας';
+?>
Index: /tags/2.6.0RC1/language/el_GR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/el_GR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ελληνικά [GR]
Index: /tags/2.6.0RC1/language/el_GR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/el_GR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/el_GR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Όλα τα υπο-άλμπουμ των ιδιωτικών άλμπουμ γίνονται ιδιωτικά';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Ως προληπτικό μέτρο, οι παρακάτω επεκτάσεις έχουν απενεργοποιηθεί. Θα πρέπει να ελέγξετε για αναβαθμίσεις επεκτάσεων πριν από την επανενεργοποίηση τους:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Ως προληπτικό μέτρο, τα ακόλουθα Θέματα έχουν απενεργοποιηθεί. Θα πρέπει να ελέγξετε για  αναβάθμιση Θεμάτων πριν από την επανενεργοποίηση τους:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Σε <i>%s</ i>, πριν <b>?></b>, εισάγετε:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Μόνο ένας διαχειριστής μπορεί να τρέξει αναβάθμιση: Παρακαλώ συνδεθείτε παρακάτω. ';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Μόνο τα προθέματα μικρογραφιών και η διεύθυνση ηλεκτρονικού ταχυδρομείου του webmaster έχουν σωθεί από προηγούμενες διαμορφώσεις';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Εκτελέστε έναν έλεγχο συντήρησης [Διαχείριση>Εργαλεία>Συντήρηση] Αν αντιμετωπίζετε κάποιο πρόβλημα.';
+$lang['SQL queries'] = 'ερωτήματα SQL';
+$lang['Statistics'] = 'Στατιστικά';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Η σελίδα αυτή προτείνει την αναβάθμιση της βάσης δεδομένων από την παλιά έκδοση Piwigo σας στη νέα έκδοση. Ο βοηθός αναβάθμισης νομίζει ότι τρέχετε την <strong>έκδοση %s</strong> (ή κάτι τέτοιο).';
+$lang['Upgrade from version %s to %s'] = 'Αναβάμηση απο έκδοση %s σε %s';
+$lang['Upgrade informations'] = 'Πληροφορίες Αναβάθμησης';
+$lang['Upgrade'] = 'Αναβάθμηση';
+$lang['User permissions and group permissions have been erased'] = 'Τα δικαιώματα χρηστών και ομάδων έχουν διαγραφτεί';
+$lang['You do not have access rights to run upgrade'] = 'Δεν έχετε δικαιώματα πρόσβασης για την εκτέλεση αναβάθμισης';
+$lang['total SQL time'] = 'Συνολικός χρόνος SQL';
+$lang['total upgrade time'] = 'Συνολικός χρόνος αναβάθμησης';
+?>
Index: /tags/2.6.0RC1/language/en_GB/about.html
===================================================================
--- /tags/2.6.0RC1/language/en_GB/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_GB/about.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>This photo gallery is based on Piwigo.</p>
+
+<p>Piwigo is photo gallery software for the web, built by an active community of users and developers. Extensions make Piwigo easily customisable. And, for icing on the cake, Piwigo is free and opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Visit the Piwigo website</a></p>
Index: /tags/2.6.0RC1/language/en_GB/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_GB/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_GB/admin.lang.php	(revision 25596)
@@ -0,0 +1,126 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['(this tag will be deleted)'] = '(this keyword will be deleted)';
+$lang['Add a criteria'] = 'Add a criterion';
+$lang['add new photos to caddie'] = "add new photos to collection";
+$lang['Add to caddie'] = "Add to collection";
+$lang['albums added in the database'] = "albums added to the database";
+$lang['Albums authorized thanks to group associations'] = "Albums authorised by group association";
+$lang['All optimizations have been successfully completed.'] = "All optimisations have been successfully completed.";
+$lang['Allow user customization'] = 'Allow user customisation';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "Are you sure you want to install this upgrade? You must check if this version needs prior uninstallation.";
+$lang['Authorize users to add comments on selected albums'] = "Authorise users to add comments on selected albums";
+$lang['Authorized'] = "Authorised";
+$lang['Caddie management'] = "Collection management";
+$lang['Caddie'] = "Collection";
+$lang['Complementary mail content'] = "Extra mail content";
+$lang['Database synchronization with files'] = 'Database synchronisation with files';
+$lang['Does not represent'] = "Is not thumbnail for";
+$lang['Duplicate selected tags'] = 'Duplicate selected keywords';
+$lang['Edit selected tags'] = "Edit selected keywords";
+$lang['Edit tags'] = "Edit keyword";
+$lang['Errors caption'] = "Error legend";
+$lang['errors during synchronization'] = "errors during synchronisation";
+$lang['even already synchronized photos'] = "including already synchronised photos";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "Permitted execution time exceeded, operation will continue [Estimated time: %d seconds].";
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'The following plugins may not be compatible with the new version of Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'The following themes may not be compatible with the new version of Piwigo:';
+$lang['FTP + Synchronization'] = 'FTP + Synchronisation';
+$lang['Group management'] = "Group management";
+$lang['I decide to update anyway'] = 'I choose to update anyway';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'This theme cannot be deleted, because other themes depend on it: %s';
+$lang['Instructions to use Piwigo'] = "How to use Piwigo";
+$lang['Last hit'] = "Latest hit";
+$lang['Last import'] = 'Latest import';
+$lang['Last revisions'] = "Latest revisions";
+$lang['Last send'] = "Latest send";
+$lang['Link all album photos to some existing albums'] = "Link all album photos to some existing album";
+$lang['Manage tags'] = 'Manage keywords';
+$lang['Manage the members'] = 'Manage members';
+$lang['Merge selected tags'] = 'Merge selected keywords';
+$lang['Merge tags'] = 'Merge keywords';
+$lang['Metadata synchronization results'] = "Metadata synchronisation results";
+$lang['Metadata synchronized from file'] = "Metadata synchronised from file";
+$lang['only perform a simulation (no change in database will be made)'] = "perform a simulation only (nothing will be changed in the database)";
+$lang['Operation in progress'] = 'Operation in progress.';
+$lang['Optimizations have been completed with some errors.'] = "Optimisations have been completed with some errors.";
+$lang['Orphan tags deleted'] = 'Orphan keywords deleted';
+$lang['Photo informations updated'] = "Photo information updated";
+$lang['photos added in the database'] = "photos added to the database";
+$lang['photos candidates for metadata synchronization'] = "candidate photos for metadata synchronisation";
+$lang['photos informations synchronized with files metadata'] = "photo information synchronised with file metadata";
+$lang['Purge never used notification feeds'] = "Purge unused notification feeds";
+$lang['Quick Local Synchronization'] = "Quick Local Synchronisation";
+$lang['reduce to single existing albums'] = "reduce to single existing album";
+$lang['Reinitialize check integrity'] = "Reinitialise integrity check";
+$lang['Remove from caddie'] = 'Remove from collection';
+$lang['remove tags'] = 'Remove keywords';
+$lang['Repair and optimize database'] = "Repair and optimise database";
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "Replacement of original templates by customised templates from the template-extension subfolder";
+$lang['Replacers (customized templates)'] = "Substitutes (customised templates)";
+$lang['Select at least two tags for merging'] = 'Select at least two keywords for merging';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "Subscribers listed (available) only if there are new elements to notify.";
+$lang['synchronize files metadata with database photos informations'] = "synchronise database photos with file metadata";
+$lang['synchronize files structure with database'] = "synchronise file structure with database";
+$lang['Synchronize metadata'] = "Synchronise metadata";
+$lang['Synchronize'] = "Synchronise";
+$lang['Tag "%s" already exists'] = "Keyword \"%s\" already exists";
+$lang['Tag "%s" is now a duplicate of "%s"'] = "Keyword \"%s\" is now a duplicate of \"%s\"";
+$lang['Tag "%s" was added'] = "Keyword \"%s\" has been added";
+$lang['Tag selection'] = "Keyword selection";
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Keywords <em>%s</em> merged into keyword <em>%s</em>';
+$lang['The %d following tags were deleted'] = "The following %d keywords have been deleted";
+$lang['The anomaly will be ignored until next application version'] = "The anomaly will be ignored until the next version of the application";
+$lang['The following tag was deleted'] = 'The following keyword was deleted';
+$lang['The number of comments a page must be between 5 and 50 included.'] = "The number of comments on a page must be between 5 and 50 inclusive.";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "The webmaster has added you to the mail notification list.";
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "The webmaster has removed you from the list for receiving notifications by mail.";
+$lang['There is no available subscribers to mail.'] = "There are no subscribers to be notified by mail.";
+$lang['Thumbnails generation in progress...'] = 'Thumbnail generation in progress...';
+$lang['Time to send mail is limited. Others mails are skipped.'] = "The maximum time for sending mail has been exceeded. Remaining emails have been skipped.";
+$lang['Update albums informations'] = "Update album information";
+$lang['Update photos information'] = "Update photo information";
+$lang['User list'] = "User list";
+$lang['Virtual albums to move'] = "Virtual albums to be moved";
+$lang['With no tag'] = 'With no keyword';
+$lang['You are running on development sources, no check possible.'] = "You are running a development version, no check possible.";
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter is deprecated, please remove it or rename it to <i>$conf[\'order_by_custom\']</i> !';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "Please upgrade your system to take full advantage of the application, otherwise it might work improperly, or not at all";
+
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is designed for photographers who want to view, manage, edit, enhance, organise, tag, and share photographs.';
+$lang['You have %d orphan tags: %s.'] = 'You have %d orphan keywords: %s.';
+$lang['Source tag'] = 'Source keyword';
+$lang['Select the destination tag'] = 'Select the destination keyword';
+$lang['Select at least one tag'] = 'Select at least one keyword';
+$lang['No destination tag selected'] = 'No destination keyword selected';
+$lang['New tag'] = 'New Keyword';
+$lang['Delete orphan tags'] = 'Delete orphan keywords';
+$lang['Delete selected tags'] = 'Deleted selected keywords';
+$lang['Add tags'] = 'Add keywords';
+$lang['Add a tag'] = 'Add a keyword';
+$lang['%d albums including'] = '%d albums included';
+$lang['%d album including'] = '%d album included';
+?>
Index: /tags/2.6.0RC1/language/en_GB/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_GB/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_GB/common.lang.php	(revision 25596)
@@ -0,0 +1,70 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: English [GB]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=716
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "English";
+$lang_info['country'] = "Great Britain";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "en";
+$lang_info['zero_plural'] = true;
+$lang_info['parent']= "en_UK";
+
+$lang['%d photo is also linked to current tags'] = "%d photo is also linked to current keywords";
+$lang['%d photos are also linked to current tags'] = "%d photos are also linked to current keywords";
+$lang['add this photo to your favorites'] = "add this photo to your favourites";
+$lang['All tags'] = "All keywords";
+$lang['About Piwigo'] = "About this website";
+$lang['An administrator must authorize your comment before it is visible.'] = "An administrator must authorise your comment before it becomes visible.";
+$lang['Any tag'] = "Any keyword";
+$lang['customize the appareance of the gallery'] = "customise the look of the gallery";
+$lang['Customize'] = "Customise";
+$lang['delete all photos from your favorites'] = "delete all photos from your favourites";
+$lang['delete this photo from your favorites'] = "delete this photo from your favourites";
+$lang['Favorites'] = "Favourites";
+$lang['display available tags'] = "display available keywords";
+$lang['display photos linked to this tag'] = "display photos linked to this keyword";
+$lang['Related tags'] = "Related keywords";
+$lang['remove this tag from the list'] = "remove this keyword from the list";
+$lang['Requested tag does not exist'] = 'Requested keyword does not exist';
+$lang['Search tags'] = "Search keywords";
+$lang['show tag cloud'] = "show keywords ungrouped";
+$lang['Tag results for'] = "Keyword results for";
+$lang['Tag'] = "Keyword";
+$lang['Tags'] = "Keywords";
+$lang['Your favorites'] = "Your favourites";
+$lang['Your Gallery Customization'] = "Your gallery customisation";
+
+
+$lang['no rate'] = 'no rating';
+$lang['display your favorites photos'] = 'display your favourite photos';
+$lang['You are not authorized to access the requested page'] = 'You are not authorised to access the requested page';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Successfully registered; you will soon receive an email with your connection settings. Welcome!';
+$lang['Please, enter a login'] = 'Please enter a login';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo encountered an irrecoverable error';
+?>
Index: /tags/2.6.0RC1/language/en_GB/index.php
===================================================================
--- /tags/2.6.0RC1/language/en_GB/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_GB/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/en_GB/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/en_GB/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/en_GB/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+English [GB]
Index: /tags/2.6.0RC1/language/en_UK/about.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/about.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>This photo gallery is based on Piwigo.</p>
+
+<p>Piwigo is a photo gallery software for the web, built by an active
+community of users and developers. Extensions make Piwigo easily
+customizable. Icing on the cake, Piwigo is free and opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Visit Piwigo website</a></p>
Index: /tags/2.6.0RC1/language/en_UK/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/admin.lang.php	(revision 25596)
@@ -0,0 +1,974 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang[' and %d virtual'] = " and %d virtual";
+$lang[' and %d virtuals'] = " and %d virtual";
+$lang['%d album including'] = "%d album including";
+$lang['%d album moved'] = "%d album moved";
+$lang['%d albums including'] = "%d albums including";
+$lang['%d albums moved'] = "%d albums moved";
+$lang['%d anomalies have been detected corrected.'] = "%d anomalies have been detected and corrected.";
+$lang['%d anomalies have been detected.'] = "%d anomalies have been detected.";
+$lang['%d anomalies have been ignored.'] = "%d anomalies have been ignored.";
+$lang['%d anomalies have not been corrected.'] = "%d anomalies have not been corrected.";
+$lang['%d anomaly has been corrected.'] = "%d anomaly has been corrected.";
+$lang['%d anomaly has been detected.'] = "%d anomaly has been detected.";
+$lang['%d anomaly has been ignored.'] = "%d anomaly has been ignored.";
+$lang['%d anomaly has not been corrected.'] = "%d anomaly has not been corrected.";
+$lang['%d association'] = "%d association";
+$lang['%d associations'] = "%d associations";
+$lang['%d day'] = '%d day';
+$lang['%d days'] = '%d days';
+$lang['%d group'] = "%d group";
+$lang['%d groups'] = "%d groups";
+$lang['%d guest'] = "%d guest";
+$lang['%d guests'] = "%d guests";
+$lang['%d hour'] = '%d hour';
+$lang['%d hours'] = '%d hours';
+$lang['%d line filtered'] = "%d line filtered";
+$lang['%d lines filtered'] = "%d lines filtered";
+$lang['%d mail was not sent.'] = "%d mail has not been sent.";
+$lang['%d mail was sent.'] = "%d mail has been sent.";
+$lang['%d mails were not sent.'] = "%d mails have not been sent.";
+$lang['%d mails were sent.'] = "%d mails have been sent.";
+$lang['%d member'] = "%d member";
+$lang['%d members'] = "%d members";
+$lang['%d minute'] = '%d minute';
+$lang['%d minutes'] = '%d minutes';
+$lang['%d month'] = '%d month';
+$lang['%d months'] = '%d months';
+$lang['%d of %d photos selected'] = '%d of %d photos selected';
+$lang['%d parameter was updated.'] = "%d parameter updated.";
+$lang['%d parameters were updated.'] = "%d parameters updated.";
+$lang['%d photo was deleted'] = "%d photo deleted";
+$lang['%d photos uploaded'] = '%d photos uploaded';
+$lang['%d photos were deleted'] = "%d photos deleted";
+$lang['%d physical'] = " %d physical";
+$lang['%d physicals'] = " %d physical";
+$lang['%d second'] = '%d second';
+$lang['%d seconds'] = '%d seconds';
+$lang['%d tag'] = "%d tag";
+$lang['%d tags'] = "%d tags";
+$lang['%d user comment rejected'] = "%d user comment rejected";
+$lang['%d user comment validated'] = "%d user comment validated";
+$lang['%d user comments rejected'] = "%d user comments rejected";
+$lang['%d user comments validated'] = "%d user comments validated";
+$lang['%d user deleted'] = "%d user deleted";
+$lang['%d user was not updated.'] = "%d user not updated.";
+$lang['%d user was updated.'] = "%d user updated.";
+$lang['%d user'] = "%d user";
+$lang['%d users deleted'] = "%d users deleted";
+$lang['%d users were not updated.'] = "%d users not updated.";
+$lang['%d users were updated.'] = "%d users updated.";
+$lang['%d users'] = "%d users";
+$lang['%d waiting for validation'] = "%d waiting for validation";
+$lang['%d week'] = '%d week';
+$lang['%d weeks'] = '%d weeks';
+$lang['%d year'] = '%d year';
+$lang['%d years'] = '%d years';
+$lang['%s ago'] = '%s ago';
+$lang['%s has been successfully updated.'] = "%s has been successfully updated.";
+$lang['%s in the future'] = '%s in the future';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s must be set to false in your local/config/config.inc.php file";
+$lang['%s photos can not be regenerated'] = '%s photos can not be regenerated';
+$lang['%s photos have been regenerated'] = '%s photos have been regenerated';
+$lang['%s value is not correct file because exif are not supported'] = "%s value is incorrect because exif are not supported";
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u users have automatic permission because they belong to a granted group.';
+$lang['(this tag will be deleted)'] = '(this tag will be deleted)';
+$lang['+ Add an upload box'] = '+ Add an upload box';
+$lang[', click on'] = ", click on";
+$lang['... or '] = '... or ';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> application empowers you to connect your Android phone or tablet to your Piwigo gallery, create some albums and upload several photos at once.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.';
+$lang['A locked gallery is only visible to administrators'] = 'A locked gallery is only visible to administrators';
+$lang['A new version of Piwigo is available.'] = "A new version of Piwigo is available.";
+$lang['Access type'] = "Access type";
+$lang['ACCESS_0'] = "Free access";
+$lang['ACCESS_1'] = "Access to all";
+$lang['ACCESS_2'] = "Access to registered users";
+$lang['ACCESS_3'] = "Access to administrators";
+$lang['ACCESS_4'] = "Access to webmasters";
+$lang['ACCESS_5'] = "No access";
+$lang['Action'] = 'Action';
+$lang['Actions'] = "Actions";
+$lang['Activate comments'] = 'Activate comments';
+$lang['Activate icon "%s"'] = 'Activate icon "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activate icon "new" next to albums and pictures';
+$lang['Activate Navigation Bar'] = 'Activate navigation bar';
+$lang['Activate Navigation Thumbnails'] = 'Activate navigation thumbnails';
+$lang['Activate'] = "Activate";
+$lang['Active Languages'] = 'Active Languages';
+$lang['Active Plugins'] = 'Active Plugins';
+$lang['Active Themes'] = 'Active Themes';
+$lang['Add a criteria'] = 'Add a criteria';
+$lang['Add a filter'] = 'Add a filter';
+$lang['add a new watermark'] = 'add a new watermark';
+$lang['Add a tag'] = "Add a tag";
+$lang['Add a user'] = "Add a user";
+$lang['Add a virtual album'] = "Add a virtual album";
+$lang['Add another set of photos'] = 'Add another set of photos';
+$lang['Add detailed content'] = "Add some detailed content";
+$lang['Add group'] = "Add group";
+$lang['Add New Language'] = 'Add New Language';
+$lang['add new photos to caddie'] = "add new photos to caddie";
+$lang['Add New Theme'] = "Add a new theme";
+$lang['Add Photos'] = 'Add Photos';
+$lang['Add tags'] = 'Add tags';
+$lang['Add to caddie'] = "Add to caddie";
+$lang['Add write access to the "%s" directory'] = 'Add write access to the "%s" directory';
+$lang['Add'] = "Add";
+$lang['Add/delete a permalink'] = "Add/delete a permalink";
+$lang['Added by %s'] = 'Added by %s';
+$lang['added'] = "added";
+$lang['Administration Home'] = 'Administration Home';
+$lang['administrators'] = 'administrators';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is photography software designed to manage large quantities of digital images and to do post production work.';
+$lang['Advanced features'] = "Advanced features";
+$lang['Album "%s" has been added'] = 'Album "%s" has been added';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" now contains %d photos';
+$lang['Album list management'] = "Album list management";
+$lang['Album manual order was saved'] = "Album manual order was saved";
+$lang['Album name'] = 'Album name';
+$lang['Album photos associated to the following albums: %s'] = "Album photos associated to the following albums: %s";
+$lang['Album updated successfully'] = "Album updated successfully";
+$lang['albums added in the database'] = "albums added in the database";
+$lang['Albums authorized thanks to group associations'] = "Albums authorized thanks to group associations";
+$lang['Albums automatically sorted'] = 'Albums automatically sorted';
+$lang['albums deleted in the database'] = "albums deleted in the database";
+$lang['All %d photos are selected'] = 'All %d photos are selected';
+$lang['All extensions are up to date.'] = 'All extensions are up to date.';
+$lang['All languages are up to date.'] = 'All languages are up to date.';
+$lang['All optimizations have been successfully completed.'] = "All optimizations have been successfully completed.";
+$lang['All plugins are up to date.'] = 'All plugins are up to date.';
+$lang['All themes are up to date.'] = 'All themes are up to date.';
+$lang['all'] = "all";
+$lang['Allow rating'] = "Allow rating";
+$lang['Allow user customization'] = 'Allow user customization';
+$lang['Allow user registration'] = "Allow user registration";
+$lang['Allow users to delete their own comments'] = "Allow users to delete their own comments";
+$lang['Allow users to edit their own comments'] = "Allow users to edit their own comments";
+$lang['Allowed file types: %s.'] = 'Allowed file types: %s.';
+$lang['an error happened'] = "an error occurred";
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'An error has occured during extract. Please check file permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.';
+$lang['An error has occured during upgrade.'] = 'An error has occured during upgrade.';
+$lang['An error occured during extraction (%s).'] = "An error occured during the files (%s) extraction.";
+$lang['An information email was sent to group "%s"'] = "Information email sent to group \"%s\"";
+$lang['and'] = "and";
+$lang['Anomaly'] = "Anomaly";
+$lang['any visitor can see this album'] = 'any visitor can see this album';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Only webmasters can see this tab, not administrators.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is a powerful tool to refine images and manage massive libraries on Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is designed for professional photographers with iPhoto simplicity.';
+$lang['Applications'] = 'Applications';
+$lang['Apply action'] = 'Apply action';
+$lang['apply automatic sort order'] = 'apply automatic sort order';
+$lang['Apply selected corrections'] = "Apply selected corrections";
+$lang['Apply to sub-albums'] = "Apply to sub-albums";
+$lang['Apply watermark if height is bigger than'] = 'Apply watermark if height is bigger than';
+$lang['Apply watermark if width is bigger than'] = 'Apply watermark if width is bigger than';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "Are you sure you want to install this upgrade? You must verify if this version does not need prior uninstallation.";
+$lang['Are you sure you want to delete this plugin?'] = "Are you sure you want to delete this plugin?";
+$lang['Are you sure you want to install this plugin?'] = "Are you sure you want to install this plugin?";
+$lang['Associate to album'] = "Associate to album";
+$lang['associate to group'] = "associate to group";
+$lang['Associated'] = "Associated";
+$lang['Authorize users to add comments on selected albums'] = "Authorize users to add comments on selected albums";
+$lang['Authorized'] = "Authorized";
+$lang['Automatic correction'] = "Automatic correction";
+$lang['automatic order'] = 'automatic order';
+$lang['Automatic sort order'] = 'Automatic sort order';
+$lang['Available on'] = 'Available on';
+$lang['Available only with HTML format'] = "Available only with HTML format";
+$lang['Available versions for'] = 'Available versions for';
+$lang['Average rate'] = "Average rate";
+$lang['average time'] = "average time";
+$lang['Basic settings'] = 'Basic settings';
+$lang['Batch Manager'] = 'Batch Manager';
+$lang['between'] = "between";
+$lang['between %d and %d pixels'] = 'between %d and %d pixels';
+$lang['between %.2f and %.2f'] = 'between %.2f and %.2f';
+$lang['bottom left corner'] = 'bottom left corner';
+$lang['bottom right corner'] = 'bottom right corner';
+$lang['Bound Theme'] = 'Bound Theme';
+$lang['By %s'] = 'By %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'By default, Piwigo will create a new websize from the HD (high definition) version of your photo.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'By default, the center of interest is placed in the middle of the photo.';
+$lang['By rank'] = 'By rank';
+$lang['Caddie management'] = "Caddie management";
+$lang['Caddie'] = "Caddie";
+$lang['cancel manual order'] = 'cancel manual order';
+$lang['Cancel'] = 'Cancel';
+$lang['Cannot delete the old permalink !'] = "The old permalink cannot be deleted!";
+$lang['Can\'t connect to server.'] = "Connection to server unavailable.";
+$lang['Can\'t create temporary file.'] = "Temporary file cannot be created.";
+$lang['Can\'t download archive.'] = "Archive cannot be downloaded.";
+$lang['Can\'t read or extract archive.'] = "Archive cannot be read or extracted.";
+$lang['Center of interest'] = 'Center of interest';
+$lang['Change Admin Colors'] = 'Change administration colors';
+$lang['Check all'] = "Check all";
+$lang['Check automatic corrections'] = "Check automatic corrections";
+$lang['Check for updates'] = "Check for updates";
+$lang['Check for upgrade failed for unknown reasons.'] = "Check for upgrade failed for unknown reasons.";
+$lang['Check for upgrade'] = "Check for upgrade";
+$lang['Check integrity'] = "Integrity check";
+$lang['Choose an action'] = 'Choose an action';
+$lang['Choose an option'] = "Choose an option";
+$lang['Classic display'] = "Classic display";
+$lang['clean'] = "clean up";
+$lang['Comments for all'] = "Comments for all";
+$lang['Complementary mail content'] = "Complementary mail content";
+$lang['Configuration'] = "Configuration";
+$lang['Confirm merge'] = 'Confirm merge';
+$lang['confirm'] = "confirm";
+$lang['Continue processing treatment'] = "Continue ongoing treatment";
+$lang['Correction applied with error'] = "Correction applied with error";
+$lang['Correction applied with success'] = "Correction successfully applied";
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Corrected anomaly will no longer be ignored';
+$lang['Correction'] = "Correction";
+$lang['create a new album'] = 'create a new album';
+$lang['create a new site'] = 'create a new site';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Create the "%s" directory at the root of your Piwigo installation';
+$lang['Create this site'] = "Create this site";
+$lang['Create'] = 'Create';
+$lang['created'] = "created";
+$lang['Crop'] = 'Crop';
+$lang['Current name'] = "Current name";
+$lang['custom']='Custom';
+$lang['Database synchronization with files'] = "Database synchronization with files";
+$lang['Database'] = "Database";
+$lang['Date'] = "Date";
+$lang['Day'] = "Day";
+$lang['Deactivate all'] = "Deactivate all";
+$lang['Deactivate'] = "Deactivate";
+$lang['Default comments order'] = 'Default comments order';
+$lang['Default display'] = "Default display";
+$lang['Default photos order'] = "Default photos order";
+$lang['Default user cannot be deleted'] = "Default user cannot be deleted";
+$lang['Default user does not exist'] = "The default user does not exist";
+$lang['default values'] = "default values";
+$lang['default'] = "default";
+$lang['delete album'] = "delete album";
+$lang['Delete multiple size images']='Delete multiple size images';
+$lang['Delete orphan tags'] = 'Delete orphan tags';
+$lang['delete photo'] = 'delete photo';
+$lang['Delete Representant'] = "Delete album thumbnail";
+$lang['Delete selected photos'] = "Delete selected photos";
+$lang['Delete selected tags'] = "Delete selected tags";
+$lang['Delete selected users'] = "Delete selected users";
+$lang['Delete this language'] = 'Delete this language';
+$lang['delete this site and all its attached elements'] = "delete this site and all the related information";
+$lang['Delete this theme'] = 'Delete this theme';
+$lang['delete'] = "delete";
+$lang['Deleted on'] = "Deleted on";
+$lang['deleted'] = "deleted";
+$lang['deleted'] = 'deleted';
+$lang['Deletions'] = "Deletions";
+$lang['Deny selected groups'] = "Deny selected groups";
+$lang['Deny selected users'] = "Deny selected users";
+$lang['Description'] = "Description";
+$lang['Detailed informations'] = 'Detailed information';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.';
+$lang['directories + files'] = "directories + files";
+$lang['Directory does not exist'] = 'Directory does not exist';
+$lang['Directory'] = "Directory";
+$lang['Discover album:'] = "Discover album:";
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'display maximal information (added albums and photos, deleted albums and photos)';
+$lang['Display options'] = "Display options";
+$lang['display'] = 'display';
+$lang['Dissociate from album'] = "Dissociate from album";
+$lang['dissociate from group'] = "dissociate from group";
+$lang['Dissociated'] = "Dissociated";
+$lang['Do you want to activate anyway?'] = 'Do you want to activate anyway?';
+$lang['Documentation'] = "Documentation";
+$lang['Does not represent'] = "Is not thumbnail for";
+$lang['Download,'] = 'Download,';
+$lang['Downloads'] = "Downloads";
+$lang['Drag to re-order'] = "Click-and-drag to re-order";
+$lang['Drop into album'] = 'Select an album';
+$lang['Dump Database'] = 'Dump Database';
+$lang['Duplicate selected tags'] = 'Duplicate selected tags';
+$lang['Duplicate'] = 'Duplicate';
+$lang['Duplicates'] = 'Duplicates';
+$lang['Edit album permissions'] = "Edit album permissions";
+$lang['Edit album'] = "Edit album";
+$lang['Edit photo information'] = "Edit photo information";
+$lang['Edit photo'] = 'Edit photo';
+$lang['Edit ranks'] = "Edit ranks";
+$lang['Edit selected tags'] = "Edit selected tags";
+$lang['Edit tags'] = "Edit tags";
+$lang['Element type'] = "Element type";
+$lang['Element'] = "Element";
+$lang['Email administrators when a comment is deleted'] = "Email administrators when a comment is deleted";
+$lang['Email administrators when a comment is modified'] = "Email administrators when a comment is modified";
+$lang['Email admins when a comment requires validation'] = "Email admins when a comment requires validation";
+$lang['Email admins when a new user registers'] = "Email admins when a new user registers";
+$lang['Email admins when a valid comment is entered'] = "Email admins when a valid comment is entered";
+$lang['Environment'] = "Environment";
+$lang['Error list'] = "List of errors";
+$lang['Error on file "%s" : %s'] = 'Error on file "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = "Error when sending email to %s [%s].";
+$lang['ERROR'] = 'ERROR';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.';
+$lang['Errors caption'] = "Errors legends";
+$lang['errors during synchronization'] = "errors during synchronization";
+$lang['even already synchronized photos'] = "even already synchronized photos";
+$lang['Everybody'] = 'Everybody';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "Execution time exceeded, the treatment must continue [Estimated time: %d seconds].";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = "Execution time is out, treatment must be continue [Estimated time: %d second].";
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use';
+$lang['existing album'] = 'existing album';
+$lang['Extend for templates'] = "Extend templates";
+$lang['Extensions Update'] = 'Extensions Update';
+$lang['Failed to write file to disk'] = 'Failed to write file to disk';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Features include gallery browsing, album creation and photo upload.';
+$lang['File upload stopped by extension'] = 'File upload stopped by extension';
+$lang['File'] = "File";
+$lang['File/directory read error'] = "File/directory read error";
+$lang['Find a new representant by random'] = "Find a new random album thumbnail";
+$lang['first photo added on %s'] = "first photo added on %s";
+$lang['Follow Orientation'] = 'Follow Orientation';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Following plugins may not be compatible with the new version of Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Following themes may not be compatible with the new version of Piwigo:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.';
+$lang['for the file format'] = "for the file format";
+$lang['for this file format'] = "for this file format";
+$lang['Forbid this language to users'] = 'Forbid this language to users';
+$lang['Forbid this theme to users'] = "Forbid this theme to users";
+$lang['Forbidden'] = "Forbidden";
+$lang['Form'] = "Form";
+$lang['FTP + Synchronization'] = 'FTP + Synchronization';
+$lang['Gallery title'] = "Gallery title";
+$lang['Gallery unlocked'] = 'Gallery unlocked';
+$lang['GD library is missing'] = "GD library is missing";
+$lang['GD version'] = "GD version";
+$lang['General'] = "General";
+$lang['General statistics'] = "General statistics";
+$lang['Generate multiple size images']='Generate multiple size images';
+$lang['Get Support on Piwigo Forum'] = 'Get support on Piwigo forum';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation';
+$lang['global mode'] = "global mode";
+$lang['Go to %s or %s for more informations'] = 'Go to %s or %s for more information';
+$lang['Go to'] = "Go to";
+$lang['Grant selected groups'] = "Grant selected groups";
+$lang['Grant selected users'] = "Grant selected users";
+$lang['Graphics Library'] = 'Graphics Library';
+$lang['group "%s" added'] = "group \"%s\" added";
+$lang['group "%s" deleted'] = "group \"%s\" deleted";
+$lang['group "%s" updated'] = "group \"%s\" updated";
+$lang['Group management'] = "Groups management";
+$lang['Group name'] = "Group name";
+$lang['Group'] = "Group";
+$lang['Groups and users'] = 'Groups and users';
+$lang['Groups'] = "Groups";
+$lang['Guest cannot be deleted'] = "Guest cannot be deleted";
+$lang['Guest Settings'] = 'Guest settings';
+$lang['guest'] = "guest";
+$lang['Guests'] = "Guests";
+$lang['height must be a number superior to'] = "height must be a number greater than";
+$lang['Height'] = 'Height';
+$lang['Hello'] = "Hello";
+$lang['Hello,'] = "Hello,";
+$lang['Help Me'] = 'Help Me';
+$lang['hide details'] = 'hide details';
+$lang['Hide'] = "Hide";
+$lang['High definition enabled'] = "High definition enabled";
+$lang['High definition'] = "High definition";
+$lang['high'] = "high";
+$lang['History'] = "History";
+$lang['Hit'] = "Hit";
+$lang['Hour'] = "Hour";
+$lang['Hoverbox display'] = "Hoverbox display";
+$lang['I decide to update anyway'] = 'I decide to update anyway';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.';
+$lang['If you encounter problems or have any question, please send a message to'] = "If you encounter problems or have any question, please send a message to";
+$lang['Ignore All'] = 'Ignore All';
+$lang['Ignore selected anomalies'] = "Ignore selected anomalies";
+$lang['Ignore this update'] = 'Ignore this update';
+$lang['Image id'] = "Image id";
+$lang['Image Quality'] = 'Image quality';
+$lang['Images manual order was saved'] = "Images manual order saved";
+$lang['Impossible automatic correction'] = "Automatic correction impossible";
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'This theme could not be activated, as the parent theme is missing: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible to deactivate this language, first set another language as default.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible to deactivate this language, you need at least one language.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible to deactivate this theme, you need at least one theme.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'This theme cannot be deleted, because other themes depends on it: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting';
+$lang['Inactive Languages'] = 'Inactive Languages';
+$lang['Inactive Plugins'] = 'Inactive Plugins';
+$lang['Inactive Themes'] = 'Inactive themes';
+$lang['include child albums'] = 'include child albums';
+$lang['Include display of recent photos grouped by dates'] = "Include display of recent photos grouped by dates";
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Include history data (Warning: server memory limit may be exceeded)';
+$lang['include photos with lower privacy level'] = 'include photos with lower privacy level';
+$lang['Information data registered in database'] = "Information data registered in database";
+$lang['Informations'] = "Information";
+$lang['Install on your computer,'] = 'Install on your computer,';
+$lang['Install'] = "Install";
+$lang['Installed Languages'] = 'Installed Languages';
+$lang['Installed Themes'] = "Installed Themes";
+$lang['Instructions to use Piwigo'] = "Instructions to use Piwigo";
+$lang['Invert'] = 'Invert';
+$lang['IP'] = "IP";
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.';
+$lang['jump to album'] = "jump to album";
+$lang['jump to photo'] = "jump to photo";
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = "Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will be sent emails when a new release is available (sometimes including a security bug fix, it is important to know and upgrade) and when major events happen to the project. Only a few emails a year.";
+$lang['Landscape'] = 'Landscape';
+$lang['Language has been successfully installed'] = 'Language has been successfully installed';
+$lang['Languages which need upgrade'] = 'Languages which need upgrade';
+$lang['Languages'] = 'Languages';
+$lang['Last hit'] = "Last hit";
+$lang['Last import'] = 'Last import';
+$lang['Last revisions'] = "Last revisions";
+$lang['Last send'] = "Last sent";
+$lang['Learn more'] = 'Learn more';
+$lang['leave'] = "leave";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = "Contacts";
+$lang['Level 2'] = "Friends";
+$lang['Level 4'] = "Family";
+$lang['Level 8'] = "Admins";
+$lang['Link all album photos to a new album'] = "Link all album photos to a new album";
+$lang['Link all album photos to some existing albums'] = "Link all album photos to some existing albums";
+$lang['Linked albums'] = "Linked albums";
+$lang['List'] = 'List';
+$lang['Local'] = "Local";
+$lang['Lock albums'] = "Lock albums";
+$lang['Lock gallery'] = "Lock gallery";
+$lang['Lock'] = "Lock";
+$lang['Locked'] = "Locked";
+$lang['Mail address is obligatory for all users'] = "Mail address is mandatory for all users";
+$lang['Mail content'] = "Mail content";
+$lang['Mail sent to %s [%s].'] = "Mail sent to %s [%s].";
+$lang['Mail theme'] = 'Mail theme';
+$lang['Main "guest" user does not exist'] = "The main \"guest\" user does not exist";
+$lang['Main "guest" user status is incorrect'] = "The main \"guest\" user status is incorrect";
+$lang['Main "webmaster" user does not exist'] = "The main \"webmaster\" user does not exist";
+$lang['Main "webmaster" user status is incorrect'] = "The main \"webmaster\" user status is incorrect";
+$lang['Main Page'] = 'Main page';
+$lang['Maintenance'] = "Maintenance";
+$lang['Make this language available to users'] = 'Make this language available to users';
+$lang['Make this theme available to users'] = 'Make this theme available to users';
+$lang['manage album photos'] = "manage album photos";
+$lang['Manage authorizations for selected albums'] = "Manage authorizations for selected albums";
+$lang['Manage permissions for group "%s"'] = "Manage permissions for the group \"%s\"";
+$lang['Manage permissions for user "%s"'] = "Manage permissions for the user \"%s\"";
+$lang['Manage Permissions'] = 'Manage Permissions';
+$lang['Manage photo ranks'] = 'Photos sort order';
+$lang['Manage photos'] = 'Manage photos';
+$lang['manage sub-albums'] = "manage sub-albums";
+$lang['Manage tags'] = "Manage tags";
+$lang['Manage the members'] = 'Manage the members';
+$lang['Manage this set of %d photos'] = 'Manage this set of %d photos';
+$lang['Manage'] = "Manage";
+$lang['manual order'] = 'manual order';
+$lang['Manual order'] = 'Manual order';
+$lang['Maximum file size: %sB.'] = 'Maximum file size: %sB.';
+$lang['Maximum height'] = 'Maximum height';
+$lang['Maximum width'] = 'Maximum width';
+$lang['Members'] = "Members";
+$lang['Menu Management'] = 'Menus';
+$lang['Merge selected groups'] = 'Merge selected groups';
+$lang['Merge selected tags'] = 'Merge selected tags';
+$lang['Merge tags'] = 'Merge tags';
+$lang['Metadata synchronization results'] = "Metadata synchronization results";
+$lang['Metadata synchronized from file'] = "Metadata synchronized from file";
+$lang['middle'] = 'middle';
+$lang['Minimum width'] = 'Minimum width';
+$lang['Minimum height'] = 'Minimum height';
+$lang['Minimum privacy level'] = "Minimum privacy level";
+$lang['Miscellaneous'] = 'Miscellaneous';
+$lang['Missing a temporary folder'] = 'Missing a temporary folder';
+$lang['Missing Plugins'] = 'Missing Plugins';
+$lang['modified'] = 'modified';
+$lang['Modify information'] = "Modify information";
+$lang['Month'] = "Month";
+$lang['Move albums'] = "Move albums";
+$lang['Move to album'] = 'Move to album';
+$lang['Move'] = "Move";
+$lang['Multiple Size'] = 'Multiple Size';
+$lang['Name of the duplicate'] = "Name of the duplicate";
+$lang['Name'] = "Name";
+$lang['New name'] = "New name";
+$lang['New parent album'] = "New parent album";
+$lang['New photos added'] = "New photos added";
+$lang['New photos were added'] = "New photos have been added";
+$lang['New tag'] = "New tag";
+$lang['New Version'] = 'New Version';
+$lang['new'] = "new";
+$lang['No destination tag selected'] = 'No destination tag selected';
+$lang['No display'] = "No display";
+$lang['No file was uploaded'] = 'No file was uploaded';
+$lang['No group is permitted to see this private album'] = 'No group is permitted to see this private album';
+$lang['No group selected, no action possible.'] = 'No group selected, no action possible.';
+$lang['No mail to send.'] = "No mail to be sent.";
+$lang['No members to manage'] = "No members to manage";
+$lang['No order field selected'] = 'No order field selected';
+$lang['No photo can be deleted'] = "No photo can be deleted";
+$lang['No photo in the current set.'] = 'No photo in the current set.';
+$lang['No photo in this album'] = "No photo in this album";
+$lang['No photo selected, %d photos in current set'] = 'No photo selected, %d photos in current set';
+$lang['No photo selected, no action possible.'] = 'No photo selected, no action possible.';
+$lang['No results'] = "No results";
+$lang['No user to send notifications by mail.'] = "No user to be notified by mail.";
+$lang['no write access'] = "no write access";
+$lang['none'] = "none";
+$lang['None'] = 'None';
+$lang['Not cropped correctly?'] = 'Not cropped correctly?';
+$lang['nothing'] = "nothing";
+$lang['Notification'] = "Notification";
+$lang['Notify administrators when a comment is'] = 'Notify administrators when a comment is';
+$lang['Number of comments per page'] = "Number of comments per page";
+$lang['Number of albums per page'] = 'Number of albums per page';
+$lang['Number of downloads'] = "Number of downloads";
+$lang['number of miniaturized photos'] = "number of thumbnails created";
+$lang['Number of rates'] = "Number of rates";
+$lang['Number of thumbnails to create'] = "Number of thumbnails to create";
+$lang['Numeric identifier : %d'] = 'Numeric identifier : %d';
+$lang['Obsolete Plugins'] = 'Obsolete Plugins';
+$lang['on the %d selected photos'] = 'on the %d selected photos';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'On your Linux, simply install Shotwell with your package manager and then activate Piwigo publishing option.';
+$lang['on'] = "on";
+$lang['only directories'] = "directories only";
+$lang['only perform a simulation (no change in database will be made)'] = "only perform a simulation (nothing will be changed in the database)";
+$lang['Only private albums are listed'] = "Only private albums are listed";
+$lang['Opacity'] = 'Opacity';
+$lang['Operating system'] = "Operating system";
+$lang['Operation in progress'] = 'Treatment in progress.';
+$lang['Optimizations have been completed with some errors.'] = "Optimizations have been completed with some errors.";
+$lang['Optional URL keyword'] = "Optional URL keyword";
+$lang['Options'] = "Options";
+$lang['Options'] = "Options";
+$lang['Order of menubar items has been updated successfully.'] = 'Order of menubar items has been updated successfully.';
+$lang['Original file : %s'] = 'Original file : %s';
+$lang['Original Size'] = 'Original Size';
+$lang['Original templates'] = "Original templates";
+$lang['Orphan tags deleted'] = 'Orphan tags deleted';
+$lang['Other plugins'] = "Other plugins available";
+$lang['Other private albums'] = "Other private albums";
+$lang['other'] = "other";
+$lang['Overall'] = "Overview";
+$lang['overrides existing values with empty ones'] = "overrides existing values with empty ones";
+$lang['Page banner'] = "Page banner";
+$lang['Page end'] = 'Page end';
+$lang['Pages seen'] = "Pages seen";
+$lang['Panorama'] = 'Panorama';
+$lang['Parameter'] = "Settings";
+$lang['Parameters'] = "Parameters";
+$lang['Parent album'] = "Parent album";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "Password confirmation is missing. Please confirm the chosen password.";
+$lang['Password is missing. Please enter the password.'] = "Password is missing. Please enter the password.";
+$lang['Path'] = "Path";
+$lang['Pending Comments'] = 'Pending Comments';
+$lang['pending validation'] = 'pending validation';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = "Permalink %s has previously been used by album %s. Delete it from the permalinks history first";
+$lang['Permalink %s is already used by album %s'] = "Permalink %s is already used by album %s";
+$lang['Permalink history'] = "Permalinks history";
+$lang['Permalink'] = "Permalink";
+$lang['Permalinks'] = "Permalinks";
+$lang['Permission denied'] = "Permission denied";
+$lang['Permission granted for groups'] = 'Permission granted for groups';
+$lang['Permission granted for users'] = 'Permission granted for users';
+$lang['Permission granted thanks to a group'] = "Permission granted thanks to a group";
+$lang['Permission granted'] = "Permission granted";
+$lang['Permission management'] = 'Permission management';
+$lang['Permissions'] = "Permissions";
+$lang['Photo %s of %s'] = 'Photo %s of %s';
+$lang['Photo informations updated'] = 'Photo information updated';
+$lang['Photo name'] = 'Photo name';
+$lang['Photo Page'] = 'Photo page';
+$lang['Photo Properties'] = 'Photo properties';
+$lang['Photo sizes with crop'] = 'Photo sizes with crop';
+$lang['Photo unreachable or no support'] = "Photo unreachable or unsupported format";
+$lang['photos added in the database'] = "photos added in the database";
+$lang['photos candidates for metadata synchronization'] = "photos candidates for metadata synchronization";
+$lang['photos deleted from the database'] = "photos deleted from the database";
+$lang['Photos generation in progress...'] = 'Photos generation in progress...';
+$lang['photos informations synchronized with files metadata'] = 'photos\' information synchronized with files metadata';
+$lang['photos per page'] = "photos per page";
+$lang['photos updated in the database'] = "photos updated in the database";
+$lang['Photos'] = "Photos";
+$lang['Piwigo Administration'] = "Piwigo Administration";
+$lang['Piwigo Announcements Newsletter'] = "Piwigo Announcement Newsletter";
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo cannot retrieve upgrade file from server';
+$lang['Piwigo configuration'] = "Piwigo configuration";
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin for Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin for iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish plugin for digiKam';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plugin for Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plugin for Shotwell';
+$lang['Piwigo Update'] = 'Piwigo Update';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Piwigo version'] = "Piwigo version";
+$lang['pixels'] = 'pixels';
+$lang['Please select at least two groups'] = 'Please select at least two groups';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "Please check \"plugins\" folder and sub-folders permissions (CHMOD).";
+$lang['Please wait...'] = 'Please wait...';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.';
+$lang['Plugin has been successfully copied'] = "The plugin has been successfully copied";
+$lang['Plugin list'] = "Plugins list";
+$lang['Plugins which need upgrade'] = "Plugins to be upgraded";
+$lang['Plugins'] = "Plugins";
+$lang['Portrait'] = 'Portrait';
+$lang['Position'] = "Position";
+$lang['Posted %s on %s'] = 'Posted %s on %s';
+$lang['Predefined filter'] = 'Predefined filter';
+$lang['Preferences'] = "Preferences";
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'The time to prepare the list of users who will be sent mail is limited. Other users are not listed.';
+$lang['Privacy level set to "%s"'] = 'Privacy level set to "%s"';
+$lang['Privacy level'] = "Privacy level";
+$lang['private'] = "private";
+$lang['Private'] = "Private";
+$lang['Properties'] = "Properties";
+$lang['Public / Private'] = "Public / Private";
+$lang['Public'] = "Public";
+$lang['public'] = "public";
+$lang['Purge compiled templates'] = "Purge compiled templates";
+$lang['Purge history detail'] = "Purge history details";
+$lang['Purge history summary'] = "Purge history summary";
+$lang['Purge never used notification feeds'] = "Purge never used notification feeds";
+$lang['Purge search history'] = "Purge search history";
+$lang['Purge sessions'] = "Purge sessions";
+$lang['Quick Local Synchronization'] = "Quick Local Synchronization";
+$lang['Random photo'] = "Random photo";
+$lang['randomly represented'] = "random album thumbnail";
+$lang['ranks'] = "ranks";
+$lang['Rate date'] = "Rate date";
+$lang['Rate'] = "Rate";
+$lang['Rated %d times, score : %.2f'] = 'Rated %d times, score : %.2f';
+$lang['Ratio'] = "Ratio";
+$lang['Rating by guests'] = "Rating by guests";
+$lang['Rating'] = "Rating";
+$lang['Read Piwigo Documentation'] = 'Read Piwigo Documentation';
+$lang['reduce to single existing albums'] = "reduce to single existing albums";
+$lang['Refresh photo set'] = 'Refresh photo set';
+$lang['Refresh'] = "Refresh";
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.';
+$lang['registered users'] = 'registered users';
+$lang['registration date'] = "registration date";
+$lang['Reinitialize check integrity'] = "Reinitialize integrity check";
+$lang['Reject'] = "Reject";
+$lang['Released on'] = "Released on";
+$lang['Remote'] = "Remote";
+$lang['Remove all filters'] = 'Remove all filters';
+$lang['remove author'] = 'remove author';
+$lang['remove creation date'] = 'remove creation date';
+$lang['Remove from caddie'] = 'Remove from caddie';
+$lang['remove tags'] = 'Remove tags';
+$lang['remove this filter'] = 'remove this filter';
+$lang['remove title'] = 'remove title';
+$lang['Rename'] = 'Rename';
+$lang['Repair and optimize database'] = "Repair and optimize database";
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "Replacement of original templates by customized templates from the template-extension subfolder";
+$lang['Replacers (customized templates)'] = "Substitutes (customized templates)";
+$lang['Representant'] = "Album Thumbnail";
+$lang['Representation of albums'] = "Album thumbnail";
+$lang['Representative'] = 'Album thumbnail';
+$lang['Represents'] = 'Is thumbnail for';
+$lang['Reset ignored updates'] = 'Reset ignored updates';
+$lang['Resize after upload'] = 'Resize after upload';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Resize after upload disabled due to the use of GD as graphic library';
+$lang['Resize'] = 'Resize';
+$lang['Restore default configuration. You will lose your plugin settings!'] = "Restore default configuration. You will lose your plugin settings!";
+$lang['Restore'] = "Restore";
+$lang['Save manual order'] = 'Save manual order';
+$lang['Save order'] = "Save order";
+$lang['Save Settings'] = 'Save Settings';
+$lang['Save Template Directory'] = 'Save template directory';
+$lang['Save to permalink history'] = "Save to permalinks history";
+$lang['Save visits in history for'] = 'Save visits in history for';
+$lang['Search for new images in the directories'] = "Search for new images in the directories";
+$lang['Searching...'] = "Searching...";
+$lang['Section'] = "Section";
+$lang['See you soon,'] = "See you soon,";
+$lang['See you soon.'] = "See you soon.";
+$lang['Select a file'] = 'Select a file';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Select a zone with your mouse to define a new center of interest.';
+$lang['Select an album'] = 'Select an album';
+$lang['Select at least one album'] = "Select at least one album";
+$lang['Select at least one comment'] = 'Select at least one comment';
+$lang['Select at least one photo'] = "Select at least one photo";
+$lang['Select at least one user'] = "Select at least one user";
+$lang['Select at least one tag'] = "Select at least one tag";
+$lang['Select at least two tags for merging'] = 'Select at least two tags for merging';
+$lang['Select files'] = 'Select files';
+$lang['Select groups...'] = 'Select groups...';
+$lang['Select recipients'] = "Select recipients";
+$lang['Select the destination tag'] = 'Select the destination tag';
+$lang['Select users...'] = 'Select users...';
+$lang['Select:'] = 'Select:';
+$lang['selection'] = "selection";
+$lang['Selection'] = 'Selection';
+$lang['Send an information email to group members'] = "Send an information email to group members";
+$lang['Send connection settings by email'] = 'Send connection settings by email';
+$lang['Send mail as'] = "Send mail as";
+$lang['Send mail on HTML format'] = "Send mail in HTML format";
+$lang['Send mail to users'] = "Send mail to users";
+$lang['Send'] = "Send";
+$lang['Set as default language for unregistered and new users'] = 'Set as default language for unregistered and new users';
+$lang['Set as default theme for unregistered and new users'] = "Set as default theme for unregistered and new users";
+$lang['Set author'] = 'Set author';
+$lang['Set creation date'] = 'Set creation date';
+$lang['Set title'] = 'Set title';
+$lang['set to'] = "set to";
+$lang['Settings'] = 'Settings';
+$lang['Sharpen'] = 'Sharpen';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.';
+$lang['show details'] = 'show details';
+$lang['Show info'] = "Show info";
+$lang['Show menubar'] = "Show menubar";
+$lang['simple visitors'] = 'simple visitors';
+$lang['Simulation'] = "Simulation";
+$lang['singly represented'] = 'fixed album thumbnail';
+$lang['Site manager'] = "Site manager";
+$lang['Some themes and plugins may be not available yet.'] = 'Some themes and plugins may be not available yet.';
+$lang['Some upgrades are available for extensions.'] = 'Some upgrades are available for extensions.';
+$lang['Source tag'] = 'Source tag';
+$lang['Start pLoader and add your photos.'] = 'Start pLoader and add your photos.';
+$lang['Start Upload'] = 'Start Upload';
+$lang['Statistics'] = "Statistics";
+$lang['Status of user "%s" updated'] = "User \"%s\" status updated";
+$lang['Status'] = "Status";
+$lang['status'] = "status";
+$lang['Storage album'] = "Storage album";
+$lang['sub-albums'] = "sub-albums";
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "Subscribe %s to Piwigo Announcements Newsletter";
+$lang['Subscribe %s'] = "Subscribe %s";
+$lang['Subscribe to notification by mail'] = "Subscribe to notification by mail";
+$lang['Subscribe'] = "Subscribe";
+$lang['Subscribe/unsubscribe users'] = "Subscribe/unsubscribe users";
+$lang['Subscribed'] = "Subscribed";
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "Subscribers could be listed (available) only if there is new elements to notify.";
+$lang['Sum of rates'] = "Sum of rates";
+$lang['Summary'] = "Summary";
+$lang['Support'] = "Support";
+$lang['Switch to clear or dark colors for administration'] = 'Switch to clear or dark colors for administration';
+$lang['synchronize files metadata with database photos informations'] = "synchronize database photos with files metadata";
+$lang['synchronize files structure with database'] = "synchronize files structure with database";
+$lang['Synchronize metadata'] = "Synchronize metadata";
+$lang['Synchronize'] = "Synchronize";
+$lang['Tag "%s" already exists'] = "Tag \"%s\" already exists";
+$lang['Tag "%s" is now a duplicate of "%s"'] = "Tag \"%s\" is now a duplicate of \"%s\"";
+$lang['Tag "%s" was added'] = "Tag \"%s\" has been added";
+$lang['Tag selection'] = "Tags selection";
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Tags <em>%s</em> merged into tag <em>%s</em>';
+$lang['target'] = "target";
+$lang['Templates configuration has been recorded.'] = "Templates configuration has been recorded.";
+$lang['Templates'] = "Templates";
+$lang['test this remote site'] = "test this remote site";
+$lang['test'] = "test";
+$lang['The %d following tags were deleted'] = "The following %d tags have been deleted";
+$lang['The anomaly will be ignored until next application version'] = "The anomaly will be ignored until next application version";
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'The center of interest is the most meaningful area of the photo.';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "The file or directory cannot be accessed (either it does not exist or the access is denied)";
+$lang['The following tag was deleted'] = 'The following tag was deleted';
+$lang['the forum'] = "the forum";
+$lang['The gallery URL is not valid.'] = "The gallery URL is not valid.";
+$lang['The name of a group must not contain " or \' or be empty.'] = "The name of a group must not contain \" or ' or be empty.";
+$lang['The name of an album must not be empty'] = "The name of an album must not be empty";
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "The name of directories and files must comprise only letters, numbers, \"-\", \"_\" or \".\"";
+$lang['The number of comments a page must be between 5 and 50 included.'] = "The number of comments on a page must be between 5 and 50 included.";
+$lang['The original image quality must be a number between %d and %d'] = 'The original image quality must be a number between %d and %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'The original maximum height must be a number between %d and %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'The original maximum width must be a number between %d and %d';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "The permalink name must be composed of a-z, A-Z, 0-9, \"-\", \"_\" or \"/\". It must not be numeric or begin with a number followed by \"-\"";
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'The picture dimensions will be reduced to %dx%d pixels.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'The Piwigo export plugin allows you to create albums and export photos.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'The uploaded file was only partially uploaded';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'The uploaded files exceed the post_max_size directive in php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "The version of %s [%s] installed is not compatible with the version required [%s]";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "The webmaster has subscribed you to be notified by mail.";
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "The webmaster has unsubscribed you from receiving notifications by mail.";
+$lang['The whole page'] = 'The whole page';
+$lang['The whole set'] = 'The whole set';
+$lang['the wiki'] = "the wiki";
+$lang['Theme has been successfully installed'] = 'Theme has been successfully installed';
+$lang['Themes which need upgrade'] = 'Themes which need upgrade';
+$lang['Themes'] = "Themes";
+$lang['There is no available subscribers to mail.'] = "There is no subscribers to be notified by mail.";
+$lang['There is no group in this gallery.'] = 'There is no group in this gallery.';
+$lang['There is no other language available.'] = 'There is no other language available.';
+$lang['There is no other plugin available.'] = 'There is no other plugin available.';
+$lang['There is no other theme available.'] = 'There is no other theme available.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'This album contains %d photos, added between %s and %s.';
+$lang['This album contains %d photos, added on %s.'] = 'This album contains %d photos, added on %s.';
+$lang['This album contains no photo.'] = 'This album contains no photo.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'This is a major update, with <a href="%s">new exciting features</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'This is a minor update, with only bug corrections.';
+$lang['This name is already used by another group.'] = "This name is already used by another group.";
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'THIS PLUGIN IS NOW PART OF PIWIGO CORE! UNINSTALL IT NOW!';
+$lang['This group will be set to default'] = "This group will be used by default";
+$lang['This group will be unset to default'] = "This group will no longer be used by default";
+$lang['This site already exists'] = "This site already exists";
+$lang['This theme was not designed to be directly activated'] = 'This theme was not designed to be directly activated';
+$lang['Thumbnail'] = "Thumbnail";
+$lang['Thumbnails generation in progress...'] = 'Thumbnails generation in progress...';
+$lang['Time to send mail is limited. Others mails are skipped.'] = "The time to send mail is limited. Others mails have been skipped.";
+$lang['Time'] = "Time";
+$lang['Title'] = "Title";
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.';
+$lang['To send ?'] = "To send?";
+$lang['To subscribe'] = "To subscribe";
+$lang['To unsubscribe'] = "To unsubscribe";
+$lang['Toggle \'default group\' property'] = "Reverse 'default group' property";
+$lang['Tools'] = "Tools";
+$lang['top left corner'] = 'top left corner';
+$lang['top right corner'] = 'top right corner';
+$lang['total time'] = "total time";
+$lang['Two updates are available'] = 'Two updates are available';
+$lang['Type here the author name'] = 'Type the author name here';
+$lang['Type here the title'] = 'Type the title here';
+$lang['Type here the name of the new group'] = 'Type the name of the new group here';
+$lang['Type in a search term'] = "Type in a search term";
+$lang['Unable to check for upgrade.'] = "Unable to check for upgrade.";
+$lang['Unable to dump database.'] = 'Unable to dump database.';
+$lang['Uncheck all'] = "Uncheck all";
+$lang['Uninstall'] = "Uninstall";
+$lang['Uninstalled Plugins'] = 'Uninstalled Plugins';
+$lang['unit mode'] = "single mode";
+$lang['Unknown upload error'] = 'Unknown upload error';
+$lang['unknown'] = 'unknown';
+$lang['Unlock gallery'] = 'Unlock gallery';
+$lang['Unlocked'] = "Unlocked";
+$lang['unset'] = "unset";
+$lang['Unsubscribe from notification by mail'] = "Unsubscribe from notification by mail";
+$lang['Unsubscribed'] = "Unsubscribed";
+$lang['Update albums informations'] = 'Update albums\' information';
+$lang['Update All'] = 'Update All';
+$lang['Update Complete'] = 'Update Complete';
+$lang['Update in progress... Please wait.'] = 'Update in progress... Please wait.';
+$lang['Update photos information'] = 'Update photos\' information';
+$lang['update the database from files'] = "update the database with files";
+$lang['Update to Piwigo %s'] = 'Update to Piwigo %s';
+$lang['Updates'] = 'Updates';
+$lang['Upload Photos'] = 'Upload Photos';
+$lang['Upload'] = "Upload";
+$lang['Uploaded Photos'] = 'Uploaded Photos';
+$lang['Use the default photo sort order (defined in the configuration file)'] = "Use the default photo sort order (defined in the configuration file)";
+$lang['Used metadata'] = "Metadata used";
+$lang['user "%s" added'] = "user \"%s\" added";
+$lang['User "%s" created with "%s" like password'] = "User \"%s\" created with \"%s\" as password";
+$lang['User %s [%s] added.'] = "User %s [%s] added.";
+$lang['User %s [%s] was added to the subscription list.'] = "User %s [%s] added to the subscription list.";
+$lang['User %s [%s] was not added to the subscription list.'] = "User %s [%s] not added to the subscription list.";
+$lang['User %s [%s] was not removed from the subscription list.'] = "User %s [%s] not removed from the subscription list.";
+$lang['User %s [%s] was removed from the subscription list.'] = "User %s [%s] removed from the subscription list.";
+$lang['User comments validation'] = "User comments validation";
+$lang['User list'] = "Users list";
+$lang['User status'] = "User status";
+$lang['User'] = "User";
+$lang['Users'] = "Users";
+$lang['user_status_admin'] = "Administrator";
+$lang['user_status_generic'] = "Generic";
+$lang['user_status_guest'] = "Guest";
+$lang['user_status_normal'] = "User";
+$lang['user_status_webmaster'] = "Webmaster";
+$lang['Validate'] = "Validate";
+$lang['Validation'] = "Validation";
+$lang['Version'] = "Version";
+$lang['View in gallery'] = 'View in gallery';
+$lang['Virtual album added'] = "Virtual album added";
+$lang['Virtual album deleted'] = "Virtual album deleted";
+$lang['Virtual album name'] = "Virtual album name";
+$lang['Virtual album'] = "Virtual album";
+$lang['Virtual albums to move'] = "Virtual albums to move";
+$lang['Virtual Links'] = 'Virtual Links';
+$lang['Visit Gallery'] = 'Visit the gallery';
+$lang['Visit language site'] = 'Visit language site';
+$lang['Visit Piwigo project website'] = 'Visit Piwigo project website';
+$lang['Visit plugin site'] = 'Visit plugin site';
+$lang['Visit theme site'] = 'Visit theme site';
+$lang['Visited %d times'] = 'Visited %d times';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'visitors need to login and have the appropriate permissions to see this album';
+$lang['Waiting'] = "Pending";
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WARNING! This plugin does not seem to be compatible with this version of Piwigo.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = "Warning: subscribing or unsubscribing will send mails to users";
+$lang['Watermark'] = 'Watermark';
+$lang['Web Form'] = 'Web Form';
+$lang['Webmaster cannot be deleted'] = "Webmaster cannot be deleted";
+$lang['Webmaster status is required.'] = 'Webmaster status is required.';
+$lang['Week starts on'] = 'Week starts on';
+$lang['Who can see these photos?'] = 'Who can see these photos?';
+$lang['Who can see this photo?'] = 'Who can see this photo?';
+$lang['width must be a number superior to'] = "width must be a number greater than";
+$lang['Width'] = 'Width';
+$lang['With blank value, gallery title will be used'] = "If blank, the gallery title will be used";
+$lang['With no album'] = 'With no album';
+$lang['With no tag'] = 'With no tag';
+$lang['With no virtual album'] = 'With no virtual album';
+$lang['wrong filename'] = "wrong filename";
+$lang['X Position'] = 'X Position';
+$lang['X Repeat'] = 'X Repeat';
+$lang['Y Position'] = 'Y Position';
+$lang['Year'] = "Year";
+$lang['You are running on development sources, no check possible.'] = "You are running on development sources, no check possible.";
+$lang['You are running the latest version of Piwigo.'] = "You are running Piwigo latest version.";
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.';
+$lang['You can activate only one mobile theme.'] = 'You can activate only one mobile theme.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).';
+$lang['You cannot delete your account'] = "You cannot delete your account";
+$lang['You cannot move an album in its own sub album'] = "You cannot move an album in its own sub album";
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'You can\'t define a default photo order because you have a custom setting in your local configuration.';
+$lang['You have %d orphan tags: %s.'] = 'You have %d orphan tags: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = "You have subscribed to receive notifications by mail.";
+$lang['You have unsubscribed from receiving notifications by mail.'] = "You have unsubscribed from being notified by mail.";
+$lang['You might go to plugin list to install and activate it.'] = "Go to the plugins list to install and activate it.";
+$lang['You need to confirm deletion'] = "You must confirm deletion";
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "You should upgrade your system to take full advantage of the application, otherwise the application could work improperly, or not at all";
+$lang['Your configuration settings are saved'] = 'Your configuration settings are saved';
+$lang['Zoom'] = 'Zoom';
+$lang['[%s] Visit album %s'] = "[%s] Visit album %s";
+$lang['[NBM] Problems or questions'] = "[NBM] Problems or questions";
+$lang['Purge user cache'] = 'Purge user cache';
+$lang['Loading...'] = 'Loading...';
+$lang['Show %s users'] = 'Show %s users';
+$lang['No matching user found'] = 'No matching user found';
+$lang['Showing %s to %s of %s users'] = 'Showing %s to %s of %s users';
+$lang['(filtered from %s total users)'] = '(filtered from %s total users)';
+$lang['No user selected, no action possible.'] = 'No user selected, no action possible.';
+$lang['%d of %d users selected'] = '%d of %d users selected';
+$lang['No user selected of %d users'] = 'No user selected of %d users';
+$lang['All %d users are selected'] = 'All %d users are selected';
+$lang['on the %d selected users'] = 'on the %d selected users';
+$lang['User %s added'] = 'User %s added';
+$lang['Registered on %s, %s.'] = 'Registered on %s, %s.';
+$lang['Last visit on %s, %s.'] = 'Last visit on %s, %s.';
+$lang['Change password'] = 'Change password';
+$lang['Password updated'] = 'Password updated';
+$lang['Change username'] = 'Change username';
+$lang['Update user'] = 'Update user';
+$lang['User %s updated'] = 'User %s updated';
+$lang['Users modified'] = 'Users modified';
+?>
Index: /tags/2.6.0RC1/language/en_UK/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: English [UK]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=417
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "English";
+$lang_info['country'] = "Great Britain";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "en";
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = "%d album updated";
+$lang['%d albums updated'] = "%d albums updated";
+$lang['%d comment to validate'] = "%d comment to validate";
+$lang['%d comment'] = "%d comment";
+$lang['%d comments to validate'] = "%d comments to validate";
+$lang['%d comments'] = "%d comments";
+$lang['%d hit'] = "%d hit";
+$lang['%d hits'] = "%d hits";
+$lang['%d Kb'] = '%d KB';
+$lang['%d new comment'] = "%d new comment";
+$lang['%d new comments'] = "%d new comments";
+$lang['%d new photo'] = "%d new photo";
+$lang['%d new photos'] = "%d new photos";
+$lang['%d new user'] = "%d new user";
+$lang['%d new users'] = "%d new users";
+$lang['%d photo is also linked to current tags'] = "%d photo is also linked to current tags";
+$lang['%d photo'] = "%d photo";
+$lang['%d photos are also linked to current tags'] = "%d photos are also linked to current tags";
+$lang['%d photos'] = "%d photos";
+$lang['%d rate'] = '%d rate';
+$lang['%d rates'] = "%d rates";
+$lang['(!) This comment requires validation'] = '(!) This comment requires validation';
+$lang['... or browse your empty gallery'] = '... or browse your empty gallery';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... or please deactivate this message, I will find my way by myself';
+$lang['2small'] = 'XXS - tiny';
+$lang['A comment on your site'] = "A comment on your site";
+$lang['About Piwigo'] = "About Piwigo";
+$lang['About'] = "About";
+$lang['Accelerate diaporama speed'] = "Increase slideshow speed";
+$lang['Add a comment'] = "Add a comment";
+$lang['add this photo to your favorites'] = "add this photo to your favorites";
+$lang['Admin: %s'] = "Admin: %s";
+$lang['Administration'] = "Administration";
+$lang['Album results for'] = "Album results for";
+$lang['Album'] = "Album";
+$lang['Album: %s'] = "Album: %s";
+$lang['Albums'] = "Albums";
+$lang['All tags'] = "All tags";
+$lang['all'] = "all";
+$lang['All'] = "All";
+$lang['An administrator must authorize your comment before it is visible.'] = "An administrator must authorize your comment before it becomes visible.";
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood system: please wait a moment before trying to post another comment';
+$lang['Any tag'] = "Any tag";
+$lang['Are you sure?'] = "Are you sure?";
+$lang['ascending'] = "ascending";
+$lang['At least one listed rule must be satisfied.'] = "At least one listed criterion must be satisfied.";
+$lang['Author'] = "Author";
+$lang['author(s) : %s'] = 'author(s): %s';
+$lang['Author: %s'] = "Author: %s";
+$lang['Auto login'] = "Auto login";
+$lang['available for administrators only'] = "available for administrators only";
+$lang['Bad request'] = 'Bad request';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "Bad status for user \"guest\", default status will be used. Please notify the webmaster.";
+$lang['Best rated'] = "Best rated";
+$lang['Browser: %s'] = "Browser: %s";
+$lang['Calendar'] = "Calendar";
+$lang['Change my password'] = 'Change my password';
+$lang['Check your email for the confirmation link'] = 'Check your email for the confirmation link';
+$lang['chronology_monthly_calendar'] = "Monthly calendar";
+$lang['chronology_monthly_list'] = "Monthly list";
+$lang['chronology_weekly_list'] = "Weekly list";
+$lang['Click here if your browser does not automatically forward you'] = "Click here if your browser does not automatically forward you";
+$lang['Click on the photo to see it in high definition'] = "Click on the photo to see it in high definition";
+$lang['Close this window'] = "Close this window";
+$lang['cloud'] = "cloud";
+$lang['Comment by %s'] = "Comment by %s";
+$lang['comment date'] = "comment date";
+$lang['Comment'] = "Comment";
+$lang['Comment: %s'] = "Comment: %s";
+$lang['Comments'] = "Comments";
+$lang['Complete RSS feed (photos, comments)'] = "Complete RSS feed (photos, comments)";
+$lang['Confirm Password'] = "Confirm Password";
+$lang['Connected user: %s'] = "Connected user: %s";
+$lang['Connection settings'] = "Connection settings";
+$lang['Contact webmaster'] = "Contact webmaster";
+$lang['Contact'] = "Contact";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Cookies are blocked or not supported by your browser. You must enable cookies to log in.";
+$lang['Create a new account'] = "Create a new account";
+$lang['created after %s (%s)'] = "created after %s (%s)";
+$lang['created before %s (%s)'] = "created before %s (%s)";
+$lang['created between %s (%s) and %s (%s)'] = "created between %s (%s) and %s (%s)";
+$lang['created on %s'] = "created on %s";
+$lang['Created on'] = "Created on";
+$lang['Creation date'] = "Creation date";
+$lang['Current password is wrong'] = "Current password is wrong";
+$lang['customize the appareance of the gallery'] = "customize the look of the gallery";
+$lang['Customize'] = "Customize";
+$lang['Date created, new &rarr; old'] = 'Date created, new &rarr; old';
+$lang['Date created, old &rarr; new'] = 'Date created, old &rarr; new';
+$lang['Date posted, new &rarr; old'] = 'Date posted, new &rarr; old';
+$lang['Date posted, old &rarr; new'] = 'Date posted, old &rarr; new';
+$lang['Date'] = "Date";
+$lang['day'][0] = "Sunday";
+$lang['day'][1] = "Monday";
+$lang['day'][2] = "Tuesday";
+$lang['day'][3] = "Wednesday";
+$lang['day'][4] = "Thursday";
+$lang['day'][5] = "Friday";
+$lang['day'][6] = "Saturday";
+$lang['Default'] = "Default";
+$lang['delete all photos from your favorites'] = "delete all photos from your favorites";
+$lang['delete this photo from your favorites'] = "delete this photo from your favorites";
+$lang['Delete'] = "Delete";
+$lang['descending'] = "descending";
+$lang['Desktop'] = 'Desktop';
+$lang['Dimensions'] = "Dimensions";
+$lang['display a calendar by creation date'] = "display a calendar by creation date";
+$lang['display a calendar by posted date'] = "display a calendar by posted date";
+$lang['display a set of random photos'] = "display a set of random photos";
+$lang['display all photos in all sub-albums'] = "display all photos in all sub-albums";
+$lang['display available tags'] = "display available tags";
+$lang['display best rated photos'] = "display best rated photos";
+$lang['display each day with photos, month per month'] = "display each day with photos, month per month";
+$lang['display last user comments'] = "display last user comments";
+$lang['display most recent photos'] = "display most recent photos";
+$lang['display most visited photos'] = "display most visited photos";
+$lang['display only recently posted photos'] = "display only recently posted photos";
+$lang['display photos linked to this tag'] = "display photos linked to this tag";
+$lang['display recently updated albums'] = "display recently updated albums";
+$lang['display this album'] = "display this album";
+$lang['display your favorites photos'] = "display your favorites photos";
+$lang['Display'] = "Display";
+$lang['Download this file'] = "Download this file";
+$lang['Download'] = "download";
+$lang['Each listed rule must be satisfied.'] = 'Each of the listed criteria must be satisfied.';
+$lang['Edit a comment'] = "Edit a comment";
+$lang['edit'] = "edit"; //TO remove
+$lang['Edit'] = 'Edit';
+$lang['Email address is missing. Please specify an email address.'] = "Email address is missing. Please specify an email address.";
+$lang['Email address'] = "Email address";
+$lang['Email address is mandatory'] = 'Email address is mandatory';
+$lang['Email: %s'] = "Email: %s";
+$lang['Empty query. No criteria has been entered.'] = 'Empty query. No criteria have been entered.';
+$lang['End-Date'] = "End date";
+$lang['Enter your new password below.'] = 'Enter your new password below.';
+$lang['Enter your personnal informations'] = "Enter your personal data";
+$lang['Error sending email'] = "Error when sending email";
+$lang['excluded'] = "excluded";
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['Expand all albums'] = "Expand all albums";
+$lang['Favorites'] = "Favorites";
+$lang['File name'] = "File name";
+$lang['File name, A &rarr; Z'] = 'File name, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'File name, Z &rarr; A';
+$lang['File'] = "File";
+$lang['Filesize'] = "Filesize";
+$lang['Filter and display'] = "Filter and display";
+$lang['Filter'] = "Filter";
+$lang['First'] = "First";
+$lang['First Page'] = 'First page';
+$lang['Forbidden'] = 'Forbidden';
+$lang['Forgot your password?'] = 'Forgot your password?';
+$lang['from %s to %s'] = "from %s to %s";
+$lang['Go back to the album'] = "Go back to the album";
+$lang['Go through the gallery as a visitor'] = "Navigate the gallery as a visitor";
+$lang['group by letters'] = "group by letters";
+$lang['guest'] = "guest";
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hello %s, your Piwigo photo gallery is empty!';
+$lang['Hello %s,'] = 'Hello %s,';
+$lang['Hello'] = "Hello";
+$lang['Help'] = "Help";
+$lang['Here are your connection settings'] = 'Here are your connection settings';
+$lang['Home'] = "Home";
+$lang['html tags are not allowed in login'] = 'html tags are not allowed in login';
+$lang['I want to add photos'] = 'I want to add photos';
+$lang['Identification'] = "Identification";
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'If this was a mistake, just ignore this email and nothing will happen.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'If you think you\'ve received this email in error, please contact us at %s';
+$lang['in %d sub-album'] = "in %d sub-album";
+$lang['in %d sub-albums'] = "in %d sub-albums";
+$lang['in this album'] = "in this album";
+$lang['included'] = "included";
+$lang['Invalid key'] = 'Invalid key';
+$lang['Invalid password!'] = "Invalid password!";
+$lang['Invalid username or email'] = 'Invalid username or email';
+$lang['IP: %s'] = "IP: %s";
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Keyword'] = "Keyword";
+$lang['Kind of date'] = "Kind of date";
+$lang['Language'] = "Language";
+$lang['large'] = 'L - large';
+$lang['last %d days'] = "last %d days";
+$lang['Last'] = "Last";
+$lang['Last Page'] = "Last page";
+$lang['letters'] = "letters";
+$lang['Links'] = "Links";
+$lang['login mustn\'t end with a space character'] = "login must not end with a space character";
+$lang['login mustn\'t start with a space character'] = "login must not start with a space character";
+$lang['Login'] = "Login";
+$lang['Logout'] = "Logout";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mail address must be like xxx@yyy.eee (example: jack@altern.org)';
+$lang['Manage this user comment: %s'] = 'Manage this user comment: %s';
+$lang['Manual sort order'] = 'Manual sort order';
+$lang['medium'] = 'M - medium';
+$lang['Menu'] = "Menu";
+$lang['Mobile'] = 'Mobile';
+$lang['month'][10] = "October";
+$lang['month'][11] = "November";
+$lang['month'][12] = "December";
+$lang['month'][1] = "January";
+$lang['month'][2] = "February";
+$lang['month'][3] = "March";
+$lang['month'][4] = "April";
+$lang['month'][5] = "May";
+$lang['month'][6] = "June";
+$lang['month'][7] = "July";
+$lang['month'][8] = "August";
+$lang['month'][9] = "September";
+$lang['Most visited'] = "Most visited";
+$lang['N/A'] = "N/A";
+$lang['New on %s'] = "New on %s";
+$lang['New password'] = "New password";
+$lang['Next'] = "Next";
+$lang['no rate'] = "no rate";
+$lang['No'] = "No";
+$lang['Not repeat the slideshow'] = "Do not repeat slideshow";
+$lang['Notification'] = "Notification";
+$lang['Number of items'] = "Number of items";
+$lang['Number of photos per page'] = "Number of photos per page";
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numeric identifier, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numeric identifier, 9 &rarr; 1';
+$lang['obligatory'] = "mandatory";
+$lang['Original dimensions'] = "Original dimensions"; //unused?
+$lang['Original'] = 'Original';
+$lang['Page generated in'] = "Page generated in";
+$lang['Page not found'] = 'Page not found';
+$lang['Password forgotten'] = "Password forgotten";
+$lang['Password reset is not allowed for this user'] = 'Password reset is not allowed for this user';
+$lang['Password Reset'] = 'Password Reset';
+$lang['password updated'] = "password updated";
+$lang['Password'] = "Password";
+$lang['Password: %s'] = 'Password: %s';
+$lang['Pause of slideshow'] = "Pause slideshow";
+$lang['Permalink for album not found'] = 'Permalink for album not found';
+$lang['Photo sizes'] = 'Photo sizes';
+$lang['Photo title, A &rarr; Z'] = 'Photo title, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Photo title, Z &rarr; A';
+$lang['photo'] = "photo";
+$lang['Photos only RSS feed'] = "Photos only RSS feed";
+$lang['photos posted during the last %d days'] = "photos posted during the last %d days";
+$lang['Photos posted within the last %d day.'] = "Photos posted within the last %d day only.";
+$lang['Photos posted within the last %d days.'] = "Photos posted within the last %d days only.";
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo encountered an unrecoverable error';
+$lang['Piwigo Help'] = "Piwigo help";
+$lang['Play of slideshow'] = "Play slideshow";
+$lang['Please enter your username or email address.'] = 'Please enter your username or email address.';
+$lang['Please, enter a login'] = "Please, enter a login";
+$lang['Post date'] = "Post date";
+$lang['posted after %s (%s)'] = "posted after %s (%s)";
+$lang['posted before %s (%s)'] = "posted before %s (%s)";
+$lang['posted between %s (%s) and %s (%s)'] = "posted between %s (%s) and %s (%s)";
+$lang['posted on %s'] = "posted on %s";
+$lang['Posted on'] = "Posted on";
+$lang['Powered by'] = "Powered by";
+$lang['Preferences'] = "Preferences";
+$lang['Previous'] = "Previous";
+$lang['Profile'] = "Profile";
+$lang['Quick connect'] = "Quick connect";
+$lang['Quick search'] = "Quick search";
+$lang['Random photos'] = "Random photos";
+$lang['Rank'] = "Rank";
+$lang['Rate this photo'] = "Rate this photo";
+$lang['Rating score'] = "Rating score";
+$lang['Rating score, high &rarr; low'] = 'Rating score, high &rarr; low';
+$lang['Rating score, low &rarr; high'] = 'Rating score, low &rarr; high';
+$lang['Recent albums'] = "Recent albums";
+$lang['Recent period must be a positive integer value'] = "Recent period must be a positive integer value";
+$lang['Recent period'] = "Recent period";
+$lang['Recent photos'] = "Recent photos";
+$lang['Redirection...'] = "Redirection...";
+$lang['Reduce diaporama speed'] = "Reduce slideshow speed";
+$lang['Register'] = "Register";
+$lang['Registration of %s'] = "Registration of %s";
+$lang['Registration'] = "Registration";
+$lang['Related tags'] = "Related tags";
+$lang['remove this tag from the list'] = "remove this tag from the list";
+$lang['Repeat the slideshow'] = "Repeat slideshow";
+$lang['representative'] = 'album thumbnail';
+$lang['Requested album does not exist'] = 'Requested album does not exist';
+$lang['Requested tag does not exist'] = 'Requested tag does not exist';
+$lang['Reset to default values'] = "Reset to default values";
+$lang['Reset'] = "Reset";
+$lang['Retrieve password'] = "Retrieve password";
+$lang['Return to home page'] = 'Return to home page';
+$lang['return to normal view mode'] = "return to normal view mode";
+$lang['return to the display of all photos'] = "return to the display of all photos";
+$lang['RSS feed'] = "RSS feed";
+$lang['Search by date'] = "Search by date";
+$lang['Search for all terms'] = "Search for all terms";
+$lang['Search for any term'] = "Search for any term";
+$lang['Search for Author'] = "Search for an author";
+$lang['Search for words'] = "Search for words";
+$lang['Search in albums'] = "Search in albums";
+$lang['Search in sub-albums'] = "Search in sub-albums";
+$lang['Search results'] = "Search results";
+$lang['Search rules'] = "Search criteria";
+$lang['Search tags'] = "Search tags";
+$lang['Search'] = "Search";
+$lang['search'] = "search";
+$lang['searched words : %s'] = 'searched words: %s';
+$lang['Send my connection settings by email'] = 'Send my connection settings by email';
+$lang['Sent by'] = "Sent by";
+$lang['set as album representative'] = "set as album thumbnail";
+$lang['Show file metadata'] = "Show file metadata";
+$lang['Show latest comments first'] = 'Show latest comments first';
+$lang['Show number of comments'] = "Show number of comments";
+$lang['Show number of hits'] = "Show number of hits";
+$lang['Show oldest comments first'] = 'Show oldest comments first';
+$lang['show tag cloud'] = "show tags cloud";
+$lang['Since'] = "Since";
+$lang['slideshow'] = "slideshow";
+$lang['small'] = 'S - small';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Someone requested that the password be reset for the following user account:';
+$lang['Sort by'] = "Sort by";
+$lang['Sort order'] = "Sort order";
+$lang['Specials'] = "Specials";
+$lang['SQL queries in'] = "SQL queries in";
+$lang['square'] = 'Square';
+$lang['stop the slideshow'] = "stop the slideshow";
+$lang['Submit'] = "Submit";
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Successfully registered, you will soon receive an email with your connection settings. Welcome!';
+$lang['Tag results for'] = "Tag results for";
+$lang['Tag'] = "Tag";
+$lang['Tags'] = "Tags";
+$lang['Thank you for registering at %s!'] = 'Thank you for registering at %s!';
+$lang['the beginning'] = "the beginning";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'The gallery is locked for maintenance. Please come back later.';
+$lang['The number of photos per page must be a not null scalar'] = 'The number of photos per page must be a non-zero integer';
+$lang['The passwords do not match'] = 'The passwords do not match';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = "The RSS feed provides notification on new events from this website: new photos, updated albums, new comments. To be used with a RSS feed reader.";
+$lang['the username must be given'] = "the username is required";
+$lang['This author modified following comment:'] = 'This author modified the following comment:';
+$lang['This author removed the comment with id %d'] = 'This author removed the comment with id %d';
+$lang['this email address is already in use'] = "this email address is already in use";
+$lang['This login is already used by another user'] = "This login is already used by another user";
+$lang['this login is already used'] = "this login is already used";
+$lang['thumb'] = 'Thumbnail';
+$lang['Thumbnails'] = "Thumbnails";
+$lang['To reset your password, visit the following address:'] = 'To reset your password, visit the following address:';
+$lang['today'] = "today";
+$lang['Unknown feed identifier'] = "Unknown feed identifier";
+$lang['Unknown identifier'] = "Unknown identifier";
+$lang['Update your rating'] = "Update your rating";
+$lang['useful when password forgotten'] = "useful in case password is forgotten";
+$lang['User "%s" has no email address, password reset is not possible'] = 'User "%s" has no email address, password reset is not possible';
+$lang['User comments'] = "User comments";
+$lang['User: %s'] = "User: %s";
+$lang['Username "%s" on gallery %s'] = 'Username "%s" on gallery %s';
+$lang['Username modification'] = 'Username modification';
+$lang['Username or email'] = 'Username or email';
+$lang['Username'] = "Username";
+$lang['Username is mandatory'] = 'Username is mandatory';
+$lang['Username: %s'] = 'Username: %s';
+$lang['View in'] = 'View in';
+$lang['View'] = "View";
+$lang['Visits'] = "Visits";
+$lang['Visits, high &rarr; low'] = 'Visits, high &rarr; low';
+$lang['Visits, low &rarr; high'] = 'Visits, low &rarr; high';
+$lang['Website'] = 'Website';
+$lang['Webmaster'] = "Webmaster";
+$lang['Week %d'] = "Week %d";
+$lang['Welcome to your Piwigo photo gallery!'] = 'Welcome to your Piwigo photo gallery!';
+$lang['Welcome'] = 'Welcome';
+$lang['wrong date'] = "wrong date";
+$lang['xlarge'] = 'XL - extra large';
+$lang['xsmall'] = 'XS - extra small';
+$lang['xxlarge'] = 'XXL - huge';
+$lang['Yes'] = "Yes";
+$lang['You are not authorized to access the requested page'] = "You are not authorized to access the requested page";
+$lang['You will receive a link to create a new password via email.'] = 'You will receive a link to create a new password via email.';
+$lang['Your comment has been registered'] = "Your comment has been registered";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = "Your comment has NOT been registered because it did not pass the validation rules";
+$lang['Your favorites'] = "Your favorites";
+$lang['Your Gallery Customization'] = "Your gallery customization";
+$lang['Your password has been reset'] = 'Your password has been reset';
+$lang['Your username has been successfully changed to : %s'] = 'Your username has been successfully changed to: %s';
+$lang['Your website URL is invalid'] = 'Your website URL is invalid';
+$lang['mandatory'] = 'mandatory';
+$lang['Email'] = "Email";
+$lang['Password is missing. Please enter the password.'] = "Password is missing. Please enter the password.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "Password confirmation is missing. Please confirm the chosen password.";
+$lang['%d photos per page'] = '%d photos per page';
+$lang['Theme'] = 'Theme';
+?>
Index: /tags/2.6.0RC1/language/en_UK/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,133 @@
+<h2>Edit album</h2>
+
+<h3>Informations</h3>
+
+<ul>
+
+  <li><strong>name</strong>: rename the album (a virtual rename in case 
+  of a physical album).</li>
+
+  <li><strong>description</strong>: short text giving a general idea of the content,
+  this text will be displayed at the bottom of the thumbnails page.</li>
+
+</ul>
+
+<h3>Move</h3>
+
+<p>If the album is virtual, you can move it. Moving a album means
+changing its parent album.</p>
+
+<h3>Options</h3>
+
+<ul>
+
+  <li><strong>Access type</strong>: Permissions management. If you make a
+  album private, all its child albums becomes private. If you make a
+  album public, all its parent albums becomes public.</li>
+
+  <li><strong>Lock</strong>: The album and its sub-albums will
+  be temporary disabled for maintenance.</li>
+
+  <li><strong>Comments</strong>: Authorize users to comment photos of this
+  album.</li>
+
+</ul>
+
+<p>You can also manage these options on the "Properties"
+management screen (screens <span
+class="pwgScreen">Comments</span>, <span class="pwgScreen">Lock</span>,
+<span class="pwgScreen">Public/Private</span>, <span
+class="pwgScreen">Representative</span> available from <span
+class="pwgScreen">Administration &raquo; Albums &raquo; Properties</span>).</p>
+
+<h3>Sort order</h3>
+
+<p>Use the default images sort order.</p>
+
+<p>Indicate whether this sort order will apply to subalbums also.</p>
+
+<p>Select specific sorting criteria to be used with this album.</p>
+<ul>
+<li><strong>Creation date</strong>: Photo shooting date</li>
+<li><strong>Post date</strong>: Synchronization date</li>
+<li><strong>Average rate (*)</strong>: Average rate could be changed by the visitor rating</li>
+<li><strong>Most visited (*)</strong>: The current visit might change the most visited order</li>
+<li><strong>File name</strong>: Name given in information field</li>
+<li><strong>Id</strong>: Internal Id (recent categories have an higher id than previous ones.</li>
+
+</ul>
+<p><strong>(*)</strong>Warning: Be sure to test these sort orders by yourself as they can give unexpected results.</p>
+
+
+<h3>Representant</h3>
+
+<p>The album representative is the thumbnail displayed on the main page (<span class="pwgScreen">category.php</span>) to represent
+the album when
+it contains only sub-albums and no direct photo (just as the root album).</p>
+photo of a album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: one of the action buttons let you set the current photo as the representative for the
+  displayed album. This button is available only for administrators.</li>
+
+  <li><span class="pwgScreen">Modify informations about a photo</span> in
+  administration. This screen can be reached from <span
+  class="pwgScreen">picture.php</span> or <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>. See the help of this screen for
+  details.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Properties,
+  Representative</span>. See the help of this screen for details.</li>
+
+  <li><span class="pwgScreen">Edit album</span> (the present screen).</li>
+
+</ul>
+
+<p>The choice of a representative depends on the 
+<code>allow_random_representative</code> configuration parameter (see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In default mode (<code>allow_random_representative</code> set to false),
+each album containing at least one element is represented by a fixed
+element. Once set (at album creation), the representative changes only
+when an administrator ask for it. If the representative is not appropriate,
+you can ask to <strong>Find a new representant by random</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to <span class="pwgScreen">Modify
+informations about a photo</span> screen. The only option on the current screen
+is the <strong>Delete representant</strong> button.</p>
+
+<h3>Link all album photos to a new album</h3>
+
+<ul>
+
+<li><strong>Virtual album name</strong>: Name of the new album to be created, 
+all photos of the current category will be linked to the new one.</li>
+
+<li><strong>Parent album</strong>: Where the new album will be, 
+leave empty to create it at root.</li>
+
+</ul>
+
+<h3>Link all album photos to existing albums</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Choose the destination album.</li>
+
+</ul>
+
+<h3>Send an information email to group members</h3>
+
+<ul>
+
+<li><strong>Group</strong>: recipients group</li>
+
+<li><strong>Mail content</strong>: Free text to send to them.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/en_UK/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Moving virtual Albums</h2>
+
+<p>Only virtual albums can have a new parent album.</p>
+
+<h3>Virtual albums to move</h3>
+
+<p>Select one or several virtual albums you want to move. 
+If the list is empty, that mean you have not created one yet.</p>
+
+<h3>New parent album</h3>
+
+<p>Select the new parent album (virtual or physical). 
+If you do not select any parent, the virtual selected albums will be moved to the root.
+A album cannot be moved into itself or to one of its child.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Album options</h2>
+
+<p>Options management for several albums at once.</p>
+
+<dl>
+
+<dt>Comments</dt>
+<dd>A photo can receive comments from your visitors if it belongs to an album with comments activated.</dd>
+
+<dt>Lock</dt>
+<dd>Locked albums are disabled for maintenance. Only administrators can view them in the gallery.</dd>
+
+<dt>Public / private</dt>
+<dd>Once an album become private, give access rights to users and groups</dd>
+
+<dt>Representative</dt>
+<dd>This option is available when you set the configuration setting
+<code>allow_random_representative</code> (see <span
+ class="filename">include/config_defaults.inc.php</span>) to
+<em>true</em>. Each album can be represented by a random photo or by a photo chosen as a unique representative.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/en_UK/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Edit album permissions</h2>
+
+<p>This screen is only available for private albums. Here you can select
+users and groups authorized for a album.</p>
+
+<h3>Groups</h3>
+
+<p>You can deny or grant groups access for the current album. By modifying
+groups authorizations, the users belonging to these groups will be denied or granted access to the album.</p>
+
+<h3>Users</h3>
+
+<p>You can deny or grant access to individual users. Users that have access through a group can be denied access by exception.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/configuration.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Configuration</h2>
+
+<p>This screen let the administrator do basic gallery configuration. Indeed, this screen only shows simple configuration parameters that should be enough for the vast majority of administrators. If you want to see other numerous (and advanced) configuration parameters, read the default configuration file <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>The screen is divided into different sections, grouping configuration parameters by theme.</p>
+
+
+<h3>Main</h3>
+<ul>
+  <li><strong>Gallery title</strong>: used in RSS feed and notifications by email.</li>
+
+  <li><strong>Page banner</strong>: displayed on top of each public page.</li>
+
+  <li><strong>Gallery URL</strong>: used for the RSS feed.</li>
+
+  <li><strong>Lock gallery</strong>: Lock the entire gallery for maintenance. Only administrator users will be able to reach the gallery.</li>
+
+  <li><strong>Rating</strong>: Photo rating feature is enabled.</li>
+
+  <li><strong>Rating by guests</strong>: Even unregistered users can rate images.</li>
+
+  <li><strong>Allow user registration</strong>: Anybody can register.</li>
+
+  <li><strong>Mail address is mandatory for all users</strong>: mail address will be checked on registration or profile update, except if the action is done by an administrator.</li>
+
+  <li><strong>Email admins when a new user registers</strong>: administrators will be notified by mail for each registration.</li>
+  
+  <li><strong>Default photos order</strong>: you can define a personalized order with these drop-down menus.</li>
+
+</ul>
+
+<h3>History</h3>
+
+  <p>Visits on pages <span
+  class="pwgScreen">category.php</span> and <span
+  class="pwgScreen">picture.php</span> will be saved in the <code>history</code> table.</p>
+  
+  <p>Visits will be shown in <span  class="pwgScreen">Administration &raquo; Tools &raquo; History</span>.</p>
+
+<ul>
+  <li><strong>Save page visits by guests</strong>: page visits by guests will be recorded.</li>
+
+  <li><strong>Save page visits by users</strong>: visits by registrered users will be recorded.</li>
+
+  <li><strong>Save page visits by administrators</strong>: page visits by administrators will be recorded.</li>
+
+</ul>
+
+<h3>Comments</h3>
+<ul>
+
+  <li><strong>Comments for all</strong>: Even unregistered guest can post comments.</li>
+
+  <li><strong>Number of comments per page</strong>.</li>
+
+  <li><strong>Validation</strong>: an administrator must validate users comments before they become visible on the site. User comments validation
+  takes place in screen <span class="pwgScreen">Administration &raquo; Tools &raquo; Pending Comments</span>.</li>
+
+  <li><strong>Email admins when a valid comment is entered</strong>: Sends an email to the administrators when a user enters a comment and this comment is validated.</li>
+
+  <li><strong>Email admins when a comment requires validation</strong>:
+Sends an email to the administrators when a user enters a comment that requires validation by the admin.
+User comments validation takes place in the screen <span class="pwgScreen">Administration &raquo; Tools &raquo; Pending Comments</span>.</li>
+
+</ul>
+
+<h3>Default display</h3>
+
+<p>Here you can change display options used by guest, the default user that is not connected. Once connected, these options are overridden by the user's own options
+(modifiable in <span class="pwgScreen">profile</span>).</p>
+
+<p>It is possible to change the display options for all existing users on the <span class="pwgScreen">Administration &raquo;
+Users &raquo; Manage</span> screen where you can select a list of users.</p>
+
+<ul>
+
+  <li><strong>Language</strong>: Apply to Piwigo labels only. Album names, photo names and all descriptions fields are not localized.</li>
+
+  <li><strong>Number of photos per row</strong></li>
+
+  <li><strong>Number of rows per page</strong></li>
+
+  <li><strong>Interface theme</strong></li>
+
+  <li><strong>Recent period</strong>: By days. Period during which a photo is shown as new. Must be greater than 1 day.</li>
+
+  <li><strong>Expand all albums</strong>: Expand all albums by
+  default in the menu <em>Warning</em>: this option is resources intensive and may generate a huge menu if your album tree contains many albums.</li>
+
+  <li><strong>Show number of comments</strong>: Show the number of comments for each photo on the thumbnails page. Resource intensive.</li>
+
+  <li><strong>Show hits count</strong>: Display hits observed on photo just under its thumbnail on the thumbnails page. Only when advanced configuration parameter is: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Notice: false by default.</li>
+
+  <li><strong>Maximum width of the photos</strong>: maximum displayed width.  Photos larger than this setting will be resized on display.  Rather than choosing this option, you might consider modifying the width of your photos; that would be a better practice.</li>
+
+  <li><strong>Maximum height of the photos</strong>: Same as for the maximum width setting.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/en_UK/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Template Extension Configuration</h2>
+
+<h3>About</h3>
+<p>Your Piwigo gallery can be customised by replacing existing template files with customised versions.  For example, the default header template (header.tpl) can be replaced by a customised header template (my-header.tpl).  After submitting the changes to the database the gallery will display the customised header instead of the original header.<br>
+Template extensions are a powerful way to create customised themes for both new and advanced users.  Used together with the LocalFiles Editor you can create your own child themes.</p>
+
+<h3>Original Template</h3>
+<p>A theme contains a number of template files that make up the gallery pages.  These are the original templates.</p>
+
+<h3>Optional URL Keyword</h3>
+<p>These are words found in the gallery URL after the module name.  They can also be active permalinks  (See the permalink documentation for more information).  <a href="#warnings">WARNING:</a> if the same original template and same keyword is used on more than one customised template only the last one is active.</p>
+
+<h3>Bound Theme</h3>
+<p>The bound theme is the theme from which the template files are being replaced.</p>
+
+<h3>Where are the original templates?</h3>
+<p>Original templates are the template files shipped with each theme.  These are saved in <em>/themes/default/template</em> (or <em>themes/<theme name>/template</em>).  These template files should not be edited in place as changes will be lost with theme upgrades.<br>
+Supported original templates include:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Saving customised templates</h3>
+<p>Customised templates should be saved in the template-extension folder or subfolders.  For example, <em>/template-extension/my-default/header.tpl</em> (or <em>/template-extension/<my-theme-name>/header.tpl</em>)  Template files can have any name with a .tpl extension.  The template files in subfolders appear in the Template configuration screen as available custom templates.</p>
+<h3>Activating customised templates</h3>
+<p>Select the original template to replace.  Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword.  Select a bound theme and the changes will be effective on that theme.  Submit the changes to the database.</p>
+<h3>Deactivating customised templates</h3>
+<p>Unselect the original template and submit the changes to the database.<br>
+Delete the customised template files from the template-extension folder.</p>
+
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+  <li><strong>The original template</strong> must be the original template otherwise you may have unpredictable results.</li>
+  <li>If the same original template and same URL keyword is used on more than one customised template only the last one is active.</li>
+  <li>Distributed sample template files are for test purposes only.  Do not edit them.  Create your own ones or copy existing theme template files into <em>/template-extension/<my-theme>/</em></li>
+  <li>When the customised template is deleted the original template file is immediately reactivated.</li>
+</ul>
Index: /tags/2.6.0RC1/language/en_UK/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Groups list</h2>
+
+<p>This is the place where you manage groups.</p>
+
+<h3>Add a group</h3>
+
+<p>Administrator can add groups.</p>
+
+<h3>Groups list</h3>
+
+<p>For each group the following actions can be applied:</p>
+
+
+<ul>
+  <li>go to user management (Admin &raquo; Users &raquo; Manage)</li>
+  <li>go to permissions management screen to grant or deny access to private albums.</li>
+  <li>delete the group (requires a confirmation)</li>
+  <li>toggle status "default" (requires a confirmation)</li>
+</ul>
+
+<h3>Default groups</h3>
+<p>Default groups are groups that are automatically associated to each new user upon registration or creation by an administrator.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+<p>Several ways to add your photos in your gallery:</p>
+
+<ul>
+  <li><strong>Direct upload</strong> inside your web browser is the
+  simplest and most immediate way. It depends on your browser capabilities
+  and your web server. For a huge quantity of photos or in case you encounter some problem,
+  the other methods are just waiting for you!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Go to Direct Upload </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> is a desktop application, to be installed on your computer. Drag &amp; drop photos into pLoader window, click on <em>"Upload to Piwigo"</em> and let pLoader do the job. You can find other desktop applications such as <strong>WinToPiwigo</strong> or the <strong>Digikam</strong> export plugin to Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Go to pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP transfer</strong> is the most recommended way to add a
+  very large collection of photos with a minimum number of clicks. Follow
+  the guide to prepare your photos. The FTP method let you control precisely
+  the physical organization of your photos on your server.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Go to FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/en_UK/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Groups are a convenient way to set permissions for a list of users.</p>
+
+<p>Create groups in <span class="pwgScreen">Administration &raquo; Users
+&raquo; Groups</span> and associate users to this group
+in <span class="pwgScreen">Administration &raquo; Users &raquo;
+Manage</span>.</p>
+
+<p>A user can belong to several groups. Authorization takes precedence over
+interdiction : if user "jack" belongs to groups "family" and "friends", and
+that only group "family" can see album "Christmas 2010" album then
+"jack" will be able to see "Christmas 2010".</p>
Index: /tags/2.6.0RC1/language/en_UK/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Once you created your gallery you can configure it for your visitor
+<ul>
+	<li>The default display as you like in <span class="pwgScreen">Administration &raquo; Configuration &raquo; Options</span> tab <span class="pwgScreen">Guest Settings</span></li>
+	<li>The default theme in <span class="pwgScreen">Administration &raquo; Configuration &raquo; Themes</span></li>
+	<li>The default language in <span class="pwgScreen">Administration &raquo; Configuration &raquo; Languages</span></li>
+ </ul>
+ By default, each new user will inherit these properties upon registration.
+</p>
+<p>If you have any question, Piwigo community will welcome you on <a href="http://piwigo.org/forum">its forum</a>.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,57 @@
+<fieldset>
+<legend>Permissions on photos</legend>
+
+<p>Each photo has a <strong>privacy level</strong> (a lock). Each user also has a privacy level (a key). There are 5 privacy levels:</p>
+<ol>
+  <li>None</li>
+  <li><em>Contacts</em></li>
+  <li><em>Friends (which is higher than a contact)</em></li>
+  <li><em>Family (which is higher than a friend)</em></li>
+  <li><em>Admins (which is higher than any other level)</em></li>
+</ol>
+
+<p>Higher levels have permissions on lower levels. For a given user, the higher the privacy level, the more photos he can see.</p>
+
+<p>For example, if photo "peter_wedding-0024.jpg" has <em>"Family"</em> privacy level, then:</p>
+<ul>
+  <li>Peter (who is an <em>"Admin"</em>) will see the photo because <em>"Admins"</em> can see all photos</li>
+  <li>Beth (who is a <em>"Family"</em> member) will also see the photo</li>
+  <li>Mary (who is just a <em>"Friend"</em>) won't see the photo</li>
+</ul>
+
+<p>A user that has no permission to see the content of a album won't see the album itself, not even its title. The same principle applies to a tag.</p>
+
+<p>You can set the privacy level of a user on <span class="pwgScreen">Administration &raquo; Users &raquo; Manage</span> screen.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Permissions on albums</legend>
+
+<p>If privacy levels do not fit your needs, you can also manage permissions on albums for a user or a group. You can manage permissions on photos and albums at the same time, without conflict.</p>
+
+<p>You can forbid access to albums. Switch the album access type to
+"private" if you want to manage permissions.</p>
+
+<p>You can set a album to private by editing a single album
+(<span class="pwgScreen">Administration &raquo; Albums &raquo; Manage
+&raquo; edit</span>) or by setting options to your whole album tree
+(<span class="pwgScreen">Administration &raquo; Albums &raquo;
+Properties &raquo; Public / Private</span>).</p>
+
+<p>Once the album is private, you can manage permissions for groups and
+users with 3 screens:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administration &raquo; Users &raquo; Manage &raquo;
+  permissions action</span> (one link per user)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Users &raquo; Groups &raquo;
+  permissions action</span> (one link per group)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Manage &raquo; edit
+  album permissions action</span> (one link per album)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/en_UK/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Photos are displayed in the album corresponding to their file
+directory.</p>
+
+<p>You can also display a photo in several albums, without duplicating
+the file on your web server. Associate the photo to any album from the
+photo editing screen (that any administrator can reach from the photo page
+on the gallery side).</p>
+
+<p>Virtual albums are based on this concept: they have no corresponding
+directory. Create virtual albums
+from <span class="pwgScreen">Administration &raquo; Albums &raquo;
+Manage</span>.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>History</h2>
+
+<p>On these screens, you can monitor your gallery visits history according to the options you have chosen in: Administration &raquo; Configuration &raquo; Options &raquo; History</p>
+	
+<h3>Statistics</h3>
+<ul>
+  <p>If you have chosen to record the pages visited (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), you can monitor them from this tab.</p>
+	<li><strong>Global statistics</strong>: visits per year. </li>
+	<li><strong>Yearly statistics</strong>: visits per month in the selected year .</li>
+	<li><strong>Monthly statistics</strong>: visits per days in the selected month .</li>
+	<li><strong>Daily statistics</strong>: visits per hours in the selected day.</li>
+</ul>
+
+<h3>Search</h3>
+<ul>
+  <p>If you have chosen to record the pages visited (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), you can browse the details  from this tab with the help of different filters.</p>
+	<li><strong>Filter by date:</strong> select the date range to search by setting start and end dates.</li>
+	<li><strong>Filter by type of element:</strong> select the type of element for statistics on that element.</li>
+	<li><strong>Filter by user:</strong> select the user for statistics on that user.</li>
+	<li><strong>Filter by image identifier:</strong> select the image identifier for statistics on that image.</li>
+	<li><strong>Filter by name of the file:</strong> select the file name for statistics on that file..</li>
+</ul>
Index: /tags/2.6.0RC1/language/en_UK/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/en_UK/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Maintenance</h2>
+
+<p>To optimise page generation time Piwigo uses cached information. For example, instead of counting the number of photos contained in each album at each page reload this information is stored in the database. In theory this information should always be correct but sometimes an error can occur and cached information becomes out of date.</p>
+
+<p>Some information becomes less useful as time goes by.  Deleting this useless information from the database will save you some disk space.</p>
+
+<ul>
+	<li><strong>Delete orphan tags</strong></li>
+</ul>
+<ul>
+  <li><strong>Update albums informations:</strong> For each album, the following information is checked, and updated if necessary : list of parent albums, number of photos, last photo date, position among brother albums, position among all albums. This action also checks the representative photos consistency.</li>
+  <li><strong>Update photos information:</strong> For each photo, information updated is : full path to file, average rate. <em>Warning</em>, do not mix up: metadata information must be synchronised from <span class="pwgScreen">Administration &raquo; Tools &raquo; synchronise</span>, or on the modification screen of a single photo (through <span class="pwgScreen">Photo</span> for example).</li>
+</ul>
+<ul>
+  <li><strong>Repair and optimise the database:</strong>Perform re-order, repair and optimise operations on each table of the database.</li>
+  <li><strong>Reinitialize integrity check</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Purge history details:</strong> Delete all lines from the history table. Screen <span class="pwgScreen">Administration &raquo; Tools &raquo; History</span> will not longer show information for the past history. <em>Warning:</em> all data will be lost, without any way to get them back.</li>
+  <li><strong>Purge history summary:</strong> Delete all the summary information about visit history. This summary is calculated from the history details.</li>
+  <li><strong>Purge sessions:</strong> Delete expired user sessions.</li>
+  <li><strong>Purge never used notification feeds</strong></li>
+  <li><strong>Purge searches history</strong></li>
+  <li><strong>Purge compiled templates</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/en_UK/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Notification By Mail (NBM)</h2>
+
+<p>Configure and manage email notifications to users notifying them of changes to your site.</p>
+
+<p>This screen comprises three tabs:</p>
+
+<h3>Settings</h3>
+<p>Available only for webmasters, this tab sets the notification by mail parameters.</p>
+
+<h3>Subscribe</h3>
+<p>Available only for webmasters, this tab manages a user's subscription to email notifications.  Add users to the subscribed box for them to receive notifications by mail.</p>
+
+<h3>Send</h3>
+<p>Available only for webmasters and administrators, this tab allows administrators to send notification emails to subscribed users.</p>
+
Index: /tags/2.6.0RC1/language/en_UK/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalinks</h2>
+
+<p>Permalinks are used to make album urls nicer. When a album has a permalink defined, the id of the album is not required anymore in the url.</p>
+
+<p>When a permalink is deleted, you can save it in the permalink history, so that external links to Piwigo pages still work. In the permalink history table you can see the date when the permalink has been deleted, the last time it was used and the number of times this permalink has been used.</p>
+
+<p>Note that permalinks must be unique per album. Also in the permalink history you cannot have the same permalink defined more than once.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,70 @@
+<fieldset>
+  <legend>Quick Start</legend>
+
+<ol>
+  <li>Create a directory on your computer.</li>  
+
+  <li>Copy some photos inside this directory, resize them for web display. <em>Warning</em>: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.</li>
+
+  <li>With a FTP client, copy your directory in the "galleries" directory of your Piwigo installation.</li>
+
+  <li>Logon your gallery and go to <span class="pwgScreen">Administration</span> and click on the big Synchronization button.</li>
+</ol>
+
+<p>Congratulations! You have successfully created the first album of your photo gallery.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Directories and files organization</legend>
+
+<ul>
+
+  <li>
+
+    <p>Album directories are in the Piwigo directory
+    "galleries". Here follows the directory tree of a very small gallery (but
+    using many features):</p>
+
+    <pre>
+galleries
+|-- wedding
+|   |-- celebration
+|   |   |-- arrival
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- departure
+|   |       +-- paul-and-sarah.jpg
+|   +-- party
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- honeymoon
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.</li>
+
+  <li>Basically, an element is represented by a file. A file can be a
+  Piwigo element if its extension is among <code>file_ext</code>
+  configuration parameter possibilities (see <span
+  class="filename">include/config_default.inc.php</span> file). A file can
+  be a picture if its extension is among <code>picture_ext</code>
+  configuration parameter possibilities.</li>
+
+  <li>No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename
+  extension. Optionally, you can associate a thumbnail and a representative
+  file (see video.avi in the example above).</li>
+
+  <li><em>Warning</em>: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.</li>
+
+  <li>Once photos are correctly placed in the
+  directories, go to: <span class="pwgScreen">Administration &raquo; Tools &raquo;
+  Synchronize</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/en_UK/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/search.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Search</h2>
+
+<p>This page let you search photos among the whole gallery.</p>
+
+<dl>
+
+  <dt>Search for words</dt>
+  <dd>Search for one or several words among the attributes related to the photos
+  of the gallery. Use * as a wildcard for partial matches.</dd>
+
+  <dt>Search for an author</dt>
+  <dd>Use * as a wildcard for partial matches.</dd>
+
+  <dt>Search by date</dt>
+  <dd>Select a date and/or an ending date for your query. Leave date field empty
+  if you want to make a "before" query. The year in the last
+  field must be entered in the following format : AAAA (i.e. 2004)</dd>
+
+  <dt>Search in albums</dt>
+  <dd>Select album or albums you wish to search. All
+  sub-albums can be searched by selecting the parent album and setting enable
+  search sub-albums below.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/en_UK/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Synchronise</h2>
+
+<p>There are two different types of synchronisation:</p>
+<ul>
+	<li>directories/files</li>
+	<li>file metadata</li>
+</ul>
+
+<p>Synchronising directories and files is about updating your directories tree with the album tree in the database. 
+Synchronising file metadata is about updating photo information, such as filesize, dimensions in pixels, EXIF or IPTC information, in the database.</p>
+
+<p>When synchronising your uploads with your gallery you must first synchronise directories and files.</p>
+
+<p>The synchronisation process may take a long time (depending on server load and the number of elements to manage) so it is possible to do it album by album.</p>
Index: /tags/2.6.0RC1/language/en_UK/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/en_UK/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Users list</h2>
+
+<p>This is where you manage the users of your Piwigo gallery.</p>
+
+<h3>Add a user</h3>
+
+<p>An administrator can add users manually.  For each user create a username, a password and submit a valid email address.</p>
+
+<h3>Users list</h3>
+
+<p>The list of existing users can be filtered on username (use * as wildcard), group or status. It can be ordered by registration date or username, in ascending or descending order.</p>
+
+<p>This screen allows the management of several users at once, using different actions:</p>
+
+<ul>
+  <li>delete users (requires confirmation)</li>
+  <li>change the status of the user</li>
+  <li>associate or dissociate from groups</li>
+  <li>modify display properties</li>
+  <li>modify additional preferences</li>
+</ul>
+
+<p>The target is the selected user (by default) or all users as displayed in the filtered list.</p>
Index: /tags/2.6.0RC1/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/en_UK/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "Installation";
+$lang['Basic configuration'] = "Basic configuration";
+$lang['Default gallery language'] = "Default gallery language";
+$lang['Database configuration'] = "Database configuration";
+$lang['Admin configuration'] = "Administration configuration";
+$lang['Start Install'] = "Start installation";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'It will be shown to visitors. It is necessary for website administration';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Connection to server successful, but the connection to the database was not possible.';
+$lang['Can\'t connect to server'] = "Cannot connect to server";
+$lang['Host'] = "Host";
+$lang['localhost or other, supplied by your host provider'] = "localhost or other, supplied by your host provider";
+$lang['User'] = "User";
+$lang['user login given by your host provider'] = 'user login supplied by your host provider';
+$lang['user password given by your host provider'] = 'user password supplied by your host provider';
+$lang['Database name'] = "Database name";
+$lang['also given by your host provider'] = 'also supplied by your hosting provider';
+$lang['Database table prefix'] = "Database tables prefix";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'database table names will be prefixed with it (enables you to manage your tables better)';
+$lang['enter a login for webmaster'] = 'please enter the webmaster username';
+$lang['webmaster login can\'t contain characters \' or "'] = 'the webmaster login may not contain the characters \' or "';
+$lang['please enter your password again'] = "please enter your password again";
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Keep it confidential, it enables you to access the administration panel';
+$lang['Password [confirm]'] = "Password [confirm]";
+$lang['verification'] = "verification";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Need help? Ask your question on the <a href="%s">Piwigo message board</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Visitors will be able to use this email to contact the site administrator';
+$lang['PHP 5 is required'] = "PHP 5 is required";
+$lang['It appears your webhost is currently running PHP %s.'] = "It appears your webhost is currently running PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note you can change your configuration by yourself and then restart Piwigo.';
+$lang['Try to configure PHP 5'] = "Try to configure PHP 5";
+$lang['Sorry!'] = "Sorry!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo was not able to configure PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "You should refer to your hosting provider's support and see how you can switch to PHP 5 by yourself.";
+$lang['Hope to see you back soon.'] = "Hope to see you back soon.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Congratulations, Piwigo installation is completed';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning: database.inc.php must only contain what is in the textarea, no line return or space character)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Creation of config file local/config/database.inc.php failed.';
+$lang['Download the config file'] = 'Download the config file';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'You can download the config file and upload it to the local/config directory in your installation.';
+$lang['Just another Piwigo gallery'] = 'Just another Piwigo gallery';
+$lang['Welcome to my photo gallery'] = 'Welcome to my photo gallery';
+$lang['Welcome to your new installation of Piwigo!'] = 'Welcome to your new installation of Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Don\'t hesitate to consult our forums for any help: %s';
+?>
Index: /tags/2.6.0RC1/language/en_UK/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/en_UK/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+English [UK]
Index: /tags/2.6.0RC1/language/en_UK/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_UK/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_UK/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Upgrade";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'This page proposes to upgrade the database from your old Piwigo version to the new version. The upgrade assistant thinks you are currently running <strong>release %s</strong> (or equivalent).';
+$lang['Upgrade from version %s to %s'] = "Upgrade from version %s to %s";
+$lang['Statistics'] = "Statistics";
+$lang['total upgrade time'] = "total upgrade time";
+$lang['total SQL time'] = "total SQL time";
+$lang['SQL queries'] = "SQL queries";
+$lang['Upgrade informations'] = "Upgrade information";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'As a precaution, the following plugins have been deactivated. You must check for upgradable plugins before reactivating them:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Only an administrator can run an upgrade: please sign in below.';
+$lang['You do not have access rights to run upgrade'] = "You do not have access rights to run upgrade";
+$lang['All sub-albums of private albums become private'] = "All sub-albums of private albums become private";
+$lang['User permissions and group permissions have been erased'] = "Users and groups permissions have been erased";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Only thumbnails prefix and webmaster mail address have been saved from previous configuration";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, before <b>?></b>, insert:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'As a precaution, the following themes have been deactivated. You must check for upgradable themes before reactivating them:';
+?>
Index: /tags/2.6.0RC1/language/en_US/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/en_US/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_US/common.lang.php	(revision 25596)
@@ -0,0 +1,39 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: English [US]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=717
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "English";
+$lang_info['country'] = "United States";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "en";
+$lang_info['zero_plural'] = true;
+$lang_info['parent']= "en_UK";
+
+
+?>
Index: /tags/2.6.0RC1/language/en_US/index.php
===================================================================
--- /tags/2.6.0RC1/language/en_US/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/en_US/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/en_US/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/en_US/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/en_US/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+English [US]
Index: /tags/2.6.0RC1/language/eo_EO/about.html
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/about.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Tiu galerio funkcias per Piwigo.</p>
+
+<p>Piwigo estas programo de reta fota galerio. Ĝin kontruis aktiva komunumo de uzantoj kaj programistoj. Kromprogramoj povas facile personigi la galerion. Bonuso : Piwigo estas libera kaj senpaga.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Vizitu la retejon de Piwigo</a></p>
Index: /tags/2.6.0RC1/language/eo_EO/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/admin.lang.php	(revision 25596)
@@ -0,0 +1,944 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['Add to caddie'] = 'Aldoni al la fot-stoko';
+$lang['Caddie'] = 'Fot-stoko';
+$lang['Notification'] = "Sciigo";
+$lang['Upload Photos'] = 'Alsuti fotojn';
+$lang['Select an album'] = 'Elekti fotaron';
+$lang['... or '] = '... aŭ ';
+$lang['create a new album'] = 'krei novan fotaron';
+$lang['Select files'] = 'Elekti dosierojn';
+$lang['Start Upload'] = 'Ek-alsuti';
+$lang['Learn more'] = 'Scii pli';
+$lang['Maximum file size: %sB.'] = 'Maksimuma grando de la fotoj: %sB.';
+$lang['Allowed file types: %s.'] = 'dosiertipoj permesitaj: %s.';
+$lang['+ Add an upload box'] = '+ Aldoni alŝutan fenestron';
+$lang['Add another set of photos'] = 'Aldoni plian aron de fotoj';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['%d photos uploaded'] = '%d fotoj alŝutitaj';
+$lang['All %d photos are selected'] = 'Ciuj %d fotoj estas elektitaj';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Vi uzas la foliumilan alsutilon, kaze de problemo, provu la <a href="%s">Flash alsutilon</a> anstatau.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Vi uzas la Flash-alsutilon, kaze de problemo, provu la <a href="%s">Foliumilan alsutilon</a> anstatau.';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif funkcioj ne disponeblas, administranto malvalidigu EXIF-uzon';
+$lang['Hide'] = "Kasita";
+$lang['Photo Properties'] = 'Fotaj ecoj';
+$lang['Photo name'] = 'Foto-nomo';
+$lang['Name'] = 'Nomo';
+$lang['Description'] = 'Priskribo';
+$lang['Parent album'] = 'Patra fotaro';
+$lang['Album name'] = 'Fotara nomo';
+$lang['Create'] = 'Krei';
+$lang['ACCESS_0'] = "Libera atingo";
+$lang['ACCESS_1'] = "Atingo por ciuj";
+$lang['ACCESS_2'] = "Atingo por registritaj uzantoj";
+$lang['ACCESS_3'] = "Atingo por administrantoj";
+$lang['ACCESS_4'] = "Atingo por retestroj";
+$lang['ACCESS_5'] = "Neniu atingo";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = 'Kontaktoj';
+$lang['Level 2'] = "Amikoj";
+$lang['Level 4'] = "Familio";
+$lang['Level 8'] = 'Administrantoj';
+
+
+$lang['%d association'] = '%d asocio';
+$lang['%d associations'] = '%d asocioj';
+$lang['%d day'] = '%d tago';
+$lang['%d days'] = '%d tagoj';
+$lang['%d group'] = '%d grupo';
+$lang['%d groups'] = '%d grupoj';
+$lang['%d hour'] = '%d horo';
+$lang['%d hours'] = '%d horoj';
+$lang['(this tag will be deleted)'] = '(tiu etikedo estos forigita)';
+$lang['%d week'] = '%d semajno';
+$lang['%d weeks'] = '%d semajnoj';
+$lang['%d year'] = '%d jaro';
+$lang['%d years'] = '%d jaroj';
+$lang['%s ago'] = '%s antaŭe';
+$lang['%s in the future'] = '%s venonte';
+$lang['%d line filtered'] = '%d filtrita linio';
+$lang['%d lines filtered'] = '%d filtritaj linioj';
+$lang['%d of %d photos selected'] = '%d fotoj el %d elektiĝis';
+$lang['%d parameter was updated.'] = '%d parametro ĝisdatiĝis.';
+$lang['%d parameters were updated.'] = '%d parametroj ĝisdatiĝis.';
+$lang['%d physical'] = '%d fizika';
+$lang['%d physicals'] = '%d fizikaj';
+$lang['%d photos were deleted'] = '%d foto forigitaj';
+$lang['%d second'] = '%d sekundo';
+$lang['%d seconds'] = '%d sekundoj';
+$lang['%d tag'] = '%d etikedo';
+$lang['%d tags'] = '%d etikedoj';
+$lang['%d user'] = '%d uzanto';
+$lang['%d user comment rejected'] = '%d komento de la uzanto malakceptita';
+$lang['%d user comment validated'] = '%d komento de la uzanto validigita';
+$lang['%d user comments rejected'] = '%d komentoj de la uzanto malakceptitaj';
+$lang['%d user comments validated'] = '%d komentoj de la uzanto validigitaj';
+$lang['%d user deleted'] = '%d uzanto forigita';
+$lang['%d user was not updated.'] = '%d uzanto ne ĝisdatigita.';
+$lang['%d user was updated.'] = '%d uzanto ĝisdatigita.';
+$lang['%d users'] = '%d uzantoj';
+$lang['%d users deleted'] = '%d uzantoj forigitaj';
+$lang['%d users were not updated.'] = '%d uzantoj ne ĝisdatigitaj.';
+$lang['%d users were updated.'] = '%d uzantoj ĝisdatigitaj.';
+$lang['%d mail was sent.'] = '%d retmesaĝo sendiĝis.';
+$lang['%d mails were not sent.'] = '%d retmesaĝoj ne sendiĝis.';
+$lang['%d mails were sent.'] = '%d retmesaĝoj sendiĝis.';
+$lang['%d member'] = '%d membro';
+$lang['%d members'] = '%d membroj';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minutoj';
+$lang['%d month'] = '%d monato';
+$lang['%d months'] = '%d monatoj';
+$lang['%d photo was deleted'] = '%d foto forigita';
+$lang['%d album moved'] = '%d albumo moviĝis';
+$lang['%d albums moved'] = '%d albumoj moviĝis';
+$lang['%d albums including'] = '%d albumoj inkluzive';
+$lang['%d album including'] = '%d albumo inkluzive';
+$lang[' and %d virtual'] = 'kaj %d virtuala';
+$lang[' and %d virtuals'] = 'kaj %d virtualaj';
+$lang['%d anomalies have been detected corrected.'] = '%d nenormalaĵoj troviĝis kaj korektiĝis.';
+$lang['%d anomalies have been detected.'] = '%d nenormalaĵoj troviĝis.';
+$lang['%d anomalies have been ignored.'] = '%d nenormalaĵoj ignoriĝis.';
+$lang['%d anomalies have not been corrected.'] = 'Ne eblis korektiĝi %d nenormalaĵojn.';
+$lang['%d anomaly has been corrected.'] = '%d nenormalaĵo korektiĝis.';
+$lang['%d anomaly has been detected.'] = '%d nenormalaĵo troviĝis.';
+$lang['%d anomaly has been ignored.'] = '%d nenormalaĵo ignoriĝis.';
+$lang['%d anomaly has not been corrected.'] = 'Ne eblis korektiĝi %d nenormalaĵon.';
+$lang['%d mail was not sent.'] = '%d retmesaĝo ne sendiĝis.';
+$lang['%d guests'] = '%d vizitantoj';
+$lang['%d guest'] = '%d vizitanto';
+$lang['user "%s" added'] = 'uzanto "%s" aldonita';
+$lang['user_status_admin'] = 'Administranto';
+$lang['user_status_generic'] = 'Komuna';
+$lang['user_status_guest'] = 'Gasto';
+$lang['user_status_normal'] = 'Uzanto';
+$lang['user_status_webmaster'] = 'Retestro';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'vizitantoj bezonas ensaluti kaj havas la taŭgajn permesojn por vidi tiun fotaron';
+$lang['width must be a number superior to'] = 'larĝeco devas esti nombro pli granda ol';
+$lang['wrong filename'] = 'maltaŭga dosieronomo';
+$lang['Ignore this update'] = 'Malatentu tiun ĝisdatigon';
+$lang['Image Quality'] = 'Bilda kvalito';
+$lang['Inactive Languages'] = 'Malaktivaj lingvoj';
+$lang['Inactive Plugins'] = 'Malaktivaj krom-programoj';
+$lang['Inactive Themes'] = 'Malavtivaj temoj';
+$lang['Informations'] = 'Informo';
+$lang['Install'] = 'Instali';
+$lang['Hello,'] = 'Saluton,';
+$lang['Help Me'] = 'Helpu min';
+$lang['History'] = 'Historio';
+$lang['Hour'] = 'Horo';
+$lang['Group'] = 'Grupo';
+$lang['Group name'] = 'Grup-nomo';
+$lang['Groups'] = 'Grupoj';
+$lang['Groups and users'] = 'Grupoj kaj uzantoj';
+$lang['Guest Settings'] = 'Agordoj por gastoj';
+$lang['Guest cannot be deleted'] = 'Gasto ne ĝisdatigeblas';
+$lang['Guests'] = 'Gastoj';
+$lang['Hello'] = 'Saluton';
+$lang['Go to'] = 'Iri al';
+$lang['Forbidden'] = 'Malpermesitaj';
+$lang['Error when sending email to %s [%s].'] = 'Eraro dum sendado de retmesaĝo al %s [%s].';
+$lang['Everybody'] = 'Ĉiuj';
+$lang['Failed to write file to disk'] = 'Malsukcesis skribi la dosieron sur la diskon';
+$lang['File'] = 'Dosiero';
+$lang['Forbid this language to users'] = 'Malpermesi tiun lingvon al uzantoj';
+$lang['ERROR'] = 'ERARO';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERARO: TIU KROM-PROGRAMO MANKAS SED ĜI INSTALIĜIS! MALINSTALU ĜIN SENPROKRASTE.';
+$lang['Edit album'] = 'Redakti fotaron';
+$lang['Edit album permissions'] = 'Redakti fotarajn permesojn';
+$lang['Edit photo'] = 'Modifi foton';
+$lang['Edit photo information'] = 'Redakti fotan informon';
+$lang['Edit ranks'] = 'Redakti rangojn';
+$lang['Edit selected tags'] = 'Redakti elektitajn etikedojn';
+$lang['Edit tags'] = 'Redakti etikedojn';
+$lang['Element'] = 'Eroj';
+$lang['Element type'] = 'Tipo de ero';
+$lang['Email administrators when a comment is deleted'] = 'Sendu retmesaĝon al la administrantoj kiam komento estis forigita';
+$lang['Email administrators when a comment is modified'] = 'Sendu retmesaĝon al la administrantoj kiam komento estis modifiita';
+$lang['Email admins when a comment requires validation'] = 'Sendu retmesaĝon al la administrantoj kiam komento bezonas validigo';
+$lang['Email admins when a new user registers'] = 'Sendu retmesaĝon al la administrantoj kiam nova uzanto registras';
+$lang['Email admins when a valid comment is entered'] = 'Sendu retmesaĝon al la administrantoj kiam valida komento entajpiĝas';
+$lang['Environment'] = 'Ĉirkaŭaĵo';
+$lang['Error list'] = 'Listo de eraroj';
+$lang['Download,'] = 'Elŝuti,';
+$lang['Downloads'] = 'Elŝutadoj';
+$lang['Drag to re-order'] = 'Ŝovmetu por reorganizi';
+$lang['Drop into album'] = 'Elekti albumon';
+$lang['Delete orphan tags'] = 'Forigi orfajn etikedojn';
+$lang['Delete selected photos'] = 'Forigi elektitajn fotojn';
+$lang['Delete selected tags'] = 'Forigi elektitajn etikedojn';
+$lang['Delete selected users'] = 'Forigi elektitajn uzantojn';
+$lang['Delete this language'] = 'Forigi tiun lingvon';
+$lang['Delete this theme'] = 'Forigi tiun temon';
+$lang['Deletions'] = 'Forigadoj';
+$lang['Detailed informations'] = 'Detalaj informoj';
+$lang['Directory'] = 'Dosierujo';
+$lang['Directory does not exist'] = 'La dosierujo ne ekzistas';
+$lang['Crop'] = 'Stuci';
+$lang['Current name'] = 'Kurenta nomo';
+$lang['Database'] = 'Datenbazo';
+$lang['Date'] = 'Dato';
+$lang['Day'] = 'Tago';
+$lang['Deactivate'] = 'Malŝalti';
+$lang['Deactivate all'] = 'Malŝalti ĉiuj';
+$lang['Default display'] = 'Apriora vido';
+$lang['Default user cannot be deleted'] = 'Apriora uzanto ne forigeblas';
+$lang['Default user does not exist'] = 'La apriora uzanto ne ekzistas';
+$lang['Delete Representant'] = 'Forigi fotaran miniaturon';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Korektita malnormalaĵo ne plu malatentiĝos';
+$lang['Correction applied with success'] = 'Korektado sukcese plenumiĝis';
+$lang['Correction applied with error'] = 'Korektado fuŝe plenumiĝis';
+$lang['Correction'] = 'Korektado';
+$lang['Add a criteria'] = 'Aldoni regulon';
+$lang['Associated'] = 'Asociita';
+$lang['Associate to album'] = 'Asocii kun fotaro';
+$lang['Add Photos'] = 'Aldoni fotojn';
+$lang['Add a filter'] = 'Aldoni filtrilon';
+$lang['Add a tag'] = 'Aldoni etikedon';
+$lang['Add a user'] = 'Aldoni uzanton';
+$lang['Add a virtual album'] = 'Aldoni virtualan fotaron';
+$lang['Add detailed content'] = 'Aldoni detalan enhavon';
+$lang['Add group'] = 'Aldoni grupon';
+$lang['A new version of Piwigo is available.'] = 'Nova versio de Piwigo disponeblas.';
+$lang['Activate Navigation Bar'] = 'Aktivigi navigan breton';
+$lang['Activate'] = 'Aktivigi';
+$lang['Actions'] = 'Agoj';
+$lang['Action'] = 'Ago';
+$lang[', click on'] = ', musklaku sur';
+$lang['%d waiting for validation'] = '%d atendanta validigon';
+$lang['Lock gallery'] = 'Ŝlosi galerion';
+$lang['Gallery unlocked'] = 'Malŝlosita galerio';
+$lang['Gallery title'] = 'Galeria titolo';
+$lang['The gallery URL is not valid.'] = 'La galeria retadreso ne validas.';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifas <em>Piwigo Uploader</em>. De via komputilo, pLoader preparas viajn fotojn kaj transigas ilin al via photogalerio en Piwigo.';
+$lang['With blank value, gallery title will be used'] = 'Se malplenas, la galeria titolo uziĝos';
+$lang['Visit Gallery'] = 'Vizitu la galerion';
+$lang['There is no group in this gallery.'] = 'Ne estas grupo en tiu galerio';
+$lang['Unlock gallery'] = 'Malŝlosi galerion';
+$lang['View in gallery'] = 'Vidi en galerio';
+$lang['A locked gallery is only visible to administrators'] = 'Ŝlosita galerio nur videblas al la administrantoj';
+$lang['Activate icon "%s"'] = 'Aktivigi la bildsimbolon "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Vidigi la bildsimbolon "nova" apud la albumoj kaj la fotoj';
+$lang['Active Plugins'] = 'Aktivaj kromprogramoj';
+$lang['Active Languages'] = 'Aktivaj lingvojn';
+$lang['Add tags'] = 'Aldoni etikedojn';
+$lang['Active Themes'] = 'Aktivaj temoj';
+$lang['%s photos have been regenerated'] = '%s fotoj regeneriĝis';
+$lang['%s photos can not be regenerated'] = '%s fotoj ne regeneriĝeblas';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s estu agordita je "false" en via dosiero local/config/config.inc.php';
+$lang['%s has been successfully updated.'] = '%s sukcese ĝisdatiĝis';
+$lang['Add New Theme'] = 'Aldoni novan temon';
+$lang['Add New Language'] = 'Aldoni novan lingvon';
+$lang['Add'] = 'Aldoni';
+$lang['Activate comments'] = 'Aktivigi komentojn';
+$lang['Hoverbox display'] = 'Vido dum musumo';
+$lang['Display options'] = 'Vidigaj opcioj';
+$lang['Include display of recent photos grouped by dates'] = 'Ankaŭ vidigu freŝajn fotojn grupitajn laŭ datoj';
+$lang['No display'] = 'Neniu vido';
+$lang['display'] = 'Vido';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Vidigi kiel eble plej da informoj (aldonitaj fotaroj kaj fotoj, forigitaj fotaroj kaj fotoj) ';
+$lang['Update to Piwigo %s'] = 'Ĝisdatigi al Piwigo %s';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Restu en rilato kun la projekto Piwigo, aliĝu al la reta bulteno de Piwigo. Retmesaĝoj sendiĝos al vi kiam nova eldono disponeblos (foje enhavanta sekurecocimo-reparon gravan kaj ĝisdatigendan) kaj kiam okazos eventoj gravaj por la projekto. Nur kelkaj retmesaĝoj jare.';
+$lang['An error has occured during upgrade.'] = 'Eraro okazis dum la plibonigado.';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Kontrolserĉo de plibonigoj malsukcesis sen konataj kialoj.';
+$lang['Languages which need upgrade'] = 'Lingvoj bezonantaj plibonigojn';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ĉu vi certe deziras instali tiun plibonigon? Vi devas kontroli, ĉu la kurenta versio ne bezonas antaŭan malinstaligon.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vi povas rekte ĝisdatigi al Piwigo %s, sen uzi na Piwigo %s (rekomendita).';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne povas kolekti la plibonigan dosieron el la servilo';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Konsilindas plibonigi la sistemon por komplete profiti de la aplikaĵo, alie la aplikaĵo eble ne funkcios aŭ nur malkorekte.';
+$lang['Check for updates'] = 'Kontrolserĉi ĝisdatigojn';
+$lang['Choose an action'] = 'Elekti agon';
+$lang['Choose an option'] = 'Elekti opcio';
+$lang['Classic display'] = 'Klasika vido';
+$lang['Check for upgrade'] = 'Kontrolserĉi plibonigojn';
+$lang['Plugins which need upgrade'] = 'Kromprogramoj bezonantaj plibonigojn';
+$lang['Some upgrades are available for extensions.'] = 'Plibonigoj disponeblas por etendaĵoj.';
+$lang['Unable to check for upgrade.'] = 'Maleblas kontrolserĉi plibonigojn.';
+$lang['Themes which need upgrade'] = 'Temoj bezonantaj plibonigojn';
+$lang['Check all'] = 'Kontroli ĉion';
+$lang['Change Admin Colors'] = 'Ŝanĝi la administrajn kolorojn';
+$lang['Can\'t read or extract archive.'] = 'Arĥivo ne legeblas aŭ eltireblas.';
+$lang['Can\'t download archive.'] = 'Arĥivo ne elŝuteblas.';
+$lang['Cannot delete the old permalink !'] = 'La malnova konstanta ligilo ne forigeblas!';
+$lang['Cancel'] = 'Nuligi';
+$lang['Album updated successfully'] = 'Fotaro sukcese ĝisdatigita';
+$lang['Activate Navigation Thumbnails'] = 'Aktivigi navigajn miniaturojn';
+$lang['Added by %s'] = 'Aldonita de %s';
+$lang['Add/delete a permalink'] = 'Aldoni/forigi konstantan ligilon';
+$lang['Locked'] = 'Ŝlositaj';
+$lang['Last send'] = 'Lasta sendo';
+$lang['Last revisions'] = 'Lastaj revizioj';
+$lang['Mail sent to %s [%s].'] = 'Retmesaĝo sendita al %s [%s]';
+$lang['Link all album photos to a new album'] = 'Ligi ĉiujn fotarojn al la nova';
+$lang['Link all album photos to some existing albums'] = 'Ligi ĉiujn fotarojn al la jam ekzistantaj';
+$lang['Linked albums'] = 'Ligitaj fotaroj';
+$lang['List'] = 'Listo';
+$lang['Local'] = 'Loka';
+$lang['Lock'] = 'Ŝlosi';
+$lang['Lock albums'] = 'Ŝlosi fotarojn';
+$lang['Mail address is obligatory for all users'] = 'Retadreso devigas por ĉiu uzanto';
+$lang['Mail content'] = 'Mesaĝa enhavo';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluzivigi historidatumojn (Atentu! La limo de la servila memoro eble transpasiĝos)';
+$lang['Information data registered in database'] = 'Informo registriĝis en datumbazon';
+$lang['Install on your computer,'] = 'Instali sur la komputilon';
+$lang['Installed Languages'] = 'Instalitaj lingvoj';
+$lang['Installed Themes'] = 'Instalitaj temoj';
+$lang['Instructions to use Piwigo'] = 'Instrukcioj por uzi na Piwigo';
+$lang['Invert'] = 'Inversigi';
+$lang['Language has been successfully installed'] = 'La lingvo sukcese instaliĝis.';
+$lang['Languages'] = 'Lingvoj';
+$lang['Last hit'] = 'Lasta trafo';
+$lang['Last import'] = 'Lasta importo';
+$lang['Landscape'] = 'Horizontala';
+$lang['Hit'] = 'Trafo';
+$lang['Ignore All'] = 'Malatenti ĉion';
+$lang['Ignore selected anomalies'] = 'Malatenti selektitajn nenormalojn';
+$lang['Image id'] = 'Bilda nomo';
+$lang['Images manual order was saved'] = 'Permana bild-ordo konserviĝis';
+$lang['Go to %s or %s for more informations'] = 'Iri al %s aŭ %s por pliaj informoj';
+$lang['Grant selected groups'] = 'Doni atingon al la selektitaj groupoj';
+$lang['Grant selected users'] = 'Doni atingon al la selektitaj uzantoj';
+$lang['Graphics Library'] = 'Grafika biblioteko';
+$lang['High definition'] = 'Alta distingivo';
+$lang['High definition enabled'] = 'Alta distingivo ŝaltita';
+$lang['Group management'] = 'Grupomastrumado';
+$lang['General statistics'] = 'Ĝeneralaj statistikoj';
+$lang['Forbid this theme to users'] = 'Malpermesi tiun temon al uzantoj';
+$lang['Form'] = 'Respondilo';
+$lang['Apply watermark if height is bigger than'] = 'Apliki filigranon se la alto superas';
+$lang['Height'] = 'Alto';
+$lang['Maximum height'] = 'Maksimuma alto';
+$lang['Minimum height'] = 'Minimuma alto';
+$lang['The original maximum height must be a number between %d and %d'] = 'La originala maksimuma alto estu nombro inter %d and %d';
+$lang['height must be a number superior to'] = 'Alto estu nombro super';
+$lang['Configuration'] = 'Agordo';
+$lang['Confirm merge'] = 'Konfirmu la kunfandon';
+$lang['Continue processing treatment'] = 'Pludaŭrigi okazantan traktadon';
+$lang['I decide to update anyway'] = 'Mi decidas ĉiel ĝisdatigi';
+$lang['IP'] = 'IP';
+$lang['Administration Home'] = 'Administra hejmo';
+$lang['remove author'] = 'Forigi aŭtoron';
+$lang['remove tags'] = 'Forigi etikedojn';
+$lang['remove this filter'] = 'Forigi tiun filtrilon';
+$lang['remove title'] = 'Forigi titolon';
+$lang['show details'] = 'Montri detalojn';
+$lang['the wiki'] = 'la vikio';
+$lang['top left corner'] = 'supra maldekstra angulo';
+$lang['top right corner'] = 'supra dekstra angulo';
+$lang['total time'] = 'tuta tempo';
+$lang['unknown'] = 'nekonata';
+$lang['the forum'] = 'la forumo';
+$lang['Duplicates'] = 'Duobloj';
+$lang['Error on file "%s" : %s'] = 'Eraro en dosiero "%s": %s';
+$lang['Errors caption'] = 'Klarigetoj de la eraroj';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'La plenumtempo transpasita, la traktado pludaŭru [taksita tempo: %d sekundo].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'La plenumtempo transpasita, la traktado pludaŭru [taksita tempo: %d sekundoj].';
+$lang['Extend for templates'] = 'Etendi ŝablonojn';
+$lang['Extensions Update'] = 'Ĝisdatigo de kromaĵoj';
+$lang['FTP + Synchronization'] = 'FTP + sinkronigo';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Eblecoj inkluzivas foliumadon de galerio, kreadon de fotaroj kaj alŝutadon de fotoj.';
+$lang['File upload stopped by extension'] = 'La dosieran alŝuton finis kromaĵo';
+$lang['File/directory read error'] = 'Eraro je la legado de dosier(uj)o';
+$lang['Find a new representant by random'] = 'Hazarde trovi novan fotaran miniaturon';
+$lang['Follow Orientation'] = 'Sekvi orientiĝon';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'La jenaj kromprogramoj eble ne kongruos kun la nova versio de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'La jenaj temoj eble ne kongruos kun la nova versio de Piwigo:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Por la grandecoj de stucitaj fotoj, kiel "kvadrato", Piwigo klopodos por ĉeestigi la interescentron.';
+$lang['GD library is missing'] = 'La biblioteko GD mankas';
+$lang['GD version'] = 'GD versio';
+$lang['Generate multiple size images'] = 'Generi multoblajn grandecojn de bildoj';
+$lang['Get Support on Piwigo Forum'] = 'Obteni helpon ĉe la forumo de Piwigo';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Anstataŭigado de originalaj ŝablonoj per tajloritaj ŝablonoj el la subdosierujo por ŝablonaj etendaĵoj';
+$lang['All extensions are up to date.'] = 'Ĉiuj kromaĵoj estas ĝisdataj.';
+$lang['All languages are up to date.'] = 'Ĉiuj lingvoj estas ĝisdataj.';
+$lang['All plugins are up to date.'] = 'Ĉiuj kromaprogramoj estas ĝisdataj.';
+$lang['All themes are up to date.'] = 'Ĉiuj temoj estas ĝisdataj.';
+$lang['Album "%s" now contains %d photos'] = 'Fotaro "%s" nun enhavas %d fotojn';
+$lang['Album "%s" has been added'] = 'Fotaro "%s" aldoniĝis';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom estas fota programaro desegnita por administri grandajn kvantojn de ciferecaj bildoj kaj post-trakti ilin.';
+$lang['Add write access to the "%s" directory'] = 'Aldonu skribaliron al la dosierujo "%s"';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'La aplikaĵo <em>Piwigo por iOS<em> ebligas vin konektiĝi al via galerio Piwigo, por krei fotarojn kaj elŝuti plurajn fotojn unufoje el via iPhone, iPas aŭ iPod Touch.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'La aplikaĵo <em>Piwigo por Android<em> ebligas vin konektiĝi al via galerio Piwigo, por krei fotarojn kaj elŝuti plurajn fotojn unufoje el via telefono aŭ tabuleto Android.';
+$lang['Advanced features'] = 'Specialaj funkcioj';
+$lang['Access type'] = 'Tipo de atingo';
+$lang['Allow user customization'] = 'Permesi al uzantoj tajloradon';
+$lang['Allow user registration'] = 'Permesi al uzantoj registriĝi';
+$lang['Allow users to edit their own comments'] = 'Permesi al uzantoj redakti iliajn proprajn komentojn';
+$lang['Authorized'] = 'Permesita';
+$lang['Authorize users to add comments on selected albums'] = 'Permesi al uzantoj aldoni komentojn sur selektitaj fotaroj';
+$lang['Average rate'] = 'Meza takso';
+$lang['Available versions for'] = 'Disponeblaj versioj por';
+$lang['Available only with HTML format'] = 'Nur disponebla HTML-formate';
+$lang['Available on'] = 'Disponebla ĉe';
+$lang['Applications'] = 'Aplikaĵoj';
+$lang['Apply action'] = 'Apliki agon';
+$lang['Apply selected corrections'] = 'Apliki selektitajn korektojn';
+$lang['Apply to sub-albums'] = 'Apliki al subfotaroj';
+$lang['All optimizations have been successfully completed.'] = 'Ĉiuj optimumigoj sucese plenumiĝis.';
+$lang['Albums authorized thanks to group associations'] = 'Fotaroj rajtigitaj dank\' al grupaparteno';
+$lang['Album photos associated to the following albums: %s'] = 'La fotoj de l\' fotaro asociiĝis al la jenaj fotaroj: %s';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uzantoj aŭtomate havas permeson ĉar ili apartenas al permeshava grupo';
+$lang['%s value is not correct file because exif are not supported'] = 'La valoro de %s maltaŭgas ĉar "exif" ne akceptiĝas';
+$lang['Albums automatically sorted'] = 'Fotaroj aŭtomate ordigitaj';
+$lang['Anomaly'] = 'Nenormalo';
+$lang['Allow rating'] = 'Permesi pritakson';
+$lang['Allow users to delete their own comments'] = 'Permesi al uzantoj forigi iliajn proprajn komentojn';
+$lang['Album manual order was saved'] = 'La permana fotara ordo konserviĝis';
+$lang['Album list management'] = 'Administrado de la fotara listo';
+$lang['Check automatic corrections'] = 'Ŝalti la aŭtomatajn korektojn';
+$lang['Comments for all'] = 'Komentoj al ĉiuj';
+$lang['Discover album:'] = 'Malkovru la fotaron:';
+$lang['Deleted on'] = 'Forigi ĉe';
+$lang['Create this site'] = 'Krei tiun retejon';
+$lang['Can\'t connect to server.'] = 'Konekto al la servilo ne disponeblas.';
+$lang['Can\'t create temporary file.'] = 'Ne eblas krei provizoran dosieron.';
+$lang['Caddie management'] = 'Administrado de la korbo';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo apriore kreos novan retan grandon el la tredistingiva versio de via foto.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'La interesa punkto apriore lokiĝas ĉe la mezo de la foto.';
+$lang['Automatic sort order'] = 'Aŭtomata ordiga ordo';
+$lang['Center of interest'] = 'Interesa punkto';
+$lang['Are you sure you want to install this plugin?'] = 'Ĉu vi certe deziras instali tiun kromaĵon?';
+$lang['Batch Manager'] = 'Stapla administrilo';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ĉirkaŭa maksimuma distingivo: %dM bilderoj (t.e. %dx%d bilderoj).';
+$lang['Apply watermark if width is bigger than'] = 'Apliki la filigranon se la larĝeco estas pli ol';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture estas desegnita por profesiaj fotistoj kun la simpleco de iPhoto.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture estas potenca ilo por rafini bildojn kaj administri larĝegajn bibliotekojn ĉe komputiloj Mac.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Nur retestroj rajtas vidi tiun langeton, ne administrantoj.';
+$lang['An information email was sent to group "%s"'] = 'Informa retmesaĝo sendiĝis al la grupo "%s"';
+$lang['An error occured during extraction (%s).'] = 'Eraro okazi dum la eltirado de dosieroj (%s).';
+$lang['By rank'] = 'Laŭ rango';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Eraro okazis dum eltirado. Bonvolu kontroli la dosieropermesojn de via instalo de Piwigo.<br><ahref="%s">Musklaku ĉi tie por vidi la erarprotokolo</a>.';
+$lang['Are you sure you want to delete this plugin?'] = 'Ĉu vi certe deziras forigi tiun kromaĵon?';
+$lang['Bound Theme'] = 'Ligita temo';
+$lang['By %s'] = 'Per %s';
+$lang['Automatic correction'] = 'Aŭtomata korekto';
+$lang['Main Page'] = 'Ĉefa paĝo';
+$lang['Maintenance'] = 'Funkciteno';
+$lang['Manage'] = 'Administri';
+$lang['Manage Permissions'] = 'Administri la permesojn';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Krei la "%s" dosierujon ĉe la radiko de via Piwigo-instalo';
+$lang['Delete multiple size images'] = 'Forigi la multoblan grandecon de fotoj';
+$lang['Documentation'] = 'Dokumentaro';
+$lang['Does not represent'] = 'Ne estas miniaturo por';
+$lang['Dump Database'] = 'Ŝuti la datumbazon';
+$lang['Duplicate'] = 'Duobligi';
+$lang['Duplicate selected tags'] = 'Duobligi la selektitajn etikedojn';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Doni skribaliron (chmod777) al la "%s" dosierujo ĉe la radiko de via Piwigo-instalo';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se neniu tredistingiva versio disponeblas kaj se la kuranta retgrandeco plias ol la ĉisubaj grandecoj, Piwigo konsideros ĝin kiel tredistingiva versio kaj kreos la novan retgrandecon de ĝi.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'En kazo de problemoj aŭ demandoj, bonvolu sendi mesaĝon al';
+$lang['Do you want to activate anyway?'] = 'Ĉu vi tamen volas aktivigi ĝin?';
+$lang['Dissociated'] = 'Malligita';
+$lang['Dissociate from album'] = 'Malligi de la fotaro';
+$lang['Deny selected users'] = 'Rifuzi la selektitajn uzantojn';
+$lang['Deny selected groups'] = 'Rifuzi la selektitajn grupojn';
+$lang['Permission granted'] = 'Atingo permesita';
+$lang['Permission denied'] = 'Atingo malpermesita';
+$lang['Default photos order'] = 'Apriora ordo de fotoj';
+$lang['Default comments order'] = 'Apriora ordo de komentoj';
+$lang['Database synchronization with files'] = 'Sinkronigo de la datumbazo kun la dosieroj';
+$lang['Complementary mail content'] = 'Komplementa enhavo de retmesaĝo';
+$lang['Check integrity'] = 'Kontrolo pri integreco';
+$lang['Manage photos'] = 'Administri la fotojn';
+$lang['Manage tags'] = 'Administri la etikedojn';
+$lang['Manage the members'] = 'Administri la membrojn';
+$lang['Impossible automatic correction'] = 'Neeblas aŭtomata korektado';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Neeblis malaktivigi tiun temon, ĉar la patra temo mankas: %s.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Neeblas malaktivigi tiun lingvon, unue elektu alian aprioran lingvon.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neeblas malaktivigi tiun lingvon, nepras almenaŭ unu lingvo.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neeblas malaktivigi tiun temon, nepras almenaŭ unu temo.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Neeblas forigi tiun temon, ĉar aliaj temoj dependas de ĝi: %s.';
+$lang['Modify information'] = 'Modifi informon';
+$lang['Month'] = 'Monato';
+$lang['Move'] = 'Movi';
+$lang['Move albums'] = 'Movi fotarojn';
+$lang['Move to album'] = 'Movi al fotaro';
+$lang['Name of the duplicate'] = 'Nomo de la duoblo';
+$lang['New Version'] = 'Nova Versio';
+$lang['New name'] = 'Nova nomo';
+$lang['New parent album'] = 'Nova patra fotaro';
+$lang['New photos added'] = 'Novaj fotoj aldonitaj';
+$lang['New photos were added'] = 'Novaj fotoj aldoniĝis';
+$lang['New tag'] = 'Nova etikedo';
+$lang['No file was uploaded'] = 'Neniu dosiero alŝutiĝis';
+$lang['No group selected, no action possible.'] = 'Neniu grupo estis selektita, neniu ago eblas.';
+$lang['No mail to send.'] = 'Neniu mesaĝo sendenda.';
+$lang['No members to manage'] = 'Neniu membro administrenda ';
+$lang['Maximum width'] = 'Maksimuma larĝo';
+$lang['Members'] = 'Membroj';
+$lang['Menu Management'] = 'Menuoj';
+$lang['Merge selected groups'] = 'Kunfandi la selektitajn grupojn';
+$lang['Merge selected tags'] = 'Kunfandi la selektitajn etikedojn';
+$lang['Merge tags'] = 'Kunfandi etikedojn';
+$lang['No photo can be deleted'] = 'Eblas forigi neniun foton ';
+$lang['No photo in this album'] = 'Neniu foto en tiu fotaro';
+$lang['No photo selected, no action possible.'] = 'Sen foto selektita, neniu ago eblas.';
+$lang['No results'] = 'Neniu rezulto';
+$lang['No user to send notifications by mail.'] = 'Neniun uzanton oni sciigos retmesaĝe.';
+$lang['None'] = 'Nenio';
+$lang['Not cropped correctly?'] = 'Ĉu la foto ne estis taŭge stucita?';
+$lang['Multiple Size'] = 'Multopla grandeco';
+$lang['Number of albums per page'] = 'Nombro da fotaroj ĉe ĉiu paĝo';
+$lang['Number of comments per page'] = 'Nombro da komentoj ĉe ĉiu paĝo';
+$lang['Number of downloads'] = 'Nombro da elŝutadoj';
+$lang['Number of thumbnails to create'] = 'Nombro da miniaturoj kreendaj';
+$lang['Opacity'] = 'Opakeco';
+$lang['Permissions'] = 'Permisiloj';
+$lang['Photo Page'] = 'Fotopaĝo';
+$lang['Photo informations updated'] = 'Fotoinformoj ĝisdatiĝis';
+$lang['Photos'] = 'Fotoj';
+$lang['Piwigo Administration'] = 'Administro de Piwigo';
+$lang['Piwigo Update'] = 'Ĝisdatiĝo de Piwigo';
+$lang['Permalinks'] = 'Konstantaj ligiloj';
+$lang['Permalink history'] = 'Historio pri la konstantaj ligiloj';
+$lang['Permalink %s is already used by album %s'] = 'La konstantan ligilon %s jam uzas la fotaro %s';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'La konstantan ligilon %s antaŭe uzis la fotaro %s. Unue forigu ĝin de la historio pri konstantaj ligiloj.';
+$lang['Numeric identifier : %d'] = 'Nombra identigilo: %d';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Ĉe via Linux, simple instalu na Shotwell kun via pako-administrilo kaj poste aktivigu la publikigan opcion de Piwigo.';
+$lang['Operating system'] = 'Operaciumo';
+$lang['Operation in progress'] = 'Prilaboro fariĝas';
+$lang['Obsolete Plugins'] = 'Malaktualaj kromprogramoj';
+$lang['Number of rates'] = 'Nombro da takso';
+$lang['Rate'] = 'Takso';
+$lang['Rated %d times, score : %.2f'] = 'Taskita %d fojoj, poetaro: %.2f';
+$lang['Sum of rates'] = 'Sumo da takso';
+$lang['Rate date'] = 'Taksdato';
+$lang['No photo selected, %d photos in current set'] = 'Neniu foto selektita, %d fotoj en la kuranta aro';
+$lang['No photo in the current set.'] = 'Neniu foto en la kuranta aro';
+$lang['No group is permitted to see this private album'] = 'Neniu grupo rajtas vidi tiun privatan fotaron';
+$lang['No order field selected'] = 'Neniu ordokampo selektiĝis';
+$lang['No destination tag selected'] = 'Neniu celetikedo selektiĝis';
+$lang['Options'] = 'Opcioj';
+$lang['Original Size'] = 'Originala grandeco';
+$lang['Original file : %s'] = 'Originala dosiero: %s';
+$lang['Original templates'] = 'Originalaj ŝablonoj';
+$lang['Remove all filters'] = 'Forigi ĉiujn filtrilojn';
+$lang['Remove from caddie'] = 'Fortiri de la ĉareto';
+$lang['Rename'] = 'Renomi';
+$lang['Repair and optimize database'] = 'Repari kaj optimumigi la datumbazon';
+$lang['Replacers (customized templates)'] = 'Anstataŭigoj (tajloritaj ŝablonoj)';
+$lang['Representant'] = 'Fotara Miniaturo';
+$lang['Representation of albums'] = 'Fotara miniaturo';
+$lang['Representative'] = 'Fotara miniaturo';
+$lang['Represents'] = 'Estas miniaturo por';
+$lang['Please wait...'] = 'Bonvolu atendi...';
+$lang['Plugin has been successfully copied'] = 'La kromaĵo sukcese kopiiĝis';
+$lang['Plugin list'] = 'Kromaĵolisto';
+$lang['Plugins'] = 'Kromaĵoj';
+$lang['Portrait'] = 'Portreto';
+$lang['Position'] = 'Pozicio';
+$lang['Posted %s on %s'] = 'Afiŝitaj %s je la %s';
+$lang['Predefined filter'] = 'Antaŭdifinita filtrilo';
+$lang['Preferences'] = 'Preferoj';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'La tempo por prepari la liston de uzantoj, al kiuj retmesaĝo estos sendita, limiĝas. Aliaj uzantoj ne ĉeestas la liston.';
+$lang['Privacy level'] = 'Privateca nivelo';
+$lang['Privacy level set to "%s"'] = 'Privateca nivelo agordita je "%s"';
+$lang['Private'] = 'Privata';
+$lang['Properties'] = 'Propreco';
+$lang['Public'] = 'Publika';
+$lang['Public / Private'] = 'Publika / Privata';
+$lang['Send'] = 'Sendi';
+$lang['Send mail as'] = 'Sendi mesaĝon kiel';
+$lang['Send mail on HTML format'] = 'Sendi la mesaĝon laŭ HTML-formato';
+$lang['Send mail to users'] = 'Sendi mesaĝo al uzantoj';
+$lang['Set author'] = 'Defini aŭtoron';
+$lang['Show menubar'] = 'Montri la menuzonon';
+$lang['Simulation'] = 'Simulado';
+$lang['Site manager'] = 'Retejadministrilo';
+$lang['Some themes and plugins may be not available yet.'] = 'Kelkaj temoj kaj kromaĵoj eble ne jam disponeblas';
+$lang['Source tag'] = 'Fonta etikedo';
+$lang['Start pLoader and add your photos.'] = 'Komenci pLoader kaj aldoni viajn fotojn.';
+$lang['Statistics'] = 'Statistiko';
+$lang['Status'] = 'Stato';
+$lang['Status of user "%s" updated'] = 'Stato de la uzanto "%s" ĝisdatiĝis';
+$lang['Storage album'] = 'Memorfotaro';
+$lang['Subscribe'] = 'Aboni';
+$lang['Subscribe %s'] = 'Abonigi %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonigi %s al la novaĵoletero de Piwigo';
+$lang['Subscribe to notification by mail'] = 'Aboni al retaj atentigoj';
+$lang['Subscribe/unsubscribe users'] = 'Abonigi/malabonigi uzantojn';
+$lang['Subscribed'] = 'Abonita';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Eblas atentigi la abonantojn nur se ekzistas novaj elementoj atentigindaj.';
+$lang['Summary'] = 'Resumo';
+$lang['Support'] = 'Subteno';
+$lang['User status'] = 'Stato de la uzanto';
+$lang['Users'] = 'Uzantoj';
+$lang['Validate'] = 'Validigi';
+$lang['Validation'] = 'Validigo';
+$lang['Version'] = 'Versio';
+$lang['Virtual Links'] = 'Virtualaj ligiloj';
+$lang['Virtual album'] = 'Virtuala fotaro';
+$lang['Virtual album added'] = 'Virtuala fotaro aldoniĝis';
+$lang['Virtual album deleted'] = 'Virtuala fotaro forigita';
+$lang['Virtual album name'] = 'Nomo de la virtuala fotaro';
+$lang['Virtual albums to move'] = 'Virtualaj albumoj movendaj';
+$lang['Visit Piwigo project website'] = 'Viziti la retejon de la projekto Piwigo';
+$lang['Visit language site'] = 'Vizitu la lingvan retejon';
+$lang['Visit plugin site'] = 'Vizitu la kromaĵan retejon';
+$lang['Visit theme site'] = 'Vizitu la teman retejon';
+$lang['Visited %d times'] = 'Vizitita %d fojojn';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENTU! Tiu kromaĵo ŝajne ne kongruas kun tiu versio de Piwigo.';
+$lang['Waiting'] = 'Pritraktota';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Atentu: je ekabono kaj malabono sendiĝos retmesaĝoj al la uzantoj';
+$lang['Watermark'] = 'Filigrano';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'La retestro abonigis vin al la retaj atentigoj.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'La retestro malabonigis vin de la retaj atentigoj.';
+$lang['Title'] = 'Titolo';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Por eksporti viajn fotojn de digiKam al Piwigo, simple instalu na digiKam kaj la Kipi-kromaĵojn.';
+$lang['To send ?'] = 'Ĉu sendi?';
+$lang['To subscribe'] = 'Por aboni';
+$lang['To unsubscribe'] = 'Por malaboni';
+$lang['Tools'] = 'Iloj';
+$lang['Two updates are available'] = 'Du ĝisdatigoj disponeblas';
+$lang['Type here the author name'] = 'Entajpu la aŭtoran nomon ĉitien';
+$lang['Type here the name of the new group'] = 'Entajpu la nomon de la nova grupo ĉitien';
+$lang['Type here the title'] = 'Entajpu la titolon ĉitien';
+$lang['Type in a search term'] = 'Entajpu serĉoterminon';
+$lang['Unable to dump database.'] = 'Ne eblas ŝuti la datumbazon.';
+$lang['Uncheck all'] = 'Malselekti ĉiujn';
+$lang['Uninstall'] = 'Malinstali';
+$lang['Uninstalled Plugins'] = 'Malinstalitaj kromprogramoj';
+$lang['Unknown upload error'] = 'Nekonata alŝuteraro';
+$lang['Unlocked'] = 'Malŝlosita';
+$lang['Unsubscribe from notification by mail'] = 'Malaboni de retaj atentigoj';
+$lang['Unsubscribed'] = 'Malabonita';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'La nomo de dosieroj kaj dosierujoj nur enhavu literojn, nombrojn, "-", "_" aŭ "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'La nombro da komentoj sur ĉiu paĝo estu inter 5 kaj 50.';
+$lang['The original image quality must be a number between %d and %d'] = 'La originala bilda kvalito estu nombro inter %d kaj %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'La originala maksimuma larĝeco estu nombro inter %d kaj %d';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La bildaj dimensioj malpligrandiĝos al %dx%d rastrumeroj.';
+$lang['The uploaded file was only partially uploaded'] = 'La alŝutita dosiero nur parte alŝutiĝis';
+$lang['The whole page'] = 'La tuta paĝo';
+$lang['The whole set'] = 'La tuta aro';
+$lang['Theme has been successfully installed'] = 'La temo sukcese instaliĝis';
+$lang['Themes'] = 'Temoj';
+$lang['There is no available subscribers to mail.'] = 'Ne estas abonantoj atentigindaj rete.';
+$lang['There is no other language available.'] = 'Ne estas alia lingvo disponebla.';
+$lang['There is no other plugin available.'] = 'Ne estas alia kromaĵo disponebla.';
+$lang['Select at least one comment'] = 'Selektu almenaŭ unu komenton';
+$lang['Select at least one photo'] = 'Selektu almenaŭ unu foton';
+$lang['Select at least one user'] = 'Selektu almenaŭ unu uzanton';
+$lang['Select at least two tags for merging'] = 'Selektu almenaŭ du etikedojn por kunfando';
+$lang['Select groups...'] = 'Selektu grupojn...';
+$lang['Select recipients'] = 'Selektu la ricevantojn';
+$lang['Select the destination tag'] = 'Selektu la destinetikedon';
+$lang['Select users...'] = 'Selekti uzantojn';
+$lang['Select:'] = 'Selekti:';
+$lang['Selection'] = 'Selekto';
+$lang['Send an information email to group members'] = 'Sendi informan retmesaĝon al grupaj membroj';
+$lang['Send connection settings by email'] = 'Sendi agordojn rete';
+$lang['Set as default language for unregistered and new users'] = 'Agordi kiel apriora lingvo por neregistritaj kaj novaj uzantoj';
+$lang['Set as default theme for unregistered and new users'] = 'Agordi kiel apriora temo por neregistritaj kaj novaj uzantoj';
+$lang['Set creation date'] = 'Agordi kreadodaton';
+$lang['Set title'] = 'Agordi titolon';
+$lang['Settings'] = 'Agordojn';
+$lang['Sharpen'] = 'Pliakrigi';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = '"Shotwell" estas malfermitkoda fotoorganizilo funkcianta ĉe Linux. Estas la apriora fotoadministrilo ĉe Ubuntu kaj Fedora.';
+$lang['Show info'] = 'Montri informaĵon';
+$lang['There is no other theme available.'] = 'Ne estas alia disponebla temo.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Tiu fotaro enhavas %d fotojn, aldonitajn inter la %s kaj la %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Tiu fotaro enhavas %d fotojn, aldonitajn je la %s.';
+$lang['This album contains no photo.'] = 'Tiu fotaro enhavas neniun foton.';
+$lang['This group will be set to default'] = 'Tiu grupo uziĝos apriore';
+$lang['This group will be unset to default'] = 'Tiu grupo ne plu uziĝos apriore';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Tiu estas grava ĝisdatigo, kun <a href="%s">amaso da novaj trajtoj</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Tiu estas malgrava ĝisdatigo, kun nur cimoriparoj.';
+$lang['This name is already used by another group.'] = 'La nomon jam uzas alia grupo';
+$lang['This site already exists'] = 'Tiu retejo jam ekzistas';
+$lang['This theme was not designed to be directly activated'] = 'Tiu temo ne desegniĝis por rekte aktiviĝi';
+$lang['Thumbnail'] = 'Miniaturo';
+$lang['Thumbnails generation in progress...'] = 'Generado de miniaturoj farata...';
+$lang['Time'] = 'Tempo';
+$lang['User %s [%s] added.'] = 'Uzanto %s [%s] aldoniĝis.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Uzanto %s [%s] aldoniĝis al la abonlisto.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Uzanto %s [%s] ne aldoniĝis al la abonlisto.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Uzanto %s [%s] ne foriĝis de la abonlisto.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Uzanto %s [%s] foriĝis de la abonlisto.';
+$lang['User comments validation'] = 'Validigo de la komentoj de la uzanto';
+$lang['User list'] = 'Listo de uzantoj';
+$lang['Web Form'] = 'Retformularo';
+$lang['Webmaster cannot be deleted'] = 'Ne eblas forigi retejestron';
+$lang['Webmaster status is required.'] = 'Nepras retejestra stato';
+$lang['Week starts on'] = 'Semajno komenciĝas je la';
+$lang['Who can see these photos?'] = 'Kiu povas vidi tiujn fotojn?';
+$lang['Who can see this photo?'] = 'Kiu povas vidi tiun foton?';
+$lang['Width'] = 'Larĝo';
+$lang['With no album'] = 'Sen fotaro';
+$lang['With no tag'] = 'Sen etikedo';
+$lang['With no virtual album'] = 'Sen virtuala albumo';
+$lang['X Position'] = 'Pozicio X';
+$lang['X Repeat'] = 'Ripeto X';
+$lang['Y Position'] = 'Pozicio Y';
+$lang['created'] = 'kreita';
+$lang['custom'] = 'Tajlori';
+$lang['default'] = 'apriore';
+$lang['default values'] = 'aprioraj valoroj';
+$lang['delete'] = 'forigi';
+$lang['delete album'] = 'forigi la fotaron';
+$lang['delete photo'] = 'forigi la foton';
+$lang['deleted'] = 'forigita';
+$lang['directories + files'] = 'dosierujoj + dosieroj';
+$lang['dissociate from group'] = 'malkunigi el la grupo';
+$lang['administrators'] = 'administrantoj';
+$lang['albums added in the database'] = 'fotaroj aldonitaj al la datumbazo';
+$lang['albums deleted in the database'] = 'fotaroj forigitaj de la datumbazo';
+$lang['all'] = 'ĉio';
+$lang['an error happened'] = 'eraro okazis';
+$lang['and'] = 'kaj';
+$lang['any visitor can see this album'] = 'iu ajn vizitanto povas vidi tiun fotaron';
+$lang['apply automatic sort order'] = 'apliki aŭtomata ordiga ordo';
+$lang['associate to group'] = 'asocii al la grupo';
+$lang['automatic order'] = 'aŭtomata ordo';
+$lang['average time'] = 'meza tempo';
+$lang['between'] = 'inter';
+$lang['between %.2f and %.2f'] = 'inter %.2f kaj %.2f';
+$lang['between %d and %d pixels'] = 'inter %d kaj %d rastrumeroj';
+$lang['bottom left corner'] = 'malsupra maldekstra angulo';
+$lang['bottom right corner'] = 'malsupra dekstra angulo';
+$lang['cancel manual order'] = 'nuligi la permanan ordon';
+$lang['clean'] = 'purigi';
+$lang['confirm'] = 'Konfirmi';
+$lang['create a new site'] = 'Krei novan retejon';
+$lang['jump to photo'] = 'iri al la foto';
+$lang['leave'] = 'lasi';
+$lang['manage album photos'] = 'Administri fotarajn fotojn';
+$lang['manage sub-albums'] = 'Administri sub-fotarojn';
+$lang['manual order'] = 'permana ordo';
+$lang['middle'] = 'mezo';
+$lang['modified'] = 'modifita';
+$lang['new'] = 'nova';
+$lang['no write access'] = 'neniu skribaliro';
+$lang['none'] = 'neniu';
+$lang['nothing'] = 'nenio';
+$lang['number of miniaturized photos'] = 'nombro da miniaturoj kreitaj';
+$lang['on'] = 'je la';
+$lang['on the %d selected photos'] = 'sur la %d selektitaj fotoj';
+$lang['only directories'] = 'nur dosierujoj';
+$lang['only perform a simulation (no change in database will be made)'] = 'nur simuladi (nenio ŝanĝiĝos en la datumbazo)';
+$lang['other'] = 'alia';
+$lang['overrides existing values with empty ones'] = 'viŝskribi ekzistantajn valorojn de malplenaj';
+$lang['pending validation'] = 'pritaktata kontrolo';
+$lang['photos added in the database'] = 'fotoj aldonitaj al la datumbazo';
+$lang['photos candidates for metadata synchronization'] = 'fotoj elektitaj por metadatumsinkronigado';
+$lang['photos deleted from the database'] = 'fotoj forigitaj de la datumbazo';
+$lang['photos informations synchronized with files metadata'] = 'fotoinformoj sinkronigitaj kun la dosiermetadatumoj';
+$lang['photos per page'] = 'fotoj sur ĉiu paĝo';
+$lang['photos updated in the database'] = 'fotoj ĝisdatigitaj en la datumbazo';
+$lang['pixels'] = 'rastrumeroj';
+$lang['private'] = 'privata';
+$lang['public'] = 'publika';
+$lang['randomly represented'] = 'hazarda fotara miniaturo';
+$lang['ranks'] = 'rangoj';
+$lang['registered users'] = 'registritaj uzantoj';
+$lang['registration date'] = 'registrodato';
+$lang['remove creation date'] = 'forigi la kreodaton';
+$lang['selection'] = 'selekto';
+$lang['set to'] = 'agordi kiel';
+$lang['simple visitors'] = 'simplaj vizitantoj';
+$lang['singly represented'] = 'fiksita fotara miniaturo';
+$lang['status'] = 'stato';
+$lang['sub-albums'] = 'subfotaroj';
+$lang['synchronize files metadata with database photos informations'] = 'sinkronigi la datumbazajn fotojn kun dosiermetadatumoj';
+$lang['synchronize files structure with database'] = 'sinkronigi la dosierstrukturon kun la datumbazo';
+$lang['test this remote site'] = 'testi tiun foran retejon';
+$lang['unit mode'] = 'unuopa modo';
+$lang['unset'] = 'malŝalti';
+$lang['update the database from files'] = 'ĝisdatigi la datumbazon kun dosieroj';
+$lang['test'] = 'testo';
+$lang['target'] = 'celo';
+$lang['Main "guest" user does not exist'] = 'La ĉefa "invitita" uzanto ne ekzistas';
+$lang['Main "guest" user status is incorrect'] = 'La stato de la ĉefa "invitita" uzanto ne validas';
+$lang['Main "webmaster" user does not exist'] = 'La ĉefa "retestra" uzanto ne ekzistas';
+$lang['Main "webmaster" user status is incorrect'] = 'La stato de la ĉefa "retestra" uzanto ne validas';
+$lang['Make this language available to users'] = 'Igi tiun lingvon disponeblan al uzantoj';
+$lang['Make this theme available to users'] = 'Igi tiun temon disponeblan al uzantoj';
+$lang['Manage authorizations for selected albums'] = 'Administri la rajtigojn por la selektitaj fotaroj';
+$lang['Manage permissions for group "%s"'] = 'Administri la permesojn por la grupo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Administri la permesojn por la uzanto "%s"';
+$lang['Manage photo ranks'] = 'Ordiga ordo de la fotoj';
+$lang['Manage this set of %d photos'] = 'Administri tiun aron de %d fotoj';
+$lang['Manual order'] = 'Permana ordo';
+$lang['Minimum width'] = 'Minimuma larĝeco';
+$lang['Miscellaneous'] = 'Diversaĵa';
+$lang['Metadata synchronization results'] = 'Rezultoj de la sinkronigo de metadatumoj';
+$lang['Metadata synchronized from file'] = 'Metadatumoj sinkronigitaj el la dosiero';
+$lang['Minimum privacy level'] = 'Minimuma privateconivelo';
+$lang['Missing Plugins'] = 'Mankantaj Kromaĵoj';
+$lang['Missing a temporary folder'] = 'Mankas provizora dosierujo';
+$lang['Notify administrators when a comment is'] = 'Sciigi la administrantojn kiam komento estas';
+$lang['Only private albums are listed'] = 'Nur privataj fotaroj listiĝas';
+$lang['Optimizations have been completed with some errors.'] = 'La finitaj optimumigoj enhavas erarojn.';
+$lang['Optional URL keyword'] = 'Opcia URL-ŝlosilvorto';
+$lang['Order of menubar items has been updated successfully.'] = 'Ordo de la menubreteroj sukcese ĝisdatiĝis.';
+$lang['Orphan tags deleted'] = 'Orfaj etikedoj forigitaj';
+$lang['Other plugins'] = 'Aliaj kromprogramoj disponeblaj';
+$lang['Other private albums'] = 'Aliaj privataj fotaroj';
+$lang['Overall'] = 'Superrigardo';
+$lang['Page banner'] = 'Paĝa rubando';
+$lang['Page end'] = 'Paĝofino';
+$lang['Pages seen'] = 'Paĝoj viditaj';
+$lang['Panorama'] = 'Panoramo';
+$lang['Parameter'] = 'Agordoj';
+$lang['Parameters'] = 'Parametroj';
+$lang['Path'] = 'Vojo';
+$lang['Pending Comments'] = 'Pritraktataj komentoj';
+$lang['Permalink'] = 'Konstanta ligilo';
+$lang['Piwigo Uploader'] = 'Alŝutilo de Piwigo';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Mankas konfirmado de pasvorto. Bonvolu konfirmi la elektitan pasvorton.';
+$lang['Password is missing. Please enter the password.'] = 'Mankas pasvorto. Bonvolu redakti la pasvorton.';
+$lang['Permission granted for groups'] = 'Atingo permesita por grupoj';
+$lang['Permission granted for users'] = 'Atingo permesita por uzantoj';
+$lang['Permission granted thanks to a group'] = 'Atingo permesita dank\' al grupo';
+$lang['Permission management'] = 'Administrado de permesoj';
+$lang['Photo sizes with crop'] = 'Fotograndeco kun stuco';
+$lang['Photo unreachable or no support'] = 'Neatingebla foto aŭ neakceptita formato';
+$lang['Photos generation in progress...'] = 'Generado de fotoj okazanta...';
+$lang['Piwigo Announcements Newsletter'] = 'Novaĵoletero de Piwigo';
+$lang['Piwigo Publish plugin for Lightroom'] = 'publikigokromaĵo de Piwigo por Lightroom';
+$lang['Piwigo configuration'] = 'Agordo de Piwigo';
+$lang['Piwigo export plugin for Aperture'] = 'eksportokromaĵo por Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'eksportokromaĵo por iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo por Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo por iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'publikigokromaĵo de Piwigo por Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'publikigokromaĵo de Piwigo por digiKam';
+$lang['Piwigo version'] = 'versio de Piwigo';
+$lang['Please select at least two groups'] = 'Bonvolu selekti almenaŭ du grupoj';
+$lang['Purge compiled templates'] = 'Viŝi la kompilitajn ŝablonojn';
+$lang['Purge history detail'] = 'Viŝi la historiodetalojn';
+$lang['Purge history summary'] = 'Viŝi la historioresumon';
+$lang['Purge never used notification feeds'] = 'Viŝi la neuzitajn sciigofluojn';
+$lang['Purge search history'] = 'Viŝi la serĉohistorion';
+$lang['Purge sessions'] = 'Viŝi seancojn';
+$lang['Purge user cache'] = 'Viŝi ';
+$lang['Random photo'] = 'Hazarda foto';
+$lang['Rating'] = 'Pritakso';
+$lang['Ratio'] = 'Rilatumo';
+$lang['Read Piwigo Documentation'] = 'Legi dokumentaron pri Piwigo';
+$lang['Refresh'] = 'Aktualigi';
+$lang['Refresh photo set'] = 'Aktualigi la fotoloton';
+$lang['Resize'] = 'Ŝanĝi la grandecon';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Ŝanĝo de grandecon malŝaltita pro uzo de GD kiel grafika biblioteko';
+$lang['Resize after upload'] = 'Ŝanĝi la grandecon post alŝuto';
+$lang['Reinitialize check integrity'] = 'Repravalorizi la integrecokontrolojn';
+$lang['Save Template Directory'] = 'Konservi la ŝablonodosierujon';
+$lang['Save Settings'] = 'Konservi agordojn';
+$lang['Restore'] = 'Restaŭri';
+$lang['Remote'] = 'Fora';
+$lang['Released on'] = 'Eldonita je la';
+$lang['Quick Local Synchronization'] = 'Rapida loka sinkronigado';
+$lang['Rating by guests'] = 'Pritakso de la vizitantoj';
+$lang['Reject'] = 'Malakcepti';
+$lang['Save order'] = 'Konservi ordon';
+$lang['Save manual order'] = 'Konservi permanan ordon';
+$lang['You cannot move an album in its own sub album'] = 'Vi ne povas movi fotaron en ĝian propran subfotaron';
+$lang['Synchronize'] = 'Sinkronigi';
+$lang['Synchronize metadata'] = 'Sinkronigi metadatumojn';
+$lang['Tag "%s" already exists'] = 'La etikedo "%s" jam ekzistas';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'La etikedo "%s" nun estas la duoblo de "%s"';
+$lang['Tag "%s" was added'] = 'La etikedo "%s" aldoniĝis';
+$lang['Tag selection'] = 'Etikedoselekto';
+$lang['Templates'] = 'Ŝablonoj';
+$lang['Basic settings'] = 'Bazaj agordoj';
+$lang['General'] = 'Ĝenerala';
+$lang['Mail theme'] = 'Temo de la retmesaĝoj';
+$lang['Save to permalink history'] = 'Konservi en la historio de konstantaj ligiloj';
+$lang['Save visits in history for'] = 'Konservi la vizitojn en la historio por';
+$lang['Search for new images in the directories'] = 'Serĉi novajn bildojn en la dosierujoj';
+$lang['Searching...'] = 'Serĉanta...';
+$lang['Section'] = 'Sekcio';
+$lang['See you soon,'] = 'Ĝis baldaŭ,';
+$lang['See you soon.'] = 'Ĝis baldaŭ.';
+$lang['Select a file'] = 'Selekti dosieron';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selekti zonon per muso por difini la novan ĉefpunkton.';
+$lang['Select at least one album'] = 'Selekti almenaŭ unu fotaron';
+$lang['Select at least one tag'] = 'Selekti almenaŭ unu etikedon';
+$lang['Switch to clear or dark colors for administration'] = 'Ŝalti al helaj aŭ malhelaj koloroj por administro';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TIU KROMPROGRAMO NUN APARTENAS AL LA KERNO DE PIWIGO! MALINSTALIGU ĜIN NUN!';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'La etikedoj <em>%s</em> kunfandiĝis en etikedon <em>%s</em>';
+$lang['Templates configuration has been recorded.'] = 'La ŝablonoj registriĝis';
+$lang['The %d following tags were deleted'] = 'La jenaj %d etikedoj foriĝis';
+$lang['The following tag was deleted'] = 'La jena etikedo foriĝis';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'La grupnomo ne enhavu " or " aŭ ne malplenu.';
+$lang['The name of an album must not be empty'] = 'La fotaronomo ne malplenu';
+$lang['You have %d orphan tags: %s.'] = 'Vi havas %d ofajn etikedojn: %s';
+$lang['Update albums informations'] = 'Ĝisdatigi fotarajn informojn';
+$lang['Update photos information'] = 'Ĝisdatigi fotajn informojn';
+$lang['Year'] = 'Jaro';
+$lang['You are running the latest version of Piwigo.'] = 'Vi uzas la plej novan version de Piwigo.';
+$lang['You cannot delete your account'] = 'Vi ne povas forigi vian konton';
+$lang['Update in progress... Please wait.'] = 'Ĝisdatigo okazanta... Bonvolu atendi.';
+$lang['Updates'] = 'Ĝisdatigoj';
+$lang['Upload'] = 'Elŝuti';
+$lang['Uploaded Photos'] = 'Elŝutitaj fotoj';
+$lang['Used metadata'] = 'Metadatumoj uzitaj';
+$lang['User'] = 'Uzanto';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Bonvolu kontroli la permesojn de la "kromprogramoj"-dosierujoj kaj subdosierujoj (CHMOD).';
+$lang['Reset ignored updates'] = 'Rekomencigi la preteratentitajn ĝisdatigojn';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaŭri aprioran agordon. Vi perdos viajn kromaĵajn agordojn!';
+$lang['The anomaly will be ignored until next application version'] = 'La anomalio estos malatentita ĝis la venonta aplikaĵoversio';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'La ĉefpunkto estas la plej signifoplena fotozono. ';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'La dosiero aŭ dosierujo ne atingeblas (ĉu pro neekzisto, ĉu pro rifuzita atingo)';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'La nomo de la konstanta ligilo enhavu signojn a-z, A-Z, 0-9, "-", "_", aŭ "/". Ĝi ne estu nur numera nek komenciĝu de nombro sekvata de "-"';
+$lang['Update All'] = 'Ĝisdatigi ĉion';
+$lang['Update Complete'] = 'Ĝisdatigo finiĝis';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'La eksportokromaĵo de Piwigo permesas al vi krei fotarojn kaj eksporti fotojn.';
+$lang['Toggle \'default group\' property'] = 'Inversigi la econ \'apriora grupo\'';
+$lang['Your configuration settings are saved'] = 'Viaj agordoj konserviĝis';
+$lang['Zoom'] = 'Zomo';
+$lang['[%s] Visit album %s'] = '[%s] Viziti fotaron %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemoj aŭ demandoj';
+$lang['add a new watermark'] = 'aldoni novan filigranon';
+$lang['add new photos to caddie'] = 'aldoni novajn fotojn al la korbo';
+$lang['User "%s" created with "%s" like password'] = 'Uzanto "%s" kreiĝis kun "%s" kiel pasvorto';
+$lang['You can activate only one mobile theme.'] = 'Vi povas aktivigi nur unu porteblan temon.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Vi abonis la retmesaĝan atentigon';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Vi malabonis la retmesaĝan atentigon';
+$lang['You might go to plugin list to install and activate it.'] = 'Iru al la listo de kromprogramoj por instali kaj aktivigi ĝin.';
+$lang['You need to confirm deletion'] = 'Vi devas konfirmi la forigon';
+$lang['delete this site and all its attached elements'] = 'forigi tiun retejon kaj ĉiujn koncernatajn informojn';
+$lang['errors during synchronization'] = 'eraroj dum la sinkronigado';
+$lang['even already synchronized photos'] = 'eĉ jam sinkronigitaj fotoj';
+$lang['existing album'] = 'ekzistanta fotaro';
+$lang['first photo added on %s'] = 'unua foto aldonita je la %s';
+$lang['Last visit on %s, %s.'] = 'Lasta vizito je la %s, %s.';
+$lang['Registered on %s, %s.'] = 'Registrita je la %s, %s.';
+$lang['Update user'] = 'Ĝisdatiĝi uzanton';
+$lang['User %s added'] = 'Uzanto %s aldoniĝis';
+$lang['User %s updated'] = 'Uzanto %s ĝisdatiĝis';
+$lang['Users modified'] = 'Uzantoj modifitaj';
+$lang['added'] = 'aldonitaj';
+$lang['%d of %d users selected'] = '%d el %d uzantoj selektitaj';
+$lang['(filtered from %s total users)'] = '(filtrita el %s totalaj uzantoj)';
+$lang['All %d users are selected'] = 'Ĉiuj %d uzantoj selektiĝis';
+$lang['Change password'] = 'Ŝanĝi pasvorton';
+$lang['Change username'] = 'Ŝanĝi salutnomon';
+$lang['Loading...'] = 'Ŝutante...';
+$lang['No matching user found'] = 'Neniu kongruanta uzanto troviĝis';
+$lang['No user selected of %d users'] = 'Neniu uzanto selektita el %d uzantoj';
+$lang['No user selected, no action possible.'] = 'Sen uzanto selektita, neniu ago eblas.';
+$lang['Password updated'] = 'Pasvorto ĝisdatiĝis';
+$lang['Show %s users'] = 'Montri %s uzantojn';
+$lang['Showing %s to %s of %s users'] = 'Montrante %s ĝis %s el %s uzantoj';
+?>
Index: /tags/2.6.0RC1/language/eo_EO/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/common.lang.php	(revision 25596)
@@ -0,0 +1,423 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Esperanto [EO]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=596
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Esperanto';
+$lang_info['country'] = 'Esperantio';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'eo';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d ko';
+$lang['%d album updated'] = '%d fotaro ĝisdatigita';
+$lang['%d albums updated'] = '%d fotaroj ĝisdatigitaj';
+$lang['%d comment to validate'] = '%d validigenda komento';
+$lang['%d comments to validate'] = '%d validigendaj komentoj';
+$lang['%d new comment'] = '%d nova komento';
+$lang['%d new comments'] = '%d novaj komentoj';
+$lang['%d comment'] = '%d komento';
+$lang['%d comments'] = '%d komentoj';
+$lang['%d hit'] = 'vidita %d foje';
+$lang['%d hits'] = 'vidita %d foje';
+$lang['%d new photo'] = '%d nova foto';
+$lang['%d new photos'] = '%d novaj fotoj';
+$lang['%d new user'] = '%d nova uzanto';
+$lang['%d new users'] = '%d novaj uzantoj';
+$lang['About'] = 'Pri';
+$lang['All tags'] = 'Ĉiuj etikedoj';
+$lang['Any tag'] = 'Iu ajn etikedo';
+$lang['At least one listed rule must be satisfied.'] = 'Almenaŭ unu regulo devas kongrui.';
+$lang['Albums'] = 'Fotaroj';
+$lang['Album'] = 'Fotaro';
+$lang['Close this window'] = 'Fermi la fenestron';
+$lang['Complete RSS feed (photos, comments)'] = 'Plena RSS-fluo (fotoj kaj komentoj)';
+$lang['Confirm Password'] = 'Konfirmi pasvorton';
+$lang['Connection settings'] = 'Konekta agordo';
+$lang['Login'] = 'Ensaluti';
+$lang['Contact webmaster'] = 'Kontakti la retestron';
+$lang['Create a new account'] = 'Krei novan konton';
+$lang['Created on'] = 'Kreita je la ';
+$lang['Creation date'] = 'Kreita dato';
+$lang['Current password is wrong'] = 'Neĝusta pasvorto';
+$lang['Dimensions'] = 'Grandeco';
+$lang['Display'] = 'Ekrano';
+$lang['Each listed rule must be satisfied.'] = 'Ĉiuj reguloj devas kongrui';
+$lang['Email address'] = 'Retadreso';
+$lang['Enter your personnal informations'] = 'Entajpu viajn personajn informojn';
+$lang['Error sending email'] = 'Eraro okazis dum sendo de la retmesaĝo';
+$lang['File name'] = 'Dosiernomo';
+$lang['File'] = 'Dosiero';
+$lang['Filesize'] = 'Dosierpezo';
+$lang['Filter and display'] = 'Filtri kaj surekranigi';
+$lang['Filter'] = 'Filtrilo';
+$lang['Forgot your password?'] = 'Ĉu vi forgesis vian pasvorton?';
+$lang['Go through the gallery as a visitor'] = 'Trairi la galerion kiel vizitanto';
+$lang['Help'] = 'Helpo';
+$lang['Identification'] = 'Identigado';
+$lang['Photos only RSS feed'] = 'Nur fota RSS-fluo';
+$lang['Keyword'] = 'Ŝlosilvorto';
+$lang['Links'] = 'Ligiloj';
+$lang['N/A'] = 'ne disponeblas';
+$lang['New on %s'] = 'Nova je la %s';
+$lang['Notification'] = 'Sciigo';
+$lang['Number of items'] = 'Nombro de eroj';
+$lang['Original dimensions'] = 'Originala grandeco';
+$lang['Password forgotten'] = 'Forgesita pasvorto';
+$lang['Password'] = 'Pasvorto';
+$lang['Post date'] = 'Dato de aldonado';
+$lang['Posted on'] = 'Aldonita je la';
+$lang['Profile'] = 'Profilo';
+$lang['Quick connect'] = 'Rapida konekto';
+$lang['RSS feed'] = 'RSS-fluo';
+$lang['Register'] = 'Registri';
+$lang['Registration'] = 'Registrado';
+$lang['Related tags'] = 'Ligitaj etikedoj';
+$lang['Reset'] = 'Rekomenci';
+$lang['Retrieve password'] = 'Ricevi pasvorton';
+$lang['Search rules'] = 'Serĉadaj reguloj';
+$lang['Search tags'] = 'Serĉi etikedojn';
+$lang['Search'] = 'Serĉi';
+$lang['display available tags'] = 'Montri la disponeblajn etikedojn';
+$lang['Since'] = 'De';
+$lang['Sort by'] = 'Ordigi laŭ';
+$lang['Sort order'] = 'Ordigo';
+$lang['Tag'] = 'Etikedo';
+$lang['Tags'] = 'Etikedoj';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'La RSS-fluo sciigas pri eventoj de la galerio: novaj fotoj, ĝisdatigitaj fotaroj, novaj komentoj de uzantoj. Tio uziĝas per RSS-legilo.';
+$lang['Unknown feed identifier'] = 'Nekonata fadena identigilo';
+$lang['User comments'] = 'Uzantaj komentoj';
+$lang['Username'] = 'Uzantnomo';
+$lang['Visits'] = 'Vizitoj';
+$lang['Webmaster'] = 'Retestro';
+$lang['Week %d'] = 'Semajno %d';
+$lang['About Piwigo'] = 'Pri Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Vi ne rajtas legi tiun paĝon. Forfikiĝu!';
+$lang['add this photo to your favorites'] = 'Aldoni tiun foton al via legosigno';
+$lang['Administration'] = 'Administrado';
+$lang['all'] = 'ĉio';
+$lang['ascending'] = 'kreskanta';
+$lang['author(s) : %s'] = 'aŭtoro(j): %s';
+$lang['Expand all albums'] = 'Etendi ĉiujn fotarojn';
+$lang['posted after %s (%s)'] = 'aldonita post la %s (%s)';
+$lang['posted before %s (%s)'] = 'aldonita antaŭ la %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'aldonita inter la %s (%s) kaj la %s (%s)';
+$lang['posted on %s'] = 'aldonita je la %s';
+$lang['Best rated'] = 'Plej bonaj';
+$lang['display best rated photos'] = 'Montri la plej bonajn fotojn';
+$lang['Calendar'] = 'Kalendaro';
+$lang['All'] = 'Ĉio';
+$lang['display each day with photos, month per month'] = 'Montri ĉiujn tagojn, laŭ monatoj';
+$lang['View'] = 'Vido';
+$lang['chronology_monthly_calendar'] = 'Monata kalendaro';
+$lang['chronology_monthly_list'] = 'Monata listo';
+$lang['chronology_weekly_list'] = 'Semajna listo';
+$lang['Click here if your browser does not automatically forward you'] = 'Musklaku tien se via foliumilo ne mem plusendas vin.';
+$lang['comment date'] = 'dato de la komento';
+$lang['Comment'] = 'Komento';
+$lang['Your comment has been registered'] = 'Via komento estis registrita';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Kontraŭ-fekula sistemo: bonvolu pacienciĝi antaŭ aldoni novan komenton';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Via komento ne validiĝis ĉar ĝi ne kongruas al nia striktaj reguloj';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administranto devas validigi vian komenton antaŭ ke ĝi iĝu videbla.';
+$lang['This login is already used by another user'] = 'Tiu uzanta nomo jam ekzistas';
+$lang['Comments'] = 'Komentoj';
+$lang['Add a comment'] = 'Aldoni komenton';
+$lang['created after %s (%s)'] = 'kreita post la %s (%s)';
+$lang['created before %s (%s)'] = 'kreita antaŭ la %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'kreita antaŭ la %s (%s) kaj la %s (%s)';
+$lang['created on %s'] = 'kreita la %s';
+$lang['Customize'] = 'Personigi';
+$lang['Your Gallery Customization'] = 'Personigado de via galerio ';
+$lang['day'][0] = 'Dimanĉo';
+$lang['day'][1] = 'Lundo';
+$lang['day'][2] = 'Mardo';
+$lang['day'][3] = 'Merkredo';
+$lang['day'][4] = 'Ĵaŭdo';
+$lang['day'][5] = 'Vendredo';
+$lang['day'][6] = 'Sabato';
+$lang['Default'] = 'Apriora';
+$lang['delete this photo from your favorites'] = 'Forigi tiun foton el viaj legosignoj';
+$lang['Delete'] = 'Forigi';
+$lang['descending'] = 'malkreskante';
+$lang['edit'] = 'redakti';
+$lang['wrong date'] = 'maltaŭga dato';
+$lang['excluded'] = 'eksigita';
+$lang['Your favorites'] = 'Miaj legosignoj';
+$lang['display your favorites photos'] = 'montri fotojn de miaj legosignoj';
+$lang['Favorites'] = 'Legosignoj';
+$lang['First'] = 'Unua';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Ni ŝlosis la galerion por plibonigi ĝin, bonvolu reveni poste.';
+$lang['Page generated in'] = 'Paĝo kreita en';
+$lang['guest'] = 'Vizitanto';
+$lang['Hello'] = 'Saluton';
+$lang['available for administrators only'] = 'disponeblaj nur por la administrantoj';
+$lang['display this album'] = 'montri tiun fotaron';
+$lang['display last user comments'] = 'Montri la lasatjn komentoj';
+$lang['customize the appareance of the gallery'] = 'Personigi aspekton de la galerio';
+$lang['search'] = 'serĉi';
+$lang['Home'] = 'Akceptejo';
+$lang['in this album'] = 'en tiu fotaro';
+$lang['in %d sub-album'] = 'en %d sub-fotaro';
+$lang['in %d sub-albums'] = 'en %d sub-fotaroj';
+$lang['included'] = 'inkluzivita';
+$lang['Invalid password!'] = 'Nevalida pasvorto!';
+$lang['Language'] = 'Lingvo';
+$lang['last %d days'] = '%d lastaj tagoj';
+$lang['Last'] = 'Lasta';
+$lang['Logout'] = 'Elsaluti';
+$lang['obligatory'] = 'devigata';
+$lang['display a calendar by creation date'] = 'montri kalendaron laŭ kreigita dato';
+$lang['display all photos in all sub-albums'] = 'montri ĉiujn fotojn en ĉiuj sub-fotaroj';
+$lang['return to normal view mode'] = 'reiri al la normala vido';
+$lang['display a calendar by posted date'] = 'montri kalendaron laŭ aldonita dato';
+$lang['month'][10] = 'Oktobro';
+$lang['month'][11] = 'Novembro';
+$lang['month'][12] = 'Decembro';
+$lang['month'][1] = 'Januaro';
+$lang['month'][2] = 'Februaro';
+$lang['month'][3] = 'Marto';
+$lang['month'][4] = 'Aprilo';
+$lang['month'][5] = 'Majo';
+$lang['month'][6] = 'Junio';
+$lang['month'][7] = 'Julio';
+$lang['month'][8] = 'Aŭgusto';
+$lang['month'][9] = 'Septembro';
+$lang['Most visited'] = 'Plej ofte vizitita';
+$lang['display most visited photos'] = 'montri la plej ofte vizititajn fotojn';
+$lang['The number of photos per page must be a not null scalar'] = 'Nombro de fotoj en unu paĝo devas esti ne-nula nombro';
+$lang['Number of photos per page'] = 'Nombro de miniaturoj sur paĝo';
+$lang['Unknown identifier'] = 'Nekonata identigilo';
+$lang['New password'] = 'Nova pasvorto';
+$lang['Rate this photo'] = 'Taksu tiun foton';
+$lang['Next'] = 'Venonta';
+$lang['no rate'] = 'neniu taksado';
+$lang['Photos posted within the last %d day.'] = 'Montri nur fotojn aldonitaj dum la lasta %d tago.';
+$lang['Photos posted within the last %d days.'] = 'Montri nur fotojn aldonitaj dum la lastaj %d tagoj.';
+$lang['password updated'] = 'ĝisdatigita pasvorto';
+$lang['Recent period must be a positive integer value'] = 'Tiu periodo devas esti pozitiva entjera nombro';
+$lang['photo'] = 'foto';
+$lang['Click on the photo to see it in high definition'] = 'Musklaku la foton por grandigi ĝin (aŭ proksimiĝu la ekranon)';
+$lang['Show file metadata'] = 'Montri dosiermetadatumojn';
+$lang['Powered by'] = 'Potencigita per';
+$lang['Preferences'] = 'Agordo';
+$lang['Previous'] = 'Antaŭa';
+$lang['Random photos'] = 'Hazardaj fotoj';
+$lang['display a set of random photos'] = 'montri hazarde plurajn fotojn';
+$lang['Recent albums'] = 'Lastaj fotaroj';
+$lang['display recently updated albums'] = 'montri la plej freŝajn fotarojn';
+$lang['Recent period'] = 'Lasta periodo';
+$lang['Recent photos'] = 'Lastaj fotoj';
+$lang['display most recent photos'] = 'montri la plej lastajn fotojn';
+$lang['Redirection...'] = 'Alidirektado...';
+$lang['Please, enter a login'] = 'Bonvolu entajpi salutnomon';
+$lang['login mustn\'t end with a space character'] = 'Uzantnomo ne finiĝu per spaceto';
+$lang['login mustn\'t start with a space character'] = 'Uzantnomo ne komenciĝu per spaceto';
+$lang['this login is already used'] = 'Tiu uzantnomo jam uziĝas';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'La retadreso devas simili al xxx@yyy.eee (ekzemple: zamenhof@bialistoko.pl)';
+$lang['Auto login'] = 'Aŭtomata konekto';
+$lang['remove this tag from the list'] = 'forigi tiun etikedon de la listo';
+$lang['representative'] = 'delegito';
+$lang['Search for Author'] = 'Serĉi aŭtoron';
+$lang['Search in albums'] = 'Serĉi en la fotaroj';
+$lang['Date'] = 'Dato';
+$lang['End-Date'] = 'Fin-dato';
+$lang['Kind of date'] = 'Dato-tipo';
+$lang['Search for words'] = 'Serĉi vorton';
+$lang['Search for all terms'] = 'Serĉi ĉiujn vortojn';
+$lang['Empty query. No criteria has been entered.'] = 'Malplena demando, neniu kritero entajpigita.';
+$lang['Search results'] = 'Serĉa rezulto';
+$lang['Search in sub-albums'] = 'Serĉi en la sub-fotaroj';
+$lang['searched words : %s'] = 'serĉitaj vortoj: %s';
+$lang['Contact'] = 'Kontakto';
+$lang['set as album representative'] = 'Elekti kiel delegito de tiu fotaro';
+$lang['Show number of comments'] = 'Montri la nombron de komentoj';
+$lang['Show number of hits'] = 'Montri la nombron de vidoj';
+$lang['slideshow'] = 'bildoserio';
+$lang['stop the slideshow'] = 'halti la bildoserion';
+$lang['Specials'] = 'Apartaj';
+$lang['SQL queries in'] = 'SQL peto en';
+$lang['display only recently posted photos'] = 'montri nur la lastaj fotoj';
+$lang['return to the display of all photos'] = 'reiri al ĉiuj fotoj';
+$lang['the beginning'] = 'la komenco';
+$lang['Thumbnails'] = 'Miniaturo';
+$lang['Menu'] = 'Menuo';
+$lang['A comment on your site'] = 'Komento sur via retejo';
+$lang['today'] = 'Hodiaŭ';
+$lang['Update your rating'] = 'Ĝisdatigu vian taksadon';
+$lang['the username must be given'] = 'vi devas indiki la uzantnomon';
+$lang['useful when password forgotten'] = 'helpinda se vi forgesas vian pasvorton';
+$lang['Quick search'] = 'Rapida serĉo';
+$lang['Connected user: %s'] = 'Konektita uzanto: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Foliumilo: %s';
+$lang['Author: %s'] = 'Aŭtoro: %s';
+$lang['Comment: %s'] = 'Komento: %s';
+$lang['Comment by %s'] = 'Komentis %s';
+$lang['User: %s'] = 'Uzanto: %s';
+$lang['Email: %s'] = 'Retadreso: %s';
+$lang['Admin: %s'] = 'Administrado: %s';
+$lang['Registration of %s'] = 'Registris %s';
+$lang['Album: %s'] = 'Fotaro: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Malbona stato por la uzanto "Vizitanto", uzo de la apriora stato. Bonvolu averti la retestron.';
+$lang['this email address is already in use'] = 'tiu retadreso jam uziĝas';
+$lang['Album results for'] = 'Rezulto de fotaro por';
+$lang['Tag results for'] = 'Rezulto de la etikedoj por';
+$lang['from %s to %s'] = 'de %s al %s';
+$lang['Play of slideshow'] = 'Legi la bildoserion';
+$lang['Pause of slideshow'] = 'Paŭzi la bildserion';
+$lang['Repeat the slideshow'] = 'Ripeti la bildserion';
+$lang['Not repeat the slideshow'] = 'Ne ripeti la bildoserion';
+$lang['Reduce diaporama speed'] = 'Malrapidigi la bildoserion';
+$lang['Accelerate diaporama speed'] = 'Rapidigi la bildoserion';
+$lang['Submit'] = 'Validigi';
+$lang['Yes'] = 'Jes';
+$lang['No'] = 'Ne';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d fotoj';
+$lang['%d photo is also linked to current tags'] = '%d foto ankaŭ ligiĝas al la kurantaj etikedoj';
+$lang['%d photos are also linked to current tags'] = '%d fotoj ankaŭ ligiĝas al la kurantaj etikedoj';
+$lang['display photos linked to this tag'] = 'montri fotojn ligita al tiu etikedo';
+$lang['photos posted during the last %d days'] = 'fotoj aldonitaj tiuj lastaj %d tagoj';
+$lang['Piwigo Help'] = 'Helpo de Piwigo';
+$lang['Rank'] = 'Rango';
+$lang['group by letters'] = 'grupigi per literoj';
+$lang['letters'] = 'literoj';
+$lang['show tag cloud'] = 'montri etikedoj nube';
+$lang['cloud'] = 'nubo';
+$lang['Reset to default values'] = 'Reŝarĝi la apriorajn valuojn';
+$lang['delete all photos from your favorites'] = 'Forigi ĉiujn fotojn el viaj legosignoj';
+$lang['Sent by'] = 'Senditaj de';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'La kuketoj ne disponeblas sur via komputilo. Aktivu ilin por ensaluti.';
+$lang['Edit a comment'] = 'Redakti komenton';
+$lang['Are you sure?'] = 'Ĉu vi certas?';
+$lang['(!) This comment requires validation'] = '(!) Tiu komento validigendas';
+$lang['Welcome'] = 'Bonvenon';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bonvenon en via Galerio Piwigo!';
+$lang['... or browse your empty gallery'] = '... aŭ foliumu en via malplenan galerion';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... aŭ kaŝu tiun mesaĝon, mi mem elturniĝos';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Saluton %s, via galerio Piwigo estas malplena!';
+$lang['I want to add photos'] = 'Mi deziras aldoni fotojn';
+$lang['Manage this user comment: %s'] = 'Mastrumi tiun uzantan komenton: %s';
+$lang['Email address is missing. Please specify an email address.'] = "Retadreso mankas. Bonvolu specifi retadreson.";
+$lang['This author modified following comment:'] = 'Tiu aŭtoro ŝanĝis la jenan komenton:';
+$lang['This author removed the comment with id %d'] = 'Tiu aŭtoro forviŝis la komenton kies identigilo estas  %d';
+$lang['html tags are not allowed in login'] = 'html etikedoj ne estas rajtigitaj en la salutnomo';
+$lang['Invalid username or email'] = 'Nevalida salutnomo aŭ retadreso';
+$lang['Password reset is not allowed for this user'] = 'La renovigo de la pasvorto ne estas permesita por tiu uzanto';
+$lang['User "%s" has no email address, password reset is not possible'] = 'La uzanto "%s" ne havas retadreson, la renovigo de ŝlia pasvorto ne eblas';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Iu petis renovigon de la pasvorto por la jena uzanto: ';
+$lang['Username "%s" on gallery %s'] = 'Uzanto "%s" ĉe la galerio  %s';
+$lang['To reset your password, visit the following address:'] = 'Por renovigi vian pasvorton, musklaku la jenan ligilon:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Se vi ĵus eraris, nur ignoru tiun mesaĝon kaj nenio okazos.';
+$lang['Password Reset'] = 'Renovigo de via pasvorto';
+$lang['Check your email for the confirmation link'] = 'Kontrolu viajn retmesaĝojn por trovi la konfirman ligilon';
+$lang['Invalid key'] = 'Nevalida ŝlosilo';
+$lang['The passwords do not match'] = 'La pasvortoj ne kongruas';
+$lang['Your password has been reset'] = 'Via pasvorto estis renovigita';
+$lang['Return to home page'] = 'Reiri al la akceptejo';
+$lang['Please enter your username or email address.'] = 'Bonvolu entajpi vian salutnomon aŭ vian retadreson.';
+$lang['You will receive a link to create a new password via email.'] = 'Vi ricevos retmesaĝe musklakendan ligilon por renovigi vian pasvorton.';
+$lang['Username or email'] = 'Salutnomon aŭ retadreso';
+$lang['Change my password'] = 'Ŝanĝi mian pasvorton';
+$lang['Enter your new password below.'] = 'Entajpu suben vian novan pasvorton.';
+$lang['Author'] = 'Aŭtoro';
+$lang['%d rates'] = '%d taksado';
+$lang['Rating score'] = 'Poento';
+$lang['EXIF Metadata'] = 'Datumoj EXIF';
+$lang['IPTC Metadata'] = 'Datumoj IPTC';
+$lang['Download this file'] = 'Elŝuti tiun dosieron';
+$lang['Download'] = 'Elŝuti';
+$lang['Edit'] = 'Redakti';
+$lang['Hello %s,'] = 'Saluton %s,';
+$lang['Search by date'] = 'Serĉi laŭ dato';
+$lang['Search for any term'] = 'Serĉi por iu ajn vorto';
+$lang['Send my connection settings by email'] = 'Sendi mian konektan agordon per retmesaĝo';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Vi sukcese registris, vi baldaŭ ricevos retmesaĝe viajn konektajn agordojn. Bonvenon!';
+$lang['Username modification'] = 'ŝanĝo de uzantnomo';
+$lang['Your username has been successfully changed to : %s'] = 'Via uzantnomo sukcese ŝanĝiĝis por: %s';
+$lang['square'] = 'Kvadrata';
+$lang['thumb'] = 'miniaturo';
+$lang['small'] = 'Malgranda';
+$lang['medium'] = 'Mezgranda';
+$lang['large'] = 'Larĝa';
+$lang['xlarge'] = 'Larĝega';
+$lang['xxlarge'] = 'Giganta';
+$lang['Original'] = 'Originala';
+$lang['Thank you for registering at %s!'] = 'Dankon pro via registrado ĉe %s!';
+$lang['Here are your connection settings'] = 'Jen viaj konektaj agordoj';
+$lang['Password: %s'] = 'Pasvorto: %s';
+$lang['Username: %s'] = 'Uzantnomo: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Se vi erare ricevis tiun mesaĝon, bonvolu kontakti na %s';
+$lang['Show latest comments first'] = 'Montru unue la plej freŝajn komentojn';
+$lang['Show oldest comments first'] = 'Montru unue la plej malnovaj komentojn';
+$lang['View in'] = 'Montrado';
+$lang['Mobile'] = 'Portebla';
+$lang['Desktop'] = 'Komputila';
+$lang['Photo sizes'] = 'Grandeco de la fotoj';
+$lang['2small'] = 'XXS - malgrandega';
+$lang['xsmall'] = 'Tre malgranda';
+$lang['File name, A &rarr; Z'] = 'Dosiernomo, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Dosiernomo, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Fota titolo, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Fota titolo, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Kreita dato, nova &rarr; malnova';
+$lang['Date created, old &rarr; new'] = 'Kreita dato, malnova &rarr; nova';
+$lang['Date posted, new &rarr; old'] = 'Aldonita dato, nova &rarr; malnova';
+$lang['Date posted, old &rarr; new'] = 'Aldonita dato, malnova &rarr; nova';
+$lang['Rating score, high &rarr; low'] = 'Poento, alta &rarr; malalta';
+$lang['Rating score, low &rarr; high'] = 'Poento, malalta &rarr; alta';
+$lang['Visits, high &rarr; low'] = 'Vizitoj, alta &rarr; malalta';
+$lang['Visits, low &rarr; high'] = 'Vizitoj, malalta &rarr; alta';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identigilo, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identigilo, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Permana ordigado';
+
+
+$lang['%d rate'] = '%d taksado';
+$lang['Bad request'] = 'Fuŝa peto';
+$lang['Forbidden'] = 'Malpermesita';
+$lang['Page not found'] = 'Ne trovebla paĝo';
+$lang['Permalink for album not found'] = 'Daŭra ligilo por tiu fotaro ne troviĝas';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo trafis ne ripareblan eraron';
+$lang['Requested album does not exist'] = 'Petita fotaro ne ekzistas';
+$lang['Requested tag does not exist'] = 'Petita etikedo ne ekzistas';
+$lang['Email address is mandatory'] = 'Retadreso estas deviga';
+$lang['Username is mandatory'] = 'Uzantnomo estas deviga';
+$lang['mandatory'] = 'deviga';
+$lang['Your website URL is invalid'] = 'Via reteja URL ne validas.';
+$lang['Website'] = 'Retejo';
+$lang['Email'] = 'Retmesaĝo';
+$lang['First Page'] = 'Unua paĝo';
+$lang['Go back to the album'] = 'Reiri al la fotaro';
+$lang['Last Page'] = 'Lasta paĝo';
+$lang['Password is missing. Please enter the password.'] = 'Mankas pasvorto. Bonvolu redakti la pasvorton.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Mankas konfirmado de pasvorto. Bonvolu konfirmi la elektitan pasvorton.';
+$lang['%d photos per page'] = '%d fotoj sur ĉiu paĝo';
+$lang['Theme'] = 'Temo';
+?>
Index: /tags/2.6.0RC1/language/eo_EO/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,132 @@
+<h2>Redakti fotaron</h2>
+
+<h3>Informoj</h3>
+
+<ul>
+
+  <li><strong>nomo</strong>: renomi la fotaron (virtuala renomo kaze 
+  de fizika fotaro).</li>
+
+  <li><strong>priskribo</strong>: mallonga teksto montranta ĝeneralan ideon de la enhavo,
+  tiu teksto vidiĝos malsupre de la miniaturopaĝo.</li>
+
+</ul>
+
+<h3>Movado</h3>
+
+<p>Se la fotaro estas virtuala, vi povas movi ĝin. Movi fotaron signifas
+ŝanĝi ĝian patran fotaron.</p>
+
+<h3>Opcioj</h3>
+
+<ul>
+
+  <li><strong>Atingotipo</strong>: Administrado de permesiloj. Se vi igas 
+  fotaron privatan, ĉiuj idaj fotaroj ĝiaj iĝas privataj. Se vi igas
+  fotaron publikan, ĉiuj idaj fotaroj ĝiaj iĝas publikaj.</li>
+
+  <li><strong>Ŝlosi</strong>: La fotaro kaj ĝiaj subfotaroj estos
+  provizore malvalidigitaj pro funkciteno.</li>
+
+  <li><strong>Komentoj</strong>: Permesi al la uzantoj komenti la fotojn de ĉitiu
+  fotaro.</li>
+
+</ul>
+
+<p>Vi povas ankaŭ mastrumi tiujn opciojn ĉe la 
+mastrumekrano "Ecoj" (ekranoj <span
+class="pwgScreen">Komentoj</span>, <span class="pwgScreen">Ŝlosi</span>,
+<span class="pwgScreen">Publika/Privata</span>, <span
+class="pwgScreen">Reprezentanto</span> disponebla el <span
+class="pwgScreen">Administrado &raquo; Fotaroj &raquo; Ecoj</span>).</p>
+
+<h3>Ordiga ordo</h3>
+
+<p>Uzi la aprioran bildan ordigan ordon.</p>
+
+<p>Indiki ĉu tiu ordiga ordo will apply to subalbums also.</p>
+
+<p>Selekti la specifajn ordigokriteriojn uzendaj kun ĉitiu fotaro.</p>
+<ul>
+<li><strong>Kreodato</strong>: Fotadodato</li>
+<li><strong>Afiŝodato</strong>: Sinkronigadodato</li>
+<li><strong>Meza takso (*)</strong>: Meza takso ŝanĝus laŭ la taksado de la vizitantoj</li>
+<li><strong>Plej vizitita (*)</strong>: La kuranta vizito eble ŝanĝos la ordo de la plej vizititaj</li>
+<li><strong>Dosieronomo</strong>: Nomo donita en informokampo</li>
+<li><strong>Identigilo</strong>: Ena identigilo (freŝaj kategorioj havas pli altan identigilon ol la antaŭaj).</li>
+
+</ul>
+<p><strong>(*)</strong>Averto: Certu, ke vi testas tiujn ordigajn ordojn vi mem, ĉar eblas, ke ili montras neatenditajn rezultojn.</p>
+
+<h3>Reprezentanto</h3>
+
+<p>La fotaro-reprezentanto estas la miniaturo videbla sur la ĉefpaĝo (<span class="pwgScreen">category.php</span>) por reprezenti
+la fotaton kiam
+ĝi enhavas nur sub-fotarojn kaj neniun direktan foton (rekte en la radiko-fotaro).</p>
+foto de fotaro:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Foto paĝo</span>: unu el la agobutonoj lasas vin agordi la kurantan foton kiel la reprezentanton por la
+  vidigita fotaro. Tiu butono disponeblas nur por la administrantoj.</li>
+
+  <li><span class="pwgScreen">Modifi informojn pri foto</span> en
+  administrado. Tiu ekrano atingeblas el <span
+  class="pwgScreen">picture.php</span> aŭ <span class="pwgScreen">Stapla
+  administrado</span> en <em>unureĝimo</em>. Vidi la helpon de tiu ekrano por
+  la detaloj.</li>
+
+  <li><span class="pwgScreen">Administrado &raquo; Fotaroj &raquo; Ecoj,
+  Reprezentanto</span>. Vidi la helpon de tiu ekrano por la detaloj.</li>
+
+  <li><span class="pwgScreen">Redakti fotaron</span> (la nuna ekrano).</li>
+
+</ul>
+
+<p>La elekto de reprezentanto dependas de la 
+<code>allow_random_representative</code> agorda parametro (vidi <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>En apriora reĝimo (<code>allow_random_representative</code> ŝaltita al falsa),
+ĉiu fotaro enhavanta almenaŭ unu eron estas reprezentita de fiksita
+ero. Post la agordo (je la fotara kreado), la reprezentanto ŝanĝiĝas nur
+kiam administranto petas tion. Se la reprezentanto ne taŭgas,
+vi povas peti por <strong>Trovi novan reprezentanton hazarde</strong>.</p>
+
+<p>Se la <code>allow_random_representative</code> agorda parametro estas ŝaltita
+al vera, eblas ke kategorio enhavanta fotojn ne havu fiksitan
+reprezentanton. Nur uzu la <strong>Forigi reprezentanton</strong> butonon.</p>
+
+<p>Se la fotaro enhavas nur sub-fotarojn kaj neniu foto, ĝin povas tamen reprezenti iu ajn elemento dank' al <span class="pwgScreen">Modifi
+informojn pri foto</span> ekrano. La nura opcio sur la kuranta ekrano
+estas la <strong>Forigi reprezentanton</strong> butono.</p>
+
+<h3>Ligi ĉiujn fotarajn fotojn al nova fotaro</h3>
+
+<ul>
+
+<li><strong>Nomo de virtuala fotaro</strong>: Nomo de la nova fotaro kreota, 
+ĉiuj fotoj de la kuranta kategorio estos ligita al la nova.</li>
+
+<li><strong>Patra fotaro</strong>: Kie la nova fotaro kuŝos, 
+lasu malplena por krei ĝin ĉe la radiko.</li>
+
+</ul>
+
+<h3>Ligi ĉiujn fotojn de la fotaro al ekzistantaj fotaroj</h3>
+
+<ul>
+
+<li><strong>Fotaroj</strong>: Elekti la celata fotaro.</li>
+
+</ul>
+
+<h3>Sendi informan retmesaĝon al la grupanoj</h3>
+
+<ul>
+
+<li><strong>Grupo</strong>: grupo de ricevantoj</li>
+
+<li><strong>Retmesaĝoenhavo</strong>: Libera teksto sendota al ili.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/eo_EO/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/help/cat_move.html	(revision 25596)
@@ -0,0 +1,16 @@
+Dosierenhavo
+
+<h2>Movi virtualajn Fotarojn</h2>
+
+<p>Nur virtualaj fotaroj povas havi novan patran fotaron.</p>
+
+<h3>Virtualaj fotaroj movendaj</h3>
+
+<p>Selektu unu aŭ plurajn virtualajn fotarojn, kiujn vi deziras movi. 
+Se la listo malplenas, tio signifas, ke vi ankoraŭ ne kreis iun.</p>
+
+<h3>Nova patra fotaro</h3>
+
+<p>Selektu la novan patran fotaron (virtualan aŭ realan). 
+Se vi ne selektas iun patran, la virtualaj fotaroj selektitaj moviĝos al la radiko.
+Ne eblas movi fotaron enen de ĝi mem aŭ al unu el ĝiaj idoj.</p>
Index: /tags/2.6.0RC1/language/eo_EO/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Fotaraj opcioj</h2>
+
+<p>Administrado de la opcioj por pluraj fotaroj samtempe.</p>
+
+<dl>
+
+<dt>Komentoj</dt>
+<dd>Foto povas ricevi komentojn el viaj vizitantoj se ĝi apartenas al fotaro kun aktivigitaj komentoj.</dd>
+
+<dt>Ŝlosado</dt>
+<dd>Ŝlositaj fotaroj malaktiviĝas dum funkciteno. Nur administrantoj povas vidi ilin en la galerio.</dd>
+
+<dt>Publika / privata</dt>
+<dd>Post kiam fotaro iĝas privata, rajtigas atingon al uzantoj kaj grupoj</dd>
+
+<dt>Reprezentanto</dt>
+<dd>Tiu opcio disponeblas, kiam vi ŝaltas la agordilo
+<code>allow_random_representative</code> (vidu <span
+ class="filename">include/config_defaults.inc.php</span>) al
+<em>vera</em>. Ĉiu fotaro povas esti reprezentita de hazarda foto aŭ de selektita foto kiel nura reprezentanto.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/eo_EO/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Redakti fotaran permesojn</h2>
+
+<p>Tiu ekrano nur disponeblas por privataj fotaroj. Ĉi tie vi povas selekti
+uzantojn kaj grupojn rajtigitajn por fotaro.</p>
+
+<h3>Grupoj</h3>
+
+<p>Vi povas rifuzi aŭ doni grupatingon al la kuranta fotaro. Modifante
+gruporajtigojn, atingo al la fotaro estos rifuzita aŭ donita al la uzantoj ene de tiuj grupoj.</p>
+
+<h3>Uzantoj</h3>
+
+<p>Vi povas rifuzi aŭ doni atingon al individuaj uzantoj. Atingo povas rifuziĝi al uzantoj kun grupatingo per escepto.</p>
Index: /tags/2.6.0RC1/language/eo_EO/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['webmaster login can\'t contain characters \' or "'] = 'la retejestra salutnomo ne devas enteni la signoj \' aŭ "';
+$lang['user password given by your host provider'] = 'uzanto-pasvorto provizita de via provizanto de gastigo';
+$lang['user login given by your host provider'] = 'uzanto-salutnomo provizita de via provizanto de gastigo';
+$lang['please enter your password again'] = 'bonvolu tajpi vian pasvorton denove';
+$lang['enter a login for webmaster'] = 'entajpu retestran salutnomon';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'per ĝi, prefiksoj aldoniĝos sur la nomojn de la datumtabelo (ebligas al vi pli bone mastrumi viajn tabelojn)';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Vi devus vin direkti al la subtenoservo de via provizanto de gastigo, kaj serĉi kiel vi mem povas interŝanĝi al PHP 5.';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Vi povas elŝuti la agordan dosieron kaj alŝuti ĝin al la dosierujo "local/config" dum via instalado.';
+$lang['Just another Piwigo gallery'] = 'Nur alia bildogalerio ĉe Piwigo';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Eblas, ke Piwigo provos interŝanĝi vian agordon al PHP 5 kreante aŭ modifiante iun .htaccess-dosieron.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Notu, ke eblas ŝanĝi vian agordon mem kaj poste restartigi Piwigo.';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Gardu ĝin sekreta, ĝi ebligas al vi aliri la administran panelon';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Ĝi montriĝos al vizitantoj. Necesas por reteja administrado';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Ŝajnas, ke via retejgastiganto nuntempe funkciigas PHP %s.';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bonvenon al via nova instalado de Piwigo!';
+$lang['also given by your host provider'] = 'ankaŭ provizita de via provizanto de gastigo';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Ĉu vi bezonas helpon? Starigu demandon ĉe la <a href="%s">mesaĝtabulo de Piwigo</a>.';
+$lang['Try to configure PHP 5'] = 'Provu agordi PHP 5';
+$lang['Sorry!'] = 'Pardonu!';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'La vizitantoj povos uzi tiun retadreson por kontakti la retestron';
+$lang['Welcome to my photo gallery'] = 'Bonvenon al mia foto-galerio';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ne kapablis agordi PHP 5.';
+$lang['verification'] = 'kontrolado';
+$lang['Hope to see you back soon.'] = 'Ĝis baldaŭa vizito via.';
+$lang['Start Install'] = 'Komenci la instaladon';
+$lang['Password ']['confirm'] = 'Pasvorto [konfirmu]';
+$lang['PHP 5 is required'] = 'Necesas PHP 5';
+$lang['User'] = 'Uzanto';
+$lang['Download the config file'] = 'Elŝuti la agordan dosieron';
+$lang['Database table prefix'] = 'Prefikso de datumtabeloj';
+$lang['Host'] = 'Gastiga komputilo';
+$lang['Installation'] = 'Instalado';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ne hezitu viziti niajn forumojn por obteni helpon: %s';
+$lang['Default gallery language'] = 'Apriora galeri-lingvo';
+$lang['Database name'] = 'Nomo de datumbazo';
+$lang['Database configuration'] = 'Agordo de datumbazo';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Anstataŭa solvo estas kopii la tekston en la ĉisupra tekstujo kaj alglui ĝin al la dosiero "local/config/database.inc.php" (Averto: nepras ke database.inc.php nur entenu tion, kio ĉeestas en la tekstujo, sen alineo nek spaceto)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'La kreado de local/config/database.inc.php malsukcesis.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Sukcesis kontektado kun la servilo, sed ne eblis konektado kun la datumbazo';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulon, la instalado de Piwigo plenumiĝis';
+$lang['Can\'t connect to server'] = 'Ne eblas konekti kun la servilo';
+$lang['Basic configuration'] = 'Baza agordo';
+$lang['Admin configuration'] = 'Administra agordo';
+$lang['localhost or other, supplied by your host provider'] = 'loka gasto (localhost) aŭ alia, provizita de via provizanto de gastigo';
+?>
Index: /tags/2.6.0RC1/language/eo_EO/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Esperanto [EO]
Index: /tags/2.6.0RC1/language/eo_EO/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/eo_EO/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/eo_EO/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['SQL queries'] = 'SQL petoj';
+$lang['Upgrade informations'] = 'Informoj pri la ĝisdatigo';
+$lang['User permissions and group permissions have been erased'] = 'La permesoj de uzantoj kaj de grupoj viŝiĝis';
+$lang['You do not have access rights to run upgrade'] = 'Vi ne havas akcesrajtojn por lanĉi ĝisdatigon';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Tiu-ĉi paĝo proponas ĝisdatigi la datenbazon de via eksa Piwigo-versio al la nova. La ĝisdatiga asistanto pensas ke vi nun funkciigas <strong>versio %s</strong> (aŭ simila).';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Plenumu funkcitenan kontrolon en [Administrado>Iloj>Funkciteno] se vi alfrontas problemon.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Nur la miniatura prefikso kaj la retestra retadreso konserviĝis el la antaŭa agordo';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Kiel singardo, la jenaj temoj malaktiviĝis. Kontrolserĉu ĝisdatigojn antaŭ ol reaktivigi ilin:';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Kiel singardo, la jenaj krom-programoj malaktiviĝis. Kontrolserĉu ĝisdatigojn antaŭ ol reaktivigi ilin:';
+$lang['total upgrade time'] = 'kompleta ĝisdatigotempo';
+$lang['total SQL time'] = 'kompleta SQL-tempo';
+$lang['Upgrade from version %s to %s'] = 'Ĝisdatigu de versio %s al %s';
+$lang['Upgrade'] = 'Ĝisdatigi';
+$lang['Statistics'] = 'Statistikoj';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Nur administranto povas lanĉi ĝisdatigadon: bonvolu ensaluti ĉisube.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'En <i>%s</i>, antaŭ <b>?></b>, enmetu:';
+$lang['All sub-albums of private albums become private'] = 'Ĉiuj sub-fotaroj el privataj fotaroj iĝas privataj';
+?>
Index: /tags/2.6.0RC1/language/es_AR/about.html
===================================================================
--- /tags/2.6.0RC1/language/es_AR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_AR/about.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Esta galería de fotos está basada en Piwigo.</p>
+
+<p>Piwigo es un programa para presentar una galería de fotos en Internet, construído por una comunidad activa de usuarios y desarroladores. Las extensiones hacen que Piwigo sea facilmente personalizable. Y como si esto fuera poco, Piwigo es libre y gratuito.</p>
+
+<p id="linkToPiwigo"><a href="http://es.piwigo.org">Visitá el sitio web de Piwigo en castellano</a></p>
Index: /tags/2.6.0RC1/language/es_AR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/es_AR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_AR/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Argentina [AR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=418
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Castellano';
+$lang_info['country'] = 'Argentina';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'es';
+$lang_info['zero_plural'] = false;
+$lang_info['parent']= "es_ES";
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d categoría actualizada';
+$lang['%d albums updated'] = '%d categorías actualizadas';
+$lang['%d comment to validate'] = '%d comentario de usuario para aprobar';
+$lang['%d comments to validate'] = '%d comentarios de usuario para aprobar';
+$lang['%d new comment'] = '%d nuevo comentario de usuario';
+$lang['%d new comments'] = '%d nuevos comentarios de usuario';
+$lang['%d comment'] = '%d comentario';
+$lang['%d comments'] = '%d comentarios';
+$lang['%d hit'] = 'vista %d veces';
+$lang['%d hits'] = 'vista %d veces';
+$lang['%d new photo'] = '%d nueva imagen';
+$lang['%d new photos'] = '%d nuevas imágenes';
+$lang['%d new user'] = '%d nuevo usuario';
+$lang['%d new users'] = '%d nuevos usuarios';
+$lang['About'] = 'Acerca de';
+$lang['All tags'] = 'Todos los tags';
+$lang['Any tag'] = 'Cualquier tag';
+$lang['At least one listed rule must be satisfied.'] = 'Uno de los criterios por lo menos debe satisfacerse.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Categorías';
+$lang['Album'] = 'Categoría';
+$lang['Close this window'] = 'Cierre esta ventana';
+$lang['Complete RSS feed (photos, comments)'] = 'Flujo RSS completo (imágenes, comentarios)';
+$lang['Confirm Password'] = 'Confirme su contraseña';
+$lang['Connection settings'] = 'Parámetros de conexión';
+$lang['Login'] = 'Conexión';
+$lang['Contact webmaster'] = 'Ponerse en contacto con el webmaster';
+$lang['Create a new account'] = 'Crear una cuenta nueva';
+$lang['Created on'] = 'Creada el';
+$lang['Creation date'] = 'Fecha de creación';
+$lang['Current password is wrong'] = 'Contraseña actual incorrecta';
+$lang['Dimensions'] = 'Dimensiones';
+$lang['Display'] = 'Mostrar';
+$lang['Each listed rule must be satisfied.'] = 'Cada uno de los criterios debe ser satisfecho';
+$lang['Email address is missing. Please specify an email address.'] = 'Falta la dirección de correo electrónico';
+$lang['Email address'] = 'Dirección de correo electrónico';
+$lang['Enter your personnal informations'] = 'Escriba sus datos personales';
+$lang['Error sending email'] = 'Error al enviar correo electrónico';
+$lang['File name'] = 'Nombre del archivo';
+$lang['File'] = 'Archivo';
+$lang['Filesize'] = 'Tamaño';
+$lang['Filter and display'] = 'Filtrar y mostrar';
+$lang['Filter'] = 'Filtro';
+$lang['Forgot your password?'] = 'Olvidó su contraseña?';
+$lang['Go through the gallery as a visitor'] = 'Recorrer la galería como visitante';
+$lang['Help'] = 'Ayuda';
+$lang['Photos only RSS feed'] = 'Flujo RSS de las imágenes';
+$lang['Keyword'] = 'Palabra clave';
+$lang['Links'] = 'Enlaces';
+$lang['N/A'] = 'no disponible';
+$lang['New on %s'] = 'Nuevo el %s';
+$lang['Notification'] = 'Notificación';
+$lang['Number of items'] = 'Cantidad de elementos';
+$lang['Original dimensions'] = 'Dimensiones originales';
+$lang['Password forgotten'] = 'Contraseña olvidada';
+$lang['Password'] = 'Contraseña';
+$lang['Post date'] = 'Fecha de envío';
+$lang['Posted on'] = 'Agregado el';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'Conexión rápida';
+$lang['RSS feed'] = 'flujo RSS';
+$lang['Register'] = 'Registrarse';
+$lang['Registration'] = 'Registro';
+$lang['Related tags'] = 'Tags relacionados';
+$lang['Reset'] = 'Anular';
+$lang['Retrieve password'] = 'Recuperar una contraseña';
+$lang['Search rules'] = 'Criterios de búsqueda';
+$lang['Search tags'] = 'Buscar tags';
+$lang['Search'] = 'Buscar';
+$lang['display available tags'] = 'Ver tags disponibles';
+$lang['Since'] = 'Desde';
+$lang['Sort by'] = 'Clasificar por';
+$lang['Sort order'] = 'Orden de clasificación';
+$lang['Tag'] = 'Etiqueta';
+$lang['Tags'] = 'Etiquetas';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'El flujo RSS notifica eventos de la galería: imágenes nuevas, categorías actualizadas, nuevos comentarios de usuarios. Debe usarse con un lector de flujos RSS.';
+$lang['Unknown feed identifier'] = 'Identificador de flujo desconocido';
+$lang['User comments'] = 'Comentarios de usuario';
+$lang['Username'] = 'Nombre de usuario';
+$lang['Visits'] = 'Visitas';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Semane %d';
+$lang['About Piwigo'] = 'Acerca de Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Acceso denegaso';
+$lang['add this photo to your favorites'] = 'agregar esta imagen a sus favoritos';
+$lang['Administration'] = 'Administración';
+$lang['all'] = 'todo';
+$lang['ascending'] = 'creciente';
+$lang['author(s) : %s'] = 'autor(es) : %s';
+$lang['Expand all albums'] = 'Mostrar todas las categorías';
+$lang['posted after %s (%s)'] = 'a disposición después del %s (%s)';
+$lang['posted before %s (%s)'] = 'a disposición antes del %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'a disposición entre el %s (%s) y el %s (%s)';
+$lang['posted on %s'] = 'a disposición el %s';
+$lang['Best rated'] = 'Con mejor calificación';
+$lang['display best rated photos'] = 'mostrar las imágenes con mejor calificación';
+$lang['Calendar'] = 'Calendario';
+$lang['All'] = 'Todo';
+$lang['display each day with photos, month per month'] = 'mostrar año por año, mes por mes, día por día';
+$lang['View'] = 'Vista calendario';
+$lang['chronology_monthly_calendar'] = 'Calendario mensual';
+$lang['chronology_monthly_list'] = 'Lista mensual';
+$lang['chronology_weekly_list'] = 'Lista semanal';
+$lang['Click here if your browser does not automatically forward you'] = 'Haga clic acá si su navegador no lo redirige correctamente.';
+$lang['comment date'] = 'fecha del comentario';
+$lang['Comment'] = 'Comentario';
+$lang['Your comment has been registered'] = 'Su comentario ha sido grabado';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistema anti-abuso: por favor espere antes de agregar otro comentario';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Su comentario no se grabó por infringir las reglas de aceptación';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrador debe comprobar su caomentario para que sea visible.';
+$lang['This login is already used by another user'] = 'Ya existe ese nombre de usuario';
+$lang['Comments'] = 'Comentarios';
+$lang['Add a comment'] = 'Agregar un comentario';
+$lang['created after %s (%s)'] = 'creada después del %s (%s)';
+$lang['created before %s (%s)'] = 'creada antes del %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creada entre el %s (%s) y el %s (%s)';
+$lang['created on %s'] = 'creada el %s';
+$lang['Customize'] = 'Personalizar';
+$lang['Your Gallery Customization'] = 'Personalización de su interfaz gráfica ';
+$lang['day'][0] = 'Domingo';
+$lang['day'][1] = 'Lunes';
+$lang['day'][2] = 'Martes';
+$lang['day'][3] = 'Miércoles';
+$lang['day'][4] = 'Jueves';
+$lang['day'][5] = 'Viernes';
+$lang['day'][6] = 'Sábado';
+$lang['Default'] = 'Por defecto';
+$lang['delete this photo from your favorites'] = 'Borrar esta imagen de sus favoritos';
+$lang['Delete'] = 'Borrar';
+$lang['descending'] = 'decreciente';
+$lang['Download'] = 'descargar';
+$lang['Download this file'] = 'descargar este archivo';
+$lang['edit'] = 'editar';
+$lang['wrong date'] = 'fecha equivocada';
+$lang['excluded'] = 'excluídos';
+$lang['Your favorites'] = 'Mis favoritos';
+$lang['display your favorites photos'] = 'mostrar mis imágenes favoritas';
+$lang['Favorites'] = 'Favoritos';
+$lang['First'] = 'Primera página';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galería está cerrada por acuasa de mantenimiento. Por favor vuelva a visitarnos más tarde.';
+$lang['Page generated in'] = 'Página generada en ';
+$lang['guest'] = 'visitante';
+$lang['Hello'] = '¡Hola!';
+$lang['available for administrators only'] = 'sólo disponible para administradores';
+$lang['display this album'] = 'muestra las imágenes a la raíz de esta categoría';
+$lang['display last user comments'] = 'Ver los últimos comentarios de usuarios';
+$lang['customize the appareance of the gallery'] = 'personalizar la apariencia de la galería';
+$lang['search'] = 'búsqueda';
+$lang['Home'] = 'Inicio';
+$lang['Identification'] = 'Identificación';
+$lang['in this album'] = 'en esta categoría';
+$lang['in %d sub-album'] = 'en %d sub-categoría';
+$lang['in %d sub-albums'] = 'en %d sub-categorías';
+$lang['included'] = 'incluídos';
+$lang['Invalid password!'] = 'Contraseña incorrecta!';
+$lang['Language'] = 'Idioma';
+$lang['last %d days'] = '%d últimos días';
+$lang['Last'] = 'Última';
+$lang['Logout'] = 'Desconectarse';
+$lang['obligatory'] = 'obligatorio';
+$lang['display a calendar by creation date'] = 'mostrar un calendario por fecha de creación';
+$lang['display all photos in all sub-albums'] = 'mostrar de plano los elementos de categorías y sub-categorías';
+$lang['return to normal view mode'] = 'volver a la apariencia inicial';
+$lang['display a calendar by posted date'] = 'mostrar un calendario por fecha de agregado';
+$lang['month'][10] = 'Octubre';
+$lang['month'][11] = 'Noviembre';
+$lang['month'][12] = 'Diciembre';
+$lang['month'][1] = 'Enero';
+$lang['month'][2] = 'Febrero';
+$lang['month'][3] = 'Marzo';
+$lang['month'][4] = 'Abril';
+$lang['month'][5] = 'Mayo';
+$lang['month'][6] = 'Junio';
+$lang['month'][7] = 'Julio';
+$lang['month'][8] = 'Agosto';
+$lang['month'][9] = 'Septiembre';
+$lang['Most visited'] = 'Las más vistas';
+$lang['display most visited photos'] = 'mostrar las imágenes más vistas';
+$lang['The number of photos per page must be a not null scalar'] = 'La cantidad de imágenes por página debe ser un número entero superior a cero';
+$lang['Number of photos per page'] = 'Cantidad de diapositivas por página';
+$lang['Unknown identifier'] = 'Identificador desconocido';
+$lang['New password'] = 'Nueva contraseña';
+$lang['Rate this photo'] = 'Votar esta imagen';
+$lang['Next'] = 'Siguiente';
+$lang['no rate'] = 'sin calificar';
+$lang['Photos posted within the last %d day.'] = 'Se han filtrado los elementos para mostrar sólo los recientes de menos de %d día.';
+$lang['Photos posted within the last %d days.'] = 'Se han filtrado los elementos para mostrar sólo los recientes de menos de %d días.';
+$lang['password updated'] = 'contraseña actualizada';
+$lang['Recent period must be a positive integer value'] = 'El período debe ser un número entero positivo';
+$lang['photo'] = 'imagen';
+$lang['Click on the photo to see it in high definition'] = 'Haga clic en la imagen para verla en alta resolución';
+$lang['Show file metadata'] = 'Mostrar los meta-datos del archivo';
+$lang['Powered by'] = 'Puesto en página por';
+$lang['Preferences'] = 'Preferencias';
+$lang['Previous'] = 'Página anterior';
+$lang['Random photos'] = 'Imágenes al azar';
+$lang['display a set of random photos'] = 'mostrar un conjunto aleatorio de imágenes';
+$lang['Recent albums'] = 'Categorías recientes';
+$lang['display recently updated albums'] = 'mostrar las categorías creadas o actualizadas recientemente';
+$lang['Recent period'] = 'Período reciente';
+$lang['Recent photos'] = 'Imágenes recientes';
+$lang['display most recent photos'] = 'mostrar las imágenes más recientes';
+$lang['Redirection...'] = 'Redirección...';
+$lang['Please, enter a login'] = 'Por favor, ingrese su nombre de usuario';
+$lang['login mustn\'t end with a space character'] = 'el nombre de usuario no debe terminarse por un espacio';
+$lang['login mustn\'t start with a space character'] = 'el nombre de usuario no debe empezar por un espacio';
+$lang['this login is already used'] = 'ese nombre de usuario ya existe';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'la dirección de correo electrónico debe tener esta forma: xxx@yyy.eee (ejemplo : jack@altern.org)';
+$lang['Auto login'] = 'Connexión automática';
+$lang['remove this tag from the list'] = 'borrar este tag de la lista';
+$lang['representative'] = 'Representante';
+$lang['Search for Author'] = 'Buscar un autor';
+$lang['Search in albums'] = 'Buscar en las categorías';
+$lang['Search by date'] = 'Buscar por fecha';
+$lang['Date'] = 'Fecha';
+$lang['End-Date'] = 'Fecha fin';
+$lang['Kind of date'] = 'Tipo de fecha';
+$lang['Search for words'] = 'Buscar por palabras clave';
+$lang['Search for all terms'] = 'Buscar todas las palabras';
+$lang['Search for any term'] = 'Buscar una de las palabras';
+$lang['Empty query. No criteria has been entered.'] = 'Búsqueda vacía: no ha sido indicado ningún criterio.';
+$lang['Search results'] = 'Resultados de la búsqueda';
+$lang['Search in sub-albums'] = 'Buscar en sub-categorías';
+$lang['searched words : %s'] = 'palabras buscadas : %s';
+$lang['Contact'] = 'Contacto';
+$lang['set as album representative'] = 'Elegir como representante de esta categoría';
+$lang['Show number of comments'] = 'Mostrar la cantidad de comentarios';
+$lang['Show number of hits'] = 'Mostrar la cantidad de visualizaciones';
+$lang['slideshow'] = 'Proyección';
+$lang['stop the slideshow'] = 'detener la proyección';
+$lang['Specials'] = 'Especiales';
+$lang['SQL queries in'] = 'pedidos SQL en';
+$lang['display only recently posted photos'] = 'mostrar sólo los elementos recientes';
+$lang['return to the display of all photos'] = 'volver a mostrar todos los elementos';
+$lang['the beginning'] = 'principio';
+$lang['Thumbnails'] = 'Diapositivas';
+$lang['Menu'] = 'Menú';
+$lang['A comment on your site'] = 'Hay un comentario en el sitio';
+$lang['today'] = 'hoy';
+$lang['Update your rating'] = 'Actualizar su calificación';
+$lang['the username must be given'] = 'falta el nombre de usuario';
+$lang['useful when password forgotten'] = 'útil en caso de contraseña olvidada';
+$lang['Quick search'] = 'Búsqueda rápida';
+$lang['Connected user: %s'] = 'Usuario conectado: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Comentario: %s';
+$lang['Comment by %s'] = 'Comentario por %s';
+$lang['User: %s'] = 'Usuario: %s';
+$lang['Email: %s'] = 'Correo electrónico: %s';
+$lang['Admin: %s'] = 'Administración: %s';
+$lang['Registration of %s'] = 'Registro de %s';
+$lang['Album: %s'] = 'Categoría: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'El estatuto de usuario "huésped" no corresponde, se utilizará el estatuto por defecto. Por favor avísele al webmaster.';
+$lang['this email address is already in use'] = 'ya existe un usuario con esa misma dirección de correo electrónico';
+$lang['Album results for'] = 'Resultados de categorías para';
+$lang['Tag results for'] = 'Resultados de tags para';
+$lang['from %s to %s'] = 'del %s al %s';
+$lang['Play of slideshow'] = 'Lectura de la proyección';
+$lang['Pause of slideshow'] = 'Pausa de la proyección';
+$lang['Repeat the slideshow'] = 'Repetir la proyección';
+$lang['Not repeat the slideshow'] = 'No repetir la proyección';
+$lang['Reduce diaporama speed'] = 'Disminuir la velocidad de proyección';
+$lang['Accelerate diaporama speed'] = 'Acelerar la velocidad de proyección';
+$lang['Submit'] = 'Enviar';
+$lang['Yes'] = 'Sí';
+$lang['No'] = 'No';
+$lang['%d photo']='%d imagen';
+$lang['%d photos']='%d imágenes';
+$lang['%d photo is also linked to current tags'] = '%d imagen también está relacionada con los tags actuales';
+$lang['%d photos are also linked to current tags'] = '%d imágenes también están relacionadas con los tags actuales';
+$lang['display photos linked to this tag'] = 'Ver únicamente las imágenes relacionadas a ese tag';
+$lang['photos posted during the last %d days'] = 'imágenes agregadas los últimos días';
+$lang['Piwigo Help'] = 'Ayuda de Piwigo';
+$lang['Rank'] = 'Rango';
+$lang['group by letters'] = 'reagrupar por letras';
+$lang['letters'] = 'letras';
+$lang['show tag cloud'] = 'mostrar la nube de tags';
+$lang['cloud'] = 'nube';
+$lang['Reset to default values'] = 'Resetear a los valores por defecto';
+$lang['delete all photos from your favorites'] = 'borrar todas las imágenes de tus favoritos';
+$lang['Sent by'] = 'Enviado por';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Tu navegador web bloquea las cookies o no las sopporta. Para conectarse es necesario activar las cookies.';
+$lang['Edit a comment'] = 'Editar un comentario';
+$lang['Are you sure?'] = 'Seguro?';
+$lang['(!) This comment requires validation'] = '(!) Este comentario necesita ser aprobado';
+$lang['Welcome'] = 'Bienvenida';
+$lang['Welcome to your Piwigo photo gallery!'] = '¡Bienvenido/a a tu galería de fotos Piwigo!';
+$lang['... or browse your empty gallery'] = '... o navegá por tu galería vacía';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... o desactivá este mensaje, me las voy a arreglar solo';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hola %s, ¡tu galería de fotos está vacía!';
+$lang['I want to add photos'] = 'Quiero agregar fotos';
+$lang['Manage this user comment: %s'] = 'Administrar este comentario: %s';
+$lang['This author modified following comment:'] = 'Este autor modificó el comentario siguiente:';
+$lang['This author removed the comment with id %d'] = 'Este autor suprimió el comentario identificado como %d';
+$lang['%d rates'] = '%d calificaciones';
+$lang['Change my password'] = 'Cambiar mi contraseña';
+$lang['Check your email for the confirmation link'] = 'Consultá tu correo para el enlace de confirmación';
+$lang['Edit'] = 'Editar';
+$lang['Enter your new password below.'] = 'Escribí tu nueva contraseña.';
+$lang['EXIF Metadata'] = 'Metadatos EXIF';
+$lang['Hello %s,'] = 'Hola %s,';
+$lang['html tags are not allowed in login'] = 'no se permiten etiquetas HTML en el inicio de sesión';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Si esto fue un error, ignorá este mensaje y no pasará nada';
+$lang['Invalid key'] = 'clave no válida';
+$lang['Invalid username or email'] = 'nombre de usuario inválido o dirección de correo equivocada';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Password reset is not allowed for this user'] = 'No se permite el restablecimiento de la contraseña para este usuario';
+$lang['Password Reset'] = 'Restablecimiento de la contraseña';
+$lang['Please enter your username or email address.'] = 'Por favor, ingresá tu nombre de usuario o dirección de correo electrónico.';
+$lang['Rating score'] = 'Valoración de resultados';
+$lang['Return to home page'] = 'Volver a la página de inicio';
+$lang['Send my connection settings by email'] = 'Enviar mis opciones de conexión por correo electrónico';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Alguien pidió que se restablezca la contraseña para la cuenta del usuario siguiente';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Has sido registrado con éxito, pronto recibirás un correo electrónico con la configuración de tu conexión. ¡Bienvenido! ¡Bienvenida!';
+$lang['The passwords do not match'] = 'Las contraseñas no coinciden';
+$lang['To reset your password, visit the following address:'] = 'Para restablecer tu contraseña, visitá la dirección siguiente:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'El usuario "%s" no tiene correo electrónico, imposible restablecer la contraseña';
+$lang['Username "%s" on gallery %s'] = 'El nombre de usuario "%s" en la galería %s';
+$lang['Username or email'] = 'Nombre de uauario o dirección de correo electrónico';
+$lang['Username modification'] = 'Modificación del nombre de usuario';
+$lang['You will receive a link to create a new password via email.'] = 'Recibirás un enlace para crear una nueva contraseña por correo electrónico.';
+$lang['Your username has been successfully changed to : %s'] = 'Tu nombre de usuario fue cambiado con éxito por el siguiente: %s';
+$lang['Your password has been reset'] = 'Tu contraseña ha sido restablecida';
+$lang['IPTC Metadata'] = 'Metadatos IPTC';
+$lang['square'] = 'Cuadrado';
+$lang['thumb'] = 'Miniatura';
+$lang['small'] = 'Pequeño';
+$lang['medium'] = 'Mediano';
+$lang['large'] = 'Grande';
+$lang['xlarge'] = 'Muy grande';
+$lang['xxlarge'] = 'Enorme';
+$lang['Original'] = 'Original';
+$lang['Thank you for registering at %s!'] = 'Gracias por registrarse en %s!';
+$lang['Here are your connection settings'] = 'Estos son tus ajustes de conexión';
+$lang['Password: %s'] = 'Contraseña: %s';
+$lang['Username: %s'] = 'Nombre de usuario: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Si recibiste este correo por error, contactanos en %s';
+$lang['Photo sizes'] = 'Tamaños de foto';
+$lang['Show oldest comments first'] = 'Mostrar primero los comentarios más antiguos';
+$lang['Show latest comments first'] = 'Mostrar primero el último comentario';
+$lang['View in'] = 'Ver en';
+$lang['Mobile'] = 'Móvil';
+$lang['Desktop'] = 'Escritorio';
+$lang['2small'] = 'XXS - diminuto';
+$lang['xsmall'] = 'XS - muy pequeño';
+$lang['File name, A &rarr; Z'] = 'Nombre de archivo, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nombre de archivo, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Título de la foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Título de la foto, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Fecha de creación, más reciente &rarr; más antigua';
+$lang['Date created, old &rarr; new'] = 'Fecha de creación, más antigua &rarr; más reciente';
+$lang['Date posted, new &rarr; old'] = 'Fecha de publicación, más reciente &rarr; más antigua';
+$lang['Date posted, old &rarr; new'] = 'Fecha de publicación, más antigua &rarr; más reciente';
+$lang['Rating score, high &rarr; low'] = 'Puntuación, mayor &rarr; menor';
+$lang['Rating score, low &rarr; high'] = 'Puntuación, menor &rarr; mayor';
+$lang['Visits, high &rarr; low'] = 'Visitas, alta &rarr; baja';
+$lang['Visits, low &rarr; high'] = 'Visitas, baja &rarr; alta';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificador numérico, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificador numérico, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Orden manual';
+$lang['%d rate'] = '%d calificación';
+$lang['Page not found'] = 'Página no encontrada';
+$lang['Bad request'] = 'Solicitud incorrecta';
+$lang['Forbidden'] = 'Prohibido';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ha detectado un error no recuperable';
+$lang['Requested album does not exist'] = 'El álbum solicitado no existe';
+$lang['Permalink for album not found'] = 'No se encontró el enlace (Permalink) para el álbum';
+$lang['Requested tag does not exist'] = 'El tag solicitado no existe';
+$lang['Email address is mandatory'] = 'La dirección de correo electrónico es obligatoria';
+$lang['Username is mandatory'] = 'El nombre de usuario es obligatorio';
+$lang['mandatory'] = 'obligatorio';
+$lang['Website'] = 'Sitio web';
+$lang['Your website URL is invalid'] = 'La dirección de su sitio web no es válida';
+$lang['First Page'] = 'Primera página';
+$lang['Go back to the album'] = 'Volver al álbum';
+$lang['Last Page'] = 'Última página';
+$lang['Email'] = 'Correo electrónico';
+
+?>
Index: /tags/2.6.0RC1/language/es_AR/index.php
===================================================================
--- /tags/2.6.0RC1/language/es_AR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_AR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/es_AR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/es_AR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/es_AR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Argentina [AR]
Index: /tags/2.6.0RC1/language/es_ES/about.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/about.html	(revision 25596)
@@ -0,0 +1,18 @@
+<p>Esta galeria fotográfica está basada en Piwigo.</p>
+
+<p>Piwigo es un programa de álbumes de fotos web, desarrollado por una comunidad activa de 
+usuarios y desarrolladores. Las extensiones hacen que Piwigo sea fácilmente personalizable. 
+Y lo mejor... Piwigo es de código abierto y gratuito.</p>
+
+<p id="linkToPiwigo"><a href="http://es.piwigo.org">Visita el sitio web de Piwigo</a></p>
+
+<p>La traducción de Piwigo al español está mantenida por: (en orden alfabético)
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=4937">AM</a></li>
+		<li><a href="http://es.piwigo.org/forum/profile.php?id=4747">AlbertParera</a></li>
+		<li><a href="http://es.piwigo.org/forum/profile.php?id=4714">crazydark</a></li>
+		<li><a href="http://es.piwigo.org/forum/profile.php?id=4703">jpr928</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15900">opinador</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15398">petaqui</a></li>
+	</ul>
+<p>Gracias por vuestra colaboración</p>
Index: /tags/2.6.0RC1/language/es_ES/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/admin.lang.php	(revision 25596)
@@ -0,0 +1,973 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d asociación';
+$lang['%d associations'] = '%d asociaciones';
+$lang['%d album including'] = '%d álbum incluido';
+$lang['%d albums including'] = '%d álbumes incluidos, ';
+$lang['%d physical'] = '%d físico';
+$lang['%d physicals'] = '%d físicos';
+$lang[' and %d virtual'] = ' y %d virtual';
+$lang[' and %d virtuals'] = ' y %d virtuales';
+$lang['%d album moved'] = '%d álbum movido';
+$lang['%d albums moved'] = '%d álbumes movidos';
+$lang['%d group'] = '%d grupo';
+$lang['%d groups'] = '%d grupos';
+$lang['%d member'] = '%d miembro';
+$lang['%d members'] = '%d miembros';
+$lang['%d tag'] = '%d etiqueta';
+$lang['%d tags'] = '%d etiquetas';
+$lang['%d user comment rejected'] = '%d comentario de usuario rechazado';
+$lang['%d user comments rejected'] = '%d comentarios de usuarios rechazados';
+$lang['%d user comment validated'] = '%d comentario de usuario validado';
+$lang['%d user comments validated'] = '%d comentarios de usuarios validados';
+$lang['%d user deleted'] = '%d usuario eliminado';
+$lang['%d users deleted'] = '%d usuarios borrados';
+$lang['%d user'] = '%d usuario';
+$lang['%d users'] = '%d usuarios';
+$lang['%d waiting for validation'] = '%d en espera de validación';
+$lang['Actions'] = 'Acciones';
+$lang['Activate'] = 'Activar';
+$lang['Add/delete a permalink'] = 'Añadir/Eliminar enlace permanente';
+$lang['Add a tag'] = 'Añadir etiqueta';
+$lang['Add a user'] = 'Añadir usuario';
+$lang['Add group'] = 'Añadir grupo';
+$lang['Add'] = 'Añadir';
+$lang['Allow user registration'] = 'Permitir el registro de usuarios';
+$lang['Apply to sub-albums'] = 'Aplicar a los sub-álbumes';
+$lang['Associated'] = 'Asociada a';
+$lang['Caddie management'] = 'Gestión del carrito';
+$lang['Caddie'] = 'Carrito';
+$lang['Albums authorized thanks to group associations'] = 'Álbumes autorizados gracias a las asociaciones a grupos';
+$lang['Album manual order was saved'] = 'El orden personalizado de los álbumes se ha guardado con éxito';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Por causas desconocidas no se ha podido comprobar si existe una nueva versión';
+$lang['Check for upgrade'] = 'Comprobar si hay una nueva versión disponible';
+$lang['Comments for all'] = 'Comentarios para todos';
+$lang['Current name'] = 'Nombre actual';
+$lang['Database'] = 'Base de datos';
+$lang['Deactivate'] = 'Desactivar';
+$lang['Delete Representant'] = 'Eliminar diapositiva de representación del álbum';
+$lang['Delete selected tags'] = 'Eliminar';
+$lang['Delete selected users'] = 'Eliminar usuarios seleccionados';
+$lang['Deletions'] = 'Eliminaciones';
+$lang['Deny selected groups'] = 'Prohibir el acceso a los grupos seleccionados';
+$lang['Deny selected users'] = 'Prohibirles el acceso a los usuarios seleccionados';
+$lang['Description'] = 'Descripción';
+$lang['Display options'] = 'Opciones de visualización';
+$lang['Dissociated'] = 'Separada de';
+$lang['Does not represent'] = 'No representar';
+$lang['Email admins when a new user registers'] = 'Notificar a los administradores cuando se registre un nuevo usuario';
+$lang['Email admins when a valid comment is entered'] = 'Notificar a los administradores cuando se añada un comentario válido';
+$lang['Email admins when a comment requires validation'] = 'Notificar a los administradores cuando un comentario requiera validación';
+$lang['Environment'] = 'Entorno';
+$lang['Form'] = 'Formulario';
+$lang['Gallery title'] = 'Título de la galería';
+$lang['Grant selected groups'] = 'Dar acceso a los grupos seleccionados';
+$lang['Grant selected users'] = 'Darles acceso a los usuarios seleccionados';
+$lang['Group name'] = 'Nombre del grupo';
+$lang['Groups'] = 'Grupos';
+$lang['Guests'] = 'Invitados';
+$lang['History'] = 'Historial';
+$lang['Informations'] = 'Información';
+$lang['Install'] = 'Instalar';
+$lang['Link all album photos to a new album'] = 'Asociar todas las fotos del álbum a un nuevo álbum';
+$lang['Link all album photos to some existing albums'] = 'Asociar todas las fotos del álbum a los álbumes existentes';
+$lang['Linked albums'] = 'Álbumes asociados';
+$lang['Lock gallery'] = 'Bloquear la galería';
+$lang['Maintenance'] = 'Mantenimiento';
+$lang['Manage permissions for group "%s"'] = 'Administrar permisos para el grupo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Administrar permisos para el usuario "%s"';
+$lang['Manage tags'] = 'Administrar etiquetas';
+$lang['Members'] = 'Miembros';
+$lang['Metadata synchronized from file'] = 'Metadatos sincronizados desde el archivo';
+$lang['Move albums'] = 'Mover álbumes';
+$lang['Move'] = 'Mover';
+$lang['Name'] = 'Nombre';
+$lang['New name'] = 'Nuevo nombre';
+$lang['New parent album'] = 'Nuevo álbum padre';
+$lang['New tag'] = 'Nueva etiqueta';
+$lang['Number of comments per page'] = 'Número de comentarios por página';
+$lang['Number of rates'] = 'Número de valoraciones';
+$lang['Number of thumbnails to create'] = 'Número de miniaturas que hay que crear';
+$lang['Only private albums are listed'] = 'Sólo se listan los álbumes privados';
+$lang['Operating system'] = 'Sistema operativo';
+$lang['Options'] = 'Opciones';
+$lang['Other private albums'] = 'Otros álbumes privados';
+$lang['Page banner'] = 'Banners de las páginas';
+$lang['Parent album'] = 'Álbum padre';
+$lang['Path'] = 'Ruta';
+$lang['Permalink'] = 'Enlace permanente';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'El enlace permanente %s se utilizó anteriormente ara el álbum %s. Bórralo del histórico de enlaces permanentes';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'El enlace permanente debe contener sólo carácteres entre " - zA-Z0-9 ", "-" o "_". No debe ser numérico o comenzar con un número seguido por "-"';
+$lang['Permalink %s is already used by album %s'] = 'El enlace permanente %s ya se utiliza para el àlbum %s';
+$lang['Permalink history'] = 'Histórico de enlaces permanentes';
+$lang['Permalinks'] = 'Enlaces permanentes';
+$lang['Permission denied'] = 'Acceso prohibido';
+$lang['Permission granted thanks to a group'] = 'Acceso autorizado gracias a la pertenencia a los grupos';
+$lang['Permission granted'] = 'Acceso autorizado';
+$lang['Photo informations updated'] = 'Información actualizada de la foto';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Posición';
+$lang['Preferences'] = 'Preferencias';
+$lang['Properties'] = 'Propiedades';
+$lang['Random photo'] = 'Foto aleatoria';
+$lang['Rate date'] = 'Fecha de la valoración';
+$lang['Rating by guests'] = 'Valoración de los visitantes';
+$lang['Rating'] = 'Valoraciones';
+$lang['Reject'] = 'Rechazar';
+$lang['Representant'] = 'Representar';
+$lang['Representation of albums'] = 'Representación de álbumes';
+$lang['Representative'] = 'Representar';
+$lang['Represents'] = 'Representar';
+$lang['Save order'] = 'Guardar orden';
+$lang['Save to permalink history'] = 'Guardar en el historial de enlaces permanentes';
+$lang['Select at least one album'] = 'Seleccionar al menos un álbum';
+$lang['Select at least one photo'] = 'Seleccionar al menos una foto';
+$lang['Select at least one user'] = 'Seleccionar al menos a un usuario';
+$lang['Show info'] = 'Ver información';
+$lang['Site manager'] = 'Administrar sitios remotos';
+$lang['Status'] = 'Estado';
+$lang['Statistics'] = 'Estadísticas';
+$lang['Storage album'] = 'Álbum de almacenamiento';
+$lang['Sum of rates'] = 'Suma de valoraciones';
+$lang['Tag "%s" already exists'] = 'La etiqueta "%s" ya existe';
+$lang['Tag "%s" was added'] = 'La etiqueta "%s" ha sido añadida';
+$lang['Tag selection'] = 'Selección de etiquetas';
+$lang['The %d following tags were deleted'] = 'Las %d etiquetas siguientes han sido eliminadas';
+$lang['Unable to check for upgrade.'] = 'Imposible conocer la última versión.';
+$lang['Uninstall'] = 'Desinstalar';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Utilizar el orden de selección de las fotos por defecto (definido en el fichero de configuración)';
+$lang['User comments validation'] = 'Validación de los comentarios de usuarios';
+$lang['Users'] = 'Usuarios';
+$lang['Validate'] = 'Validar';
+$lang['Validation'] = 'Validación';
+$lang['Version'] = 'Versión';
+$lang['Virtual albums to move'] = 'Álbumes virtuales para mover';
+$lang['Virtual album name'] = 'Nombre del álbum virtual';
+$lang['Webmaster cannot be deleted'] = 'El webmaster no se puede eliminar';
+$lang['You are running on development sources, no check possible.'] = 'Estás trabajando sobre una fuente en desarrollo. No es posible verificar la última versión.';
+$lang['You cannot delete your account'] = 'No puedes eliminar tu cuenta';
+$lang['You cannot move an album in its own sub album'] = 'No se puede mover un álbum dentro de su propio sub-álbum';
+$lang['You need to confirm deletion'] = 'Debe confirmar la eliminación';
+$lang['Associate to album'] = 'Asociar al álbum';
+$lang['associate to group'] = 'Asociar al grupo';
+$lang['Authorized'] = 'Autorizados';
+$lang['Add a virtual album'] = 'Añadir álbum virtual';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizar los usuarios a añadir comentarios a los álbumes seleccionados';
+$lang['The name of an album must not be empty'] = 'El nombre del álbum no puede estar en blanco.';
+$lang['Lock albums'] = 'Bloquear álbumes';
+$lang['Private'] = 'Privado';
+$lang['Public'] = 'Público';
+$lang['Find a new representant by random'] = 'Encontrar a un nuevo representante al azar';
+$lang['Public / Private'] = 'Nivel de visibilidad';
+$lang['Manage authorizations for selected albums'] = 'Administrar los permisos para los álbumes seleccionados';
+$lang['Virtual album added'] = 'Álbum virtual añadido';
+$lang['Virtual album deleted'] = 'El álbum virtual ha sido eliminado correctamente';
+$lang['Access type'] = 'Tipo de acceso';
+$lang['Information data registered in database'] = 'Información registrada en la base de datos';
+$lang['Default display'] = 'Visualización predeterminada';
+$lang['The gallery URL is not valid.'] = 'La dirección de la galería no es válida.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'El número de comentarios de usuarios por página debe estar comprendido entre 5 y 50.';
+$lang['Configuration'] = 'Configuración';
+$lang['confirm'] = 'Confirmar';
+$lang['Date'] = 'Fecha';
+$lang['delete album'] = 'Eliminar álbum';
+$lang['Dissociate from album'] = 'Separar del álbum';
+$lang['dissociate from group'] = 'Separar del grupo';
+$lang['Album updated successfully'] = 'Álbum actualizado con éxito.';
+$lang['photos per page'] = "Fotos por página";
+$lang['High definition enabled'] = 'Alta definición activada';
+$lang['File'] = 'Archivo';
+$lang['first photo added on %s'] = 'primera foto añadida %s';
+$lang['Forbidden'] = 'Prohibido';
+$lang['global mode'] = 'modo global';
+$lang['group "%s" added'] = 'grupo "%s" añadido';
+$lang['group "%s" deleted'] = 'grupo "%s" borrado';
+$lang['group "%s" updated'] = 'grupo "%s" actualizado';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'El nombre del grupo no debe contener "or \' y no puede estar en blanco.';
+$lang['This name is already used by another group.'] = 'Este nombre ya está utilizado por otro grupo.';
+$lang['High definition'] = 'Alta definición';
+$lang['jump to album'] = 'Ir al álbum';
+$lang['jump to photo'] = "Ir a la foto";
+$lang['leave'] = 'dejar';
+$lang['Lock'] = 'Bloquear';
+$lang['Locked'] = 'Bloqueado';
+$lang['manage album photos'] = 'administrar las fotos del álbum';
+$lang['manage sub-albums'] = 'Administrar los sub-álbumes';
+$lang['Manage'] = 'Administrar';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Se sobrepasó el tiempo de ejecución. El tratamiento debe continuar [Tiempo estimado: %d segundos].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'El tiempo requerido para procesar la lista de usuarios a quien enviar emails es limitada. No se han podido procesar todos los usuarios.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'El tiempo de envío de los mails es limitado. Los otros envíos de mails han sido ignorados.';
+$lang['To send ?'] = '¿Enviar?';
+$lang['Last send'] = 'Último envío';
+$lang['User'] = 'Usuario';
+$lang['See you soon,'] = 'Hasta pronto,';
+$lang['Go to'] = 'Ir a ';
+$lang['Hello'] = 'Hola ';
+$lang['New photos were added'] = 'Han sido añadidas nuevas fotos';
+$lang['on'] = 'en ';
+$lang['between'] = 'entre el ';
+$lang['and'] = ' y ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Usted acaba de ser inscrito por el webmaster del sitio para recibir la notificación por mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Te has suscrito para recibir notificaciones por email.';
+$lang['To subscribe'] = 'Para inscribirse';
+$lang['If you encounter problems or have any question, please send a message to'] = 'En caso de problemas o preguntas, enviar un email a ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemas o preguntas';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Usted acaba de ser dado de baja por el webmaster del sitio para recibir la notificación por mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Te has dado de baja para no recibir más notificaciones por email.';
+$lang[', click on'] = ', haga clic sobre ';
+$lang['To unsubscribe'] = 'Para darse de baja';
+$lang['With blank value, gallery title will be used'] = 'El título de la galería se utilizará con un valor en blanco.';
+$lang['Notification'] = 'Notificaciones';
+$lang['Error when sending email to %s [%s].'] = 'Error en el envío del email a %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email enviado a %s [%s].';
+$lang['%d mail was sent.'] = '%s email(s) han sido enviados.';
+$lang['%d mails were sent.'] = '%s mails han sido enviados.';
+$lang['%d mail was not sent.'] = 'El email %s no se ha podido enviar.';
+$lang['%d mails were not sent.'] = '%s emails no han sido enviados.';
+$lang['No mail to send.'] = 'No hay ningún email por enviar.';
+$lang['There is no available subscribers to mail.'] = 'No hay ususario que notificar por mail.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Los usuarios suscritos sólo se listarán (si la opción está habilitada) siempre que hayan nuevos elementos a notificar.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Puede que ningún usuario este inscrito (sólo el webmaster tiene acceso a esta pestaña).';
+$lang['No user to send notifications by mail.'] = 'No hay usuarios a quien enviar notificaciones por email.';
+$lang['New photos added'] = 'Nuevas fotos añadidas';
+$lang['Subscribe to notification by mail'] = 'Suscribirse a las notificaciones por email';
+$lang['Unsubscribe from notification by mail'] = 'Darse de baja de las notificaciones por email';
+$lang['Parameter'] = 'Parámetro';
+$lang['Continue processing treatment'] = 'Continuar el procesamiento';
+$lang['Complementary mail content'] = 'Contenido complementario del mail';
+$lang['Add detailed content'] = 'Añadir contenido detallado';
+$lang['Send mail as'] = 'Enviar email como';
+$lang['Send mail to users'] = 'Notificaciones';
+$lang['Send'] = 'Enviar';
+$lang['Options'] = 'Opciones';
+$lang['Subscribed'] = 'Suscrito';
+$lang['Subscribe'] = 'Suscribirse';
+$lang['Parameters'] = 'Parámetros';
+$lang['Select recipients'] = 'Seleccionar destinatarios';
+$lang['Subscribe/unsubscribe users'] = 'Suscribir/Dar de baja a los ususarios';
+$lang['Unsubscribed'] = 'Darse de baja';
+$lang['%d parameter was updated.'] = '%d parámetro ha sido actualizado.';
+$lang['%d parameters were updated.'] = '%d parámetros han sido actualizados.';
+$lang['%d user was not updated.'] = '%d ususario no ha sido actualizado.';
+$lang['%d users were not updated.'] = '%d ususarios no han sido actualizados.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'El ususario %s [%s] ha sido eliminado de la lista de suscripción.';
+$lang['User %s [%s] was added to the subscription list.'] = 'El ususario %s [%s] ha sido añadido a la lista de suscripción.';
+$lang['%d user was updated.'] = '%d ususario ha sido actualizado.';
+$lang['%d users were updated.'] = '%d ususarios han sido actualizados.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'El ususario %s [%s] no ha sido eliminado de la lista de suscripción.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'El ususario %s [%s] no ha sido añadido a la lista de suscripción.';
+$lang['User %s [%s] added.'] = 'Se ha añadido al usuario %s [%s].';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Aviso: Tanto en suscripciones como en bajas se enviará un correo electrónico a los usuarios afectados.';
+$lang['Send mail on HTML format'] = 'Enviar email en formato HTML';
+$lang['Include display of recent photos grouped by dates'] = "Incluir la visualización de las últimas fotos agrupadas por fechas";
+$lang['Available only with HTML format'] = 'Disponible únicamente en formato HTML';
+$lang['no write access'] = 'ningún acceso en escritura';
+$lang['Permissions'] = 'Permisos';
+$lang['private'] = 'Privacidad';
+$lang['public'] = 'público';
+$lang['Purge never used notification feeds'] = 'Purgar los flujos de notificación jamás utilizados';
+$lang['Purge sessions'] = 'Purgar las sesiones';
+$lang['randomly represented'] = 'Representando al azar';
+$lang['registration date'] = 'Fecha de registro';
+$lang['clean'] = 'limpiar';
+$lang['Create this site'] = 'Crear este sitio';
+$lang['test'] = 'probar';
+$lang['test this remote site'] = 'probar este sitio distante';
+$lang['remove tags'] = 'suprimir las etiquetas';
+$lang['Repair and optimize database'] = 'Reparar y optimizar la base de datos';
+$lang['selection'] = 'Selección';
+$lang['set to'] = 'Cambiarlo';
+$lang['singly represented'] = 'representante fijo';
+$lang['This site already exists'] = 'Este sitio ya existe';
+$lang['created'] = 'creado';
+$lang['delete'] = 'eliminar';
+$lang['delete this site and all its attached elements'] = 'Suprimir este sitio y todas las informaciónes asociadas';
+$lang['an error happened'] = 'Ha habido un error';
+$lang['Local'] = 'Local';
+$lang['Remote'] = 'Remoto';
+$lang['update the database from files'] = 'actualizar la base de datos a partir de los ficheros';
+$lang['status'] = 'Estatuto';
+$lang['Directory'] = 'Directorio';
+$lang['sub-albums'] = 'sub-àlbumes';
+$lang['Synchronize metadata'] = 'Sincronizar los metadatos';
+$lang['target'] = 'blanco';
+$lang['Title'] = 'título';
+$lang['Album list management'] = 'Gestión de la lista de álbumes';
+$lang['Piwigo configuration'] = 'Configuración de Piwigo';
+$lang['Group management'] = 'Gestión de grupos';
+$lang['User list'] = 'Lista de usuarios';
+$lang['Database synchronization with files'] = 'Sincronización de archivos con la base de datos';
+$lang['all'] = 'Todas';
+$lang['height must be a number superior to'] = 'La altura debe ser  un entero superior a';
+$lang['width must be a number superior to'] = 'El ancho debe ser un número superior a';
+$lang['for the file format'] = 'para el formato de archivo';
+$lang['Photo unreachable or no support'] = 'Foto inaccesible o formato no soportado';
+$lang['GD version'] = 'versión de GD';
+$lang['General statistics'] = 'Estadísticas generales';
+$lang['average time'] = 'Tiempo medio';
+$lang['number of miniaturized photos'] = 'número de miniaturas creadas';
+$lang['total time'] = 'el tiempo total';
+$lang['for this file format'] = 'para este formato de archivo';
+$lang['unit mode'] = 'modo unitario';
+$lang['Unlocked'] = 'Desbloqueado';
+$lang['unset'] = 'Vaciar';
+$lang['Update albums informations'] = 'Actualizar la información de los álbumes';
+$lang['Update photos information'] = 'Actualizar las informaciones de las fotos';
+$lang['Synchronize'] = 'Sincronizar';
+$lang['reduce to single existing albums'] = 'Tratar solo un àlbum';
+$lang['Choose an option'] = 'Escoger una opción';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Mostrar toda la información (álbumes añadidos, fotos añadidas, álbumes y fotos borradas)';
+$lang['Error list'] = 'Lista errores';
+$lang['Errors caption'] = 'Leyenda de los errores';
+$lang['Detailed informations'] = 'Información detallada';
+$lang['File/directory read error'] = 'Error de lectura del archivo/directorio';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'No es posible acceder al archivo o al directorio (puede que no exista o el acceso está denegado)';
+$lang['albums deleted in the database'] = 'Álbumes eliminados de la base de datos';
+$lang['photos deleted from the database'] = "fotos suprimidas de la base de datos";
+$lang['photos candidates for metadata synchronization'] = 'Fotos candidatas a la sincronización con los méta-datos';
+$lang['photos informations synchronized with files metadata'] = 'Información de las fotos sincronizadas con los meta-datos';
+$lang['errors during synchronization'] = 'hubo errores durante la sincronización';
+$lang['albums added in the database'] = 'Álbumes añadidos a la base de datos';
+$lang['photos added in the database'] = "fotos añadidas a la base de datos";
+$lang['photos updated in the database'] = "Fotos actualizadas en la base de datos";
+$lang['Search for new images in the directories'] = 'Buscar nuevas imágenes en los directorios';
+$lang['added'] = 'añadido';
+$lang['deleted'] = 'suprimido';
+$lang['Metadata synchronization results'] = 'Resultado de la sincronización de los metadatos';
+$lang['only perform a simulation (no change in database will be made)'] = 'Únicamente simular (ningún cambio en la base de datos será efectuado)';
+$lang['Simulation'] = 'Simulación';
+$lang['directories + files'] = 'directorios + ficheros';
+$lang['only directories'] = 'únicamente directorios';
+$lang['synchronize files structure with database'] = 'sincronizar la estructura de los ficheros con la base de datos';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizar las informaciones de las fotos en la base de datos a partir de los méta-datos de los ficheros';
+$lang['even already synchronized photos'] = 'tambien las fotos ya sincronizadas';
+$lang['Used metadata'] = 'Metadatos utilizados';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'El nombre de los directorios y archivos debe estar compuesto sólo por letras, números, "-", "_" o "."';
+$lang['wrong filename'] = 'nombre de fichero erróneo';
+$lang['Upload'] = 'subir';
+$lang['user "%s" added'] = 'usuario "%s" añadido';
+$lang['User status'] = 'Estado del usuario';
+$lang['user_status_admin'] = 'Administrador';
+$lang['user_status_generic'] = 'Genérico';
+$lang['user_status_guest'] = 'Invitado';
+$lang['user_status_normal'] = 'Visitante';
+$lang['user_status_webmaster'] = 'Webmestre';
+$lang['Virtual album'] = 'Álbum virtual';
+$lang['Waiting'] = 'En espera';
+$lang['default'] = 'predeterminado';
+$lang['Toggle \'default group\' property'] = 'Invertir la propiedad \'grupo por defecto\'';
+$lang['Advanced features'] = 'Funciones avanzadas';
+$lang['Overall'] = 'Información general';
+$lang['Year'] = 'Año';
+$lang['Month'] = 'Mes';
+$lang['Day'] = 'Día';
+$lang['Pages seen'] = 'Páginas visitadas';
+$lang['Time'] = 'Hora';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Elemento';
+$lang['Section'] = 'Sección';
+$lang['An information email was sent to group "%s"'] = 'Un email informativo ha sido enviado a los miembros del grupo "%s"';
+$lang['Send an information email to group members'] = 'Enviar una notificación por email a los miembros de un grupo';
+$lang['Group'] = 'Grupo';
+$lang['[%s] Visit album %s'] = '[%s] Visitar el álbum %s';
+$lang['Hello,'] = 'Hola,';
+$lang['See you soon.'] = 'Hasta pronto.';
+$lang['Discover album:'] = 'Descubrir el álbum:';
+$lang['Mail content'] = 'Contenido del email';
+$lang['none'] = 'Ninguno';
+$lang['high'] = 'alto';
+$lang['other'] = 'Otro';
+$lang['Element type'] = "Tipo de elemento";
+$lang['Image id'] = 'Identificador de la imagen';
+$lang['Summary'] = 'Resumen';
+$lang['%d line filtered'] = '%d línea filtrada';
+$lang['%d lines filtered'] = '%d líneas filtradas';
+$lang['%d guest'] = '%d visitante';
+$lang['%d guests'] = '%d visitantes';
+$lang['Hour'] = 'Hora';
+$lang['guest'] = 'Invitado';
+$lang['default values'] = 'Valores predeterminados';
+$lang['Guest cannot be deleted'] = 'No se puede borrar al invitado';
+$lang['Default user cannot be deleted'] = 'No se puede eliminar el usuario predeterminado';
+$lang['Purge history detail'] = 'Eliminar el historial';
+$lang['Purge history summary'] = 'Eliminar el sumario del historial';
+$lang['Check integrity'] = 'Comprobar integridad';
+$lang['Anomaly'] = 'Anomalía';
+$lang['Correction'] = 'Corrección';
+$lang['Automatic correction'] = 'Corrección automática';
+$lang['Impossible automatic correction'] = 'Corrección automática imposible';
+$lang['Correction applied with success'] = 'Corrección realizada correctamente.';
+$lang['Correction applied with error'] = 'Corrección aplicada con errores';
+$lang['%d anomaly has been detected.'] = '%d anomalía ha sido detectada.';
+$lang['%d anomalies have been detected.'] = '%d anomalías han sido detectadas.';
+$lang['%d anomaly has been corrected.'] = '%d anomalía ha sido corregida.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalías han sido detectadas y corregidas.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalía no pudo ser corregida.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalías no pudieron ser corregidas.';
+$lang['Go to %s or %s for more informations'] = 'Ir a %s o %s para más información';
+$lang['the forum'] = 'El foro';
+$lang['the wiki'] = 'El wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'El valor %s no es correcto porque los datos Exif no están soportados';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s debe establecerse a "false" en su fichero config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'El usuario principal "invitado" no existe.';
+$lang['Main "guest" user status is incorrect'] = 'El estado del usuario principal "invitado" es incorrecto';
+$lang['Default user does not exist'] = 'El usuario predeterminado no existe';
+$lang['Main "webmaster" user does not exist'] = 'El usuario principal "webmaster" no existe';
+$lang['Main "webmaster" user status is incorrect'] = 'El estado del usuario " webmaster " es incorrecto';
+$lang['User "%s" created with "%s" like password'] = 'Se ha creado el usuario"%s" con la contraseña "%s"';
+$lang['Status of user "%s" updated'] = 'Se ha actualizado el estado del usuario "%s"';
+$lang['add new photos to caddie'] = 'añadir nuevas fotos a la cesta';
+// --------- Starting below: New or revised $lang ---- from Butterfly (
+$lang['No display'] = 'Sin visualización';
+$lang['Classic display'] = 'Visualización clásica';
+$lang['Hoverbox display'] = 'Visualización en caja emergente';
+$lang['Mail address is obligatory for all users'] = 'La dirección de email es obligatoria para todos los usuarios';
+$lang['Minimum privacy level'] = 'Nivel mínimo de privacidad';
+$lang['Privacy level'] = 'Nivel de privacidad';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Invitados';
+$lang['Level 2'] = 'Amigos';
+$lang['Level 4'] = 'Familia';
+$lang['Level 8'] = 'Administradores';
+$lang['Reinitialize check integrity'] = 'Reiniciar la comprobación de integridad';
+$lang['Check all'] = 'Seleccionar todo';
+$lang['Uncheck all'] = 'Desmarcar todo';
+$lang['Check automatic corrections'] = 'Comprobar las correcciones automáticas';
+$lang['Apply selected corrections'] = 'Aplicar las correcciones seleccionadas';
+$lang['Ignore selected anomalies'] = 'Ignorar las anomalías seleccionadas';
+$lang['Refresh'] = 'Actualizar';
+$lang['The anomaly will be ignored until next application version'] = 'La anomalía será ignorada hasta la próxima versión de la aplicación';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'La anomalía debe ser corregida y no puede ser ignorada.';
+$lang['%d anomaly has been ignored.'] = '%d anomalía ha sido ignorada.';
+$lang['%d anomalies have been ignored.'] = '%d anomalías han sido ignoradas.';
+$lang['Plugins which need upgrade'] = 'Plugins que necesitan actualizarse';
+$lang['Plugin list'] = 'Lista de plugins';
+$lang['Check for updates'] = 'Comprobar actualizaciones';
+$lang['Other plugins'] = 'Otros plugins';
+$lang['Last revisions'] = 'Últimas revisiones';
+$lang['Are you sure you want to install this plugin?'] = '¿Esta seguro que quiere instalar este plugin?';
+$lang['Are you sure you want to delete this plugin?'] = '¿Esta seguro que quiere eliminar este plugin?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Es importante verificar antes de actualizar si ésta versión no necesita desinstalación previa. ¿Está seguro que quiere instalar esta actualización?';
+$lang['Plugin has been successfully copied'] = 'El plugin ha sido copiado con éxito';
+$lang['You might go to plugin list to install and activate it.'] = 'Debe ir a la lista de plugins instalados y habilitarlo.';
+$lang['Can\'t create temporary file.'] = 'Imposible crear un fichero temporal.';
+$lang['Can\'t download archive.'] = 'Imposible recuperar el archivo.';
+$lang['Can\'t read or extract archive.'] = 'Imposible leer o extraer el archivo.';
+$lang['An error occured during extraction (%s).'] = 'Hubo un error durante la extracción de los archivos (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Por favor, revise los permisos de la carpeta "plugins", así como sus subcarpetas (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Imposible conectarse al servidor.';
+$lang['Purge compiled templates'] = 'Eliminar plantillas compiladas';
+$lang['ACCESS_0'] = 'Acceso libre';
+$lang['ACCESS_1'] = 'Acceso a todos';
+$lang['ACCESS_2'] = 'Acceso a los registrados';
+$lang['ACCESS_3'] = 'Acceso a los administradores';
+$lang['ACCESS_4'] = 'Acceso a los webmasters';
+$lang['ACCESS_5'] = 'Sin acceso';
+$lang['Support'] = 'Ayuda';
+$lang['Documentation'] = 'Documentación';
+$lang['A new version of Piwigo is available.'] = 'Hay una nueva versión disponible.';
+$lang['Piwigo Administration'] = 'Administración de Piwigo';
+$lang['Piwigo version'] = 'Versión de Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Ya se está ejecutando la última versión de Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'La versión de  %s [%s] instalada no es compatible con la versión requerida [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Debe actualizar el sistema para sacar pleno provecho de la aplicación. Hasta que no se actualice, es posible que la aplicación no funcione correctamente.';
+$lang['Deleted on'] = 'Eliminada el ';
+$lang['Last hit'] =  'Último acceso';
+$lang['GD library is missing'] = 'Falta la biblioteca GD';
+$lang['Templates'] = 'Plantillas';
+$lang['Extend for templates'] = 'Extensión de plantillas';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Sustituir las plantillas originales por plantillas personalizadas desde la subcarpeta template-extension';
+$lang['Replacers (customized templates)'] = 'Sustitutos (plantillas modificadas)';
+$lang['Original templates'] = 'Plantilla original';
+$lang['Optional URL keyword'] = 'Palabra clave opcional a la URL';
+$lang['Templates configuration has been recorded.'] = 'La configuración de las plantillas ha sido registrada.';
+$lang['All optimizations have been successfully completed.'] = 'Todas las optimizaciones han sido realizadas con éxito.';
+$lang['Optimizations have been completed with some errors.'] = 'Algunas optimizaciones se completaron con errores.';
+$lang['Modify information'] = 'Modificar la información';
+$lang['nothing'] = 'nada';
+$lang['overrides existing values with empty ones'] = 'Reemplazar los valores existentes con vacíos';
+$lang['Manage photo ranks'] = 'Administrar el orden de aparición';
+$lang['No photo in this album'] = 'Ninguna foto en este álbum';
+$lang['Images manual order was saved'] = 'El orden manual de las imágenes ha sido guardado';
+$lang['ranks'] = 'Filas';
+$lang['Drag to re-order'] = 'Hacer clic y arrastrar para reorganizar';
+$lang['Quick Local Synchronization'] = 'Sincronización Rápida';
+$lang['No photo can be deleted'] = 'Ninguna foto puede ser eliminada';
+$lang['Delete selected photos'] = 'Eliminar las fotos seleccionadas';
+$lang['%d photo was deleted'] = '%d foto eliminada';
+$lang['%d photos were deleted'] = '%d fotos eliminadas';
+$lang['Downloads'] = 'Descargas';
+$lang['Released on'] = 'Lanzamiento';
+$lang['Number of downloads'] = 'Número de descargas';
+$lang['Piwigo Announcements Newsletter'] = 'Boletín informativo Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Manténgase informado acerca del proyecto Piwigo. Suscríbase al boletín de noticias. Recibirá un e-mail cuando una nueva versión esté disponible (a veces un bug de seguridad es corregido, es importante estar al tanto) o que un acontecimiento superior ocurra sobre el proyecto. Solamente serán algunos mensajes al año.';
+$lang['Subscribe %s'] = 'Suscribir %s ';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Suscribir %s al boletín de noticias <i>Piwigo Newsletter</i>';
+$lang['Purge search history'] = 'Purgar el historico de búsquedas';
+$lang['Hide'] = 'Ocultar';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Se sobrepasó el tiempo de ejecución. El procesamiento debe continuar [Tiempo estimado: %d segundos].';
+$lang['Operation in progress'] = 'Operación en progreso.';
+$lang['Please wait...'] = 'Por favor, espere...';
+$lang['Password is missing. Please enter the password.'] = 'Falta la contraseña. Por favor, introdúzcala.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'La contraseña no ha sido confirmada. Por favor, confirme la contraseña elegida.';
+$lang['Allow users to edit their own comments'] = 'Autorizar a los usuarios a editar sus propios comentarios';
+$lang['Allow users to delete their own comments'] = 'Autorizar a los usuarios a eliminar sus propios comentarios';
+$lang['Email administrators when a comment is modified'] = 'Notificar a los administradores cuando se modifique un comentario';
+$lang['Email administrators when a comment is deleted'] = 'Notificar a los administradores cuando se elimine un comentario';
+$lang['Cannot delete the old permalink !'] = '¡Imposible eliminar este enlace permanente!';
+$lang['Hit'] = 'Acceso';
+$lang['Tools'] = 'Herramientas';
+$lang['Photos'] = 'Fotos';
+$lang['Themes'] = 'Temas';
+$lang['Instructions to use Piwigo'] = 'Instrucciones de uso de Piwigo';
+$lang['Installed Themes'] = 'Gestionar temas';
+$lang['Add New Theme'] = 'Añadir nuevo tema';
+$lang['Forbid this theme to users'] = 'Prohibir este tema a los usuarios';
+$lang['Set as default theme for unregistered and new users'] = 'Establecer como tema predeterminado para visitantes no registrados y para nuevos usuarios';
+$lang['unknown'] = 'desconocido';
+$lang['Upload Photos'] = 'Añadir fotos';
+$lang['Drop into album'] = 'Seleccionar álbum';
+$lang['+ Add an upload box'] = '+ Añadir campo de subida';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crear el directorio "%s" en la raíz de su instalación Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Concede permisos de escritura (chmod 777) al directorio "%s" en la raíz de su instalación Piwigo';
+$lang['existing album'] = 'Álbum existente';
+$lang['create a new album'] = 'Añadir un nuevo álbum';
+$lang['Album name'] = 'Nombre del álbum';
+$lang['Album "%s" has been added'] = 'Se ha añadido el álbum "%s"';
+$lang['Uploaded Photos'] = 'Fotos añadidas';
+$lang['%d photos uploaded'] = '%d fotos añadidas';
+$lang['Privacy level set to "%s"'] = 'Nivel de confidencialidad "%s"';
+$lang['Album "%s" now contains %d photos'] = 'El álbum "%s" ahora contiene %d fotos';
+$lang['Manage this set of %d photos'] = 'Administrar este lote de %d fotos';
+$lang['Select files'] = 'Seleccionar archivos';
+$lang['Everybody'] = 'Todo el mundo';
+$lang['Who can see these photos?'] = 'Compartir';
+$lang['Settings'] = 'Configuración';
+$lang['Resize'] = 'Redimensionar';
+$lang['Maximum width'] = 'Anchura máxima';
+$lang['pixels'] = 'Píxeles';
+$lang['Maximum height'] = 'Altura máxima';
+$lang['Image Quality'] = 'Calidad de la foto';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Save Settings'] = 'Guardar ajustes';
+$lang['Your configuration settings are saved'] = 'Las modificaciones han sido guardadas correctamente';
+$lang['Active Themes'] = 'Temas activados';
+$lang['Add write access to the "%s" directory'] = 'Permitir escritura en la carpeta "%s"';
+$lang['Administration Home'] = 'Administración';
+$lang['Change Admin Colors'] = 'Intercambiar colores';
+$lang['Delete this theme'] = 'Eliminar este tema';
+$lang['Directory does not exist'] = 'El directorio no existe';
+$lang['Download,'] = 'Descargar,';
+$lang['FTP + Synchronization'] = 'FTP + Sincronización';
+$lang['Get Support on Piwigo Forum'] = 'Obtener soporte en el foro de Piwigo';
+$lang['Help Me'] = 'Ayuda';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Imposible activar el tema, falta el archivo %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema no puede ser eliminado porque hay otros temas que dependen de él: %s';
+$lang['Inactive Themes'] = 'Temas desactivados';
+$lang['Install on your computer,'] = 'Instalar en tu ordenador,';
+$lang['Make this theme available to users'] = 'Permitir este tema a los usuarios';
+$lang['Page end'] = 'Fin de la página';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = 'Leer la documentación Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Iniciar pLoader y añadir fotos.';
+$lang['Switch to clear or dark colors for administration'] = 'Contrasta escogiendo colores claros o oscuros para la sección de administración';
+$lang['Theme has been successfully installed'] = 'El tema ha sido instalado con éxito';
+$lang['Visit Gallery'] = 'Volver a la galería';
+$lang['Visit Piwigo project website'] = 'Visitar el sitio web del proyecto Piwigo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa <em>Piwigo Uploader</em>. Desde su ordenador, prepare sus fotos con pLoader y transfiéralas a su galería fotográfica Piwigo.';
+$lang['Guest Settings'] = 'Ajustes de los invitados';
+$lang['Main Page'] = 'Página principal';
+$lang['Photo Page'] = 'Página de la foto';
+$lang['Activate Navigation Bar'] = 'Activar barra de navegación';
+$lang['Activate Navigation Thumbnails'] = 'Activar flechas de navegación';
+$lang['Activate icon "%s"'] = 'Activar el icono "%s"';
+$lang['Photo Properties'] = 'Propiedades de la foto';
+$lang['Allow user customization'] = 'Permitir la personalización de la galería por el usuario';
+$lang['Languages'] = 'Idiomas';
+$lang['Installed Languages'] = 'Gestionar idiomas';
+$lang['Add New Language'] = 'Añadir nuevo idioma';
+$lang['Language has been successfully installed'] = 'El idioma se ha instalado con éxito';
+$lang['Select:'] = 'Seleccionar:';
+$lang['None'] = 'Ninguna';
+$lang['Invert'] = 'Invertir selección';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Imposible desactivar este tema, debe quedar por lo menos un tema activado.';
+$lang['Webmaster status is required.'] = 'Esta acción sólo la puede llevar a cabo un "webmaster".';
+$lang['Bound Theme'] = 'Tema personalizado';
+$lang['Allow rating'] = 'Permitir valoraciones';
+$lang['Select at least one comment'] = 'Seleccionar al menos un comentario';
+$lang['Active Plugins'] = 'Plugins activados';
+$lang['Inactive Plugins'] = 'Plugins desactivados';
+$lang['Missing Plugins'] = 'Plugins que faltan';
+$lang['Uninstalled Plugins'] = 'Plugins no instalados';
+$lang['By %s'] = 'Desarrollado por %s';
+$lang['Visit plugin site'] = 'Visitar el sitio web del plugin';
+$lang['Active Languages'] = 'Idiomas activados';
+$lang['Delete this language'] = 'Eliminar este idioma';
+$lang['Forbid this language to users'] = 'Prohibir este idioma a los usuarios';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Imposible desactivar este idioma, debe definir otro idioma por defecto primero.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Imposible desactivar este idioma, se necesita al menos un idioma.';
+$lang['Inactive Languages'] = 'Idiomas desactivados';
+$lang['Make this language available to users'] = 'Permitir este idioma a los usuarios';
+$lang['Set as default language for unregistered and new users'] = 'Idioma predeterminado para los invitados y los nuevos usuarios';
+$lang['Miscellaneous'] = 'Más información';
+$lang['Virtual Links'] = 'Enlaces virtuales';
+$lang['Add Photos'] = 'Añadir fotos';
+$lang['The following tag was deleted'] = 'La siguiente etiqueta ha sido eliminada';
+$lang['There is no other language available.'] = 'No hay otro idioma disponible';
+$lang['There is no other plugin available.'] = 'No hay otro plugin disponible';
+$lang['There is no other theme available.'] = 'No hay otro thema disponible';
+$lang['By rank'] = 'Por valoración';
+$lang['Manual order'] = 'Orden personalizado';
+$lang['Add another set of photos'] = 'Añadir otro conjunto de fotos';
+$lang['Order of menubar items has been updated successfully.'] = 'El orden de los elementos del menú ha sido actualizado con éxito.';
+$lang['This theme was not designed to be directly activated'] = 'Este tema no fue diseñado para ser activado directamente';
+$lang['Who can see this photo?'] = 'Compartir';
+$lang['Pending Comments'] = 'Comentarios en espera de validación';
+$lang['Menu Management'] = 'Administrar menús';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'En el archivo php.ini, la variable upload_max_filesize (%sB) es mayor que post_max_size (%sB). Debe cambiar esta configuración';
+$lang['Exif extension not available, admin should disable exif use'] = 'La extensión Exif no esta disponible. Un administrador debería deshabilitar el uso de metadatos Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'El peso del archivo subido excede el valor de upload_max_filesize en el archivo php.ini: sB%';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'El peso total de los archivos transferidos excede el valor de post_max_size en su archivo php.ini: sB%';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'El peso del archivo subido excede el MAX_FILE_SIZE definido en el formulario HTML';
+$lang['The uploaded file was only partially uploaded'] = 'El archivo fue sólo parcialmente subido';
+$lang['No file was uploaded'] = 'No se ha subido ningún archivo';
+$lang['Missing a temporary folder'] = 'No se encuentra el directorio temporal';
+$lang['Failed to write file to disk'] = 'No se pudo escribir el archivo en el servidor';
+$lang['File upload stopped by extension'] = 'La transferencia de archivos fue detenida por una extensión';
+$lang['Unknown upload error'] = 'Error desconocido durante la transferencia';
+$lang['Error on file "%s" : %s'] = 'Error en el archivo "%s": %s';
+$lang['automatic order'] = 'Orden automático';
+$lang['manual order'] = 'orden manual';
+$lang['Albums automatically sorted'] = 'Álbums clasificados correctamente';
+$lang['Batch Manager'] = 'Gestión de lotes';
+$lang['include child albums'] = 'Incluir los sub-álbumes';
+$lang['Selection'] = 'Selección';
+$lang['Action'] = 'Acción';
+$lang['Set author'] = 'Establecer autor';
+$lang['Set title'] = 'Establecer el titulo';
+$lang['Set creation date'] = 'Establecer la fecha de creación';
+$lang['Apply action'] = 'Aplicar acción';
+$lang['on the %d selected photos'] = 'en las %d fotos seleccionadas';
+$lang['%d of %d photos selected'] = 'Fotos seleccionadas: %d de %d';
+$lang['No photo selected, %d photos in current set'] = 'Ninguna foto seleccionada entre las %d fotos del lote';
+$lang['All %d photos are selected'] = 'Todas las %d fotos del lote han sido seleccionadas';
+$lang['remove this filter'] = 'eliminar este filtro';
+$lang['Duplicates'] = 'Duplicados';
+$lang['Add a filter'] = 'Añadir filtro';
+$lang['Remove all filters'] = 'Eliminar todos los filtros';
+$lang['Refresh photo set'] = 'Actualizar el lote de fotos';
+$lang['The whole page'] = 'Página entera';
+$lang['The whole set'] = 'La totalidad del lote';
+$lang['No photo in the current set.'] = 'No hay fotos en este lote.';
+$lang['No photo selected, no action possible.'] = 'Selecciona al menos una foto para ejecutar cualquier acción.';
+$lang['Choose an action'] = 'Seleccionar una acción';
+$lang['remove author'] = 'eliminar el autor';
+$lang['Type here the author name'] = 'Escriba el nombre del autor';
+$lang['remove title'] = 'eliminar el título';
+$lang['Type here the title'] = 'Introduzca el título aquí';
+$lang['remove creation date'] = 'eliminar la fecha de creación';
+$lang['Album photos associated to the following albums: %s'] = 'Las fotos del álbum han sido asociadas con los álbumes siguientes: %s';
+$lang['Delete orphan tags'] = 'Eliminar etiquetas huérfanas ';
+$lang['delete photo'] = 'Eliminar la foto';
+$lang['Orphan tags deleted'] = 'Etiquetas huérfanas eliminadas';
+$lang['Week starts on'] = 'La semana empieza en';
+$lang['You have %d orphan tags: %s.'] = 'Tiene %d etiquetas huérfanas: %s.';
+$lang['Remove from caddie'] = 'Eliminar de la cesta';
+$lang['Themes which need upgrade'] = 'Temas por actualizar';
+$lang['Languages which need upgrade'] = 'Idiomas por actualizar';
+$lang['All themes are up to date.'] = 'Todos los temas están actualizados.';
+$lang['All plugins are up to date.'] = 'Todos los plugins están actualizados.';
+$lang['All languages are up to date.'] = 'Todos los idiomas están actualizados.';
+$lang['Visit theme site'] = 'Visitar el sitio web del tema';
+$lang['Visit language site'] = 'Visita el sitio web del idioma';
+$lang['New Version'] = 'Nueva versión';
+$lang['Obsolete Plugins'] = 'Plugins obsoletos';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '¡ADVERTENCIA! Este plugin no parece ser compatible con esta versión de Piwigo.';
+$lang['Do you want to activate anyway?'] = '¿Quiere activarlo de todos modos?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTE PLUGIN ES AHORA PARTE DEL NÚCLEO DE PIWIGO! PUEDE DESINSTÁLALO AHORA! ';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: Falta este plugin aunque indique que está instalado. ¡DESINSTÁLALO!';
+$lang['Thumbnails generation in progress...'] = 'Generación de las miniaturas en curso...';
+$lang['Photos generation in progress...'] = 'Generación de fotos en curso...';
+$lang['%s photos have been regenerated'] = '%s fotos fueron regeneradas.';
+$lang['%s photos can not be regenerated'] = '%s fotos no pueden ser regeneradas';
+$lang['display'] = 'Visualizar';
+$lang['Type in a search term'] = 'Introduce un término de búsqueda';
+$lang['new'] = 'nuevo';
+$lang['No results'] = 'Sin resultados';
+$lang['Searching...'] = 'Buscando...';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activar el icono "nuevo" al lado de álbumes y fotos';
+$lang['Add a criteria'] = 'Añadir criterio';
+$lang['Deactivate all'] = 'Desactivar todo';
+$lang['Default photos order'] = 'Orden de las fotos por defecto';
+$lang['Restore'] = 'Restaurar';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restablecer la configuración por defecto. Se perderán todos los ajustes personalizados.';
+$lang['Show menubar'] = 'Mostrar barra de menú';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'No se puede definir un orden predeterminado para las fotos porque está establecida una configuración personalizada en la configuración local de la aplicación.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Ha especificado <i>$conf[\'order_by\']</ i> en tu archivo de configuración local. Este parámetro esta obsoleto. Elimínalo o cámbiale el nombre a <i>$conf[\'order_by_custom\']</i>';
+$lang['Updates'] = 'Actualizaciones';
+$lang['Update in progress... Please wait.'] = 'Actualización en curso ... por favor espere.';
+$lang['Ignore this update'] = 'Ignorar esta actualización';
+$lang['Reset ignored updates'] = 'Restablecer actualizaciones ignoradas';
+$lang['Update All'] = 'Actualizar todo';
+$lang['ERROR'] = 'ERROR';
+$lang['Update Complete'] = 'Actualización completada';
+$lang['Piwigo Update'] = 'Actualizar Piwigo';
+$lang['Extensions Update'] = 'Actualizar extensiones';
+$lang['All extensions are up to date.'] = 'Todas las extensiones están actualizadas.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Los siguientes plugins pueden no ser compatibles con la nueva versión de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Los siguientes temas pueden no ser compatibles con la nueva versión de Piwigo:';
+$lang['I decide to update anyway'] = 'Decido actualizar de todos modos';
+$lang['Update to Piwigo %s'] = 'actualización a Piwigo %s';
+$lang['Two updates are available'] = 'Dos actualizaciones están disponibles';
+$lang['This is a minor update, with only bug corrections.'] = 'Esta es una actualización menor, con sólo correcciones de errores.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Esta es una actualización importante, con <a href="%s">nuevas características emocionantes</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Algunos de los temas y plugins pueden aún no estar disponibles.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Puedes actualizar a Piwigo %s directamente, sin necesidad de actualizar a Piwigo %s (recomendado).';
+$lang['Save Template Directory'] = 'Guardar directorio de plantillas';
+$lang['Dump Database'] = 'Volcar la base de datos';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluir los datos del historial (Advertencia: el límite de memoria del servidor puede ser superado)';
+$lang['Unable to dump database.'] = 'No es posible vaciar la base de datos.';
+$lang['Some upgrades are available for extensions.'] = 'Hay actualizaciones disponibles para algunas extensiones.';
+$lang['Ignore All'] = 'Ignorar todo';
+$lang['Crop'] = 'Redimensionar ';
+$lang['Width'] = 'Anchura';
+$lang['Height'] = 'Altura';
+$lang['Follow Orientation'] = 'Siguen la orientación';
+$lang['Graphics Library'] = 'Librería gráfica';
+$lang['Learn more'] = 'Más información';
+$lang['Rate'] = 'Valoración';
+$lang['Average rate'] = 'Clasificación';
+$lang['... or '] = '... o ';
+$lang['Create'] = 'Crear';
+$lang['Start Upload'] = 'Iniciar transferencia';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Utilizar el <a href="%s">formulario HTML</a> para subir fotos al servidor.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Utilizar el <a href="%s">formulario FLASH</a> para subir fotos al servidor.';
+$lang['Maximum file size: %sB.'] = 'Tamaño máximo de los archivos : %sB.';
+$lang['Allowed file types: %s.'] = 'Extensiones permitidas: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolución máxima aproximada: %dM pixeles (o sea %dx%d píxeles).';
+$lang['Manage Permissions'] = 'Administrar permisos';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['show details'] = 'Mostrar detalles';
+$lang['hide details'] = 'ocultar los detalles';
+$lang['Merge tags'] = 'Fusionar etiquetas';
+$lang['Select the destination tag'] = 'Selecciona la etiqueta de destino';
+$lang['(this tag will be deleted)'] = '(esta etiqueta se eliminará)';
+$lang['Confirm merge'] = 'Confirman la fusión';
+$lang['Merge selected tags'] = 'Fusionar';
+$lang['No destination tag selected'] = 'No ha seleccionado ninguna etiqueta de destino';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Las etiquetas <em>%s</em> han sido fusionadas con la etiqueta <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Seleccionar al menos dos etiquetas para la fusión';
+$lang['Select an album'] = 'Seleccionar un álbum';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por defecto, Piwigo creara un nuevo tamaño para la web, procedente de las fotos en alta resolución';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si no está disponible en alta definición (HD) y el tamaño actual es mayor que las dimensiones del cambio de medida, se considerará \'alta definición\' pese a que finalmente deberá reducirse el tamaño de la foto.';
+$lang['An error has occured during upgrade.'] = 'Hubo un error durante el proceso de actualización.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Imposible extraer los archivos. Por favor, verifique los permisos de los archivos de su instalación. <Br> <a href="%s"> Haga clic aquí para ver el informe de errores</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo no puede recuperar el archivo de actualización desde el servidor';
+$lang['Zoom'] = 'Ampliar';
+$lang['%s has been successfully updated.'] = '%s ha actualizado correctamente.';
+$lang['Add tags'] = 'Añadir etiquetas';
+$lang['Add to caddie'] = 'Añadir al carrito';
+$lang['Last import'] = 'Última importación';
+$lang['Predefined filter'] = 'Filtro predefinido';
+$lang['With no album'] = 'Sin álbumes';
+$lang['With no tag'] = 'Sin etiquetas';
+$lang['With no virtual album'] = 'Sin álbum virtual';
+$lang['Activate comments'] = 'Activar comentarios';
+$lang['Default comments order'] = 'Orden de los comentarios por defecto';
+$lang['Edit selected tags'] = 'Editar';
+$lang['Edit tags'] = 'Editar etiquetas';
+$lang['Original Size'] = 'Tamaño original';
+$lang['Photo name'] = 'Nombre de la foto';
+$lang['Resize after upload'] = 'Redimensionar después de subir la foto al servidor';
+$lang['Send connection settings by email'] = 'Enviar credenciales por email';
+$lang['The original image quality must be a number between %d and %d'] = 'La calidad de la foto original ha de ser un número entre %d y %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'La altura máxima de la foto original ha de ser un número entre %d y %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'La anchura máxima de la foto original ha de ser un número entre %d y %d';
+$lang['A locked gallery is only visible to administrators'] = 'Una galería bloqueada sólo es visible por los administradores';
+$lang['administrators'] = 'administradores';
+$lang['Gallery unlocked'] = 'Galería desbloqueada';
+$lang['modified'] = 'modifcado';
+$lang['Notify administrators when a comment is'] = 'Notificar a los administradores cuando un comentario sea';
+$lang['pending validation'] = 'validación pendiente';
+$lang['registered users'] = 'usuarios registrados';
+$lang['Save visits in history for'] = 'Guardar visitas en el historial por';
+$lang['simple visitors'] = 'visitantes simples';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Este álbum contiene %d fotos, añadidas entre %s y %s';
+$lang['This album contains %d photos, added on %s.'] = 'Este álbum contiene %d fotos, añadidas el %s';
+$lang['This album contains no photo.'] = 'Este álbum no contiene ninguna foto';
+$lang['Unlock gallery'] = 'Desbloquear galería';
+$lang['Applications'] = 'Aplicaciones';
+$lang['apply automatic sort order'] = 'Ordenar automáticamente';
+$lang['Automatic sort order'] = 'Orden automático';
+$lang['cancel manual order'] = 'Cancelar orden manual';
+$lang['Cancel'] = 'Cancelar';
+$lang['Center of interest'] = 'Centro de interés';
+$lang['Edit album permissions'] = 'Editar permisos de un álbum';
+$lang['Edit album'] = 'Editar álbum';
+$lang['Edit photo information'] = 'Editar información de la foto';
+$lang['List'] = 'Lista';
+$lang['Move to album'] = 'Mover al álbum';
+$lang['Not cropped correctly?'] = '¿No se ha recortado correctamente?';
+$lang['Save manual order'] = 'Guardar orden manual';
+$lang['Web Form'] = 'Formulario web';
+$lang['You can activate only one mobile theme.'] = 'Sólo se puede activar un tema para dispositivos móviles.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'La aplicación <em>Piwigo para Android</em> te permite conectarte a tu galería Piwigo desde tu teléfono o tablet Android, crear álbumes y subir varias fotos a la vez.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Las aplicación <em>Piwigo para iOS</em> te permite conectarte a tu galería Piwigo desde tu iPhone, iPad o iPod Touch, crear álbumes y subir varias fotos a la vez.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Lightroom es un software fotográfico diseñado para administrar grandes cantidades de imágenes y realizar el procesado de las mismas.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture es una potente herramienta para editar imágenes y administrar grandes colecciones en Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture está diseñada para fotógrafos profesionales con la simplicidad de iPhoto.';
+$lang['Available on'] = 'Disponible en';
+$lang['Available versions for'] = 'Versión disponible para';
+$lang['Delete multiple size images'] = 'Eliminar imágenes con múltiples tamaños';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam es un avanzado gestor de fotos gratuito para Linux, Windows y MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam está diseñado para fotógrafos que quieren ver, administrar, editar, mejorar, organizar, etiquetar y compartir sus fotos.';
+$lang['Edit ranks'] = 'Editar puntuaciones';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Las características que incluye son navegación, creación de álbumes y subida de fotos.';
+$lang['Generate multiple size images'] = 'Generar múltiples tamaños de imagen.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto es el gestor por defecto de fotos para MacOSX. El plugin para exportar de Piwigo permite crear nuevos álbums y exportar directamente las fotos desde iPhoto a tu galería Piwigo.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Para Linux, simplemente instala Shotwell con el gestor de paquetes y activa la opción de publicación en Piwigo.';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin de Piwigo para Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin de Piwigo para iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo para Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin de Piwigo para digiKam';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publicación de Piwigo para Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de Piwigo para Shotwell';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (cliente RemoteGallery para Android) es un software cliente de Piwigo de código abierto (GPL v3) para la plataforma Android.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell es un software de código abierto para Linux que sirve para organizar colecciones de fotos. Es el software fotográfico por defecto en Ubuntu y Fedora.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'El plugin Piwigo Export permite crear álbumes y exportar fotos.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'El plugin de Piwigo Publish te permite exportar y sincronizar fotos de Lightroom directamente con tu galería fotográfica.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar tus fotos desde digiKam a Piwigo, simplemente instala digiKam y los Kipi-plugins.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '&u usuarios tienen permiso automáticamente por pertenecer a grupos.';
+$lang['any visitor can see this album'] = 'cualquier visitante puede ver este álbum';
+$lang['Groups and users'] = 'Grupos y usuarios';
+$lang['Permission granted for groups'] = 'Permisos para grupos';
+$lang['Permission granted for users'] = 'Se concenden permisos a los usuarios';
+$lang['Select groups...'] = 'Seleccionar grupos';
+$lang['Select users...'] = 'Seleccionar usuarios...';
+$lang['There is no group in this gallery.'] = 'No hay grupos en esta galería';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'los visitantes necesitan iniciar sesión y tener permiso para ver este álbum';
+$lang['add a new watermark'] = 'Añadir una nueva marca de agua';
+$lang['Apply watermark if height is bigger than'] = 'Aplicar marca de agua si la altura es mayor de';
+$lang['Apply watermark if width is bigger than'] = 'Aplicar marca de agua si la anchura es mayor de';
+$lang['bottom left corner'] = 'Esquina inferior izquierda';
+$lang['bottom right corner'] = 'Esquina inferior derecha';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por defecto, el centro de interés está situado en el centro de la foto.';
+$lang['custom'] = 'Personalizar';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamaños de fotos con recorte, como "Cuadrado", Piwigo hará lo posible para incluir el centro de interés.';
+$lang['include photos with lower privacy level'] = 'incluir fotos con un nivel de privacidad más bajo';
+$lang['middle'] = 'Centro';
+$lang['No group is permitted to see this private album'] = 'Ningún grupo tiene permisos para ver un álbum privado';
+$lang['Opacity'] = 'Opacidad';
+$lang['Permission management'] = 'Administración de permisos';
+$lang['Photo sizes with crop'] = 'Tamaño de las fotos con el recorte.';
+$lang['Select a file'] = 'Seleccionar archivo';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleccionar una zona con el ratón para definir un nuevo centro de interés.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'El centro de interés es la zona más significativa de la foto.';
+$lang['top left corner'] = 'Esquina superior izquierda';
+$lang['top right corner'] = 'Esquina superior derecha';
+$lang['X Position'] = 'Posición X';
+$lang['X Repeat'] = 'Repetir X';
+$lang['Y Position'] = 'Posición Y';
+$lang['Multiple Size'] = 'Tamaños múltiples';
+$lang['%d day'] = '%d día';
+$lang['%d days'] = '%d días';
+$lang['%d hour'] = '%d hora';
+$lang['%d hours'] = '%d horas';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minutos';
+$lang['%d month'] = '%d mes';
+$lang['%d months'] = '%d meses';
+$lang['%d second'] = '%d segundo';
+$lang['%d seconds'] = '%d segundos';
+$lang['%d year'] = '%d año';
+$lang['%d years'] = '%d años';
+$lang['%s ago'] = 'hace %s';
+$lang['%s in the future'] = '%s en el futuro';
+$lang['Added by %s'] = 'Añadida por %s';
+$lang['Numeric identifier : %d'] = 'Identificador numérico: %d';
+$lang['Original file : %s'] = 'Archivo original: %s';
+$lang['Posted %s on %s'] = 'Publicado %s, el %s';
+$lang['Rated %d times, score : %.2f'] = 'Valorada %d veces. Puntuación: %.2f';
+$lang['Sharpen'] = 'Enfoque';
+$lang['Visited %d times'] = 'Visitada %d veces';
+$lang['Watermark'] = 'Marca de agua';
+$lang['%d week'] = '%d semana';
+$lang['%d weeks'] = '%d semanas';
+$lang['Edit photo'] = 'Editar foto';
+$lang['create a new site'] = 'Crear un nuevo sitio';
+$lang['No order field selected'] = 'Ningún orden seleccionado';
+$lang['Duplicate selected tags'] = 'Borrar etiquetas duplicadas';
+$lang['Name of the duplicate'] = 'Nombre de los duplicados';
+$lang['Source tag'] = 'Origen de las etiquetas';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'La etiqueta "%s" es ahora un duplicado de "%s"';
+$lang['Landscape'] = 'Paisaje';
+$lang['Minimum height'] = 'Altura minima';
+$lang['Minimum width'] = 'Anchura minima';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Retrato';
+$lang['Manage photos'] = 'Administrar fotos';
+$lang['View in gallery'] = 'Ver en galería';
+$lang['Number of albums per page'] = 'Numero de álbumes por paginas';
+$lang['Ratio'] = 'Proporción';
+$lang['between %.2f and %.2f'] = 'entre %.2f y %.2f';
+$lang['between %d and %d pixels'] = 'entre %d y %d pixels';
+$lang['Duplicate'] = 'Duplicar';
+$lang['Manage the members'] = 'Gestionar los miembros';
+$lang['Merge selected groups'] = 'Combinar grupos seleccionados';
+$lang['No group selected, no action possible.'] = 'Ningún grupo seleccionado, no hay acción posible.';
+$lang['No members to manage'] = 'Ningún miembro para gestionar';
+$lang['Please select at least two groups'] = 'Por favor, seleccione por lo menos dos grupos';
+$lang['Rename'] = 'Renombrar';
+$lang['This group will be set to default'] = 'Este grupo se usa de forma predeterminado';
+$lang['This group will be unset to default'] = 'Este grupo ya no se utiliza por defecto';
+$lang['Type here the name of the new group'] = 'Escriba aquí el nombre del nuevo grupo';
+
+$lang['Purge user cache'] = 'Limpiar cache de usuario';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Las dimensiones de la imagen se reducirá a %dx%d píxeles.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionado después de la carga al servidor debido a la utilización de GD como librería gráfica.';
+$lang['Select at least one tag'] = 'Selecciona al menos una etiqueta';
+$lang['Basic settings'] = 'Configuración básica';
+$lang['General'] = 'General';
+$lang['Mail theme'] = 'tema de correo';
+$lang['%d of %d users selected'] = '%d de %d usuarios seleccionados';
+$lang['(filtered from %s total users)'] = '(filtrado de un total de %s usuarios';
+$lang['All %d users are selected'] = 'Los %d usuarios están seleccionados';
+$lang['Change password'] = 'Cambiar contraseñas';
+$lang['Change username'] = 'Cambiar nombre de usuarios';
+$lang['Last visit on %s, %s.'] = 'Ultima visita el %s, %s';
+$lang['Loading...'] = 'Cargando...';
+$lang['No matching user found'] = 'Ningún miembro coincidentes encontrados';
+$lang['No user selected of %d users'] = 'Ninguno de los %d usuarios seleccionados';
+$lang['No user selected, no action possible.'] = 'Ningún usuario seleccionado, ninguna acción posible. ';
+$lang['Password updated'] = 'Contraseña actualizado';
+$lang['Registered on %s, %s.'] = 'Registrado el %s, %s';
+$lang['Show %s users'] = 'Mostrar %s usuarios';
+$lang['Showing %s to %s of %s users'] = 'Mostrar de %s hasta %s de los %s usuarios';
+$lang['Update user'] = 'Actualizar usuario';
+$lang['User %s added'] = 'Usuario %s añadido';
+$lang['User %s updated'] = 'Usuario %s actualizado';
+$lang['Users modified'] = 'Usuarios modificados';
+$lang['on the %d selected users'] = 'en los %d usuarios seleccionados';
+?>
Index: /tags/2.6.0RC1/language/es_ES/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/common.lang.php	(revision 25596)
@@ -0,0 +1,430 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Español [ES]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=169
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Español';
+$lang_info['country'] = 'España';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'es';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d álbum actualizado';
+$lang['%d albums updated'] = '%d álbumes actualizados';
+$lang['%d comment to validate'] = '%d comentario por validar';
+$lang['%d comments to validate'] = '%d comentarios por validar';
+$lang['%d new comment'] = '%d nuevo comentario';
+$lang['%d new comments'] = '%d nuevos comentarios';
+$lang['%d comment'] = '%d comentario';
+$lang['%d comments'] = '%d comentarios';
+$lang['%d hit'] = '%d visita';
+$lang['%d hits'] = '%d visitas';
+$lang['%d new photo'] = '%d nueva foto';
+$lang['%d new photos'] = '%d nuevas fotos';
+$lang['%d new user'] = '%d nuevo usuario';
+$lang['%d new users'] = '%d nuevos usuarios';
+$lang['About'] = 'Acerca de';
+$lang['All tags'] = 'Todas las etiquetas';
+$lang['Any tag'] = 'Cualquier etiqueta';
+$lang['At least one listed rule must be satisfied.'] = 'Al menos debe satisfacer un critero de la lista';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Álbumes';
+$lang['Album'] = 'Álbum';
+$lang['Close this window'] = 'Cerrar ventana';
+$lang['Complete RSS feed (photos, comments)'] = 'Canal RSS completo (fotos y comentarios)';
+$lang['Confirm Password'] = 'Confirmar contraseña';
+$lang['Connection settings'] = 'Parámetros de conexión';
+$lang['Login'] = 'Identificarse';
+$lang['Contact webmaster'] = 'Contactar con el webmaster';
+$lang['Create a new account'] = 'Crear una cuenta nueva';
+$lang['Created on'] = 'Creada el';
+$lang['Creation date'] = 'Fecha de creación';
+$lang['Current password is wrong'] = 'La contraseña actual es incorrecta';
+$lang['Dimensions'] = 'Dimensiones';
+$lang['Display'] = 'Visualizar';
+$lang['Each listed rule must be satisfied.'] = 'Debe cumplimentar cada regla listada';
+$lang['Email address is missing. Please specify an email address.'] = 'Falta su dirección de correo electrónico. Por favor, introdúzcala.';
+$lang['Email address'] = 'Correo electrónico';
+$lang['Enter your personnal informations'] = 'Introduzca su información personal';
+$lang['Error sending email'] = 'Error enviando el correo electrónico';
+$lang['File name'] = 'Nombre de archivo';
+$lang['File'] = 'Archivo';
+$lang['Filesize'] = 'Tamaño';
+$lang['Filter and display'] = 'Aplicar filtro';
+$lang['Filter'] = 'Filtrar';
+$lang['Forgot your password?'] = '¿Ha olvidado su contraseña?';
+$lang['Go through the gallery as a visitor'] = 'Entrar a la galería como visitante';
+$lang['Help'] = 'Ayuda';
+$lang['Identification'] = 'Autenticación';
+$lang['Photos only RSS feed'] = 'Canal RSS sólo para fotos';
+$lang['Keyword'] = 'Palabra clave';
+$lang['Links'] = 'Enlaces';
+$lang['N/A'] = 'no disponible';
+$lang['New on %s'] = 'Nuevo el %s';
+$lang['Notification'] = 'RSS';
+$lang['Number of items'] = 'Número de elementos';
+$lang['Original dimensions'] = 'Dimensiones originales';
+$lang['Password forgotten'] = 'Recordar credenciales de inicio de sesión';
+$lang['Password'] = 'Contraseña';
+$lang['Post date'] = 'Fecha de publicación';
+$lang['Posted on'] = 'Publicada el';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'Conexión rápida';
+$lang['RSS feed'] = 'Canal RSS';
+$lang['Register'] = 'Regístrarse';
+$lang['Registration'] = 'Registro';
+$lang['Related tags'] = 'Etiquetas relacionadas';
+$lang['Reset'] = 'Restablecer';
+$lang['Retrieve password'] = 'Recuperar contraseña';
+$lang['Search rules'] = 'Criterios de búsqueda';
+$lang['Search tags'] = 'Buscar etiquetas';
+$lang['Search'] = 'Buscar';
+$lang['display available tags'] = 'Mostrar etiquetas disponibles';
+$lang['Since'] = 'Desde';
+$lang['Sort by'] = 'Ordenar por';
+$lang['Sort order'] = 'Ordenar';
+$lang['Tag'] = 'Etiqueta';
+$lang['Tags'] = 'Etiquetas';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'La fuente de redifusión con formato RSS proporciona notificaciones automáticas de las novedades de este sitio web: nuevas fotos, actualizaciones de los álbumes, nuevos comentarios... Debe utilizar un lector de canal RSS.
+
+¿Qué son los Feeds y como puede utilizarlos?
+Un Feed es un sistema de resumen que se va actualizando para poder estar al día de las noticias de un sitio web.
+
+Atención: Para suscribirse a un Feed es necesario un lector de Feeds. Al clicar un Feed sin lector de Feeds, el navegador mostrará texto sin formato.
+
+¿Qué son RSS y Atom?
+Son dos formatos de Feeds. Muchos lectores de feeds soportan ambos formatos.';
+$lang['Unknown feed identifier'] = 'Identificador de canal desconocido';
+$lang['User comments'] = 'Comentarios de los usuarios';
+$lang['Username'] = 'Nombre de usuario';
+$lang['Visits'] = 'Visitas';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Semana %d';
+$lang['About Piwigo'] = 'Acerca de Piwigo';
+$lang['You are not authorized to access the requested page'] = 'No está autorizado para acceder a esta página';
+$lang['add this photo to your favorites'] = 'Añadir a favoritos';
+$lang['Administration'] = 'Administración';
+$lang['all'] = 'Todo';
+$lang['ascending'] = 'Ascendente';
+$lang['author(s) : %s'] = 'autor(es): %s';
+$lang['Expand all albums'] = 'Expandir todos los álbumes';
+$lang['posted after %s (%s)'] = 'Publicadas después del %s (%s)';
+$lang['posted before %s (%s)'] = 'Publicadas antes del %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'Publicadas entre el %s (%s) y el %s (%s)';
+$lang['posted on %s'] = 'Publicadas el %s';
+$lang['Best rated'] = 'Mejor valoradas';
+$lang['display best rated photos'] = 'Visualizar fotos mejor valoradas';
+$lang['Calendar'] = 'Calendario';
+$lang['All'] = 'Todo';
+$lang['display each day with photos, month per month'] = 'Visualizar fotos por día, mes a mes';
+$lang['View'] = 'Visualizar';
+$lang['chronology_monthly_calendar'] = 'Calendario mensual';
+$lang['chronology_monthly_list'] = 'Lista mensual';
+$lang['chronology_weekly_list'] = 'Lista semanal';
+$lang['Click here if your browser does not automatically forward you'] = 'Pulse aquí si su navegador no le redirecciona a la página solicitada.';
+$lang['comment date'] = 'Fecha del comentario';
+$lang['Comment'] = 'Comentario';
+$lang['Your comment has been registered'] = 'Su comentario ha sido registrado correctamente';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Ha sido activado el sistema de prevención anti-colapso. Por favor, espere un momento antes de añadir otro comentario. En este momento el servidor está procesando numerosas peticiones de otros usuarios.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Aviso: Su comentario no será publicado porque no ha superado las reglas de validación';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrador debe validar su comentario antes de que sea visible.';
+$lang['This login is already used by another user'] = 'Este nombre de usuario ya está en uso por otro usuario';
+$lang['Comments'] = 'Comentarios';
+$lang['Add a comment'] = 'Añadir un comentario';
+$lang['created after %s (%s)'] = 'Creado después del %s (%s)';
+$lang['created before %s (%s)'] = 'creado antes del %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creado entre el %s (%s) y el %s (%s)';
+$lang['created on %s'] = 'creado el %s';
+$lang['Customize'] = 'Perfil';
+$lang['Your Gallery Customization'] = 'Personalizar galería';
+$lang['day'][0] = 'Domingo';
+$lang['day'][1] = 'Lunes';
+$lang['day'][2] = 'Martes';
+$lang['day'][3] = 'Miércoles';
+$lang['day'][4] = 'Jueves';
+$lang['day'][5] = 'Viernes';
+$lang['day'][6] = 'Sábado';
+$lang['Default'] = 'Por defecto';
+$lang['delete this photo from your favorites'] = 'Eliminar esta foto de sus favoritos';
+$lang['Delete'] = 'Eliminar';
+$lang['descending'] = 'Descendente';
+$lang['Download'] = 'Descargar';
+$lang['Download this file'] = 'Descargar';
+$lang['edit'] = 'Editar';
+$lang['wrong date'] = 'Fecha errónea';
+$lang['excluded'] = 'Excluidos';
+$lang['Your favorites'] = 'Favoritos';
+$lang['display your favorites photos'] = 'Visualizar mis fotos favoritas';
+$lang['Favorites'] = 'Favoritas';
+$lang['First'] = 'Primera';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galería permenace temporalmente cerrada por labores de mantenimiento. Disculpe las molestias. La galería volverá a estar operativa en unos minutos.';
+$lang['Page generated in'] = 'Página generada en';
+$lang['guest'] = 'invitado';
+$lang['Hello'] = 'Hola';
+$lang['available for administrators only'] = 'Disponible sólo para los administradores';
+$lang['display this album'] = 'Visualizar el contenido de este álbum';
+$lang['display last user comments'] = 'Ver los últimos comentarios de los usuarios';
+$lang['customize the appareance of the gallery'] = 'Personalizar apariencia';
+$lang['search'] = 'Buscar';
+$lang['Home'] = 'Inicio';
+$lang['in this album'] = 'en este àlbum';
+$lang['in %d sub-album'] = 'en %d sub-álbum';
+$lang['in %d sub-albums'] = 'en %d sub-álbumes';
+$lang['included'] = 'incluidos';
+$lang['Invalid password!'] = 'Contraseña no válida';
+$lang['Language'] = 'Idioma';
+$lang['last %d days'] = 'Últimos %d días';
+$lang['Last'] = 'Última';
+$lang['Logout'] = 'Desconexión';
+$lang['obligatory'] = 'obligatorio';
+$lang['display a calendar by creation date'] = 'Calendario según la fecha de creación';
+$lang['display all photos in all sub-albums'] = 'Vista por miniaturas';
+$lang['return to normal view mode'] = 'Vista por álbumes';
+$lang['display a calendar by posted date'] = 'Calendario según la fecha de publicación';
+$lang['month'][10] = 'Octubre';
+$lang['month'][11] = 'Noviembre';
+$lang['month'][12] = 'Diciembre';
+$lang['month'][1] = 'Enero';
+$lang['month'][2] = 'Febrero';
+$lang['month'][3] = 'Marzo';
+$lang['month'][4] = 'Abril';
+$lang['month'][5] = 'Mayo';
+$lang['month'][6] = 'Junio';
+$lang['month'][7] = 'Julio';
+$lang['month'][8] = 'Agosto';
+$lang['month'][9] = 'Septiembre';
+$lang['Most visited'] = 'Más visitadas';
+$lang['display most visited photos'] = 'Visualizar las fotos más visitadas';
+$lang['The number of photos per page must be a not null scalar'] = 'La cantidad de fotos por página debe ser un número entero superior a cero';
+$lang['Number of photos per page'] = 'Número de miniaturas por página';
+$lang['Unknown identifier'] = 'Identificador desconocido';
+$lang['New password'] = 'Nueva contraseña';
+$lang['Rate this photo'] = 'Valorar';
+$lang['Next'] = 'Siguiente';
+$lang['no rate'] = 'no valorada';
+$lang['Photos posted within the last %d day.'] = 'Foto publicada este %d.';
+$lang['Photos posted within the last %d days.'] = 'Sólo se muestran las imágenes publicadas durante los últimos %d días.';
+$lang['password updated'] = 'Contraseña actualizada';
+$lang['Recent period must be a positive integer value'] = 'El período debe ser un número entero positivo';
+$lang['photo'] = 'Foto';
+$lang['Click on the photo to see it in high definition'] = 'Haga clic en la foto para verla en alta calidad';
+$lang['Show file metadata'] = 'Mostrar/Ocultar información adicional de la cámara fotográfica (metadatos Exif)';
+$lang['Powered by'] = 'Desarrollado por';
+$lang['Preferences'] = 'Preferencias';
+$lang['Previous'] = 'Anterior';
+$lang['Random photos'] = 'Fotos aleatorias';
+$lang['display a set of random photos'] = 'Visualizar fotos aleatorias';
+$lang['Recent albums'] = 'Álbumes recientes';
+$lang['display recently updated albums'] = 'Visualizar los álbumes actualizados recientemente';
+$lang['Recent period'] = 'Periodo reciente (días)';
+$lang['Recent photos'] = 'Fotos recientes';
+$lang['display most recent photos'] = 'Visualizar las fotos más recientes';
+$lang['Redirection...'] = 'Redirección...';
+$lang['Please, enter a login'] = 'Por favor, introduzca sus credenciales de autenticación';
+$lang['login mustn\'t end with a space character'] = 'El nombre de usuario no puede terminar con el carácter \'espacio\'';
+$lang['login mustn\'t start with a space character'] = 'El nombre de usuario no puede empezar por el carácter \'espacio\'';
+$lang['this login is already used'] = 'Este nombre de usuario ya lo está utilizando otro usuario';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'El formato de la dirección e-mail debe ser xxx@yyy.eee (ejemplo: jack@altern.org)';
+$lang['Auto login'] = 'Recordar';
+$lang['remove this tag from the list'] = 'elimine esta etiqueta de la lista';
+$lang['representative'] = 'Representar';
+$lang['Search for Author'] = 'Buscar por autor';
+$lang['Search in albums'] = 'Buscar en los álbumes';
+$lang['Search by date'] = 'Buscar por fecha';
+$lang['Date'] = 'Fecha inicial';
+$lang['End-Date'] = 'Fecha final';
+$lang['Kind of date'] = '¿Cuál?';
+$lang['Search for words'] = 'Buscar por palabras';
+$lang['Search for all terms'] = 'Buscar por todos los términos';
+$lang['Search for any term'] = 'Buscar por cualquier término';
+$lang['Empty query. No criteria has been entered.'] = 'No ha introducido ningún criterio de búsqueda.';
+$lang['Search results'] = 'Resultados de la búsqueda';
+$lang['Search in sub-albums'] = 'Buscar en los sub-álbumes';
+$lang['searched words : %s'] = 'Palabras encontradas: %s';
+$lang['Contact'] = 'Contactar con el';
+$lang['set as album representative'] = 'Establecer esta foto como icono de este álbum';
+$lang['Show number of comments'] = 'Mostrar el número de comentarios';
+$lang['Show number of hits'] = 'Mostrar el número de visualizaciones';
+$lang['slideshow'] = 'Presentación';
+$lang['stop the slideshow'] = 'Detener presentación';
+$lang['Specials'] = 'Especiales';
+$lang['SQL queries in'] = 'consultas SQL en';
+$lang['display only recently posted photos'] = 'Visualizar sólo las fotos publicadas recientemente';
+$lang['return to the display of all photos'] = 'Volver a visualizar todas la imágenes';
+$lang['the beginning'] = 'El principio';
+$lang['Thumbnails'] = 'Diapositivas';
+$lang['Menu'] = 'Menú';
+$lang['A comment on your site'] = 'Un comentario de tu sitio web';
+$lang['today'] = 'Hoy';
+$lang['Update your rating'] = 'Cambiar valoración';
+$lang['the username must be given'] = 'Debe indique el nombre de usuario';
+$lang['useful when password forgotten'] = 'Útil en caso de pérdida de credenciales';
+$lang['Quick search'] = 'Búsqueda rápida';
+$lang['Connected user: %s'] = 'Usuario conectado: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Comentario: %s';
+$lang['Comment by %s'] = 'Comentado por %s';
+$lang['User: %s'] = 'Usuario: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registro de %s';
+$lang['Album: %s'] = 'Álbum: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Estado erroneo del usuario "invitado". Se está utilizando el estado predeterminado. Por favor, infórmelo al administrador de la web.';
+$lang['this email address is already in use'] = 'Otro usuario ya utiliza esta dirección e-mail';
+$lang['Album results for'] = 'Resultados de los álbumes para';
+$lang['Tag results for'] = 'Resultados de la etiqueta para';
+$lang['from %s to %s'] = 'de %s a %s';
+$lang['Play of slideshow'] = 'Reproducir';
+$lang['Pause of slideshow'] = 'Pausa';
+$lang['Repeat the slideshow'] = 'Activar repetición';
+$lang['Not repeat the slideshow'] = 'Desactivar repetición';
+$lang['Reduce diaporama speed'] = 'Disminuir velocidad';
+$lang['Accelerate diaporama speed'] = 'Aumentar la velocidad del pase de diapositivas';
+$lang['Submit'] = 'Validar';
+$lang['Yes'] = 'Si';
+$lang['No'] = 'No';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d fotos';
+$lang['%d photo is also linked to current tags'] = '%d foto también ha estado enlazada con esta etiqueta';
+$lang['%d photos are also linked to current tags'] = '%d fotos también han estado enlazadas con estas etiquetas';
+$lang['display photos linked to this tag'] = 'Mostrar sólo las fotos relacionadas con esta etiqueta';
+$lang['photos posted during the last %d days'] = 'Fotos publicadas durante los últimos %d días';
+$lang['Piwigo Help'] = 'Ayuda';
+$lang['Rank'] = 'Mejor valoradas';
+$lang['group by letters'] = 'Agrupar por letras';
+$lang['letters'] = 'letras';
+$lang['show tag cloud'] = 'Mostrar nube de etiquetas';
+$lang['cloud'] = 'nube';
+$lang['Reset to default values'] = 'Restaurar valores predeterminados';
+$lang['Sent by'] = 'Enviado por';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Las cookies están bloqueadas o el navegador no permite su uso. Debe activarlas para poder conectarse.';
+$lang['delete all photos from your favorites'] = 'Eliminar todas sus fotos favoritas';
+$lang['Are you sure?'] = 'Confirme que desea realizar esta acción';
+$lang['Edit a comment'] = 'Editar un comentario';
+$lang['(!) This comment requires validation'] = '(!) Este comentario debe ser validado';
+$lang['Welcome'] = 'Bienvenido';
+$lang['Welcome to your Piwigo photo gallery!'] = '¡Bienvenido a la galería fotográfica Piwigo!';
+$lang['... or browse your empty gallery'] = '... o navegue por la galería (actualmente vacía)';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... o por favor, desactive este mensaje para encontrar la manera de hacerlo por mi cuenta';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hola %s, la galería está vacía';
+$lang['I want to add photos'] = 'Quiero añadir fotos';
+$lang['Manage this user comment: %s'] = 'Administrar el comentario: %s';
+$lang['This author modified following comment:'] = 'Este autor modificó el siguiente comentario:';
+$lang['This author removed the comment with id %d'] = 'Este autor sha eliminado el comentario con el identificador numérico %d';
+$lang['html tags are not allowed in login'] = 'No se permiten etiquetas html en los datos de inicio de sesión';
+$lang['%d rates'] = '%d valoraciones';
+$lang['Rating score'] = 'Puntuación';
+$lang['Invalid username or email'] = 'Nombre de usuario o dirección de correo electrónico no válida';
+$lang['Password reset is not allowed for this user'] = 'No está permitido restablecer la clave de acceso para este usuario';
+$lang['User "%s" has no email address, password reset is not possible'] = 'El usuario "%s" no ha registrado ninguna dirección de correo electrónico. No se puede restablecer su contraseña de acceso.';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Alguien ha solicitado que su contraseña sea restablecido para las siguientes cuentas de usuario:';
+$lang['Username "%s" on gallery %s'] = 'El nombre de usuario "%s" en la galería %s';
+$lang['To reset your password, visit the following address:'] = 'Para restablecer su contraseña, haga clic en el siguiente enlace:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Si se trata de un error, ignorar este correo electrónico. Su solicitud será desestimada.';
+$lang['Password Reset'] = 'Establecer una nueva contraseña';
+$lang['Check your email for the confirmation link'] = 'Compruebe que ha recivido el enlace de confirmación en su correo electrónico';
+$lang['Invalid key'] = 'Contraseña no válida';
+$lang['The passwords do not match'] = 'Las contraseñas no coinciden';
+$lang['Your password has been reset'] = 'Su contraseña ha sido restablecida con éxito.';
+$lang['Return to home page'] = 'Volver a la página de inicio';
+$lang['Please enter your username or email address.'] = 'Introduzca su nombre de usuario o dirección de correo electrónico que utilizó para registrarse.';
+$lang['You will receive a link to create a new password via email.'] = 'Recibirá un enlace a su correo electrónico que le permitirá crear una nueva contraseña.';
+$lang['Username or email'] = 'Nombre de usuario o dirección de correo electrónico';
+$lang['Change my password'] = 'Restablecer contraseña';
+$lang['Enter your new password below.'] = 'Introduzca la nueva contraseña';
+$lang['EXIF Metadata'] = 'Cámara digital';
+$lang['IPTC Metadata'] = 'Metadatos IPTC';
+
+$lang['Edit'] = 'Editar';
+$lang['Hello %s,'] = 'Hola &s,';
+$lang['Here are your connection settings'] = 'Aquí tiene sus parámetros de conexión';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Por favor, si cree que ha recibido este email por error, contacte con nosotros en %s';
+$lang['large'] = 'L - grande';
+$lang['medium'] = 'M - mediano';
+$lang['Original'] = 'Original';
+$lang['Password: %s'] = 'Contraseña: %s';
+$lang['Send my connection settings by email'] = 'Enviar credenciales a mi correo electrónico';
+$lang['small'] = 'S - pequeño';
+$lang['square'] = 'Cuadrado';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Se ha registrado correctamente. Recibirá en breve un email con sus credenciales de conexión. ¡Bienvenido!';
+$lang['Thank you for registering at %s!'] = '¡Gracias por registrarse en %s!';
+$lang['thumb'] = 'Diapositiva';
+$lang['Username modification'] = 'Modificar nombre de usuario';
+$lang['Username: %s'] = 'Nombre de usuario: %s';
+$lang['xlarge'] = 'XL - extragrande';
+$lang['xxlarge'] = 'XXL - enorme';
+$lang['Your username has been successfully changed to : %s'] = 'Su nombre de usuario ha sido cambiado con éxito por: %s';
+$lang['Desktop'] = 'Escritorio';
+$lang['Mobile'] = 'dispositivos móviles';
+$lang['Photo sizes'] = 'Cambiar medidas';
+$lang['Show latest comments first'] = 'Mostrar comentarios nuevos primero';
+$lang['Show oldest comments first'] = 'Mostrar comentarios antiguos primero';
+$lang['View in'] = 'Diseño web adaptado a';
+$lang['2small'] = 'XXS - diminuto';
+$lang['Date created, new &rarr; old'] = 'Fecha de creación, nuevo &rarr; antiguo';
+$lang['Date created, old &rarr; new'] = 'Fecha de creación, antiguo &rarr; nuevo';
+$lang['Date posted, new &rarr; old'] = 'Fecha de publicación, nuevo &rarr; antiguo';
+$lang['Date posted, old &rarr; new'] = 'Fecha de publicación, antiguo &rarr; nuevo';
+$lang['File name, A &rarr; Z'] = 'Nombre de archivo, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nombre de archivo, Z &rarr; A';
+$lang['Manual sort order'] = 'Orden manual';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Número de identificación, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Número de identificación, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Título de la foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Título de la foto, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Puntuación, más alta &rarr; más baja';
+$lang['Rating score, low &rarr; high'] = 'Puntuación, más baja &rarr; más alta';
+$lang['Visits, high &rarr; low'] = 'Visitas, más &rarr; menos';
+$lang['Visits, low &rarr; high'] = 'Visitas, menos  &rarr; más';
+$lang['xsmall'] = 'XS - extrapequeño';
+$lang['%d rate'] = '%d valoración';
+$lang['Permalink for album not found'] = 'No se encuentra el enlace permanente para el álbum';
+$lang['Requested album does not exist'] = 'No existe el álbum solicitado';
+$lang['Bad request'] = 'Solicitud errónea';
+$lang['Forbidden'] = 'Prohibido';
+$lang['Page not found'] = 'Página no encontrada';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ha detectado un error irreparable';
+$lang['Requested tag does not exist'] = 'No existe la a etiqueta solicitada';
+$lang['Email address is mandatory'] = 'La direccion e-mail es obligatoria';
+$lang['Username is mandatory'] = 'El nombre de usuario es obligatorio';
+$lang['mandatory'] = 'obligatorio';
+$lang['Website'] = 'Página web';
+$lang['Your website URL is invalid'] = 'La url de tu página web es incorrecta';
+$lang['Email'] = 'Correo electrónico';
+$lang['First Page'] = 'Primera pagina';
+$lang['Go back to the album'] = 'Volver al álbum';
+$lang['Last Page'] = 'Ultima pagina';
+$lang['Password is missing. Please enter the password.'] = 'Falta la contraseña. Por favor, introdúzcala.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'La contraseña no ha sido confirmada. Por favor, confirme la contraseña elegida.';
+$lang['%d photos per page'] = '%d fotos por paginas';
+$lang['Theme'] = 'Tema';
+?>
Index: /tags/2.6.0RC1/language/es_ES/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,117 @@
+<h2>Modificar una categoría</h2>
+
+<h3>Informaciones</h3>
+
+<ul>
+
+  <li><strong>nombre</strong>: renombrar la categoría (virtualmente para una categoría física).</li>
+
+  <li><strong>descripción</strong>: dar una idea del contenido de la categoría, esta indicación figurará bajo la página de las miniaturas.</li>
+
+</ul>
+
+<h3>Desplazar</h3>
+
+<p>Si la categoría es virtual, usted puede desplazarla. Desplazar una categoría significa cambiar su categoría padre.</p>
+
+<h3>Opciones</h3>
+
+<ul>
+
+  <li><strong>Tipo de acceso</strong>: gestión de los permisos. Si usted cambia una categoría a particular, todas sus categorías niños se vuelven particulares. Si usted cambia una categoría a pública, todas sus categorías madres se vuelven públicas.</li>
+
+  <li><strong>Bloquear</strong>: la categoría y todas sus categorías chicas se vuelven temporalmente inaccesibles para mantenimiento.</li>
+
+  <li><strong>Comentarios</strong>: autoriza a los usuarios a comentar los elementos de esta categoría.</li>
+
+  <li><strong>Autorizar el añadido de imágenes</strong>: autoriza a los usuarios a cargar ficheros. Esta opción está disponible sólo si la categoría es física (y no virtual).</li>
+
+</ul>
+
+<p>Usted puede también administrar estas opciones por la gestión de las "Propiedades"  
+(pantallas <span class="pwgScreen">Añadido</span>, <span
+class="pwgScreen">Comentarios</span>, <span
+class="pwgScreen">Bloquear</span>, <span
+class="pwgScreen">Pública / particular</span>, <span
+class="pwgScreen">Representante</span> Disponibles a partir de <span
+class="pwgScreen">Administración, Categorías, Propiedades</span>).</p>
+
+<h3>Orden de selección</h3>
+
+<p>Utilizar el orden de selección de las imágenes por defecto.</p>
+
+<p>Indicar si la selección también se aplica a las subcategorías.</p>
+
+<p>Seleccionar las columnas de la selección que hay que utilizar para esta categoría.</p>
+<ul>
+<li><strong>Fecha de creación</strong>: Fecha de grabación</li>
+<li><strong>Fecha de añadido</strong>: Fecha de la sincronización</li>
+<li><strong>Nota media (*)</strong>: la cual podría ser modificada por el visitante</li>
+<li><strong>Más vistas (*)</strong>: La vista actual puede cambiar el orden de las más vistas</li>
+<li><strong>Nombre del fichero</strong>: Nombre del fichero dado en los campos de informaciones más arriba</li>
+<li><strong>Id</strong>: Id Interna (las categorías recientes tienen la "Id" mayor que las precedentes).</li>
+
+</ul>
+<p><strong>(*)</strong>Atención: Pruebe usted mismo estas selecciones que podrian dar resultados imprevisibles.</p>
+
+
+<h3>Representante</h3>
+
+<p>El representante de una categoría es la miniatura visualizada para representar la categoría en la página principal (<span
+class="pwgScreen">category.php</span>) Cuando una categoría contiene únicamente  subcategorías y ningun elemento directo (como a la raíz)</p>
+
+<p>Existen 4 medios de escoger al representante de una categoría:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Página de visualización de las imágenes</span>: En la barra de los botones de acción, uno de ellos permite escoger el elemento visualizado como representante de la categoría visualizada. Este botón de acción está disponible sólo para los administradores</li>
+
+  <li><span class="pwgScreen">Modificar las informaciones de una imagen</span>
+en la administración. Se puede acceder a esta pantalla desde <span
+class="pwgScreen">picture.php</span> o <span class="pwgScreen">Gestión por lote</span> en él <em>Modo unitario</em>. Ver el ayudante de esta pantalla para los detalles.</li>
+
+  <li><span class="pwgScreen">Administración, Categorías, Propiedades, Representante</span>. Ver el ayudante de esta pantalla para los detalles.</li>
+
+  <li><span class="pwgScreen">Modificar una categoría</span> ( La pantalla actual).</li>
+
+</ul>
+
+<p>La representación depende del parámetro de configuración
+<code>allow_random_representative</code> (ver <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Por defecto (<code>allow_random_representative</code> à false) cada categoría que contiene por lo menos un elemento es representada por un elemento fijo. Una vez fijado (a la creación de la categoría), el representante únicamente cambia cuando el administrador lo pide. Si el representante no conviene, usted puede pedir a <strong>Encontrar a un nuevo representante al azar</strong>.</p>
+
+<p>Si el parámetro de configuración <code>allow_random_representative</code>
+es a true, una categoría que contiene elementos puede no tener representante fijo. Simplemente utilizar el botón <strong>Suprimir al representante</strong>.</p>
+
+<p>Si la categoría no contiene ningún elemento (sino únicamente subcategorías) puede ser representada a pesar de todo por cualquier elemento gracias a la pantalla <span class="pwgScreen">Modificar las informaciones de una imagen</span>. La unica opción de la pantalla presente es el botón
+<strong>Suprimir al representante</strong>.</p>
+
+<h3>Asociar todos los elementos de la categoría con una nueva categoría</h3>
+
+<ul>
+
+<li><strong>Nombre de la categoría virtual</strong>: Nombre de la nueva categoría que hay que crear, todas las imágenes de la categoría corriente serán atadas a la nueva.</li>
+
+<li><strong>Categoría padre</strong>: Donde la nueva categoría debe estar, dejar vacío para crearle sobre la página inicial.</li>
+
+</ul>
+
+<h3>Asociar todos los elementos de la categoría con categorías existentes</h3>
+
+<ul>
+
+<li><strong>Categorías</strong>: Escoger la categoría de destino.</li>
+
+</ul>
+
+<h3>Enviarles un mail de informaciones a los miembros de un grupo</h3>
+
+<ul>
+
+<li><strong>Grupo</strong>: Grupo de destinatarios</li>
+
+<li><strong>Contenido del mail</strong>: Texto libre de enviarles.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/es_ES/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/cat_move.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Desplazamiento de categorías virtuales</h2>
+
+<p>Usted puede cambiar al pariente de una categoría virtual.</p>
+
+<h3>Categorías virtuales que hay que desplazar</h3>
+
+<p>Seleccione una o varias categorías virtuales a desplazar. Si la lista está vacía, es porque usted todavía no la ha creado.</p>
+
+<h3>Nueva categoría padre</h3>
+
+<p>Seleccione la nueva categoría padre (virtual o física). Si usted no selecciona ninguna, las categorías que hay que desplazar habrán subido a la raíz de las categorías.
+Usted no puede desplazar una categoría dentro de ella misma o sus niños.</p>
Index: /tags/2.6.0RC1/language/es_ES/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/cat_options.html	(revision 25596)
@@ -0,0 +1,30 @@
+<h2>Opciones de las categorías</h2>
+
+<p>Gestión de las opciones para varias categorías a la vez.</p>
+
+<dl>
+
+  <dt>Autorización al añadido</dt>
+
+  <dd>Devolver las categorías autorizadas al añadido por los visitantes. Esta opción no está disponible para las categorías virtuales y distantes.</dd>
+  
+  <dt>Comentarios usuarios</dt>
+
+  <dd>Autorizar los usuarios a añadir comentarios en las categorías seleccionadas.
+Por herencia, una imagen es commentable si pertenece por lo menos a una categoría commentable.</dd>
+  
+  <dt>Bloquear</dt>
+
+  <dd>Las categorías seleccionadas se vuelven temporalmente inactivas para mantenimiento. Cuando una categoría es bloqueada, todas las categorías niño son bloqueadas. Cuando a una categoría se le quita el cierre, todas las categorías bloqueadas se vuelven abiertas.</dd>
+
+  <dt>Pública / Particular</dt>
+
+  <dd>Gestión del estatuto de las categorías. Los permisos son posibles sólo para las categorías particulares. En cuanto una categoría es privada, usted explícitamente debe autorizar a los usuarios o los grupos a acceder a ella. Cuando una categoría se vuelve particular, todas las categorías niño se vuelven particulares. Cuando una categoría se vuelve pública, todas las categorías padres se vuelven públicas.</dd>
+
+  <dt>Representante</dt>
+
+  <dd>Esta opción únicamente está disponible si el parámetro de configuración <code>allow_random_representative</code> (Ver <span
+class="filename">include/config_default.inc.php</span>) es
+<em>true</em>. Cada categoría puede ser representada al azar o por una miniatura fija única.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/es_ES/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Administrar los permisos para una categoría</h2>
+
+<p>Esta pantalla está disponible sólo para las categorías particulares. Aquí usted podrá seleccionar a los usuarios y a los grupos autorizados para esta categoría.</p>
+
+<h3>Grupos</h3>
+
+<p>Usted puede autorizar o prohibir el acceso a los grupos. Modificando las autorizaciones de los grupos, usted probablemente modificará la lista de los usuarios autorizados gracias a la pertenencia a los grupos.</p>
+
+<h3>Usuarios</h3>
+
+<p>Usted puede autorizar o prohibirles el acceso a los usuarios individualmente.</p>
Index: /tags/2.6.0RC1/language/es_ES/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/configuration.html	(revision 25596)
@@ -0,0 +1,99 @@
+<h2>Configuración</h2>
+
+<p>Esta pantalla permite realizar las tareas básicas de administración de la galería. De hecho, sólo se muestran los principales parámetros de configuración que debieran ser suficiente para la gran mayoría de administradores. Si desea ver los parámetros de configuración avanzados, lea el archivo de configuración <span class="filename">include/config_default.inc.php</span></p>
+
+<p>Esta pantalla está dividida en distintas secciones que agrupan parámetros de configuración por temas.</p>
+
+<h3>Principal</h3>
+<ul>
+
+  <li><strong>Título de la galería</strong>: utilizado para el canal RSS y las notificaciones por email.</li>
+
+  <li><strong>Banner (cabecera de la página)</strong>: código html visible en la parte superior de cada página pública.</li>
+
+  <li><strong>URL de la galería</strong>: usada para la fuente RSS.</li>
+
+  <li><strong>Bloquear la galería</strong>: Bloquea la galería entera por labores de mantenimiento. Sólo se permite el acceso a los administradores.</li>
+
+  <li><strong>Valoración</strong>: Se habilita la característica para poder puntuar las imágenes.</li>
+
+  <li><strong>Valoración por los visitantes</strong>: Incluso los usuarios no registrados pueden puntuar las imágenes.</li>
+
+  <li><strong>Permitir el registro de usuarios</strong>: Cualquier usuario puede registrarse.</li>
+
+  <li><strong>Correo electrónico obligatorio para todos los usuarios</strong>: Se comprobará la dirección de correo electrónico en el registro o actualización de perfiles, excepto si la acción se lleva a cabo por un administrador.</li>
+
+  <li><strong>Email admins when a new user registers</strong>: administrators will be notified by mail for each registration.</li>
+  
+  <li><strong>Notificar a los administradores en el momento de la inscripción de un usuario</strong>: Los administradores serán notificados por email para cada inscripción.</li>
+
+  <li><strong>Orden por defecto de las fotos</strong>: Se puede definir un orden personalizado con estos menús desplegables.</li>
+	
+</ul>
+
+<h3>Historial</h3>
+
+  <p>Visitas en las páginas <span
+class="pwgScreen">index.php</span> y <span
+class="pwgScreen">picture.php</span> se guardarán en la tabla <code>history</code>.</p>
+
+  <p>Las visitas se muestran en <span class="pwgScreen">Administración &raquo; Herramientas &raquo; Historial</span>.</p>
+
+<ul>
+  <li><strong>Registrar las páginas visitadas por los invitados</strong>: Se guardan las páginas visitadas por los invitados.</li>
+
+  <li><strong>Registrar las páginas visitadas por los usuarios</strong>: Se guardan las páginas visitadas por los usuarios.</li>
+
+  <li><strong>Registrar las páginas visitadas por los administradores</strong>: Se guardan las páginas visitadas por los administradores.</li>
+
+</ul>
+
+<h3>Comentarios</h3>
+<ul>
+
+  <li><strong>Comentarios para todos</strong>: Incluso los usuarios no registrados pueden publicar comentarios.</li>
+
+  <li><strong>Número de comentarios por página</strong>.</li>
+
+  <li><strong>Validación</strong>: Un administrador debe previamente validar los comentarios escritos por los usuarios antes de que sean visibles públicamente en la galería. La validación de los comentarios de los usuarios se realiza en la pantalla <span class="pwgScreen">Administración &raquo; Herramientas &raquo; Comentarios pendientes</span>.</li>
+
+  <li><strong>Notificar a los administradores en el momento en que se escriba un comentario validado</strong>: Envía un correo electrónico a los administradores cuando un usuario escribe un comentario que ha sido validado.</li>
+
+  <li><strong>Notificar a los administradores cuando un comentario requiere ser validado</strong>:
+Envía un correo electrónico a los administradores cuando un usuario escribe un comentario que requiere validación por parte del administrador.
+La validación de los comentarios se realiza en <span class="pwgScreen">Administración &raquo; Herramientas &raquo; Comentarios pendientes</span>.</li>
+
+</ul>
+
+
+<h3>Visualización por defecto</h3>
+<p>Aquí puede cambiar las opciones de visualización utilizadas por los invitados (usuarios no autenticados). Una vez hayan iniciado sesión, estas opciones son sobreescritas por las propias del usuario
+(modificable en <span class="pwgScreen">perfil</span>.</p>
+
+<p>Es posible cambiar las opciones de visualización para todos los usuarios existentes en <span class="pwgScreen">Administración &raquo; Usuarios &raquo; Administrar</span> en la cual usted puede modificar estas opciones para una lista de usuarios seleccionados.</p>
+
+<ul>
+
+  <li><strong>Idioma</strong>: Se aplica sólo a las etiquetas de Piwigo. En los campos de nombres de álbumes de fotos, nombres y descripciones no están localizados.</li>
+
+  <li><strong>Número de fotos por fila</strong></li>
+
+  <li><strong>Número de filas por página</strong></li>
+
+  <li><strong>Tema de la interfaz</strong></li>
+
+  <li><strong>Período reciente</strong>: En días. El período durante el cual una imagen es considerada como novedad. Este período debe ser superior a 1 día.</li>
+
+  <li><strong>Expandir todos los álbumes</strong>: Expande todos los álbumes por defecto en el menú <em>Advertencia</em>: Esta opción es susceptible de consumir inútilmente recursos si su árbol de categorías contiene numerosos elementos.</li>
+
+  <li><strong>Mostrar el número de comentarios</strong>: Mostrar número de comentarios en cada foto debajo de cada miniatura. Consume recursos.</li>
+
+  <li><strong>Mostrar el número de isualizaciones</strong>: Muestra los accesos observados en la foto justo debajo de la miniatura en la página de miniaturas. Sólo cuando el parámetro de configuración avanzado es: <br />
+  $conf['show_nb_hits'] = true; <br />
+  Nota: es false por defecto.</li>
+
+  <li><strong>Anchura máxima de las fotos</strong>: anchura máxima visualizada. Las fotos más grandes que este valor, se ajustarán al tamaño de la pantalla. En lugar de usar esta opción, una buena práctica sería que considerara modificar el ancho de sus fotos.</li>
+
+  <li><strong>Altura máxima de las imágenes</strong>: la misma observación que en la anchura.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/es_ES/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,103 @@
+<h2>Configuración para "extender" los templates</h2>
+
+<h3>Objetivo</h3>
+<p>Definir las condiciones de sustitución de cada template (modelo) a partir de template-extensión
+ (template llamado "a reemplasar " (sustituto)).</p>
+
+<p>" Templates de origen " proviniendo de . / template / yoga (o de otra carpeta que "yoga")
+ son reemplazados por el sustituto si éste es vinculado a su template de origen 
+ (y de modo facultativo, cuando la dirección (URL) contiene un URL contains un 
+ " Parámetro facultativo del URL ").</p>
+
+<p>Los " Parámetros facultativo del URL " son aquellos a los que usted puede encontrar después del nombre del módulo en la dirección (URL).</p>
+
+<p>Así un " Parámetro facultativo del URL " puede ser un "permalink" (lazo permanente) activo 
+(ver el permalinks en nuestra documentación para más información).</p>
+
+<p>Leer las `<a href="#warnings">advertencias</a>` sobre las condiciones de utilización.</p>
+
+<h3>¿ Qué son las extensiones de los modelos?</h3>
+
+<p>Este instrumento de configuración es a la vez poderoso para los principiantes y para los usuarios avanzados.
+Por FTP, en el expediente template-extensión, Webmaster podrá duplicar una buena parte de los ficheros 
+.tpl distribuidos (" Templates de origen ") 
+con un nombre diferente ("reemplasar" (a sustituto)).
+ 
+ "Templates de origen ", actualmente los modelos sostenidos de origen son:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>¿ Dónde puedo encontrar los " Templates de origen "?</h3>
+
+<p>Los modelos distribuidos de origen son en template / yoga / 
+( no modificarlos directamente en este lugar por razones de evolución).
+ Así a partir de " templates de origen ", todo webmaster podrá crear su " replacers 
+ (modelos personalisés) ".</p>
+
+<h3>¿ Dónde debo registrar a los "sustitutos"?</h3>
+
+<p>Los <strong>sustitutos (templates modificados)</strong> pueden estar colocados en 
+el expediente template-extensión (o sus subexpedientes).
+Los sustitutos pueden tener cualquier nombre de fichero con la extensión .tpl. Por ejemplo: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>¿ Cómo puedo activar mis "sustitutos"?</h3>
+<p>Un<strong>Template de origen </strong> debería ser asociado con cada <strong>
+ reemplaso </strong> con el fin de activar las sustituciones correspondientes.
+ Activar los sustitutos es la función de " Extender el templates " en los menús de
+ Configuración de la Administración. </p>
+
+<p>Si usted selecciona un <strong> Define parámetros facultativo del URL </strong>
+ entonces las sustituciones serán realizadas sólo sobre las páginas que utilizarán 
+ esta palabra clave. Por ejemplo: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Los usuarios avanzados utilizarán los permalinks (permaliens, lazos permanentes) como strong> parámetro facultativo del URL </strong>. </p>
+
+<!-- TODO -->
+<p>Si usted selecciona un<strong>template atado</strong> entonces los cambios se realizaran solo sobre ese template.</p>
+
+<h3>¿ Cómo puedo desactivar mis "sustitutos"?</h3>
+<ul>
+<li>Desmarcar " template de origen ".</li>
+<li>Por FTP suprimir "sustitutos".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Advertencias</h3>
+<ul>
+
+  <li>El <strong> template de origen </strong> debe ser el verdadero 
+  template " de origen " de otro modo usted podría tener resultados imprevisibles!</li>
+
+  <li>Si varios <strong> sustitutos ( templates modoficados) </strong> tienen el mismo <strong>
+  template de origen </strong> y el mismo <strong> parámetro facultativo del URL </strong> entonces solamente el último sustituto será activo.</li>
+
+  <li>No seleccionar <strong> parámetro facultativo del URL </strong> activará el template de sustitución a cada utilización del template.
+  Así como mencionado más arriba, la orden puede inhibir los sustitutos precedentes.</li>
+
+  <li>Subexpedientes :
+  Los subexpedientes son ignorados pero son útiles para modificar la orden de los sustitutos. <br />
+  distributed-samples: ¡ para sus pruebas son distribuidos! 
+<strong>No modificarlos :</strong>¡ Haga los suyos!
+</li>
+
+  <li>A la supresión del sustituto el <strong> template de origen </strong> inmediatamente será
+  reactivado.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/es_ES/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Lista grupos</h2>
+
+<p> Manipulación de las propiedades de los grupos definidos.</p>
+
+<h3>Añadir un grupo</h3>
+
+<p>El administrador puede añadir grupos.</p>
+
+<h3>Lista grupos</h3>
+
+<p>La lista permite para cada grupo:</p>
+
+<ul>
+  <li>de acceder a la lista de los miembros</li>
+  <li>de acceder a los permisos</li>
+  <li>de suprimir el grupo (necesita una confirmación)</li>
+  <li>de invertir el estatuto " por defecto " (necesita una confirmación)</li>
+</ul>
+
+<h3>Grupos por defecto</h3>
+<p>Los grupos por defecto son los grupos asociados automáticamente con cada nuevo usuario.</p>
Index: /tags/2.6.0RC1/language/es_ES/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+<p>Existen varios métodos para añadir fotos en vuestro galería:</p>
+
+<ul>
+
+  <li><strong>El añadido directo</strong> en su navegador Web es el método más simple y más inmediato. Depende de capacidades de su navegador y de su servidor. ¡ Para gruesos volúmenes o en caso de problemas, los métodos alternativos le esperan!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Utilizar el añadido directo</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> es un software que hay que instalar sobre su ordenador.
+  Resbale sus fotos en la ventana de pLoader, haga clic sobre
+  <em>"Trasladar hacia Piwigo"</em> y pLoader se ocupa además.
+  Otros softwares clientes existen, como <strong>WinToPiwigo</strong> o el módulo
+  de expuerto Piwigo de <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Utilizar pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>El FTP</strong> es el método ideal para añadir una colección importante en un mínimo de operaciones.
+ Siga al guía para preparar sus fotos. Este método le permite controlar con precision la organización física de su fotos sobre su servidor.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Utilizar FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/es_ES/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/help_groups.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>Los grupos de usuarios permiten asignar permisos a una lista de usuarios.</p>
+
+<p>Usted puede crear grupos y añadir usuarios en ello
+<span class="pwgScreen">Administración &raquo; Usuarios &raquo; Grupos</span>.</p>
+
+<p>Un usuarios puede pertenecer a varios grupos. La autorización es más fuerte que la interdicción: si el usuario "piedra" pertenece a los grupos "familia" y "los amigos", y si sólo el grupo "familia" puede visitar la categoría " Navidad 2003 ", entonces "piedra" puede visitar esta categoría.</p>
+
Index: /tags/2.6.0RC1/language/es_ES/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/help_misc.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Una vez creado su galería, configure la visualización por defecto tal como deseado en
+  <span class="pwgScreen">Administración &raquo; Configuración &raquo; Opciones &raquo; Parámetros invitado</span>. En efecto, cada nuevo usuario heredará de estas propiedades de visualización.</p>
+
+<p>Para cualquier pregunta, la comunidad Piwigo está a la escucha en el <a href="http://es.piwigo.org/forum">foro</a>.</p>
+
Index: /tags/2.6.0RC1/language/es_ES/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,46 @@
+<fieldset>
+<legend>Permisos para fotos</legend>
+
+<p>Cada foto tiene un <strong>nivel de privacidad</strong> (un cierre). Igual que cada usuario tiene su nivel de privacidad(una llave).Hay 5 niveles de privacidad:</p>
+<ol>
+  <li>Ninguno</li>
+  <li><em>Contactos</em></li>
+  <li><em>Amigos (que es superior al de un contacto)</em></li>
+  <li><em>Familia (que es superior al de un amigo)</em></li>
+  <li><em>Admins (que es superior al de otros niveles)</em></li>
+</ol>
+
+<p>Los niveles altos tienen permisos sobre los niveles bajos. Para  un usuario dado, mas alto sera el nivel de privacidad,  mas fotos pueda ver.</p>
+
+<p>Por ejemplo, si la foto "Boda_pedro-0024.jpg"tiene el nivel de privacidad<em>"Familia"</em>, entonces:</p>
+<ul>
+  <li>Pedro (que es un <em>"Admin"</em>) puede ver la foto porque<em>"Admins"</em> puede ver todas las fotos</li>
+  <li>Beth (que es un miembro de<em>"Familia"</em>) puede ver también la foto</li>
+  <li>Maria (que solo es <em>"Amigos"</em>) no puede ver la foto</li>
+</ul>
+
+<p>Un usuario que no tiene permiso para ver el contenido de una categoría no verá la categoría en sí misma, ni siquiera su título. El mismo principio se aplica a una etiqueta.</p>
+
+<p>Puede establecer el nivel de privacidad de un usuario en <span class="pwgScreen">Administración &raquo; Usuarios &raquo; Gestion</span> pantalla.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Permisos de las categorías</legend>
+
+<p>Si los niveles de privacidad no se ajustan a sus necesidades, también puede administrar los permisos de las categorías para un usuario o un grupo. Puede administrar los permisos en las fotos y las categorías al mismo tiempo, sin conflicto.</p>
+
+<p>Usted puede prohibir el acceso a las categorías. Pase el tipo de acceso a "intimidad" si usted desea administrar los permisos</p>
+
+<p>Usted puede devolver una categoría particular editándola (<span
+class="pwgScreen">Administración &raquo; Categorías &raquo; Administrar &raquo; Editar</span>) O administrando las opciones para su árbol completo de categorías (<span
+class="pwgScreen">Administración &raquo; Categorías &raquo; Propiedades &raquo; Pública / particular</span>).</p>
+
+<p>Cuando ciertas categorías estan privadas, usted puede administrar los permisos con 3 pantallas:</p>
+
+<ul>
+  <li><span class="pwgScreen">Administración &raquo; Usuarios &raquo; Administrar &raquo; Acciones Permisos</span> (1 lazo por usuario)</li>
+  <li><span class="pwgScreen">Administración &raquo; Usuarios &raquo; Grupos &raquo; Acciones Permisos</span> (1 lazo por grupo)</li>
+  <li><span class="pwgScreen">Administración &raquo; Categorías &raquo; Administrar &raquo; Modificar los permisos</span> (1 lazo por categoría)</li>
+</ul>
+
Index: /tags/2.6.0RC1/language/es_ES/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>Las fotos son visualizadas en las categorías que corresponden a los repertorios.</p>
+
+<p>Usted también puede visualizar una foto en varias categorías, sin duplicar el fichero sobre su servidor web. Asocie la foto con cualquier otra categoría desde la pantalla de edición de la foto (al cual pude acceder desde la página de visualización de la foto lado galería, cuando esta conectado como administrador)</p>
+
+<p>Las categorías virtuales parten de este principio : no tienen repertorio asociado. Cree categorías virtuales después <span class="pwgScreen">Administración &raquo; Categorías  &raquo; Administrar</span>.</p>
+
+
Index: /tags/2.6.0RC1/language/es_ES/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/history.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Histórico</h2>
+
+<p>Estas pantallas permiten seguir el histórico de navegación en Piwigo
+ en función de las opciones que ha determinado en 
+Administración - General - pestaña  Histórico.</p>
+	
+<h3>Estadísticas</h3>
+<ul>
+  <p>Si quiere que las visitas de las páginas <span
+class="pwgScreen">index.php</span> y <span
+class="pwgScreen">picture.php</span> sean 
+registradas en el cuadro <code>history</code>,
+esta pestaña permite seguir el número de páginas visitadas</p>
+	
+	<li><strong>Estadísticas totales</strong> : visualiza las estadísticas por año.</li>
+	
+	<li><strong>Estadísticas de un año</strong> : visualiza las estadísticas de los
+	meses del año seleccionado.</li>
+	
+	<li><strong>Estadísticas de un mes</strong> : visualiza las estadísticas
+	de los días del mes seleccionado.</li>
+	
+	<li><strong>Estadísticas de un día</strong> : visualiza las estadísticas
+	de las horas del día seleccionado.</li>
+	
+</ul>
+
+<h3>Buscar</h3>
+<ul>
+  <p>Si quiere que las visitas de las páginas <span
+class="pwgScreen">index.php</span> y <span
+class="pwgScreen">picture.php</span> sean 
+registradas en el cuadro <code>history</code>, esta pestaña permite 
+seguir más detalladamente las páginas exploradas en su sitio con ayuda 
+de distintos filtros..</p>
+ 
+	<li><strong>Filtrar por fecha</strong> : seleccionar la zona de observación cuya 
+	actividad quiere observar.</li>
+	
+	<li><strong>Filtrar por tipo de elemento</strong> : seleccionar el tipo de 
+	elemento cuya actividad quiere observar .</li>
+	
+	<li><strong>Filtrar por usuario</strong> : seleccionar el usuario cuya actividad
+	quiere observar.</li>
+	
+	<li><strong>Filtrar por nombre del fichero</strong> : seleccionar el nombre del 
+	fichero cuya actividad quiere observar.</li>
+	
+	<li><strong>Filtrar por identificador de la imagen</strong> : seleccionar el 
+	identificador de la imagen cuya actividad quiere observar.</li>
+</ul>
Index: /tags/2.6.0RC1/language/es_ES/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/es_ES/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/maintenance.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Mantenimiento</h2>
+
+<p>Para optimizar el tiempo de generación de las páginas, Piwigo utiliza informaciones en viñeta. Por ejemplo, en lugar de contar el número de elementos contenidos en cada categoría a cada nueva carga de página, esta información es almacenada en la base de datos. Teóricamente, esta información debe siempre estar correcta, pero a veces un error puede sobrevenir y la información en viñeta se vuelve falsa.</p>
+
+<p>Informaciones se vuelven inútiles con tiempo. Suprimirlas de la base de datos liberara espacio en el disco.</p>
+
+<ul>
+
+  <li>
+    <strong>Elementos no atados :</strong>
+   Visualiza las imágenes que no son asociadas con una categoría virtual
+  </li>
+  <li>
+    <strong>Ficheros que llevan el mismo nombre en varias categorías físicas :</strong>
+    Visualiza las imágenes o los ficheros que  eventualemente podrían estar encontrados en varias categorías.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Poner al día las informaciones de las categorías:</strong> Para cada categoría, las informaciones a controllar y\o poner al día son las siguientes: lista de las categorías madres, número de elementos, fecha del último elemento, la posición entre las categorías hermana, posición en el árbol completo de las categorías. Esta acción también verifica la coherencia de los representantes.</li>
+
+  <li><strong>Poner al día las informaciones de las imágenes:</strong> Para cada imagen, las informaciones que hay que poner al día son: camino completo hacia el fichero, la nota media. <em>Atención</em>: No confundir con los méta-datos que son sincronizados sobre la pantalla <span
+class="pwgScreen">Administración, Categorías, Sincronizar</span> O sobre la pantalla <span class="pwgScreen">Modificar las informaciones de una imagen</span>
+(accesible desde la página de visualización de una imagen <span
+class="pwgScreen">picture.php</span>).</li>
+
+  <li><strong>Reparar y optimizar la base de datos :</strong>
+Para cada tabla de la base de datos Piwigo efectua operaciones de ré-planificación, de reparación y de optimización.
+  </li>
+
+</ul>
+
+<ul>
+  <li><strong>Vaciar el histórico :</strong>
+Suprime todas las líneas de la tabla <code>history</code>. La pantalla <span class="pwgScreen">
+Administración, Especiales, histórico</span> no muestrara ninguna información sobre el pasado. <Em>Atención</em>: todos los datos estarán perdidos y no existe ningún medio de recuperarlos.
+  </li>
+  
+  <li><strong>Vaciar el sumario del histórico</strong>Suprime todas las informaciones recapitulativas (obtenidas a partir del detalle de la peataña histórico).</li>
+
+  <li><strong>Purgar las sesiones:</strong> Suprimir las sesiones espiradas..</li>
+
+  <li><strong>Purgar los flujos jamás utilizados de notificación</strong></li>
+
+  <li><strong>Purgar la pestaña histórico de las búsquedas</strong></li>
+  
+  <li><strong>Purgar el templates compilado</strong></li>
+  
+</ul>
Index: /tags/2.6.0RC1/language/es_ES/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Notificación por mail</h2>
+
+<p>Esta pantalla permite configurar, administrar las notificaciónes a los usuarios de cambios por el envío de un mail.</p>
+
+<p>Esta pantalla consta de 3 pestañas:</p>
+
+<h3>Paramètrage</h3>
+<p>Accésible únicamente por el webmestres, esta pestaña permite situar los parámetros de la notificación por mail.</p>
+
+<h3>Inscripción</h3>
+<p>Accésible únicamente por el webmestres, esta pestaña permite administrar las inscripciones / désinscriptions a la notificación por mail.</p>
+
+<h3>Envío</h3>
+<p>Accésible por el webmestres y los administradores, este pestaña permite efectuar los envíos de los mails para notificar los cambios.</p>
+
Index: /tags/2.6.0RC1/language/es_ES/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Lazos permanentes</h2>
+
+<p>Los lazos permanentes son utilizados para devolver el url de las categorías. Cuando una categoría tiene un lazo permanente asociado, identificándolo de la categoría no es necesario más en el url.</p>
+
+<p>Cuando un lazo permanente es borrado, usted puede salvaguardarlo en la pestaña histórico de los lazos permanentes, de modo que los lazos externos tienen PWG todavía funcionan. En la pestaña histórico de los lazos permanentes usted puede ver la fecha de eliminación del lazo, así como la fecha de la última utilización y el número de utilizaciones de este lazo.</p>
+
+<p>Por favor, anote que los lazos permanentes deben ser únicos. Deben también ser únicos en la pestaña histórico de los lazos permanentes.</p>
Index: /tags/2.6.0RC1/language/es_ES/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,43 @@
+<fieldset>
+	<legend>Guía de inicio rápido</legend>
+	<ol>
+		<li>Crea una nueva carpeta en tu ordenador.</li>
+		<li>Copia las fotos que quieras dentro de esta carpeta, luego redimensiónalas si es preciso para una óptima visualización en la web. <em>Atención</em>: El nombre de las carpetas y de los archivos debe contener sólo letras, números y/o los carácteres  "-", "_" y ".". Sin espacios ni caracteres acentuados. Truco: Sustituye los espacios por "_". Ejemplo: Renombra "Cumpleaños de Ana" por "Cumpleaños_de_Ana".</li>
+		<li>Con un cliente FTP, sube la carpeta dentro del directorio "galleries" de tu instalación de Piwigo.</li>
+		<li>Inicia sesión en tu galería y dirígete a <span class="pwgScreen">Administración</span> y haz click en el botón grande situado en la parte inferior derecha que pone "Sincronización Rápida".</li>
+	</ol>
+	<p>¡Felicidades! Acabas de crear con éxito el primer álbum de tu galería.</p>
+</fieldset>
+<fieldset>
+	<legend>Organización de archivos y carpetas</legend>
+	<ul>
+		<li>
+			<p>Cada álbum se representa por una carpeta dentro del directorio "galleries". 
+			He aquí un ejemplo del árbol de directorios de una galería muy pequeña (pero
+			utilizando muchas características):</p>
+			<pre>
+			galleries
+			|-- boda
+			|   |-- celebracion
+			|   |   |-- llegada
+			|   |   |   |-- paul-solo.jpg
+			|   |   |   +-- sara-sola.jpg
+			|   |   +-- salida
+			|   |       +-- paul-y-sara.jpg
+			|   +-- fiesta
+			|       |-- baile001.jpg
+			|       |-- baile002.jpg
+			|       +-- baile003.jpg
+			+-- luna-de-miel
+				|-- hotel.png
+				|-- video-desde-el-avion.avi
+				+-- pwg_representative
+					+-- video-desde-el-avion.jpg
+			</pre>
+		</li>
+		<li>A excepción de "pwg_representative" (ver explicaciones debajo), cada subdirectorio de "galleries" genera un álbum. No hay limite de profundidad en cuanto el número de subniveles a crear.</li>
+		<li>Fundamentalmente, cada elemento es representado por un archivo. Piwigo sólo reconocerá los archivos cuyas extensiones figuren en los parámetros de configuración <code>file_ext</code> (Ver archivo <span class="filename">include/config_default.inc.php</span>). Para Piwigo, un archivo de imagen será reconocido como una imagen sólo si su extensión se encuentra dentro de los parámetros de configuración <code>picture_ext</code>.</li>
+		<li>Los elementos que no son imágenes (vídeos, sonidos, archivos de texto, todo lo que quieras...) son representados de forma predeterminada por iconos que corresponden a la extensión cada archivo. Opcionalmente, puedes asociar una miniatura y un archivo de representación (ver video.avi en el ejemplo anterior).</li>
+		<li>Una vez todas las fotos estén organizadas y correctamente situadas en sus correspondientes carpetas, ir a <span class="pwgScreen">Administración &raquo; Herramientas &raquo; Sincronizar</span>.</li>
+	</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/es_ES/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/search.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Búsqueda</h2>
+
+<p>Búsqueda de imágenes a través del conjunto de la galería.</p>
+
+<dl>
+
+  <dt>Buscar una palabra</dt>
+
+  <dd>Búsquar una o varias palabras en todos los atributos atados a las imágenes. Utilizar * como jocker para las búsquedas parciales.</dd>
+  
+  <dt>Búsqueda de un autor</dt>
+
+  <dd>Utilizar * como jocker para las búsquedas parciales.</dd>
+
+  <dt>Búsqueda por fecha</dt>
+
+  <dd>Seleccionar una fecha y/o una fecha de fin. Dejar la fecha vacía si desea hacer una búsqueda "antes". El año debe escribirse en el último campo en forma de 4 cifras (2005 por ejemplo).</dd>
+
+  <dt>Búsqueda en las categorías</dt>
+
+  <dd>Seleccionar las categorías sobre las cuales restringir la búsqueda.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/es_ES/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/synchronize.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Sincronizar</h2>
+
+<ul>
+
+  <li>Existen 2 tipos de sincronizaciones: estructura y meta-datos. Sincronizar la estructura vuelve a sincronizar su árbol de los repertorios y los ficheros con la representación de la estructura en la base de datos. Sincronizar los méta-datos permite actualizar las informaciones como el peso del fichero, las dimensiones, los datos EXIF o IPTC.</li>
+
+  <li>La primira sincronización a efectuar es la de la estructura</li>
+
+  <li>El proceso de sincronización puede llevar tiempo (en proporción a la carga del servidor y la cantidad de ficheros por administrar), tambien es posible avanzar paso a paso: categoría por categoría.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/es_ES/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/es_ES/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Lista usuarios</h2>
+
+<p>Manipulación de las propiedades de los usuarios registrados. Solo los permisos son administrados en una pantalla diferente.</p>
+
+<h3>Añadir un usuario</h3>
+
+<p>El administrador puede añadir manualmente a usuarios.</p>
+
+<h3>Lista usuarios</h3>
+
+<p>La lista puede ser filtrada con nombre de usuario (* = mono), con grupo o el estatuto. La lista puede ser ordenada según la fecha de registro o el nombre de usuario, por orden ascendente al descendente.</p>
+
+<p>Esta pantalla funciona por modificación de varios usuarios simultáneamente:</p>
+
+<ul>
+  <li>suprimir a usuarios (necesita una confirmación)</li>
+  <li>cambiar el estatuto</li>
+  <li>asociar o disociar grupos</li>
+  <li>modificar las propiedades de visualización</li>
+  <li>modificar las propiedades anexas</li>
+</ul>
+
+<p>El blanco es la lista de los usuarios seleccionados (por defecto) o bien todos los usuarios de la lista filtrada.</p>
Index: /tags/2.6.0RC1/language/es_ES/index.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/es_ES/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalación';
+$lang['Basic configuration'] = 'Configuración de Base';
+$lang['Default gallery language'] = 'Idioma por defecto de la galería';
+$lang['Database configuration'] = 'Configuración de la Base de datos';
+$lang['Admin configuration'] = 'Configuración de la cuenta Administrador';
+$lang['Start Install'] = 'Empezar la instalación';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Este identificador aparecerá a todos sus visitantes. Le sirvira para administrar el sitio';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'La conexión al servidor es O.K., pero es imposible conectarse a esta base de datos';
+$lang['Can\'t connect to server'] = 'Imposible conectarse al servidor';
+$lang['Host'] = 'Huésped MySQL';
+$lang['User'] = 'Usuario';
+$lang['user login given by your host provider'] = 'Nombre de usuario para su alojador web';
+$lang['user password given by your host provider'] = 'El proporcionado por su alojador web';
+$lang['Database name'] = 'Nombre de la base';
+$lang['also given by your host provider'] = 'El proporcionado por su alojador web';
+$lang['Database table prefix'] = 'Prefijo nombres de mesa';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'El nombre de las tablas aparecerá con este prefijo (permite administrar mejor su base de datos)';
+$lang['enter a login for webmaster'] = 'Por favor, escriba un pseudo para el webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'El pseudo del webmaster no debe contener carácter " y \'';
+$lang['please enter your password again'] = 'Por favor, ponga su contraseña';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Debe quedar confidencial, permite acceder al panel de administración.';
+$lang['Password [confirm]'] = 'Contraseña [Confirmar]';
+$lang['verification'] = 'Comprobación';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = '¿ Necesidad de ayuda? Plantee su pregunta sobre él <a href="%s">foro de Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Los visitantes podrán ponerse en contacto con usted por este mail';
+$lang['PHP 5 is required'] = 'PHP 5  requerido';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Aparentemente, la versión PHP de su alojador web es PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo va a tratar de pasar en PHP 5 creando o modificando el fichero .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que usted mismo puede cambiar la configuración PHP y volver a lanzar  Piwigo después.';
+$lang['Try to configure PHP 5'] = 'Trate de configurar PHP 5';
+$lang['Sorry!'] = 'Lo siento!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo no pudo configurar PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = 'Usted debe ponerse en contacto con su alojador web con el fin de saber cómo configurar PHP 5';
+$lang['Hope to see you back soon.'] = 'Esperando verle  muy pronto...';
+$lang['Congratulations, Piwigo installation is completed'] = 'Félicitation, Piwigo está completamente instalado';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una solución alternativa es copiar el texto en la zona más abajo and de pegarlo en el fichero  "local/config/database.inc.php" (Atención: database.inc.php debe contener sólo lo que se encuentra en la zona, no de regreso a la línea, ningún espacio';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'La creación del fichero de configuración local/config/database.inc.php fue suspendido.';
+$lang['Download the config file'] = 'Descargar el fichero de configuración';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Usted puede descargar el fichero de configuración y carga en el repertorio local/config de su instalación Piwigo.';
+$lang['Just another Piwigo gallery'] = 'Una galería Piwigo más ';
+$lang['Welcome to my photo gallery'] = 'Bienvenido a mi galería de fotos';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'No dudes en escribir en nuestros foros para cualquier duda: %s';
+$lang['Welcome to your new installation of Piwigo!'] = '¡Bienvenid@ a la instalación de Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'host local o de otro tipo, suministrado por el proveedor de alojamiento';
+?>
Index: /tags/2.6.0RC1/language/es_ES/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/es_ES/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Español [ES]
Index: /tags/2.6.0RC1/language/es_ES/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/es_ES/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/es_ES/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Actualización';
+$lang['Upgrade from version %s to %s'] = 'Actualización de la versión %s a la %s';
+$lang['Statistics'] = 'Estadísticas';
+$lang['total upgrade time'] = 'tiempo total de la actualización';
+$lang['total SQL time'] = 'tiempo total de la consulta SQL';
+$lang['SQL queries'] = 'consultas SQL';
+$lang['Upgrade informations'] = 'Información acerca de la actualización';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Por favor, realice una comprobación de mantenimiento en [Administración>Herramientas>Mantenimiento] en caso de detectar algún problema.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaución, se han desactivado los siguientes plugins. Verifique si existen actualizaciones de los mismos antes de reactivarlos:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Sólo un administrador puede lanzar la actualización: por favor, identifíquese a continuación.';
+$lang['You do not have access rights to run upgrade'] = 'No dispone de los permisos suficientes para realizar la actualización.';
+$lang['All sub-albums of private albums become private'] = 'Todos aquellos sub-álbumes pertenecientes a álbumes privados se convertirán en privados';
+$lang['User permissions and group permissions have been erased'] = 'Los permisos de usuarios y grupos han sido eliminados';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Sólo el prefijo de las miniaturas y el email del webmaster han sido guardados por la configuración anterior';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Esta página propone actualizar la base de datos de su antigua versión de Piwigo a la nueva versión.  El asistente de actualización detecta que actualmente está ejecutando la <strong>versión %s</strong> (o equivalente).';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'En <i>%s</i>, antes <b>?></b>, insertar:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Como medida de precaución, los siguientes temas han sido desactivados. Compruebe si existe actualizaciones antes de reactivarlos:';
+?>
Index: /tags/2.6.0RC1/language/et_EE/about.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>See fotogallerii kasutab Piwigot.</p>
+
+<p>Piwigo on lihtne fotogalleriirakendus veebile, mida ehitab ja peab üleval üks tore kasutajate ja arendajate kogukond. Laienduste süsteem teeb Piwigo lihtsalt kohandatavaks. Pealekauba on Piwigo tasuta ja vaba tarkvara.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Külasta Piwigo veebilehekülge</a></p>
+
+<p> Eestikeelset tõlget peavad üleval (tähestikulises järjekorras):
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15140">daddo</a></li>
+		<li>Jolly</li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18149">kersta</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16978">kristian</a></li>
+	</ul>
+Tänusõnad tõlkijatele! </P> 
Index: /tags/2.6.0RC1/language/et_EE/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/et_EE/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/admin.lang.php	(revision 25596)
@@ -0,0 +1,956 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Add to caddie'] = 'lisa korvi';
+$lang['Average rate'] = 'Keskmine hinne';
+$lang['Rate'] = 'Hinda';
+$lang['Caddie'] = 'Korv';
+
+$lang[' and %d virtual'] = 'ning %d virtuaalne';
+$lang[' and %d virtuals'] = 'ning %d virtuaalseid';
+$lang['%d album including'] = 'üks album, mille juures';
+$lang['%d album moved'] = 'üks album teiseldatud';
+$lang['%d albums including'] = '%d albumeid, mille juures';
+$lang['%d albums moved'] = '%d albumit teiseldatud';
+$lang['%d anomalies have been detected corrected.'] = '%d tehnilist hälvet leiti ja parandati ära.';
+$lang['%d anomalies have been detected.'] = '%d tehnilist hälvet leiti.';
+$lang['%d anomalies have been ignored.'] = '%d tehnilist hälvet ignoreeritakse.';
+$lang['%d anomalies have not been corrected.'] = '%d tehnilist hälvet on parandamata.';
+$lang['%d anomaly has been corrected.'] = 'üks tehniline hälve parandati ära.';
+$lang['%d anomaly has been detected.'] = 'üks tehniline hälve leiti.';
+$lang['%d anomaly has been ignored.'] = 'ühte tehnilist hälvet ignoreeritakse.';
+$lang['%d anomaly has not been corrected.'] = 'üks tehniline hälve on parandamata.';
+$lang['%d association'] = 'üks assotsiatsioon';
+$lang['%d associations'] = '%d assotsiatsiooni';
+$lang['%d day'] = 'üks päev';
+$lang['%d days'] = '%d päeva';
+$lang['%d group'] = 'üks grupp';
+$lang['%d groups'] = '%d gruppi';
+$lang['%d guest'] = '%d külaline';
+$lang['%d guests'] = '%d külalist';
+$lang['%d hour'] = '%d tund';
+$lang['%d hours'] = '%d tundi';
+$lang['%d line filtered'] = '%d rida filtreeritud';
+$lang['%d lines filtered'] = '%d rida filtreeritud';
+$lang['%d mail was not sent.'] = '%d meil jäi saatmata.';
+$lang['%d mail was sent.'] = '%d meil saadetud.';
+$lang['%d mails were not sent.'] = '%d meili jäi saatmata.';
+$lang['%d mails were sent.'] = '%d meili ära saadetud.';
+$lang['%d member'] = '%d liige';
+$lang['%d members'] = '%d liiget';
+$lang['%d minute'] = '%d minut';
+$lang['%d minutes'] = '%d minutit';
+$lang['%d month'] = '%d kuu';
+$lang['%d months'] = '%d kuud';
+$lang['%d of %d photos selected'] = '%d foto valitud %d-st';
+$lang['%d parameter was updated.'] = '%d parameeter muudetud.';
+$lang['%d parameters were updated.'] = '%d parameetrit muudetud.';
+$lang['%d photo was deleted'] = '%d foto kustutatud';
+$lang['%d photos uploaded'] = '%d fotot üles laaditud';
+$lang['%d photos were deleted'] = '%d fotot kustutatud';
+$lang['%d physical'] = '%d füüsiline';
+$lang['%d physicals'] = '%d füüsilist';
+$lang['%d second'] = '%d sekund';
+$lang['%d seconds'] = '%d sekundit';
+$lang['%d tag'] = '%d märksõna';
+$lang['%d tags'] = '%d märksõna';
+$lang['%d user comment rejected'] = '%d-st kommentaarist keelduti';
+$lang['%d user comment validated'] = '%d kommentaar kinnitatud';
+$lang['%d user comments rejected'] = '%d kommentaari tagasi lükatud';
+$lang['%d user comments validated'] = '%d kommentaari kinnitatud';
+$lang['%d user deleted'] = '%d kasutaja kustutatud';
+$lang['%d user was not updated.'] = '%d kasutajat ei uuendatud.';
+$lang['%d user was updated.'] = '%d kasutaja uuendatud.';
+$lang['%d user'] = '%d kasutaja';
+$lang['%d users deleted'] = '%d kasutajat kustutatud';
+$lang['%d users were not updated.'] = '%d kasutajat ei uuendatud.';
+$lang['%d users were updated.'] = '%d kasutajat uuendatud.';
+$lang['%d users'] = '%d kasutajat';
+$lang['%d waiting for validation'] = '%d ootab kinnitamist';
+$lang['%d week'] = '%d nädal';
+$lang['%d weeks'] = '%d nädalat';
+$lang['%d year'] = '%d aasta';
+$lang['%d years'] = '%d aastat';
+$lang['%s ago'] = '%s tagasi';
+$lang['%s has been successfully updated.'] = '%s on edukalt uuendatud.';
+$lang['%s in the future'] = '%s tulevikus';
+$lang['%s photos can not be regenerated'] = '%s fotot ei saa taastata';
+$lang['%s photos have been regenerated'] = '%s fotot taastati';
+$lang['+ Add an upload box'] = '+ Lisa üleslaaditava';
+$lang[', click on'] = ', klõpsa';
+$lang['... or '] = '... või';
+$lang['ACCESS_0'] = 'Vaba ligipääs';
+$lang['ACCESS_1'] = 'Ligipääs kõigile';
+$lang['ACCESS_2'] = 'Ligipääs registreerinuile';
+$lang['ACCESS_3'] = 'Ligipääs administraatoritele';
+$lang['ACCESS_4'] = 'Veebimeistrite ligipääs';
+$lang['ACCESS_5'] = 'Pole ligipääsu';
+$lang['Access type'] = 'Ligipääsu tüüp';
+$lang['Action'] = 'Tegevus';
+$lang['Actions'] = 'Tegevusi';
+$lang['Add New Language'] = 'Lisa keel';
+$lang['Add Photos'] = 'Lisa fotosid';
+$lang['Add a criteria'] = 'Lisa kriteerium';
+$lang['Add a filter'] = 'Lisa filter';
+$lang['Add a tag'] = 'Lisa märksõna';
+$lang['Add a user'] = 'Lisa kasutaja';
+$lang['Add'] = 'Lisa';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s peab olema määratud vääraks (false) failis "local/config/config.inc.php"';
+$lang['%s value is not correct file because exif are not supported'] = '%s väärtus on vale, kuna Exif metaandmeid ei toetata';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u kasutajatel on automaatselt luba, kuna nad kuuluvad loaga gruppi.';
+$lang['(this tag will be deleted)'] = '(see märksõna kustutakse)';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> on programm mis võimaldab sul ühenduda Android telefoni või tahvelarvutiga su Piwigo galleriisse, toimetada albumeid ja laadida üles fotosid.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em> on programm mis võimaldab sul ühenduda iPhone, iPad või iPod Touch-iga su Piwigo galleriisse, toimetada albumeid ja laadida üles fotosid.';
+$lang['A locked gallery is only visible to administrators'] = 'Lukustatud galleriid on ainult nähtavad administraatoritele';
+$lang['A new version of Piwigo is available.'] = 'Piwigo uus versioon on saadaval.';
+$lang['Activate Navigation Bar'] = 'Aktiveeri navigatsiooniriba';
+$lang['Activate Navigation Thumbnails'] = 'Aktiveeri navigeerimiseks pisipildid';
+$lang['Activate comments'] = 'Aktiveeri kommentaarid';
+$lang['Activate icon "%s"'] = 'Aktiveeri ikoon "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktiveeri ikoon "uus" albumite ja fotode juures';
+$lang['Activate'] = 'Aktiveeri';
+$lang['Active Languages'] = 'Aktiivsed keeled';
+$lang['Active Plugins'] = 'Aktiivsed pluginad';
+$lang['Active Themes'] = 'Aktiivsed teemad';
+$lang['Add New Theme'] = 'Lisa uus teema';
+$lang['Add a virtual album'] = 'Lisa virtuaalne album';
+$lang['Add another set of photos'] = 'Lisa fotode komplekt';
+$lang['Add detailed content'] = 'Lisa detailne sisu';
+$lang['Add group'] = 'Lisa grupp';
+$lang['Add tags'] = 'Lisa märksõnu';
+$lang['Add write access to the "%s" directory'] = 'Lisa kirjutamisõigused kaustale "%s"';
+$lang['Add/delete a permalink'] = 'Lisa või kustuta püsilink';
+$lang['Added by %s'] = 'Lisas %s';
+$lang['Administration Home'] = 'Administreerimine';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom on fotograafia arvutiprogramm, mis on mõeldud haldamaks suuri fotode kogusid ning fotode järeltöötluseks.';
+$lang['Album "%s" has been added'] = 'Lisati album "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" sisaldab nüüd %d fotot';
+$lang['Album list management'] = 'Albumite haldamine';
+$lang['Album manual order was saved'] = 'Albumite järjekord salvestati';
+$lang['Album name'] = 'Albumi nimi';
+$lang['Album photos associated to the following albums: %s'] = 'Albumis sisalduvad fotod on seotud veel järgmiste albumitega: %s';
+$lang['Album updated successfully'] = 'Album uuendati';
+$lang['Albums automatically sorted'] = 'Albumeid sorteeritakse automaatselt';
+$lang['All %d photos are selected'] = 'Kõik %d fotod on valitud';
+$lang['All extensions are up to date.'] = 'Kõik laiendused on uuendatud ja ajakohased.';
+$lang['All languages are up to date.'] = 'Kõik keeled on uuendatud ja ajakohased.';
+$lang['All plugins are up to date.'] = 'Kõik pluginad on uuendatud ja ajakohased.';
+$lang['All themes are up to date.'] = 'Kõik teemad on uuendatud ja ajakohased.';
+$lang['Allow rating'] = 'Luba fotode hindamine';
+$lang['Allow user customization'] = 'Luba kasutajatel muuta kujundust';
+$lang['Allow user registration'] = 'Luba kasutajatel registreeruda';
+$lang['Allow users to delete their own comments'] = 'Luba kasutajatel kustutada oma kommentaare';
+$lang['Allow users to edit their own comments'] = 'Luba kasutajatel toimetada oma kommentaare';
+$lang['Allowed file types: %s.'] = 'Lubatud faililaiendid: %s';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Lahtipakkimisel tekkis viga. Palun vaata üle Piwigo failide kirjutamisõigused.<br><a href="%s">Näita logifaili</a>.';
+$lang['An error has occured during upgrade.'] = 'Uuendamisel tekkis viga.';
+$lang['An error occured during extraction (%s).'] = 'Faili lahtipakkimisel tekkis viga (%s).';
+$lang['An information email was sent to group "%s"'] = 'Epost informatsiooniga saadeti grupile "%s"';
+$lang['Anomaly'] = 'Hälve';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Siiski, see kaart on ainult veebimeistritele nähtav, mitte administraatoritele.';
+$lang['Applications'] = 'Rakendused';
+$lang['Apply action'] = 'Rakenda tegevused';
+$lang['Apply selected corrections'] = 'Rakenda valitud parandused';
+$lang['Apply to sub-albums'] = 'Rakenda alam-albumitele';
+$lang['Apply watermark if height is bigger than'] = 'Lisa vesimärk juhul kui foto kõrgus on suurem kui';
+$lang['Apply watermark if width is bigger than'] = 'Lisa vesimärk juhul kui foto laius on suurem kui';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Lahutuse ligilähedane maksimum: %dM pikslit (see on %dx%d pikslit).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Tahad sa kindlasti paigaldada seda uuendust? Sa pead kinnitama kas see versioon ei vaja eelnevalt kõrvaldamist.';
+$lang['Are you sure you want to delete this plugin?'] = 'Kas sa kindlasti tahad kustutada selle plugina?';
+$lang['Are you sure you want to install this plugin?'] = 'Kas sa kindlasti tahad paigaldada selle plugina?';
+$lang['Associate to album'] = 'Seo albumiga';
+$lang['Associated'] = 'Seotud';
+$lang['Authorize users to add comments on selected albums'] = 'Luba kasutajatel kommenteerida valtiduid albumeid';
+$lang['Authorized'] = 'Lubatud';
+$lang['Automatic correction'] = 'Automaatne parandamine';
+$lang['Automatic sort order'] = 'Automaatne sortimine';
+$lang['By rank'] = 'Hinde järgi';
+$lang['Can\'t connect to server.'] = 'Ei olnud võimalik ühenduda serveriga.';
+$lang['Can\'t create temporary file.'] = 'Ajutise faili loomine ebaõnnestus.';
+$lang['Can\'t download archive.'] = 'Arhiivi ei õnnestunud alla laadida.';
+$lang['Can\'t read or extract archive.'] = 'Arhiivi ei õnnestunud lugeda või lahti pakkida.';
+$lang['Cancel'] = 'Katkesta';
+$lang['Cannot delete the old permalink !'] = 'Polnud võimalik kustutada vana püsilinki';
+$lang['Change Admin Colors'] = 'Vaheta halduse värvid';
+$lang['Check all'] = 'Vali kõik';
+$lang['Check automatic corrections'] = 'Vaata automaatseid parandusi';
+$lang['Check for updates'] = 'Otsi uuendusi';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Versiooni uuenduse otsimine nurjus teadmata põhjustel.';
+$lang['Check for upgrade'] = 'Otsi versiooni uuendust';
+$lang['Check integrity'] = 'Vaata terviklikkust';
+$lang['Choose an action'] = 'Vali tegevus';
+$lang['Choose an option'] = 'Vali valik';
+$lang['Classic display'] = 'Klassikaline kuvamine';
+$lang['Comments for all'] = 'Kommentaarid kõigile';
+$lang['Configuration'] = 'Seadistamine';
+$lang['Confirm merge'] = 'Kinnita kokkusulatamist';
+$lang['Continue processing treatment'] = 'Jätka praegust käsitlust';
+$lang['Correction'] = 'Parandus';
+$lang['Email administrators when a comment is deleted'] = 'Saada epost administraatoritele kommentaari kustutamise puhul';
+$lang['Email administrators when a comment is modified'] = 'Saada epost administraatoritele kommentaari toimetamise puhul';
+$lang['Main "webmaster" user does not exist'] = 'Peamine veebimeister puudub';
+$lang['Main "webmaster" user status is incorrect'] = 'Peamise veebimeistri kasutajaolek on vigane';
+$lang['Notify administrators when a comment is'] = 'Anna administraatoritele teada kui kommentaari';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Veebimeister on sulle ette määranud teadaannete saamise meili teel.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Veebimeister on tühistanud su teadaannete saamise meili peale.';
+$lang['Webmaster cannot be deleted'] = 'Veebimeistrit ei saa kustutada';
+$lang['Webmaster status is required.'] = 'Veebimeistrile on olek nõutav';
+$lang['administrators'] = 'administraatorid';
+$lang['user_status_admin'] = 'Administraator';
+$lang['user_status_webmaster'] = 'Veebimeister';
+$lang['Advanced features'] = 'Täiendatud võimalusi';
+$lang['All optimizations have been successfully completed.'] = 'Kõik optimeeringud on edukalt läbi viidud.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = '<em>Aperture</em> on üks võimas fototöötlusprogram <em>Macidele</em>.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = '<em>Aperture</em> on mõeldud professionaalsetele fotograafidele ent <em>iPhoto</em> kasutajasõbralikkusega.';
+$lang['Available on'] = 'Saadaval';
+$lang['Available only with HTML format'] = 'Ainult saadaval HTML vormingus';
+$lang['Available versions for'] = 'Versioonid saadaval';
+$lang['Batch Manager'] = 'Pakktöötluse haldur';
+$lang['Bound Theme'] = 'Bound Theme';
+$lang['By %s'] = 'Autor: %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo loob vaikimisi uue, veebile mõeldud suuruses foto kõrge lahutusega versioonist.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Huvikeskpunkt pannakse vaikimisi keset fotot.';
+$lang['Caddie management'] = 'Korvi haldamine';
+$lang['Center of interest'] = 'Huvikeskpunkt';
+$lang['Complementary mail content'] = 'Täiendav meilisisu';
+$lang['Correction applied with error'] = 'Parandust rakendamisel esines viga';
+$lang['Correction applied with success'] = 'Parandati edukalt';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Parandatud anomaaliat ei ignoreerita edaspidi';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Loo kaust "%s" paigaldatud Piwigo juurikasse';
+$lang['Create this site'] = 'Loo gallerii';
+$lang['Create'] = 'Loo';
+$lang['Crop'] = 'Kärbi';
+$lang['Current name'] = 'Praegune nimi';
+$lang['Database synchronization with files'] = 'Andmebaasi sünkroniseerimine failide kaudu';
+$lang['Database'] = 'Andmebaas';
+$lang['Date'] = 'Kuupäev';
+$lang['Day'] = 'Päev';
+$lang['Deactivate all'] = 'Deaktiveeri kõik';
+$lang['Deactivate'] = 'Deaktiveeri';
+$lang['Default comments order'] = 'Kommentaaride vaikimisi järjestus';
+$lang['Default display'] = 'Vaikimisi kuvamine';
+$lang['Default photos order'] = 'Fotode vaikimisi järjestus';
+$lang['Default user cannot be deleted'] = 'Vaikekasutajat ei saa kustutada';
+$lang['Default user does not exist'] = 'Vaikekasutaja ei eksisteeri';
+$lang['Delete Representant'] = 'Kustuta albumi pisipilt';
+$lang['Delete multiple size images'] = 'Kustuta mitmesuuruslike pilte';
+$lang['Delete orphan tags'] = 'Kustuta orvuks jäänud märksõnad';
+$lang['Delete selected photos'] = 'Kustuta valitud fotod';
+$lang['Delete selected tags'] = 'Kustuta valitud märksõnad';
+$lang['Delete selected users'] = 'Kustuta valitud kasutajad';
+$lang['Delete this language'] = 'Kustuta see keel';
+$lang['Delete this theme'] = 'Kustuta see teema';
+$lang['Deleted on'] = 'Kustutatud';
+$lang['Deletions'] = 'Kustutamised';
+$lang['Deny selected groups'] = 'Keela valitud grupid';
+$lang['Deny selected users'] = 'Keela valitud kasutajad';
+$lang['Description'] = 'Kirjeldus';
+$lang['Detailed informations'] = 'Täiendatud informatsioon';
+$lang['Directory does not exist'] = 'Kaust ei eksisteeri';
+$lang['Directory'] = 'Kaust';
+$lang['Discover album:'] = 'Avasta album:';
+$lang['Display options'] = 'Kuvamisvalikud';
+$lang['Dissociate from album'] = 'Eralda sellest albumist';
+$lang['Dissociated'] = 'Eraldatud';
+$lang['Do you want to activate anyway?'] = 'Kas sa tahad selle siiski aktiveerida?';
+$lang['Documentation'] = 'Dokumentatsioon';
+$lang['Does not represent'] = 'Puuduvad pisipildid';
+$lang['Download,'] = 'Laadi alla,';
+$lang['Downloads'] = 'Allalaadimised';
+$lang['Drag to re-order'] = 'Klõpsa ja lohista ümberjärjestamiseks';
+$lang['Drop into album'] = 'Vali album';
+$lang['Dump Database'] = 'Viska andmebaas minema';
+$lang['Duplicate selected tags'] = 'Dubleeri valitud märksõnad';
+$lang['Duplicates'] = 'Duplikaadid';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'VIGA: PLUGIN PUUDUB ENT ON INSTALLITUD! KÕRVALDA SEE KOHE!';
+$lang['ERROR'] = 'VIGA';
+$lang['Edit album permissions'] = 'Toimeta albumi ligipääsuluba';
+$lang['Edit album'] = 'Toimeta albumit';
+$lang['Edit photo information'] = 'Toimeta foto infot';
+$lang['Edit photo'] = 'Toimeta fotot';
+$lang['Edit ranks'] = 'Toimeta hinnanguid';
+$lang['Edit selected tags'] = 'Toimeta valitud märksõnu';
+$lang['Edit tags'] = 'Toimeta märksõnu';
+$lang['Element type'] = 'Elemendi tüüp';
+$lang['Element'] = 'Element';
+$lang['Email admins when a comment requires validation'] = 'Teavita administraatoreid epostiga kui kommentaar vajab kinnitamist';
+$lang['Email admins when a new user registers'] = 'Teavita administraatoreid epostiga kui uus kasutaja registreerus';
+$lang['Email admins when a valid comment is entered'] = 'Teavita administraatoreid epostiga kui kehtiv kommentaar sisestati';
+$lang['Environment'] = 'Keskkond';
+$lang['Error list'] = 'Vigade nimekiri';
+$lang['Error on file "%s" : %s'] = 'Viga faili "%s" puhul : %s';
+$lang['Error when sending email to %s [%s].'] = 'Viga eposti saatmisel saajale %s [%s].';
+$lang['Errors caption'] = 'Vigade seletuskiri';
+$lang['Everybody'] = 'Kõik';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Täitmisaeg lõppes, hooldust peab siiski lõpuni viima [Arvestatud aeg: %d sekundit].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Täitmisaeg lõppes, hooldust peab siiski lõpuni viima [Arvestatud aeg: %d sekundit].';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif laiendus ei ole saadaval, administraator peaks selle kasutamise deaktiveerima';
+$lang['Extend for templates'] = 'Laienda malle';
+$lang['Extensions Update'] = 'Laienduste uuendused';
+$lang['FTP + Synchronization'] = 'FTP + Sünkroniseerimine';
+$lang['Failed to write file to disk'] = 'Faili kirjutamine kettale nurjus';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Võimalusi nagu gallerii kuvamine, albumite loomine ja fotode üles laadimine.';
+$lang['File upload stopped by extension'] = 'Faili üleslaadimine lõpetati laienduse poolt';
+$lang['File/directory read error'] = 'Faili või kausta lugemisviga';
+$lang['File'] = 'Fail';
+$lang['Find a new representant by random'] = 'Vaheta albumi pisipilt juhuslikult valitu vastu';
+$lang['Follow Orientation'] = 'Järgi orientatsiooni';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Järgmised pluginad võib-olla ei ühildu uue Piwigo versiooniga:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Järgmised teemad võib-olla ei ühildu uue Piwigo versiooniga:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Fotosuurustega, mis nõuavad kärpimist (nagu nt "Ruut"), püüab Piwigo võimalikult hästi arvestada foto huvikeskpunktiga.';
+$lang['Forbid this language to users'] = 'Keela kasutajatel seda keelt kasutada';
+$lang['Forbid this theme to users'] = 'Keela kasutajatel seda teemad kasutada';
+$lang['Forbidden'] = 'Keelatud';
+$lang['Form'] = 'Kuju';
+$lang['GD library is missing'] = 'GD teek on puuduv';
+$lang['GD version'] = 'GD teegi versioon';
+$lang['Gallery title'] = 'Gallerii nimi';
+$lang['Gallery unlocked'] = 'Gallerii lukustamata';
+$lang['General statistics'] = 'Üldine statistika';
+$lang['Generate multiple size images'] = 'Genereeri fotole mitmes suuruses variandid';
+$lang['Get Support on Piwigo Forum'] = 'Leia abi Piwigo foorumist';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Anna kirjutamisõigused (chmod 777) kaustale "%s", mis asub Piwigo juurkataloogis';
+$lang['Go to %s or %s for more informations'] = 'Vaata %s või %s lisa informatsiooni saamiseks';
+$lang['Go to'] = 'Mine';
+$lang['Grant selected groups'] = 'Luba valitud grupidele';
+$lang['Grant selected users'] = 'Luba valitud kasutajatele';
+$lang['Graphics Library'] = '<em>Graphics Library</em>';
+$lang['Group management'] = 'Grupide haldamine';
+$lang['Group name'] = 'Grupi nimi';
+$lang['Group'] = 'Grupp';
+$lang['Groups and users'] = 'Grupid ja kasutajad';
+$lang['Groups'] = 'Grupid';
+$lang['Guest Settings'] = 'Külalise valikud';
+$lang['Guest cannot be deleted'] = 'Külaliskasutajat ei saa kustutada';
+$lang['Guests'] = 'Külalised';
+$lang['Height'] = 'Kõrgus';
+$lang['Hello,'] = 'Tere tulemast';
+$lang['Hello'] = 'Tere tulemast';
+$lang['Help Me'] = 'Aita mind';
+$lang['Hide'] = 'Peida';
+$lang['High definition enabled'] = 'Kõrge lahutus võimaldatud';
+$lang['High definition'] = 'Kõrge lahutus';
+$lang['high'] = 'kõrge';
+$lang['History'] = 'Ajalugu';
+$lang['Hit'] = 'Tabamus';
+$lang['Hour'] = 'Tund';
+$lang['Hoverbox display'] = 'Hõljukkasti kuvamine';
+$lang['I decide to update anyway'] = 'Ma valin siiski uuendada';
+$lang['IP'] = 'IP';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Juhul kui puudub kõrge lahutusega foto, ja praegune veebile mõeldud suurus (nn veebi-suurus) on suurem kui uus valitud suurus, siis märgib Piwigo suurima foto kui kõrge lahutusega, ja väiksemad, veebile mõeldud versioonid tehakse sellest. (See kõik tähendab lihtsalt, et Piwigo on nutikas.)';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Kui satud probleemi otsa, või sul tekib mõni küsimus, saatke sõnumiga aadressile';
+$lang['Ignore All'] = 'Eira kõike';
+$lang['Ignore selected anomalies'] = 'Eira valitud hälbeid';
+$lang['Ignore this update'] = 'Eira seda uuendust';
+$lang['Image Quality'] = 'Foto kvaliteet';
+$lang['Image id'] = 'Foto id';
+$lang['Images manual order was saved'] = 'Fotode valitud järjestus salvestati';
+$lang['Impossible automatic correction'] = 'Automaatne parandamine ei ole võimalik';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Teemat ei saa aktiveerida, kuna puudub selle üldteema: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Vaikekeelt ei saa deaktiveerida, vali kõigepealt teine vaikekeel.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Viimast ja ainsat keelt ei saa deaktiveerida, vähemalt nõutakse vähemalt üht keelt.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Viimast ja ainsat teemat ei saa deaktiveerida, nõutakse vähemalt üht teemat.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Teemat ei saa kustutada, kuna teised teemad kasutavad seda: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Initsialiseerimisfailis "php.ini" on <em>upload_max_filesize</em> (%sB) suurem kui <em>post_max_size</em> (%sB), sa peaksid muutma need võrdväärseteks';
+$lang['Inactive Languages'] = 'Deaktiveeritud keeled';
+$lang['Inactive Plugins'] = 'Deaktiveeritud pluginad';
+$lang['Inactive Themes'] = 'Deaktiveeritud teemad';
+$lang['Include display of recent photos grouped by dates'] = 'Kuva hiljutisi fotosid kuupäevade kaupa';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Kuva ajalugu (hoiatus: serveri mälulimiit võib ületuda)';
+$lang['Information data registered in database'] = 'Informatsiooniandmed registreeriti andmebaasis';
+$lang['Informations'] = 'Informatsioon';
+$lang['Install on your computer,'] = 'Paigalda su arvutisse,';
+$lang['Installed Languages'] = 'Paigaldatud keeled';
+$lang['Installed Themes'] = 'Paigaldatud teemad';
+$lang['Install'] = 'Paigalda';
+$lang['Instructions to use Piwigo'] = 'Piwigo kasutusjuhendeid';
+$lang['Invert'] = 'Inverteeri';
+$lang['Language has been successfully installed'] = 'Keel on paigaldatud';
+$lang['Languages which need upgrade'] = 'Uuendamist vajavad keeled';
+$lang['Languages'] = 'Keeled';
+$lang['Last hit'] = 'Viimane tabamus';
+$lang['Last import'] = 'Viimane sisestus';
+$lang['Last revisions'] = 'Viimane revisjon';
+$lang['Last send'] = 'Viimati saadetud';
+$lang['Learn more'] = 'Õpi rohkem';
+$lang['Level 0'] = '—';
+$lang['Level 1'] = 'Kontaktid';
+$lang['Level 2'] = 'Sõbrad';
+$lang['Level 4'] = 'Perekond';
+$lang['Level 8'] = 'Administraatorid';
+$lang['Link all album photos to a new album'] = 'Seo kõik albumi fotod uude albumisse';
+$lang['Link all album photos to some existing albums'] = 'Seo kõik albumi fotod teise albumiga';
+$lang['Linked albums'] = 'Seotud albumid';
+$lang['List'] = 'Nimekiri';
+$lang['Local'] = 'Lokaalne';
+$lang['Lock albums'] = 'Lukusta albumid';
+$lang['Lock gallery'] = 'Lukusta gallerii';
+$lang['Locked'] = 'Lukustatud';
+$lang['Lock'] = 'Lukk';
+$lang['Mail address is obligatory for all users'] = 'Eposti aadress on kohustuslik';
+$lang['Mail content'] = 'Eposti sisu';
+$lang['Mail sent to %s [%s].'] = 'Epost saadetud aadressile %s [%s].';
+$lang['Main "guest" user does not exist'] = 'Külaliskasutaja puudub';
+$lang['Main "guest" user status is incorrect'] = 'Külaliskasutaja olek on vigane';
+$lang['Main Page'] = 'Avaleht';
+$lang['Maintenance'] = 'Hooldamine';
+$lang['Make this language available to users'] = 'Tee see keel saadavaks kasutajatele';
+$lang['Make this theme available to users'] = 'Tee see teema saadavaks kasutajatele';
+$lang['Manage Permissions'] = 'Halda pääsuõigusi';
+$lang['Manage authorizations for selected albums'] = 'Halda valitud albumite volitusi';
+$lang['Manage permissions for group "%s"'] = 'Halda grupi "%s" pääsuõigusi';
+$lang['Manage permissions for user "%s"'] = 'Halda kasutaja "%s" pääsuõigusi';
+$lang['Manage photo ranks'] = 'Halda foto hinnanguid';
+$lang['Manage tags'] = 'Halda märksõnu';
+$lang['Manage this set of %d photos'] = 'Halda seda %d foto kogu';
+$lang['Manage'] = 'Halda';
+$lang['Manual order'] = 'Käsijärjestus
+';
+$lang['Maximum height'] = 'Maksimum kõrgus';
+$lang['Maximum width'] = 'Maksimum laius';
+$lang['Maximum file size: %sB.'] = 'Maksimum faili suurus: %sB.';
+$lang['Members'] = 'Liikmed';
+$lang['Menu Management'] = 'Menüüd';
+$lang['Merge selected tags'] = 'Liida valitud märksõnad';
+$lang['Merge tags'] = 'Liida märksõnad';
+$lang['Metadata synchronization results'] = 'Metaandmete sünkroniseerimise tulemused';
+$lang['Metadata synchronized from file'] = 'Metaandmed sünkroniseeritud failist';
+$lang['Minimum privacy level'] = 'Madalaim privaatsuse tase';
+$lang['Miscellaneous'] = 'Nipet-näpet';
+$lang['Missing Plugins'] = 'Puuduvad pluginad';
+$lang['Missing a temporary folder'] = 'Puudub ajutiste failide kataloog';
+$lang['Modify information'] = 'Muuda informatsiooni';
+$lang['Month'] = 'Kuu';
+$lang['Move albums'] = 'Liiguta albumeid';
+$lang['Move to album'] = 'Liiguta albumisse';
+$lang['Move'] = 'Liiguta';
+$lang['Multiple Size'] = 'Mitmed suurused';
+$lang['Name of the duplicate'] = 'Duplikaadi nimi';
+$lang['Name'] = 'Nimi';
+$lang['New Version'] = 'Uus versioon';
+$lang['New name'] = 'Uus nimi';
+$lang['New parent album'] = 'Uus kõrgema taseme album';
+$lang['New photos added'] = 'Uusi fotosid lisatud';
+$lang['New photos were added'] = 'Uusi fotosid on lisatud';
+$lang['New tag'] = 'Uus märksõna';
+$lang['No destination tag selected'] = 'Sihtmärksõna puudub';
+$lang['No display'] = 'Kuvamine puudub';
+$lang['No file was uploaded'] = 'Ühtki faili ei laaditud üles';
+$lang['No group is permitted to see this private album'] = 'Ükski grupp ei ole lubatud vaadata seda privaatset albumit';
+$lang['No mail to send.'] = 'Ühtki meili pole saata.';
+$lang['No order field selected'] = 'Järjestuskriteerium on valimata';
+$lang['No photo can be deleted'] = 'Ühtki fotot ei saa kustutada';
+$lang['No photo in the current set.'] = 'Fotod puuduvad valitud kogumikus.';
+$lang['No photo in this album'] = 'Selles albumis pole ühtki fotot';
+$lang['No photo selected, %d photos in current set'] = 'Ühtki fotot pole valitud, selles kogumikus on %d fotot.';
+$lang['No photo selected, no action possible.'] = 'Ühtki fotot pole valitud, ükski tegevus pole võimalik';
+$lang['No results'] = 'Ei leidnud vasteid';
+$lang['No user to send notifications by mail.'] = 'Ühtki kasutajat pole, keda teavitada epostiga.';
+$lang['None'] = 'Mitte ükski';
+$lang['Not cropped correctly?'] = 'Ei kärbitud õigesti?';
+$lang['Notification'] = 'Teatamine';
+$lang['Number of comments per page'] = 'Kommentaaride arv lehekülje kohta';
+$lang['Number of downloads'] = 'Allalaadimiste arv';
+$lang['Number of rates'] = 'Hinnangute arv';
+$lang['Number of thumbnails to create'] = 'Tekitavate pisipiltide arv';
+$lang['Numeric identifier : %d'] = 'ID-number: %d';
+$lang['Obsolete Plugins'] = 'Iganenud pluginad';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'GNU/Linuksi kasutajana, lihtsalt paigalda rakendus <em>Shotwell</em> kasutades paketihaldurit, ning aktiveeri Piwigo avaldamisvõimaluse.';
+$lang['Only private albums are listed'] = 'Ainult privaatsed albumid on loendatud';
+$lang['Opacity'] = 'Läbipaistmatus';
+$lang['Operating system'] = 'operatsioonisüsteem';
+$lang['Optional URL keyword'] = 'Valikulised URL võtmesõnad';
+$lang['Options'] = 'Valikud';
+$lang['Original Size'] = 'Originaal suurus';
+$lang['Original file : %s'] = 'Originaalfail: %s';
+$lang['Original templates'] = 'Originaalmallid';
+$lang['Other plugins'] = 'Teisi pluginaid';
+$lang['Other private albums'] = 'Teisi privaatseid albumeid';
+$lang['Overall'] = 'Ülevaade';
+$lang['Page banner'] = 'Lehekülje päistiitel';
+$lang['Page end'] = 'Lehekülje jalus';
+$lang['Pages seen'] = 'Lehti nähtud';
+$lang['Parameter'] = 'Seadistused';
+$lang['Parameters'] = 'Parameetrid';
+$lang['Parent album'] = 'Kõrgema tasandi album';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Parooli kinnitus puudub. Palun kinnita valitud parool.';
+$lang['Password is missing. Please enter the password.'] = 'Parool puudub. Palun sisesta parool.';
+$lang['Path'] = 'Asukoht';
+$lang['Pending Comments'] = 'Ootel kommentaarid';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Püsilinki "%s" on juba kasutusel albumi "%s" jaoks. Kustuta see püsilinkide ajaloost.';
+$lang['Permalink %s is already used by album %s'] = 'Püsilinki "%s" on juba kasutusel albumi "%s" jaoks';
+$lang['Permalink history'] = 'Püsilinkide ajalugu';
+$lang['Permalink'] = 'Püsilink';
+$lang['Permalinks'] = 'Püsilingid';
+$lang['Permission denied'] = 'Ligipääs keelatud';
+$lang['Permission granted for groups'] = 'Ligipääsuluba antud grupidele';
+$lang['Permission granted for users'] = 'Ligipääsuluba antud kasutajatele';
+$lang['Permission granted thanks to a group'] = 'Ligipääsuluba antud tänu grupile';
+$lang['Permission granted'] = 'ligipääsuluba antud';
+$lang['Permission management'] = 'Ligipääsulubade haldamine';
+$lang['Permissions'] = 'Ligipääsuload';
+$lang['Photo %s of %s'] = 'Foto %d %d-st';
+$lang['Photo Page'] = 'Foto lehekülg';
+$lang['Photo Properties'] = 'Foto omadused';
+$lang['Photo informations updated'] = 'Foto info uuendatud';
+$lang['Photo name'] = 'Foto nimi';
+$lang['Photo sizes with crop'] = 'Foto suurused kärpimisega';
+$lang['Photo unreachable or no support'] = 'Fotole puudub ligipääs või on see toetamata vormingus';
+$lang['Photos generation in progress...'] = 'Fotode genereerimine edenemisel...';
+$lang['Photos'] = 'Fotod';
+$lang['Piwigo Administration'] = 'Piwigo administratsioon';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo teadaannete infoleht';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo avaldamisplugin <em>Lightroom</em>i jaoks';
+$lang['Piwigo Update'] = 'Piwigo uuendus';
+$lang['Piwigo Uploader'] = 'Piwigo üleslaadija';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ei suutnud saada kätte uuendusfaili serverilt';
+$lang['Piwigo configuration'] = 'Piwigo seadistused';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksportimisplugin Aperturele';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksportimisplugin iPhotole';
+$lang['Piwigo for Android'] = 'Piwigo Androidile';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS-ile (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo avaldamisplugin rakendusele Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo avaldamisplugin rakendusele digiKam';
+$lang['Piwigo version'] = 'Piwigo versioon';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Palun vaata kausta "plugins" ja selle alam-kaustade ligipääsulube (CHMOD).';
+$lang['Please wait...'] = 'Palun oota...';
+$lang['Plugin has been successfully copied'] = 'Plugin on edukalt kopeeritud';
+$lang['Private'] = 'Privaatne';
+$lang['Public / Private'] = 'Avalik / Privaatne';
+$lang['Public'] = 'Avalik';
+$lang['Rating by guests'] = 'Külaliste hinnangud';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Taasta vaikeseadistused. Hoiatus! kõik pluginate seadistused taastatakse ka.';
+$lang['Templates configuration has been recorded.'] = 'Malli seadistused on salvestatud';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Kasuta fotode järjestamise vaikeväärtust';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Fotode järjestamise vaikeväärtus pole võimalik siin valida, kuna sul on kohandatud väärtus oma seadistusfailis.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Sa oled valinud <i>$conf[\'order_by\']</i> su seadistusfailis, see väärtus on iganenud, palun kustuta see või nimeta see ümber väärtuseks <i>$conf[\'order_by_custom\']</i>.';
+$lang['Your configuration settings are saved'] = 'Sinu seadistused on salvestatud';
+$lang['guest'] = 'külaline';
+$lang['user_status_guest'] = 'Külaline';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Külalised peavad logima sisse ja omama õiged ligipääsuload, et kuvada seda albumit';
+$lang['Optimizations have been completed with some errors.'] = 'Optimeeringud on läbiviidud mõne veaga.';
+$lang['Order of menubar items has been updated successfully.'] = 'Menüüde järjestus on muudetud';
+$lang['Plugin list'] = 'Pluginate nimekiri';
+$lang['Plugins which need upgrade'] = 'Uuendatavad pluginad';
+$lang['Plugins'] = 'Pluginad';
+$lang['Position'] = 'Asukoht';
+$lang['Posted %s on %s'] = 'Saadetud %s %s';
+$lang['Predefined filter'] = 'Eelnevalt määratud filter';
+$lang['Preferences'] = 'Eelistused';
+$lang['Privacy level set to "%s"'] = 'Privaatsustase kohandati tasemele "%s"';
+$lang['Privacy level'] = 'Privaatsustase';
+$lang['Properties'] = 'Omadused';
+$lang['Purge compiled templates'] = 'Kõrvalda kompileeritud mallid';
+$lang['Purge history detail'] = 'Kõrvalda ajaloo detailid';
+$lang['Purge history summary'] = 'Kõrvalda ajaloo kokkuvõte';
+$lang['Purge never used notification feeds'] = 'Kõrvalda mitte kunagi kasutatud teatevoogud';
+$lang['Purge search history'] = 'Kõrvalda otsingute ajalugu';
+$lang['Purge sessions'] = 'Kõrvalda seanssid';
+$lang['Quick Local Synchronization'] = 'Kohalik kiirsünkroniseerimine';
+$lang['Random photo'] = 'Juhufoto';
+$lang['Rate date'] = 'Hinnangu kuupäev';
+$lang['Rated %d times, score : %.2f'] = 'Hinnatud %d korda, skoor: %.2f';
+$lang['Rating'] = 'Hinnang';
+$lang['Read Piwigo Documentation'] = 'Loe Piwigo dokumentatsiooni';
+$lang['Refresh photo set'] = 'Uuenda fotokogu';
+$lang['Refresh'] = 'Laadi uuesti';
+$lang['Reinitialize check integrity'] = 'Algväärtusta terviklikkuskontroll';
+$lang['Reject'] = 'Lükka tagasi';
+$lang['Released on'] = 'Väljalastud';
+$lang['Remote'] = 'Kauge';
+$lang['Remove all filters'] = 'Eemalda kõik filtrid';
+$lang['Remove from caddie'] = 'Eemalda korvist';
+$lang['Repair and optimize database'] = 'Paranda ja optimeeri andmebaasi';
+$lang['Replacers (customized templates)'] = 'Asendajaid (kohandatud mallid)';
+$lang['Representant'] = 'Albumi pisipilt';
+$lang['Representation of albums'] = 'Albumi pisipilt';
+$lang['Representative'] = 'Albumi pisipilt';
+$lang['Represents'] = 'Kasutatakse pisipildina järgmistes kohtades';
+$lang['Reset ignored updates'] = 'Algväärtusta uuenduste eiramised';
+$lang['Resize after upload'] = 'Suurenda pärast üleslaadimist';
+$lang['Resize'] = 'Suurenda';
+$lang['Restore'] = 'Taasta';
+$lang['Save Settings'] = 'Salvesta seadistused';
+$lang['Save Template Directory'] = 'Salvesta mallide kaust';
+$lang['Save manual order'] = 'Salvesta käsijärjestus';
+$lang['Save order'] = 'Salvesta järjestus';
+$lang['Save to permalink history'] = 'Salvesta püsilinkide ajalukku';
+$lang['Save visits in history for'] = 'Salvesta külastused ajaloos kuniks';
+$lang['Search for new images in the directories'] = 'Otsi uusi fotosid kaustadest';
+$lang['Searching...'] = 'Otsin...';
+$lang['Section'] = 'Sektsioon';
+$lang['See you soon,'] = 'Nägemiseni!';
+$lang['See you soon.'] = 'Nägemiseni!';
+$lang['Select a file'] = 'Vali fail';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vali huvipunkti asukoht';
+$lang['Select an album'] = 'Vali album';
+$lang['Select at least one album'] = 'Vali vähemalt üks album';
+$lang['Select at least one comment'] = 'Vali vähemalt üks kommentaar';
+$lang['Select at least one photo'] = 'Vali vähemalt üks foto';
+$lang['Select at least one user'] = 'Vali vähemalt üks kasutaja';
+$lang['Select at least two tags for merging'] = 'Vali vähemalt kaks märksõna mida mestida';
+$lang['Select files'] = 'Vali faile';
+$lang['Select groups...'] = 'Vali gruppe...';
+$lang['Select recipients'] = 'Vali saajad';
+$lang['Select the destination tag'] = 'Vali sihtmärksõna';
+$lang['Select users...'] = 'Vali kasutajaid...';
+$lang['Select:'] = 'Vali:';
+$lang['Selection'] = 'Valik';
+$lang['Send an information email to group members'] = 'Saada teavitusepost grupi liikmetele';
+$lang['Send connection settings by email'] = 'Saada ühenduse üksikasjade kirjeldus epostiga';
+$lang['Send mail as'] = 'Saada kui';
+$lang['Send mail on HTML format'] = 'Saada epost HTML-vormingus';
+$lang['Send mail to users'] = 'Saada epost kasutajatele';
+$lang['Send'] = 'Saada';
+$lang['Set as default language for unregistered and new users'] = 'Vali vaikekeeleks külalistele ja uutele kasutajatele';
+$lang['Set as default theme for unregistered and new users'] = 'Vali vaiketeemaks külalistele ja uutele kasutajatele';
+$lang['Set author'] = 'Seadista autor';
+$lang['Set creation date'] = 'Seadista loomise kuupäev';
+$lang['Set title'] = 'Seadista pealkiri';
+$lang['Settings'] = 'Seadistused';
+$lang['Sharpen'] = 'Teravusta';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell on vabatarkvaraline digifoto korraldaja mis jookseb GNU/Linuxi peal. See on vaikekorraldajaks määratud Ubuntu ja Fedora süsteemides.';
+$lang['Show info'] = 'Näita üksikasju';
+$lang['Show menubar'] = 'Näita menüüd';
+$lang['Simulation'] = 'Simuleeri';
+$lang['Site manager'] = 'Saidi administratsioon';
+$lang['Some themes and plugins may be not available yet.'] = 'Mõnda teemat ja pluginat võib-olla puuduvad veel.';
+$lang['Some upgrades are available for extensions.'] = 'Mõnel laiendusel on uuendusi saadaval';
+$lang['Source tag'] = 'Lähtemärksõna';
+$lang['Start Upload'] = 'Alusta üleslaadimine';
+$lang['Start pLoader and add your photos.'] = 'Käivita pLoader ja lisa fotod.';
+$lang['Statistics'] = 'Statistika';
+$lang['Status of user "%s" updated'] = 'Kasutaja "%s" olek uuendati';
+$lang['Status'] = 'Olek';
+$lang['Storage album'] = 'Ladustamisalbum';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Telli Piwigo kuulutuste uudiskiri kasutajale %s';
+$lang['Subscribe %s'] = 'Telli %s';
+$lang['Subscribe to notification by mail'] = 'Telli teavitusi';
+$lang['Subscribe/unsubscribe users'] = 'Esita või tühista tellimus kasutajatele';
+$lang['Subscribed'] = 'Tellitud';
+$lang['Subscribe'] = 'Telli';
+$lang['Sum of rates'] = 'Hinnangute summa';
+$lang['Summary'] = 'Kokkuvõtt';
+$lang['Support'] = 'Tugi';
+$lang['Switch to clear or dark colors for administration'] = 'Vaheta administratsiooni värvid tumedaks või heledaks';
+$lang['Synchronize metadata'] = 'Sünkroniseeri metaandmed';
+$lang['Synchronize'] = 'Sünkroniseerimine';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'SEE PLUGIN ON NÜÜD OSA PÄRIS PIWIGOST, KÕRVALDA SEE KOHE!';
+$lang['Tag "%s" already exists'] = 'Märksõna "%s" on juba olemas';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Märksõna "%s" dubleerib nüüdsest märksõna "%s"';
+$lang['Tag "%s" was added'] = 'Märksõna "%s" lisati';
+$lang['Tag selection'] = 'Märksõnade valimine';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Märksõnad <em>%s</em> mestiti märksõnadega <em>%s</em>';
+$lang['Templates'] = 'Mallid';
+$lang['The %d following tags were deleted'] = 'Järgmised %d märksõna on kustutatud';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksportimisplugin võimaldab sul luua albumeid ja eksportida fotosid.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo avaldamisplugin võimaldab sul eksportida ja sünkroniseerida fotosid Lightroomist otse su Piwigo galleriisse.';
+$lang['The anomaly will be ignored until next application version'] = 'Hälvet eiratakse kuni järgmise Piwigo versioonini';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Huvikeskpunkt on foto kõige olulisem koht.';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Failile või kaustale ei saada ligi (see kas ei eksisteeri või puuduvad ligipääsuõigused sellele)';
+$lang['The following tag was deleted'] = 'Järgmine märksõna kustutati';
+$lang['The gallery URL is not valid.'] = 'Selline gallerii aadress on vigane.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Grupi nimi ei saa sisaldada jutumärke ega olla tühi.';
+$lang['The name of an album must not be empty'] = 'Albumi nimi ei saa olla tühi';
+$lang['Orphan tags deleted'] = 'Kasutamata jäänud märksõnad kustutati';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Kaustade ja failide nimetused saavad ainult sisaldada tähti, numbreid ning märke "-", "_" ja "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Kommentaaride arv lehekülje kohta peab jääma 5 ja 50 vahel.';
+$lang['The original image quality must be a number between %d and %d'] = 'Originaalfoto kvaliteedimäärang peab olema number %d ja %d vahel';
+$lang['The original maximum height must be a number between %d and %d'] = 'Originaalfoto suurim kõrgus peab olema number %d ja %d vahel';
+$lang['The original maximum width must be a number between %d and %d'] = 'Originaalfoto suurim laius peab olema number %d ja %d vahel';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Püsilingi nimi saab sisaldada ainult a-z, A-z, 0-9, "-", "_" ja "/". See ei saa olla number ega algada numbriga millele järgneb "-"';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Üleslaaditava faili suurus ületab määratud MAX_FILE_SIZE, mis on antud HTML formularis';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Üleslaaditava faili suurus ületab määratud MAX_FILE_SIZE, mis on antud failis php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Üleslaaditud fail jäi poolikuks';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Üleslaaditava faili suurus ületab määratud POST_FILE_SIZE, mis on antud failis php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Paigaldatud %s versioon [%s] ei ühildu nõutava versiooniga [%s]';
+$lang['The whole page'] = 'Terve lehekülg';
+$lang['The whole set'] = 'Terve kogu';
+$lang['Theme has been successfully installed'] = 'Teema installiti edukalt';
+$lang['Themes which need upgrade'] = 'Uuendamist vajavad teemad';
+$lang['Themes'] = 'Teemasid';
+$lang['There is no available subscribers to mail.'] = 'Pole tellijaid kellele saata teatiseid.';
+$lang['There is no group in this gallery.'] = 'Sel galleriil puuduvad üldse grupid.';
+$lang['There is no other language available.'] = 'Pole teisi keeli saadaval.';
+$lang['There is no other plugin available.'] = 'Pole teisi pluginaid saadaval.';
+$lang['There is no other theme available.'] = 'Pole teisi teemasid saadaval.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Album sisaldab %d fotot, lisatud %s ja %s vahel.';
+$lang['This album contains %d photos, added on %s.'] = 'Album sisaldab %d fotot, lisatud %s.';
+$lang['This album contains no photo.'] = 'Album ei sisalda ühtki fotot.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'See on suurem väljalase <a href="%s">uute põnevate võimalustega</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'See uuendus koosneb peamiselt vaid veaparandustest.';
+$lang['This name is already used by another group.'] = 'Teine grupp on juba sama nimega olemas.';
+$lang['This site already exists'] = 'Selline sait on juba olemas';
+$lang['This theme was not designed to be directly activated'] = 'Seda teemat ei saa otse aktiveerida';
+$lang['Thumbnail'] = 'Pisipilt';
+$lang['Thumbnails generation in progress...'] = 'Pisipiltide tekitamine...';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Epostide saatmise aeg on piiratud. Teised epostid jäid saatmata.';
+$lang['Time'] = 'Aeg';
+$lang['Title'] = 'pealkiri';
+$lang['To send ?'] = 'Saada?';
+$lang['To subscribe'] = 'Tellimuse esitamiseks';
+$lang['To unsubscribe'] = 'Tellimuse tühistamiseks';
+$lang['Tools'] = 'Tööriistad';
+$lang['Two updates are available'] = 'Kaks uuendust on saadaval';
+$lang['Type here the author name'] = 'Autori nimi';
+$lang['Type here the title'] = 'Pealkiri';
+$lang['Type in a search term'] = 'Otsisõna';
+$lang['Unable to check for upgrade.'] = 'Uuenduste otsimine nurjus.';
+$lang['Unable to dump database.'] = 'Andmebaasi väljaviskamine nurjus.';
+$lang['Uncheck all'] = 'Tühista valik';
+$lang['Uninstalled Plugins'] = 'Kustutatud pluginad';
+$lang['Uninstall'] = 'Kustuta';
+$lang['Unknown upload error'] = 'Teadmatu viga üleslaadimisel';
+$lang['Unlock gallery'] = 'Lukusta gallerii lahti';
+$lang['Unlocked'] = 'Lukustamata';
+$lang['Unsubscribe from notification by mail'] = 'Tühista teatiste tellimus';
+$lang['Unsubscribed'] = 'Tellimus tühistatud';
+$lang['Update All'] = 'Uuenda kõik';
+$lang['Update Complete'] = 'Uuendus valmis';
+$lang['Update albums informations'] = 'Uuenda albumi infot';
+$lang['Update in progress... Please wait.'] = 'Uuendamine käib... Palun oota.';
+$lang['Update photos information'] = 'Uuenda foto infot';
+$lang['Update to Piwigo %s'] = 'Uuenda Piwigo versioonile %s';
+$lang['Updates'] = 'Uuendused';
+$lang['Upload Photos'] = 'Laadi üles fotosid';
+$lang['Uploaded Photos'] = 'Üleslaaditud fotod';
+$lang['Upload'] = 'Laadi üles';
+$lang['Used metadata'] = 'Kasutatud metaandmeid';
+$lang['User "%s" created with "%s" like password'] = 'Kasutaja "%s" loodud parooliga "%s"';
+$lang['User %s [%s] added.'] = 'Kasutaja %s [%s] lisatud.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Kasutaja %s [%s] lisatud tellijaks.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Kasutajat %s [%s] ei lisatud tellijaks.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Kasutaja %s [%s] tellimust ei tühistatud.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Kasutaja %s [%s] tellimus on tühistatud.';
+$lang['User comments validation'] = 'Kommentaaride kinnitamine';
+$lang['User list'] = 'Kasutajate nimekiri';
+$lang['User status'] = 'Kasutaja olek';
+$lang['User'] = 'Kasutaja';
+$lang['Users'] = 'Kasutajad';
+$lang['Validate'] = 'Kinnita';
+$lang['Validation'] = 'Kinnitamine';
+$lang['Version'] = 'Versioon';
+$lang['Virtual Links'] = 'Virtuaalsed lingid';
+$lang['Virtual album added'] = 'Virtuaalne album lisatud';
+$lang['Virtual album deleted'] = 'Virtuaalne album kustutatud';
+$lang['Virtual album name'] = 'Virtuaalse albumi nimi';
+$lang['Virtual album'] = 'Virtuaalne album';
+$lang['Virtual albums to move'] = 'Virtuaalseid albumeid mida liigutada';
+$lang['Visit Gallery'] = 'Külasta galeriid';
+$lang['Visit Piwigo project website'] = 'Külasta Piwigo projekti lehekülge';
+$lang['Visit language site'] = 'Külasta keelte lehekülge';
+$lang['Visit plugin site'] = 'Külasta pluginate lehekülge';
+$lang['Visit theme site'] = 'Külasta teemade lehekülge';
+$lang['Visited %d times'] = 'Külastatud %d korda';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'NB! See plugin ei paista olevat ühilduv praeguse Piwigo versiooniga.';
+$lang['Waiting'] = 'Ootel';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'NB! tellimuste esitamine ja tühistamine saadab kasutajatele eposti';
+$lang['Watermark'] = 'Vesimärk';
+$lang['Web Form'] = 'Veebiformular';
+$lang['Week starts on'] = 'Nädala esimene päev on';
+$lang['Who can see these photos?'] = 'Kes saab neid fotosid vaadata?';
+$lang['Who can see this photo?'] = 'Kes saab seda fotot vaadata?';
+$lang['Width'] = 'Laius';
+$lang['With blank value, gallery title will be used'] = 'Kui tühi, siis kasutatakse galerii pealkirja';
+$lang['With no album'] = 'Ühegi albumiga';
+$lang['With no tag'] = 'Ühegi märksõnaga';
+$lang['With no virtual album'] = 'Ühegi virtuaalse albumiga';
+$lang['X Position'] = 'X-positsioon';
+$lang['X Repeat'] = 'X-kordumine';
+$lang['Y Position'] = 'Y-positsioon';
+$lang['Year'] = 'Aasta';
+$lang['You are running on development sources, no check possible.'] = 'Sa jooksutad arenduslähtekoodi, kontroll ei ole võimaldatud.';
+$lang['You are running the latest version of Piwigo.'] = 'Sa jooksutad kõige värskeimat Piwigo versiooni.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Sa kasutad brauser-üleslaadijat. Proovi üleslaadija <a href="%s">Flash versiooni</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Sa kasutad üleslaadija Flash versiooni. Probleeme? Proovi <a href="%s">brauser versiooni</a>.';
+$lang['You can activate only one mobile theme.'] = 'Ainult üks mobiilteema võib korraga olla aktiveeritud.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Sa võid uuendada Piwigo %s otse, ilma uuendamata versioonile %s (see on soovituslik).';
+$lang['You cannot delete your account'] = 'Sa ei saa kustutada seda kontot';
+$lang['You cannot move an album in its own sub album'] = 'Album ei saa asuda selle enda sees';
+$lang['You have %d orphan tags: %s.'] = 'Sul on %d kasutamata jäänud märksõna: %s.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Sa tellid teavituste saamist epostile.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Sa enam ei telli teavituste saamist epostile.';
+$lang['You might go to plugin list to install and activate it.'] = 'Mine pluginate nimekirjalehele selle paigaldamiseks ja aktiveerimiseks.';
+$lang['You need to confirm deletion'] = 'Sa pead kinnitama kustutuse';
+$lang['Zoom'] = 'Suurendus';
+$lang['[%s] Visit album %s'] = '[%s] külastab albumit %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Probleeme või küsimusi';
+$lang['add a new watermark'] = 'Lisa uus vesimärk';
+$lang['add new photos to caddie'] = 'Lisa fotosid korvisse';
+$lang['added'] = 'lisatud';
+$lang['albums added in the database'] = 'albumid lisatud andmebaasi';
+$lang['albums deleted in the database'] = 'albumid kustutatud andmebaasist';
+$lang['all'] = 'kõik';
+$lang['an error happened'] = 'Viga tekkis';
+$lang['and'] = 'ja';
+$lang['any visitor can see this album'] = 'iga külaline võib vaadata seda albumit';
+$lang['apply automatic sort order'] = 'rakenda automaatset järjestust';
+$lang['associate to group'] = 'seosta rühmaga';
+$lang['automatic order'] = 'automaatne järjestus';
+$lang['average time'] = 'keskmine aeg';
+$lang['between'] = 'vahel';
+$lang['bottom left corner'] = 'alumine vasakpoolne nurk';
+$lang['bottom right corner'] = 'alumine parempoolne nurk';
+$lang['cancel manual order'] = 'ära rakenda automaatset järjestamist';
+$lang['clean'] = 'korista';
+$lang['confirm'] = 'kinnita';
+$lang['create a new album'] = 'loo uus album';
+$lang['create a new site'] = 'loo uus sait';
+$lang['created'] = 'loodud';
+$lang['custom'] = 'Kohandatud';
+$lang['default values'] = 'vaikimisi valikud';
+$lang['default'] = 'vaikimisi valik';
+$lang['delete album'] = 'kustuta album';
+$lang['delete photo'] = 'kustuta foto';
+$lang['delete this site and all its attached elements'] = 'kustuta see sait ja kõik sellega seotud informatsioon';
+$lang['deleted'] = 'kustutatud';
+$lang['delete'] = 'kustuta';
+$lang['directories + files'] = 'kaustad + failid';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'kuva võimalikult palju informatsiooni (lisatud albumid ja fotod, kustutad albumid ja fotod)';
+$lang['display'] = 'kuva';
+$lang['dissociate from group'] = 'eralda rühmast';
+$lang['errors during synchronization'] = 'vigu sünkroniseerimisel';
+$lang['even already synchronized photos'] = 'juba sünkroniseeritud fotod';
+$lang['existing album'] = 'olemas-olev album';
+$lang['first photo added on %s'] = 'esimene foto lisatud %s';
+$lang['for the file format'] = 'failivormingule';
+$lang['for this file format'] = 'selle failivormingule';
+$lang['global mode'] = 'globaalne režiim';
+$lang['group "%s" added'] = 'grupp "%s" lisatud';
+$lang['group "%s" deleted'] = 'grupp "%s" kustutatud';
+$lang['group "%s" updated'] = 'grupp "%s" uuendatud';
+$lang['height must be a number superior to'] = 'kõrgus peab olema suurem kui';
+$lang['hide details'] = 'peida detailid';
+$lang['include child albums'] = 'kaasa alam-albumid';
+$lang['include photos with lower privacy level'] = 'kaasa fotod madalama privaatsustasemega';
+$lang['jump to album'] = 'mine albumisse';
+$lang['jump to photo'] = 'mine fotole';
+$lang['leave'] = 'välju';
+$lang['manage album photos'] = 'halda albumi fotosid';
+$lang['manage sub-albums'] = 'halda alam-albumeid';
+$lang['manual order'] = 'käsitsi järjestamine';
+$lang['middle'] = 'keskmine';
+$lang['modified'] = 'muudatud';
+$lang['new'] = 'uus';
+$lang['no write access'] = 'puudub kirjutamisõigus';
+$lang['none'] = 'puudub';
+$lang['nothing'] = 'ei midagi';
+$lang['number of miniaturized photos'] = 'tekitatud pisipiltide arv';
+$lang['on the %d selected photos'] = '%d-le valitud fotole';
+$lang['on'] = 'nendele';
+$lang['only directories'] = 'ainult kaustasid';
+$lang['only perform a simulation (no change in database will be made)'] = 'ainult simuleeri (midagi ei muudeta andmebaasis)';
+$lang['other'] = 'muu';
+$lang['overrides existing values with empty ones'] = 'tühistab praegused väärtused tühjadega';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader tähendab <em>Piwigo Uploader</em>. pLoader valmistab ette pildid su arvutis ning laadib need ülesse su Piwigo fotogaleriisse.';
+$lang['pending validation'] = 'kinnituse ootel';
+$lang['photos added in the database'] = 'fotosid lisatud andmebaasi';
+$lang['photos candidates for metadata synchronization'] = 'kandideerivad fotod metaandmete sünkroniseerimiseks';
+$lang['photos deleted from the database'] = 'fotosid kustutatud andmebaasist';
+$lang['photos informations synchronized with files metadata'] = 'fotode info sünkroniseeritud failide metaandmetega';
+$lang['photos per page'] = 'fotot ühel leheküljel';
+$lang['photos updated in the database'] = 'fotosid uuendatud andmebaasis';
+$lang['pixels'] = 'piksleid';
+$lang['private'] = 'privaatne';
+$lang['public'] = 'avalik';
+$lang['randomly represented'] = 'albumi juhuslik pisipilt';
+$lang['ranks'] = 'hinnanguid';
+$lang['registered users'] = 'registreeritud kasutajaid';
+$lang['registration date'] = 'registreerimise kuupäev';
+$lang['remove author'] = 'kõrvalda autor';
+$lang['remove creation date'] = 'kõrvalda loomise kuupäev';
+$lang['remove tags'] = 'kõrvalda märksõnad';
+$lang['remove this filter'] = 'kõrvalda filter';
+$lang['remove title'] = 'kõrvalda pealkiri';
+$lang['selection'] = 'valik';
+$lang['set to'] = 'sea selleks';
+$lang['show details'] = 'näita detaile';
+$lang['simple visitors'] = 'lihtsaid külastajaid';
+$lang['singly represented'] = 'fikseeritud albumi pisipilt';
+$lang['status'] = 'olek';
+$lang['sub-albums'] = 'alam-albumid';
+$lang['synchronize files metadata with database photos informations'] = 'Sünkroniseeri andmebaasis olevad fotod failide metaandmetega';
+$lang['synchronize files structure with database'] = 'Sünkroniseeri failistruktuur andmebaasiga';
+$lang['target'] = 'siht';
+$lang['test this remote site'] = 'proovi seda kaug-saiti';
+$lang['test'] = 'test';
+$lang['the forum'] = 'foorum';
+$lang['the wiki'] = 'viki';
+$lang['top left corner'] = 'ülemine vasakpoolne nurk';
+$lang['top right corner'] = 'ülemine parempoolne nurk';
+$lang['total time'] = 'aeg kokku';
+$lang['unit mode'] = 'ühe-režiim';
+$lang['unknown'] = 'tundmatu';
+$lang['unset'] = 'tühista';
+$lang['update the database from files'] = 'uuenda andmebaas failidega';
+$lang['user "%s" added'] = 'kasutaja "%s" lisati';
+$lang['user_status_generic'] = 'Üldine';
+$lang['user_status_normal'] = 'Kasutaja';
+$lang['width must be a number superior to'] = 'laius peab olema suurem kui';
+$lang['wrong filename'] = 'vigane failinimi';
+$lang['Albums authorized thanks to group associations'] = 'Autoriseeritud ligipääs kaustadele kuna oled grupiliige';
+$lang['Landscape'] = 'Maastik';
+$lang['Manage photos'] = 'Halda fotosid';
+$lang['Minimum height'] = 'Miinimum kõrgus';
+$lang['Minimum width'] = 'Miinimum laius';
+$lang['Number of albums per page'] = 'Albumeid lehekülje kohta';
+$lang['Panorama'] = 'Panoraama';
+$lang['Portrait'] = 'Portree';
+$lang['View in gallery'] = 'Vaata galeriis';
+$lang['Ratio'] = 'Suhe';
+$lang['Operation in progress'] = 'Kohandusi viiakse läbi.
+';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hoia end Piwigo projektiga kursis! Telli Piwigo teadaannete infolehte. Sulle saadetakse meilile teadaanne kui uus Piwigo väljalase on saadaval (teinekord teavitatakse tähtsatest turvaparandustest) või muu suur sündmus toimub. Ainult paar infolehte aastas.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) on vaba tarkvara litsentsiga (GPL v3) Piwigo klient Android süsteemile.';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Teavitusmeilide saatmise aeg on piiratud. Ainult saadetud kasutajad loetletakse.';
+$lang['reduce to single existing albums'] = 'kahanda ainult olemasolevateks albumiteks';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto on MacOSX-i vaikimisi fotohaldur. Piwigo eksport plugin võimaldab sul luua uusi albumeid ja laadida üles oma fotod otse iPhotost.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam on mõeldud fotograafidele, kes tahavad vaadata, hallata, töödelda, toimetada, parandada, organiseerida ning jagada oma pilte.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam on vaba tarkvaraline rakendus digipiltide haldamiseks, saadaval nii GNU/Linuxile, Windowsile kui ka MacOSX-ile.';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Uuendamine on soovitatud rakendusest parima saamiseks';
+$lang['Toggle \'default group\' property'] = 'Pööra \'default group\' omadus ümber';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Võimaldada lihtsat eksportimist digiKamist Piwigosse, paigalda laiendused digiKam ja Kipi-plugins.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Tellijate loetelu on võimalik ainult siis, kui on uusi teavitusi. ';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Asenda originaalšabloonid kohandatud šablooniga (template-extension kaustast)';
+$lang['between %.2f and %.2f'] = '%.2f ja %.2f vahel';
+$lang['between %d and %d pixels'] = '%d ja %d pikslite vahel';
+$lang['This group will be unset to default'] = 'Seda rühma ei kasutata edaspidi vaikerühmana';
+$lang['Type here the name of the new group'] = 'Nimeta uus rühm';
+$lang['Merge selected groups'] = 'Liida valitud rühmad';
+$lang['No group selected, no action possible.'] = 'Ühtegi rühma pole valitud, seega ei saa midagi teha.';
+$lang['No members to manage'] = 'Puudub liikmeid keda hallata';
+$lang['Please select at least two groups'] = 'Vali vähemalt kaks rühma';
+$lang['Rename'] = 'Nimeta ümber';
+$lang['This group will be set to default'] = 'See rühm valitakse vaikerühmaks';
+$lang['Manage the members'] = 'Halda liikmeid';
+$lang['Duplicate'] = 'Tee koopia';
+$lang['Purge user cache'] = 'Tühjenda vahemälu';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Pildi mõõtmed kahanetakse %dx%d piksli peale.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Pildu suuruse muutmine pärast üles laadimist on välja lülitatud, sest kasutusel on GD graafika arhiiv.';
+$lang['Select at least one tag'] = 'Vali vähemalt üks märksõna';
+$lang['Basic settings'] = 'Põhilised seaded';
+$lang['General'] = 'Üldine';
+$lang['Mail theme'] = 'Maili teema';
+?>
Index: /tags/2.6.0RC1/language/et_EE/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/et_EE/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/common.lang.php	(revision 25596)
@@ -0,0 +1,443 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Estonian [EE]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=569
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Estonian";
+$lang_info['country'] = "Estonia";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "et";
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d album uuendatud';
+$lang['%d albums updated'] = '%d albumit uuendatud';
+$lang['%d comment to validate'] = '%d kommentaar kinnitada';
+$lang['%d comments to validate'] = '%d kommentaari kinnitada';
+$lang['%d new comment'] = '%d uus kommentaar';
+$lang['%d new comments'] = '%d uut kommentaari';
+$lang['%d comment'] = '%d kommentaar';
+$lang['%d comments'] = '%d kommentaari';
+$lang['%d hit'] = '%d tabamus';
+$lang['%d hits'] = '%d tabamust';
+$lang['%d new photo'] = '%d uus foto';
+$lang['%d new photos'] = '%d uut fotot';
+$lang['%d new user'] = '%d uus kasutaja';
+$lang['%d new users'] = '%d uut kasutajat';
+$lang['About'] = 'Leheküljest lähemalt';
+$lang['All tags'] = 'Kõik märksõnad';
+$lang['Any tag'] = 'Mistahes märksõna';
+$lang['At least one listed rule must be satisfied.'] = 'Vähemalt üks loetletud reeglitest peab olema rahuldatud.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Albumid';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Sule see aken';
+$lang['Complete RSS feed (photos, comments)'] = 'Täielik RSS voog (fotod, kommentaarid)';
+$lang['Confirm Password'] = 'Kinnita parool';
+$lang['Connection settings'] = 'Ühenduse seaded';
+$lang['Login'] = 'Kasutajanimi';
+$lang['Contact webmaster'] = 'Kontakteeru veebimeistriga';
+$lang['Create a new account'] = 'Loo uus konto';
+$lang['Created on'] = 'Loodud';
+$lang['Creation date'] = 'Koostamise kuupäev';
+$lang['Current password is wrong'] = 'Praegune parool on vale';
+$lang['Dimensions'] = 'Dimensioonid';
+$lang['Display'] = 'Näita';
+$lang['Each listed rule must be satisfied.'] = 'Kõik loetletud reeglid peavad olema rahuldatud.';
+$lang['Email address'] = 'E-posti aadress';
+$lang['Enter your personnal informations'] = 'Sisesta isiklikud andmed';
+$lang['Error sending email'] = 'Viga e-posti saatmisel';
+$lang['File name'] = 'Faili nimi';
+$lang['File'] = 'Fail';
+$lang['Filesize'] = 'Failisuurus';
+$lang['Filter and display'] = 'Filtreeri ja kuva';
+$lang['Filter'] = 'Filtreeri';
+$lang['Forgot your password?'] = 'Kas sa unustasid parooli?';
+$lang['Go through the gallery as a visitor'] = 'Vaata galerii läbi külastajana';
+$lang['Help'] = 'Abi';
+$lang['Identification'] = 'Identiditseerimine';
+$lang['Photos only RSS feed'] = 'Ainult fotode RSS voog';
+$lang['Keyword'] = 'Märksõna';
+$lang['day'][0] = 'Pühapäev';
+$lang['day'][1] = 'Esmaspäev';
+$lang['day'][2] = 'Teisipäev';
+$lang['day'][3] = 'Kolmapäev';
+$lang['day'][4] = 'Neljapäev';
+$lang['day'][5] = 'Reede';
+$lang['day'][6] = 'Laupäev';
+$lang['month'][10] = 'Oktoober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'Detsember';
+$lang['month'][1] = 'Jaanuar';
+$lang['month'][2] = 'Veebruar';
+$lang['month'][3] = 'Märts';
+$lang['month'][4] = 'Aprill';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Juuni';
+$lang['month'][7] = 'Juuli';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['Notification'] = 'RSS voog';
+$lang['Number of items'] = 'Ühikute arv';
+$lang['Original dimensions'] = 'Originaal mõõtmed';
+$lang['Password forgotten'] = 'Unustatud parool';
+$lang['Password'] = 'Parool';
+$lang['Post date'] = 'Postituse kuupäev';
+$lang['Posted on'] = 'Postitatud';
+$lang['Profile'] = 'Profiil';
+$lang['Quick connect'] = 'Kiirühendus';
+$lang['RSS feed'] = 'RSS voog';
+$lang['Register'] = 'Registreeru';
+$lang['Registration'] = 'Registreerimine';
+$lang['Related tags'] = 'Seotud märksõnad';
+$lang['Reset'] = 'Algseadista';
+$lang['Retrieve password'] = 'Tagasta parool';
+$lang['Search rules'] = 'Otsingu eeskirjad';
+$lang['Search tags'] = 'Otsingu märksõnad';
+$lang['Search'] = 'Otsi';
+$lang['display available tags'] = 'kuva võimalikud märksõnad';
+$lang['Since'] = 'Alates';
+$lang['Sort by'] = 'Sorteeri';
+$lang['Sort order'] = 'Sorteerimisjärjestus';
+$lang['Tag'] = 'Märksõna';
+$lang['Tags'] = 'Märksõnad';
+$lang['Unknown feed identifier'] = 'Tundmatu voog';
+$lang['User comments'] = 'Kasutaja kommetaarid';
+$lang['Username'] = 'Kasutajanimi';
+$lang['Visits'] = 'Külastused';
+$lang['Webmaster'] = 'Veebimeister';
+$lang['Week %d'] = '%d. nädal';
+$lang['About Piwigo'] = 'Piwigo-st';
+$lang['You are not authorized to access the requested page'] = 'Teil puudub juurdepääs soovitud leheküljele';
+$lang['add this photo to your favorites'] = 'lisa see foto oma lemmikuks';
+$lang['Administration'] = 'Haldamine';
+$lang['all'] = 'kõik';
+$lang['ascending'] = 'kasvavalt';
+$lang['author(s) : %s'] = 'autor(id) : %s';
+$lang['Expand all albums'] = 'Laienda kõik albumid';
+$lang['posted after %s (%s)'] = 'postitatud peale %s (%s)';
+$lang['posted before %s (%s)'] = 'postitatud enne %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'postitatud %s (%s) ja %s (%s) vahel';
+$lang['posted on %s'] = 'postitatud %s';
+$lang['Best rated'] = 'Parimalt hinnatud';
+$lang['display best rated photos'] = 'Kuva parimalt hinnatud fotod';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Kõik';
+$lang['display each day with photos, month per month'] = 'kuva iga päev fotodega, iga kuu kohta';
+$lang['View'] = 'Vaata';
+$lang['Unknown feed identifier'] = 'Tundmatu voo identifikaator';
+$lang['User comments'] = 'Kasutaja kommentaarid';
+$lang['Username'] = 'Kasutajanimi';
+$lang['Visits'] = 'Külastust';
+$lang['Webmaster'] = 'Veebmaster';
+$lang['Week %d'] = 'Nädal %d';
+$lang['About Piwigo'] = 'Piwigost lähemalt';
+$lang['You are not authorized to access the requested page'] = 'Sa ei ole autoriseeritud sellele lehele juurdepääsuks';
+$lang['add this photo to your favorites'] = 'lisa see foto oma lemmikutesse';
+$lang['Administration'] = 'Administreerimine';
+$lang['all'] = 'kõik';
+$lang['ascending'] = 'kasvav';
+$lang['author(s) : %s'] = 'autor(it) : %s';
+$lang['Expand all albums'] = 'Laienda kõik albumid';
+$lang['posted after %s (%s)'] = 'postitatud peale %s (%s)';
+$lang['posted before %s (%s)'] = 'postitatud enne %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'postitatud %s (%s) ja %s (%s) vahel';
+$lang['posted on %s'] = 'postitatud %s';
+$lang['Best rated'] = 'Kõrgeimalt hinnatud';
+$lang['display best rated photos'] = 'kuva kõrgeimalt hinnatud fotod';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Kõik';
+$lang['display each day with photos, month per month'] = 'kuva iga fotodega päev, kuust kuusse';
+$lang['View'] = 'Vaade';
+$lang['chronology_monthly_calendar'] = 'Kuukalender';
+$lang['chronology_monthly_list'] = 'Kuu nimekiri';
+$lang['chronology_weekly_list'] = 'Nädala nimekiri';
+$lang['Click here if your browser does not automatically forward you'] = 'Kui su internetilehitseja ei suuna sind automaatselt edasi, vajuta siia';
+$lang['comment date'] = 'kommentaari kuupäev';
+$lang['Comment'] = 'Kommentaar';
+$lang['Your comment has been registered'] = 'Sinu kommentaar on registreeritud';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Kuritarvitusvastane süsteem : palun oota natuke, enne kui proovid uut kommentaari postitada';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Sinu kommentaari ei registreeritud, kuna see EI vasta valideerimisreeglitele.';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administraator peab sinu kommentaari enne avalikustamist heaks kiitma.';
+$lang['This login is already used by another user'] = 'See kasutajanimi on kasutusel juba teise kasutaja poolt';
+$lang['Comments'] = 'Kommentaarid';
+$lang['Add a comment'] = 'Lisa kommentaar';
+$lang['created after %s (%s)'] = 'loodud peale %s (%s)';
+$lang['created before %s (%s)'] = 'loodud enne %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'loodud %s (%s) ja %s (%s) vahel';
+$lang['created on %s'] = 'loodud %s';
+$lang['Customize'] = 'Kohanda';
+$lang['Your Gallery Customization'] = 'Sinu galerii kohandamine';
+$lang['Default'] = 'Vaikimisi';
+$lang['delete this photo from your favorites'] = 'kustuta see foto oma lemmikutest';
+$lang['Delete'] = 'Kustuta';
+$lang['descending'] = 'kahanev';
+$lang['Download'] = 'allalaadimine';
+$lang['Download this file'] = 'lae see fail alla';
+$lang['edit'] = 'redigeeri';
+$lang['wrong date'] = 'vale kuupäev';
+$lang['excluded'] = 'välja arvatud';
+$lang['Your favorites'] = 'Sinu lemmikud';
+$lang['display your favorites photos'] = 'kuva oma lemmikfotod';
+$lang['Favorites'] = 'Lemmikud';
+$lang['First'] = 'Esimene';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galerii on hoolduse ajaks lukustatud. Palun proovi natukese aja pärast uuesti.';
+$lang['Page generated in'] = 'Leht genereeritud';
+$lang['guest'] = 'külaline';
+$lang['Hello'] = 'Tere';
+$lang['available for administrators only'] = 'saadaval vaid administraatoritele';
+$lang['display this album'] = 'kuva see album';
+$lang['display last user comments'] = 'kuva viimased kasutajate kommentaarid';
+$lang['customize the appareance of the gallery'] = 'kohanda galerii välimust';
+$lang['search'] = 'otsi';
+$lang['Home'] = 'Avaleht';
+$lang['in this album'] = 'selles albumis';
+$lang['in %d sub-album'] = '%d-s allalbumis';
+$lang['in %d sub-albums'] = '%d-s allalbumis';
+$lang['included'] = 'kaasa arvatud';
+$lang['Invalid password!'] = 'Vale parool!';
+$lang['Language'] = 'Vali keel';
+$lang['last %d days'] = 'viimased %d päeva';
+$lang['Last'] = 'Viimane';
+$lang['Logout'] = 'Logi välja';
+$lang['obligatory'] = 'kohustuslik';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Tere tulemast oma Piwigo fotogaleriisse!';
+$lang['... or browse your empty gallery'] = '... või sirvi oma tühja galeriid';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... või palun deaktiveeri see teade, leian ise lahenduse';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Tere, %s sinu Piwigo fotogalerii on tühi!';
+$lang['I want to add photos'] = 'Tahan lisada fotosid';
+$lang['Manage this user comment: %s'] = 'Halda selle kasutaja kommentaari: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'E-posti aadress on puudu. Palun täpsusta e-posti aadressi.';
+$lang['This author modified following comment:'] = 'See autor muutis järgnevat kommentaari:';
+$lang['This author removed the comment with id %d'] = 'See autor eemaldas kommentaari ID-ga: %d';
+$lang['html tags are not allowed in login'] = 'html-märgised ei ole kasutajanimes lubatud';
+$lang['Invalid username or email'] = 'Vigane kasutajanimi või e-post';
+$lang['Password reset is not allowed for this user'] = 'Parooli algseadistamine pole sellele kasutajale lubatud';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Kasutajal "%s" puudub e-posti aadress, parooli algseadistamine pole võimalik';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Keegi taotles alljärgneva kasutajakonto parooli algseadistamist:';
+$lang['Username "%s" on gallery %s'] = 'Kasutajanimi "%s" galeriis %s';
+$lang['To reset your password, visit the following address:'] = 'Parooli algseadistamiseks külasta järgnevat aadressi:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Kui see on eksitus, siis lihtsalt ignoreeri seda kirja ja midagi ei juhtu.';
+$lang['Password Reset'] = 'Parooli algseadistamine';
+$lang['display a calendar by creation date'] = 'kuva kalender loomiskuupäeva järgi';
+$lang['display all photos in all sub-albums'] = 'kuva kõikide allalbumite fotod korraga';
+$lang['return to normal view mode'] = 'naase tavalisse kuvarežiimi';
+$lang['display a calendar by posted date'] = 'kuva kalender postitamiskuupäeva järgi';
+$lang['Most visited'] = 'Enim vaadatud';
+$lang['display most visited photos'] = 'kuva enim vaadatud fotosid';
+$lang['The number of photos per page must be a not null scalar'] = 'Fotode arv ühel leheküljel peab olema nullist suurem arvsümbol';
+$lang['Number of photos per page'] = 'Fotode arv leheküljel';
+$lang['Unknown identifier'] = 'Tundmatu identifikaator';
+$lang['New password'] = 'Uus parool';
+$lang['Rate this photo'] = 'Hinda seda fotot';
+$lang['Next'] = 'Järgmine';
+$lang['no rate'] = 'hindamata';
+$lang['Photos posted within the last %d day.'] = 'Ainult eelmise päeva jooksul postitatud fotod.';
+$lang['Photos posted within the last %d days.'] = 'Ainult viimase %d päeva jooksul postitatud fotod.';
+$lang['password updated'] = 'parool on uuendatud';
+$lang['Recent period must be a positive integer value'] = 'Viimatine periood peab omama positiivset arvsümboli väärtust';
+$lang['photo'] = 'foto';
+$lang['Click on the photo to see it in high definition'] = 'Klikka fotot, et seda kõrges lahutuses vaadata';
+$lang['Show file metadata'] = 'Näita faili metaandmeid';
+$lang['Powered by'] = 'Toob teieni';
+$lang['Preferences'] = 'Eelistused';
+$lang['Previous'] = 'Eelmine';
+$lang['Random photos'] = 'Juhuvalikus fotod';
+$lang['display a set of random photos'] = 'kuva juhuslikult valitud fotosid';
+$lang['Recent albums'] = 'Hiljutised albumid';
+$lang['display recently updated albums'] = 'kuva viimati uuendatud albumid';
+$lang['Recent period'] = 'Viimatine periood';
+$lang['Recent photos'] = 'Viimased fotod';
+$lang['display most recent photos'] = 'kuva kõige viimased fotod';
+$lang['Redirection...'] = 'Ümbersuunamine...';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d photo is also linked to current tags'] = '%d foto on samuti viidatud nende märksõnadega';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos are also linked to current tags'] = '%d fotot on samuti viidatud nende märksõnadega';
+$lang['%d photos'] = '%d fotot';
+$lang['%d rate'] = '%d hinnang';
+$lang['%d rates'] = '%d hinnangut';
+$lang['(!) This comment requires validation'] = '(!) See kommentaar vajab kinnitamist';
+$lang['2small'] = 'XXS — tilluke';
+$lang['A comment on your site'] = 'Kommentaar su saidil';
+$lang['Accelerate diaporama speed'] = 'Kiirenda näitust';
+$lang['Admin: %s'] = 'Haldur: %s';
+$lang['Album results for'] = 'Albumeid leitud märksõnadega';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Requested tag does not exist'] = 'Päritud märksõna pole olemas';
+$lang['remove this tag from the list'] = 'eemalda see märksõna';
+$lang['show tag cloud'] = 'näita märksõnade pilve';
+$lang['Are you sure?'] = 'Oled sa kindel?';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Auto login'] = 'Jäta mind sisselogituks';
+$lang['Bad request'] = 'Vigane päring';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Vigane olek kasutajale "külaline", kasutatakse vaikimisi olekut. Palun teavita veebimeistrit.';
+$lang['Browser: %s'] = 'Veebisirbija: %s';
+$lang['Change my password'] = 'Vaheta parool';
+$lang['Check your email for the confirmation link'] = 'Vaata su e-postist kinnitusmeili';
+$lang['Comment by %s'] = 'Kommentaar kasutajalt %s';
+$lang['Comment: %s'] = 'Kommentaar: %s';
+$lang['Connected user: %s'] = 'Sisselogitud kasutaja: %s';
+$lang['Contact'] = 'Kontakt';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Su veebisirvitseja ei luba küpsiseid kasutada. Küpsised on sisselogimise jaoks vajalikud.';
+$lang['Date created, new &rarr; old'] = 'Loomise kuupäev, uus &rarr; vana';
+$lang['Date created, old &rarr; new'] = 'Loomise kuupäev, vana &rarr; uus';
+$lang['Date posted, new &rarr; old'] = 'Postituse kuupäev, uus &rarr; vana';
+$lang['Date posted, old &rarr; new'] = 'Postituse kuupäev, vana &rarr; uus';
+$lang['Date'] = 'Kuupäev';
+$lang['Desktop'] = 'Töölaud';
+$lang['EXIF Metadata'] = 'EXIF metaandmed';
+$lang['Edit a comment'] = 'Toimeta kommentaari';
+$lang['Edit'] = 'Redigeeri';
+$lang['Email: %s'] = 'Epost: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Tühi päring. Midagi pole sisestatud.';
+$lang['End-Date'] = 'Lõppkuupäev';
+$lang['Enter your new password below.'] = 'Sisesta uus parool allpool.';
+$lang['File name, A &rarr; Z'] = 'Failinimi, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Failinimi, Z &rarr; A';
+$lang['Forbidden'] = 'Keelatud';
+$lang['Hello %s,'] = 'Tere, %s';
+$lang['Here are your connection settings'] = 'Sellised on su ühenduse määrangud';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'IPTC metaandmed';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Kui arvad, et oled saanud selle eposti eksituse teel, palun teavita meid aadressil %s';
+$lang['Invalid key'] = 'Vigane võti';
+$lang['Kind of date'] = 'Kuupäeva välimus';
+$lang['Links'] = 'Lingid';
+$lang['Manual sort order'] = 'Sorteeri käsitsi';
+$lang['Menu'] = 'Menüü';
+$lang['Mobile'] = 'Mobiil';
+$lang['N/A'] = 'pole saadaval';
+$lang['New on %s'] = 'Uus %s';
+$lang['No'] = 'Ei';
+$lang['Not repeat the slideshow'] = 'Ära korda esitlust';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Arvuline identifikaator, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Arvuline identifikaator, 9 &rarr; 1';
+$lang['Original'] = 'Originaal';
+$lang['Page not found'] = 'Lehte ei leitud';
+$lang['Password: %s'] = 'Parool: %s';
+$lang['Pause of slideshow'] = 'Peata esitlust';
+$lang['Permalink for album not found'] = 'Albumi püsilinki ei leitud ';
+$lang['Photo sizes'] = 'Foto suurused';
+$lang['Photo title, A &rarr; Z'] = 'Foto pealkiri, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Foto pealkiri, Z &rarr; A';
+$lang['Piwigo Help'] = 'Piwigo abi';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo sattus hätta, millest ei saanudki taastuda';
+$lang['Play of slideshow'] = 'Näita esitlust';
+$lang['Please enter your username or email address.'] = 'Palun sisesta kasutajanimi ja parool';
+$lang['Please, enter a login'] = 'Palun sisesta kasutajanimi';
+$lang['Quick search'] = 'Kiirpäring';
+$lang['Rank'] = 'Hinnang';
+$lang['Rating score, high &rarr; low'] = 'Hinnanguskoor, kõrge &rarr; madal';
+$lang['Rating score, low &rarr; high'] = 'Hinnanguskoor, madal &rarr; kõrge';
+$lang['Rating score'] = 'Hinnanguskoor';
+$lang['Reduce diaporama speed'] = 'Vähenda esitluse kiirust';
+$lang['Registration of %s'] = '%s registreerumine';
+$lang['Repeat the slideshow'] = 'Korda esitlust';
+$lang['Requested album does not exist'] = 'Päritud album ei eksisteeri';
+$lang['Reset to default values'] = 'Algseadista väärtused';
+$lang['Return to home page'] = 'Tagasi avalehele';
+$lang['SQL queries in'] = 'SQL päringud';
+$lang['Search by date'] = 'Otsi kuupäeva järgi';
+$lang['Search for Author'] = 'Otsi autori järgi';
+$lang['Search for all terms'] = 'Otsi kõiki tingimusi';
+$lang['Search for any term'] = 'Otsi mistahes tingimust';
+$lang['Search for words'] = 'Otsi sõnu';
+$lang['Search in albums'] = 'Otsi albumis';
+$lang['Search in sub-albums'] = 'Otsi allalbumites';
+$lang['Search results'] = 'Otsingu vasted';
+$lang['Send my connection settings by email'] = 'Saada mu ühenduse määrangud mulle eposti teel';
+$lang['Sent by'] = 'Saatja';
+$lang['Show latest comments first'] = 'Näita viimased kommentaarid kõigepealt';
+$lang['Show number of comments'] = 'Näita kommentaaride arv';
+$lang['Show number of hits'] = 'Näita tabamuste arv';
+$lang['Show oldest comments first'] = 'Näita vanimad kommentaarid kõigepealt';
+$lang['Specials'] = 'Erileheküljed';
+$lang['Submit'] = 'Postita';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registreerimine lõppes edukalt, varsti saabub sulle epost su ühenduse määrangutega. Tere tulemast pardale!';
+$lang['Tag results for'] = 'Leitud märksõnade vasteid';
+$lang['Thank you for registering at %s!'] = 'Täname registreerumaks leheküljel %s';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS voog teavitab uutest sündmustest sel leheküljel, nt uued fotod, uuendatud albumid, uued kommentaarid. Kasutamiseks RSS voo lugeris.';
+$lang['The passwords do not match'] = 'Paroolid ei klapi omavahel';
+$lang['Thumbnails'] = 'Pisipildid';
+$lang['Update your rating'] = 'Uuenda hinnet';
+$lang['User: %s'] = 'Kasutaja: %s';
+$lang['Username modification'] = 'Toimeta kasutajanime';
+$lang['Username or email'] = 'Kasutajanimi või epost';
+$lang['Username: %s'] = 'Kasutajanimi: %s';
+$lang['View in'] = 'Näita';
+$lang['Visits, high &rarr; low'] = 'Külastused, kõrged &rarr; madalad';
+$lang['Visits, low &rarr; high'] = 'Külastused, madalad &rarr; kõrged';
+$lang['Welcome'] = 'Tere tulemast';
+$lang['Yes'] = 'Jah';
+$lang['You will receive a link to create a new password via email.'] = 'Sulle saadeti epost uue parooli tekitamise juhistega';
+$lang['Your password has been reset'] = 'Su parool on tühistatud';
+$lang['Your username has been successfully changed to : %s'] = 'Su kasutajanimi on vahetatud : %s';
+$lang['cloud'] = 'mosaiik';
+$lang['delete all photos from your favorites'] = 'Tühista oma lemmikute nimekiri';
+$lang['display only recently posted photos'] = 'kuva ainult viimati postitud fotosid';
+$lang['display photos linked to this tag'] = 'kuva teisi fotosid seotud sama märksõnaga';
+$lang['from %s to %s'] = '%s-st kuni %s';
+$lang['group by letters'] = 'gruppeeri tähtede kaupa';
+$lang['large'] = 'L — suur';
+$lang['letters'] = 'tähed';
+$lang['login mustn\'t end with a space character'] = 'kasutajanimi ei saa lõppeda tühikuga';
+$lang['login mustn\'t start with a space character'] = 'kasutajanimi ei saa algada tühikuga';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'eposti aadress peab ühilduma malliga xxx@yyy.zzz (näiteks: keegi@siin.ee)';
+$lang['medium'] = 'M — keskmine';
+$lang['photos posted during the last %d days'] = 'fotod postitud viimase %d päeva vältel';
+$lang['representative'] = 'albumi pisipilt';
+$lang['return to the display of all photos'] = 'tagasi kõikide fotode kuvamisele';
+$lang['searched words : %s'] = 'otsitud sõnad: %s';
+$lang['set as album representative'] = 'määra albumi pisipildiks';
+$lang['slideshow'] = 'esitlus';
+$lang['small'] = 'S — väike';
+$lang['square'] = 'Ruut';
+$lang['stop the slideshow'] = 'välju esitlusest';
+$lang['the beginning'] = 'algusesse';
+$lang['the username must be given'] = 'vajatakse kasutajanimi';
+$lang['this email address is already in use'] = 'selline eposti aadress on juba käigus';
+$lang['this login is already used'] = 'selline kasutajanimi on juba käigus';
+$lang['thumb'] = 'Pisipilt';
+$lang['today'] = 'täna';
+$lang['useful when password forgotten'] = 'abiks juhul kui unustad parooli';
+$lang['xlarge'] = 'XL — väga suur';
+$lang['xsmall'] = 'XS — väga väike';
+$lang['xxlarge'] = 'XXL — hiigelsuur';
+$lang['Email address is mandatory'] = 'E-posti aadress on kohustuslik';
+$lang['Username is mandatory'] = 'Kasutajanimi on kohustuslik';
+$lang['Website'] = 'Veebileht';
+$lang['Your website URL is invalid'] = 'Antud veebilehe aadress on vigane';
+$lang['mandatory'] = 'kohustuslik';
+$lang['Email'] = 'E-kiri';
+$lang['First Page'] = 'Esimene leht';
+$lang['Go back to the album'] = 'Mine tagasi albumi juurde';
+$lang['Last Page'] = 'Viimane leht';
+$lang['Password is missing. Please enter the password.'] = 'Parool puudub. Palun sisesta parool.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Parooli kinnitus puudub. Palun kinnita valitud parool.';
+$lang['%d photos per page'] = '%d pilte lehel';
+?>
Index: /tags/2.6.0RC1/language/et_EE/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,48 @@
+<h2>Toimeta albumit</h2>
+
+<h3>Informatsioon</h3>
+
+<ul>
+
+  <li><strong>nimi</strong>: muuda albumi nime (muuda virtuaalselt, kui on tegemist 
+  füüsilise albumiga).</li>
+
+  <li><strong>kirjeldus</strong>: lühike tekst, mis kirjeldab üldjoontes albumi sisu,
+  see tekst kuvatakse pisipiltide lehe allosas .</li>
+
+</ul>
+
+<h3>Liigutamine</h3>
+
+<p>Kui album on virtuaalne, saad seda liigutada. Albumi liigutamine tähendab 
+tema põhialbumi muutmist.</p>
+
+<h3>Omadused</h3>
+
+<ul>
+
+  <li><strong>Ligipääsu tüüp</strong>: Õiguste määramine. Kui muudad albumi privaatseks,
+  siis muutuvad ka kõik tema alamalbumid privaatseks. Kui sa muudad
+  albumi avalikuks, siis selle põhialbum muutub ka avalikuks.</li>
+
+  <li><strong>Lukk</strong>: Albumi ja selle alamalbumite ajutine
+  sulgemine.</li>
+
+  <li><strong>Kommentaarid</strong>: Määra albumi kommenteerimise 
+  võimalikkus.</li>
+
+</ul>
+
+<p>Neid muutmisi saad teha samuti lehel "Omadused" 
+(lehed <span
+class="pwgScreen">Kommentaarid</span>, <span class="pwgScreen">Lukk</span>,
+<span class="pwgScreen">Avalik/Privaatne</span>, <span
+class="pwgScreen">Kaanepilt</span> on saadaval <span
+class="pwgScreen">Administreerimine &raquo; Albumid &raquo; Omadused</span>).</p>
+
+<h3>Sorteerimisjärjestus</h3>
+
+<p>Määra milline on vaikimisi piltide järjestus.</p>
+
+<p>Märgi linnuke, kui sama Sorteerimisjärjestus kehtib ka alamalbumitele.</p>
+
Index: /tags/2.6.0RC1/language/et_EE/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Virtuaalsete Albumite liigutamine</h2>
+
+<p>Ainult virtuaalstel albumitel saab olla uus kõrgema tasandi album.</p>
+
+<h3>Virtuaalseid albumeid mida liigutada</h3>
+
+<p>Vali üks või mitu virtuaalset albumit, mida soovid liigutada. 
+Kui nimekiri on tühi, siis ei ole sa veel ühtegi loonud.</p>
+
+<h3>Uus kõrgema taseme album</h3>
+
+<p>Vali uus kõrgema taseme album (virtuaalne või füüsiline). 
+Kui sa ei vali ühtegi kõrgema taseme albumit, siis valitud albumid liigutatakse juurkausta.
+Albumit ei saa liigutada tema enda või mõne tema almkausta sisse.</p>
Index: /tags/2.6.0RC1/language/et_EE/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Albumi omadused</h2>
+
+<p>Mitme albumi omaduste muutmine korraga.</p>
+
+<dl>
+
+<dt>Kommentaarid</dt>
+<dd>Külastajad saavad fotot kommenteerida, kui see asub albumis mille jaoks on kommentaarid lubatud.</dd>
+
+<dt>Lukk</dt>
+<dd>Lukustatud albumid ei ole nähtavad. Ainult administraatorid näevad neid galeriis.</dd>
+
+<dt>Avalik / privaatne</dt>
+<dd>Kui album on privaatne, saad määrata ligipääsu valitud kasutajatele või gruppidele</dd>
+
+<dt>Kaanepilt</dt>
+<dd>See omadus on saadaval, kui asetad konfiguratsiooni sätetesse
+<code>allow_random_representative</code> (vaata <span
+ class="filename">include/config_defaults.inc.php</span>)
+<em>true</em>. Iga albumi kaanepildiks võib olla juhuslik foto albumist või selleks kindlalt määratud foto.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/et_EE/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Albumi volituste haldamine</h2>
+
+<p>See lehekülhg on nähtav ainult privaatsete albumite puhul. Siin saad määrata
+kasutajate ja gruppide ligipääsu albumile.</p>
+
+<h3>Grupid</h3>
+
+<p>Sa saad lubada või keelata gruppide ligipääsu konkreetsele albumile. Kasutajad, kes gruppi kuuluvad,
+saavad vastavalt loa või keelu näha albumit.</p>
+
+<h3>Kasutajad</h3>
+
+<p>Sa saad võimaldada või piirata albumile ligipääsu individuaalselt kasutajale.
+Kasutajatele, kellel on luba grupi kaudu, võib seada erandina piirangu.</p>
Index: /tags/2.6.0RC1/language/et_EE/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/configuration.html	(revision 25596)
@@ -0,0 +1,100 @@
+<h2>Seadistused</h2>
+
+<p>Sellel leheküljel saab administraator teha põhilisi muudatusi galeriis. Kuigi siin on võimalik muuta lihtsamaid parameetreid, peaks see olema piisav enamusele administraatoritele. Kui soovid näha paljusid teisi (ja edasijõudnumaid) seadistamis parameetreid, vaata vaikimisi seadistuste faili <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Lehekülg on jaotaud erinevateks sektsioonideks, grupeerides seadistusparameetreid teemade järgi.</p>
+
+
+<h3>Peamine</h3>
+<ul>
+  <li><strong>Galerii nimi</strong>: kasutatakse RSS voos ja teadetes emailile.</li>
+
+  <li><strong>Lehekülje päistiitel</strong>: näidatakse iga avaliku lehe päises.</li>
+
+  <li><strong>Galerii URL</strong>: kasutatakse RSS voos.</li>
+
+  <li><strong>Lukusta galerii</strong>: Lukusta kogu galerii. Ainult administraatori staatuses kasutajad näevad galeriid selle seade puhul.</li>
+
+  <li><strong>Hindamine</strong>: Fotode hindamise lubamine.</li>
+
+  <li><strong>Hindamine külastajate poolt</strong>: Ka mitteregistreeritud kasutajad saavad pilte hinnata.</li>
+
+  <li><strong>Luba kasutajate registreerimine</strong>: Igaüks võib registreeruda.</li>
+
+  <li><strong>Meiliaadress on kohustuslik kõigile kasutajatele</strong>: meiliaadressi kontrollitakse registreerumisel või profiili uuendamisel, välja arvatud, kui neid toiminguid tehakse administraatori poolt.</li>
+
+  <li><strong>Saada email administraatorile, kui uus kasutaja registreerub</strong>: administraatorid saavad meilile teate igast uuest registreerumisest.</li>
+  
+  <li><strong>Fotode vaikimisi järjestus</strong>: saad määrata fotode järjekorra nende rippmenüüde abil.</li>
+
+</ul>
+
+<h3>Ajalugu</h3>
+
+  <p>Külastused lehtedel <span
+  class="pwgScreen">category.php</span> and <span
+  class="pwgScreen">picture.php</span> salvestatakse <code>history</code> tabelis.</p>
+  
+  <p>Külastusi näidatakse:<span  class="pwgScreen">Administratsioon &raquo; Tööriistad &raquo; Ajalugu</span>.</p>
+
+<ul>
+  <li><strong>Salvesta lehe külastuste arv külaliste põhiselt</strong>: külaliste külastused lehele salvestatakse .</li>
+
+  <li><strong>Salvesta lehe külastuste arv kasutajate põhiselt</strong>: registreeritud kasutajate külastused salvestatakse.</li>
+
+  <li><strong>Salvesta lehe külastuste arv administraatorite põhiselt</strong>: administraatorite külastused salvestatakse.</li>
+
+</ul>
+
+<h3>Kommentaarid</h3>
+<ul>
+
+  <li><strong>Kommentaarid kõigile</strong>: Ka mitteregistreeritud kasutajad võivad kommenteerida.</li>
+
+  <li><strong>Kommentaaride arv lehel</strong>.</li>
+
+  <li><strong>Kinnitamine</strong>: administraator peab kinnitama kommentaarid, enne kui need lehel nähtavaks saavad. Kommentaaride kinnitamine toimub: <span class="pwgScreen">Administreerimine &raquo; Tööriistad &raquo; Ootel kommentaarid</span>.</li>
+
+  <li><strong>Teavita admine kui kinnitatud kommentaar on sisestatud</strong>: Saadab emaili administraatoreile kui kasutaja sisestab kommentaari mis on kinnitatud.</li>
+
+  <li><strong>Teavita admine kui kommentaar vajab kinnitamist</strong>:
+Saadab emaili administraatoreile kui kasutaja sisestab kommentaari mis vajab kinnitamist admini poolt.
+Kasutajate kommentaaride lubamine toimub lehel: <span class="pwgScreen">Administreerimine &raquo; Tööriistad &raquo; Ootel kommentaarid</span>.</li>
+
+</ul>
+
+<h3>Kuva seadistamine</h3>
+
+<p>Siin saad muuta millisena näevad kuva külastajad, suvalised kasutajad, kes pole sisse logitud. Pärast sisselogimist, näeb iga kasutaja oma valikute järgi kujundust
+(muudetav <span class="pwgScreen">profiilis</span>).</p>
+
+<p>On võimalik muuta kuva valikuid kõigi kasutajate jaoks: <span class="pwgScreen">Administreerimine &raquo;
+Kasutajad &raquo; Halda</span> lehel, kus saad valida kasutajate nimekirja.</p>
+
+<ul>
+
+  <li><strong>Language</strong>: Apply to Piwigo labels only. Album names, photo names and all descriptions fields are not localized.</li>
+
+  <li><strong>Number of photos per row</strong></li>
+
+  <li><strong>Number of rows per page</strong></li>
+
+  <li><strong>Interface theme</strong></li>
+
+  <li><strong>Recent period</strong>: By days. Period during which a photo is shown as new. Must be greater than 1 day.</li>
+
+  <li><strong>Expand all albums</strong>: Expand all albums by
+  default in the menu <em>Warning</em>: this option is resources intensive and may generate a huge menu if your album tree contains many albums.</li>
+
+  <li><strong>Show number of comments</strong>: Show the number of comments for each photo on the thumbnails page. Resource intensive.</li>
+
+  <li><strong>Show hits count</strong>: Display hits observed on photo just under its thumbnail on the thumbnails page. Only when advanced configuration parameter is: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Notice: false by default.</li>
+
+  <li><strong>Maximum width of the photos</strong>: maximum displayed width.  Photos larger than this setting will be resized on display.  Rather than choosing this option, you might consider modifying the width of your photos; that would be a better practice.</li>
+
+  <li><strong>Maximum height of the photos</strong>: Same as for the maximum width setting.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/et_EE/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/et_EE/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Gruppide nimekiri</h2>
+
+<p>Siin saab hallata gruppe.</p>
+
+<h3>Lisa grupp</h3>
+
+<p>Administraatorid saavad gruppe lisada.</p>
+
+<h3>Gruppide nimekiri</h3>
+
+<p>Iaga grupiga saab teha järgnevaid tegevusi:</p>
+
+
+<ul>
+  <li>minna kasutajate halduse lehele(Administreeri &raquo; Kasutajad &raquo; Halda)</li>
+  <li>minna õiguste lehele et lubada või keelata juurdepääsu privaatalbumitele.</li>
+  <li>kustutada gruppe (vajab kinnitust)</li>
+  <li>valida vaikeväärtused (vajab kinnitust)</li>
+</ul>
+
+<h3>Vaikegrupid</h3>
+<p>Vaikegrupid on grupid, mis on automaatselt seotud iga loodud kasutajaga.</p>
Index: /tags/2.6.0RC1/language/et_EE/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/et_EE/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Halduri häälestamine';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternatiivne viis lahendada, on kopeerida üleval pool kastis oleva teksti faili "local/config/database.inc.php" (NB! fail peab sisaldama vaid selle teksti, ei midagi muud ega ühtki tühikutki)';
+$lang['Basic configuration'] = 'Põhiline häälestamine';
+$lang['Can\'t connect to server'] = 'Ühendumine serveriga nurjus';
+$lang['Congratulations, Piwigo installation is completed'] = 'Palju õnne! Piwigo paigaldamine on valmis.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Serveriga ühendati ära, aga andmebaasiga ühendumine nurjus.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Häälestusfaili loomine ebaõnnestus ("local/config/database.inc.php").';
+$lang['Database configuration'] = 'Andmebaasi häälestamine';
+$lang['Database name'] = 'Andmebaasi nimi';
+$lang['Database table prefix'] = 'Andmebaasi tabelinimede eesliide';
+$lang['Default gallery language'] = 'Gallerii vaikimisi keel';
+$lang['Download the config file'] = 'Laadi häälestusfail alla';
+$lang['Hope to see you back soon.'] = 'Loodame sind varsti jälle näha.';
+$lang['Host'] = 'Host';
+$lang['Installation'] = 'Paigaldamine';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Paistab, et su serveris jooksutatakse PHP versiooni %s.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Seda näidetakse külastajatele ning on vajalik veebilehe haldamiseks';
+$lang['Just another Piwigo gallery'] = 'Lihtsalt veel üks järjekordne Piwigo gallerii';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hoia seda salaja, sellega saad lehekülje haldurisse sisse';
+$lang['PHP 5 is required'] = 'Vajatakse PHP versiooni 5';
+$lang['Password ']['confirm'] = 'Kinnita parooli';
+$lang['Sorry!'] = 'Vabandust!';
+$lang['Start Install'] = 'Alusta paigaldamist';
+$lang['Try to configure PHP 5'] = 'Proovi häälestada PHP 5';
+$lang['User'] = 'Kasutaja';
+$lang['Welcome to my photo gallery'] = 'Tere tulemast mu fotogalleriisse';
+$lang['Welcome to your new installation of Piwigo!'] = 'Tere tulemast äsja installitud Piwigosse!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Sa võid laadida häälestusfaili alla ja ise paigaldada selle oma "local/config" kaustasse.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Sa peaksid küsima oma veebimajutuse teenusepakkuja käest, kas on võimalik minna üle PHP versioonile 5.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Muidugi kasuta meie foorumeid abi leidmiseks: %s';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Vajad abi? Küsi <a href="%s">Piwigo abilauast</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Sa võid teha muudatusi seadistusfailis ja pärast ümberkäivitada Piwigo.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo oskab ise proovida seadistada PHP 5, seadistades selleks .htaccess faili.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ei suutnud seadistada PHP 5 kasutamist.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Külalised võivad kasutada seda epost-aadressi et ühendust võtta administraatoriga';
+$lang['also given by your host provider'] = 'samuti antud veebimajutuse teenusepakkuja poolt';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'andmebaasi tabelite nimed alustatakse selle eesliitega (see hõlpsustab tabelite korraspidamist samas andmebaasis)';
+$lang['enter a login for webmaster'] = 'sisesta veebimeistri jaoks kasutajanimi';
+$lang['please enter your password again'] = 'palun sisesta parool uuesti';
+$lang['user login given by your host provider'] = 'veebimajutuse kasutajanimi';
+$lang['user password given by your host provider'] = 'veebimajutuse parool';
+$lang['verification'] = 'kinnitamine';
+$lang['webmaster login can\'t contain characters \' or "'] = 'veebimeistri kasutajanimi ei saa sisaldada jutumärke';
+$lang['localhost or other, supplied by your host provider'] = 'localhost või teised, antud teenusepakkuja poolt';
+?>
Index: /tags/2.6.0RC1/language/et_EE/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/et_EE/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Estonian [EE]
Index: /tags/2.6.0RC1/language/et_EE/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/et_EE/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/et_EE/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Privaatsete albumite kõik alam-albumid saavad samuti privaatseteks';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Ettevaatusabinõuks on järgmised pluginad deaktiveeritud. Sa pead vaatama kas neile on saadaval uuendusi, enne kui sa need aktiveerid.';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Ettevaatusabinõuks on järgmised teemad deaktiveeritud. Sa pead vaatama kas neile on saadaval uuendusi, enne kui sa need aktiveerid.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, before <b>?></b>, insert:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Ainult administraatoril on õigus uuendada, logi sisse allpool.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Ainult pisipiltide eesliides ja veebimeistri epostiaadress on eelmistest seadistustest talletatud';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Soorita hoolduskontroll [vt Administreerimine>Tööriistad>Hooldus] juhul kui sa märkad probleemi.';
+$lang['SQL queries'] = 'SQL andmebaasi päring';
+$lang['Statistics'] = 'Statistika';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'On soovitatud uuendada andmebaas Piwigo uuele versioonile. Uuendamisprogrammi abiline arvab et praegu jooksutatakse <strong>versiooni %s</strong> (või sellele vastavat).';
+$lang['Upgrade from version %s to %s'] = 'Ueenda versioonilt %s versioonile %s';
+$lang['Upgrade informations'] = 'Uuendusest lähemalt';
+$lang['Upgrade'] = 'Uuenda';
+$lang['User permissions and group permissions have been erased'] = 'Kasutajate ja gruppide kasutamisõigused on kustutatud';
+$lang['You do not have access rights to run upgrade'] = 'Sul puudub õigus käivitada uuendust';
+$lang['total SQL time'] = 'SQL aeg kokku';
+$lang['total upgrade time'] = 'uuendamisel kulutatud aeg kokku';
+?>
Index: /tags/2.6.0RC1/language/fa_IR/about.html
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/about.html	(revision 25596)
@@ -0,0 +1,17 @@
+<p>اين گالري عکس توسط Piwigo به قدرت رسيده است.</p>
+
+<p>Piwigo يک گالري تصوير آنلاين است که براي وب طراحي شده .
+Piwigo با کمک عموم ، کاربران و گشترش دهندگان به اين جايگاه رسيده است. 
+گسترش‌دهنده‌ها(Extensions)ی 
+Piwigo به راحتي قابل سفارشي کردن گالري شما هستند.
+Piwigo يک اسکريپت رايگان و يک پروژه کدباز است.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">نمايش وب‌سايت پشتيباني Piwigo انگليسي</a></p>
+
+<p>The persian translation is maintained by (in alphabetical order):
+
+<ul>
+<li><a href="http://piwigo.org/forum/profile.php?id=15764">Garcia</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=8812">mohammadN</a></li>
+</ul>
+.... Many thanks to you</p> 
Index: /tags/2.6.0RC1/language/fa_IR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/admin.lang.php	(revision 25596)
@@ -0,0 +1,957 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = '%d پیوند';
+$lang['%d associations'] = '%d پیوند';
+$lang['%d album including'] = 'شامل %d آلبوم';
+$lang['%d albums including'] = 'شامل %d آلبوم';
+$lang['%d physical'] = ' %d فیزیکی';
+$lang[' and %d virtual'] = ' و %d مجازی';
+$lang['%d album moved'] = '%d آلبوم جابجا شد';
+$lang['%d albums moved'] = '%d تا آلبوم جابجا شدند';
+$lang['%d group'] = "%d گروه";
+$lang['%d groups'] = "%d گروه";
+$lang['%d member'] = "%d کاربر";
+$lang['%d members'] = "%d کاربر";
+$lang['%d tag'] = "%d برچسب";
+$lang['%d tags'] = "%d برچسب";
+$lang['%d user comment rejected'] = '%d دیدگاه کاربر رد شد';
+$lang['%d user comments rejected'] = '%d دیدگاه کاربر رد شدند';
+$lang['%d user comment validated'] = '%d دیدگاه کاربر پذیرفته شد';
+$lang['%d user comments validated'] = '%d دیدگاه کاربر پذیرفته شد';
+$lang['%d user deleted'] = '%d کاربر پاک شد';
+$lang['%d users deleted'] = '%d تا کاربر پاک شدند';
+$lang['%d user'] = "%d کاربر";
+$lang['%d users'] = "%d کاربر";
+$lang['%d waiting for validation'] = '%d تا در انتظار پذیرش';
+$lang['Actions'] = 'کارها';
+$lang['Activate'] = 'فعال کردن';
+$lang['Add/delete a permalink'] = 'افزودن/پاک کردن لینک ثابت';
+$lang['Add a tag'] = 'افزودن برچسب';
+$lang['Add a user'] = 'افزودن کاربر';
+$lang['Add group'] = 'افزودن گروه';
+$lang['Add'] = "افزودن";
+$lang['Allow user registration'] = 'فعال بودن نام‌نویسی کاربر';
+$lang['Apply to sub-albums'] = 'بر روی زیرآلبوم‌ها انجام شود';
+$lang['Associated'] = 'پیوسته';
+$lang['Caddie management'] = "مدیریت سبد";
+$lang['Caddie'] = "سبد";
+$lang['Albums authorized thanks to group associations'] = 'آلبوم‌ها به صورت خودکار چیده شدند';
+$lang['Album manual order was saved'] = 'چیدمان دستی آلبوم‌ها با موفقیت ذخیره شد';
+$lang['Check for upgrade failed for unknown reasons.'] = 'بررسی برای بروزرسانی به دلایل نامعلومی با مشکل مواجه شد.';
+$lang['Check for upgrade'] = 'بررسی برای آپگرید';
+$lang['Comments for all'] = 'یادداشت برای همه';
+$lang['Current name'] = 'نام کنونی';
+$lang['Database'] = 'پایگاه داده';
+$lang['Deactivate'] = "از کار انداختن";
+$lang['Delete Representant'] = 'پاک کردن عکس ریزه‌ی آلبوم';
+$lang['Delete selected tags'] = 'پاک کردن برچسب‌های انتخاب شده';
+$lang['Delete selected users'] = 'پاک کردن کاربران انتخاب شده';
+$lang['Deletions'] = 'پاک کردن';
+$lang['Deny selected groups'] = 'رد کردن گروه‌های انتخاب شده';
+$lang['Deny selected users'] = "رد کردن کاربران انتخاب شده";
+$lang['Description'] = 'توضیحات';
+$lang['Display options'] = 'نمایش گزینه‌ها';
+$lang['Dissociated'] = 'جدا شده';
+$lang['Does not represent'] = 'عکس ریزه نیست برای';
+$lang['Edit selected tags'] = 'ویرایش برچسب‌های انتخاب شده';
+$lang['Edit tags'] = 'ویرایش برچسب‌ها';
+$lang['Email admins when a new user registers'] = 'فرستادن ایمیل به مدیران هنگامی که کاربری تازه نام نویسی می‌کند';
+$lang['Email admins when a valid comment is entered'] = 'فرستادن ایمیل به مدیران هنگامی که دیدگاه درستی نوشته می‌شود';
+$lang['Email admins when a comment requires validation'] = 'فرستادن ایمیل به مدیران هنگامی که دیدگاهی نیاز به پذیرش دارد';
+$lang['Environment'] = 'محیط';
+$lang['Form'] = "فرم";
+$lang['Gallery title'] = 'عنوان گالری';
+$lang['Grant selected groups'] = 'اجازه دادن به گروه‌های انتخاب شده';
+$lang['Grant selected users'] = 'اجازه دادن به کاربران انتخاب شده';
+$lang['Group name'] = "نام گروه";
+$lang['Groups'] = 'گروه‌ها';
+$lang['Guests'] = 'مهمانان';
+$lang['History'] = 'تاریخچه';
+$lang['Informations'] = "اطلاعات";
+$lang['Install'] = "نصب";
+$lang['Link all album photos to a new album'] = 'پیوند دادن همه‌‎ی عکس‌های آلبوم به یک آلبوم تازه';
+$lang['Link all album photos to some existing albums'] = 'پیوند دادن همه‌ی عکس‌های آلبوم به چند آلبوم موجود';
+$lang['Linked albums'] = 'آلبوم‌های پیوند داده شده';
+$lang['Lock gallery'] = 'قفل کردن گالری';
+$lang['Maintenance'] = 'بازسازی';
+$lang['Edit album permissions'] = 'مدیریت مجوزهای آلبوم';
+$lang['Manage permissions for group "%s"'] = 'مدیریت مجوزهای گروه "%s"';
+$lang['Manage permissions for user "%s"'] = 'مدیریت مجوزهای کاربر "%s"';
+$lang['Manage tags'] = 'مدیریت برچسب‌ها';
+$lang['Members'] = 'کاربران';
+$lang['Metadata synchronized from file'] = 'همگام‌ سازی ابر داده (Metadata) از فایل';
+$lang['Move albums'] = 'جابجا کردن آلبوم‌ها';
+$lang['Move'] = 'جابجا کردن';
+$lang['Name'] = "نام";
+$lang['New name'] = 'نام تازه';
+$lang['New parent album'] = 'آلبوم مادر تازه';
+$lang['New tag'] = 'برچسب تاره';
+$lang['Number of comments per page'] = 'شمار دیدگاه‌ها در هر برگه';
+$lang['Number of rates'] = 'امتیاز‌ها';
+$lang['Number of thumbnails to create'] = 'شمار عکس ریزه‌ها برای ساختن';
+$lang['Only private albums are listed'] = 'تنها آلبوم‌های شخصی را نشان بده';
+$lang['Operating system'] = 'سیستم عامل';
+$lang['Options'] = 'گزینه ها';
+$lang['Other private albums'] = 'دیگر آلبوم‌های شخصی';
+$lang['Page banner'] = 'بنر برگه';
+$lang['Parent album'] = 'آلبوم مادر';
+$lang['Path'] = 'مسیر';
+$lang['Permalink'] = 'لینک ثابت';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'لینک ثابت %s پیش از این در آلبوم %s استفاده شده بود. نخست این لینک ثابت را از تاریخچه پاک کنید';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'نام لینک ثابت باید فقط ترکیبی از a-z، A-Z، 0-9، "-"، "_" یا "/" باشد. همچنین نباید فقط دارای عدد باشد یا با عدد و "-" آغاز شود';
+$lang['Permalink %s is already used by album %s'] = 'لینک ثابت  %s هم اکنون در آلبوم %s استفاده می‌شود.';
+$lang['Permalink history'] = 'تاریخچه‌ی لینک‌های ثابت ';
+$lang['Permalinks'] = 'لینک‌های ثابت ';
+$lang['Permission denied'] = 'مجوز دسترسی ندارید';
+$lang['Permission granted thanks to a group'] = 'دسترسی داده شد';
+$lang['Permission granted'] = 'دسترسی داده شد';
+$lang['Photo informations updated'] = 'اطلاعات عکس به روز رسانی شد';
+$lang['Plugins'] = 'افزونه ها';
+$lang['Position'] = "موقعیت";
+$lang['Preferences'] = "تنظیمات";
+$lang['Properties'] = 'ویژگی ها';
+$lang['Random photo'] = 'عکس تصادفی';
+$lang['Rate date'] = "تاریخ امتیازدهی";
+$lang['Rating by guests'] = 'دادن امتیاز بوسیله ی مهمان';
+$lang['Rating'] = "امتیازدهی";
+$lang['Reject'] = "رد کردن";
+$lang['Representant'] = 'عکس ریزه ی آلبوم';
+$lang['Representation of albums'] = 'عکس ریزه ی آلبوم';
+$lang['Representative'] = 'عکس ریزه ی آلبوم';
+$lang['Represents'] = 'عکس ریزه ی آلبوم مقابل است :';
+$lang['Save order'] = 'ذخیره ی ترتیب';
+$lang['Save to permalink history'] = 'ذخیره در تاریخچه ی لینک های ثابت';
+$lang['Select at least one album'] = 'حداقل یک آلبوم را انتخاب کنید';
+$lang['Select at least one photo'] = 'حداقل یک عکس را انتخاب کنید';
+$lang['Select at least one user'] = 'حداقل یک کاربر را انتخاب کنید';
+$lang['Show info'] = "نمایش اطلاعات";
+$lang['Site manager'] = 'مدیریت سایت';
+$lang['Status'] = "وضعیت";
+$lang['Statistics'] = "آمار";
+$lang['Storage album'] = 'آلبوم ذخیره سازی';
+$lang['Sum of rates'] = 'مجموع امتیاز ها';
+$lang['Tag "%s" already exists'] = "برچسب \"%s\" در سیستم موجود است";
+$lang['Tag "%s" was added'] = "برچسب \"%s\" افزوده شد";
+$lang['Tag selection'] = 'انتخاب برچسب ها';
+$lang['The %d following tags were deleted'] = 'برچسب های %d پاک شدند';
+$lang['Unable to check for upgrade.'] = 'سیستم قادر به بروز رسانی نیست.';
+$lang['Uninstall'] = 'پاک کردن';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'استفاده از مرتب سازی پیشفرض برای عکس (پیشفرض در فایل تنظیمات است)';
+$lang['User comments validation'] = 'پذیرفتن دیدگاه های کاربر';
+$lang['Users'] = "کاربران";
+$lang['Validate'] = "تایید";
+$lang['Validation'] = "تایید";
+$lang['Version'] = 'نگارش';
+$lang['Virtual albums to move'] = 'آلبوم های مجازی نیازمند جابجایی';
+$lang['Virtual album name'] = 'نام آلبوم مجازی';
+$lang['Webmaster cannot be deleted'] = 'مدیرکل قابل پاک شدن نیست';
+$lang['You are running on development sources, no check possible.'] = 'شما از نگارش توسعه (Development) استفاده می کنید، امکان بررسی وجود ندارد.';
+$lang['You cannot delete your account'] = 'شما نمی توانید حساب خود را پاک کنید';
+$lang['You cannot move an album in its own sub album'] = 'شما نمی توانید آلبوم مادر را به زیر آلبوم خودش جابجا کنید';
+$lang['You need to confirm deletion'] = 'شما باید پاک کردن را بپذیرید';
+$lang['Associate to album'] = 'پیوستن به آلبوم';
+$lang['associate to group'] = "پیوستن به گروه";
+$lang['Authorized'] = "مجاز";
+$lang['Add a virtual album'] = 'افزودن آلبوم مجازی';
+$lang['Authorize users to add comments on selected albums'] = 'اجازه دادن به کاربران برای افزودن دیدگاه به آلبوم‌های انتخاب شده';
+$lang['The name of an album must not be empty'] = 'نام آلبوم نباید خالی باشد';
+$lang['Lock albums'] = 'قفل‌ کردن آلبوم‌ها';
+$lang['Private'] = 'شخصی';
+$lang['Public'] = 'همگانی';
+$lang['Find a new representant by random'] = 'پیداکردن تصادفی یک عکس ریزه‌ی تازه برای آلبوم';
+$lang['Public / Private'] = 'همگانی / خصوصی';
+$lang['Manage authorizations for selected albums'] = 'مدیریت مجوزهای آلبوم‌های انتخاب شده';
+$lang['Virtual album added'] = 'آلبوم مجازی افزوده شد';
+$lang['Virtual album deleted'] = 'آلبوم مجازی پاک شد';
+$lang['Access type'] = "نوع دسترسی";
+$lang['Information data registered in database'] = 'داده‌ی اطلاعات در پایگاه داده ثبت شد';
+$lang['Default display'] = 'نمایش پیشفرض';
+$lang['The gallery URL is not valid.'] = 'آدرس URL معتبر نیست.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'تعداد دیدگاه ها در هر صفحه باید عددی بین 5 تا 50 باشد.';
+$lang['Configuration'] = "پیکربندی";
+$lang['confirm'] = 'پذیرفتن';
+$lang['Date'] = "تاریخ";
+$lang['delete album'] = 'پاک کردن آلبوم';
+$lang['Dissociate from album'] = 'جدا کردن از آلبوم';
+$lang['dissociate from group'] = "جدا کردن از گروه";
+$lang['Album updated successfully'] = 'آلبوم با موفقیت به روز رسانی شد';
+$lang['photos per page'] = 'عکس در هر صفحه';
+$lang['High definition enabled'] = 'حالت HD فعال شده است';
+$lang['File'] = "فایل";
+$lang['first photo added on %s'] = 'عکس نخست در %s افزوده شده';
+$lang['Forbidden'] = 'غیر مجاز';
+$lang['global mode'] = "حالت کلی";
+$lang['group "%s" added'] = "گروه \"%s\" افزوده شد";
+$lang['group "%s" deleted'] = 'گروه "%s" پاک شد';
+$lang['group "%s" updated'] = 'گروه "%s" بروز رسانی شد';
+$lang['The name of a group must not contain " or \' or be empty.'] = "نام گروه نباید دارای علامت \" یا  ' باشد و نمی‌تواند خالی باشد";
+$lang['This name is already used by another group.'] = 'این نام پیش از این برای گروهی دیگر انتخاب شده‌ است.';
+$lang['High definition'] = "High definition";
+$lang['jump to album'] = 'رفتن به آلبوم';
+$lang['jump to photo'] = 'رفتن به عکس';
+$lang['leave'] = 'ترک کردن';
+$lang['Lock'] = "قفل کردن";
+$lang['Locked'] = 'قفل شده';
+$lang['manage album photos'] = 'مدیریت عکس های آلبوم';
+$lang['manage sub-albums'] = 'مدیریت زیرآلبوم ها';
+$lang['Manage'] = "مدیریت";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'زمان اجرا بدلیل کندی به پایان رسید، کار باید ادامه پیدا کند [برآورد زمان: %d ثانیه].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'زمان اجرا بیشتر از حالت همیشگی است، کار باید ادامه پیدا کند [برآورد زمان: %d ثانیه].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'زمان آماده ساختن فهرست کاربرانی که به آنها ایمیل فرستاده می شود محدود است. کاربران دیگر جز فهرست قرار نخواهند گرفت.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'زمان برای فرستادن ایمیل محدود است. بقیه ی ایمیل ها نادیده گرفته می شوند.';
+$lang['To send ?'] = 'فرستادن به؟';
+$lang['Last send'] = 'آخرین فرستاده';
+$lang['User'] = "کاربر";
+$lang['See you soon,'] = 'به امید دیدار،';
+$lang['Go to'] = "برو به";
+$lang['Hello'] = 'درود';
+$lang['New photos were added'] = 'عکس‌های تازه افروده شده‌اند';
+$lang['on'] = 'در';
+$lang['between'] = "بین";
+$lang['and'] = "و";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'مدیر کل شما را برای دریافت آخرین اطلاعات بوسیله ی ایمیل در خبرنامه مشترک کرده است.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'شما در خبرنامه Piwigo مشترک شدید و آخرین تغییرات بوسیله ی ایمیل به اطلاع شما خواهد رسید.';
+$lang['To subscribe'] = "مشترک شدن";
+$lang['If you encounter problems or have any question, please send a message to'] = 'اگر به مشکلی برخوردید یا پرسشی داشتید، پیامی به این نشانی بفرستید:';
+$lang['[NBM] Problems or questions'] = 'مشکل یا پرسش';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'اشتراک شما در خبرنامه بوسیله ی ایمیل از طرف مدیر کل لغو گردید.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'شما از خبرنامه لغو اشتراک  کردید.';
+$lang[', click on'] = '، کلیک کنید بر روی';
+$lang['To unsubscribe'] = 'لغو کردن اشتراک';
+$lang['With blank value, gallery title will be used'] = 'اگر خالی بگذارید، عنوان گالری جای آن می نشیند';
+$lang['Notification'] = 'خبرنامه';
+$lang['Error when sending email to %s [%s].'] = 'خطا در فرستادن ایمیل به %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'ایمیل به %s [%s] فرستاده شد.';
+$lang['%d mail was sent.'] = '%d ایمیل فرستاده شد.';
+$lang['%d mails were sent.'] = '%d ایمیل فرستاده شد.';
+$lang['%d mail was not sent.'] = '%d ایمیل فرستاده نشد.';
+$lang['%d mails were not sent.'] = '%d تا ایمیل فرستاده نشدند.';
+$lang['No mail to send.'] = 'هیچ ایمیلی فرستاده نمی‌شود.';
+$lang['There is no available subscribers to mail.'] = 'هیچ مشترکی برای اشتراک با ایمیل موجود نیست.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'مشترک شده ها تنها زمانی می توانند لیست بشوند (در دسترس قرار گیرند) که چیزهای تازه ای برای اعلام کردن وجود داشته باشد.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'در هر صورت تنها مدیر کل می‌تواند این برگه را ببیند، نه مدیران.';
+$lang['No user to send notifications by mail.'] = 'کاربری برای خبرنامه با ایمیل وجود ندارد.';
+$lang['New photos added'] = 'عکس‌های تازه افروده شدند';
+$lang['Subscribe to notification by mail'] = 'اشتراک بوسیله ی ایمیل';
+$lang['Unsubscribe from notification by mail'] = 'لغو اشتراک بوسیله ی ایمیل';
+$lang['Parameter'] = "تنظیمات";
+$lang['Operation in progress'] = 'کار در حال پردازش است.';
+$lang['Continue processing treatment'] = 'ادامه‌ی کار در حال انجام';
+$lang['Complementary mail content'] = "مکمل محتوای ایمیل";
+$lang['Add detailed content'] = 'افزودن کمی محتوا همراه با جزئیات';
+$lang['Send mail as'] = 'فرستادن ایمیل بعنوان';
+$lang['Send mail to users'] = 'فرستادن ایمیل به کاربران';
+$lang['Send'] = 'فرستادن';
+$lang['Options'] = "گزینه‌ها";
+$lang['Subscribed'] = 'مشترک شده';
+$lang['Subscribe'] = "اشتراک";
+$lang['Parameters'] = 'پارامترها';
+$lang['Select recipients'] = 'انتخاب گیرنده ها';
+$lang['Subscribe/unsubscribe users'] = "مشترک/لغو اشتراک کاربران";
+$lang['Unsubscribed'] = "لغو اشتراک";
+$lang['%d parameter was updated.'] = '%d پارامتر به روز رسانی شد.';
+$lang['%d parameters were updated.'] = '%d تا پارامتر به روز رسانی شدند.';
+$lang['%d user was not updated.'] = '%d کاربر به روز رسانی نشد.';
+$lang['%d users were not updated.'] = '%d تا کاربر به روز رسانی نشدند.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'کاربر %s [%s] از لیست مشترکان خبرنامه پاک شد.';
+$lang['User %s [%s] was added to the subscription list.'] = 'کاربر %s [%s] به لیست مشترکان خبرنامه افزوده شد.';
+$lang['%d user was updated.'] = '%d کاربر به روز رسانی شد.';
+$lang['%d users were updated.'] = '%d تا کاربر به روز رسانی شدند.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'کاربر %s [%s] از لیست مشترکان خبرنامه پاک نشد.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'کاربر %s [%s] به لیست مشترکان خبرنامه افزوده نشد.';
+$lang['User %s [%s] added.'] = "کاربر %s [%s] اضافه شد.";
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'اخطار: اشتراک یا لغو اشتراک با فرستادن ایمیل به کاربران صورت می گیرد';
+$lang['Send mail on HTML format'] = 'فرستادن ایمیل در فرمت HTML';
+$lang['Include display of recent photos grouped by dates'] = 'نمایش آخرین عکس‌ها را با چیدمان بر پایه‌ی تاریخ شامل شود';
+$lang['Available only with HTML format'] = 'فقط با فرمت HTML موجود است';
+$lang['no write access'] = "دسترسی نوشتن را ندارید";
+$lang['Permissions'] = 'مجوز‌ها';
+$lang['private'] = "شخصی";
+$lang['public'] = 'همگانی';
+$lang['Purge never used notification feeds'] = 'پاکسازی خبرنامه هایی که هیچ وقت مورد استفاده قرار نگرفته اند';
+$lang['Purge sessions'] = 'پاکسازی جلسه ها (Sessions)';
+$lang['randomly represented'] = 'عکس ریزه ی آلبومِ تصادفی';
+$lang['registration date'] = 'تاریخ نام نویسی';
+$lang['clean'] = 'پاکسازی';
+$lang['Create this site'] = "ایجاد این سایت";
+$lang['test'] = 'امتحان کردن';
+$lang['test this remote site'] = 'امتحان کردن این سایتِ ریموت ';
+$lang['remove tags'] = 'پاک کردن برچسب ها';
+$lang['Repair and optimize database'] = 'بازسازی و بهینه سازی پایگاه داده';
+$lang['selection'] = "انتخاب";
+$lang['set to'] = "تنظیم به";
+$lang['singly represented'] = 'عکس ریزه ی ثابتِ آلبوم';
+$lang['This site already exists'] = 'این سایت موجود می باشد';
+$lang['created'] = 'ایجاد شد';
+$lang['delete'] = 'پاک کردن';
+$lang['delete this site and all its attached elements'] = 'پاک کردن این سایت با تمام اطلاعات مربوط به آن';
+$lang['deleted'] = 'پاک شده';
+$lang['an error happened'] = "یک خطا رخ داده است";
+$lang['Local'] = "محلی";
+$lang['Remote'] = "ریموت";
+$lang['update the database from files'] = 'بروز رسانی پایگاه داده با فایل ها';
+$lang['status'] = "وضعیت";
+$lang['Directory'] = 'مسیر';
+$lang['sub-albums'] = 'زیر آلبوم ها';
+$lang['Synchronize metadata'] = 'همگام سازی ابرداده (Metadata)';
+$lang['target'] = "هدف";
+$lang['Title'] = "عنوان";
+$lang['Album list management'] = 'مدیریت فهرست آلبوم‌ها';
+$lang['Piwigo configuration'] = "پیکربندی Piwigo";
+$lang['Edit album'] = 'ویرایش آلبوم';
+$lang['Group management'] = 'مدیریت گروه‌ها';
+$lang['User list'] = "لیست کاربران";
+$lang['Edit photo information'] = 'ویرایش اطلاعات عکس';
+$lang['Database synchronization with files'] = 'همگام‌ سازی پایگاه‌ داده با فایل‌ها';
+$lang['all'] = "همه";
+$lang['height must be a number superior to'] = 'بلندا باید بزرگتر باشد از';
+$lang['width must be a number superior to'] = 'پهنا باید عددی باشد بزرگتر از';
+$lang['for the file format'] = 'برای فرمت فایل';
+$lang['Photo unreachable or no support'] = 'عکس غیر قابل دسترسی یا با فرمت ناشناخته است';
+$lang['GD version'] = 'نگارش GD';
+$lang['General statistics'] = 'آمار کلی';
+$lang['average time'] = "زمان متوسط";
+$lang['number of miniaturized photos'] = 'تعداد عکس ریزه ایجاد شد';
+$lang['total time'] = 'مجموع زمان';
+$lang['for this file format'] = 'برای این فرمت فایل';
+$lang['unit mode'] = "حالت تکی";
+$lang['Unlocked'] = 'قفل نشده';
+$lang['unset'] = 'تنظیم نشده';
+$lang['Update albums informations'] = 'بروز رسانی اطلاعات آلبوم ها';
+$lang['Update photos information'] = 'بروز رسانی اطلاعات عکس ها';
+$lang['Synchronize'] = 'همگام سازی';
+$lang['reduce to single existing albums'] = 'کاهش دادن به تک آلبوم های موجود';
+$lang['Choose an option'] = 'یک گزینه را انتخاب کنید';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'نمایش حداکثر اطلاعات (آلبوم ها و عکس های افزوده شده، آلبوم ها و عکس های پاک شده)';
+$lang['Error list'] = 'فهرست خطاها';
+$lang['Errors caption'] = 'شرح خطاها';
+$lang['Detailed informations'] = 'اطلاعات همراه با جزئیات';
+$lang['File/directory read error'] = 'خطا در خواندن فایل/مسیر';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'این فایل یا مسیر قابل دسترسی نمی باشد (یا موجود نیست و یا دسترسی به آن ممنوع است)';
+$lang['albums deleted in the database'] = 'آلبوم از پایگاه داده پاک شدند';
+$lang['photos deleted from the database'] = 'عکس از پایگاه داده پاک شدند';
+$lang['photos candidates for metadata synchronization'] = 'عکس می‌خواهند ابرداده(Metadata) خود را همگام‌ سازی کنند';
+$lang['photos informations synchronized with files metadata'] = 'عکس اطلاعاتشان با فایل های ابرداده(Metadata) همگام‌ سازی شد';
+$lang['errors during synchronization'] = 'خطا در همگام‌ سازی';
+$lang['albums added in the database'] = 'آلبوم در پایگاه‌ داده اضافه شدند';
+$lang['photos added in the database'] = 'عکس در پایگاه‌ داده اضافه شدند';
+$lang['photos updated in the database'] = 'عکس در پایگاه‌ داده بروز شدند';
+$lang['Search for new images in the directories'] = 'جستجو برای عکس های تازه در مسیر ها';
+$lang['added'] = "افزوده شد";
+$lang['deleted'] = "حذف شد";
+$lang['Metadata synchronization results'] = 'نتایج همگام‌ سازی ابر داده (Metadata)';
+$lang['only perform a simulation (no change in database will be made)'] = 'فقط انجام یک شبیه‌ سازی (هیچ چیز در پایگاه داده تغییر نمی‌ کند)';
+$lang['Simulation'] = 'شبیه سازی';
+$lang['directories + files'] = 'مسیر + فایل ها';
+$lang['only directories'] = 'فقط مسیر ها';
+$lang['synchronize files structure with database'] = 'همگام سازی ساختار فایل ها با پایگاه داده';
+$lang['synchronize files metadata with database photos informations'] = 'همگام سازی عکس های پایگاه داده با استفاده از فایل ابرداده (Metadata)';
+$lang['even already synchronized photos'] = 'حتی عکس های همگام شده';
+$lang['Used metadata'] = 'ابرداده (Metadata) استفاده شد';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "نام دایرکتوری‌ها و فایل‌ها فقط می تواند شامل اعداد ، حروف و \"-\" ، \"_\" یا \".\" باشد.";
+$lang['wrong filename'] = 'نام فایل نا درست است';
+$lang['Upload'] = "آپلود";
+$lang['user "%s" added'] = "کاربر \"%s\" افزوده شد";
+$lang['User status'] = "وضعیت کاربر";
+$lang['user_status_admin'] = 'مدیر';
+$lang['user_status_generic'] = "عمومی";
+$lang['user_status_guest'] = 'مهمان';
+$lang['user_status_normal'] = "کاربر";
+$lang['user_status_webmaster'] = 'مدیرکل';
+$lang['Virtual album'] = 'آلبوم مجازی';
+$lang['Waiting'] = "در انتظار";
+$lang['default'] = 'پیشفرض';
+$lang['Toggle \'default group\' property'] = 'معکوش کردن ویژگی های \'گروه پیشفرض\'';
+$lang['Advanced features'] = 'ویژگی‌های پیشرفته';
+$lang['Overall'] = "دید کلی";
+$lang['Year'] = "سال";
+$lang['Month'] = "ماه";
+$lang['Day'] = "روز";
+$lang['Pages seen'] = 'برگه‌های دیده شده';
+$lang['Time'] = 'زمان';
+$lang['IP'] = "IP";
+$lang['Element'] = 'المنت';
+$lang['Section'] = "بخش";
+$lang['An information email was sent to group "%s"'] = 'ایمیل اطلاعات به گروه "%s" فرستاده شد';
+$lang['Send an information email to group members'] = 'فرستادن یک ایمیل اطلاعات به اعضای گروه';
+$lang['Group'] = 'گروه';
+$lang['[%s] Visit album %s'] = '[%s] درحال مشاهده ی آلبوم %s می باشد';
+$lang['Hello,'] = 'درود،';
+$lang['See you soon.'] = 'به امید دیدار.';
+$lang['Discover album:'] = 'آشکارسازی آلبوم:';
+$lang['Mail content'] = "محتویات ایمیل";
+$lang['none'] = 'هیچکدام';
+$lang['high'] = "زیاد";
+$lang['other'] = "دیگر";
+$lang['Element type'] = 'نوع المنت';
+$lang['Image id'] = 'شناسه‌ی عکس';
+$lang['Summary'] = "خلاصه";
+$lang['%d line filtered'] = '%d خط فیلتر شد';
+$lang['%d lines filtered'] = '%d تا خط فیلتر شدند';
+$lang['%d guest'] = '%d مهمان';
+$lang['%d guests'] = '%d مهمان';
+$lang['Hour'] = "ساعت";
+$lang['guest'] = 'مهمان';
+$lang['default values'] = 'مقدار های پیشفرض';
+$lang['Guest cannot be deleted'] = 'مهمان پاک شدنی نیست';
+$lang['Default user cannot be deleted'] = 'کاربر پیشفرض قابل پاک شدن نیست';
+$lang['Purge history detail'] = 'پاکسازی جزئیات تاریخچه';
+$lang['Purge history summary'] = 'پاکسازی خلاصه ی تاریخچه';
+$lang['Check integrity'] = 'بررسی درست بودن سیستم';
+$lang['Anomaly'] = 'ناهنجاری';
+$lang['Correction'] = 'ساماندهی';
+$lang['Automatic correction'] = 'ساماندهی خودکار';
+$lang['Impossible automatic correction'] = 'ساماندهی خودکار انجام نشدنی است';
+$lang['Correction applied with success'] = 'ساماندهی با موفقیت انجام شد';
+$lang['Correction applied with error'] = 'ساماندهی با خطا انجام شد';
+$lang['%d anomaly has been detected.'] = '%d ناهنجاری شناسایی شد.';
+$lang['%d anomalies have been detected.'] = '%d تا ناهنجاری شناسایی شدند.';
+$lang['%d anomaly has been corrected.'] = '%d ناهنجاری ساماندهی شد.';
+$lang['%d anomalies have been detected corrected.'] = '%d تا ناهنجاری شناسایی و ساماندهی شدند.';
+$lang['%d anomaly has not been corrected.'] = '%d ناهنجاری ساماندهی نشد.';
+$lang['%d anomalies have not been corrected.'] = '%d ناهنجاری ساماندهی نشد.';
+$lang['Go to %s or %s for more informations'] = 'برای اطلاعات بیشتر به %s یا %s بروید';
+$lang['the forum'] = 'تالار گفتگو';
+$lang['the wiki'] = "ویکی";
+$lang['%s value is not correct file because exif are not supported'] = 'مقدار %s درست نیست زیرا exif را پشتیبانی نمی‌کند';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s در پرونده‌ی local/config/config.inc.php باید مقدار \'false\' داشته باشد.';
+$lang['Main "guest" user does not exist'] = 'در سیستم کاربر "مهمان" وجود ندارد';
+$lang['Main "guest" user status is incorrect'] = 'وضعیت کاربر "مهمان" درست نیست';
+$lang['Default user does not exist'] = 'کاربر پیشفرض وجود ندارد';
+$lang['Main "webmaster" user does not exist'] = '"مدیر کل" اصلی موجود نیست';
+$lang['Main "webmaster" user status is incorrect'] = 'وضعیت "مدیر کل" درست نیست';
+$lang['User "%s" created with "%s" like password'] = "کاربر \"%s\" با گذرواژه \"%s\" ایجاد شد";
+$lang['Status of user "%s" updated'] = "وضعیت کاربر \"%s\" به روز شد";
+$lang['add new photos to caddie'] = 'افزودن عکس های تازه به سبد';
+$lang['No display'] = "بدون نمایش";
+$lang['Classic display'] = "نمایش کلاسیک";
+$lang['Hoverbox display'] = 'نمایش جعبه‌ی شناور';
+$lang['Mail address is obligatory for all users'] = 'آدرس ایمیل برای تمام کاربران الزامی است';
+$lang['Minimum privacy level'] = 'پایین‌ترین سطح ‌خصوصی';
+$lang['Privacy level'] = "سطح خصوصی";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = 'ارتباط‌ها';
+$lang['Level 2'] = "دوستان";
+$lang['Level 4'] = "خانواده";
+$lang['Level 8'] = "مدیران";
+$lang['Reinitialize check integrity'] = 'مقداردهی دوباره برای بررسی کامل';
+$lang['Check all'] = "علامت‌زدن همه";
+$lang['Uncheck all'] = "برداشتن علامت همه";
+$lang['Check automatic corrections'] = 'بررسی ساماندهی‌های خودکار';
+$lang['Apply selected corrections'] = 'پذیرش ساماندهی‌های انتخاب شده';
+$lang['Ignore selected anomalies'] = 'چشم پوشی از ناهنجاری‌های انتخاب شده';
+$lang['Refresh'] = 'تازه کردن (Refresh)';
+$lang['The anomaly will be ignored until next application version'] = 'از ناهنجاری تا نگارش بعدی چشم پوشی خواهد شد';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'از ناهنجاری ساماندهی شده دیگر چشم پوشی نمی‌شود';
+$lang['%d anomaly has been ignored.'] = 'از %d ناهنجاری چشم‌پوشی شد.';
+$lang['%d anomalies have been ignored.'] = 'از %d تا ناهنجاری چشم‌پوشی شد.';
+$lang['Plugins which need upgrade'] = 'افزونه های نیازمند آپگرید';
+$lang['Plugin list'] = 'فهرست افزونه ها';
+$lang['Check for updates'] = 'بررسی برای به روز رسانی';
+$lang['Other plugins'] = 'دیگر افزونه‌های موجود';
+$lang['Last revisions'] = 'آخرین بازبینى';
+$lang['Are you sure you want to delete this plugin?'] = 'آیا می‌خواهید این افزونه را پاک کنید؟';
+$lang['Are you sure you want to install this plugin?'] = 'آیا می‌خواهید این افزونه را نصب کنید؟';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'آیا می‌خواهید این آپگرید را نصب کنید؟ باید این را بپذیرید زیرا ممکن است نیاز به پاک کردن افزونه‌ای باشد.';
+$lang['Plugin has been successfully copied'] = 'افزونه با موفقیت کپی شد';
+$lang['You might go to plugin list to install and activate it.'] = 'برای نصب یا از کار انداختن این افزونه به لیست افزونه ها بروید.';
+$lang['Can\'t create temporary file.'] = 'امکان ایجاد فایل موقت وجود ندارد.';
+$lang['Can\'t download archive.'] = 'بایگانی را نمی‌توان دانلود کرد.';
+$lang['Can\'t read or extract archive.'] = 'بایگانی را نمی‌توان خواند یا باز کرد.';
+$lang['An error occured during extraction (%s).'] = 'یک خطا هنگام بازکردن فایل‌های (%s) رخ داده است.';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "لطفا سطح دسترسی پوشه \"plugins\" و پوشه‌های زیر مجموعه آن را چک کنید (CHMOD).";
+$lang['Can\'t connect to server.'] = "ارتباط با سرور ممکن نیست.";
+$lang['Purge compiled templates'] = 'پاکسازی قالب های مرتب شده';
+$lang['ACCESS_0'] = "دسترسی آزاد";
+$lang['ACCESS_1'] = "دسترسی برای همه";
+$lang['ACCESS_2'] = 'دسترسی برای کاربران عضو';
+$lang['ACCESS_3'] = "دسترسی برای مدیران";
+$lang['ACCESS_4'] = 'دسترسی برای مدیر کل‌ها';
+$lang['ACCESS_5'] = "بدون مجوز دسترسی";
+$lang['Support'] = "پشتیبانی";
+$lang['Documentation'] = "مستندات";
+$lang['A new version of Piwigo is available.'] = 'یک نگارش تازه از Piwigo موجود است.';
+$lang['Piwigo Administration'] = "مدیریت Piwigo";
+$lang['Piwigo version'] = 'نگارش Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'شما آخرین نگارش Piwigo را دارید.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "نسخه %s [%s] نصب شده با نسخه نصب شده سازگار نیست، نسخه مورد نیاز [%s] می‌باشد.";
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'شما برای استفاده از تمام مزیت های سیستم باید گالری خود را آپگرید کنید. در غیر این‌ صورت ممکن است که سیستم بدرستی اجرا نشود و یا اصلا اجرا نشود.';
+$lang['Deleted on'] = 'پاک شده در';
+$lang['Last hit'] = "آخرین بازدید";
+$lang['GD library is missing'] = 'کتابخانه‌ی GD یافت نشد';
+$lang['Templates'] = 'قالب ها';
+$lang['Extend for templates'] = 'گسترش قالب‌ها';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'جایگزین کردن قالب های اصلی با قالب های سفارشی شده ، به کمک پوشه ی گشترش دهندگان قالب';
+$lang['Replacers (customized templates)'] = 'جایگزینی (قالب های سفارشی شده)';
+$lang['Original templates'] = 'قالب‌های اصلی';
+$lang['Optional URL keyword'] = 'کلیدواژه‌ی URL اختیاری';
+$lang['Templates configuration has been recorded.'] = 'تنظیمات قالب ثبت شد.';
+$lang['All optimizations have been successfully completed.'] = 'همه‌ی بهینه‌سازی‌ها با موفقیت پایان یافتند.';
+$lang['Optimizations have been completed with some errors.'] = 'بهینه سازی با وجود چند خطا به پایان رسید.';
+$lang['Modify information'] = "ویرایش اطلاعات";
+$lang['nothing'] = 'هیچ چیز';
+$lang['overrides existing values with empty ones'] = 'مقدار های موجود را به مقدار های خالی تبدیل می کند';
+$lang['Manage photo ranks'] = 'مدیریت امتیاز عکس‌ها';
+$lang['Edit ranks'] = 'ویرایش مقام‌ها';
+$lang['No photo in this album'] = 'هیچ عکسی در این آلبوم موجود نیست';
+$lang['Images manual order was saved'] = 'چیدمان دستی عکس‌ها ذخیره شد';
+$lang['ranks'] = 'امتیاز ها';
+$lang['By rank'] = 'بوسیله‌ی امتیاز';
+$lang['Manual order'] = 'چیدمان دستی';
+$lang['Drag to re-order'] = 'برای چیدن دوباره با موس بکشید';
+$lang['Quick Local Synchronization'] = 'همگام سازی سریع محلی';
+$lang['No photo can be deleted'] = 'هیچ عکسی را نمی‌توان پاک کرد';
+$lang['Delete selected photos'] = 'پاک کردن عکس‌های انتخاب شده';
+$lang['%d photo was deleted'] = '%d عکس پاک شد';
+$lang['%d photos were deleted'] = '%d تا عکس پاک شدند';
+$lang['Downloads'] = 'دانلودها';
+$lang['Released on'] = 'منتشر شده در';
+$lang['Number of downloads'] = 'دانلودها';
+$lang['Piwigo Announcements Newsletter'] = 'اعلان خبرنامه ی Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'با پروژه‌ی Piwigo در تماس باشید و در خبرنامه‌ی آگهی‌های Piwigo مشترک شوید. زمانی که نگارش‌های تازه آماده شود به شما ایمیل فرستاده می‌شود (برخی مواقع شامل روش حل یک مشکل امنیتی نیز می‌شود که دانستن و رفع آن مهم است) و یا زمانی که رویدادهای بزرگی برای پروژه رخ می‌دهد. تنها تعداد کمی ایمیل در سال فرستاده خواهد شد.';
+$lang['Subscribe %s'] = "اشتراک %s";
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'اشتراک %s برای خبرنامه ی Piwigo';
+$lang['Purge search history'] = 'پاکسازی تاریخچه ی جستجو';
+$lang['Hide'] = 'پنهان کردن';
+$lang['Password is missing. Please enter the password.'] = 'گذرواژه ای نوشته نشده است. خواهشمندیم گذرواژه‌ای بنویسید.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'پذیرش گذرواژه با گذرواژه‌ی اصلی همخوانی ندارد. خواهشمندیم گذرواژه‌ی اصلی را در بخش پذیرش گذرواژه نیز بنویسید.';
+$lang['Allow users to edit their own comments'] = 'کاربران بتوانند دیدگاه‌های خود را ویرایش کنند';
+$lang['Allow users to delete their own comments'] = 'کاربران بتوانند دیدگاه‌های خود را پاک کنند';
+$lang['Email administrators when a comment is modified'] = 'فرستادن ایمیل به مدیران هنگامی که دیدگاهی ویرایش می‌شود';
+$lang['Email administrators when a comment is deleted'] = 'فرستادن ایمیل به مدیران هنگامی که دیدگاهی پاک می‌شود';
+$lang['Cannot delete the old permalink !'] = 'لینک ثابت قدیمی نمی‌تواند پاک شود.';
+$lang['Hit'] = "نمایش";
+$lang['Tools'] = 'ابزار ها';
+$lang['Photos'] = 'عکس ها';
+$lang['Themes'] = 'قالب ها';
+$lang['Instructions to use Piwigo'] = 'راهنمای بکارگیری Piwigo';
+$lang['Installed Themes'] = 'زمینه‌های نصب شده';
+$lang['Add New Theme'] = 'افزودن زمینه‌ی تازه';
+$lang['Forbid this theme to users'] = 'اجازه‌ی انتخاب این زمینه به کاربران داده نشود';
+$lang['Set as default theme for unregistered and new users'] = 'انتخاب بعنوان قالب پیشفرض برای مهمانان';
+$lang['unknown'] = 'نا معلوم';
+$lang['Upload Photos'] = 'آپلود عکس';
+$lang['Drop into album'] = 'انتخاب یک آلبوم';
+$lang['+ Add an upload box'] = '+ افزودن یک جعبه‌ی آپلود';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'مسیر "%s" را در جایی که Piwigo را نصب کرده‌اید ایجاد کنید';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'مجوز نوشتن (chmod 777) برای مسیر "%s" در جایی که Piwigo نصب شده را بدهید';
+$lang['existing album'] = 'آلبومِ موجود';
+$lang['create a new album'] = 'افزودن یک آلبوم تازه';
+$lang['Album name'] = 'نام آلبوم';
+$lang['Album "%s" has been added'] = 'آلبوم "%s" با موفقیت افزوده شد';
+$lang['Uploaded Photos'] = 'عکس های آپلود شده';
+$lang['%d photos uploaded'] = '%d تا عکس آپلود شدند';
+$lang['Privacy level set to "%s"'] = 'سطح خصوصی بر روی "%s" تنظیم شده است';
+$lang['Album "%s" now contains %d photos'] = 'آلبوم "%s" اکنون دارای %d عکس است';
+$lang['Manage this set of %d photos'] = 'مدیریت این ستِ %d عکسی';
+$lang['Select files'] = 'انتخاب فایل ها';
+$lang['Everybody'] = 'همه';
+$lang['Who can see these photos?'] = 'چه کسی قادر به مشاهده ی این عکس ها باشد؟';
+$lang['Who can see this photo?'] = 'چه کسی قادر به مشاهده ی این عکس باشد؟';
+$lang['Settings'] = 'تنظیمات';
+$lang['Resize'] = 'تغییر اندازه';
+$lang['Maximum width'] = 'بیشترین پهنا';
+$lang['pixels'] = 'پیکسل';
+$lang['Maximum height'] = 'بیشترین بلندا';
+$lang['Image Quality'] = 'کیفیت عکس';
+$lang['Thumbnail'] = 'عکس ریزه (Thumbnail)';
+$lang['Save Settings'] = 'ذخیره ی تنظیمات';
+$lang['Your configuration settings are saved'] = 'تنظیمات شما ذخیره شد';
+$lang['Active Themes'] = 'فعال کردن قالب‌ها';
+$lang['Add write access to the "%s" directory'] = 'برای نوشتن در مسیر "%s" دسترسی بدهید';
+$lang['Administration Home'] = 'صفحه‌ی مدیریت';
+$lang['Change Admin Colors'] = 'تغییر رنگ‌های صفحه‌ی مدیریت';
+$lang['Delete this theme'] = 'پاک کردن این زمینه';
+$lang['Directory does not exist'] = 'مسیر وجود ندارد';
+$lang['Download,'] = 'دانلود،';
+$lang['FTP + Synchronization'] = 'FTP + همگام‌ سازی';
+$lang['Get Support on Piwigo Forum'] = 'گرفتن پشتیبانی از انجمن Piwigo';
+$lang['Help Me'] = 'مرا راهنمایی کن';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'امکان فعال شدن این زمینه وجود ندارد، زیرا زمینه‌ی مادر آن گم شده است: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'امکان پاک کردن این زمینه وجود ندارد، زیرا زمینه‌های دیگری به این زمینه نیاز دارند: %s';
+$lang['Inactive Themes'] = 'زمینه‌های از کار انداخته شده';
+$lang['Install on your computer,'] = 'نصب بر روی کامپیوتر خود،';
+$lang['Make this theme available to users'] = 'در دسترس قرار دادن این زمینه برای کاربران';
+$lang['Page end'] = 'پایان برگه';
+$lang['Piwigo Uploader'] = 'آپلودر Piwigo';
+$lang['Please wait...'] = 'شکیبا باشید ...';
+$lang['Read Piwigo Documentation'] = 'خواندن مستندات Piwigo';
+$lang['Start pLoader and add your photos.'] = 'اکنون pLoader را باز کرده و عکس های خود را آپلود کنید.';
+$lang['Switch to clear or dark colors for administration'] = 'تعویض سپید یا سیاه کردن قالب مدیریت';
+$lang['Theme has been successfully installed'] = 'قالب با موفقیت نصب شد';
+$lang['Visit Gallery'] = 'نمایش گالری';
+$lang['Visit Piwigo project website'] = 'نمایش وبسایت پروژه ی Piwigo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'نرم افزار pLoader یک <em>آپلود کننده ی Piwigo</em> است. pLoader عکس ها را از کامپیوتر شما آماده می کند و آنها را به گالری شما می فرستد.';
+$lang['Guest Settings'] = 'تنظیمات مهمان';
+$lang['Main Page'] = 'صفحه اصلی';
+$lang['Photo Page'] = 'برگه‌ی عکس';
+$lang['Activate Navigation Bar'] = 'فعال کردن نوار هدایتگر';
+$lang['Activate Navigation Thumbnails'] = 'فعال کردن هدایتگر عکس ریزه‌ها';
+$lang['Activate icon "%s"'] = 'فعال کردن آیکن "%s"';
+$lang['Photo Properties'] = 'ویژگی‌های عکس';
+$lang['Allow user customization'] = 'فعال بودن سفارشی کردن برای کاربر';
+$lang['Languages'] = 'زبان‌ها';
+$lang['Installed Languages'] = 'زبان‌های نصب شده';
+$lang['Add New Language'] = 'افزودن زبان تازه';
+$lang['Language has been successfully installed'] = 'زبان با موفقیت نصب شد';
+$lang['Select:'] = 'انتخاب:';
+$lang['None'] = 'هیچکدام';
+$lang['Invert'] = 'معکوس کردن';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'امکان از کار انداختن این زمینه وجود ندارد، شما باید دست کم یک زمینه برای گالری خود داشته باشید.';
+$lang['Webmaster status is required.'] = 'وضعیت مدیرکل ضروری است.';
+$lang['Bound Theme'] = 'محدود کردن زمینه';
+$lang['Allow rating'] = 'فعال بودن امتیازدهی';
+$lang['Select at least one comment'] = 'حداقل یک دیدگاه را انتخاب کنید';
+$lang['Active Plugins'] = 'فعال کردن افزونه‌ها';
+$lang['Inactive Plugins'] = 'افزونه‌های از کار انداخته شده';
+$lang['Missing Plugins'] = 'افزونه‌های گم شده';
+$lang['Uninstalled Plugins'] = 'افزونه های پاک شده';
+$lang['By %s'] = 'بوسیله‌ی %s';
+$lang['Visit plugin site'] = 'نمایش سایت سازنده ی افزونه';
+$lang['Active Languages'] = 'زبان‌های فعال';
+$lang['Delete this language'] = 'پاک کردن این زبان';
+$lang['Forbid this language to users'] = 'اجازه‌ی انتخاب این زبان به کاربران داده نشود';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'امکان از کار انداختن این زبان وجود ندارد، نخست یک زبان دیگر را به عنوان پیشفرض انتخاب نمایید.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'امکان از کار انداختن این زبان وجود ندارد، شما باید دست کم یک زبان برای گالری خود داشته باشید.';
+$lang['Inactive Languages'] = 'زبان‌های از کار انداخته شده';
+$lang['Make this language available to users'] = 'در دسترس قرار دادن این زبان برای کاربران';
+$lang['Set as default language for unregistered and new users'] = 'انتخاب بعنوان زبان پیشفرض برای مهمانان';
+$lang['Add Photos'] = 'افزودن عکس';
+$lang['The following tag was deleted'] = 'برچسب پاک شد';
+$lang['Miscellaneous'] = 'گوناگون';
+$lang['Virtual Links'] = 'پیوند مجازی';
+$lang['There is no other language available.'] = 'هیچ زبان دیگری موجود نیست.';
+$lang['There is no other plugin available.'] = 'هیچ افزونه ی دیگری موجود نیست.';
+$lang['There is no other theme available.'] = 'هیچ قالب دیگری موجود نیست.';
+$lang['Add another set of photos'] = 'افزودن یک ستِ عکس تازه';
+$lang['Order of menubar items has been updated successfully.'] = 'چیدمان آیتم‌های منو با موفقیت به روز شد.';
+$lang['This theme was not designed to be directly activated'] = 'این قالب برای فعال کردن مستقیم طراحی نشده است';
+$lang['Pending Comments'] = 'دیدگاه‌های در انتظار پذیرفته شدن';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'در فایل php.ini شما،  مقدار upload_max_filesize (%sB) از post_max_size (%sB) بیشتر است، شما باید این تنظیمات را تغییر دهید.';
+$lang['Exif extension not available, admin should disable exif use'] = 'گسترش دهنده‌ی exif در دسترس نیست، مدیر کل باید exif را از کار بیندازد';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'مقدار فایل قابل آپلود که در فایل php.ini تنظیم شده با نام upload_max_filesize برابر %sB است';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'میزان فایل قابل آپلود بوسیله ی فرم که در فایل php.ini تنظیم شده با نام post_max_size برابر %sB است';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'بیشترین میزان آپلود فایل بوسیله ی فرم HTML که در یک فیلد پنهان در فرم با نام MAX_FILE_SIZE است';
+$lang['The uploaded file was only partially uploaded'] = 'فقط اندکی از فایل آپلود شد';
+$lang['No file was uploaded'] = 'هیچ فایلی آپلود نشد';
+$lang['Missing a temporary folder'] = 'یک مسیر موقت گم شده است';
+$lang['Failed to write file to disk'] = 'نمی‌توان روی دیسک فایلی نوشت';
+$lang['File upload stopped by extension'] = 'آپلود فایل بوسیله‌ی یک گسترش دهنده متوقف شد.';
+$lang['Unknown upload error'] = 'خطای نا معلوم در آپلود';
+$lang['Error on file "%s" : %s'] = 'خطا در فایل "%s": %s';
+$lang['Menu Management'] = 'منوها';
+$lang['automatic order'] = 'مرتب کردن به صورت خودکار';
+$lang['manual order'] = 'مرتب کردن دستی';
+$lang['Albums automatically sorted'] = 'آلبوم‌ها به صورت خودکار چیده شدند';
+$lang['Batch Manager'] = 'مدیریت دسته‌ای';
+$lang['include child albums'] = 'آلبوم ‌های زیرمجموع را نیز ضمیمه کن';
+$lang['Selection'] = 'انتخاب';
+$lang['Action'] = 'کار';
+$lang['Set author'] = 'تنظیم نویسنده';
+$lang['Set title'] = 'تنظیم عنوان';
+$lang['Set creation date'] = 'تنظیم تاریخ ساخت';
+$lang['Apply action'] = 'انجام کار';
+$lang['on the %d selected photos'] = 'بر روی %d تعداد عکس انتخاب شده';
+$lang['%d of %d photos selected'] = '%d عکس از %d عکس انتخاب شد';
+$lang['No photo selected, %d photos in current set'] = 'هیچ عکسی انتخاب نشده است، %d عکس در این سِت وجود دارد.';
+$lang['All %d photos are selected'] = 'همه‌ی %d عکس انتخاب شد';
+$lang['remove this filter'] = 'پاک کردن این فیلتر';
+$lang['Duplicates'] = 'دوتایی‌ها';
+$lang['Add a filter'] = 'افزودن فیلتر';
+$lang['Remove all filters'] = 'پاک کردن همه ی فیلتر ها';
+$lang['Refresh photo set'] = 'تازه کردن (Refresh) سِت عکس ها';
+$lang['The whole page'] = 'تمام صفحه';
+$lang['The whole set'] = 'تمامی عکس ها (کل سِت)';
+$lang['No photo in the current set.'] = 'هیچ عکسی در این سِت نیست.';
+$lang['No photo selected, no action possible.'] = 'هیچ عکسی انتخاب نشده است، هیچ کاری ممکن نیست.';
+$lang['Choose an action'] = 'یک کار را انتخاب کنید';
+$lang['remove author'] = 'پاک کردن نویسنده';
+$lang['Type here the author name'] = 'نام نویسنده را اینجا تایپ نمایید';
+$lang['remove title'] = 'پاک کردن عنوان';
+$lang['Type here the title'] = 'عنوان را اینجا تایپ نمایید';
+$lang['remove creation date'] = 'پاک کردن تاریخ ساخت';
+$lang['Album photos associated to the following albums: %s'] = 'عکس‌های این آلبوم به آلبوم‌های زیر پیوستند: %s';
+$lang['Delete orphan tags'] = 'پاک کردن برچسب‌های بی‌ریشه';
+$lang['delete photo'] = 'پاک کردن عکس';
+$lang['Orphan tags deleted'] = 'برچسب‌های بی‌ریشه پاک شدند';
+$lang['Remove from caddie'] = 'پاک کردن از سبد';
+$lang['Week starts on'] = 'روز آغازین هفته';
+$lang['You have %d orphan tags: %s.'] = 'شما %d برچسب بی ریشه دارید: %s.';
+$lang['Themes which need upgrade'] = 'قالب های نیازمند آپگرید';
+$lang['Languages which need upgrade'] = 'زبان‌های نیازمند آپگرید';
+$lang['All themes are up to date.'] = 'همه‌ی زمینه‌ها به روز می‌باشند.';
+$lang['All plugins are up to date.'] = 'همه‌ی افزونه‌ها به روز می‌باشند.';
+$lang['All languages are up to date.'] = 'تمام زبان‌ها به روز می‌باشند.';
+$lang['Visit theme site'] = 'نمایش سایت سازنده ی قالب';
+$lang['Visit language site'] = 'نمایش سایت سازنده ی زبان';
+$lang['New Version'] = 'نگارش تازه';
+$lang['new'] = 'تازه';
+$lang['No results'] = 'نتیجه‌ای پیدا نشد';
+$lang['Searching...'] = 'در حال جستجو ...';
+$lang['Type in a search term'] = 'عبارت مورد جستجو را اینجا تایپ نمایید';
+$lang['Obsolete Plugins'] = 'افزونه‌های از کار افتاده';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '<b>هشدار!</b> این افزونه به نظر نمی رسد با این نگارش از Piwigo سازگار باشد.';
+$lang['Do you want to activate anyway?'] = 'در هر صورت می‌خواهید فعال کنید؟';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '<b>این افزونه در حال حاضر بخشی از هسته ی PIWIGO می باشد! هرچه سریع تر آن را پاک کنید!<b/>';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = '<b>خطا: این افزونه گم شده است ولی در حالت نصب شده می‌باشد! هرچه زودتر آنرا پاک کنید.</b>';
+$lang['display'] = 'نمایش';
+$lang['Learn more'] = 'بیشتر یاد بگیرید';
+$lang['Rate'] = "امتیاز";
+$lang['Average rate'] = 'میانگین امتیاز';
+$lang['... or '] = '... یا ';
+$lang['Add a criteria'] = 'افزودن روش';
+$lang['Add tags'] = 'افزودن برچسب';
+$lang['Add to caddie'] = 'افزودن به سبد';
+$lang['All extensions are up to date.'] = 'تمام گسترش دهندگان به روز می‌باشند.';
+$lang['Create'] = 'ایجاد';
+$lang['Crop'] = 'بریدن';
+$lang['Deactivate all'] = 'از کار انداختن همه';
+$lang['ERROR'] = '<b>خطا</b>';
+$lang['Extensions Update'] = 'گسترش به روز رسانی‌ها';
+$lang['Height'] = 'بلندا';
+$lang['Ignore All'] = 'چشم پوشی از همه';
+$lang['Ignore this update'] = 'چشم پوشی از این به روز رسانی ';
+$lang['Manage Permissions'] = 'مدیریت مجوزها';
+$lang['Merge selected tags'] = 'ترکیب برچسب‌های انتخاب شده';
+$lang['Merge tags'] = 'ترکیب برچسب‌ها';
+$lang['Photo name'] = 'نام عکس';
+$lang['Piwigo Update'] = 'بروز رسانی Piwigo';
+$lang['hide details'] = 'پنهان کردن جزئیات';
+$lang['Select an album'] = 'یک آلبوم را انتخاب کنید';
+$lang['Select at least two tags for merging'] = 'حداقل دو برچسب را برای ادغام انتخاب کنید';
+$lang['Select the destination tag'] = 'انتخاب برچسب مقصد';
+$lang['Show menubar'] = 'نمایش عضو';
+$lang['Start Upload'] = 'آغاز آپلود';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'برچسب <em>%s</em> با برچسب <em>%s</em> ادغام شد';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'نگارش %s [%s] نصب شده با نگارش مورد نیاز ( [%s] ) سازگار نیست';
+$lang['Two updates are available'] = 'دو عدد بروز رسانی آماده می باشند';
+$lang['Unable to dump database.'] = 'سیستم قادر به پاکسازی پایگاه داده نیست.';
+$lang['Update All'] = 'بروز رسانی همه';
+$lang['Update in progress... Please wait.'] = 'بروز رسانی در حال انجام است... شکیبا باشید.';
+$lang['Update to Piwigo %s'] = 'بروز رسانی به نگارش %s از Piwigo';
+$lang['Updates'] = 'بروز رسانی ها';
+$lang['Width'] = 'پهنا';
+$lang['With no album'] = 'بدون آلبوم';
+$lang['With no tag'] = 'بدون برچسب';
+$lang['With no virtual album'] = 'بدون آلبوم مجازی';
+$lang['show details'] = 'نمایش جزئیات';
+$lang['%s has been successfully updated.'] = '%s به درستی به روز رسانی شد.';
+$lang['%s photos can not be regenerated'] = '%s تا عکس قابلیت دوباره تولید شدن را ندارند';
+$lang['%s photos have been regenerated'] = '%s تا عکس دوباره تولید شدند';
+$lang['(this tag will be deleted)'] = '(این برچسب پاک خواهد شد)';
+$lang['A locked gallery is only visible to administrators'] = 'گالریِ قفل شده تنها برای مدیران قابل نمایش است';
+$lang['Activate comments'] = 'فعال کردن دیدگاه‌ها';
+$lang['Allowed file types: %s.'] = 'فرمت‌های مجاز: %s.';
+$lang['An error has occured during upgrade.'] = 'یک خطا هنگام آپگرید رخ داده است.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'بالاترین رزولوشن تقریبی: %dM پیکسل، برابر %dx%d پیکسل.';
+$lang['Available on'] = 'موجود برای';
+$lang['Available versions for'] = 'نگارش‌های موجود برای';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'بطور پیشفرض، Piwigo یک وب سایز تازه از حالت HD عکس شما ایجاد می‌کند.';
+$lang['Cancel'] = 'لغو';
+$lang['Confirm merge'] = 'پذیرش ترکیب';
+$lang['Default comments order'] = 'چیدمان پیشفرض برای دیدگاه‌ها';
+$lang['Default photos order'] = 'چیدمان پیشفرض برای عکس‌ها';
+$lang['Dump Database'] = 'پاکسازی پایگاه داده';
+$lang['Follow Orientation'] = 'دنبال کردن سودار';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'افزونه‌های زیر شاید با نگارش تازه‌ی Piwigo سازگار نباشند:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'زمینه‌های زیر شاید با نگارش تازه‌ی Piwigo سازگار نباشند:';
+$lang['Gallery unlocked'] = 'گالری باز شد';
+$lang['Graphics Library'] = 'کتابخانه‌ی گرافیک';
+$lang['Groups and users'] = 'گروه‌ها و کاربران';
+$lang['I decide to update anyway'] = 'هر طور شده به روز رسانی را انجام بده';
+$lang['Last import'] = 'آخرین واردات';
+$lang['List'] = 'فهرست';
+$lang['Maximum file size: %sB.'] = 'بیشترین حجم فایل: %sB.';
+$lang['Move to album'] = 'جابجایی به آلبوم';
+$lang['No destination tag selected'] = 'هیچ برچسب مقصدی انتخاب نشده است';
+$lang['Notify administrators when a comment is'] = 'مدیران را با خبر کن وقتی یک دیدگاه';
+$lang['Opacity'] = 'وضوح';
+$lang['Original Size'] = 'اندازه‌ی اصلی';
+$lang['Photo %s of %s'] = 'عکس %s از %s';
+$lang['Photos generation in progress...'] = 'عکس ها در حال تولید می باشند...';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo نمی تواند آپگرید های مورد نیاز را از سرور دریافت کند';
+$lang['Predefined filter'] = 'فیلتر از پیش تعریف شده';
+$lang['Reset ignored updates'] = 'بازنشانی بروز رسانی های چشم پوشی شده';
+$lang['Resize after upload'] = 'تغییر اندازه بعد از آپلود';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'بازنشانی تنظیمات پیشفرض. تنظیمات افزونه های شما پاک خواهد شد!';
+$lang['Restore'] = 'بازیابی';
+$lang['Save Template Directory'] = 'ذخیره ی مسیر قالب';
+$lang['Select a file'] = 'انتخاب یک فایل';
+$lang['Select groups...'] = 'انتخاب گروه ها...';
+$lang['Select users...'] = 'انتخاب کاربران...';
+$lang['Send connection settings by email'] = 'فرستادن تنظیمات اتصال با ایمیل';
+$lang['Some themes and plugins may be not available yet.'] = 'در حال حاضر بعضی از قالب ها و افزونه ها ممکن است در دسترس نباشند.';
+$lang['Some upgrades are available for extensions.'] = 'تعدادی آپگرید برای توسعه دهنده ها (Extensions) موجود می باشد.';
+$lang['The original image quality must be a number between %d and %d'] = 'کیفیت اصلی عکس باید عددی بین %d و %d باشد';
+$lang['The original maximum height must be a number between %d and %d'] = 'بیشترین بلندای اصلی عکس باید عددی بین %d و %d باشد';
+$lang['The original maximum width must be a number between %d and %d'] = 'بیشترین پهنای اصلی عکس باید عددی بین %d و %d باشد';
+$lang['This is a minor update, with only bug corrections.'] = 'این یک بروز رسانی کوچک است که در آن چند مشکل امنیتی اصلاح شده است.';
+$lang['Thumbnails generation in progress...'] = 'در حال تولید عکس ریزه...';
+$lang['Unlock gallery'] = 'باز کردن گالری';
+$lang['Update Complete'] = 'بروز رسانی انجام شد';
+$lang['Zoom'] = 'بزرگنمایی';
+$lang['administrators'] = 'مدیرکل';
+$lang['custom'] = 'سفارشی';
+$lang['modified'] = 'ویرایش شد';
+$lang['pending validation'] = 'در انتظار پذیرش است';
+$lang['registered users'] = 'کاربران';
+$lang['simple visitors'] = 'مهمان';
+$lang['Added by %s'] = 'افزوده شده بوسیله‌ی %s';
+$lang['Original file : %s'] = 'فایل اصلی : %s';
+$lang['Posted %s on %s'] = 'فرستاده شده توسط %s در %s';
+$lang['Visited %d times'] = '%s مرتبه نمایش داده شده';
+$lang['Activate icon "new" next to albums and pictures'] = 'فعال کردن آیکن "تازه" در کنار آلبوم‌ها و عکس‌ها';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'یک خطا هنگام باز کردن فایل رخ داده است. خواهشمندیم تنظیمات دسترسی نصب خود را بررسی کنید.<br>
+برای مشاهده‌ی جزئیات خطا <a href="%s">اینجا کلیک کنید</a>.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'اگر سایز عکس HD نباشد و اگر وب سایز کنونی بزرگتر از اندازه‌ی پس از تغییر سایز عکس باشد، Piwigo عکس را بعنوان HD جابجا کرده و یک سایز کوچکتر برای آن می‌سازد.';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'داد‌ه‌ی تاریخ شامل شود (هشدار: شاید به حافظه‌ی سرور فشار بیاورد)';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'دریافت Piwigo برای iOS (iPhone, iPad, iPod Touch)';
+$lang['Save visits in history for'] = 'ذخیره کردن بازدید ها برای';
+$lang['This album contains %d photos, added between %s and %s.'] = 'این آلبوم شامل %d عکس می باشد که بین %s و %s اضافه شده اند.';
+$lang['This album contains %d photos, added on %s.'] = 'این آلبوم شامل %d عکس می باشد که در %s اضافه شده اند.';
+$lang['This album contains no photo.'] = 'هیچ عکسی در این آلبوم وجود ندارد.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'این یک بروز رسانی مهم است و دارای <a href="%s">ویژگی های جالب و تازه</a> می باشد.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'در حال حاضر شما از آپلود کننده ی مرورگر خود استفاده می کنید. می توانید <a href="%s">آپلود کننده ی فلش</a> را برای سرعت بیشتر امتحان کنید.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'در حال حاضر شما از آپلود کننده ی فلش استفاده می کنید. اگر مشکلی دارید، می توانید از <a href="%s">آپلود کننده ی مرورگر</a> خود استفاده کنید.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'شما میتوانید مستقیم نگارش خود را به %s تغییر دهید، بدون آنکه %s را نصب کنید. (این روش پیشنهاد می شود)';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'شما می توانید ترتیب چیده شدن عکس های خود را به پیشفرض تغییر بدهید، در حال حاضر شما از تنظیمات سفارشی استفاده می کنید.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'شما <i>$conf[\'order_by\']</i> را برای تنظیمات محلی (Local) خود تعیین کرده اید و این پارامتر در حال حاضر به مشکل برخورده است. خواهشمند است آن را پاک کرده یا نام آنرا به <i>$conf[\'order_by_custom\']</i> تغییر دهید !';
+$lang['%d day'] = '%d روز';
+$lang['%d days'] = '%d روز';
+$lang['%d hour'] = '%d ساعت';
+$lang['%d hours'] = '%d ساعت';
+$lang['%d minute'] = '%d دقیقه';
+$lang['%d minutes'] = '%d دقیقه';
+$lang['%d month'] = '%d ماه';
+$lang['%d months'] = '%d ماه';
+$lang['%d second'] = '%d ثانیه';
+$lang['%d seconds'] = '%d ثانیه';
+$lang['%d week'] = '%d هفته';
+$lang['%d weeks'] = '%d هفته';
+$lang['%d year'] = '%d سال';
+$lang['%d years'] = '%d سال';
+$lang['%s ago'] = '%d پیش';
+$lang['%s in the future'] = '%s آینده';
+$lang['Applications'] = 'برنامه‌های کاربردی';
+$lang['Apply watermark if height is bigger than'] = 'استفاده از چاپ سپید تنها زمانی که بلندا بیشتر باشد از';
+$lang['Apply watermark if width is bigger than'] = 'استفاده از چاپ سپید تنها زمانی که پهنا بیشتر باشد از';
+$lang['Automatic sort order'] = 'چیدمان خودکار';
+$lang['Edit photo'] = 'ویرایش عکس';
+$lang['Multiple Size'] = 'چند سایزه';
+$lang['Not cropped correctly?'] = 'درست بریده نشد؟';
+$lang['Numeric identifier : %d'] = 'شناسه‌ی عددی: %d';
+$lang['Permission management'] = 'مدیریت دسترسی‌ها';
+$lang['Piwigo for Android'] = 'دریافت Piwigo برای Android';
+$lang['Rated %d times, score : %.2f'] = 'به تعداد %d بار رأی داده شده، امتیاز : %.2f';
+$lang['Save manual order'] = 'ذخیره ی ترتیب دستی';
+$lang['Sharpen'] = 'حالت تیز (Sharpen)';
+$lang['Watermark'] = 'چاپ سپید (Watermark)';
+$lang['Web Form'] = 'حالت ویژه ی وب';
+$lang['X Position'] = 'مکان در محور X';
+$lang['X Repeat'] = 'تعداد تکرار  در محور X';
+$lang['Y Position'] = 'مکان در محور Y';
+$lang['You can activate only one mobile theme.'] = 'شما فقط می توانید یک قالب برای موبایل فعال کنید.';
+$lang['add a new watermark'] = 'اضافه کردن یک چاپ سپید تازه';
+$lang['apply automatic sort order'] = 'استفاده از ترتیب خودکار';
+$lang['bottom left corner'] = 'گوشه ی پایین سمت چپ';
+$lang['bottom right corner'] = 'گوشه ی پایین سمت راست';
+$lang['cancel manual order'] = 'لغو تغییرات ترتیب دستی';
+$lang['middle'] = 'وسط';
+$lang['top left corner'] = 'گوشه ی بالا سمت چپ';
+$lang['top right corner'] = 'گوشه ی بالا سمت راست';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'نرم‌افزار <em>Piwigo برای Android</em> به شما قدرت وصل شدن به گالری، ساخت آلبوم و آپلود عکس به کمک موبایل یا تبلت آندرویدتان را می‌دهد.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'نرم‌افزار <em>Piwigo برای iOS</em> به شما قدرت وصل شدن به گالری، ساخت آلبوم و آپلود عکس به کمک iPhone، iPad یا iPod Touch ـتان را می‌دهد.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom یک نرم‌افزار عکاسی می‌باشد که برای مدیریت عکس‌های دیجیتالی بزرگ طراحی شده است.';
+$lang['Center of interest'] = 'نقطه‌ی طلایی (Center of Interest)';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'نرم افزار Shotwell را بر روی لینوکس خود نصب کرده و افزونه‌ی انتشار Piwigo را فعال کنید.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'افزونه ی انتشار Piwigo برای Photoshop Lightroom';
+$lang['Piwigo export plugin for Aperture'] = 'افزونه ی فرستنده ی Piwigo برای Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'افزونه ی فرستنده ی Piwigo برای iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'افزونه ی انتشار Piwigo برای Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'افزونه ی انتشار Piwigo برای digiKam';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell یک نرم افزار متن باز (Open Source) برای سازمان دهی عکس های دیجیتالی می باشد که بر روی سیستم عامل لینوکس قابل اجرا است. همچنین نرم افزار پیشفرض برای مدیریت عکس ها در Ubuntu و Fedora نیر می باشد.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'افزونه ی انتشار Piwigo به شما این امکان را می دهد تا عکس های خود را از Photoshop Lightroom بطور مستقیم همگام سازی کرده و وارد گالری Piwigo خود کنید.';
+$lang['There is no group in this gallery.'] = 'هیچ گروهی در این گالری وجود ندارد.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u تا کاربر دسترسی خودکار پیدا کردند زیرا وابسته به گروهی که دسترسی دارد هستند.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture یک ابزار نیرومند برای بازسازی عکس‌ها و مدیریت کتابخانه‌های فشرده در سیستم عامل Mac می‌باشد.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture برای عکاس‌های حرفه‌ای که از iPhoto استفاده می‌کنند طراحی شده است.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'نقطه‌ی طلایی بطور پیشفرض، در وسط عکس قرار می‌گیرد.';
+$lang['Delete multiple size images'] = 'پاک کردن عکس‌های چند سایزه';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'ویژگی‌هایی ازجمله باز کردن گالری، ساخت آلبوم و آپلود عکس.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'برای عکس‌هایی که بریده شده‌اند، برای نمونه "مربعی"، Piwigo به بهترین حالت ممکن نقطه‌ی طلایی عکس را شناسایی می‌کند.';
+$lang['Generate multiple size images'] = 'درست کردن عکس‌های چند سایزه';
+$lang['No group is permitted to see this private album'] = 'هیچ گروهی اجازه‌ی دیدن این آلبوم خصوصی را ندارد';
+$lang['Permission granted for groups'] = 'اجازه‌ی دسترسی به گروه‌ها داده شد';
+$lang['Permission granted for users'] = 'اجازه‌ی دسترسی به کاربران داده شد';
+$lang['Photo sizes with crop'] = 'سایز عکس برش داده شده';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (سیستم مدیریت گالری از راه دور برای Android) یک سیستم متن باز (Open Source) برای Piwigo می باشد (GPL v3) که بر روی Android قابل اجراست.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'برای انتخاب یک نقطه ی طلایی (Center of Interest) تازه، با موس خود روی منطقه ی دلخواهی از عکس کلیک کنید.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'افزونه ی فرستنده ی Piwigo به شما اجازه ی ساخت آلبوم و فرستادن عکس بر روی گالری را می دهد.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'نقطه ی طلایی (Center of Interest) مهم ترین محدوده ی عکس می باشد.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'برای فرستادن عکس های خود از digiKam به Piwigo، کافیست نرم افزار digiKam و افزونه های Kipi را نصب کنید.';
+$lang['any visitor can see this album'] = 'هر بازدید کننده ای می تواند این آلبوم را ببیند';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam یک نرم افزار رایگان پیشرفته برای مدیریت عکس های دیجیتالی بر روی سیستم عامل های لینوکس، ویندوز و MacOSX می باشد.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam برای عکاس هایی که می خواهند عکس ها را مشاهده، مدیریت، ویرایش و سازمان دهی کنند یا به آنها برچسب بزنند و آنها را به اشتراک بگذارند طراحی شده است.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto نرم افزار مدیریت عکس پیشفرض در سیستم عامل MacOSX می باشد. افزونه ی فرستنده ی Piwigo به شما اجازه ی ساخت آلبوم های تازه و فرستادن عکس ها از iPhone به Piwigo بطور مستقیم را می دهد.';
+$lang['include photos with lower privacy level'] = 'شامل عکس هایی که سطح خصوصی پایینی دارند نیز بشود';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'بازدید کننده ها باید وارد شوند و دسترسی مناسب را داشته باشند تا این آلبوم را ببینند';
+$lang[' and %d virtuals'] = ' و %d مجازی';
+$lang['%d physicals'] = ' %d فیزیکی';
+$lang['create a new site'] = 'ایجاد یک سایت تازه';
+$lang['No order field selected'] = 'هیچ فیلدی برای چیدمان انتخاب نشده است';
+$lang['Duplicate selected tags'] = 'دوتایی کردن برچسب‌های انتخاب شده';
+$lang['Name of the duplicate'] = 'نام پس از دوتایی شدن';
+$lang['Source tag'] = 'برچسب اصلی';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'برچسب "%s" از روی برچسب "%s" دوتایی شد';
+$lang['Landscape'] = 'چشم انداز';
+$lang['Manage photos'] = 'مدیریت عکس‌ها';
+$lang['Minimum height'] = 'کمترین بلندا';
+$lang['Minimum width'] = 'کمترین پهنا';
+$lang['Number of albums per page'] = 'شمار آلبوم‌ها در هر برگه';
+$lang['Panorama'] = 'پانوراما';
+$lang['Portrait'] = 'پرتره';
+$lang['View in gallery'] = 'نمایش در گالری';
+$lang['Duplicate'] = 'دوتایی کردن';
+$lang['Manage the members'] = 'مدیریت کاربران';
+$lang['Merge selected groups'] = 'ترکیب گروه‌های انتخاب شده';
+$lang['No group selected, no action possible.'] = 'گروهی انتخاب نشده است، هیچ کاری انجام نخواهد شد.';
+$lang['No members to manage'] = 'کاربری برای ترکیب وجود ندارد';
+$lang['Please select at least two groups'] = 'دست کم باید دو گروه را انتخاب کنید';
+$lang['Ratio'] = 'نسبت';
+$lang['Rename'] = 'تغییر نام';
+$lang['This group will be set to default'] = 'این گروه در حالت پیشفرض استفاده خواهد شد';
+$lang['This group will be unset to default'] = 'این گروه دیگر در حالت پیشفرض استفاده نخواهد شد';
+$lang['Type here the name of the new group'] = 'نام گروه تازه را اینجا بنویسید';
+$lang['between %.2f and %.2f'] = 'میان %.2f و %.2f';
+$lang['between %d and %d pixels'] = 'میان %d و %d پیکسل';
+$lang['Purge user cache'] = 'پاک کردن مخزن کاربر (کش)';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'اندازه‌ی این عکس به %dx%d پیکسل کاهش خواهد یافت.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'بدلیل استفاده از کتابخانه‌ی گرافیکیِ GD، امکان ویرایش سایز عکس پس از آپلود وجود ندارد.';
+$lang['Select at least one tag'] = 'دست کم باید یک برچسب انتخاب کنید';
+$lang['Basic settings'] = 'تنظیماتِ پایه';
+$lang['General'] = 'همگانی';
+$lang['Mail theme'] = 'زمینه‌ی ایمیل';
+?>
Index: /tags/2.6.0RC1/language/fa_IR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/common.lang.php	(revision 25596)
@@ -0,0 +1,427 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: پارسی [IR]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=419
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "پارسی";
+$lang_info['country'] = "ایران";
+$lang_info['direction'] = "rtl";
+$lang_info['code'] = "fa";
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d کیلوبایت';
+$lang['%d album updated'] = "%d آلبوم بروزرسانی شد";
+$lang['%d albums updated'] = '%d آلبوم ها بروزرسانی شدند';
+$lang['%d comment to validate'] = '%d دیدگاه در انتظار پذیرش است.';
+$lang['%d comments to validate'] = '%d دیدگاه در انتظار پذیرش هستند.';
+$lang['%d new comment'] = "%d دیدگاه تازه";
+$lang['%d new comments'] = "%d دیدگاه تازه";
+$lang['%d comment'] = "%d دیدگاه";
+$lang['%d comments'] = "%d دیدگاه";
+$lang['%d hit'] = "%d بازدید";
+$lang['%d hits'] = "%d بازدید";
+$lang['%d new photo'] = "%d عکس تازه";
+$lang['%d new photos'] = "%d عکس تازه";
+$lang['%d new user'] = "%d کاربر تازه";
+$lang['%d new users'] = "%d کاربر تازه";
+$lang['About'] = "درباره";
+$lang['All tags'] = 'همه ی برچسب ها';
+$lang['Any tag'] = "هر برچسبی";
+$lang['At least one listed rule must be satisfied.'] = 'دست کم یکی از معیارهای بیان شده باید هم خوانی داشته باشد.';
+$lang['Author'] = "نویسنده";
+$lang['Albums'] = "آلبوم ها";
+$lang['Album'] = "آلبوم";
+$lang['Close this window'] = "بستن این پنجره";
+$lang['Complete RSS feed (photos, comments)'] = 'خوراک RSS کامل (عکس ها و دیدگاه ها)';
+$lang['Confirm Password'] = 'پذیرش گذرواژه';
+$lang['Connection settings'] = "تنظیمات اتصال";
+$lang['Login'] = "ورود";
+$lang['Contact webmaster'] = 'تماس با مدیرکل';
+$lang['Create a new account'] = "ایجاد حساب تازه";
+$lang['Created on'] = "ایجاد شده در";
+$lang['Creation date'] = "تاریخ ایجاد";
+$lang['Current password is wrong'] = "گذرواژه وارد شده اشتباه است.";
+$lang['Dimensions'] = "ابعاد";
+$lang['Display'] = "نمایش";
+$lang['Each listed rule must be satisfied.'] = 'همه ی معیارهای بیان شده باید کامل شوند.';
+$lang['Email address'] = "آدرس های ایمیل";
+$lang['Enter your personnal informations'] = "داده های خصوصی خود را وارد نمایید";
+$lang['Error sending email'] = "خطا در فرستادن ایمیل";
+$lang['File name'] = "نام فایل";
+$lang['File'] = "فایل";
+$lang['Filesize'] = "اندازه ی فایل";
+$lang['Filter and display'] = "فیلتر کن و نمایش بده";
+$lang['Filter'] = "فیلتر";
+$lang['Forgot your password?'] = 'گذرواژه خود را فراموش کرده اید ؟';
+$lang['Go through the gallery as a visitor'] = "بازدید از گالری به عنوان مهمان";
+$lang['Help'] = "کمک";
+$lang['Identification'] = "شناسایی";
+$lang['Photos only RSS feed'] = 'خوراک RSS عکس ها';
+$lang['Keyword'] = 'کلیدواژه';
+$lang['Links'] = "لینک ها";
+$lang['N/A'] = "N/A";
+$lang['New on %s'] = "تازه در %s";
+$lang['Notification'] = "خبرنامه";
+$lang['Number of items'] = "تعداد آیتم ها";
+$lang['Original dimensions'] = "ابعاد اصلی";
+$lang['Password forgotten'] = "گذرواژه فراموش شده";
+$lang['Password'] = "گذرواژه";
+$lang['Post date'] = 'تاریخ فرستاده شدن';
+$lang['Posted on'] = "فرستاده شده در";
+$lang['Profile'] = "پروفایل";
+$lang['Quick connect'] = "اتصال سریع";
+$lang['RSS feed'] = 'خوراک RSS';
+$lang['Register'] = "نام نویسی";
+$lang['Registration'] = "نام نویسی";
+$lang['Related tags'] = "برچسب های مربوط";
+$lang['Reset'] = 'بازنشانی';
+$lang['Retrieve password'] = "بازیابی گذرواژه";
+$lang['Search rules'] = "قوانین جستجو";
+$lang['Search tags'] = "جستجوی برچسب ها";
+$lang['Search'] = "جستجو";
+$lang['display available tags'] = "نمایش برچسب های موجود";
+$lang['Since'] = "از";
+$lang['Sort by'] = 'مرتب سازی بر اساس';
+$lang['Sort order'] = "مرتب سازی بر اساس";
+$lang['Tag'] = "برچسب";
+$lang['Tags'] = "برچسب ها";
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'سرویس دهنده RSS، تازه های سایت از جمله: عکس‌های جدید، آلبوم های بروزشده ‌و دیدگاه های تازه را به کمک یک RSS خوان اطلاع رسانی می کند.';
+$lang['Unknown feed identifier'] = 'RSS خوان شناسایی نشد';
+$lang['User comments'] = 'دیدگاه های کاربر';
+$lang['Username'] = "نام کاربری";
+$lang['Visits'] = "بازدید ها";
+$lang['Webmaster'] = 'مدیرکل';
+$lang['Week %d'] = 'هفته ی %d';
+$lang['About Piwigo'] = "درباره ی Piwigo";
+$lang['You are not authorized to access the requested page'] = 'شما مجاز به مشاهده این صفحه نیستید';
+$lang['add this photo to your favorites'] = "افزودن این عکس به علاقه مندی های من";
+$lang['Administration'] = "مدیریت";
+$lang['all'] = "همه";
+$lang['ascending'] = "بالا رونده";
+$lang['author(s) : %s'] = "نویسنده(ها) : %s";
+$lang['Expand all albums'] = "بازکردن تمام آلبوم ها";
+$lang['posted after %s (%s)'] = 'فرستاده شده بعد از %s (%s)';
+$lang['posted before %s (%s)'] = 'فرستاده شده قبل از %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'فرستاده شده بین %s (%s) و %s (%s)';
+$lang['posted on %s'] = "فرستاده شده در %s";
+$lang['Best rated'] = "بهترین امتیاز داده شده";
+$lang['display best rated photos'] = 'نمایش عکس هایی که بیشترین امتیاز را داشته اند';
+$lang['Calendar'] = "تقویم";
+$lang['All'] = "همه";
+$lang['display each day with photos, month per month'] = 'نمایش هر روز با عکس های تازه، ماه به ماه';
+$lang['View'] = "نمایش";
+$lang['chronology_monthly_calendar'] = "تقویم ماهانه";
+$lang['chronology_monthly_list'] = "لیست ماهانه";
+$lang['chronology_weekly_list'] = "لیست هفتگی";
+$lang['Click here if your browser does not automatically forward you'] = 'اگر مرورگر شما به صورت اتوماتیک هدایت نشد، اینجا کلیک کنید.';
+$lang['comment date'] = "تاریخ دیدگاه";
+$lang['Comment'] = "دیدگاه";
+$lang['Your comment has been registered'] = "دیدگاه شما در سیستم ثبت شد";
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = "سیستم ضد هرزنامه: خواهشمندم قبل از فرستادن دوباره ی دیدگاه چند لحظه شکیبا باشید";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'دیدگاه شما در سیستم ثبت نشد زیرا با قوانین پذیرش سازگار نیست';
+$lang['An administrator must authorize your comment before it is visible.'] = 'یک مدیر باید دیدگاه شما را بپذیرد تا قابل نمایش شود.';
+$lang['This login is already used by another user'] = "این نام کاربری برای کاربر دیگری ثبت شده است";
+$lang['Comments'] = "دیدگاه ها";
+$lang['Add a comment'] = "دیدگاهی بگذارید";
+$lang['created after %s (%s)'] = "ایجاد شده بعد از %s (%s)";
+$lang['created before %s (%s)'] = "ایجاد شده قبل از %s (%s)";
+$lang['created between %s (%s) and %s (%s)'] = "ایجاد شده بین %s (%s) و %s (%s)";
+$lang['created on %s'] = "ایجاد شده در %s";
+$lang['Customize'] = "سفارشی کردن";
+$lang['Your Gallery Customization'] = "سفارشی کردن گالری";
+$lang['day'][0] = "یک‌شنبه";
+$lang['day'][1] = "دوشنبه";
+$lang['day'][2] = "سه‌شنبه";
+$lang['day'][3] = "چهارشنبه";
+$lang['day'][4] = "پنج‌شنبه";
+$lang['day'][5] = "جمعه";
+$lang['day'][6] = "شنبه";
+$lang['Default'] = "پیشفرض";
+$lang['delete this photo from your favorites'] = 'پاک کردن این عکس از علاقه مندی های شما';
+$lang['Delete'] = "پاک کردن";
+$lang['descending'] = "پایین رونده";
+$lang['edit'] = "ویرایش";
+$lang['wrong date'] = "تاریخ اشتباه است";
+$lang['excluded'] = "محروم";
+$lang['Your favorites'] = 'علاقه مندی های شما';
+$lang['display your favorites photos'] = "نمایش عکس های مورد علاقه‌ شما";
+$lang['Favorites'] = 'علاقه مندی ها';
+$lang['First'] = "نخستین";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'این گالری برای بروز رسانی قفل شده‌ است؛ زمان دیگری بازدید کنید.';
+$lang['Page generated in'] = "صفحه ایجاد شده در";
+$lang['guest'] = 'مهمان';
+$lang['Hello'] = "درود";
+$lang['available for administrators only'] = 'فقط در دسترس مدیران';
+$lang['display this album'] = 'نمایش این آلبوم';
+$lang['display last user comments'] = 'نمایش آخرین دیدگاه های کاربر';
+$lang['customize the appareance of the gallery'] = "سفارشی کردن نمایش گالری";
+$lang['search'] = "جستجو";
+$lang['Home'] = 'صفحه اصلی';
+$lang['in this album'] = "در این آلبوم";
+$lang['in %d sub-album'] = "در %d زیرآلبوم";
+$lang['in %d sub-albums'] = "در %d زیرآلبوم ";
+$lang['included'] = 'شامل می شود';
+$lang['Invalid password!'] = 'گذرواژه نامعتبر است!';
+$lang['Language'] = "زبان";
+$lang['last %d days'] = "%d روز گذشته";
+$lang['Last'] = "آخرین";
+$lang['Logout'] = "بیرون رفتن";
+$lang['obligatory'] = "اجباری";
+$lang['display a calendar by creation date'] = "نمایش یک تقویم بر اساس تاریخ ایجاد";
+$lang['display all photos in all sub-albums'] = 'نمایش همه ی عکس ها در همه ی زیرآلبوم ها';
+$lang['return to normal view mode'] = "بازگشت به حالت عادی";
+$lang['display a calendar by posted date'] = "نمایش یک تقویم براساس تاریخ فرستاده شدن";
+$lang['month'][10] = "اکتبر";
+$lang['month'][11] = "نوامبر";
+$lang['month'][12] = "دسامبر";
+$lang['month'][1] = "ژانویه";
+$lang['month'][2] = "فبریه";
+$lang['month'][3] = "مارس";
+$lang['month'][4] = "آوریل";
+$lang['month'][5] = "مِی";
+$lang['month'][6] = "ژوئن";
+$lang['month'][7] = "جولای";
+$lang['month'][8] = "آگوست";
+$lang['month'][9] = "سپتامبر";
+$lang['Most visited'] = 'بیشترین بازدید شده';
+$lang['display most visited photos'] = 'نمایش عکس هایی که بیشترین بازدید را داشته اند';
+$lang['Unknown identifier'] = "ناشناخته";
+$lang['New password'] = "گذرواژه تازه";
+$lang['Rate this photo'] = "امتیاز دادن به این عکس";
+$lang['Next'] = "بعدی";
+$lang['no rate'] = "بدون امتیاز";
+$lang['Photos posted within the last %d day.'] = 'فقط عکس هایی که در %d روز قبل فرستاده شده.';
+$lang['Photos posted within the last %d days.'] = 'فقط عکس هایی که در %d روز قبل فرستاده شده اند.';
+$lang['password updated'] = "گذرواژه بروزرسانی شد";
+$lang['Recent period must be a positive integer value'] = "Recent period must be a positive integer value";
+$lang['photo'] = "عکس";
+$lang['Click on the photo to see it in high definition'] = "برای مشاهده هر عکس در اندازه ی اصلی روی آن کلیک کنید.";
+$lang['Show file metadata'] = 'نمایش فایل ابرداده (Metadata)';
+$lang['Powered by'] = "قدرت گرفته از";
+$lang['Preferences'] = "تنظیمات";
+$lang['Previous'] = "قبلی";
+$lang['Random photos'] = 'عکس های تصادفی';
+$lang['display a set of random photos'] = "نمایش تعدادی عکس تصادفی";
+$lang['Recent albums'] = "آلبوم های تازه";
+$lang['display recently updated albums'] = "نمایش آلبوم های تازه بروز رسانی شده";
+$lang['Recent period'] = "Recent period";
+$lang['Recent photos'] = "عکس های تازه";
+$lang['display most recent photos'] = 'نمایش تازه ترین عکس ها';
+$lang['Redirection...'] = "در حال هدایت ...";
+$lang['Please, enter a login'] = 'یک نام کاربری وارد کنید.';
+$lang['login mustn\'t end with a space character'] = 'اطلاعات ورود نباید دارای فاصله در آخرشان باشند';
+$lang['login mustn\'t start with a space character'] = 'اطلاعات ورود نباید با فاصله آغاز شوند';
+$lang['this login is already used'] = "این اطلاعات ورود از قبل وجود دارد";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'آدرس ایمیل باید چیزی شبیه به xxx@yyy.eee باشد. (مانند: jack@altern.org)';
+$lang['Auto login'] = "ورود اتوماتیک";
+$lang['remove this tag from the list'] = "پاک کردن این برچسب از لیست";
+$lang['representative'] = 'عکس بندانگشتی آلبوم';
+$lang['Search for Author'] = 'جستجوی نویسنده';
+$lang['Search in albums'] = "جستجو در آلبوم ها";
+$lang['Date'] = "تاریخ";
+$lang['End-Date'] = "تاریخ پایان";
+$lang['Kind of date'] = 'نوع تاریخ';
+$lang['Search for words'] = 'جستجوی واژه ها';
+$lang['Search for all terms'] = 'جستجوی همه ی واژه ها';
+$lang['Empty query. No criteria has been entered.'] = 'شما هیچ معیاری برای جستجو تأیین نکرده اید.';
+$lang['Search results'] = "نتایج جستجو";
+$lang['Search in sub-albums'] = "جستجو در زیرآلبوم ها";
+$lang['searched words : %s'] = 'واژه های جستجو شده: %s';
+$lang['Contact'] = "تماس";
+$lang['set as album representative'] = 'تنظیم بعنوان عکس بندانگشتی آلبوم';
+$lang['Show number of comments'] = "نمایش تعداد دیدگاه ها";
+$lang['Show number of hits'] = "نمایش تعداد بازدید ها";
+$lang['slideshow'] = "نمایش به صورت اسلاید";
+$lang['stop the slideshow'] = "توقف اسلاید";
+$lang['Specials'] = "پنل ویژه";
+$lang['SQL queries in'] = 'معیار های SQL در';
+$lang['display only recently posted photos'] = "فقط آخرین عکس های فرستاده شده را نمایش بده";
+$lang['return to the display of all photos'] = "بازگشت به نمایش همه ی عکس ها";
+$lang['the beginning'] = "آغاز";
+$lang['Thumbnails'] = 'عکس بندانگشتی';
+$lang['Menu'] = "منو";
+$lang['A comment on your site'] = "یادداشتی روی سایت شما";
+$lang['today'] = "امروز";
+$lang['Update your rating'] = "بروزرسانی امتیاز";
+$lang['the username must be given'] = "نام کاربری ضروری است";
+$lang['useful when password forgotten'] = "قابل استفاده برای زمانی که گذرواژه فراموش می شود";
+$lang['Quick search'] = "جستجوی سریع";
+$lang['Connected user: %s'] = 'کاربر متصل شده : %s';
+$lang['IP: %s'] = "آی پی: %s";
+$lang['Browser: %s'] = "مرورگر: %s";
+$lang['Author: %s'] = "نویسنده: %s";
+$lang['Comment: %s'] = "دیدگاه: %s";
+$lang['Comment by %s'] = "دیدگاهی از %s";
+$lang['User: %s'] = 'کاربر: %s';
+$lang['Email: %s'] = "ایمیل: %s";
+$lang['Admin: %s'] = "مدیرکل: %s";
+$lang['Registration of %s'] = "نام نویسیِ %s";
+$lang['Album: %s'] = 'آلبوم: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'وضعیت بد برای کاربر "مهمان"، وضعیت پیشفرض استفاده خواهد شد . خواهشمند است این موضوع را با مدیر‌کل در میان بگذارید.';
+$lang['this email address is already in use'] = 'یک کاربر دیگر این آدرس ایمیل را در سیستم ثبت کرده است';
+$lang['Album results for'] = "نتایج آلبوم برای";
+$lang['Tag results for'] = "نتایج برچسب برای";
+$lang['from %s to %s'] = "از %s تا %s";
+$lang['Play of slideshow'] = 'آغاز نمایش اسلاید';
+$lang['Pause of slideshow'] = 'توقف اسلاید';
+$lang['Repeat the slideshow'] = 'بازپخش اسلاید';
+$lang['Not repeat the slideshow'] = "اسلاید را بازپخش نکن";
+$lang['Reduce diaporama speed'] = "کاهش سرعت اسلاید";
+$lang['Accelerate diaporama speed'] = "افزایش سرعت اسلاید";
+$lang['Submit'] = "ثبت";
+$lang['Yes'] = "بله";
+$lang['No'] = "خیر";
+$lang['%d photo'] = "%d عکس";
+$lang['%d photos'] = "%d عکس";
+$lang['%d photo is also linked to current tags'] = "%d عکس هم به این برچسب مربوط است.";
+$lang['%d photos are also linked to current tags'] = '%d عکس هم به این برچسب مربوط هستند.';
+$lang['display photos linked to this tag'] = "نمایش عکس هایی که مربوط به این برچسب هستند";
+$lang['photos posted during the last %d days'] = 'عکس هایی که در %d روز گذشته فرستاده شده اند';
+$lang['Piwigo Help'] = "راهنمای Piwigo";
+$lang['Rank'] = "مقام";
+$lang['group by letters'] = "گروه بندی براساس حرف";
+$lang['letters'] = "حروف";
+$lang['show tag cloud'] = 'نمایش ابر برچسب ها (Tags cloud)';
+$lang['cloud'] = "ابر (Cloud)";
+$lang['Reset to default values'] = "بازگرداندن به مقدارهای پیشفرض";
+$lang['delete all photos from your favorites'] = "پاک کردن همه ی عکس ها از علاقه مندی های شما";
+$lang['Sent by'] = "فرستاده شده به وسیله";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "شما در تنظیمات مرورگر خود کوکی ها را مسدود کرده اید و یا مرورگر شما از کوکی پشتیبانی نمی‌کند. برای ورود به محیط کاربری باید کوکی‌ها فعال باشند.";
+$lang['Edit a comment'] = "ویرایش یک دیدگاه";
+$lang['Are you sure?'] = "مطمئن هستید ؟";
+$lang['(!) This comment requires validation'] = '(!) این دیدگاه نیاز به پذیرفته شدن دارد';
+$lang['Welcome'] = 'خوش آمدید';
+$lang['Welcome to your Piwigo photo gallery!'] = 'به گالری عکس Piwigo خود خوش آمدید!';
+$lang['... or browse your empty gallery'] = '... یا گالری خالی خود را مشاهده کنید';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... یا لطفاً این پیام را غیرفعال نمایید، من راهم را پیدا خواهم کرد';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'درود %s، گالری عکس شما خالی است!';
+$lang['I want to add photos'] = 'می‌خواهم عکس تازه اضافه کنم';
+$lang['Manage this user comment: %s'] = 'مدیریت دیدگاه های %s';
+$lang['Email address is missing. Please specify an email address.'] = "کاربر آدرس ایمیل ندارد. خواهشمند است یک آدرس ایمیل مشخص کنید.";
+$lang['This author modified following comment:'] = 'این نویسنده دیدگاه زیر را تغییر داده است:';
+$lang['This author removed the comment with id %d'] = 'این نویسنده، دیدگاهی با شناسه ی %d را پاک کرده است';
+$lang['html tags are not allowed in login'] = 'شما در فرم ورود مجاز به استفاده از كدهای HTML نیستید';
+$lang['%d rates'] = '%d امتیاز';
+$lang['Change my password'] = 'ویرایش گذرواژه';
+$lang['Check your email for the confirmation link'] = 'برای مشاهده ی لینک پذیرش ایمیل خود را چک کنید';
+$lang['Download this file'] = 'دانلود این فایل';
+$lang['Download'] = 'دانلود';
+$lang['Edit'] = 'ویرایش';
+$lang['Enter your new password below.'] = 'گذرواژه ی تازه ی خود را در زیر وارد کنید.';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'اگر اشتباهی رخ داده است، این ایمیل را نادیده بگیرید و به آن پاسخ ندهید.';
+$lang['Invalid key'] = 'کلید اشتباه است';
+$lang['Invalid username or email'] = 'نام کاربری یا ایمیل نامعتبر است';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Number of photos per page'] = 'تعداد عکس ها در هر صفحه';
+$lang['Password reset is not allowed for this user'] = 'بازنشانی گذرواژه برای این کاربر ممکن نیست';
+$lang['Password Reset'] = 'بازنشانی گذرواژه';
+$lang['Please enter your username or email address.'] = 'نام کاربری یا ایمیل خود را وارد کنید.';
+$lang['Rating score'] = 'مقدار امتیاز';
+$lang['Return to home page'] = 'بازگشت به صفحه اصلی';
+$lang['Search by date'] = "جستجو با تاریخ";
+$lang['Search for any term'] = 'جستجوی هر واژه ای';
+$lang['Someone requested that the password be reset for the following user account:'] = 'یک نفر برای این حساب کاربری درخواست بازنشانی گذرواژه کرده است:';
+$lang['The number of photos per page must be a not null scalar'] = 'تعداد عکس ها در هر صفحه باید یک عدد صحیح بجز 0 باشد';
+$lang['The passwords do not match'] = 'گذرواژه ها یکسان نمی باشند';
+$lang['To reset your password, visit the following address:'] = 'برای بازنشانی گذرواژتان، به آدرس زیر بروید:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'حساب کاربری "%s" دارای ایمیل نمی باشد، بازنشانی گذرواژه امکان پذیر نیست';
+$lang['Username "%s" on gallery %s'] = 'نام کاربری "%s" در گالری %s';
+$lang['Username or email'] = 'نام کاربری یا ایمیل';
+$lang['You will receive a link to create a new password via email.'] = 'بزودی یک لینک برای ایجاد گذرواژه ی تازه در ایمیلتان دریافت خواهید کرد.';
+$lang['Your password has been reset'] = 'گذرواژه ی شما با موفقیت بازنشانی شد';
+
+$lang['Hello %s,'] = 'درود %s،';
+$lang['2small'] = 'XXS - ریز';
+$lang['Date created, new &rarr; old'] = 'تاریخ ایجاد، تازه &rarr; قدیمی';
+$lang['Date created, old &rarr; new'] = 'تاریخ ایجاد، قدیمی &rarr; تازه';
+$lang['Date posted, new &rarr; old'] = 'تاریخ انتشار، تازه &rarr; قدیمی';
+$lang['Date posted, old &rarr; new'] = 'تاریخ انتشار، قدیمی &rarr; تازه';
+$lang['Desktop'] = 'کامپیوتر خانگی';
+$lang['File name, A &rarr; Z'] = 'نام فایل، A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'نام فایل، Z &rarr; A';
+$lang['Here are your connection settings'] = 'اطلاعات ورود شما';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'اگر گمان می کنید که این ایمیل به اشتباه فرستاده شده، خواهشاً با ما در میان بگذارید: %s';
+$lang['Manual sort order'] = 'مرتب سازی دستی';
+$lang['Mobile'] = 'موبایل';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'شناسه ی عددی، یک &rarr; نُه';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'شناسه ی عددی، نُه &rarr; یک';
+$lang['Original'] = 'اصلی';
+$lang['Password: %s'] = 'گذرواژه: %s';
+$lang['Photo sizes'] = 'اندازه ی عکس ها';
+$lang['Photo title, A &rarr; Z'] = 'عنوان عکس، A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'عنوان عکس، Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'امتیاز عکس، زیاد &rarr; کم';
+$lang['Rating score, low &rarr; high'] = 'امتیاز عکس، کم &rarr; زیاد';
+$lang['Send my connection settings by email'] = 'اطلاعات ورود من را با ایمیل برایم بفرست';
+$lang['Show latest comments first'] = 'ابتدا تازه ترین دیدگاه ها را نشان بده';
+$lang['Show oldest comments first'] = 'ابتدا قدیمی ترین دیدگاه ها را نشان بده';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'با موفقیت نام نویسی کردید، به زودی ایمیلی حاوی اطلاعات ورود برای شما فرستاده می شود.
+خوش آمدید!';
+$lang['Thank you for registering at %s!'] = 'با سپاس از نام نویسی شما در %s !';
+$lang['Username modification'] = 'ویرایش نام کاربری';
+$lang['Username: %s'] = 'نام کاربری: %s';
+$lang['View in'] = 'نمایش در';
+$lang['Visits, high &rarr; low'] = 'بازدید ها، زیاد &rarr; کم';
+$lang['Visits, low &rarr; high'] = 'بازدید ها، کم &rarr; زیاد';
+$lang['Your username has been successfully changed to : %s'] = 'نام کاربری شما با موفقیت تغییر کرد به : %s ';
+$lang['day']['0'] = 'یک شنبه';
+$lang['day']['2'] = 'سه شنبه';
+$lang['day']['4'] = 'پنج شنبه';
+$lang['large'] = 'L - بزرگ';
+$lang['medium'] = 'M - متوسط';
+$lang['small'] = 'S - کوچک';
+$lang['square'] = 'مربع';
+$lang['thumb'] = 'عکس بندانگشتی';
+$lang['xlarge'] = 'XL - بسیار بزرگ';
+$lang['xsmall'] = 'XS - بسیار کوچک';
+$lang['xxlarge'] = 'XXL - بزرگترین';
+$lang['%d rate'] = '%d امتیاز';
+$lang['Bad request'] = 'درخواست اشتباه';
+$lang['Forbidden'] = 'اجازه ی دسترسی ندارید';
+$lang['Page not found'] = 'برگه پیدا نشد';
+$lang['Permalink for album not found'] = 'لینک ثابتی برای این آلبوم پیدا نشد';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo با یک خطای غیر قابل بازیابی مواجه گردید';
+$lang['Requested album does not exist'] = 'آلبوم مورد نظر شما وجود ندارد';
+$lang['Requested tag does not exist'] = 'برچسب مورد نظر شما وجود ندارد';
+$lang['Email address is mandatory'] = 'آدرس ایمیل الزامی است';
+$lang['Username is mandatory'] = 'نام کاربری الزامی است';
+$lang['mandatory'] = 'الزامی';
+$lang['Your website URL is invalid'] = 'آدرس وب سایت شما نامعتبر است
+';
+$lang['Website'] = 'سایت اینترنتی
+';
+$lang['Email'] = 'ایمیل';
+$lang['First Page'] = 'نخستین برگه';
+$lang['Go back to the album'] = 'برگشتن به آلبوم';
+$lang['Last Page'] = 'آخرین برگه';
+$lang['Password is missing. Please enter the password.'] = 'گذرواژه ای نوشته نشده است. خواهشمندیم گذرواژه‌ای بنویسید.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'پذیرش گذرواژه با گذرواژه‌ی اصلی همخوانی ندارد. خواهشمندیم گذرواژه‌ی اصلی را در بخش پذیرش گذرواژه نیز بنویسید.';
+$lang['Theme'] = 'زمینه';
+$lang['%d photos per page'] = '%d عکس در هر برگ';
+?>
Index: /tags/2.6.0RC1/language/fa_IR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>چند روش برای افزودن عکس هایتان به گالری:</p>
+
+<ul>
+  <li><strong>آپلود مستقیم</strong> به کمک مرورگر خود ساده ترین و سریع ترین راه ممکن است. این روش به سرعت اینترنت شما و قابلیت های مرورگرتان بستگی دارد. اگر می خواهید تعداد خیلی زیادی عکس آپلود کنید و یا اگر در این روش به مشکلی برخوردید، روش های دیگری نیز برای آپلود عکس موجود است!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">استفاده از روش آپلود مستقیم</a></p>
+
+<ul>
+  <li>استفاده از نرم افزار <strong>pLoader</strong>، که بر روی کامپیوتر شخصی شما قابل نصب می باشد. عکس های خود را به داخل پنجره ی pLoader بکشید، و روی دکمه ی <em>"Upload to Piwigo"</em> کلیک کنید و بقیه ی کار ها را به pLoader بسپارید. شما همچنین می توانید از نرم افزار های دیگری از جمله <strong>WinToPiwigo</strong> و یا افزونه ی فرستنده ی  <strong>Digikam</strong> به Piwigo استفاده کنید.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">استفاده از pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>آپلود بوسیله ی FTP</strong> بهترین روش ممکن برای آپلود تعداد بسیار زیادی عکس فقط با چند کلیک می باشد و بیشتر از دیگر روش ها پیشنهاد می شود. با استفاده از راهنمایی ها از این روش بهترین استفاده را بکنید. استفاده از این روش به شما اجازه ی کنترل کامل بر تمام عکس های آپلود شده را می دهد.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">استفاده از FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/fa_IR/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/help/help_groups.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>گروه بندی یک راه مناسب برای تنظیم کردن دسترسی برای لیستی از کاربران می باشد.</p>
+
+<p>به مسیر <span class="pwgScreen">صفحه مدیریت &raquo; کاربران &raquo; گروه ها</span> رفته و گروهی بسازید و از مسیر <span class="pwgScreen">صفحه مدیریت &raquo; کاربران &raquo; مدیریت</span> تعدادی کاربر را عضو این گروه بکنید.</p>
+
+<p>هر کاربر می تواند بطور همزمان عضو چند گروه باشد. دقت کنید که مجوز های داده شده بر تحریم های گذاشته شده روی کاربران مقدم می باشند : اگر کاربری با نام "کوروش" عضو گروه "خانواده" و همچنین گروه "دوستان" باشد، و فقط گروه "خانواده" اجازه ی دیدن آلبومی با نام "سال نو" را داشته باشد و گروه "دوستان" این اجازه را نداشته باشد، "کوروش" نیز اجازه ی دیدن آلبوم "سال نو" را خواهد داشت.</p>
Index: /tags/2.6.0RC1/language/fa_IR/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>زمانی که شما گالری خود را می سازید می توانید آن را برای بازدید کنندگان پیکربندی کنید
+<ul>
+	<li>نمایش پیشفرض گالری را می توانید از مسیر <span class="pwgScreen">صفحه مدیریت &raquo; پیکربندی &raquo; گزینه ها</span> و قسمت <span class="pwgScreen">تنظیمات مهمان</span> تغییر دهید</li>
+	<li>قالب پیشفرض گالری را می توانید از مسیر <span class="pwgScreen">صفحه مدیریت &raquo; پیکربندی &raquo; قالب ها</span> تغییر دهید</li>
+	<li>زبان پیشفرض گالری را می توانید از مسیر <span class="pwgScreen">صفحه مدیریت &raquo; پیکربندی &raquo; زبان ها</span> تغییر دهید</li>
+ </ul>
+ بطور پیشفرض، هر کاربری که در گالری شما نام نویسی کند گالری را با تنظیمات بالا خواهد دید.
+</p>
+<p>اگر هرگونه پرسشی داشتید، گروه Piwigo در <a href="http://piwigo.org/forum">انجمن Piwigo</a> پاسخ شما را خواهد داد.</p>
Index: /tags/2.6.0RC1/language/fa_IR/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/help/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fa_IR/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>لیست کاربران</h2>
+
+<p>اینجا جاییست که شما کاربران گالری خود را مدیریت می کنید.</p>
+
+<h3>افزودن یک کاربر</h3>
+
+<p>یک مدیر می تواند بطور دستی کاربر تازه ایجاد کند. برای هر کاربر یک نام کاربری، یک گذرواژه و یک ایمیل معتبر ثبت نماید.</p>
+
+<h3>لیست کاربران</h3>
+
+<p>The list of existing users can be filtered on username (use * as wildcard), group or status. It can be ordered by registration date or username, in ascending or descending order.</p>
+
+<p>این صفحه به شما امکان مدیریت و انجام کار های زیر را بر روی چند کاربر بطور همزمان می دهد:</p>
+
+<ul>
+  <li>پاک کردن کاربران (نیازمند تأیید)</li>
+  <li>تغییر وضعیت کاربران</li>
+  <li>associate or dissociate from groups</li>
+  <li>modify display properties</li>
+  <li>modify additional preferences</li>
+</ul>
+
+<p>The target is the selected user (by default) or all users as displayed in the filtered list.</p>
Index: /tags/2.6.0RC1/language/fa_IR/index.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fa_IR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/install.lang.php	(revision 25596)
@@ -0,0 +1,69 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "نصب";
+$lang['Basic configuration'] = 'تنظیمات اساسی';
+$lang['Default gallery language'] = 'زبان پیشفرض گالری';
+$lang['Database configuration'] = 'تنظیمات پایگاه داده';
+$lang['Admin configuration'] = 'تنظیمات مدیریت';
+$lang['Start Install'] = 'آغاز نصب';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'این برای بازدیدکنندگان نمایش داده می شود. برای مدیریت سایت ضروری است';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'ارتباط با سرور با موفقیت انجام شد، اما ارتباط با پایگاه داده با مشکل مواجه شد';
+$lang['Can\'t connect to server'] = 'ارتباط با سرور ممکن نیست';
+$lang['Host'] = 'میزبان (Host)';
+$lang['User'] = 'نام کاربری';
+$lang['user login given by your host provider'] = 'نام کاربری خود را باید از هاست دریافت نمایید';
+$lang['user password given by your host provider'] = 'گذرواژه را باید از هاست دریافت نمایید';
+$lang['Database name'] = 'نام پایگاه داده';
+$lang['also given by your host provider'] = 'نام پایگاه داده را باید از هاست دریافت نمایید';
+$lang['Database table prefix'] = 'پیشوند جدول های پایگاه داده';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'نام تمام جدول های پایگاه داده با این پیشوند آغاز خواهد شد (این گزینه برای مدیریت بهتر پایگاه داده مفید است)';
+$lang['enter a login for webmaster'] = 'مشخصات ورود مدیرکل را وارد نمایید';
+$lang['webmaster login can\'t contain characters \' or "'] = 'مشخصات ورود نباید دارای کاراکترهای \' و " باشند';
+$lang['please enter your password again'] = 'خواهشمند است گذرواژه خود را دوباره وارد نمایید';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'گذرواژه را محرمانه نگه دارید، آن دسترسی شما را به مدیریت فراهم می کند';
+$lang['Password [confirm]'] = "تاييد گذرواژه";
+$lang['verification'] = 'تأیید';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'به کمک نیاز دارید ؟ پرسش خود را در <a href="%s">تالارهای پشتیبانی Piwigo</a> مطرح نمایید.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'بازدیدکنندگان می توانند بوسیله ی این ایمیل با مدیرکل ارتباط برقرار کنند';
+$lang['PHP 5 is required'] = 'نگارش پنجم PHP لازم است';
+$lang['It appears your webhost is currently running PHP %s.'] = 'به نظر می رسد هاست شما دارای نگارش PHP %s باشد.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo می‌تواند تنظیمات PHP شما را با ایجاد یا ویرایش یک فایل .htaccess به PHP 5 تغییر دهد.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'شما می توانید خودتان تنظیمات را تغییر دهید و Piwigo را دوباره راه اندازی کنید.';
+$lang['Try to configure PHP 5'] = 'در حال تنظیم PHP 5';
+$lang['Sorry!'] = "شرمنده!";
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo قادر به پیکربندی PHP 5 نیست.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'شما باید با سرویس دهنده ی هاست خود تماس گرفته و از آنها بپرسید که چگونه می توانید تنظیمات خود را به PHP 5 تغییر دهید.';
+$lang['Hope to see you back soon.'] = 'به امید دیدار دوباره ی شما.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Piwigo با موفقیت نصب شد';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'یک راه دیگر این است که شما متن بالا را کپی کنید و بدون اضافه یا کم کردن حتی یک حرف ،آن را در آدرس : "local/config/database.inc.php" قرار دهید';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'ایجاد فایل local/config/database.inc.php با مشکل مواجه شد.';
+$lang['Download the config file'] = 'دانلود فایل پیکربندی (Config)';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'شما می توانید فایل پیکربندی را دانلود کنید و آن را در مسیر local/config در محلی که گالری را نصب کردید آپلود کنید.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'هر مشکلی که داشتید را در انجمن مطرح کنید: %s';
+$lang['Just another Piwigo gallery'] = 'یک گالری دیگر با Piwigo';
+$lang['Password ']['confirm'] = 'تأیید گذرواژه';
+$lang['Welcome to my photo gallery'] = 'به گالری عکس من خوش آمدید';
+$lang['Welcome to your new installation of Piwigo!'] = 'به گالری Piwigo ی خود خوش آمدید!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost یا ادرس دیگر ، این را باید از هاست دریافت نمایید(در حالت معمول localhost میباشد)';
+?>
Index: /tags/2.6.0RC1/language/fa_IR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+پارسی [IR]
Index: /tags/2.6.0RC1/language/fa_IR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fa_IR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fa_IR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = 'آپگرید';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'پیشنهاد می‌شود که با استفاده از این صفحه بانک اطلاعاتی نگارش قدیمی Piwigo خود را به نگارش تازه ی آن ارتقا دهید. سیستم آپگرید نگارش کنونی گالری شما را <strong>نگارش %s </strong> تشخیص داده است.';
+$lang['Upgrade from version %s to %s'] = 'آپگرید از نگارش %s به نگارش %s';
+$lang['Statistics'] = "آمار";
+$lang['total upgrade time'] = 'زمان کل آپگرید';
+$lang['total SQL time'] = 'زمان کل SQL';
+$lang['SQL queries'] = 'کوئری(Query) های SQL';
+$lang['Upgrade informations'] = 'اطلاعات آپگرید';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'اگر به مشکلی برخوردید به [مدیریت > ابزار ها > نگهداری] مراجعه نمایید.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'هشدار، پلاگین های زیر در حال حاضر از کار افتاده اند. برای امنیت بیشتر، قبل از فعال کردن دوباره ی آن ها باید آپگرید های تازه آنها را بررسی کنید:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'فقط مدیران می توانند سیستم را آپگرید کنند.';
+$lang['You do not have access rights to run upgrade'] = "شما دسترسی لازم برای آپگرید را ندارید";
+$lang['All sub-albums of private albums become private'] = 'تمام زیرآلبوم های مربوط به آلبوم های شخصی، شخصی شدند';
+$lang['User permissions and group permissions have been erased'] = 'مجوز های کاربران و گروه ها پاک شد';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'فقط پیشوند عکس های بندانگشتی و آدرس ایمیل مدیرکل از تنظیمات قدیمی باقی خواهد ماند';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'در <i>%s</i>, قبل از <b>?></b>, اضافه کنید:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'هشدار، قالب های زیر در حال حاضر از کار افتاده اند. برای امنیت بیشتر، قبل از فعال کردن دوباره ی آن ها باید آپگرید های تازه آنها را بررسی کنید:';
+?>
Index: /tags/2.6.0RC1/language/fi_FI/about.html
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/about.html	(revision 25596)
@@ -0,0 +1,19 @@
+<p>Tämä kuvagalleria on luotu käyttäen Piwigoa.</p>
+
+<p>Piwigo on Web -pohjainen kuvagalleria, jonka on luonut käyttäjien ja
+kehittäjien aktiivinen yhteisö. Laajennusten avulla Piwigoa on helppo muokata.
+Pisteenä iin päälle, Piwigo on ilmainen ja käyttää avointa lähdekoodia.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Vieraile Piwigon kotisivuilla</a></p>
+
+<p>Suomenkielistä käännöstä ylläpitää (Aakkosjärjestyksessä):
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=18224">Juhi24</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16627">Rinnaus</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16548">streen</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16160">Tome-</a></li>
+    </ul>
+
+                .... Suuri kiitos sinulle
+</p>
Index: /tags/2.6.0RC1/language/fi_FI/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/admin.lang.php	(revision 25596)
@@ -0,0 +1,218 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['%s ago'] = '%s sitten';
+$lang['... or '] = '... tai';
+$lang['%d years'] = '%d vuodet';
+$lang['%d year'] = '%d vuosi';
+$lang['%d week'] = '%d viikko';
+$lang['%d weeks'] = '%d viikot';
+$lang['%d seconds'] = '%d sekunnit';
+$lang['%d users deleted'] = '%d käyttäjät poistettu';
+$lang['%d users'] = '%d käyttäjät';
+$lang['%d user'] = '%d käyttäjä';
+$lang['%d second'] = '%d sekunti';
+$lang['%d photo was deleted'] = '%d kuva poistettu';
+$lang['%d photos uploaded'] = '%d kuvat ladattu';
+$lang['%d photos were deleted'] = '%d kuvat poistettu';
+$lang['%d month'] = '%d kuukausi';
+$lang['%d months'] = '%d kuukausia';
+$lang['%d minute'] = '%d minuutti';
+$lang['%d minutes'] = '%d minuutteja';
+$lang['%d groups'] = '%d ryhmät';
+$lang['%d days'] = '%d päivät';
+$lang['%d group'] = '%d ryhmä';
+$lang['%d day'] = '%d päivä';
+$lang['%d albums moved'] = '%d albumia siirretty';
+$lang['%d guests'] = '%d vierasta';
+$lang['%d guest'] = '%d vieras';
+$lang['Description'] = 'Kuvaus';
+$lang['Database'] = 'Tietokanta';
+$lang['Check for updates'] = 'Tarkista päivitykset';
+$lang['Can\'t create temporary file.'] = 'Väliaikaistiedostoa ei voida luoda.';
+$lang['Week starts on'] = 'Viikon ensimmäinen päivä on';
+$lang['Watermark'] = 'Vesileima';
+$lang['Version'] = 'Versio';
+$lang['Tools'] = 'Työkalut';
+$lang['Summary'] = 'Yhteenveto';
+$lang['Send'] = 'Lähetä';
+$lang['See you soon.'] = 'Näkemiin.';
+$lang['Path'] = 'Polku';
+$lang['Panorama'] = 'Panorama';
+$lang['Operating system'] = 'Käyttöjärjestelmä';
+$lang['Opacity'] = 'Läpinäkyvyys';
+$lang['No results'] = 'Ei tuloksia';
+$lang['Move'] = 'Siirrä';
+$lang['File'] = 'Tiedosto';
+$lang['ERROR'] = 'VIRHE';
+$lang['Drop into album'] = 'Valitse albumi';
+$lang['Documentation'] = 'Dokumentaatio';
+$lang['Directory'] = 'Hakemisto';
+$lang['Crop'] = 'Rajaa';
+$lang['Cancel'] = 'Peruuta';
+$lang['Allow rating'] = 'Salli arvosanat';
+$lang['Album name'] = 'Albumin nimi';
+$lang['Add a user'] = 'Lisää käyttäjä';
+$lang['Add'] = 'Lisää';
+$lang['A new version of Piwigo is available.'] = 'Uusi versio Piwigosta on saatavilla.';
+$lang['ACCESS_0'] = 'Vapaa pääsy';
+$lang['%d user deleted'] = '%d käyttäjä poistettu';
+$lang['%d hour'] = '%d tunti';
+$lang['%d hours'] = '%d tuntia';
+$lang['%d member'] = '%d jäsen';
+$lang['%d members'] = '%d jäsentä';
+$lang['Allow user customization'] = 'Salli kustomointi käyttäjille';
+$lang['Allow users to edit their own comments'] = 'Salli käyttäjien muokata kommenttejaan';
+$lang['Allow users to delete their own comments'] = 'Salli käyttäjien poistaa kommenttejaan';
+$lang['Allow user registration'] = 'Salli käyttäjien rekisteröityminen';
+$lang['All themes are up to date.'] = 'Kaikki teemat ovat ajan tasalla.';
+$lang['%d parameters were updated.'] = '%d parametriä päivitetty.';
+$lang['%d parameter was updated.'] = '%d parametri päivitetty.';
+$lang['%d mails were sent.'] = '%d sähköpostiviestiä lähetetty.';
+$lang['%d mail was sent.'] = '%d sähköpostiviesti lähetetty.';
+$lang['%d mail was not sent.'] = '%d sähköpostiviesti lähettämättä.';
+$lang['%d mails were not sent.'] = '%d sähköpostiviestiä lähettämättä.';
+$lang['%d albums including'] = '%d albumia sisältäen';
+$lang['%d album including'] = '%d albumi sisältäen';
+$lang['Choose an action'] = 'Valitse toiminto';
+$lang['%d user was updated.'] = '%d käyttäjä päivitetty.';
+$lang['%d users were not updated.'] = '%d käyttäjää ei päivitetty.';
+$lang['%d users were updated.'] = '%d käyttäjää päivitetty.';
+$lang['%d album moved'] = '%d albumi siirretty';
+$lang['Level 0'] = '---';
+$lang['Level 4'] = 'Perhe';
+$lang['Level 2'] = 'Kaverit';
+$lang['Level 1'] = 'Kontaktit';
+$lang['Main Page'] = 'Pääsivu';
+$lang['IP'] = 'IP';
+$lang['I decide to update anyway'] = 'Haluan päivittää silti';
+$lang['Form'] = 'Lomake';
+$lang['Groups'] = 'Ryhmät';
+$lang['Groups and users'] = 'Ryhmät ja käyttäjät';
+$lang['Guest Settings'] = 'Vieraiden asetukset';
+$lang['Guest cannot be deleted'] = 'Vierasta ei voi poistaa';
+$lang['Guests'] = 'Vieraat';
+$lang['Height'] = 'Korkeus';
+$lang['Hello'] = 'Hei';
+$lang['Hello,'] = 'Hei,';
+$lang['Group name'] = 'Ryhmän nimi';
+$lang['Group management'] = 'Ryhmien hallinta';
+$lang['Group'] = 'Ryhmä';
+$lang['Go to'] = 'Siirry';
+$lang['General statistics'] = 'Yleiset tilastot';
+$lang['Deleted on'] = 'Poistettu';
+$lang['Correction applied with success'] = 'Korjaus onnistuneesti lisätty';
+$lang['Correction'] = 'Korjaus';
+$lang['Check integrity'] = 'Eheyden tarkistus';
+$lang['Check all'] = 'Valitse kaikki';
+$lang['%s has been successfully updated.'] = '%s päivitettiin onnistuneesti.';
+$lang['%d waiting for validation'] = '%d odottaa hyväksyntää';
+$lang['%d user was not updated.'] = '%d käyttäjää ei päivitetty';
+$lang[' and %d virtuals'] = 'ja %d virtuaalista';
+$lang[' and %d virtual'] = 'ja %d virtuaalinen';
+$lang['Rename'] = 'Nimeä uudelleen';
+$lang['Please wait...'] = 'Odota, ole hyvä...';
+$lang['Piwigo version'] = 'Piwigon versio';
+$lang['Overall'] = 'Yleiskatsaus';
+$lang['Minimum height'] = 'Vähimmäiskorkeus';
+$lang['Locked'] = 'Lukittu';
+$lang['Lock gallery'] = 'Lukitse galleria';
+$lang['Lock albums'] = 'Lukitse albumit';
+$lang['Installed Themes'] = 'Asennetut teemat';
+$lang['Installed Languages'] = 'Asennetut kielet';
+$lang['Help Me'] = 'Apua';
+$lang['Duplicates'] = 'Kaksoiskappaleet';
+$lang['Duplicate'] = 'Kahdenna';
+$lang['Delete selected users'] = 'Poista valitut käyttäjät';
+$lang['Delete this language'] = 'Poista tämä kieli';
+$lang['Delete Representant'] = 'Poista albumin esikatselukuva';
+$lang['%d anomalies have been detected corrected.'] = '%d epäkohtaa löydetty ja korjattu.';
+$lang['%d anomalies have been detected.'] = '%d epäkohtaa havaittu.';
+$lang['%d anomalies have been ignored.'] = '%d epäkohtaa ohitettu.';
+$lang['%d anomalies have not been corrected.'] = '%d epäkohtaa ei ole korjattu.';
+$lang['%d anomaly has been corrected.'] = '%d epäkohtaa korjattiin.';
+$lang['%d anomaly has been detected.'] = '%d epäkohtaa havaittiin.';
+$lang['%d anomaly has been ignored.'] = '%d epäkohtaa ohitettiin.';
+$lang['%d anomaly has not been corrected.'] = '%d ei olla korjattu.';
+$lang['%d association'] = '%d assosiaatiota';
+$lang['%d associations'] = '%d assosiaatiota';
+$lang['%d line filtered'] = '%d rivi rajattu';
+$lang['%d lines filtered'] = '%d riviä rajattu';
+$lang['%d of %d photos selected'] = '%d/%d kuvaa valittu';
+$lang['%d physical'] = '%d fyysistä';
+$lang['%d physicals'] = '%d fyysistä';
+$lang['%d tag'] = '%d tunniste';
+$lang['%d tags'] = '%d tunnistetta';
+$lang['%d user comment rejected'] = '%d kommentti hylätty';
+$lang['%d user comment validated'] = '%d kommentti hyväksytty';
+$lang['%d user comments rejected'] = '%d kommenttia hylätty';
+$lang['New tag'] = 'Uusi tägi';
+$lang['Number of comments per page'] = 'Kommenttien lukumäärä sivua kohden';
+$lang['Move albums'] = 'Siirrä albumeja';
+$lang['Move to album'] = 'Siirrä albumiin';
+$lang['Manage Permissions'] = 'Hallitse oikeuksia';
+$lang['Hide'] = 'Piilota';
+$lang['Gallery title'] = 'Gallerian otsikko';
+$lang['Default photos order'] = 'Kuvien oletusjärjestys';
+$lang['Default user cannot be deleted'] = 'Oletuskäyttäjää ei voi poistaa';
+$lang['Delete orphan tags'] = 'Poista käyttämättömät tägit';
+$lang['Delete selected photos'] = 'Poista valitut kuvat';
+$lang['Delete selected tags'] = 'Poista valitut tägit';
+$lang['Delete this theme'] = 'Poista tämä teema';
+$lang['Add a criteria'] = 'Lisää kriteeri';
+$lang['Add a filter'] = 'Lisää filtteri';
+$lang['Add a tag'] = 'Lisää tägi';
+$lang['Add a virtual album'] = 'Lisää virtuaalinen albumi';
+$lang['Add group'] = 'Lisää ryhmä';
+$lang['Add tags'] = 'Lisää tägejä';
+$lang['Added by %s'] = 'Lisännyt %s';
+$lang['Album "%s" has been added'] = 'Albumi "%s" lisätty';
+$lang['Album "%s" now contains %d photos'] = 'Albumi "%s" sisältää nyt %d kuvaa';
+$lang['Albums automatically sorted'] = 'Albumit järjestetty automaattisesti';
+$lang['All %d photos are selected'] = 'Kaikki %d kuvaa ovat valittuina';
+$lang['All extensions are up to date.'] = 'Kaikki laajennukset ovat ajan tasalla.';
+$lang['ACCESS_5'] = 'Ei pääsyä';
+$lang['Action'] = 'Toiminto';
+$lang['Actions'] = 'Toiminnot';
+$lang['Select an album'] = 'Valitse albumi';
+$lang['Select at least one album'] = 'Valitse vähintään yksi albumi';
+$lang['Select at least one comment'] = 'Valitse vähintään yksi kommentti';
+$lang['Select at least one photo'] = 'Valitse vähintään yksi kuva';
+$lang['Select at least one user'] = 'Valitse vähintään yksi käyttäjä';
+$lang['Select groups...'] = 'Valitse ryhmät...';
+$lang['Select users...'] = 'Valitse käyttäjät...';
+$lang['Two updates are available'] = 'Kaksi päivitystä on saatavilla';
+$lang['Thumbnails generation in progress...'] = 'Luodaan pienoiskuvia...';
+$lang['Virtual album added'] = 'Virtuaalinen albumi lisätty';
+$lang['Virtual album deleted'] = 'Virtuaalinen albumi poistettu';
+$lang['You are running the latest version of Piwigo.'] = 'Sinulla on uusin versio Piwigosta.';
+$lang['You cannot delete your account'] = 'Et voi poistaa omaa käyttäjätiliäsi';
+$lang['You cannot move an album in its own sub album'] = 'Et voi siirtää albumia omaan ala-albumiinsa';
+$lang['an error happened'] = 'tapahtui virhe';
+$lang['any visitor can see this album'] = 'kuka tahansa vierailija näkee tämän albumin';
+$lang['automatic order'] = 'automaattinen järjestys';
+$lang['default values'] = 'oletusarvot';
+$lang['unknown'] = 'tuntematon';
+$lang['user_status_admin'] = 'Ylläpitäjä';
+$lang['user_status_guest'] = 'Vieras';
+$lang['user_status_normal'] = 'Käyttäjä';
+?>
Index: /tags/2.6.0RC1/language/fi_FI/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/common.lang.php	(revision 25596)
@@ -0,0 +1,423 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Finnish [FI]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=686
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Finnish";
+$lang_info['country'] = "Suomi";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "fi";
+$lang_info['zero_plural'] = "1";
+
+$lang['%d album updated'] = '%d albumi päivitetty';
+$lang['%d albums updated'] = '%d albumit päivitetty';
+$lang['%d comment to validate'] = '%d kommentin vahvistus';
+$lang['%d comments to validate'] = '%d kommentien vahvistus';
+$lang['%d new comment'] = '%d uusi kommentti';
+$lang['%d new comments'] = '%d uudet kommentit';
+$lang['%d comment'] = '%d kommentti';
+$lang['%d comments'] = '%d kommenttia';
+$lang['%d hit'] = '%d osuma';
+$lang['%d hits'] = '%d osumat';
+$lang['%d new photo'] = '%d uusi kuva';
+$lang['%d new photos'] = '%d uudet kuvat';
+$lang['%d new user'] = '%d uusi käyttäjä';
+$lang['%d new users'] = '%d uudet käyttäjät';
+$lang['About'] = 'Yleistä';
+$lang['All tags'] = 'Kaikki tunnisteet';
+$lang['Any tag'] = 'Tunniste';
+$lang['At least one listed rule must be satisfied.'] = 'Vähintään yksi listattu kriteeti on täytyttävä.';
+$lang['Author'] = 'Tekijä';
+$lang['Albums'] = 'Albumit';
+$lang['Album'] = 'Albumi';
+$lang['Close this window'] = 'Sulje tämä ikkuna';
+$lang['Complete RSS feed (photos, comments)'] = 'Täydellinen RSS-syöte (kuvat, kommentit)';
+$lang['Confirm Password'] = 'Vahvista salasana';
+$lang['Connection settings'] = 'Yhteysasetukset';
+$lang['Login'] = 'Kirjaudu';
+$lang['Contact webmaster'] = 'Ota yhteys Ylläpitäjään';
+$lang['Create a new account'] = 'Luo uusi tili';
+$lang['Created on'] = 'Luotu';
+$lang['Creation date'] = 'Luontipäivä';
+$lang['Current password is wrong'] = 'Salasana on väärä';
+$lang['Dimensions'] = 'Koko';
+$lang['Display'] = 'Näytä';
+$lang['Each listed rule must be satisfied.'] = 'Kaikkien kohtien on oltava täytetty oikein.';
+$lang['Email address'] = 'Sähköpostiosoite';
+$lang['Enter your personnal informations'] = 'Kirjoita henkilökohtaiset tietosi';
+$lang['Error sending email'] = 'Virhe sähköpostin lähettämisessä';
+$lang['File name'] = 'Tiedostonimi';
+$lang['File'] = 'Tiedosto';
+$lang['Filesize'] = 'Tiedoston koko';
+$lang['Filter and display'] = 'Suodatin ja näyttö';
+$lang['Filter'] = 'Suodatin';
+$lang['Forgot your password?'] = 'Unohditko salasanasi?';
+$lang['Go through the gallery as a visitor'] = 'Selaa galleriaa vieraana';
+$lang['Help'] = 'Apua';
+$lang['Identification'] = 'Tunnistus';
+$lang['Photos only RSS feed'] = 'RSS -syöte (vain kuvat)';
+$lang['Keyword'] = 'Avainsana';
+$lang['day'][0] = "Sunnuntai";
+$lang['day'][1] = "Maanantai";
+$lang['day'][2] = "Tiistai";
+$lang['day'][3] = "Keskiviikko";
+$lang['day'][4] = "Torstai";
+$lang['day'][5] = "Perjantai";
+$lang['day'][6] = "Lauantai";
+$lang['month'][10] = "Lokakuu";
+$lang['month'][11] = "Marraskuu";
+$lang['month'][12] = "Joulukuu";
+$lang['month'][1] = "Tammikuu";
+$lang['month'][2] = "Helmikuu";
+$lang['month'][3] = "Maaliskuu";
+$lang['month'][4] = "Huhtikuu";
+$lang['month'][5] = "Toukokuu";
+$lang['month'][6] = "Kesäkuu";
+$lang['month'][7] = "Heinäkuu";
+$lang['month'][8] = "Elokuu";
+$lang['month'][9] = "Syyskuu";
+$lang['Date'] = 'Päivämäärä';
+$lang['Default'] = 'Oletus';
+$lang['Download'] = 'lataa';
+$lang['Edit a comment'] = 'Muokkaa kommenttia';
+$lang['edit'] = 'muokkaa';
+$lang['Edit'] = 'Muokkaa';
+$lang['First'] = 'Ensimmäinen';
+$lang['from %s to %s'] = 'alkaen %s päättyen %s';
+$lang['group by letters'] = 'järjestä kirjainten mukaan';
+$lang['guest'] = 'vieras';
+$lang['Hello'] = 'Hei';
+$lang['Home'] = 'Etusivu';
+$lang['Search'] = 'Etsi';
+$lang['search'] = 'Tarkka haku';
+$lang['Sent by'] = 'Lähettäjä';
+
+
+//works
+$lang['A comment on your site'] = 'Palaute sivultasi';
+$lang['About Piwigo'] = 'Yleistä Piwigosta';
+$lang['Accelerate diaporama speed'] = 'Kasvata diaesityksen nopeutta';
+$lang['Add a comment'] = 'Lisää kommentti';
+$lang['add this photo to your favorites'] = 'lisää tämä kuva suosikkeihisi';
+$lang['Admin: %s'] = 'Ylläpitäjä: %s';
+$lang['Administration'] = 'Hallinta';
+$lang['Album results for'] = 'Albumin tulokset';
+$lang['Album: %s'] = 'Albumi: %s';
+$lang['all'] = 'all';
+$lang['All'] = 'Kaikki';
+$lang['Are you sure?'] = 'Oletko varma?';
+$lang['ascending'] = 'nouseva';
+$lang['author(s) : %s'] = 'Tekijä(t) : %s';
+$lang['Author: %s'] = 'Tekijä: %s';
+$lang['Auto login'] = 'Muista minut';
+$lang['available for administrators only'] = 'Vain ylläpitäjille';
+$lang['Best rated'] = 'Parhaiten arvioidut';
+$lang['Browser: %s'] = 'Selain: %s';
+$lang['Calendar'] = 'Kalenteri';
+$lang['Change my password'] = 'Vaihda salasana';
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d photo'] = '%d kuva';
+$lang['%d photos'] = '%d kuvaa';
+$lang['Comment'] = 'Kommentti';
+$lang['Comment: %s'] = 'Kommentti: %s';
+$lang['Comments'] = 'Kommentit';
+$lang['Contact'] = 'Ota yhteyttä';
+$lang['created before %s (%s)'] = 'luotu ennen %s (%s)';
+$lang['created on %s'] = 'Luotu %s';
+$lang['Customize'] = 'Muokkaa';
+$lang['customize the appareance of the gallery'] = 'muokkaa gallerian ulkoasua';
+$lang['Delete'] = 'Poista';
+$lang['delete all photos from your favorites'] = 'poista kaikki kuvat suosikeista';
+$lang['descending'] = 'laskeva';
+$lang['Expand all albums'] = 'Laajenna kaikki albumit';
+$lang['Favorites'] = 'Suosikit';
+$lang['Hello %s,'] = 'Hei %s,';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hei %s, Piwigo kuvagalleriasi on tyhjä!';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Language'] = 'Kieli';
+$lang['large'] = 'Iso';
+$lang['letters'] = 'kirjaimet';
+$lang['Links'] = 'Linkit';
+$lang['Logout'] = 'Kirjaudu ulos';
+$lang['medium'] = 'Keskikokoinen';
+$lang['Menu'] = 'Valikko';
+$lang['Most visited'] = 'Suosituimmat kuvat';
+$lang['New password'] = 'Uusi salasana';
+$lang['Next'] = 'Seuraava';
+$lang['No'] = 'Ei';
+$lang['Notification'] = 'Tiedoksi';
+$lang['Number of photos per page'] = 'Kuvien määrä sivulla';
+$lang['obligatory'] = 'pakollinen';
+$lang['Original'] = 'Alkuperäinen';
+$lang['Original dimensions'] = 'Alkuperäinen koko';
+$lang['Password'] = 'Salasana';
+$lang['Password forgotten'] = 'Unohdettu salasana';
+$lang['Password Reset'] = 'Salasanan palautus';
+$lang['password updated'] = 'salasana uusittu';
+$lang['Pause of slideshow'] = 'Pysäytä diaesitys';
+$lang['photo'] = 'kuva';
+$lang['Photo sizes'] = 'Kuvien koot';
+$lang['Previous'] = 'Edellinen';
+$lang['Profile'] = 'Profiili';
+$lang['Recent albums'] = 'Viimeisimmät albumit';
+$lang['Recent photos'] = 'Viimeisimmät kuvat';
+$lang['Registration'] = 'Rekisteröityminen';
+$lang['Repeat the slideshow'] = 'Toista diaesitys';
+$lang['representative'] = 'albumin esikatselukuva';
+$lang['Search in albums'] = 'Etsi albumeista';
+$lang['Search results'] = 'Hakutulos';
+$lang['searched words : %s'] = 'haetut sanat: %s';
+$lang['set as album representative'] = 'aseta albumin esikatselukuvaksi';
+$lang['slideshow'] = 'diaesitys';
+$lang['small'] = 'Pieni';
+$lang['Sort by'] = 'Lajitteluperuste';
+$lang['Sort order'] = 'Lajittelujärjestys';
+$lang['Thumbnails'] = 'Esikatselukuvat';
+$lang['Visits'] = 'Vierailut';
+$lang['Webmaster'] = 'Ylläpitäjä';
+$lang['Week %d'] = 'Viikko %d';
+$lang['Welcome'] = 'Tervetuloa';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Tervetuloa Piwigo kuvagalleriaasi!';
+$lang['xlarge'] = 'Isompi';
+$lang['xxlarge'] = 'Isoin';
+$lang['Yes'] = 'Kyllä';
+$lang['Your favorites'] = 'Suosikit';
+$lang['Your password has been reset'] = 'Salasanasi on nollattu';
+$lang['display this album'] = 'näytä tämä albumi';
+$lang['Download this file'] = 'Lataa tämä tiedosto';
+$lang['%d photo is also linked to current tags'] = '%d valokuva on liitetty myös nykyisiin tunnisteisiin';
+$lang['%d photos are also linked to current tags'] = '%d valokuvat on liitetty myös nykyisiin tunnisteisiin';
+$lang['%d rates'] = '%d arvostelut';
+$lang['(!) This comment requires validation'] = '(!) Tämä kommentti vaatii hyväksynnän';
+$lang['... or browse your empty gallery'] = '...tai selaa tyhjää kuvagalleriaasi';
+$lang['... or please deactivate this message, I will find my way by myself'] = '...tai poista tämä viesti käytöstä, otan itse selvää';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Ylläpitäjän on hyväksyttävä kommenttisi ennen kuin se tulee näkyviin.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Floodauksen esto: Odota hetki ennen kuin yrität lähettää uuden kommentin';
+$lang['Check your email for the confirmation link'] = 'Tarkista sähköpostistasi vahvistuslinkki';
+$lang['chronology_monthly_calendar'] = 'Kuukausikalenteri';
+$lang['chronology_monthly_list'] = 'Kuukausittainen lista';
+$lang['chronology_weekly_list'] = 'Viikottainen lista';
+$lang['Click here if your browser does not automatically forward you'] = 'Paina tästä mikäli selain ei automaattisesti siirrä sinua eteenpäin';
+$lang['Click on the photo to see it in high definition'] = 'Paina kuvaa nähdäksesi sen korkealaatuisena';
+$lang['cloud'] = 'pilvi';
+$lang['Comment by %s'] = 'Kommentti käyttäjältä %s';
+$lang['comment date'] = 'kommentin päivämäärä';
+$lang['Connected user: %s'] = 'Kytketty käyttäjä: %s';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Evästeet eivät ole sallittu tai selaimesi ei tue niitä. Evästeet on laitettava päälle kirjautuaksesi sisään.';
+$lang['created after %s (%s)'] = 'luotu %s (%s) jälkeen';
+$lang['created between %s (%s) and %s (%s)'] = 'luotu %s(%s) ja %s (%s) välissä';
+$lang['delete this photo from your favorites'] = 'poista tämä kuva suosikeista';
+$lang['display a calendar by creation date'] = 'näytä kalenteri luomispäivän mukaan';
+$lang['display a calendar by posted date'] = 'näytä kalenteri lähetyspäivän mukaan';
+$lang['display a set of random photos'] = 'näytä satunnaisia kuvia';
+$lang['display all photos in all sub-albums'] = 'näytä kaikki kuvat kaikista ala-albumeista';
+$lang['display available tags'] = 'näytä käytettävissä olevat tunnisteet';
+$lang['display best rated photos'] = 'näytä parhaiten arvioidut kuvat';
+$lang['display last user comments'] = 'näytä viimeisimmät käyttäjien kommentit';
+$lang['display most recent photos'] = 'näytä viimeisimmät kuvat';
+$lang['display most visited photos'] = 'näytä useimmin katsotut kuvat';
+$lang['display only recently posted photos'] = 'näytä vain viimeisimmäksi lähetetyt kuvat';
+$lang['display photos linked to this tag'] = 'näytä tähän tunnisteeseen linkitetyt kuvat';
+$lang['display recently updated albums'] = 'näytä viimeisimmäksi päivitetyt albumit';
+$lang['display your favorites photos'] = 'näytä suosikkikuvat';
+$lang['Email address is missing. Please specify an email address.'] = 'Sähköpostiosoite puuttuu. Määritä sähköpostiosoite.';
+$lang['Email: %s'] = 'Sähköposti: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Tyhjä haku. Mitään ei haettu.';
+$lang['End-Date'] = 'Päättymispäivä';
+$lang['Enter your new password below.'] = 'Kirjoita uusi salasanasi alapuolelle.';
+$lang['EXIF Metadata'] = 'EXIF Metatiedot';
+$lang['html tags are not allowed in login'] = 'html tunnisteet eivät ole sallittuja käyttäjätunnuksessa';
+$lang['I want to add photos'] = 'Haluan lisätä kuvia';
+$lang['in %d sub-album'] = '%d ala-albumissa';
+$lang['in %d sub-albums'] = '%d ala-albumissa';
+$lang['in this album'] = 'tässä albumissa';
+$lang['included'] = 'sisältyy';
+$lang['Invalid key'] = 'Väärä avain';
+$lang['Invalid password!'] = 'Väärä salasana!';
+$lang['Invalid username or email'] = 'Väärä käyttäjätunnus tai sähköpostiosoite';
+$lang['IPTC Metadata'] = 'IPTC Metatiedot';
+$lang['Last'] = 'Viimeinen';
+$lang['last %d days'] = 'viimeisimmät %d päivät';
+$lang['Here are your connection settings'] = 'Tässä on rekisteröitymistietosi';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'Sähköpostiosoitteen tulee olla muotoa xxx@yyy.eee (esimerkiksi jack@altern.org)';
+$lang['no rate'] = 'ei arvosteltu';
+$lang['Not repeat the slideshow'] = 'Älä toista diaesitystä';
+$lang['Page generated in'] = 'Sivu luotu';
+$lang['Password reset is not allowed for this user'] = 'Salasanan palautus ei ole sallittu tälle käyttäjälle';
+$lang['Password: %s'] = 'Salasana:%s';
+$lang['Play of slideshow'] = 'Käynnistä diaesitys';
+$lang['Please enter your username or email address.'] = 'Kirjoita käyttäjätunnus tai sähköpostiosoite';
+$lang['posted after %s (%s)'] = 'lähetetty %s(%s) jälkeen';
+$lang['posted before %s (%s)'] = 'lähetetty ennen %s(%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'lähetetty %s(%s) ja %s(%s) välissä';
+$lang['Posted on'] = 'Lähetetty';
+$lang['posted on %s'] = 'lähetetty %s';
+$lang['Preferences'] = 'Asetukset';
+$lang['Quick search'] = 'Pikahaku';
+$lang['Random photos'] = 'Satunnaiset valokuvat';
+$lang['Rank'] = 'Sijoitus';
+$lang['Rate this photo'] = 'Arvostele tämä kuva';
+$lang['Recent period'] = 'Viimeisin ajanjakso';
+$lang['Redirection...'] = 'Uudelleenohjaus...';
+$lang['Reduce diaporama speed'] = 'Vähennä diaesityksen nopeutta';
+$lang['Register'] = 'Rekisteröidy';
+$lang['remove this tag from the list'] = 'poista tämä tunniste listasta';
+$lang['Reset'] = 'Tyhjennä';
+$lang['Reset to default values'] = 'Palauta alkuperäisasetukset';
+$lang['Return to home page'] = 'Palaa etusivulle';
+$lang['return to normal view mode'] = 'palaa normaaliin katselunäkymään';
+$lang['RSS feed'] = 'RSS syöte';
+$lang['Search by date'] = 'Hae päivämäärän mukaan';
+$lang['Search for Author'] = 'Hae tekijän mukaan';
+$lang['Search for words'] = 'Hae sanoja';
+$lang['Search in sub-albums'] = 'Etsi ala-albumeista';
+$lang['Send my connection settings by email'] = 'Lähetä rekisteröitymistiedot sähköpostiini';
+$lang['Show file metadata'] = 'Näytä kuvan metatiedot';
+$lang['Show latest comments first'] = 'Näytä viimeisin kommentti ensin';
+$lang['Show number of comments'] = 'Näytä kommenttien lukumäärä';
+$lang['Show oldest comments first'] = 'Näytä vanhin kommentti ensin';
+$lang['Since'] = 'Alkaen';
+$lang['SQL queries in'] = 'SQL haut';
+$lang['stop the slideshow'] = 'pysäytä diaesitys';
+$lang['Submit'] = 'Lähetä';
+$lang['Tag'] = 'Tunniste';
+$lang['Tags'] = 'Tunnisteet';
+$lang['the beginning'] = 'alku';
+$lang['The number of photos per page must be a not null scalar'] = 'Kuvien lukumäärä sivulla on oltava enemmän kuin nolla';
+$lang['The passwords do not match'] = 'Salasanat eivät täsmää';
+$lang['the username must be given'] = 'käyttäjätunnus vaaditaan';
+$lang['This author modified following comment:'] = 'Tekijä on muokannut seuraavaa kommenttia:';
+$lang['This author removed the comment with id %d'] = 'Tekijä poisti kommentin id: %d';
+$lang['this email address is already in use'] = 'sähköpostiosoite on jo käytössä';
+$lang['today'] = 'tänään';
+$lang['User comments'] = 'Käyttäjien kommentit';
+$lang['User: %s'] = 'Käyttäjä:%s';
+$lang['Username'] = 'Käyttäjätunnus';
+$lang['Username modification'] = 'Käyttäjätunnuksen muokkaaminen';
+$lang['Username or email'] = 'Käyttäjätunnus tai sähköpostiosoite';
+$lang['Username: %s'] = 'Käyttäjätunnus:%s';
+$lang['View'] = 'Katso';
+$lang['View in'] = 'Katso';
+$lang['wrong date'] = 'väärä päivämäärä';
+$lang['Your comment has been registered'] = 'Kommenttisi on kirjattu';
+$lang['Your Gallery Customization'] = 'Kuvagallerian muokkaus';
+$lang['Your username has been successfully changed to : %s'] = 'Käyttäjätunnuksesi on vaihdettu, uusi käyttäjätunnus on: %s';
+$lang['Desktop'] = 'Työpöytä';
+$lang['display each day with photos, month per month'] = 'näytä joka päivä kuvia, kuukausi kuukaudelta';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Jos tämä oli vahinko, älä huomioi viestiä niin mitään ei tapahdu.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Jos sait tämän sähköpostin vahingossa, otathan yhteyttä %s';
+$lang['login mustn\'t end with a space character'] = 'käyttäjätunnus ei voi päättyä välilyöntiin';
+$lang['login mustn\'t start with a space character'] = 'käyttäjätunnus ei voi alkaa välilyönnillä';
+$lang['Manage this user comment: %s'] = 'Muokkaa käyttäjän kommenttia: %s';
+$lang['Mobile'] = 'Mobiili';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Uusi %s';
+$lang['photos posted during the last %d days'] = 'kuvat lisätty viimeisen %d päivän aikana';
+$lang['Photos posted within the last %d day.'] = 'Kuvat lisätty vain viimeisen %d päivän aikana.';
+$lang['Photos posted within the last %d days.'] = 'Kuvat lisätty vain viimeisten %d päivien aikana.';
+$lang['Piwigo Help'] = 'Piwigo help';
+$lang['Please, enter a login'] = 'Kirjoita käyttäjätunnuksesi';
+$lang['Post date'] = 'Lähetyspäivä';
+$lang['Powered by'] = 'Powered by';
+$lang['Quick connect'] = 'Pikayhteys';
+$lang['Rating score'] = 'Pisteet';
+$lang['Recent period must be a positive integer value'] = 'Viimeisimmän ajanjakson tulee olla positiivinen kokonaisluku';
+$lang['Registration of %s'] = '%s Rekisteröinti';
+$lang['Related tags'] = 'Samankaltaiset tunnisteet';
+$lang['Retrieve password'] = 'Palauta salasana';
+$lang['return to the display of all photos'] = 'palaa kaikkien kuvien näkymään';
+$lang['Search for all terms'] = 'Hae kaikkia sanoja';
+$lang['Search for any term'] = 'Hae mitä tahansa sanaa';
+$lang['Search rules'] = 'Hakukriteeri';
+$lang['Search tags'] = 'Haettavat tunnisteet';
+$lang['Show number of hits'] = 'Näytä osumien lukumäärä';
+$lang['show tag cloud'] = 'näytä tunnistepilvi';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Salasanan nollausta on pyytänyt käyttäjätili:';
+$lang['square'] = 'Neliö';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Rekisteröinti onnistui, saat kohta sähköpostissa rekisteröitymistietosi. Tervetuloa käyttäjäksi!';
+$lang['Tag results for'] = 'Tunnisteen tulokset';
+$lang['Thank you for registering at %s!'] = 'Kiitos rekisteröitymisestäsi %s!';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleria on suljettu huollon ajaksi. Tule takaisin myöhemmin.';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS-syöte tarjoaa ilmoitukset uusista tapahtumista tältä sivustolta: uudet kuvat, päivitetyt albumit ja uudet kommentit. Käytä RSS -lukijaa.';
+$lang['This login is already used by another user'] = 'Käyttäjätunnus on jo käytössä';
+$lang['this login is already used'] = 'käyttäjätunnus on jo käytössä';
+$lang['thumb'] = 'Kuvake';
+$lang['To reset your password, visit the following address:'] = 'Palauttaaksesi salasanan, mene seuraavaan osoitteeseen:';
+$lang['Unknown feed identifier'] = 'Tuntematon syötteen tunniste';
+$lang['Unknown identifier'] = 'Tuntematon tunniste';
+$lang['Update your rating'] = 'Päivitä arvostelut';
+$lang['useful when password forgotten'] = 'hyödyllinen jos unohdat salasanasi';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Käyttäjällä "%s" ei ole sähköpostiosoitetta, salasanan palautus ei ole mahdollista';
+$lang['Username "%s" on gallery %s'] = 'Käyttäjätunnus "%s" galleriassa %s';
+$lang['You are not authorized to access the requested page'] = 'Käyttöoikeutesi ei riitä sivun avaamiseen';
+$lang['You will receive a link to create a new password via email.'] = 'Saat sähköpostiisi ohjeet uuden salasanan luomiseksi.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Kommenttiasi EI ole kirjattu, koska se ei läpäissyt tarkistus sääntöjä';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Tunnusta "vieras" ei voida käyttää, käytetään oletustunnusta. Ilmoitathan ylläpitäjälle.';
+$lang['Kind of date'] = 'Päivän valinta';
+$lang['Number of items'] = 'Tiedostojen lukumäärä';
+$lang['Specials'] = 'Ekstrat';
+$lang['2small'] = 'XXS - pikkuinen';
+$lang['Date created, new &rarr; old'] = 'Luontipäivä, uusi &rarr; vanha';
+$lang['Date created, old &rarr; new'] = 'Luontipäivä, vanha &rarr; uusi';
+$lang['Date posted, new &rarr; old'] = 'Lähetyspäivä, uusi &rarr; vanha';
+$lang['Date posted, old &rarr; new'] = 'Lähetyspäivä, vanha &rarr; uusi';
+$lang['File name, A &rarr; Z'] = 'Tiedoston nimi, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Tiedoston nimi, Z &rarr; A';
+$lang['Manual sort order'] = 'Manuaalinen lajittelujärjestys';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numerotunniste, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numerotunniste, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Kuvan otsikko, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Kuvan otsikko, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Arvostelu, korkea &rarr; matala';
+$lang['Rating score, low &rarr; high'] = 'Arvostelu, matala &rarr; korkea';
+$lang['Visits, high &rarr; low'] = 'Käynnit, korkea &rarr; matala';
+$lang['Visits, low &rarr; high'] = 'Käynnit, matala &rarr; korkea';
+$lang['excluded'] = 'pois jätetty';
+$lang['xsmall'] = 'XS - extra pieni';
+$lang['%d rate'] = '%d määrä';
+$lang['Bad request'] = 'Väärä pyyntö';
+$lang['Forbidden'] = 'Ei sallittu';
+$lang['Page not found'] = 'Sivua ei löytynyt';
+$lang['Permalink for album not found'] = 'Permalinkkiä albumille ei löytynyt';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo aiheutti virheen jota ei voi korjata';
+$lang['Requested album does not exist'] = 'Pyydettyä albumia ei ole';
+$lang['Requested tag does not exist'] = 'Pyydettyä tagia ei ole';
+$lang['Email address is mandatory'] = 'Sähköpostiosoite on pakollinen';
+$lang['Username is mandatory'] = 'Käyttäjätunnus on pakollinen';
+$lang['mandatory'] = 'pakollinen';
+$lang['Your website URL is invalid'] = 'Sivustosi URL osoite on virheellinen';
+$lang['Website'] = 'Verkkosivusto';
+$lang['Email'] = 'Sähköposti';
+$lang['First Page'] = 'Ensimmäinen sivu';
+$lang['Go back to the album'] = 'Takaisin albumiin';
+$lang['Last Page'] = 'Viimeinen sivu';
+$lang['%d photos per page'] = '%d kuvaa sivua kohti';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Salasanan vahvistus puuttuu. Ole hyvä ja vahvista salasanasi.';
+$lang['Password is missing. Please enter the password.'] = 'Salasana puuttuu. ';
+?>
Index: /tags/2.6.0RC1/language/fi_FI/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Pääkäyttäjän konfiguroiminen';
+$lang['Basic configuration'] = 'Perusasetukset';
+$lang['Can\'t connect to server'] = 'Ei pysty yhdistämään palvelimeen';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Yhteys palvelimeen onnistui, mutta yhteys tietokantaan on mahdotonta.';
+$lang['Database configuration'] = 'Tietokannan konfiguroiminen';
+$lang['Database name'] = 'Tietokannan nimi';
+$lang['Database table prefix'] = 'Tietokannan taulun etuliite';
+$lang['Default gallery language'] = 'Gallerian oletuskieli';
+$lang['Host'] = 'Isäntäkone';
+$lang['Installation'] = 'Asennus';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Tullaan näyttämään vierailijoille. Olennainen sivuston hallintaa ajatellen';
+$lang['Start Install'] = 'Aloita asennus';
+$lang['User'] = 'Käyttäjä';
+$lang['also given by your host provider'] = 'myöskin palveluntarjoajan määrittelemä';
+$lang['localhost or other, supplied by your host provider'] = 'paikallinen isäntäkone';
+$lang['user login given by your host provider'] = 'käyttäjänimi, jonka palveluntarjoaja on määrittänyt';
+$lang['user password given by your host provider'] = 'käyttäjän salasana, jonka palveluntarjoaja on määrittänyt';
+$lang['Congratulations, Piwigo installation is completed'] = 'Onnittelut, Piwigon asennus on onnistunut';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Älä epäröi ottaa yhteyttä, kysy apua foorumiltamme: %s';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Näyttää että palveluntarjoajasi käyttää PHP %s.';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Tarvitsetko apua? Kysy asiasta <a href="%s">Piwigon keskustelupalstalla</a>';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Voit muokata asetuksia itse ja käynnistää Piwigon uudelleen tämän jälkeen.';
+$lang['PHP 5 is required'] = 'PHP 5 vaaditaan';
+$lang['Password ']['confirm'] = 'Salasana [hyväksy]';
+$lang['Try to configure PHP 5'] = 'Yritä määrittää PHP 5';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Vierailijat voivat ottaa yhteyttä sivuston ylläpitäjään tätä sähköpostiosoitetta käyttäen';
+$lang['Welcome to my photo gallery'] = 'Tervetuloa kuvagalleriaani';
+$lang['enter a login for webmaster'] = 'Lisää käyttäjätunnus ylläpitäjälle';
+$lang['please enter your password again'] = 'Salasana uudelleen';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Ylläpitäjän käyttäjätunnus ei voi sisältää \' tai " merkkejä';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Vaihtoehtoinen tapa on kopioida teksti ylläolevasta laatikosta ja liittää se tiedostoon "local/config/database.inc.php"(Varoitus: tiedoston database.inc.php tulee sisältää vain tekstiosuus, ei välejä eikä tyhjiä rivejä) ';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Konfigurointitiedoston local/config/database.inc.php luominen epäonnistui.';
+$lang['Download the config file'] = 'Lataa konfigurointitiedosto';
+$lang['Hope to see you back soon.'] = 'Toivottavasti näemme pian';
+$lang['Just another Piwigo gallery'] = 'Yksi Piwigo -galleria lisää';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Pidä salassa, se mahdollistaa pääsyn pääkäyttäjän paneeliin';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo voi yrittää vaihtaa konfiguraation PHP 5 :seen luomalla tai muuttamalla .htaccess -tiedostoa.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ei pystynyt konfiguroimaan PHP5 :sta.';
+$lang['Sorry!'] = 'Anteeksi!';
+$lang['Welcome to your new installation of Piwigo!'] = 'Tervetuloa uuteen Piwigo -asennukseesi!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Voit ladata konfiguraatiotiedoston ja siirtää sen asennuksesi local/config -hakemistoon. ';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Sinun tulee kääntyä hosting -palveluntarjoajasi puoleen ja kysyä kuinka voit vaihtaa PHP 5:seen itse.';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'se tulee tietokannan taulun nimen etuliitteeksi (mahdollistaa taulujen helpomman hallinnan)';
+$lang['verification'] = 'vahvistus';
+?>
Index: /tags/2.6.0RC1/language/fi_FI/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Finnish [FI]
Index: /tags/2.6.0RC1/language/fi_FI/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fi_FI/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fi_FI/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Kaikki yksityisten albumeiden ala-albumit ovat nyt yksityisiä';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Seuraavat pluginit ovat varotoimenpiteenä otettu pois käytöstä. Sinun tulee tarkistaa teeman päivitykset ennen kuin aktivoit ne uudelleen:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Seuraavat teemat ovat varotoimenpiteenä otettu pois käytöstä. Sinun tulee tarkistaa teeman päivitykset ennen kuin aktivoit ne uudelleen:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, before <b>?></b>, insert:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Vain admin voi ajaa päivityksen: ole hyvä ja kirjaudu alla.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Vain thumbnailien etuliite ja webmasterin sähköpostiosoite on tallennettu edellisestä konfiguraatiosta';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Aja huoltotarkistus [Administration>Tools>Maintenance] jos kohtaat ongelmia.';
+$lang['SQL queries'] = 'SQL-pyynnöt';
+$lang['Statistics'] = 'Statistiikka';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Tämä sivu ehdottaa Piwigo-tietokantasi päivitystä vanhasta versiosta uuteen. Päivitystyökalun mukaan ajat <strong>versiota %s</strong> (tai vastaavaa)';
+$lang['Upgrade from version %s to %s'] = 'Päivitys versiosta %s versioon %s';
+$lang['Upgrade informations'] = 'Päivitystiedot';
+$lang['Upgrade'] = 'Päivitys';
+$lang['User permissions and group permissions have been erased'] = 'Käyttäjien ja ryhmien oikeudet on tyhjennetty';
+$lang['You do not have access rights to run upgrade'] = 'Sinulla ei ole oikeutta ajaa päivitystä';
+$lang['total SQL time'] = 'Totaali SQL-aika';
+$lang['total upgrade time'] = 'Totaali päivitysaika';
+?>
Index: /tags/2.6.0RC1/language/fr_CA/about.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>Cette galerie photo est basée sur Piwigo.</p>
+
+<p>Piwigo est un logiciel de galerie photo pour le web, bâti par une
+communauté active d'utilisateurs et de développeurs. Les extensions rendent
+Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et
+gratuit.</p>
+
+<p id="linkToPiwigo"><a href="http://fr.piwigo.org">Visiter le site web de Piwigo</a></p>
+
+<p>La traduction québécoise est maintenu par (ordre alphabétique) :
+<ul>
+<li><a href="http://fr.piwigo.org/forum/profile.php?id=5557">TiOger</a></li>
+</ul>
+         .... Merci à lui</p> 
Index: /tags/2.6.0RC1/language/fr_CA/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/admin.lang.php	(revision 25596)
@@ -0,0 +1,964 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = "%d association";
+$lang['%d associations'] = "%d associations";
+$lang['%d album including'] = "%d catégorie dont";
+$lang['%d albums including'] = "%d catégories dont";
+$lang['%d physical'] = " %d physique";
+$lang['%d physicals'] = " %d physiques";
+$lang[' and %d virtual'] = " et %d virtuelle";
+$lang[' and %d virtuals'] = " et %d virtuelles";
+$lang['%d album moved'] = "%d catégorie déplacée";
+$lang['%d albums moved'] = "%d catégories déplacées";
+$lang['%d group'] = "%d groupe";
+$lang['%d groups'] = "%d groupes";
+$lang['%d member'] = "%d membre";
+$lang['%d members'] = "%d membres";
+$lang['%d tag'] = "%d mot clé";
+$lang['%d tags'] = "%d mots clés";
+$lang['%d user comment rejected'] = "%d commentaire d'utilisateur rejeté";
+$lang['%d user comments rejected'] = "%d commentaires d'utilisateurs rejetés";
+$lang['%d user comment validated'] = "%d commentaire d'utilisateur validé";
+$lang['%d user comments validated'] = "%d commentaires d'utilisateurs validés";
+$lang['%d user deleted'] = "%d utilisateur supprimé";
+$lang['%d users deleted'] = "%d utilisateurs supprimés";
+$lang['%d user'] = "%d utilisateur";
+$lang['%d users'] = "%d utilisateurs";
+$lang['%d waiting for validation'] = "%d en attente de validation";
+$lang['Actions'] = "Actions";
+$lang['Activate'] = "Activer";
+$lang['Add/delete a permalink'] = "Ajouter/effacer un lien permanent";
+$lang['Add a tag'] = "Ajouter un mot clé";
+$lang['Add a user'] = "Ajouter un utilisateur";
+$lang['Add group'] = "Ajouter un groupe";
+$lang['Add'] = "Ajouter";
+$lang['Allow user registration'] = "Permettre l'enregistrement des utilisateurs";
+$lang['Apply to sub-albums'] = "Appliquer aux sous-catégories";
+$lang['Associated'] = "Associée à";
+$lang['Caddie management'] = "Gestion du panier";
+$lang['Caddie'] = "Panier";
+$lang['Albums authorized thanks to group associations'] = "Catégories accessibles grâce à l'appartenance aux groupes";
+$lang['Album manual order was saved'] = "L'ordre manuel des catégories a été sauvegardé";
+$lang['Check for upgrade failed for unknown reasons.'] = "La vérification de la dernière version sur le serveur a échouée pour une raison inconnue.";
+$lang['Check for upgrade'] = "Dernière version ?";
+$lang['Comments for all'] = "Commentaires pour tous";
+$lang['Current name'] = "Nom courant";
+$lang['Database'] = "Base de données";
+$lang['Deactivate'] = "Désactiver";
+$lang['Delete Representant'] = "Supprimer le représentant";
+$lang['Delete selected tags'] = "Supprimer les mots clés sélectionnés";
+$lang['Delete selected users'] = "Supprimer les utilisateurs sélectionnés";
+$lang['Deletions'] = "Suppressions";
+$lang['Deny selected groups'] = "Interdire l'accès aux groupes sélectionnés";
+$lang['Deny selected users'] = "Interdire l'accès aux utilisateurs sélectionnés";
+$lang['Description'] = "Description";
+$lang['Display options'] = "Options d'affichage";
+$lang['Dissociated'] = "Dissociée de";
+$lang['Does not represent'] = "Ne représente pas";
+$lang['Edit selected tags'] = "Éditer les mots clés sélectionnés";
+$lang['Edit tags'] = "Éditer les mots clés";
+$lang['Email admins when a new user registers'] = "Notifier les administrateurs lors de l'inscription d'un utilisateur";
+$lang['Email admins when a valid comment is entered'] = "Notifier les administrateurs quand un commentaire est enregistré";
+$lang['Email admins when a comment requires validation'] = "Notifier les administrateurs quand un commentaire requiert leur validation";
+$lang['Environment'] = "Environnement";
+$lang['Form'] = "Formulaire";
+$lang['Gallery title'] = "Titre de la galerie";
+$lang['Grant selected groups'] = "Donner l'accès aux groupes sélectionnés";
+$lang['Grant selected users'] = "Donner l'accès aux utilisateurs sélectionnés";
+$lang['Group name'] = "Nom du groupe";
+$lang['Groups'] = "Groupes";
+$lang['Guests'] = "Invités";
+$lang['History'] = "Historique";
+$lang['Informations'] = "Informations";
+$lang['Install'] = "Installer";
+$lang['Link all album photos to a new album'] = "Associer tous les éléments de la catégorie à une nouvelle catégorie";
+$lang['Link all album photos to some existing albums'] = "Associer tous les éléments de la catégorie à des catégories existantes";
+$lang['Linked albums'] = "Catégories associées";
+$lang['Lock gallery'] = "Verrouiller la galerie";
+$lang['Maintenance'] = "Maintenance";
+$lang['Edit album permissions'] = "Gérer les permissions pour une catégorie";
+$lang['Manage permissions for group "%s"'] = "Gérer les permissions pour le groupe \"%s\"";
+$lang['Manage permissions for user "%s"'] = "Gérer les permissions pour l'utilisateur \"%s\"";
+$lang['Manage tags'] = "Gérer les mots clés";
+$lang['Members'] = "Membres";
+$lang['Metadata synchronized from file'] = "Méta-données synchronisées à partir du fichier";
+$lang['Move albums'] = "Déplacer les catégories";
+$lang['Move'] = "Déplacer";
+$lang['Name'] = "Nom";
+$lang['New name'] = "Nouveau nom";
+$lang['New parent album'] = "Nouvelle catégorie parente";
+$lang['New tag'] = "Nouveau mot clé";
+$lang['Number of comments per page'] = "Nombre de commentaires par page";
+$lang['Number of rates'] = "Nombre de notes";
+$lang['Number of thumbnails to create'] = "Nombre de miniatures à créer";
+$lang['Only private albums are listed'] = "Seules les catégories privées sont listées";
+$lang['Operating system'] = "Système d'exploitation";
+$lang['Options'] = "Options";
+$lang['Other private albums'] = "Autres catégories privées";
+$lang['Page banner'] = "Bannière des pages";
+$lang['Parent album'] = "Catégorie parente";
+$lang['Path'] = "Chemin";
+$lang['Permalink'] = "Lien permanent";
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = "Le lien permanent %s a été précédemment utilisé par la catégorie %s. Veuillez l'effacer de l'historique des liens permanents";
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "Le lien permanent ne doit contenir des caractères que parmi \"a-zA-Z0-9\", \"-\", \"_\" ou \"/\". Il ne doit pas être numérique ou commencer par un nombre suivi par \"-\"";
+$lang['Permalink %s is already used by album %s'] = "Le lien permanent %s est déja utilisé par la catégorie %s";
+$lang['Permalink history'] = "Historique des liens permanents";
+$lang['Permalinks'] = "Liens permanents";
+$lang['Permission denied'] = "Accès interdit";
+$lang['Permission granted thanks to a group'] = "Accès autorisé grâce à l'appartenance aux groupes";
+$lang['Permission granted'] = "Accès autorisé";
+$lang['Photo informations updated'] = "Informations de l'image mises à jour";
+$lang['Plugins'] = "Plugins";
+$lang['Position'] = "Position";
+$lang['Preferences'] = "Préférences";
+$lang['Properties'] = "Propriétés";
+$lang['Random photo'] = "Image au hasard";
+$lang['Rate date'] = "Date de notation";
+$lang['Rating by guests'] = "Notation par les invités";
+$lang['Rating'] = "Notation";
+$lang['Reject'] = "Rejeter";
+$lang['Representant'] = "Représentant";
+$lang['Representation of albums'] = "Représentation des catégories";
+$lang['Representative'] = "Représentant";
+$lang['Represents'] = "Représente";
+$lang['Save order'] = "Sauvegarder l'ordre";
+$lang['Save to permalink history'] = "Sauvegarder dans l'historique des liens permanents";
+$lang['Select at least one album'] = "Sélectionner au moins une catégorie";
+$lang['Select at least one photo'] = "Sélectionner au moins une image";
+$lang['Select at least one user'] = "Sélectionner au moins un utilisateur";
+$lang['Show info'] = "Montrer les informations";
+$lang['Site manager'] = "Gestionnaire des sites";
+$lang['Status'] = "Statut";
+$lang['Statistics'] = "Statistiques";
+$lang['Storage album'] = "Catégorie de stockage";
+$lang['Sum of rates'] = "Somme des notes";
+$lang['Tag "%s" already exists'] = "Le mot clé \"%s\" existe déjà";
+$lang['Tag "%s" was added'] = "Le mot clé \"%s\" a été ajouté";
+$lang['Tag selection'] = "Sélection de mots clés";
+$lang['The %d following tags were deleted'] = "Les %d mots clés suivants ont été supprimés";
+$lang['Unable to check for upgrade.'] = "Impossible de connaître la dernière version.";
+$lang['Uninstall'] = "Désinstaller";
+$lang['Use the default photo sort order (defined in the configuration file)'] = "Utiliser l'ordre de tri des images par défaut (défini dans le fichier de configuration)";
+$lang['User comments validation'] = "Validation des commentaires d'utilisateurs";
+$lang['Users'] = "Utilisateurs";
+$lang['Validate'] = "Valider";
+$lang['Validation'] = "Validation";
+$lang['Version'] = "Version";
+$lang['Virtual albums to move'] = "Catégories virtuelles à déplacer";
+$lang['Virtual album name'] = "Nom de la catégorie virtuelle";
+$lang['Webmaster cannot be deleted'] = "Le webmestre ne peut pas être supprimé";
+$lang['You are running on development sources, no check possible.'] = "Vous travaillez avec les sources de développement, impossible de vérifier la dernière version.";
+$lang['You cannot delete your account'] = "Vous ne pouvez pas supprimer votre compte";
+$lang['You cannot move an album in its own sub album'] = "Vous ne pouvez pas déplacer une catégorie dans sa propre sous-catégorie";
+$lang['You need to confirm deletion'] = "Vous devez confirmer la suppression";
+$lang['Associate to album'] = "Associer à la catégorie";
+$lang['associate to group'] = "Associer au groupe";
+$lang['Authorized'] = "Autorisés";
+$lang['Add a virtual album'] = "Ajouter une catégorie virtuelle";
+$lang['Authorize users to add comments on selected albums'] = "Autoriser les utilisateurs à ajouter des commentaires dans les catégories sélectionnées";
+$lang['The name of an album must not be empty'] = "Le nom de la catégorie ne doit pas être vide";
+$lang['Lock albums'] = "Verrouiller les catégories";
+$lang['Private'] = "Catégorie privée";
+$lang['Public'] = "Catégorie publique";
+$lang['Find a new representant by random'] = "Trouver un nouveau représentant au hasard";
+$lang['Public / Private'] = "Publique / Privée";
+$lang['Manage authorizations for selected albums'] = "Gérer le type d'accès pour les catégories sélectionnées";
+$lang['Virtual album added'] = "Catégorie virtuelle ajoutée";
+$lang['Virtual album deleted'] = "Catégorie virtuelle supprimée";
+$lang['Access type'] = "Type d'accès";
+$lang['Information data registered in database'] = "Informations enregistrées dans la base de données";
+$lang['Default display'] = "Affichage par défaut";
+$lang['The gallery URL is not valid.'] = "L'adresse de la galerie n'est pas valide.";
+$lang['The number of comments a page must be between 5 and 50 included.'] = "Le nombre de commentaires d'utilisateurs par page doit être compris entre 5 et 50.";
+$lang['Configuration'] = "Configuration";
+$lang['confirm'] = "Confirmer";
+$lang['Date'] = "Date";
+$lang['delete album'] = "supprimer la catégorie";
+$lang['Dissociate from album'] = "Dissocier de la catégorie";
+$lang['dissociate from group'] = "Dissocier du groupe";
+$lang['Album updated successfully'] = "Les informations de la catégorie ont été mises à jour avec succès.";
+$lang['photos per page'] = "Nombre d'éléments par page à afficher";
+$lang['High definition enabled'] = "Haute définition actif";
+$lang['File'] = "Fichier";
+$lang['first photo added on %s'] = "premier élément ajouté le %s";
+$lang['Forbidden'] = "Interdits";
+$lang['global mode'] = "Mode global";
+$lang['group "%s" added'] = "groupe \"%s\" ajouté";
+$lang['group "%s" deleted'] = "groupe \"%s\" supprimé";
+$lang['group "%s" updated'] = "groupe \"%s\" mis à jour";
+$lang['The name of a group must not contain " or \' or be empty.'] = "Le nom du groupe ne doit pas contenir \" ou ' et ne doit pas être vide.";
+$lang['This name is already used by another group.'] = "Ce nom est déjà utilisé par un autre groupe.";
+$lang['Groups'] = "Groupes";
+$lang['High definition'] = "Haute définition";
+$lang['jump to album'] = "Se rendre dans la catégorie";
+$lang['jump to photo'] = "Se rendre à l'image";
+$lang['leave'] = "laisser";
+$lang['Lock'] = "Verrouiller";
+$lang['Locked'] = "Verrouillées";
+$lang['manage album photos'] = "Gérer les éléments de la catégorie";
+$lang['manage sub-albums'] = "Gérer les sous-catégories";
+$lang['Manage'] = "Gérer";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = "Le temps d'exécution étant dépassé, le traitement doit continuer [Temps estimé: %d second].";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "Le temps d'exécution étant dépassé, le traitement doit continuer [Temps estimé: %d secondes].";
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = "Le temps de préparation de la liste des utilisateurs pour l'envoi est limité. Les autres utilisateurs ne sont pas listés.";
+$lang['Time to send mail is limited. Others mails are skipped.'] = "Le temps d'envoi des courriels est limité. Les autres envois de courriel ont été ignorés.";
+$lang['To send ?'] = "À envoyer ?";
+$lang['Last send'] = "Dernier envoi";
+$lang['User'] = "Utilisateur";
+$lang['See you soon,'] = "À bientôt,";
+$lang['Go to'] = "Rendez-vous sur";
+$lang['Hello'] = "Bonjour";
+$lang['New photos were added'] = "De nouveaux éléments ont été ajoutés";
+$lang['on'] = "le";
+$lang['between'] = "entre le";
+$lang['and'] = "et le";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "Vous venez d'être inscrit par le webmestre du site pour recevoir des notifications par courriel.";
+$lang['You have subscribed to receiving notifications by mail.'] = "Vous venez de vous inscrire pour recevoir des notifications par courriel.";
+$lang['To subscribe'] = "Pour vous inscrire";
+$lang['If you encounter problems or have any question, please send a message to'] = "En cas de problèmes ou de questions, envoyer un courriel à";
+$lang['[NBM] Problems or questions'] = "[NBM] Problèmes ou questions";
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "Vous venez d'être désinscrit par le webmestre du site pour ne plus recevoir la notification par courriel.";
+$lang['You have unsubscribed from receiving notifications by mail.'] = "Vous venez de vous désinscrire pour ne plus recevoir la notification par courriel.";
+$lang[', click on'] = ", cliquez sur";
+$lang['To unsubscribe'] = "Pour vous désinscrire";
+$lang['With blank value, gallery title will be used'] = "Si non renseigné, le titre de la galerie sera utilisé";
+$lang['Notification'] = "Notification";
+$lang['Error when sending email to %s [%s].'] = "Erreur lors de l'envoi du courriel à %s [%s].";
+$lang['Mail sent to %s [%s].'] = "Courriel envoyé à %s [%s].";
+$lang['%d mail was sent.'] = "%s courriel a été envoyé.";
+$lang['%d mails were sent.'] = "%s courriels ont été envoyés.";
+$lang['%d mail was not sent.'] = "%s courriel n'a pas été envoyé.";
+$lang['%d mails were not sent.'] = "%s courriels n'ont pas été envoyés.";
+$lang['No mail to send.'] = "Pas de courriel à envoyer.";
+$lang['There is no available subscribers to mail.'] = "Il n'y a pas d'utilisateur à notifier par courriel.";
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "Un utilisateur peut être notifié seulement si de nouveaux éléments sont disponibles pour cet utilisateur.";
+$lang['Anyway only webmasters can see this tab and never administrators.'] = "Seul le webmaster a accès à cet onglet, pas les administrateurs.";
+$lang['No user to send notifications by mail.'] = "Pas d'utilisateur pour envoyer des notifications par courriels.";
+$lang['New photos added'] = "Nouveaux éléments ajoutés";
+$lang['Subscribe to notification by mail'] = "Inscription à la notification par courriel";
+$lang['Unsubscribe from notification by mail'] = "Désinscription à la notification par courriel";
+$lang['Parameter'] = "Paramétrage";
+$lang['Operation in progress'] = "Traitement en cours.";
+$lang['Continue processing treatment'] = "Continuer le traitement en cours";
+$lang['Complementary mail content'] = "Contenu complémentaire du courriel";
+$lang['Add detailed content'] = "Ajout d'un contenu détaillé";
+$lang['Send mail as'] = "Envoyer le courriel en tant que";
+$lang['Send mail to users'] = "Envoie de courriel aux utilisateurs";
+$lang['Send'] = "Envoie";
+$lang['Options'] = "Options";
+$lang['Send'] = "Envoyer";
+$lang['Subscribed'] = "Inscrits";
+$lang['Subscribe'] = "S'inscrire";
+$lang['Parameters'] = "Paramètres";
+$lang['Select recipients'] = "Sélection des destinataires";
+$lang['Subscribe/unsubscribe users'] = "Inscrire/désinscrire les utilisateurs";
+$lang['Unsubscribed'] = "Non inscrits";
+$lang['%d parameter was updated.'] = "%d paramètre a été mis à jour.";
+$lang['%d parameters were updated.'] = "%d paramètres ont été mis à jour.";
+$lang['%d user was not updated.'] = "%d utilisateur n'a pas été mis à jour.";
+$lang['%d users were not updated.'] = "%d utilisateurs n'ont pas été mis à jour.";
+$lang['User %s [%s] was removed from the subscription list.'] = "L'utilisateur %s [%s] a été supprimé de la liste des inscrits.";
+$lang['User %s [%s] was added to the subscription list.'] = "L'utilisateur %s [%s] a été ajouté à la liste des inscrits.";
+$lang['%d user was updated.'] = "%d utilisateur a été mis à jour.";
+$lang['%d users were updated.'] = "%d utilisateurs ont été mis à jour.";
+$lang['User %s [%s] was not removed from the subscription list.'] = "L'utilisateur %s [%s] n'a pas été supprimé de la liste des inscrits.";
+$lang['User %s [%s] was not added to the subscription list.'] = "L'utilisateur %s [%s] n'a pas été ajouté à la liste des inscrits.";
+$lang['User %s [%s] added.'] = "Utilisateur %s [%s] ajouté.";
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = "Attention, l'inscription ou la désincription génère l'envoi de courriel aux utilisateurs concernés";
+$lang['Send mail on HTML format'] = "Envoyer le courriel au format HTML";
+$lang['Include display of recent photos grouped by dates'] = "Inclure l'affichage des dernières images groupées par dates";
+$lang['Available only with HTML format'] = "Disponible uniquement avec le format HTML";
+$lang['no write access'] = "Pas d'accès en écriture";
+$lang['Permissions'] = "Permissions";
+$lang['private'] = "privé";
+$lang['Properties'] = "Propriétés";
+$lang['public'] = "public";
+$lang['Purge never used notification feeds'] = "Purger les flux de notification jamais utilisés";
+$lang['Purge sessions'] = "Purger les sessions";
+$lang['randomly represented'] = "représentant au hasard";
+$lang['registration date'] = "date d'enregistrement";
+$lang['clean'] = "nettoyer";
+$lang['Create this site'] = "Créer ce site";
+$lang['test'] = "tester";
+$lang['test this remote site'] = "tester ce site distant";
+$lang['remove tags'] = "supprimer les tags";
+$lang['Repair and optimize database'] = "Réparer et optimiser la base de données";
+$lang['selection'] = "sélection";
+$lang['set to'] = "changer en";
+$lang['singly represented'] = "représentant fixe";
+$lang['This site already exists'] = "Ce site existe déjà";
+$lang['created'] = "créé";
+$lang['delete this site and all its attached elements'] = "supprimer ce site et toutes les informations associées";
+$lang['an error happened'] = "une erreur est survenue";
+$lang['Local'] = "Local";
+$lang['Remote'] = "Distant";
+$lang['update the database from files'] = "met à jour la base de données à partir des fichiers";
+$lang['status'] = "Statut";
+$lang['Directory'] = "Répertoire";
+$lang['sub-albums'] = "sous-catégories";
+$lang['Synchronize metadata'] = "Synchroniser les méta-données";
+$lang['target'] = "Cible";
+$lang['Title'] = "Titre";
+$lang['Album list management'] = "Gestion des catégories";
+$lang['Piwigo configuration'] = "Configuration de Piwigo";
+$lang['Edit album'] = "Modifier une catégorie";
+$lang['Group management'] = "Gestion des groupes";
+$lang['User list'] = "Liste des utilisateurs";
+$lang['Edit photo information'] = "Modifier les informations d'une image";
+$lang['Database synchronization with files'] = "Synchronisation de la base à partir des fichiers de";
+$lang['all'] = "Tout";
+$lang['height must be a number superior to'] = "la hauteur doit un entier supérieur à";
+$lang['width must be a number superior to'] = "la largeur doit être un entier supérieur à";
+$lang['for the file format'] = "pour le format de fichier";
+$lang['Photo unreachable or no support'] = "Image inaccessible ou format non supporté";
+$lang['GD version'] = "version de GD";
+$lang['General statistics'] = "Statistiques générales";
+$lang['average time'] = "temps moyen";
+$lang['number of miniaturized photos'] = "nombre de miniatures créées";
+$lang['total time'] = "temps total";
+$lang['for this file format'] = "pour ce format de fichier";
+$lang['unit mode'] = "Mode unitaire";
+$lang['Unlocked'] = "Déverrouillées";
+$lang['unset'] = "vider";
+$lang['Update albums informations'] = "Mettre à jour les informations des catégories";
+$lang['Update photos information'] = "Mettre à jour les informations des images";
+$lang['Synchronize'] = "Synchroniser";
+$lang['reduce to single existing albums'] = "Traiter uniquement une catégorie";
+$lang['Choose an option'] = "Choisir une option";
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = "Afficher un maximum d'informations (catégories ajoutées, éléments ajoutés, catégories et éléments supprimés)";
+$lang['Error list'] = "Liste des erreurs";
+$lang['Errors caption'] = "Légende des erreurs";
+$lang['Detailed informations'] = "Informations détaillées";
+$lang['File/directory read error'] = "Erreur d'ouverture fichier/répertoire";
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "Le fichier ou répertoire ne peut pas être accessible (soit il n'existe pas, soit l'accès est refusé)";
+$lang['albums deleted in the database'] = "catégories supprimées de la base de données";
+$lang['photos deleted from the database'] = "éléments supprimés de la base de données";
+$lang['photos candidates for metadata synchronization'] = "images candidates à la synchronisation avec les méta-données";
+$lang['photos informations synchronized with files metadata'] = "informations des images synchronisées avec les méta-données";
+$lang['errors during synchronization'] = "erreurs survenues durant la synchronisation";
+$lang['albums added in the database'] = "catégories ajoutées dans la base de données";
+$lang['photos added in the database'] = "éléments ajoutés dans la base de données";
+$lang['photos updated in the database'] = "éléments mis à jour dans la base de données";
+$lang['Search for new images in the directories'] = "Chercher les nouvelles images dans les répertoires";
+$lang['added'] = "ajouté";
+$lang['deleted'] = "supprimé";
+$lang['Metadata synchronization results'] = "Résultat de la synchronisation des méta-données";
+$lang['only perform a simulation (no change in database will be made)'] = "Simuler uniquement (aucun changement ne sera fait dans la base de données)";
+$lang['Simulation'] = "Simulation";
+$lang['directories + files'] = "Répertoires + fichiers";
+$lang['only directories'] = "Répertoires uniquement";
+$lang['synchronize files structure with database'] = "Synchroniser la structure des fichiers avec la base de données";
+$lang['synchronize files metadata with database photos informations'] = "Synchroniser les informations des éléments de la base de données à partir des méta-données des fichiers";
+$lang['even already synchronized photos'] = "Même les éléments déjà synchronisés";
+$lang['Used metadata'] = "Méta-données employées";
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "Le nom des répertoires et des fichiers ne doit être constitué que de lettres, de chiffres, de \"-\", \"_\" et \".\"";
+$lang['wrong filename'] = "nom de fichier erroné";
+$lang['Upload'] = "Ajout";
+$lang['user "%s" added'] = "utilisateur \"%s\" ajouté";
+$lang['User status'] = "Statut de l'utilisateur";
+$lang['user_status_admin'] = "Administrateur";
+$lang['user_status_generic'] = "Générique";
+$lang['user_status_guest'] = "Invité";
+$lang['user_status_normal'] = "Visiteur";
+$lang['user_status_webmaster'] = "Webmestre";
+$lang['Users'] = "Utilisateurs";
+$lang['Virtual album'] = "Catégorie virtuelle";
+$lang['Waiting'] = "En attente";
+$lang['default'] = "par défaut";
+$lang['Toggle \'default group\' property'] = "Inverser la propriété 'groupe par défaut'";
+$lang['Advanced features'] = "Fonctions avancées";
+$lang['Overall'] = "Vue globale";
+$lang['Year'] = "Année";
+$lang['Month'] = "Mois";
+$lang['Day'] = "Jour";
+$lang['Pages seen'] = "Pages vues";
+$lang['Time'] = "Heure";
+$lang['User'] = "Utilisateur";
+$lang['IP'] = "IP";
+$lang['Element'] = "Élément";
+$lang['Section'] = "Section";
+$lang['Properties'] = "Propriétés";
+$lang['An information email was sent to group "%s"'] = "Un courriel d'informations a été envoyé aux membres du groupe \"%s\"";
+$lang['Send an information email to group members'] = "Envoyer un courriel d'informations aux membres d'un groupe";
+$lang['Group'] = "Groupe";
+$lang['[%s] Visit album %s'] = "[%s] Venez visiter la catégorie %s";
+$lang['Hello,'] = "Bonjour,";
+$lang['See you soon.'] = "À bientôt.";
+$lang['Discover album:'] = "Venez découvrir la catégorie:";
+$lang['Mail content'] = "Contenu du courriel";
+$lang['none'] = "aucun";
+$lang['high'] = "élevé";
+$lang['other'] = "autre";
+$lang['Element type'] = "Type d'élément";
+$lang['User'] = "Utilisateur";
+$lang['Image id'] = "Identifiant image";
+$lang['Summary'] = "Résumé";
+$lang['%d line filtered'] = "%d ligne filtrée";
+$lang['%d lines filtered'] = "%d lignes filtrées";
+$lang['%d guest'] = "%d invité";
+$lang['%d guests'] = "%d invités";
+$lang['Hour'] = "Heure";
+$lang['guest'] = "invité";
+$lang['default values'] = "valeurs par défaut";
+$lang['Guest cannot be deleted'] = "L'invité ne peut pas être supprimé";
+$lang['Default user cannot be deleted'] = "L'utilisateur par défaut ne peut pas être supprimé";
+$lang['Purge history detail'] = "Purger le détail de l'historique";
+$lang['Purge history summary'] = "Purger le récapitulatif de l'historique";
+$lang['Check integrity'] = "Contrôle d'intégrité";
+$lang['Anomaly'] = "Anomalie";
+$lang['Correction'] = "Correction";
+$lang['Automatic correction'] = "Correction automatique";
+$lang['Impossible automatic correction'] = "Correction automatique impossible";
+$lang['Correction applied with success'] = "Correction appliquée avec succès";
+$lang['Correction applied with error'] = "Correction appliquée avec erreur";
+$lang['%d anomaly has been detected.'] = "%d anomalie a été détectée.";
+$lang['%d anomalies have been detected.'] = "%d anomalies ont été détectées.";
+$lang['%d anomaly has been corrected.'] = "%d anomalie a été corrigée.";
+$lang['%d anomalies have been detected corrected.'] = "%d anomalies ont été détectées et corrigées.";
+$lang['%d anomaly has not been corrected.'] = "%d anomalie n'a pu être corrigée.";
+$lang['%d anomalies have not been corrected.'] = "%d anomalies n'ont pu être corrigées.";
+$lang['Go to %s or %s for more informations'] = "Allez sur %s ou %s pour plus d'informations";
+$lang['the forum'] = "le forum";
+$lang['the wiki'] = "le wiki";
+$lang['%s value is not correct file because exif are not supported'] = "La valeur de %s est incorrecte parce que les exif ne sont pas supportés";
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s doit être mis à \"false\" dans votre fichier local/config/config.inc.php";
+$lang['Main "guest" user does not exist'] = "L'utilisateur \"invité\" principal n'existe plus";
+$lang['Main "guest" user status is incorrect'] = "Le statut de l'utilisateur \"invité\" principal est incorrect";
+$lang['Default user does not exist'] = "L'utilisateur par défaut n'existe pas";
+$lang['Main "webmaster" user does not exist'] = "L'utilisateur \"Webmestre\" principal n'existe pas";
+$lang['Main "webmaster" user status is incorrect'] = "Le statut de l'utilisateur \"Webmestre\" principal est incorrect";
+$lang['User "%s" created with "%s" like password'] = "Utilisateur \"%s\" créé avec le mot de passe \"%s\"";
+$lang['Status of user "%s" updated'] = "Statut de l'utilisateur \"%s\" mis à jour";
+$lang['add new photos to caddie'] = "Ajouter les nouveaux éléments au panier";
+$lang['No display'] = "Pas d'affichage";
+$lang['Classic display'] = "Affichage classique";
+$lang['Hoverbox display'] = "Affichage lors du survol";
+$lang['Mail address is obligatory for all users'] = "L'adresse courriel est obligatoire pour tous les utilisateurs";
+$lang['Minimum privacy level'] = "Niveau minimal de confidentialité";
+$lang['Privacy level'] = "Niveau de confidentialité";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = "Contacts";
+$lang['Level 2'] = "Amis";
+$lang['Level 4'] = "Famille";
+$lang['Level 8'] = "Admins";
+$lang['Reinitialize check integrity'] = "Réinitialiser les contrôles d'intégrité";
+$lang['Check all'] = "Tout cocher";
+$lang['Uncheck all'] = "Tout décocher";
+$lang['Check automatic corrections'] = "Cocher les corrections automatiques";
+$lang['Apply selected corrections'] = "Appliquer les corrections sélectionnées";
+$lang['Ignore selected anomalies'] = "Ignorer les anomalies sélectionnées";
+$lang['Refresh'] = "Rafraîchir";
+$lang['The anomaly will be ignored until next application version'] = "L'anomalie sera ignorée jusqu'à la prochaine version de l'application";
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = "L'anomalie ne sera plus ignorée du fait de sa correction";
+$lang['%d anomaly has been ignored.'] = "%d anomalie a été ignorée.";
+$lang['%d anomalies have been ignored.'] = "%d anomalies ont été ignorées.";
+$lang['Plugins which need upgrade'] = "Plugins à mettre à jour";
+$lang['Plugin list'] = "Liste des plugins";
+$lang['Check for updates'] = "Rechercher les mises à jour";
+$lang['Other plugins'] = "Autres plugins disponibles";
+$lang['Last revisions'] = "Dernières révisions";
+$lang['Are you sure you want to delete this plugin?'] = "Êtes-vous sûr de vouloir supprimer ce plugin?";
+$lang['Are you sure you want to install this plugin?'] = "Êtes-vous sûr de vouloir installer ce plugin?";
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "Êtes-vous sur de vouloir installer cette mise à jour? Vous devez vérifiez que cette mise à jour ne nécessite pas de désinstallation préalable.";
+$lang['Plugin has been successfully copied'] = "Le plugin a été copié avec succès.";
+$lang['You might go to plugin list to install and activate it.'] = "Rendez-vous dans la liste des plugins pour l'installer et l'activer.";
+$lang['Can\'t create temporary file.'] = "Impossible de créer un fichier temporaire.";
+$lang['Can\'t download archive.'] = "Impossible de télécharger l'archive.";
+$lang['Can\'t read or extract archive.'] = "Impossible de lire ou d'extraire l'archive.";
+$lang['An error occured during extraction (%s).'] = "Une erreur est survenue pendant l'extraction des fichiers (%s).";
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "Vérifiez les permissions du dossier \"plugins\" et de ses sous-dossiers (CHMOD).";
+$lang['Can\'t connect to server.'] = "Impossible de se connecter au serveur.";
+$lang['Purge compiled templates'] = "Purger les templates compilés";
+$lang['Upload'] = "Ajout";
+$lang['ACCESS_0'] = "Accès libre";
+$lang['ACCESS_1'] = "Accès à tous";
+$lang['ACCESS_2'] = "Accès aux utilisateurs inscrits";
+$lang['ACCESS_3'] = "Accès aux administrateurs";
+$lang['ACCESS_4'] = "Accès aux webmestres";
+$lang['ACCESS_5'] = "Pas d'accès";
+$lang['Support'] = "Support";
+$lang['Documentation'] = "Documentation";
+$lang['A new version of Piwigo is available.'] = "Une nouvelle version de Piwigo est disponible.";
+$lang['Piwigo Administration'] = "Administration de Piwigo";
+$lang['Piwigo version'] = "Version de Piwigo";
+$lang['You are running the latest version of Piwigo.'] = "Vous utilisez la dernière version de Piwigo.";
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "La version de %s [%s] installée est incompatible avec la version requise [%s]";
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "Vous devez mettre à jour votre système pour profiter pleinement de l'application, sinon l'application ne fonctionnera pas correctement, voire pas du tout";
+$lang['Deleted on'] = "Supprimés sur";
+$lang['Last hit'] = "dernier score";
+$lang['GD library is missing'] = "la bibliothèque GD est manquante";
+$lang['Templates'] = "Templates (modèles)";
+$lang['Extend for templates'] = "Étendre les templates";
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "Remplacement des templates d'origine par vos templates personnalisés issus du dossier template-extension";
+$lang['Replacers (customized templates)'] = "Remplaçants (templates modifiés)";
+$lang['Original templates'] = "Templates d'origine";
+$lang['Optional URL keyword'] = "Paramètre facultatif de l'URL";
+$lang['Templates configuration has been recorded.'] = "La configuration des templates a été enregistrée.";
+$lang['All optimizations have been successfully completed.'] = "Toutes les optimisations ont été réalisées avec succès.";
+$lang['Optimizations have been completed with some errors.'] = "Les optimisations réalisées comportent certaines erreurs.";
+$lang['Modify information'] = "Modifier les informations";
+$lang['nothing'] = "Rien";
+$lang['overrides existing values with empty ones'] = "Écraser les données existantes avec des données vides";
+$lang['Manage photo ranks'] = "Gérer l'ordre des images";
+$lang['Edit ranks'] = "Modifier l'ordre";
+$lang['No photo in this album'] = "Aucun élément dans cette catégorie";
+$lang['Images manual order was saved'] = "L'ordre manuel des images a été sauvegardé";
+$lang['ranks'] = "rangs";
+$lang['By rank'] = "Par le rang";
+$lang['Manual order'] = 'Ordre manuel';
+$lang['Drag to re-order'] = "Cliquer-glisser pour ré-organiser";
+$lang['Quick Local Synchronization'] = "Synchronisation rapide";
+$lang['No photo can be deleted'] = "Aucune photo ne peut être supprimée";
+$lang['Delete selected photos'] = "Supprimer les photos sélectionnées";
+$lang['%d photo was deleted'] = "%d photo a été supprimée";
+$lang['%d photos were deleted'] = "%d photos ont été supprimées";
+$lang['Downloads'] = "Téléchargements";
+$lang['Released on'] = "Publié le";
+$lang['Number of downloads'] = "Nombre de téléchargements";
+$lang['Piwigo Announcements Newsletter'] = "Newsletter Piwigo";
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = "Gardez le contact avec le projet Piwigo, abonnez-vous à la newsletter. Vous recevrez un ecourriel lorsqu'une nouvelle version est disponible (parfois un bug de sécurité est corrigé, il est important de le savoir et de mettre à jour) ou qu'un événement majeur survient sur le projet. Quelques messages par an seulement.";
+$lang['Subscribe %s'] = "Abonner %s";
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "Abonner %s à la newsletter Piwigo";
+$lang['Purge search history'] = "Purger l'historique des recherches";
+$lang['Hide'] = "Masquer";
+$lang['Password is missing. Please enter the password.'] = "Le mot de passe manque. Veuillez saisir le mot de passe.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "La confirmation du mot de passe manque. Veuillez confirmer le mot de passe choisi.";
+$lang['Allow users to edit their own comments'] = "Autoriser les utilisateurs à modifier leurs propres commentaires";
+$lang['Allow users to delete their own comments'] = "Autoriser les utilisateurs à supprimer leurs propres commentaires";
+$lang['Email administrators when a comment is modified'] = "Notifier les administrateurs quand un commentaire est modifié";
+$lang['Email administrators when a comment is deleted'] = "Notifier les administrateurs quand un commentaire est supprimé";
+$lang['Cannot delete the old permalink !'] = "Impossible de supprimer cet ancien lien permanent !";
+$lang['Hit'] = "Pointage";
+$lang['Tools'] = "Outils";
+$lang['Photos'] = "Photos";
+$lang['Themes'] = "Thèmes";
+$lang['Instructions to use Piwigo'] = "Instructions pour utiliser Piwigo";
+$lang['Installed Themes'] = "Thèmes installés";
+$lang['Add New Theme'] = "Ajouter un thème";
+$lang['Forbid this theme to users'] = "Interdire ce thème aux utilisateurs";
+$lang['Set as default theme for unregistered and new users'] = "Thème par défaut pour les invités et les nouveaux utilisateurs";
+$lang['unknown'] = 'inconnu';
+$lang['Upload Photos'] = 'Ajoutez des photos';
+$lang['Drop into album'] = 'Mettre dans une catégorie';
+$lang['+ Add an upload box'] = '+ Ajouter une autre boîte de transfert';
+$lang['Upload'] = 'Transférer';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Créez le répertoire "%s" à la racine de votre installation Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Donnez les droits en écriture (chmod 777) sur le répertoire "%s" à la racine de votre installation Piwigo';
+$lang['existing album'] = 'catégorie existante';
+$lang['create a new album'] = 'créer une nouvelle catégorie';
+$lang['Album name'] = 'Nom de la catégorie';
+$lang['Album "%s" has been added'] = 'La catégorie "%s" a été ajoutée';
+$lang['Uploaded Photos'] = 'Photos ajoutées ';
+$lang['%d photos uploaded'] = '%d photos ajoutées';
+$lang['Privacy level set to "%s"'] = 'Niveau de confidentialité "%s"';
+$lang['Album "%s" now contains %d photos'] = 'La catégorie "%s" contient désormais %d photos';
+$lang['Manage this set of %d photos'] = 'Gérer ce lot de %d photos';
+$lang['Select files'] = 'Choisir des fichiers';
+$lang['Everybody'] = 'Tout le monde';
+$lang['Who can see these photos?'] = 'Qui peut voir ces photos ?';
+$lang['Who can see this photo?'] = 'Qui peut voir cette photo ?';
+$lang['Settings'] = 'Configuration';
+$lang['Resize'] = 'Redimensionner';
+$lang['Maximum width'] = 'Largeur maximum';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height'] = 'Hauteur maximum';
+$lang['Image Quality'] = 'Qualité d\'image';
+$lang['Thumbnail'] = 'Miniature';
+$lang['Save Settings'] = 'Enregistrer les paramètres';
+$lang['Your configuration settings are saved'] = 'Vos paramètres de configurations sont enregistrés';
+$lang['Active Themes'] = 'Thèmes activés';
+$lang['Add write access to the "%s" directory'] = 'Ajoutez l\'accès en écriture pour le répertoire "%s"';
+$lang['Administration Home'] = 'Accueil administration';
+$lang['Change Admin Colors'] = 'Modifier les couleurs de l\'administration';
+$lang['Delete this theme'] = 'Supprimer ce thème';
+$lang['Directory does not exist'] = 'Le répertoire n\'existe pas';
+$lang['Download,'] = 'Téléchargez,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronisation';
+$lang['Get Support on Piwigo Forum'] = 'Obtenir de l\'aide sur le forum Piwigo';
+$lang['Help Me'] = 'À l\'aide';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'L\'activation de ce thème est impossible, car le thème parent est manquant : %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ce thème ne peut être supprimé, car d\'autres thème dépendent de lui : %s';
+$lang['Inactive Themes'] = 'Thèmes désactivés';
+$lang['Install on your computer,'] = 'Installez sur votre ordinateur,';
+$lang['Make this theme available to users'] = 'Rendre ce thème disponible aux utilisateurs';
+$lang['Page end'] = 'Fin de la page';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Operation in progress'] = 'Traitement en cours.';
+$lang['Please wait...'] = 'Veuillez patienter ...';
+$lang['Read Piwigo Documentation'] = 'Lire la documentation Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Démarrez pLoader et ajoutez vos photos.';
+$lang['Switch to clear or dark colors for administration'] = 'Choisir des couleurs claires ou sombres pour l\'administration';
+$lang['Theme has been successfully installed'] = 'Le thème a été installé avec succès';
+$lang['Visit Gallery'] = 'Visiter la galerie';
+$lang['Visit Piwigo project website'] = 'Visiter le site web du projet Piwigo';
+$lang['Guest Settings'] = 'Paramètres visiteur';
+$lang['Main Page'] = 'Page principale';
+$lang['Photo Page'] = 'Page de la photo';
+$lang['Activate Navigation Bar'] = 'Activer la barre de navigation';
+$lang['Activate Navigation Thumbnails'] = 'Activer les miniatures de navigation';
+$lang['Activate icon "%s"'] = 'Activer l\'icône "%s"';
+$lang['Photo Properties'] = 'Propriétés de la photo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifie <em>Piwigo Uploader</em>. Depuis votre ordinateur, pLoader prépare vos photos et les transfert vers votre galerie photo Piwigo.';
+$lang['Languages'] = 'Langues';
+$lang['Installed Languages'] = 'Langues installées';
+$lang['Add New Language'] = 'Ajouter une langue';
+$lang['Language has been successfully installed'] = 'La langue a été installée avec succès';
+$lang['Allow user customization'] = "Permettre la personnalisation de l'affichage";
+$lang['Select:'] = 'Sélectionner :';
+$lang['None'] = 'Rien';
+$lang['Invert'] = 'Inverser';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible de désactiver ce thème, il doit rester au moins un thème activé.';
+$lang['Webmaster status is required.'] = 'Vous devez avoir le status de "webmaster".';
+$lang['Bound Theme'] = 'Thème rattaché';
+$lang['Allow rating'] = "Permettre les notations";
+$lang['Select at least one comment'] = 'Sélectionnez au moins un commentaire';
+$lang['Active Plugins'] = 'Plugins activés';
+$lang['Inactive Plugins'] = 'Plugins désactivés';
+$lang['Missing Plugins'] = 'Plugins manquants';
+$lang['Uninstalled Plugins'] = 'Plugins non installés';
+$lang['By %s'] = 'Par %s';
+$lang['Visit plugin site'] = 'Visitez le site du plugin';
+$lang['Active Languages'] = 'Langues activées';
+$lang['Delete this language'] = 'Supprimer cette langue';
+$lang['Forbid this language to users'] = 'Interdire cette langue aux utilisateurs';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible de désactiver cette langue, commencez par définir une autre langue par défaut.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible de désactiver cette langue, il doit rester au moins une langue.';
+$lang['Inactive Languages'] = 'Langues désactivées';
+$lang['Make this language available to users'] = 'Rendre cette langue disponible aux utilisateurs';
+$lang['Set as default language for unregistered and new users'] = 'Langue par défaut pour les invités et les nouveaux utilisateurs';
+$lang['Add Photos'] = 'Ajouter des photos';
+$lang['Miscellaneous'] = 'Divers';
+$lang['The following tag was deleted'] = 'Le mot clé suivant a été supprimé';
+$lang['Virtual Links'] = 'Liens virtuels';
+$lang['There is no other language available.'] = 'Il n\'y a pas d\'autre langue disponible.';
+$lang['There is no other plugin available.'] = 'Il n\'y a pas d\'autre plugin disponible.';
+$lang['There is no other theme available.'] = 'Il n\'y a pas d\'autre thème disponible.';
+$lang['delete'] = 'effacer';
+$lang['Add another set of photos'] = 'Ajouter d\'autres photos';
+$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre des éléments du menu a été mis à jour avec succès.';
+$lang['This theme was not designed to be directly activated'] = 'Ce thème n\'est pas conçu pour être activé directement';
+$lang['Pending Comments'] = 'Commentaires en attente';
+$lang['Menu Management'] = 'Menus';
+$lang['%d of %d photos selected'] = '%d photos sur %d sont sélectionnées';
+$lang['Action'] = 'Action';
+$lang['Add a filter'] = 'Ajouter un filtre';
+$lang['Album photos associated to the following albums: %s'] = 'Les photos de l\'album ont été associées aux albums suivants : %s';
+$lang['Albums automatically sorted'] = 'Les albums ont été triés automatiquement';
+$lang['All %d photos are selected'] = 'Toutes les %d photos du lot sont sélectionnées';
+$lang['Apply action'] = 'Appliquer l\'action';
+$lang['automatic order'] = 'ordre automatique';
+$lang['Batch Manager'] = 'Gestion par lot';
+$lang['Choose an action'] = 'Choisir une action';
+$lang['Delete orphan tags'] = 'Supprimer les mots clés orphelins';
+$lang['delete photo'] = 'supprimer la photo';
+$lang['Duplicates'] = 'Doublons';
+$lang['Error on file "%s" : %s'] = 'Erreur sur le fichier "%s" : %s';
+$lang['Exif extension not available, admin should disable exif use'] = 'L\'extension Exif n\'est pas disponible, un administrateur devrait désactiver l\'utilisation des métadonnées Exif';
+$lang['Failed to write file to disk'] = 'Échec à l\'écriture du fichier sur le serveur';
+$lang['File upload stopped by extension'] = 'Le transfert du fichier a été arrêté par une extension';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Dans votre fichier php.ini, la variable upload_max_filesize (%sB) est plus grande que post_max_size (%sB), vous devriez modifier ce paramètre';
+$lang['include child albums'] = 'inclure les sous-albums';
+$lang['manual order'] = 'ordre manuel';
+$lang['Missing a temporary folder'] = 'Impossible de trouver le répertoire temporaire';
+$lang['No file was uploaded'] = 'Aucun fichier n\'a été transféré';
+$lang['No photo in the current set.'] = 'Aucune photo dans le lot.';
+$lang['No photo selected, %d photos in current set'] = 'Aucune photo sélectionnée parmi les %d photos du lot';
+$lang['No photo selected, no action possible.'] = 'Aucune photo sélectionnée, aucune action possible.';
+$lang['on the %d selected photos'] = 'sur les %d photos sélectionnées';
+$lang['Orphan tags deleted'] = 'Mots clés orphelins supprimés';
+$lang['Refresh photo set'] = 'Rafraîchir le lot de photos';
+$lang['Remove all filters'] = 'Supprimer tous les filtres';
+$lang['remove author'] = 'supprimer l\'auteur';
+$lang['remove creation date'] = 'supprimer la date de création';
+$lang['Remove from caddie'] = 'Retirer du panier';
+$lang['remove this filter'] = 'supprimer ce filtre';
+$lang['remove title'] = 'supprimer le titre';
+$lang['Selection'] = 'Sélection';
+$lang['Set author'] = 'Définir l\'auteur';
+$lang['Set creation date'] = 'Définir la date de création';
+$lang['Set title'] = 'Définir le titre';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Le poids du fichier transféré dépasse la valeur de MAX_FILE_SIZE définie dans le formulaire HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Le poids du fichier transféré dépasse la valeur de upload_max_filesize définie dans votre fichier php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Le fichier n\'a été que partiellement transféré';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Le poids total des fichiers transférés dépasse la valeur de post_max_size dans votre fichier php.ini: %sB';
+$lang['The whole page'] = 'Toute la page';
+$lang['The whole set'] = 'Tout le lot';
+$lang['Type here the author name'] = 'Entrez ici le nom de l\'auteur';
+$lang['Type here the title'] = 'Entrez ici le titre';
+$lang['Unknown upload error'] = 'Erreur inconnue survenue lors du transfert';
+$lang['Week starts on'] = 'La semaine commence le';
+$lang['You have %d orphan tags: %s.'] = 'Vous avez %d mots clés orphelins: %s.';
+$lang['Themes which need upgrade'] = 'Thèmes à mettre à jour';
+$lang['Languages which need upgrade'] = 'Langues à mettre à jour';
+$lang['All themes are up to date.'] = 'Tous les thèmes sont à jour.';
+$lang['All plugins are up to date.'] = 'Tous les greffons sont à jour.';
+$lang['All languages are up to date.'] = 'Toutes les langues sont à jour.';
+$lang['Visit theme site'] = 'Visitez le site du thème';
+$lang['Visit language site'] = 'Visitez le site de la langue';
+$lang['New Version'] = 'Nouvelle version';
+$lang['Obsolete Plugins'] = 'Greffons périmés';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENTION! Ce greffon n\'a pas l\'air d\'être compatible avec votre version de Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Voulez-vous l\'activer quand même?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'CE GREFFON FAIT DÉSORMAIS PARTIE DU CŒUR DE PIWIGO! SUPPRIMEZ-LE.';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERREUR: CE GREFFON EST MANQUANT MAIS TOUJOURS INSTALLÉ! DÉSINSTALLEZ-LE.';
+$lang['display'] = 'Afficher';
+$lang['Restore'] = "Restaurer";
+$lang['Restore default configuration. You will lose your plugin settings!'] = "Restaurer la configuration par défaut? Vous perdrez vos réglages personnels !";
+$lang['Show menubar'] = "Afficher le menu";
+$lang['Learn more'] = 'En savoir plus';
+$lang['Rate'] = 'Note';
+$lang['Average rate'] = 'Note moyenne';
+$lang['Activate icon "new" next to albums and pictures'] = 'Afficher l\'icône "nouveau" à côté des albums et des photos';
+$lang['Add a criteria'] = 'Ajouter un critère';
+$lang['Deactivate all'] = 'Désactiver tout';
+$lang['Default photos order'] = 'Ordre par défaut des photos';
+$lang['new'] = 'nouveau';
+$lang['No results'] = 'Pas de résultat';
+$lang['Searching...'] = 'Recherche...';
+$lang['Type in a search term'] = 'Entrez un terme de recherche';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Vous ne pouvez définir l\'ordre par défaut des photos car vous avez un paramètre personnalisé dans votre configuration locale.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Vous avez spécifié <i>$conf[\'order_by\']</i> dans votre fichier de configuration, ce paramètre est obsolète, veuillez le supprimer ou le renommer en <i>$conf[\'order_by_custom\']</i> !';
+$lang['Thumbnails generation in progress...'] = 'Génération des miniatures en cours...';
+$lang['Photos generation in progress...'] = 'Génération des photos en cours...';
+$lang['%s photos have been regenerated'] = '%s photos ont été régénérées';
+$lang['%s photos can not be regenerated'] = '%s photos ne peuvent pas être régénérées';
+$lang['Updates'] = 'Mises à jour';
+$lang['Update in progress... Please wait.'] = 'Mise à jour en cours... Veuillez patienter.';
+$lang['Ignore this update'] = 'Ignorer cette mise à jour';
+$lang['Reset ignored updates'] = 'Réinitialiser les mises à jour ignorées';
+$lang['Update All'] = 'Tout mettre à jour';
+$lang['ERROR'] = 'ERREUR';
+$lang['Update Complete'] = 'Mise à jour effectuée';
+$lang['Piwigo Update'] = 'Mise à jour de Piwigo';
+$lang['Extensions Update'] = 'Mise à jour des extensions';
+$lang['All extensions are up to date.'] = 'Toutes les extensions sont à jour.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Les greffons suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Les thèmes suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:';
+$lang['I decide to update anyway'] = 'Je décide de migrer quand même';
+$lang['Update to Piwigo %s'] = 'Mettre à jour vers Piwigo %s';
+$lang['Two updates are available'] = 'Deux mises à jour sont disponibles';
+$lang['This is a minor update, with only bug corrections.'] = 'Ceci est une mise à jour mineure, avec uniquement des corrections de bugs.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Ceci est une mise à jour majeure, qui contient <a href="%s">un tas de nouveautés</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Certains thèmes ou greffons ne sont peut-être pas encore disponibles.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vous pouvez mettre à jour vers Piwigo %s directement, sans passer par Piwigo %s (recommandé).';
+$lang['Save Template Directory'] = 'Sauvegarder le dossier template';
+$lang['Dump Database'] = 'Sauvegarder la base de données';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclure les données de l\'historique (Attention: risque de dépassement de la limite mémoire du serveur)';
+$lang['Unable to dump database.'] = 'Impossible de sauvegarder la base de données.';
+$lang['Some upgrades are available for extensions.'] = 'Des mises à jour sont disponibles pour les extensions.';
+$lang['Ignore All'] = 'Tout ignorer';
+$lang['Crop'] = 'Retailler';
+$lang['Width'] = 'Largeur';
+$lang['Height'] = 'Hauteur';
+$lang['Follow Orientation'] = 'Respecter l\'orientation';
+$lang['Graphics Library'] = 'Bibliothèque graphique';
+$lang['... or '] = '... ou bien ';
+$lang['Create'] = 'Créer';
+$lang['Start Upload'] = 'Démarrer le transfert';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Vous utilisez le formulaire Flash. Des problèmes ? Essayez le <a href="%s">formulaire HTML</a> à la place.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Vous utilisez le formulaire HTML. Essayez le <a href="%s">formulaire Flash</a> à la place.';
+$lang['Maximum file size: %sB.'] = 'Poids maximum des fichiers : %sB.';
+$lang['Allowed file types: %s.'] = 'Types de fichiers autorisés : %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Résolution maximum approximative : %dM pixels (soit %dx%d pixels).';
+$lang['Manage Permissions'] = 'Gérer les permissions';
+$lang['Photo %s of %s'] = 'Photo %s sur %s';
+$lang['show details'] = 'montrer les détails';
+$lang['hide details'] = 'cacher les détails';
+$lang['Merge tags'] = 'Fusionner les mots clés';
+$lang['Select the destination tag'] = 'Sélectionnez le mot clé de destination';
+$lang['(this tag will be deleted)'] = '(ce mot clé sera supprimé)';
+$lang['Confirm merge'] = 'Confirmez la fusion';
+$lang['Merge selected tags'] = 'Fusionner les mots clés sélectionnés';
+$lang['No destination tag selected'] = 'Vous n\'avez pas sélectionné de mot clé de destination';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Les mots clés <em>%s</em> ont été fusionnés dans le mot clé <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Sélectionnez au moins deux mots clés pour la fusion';
+$lang['Select an album'] = 'Selectionnez un album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Par défaut, Piwigo créera la nouvelle taille web à partir de la HD (haute définition).';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si la HD n\'est pas disponible et que la version actuelle de la taille web est plus grande que les dimensions ci-dessous, alors Piwigo la considérera comme HD et créera la nouvelle taille web à partir de celle-ci.';
+$lang['An error has occured during upgrade.'] = 'Une erreur est survenue pendant la mise à jour.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Impossible d\'extraire les fichiers. Veuillez vérifier les permissions des fichiers de votre installation.<br><a href="%s">Cliquez ici pour voir le rapport d\'erreur</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne peut pas récupérer le fichier de mise à jour depuis le serveur';
+$lang['Send connection settings by email'] = 'Envoyer les identifiants par email';
+$lang['Activate comments'] = 'Activer les commentaires';
+$lang['Default comments order'] = 'Ordre par défaut des commentaires';
+$lang['%s has been successfully updated.'] = '%s a été mis à jour avec succès.';
+$lang['Add tags'] = 'Ajouter les mots clés';
+$lang['Add to caddie'] = 'Ajouter au panier';
+$lang['Last import'] = 'Dernière importation';
+$lang['Photo name'] = 'Nom de la photo';
+$lang['Predefined filter'] = 'Filtre prédéfini';
+$lang['The original image quality must be a number between %d and %d'] = 'La qualité d\'image pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'La hauteur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'La largeur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['With no album'] = 'Sans album';
+$lang['With no tag'] = 'Sans mot clé';
+$lang['With no virtual album'] = 'Sans album virtuel';
+$lang['Zoom'] = 'Zoom';
+$lang['Resize after upload'] = 'Redimensionner après transfert';
+$lang['Original Size'] = 'Taille originale';
+$lang['A locked gallery is only visible to administrators'] = 'Une galerie verrouillée n\'est visible que par les administrateurs';
+$lang['Unlock gallery'] = 'Déverouiller la galerie';
+$lang['Gallery unlocked'] = 'Galerie déverouillée';
+$lang['Notify administrators when a comment is'] = 'Notifier les administrateurs lorsqu\'un commentaire est';
+$lang['modified'] = 'modifié';
+$lang['pending validation'] = 'en attente de validation';
+$lang['Save visits in history for'] = 'Sauvegarder les visites dans l\'historique ';
+$lang['simple visitors'] = 'simple visiteurs';
+$lang['registered users'] = 'utilisateurs enregistrés';
+$lang['administrators'] = 'administrateurs';
+$lang['This album contains %d photos, added on %s.'] = 'Cet album contient %d photos, ajoutées le %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Cet album contient %d photos, ajoutées entre le %s et le %s.';
+$lang['This album contains no photo.'] = 'Cet album ne contient pas de photo.';
+$lang['Not cropped correctly?'] = 'La photo n\'est pas recadrée correctement ?';
+$lang['Center of interest'] = 'Centre d\'interêt';
+$lang['Move to album'] = 'Déplacer vers l\'album';
+$lang['You can activate only one mobile theme.'] = 'Vous ne pouvez activer qu\'un seul thème mobile.';
+$lang['Automatic sort order'] = 'Ordre de tri automatique';
+$lang['apply automatic sort order'] = 'appliquer un ordre de tri automatique';
+$lang['Save manual order'] = 'Sauvegarder l\'ordre manuel';
+$lang['cancel manual order'] = 'annuler l\'ordre manuel';
+$lang['Cancel'] = 'Annuler';
+$lang['List'] = 'Liste';
+$lang['Web Form'] = 'Formulaire web';
+$lang['Applications'] = 'Applications';
+$lang['Available versions for'] = 'Versions disponibles pour';
+$lang['Available on'] = 'Disponible sur';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pour iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'application <em>Piwigo pour iOS</em> vous permet de connecter votre iPhone, iPad ou iPod Touch à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.';
+$lang['Piwigo for Android'] = 'Piwigo pour Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'application <em>Piwigo pour Android</em> vous permet de connecter votre smartphone ou votre tablette Android à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publication Piwigo pour Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom est un logiciel de photographie conçu pour gérer d\'importantes collections de photos numériques et les post-traiter.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Le plugin de publication Piwigo pour Lightroom vous permet d\'exporter et synchroniser vos photos de Lightroom vers votre galerie Piwigo.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Greffon de publication Piwigo pour Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell est un gestionnaire de photos opensource pour Linux. Il a été sélectionné comme gestionnaire par défaut sur Ubuntu et Fedora.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Sur votre Linux, installez simplement Shotwell avec votre gestionnaire de paquet et activez l\'option de publication Piwigo.';
+$lang['Piwigo publish plugin for digiKam'] = 'Greffon de publication Piwigo pour digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam est un logiciel libre de gestion avancée de photos numériques pour Linux, Windows et MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam est conçu pour les photographes qui souhaitent visualiser, gérer, éditer, améliorer, organiser, tagger et partager leurs photos.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pour exporter vos photos de digiKam vers Piwigo, installez simplement digiKam et les kipi-plugins.';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin d\'export Piwigo export pour iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto est le gestionnaire de photos disponible par défaut sur MacOSX. Le plugin d\'export Piwigo se connecter à votre galerie Piwigo et vous permet de créer des albums et d\'y ajouter vos photos.';
+$lang['Piwigo export plugin for Aperture'] = 'Greffon d\'exportation Piwigo pour Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture est un outil puissant pour post-traiter vos photos et gérer votre photothèque sur Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture est conçu pour les photographes professionnels avec la simplicité d\'iPhoto.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Le greffon d\'exportation Piwigo vous permet de créer des albums et d\'y ajouter vos photos.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery Android) est un client libre (GPL v3) pour Piwigo sur Android.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Ses fonctionnalités incluent la navigation sur la galerie, la création d\'albums et l\'ajout de photos.';
+$lang['Generate multiple size images'] = 'Générer les tailles multiples des photos';
+$lang['Delete multiple size images'] = 'Supprimer les tailles multiples des photos';
+$lang['any visitor can see this album'] = 'n\'importe quel visiteur peut voir cet album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'les visiteurs doivent se connecter et avoir les permissions nécessaires pour voir cet album';
+$lang['Groups and users'] = 'Groupes et utilisateurs';
+$lang['Permission granted for groups'] = 'Permission accordée pour les groupes';
+$lang['Select groups...'] = 'Sélectionnez les groupes...';
+$lang['There is no group in this gallery.'] = 'Il n\'y a pas de groupe dans cette galerie.';
+$lang['Permission granted for users'] = 'Permission accordée pour les utilisateurs';
+$lang['Select users...'] = 'Sélectionnez les utilisateurs...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilisateurs ont automatiquement la permission car ils appartiennent à un groupe autorisé.';
+$lang['include photos with lower privacy level'] = 'inclure les photos d\'un niveau de confidentialité inférieur';
+$lang['custom'] = 'Personnalisé';
+$lang['No group is permitted to see this private album'] = 'Aucun groupe n\'est autorisé à voir cet album privé';
+$lang['Permission management'] = 'Gestion des permissions';
+$lang['Photo sizes with crop'] = 'Tailles de photo avec retaillage';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Le centre d\'intérêt est la zone la plus représentative de la photo.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pour les tailles de photo avec retaillage, comme la taille "Carré", Piwigo essaiera d\'inclure au mieux ce centre d\'intérêt.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Par défaut, le centre d\'intérêt est placé au milieu de la photo.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Sélectionnez une zone avec votre souris pour définir un nouveau centre d\'intérêt.';
+$lang['X Position'] = 'Position X';
+$lang['Y Position'] = 'Position Y';
+$lang['X Repeat'] = 'Répétition X';
+$lang['Opacity'] = 'Opacité';
+$lang['top left corner'] = 'coin supérieur gauche';
+$lang['top right corner'] = 'coin supérieur droit';
+$lang['middle'] = 'milieu';
+$lang['bottom left corner'] = 'coin inférieur gauche';
+$lang['bottom right corner'] = 'coin inférieur droit';
+$lang['Select a file'] = 'Sélectionnez un fichier';
+$lang['add a new watermark'] = 'Ajouter un nouveau filigrane';
+$lang['Apply watermark if width is bigger than'] = 'Appliquer le filigrane si la largeur est supérieure à';
+$lang['Apply watermark if height is bigger than'] = 'Appliquer le filigrane si la hauteur est supérieure à';
+$lang['Multiple Size'] = 'Tailles multiples';
+$lang['Watermark'] = 'Filigrane';
+$lang['Original file : %s'] = 'Fichier original : %s';
+$lang['Posted %s on %s'] = 'Inscrite %s le %s';
+$lang['Added by %s'] = 'Ajouté par %s';
+$lang['Visited %d times'] = 'Visitée %d fois';
+$lang['Numeric identifier : %d'] = 'Identifiant numérique : %d';
+$lang['%s ago'] = 'il y a %s';
+$lang['%s in the future'] = '%s dans le futur';
+$lang['Rated %d times, score : %.2f'] = 'Notée %d fois, score : %.2f';
+$lang['%d year'] = '%d an';
+$lang['%d years'] = '%d ans';
+$lang['%d month'] = '%d mois';
+$lang['%d months'] = '%d mois';
+$lang['%d day'] = '%d jour';
+$lang['%d days'] = '%d jours';
+$lang['%d hour'] = '%d heure';
+$lang['%d hours'] = '%d heures';
+$lang['%d minute'] = '%d minute';
+$lang['%d minutes'] = '%d minutes';
+$lang['%d second'] = '%d seconde';
+$lang['%d seconds'] = '%d secondes';
+$lang['Sharpen'] = 'Renforcer la netteté';
+$lang['%d week'] = '%d semaine';
+$lang['%d weeks'] = '%d semaines';
+$lang['Edit photo'] = 'Éditer la photo';
+$lang['create a new site'] = 'créer un nouveau site';
+$lang['No order field selected'] = 'Aucun critère de tri sélectionné';
+$lang['Duplicate selected tags'] = 'Dupliquer les mots clés sélectionnés';
+$lang['Name of the duplicate'] = 'Nom du duplicata';
+$lang['Source tag'] = 'Source du mot clé';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Le mot clé "%s" est désormais une copie de "%s"';
+$lang['Manage the members'] = 'Gérer les membres';
+$lang['Type here the name of the new group'] = 'Inscrivez ici le nom du nouveau groupe';
+$lang['No group selected, no action possible.'] = 'Pas de groupes sélectionnés, pas d\'actions possibles.';
+$lang['Please select at least two groups'] = 'Merci de sélectionner au moins deux groupes';
+$lang['Duplicate'] = 'Dupliquer';
+$lang['Merge selected groups'] = 'Fusionner les groupes sélectionnés';
+$lang['This group will be set to default'] = "Ce groupe deviendra par défaut";
+$lang['This group will be unset to default'] = "Ce groupe ne sera plus par défaut";
+$lang['No members to manage'] = "Aucun membre à gérer";
+$lang['Rename'] = 'Renommer';
+$lang['Landscape'] = 'Paysage';
+$lang['Manage photos'] = 'Gérer les photos';
+$lang['Minimum width'] = 'Largeur minimale';
+$lang['Minimum height'] = 'Hauteur minimale';
+$lang['Number of albums per page'] = 'Nombre d\'albums par page';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portrait';
+$lang['Ratio'] = 'Ratio';
+$lang['View in gallery'] = 'Voir dans la galerie';
+$lang['between %d and %d pixels'] = 'entre %d et %d pixels';
+$lang['between %.2f and %.2f'] = 'entre %.2f et %.2f';
+$lang['Purge user cache'] = 'Purger le cache utilisateur';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La tailles des images sera réduite à %dx%d pixels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionnement après transfert désactivé car GD est la librairie graphique utilisée actuellement';
+$lang['Select at least one tag'] = 'Sélectionnez au moins un mot clé';
+$lang['Basic settings'] = 'Paramètres de base';
+$lang['General'] = 'Général';
+$lang['Mail theme'] = 'Thème des courriels';
+?>
Index: /tags/2.6.0RC1/language/fr_CA/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/common.lang.php	(revision 25596)
@@ -0,0 +1,424 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Français [QC]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=420
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Français';
+$lang_info['country'] = 'Québec';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'fr';
+$lang_info['zero_plural'] = false;
+$lang_info['parent']= "fr_FR";
+
+$lang['%d Kb'] = '%d Ko';
+$lang['%d album updated'] = '%d catégorie mise à jour';
+$lang['%d albums updated'] = '%d catégories mises à jour';
+$lang['%d comment to validate'] = '%d commentaire utilisateur à valider';
+$lang['%d comments to validate'] = '%d commentaires utilisateurs à valider';
+$lang['%d new comment'] = '%d nouveau commentaire utilisateur';
+$lang['%d new comments'] = '%d nouveaux commentaires utilisateurs';
+$lang['%d comment'] = '%d commentaire';
+$lang['%d comments'] = '%d commentaires';
+$lang['%d hit'] = 'vue %d fois';
+$lang['%d hits'] = 'vue %d fois';
+$lang['%d new photo'] = '%d nouvelle image';
+$lang['%d new photos'] = '%d nouvelles images';
+$lang['%d new user'] = '%d nouvel utilisateur';
+$lang['%d new users'] = '%d nouveaux utilisateurs';
+$lang['About'] = 'À propos';
+$lang['All tags'] = 'Tous les mots clés';
+$lang['Any tag'] = 'N\'importe quel mot clé';
+$lang['At least one listed rule must be satisfied.'] = 'Au moins un des critères doit être satisfait.';
+$lang['Author'] = 'Auteur';
+$lang['Albums'] = 'Catégories';
+$lang['Album'] = 'Catégorie';
+$lang['Close this window'] = 'Fermer cette fenêtre';
+$lang['Complete RSS feed (photos, comments)'] = 'Flux RSS complet (images, commentaires)';
+$lang['Confirm Password'] = 'Confirmer le mot de passe';
+$lang['Connection settings'] = 'Paramètres de connexion';
+$lang['Login'] = 'Connexion';
+$lang['Contact webmaster'] = 'Contacter le webmestre';
+$lang['Create a new account'] = 'Créer un nouveau compte';
+$lang['Created on'] = 'Créée le';
+$lang['Creation date'] = 'Date de création';
+$lang['Current password is wrong'] = 'Erreur sur le mot de passe actuel';
+$lang['Dimensions'] = 'Dimensions';
+$lang['Display'] = 'Affichage';
+$lang['Each listed rule must be satisfied.'] = 'Chaque critère doit être satisfait';
+$lang['Email address'] = 'Adresse de courriel';
+$lang['Enter your personnal informations'] = 'Entrer vos informations personnelles';
+$lang['Error sending email'] = 'Erreur à l\'envoi du courriel';
+$lang['File name'] = 'Nom du fichier';
+$lang['File'] = 'Fichier';
+$lang['Filesize'] = 'Poids';
+$lang['Filter and display'] = 'Filtrer et afficher';
+$lang['Filter'] = 'Filtre';
+$lang['Forgot your password?'] = 'Mot de passe oublié ?';
+$lang['Go through the gallery as a visitor'] = 'Parcourir la galerie en tant que visiteur';
+$lang['Help'] = 'Aide';
+$lang['Identification'] = 'Identification';
+$lang['Photos only RSS feed'] = 'Flux RSS des images uniquement';
+$lang['Keyword'] = 'Mot-clef';
+$lang['Links'] = 'Liens';
+$lang['N/A'] = 'non disponible';
+$lang['New on %s'] = 'Nouveau le %s';
+$lang['Notification'] = 'Notifications RSS';
+$lang['Number of items'] = 'Nombre d\'élément';
+$lang['Original dimensions'] = 'Dimensions d\'origine';
+$lang['Password forgotten'] = 'Mot de passe oublié';
+$lang['Password'] = 'Mot de passe';
+$lang['Post date'] = 'Date d\'ajout';
+$lang['Posted on'] = 'Ajoutée le';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Connexion rapide';
+$lang['RSS feed'] = 'flux RSS';
+$lang['Register'] = 'S\'enregistrer';
+$lang['Registration'] = 'Enregistrement';
+$lang['Related tags'] = 'Mots clés liés';
+$lang['Reset'] = 'Annuler';
+$lang['Retrieve password'] = 'Récupérer un mot de passe';
+$lang['Search rules'] = 'Critères de recherche';
+$lang['Search tags'] = 'Rechercher les mots clés';
+$lang['Search'] = 'Rechercher';
+$lang['display available tags'] = 'Voir les mots clés disponibles';
+$lang['Since'] = 'Depuis';
+$lang['Sort by'] = 'Trier selon';
+$lang['Sort order'] = 'Ordre de tri';
+$lang['Tag'] = 'Mot clé';
+$lang['Tags'] = 'Mots clés';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Le flux RSS notifie les événements de la galerie : nouvelles images, catégories mises à jour, nouveaux commentaires utilisateurs. À utiliser avec un lecteur de flux RSS.';
+$lang['Unknown feed identifier'] = 'Identifiant de flux inconnu';
+$lang['User comments'] = 'Commentaires utilisateur';
+$lang['Username'] = 'Nom d\'utilisateur';
+$lang['Visits'] = 'Visites';
+$lang['Webmaster'] = 'Webmestre';
+$lang['Week %d'] = 'Semaine %d';
+$lang['About Piwigo'] = 'À propos de Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Vous n\'êtes pas autorisé à accéder à la page demandée';
+$lang['add this photo to your favorites'] = 'ajouter cette image à vos favoris';
+$lang['Administration'] = 'Administration';
+$lang['all'] = 'tout';
+$lang['ascending'] = 'croissant';
+$lang['author(s) : %s'] = 'auteur(s) : %s';
+$lang['Expand all albums'] = 'Développer toutes les catégories';
+$lang['posted after %s (%s)'] = 'mis en ligne après le %s (%s)';
+$lang['posted before %s (%s)'] = 'mis en ligne avant le %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'mis en ligne entre le %s (%s) et le %s (%s)';
+$lang['posted on %s'] = 'mis en ligne le %s';
+$lang['Best rated'] = 'Mieux notées';
+$lang['display best rated photos'] = 'afficher les images les mieux notées';
+$lang['Calendar'] = 'Calendrier';
+$lang['All'] = 'Tout';
+$lang['display each day with photos, month per month'] = 'affichage année par année, mois par mois, jour par jour';
+$lang['View'] = 'Vue';
+$lang['chronology_monthly_calendar'] = 'Calendrier mensuel';
+$lang['chronology_monthly_list'] = 'Liste mensuelle';
+$lang['chronology_weekly_list'] = 'Liste hebdomadaire';
+$lang['Click here if your browser does not automatically forward you'] = 'Cliquez ici si votre navigateur ne vous redirige pas.';
+$lang['comment date'] = 'date du commentaire';
+$lang['Comment'] = 'Commentaire';
+$lang['Your comment has been registered'] = 'Votre commentaire a été enregistré';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Système anti-abus : merci de patienter avant d\'ajouter un nouveau commentaire';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Votre commentaire n\'a pas été enregistré parce qu\'il ne satisfait aux règles de validation';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrateur doit valider votre commentaire pour qu\'il devienne visible.';
+$lang['This login is already used by another user'] = 'Ce nom d\'utilisateur est déjà pris';
+$lang['Comments'] = 'Commentaires';
+$lang['Add a comment'] = 'Ajouter un commentaire';
+$lang['created after %s (%s)'] = 'créée après le %s (%s)';
+$lang['created before %s (%s)'] = 'créée avant le %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'créée entre le %s (%s) et le %s (%s)';
+$lang['created on %s'] = 'créée le %s';
+$lang['Customize'] = 'Personnaliser';
+$lang['Your Gallery Customization'] = 'Personnalisation de votre affichage ';
+$lang['day'][0] = 'Dimanche';
+$lang['day'][1] = 'Lundi';
+$lang['day'][2] = 'Mardi';
+$lang['day'][3] = 'Mercredi';
+$lang['day'][4] = 'Jeudi';
+$lang['day'][5] = 'Vendredi';
+$lang['day'][6] = 'Samedi';
+$lang['Default'] = 'Par défaut';
+$lang['delete this photo from your favorites'] = 'supprimer cette image de vos favoris';
+$lang['Delete'] = 'Supprimer';
+$lang['descending'] = 'décroissant';
+$lang['Download'] = 'Télécharger';
+$lang['Download this file'] = 'télécharger ce fichier';
+$lang['edit'] = 'éditer';
+$lang['wrong date'] = 'date erronée';
+$lang['excluded'] = 'exclus';
+$lang['Your favorites'] = 'Mes favorites';
+$lang['display your favorites photos'] = 'afficher mes images favorites';
+$lang['Favorites'] = 'Favoris';
+$lang['First'] = 'Première';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galerie est verrouillée pour cause de maintenance. Merci de revenir plus tard.';
+$lang['Page generated in'] = 'Page fabriquée en';
+$lang['guest'] = 'visiteur';
+$lang['Hello'] = 'Bonjour';
+$lang['available for administrators only'] = 'disponible uniquement pour les administrateurs';
+$lang['display this album'] = 'montre les images à la racine de cette catégorie';
+$lang['display last user comments'] = 'Voir les derniers commentaires utilisateurs';
+$lang['customize the appareance of the gallery'] = 'personnaliser l\'apparence de la galerie';
+$lang['search'] = 'recherche';
+$lang['Home'] = 'Accueil';
+$lang['in this album'] = 'dans cette catégorie';
+$lang['in %d sub-album'] = 'dans %d sous-catégorie';
+$lang['in %d sub-albums'] = 'dans %d sous-catégories';
+$lang['included'] = 'inclus';
+$lang['Invalid password!'] = 'Mot de passe invalide !';
+$lang['Language'] = 'Langue';
+$lang['last %d days'] = '%d derniers jours';
+$lang['Last'] = 'Dernière';
+$lang['Logout'] = 'Déconnexion';
+$lang['obligatory'] = 'obligatoire';
+$lang['display a calendar by creation date'] = 'afficher un calendrier par date de création';
+$lang['display all photos in all sub-albums'] = 'afficher à plat les éléments des catégories et des sous-catégories';
+$lang['return to normal view mode'] = 'retourner à la vue normale';
+$lang['display a calendar by posted date'] = 'afficher un calendrier par date d\'ajout';
+$lang['month'][10] = 'Octobre';
+$lang['month'][11] = 'Novembre';
+$lang['month'][12] = 'Décembre';
+$lang['month'][1] = 'Janvier';
+$lang['month'][2] = 'Février';
+$lang['month'][3] = 'Mars';
+$lang['month'][4] = 'Avril';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Juin';
+$lang['month'][7] = 'Juillet';
+$lang['month'][8] = 'Août';
+$lang['month'][9] = 'Septembre';
+$lang['Most visited'] = 'Plus vues';
+$lang['display most visited photos'] = 'afficher les images les plus vues';
+$lang['The number of photos per page must be a not null scalar'] = 'Le nombre d\'images par page doit être un entier non nul';
+$lang['Number of photos per page'] = 'Nombre de miniatures par page';
+$lang['Unknown identifier'] = 'Identifiants inconnus';
+$lang['New password'] = 'Nouveau mot de passe';
+$lang['Rate this photo'] = 'Votez pour cette image';
+$lang['Next'] = 'Suivante';
+$lang['Home'] = 'Accueil';
+$lang['no rate'] = 'pas de note';
+$lang['Photos posted within the last %d day.'] = 'N\'afficher que les éléments récents de moins de %d jour.';
+$lang['Photos posted within the last %d days.'] = 'N\'afficher que les éléments récents de moins de %d jours.';
+$lang['password updated'] = 'mot de passe mis à jour';
+$lang['Recent period must be a positive integer value'] = 'La période de nouveautés doit être un entier positif';
+$lang['photo'] = 'image';
+$lang['Click on the photo to see it in high definition'] = 'Cliquer sur l\'image pour la visualiser en haute définition';
+$lang['Show file metadata'] = 'Montrer les méta-données du fichier';
+$lang['Powered by'] = 'Propulsé par';
+$lang['Preferences'] = 'Préférences';
+$lang['Previous'] = 'Précédente';
+$lang['Random photos'] = 'Images au hasard';
+$lang['display a set of random photos'] = 'afficher un ensemble d\'images prises au hasard';
+$lang['Recent albums'] = 'Catégories récentes';
+$lang['display recently updated albums'] = 'afficher les catégories récemment mises à jour ou créées';
+$lang['Recent period'] = 'Période récente';
+$lang['Recent photos'] = 'Images récentes';
+$lang['display most recent photos'] = 'afficher les images les plus récentes';
+$lang['Redirection...'] = 'Redirection...';
+$lang['Please, enter a login'] = 'S\'il vous plaît, entrez un nom d\'utilisateur';
+$lang['login mustn\'t end with a space character'] = 'le nom d\'utilisateur ne doit pas se terminer par un espace';
+$lang['login mustn\'t start with a space character'] = 'le nom d\'utilisateur ne doit pas commencer par un espace';
+$lang['this login is already used'] = 'ce nom d\'utilisateur est déjà pris';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'l\'adresse de courriel doit être de la forme xxx@yyy.eee (exemple : luc@altern.org)';
+$lang['Auto login'] = 'Connexion auto';
+$lang['remove this tag from the list'] = 'retirer ce mot clé de la liste';
+$lang['representative'] = 'représentante';
+$lang['Search for Author'] = 'Rechercher un auteur';
+$lang['Search in albums'] = 'Rechercher dans les catégories';
+$lang['Search by date'] = 'Recherche par date';
+$lang['Date'] = 'Date';
+$lang['End-Date'] = 'Date de fin';
+$lang['Kind of date'] = 'Type de date';
+$lang['Search for words'] = 'Recherche de mots';
+$lang['Search for all terms'] = 'Rechercher tous les mots';
+$lang['Search for any term'] = 'Rechercher un des mots';
+$lang['Empty query. No criteria has been entered.'] = 'Requête vide. Aucun critère saisi.';
+$lang['Search results'] = 'Résultats de recherche';
+$lang['Search in sub-albums'] = 'Rechercher dans les sous-catégories';
+$lang['Search'] = 'Recherche';
+$lang['searched words : %s'] = 'mots recherchés : %s';
+$lang['Contact'] = 'Contacter';
+$lang['set as album representative'] = 'Choisir comme représentante de cette catégorie';
+$lang['Show number of comments'] = 'Montrer le nombre de commentaires';
+$lang['Show number of hits'] = 'Montrer le nombre de visualisations';
+$lang['slideshow'] = 'diaporama';
+$lang['stop the slideshow'] = 'arrêter le diaporama';
+$lang['Specials'] = 'Spéciales';
+$lang['SQL queries in'] = 'requêtes SQL en';
+$lang['display only recently posted photos'] = 'n\'afficher que les éléments publiés récemment';
+$lang['return to the display of all photos'] = 'retourner à l\'affichage de tous les éléments';
+$lang['the beginning'] = 'le début';
+$lang['Thumbnails'] = 'Miniatures';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'Un commentaire sur le site';
+$lang['today'] = 'aujourd\'hui';
+$lang['Update your rating'] = 'Mettre à jour votre note';
+$lang['Author'] = 'Auteur';
+$lang['the username must be given'] = 'le nom d\'utilisateur doit être indiqué';
+$lang['useful when password forgotten'] = 'utile en cas d\'oubli de mot de passe';
+$lang['Quick search'] = 'Recherche rapide';
+$lang['Connected user: %s'] = 'Utilisateur connecté : %s';
+$lang['IP: %s'] = 'IP : %s';
+$lang['Browser: %s'] = 'Navigateur : %s';
+$lang['Author: %s'] = 'Auteur : %s';
+$lang['Comment: %s'] = 'Commentaire : %s';
+$lang['Comment by %s'] = 'Commentaire par %s';
+$lang['User: %s'] = 'Utilisateur: %s';
+$lang['Email: %s'] = 'Courriel : %s';
+$lang['Admin: %s'] = 'Administration : %s';
+$lang['Registration of %s'] = 'Enregistrement de %s';
+$lang['Album: %s'] = 'Catégorie : %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Statut de l\'utilisateur "guest" non conforme, utilisation du statut par défaut. Veuillez prévenir le webmestre.';
+$lang['this email address is already in use'] = 'un autre utilisateur utilise déjà cette adresse de courriel';
+$lang['Album results for'] = 'Résultats des catégories pour';
+$lang['Tag results for'] = 'Résultats des mots clés pour';
+$lang['from %s to %s'] = 'du %s au %s';
+$lang['Play of slideshow'] = 'Lecture du diaporama';
+$lang['Pause of slideshow'] = 'Pause du diaporama';
+$lang['Repeat the slideshow'] = 'Répéter le diaporama';
+$lang['Not repeat the slideshow'] = 'Ne pas répéter le diaporama';
+$lang['Reduce diaporama speed'] = 'Ralentir la vitesse du diaporama';
+$lang['Accelerate diaporama speed'] = 'Accélerer la vitesse du diaporama';
+$lang['Submit'] = 'Valider';
+$lang['Yes'] = 'Oui';
+$lang['No'] = 'Non';
+$lang['%d photo']='%d photo';
+$lang['%d photos']='%d photos';
+$lang['%d photo is also linked to current tags'] = '%d image est également liée aux mots clés courants';
+$lang['%d photos are also linked to current tags'] = '%d photos sont également liées aux mots clés courants';
+$lang['display photos linked to this tag'] = 'Voir les images liées uniquement à ce mot clé';
+$lang['photos posted during the last %d days'] = 'images ajoutées au cours des %d derniers jours';
+$lang['Piwigo Help'] = 'Aide de Piwigo';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'regrouper par lettres';
+$lang['letters'] = 'lettres';
+$lang['show tag cloud'] = 'montrer le nuage de mots clés';
+$lang['cloud'] = 'nuage';
+$lang['Reset to default values'] = 'Rétablir les valeurs par défaut';
+$lang['delete all photos from your favorites'] = 'supprimer toutes les images de vos favoris';
+$lang['Sent by'] = 'Envoyé par';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Les cookies sont bloqués ou non supportés par votre navigateur web. Vous devez activer les cookies pour vous connecter.';
+$lang['Edit a comment'] = "Éditer un commentaire";
+$lang['Are you sure?'] = "Êtes-vous sûr ?";
+$lang['(!) This comment requires validation'] = '(!) Ce commentaire doit être validé';
+$lang['Welcome'] = 'Bienvenue';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bienvenue sur votre galerie photo Piwigo !';
+$lang['... or browse your empty gallery'] = '... ou naviguez sur votre galerie vide';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ou désactivez ce message, je me débrouillerai par moi-même';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Bonjour %s, votre galerie photo Piwigo est vide !';
+$lang['I want to add photos'] = 'Je veux ajouter des photos';
+$lang['Manage this user comment: %s'] = 'Gérer ce commentaire : %s';
+$lang['Email address is missing. Please specify an email address.'] = "L'adresse de courriel manque. Veuillez spécifier une adresse de courriel.";
+$lang['This author modified following comment:'] = 'Cet auteur a modifié le commentaire suivant :';
+$lang['This author removed the comment with id %d'] = 'Cet auteur a supprimé le commentaire portant l\'identifiant %d';
+$lang['html tags are not allowed in login'] = 'les balises html ne sont pas autorisées à l\'identification';
+$lang['%d rates'] = '%d notes';
+$lang['Rating score'] = 'Bilan';
+$lang['Invalid username or email'] = 'Nom d\'utilisateur ou adressede courriel  invalide';
+$lang['Password reset is not allowed for this user'] = 'Le renouvellement du mot de passe n\'est pas permis pour cet utilisateur';
+$lang['User "%s" has no email address, password reset is not possible'] = 'L\'utilisateur "%s" n\'a pas d\'adresse de courriel, le renouvellement du mot de passe est impossible';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Quelqu\'un a demandé le renouvellement de votre mot de passe pour l\'utilisateur suivant :';
+$lang['Username "%s" on gallery %s'] = 'Utilisateur "%s" sur la galerie %s';
+$lang['To reset your password, visit the following address:'] = 'Pour renouveler votre mot de passe, cliquez sur le lien suivant :';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'S\'il s\'agit d\'une erreur, ignorez ce message et la demande ne sera pas prise en compte.';
+$lang['Password Reset'] = 'Renouvellement de votre mot de passe';
+$lang['Check your email for the confirmation link'] = 'Vérifiez vos courriels pour trouver le lien de confirmation';
+$lang['Invalid key'] = 'Clef invalide';
+$lang['The passwords do not match'] = 'Les mots de passe ne correspondent pas';
+$lang['Your password has been reset'] = 'Votre mot de passe a été réinitialisé';
+$lang['Return to home page'] = 'Retourner sur la page d\'accueil';
+$lang['Please enter your username or email address.'] = 'Merci d\'entrer votre nom d\'utilisateur ou votre adresse courriel.';
+$lang['You will receive a link to create a new password via email.'] = 'Vous recevrez, par courriel, un lien à cliquer pour renouveler votre mot de passe.';
+$lang['Username or email'] = 'Nom d\'utilisateur ou adresse de courriel';
+$lang['Change my password'] = 'Changer mon mot de passe';
+$lang['Enter your new password below.'] = 'Entrez votre nouveau mot de passe ci-dessous.';
+$lang['EXIF Metadata'] = 'Données EXIF';
+$lang['IPTC Metadata'] = 'Données IPTC';
+$lang['Your username has been successfully changed to : %s'] = 'Votre nom d\'utilisateur a bien été changé par : %s';
+$lang['Username modification'] = 'Modification du nom d\'utilisateur';
+$lang['Hello %s,'] = 'Bonjour %s,';
+$lang['Thank you for registering at %s!'] = 'Merci pour votre inscription sur %s !';
+$lang['Here are your connection settings'] = 'Voici vos identifiants';
+$lang['Password: %s'] = 'Mot de passe : %s';
+$lang['Username: %s'] = 'Nom d\'utilisateur : %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Si vous pensez avoir reçu cet email par erreur, veuillez nous contacter %s';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Inscription réussie, vous recevrez bientôt un email avec vos identifiants. Bienvenue !';
+$lang['Send my connection settings by email'] = 'Recevoir mes identifiants par email';
+$lang['Edit'] = 'Éditer';
+$lang['Show oldest comments first'] = 'Montrer les commentaires les plus anciens en premier';
+$lang['Show latest comments first'] = 'Montrer les commentaires les plus récents en premier';
+$lang['square'] = 'Carré';
+$lang['thumb'] = 'Miniature';
+$lang['2small'] = 'XXS - minuscule';
+$lang['xsmall'] = 'XS - très petit';
+$lang['small'] = 'S - petit';
+$lang['medium'] = 'M - moyen';
+$lang['large'] = 'L - grand';
+$lang['xlarge'] = 'XL - très grand';
+$lang['xxlarge'] = 'XXL - énorme';
+$lang['Original'] = 'Original';
+$lang['Photo sizes'] = 'Tailles de photo';
+$lang['View in'] = 'Affichage';
+$lang['Mobile'] = 'Mobile';
+$lang['Desktop'] = 'Classique';
+$lang['File name, A &rarr; Z'] = 'Nom du fichier, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nom du fichier, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Titre de la photo, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Titre de la photo, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Date de création, récent &rarr; ancien';
+$lang['Date created, old &rarr; new'] = 'Date de création, ancien &rarr; récent';
+$lang['Date posted, new &rarr; old'] = 'Date d\'ajout, récent &rarr; ancien';
+$lang['Date posted, old &rarr; new'] = 'Date d\'ajout, ancien &rarr; récent';
+$lang['Rating score, high &rarr; low'] = 'Note, haute &rarr; basse';
+$lang['Rating score, low &rarr; high'] = 'Note, basse &rarr; haute';
+$lang['Visits, high &rarr; low'] = 'Nombre de visites, haut &rarr; bas';
+$lang['Visits, low &rarr; high'] = 'Nombre de visites, bas &rarr; haut';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identifiant, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identifiant, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Ordre manuel';
+$lang['%d rate'] = '%d note';
+$lang['Page not found'] = 'Page non trouvée';
+$lang['Bad request'] = 'Mauvaise requête';
+$lang['Forbidden'] = 'Interdit';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo a rencontré une erreur non récupérable';
+$lang['Requested album does not exist'] = 'L\'album demandé n\'existe pas';
+$lang['Permalink for album not found'] = 'Permalink pour l\'album non trouvé';
+$lang['Requested tag does not exist'] = 'Le mot clé demandé n\'existe pas';
+$lang['Email address is mandatory'] = 'Adresse de courriel obligatoire';
+$lang['Username is mandatory'] = 'Nom d\'utilisateur obligatoire';
+$lang['mandatory'] = 'obligatoire';
+$lang['Website'] = 'Site web';
+$lang['Your website URL is invalid'] = 'L\'adresse de votre site web est invalide';
+$lang['First Page'] = 'Première page';
+$lang['Go back to the album'] = 'Retourner à l\'album';
+$lang['Last Page'] = 'Dernière page';
+$lang['Email'] = 'Courriel';
+$lang['Password is missing. Please enter the password.'] = "Le mot de passe manque. Veuillez saisir le mot de passe.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "La confirmation du mot de passe manque. Veuillez confirmer le mot de passe choisi.";
+?>
Index: /tags/2.6.0RC1/language/fr_CA/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,147 @@
+<h2>Modifier une catégorie</h2>
+
+<h3>Informations</h3>
+
+<ul>
+
+  <li><strong>nom</strong>: renommer la catégorie (virtuellement pour 
+  une catégorie physique).</li>
+
+  <li><strong>description</strong>: un texte bref donnant une idée du contenu de la catégorie,
+  cette indication figurera en bas de la page des miniatures.</li>
+
+</ul>
+
+<h3>Déplacer</h3>
+
+<p>Si la catégorie est virtuelle, vous pouvez la déplacer. Déplacer une
+catégorie signifie changer sa catégorie parente.</p>
+
+<h3>Options</h3>
+
+<ul>
+
+  <li><strong>Type d'accès</strong>: gestion des permissions. Si vous rendez
+une catégorie privée, toutes ses catégories filles deviennent privées. Si
+vous rendez une catégorie publique, toutes ses catégories mères deviennent
+publiques.</li>
+
+  <li><strong>Verrouiller</strong>: la catégorie et toutes ses catégories
+filles deviennent temporairement inaccessibles pour maintenance.</li>
+
+  <li><strong>Commentaires</strong>: autorise les utilisateurs à commenter
+les éléments de cette catégorie.</li>
+
+  <li><strong>Autoriser l'ajout d'images</strong>: autorise les utilisateurs
+à télécharger des fichiers. Cette option n'est disponible que si la
+catégorie est physique (et non virtuelle).</li>
+
+</ul>
+
+<p>Vous pouvez aussi gérer ces options par la gestion des "Propriétés" 
+(écrans <span class="pwgScreen">Ajout</span>, <span
+class="pwgScreen">Commentaires</span>, <span
+class="pwgScreen">Verrouiller</span>, <span
+class="pwgScreen">Publique/Privée</span>, <span
+class="pwgScreen">Représentant</span> disponibles à partir d' <span
+class="pwgScreen">Administration, Catégories, Propriétés</span>).</p>
+
+<h3>Ordre de tri</h3>
+
+<p>Utiliser l'ordre de tri des images par défaut.</p>
+
+<p>Indiquer si le tri s'applique également aux sous-catégories.</p>
+
+<p>Sélectionner les critères de tri à utiliser pour cette catégorie.</p>
+<ul>
+<li><strong>Date de création</strong>: Date de prise de vue</li>
+<li><strong>Date d'ajout</strong>: Date de la synchronisation</li>
+<li><strong>Note moyenne (*)</strong>: cette moyenne peut être modifiée par la notation du visiteur</li>
+<li><strong>Plus vues (*)</strong>: La visite en cours peut changer l'ordre des plus vues</li>
+<li><strong>Nom du fichier</strong>: Nom du fichier donné dans les champs d'informations ci-dessus</li>
+<li><strong>Id</strong>: Id interne (les catégories récentes ont un "Id" plus grand que les précédentes).</li>
+
+</ul>
+<p><strong>(*)</strong>Attention: testez-vous même ces tris qui peuvent donner des résultats imprévus.</p>
+
+
+<h3>Représentant</h3>
+
+<p>Le représentant d'une catégorie est la miniature affichée sur la page principale (<span
+class="pwgScreen">category.php</span>) pour
+représenter la catégorie lorsque celle-ci ne contient
+que des sous-catégories et aucun élément direct (comme à la
+racine)</p>
+
+<p>Il existe 4 moyens différents de choisir le représentant d'une catégorie:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Page d'affichage des images</span>: un des boutons d'action permet de choisir l'élément courant comme représentant
+de la catégorie affichée. Ce bouton d'action n'est disponible que pour les
+administrateurs.</li>
+
+  <li><span class="pwgScreen">Modifier les informations d'une image</span>
+dans l'administration. Cet écran peut être atteint depuis <span
+class="pwgScreen">picture.php</span> ou <span class="pwgScreen">Gestion par
+lot</span> dans le <em>mode unitaire</em>. Voir l'aide de cet écran pour les
+détails.</li>
+
+  <li><span class="pwgScreen">Administration, Catégories, Propriétés,
+Représentant</span>. Voir l'aide de cet écran pour les détails.</li>
+
+  <li><span class="pwgScreen">Modifier une catégorie</span> (le présent
+écran).</li>
+
+</ul>
+
+<p>Le choix d'un représentant dépend du paramètre de configuration
+<code>allow_random_representative</code> (voir <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Par défaut (<code>allow_random_representative</code> à false), chaque
+catégorie contenant au moins un élément est représenté par un élément
+fixe. Une fois fixé (à la création de la catégorie), le représentant change
+uniquement lorsque l'administrateur le demande. Si le représentant ne
+convient pas, vous pouvez demander à <strong>Trouver un nouveau représentant
+au hasard</strong>.</p>
+
+<p>Si le paramètre de configuration <code>allow_random_representative</code>
+est à true, une catégorie contenant des éléments peut ne pas avoir de
+représentant fixe. Utiliser simplement le bouton <strong>Supprimer le
+représentant</strong>.</p>
+
+<p>Si la catégorie ne contient que des sous-catégories et aucun élément, elle peut cependant être représentée par n'importe quel 
+élément grâce à l'écran <span class="pwgScreen">Modifier les informations 
+d'une image</span>. La seule option disponible sur le présent écran est le bouton
+<strong>Supprimer le représentant</strong>.</p>
+
+<h3>Associer tous les éléments de la catégorie à une nouvelle catégorie</h3>
+
+<ul>
+
+<li><strong>Nom de la catégorie virtuelle</strong>: Nom de la nouvelle catégorie à créer, 
+toutes les images de la catégorie en cours seront liées à la nouvelle.</li>
+
+<li><strong>Catégorie parente</strong>: À quel endroit la nouvelle catégorie doit être placée, 
+laisser vide pour la créer sur la page d'accueil.</li>
+
+</ul>
+
+<h3>Associer tous les éléments de la catégorie à des catégories existantes</h3>
+
+<ul>
+
+<li><strong>Catégories</strong>: Choisir la catégorie de destination.</li>
+
+</ul>
+
+<h3>Envoyer un courriel d'informations aux membres d'un groupe</h3>
+
+<ul>
+
+<li><strong>Groupe</strong>: Groupe de destinataires</li>
+
+<li><strong>Contenu du courriel</strong>: Texte libre à leur envoyer.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/fr_CA/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/cat_move.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Déplacement de catégories virtuelles</h2>
+
+<p>Vous pouvez changer le parent d'une catégorie virtuelle.</p>
+
+<h3>Catégories virtuelles à déplacer</h3>
+
+<p>Sélectionnez une ou plusieurs catégories virtuelle à déplacer. 
+Si la liste est vide, c'est que vous n'en avez pas encore créé.</p>
+
+<h3>Nouvelle catégorie parente</h3>
+
+<p>Sélectionnez la nouvelle catégorie parente (virtuelle ou physique). 
+Si vous n'en sélectionnez aucune, 
+les catégories à déplacer seront remontées à la racine des catégories.
+Vous ne pouvez déplacer une catégorie dans elle-même ou ses enfants.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/cat_options.html	(revision 25596)
@@ -0,0 +1,39 @@
+<h2>Options des catégories</h2>
+
+<p>Gestion des options pour plusieurs catégories à la fois.</p>
+
+<dl>
+
+  <dt>Autorisation à l'ajout</dt>
+
+  <dd>Rendre les catégories autorisées à l'ajout par les visiteurs. Cette
+option n'est disponible que pour les catégories physiques locales.</dd>
+  
+  <dt>Commentaires utilisateurs</dt>
+
+  <dd>Autoriser les utilisateurs à ajouter des commentaires dans les catégories sélectionnées.
+Une image sera commentable si elle appartient à au moins une catégorie commentable.</dd>
+  
+  <dt>Verrouiller</dt>
+
+  <dd>Les catégories sélectionnées deviennent temporairement inactives pour
+maintenance. Lorsqu'une catégorie est verrouillée, toutes les catégories
+enfant sont verrouillées. Lorsqu'une catégorie est déverrouillée, toutes les
+catégories parentes sont déverrouillées.</dd>
+
+  <dt>Publique / Privée</dt>
+
+  <dd>Les permissions n'existent que pour les catégories privées. Une fois qu'une catégorie est privée, il vous faut
+explicitement autoriser les utilisateurs ou les groupes à y
+accéder. Lorsqu'une catégorie devient privée, toutes les catégories enfants
+deviennent privées. Lorsqu'une catégorie devient publique, toutes les
+catégories parentes deviennent publiques.</dd>
+
+  <dt>Représentant</dt>
+
+  <dd>Cette option est disponible uniquement si le paramètre de
+configuration <code>allow_random_representative</code> (voir <span
+class="filename">include/config_default.inc.php</span>) vaut
+<em>true</em>. Chaque catégorie peut-être représentée par une image prise au hasard ou par une seule miniature fixe.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/fr_CA/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Gérer les permissions pour une catégorie</h2>
+
+<p>Cet écran n'est disponible que pour les catégories privées. Ici vous
+pourrez sélectionner les utilisateurs et les groupes autorisés pour une
+catégorie.</p>
+
+<h3>Groupes</h3>
+
+<p>Vous pouvez autoriser ou interdire l'accès des groupes à la catégorie courante. Les utilisateurs appartenant à ces groupes se verront autoriser ou interdire l'accès à la catégorie.</p>
+
+<h3>Utilisateurs</h3>
+
+<p>Vous pouvez autoriser ou interdire l'accès aux utilisateurs
+individuellement. Les utilisateurs autorisés par ailleurs grâce à leur appartenance à un groupe peuvent se voir supprimer l'accès par exception.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/configuration.html	(revision 25596)
@@ -0,0 +1,138 @@
+<h2>Configuration</h2>
+
+<p>Cet écran permet de gérer la configuration basique. En effet, seuls sont
+montrés les paramètres de configuration qui doivent suffire à la majorité
+des administrateurs. Si vous souhaitez voir la liste des nombreux (et
+avancés) paramètres, lire le fichier <span
+class="filename">include/config_default.inc.php</span></p>
+
+<p>Cet écran est divisié en plusieurs sections, regroupant les paramètres
+par thème.</p>
+
+<h3>Principale</h3>
+<ul>
+
+  <li><strong>Titre de la galerie</strong>: utilisé pour le flux RSS et
+la notification par email.</li>
+
+  <li><strong>Bannière des pages</strong>: code html affiché en haut des
+pages.</li>
+
+  <li><strong>URL de la galerie</strong>: utilisé pour le flux RSS.</li>
+
+  <li><strong>Verrouiller la galerie</strong>: Verrouiller l'ensemble de la
+galerie pour maintenance. Seul les administrateurs pourront accéder à la
+galerie.</li>
+
+  <li><strong>Notation</strong>: La notation des photos est possible.</li>
+
+  <li><strong>Notation par les visiteurs</strong>: Même les utilisateurs non enregistrés peuvent noter les images.</li>
+
+  <li><strong>Permettre l'enregistrement des utilisateurs</strong>: L'inscription est libre pour tous.</li>
+
+  <li><strong>L'adresse de courriel est obligatoire pour tous les utilisateurs</strong>: L'adresse de courriel sera vérifiée lors des inscriptions ou de la mise à jour des profils sauf si l'action est effectuée dans la partie administration.</li>
+
+  <li><strong>Notifier les administrateurs lors de l'inscription d'un utilisateur</strong>: Les administrateurs recevront un courriel à chaque inscription.</li>
+
+</ul>
+
+<h3>Historique</h3>
+
+  <p>les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> sont
+enregistrées dans la table <code>history</code>.</p>
+
+  <p>Les visites sont affichées dans l'écran <span class="pwgScreen">Administration, Spéciales, Historique</span>.</p>
+
+<ul>
+  <li><strong>Enregistrer les pages visitées par les invités</strong>: les visites des pages par les invités sont enregistrées.</li>
+
+  <li><strong>Enregistrer les pages visitées par les utilisateurs</strong>: les visites des pagespar les utilisateurs enregistrés sont enregistrées.</li>
+
+  <li><strong>Enregistrer les pages visitées par les administrateurs</strong>: les visites des pages par les administrateurs sont enregistrées.</li>
+
+</ul>
+
+<h3>Commentaires</h3>
+<ul>
+
+  <li><strong>Commentaires utilisateur pour tous</strong>: même les
+utilisateurs non enregistrés peuvent enregistrer des commentaires.</li>
+
+  <li><strong>Nombre de commentaires utilisateur par page</strong>.</li>
+
+  <li><strong>Validation</strong>: un administrateur doit valider les
+commentaires utilisateurs avant qu'ils puissent devenir visibles dans la
+partie publique. La validation des commentaires utilisateurs a lieu dans
+l'écran <span class="pwgScreen">Administration, Images,
+Commentaires</span>.</li>
+
+  <li><strong>Notifier les administrateurs quand un commentaire est enregistré</strong>:
+Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui est validé.</li>
+
+  <li><strong>Notifier les administrateurs quand un commentaire requiert sa validation </strong>:
+Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui demande une validation de la part des administrateurs.
+La validation des commentaires utilisateurs a lieu dans l'écran <span class="pwgScreen">Administration, Images, Commentaires</span>.</li>
+
+</ul>
+
+<h3>Ajout de photos</h3>
+<ul>
+  <li><strong>Afficher le lien d'ajout de photo tout le temps</strong>: S'il existe des catégories permettant l'ajout de photo, le lien correspondant sera affiché quelque soit la catégorie.</li>
+  <li><strong>Niveau d'accès utilisateur pour ajouter des photos</strong>: Permet de restreindre l'ajout à certains utilisateurs</li>
+  <li><strong>Notifier les administrateurs quand une image est ajoutée</strong>: Les administrateurs recevront un courriel à chaque image ajoutée par un utilisateur.</li>
+</ul>
+
+<h3>Affichage par défaut</h3>
+<p>Modifier les options d'affichage par défaut: pour les visiteurs non
+connectés. Une fois connecté, ces options sont surchargées par celles de
+l'utilisateur, qu'il peut modifier dans l'écran <span
+class="pwgScreen">profile</span>.</p>
+
+<p>Il est possible de changer ces options pour les utilisateurs existants,
+mais il s'agit d'un autre écran : <span class="pwgScreen">Administration,
+Identification, Utilisateurs</span>, dans lequel vous pouvez modifier ces
+options pour une liste d'utilisateurs sélectionnés.</p>
+
+<ul>
+
+  <li><strong>Langue</strong>: ne concerne que les libellés de
+Piwigo. Les noms de catégories, d'image et les descriptions ne sont
+pas localisés (ie multilingue).</li>
+
+  <li><strong>Nombre de miniatures par ligne</strong></li>
+
+  <li><strong>Nombre de lignes par page</strong></li>
+
+  <li><strong>Thème de l'interface</strong></li>
+
+  <li><strong>Période récente</strong>: en jours. Période pendant laquelle
+une image est considérée comment nouvelle. Cette période doit être
+supérieure à 1 jour.</li>
+
+  <li><strong>Développer toutes les catégories</strong>: développer toutes
+les catégories dans le menu? <em>Attention</em>: cette option est
+susceptible de consommer inutilement des ressources si votre arbre de
+catégories contient de nombreux éléments.</li>
+
+  <li><strong>Montrer le nombre de commentaires</strong>: montrer les nombre
+de commentaires utilisateur en dessous de chaque miniature. Consomme des
+ressources.</li>
+
+  <li><strong>Montrer le nombre de visualisations  </strong>: affiche les 
+  « hits » relevés sur une image sous sa miniature dans la page de miniatures.
+  Uniquement valable si le paramètre de configuration avancée est :<br>
+  $conf['show_nb_hits'] = true; <br>
+  N.B.: par defaut il est à false.</li>
+
+  <li><strong>Largeur maximum des images</strong>: à l'affichage. Si l'image
+est plus large que ce paramètre, alors elle sera redimensionnée à
+l'affichage. Si vous pensez nécessaire de modifier ce paramétrage (donc pour
+un affichage par défaut), il serait pertinent de redimensionner directement
+vos images stockées.</li>
+
+  <li><strong>Hauteur maximum des images</strong>: même remarque que pour la
+largeur.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_CA/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Configuration pour "étendre" les templates</h2>
+
+<h3>Objectif</h3>
+<p>Définir les conditions de remplacement de chaque template (modèle) à partir de template-extension
+(template appelé "replacer" (remplaçant)).</p>
+
+<p>Les "Templates d'origine" provenant de ./template/yoga (ou de tout autre dossier que "yoga")
+ sont remplacés par un remplaçant si celui-ci est lié à son template d'origine
+ (et de façon facultative, quand l'adresse (URL) demandée contient un URL contains un "Paramètre facultatif de l'URL").</p>
+
+<p>Les "Paramètres facultatif de l'URL" sont ceux que vous pouvez trouver après le nom du module dans l'adresse (URL).</p>
+
+<p>Ainsi un "Paramètre facultatif de l'URL" peut être un "permalink" (lien permanent) actif
+(voir les permalinks dans notre documentation pour plus d'information).</p>
+
+<p>Lire les `<a href="#warnings">mises en garde</a>` sur les conditions d'utilisation.</p>
+
+<h3>Qu'est-ce que les extensions des modèles?</h3>
+
+<p>Cet outil de configuration est à la fois puissant pour les débutants et pour les utilisateurs avancés.
+Par FTP, dans le dossier template-extension, le Webmaster pourra dupliquer une bonne partie des fichiers
+ .tpl distribués ("Templates d'origine") avec un nom différent  
+ ("replacer" (remplaçant)).
+ 
+ "Templates d'origine", actuellement les modèles d'origine supportés sont:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Où puis-je trouver les "Templates d'origine"?</h3>
+
+<p>Les modèles distribués d'origine sont dans template/yoga/ 
+(ne pas les modifier directement à cet endroit pour des raisons d'évolution). Ainsi à partir des "templates d'origine", 
+tout webmaster pourra créer ses "replacers (modèles personalisés)".</p>
+
+<h3>Où dois-je enregistrer les "remplaçants"?</h3>
+
+<p>Les <strong>Replacers (templates modifiés)</strong> peuvent être placés dans le dossier 
+template-extension (ou ses sous-dossiers).
+Les remplaçants peuvent avoir n'importe quel nom de fichier avec l'extension .tpl. Par exemple: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Comment puis-je activer mes "remplaçants"?</h3>
+<p>Un <strong>template d'origine</strong> devrait être associé à chaque
+ <strong>replacer (modèle modifié)</strong> à fin d'activer les remplacements correspondants.
+ Activer les remplaçants est la fonction de "Etendre les templates" dans les menus de Configuration de l'Administration.</p>
+
+<p>Si vous sélectionnez un <strong>Paramètre facultatif de l'URL</strong> alors les remplacements 
+ne seront réalisés que sur les pages utilisant ce mot clé. Par exemple: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Les utilisateurs avancés utiliseront les permalinks (permaliens, liens permanents) en tant que 
+<strong>paramètre facultatif de l'URL</strong>. </p>
+
+<p>Si vous sélectionnez un <strong>Template rattaché</strong> alors les remplacements ne seront réalisés que sur ce template.</p>
+
+<h3>Comment puis-je désactiver mes "replacers"?</h3>
+<ul>
+<li>Déselectionner le "template d'origine".</li>
+<li>Par FTP supprimer le "remplaçant".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Mises en garde</h3>
+<ul>
+
+  <li>Le <strong>template d'origine</strong> doit être le véritable template "d'origine"
+  autrement vous pourriez avoir des résultats imprévisibles!</li>
+
+  <li>Si plusieurs <strong>remplaçants (templates modifiés)</strong> ont le même
+  <strong>template d'origine</strong> et le même <strong>paramètre facultatif
+  de l'URL</strong> alors seulement le dernier remplaçant sera actif.</li>
+
+  <li>Ne pas sélectionner de <strong>paramètre facultatif de l'URL</strong> 
+  activera le template de remplacement à chaque utilisation du template.
+  Comme mentionné ci-dessus, l'ordre peut inhiber les remplaçants précédents.</li>
+
+  <li>Sous-dossiers:
+  Les sous-dossiers sont ignorés mais ils sont utiles pour modifier l'ordre des remplaçants.<br>
+distributed-samples: pour vos tests sont distributés! 
+<strong>Ne pas les modifier</strong>, créez les votres!
+</li>
+
+  <li>A la suppression d'un remplaçant le <strong>template d'origine</strong> sera 
+  immédiatement réactivé.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_CA/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Liste des groupes</h2>
+
+<p>Administration des propriétés des groupes.</p>
+
+<h3>Ajouter un groupe</h3>
+
+<p>L'administrateur peut ajouter des groupes.</p>
+
+<h3>Liste des groupes</h3>
+
+<p>La liste permet pour chaque groupe:</p>
+
+<ul>
+  <li>d'accéder à la liste des membres</li>
+  <li>d'accéder aux permissions</li>
+  <li>de supprimer le groupe (nécessite une confirmation)</li>
+  <li>d'inverser le statut "par défaut" (nécessite une confirmation)</li>
+</ul>
+
+<h3>Groupes par défaut</h3>
+<p>Les groupes par défaut sont des groupes associés automatiquement à chaque nouvel utilisateur lors de son enregistrement ou de sa création par un administrateur.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,31 @@
+<p>Il existe plusieurs méthodes pour ajouter des photos dans votre
+galerie :</p>
+
+<ul>
+
+  <li><strong>L'ajout direct</strong> dans votre navigateur web est la
+  méthode la plus simple et la plus immédiate. Elle dépend des capacités de
+  votre navigateur et de votre serveur. Pour des gros volumes ou en cas de
+  problèmes, les méthodes alternatives vous attendent !</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Utiliser l'ajout direct</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> est un logiciel à installer sur votre
+  ordinateur. Glissez vos photos dans la fenêtre de pLoader, cliquez
+  sur <em>"Transférer vers Piwigo"</em> et pLoader s'occupe du reste. D'autres logiciels clients existent, comme <strong>WinToPiwigo</strong> ou le module
+  d'export Piwigo de <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Utiliser pLoader</a></p>
+
+<ul>
+  <li><strong>Le transfert FTP</strong>
+  est la méthode idéale pour ajouter une collection importante en un minimum
+  d'opérations. Suivez le guide pour préparer vos photos. Cette méthode vous
+  permet de contrôler avec précision l'organisation physique de vos photos
+  sur votre serveur.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Utiliser FTP</a></p>
Index: /tags/2.6.0RC1/language/fr_CA/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/help_groups.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Les groupes d'utilisateurs permettent d'assigner des permissions à une liste d'utilisateurs.</p>
+
+<p>Vous pouvez créer des groupes et y ajouter des utilisateurs dans 
+<span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Groupes</span>.</p>
+
+<p>Un utilisateur peut appartenir à plusieurs groupes. L'autorisation l'emporte sur l'interdiction : si l'utilisateur "pierre" appartient aux
+groupes "famille" et "amis", et que seul le groupe "famille" peut visiter la
+catégorie "Noël 2003", alors "pierre" peut visiter cette catégorie.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/help_misc.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Une fois votre galerie créée, configurez l'affichage par
+défaut tel que désiré dans <span class="pwgScreen">Administation &raquo; Configuration &raquo; Affichage par défaut</span>. Chaque nouvel
+utilisateur héritera de ces propriétés d'affichage dès son enregistrement.</p>
+
+<p>Pour toute question, la communauté francophone Piwigo est à l'écoute sur le <a href="http://fr.piwigo.org/forum">forum</a>.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,48 @@
+<fieldset>
+<legend>Permissions par photo</legend>
+
+<p>Chaque photo a un <strong>niveau de confidentialité</strong> (un verrou). Chaque utilisateur a également un niveau de confidentialité (une clef). Il y a 5 niveaux de confidentialité :
+<ol>
+  <li>Aucun</li>
+  <li><em>Contacts</em></li>
+  <li><em>Amis</em> (qui est davantage qu'un contact)</li>
+  <li><em>Famille</em> (qui est davantage qu'un ami)</li>
+  <li><em>Admins</em> (qui recouvre tous les autres niveaux)</li>
+</ol>
+
+<p>Les niveaux supérieurs disposent des droits pour accéder aux niveaux inférieurs. Pour un utilisateur donné, plus haut est son niveau de confidentialité, plus il peut voir de photos.</p>
+
+<p>Par exemple, si la photo "mariage_pierre-0024.jpg" a le niveau de confidentialité <em>"Famille"</em>, alors :</p>
+<ul>
+  <li>Pierre (qui est un <em>Admin</em>) peut la voir car <em>"Admins"</em> donne tous les droits</li>
+  <li>Vanessa (qui est une membre de la <em>Famille</em>) peut la voir également</li>
+  <li>Marie (qui n'est qu'une <em>Amie</em>) elle ne peut pas la voir</li>
+</ul>
+
+<p>Un utilisateur qui ne dispose pas des permissions pour voir le contenu d’une catégorie ne verra pas du tout la catégorie, pas même son titre. Même principe pour un tag.</p>
+
+<p>Vous pouvez assigner le niveau de confidentialité d'un utilisateur sur l'écran <span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Gérer</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Permissions par catégorie</legend>
+
+<p>Si les niveaux de confidentialité ne correspondent pas exactement à vos besoins, vous pouvez également gérer les permissions par catégorie et pour un utilisateur ou un groupe donné. Vous pouvez gérer les permissions par photo et par catégorie en même temps, sans conflit.</p>
+
+<p>Vous pouvez interdire l'accès aux catégories. Passez le type d'accès de la catégorie à "privée" si vous souhaitez gérer les permissions.</p>
+  
+<p>Vous pouvez rendre une catégorie privée en l'éditant (<span
+class="pwgScreen">Administration &raquo; Catégories &raquo; Gérer &raquo; Éditer</span>) ou en
+gérant les options pour votre arbre complet des catégories (<span
+class="pwgScreen">Administration &raquo; Catégories &raquo; Propriétés &raquo; Publique/Privée</span>).</p>
+
+<p>Lorsqu'une catégorie est privée, vous pouvez gérer les permissions par groupes et utilisateurs avec 3 écrans :</p>
+
+<ul>
+  <li><span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Gérer &raquo; action Permissions</span> (1 lien par utilisateur)</li>
+  <li><span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Groupes &raquo; action Permissions</span> (1 lien par groupe)</li>
+  <li><span class="pwgScreen">Administration &raquo; Catégories &raquo; Gérer &raquo; Modifier les permissions</span> (1 lien par catégorie)</li>
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/fr_CA/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Les photos sont affichées dans les catégories correspondant aux répertoires dans lesquels elles sont stockées.</p>
+
+<p>Vous pouvez également afficher une photo dans plusieurs catégories, sans dupliquer le fichier sur votre serveur web. Associez la photo à n'importe quelle autre catégorie depuis l'écran d'édition de la photo (auquel vous accéder depuis la page de visualisation de la photo côté galerie, lorsque vous êtes connecté en tant qu'administrateur)</p>
+
+<p>Les catégories virtuelles sont basées sur ce principe : elles n'ont pas de répertoire associé. Créez des catégories virtuelles depuis <span class="pwgScreen">Administration &raquo; Catégories &raquo; Gérer</span>.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/history.html	(revision 25596)
@@ -0,0 +1,46 @@
+<h2>Historique</h2>
+
+<p>Ces écrans permettent de suivre l'historique de navigation dans Piwigo
+ suivant les options que vous avez déterminées dans - Administration - Générale 
+ - Onglet "Historique".</p>
+	
+<h3>Statistiques</h3>
+<ul>
+  <p>Si vous avez choisi que les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> soient
+enregistrées dans la table <code>history</code>,
+cet onglet permet de suivre le nombre de pages visitées</p>
+	
+	<li><strong>Statistiques totales</strong> : visites par année</li>
+	
+	<li><strong>Statistiques d'une année</strong> : visites par mois de l’année sélectionnée.</li>
+	
+	<li><strong>Statistiques d'un mois</strong> : visites par jour du mois sélectionné.</li>
+	
+	<li><strong>Statistiques d'une journée</strong> : visites par heures de la journée sélectionnée.</li>
+	
+</ul>
+
+<h3>Rechercher</h3>
+<ul>
+  <p>Si vous avez choisi que les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> soient
+enregistrées dans la table <code>history</code>, cet onglet permet de suivre plus en détail les pages visitées avec l'aide de différents filtres.</p>
+ 
+	<li><strong>Filtrer par date</strong> : sélectionner la plage
+de dates dont vous souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par type d'élément</strong> : sélectionner le
+type d'élément dont vous souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par utilisateur</strong> : sélectionner l'utilisateur dont vous
+ souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par nom du fichier</strong> : sélectionner le nom du fichier dont vous
+ souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par identifiant image</strong> : sélectionner l'identifiant de l'image dont vous
+ souhaitez observer l’activité.</li>
+</ul>
Index: /tags/2.6.0RC1/language/fr_CA/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fr_CA/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/maintenance.html	(revision 25596)
@@ -0,0 +1,64 @@
+<h2>Maintenance</h2>
+
+<p>Pour optimiser le temps de génération des pages, Piwigo utilise des informations en cache.
+ Par exemple, au lieu de compter le nombre d'éléments contenus dans chaque catégorie à 
+ chaque rechargement de page, cette information est stockée dans la base de données. 
+ En théorie, cette information doit toujours être correcte, mais parfois une erreur peut 
+ survenir et l'information en cache devient fausse.</p>
+
+<p>Certaines informations deviennent inutiles avec le temps. 
+Les supprimer de la base de données libère de l'espace disque.</p>
+
+<ul>
+
+  <li>
+    <strong>Eléments non liés:</strong>
+    Affiche les images qui ne sont associées à aucune catégorie virtuelle
+  </li>
+  <li>
+    <strong>Fichiers portant le même nom dans plusieurs catégories physiques :</strong>
+    Affiche les images ou les éventuels fichiers qui pourraient être trouvés dans plusieurs catégories.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Mettre à jour les informations des catégories :</strong> 
+  Pour chaque catégorie, les informations suivantes sont contrôlées, et mises à jour le cas échéant : 
+  liste des catégories mères, nombre d'éléments, date du dernier élément, position parmi les 
+  catégories soeurs, position dans l'arbre complet des catégories. Cette action vérifie 
+  également la cohérence des représentants.</li>
+
+  <li><strong>Mettre à jour les informations des images :</strong>
+Pour chaque image, les informations mises àjour sont : chemin complet vers le 
+fichier et note moyenne. Attention, ne pas confondre : les méta-données sont 
+synchronisées sur l'écran <span class="pwgScreen">Administration, Catégories, Synchroniser</span> 
+ou sur l'écran <span class="pwgScreen">Modifier les informations d'une image</span> (accessible depuis la page de visualisation d'une image <span class="pwgScreen">picture.php</span>).</li>
+
+  <li><strong>Réparer et optimiser la base de données :</strong>
+Effectue des opérations de ré-ordonnancement, réparation et optimisation sur  chaque table de la base de données.
+  </li>
+
+</ul>
+
+<ul>
+  <li><strong>Purger le détail de l'historique :</strong>
+Supprime toutes les lignes de la table <code>history</code>. L'écran <span class="pwgScreen">
+Administration, Spéciales, Historique</span> ne montre alors plus aucune information sur le passé. 
+<em>Attention</em> : toutes les données seront perdues, sans aucun possibilité de récupération.
+  </li>
+
+  <li><strong>Purger la synthèse de l'historique :</strong>
+Supprime toutes les informations  récapitulatives (obtenues à partir du détail de l'historique).
+  </li>
+
+  <li><strong>Purger les sessions :</strong> Supprimer les sessions expirées.</li>
+
+  <li><strong>Purger les flux de notification jamais utilisés</strong></li>
+  
+  <li><strong>Purger l'historique des recherches</strong></li>
+  
+  <li><strong>Purger les templates compilés</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_CA/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notification par courriel</h2>
+
+<p>Cet écran permet de configurer et de gérer les envois de courriels aux utilisateurs, pour les aviser de changements intervenus sur votre site.</p>
+
+<p>Cet écran est composé de 3 onglets:</p>
+
+<h3>Paramétrage</h3>
+<p>Accessible uniquement aux webmestres, cet onglet permet de positionner les paramètres de la notification par courriel.</p>
+
+<h3>Inscription</h3>
+<p>Accessible uniquement aux webmestres, cet onglet permet de gérer les inscriptions/désinscriptions à la notification par courriel.</p>
+
+<h3>Envoi</h3>
+<p>Accessible aux webmestres et aux administrateurs, cet onglet permet d'effectuer les envois de courriels pour notifier les changements.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Liens permanents</h2>
+
+<p>Les liens permanents sont utilisés pour rendre plus jolis les urls des catégories. Lorsqu'une catégorie dispose d'un lien permanent associée, son identifiant n'est plus nécessaire dans l'url.</p>
+
+<p>Quand un lien permanent est effacé, vous pouvez le sauvegarder dans l'historique des liens permanents, de sorte que les liens externes à Piwigo puissent continuer à fonctionner. Dans l'historique des liens permanents vous pouvez voir la date d'effacement du lien, ainsi que la date de la dernière utilisation et le nombre d'utilisations de ce lien.</p>
+
+<p>Veuillez noter que les liens permanents doivent être uniques. Ils doivent aussi être uniques dans l'historique des liens permanents.</p>
Index: /tags/2.6.0RC1/language/fr_CA/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,122 @@
+<fieldset>
+  <legend>Démarrage rapide</legend>
+
+<ol>
+  <li>Créez un répertoire sur votre ordinateur.</li>
+
+  <li>Copiez des photos à l'intérieur de ce répertoire, puis redimensionnez-les pour un affichage sur le web. <em>Attention</em> : le nom des répertoires et des fichiers ne doit contenir que des lettres, des chiffres et les caractères  "-", "_" ou ".". Pas d'espace ou de caractères accentués.</li>
+
+  <li>Avec un client FTP, copiez le répertoire dans le répertoire "galleries" de votre installation de Piwigo.</li>
+
+  <li>Connectez-vous à votre galerie Piwigo et rendez-vous sur <span class="pwgScreen">Administration &raquo; Images &raquo; Miniatures</span> pour créer les miniatures manquantes.</li>
+
+  <li>Rendez-vous sur <span class="pwgScreen">Administration</span> et cliquez sur le gros bouton de synchronisation.</li>
+</ol>
+
+<p>Bravo ! Vous avez créé avec succès la première catégorie de votre galerie.</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>Organisation des répertoires et des fichiers</legend>
+
+<ul>
+
+  <li>
+
+    <p>Les répertoires représentant les albums se trouvent dans le répertoire "galleries". Ci-dessous l'arbre des répertoires d'une très petite galerie (mais utilisant de nombreuses fonctionnalités) : </p>
+  
+<pre>
+galleries
+|-- mariage
+|   |-- ceremonie
+|   |   |-- entree
+|   |   |   |-- arrivee-de-paul.jpg
+|   |   |   +-- arrivee-de-virginie.jpg
+|   |   +-- sortie
+|   |       |-- sortie-enfants-honneur.jpg
+|   |       +-- sortie-de-paul-et-virginie.jpg
+|   +-- cocktail
+|       |-- discours001.jpg
+|       |-- discours002.jpg
+|       +-- discours003.jpg
++-- voyage-de-noces
+    |-- hotel.png
+    |-- video-decollage-avion.avi
+    +-- pwg_representative
+        +-- video-decollage-avion.jpg
+</pre>
+
+  </li>
+  
+  <li>A l'exception de celui appelé "pwg_representative", chaque répertoire dans "galleries" génère un album. Le nombre de niveaux (profondeur) n'est pas limité.</li>
+
+  <li>Fondamentalement, un élément est représenté par un fichier. Pour Piwigo, un fichier peut être un élément si son extension figure dans la liste du paramètre de configuration <code>file_ext</code> (voir
+fichier <span class="filename">include/config.inc.php</span>). Un fichier
+peut être une image si son extension figure dans la liste du paramètre de configuration
+<code>picture_ext</code>.</li>
+
+  <li>Les éléments de type image doivent avoir une miniature associée (voir la
+section suivante à propos des miniatures).</li>
+
+  <li>Les éléments de type image peuvent avoir un image en grand format
+associé. Comme pour le fichier <span class="filename">mariage.jpg</span>
+dans l'exemple ci-dessus. Aucun préfixe n'est nécessaire sur le nom du
+fichier.</li>
+
+  <li>Les éléments autres que les images (vidéos, sons, fichiers texte, tout ce que vous
+voulez...) sont représentés par défaut par une icône correspondant à
+l'extension du nom du fichier. Optionnellement, une miniature et un
+représentant peuvent être associés (voir le fichier <span
+class="filename">video.avi</span> dans l'exemple).</li>
+
+  <li><em>Attention</em> : le nom d'un répertoire ou d'un fichier ne doit
+être composé que de lettres, de chiffres, de "-", "_" ou ".". Pas d'espace
+ou de caractères accentués.</li>
+
+  <li><em>Conseil</em> : une catégorie peut contenir des éléments et des
+sous-catégories à la fois. Néanmoins, il est fortement conseillé pour chaque
+catégorie de choisir entre contenir des éléments <strong>ou bien</strong>
+des sous-catégories.</li>
+
+  <li>Une fois que les fichiers, les miniatures et les représentants sont
+correctement placés dans les répertoires, se rendre sur l'écran <span
+class="pwgScreen">Administration &raquo; Catégories &raquo; Synchroniser</span>.</li>
+
+</ul>
+
+</fieldset>
+
+<fieldset>
+  <legend>Miniatures</legend>
+
+<ul>
+  
+  <li>Comme mentionné précédemment, chaque élément de type image doit être
+associé à une miniature.</li>
+
+  <li>Les miniatures sont stockées dans le sous-répertoire "thumbnail" de
+chaque répertoire représentant une catégorie. Une miniature est un fichier
+de type image (même extension du nom du fichier) dont le nom de fichier est
+préfixé par le paramètre de configuration <code>prefix_thumbnail</code>
+(voir <span class="filename">include/config.inc.php</span>).</li>
+
+  <li>Les miniatures n'ont pas besoin d'avoir la même extension que leur
+image associée (une image avec ".jpg" comme extension peut avoir une
+miniature en ".GIF" par exemple).</li>
+
+  <li>Il est conseillé d'utiliser un outil externe pour la création des
+miniatures.</li>
+
+  <li>Vous pouvez également utiliser l'outil de création de miniatures
+intégré à Piwigo mais cela est déconseillé car la qualité risque
+d'être décevante et cela utilise inutilement les ressources du serveur (ce
+qui peut être un grave problème sur un serveur mutualisé).</li>
+
+  <li>Si vous choisissez d'utiliser le serveur web pour générer les
+miniatures, vous devez donner les droits en écriture sur les
+répertoires.</li>
+
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/fr_CA/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/search.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Recherche</h2>
+
+<p>Recherche d'images dans l'ensemble de la galerie.</p>
+
+<dl>
+
+  <dt>Rechercher un mot</dt>
+
+  <dd>Recherche un ou plusieurs mots dans tous les attributs des images de la galerie
+images. Utiliser * comme passe-partout pour les recherches partielles.</dd>
+  
+  <dt>Recherche d'un auteur</dt>
+
+  <dd>Utiliser * comme passe-partout pour les recherches partielles.</dd>
+
+  <dt>Recherche par date</dt>
+
+  <dd>Sélectionner une date et/ou une date de fin. Laisser la date vide si
+vous souhaitez faire une recherche "avant". Dans le dernier champ, l'année doit être saisie avec 4 chiffres (2005 par exemple).</dd>
+
+  <dt>Recherche dans les catégories</dt>
+
+  <dd>Sélectionner les catégories sur lesquelles restreindre la
+recherche. Il est possible de chercher dans toutes les catégories en sélectionnant la catégorie parente, et en autorisant la recherche dans les sous-catégories.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/fr_CA/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/synchronize.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Synchroniser</h2>
+
+<ul>
+
+  <li>Il existe 2 types de synchronisations : structure (répertoires/fichiers) et
+meta-données. Synchroniser la structure consiste à synchroniser l'arborescence
+de vos répertoires et fichiers avec leur représentation dans la
+base de données. La synchronisation des méta-données assure la mise à jour des
+informations telles que le poids du fichier, les dimensions, les données EXIF ou
+IPTC.</li>
+
+  <li>La première synchronisation à effectuer doit être celle sur la
+structure.</li>
+
+  <li>Le processus de synchronisation peut prendre du temps (en fonction de
+la charge du serveur et de la quantité de fichiers à gérer), il est donc
+possible de procéder catégorie par catégorie.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_CA/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/help/user_list.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Liste des utilisateurs</h2>
+
+<p>Permet la gestion des propriétés des utilisateurs enregistrés, à l'exception des permissions, qui sont gérées via d'autres écrans.</p>
+
+<h3>Ajouter un utilisateur</h3>
+
+<p>L'administrateur peut ajouter manuellement des utilisateurs.</p>
+
+<h3>Liste des utilisateurs</h3>
+
+<p>La liste peut être filtrée avec le nom d'utilisateur (* = passe-partout), avec le
+groupe ou encore le statut. La liste peut être triée par date
+d'enregistrement ou nom d'utilisateur, en ordre croissant ou
+décroissant.</p>
+
+<p>Cet écran permet la modification simultanée de plusieurs utilisateurs
+avec les actions suivantes :</p>
+
+<ul>
+  <li>supprimer des utilisateurs (nécessite une confirmation)</li>
+  <li>changer le statut</li>
+  <li>associer ou dissocier des groupes</li>
+  <li>modifier les propriétés d'affichage</li>
+  <li>modifier les propriétés annexes</li>
+</ul>
+
+<p>Les utilisateurs modifiés sont ceux sélectionnés (comportement par défaut) ou l'ensemble des utilisateurs de la liste filtrée.</p>
Index: /tags/2.6.0RC1/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fr_CA/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "Installation";
+$lang['Basic configuration'] = "Configuration de base";
+$lang['Default gallery language'] = "Langue par défaut de la galerie";
+$lang['Database configuration'] = "Configuration de la base de données";
+$lang['Admin configuration'] = "Configuration du compte administrateur";
+$lang['Start Install'] = "Démarrer l'installation";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = "Cet identifiant apparaîtra à tous vos visiteurs. Il vous sert pour administrer le site";
+$lang['Connection to server succeed, but it was impossible to connect to database'] = "La connexion au serveur est OK, mais la connection à cette base de données est impossible";
+$lang['Can\'t connect to server'] = "Impossible de se connecter au serveur";
+$lang['Host'] = "Hôte";
+$lang['User'] = "Utilisateur";
+$lang['user login given by your host provider'] = "nom d'utilisateur communiqué par votre hébergeur";
+$lang['user password given by your host provider'] = "mot de passe utilisateur communiqué par votre hébergeur";
+$lang['Database name'] = "Nom de la base de données";
+$lang['also given by your host provider'] = "également fourni par votre hébergeur";
+$lang['Database table prefix'] = "Préfixe des noms de tables";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "le nom des tables sera précédé de ce préfixe (permet de mieux gérer sa base de données)";
+$lang['enter a login for webmaster'] = "veuillez rentrer un pseudo pour le webmaster";
+$lang['webmaster login can\'t contain characters \' or "'] = "le pseudo du webmaster ne doit pas comporter les caractères \" et '";
+$lang['please enter your password again'] = "veuillez resaisir votre mot de passe";
+$lang['Keep it confidential, it enables you to access administration panel'] = "Il doit rester confidentiel, il permet d'accéder à l'écran d'administration.";
+$lang['Password [confirm]'] = "Mot de passe [Confirmer]";
+$lang['verification'] = "vérification";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "Besoin d'aide ? Posez votre question sur le <a href=\"%s\">forum de Piwigo</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "Les visiteurs pourront contacter l'administrateur du site par ce courriel";
+$lang['PHP 5 is required'] = "PHP 5 est requis";
+$lang['It appears your webhost is currently running PHP %s.'] = "Apparemment, la version PHP de votre hébergeur est PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo va essayer de passer en PHP 5 en créant ou modifiant le fichier .htaccess.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Notez que vous pouvez modifier vous-même la configuration PHP et re-lancer Piwigo ensuite.";
+$lang['Try to configure PHP 5'] = "Essayer de configurer PHP 5";
+$lang['Sorry!'] = "Désolé!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo n'a pas pu configurer PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Il vous faut contacter le support de votre hébergeur pour savoir comment configurer vous-même PHP 5.";
+$lang['Hope to see you back soon.'] = "En espérant vous revoir très prochainement.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Félicitations, l\'installation de Piwigo est terminée';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Une solution alternative est de copier le texte dans la zone ci-dessous et de le coller dans le fichier "local/config/database.inc.php" (Attention: database.inc.php ne doit contenir que ce qui se trouve dans la zone, pas de retour à la ligne, pas d\'espace)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'La création du fichier de configuration local/config/database.inc.php a échoué.';
+$lang['Download the config file'] = 'Télécharger le fichier de configuration';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Vous pouvez télécharger le fichier de configuration et le transférer dans le répertoire local/config de votre installation Piwigo.';
+$lang['Just another Piwigo gallery'] = 'Une galerie Piwigo de plus';
+$lang['Welcome to my photo gallery'] = 'Bienvenue sur ma galerie photo';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bienvenue sur votre nouvelle installtion de Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'N\'hésitez pas à consulter bos forums si vous avez le moindre problème : %s';
+$lang['localhost or other, supplied by your host provider'] = 'localhost ou autre, communiqué par votre hébergeur';
+?>
Index: /tags/2.6.0RC1/language/fr_CA/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Québecois [QC]
Index: /tags/2.6.0RC1/language/fr_CA/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_CA/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_CA/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Mise à jour";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Cette page vous propose de mettre à jour la base de données de votre ancienne version de piwigo vers la nouvelle version.
+L'assistant de mise à jour pense que vous disposez actuellement de la <strong>version %s</strong> (ou équivalente).";
+$lang['Upgrade from version %s to %s'] = "Mise à jour de la version %s à %s";
+$lang['Statistics'] = "Statistiques";
+$lang['total upgrade time'] = "temps total de la mise à jour";
+$lang['total SQL time'] = "temps total des requêtes SQL";
+$lang['SQL queries'] = "nombre de requêtes SQL";
+$lang['Upgrade informations'] = "Informations sur la mise à jour";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veuillez effectuer une maintenance dans [Administration>Outils>Maintenance] si vous rencontrez des problèmes.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Par précaution, les plugins suivants ont été désactivés. Vérifiez s'il existe des mises à jour avant de les réactiver:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Seul un administrateur peut lancer la mise à jour: veuillez vous identifier ci-dessous.";
+$lang['You do not have access rights to run upgrade'] = "Vous n'avez pas les droits nécessaires pour lancer la mise à jour.";
+$lang['All sub-albums of private albums become private'] = "Toutes les sous-catégories de catégories privées deviennent privées";
+$lang['User permissions and group permissions have been erased'] = "Les permissions des utilisateurs et des groupes ont été effacées";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Seuls le préfixe des miniatures et l'adresse de courriel du webmestre ont étés conservés de la précédente configuration";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Dans le fichier <i>%s</i>, avant <b>?></b>, insérez:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Par précaution, les thèmes suivants ont été désactivés. Vérifiez s\'il existe des mises à jour avant de les réactiver:';
+
+?>
Index: /tags/2.6.0RC1/language/fr_FR/about.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/about.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Cette galerie photo est basée sur Piwigo.</p>
+
+<p>Piwigo est un logiciel de galerie photo pour le web, bâti par une
+communauté active d'utilisateurs et de développeurs. Les extensions rendent
+Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et
+gratuit.</p>
+
+<p id="linkToPiwigo"><a href="http://fr.piwigo.org">Visiter le site web de Piwigo</a></p>
Index: /tags/2.6.0RC1/language/fr_FR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/admin.lang.php	(revision 25596)
@@ -0,0 +1,976 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = "%d association";
+$lang['%d associations'] = "%d associations";
+$lang['%d album including'] = '%d album dont';
+$lang['%d albums including'] = '%d albums dont';
+$lang['%d physical'] = " %d physique";
+$lang['%d physicals'] = " %d physiques";
+$lang[' and %d virtual'] = " et %d virtuel";
+$lang[' and %d virtuals'] = " et %d virtuels";
+$lang['%d album moved'] = '%d album déplacé';
+$lang['%d albums moved'] = '%d albums déplacés';
+$lang['%d group'] = "%d groupe";
+$lang['%d groups'] = "%d groupes";
+$lang['%d member'] = "%d membre";
+$lang['%d members'] = "%d membres";
+$lang['%d tag'] = "%d tag";
+$lang['%d tags'] = "%d tags";
+$lang['%d user comment rejected'] = "%d commentaire d'utilisateur rejeté";
+$lang['%d user comments rejected'] = "%d commentaires d'utilisateurs rejetés";
+$lang['%d user comment validated'] = "%d commentaire d'utilisateur validé";
+$lang['%d user comments validated'] = "%d commentaires d'utilisateurs validés";
+$lang['%d user deleted'] = "%d utilisateur supprimé";
+$lang['%d users deleted'] = "%d utilisateurs supprimés";
+$lang['%d user'] = "%d utilisateur";
+$lang['%d users'] = "%d utilisateurs";
+$lang['%d waiting for validation'] = "%d en attente de validation";
+$lang['Actions'] = "Actions";
+$lang['Activate'] = "Activer";
+$lang['Add/delete a permalink'] = "Ajouter/effacer un lien permanent";
+$lang['Add a tag'] = "Ajouter un tag";
+$lang['Add a user'] = "Ajouter un utilisateur";
+$lang['Add group'] = "Ajouter un groupe";
+$lang['Add'] = "Ajouter";
+$lang['Allow user registration'] = "Permettre l'enregistrement des utilisateurs";
+$lang['Apply to sub-albums'] = 'Appliquer aux sous-albums';
+$lang['Associated'] = "Associée à";
+$lang['Caddie management'] = "Gestion du panier";
+$lang['Caddie'] = "Panier";
+$lang['Albums authorized thanks to group associations'] = 'Albums accessibles grâce à l\'appartenance aux groupes';
+$lang['Album manual order was saved'] = 'L\'ordre manuel des albums a été sauvegardé';
+$lang['Album photos associated to the following albums: %s'] = 'Les photos de l\'album ont été associées aux albums suivants : %s';
+$lang['Check for upgrade failed for unknown reasons.'] = "La vérification de la dernière version sur le serveur a échouée pour une raison inconnue.";
+$lang['Check for upgrade'] = "Dernière version ?";
+$lang['Comments for all'] = "Commentaires pour tous";
+$lang['Current name'] = "Nom courant";
+$lang['Database'] = "Base de données";
+$lang['Deactivate'] = "Désactiver";
+$lang['Deactivate all'] = "Désactiver tout";
+$lang['Delete Representant'] = "Supprimer le représentant";
+$lang['Delete selected tags'] = "Supprimer les tags sélectionnés";
+$lang['Delete selected users'] = "Supprimer les utilisateurs sélectionnés";
+$lang['Deletions'] = "Suppressions";
+$lang['Deny selected groups'] = "Interdire l'accès aux groupes sélectionnés";
+$lang['Deny selected users'] = "Interdire l'accès aux utilisateurs sélectionnés";
+$lang['Description'] = "Description";
+$lang['Display options'] = "Options d'affichage";
+$lang['Dissociated'] = "Dissociée de";
+$lang['Does not represent'] = "Ne représente pas";
+$lang['Edit selected tags'] = "Editer les tags sélectionnés";
+$lang['Edit tags'] = "Editer les tags";
+$lang['Email admins when a new user registers'] = "Notifier les administrateurs lors de l'inscription d'un utilisateur";
+$lang['Email admins when a valid comment is entered'] = "Notifier les administrateurs quand un commentaire est enregistré";
+$lang['Email admins when a comment requires validation'] = "Notifier les administrateurs quand un commentaire requiert leur validation";
+$lang['Environment'] = "Environnement";
+$lang['Form'] = "Formulaire";
+$lang['Gallery title'] = "Titre de la galerie";
+$lang['Grant selected groups'] = "Donner l'accès aux groupes sélectionnés";
+$lang['Grant selected users'] = "Donner l'accès aux utilisateurs sélectionnés";
+$lang['Group name'] = "Nom du groupe";
+$lang['Groups'] = "Groupes";
+$lang['Guests'] = "Invités";
+$lang['History'] = "Historique";
+$lang['Informations'] = "Informations";
+$lang['Install'] = "Installer";
+$lang['Link all album photos to a new album'] = 'Associer toutes les photos de l\'album à un nouvel album';
+$lang['Link all album photos to some existing albums'] = 'Associer toutes les photos de l\'album à des albums existants';
+$lang['Linked albums'] = 'Albums associés';
+$lang['Lock gallery'] = "Verrouiller la galerie";
+$lang['Maintenance'] = "Maintenance";
+$lang['Edit album permissions'] = 'Gérer les permissions pour un album';
+$lang['Manage permissions for group "%s"'] = "Gérer les permissions pour le groupe \"%s\"";
+$lang['Manage permissions for user "%s"'] = "Gérer les permissions pour l'utilisateur \"%s\"";
+$lang['Manage tags'] = "Gérer les tags";
+$lang['Members'] = "Membres";
+$lang['Metadata synchronized from file'] = "Méta-données synchronisées à partir du fichier";
+$lang['Move albums'] = 'Déplacer les albums';
+$lang['Move'] = "Déplacer";
+$lang['Name'] = "Nom";
+$lang['New name'] = "Nouveau nom";
+$lang['New parent album'] = 'Nouvel album parent';
+$lang['New tag'] = "Nouveau tag";
+$lang['Number of comments per page'] = "Nombre de commentaires par page";
+$lang['Number of rates'] = "Nombre de notes";
+$lang['Number of thumbnails to create'] = "Nombre de miniatures à créer";
+$lang['Only private albums are listed'] = 'Seuls les albums privés sont listés';
+$lang['Operating system'] = "Système d'exploitation";
+$lang['Options'] = "Options";
+$lang['Other private albums'] = 'Autres albums privés';
+$lang['Page banner'] = "Bannière des pages";
+$lang['Parent album'] = 'Album parent';
+$lang['Path'] = "Chemin";
+$lang['Permalink'] = "Lien permanent";
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Le lien permanent %s a été précédemment utilisé par l\'album %s. Veuillez l\'effacer de l\'historique des liens permanents';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "Le lien permanent ne doit contenir des caractères que parmi \"a-zA-Z0-9\", \"-\", \"_\" ou \"/\". Il ne doit pas être numérique ou commencer par un nombre suivi par \"-\"";
+$lang['Permalink %s is already used by album %s'] = 'Le lien permanent %s est déja utilisé par l\'album %s';
+$lang['Permalink history'] = "Historique des liens permanents";
+$lang['Permalinks'] = "Liens permanents";
+$lang['Permission denied'] = "Accès interdit";
+$lang['Permission granted thanks to a group'] = "Accès autorisé grâce à l'appartenance aux groupes";
+$lang['Permission granted'] = "Accès autorisé";
+$lang['Photo informations updated'] = 'Informations de la photo mises à jour';
+$lang['Plugins'] = "Plugins";
+$lang['Position'] = "Position";
+$lang['Preferences'] = "Préférences";
+$lang['Properties'] = "Propriétés";
+$lang['Random photo'] = 'Photo au hasard';
+$lang['Rate date'] = "Date de notation";
+$lang['Rating by guests'] = "Notation par les invités";
+$lang['Rating'] = "Notation";
+$lang['Reject'] = "Rejeter";
+$lang['Representant'] = "Représentant";
+$lang['Representation of albums'] = 'Représentation des albums';
+$lang['Representative'] = "Représentant";
+$lang['Represents'] = "Représente";
+$lang['Save order'] = "Sauvegarder l'ordre";
+$lang['Save to permalink history'] = "Sauvegarder dans l'historique des liens permanents";
+$lang['Select at least one album'] = 'Sélectionnez au moins un album';
+$lang['Select at least one photo'] = "Sélectionnez au moins une photo";
+$lang['Select at least one user'] = "Sélectionnez au moins un utilisateur";
+$lang['Show info'] = "Montrer les informations";
+$lang['Site manager'] = "Gestionnaire des sites";
+$lang['Status'] = "Statut";
+$lang['Statistics'] = "Statistiques";
+$lang['Storage album'] = 'Album de stockage';
+$lang['Sum of rates'] = "Somme des notes";
+$lang['Tag "%s" already exists'] = "Le tag \"%s\" existe déjà";
+$lang['Tag "%s" was added'] = "Le tag \"%s\" a été ajouté";
+$lang['Tag selection'] = "Sélection de tags";
+$lang['The %d following tags were deleted'] = "Les %d tags suivants ont été supprimés";
+$lang['Unable to check for upgrade.'] = "Impossible de connaître la dernière version.";
+$lang['Uninstall'] = "Désinstaller";
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Utiliser l\'ordre de tri des photos par défaut (défini dans le fichier de configuration)';
+$lang['User comments validation'] = "Validation des commentaires d'utilisateurs";
+$lang['Users'] = "Utilisateurs";
+$lang['Validate'] = "Valider";
+$lang['Validation'] = "Validation";
+$lang['Version'] = "Version";
+$lang['Virtual albums to move'] = 'Albums virtuels à déplacer';
+$lang['Virtual album name'] = 'Nom de l\'album virtuel';
+$lang['Webmaster cannot be deleted'] = "Le webmestre ne peut pas être supprimé";
+$lang['You are running on development sources, no check possible.'] = "Vous travaillez avec les sources de développement, impossible de vérifier la dernière version.";
+$lang['You cannot delete your account'] = "Vous ne pouvez pas supprimer votre compte";
+$lang['You cannot move an album in its own sub album'] = 'Vous ne pouvez pas déplacer un album dans son propre sous-album';
+$lang['You need to confirm deletion'] = "Vous devez confirmer la suppression";
+$lang['Associate to album'] = 'Associer à l\'album';
+$lang['associate to group'] = "Associer au groupe";
+$lang['Authorized'] = "Autorisés";
+$lang['Add a virtual album'] = 'Ajouter un album virtuel';
+$lang['Authorize users to add comments on selected albums'] = 'Autoriser les utilisateurs à ajouter des commentaires dans les albums sélectionnés';
+$lang['The name of an album must not be empty'] = 'Le nom de l\'album ne doit pas être vide';
+$lang['Lock albums'] = 'Verrouiller les albums';
+$lang['Private'] = 'Album privé';
+$lang['Public'] = 'Album public';
+$lang['Find a new representant by random'] = "Trouver un nouveau représentant au hasard";
+$lang['Public / Private'] = "Publique / Privée";
+$lang['Manage authorizations for selected albums'] = 'Gérer le type d\'accès pour les albums sélectionnés';
+$lang['Virtual album added'] = 'Album virtuel ajouté';
+$lang['Virtual album deleted'] = 'Album virtuel supprimé';
+$lang['Access type'] = "Type d'accès";
+$lang['Information data registered in database'] = "Informations enregistrées dans la base de données";
+$lang['Default display'] = "Affichage par défaut";
+$lang['The gallery URL is not valid.'] = "L'adresse de la galerie n'est pas valide.";
+$lang['General'] = "Général";
+$lang['The number of comments a page must be between 5 and 50 included.'] = "Le nombre de commentaires d'utilisateurs par page doit être compris entre 5 et 50.";
+$lang['Configuration'] = "Configuration";
+$lang['confirm'] = "Confirmer";
+$lang['Date'] = "Date";
+$lang['delete album'] = 'supprimer l\'album';
+$lang['Dissociate from album'] = 'Dissocier de l\'album';
+$lang['dissociate from group'] = "Dissocier du groupe";
+$lang['Album updated successfully'] = 'Les informations de l\'album ont été mises à jour avec succès.';
+$lang['photos per page'] = "photos par page";
+$lang['High definition enabled'] = "Haute définition actif";
+$lang['File'] = "Fichier";
+$lang['first photo added on %s'] = "première photo ajoutée le %s";
+$lang['Forbidden'] = "Interdits";
+$lang['global mode'] = "Mode global";
+$lang['group "%s" added'] = "groupe \"%s\" ajouté";
+$lang['group "%s" deleted'] = "groupe \"%s\" supprimé";
+$lang['group "%s" updated'] = "groupe \"%s\" mis à jour";
+$lang['The name of a group must not contain " or \' or be empty.'] = "Le nom du groupe ne doit pas contenir \" ou ' et ne doit pas être vide.";
+$lang['This name is already used by another group.'] = "Ce nom est déjà utilisé par un autre groupe.";
+$lang['High definition'] = "Haute définition";
+$lang['jump to album'] = 'Se rendre dans l\'album';
+$lang['jump to photo'] = 'Voir la photo';
+$lang['leave'] = "laisser";
+$lang['Lock'] = "Verrouiller";
+$lang['Locked'] = "Verrouillées";
+$lang['manage album photos'] = 'Gérer les photos de l\'album';
+$lang['manage sub-albums'] = 'Gérer les sous-albums';
+$lang['Manage'] = "Gérer";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = "Le temps d'exécution étant dépassé, le traitement doit continuer [Temps estimé: %d second].";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "Le temps d'exécution étant dépassé, le traitement doit continuer [Temps estimé: %d secondes].";
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = "Le temps de préparation de la liste des utilisateurs pour l'envoi est limité. Les autres utilisateurs ne sont pas listés.";
+$lang['Time to send mail is limited. Others mails are skipped.'] = "Le temps d'envoi des mails est limité. Les autres envois de mail ont été ignorés.";
+$lang['To send ?'] = "A envoyer ?";
+$lang['Last send'] = "Dernier envoi";
+$lang['User'] = "Utilisateur";
+$lang['See you soon,'] = "A bientôt,";
+$lang['Go to'] = "Rendez-vous sur";
+$lang['Hello'] = "Bonjour";
+$lang['New photos were added'] = 'De nouvelles photos ont été ajoutées';
+$lang['on'] = "le";
+$lang['between'] = "entre le";
+$lang['and'] = "et le";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "Vous venez d'être inscrit par le webmestre du site pour recevoir des notifications par mail.";
+$lang['You have subscribed to receiving notifications by mail.'] = "Vous venez de vous inscrire pour recevoir des notifications par mail.";
+$lang['To subscribe'] = "Pour vous inscrire";
+$lang['If you encounter problems or have any question, please send a message to'] = "En cas de problèmes ou de questions, envoyer un mail à";
+$lang['[NBM] Problems or questions'] = "[NBM] Problèmes ou questions";
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "Vous venez d'être désinscrit par le webmestre du site pour ne plus recevoir la notification par mail.";
+$lang['You have unsubscribed from receiving notifications by mail.'] = "Vous venez de vous désinscrire pour ne plus recevoir la notification par mail.";
+$lang[', click on'] = ", cliquez sur";
+$lang['To unsubscribe'] = "Pour vous désinscrire";
+$lang['With blank value, gallery title will be used'] = "Si non renseigné, le titre de la galerie sera utilisé";
+$lang['Notification'] = "Notification";
+$lang['Error when sending email to %s [%s].'] = "Erreur lors de l'envoi du mail à %s [%s].";
+$lang['Mail sent to %s [%s].'] = "Mail envoyé à %s [%s].";
+$lang['%d mail was sent.'] = "%s mail a été envoyé.";
+$lang['%d mails were sent.'] = "%s mails ont été envoyés.";
+$lang['%d mail was not sent.'] = "%s mail n'a pas été envoyé.";
+$lang['%d mails were not sent.'] = "%s mails n'ont pas été envoyés.";
+$lang['No mail to send.'] = "Pas de mail à envoyer.";
+$lang['There is no available subscribers to mail.'] = "Il n'y a pas d'utilisateur à notifier par mail.";
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "Un utilisateur peut être notifié seulement si de nouveaux éléments sont disponibles pour cet utilisateur.";
+$lang['Anyway only webmasters can see this tab and never administrators.'] = "Seul le webmaster a accès à cet onglet, pas les administrateurs.";
+$lang['No user to send notifications by mail.'] = "Pas d'utilisateur pour envoyer des notifications par mails.";
+$lang['New photos added'] = 'Nouvelles photos ajoutées';
+$lang['Subscribe to notification by mail'] = "Inscription à la notification par mail";
+$lang['Unsubscribe from notification by mail'] = "Désinscription à la notification par mail";
+$lang['Parameter'] = "Paramétrage";
+$lang['Operation in progress'] = "Traitement en cours.";
+$lang['Continue processing treatment'] = "Continuer le traitement en cours";
+$lang['Complementary mail content'] = "Contenu complémentaire du mail";
+$lang['Add detailed content'] = "Ajout d'un contenu détaillé";
+$lang['Send mail as'] = "Envoyer le mail en tant que";
+$lang['Send mail to users'] = "Envoi de mail aux utilisateurs";
+$lang['Send'] = "Envoi";
+$lang['Options'] = "Options";
+$lang['Subscribed'] = "Inscrits";
+$lang['Subscribe'] = "S'inscrire";
+$lang['Parameters'] = "Paramètres";
+$lang['Select recipients'] = "Sélection des destinataires";
+$lang['Subscribe/unsubscribe users'] = "Inscrire/désinscrire les utilisateurs";
+$lang['Unsubscribed'] = "Non inscrits";
+$lang['%d parameter was updated.'] = "%d paramètre a été mis à jour.";
+$lang['%d parameters were updated.'] = "%d paramètres ont été mis à jour.";
+$lang['%d user was not updated.'] = "%d utilisateur n'a pas été mis à jour.";
+$lang['%d users were not updated.'] = "%d utilisateurs n'ont pas été mis à jour.";
+$lang['User %s [%s] was removed from the subscription list.'] = "L'utilisateur %s [%s] a été supprimé de la liste des inscrits.";
+$lang['User %s [%s] was added to the subscription list.'] = "L'utilisateur %s [%s] a été ajouté à la liste des inscrits.";
+$lang['%d user was updated.'] = "%d utilisateur a été mis à jour.";
+$lang['%d users were updated.'] = "%d utilisateurs ont été mis à jour.";
+$lang['User %s [%s] was not removed from the subscription list.'] = "L'utilisateur %s [%s] n'a pas été supprimé de la liste des inscrits.";
+$lang['User %s [%s] was not added to the subscription list.'] = "L'utilisateur %s [%s] n'a pas été ajouté à la liste des inscrits.";
+$lang['User %s [%s] added.'] = "Utilisateur %s [%s] ajouté.";
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = "Attention, l'inscription ou la désincription génère l'envoi de mail aux utilisateurs concernés";
+$lang['Send mail on HTML format'] = "Envoyer le mail au format HTML";
+$lang['Include display of recent photos grouped by dates'] = "Inclure l'affichage des dernières photos groupées par dates";
+$lang['Available only with HTML format'] = "Disponible uniquement avec le format HTML";
+$lang['no write access'] = "Pas d'accès en écriture";
+$lang['Permissions'] = "Permissions";
+$lang['private'] = "privé";
+$lang['public'] = "public";
+$lang['Purge never used notification feeds'] = "Purger les flux de notification jamais utilisés";
+$lang['Purge sessions'] = "Purger les sessions";
+$lang['randomly represented'] = "représentant au hasard";
+$lang['registration date'] = "date d'enregistrement";
+$lang['clean'] = "nettoyer";
+$lang['Create this site'] = "Créer ce site";
+$lang['test'] = "tester";
+$lang['test this remote site'] = "tester ce site distant";
+$lang['remove tags'] = "Supprimer les tags";
+$lang['Repair and optimize database'] = "Réparer et optimiser la base de données";
+$lang['selection'] = "Sélection";
+$lang['set to'] = "changer en";
+$lang['singly represented'] = "représentant fixe";
+$lang['This site already exists'] = "Ce site existe déjà";
+$lang['created'] = "créé";
+$lang['delete this site and all its attached elements'] = "supprimer ce site et toutes les informations associées";
+$lang['an error happened'] = "une erreur est survenue";
+$lang['Local'] = "Local";
+$lang['Remote'] = "Distant";
+$lang['update the database from files'] = "met à jour la base de données à partir des fichiers";
+$lang['status'] = "Statut";
+$lang['Directory'] = "Répertoire";
+$lang['sub-albums'] = 'sous-albums';
+$lang['Synchronize metadata'] = "Synchroniser les méta-données";
+$lang['target'] = "Cible";
+$lang['Title'] = "Titre";
+$lang['Album list management'] = 'Gestion des albums';
+$lang['Piwigo configuration'] = "Configuration de Piwigo";
+$lang['Edit album'] = 'Modifier un album';
+$lang['Group management'] = "Gestion des groupes";
+$lang['User list'] = "Liste des utilisateurs";
+$lang['Edit photo information'] = 'Modifier les informations de cette photo';
+$lang['Database synchronization with files'] = "Synchronisation de la base à partir des fichiers de";
+$lang['all'] = "Tout";
+$lang['height must be a number superior to'] = "la hauteur doit un entier supérieur à";
+$lang['width must be a number superior to'] = "la largeur doit être un entier supérieur à";
+$lang['for the file format'] = "pour le format de fichier";
+$lang['Photo unreachable or no support'] = 'Photo inaccessible ou format non supporté';
+$lang['GD version'] = "version de GD";
+$lang['General statistics'] = "Statistiques générales";
+$lang['average time'] = "temps moyen";
+$lang['number of miniaturized photos'] = 'nombre de miniatures créées';
+$lang['total time'] = "temps total";
+$lang['for this file format'] = "pour ce format de fichier";
+$lang['unit mode'] = "Mode unitaire";
+$lang['Unlocked'] = "Déverrouillées";
+$lang['unset'] = "vider";
+$lang['Update albums informations'] = 'Mettre à jour les informations des albums';
+$lang['Update photos information'] = 'Mettre à jour les informations des photos';
+$lang['Synchronize'] = "Synchroniser";
+$lang['reduce to single existing albums'] = 'Traiter uniquement un album';
+$lang['Choose an option'] = "Choisir une option";
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Afficher un maximum d\'informations (albums ajoutés, photos ajoutées, albums et photos supprimés)';
+$lang['Error list'] = "Liste des erreurs";
+$lang['Errors caption'] = "Légende des erreurs";
+$lang['Detailed informations'] = "Informations détaillées";
+$lang['File/directory read error'] = "Erreur d'ouverture fichier/répertoire";
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "Le fichier ou répertoire ne peut pas être accessible (soit il n'existe pas, soit l'accès est refusé)";
+$lang['albums deleted in the database'] = 'albums supprimés de la base de données';
+$lang['photos deleted from the database'] = "photos supprimées de la base de données";
+$lang['photos candidates for metadata synchronization'] = 'photos candidates à la synchronisation avec les méta-données';
+$lang['photos informations synchronized with files metadata'] = 'informations des photos synchronisées avec les méta-données';
+$lang['errors during synchronization'] = "erreurs survenues durant la synchronisation";
+$lang['albums added in the database'] = 'albums ajoutés dans la base de données';
+$lang['photos added in the database'] = "photos ajoutées dans la base de données";
+$lang['photos updated in the database'] = "photos mises à jour dans la base de données";
+$lang['Search for new images in the directories'] = "Chercher les nouvelles images dans les répertoires";
+$lang['added'] = "ajouté";
+$lang['deleted'] = "supprimé";
+$lang['Metadata synchronization results'] = "Résultat de la synchronisation des méta-données";
+$lang['only perform a simulation (no change in database will be made)'] = "Simuler uniquement (aucun changement ne sera fait dans la base de données)";
+$lang['Simulation'] = "Simulation";
+$lang['directories + files'] = "Répertoires + fichiers";
+$lang['only directories'] = "Répertoires uniquement";
+$lang['synchronize files structure with database'] = "Synchroniser la structure des fichiers avec la base de données";
+$lang['synchronize files metadata with database photos informations'] = 'Synchroniser les informations des photos de la base de données à partir des méta-données des fichiers';
+$lang['even already synchronized photos'] = "Même les photos déjà synchronisées";
+$lang['Used metadata'] = "Méta-données employées";
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "Le nom des répertoires et des fichiers ne doit être constitué que de lettres, de chiffres, de \"-\", \"_\" et \".\"";
+$lang['wrong filename'] = "nom de fichier erroné";
+$lang['Upload'] = "Ajout";
+$lang['user "%s" added'] = "utilisateur \"%s\" ajouté";
+$lang['User status'] = "Statut de l'utilisateur";
+$lang['user_status_admin'] = "Administrateur";
+$lang['user_status_generic'] = "Générique";
+$lang['user_status_guest'] = "Invité";
+$lang['user_status_normal'] = "Visiteur";
+$lang['user_status_webmaster'] = "Webmestre";
+$lang['Virtual album'] = 'Album virtuel';
+$lang['Waiting'] = "En attente";
+$lang['default'] = "par défaut";
+$lang['Toggle \'default group\' property'] = "Inverser la propriété 'groupe par défaut'";
+$lang['Advanced features'] = "Fonctions avancées";
+$lang['Overall'] = "Vue globale";
+$lang['Year'] = "Année";
+$lang['Month'] = "Mois";
+$lang['Day'] = "Jour";
+$lang['Pages seen'] = "Pages vues";
+$lang['Time'] = "Heure";
+$lang['IP'] = "IP";
+$lang['Element'] = "Elément";
+$lang['Section'] = "Section";
+$lang['An information email was sent to group "%s"'] = "Un mail d'informations a été envoyé aux membres du groupe \"%s\"";
+$lang['Send an information email to group members'] = "Envoyer un mail d'informations aux membres d'un groupe";
+$lang['Group'] = "Groupe";
+$lang['[%s] Visit album %s'] = '[%s] Venez visiter l\'album %s';
+$lang['Hello,'] = "Bonjour,";
+$lang['See you soon.'] = "A bientôt.";
+$lang['Discover album:'] = 'Venez découvrir l\'album:';
+$lang['Mail content'] = "Contenu du mail";
+$lang['none'] = "aucun";
+$lang['high'] = "high";
+$lang['other'] = "autre";
+$lang['Element type'] = "Type d'élément";
+$lang['Image id'] = "Identifiant image";
+$lang['Summary'] = "Résumé";
+$lang['%d line filtered'] = "%d ligne filtrée";
+$lang['%d lines filtered'] = "%d lignes filtrées";
+$lang['%d guest'] = "%d invité";
+$lang['%d guests'] = "%d invités";
+$lang['Hour'] = "Heure";
+$lang['guest'] = "invité";
+$lang['default values'] = "valeurs par défaut";
+$lang['Guest cannot be deleted'] = "L'invité ne peut pas être supprimé";
+$lang['Default user cannot be deleted'] = "L'utilisateur par défaut ne peut pas être supprimé";
+$lang['Purge history detail'] = "Purger le détail de l'historique";
+$lang['Purge history summary'] = "Purger le récapitulatif de l'historique";
+$lang['Check integrity'] = "Contrôle d'intégrité";
+$lang['Anomaly'] = "Anomalie";
+$lang['Correction'] = "Correction";
+$lang['Automatic correction'] = "Correction automatique";
+$lang['Impossible automatic correction'] = "Correction automatique impossible";
+$lang['Correction applied with success'] = "Correction appliquée avec succès";
+$lang['Correction applied with error'] = "Correction appliquée avec erreur";
+$lang['%d anomaly has been detected.'] = "%d anomalie a été détectée.";
+$lang['%d anomalies have been detected.'] = "%d anomalies ont été détectées.";
+$lang['%d anomaly has been corrected.'] = "%d anomalie a été corrigée.";
+$lang['%d anomalies have been detected corrected.'] = "%d anomalies ont été détectées et corrigées.";
+$lang['%d anomaly has not been corrected.'] = "%d anomalie n'a pu être corrigée.";
+$lang['%d anomalies have not been corrected.'] = "%d anomalies n'ont pu être corrigées.";
+$lang['Go to %s or %s for more informations'] = "Allez sur %s ou %s pour plus d'informations";
+$lang['the forum'] = "le forum";
+$lang['the wiki'] = "le wiki";
+$lang['%s value is not correct file because exif are not supported'] = "La valeur de %s est incorrecte parce que les exif ne sont pas supportés";
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s doit être mis à \"false\" dans votre fichier local/config/config.inc.php";
+$lang['Main "guest" user does not exist'] = "L'utilisateur \"invité\" principal n'existe plus";
+$lang['Main "guest" user status is incorrect'] = "Le statut de l'utilisateur \"invité\" principal est incorrect";
+$lang['Default user does not exist'] = "L'utilisateur par défaut n'existe pas";
+$lang['Main "webmaster" user does not exist'] = "L'utilisateur \"webmestre\" principal n'existe pas";
+$lang['Main "webmaster" user status is incorrect'] = "Le statut de l'utilisateur \"webmestre\" principal est incorrect";
+$lang['User "%s" created with "%s" like password'] = "Utilisateur \"%s\" créé avec le mot de passe \"%s\"";
+$lang['Status of user "%s" updated'] = "Statut de l'utilisateur \"%s\" mis à jour";
+$lang['add new photos to caddie'] = "Ajouter les nouvelles photos au panier";
+$lang['No display'] = "Pas d'affichage";
+$lang['Classic display'] = "Affichage classique";
+$lang['Hoverbox display'] = "Affichage lors du survol";
+$lang['Mail address is obligatory for all users'] = "L'adresse mail est obligatoire pour tous les utilisateurs";
+$lang['Minimum privacy level'] = "Niveau minimal de confidentialité";
+$lang['Privacy level'] = "Niveau de confidentialité";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = "Contacts";
+$lang['Level 2'] = "Amis";
+$lang['Level 4'] = "Famille";
+$lang['Level 8'] = "Admins";
+$lang['Reinitialize check integrity'] = "Réinitialiser les contrôles d'intégrité";
+$lang['Check all'] = "Tout cocher";
+$lang['Uncheck all'] = "Tout décocher";
+$lang['Check automatic corrections'] = "Cocher les corrections automatiques";
+$lang['Apply selected corrections'] = "Appliquer les corrections sélectionnées";
+$lang['Ignore selected anomalies'] = "Ignorer les anomalies sélectionnées";
+$lang['Refresh'] = "Rafraîchir";
+$lang['The anomaly will be ignored until next application version'] = "L'anomalie sera ignorée jusqu'à la prochaine version de l'application";
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = "L'anomalie ne sera plus ignorée du fait de sa correction";
+$lang['%d anomaly has been ignored.'] = "%d anomalie a été ignorée.";
+$lang['%d anomalies have been ignored.'] = "%d anomalies ont été ignorées.";
+$lang['Plugins which need upgrade'] = "Plugins à mettre à jour";
+$lang['Plugin list'] = "Liste des plugins";
+$lang['Check for updates'] = "Rechercher les mises à jour";
+$lang['Other plugins'] = "Autres plugins disponibles";
+$lang['Last revisions'] = "Dernières révisions";
+$lang['Are you sure you want to delete this plugin?'] = "Etes-vous sûr de vouloir supprimer ce plugin?";
+$lang['Are you sure you want to install this plugin?'] = "Etes-vous sûr de vouloir installer ce plugin?";
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "Etes-vous sur de vouloir installer cette mise à jour? Vous devez vérifiez que cette mise à jour ne nécessite pas de désinstallation préalable.";
+$lang['Plugin has been successfully copied'] = "Le plugin a été copié avec succès.";
+$lang['You might go to plugin list to install and activate it.'] = "Rendez-vous dans la liste des plugins pour l'installer et l'activer.";
+$lang['Can\'t create temporary file.'] = "Impossible de créer un fichier temporaire.";
+$lang['Can\'t download archive.'] = "Impossible de télécharger l'archive.";
+$lang['Can\'t read or extract archive.'] = "Impossible de lire ou d'extraire l'archive.";
+$lang['An error occured during extraction (%s).'] = "Une erreur est survenue pendant l'extraction des fichiers (%s).";
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "Vérifiez les permissions du dossier \"plugins\" et de ses sous-dossiers (CHMOD).";
+$lang['Can\'t connect to server.'] = "Impossible de se connecter au serveur.";
+$lang['Purge compiled templates'] = "Purger les templates compilés";
+$lang['ACCESS_0'] = "Accès libre";
+$lang['ACCESS_1'] = "Accès à tous";
+$lang['ACCESS_2'] = "Accès aux utilisateurs inscrits";
+$lang['ACCESS_3'] = "Accès aux administrateurs";
+$lang['ACCESS_4'] = "Accès aux webmestres";
+$lang['ACCESS_5'] = "Pas d'accès";
+$lang['Support'] = "Support";
+$lang['Documentation'] = "Documentation";
+$lang['A new version of Piwigo is available.'] = "Une nouvelle version de Piwigo est disponible.";
+$lang['Piwigo Administration'] = "Administration de Piwigo";
+$lang['Piwigo version'] = "Version de Piwigo";
+$lang['You are running the latest version of Piwigo.'] = "Vous utilisez la dernière version de Piwigo.";
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "La version de %s [%s] installée est incompatible avec la version requise [%s]";
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "Vous devez mettre à jour votre système pour profiter pleinement de l'application, sinon l'application ne fonctionnera pas correctement, voire pas du tout";
+$lang['Deleted on'] = "Supprimés sur";
+$lang['Last hit'] = "dernier score";
+$lang['GD library is missing'] = "la bibliothèque GD est manquante";
+$lang['Templates'] = "Templates (modèles)";
+$lang['Extend for templates'] = "Etendre les templates";
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "Remplacement des templates d'origine par vos templates personnalisés issus du dossier template-extension";
+$lang['Replacers (customized templates)'] = "Remplaçants (templates modifiés)";
+$lang['Original templates'] = "Templates d'origine";
+$lang['Orphan tags deleted'] = 'Tags orphelins supprimés';
+$lang['Optional URL keyword'] = "Paramètre facultatif de l'URL";
+$lang['Templates configuration has been recorded.'] = "La configuration des templates a été enregistrée.";
+$lang['All optimizations have been successfully completed.'] = "Toutes les optimisations ont été réalisées avec succès.";
+$lang['Optimizations have been completed with some errors.'] = "Les optimisations réalisées comportent certaines erreurs.";
+$lang['Modify information'] = "Modifier les informations";
+$lang['nothing'] = "Rien";
+$lang['overrides existing values with empty ones'] = "Ecraser les données existantes avec des données vides";
+$lang['Manage photo ranks'] = 'Gérer l\'ordre des photos';
+$lang['Edit ranks'] = "Modifier l'ordre (le rang)";
+$lang['No photo in this album'] = 'Aucune photo dans cet album';
+$lang['Images manual order was saved'] = "L'ordre manuel des images a été sauvegardé";
+$lang['ranks'] = "rangs";
+$lang['By rank'] = "Par le rang";
+$lang['Manual order'] = 'Ordre manuel';
+$lang['Drag to re-order'] = "Cliquer-glisser pour ré-organiser";
+$lang['Quick Local Synchronization'] = "Synchronisation Rapide";
+$lang['No photo can be deleted'] = "Aucune photo ne peut être supprimée";
+$lang['Delete selected photos'] = "Supprimer les photos sélectionnées";
+$lang['%d photo was deleted'] = "%d photo a été supprimée";
+$lang['%d photos were deleted'] = "%d photos ont été supprimées";
+$lang['Downloads'] = "Téléchargements";
+$lang['Released on'] = "Publié le";
+$lang['Number of downloads'] = "Nombre de téléchargements";
+$lang['Piwigo Announcements Newsletter'] = "Newsletter Piwigo";
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = "Gardez le contact avec le projet Piwigo, abonnez-vous à la newsletter. Vous recevrez un email lorsqu'une nouvelle version est disponible (parfois un bug de sécurité est corrigé, il est important de le savoir et de mettre à jour) ou qu'un événement majeur survient sur le projet. Quelques messages par an seulement.";
+$lang['Subscribe %s'] = "Abonner %s";
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "Abonner %s à la newsletter Piwigo";
+$lang['Purge search history'] = "Purger l'historique des recherches";
+$lang['Hide'] = "Masquer";
+$lang['Password is missing. Please enter the password.'] = "Le mot de passe manque. Veuillez saisir le mot de passe.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "La confirmation du mot de passe manque. Veuillez confirmer le mot de passe choisi.";
+$lang['Allow users to edit their own comments'] = "Autoriser les utilisateurs à modifier leurs propres commentaires";
+$lang['Allow users to delete their own comments'] = "Autoriser les utilisateurs à supprimer leurs propres commentaires";
+$lang['Email administrators when a comment is modified'] = "Notifier les administrateurs quand un commentaire est modifié";
+$lang['Email administrators when a comment is deleted'] = "Notifier les administrateurs quand un commentaire est supprimé";
+$lang['Cannot delete the old permalink !'] = "Impossible de supprimer cet ancien lien permanent !";
+$lang['Hit'] = "score";
+$lang['Tools'] = "Outils";
+$lang['Photos'] = "Photos";
+$lang['Themes'] = "Thèmes";
+$lang['Instructions to use Piwigo'] = "Instructions pour utiliser Piwigo";
+$lang['Installed Themes'] = "Thèmes installés";
+$lang['Add New Theme'] = "Ajouter un thème";
+$lang['Forbid this theme to users'] = "Interdire ce thème aux utilisateurs";
+$lang['Set as default theme for unregistered and new users'] = "Thème par défaut pour les invités et les nouveaux utilisateurs";
+$lang['unknown'] = 'inconnu';
+$lang['Upload Photos'] = 'Ajoutez des photos';
+$lang['Drop into album'] = 'Choisir un album';
+$lang['+ Add an upload box'] = '+ Ajouter une autre boîte de transfert';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Créez le répertoire "%s" à la racine de votre installation Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Donnez les droits en écriture (chmod 777) sur le répertoire "%s" à la racine de votre installation Piwigo';
+$lang['existing album'] = 'album existant';
+$lang['create a new album'] = 'créer un nouvel album';
+$lang['Album name'] = 'Nom de l\'album';
+$lang['Album "%s" has been added'] = 'l\'album "%s" a été ajouté';
+$lang['Uploaded Photos'] = 'Photos ajoutées ';
+$lang['%d photos uploaded'] = '%d photos ajoutées';
+$lang['Privacy level set to "%s"'] = 'Niveau de confidentialité "%s"';
+$lang['Album "%s" now contains %d photos'] = 'l\'album "%s" contient désormais %d photos';
+$lang['Manage this set of %d photos'] = 'Gérer ce lot de %d photos';
+$lang['Select files'] = 'Choisir des fichiers';
+$lang['Everybody'] = 'Tout le monde';
+$lang['Who can see these photos?'] = 'Qui peut voir ces photos ?';
+$lang['Who can see this photo?'] = 'Qui peut voir cette photo ?';
+$lang['Settings'] = 'Configuration';
+$lang['Resize'] = 'Redimensionner';
+$lang['Maximum width'] = 'Largeur maximum';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height'] = 'Hauteur maximum';
+$lang['Image Quality'] = 'Qualité d\'image';
+$lang['Thumbnail'] = 'Miniature';
+$lang['Save Settings'] = 'Enregistrer les paramètres';
+$lang['Your configuration settings are saved'] = 'Vos paramètres de configuration sont enregistrés';
+$lang['Active Themes'] = 'Thèmes activés';
+$lang['Add write access to the "%s" directory'] = 'Ajoutez l\'accès en écriture pour le répertoire "%s"';
+$lang['Administration Home'] = 'Accueil administration';
+$lang['Change Admin Colors'] = 'Modifier les couleurs de l\'administration';
+$lang['Delete this theme'] = 'Supprimer ce thème';
+$lang['Directory does not exist'] = 'Le répertoire n\'existe pas';
+$lang['Download,'] = 'Téléchargez,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronisation';
+$lang['Get Support on Piwigo Forum'] = 'Obtenir de l\'aide sur le forum Piwigo';
+$lang['Help Me'] = 'A l\'aide';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'L\'activation de ce thème est impossible, car le thème parent est manquant : %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ce thème ne peut être supprimé, car d\'autres thème dépendent de lui : %s';
+$lang['Inactive Themes'] = 'Thèmes désactivés';
+$lang['Install on your computer,'] = 'Installez sur votre ordinateur,';
+$lang['Make this theme available to users'] = 'Rendre ce thème disponible aux utilisateurs';
+$lang['Page end'] = 'Fin de la page';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = 'Lire la documentation Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Démarrez pLoader et ajoutez vos photos.';
+$lang['Switch to clear or dark colors for administration'] = 'Choisir des couleurs claires ou sombres pour l\'administration';
+$lang['Theme has been successfully installed'] = 'Le thème a été installé avec succès';
+$lang['Visit Gallery'] = 'Visiter la galerie';
+$lang['Visit Piwigo project website'] = 'Visiter le site web du projet Piwigo';
+$lang['Guest Settings'] = 'Paramètres invité';
+$lang['Main Page'] = 'Page principale';
+$lang['Photo Page'] = 'Page de la photo';
+$lang['Activate Navigation Bar'] = 'Activer la barre de navigation';
+$lang['Activate Navigation Thumbnails'] = 'Activer les miniatures de navigation';
+$lang['Activate icon "%s"'] = 'Activer l\'icône "%s"';
+$lang['Photo Properties'] = 'Propriétés de la photo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifie <em>Piwigo Uploader</em>. Depuis votre ordinateur, pLoader prépare vos photos et les transfère vers votre galerie photo Piwigo.';
+$lang['Languages'] = 'Langues';
+$lang['Installed Languages'] = 'Langues installées';
+$lang['Add New Language'] = 'Ajouter une langue';
+$lang['Language has been successfully installed'] = 'La langue a été installée avec succès';
+$lang['Allow user customization'] = "Permettre la personnalisation de l'affichage";
+$lang['Select:'] = 'Sélectionner :';
+$lang['None'] = 'Rien';
+$lang['Invert'] = 'Inverser';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible de désactiver ce thème, il doit rester au moins un thème activé.';
+$lang['Webmaster status is required.'] = 'Vous devez avoir le status de "webmaster".';
+$lang['Bound Theme'] = 'Thème rattaché';
+$lang['Allow rating'] = "Permettre les notations";
+$lang['Select at least one comment'] = 'Sélectionnez au moins un commentaire';
+$lang['Active Plugins'] = 'Plugins activés';
+$lang['Inactive Plugins'] = 'Plugins désactivés';
+$lang['Missing Plugins'] = 'Plugins manquants';
+$lang['Uninstalled Plugins'] = 'Plugins non installés';
+$lang['By %s'] = 'Par %s';
+$lang['Visit plugin site'] = 'Visitez le site du plugin';
+$lang['Active Languages'] = 'Langues activées';
+$lang['Delete this language'] = 'Supprimer cette langue';
+$lang['Forbid this language to users'] = 'Interdire cette langue aux utilisateurs';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible de désactiver cette langue, commencez par définir une autre langue par défaut.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible de désactiver cette langue, il doit rester au moins une langue.';
+$lang['Inactive Languages'] = 'Langues désactivées';
+$lang['Make this language available to users'] = 'Rendre cette langue disponible aux utilisateurs';
+$lang['Set as default language for unregistered and new users'] = 'Langue par défaut pour les invités et les nouveaux utilisateurs';
+$lang['Add Photos'] = 'Ajouter des photos';
+$lang['Miscellaneous'] = 'Divers';
+$lang['The following tag was deleted'] = 'Le tag suivant a été supprimé';
+$lang['Virtual Links'] = 'Liens virtuels';
+$lang['There is no other language available.'] = 'Il n\'y a pas d\'autre langue disponible.';
+$lang['There is no other plugin available.'] = 'Il n\'y a pas d\'autre plugin disponible.';
+$lang['There is no other theme available.'] = 'Il n\'y a pas d\'autre thème disponible.';
+$lang['delete'] = 'effacer';
+$lang['Add another set of photos'] = 'Ajouter d\'autres photos';
+$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre des éléments du menu a été mis à jour avec succès.';
+$lang['This theme was not designed to be directly activated'] = 'Ce thème n\'est pas conçu pour être activé directement';
+$lang['Pending Comments'] = 'Commentaires en attente';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Dans votre fichier php.ini, la variable upload_max_filesize (%sB) est plus grande que post_max_size (%sB), vous devriez modifier ce paramétrage';
+$lang['Exif extension not available, admin should disable exif use'] = 'L\'extension Exif n\'est pas disponible, un administrateur devrait désactiver l\'utilisation des métadonnées Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Le poids du fichier transféré dépasse la valeur de upload_max_filesize définie dans votre fichier php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Le poids total des fichiers transférés dépasse la valeur de post_max_size dans votre fichier php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Le poids du fichier transféré dépasse la valeur de MAX_FILE_SIZE définie dans le formulaire HTML';
+$lang['The uploaded file was only partially uploaded'] = 'Le fichier n\'a été que partiellement transféré';
+$lang['No file was uploaded'] = 'Aucun fichier n\'a été transféré';
+$lang['Missing a temporary folder'] = 'Impossible de trouver le répertoire temporaire';
+$lang['Failed to write file to disk'] = 'Échec à l\'écriture du fichier sur le serveur';
+$lang['File upload stopped by extension'] = 'Le transfert du fichier a été arrêté par une extension';
+$lang['Unknown upload error'] = 'Erreur inconnue survenue lors du transfert';
+$lang['Error on file "%s" : %s'] = 'Erreur sur le fichier "%s" : %s';
+$lang['Menu Management'] = 'Menus';
+$lang['automatic order'] = 'ordre automatique';
+$lang['manual order'] = 'ordre manuel';
+$lang['Albums automatically sorted'] = 'Les albums ont été triés automatiquement';
+$lang['The original maximum width must be a number between %d and %d'] = 'La largeur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'La hauteur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['The original image quality must be a number between %d and %d'] = 'La qualité d\'image pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d';
+$lang['Batch Manager'] = 'Gestion par lot';
+$lang['include child albums'] = 'inclure les sous-albums';
+$lang['Selection'] = 'Sélection';
+$lang['Action'] = 'Action';
+$lang['Set author'] = 'Définir l\'auteur';
+$lang['Set title'] = 'Définir le titre';
+$lang['Set creation date'] = 'Définir la date de création';
+$lang['Apply action'] = 'Appliquer l\'action';
+$lang['on the %d selected photos'] = 'sur les %d photos sélectionnées';
+$lang['%d of %d photos selected'] = '%d photos sur %d sont sélectionnées';
+$lang['No photo selected, %d photos in current set'] = 'Aucune photo sélectionnée parmi les %d photos du lot';
+$lang['All %d photos are selected'] = 'Toutes les %d photos du lot sont sélectionnées';
+$lang['remove this filter'] = 'supprimer ce filtre';
+$lang['Duplicates'] = 'Doublons';
+$lang['Add a filter'] = 'Ajouter un filtre';
+$lang['Remove all filters'] = 'Supprimer tous les filtres';
+$lang['Refresh photo set'] = 'Rafraîchir le lot de photos';
+$lang['The whole page'] = 'Toute la page';
+$lang['The whole set'] = 'Tout le lot';
+$lang['No photo in the current set.'] = 'Aucune photo dans le lot.';
+$lang['No photo selected, no action possible.'] = 'Aucune photo sélectionnée, aucune action possible.';
+$lang['Choose an action'] = 'Choisir une action';
+$lang['remove author'] = 'supprimer l\'auteur';
+$lang['Type here the author name'] = 'Entrez ici le nom de l\'auteur';
+$lang['remove title'] = 'supprimer le titre';
+$lang['Type here the title'] = 'Entrez ici le titre';
+$lang['remove creation date'] = 'supprimer la date de création';
+$lang['Week starts on'] = 'La semaine commence le';
+$lang['You have %d orphan tags: %s.'] = 'Vous avez %d tags orphelins: %s.';
+$lang['Delete orphan tags'] = 'Supprimer les tags orphelins';
+$lang['delete photo'] = 'supprimer la photo';
+$lang['Remove from caddie'] = 'Retirer du panier';
+$lang['Themes which need upgrade'] = 'Thèmes à mettre à jour';
+$lang['Languages which need upgrade'] = 'Langues à mettre à jour';
+$lang['All themes are up to date.'] = 'Tous les thèmes sont à jour.';
+$lang['All plugins are up to date.'] = 'Tous les plugins sont à jour.';
+$lang['All languages are up to date.'] = 'Toutes les langues sont à jour.';
+$lang['Visit theme site'] = 'Visitez le site du thème';
+$lang['Visit language site'] = 'Visitez le site de la langue';
+$lang['New Version'] = 'Nouvelle version';
+$lang['Obsolete Plugins'] = 'Plugins obsolètes';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENTION! Ce plugin n\'a pas l\'air d\'être compatible avec votre version de Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Voulez-vous l\'activer quand même?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'CE PLUGIN FAIT DÉSORMAIS PARTIE DU CORE DE PIWIGO! SUPPRIMEZ-LE.';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERREUR: CE PLUGIN EST MANQUANT MAIS TOUJOURS INSTALLÉ! DÉSINSTALLEZ-LE.';
+$lang['display'] = 'Afficher';
+$lang['Restore'] = "Restaurer";
+$lang['Restore default configuration. You will lose your plugin settings!'] = "Restaurer la configuration par défaut? Vous perdrez vos réglages personnels !";
+$lang['Thumbnails generation in progress...'] = 'Génération des miniatures en cours...';
+$lang['Photos generation in progress...'] = 'Génération des photos en cours...';
+$lang['%s photos have been regenerated'] = '%s photos ont été régénérées';
+$lang['%s photos can not be regenerated'] = '%s photos ne peuvent pas être régénérées';
+$lang['Updates'] = 'Mises à jour';
+$lang['Update in progress... Please wait.'] = 'Mise à jour en cours... Veuillez patienter.';
+$lang['Ignore this update'] = 'Ignorer cette mise à jour';
+$lang['Reset ignored updates'] = 'Réinitialiser les mises à jour ignorées';
+$lang['Update All'] = 'Tout mettre à jour';
+$lang['ERROR'] = 'ERREUR';
+$lang['Update Complete'] = 'Mise à jour effectuée';
+$lang['Piwigo Update'] = 'Mise à jour de Piwigo';
+$lang['Extensions Update'] = 'Mise à jour des extensions';
+$lang['All extensions are up to date.'] = 'Toutes les extensions sont à jour.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Les plugins suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Les thèmes suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:';
+$lang['I decide to update anyway'] = 'Je décide de migrer quand même';
+$lang['Update to Piwigo %s'] = 'Mettre à jour vers Piwigo %s';
+$lang['Two updates are available'] = 'Deux mises à jour sont disponibles';
+$lang['This is a minor update, with only bug corrections.'] = 'Ceci est une mise à jour mineure, avec uniquement des corrections de bugs.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Ceci est une mise à jour majeure, qui contient <a href="%s">un tas de nouveautés</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Certains thèmes ou plugins ne sont peut-être pas encore disponibles.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vous pouvez mettre à jour vers Piwigo %s directement, sans passer par Piwigo %s (recommandé).';
+$lang['Save Template Directory'] = 'Sauvegarder le dossier template';
+$lang['Dump Database'] = 'Sauvegarder la base de données';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclure les données de l\'historique (Attention: risque de dépassement de la limite mémoire du serveur)';
+$lang['Unable to dump database.'] = 'Impossible de sauvegarder la base de données.';
+$lang['Some upgrades are available for extensions.'] = 'Des mises à jour sont disponibles pour les extensions.';
+$lang['Please wait...'] = 'Veuillez patienter...';
+$lang['Ignore All'] = 'Tout ignorer';
+$lang['Crop'] = 'Retailler';
+$lang['Width'] = 'Largeur';
+$lang['Height'] = 'Hauteur';
+$lang['Follow Orientation'] = "Respecter l'orientation";
+$lang['Graphics Library'] = 'Bibliothèque graphique';
+$lang['Show menubar'] = 'Afficher le menu';
+$lang['No results'] = 'Pas de résultat';
+$lang['Type in a search term'] = 'Entrez un terme de recherche';
+$lang['Searching...'] = 'Recherche...';
+$lang['new'] = 'nouveau';
+$lang['Default photos order'] = "Ordre par défaut des photos";
+$lang['Activate icon "new" next to albums and pictures'] = 'Afficher l\'icône "nouveau" à côté des albums et des photos';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Vous ne pouvez définir l\'ordre par défaut des photos car vous avez un paramètre personnalisé dans votre configuration locale.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Vous avez spécifié <i>$conf[\'order_by\']</i> dans votre fichier de configuration, ce paramètre est obsolète, veuillez le supprimer ou le renommer en <i>$conf[\'order_by_custom\']</i> !';
+$lang['Add a criteria'] = 'Ajouter un critère';
+$lang['... or '] = '... ou bien ';
+$lang['Create'] = 'Créer';
+$lang['Start Upload'] = 'Démarrer le transfert';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Vous utilisez le formulaire Flash. Des problèmes ? Essayez le <a href="%s">formulaire HTML</a> à la place.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Vous utilisez le formulaire HTML. Essayez le <a href="%s">formulaire Flash</a> à la place.';
+$lang['Maximum file size: %sB.'] = 'Poids maximum des fichiers : %sB.';
+$lang['Allowed file types: %s.'] = 'Types de fichiers autorisés : %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Résolution maximum approximative : %dM pixels (soit %dx%d pixels).';
+$lang['Manage Permissions'] = 'Gérer les permissions';
+$lang['Photo %s of %s'] = 'Photo %s sur %s';
+$lang['show details'] = 'montrer les détails';
+$lang['hide details'] = 'cacher les détails';
+$lang['Merge tags'] = 'Fusionner les tags';
+$lang['Select the destination tag'] = 'Sélectionnez le tag de destination';
+$lang['(this tag will be deleted)'] = '(ce tag sera supprimé)';
+$lang['Confirm merge'] = 'Confirmez la fusion';
+$lang['Merge selected tags'] = 'Fusionner les tags sélectionnés';
+$lang['No destination tag selected'] = 'Vous n\'avez pas sélectionné de tag de destination';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Les tags <em>%s</em> ont été fusionnés dans le tag <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Sélectionnez au moins deux tags pour la fusion';
+$lang['Average rate'] = 'Note moyenne';
+$lang['Rate'] = 'Note';
+$lang['Learn more'] = 'En savoir plus';
+$lang['Select an album'] = 'Selectionnez un album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Par défaut, Piwigo créera la nouvelle taille web à partir de la HD (haute définition).';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si la HD n\'est pas disponible et que la version actuelle de la taille web est plus grande que les dimensions ci-dessous, alors Piwigo la considérera comme HD et créera la nouvelle taille web à partir de celle-ci.';
+$lang['An error has occured during upgrade.'] = 'Une erreur est survenue pendant la mise à jour.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Impossible d\'extraire les fichiers. Veuillez vérifier les permissions des fichiers de votre installation.<br><a href="%s">Cliquez ici pour voir le rapport d\'erreur</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne peut pas récupérer le fichier de mise à jour depuis le serveur';
+$lang['Last import'] = 'Dernier import';
+$lang['With no album'] = 'Sans album';
+$lang['With no tag'] = 'Sans tag';
+$lang['With no virtual album'] = 'Sans album virtuel';
+$lang['Predefined filter'] = 'Filtre prédéfini';
+$lang['Add tags'] = "Ajouter les tags";
+$lang['Synchronize metadata'] = "Synchroniser les méta-données";
+$lang['Add to caddie'] = 'Ajouter au panier';
+$lang['Zoom'] = 'Zoom';
+$lang['Resize after upload'] = 'Redimensionner après transfert';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionnement après transfert désactivé car GD est la librairie graphique utilisée actuellement';
+$lang['Original Size'] = 'Taille originale';
+$lang['Send connection settings by email'] = 'Envoyer les identifiants par email';
+$lang['Activate comments'] = 'Activer les commentaires';
+$lang['Default comments order'] = 'Ordre par défaut des commentaires';
+$lang['A locked gallery is only visible to administrators'] = 'Une galerie verrouillée n\'est visible que des administrateurs';
+$lang['Unlock gallery'] = 'Déverouiller la galerie';
+$lang['Gallery unlocked'] = 'Galerie déverouillée';
+$lang['Notify administrators when a comment is'] = 'Notifier les administrateurs lorsqu\'un commentaire est';
+$lang['modified'] = 'modifié';
+$lang['deleted'] = 'supprimé';
+$lang['pending validation'] = 'en attente de validation';
+$lang['Save visits in history for'] = 'Historiser les visites des ';
+$lang['simple visitors'] = 'simple visiteurs';
+$lang['registered users'] = 'utilisateurs enregistrés';
+$lang['administrators'] = 'administrateurs';
+$lang['This album contains %d photos, added on %s.'] = 'Cet album contient %d photos, ajoutées le %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Cet album contient %d photos, ajoutées entre le %s et le %s.';
+$lang['This album contains no photo.'] = 'Cet album ne contient pas de photo.';
+$lang['%s has been successfully updated.'] = '%s a été mis à jour avec succès.';
+$lang['Move to album'] = 'Déplacer vers l\'album';
+$lang['You can activate only one mobile theme.'] = 'Vous ne pouvez activer qu\'un seul thème mobile.';
+$lang['Center of interest'] = 'Centre d\'interêt';
+$lang['Not cropped correctly?'] = 'La photo n\'est pas recadrée correctement ?';
+$lang['Photo name'] = 'Nom de la photo';
+$lang['Automatic sort order'] = 'Ordre de tri automatique';
+$lang['apply automatic sort order'] = 'appliquer un ordre de tri automatique';
+$lang['Save manual order'] = 'Sauvegarder l\'ordre manuel';
+$lang['cancel manual order'] = 'annuler l\'ordre manuel';
+$lang['Cancel'] = 'Annuler';
+$lang['List'] = 'Liste';
+$lang['Web Form'] = 'Formulaire web';
+$lang['Applications'] = 'Applications';
+$lang['Available versions for'] = 'Versions disponibles pour';
+$lang['Available on'] = 'Disponible sur';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pour iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'application <em>Piwigo pour iOS</em> vous permet de connecter votre iPhone, iPad ou iPod Touch à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.';
+$lang['Piwigo for Android'] = 'Piwigo pour Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'application <em>Piwigo pour Android</em> vous permet de connecter votre smartphone ou votre tablette Android à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publication Piwigo pour Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom est un logiciel de photographie conçu pour gérer d\'importantes collections de photos numériques et les post-traiter.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Le plugin de publication Piwigo pour Lightroom vous permet d\'exporter et synchroniser vos photos de Lightroom vers votre galerie Piwigo.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de publication Piwigo pour Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell est un gestionnaire de photos opensource pour Linux. Il a été sélectionné comme gestionnaire par défaut sur Ubuntu et Fedora.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Sur votre Linux, installez simplement Shotwell avec votre gestionnaire de paquet et activez l\'option de publication Piwigo.';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin de publication Piwigo pour digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam est un logiciel libre de gestion avancée de photos numériques pour Linux, Windows et MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam est conçu pour les photographes qui souhaitent visualiser, gérer, éditer, améliorer, organiser, tagger et partager leurs photos.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pour exporter vos photos de digiKam vers Piwigo, installez simplement digiKam et les kipi-plugins.';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin d\'export Piwigo export pour iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto est le gestionnaire de photos disponible par défaut sur MacOSX. Le plugin d\'export Piwigo se connecter à votre galerie Piwigo et vous permet de créer des albums et d\'y ajouter vos photos.';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin d\'export Piwigo pour Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture est un outil puissant pour post-traiter vos photos et gérer votre photothèque sur Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture est conçu pour les photographes professionnels avec la simplicité d\'iPhoto.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Le plugin d\'export Piwigo vous permet de créer des albums et d\'y ajouter vos photos.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery Android) est un client libre (GPL v3) pour Piwigo sur Android.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Ses fonctionnalités incluent la navigation sur la galerie, la création d\'albums et l\'ajout de photos.';
+$lang['any visitor can see this album'] = 'n\'importe quel visiteur peut voir cet album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'les visiteurs doivent se connecter et avoir les permissions nécessaires pour voir cet album';
+$lang['Groups and users'] = 'Groupes et utilisateurs';
+$lang['Permission granted for groups'] = 'Permission accordée pour les groupes';
+$lang['Select groups...'] = 'Sélectionnez les groupes...';
+$lang['There is no group in this gallery.'] = 'Il n\'y a pas de groupe dans cette galerie.';
+$lang['Permission granted for users'] = 'Permission accordée pour les utilisateurs';
+$lang['Select users...'] = 'Sélectionnez les utilisateurs...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilisateurs ont automatiquement la permission car ils appartiennent à un groupe autorisé.';
+$lang['include photos with lower privacy level'] = 'inclure les photos d\'un niveau de confidentialité inférieur';
+$lang['No group is permitted to see this private album'] = 'Aucun groupe n\'est autorisé à voir cet album privé';
+$lang['Permission management'] = 'Gestion des permissions';
+$lang['Photo sizes with crop'] = 'Tailles de photo avec retaillage';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Le centre d\'intérêt est la zone la plus représentative de la photo.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pour les tailles de photo avec retaillage, comme la taille "Carré", Piwigo essaiera d\'inclure au mieux ce centre d\'intérêt.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Par défaut, le centre d\'intérêt est placé au milieu de la photo.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Sélectionnez une zone avec votre souris pour définir un nouveau centre d\'intérêt.';
+$lang['custom'] = 'Personnalisé';
+$lang['Delete multiple size images'] = 'Supprimer les tailles multiples des photos';
+$lang['Generate multiple size images'] = 'Générer les tailles multiples des photos';
+$lang['add a new watermark'] = 'Ajouter un nouveau filigrane';
+$lang['Apply watermark if height is bigger than'] = 'Appliquer le filigrane si la hauteur est supérieure à';
+$lang['Apply watermark if width is bigger than'] = 'Appliquer le filigrane si la largeur est supérieure à';
+$lang['bottom left corner'] = 'coin inférieur gauche';
+$lang['bottom right corner'] = 'coin inférieur droit';
+$lang['middle'] = 'milieu';
+$lang['Opacity'] = 'Opacité';
+$lang['Select a file'] = 'Sélectionnez un fichier';
+$lang['top left corner'] = 'coin supérieur gauche';
+$lang['top right corner'] = 'coin supérieur droit';
+$lang['X Position'] = 'Position X';
+$lang['X Repeat'] = 'Répétition X';
+$lang['Y Position'] = 'Position Y';
+$lang['Multiple Size'] = 'Tailles multiples';
+$lang['Watermark'] = 'Filigrane';
+$lang['Original file : %s'] = 'Fichier original : %s';
+$lang['Posted %s on %s'] = 'Postée %s le %s';
+$lang['Added by %s'] = 'Ajouté par %s';
+$lang['Visited %d times'] = 'Visitée %d fois';
+$lang['Numeric identifier : %d'] = 'Identifiant numérique : %d';
+$lang['%s ago'] = 'il y a %s';
+$lang['%s in the future'] = '%s dans le futur';
+$lang['Rated %d times, score : %.2f'] = 'Notée %d fois, score : %.2f';
+$lang['%d year'] = '%d an';
+$lang['%d years'] = '%d ans';
+$lang['%d month'] = '%d mois';
+$lang['%d months'] = '%d mois';
+$lang['%d week'] = '%d semaine';
+$lang['%d weeks'] = '%d semaines';
+$lang['%d day'] = '%d jour';
+$lang['%d days'] = '%d jours';
+$lang['%d hour'] = '%d heure';
+$lang['%d hours'] = '%d heures';
+$lang['%d minute'] = '%d minute';
+$lang['%d minutes'] = '%d minutes';
+$lang['%d second'] = '%d seconde';
+$lang['%d seconds'] = '%d secondes';
+$lang['Sharpen'] = 'Renforcer la netteté';
+$lang['Edit photo'] = 'Éditer la photo';
+$lang['create a new site'] = 'créer un nouveau site';
+$lang['No order field selected'] = 'Aucun critère de tri sélectionné';
+$lang['Name of the duplicate'] = "Nom du duplicata";
+$lang['Source tag'] = 'Tag source';
+$lang['Tag "%s" is now a duplicate of "%s"'] = "Le tag \"%s\" est désormais une copie de \"%s\"";
+$lang['Duplicate selected tags'] = 'Dupliquer les tags sélectionnés';
+$lang['Invalid dimension'] = 'Dimension invalide';
+$lang['Minimum width'] = 'Largeur minimale';
+$lang['Minimum height'] = 'Hauteur minimale';
+$lang['Portrait'] = 'Portrait';
+$lang['Landscape'] = 'Paysage';
+$lang['Panorama'] = 'Panorama';
+$lang['Manage photos'] = 'Gérer les photos';
+$lang['View in gallery'] = 'Voir dans la galerie';
+$lang['Number of albums per page'] = 'Nombre d\'albums par page';
+$lang['Ratio'] = 'Ratio';
+$lang['between %d and %d pixels'] = 'entre %d et %d pixels';
+$lang['between %.2f and %.2f'] = 'entre %.2f et %.2f';
+$lang['Manage the members'] = 'Gérer les membres';
+$lang['Type here the name of the new group'] = 'Inscrivez ici le nom du nouveau groupe';
+$lang['No group selected, no action possible.'] = 'Pas de groupes sélectionnés, pas d\'actions possibles.';
+$lang['Please select at least two groups'] = 'Merci de sélectionner au moins deux groupes';
+$lang['Duplicate'] = 'Dupliquer';
+$lang['Merge selected groups'] = 'Fusionner les groupes sélectionnés';
+$lang['This group will be set to default'] = "Ce groupe deviendra par défaut";
+$lang['This group will be unset to default'] = "Ce groupe ne sera plus par défaut";
+$lang['No members to manage'] = "Aucun membre à gérer";
+$lang['Rename'] = 'Renommer';
+$lang['Purge user cache'] = 'Purger le cache utilisateur';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La tailles des images sera réduite à %dx%d pixels.';
+$lang['Mail theme'] = 'Thème des mails';
+$lang['Select at least one tag'] = 'Sélectionnez au moins un tag';
+$lang['Basic settings'] = 'Paramètres de base';
+$lang['Loading...'] = 'Chargement...';
+$lang['Show %s users'] = 'Afficher %s utilisateurs';
+$lang['No matching user found'] = 'Aucun utilisateur à afficher';
+$lang['Showing %s to %s of %s users'] = 'Affichage des utilisateurs %s à %s sur %s';
+$lang['(filtered from %s total users)'] = '(filtré de %s utilisateurs au total)';
+$lang['No user selected, no action possible.'] = 'Aucun utilisateur sélectionné, aucune action possible.';
+$lang['%d of %d users selected'] = '%d des %d utilisateurs sélectionnés';
+$lang['No user selected of %d users'] = 'Aucun utilisateur sélectionné sur les %d';
+$lang['All %d users are selected'] = 'Tous les %d utilisateurs sont sélectionnés';
+$lang['on the %d selected users'] = 'sur les %d utilisateurs sélectionnés';
+$lang['User %s added'] = 'Utilisateur %s ajouté';
+$lang['Registered on %s, %s.'] = 'Enregistré depuis le %s, %s.';
+$lang['Last visit on %s, %s.'] = 'Dernière visite le %s, %s.';
+$lang['Change password'] = 'Changer le mot de passe';
+$lang['Password updated'] = 'Mot de passe mis à jour';
+$lang['Change username'] = 'Changer le nom d\'utilisateur';
+$lang['Update user'] = 'Mettre à jour l\'utilisateur';
+$lang['User %s updated'] = 'Utilisateur %s mis à jour';
+$lang['Users modified'] = 'Utilisateurs modifiés';
+?>
Index: /tags/2.6.0RC1/language/fr_FR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Français [FR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=421
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Français';
+$lang_info['country'] = 'France';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'fr';
+$lang_info['zero_plural'] = false;
+
+$lang['%d album updated'] = '%d album mis à jour';
+$lang['%d albums updated'] = '%d albums mis à jour';
+$lang['%d comment to validate'] = '%d commentaire utilisateur à valider';
+$lang['%d comment'] = '%d commentaire';
+$lang['%d comments to validate'] = '%d commentaires utilisateurs à valider';
+$lang['%d comments'] = '%d commentaires';
+$lang['%d hit'] = 'vue %d fois';
+$lang['%d hits'] = 'vue %d fois';
+$lang['%d Kb'] = '%d Ko';
+$lang['%d new comment'] = '%d nouveau commentaire utilisateur';
+$lang['%d new comments'] = '%d nouveaux commentaires utilisateurs';
+$lang['%d new photo'] = '%d nouvelle photo';
+$lang['%d new photos'] = '%d nouvelles photos';
+$lang['%d new user'] = '%d nouvel utilisateur';
+$lang['%d new users'] = '%d nouveaux utilisateurs';
+$lang['%d photo is also linked to current tags'] = '%d photo est également liée aux tags courants';
+$lang['%d photo'] = '%d photo';
+$lang['%d photos are also linked to current tags'] = '%d photos sont également liées aux tags courants';
+$lang['%d photos'] = '%d photos';
+$lang['%d rates'] = '%d notes';
+$lang['(!) This comment requires validation'] = '(!) Ce commentaire doit être validé';
+$lang['... or browse your empty gallery'] = '... ou naviguez sur votre galerie vide';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ou désactivez ce message, je me débrouillerai par moi-même';
+$lang['A comment on your site'] = 'Un commentaire sur le site';
+$lang['About Piwigo'] = 'À propos de Piwigo';
+$lang['About'] = 'À propos';
+$lang['Accelerate diaporama speed'] = 'Accélerer la vitesse du diaporama';
+$lang['Add a comment'] = 'Ajouter un commentaire';
+$lang['add this photo to your favorites'] = 'ajouter cette photo à vos favoris';
+$lang['Admin: %s'] = 'Administration : %s';
+$lang['Administration'] = 'Administration';
+$lang['Album results for'] = 'Résultats des albums pour';
+$lang['Album'] = 'Album';
+$lang['Album: %s'] = 'Album : %s';
+$lang['Albums'] = 'Albums';
+$lang['All tags'] = 'Tous les tags';
+$lang['All'] = 'Tout';
+$lang['all'] = 'tout';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrateur doit valider votre commentaire pour qu\'il devienne visible.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Système anti-abus : merci de patienter avant d\'ajouter un nouveau commentaire';
+$lang['Any tag'] = 'N\'importe quel tag';
+$lang['Are you sure?'] = "Etes-vous sûr ?";
+$lang['ascending'] = 'croissant';
+$lang['At least one listed rule must be satisfied.'] = 'Au moins un des critères doit être satisfait.';
+$lang['Author'] = 'Auteur';
+$lang['author(s) : %s'] = 'auteur(s) : %s';
+$lang['Author: %s'] = 'Auteur : %s';
+$lang['Auto login'] = 'Connexion auto';
+$lang['available for administrators only'] = 'disponible uniquement pour les administrateurs';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Statut de l\'utilisateur "guest" non conforme, utilisation du statut par défaut. Veuillez prévenir le webmestre.';
+$lang['Best rated'] = 'Mieux notées';
+$lang['Browser: %s'] = 'Navigateur : %s';
+$lang['Calendar'] = 'Calendrier';
+$lang['Change my password'] = 'Changer mon mot de passe';
+$lang['Check your email for the confirmation link'] = 'Vérifiez vos emails pour trouver le lien de confirmation';
+$lang['chronology_monthly_calendar'] = 'Calendrier mensuel';
+$lang['chronology_monthly_list'] = 'Liste mensuelle';
+$lang['chronology_weekly_list'] = 'Liste hebdomadaire';
+$lang['Click here if your browser does not automatically forward you'] = 'Cliquez ici si votre navigateur ne vous redirige pas.';
+$lang['Click on the photo to see it in high definition'] = 'Cliquer sur la photo pour la visualiser en haute définition';
+$lang['Close this window'] = 'Fermer cette fenêtre';
+$lang['cloud'] = 'nuage';
+$lang['Comment by %s'] = 'Commentaire par %s';
+$lang['comment date'] = 'date du commentaire';
+$lang['Comment'] = 'Commentaire';
+$lang['Comment: %s'] = 'Commentaire : %s';
+$lang['Comments'] = 'Commentaires';
+$lang['Complete RSS feed (photos, comments)'] = 'Flux RSS complet (photos, commentaires)';
+$lang['Confirm Password'] = 'Confirmer le mot de passe';
+$lang['Connected user: %s'] = 'Utilisateur connecté : %s';
+$lang['Connection settings'] = 'Paramètres de connexion';
+$lang['Contact webmaster'] = 'Contacter le webmestre';
+$lang['Contact'] = 'Contacter';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Les cookies sont bloqués ou non supportés par votre navigateur web. Vous devez activer les cookies pour vous connecter.';
+$lang['Create a new account'] = 'Créer un nouveau compte';
+$lang['created after %s (%s)'] = 'créée après le %s (%s)';
+$lang['created before %s (%s)'] = 'créée avant le %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'créée entre le %s (%s) et le %s (%s)';
+$lang['created on %s'] = 'créée le %s';
+$lang['Created on'] = 'Créée le';
+$lang['Creation date'] = 'Date de création';
+$lang['Current password is wrong'] = 'Erreur sur le mot de passe actuel';
+$lang['customize the appareance of the gallery'] = 'personnaliser l\'apparence de la galerie';
+$lang['Customize'] = 'Personnaliser';
+$lang['Date'] = 'Date';
+$lang['day'][0] = 'Dimanche';
+$lang['day'][1] = 'Lundi';
+$lang['day'][2] = 'Mardi';
+$lang['day'][3] = 'Mercredi';
+$lang['day'][4] = 'Jeudi';
+$lang['day'][5] = 'Vendredi';
+$lang['day'][6] = 'Samedi';
+$lang['Default'] = 'Par défaut';
+$lang['delete all photos from your favorites'] = 'supprimer toutes les photos de vos favoris';
+$lang['delete this photo from your favorites'] = 'supprimer cette photo de vos favoris';
+$lang['Delete'] = 'Supprimer';
+$lang['descending'] = 'décroissant';
+$lang['Dimensions'] = 'Dimensions';
+$lang['display a calendar by creation date'] = 'afficher un calendrier par date de création';
+$lang['display a calendar by posted date'] = 'afficher un calendrier par date d\'ajout';
+$lang['display a set of random photos'] = 'afficher un ensemble de photos prises au hasard';
+$lang['display all photos in all sub-albums'] = 'afficher à plat les photos des albums et des sous-albums';
+$lang['display available tags'] = 'Voir les tags disponibles';
+$lang['display best rated photos'] = 'afficher les photos les mieux notées';
+$lang['display each day with photos, month per month'] = 'affichage année par année, mois par mois, jour par jour';
+$lang['display last user comments'] = 'Voir les derniers commentaires utilisateurs';
+$lang['display most recent photos'] = 'afficher les photos les plus récentes';
+$lang['display most visited photos'] = 'afficher les photos les plus vues';
+$lang['display only recently posted photos'] = 'n\'afficher que les photos publiées récemment';
+$lang['display photos linked to this tag'] = 'Voir les photos liées uniquement à ce tag';
+$lang['display recently updated albums'] = 'afficher les albums récemment mis à jour ou créés';
+$lang['display this album'] = 'montre les photos à la racine de cet album';
+$lang['display your favorites photos'] = 'afficher mes photos favorites';
+$lang['Display'] = 'Affichage';
+$lang['Download this file'] = 'Télécharger ce fichier';
+$lang['Download'] = 'Télécharger';
+$lang['Each listed rule must be satisfied.'] = 'Chaque critère doit être satisfait';
+$lang['Edit a comment'] = "Éditer un commentaire";
+$lang['edit'] = 'éditer';
+$lang['Edit'] = 'Editer';
+$lang['Email address is missing. Please specify an email address.'] = "L'adresse email manque. Veuillez spécifier une adresse email.";
+$lang['Email address'] = 'Adresse e-mail';
+$lang['Email: %s'] = 'Email : %s';
+$lang['Empty query. No criteria has been entered.'] = 'Requête vide. Aucun critère saisi.';
+$lang['End-Date'] = 'Date de fin';
+$lang['Enter your new password below.'] = 'Entrez votre nouveau mot de passe ci-dessous.';
+$lang['Enter your personnal informations'] = 'Entrer vos informations personnelles';
+$lang['Error sending email'] = 'Erreur à l\'envoi du mail';
+$lang['excluded'] = 'exclus';
+$lang['EXIF Metadata'] = 'Données EXIF';
+$lang['Expand all albums'] = 'Développer tous les albums';
+$lang['Favorites'] = 'Favoris';
+$lang['File name'] = 'Nom du fichier';
+$lang['File'] = 'Fichier';
+$lang['Filesize'] = 'Poids';
+$lang['Filter and display'] = 'Filtrer et afficher';
+$lang['Filter'] = 'Filtre';
+$lang['First'] = 'Première';
+$lang['First Page'] = 'Première page';
+$lang['Forgot your password?'] = 'Mot de passe oublié ?';
+$lang['from %s to %s'] = 'du %s au %s';
+$lang['Go back to the album'] = "Retourner à l'album";
+$lang['Go through the gallery as a visitor'] = 'Parcourir la galerie en tant que visiteur';
+$lang['group by letters'] = 'regrouper par lettres';
+$lang['guest'] = 'visiteur';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Bonjour %s, votre galerie photo Piwigo est vide !';
+$lang['Hello'] = 'Bonjour';
+$lang['Hello %s,'] = 'Bonjour %s,';
+$lang['Help'] = 'Aide';
+$lang['Home'] = 'Accueil';
+$lang['html tags are not allowed in login'] = 'les balises html ne sont pas autorisées dans le login';
+$lang['I want to add photos'] = 'Je veux ajouter des photos';
+$lang['Identification'] = 'Identification';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'S\'il s\'agit d\'une erreur, ignorez ce message et la demande ne sera pas prise en compte.';
+$lang['in %d sub-album'] = 'dans %d sous-album';
+$lang['in %d sub-albums'] = 'dans %d sous-albums';
+$lang['in this album'] = 'dans cet album';
+$lang['included'] = 'inclus';
+$lang['Invalid key'] = 'Clef invalide';
+$lang['Invalid password!'] = 'Mot de passe invalide !';
+$lang['Invalid username or email'] = 'Nom d\'utilisateur ou adresse email invalide';
+$lang['IP: %s'] = 'IP : %s';
+$lang['IPTC Metadata'] = 'Données IPTC';
+$lang['Keyword'] = 'Mot-clef';
+$lang['Kind of date'] = 'Type de date';
+$lang['Language'] = 'Langue';
+$lang['last %d days'] = '%d derniers jours';
+$lang['Last'] = 'Dernière';
+$lang['Last Page'] = "Dernière page";
+$lang['letters'] = 'lettres';
+$lang['Links'] = 'Liens';
+$lang['login mustn\'t end with a space character'] = 'le nom d\'utilisateur ne doit pas se terminer par un espace';
+$lang['login mustn\'t start with a space character'] = 'le nom d\'utilisateur ne doit pas commencer par un espace';
+$lang['Login'] = 'Connexion';
+$lang['Logout'] = 'Déconnexion';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'l\'adresse e-mail doit être de la forme xxx@yyy.eee (exemple : jack@altern.org)';
+$lang['Manage this user comment: %s'] = 'Gérer ce commentaire : %s';
+$lang['Menu'] = 'Menu';
+$lang['month'][10] = 'Octobre';
+$lang['month'][11] = 'Novembre';
+$lang['month'][12] = 'Décembre';
+$lang['month'][1] = 'Janvier';
+$lang['month'][2] = 'Février';
+$lang['month'][3] = 'Mars';
+$lang['month'][4] = 'Avril';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Juin';
+$lang['month'][7] = 'Juillet';
+$lang['month'][8] = 'Août';
+$lang['month'][9] = 'Septembre';
+$lang['Most visited'] = 'Plus vues';
+$lang['N/A'] = 'non disponible';
+$lang['New on %s'] = 'Nouveau le %s';
+$lang['New password'] = 'Nouveau mot de passe';
+$lang['Next'] = 'Suivante';
+$lang['no rate'] = 'pas de note';
+$lang['No'] = 'Non';
+$lang['Not repeat the slideshow'] = 'Ne pas répéter le diaporama';
+$lang['Notification'] = 'Notifications RSS';
+$lang['Number of items'] = 'Nombre d\'élément';
+$lang['Number of photos per page'] = 'Nombre de miniatures par page';
+$lang['obligatory'] = 'obligatoire';
+$lang['Original dimensions'] = 'Dimensions d\'origine';
+$lang['Page generated in'] = 'Page fabriquée en';
+$lang['Password forgotten'] = 'Mot de passe oublié';
+$lang['Password reset is not allowed for this user'] = 'Le renouvellement du mot de passe n\'est pas permis pour cet utilisateur';
+$lang['Password Reset'] = 'Renouvellement de votre mot de passe';
+$lang['password updated'] = 'mot de passe mis à jour';
+$lang['Password'] = 'Mot de passe';
+$lang['Pause of slideshow'] = 'Pause du diaporama';
+$lang['photo'] = 'photo';
+$lang['Photos only RSS feed'] = 'Flux RSS des photos uniquement';
+$lang['photos posted during the last %d days'] = 'photos ajoutées au cours des %d derniers jours';
+$lang['Photos posted within the last %d day.'] = 'N\'afficher que les photos récentes de moins de %d jour.';
+$lang['Photos posted within the last %d days.'] = 'N\'afficher que les photos récentes de moins de %d jours.';
+$lang['Piwigo Help'] = 'Aide de Piwigo';
+$lang['Play of slideshow'] = 'Lecture du diaporama';
+$lang['Please enter your username or email address.'] = 'Merci d\'entrer votre nom d\'utilisateur ou votre adresse email.';
+$lang['Please, enter a login'] = 'S\'il vous plaît, entrez un nom d\'utilisateur';
+$lang['Post date'] = 'Date d\'ajout';
+$lang['posted after %s (%s)'] = 'mis en ligne après le %s (%s)';
+$lang['posted before %s (%s)'] = 'mis en ligne avant le %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'mis en ligne entre le %s (%s) et le %s (%s)';
+$lang['posted on %s'] = 'mis en ligne le %s';
+$lang['Posted on'] = 'Ajoutée le';
+$lang['Powered by'] = 'Propulsé par';
+$lang['Preferences'] = 'Préférences';
+$lang['Previous'] = 'Précédente';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Connexion rapide';
+$lang['Quick search'] = 'Recherche rapide';
+$lang['Random photos'] = 'Photos au hasard';
+$lang['Rank'] = 'Rang';
+$lang['Rate this photo'] = 'Votez pour cette photo';
+$lang['Rating score'] = 'Score';
+$lang['Recent albums'] = 'Albums récents';
+$lang['Recent period must be a positive integer value'] = 'La période de nouveautés doit être un entier positif';
+$lang['Recent period'] = 'Période récente';
+$lang['Recent photos'] = 'Photos récentes';
+$lang['Redirection...'] = 'Redirection...';
+$lang['Reduce diaporama speed'] = 'Ralentir la vitesse du diaporama';
+$lang['Register'] = 'S\'enregistrer';
+$lang['Registration of %s'] = 'Enregistrement de %s';
+$lang['Registration'] = 'Enregistrement';
+$lang['Related tags'] = 'Tags liés';
+$lang['remove this tag from the list'] = 'retirer ce tag de la liste';
+$lang['Repeat the slideshow'] = 'Répéter le diaporama';
+$lang['representative'] = 'représentante';
+$lang['Reset to default values'] = 'Rétablir les valeurs par défaut';
+$lang['Reset'] = 'Annuler';
+$lang['Retrieve password'] = 'Récupérer un mot de passe';
+$lang['Return to home page'] = 'Retourner sur la page d\'accueil';
+$lang['return to normal view mode'] = 'retourner à la vue normale';
+$lang['return to the display of all photos'] = 'retourner à l\'affichage de toutes les photos';
+$lang['RSS feed'] = 'flux RSS';
+$lang['Search by date'] = 'Recherche par date';
+$lang['Search for all terms'] = 'Rechercher tous les mots';
+$lang['Search for any term'] = 'Rechercher un des mots';
+$lang['Search for Author'] = 'Rechercher un auteur';
+$lang['Search for words'] = 'Recherche de mots';
+$lang['Search in albums'] = 'Rechercher dans les albums';
+$lang['Search in sub-albums'] = 'Rechercher dans les sous-albums';
+$lang['Search results'] = 'Résultats de recherche';
+$lang['Search rules'] = 'Critères de recherche';
+$lang['Search tags'] = 'Rechercher les tags';
+$lang['search'] = 'recherche';
+$lang['Search'] = 'Recherche';
+$lang['searched words : %s'] = 'mots recherchés : %s';
+$lang['Sent by'] = 'Envoyé par';
+$lang['Send my connection settings by email'] = 'Recevoir mes identifiants par email';
+$lang['set as album representative'] = 'Choisir comme représentante de cet album';
+$lang['Show file metadata'] = 'Montrer les méta-données du fichier';
+$lang['Show number of comments'] = 'Montrer le nombre de commentaires';
+$lang['Show number of hits'] = 'Montrer le nombre de visualisations';
+$lang['show tag cloud'] = 'montrer le nuage de tags';
+$lang['Since'] = 'Depuis';
+$lang['slideshow'] = 'diaporama';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Quelqu\'un a demandé le renouvellement de votre mot de passe pour l\'utilisateur suivant :';
+$lang['Sort by'] = 'Trier selon';
+$lang['Sort order'] = 'Ordre de tri';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Inscription réussie, vous recevrez bientôt un email avec vos identifiants. Bienvenue !';
+$lang['Specials'] = 'Spéciales';
+$lang['SQL queries in'] = 'requêtes SQL en';
+$lang['stop the slideshow'] = 'arrêter le diaporama';
+$lang['Submit'] = 'Valider';
+$lang['Tag results for'] = 'Résultats des tags pour';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tags';
+$lang['the beginning'] = 'le début';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galerie est verrouillée pour cause de maintenance. Merci de revenir plus tard.';
+$lang['The number of photos per page must be a not null scalar'] = 'Le nombre de photos par page doit être un entier non nul';
+$lang['The passwords do not match'] = 'Les mots de passe ne correspondent pas';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Le flux RSS notifie les événements de la galerie : nouvelles photos, albums mis à jour, nouveaux commentaires utilisateur. À utiliser avec un lecteur de flux RSS.';
+$lang['the username must be given'] = 'le nom d\'utilisateur doit être indiqué';
+$lang['This author modified following comment:'] = 'Cet auteur a modifié le commentaire suivant :';
+$lang['This author removed the comment with id %d'] = 'Cet auteur a supprimé le commentaire portant l\'identifiant %d';
+$lang['this email address is already in use'] = 'un autre utilisateur utilise déjà cette adresse e-mail';
+$lang['This login is already used by another user'] = 'Ce nom d\'utilisateur est déjà pris';
+$lang['this login is already used'] = 'ce nom d\'utilisateur est déjà pris';
+$lang['Thumbnails'] = 'Miniatures';
+$lang['To reset your password, visit the following address:'] = 'Pour renouveler votre mot de passe, cliquez sur le lien suivant :';
+$lang['today'] = 'aujourd\'hui';
+$lang['Unknown feed identifier'] = 'Identifiant de flux inconnu';
+$lang['Unknown identifier'] = 'Identifiants inconnus';
+$lang['Update your rating'] = 'Mettre à jour votre note';
+$lang['useful when password forgotten'] = 'utile en cas d\'oubli de mot de passe';
+$lang['User "%s" has no email address, password reset is not possible'] = 'L\'utilisateur "%s" n\'a pas d\'adresse email, le renouvellement du mot de passe est impossible';
+$lang['User comments'] = 'Commentaires utilisateur';
+$lang['User: %s'] = 'Utilisateur: %s';
+$lang['Username "%s" on gallery %s'] = 'Utilisateur "%s" sur la galerie %s';
+$lang['Username or email'] = 'Nom d\'utilisateur ou adresse email';
+$lang['Username'] = 'Nom d\'utilisateur';
+$lang['Username modification'] = 'Modification du nom d\'utilisateur';
+$lang['View'] = 'Vue';
+$lang['Visits'] = 'Visites';
+$lang['Webmaster'] = 'Webmestre';
+$lang['Week %d'] = 'Semaine %d';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bienvenue sur votre galerie photo Piwigo !';
+$lang['Welcome'] = 'Bienvenue';
+$lang['wrong date'] = 'date erronée';
+$lang['Yes'] = 'Oui';
+$lang['You are not authorized to access the requested page'] = 'Vous n\'êtes pas autorisé à accéder à la page demandée';
+$lang['You will receive a link to create a new password via email.'] = 'Par email, vous recevrez un lien à cliquer pour renouveler votre mot de passe.';
+$lang['Your comment has been registered'] = 'Votre commentaire a été enregistré';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Votre commentaire n\'a pas été enregistré parce qu\'il ne satisfait aux règles de validation';
+$lang['Your favorites'] = 'Mes favorites';
+$lang['Your Gallery Customization'] = 'Personnalisation de votre affichage ';
+$lang['Your username has been successfully changed to : %s'] = 'Votre nom d\'utilisateur a bien été changé par : %s';
+$lang['Your password has been reset'] = 'Votre mot de passe a été réinitialisé';
+$lang['Original'] = "Original";
+$lang['Thank you for registering at %s!'] = 'Merci pour votre inscription sur %s !';
+$lang['Here are your connection settings'] = 'Voici vos identifiants';
+$lang['Password: %s'] = 'Mot de passe : %s';
+$lang['Username: %s'] = 'Nom d\'utilisateur : %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Si vous pensez avoir reçu cet email par erreur, veuillez nous contacter %s';
+$lang['Photo sizes'] = 'Tailles de photo';
+$lang['square'] = 'Carré';
+$lang['thumb'] = 'Miniature';
+$lang['2small'] = 'XXS - minuscule';
+$lang['xsmall'] = 'XS - très petit';
+$lang['small'] = 'S - petit';
+$lang['medium'] = 'M - moyen';
+$lang['large'] = 'L - grand';
+$lang['xlarge'] = 'XL - très grand';
+$lang['xxlarge'] = 'XXL - énorme';
+$lang['Show latest comments first'] = 'Montrer les commentaires les plus récents en premier';
+$lang['Show oldest comments first'] = 'Montrer les commentaires les plus anciens en premier';
+$lang['View in'] = 'Affichage';
+$lang['Mobile'] = 'Mobile';
+$lang['Desktop'] = 'Classique';
+$lang['Date created, new &rarr; old'] = 'Date de création, récent &rarr; ancien';
+$lang['Date created, old &rarr; new'] = 'Date de création, ancien &rarr; récent';
+$lang['Date posted, new &rarr; old'] = 'Date d\'ajout, récent &rarr; ancien';
+$lang['Date posted, old &rarr; new'] = 'Date d\'ajout, ancien &rarr; récent';
+$lang['File name, A &rarr; Z'] = 'Nom du fichier, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nom du fichier, Z &rarr; A';
+$lang['Manual sort order'] = 'Ordre manuel';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identifiant, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identifiant, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Titre de la photo, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Titre de la photo, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Note, haute &rarr; basse';
+$lang['Rating score, low &rarr; high'] = 'Note, basse &rarr; haute';
+$lang['Visits, high &rarr; low'] = 'Nombre de visites, élevé &rarr; faible';
+$lang['Visits, low &rarr; high'] = 'Nombre de visites, faible &rarr; élevé';
+$lang['%d rate'] = '%d note';
+$lang['Page not found'] = 'Page non trouvée';
+$lang['Bad request'] = 'Mauvaise requête';
+$lang['Forbidden'] = 'Interdit';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo a rencontré une erreur non récupérable';
+$lang['Requested album does not exist'] = 'L\'album demandé n\'existe pas';
+$lang['Permalink for album not found'] = 'Permalink pour l\'album non trouvé';
+$lang['Requested tag does not exist'] = 'Le tag demandé n\'existe pas';
+$lang['Username is mandatory'] = 'Nom d\'utilisateur obligatoire';
+$lang['Email address is mandatory'] = 'Adresse email obligatoire';
+$lang['mandatory'] = 'obligatoire';
+$lang['Website'] = 'Site web';
+$lang['Your website URL is invalid'] = 'L\'adresse de votre site web est invalide';
+$lang['Email'] = "Email";
+$lang['Password is missing. Please enter the password.'] = "Le mot de passe manque. Veuillez saisir le mot de passe.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "La confirmation du mot de passe manque. Veuillez confirmer le mot de passe choisi.";
+$lang['%d photos per page'] = '%d photos par page';
+$lang['Theme'] = 'Thème';
+?>
Index: /tags/2.6.0RC1/language/fr_FR/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,141 @@
+<h2>Modifier un album</h2>
+
+<h3>Informations</h3>
+
+<ul>
+
+  <li><strong>nom</strong>: renommer l'album (virtuellement pour 
+  un album physique).</li>
+
+  <li><strong>description</strong>: un texte bref donnant une idée du contenu de l'album,
+  cette indication figurera en bas de la page des miniatures.</li>
+
+</ul>
+
+<h3>Déplacer</h3>
+
+<p>Si l'album est virtuel, vous pouvez le déplacer. Déplacer un
+album signifie changer son album parent.</p>
+
+<h3>Options</h3>
+
+<ul>
+
+  <li><strong>Type d'accès</strong>: gestion des permissions. Si vous rendez
+un album privé, tous ses albums fils deviennent privés. Si
+vous rendez un album publique, tous ses albums parents deviennent
+publiques.</li>
+
+  <li><strong>Verrouiller</strong>: l'album et tous ses sous-album deviennent temporairement inaccessibles pour maintenance.</li>
+
+  <li><strong>Commentaires</strong>: autorise les utilisateurs à commenter
+les photos de cet album.</li>
+  
+</ul>
+
+<p>Vous pouvez aussi gérer ces options par la gestion des "Propriétés" 
+(écrans <span class="pwgScreen">Commentaires</span>, <span
+class="pwgScreen">Verrouiller</span>, <span
+class="pwgScreen">Publique/Privée</span>, <span
+class="pwgScreen">Représentant</span> disponibles à partir d' <span
+class="pwgScreen">Administration &raquo; Albums &raquo; Propriétés</span>).</p>
+
+<h3>Ordre de tri</h3>
+
+<p>Utiliser l'ordre de tri des photos par défaut.</p>
+
+<p>Indiquer si le tri s'applique également aux sous-albums.</p>
+
+<p>Sélectionner les critères de tri à utiliser pour cet album.</p>
+<ul>
+<li><strong>Date de création</strong>: Date de prise de vue</li>
+<li><strong>Date d'ajout</strong>: Date de la synchronisation</li>
+<li><strong>Note moyenne (*)</strong>: cette moyenne peut être modifiée par la notation du visiteur</li>
+<li><strong>Plus vues (*)</strong>: La visite en cours peut changer l'ordre des plus vues</li>
+<li><strong>Nom du fichier</strong>: Nom du fichier donné dans les champs d'informations ci-dessus</li>
+<li><strong>Id</strong>: Id interne (les albums récents ont un "Id" plus grand que les précédentes).</li>
+
+</ul>
+<p><strong>(*)</strong>Attention: testez-vous même ces tris qui peuvent donner des résultats imprévus.</p>
+
+
+<h3>Représentant</h3>
+
+<p>Le représentant d'un album est la miniature affichée sur la page principale (<span
+class="pwgScreen">category.php</span>) pour
+représenter l'album lorsque celui-ci ne contient
+que des sous-albums et aucune photo direct (comme à la
+racine)</p>
+
+<p>Il existe 4 moyens différents de choisir le représentant d'un album:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Page d'affichage des photos</span>: un des boutons d'action permet de choisir la photo courante comme représentant
+de l'album affiché. Ce bouton d'action n'est disponible que pour les
+administrateurs.</li>
+
+  <li><span class="pwgScreen">Modifier les informations d'une photo</span>
+dans l'administration. Cet écran peut être atteint depuis <span
+class="pwgScreen">picture.php</span> ou <span class="pwgScreen">Gestion par
+lot</span> dans le <em>mode unitaire</em>. Voir l'aide de cet écran pour les
+détails.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Propriétés &raquo;
+Représentant</span>. Voir l'aide de cet écran pour les détails.</li>
+
+  <li><span class="pwgScreen">Modifier un album</span> (le présent
+écran).</li>
+
+</ul>
+
+<p>Le choix d'un représentant dépend du paramètre de configuration
+<code>allow_random_representative</code> (voir <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Par défaut (<code>allow_random_representative</code> à false), chaque
+album contenant au moins une photo est représenté par un élément
+fixe. Une fois fixé (à la création de l'album), le représentant change
+uniquement lorsque l'administrateur le demande. Si le représentant ne
+convient pas, vous pouvez demander à <strong>Trouver un nouveau représentant
+au hasard</strong>.</p>
+
+<p>Si le paramètre de configuration <code>allow_random_representative</code>
+est à true, l'album contenant des photos peut ne pas avoir de
+représentant fixe. Utiliser simplement le bouton <strong>Supprimer le
+représentant</strong>.</p>
+
+<p>Si l'album ne contient que des sous-albums et aucune photo, il peut cependant être représentée par n'importe quel 
+photo grâce à l'écran <span class="pwgScreen">Modifier les informations 
+d'une photo</span>. La seule option disponible sur le présent écran est le bouton
+<strong>Supprimer le représentant</strong>.</p>
+
+<h3>Associer toutes les photos de l'album à un nouvel album</h3>
+
+<ul>
+
+<li><strong>Nom de l'album virtuel</strong>: Nom du nouvel album à créer, 
+toutes les photos de l'album en cours seront liées à celui-ci.</li>
+
+<li><strong>Album parent</strong>: A quel endroit le nouvel album doit être placé, 
+laisser vide pour le créer sur la page d'accueil.</li>
+
+</ul>
+
+<h3>Associer toutes les photos de l'album à des albums existants</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Choisir l'album de destination.</li>
+
+</ul>
+
+<h3>Envoyer un mail d'informations aux membres d'un groupe</h3>
+
+<ul>
+
+<li><strong>Groupe</strong>: Groupe de destinataires</li>
+
+<li><strong>Contenu du mail</strong>: Texte libre à leur envoyer.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/fr_FR/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/cat_move.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Déplacement d'albums virtuels</h2>
+
+<p>Vous pouvez changer le parent d'un album virtuel.</p>
+
+<h3>Albums virtuels à déplacer</h3>
+
+<p>Sélectionnez un ou plusieurs album virtuels à déplacer. 
+Si la liste est vide, c'est que vous n'en avez pas encore créé.</p>
+
+<h3>Nouvel album parent</h3>
+
+<p>Sélectionnez le nouvel album parent (virtuel ou physique). 
+Si vous n'en sélectionnez aucun, 
+les albums à déplacer seront remontés à la racine des albums.
+Vous ne pouvez déplacer un album dans lui-même ou ses fils.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/cat_options.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>Options des albums</h2>
+
+<p>Gestion des options pour plusieurs albums à la fois.</p>
+
+<dl>
+  
+  <dt>Commentaires utilisateurs</dt>
+
+  <dd>Autoriser les utilisateurs à ajouter des commentaires dans les albums sélectionnés.
+Une photo sera commentable si elle appartient à au moins un album commentable.</dd>
+  
+  <dt>Verrouiller</dt>
+
+  <dd>Les albums sélectionnés deviennent temporairement inactifs pour
+maintenance. Lorsqu'un album est verrouillé, tous les sous-albums sont verrouillés. 
+Lorsqu'un album est déverrouillé, toutes les albums parents sont déverrouillés.</dd>
+
+  <dt>Publique / Privé</dt>
+
+  <dd>Les permissions n'existent que pour les albums privés. Une fois qu'un album est privé, il vous faut
+explicitement autoriser les utilisateurs ou les groupes à y
+accéder. Lorsqu'un album devient privé, tous les sous-Album deviennent privés. 
+Lorsqu'un album devient publique, tous les albums parents deviennent publiques.</dd>
+
+  <dt>Représentant</dt>
+
+  <dd>Cette option est disponible uniquement si le paramètre de
+configuration <code>allow_random_representative</code> (voir <span
+class="filename">include/config_default.inc.php</span>) vaut
+<em>true</em>. Chaque album peut-être représenté par une photo prise au hasard ou par une seule miniature fixe.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/fr_FR/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Gérer les permissions pour un album</h2>
+
+<p>Cet écran n'est disponible que pour les albums privés. Ici vous
+pourrez sélectionner les utilisateurs et les groupes autorisés pour un album</p>
+
+<h3>Groupes</h3>
+
+<p>Vous pouvez autoriser ou interdire l'accès des groupes à l'album courant. Les utilisateurs 
+appartenant à ces groupes se verront autoriser ou interdire l'accès à l'album.</p>
+
+<h3>Utilisateurs</h3>
+
+<p>Vous pouvez autoriser ou interdire l'accès aux utilisateurs individuellement. Les utilisateurs autorisés par ailleurs grâce à leur appartenance à un groupe peuvent se voir supprimer l'accès par exception.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/configuration.html	(revision 25596)
@@ -0,0 +1,132 @@
+<h2>Configuration</h2>
+
+<p>Cet écran permet de gérer la configuration basique. En effet, seuls sont
+montrés les paramètres de configuration qui doivent suffire à la majorité
+des administrateurs. Si vous souhaitez voir la liste des nombreux (et
+avancés) paramètres, lire le fichier <span
+class="filename">include/config_default.inc.php</span></p>
+
+<p>Cet écran est divisié en plusieurs sections, regroupant les paramètres
+par thème.</p>
+
+<h3>Principale</h3>
+<ul>
+
+  <li><strong>Titre de la galerie</strong>: utilisé pour le flux RSS et
+la notification par email.</li>
+
+  <li><strong>Bannière des pages</strong>: code html affiché en haut des
+pages.</li>
+
+  <li><strong>URL de la galerie</strong>: utilisé pour le flux RSS.</li>
+
+  <li><strong>Verrouiller la galerie</strong>: Verrouiller l'ensemble de la
+galerie pour maintenance. Seul les administrateurs pourront accéder à la
+galerie.</li>
+
+  <li><strong>Notation</strong>: La notation des photos est possible.</li>
+
+  <li><strong>Notation par les visiteurs</strong>: Même les utilisateurs non enregistrés peuvent noter les photos</li>
+
+  <li><strong>Permettre l'enregistrement des utilisateurs</strong>: L'inscription est libre pour tous.</li>
+
+  <li><strong>L'adresse mail est obligatoire pour tous les utilisateurs</strong>: L'adresse mail sera vérifié lors des inscriptions ou de la mise à jour des profils sauf si l'action est effectuée dans la partie administration.</li>
+
+  <li><strong>Notifier les administrateurs lors de l'inscription d'un utilisateur</strong>: Les administrateurs recevront un courriel à chaque inscription.</li>
+  
+  <li><strong>Ordre par défaut des photos</strong>: vous pouvez définir un ordre personnalisé grace à ces menus déroulants.</li>
+
+</ul>
+
+<h3>Historique</h3>
+
+  <p>les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> sont
+enregistrées dans la table <code>history</code>.</p>
+
+  <p>Les visites sont affichées dans l'écran <span class="pwgScreen">Administration &raquo; Outils &raquo; Historique</span>.</p>
+
+<ul>
+  <li><strong>Enregistrer les pages visitées par les invités</strong>: les visites des pages par les invités sont enregistrées.</li>
+
+  <li><strong>Enregistrer les pages visitées par les utilisateurs</strong>: les visites des pagespar les utilisateurs enregistrés sont enregistrées.</li>
+
+  <li><strong>Enregistrer les pages visitées par les administrateurs</strong>: les visites des pages par les administrateurs sont enregistrées.</li>
+
+</ul>
+
+<h3>Commentaires</h3>
+<ul>
+
+  <li><strong>Commentaires utilisateur pour tous</strong>: même les
+utilisateurs non enregistrés peuvent enregistrer des commentaires.</li>
+
+  <li><strong>Nombre de commentaires utilisateur par page</strong>.</li>
+
+  <li><strong>Validation</strong>: un administrateur doit valider les
+commentaires utilisateurs avant qu'ils puissent devenir visibles dans la
+partie publique. La validation des commentaires utilisateurs a lieu dans
+l'écran <span class="pwgScreen">Administration &raquo; Outils &raquo; Commentaires en attente</span>.</li>
+
+  <li><strong>Notifier les administrateurs quand un commentaire est enregistré</strong>:
+Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui est validé.</li>
+
+  <li><strong>Notifier les administrateurs quand un commentaire requiert sa validation </strong>:
+Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui demande une validation de la part des administrateurs.
+La validation des commentaires utilisateurs a lieu dans l'écran <span class="pwgScreen">Administration &raquo; Outils &raquo; Commentaires en attente</span>.</li>
+
+</ul>
+
+<h3>Affichage par défaut</h3>
+<p>Modifier les options d'affichage par défaut: pour les visiteurs non
+connectés. Une fois connecté, ces options sont surchargées par celles de
+l'utilisateur, qu'il peut modifier dans l'écran <span
+class="pwgScreen">profile</span>.</p>
+
+<p>Il est possible de changer ces options pour les utilisateurs existants,
+mais il s'agit d'un autre écran : <span class="pwgScreen">Administration &raquo; 
+Utilisateurs &raquo; Gérer</span>, dans lequel vous pouvez modifier ces
+options pour une liste d'utilisateurs sélectionnés.</p>
+
+<ul>
+
+  <li><strong>Langue</strong>: ne concerne que les libellés de
+Piwigo. Les noms d'albums, de photo et les descriptions ne sont
+pas localisés (ie multilingue).</li>
+
+  <li><strong>Nombre de miniatures par ligne</strong></li>
+
+  <li><strong>Nombre de lignes par page</strong></li>
+
+  <li><strong>Thème de l'interface</strong></li>
+
+  <li><strong>Période récente</strong>: en jours. Période pendant laquelle
+une photo est considérée comment nouvelle. Cette période doit être
+supérieure à 1 jour.</li>
+
+  <li><strong>Développer tous les albums</strong>: développer tous
+les albums dans le menu? <em>Attention</em>: cette option est
+susceptible de consommer inutilement des ressources si votre arbre d'album
+ contient de nombreux éléments.</li>
+
+  <li><strong>Montrer le nombre de commentaires</strong>: montrer les nombre
+de commentaires utilisateur en dessous de chaque miniature. Consomme des
+ressources.</li>
+
+  <li><strong>Montrer le nombre de visualisations  </strong>: affiche les 
+  « hits » relevés sur une photo sous sa miniature dans la page de miniatures.
+  Uniquement valable si le paramètre de configuration avancée est :<br>
+  $conf['show_nb_hits'] = true; <br>
+  N.B.: par defaut il est à false.</li>
+
+  <li><strong>Largeur maximum des photos</strong>: à l'affichage. Si la photo
+est plus large que ce paramètre, alors elle sera redimensionnée à
+l'affichage. Si vous pensez nécessaire de modifier ce paramétrage (donc pour
+un affichage par défaut), il serait pertinent de redimensionner directement
+vos photos stockées.</li>
+
+  <li><strong>Hauteur maximum des photos</strong>: même remarque que pour la
+largeur.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_FR/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Configuration pour "étendre" les templates</h2>
+
+<h3>Objectif</h3>
+<p>Définir les conditions de remplacement de chaque template (modèle) à partir de template-extension
+(template appelé "replacer" (remplaçant)).</p>
+
+<p>Les "Templates d'origine" provenant de ./themes/default/template (ou de tout autre thème)
+ sont remplacés par un remplaçant si celui-ci est lié à son template d'origine
+ (et de façon facultative, quand l'adresse (URL) demandée contient un URL contains un "Paramètre facultatif de l'URL").</p>
+
+<p>Les "Paramètres facultatif de l'URL" sont ceux que vous pouvez trouver après le nom du module dans l'adresse (URL).</p>
+
+<p>Ainsi un "Paramètre facultatif de l'URL" peut être un "permalink" (lien permanent) actif
+(voir les permalinks dans notre documentation pour plus d'information).</p>
+
+<p>Lire les `<a href="#warnings">mises en garde</a>` sur les conditions d'utilisation.</p>
+
+<h3>Qu'est-ce que les extensions des modèles?</h3>
+
+<p>Cet outil de configuration est à la fois puissant pour les débutants et pour les utilisateurs avancés.
+Par FTP, dans le dossier template-extension, le Webmaster pourra dupliquer une bonne partie des fichiers
+ .tpl distribués ("Templates d'origine") avec un nom différent  
+ ("replacer" (remplaçant)).
+ 
+ "Templates d'origine", actuellement les modèles d'origine supportés sont:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Où puis-je trouver les "Templates d'origine"?</h3>
+
+<p>Les modèles distribués d'origine sont dans /themes/default/template/ 
+(ne pas les modifier directement à cet endroit pour des raisons d'évolution). Ainsi à partir des "templates d'origine", 
+tout webmaster pourra créer ses "replacers (modèles personalisés)".</p>
+
+<h3>Où dois-je enregistrer les "remplaçants"?</h3>
+
+<p>Les <strong>Replacers (templates modifiés)</strong> peuvent être placés dans le dossier 
+template-extension (ou ses sous-dossiers).
+Les remplaçants peuvent avoir n'importe quel nom de fichier avec l'extension .tpl. Par exemple: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Comment puis-je activer mes "remplaçants"?</h3>
+<p>Un <strong>template d'origine</strong> devrait être associé à chaque
+ <strong>replacer (modèle modifié)</strong> à fin d'activer les remplacements correspondants.
+ Activer les remplaçants est la fonction de "Etendre les templates" dans les menus de Configuration de l'Administration.</p>
+
+<p>Si vous sélectionnez un <strong>Paramètre facultatif de l'URL</strong> alors les remplacements 
+ne seront réalisés que sur les pages utilisant ce mot clé. Par exemple: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Les utilisateurs avancés utiliseront les permalinks (permaliens, liens permanents) en tant que 
+<strong>paramètre facultatif de l'URL</strong>. </p>
+
+<p>Si vous sélectionnez un <strong>Template rattaché</strong> alors les remplacements ne seront réalisés que sur ce template.</p>
+
+<h3>Comment puis-je désactiver mes "replacers"?</h3>
+<ul>
+<li>Déselectionner le "template d'origine".</li>
+<li>Par FTP supprimer le "remplaçant".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Mises en garde</h3>
+<ul>
+
+  <li>Le <strong>template d'origine</strong> doit être le véritable template "d'origine"
+  autrement vous pourriez avoir des résultats imprévisibles!</li>
+
+  <li>Si plusieurs <strong>remplaçants (templates modifiés)</strong> ont le même
+  <strong>template d'origine</strong> et le même <strong>paramètre facultatif
+  de l'URL</strong> alors seulement le dernier remplaçant sera actif.</li>
+
+  <li>Ne pas sélectionner de <strong>paramètre facultatif de l'URL</strong> 
+  activera le template de remplacement à chaque utilisation du template.
+  Comme mentionné ci-dessus, l'ordre peut inhiber les remplaçants précédents.</li>
+
+  <li>Sous-dossiers:
+  Les sous-dossiers sont ignorés mais ils sont utiles pour modifier l'ordre des remplaçants.<br>
+distributed-samples: pour vos tests sont distributés! 
+<strong>Ne pas les modifier</strong>, créez les votres!
+</li>
+
+  <li>A la suppression d'un remplaçant le <strong>template d'origine</strong> sera 
+  immédiatement réactivé.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_FR/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Liste des groupes</h2>
+
+<p>Administration des propriétés des groupes.</p>
+
+<h3>Ajouter un groupe</h3>
+
+<p>L'administrateur peut ajouter des groupes.</p>
+
+<h3>Liste des groupes</h3>
+
+<p>La liste permet pour chaque groupe:</p>
+
+<ul>
+  <li>d'accéder à la liste des membres</li>
+  <li>d'accéder aux permissions</li>
+  <li>de supprimer le groupe (nécessite une confirmation)</li>
+  <li>d'inverser le statut "par défaut" (nécessite une confirmation)</li>
+</ul>
+
+<h3>Groupes par défaut</h3>
+<p>Les groupes par défaut sont des groupes associés automatiquement à chaque nouvel utilisateur lors de son enregistrement ou de sa création par un administrateur.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,33 @@
+<p>Il existe plusieurs méthodes pour ajouter des photos dans votre
+galerie :</p>
+
+<ul>
+
+  <li><strong>L'ajout direct</strong> dans votre navigateur web est la
+  méthode la plus simple et la plus immédiate. Elle dépend des capacités de
+  votre navigateur et de votre serveur. Pour des gros volumes ou en cas de
+  problèmes, les méthodes alternatives vous attendent !</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Utiliser l'ajout direct</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> est un logiciel à installer sur votre
+  ordinateur. Glissez vos photos dans la fenêtre de pLoader, cliquez
+  sur <em>"Transférer vers Piwigo"</em> et pLoader s'occupe du reste. D'autres logiciels clients existent, comme <strong>WinToPiwigo</strong> ou le module
+  d'export Piwigo de <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Utiliser pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Le transfert FTP</strong>
+  est la méthode idéale pour ajouter une collection importante en un minimum
+  d'opérations. Suivez le guide pour préparer vos photos. Cette méthode vous
+  permet de contrôler avec précision l'organisation physique de vos photos
+  sur votre serveur.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Utiliser FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/fr_FR/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/help_groups.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>Les groupes d'utilisateurs permettent d'assigner des permissions à une liste d'utilisateurs.</p>
+
+<p>Vous pouvez créer des groupes et y ajouter des utilisateurs dans 
+<span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Groupes</span>.</p>
+
+<p>Un utilisateur peut appartenir à plusieurs groupes. L'autorisation l'emporte sur l'interdiction : si l'utilisateur "pierre" appartient aux
+groupes "famille" et "amis", et que seul le groupe "famille" peut visiter l'album "Noël 2010", alors "pierre" peut visiter cet album.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Une fois votre galerie créée vous pouvez configurer pour vos visiteur
+ <ul>
+	<li>L'affichage par défaut tel que désiré dans  menu <span class="pwgScreen">Administation &raquo; Configuration &raquo; Options</span> onglet <span class="pwgScreen">Paramètres invité</span></li>
+	<li>Le thème par défaut dans <span class="pwgScreen">Administation &raquo; Configuration &raquo; Thèmes</span></li>
+	<li>La langue par défaut dans <span class="pwgScreen">Administation &raquo; Configuration &raquo; Langues</span></li>
+ </ul>
+ Par défaut, chaque nouvel utilisateur héritera de ces propriétés dès son enregistrement.
+</p>
+<p>Pour toute question, la communauté francophone Piwigo est à l'écoute sur le <a href="http://fr.piwigo.org/forum">forum</a>.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,48 @@
+<fieldset>
+<legend>Permissions par photo</legend>
+
+<p>Chaque photo a un <strong>niveau de confidentialité</strong> (un verrou). Chaque utilisateur a également un niveau de confidentialité (une clef). Il y a 5 niveaux de confidentialité :
+<ol>
+  <li>Aucun</li>
+  <li><em>Contacts</em></li>
+  <li><em>Amis</em> (qui est davantage qu'un contact)</li>
+  <li><em>Famille</em> (qui est davantage qu'un ami)</li>
+  <li><em>Admins</em> (qui recouvre tous les autres niveaux)</li>
+</ol>
+
+<p>Les niveaux supérieurs disposent des droits pour accéder aux niveaux inférieurs. Pour un utilisateur donné, plus haut est son niveau de confidentialité, plus il peut voir de photos.</p>
+
+<p>Par exemple, si la photo "mariage_pierre-0024.jpg" a le niveau de confidentialité <em>"Famille"</em>, alors :</p>
+<ul>
+  <li>Pierre (qui est un <em>Admin</em>) peut la voir car <em>"Admins"</em> donne tous les droits</li>
+  <li>Vanessa (qui est une membre de la <em>Famille</em>) peut la voir également</li>
+  <li>Marie (qui n'est qu'une <em>Amie</em>) elle ne peut pas la voir</li>
+</ul>
+
+<p>Un utilisateur qui ne dispose pas des permissions pour voir le contenu d’un album ne verra pas du tout l'album, pas même son titre. Même principe pour un tag.</p>
+
+<p>Vous pouvez assigner le niveau de confidentialité d'un utilisateur sur l'écran <span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Gérer</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Permissions par album</legend>
+
+<p>Si les niveaux de confidentialité ne correspondent pas exactement à vos besoins, vous pouvez également gérer les permissions par album et pour un utilisateur ou un groupe donné. Vous pouvez gérer les permissions par photo et par album en même temps, sans conflit.</p>
+
+<p>Vous pouvez interdire l'accès aux albums. Passez le type d'accès de l'album à "privé" si vous souhaitez gérer les permissions.</p>
+  
+<p>Vous pouvez rendre un album privé en l'éditant (<span
+class="pwgScreen">Administration &raquo; Albums &raquo; Gérer &raquo; Editer</span>) ou en
+gérant les options pour votre arbre complet d'albums (<span
+class="pwgScreen">Administration &raquo; Albums &raquo; Propriétés &raquo; Publique/Privé</span>).</p>
+
+<p>Lorsqu'un album est privé, vous pouvez gérer les permissions par groupes et utilisateurs avec 3 écrans :</p>
+
+<ul>
+  <li><span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Gérer &raquo; action Permissions</span> (1 lien par utilisateur)</li>
+  <li><span class="pwgScreen">Administration &raquo; Utilisateurs &raquo; Groupes &raquo; action Permissions</span> (1 lien par groupe)</li>
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Gérer &raquo; Modifier les permissions</span> (1 lien par album)</li>
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/fr_FR/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Les photos sont affichées dans les albums correspondant aux répertoires dans lesquels elles sont stockées.</p>
+
+<p>Vous pouvez également afficher une photo dans plusieurs albums, sans dupliquer le fichier sur votre serveur web. Associez la photo à n'importe quelle autre album depuis l'écran d'édition de la photo (auquel vous accéder depuis la page de visualisation de la photo côté galerie, lorsque vous êtes connecté en tant qu'administrateur)</p>
+
+<p>Les albums virtuels sont basés sur ce principe : ils n'ont pas de répertoire associé. Créez des albums virtuels depuis <span class="pwgScreen">Administration &raquo; Albums &raquo; Gérer</span>.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/history.html	(revision 25596)
@@ -0,0 +1,44 @@
+<h2>Historique</h2>
+
+<p>Ces écrans permettent de suivre l'historique de navigation dans Piwigo suivant les options que vous avez déterminées dans - Administration &raquo; Configuration &raquo; Options &raquo; Onglet "Historique".</p>
+	
+<h3>Statistiques</h3>
+<ul>
+  <p>Si vous avez choisi que les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> soient
+enregistrées dans la table <code>history</code>,
+cet onglet permet de suivre le nombre de pages visitées</p>
+	
+	<li><strong>Statistiques totales</strong> : visites par année</li>
+	
+	<li><strong>Statistiques d'une année</strong> : visites par mois de l’année sélectionnée.</li>
+	
+	<li><strong>Statistiques d'un mois</strong> : visites par jour du mois sélectionné.</li>
+	
+	<li><strong>Statistiques d'une journée</strong> : visites par heures de la journée sélectionnée.</li>
+	
+</ul>
+
+<h3>Rechercher</h3>
+<ul>
+  <p>Si vous avez choisi que les visites des pages <span
+class="pwgScreen">index.php</span> et <span
+class="pwgScreen">picture.php</span> soient
+enregistrées dans la table <code>history</code>, cet onglet permet de suivre plus en détail les pages visitées avec l'aide de différents filtres.</p>
+ 
+	<li><strong>Filtrer par date</strong> : sélectionner la plage
+de dates dont vous souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par type d'élément</strong> : sélectionner le
+type d'élément dont vous souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par utilisateur</strong> : sélectionner l'utilisateur dont vous
+ souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par nom du fichier</strong> : sélectionner le nom du fichier dont vous
+ souhaitez observer l’activité.</li>
+	
+	<li><strong>Filtrer par identifiant image</strong> : sélectionner l'identifiant de l'image dont vous
+ souhaitez observer l’activité.</li>
+</ul>
Index: /tags/2.6.0RC1/language/fr_FR/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fr_FR/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/maintenance.html	(revision 25596)
@@ -0,0 +1,64 @@
+<h2>Maintenance</h2>
+
+<p>Pour optimiser le temps de génération des pages, Piwigo utilise des informations en cache.
+ Par exemple, au lieu de compter le nombre de photos contenus dans chaque album à 
+ chaque rechargement de page, cette information est stockée dans la base de données. 
+ En théorie, cette information doit toujours être correcte, mais parfois une erreur peut 
+ survenir et l'information en cache devient fausse.</p>
+
+<p>Certaines informations deviennent inutiles avec le temps. 
+Les supprimer de la base de données libère de l'espace disque.</p>
+
+<ul>
+
+  <li>
+    <strong>Eléments non liés:</strong>
+    Affiche les photos qui ne sont associées à aucun album virtuel
+  </li>
+  <li>
+    <strong>Fichiers portant le même nom dans plusieurs albums physiques :</strong>
+    Affiche les photos ou les éventuels fichiers qui pourraient être trouvés dans plusieurs albums.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Mettre à jour les informations des albums :</strong> 
+  Pour chaque album, les informations suivantes sont contrôlées, et mises à jour le cas échéant : 
+  liste des albums parents, nombre d'éléments, date de la dernière photo, position parmi les 
+  albums frères, position dans l'arbre complet des albums. Cette action vérifie 
+  également la cohérence des représentants.</li>
+
+  <li><strong>Mettre à jour les informations des photos :</strong>
+Pour chaque photo, les informations mises àjour sont : chemin complet vers le 
+fichier et note moyenne. Attention, ne pas confondre : les méta-données sont 
+synchronisées sur l'écran <span class="pwgScreen">Administration &raquo; Albums &raquo; Synchroniser</span> 
+ou sur l'écran <span class="pwgScreen">Modifier les informations d'une photo</span> (accessible depuis la page de visualisation d'une photo <span class="pwgScreen">picture.php</span>).</li>
+
+  <li><strong>Réparer et optimiser la base de données :</strong>
+Effectue des opérations de ré-ordonnancement, réparation et optimisation sur  chaque table de la base de données.
+  </li>
+
+</ul>
+
+<ul>
+  <li><strong>Purger le détail de l'historique :</strong>
+Supprime toutes les lignes de la table <code>history</code>. L'écran <span class="pwgScreen">
+Administration &raquo; Outils &raquo; Historique</span> ne montre alors plus aucune information sur le passé. 
+<em>Attention</em> : toutes les données seront perdues, sans aucun possibilité de récupération.
+  </li>
+
+  <li><strong>Purger la synthèse de l'historique :</strong>
+Supprime toutes les informations  récapitulatives (obtenues à partir du détail de l'historique).
+  </li>
+
+  <li><strong>Purger les sessions :</strong> Supprimer les sessions expirées.</li>
+
+  <li><strong>Purger les flux de notification jamais utilisés</strong></li>
+  
+  <li><strong>Purger l'historique des recherches</strong></li>
+  
+  <li><strong>Purger les templates compilés</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_FR/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notification par mail</h2>
+
+<p>Cet écran permet de configurer et de gérer les envois de mails aux utilisateurs, pour les notifier de changements intervenus sur votre site.</p>
+
+<p>Cet écran est composé de 3 onglets:</p>
+
+<h3>Paramétrage</h3>
+<p>Accessible uniquement aux webmestres, cet onglet permet de positionner les paramètres de la notification par mail.</p>
+
+<h3>Inscription</h3>
+<p>Accessible uniquement aux webmestres, cet onglet permet de gérer les inscriptions/désinscriptions à la notification par mail.</p>
+
+<h3>Envoi</h3>
+<p>Accessible aux webmestres et aux administrateurs, cet onglet permet d'effectuer les envois des mails pour notifier les changements.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Liens permanents</h2>
+
+<p>Les liens permanents sont utilisés pour rendre plus jolis les urls des albums. Lorsqu'un album dispose d'un lien permanent associé, son identifiant n'est plus nécessaire dans l'url.</p>
+
+<p>Quand un lien permanent est effacé, vous pouvez le sauvegarder dans l'historique des liens permanents, de sorte que les liens externes à Piwigo puissent continuer à fonctionner. Dans l'historique des liens permanents vous pouvez voir la date d'effacement du lien, ainsi que la date de la dernière utilisation et le nombre d'utilisations de ce lien.</p>
+
+<p>Veuillez noter que les liens permanents doivent être uniques. Ils doivent aussi être uniques dans l'historique des liens permanents.</p>
Index: /tags/2.6.0RC1/language/fr_FR/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,78 @@
+<fieldset>
+  <legend>Démarrage rapide</legend>
+
+<ol>
+  <li>Créez un répertoire sur votre ordinateur.</li>
+
+  <li>Copiez des photos à l'intérieur de ce répertoire. <em>Attention</em> : le nom des répertoires et des fichiers ne doit contenir que des lettres, des chiffres et les caractères  "-", "_" ou ".". Pas d'espace ou de caractères accentués.</li>
+
+  <li>Avec un client FTP, copiez le répertoire dans le répertoire "galleries" de votre installation de Piwigo.</li>
+
+  <li>Connectez-vous à votre galerie Piwigo, rendez-vous sur <span class="pwgScreen">Administration</span> et cliquez sur le gros bouton de synchronisation.</li>
+</ol>
+
+<p>Bravo ! Vous avez créé avec succès le premier album de votre galerie.</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>Organisation des répertoires et des fichiers</legend>
+
+<ul>
+
+  <li>
+
+    <p>Les répertoires représentant les albums se trouvent dans le répertoire "galleries". Ci-dessous l'arbre des répertoires d'une très petite galerie (mais utilisant de nombreuses fonctionnalités) : </p>
+  
+<pre>
+galleries
+|-- mariage
+|   |-- ceremonie
+|   |   |-- entree
+|   |   |   |-- arrivee-de-paul.jpg
+|   |   |   +-- arrivee-de-virginie.jpg
+|   |   +-- sortie
+|   |       |-- sortie-enfants-honneur.jpg
+|   |       +-- sortie-de-paul-et-virginie.jpg
+|   +-- cocktail
+|       |-- discours001.jpg
+|       |-- discours002.jpg
+|       +-- discours003.jpg
++-- voyage-de-noces
+    |-- hotel.png
+    |-- video-decollage-avion.avi
+    +-- pwg_representative
+        +-- video-decollage-avion.jpg
+</pre>
+
+  </li>
+  
+  <li>A l'exception de celui appelé "pwg_representative", chaque répertoire dans "galleries" génère un album. Le nombre de niveaux (profondeur) n'est pas limité.</li>
+
+  <li>Fondamentalement, une photo est représentée par un fichier. Pour Piwigo, un fichier peut être une photo si son extension figure dans la liste du paramètre de configuration <code>file_ext</code> (voir
+fichier <span class="filename">include/config.inc.php</span>). Un fichier
+peut être une photo si son extension figure dans la liste du paramètre de configuration
+<code>picture_ext</code>.</li>
+
+  <li>Les éléments autres que les photos (vidéos, sons, fichiers texte, tout ce que vous
+voulez...) sont représentés par défaut par une icône correspondant à
+l'extension du nom du fichier. Optionnellement, un
+représentant peut être associé (voir le fichier <span
+class="filename">video-decollage-avion.avi</span> dans l'exemple).</li>
+
+  <li><em>Attention</em> : le nom d'un répertoire ou d'un fichier ne doit
+être composé que de lettres, de chiffres, de "-", "_" ou ".". Pas d'espace
+ou de caractères accentués.</li>
+
+  <li><em>Conseil</em> : un album peut contenir des photos et des
+sous-album à la fois. Néanmoins, il est fortement conseillé pour chaque
+album de choisir entre contenir des photos <strong>ou bien</strong>
+des sous-album.</li>
+
+  <li>Une fois que les fichiers sont
+correctement placés dans les répertoires, se rendre sur l'écran <span
+class="pwgScreen">Administration &raquo; Outils &raquo; Synchroniser</span>.</li>
+
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/fr_FR/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/search.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Recherche</h2>
+
+<p>Recherche de photos dans l'ensemble de la galerie.</p>
+
+<dl>
+
+  <dt>Rechercher un mot</dt>
+
+  <dd>Recherche un ou plusieurs mots dans tous les attributs des photos de la galerie. Utiliser * comme joker pour les recherches partielles.</dd>
+  
+  <dt>Recherche d'un auteur</dt>
+
+  <dd>Utiliser * comme joker pour les recherches partielles.</dd>
+
+  <dt>Recherche par date</dt>
+
+  <dd>Sélectionner une date et/ou une date de fin. Laisser la date vide si
+vous souhaitez faire une recherche "avant". Dans le dernier champ, l'année doit être saisie avec 4 chiffres (2011 par exemple).</dd>
+
+  <dt>Recherche dans les albums</dt>
+
+  <dd>Sélectionner les albums sur lesquels restreindre la
+recherche. Il est possible de chercher dans tous les albums en sélectionnant l'album parent, et en autorisant la recherche dans les sous-albums.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/fr_FR/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/synchronize.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Synchroniser</h2>
+
+<ul>
+
+  <li>Il existe 2 types de synchronisations : structure (répertoires/fichiers) et
+meta-données. Synchroniser la structure consiste à synchroniser l'arborescence
+de vos répertoires et fichiers avec leur représentation dans la
+base de données. La synchronisation des méta-données assure la mise à jour des
+informations telles que le poids du fichier, les dimensions, les données EXIF ou
+IPTC.</li>
+
+  <li>La première synchronisation à effectuer doit être celle sur la
+structure.</li>
+
+  <li>Le processus de synchronisation peut prendre du temps (en fonction de
+la charge du serveur et de la quantité de fichiers à gérer), il est donc
+possible de procéder album par album.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/fr_FR/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/help/user_list.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Liste des utilisateurs</h2>
+
+<p>Permet la gestion des propriétés des utilisateurs enregistrés, à l'exception des permissions, qui sont gérées via d'autres écrans.</p>
+
+<h3>Ajouter un utilisateur</h3>
+
+<p>L'administrateur peut ajouter manuellement des utilisateurs.</p>
+
+<h3>Liste des utilisateurs</h3>
+
+<p>La liste peut être filtrée avec le nom d'utilisateur (* = joker), avec le
+groupe ou encore le statut. La liste peut être triée par date
+d'enregistrement ou nom d'utilisateur, en ordre croissant ou
+décroissant.</p>
+
+<p>Cet écran permet la modification simultanée de plusieurs utilisateurs
+avec les actions suivantes :</p>
+
+<ul>
+  <li>supprimer des utilisateurs (nécessite une confirmation)</li>
+  <li>changer le statut</li>
+  <li>associer ou dissocier des groupes</li>
+  <li>modifier les propriétés d'affichage</li>
+  <li>modifier les propriétés annexes</li>
+</ul>
+
+<p>Les utilisateurs modifiés sont ceux sélectionnés (comportement par défaut) ou l'ensemble des utilisateurs de la liste filtrée.</p>
Index: /tags/2.6.0RC1/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/fr_FR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "Installation";
+$lang['Basic configuration'] = "Configuration de base";
+$lang['Default gallery language'] = "Langue par défaut de la galerie";
+$lang['Database configuration'] = "Configuration de la base de données";
+$lang['Admin configuration'] = "Configuration du compte administrateur";
+$lang['Start Install'] = "Démarrer l'installation";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = "Cet identifiant apparaîtra à tous vos visiteurs. Il vous sert pour administrer le site";
+$lang['Connection to server succeed, but it was impossible to connect to database'] = "La connexion au serveur est OK, mais la connection à cette base de données est impossible";
+$lang['Can\'t connect to server'] = "Impossible de se connecter au serveur";
+$lang['Host'] = "Hôte";
+$lang['localhost or other, supplied by your host provider'] = "localhost ou autre, communiqué par votre hébergeur";
+$lang['User'] = "Utilisateur";
+$lang['user login given by your host provider'] = "nom d'utilisateur communiqué par votre hébergeur";
+$lang['user password given by your host provider'] = "mot de passe utilisateur communiqué par votre hébergeur";
+$lang['Database name'] = "Nom de la base de données";
+$lang['also given by your host provider'] = "également fourni par votre hébergeur";
+$lang['Database table prefix'] = "Préfixe des noms de tables";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "le nom des tables sera précédé de ce préfixe (permet de mieux gérer sa base de données)";
+$lang['enter a login for webmaster'] = "veuillez rentrer un nom d'utilisateur pour le webmaster";
+$lang['webmaster login can\'t contain characters \' or "'] = 'le pseudo du webmestre ne doit pas comporter les caractères " et \'';
+$lang['please enter your password again'] = "veuillez resaisir votre mot de passe";
+$lang['Keep it confidential, it enables you to access administration panel'] = "Il doit rester confidentiel, il permet d'accéder à l'écran d'administration.";
+$lang['Password [confirm]'] = "Mot de passe [Confirmer]";
+$lang['verification'] = "vérification";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "Besoin d'aide ? Posez votre question sur le <a href=\"%s\">forum de Piwigo</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "Les visiteurs pourront contacter l'administrateur du site par ce mail";
+$lang['PHP 5 is required'] = "PHP 5 est requis";
+$lang['It appears your webhost is currently running PHP %s.'] = "Apparemment, la version PHP de votre hébergeur est PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo va essayer de passer en PHP 5 en créant ou modifiant le fichier .htaccess.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Notez que vous pouvez modifier vous-même la configuration PHP et re-lancer Piwigo ensuite.";
+$lang['Try to configure PHP 5'] = "Essayer de configurer PHP 5";
+$lang['Sorry!'] = "Désolé!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo n'a pas pu configurer PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Il vous faut contacter le support de votre hébergeur pour savoir comment configurer vous-même PHP 5.";
+$lang['Hope to see you back soon.'] = "En espérant vous revoir très prochainement.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Félicitations, l\'installation de Piwigo est terminée';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Une solution alternative est de copier le texte dans la zone ci-dessous et de le coller dans le fichier "local/config/database.inc.php" (Attention: database.inc.php ne doit contenir que ce qui se trouve dans la zone, pas de retour à la ligne, pas d\'espace)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'La création du fichier de configuration local/config/database.inc.php a échoué.';
+$lang['Download the config file'] = 'Télécharger le fichier de configuration';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Vous pouvez télécharger le fichier de configuration et le transférer dans le répertoire local/config de votre installation Piwigo.';
+$lang['Just another Piwigo gallery'] = 'Une galerie Piwigo de plus';
+$lang['Welcome to my photo gallery'] = 'Bienvenue sur ma galerie photo';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bienvenue sur votre nouvelle installation de Piwigo !';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'N\'hésitez pas à consulter nos forums si vous avez le moindre problème : %s';
+?>
Index: /tags/2.6.0RC1/language/fr_FR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Français [FR]
Index: /tags/2.6.0RC1/language/fr_FR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/fr_FR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/fr_FR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Mise à jour";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Cette page vous propose de mettre à jour la base de données de votre ancienne version de piwigo vers la nouvelle version.
+L'assistant de mise à jour pense que vous disposez actuellement de la <strong>version %s</strong> (ou équivalente).";
+$lang['Upgrade from version %s to %s'] = "Mise à jour de la version %s à %s";
+$lang['Statistics'] = "Statistiques";
+$lang['total upgrade time'] = "temps total de la mise à jour";
+$lang['total SQL time'] = "temps total des requêtes SQL";
+$lang['SQL queries'] = "nombre de requêtes SQL";
+$lang['Upgrade informations'] = "Informations sur la mise à jour";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veuillez effectuer une maintenance dans [Administration>Outils>Maintenance] si vous rencontrez des problèmes.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Par précaution, les plugins suivants ont été désactivés. Vérifiez s'il existe des mises à jour avant de les réactiver:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Seul un administrateur peut lancer la mise à jour: veuillez vous identifier ci-dessous.";
+$lang['You do not have access rights to run upgrade'] = "Vous n'avez pas les droits nécessaires pour lancer la mise à jour.";
+$lang['All sub-albums of private albums become private'] = 'Tous les sous-albums des albums privés deviennent privés';
+$lang['User permissions and group permissions have been erased'] = "Les permissions des utilisateurs et des groupes ont été effacées";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Seuls le préfixe des miniatures et l'adresse email du webmestre ont étés conservés de la précédente configuration";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Dans le fichier <i>%s</i>, avant <b>?></b>, insérez:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Par précaution, les thèmes suivants ont été désactivés. Vérifiez s\'il existe des mises à jour avant de les réactiver:';
+?>
Index: /tags/2.6.0RC1/language/ga_IE/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ga_IE/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ga_IE/common.lang.php	(revision 25596)
@@ -0,0 +1,83 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Gaeilge [IE]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=708
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Gaeilge';
+$lang_info['country'] = 'éire';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ir';
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d albam suas chun dáta';
+$lang['%d albums updated'] = '%d albaim suas chun dáta';
+$lang['Hello'] = 'Dia Duit';
+$lang['month']['2'] = 'Feabhra';
+$lang['month']['3'] = 'Márta';
+$lang['month']['4'] = 'Aibreán';
+$lang['month']['5'] = 'Bealtaine';
+$lang['month']['6'] = 'Meitheamh';
+$lang['month']['7'] = 'Iúil';
+$lang['month']['8'] = 'Lúnasa';
+$lang['month']['9'] = 'Meán Fómhair';
+$lang['month']['10'] = 'Deireadh Fómhair';
+$lang['month']['11'] = 'Samhain';
+$lang['month']['12'] = 'Nollaig';
+$lang['month']['1'] = 'Eanáir';
+$lang['day']['0'] = 'Dé Domnaigh';
+$lang['day']['1'] = 'Dé Luan';
+$lang['day']['2'] = 'Dé Máirt';
+$lang['day']['3'] = 'Dé Céadaoin';
+$lang['day']['4'] = 'Déaordaoin';
+$lang['day']['5'] = 'De hAoine';
+$lang['day']['6'] = 'Dé Sathairn';
+$lang['Search'] = 'Cuardach';
+$lang['Hello %s,'] = 'Dia Duit a %s';
+$lang['Home'] = 'Leathaineach abhaile';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Dia Duit a %s, Níor aimsíodh ghrianraf ar bith';
+$lang['No'] = 'Nil';
+$lang['I want to add photos'] = 'Ba mhaith liom ....';
+$lang['Here are your connection settings'] = 'Seo duit conn sett...';
+$lang['First Page'] = 'Leathaineacht amhain';
+$lang['Email address'] = 'Seoladh Ríomhpoist';
+$lang['Email address is missing. Please specify an email address.'] = 'Chaill do Email, thug do email mais e do thoil e';
+$lang['Email'] = 'Ríomhpoist';
+$lang['Author: %s'] = 'Údar: %s';
+$lang['Author'] = 'Údar';
+$lang['Date'] = 'Data';
+$lang['Bad request'] = 'Ceist dana';
+$lang['Are you sure?'] = 'An bhfuil tu cinnte';
+$lang['Close this window'] = 'Dun bhfuinneog seo';
+$lang['All'] = 'Gach rud';
+$lang['Email: %s'] = 'Ríomhpoist: %s';
+$lang['square'] = 'Cearnóg';
+$lang['the beginning'] = 'an tús';
+$lang['small'] = 'B - beag';
+$lang['today'] = 'inniu';
+?>
Index: /tags/2.6.0RC1/language/ga_IE/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ga_IE/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ga_IE/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Gaeilge [IE]
Index: /tags/2.6.0RC1/language/gl_ES/about.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/about.html	(revision 25596)
@@ -0,0 +1,15 @@
+<p>Esta galería de fotos está baseada en Piwigo.</p>
+
+<p>Piwigo é un aplicativo de galería de fotos para a web, construído por unha
+comunidade activa de usuarios e desenvolvedores. As extensións fan que Piwigo
+sexa doado de personalizar. E o mellor ca mellor, Piwigo é gratis e de código
+aberto.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Visita o sitio web Piwigo</a></p>
+
+<p> A tradución ó galego é mantida por (nomes en orde alfabética):
+
+<ul>
+<li> <a href="http://piwigo.org/forum/profile.php?id=18579"> damufo </a> </li>
+</ul>
+            Moitas grazas ós tradutores! </p>
Index: /tags/2.6.0RC1/language/gl_ES/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/admin.lang.php	(revision 25596)
@@ -0,0 +1,947 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['%d albums including'] = '%d álbums incluídos';
+$lang['%d albums moved'] = '%d álbums movidos';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalías foron detectadas e corrixidas.';
+$lang['%d anomalies have been detected.'] = '%d anomalías foron detectadas.';
+$lang['%d anomalies have been ignored.'] = '%d anomalías foron ignoradas.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalías non foron corrixidas.';
+$lang['%d anomaly has been corrected.'] = '%d anomalía foi corrixida.';
+$lang['%d anomaly has been detected.'] = '%d anomalía foi detectada.';
+$lang['%d anomaly has been ignored.'] = '%d anomalía foi ignorada.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalía non foi corrixida.';
+$lang['%d association'] = '%d asociación';
+$lang['%d associations'] = '%d asociacións';
+$lang['%d day'] = '%d día';
+$lang['%d days'] = '%d días';
+$lang['%d group'] = '%d grupo';
+$lang['%d groups'] = '%d grupos';
+$lang[' and %d virtual'] = 'e %d virtual';
+$lang[' and %d virtuals'] = 'e %d virtuais';
+$lang['%d album including'] = '%d álbum incluído';
+$lang['%d album moved'] = '%d álbum movido';
+$lang['%s has been successfully updated.'] = '%s foi actualizado con éxito.';
+$lang['%s in the future'] = '%s no futuro';
+$lang['%d waiting for validation'] = '%d agardando validación';
+$lang['%d week'] = '%d semana';
+$lang['%d weeks'] = '%d semanas';
+$lang['%d year'] = '%d ano';
+$lang['%d years'] = '%d anos';
+$lang['%s ago'] = '%d atrás';
+$lang['%d user deleted'] = '%d usuario eliminado';
+$lang['%d user was not updated.'] = '%d usuario non actualizado.';
+$lang['%d user was updated.'] = '%d usuario actualizado.';
+$lang['%d users'] = '%d usuarios';
+$lang['%d users deleted'] = '%d usuarios eliminados';
+$lang['%d users were not updated.'] = '%d usuarios non actualizados.';
+$lang['%d users were updated.'] = '%d usuarios actualizados.';
+$lang['%d user comments rejected'] = '%d comentarios de usuario rexeitados';
+$lang['%d user comments validated'] = '%d comentarios de usuario validados';
+$lang['%d physical'] = '%d físico';
+$lang['%d physicals'] = '%d físicos';
+$lang['%d second'] = '%d segundo';
+$lang['%d seconds'] = '%d segundos';
+$lang['%d tag'] = '%d etiqueta';
+$lang['%d tags'] = '%d etiquetas';
+$lang['%d user'] = '%d usuario';
+$lang['%d user comment rejected'] = '%d comentario de usuario rexeitado';
+$lang['%d user comment validated'] = '%d comentario de usuario validado';
+$lang['%d photos uploaded'] = '%d fotos enviadas';
+$lang['%d photos were deleted'] = '%d fotos eliminadas';
+$lang['%d line filtered'] = '%d liña filtrada';
+$lang['%d lines filtered'] = '%d liñas filtradas';
+$lang['%d mail was not sent.'] = '%d correo non puido ser enviado.';
+$lang['%d mail was sent.'] = '%d correo enviado.';
+$lang['%d mails were not sent.'] = '%d correos non puideron ser enviados.';
+$lang['%d mails were sent.'] = '%d correos enviados.';
+$lang['%d member'] = '%d membro';
+$lang['%d members'] = '%d membros';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minutos';
+$lang['%d month'] = '%d mes';
+$lang['%d months'] = '%d meses';
+$lang['%d of %d photos selected'] = '%d de %d fotos seleccionadas';
+$lang['%d parameter was updated.'] = '%d parámetro actualizado.';
+$lang['%d parameters were updated.'] = '%d parámetros actualizados.';
+$lang['%d photo was deleted'] = '%d foto eliminada';
+$lang['%d guest'] = '%d visitante';
+$lang['%d guests'] = '%d visitantes';
+$lang['%d hour'] = '%d hora';
+$lang['%d hours'] = '%d horas';
+$lang['Administration Home'] = 'Administración';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom é un aplicativo de fotografía deseñado para xestionar grandes cantidades de imaxes dixitais así como a realización do procesado das mesmas.';
+$lang['Advanced features'] = 'Funcións avanzadas';
+$lang['Add write access to the "%s" directory'] = 'Engadir permiso de escritura ó cartafol "%s"';
+$lang['Add/delete a permalink'] = 'Engadir/Eliminar unha ligazón permanente';
+$lang['Added by %s'] = 'Engadido por %s';
+$lang['Album "%s" has been added'] = 'Engadiuse o álbum "%s"';
+$lang['Add to caddie'] = 'Engadir á cesta';
+$lang['Add group'] = 'Engadir un grupo';
+$lang['Add tags'] = 'Engadir etiquetas';
+$lang['Add detailed content'] = 'Engadir contido detallado';
+$lang['Add New Language'] = 'Engadir novo idioma';
+$lang['Add New Theme'] = 'Engadir novo tema';
+$lang['Add Photos'] = 'Engadir fotos';
+$lang['Add a criteria'] = 'Engadir un criterio';
+$lang['Add a filter'] = 'Engadir un filtro';
+$lang['Add a tag'] = 'Engadir unha etiqueta';
+$lang['Add a user'] = 'Engadir un usuario';
+$lang['Add a virtual album'] = 'Engadir un álbum virtual';
+$lang['Add another set of photos'] = 'Engadir outro conxunto de fotos ';
+$lang['Active Languages'] = 'Idiomas activos';
+$lang['Active Plugins'] = 'Engadidos activos';
+$lang['Active Themes'] = 'Temas activos';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activar a icona "novo" ó lado de álbums e fotos';
+$lang['Add'] = 'Engadir';
+$lang['Activate Navigation Thumbnails'] = 'Activar as miniaturas de navegación';
+$lang['Activate comments'] = 'Activar comentarios';
+$lang['Activate icon "%s"'] = 'Activar a icona "%s"';
+$lang['Activate'] = 'Activar';
+$lang['Activate Navigation Bar'] = 'Activar a barra de navegación';
+$lang['ACCESS_1'] = 'Acceso a todos';
+$lang['A new version of Piwigo is available.'] = 'Está dispoñible unha nova versión de Piwigo.';
+$lang['ACCESS_0'] = 'Acceso libre';
+$lang['ACCESS_2'] = 'Acceso a tódolos usuarios rexistrados';
+$lang['ACCESS_3'] = 'Acceso a administradores';
+$lang['ACCESS_4'] = 'Acceso a administradores web';
+$lang['ACCESS_5'] = 'Sen acceso';
+$lang['Access type'] = 'Tipo de acceso';
+$lang['Action'] = 'Acción';
+$lang['Actions'] = 'Accións';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'O aplicativo <em>Piwigo para Android</em> permíteche conectar o teu móbil ou tableta Android á túa galería Piwigo, creando álbums e enviando fotos ó mesmo tempo.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'O aplicativo <em>Piwigo para iOS</em> permíteche conectar o teu iPhone, iPad ou iPod Touch á túa galería Piwigo, creando álbums e enviando fotos ó mesmo tempo.';
+$lang['A locked gallery is only visible to administrators'] = 'Unha galería bloqueada só pode ser vista polos administradores';
+$lang['... or '] = '... ou';
+$lang['+ Add an upload box'] = '+ Engadir outra caixa de transferencia ';
+$lang[', click on'] = ', prema sobre';
+$lang['(this tag will be deleted)'] = '(esa etiqueta será eliminada)';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u usuarios teñen permiso automático porque pertencen a un grupo que posúe ese permiso';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s ten que ser establecido a falso no seu ficheiro local/config/config.inc.php';
+$lang['%s photos can not be regenerated'] = '%s fotos non puideron ser rexeradas';
+$lang['%s photos have been regenerated'] = '%s fotos que foron rexeradas';
+$lang['%s value is not correct file because exif are not supported'] = '%s valor é incorrecto porque exif non é compatible';
+$lang['Dump Database'] = 'Limpar a base de datos';
+$lang['Duplicates'] = 'Duplicados';
+$lang['Does not represent'] = 'Non hai miniatura para';
+$lang['Download,'] = 'Descarga,';
+$lang['Downloads'] = 'Descargas';
+$lang['Drag to re-order'] = 'Prema-e-arrastre para reordenar';
+$lang['Drop into album'] = 'Seleccione un álbum';
+$lang['Duplicate'] = 'Duplicar';
+$lang['Duplicate selected tags'] = 'Duplicar as etiquetas seleccionadas';
+$lang['ERROR'] = 'ERRO';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTE ENGADIDO NON SE ATOPA PERO ESTÁ INSTALADO! DESINSTALAO AGORA.';
+$lang['Edit album'] = 'Modificar álbum';
+$lang['Edit album permissions'] = 'Modificar os permisos do álbum';
+$lang['Edit photo'] = 'Modificar foto';
+$lang['Edit photo information'] = 'Modificar a información da foto';
+$lang['Edit ranks'] = 'Modificar valoracións';
+$lang['Edit selected tags'] = 'Modificar as etiquetas seleccionadas';
+$lang['Edit tags'] = 'Modificar as etiquetas';
+$lang['Element'] = 'Elemento';
+$lang['Element type'] = 'Tipo de elemento';
+$lang['Display options'] = 'Amosar Opcións';
+$lang['Deleted on'] = 'Eliminada o';
+$lang['Deny selected groups'] = 'Denegar o acceso ós grupos seleccionados ';
+$lang['Deny selected users'] = 'Denegar o acceso ós usuarios seleccionados';
+$lang['Detailed informations'] = 'Información detallada';
+$lang['Discover album:'] = 'Descubrir o álbum:';
+$lang['Deletions'] = 'Eliminacións';
+$lang['Description'] = 'Descrición';
+$lang['Directory'] = 'Cartafol';
+$lang['Directory does not exist'] = 'O cartafol non existe';
+$lang['Dissociate from album'] = 'Desasociar do álbum';
+$lang['Dissociated'] = 'Desasociado';
+$lang['Do you want to activate anyway?'] = 'Queres activalo igualmente?';
+$lang['Documentation'] = 'Documentación';
+$lang['Delete selected users'] = 'Eliminar os usuarios seleccionados';
+$lang['Delete this language'] = 'Eliminar este idioma';
+$lang['Delete this theme'] = 'Eliminar este tema';
+$lang['Delete orphan tags'] = 'Eliminar as etiquetas orfas';
+$lang['Delete selected photos'] = 'Eliminar as fotos seleccionadas';
+$lang['Delete selected tags'] = 'Eliminar as etiquetas seleccionadas';
+$lang['Crop'] = 'Redimensionar';
+$lang['Default user does not exist'] = 'O usuario predeterminado non existe';
+$lang['Delete multiple size images'] = 'Eliminar imaxes con múltiples tamaños';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'A anomalía ha de ser corrixida e non pode ser ignorada';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crear o cartafol "%s" na raíz da instalación do teu sitio Piwigo';
+$lang['Create this site'] = 'Crear este sitio';
+$lang['Current name'] = 'Nome actual';
+$lang['Database'] = 'Base de datos';
+$lang['Database synchronization with files'] = 'Sincronizar a base de datos cos ficheiros';
+$lang['Date'] = 'Data';
+$lang['Day'] = 'Día';
+$lang['Deactivate'] = 'Desactivar';
+$lang['Deactivate all'] = 'Desactivar todo';
+$lang['Default comments order'] = 'Orde predeterminada dos comentarios';
+$lang['Default display'] = 'Vista predeterminada';
+$lang['Default photos order'] = 'Orde predeterminada das fotos';
+$lang['Default user cannot be deleted'] = 'O usuario predeterminado non pode ser eliminado';
+$lang['Delete Representant'] = 'Eliminar miniatura do álbum';
+$lang['Correction applied with success'] = 'A corrección aplicouse con éxito';
+$lang['Create'] = 'Crear';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Por causas descoñecidas non se puido comprobar se existe unha nova versión.';
+$lang['Choose an action'] = 'Escoller unha acción';
+$lang['Classic display'] = 'Vista clásica';
+$lang['Confirm merge'] = 'Confirmar mestura';
+$lang['Check for upgrade'] = 'Comprobar se hai novas versións';
+$lang['Check integrity'] = 'Comprobar integridade';
+$lang['Choose an option'] = 'Escoller unha opción';
+$lang['Comments for all'] = 'Comentarios para todos';
+$lang['Complementary mail content'] = 'Contido complementario de correo electrónico';
+$lang['Configuration'] = 'Configuración';
+$lang['Continue processing treatment'] = 'Continuar o procesamento';
+$lang['Correction'] = 'Corrección';
+$lang['Correction applied with error'] = 'Corrección aplicada con erros';
+$lang['Cancel'] = 'Cancelar';
+$lang['Cannot delete the old permalink !'] = 'A vella ligazón permanente non pode ser eliminada!';
+$lang['Center of interest'] = 'Centro de interese';
+$lang['Change Admin Colors'] = 'Mudar as cores da administración';
+$lang['Check all'] = 'Comprobar todo';
+$lang['Check automatic corrections'] = 'Comprobar correccións automáticas';
+$lang['Check for updates'] = 'Comprobar actualizacións';
+$lang['Bound Theme'] = 'Tema personalizado';
+$lang['By %s'] = 'Desenvolvido por %s';
+$lang['Average rate'] = 'Media de valoración';
+$lang['Batch Manager'] = 'Xestor de lotes';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'De xeito predeterminado, Piwigo crea un novo sitio web desde a versión da túa foto en HD (alta definición).';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'De xeito predeterminado, o centro de interese está localizado no centro da foto.';
+$lang['By rank'] = 'Por valoración';
+$lang['Caddie'] = 'Cesta';
+$lang['Caddie management'] = 'Xestión da cesta';
+$lang['Can\'t connect to server.'] = 'Non está dispoñible a conexión co servidor.';
+$lang['Can\'t create temporary file.'] = 'Non se pode crear o ficheiro temporal.';
+$lang['Can\'t download archive.'] = 'O arquivo non se pode descargar.';
+$lang['Can\'t read or extract archive.'] = 'O arquivo non se pode ler ou extraer.';
+$lang['Available versions for'] = 'Versión dispoñible para';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizar ós usuarios a engadir comentarios nos álbums seleccionados';
+$lang['Authorized'] = 'Autorizado';
+$lang['Automatic correction'] = 'Corrección automática';
+$lang['Automatic sort order'] = 'Ordenación automática';
+$lang['Available on'] = 'Dispoñible en';
+$lang['Available only with HTML format'] = 'Dispoñible só co formato HTML';
+$lang['Apply watermark if height is bigger than'] = 'Aplicar a marca de auga se a altura é maior que';
+$lang['Apply watermark if width is bigger than'] = 'Aplicar a marca de auga se a largura é maior que';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Estás seguro que queres instalar esta actualización? Asegúrate de comprobar que esta versión non precisa dunha desinstalación.';
+$lang['Associate to album'] = 'Asociar ó álbum';
+$lang['Associated'] = 'Asociado';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'En todo caso, só os administradores web poden ver esta lapela e nunca administradores.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture é unha poderosa ferramenta para refinar imaxes e xestionar grandes bibliotecas no Mac';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture foi desenvolvido para fotógrafos profesionais coa simplicidade do iPhoto.';
+$lang['Applications'] = 'Aplicacións';
+$lang['Apply action'] = 'Aplicar acción';
+$lang['Apply selected corrections'] = 'Aplicar as correccións seleccionadas';
+$lang['Apply to sub-albums'] = 'Aplicar ós sub-álbums';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolución máxima aproximada: %dM píxeles (que é de %dx%d píxeles).';
+$lang['Are you sure you want to delete this plugin?'] = 'Estás seguro de que queres eliminar este engadido?';
+$lang['Are you sure you want to install this plugin?'] = 'Estás seguro de que queres instalar este engadido?';
+$lang['An information email was sent to group "%s"'] = 'Enviouse un correo electrónico informativo ó grupo "%s"';
+$lang['Anomaly'] = 'Anomalía';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Produciuse un erro durante a extracción. Comproba os permisos dos ficheiros da túa instalación Piwigo. <br><a href="%s">Preme aquí para amosar o rexistro do erro</a>.';
+$lang['An error has occured during upgrade.'] = 'Produciuse un erro durante a actualización.';
+$lang['An error occured during extraction (%s).'] = 'Produciuse un erro durante a extracción dos ficheiros (%s).';
+$lang['Allow users to delete their own comments'] = 'Permitir ós usuarios eliminar seus propios comentarios';
+$lang['Allow users to edit their own comments'] = 'Permitir ós usuarios modificar seus propios comentarios';
+$lang['Allowed file types: %s.'] = 'Permitir os tipos de ficheiro: %s.';
+$lang['Allow rating'] = 'Permitir valoracións';
+$lang['All %d photos are selected'] = 'Tódalas %d fotos están seleccionadas';
+$lang['Allow user registration'] = 'Permitir ó usuario rexistrarse';
+$lang['Allow user customization'] = 'Permitir ó usuario a personalización';
+$lang['Album list management'] = 'Xestión da lista de álbums';
+$lang['Album manual order was saved'] = 'Gardouse a ordenación manual dos álbums';
+$lang['Album name'] = 'Nome do álbum';
+$lang['Album photos associated to the following albums: %s'] = 'Álbum de fotos asociado ós seguintes álbums: %s';
+$lang['Album updated successfully'] = 'O álbum actualizouse con éxito';
+$lang['Albums authorized thanks to group associations'] = 'O álbum autorizouse grazas ás asociacións do grupo';
+$lang['Albums automatically sorted'] = 'Os álbums ordenáronse automaticamente';
+$lang['All extensions are up to date.'] = 'Tódolos engadidos están actualizad0s.';
+$lang['All languages are up to date.'] = 'Tódolos idiomas están actualizados.';
+$lang['All optimizations have been successfully completed.'] = 'Tódalas optimizacións foron completadas con éxito.';
+$lang['All plugins are up to date.'] = 'Tódolos engadidos están actualizados.';
+$lang['All themes are up to date.'] = 'Tódolos temas están actualizados.';
+$lang['Album "%s" now contains %d photos'] = 'O álbum "%s" agora contén %d fotos';
+$lang['Purge never used notification feeds'] = 'Purgar as sementes de notificación nunca usadas';
+$lang['Purge history detail'] = 'Purgar detalles do histórico';
+$lang['Purge history summary'] = 'Purgar o sumario do histórico';
+$lang['Privacy level set to "%s"'] = 'Nivel de privacidade establecido a "%s"';
+$lang['Private'] = 'Privado';
+$lang['Properties'] = 'Propiedades';
+$lang['Public'] = 'Público';
+$lang['Public / Private'] = 'Público / Privado';
+$lang['Purge compiled templates'] = 'Purgar modelos compilados';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'O tempo para preparar a lista de usuarios ós cales se lles enviará o correo é limitado. Non se puideron procesar tódolos usuarios.';
+$lang['Privacy level'] = 'Nivel de privacidade';
+$lang['Predefined filter'] = 'Filtro predefinido';
+$lang['Preferences'] = 'Preferencias';
+$lang['Posted %s on %s'] = 'Enviado %s en %s';
+$lang['Please wait...'] = 'Agarda por favor...';
+$lang['Plugin has been successfully copied'] = 'O engadido copiouse con éxito';
+$lang['Plugin list'] = 'Lista de engadidos';
+$lang['Plugins'] = ' Engadidos';
+$lang['Plugins which need upgrade'] = 'Engadidos a ser actualizados';
+$lang['Portrait'] = 'Vertical';
+$lang['Position'] = 'Posición';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Piwigo Announcements Newsletter'] = 'Boletín informativo de anunciamentos Piwigo';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Engadido de publicación Piwigo para Lightroom';
+$lang['Piwigo Update'] = 'Actualización de Piwigo';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo non pode recuperar o ficheiro coa actualización do servidor';
+$lang['Piwigo configuration'] = 'Configuración de Piwigo';
+$lang['Piwigo export plugin for Aperture'] = 'Engadido de exportación Piwigo para Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Engadido de exportación Piwigo para iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo para Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Engadido de publicación Piwigo para Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Engadido de publicación Piwigo para digiKam';
+$lang['Piwigo version'] = 'Versión de Piwigo';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Comproba os permisos do cartafol "plugins" e subcartafoles (CHMOD).';
+$lang['Please select at least two groups'] = 'Selecciona polo menos dous grupos';
+$lang['Piwigo Administration'] = 'Administración Piwigo';
+$lang['Photo sizes with crop'] = 'Tamaños da foto recortada';
+$lang['Photo unreachable or no support'] = 'Foto inaccesible ou formato incompatible';
+$lang['Photos'] = 'Fotos';
+$lang['Photos generation in progress...'] = 'Xeración de fotos en progreso...';
+$lang['Photo informations updated'] = 'Información da foto actualizada ';
+$lang['Password is missing. Please enter the password.'] = 'Falta a clave. Insire unha clave.';
+$lang['Path'] = 'Ruta';
+$lang['Pending Comments'] = 'Comentarios pendentes';
+$lang['Permalink'] = 'Ligazón permanente';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'A ligazón permanente %s foi usada anteriormente no álbum %s. Bórraa primeiro do histórico de ligazóns permanentes ';
+$lang['Permalink %s is already used by album %s'] = 'A ligazón permanente %s xa está en uso no álbum %s';
+$lang['Permalink history'] = 'Histórico de ligazóns permanentes';
+$lang['Permalinks'] = 'Ligazóns permanentes';
+$lang['Permission denied'] = 'Permiso denegado';
+$lang['Permission granted'] = 'Permiso concedido';
+$lang['Permission granted for groups'] = 'Permiso concedido para grupos';
+$lang['Permission granted for users'] = 'Permiso concedido para usuarios';
+$lang['Permission granted thanks to a group'] = 'Permiso concedido grazas ó grupo';
+$lang['Permission management'] = 'Xestión de permisos';
+$lang['Permissions'] = 'Permisos';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['Photo Page'] = 'Páxina da foto';
+$lang['Photo Properties'] = 'Propiedades da foto';
+$lang['Photo name'] = 'Nome da foto';
+$lang['Optional URL keyword'] = 'Palabra clave opcional ó URL';
+$lang['Operation in progress'] = 'Operación en progreso.';
+$lang['Optimizations have been completed with some errors.'] = 'As optimizacións completáronse con algúns erros.';
+$lang['Options'] = 'Opcións';
+$lang['Order of menubar items has been updated successfully.'] = 'A orde dos elementos da barra de menú actualizouse con éxito.';
+$lang['Original Size'] = 'Tamaño orixinal';
+$lang['Original file : %s'] = 'Ficheiro orixinal: %s';
+$lang['Original templates'] = 'Modelo orixinal';
+$lang['Orphan tags deleted'] = 'Detectáronse etiquetas orfas ';
+$lang['Other plugins'] = 'Outros engadidos dispoñibles';
+$lang['Other private albums'] = 'Outros álbums privados';
+$lang['Overall'] = 'Vista previa';
+$lang['Page banner'] = 'Cartel da páxina';
+$lang['Page end'] = 'Fin da páxina';
+$lang['Pages seen'] = 'Páxinas vistas';
+$lang['Panorama'] = 'Panorama';
+$lang['Parameter'] = 'Opcións';
+$lang['Parameters'] = 'Parámetros';
+$lang['Parent album'] = 'Álbum pai';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta a confirmación da clave. Confirma a clave escollida.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'No teu Linux, simplemente instala Shotwell co teu xestor de paquetes e activa a opción de publicación en Piwigo.';
+$lang['Notify administrators when a comment is'] = 'Notificar ós administradores cando un comentario sexa';
+$lang['Number of albums per page'] = 'Número de álbums por páxina';
+$lang['Number of comments per page'] = 'Número de comentarios por páxina';
+$lang['Number of downloads'] = 'Número de descargas';
+$lang['Number of rates'] = 'Número de valoracións';
+$lang['Number of thumbnails to create'] = 'Número de miniaturas a crear';
+$lang['Numeric identifier : %d'] = 'Identificador numérico: %d';
+$lang['Obsolete Plugins'] = 'Engadidos obsoletos';
+$lang['Only private albums are listed'] = 'Só se amosan os álbums privados';
+$lang['Opacity'] = 'Opacidade';
+$lang['Operating system'] = 'Sistema operativo';
+$lang['None'] = 'Nungún';
+$lang['Not cropped correctly?'] = 'Non se recortou correctamente?';
+$lang['Notification'] = 'Notificación';
+$lang['No results'] = 'Non hai resultados';
+$lang['No user to send notifications by mail.'] = 'Non hai usuario para ser notificado por correo.';
+$lang['No photo in this album'] = 'Non hai fotos neste álbum';
+$lang['No photo selected, %d photos in current set'] = 'Non hai fotos seleccionadas, hai %d fotos no actual conxunto';
+$lang['No photo selected, no action possible.'] = 'Non hai fotos seleccionadas, non hai acción posible.';
+$lang['No mail to send.'] = 'Non hai ningún correo para ser enviado.';
+$lang['No members to manage'] = 'Non hai ningún membro para ser xestionado';
+$lang['No order field selected'] = 'Non hai seleccionado ningún campo a ordenar';
+$lang['No photo can be deleted'] = 'Non pode ser borrada ningunha foto';
+$lang['No photo in the current set.'] = 'Non hai ningunha foto no actual conxunto.';
+$lang['New photos were added'] = 'Foron engadidas novas fotos';
+$lang['No file was uploaded'] = 'Non se enviou ningún ficheiro';
+$lang['No group selected, no action possible.'] = 'Non hai ningún grupo seleccionado. Non hai acción posible.';
+$lang['No group is permitted to see this private album'] = 'Ningún grupo ten permiso para ver este álbum privado';
+$lang['New photos added'] = 'Novas fotos engadidas';
+$lang['Move to album'] = 'Mover ó álbum';
+$lang['Multiple Size'] = 'Tamaño múltiple';
+$lang['Name'] = 'Nome';
+$lang['Name of the duplicate'] = 'Nome do duplicado';
+$lang['New Version'] = 'Nova versión';
+$lang['New name'] = 'Novo nome';
+$lang['New parent album'] = 'Novo álbum pai';
+$lang['New tag'] = 'Nova etiqueta';
+$lang['No destination tag selected'] = 'Non hai seleccionado ningún destino para a etiqueta';
+$lang['No display'] = 'Non amosar';
+$lang['Month'] = 'Mes';
+$lang['Move'] = 'Mover';
+$lang['Move albums'] = 'Mover álbums';
+$lang['Missing Plugins'] = 'Non se atopan engadidos ';
+$lang['Missing a temporary folder'] = 'Non se atopa o cartafol temporal';
+$lang['Miscellaneous'] = 'Outras informacións';
+$lang['Modify information'] = 'Modificar información';
+$lang['Minimum height'] = 'Altura mínima';
+$lang['Minimum privacy level'] = 'Nivel de privacidade mínimo';
+$lang['Minimum width'] = 'Largura mínima';
+$lang['Metadata synchronized from file'] = 'Metadatos sincronizados desde o ficheiro';
+$lang['Maximum file size: %sB.'] = 'Tamaño máximo de ficheiro: %sB.';
+$lang['Maximum height'] = 'Altura máxima';
+$lang['Maximum width'] = 'Largura máxima';
+$lang['Members'] = 'Membros';
+$lang['Menu Management'] = 'Menús';
+$lang['Merge selected groups'] = 'Combinar os grupos seleccionados';
+$lang['Merge selected tags'] = 'Combinar as etiquetas seleccionadas';
+$lang['Merge tags'] = 'Combinar etiquetas';
+$lang['Metadata synchronization results'] = 'Resultados da sincronización dos metadatos';
+$lang['Main'] = 'Principal';
+$lang['Main "guest" user does not exist'] = 'O usuario principal "invitado" non existe';
+$lang['Main "guest" user status is incorrect'] = 'O usuario principal "invitado" ten un estado incorrecto';
+$lang['Main "webmaster" user does not exist'] = 'O usuario principal "administrador web" non existe';
+$lang['Main "webmaster" user status is incorrect'] = 'O usuario principal "administrador web" ten un estado incorrecto';
+$lang['Main Page'] = 'Páxina principal';
+$lang['Maintenance'] = 'Mantemento';
+$lang['Make this language available to users'] = 'Facer este idioma dispoñible para os usuarios';
+$lang['Make this theme available to users'] = 'Facer este tema dispoñible para os usuarios';
+$lang['Manage'] = 'Xestión';
+$lang['Manage Permissions'] = 'Xestionar permisos';
+$lang['Manage authorizations for selected albums'] = 'Xestionar permisos para os álbums seleccionados';
+$lang['Manage permissions for group "%s"'] = 'Xestionar permisos para o grupo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Xestionar permisos para o usuario "%s"';
+$lang['Manage photo ranks'] = 'Xestionar as valoracións das fotos';
+$lang['Manage photos'] = 'Xestionar fotos';
+$lang['Manage tags'] = 'Xestionar etiquetas';
+$lang['Manage the members'] = 'Xestionar os membros';
+$lang['Manage this set of %d photos'] = 'Xestionar este conxunto de %d fotos';
+$lang['Manual order'] = 'Orde manual';
+$lang['Link all album photos to some existing albums'] = 'Ligar todas as fotos do álbum a un álbum xa existente';
+$lang['Locked'] = 'Bloqueado';
+$lang['Last import'] = 'Última importación';
+$lang['Last revisions'] = 'Última revisión';
+$lang['Last send'] = 'Último envío';
+$lang['Learn more'] = 'Aprender máis';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contactos';
+$lang['Level 2'] = 'Amigos';
+$lang['Level 4'] = 'Familia';
+$lang['Level 8'] = 'Administradores';
+$lang['Link all album photos to a new album'] = 'Ligar todas as fotos do álbum a un novo álbum';
+$lang['Linked albums'] = 'Álbumes ligados';
+$lang['List'] = 'Listaxe';
+$lang['Local'] = 'Local';
+$lang['Lock'] = 'Bloquear';
+$lang['Lock albums'] = 'Bloquear álbums';
+$lang['Lock gallery'] = 'Bloquear galería';
+$lang['Mail address is obligatory for all users'] = 'O enderezo de correo é obrigatorio para tódolos usuarios';
+$lang['Mail content'] = 'Contido do correo';
+$lang['Mail sent to %s [%s].'] = 'Enviar correo a %s [%s].';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fica actualizado co proxecto Piwigo, subscríbete ó boletín dos anuncios do Piwigo. Recibirás correos electrónicos cando estea dispoñible unha nova versión (ás veces inclúen a corrección dun erro de seguranza, é importante coñecer isto e actualizar) e cando se producen actividades importantes no proxecto. Só se enviarán uns poucos correos ó longo do ano.';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluír os datos do historial (Aviso: o límite de memoria do servidor pode superarse)';
+$lang['Information data registered in database'] = 'Información rexistrada na base de datos';
+$lang['Inactive Languages'] = 'Idiomas inactivos';
+$lang['Inactive Plugins'] = 'Engadidos inactivos';
+$lang['Inactive Themes'] = 'Temas inactivos';
+$lang['Include display of recent photos grouped by dates'] = 'Incluír pantalla de fotos recentes agrupadas por data';
+$lang['Informations'] = 'Información';
+$lang['Install'] = 'Instalar';
+$lang['Install on your computer,'] = 'Instalar no teu computador,';
+$lang['Installed Languages'] = 'Idiomas instalados';
+$lang['Installed Themes'] = 'Temas instalados';
+$lang['Instructions to use Piwigo'] = 'Instrucións para usar Piwigo';
+$lang['Invert'] = 'Inverter';
+$lang['Landscape'] = 'Apaisado';
+$lang['Language has been successfully installed'] = 'O idioma instalouse correctamente';
+$lang['Languages'] = 'Idiomas';
+$lang['Languages which need upgrade'] = 'Idiomas que precisan actualización';
+$lang['Last hit'] = 'Último acceso';
+$lang['If you encounter problems or have any question, please send a message to'] = 'se atopas problemas ou tes algunha cuestión, envía unha mensaxe a';
+$lang['Ignore selected anomalies'] = 'Ignorar as anomalías seleccionadas';
+$lang['Ignore this update'] = 'Ignorar esta actualización';
+$lang['Image Quality'] = 'Calidade da imaxe';
+$lang['Image id'] = 'Identificador da imaxe';
+$lang['Images manual order was saved'] = 'Gardouse a orde manual das imaxes';
+$lang['Impossible automatic correction'] = 'É imposible a corrección automática';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Este tema non pode ser activado, porque falta o tema pai: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Non se pode desactivar este idioma, primeiro establece outro como predeterminado.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Non se pode desactivar este idioma, tes que ter polo menos un idioma.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Non se pode desactivar este tema, tes que ter polo menos un tema.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema non pode ser eliminado porque outros temas dependen del: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'No teu ficheiro php.ini, a opción upload_max_filesize (%sB) é maior que post_max_size (%sB), tes que mudar esta opción';
+$lang['Ignore All'] = 'Ignorar todo';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se non estás dispoñibles fotos en alta definición e se o actual sitio web é maior que o tamaño da redimensión, Piwigo moveraas como se foran de alta definición e creará unha foto de menor resolución para ser amosada. ';
+$lang['IP'] = 'IP';
+$lang['Hoverbox display'] = 'Amosar en caixa emerxente';
+$lang['Hit'] = 'Acceso';
+$lang['Hour'] = 'Hora';
+$lang['I decide to update anyway'] = 'Decido actualizar igualmente';
+$lang['Grant selected groups'] = 'Dar acceso ós grupos seleccionados';
+$lang['Grant selected users'] = 'Dar acceso ós usuarios seleccionados';
+$lang['Graphics Library'] = 'Biblioteca de gráficos';
+$lang['Group'] = 'Grupo';
+$lang['Group management'] = 'Xestión de grupos';
+$lang['Group name'] = 'Nome do grupo';
+$lang['Groups'] = 'Grupos';
+$lang['Groups and users'] = 'Grupos e usuarios';
+$lang['Guest Settings'] = 'Opcións dos invitados';
+$lang['Guest cannot be deleted'] = 'O usuario Invitado non pode ser eliminado';
+$lang['Guests'] = 'Invitados';
+$lang['Height'] = 'Altura';
+$lang['Hello'] = 'Ola';
+$lang['Hello,'] = 'Ola,';
+$lang['Help Me'] = 'Axúdame';
+$lang['Hide'] = 'Agochar';
+$lang['High definition'] = 'Alta definición';
+$lang['High definition enabled'] = 'Activar alta definición';
+$lang['History'] = 'Historia';
+$lang['Go to %s or %s for more informations'] = 'Ir a %s ou a %s para máis información';
+$lang['Forbid this language to users'] = 'Prohibir este idioma ós usuarios';
+$lang['Forbid this theme to users'] = 'Prohibir este tema ós usuarios';
+$lang['Forbidden'] = 'Prohibido';
+$lang['Form'] = 'Formulario';
+$lang['GD library is missing'] = 'Non se atopa a biblioteca GD';
+$lang['GD version'] = 'Versión da biblioteca GD';
+$lang['Gallery title'] = 'Título da galería';
+$lang['Gallery unlocked'] = 'Galería desbloqueada';
+$lang['General statistics'] = 'Estatísticas xerais';
+$lang['Generate multiple size images'] = 'Xerar múltiples tamaños para as imaxes';
+$lang['Get Support on Piwigo Forum'] = 'Obter asistencia no foro de Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dar permiso de escritura (chmod 777) ó cartafol "%s" na raíz da instalación do teu sitio Piwigo';
+$lang['Go to'] = 'Ir a';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamaños de fotos recortadas, como "Cadrado", Piwigo fará o posible para incluír o centro de interese.';
+$lang['Follow Orientation'] = 'Sigue a orientación';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Pode que os seguintes engadidos non sexan compatibles coa nova versión de Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Pode que os seguintes temas non sexan compatibles coa nova versión de Piwigo:';
+$lang['File upload stopped by extension'] = 'O envío do ficheiro parou por unha extensión';
+$lang['File/directory read error'] = 'Produciuse un erro ó ler o ficheiro/cartafol';
+$lang['Find a new representant by random'] = 'Atopar unha nova miniatura para o álbum ó chou';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'A galería inclúe funcións de navegación, creación de álbums e subida de fotos.';
+$lang['Extend for templates'] = 'Extensión de modelos';
+$lang['Extensions Update'] = 'Actualizar extensións';
+$lang['FTP + Synchronization'] = 'FTP + Sincronización';
+$lang['Failed to write file to disk'] = 'Fallo ó escribir o ficheiro no disco';
+$lang['File'] = 'Ficheiro';
+$lang['Exif extension not available, admin should disable exif use'] = 'A extensión Exif non está dispoñible. Un administrador debería desactivar o uso de metadatos Exif';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Excedeuse o tempo de execución, o tratamento debe continuar [Tempo estimado: %d segundo].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Excedeuse o tempo de execución, o tratamento debe continuar [Tempo estimado: %d segundos].';
+$lang['Email administrators when a comment is deleted'] = 'Enviar un correo electrónico ós administradores cando se borre un comentario';
+$lang['Email administrators when a comment is modified'] = 'Enviar un correo electrónico ós administradores cando se modifique un comentario';
+$lang['Email admins when a comment requires validation'] = 'Enviar un correo electrónico ós administradores cando un comentario requira validación';
+$lang['Email admins when a new user registers'] = 'Enviar un correo electrónico ós administradores cando se rexistre un novo usuario';
+$lang['Email admins when a valid comment is entered'] = 'Enviar un correo electrónico ós administradores cando se insira un comentario válido';
+$lang['Error list'] = 'Lista de erros';
+$lang['Error on file "%s" : %s'] = 'Produciuse un erro no ficheiro "%s": %s';
+$lang['Error when sending email to %s [%s].'] = 'Produciuse un erro cando se envíe un correo electrónico a %s [%s].';
+$lang['Errors caption'] = 'Lendas dos erros';
+$lang['Everybody'] = 'Todos';
+$lang['Set creation date'] = 'SAección data';
+$lang['Set title'] = 'Establecer o título';
+$lang['Settings'] = 'Opcións';
+$lang['Set as default theme for unregistered and new users'] = 'Establecer como tema predeterminado para visitantes e non rexistrados e para novos usuarios';
+$lang['Set author'] = 'Establecer autor';
+$lang['Select the destination tag'] = 'Escoller a etiqueta dun destino';
+$lang['Selection'] = 'Escolla';
+$lang['Send'] = 'Enviar';
+$lang['Send an information email to group members'] = 'Enviar unha notificación por emalis ós membros dun grupo';
+$lang['Send connection settings by email'] = 'Enviar credenciais por correo electrónico';
+$lang['Send mail as'] = 'Enviar correo como';
+$lang['Send mail on HTML format'] = 'Enviar email  en formato HTML';
+$lang['Send mail to users'] = 'Norificacións';
+$lang['Set as default language for unregistered and new users'] = 'Idioma predeterminado para os invitados e os noves usuarios';
+$lang['Save visits in history for'] = 'Gardar visitas no histórico a';
+$lang['Search for new images in the directories'] = 'Buscar novas imaxes nos directorios';
+$lang['Searching...'] = 'Buscando...';
+$lang['Section'] = 'Sección';
+$lang['See you soon,'] = 'Vémonos pronto,';
+$lang['See you soon.'] = 'Vémonos pronto.';
+$lang['Select a file'] = 'Escolle un ficheiro';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Escolle unha zona co teu rato para definir un novo centro de interese.';
+$lang['Select an album'] = 'Escoller un álbum';
+$lang['Select at least one album'] = 'Escoller polo menos un álbum';
+$lang['Select at least one comment'] = 'Escoller polo menos un comentario';
+$lang['Select at least one photo'] = 'Escoller polo menos unha foto';
+$lang['Select at least one user'] = 'Escoller polo menos un usuario';
+$lang['Select at least two tags for merging'] = 'Escoller polo menos dúas etiquetas para combinar';
+$lang['Select files'] = 'Escoller ficheiros';
+$lang['Select groups...'] = 'Escoller grupos...';
+$lang['Select recipients'] = 'Escoller receptores';
+$lang['Select users...'] = 'Escoller usuarios...';
+$lang['Select:'] = 'Escoller';
+$lang['Save to permalink history'] = 'Gardar no histórico de ligazóns permanentes';
+$lang['Save manual order'] = 'Gardar a orde manual';
+$lang['Save order'] = 'Gardar a orde';
+$lang['Save Template Directory'] = 'Gardar o cartafol de modelos';
+$lang['Represents'] = 'É a miniatura para';
+$lang['Reset ignored updates'] = 'Reiniciar as actualizacións ignoradas';
+$lang['Resize'] = 'Redimensionar';
+$lang['Resize after upload'] = 'Redimensionar despois de enviar';
+$lang['Restore'] = 'Restaurar';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurar a configuración predeterminada. Perderás a configuración dos engadidos!';
+$lang['Save Settings'] = 'Gardar opcións';
+$lang['Representant'] = 'Miniatura do álbum';
+$lang['Representation of albums'] = 'Miniatura do álbum';
+$lang['Representative'] = 'Miniatura do álbum';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Substitución dos modelos orixinais polos modelos personalizados do subcartafol template-extension';
+$lang['Replacers (customized templates)'] = 'Subtítulos (modelos personalizados)';
+$lang['Remove all filters'] = 'Eliminar tódolos filtros';
+$lang['Remove from caddie'] = 'Eliminar da cesta';
+$lang['Rename'] = 'Renomear';
+$lang['Repair and optimize database'] = 'Reparar e optimizar a base de datos';
+$lang['Released on'] = 'Lanzado en';
+$lang['Reinitialize check integrity'] = 'Reiniciar a comprobación da integridade';
+$lang['Reject'] = 'Rexeitar';
+$lang['Remote'] = 'Remoto';
+$lang['Ratio'] = 'Proporción';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (cliente RemoteGallery para Android) é un software de código aberto (GPL v3) cliente de Piwigo para teu dispositivo Android.';
+$lang['Read Piwigo Documentation'] = 'Ler a documentación Piwigo';
+$lang['Refresh'] = 'Actualizar';
+$lang['Refresh photo set'] = 'Actualizar o lote de fotos';
+$lang['Purge search history'] = 'Purgar o histórico da procura';
+$lang['Purge sessions'] = 'Purgar as sesións';
+$lang['Purge user cache'] = 'Purgar a caché de usuario';
+$lang['Quick Local Synchronization'] = 'Sincronización local rápida';
+$lang['Random photo'] = 'Foto ó chou';
+$lang['Rate'] = 'Valorar';
+$lang['Rate date'] = 'Data da valoración';
+$lang['Rated %d times, score : %.2f'] = 'Valorada %d veces, valoración: %.2f';
+$lang['Rating'] = 'Valoración';
+$lang['Rating by guests'] = 'Valoración por usuarios';
+$lang['global mode'] = 'modo global';
+$lang['for the file format'] = 'para o formato de ficheiro';
+$lang['for this file format'] = 'para este formato de ficheiro';
+$lang['Email'] = 'Correo electrónico';
+$lang['errors during synchronization'] = 'erros durante a sincronización';
+$lang['even already synchronized photos'] = 'mesmas fotos xa sincronizadas';
+$lang['existing album'] = 'álbum existente';
+$lang['first photo added on %s'] = 'primeira foto engadida o %s';
+$lang['dissociate from group'] = 'desasociar do grupo';
+$lang['deleted'] = 'eliminado';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'O digiKam é un xestor de fotos avanzado de software libre para Linux, Windows e MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'O digiKam está deseñado para fotógrafos que queren ver, xestionar, modificar, mellorar, organizar, etiquetar e compartir fotografías.';
+$lang['directories + files'] = 'cartafoles + ficheiros';
+$lang['display'] = 'pantalla';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'amosar a información máxima (álbums e fotos engadidas, álbums e fotos eliminadas)';
+$lang['delete this site and all its attached elements'] = 'eliminar este sitio e toda a información asociada';
+$lang['created'] = 'creado';
+$lang['custom'] = 'Personalizar';
+$lang['default'] = 'predeterminado';
+$lang['default values'] = 'valores predeterminados';
+$lang['delete'] = 'eliminar';
+$lang['delete album'] = 'eliminar álbum';
+$lang['delete photo'] = 'eliminar foto';
+$lang['confirm'] = 'confirmar';
+$lang['create a new album'] = 'crear un novo álbum';
+$lang['create a new site'] = 'crear un novo sitio';
+$lang['clean'] = 'limpar';
+$lang['between %d and %d pixels'] = 'entre %d e %d píxeis';
+$lang['bottom left corner'] = 'esquina esquerda de abaixo';
+$lang['bottom right corner'] = 'esquina dereita de abaixo';
+$lang['cancel manual order'] = 'cancelar orde manual';
+$lang['average time'] = 'tempo de medio';
+$lang['between'] = 'entre o';
+$lang['apply automatic sort order'] = 'ordenar automaticamente';
+$lang['associate to group'] = 'asociar ó grupo';
+$lang['automatic order'] = 'Orde automática';
+$lang['between %.2f and %.2f'] = 'entre %.2f e %.2f';
+$lang['albums added in the database'] = 'álbums engadidos na base de datos';
+$lang['albums deleted in the database'] = 'álbums eliminados na base de datos';
+$lang['all'] = 'todos';
+$lang['an error happened'] = 'produciuse un erro';
+$lang['and'] = 'e';
+$lang['any visitor can see this album'] = 'calquera visitante pode ver este álbum';
+$lang['added'] = 'engadido';
+$lang['administrators'] = 'administradores';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemas ou cuestións';
+$lang['Your configuration settings are saved'] = 'As opcións de configuración foron gardadas';
+$lang['Zoom'] = 'Zúm';
+$lang['[%s] Visit album %s'] = '[%s] visitar álbum %s';
+$lang['add a new watermark'] = 'engadir unha nova marca de auga';
+$lang['add new photos to caddie'] = 'engadir unha nova cesta de fotos';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Precisas actualizar o sistema para aproveitar ó máximo o aplicativo, do contrario o aplicativo non funcionará completo ou correctamente.';
+$lang['You might go to plugin list to install and activate it.'] = 'Tes que ir á lista de engadidos e activalo.';
+$lang['You need to confirm deletion'] = 'Tes que confirmar a eliminación';
+$lang['You cannot delete your account'] = 'Non podes eliminar túa conta';
+$lang['You cannot move an album in its own sub album'] = 'Non podes mover un álbum dentro dun subálbum propio.';
+$lang['You have %d orphan tags: %s.'] = 'Tes %d etiquetas orfas: %s';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Tes especificado <i>$conf[\'order_by\']</i> no teu ficheiro de configuración local, este parámetro está obsoleto, elimínao ou renoméao a <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Fostes subscrito para recibir notificacións por correo.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Fostes dessubscrito para recibir notificacións por correo.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Non se pode definir unha orde predeterminada para as fotos porque está establecida unha configuración personalizada na configuración local do aplicativo.';
+$lang['You can activate only one mobile theme.'] = 'Só se pode activar un tema para dispositivos móbiles.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Podes actualizar a Piwigo %s directamente, sen actualizar a Piwigo %s (recomendado).';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Estar a usar o formulario FLASH para enviar. Proba o <a href="%s">formulario HTML</a> para enviar fotos ó servidor.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Estar a usar o formulario HTML para enviar. Proba o <a href="%s">formulario FLASH</a> para enviar fotos ó servidor.';
+$lang['You are running the latest version of Piwigo.'] = 'Estás executando a última versión.';
+$lang['You are running on development sources, no check possible.'] = 'Estar a empregar unha fonte de desenvolvemento. Non se pode comprobar a última versión.';
+$lang['With no album'] = 'Sen álbum';
+$lang['With no tag'] = 'Sen etiqueta';
+$lang['With no virtual album'] = 'Sen álbum virtual';
+$lang['X Position'] = 'Posición X';
+$lang['X Repeat'] = 'Repetir X';
+$lang['Y Position'] = 'Posición Y';
+$lang['Year'] = 'Ano';
+$lang['Watermark'] = 'Marca de auga';
+$lang['Web Form'] = 'Formulario web';
+$lang['Webmaster cannot be deleted'] = 'Non se pode eliminar o administrador web';
+$lang['Webmaster status is required.'] = 'O estado do administrador web é obrigatorio.';
+$lang['Week starts on'] = 'A semana comeza o';
+$lang['Who can see these photos?'] = 'Quen pode ver estas fotos?';
+$lang['Who can see this photo?'] = 'Quen pode ver esta foto?';
+$lang['Width'] = 'Largura';
+$lang['With blank value, gallery title will be used'] = 'Se se deixa en branco, empregarase o título da galería';
+$lang['Users'] = 'Usuarios';
+$lang['Validate'] = 'Validar';
+$lang['Validation'] = 'Validación';
+$lang['Version'] = 'Versión';
+$lang['View in gallery'] = 'Ver na galería';
+$lang['Virtual Links'] = 'Ligazóns virtuais';
+$lang['Virtual album'] = 'Álbum virtual';
+$lang['Virtual album added'] = 'Engadiuse o álbum virtual';
+$lang['Virtual album deleted'] = 'Eliminouse o álbum virtual';
+$lang['Virtual album name'] = 'Nome do álbum virtual';
+$lang['Virtual albums to move'] = 'Mover álbums virtuais';
+$lang['Visit Gallery'] = 'Visitar a galería';
+$lang['Visit Piwigo project website'] = 'Visitar o sitio web do proxecto Piwigo';
+$lang['Visit language site'] = 'Visitar o sitio do idioma';
+$lang['Visit plugin site'] = 'Visitar o sitio do engadido';
+$lang['Visit theme site'] = 'Visitar o sitio do tema';
+$lang['Visited %d times'] = 'Visitado %d veces';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Aviso! Este engadido parece non ser compatible con esta versión de Piwigo.';
+$lang['Waiting'] = 'Pendente';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Aviso! subscribir e dessubscribir enviará un correo ós usuarios';
+$lang['User %s [%s] was added to the subscription list.'] = 'O usuario %s [%s] engadiuse á lista de subscrición.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'O usuario %s [%s] non se engadiu á lista de subscrición.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'O usuario %s [%s] non se eliminou da lista de subscrición.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'O usuario %s [%s] eliminouse da lista de subscrición.';
+$lang['User comments validation'] = 'Validación dos comentarios do usuario';
+$lang['User list'] = 'Lista de usuarios';
+$lang['User status'] = 'Estado do usuario';
+$lang['User %s [%s] added.'] = 'Engadiuse o usuario %s [%s]';
+$lang['Used metadata'] = 'Metadatos usados';
+$lang['User'] = 'Usuario';
+$lang['User "%s" created with "%s" like password'] = 'Creouse o usuario "%s" coa clave "%s"';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Usar a orde de selección das fotos predeterminada (definida no ficheiro de configuración)';
+$lang['Update albums informations'] = 'Actualizar información dos álbums';
+$lang['Update in progress... Please wait.'] = 'Actualización en progreso... Agarda.';
+$lang['Update photos information'] = 'Actualizada a información das fotos';
+$lang['Update to Piwigo %s'] = 'Actualizar a Piwigo %s';
+$lang['Updates'] = 'Actualizacións';
+$lang['Upload'] = 'Enviar';
+$lang['Upload Photos'] = 'Enviar fotos';
+$lang['Uploaded Photos'] = 'Fotos enviadas';
+$lang['Uncheck all'] = 'Desbloquear todo';
+$lang['Uninstall'] = 'Desinstalar';
+$lang['Uninstalled Plugins'] = 'Engadidos desinstalados';
+$lang['Unknown upload error'] = 'Erro descoñecido ó enviar';
+$lang['Unlock gallery'] = 'Desbloquear alería';
+$lang['Unlocked'] = 'Desbloqueada';
+$lang['Unsubscribe from notification by mail'] = 'Dessubscribir desde a notificación por correo electrónico';
+$lang['Unsubscribed'] = 'Dessubscrito';
+$lang['Update All'] = 'Actualizar todo';
+$lang['Update Complete'] = 'Actualización completa';
+$lang['Tools'] = 'Ferramentas';
+$lang['Two updates are available'] = 'Están dispoñibles dúas actualizacións';
+$lang['Type here the author name'] = 'Escribe aquí o nome do autor';
+$lang['Type here the name of the new group'] = 'Escribe aquí o nome do novo grupo';
+$lang['Type here the title'] = 'Escribe aquí o título';
+$lang['Type in a search term'] = 'Escribe un termo de busca';
+$lang['Unable to check for upgrade.'] = 'Non se puido comprobar as actualizacións';
+$lang['Unable to dump database.'] = 'Non se puido limpar a base de datos.';
+$lang['Toggle \'default group\' property'] = 'Inverter a propiedade \'grupo predeterminado\'';
+$lang['To unsubscribe'] = 'Dessubscribir';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'O tempo para enviar correos é limitado. Algúns correos non se enviarán.';
+$lang['Title'] = 'Título';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar túas fotos de digiKam a Piwigo, simplemente instala digiKam e os engadidos Kipi.';
+$lang['To send ?'] = 'Enviar?';
+$lang['To subscribe'] = 'Subscribir';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Esta é unha actualización importante, con  <a href="%s">novas e excitantes características</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Esta é unha actualización menor, só con correccións de erros.';
+$lang['This name is already used by another group.'] = 'Este nome xa está en uso por outro grupo.';
+$lang['This site already exists'] = 'Este sitio xa existe';
+$lang['This theme was not designed to be directly activated'] = 'Este tema non foi deseñado para ser activado de xeito directo';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Thumbnails generation in progress...'] = 'Xeración de miniaturas en progreso...';
+$lang['Time'] = 'Tempo';
+$lang['There is no other plugin available.'] = 'Non hai outro engadido dispoñible.';
+$lang['There is no other theme available.'] = 'Non hai outro tema dispoñible.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Este álbum contén %d fotos, engadidas entre %s e %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Este álbum contén %d fotos, engadidas o %s.';
+$lang['This album contains no photo.'] = 'Este álbum non contén fotos.';
+$lang['This group will be set to default'] = 'Este grupo será usado como predeterminado';
+$lang['This group will be unset to default'] = 'Este grupo xa non será usado como predeterminado';
+$lang['Theme has been successfully installed'] = 'O tema instalouse con éxito';
+$lang['Themes'] = 'Temas';
+$lang['Themes which need upgrade'] = 'Temas que precisan de actualización';
+$lang['There is no available subscribers to mail.'] = 'Non hai subscritores para ser notificados por correo electrónico.';
+$lang['There is no group in this gallery.'] = 'Non hai grupo nesta galería.';
+$lang['There is no other language available.'] = 'Non hai outros idiomas dispoñibles.';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'O ficheiro enviado excede a regra MAX_FILE_SIZE que foi especificada no formulario HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'O ficheiro enviado excede a regra upload_max_filesize que foi especificada no php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'O ficheiro enviado foi parcialmente enviado';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os ficheiros enviados exceden a regra upload_max_filesize que foi especificada no php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'A versión instalada de %s [%s] non é compatible coa versión requirida [%s]';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'O administrador web subscribiute para ser notificado por correo electrónico.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'O administrador web subscribiute para recibir notificacións por correo electrónico.';
+$lang['The whole page'] = 'A páxina completa';
+$lang['The whole set'] = 'Todo o conxunto';
+$lang['The original image quality must be a number between %d and %d'] = 'A calidade da foto orixinal ha de ser un número entre %d e %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'A altura máxima do orixinal debe ser un número entre %d e %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'A largura máxima do orixinal debe ser un número entre %d e %d';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'O nome da ligazón permanente debe ser un nome composto por a-z, A-Z, 0-9, "-", "_" ou "/". Non pode ser un número ou comezar por un número seguido por "-"';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Ó número de comentarios de usuarios por páxina debe estar entre 5 e 50.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interese é a zona máis significativa da foto.';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Non se pode acceder ó ficheiro ou cartafol (pode non existir ou ter o acceso denegado)';
+$lang['The following tag was deleted'] = 'A seguinte etiqueta foi eliminada';
+$lang['The gallery URL is not valid.'] = 'O URL da galería non é válido.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'O nome do grupo non pode conter " (vírgulas dobre) ou \' (vírgulas simples) ou estar baleiro.';
+$lang['The name of an album must not be empty'] = 'O nome dun álbum non pode estar baleiro';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'O nome de cartafoles e ficheiros debe conter só letras, números, "-", "_" ou "." ';
+$lang['Tag "%s" was added'] = 'A etiqueta "%s" foi engadida';
+$lang['Tag selection'] = 'Selección de etiquetas';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Etiquetas <em>%s</em> combinadas dentro da etiqueta <em>%s</em>';
+$lang['Templates'] = 'Modelos';
+$lang['Templates configuration has been recorded.'] = 'A configuración dos modelos foi gardada.';
+$lang['The %d following tags were deleted'] = 'As seguintes %d etiquetas foron eliminadas';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'O engadido de exportación Piwigo permite crear álbums e exportar fotos.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'O engadido de publicación Piwigo permite exportar e sincronizar directamente fotos desde Lightroom á galería de fotos Piwigo. ';
+$lang['The anomaly will be ignored until next application version'] = 'A anomalía será ignorada ata a próxima versión do aplicativo';
+$lang['Synchronize metadata'] = 'Sincronizar metadatos';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTE ENGADIDO AGORA É PARTE DO NÚCLEO PIWIGO! DESINSTÁLAO AGORA!';
+$lang['Tag "%s" already exists'] = 'A etiqueta "%s" xa existe';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'A etiqueta "%s" agora é un duplicado de "%s"';
+$lang['Sum of rates'] = 'Suma das valoracións';
+$lang['Summary'] = 'Sumario';
+$lang['Support'] = 'Asistencia';
+$lang['Switch to clear or dark colors for administration'] = 'Mudar as cores entre claros e escuros na administración ';
+$lang['Synchronize'] = 'Sincronizar';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Os subscritores só poden ser listados (se a opción está activada) cando hai novos elementos que notificar.';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Subscribir %s ó boletín informativo de anunciamentos Piwigo';
+$lang['Subscribe/unsubscribe users'] = 'Subscribir/Dessubscribir usuarios';
+$lang['Subscribed'] = 'Subscrito';
+$lang['Storage album'] = 'Álbum de almacenamento';
+$lang['Subscribe'] = 'Subscribirse';
+$lang['Subscribe %s'] = 'Subscribir %s';
+$lang['Subscribe to notification by mail'] = 'Subscribirse ás notificacións por correo electrónico';
+$lang['Start Upload'] = 'Comezar o envío';
+$lang['Start pLoader and add your photos.'] = 'Comezar pLoader e engadir túas fotos.';
+$lang['Statistics'] = 'Estatísticas';
+$lang['Status'] = 'Estado';
+$lang['Status of user "%s" updated'] = 'Actualizado o estado do usuario "%s"';
+$lang['Some upgrades are available for extensions.'] = 'Hai actualizacións dispoñibles para algunhas extensións.';
+$lang['Source tag'] = 'Orixe das etiquetas';
+$lang['Sharpen'] = 'Enfoque';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é un organizador de fotos dixitais de código aberto que funciona en Linux. Este é o xestor de fotos predeterminado en Ubuntu e Fedora.';
+$lang['Show info'] = 'Amosar información';
+$lang['Show menubar'] = 'Amosar a barra de menú';
+$lang['Simulation'] = 'Simulación';
+$lang['Site manager'] = 'Xestión de sitios';
+$lang['Some themes and plugins may be not available yet.'] = 'Algúns temas e engadidos poden non estar dispoñibles aínda.';
+$lang['Environment'] = 'Ambiente';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'os visitantes precisan identificarse e ter os permisos apropiados para ver este álbum';
+$lang['width must be a number superior to'] = 'a largura ha de ser un número maior que';
+$lang['wrong filename'] = 'nome de ficheiro incorrecto';
+$lang['user_status_admin'] = 'Administrador';
+$lang['user_status_generic'] = 'Xenérico';
+$lang['user_status_guest'] = 'Invitado';
+$lang['user_status_normal'] = 'Usuario';
+$lang['user_status_webmaster'] = 'Administrador web';
+$lang['user "%s" added'] = 'engadido o usuario "%s"';
+$lang['update the database from files'] = 'actualizar a base de datos a partir dos ficheiros';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizar as fotos da base de datos cos ficheiros de metadatos';
+$lang['synchronize files structure with database'] = 'sincronizar a estrutura de ficheiros coa base de datos';
+$lang['target'] = 'destino';
+$lang['test'] = 'proba';
+$lang['test this remote site'] = 'probar este sitio remoto';
+$lang['the forum'] = 'o foro';
+$lang['the wiki'] = 'a wiki';
+$lang['top left corner'] = 'esquina superior esquerda';
+$lang['top right corner'] = 'esquina superior dereita';
+$lang['total time'] = 'tempo total';
+$lang['unit mode'] = 'modo simple';
+$lang['unknown'] = 'descoñecido';
+$lang['unset'] = 'sen determinar';
+$lang['sub-albums'] = 'subálbums';
+$lang['singly represented'] = 'miniatura do álbum fixa';
+$lang['status'] = 'estado';
+$lang['simple visitors'] = 'visitantes únicos';
+$lang['show details'] = 'amosar detalles';
+$lang['ranks'] = 'filas';
+$lang['reduce to single existing albums'] = 'tratar só un álbum';
+$lang['set to'] = 'mudalo';
+$lang['pixels'] = 'píxeis';
+$lang['private'] = 'privado';
+$lang['public'] = 'público';
+$lang['randomly represented'] = 'miniatura do álbum ó chou';
+$lang['registered users'] = 'usuarios rexistrados';
+$lang['registration date'] = 'data de rexistro';
+$lang['remove author'] = 'eliminar autor';
+$lang['remove creation date'] = 'eliminar data de creación';
+$lang['remove tags'] = 'eliminar etiquetas';
+$lang['remove this filter'] = 'eliminar este filtro';
+$lang['remove title'] = 'eliminar título';
+$lang['selection'] = 'selección';
+$lang['photos deleted from the database'] = 'fotos eliminadas da base de datos';
+$lang['photos informations synchronized with files metadata'] = 'información de fotos sincronizada cos ficheiros de metadatos';
+$lang['photos per page'] = 'fotos por páxina';
+$lang['photos updated in the database'] = 'fotos actualizadas na base de datos';
+$lang['photos candidates for metadata synchronization'] = 'fotos candidatas para a sincronización de metadatos';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa <em>Piwigo Uploader</em>. No teu computador, pLoader prepara túas fotos e transfíreas a túa galería de fotos Piwigo.';
+$lang['pending validation'] = 'pendente de validación';
+$lang['photos added in the database'] = 'fotos engadidas na base de datos';
+$lang['other'] = 'outro';
+$lang['only perform a simulation (no change in database will be made)'] = 'So realizar unha simulación (non fará ningún cambio na base de datos)';
+$lang['overrides existing values with empty ones'] = 'sobrescribe os valores existentes por outros baleiros';
+$lang['on'] = 'en';
+$lang['modified'] = 'modificado';
+$lang['new'] = 'novo';
+$lang['no write access'] = 'sen permiso de escritura';
+$lang['none'] = 'ningún';
+$lang['nothing'] = 'nada';
+$lang['number of miniaturized photos'] = 'número de miniaturas creadas';
+$lang['on the %d selected photos'] = 'nas %d fotos seleccionadas';
+$lang['only directories'] = 'só cartafoles';
+$lang['middle'] = 'medio';
+$lang['manage album photos'] = 'xestionar álbum de fotos';
+$lang['manage sub-albums'] = 'xestionar subálbums';
+$lang['manual order'] = 'orde manual';
+$lang['leave'] = 'deixar';
+$lang['jump to album'] = 'saltar ó álbum';
+$lang['jump to photo'] = 'saltar á foto';
+$lang['include child albums'] = 'incluír os subálbums';
+$lang['include photos with lower privacy level'] = 'incluír fotos cun nivel de privacidade máis baixo';
+$lang['group "%s" added'] = 'engadiuse o grupo %s';
+$lang['group "%s" deleted'] = 'eliminouse o grupo %s';
+$lang['group "%s" updated'] = 'actualizouse o grupo %s';
+$lang['guest'] = 'invitado';
+$lang['height must be a number superior to'] = 'a altura debe ser un número maior que';
+$lang['hide details'] = 'agochar detalles';
+$lang['high'] = 'alto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto é o xestor de fotos predeterminado de MacOSX. O engadido de exportación Piwigo crea novos ábums e exporta túas fotos directamente de iPhoto á túa galería de fotos Piwigo.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensións da imaxe reduciranse a %dx%d pixeis.';
+?>
Index: /tags/2.6.0RC1/language/gl_ES/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/common.lang.php	(revision 25596)
@@ -0,0 +1,414 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Galego [ES]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=681
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+$lang_info['language_name'] = 'Galego';
+$lang_info['country'] = 'Galiza';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'gl';
+$lang_info['zero_plural'] = false;
+
+$lang['%d comments'] = '%d comentarios';
+$lang['%d hit'] = '%d Acceso';
+$lang['%d hits'] = '%d Accesos';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d novo comentario';
+$lang['%d new comments'] = '%d novos comentarios';
+$lang['%d new photo'] = '%d nova foto';
+$lang['%d new photos'] = '%d novas fotos';
+$lang['%d new user'] = '%d novo usuario';
+$lang['%d new users'] = '%d novos usuarios';
+$lang['Date'] = 'Data';
+$lang['day'][0] = 'Domingo';
+$lang['day'][1] = 'Luns';
+$lang['day'][2] = 'Martes';
+$lang['day'][3] = 'Mércores';
+$lang['day'][4] = 'Xoves';
+$lang['day'][5] = 'Venres';
+$lang['day'][6] = 'Sábado';
+$lang['month'][10] = 'Outubro';
+$lang['month'][11] = 'Novembro';
+$lang['month'][12] = 'Decembro';
+$lang['month'][1] = 'Xaneiro';
+$lang['month'][2] = 'Febreiro';
+$lang['month'][3] = 'Marzo';
+$lang['month'][4] = 'Abril';
+$lang['month'][5] = 'Maio';
+$lang['month'][6] = 'Xuño';
+$lang['month'][7] = 'Xullo';
+$lang['month'][8] = 'Agosto';
+$lang['month'][9] = 'Setembro';
+$lang['%d album updated'] = '%d álbum actualizado';
+$lang['%d albums updated'] = '%d álbums actualizados';
+$lang['%d comment to validate'] = '%d comentario para validar';
+$lang['%d comment'] = '%d comentario';
+$lang['%d comments to validate'] = '%d comentarios para validar';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d fotos';
+$lang['%d rate'] = '%d valoración';
+$lang['%d rates'] = '%d valoracións';
+$lang['A comment on your site'] = 'Un comentario no teu sitio';
+$lang['About Piwigo'] = 'Sobre o Piwigo';
+$lang['About'] = 'Sobre';
+$lang['Accelerate diaporama speed'] = 'Incrementar a velocidade da presentación';
+$lang['Add a comment'] = 'Engadir un comentario';
+$lang['add this photo to your favorites'] = 'engadir esta foto ós teus favoritos';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Administration'] = 'Administración';
+$lang['Album results for'] = 'Resultados do álbum para';
+$lang['Album'] = 'Album';
+$lang['Album: %s'] = 'Álbum: %s';
+$lang['Albums'] = 'Álbums';
+$lang['All tags'] = 'Todas etiquetas';
+$lang['all'] = 'todo';
+$lang['All'] = 'Todo';
+$lang['Any tag'] = 'Algunha etiqueta';
+$lang['Are you sure?'] = 'Estás seguro?';
+$lang['ascending'] = 'ascendente';
+$lang['Author'] = 'Autor';
+$lang['author(s) : %s'] = 'autor(es): %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Auto login'] = 'Auto identificación';
+
+$lang['%d photo is also linked to current tags'] = '%d foi ligada as etiquetas actuais';
+$lang['%d photos are also linked to current tags'] = '%d foron ligadas as etiquetas actuais';
+$lang['(!) This comment requires validation'] = '(!) Este comentario require validación';
+$lang['... or browse your empty gallery'] = '... ou examina a  túa galería baleira';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ou desactiva esta mensaxe, atoparei o camiño eu mesmo';
+$lang['2small'] = 'XXS - tini';
+$lang['An administrator must authorize your comment before it is visible.'] = 'O comentario ha de ser autorizado por un administrador antes de ser visible.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistema anti-inundación: agarda un intre antes de enviar outro comentario';
+$lang['At least one listed rule must be satisfied.'] = 'Hase de satisfacer polo menos un criterio';
+$lang['Bad request'] = 'Resposta incorrecta';
+$lang['Best rated'] = 'Mellor valorado';
+$lang['Change my password'] = 'Mudar miña clave';
+$lang['Check your email for the confirmation link'] = 'Comprobar o correo electrónico a traveso de ligazón de confirmación ';
+$lang['Click here if your browser does not automatically forward you'] = 'Preme aquí se teu navegador non te reencamiña automaticamente';
+$lang['Click on the photo to see it in high definition'] = 'Preme na foto para vela en alta definición';
+$lang['Close this window'] = 'Pecha esta xanela';
+$lang['Comment'] = 'Comentario';
+$lang['Comment by %s'] = 'Comentario de %s';
+$lang['Comment: %s'] = 'Comentario: %s';
+$lang['Comments'] = 'Comentarios';
+$lang['Complete RSS feed (photos, comments)'] = 'Semente RSS completa (fotos e comentarios)';
+$lang['Confirm Password'] = 'Confirmar clave';
+$lang['Connected user: %s'] = 'Usuario conectado: %s';
+$lang['Connection settings'] = 'Opcións da conexión';
+$lang['Contact'] = 'Contactar';
+$lang['Visits, high &rarr; low'] = 'Visitas, altas &rarr; baixas';
+$lang['Visits, low &rarr; high'] = 'Visitas, baixas &rarr; altas';
+$lang['Webmaster'] = 'Administrador web';
+$lang['View in'] = 'Ver en';
+$lang['Visits'] = 'Visitas';
+$lang['View'] = 'Ver';
+$lang['User "%s" has no email address, password reset is not possible'] = 'O usuario "%s" non ten enderezo de correo electrónico, non é posible o restablecemento da clave.';
+$lang['User: %s'] = 'Usuario: %s';
+$lang['Username'] = 'Nome de usuario';
+$lang['Username "%s" on gallery %s'] = 'Nome de usuario "%s" na galería %s';
+$lang['Username is mandatory'] = 'O nome de usuario é obrigatorio';
+$lang['Username modification'] = 'Modificación do nome de usuario';
+$lang['Username or email'] = 'Nome de usuario ou correo electrónico';
+$lang['Username: %s'] = 'Nome de usuario: %s';
+$lang['To reset your password, visit the following address:'] = 'Para reiniciar a clave, visita o seguinte enderezo:';
+$lang['Unknown feed identifier'] = 'Identificador da semente descoñecido';
+$lang['Unknown identifier'] = 'Identificador descoñecido';
+$lang['Update your rating'] = 'Actualizar a valoración';
+$lang['User comments'] = 'Comentarios de usuario';
+$lang['Thumbnails'] = 'Miniaturas';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'A semente RSS fornece notificacións de nova actividade neste sitio web: novas fotos, álbums actualizados, novos comentarios. Para empregar cun lector de sementes RSS.';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'A galería está bloqueada por mantemento. Volve máis tarde.';
+$lang['The number of photos per page must be a not null scalar'] = 'O número de fotos por páxina ten que ser un enteiro distinto de cero';
+$lang['The passwords do not match'] = 'As claves non coinciden';
+$lang['This author modified following comment:'] = 'Este autor modificou o seguinte comentario:';
+$lang['This author removed the comment with id %d'] = 'Este autor borrou o comentario co id %d';
+$lang['This login is already used by another user'] = 'Este nome de usuario xa está ocupado por outro usuario';
+$lang['Specials'] = 'Especiais';
+$lang['Submit'] = 'Enviar';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'O rexistro foi satisfactorio, en breves recibirás un correo cos teus parámetros de conexión. Benvido!';
+$lang['Tag'] = 'Etiqueta';
+$lang['Tag results for'] = 'Resultados da etiqueta para';
+$lang['Tags'] = 'Etiquetas';
+$lang['Thank you for registering at %s!'] = 'Grazas por te rexistrares en %s!';
+$lang['Sort order'] = 'Ordenación';
+$lang['Show number of hits'] = 'Amosar o número de accesos';
+$lang['Show oldest comments first'] = 'Amosar primeiro os comentarios máis vellos';
+$lang['Since'] = 'Desde';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Alguén solicitou o restablecemento da clave para a seguinte conta de usuario:';
+$lang['Sort by'] = 'Ordenar por';
+$lang['Show latest comments first'] = 'Amosar primeiro os comentarios máis recentes';
+$lang['Search for all terms'] = 'Buscar todos os termos';
+$lang['Search for any term'] = 'Buscar calquera dos termos';
+$lang['Search for words'] = 'Buscar por palabras';
+$lang['Search in albums'] = 'Buscar nos álbums';
+$lang['Search in sub-albums'] = 'Buscar en sub-álbums';
+$lang['Search results'] = 'Resultados da busca';
+$lang['Search rules'] = 'Criterios da busca';
+$lang['Search tags'] = 'Etiquetas da busca';
+$lang['Send my connection settings by email'] = 'Enviarme os parámetros de conexión por correo electrónico';
+$lang['Sent by'] = 'Enviado por';
+$lang['Show file metadata'] = 'Amosarme os metadatos';
+$lang['Show number of comments'] = 'Amosar o número de comentarios';
+$lang['Reset to default values'] = 'Restablecer os valores predeterminados';
+$lang['Retrieve password'] = 'Recuperar a clave';
+$lang['Return to home page'] = 'Volver á páxina de inicio';
+$lang['SQL queries in'] = 'Consultas SQL en';
+$lang['Search'] = 'Buscar';
+$lang['Search by date'] = 'Buscar por data';
+$lang['Search for Author'] = 'Buscar por autor';
+$lang['Recent albums'] = 'Álbums recentes';
+$lang['Recent period'] = 'Período recente ';
+$lang['Recent period must be a positive integer value'] = 'O período de tempo debe ser un número enteiro positivo';
+$lang['Recent photos'] = 'Fotos recentes';
+$lang['Redirection...'] = 'Reencamiñar...';
+$lang['Reduce diaporama speed'] = 'Diminuír a velocidade da presentación ';
+$lang['Register'] = 'Rexistrar';
+$lang['Registration'] = 'Rexistro';
+$lang['Registration of %s'] = 'Rexistro de %s';
+$lang['Related tags'] = 'Etiquetas relacionadas';
+$lang['Repeat the slideshow'] = 'Repetir a presentación';
+$lang['Requested album does not exist'] = 'O álbum seleccionado non existe';
+$lang['Requested tag does not exist'] = 'A etiqueta seleccionada non existe';
+$lang['Reset'] = 'Restablecer';
+$lang['Rating score'] = 'Valoración';
+$lang['Rating score, high &rarr; low'] = 'Valoración, alta &rarr; baixa';
+$lang['Rating score, low &rarr; high'] = 'Valoración, baixa &rarr; alta';
+$lang['Random photos'] = 'Fotos ó chou';
+$lang['Rank'] = 'Valoración';
+$lang['Rate this photo'] = 'Valora esta foto';
+$lang['Post date'] = 'Data do envío';
+$lang['Previous'] = 'Anterior';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'Conexión rápida';
+$lang['Quick search'] = 'Busca rápida';
+$lang['RSS feed'] = 'Semente RSS';
+$lang['Please, enter a login'] = 'Insire o nome de usuario';
+$lang['Posted on'] = 'Enviado o';
+$lang['Powered by'] = 'Desenvolvido por';
+$lang['Preferences'] = 'Preferencias';
+$lang['Photos only RSS feed'] = 'Só fotos na Semente RSS';
+$lang['Photos posted within the last %d day.'] = 'Só fotos enviadas no último %d día.';
+$lang['Photos posted within the last %d days.'] = 'Só fotos enviadas nos últimos %d días.';
+$lang['Piwigo Help'] = 'Axuda de Piwigo';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo atopou un erro irrecuperable';
+$lang['Play of slideshow'] = 'Comezar a presentación';
+$lang['Please enter your username or email address.'] = 'Insire o teu nome de usuario ou enderezo de correo electrónico. ';
+$lang['Photo sizes'] = 'Tamaños da foto';
+$lang['Photo title, A &rarr; Z'] = 'Título da foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Título da foto, Z &rarr; A';
+$lang['Pause of slideshow'] = 'Pausa';
+$lang['Permalink for album not found'] = 'Non se atopa a ligazón permanente para o álbum';
+$lang['Number of items'] = 'Número de elementos';
+$lang['Number of photos per page'] = 'Número de fotos por páxina';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificador numérico, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificador numérico, 9 &rarr; 1';
+$lang['Original'] = 'Orixinal';
+$lang['Original dimensions'] = 'Dimensións orixinais';
+$lang['Page generated in'] = 'Páxina xerada en';
+$lang['Page not found'] = 'Non se atopou a páxina';
+$lang['Password'] = 'Clave';
+$lang['Password Reset'] = 'Restablecer a clave';
+$lang['Password forgotten'] = 'Clave esquecida';
+$lang['Password reset is not allowed for this user'] = 'Non lle está permitido restablecer a clave a este usuario';
+$lang['Password: %s'] = 'Clave: %s';
+$lang['New password'] = 'Nova clave';
+$lang['Next'] = 'Páxina seguinte';
+$lang['No'] = 'Non';
+$lang['Not repeat the slideshow'] = 'Non repetir a presentación';
+$lang['Notification'] = 'Notificación';
+$lang['N/A'] = 'Non dispoñible';
+$lang['New on %s'] = 'Novo en %s';
+$lang['Last'] = 'Última';
+$lang['Manage this user comment: %s'] = 'Administrar o comentario: %s';
+$lang['Manual sort order'] = 'Orde manual';
+$lang['Menu'] = 'Menú';
+$lang['Mobile'] = 'dispositivos móbiles';
+$lang['Most visited'] = 'Máis visitadas';
+$lang['Invalid key'] = 'Chave non válida';
+$lang['Invalid password!'] = 'Clave non válida!';
+$lang['Invalid username or email'] = 'O nome de usuario ou correo non é valido ';
+$lang['Keyword'] = 'Palabra clave';
+$lang['Kind of date'] = 'Tipo de dato';
+$lang['Language'] = 'Idioma';
+$lang['Links'] = 'Ligazóns';
+$lang['Login'] = 'Identificación';
+$lang['Logout'] = 'Saír ó anonimato';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Se isto foi un erro, esquece este correo e non pasará nada.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Se pensas que estás a recibir este correo por un erro, contacta connosco en %s ';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Ola %s, túa galería de fotos Piwigo está baleira!';
+$lang['Help'] = 'Axuda';
+$lang['Here are your connection settings'] = 'Aquí están as túas opcións da conexión';
+$lang['Home'] = 'Inicio';
+$lang['I want to add photos'] = 'Eu quero engadir fotos';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'Metadatos IPTC';
+$lang['Identification'] = 'Identificación';
+$lang['Hello'] = 'Ola';
+$lang['Hello %s,'] = 'Ola &s,';
+$lang['Filter and display'] = 'Amosar filtro';
+$lang['First'] = 'Primeira páxina';
+$lang['Forbidden'] = 'Prohibido';
+$lang['Forgot your password?'] = 'Esqueciches a clave?';
+$lang['Go through the gallery as a visitor'] = 'Percorrer a galería como visitante';
+$lang['File name'] = 'Nome do ficheiro';
+$lang['File name, A &rarr; Z'] = 'Nome do ficheiro, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nome do ficheiro, Z &rarr; A';
+$lang['Filesize'] = 'Tamaño do ficheiro';
+$lang['Filter'] = 'Filtro';
+$lang['Email address is missing. Please specify an email address.'] = 'Falta o enderezo de correo electrónico. Indique un.';
+$lang['Email: %s'] = 'Correo electrónico: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Consulta baleira. Non se inseriu criterio algún.';
+$lang['End-Date'] = 'Data final';
+$lang['Enter your new password below.'] = 'Insira súa nova clave embaixo.';
+$lang['Enter your personnal informations'] = 'Insira seus datos persoais';
+$lang['Error sending email'] = 'Produciuse un erro ó enviar o correo electrónico';
+$lang['Expand all albums'] = 'Expandir todos os álbums';
+$lang['Favorites'] = 'Favoritos';
+$lang['File'] = 'Ficheiro';
+$lang['Each listed rule must be satisfied.'] = 'Hanse de satisfacer todos os criterios da lista';
+$lang['Email address is mandatory'] = 'O enderezo de correo é obrigatorio';
+$lang['Dimensions'] = 'Dimensións';
+$lang['Display'] = 'Pantalla';
+$lang['Download'] = 'descargar';
+$lang['Download this file'] = 'Descargar este ficheiro';
+$lang['EXIF Metadata'] = 'Metadatos EXIF';
+$lang['Edit'] = 'Modificar';
+$lang['Edit a comment'] = 'Modificar un comentario';
+$lang['Email address'] = 'Enderezo de correo';
+$lang['Delete'] = 'Eliminar';
+$lang['Desktop'] = 'Escritorio';
+$lang['Date created, new &rarr; old'] = 'Data de creación, nova &rarr; antiga';
+$lang['Date created, old &rarr; new'] = 'Data de creación, antiga &rarr; nova';
+$lang['Date posted, new &rarr; old'] = 'Data de publicación, nova &rarr; antiga';
+$lang['Date posted, old &rarr; new'] = 'Data de publicación, antiga &rarr; nova';
+$lang['Default'] = 'Predeterminado';
+$lang['Current password is wrong'] = 'A clave actual é incorrecta';
+$lang['Customize'] = 'Personalizar';
+$lang['Created on'] = 'Creado en';
+$lang['Creation date'] = 'Data de creación';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cuquis bloqueadas ou non compatibles co teu navegador. Tes que activar as cuquis para identificarte. ';
+$lang['Create a new account'] = 'Crea unha nova conta';
+$lang['Contact webmaster'] = 'Contactar co administrador da web';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Calendar'] = 'Calendario';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Estado incorrecto do usuario "invitado". Estase a empregar o estado predeterminado. Informa ó adminitrador da web.';
+$lang['small'] = 'S - pequena';
+$lang['large'] = 'L - grande';
+$lang['show tag cloud'] = 'amosar nube de etiquetas';
+$lang['slideshow'] = 'presentación';
+$lang['square'] = 'Cadrado';
+$lang['stop the slideshow'] = 'deter presentación';
+$lang['the beginning'] = 'o comezo';
+$lang['the username must be given'] = 'requírese o nome de usuario';
+$lang['this email address is already in use'] = 'este enderezo de correo electrónico xa está en uso';
+$lang['this login is already used'] = 'este nome de usuario xa está en uso';
+$lang['thumb'] = 'Miniatura';
+$lang['today'] = 'hoxe';
+$lang['useful when password forgotten'] = 'útil no caso de esquecemento da clave';
+$lang['wrong date'] = 'data incorrecta';
+$lang['xlarge'] = 'XS - extra grande';
+$lang['xsmall'] = 'XL - extra pequena';
+$lang['xxlarge'] = 'XXL - enorme';
+$lang['set as album representative'] = 'establecer como miniatura do álbum';
+$lang['return to the display of all photos'] = 'volver a amosar todas as fotos';
+$lang['search'] = 'buscar';
+$lang['searched words : %s'] = 'palabras buscadas: %s';
+$lang['representative'] = 'miniaturas';
+$lang['return to normal view mode'] = 'vista por álbums';
+$lang['obligatory'] = 'obrigatorio';
+$lang['password updated'] = 'clave actualizada';
+$lang['photo'] = 'foto';
+$lang['photos posted during the last %d days'] = 'fotos enviadas durante os últimos %d días';
+$lang['posted after %s (%s)'] = 'enviada despois de %s (%s)';
+$lang['posted before %s (%s)'] = 'enviada antes de %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'enviada entre %s (%s) e %s (%s)';
+$lang['posted on %s'] = 'enviada o %s';
+$lang['remove this tag from the list'] = 'borra esta etiqueta da lista';
+$lang['no rate'] = 'non valorada';
+$lang['in %d sub-album'] = 'en %d sub-álbum';
+$lang['in %d sub-albums'] = 'en %d sub-álbums';
+$lang['in this album'] = 'neste sub-album';
+$lang['included'] = 'incluído';
+$lang['last %d days'] = 'últimos %d días';
+$lang['letters'] = 'letras';
+$lang['login mustn\'t end with a space character'] = 'o nome de usuario non pode rematar co carácter de espazo';
+$lang['login mustn\'t start with a space character'] = 'o nome de usuario non pode comezar co carácter de espazo';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'o enderezo de correo ten que ser algo como xxx@yyy.eee(exemplo: proxecto@trasno.net)';
+$lang['mandatory'] = 'obrigatorio';
+$lang['medium'] = 'M - mediana';
+$lang['from %s to %s'] = 'de %s a %s';
+$lang['group by letters'] = 'agrupar por letras';
+$lang['guest'] = 'visitante';
+$lang['html tags are not allowed in login'] = 'non se permiten etiquetas HTML na identificación';
+$lang['excluded'] = 'excluídos';
+$lang['display most recent photos'] = 'amosar as fotos máis recentes';
+$lang['display most visited photos'] = 'amosar as fotos máis visitadas';
+$lang['display only recently posted photos'] = 'amosar só as fotos enviadas recentemente';
+$lang['display photos linked to this tag'] = 'amosar as fotos ligadas a esta etiqueta';
+$lang['display recently updated albums'] = 'amosar os álbums actualizados recentemente';
+$lang['display this album'] = 'amosar este álbum';
+$lang['display your favorites photos'] = 'amosar as túas fotos favoritas';
+$lang['edit'] = 'modificar';
+$lang['display last user comments'] = 'amosar os últimos comentarios do usuario';
+$lang['display each day with photos, month per month'] = 'amosar cada día con fotos, mes a mes';
+$lang['display a calendar by posted date'] = 'amosar un calendario por data de envío';
+$lang['display a set of random photos'] = 'amosar un conxunto de fotos ó chou';
+$lang['display all photos in all sub-albums'] = 'amosar todas as fotos en todos sub-álbums';
+$lang['display available tags'] = 'amosar as etiquetas dispoñibles';
+$lang['display best rated photos'] = 'amosar as fotos mellor valoradas';
+$lang['delete all photos from your favorites'] = 'eliminar todas as fotos de favoritas';
+$lang['delete this photo from your favorites'] = 'eliminar esta foto de favoritas';
+$lang['descending'] = 'descendente';
+$lang['display a calendar by creation date'] = 'amosar un calendario por data de creación';
+$lang['customize the appareance of the gallery'] = 'Personalizar a aparencia da galería';
+$lang['created after %s (%s)'] = 'creado despois do %s (%s)';
+$lang['created before %s (%s)'] = 'creado antes do %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creado entre o %s (%s) e o %s (%s)';
+$lang['created on %s'] = 'creado o';
+$lang['chronology_weekly_list'] = 'Lista semanal';
+$lang['cloud'] = 'nube';
+$lang['comment date'] = 'data do comentario';
+$lang['chronology_monthly_list'] = 'Lista mensual';
+$lang['You are not authorized to access the requested page'] = 'Non estás autorizado a acceder á páxina solicitada';
+$lang['You will receive a link to create a new password via email.'] = 'Recibirás unha ligazón para crear unha nova clave vía correo electrónico.';
+$lang['Your Gallery Customization'] = 'Personalización da túa galería';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Teu comentario NON foi rexistrado porque non pasaron as regras de validación.';
+$lang['Your comment has been registered'] = 'Teu comentario foi rexistrado';
+$lang['Your favorites'] = 'Teus favoritos';
+$lang['Your password has been reset'] = 'Túa clave foi reiniciada';
+$lang['Your username has been successfully changed to : %s'] = 'Teu nome de usuario foi trocado correctamente por: %s';
+$lang['Your website URL is invalid'] = 'O URL do sitio web non é válido';
+$lang['available for administrators only'] = 'dispoñible só para administradores';
+$lang['chronology_monthly_calendar'] = 'Calendario mensual';
+$lang['Website'] = 'Sitio web';
+$lang['Week %d'] = 'Semana %d';
+$lang['Welcome'] = 'Benvido';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Benvido a túa galería de fotos Piwigo!';
+$lang['Yes'] = 'Si';
+$lang['Password is missing. Please enter the password.'] = 'Falta a clave. Insire unha clave.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta a confirmación da clave. Confirma a clave escollida.';
+?>
Index: /tags/2.6.0RC1/language/gl_ES/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,124 @@
+<h2>Modificar álbum</h2>
+
+<h3>Información</h3>
+
+<ul>
+
+  <li><strong>nome</strong>: renomear o álbum (un renomeado virtutal no caso de álbum físico).</li>
+
+  <li><strong>descrición</strong>: texto curto que da unha idea xeral do contido,
+este texto amosarase na parte de abaixo da páxina das miniaturas.</li>
+
+</ul>
+
+<h3>Mover</h3>
+
+<p>Se o ábum é virtual, podes movelo. Mover un álbum significa mudar o álbum pai.</p>
+
+<h3>Opcións</h3>
+
+<ul>
+
+  <li><strong>Tipo de acceso</strong>: xestión de permisos. Se fas un álbum privado
+tódolos álbums fillos convertense en privados. Se fas un álbum público, 
+tódolos álbums fillos convertense en públicos.</li>
+
+  <li><strong>Bloquear</strong>: o álbum e seus subálbums desactivaranse de xeito 
+temporal para o mantemento.</li>
+
+  <li><strong>Comentarios</strong>: autoriza ós usuarios a comentar fotos de este álbum.</li>
+
+</ul>
+
+<p>Tamén podes xestionar esta opción nas "Propiedades"
+ (pantallas <span
+class="pwgScreen">Comentarios</span>, <span class="pwgScreen">Bloquear</span>,
+<span class="pwgScreen">Público/Privado</span>, <span
+class="pwgScreen">Representante</span> available from <span
+class="pwgScreen">Administración &raquo; Álbums &raquo; Propiedades</span>).</p>
+
+<h3>Orde de selección</h3>
+
+<p>Empregar a orde de selección das imaxes de xeito predeterminado.</p>
+
+<p>Indicar se tamén se aplicará a orde de selección ós subálbums.</p>
+
+<p>Seleccionar un criterio de ordenación a empregar neste álbum.</p>
+<ul>
+<li><strong>Data de creacón</strong>: data na que se fixo a foto</li>
+<li><strong>Data de envío</strong>: data da sincronización</li>
+<li><strong>Valoración média (*)</strong>: media da valoración podendo ser mudada pola valoración dos visitantes</li>
+<li><strong>Máis vista (*)</strong>: as actuais visitas poden mudar a orde da máis visitada</li>
+<li><strong>Nome do ficheiro</strong>: Identificador interno (álbums mais recentes poden ter un identificador máis alto que os anteriores.</li>
+
+</ul>
+<p><strong>(*)</strong>Aviso: asegúrate de probar estas ordes de selección por ti mesmo xa que poden dar resultados inesperados.</p>
+
+
+<h3>Representante</h3>
+
+<p>O representante dun álbum é a miniatura amosada na páxina principal (<span class="pwgScreen">category.php</span>) para representar o álbum cando este contén só subálbums e non ten ningunha foto de xeito directo (igual que o álbum raíz).</p>
+
+<p>Hai 4 xeitos de escoller o representante dun álbum:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Páxina da foto</span>: unha das accións dos botóns é a de poder establecer a actual foto como a representante do álbum amosado. Este botón só esta dispoñible para os administradores.</li>
+
+  <li><span class="pwgScreen">Modificar a información da imaxe</span> na administración. 
+Pode accederse a esta pantalla desde <span
+  class="pwgScreen">picture.php</span> ou <span class="pwgScreen">xestión por lotes</span> no <em>modo unitario</em>. Para máis detalles ver a axuda desta pantalla.</li>
+
+  <li><span class="pwgScreen">Administración &raquo; Álbums &raquo; Propiedades,
+  Representante</span>. Para máis detalles ver a axuda desta pantalla.</li>
+
+  <li><span class="pwgScreen">Modificar álbum</span> (a presente pantalla).</li>
+
+</ul>
+
+<p>A elección do representante depende do parámetro de configuración 
+<code>allow_random_representative</code> (ver <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>De xeito predeterminado (<code>allow_random_representative</code> está como falso),
+cada categoría que contén polo menos un elemento é representada por un elemento fixo.
+Unha vez fixado (na creación do álbum), o representante só muda cando un administrador o pide.
+Se o representante non é axeitado pode solicitarse <strong>atopar un novo representante ó chou</strong>.</p>
+
+<p>Se o parámetro de configuración <code>allow_random_representative</code> está establecido 
+como true, as fotos do álbum poden non ter un representante fixo. 
+Simplemente usa o botón <strong>Eliminar o representante</strong>.</p>
+
+<p>Se o álbum contén só subálbums e ningunha foto, pode ser representado a pesar de todo 
+por calquera elemento grazas á pantalla  <span class="pwgScreen">Modificar información sobre a foto</span>. 
+A única opción na actual pantalla é o botón <strong>Eliminar o representante</strong>.</p>
+
+<h3>Ligar tódolos elementos do álbum a un novo álbum</h3>
+
+<ul>
+
+<li><strong>Nome do álbum virtual</strong>: nome do novo álbum a crear, 
+tódalas fotos do actual álbum serán ligadas ó novo álbum.</li>
+
+<li><strong>Álbum pai</strong>: onde ten que estar o novo álbum, 
+deixar baleiro para crear na raíz.</li>
+
+</ul>
+
+<h3>Ligar tódolos elementos do álbum a álbums existentes</h3>
+
+<ul>
+
+<li><strong>Álbums</strong>: escolle o álbum de destino.</li>
+
+</ul>
+
+<h3>Enviar un correo informativo ós membros do grupo</h3>
+
+<ul>
+
+<li><strong>Grupo</strong>: grupo de destinatarios</li>
+
+<li><strong>Contido do correo</strong>: texto libre para enviarlles.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/gl_ES/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Movendo álbums virtuais</h2>
+
+<p>Só os álbums virtuais poden ter un novo álbum pai.</p>
+
+<h3>Álbums virtuais a mover</h3>
+
+<p>Selecciona un ou varios álbums virtuais que queiras mover. 
+Se a lista está baleira, significa que aínda non creaches ningún.</p>
+
+<h3>Novo álbum pai</h3>
+
+<p>Selecciona o novo álbum pai (virtual ou físico). 
+Se non seleccionas ningún álbum pai, o álbum virtual seleccionado moverase á raíz.
+Un álbum non pode ser movido dentro de si mesmo ou a outro que sexa seu fillo.</p>
Index: /tags/2.6.0RC1/language/gl_ES/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/cat_options.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Opcións de álbum</h2>
+
+<p>Opcións de xestión para varios álbums á vez.</p>
+
+<dl>
+
+<dt>Comentarios</dt>
+<dd>Unha foto pode recibir comentarios dos seus visitantes se 
+pertence a un álbum cos comentarios activados.</dd>
+
+<dt>Bloquear</dt>
+<dd>Os álbums bloqueados son desactivados para mantemento. 
+Só os administradores poden velos.</dd>
+
+<dt>Público/Privado</dt>
+<dd>Unha vez que se converte un álbum en privado, 
+hai que darlle dereitos de acceso a usuarios e grupos</dd>
+
+<dt>Representante</dt>
+<dd>Esta opción está dispoñible cando se establece a opción de configuración
+<code>allow_random_representative</code> (ver <span
+ class="filename">include/config_defaults.inc.php</span>) para
+<em>true</em>. Cada álbum pode ser representado por unha foto aleatoria ou 
+por unha foto escollida como único representante.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/gl_ES/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Modificar permisos do álbum</h2>
+
+<p>Esta pantalla só está dispoñible para os álbums privados. 
+Aquí pode seleccionar usuarios e grupos autorizados para un álbum.</p>
+
+<h3>Grupos</h3>
+
+<p>Podes denegar ou conceder o acceso a grupos para o actual álbum. 
+Ó modificar autorizacións a grupos, os usuarios incluídos neses 
+grupos terán denegado ou concedido o acceso para o álbum.</p>
+
+<h3>Usuarios</h3>
+
+<p>Podes denegar ou conceder o acceso a usuarios individuais. 
+Os usuarios que teñen acceso a traveso do grupo pode denegárselle o acceso por excepción.</p>
Index: /tags/2.6.0RC1/language/gl_ES/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/configuration.html	(revision 25596)
@@ -0,0 +1,96 @@
+<h2>Configuración</h2>
+
+<p>Esta pantalla permite ó administrador realizar unha configuración básica da galería. De feito, só se amosan as opcións básicas da configuración as cales deben ser suficientes para a gran maioría dos administradores. Se queres ver os outros numerosos (e avanzados) parámetros de configuración,   lee o ficheiro  de configuración predeterminado <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Este pantalla está dividida en diferentes seccións, agrupando os parámetros de configuración por tema.</p>
+
+
+<h3>Principal</h3>
+<ul>
+  <li><strong>Título da galería</strong>: usado no alimentador RSS e por notificacións de correo electrónico.</li>
+
+  <li><strong>Cartel da páxina</strong>: amosado na parte de arriba de cada unha das páxinas públicas.</li>
+
+  <li><strong>URL da galería</strong>: usado para as semente RSS.</li>
+
+  <li><strong>Bloqueo da galería</strong>: bloquea a galería por completo para o mantemento. Só poderán acceder á galería para o mantemento os usuarios administradores.</li>
+
+  <li><strong>Valoración</strong>: activase a funcionalidade de valoración.</li>
+
+  <li><strong>Valoración por invitados</strong>: os usuarios aínda non rexistrados poden valorar as imaxes.</li>
+
+  <li><strong>Permitir o rexistro ós usuarios</strong>: calquera pode rexistrarse.</li>
+
+  <li><strong>Enderezo de correo obrigatorio para tódolos usuarios</strong>: o enderezo de correo electrónico será comprobado no rexistro ou actualización do perfil, exceptuase cando a acción é realizada por un administrador.</li>
+
+  <li><strong>Notificar mediante correo ós administradores cando se rexistra un novo usuario</strong>: notificarase ós administradores cada vez que produza un rexistro.</li>
+  
+  <li><strong>Orde predeterminado das fotos</strong>: podes establecer unha orde predeterminada cos menús despregables.</li>
+
+</ul>
+
+<h3>Histórico</h3>
+
+  <p>Visitas nas páxinas <span
+  class="pwgScreen">category.php</span> e <span
+  class="pwgScreen">picture.php</span> hase gardar na táboa <code>history</code>.</p>
+  
+  <p>Amosaranse as visitas en <span  class="pwgScreen">Administration &raquo; Tools &raquo; History</span>.</p>
+
+<ul>
+  <li><strong>Gardar as páxinas visitadas polos invitados</strong>: lembraranse as páxinas visitadas polos usuarios sen identificar.</li>
+
+  <li><strong>Gardar as páxinas visitadas polos usuarios</strong>: lembraranse as páxinas visitadas polos usuarios rexistrados.</li>
+
+  <li><strong>Gardar páxinas visitadas polos administradores</strong>: lembraranse as páxinas visitadas polos administradores.</li>
+
+</ul>
+
+<h3>Comentarios</h3>
+<ul>
+
+  <li><strong>Comentarios para todos</strong>: mesmo os invitados poden enviar comentarios.</li>
+
+  <li><strong>Número de comentarios por páxina</strong>.</li>
+
+  <li><strong>Validación</strong>: un administrador debe validar os comentarios dos usuarios antes de que poidan ser visibles no sitio. A validación dos comentarios dos usuarios faise na pantalla <span class="pwgScreen">Administración &raquo; Ferramentas &raquo; Comentarios pendentes</span>.</li>
+
+  <li><strong>Correo electrónico ós administradores cando se insire un comentario válido</strong>: envía un correo electrónico ós administradores cando un usuario insire un comentario e este comentario é validado.</li>
+
+  <li><strong>Correo electrónico ós administradores cando un comentario require de validación</strong>: envía un correo electrónico ós administradores cando un usuario insire un comentario que require a validación dun administrador.
+A validación dos comentarios dos usuarios faise na pantalla <span class="pwgScreen">Administración &raquo; Ferramentas &raquo; Comentarios pendentes</span>.</li>
+
+</ul>
+
+<h3>Vista predeterminada</h3>
+
+<p>Aquí podes mudar as opcións da vista usada polos invitados, usuario predeterminado que non se conectou. Unha vez que se conecte, estas opcións serán substituídas polas propias opcións do usuario (modificable no <span class="pwgScreen">perfil</span>).</p>
+
+<p>É posible mudar as opcións da vista para todos os usuarios existentes na pantalla <span class="pwgScreen">Administración &raquo;
+Usuarios &raquo; Xestión </span> onde podes seleccionar unha lista de usuarios.</p>
+
+<ul>
+
+  <li><strong>Idioma</strong>: só se aplica as etiquetas de Piwigo. Non se localizan os nomes dos álbums nin os campos das descricións.</li>
+
+  <li><strong>Número de fotos por liña</strong></li>
+
+  <li><strong>Número de fotos por páxina</strong></li>
+
+  <li><strong>Tema da interface</strong></li>
+
+  <li><strong>Período recente</strong>: En dias. Período durante o cal unha foto é amosada como nova. Debe ser superior a un día.</li>
+
+  <li><strong>Expande tódolos álbums</strong>: de xeito predeterminado expande tódolos álbums no menú <em>Aviso</em>: esta opción pode consumir os recursos de xeito intensivo e xerar un enorme menú se a árbore ten moitos álbums.</li>
+
+  <li><strong>Amosar o número de comentarios</strong>: amosa o número de comentarios de cada foto na páxina de miniaturas. Isto produce un uso intensivo de recursos.</li>
+
+  <li><strong>Amosar a conta de accesos</strong>: amosa o número de veces que se ollou unha foto como miniatura na páxina de miniaturas. Só cando o parámetro de configuración avanzada é: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Nota: por defecto é false.</li>
+
+  <li><strong>Largura máxima das fotos</strong>: máxima largura a amosar. As fotos con máis largura que o establecido serán redimensionadas na pantalla.  Mellor que escoller esta opción, podes considerar a modificación da largura das fotos, o que sería unha mellor práctica.</li>
+
+  <li><strong>Altura máxima das fotos</strong>: o mesmo que para a configuración da largura máxima.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/gl_ES/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Configuración para estender os temas</h2>
+
+<h3>Sobre</h3>
+<p>A galería Piwigo pódese personalizar substituíndo os ficheiros do tema con versións personalizadas. Por exemplo, a cabeceira predeterminada do tema (header.tpl) pódese substituír por un tema de cabeceira personalizado (my-header.tpl).  Despois de enviar os cambios á base de datos a galería amosará a cabedeira personalizada no canto da orixinal.<br>
+As extensións dos temas son un xeito poderoso de crear temas personalizados tanto para usuarios noveis como os avanzados. Empregado xunto co editor de ficheiros locais podes crear teus propios temas fillo.</p>
+
+<h3>Tema orixinal</h3>
+<p>O tema contén un número de ficheiros de tema que compoñen as páxinas da galería. Estes son os temas orixinais.</p>
+
+<h3>Palabra chave URL opcional</h3>
+<p>Estas son palabras atopadas no URL da galería despois do módulo nome. Esta poden ser ligazóns permanentes activos (Ver a documentación das ligazóns permanentes para máis información).  <a href="#warnings">Aviso:</a> se o mesmo tema orixinal e mesma palabra chave é empregada en máis dun tema personalizado, só estará activo o último.</p>
+
+<h3>Bound Theme</h3>
+<p>The bound theme is the theme from which the template files are being replaced.</p>
+
+<h3>Where are the original templates?</h3>
+<p>Original templates are the template files shipped with each theme.  These are saved in <em>/themes/default/template</em> (or <em>themes/<theme name>/template</em>).  These template files should not be edited in place as changes will be lost with theme upgrades.<br>
+Supported original templates include:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Saving customised templates</h3>
+<p>Customised templates should be saved in the template-extension folder or subfolders.  For example, <em>/template-extension/my-default/header.tpl</em> (or <em>/template-extension/<my-theme-name>/header.tpl</em>)  Template files can have any name with a .tpl extension.  The template files in subfolders appear in the Template configuration screen as available custom templates.</p>
+<h3>Activating customised templates</h3>
+<p>Select the original template to replace.  Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword.  Select a bound theme and the changes will be effective on that theme.  Submit the changes to the database.</p>
+<h3>Deactivating customised templates</h3>
+<p>Unselect the original template and submit the changes to the database.<br>
+Delete the customised template files from the template-extension folder.</p>
+
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+  <li><strong>The original template</strong> must be the original template otherwise you may have unpredictable results.</li>
+  <li>If the same original template and same URL keyword is used on more than one customised template only the last one is active.</li>
+  <li>Distributed sample template files are for test purposes only.  Do not edit them.  Create your own ones or copy existing theme template files into <em>/template-extension/<my-theme>/</em></li>
+  <li>When the customised template is deleted the original template file is immediately reactivated.</li>
+</ul>
Index: /tags/2.6.0RC1/language/gl_ES/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'os nomes das táboas da base de datos irán prefixadas con el (permite unha mellor xestión das táboas)';
+$lang['enter a login for webmaster'] = 'insire o nome de usuario do administrador web';
+$lang['please enter your password again'] = 'insire a túa clave outra vez';
+$lang['user login given by your host provider'] = 'nome de usuario fornecido polo teu provedor do aloxamento';
+$lang['user password given by your host provider'] = 'clave de usuario fornecida polo teu provedor do aloxamento';
+$lang['verification'] = 'verificación';
+$lang['webmaster login can\'t contain characters \' or "'] = 'o nome de usuario do administrador web non pode conter caranteres \' nin "';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Tes que poñerte en contacto co teu fornecedor do aloxamento coa fin de saber como mudar a PHP 5.';
+$lang['also given by your host provider'] = 'tamén fornecido polo teu provedor do aloxamento';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pode tratar de mudar a túa configuración PHP 5 a traveso da creación ou modificación dun ficheiro .htaccess.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo non foi quen de configurar o PHP 5.';
+$lang['Sorry!'] = 'Sentímolo!';
+$lang['Start Install'] = 'Comezar a instalación';
+$lang['Try to configure PHP 5'] = 'Tratar de configurar PHP 5';
+$lang['User'] = 'Usuario';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Os visitantes poderán empregar este correo electrónico para contactar co administrador do sitio';
+$lang['Welcome to my photo gallery'] = 'Benvido a miña galería de fotos';
+$lang['Welcome to your new installation of Piwigo!'] = 'Benvido a túa nova instalación de piwigo!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Podes descargar o ficheiro de configuración e subilo a local/config na túa instalación.';
+$lang['PHP 5 is required'] = 'É preciso PHP 5';
+$lang['Password ']['confirm'] = 'Clave [confirmar]';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Fíxate que podes mudar ti mesmo a túa configuración e reiniciar o Piwigo despois.';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Precisas axuda? Pregunta as túas dúbidas no <a href="%s">panel de mensaxes Piwigo</a>. ';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Mantéñaa ben gardada, é ela a que lle permite acceder ó panel da administración';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Será amosado ós visitantes. É preciso para a administración do sito web';
+$lang['Just another Piwigo gallery'] = 'Só outra galería Piwigo';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que o teu servidor web ten a versión PHP %s.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Non dubides en escribir nos nosos foros para calquera dúbida: %s';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Unha solución alternativa será copiar o texto da caixa de abaixo e pegalo no ficheiro "local/config/database.inc.php" (Atención: database.inc.php só deberá conter o texto que está na caixa, non insiras ningunha liña nova ou espazo en branco)';
+$lang['Basic configuration'] = 'Configuración básica';
+$lang['Can\'t connect to server'] = 'Non foi posible conectar co servidor';
+$lang['Congratulations, Piwigo installation is completed'] = 'Grazas, a instalación de Piwigo completouse';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'A conexión co servidor foi satisfactoria mentres que a conexión coa base de datos non foi posible.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'A creación do ficheiro de configuración local/config/database.inc.php fallou.';
+$lang['Database configuration'] = 'Configuración da base de datos';
+$lang['Database name'] = 'Nome da base de datos';
+$lang['Database table prefix'] = 'Prefixo das táboas na base de datos';
+$lang['Default gallery language'] = 'Idioma predeterminado da galería';
+$lang['Download the config file'] = 'Descargar o ficheiro de configuración';
+$lang['Hope to see you back soon.'] = 'Esperamos verte de volta en breve.';
+$lang['Host'] = 'Servidor';
+$lang['Installation'] = 'Instalación';
+$lang['Admin configuration'] = 'Configuración da adminstración';
+?>
Index: /tags/2.6.0RC1/language/gl_ES/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Galego [ES]
Index: /tags/2.6.0RC1/language/gl_ES/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/gl_ES/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/gl_ES/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['You do not have access rights to run upgrade'] = 'Non tes dereitos de acceso para actualizar';
+$lang['Upgrade informations'] = 'Actualizar información';
+$lang['User permissions and group permissions have been erased'] = 'Borráronse os permisos dos usuarios e grupos';
+$lang['total SQL time'] = 'tempo total de SQL';
+$lang['total upgrade time'] = 'tempo total da actualización';
+$lang['Upgrade'] = 'Actualizar';
+$lang['Upgrade from version %s to %s'] = 'Actualizar da versión %s para a versión %s';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Esta páxina proponche pór ó día a base de datos da túa antiga versión de Piwigo cara a nova versión. O asistente de actualización detectou a túa <strong>versión como a %s</strong> (ou equivalente).';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Executa unha comprobación de mantemento en [Administración>Ferramentas>Mantemento] se atopas algún problema.';
+$lang['SQL queries'] = 'Consultas SQL';
+$lang['Statistics'] = 'Estatísticas';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Da anterior configuración só se salvaron os prefixos das miniaturas e o correo do administrador web';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Só o administrador pode efectuar actualizacións: inicia sesión no formulario de abaixo.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'En <i>%s</i>, antes de <b>?></b>, insira:';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaución, os seguintes engadidos foron desactivados. Tes que comprobar se teñen actualización antes de reactivalos:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Por precaución, os seguintes temas foron desactivados. Tes que comprobar se teñen actualización antes de reactivalos:';
+$lang['All sub-albums of private albums become private'] = 'Tódolos sub-álbums de álbums privados tórnanse privados';
+?>
Index: /tags/2.6.0RC1/language/he_IL/about.html
===================================================================
--- /tags/2.6.0RC1/language/he_IL/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/about.html	(revision 25596)
@@ -0,0 +1,13 @@
+<p>גלריית תמונות זו מבוססת על Piwigo.</p>
+
+<p>Piwigo זה מערכת גלריית תמונות מוכנה לאתרים, נבנתה על ידי קהילת מפתחים ומשתמשים פעילה. ניתן להתאים אישית את piwigo בקלות, והדובדבן שבקצפת piwigo בחינם בקוד פתוח.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">בקר באתר של Piwigo</a></p>
+
+<p>תורגם לעברית על ידי (לפי סדר הא"ב): 
+
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=10115">ADIRBITON</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=14250">nitzanmor</a></li>
+	</ul>
+           ....תודו להם</p>
Index: /tags/2.6.0RC1/language/he_IL/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/he_IL/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/admin.lang.php	(revision 25596)
@@ -0,0 +1,928 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = 'סך הכול %d';
+$lang['%d associations'] = 'סך הכול %d';
+$lang['%d album including'] = 'כולל הקטגוריה %d';
+$lang['%d albums including'] = 'כולל הקטגוריות %d';
+$lang['%d physical'] = 'פיזי %d';
+$lang[' and %d virtual'] = 'ו %d וירטואלי';
+$lang['%d album moved'] = '%d קטגוריה עברה';
+$lang['%d albums moved'] = '%d קטגוריות עברו';
+$lang['%d group'] = '%d קבוצה';
+$lang['%d groups'] = '%d קבוצות';
+$lang['%d member'] = '%d חבר';
+$lang['%d members'] = '%d חברים';
+$lang['%d tag'] = '%d תג';
+$lang['%d tags'] = '%d תגיות';
+$lang['%d user comment rejected'] = '%d תגובת המשתמש נדחתה';
+$lang['%d user comments rejected'] = '%d תגובות המשתמש נדחו';
+$lang['%d user comment validated'] = '%d תגובת המשתמש אושרה';
+$lang['%d user comments validated'] = '%d תגובות המשתמש אושרו';
+$lang['%d user deleted'] = '%d המשתמש נמחק';
+$lang['%d users deleted'] = '%d המשתמשים נמחקו';
+$lang['%d user'] = '%d משתמש';
+$lang['%d users'] = '%d משתמשים';
+$lang['%d waiting for validation'] = '%d מחכה לאימות';
+$lang['Actions'] = 'פעולות';
+$lang['Activate'] = 'להפעיל';
+$lang['Add/delete a permalink'] = 'הוספה / מחיקה של קישורית';
+$lang['Add a tag'] = 'הוסף תגית';
+$lang['Add a user'] = 'הוסף משתמש';
+$lang['Add group'] = 'הוסף קבוצה';
+$lang['Add'] = 'הוסף';
+$lang['Allow user registration'] = 'אפשר רישום משתמשים';
+$lang['Apply to sub-albums'] = 'החל על קטגוריות משניות';
+$lang['Associated'] = 'שייך';
+$lang['Caddie management'] = 'ניהול סל';
+$lang['Caddie'] = 'סל';
+$lang['Albums authorized thanks to group associations'] = 'הקטגוריה מאושרת אודות לקבוצת האסוציאציות';
+$lang['Album manual order was saved'] = 'סדר הקטגוריות נשמר';
+$lang['Check for upgrade failed for unknown reasons.'] = 'בדוק אם השדרוג נכשל מסיבות לא ידועות.';
+$lang['Check for upgrade'] = 'חפש עדכונים שדרוגים';
+$lang['Comments for all'] = 'תגובות עבור כל';
+$lang['Current name'] = 'השם הנוכחי';
+$lang['Database'] = 'מסד נתונים';
+$lang['Deactivate'] = 'לא פעיל';
+$lang['Delete Representant'] = 'מחק הצגה';
+$lang['Delete selected tags'] = 'מחק את התגים שנבחרו';
+$lang['Delete selected users'] = 'מחק את המשתמשים שנבחרו';
+$lang['Deletions'] = 'מחיקות';
+$lang['Deny selected groups'] = 'אסור קבוצות שנבחרו';
+$lang['Deny selected users'] = 'אסור משתמשים שנבחרו';
+$lang['Description'] = 'תיאור';
+$lang['Display options'] = 'הצגת אפשרויות';
+$lang['Dissociated'] = 'מנותק';
+$lang['Does not represent'] = 'האם לא מייצג';
+$lang['Edit selected tags'] = 'ערוך את התגים הנבחרים';
+$lang['Edit tags'] = 'ערוך תגיות';
+$lang['Email admins when a new user registers'] = 'שלח מייל למנהל כאשר נרשם משתמש חדש';
+$lang['Email admins when a valid comment is entered'] = 'שלח מייל למנהל כאשר נרשמת תגובה';
+$lang['Email admins when a comment requires validation'] = 'שלח מייל למנהל כאשר נדרש אימות לתגובה';
+$lang['Environment'] = 'סביבה';
+$lang['Form'] = 'טופס';
+$lang['Gallery title'] = 'כותרת הגלריה';
+$lang['Grant selected groups'] = 'להעניק לקבוצות שנבחרו';
+$lang['Grant selected users'] = 'להענית למשתמשים שנבחרו';
+$lang['Group name'] = 'שם הקבוצה';
+$lang['Groups'] = 'קבוצות';
+$lang['Guests'] = 'האורחים';
+$lang['History'] = 'היסטוריה';
+$lang['Informations'] = 'מידע';
+$lang['Install'] = 'התקן';
+$lang['Link all album photos to a new album'] = 'קישור כל הפריטים בקטגוריה לקטגוריה חדשה';
+$lang['Link all album photos to some existing albums'] = 'קישור כל הפריטים בקטגוריה לקטגוריה קיימת';
+$lang['Linked albums'] = 'קטגוריות מקושרות';
+$lang['Lock gallery'] = 'גלריה נעולה';
+$lang['Maintenance'] = 'תחזוקה';
+$lang['Edit album permissions'] = 'ניהול הרשאות עבור קטגוריה';
+$lang['Manage permissions for group "%s"'] = 'ניהול הרשאות עבור קבוצה "%s"';
+$lang['Manage permissions for user "%s"'] = 'ניהול הרשאות עבור המשתמש "%s"';
+$lang['Manage tags'] = 'ניהול תגים';
+$lang['Members'] = 'חברים';
+$lang['Metadata synchronized from file'] = 'סנכרון מידע מקובץ';
+$lang['Move albums'] = 'העבר הקטגוריות';
+$lang['Move'] = 'העבר';
+$lang['Name'] = 'שם';
+$lang['New name'] = 'שם חדש';
+$lang['New parent album'] = 'קטגורית אם חדשה';
+$lang['New tag'] = 'תג חדש';
+$lang['Number of comments per page'] = 'מספר תגובות בעמוד';
+$lang['Number of rates'] = 'מספר שיעורי';
+$lang['Number of thumbnails to create'] = ' מספר של תמונות ממוזערות ליצור';
+$lang['Only private albums are listed'] = 'קטגוריה פרטים לרשומים בלבד';
+$lang['Operating system'] = 'מערכת הפעלה';
+$lang['Options'] = 'אפשרויות';
+$lang['Other private albums'] = 'קטגוריות פרטיות אחרות';
+$lang['Page banner'] = 'באנר הדף';
+$lang['Parent album'] = 'קטגורית אם';
+$lang['Path'] = 'נתיב';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'השתמשו בעבר ב Permalink "%s" "זה עבור הקטגוריה "%s". מחק אותו ההסטוריה של permalink';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'השם Permalink חייב להיות מורכב a-z, A-Z, 0-9, "-", "_" או "/".הוא חייב לא להיות מספרי או להתחיל עם מספר "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink "%s" "נמצא כבר בשימוש על ידי הקטגוריה "%s"';
+$lang['Permalink history'] = 'ההיסטוריה Permalinks';
+$lang['Permalinks'] = 'קישורים מפנים';
+$lang['Permission denied'] = 'ההרשאה נדחתה';
+$lang['Permission granted thanks to a group'] = 'ההרשאה ניתנה בזכות הקבוצה';
+$lang['Permission granted'] = 'ניתנה הרשאה';
+$lang['Photo informations updated'] = 'מידע עבור התמונות הועלה';
+$lang['Plugins'] = 'תוספים';
+$lang['Position'] = 'מיקום';
+$lang['Preferences'] = 'העדפות';
+$lang['Properties'] = 'נכסים';
+$lang['Random photo'] = 'תמונה אקראית';
+$lang['Rate date'] = 'תאריך דירוג';
+$lang['Rating by guests'] = 'דירוג על ידי אורחים';
+$lang['Rating'] = 'דירוג';
+$lang['Reject'] = 'דחה';
+$lang['Representant'] = 'נציג';
+$lang['Representation of albums'] = 'ייצוג קטגוריות';
+$lang['Representative'] = 'הנציג';
+$lang['Represents'] = 'מייצג';
+$lang['Save order'] = 'שמור סדר';
+$lang['Save to permalink history'] = 'שמור להיסטורית Permalinks';
+$lang['Select at least one album'] = 'בחר לפחות בקטגוריה אחת';
+$lang['Select at least one photo'] = 'בחר לפחות תמונה אחת';
+$lang['Select at least one user'] = 'בחר לפחות משתמש אחד';
+$lang['Show info'] = 'הצג מידע';
+$lang['Site manager'] = 'מנהל אתר';
+$lang['Status'] = 'סטטוס';
+$lang['Statistics'] = 'סטטיסטיקה';
+$lang['Storage album'] = 'מחסן קטגוריות';
+$lang['Sum of rates'] = 'סכום של דירוג';
+$lang['Tag "%s" already exists'] = 'התג "%s"" כבר קיים';
+$lang['Tag "%s" was added'] = 'התג "%s"" נוסף';
+$lang['Tag selection'] = 'בחירת תגית';
+$lang['The %d following tags were deleted'] = 'התגיות הבאות %d נמחקו';
+$lang['Unable to check for upgrade.'] = 'אין אפשרות לבדוק אם קיימים שדרוגים.';
+$lang['Uninstall'] = 'הסר';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'השתמש תמונת ברירת המחדל להרשמה קצרה (מוגדרים בקובץ התצורה)';
+$lang['User comments validation'] = 'תגובות מאושרות של המשתמש';
+$lang['Users'] = 'משתמשים';
+$lang['Validate'] = 'אמת';
+$lang['Validation'] = 'אימות';
+$lang['Version'] = 'גרסה';
+$lang['Virtual albums to move'] = 'הקטגוריות וירטואליות להעברה';
+$lang['Virtual album name'] = 'שם קטגוריה וירטואלית';
+$lang['Webmaster cannot be deleted'] = 'לא ניתן למחוק את מנהל האתר';
+$lang['You are running on development sources, no check possible.'] = 'אתה פועל על מקורות בפיתוח, לא ניתן לבדוק.';
+$lang['You cannot delete your account'] = 'אתה לא יכול למחוק את החשבון שלך';
+$lang['You cannot move an album in its own sub album'] = 'אתה לא יכול להעביר קטגוריה לתוך התת קטגוריה שלה';
+$lang['You need to confirm deletion'] = 'אתה חייב לאשר את המחיקה';
+$lang['Associate to album'] = 'לשייך לקטגוריה';
+$lang['associate to group'] = 'לשייך לקבוצה';
+$lang['Authorized'] = 'מורשה';
+$lang['Add a virtual album'] = 'הוספת קטגוריה וירטואלית';
+$lang['Authorize users to add comments on selected albums'] = 'הרשה למשתמשים להוסיף תגובות לקטגוריות שנבחרו';
+$lang['The name of an album must not be empty'] = 'השם של הקטגוריה לא יכול להיות ריק';
+$lang['Lock albums'] = 'נעל קטגוריות';
+$lang['Private'] = 'קטגוריה פרטית';
+$lang['Public'] = 'קטגוריה ציבורית';
+$lang['Find a new representant by random'] = 'מצא ייצוג אקראי חדש';
+$lang['Public / Private'] = 'ציבורי / פרטי';
+$lang['Manage authorizations for selected albums'] = 'נהל הרשאות עבור הקטגוריות שנבחרו';
+$lang['Virtual album added'] = 'קטגוריה וירטואלית נוספה';
+$lang['Virtual album deleted'] = 'קטגוריה וירטואלית נמחקה';
+$lang['Access type'] = 'סוג גישה';
+$lang['Information data registered in database'] = 'מידע הנתונים רשום במאגר נתונים';
+$lang['Default display'] = 'תצוגת ברירת המחדל';
+$lang['The gallery URL is not valid.'] = 'ה-URL בגלריה אינו חוקי.';
+$lang['Main'] = 'ראשי';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'מספר הערות בדף חייב להיות בין 5 ל 50 כולל.';
+$lang['Configuration'] = 'תצורה';
+$lang['confirm'] = 'לאשר';
+$lang['Date'] = 'תאריך';
+$lang['delete album'] = 'למחוק את הקטגוריה';
+$lang['Dissociate from album'] = 'נתק מהקטגוריה';
+$lang['dissociate from group'] = 'נתק מהקבוצה';
+$lang['Album updated successfully'] = 'מידע על הקטגוריה עודכן בהצלחה.';
+$lang['photos per page'] = 'פריטים בעמוד';
+$lang['High definition enabled'] = 'איכות גבוהה מופעלת';
+$lang['File'] = 'קובץ';
+$lang['first photo added on %s'] = 'הפריט הראשון התווסף ב"%s "';
+$lang['Forbidden'] = 'אסורה';
+$lang['global mode'] = 'מצב גלובלי';
+$lang['group "%s" added'] = 'הקבוצה "%s"" נוספה';
+$lang['group "%s" deleted'] = 'הקבוצה "%s"" נמחקה';
+$lang['group "%s" updated'] = 'הקבוצה "%s"" הועלתה';
+$lang['The name of a group must not contain " or \' or be empty.'] = "שם של קבוצה לא יכול להכיל מרחאות או ' או להיות ריק";
+$lang['This name is already used by another group.'] = 'שם זה נמצא כבר בשימוש על ידי קבוצה אחרת.'; 
+
+$lang['High definition'] = 'בחדות גבוהה';
+$lang['jump to album'] = 'לקפוץ לקטגוריה';
+$lang['jump to photo'] = 'קפיצה אל התמונה';
+$lang['leave'] = 'לעזוב';
+$lang['Lock'] = 'נעל';
+$lang['Locked'] = 'נעול';
+$lang['manage album photos'] = 'ניהול פריטים בקטגוריה';
+$lang['manage sub-albums'] = 'ניהול קטגוריות משנה';
+$lang['Manage'] = 'ניהול';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'זמן ביצוע יוצא, הטיפול חייב להיות המשך [זמן משוער:% השני ד].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'זמן ביצוע חריגה, הטיפול חייב להמשיך [זמן משוער:% d שניות].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'הגיע הזמן להכין את רשימת המשתמשים אשר יישלח בדואר מוגבל למשתמשים אחרים אינם מפורטים..';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'הזמן כדי לשלוח דואר אלקטרוני מוגבל אחרים כבר דילג..';
+$lang['To send ?'] = 'כדי לשלוח?';
+$lang['Last send'] = 'לאחרונה שלחה';
+$lang['Email'] = 'דואר אלקטרוני';
+$lang['User'] = 'משתמש';
+$lang['See you soon,'] = 'נתראה בקרוב';
+$lang['Go to'] = 'עבור';
+$lang['Hello'] = 'שלום';
+$lang['New photos were added'] = 'אלמנטים חדשים נוספו';
+$lang['on'] = 'על  Piwigo';
+$lang['between'] = 'בין';
+$lang['and'] = 'ו';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'שמנהל האתר רשום לך לקבל הודעות בדואר.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'יש לך מנוי כדי לקבל הודעות בדואר.';
+$lang['To subscribe'] = 'כדי להירשם';
+$lang['If you encounter problems or have any question, please send a message to'] = 'אם אתה נתקל בבעיות או יש לך שאלה, שילחו הודעה ל';
+$lang['[NBM] Problems or questions'] = '[NBM] בעיות או שאלות';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'שמנהל האתר הרשמתך ממך לקבל הודעות בדואר.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'ביטלת את המנוי מלהיות הודעה בדואר.';
+$lang[', click on'] = ', לחץ על';
+$lang['To unsubscribe'] = 'כדי לבטל את המינוי';
+$lang['With blank value, gallery title will be used'] = 'אם ריק, הכותרת בגלריה ישמש';
+$lang['Notification'] = 'עידכוני RSS';
+$lang['Error when sending email to %s [%s].'] = 'שגיאה בעת שליחת דוא"ל אל""%s" "["%s"].';
+$lang['Mail sent to %s [%s].'] = 'דואר שנשלח""%s" "["%s"].';
+$lang['%d mail was sent.'] = 'ד הדואר% נשלחה.';
+$lang['%d mails were sent.'] = 'ד אלקטרוני% נשלחו.';
+$lang['%d mail was not sent.'] = 'ד הדואר% לא נשלחה.';
+$lang['%d mails were not sent.'] = 'ד אלקטרוני% לא נשלחו.';
+$lang['No mail to send.'] = 'דואר לא יישלחו.';
+$lang['There is no available subscribers to mail.'] = 'אין נרשמים כדי לקבל הודעה בדואר.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'המנויים יכולים להיות רשומים (כניסה) רק אם יש אלמנטים חדשים כדי להודיע.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'מנהלי אתרים רק בכל אופן ניתן לראות את הכרטיסייה, לא מנהלים.';
+$lang['No user to send notifications by mail.'] = 'המשתמש לא כדי לקבל הודעה בדואר.';
+$lang['New photos added'] = 'אלמנטים חדשים שנוספו';
+$lang['Subscribe to notification by mail'] = 'מודלים הודעה בדואר';
+$lang['Unsubscribe from notification by mail'] = 'הסרה מרשימת הודעה בדואר';
+$lang['Parameter'] = 'הגדרות';
+$lang['Operation in progress'] = 'הטיפול מתבצעת.';
+$lang['Continue processing treatment'] = 'המשך הטיפול השוטף';
+$lang['Complementary mail content'] = 'דואר תוכן משלימים';
+$lang['Add detailed content'] = 'מוסיפים קצת תוכן מפורט';
+$lang['Send mail as'] = 'שלח דואר כ';
+$lang['Send mail to users'] = 'שלח דואר למשתמשים';
+$lang['Send'] = 'שלח';
+$lang['Options'] = 'אפשרויות';
+$lang['Subscribed'] = 'מנויים';
+$lang['Subscribe'] = 'הרשם';
+$lang['Parameters'] = 'פרמטרים';
+$lang['Select recipients'] = 'בחירת נמענים';
+$lang['Subscribe/unsubscribe users'] = 'להירשם / לבטל את המנוי משתמשים';
+$lang['Unsubscribed'] = 'המינוי';
+$lang['%d parameter was updated.'] = 'ד פרמטר% המעודכן.';
+$lang['%d parameters were updated.'] = 'ד הפרמטרים% המעודכן.';
+$lang['%d user was not updated.'] = 'המשתמש% d לא מעודכן.';
+$lang['%d users were not updated.'] = 'ד למשתמשים% לא מעודכן.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'המשתמש""%s" "["%s"] מרשימת המנויים.';
+$lang['User %s [%s] was added to the subscription list.'] = 'המשתמש""%s" "["%s"] לרשימת המנויים.';
+$lang['%d user was updated.'] = 'ד המשתמש% המעודכן.';
+$lang['%d users were updated.'] = 'ד למשתמשים% המעודכן.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'המשתמש""%s" "["%s"] לא יוסר מרשימת המנויים.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'המשתמש""%s" "["%s"] לא הוסיף לרשימה המנוי.';
+$lang['User %s [%s] added.'] = 'המשתמש""%s" "["%s"] הוסיף.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'אזהרה: מנוי או ביטול המנוי תשלח מיילים למשתמשים';
+$lang['Send mail on HTML format'] = 'שלח דואר בתבנית HTML';
+$lang['Include display of recent photos grouped by dates'] = 'להציג כלול התמונות האחרונות מקובצים לפי תאריכים';
+$lang['Available only with HTML format'] = 'ניתן להשיג רק עם פורמט HTML';
+$lang['no write access'] = 'אין גישה לכתוב';
+$lang['Permissions'] = 'הרשאות';
+$lang['private'] = 'פרטית';
+$lang['public'] = 'הציבור';
+$lang['Purge never used notification feeds'] = 'הטיהור מעולם ההודעה בשימוש הזנות';
+$lang['Purge sessions'] = 'מפגשים הטיהור';
+$lang['randomly represented'] = 'נציג אקראי';
+$lang['registration date'] = 'תאריך רישום';
+$lang['clean'] = 'לנקות';
+$lang['Create this site'] = 'צור את האתר הזה';
+$lang['test'] = 'מבחן';
+$lang['test this remote site'] = 'מבחן זה באתר מרוחק'; 
+$lang['remove tags'] = 'להסיר את תגי';
+$lang['Repair and optimize database'] = 'תיקון מסד אופטימיזציה';
+$lang['selection'] = 'הבחירה';
+$lang['set to'] = 'מוגדר';
+$lang['singly represented'] = 'נציג קבוע';
+$lang['This site already exists'] = 'אתר זה כבר קיים';
+$lang['created'] = 'יצר';
+$lang['delete'] = 'למחוק';
+$lang['delete this site and all its attached elements'] = 'למחוק את האתר הזה ואת כל המידע בנושא';
+$lang['an error happened'] = 'אירעה שגיאה';
+$lang['Local'] = 'מקומית';
+$lang['Remote'] = 'מרחוק';
+$lang['update the database from files'] = 'לעדכן את מסד הנתונים עם קבצים';
+$lang['status'] = 'מעמד';
+$lang['Directory'] = 'מדריך';
+$lang['sub-albums'] = 'קטגוריות משנה';
+$lang['Synchronize metadata'] = 'לסנכרן מטה';
+$lang['target'] = 'המטרה';
+$lang['Title'] = 'כותרת';
+$lang['Album list management'] = 'ניהול קטגוריות';
+$lang['Piwigo configuration'] = 'תצורה Piwigo';
+$lang['Edit album'] = 'ערוך קטגוריה';
+$lang['Group management'] = 'ניהול קבוצות';
+$lang['User list'] = 'רשימת משתמשים';
+$lang['Edit photo information'] = 'שינוי פרטים בתמונה';
+$lang['Database synchronization with files'] = 'מסד נתונים לסינכרון עם קבצים';
+$lang['all'] = 'כל';
+$lang['height must be a number superior to'] = 'גובה חייב להיות מספר גדול יותר';
+$lang['width must be a number superior to'] = 'רוחב חייב להיות מספר גדול יותר';
+$lang['for the file format'] = 'עבור פורמט קובץ';
+$lang['Photo unreachable or no support'] = 'תמונה בפורמט נגיש או נתמך';
+$lang['GD version'] = 'גרסת ה ';
+$lang['General statistics'] = 'סטטיסטיקה';
+$lang['average time'] = 'הזמן הממוצע';
+$lang['number of miniaturized photos'] = 'מספר תמונות ממוזערות נוצר';
+$lang['total time'] = 'זמן מסך';
+$lang['for this file format'] = 'עבור פורמט קובץ זה';
+$lang['unit mode'] = 'מצב יחיד';
+$lang['Unlocked'] = 'נעולים';
+$lang['unset'] = 'Unset';
+$lang['Update albums informations'] = 'עדכון פרטים הקטגוריות';
+$lang['Update photos information'] = 'עדכון פרטים תמונות';
+$lang['Synchronize'] = 'סנכרן';
+$lang['reduce to single existing albums'] = 'כדי לצמצם את הקטגוריות הקיימות יחיד';
+$lang['Choose an option'] = 'בחר באפשרות';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'מקסימום מידע לתצוגה (קטגוריות הוסיף אלמנטים, קטגוריות שנמחקו אלמנטים)';
+$lang['Error list'] = 'רשימת שגיאות';
+$lang['Errors caption'] = 'שגיאות אגדות';
+$lang['Detailed informations'] = 'ידיעות מפורט';
+$lang['File/directory read error'] = 'קובץ / ספרייה לקרוא שגיאה';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'הקובץ או הספרייה לא ניתן לגשת (או שזה לא קיים או הגישה נדחתה)';
+$lang['albums deleted in the database'] = 'קטגוריות שנמחקו באתר';
+$lang['photos deleted from the database'] = 'אלמנטים שנמחקו באתר';
+$lang['photos candidates for metadata synchronization'] = 'תמונות המועמדים לסינכרון מטה';
+$lang['photos informations synchronized with files metadata'] = 'אלמנטים ידיעות מסונכרן עם metadata קבצים';
+$lang['errors during synchronization'] = 'טעויות במהלך הסנכרון';
+$lang['albums added in the database'] = 'הקטגוריות הוסיף באתר';
+$lang['photos added in the database'] = 'רכיבים נוספים באתר';
+$lang['photos updated in the database'] = 'אלמנטים עודכן באתר';
+$lang['Search for new images in the directories'] = 'מחפש תמונות חדשות של ספריות';
+$lang['added'] = 'מוסף';
+$lang['deleted'] = 'נמחק';
+$lang['Metadata synchronization results'] = 'Metadata תוצאות סינכרון';
+$lang['only perform a simulation (no change in database will be made)'] = 'רק לבצע סימולציה (דבר יהיה שונה במסד הנתונים)';
+$lang['Simulation'] = 'הדמיה';
+$lang['directories + files'] = 'תמונות + תקיות';
+$lang['only directories'] = 'תקיות בלבד';
+$lang['synchronize files structure with database'] = 'לסנכרן מבנה קבצים עם מסד נתונים';
+$lang['synchronize files metadata with database photos informations'] = 'לסנכרן אלמנטים מסד נתונים עם metadata קבצים';
+$lang['even already synchronized photos'] = 'אפילו פריטים שסונכרנו כבר';
+$lang['Used metadata'] = 'Metadata בשימוש';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'השם של תיקיות וקבצים חייב לכלול רק אותיות, מספרים, " -  ", " _  "או "  "';
+$lang['wrong filename'] = 'שם קובץ שגוי';
+$lang['Upload'] = 'העלה';
+$lang['user "%s" added'] = 'המשתמש "%s" נוסף';
+$lang['User status'] = 'מצב משתמש';
+$lang['user_status_admin'] = 'מחובר כמשתמש כמנהל';
+$lang['user_status_generic'] = 'מחובר כמשתמש כללי';
+$lang['user_status_guest'] = 'מחובר כמשתמש אורח';
+$lang['user_status_normal'] = 'מחובר כמשתמש רגיל';
+$lang['user_status_webmaster'] = 'מחובר כמשתמש מנהל האתר';
+$lang['Virtual album'] = 'הקטגוריה וירטואלית';
+$lang['Waiting'] = 'בהמתנה';
+$lang['default'] = 'ברירת המחדל';
+$lang['Toggle \'default group\' property'] = "תייג 'קבוצת ברירת מחדל' ערך";
+$lang['Advanced features'] = 'תכונות מתקדמות';
+$lang['Overall'] = 'מבט';
+$lang['Year'] = 'שנה';
+$lang['Month'] = 'חודש';
+$lang['Day'] = 'יום';
+$lang['Pages seen'] = 'דפים שניצפו';
+$lang['Time'] = 'זמן';
+$lang['IP'] = 'אי פי';
+$lang['Element'] = 'מרכיב';
+$lang['Section'] = 'סעיף';
+$lang['An information email was sent to group "%s"'] = 'דואר אלקטרוני נשלח לקבוצה "%s"';
+$lang['Send an information email to group members'] = 'שלח הודעת דואר אלקטרוני מידע על חברי הקבוצה';
+$lang['Group'] = 'הקבוצה';
+$lang['%s value is not correct file because exif are not supported'] = '%s התמונה לא הועלתה כיוון שהאתר לא תומך בפורמט תמונה זה';
+$lang['Hello,'] = 'שלום,';
+$lang['See you soon.'] = 'נתראה בקרוב.';
+$lang['Discover album:'] = 'גלה את הקטגוריה:';
+$lang['Mail content'] = 'דואר תוכן';
+$lang['none'] = 'אף אחד';
+$lang['high'] = 'גבוהה';
+$lang['other'] = 'אחרים';
+$lang['Element type'] = 'סוג מרכיב';
+$lang['Image id'] = 'מזהה תמונה';
+$lang['Summary'] = 'סיכום';
+$lang['%d line filtered'] = '%d שורה מסומנת';
+$lang['%d lines filtered'] = '%d שורות מסומנות';
+$lang['%d guest'] = '%d אורח';
+$lang['%d guests'] = '%d אורחים';
+$lang['Hour'] = 'שעה';
+$lang['guest'] = 'האורח';
+$lang['default values'] = 'ערכי ברירת המחדל';
+$lang['Guest cannot be deleted'] = 'חוות דעת לא ניתן למחוק';
+$lang['Default user cannot be deleted'] = 'המשתמש ברירת מחדל ולא ניתן למחוק';
+$lang['Purge history detail'] = 'ההיסטוריה פרטים הטיהור';
+$lang['Purge history summary'] = 'ההיסטוריה סיכום הטיהור';
+$lang['Check integrity'] = 'בדיקת תקינות';
+$lang['Anomaly'] = 'אנומליה';
+$lang['Correction'] = 'תיקון';
+$lang['Automatic correction'] = 'תיקון אוטומטי';
+$lang['Impossible automatic correction'] = 'אוטומטיים impossibl תיקון';
+$lang['Correction applied with success'] = 'תיקון מיושם בהצלחה';
+$lang['Correction applied with error'] = 'תיקון להחיל עם שגיאה';
+$lang['%d anomaly has been detected.'] = '%d חריגה זוהתה.';
+$lang['%d anomalies have been detected.'] = '%d חריגות זוהו.';
+$lang['%d anomaly has been corrected.'] = '%d חריגה תוקנה.';
+$lang['%d anomalies have been detected corrected.'] = '%d חריגות תוקנו.';
+$lang['%d anomaly has not been corrected.'] = '%d תריגה לא תוקנה.';
+$lang['%d anomalies have not been corrected.'] = '%d חריגות לא תוקנו.';
+$lang['[%s] Visit album %s'] = 'עבור אל "%s" או "%s" למידע';
+$lang['the forum'] = 'הפורום';
+$lang['the wiki'] = 'המילון';
+$lang['Go to %s or %s for more informations'] = 'הערך "%s" חייב להיות מדוייק כיוון שלא ניתן להשתמש ב exif';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '"%s" "חייב להיות מוגדר שווא בקובץ המקומי שלך / / config config.inc.php';
+$lang['Main "guest" user does not exist'] = 'המשתמש "אורח" לא קיים';
+$lang['Main "guest" user status is incorrect'] = 'הסטטוס של ה"אורח" לא נכון';
+$lang['Default user does not exist'] = 'המשתמש של ברירת המחדל אינה קיימת';
+$lang['Main "webmaster" user does not exist'] = 'המשתמש "מנהל האתר" לא קיים';
+$lang['Main "webmaster" user status is incorrect'] = 'המשתמש "מנהל האתר" לא נכון';
+$lang['User "%s" created with "%s" like password'] = 'המשתמש "%s" נוצר עם "%s" ואותה סיסמה';
+$lang['Status of user "%s" updated'] = 'הסטטוס של המשתמש "%s" עודכן';
+$lang['add new photos to caddie'] = 'הוסף פריט חדש לסל';
+$lang['No display'] = 'לא להציג';
+$lang['Classic display'] = 'תצוגה קלאסית';
+$lang['Hoverbox display'] = 'להציג Hoverbox';
+$lang['Mail address is obligatory for all users'] = 'כתובת דואר הוא חובה עבור כל המשתמשים';
+$lang['Minimum privacy level'] = 'מינימום רמת הפרטיות';
+$lang['Privacy level'] = 'פרטיות ברמה';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'אנשי קשר';
+$lang['Level 2'] = 'החברים';
+$lang['Level 4'] = 'משפחה';
+$lang['Level 8'] = 'מנהלים';
+$lang['Reinitialize check integrity'] = 'Reinitialize בדיקת תקינות';
+$lang['Check all'] = 'בדוק את כל';
+$lang['Uncheck all'] = 'בטל את כל';
+$lang['Check automatic corrections'] = 'בדוק תיקונים אוטומטיים';
+$lang['Apply selected corrections'] = 'תיקונים שנבחר החל';
+$lang['Ignore selected anomalies'] = 'התעלם אנומליות נבחר';
+$lang['Refresh'] = 'רענון';
+$lang['The anomaly will be ignored until next application version'] = 'האנומליה תתעלם עד לגרסה הבאה הבקשה';
+$lang["Correction the anomaly will cancel the fact that it's ignored"] = 'תיקן האנומליה לא יהיה עוד להתעלם ממנו';
+$lang['%d anomaly has been ignored.'] = '%d חריגה שהתעלמתה ממנה.';
+$lang['%d anomalies have been ignored.'] = '%d חריגות שהתעלמה מהן.';
+$lang['Plugins which need upgrade'] = 'תוספים שיש לעדכן';
+$lang['Plugin list'] = 'רשימת תוספים';
+$lang['Check for updates'] = 'בדוק עדכונים';
+$lang['Other plugins'] = 'תוספים נוספים זמינים';
+$lang['Last revisions'] = 'התיקונים האחרונים';
+$lang['Are you sure you want to delete this plugin?'] = 'האם אתה בטוח שאתה רוצה למחוק את התוסף הזה?';
+$lang['Are you sure you want to install this plugin?'] = 'האם אתה בטוח שאתה רוצה להתקין את התוסף הזה?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'האם אתה בטוח שאתה רוצה להתקין את השדרוג, עליך לוודא אם הגרסה הזאת לא צריך ההסרה לפני?.';
+$lang['Plugin has been successfully copied'] = 'תוסף הועתקה בהצלחה';
+$lang['You might go to plugin list to install and activate it.'] = 'עבור אל רשימת התוספים להתקין ולהפעיל אותו.';
+$lang["Can't create temporary file."] = 'קובץ זמני אינו יכול להיווצר.';
+$lang["Can't download archive."] = 'ארכיון לא ניתן להוריד.';
+$lang["Can't read or extract archive."] = 'ארכיון לא ניתן לקרוא או חילוץ.';
+$lang['An error occured during extraction (%s).'] = 'אירעה שגיאה במהלך קבצים ("%s") החילוץ.';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'בבקשה בדוק את ההרשאות לתיקיה "plugins" ולתת תיקיות שלה (CHMOD)';
+$lang["Can't connect to server."] = 'החיבור לשרת בלתי אפשרי.';
+$lang['Purge compiled templates'] = 'הידור הטיהור תבניות';
+$lang['ACCESS_0'] = 'גישה חופשית';
+$lang['ACCESS_1'] = 'גישה לכל';
+$lang['ACCESS_2'] = 'גישה למשתמשים רשומים';
+$lang['ACCESS_3'] = 'גישה למנהלים';
+$lang['ACCESS_4'] = 'גישה למנהל האתר';
+$lang['ACCESS_5'] = 'אין גישה';
+$lang['Support'] = 'תמיכה';
+$lang['Documentation'] = 'תיעוד';
+$lang['A new version of Piwigo is available.'] = 'הגרסה החדשה של Piwigo זמין.';
+$lang['Piwigo Administration'] = 'המינהל Piwigo';
+$lang['Piwigo version'] = 'הגרסה Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'אתה מפעיל את הגירסה העדכנית Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'הגרסה של""%s" "["%s"] התקנת אינו תואם לגרסה הנדרש ["%s"]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'אתה צריך לשדרג את המערכת שלך כדי לנצל את מלוא היתרונות של הבקשה, אחרת הבקשה יכול לעבוד כראוי, או בכלל לא';
+$lang['Deleted on'] = 'נמחק על';
+$lang['Last hit'] = 'מכה אחרונה';
+$lang['GD library is missing'] = 'ספריית GD חסר';
+$lang['Templates'] = 'תבניות';
+$lang['Extend for templates'] = 'הרחב תבניות';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'החלפת המקורי תבניות ידי אישית תבניות מ-תיקיית משנה סיומת התבנית';
+$lang['Replacers (customized templates)'] = 'ותחליפיו (אישית תבניות)';
+$lang['Original templates'] = 'מקורי תבניות';
+$lang['Optional URL keyword'] = 'מילת המפתח תכנית אופציונלית';
+$lang['Templates configuration has been recorded.'] = 'תצורה תבניות נרשמה.';
+$lang['All optimizations have been successfully completed.'] = 'אופטימיזציות כל הושלמו בהצלחה.';
+$lang['Optimizations have been completed with some errors.'] = 'אופטימיזציות הושלמו עם שגיאות כמה.';
+$lang['Modify information'] = 'שינוי פרטים';
+$lang['nothing'] = 'שום דבר';
+$lang['overrides existing values with empty ones'] = 'מלא ערכים קיימים עם ערכים ריקים';
+$lang['Manage photo ranks'] = 'נהל את דירוג התמונות';
+$lang['Edit ranks'] = 'ערוך דירוג';
+$lang['No photo in this album'] = 'אין פריט בקטגוריה זו';
+$lang['Images manual order was saved'] = 'סדר התמונות נשמה';
+$lang['ranks'] = 'דירוגים';
+$lang['By rank'] = 'לפי דירוג';
+$lang['Manual order'] = 'סדר ידני ';
+$lang['Drag to re-order'] = 'גרור כדי לסדר מחדש';
+$lang['Quick Local Synchronization'] = 'סנכרון מקומי מהיר';
+$lang['No photo can be deleted'] = 'לא ניתן למחוק את התמונה';
+$lang['Delete selected photos'] = 'מחק רת בתמונות שנבחרו';
+$lang['%d photo was deleted'] = '%d תמונה נמחקה';
+$lang['%d photos were deleted'] = '%d תמונות נמחקו';
+$lang['Downloads'] = 'הורדות';
+$lang['Released on'] = 'יצא';
+$lang['Number of downloads'] = 'מספר הורדות';
+$lang['Piwigo Announcements Newsletter'] = 'עלון Piwigo';
+$lang["Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it's important to know and upgrade) and when major events happen to the project. Only a few emails a year."] = 'שמור על קשר עם פרויקט Piwigo, ההירשם לעלון של Piwigo. תישלח אליך הודעות דוא"ל כאשר מהדורה חדשה תיהיה זמינה (לפעמים כולל תיקון באג אבטחה, חשוב לדעת ולשדרג) וכאשר ישנם אירועים מרכזיים הפרויקט. רק כמה הודעות דוא"ל בשנה ';
+$lang['Subscribe %s'] = 'הירשם "%s"';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'הרשם""%s" "כדי Piwigo עלון הכרזות';
+$lang['Purge search history'] = 'נקה את היסטורית החיפוש';
+$lang['Hide'] = 'הסתר';
+$lang['Password is missing. Please enter the password.'] = 'סיסמה חסרה, נה להזין סיסמה..';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'אישור סיסמה חסר, נה להזיר אישור סיסמה..';
+$lang['Allow users to edit their own comments'] = 'אפשר למשתמשים לערוך הערות משלהם';
+$lang['Allow users to delete their own comments'] = 'אפשר למשתמשים למחוק את התגובות שלהם';
+$lang['Email administrators when a comment is modified'] = 'שלח מייל למנהלים כאשר תגובה שונתה';
+$lang['Email administrators when a comment is deleted'] = 'שלח מייל למנהלים כאשר תגובה נמחקה';
+$lang['Cannot delete the old permalink !'] = 'אל תמחק את הPermalink הישן';
+$lang['Hit'] = 'לחיצה'; 
+$lang['Tools'] = 'כלים';
+$lang['Photos'] = 'תמונות';
+$lang['Themes'] = 'ערכות נושא';
+$lang['Instructions to use Piwigo'] = 'הוראות שימוש Piwigo';
+$lang['Installed Themes'] = 'ערכות נושא מותקנות';
+$lang['Add New Theme'] = 'הוסף נושא חדש';
+$lang['Forbid this theme to users'] = 'לאסור על הנושא הזה למשתמשים';
+$lang['Set as default theme for unregistered and new users'] = 'Set as הנושא ברירת המחדל עבור משתמשים רשומים ו החדש';
+$lang['unknown'] = 'לא ידוע';
+$lang['Upload Photos'] = 'העלאת תמונות';
+$lang['Drop into album'] = 'צניחה לתוך הקטגוריה';
+$lang['+ Add an upload box'] = '+ הוספת להעלות תיבת ';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'יצירת"%s "ספרייה בשורש של ההתקנה שלך Piwigo ';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'תן הרשאות (chmod 777) ל"%s" בתקיית שורש איפה שההתקנה שלך נמצאת';
+$lang['existing album'] = 'הקטגוריה הקיימת';
+$lang['create a new album'] = 'ליצור קטגוריה חדשה ';
+$lang['Album name'] = 'שם קטגוריה ';
+$lang['Album "%s" has been added'] = 'הקטגוריה "%s" נוספה';
+$lang['Uploaded Photos'] = 'התמונות העלאה ';
+$lang['%d photos uploaded'] = '%d תמונות הועלו';
+$lang['Privacy level set to "%s"'] = 'רמת פרטיות מוגדרת ל "%s"';
+$lang['Album "%s" now contains %d photos'] = 'הקטגוריה "%s" מכילה כעט %d תמונות';
+$lang['Manage this set of %d photos'] = 'נהל את קבוצת התמונות הזאת (%d תמונות)';
+$lang['Select files'] = 'בחר קבצים';
+$lang['Everybody'] = 'כולם';
+$lang['Who can see these photos?'] = 'מי יכול לראות את התמונות?';
+$lang['Who can see this photo?'] = 'מי יכול לראות את התמונה?';
+$lang['Settings'] = 'הגדרות';
+$lang['Resize'] = 'גודל';
+$lang['Maximum width'] = 'רוחב מרבי';
+$lang['pixels'] = 'פיקסלים';
+$lang['Maximum height'] = 'גובה מרבי';
+$lang['Image Quality'] = 'איכות תמונה';
+$lang['Thumbnail'] = 'תמונה';
+$lang['Save Settings'] = 'שמור הגדרות';
+$lang['Your configuration settings are saved'] = 'הגדרות התצורה שלך נשמרות ';
+$lang['Active Themes'] = 'רקעים פעילים ';
+$lang['Add write access to the "%s" directory'] = 'הוסף הרשאת כתיבה לתיקית "%s"';
+$lang['Administration Home'] = 'ממשק ניהול';
+$lang['Change Admin Colors'] = 'שנה צבעים לתפריט הניהול';
+$lang['Delete this theme'] = 'מחק את הנושא הזה';
+$lang['Directory does not exist'] = 'הספרייה לא קיימת';
+$lang['Download,'] = 'הורדה,';
+$lang['FTP + Synchronization'] = 'סנכרון + FTP';
+$lang['Get Support on Piwigo Forum'] = 'קבל תמיכה בפורום Piwigo ';
+$lang['Help Me'] = 'עזור לי';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'נושא זה לא יכול להיות מופעל, כפי הנושא הורה חסר:"%s" "';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'נושא זה לא ניתן למחוק, כי נושאים אחרים תלוי בו:"%s" "';
+$lang['Inactive Themes'] = 'נושאים פעילים';
+$lang['Install on your computer,'] = 'להתקין במחשב שלך,';
+$lang['Make this theme available to users'] = 'הפוך את הנושא הזה לזמין למשתמשים';
+$lang['Page end'] = 'סוף עמוד ';
+$lang['Piwigo Uploader'] = 'מעלה Piwigo';
+$lang['Operation in progress'] = 'הטיפול עיבוד.';
+$lang['Please wait...'] = 'אנא המתן ...';
+$lang['Read Piwigo Documentation'] = 'קרא את התיעוד של Piwigo';
+$lang['Start pLoader and add your photos.'] = 'התחל להוסיף תמונות שלך.';
+$lang['Switch to clear or dark colors for administration'] = 'מעבר צבעים בהיר או כהה עבור ממשק ניהול';
+$lang['Theme has been successfully installed'] = 'נושאים הותקן בהצלחה ';
+$lang['Visit Gallery'] = 'לבקר בגלריה';
+$lang['Visit Piwigo project website'] = 'בקר באתר Piwigo פרוייקט';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'PLoader יטען <em> Piwigo Uploader </em>. מהמחשב שלך, pLoader יכין את התמונות שלך ןיעביר אותם אל גלרית ה Piwigo שלך';
+$lang['Guest Settings'] = 'הגדרות אורחים';
+$lang['Main Page'] = 'דף ראשי';
+$lang['Photo Page'] = 'מקור תמונה';
+$lang['Activate Navigation Bar'] = 'להפעיל את סרגל הניווט';
+$lang['Activate Navigation Thumbnails'] = 'הפעל ממוזערות ניווט';
+$lang['Activate icon "%s"'] = 'להפעיל את סמל"%s "';
+$lang['Photo Properties'] = 'מאפייני תמונה';
+$lang['Allow user customization'] = 'לאפשר התאמה אישית למשתמש';
+$lang['Languages'] = 'שפות';
+$lang['Installed Languages'] = 'מהשפות המותקנות';
+$lang['Add New Language'] = 'הוספת שפה חדשה';
+$lang['Language has been successfully installed'] = 'שפה הותקן בהצלחה';
+$lang['Select:'] = 'בחר:';
+$lang['None'] = 'אף אחד';
+$lang['Invert'] = 'מרחב';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'אי אפשר לנטרל את הנושא הזה, אתה צריך לפחות נושא אחד.';
+$lang['Webmaster status is required.'] = 'מצב Webmaster נדרשת.';
+$lang['Bound Theme'] = 'נושאים Bound';
+$lang['Allow rating'] = 'אפשר דירוג';
+$lang['Select at least one comment'] = 'בחר אחת לפחות להגיב';
+$lang['Active Plugins'] = 'תוספים פעילים';
+$lang['Inactive Plugins'] = 'תוספים פעילים';
+$lang['Missing Plugins'] = 'תוספים חסרים';
+$lang['Uninstalled Plugins'] = 'תוספים הוסר';
+$lang['By %s'] = 'הועלה ע"י "%s"';
+$lang['Visit plugin site'] = 'בקר תוסף האתר';
+$lang['Active Languages'] = 'שפות פעילים';
+$lang['Delete this language'] = 'מחק את השפה הזאת';
+$lang['Forbid this language to users'] = 'לאסור על השפה הזו למשתמשים';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'אי אפשר לבטל את השפה הזו, הראשון להגדיר שפה אחרת כברירת המחדל.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'אי אפשר לבטל את השפה הזאת, אתה צריך לפחות שפה אחת.';
+$lang['Inactive Languages'] = 'שפות לא פעילה';
+$lang['Make this language available to users'] = 'הפוך את השפה הזו זמינה למשתמשים';
+$lang['Set as default language for unregistered and new users'] = 'הפוך שפת ברירת מחדל עבור משתמשים רשומים ו החדש';
+$lang['Add Photos'] = 'הוספת תמונות';
+$lang['The following tag was deleted'] = 'התווית הבאה נמחקה';
+$lang['Miscellaneous'] = 'שונות';
+$lang['Virtual Links'] = 'קישורים וירטואלית';
+$lang['There is no other language available.'] = 'אין שפה אחרת זמינה.';
+$lang['There is no other plugin available.'] = 'אין שום תוספים אחרים זמינים.';
+$lang['There is no other theme available.'] = 'אין שום נושא אחר זמין.';
+$lang['Add another set of photos'] = 'הוספת קבוצה נוספת של אוהדים';
+$lang['Order of menubar items has been updated successfully.'] = 'סדר הפריטים Menubar עודכנו בהצלחה.';
+$lang['This theme was not designed to be directly activated'] = 'הנושא הזה לא נועד להיות מופעל באופן ישיר';
+$lang['Pending Comments'] = 'תגובות בהמתנה';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'בקובץ php.ini שלך, upload_max_filesize (SB%) הוא גדול יותר post_max_size (SB%), עליך לשנות הגדרה זו';
+$lang['Exif extension not available, admin should disable exif use'] = 'סיומת Exif לא נתמכת, פנה למנהל על מנת שיאשר שימוש בסיומת Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: "%s "B';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'The uploaded files exceed the post_max_size directive in php.ini: "%s "B';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'הקובץ שבועלה חורג מה MAX_FILE_SIZE האפשרי שצויין בקובץ html';
+$lang['The uploaded file was only partially uploaded'] = 'הקובץ הועלה חלקית';
+$lang['No file was uploaded'] = 'לא הועלה קובץ';
+$lang['Missing a temporary folder'] = 'חסר תיקיה זמנית';
+$lang['Failed to write file to disk'] = 'נכשל בכתיבת הקובץ בדיסק';
+$lang['File upload stopped by extension'] = 'העלאת קובץ נכשלה ובמשתמע';
+$lang['Unknown upload error'] = 'שגיאה בהעלאה לא ידועה';
+$lang['Error on file "%s" : %s'] = 'שגיאה בקובץ "%s" : %s';
+$lang['Menu Management'] = 'נהל תפריטים';
+$lang['automatic order'] = 'סדר אוטומטי';
+$lang['manual order'] = 'סדר ידני';
+$lang['Albums automatically sorted'] = 'מיון אלבומים אוטומטי';
+$lang['Batch Manager'] = 'מנהל קבוצה';
+$lang['include child albums'] = 'כולל אלבום ילד';
+$lang['Selection'] = 'מבחר';
+$lang['Action'] = 'פעולה';
+$lang['Set author'] = 'הגדר מחבר';
+$lang['Set title'] = 'הגדר כותרת';
+$lang['Set creation date'] = 'הגדר תאריך יצירה';
+$lang['Apply action'] = 'החל';
+$lang['on the %d selected photos'] = 'ב %d תמונות נבחרות';
+$lang['%d of %d photos selected'] = '%d מ %d תמונות נבחרו';
+$lang['No photo selected, %d photos in current set'] = 'לא נבחרו תמונות, %d תמונות בסט הנוכחי';
+$lang['All %d photos are selected'] = 'כל %d התמונות נבחרו';
+$lang['remove this filter'] = 'הסר מסנן זה';
+$lang['Duplicates'] = 'כפילויות';
+$lang['Add a filter'] = 'הוסף מסנן';
+$lang['Remove all filters'] = 'מחק את כל המסננים';
+$lang['Refresh photo set'] = 'רענן את סט התמונות';
+$lang['The whole page'] = 'העמוד המלא';
+$lang['The whole set'] = 'הסט המלא';
+$lang['No photo in the current set.'] = 'אין תמונות בסט הנוכחי.';
+$lang['No photo selected, no action possible.'] = 'לא נבחרו תמונות, אין פעולות אפשריות.';
+$lang['Choose an action'] = 'בחר פעולה';
+$lang['remove author'] = 'הסר מחבר';
+$lang['Type here the author name'] = 'כתוב כאן את שם המחבר';
+$lang['remove title'] = 'הסר כותרת';
+$lang['Type here the title'] = 'כתוב כאן את הכותרת';
+$lang['remove creation date'] = 'הסר את תאריך היצירה';
+$lang['Album photos associated to the following albums: %s'] = 'אלבום תמונות משוייך לאלבום הבא: %s';
+$lang['Delete orphan tags'] = 'מחק תגים יתומים';
+$lang['delete photo'] = 'מחק תמונה';
+$lang['new'] = 'חדש';
+$lang['No results'] = 'אין תוצאות';
+$lang['Orphan tags deleted'] = 'תגים יתומים נמחקו';
+$lang['Remove from caddie'] = 'הוסר מהנושא';
+$lang['Searching...'] = 'מחפש...';
+$lang['Type in a search term'] = 'הקלד את ערך החיפוש';
+$lang['Week starts on'] = 'שבוע מתחיל';
+$lang['You have %d orphan tags: %s.'] = 'יש לך %d תגים יתומים: %s.';
+$lang['Themes which need upgrade'] = 'ערכות נושא שצריכות שידרוג';
+$lang['Languages which need upgrade'] = 'שפות שצריכות שידרוג';
+$lang['All themes are up to date.'] = 'כל ערכות הנושא מעודכנות';
+$lang['All plugins are up to date.'] = 'כל התוספים מעודכנים.';
+$lang['All languages are up to date.'] = 'כל השפות מעודכנות.';
+$lang['Visit theme site'] = 'בקר באתר ערכת הנושא';
+$lang['Visit language site'] = 'בקר באתר השפה';
+$lang['New Version'] = 'גרסה חדשה';
+$lang['Obsolete Plugins'] = 'תוסף מיושן';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'אזהרה! נראה כי תוסף זה לא מתאים ל Piwigo.';
+$lang['Do you want to activate anyway?'] = 'אתה רוצה להפעיל בכל מיקרה?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'תוסף זה הוא לא חלק מליבת PIWIGO ! הסר אותו מייד!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'שגיאה: תוסף זה נראה חסר אבל מותקן! הסר אותו מייד.';
+$lang['display'] = 'הצג';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'אתה יכול לעדכן ל Piwigo %s ישירות, מבלי לשדרג ל Piwigo %s (מומלץ).';
+$lang['Save Template Directory'] = 'שמור בספרייה תבנית';
+$lang['Dump Database'] = 'זרוק מסד נתונים';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'כלול נתוני היסטוריה אזהרה:עלולה להיות חריגת זיכרון השרת';
+$lang['Unable to dump database.'] = 'אין אפשרות לזרות מסד נתונים.';
+$lang['Some upgrades are available for extensions.'] = 'כמה שידרוגים זמינים להרחבות.';
+$lang['Ignore All'] = 'התעלם מהכל';
+$lang['Crop'] = 'להניב';
+$lang['Width'] = 'רוחב';
+$lang['Height'] = 'גובה';
+$lang['Follow Orientation'] = 'עקוב אחר ההדרכה';
+$lang['Graphics Library'] = 'ספריית גרפיקה';
+$lang['Activate icon "new" next to albums and pictures'] = 'הפעל כפתו "חדש" ליד אלבומים';
+$lang['Deactivate all'] = 'בטל פעולה להכל';
+$lang['Default photos order'] = 'סדר ברירת מחדל לתמונות';
+$lang['Restore'] = 'שחזר';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'שחזר להגדרות ברירת מחדל. הגדרות ההתקן יאבדו!';
+$lang['Show menubar'] = 'הצג תפריט';
+$lang['Thumbnails generation in progress...'] = 'חידוש תמונות ממוזערות בתהליך...';
+$lang['Photos generation in progress...'] = 'חידוש תמונות בתהליך...';
+$lang['%s photos have been regenerated'] = '%s תמונות חודשו';
+$lang['%s photos can not be regenerated'] = '%s תמונות לא יכלו להתחדש';
+$lang['Updates'] = 'עדכונים';
+$lang['Update in progress... Please wait.'] = 'עדכון בתהליך... המתן.';
+$lang['Ignore this update'] = 'התעלם מעידכון זה';
+$lang['Reset ignored updates'] = 'אפס התעלמות מעידכונים';
+$lang['Update All'] = 'עדכן הכל';
+$lang['ERROR'] = 'שגיאה';
+$lang['Update Complete'] = 'עידכון הושלם';
+$lang['Piwigo Update'] = 'Piwigo עדכון';
+$lang['Extensions Update'] = 'עדכון הרחבה';
+$lang['All extensions are up to date.'] = 'כל ההרחבות מעודכנות.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'יכול להיות שההתקן לא תואם לגירסה החדשה של Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'יכול להיות שהערכת הנושא לא תואמת לגירסה החדשה של Piwigo:';
+$lang['I decide to update anyway'] = 'החלתי לעדכן בכל מיקרה';
+$lang['Update to Piwigo %s'] = 'עדכן ל Piwigo %s';
+$lang['Two updates are available'] = 'שני עידכונים זמינים';
+$lang['This is a minor update, with only bug corrections.'] = 'זהו עידכון שולי, תיקון באגים שנמצאו.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'עדכון חשוב, עם <a href="%s">מאפיינים חדשים ומלהיבים</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'יכול להיות שחלק מההתקנים וערכות הנושא לא זמינים עדיין .';
+$lang['Learn more'] = 'למד עוד';
+$lang['Rate'] = "דרג";
+$lang['Average rate'] = "דירוג ממוצע";
+$lang['(this tag will be deleted)'] = ')התג הזה ימחק(';
+$lang['... or '] = 'או ...';
+$lang['Add a criteria'] = 'הוסף קריטריון';
+$lang['Allowed file types: %s.'] = 'סוגי קבצים מותרים:%s';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'רזולוציה מקסימלית: %dM פקסלים(שזה %dx%d פקסלים).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'כברירת מחדל, Piwigo יצור גודל חדש לתמונות ה HD שלך.';
+$lang['Confirm merge'] = 'אשר איחוד';
+$lang['Create'] = 'צור';
+$lang['hide details'] = 'הסתר פרטים';
+$lang['Manage Permissions'] = 'ניהול הרשאות';
+$lang['Maximum file size: %sB.'] = 'גודל קובץ מקסימאלי: %sB.';
+$lang['Merge selected tags'] = 'אחד תגים מסומנים';
+$lang['Merge tags'] = 'איחוד תגים';
+$lang['No destination tag selected'] = 'לא ניבחרו תגי יעד';
+$lang['Photo %s of %s'] = 'תמונה %s מ %s';
+$lang['Select an album'] = 'בחר אלבום';
+$lang['Select at least two tags for merging'] = 'בחר לפחות שני תגים לאיחוד';
+$lang['Select the destination tag'] = 'בחר תגים ביעד';
+$lang['show details'] = 'הצג פרטים';
+$lang['Start Upload'] = 'התחל העלאה';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'התג <em>%s</em> אוחד כעם תג <em>%s</em>';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'אתה משתמש בהעלאה מהדפדפן. נסה <a href="%s">העלאת פלאש</a> במקום.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'אתה משתמש בהעלאת פלאש. ישנה בעיה? נסה <a href="%s">העלאה מהדפדפן</a> במקום.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'אין באפשרותך לקבוע סדר תמונות ברירת מחדל מכיוון שאתה משתמש בהגדרות מותאמות אישית';
+$lang['Add to caddie'] = 'הוסף לסל';
+$lang['Permalink'] = 'קישורית';
+$lang[' and %d virtuals'] = 'ו %d וירטואלים';
+$lang['%d day'] = '%d יום';
+$lang['%d days'] = '%d ימיםחודשים';
+$lang['%d hour'] = '%d שעה';
+$lang['%d hours'] = '%d שעות';
+$lang['%d minute'] = '%d דקה';
+$lang['%d minutes'] = '%d דקות';
+$lang['%d month'] = '%d חודש';
+$lang['%d months'] = '%d חודשים';
+$lang['%d second'] = '%d שניה';
+$lang['%d seconds'] = '%d שניות';
+$lang['%d week'] = '%d שבוע';
+$lang['%d weeks'] = '%d שבועות';
+$lang['%d year'] = '%d שנה';
+$lang['%d years'] = '%d שנים';
+$lang['%s has been successfully updated.'] = '%s הועלובהצלחה';
+$lang['%s in the future'] = '%s בעתיד';
+$lang['A locked gallery is only visible to administrators'] = 'גלריות נעולות זמינות רק למנהלים';
+$lang['Activate comments'] = 'הפעל תגובה';
+$lang['Add tags'] = 'הוסף תיוג';
+$lang['Added by %s'] = 'הוסף על ידי %s';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'ארעה שגיאה במהלך היצוא. בדוק את הרשאות קבצי התקנת piwigo.<br><a href="%s">לחץ כאן לראות את יומן השגיאות</a>.';
+$lang['An error has occured during upgrade.'] = 'ארעה שגיאה במהלך העלאה';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture הוא כלי רב עוצמה לחדד תמונות ולנהל סיפריות ענק ב-mac';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture עוצב עבור גרפיקאים מקצועיים עם הפשטות של iphoto';
+$lang['Applications'] = 'אפליקציות';
+$lang['Apply watermark if height is bigger than'] = 'החל חותמת מים(watermark) אם הגובה גדול מ';
+$lang['Apply watermark if width is bigger than'] = 'החל חותמת מים(watermark) אם הרוחב גדול מ';
+$lang['Automatic sort order'] = 'סדר אוטומטי';
+$lang['Available on'] = 'זמין ב';
+$lang['Available versions for'] = 'גרסאות זמינות ל';
+$lang['%d physicals'] = ' %d פיזית';
+$lang['Piwigo for Android'] = 'piwigo לאנדרואיד';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'piwigo לios (איפון, איפד, איפוד ואיפוד טאצ)';
+$lang['Posted %s on %s'] = 'פורסם %s ב %s';
+$lang['Resize after upload'] = 'שנה גודל אחרי העלאה';
+$lang['Save manual order'] = 'שמור סדר ידני';
+$lang['Save visits in history for'] = 'שמור מבקרים בהיסטוריה ל';
+$lang['Select a file'] = 'בחר קובץ';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'בחר איזור עם העכבר כדי להגדיר את מרכז העניין בתמונה';
+$lang['Select groups...'] = 'בחר קבוצות...';
+$lang['Select users...'] = 'בחר משתמשים...';
+$lang['Send connection settings by email'] = 'שלח פרטי התחברות באימייל';
+$lang['Source tag'] = 'מקור תג';
+$lang['There is no group in this gallery.'] = 'אין קבוצות בגלריה הזו';
+$lang['This album contains %d photos, added between %s and %s.'] = 'האלבום הזה מכיל %s תמונות, שנוספו בין ה %s ל %s';
+$lang['This album contains %d photos, added on %s.'] = 'האלבום הזה מכיל %s תמונות, נוספו ב %s';
+$lang['This album contains no photo.'] = 'האלבום הזה לא מכיל תמונות';
+$lang['Unlock gallery'] = 'גלריה פתוחה';
+$lang['Visited %d times'] = 'בוקר %d פעמים';
+$lang['Watermark'] = 'סימן מים';
+$lang['With no album'] = 'ללא אלבום';
+$lang['middle'] = 'באמצע';
+$lang['modified'] = 'שינוי';
+$lang['registered users'] = 'משתמשים רשומים';
+$lang['top left corner'] = 'בפינה השמאלית העליונה';
+$lang['top right corner'] = 'בפינה הימנית העליונה';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'מבקרים צריכים להתחבר ולהיות בעלי הרשאות מסויימות כדי לראות את האלבום הזה';
+$lang['With no tag'] = 'ללא תגים';
+$lang['With no virtual album'] = 'ללא אלבום ורטואלי';
+$lang['X Position'] = 'x מיקום';
+$lang['X Repeat'] = 'x חזרות';
+$lang['Y Position'] = 'y מיקום';
+$lang['Zoom'] = 'זום';
+$lang['add a new watermark'] = 'הוסף קו מים חדש';
+$lang['administrators'] = 'מנהל ראשי';
+$lang['any visitor can see this album'] = 'כל מבקר יכול לראות את אלבום זה';
+$lang['apply automatic sort order'] = 'החל סדר אוטומטי';
+$lang['bottom left corner'] = 'בפינה השמאלית התחתונה';
+$lang['bottom right corner'] = 'בפינה הימנית התחתונה';
+$lang['cancel manual order'] = 'ביטול סדר ידני';
+$lang['create a new site'] = 'צור אתר חדש';
+$lang['custom'] = 'מותאם אישית';
+$lang['Photo name'] = 'שם התמונה';
+$lang['Move to album'] = 'העבר לאלבום';
+$lang['Multiple Size'] = 'מספר גדלים';
+$lang['Name of the duplicate'] = 'שם של שכפול';
+$lang['No group is permitted to see this private album'] = 'לאף קבוצה אין הרשאה לראות את האלבום הפרטי הזה';
+$lang['Original Size'] = 'גודל מקורי';
+$lang['Cancel'] = 'ביטול';
+$lang['Center of interest'] = 'מרכז העניין';
+$lang['Default comments order'] = 'סדר תגובות ברירת מחדל';
+$lang['Duplicate selected tags'] = 'שכפל תגים מסומנים';
+$lang['Edit photo'] = 'ערוך תמונה';
+$lang['Gallery unlocked'] = 'גלריה פתוחה';
+$lang['Groups and users'] = 'קבוצות ומשתמשים';
+$lang['Last import'] = 'יבוא אחרון';
+$lang['List'] = 'רשימה';
+$lang['%s ago'] = '%s לפני';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u משתמשים יש הרשאות אוטומטית בגלל שהם שייכים לקבוצה מאושרת';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = '
+digiKam מיועד לצלמים שרוצים להציג, לנהל, לערוך, לשפר, לארגן, לתייג, ולשתף תצלומים.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto הוא מנהל התמונת הברירת המחדל בMacOSX.תוסף יצוא Piwigo מאפשר לך ליצור אלבומים חדשים ולייצא את תמונות ישירות מ-iPhoto לגלריית תמונות Piwigo.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam היא תוכנה מתקדמת לניהול תמונות דיגיטלית חופשיה עבור לינוקס, Windows ו MacOSX.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '
+כדי לייצא את התמונות שלך מ-digiKam ל-Piwigo, פשוט התקן digiKam ו-kipi-plugins';
+$lang['Web Form'] = 'טופס אינטרנט';
+$lang['Piwigo Publish plugin for Lightroom'] = 'תוסף פירסום Piwigo עבור Lightroom';
+$lang['Piwigo export plugin for Aperture'] = 'תוסף יצוא Piwigo עבור Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'תוסף יצוא Piwigo עבור iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'תוסף פירסום Piwigo עבור Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'תוסף פירסום Piwigo עבור digiKam';
+$lang['Predefined filter'] = 'מסנן מוגדר מראש';
+$lang['Sharpen'] = 'חידוד';
+$lang['Portrait'] = 'דיוקן';
+$lang['Rated %d times, score : %.2f'] = 'דורג %d פעמים, ציון : %.2f';
+$lang['Ratio'] = 'דירוג';
+$lang['View in gallery'] = 'צפה בגלריה';
+$lang['You can activate only one mobile theme.'] = 'אתה יכול להפעיל רק ערכת נושא אחת לסלולרי';
+$lang['between %.2f and %.2f'] = 'בין %.2f ו %.2f';
+$lang['between %d and %d pixels'] = 'בין %d ו %d פיקסלים';
+$lang['include photos with lower privacy level'] = 'כולל תמונות עם רמת פרטיות נמוכה';
+$lang['pending validation'] = 'ממתין לאימות';
+$lang['simple visitors'] = 'מבקרים פשוטים';
+$lang['Photo sizes with crop'] = 'גדלי תמונות עם חיתוך';
+$lang['Landscape'] = 'תמונת נוף';
+$lang['Not cropped correctly?'] = 'לא נחתך בצורה נכונה?';
+$lang['Original file : %s'] = 'קובץ מקורי : %';
+$lang['Panorama'] = 'פנורמה';
+$lang['Permission granted for groups'] = 'ליצור הרשאות לקבוצות';
+$lang['Permission granted for users'] = 'ליצור הרשאות למשתמשים';
+$lang['Permission management'] = 'ניהול הרשאות';
+$lang['Delete multiple size images'] = 'מחק גדלים מרובים של תמונות';
+$lang['Generate multiple size images'] = 'צור גדלים מרובים לתמונות';
+$lang['No order field selected'] = 'לא נבחר סדר';
+$lang['Manage photos'] = 'ניהול תמונות';
+$lang['Minimum height'] = 'גובה מינימלי';
+$lang['Minimum width'] = 'רוחב מינימלי';
+$lang['Number of albums per page'] = 'מספר אלבומים בעמוד';
+$lang['Opacity'] = 'אטימות';
+$lang['Rename'] = 'שנה שם';
+$lang['Duplicate'] = 'כפילות';
+$lang['Manage the members'] = 'נהל את החברים';
+$lang['Merge selected groups'] = 'מזג את הקבוצות שנבחרו';
+$lang['No group selected, no action possible.'] = 'אף קבוצה לא נבחרה,אף שינוי לא בוצע.';
+$lang['No members to manage'] = 'אין חברים לנהל';
+$lang['Notify administrators when a comment is'] = 'עדכן מנהלים כאשר נכתבת תגובה';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo לא יכולה להוציא את קבצי העדכון מהשרת';
+?>
Index: /tags/2.6.0RC1/language/he_IL/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/he_IL/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: עברית [IL]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=457
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Hebrew";
+$lang_info['country'] = "Israel";
+$lang_info['direction'] = "rtl";
+$lang_info['code'] = "he";
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d קילובייט';
+$lang['%d album updated'] = "%d קטגוריה מעודכנת";
+$lang['%d albums updated'] = "%d קטגוריות מעודכנות";
+$lang['%d comment to validate'] = "%d תגובה לאמת";
+$lang['%d comments to validate'] = "%d תגובות לאמת";
+$lang['%d new comment'] = "%d תגובה חדשה";
+$lang['%d new comments'] = "%d תגובות חדשות";
+$lang['%d comment'] = "%d תגובה";
+$lang['%d comments'] = "%d תגובות";
+$lang['%d hit'] = "%d לחיצה";
+$lang['%d hits'] = "%d לחיצות";
+$lang['%d new photo'] = "%d תמונה חדשה";
+$lang['%d new photos'] = "%d תמונות חדשות";
+$lang['%d new user'] = "%d משתמש חדש";
+$lang['%d new users'] = "%d משתמשים חדשים";
+$lang['About'] = "על";
+$lang['All tags'] = "כל התוויות";
+$lang['Any tag'] = "כל תווית";
+$lang['At least one listed rule must be satisfied.'] = "חייב להיות לפחות קריטריון אחד ברשימה .";
+$lang['Author'] = "מחבר";
+$lang['Albums'] = "קטגוריות";
+$lang['Album'] = "קטגוריה";
+$lang['Close this window'] = "סגור חלון זה";
+$lang['Complete RSS feed (photos, comments)'] = "עדכון RSS (תמונות, הערות)";
+$lang['Confirm Password'] = "אשר סיסמה";
+$lang['Connection settings'] = "הגדרות חיבור";
+$lang['Login'] = "התחברות";
+$lang['Contact webmaster'] = "צור קשר עם מנהל האתר";
+$lang['Create a new account'] = "צור חשבון חדש";
+$lang['Created on'] = 'נוצר ב';
+$lang['Creation date'] = "תאריך יצירה";
+$lang['Current password is wrong'] = "הסיסמה שגויה";
+$lang['Dimensions'] = "מימדים";
+$lang['Display'] = "להציג";
+$lang['Each listed rule must be satisfied.'] = "כל רשימת קריטריונים חייבת להיות שלמה.";
+$lang['Email address'] = "כתובת דואר אלקטרוני";
+$lang['Enter your personnal informations'] = "הזן את הנתונים האישיים שלך";
+$lang['Error sending email'] = "שגיאה בעת שליחת דואר אלקטרוני";
+$lang['File name'] = "שם קובץ";
+$lang['File'] = "קובץ";
+$lang['Filesize'] = "גודל הקובץ";
+$lang['Filter and display'] = "סנן והצג";
+$lang['Filter'] = "מסנן";
+$lang['Forgot your password?'] = "שכחת את הסיסמה?";
+$lang['Go through the gallery as a visitor'] = "נווט בגלריה כמבקר";
+$lang['Help'] = "עזרה";
+$lang['Identification'] = "הזדהות";
+$lang['Photos only RSS feed'] = "תמונות בלבד RSS ";
+$lang['Keyword'] = "מילות מפתח";
+$lang['Links'] = "קישורים";
+$lang['N/A'] = "N/A לא ידוע";
+$lang['New on %s'] = "חדש ב %s";
+$lang['Notification'] = "הודעה";
+$lang['Number of items'] = "מספר הפריטים";
+$lang['Original dimensions'] = "מידות מקוריות";
+$lang['Password forgotten'] = "שכחתי את הסיסמה";
+$lang['Password'] = "סיסמה";
+$lang['Post date'] = "תאריך פרסום";
+$lang['Posted on'] = "פורסם ב";
+$lang['Profile'] = "פרופיל";
+$lang['Quick connect'] = "גישה מהירה";
+$lang['RSS feed'] = 'הזנות (RSS)';
+$lang['Register'] = "הירשם";
+$lang['Registration'] = "הרשמה";
+$lang['Related tags'] = "תוויות קשורות";
+$lang['Reset'] = "איפוס";
+$lang['Retrieve password'] = "לאחזר את הסיסמה";
+$lang['Search rules'] = "חיפוש קריטריונים";
+$lang['Search tags'] = "חיפוש תוויות";
+$lang['Search'] = "חיפוש";
+$lang['display available tags'] = "ראה תוויות אפשריות";
+$lang['Since'] = "מ";
+$lang['Sort by'] = "מיין לפי";
+$lang['Sort order'] = "לפי הסדר";
+$lang['Tag'] = "תווית";
+$lang['Tags'] = "תוויות";
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = "ה-RSS מספק התראה על אירועים חדשים מאתר זה: תמונות חדשות, קטגוריות מעודכן, הערות חדשות. כדי להשתמש עם קורא RSS.";
+$lang['Unknown feed identifier'] = 'מזהה לא ידוע';
+$lang['User comments'] = 'תגובות משתמש';
+$lang['Username'] = 'שם משתמש';
+$lang['Visits'] = 'מבקר';
+$lang['Webmaster'] = 'מנהל אתר';
+$lang['Week %d'] = 'שבוע %d';
+$lang['About Piwigo'] = 'אודות Piwigo';
+$lang['You are not authorized to access the requested page'] = 'אינך מורשה לגשת לדף זה';
+$lang['add this photo to your favorites'] = 'הוסף תמונה זאת למועדפים שלך';
+$lang['Administration'] = 'מנהל ראשי';
+$lang['all'] = 'הכול';
+$lang['ascending'] = 'עולה';
+$lang['author(s) : %s'] = 'מחבר/ים : %';
+$lang['Expand all albums'] = 'הרחב את כל הקטגוריות';
+$lang['posted after %s (%s)'] = 'פורסם אחרי %s (%s)';
+$lang['posted before %s (%s)'] = 'פורסם לפני %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'פורסם בין %s (%s) ו %s (%s)';
+$lang['posted on %s'] = 'פורסם ב %';
+$lang['Best rated'] = 'מדורג הכי גבוהה';
+$lang['display best rated photos'] = 'הצג את התמונה המדורגת הכי גבוהה';
+$lang['Calendar'] = 'לוח שנה';
+$lang['All'] = 'הכול';
+$lang['display each day with photos, month per month'] = 'הצג כל יום עם תמונה, חודש אחרי חודש';
+$lang['View'] = 'צפה';
+$lang['chronology_monthly_calendar'] = 'חודשי לוח שנה';
+$lang['chronology_monthly_list'] = 'רשימת חודשים';
+$lang['chronology_weekly_list'] = 'רשימת שבועות';
+$lang['Click here if your browser does not automatically forward you'] = 'לחץ כאן אם הדפדפן לא העביר אותך אוטומטית';
+$lang['comment date'] = 'תאריך תגובה';
+$lang['Comment'] = 'תגובה';
+$lang['Your comment has been registered'] = 'התגובה שלך נרשמה';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'מערכת למניעת קריסה : המתן מספר שניות בין תגובה לתגובה';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'התגובה שלך לא נרשמה כיוון שלא עמדה באחד הכללים';
+$lang['An administrator must authorize your comment before it is visible.'] = 'המנהל הראשי חייב לאשר את התגובה שלך לפני שהיא תופיעה.';
+$lang['This login is already used by another user'] = 'אתה מחובר כבר על משתמש אחר';
+$lang['Comments'] = 'תגובות';
+$lang['Add a comment'] = 'הוסף תגובה';
+$lang['created after %s (%s)'] = 'נוצר אחרי %s (%s)';
+$lang['created before %s (%s)'] = 'נוצר לפני %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'נוצר בין %s (%s) ל %s (%s)';
+$lang['created on %s'] = 'נוצר ב %s';
+$lang['Customize'] = 'התאמה אישית';
+$lang['Your Gallery Customization'] = 'הגלריה האישית שלך';
+$lang['day'][0] = "יום ראשון";
+$lang['day'][1] = "יום שני";
+$lang['day'][2] = "יום שלישי";
+$lang['day'][3] = "יום רביעי";
+$lang['day'][4] = "יום חמישי";
+$lang['day'][5] = "יום שישי";
+$lang['day'][6] = "יום שבת";
+$lang['Default'] = 'ברירת מחדל';
+$lang['delete this photo from your favorites'] = 'מחק את התמונה מהמועדפים שלך';
+$lang['Delete'] = 'מחק';
+$lang['descending'] = 'יורד';
+$lang['Download'] = 'הורד';
+$lang['Download this file'] = 'הורד את הקובץ';
+$lang['edit'] = 'ערוך';
+$lang['wrong date'] = 'תאריך לא נכון';
+$lang['excluded'] = 'נשלל';
+$lang['Your favorites'] = 'המועדפים שלי';
+$lang['display your favorites photos'] = 'הצג את התמונות המועדפות שלך';
+$lang['Favorites'] = 'מועדפים';
+$lang['First'] = 'ראשון';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'הגלריה סגורה לצורכי תחזוקה. בבקשהה, תחזור מאוחר יותר.';
+$lang['Page generated in'] = 'הדף נוצר ב';
+$lang['guest'] = 'אורח';
+$lang['Hello'] = 'שלום';
+$lang['available for administrators only'] = 'זמין למנהל ראשי בלבד';
+$lang['display this album'] = 'הצג תמונות בשורש הקטגוריה';
+$lang['display last user comments'] = 'ראה את התגובות האחרונות של המשתמשים';
+$lang['customize the appareance of the gallery'] = 'התאם אישית את מראה הקטגוריה';
+$lang['search'] = 'חפש';
+$lang['Home'] = 'בית';
+$lang['Identification'] = "הזדהה";
+$lang['in this album'] = "בקטגוריה הזאת";
+$lang['in %d sub-album'] = "ב %d תת קטגוריה";
+$lang['in %d sub-albums'] = "ב %d תת קטגוריות";
+$lang['included'] = "כולל";
+$lang['Invalid password!'] = "סיסמה לא חוקית!";
+$lang['Language'] = "שפה";
+$lang['last %d days'] = "ה %d ימים אחרונים";
+$lang['Last'] = "אחרון";
+$lang['Logout'] = "התנתק";
+$lang['obligatory'] = "הכרחי";
+$lang['Maximum photo height'] = "גובה מקסימלי לתמונה";
+$lang['Maximum height must be a number superior to 50'] = "הגובהה המקסימלי חייב להיות מעל 50";
+$lang['Maximum photo width'] = "רוחב  מקסימלי לתמונה";
+$lang['Maximum width must be a number superior to 50'] = "הרוחב המקסימלי חייב להיות מעל 50";
+$lang['display a calendar by creation date'] = "הצג לוח שנה לפי תאריך יצירה";
+$lang['display all photos in all sub-albums'] = "הצג את כל הפריטים בכל הקטגוריות ובכל התת קטגוריות";
+$lang['return to normal view mode'] = "חזור לתצוגה רגילה";
+$lang['display a calendar by posted date'] = "הצג לוח שנה לפי תאריך פרסום";
+$lang['month'][10] = "אוקטובר";
+$lang['month'][11] = "נובמבר";
+$lang['month'][12] = "דצמבר";
+$lang['month'][1] = "ינואר";
+$lang['month'][2] = "פברואר";
+$lang['month'][3] = "מרץ";
+$lang['month'][4] = "אפריל";
+$lang['month'][5] = "מאי";
+$lang['month'][6] = "יוני";
+$lang['month'][7] = "יולי";
+$lang['month'][8] = "אוגוסט";
+$lang['month'][9] = "ספטמבר";
+$lang['Most visited'] = "הכי נצפה";
+$lang['display most visited photos'] = "הצג את התמונות הנצפות ביותר";
+$lang['Unknown identifier'] = 'מזהה לא ידוע';
+$lang['New password'] = "סיסמה חדשה";
+$lang['Rate this photo'] = "דרג תמונה זאת";
+$lang['Next'] = "הבא";
+$lang['no rate'] = "לא דורג";
+$lang['Photos posted within the last %d day.'] = "פריטים שנוספו ב %d ימים האחרונים.";
+$lang['Photos posted within the last %d days.'] = "פריטים שנוספו ב %d ימים האחרונים.";
+$lang['password updated'] = "הסיסמה עודכנה";
+$lang['Recent period must be a positive integer value'] = 'התמונות האחרונות חייב להיות מספר שלם חיובי';
+$lang['photo'] = "תמונה";
+$lang['Click on the photo to see it in high definition'] = "לחץ על הצמונה על מנת לראות אותה באיכות גבוהה";
+$lang['Show file metadata'] = "הראה את המידע על הקובץ";
+$lang['Powered by'] = "נוצר על ידי";
+$lang['Preferences'] = "העדפות";
+$lang['Previous'] = "קודם";
+$lang['Random photos'] = "תמונה אקראית";
+$lang['display a set of random photos'] = "הראה מספר תמונות אקראיות";
+$lang['Recent albums'] = "הקטגוריות האחרונות";
+$lang['display recently updated albums'] = "הראה את הקטגוריות שעודכנו לאחרונה";
+$lang['Recent period'] = "בתקופה האחרונה";
+$lang['Recent photos'] = "תמונות אחרונות";
+$lang['display most recent photos'] = "הראה את התמונות הכי חדשות";
+$lang['Redirection...'] = "מעביר...";
+$lang['Please, enter a login'] = "הכנס שם משתמש";
+$lang['login mustn\'t end with a space character'] = "שם משתמש לא יכול להיגמר ברווח";
+$lang['login mustn\'t start with a space character'] = "שם משתמש לא יכול להתחיל עם רווח";
+$lang['this login is already used'] = "השם משתמש הזה קיים כבר";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = "דואר אלקטרוני חייב להיות כמו adir@biton.com (לדוגמה : adir@gmail.com)";
+$lang['Auto login'] = "התחברות אוטומטית";
+$lang['remove this tag from the list'] = "מחק את התווית הזאת מהרשימה";
+$lang['representative'] = "נבחר";
+$lang['Search for Author'] = "חפש את המחבר";
+$lang['Search in albums'] = "חפש בקטגוריה";
+$lang['Search by date'] = "חפש לפי תאריך";
+$lang['Date'] = "תאריך";
+$lang['End-Date'] = "תאריך סיום";
+$lang['Kind of date'] = "סוג של תאריך";
+$lang['Search for words'] = "חפש את המילה";
+$lang['Search for all terms'] = "חפש את כל התנאים";
+$lang['Search for any term'] = "חפש לפי כל תנאי";
+$lang['Empty query. No criteria has been entered.'] = "שאילתה ריקה. לא הוכנסו קריטריונים.";
+$lang['Search results'] = "חפש תוצאות";
+$lang['Search in sub-albums'] = "חפש בתת קטגוריות";
+$lang['searched words : %s'] = "חפש מילה : %s";
+$lang['Contact'] = "צור קשר";
+$lang['set as album representative'] = "סמן כמייצג הקטגוריה";
+$lang['Show number of comments'] = "הראה מספר תגובות";
+$lang['Show number of hits'] = "הראה מספר לחיצות";
+$lang['slideshow'] = "מצגת";
+$lang['stop the slideshow'] = "עצור את המצגת";
+$lang['Specials'] = "מיוחדים";
+$lang['SQL queries in'] = "שאילתות SQL";
+$lang['display only recently posted photos'] = "הראה רק תמונות שפורסמו לאחרונה";
+$lang['return to the display of all photos'] = "חזור להצגת כל התמונות";
+$lang['the beginning'] = "ההתחלה";
+$lang['Thumbnails'] = "תמונות ממוזערות";
+$lang['Menu'] = "תפריט";
+$lang['A comment on your site'] = "תגובה באתר שלך";
+$lang['today'] = "היום";
+$lang['Update your rating'] = "עדכן את הדירוג שלך";
+$lang['the username must be given'] = "דרוש שם משתמש";
+$lang['useful when password forgotten'] = "שימושי במקרה ששכחת את הסיסמה";
+$lang['Quick search'] = "חיפוש מהיר";
+$lang['Connected user: %s'] = "משתמש מחובר: %s";
+$lang['IP: %s'] = "אי פי: %s";
+$lang['Browser: %s'] = "דפדפן: %s";
+$lang['Author: %s'] = "מחבר: %s";
+$lang['Comment: %s'] = "תגובה: %s";
+$lang['Comment by %s'] = "התגובה נרשמה על ידי %s";
+$lang['User: %s'] = "שם משתמש: %s";
+$lang['Email: %s'] = "דואר אלקטרוני: %s";
+$lang['Admin: %s'] = "מנהל: %s";
+$lang['Registration of %s'] = "רישום של %s";
+$lang['Album: %s'] = "קטגוריה: %s";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'מצב לא טוב עבור המשתמש "האורח", השתמש במצב ברירת מחדל. עדכן בבקשה את מנהל האתר.';
+$lang['this email address is already in use'] = "משתמש אחר כבר משתמש בדואר האלקטרוני הזה";
+$lang['Album results for'] = "תוצאות עבור הקטגוריה";
+$lang['Tag results for'] = "תוצאות עבור התוויות";
+$lang['from %s to %s'] = "מ %s עד %s";
+$lang['Play of slideshow'] = "הפעל מצגת";
+$lang['Pause of slideshow'] = "עצור מצגת";
+$lang['Repeat the slideshow'] = "חזור על אותם שקופיות";
+$lang['Not repeat the slideshow'] = "אל תחזור על אותם שקופיות";
+$lang['Reduce diaporama speed'] = "הורד את מהירות הצגת המצגת";
+$lang['Accelerate diaporama speed'] = "העלה את מהירות הצגת המצגת";
+$lang['Submit'] = "שלח";
+$lang['Yes'] = "כן";
+$lang['No'] = "לא";
+$lang['%d photo'] = "%d תמונה";
+$lang['%d photos'] = "%d תמונות";
+$lang['%d photo is also linked to current tags'] = "%d התמונוה כבר מקושרת לתווית זאת";
+$lang['%d photos are also linked to current tags'] = "%d התמונה כבר מקושרת לתוויות אלה";
+$lang['display photos linked to this tag'] = "הראה תמונות המקושרות לתווית זאת בלבד";
+$lang['photos posted during the last %d days'] = "תמונות שפורסמו במשך %d ימים אחרונים";
+$lang['Piwigo Help'] = "עזרת Piwigo";
+$lang['Rank'] = "דירוג";
+$lang['group by letters'] = "קבוצה לפי אותיות";
+$lang['letters'] = "אותיות";
+$lang['show tag cloud'] = "הצג ענן תוויות";
+$lang['cloud'] = "ענן";
+$lang['Reset to default values'] = "אפס לערך ברירת מחדל";
+$lang['delete all photos from your favorites'] = "מחק את כל התמונות מהמועדפים שלך";
+$lang['Sent by'] = "נשלח על ידי";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "הדפדפן שלך חוסם קוקיז או לא תומך בהם. אתה חייב להפעיל את ה קוקיז בשביל להתחבר.";
+$lang['Edit a comment'] = "ערוך תגובה";
+$lang['Are you sure?'] = "האם אתה בטוח?";
+$lang['(!) This comment requires validation'] = '(!) תגובה זאת דורשת אישור מנהל';
+$lang['Welcome'] = 'ברוך הבא';
+$lang['Welcome to your Piwigo photo gallery!'] = 'ברוך הבא לגלריית ה Piwigo שלך!';
+$lang['... or browse your empty gallery'] = '... או גלוש בגלריה הריקה שלך';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... אן התעלם מהודעה זאת, אני ימצא את דרכי לבד';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'שלום %s, גלרית הPiwigo שלך ריקה!';
+$lang['I want to add photos'] = 'אני רוצה להוסיף תמונות';
+$lang['Manage this user comment: %s'] = 'נהל את תגובות משתמש זה: %s';
+$lang['Email address is missing. Please specify an email address.'] = "חסר כתובת דואר אלקטרוני. הכנס בבקשה כתובת דואר אלקטרוני זמינה.";
+$lang['This author modified following comment:'] = 'מחבר זה, ערך את התגובה שלו:';
+$lang['This author removed the comment with id %d'] = 'מחבר זה מחק את התגובה עם השם משתמש %d';
+$lang['html tags are not allowed in login'] = 'לא ניתן להשתמש בתגי html בהתחברות';
+$lang['The number of photos per page must be a not null scalar'] = 'מספר התמונות בד חייב להיות גדול מאפס';
+$lang['Number of photos per page'] = 'מספר תמונות בדף';
+
+$lang['Change my password'] = 'שנה את הסיסמה שלי';
+$lang['Check your email for the confirmation link'] = 'קישור אימות ממתין אצלך באימייל';
+$lang['Desktop'] = 'שולחן העבודה';
+$lang['Edit'] = 'ערוך';
+$lang['Enter your new password below.'] = 'הכנס את סיסמתך החדשה מתחת';
+$lang['Hello %s,'] = 'שלום %s,';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'אם זה טעות, התעלם ממייל זה ושום דבר לא יקרא';
+$lang['%d rate'] = '%d דירוג';
+$lang['%d rates'] = '%d דירוגים';
+$lang['2small'] = 'XXS - זעיר';
+$lang['Bad request'] = 'בקשה לא טובה';
+$lang['Date created, new &rarr; old'] = 'תאריך יצירה, חדש &rare; ישן';
+$lang['Date created, old &rarr; new'] = 'תאריך יצירה, ישן &rare; חדש';
+$lang['Date posted, new &rarr; old'] = 'תאריך פרסום, חדש &rare; ישן';
+$lang['Date posted, old &rarr; new'] = 'תאריך פרסום, ישן &rare; חדש';
+$lang['EXIF Metadata'] = 'מטה EXIF';
+$lang['File name, A &rarr; Z'] = 'שם הקובץ, א &rarr; ת';
+$lang['File name, Z &rarr; A'] = 'שם הקובץ, ת &rarr; א';
+$lang['Forbidden'] = 'אסור';
+$lang['Here are your connection settings'] = 'כאן נמצאים הגדרות ההתחברות שלך';
+$lang['IPTC Metadata'] = 'מטה IPTC';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'אם אתה חושב שקיבלת את האימייל הזה בטעות, בבקשה צור קשר איתנו ב %s';
+$lang['Invalid key'] = 'מקש שגוי';
+$lang['Invalid username or email'] = 'שם משתמש או אימייל שגויים';
+$lang['Manual sort order'] = 'מיון ידני';
+$lang['Mobile'] = 'סלולרי';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'מספרי זיהוי, 1 %rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'מספרי זיהוי, 9 %rarr; 1';
+$lang['Original'] = 'מקורי';
+$lang['Page not found'] = 'הדף לא נמצא';
+$lang['Password Reset'] = 'אפס סיסמה';
+$lang['Password reset is not allowed for this user'] = 'משתמש זה לא רשאי לאפס סיסמה';
+$lang['Password: %s'] = 'סיסמה: %s';
+$lang['Permalink for album not found'] = 'לא נמצא קישור לאלבום';
+$lang['Photo sizes'] = 'גודל התמונה';
+$lang['Photo title, A &rarr; Z'] = 'כותרת התמונה, א &rarr; ת';
+$lang['Photo title, Z &rarr; A'] = 'כותרת התמונה, א &rarr; ת';
+$lang['Piwigo encountered a non recoverable error'] = 'Piiwigo נתקל בשגיאה שלא נתנת לתיקון';
+$lang['Please enter your username or email address.'] = 'הכנס בבקשה את שם המשתמש או האימייל שלך';
+$lang['Rating score, high &rarr; low'] = 'ציון דירוג, גבוהה %rarr; נמוך';
+$lang['Rating score, low &rarr; high'] = 'ציון דירוג, נמוך %rarr; גבוהה';
+$lang['Rating score'] = 'ציון דירוג';
+$lang['Requested album does not exist'] = 'האלבום המבוקש לא קיים';
+$lang['Requested tag does not exist'] = 'תיוג מבוקש לא קיים';
+$lang['Return to home page'] = 'חזור לדף הבית';
+$lang['Send my connection settings by email'] = 'שלח את פירטי ההתחברות שלי באימייל';
+$lang['Show latest comments first'] = 'הראה את התגובה החדשה בהתחלה';
+$lang['Show oldest comments first'] = 'הראה את התגובה הישנה בהתחלה';
+$lang['Someone requested that the password be reset for the following user account:'] = 'מישהו ביקש לאפס סיסמה למשתמש:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'נרשמת בהצלחה, בקרוב תקבל אימייל עם פרטי ההתחברות שלך, ברוך הבא!';
+$lang['Thank you for registering at %s!'] = 'תודה לך על רישומך אל %s!';
+$lang['The passwords do not match'] = 'הסיסמה לא תואמת';
+$lang['To reset your password, visit the following address:'] = 'כנס לכתובת הבאה, כדי לאפס את סיסמתך';
+$lang['User "%s" has no email address, password reset is not possible'] = 'למשתמש ״%s" אין כתובת אימייל, שיחזור סיסמה לא אפשרי';
+$lang['Username "%s" on gallery %s'] = 'שם משתמש ״%s" בגלריה %s';
+$lang['Username modification'] = 'שינוי שם משתמש';
+$lang['Username or email'] = 'שם משתמש או אימייל';
+$lang['Username: %s'] = 'שם משתמש: %s';
+$lang['View in'] = 'צפייה ב';
+$lang['Visits, high &rarr; low'] = 'מבקרים, גבוהה %rarr; נמוך';
+$lang['Visits, low &rarr; high'] = 'מבקרים, נמוך %rarr; גבוהה';
+$lang['You will receive a link to create a new password via email.'] = 'אתה תקבל לינק אל האימייל שלך כדי ליצור סיסמה חדשה';
+$lang['Your password has been reset'] = 'הסיסמה שלך אופסה';
+$lang['Your username has been successfully changed to : %s'] = 'שם המשתמש שלך שונה בהצלחה אל : %s';
+$lang['large'] = 'L - גדול';
+$lang['medium'] = 'M - בינוני';
+$lang['small'] = 'S - קטן';
+$lang['square'] = 'מרובע';
+$lang['thumb'] = 'תמונה ממוזערת';
+$lang['xlarge'] = 'XL - גדול מאוד';
+$lang['xsmall'] = 'XS - קטן מאוד';
+$lang['xxlarge'] = 'XXL - ענק';
+$lang['Your website URL is invalid'] = 'כתובת האתר שלך לא טובה';
+$lang['Email address is mandatory'] = 'שדה דואר אלקטרוני חובה';
+$lang['Username is mandatory'] = 'שדה שם משתמש חובה';
+$lang['Website'] = 'אתר';
+$lang['mandatory'] = 'הכרחי';
+$lang['Password is missing. Please enter the password.'] = 'סיסמה חסרה, נה להזין סיסמה..';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'אישור סיסמה חסר, נה להזיר אישור סיסמה..';
+?>
Index: /tags/2.6.0RC1/language/he_IL/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/he_IL/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/help/cat_move.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>הזזת אלבומים וירטואליים/h2>
+
+<p>Oרק לאלבומים וירטואליים יכולים לקבל אלבום הורה חדש.</p>
+
+<h3>להזזת אלבומים וירטואליים</h3>
+
+<>Sבחר אלבום וירטואלי אחד או יותר שברצונך להזיז
+אם הרשימה ריקה המשמעות היא שעדיין לא יצרתיעדיין אלבום.</p>
+
+<h3>אלבום הורה חדש</h3>
+<p>בחר את אלבום ההורה החדש (פיזי או וירטואלי).
+אם לא תבחר תבנית, האלבומים הוירטואליים הנבחרים יועברו למקור. לא ניתן להזיז את האלבום לתוך עצמו או לאחד מילדיו.
+</p>
Index: /tags/2.6.0RC1/language/he_IL/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/he_IL/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>מספר דרכים להוסיף תמונות לגלריה שלך:</p>
+
+<ul>
+  <li><strong>העלאה ישירה</strong> דרך דפדפן האינטרנט שלך היא הדרך המהירה והפשוטה ביותר. זה תלוי ביכולות הדפדפן והשרת שלך. אם אתה צריך להעלות כמות גדולה של תמונות, תמונות באיכות גבוהה או שאתה נתקל בבעיה כלשהי, הדרכים הבאות בידיוק בשבילך!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">עבור להעלאה ישירה </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> זו תוכנה בשולחן העבודה שלך, להתקנה במחשבך האישי. גרור &amp; ושחרר תמונות לתוך חלון הpLoader, הלחץ על <em>"Upload to Piwigo"</em> ותן לpLoader לעשות את העבודה. אתה יכול למצוא תוכנות אחרות כמו <strong>WinToPiwigo</strong> או <strong>Digikam</strong> לייצא לגלרית Piwigo שלך.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">עבור אל pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>העברה דרך FTP</strong> זו הדרך המומלצת ביותר להעלות כמות גדולה של תמונות עם מספר מינימלי של מהלכים. עבור על המדריך הכנת התמונות שלך. שיטת ה-FTP מאפשרות שליטה מדויקת
+  בארגון הפיזי של התמונות בשרת שלך.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">עבור אל FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/he_IL/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/he_IL/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "התקנה";
+$lang['Basic configuration'] = "הגדרות בסיסיות";
+$lang['Default gallery language'] = "שפת גלריה ברירת מחדל";
+$lang['Database configuration'] = "הגדרות בסיס נתונים";
+$lang['Admin configuration'] = "הגדרות מנהל";
+$lang['Start Install'] = "התחל התקנה";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = "יוצג בפני המבקרים. נחוץ בשביל מנהל האתר";
+$lang['Connection to server succeed, but it was impossible to connect to database'] = "התחבר לשרת בהצלחה, אך לא הצליח להתחבר לבסיס נתונים";
+$lang['Can\'t connect to server'] = "לא מצליח להתחבר לשרת";
+$lang['Host'] = "שרת מארח";
+$lang['User'] = "משתמש";
+$lang['user login given by your host provider'] = "המשתמש שניתן לך על ידי השרת המארח שלך";
+$lang['user password given by your host provider'] = "הסיסמה שניתנה לך על ידיד השרת המארח שלך";
+$lang['Database name'] = "שם בסיס הנתונים";
+$lang['also given by your host provider'] = "גם ניתן על ידי השרת המארח שלך";
+$lang['Database table prefix'] = "קידומת טבלאות מסד הנתונים";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "שם טבלאות בסיס הנתונים יוצגו לאחר קידומת זאת (מאפשר לך לנהל את טבלאות בסיס הנתונים שלך טוב יותר)";
+$lang['enter a login for webmaster'] = "הזן פרטי התחברות עבור מהל האתר";
+$lang['webmaster login can\'t contain characters \' or "'] = "משתמש מנהל האתר לא יכול להחיל את התווים \' או מרחאות";
+$lang['please enter your password again'] = "הכנס בבקשה את הסיסמה שוב";
+$lang['Keep it confidential, it enables you to access administration panel'] = "שמור זאת בסוד, זה מאפשר לך להיכנס לפאנל ניהול האתר";
+$lang['Password [confirm]'] = "סיסמה [אושרה]";
+$lang['verification'] = "אימות";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "צריך עזרה? היעזר ב <a href=\"%s\">הפורום של Piwigo</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "אורחים יוכלו להשתמש בדואר האלקטרוני הזה כדי ליצור קשר עם מנהל האתר";
+$lang['PHP 5 is required'] = "נדרש גירסת PHP 5";
+$lang['It appears your webhost is currently running PHP %s.'] = "שרת המארח שלך רץ על גירסת PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo תנסה להחליף את התצורה שלך ל PHP 5 על ידי יצירת או שינוי קובץ .htaccess";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "אתה יכול לשנות את התצורה שלך לבד ולהריץ את Piwigo לאחר מכן.";
+$lang['Try to configure PHP 5'] = "נסה להגדיר PHP 5";
+$lang['Sorry!'] = "סליחה!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo לא יכולה להגדיר את PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "אתה צריך לפנות לתמיכת השרת המאחר שלך ולראות איך אתה יכול להחליף ל PHP 5 לבד.";
+$lang['Hope to see you back soon.'] = "מקווה לראות אותך שוב בקרוב.";
+$lang['Congratulations, Piwigo installation is completed'] = 'מזל טוב,התקנת Piwigo הושלמה';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'הפתרון החלופי הוא להעתיק את הטקסט בתיבה מעל ולהדביק אותו בקובץ "local/config/database.inc.php" (אזהרה : database.inc.php חייב להחיל רק את התווים שבתיבת טקסט, לא לחזור על שורות או לעשות רווח)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'יצירת קובץ config local/config/database.inc.php ניכשל.';
+$lang['Download the config file'] = 'הורד את קובץ config';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'אתה יכול להוריד את קובץ config ולהעלות אותו אל local/config בתיקיית ההתקנה שלך.';
+$lang['Just another Piwigo gallery'] = 'עוד גלריה מבית Piwigo';
+$lang['Welcome to my photo gallery'] = 'ברוכים הבאים לגלרית התמונות שלי';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'אל תהסס להתייעץ בפורומים שלנו בכל נושא: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'ברוך הבא לגלרית piwigo החדשה שלך';
+?>
Index: /tags/2.6.0RC1/language/he_IL/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/he_IL/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+עברית [IL]
Index: /tags/2.6.0RC1/language/he_IL/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/he_IL/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/he_IL/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = "שדרג";
+$lang['Upgrade from version %s to %s'] = "שדרג מגירסה %s ל %s";
+$lang['Statistics'] = "סטטיסטיקה";
+$lang['total upgrade time'] = "זמן שידרוג כולל";
+$lang['total SQL time'] = "זמןSQLכולל";
+$lang['SQL queries'] = "SQLשאילתות";
+$lang['Upgrade informations'] = "מידע לשידרוג";
+$lang['User permissions and group permissions have been erased'] = 'הרשאות משתמשים וקבוצות נמחקו';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'רק מנהל יכול להריץ שדרוג : בבקשה התחבר למטה';
+$lang['You do not have access rights to run upgrade'] = 'אין לך גישה להפעיל שדרוג';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'דף זה מציע לשדרג את מסד הנתונים מגרסת Piwigo הישנה לגרסה החדשה. עוזר השדרוג חושב שאתה מפעיל כרגע <strong>שחרור %s</strong>.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'רק תמונות ממוזערות, ודואר אלקטרוני של מנהל האתר נשמרו מהגירסה הקודמת';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'בצע בדיקת תחזוקה ב[ ניהול> כלים> תחזוקה] אם נתקלת בעיה כלשהי.';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'כאמצעי זהירות הערכות הבאות בוטלו, בדוק עדכונם לפני הפעלתם המחודשת:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'בתוך <i>%s</i>, לפני <b>?></b>, הכנס:';
+$lang['All sub-albums of private albums become private'] = 'כל אלבומי משנה של אלבומים פרטיים יהפכו לפרטים';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'התוספים הבאים בוטלו כאמצעי זהירות, בדוק אפשרות לעדכונם טרם הפעלתם המחודשת:';
+?>
Index: /tags/2.6.0RC1/language/hr_HR/about.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/about.html	(revision 25596)
@@ -0,0 +1,13 @@
+  <p>Ova galerija slika koristi Piwigo.</p>
+
+<p>Piwigo je sustav za izradu web galerija slika, stvaran aktivnom zajednicom
+korisnika i programera. Proširenja čine Piwigo lako prilagodljivim. Piwigo je besplatan i opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Posjetite Piwigo web mjesto</a></p>
+
+Hrvatski prijevod Piwigo-a održavaju (abecedno složeni):
+
+           nantic <http://piwigo.org/forum/profile.php?id=2561>
+
+
+          .... zahvaljujemo 
Index: /tags/2.6.0RC1/language/hr_HR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/admin.lang.php	(revision 25596)
@@ -0,0 +1,796 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d poveznica';
+$lang['%d associations'] = '%d poveznica';
+$lang['%d album including'] = '%d skupina obuhvata ';
+$lang['%d albums including'] = '%d skupine obuhvata ';
+$lang['%d physical'] = '%d stvarna';
+$lang['%d physicals'] = '%d stvarnih';
+$lang[' and %d virtual'] = ' i %d nestvrana';
+$lang[' and %d virtuals'] = ' i %d nestvarnih';
+$lang['%d album moved'] = '%d skupina premještena';
+$lang['%d albums moved'] = '%d skupina premješteno';
+$lang['%d group'] = '%d grupa';
+$lang['%d groups'] = '%d grupa';
+$lang['%d member'] = '%d član';
+$lang['%d members'] = '%d članova';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tagova';
+$lang['%d user comment rejected'] = '%d korisnički komentar odbačen';
+$lang['%d user comments rejected'] = '%d korisničkih komentara odbačeno';
+$lang['%d user comment validated'] = '%d korisnički kometar odobren';
+$lang['%d user comments validated'] = '%d korisničkih komentara odobreno';
+$lang['%d user deleted'] = '%d korisnik izbrisan';
+$lang['%d users deleted'] = '%d korisnika izbrisano';
+$lang['%d user'] = '%d korisnik';
+$lang['%d users'] = '%d korisnika';
+$lang['%d waiting for validation'] = '%d čekanje na ovjeri';
+$lang['Actions'] = 'Postupci';
+$lang['Activate'] = 'Uključi';
+$lang['Add/delete a permalink'] = 'Dodaj/izbriši stalnu poveznicu';
+$lang['Add a tag'] = 'Dodaj';
+$lang['Add a user'] = 'Dodaj korisnika';
+$lang['Add group'] = 'Dodaj grupu';
+$lang['Add'] = 'Dodaj';
+$lang['Allow user registration'] = 'Odobri upis korisnika';
+$lang['Apply to sub-albums'] = 'Primjeni na podskupine';
+$lang['Associated'] = 'Povezanost';
+$lang['Caddie management'] = 'Uprava ladice';
+$lang['Caddie'] = 'Ladica';
+$lang['Albums authorized thanks to group associations'] = 'Skupine ovjerene zahvaljujući grupnoj povezanosti';
+$lang['Album manual order was saved'] = 'Stvarni redoslijed skupina je pohranjen';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Provjera nadogradnje neuspješna iz nepoznatog razloga.';
+$lang['Check for upgrade'] = 'Provjera nadogradnje';
+$lang['Comments for all'] = 'Komentari za sve';
+$lang['Current name'] = 'Trenutni naziv';
+$lang['Database'] = 'Baza podataka';
+$lang['Deactivate'] = 'Isključi';
+$lang['Delete Representant'] = 'Izbriši Predstavnika';
+$lang['Delete selected tags'] = 'Izbriši odabrane tagove';
+$lang['Delete selected users'] = 'Izbriši odabrane korisnike';
+$lang['Deletions'] = 'Brisanja';
+$lang['Deny selected groups'] = 'Zabrani odabrane grupe';
+$lang['Deny selected users'] = 'Zabrani odabrane korisnike';
+$lang['Description'] = 'Opis';
+$lang['Display options'] = 'Mogućnosti prikaza';
+$lang['Dissociated'] = 'Odvojeno';
+$lang['Does not represent'] = 'Ne predstavlja';
+$lang['Edit selected tags'] = 'Uredi odabrane tagove';
+$lang['Edit tags'] = 'Uredi tagove';
+$lang['Email admins when a new user registers'] = 'E-mail upraviteljima pri upisu novih korisnika';
+$lang['Email admins when a valid comment is entered'] = 'E-mail upraviteljima pri upisu novih komentara';
+$lang['Email admins when a comment requires validation'] = 'Email upraviteljima kada komentar treba ovjeru';
+$lang['Environment'] = 'Okruženje';
+$lang['Form'] = 'Oblik';
+$lang['Gallery title'] = 'Naziv galerije';
+$lang['Grant selected groups'] = 'Ovlasti odabrane grupe';
+$lang['Grant selected users'] = 'Ovlasti odabrane korisnike';
+$lang['Group name'] = 'Naziv grupe';
+$lang['Groups'] = 'Grupa';
+$lang['Guests'] = 'Gostiju';
+$lang['History'] = 'Povijest';
+$lang['Informations'] = 'Obavijesti';
+$lang['Install'] = 'Ugradi';
+$lang['Link all album photos to a new album'] = 'Poveži sve stavke skupine sa novom skupinom';
+$lang['Link all album photos to some existing albums'] = 'Poveži sve stavke skupine sa nekom postojećom skupinom';
+$lang['Linked albums'] = 'Povezane skupine';
+$lang['Lock gallery'] = 'Zaključaj galeriju';
+$lang['Maintenance'] = 'Održavanje';
+$lang['Edit album permissions'] = 'Upravljanje ovlastima za skupinu';
+$lang['Manage permissions for group "%s"'] = 'Upravljanje ovlastima za grupu "%s"';
+$lang['Manage permissions for user "%s"'] = 'Upravljanje ovlastima za korisnika "%s"';
+$lang['Manage tags'] = 'Upravljanje tagovima';
+$lang['Members'] = 'Članovi';
+$lang['Metadata synchronized from file'] = 'Usklađivanje meta podataka iz zapisa';
+$lang['Move albums'] = 'Premjesti skupine';
+$lang['Move'] = 'Premjesti';
+$lang['Name'] = 'Naziv';
+$lang['New name'] = 'Novi naziv';
+$lang['New parent album'] = 'Nova nadređena skupina';
+$lang['New tag'] = 'Novi tag';
+$lang['Number of comments per page'] = 'Broj komentara po stranici';
+$lang['Number of rates'] = 'Broj ocjena';
+$lang['Number of thumbnails to create'] = 'broj poveznih sličica za izradu';
+$lang['Only private albums are listed'] = 'Samo osobne skupine su ispisane';
+$lang['Operating system'] = 'Operativni sustav';
+$lang['Options'] = 'Mogućnosti';
+$lang['Other private albums'] = 'Ostale osobne skupine';
+$lang['Page banner'] = 'Baner stranice';
+$lang['Parent album'] = 'Nadređena skupina';
+$lang['Permalink'] = 'Stalna poveznica';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Stalna poveznica %s je prethodno korištena od skupine %s. Prvo je izbrišite iz starih zapisa';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Stalna poveznica mora biti sastavljena od znakova a-z, A-Z, 0-9, "-", "_" ili "/". Ne smije biti brojčana vrijednost ili počinjati brojem pa znakom "-"';
+$lang['Permalink %s is already used by album %s'] = 'Stalnu poveznicu %s već koristi skupina %s';
+$lang['Permalink history'] = 'Povijest stalnih poveznica';
+$lang['Permalinks'] = 'Stalne poveznice';
+$lang['Permission denied'] = 'Dozvola uskraćena';
+$lang['Permission granted thanks to a group'] = 'Dozvola odobrena zahvaljujući grupi';
+$lang['Permission granted'] = 'Dozvola odobrena';
+$lang['Photo informations updated'] = 'Podaci o slikama obnovljeni';
+$lang['Plugins'] = 'Dodaci';
+$lang['Position'] = 'Položaj';
+$lang['Preferences'] = 'Postavke';
+$lang['Properties'] = 'Svojstva';
+$lang['Random photo'] = 'Slika slučajnog odabira';
+$lang['Rate date'] = 'Nadnevak ocjene';
+$lang['Rating by guests'] = 'Ocjene gostiju';
+$lang['Rating'] = 'Ocjenjivanje';
+$lang['Reject'] = 'Odbaci';
+$lang['Representant'] = 'Predstavnik';
+$lang['Representation of albums'] = 'Predstavljanje skupina';
+$lang['Representative'] = 'Predstavljeno';
+$lang['Represents'] = 'Predstavlja';
+$lang['Save order'] = 'Redoslijed pohrane';
+$lang['Save to permalink history'] = 'Pohrani u povjest stalnih poveznica';
+$lang['Select at least one album'] = 'Odaberite najmanje jednu skupinu';
+$lang['Select at least one photo'] = 'Odaberite najmanje jednu sliku';
+$lang['Select at least one user'] = 'Odaberite najmanje jednog korisnika';
+$lang['Show info'] = 'Prikaz podataka';
+$lang['Site manager'] = 'Upravnik galerije';
+$lang['Status'] = 'Stanje';
+$lang['Statistics'] = 'Statistika';
+$lang['Storage album'] = 'Skupina pohrane';
+$lang['Sum of rates'] = 'Zbroj ocjena';
+$lang['Tag "%s" already exists'] = 'Tag "%s" već postoji';
+$lang['Tag "%s" was added'] = 'Tag "%s" dodan';
+$lang['Tag selection'] = 'Odabir tagova';
+$lang['The %d following tags were deleted'] = 'Slijedeći %d tagovi su izbrisani';
+$lang['Unable to check for upgrade.'] = 'Ne mogu provjeriti za nadogradnju.';
+$lang['Uninstall'] = 'Ukloni';
+$lang['Use the default photo sort order (defined in the configuration file)']='Koristi pretpostavljeni redoslijed slaganja slika (određeno u zapisu postave)';
+$lang['User comments validation'] = 'Ovjera korisničkih komentara';
+$lang['Users'] = 'Korisnici';
+$lang['Validate'] = 'Ovjeri';
+$lang['Validation'] = 'Ovjera';
+$lang['Version'] = 'Inačica';
+$lang['Virtual albums to move'] = 'Nestvarne skupine za premještaj';
+$lang['Virtual album name'] = 'Naziv nestvarne skupine';
+$lang['Webmaster cannot be deleted'] = 'Webmaster ne može biti izbrisan';
+$lang['You are running on development sources, no check possible.'] = 'Vi koristite razvojni izvorni kod, provjera nemoguća.';
+$lang['You cannot delete your account'] = "Ne možete izbrisati svoj račun";
+$lang['You cannot move an album in its own sub album'] = 'Ne možete premjestiti skupinu u njenu vlastitu podskupinu';
+$lang['You need to confirm deletion'] = 'trebate potvrditi brisanje';
+$lang['Associate to album'] = 'poveži sa skupinom';
+$lang['associate to group'] = 'poveži sa grupom';
+$lang['Authorized'] = 'Ovlašteno';
+$lang['Add a virtual album'] = 'Dodaj nestvarnu skupinu';
+$lang['Authorize users to add comments on selected albums'] = 'Ovlastite korisnike za davanje komentara u odabranim skupinama';
+$lang['The name of an album must not be empty'] = 'Naziv skupine ne bi trebao biti prazan';
+$lang['Lock albums'] = 'Zaključaj skupine';
+$lang['Private'] = 'Osobna skupina';
+$lang['Public'] = 'Javna skupina';
+$lang['Find a new representant by random'] = 'Izbor novog predstavnika slučajnim odabirom';
+$lang['Public / Private'] = 'Javno / Osobno';
+$lang['Manage authorizations for selected albums'] = 'Upravljanje ovlastima za odabrane skupine';
+$lang['Virtual album added'] = 'Nestvarna skupina dodana';
+$lang['Virtual album deleted'] = 'Nestvarna skupina izbrisana';
+$lang['Access type'] = 'Vrsta pristupa';
+$lang['Information data registered in database'] = 'Podaci upisani u bazu podataka';
+$lang['Default display'] = 'Pretpostavljeni prikaz';
+$lang['The gallery URL is not valid.'] = 'URL galerije nije valjan.';
+$lang['Main'] = 'Glavno';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Broj komentara po stranici mora biti između 5 i 50 uključivo.';
+$lang['Configuration'] = 'Postavljanje';
+$lang['confirm'] = 'potvrdi';
+$lang['Date'] = 'Nadnevak';
+$lang['delete album'] = 'izbriši skupinu';
+$lang['Dissociate from album'] = 'odspoji od skupine';
+$lang['dissociate from group'] = 'odspoji od grupe';
+$lang['Album updated successfully'] = 'Podaci skupine uspješno obnovljeni.';
+$lang['photos per page'] = 'stavaka po stranici';
+$lang['High definition enabled'] = 'Visoka razlučljivost omogućena';
+$lang['File'] = 'Zapis';
+$lang['first photo added on %s'] = 'prva stavka dodana %s';
+$lang['Forbidden'] = 'Zabranjeno';
+$lang['global mode'] = 'sveopći način';
+$lang['group "%s" added'] = 'grupa "%s" dodana';
+$lang['group "%s" deleted'] = 'grupa "%s" izbrisana';
+$lang['group "%s" updated'] = 'grupa "%s" obnovljena';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Naziv grupe ne može sadržavati  " ili \' ili biti prazan.';
+$lang['This name is already used by another group.'] = 'Ovaj naziv već koristi druga grupa.';
+$lang['High definition'] = 'Visoka razlučljivost';
+$lang['jump to album'] = 'skok u skupina';
+$lang['jump to photo'] = 'skok na sliku';
+$lang['leave'] = 'ostavi';
+$lang['Lock'] = 'Zaključaj';
+$lang['Locked'] = 'Zaključanp';
+$lang['manage album photos'] = 'upravljanje stavkama skupine';
+$lang['manage sub-albums'] = 'upravljanje podskupinama';
+$lang['Manage'] = 'Uprava';
+$lang['maximum height'] = 'najveća visina';
+$lang['maximum width'] = 'najveća širina';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Predviđeno vrijeme za popis korisnika za slanje poruka je ograničeno. Ostali korisnici nisu izlistani.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Vrijeme za slanje poruke je ograničeno. Ostale poruke su preskočene.';
+$lang['To send ?'] = 'Poslati ?';
+$lang['Last send'] = 'Zadnje poslano';
+$lang['Email'] = 'e-mail';
+$lang['User'] = 'Korisnik';
+$lang['See you soon,'] = 'Vidimo se uskoro,';
+$lang['Go to'] = 'Idi na ';
+$lang['Hello'] = 'Pozdrav ';
+$lang['New photos were added'] = 'Nove stavke su dodane ';
+$lang['on'] = ' na ';
+$lang['between'] = 'između ';
+$lang['and'] = ' i ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster vas je pretlatio na primanje e-mail obavijesti.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Pretplatili ste se na primanje e-mail obavijesti.';
+$lang['To subscribe'] = 'Pretplata';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Ukoliko ste naišli na probleme ili imate pitanja, molimo pošaljite poruku za ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemi ili pitanja';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster vas je uklonio sa popisa za primanje e-mail obavijesti.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Uklonili ste se sa popisa za primanje e-mail obavijesti.';
+$lang[', click on'] = ', kliknite na ';
+$lang['To unsubscribe'] = 'Za uklanjanje';
+$lang['With blank value, gallery title will be used'] = 'Sa praznim poljem, koristiti će se naziv galerijeg';
+$lang['Notification'] = 'Obavijest';
+$lang['Error when sending email to %s [%s].'] = 'Greška prilikom slanja e-mail poruke za %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Poruka poslana za %s [%s].';
+$lang['%d mail was sent.'] = '%d poruka poslana.';
+$lang['%d mails were sent.'] = '%d poruke poslane.';
+$lang['%d mail was not sent.'] = '%d poruka nije poslane.';
+$lang['%d mails were not sent.'] = '%d poruke nisu poslane.';
+$lang['No mail to send.'] = 'Nema poruke za slanje.';
+$lang['There is no available subscribers to mail.'] = 'Nema dostupnih primatelja za slanje poruka.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Pretplatnici mogu biti izlistani (dostupni) samo ako ima novih stavki za obavijest.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'U svakom slučaju samo webmaster može pristupiti ovoj ploči a nikad upravitelji.';
+$lang['No user to send notifications by mail.'] = 'Nema korisnika za slanje e-mail obavijesti.';
+$lang['New photos added'] = 'Nove stavke dodane';
+$lang['Subscribe to notification by mail'] = 'Pretplatite se za e-mail obavijesti';
+$lang['Unsubscribe from notification by mail'] = 'Uklonite se iz sustava primanja e-mail obavijesti';
+$lang['Parameter'] = 'Stavka';
+$lang['Continue processing treatment'] = 'Nastavi obradu postupka';
+$lang['Complementary mail content'] = 'Cjelokupni sadržaj poruke';
+$lang['Add detailed content'] = 'Dodaj cjeli sadržaj';
+$lang['Send mail as'] = 'Pošalji poruku kao ';
+$lang['Send mail to users'] = 'Pošalji poruku korisnicima';
+$lang['Send'] = 'Pošalji';
+$lang['Options'] = 'Mogućnosti';
+$lang['Subscribed'] = 'Pretplaćen';
+$lang['Subscribe'] = 'Pretplatite se';
+$lang['Parameters'] = 'Stavke';
+$lang['Select recipients'] = 'Odaberite primatelje';
+$lang['Subscribe/unsubscribe users'] = 'Pretplati/poništi pretplatu korosnika';
+$lang['Unsubscribed'] = 'Pretplata poništena';
+$lang['%d parameter was updated.'] = '%d stavka je obnovljena.';
+$lang['%d parameters were updated.'] = '%d stavke su poništene.';
+$lang['%d user was not updated.'] = '%d korisnik nije obnovljen.';
+$lang['%d users were not updated.'] = '%d korisnici nisu obnovljeni.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'User %s [%s] je uklonjen iz popisa pretplatnika.';
+$lang['User %s [%s] was added to the subscription list.'] = 'User %s [%s] je dodan na popis pretplatnika.';
+$lang['%d user was updated.'] = '%d korisnik je obnovljen.';
+$lang['%d users were updated.'] = '%d korisnici su obnovljeni.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Korisnik %s [%s] nije uklonjen iz popisa pretplatnika.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Korisnik %s [%s] nije dodan na popis pretplatnika.';
+$lang['User %s [%s] added.'] = 'Korisnik %s [%s] dodan.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Upozorenje: pretplata ili ukidanje pretplate će poslati e-mail poruke korisnicima';
+$lang['Send mail on HTML format'] = 'Pošalji poruku u HTML obliku';
+$lang['Include display of recent photos grouped by dates'] = 'Uključi prikaz nedavnih slika složenih po nadnevcima';
+$lang['Available only with HTML format'] = 'Dostupno samo u HTML obliku';
+$lang['no write access'] = 'nema dozvole upisa';
+$lang['Permissions'] = 'Dozvole';
+$lang['private'] = 'osobno';
+$lang['public'] = 'javno';
+$lang['Purge never used notification feeds'] = 'Isprazni nikad korištene obavijesne izvore';
+$lang['Purge sessions'] = 'Isprazni sjednice';
+$lang['randomly represented'] = 'predstavljen slučajnim odabirom';
+$lang['registration date'] = 'nadnevak upisa';
+$lang['clean'] = 'čisto';
+$lang['remove remote listing.xml file'] = 'ukloni udaljeni listing.xml zapis';
+$lang['generate listing'] = 'izradi popis';
+$lang['generate file listing.xml on remote site'] = 'izradi listing.xml zapis na udaljenom mjestu';
+$lang['Create this site'] = 'Izgradi ovo mjesto';
+$lang['A local listing.xml file has been found for'] = 'Mjesni listing.xml zapis je pronađen za ';
+$lang['read local listing.xml and update'] = 'čitam mjesni listing.xml i obnavljam';
+$lang['test'] = 'proba';
+$lang['test this remote site'] = 'isprobajte ovo udaljeno mjesto';
+$lang['remove tags'] = 'ukloni tagove';
+$lang['Repair and optimize database'] = 'Popravi i ugodi bazu podataka';
+$lang['selection'] = 'odabir';
+$lang['set to'] = 'postavljeno na';
+$lang['singly represented'] = 'jednoznačno predstavljeno';
+$lang['This site already exists'] = 'Ovo mjesto već postoji';
+$lang['Create a new site : (give its URL to create_listing_file.php)'] = 'Izradi novo mjesto : (odreite njegov URL za izradu create_listing_file.php)';
+$lang['created'] = 'izrađeno';
+$lang['delete'] = 'izbriši';
+$lang['delete this site and all its attached elements'] = 'izbriši ovo mjesto i sve njegove pridodane stavke';
+$lang['an error happened'] = 'došlo je do greške';
+$lang['file create_listing_file.php on remote site was not found'] = 'zapis create_listing_file.php na udaljenom mjestu nije pronađen';
+$lang['Local'] = 'Mjesno';
+$lang['Remote'] = 'Udaljeno';
+$lang['update the database from files'] = 'obnovi bazu podataka pomoću zapisa';
+$lang['status'] = 'stanje';
+$lang['Directory'] = 'Mapa';
+$lang['sub-albums'] = 'podskupine';
+$lang['Synchronize metadata'] = 'uskladi meta podatke';
+$lang['target'] = 'odredište';
+$lang['Thumbnail'] = 'Povezne sličice';
+$lang['Title'] = 'naslov';
+$lang['Album list management'] = 'Upravljanje skupinama';
+$lang['Piwigo configuration'] = 'Piwigo postave';
+$lang['Edit album'] = 'Uredi skupinu';
+$lang['Group management'] = 'Upravljanje grupama';
+$lang['User list'] = 'Popis korisnika';
+$lang['Edit photo information'] = 'Promjena podataka o slici';
+$lang['Thumbnail creation'] = 'Izrada poveznij sličica';
+$lang['Database synchronization with files'] = 'Usklađivanje baze podataka sa zapisima';
+$lang['all'] = 'sve';
+$lang['photos without thumbnail (jpeg and png only)'] = 'slike bez poveznih sličica (samo jpeg i png)';
+$lang['height must be a number superior to'] = 'visina mora biti broj veći od ';
+$lang['width must be a number superior to'] = 'širina mora biti broj veći od';
+$lang['for the file format'] = 'za zapisni oblik';
+$lang['No missing thumbnail'] = 'Nema nedostajućih poveznih sličica';
+$lang['Photo unreachable or no support'] = 'Slika nedohvatna ili bez podrške';
+$lang['GD version'] = 'GD inačica';
+$lang['generated in'] = 'izrađena u';
+$lang['Results of miniaturization'] = 'ishodi umanjivanja';
+$lang['General statistics'] = 'Glavna statistika';
+$lang['max time'] = 'najveće vrijeme';
+$lang['average time'] = 'prosječno vrijeme';
+$lang['min time'] = 'najmanje vrijeme';
+$lang['number of miniaturized photos'] = 'broj umanjenih slika';
+$lang['total time'] = 'sveukupno vrijeme';
+$lang['for this file format'] = 'za ovu vrstu zapisa';
+$lang['unit mode'] = 'jedinični način';
+$lang['Unlocked'] = 'Otključano';
+$lang['unset'] = 'razdešeno';
+$lang['Update albums informations'] = 'Obnovi podatke o skupinama';
+$lang['Update photos information'] = 'Obnovi podatke o slikama';
+$lang['Synchronize'] = 'Uskladi';
+$lang['reduce to single existing albums'] = 'suzi na jednu postojeću skupinu-e';
+$lang['Choose an option'] = 'Izaberite mogućnost';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'najopširniji mogući prikaz podataka (dodane skupine i stavke, izbrisane  skupine i stavke)';
+$lang['Piwigo version differs on the remote site'] = 'Piwigo inačica na udaljenom mjestu se razlikuje';
+$lang['Version of create_listing_file.php on the remote site and Piwigo must be the same'] = 'Inačica create_listing_file.php na udaljenom mjestu i Piwigo-u mora biti jednaka';
+$lang['listing.xml file was not found'] = 'listing.xml zapis nije pronađen';
+$lang['listing.xml file was not found on the remote site. This file is generated by choosing the "generate listing" command in the Site manager'] = 'listing.xml zapis nije pronađen na udaljenom mjestu. Ovaj zapis se izrađuje odabirom "izradi popis" mogućnosti u Upravi mjesta';
+$lang['Error list'] = 'Greška popisa';
+$lang['Errors caption'] = 'Zaglavlja grešaka';
+$lang['Detailed informations'] = 'Podrobnije obavjesti';
+$lang['File/directory read error'] = 'Greška čitanja zapisa/mape';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Zapisu ili mapi se ne može pristupiti (ne postoji ili je pristup zabranjen)';
+$lang['a picture filetype requires a thumbnail. The thumbnail must be present in the sub-directory "thumbnail" of the album directory. The thumbnail filename must start with the configured thumbnail prefix and the extension must be among the following list :'] = 'tip slikovnog zapisa zahtjeva poveznu sličicu. Povezna sličica mora biti prisutna u podmapi "thumbnail" mape skupine. Naziv povezne sličice mora počinjati sa pretpostavljenim predznakom i nastavak mora biti jedan od popisanih :';
+$lang['missing thumbnail'] = 'nedostajuće povezne sličice';
+$lang['albums deleted in the database'] = 'skupine izbrisane iz baze podataka';
+$lang['photos deleted from the database'] = 'stavke izbrisane iz baze podataka';
+$lang['photos candidates for metadata synchronization'] = 'slika kandidata za usklađivanje meta podataka';
+$lang['photos informations synchronized with files metadata'] = 'podataka stavaka usklađeno sa meta podacima zapisa';
+$lang['errors during synchronization'] = 'grešaka tijekom usklađivanja';
+$lang['albums added in the database'] = 'skupina dodano u bazu podataka';
+$lang['photos added in the database'] = 'stavaka dodano u bazu podataka';
+$lang['photos updated in the database'] = 'stavaka obnovljeno u bazi podataka';
+$lang['Search for new images in the directories'] = 'Pretraživanje novih slika u mapama';
+$lang['added'] = 'dodano';
+$lang['deleted'] = 'izbrisano';
+$lang['Metadata synchronization results'] = 'Ishodi usklađivanja meta podataka';
+$lang['only perform a simulation (no change in database will be made)'] = 'izvrši samo oponašanje (nema promjena u bazi podataka)';
+$lang['Simulation'] = 'Oponašanje';
+$lang['directories + files'] = 'mape + zapise';
+$lang['only directories'] = 'samo mape';
+$lang['synchronize files structure with database'] = 'uskladi sastav zapisa sa bazom podataka';
+$lang['synchronize files metadata with database photos informations'] = 'uskladi meta podatke zapisa sa podacima stavki baze podataka';
+$lang['even already synchronized photos'] = 'čak i već usklađene stavke';
+$lang['Used metadata'] = 'Korišteni meta podaci';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Nazivi mapa i zapisa moraju biti sastavljeni od slova, brojva, "-", "_" ili "."';
+$lang['wrong filename'] = 'krivi naziv zapisa';
+$lang['Upload'] = 'Prebaci';
+$lang['user "%s" added'] = 'korisnik "%s" dodan';
+$lang['User status'] = 'Stanje korisnika';
+$lang['user_status_admin'] = 'Upravnik';
+$lang['user_status_generic'] = 'Općenit';
+$lang['user_status_guest'] = 'Gost';
+$lang['user_status_normal'] = 'Korisnik';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Nestvarna skupina';
+$lang['Waiting'] = 'Čekanje';
+$lang['default'] = 'pretpostavljeno';
+$lang['Toggle \'default group\' property'] = 'Promijeni \'pretpostavljena grupa\' svojstva';
+$lang['Advanced features'] = 'Napredne mogućnosti';
+$lang['Overall'] = 'Sveukupno';
+$lang['Year'] = 'Godina';
+$lang['Month'] = 'Mjesec';
+$lang['Day'] = 'Dan';
+$lang['Pages seen'] = 'Stranica viđeno';
+$lang['Time'] = 'Vrijeme';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Stavka';
+$lang['Section'] = 'Odjeljak';
+$lang['Save page visits by guests'] = 'Pohrani posjete stranicama po gostima';
+$lang['Save page visits by users'] = 'Pohrani posjete stranicama po korisnicima';
+$lang['Save page visits by administrators'] = 'Pohrani posjete stranicama upraviteljima';
+$lang['An information email was sent to group "%s"'] = 'Obavijesna e-mail poruka je poslana grupi "%s';
+$lang['Send an information email to group members'] = 'Pošalji obavijesni e-mail članovima grupe';
+$lang['Group'] = 'Grupa';
+$lang['[%s] Visit album %s'] = '[%s] Dođite i pogledajte skupinu %s';
+$lang['Hello,'] = 'Pozdrav,';
+$lang['See you soon.'] = 'Do skorog viđenja.';
+$lang['Discover album:'] = 'Dođite i otkrijte skupinu:';
+$lang['Mail content'] = 'sadržaj e-mail poruke';
+$lang['none'] = 'ni jedan';
+$lang['high'] = 'visoko';
+$lang['other'] = 'ostalo';
+$lang['Element type'] = 'Tip stavke';
+$lang['Image id'] = 'ID slike';
+$lang['Summary'] = 'Zbirno';
+$lang['%d line filtered'] = '%d linija pročišćena';
+$lang['%d lines filtered'] = '%d linija pročišćeno';
+$lang['%d guest'] = '%d gost';
+$lang['%d guests'] = '%d gostiju';
+$lang['Hour'] = 'Sat';
+$lang['guest'] = 'gost';
+$lang['default values'] = 'pretpostavljene vrijednosti';
+$lang['High filesize'] = 'Visoka veličina zapisa';
+$lang['Guest cannot be deleted'] = 'Gost ne može biti izbrisan';
+$lang['Default user cannot be deleted'] = 'Pretpostavljeni korisnik ne može biti izbrisan';
+$lang['Purge history detail'] = 'Isprazni povijesne pojedinosti';
+$lang['Purge history summary'] = 'Isprazni povijesni zbir';
+$lang['Check integrity'] = 'Provjera cjelovitosti';
+$lang['Anomaly'] = 'Nepravilnost';
+$lang['Correction'] = 'Ispravak';
+$lang['Automatic correction'] = 'Samostalno ispravljanje';
+$lang['Impossible automatic correction'] = 'Samostalno ispravljanje nemoguće';
+$lang['Correction applied with success'] = 'Ispravka uspješno ugrađena';
+$lang['Correction applied with error'] = 'Ispravka ugrađena s greškom';
+$lang['%d anomaly has been detected.'] = '%d nepravilnost je otkrivena.';
+$lang['%d anomalies have been detected.'] = '%d nepravilnosti su otkrivene.';
+$lang['%d anomaly has been corrected.'] = '%d nepravilnost je ispravljena.';
+$lang['%d anomalies have been detected corrected.'] = '%d nepravilnosti je ispravljeno.';
+$lang['%d anomaly has not been corrected.'] = '%d nepravilnost nije ispravljena.';
+$lang['%d anomalies have not been corrected.'] = '%d nepravilnosti nije ispravljeno.';
+$lang['Go to %s or %s for more informations'] = 'Idite na %s ili %s za više pojedinosti';
+$lang['the forum'] = 'forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s vrijednost nije valjani zapis jer exif nije podržan';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s mora biti postavljeno na false u config_local.inc.php file';
+$lang['Main "guest" user does not exist'] = 'Glavni "guest" korisnik ne postoji';
+$lang['Main "guest" user status is incorrect'] = 'Stanje glavnog "guest" korisnika je neispravno';
+$lang['Default user does not exist'] = 'Pretpostavljeni korisnik ne postojit';
+$lang['Main "webmaster" user does not exist'] = 'Glavni "webmaster" korisnik ne postoji';
+$lang['Main "webmaster" user status is incorrect'] = 'Stanje glavnog "webmaster" korisnika je neispravno';
+$lang['User "%s" created with "%s" like password'] = 'Korisnik "%s" izrađen sa "%s" kao zaporkom';
+$lang['Status of user "%s" updated'] = 'Stanje korisnika "%s" obnovljeno';
+$lang['add new photos to caddie'] = 'dodaj nove stavke u ladicu';
+$lang['No display'] = 'Bez prikaza';
+$lang['Classic display'] = 'Klasični prikaz';
+$lang['Hoverbox display'] = 'Prikaz lebdećim prozorom';
+$lang['Mail address is obligatory for all users'] = 'E-mail adresa je obavezna za sve korisnike';
+$lang['Minimum privacy level'] = 'Najniža razina privatnosti';
+$lang['Privacy level'] = 'Razina privatnosti';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Poznanici';
+$lang['Level 2'] = 'Prijatelji';
+$lang['Level 4'] = 'Obitelj';
+$lang['Level 8'] = 'Upravnici';
+$lang['Reinitialize check integrity'] = 'Ponovi provjeru cjelovitosti';
+$lang['Check all'] = 'Označi sve';
+$lang['Uncheck all'] = 'Odznači sve';
+$lang['Check automatic corrections'] = 'Označi samoispravke';
+$lang['Apply selected corrections'] = 'Primjeni odabrane ispravke';
+$lang['Ignore selected anomalies'] = 'Zanemari odabrane nepravilnosti';
+$lang['Refresh'] = 'Osvježi';
+$lang['The anomaly will be ignored until next application version'] = 'Nepravilnost će se zanemariti do slijedeće inačice galerije';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Ispravak nepravilnosti će poništiti činjenicu da je zanemarena';
+$lang['%d anomaly has been ignored.'] = '%d nepravilnost je zanemarena.';
+$lang['%d anomalies have been ignored.'] = '%d nepravilnosti su zanemarene.';
+$lang['Plugins which need upgrade'] = 'Dodaci koji trebaju nadogradnju';
+$lang['Plugin list'] = 'Popis dodataka';
+$lang['Check for updates'] = 'Provjera nadogradnji';
+$lang['Other plugins'] = 'Ostali dodaci';
+$lang['Last revisions'] = 'Zadnja izdanja';
+$lang['Are you sure you want to delete this plugin?'] = 'Sigurno želite ukloniti ovaj dodatak?';
+$lang['Are you sure you want to install this plugin?'] = 'Sigurno želite ugraditi ovaj dodatak?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Sigurno želite ugraditi ovaj dodatak? Morate ovjeriti ako ova inačica ne treba uklanjanje.';
+$lang['Plugin has been successfully copied'] = 'Dodatak je uspješno preslikan';
+$lang['You might go to plugin list to install and activate it.'] = 'Možete ići na popis dodataka za ugradbu i pokretanje.';
+$lang['Can\'t create temporary file.'] = 'Ne mogu napraviti privremeni zapis.';
+$lang['Can\'t download archive.'] = 'Ne mogu preuzeti zapis.';
+$lang['Can\'t read or extract archive.'] = 'Ne mogu očitati ili izlučiti zapis.';
+$lang['An error occured during extraction (%s).'] = 'Došlo je do greške prilikom izlučivanja (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Provjerite "plugins" mapu i dozvole podmapa (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Ne mogu se povezati na poslužitelj.';
+$lang['Purge compiled templates'] = 'Isprazni obrađene predloške';
+$lang['ACCESS_0'] = 'Slobodan pristup';
+$lang['ACCESS_1'] = 'Pristup svima';
+$lang['ACCESS_2'] = 'Pristup pretplatnicima';
+$lang['ACCESS_3'] = 'Pristup upraviteljima';
+$lang['ACCESS_4'] = 'Pristup webmaster-ima';
+$lang['ACCESS_5'] = 'Bez pristupa';
+$lang['Support'] = 'Podrška';
+$lang['Documentation'] = 'Dokumentacija';
+$lang['A new version of Piwigo is available.'] = 'Nova Piwigo inačica je dostupna.';
+$lang['Piwigo Administration'] = 'Piwigo Uprava';
+$lang['Piwigo version'] = 'Piwigo inačica';
+$lang['You are running the latest version of Piwigo.'] = 'Koristite najnoviju inačicu Piwigo-a.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Inačica od %s [%s] postavljene nije sukladna potrebnoj inačici [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'trebate nadograditi vaš sustav da biste imali sve pogodnosti u protivnom sustav neće raditi uredno ili uopće neće raditi';
+$lang['Deleted on'] = 'Izbrisan na';
+$lang['Last hit'] =  'Zadnji posjet';
+$lang['GD library is missing'] = 'Nedostaje GD biblioteka';
+$lang['Templates'] = 'Predlošci';
+$lang['Extend for templates'] = 'Proširenje za predloške';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'Zamjena izvornih predložaka prilagođenima iz podmape template-extension';
+$lang['Replacers (customized templates)'] = 'Zamjene (prilagođeni predlošci)';
+$lang['Original templates'] = 'Izvorni predlošci';
+$lang['Optional URL keyword'] = 'Izborna URL ključna riječ';
+$lang['Templates configuration has been recorded.'] = 'Postava predložaka je pohranjena.';
+$lang['All optimizations have been successfully completed.'] = 'Sva poboljšanja su uspješno dovršena.';
+$lang['Optimizations have been completed with some errors.'] = 'Poboljšanja su izvršena uz neke greške.';
+$lang['Modify information'] = 'Promijeni podatak';
+$lang['nothing'] = 'ništa';
+$lang['overrides existing values with empty ones'] = 'prekucava postojeće vrijednosti praznim poljima';
+$lang['Manage photo ranks'] = 'Uprava poretkom';
+$lang['Edit ranks'] = 'Uredi poredak';
+$lang['No photo in this album'] = 'Nema stavke u ovoj skupini';
+$lang['Images manual order was saved'] = 'Pohranjen je izvorni redoslijed slika';
+$lang['ranks'] = 'poretci';
+$lang['Drag to re-order'] = 'Povuci za preslagivanje';
+$lang['Quick Local Synchronization'] = 'Brzo Mjesno Usklađivanje';
+$lang['No photo can be deleted'] = 'Nema slike koja se može brisati';
+$lang['Delete selected photos'] = 'Briši odabrane slike';
+$lang['%d photo was deleted'] = '%d slika je izbrisana';
+$lang['%d photos were deleted'] = '%d slike su izbrisane';
+$lang['Downloads'] = 'Preuzimanja';
+$lang['Released on'] = 'Objavljeno dana';
+$lang['Number of downloads'] = 'Broj preuzimanja';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Announcements e-Novine';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Ostanite u vezi sa projektom, pretplatite se na Piwigo Announcement e-Novine. Primati ćete e-mail poruke po izlasku novih inačica (ponekad sa sigurnosnim zakrpama, važno je znati da su dostupne i treba ih što prije ugraditi) te o svim važnijim zbivanjima i događanjima u vezi sa projektom. Svega par e-mail poruka godišnje.';
+$lang['Subscribe %s'] = 'Pretplatite %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Pretplatite %s na Piwigo English Announcements e-Novine';
+$lang['Purge search history'] = 'Pročisti povijest pretraživanja';
+$lang['Hide'] = 'Sakrij';
+$lang['Operation in progress'] = 'Obrada postupka.';
+$lang['Please wait...'] = 'Sačekajte molim...';
+$lang['Password is missing. Please enter the password.'] = 'Nedostaje zaporka. Molimo unesite zaporku.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nedostaje potvrda zaporke. Molimo potvrdite odabranu zaporku.';
+$lang['Allow users to edit their own comments'] = 'Dozvoliti korisnicima uređivanje vlastitih komentara';
+$lang['Allow users to delete their own comments'] = 'Dozvoliti korisnicima brisanje vlastitih komentara';
+$lang['Email administrators when a comment is modified'] = 'E-mail poruka upravnicima kada je komentar promijenjen';
+$lang['Email administrators when a comment is deleted'] = 'E-mail poruka upravnicima kada je komentar izbrisan';
+$lang['Cannot delete the old permalink !'] = 'Stare stalne poveznice ne mogu se brisati!';
+$lang['Hit'] = 'Posjeta';
+$lang['Tools'] = 'Alati';
+$lang['Photos'] = 'Slike';
+$lang['Themes'] = 'Teme';
+$lang['Instructions to use Piwigo'] = 'Upute za korištenje Piwigo-a';
+$lang['Installed Themes'] = 'Ugrađene Teme';
+$lang['Add New Theme'] = 'Dodaj novu temu';
+$lang['Forbid this theme to users'] = 'Zabrani ovu temu korisnicima';
+$lang['Set as default theme for unregistered and new users'] = 'Postavi za pretpostavljenu temu za nepoznate i nove korisnike';
+$lang['unknown'] = 'nepoznat';
+$lang['Upload Photos'] = 'Prebaci Slike';
+$lang['Drop into album'] = 'Spusti u skupinu';
+$lang['+ Add an upload box'] = '+ Dodaj kutiju prebacivanja';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Izradi "%s" mapu u korijenu vaše Piwigo galerije';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dozvoli pravo upisa (chmod 777) za "%s" mapu u korijenu Piwigo galerije';
+$lang['existing album'] = 'postojeća skupina';
+$lang['create a new album'] = 'stvori novu skupinu';
+$lang['Album name'] = 'Naziv skupine';
+$lang['Album "%s" has been added'] = 'Skupina "%s" je dodana';
+$lang['Uploaded Photos'] = 'Prebačene Slike';
+$lang['%d photos uploaded'] = '%d slika prebačeno';
+$lang['Privacy level set to "%s"'] = 'Razina privatnosti postavljena na "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Skupina "%s" sada sadržava %d slika';
+$lang['Manage this set of %d photos'] = 'Upravljanje ovim skupom od %d slika';
+$lang['Select files'] = 'Odaberi zapise';
+$lang['Everybody'] = 'Svi';
+$lang['Who can see these photos?'] = 'Tko može pregledavati ove slike?';
+$lang['Settings'] = 'Postavke';
+$lang['Resize'] = 'Pronijeni veličinu';
+$lang['Maximum width'] = 'Najveća Širina';
+$lang['pixels'] = 'piksela';
+$lang['Maximum height'] = 'Najveća Visina';
+$lang['Image Quality'] = 'Kakvoća slike';
+$lang['Save Settings'] = 'Pohrani Postavke';
+$lang['Your configuration settings are saved'] = 'Vaše postavke su pohranjene';
+$lang['Active Themes'] = 'Aktivne Teme';
+$lang['Add write access to the "%s" directory'] = 'Dodaj dozvolu upisa za "%s" mapu';
+$lang['Administration Home'] = 'Upravna Ploča';
+$lang['Change Admin Colors'] = 'Promijeni boje upravnog dijela';
+$lang['Delete this theme'] = 'izbriši ovu temu';
+$lang['Directory does not exist'] = 'Mapa ne postoji';
+$lang['Download,'] = 'Preuzmi,';
+$lang['FTP + Synchronization'] = 'FTP + Usklađivanje';
+$lang['Get Support on Piwigo Forum'] = 'Potražite pomoć u Piwigo forumu';
+$lang['Help Me'] = 'Pomozite Mi';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ova tema se ne može postaviti, jer nedostaje nadređena tema: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ova tema se ne može brisati, zbog drugih tema ovisnih o njoj: %s';
+$lang['Inactive Themes'] = 'Nekorištene teme';
+$lang['Install on your computer,'] = 'Ugradite na svoje računalo,';
+$lang['Make this theme available to users'] = 'Očinite ovu teme dostumon korisnicima';
+$lang['Page end'] = 'Kraj stranice';
+$lang['Piwigo Uploader'] = 'Piwigo Prebacivač';
+$lang['Read Piwigo Documentation'] = 'Pročitajte Piwigo Dokimentaciju';
+$lang['Start pLoader and add your photos.'] = 'Pokreni pLoader i dodajte svoje slike.';
+$lang['Switch to clear or dark colors for administration'] = 'Prebaci na svijetle ili tamne boje za upravljanje';
+$lang['Theme has been successfully installed'] = 'Tema je uspješno ugrađena';
+$lang['Visit Gallery'] = 'Posjetite galeriju';
+$lang['Visit Piwigo project website'] = 'Posjetite web stranicu Piwigo projekta';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader znači <em>Piwigo Uploader</em>. Sa vašeg računala, pLoader priprema vaše slike i prebacuje ih u vašu Piwigo galeriju.';
+$lang['Guest Settings'] = 'Postavke Gost računa';
+$lang['Main Page'] = 'Glavna stranica';
+$lang['Photo Page'] = 'Stranica Slika';
+$lang['Activate Navigation Bar'] = 'Uključiti navigacijsku traku';
+$lang['Activate Navigation Thumbnails'] = 'Uključiti navigacijske povezne sličice';
+$lang['Activate icon "%s"'] = 'Uključiti ikonu "%s"';
+$lang['Activate field "%s"'] = 'Uključiti polje "%s"';
+$lang['Photo Properties'] = 'Svojstva slika';
+$lang['Allow user customization'] = 'Dozvoliti korisničku prilagodbu';
+$lang['Languages'] = 'Jezici';
+$lang['Installed Languages'] = 'Ugrađeni Jezici';
+$lang['Add New Language'] = 'Dodaj Novi Jezik';
+$lang['Language has been successfully installed'] = 'Jezik uspješno ugrađen';
+$lang['Select:'] = 'Odaberi:';
+$lang['None'] = 'Nijedan';
+$lang['Invert'] = 'Obrnuto';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nemoguće je isključiti ovu temu, potrebna je najmanje jedna tema.';
+$lang['Webmaster status is required.'] = 'Potrebne su Webmaster ovlasti.';
+$lang['Bound Theme'] = 'Prikači Temu';
+$lang['Allow rating'] = 'Dozvoli ocjenjivanje';
+$lang['Select at least one comment'] = 'Odaberite najmanje jedan komentar';
+$lang['Active Plugins'] = 'Uključeni Dodaci';
+$lang['Inactive Plugins'] = 'Isključeni Dodaci';
+$lang['Missing Plugins'] = 'Nedostajući Dodaci';
+$lang['Uninstalled Plugins'] = 'Uklonjeni Dodaci';
+$lang['By %s'] = 'Po %s';
+$lang['Visit plugin site'] = 'Posjetite strancu dodataka';
+$lang['Active Languages'] = 'Uključeni Jezici';
+$lang['Delete this language'] = 'Izbrišite ovaj jezik';
+$lang['Forbid this language to users'] = 'Zabranite ovaj jezik korisnicima';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nemoguće je isključenje ovog jezika, prvo postavite neki drugi jezik kao pretpostavljen.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nemoguće je isključenje ovog jezika, trebate imati najmanje jedan jezik.';
+$lang['Inactive Languages'] = 'Isključeni Jezici';
+$lang['Make this language available to users'] = 'Učinite ovaj jezik dostupnim korisnicima';
+$lang['Set as default language for unregistered and new users'] = 'Postavi kao pretpostavljen jezik za nove i nepoznate korisnike';
+$lang['Add Photos'] = 'Dodaj Slike';
+$lang['The following tag was deleted'] = 'Slijedeći tag je izbrisan';
+$lang['Miscellaneous'] = 'Razno';
+$lang['Virtual Links'] = 'Prividne Poveznice';
+$lang['There is no other language available.'] = 'Neme dostupnih drugih jezika.';
+$lang['There is no other plugin available.'] = 'Nema dostupnih drugih dodataka.';
+$lang['There is no other theme available.'] = 'Nema dostupnih drugih tema.';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vrijeme izvršenja je isteklo, postupak se mora nastaviti [Procijenjeno vrijeme: %d sekunda].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vrijeme izvršenja je premašeno, postupak se mora nastaviti [Procijenjeno vrijeme: %d sekunda].';
+$lang['By rank'] = 'Po poretku';
+$lang['Manual order'] = 'Ručni poredak';
+$lang['Add another set of photos'] = 'Dodaj još jedan skup slika';
+$lang['Path'] = 'Putanja';
+$lang['Order of menubar items has been updated successfully.'] = 'Redoslijed  stavki izborne trake je uspješno obnovljen.';
+$lang['This theme was not designed to be directly activated'] = 'Ova tema nije zamišljena za neposrednu postavu'; 
+$lang['Menu Management'] = 'Izbornik';
+$lang['Action'] = 'Akcija';
+$lang['Add a filter'] = 'Dodaj filter';
+$lang['Album photos associated to the following albums: %s'] = 'Fotografije vezane uz sljedeće albume: %s';
+$lang['Albums automatically sorted'] = 'Automatski poredak albuma';
+$lang['All %d photos are selected'] = 'Označeno %d fotografija';
+$lang['Apply action'] = 'Potvrdi akciju';
+$lang['automatic order'] = 'automatski poredak';
+$lang['Batch Manager'] = 'Skupno uređivanje';
+$lang['Choose an action'] = 'Odaberi akciju';
+$lang['Delete orphan tags'] = 'Briši nekorištene oznake';
+$lang['delete photo'] = 'briši fotografiju';
+$lang['Duplicates'] = 'duplići';
+$lang['Error on file "%s" : %s'] = 'Greška na datoteci "%s" : %s';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif ekstenzija nije dostupna, administrator bi trebao onemogućiti korištenje exif-a';
+$lang['Failed to write file to disk'] = 'Nije uspjelo zapisivanje na disk';
+$lang['File upload stopped by extension'] = 'Upload datoteke je zaustavljen od strane ekstenzije';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Vrijednost upload_max_filesize (%sB) u vašoj php.ini datoteci je veća od post_max_size (%sB), trebali biste podesiti te postavke';
+$lang['include child albums'] = 'uključi podalbume';
+$lang['manual order'] = 'ručni poredak';
+$lang['%d of %d photos selected'] = 'označeno %d od %d fotografija';
+$lang['Missing a temporary folder'] = 'Nedostaje privremena mapa';
+$lang['new'] = 'novo';
+$lang['No file was uploaded'] = 'Datoteka nije poslana';
+$lang['No photo in the current set.'] = 'U trenutnoj grupi nema fotografija.';
+$lang['No photo selected, %d photos in current set'] = 'Fotografije nisu označene, %d fotografija u trenutnoj grupi';
+$lang['No photo selected, no action possible.'] = 'Nijedna fotografija nije označena.';
+$lang['No results'] = 'Nema rezultata';
+$lang['on the %d selected photos'] = 'na %d označenih fotografija';
+$lang['Orphan tags deleted'] = 'Nekorištene oznake su izbrisane';
+$lang['Pending Comments'] = 'Neriješeni komentari';
+$lang['Refresh photo set'] = 'Osvježi grupu fotografija';
+$lang['Remove all filters'] = 'Ukloni sve filtre';
+$lang['remove author'] = 'ukloni autora';
+$lang['remove creation date'] = 'ukloni datum nastanka';
+$lang['Remove from caddie'] = 'Ukloni iz caddie';
+$lang['remove this filter'] = 'ukloni ovaj filter';
+$lang['remove title'] = 'ukloni naslov';
+$lang['Searching...'] = 'Tražim ...';
+$lang['Selection'] = 'Odabir';
+$lang['Set author'] = 'Postavi autora';
+$lang['Set creation date'] = 'Postavi datum nastanka';
+$lang['Set title'] = 'Postavi naslov';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Veličina poslane datoteke prelazi MAX_FILE_SIZE postavku definiranu unutar HTML obrasca';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Veličina poslane datoteke prelazi uload_max_filesize postavku u php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Poslana datoteka je djelomično upload-ana';
+$lang['Rate'] = 'Ocjena';
+$lang['Average rate'] = 'Prosječna ocjena';
+$lang['An error has occured during upgrade.'] = 'Došlo je do greške tijekon postupka nadogradnje.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Greška se dogodila tijekom izlučivanja. Molimo provjerite upisne dozvole vaše piwigo postave.<br><a href="%s">Kliknite za prikaz dnevnika greške</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne može dohvatiti zapis nadogradnje sa poslužitelja';
+$lang['Dump Database'] = 'Isprazni bazu podataka';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Uključi povijest posjeta (Pozor: memorijsko ograničenje poslužitelja može biti premašeno)';
+$lang['Unable to dump database.'] = 'Nemoguće pražnjenje baze podataka.';
+$lang['Save Template Directory'] = 'Sačuvaj mapu predložaka';
+$lang['Some themes and plugins may be not available yet.'] = 'Neke teme i dodaci možda nisu još dostupni.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Možete nadograditi Piwigo na inačicu %s neposredno, bez nadograđivanja na inačicu Piwigo %s (preporučeno).';
+$lang['Update to Piwigo %s'] = 'Nadogradnja na Piwigo inačicu %s';
+$lang['Two updates are available'] = 'Dvije su nadogradnje dostupne';
+$lang['This is a minor update, with only bug corrections.'] = 'Ovo je manja nadogradnja, samo popravke grešeaka.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Ovo je veća nadogradnja, sa <a href="%s">novim uzbudljivim mogućnostima</a>.';
+$lang['Update in progress... Please wait.'] = 'Nadogradnja u tijeku... Molimo sačekajte.';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivirajte sličicu "Novo" pored albuma i slika';
+$lang['Add a criteria'] = 'Dodaj uvjet';
+$lang['Deactivate all'] = 'Sve deaktiviraj';
+$lang['Default photos order'] = 'Zadani poredak fotografija';
+$lang['Restore'] = 'Vrati';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Vrati zadane postavke. Postojeće postve dodataka će se izgubiti!';
+$lang['Show menubar'] = 'Prikaži liniju izbornika';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Poslana datoteka prelazi post_max_size direktivu u php.ini: %sB';
+$lang['The whole page'] = 'Cijela stranica';
+$lang['The whole set'] = 'Cijeli set';
+$lang['Type here the author name'] = 'Unesi ime autora';
+$lang['Type here the title'] = 'Unesi naslov';
+$lang['Type in a search term'] = 'Traži ..';
+$lang['Unknown upload error'] = 'Nepoznata greška prilikom slanja datoteke';
+$lang['Add to caddie'] = 'dodaj u ladicu';
+$lang['%s has been successfully updated.'] = '%s je uspješno ažurirano.';
+$lang['%s photos can not be regenerated'] = '%s fotografija nije moguće regenerirati';
+$lang['%s photos have been regenerated'] = '%s fotografija regenerirano';
+$lang['%s thumbnails can not be regenerated'] = '%s malih sličica nije moguće regenerirati';
+$lang['%s thumbnails have been regenerated'] = '%s malih sličica je generirano';
+$lang['(this tag will be deleted)'] = '(ova oznaka je izbrisana)';
+$lang['... or '] = '... ili ';
+$lang['Add tags'] = 'Dodaj oznake';
+$lang['All extensions are up to date.'] = 'Svi dodaci su "up-to-date".';
+$lang['All languages are up to date.'] = 'Svi jezici su "up-to-date".';
+$lang['All plugins are up to date.'] = 'Svi plugin-ovi su "up-to-date".';
+$lang['All themes are up to date.'] = 'Sve teme su "up-to-date".';
+$lang['Allowed file types: %s.'] = 'Dozvoljeni tipovi datoteka: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna rezolucija: %dM px (to je %dx%d px).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Prema zadanim vrijednostima, Piwino će kreirati nove veličine od vaših originalnih verzija fotografija..';
+$lang['Confirm merge'] = 'Potvrdi spajanje';
+$lang['Create'] = 'Kreiraj';
+$lang['Crop'] = 'Izreži';
+$lang['display'] = 'prikaz';
+
+$lang['%d day'] = '%d dan';
+$lang['%d days'] = '%d dana';
+$lang['%d hour'] = '%d sat';
+$lang['%d hours'] = '%d sati';
+$lang['%d minute'] = '%d minuta';
+$lang['%d minutes'] = '%d minuta';
+$lang['%d month'] = '%d mjesec';
+$lang['%d months'] = '%d mjeseci';
+$lang['%d second'] = '%d sekunda';
+$lang['%d seconds'] = '%d sekundi';
+$lang['%d week'] = '%d tjedan';
+$lang['%d weeks'] = '%d tjedana';
+$lang['%d year'] = '%d godina';
+$lang['%d years'] = '%d godina';
+$lang['%s ago'] = '%s prije';
+$lang['%s in the future'] = '%s u budućnosti';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u korisnici su u grupi koja ima pristup';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo za Android</em> je aplikacija koja vam omogućava spajanje vašeg tableta ili mobilnog telefona na vašu Piwigo galeriju. Kreirajte albume i postavite fotografije.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo za iOS</em> je aplikacija koja vam omogućava spajanje vašeg iPhone-a, iPada-a ili iPod Touch-a na vašu Piwigo galeriju. Kreirajte albume i postavite fotografije.';
+?>
Index: /tags/2.6.0RC1/language/hr_HR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Hrvatski [HR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=422
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Hrvatski';
+$lang_info['country'] = 'Hrvatska';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'hr';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d skupina obnovljena';
+$lang['%d albums updated'] = '%d skupine obnovljene';
+$lang['%d comment to validate'] = '%d komentar za ovjeru';
+$lang['%d comments to validate'] = '%d komentari za ovjeru';
+$lang['%d new comment'] = '%d novi komentar';
+$lang['%d new comments'] = '%d novi komentari';
+$lang['%d comment'] = '%d komentar';
+$lang['%d comments'] = '%d komentari';
+$lang['%d hit'] = '%d posjet';
+$lang['%d hits'] = '%d posjeta';
+$lang['%d new photo'] = '%d nova slika';
+$lang['%d new photos'] = '%d nove slike';
+$lang['%d new user'] = '%d novi korisnik';
+$lang['%d new users'] = '%d novi korisnici';
+$lang['About'] = 'O...';
+$lang['All tags'] = 'Svi tagovi';
+$lang['Any tag'] = 'Bilo koji tag';
+$lang['At least one listed rule must be satisfied.'] = 'Najmanje jedno od navedenih pravila mora biti zadovoljeno.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Skupine';
+$lang['Album'] = 'Skupina';
+$lang['Close this window'] = 'Zatvori prozor';
+$lang['Complete RSS feed (photos, comments)'] = 'Potpuni RSS izvori (slike, komentari)';
+$lang['Confirm Password'] = 'Potvrdi Zaporku';
+$lang['Connection settings'] = 'Postavke povezivanja';
+$lang['Login'] = 'Prijava';
+$lang['Contact webmaster'] = 'Pišite webmaster-u';
+$lang['Create a new account'] = 'Izradi novi račun';
+$lang['Created on'] = 'Izrađen na';
+$lang['Creation date'] = 'Nadnevak izrade';
+$lang['Current password is wrong'] = 'Trenutna zaporka je neispravna';
+$lang['Dimensions'] = 'Veličine';
+$lang['Display'] = 'Prikaz';
+$lang['Each listed rule must be satisfied.'] = 'Svako navedeno pravilo mora biti zadovoljeno.';
+$lang['Email address is missing. Please specify an email address.'] = 'Nedostaje E-mail adresa';
+$lang['Email address'] = 'E-mail adresa';
+$lang['Enter your personnal informations'] = 'Upišite svoje osobne podatke';
+$lang['Error sending email'] = 'Greška prilikom slanja e-mail poruke';
+$lang['File name'] = 'Naziv zapisa';
+$lang['File'] = 'Zapis';
+$lang['Filesize'] = 'Veličina zapisa';
+$lang['Filter and display'] = 'Filter i prikaz';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Zaboravili ste zaporku?';
+$lang['Go through the gallery as a visitor'] = 'Pregledajte galeriju kao posjetitelj';
+$lang['Help'] = 'Pomoć';
+$lang['Identification'] = 'Prijavnica';
+$lang['Photos only RSS feed'] = 'RSS izvor samo za slike';
+$lang['Keyword'] = 'Ključna riječ';
+$lang['Links'] = 'Poveznice';
+$lang['N/A'] = 'N/D';
+$lang['New on %s'] = 'Novi na on %s';
+$lang['Notification'] = 'Obavijest';
+$lang['Number of items'] = 'Broj stavki';
+$lang['Original dimensions'] = 'Izvorne veličine';
+$lang['Password forgotten'] = 'Zaboravljena zaporka';
+$lang['Password'] = 'Zaporka';
+$lang['Post date'] = 'Nadnevak objave';
+$lang['Posted on'] = 'Objavljeno u';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Brza veza';
+$lang['RSS feed'] = 'RSS izvor';
+$lang['Register'] = 'Upišite se';
+$lang['Registration'] = 'Upis';
+$lang['Related tags'] = 'Odnosni tagovi';
+$lang['Reset'] = 'Poništi';
+$lang['Retrieve password'] = 'Dohvati zaporku';
+$lang['Search rules'] = 'Pravila pretrage';
+$lang['Search tags'] = 'Tagovi pretrage';
+$lang['Search'] = 'Pretraživanje';
+$lang['display available tags'] = 'Pogledaj dostupne tagove';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Složeno po';
+$lang['Sort order'] = 'Redoslijed slaganja';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tagovi';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS obavijesni izvor omogućava obavještavanje o novostima sa ovog web mjesta : nove slike, obnovljene skupine, nove komentare. Koristite čitač RSS izvora.';
+$lang['Unknown feed identifier'] = 'Nepoznata oznaka izvora';
+$lang['User comments'] = 'Korisnički komentari';
+$lang['Username'] = 'Korisničko ime';
+$lang['Visits'] = 'Posjeta';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Tjedan %d';
+$lang['About Piwigo'] = 'O Piwigo-u';
+$lang['You are not authorized to access the requested page'] = 'Niste ovlašteni za pristup zatraženoj stranici';
+$lang['add this photo to your favorites'] = 'dodaj ovu sliku u omiljene';
+$lang['Administration'] = 'Uprava';
+$lang['all'] = 'sve';
+$lang['ascending'] = 'uzlazno';
+$lang['author(s) : %s'] = 'autor(i) : %s';
+$lang['Expand all albums'] = 'Proširi sve skupine';
+$lang['posted after %s (%s)'] = 'objavljeno nakon %s (%s)';
+$lang['posted before %s (%s)'] = 'objavljeno prije %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'objavljeno između %s (%s) i %s (%s)';
+$lang['posted on %s'] = 'objavljeno na %s';
+$lang['Best rated'] = 'Najbolje ocijenjeno';
+$lang['display best rated photos'] = 'prikaz najbolje ocijenjenih stavki';
+$lang['Calendar'] = 'Kalendar';
+$lang['All'] = 'Sve';
+$lang['display each day with photos, month per month'] = 'prikaz svakog dana sa slikama, mjesec po mjesec';
+$lang['View'] = 'Pogledaj';
+$lang['chronology_monthly_calendar'] = 'Mjesečni kalendar';
+$lang['chronology_monthly_list'] = 'Mjesečni popis';
+$lang['chronology_weekly_list'] = 'Tjedni popis';
+$lang['Click here if your browser does not automatically forward you'] = 'Kliknite ovdje ako niste samostalno prebačeni';
+$lang['comment date'] = 'nadnevak komentara';
+$lang['Comment'] = 'Komentar';
+$lang['Your comment has been registered'] = 'Vaš je komentar upisan';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood sustav : molimo sačekajte malo prije objave novog komentara';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Vaš komentar NIJE upisan jer nije prošao pravila ovjere';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Upravnik mora odobriti vaš komentar prije objave.';
+$lang['This login is already used by another user'] = 'Ovo korisničko ime se već koristi';
+$lang['Comments'] = 'Komentari';
+$lang['Add a comment'] = 'Dodaj komentar';
+$lang['created after %s (%s)'] = 'izrađen nakon %s (%s)';
+$lang['created before %s (%s)'] = 'izrađen prije %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'izrađen između %s (%s) i %s (%s)';
+$lang['created on %s'] = 'izrađen na %s';
+$lang['Customize'] = 'Prilagodi';
+$lang['Your Gallery Customization'] = 'Prilagodba Vaše Galerije ';
+$lang['day'][0] = 'Nedjelja';
+$lang['day'][1] = 'Ponedjeljak';
+$lang['day'][2] = 'Utorak';
+$lang['day'][3] = 'Srijeda';
+$lang['day'][4] = 'Četvrtak';
+$lang['day'][5] = 'Petak';
+$lang['day'][6] = 'Subota';
+$lang['Default'] = 'Pretpostavljeno';
+$lang['delete this photo from your favorites'] = 'uklonite ovu sliku iz omiljenih';
+$lang['Delete'] = 'Ukloni';
+$lang['descending'] = 'silazno';
+$lang['Download'] = 'Preuzmi';
+$lang['Download this file'] = 'preuzmi ovaj zapis';
+$lang['edit'] = 'uredi';
+$lang['wrong date'] = 'krivi nadnevak';
+$lang['excluded'] = 'isključeno';
+$lang['Your favorites'] = 'Moji omiljeni';
+$lang['display your favorites photos'] = 'prikaz mojih omiljenih slika';
+$lang['Favorites'] = 'Omiljeni';
+$lang['First'] = 'Prvi';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galerija je zaključana zbog održavanja. Molimo, navratite kasnije.';
+$lang['Page generated in'] = 'Stranica izrađena u ';
+$lang['guest'] = 'gost';
+$lang['Hello'] = 'Pozdrav';
+$lang['available for administrators only'] = 'dostupno samo upraviteljima';
+$lang['display this album'] = 'prikazuje slike u korijenu skupine';
+$lang['display last user comments'] = 'Pregled zadnjih korisničkih komentara';
+$lang['customize the appareance of the gallery'] = 'prilagodite izgled vaše galerije';
+$lang['search'] = 'pretraži';
+$lang['Home'] = 'Naslovnica';
+$lang['in this album'] = 'u ovoj skupini';
+$lang['in %d sub-album'] = 'u %d podskupini';
+$lang['in %d sub-albums'] = 'u %d podskupinama';
+$lang['included'] = 'uključeno';
+$lang['Invalid password!'] = 'Nevaljana zaporka!';
+$lang['Language']='Jezik';
+$lang['last %d days'] = 'zadnjih %d dana';
+$lang['Last'] = 'Zadnji';
+$lang['Logout'] = 'Odjava';
+$lang['obligatory'] = 'obvezno';
+$lang['Maximum photo height'] = 'Najveća dozvoljena visina slika';
+$lang['Maximum height must be a number superior to 50'] = 'Najveća visina mora biti broj veći od 50';
+$lang['Maximum photo width'] = 'Najveća dozvoljena širina slika';
+$lang['Maximum width must be a number superior to 50'] = 'Najveća širina mora biti broj veći od 50';
+$lang['display a calendar by creation date'] = 'prikaz kalendara po nadnevku izrade';
+$lang['display all photos in all sub-albums'] = 'prikaz svih stavki u svim podskupinama';
+$lang['return to normal view mode'] = 'povratak u uobičajeni način pregleda';
+$lang['display a calendar by posted date'] = 'prikaz kalendara po nadnevku objave';
+$lang['month'][10] = 'Listopad';
+$lang['month'][11] = 'Studeni';
+$lang['month'][12] = 'Prosinac';
+$lang['month'][1] = 'Siječanj';
+$lang['month'][2] = 'Veljača';
+$lang['month'][3] = 'Ožujak';
+$lang['month'][4] = 'Travanj';
+$lang['month'][5] = 'Svibanj';
+$lang['month'][6] = 'Lipanj';
+$lang['month'][7] = 'Srpanj';
+$lang['month'][8] = 'Kolovoz';
+$lang['month'][9] = 'Rujan';
+$lang['Most visited'] = 'Najposjećenije';
+$lang['display most visited photos'] = 'prikaz najposjećenijih slika';
+$lang['The number of photos per page must be a not null scalar'] = 'broj slika po stranici mora biti cjelobrojna vrijednost';
+$lang['Number of photos per page'] = 'Broj slika po stranici';
+$lang['Unknown identifier'] = 'Nepoznata oznaka';
+$lang['New password'] = 'Nova zaporka';
+$lang['Rate this photo'] = 'Ocjeni ovu sliku';
+$lang['Next'] = 'Slijedeći';
+$lang['no rate'] = 'bez ocjene';
+$lang['Photos posted within the last %d day.'] = 'Stavke objavljene u zadnjem %d danu.';
+$lang['Photos posted within the last %d days.'] = 'Stavke objavljene između zadnjih %d dana.';
+$lang['password updated'] = 'zaporka obnovljena';
+$lang['Recent period must be a positive integer value'] = 'Nedavno razdoblje mora biti pozitivna cjelobrojna vrijednost';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'slika';
+$lang['Click on the photo to see it in high definition'] = 'Klikni na sliku za pregled u visokoj razlučljivosti';
+$lang['Show file metadata'] = 'Prikaži meta podatke zapisa';
+$lang['Powered by'] = 'Osnaženo sa';
+$lang['Preferences'] = 'Postavke';
+$lang['Previous'] = 'Prethodni';
+$lang['Random photos'] = 'Slike slučajnog odabira';
+$lang['display a set of random photos'] = 'prikaz slika slučajnim odabirom';
+$lang['Recent albums'] = 'Nedavne skupine';
+$lang['display recently updated albums'] = 'prikaz nedavno obnovljenih skupina';
+$lang['Recent period'] = 'Nedavno razdoblje';
+$lang['Recent photos'] = 'Nedavne slike';
+$lang['display most recent photos'] = 'prikaz najnovijih slika';
+$lang['Redirection...'] = 'Preusmjeravanje...';
+$lang['Please, enter a login'] = 'Molimo, prijavite se';
+$lang['login mustn\'t end with a space character'] = 'prijava ne smije završavati razmakom';
+$lang['login mustn\'t start with a space character'] = 'prijava ne smije počinjati razmakom';
+$lang['this login is already used'] = 'ovo korisničko ime se već koristi';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-mail adresa mora biti oblika xxx@yyy.eee (npr : pasko@stranica.org)';
+$lang['Auto login'] = 'Samoprijava';
+$lang['remove this tag from the list'] = 'ukloni  ovaj tag iz popisa';
+$lang['representative'] = 'predstavnik';
+$lang['Search for Author'] = 'Pretraživanje po Autoru';
+$lang['Search in albums'] = 'Pretraživanje u Skupinama';
+$lang['Search by date'] = 'Pretraživanje po Nadnevku';
+$lang['Date'] = 'Nadnevak';
+$lang['End-Date'] = 'Krajnji Nadnevak';
+$lang['Kind of date'] = 'Vrsta nadnevka';
+$lang['Search for words'] = 'Pretraživanje po riječima';
+$lang['Search for all terms'] = 'Pretraživanje po svim uvjetima ';
+$lang['Search for any term'] = 'Pretraživanje po bilo kojem uvjetu';
+$lang['Empty query. No criteria has been entered.'] = 'Prazni upit. Nije uneseno ni jedno obilježje.';
+$lang['Search results'] = 'Ishodi pretraživanja';
+$lang['Search in sub-albums'] = 'Pretraga u podskupinama';
+$lang['searched words : %s'] = 'tražene riječi : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'postavi za predstavnika skupine';
+$lang['Show number of comments'] = 'Prikaži broj komentara';
+$lang['Show number of hits'] = 'Prikaži broj posjeta';
+$lang['slideshow'] = 'klizni prikaz';
+$lang['stop the slideshow'] = 'zaustavi klizni prikaz';
+$lang['Specials'] = 'Posebnosti';
+$lang['SQL queries in'] = 'SQL upita u ';
+$lang['display only recently posted photos'] = 'prikaz samo nedavno objavljenih slika';
+$lang['return to the display of all photos'] = 'povratak u prikaz svih slika';
+$lang['the beginning'] = 'početak';
+$lang['Thumbnails'] = 'Povezne sličice';
+$lang['Menu'] = 'Izbornik';
+$lang['A comment on your site'] = 'Komentar na vašem web mjestu';
+$lang['today'] = 'danas';
+$lang['Update your rating'] = 'Obnovite svoju ocjenu';
+$lang['the username must be given'] = 'mora se upisati korisničko ime';
+$lang['useful when password forgotten'] = 'korisno kada se zaboravi zaporka';
+$lang['Quick search'] = 'Brzo pretraživanje';
+$lang['Connected user: %s'] = 'Spojeni korisnik: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Preglednik: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Komentar: %s';
+$lang['Comment by %s'] = 'Komentirao-la %s';
+$lang['User: %s'] = 'Korisnik: %s';
+$lang['Email: %s'] = 'E-mail: %s';
+$lang['Admin: %s'] = 'Upravitelj: %s';
+$lang['Registration of %s'] = 'Upis od %s';
+$lang['Album: %s'] = 'Skupina: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Loš status za korisnika "guest", koristi se pretpostavljeni status. Molimo obavjestite webmaster-a.';
+$lang['this email address is already in use'] = 'korisnik već koristi ovu e-mail adresu';
+$lang['Album results for'] = 'Ishodi skupine za ';
+$lang['Tag results for'] = 'Ishodi tagova za';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Pokreni klizni prikaz';
+$lang['Pause of slideshow'] = 'Zaustavi klizni prikaz';
+$lang['Repeat the slideshow'] = 'Ponovi klizni prikaz';
+$lang['Not repeat the slideshow'] = 'Ne ponavljaj klizni prikaz';
+$lang['Reduce diaporama speed'] = 'Smanji brzinu diaporama-e';
+$lang['Accelerate diaporama speed'] = 'Povećaj brzinu diaporama-e';
+$lang['Submit'] = 'Pošalji';
+$lang['Yes'] = 'Da';
+$lang['No'] = 'Ne';
+$lang['%d photo']='%d slika';
+$lang['%d photos']='%d slike';
+$lang['%d photo is also linked to current tags'] = '%d slika također povezana sa trenutnim tagovima';
+$lang['%d photos are also linked to current tags'] = '%d slike također povezana sa trenutnim tagovima';
+$lang['display photos linked to this tag'] = 'Pregledaj slike povezane samo sa ovim tag-om';
+$lang['photos posted during the last %d days'] = 'slike objavljene tijekon zadnjih %d dana';
+$lang['Piwigo Help'] = 'Piwigo Pomoć';
+$lang['Rank'] = 'Redoslijed';
+$lang['group by letters'] = 'složeno po slovima';
+$lang['letters'] = 'slova';
+$lang['show tag cloud'] = 'prikaži tag oblak';
+$lang['cloud'] = 'oblak';
+$lang['Are you sure?'] = 'Sigurni ste?';
+$lang['Reset to default values'] = 'Povratak na pretpostavljene vrijednosti';
+$lang['delete all photos from your favorites'] = 'izbriši sve slike iz omiljenih';
+$lang['Sent by'] = 'Poslano od';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Kolačići su onemogućeni ili nisu podržani od vašeg preglednika. Morate ih omogućiti za prijavu.';
+$lang['Edit a comment'] = 'Uredi komentar';
+$lang['(!) This comment requires validation'] = '(!) Ovaj komentar zahtijeva ovjeru';
+$lang['Welcome'] = 'Dobrodošli';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Dobrodošli u vašu Piwigo galeriju slika!';
+$lang['... or browse your empty gallery'] = '... ili pregledajte praznu galeriju';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ili možete isključiti ovu poruku, nekako ću se snaći sam';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Zdravo %s, vaša Piwigo galerija je prazna!';
+$lang['I want to add photos'] = 'Želim dodati slike';
+$lang['Manage this user comment: %s'] = 'Upravljanje ovim korisničkim komentarom: %s';
+$lang['This author modified following comment:'] = 'Ovaj autor je promijenio slijedeći komentar:';
+$lang['This author removed the comment with id %d'] = 'Ovaj autor je uklonio komentar sa id %d';
+$lang['html tags are not allowed in login'] = 'u korisničkim podacima nisu dozvoljene html oznake';
+$lang['%d rates'] = '%d ocjena';
+$lang['Rating score'] = 'Rezultat ocjenjivanja';
+$lang['Invalid username or email'] = 'Korisničko ime ili email nisu valjani';
+$lang['Password reset is not allowed for this user'] = 'Ovom korisniku nije dozvoljeno ponovno postavljanje lozinke';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Korisnik "%s" nema email adresu, ponovno postavljanje lozinke nije moguće';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Netko je zatražio ponovno postavljanje zaboravljene lozinke za korisnički račun:';
+$lang['Username "%s" on gallery %s'] = 'Korisničko ime "%s" na galeriji %s';
+$lang['To reset your password, visit the following address:'] = 'Za izmjenu zaboravljene lozinke posjetite:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ukoliko ste greškom dobili ovu poruku slobodno je zanemarite i ništa se neće desiti.';
+$lang['Password Reset'] = 'Zaboravili ste lozinku?';
+$lang['Check your email for the confirmation link'] = 'Provjerite svoj email, naći ćete link za potvrdu.';
+$lang['Invalid key'] = 'Ključ nije valjan';
+$lang['The passwords do not match'] = 'Lozinke se ne podudaraju';
+$lang['Your password has been reset'] = 'Lozinka vam je izmijenjena';
+$lang['Return to home page'] = 'Povratak na početnu stranicu';
+$lang['Please enter your username or email address.'] = 'Molimo vas da unesete vaše korisničko ime ili email adresu.';
+$lang['You will receive a link to create a new password via email.'] = 'Link za izmjenu lozinke poslan vam je u email poruci.';
+$lang['Username or email'] = 'Korisničko ime ili lozinka';
+$lang['Change my password'] = 'Promjena lozinke';
+$lang['Enter your new password below.'] = 'Unesite vašu novu lozinku.';
+$lang['EXIF Metadata'] = 'EXIF metapodaci';
+$lang['IPTC Metadata'] = 'IPTC metapodaci';
+$lang['Edit'] = 'Uredi';
+
+$lang['%d rate'] = '%d ocjena';
+$lang['2small'] = 'XXS - sitno';
+$lang['Bad request'] = 'Krivi zahtjev';
+$lang['Date created, new &rarr; old'] = 'Datum nastanka, new &rarr; old';
+$lang['Date created, old &rarr; new'] = 'Datum nastanka, old &rarr; new';
+$lang['Date posted, new &rarr; old'] = 'Datum objave, new &rarr; old';
+$lang['Date posted, old &rarr; new'] = 'Datum objave, old &rarr; new';
+$lang['Desktop'] = 'Desktop';
+$lang['File name, A &rarr; Z'] = 'Ime datoteke, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Ime datoteke, Z &rarr; A';
+$lang['Forbidden'] = 'Zabranjeno';
+$lang['Hello %s,'] = 'Pozdrav %s,';
+$lang['Here are your connection settings'] = 'Postavke za povezivanje';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ukolio ste greškom primili ovu poruku, molimo kontaktirajte nas na %s';
+$lang['Manual sort order'] = 'Ručno sortiranje';
+$lang['Mobile'] = 'Mobilna verzija';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Brojčana oznaka, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Brojčana oznaka, 9 &rarr; 1';
+$lang['Original'] = 'Izvorno';
+$lang['Page not found'] = 'Stranica nije pronađena';
+$lang['Password: %s'] = 'Lozinka: %s';
+$lang['Permalink for album not found'] = 'Stalna poveznica za album nije pronađena';
+$lang['Photo sizes'] = 'Veličine fotografije';
+$lang['Photo title, A &rarr; Z'] = 'Naziv fotografije, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Naziv fotografije, Z &rarr; A';
+$lang['Piwigo encountered a non recoverable error'] = 'Došlo je do greške u Piwigo sustavu.';
+$lang['Rating score, high &rarr; low'] = 'Ocjena, , high &rarr; low';
+$lang['Rating score, low &rarr; high'] = 'Ocjena, low &rarr; high';
+$lang['Requested album does not exist'] = 'Album ne postoji';
+$lang['Requested tag does not exist'] = 'Ta oznaka ne postoji';
+$lang['Send my connection settings by email'] = 'Pošalji moje korisničke podatke e-mailom';
+$lang['Show latest comments first'] = 'Prikaži prvo najnovije komentare';
+$lang['Show oldest comments first'] = 'Prikaži prvo najstarije komentare';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Uspješno ste se regstrirali. Uskoro ćete primiti postavke e-mailom. Dobrodošli!';
+$lang['Thank you for registering at %s!'] = 'Hvala za regitraciju na %s';
+$lang['Username modification'] = 'Promjena korisničkog imena';
+$lang['Username: %s'] = 'Korisničko ime: %s';
+$lang['View in'] = 'Pogledaj u';
+$lang['Visits, high &rarr; low'] = 'Posjeti, high &rarr; low';
+$lang['Visits, low &rarr; high'] = 'Posjeti, low &rarr; high';
+$lang['Your username has been successfully changed to : %s'] = 'Korisničko ime je uspješno promijenjeno u: %s';
+$lang['large'] = 'L - veliko';
+$lang['medium'] = 'M - srednje';
+$lang['small'] = 'S - malo';
+$lang['square'] = 'Kvadrat';
+$lang['thumb'] = 'Sličica';
+$lang['xlarge'] = 'XL - jako veliko';
+$lang['xsmall'] = 'Xs - jako malo';
+$lang['xxlarge'] = 'XXL - ogromno';
+$lang['Email address is mandatory'] = 'E-mail adresa je obavezna';
+$lang['Username is mandatory'] = 'Korisničko ime je obavezno';
+$lang['Website'] = 'Web sjedište';
+$lang['Your website URL is invalid'] = 'URL vašeg web sjedišta nije valjan';
+$lang['mandatory'] = 'obavezno';
+$lang['Password is missing. Please enter the password.'] = 'Nedostaje zaporka. Molimo unesite zaporku.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nedostaje potvrda zaporke. Molimo potvrdite odabranu zaporku.';
+?>
Index: /tags/2.6.0RC1/language/hr_HR/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,121 @@
+<h2>Uredi skupinu</h2>
+
+<h3>Obavijesti</h3>
+
+<ul>
+
+  <li><strong>naziv</strong>: preimenuj skupinu (nestvarno preimenovanje u slučaju stvarne skupine).</li>
+
+  <li><strong>opis</strong>: prikažite uopćeni opis sadržaja, ovaj tekst će se prikazati ispod stranice poveznih sličica.</li>
+
+</ul>
+
+<h3>Premjesti</h3>
+
+<p>Ako je skupina nestvarna, možete je premjestiti. Premještanje skupine znači promjenu njene nadređene skupine.</p>
+
+<h3>Mogućnosti</h3>
+
+<ul>
+
+  <li><strong>Vrsta pristupa</strong>: Upravljanje dozvolama. Ako postavite skupinu kao osobnu, sve njoj podređene skupine postaju osobne. Ako postavite
+  skupinu kao javnu, sve njoj nadređene skupine postaju javne.</li>
+
+  <li><strong>Zaključavanje</strong>: Skupina i njene podskupine postaju nedostupne zbog poslova održavanja.</li>
+
+  <li><strong>Komentari</strong>: Dozvoli korisnicima da mogu komentirati stavke ove skupine.</li>
+
+  <li><strong>Dozvoli prebacivanje</strong>: Dozvoli korisnicima da mogu prebacivati zapise na poslužitelj. Ova mogućnost je dostupna samo za stvarne skupine (ne i za nestvarne skupine).</li>
+
+</ul>
+
+<p>Ovim mogućnostima možete upravljati i preko "Svojstva" upravnog prozora
+ (prozori <span class="pwgScreen">Prebaci</span>, <span
+class="pwgScreen">Komentari</span>, <span class="pwgScreen">Zaključaj</span>,
+<span class="pwgScreen">Javno/Osobno</span>, <span
+class="pwgScreen">Predstavnik</span> dostupnih preko <span
+class="pwgScreen">Uprava, Skupine, Svojstva</span>).</p>
+
+<h3>Redoslijed slaganja</h3>
+
+<p>Odaberite ako će se koristiti pretpostavljeni redoslijed slaganja.</p>
+
+<p>Označite ako će se taj redoslijed primjeniti i na podskupine.</p>
+
+<p>Odaberite posebno slaganje po stupcima za korištenje kod ove skupine.</p>
+<ul>
+<li><strong>Nadnevak izrade</strong>: Nadnevak stvaranja slike</li>
+<li><strong>Nadnevak postavljanja</strong>: Nadnevak usklađivanja</li>
+<li><strong>Prosječna ocjena (*)</strong>: Prosječna ocjena se može mijenjati od strane posjetitelja</li>
+<li><strong>Najposjećenije (*)</strong>: Trenutna posjeta mijenja redoslijed najposjećenijih</li>
+<li><strong>Naziv zapisa</strong>: Dano ime u obavijesnim poljima</li>
+<li><strong>Id</strong>: Unutarnja Id oznaka (novije skupine imaju veći id nego starije.</li>
+
+</ul>
+<p><strong>(*)</strong>Budite oprezni i prethodno isprobajte jer možete dobiti neočekivane ishode.</p>
+
+
+<h3>Predstavnik</h3>
+
+<p>Predstavnik skupine je povezna sličica postavljena da predstavlja
+skupinu na glavnoj stranici (<span class="pwgScreen">category.php</span>) kada skupina
+sadrži samo podskupine (kao korijenska skupina).</p>
+
+<p>Postoje 4 načina za postavljanje slike predstavnika skupine :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Stranica Slika</span>: dugmad na traci postupaka,
+  jedan od njih omogućava postavljanje prikazane slike kao predstavnika skupine. ovo dugme je dostupno samo upravnicima.</li>
+
+  <li><span class="pwgScreen">Izmjena podataka o slici</span> u upravnom dijelu. Ovaj prozor dostupan preko <span
+  class="pwgScreen">picture.php</span> ili <span class="pwgScreen">Slijedna obrada </span> u <em>pojedinačnom načinu</em>. Pogledajte sustav pomoći u ovom prozoru za pojedinosti.</li>
+
+  <li><span class="pwgScreen">Uprava, Skupine, Svojstva, Predstavnik</span>. Pogledajte sustav pomoći u ovom prozoru za pojedinosti.</li>
+
+  <li><span class="pwgScreen">Uredi skupinu</span> (ovaj prozor).</li>
+
+</ul>
+
+<p>Predstavljanje ovisi o postavkama stavke <code>allow_random_representative</code> (vidi <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>U pretpostavljenom načinu (<code>allow_random_representative</code> postavljen na false)
+svaka skupina koja sadrži najmanje jednu stavku je predstavljena određenim predstavnikom. Jednom postavljen (pri stvaranju skupine), predstavnik se mijenja jedino 
+kada upravnik to zatraži. Ako predstavnik nije odgovarajući možete zatražiti <strong>Odabir novog predstavnika slučajnim pristupom</strong>.</p>
+
+<p>Ako je postavka <code>allow_random_representative</code> postavljena na true, skupina koja ima sadržaj ne može imati prepostavljenog prestavnika. 
+Jednostavno upotrijebite <strong>Izbriši predstavnika</strong> dugme.</p>
+
+<p>Ako skupina nema stavki (nego samo podskupine) može biti predstavljena bilo kojom 
+stavkom podskupina zahvaljujući prozoru  <span class="pwgScreen">Promijeni podatke o slici</span>. Jedina mogućnost na trenutnom prozou je 
+ <strong>Izbriši predstavnika</strong> dugme, a nakon birisanja, odabir predstavnika nije više dostupan.</p>
+
+<h3>Poveži sve stavke skupine u novu skupinu</h3>
+
+<ul>
+
+<li><strong>Naziv nestvarne skupine</strong>: Novi naziv skupine će se odrediti, 
+sve slike trenutne skupine će se povezati sa novonastalom.</li>
+
+<li><strong>Nadređena skupina</strong>: Gdje će se nova skupina nalaziti, ostavi prazno za postavu iz polazišta.</li>
+
+</ul>
+
+<h3>Poveži sve stavke skupine sa nekim postojećim skupinama</h3>
+
+<ul>
+
+<li><strong>Skupine</strong>: Odaberite odredišnu skupinu.</li>
+
+</ul>
+
+<h3>Pošalji e-mail obavijest članovima grupe</h3>
+
+<ul>
+
+<li><strong>Grupa</strong>: adrese grupe</li>
+
+<li><strong>Sadržaj e-mail poruke</strong>: sadržaj po volji koji će se poslati.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/hr_HR/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Premještanje nestvarnih skupina</h2>
+
+<p>Samo nestvarne skupine mogu imati novu nadređenu skupinu.</p>
+
+<h3>Nestvarne skupine za premještaj</h3>
+
+<p>Odaberite bilo koje nestvarne skupine koje želite premjestiti. 
+Ako je popis prazan, to znači da niste izradili ni jednu.</p>
+
+<h3>Nova nadređena skupina</h3>
+
+<p>Odaberite novu nadređenu skupinu (nestvarnu ili stvarnu). 
+Ukoliko ne odaberete, odabrane nestvarne skupine će se prebaciti u korijensku mapu.
+Ne možete premještati skupinu u  nju samu ili njoj podređenu skupinu.</p>
Index: /tags/2.6.0RC1/language/hr_HR/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/cat_options.html	(revision 25596)
@@ -0,0 +1,31 @@
+<h2>Mogućnosti skupine</h2>
+
+<p>Ovaj prozor omogućava upravniku upravljanje mogućnostima skupina za više njih odjednom.</p>
+
+<dl>
+
+  <dt>Prebačaj</dt>
+  <dd>Postavi skupine otvorene za prebačaj slika posjetiteljima galerije. Prikazane su samo stvarne i mjesne skupine.</dd>
+
+  <dt>Komentari</dt>
+  <dd>Ovlasti korisnicima za dodavanje komentara u odabranim skupinama.
+Odabire skupine koje su otvorene za komentare. 
+Slika se može komentirati ako pripada najmanje jednoj skupini sa odobrenim komentiranjem.</dd>
+
+  <dt>Zaključaj</dt>
+  <dd>Odabrane skupine će privremeno biti nedostupne zbog održavanja. Ako
+  zaključate skupinu, sve njoj podređene skupine se također zaključavaju. Ako otključavate
+  skupinu, sve njoj nadređene skupine se također otključavaju.</dd>
+
+  <dt>Javno / osobno</dt>
+  <dd>Upravljanje ovlastima za odabrane skupine. Ako su odabrane skupine osobne
+   : trebate ovlastiti korisnike i/ili grupe za pristup. Ako postavite skupinu za osobnu, sve njoj nadređene skupine postaju osobne
+ . Ako postavite skupinu kao javnu, sve njene podređene skupine postaju javne.</dd>
+
+  <dt>Prestavnik</dt>
+  <dd>Ovom mogučnošću se može upravljati samo ako je postavljena stavka
+  <code>allow_random_representative</code> (vidi <span
+  class="filename">include/config_defaults.inc.php</span>) na 
+  <em>true</em>. Svaka skupina se može predstaviti slikom slučajnog odabira ili baš određenom slikom.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/hr_HR/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Upravljanje dozvolama (ovlastima) za skupinu</h2>
+
+<p>Ovaj prozor je dostupan samo za osobne skupine. Ovdje možete odabrati korisnike
+i grupe koji imaju dozvolu pristupa.</p>
+
+<h3>Grupe</h3>
+
+<p>Možete dati ili uskratiti dozvole grupama za trenutnu skupinu. Promjenom 
+grupnih ovlasti vjerojatno će te promijeniti popis odobrenih korisnika zahvaljujući grupnoj pripadnosti.</p>
+
+<h3>Korisnici</h3>
+
+<p>Možete dati ili uskratiti dozvole pojedinim korisnicima. Korisnici dozvoljeni grupnom pripadnošću mogu biti posebno
+odobreni ili zabranjeni.</p>
Index: /tags/2.6.0RC1/language/hr_HR/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/configuration.html	(revision 25596)
@@ -0,0 +1,111 @@
+<h2>Podešavanje</h2>
+
+<p>Ovaj prozor omogućava upravniku obavljanje osnovnih podešavanja. Zaista, ovaj
+prozor prikazuje samo najosnovnije postavke podešavanja koje bi trebale biti dovoljne za
+veliku većinu upravnika. Ako želite proučiti ostale brojne (i napredne) 
+postavke podešavanja, pregledajte zapis <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Ovaj prozor je podijeljen u nekoliko odjeljaka, tematski preslaguje postavke podešavanja.</p>
+
+
+<h3>Glavo</h3>
+<ul>
+  <li><strong>Naslov galerije</strong>: koristi se za RSS izvore i e-mail obavijesti.</li>
+
+  <li><strong>Baner stranice</strong>: prikazan na svakoj javnoj stranici.</li>
+
+  <li><strong>URL galerije</strong>: koristi se za RSS izvore.</li>
+
+  <li><strong>Zaključavanje galerije</strong>: Zaključavanje cjelokupne galerije zbog poslova održavanja. Jedino upravni korisnici mogu pristupiti galeriji.</li>
+
+  <li><strong>Ocjene</strong>: POcjenjivanje slika je omogućeno.</li>
+
+  <li><strong>Ocjenjivanje od gostiju</strong>: Čak i nepoznati posjetitelji mogu ocjenjivati slike.</li>
+
+  <li><strong>Dozvoli upis korisnika</strong>: Upis je odobren za sve.</li>
+
+  <li><strong>E-mail adresa je obvezna za sve korisnike</strong>: E-mail adresa će se provjeravati pri upisu ili izmjeni profila osim ako se postupak vrši preko upravnog dijela.</li>
+
+  <li><strong>E-mail poruka upravniku pri upisu novog korisnika</strong>: Upravnik će dobiti obavijesnu e-mail poruku pri svakom novom upisu.</li>
+
+</ul>
+
+<h3>Povijest</h3>
+
+  <p>Posjete stranicama <span
+  class="pwgScreen">category.php</span> i <span
+  class="pwgScreen">picture.php</span> će biti pohranjene u
+  <code>povijest</code> tabeli.</p>
+  
+  <p>Posjete će biti vidljive u <span
+  class="pwgScreen">Uprava, Posebnosti, Povijest</span>.</p>
+
+<ul>
+  <li><strong>Pohrani posjete stranicama po gostima</strong>: posjete stranicama se vode po gostima.</li>
+
+  <li><strong>Pohrani posjete stranicama po korisnicima</strong>: posjete stranicama se vode po korisnicima.</li>
+
+  <li><strong>Pohrani posjete stranicama po upravnicima</strong>: posjete stranicama se vode po upravnicima.</li>
+
+</ul>
+
+<h3>Komentari</h3>
+<ul>
+
+  <li><strong>Komentari za sve</strong>: Čak i obični posjetitelji mogu pisati komentare.</li>
+
+  <li><strong>Broj komentara po stranici</strong>.</li>
+
+  <li><strong>Ovjera</strong>: upravnik ovjerava komentare posjetitelja prije javne objave. Ovjera korisničkih kometara 
+  se vrši u <span class="pwgScreen">Uprava, Slike, Komentari</span>.</li>
+
+  <li><strong>Pošalji e-mail obavijest po upisu kometara</strong>:
+Šalje e-mail obavijesnu poruku upravnicima kada korisnici upišu komentare koji su već ovjereni.</li>
+
+  <li><strong>Pošalji e-mail obavijest kada komentar treba ovjeru</strong>:
+Šalje e-mail obavijesnu poruku upravnicima kada korisnici upišu komentare koji trebaju biti ovjereni.
+Ovjeri korisničkih komentara se pristupa preko <span class="pwgScreen">Uprava, Slike, Komentari</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>Prebacivanje</h3>
+<ul>
+<!--TODO -->  <li><strong>Prikaži poveznicu prebacivanja svaki put</strong>: Ako postoje skupine za prebacivanje, poveznica DODAJ će biti prikazana za svaku skupinu.</li>
+<!--TODO -->  <li><strong>Korisnička razina pristupa za prebacivanje</strong>: Omogućava ograničavanje prebacivanja od korisnika</li>
+  <li><strong>E-mail poruka upraviteljima po prebacivanju zapisa</strong>: Upravitelji će dobiti e-mail poruku za svaku prebačenu korisničku sliku.</li>
+</ul>
+
+<h3>Pretpostavljeni prikaz</h3>
+
+<p>Ovdje možete mijenjati postavke prikaza korištene kao zadane, kada gost nije prijavljen. Jednom kada se prijavi, ove mogućnosti će biti promijenjene korisnički izabranima (izmjenjivo u <span class="pwgScreen">profili</span>).</p>
+
+<p>Moguće je promijeniti mogućnosti prikaza za sve korisnike, ali preko prozora is <span class="pwgScreen">Uprava, Prijavnica, Korisnici</span>, gdje prikaz možete odrediti za odabrani popis korisnika.</p>
+
+<ul>
+
+  <li><strong>Jezik</strong>: zahvaća samo sučelje Piwigo galerije. Nazivi skupina, slika i svi opisi nisu obuhvaćeno prijevodom.</li>
+
+  <li><strong>Broj slika po redu</strong></li>
+
+  <li><strong>Broj redova po stranici</strong></li>
+
+  <li><strong>Tema sučelja</strong></li>
+
+  <li><strong>Nedavno razdoblje</strong>: Po danima. Razdoblje u kojem se prikazana slika smatra novom. Mora biti veće od 1 dan.</li>
+
+  <li><strong>Razgranaj sve skupine</strong>: Pretpostavljeno razgranati sve skupine u 
+  izbornik? <em>Pozor</em>: ova mogućnost može opteretiti računalo poslužitelj i stvoriti ogromni izbornik ako vaše sustav sadrži mnogo skupina.</li>
+
+  <li><strong>Prikaži broj komentara</strong>: prikazuje broj komentara za svaku sliku na stranici poveznih sličica. Zahtjevno za poslužitelja.</li>
+
+  <li><strong>Prikaži broj posjeta</strong>: prikaži broj posjeta slici pravo ispod povezne sličice na stranici. 
+  Samo kada je napredna postavka : <br />  $conf['show_nb_hits'] = true; <br />
+  Obavijest: pretpostavljeno je false .</li>
+
+  <li><strong>Najveća širina slika</strong>: najveća dozvoljena širina. Ako je slika veča od ove postavke, biti će prilagođena pri prikazu. Ukoliko razmišljate o određivanju ove vrijednosti, možda bi bilo
+  bolje prilagoditi širinu vaših slika pri izradi umjesto ovog.</li>
+
+  <li><strong>Najveća visina slika</strong>: iste primjedbe kao ikod prethodne stavke.</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/hr_HR/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,100 @@
+<h2>Extend for templates configuration</h2>
+
+<h3>Goal</h3>
+<p>Define replacement conditions for each template from template-extension
+(template called "replacer").</p>
+
+<p>"original template" from ./template/yoga (or any other than yoga)
+ will be replaced by a "replacer" if the replacer is linked to this "original template"
+ (and optionally, when the requested URL contains an "optional URL keyword").</p>
+
+<p>"Optional URL keywords" are those you can find after the module name in URLs.</p>
+
+<p>Therefore "Optional URL keywords" can be an active "permalink" 
+(see permalinks in our documentation for further explanation).</p>
+
+<p>Read: `<a href="#warnings">Warning</a>` usage conditions.</p>
+
+<h3>What are template extensions?</h3>
+
+<p>This configuration tool is powerfull for beginners and advanced users.
+By FTP, in the template-extension folder, the Webmaster can duplicate a lot of
+ the distributed .tpl files ("original template") with a different name 
+ ("replacer").
+ 
+ "Original templates", current original supported templates are:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Where can I find "original templates"?</h3>
+
+<p>Distributed original templates are in template/yoga/ 
+(don't edit them in place for upgrade perspectives). So with "original templates", 
+any webmaster can create his "replacers (customized templates)".</p>
+
+<h3>Where should I save "replacers"?</h3>
+
+<p><strong>Replacers (customized templates)</strong> must be placed in the 
+template-extension folder (or its subfolders).
+Replacers can have any filename with the .tpl extension. For example: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>How can I activate my "replacers"?</h3>
+<p>An <strong>original template</strong> should be assigned to each
+ <strong>replacer (customized templates)</strong> to activate the related replacements.
+ This is the goal of "Extend for templates" in the Configuration Administration menu.</p>
+
+<p>If you select an <strong>optional URL keyword</strong> then replacements 
+will be operate only on pages with this keyword. For example: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Advanced users will use permalinks as <strong>optional URL keyword</strong>. </p>
+
+<p>If you select a <strong>Bound template</strong> then replacements will be operate only on this template.</p>
+
+<h3>How can I deactivate my "replacers"?</h3>
+<ul>
+<li>Unselect related "Original templates".</li>
+<li>By FTP delete of "replacers".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+
+  <li><strong>Original template</strong> must be the "original" template 
+  otherwise you could have unpredictable results!</li>
+
+  <li>On several <strong>replacers (customized templates)</strong> with the
+  same<strong>Original template</strong> and the same <strong>optional URL 
+  keyword</strong> only the last replacer is active.</li>
+
+  <li>Unselected <strong>optional URL keyword</strong> will active the replacer
+  on any template usage. As previous point, order can override previous
+  selected replacers.</li>
+
+  <li>Subfolders:
+Subfolders are ignored but they are usefull to change current order.<br />
+distributed-samples: for test purpose are distributed! 
+<strong>Don't edit them</strong> create your own ones.
+</li>
+
+  <li>On delete of a replacer the <strong>Original template</strong> is 
+  immediately reactivated.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/hr_HR/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Popis grupa</h2>
+
+<p>ovo je mjesto gdje možete upravljati postojećim grupama.</p>
+
+<h3>Dodaj grupu</h3>
+
+<p>Upravnik može dodavati grupe.</p>
+
+<h3>Popis grupa</h3>
+
+<p>Popis dozvoljava za svaku stavku da:</p>
+
+
+<ul>
+  <li>idi na popis članova</li>
+  <li>idi na ovlasti</li>
+  <li>izbriši grupu (zahtijeva odabir potvrdne kućice)</li>
+  <li>promijeni "default" tj. pretpostavljeno stanje(zahtijeva odabir potvrdne kućice)</li>
+</ul>
+
+<h3>Pretpostavljene grupe</h3>
+<p>Pretpostavljene grupe su grupe koje se same povezuju sa novim korisnikom.</p>
Index: /tags/2.6.0RC1/language/hr_HR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+﻿<p>Several ways to add your photos in your gallery:</p>
+
+<ul>
+<li><strong>Direct upload</strong> inside your web browser is the
+simplest and most immediate way. It depends on your browser capabilities
+and your web server. For a huge quantity of photos or in case you encounter some problem,
+the other methods are just waiting for you!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Go to Direct Upload </a></p>
+
+<ul>
+<li><strong>pLoader</strong> is a desktop application, to be installed on your computer. Drag &amp; drop photos into pLoader window, click on <em>"Upload to Piwigo"</em> and let pLoader do the job. You can find other desktop applications such as <strong>WinToPiwigo</strong> or the <strong>Digikam</strong> export plugin to Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Go to pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+<li><strong>FTP transfer</strong> is the most recommended way to add a
+very large collection of photos with a minimum number of clicks. Follow
+the guide to prepare your photos. The FTP method let you control precisely
+the physical organization of your photos on your server.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Go to FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/hr_HR/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/history.html	(revision 25596)
@@ -0,0 +1,45 @@
+<h2>History</h2>
+
+<p>These screens allows you to follow the historical navigation en Piwigo
+according to the options yo have chosen in - Administration - General - History index.</p>
+	
+<h3>Statistics</h3>
+<ul>
+  <p>If you have chosen to keep the pages visited (<span
+class="pwgScreen">index.php</span> and <span
+class="pwgScreen">picture.php</span>) in the table <code>history. </code>
+This index allow you to follow the pages visited.</p>
+	
+	<li><strong>Global statistics</strong> : you can visualize per year. </li>
+	
+	<li><strong>Yearly statistics</strong> : you can visualize per month in the year selected.</li>
+	
+	<li><strong>Monthly statistics</strong> : you can visualize per days in the month selected.</li>
+	
+	<li><strong>Dayly statistics</strong> : you can visualize per hours in the day selected.</li>
+	
+</ul>
+
+<h3>Search</h3>
+<ul>
+  <p>If you have chosen to keep the pages visited (<span
+class="pwgScreen">index.php</span> and <span
+class="pwgScreen">picture.php</span>) in the table <code>history. </code>
+This index allow to follow en details the pages visited on the site with 
+the help of different filters.</p>
+ 
+	<li><strong>Filter per date</strong> : chose interval of date you wisk
+	to observe the activity.</li>
+	
+	<li><strong>Filter per type of element</strong> : chose the type 
+	of element you wisk to observe the activity.</li>
+	
+	<li><strong>Filter per user</strong> : chose user you wisk to 
+	observe the activity.</li>
+	
+	<li><strong>Filter per name of the file</strong> : chose name of the file 
+	you	wisk to observe the activity.</li>
+	
+	<li><strong>Filter per identifying image</strong> : chose identifying image 
+	you wisk to observe the activity.</li>
+</ul>
Index: /tags/2.6.0RC1/language/hr_HR/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/hr_HR/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/maintenance.html	(revision 25596)
@@ -0,0 +1,62 @@
+<h2>Maintenance</h2>
+
+<p>To optimize page generation time, Piwigo uses cached
+information. For example, instead of counting the number of pictures
+contained in each category at each page reload, this information is stored
+in the database. In theory, this information should always be correct, but
+sometimes an error can occur and cached information becomes wrong.</p>
+
+<p>Some informations become useless with time. Deleting this useless
+information from database make you save disk space.</p>
+
+<ul>
+
+  <li>
+    <strong>Nepovezane stavke:</strong>
+    Prikaz slika koje nisu povezane ni s jednom nestvarnom skupinom.
+  </li>
+  <li>
+    <strong>Slike istog naziva u više od jednoj stvarnoj skupini:</strong>
+    Prikaz slika istog naziva koje se nalaze u više skupina.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Update categories informations:</strong> For each category,
+  informations to update or control are the following : list of parent
+  categories, number of pictures, date of the last picture, position among
+  brother categories, position among all categories. This action also checks
+  the coherence of representative picture.</li>
+
+  <li><strong>Update photos information:</strong> For each picture,
+  informations to update are : full path to file, average
+  rate. <em>Warning</em>: do not get confuse with metadata informations
+  which can be synchronized from <span class="pwgScreen">Administration,
+  Categories, Synchronize</span> or by reaching the modification screen of a
+  single picture (through <span class="pwgScreen">Picture</span> for
+  example).</li>
+
+  <li><strong>Repair and optimize database:</strong>
+  For each table, re-odrer, repair and optimize operations are done.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>Purge history detail:</strong> Delete all lines from
+  <code>history</code> table. Screen <span class="pwgScreen">Administration,
+  Specials, History</span> shows no informations anymore on past
+  history. <em>Warning</em>: all data will be lost and there is no way to
+  get informations back.</li>
+
+  <li><strong>Purge history summary:</strong> Delete all the summary information about visit history. This summary is calculated from the history detail.</li>
+
+  <li><strong>Purge sessions:</strong> Delete expired user sessions.</li>
+
+  <li><strong>Purge never used notification feeds</strong></li>
+
+  <li><strong>Purge search history</strong></li>
+  
+  <li><strong>Purge compiled templates</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/hr_HR/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Obavijesti e-mail porukama</h2>
+
+<p>Ovaj prozor omogućaa postavu i upravljanje e-mail obavijestima korisnicima o novostima u vašoj galeriji.</p>
+
+<p>Sastoji se od 3 kartice:</p>
+
+<h3>Parametri</h3>
+<p>Dostupno samo webmasterima, ova kartica postavlja parametre e-mail obavješćivanja.</p>
+
+<h3>Pretplata</h3>
+<p>Dostupno samo webmasterima, ova kartica upravlja pretplatom/prekidom pretplate korisnika na e-mail obavijesti.</p>
+
+<h3>Envoi</h3>
+<p>Dostupno samo webmasterima i upraviteljima, ova kartica omogućava slanje e-mail poruka za novosti.</p>
+
Index: /tags/2.6.0RC1/language/hr_HR/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Stalne poveznice</h2>
+
+<p>Koriste se za ljepši prikaz URL-a skupine. Kada skupina ima određenu stalnu poveznicu, ID skupine nije više nužan u URL-u.</p>
+
+<p>Kada je stalna poveznica izbrisana, imate mogućnost pohraniti je u pismohrani poveznica, tako da vanjske poveznice na PWG stranice i dalje ispravno rade. U pismohrani stalnih poveznica možete vidjeti nadnevak kada je izbrisana, vrijeme posljednjeg korištenja i koliko puta.</p>
+
+<p>Zapamtite da stalna poveznica mora biti jedinstvena po skupini. Isto tako u pismohrani stalnih poveznica ne možete imati istu više puta.</p>
Index: /tags/2.6.0RC1/language/hr_HR/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/search.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Pretraživanje</h2>
+
+<p>Ova stranica omogućava pretragu slika u cijeloj galeriji.</p>
+
+<dl>
+
+  <dt>Pretraga po riječima</dt>
+  <dd>Pretažuje po upisanim riječima po svim obilježjima povezanim sa slikama prikazanim u galeriji. Koristite * kao zamijenu za djelomična poklapanja.</dd>
+
+  <dt>Pretraga po autoru</dt>
+  <dd>Koristite * kao zamijenu za djelomična poklapanja.</dd>
+
+  <dt>Pretaga po nadnevku</dt>
+  <dd>Odaberite nadnevak i/ili završni nadnevak za vašu pretragu. Ostavite nadnevak prazan 
+  za pretragu "prethodnih" upita. Godina mora biti upisana u zadnje polje u slijedećem obliku : 0000 (i.e. 2009)</dd>
+
+  <dt>Pretraga u skupinama</dt>
+  <dd>Odaberite skupinu ili skupine koje želite pretražiti. Za bržu pretragu sve podskupine
+  mogu biti pretraživane odabirom nadređene skupine i uključenjem mogućnosti pretrage podskupina ispod.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/hr_HR/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/synchronize.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Usklađivanje</h2>
+
+<p>Dvije su mogućnosti usklađivanja: mape/zapisi i meta podatci
+zapisa. mape/zapisi vrše usklađivanje stabla mapa sa skupinskim stablom u bazi podataka.
+Meta podatci usklađuju obavijesne stavke kao što su veličina zapisa, veličina slika u pikselima, EXIF ili IPTC
+podatke.</p>
+
+<p>Prvo usklađivanje mora biti ono od mape/zapisi vrste.</p>
+
+<p>Postupak usklađivanja može potrajati i malo duže (ovisno o opterećenju poslužitelja i količini
+stavaka za obradu) pa je omogućeno da se napreduje korak po korak: skupinu po skupinu.</p>
Index: /tags/2.6.0RC1/language/hr_HR/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/help/user_list.html	(revision 25596)
@@ -0,0 +1,33 @@
+<h2>Popis korisnika</h2>
+
+<p>Ovo je mjesto gdje možete upravljati upisanim korisnicima. Jedino se ovlastima
+upravlja u nekim drugim prozorima.</p>
+
+<h3>Dodaj korisnika</h3>
+
+<p>Upravnik može ručno dodavati korisnike.</p>
+
+<h3>Popis korisnika</h3>
+
+<p>Popis može biti pročišćen na korisničko ime (koristite * kao zamjenu), grupu ili
+stanje. Popis može biti poredan po nadnevku upisa ili korisničkom imenu, uzlaznim
+ili silaznim redoslijedom.</p>
+
+<p>Ovaj prozor omogućava upravljenje nekolicinom korisnika odjednom na različitim postupcima
+:</p>
+
+<ul>
+
+  <li>brisanje korisnika (zahtijeva potvrdnu kućicu)</li>
+
+  <li>promjena stanja</li>
+
+  <li>uklučenje ili isključenje u-iz grupa</li>
+
+  <li>prilagodba svojstava prikaza</li>
+
+  <li>promjena dodatnih svojstava</li>
+
+</ul>
+
+<p>Svrha je postaviti korisnike kao odabrane (pretpostavljeno) ili se svi korisnici pitaju.</p>
Index: /tags/2.6.0RC1/language/hr_HR/index.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/hr_HR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Ugradba';
+$lang['Basic configuration'] = 'Osnovna postava';
+$lang['Default gallery language'] = 'Pretpostavljeni jezik galerije';
+$lang['Database configuration'] = 'Postava baze podataka';
+$lang['Admin configuration'] = 'Upravna postava';
+$lang['Start Install'] = 'Pokreni ugradbu';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Biti će prikazano posjetiteljima. Potrebno je za upravljanje web mjestom';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Povezivanje sa poslužiteljem uspješno, ali je nemoguće povezivanje sa bazom podataka';
+$lang['Can\'t connect to server'] = 'Ne mogu se povezati sa poslužiteljem';
+$lang['Host'] = 'MySQL poslužitelj';
+$lang['User'] = 'Korisnik';
+$lang['user login given by your host provider'] = 'korisničko ime dobiveno od davatelja usluge smještaja';
+$lang['user password given by your host provider'] = 'korisnička zaporka dobivena od davatelja usluge smještaja';
+$lang['Database name'] = 'Naziv baze podataka';
+$lang['also given by your host provider'] = 'također dobivena od davatelja usluge smještaja';
+$lang['Database table prefix'] = 'Predznak tabela baze podataka';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'nazivi tabela baze podataka će biti predznačeni sa time (omogućava vam bolje upravljanje tabelama)';
+$lang['enter a login for webmaster'] = 'upišite korisničko ime za webmaster-a';
+$lang['webmaster login can\'t contain characters \' or "'] = 'webmaster-ovo korisničko ime ne može sadržavati znakove \' ili "';
+$lang['please enter your password again'] = 'molimo upišite zaporku ponovo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Čuvajte je na sigurnom mjestu, ona omogućava pristup upravnoj ploči';
+$lang['Password [confirm]'] = 'Zaporka [potvrdi]';
+$lang['verification'] = 'ovjera';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Trebate pomoć? Pitajte na <a href="%s">Piwigo message board</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Posjetitelji će moći pisati upravitelju galerije preko ove adrese';
+$lang['PHP 5 is required'] = 'PHP 5 je obvezan';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Čini se da vaše web mjesto trenutno koristi PHP inačicu %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo će pokušati podesiti sustavne postavke na PHP 5 izradom ili prilagodbom .htaccess zapisa.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Ne zaboravite da možete i sami promijeniti postavke te potom ponovo pokrenuti Piwigo.';
+$lang['Try to configure PHP 5'] = 'Pokušaj podešavanja PHP 5';
+$lang['Sorry!'] = 'Nažalost!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nije u mogućnosti podesiti PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Trebate se obratiti vašem davatelju usluge smještaja za upute na koji se način možete prebaciti na PHP 5 samostalno.';
+$lang['Hope to see you back soon.'] = 'Do skorog viđenja.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Čestitamo, Piwigo ugradnja je dovršena';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Druga mogućnost je da kopirate tekst u prostoru poviše i prebacite ga u zapis "local/config/database.inc.php" (Pozor :u database.inc.php smije se prebaciti samo tekst iz kućice bez znakova novog reda ili praznog prostora)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Izrada local/config/database.inc.php nije uspjela.';
+$lang['Download the config file'] = 'Preuzmi zapis podešavanja';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Možete preuzeti zapis sustavnog podešavanja i prebaciti ga u local/config mapu vaše ugradnje.';
+$lang['Just another Piwigo gallery'] = 'Samo još jedna Piwigo galerija';
+$lang['Welcome to my photo gallery'] = 'Dobrodošli u moju fotogaleriju';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ukoliko trebate pomoć slobodno pitajte na forumu: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Dobrodošli na vašu novu Piwigo instalaciju!';
+?>
Index: /tags/2.6.0RC1/language/hr_HR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Hrvatski [HR]
Index: /tags/2.6.0RC1/language/hr_HR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hr_HR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hr_HR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Nadogradnja';
+$lang['Upgrade from version %s to %s'] = 'Nadogradnja sa inačice %s na %s';
+$lang['Statistics'] = 'Statistika';
+$lang['total upgrade time'] = 'sveukupno vrijeme nadogradnje';
+$lang['total SQL time'] = 'sveukupno SQL vrijeme';
+$lang['SQL queries'] = 'SQL upita';
+$lang['Upgrade informations'] = 'Podaci o nadogradnji';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Izvršite radnu provjeru [Uprava>Alati>Održavanje] u slučaju bilo kakvih problema.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Samo upravnik može pokrenuti nadogradnju: molimo, prijavite se dolje.';
+$lang['You do not have access rights to run upgrade'] = 'Nemate pristupna prava za pokretanje nadogradnje';
+$lang['All sub-albums of private albums become private'] = 'Sve podskupine osobnih skupina postaju osobne';
+$lang['User permissions and group permissions have been erased'] = 'Korisničke i grupne dozvole su izbrisane';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Jedino su predznaci poveznih sličica i webmaster-ova e-mail adresa sačuvane iz prethodne postave';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Na ovoj stranici imate prijedlog nadogradnje baze podataka sa vaše starije inačice na novu. Pomoćnik nadogradnje smatra da trenutno koristite <strong>inačicu %s</strong> (ili sličnu).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Kao mjera predostrožnosti, slijedeći dodaci su isključeni. Provjerite dostupne nadogradnje dodataka prije njihovog ponovnog uključenja:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'U <i>%s</i>, prije <b>?></b>, ubaci:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Sljedeće teme su preventivno deaktivirane. Prije ponovnog aktiviranja morate provjeriti postoje li nadogradnje:';
+
+?>
Index: /tags/2.6.0RC1/language/hu_HU/README.txt
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/README.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/README.txt	(revision 25596)
@@ -0,0 +1,6 @@
+Piwigo Hungarian language files
+author: Sámli  CMS Award .HU Team
+website: http://cmsaward.hu
+e-mail: info@cmsaward.hu
+
+update : 26/10/2009
Index: /tags/2.6.0RC1/language/hu_HU/about.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/about.html	(revision 25596)
@@ -0,0 +1,15 @@
+<p>A képgaléria alapja a Piwigo galéria rendszer.</p>
+
+<p>A Piwigo egy aktív közösség (felhasználók és fejlesztők) által épülő webes képgaléria.
+ A Piwigo könnyű testreszabhatóságát extra bővítmények biztosítják.
+ A hab a tortán, hogy a Piwigo nyílt forráskódú és ingyenes.</p>
+
+<p id="linkToPiwigo"><a href="http://hu.piwigo.org">Látogasson el a Piwigo magyar nyelvű honlapjára</a></p>
+
+<p>A Piwigo magyar fordításának karbantartói (ABC sorrendben):
+
+	<ul>
+	  <li><a href="http://hu.piwigo.org/forum/profile.php?id=5424">sámli</a></li>
+	</ul>
+        .... köszönjük munkájukat</p>
+
Index: /tags/2.6.0RC1/language/hu_HU/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/admin.lang.php	(revision 25596)
@@ -0,0 +1,957 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d hozzárendelés (fizikai és virtuális)';
+$lang['%d associations'] = '%d hozzárendelés (fizikai és virtuális)';
+$lang['%d album including'] = '%d album ';
+$lang['%d albums including'] = '%d album ';
+$lang['%d physical'] = '%d fizikai';
+$lang[' and %d virtual'] = ' és %d virtuális';
+$lang['%d album moved'] = '%d Album áthelyezése';
+$lang['%d albums moved'] = '%d Album áthelyezése';
+$lang['%d group'] = '%d csoport';
+$lang['%d groups'] = '%d csoport';
+$lang['%d member'] = '%d tag';
+$lang['%d members'] = '%d tag';
+$lang['%d tag'] = '%d címke';
+$lang['%d tags'] = '%d címke';
+$lang['%d user comment rejected'] = '%d elutasított hozzászólás';
+$lang['%d user comments rejected'] = '%d elutasított hozzászólás';
+$lang['%d user comment validated'] = '%d jóváhagyott hozzászólás';
+$lang['%d user comments validated'] = '%d jóváhagyott hozzászólás';
+$lang['%d user deleted'] = '%d törölt felhasználó';
+$lang['%d users deleted'] = '%d törölt felhasználó';
+$lang['%d user'] = '%d felhasználó';
+$lang['%d users'] = '%d felhasználó';
+$lang['%d waiting for validation'] = '%d vár elfogadásra';
+$lang['Actions'] = 'Műveletek';
+$lang['Activate'] = 'Bekapcsolás';
+$lang['Add/delete a permalink'] = 'Közvetlen link hozzáadása/törlése';
+$lang['Add a tag'] = 'Címke hozzáadása';
+$lang['Add a user'] = 'Felhasználó hozzáadása';
+$lang['Add group'] = 'Csoport hozzáadása';
+$lang['Add'] = 'Hozzáadás';
+$lang['Allow user registration'] = 'Regisztráció engedélyezése';
+$lang['Apply to sub-albums'] = 'Belső albumokra is';
+$lang['Associated'] = 'Hozzárendelve';
+$lang['Caddie management'] = 'Kosár kezelése';
+$lang['Caddie'] = 'Kosár';
+$lang['Albums authorized thanks to group associations'] = 'Az albumok csoport tagsága';
+$lang['Album manual order was saved'] = 'Albumok sorrendjének mentése megtörtént';
+$lang['Check for upgrade failed for unknown reasons.'] = 'A program frissítése ismeretlen okból nem sikerült.';
+$lang['Check for upgrade'] = 'Frissítés keresése';
+$lang['Comments for all'] = 'Bárki hozzászólhat';
+$lang['Current name'] = 'Név';
+$lang['Database'] = 'Adatbázis';
+$lang['Deactivate'] = 'Kikapcsolás';
+$lang['Delete Representant'] = 'Album képviselő törlése';
+$lang['Delete selected tags'] = 'Kiválasztott címkék törlése';
+$lang['Delete selected users'] = 'Kiválasztott felhasználók törlése';
+$lang['Deletions'] = 'Törlések';
+$lang['Deny selected groups'] = 'Kiválasztott csoportok elutasítása';
+$lang['Deny selected users'] = 'Kiválasztott felhasználók elutasítása';
+$lang['Description'] = 'Leírás';
+$lang['Display options'] = 'Megjelenítés beállításai';
+$lang['Dissociated'] = 'Nincs hozzárendelve';
+$lang['Does not represent'] = 'Nem képviseli';
+$lang['Edit selected tags'] = 'Kiválasztott címkék szerkesztése';
+$lang['Edit tags'] = 'Címkék szerkesztése';
+$lang['Email admins when a new user registers'] = 'Email-küldés, ha egy új felhasználó regisztrál';
+$lang['Email admins when a valid comment is entered'] = 'Email-küldés, ha egy érvényes hozzászólás érkezik ';
+$lang['Email admins when a comment requires validation'] = 'Email-küldés, ha egy hozzászólás jóváhagyásra vár ';
+$lang['Environment'] = 'Környezet';
+$lang['Form'] = 'Űrlap';
+$lang['Gallery title'] = 'Galéria címe';
+$lang['Grant selected groups'] = 'Kiválasztott csoportok részére jogosultság adása';
+$lang['Grant selected users'] = 'Kiválasztott felhasználók részére jogosultság adása';
+$lang['Group name'] = 'Csoport neve';
+$lang['Groups'] = 'Csoportok';
+$lang['Guests'] = 'Vendégek';
+$lang['History'] = 'Statisztikák';
+$lang['Informations'] = 'Információk';
+$lang['Install'] = 'Telepítés';
+$lang['Link all album photos to a new album'] = 'Az album összes elemének új albumhoz rendelése';
+$lang['Link all album photos to some existing albums'] = 'Az album összes elemének már meglévő albumhoz rendelése';
+$lang['Linked albums'] = 'A képhez rendelt albumok';
+$lang['Lock gallery'] = 'Galéria lezárása';
+$lang['Maintenance'] = 'Karbantartás';
+$lang['Edit album permissions'] = 'Album jogosultságainak kezelése';
+$lang['Manage permissions for group "%s"'] = '"%s" csoport jogosultságainak kezelése';
+$lang['Manage permissions for user "%s"'] = '"%s" felhasználó jogosultságainak kezelése';
+$lang['Manage tags'] = 'Címkék kezelése';
+$lang['Members'] = 'Tagok';
+$lang['Metadata synchronized from file'] = 'Meta adatok fájlból történő szinkronizálása';
+$lang['Move albums'] = 'Albumok áthelyezése';
+$lang['Move'] = 'Áthelyezés';
+$lang['Name'] = 'Név';
+$lang['New name'] = 'Új név';
+$lang['New parent album'] = 'Új szülő album';
+$lang['New tag'] = 'Új címke';
+$lang['Number of comments per page'] = 'Hozzászólások száma oldalanként';
+$lang['Number of rates'] = 'Értékelések száma';
+$lang['Number of thumbnails to create'] = 'Elkészítendő bélyegképek száma';
+$lang['Only private albums are listed'] = 'Csak privát albumok megjelenítése';
+$lang['Operating system'] = 'Operációs rendszer';
+$lang['Options'] = 'Beállítások';
+$lang['Other private albums'] = 'Más privát albumok';
+$lang['Page banner'] = 'Oldal fejléc';
+$lang['Parent album'] = 'Szülő album';
+$lang['Path'] = 'Elérési út';
+$lang['Permalink'] = 'Közvetlen link';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'A(z) %s közvetlen link név korábban létrehozva a(z) %s album számára. Törölni kell a közvetlen link előzményekből.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'A közvetlen linkek a következő karakterekből állhatnak: a-z, A-Z, 0-9, "-" vagy "_". Nem kezdődhetnek számmal vagy "-" karakterrel';
+$lang['Permalink %s is already used by album %s'] = 'A(z) %s közvetlen link név a(z) %s album számára lefoglalva. Válasszon másikat!';
+$lang['Permalink history'] = 'Közvetlen link előzmények';
+$lang['Permalinks'] = 'Közvetlen linkek';
+$lang['Permission denied'] = 'Hozzáférés megtagadva';
+$lang['Permission granted thanks to a group'] = 'Hozzáférés engedélyezve, köszöntünk a csoportban';
+$lang['Permission granted'] = 'Hozzáférés engedélyezve';
+$lang['Photo informations updated'] = 'Kép információi frissítve';
+$lang['Plugins'] = 'Bővítmények';
+$lang['Position'] = 'Pozíció';
+$lang['Preferences'] = 'Beállítások';
+$lang['Properties'] = 'Tulajdonságok';
+$lang['Random photo'] = 'Véletlen kép';
+$lang['Rate date'] = 'Értékelés időpontja';
+$lang['Rating by guests'] = 'Vendégek által értékelhető';
+$lang['Rating'] = 'Értékelés';
+$lang['Reject'] = 'Elvetés';
+$lang['Representant'] = 'Képviseli';
+$lang['Representation of albums'] = 'Albumok képviselete';
+$lang['Representative'] = 'Reprezentatív';
+$lang['Represents'] = 'Képviseli';
+$lang['Save order'] = 'Sorrend mentése';
+$lang['Save to permalink history'] = 'Közvetlen link előzmények mentése';
+$lang['Select at least one album'] = 'Legalább egy albumot ki kell választani';
+$lang['Select at least one photo'] = 'Legalább egy képet ki kell választani';
+$lang['Select at least one user'] = 'Legalább egy felhasználót ki kell választani';
+$lang['Show info'] = 'Információ megjelenítése';
+$lang['Site manager'] = 'Oldalak';
+$lang['Status'] = 'Státusz';
+$lang['Statistics'] = 'Statisztika';
+$lang['Storage album'] = 'Album';
+$lang['Sum of rates'] = 'Pontszámok összege';
+$lang['Tag "%s" already exists'] = '"%s" címke már létezik!';
+$lang['Tag "%s" was added'] = '"%s" címke hozzáadva';
+$lang['Tag selection'] = 'Címke kiválasztása';
+$lang['The %d following tags were deleted'] = 'A következő %d címke törölve : %s';
+$lang['Uninstall'] = 'Eltávolítás';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Alapértelmezett kép sorrend (beállítva a konfigurációs fájlban)';
+$lang['User comments validation'] = 'Felhasználói hozzászólások engedélyezése';
+$lang['Users'] = 'Felhasználók';
+$lang['Validate'] = 'Engedélyezés';
+$lang['Validation'] = 'Engedélyezés szükséges';
+$lang['Version'] = 'Verzió';
+$lang['Virtual albums to move'] = 'Virtuális albumok kijelölése áthelyezésre';
+$lang['Virtual album name'] = 'Virtuális album neve';
+$lang['Webmaster cannot be deleted'] = 'Na jó...azért a webmestert ne töröljük...';
+$lang['You are running on development sources, no check possible.'] = 'Ez egy fejlesztői változat, keresés lehetetlen.';
+$lang['You cannot delete your account'] = "Nem törölheti a fiókját";
+$lang['You cannot move an album in its own sub album'] = 'Az albumot lehetetlen a belső albumjába helyezni';
+$lang['You need to confirm deletion'] = 'A törléshez megerősítés szükséges';
+$lang['Associate to album'] = 'Hozzárendelés albumhoz';
+$lang['associate to group'] = 'Hozzárendelés csoporthoz';
+$lang['Authorized'] = 'Engedélyezve';
+$lang['Add a virtual album'] = 'Virtuális album hozzáadása';
+$lang['Authorize users to add comments on selected albums'] = 'Hozzászólás engedélyezése a kiválasztott albumokhoz';
+$lang['The name of an album must not be empty'] = 'Az album nevét meg kell adni';
+$lang['Lock albums'] = 'Album lezárása';
+$lang['Private'] = 'Privát album';
+$lang['Public'] = 'Nyilvános album';
+$lang['Find a new representant by random'] = 'Új album-képviselő véletlenszerű kiválasztása';
+$lang['Public / Private'] = 'Nyilvános / Privát';
+$lang['Manage authorizations for selected albums'] = 'A kiválasztott albumok engedélyeinek kezelése';
+$lang['Virtual album added'] = 'Virtuális album hozzáadva';
+$lang['Virtual album deleted'] = 'Virtuális album törölve';
+$lang['Access type'] = 'Hozzáférés típusa';
+$lang['Information data registered in database'] = 'Az információk bekerültek az adatbázisba';
+$lang['Default display'] = 'Alapértelmezett megjelenítés';
+$lang['The gallery URL is not valid.'] = 'A galéria URL nem létezik.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'A felhasználói hozzászólások száma egy oldalon 5 és  50 között.';
+$lang['Configuration'] = 'Beállítások';
+$lang['confirm'] = 'Megerősítés';
+$lang['Date'] = 'Dátum';
+$lang['delete album'] = 'Album törlése';
+$lang['Dissociate from album'] = 'Eltávolítás az albumból';
+$lang['dissociate from group'] = 'Eltávolítás a csoportból';
+$lang['Album updated successfully'] = 'Az album információinak módosítása megtörtént.';
+$lang['photos per page'] = 'Képek száma oldalanként';
+$lang['High definition enabled'] = 'Kiemelt hozzáférés engedélyezése';
+$lang['File'] = 'Fájl';
+$lang['first photo added on %s'] = 'Az első kép hozzáadásának időpontja: %s';
+$lang['Forbidden'] = 'Tiltva';
+$lang['global mode'] = 'Globális mód';
+$lang['group "%s" added'] = '"%s" csoport hozzáadva';
+$lang['group "%s" deleted'] = '"%s" törölve';
+$lang['group "%s" updated'] = '"%s" frissítve';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'A csoportnév nem tartalmazhat " vagy \' karaktert, vagy nem lehet üres.';
+$lang['This name is already used by another group.'] = 'Ez a név már használatban van a másik csoportban.';
+$lang['High definition'] = 'Kiemelt hozzáférés';
+$lang['jump to album'] = 'Albumhoz ugrás';
+$lang['jump to photo'] = 'Képhez ugrás';
+$lang['leave'] = 'Nem változtat';
+$lang['Lock'] = 'Lezárás';
+$lang['Locked'] = 'Lezárt';
+$lang['manage album photos'] = 'Album elemeinek kezelése';
+$lang['manage sub-albums'] = 'Belső albumok kezelése';
+$lang['Manage'] = 'Kezelés';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Az átfutási idő lejárt, a műveletet folytatni kell [Idő: %d másodperc].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Az átfutási idő lejárt, a műveletet folytatni kell [Idő: %d másodperc].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'A listán szereplő felhasználóknak küldendő e-mail előkészítési ideje véges. Más felhasználók nem lesznek a listában.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Az e-mail küldési idő korlátozott. További e-mail küldés megszakításra kerül.';
+$lang['To send ?'] = 'Elküldjük?';
+$lang['Last send'] = 'Utolsó küldése';
+$lang['User'] = 'Felhasználó';
+$lang['See you soon,'] = 'Viszont látásra,';
+$lang['Go to'] = 'Ugrás ';
+$lang['Hello'] = 'Helló ';
+$lang['New photos were added'] = 'Új elem került hozzáadásra.';
+$lang['on'] = ' Küldés időpontja ';
+$lang['between'] = 'között ';
+$lang['and'] = ' és ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Ezt az e-mailt a webmester küldte (nem automatikusan generált) mert értesítést kapott az egyik albumból/galériából.".';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Feliratkozott a bejelentések fogadására levélben.';
+$lang['To subscribe'] = 'Feliratkozáshoz';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Ha problémát észlel, vagy bármilyen kérdése van, kérjük, küldjön egy üzenetet ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problémák és kérdések';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'A webmester a leiratkozást érvényesítette';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Leiratkozott az e-mail értesítésről.';
+$lang[', click on'] = ' kattintson erre a linkre:';
+$lang['To unsubscribe'] = 'Leiratkozáshoz';
+$lang['With blank value, gallery title will be used'] = 'Ha nincs megadva, a galéria címét fogja használni';
+$lang['Notification'] = 'Értesítés';
+$lang['Error when sending email to %s [%s].'] = 'Hiba a %s [%s] levél küldése közben.';
+$lang['Mail sent to %s [%s].'] = 'E-mail elküldve %s [%s].';
+$lang['%d mail was sent.'] = '%d levelet küldtünk el.';
+$lang['%d mails were sent.'] = '%d levelet küldtünk el.';
+$lang['%d mail was not sent.'] = '%d levelet nem küldtünk el.';
+$lang['%d mails were not sent.'] = '%d levelet nem küldtünk el.';
+$lang['No mail to send.'] = 'Nem kell e-mailt küldeni.';
+$lang['There is no available subscribers to mail.'] = 'Nincs feliratkozott felhasználó akinek küldenünk kellene e-mailt.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Csak azok a feliratkozott felhasználók jelennek meg a listában, akik még nem kaptak értesítést az új elemekről.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Egyébként csak az adminisztrátori jogkörrel nem rendelkező webmesterek láthatók ezen a lapon.';
+$lang['No user to send notifications by mail.'] = 'Nincs felhasználó akinek a frissítéseket el lehetne küldeni.';
+$lang['New photos added'] = 'Új elemekkel bővült a galéria';
+$lang['Subscribe to notification by mail'] = 'Feliratkozás e-mail értesítőre';
+$lang['Unsubscribe from notification by mail'] = 'Leiratkozás e-mail értesítőről';
+$lang['Parameter'] = 'Paraméterek';
+$lang['Continue processing treatment'] = 'Tovább - feldolgozás';
+$lang['Complementary mail content'] = 'Kiegészítő E-mail tartalom';
+$lang['Add detailed content'] = 'Részletes tartalom';
+$lang['Send mail as'] = 'E-mail küldése, mint';
+$lang['Send mail to users'] = 'Levél a felhasználónak';
+$lang['Send'] = 'Küld';
+$lang['Options'] = 'Lehetőségek';
+$lang['Subscribed'] = 'Feliratkozott';
+$lang['Subscribe'] = 'Feliratkozás';
+$lang['Parameters'] = 'Paraméterek';
+$lang['Select recipients'] = 'Válassza ki a címzetteket';
+$lang['Subscribe/unsubscribe users'] = 'Feliratkozás/Leiratkozás (felhasználók)';
+$lang['Unsubscribed'] = 'Leiratkozott';
+$lang['%d parameter was updated.'] = '%d paraméter frissítve.';
+$lang['%d parameters were updated.'] = '%d paraméter frissítve.';
+$lang['%d user was not updated.'] = '%d felhasználót nem frissítettünk.';
+$lang['%d users were not updated.'] = '%d felhasználót nem frissítettünk.';
+$lang['User %s [%s] was removed from the subscription list.'] = '%s [%s] felhasználót töröltük az előfizetői listáról.';
+$lang['User %s [%s] was added to the subscription list.'] = '%s [%s] felhasználót felvettük az előfizetői listára.';
+$lang['%d user was updated.'] = '%d felhasználót frissítettünk.';
+$lang['%d users were updated.'] = '%d felhasználót frissítettünk.';
+$lang['User %s [%s] was not removed from the subscription list.'] = '%s [%s] felhasználót nem töröltük az előfizetői listáról.';
+$lang['User %s [%s] was not added to the subscription list.'] = '%s [%s] felhasználót nem adtuk hozzá az előfizetői listához.';
+$lang['User %s [%s] added.'] = '%s [%s] felhasználó hozzáadva.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Figyelem: Feliratkozás vagy Leiratkozás levelet küld a felhasználóknak';
+$lang['Send mail on HTML format'] = 'Levél küldése HTML formátumban';
+$lang['Include display of recent photos grouped by dates'] = 'Jelenítse meg a legújabb képeket, dátum szerint csoportosítva';
+$lang['Available only with HTML format'] = 'Csak HTML formátum';
+$lang['no write access'] = 'Nem írható';
+$lang['Permissions'] = 'Engedélyek';
+$lang['private'] = 'Privát';
+$lang['public'] = 'Nyilvános';
+$lang['Purge never used notification feeds'] = 'Nem használatos RSS-feedek törlése';
+$lang['Purge sessions'] = 'Folyamatok törlése';
+$lang['randomly represented'] = 'Randommódon képviselt';
+$lang['registration date'] = 'Regisztráció dátuma';
+$lang['clean'] = 'tiszta';
+$lang['Create this site'] = 'Oldal létrehozása';
+$lang['test'] = 'Teszt';
+$lang['test this remote site'] = 'Tesztelés távoli kiszolgálón';
+$lang['remove tags'] = 'Címkék eltávolítása';
+$lang['Repair and optimize database'] = 'Adatbázis javítása és optimalizálása';
+$lang['selection'] = 'kiválasztás';
+$lang['set to'] = 'Beállítás';
+$lang['singly represented'] = 'rögzített képviselője';
+$lang['This site already exists'] = 'Ilyen oldal már van';
+$lang['created'] = 'létrehozva';
+$lang['delete'] = 'törlés';
+$lang['delete this site and all its attached elements'] = 'oldal és elemeinek törlése';
+$lang['an error happened'] = 'hiba történt';
+$lang['Local'] = 'Helyi';
+$lang['Remote'] = 'Távoli';
+$lang['update the database from files'] = 'adatbázis frissítése fájlokból';
+$lang['status'] = 'Státusz';
+$lang['Directory'] = 'Könyvtár';
+$lang['sub-albums'] = 'Belső albumok';
+$lang['Synchronize metadata'] = 'Meta adatok szinkronizálása';
+$lang['target'] = 'Cél';
+$lang['Title'] = 'Cím';
+$lang['Album list management'] = 'Albumok kezelése';
+$lang['Piwigo configuration'] = 'Piwigo konfiguráció';
+$lang['Edit album'] = 'Album szerkesztése';
+$lang['Group management'] = 'Csoportok kezelése';
+$lang['User list'] = 'Felhasználók listája';
+$lang['Edit photo information'] = 'Képinformációk módosítása';
+$lang['Database synchronization with files'] = 'Adatbázis szinkronizálása ezzel a mappával';
+$lang['all'] = 'összes';
+$lang['height must be a number superior to'] = 'a magasságnak ennél nagyobbnak kell lennie:';
+$lang['width must be a number superior to'] = 'a szélességnek ennél nagyobbnak kell lennie:';
+$lang['for the file format'] = 'fájl formátum';
+$lang['Photo unreachable or no support'] = 'Kép nem elérhető, vagy formátuma nem támogatott';
+$lang['GD version'] = 'GD verzió';
+$lang['General statistics'] = 'Általános statisztika';
+$lang['average time'] = 'átlagos idő';
+$lang['number of miniaturized photos'] = 'kicsinyített képek száma';
+$lang['total time'] = 'teljes idő';
+$lang['for this file format'] = 'formátum';
+$lang['unit mode'] = 'Képenként';
+$lang['Unlocked'] = 'Zárolatlan';
+$lang['unset'] = 'Eltávolítás';
+$lang['Update albums informations'] = 'Albumok információinak frissítése';
+$lang['Update photos information'] = 'Képek információinak frissítése';
+$lang['Synchronize'] = 'Szinkronizálás';
+$lang['reduce to single existing albums'] = 'Szűkítés egy már meglévő albumra';
+$lang['Choose an option'] = 'Válasszon az alábbi lehetőségek közül';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Összes információ megjelenítése (hozzáadott albumok és elemek, törölt albumok és elemek)';
+$lang['Error list'] = 'Hibalista';
+$lang['Errors caption'] = 'Címsor hiba';
+$lang['Detailed informations'] = 'Részletes információk';
+$lang['File/directory read error'] = 'Fájl/Mappa olvasási hiba';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'A fájl vagy mappa hozzáférhetetlen (vagy nem létezik, vagy hozzáférés megtagadva)';
+$lang['albums deleted in the database'] = 'album törölve az adatbázisból';
+$lang['photos deleted from the database'] = 'adatbázisból törölt elem';
+$lang['photos candidates for metadata synchronization'] = 'kép meta adatainak szinkronizálása';
+$lang['photos informations synchronized with files metadata'] = 'elem meta adatainak szinkronizálása';
+$lang['errors during synchronization'] = 'hiba történt a szinkronizálás során';
+$lang['albums added in the database'] = 'album hozzáadva az adatbázishoz';
+$lang['photos added in the database'] = 'elem hozzáadva az adatbázishoz';
+$lang['photos updated in the database'] = 'elem frissítve az adatbázisban';
+$lang['Search for new images in the directories'] = 'Új képek keresése a mappákban';
+$lang['added'] = 'hozzáadva';
+$lang['deleted'] = 'törölve';
+$lang['Metadata synchronization results'] = 'Meta adatok szinkronizálásának eredménye';
+$lang['only perform a simulation (no change in database will be made)'] = 'Csak szimuláció végrehajtása (az adatbázisban nem történik változás)';
+$lang['Simulation'] = 'Szimuláció';
+$lang['directories + files'] = 'Mappák + fájlok';
+$lang['only directories'] = 'Csak mappák';
+$lang['synchronize files structure with database'] = 'Fájlok-mappák szinkronizálása az adatbázissal';
+$lang['synchronize files metadata with database photos informations'] = 'Fájlok meta adatainak szinkronizálása az adatbázissal';
+$lang['even already synchronized photos'] = 'A korábban szinkronizáltakat is';
+$lang['Used metadata'] = 'Használt meta adatok';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'A könyvtár és fájlnevek betűket, számokat valamint "-", "_" vagy "." -ot tartalmazhatnak';
+$lang['wrong filename'] = 'rossz fájlnév';
+$lang['Upload'] = 'Feltöltés';
+$lang['user "%s" added'] = '"%s" felhasználó hozzáadva';
+$lang['User status'] = 'Felhasználói státusz';
+$lang['user_status_admin'] = 'Adminisztrátor';
+$lang['user_status_generic'] = 'Átlagos';
+$lang['user_status_guest'] = 'Vendég';
+$lang['user_status_normal'] = 'Felhasználó';
+$lang['user_status_webmaster'] = 'Webmester';
+$lang['Virtual album'] = 'Virtuális album';
+$lang['Waiting'] = 'Várakozó elemek';
+$lang['default'] = 'Alapértelmezett';
+$lang['Toggle \'default group\' property'] = '\'Alapértelmezett csoport\' tulajdonság megfordítása';
+$lang['Advanced features'] = 'Speciális funkciók';
+$lang['Overall'] = 'Teljes';
+$lang['Year'] = 'Év';
+$lang['Month'] = 'Hónap';
+$lang['Day'] = 'Nap';
+$lang['Pages seen'] = 'Megtekintett oldalak';
+$lang['Time'] = 'Idő';
+$lang['IP'] = 'IP cím';
+$lang['Element'] = 'Elem';
+$lang['Section'] = 'Szakasz';
+$lang['An information email was sent to group "%s"'] = 'Tájékoztató e-mailt küldtünk a következő csoportnak: "%s';
+$lang['Send an information email to group members'] = 'Küldjön egy információs e-mailt a csoport tagjainak';
+$lang['Group'] = 'Csoport';
+$lang['[%s] Visit album %s'] = '[%s] Új képek vannak az albumban %s';
+$lang['Hello,'] = 'Helló,';
+$lang['See you soon.'] = 'A mielőbbi viszont látásra.';
+$lang['Discover album:'] = 'Kövesse a linket és nézze meg a képeket az albumban:';
+$lang['Mail content'] = 'E-mail tartalma';
+$lang['none'] = 'nincs';
+$lang['high'] = 'magas';
+$lang['other'] = 'egyéb';
+$lang['Element type'] = 'Elem típus';
+$lang['Image id'] = 'Elem-ID';
+$lang['Summary'] = 'Összefoglaló';
+$lang['%d line filtered'] = '%d szűrt sor';
+$lang['%d lines filtered'] = '%d szűrt sor';
+$lang['%d guest'] = '%d vendég';
+$lang['%d guests'] = '%d vendég';
+$lang['Hour'] = 'Óra';
+$lang['guest'] = 'Vendég';
+$lang['default values'] = 'Alapértelmezett érték';
+$lang['Guest cannot be deleted'] = 'A "vendég" felhasználót nem lehet törölni';
+$lang['Default user cannot be deleted'] = 'Alapértelmezett felhasználót nem lehet törölni';
+$lang['Purge history detail'] = 'Részletes előzmények törlése';
+$lang['Purge history summary'] = 'Összes előzmény törlése';
+$lang['Check integrity'] = 'integritás ellenőrzése';
+$lang['Anomaly'] = 'Rendellenesség';
+$lang['Correction'] = 'Hibajavítás';
+$lang['Automatic correction'] = 'Automatikus hibajavítás';
+$lang['Impossible automatic correction'] = 'Az automatikus hibajavítás nem lehetséges';
+$lang['Correction applied with success'] = 'A hibajavítás sikeres';
+$lang['Correction applied with error'] = 'A hibajavítás sikertelen';
+$lang['%d anomaly has been detected.'] = '%d rendellenességet mutatott ki.';
+$lang['%d anomalies have been detected.'] = '%d rendellenességet találtam.';
+$lang['%d anomaly has been corrected.'] = '%d rendellenesség javítva.';
+$lang['%d anomalies have been detected corrected.'] = '%d észlelt rendellenesség kijavítva.';
+$lang['%d anomaly has not been corrected.'] = '%d rendellenesség nem került javításra.';
+$lang['%d anomalies have not been corrected.'] = '%d észlelt rendellenesség javítása nem sikerült.';
+$lang['Go to %s or %s for more informations'] = 'Ugrás %s-ra vagy %s oldalra további információkért';
+$lang['the forum'] = 'a fórum';
+$lang['the wiki'] = 'a wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s érték helytelen, mert az EXIF nem támogatott';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s állítsa false értékre a local/config/config.inc.php fájlban';
+$lang['Main "guest" user does not exist'] = 'A "vendég" felhasználó nem létezik';
+$lang['Main "guest" user status is incorrect'] = 'A "vendég" felhasználó státusz hibás';
+$lang['Default user does not exist'] = 'Alapértelmezett felhasználó nem létezik';
+$lang['Main "webmaster" user does not exist'] = 'A "webmester" felhasználó nem létezik';
+$lang['Main "webmaster" user status is incorrect'] = 'A "webmester" felhasználó státusz hibás';
+$lang['User "%s" created with "%s" like password'] = '"%s" felhasználó által létrehozott jelszó: "%s"';
+$lang['Status of user "%s" updated'] = '"%s" felhasználói státuszának aktualizálása';
+$lang['add new photos to caddie'] = 'Az új elemeket gyűjtse a kosárba';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = 'Nincs kijelzés';
+$lang['Classic display'] = 'Hagyományos nézet';
+$lang['Hoverbox display'] = 'Hoverbox nézet';
+$lang['Mail address is obligatory for all users'] = 'Az e-mail cím kötelező minden felhasználó számára';
+$lang['Minimum privacy level'] = 'Minimum hozzáférési szint';
+$lang['Privacy level'] = 'Hozzáférési szint';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kapcsolattartók';
+$lang['Level 2'] = 'Barátok';
+$lang['Level 4'] = 'Család';
+$lang['Level 8'] = 'Adminisztrátor';
+$lang['Reinitialize check integrity'] = 'Integritások felülvizsgálata, Újrainicializálás';
+$lang['Check all'] = 'Összes kijelölése';
+$lang['Uncheck all'] = 'Összes kijelölés megszüntetése';
+$lang['Check automatic corrections'] = 'Automatikus hibajavítás a kijelölteken';
+$lang['Apply selected corrections'] = 'A kiválasztott hibajavítás alkalmazása';
+$lang['Ignore selected anomalies'] = 'Hagyja figyelmen kívül a kijelölt rendellenességeket';
+$lang['Refresh'] = 'Frissítés';
+$lang['The anomaly will be ignored until next application version'] = 'A rendellenesség figyelmen kívül hagyva a következő verzió alkalmazásáig';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Korrigált rendellenesség, már nem lehet figyelmen kívül hagyni';
+$lang['%d anomaly has been ignored.'] = '%d rendellenességet hagytunk figyelmen kívül.';
+$lang['%d anomalies have been ignored.'] = '%d rendellenesség figyelmen kívül hagyva.';
+$lang['Plugins which need upgrade'] = 'Az alábbi bővítményekhez frissítés érhető el';
+$lang['Plugin list'] = 'Bővítmény lista';
+$lang['Check for updates'] = 'Frissíthető';
+$lang['Other plugins'] = 'Telepíthető bővítmények';
+$lang['Last revisions'] = 'Utolsó módosítás';
+$lang['Are you sure you want to install this plugin?'] = 'Biztos, hogy telepíteni akarja a bővítményt?';
+$lang['Are you sure you want to delete this plugin?'] = 'Biztos, hogy törölni akarja a bővítményt?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Biztos, hogy telepíteni akarja a frissítést? Győződjön meg arról, hogy a korábbi verzió eltávolítható.';
+$lang['Plugin has been successfully copied'] = 'A bővítmény másolása sikeres.';
+$lang['You might go to plugin list to install and activate it.'] = 'Lépjen a "Bővítmény lista" menüpontra és aktiválja.';
+$lang['Can\'t create temporary file.'] = 'Temp fájl nem hozható létre .';
+$lang['Can\'t download archive.'] = 'Nem sikerült letölteni az Archívumot.';
+$lang['Can\'t read or extract archive.'] = 'Nem sikerült olvasni vagy kicsomagolni az Archívumot.';
+$lang['An error occured during extraction (%s).'] = 'Nem sikerült kitömöríteni az Archívumot(%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Ellenőrizze a "Plugins" mappa és az almappák jogosultságait (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Nem sikerült csatlakozni a szerverhez.';
+$lang['Purge compiled templates'] = 'Összeállított sablonok törlése';
+$lang['Support'] = 'Támogatás';
+$lang['Documentation'] = 'Dokumentációk';
+$lang['ACCESS_0'] = 'Ingyenes hozzáférés';
+$lang['ACCESS_1'] = 'Mindenki';
+$lang['ACCESS_2'] = 'Regisztráltak';
+$lang['ACCESS_3'] = 'Adminisztrátorok';
+$lang['ACCESS_4'] = 'Webmester';
+$lang['ACCESS_5'] = 'Nincs hozzáférés';
+$lang['A new version of Piwigo is available.'] = 'Új Piwigo verzió érhető el.';
+$lang['Piwigo Administration'] = 'Piwigo adminisztráció';
+$lang['Piwigo version'] = 'Piwigo verzió';
+$lang['You are running the latest version of Piwigo.'] = 'A legújabb verziójú Piwigo fut.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Jelenleg a %s [%s] verzió van telepítve, mely nem kompatibilis ezzel: [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Frissíteni kell a rendszert az alkalmazás adta lehetőségek teljes kihasználásához, ellenkező esetben az alkalmazás hibásan, vagy egyáltalán nem működik';
+$lang['Deleted on'] = 'Törölve a ';
+$lang['Last hit'] =  'Utolsó találat';
+$lang['GD library is missing'] = 'GD könyvtár hiányzik';
+$lang['Templates'] = 'Témák (Sablonok)';
+$lang['Extend for templates'] = 'Kiterjesztett témák';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Az eredeti sablon helyettesítése almappákra';
+$lang['Replacers (customized templates)'] = 'Módosított (testre-szabott) sablonok';
+$lang['Original templates'] = 'Eredeti sablonok';
+$lang['Optional URL keyword'] = 'Opcionális URL szerint';
+$lang['Templates configuration has been recorded.'] = 'Sablon konfiguráció rögzítve.';
+$lang['All optimizations have been successfully completed.'] = 'Minden optimalizálás sikeres.';
+$lang['Optimizations have been completed with some errors.'] = 'Néhány hiba fordult elő az optimalizáláskor.';
+$lang['Modify information'] = 'Információk módosítása';
+$lang['nothing'] = 'Nem';
+$lang['overrides existing values with empty ones'] = 'Felülírja a meglévő üres értékeket';
+$lang['Manage photo ranks'] = 'Kép rangok kezelése';
+$lang['Edit ranks'] = 'Rangok módosítása';
+$lang['No photo in this album'] = 'Nincs elem ebben az albumban';
+$lang['Images manual order was saved'] = 'Kép információk mentve';
+$lang['ranks'] = 'Rangok';
+$lang['Drag to re-order'] = 'Húzással átrendezheti';
+$lang['Quick Local Synchronization'] = 'Szinkronizálás';
+$lang['No photo can be deleted'] = 'Nincs törölhető kép';
+$lang['Delete selected photos'] = 'Kijelölt képek törlése';
+$lang['%d photo was deleted'] = '%d kép törölve';
+$lang['%d photos were deleted'] = '%d kép törölve';
+$lang['Released on'] = 'Felszabadítva';
+$lang['Number of downloads'] = 'Letöltések száma';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Hirdetmények Hírlevél';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Tartsa a kapcsolatot Piwigo projekttel, iratkozzon fel a Piwigo Hírlevélre. Levélben értesítjük ha újabb kiadás érhető el, (beleértve a biztonsági hibák javítását, valamint a frissítéseket) valamint ha nagyobb esemény történik a projektben. Csak néhány levél évente.';
+$lang['Subscribe %s'] = 'Feliratkozás %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Feliratkozás %s e-mail címmel a Piwigo hirdetésekre, hírlevelekre';
+$lang['Purge search history'] = 'Keresési előzmények törlése';
+$lang['Hide'] = 'Elrejt';
+$lang['Cannot delete the old permalink !'] = 'A régi közvetlen link nem törölhető !';
+$lang['Deleted on'] = 'Törölve';
+$lang['Last hit'] = 'Utolsó használat';
+$lang['Hit'] = 'Alkalommal';
+$lang['Password is missing. Please enter the password.'] = 'Jelszó hiányzik. Kérem írja be a jelszót.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Jelszó megerősítése hiányzik. Kérem erősítse meg a választott jelszót.';
+$lang['Allow users to edit their own comments'] = 'A felhasználók módosíthatják a hozzászólásaikat';
+$lang['Allow users to delete their own comments'] = 'A felhasználók törölhetik a hozzászólásaikat';
+$lang['Email administrators when a comment is modified'] = 'Email az adminisztrátornak, ha egy hozzászólást módosítottak';
+$lang['Email administrators when a comment is deleted'] = 'Email az adminisztrátornak, ha egy hozzászólást töröltek';
+$lang['Upload Photos'] = 'Képek feltöltése';
+$lang['Drop into album'] = 'Album választás:';
+$lang['+ Add an upload box'] = '+ További képek feltöltése...';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = '"%s" könyvtár létrehozása a telepített Piwigo galériában.';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Adjon írási jogot (chmod 777) a(z) "%s" gyökerének a telepített Piwigo galériában';
+$lang['existing album'] = 'létező album';
+$lang['create a new album'] = ' új album létrehozása';
+$lang['Album name'] = 'Album neve';
+$lang['Album "%s" has been added'] = '\'%s\' album hozzáadva';
+$lang['Uploaded Photos'] = 'Feltöltött képek';
+$lang['%d photos uploaded'] = '%d kép feltöltve';
+$lang['Privacy level set to "%s"'] = 'Minimum hozzáférési szint itt: "%s"';
+$lang['Album "%s" now contains %d photos'] = '\'%s\' albumban már %d kép található';
+$lang['Manage this set of %d photos'] = 'Szerkessze a készlet (%d elem) képeit';
+$lang['Select files'] = 'Képek kiválasztása';
+$lang['Everybody'] = 'Mindenki';
+$lang['Who can see these photos?'] = 'Ki láthatja a képeket?';
+$lang['Settings'] = 'Képméret beállítás';
+$lang['Resize'] = 'Átméretezés';
+$lang['Maximum width'] = 'Legnagyobb szélesség';
+$lang['pixels'] = 'pixel';
+$lang['Maximum height'] = 'Legnagyobb magasság';
+$lang['Image Quality'] = 'Kép minőség';
+$lang['Thumbnail'] = 'Bélyegkép';
+$lang['Save Settings'] = 'Beállítások mentése';
+$lang['Your configuration settings are saved'] = 'A beállítások mentése sikeres';
+$lang['Unable to check for upgrade.'] = 'A frissítés sikertelen.';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Időtúllépés esetén a műveletet folytatni kell [Becsült idő: %d másodperc].';
+$lang['Operation in progress'] = 'Feldolgozás.';
+$lang['Please wait...'] = 'Kérem várjon...';
+$lang['Tools'] = 'Eszközök';
+$lang['Photos'] = 'Képek';
+$lang['Themes'] = 'Témák';
+$lang['Instructions to use Piwigo'] = 'A Piwigo használata';
+$lang['Installed Themes'] = 'Telepített témák';
+$lang['Add New Theme'] = 'Új téma hozzáadása';
+$lang['Forbid this theme to users'] = 'A téma tiltása felhasználók részére';
+$lang['Set as default theme for unregistered and new users'] = 'Téma beállítása alapértelmezettként nem regisztrált és új felhasználók részére';
+$lang['unknown'] = 'ismeretlen';
+$lang['Active Themes'] = 'Aktív témák';
+$lang['Add write access to the "%s" directory'] = 'Adjon írási jogot a(z) "%s" könyvtárnak';
+$lang['Administration Home'] = 'Adminisztrációs oldal';
+$lang['Change Admin Colors'] = 'Adminisztrációs oldal színe';
+$lang['Delete this theme'] = 'Téma törlése';
+$lang['Directory does not exist'] = 'Könyvtár nem található';
+$lang['FTP + Synchronization'] = 'FTP + Szinkronizálás';
+$lang['Get Support on Piwigo Forum'] = 'Támogatást kap a Piwigo fórumon';
+$lang['Help Me'] = 'Segítség';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ez a téma nem aktiválható, mert a szülő téma nem létezik: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ez a téma nem törölhető, mert egy másik téma függ tőle: %s';
+$lang['Inactive Themes'] = 'Inaktív témák';
+$lang['Install on your computer,'] = 'Telepítse számítógépére,';
+$lang['Make this theme available to users'] = 'A téma elérhetővé tétele a felhasználók számára';
+$lang['Page end'] = 'Oldal vége';
+$lang['Piwigo Uploader'] = 'Piwigo Feltöltő';
+$lang['Read Piwigo Documentation'] = 'A Piwigo Dokumentációját itt érheti el';
+$lang['Start pLoader and add your photos.'] = 'Indítsa el a pLoader programot és töltse fel képeit.';
+$lang['Switch to clear or dark colors for administration'] = 'Átváltás a világos és sötét szín között';
+$lang['Theme has been successfully installed'] = 'A téma telepítése sikeresen megtörtént';
+$lang['Visit Gallery'] = 'Galéria megtekintése';
+$lang['Visit Piwigo project website'] = 'Ugrás a Piwigo projekt hivatalos oldalára';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'A pLoader a <em>Piwigo Uploader</em> rövidítése. A pLoader segítségével elvégezheti számítógépén a képek előkészítését, majd feltöltheti azokat a Piwigo galériájába.';
+$lang['Guest Settings'] = 'Vendég beállításai';
+$lang['Main Page'] = 'Főoldal';
+$lang['Photo Page'] = 'Kép oldal';
+$lang['Activate Navigation Bar'] = 'Navigációs sáv bekapcsolása';
+$lang['Activate Navigation Thumbnails'] = 'Navigációs bélyegképek bekapcsolása';
+$lang['Activate icon "%s"'] = 'Ikon bekapcsolása "%s"';
+$lang['Photo Properties'] = 'Kép tulajdonságok';
+$lang['Allow user customization'] = 'Testreszabás engedélyezése a felhasználóknak';
+$lang['Languages'] = 'Nyelvek';
+$lang['Installed Languages'] = 'Telepített nyelvek';
+$lang['Add New Language'] = 'Új nyelv hozzáadása';
+$lang['Language has been successfully installed'] = 'A nyelv telepítése sikeresen megtörtént';
+$lang['Select:'] = 'Kiválaszt:';
+$lang['None'] = 'Egyik sem';
+$lang['Invert'] = 'Felcserél';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nem lehet kikapcsolni ezt a témát, szükség van legalább még egy aktív témára.';
+$lang['Webmaster status is required.'] = 'Webmester jogosultság szükséges.';
+$lang['Bound Theme'] = 'Fix Téma';
+$lang['Allow rating'] = 'Értékelés engedélyezése';
+$lang['Select at least one comment'] = 'Legalább egy hozzászólást ki kell választani';
+$lang['Active Plugins'] = 'Bekapcsolt bővítmények';
+$lang['Inactive Plugins'] = 'Kikapcsolt Bővítmények';
+$lang['Missing Plugins'] = 'Hiányzó bővítmények';
+$lang['Uninstalled Plugins'] = 'Törölt bővítmények';
+$lang['By %s'] = 'Szerző: %s';
+$lang['Visit plugin site'] = 'Ugrás a bővítmények weboldalra';
+$lang['Active Languages'] = 'Bekapcsolt nyelvek';
+$lang['Delete this language'] = 'Nyelv törlése';
+$lang['Forbid this language to users'] = 'A nyelv tiltása';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ezt a nyelvet jelenleg nem lehet kikapcsolni, előbb válasszon egy másik nyelvet alapértelmezettnek.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ezt a nyelvet jelenleg nem lehet kikapcsolni, legalább egy nyelvre szükség van.';
+$lang['Inactive Languages'] = 'Kikapcsolt nyelvek';
+$lang['Make this language available to users'] = 'A nyelv engedélyezése';
+$lang['Set as default language for unregistered and new users'] = 'Nyelv beállítása alapértelmezettként nem regisztrált és új felhasználók részére';
+$lang['Add Photos'] = 'Képek hozzáadása';
+$lang['The following tag was deleted'] = 'Címke törlése sikeres';
+$lang['Miscellaneous'] = 'Egyéb';
+$lang['Virtual Links'] = 'Virtuális linkek';
+$lang['There is no other language available.'] = 'Egyéb nyelv nem áll rendelkezésre.';
+$lang['There is no other plugin available.'] = 'Egyéb bővítmény nem áll rendelkezésre.';
+$lang['There is no other theme available.'] = 'Egyéb téma nem áll rendelkezésre.';
+$lang['Add another set of photos'] = 'További kép hozzáadása';
+$lang['By rank'] = 'Értékelés szerint';
+$lang['Manual order'] = 'Kézi rendezés';
+$lang['Order of menubar items has been updated successfully.'] = 'A menüsor elemei sikeresen frissítve.';
+$lang['This theme was not designed to be directly activated'] = 'Ezt a témát úgy tervezték, hogy közvetlenül nem aktiválható';
+$lang['Pending Comments'] = 'Hozzászólások (függőben)';
+$lang['Who can see this photo?'] = 'Ki láthatja ezt a képet?';
+$lang['Menu Management'] = 'Menü';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'A php.ini fájlban az upload_max_filesize (%sB) nagyobb, mint a post_max_size (%sB), módosítania kell a beállítást';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif-kiterjesztés nem érhető el, az adminisztrátor tiltsa le az exif használatát';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'A feltöltendő fájl meghaladja a php.ini-ben megadott upload_max_filesize értéket: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'A feltöltendő fájlok meghaladják a php.ini-ben megadott post_max_size értéket: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'A feltöltendő fájl meghaladja a HTML formában megadott MAX_FILE_SIZE értéket';
+$lang['The uploaded file was only partially uploaded'] = 'A feltöltendő fájl csak részben töltődött fel';
+$lang['No file was uploaded'] = 'A feltöltés sikertelen';
+$lang['Missing a temporary folder'] = 'Hiányzik a temporary mappa';
+$lang['Failed to write file to disk'] = 'Nem sikerült a fájlt a lemezre írni';
+$lang['File upload stopped by extension'] = 'Fájlfeltöltést leállította a kiterjesztés';
+$lang['Unknown upload error'] = 'Ismeretlen feltöltési hiba';
+$lang['Error on file "%s" : %s'] = 'Hibás a fájl "%s" : %s';
+$lang['automatic order'] = 'Automatikus rendezés';
+$lang['manual order'] = 'Kézi rendezés';
+$lang['Albums automatically sorted'] = 'Automatikusan rendezett albumok';
+$lang['Batch Manager'] = 'Kötegelt kezelés';
+$lang['include child albums'] = 'belső albumok is';
+$lang['Selection'] = 'Kiválasztás';
+$lang['Action'] = 'Művelet';
+$lang['Set author'] = 'Szerző hozzáadása';
+$lang['Set title'] = 'Cím hozzáadása';
+$lang['Set creation date'] = 'Készítés dátumának hozzáadása';
+$lang['Apply action'] = 'Művelet végrehajtása';
+$lang['on the %d selected photos'] = 'a kiválasztott %d képen';
+$lang['%d of %d photos selected'] = '%d kép kiválasztva, összes kép %d';
+$lang['No photo selected, %d photos in current set'] = 'Nincs kép kiválasztva, összes kép %d';
+$lang['All %d photos are selected'] = 'Összes, %d kép kiválasztva';
+$lang['remove this filter'] = 'a szűrő eltávolítása';
+$lang['Duplicates'] = 'Duplikált';
+$lang['Add a filter'] = 'Szűrő hozzáadása';
+$lang['Remove all filters'] = 'Összes szűrő törlése';
+$lang['Refresh photo set'] = 'Képek frissítése';
+$lang['The whole page'] = 'Összes kép az oldalon';
+$lang['The whole set'] = 'A teljes képkészlet';
+$lang['No photo in the current set.'] = 'Nem található a feltételnek megfelelő kép.';
+$lang['No photo selected, no action possible.'] = 'Nincs kép kiválasztva, nem lehet műveletet végezni.';
+$lang['Choose an action'] = 'Művelet kiválasztása';
+$lang['remove author'] = 'szerző törlése';
+$lang['Type here the author name'] = 'Írja be a szerző nevét';
+$lang['remove title'] = 'cím törlése';
+$lang['Type here the title'] = 'Írja be a kép címét';
+$lang['remove creation date'] = 'készítés időpontjának törlése';
+$lang['Album photos associated to the following albums: %s'] = 'Az albumban lévő képek hozzárendelve a következő albumokhoz: %s';
+$lang['Delete orphan tags'] = 'Árva címkék törlése';
+$lang['delete photo'] = 'Kép törlése';
+$lang['Orphan tags deleted'] = 'Árva címkék törölve';
+$lang['Week starts on'] = 'A hét első napja';
+$lang['You have %d orphan tags: %s.'] = '%d árva címke található: %s.';
+$lang['Remove from caddie'] = 'Eltávolítás a kosárból';
+$lang['Themes which need upgrade'] = 'Frissítést igénylő témák';
+$lang['Languages which need upgrade'] = 'Frissítést igénylő nyelvek';
+$lang['All themes are up to date.'] = 'Minden téma naprakész.';
+$lang['All plugins are up to date.'] = 'Minden bővítmény naprakész.';
+$lang['All languages are up to date.'] = 'Minden nyelv naprakész.';
+$lang['Visit theme site'] = 'Téma oldal meglátogatása';
+$lang['Visit language site'] = 'Nyelv oldal meglátogatása';
+$lang['New Version'] = 'Új verzió';
+$lang['Obsolete Plugins'] = 'Elavult bővítmények';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'FIGYELEM! Ez a bővítmény nem kompatibilis a Piwigo jelenleg futó verziójával.';
+$lang['Do you want to activate anyway?'] = 'Aktiváljuk mindenképp?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'EZ A BŐVÍTMÉNY MÁR BE VAN ÉPÍTVE A PIWIGO RENDSZERBE! ELTÁVOLÍTANDÓ!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'HIBA: EZ A BŐVÍTMÉNY NEM ELÉRHETŐ, DE TELEPÍTVE VAN! ELTÁVOLÍTANDÓ!';
+$lang['display'] = 'kijelző';
+$lang['Thumbnails generation in progress...'] = 'Bélyegképek generálása folyamatban...';
+$lang['new'] = 'új';
+$lang['No results'] = 'Nincs találat';
+$lang['Searching...'] = 'Keresés...';
+$lang['Type in a search term'] = 'Írja be a keresett kifejezést';
+// missing translations
+$lang['Deactivate all'] = 'Összes kikapcsolása';
+$lang['Restore'] = 'Visszaállítás';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Alapértelmezett beállítások visszaállítása. Figyelem, a bővítmény módosításai elvesznek!';
+$lang['Show menubar'] = 'Menüsáv megjelenítése';
+$lang['Photos generation in progress...'] = 'Képek újragenerálása folyamatban...';
+$lang['%s photos have been regenerated'] = '%s kép újragenerálva';
+$lang['%s photos can not be regenerated'] = '%s képet nem lehet újragenerálni';
+$lang['Updates'] = 'Frissítések';
+$lang['Update in progress... Please wait.'] = 'Frissítés folyamatban... Kérem várjon.';
+$lang['Ignore this update'] = 'Hagyja figyelmen kívül';
+$lang['Reset ignored updates'] = 'Mellőzés törlése';
+$lang['Update All'] = 'Összes frissítése';
+$lang['ERROR'] = 'HIBA';
+$lang['Update Complete'] = 'Frissítés kész';
+$lang['Piwigo Update'] = 'Piwigo frissítés';
+$lang['Extensions Update'] = 'Bővítmény frissítés';
+$lang['All extensions are up to date.'] = 'Az összes bővítmény naprakész.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'A következő bővítmények nem kompatibilisek az új Piwigo verzióval:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'A következő témák nem kompatibilisek az új Piwigo verzióval:';
+$lang['I decide to update anyway'] = 'Határozhat úgy, hogy frissít mindenképp';
+$lang['Update to Piwigo %s'] = 'Frissítés a Piwigo %s verziójára';
+$lang['Two updates are available'] = 'Kétféle frissítés érhető el';
+$lang['This is a minor update, with only bug corrections.'] = 'Egy kisebb frissítés, kizárólag hibajavítás.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Egy jelentős frissítés, <a href="%s">új, kibővített funkciókkal</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Lehet, hogy néhány téma és bővítmény még nem áll rendelkezésre.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Lehetőség van közvetlenül frissíteni a Piwigo %s verziójára, kihagyva a Piwigo %s verzióját (ajánlott).';
+$lang['Save Template Directory'] = 'Template könyvtár mentése';
+$lang['Dump Database'] = 'Adatbázis mentése';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Előzmények mentése (Figyelem: lehet, hogy a szerver beállított memória limitjét túllépi)';
+$lang['Unable to dump database.'] = 'Nem lehet biztonsági másolatot készíteni az adatbázisról.';
+$lang['Some upgrades are available for extensions.'] = 'Frissítéseket találtam egyes kiterjesztésekhez.';
+$lang['Ignore All'] = 'Összes mellőzése';
+$lang['Crop'] = 'Körbevágás';
+$lang['Width'] = 'Szélesség';
+$lang['Height'] = 'Magasság';
+$lang['Follow Orientation'] = 'Elforgatható';
+$lang['Graphics Library'] = 'Grafikus könyvtár';
+$lang['Activate icon "new" next to albums and pictures'] = '"új" ikon aktiválása az albumok és képek mellett';
+$lang['Default photos order'] = 'Alapértelmezett kép sorrend';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Az alapértelmezett kép sorrend nem határozható meg a helyi konfigurációban található egyéni beállítás miatt.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'A helyi konfigurációs fájlban lévő <i>$conf[\'order_by\']</i> paraméter elavult, távolítsa el, vagy nevezze át <i>$conf[\'order_by_custom\']</i>-ra !';
+$lang['Add a criteria'] = 'Feltétel hozzáadása';
+$lang['Average rate'] = 'Átlagos pontszám';
+$lang['Rate'] = 'Érték';
+$lang['... or '] = '... vagy';
+$lang['Create'] = 'Létrehoz';
+$lang['Start Upload'] = 'Feltöltés indítása';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Jelenleg a Flash alapú feltöltőt használja. Ha problémát észlel váltson át a <a href="%s">Böngésző alapú feltöltésre</a>.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Jelenleg a Böngésző alapú feltöltőt használja. Próbálja ki a <a href="%s">Flash alapú feltöltőt</a>.';
+$lang['Maximum file size: %sB.'] = 'Maximális fájlméret: %sB.';
+$lang['Allowed file types: %s.'] = 'Engedélyezett fájltípusok: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Becsült maximális felbontás: %dMpixel (%dx%d pixel).';
+$lang['Manage Permissions'] = 'Jogosultságok kezelése';
+$lang['Photo %s of %s'] = '%s kép feltöltése, összes kép %s';
+$lang['show details'] = 'részletek megjelenítése';
+$lang['hide details'] = 'részletek elrejtése';
+$lang['Merge tags'] = 'Címkék összevonása';
+$lang['Select the destination tag'] = 'Válassza ki a kívánt címkét';
+$lang['(this tag will be deleted)'] = '(ez a címke törlésre kerül)';
+$lang['Confirm merge'] = 'Összevonás megerősítése';
+$lang['Merge selected tags'] = 'Kiválasztott címkék összevonása';
+$lang['No destination tag selected'] = 'Nincs kijelölt címke';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = '<em>%s</em> címke (címkék) összevonva a(z) <em>%s</em> címkével';
+$lang['Select at least two tags for merging'] = 'Válasszon ki legalább két címkét';
+$lang['Learn more'] = 'Bővebben';
+$lang['Select an album'] = 'Válasszon ki egy albumot';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Alapértelmezésben a Piwigo a HD (high definition) képből létrehoz egy web méretű képet.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Amennyiben nincs HD kép és a rendelkezésre álló web méretű kép nagyobb mint az aktuális átméretezett kép méretek, a jelenlegi képet a rendszer átmozgatja HD képnek és létrehoz egy új web méretű képet.';
+$lang['An error has occured during upgrade.'] = 'Hiba történt frissítés közben.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Hibajelentés (Információ). Kérjük ellenőrizze a telepített fájlok jogosultságait.<br><a href="%s">További információkért kattintson ide</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Nem tudom letölteni a frissítést a Piwigo fájl szerverről';
+$lang['Zoom'] = 'Zoom';
+$lang['Downloads'] = 'Letöltés';
+$lang['Photo name'] = 'Képnév';
+$lang['Download,'] = 'Letöltés,';
+$lang['Activate comments'] = 'Hozzászólások aktiválása';
+$lang['Original Size'] = 'Eredeti méret';
+$lang['Resize after upload'] = 'Feltöltés után átméretezés';
+$lang['Send connection settings by email'] = 'Kapcsolat beállításainak küldése e-mailben';
+$lang['The original image quality must be a number between %d and %d'] = 'Az eredeti kép minősége %d és %d között lehet';
+$lang['The original maximum height must be a number between %d and %d'] = 'Az eredeti magasság %d és %d között lehet';
+$lang['The original maximum width must be a number between %d and %d'] = 'Az eredeti szélesség %d és %d között lehet';
+$lang['Default comments order'] = 'Alapértelmezett hozzászólás-rend';
+$lang['administrators'] = 'adminisztrátorok';
+$lang['registered users'] = 'regisztrált felhasználók';
+$lang['Save visits in history for'] = 'Látogatások előzményeinek mentése';
+$lang['simple visitors'] = 'egyszerű látogatók';
+$lang['A locked gallery is only visible to administrators'] = 'A lezárt galériát csak az adminisztrátorok láthatják';
+$lang['Gallery unlocked'] = 'Galéria feloldva';
+$lang['Notify administrators when a comment is'] = 'Adminisztrátor értesítése hozzászólás érkezésekor';
+$lang['Unlock gallery'] = 'Galéria lezárásának feloldása';
+$lang['modified'] = 'módosítva';
+$lang['pending validation'] = 'jóváhagyásra váró';
+$lang['This album contains no photo.'] = 'Ez az album nem tartalmaz képeket.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Az albumban %d kép található. Feltöltés időpontja: %s és %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Az albumban %d kép található. Feltöltés időpontja: %s.';
+$lang['%s has been successfully updated.'] = '%s frissítése sikeres';
+$lang['Applications'] = 'Alkalmazások';
+$lang['apply automatic sort order'] = 'automatikus rendezés alkalmazása';
+$lang['Automatic sort order'] = 'Automatikus rendezés';
+$lang['Cancel'] = 'Mégse';
+$lang['List'] = 'Lista';
+$lang['Move to album'] = 'Áthelyezés másik albumba';
+$lang['Web Form'] = 'Webes űrlap';
+$lang['Add tags'] = 'Címkék hozzáadása';
+$lang['Add to caddie'] = 'Kosárba tesz';
+$lang['Last import'] = 'Utolsó import';
+$lang['Predefined filter'] = 'Előre definiált szűrők';
+$lang['With no album'] = 'Nem albumban';
+$lang['With no tag'] = 'Nem címkézett';
+$lang['With no virtual album'] = 'Nem virtuális albumban';
+$lang['Center of interest'] = 'Fókuszban';
+$lang['custom'] = 'Egyéni';
+$lang['Delete multiple size images'] = 'Eltérő méretű képek törlése';
+$lang['Generate multiple size images'] = 'Eltérő méretű képek létrehozása';
+$lang['any visitor can see this album'] = 'mindenki láthatja az albumot';
+$lang['Groups and users'] = 'Csoportok és felhasználók';
+$lang['Permission granted for groups'] = 'Engedéllyel rendelkező csoportok';
+$lang['Permission granted for users'] = 'Engedéllyel rendelkező felhasználók';
+$lang['Select groups...'] = 'Csoportok kiválasztása...';
+$lang['Select users...'] = 'Felhasználók kiválasztása...';
+$lang['There is no group in this gallery.'] = 'Nincs csoport ebben a galériában.';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'a látogatóknak be kell jelentkezniük és megfelelő engedéllyel kell rendelkezniük az album megtekintéséhez';
+$lang['Apply watermark if height is bigger than'] = 'Vízjel alkalmazása, ha a magasság nagyobb mint';
+$lang['Apply watermark if width is bigger than'] = 'Vízjel alkalmazása, ha a szélesség nagyobb mint';
+$lang['bottom left corner'] = 'bal alsó sarokban';
+$lang['bottom right corner'] = 'jobb alsó sarokban';
+$lang['middle'] = 'középen';
+$lang['Opacity'] = 'Áttetszőség';
+$lang['Permission management'] = 'Engedélyek kezelése';
+$lang['Select a file'] = 'Válasszon ki egy fájlt';
+$lang['top left corner'] = 'bal felső sarokban';
+$lang['top right corner'] = 'jobb felső sarokban';
+$lang['X Position'] = 'X pozíció';
+$lang['X Repeat'] = 'X ismétlődés';
+$lang['Y Position'] = 'Y pozíció';
+$lang['Available on'] = 'Elérhető';
+$lang['Available versions for'] = 'Elérhető verziók';
+$lang['add a new watermark'] = 'új vízjel hozzáadása';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'A <em>Piwigo for Android</em> alkalmazás segítségével csatlakozhat Piwigo galériájához telefonjával vagy táblagépével, létrehozhat új albumokat, feltölthet képeket (egyszerre akár többet is) képgalériájába.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A <em>Piwigo for iOS</em> alkalmazás segítségével csatlakozhat Piwigo galériájához iPhone, iPad vagy iPod Touch eszközével, létrehozhat új albumokat, feltölthet képeket (egyszerre akár többet is) képgalériájába.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Az Adobe Photoshop Lightroom egy képkezelő program, melyet nagy mennyiségű digitális kép utómunkálataihoz és kezeléséhez terveztek.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Jellemzői: galéria böngészés, album létrehozás, képek feltöltése.';
+$lang['Multiple Size'] = 'Kép méretek';
+$lang['No group is permitted to see this private album'] = 'Nincs engedélyezett csoport a privát albumhoz';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Egyszerűen telepítheti a Linux csomagkezelője segítségével, majd könnyedén beállíthatja Piwigo galériájának eléréséhez.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Lightroom feltöltő';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo iPhoto feltöltő';
+$lang['Piwigo for Android'] = 'Piwigo Androidon';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS-en (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Shotwell feltöltő';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo digiKam feltöltő';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'A ReGalAndroid (RemoteGallery kliens Androidra) egy nyílt forráskódú (GPL v3) Piwigo kliens Android platformra.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'A Shotwell egy nyílt forráskódú képszerkesztő, melyet Linux alapú rendszerekhez terveztek. Alapértelmezett szerkesztő Ubuntuban és Fedoraban.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'A Piwigo export bővítmény lehetővé teszi albumok, képek feltöltését.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'A Piwigo publish Plug-in lehetőséget biztosít arra, hogy a Lightroom program segítségével töltsön fel képeket, szinkronizálja képeit Piwigo galériájába.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Ahhoz, hogy Piwigo rendszerébe exportálhassa fotóit a digiKam segítségével, telepítenie kell a KIPI-plugins csomagot.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'A digiKam egy fejlett, ingyenes képkezelő program Linux, Windows és MacOSX alá.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'A digiKam programot fotósoknak tervezték, megtekintheti, kezelheti, szerkesztheti, javíthatja, rendszerezheti, címkézheti és megoszthatja képeit.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Az iPhoto a MacOSX rendszer alapértelmezett képszerkesztője. A Piwigo feltöltő modul segítségével létrehozhat új albumokat és feltöltheti képeit a Piwigo galériába.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Alapértelmezésben a kivágás középpontja az adott kép középpontja.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Az egérrel kijelölhető az a rész, amellyel a számunkra fontos részt állítjuk a középpontba.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Az érdeklődés középpontjában leggyakrabban a kép egyik részlete áll.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u felhasználónak van automatikus engedélye, mert egy megadott csoporthoz tartoznak.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Az Aperture egy Mac rendszerre fejlesztett professzionális eszköz képek szerkesztéséhez, nagy méretű könyvtárak kezeléséhez.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Az Aperture az Iphoto logikus felépítését biztosítja profi fotósoknak.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Egy kép kivágásakor, mint pl. a "Négyzet" alakú kivágásnál, a Piwigo lehetőséget biztosít a megfelelő rész kiemeléséhez.';
+$lang['Not cropped correctly?'] = 'Nem vágott helyesen?';
+$lang['Photo sizes with crop'] = 'Kép méretek körbevágáshoz';
+$lang['Piwigo export plugin for Aperture'] = 'Aperture Piwigo export bővítmény';
+$lang['Save manual order'] = 'Egyéni beállítások mentése';
+$lang['You can activate only one mobile theme.'] = 'Aktiválhatja csak a mobil témát.';
+$lang['cancel manual order'] = 'Egyéni beállítások elvetése';
+$lang['include photos with lower privacy level'] = 'alacsonyabb adatvédelmi szinttel rendelkező képeket tartalmaz';
+$lang['%d day'] = '%d nappal';
+$lang['%d days'] = '%d nappal';
+$lang['%d hour'] = '%d órával';
+$lang['%d hours'] = '%d órával';
+$lang['%d minute'] = '%d perccel';
+$lang['%d minutes'] = '%d perccel';
+$lang['%d month'] = '%d hónappal';
+$lang['%d months'] = '%d hónappal';
+$lang['%d second'] = '%d másodperccel';
+$lang['%d seconds'] = '%d másodperccel';
+$lang['%d year'] = '%d évvel';
+$lang['%d years'] = '%d évvel';
+$lang['%s ago'] = '%s ezelőtt,';
+$lang['%s in the future'] = '%s a jövőben';
+$lang['Added by %s'] = 'Feltöltötte: %s';
+$lang['Numeric identifier : %d'] = 'Azonosító szám(ID) : %d';
+$lang['Original file : %s'] = 'Eredeti fájl : %s';
+$lang['Posted %s on %s'] = 'Közzétéve %s ekkor: %s';
+$lang['Rated %d times, score : %.2f'] = 'Értékelve %d alkalommal, pontszám : %.2f';
+$lang['Sharpen'] = 'Élesítés';
+$lang['Visited %d times'] = 'Megtekintve %d alkalommal';
+$lang['Watermark'] = 'Vízjel';
+$lang[' and %d virtuals'] = ' és %d virtuális';
+$lang['%d physicals'] = ' %d fizikai';
+$lang['%d week'] = '%d hét';
+$lang['%d weeks'] = '%d hét';
+$lang['Edit photo'] = 'Kép szerkesztése';
+$lang['create a new site'] = 'új honlap létrehozása';
+$lang['No order field selected'] = 'Nincs rendezési mező kiválasztva';
+$lang['Duplicate selected tags'] = 'Kiválasztott címkék kettőzése';
+$lang['Name of the duplicate'] = 'A kettőzött címke neve';
+$lang['Source tag'] = 'Forrás címke';
+$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" címke kettőzve "%s" néven';
+$lang['Landscape'] = 'Tájkép';
+$lang['Minimum height'] = 'Legkisebb magasság';
+$lang['Minimum width'] = 'Legkisebb szélesség';
+$lang['Panorama'] = 'Panoráma';
+$lang['Portrait'] = 'Portré';
+$lang['Manage photos'] = 'Képek kezelése';
+$lang['View in gallery'] = 'Megtekintés a galériában';
+$lang['Number of albums per page'] = 'Albumok száma oldalanként';
+$lang['Ratio'] = 'Arány';
+$lang['between %.2f and %.2f'] = '%.2f és %.2f között';
+$lang['between %d and %d pixels'] = '%d és %d pixel között';
+$lang['Duplicate'] = 'Másolat';
+$lang['Manage the members'] = 'Tagok kezelése';
+$lang['Merge selected groups'] = 'Kiválasztott csoportok egyesítése';
+$lang['No group selected, no action possible.'] = 'Nincs kiválasztott csoport, művelet nem lehetséges.';
+$lang['No members to manage'] = 'Nem tagok kezelése';
+$lang['Please select at least two groups'] = 'Jelöljön ki legalább két csoport';
+$lang['Rename'] = 'Átnevezés';
+$lang['This group will be set to default'] = 'Ez a csoport lesz az alapértelmezett';
+$lang['This group will be unset to default'] = 'Ez a csoport nem lesz az alapértelmezett';
+$lang['Type here the name of the new group'] = 'Ide írja be az új csoport nevét';
+$lang['Purge user cache'] = 'Felhasználói gyorsítótár ürítése';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'A kép mérete csökken %dx%d pixel-re.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'A feltöltés utáni átméretezés kikapcsolva, oka: a GD, mint grafikuskönyvtár használata';
+$lang['Select at least one tag'] = 'Válassz ki legalább egy cimkét';
+$lang['Basic settings'] = 'Alapbeállítások';
+$lang['General'] = 'Általános';
+$lang['Mail theme'] = 'Levelező-sablon';
+?>
Index: /tags/2.6.0RC1/language/hu_HU/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/common.lang.php	(revision 25596)
@@ -0,0 +1,424 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Magyar [HU]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=423
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Magyar';
+$lang_info['country'] = 'Hungary';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'hu';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d Kbájt';
+$lang['%d album updated'] = '%d album frissítés';
+$lang['%d albums updated'] = '%d album frissítve';
+$lang['%d comment to validate'] = '%d hozzászólás engedélyezve';
+$lang['%d comments to validate'] = '%d hozzászólás vár engedélyezésre';
+$lang['%d new comment'] = '%d új hozzászólás';
+$lang['%d new comments'] = '%d új hozzászólás';
+$lang['%d comment'] = '%d hozzászólás';
+$lang['%d comments'] = '%d hozzászólás';
+$lang['%d hit'] = '%d találat';
+$lang['%d hits'] = '%d találat';
+$lang['%d new photo'] = '%d új elem';
+$lang['%d new photos'] = '%d új elem';
+$lang['%d new user'] = '%d új felhasználó';
+$lang['%d new users'] = '%d új felhasználó';
+$lang['%d rates'] = "%d értékelés";
+$lang['About'] = 'Impresszum';
+$lang['All tags'] = 'Összes címke';
+$lang['Any tag'] = 'Bármely címke';
+$lang['At least one listed rule must be satisfied.'] = 'Az alábbiakból legalább egy feltételnek teljesülni kell.';
+$lang['Author'] = 'Szerző';
+$lang['Albums'] = 'Albumok';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Ablak bezárása';
+$lang['Complete RSS feed (photos, comments)'] = 'Teljes RSS (képek, hozzászólások)';
+$lang['Confirm Password'] = 'Jelszó megerősítése';
+$lang['Connection settings'] = 'Kapcsolat beállításai';
+$lang['Login'] = 'Bejelentkezés';
+$lang['Contact webmaster'] = 'Levél a Webmesternek!';
+$lang['Create a new account'] = 'Új regisztráció';
+$lang['Created on'] = 'Létrehozva';
+$lang['Creation date'] = 'Létrehozás dátuma';
+$lang['Current password is wrong'] = 'Hibás jelszó';
+$lang['Dimensions'] = 'Képméret';
+$lang['Display'] = 'Megjelenítés';
+$lang['Each listed rule must be satisfied.'] = 'Az alábbi feltételek mindegyikének meg kell felelni.';
+$lang['Email address is missing. Please specify an email address.'] = 'Hiányzó e-mail cím';
+$lang['Email address'] = 'E-mail cím';
+$lang['Enter your personnal informations'] = 'Saját adatok megadása';
+$lang['Error sending email'] = 'E-mail küldése sikertelen';
+$lang['File name'] = 'Fájlnév';
+$lang['File'] = 'Fájl';
+$lang['Filesize'] = 'Fájlméret';
+$lang['Filter and display'] = 'Szűrő megjelenítés';
+$lang['Filter'] = 'Szűrő';
+$lang['Forgot your password?'] = 'Elfelejtette a jelszavát?';
+$lang['Go through the gallery as a visitor'] = 'Megtekintés látogatóként';
+$lang['Help'] = 'Segítség';
+$lang['Identification'] = 'Belépés';
+$lang['Photos only RSS feed'] = 'Képek RSS';
+$lang['Keyword'] = 'Kulcsszó';
+$lang['Links'] = 'Kapcsolódó linkek';
+$lang['N/A'] = 'Nincs adat';
+$lang['New on %s'] = 'Új %s';
+$lang['Notification'] = 'RSS';
+$lang['Number of items'] = 'Tételek száma';
+$lang['Original dimensions'] = 'Eredeti méret';
+$lang['Password forgotten'] = 'Elfelejtett jelszó';
+$lang['Password'] = 'Jelszó';
+$lang['Post date'] = 'Feltöltés dátuma';
+$lang['Posted on'] = 'Feltöltve';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Gyors kapcsolódás';
+$lang['RSS feed'] = 'RSS-Feed';
+$lang['Register'] = 'Regisztráció';
+$lang['Registration'] = 'Regisztráció';
+$lang['Related tags'] = 'Kapcsolódó címkék';
+$lang['Reset'] = 'Visszaállítás';
+$lang['Retrieve password'] = 'Jelszó igénylése';
+$lang['Search rules'] = 'Keresési szabályok';
+$lang['Search tags'] = 'Címke keresése';
+$lang['Search'] = 'Keresés';
+$lang['display available tags'] = 'Lehetséges címkék';
+$lang['Since'] = 'óta';
+$lang['Sort by'] = 'Rendezés';
+$lang['Sort order'] = 'Rendezési sorrend';
+$lang['Tag'] = 'Címke';
+$lang['Tags'] = 'Címkék';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Az RSS értesítő a következő -az oldallal kapcsolatos- információkat tartalmazza: új fotók, új albumok, új kommentek.';
+$lang['Unknown feed identifier'] = 'Ismeretlen RSS azonosító';
+$lang['User comments'] = 'Felhasználói hozzászólások';
+$lang['Username'] = 'Felhasználónév';
+$lang['Visits'] = 'Látogatás';
+$lang['Webmaster'] = 'Webmester';
+$lang['Week %d'] = '%d. hét';
+$lang['About Piwigo'] = 'Impresszum';
+$lang['You are not authorized to access the requested page'] = 'Önnek nincs jogosultsága a kívánt oldal megtekintéséhez';
+$lang['add this photo to your favorites'] = 'Kedvencekhez ad';
+$lang['Administration'] = 'Adminisztráció';
+$lang['all'] = 'összes';
+$lang['ascending'] = 'növekvő';
+$lang['author(s) : %s'] = 'Szerző(k) : %s';
+$lang['Expand all albums'] = 'Összes album kibontása';
+$lang['posted after %s (%s)'] = 'feltöltve %s (%s) után';
+$lang['posted before %s (%s)'] = 'feltöltve %s (%s) előtt';
+$lang['posted between %s (%s) and %s (%s)'] = 'feltöltve %s (%s) és %s (%s) között';
+$lang['posted on %s'] = 'elérhető %s';
+$lang['Best rated'] = 'Legjobbra  értékelt';
+$lang['display best rated photos'] = 'A legjobbra értékelt képek megjelenítése';
+$lang['Calendar'] = 'Naptár';
+$lang['All'] = 'Összes';
+$lang['display each day with photos, month per month'] = 'Napi képek megjelenítése hónapról-hónapra';
+$lang['View'] = 'Nézet';
+$lang['chronology_monthly_calendar'] = 'Havi naptár';
+$lang['chronology_monthly_list'] = 'Havi lista';
+$lang['chronology_weekly_list'] = 'Heti lista';
+$lang['Click here if your browser does not automatically forward you'] = 'Kattintson ide, ha a böngészője nem továbbítja automatikusan.';
+$lang['comment date'] = 'Hozzászólás időpontja';
+$lang['Comment'] = 'Hozzászólás';
+$lang['Your comment has been registered'] = 'Hozzászólás rögzítve';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood rendszer : várjon egy kicsit a következő hozzászólás előtt';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'A hozzászólás még nincs rögzítve. (érvényességi szabályok)';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Az adminisztrátornak még el kell fogadni a hozzászólást, hogy láthatóvá váljon.';
+$lang['This login is already used by another user'] = 'Ezt a nevet már valaki használja';
+$lang['Comments'] = 'Hozzászólások';
+$lang['Add a comment'] = 'Hozzászólás';
+$lang['created after %s (%s)'] = 'létrehozva %s (%s) után';
+$lang['created before %s (%s)'] = 'létrehozva %s (%s) előtt';
+$lang['created between %s (%s) and %s (%s)'] = 'létrehozva %s (%s) és %s (%s) között';
+$lang['created on %s'] = 'létrehozva %s';
+$lang['Customize'] = 'Testreszabás';
+$lang['Your Gallery Customization'] = 'A Galéria Testreszabása ';
+$lang['day'][0] = 'Vasárnap';
+$lang['day'][1] = 'Hétfő';
+$lang['day'][2] = 'Kedd';
+$lang['day'][3] = 'Szerda';
+$lang['day'][4] = 'Csütörtök';
+$lang['day'][5] = 'Péntek';
+$lang['day'][6] = 'Szombat';
+$lang['Default'] = 'Alapértelmezett';
+$lang['delete this photo from your favorites'] = 'Törlés a kedvencek közül';
+$lang['Delete'] = 'Törlés';
+$lang['descending'] = 'csökkenő';
+$lang['Download'] = 'letöltés';
+$lang['Download this file'] = 'Képfájl letöltése';
+$lang['edit'] = 'Javítás';
+$lang['wrong date'] = 'hibás dátum';
+$lang['excluded'] = 'kivétel';
+$lang['Your favorites'] = 'Kedvenceim';
+$lang['display your favorites photos'] = 'kedvenc képeimet jeleníti meg';
+$lang['Favorites'] = 'Kedvenceim';
+$lang['First'] = 'Első oldal';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Az oldal karbantartás miatt átmenetileg nem látható, kérjük látogasson vissza néhány perc múlva.';
+$lang['Page generated in'] = 'Oldal készült';
+$lang['guest'] = 'Vendég';
+$lang['Hello'] = 'Üdvözlet';
+$lang['available for administrators only'] = 'Csak adminisztrátoroknak';
+$lang['display this album'] = 'album képeinek, belső albumainak megjelenítése';
+$lang['display last user comments'] = 'Utolsó hozzászólások megjelenítése';
+$lang['customize the appareance of the gallery'] = 'A galéria megjelenésének testreszabása';
+$lang['search'] = 'Keresés';
+$lang['Home'] = 'Főoldal';
+$lang['Identification'] = 'Azonosító';
+$lang['in this album'] = 'ebben az albumban';
+$lang['in %d sub-album'] = '%d belső albumban';
+$lang['in %d sub-albums'] = '%d belső albumban';
+$lang['included'] = 'beleértve';
+$lang['Invalid password!'] = 'Hibás jelszó!';
+$lang['Language'] = 'Nyelv';
+$lang['last %d days'] = 'utolsó %d nap';
+$lang['Last'] = 'Utolsó oldal';
+$lang['Logout'] = 'Kijelentkezés';
+$lang['obligatory'] = 'szükséges';
+$lang['display a calendar by creation date'] = 'Naptár megjelenítése a készítés dátuma szerint';
+$lang['display all photos in all sub-albums'] = 'Megjelenik az összes elem (belső albumok is)';
+$lang['return to normal view mode'] = 'Visszatérés a normál kinézethez';
+$lang['display a calendar by posted date'] = 'Naptár megjelenítése a feltöltés dátuma szerint';
+$lang['month'][10] = 'Október';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'December';
+$lang['month'][1] = 'Január';
+$lang['month'][2] = 'Február';
+$lang['month'][3] = 'Március';
+$lang['month'][4] = 'Április';
+$lang['month'][5] = 'Május';
+$lang['month'][6] = 'Június';
+$lang['month'][7] = 'Július';
+$lang['month'][8] = 'Augusztus';
+$lang['month'][9] = 'Szeptember';
+$lang['Most visited'] = 'Legtöbbször nézett';
+$lang['display most visited photos'] = 'A leglátogatottabb képek megjelenítése';
+$lang['The number of photos per page must be a not null scalar'] = 'Az oldalankénti képek száma nem lehet 0!';
+$lang['Number of photos per page'] = 'Képek száma oldalanként';
+$lang['Unknown identifier'] = 'Ismeretlen azonosító';
+$lang['New password'] = 'Új jelszó';
+$lang['Rate this photo'] = 'Értékelje a képet';
+$lang['Next'] = 'Következő';
+$lang['no rate'] = 'még nincs értékelve';
+$lang['Photos posted within the last %d day.'] = 'Az alábbi elemek kerültek fel az elmúlt %d napban.';
+$lang['Photos posted within the last %d days.'] = 'Az alábbi elemek kerültek fel az elmúlt %d napban.';
+$lang['password updated'] = 'Jelszó frissítve';
+$lang['Recent period must be a positive integer value'] = 'Kell egy pozitív egész érték';
+$lang['photo'] = 'kép';
+$lang['Click on the photo to see it in high definition'] = 'Az eredeti méret megnyitásához kattintson a képre!';
+$lang['Show file metadata'] = 'Meta adatok megjelenítése';
+$lang['Powered by'] = 'Az oldal motorja:';
+$lang['Preferences'] = 'Beállítások';
+$lang['Previous'] = 'Előző';
+$lang['Random photos'] = 'Véletlenszerű képek';
+$lang['display a set of random photos'] = 'Véletlenszerű képek megjelenítése';
+$lang['Recent albums'] = 'Legfrissebb album';
+$lang['display recently updated albums'] = 'Utoljára feltöltött albumok megjelenítése';
+$lang['Recent period'] = 'Elmúlt napban';
+$lang['Recent photos'] = 'Legfrissebb képek';
+$lang['display most recent photos'] = 'Legfrissebb képek megjelenítése';
+$lang['Redirection...'] = 'Átirányítás...';
+$lang['Please, enter a login'] = 'Kérem, adja meg felhasználói nevét';
+$lang['login mustn\'t end with a space character'] = 'A felhasználói név nem végződhet SPACE karakterrel';
+$lang['login mustn\'t start with a space character'] = 'A felhasználói név nem kezdődhet SPACE karakterrel';
+$lang['this login is already used'] = 'Ilyen felhasználónk már van!';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'E-mail formátuma: xxx@yyy.eee (pl.: kedvenc@nyuszi.hu)';
+$lang['Auto login'] = 'Jegyezz meg';
+$lang['remove this tag from the list'] = 'Ezt a címkét távolítsa el a listáról';
+$lang['representative'] = 'képviselő';
+$lang['Search for Author'] = 'Szerző keresése';
+$lang['Search in albums'] = 'Album keresése';
+$lang['Search by date'] = 'Keresés dátum alapján';
+$lang['Date'] = 'Dátum';
+$lang['End-Date'] = 'Befejező dátum';
+$lang['Kind of date'] = 'Dátum típusa';
+$lang['Search for words'] = 'Keresés szavakra';
+$lang['Search for all terms'] = 'Keresés az összes kifejezésre';
+$lang['Search for any term'] = 'Keresés bármely kifejezésre';
+$lang['Empty query. No criteria has been entered.'] = 'Üres keresés. Nem lett megadva semmilyen keresési szempont.';
+$lang['Search results'] = 'Keresés eredménye';
+$lang['Search in sub-albums'] = 'Keresés a belső albumokban is';
+$lang['searched words : %s'] = 'Keresett kifejezések: %s';
+$lang['Contact'] = 'Kapcsolat:';
+$lang['set as album representative'] = 'Beállítás album-képviselőként';
+$lang['Show number of comments'] = 'Hozzászólások számának megjelenítése';
+$lang['Show number of hits'] = 'Találatok száma';
+$lang['slideshow'] = 'Diavetítés';
+$lang['stop the slideshow'] = 'Vetítés megállítása';
+$lang['Specials'] = 'Speciális';
+$lang['SQL queries in'] = 'adatbázis-lekérdezés';
+$lang['display only recently posted photos'] = 'Csak nemrégiben küldött képek';
+$lang['return to the display of all photos'] = 'Vissza (összes kép megjelenítése)';
+$lang['the beginning'] = 'Kezdet';
+$lang['Thumbnails'] = 'Bélyegképek';
+$lang['Menu'] = 'Menü';
+$lang['A comment on your site'] = 'Komment az oldalon';
+$lang['today'] = 'Mai';
+$lang['Update your rating'] = 'Értékelés frissítése';
+$lang['the username must be given'] = 'Felhasználói nevet meg kell adni';
+$lang['useful when password forgotten'] = 'hasznos, ha elfelejti a jelszavát';
+$lang['Quick search'] = 'Gyors-keresés';
+$lang['Connected user: %s'] = 'Kapcsolódás Felhasználó: %s';
+$lang['IP: %s'] = 'IP cím: %s';
+$lang['Browser: %s'] = 'Böngésző: %s';
+$lang['Author: %s'] = 'Szerző: %s';
+$lang['Comment: %s'] = 'Megjegyzés: %s';
+$lang['Comment by %s'] = 'Megjegyzés %s';
+$lang['User: %s'] = 'Felhasználó: %s';
+$lang['Email: %s'] = 'E-Mail: %s';
+$lang['Admin: %s'] = 'Adminisztrátor: %s';
+$lang['Registration of %s'] = 'Bejegyezte: %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Rossz felhasználói állapot "vendég", az alapértelmezett állapot. Kérjük, küldjön értesítést a webmesternek.';
+$lang['this email address is already in use'] = 'Ezt az e-mail címet már egy másik felhasználó használja.';
+$lang['Album results for'] = 'Album eredményei';
+$lang['Tag results for'] = 'Címke eredményei';
+$lang['from %s to %s'] = '%s-tól %s-ig';
+$lang['Play of slideshow'] = 'Diavetítés indítása';
+$lang['Pause of slideshow'] = 'Diavetítés szüneteltetése';
+$lang['Repeat the slideshow'] = 'Diavetítés újra indítása';
+$lang['Not repeat the slideshow'] = 'Ne ismételjük meg a diavetítést';
+$lang['Reduce diaporama speed'] = 'Képváltás lassítása';
+$lang['Accelerate diaporama speed'] = 'Képváltás gyorsítása';
+$lang['Submit'] = 'Küldés';
+$lang['Yes'] = 'Igen';
+$lang['No'] = 'Nem';
+$lang['%d photo']='%d kép';
+$lang['%d photos']='%d kép';
+$lang['%d photo is also linked to current tags'] = '%d kép kapcsolódik a címkéhez';
+$lang['%d photos are also linked to current tags'] = '%d kép kapcsolódik a címkéhez';
+$lang['display photos linked to this tag'] = 'A címkéhez kapcsolódó képek';
+$lang['photos posted during the last %d days'] = 'Képek az elmúlt %d napban';
+$lang['Piwigo Help'] = 'Piwigo segítség';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'Betűrendben';
+$lang['letters'] = 'Betűrendben';
+$lang['show tag cloud'] = 'Címkefelhő megjelenítése';
+$lang['cloud'] = 'Felhő';
+$lang['Reset to default values'] = 'Alap értékek visszaállítása';
+$lang['delete all photos from your favorites'] = 'Minden kép törlése a kedvencekből';
+$lang['Sent by'] = 'Küldte';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'A cookie-k le vannak tiltva vagy a böngésző nem támogatja. Engedélyezni kell a cookie-kat a csatlakozáshoz.';
+$lang['Are you sure?'] = 'Biztos benne?';
+$lang['Email address is missing. Please specify an email address.'] = 'E-mail cím hiányzik. Kérem írja be az e-mail címet.';
+$lang['Edit a comment'] = 'A hozzászólás módosítása';
+$lang['(!) This comment requires validation'] = '(!) Ezt a hozzászólást engedélyezni kell';
+$lang['Welcome'] = 'Üdvözlöm';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Üdvözlöm a Piwigo képgalériában!';
+$lang['... or browse your empty gallery'] = '... vagy tekintse meg az üres galériát';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... vagy kérem kikapcsolni ezt az üzenetet, eligazodom magam is';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Üdv %s, ez a Piwigo képgaléria üres!';
+$lang['I want to add photos'] = 'Szeretnék képeket feltölteni';
+$lang['Manage this user comment: %s'] = 'Itt kezelheti a felhasználó hozzászólását: %s';
+$lang['This author modified following comment:'] = 'A szerző a következő hozzászólást módosította:';
+$lang['This author removed the comment with id %d'] = 'A szerző a következő hozzászólást törölte id %d';
+$lang['html tags are not allowed in login'] = 'Belépéskor a html tag-ek nem engedélyezettek';
+$lang['The number of photos per page must be a not null scalar'] = 'Az oldalankénti képek száma nem lehet 0, és pozitív egész szám kell legyen.';
+$lang['Number of photos per page'] = 'Képek száma oldalanként';
+// missing translations
+$lang['Rating score'] = 'Átlagos pontszám';
+$lang['Invalid username or email'] = 'Érvénytelen felhasználónév vagy e-mail cím';
+$lang['Password reset is not allowed for this user'] = 'A felhasználói jelszó törlése nem engedélyezett';
+$lang['User "%s" has no email address, password reset is not possible'] = '"%s" felhasználó nem rendelkezik érvényes e-mail címmel, jelszó alaphelyzetbe állítása nem lehetséges';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Valaki a jelszó alaphelyzetbe állítását kérte a következő felhasználói fiókhoz:';
+$lang['Username "%s" on gallery %s'] = 'Felhasználónév: "%s" Galéria: %s';
+$lang['To reset your password, visit the following address:'] = 'Az új jelszó megadásához kattintson a következő linkre:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Amennyiben nem Ön kérte, vagy időközben meggondolta magát, kérjük hagyja figyelmen kívül ezt a levelet és nem történik semmi.';
+$lang['Password Reset'] = 'Jelszó törlése (Új jelszó)';
+$lang['Check your email for the confirmation link'] = 'Elküldtük levélben a megerősítő linket. Kérjük ellenőrizze postafiókját.';
+$lang['Invalid key'] = 'Érvénytelen kulcs';
+$lang['The passwords do not match'] = 'A jelszavak nem egyeznek';
+$lang['Your password has been reset'] = 'A jelszó módosítása megtörtént';
+$lang['Return to home page'] = 'Vissza a kezdőlapra';
+$lang['Please enter your username or email address.'] = 'Kérjük adja meg felhasználónevét, vagy e-mail címét.';
+$lang['You will receive a link to create a new password via email.'] = 'E-mailben kap egy linket, hogy létre tudja hozni új jelszavát.';
+$lang['Username or email'] = 'Felhasználónév vagy e-mail cím';
+$lang['Change my password'] = 'Jelszó módosítása';
+$lang['Enter your new password below.'] = 'Írja be az új jelszót.';
+$lang['EXIF Metadata'] = 'EXIF metaadatok';
+$lang['IPTC Metadata'] = 'IPTC metaadatok';
+$lang['Edit'] = 'Szerkesztés';
+$lang['large'] = 'L - nagy';
+$lang['medium'] = 'M - közepes';
+$lang['Original'] = 'Eredeti';
+$lang['small'] = 'S - kicsi';
+$lang['square'] = 'Négyzetes';
+$lang['thumb'] = 'Bélyegkép';
+$lang['xlarge'] = 'XL - nagyobb';
+$lang['xxlarge'] = 'XXL - legnagyobb';
+$lang['Hello %s,'] = 'Üdv %s,';
+$lang['Here are your connection settings'] = 'Kapcsolat adatai';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Amennyiben hibát észlel az e-mail továbbítása során, kérjük lépjen kapcsolatba velünk %s';
+$lang['Password: %s'] = 'Jelszó: %s';
+$lang['Send my connection settings by email'] = 'Kapcsolat beállításainak küldése e-mailben';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Sikeresen regisztrált, hamarosan kap egy e-mailt a kapcsolat adataival. Üdvözöljük!';
+$lang['Thank you for registering at %s!'] = 'Köszöni Önnek a regisztrációt a(z) %s!';
+$lang['Username modification'] = 'Felhasználónév módosítása';
+$lang['Username: %s'] = 'Felhasználónév: %s';
+$lang['Your username has been successfully changed to : %s'] = 'Sikeres felhasználónév módosítás: %s';
+$lang['Photo sizes'] = 'Kép méretek';
+$lang['Desktop'] = 'Asztali';
+$lang['Mobile'] = 'Mobil';
+$lang['Show latest comments first'] = 'Új hozzászólások előre';
+$lang['Show oldest comments first'] = 'Régi hozzászólások előre';
+$lang['View in'] = 'Megjelenítés';
+$lang['Date created, new &rarr; old'] = 'Kép készült, újabb &rarr; korábbi';
+$lang['Date created, old &rarr; new'] = 'Kép készült, korábbi &rarr; újabb';
+$lang['Date posted, new &rarr; old'] = 'Feltöltve, újabb &rarr; korábbi';
+$lang['Date posted, old &rarr; new'] = 'Feltöltve, korábbi &rarr; újabb';
+$lang['File name, A &rarr; Z'] = 'Fájlnév, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Fájlnév, Z &rarr; A';
+$lang['Manual sort order'] = 'Kézi rendezés';
+$lang['Photo title, A &rarr; Z'] = 'Kép címe, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Kép címe, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Értékelés pontszám, magas &rarr; alacsony';
+$lang['Rating score, low &rarr; high'] = 'Értékelés pontszám, alacsony &rarr; magas';
+$lang['Visits, high &rarr; low'] = 'Megtekintések, több &rarr; kevesebb';
+$lang['Visits, low &rarr; high'] = 'Megtekintések, kevesebb &rarr; több';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Azonosító (ID), növekvő';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Azonosító (ID), csökkenő';
+$lang['2small'] = 'XXS - legkissebb';
+$lang['xsmall'] = 'XS - kissebb';
+$lang['%d rate'] = '%d értékelé';
+$lang['Bad request'] = 'Hibás kérés';
+$lang['Forbidden'] = 'Tiltott';
+$lang['Page not found'] = 'Az oldal nem található';
+$lang['Permalink for album not found'] = 'A permalink album nem létezik';
+$lang['Piwigo encountered a non recoverable error'] = 'A Piwigo nem javítható hibát észlelt';
+$lang['Requested album does not exist'] = 'A kért album nem létezik';
+$lang['Requested tag does not exist'] = 'A kért címke nem létezik';
+$lang['Email address is mandatory'] = 'E-mail cím szükséges';
+$lang['Username is mandatory'] = 'Felhasználónév szükséges';
+$lang['mandatory'] = 'szükséges';
+$lang['Website'] = 'Weboldal';
+$lang['Your website URL is invalid'] = 'A weboldal URL érvénytelen';
+$lang['Email'] = 'E-mail';
+$lang['First Page'] = 'Első oldal';
+$lang['Go back to the album'] = 'Vissza az albumhoz';
+$lang['Last Page'] = 'Utolsó oldal';
+$lang['Password is missing. Please enter the password.'] = 'Jelszó hiányzik. Kérem írja be a jelszót.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Jelszó megerősítése hiányzik. Kérem erősítse meg a választott jelszót.';
+?>
Index: /tags/2.6.0RC1/language/hu_HU/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Virtuális albumok áthelyezése</h2>
+
+<p>Megváltoztatható egy virtuális album szülő albuma.</p>
+
+<h3>Virtuális albumok mozgatása</h3>
+
+<p>Válasszon ki egy vagy több virtuális albumot áthelyezésre. 
+Ha a lista üres, nem hozott létre egyetlen albumot sem.</p>
+
+<h3>Új szülő album</h3>
+
+<p>Válassza ki az új szülő albumot (virtuális vagy fizikai). 
+Ha nem választ ki szülő albumot, akkor az albumot a gyökérbe mozgatja.
+Nem mozgathatja az albumot önmagára, vagy valamelyik gyermek albumra.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/cat_options.html	(revision 25596)
@@ -0,0 +1,33 @@
+<h2>Album tulajdonságok</h2>
+
+<p>Ezen az oldalon lehetősége van az adminisztrátoroknak az albumok kezelésére. 
+Számos lehetőség áll rendelkezésére, kezelhet akár több albumot is egyszerre.</p>
+
+<dl>
+
+  <dt>Feltöltés</dt>
+  <dd>Kezelheti mely albumokba engedélyezi látogatóinak a feltöltést. Csak nem virtuális és nem távoli albumok esetén.</add>
+
+  <dt>Hozzászólások</dt>
+  <dd>Eldöntheti mely albumokhoz engedélyez hozzászólásokat.
+Válassza ki azokat az albumokat, melyekhez engedélyezni kívánja a hozzászólásokat. 
+Az engedélyezett albumok képei alatt elérhetővé válik a hozzászólás űrlap.</dd>
+
+  <dt>Lezárás</dt>
+  <dd>Lehetősége van az albumok ideiglenes zárolására. 
+  Ha zárol egy albumot, annak gyermek albumai is zárolva lesznek. 
+  Ha feloldja egy album zárolását, annak szülő albuma is feloldásra kerül.</dd>
+
+  <dt>Nyilvános / Privát</dt>
+  <dd>Kezelheti a kiválasztott albumokhoz tartozó engedélyeket. 
+  Kiválaszthatja a privát albumokat : összefüggésben van a látogatók és/vagy csoportok engedélyeinek beállításával. 
+  Ha egy album privát, a belső albumok is privát albumokká válnak. 
+  Ha egy album nyilvános, a szülő album is nyilvánossá válik.</dd>
+
+  <dt>Reprezentál</dt>
+  <dd>Ez a lehetőség csak akkor kezelhető, ha az
+  <code>allow_random_representative</code> konfigurációs paramétere <em>true</em> (lásd <span
+  class="filename">include/config_defaults.inc.php</span>). 
+  Minden album képviselő lehet véletlenszerű, vagy lehet egyedi (egy egyedi kép).</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/hu_HU/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/configuration.html	(revision 25596)
@@ -0,0 +1,108 @@
+<h2>Beállítások</h2>
+
+<p>Az adminisztrátoroknak ezen az oldalon lehetőségük van a galéria alapvető jellemzőinek beállítására. Valójában itt tényleg csak az alapvető jellemzők megváltoztatására van lehetőség, ezek az adminisztrátorok túlnyomó többségét ki is elégítik. További (speciális) beállításokra is mód nyílik, melyek az <span
+class="filename">include/config_default.inc.php</span> fájlban találhatók.</p>
+
+<p>Az oldal több csoportba rendezve tartalmazza a beállítási lehetőségeket.</p>
+
+
+<h3>Általános</h3>
+<ul>
+  <li><strong>Galéria címe</strong>: RSS hírcsatornához és e-mailekhez.</li>
+
+  <li><strong>Oldal fejléc</strong>: Minden nyilvános oldal tetején megjelenik.</li>
+
+  <li><strong>Galéria URL</strong>: RSS hírcsatorna használatához.</li>
+
+  <li><strong>Galéria lezárása</strong>: Galéria zárolása karbantartás esetén. Csak az adminisztrátorok érik el az oldalt.</li>
+
+  <li><strong>Értékelés engedélyezése</strong>: Képek értékelésének engedélyezése.</li>
+
+  <li><strong>Vendégek által értékelhető</strong>: A nem regisztrált felhasználók is értékelhetik a képet.</li>
+
+  <li><strong>Regisztráció engedélyezése</strong>: A vendégek regisztrálhatnak.</li>
+
+  <li><strong>Az e-mail cím kötelező minden felhasználó számára</strong>: A regisztrációs profilban ill. profil módosításakor megadott e-mail cím ellenőrzésre kerül. Kivételt képez, ha az ellenőrzést az adminisztrátor hajtja végre.</li>
+
+  <li><strong>E-mail küldés, ha egy új felhasználó regisztrál</strong>: Az adminisztrátorok levélben kapnak értesítést ha egy új felhasználó regisztrált.</li>
+
+</ul>
+
+<h3>Statisztikák</h3>
+
+  <p>Az oldallátogatások (<span
+  class="pwgScreen">category.php</span> és <span
+  class="pwgScreen">picture.php</span>) mentésre kerülnek a
+  <code>history</code> táblába.</p>
+
+  <p>A látogatások megtekinthetők az <span
+  class="pwgScreen">Adminisztráció, Eszközök, Statisztikák</span> oldalon.</p>
+
+<ul>
+  <li><strong>Vendégek általi oldallátogatások mentése</strong>: A vendégek általi oldallátogatások kerülnek mentésre.</li>
+
+  <li><strong>Felhasználók általi oldallátogatások mentése</strong>: A regisztrált felhasználók általi oldallátogatások kerülnek mentésre.</li>
+
+  <li><strong>Adminisztrátorok általi oldallátogatások mentése</strong>: Az adminisztrátorok általi oldallátogatások kerülnek mentésre.</li>
+
+</ul>
+
+<h3>Hozzászólások</h3>
+<ul>
+
+  <li><strong>Bárki hozzászólhat</strong>: A nem regisztrált vendég felhasználók is írhatnak hozzászólásokat.</li>
+
+  <li><strong>Hozzászólások száma oldalanként</strong>.</li>
+
+  <li><strong>Engedélyezés szükséges</strong>: Egy adminisztrátornak jóvá kell hagynia a hozzászólást, mielőtt az a honlapon megjelenne. A felhasználói hozzászólások jóváhagyása az <span class="pwgScreen">Adminisztráció, Képek,
+  Hozzászólások</span> oldalon történik.</li>
+
+  <li><strong>E-mail küldés, ha egy érvényes hozzászólás érkezik</strong>: Az adminisztrátorok e-mailben értesítést kapnak amennyiben új hozzászólás érkezik és jóváhagyásra kerül.</li>
+
+  <li><strong>E-mail küldés, ha egy hozzászólás jóváhagyásra vár</strong>:
+Egy e-mail küldése az adminisztrátornak, amennyiben egy felhasználó hozzászólást küld, és azt az adminisztrátornak engedélyezni kell.
+A felhasználói hozzászólások jóváhagyása az <span class="pwgScreen">Adminisztráció, Képek, Hozzászólások</span> oldalon történik.</li>
+
+</ul>
+
+<h3>Feltöltés</h3>
+<ul>
+  <li><strong>Jelenjen meg a Kép hozzáadása menüpont</strong>: Ha léteznek feltölthető kategóriák, a feltöltő link megjelenik a Kategóriák menüben.</li>
+  <li><strong>Felhasználói szint beállítása a feltöltéshez</strong>: Azon felhasználói szint beállítása, akik feltölthetnek képeket az egyes kategóriákba.</li>
+  <li><strong>Email-küldés, ha valaki képet töltött fel</strong>: Az adminisztrátor e-mailben értesítést kap amennyiben a felhasználók képeket töltöttek fel.</li>
+</ul>
+
+<h3>Alapértelmezett megjelenítés</h3>
+
+<p>Itt lehet megváltoztatni a galéria alapértelmezett megjelenését. A látogatók a beállításoknak megfelető kinézetben látják a galériát. Regisztráció és bejelentkezés után a felhasználó egyéni beállításokat alkalmazhat
+(a beállítások módosíthatók a <span class="pwgScreen">profilban</span>).</p>
+
+<p>A regisztrált felhasználók beállításait az
+<span class="pwgScreen">Adminisztráció, Felhasználók, Kezelés</span> oldalon módosíthatjuk, ahol a felhasználói listából lehet kiválasztani a módosítani kívánt felhasználót.</p>
+
+<ul>
+
+  <li><strong>Nyelv</strong>: Csak a Piwigo felületre vonatkozik. Album neve, kép neve és leírása mező nem honosított.</li>
+
+  <li><strong>Képek száma soronként</strong></li>
+
+  <li><strong>Sorok száma oldalanként</strong></li>
+
+  <li><strong>Téma felület</strong></li>
+
+  <li><strong>Elmúlt napban</strong>: Napok száma. Az az időszak, mely alatt a feltöltött kép újként jelenik meg. A napok számának nagyobbnak kell lenni 1-nél.</li>
+
+  <li><strong>Összes album kibontása</strong>: Az albumok menüben az összes album alapértelmezésben kibontásra kerül. <em>Figyelem</em>: az opció nagy erőforrás fogyasztást valamint hatalmas menüt eredményez amennyiben sok album található a galériában.</li>
+
+  <li><strong>Hozzászólások számának mutatása</strong>: A megjelenítendő hozzászólások darabszáma a kép és bélyegképek oldalon. Erőforrásokat fogyaszt.</li>
+
+  <li><strong>Találatok számának megjelenítése</strong>: Képek megtekintésének száma a bélyegképek alatt a bélyegképek oldalon.
+  Csak abban az esetben, ha a speciális paraméter beállítás: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Megjegyzés: alapértelmezés szerint false.</li>
+
+  <li><strong>Maximális képszélesség</strong>: A kép maximális szélessége megjelenítéskor. Amennyiben a kép szélessége nagyobb a megadottnál, megjelenítéskor átméretezésre kerül. Ezen lehetőség választása helyett javasoljuk inkább a képek átméretezését. Ez a megoldás javasolt.</li>
+
+  <li><strong>Maximális képmagasság</strong>: Értelmezése megegyezik a maximális képszélességnél leírtakkal.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/hu_HU/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/group_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Csoportok kezelése</h2>
+
+<p>Ezen a helyen lehetőség van a csoportok kezelésére.</p>
+
+<h3>Csoport hozzáadása</h3>
+
+<p>Adminisztrátor hozhat létre csoportokat.</p>
+
+<h3>Csoport lista</h3>
+
+<p>A lista elemei a következő lehetőségeket biztosítják:</p>
+
+
+<ul>
+  <li>tovább a tagok listájához</li>
+  <li>tovább az engedélyek kezelése oldalra</li>
+  <li>csoport törlése (megerősítés szükséges)</li>
+  <li>"alapértelmezett csoport" tulajdonság megváltoztatása (megerősítés szükséges)</li>
+</ul>
+
+<h3>Alapértelmezett csoport</h3>
+<p>Az alapértelmezett csoport egy olyan csoport, melyhez tagságot kap minden újonnan regisztrált, 
+illetve adminisztrátor által létrehozott felhasználó.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>A képek galériába történő feltöltéséhez több módszer áll rendelkezésedre:</p>
+
+<ul>
+  <li>A <strong>Közvetlen Feltöltés</strong> a legegyszerűbb és legkényelmesebb módja a képek feltöltésének. A módszer használata erősen függ a böngésződ képességeitől, valamint a tárhelyszolgáltató által biztosított lehetőségektől. Amennyiben nagyobb mennyiségű képet szeretnél egyszerre feltölteni, vagy ezzel a módszerrel probléma adódna, próbáld ki a következő két lehetőség valamelyikét!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Tovább a Közvetlen Feltöltés oldalra</a></p>
+
+<ul>
+  <li>A <strong>pLoader</strong> egy, a számítógépedre telepített asztali alkalmazás. Tedd be a feltöltendő képeket a "Húzd és dobd" módszerrel a pLoader bal oldali ablakába, majd kattints a <em>"Feltöltés Galériába"</em> gombra, hagyd, hogy a pLoader végezze a dolgát. Más asztali alkalmazások is szóba jöhetnek, például a <strong>WinToPiwigo</strong> vagy a <strong>Digikam</strong> export bővítmény.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Tovább a pLoader beszerzéséhez</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li>Nagy mennyiségű képek minimális munkával történő hozzáadásának legegyszerűbb módja a <strong>Feltöltés FTP-n keresztül</strong>. Feltöltés előtt el kell végezni a képek előkészítését. Az FTP módszer használata esetén a képek helyének előkészítését kézzel kell elvégezni a tárhelyen lévő könyvtárstruktúra kialakításával.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Tovább az FTP feltöltést bemutató oldalra</a></p>
+</div>
Index: /tags/2.6.0RC1/language/hu_HU/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/help_groups.html	(revision 25596)
@@ -0,0 +1,10 @@
+<p>A felhasználók jogosultságainak kezelése egyszerűbbé válik csoportok létrehozásával.</p>
+
+<p>Csoportok létrehozhatók az <span class="pwgScreen">Adminisztráció &raquo; Felhasználók
+&raquo; Csoportok</span> útvonalon, majd az 
+<span class="pwgScreen">Adminisztráció &raquo; Felhasználók &raquo;
+Kezelés</span> útvonalon kapcsolhatók a felhasználók az egyes csoportokhoz.</p>
+
+<p>Egy felhasználó több csoportba is tartozhat. Engedélyezése felülbírálja a tiltásokat : 
+ha a "jack" nevű felhasználó a "család" és "barátok" csoportba is tartozik és a 
+"Karácsony 2003" albumot a "család" csoport láthatja, akkor "jack" látni fogja a "Karácsony 2003" albumot.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/help_misc.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Amint elkészült a galéria, lehetőség van az alapértelmezett megjelenítés tulajdonságainak beállítására az 
+<span class="pwgScreen">Adminisztráció &raquo; Beállítások &raquo; Lehetőségek</span> oldalon.</p>
+<p>Minden új regisztrált felhasználó regisztráláskor örökli az alapértelmezett konfigurációs beállításokat.</p>
+
+<p>További kérdések esetén a Piwigo közösség örömmel válaszol azokra a 
+<a href="http://hu.piwigo.org/forum">fórumon</a>.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,52 @@
+<fieldset>
+<legend>Jogosultságok a képekhez</legend>
+
+<p>Minden képhez tartozik <strong>hozzáférési szint</strong> (zárolás). Minden felhasználóhoz tartozik hozzáférési szint (egy kulcs). A jelenlegi 5 hozzáférési szint:</p>
+<ol>
+  <li>Egyik sem</li>
+  <li><em>Kapcsolattartók</em></li>
+  <li><em>Barátok (magasabb mint a Kapcsolattartók)</em></li>
+  <li><em>Család (magasabb mint a Barátok)</em></li>
+  <li><em>Adminisztrátor (magasabb minden más szintnél)</em></li>
+</ol>
+
+<p>Magasabb hozzáférési szint tulajdonosa jogosult az alacsonyabb hozzáférési szint megtekintésére. Minél magasabb a felhasználó hozzáférési szintje, annál több képet tekinthet meg.</p>
+
+<p>Például ha a "peter_wedding-0024.jpg" kép hozzáférési szintje <em>"Család"</em>, akkor:</p>
+<ul>
+  <li>Péter (aki <em>"Adminisztrátor"</em>) látni fogja a képet, mert az <em>"Adminisztrátorok"</em> láthatják az összes képet</li>
+  <li>Betti (aki a <em>"Család"</em> tagja) látni fogja a képet</li>
+  <li>Marika (aki a <em>"Barátok"</em> tagja) nem fogja látni a képet</li>
+</ul>
+
+<p>Egy felhasználó akinek nincs jogosultsága az album tartalmának megtekintéséhez, nem látja sem az albumot, sem az album címét. Ugyanez az elv érvényes a címkére is.</p>
+
+<p>Az egyes felhasználókhoz tartozó hozzáférési szint az <span class="pwgScreen">Adminisztráció &raquo; Felhasználók &raquo; Kezelés</span> lapon állítható be.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Jogosultságok az albumokhoz</legend>
+
+<p>Szabályozható az albumokhoz történő hozzáférés. Az albumokhoz történő hozzáférés jogosultjainak kezeléséhez az album típusát "Privát" szintre kell váltani.</p>
+
+<p>Egy album privát albummá történő módosítása elvégezhető az album szerkesztésével
+(<span class="pwgScreen">Adminisztráció &raquo; Albumok &raquo; Kezelés
+&raquo; javítás</span>), vagy a teljes album fa jogosultságainak beállításával
+(<span class="pwgScreen">Adminisztráció &raquo; Albumok &raquo;
+Tulajdonságok &raquo; Nyilvános / Privát</span>).</p>
+
+<p>Amint egy album bekerül a privát albumok közé, három módja van a csoport és felhasználói engedélyek módosításának:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Adminisztráció &raquo; Felhasználók &raquo; Kezelés &raquo;
+  Engedélyek</span> (soronként egy felhasználó)</li>
+
+  <li><span class="pwgScreen">Adminisztráció &raquo; Felhasználók &raquo; Csoportok &raquo;
+  Engedélyek</span> (soronként egy csoport)</li>
+
+  <li><span class="pwgScreen">Adminisztráció &raquo; Albumok &raquo; Kezelés &raquo; 
+  Engedélyek</span> (soronként egy album)</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/hu_HU/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,10 @@
+<p>A képek a fájlkönyvárakkal megegyező albumokban jelennek meg.</p>
+
+<p>A képek több albumban is megjeleníthetők a fájl tárhelyen történő megkettőzése nélkül. 
+A képek albumokhoz történő társítására a képek szerkesztés oldalán van lehetőség 
+(az adminisztrátor a képeket a "Galéria megtekintése" gomb segítségével érheti el).</p>
+
+<p>A megoldás a virtuális albumok rendszerén alapul, amennyiben nincs megfelelő album: 
+Virtuális albumok létrehozására az 
+<span class="pwgScreen">Adminisztráció &raquo; Albumok &raquo;
+Kezelés</span> útvonalon van lehetőség.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/history.html	(revision 25596)
@@ -0,0 +1,44 @@
+<h2>Események</h2>
+
+<p>Ezen az oldalon lehetősége van megtekinteni a a galéria eseményeit a választott beállítások szerint - Adminisztráció - Speciális összetevők - Statisztika.</p>
+	
+<h3>Statisztika</h3>
+<ul>
+  <p>Ha azt választotta, hogy a látogatott oldalak adatai (<span
+class="pwgScreen">index.php</span> és <span
+class="pwgScreen">picture.php</span>) maradjanak a <code>history</code> táblában.
+Ez a fül lehetővé teszi, hogy nyomon kövesse az oldal látogatásokat.</p>
+	
+	<li><strong>Teljes statisztika</strong> : Statisztika évekre. </li>
+	
+	<li><strong>Éves statisztika</strong> : Statisztika a választott év hónapjaira.</li>
+	
+	<li><strong>Havi statisztika</strong> : Statisztika a kiválasztott hónap napjaira.</li>
+	
+	<li><strong>Napi statisztika</strong> : Statisztika a kiválasztott nap óráira.</li>
+	
+</ul>
+
+<h3>Keresés</h3>
+<ul>
+  <p>Ha azt választotta, hogy a látogatott oldalak adatai (<span
+class="pwgScreen">index.php</span> és <span
+class="pwgScreen">picture.php</span>) maradjanak a <code>history</code> táblában.
+Ez a fül lehetővé teszi, hogy különböző szűrési feltételek használatával tekintse meg
+a honlap oldalainak látogatottságát.</p>
+ 
+	<li><strong>Szűrés dátum szerint</strong> : Dátum szerinti szűrést végezhet
+	a tevékenységek megtekintésére.</li>
+	
+	<li><strong>Szűrés adott típusú elemre</strong> : Meghatározott elemre történő
+	szűrést végezhet a tevékenységek megtekintésére.</li>
+	
+	<li><strong>Szűrés felhasználókra</strong> : Konkrét felhasználóra történő
+	szűrést végezhet a tevékenységek megtekintésére.</li>
+	
+	<li><strong>Szűrés fájlnévre</strong> : Fájlnévre történő szűrést végezhet
+	a tevékenységek megtekintésére.</li>
+	
+	<li><strong>Szűrés elem-ID-re</strong> : Kép ID-re történő szűrést végezhet
+	a tevékenységek megtekintésére.</li>
+</ul>
Index: /tags/2.6.0RC1/language/hu_HU/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/hu_HU/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/maintenance.html	(revision 25596)
@@ -0,0 +1,12 @@
+<ul>
+
+  <li>
+    <strong>Nem kapcsolódó elemek:</strong>
+    Képek megjelenítése, melyek nem kapcsolódnak virtuális albumhoz.
+  </li>
+  <li>
+    <strong>Azonos nevű fájlok több fizikai albumban:</strong>
+    Képek vagy fájlok megjelenítése, melyekről bebizonyosodott, hogy azonos a fájlnevük az egyes albumokban.
+  </li>
+
+</ul>
Index: /tags/2.6.0RC1/language/hu_HU/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Értesítés e-mailben</h2>
+
+<p>Ez az oldal lehetőséget biztosít a felhasználóknak küldendő e-mail értesítések beállítására és kezelésére, a webhelyen történt változásokról.</p>
+
+<p>Az oldal 3 lapot tartalmaz:</p>
+
+<h3>Paraméterek</h3>
+<p>Csak a webmesterek számára elérhető, lehetőséget biztosít az e-mail értesítések paramétereinek beállítására.</p>
+
+<h3>Feliratkozás</h3>
+<p>Csak a webmesterek számára elérhető, ezen a lapon kezelhetjük a regisztrált felhasználók feliratkozását/leiratkozását az e-mail értesítésekre.</p>
+
+<h3>Küld</h3>
+<p>Csak a webmesterek és adminisztrátorok számára elérhető, lehetővé teszi az értesítések elküldését az oldalon történt változásokról.</p>
+
Index: /tags/2.6.0RC1/language/hu_HU/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Közvetlen linkek</h2>
+
+<p>A közvetlen linkekkel keresőbarát, átlátható URL-ek állíthatók elő. Amikor egy albumhoz közvetlen linket rendelünk, az URL-ben  nincs szükség az ID, vagy egyéb nehezen megjegyezhető karaktersorozat megjelenítésére.</p>
+
+<p>Ha egy közvetlen linket törlünk, lehetőségünk van menteni a közvetlen link előzményeket úgy, hogy a külső linkek továbbra is működnek a PWG lapokon. A közvetlen link előzmények táblában láthatja mikor töröltek egy közvetlen linket, illetve mikor használták utoljára, valamint azt is, hányszor használták a törlés óta.</p>
+
+<p>Ne feledje, hogy az albumokhoz rendelt közvetlen linkeknek egyedinek kell lenniük. Egy közvetlen linket nem lehet többször definiálni a közvetlen link előzményekben.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,112 @@
+<fieldset>
+  <legend>Kezdő lépések</legend>
+
+<ol>
+  <li>Hozz létre egy könyvtárat a számítógépen.</li>
+    
+  <li>Másolj be néhány képet a könyvtárba, a Weben engedélyezett méret figyelembe vételével. <em>Figyelem</em>: A fájl és mappa neve is csak betűket és számokat tartalmazhat az angol abc szerint, valamint a következő speciális karaktereket: "-", "_" vagy ".". Tilos szóközt (SPACE) valamint egyéb különleges karaktereket használni.</li>
+  
+  <li>Másold fel FTP program segítségével a "galeries" mappába az így létrehozott mappádat.</li>
+  
+  <li>Lépj be a galériába és menj az <span class="pwgScreen">Adminisztráció &raquo; Eszköszök &raquo; Bélyegképek</span> oldalra, hogy létrehozd a hiányzó bélyegképeket.</li>
+  
+  <li>Menj vissza az <span class="pwgScreen">Adminisztráció</span> menübe és kattints a "Szinkronizálás" gombra.</li>
+</ol>
+
+Gratulálunk, ezzel létrehoztad az első album képtárat.
+
+</fieldset>
+
+<fieldset>
+  <legend>Könyvtárak és fájlok szervezése</legend>
+
+<ul>
+
+  <li>
+
+    <p>A mappák és albumok listája a Piwigo "galeries" könyvtárban. 
+    Itt következik a könyvtárfa egy kis galériáról, (de számos funkcióval): </p>
+  
+<pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+  
+<li>Minden új alkönyvtár a "galeries" könyvtárban létrehoz egy új albumot, kivételek a "thumbnail", "pwg_high" és "pwg_representative" (a magyarázatot lásd alább). A könyvtárak mélysége nincs korlátozva.
+    A fenti példában a Kategorie-1.1.1.1 könyvtár 4 mélység szintű.</li>
+
+  <li>Alapvetően, egy elemet egy fájl határoz meg. Egy fájl Piwigo elem lehet, ha kiterjesztése a <code>file_ext</code> 
+  konfigurációs paraméterek lehetőségei között van (lásd <span class="filename">include/config_default.inc.php</span> fájl). 
+  Egy fájl kép lehet, ha kiterjesztése a <code>picture_ext</code> konfigurációs paraméterek lehetőségei között van.</li>
+
+  <li>Minden képhez tartoznia kell egy bélyegképnek (lásd lejjebb a
+  bélyegképek szakaszban).</li>
+
+  <li>Képnek egy megfelelő felbontású, jó minőségű képet ajánlott választani (lásd a fenti példában a
+  wedding.jpg fájlt). Az eredeti kép fájlneve ne tartalmazzon előtagot.</li>
+
+  <li>Amennyiben a feltöltött elem nem képfájl, (video, hang, szöveges fájl, vagy egyéb...) 
+  alapértelmezés szerint a fájl kiterjesztéséhez illeszkedő ikon jelenik meg. 
+  Az ilyen fájlokhoz hozzárendelhető egy bélyegkép fájl (lásd a fenti példában a video.avi fájlt).</li>
+
+  <li><em>Figyelem</em>: a könyvtárak és fájlok nevei csak betűket és számokat, 
+  valamint a következő karaktereket tartalmazhatják: "-", "_" vagy ".". 
+  Nem lehet üres hely és soremelés karakter.</li>
+
+  <li>A bélyegképek és album képviselők helyükre tételének útvonala: <span class="pwgScreen">Adminisztráció &raquo; Eszközök &raquo;
+  Szinkronizálás</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>Bélyegképek</legend>
+<ul>
+
+  <li>Minden képnek rendelkeznie kell egy hozzá tartozó bélyegképpel.</li>
+
+  <li>A bélyegképek az album könyvtár "thumbnail" alkönyvtárában kerülnek eltárolásra.
+   A bélyegkép neve megegyezik a kép fájlnevével, egy a konfigurációs paraméterekben <code>prefix_thumbnail</code> megadott előtaggal kiegészítve (lásd <span class="filename">include/config.inc.php</span>).</li>
+
+  <li>A kép és a hozzárendelt bélyegkép kiterjesztése eltérő lehet (például egy ".GIF" kiterjesztésű képhez tartozhat ".jpg" kiterjesztésű bélyegkép).</li>
+
+  <li><em>Javaslat</em>: külső modul használata a bélyegképek létrehozásához.</li>
+
+  <li>Használhatod, bár nem ajánlott (kép minőség, web szerver erőforrásainak terhelése): <span
+  class="pwgScreen">Adminisztráció &raquo; Eszközök &raquo; Bélyegképek</span> oldalon a bélyegképek létrehozását.</li>
+
+  <li>Adj írási jogot az összes album könyvtárnak.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/hu_HU/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/search.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Keresés</h2>
+
+<p>Ez az oldal lehetővé teszi képek keresését a teljes galériában.</p>
+
+<dl>
+
+  <dt>Keresés szavakra</dt>
+  <dd>Megkeresi az összes a keresett szóhoz kapcsolódó képet a galériában. 
+  Részleges egyezések megjelenítéséhez használhatja a * karaktert.</dd>
+
+  <dt>Szerző keresése</dt>
+  <dd>Részleges egyezések megjelenítéséhez használhatja a * karaktert.</dd>
+
+  <dt>Keresés dátum alapján</dt>
+  <dd>Válassza ki a kezdő és/vagy a befejező dátumot a kereséshez. 
+  Az utolsó mezőbe az évszámot kell beírnia a következő formában : 0000 (például 2004)</dd>
+
+  <dt>Keresés albumokban</dt>
+  <dd>Jelölje ki az albumot vagy albumokat, melyben keresni kíván. 
+  Kereshet az összes belső albumban a szülő album kijelölésével, 
+  ha engedélyezi a keresést a belső albumokban is.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/hu_HU/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/synchronize.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Szinkronizálás</h2>
+
+<p>Kétféle szinkronizálás hajtható végre : szinkorizálhatók a mappák/fájlok, 
+illetve a fájlok metaadatai. A mappák/fájlok szinkronizálásakor a könyvtár 
+fa adatai frissülnek az adatbázisban. Metaadatok frissítésekor az elemekhez kapcsolódó 
+információk frissülnek, fájlméret, méret adatok pixelben, EXIF vagy IPTC információk.</p>
+
+<p>Az első szinkronizálásnál a mappák/fájlok szinkronizálását egyszerre kell elvégezni.</p>
+
+<p>A szinkronizálási folyamat hossza elhúzódhat, (a szükséges idő erősen függ a szerver 
+terhelésétől valamint az elemek számától) ezért lehetőség van a szinkronizálás 
+albumonkénti végrehajtására.</p>
Index: /tags/2.6.0RC1/language/hu_HU/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/help/user_list.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Felhasználók listája</h2>
+
+<p>Ezen az oldalon kezelhetők a regisztrált felhasználókhoz tartozó tulajdonságok, kivétel az egyéb oldalakon állítható jogosultságok.</p>
+
+<h3>Felhasználó hozzáadása</h3>
+
+<p>Adminisztrátor a regisztrációs folyamat végrehajtása nélkül is hozzáadhat felhasználókat.</p>
+
+<h3>Felhasználói lista</h3>
+
+<p>A lista felhasználónevekre szűrhető (használható a * helyettesítő karakter), 
+ezen belül státuszra és/vagy csoportra is szűkíthető. 
+Rendezhető dátumra, illetve növekvő vagy csökkenő sorrendre.</p>
+
+<p>Ezen az oldalon lehetőség van több felhasználó együttes kezelésére, a következő műveletek végrehajtásával:</p>
+
+<ul>
+
+  <li>felhasználók törlése (megerősítés szükséges)</li>
+  <li>státusz módosítása</li>
+  <li>csoportokhoz történő hozzárendelés, vagy eltávolítás</li>
+  <li>megjelenés tulajdonságainak módosítása</li>
+  <li>további tulajdonságok módosítása</li>
+
+</ul>
+
+<p>Célként a kijelölt felhasználó (alapértelmezés) vagy az összes felhasználó megjelenik a szűrt listában.</p>
Index: /tags/2.6.0RC1/language/hu_HU/index.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/hu_HU/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Telepítés';
+$lang['Basic configuration'] = 'Alap konfiguráció';
+$lang['Default gallery language'] = 'Galéria alapértelmezett nyelve';
+$lang['Database configuration'] = 'Adatbázis konfiguráció';
+$lang['Admin configuration'] = 'Rendszergazda fiókjának beállítása';
+$lang['Start Install'] = 'Telepítés indítása';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'A látogatók látni fogják. Szükséges a weboldal adminisztrációjához';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'A kapcsolat a kiszolgálóval rendben, de nem sikerült csatlakozni az adatbázishoz';
+$lang['Can\'t connect to server'] = 'Nem sikerült kapcsolódni a szerverhez';
+$lang['Host'] = 'MySQL host';
+$lang['User'] = 'Felhasználó név';
+$lang['user login given by your host provider'] = 'a tárhelyszolgáltató által adott felhasználónév';
+$lang['user password given by your host provider'] = 'a tárhelyen használt jelszó';
+$lang['Database name'] = 'Adatbázis neve';
+$lang['also given by your host provider'] = 'a szolgáltatótól kapott adatbázis név';
+$lang['Database table prefix'] = 'Adatbázis tábla előtag';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'az adatbázis táblák ezzel az előtaggal fognak kezdődni (lehetővé teszi a táblák jobb áttekinthetőségét)';
+$lang['enter a login for webmaster'] = 'írja be a webmester bejelentkezési adatokat';
+$lang['webmaster login can\'t contain characters \' or "'] = 'A webmester nevében nem használhatók a \' és " karakterek';
+$lang['please enter your password again'] = 'kérjük, adja meg újra a jelszót';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Kezelje bizalmasan az adatokat, ezek lehetővé teszik a hozzáférést az adminisztrációs felülethez';
+$lang['Password [confirm]'] = 'Jelszó [megerősítés]';
+$lang['verification'] = 'jelszó egyezőségének ellenőrzése';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Segítségre van szüksége ? Kérdéseit itt teheti fel: <a href="%s">Piwigo üzenőfal</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'A látogatók ezen az e-mail címen tudják felvenni a kapcsolatot az adminisztrátorral';
+$lang['PHP 5 is required'] = 'PHP 5 szükséges';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Úgy tűnik, a tárhelyszolgáltatójánál jelenleg futó PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo megpróbálhatja bekapcsolni a PHP 5-öt azáltal, hogy létrehoz vagy módosít egy .htaccess fájlt.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Figyelem: Ha meg tudja változtatni a PHP konfigurációt, indítsa újra a Piwigot.';
+$lang['Try to configure PHP 5'] = 'Próbálja meg beállítani a PHP 5-öt';
+$lang['Sorry!'] = 'Elnézést!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nem tudta beállítani a PHP 5-öt.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Lehet, hogy a tárhely szolgáltató támogatja a PHP 5-öt. A bekapcsoláshoz keresse meg őket.";
+$lang['Hope to see you back soon.'] = 'Remélem később viszontlátjuk.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulálunk, a Piwigo telepítése sikeresen befejeződött';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Egy lehetséges megoldás a szöveget az alul lévő dobozba másolni, és beilleszteni a "local/config/database.inc.php" fájlba. (Figyelem: database.inc.php csak azt tartalmazhatja amit a szövegterület, soremelés vagy üres karakterhely nélkül)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'A local/config/database.inc.php konfigurációs fájl létrehozása sikertelen.';
+$lang['Download the config file'] = 'Konfigurációs fájl letöltése';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Letöltheti a konfigurációs fájlt és töltse fel a telepítésének local/config könyvtárába.';
+$lang['Just another Piwigo gallery'] = 'Csak egy újabb Piwigo galéria';
+$lang['Welcome to my photo gallery'] = 'Üdvözöljük a képgalériában';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Kérdése van? Keresse fel fórumunkat: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Köszönt a frissen telepített Piwigo galéria!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost vagy egyéb, a fogadó szolgáltató által megadott';
+?>
Index: /tags/2.6.0RC1/language/hu_HU/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Magyar [HU]
Index: /tags/2.6.0RC1/language/hu_HU/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/hu_HU/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/hu_HU/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Frissítés';
+$lang['Upgrade from version %s to %s'] = 'Verziófrissítés %s verzióról %s verzióra';
+$lang['Statistics'] = 'Statisztikák';
+$lang['total upgrade time'] = 'teljes frissítési idő';
+$lang['total SQL time'] = 'teljes SQL idő';
+$lang['SQL queries'] = 'SQL lekérdezés';
+$lang['Upgrade informations'] = 'Frissítési információk';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Végezze el a karbantartás ellenőrzést [Adminisztráció>Eszközök>Karbantartás] ha bármilyen problémával találkozna.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'A frissítés csak rendszergazda jogosultsággal futtatható, kérjük jelentkezzen be.';
+$lang['You do not have access rights to run upgrade'] = 'Önnek nincs jogosultsága a frissítés elvégzéséhez';
+
+// Upgrade informations from upgrade_1.3.1.php
+$lang['All sub-albums of private albums become private'] = 'Az összes belső album privát albummá válik';
+$lang['User permissions and group permissions have been erased'] = 'A felhasználói és csoport jogosultságok törlésre kerültek';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Csak a bélyegképek prefixe és a webmester email címe került mentésre az előző konfigurációból.';
+// missing translations 2.1.0 RC1
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Ez az oldal felajánlja az adatbázis frissítését, frissítse a Piwigot a régi verzióról az új verzióra. A frissítési asszisztens szerint jelenleg a <strong>%s verzió</strong> fut (vagy azzal egyenértékű).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Elővigyázatosságból a bővítmények ki vannak kapcsolva. Újraaktiválás előtt a bővítmény frissítéseket ellenőrizni kell:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'A(z) <i>%s</i>, elé <b>?></b>, beszúrni:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Elővigyázatosságból az alábbi témák kikapcsolásra kerültek. Frissítés előtt a témákat ellenőrizni kell, majd aktiválásra kerülhetnek:';
+
+?>
Index: /tags/2.6.0RC1/language/id_ID/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/id_ID/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/id_ID/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Bahasa Indonesia [ID]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=707
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Bahasa Indonesia';
+$lang_info['country'] = 'Indonesia';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'id';
+$lang_info['zero_plural'] = true;
+
+$lang['%d comments'] = '%d komentar';
+$lang['%d hit'] = '%d pengunjung';
+$lang['%d hits'] = '%d pengunjung';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d komentar baru';
+$lang['%d new comments'] = '%d komentar baru';
+$lang['%d new photo'] = '%d foto baru';
+$lang['%d new photos'] = '%d foto baru';
+$lang['%d new user'] = '%d pengguna baru';
+$lang['%d new users'] = '%d pengguna baru';
+$lang['Date'] = 'Tanggal';
+$lang['day'][0] = 'Minggu';
+$lang['day'][1] = 'Senin';
+$lang['day'][2] = 'Selasa';
+$lang['day'][3] = 'Rabu';
+$lang['day'][4] = 'Kamis';
+$lang['day'][5] = 'Jumat';
+$lang['day'][6] = 'Sabtu';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'Desember';
+$lang['month'][1] = 'Januari';
+$lang['month'][2] = 'Februari';
+$lang['month'][3] = 'Maret';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Mei';
+$lang['month'][6] = 'Juni';
+$lang['month'][7] = 'Juli';
+$lang['month'][8] = 'Agustus';
+$lang['month'][9] = 'September';
+
+
+$lang['xlarge'] = 'XL - ekstra besar';
+$lang['xsmall'] = 'XS - ekstra kecil';
+$lang['xxlarge'] = 'XXL - besar sekali';
+$lang['Thumbnails'] = 'Tampilan besar';
+$lang['representative'] = 'tampilan besar album';
+$lang['return to normal view mode'] = 'kembali ke mode tampilan normal';
+$lang['return to the display of all photos'] = 'kembali ke tampilan semua foto';
+$lang['search'] = 'mencari';
+$lang['searched words : %s'] = 'kata-kata yang dicari: %s';
+$lang['set as album representative'] = 'setel album ini sebagai tampilan besar';
+$lang['show tag cloud'] = 'tunjukkan awan kata kunci';
+$lang['slideshow'] = 'gulir foto';
+$lang['small'] = 'S - Kecil';
+$lang['square'] = 'Kotak';
+$lang['stop the slideshow'] = 'hentikan pengguliran foto';
+$lang['the beginning'] = 'awal';
+$lang['the username must be given'] = 'nama pengguna diperlukan';
+$lang['this email address is already in use'] = 'alamat email ini telah digunakan';
+$lang['this login is already used'] = 'nama pengguna ini telah digunakan';
+$lang['thumb'] = 'Tampilan besar';
+$lang['today'] = 'hari ini';
+$lang['useful when password forgotten'] = 'berguna jika kata sandi terlupakan';
+$lang['wrong date'] = 'tanggal salah';
+$lang['large'] = 'L - Besar';
+$lang['last %d days'] = 'terakhir %d hari';
+$lang['letters'] = 'huruf';
+$lang['login mustn\'t end with a space character'] = 'nama pengguna tidak boleh berakhir dengan spasi';
+$lang['login mustn\'t start with a space character'] = 'nama pengguna tidak boleh diawali dengan spasi';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'alamat email haruslah seperti ini : namakamu@alamatemailkamu.com';
+$lang['mandatory'] = 'diperlukan';
+$lang['medium'] = 'M - Menengah';
+$lang['no rate'] = 'tidak diperingkat';
+$lang['obligatory'] = 'diperlukan';
+$lang['password updated'] = 'kata sandi diperbaharui';
+$lang['photo'] = 'foto';
+$lang['photos posted during the last %d days'] = 'foto dipublikasikan dalam %d hari terakhir';
+$lang['posted after %s (%s)'] = 'dipublikasikan setelah %s (%s)';
+$lang['posted before %s (%s)'] = 'dipublikasikan sebelum %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'dipublikasikan diantara  %s (%s) dan  %s (%s)';
+$lang['posted on %s'] = 'dipublikasikan pada %s';
+$lang['remove this tag from the list'] = 'buang kata kunci ini dari daftar';
+$lang['Email address is mandatory'] = 'Memerlukan alamat email';
+$lang['Username is mandatory'] = 'Memerlukan nama pengguna';
+$lang['display most recent photos'] = 'tampilkan foto terbaru';
+$lang['display most visited photos'] = 'tampilkan foto paling dikunjungi';
+$lang['display only recently posted photos'] = 'tampilkan hanya foto yang diposting terbaru';
+$lang['display photos linked to this tag'] = 'tampilkan foto yang terlink pada kata kunci ini';
+$lang['display recently updated albums'] = 'tampilkan album terbaru';
+$lang['display this album'] = 'tampilkan album ini';
+$lang['display your favorites photos'] = 'tampilkan foto favorit anda';
+$lang['edit'] = 'ubah';
+$lang['excluded'] = 'tidak termasuk';
+$lang['from %s to %s'] = 'dari %s ke %s';
+$lang['group by letters'] = 'kelompokkan berdasarkan huruf';
+$lang['guest'] = 'tamu';
+$lang['html tags are not allowed in login'] = 'kata kunci html tidak diperbolehkan';
+$lang['in %d sub-album'] = 'dalam %d sub-album';
+$lang['in %d sub-albums'] = 'dalam %d sub-album';
+$lang['in this album'] = 'dalam album ini';
+$lang['included'] = 'termasuk';
+$lang['comment date'] = 'Tanggal komentar';
+$lang['created after %s (%s)'] = 'dibuat setelah %s (%s)';
+$lang['created before %s (%s)'] = 'dibuat sebelum %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'dibuat diantara %s (%s) dan  %s (%s)';
+$lang['created on %s'] = 'dibuat pada  %s';
+$lang['customize the appareance of the gallery'] = 'kostumisasi tampilan galeri';
+$lang['delete all photos from your favorites'] = 'hapus semua foto dari favorit';
+$lang['delete this photo from your favorites'] = 'hapus foto ini dari favorit';
+$lang['descending'] = 'meningkat';
+$lang['display a calendar by creation date'] = 'tampilkan kalender melalui tanggal pembuatan';
+$lang['display a calendar by posted date'] = 'tampilkan kalender melalui tanggal publikasi';
+$lang['display a set of random photos'] = 'tampilkan susunan foto secara sembarangan';
+$lang['display all photos in all sub-albums'] = 'tampilkan semua foto di semua sub-album';
+$lang['display available tags'] = 'tampilkan kata kunci yang tersedia';
+$lang['display best rated photos'] = 'tampilkan foto dengan peringkat terbaik';
+$lang['display each day with photos, month per month'] = 'tampilkan tiap foto per hari, bulan per bulan ';
+$lang['display last user comments'] = 'tampilkan komentar pengguna terakhir';
+$lang['Username "%s" on gallery %s'] = 'Pengguna "%s" di galeri %s';
+$lang['Your Gallery Customization'] = 'Kostumisasi galeri anda';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Komentar anda BELUM didaftarkan karena tidak lolos dari peraturan validasi';
+$lang['Your comment has been registered'] = 'Komentar anda telah didaftarkan';
+$lang['Your favorites'] = 'Favorit anda';
+$lang['Your password has been reset'] = 'Kata sandi anda telah di setel ulang';
+$lang['Your username has been successfully changed to : %s'] = 'Nama pengguna anda telah berhasil diubah menjadi: %s';
+$lang['Your website URL is invalid'] = 'URL situs web anda tidak valid';
+$lang['add this photo to your favorites'] = 'tambahkan foto ini ke favorit anda';
+$lang['all'] = 'semua';
+$lang['ascending'] = 'susun';
+$lang['author(s) : %s'] = 'penulis: %s';
+$lang['available for administrators only'] = 'tersedia hanya untuk pengelola';
+$lang['chronology_monthly_calendar'] = 'Kalender bulanan';
+$lang['chronology_monthly_list'] = 'Daftar bulanan';
+$lang['chronology_weekly_list'] = 'Daftar mingguan';
+$lang['cloud'] = 'awan';
+$lang['Username modification'] = 'Modifikasi nama pengguna';
+$lang['Username or email'] = 'Nama pengguna atau email';
+$lang['Username: %s'] = 'Nama pengguna : %s';
+$lang['View'] = 'Lihat';
+$lang['View in'] = 'Lihat di';
+$lang['Visits'] = 'Kunjungi';
+$lang['Visits, high &rarr; low'] = 'Kunjungi, tinggi &rarr; rendah';
+$lang['Visits, low &rarr; high'] = 'Kunjungi, rendah &rarr; tinggi';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Website'] = 'Situs web';
+$lang['Week %d'] = 'Pekan %s';
+$lang['Welcome'] = 'Selamat datang';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Selamat datang ke galeri foto Piwigo anda!';
+$lang['Yes'] = 'Ya';
+$lang['You are not authorized to access the requested page'] = 'Anda tidak diijinkan mengakses halama yang diminta';
+$lang['You will receive a link to create a new password via email.'] = 'Anda akan menerima sebuah link untuk membuat sebuah kata sandi baru melalui email. ';
+$lang['Tag results for'] = 'Hasil dari kata kunci';
+$lang['Tags'] = 'Kata kunci';
+$lang['Thank you for registering at %s!'] = 'Terima kasih telah mendaftar di %s!';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Langganan RSS menyediakan pemberitahuan pada peristiwa terbaru dari situs web: dengan foto terbaru, album yang diperbaharui dan komentar baru. Digunakan bersama pembaca langganan RSS';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galeri ini terkunci karena ada perbaikan, harap balik nanti.';
+$lang['The number of photos per page must be a not null scalar'] = 'Jumlah foto per halaman haruslah tidak boleh kurang dari nol';
+$lang['The passwords do not match'] = 'Kata sandi anda tidak cocok';
+$lang['This author modified following comment:'] = 'Penulis ini memodifikasi komentar berikut:';
+$lang['This author removed the comment with id %d'] = 'Penulis ini menghapus komentar dengan id %d';
+$lang['This login is already used by another user'] = 'Nama ini sudah digunakan oleh pengguna lain';
+$lang['To reset your password, visit the following address:'] = 'Untuk menyetel ulang kata sandi, harap kunjungi alamat berikut ini:';
+$lang['Unknown feed identifier'] = 'Pengenalan langganan yang tidak diketahui';
+$lang['Unknown identifier'] = 'Pengenalan tidak diketahui';
+$lang['Update your rating'] = 'Perbaharui rating anda';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Pengguna "%s" tidak memiliki alamat email, pembaharuan kata sandi tidak memungkinkan';
+$lang['User comments'] = 'Komentar pengguna';
+$lang['User: %s'] = 'Pengguna: %s';
+$lang['Username'] = 'Nama pengguna';
+$lang['Search in sub-albums'] = 'Pencarian di sub-album';
+$lang['Search results'] = 'Hasil pencarian';
+$lang['Search rules'] = 'Kriteria pencarian';
+$lang['Search tags'] = 'Pencarian kata kunci';
+$lang['Send my connection settings by email'] = 'Kirim koneksi setelan melalui email';
+$lang['Sent by'] = 'Terkirim oleh';
+$lang['Show file metadata'] = 'Tunjukkan metadata dokumen';
+$lang['Show latest comments first'] = 'Tunjukkan komentar terbaru, paling awal';
+$lang['Show number of comments'] = 'Tunjukkan jumlah komentar';
+$lang['Show number of hits'] = 'Tunjukkan jumlah kunjungan';
+$lang['Show oldest comments first'] = 'Tunjukkan komentar lama, paling awal';
+$lang['Since'] = 'Sejak';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Seseorang sedang meminta kata sandi dari pengguna ini akan diubah :';
+$lang['Sort by'] = 'Penyusunan';
+$lang['Sort order'] = 'Disusun berdasarkan';
+$lang['Specials'] = 'Khusus';
+$lang['Submit'] = 'Kirim';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Berhasil terdaftar, sebentar lagi anda akan menerima konfirmasi dan pengaturan koneksi anda di email, Selamat Datang!';
+$lang['Tag'] = 'Kata kunci';
+$lang['Date created, new &rarr; old'] = 'Tanggal dibuat, baru &rarr; lama';
+$lang['Date created, old &rarr; new'] = 'Tanggal dibuat, lama &rarr; baru';
+$lang['Date posted, new &rarr; old'] = 'Tanggal dipublikasi, baru &rarr; lama';
+$lang['Date posted, old &rarr; new'] = 'Tanggal dipublikasi, lama &rarr; baru';
+$lang['File name, A &rarr; Z'] = 'Nama dokumen, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nama dokumen, Z &rarr; A';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Penomoran, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Penomoran, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Judul foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Judul foto, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Hasil peringkat, tinggi &rarr; rendah';
+$lang['Rating score, low &rarr; high'] = 'Hasil peringkat, rendah &rarr; tinggi';
+$lang['Search'] = 'Mencari';
+$lang['Search by date'] = 'Pencarian berdasar tanggal';
+$lang['Search for Author'] = 'Pencarian penulis';
+$lang['Search for all terms'] = 'Pencarian semuanya';
+$lang['Search for any term'] = 'Pencarian tertentu';
+$lang['Search for words'] = 'Pencarian kata-kata';
+$lang['Search in albums'] = 'Pencarian album';
+$lang['Reduce diaporama speed'] = 'Kurangi kecepatan gulir gambar';
+$lang['Requested tag does not exist'] = 'Permintaan kata kunci tidak tersedia';
+$lang['Reset'] = 'Setel ulang';
+$lang['Reset to default values'] = 'Setel ulang ke pengaturan standar';
+$lang['Retrieve password'] = 'Kembalikan kata sandi';
+$lang['Return to home page'] = 'Kembali ke halaman utama ';
+$lang['SQL queries in'] = 'Kueri SQL di';
+$lang['Register'] = 'Mendaftar';
+$lang['Registration'] = 'Pendaftaran';
+$lang['Registration of %s'] = 'Pendaftaran dari %s';
+$lang['Related tags'] = 'Kata kunci yang berkaitan';
+$lang['Repeat the slideshow'] = 'Ulangi gulir gambar';
+$lang['Requested album does not exist'] = 'Permintaan album belum ada';
+$lang['Rate this photo'] = 'Peringkatkan foto ini';
+$lang['Rating score'] = 'Skor peringkat';
+$lang['Recent albums'] = 'Album terakhir';
+$lang['Recent period'] = 'Periode terakhir';
+$lang['Recent period must be a positive integer value'] = 'Periode terakhir haruslah miliki nilai tambahan';
+$lang['Recent photos'] = 'Gambar terakhir';
+$lang['Redirection...'] = 'Mengarahkan...';
+$lang['Manage this user comment: %s'] = 'Atur komentar pengguna ini: %s';
+$lang['Permalink for album not found'] = 'Link permanen untuk album belum ditemukan';
+$lang['Photos only RSS feed'] = 'Berlangganan RSS khusus untuk foto';
+$lang['Photos posted within the last %d day.'] = 'Foto dipublikasikan hanya dalam akhir %d hari';
+$lang['Photos posted within the last %d days.'] = 'Foto dipublikasikan hanya dalam akhir %d hari';
+$lang['Quick search'] = 'Pencarian cepat';
+$lang['RSS feed'] = 'Langganan RSS';
+$lang['Random photos'] = 'Gambar sembarangan';
+$lang['Rank'] = 'Peringkat';
+$lang['Preferences'] = 'Preferensi';
+$lang['Previous'] = 'Sebelumnya';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Penyambungan cepat';
+$lang['Please, enter a login'] = 'Mohon, pergi ke halaman masuk';
+$lang['Post date'] = 'Tanggal publikasi';
+$lang['Posted on'] = 'Dipulikasikan pada';
+$lang['Powered by'] = 'Didukung oleh';
+$lang['Piwigo Help'] = 'Bantuan Piwigo';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo mengalami kesalahan yang belum dipulihkan';
+$lang['Play of slideshow'] = 'Mainkan gulir gambar';
+$lang['Please enter your username or email address.'] = 'Mohon masukkan nama pengguna atau alamat email';
+$lang['IP: %s'] = 'IP: %s';
+$lang['New on %s'] = 'Baru di %s';
+$lang['Pause of slideshow'] = 'Rehat menggulir gambar';
+$lang['Photo sizes'] = 'Ukuran foto';
+$lang['Original dimensions'] = 'Dimensi asli';
+$lang['Page generated in'] = 'Halaman dibuat di';
+$lang['Page not found'] = 'Halaman tidak ditemukan';
+$lang['Password'] = 'Kata sandi';
+$lang['Password Reset'] = 'Setel ulang kata sandi';
+$lang['Password forgotten'] = 'Lupa kata sandi';
+$lang['Password reset is not allowed for this user'] = 'Penyetelan ulang kata sandi tidak diperbolehkan kepada pengguna ini';
+$lang['Password: %s'] = 'Kata sandi %s';
+$lang['New password'] = 'Kata sandi berikutnya';
+$lang['Next'] = 'Berikutnya';
+$lang['No'] = 'Tidak';
+$lang['Not repeat the slideshow'] = 'Jangan mengulangi gulir gambar ';
+$lang['Notification'] = 'Pemberitahuan';
+$lang['Number of items'] = 'Jumlah dari benda';
+$lang['Number of photos per page'] = 'Jumlah dari foto per halaman';
+$lang['Original'] = 'Asal';
+$lang['Language'] = 'Bahasa';
+$lang['Last'] = 'Terakhir';
+$lang['Last Page'] = 'Halaman terakhir';
+$lang['Links'] = 'Link';
+$lang['Login'] = 'Masuk';
+$lang['Logout'] = 'Keluar';
+$lang['Manual sort order'] = 'Pengaturan secara manual';
+$lang['Menu'] = 'Menu';
+$lang['Mobile'] = 'Ponsel';
+$lang['Most visited'] = 'Paling banyak dikunjungi';
+$lang['N/A'] = 'Tidak tersedia';
+$lang['Home'] = 'Beranda';
+$lang['I want to add photos'] = 'Saya ingin menambahkan sebuah foto';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Identification'] = 'Identifikasi';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Jika ini adalah sebuah kesalahan, harap abaikan email ini dan tidak ada perubahan yang terjadi';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Jika anda menerima email ini akibat sebuah kesalahan, harap hubungi webmaster di %s';
+$lang['Invalid key'] = 'Kata kunci salah';
+$lang['Invalid password!'] = 'Kata sandi salah';
+$lang['Invalid username or email'] = 'Kata sandi atau email yang salah';
+$lang['Keyword'] = 'Huruf';
+$lang['Kind of date'] = 'Jenis tanggal';
+$lang['Filter'] = 'Saring';
+$lang['Filter and display'] = 'Saring dan tampilkan';
+$lang['First'] = 'Pertama';
+$lang['First Page'] = 'Halaman pertama';
+$lang['Forbidden'] = 'Terlarang';
+$lang['Forgot your password?'] = 'Lupa kata sandi anda?';
+$lang['Go back to the album'] = 'Kembali ke album';
+$lang['Go through the gallery as a visitor'] = 'Navigasi galeri ini sebagai pengunjung';
+$lang['Hello'] = 'Halo';
+$lang['Hello %s,'] = 'Halo %s';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Halo %s, galeri foto Piwigo anda masih kosong!';
+$lang['Help'] = 'Bantuan';
+$lang['Here are your connection settings'] = 'Ini adalah pengaturan koneksi anda';
+$lang['Default'] = 'Kembali ke standar';
+$lang['Email address is missing. Please specify an email address.'] = 'Alamat email ini hilang, mohon berikan email yang aktif';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Kolom kosong. Belum ada kriteria yang dimasukan';
+$lang['End-Date'] = 'Kadaluarsa';
+$lang['Enter your new password below.'] = 'Masukkan kata sandi baru anda di bawah ini';
+$lang['Enter your personnal informations'] = 'Masukkan data pribadi anda';
+$lang['Error sending email'] = 'Kesalahan ketika mengirimkan email';
+$lang['Expand all albums'] = 'Lebarkan semua album';
+$lang['Favorites'] = 'Favorit';
+$lang['File'] = 'Dokumen';
+$lang['File name'] = 'Nama dokumen';
+$lang['Filesize'] = 'Ukuran dokumen';
+$lang['Current password is wrong'] = 'Kata sandi sat ini salah';
+$lang['Customize'] = 'Kostumisasi';
+$lang['Delete'] = 'Hapus';
+$lang['Desktop'] = 'Deskop';
+$lang['Dimensions'] = 'Dimensi';
+$lang['Display'] = 'Tampilkan';
+$lang['Download'] = 'unggah';
+$lang['Download this file'] = 'Unggah dokumen ini';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['Each listed rule must be satisfied.'] = 'Tiap kriteria yang terdaftar harus disempurnakan';
+$lang['Edit'] = 'Ubah';
+$lang['Edit a comment'] = 'Ubah sebuah komentar';
+$lang['Email'] = 'Email';
+$lang['Email address'] = 'Alamat email';
+$lang['Calendar'] = 'Kalender';
+$lang['Change my password'] = 'Ubah kata sandi saya';
+$lang['Check your email for the confirmation link'] = 'Periksa email anda untuk link konfirmasi';
+$lang['Click here if your browser does not automatically forward you'] = 'Klik disini jika browser anda tidak menuju langsung ke situs anda';
+$lang['Click on the photo to see it in high definition'] = 'Klik pada foto untuk melihat gambar versi kualitas tinggi';
+$lang['Close this window'] = 'Tutup jendela ini';
+$lang['Comment'] = 'Komentar';
+$lang['Comment by %s'] = 'Komentar oleh %s';
+$lang['Comment: %s'] = 'Komentar: %s';
+$lang['Comments'] = 'Komentar';
+$lang['Complete RSS feed (photos, comments)'] = 'Berlangganan RSS Feed (foto dan komentar)';
+$lang['Confirm Password'] = 'Konfirmasi kata sandi';
+$lang['Connected user: %s'] = 'Pengguna yang terhubung : %s';
+$lang['Connection settings'] = 'Pengaturan koneksi';
+$lang['Contact'] = 'Kontak';
+$lang['Contact webmaster'] = 'Hubungi Webmaster';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Kuki anda diblokir atau ini tidak didukung oleh browser anda. Anda diharuskan mengaktifkan kuki untuk masuk.';
+$lang['Create a new account'] = 'Buat akun baru';
+$lang['Created on'] = 'Terbuat';
+$lang['Creation date'] = 'Tanggal pembuatan';
+$lang['Admin: %s'] = 'Admin %s';
+$lang['Administration'] = 'Administrasi';
+$lang['Album'] = 'Album';
+$lang['Album results for'] = 'Hasil album untuk';
+$lang['Album: %s'] = 'Album %s';
+$lang['Albums'] = 'Album';
+$lang['All'] = 'Semua';
+$lang['All tags'] = 'Semua kata kunci';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Seorang administrator harus mengijinkan komentar anda sebelum terlihat oleh publik';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistem anti multi-komentar : harap tunggu sebentar sebelum anda mencoba menulis komentar yang baru ';
+$lang['Any tag'] = 'Kata kunci lain';
+$lang['Are you sure?'] = 'Apakah anda yakin?';
+$lang['At least one listed rule must be satisfied.'] = 'Sekurangnya satu kategori didaftarkan';
+$lang['Author'] = 'Penulis';
+$lang['Author: %s'] = 'Penulis %s';
+$lang['Auto login'] = 'Masuk otomatis';
+$lang['Bad request'] = 'Kesalahan permintaan ';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Kesalahan status untuk pengguna "tamu", status standar akan digunakan. Harap memberitahukan webmaster ';
+$lang['Best rated'] = 'Rating terbaik';
+$lang['Browser: %s'] = 'Cari: %s';
+$lang['%d album updated'] = '%d album diperbaharui';
+$lang['%d albums updated'] = '%d album diperbaharui';
+$lang['%d comment'] = '%d komentar';
+$lang['%d comment to validate'] = '%d komentar untuk divalidasi';
+$lang['%d comments to validate'] = '%d komentar untuk divalidasi';
+$lang['%d photo'] = '%d foto';
+$lang['%d photo is also linked to current tags'] = '%d foto juga dikaitkan dengan kata kunci yang ada';
+$lang['%d photos'] = '%d foto';
+$lang['%d photos are also linked to current tags'] = '%d foto juga dikaitkan dengan kata kunci yang ada';
+$lang['%d rate'] = '%d peringkat';
+$lang['%d rates'] = '%d peringkat';
+$lang['(!) This comment requires validation'] = '(!) Komentar ini memerlukan validasi';
+$lang['... or browse your empty gallery'] = '... atau cari di galeri kosong anda';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... atau nonaktifkan pesan ini, saya akan mencarinya sendiri';
+$lang['2small'] = 'XXS - kecil';
+$lang['A comment on your site'] = 'Sebuah komentar di situs anda';
+$lang['About'] = 'Tentang';
+$lang['About Piwigo'] = 'Tentang Piwigo';
+$lang['Accelerate diaporama speed'] = 'Tingkatkan kecepatan guliran gambar ';
+$lang['Add a comment'] = 'Tambahkan sebuah komentar';
+?>
Index: /tags/2.6.0RC1/language/id_ID/index.php
===================================================================
--- /tags/2.6.0RC1/language/id_ID/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/id_ID/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/id_ID/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/id_ID/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/id_ID/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Bahasa Indonesia [ID]
Index: /tags/2.6.0RC1/language/index.php
===================================================================
--- /tags/2.6.0RC1/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/is_IS/about.html
===================================================================
--- /tags/2.6.0RC1/language/is_IS/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/is_IS/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>Þetta mynda gallerí er byggt á Piwigo.</p>
+
+<p>Piwigo er mynda hugbúnaður fyrir vefinn, byggt af virku
+samfélag notenda og þróunaraðila. Viðbætur gera Piwigo auðveldlega
+sérsníðanlegt.
+Rúsínan í pylsuendanum. Piwigo er óskeypis og opinn uppspretta.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Heimsækja heimasíðu Piwigo </a></p>
+
+<p>Íslensku þýðing er viðhaldið af Wallster:
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=10283">Wallster</a></li>
+    </ul>
+</p>
Index: /tags/2.6.0RC1/language/is_IS/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/is_IS/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/is_IS/common.lang.php	(revision 25596)
@@ -0,0 +1,343 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Íslenska [IS]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=518
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Íslenska';
+$lang_info['country'] = 'Ísland';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'is';
+$lang_info['zero_plural'] = true;
+
+$lang['%.2f (rated %d times)'] = '%.2f (gefið einkun %d sinnum)';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d comment to validate'] = '%d athugasemd til að staðfesta';
+$lang['%d comments to validate'] = '%d athugasemdir til að staðfesta';
+$lang['%d new comment'] = '%d ný athugasemt';
+$lang['%d new comments'] = '%d nýar athugasemtir';
+$lang['%d comment'] = '%d athugasemd';
+$lang['%d comments'] = '%d athugasemdir';
+$lang['%d hit'] = '%d ýtt á';
+$lang['%d hits'] = '%d ýtt á';
+$lang['%d new user'] = '%d nýr notandi';
+$lang['%d new users'] = '%d nýir notendur';
+$lang['About'] = 'Um';
+$lang['All tags'] = 'Öll merki';
+$lang['Any tag'] = 'Hvaða merki sem er';
+$lang['At least one listed rule must be satisfied.'] = 'Að minsta kosti einn flokkur verður að vera valinn.';
+$lang['Author'] = 'Höfundur';
+$lang['Average rate'] = 'Meðal einkun';
+$lang['Close this window'] = 'Loka þessum glugga';
+$lang['Confirm Password'] = 'Staðfesta Lykilorð';
+$lang['Connection settings'] = 'Stillingar fyrir tengingu';
+$lang['Login'] = 'Innskráning';
+$lang['Contact webmaster'] = 'Hafa samband við webmaster';
+$lang['Create a new account'] = 'Stofnan nýjan aðgang';
+$lang['Created on'] = 'Stofnað á';
+$lang['Creation date'] = 'Stofnunar dagur';
+$lang['Current password is wrong'] = 'Núverandi lykilorð er vitlaust';
+$lang['Dimensions'] = 'Stærð';
+$lang['Display'] = 'Sýna';
+$lang['Each listed rule must be satisfied.'] = 'Hver skráð viðmiðun verður að vera uppfyllt.';
+$lang['Email address'] = 'Tölvupóstur';
+$lang['Enter your personnal informations'] = 'Settu inn persónu upplýsingar';
+$lang['Error sending email'] = 'Villa við sendingu tölvupósts';
+$lang['File name'] = 'Nafn skjals';
+$lang['File'] = 'Skjal';
+$lang['Filesize'] = 'Stærð skjals';
+$lang['Filter and display'] = 'Sýja og sýna';
+$lang['Filter'] = 'Sýja';
+$lang['Forgot your password?'] = 'Gleymt lykilorð?';
+$lang['Go through the gallery as a visitor'] = 'Skoða myndasafn sem gestur';
+$lang['Help'] = 'Hjálp';
+$lang['Identification'] = 'Auðkenni';
+$lang['Keyword'] = 'Aðalorð';
+$lang['Links'] = 'Hlekkur';
+$lang['N/A'] = 'N/A';
+$lang['month'][10] = "Október";
+$lang['month'][11] = "Nóvember";
+$lang['month'][12] = "Desember";
+$lang['month'][1] = "Janúar";
+$lang['month'][2] = "Febrúar";
+$lang['month'][3] = "Mars";
+$lang['month'][4] = "Apríl";
+$lang['month'][5] = "Maí";
+$lang['month'][6] = "Júní";
+$lang['month'][7] = "Júlí";
+$lang['month'][8] = "Ágúst";
+$lang['month'][9] = "September";
+$lang['day'][0] = "Sunnudagur";
+$lang['day'][1] = "Mánudagur";
+$lang['day'][2] = "Þriðjudagur";
+$lang['day'][3] = "Miðvikudagur";
+$lang['day'][4] = "Fimmtudagur";
+$lang['day'][5] = "Föstudagur";
+$lang['day'][6] = "Laugardagur";
+$lang['Complete RSS feed (photos, comments)'] = 'Klára RSS flæði (myndir, athugasemdir)';
+$lang['Photos only RSS feed'] = 'aðeins myndir RSS flæði';
+$lang['New on %s'] = 'Nýtt á %s';
+$lang['Notification'] = 'Tilkynning';
+$lang['Number of items'] = 'fjöldi atriða';
+$lang['Original dimensions'] = 'Upprunaleg stærð';
+$lang['Password forgotten'] = 'Gleymdir þú lykilorðinu þínu?';
+$lang['Password'] = 'Lykilorð';
+$lang['Post date'] = 'Birt á';
+$lang['Posted on'] = 'Birt á';
+$lang['Profile'] = 'Síðan mín';
+$lang['Quick connect'] = 'Snögg tengjast';
+$lang['RSS feed'] = 'RSS flæði';
+$lang['Rate'] = 'Einkun';
+$lang['Register'] = 'Nýskráning';
+$lang['Registration'] = 'Skráning';
+$lang['Related tags'] = 'Svipuð merki';
+$lang['Reset'] = 'Endurstilla';
+$lang['Retrieve password'] = 'Sækja lykilorð';
+$lang['Search rules'] = 'Leitarskilyrði';
+$lang['Search tags'] = 'Leita að merki';
+$lang['Search'] = 'Leita';
+$lang['display available tags'] = 'Sýna tiltæk merki';
+$lang['Since'] = 'Frá';
+$lang['Sort by'] = 'Flokka eftir';
+$lang['Sort order'] = 'Flokkunar röð';
+$lang['Tag'] = 'Merki';
+$lang['Tags'] = 'Merki';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS flæði gefur tilkynningu um nýja atburði á þessari vefsíðu:  nýjar myndir, uppfærslur albúma, Nýjar athugasemdir. Til að nota með RSS flæða lesara.';
+$lang['Unknown feed identifier'] = 'Óþekkt flæði auðkenni';
+$lang['User comments'] = 'Athugasemdir notenda';
+$lang['Username'] = 'Notendanafn';
+$lang['Visits'] = 'Heimsóknir';
+$lang['Webmaster'] = 'Vefstjóri';                                             
+$lang['Week %d'] = 'Vika %d';
+$lang['About Piwigo'] = 'Um Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Þú hefur ekki leyfi til að fá aðgang að umbeðini síðu';
+$lang['Add to caddie'] = 'Bæta við caddie';
+$lang['add this photo to your favorites'] = 'bæta þessari mynd við uppáhalds';
+$lang['Administration'] = 'Stjórnun';
+$lang['all'] = 'allt';
+$lang['%d album updated'] = '%d albúm uppfært';
+$lang['%d albums updated'] = '%d albúm uppfærð';
+$lang['%d new photo'] = '%d ný mynd';
+$lang['%d new photos'] = '%d nýjar myndir';
+$lang['Albums'] = 'Albúm';
+$lang['Album'] = 'Albúm';
+$lang['ascending'] = 'hækkandi';
+$lang['author(s) : %s'] = 'höfundur/ar : %s';
+$lang['Expand all albums'] = 'Stækka öll albúm';
+$lang['posted after %s (%s)'] = 'Birt eftir %s (%s)';
+$lang['posted before %s (%s)'] = 'Birt fyrir %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'Birt milli %s (%s) og %s (%s)';
+$lang['posted on %s'] = 'Birt á %s';
+$lang['Best rated'] = 'Besta einkun';
+$lang['display best rated photos'] = 'sýna myndir með bestu einkun';
+$lang['caddie'] = 'Caddie';
+$lang['Calendar'] = 'Dagatal';
+$lang['All'] = 'Allt';
+$lang['display each day with photos, month per month'] = 'sýna hvern dag með myndum, hvern mánum';
+$lang['View'] = 'Skoða';
+$lang['chronology_monthly_calendar'] = 'Mánaðar dagatal';
+$lang['chronology_monthly_list'] = 'Mánaðalegur listi';
+$lang['chronology_weekly_list'] = 'Viku listi';
+$lang['Click here if your browser does not automatically forward you'] = 'Smelltu hér ef vafrinn sendir þig ekki áfram sjálfkrafa';
+$lang['comment date'] = 'dasetning athugasemdar';
+$lang['Comment'] = 'Athugasemd';
+$lang['Your comment has been registered'] = 'Athugasemd þín hefur verið skráð';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Vörn gegn spam : vinsamlegast bíðið augnablik áður en þið reynið að birta aðra athugasemd';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Athugasemd þín hefur ekki verið skráð vegna þess að hún stóðst ekki reglur';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Stjórnandi verður að heimila athugasemd þína áður en hún verður sýnileg.';
+$lang['This login is already used by another user'] = 'Þetta notendanafn er nú þegar í notkun';
+$lang['Comments'] = 'Athugasemdir';
+$lang['Add a comment'] = 'Bæta við athugasemd';
+$lang['created after %s (%s)'] = 'búið til eftir %s (%s)';
+$lang['created before %s (%s)'] = 'búið til fyrir %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'búið til milli %s (%s) og %s (%s)';
+$lang['created on %s'] = 'búið til á %s';
+$lang['Customize'] = 'Aðlaga';
+$lang['Your Gallery Customization'] = 'Aðlögun á þínu galleríi';
+$lang['Default'] = 'Upprunalegt';
+$lang['delete this photo from your favorites'] = 'eyða þessari mynd úr uppáhalds';
+$lang['Delete'] = 'Eyða';
+$lang['descending'] = 'lækkandi';
+$lang['Download'] = 'niðurhal';
+$lang['Download this file'] = 'sækja þessa skrá';
+$lang['edit'] = 'breyta';
+$lang['wrong date'] = 'vitlaus dagsetning';
+$lang['excluded'] = 'útilokað';
+$lang['Your favorites'] = 'Þínar uppáhalds';
+$lang['display your favorites photos'] = 'Sýna uppáhalsd myndirnar þínar';
+$lang['Favorites'] = 'Uppáhalds';
+$lang['First'] = 'Fyrsta';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleríið er lokað vegna viðhalds. Vinsamlegast reynið síðar.';
+$lang['Page generated in'] = 'Síða mynduð í';
+$lang['guest'] = 'gestur';
+$lang['Hello'] = 'Halló';
+$lang['available for administrators only'] = 'Aðeins í boði fyrir stjórnendur';
+$lang['display this album'] = 'sýna þetta albúm';
+$lang['display last user comments'] = 'sýna athugasemdir síðasta notenda';
+$lang['customize the appareance of the gallery'] = 'aðlaga útlit gallerís';
+$lang['search'] = 'leita';
+$lang['Home'] = 'Heim';
+$lang['in this album'] = 'í þessu albúmi';
+$lang['in %d sub-album'] = 'in %d undir flokkur';
+$lang['in %d sub-albums'] = 'in %d undir flokkar';
+$lang['included'] = 'innifalið';
+$lang['Invalid password!'] = 'ógilt lykilorð!';
+$lang['Language'] = 'Tungumál';
+$lang['last %d days'] = 'síðustu %d daga';
+$lang['Last'] = 'síðasta';
+$lang['Logout'] = 'Útsrá';
+$lang['obligatory'] = 'skylda';
+$lang['Maximum photo height'] = 'Hámark hæð myndar';
+$lang['Maximum height must be a number superior to 50'] = 'Hámarks hæð verður að vera hærri en 50';
+$lang['Maximum photo width'] = 'Hámark breidd myndar';
+$lang['Maximum width must be a number superior to 50'] = 'Hámarks beidd verður að vera hærri en 50';
+$lang['display a calendar by creation date'] = 'sýna dagatal hjá dagsetningu sem búið til var á';
+$lang['display all photos in all sub-albums'] = 'sýna allar myndir í undir flokki';
+$lang['return to normal view mode'] = 'aftur í venjulegan skjá';
+$lang['display a calendar by posted date'] = 'sýna dagatal hjá dagsetningu sem birt var á';
+$lang['Most visited'] = 'Oftast heimsótt';
+$lang['display most visited photos'] = 'sýna mest heimsóttar myndir';
+$lang['Unknown identifier'] = 'Óþekkt auðkenni';
+$lang['New password'] = 'Nýtt lykilorð';
+$lang['Rate this photo'] = 'Gefa þessari mynd einkunn';
+$lang['Next'] = 'Næsta';
+$lang['no rate'] = 'engin einkunn';
+$lang['Photos posted within the last %d day.'] = 'Aðeins myndir birtar á síðasta %d degi.';
+$lang['Photos posted within the last %d days.'] = 'Aðeins myndir birtar á síðustu %d dögum.';
+$lang['password updated'] = 'lykilorð uppfært';
+$lang['Recent period must be a positive integer value'] = 'Nýlegt tímabil verður að vera a jákvæð heiltala gildi';
+$lang['photo'] = 'mynd';
+$lang['Click on the photo to see it in high definition'] = 'Styðjið á myndina til að sjá hana í háskerpu';
+$lang['Show file metadata'] = 'Sýna skrá metadata';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'Valmöguleikar';
+$lang['Previous'] = 'Fyrri';
+$lang['Random photos'] = 'Myndir af handahófi';
+$lang['display a set of random photos'] = 'sýna handahófskent sett af myndum';
+$lang['Recent albums'] = 'Nýleg albúm';
+$lang['display recently updated albums'] = 'sýna nýlega uppfærð albúm';
+$lang['Recent period'] = 'Nýlegt tímabil';
+$lang['Recent photos'] = 'Nýlegar myndir';
+$lang['display most recent photos'] = 'sýna nýkegustu myndirnar';
+$lang['Redirection...'] = 'Áframsending…';
+$lang['Please, enter a login'] = 'Vinsamlegast sáið inn notendanafn';
+$lang['login mustn\'t end with a space character'] = 'notendanafn má ekki enda á bili';
+$lang['login mustn\'t start with a space character'] = 'notendanafn má ekki byrja á bili';
+$lang['this login is already used'] = 'þetta notendanafn er nú þegar í notkun';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'netfang verður að vera xxx@yyy.eee (example : jack@altern.org)';
+$lang['Auto login'] = 'Sjálfvirk innskráning';
+$lang['remove this tag from the list'] = 'fjarlægja merki úr lista';
+$lang['representative'] = 'Fulltrúi';
+$lang['Search for Author'] = 'Leita að höfundi';
+$lang['Search in albums'] = 'Leita í albúmum';
+$lang['Search by date'] = 'Leita eftir dagsetningu';
+$lang['Date'] = 'Dagsetning';
+$lang['End-Date'] = 'loka dagsetning';
+$lang['Kind of date'] = 'Hvers konar dagsetning';
+$lang['Search for words'] = 'Leita að orðum';
+$lang['Search for all terms'] = 'Leita að öllum skilmálum';
+$lang['Search for any term'] = 'Leita að hvaða skilmálum sem er';
+$lang['Empty query. No criteria has been entered.'] = 'Tóm fyrirspurn. Engin viðmið hafa verið skráð.';
+$lang['Search results'] = 'Leitar niðurstöður';
+$lang['Search in sub-albums'] = 'Leita í undir flokkum';
+$lang['searched words : %s'] = 'Orð sem leitað er að :%s';
+$lang['Contact'] = 'Tengiliðir';
+$lang['set as album representative'] = 'setja sem forsíðu á albúmi';
+$lang['Show number of comments'] = 'Sýna fjölda athugasemda';
+$lang['Show number of hits'] = 'Sýna fjölda niðurstaða';
+$lang['slideshow'] = 'myndasýning';
+$lang['stop the slideshow'] = 'stoppa myndasýningu';
+$lang['Specials'] = 'Meira';
+$lang['SQL queries in'] = 'SQL spurningar inn';
+$lang['display only recently posted photos'] = 'aðeins sýna myndir sem nýlega voru settar inn';
+$lang['return to the display of all photos'] = 'aftur í sýningu á öllum myndum';
+$lang['the beginning'] = 'upphafið';
+$lang['Thumbnails'] = 'Smámyndir';
+$lang['Menu'] = 'Valmynd';
+$lang['A comment on your site'] = 'Athugasemd á síðuni þinni';
+$lang['today'] = 'í dag';
+$lang['Update your rating'] = 'uppfæra einkunn þína';
+$lang['the username must be given'] = 'notendanafnins er krafist';
+$lang['useful when password forgotten'] = 'gagnlegt ef lykilorð gleymist';
+$lang['Quick search'] = 'Hraðleit';
+$lang['Connected user: %s'] = 'Tengdur notandi: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Vafri: %s';
+$lang['Author: %s'] = 'Höfundur: %s';
+$lang['Comment: %s'] = 'Athugasemd: %s';
+$lang['Comment by %s'] = 'Athugasemd eftir %s';
+$lang['User: %s'] = 'Notandi: %s';
+$lang['Email: %s'] = 'Netfangl: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Skráning %s';
+$lang['Album: %s'] = 'Albúm: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Slæm staða fyrir notanda "gestur", sjálfgefin staða verðu notuð. Vinsamlegast tilkynnið til vefstjóra.';
+$lang['this email address is already in use'] = 'þetta netfange er nú þegar í notkun';
+$lang['Album results for'] = 'Albúm noðurstöðut fyrir';
+$lang['Tag results for'] = 'Merkja niðurstöður fyrir';
+$lang['from %s to %s'] = 'frá %s til %s';
+$lang['Play of slideshow'] = 'Spila myndasýningu';
+$lang['Pause of slideshow'] = 'setja hlé á myndasýningu';
+$lang['Repeat the slideshow'] = 'Endur taka myndasýningu';
+$lang['Not repeat the slideshow'] = 'Ekki endur taka myndasýningu';
+$lang['Reduce diaporama speed'] = 'Minnka hraða á myndasýningu';
+$lang['Accelerate diaporama speed'] = 'Auka hraða á myndasýningu';
+$lang['Submit'] = 'Senda inn';
+$lang['Yes'] = 'Já';
+$lang['No'] = 'Nei';
+$lang['%d photo'] = '%d mynd';
+$lang['%d photos'] = '%d myndir';
+$lang['%d photo is also linked to current tags'] = '%d mynd er einnig tengd við núverandi merkingar';
+$lang['%d photos are also linked to current tags'] = '%d myndir eru einnig tengdar við núverandi merkingar';
+$lang['display photos linked to this tag'] = 'sýna myndir tengdar við þetta merki';
+$lang['photos posted during the last %d days'] = 'myndir birtar síðustu %d daga';
+$lang['Piwigo Help'] = 'Piwigo hjáp';
+$lang['Rank'] = 'Staða';
+$lang['group by letters'] = 'hópa eftir bósktöfum';
+$lang['letters'] = 'bókstafir';
+$lang['show tag cloud'] = 'sýna merkingar ský';
+$lang['cloud'] = 'ský';
+$lang['Reset to default values'] = 'Endurstilla á sjálfgefinn gildi';
+$lang['delete all photos from your favorites'] = 'eyða öllum myndum úr uppáhalds';
+$lang['Sent by'] = 'Sent frá';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookie er lokað eða ekki stutt af vafranum þínum. Þú verður að virkaj cookie til að tengjast.n.';
+$lang['Edit a comment'] = 'Breyta athugasemd';
+$lang['Are you sure?'] = 'Ertu viss?';
+$lang['(!) This comment requires validation'] = '(!) Þessi athugasemd krefst staðfestingar';
+$lang['Welcome'] = 'Velkomin';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Velkomin í Piwigo myndasafnið þitt!';
+$lang['... or browse your empty gallery'] = '... eða skoða tóma myndasafnið þitt';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... eða vinsamlegast slökkva á þessum skilaboðum, ég mun rata sjálf/ur';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Halló %s, Piwigo myndasafnið þitt er tómt!';
+$lang['I want to add photos'] = 'Ég vil bæta við myndum';
+$lang['Manage this user comment: %s'] = 'Stjórna athugasemd þessa notenda: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Netfang vantar. Vinsamlegast tilgreinið netfang.';
+$lang['This author modified following comment:'] = 'Þessi höfundur breytti eftirfarandi athugasemd:';
+$lang['This author removed the comment with id %d'] = 'Þessi höfundur fjarlægði athugasemdina með id %d';
+$lang['html tags are not allowed in login'] = 'html merkingar eru ekki leyfilegt við ínnskráningu';
+?>
Index: /tags/2.6.0RC1/language/is_IS/index.php
===================================================================
--- /tags/2.6.0RC1/language/is_IS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/is_IS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/is_IS/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/is_IS/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/is_IS/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Íslenska [IS]
Index: /tags/2.6.0RC1/language/it_IT/about.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/about.html	(revision 25596)
@@ -0,0 +1,19 @@
+<p>Questa galleria è basata su Piwigo.</p>
+
+<p>Piwigo è un software per creare gallerie fotografiche sul web, costruito 
+da una comunità attiva d'utenti e sviluppatori. Le estensioni rendono Piwigo 
+facilmente personalizzabile. Inoltre, ciliegina sulla torta, Piwigo è gratuito ed 
+open source.</p>
+
+<p id="linkToPiwigo"><a href="http://it.piwigo.org">Visitate il sito ufficiale di Piwigo</a></p>
+
+<p>The italian translation is maintained by (in alphabetical order):
+
+<ul>
+<li><a href="http://piwigo.org/forum/profile.php?id=6864">Ericnet</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=10898">Gdvpixel</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=2365">rio</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=5628">Sugar888</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=17357">virgigiole</a></li>
+</ul>
+.... Many thanks to you</p> 
Index: /tags/2.6.0RC1/language/it_IT/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/admin.lang.php	(revision 25596)
@@ -0,0 +1,975 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = '%d associazione';
+$lang['%d associations'] = '%d associazioni';
+$lang['%d album including'] = '%d album incluso';
+$lang['%d albums including'] = '%d album inclusi';
+$lang['%d physical'] = '%d fisico';
+$lang['%d physicals'] = '%d fisici';
+$lang[' and %d virtual'] = ' e %d virtuale';
+$lang[' and %d virtuals'] = ' e %d virtuali';
+$lang['%d album moved'] = '%d album spostato';
+$lang['%d albums moved'] = '%d album spostati';
+$lang['%d group'] = '%d gruppo';
+$lang['%d groups'] = '%d gruppi';
+$lang['%d member'] = '%d utente';
+$lang['%d members'] = '%d utenti';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tags';
+$lang['%d user comment rejected'] = '%d commento utente rifiutato';
+$lang['%d user comments rejected'] = '%d commenti utente rifiutati';
+$lang['%d user comment validated'] = '%d commento utente accettato';
+$lang['%d user comments validated'] = '%d commenti utenti accettati';
+$lang['%d user deleted'] = '%d utente cancellato';
+$lang['%d users deleted'] = '%d utenti cancellati';
+$lang['%d user'] = '%d utente';
+$lang['%d users'] = '%d utenti';
+$lang['%d waiting for validation'] = '%d in attesa di accettazione';
+$lang['Actions'] = 'Azioni';
+$lang['Activate'] = 'Attivare';
+$lang['Add/delete a permalink'] = 'Aggiungere/cancellare un permalink';
+$lang['Add a tag'] = 'Aggiungere un tag';
+$lang['Add a user'] = 'Aggiungere un utente';
+$lang['Add group'] = 'Aggiungere un gruppo';
+$lang['Add'] = 'Aggiungere';
+$lang['Allow user registration'] = 'Consentire registrazione degli utenti';
+$lang['Apply to sub-albums'] = 'Applicare ai sub-album';
+$lang['Associated'] = 'Associato a';
+$lang['Caddie management'] = 'Gestione del cestino';
+$lang['Caddie'] = 'Cestino';
+$lang['Albums authorized thanks to group associations'] = 'Album accessibili grazie all\'appartenenza ai gruppi';
+$lang['Album manual order was saved'] = 'L\'ordinamento manuale degli album è stato salvato';
+$lang['Album photos associated to the following albums: %s'] = 'Le foto dell\'album sono stati associati agli album seguenti: %s';
+$lang['Check for upgrade failed for unknown reasons.'] = 'La verifica dell\'ultima versione sul server è fallita per  ragioni sconosciute.';
+$lang['Check for upgrade'] = 'Controllo aggiornamenti';
+$lang['Comments for all'] = 'Commenti per tutti';
+$lang['Current name'] = 'Nome attuale';
+$lang['Database'] = 'Database';
+$lang['Deactivate'] = 'Disattivare';
+$lang['Deactivate all'] = 'Disattivare tutto';
+$lang['Delete Representant'] = 'Cancellare la copertina album';
+$lang['Delete selected tags'] = 'Cancellare i tags selezionati';
+$lang['Delete selected users'] = 'Cancellare gli utenti selezionati';
+$lang['Deletions'] = 'Eliminazione';
+$lang['Deny selected groups'] = 'Vietare l\'accesso ai gruppi selezionati';
+$lang['Deny selected users'] = 'Vietare l\'accesso agli utenti selezionati';
+$lang['Description'] = 'Descrizione';
+$lang['Display options'] = '0pzioni di visualizzazione';
+$lang['Dissociated'] = 'Dissociato';
+$lang['Does not represent'] = 'Non è una miniatura per';
+$lang['Edit selected tags'] = 'Modificare i tags selezionati';
+$lang['Edit tags'] = 'Modificare i tags';
+$lang['Email admins when a new user registers'] = 'Inviare email agli amministratori dell\'iscrizione di un nuovo utente';
+$lang['Email admins when a valid comment is entered'] = 'Inviare email agli amministratori della presenza di un nuovo commento';
+$lang['Email admins when a comment requires validation'] = 'Inviare email agli amministratori quando un commento richiede un\'approvazione';
+$lang['Environment'] = 'Ambiente';
+$lang['Form'] = 'Modulo';
+$lang['Gallery title'] = 'Titolo della galleria';
+$lang['Grant selected groups'] = 'Dare l\'accesso ai gruppi selezionati';
+$lang['Grant selected users'] = 'Dare l\'accesso agli utenti selezionati';
+$lang['Group name'] = 'Nome del gruppo';
+$lang['Groups'] = 'Gruppi';
+$lang['Guests'] = 'Ospiti';
+$lang['History'] = 'Cronologia';
+$lang['Informations'] = 'Informazioni';
+$lang['Install'] = 'Installare';
+$lang['Link all album photos to a new album'] = 'Associare tutte le foto dell\'album ad un nuovo album';
+$lang['Link all album photos to some existing albums'] = 'Associare tutte le foto dell\'album a degli album esistenti';
+$lang['Linked albums'] = 'Album associati';
+$lang['Lock gallery'] = 'Blocco della galleria';
+$lang['Maintenance'] = 'Manutenzione';
+$lang['Edit album permissions'] = 'Modificare permessi album';
+$lang['Manage permissions for group "%s"'] = 'Gestire i permessi per il gruppo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Gestire i permessi per l\'utente "%s"';
+$lang['Manage tags'] = 'Gestire i tags';
+$lang['Members'] = 'Membri';
+$lang['Metadata synchronized from file'] = 'Metadati sincronizzati dal file';
+$lang['Move albums'] = 'Spostare gli album';
+$lang['Move'] = 'Spostare';
+$lang['Name'] = 'Nome';
+$lang['New name'] = 'Nuovo nome';
+$lang['New parent album'] = 'Nuovo album principale';
+$lang['New tag'] = 'Nuovo tag';
+$lang['Number of comments per page'] = 'Numero di commenti per pagina';
+$lang['Number of rates'] = 'Numero di voti';
+$lang['Number of thumbnails to create'] = 'Numero di miniature da creare';
+$lang['Only private albums are listed'] = 'Solo gli album privati sono elencati';
+$lang['Operating system'] = 'Sistema operativo';
+$lang['Options'] = 'Opzioni';
+$lang['Other private albums'] = 'Altri album privati';
+$lang['Page banner'] = 'Banner di pagina';
+$lang['Parent album'] = 'Album principale';
+$lang['Path'] = 'Percorso';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Il permalink %s è stato usato precedentemente dall\'album %s. Cancellarlo prima dallo storico';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Il permalink deve essere composto unicamente dai caratteri seguenti "a-zA-Z0-9", "-", "_" o "/". Non deve essere numerico o iniziare con un numero seguito da "-"';
+$lang['Permalink %s is already used by album %s'] = 'Il permalink %s è già in uso nell\'album %s';
+$lang['Permalink history'] = 'Cronologia dei permalinks';
+$lang['Permalinks'] = 'Permalinks';
+$lang['Permission denied'] = 'Accesso non autorizzato';
+$lang['Permission granted thanks to a group'] = 'Accesso autorizzato grazie all\'appartenenza ai gruppi';
+$lang['Permission granted'] = 'Accesso autorizzato';
+$lang['Photo informations updated'] = 'Informazioni foto aggiornate';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Posizione';
+$lang['Preferences'] = 'Preferenze';
+$lang['Properties'] = 'Proprietà ';
+$lang['Random photo'] = 'Foto a caso';
+$lang['Rate date'] = 'Data del voto';
+$lang['Rating by guests'] = 'Voti degli ospiti';
+$lang['Rating'] = 'Voto';
+$lang['Reject'] = 'Rifiutare';
+$lang['Representant'] = 'Copertina';
+$lang['Representation of albums'] = 'Rappresentazione degli album';
+$lang['Representative'] = 'Rappresentativa';
+$lang['Represents'] = 'Rappresenta';
+$lang['Save order'] = 'Salvare l\'ordine';
+$lang['Save to permalink history'] = 'Salvare nella cronologia dei permalinks';
+$lang['Select at least one album'] = 'Selezionare almeno un album';
+$lang['Select at least one photo'] = 'Scegliere almeno una foto';
+$lang['Select at least one user'] = 'Scegliere almeno un\'utente';
+$lang['Show info'] = 'Mostra le informazioni';
+$lang['Site manager'] = 'Gestione dei siti';
+$lang['Status'] = 'Stato';
+$lang['Statistics'] = 'Statistiche';
+$lang['Storage album'] = 'Album di memorizzazione';
+$lang['Sum of rates'] = 'Somma dei voti';
+$lang['Tag "%s" already exists'] = 'Il tag "%s" esiste già ';
+$lang['Tag "%s" was added'] = 'Il tag "%s" è stato aggiunto';
+$lang['Tag selection'] = 'Selezione dei tags';
+$lang['The %d following tags were deleted'] = 'I %d tags seguenti sono stati cancellati';
+$lang['Unable to check for upgrade.'] = 'Impossibile controllare eventuali aggiornamenti.';
+$lang['Uninstall'] = 'Disinstallare';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Usare l\'ordinamento delle foto predefinito (cosi come definito nel file di configurazione)';
+$lang['User comments validation'] = 'Approvare i commenti degli utenti';
+$lang['Users'] = 'Utenti';
+$lang['Validate'] = 'Approvare';
+$lang['Validation'] = 'Richiedere l\'approvazione';
+$lang['Version'] = 'Versione';
+$lang['Virtual albums to move'] = 'Album virtuali da spostare';
+$lang['Virtual album name'] = 'Nome dell\'album virtuale';
+$lang['Webmaster cannot be deleted'] = 'Il Webmaster non può essere cancellato';
+$lang['You are running on development sources, no check possible.'] = 'State lavorando con una versione di sviluppo, impossibile verificare l\'ultima versione.';
+$lang['You cannot delete your account'] = 'Non potete cancellare il vostro account utente';
+$lang['You cannot move an album in its own sub album'] = 'Non si può spostare un album nel proprio sub-album';
+$lang['You need to confirm deletion'] = 'Dovete confermare la cancellazione';
+$lang['Associate to album'] = 'Associare all\'album';
+$lang['associate to group'] = 'associare al gruppo';
+$lang['Authorized'] = 'Autorizzate';
+$lang['Add a virtual album'] = 'Aggiungere un album virtuale';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizzare gli utenti ad aggiungere dei commenti nell\'album selezionato';
+$lang['The name of an album must not be empty'] = 'Il nome dell\'album non può rimanere vuoto';
+$lang['Lock albums'] = 'Bloccare gli album';
+$lang['Private'] = 'Album privato';
+$lang['Public'] = 'Album pubblico';
+$lang['Find a new representant by random'] = 'Scegliere una nuova copertina a caso';
+$lang['Public / Private'] = 'Pubblica / Privata';
+$lang['Manage authorizations for selected albums'] = 'Gestire le autorizzazioni per gli album selezionati';
+$lang['Virtual album added'] = 'Album virtuale aggiunto';
+$lang['Virtual album deleted'] = 'Album virtuale cancellato';
+$lang['Access type'] = 'Tipo di accesso';
+$lang['Information data registered in database'] = 'Informazioni registrate nel database';
+$lang['Default display'] = 'Visualizzazione predefinita';
+$lang['The gallery URL is not valid.'] = 'L\'URL della galleria non è valido.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Il numero di commenti per pagina deve essere compreso tra 5 e 50.';
+$lang['Configuration'] = 'Configurazione';
+$lang['confirm'] = 'confermare';
+$lang['Date'] = 'Data';
+$lang['delete album'] = 'cancellare l\'album';
+$lang['Dissociate from album'] = 'Dissociare dall\'album';
+$lang['dissociate from group'] = 'dissociare dal gruppo';
+$lang['Album updated successfully'] = 'Album aggiornato correttamente';
+$lang['photos per page'] = 'foto per pagina';
+$lang['High definition enabled'] = 'Alta definizione attiva';
+$lang['File'] = 'File';
+$lang['first photo added on %s'] = 'prima foto aggiunta il %s';
+$lang['Forbidden'] = 'Vietati';
+$lang['global mode'] = 'modalità globale';
+$lang['group "%s" added'] = 'gruppo "%s" aggiunto';
+$lang['group "%s" deleted'] = 'gruppo "%s" cancellato';
+$lang['group "%s" updated'] = 'gruppo "%s" aggiornato';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Il nome del gruppo non deve contenere " o \' e non deve essere vuoto.';
+$lang['This name is already used by another group.'] = 'Questo nome è già  usato per un altro gruppo.';
+$lang['High definition'] = 'Alta definizione';
+$lang['jump to album'] = 'andare all\'album';
+$lang['jump to photo'] = 'andare alla foto';
+$lang['leave'] = 'abbandonare';
+$lang['Lock'] = 'Bloccare';
+$lang['Locked'] = 'Bloccate';
+$lang['manage album photos'] = 'gestire le foto dell\'album';
+$lang['manage sub-albums'] = 'gestire i sub-album';
+$lang['Manage'] = 'Gestire';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Il tempo di esecuzione è scaduto, il processo deve continuare [Tempo stimato: %d secondo].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Il tempo di esecuzione è scaduto, il processo deve continuare [Tempo stimato: %d secondi].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Il tempo di preparazione dell\'elenco degli utenti per l\'invio dell\'email è limitato. Gli altri utenti non sono elencati.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Il tempo per l\'invio dell\'email è limitato. L\'invio delle altre email verra ignorato.';
+$lang['To send ?'] = 'Inviare?';
+$lang['Last send'] = 'Ultimo invio';
+$lang['User'] = 'Utente';
+$lang['See you soon,'] = 'A presto,';
+$lang['Go to'] = 'Andare a';
+$lang['Hello'] = 'Ciao ';
+$lang['New photos were added'] = 'Delle nuove foto sono state aggiunte';
+$lang['on'] = 'il';
+$lang['between'] = 'tra il ';
+$lang['and'] = 'e il';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Siete stati iscritti dal webmaster del sito per la ricezione di notifiche via email.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Vi siete iscritti per la ricezione di notifiche via email.';
+$lang['To subscribe'] = 'Per iscrivervi';
+$lang['If you encounter problems or have any question, please send a message to'] = 'In caso di problemi o domande, si prega di inviare un messaggio a';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemi o domande';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Siete stati cancellati dal webmaster dalla sottoscrizione alla ricezione di notifiche via email.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Vi siete cancellati dalla sottoscrizione alla ricezione di notifiche via email.';
+$lang[', click on'] = ', cliccare su ';
+$lang['To unsubscribe'] = 'Per cancellare la sottoscrizione ';
+$lang['With blank value, gallery title will be used'] = 'Lasciando vuoto, verrà utilizzato il titolo della galleria';
+$lang['Notification'] = 'Notifica';
+$lang['Error when sending email to %s [%s].'] = 'Errore durante l\'invio dell\'email a %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email inviata a %s [%s].';
+$lang['%d mail was sent.'] = '%s email inviata.';
+$lang['%d mails were sent.'] = '%s email inviate.';
+$lang['%d mail was not sent.'] = '%s email non è stata inviata.';
+$lang['%d mails were not sent.'] = '%s email non sono state inviate.';
+$lang['No mail to send.'] = 'Nessuna email da inviare.';
+$lang['There is no available subscribers to mail.'] = 'Nessun utente da notificare via email.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Un utente è da notificare solamente se ci sono nuovi elementi disponibili.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Solo il webmaster può accedere a queste informazioni, non gli amministratori.';
+$lang['No user to send notifications by mail.'] = 'Nessun utente da notificare via email.';
+$lang['New photos added'] = 'Nuove foto aggiunte';
+$lang['Subscribe to notification by mail'] = 'Sottoscrivere alla notifica via email';
+$lang['Unsubscribe from notification by mail'] = 'Cancella dalla notifica via email';
+$lang['Parameter'] = 'Parametro';
+$lang['Operation in progress'] = 'Elaborazione in corso.';
+$lang['Continue processing treatment'] = 'Continuare il processo in corso';
+$lang['Complementary mail content'] = 'Contenuto aggiuntivo della mail';
+$lang['Add detailed content'] = 'Invia contenuto dettagliato';
+$lang['Send mail as'] = 'Inviare l\'email come';
+$lang['Send mail to users'] = 'Invia un\'email agli utenti';
+$lang['Send'] = 'Invio';
+$lang['Options'] = 'Opzioni';
+$lang['Subscribed'] = 'Iscritti';
+$lang['Subscribe'] = 'Iscrizione';
+$lang['Parameters'] = 'Parametri';
+$lang['Select recipients'] = 'Selezionare i destinatari';
+$lang['Subscribe/unsubscribe users'] = 'Iscrivere/cancellare utenti';
+$lang['Unsubscribed'] = 'Non iscritti';
+$lang['%d parameter was updated.'] = '%d parametro è stato aggiornato.';
+$lang['%d parameters were updated.'] = '%d parametri sono stati aggiornati.';
+$lang['%d user was not updated.'] = '%d utente non è stato aggiornato.';
+$lang['%d users were not updated.'] = '%d utenti non sono stati aggiornati.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'L\'utente %s [%s] è stato cancellato dall\'elenco degli iscritti.';
+$lang['User %s [%s] was added to the subscription list.'] = 'L\'utente %s [%s] è stato aggiunto all\'elenco degli iscritti.';
+$lang['%d user was updated.'] = '%d utente aggiornato.';
+$lang['%d users were updated.'] = '%d utenti aggiornati.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'L\'utente %s [%s] non è stato cancellato dall\'elenco degli iscritti.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'L\'utente %s [%s] non è stato aggiunto all\'elenco degli iscritti.';
+$lang['User %s [%s] added.'] = 'Utente %s [%s] aggiunto.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Attenzione: l\'iscrizione o la cancellazione invierà  un\'email agli utenti in questione';
+$lang['Send mail on HTML format'] = 'Invio dell\'email in formato HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Inserire la visualizzazione delle foto recenti raggruppate per data';
+$lang['Available only with HTML format'] = 'Disponibile unicamente con il formato HTML';
+$lang['no write access'] = 'nessun accesso in scrittura';
+$lang['Permissions'] = 'Permessi';
+$lang['private'] = 'privato';
+$lang['public'] = 'pubblico';
+$lang['Purge never used notification feeds'] = 'Ripulire i flussi di notifica mai usati';
+$lang['Purge sessions'] = 'Ripulire le sessioni';
+$lang['randomly represented'] = 'copertina a caso';
+$lang['registration date'] = 'data di registrazione';
+$lang['clean'] = 'ripulire';
+$lang['Create this site'] = 'Creare questo sito';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'testare questo sito remoto';
+$lang['remove tags'] = 'rimuovere i tags';
+$lang['Repair and optimize database'] = 'Riparare e ottimizzare il database';
+$lang['selection'] = 'selezione';
+$lang['set to'] = 'impostare a';
+$lang['singly represented'] = 'copertina fissa';
+$lang['This site already exists'] = 'Questo sito esiste già ';
+$lang['created'] = 'creato';
+$lang['delete this site and all its attached elements'] = 'cancellare questo sito e tutte le informazioni ad esso connesse';
+$lang['an error happened'] = 'si è verificato un\'errore';
+$lang['Local'] = 'Locale';
+$lang['Remote'] = 'Remoto';
+$lang['update the database from files'] = 'aggiornare il database dai files';
+$lang['status'] = 'stato';
+$lang['Directory'] = 'Directory';
+$lang['sub-albums'] = 'sub-album';
+$lang['Synchronize metadata'] = 'Sincronizzare i metadati';
+$lang['target'] = 'target';
+$lang['Title'] = 'Titolo';
+$lang['Album list management'] = 'Gestione degli album';
+$lang['Piwigo configuration'] = 'Configurazione di Piwigo';
+$lang['Edit album'] = 'Modificare album';
+$lang['Group management'] = 'Gestione gruppi';
+$lang['User list'] = 'Elenco utenti';
+$lang['Edit photo information'] = 'Modificare informazioni della foto';
+$lang['Database synchronization with files'] = 'Sincronizzazione database con i files';
+$lang['all'] = 'tutto';
+$lang['height must be a number superior to'] = 'l\'altezza deve essere un numero superiore a';
+$lang['width must be a number superior to'] = 'la larghezza deve essere un numero superiore a';
+$lang['for the file format'] = 'per il formato del file';
+$lang['Photo unreachable or no support'] = 'Foto non trovata o non supportata';
+$lang['GD version'] = 'Versione GD';
+$lang['General statistics'] = 'Statistiche generali';
+$lang['average time'] = 'tempo medio';
+$lang['number of miniaturized photos'] = 'numero di foto miniaturizzate';
+$lang['total time'] = 'tempo totale';
+$lang['for this file format'] = 'per questo formato di file';
+$lang['unit mode'] = 'modalità singolo';
+$lang['Unlocked'] = 'Sbloccate';
+$lang['unset'] = 'svuotare';
+$lang['Update albums informations'] = 'Aggiornare le informazioni degli album';
+$lang['Update photos information'] = 'Aggiornare le informazioni delle foto';
+$lang['Synchronize'] = 'Sincronizzare';
+$lang['reduce to single existing albums'] = 'trattare un solo album';
+$lang['Choose an option'] = 'Scegliere un\'opzione';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'mostrare tutte le informazioni possibili (album e foto aggiunti o eliminati)';
+$lang['Error list'] = 'Elenco degli errori';
+$lang['Errors caption'] = 'Significato degli errori';
+$lang['Detailed informations'] = 'Informazioni dettagliate';
+$lang['File/directory read error'] = 'Errore in lettura del file/directory';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Non è possibile accedere al file o alla directory (probabilmente non esiste o l\'accesso è stato negato)';
+$lang['albums deleted in the database'] = 'album cancellati dal database';
+$lang['photos deleted from the database'] = 'foto cancellate dal database';
+$lang['photos candidates for metadata synchronization'] = 'foto in coda per la sincronizzazione dei metadati';
+$lang['photos informations synchronized with files metadata'] = 'informazioni sulle foto sincronizzate con i metadati';
+$lang['errors during synchronization'] = 'si sono verificati errori durante la sincronizzazione';
+$lang['albums added in the database'] = 'album aggiunti al database';
+$lang['photos added in the database'] = 'foto aggiunte al database';
+$lang['photos updated in the database'] = 'foto aggiornate nel database';
+$lang['Search for new images in the directories'] = 'Cercare nuove immagini nelle directory';
+$lang['added'] = 'aggiunto';
+$lang['deleted'] = 'cancellato';
+$lang['Metadata synchronization results'] = 'Risultato della sincronizzazione dei metadati';
+$lang['only perform a simulation (no change in database will be made)'] = 'eseguire solo una simulazione (nulla sarà cambiato nel database)';
+$lang['Simulation'] = 'Simulazione';
+$lang['directories + files'] = 'directory + file';
+$lang['only directories'] = 'solo directory';
+$lang['synchronize files structure with database'] = 'sincronizzare la struttura dei files con il database';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizzare le foto con i metadati dei file di database';
+$lang['even already synchronized photos'] = 'anche le foto già sincronizzate';
+$lang['Used metadata'] = 'Metadati usati';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Il nome delle directory e dei files deve essere composto da lettere, numeri, "-", "_" o "."';
+$lang['wrong filename'] = 'nome file errato';
+$lang['Upload'] = 'Caricare';
+$lang['user "%s" added'] = 'utente "%s" aggiunto';
+$lang['User status'] = 'Stato utente';
+$lang['user_status_admin'] = 'Amministratore';
+$lang['user_status_generic'] = 'Generico';
+$lang['user_status_guest'] = 'Ospite';
+$lang['user_status_normal'] = 'Utente';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Album virtuale';
+$lang['Waiting'] = 'In attesa';
+$lang['default'] = 'predefinito';
+$lang['Toggle \'default group\' property'] = 'Invertire la proprietà "gruppo predefinito"';
+$lang['Advanced features'] = 'Funzioni avanzate';
+$lang['Overall'] = 'Vista globale';
+$lang['Year'] = 'Anno';
+$lang['Month'] = 'Mese';
+$lang['Day'] = 'Giorno';
+$lang['Pages seen'] = 'Pagine viste';
+$lang['Time'] = 'Ora';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Elemento';
+$lang['Section'] = 'Sezione';
+$lang['An information email was sent to group "%s"'] = 'Un\'email informativa è stata inviata agli utenti del gruppo "%s"';
+$lang['Send an information email to group members'] = 'Inviare un\'email informativa agli utenti di un gruppo';
+$lang['Group'] = 'Gruppo';
+$lang['[%s] Visit album %s'] = '[%s] Visita l\'album %s';
+$lang['Hello,'] = 'Ciao,';
+$lang['See you soon.'] = 'A presto.';
+$lang['Discover album:'] = 'Scoprite l\'album:';
+$lang['Mail content'] = 'Contenuto dell\'email';
+$lang['none'] = 'nessuno';
+$lang['high'] = 'alto';
+$lang['other'] = 'altro';
+$lang['Element type'] = 'Tipo di elemento';
+$lang['Image id'] = 'Id immagine';
+$lang['Summary'] = 'Riassunto';
+$lang['%d line filtered'] = '%d linea filtrata';
+$lang['%d lines filtered'] = '%d linee filtrate';
+$lang['%d guest'] = '%d ospite';
+$lang['%d guests'] = '%d ospiti';
+$lang['Hour'] = 'Ora';
+$lang['guest'] = 'ospite';
+$lang['default values'] = 'valori predefiniti';
+$lang['Guest cannot be deleted'] = 'L\'utente ospite non può essere cancellato';
+$lang['Default user cannot be deleted'] = 'L\'utente predefinito non può essere cancellato';
+$lang['Purge history detail'] = 'Ripulire i dettagli dalla cronologia';
+$lang['Purge history summary'] = 'Ripulire il sommario dalla cronologia';
+$lang['Check integrity'] = 'Controllo d\'integrità ';
+$lang['Anomaly'] = 'Anomalia';
+$lang['Correction'] = 'Correzione';
+$lang['Automatic correction'] = 'Correzione automatica';
+$lang['Impossible automatic correction'] = 'Correzione automatica impossibile';
+$lang['Correction applied with success'] = 'Correzione applicata con successo';
+$lang['Correction applied with error'] = 'Correzione applicata con errori';
+$lang['%d anomaly has been detected.'] = 'individuata %d anomalia.';
+$lang['%d anomalies have been detected.'] = 'individuate %d anomalie.';
+$lang['%d anomaly has been corrected.'] = '%d anomalia corretta.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalie corrette.';
+$lang['%d anomaly has not been corrected.'] = 'non è stato possibile correggere %d anomalia.';
+$lang['%d anomalies have not been corrected.'] = 'non è stato possibile correggere %d anomalie.';
+$lang['Go to %s or %s for more informations'] = 'Andare su %s o %s per avere più informazioni';
+$lang['the forum'] = 'il forum';
+$lang['the wiki'] = 'la wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'Il valore %s non è corretto perchè i files con dati EXIF non sono supportati';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s deve essere impostato su false nel vostro file local/config/config.inc.php';
+$lang['Main "guest" user does not exist'] = 'L\'utente "ospite" principale non esiste';
+$lang['Main "guest" user status is incorrect'] = 'Lo stato del\'utente "ospite" principale non è corretto';
+$lang['Default user does not exist'] = 'L\'utente predefinito non esiste';
+$lang['Main "webmaster" user does not exist'] = 'L\'utente "webmaster" principale non esiste';
+$lang['Main "webmaster" user status is incorrect'] = 'Lo stato dell\'utente "webmaster" principale non è corretto';
+$lang['User "%s" created with "%s" like password'] = 'L\'utente "%s" creato con la password "%s"';
+$lang['Status of user "%s" updated'] = 'Stato dell\'utente "%s" aggiornato';
+$lang['add new photos to caddie'] = 'Aggiungere le nuove foto al cestino';
+$lang['No display'] = 'Nessuna visualizzazione';
+$lang['Classic display'] = 'Visualizzazione classica';
+$lang['Hoverbox display'] = 'Visualizzazione durante il passaggio del mouse';
+$lang['Mail address is obligatory for all users'] = 'L\'indirizzo email è obligatorio per tutti gli utenti';
+$lang['Minimum privacy level'] = 'Livello minimo di privacy';
+$lang['Privacy level'] = 'Livello di privacy';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contatti';
+$lang['Level 2'] = 'Amici';
+$lang['Level 4'] = 'Famiglia';
+$lang['Level 8'] = 'Amministratori';
+$lang['Reinitialize check integrity'] = 'Reinizializzare controllo d\'integrità ';
+$lang['Check all'] = 'Selezionare tutto';
+$lang['Uncheck all'] = 'Deselezionare tutto';
+$lang['Check automatic corrections'] = 'Selezionare correzioni automatiche';
+$lang['Apply selected corrections'] = 'Applicare le correzioni selezionate';
+$lang['Ignore selected anomalies'] = 'Ignorare le anomalie selezionate';
+$lang['Refresh'] = 'Aggiornare';
+$lang['The anomaly will be ignored until next application version'] = 'L\'anomalia verrà ignorata fino alla prossima versione dell\'applicazione';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'La correzione dell\'anomalia annullerà il fatto che sia ignorata';
+$lang['%d anomaly has been ignored.'] = '%d anomalia è stata ignorata.';
+$lang['%d anomalies have been ignored.'] = '%d anomalie sono state ignorate.';
+$lang['Plugins which need upgrade'] = 'Plugins che necessitano di aggiornamento';
+$lang['Plugin list'] = 'Elenco dei plugins';
+$lang['Check for updates'] = 'Controllare aggiornamenti';
+$lang['Other plugins'] = 'Altri plugins disponibili';
+$lang['Last revisions'] = 'Ultimi aggiornamenti';
+$lang['Are you sure you want to delete this plugin?'] = 'Siete sicuri di volere cancellare questo plugin?';
+$lang['Are you sure you want to install this plugin?'] = 'Siete sicuri di volere installare questo plugin?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Siete sicuri di volere installare questo aggiornamento? Dovete verificare che questo aggiornamento non necessiti prima di una disinstallazione.';
+$lang['Plugin has been successfully copied'] = 'Il plugin è stato copiato con successo';
+$lang['You might go to plugin list to install and activate it.'] = 'Andare nella lista dei plugins per installarlo ed attivarlo.';
+$lang['Can\'t create temporary file.'] = 'Non è possibile creare file temporanei.';
+$lang['Can\'t download archive.'] = 'L\'archivio non può essere scaricato.';
+$lang['Can\'t read or extract archive.'] = 'L\'archivio non può essere letto o estratto.';
+$lang['An error occured during extraction (%s).'] = 'Si è verificato un\'errore durante l\'estrazione del file (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Verificate i permessi della cartella "plugins" e delle sue sotto cartelle (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Connessione al server non disponibile.';
+$lang['Purge compiled templates'] = 'Ripulire i templates compilati';
+$lang['ACCESS_0'] = 'Accesso libero';
+$lang['ACCESS_1'] = 'Accesso a tutti';
+$lang['ACCESS_2'] = 'Accesso agli iscritti';
+$lang['ACCESS_3'] = 'Accesso agli amministratori';
+$lang['ACCESS_4'] = 'Accesso ai webmaster';
+$lang['ACCESS_5'] = 'Nessun accesso';
+$lang['Support'] = 'Forum';
+$lang['Documentation'] = 'Documentazione';
+$lang['A new version of Piwigo is available.'] = 'Una nuova versione di Piwigo è disponibile.';
+$lang['Piwigo Administration'] = 'Amministrazione di Piwigo';
+$lang['Piwigo version'] = 'Versione di Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'State già usando l\'ultima versione di Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'La versione di %s [%s] installata non è compatible con la versione richiesta [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Dovete aggiornare il vostro sistema per poter sfruttare completamente l\'applicazione, altrimenti l\'applicazione non funzionerà correttamente, o non funzionerà per niente';
+$lang['Deleted on'] = 'Cancellati su';
+$lang['Last hit'] = 'Ultimo punteggio';
+$lang['GD library is missing'] = 'La libreria GD è mancante';
+$lang['Templates'] = 'Templates (modelli)';
+$lang['Extend for templates'] = 'Estendere i templates';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Sostituzione dei templates originali con i vostri templates personalizzati dalla sottodirectory template-extension';
+$lang['Replacers (customized templates)'] = 'Sostituzione (templates personalizzati)';
+$lang['Original templates'] = 'Templates originali';
+$lang['Orphan tags deleted'] = 'Tags orfani cancellati';
+$lang['Optional URL keyword'] = 'URL keyword opzionale';
+$lang['Templates configuration has been recorded.'] = 'La configurazione dei templates è stata registrata.';
+$lang['All optimizations have been successfully completed.'] = 'Tutte le ottimizzazioni sono state completate con successo.';
+$lang['Optimizations have been completed with some errors.'] = 'Le ottimizzazioni sono state completate con alcuni errori.';
+$lang['Modify information'] = 'Modificare le informazioni';
+$lang['nothing'] = 'niente';
+$lang['overrides existing values with empty ones'] = 'sovrascrivere i valori esistenti con quelli vuoti';
+$lang['Manage photo ranks'] = 'Gestire l\'ordinamento delle foto';
+$lang['Edit ranks'] = 'Modificare l\'ordine';
+$lang['No photo in this album'] = 'Nessuna foto in quest\'album';
+$lang['Images manual order was saved'] = 'L\'ordinamento manuale delle immagini è stato salvato';
+$lang['ranks'] = 'posizioni';
+$lang['By rank'] = 'Per posizione';
+$lang['Manual order'] = 'Ordinamento manuale';
+$lang['Drag to re-order'] = 'Clicca e trascina per riorganizzare';
+$lang['Quick Local Synchronization'] = 'Sincronizzazione locale rapida';
+$lang['No photo can be deleted'] = 'Nessuna foto può essere eliminata';
+$lang['Delete selected photos'] = 'Eliminare le foto selezionate';
+$lang['%d photo was deleted'] = '%d foto è stata cancellata';
+$lang['%d photos were deleted'] = '%d foto sono state cancellate';
+$lang['Downloads'] = 'Downloads';
+$lang['Released on'] = 'Aggiunto il';
+$lang['Number of downloads'] = 'Totale downloads';
+$lang['Piwigo Announcements Newsletter'] = 'Newsletter Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Rimanete in contatto con il progetto Piwigo, iscrivetevi alla newsletter di Piwigo Announcement. Riceverete un\'email quando una nuova versione sarà disponibile (a volte un bug di sicurezza viene corretto, è importante saperlo e quindi aggiornare) e quando ci saranno grandi eventi del progetto. Sono solamente alcune emails all\'anno.';
+$lang['Subscribe %s'] = 'Iscrivere %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Iscrivere %s alla newsletter Piwigo Announcements';
+$lang['Purge search history'] = 'Ripulire la cronologia delle ricerche';
+$lang['Hide'] = 'Nascondere';
+$lang['Password is missing. Please enter the password.'] = 'Campo password vuoto. Prego inserire la password.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Campo conferma della password vuoto. Si prega di confermare la password scelta.';
+$lang['Allow users to edit their own comments'] = 'Autorizzare gli utenti a modificare i propri commenti';
+$lang['Allow users to delete their own comments'] = 'Autorizzare gli utenti a cancellare i propri commenti';
+$lang['Email administrators when a comment is modified'] = 'Inviare email agli amministratori quando un commento viene modificato';
+$lang['Email administrators when a comment is deleted'] = 'Inviare email agli amministratori quando un commento viene cancellato';
+$lang['Cannot delete the old permalink !'] = 'Non è possibile cancellare il vecchio permalink!';
+$lang['Hit'] = 'Punteggio';
+$lang['Tools'] = 'Tools';
+$lang['Photos'] = 'Foto';
+$lang['Themes'] = 'Temi';
+$lang['Instructions to use Piwigo'] = 'Istruzioni per l\'uso di Piwigo';
+$lang['Installed Themes'] = 'Temi installati';
+$lang['Add New Theme'] = 'Aggiungere un tema';
+$lang['Forbid this theme to users'] = 'Vietare questo tema agli utenti';
+$lang['Set as default theme for unregistered and new users'] = 'Tema predefinito per gli ospiti e i nuovi utenti';
+$lang['unknown'] = 'sconosciuto';
+$lang['Upload Photos'] = 'Aggiungere foto';
+$lang['Drop into album'] = 'Seleziona un album';
+$lang['+ Add an upload box'] = '+ Aggiungere un altro campo di upload';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Creare la directory "%s" nella radice della vostra installazione Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dare i permessi in scrittura (chmod 777) alla directory "%s" nella radice della vostra installazione Piwigo';
+$lang['existing album'] = 'album esistente';
+$lang['create a new album'] = 'creare un nuovo album';
+$lang['Album name'] = 'Nome dell\'album';
+$lang['Album "%s" has been added'] = 'L\'Album "%s" è stato aggiunto';
+$lang['Uploaded Photos'] = 'Foto aggiunte ';
+$lang['%d photos uploaded'] = '%d foto aggiunte';
+$lang['Privacy level set to "%s"'] = 'Livello di privacy "%s"';
+$lang['Album "%s" now contains %d photos'] = 'L\'Album "%s" contiene adesso %d foto';
+$lang['Manage this set of %d photos'] = 'Gestire questo set di %d foto';
+$lang['Select files'] = 'Scegliere i file';
+$lang['Everybody'] = 'Tutti';
+$lang['Who can see these photos?'] = 'Chi può vedere queste foto?';
+$lang['Who can see this photo?'] = 'Chi può vedere questa foto?';
+$lang['Settings'] = 'Configurazione';
+$lang['Resize'] = 'Ridimensionare';
+$lang['Maximum width'] = 'Larghezza massima';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height'] = 'Altezza massima';
+$lang['Image Quality'] = 'Qualità dell\'immagine';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Save Settings'] = 'Salvare impostazioni';
+$lang['Your configuration settings are saved'] = 'La vostra configurazione è stata registrata';
+$lang['Active Themes'] = 'Temi attivati';
+$lang['Add write access to the "%s" directory'] = 'Aggiungere l\'accesso in scrittura per la directory "%s"';
+$lang['Administration Home'] = 'Home Amministrazione';
+$lang['Change Admin Colors'] = 'Modificare i colori dell\'amministrazione';
+$lang['Delete this theme'] = 'Cancellare questo tema';
+$lang['Directory does not exist'] = 'La directory non esiste';
+$lang['Download,'] = 'Scaricare,';
+$lang['FTP + Synchronization'] = 'FTP + Sincronizzazione';
+$lang['Get Support on Piwigo Forum'] = 'Ottenere assistenza sul forum di Piwigo';
+$lang['Help Me'] = 'Aiuto';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Non è stato possibile attivare questo tema, manca il tema principale (superiore): %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Impossibile cancellare questo tema. Altri temi dipendono da esso: %s';
+$lang['Inactive Themes'] = 'Temi disattivati';
+$lang['Install on your computer,'] = 'Installare sul vostro computer,';
+$lang['Make this theme available to users'] = 'Rendere questo tema disponibile agli utenti';
+$lang['Page end'] = 'Fine pagina';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = 'Leggere la documentazione di Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Avviare pLoader e aggiungere le vostre foto.';
+$lang['Switch to clear or dark colors for administration'] = 'Scegliere il colore chiaro o scuro per l\'amministrazione';
+$lang['Theme has been successfully installed'] = 'Il tema è stato installato con successo';
+$lang['Visit Gallery'] = 'Visitare la galleria';
+$lang['Visit Piwigo project website'] = 'Visitare il sito web del progetto Piwigo';
+$lang['Guest Settings'] = 'Parametri ospite';
+$lang['Main Page'] = 'Pagina principale';
+$lang['Photo Page'] = 'Pagina della foto';
+$lang['Activate Navigation Bar'] = 'Attivare barra di navigazione';
+$lang['Activate Navigation Thumbnails'] = 'Attivare le miniature di navigazione';
+$lang['Activate icon "%s"'] = 'Attivare l\'icona "%s"';
+$lang['Photo Properties'] = 'Proprietà foto';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader sta per <em>Piwigo Uploader</em>. Dal vostro computer, pLoader prepara le vostre foto e le trasferisce verso la vostra galleria foto Piwigo.';
+$lang['Languages'] = 'Lingue';
+$lang['Installed Languages'] = 'Lingue installate';
+$lang['Add New Language'] = 'Aggiungere una lingua';
+$lang['Language has been successfully installed'] = 'La lingua è stata installata con successo';
+$lang['Allow user customization'] = 'Permettere la personalizzazione della visualizzazione';
+$lang['Select:'] = 'Selezionare:';
+$lang['None'] = 'Niente';
+$lang['Invert'] = 'Invertire';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Non è possibile disattivare questo tema, ci deve essere almeno un tema attivo.';
+$lang['Webmaster status is required.'] = 'Dovete avere lo stato di webmaster.';
+$lang['Bound Theme'] = 'Tema legato';
+$lang['Allow rating'] = 'Autorizzare le votazioni';
+$lang['Select at least one comment'] = 'Selezionare almeno un commento';
+$lang['Active Plugins'] = 'Plugins attivati';
+$lang['Inactive Plugins'] = 'Plugins disabilitati';
+$lang['Missing Plugins'] = 'Plugins mancanti';
+$lang['Uninstalled Plugins'] = 'Plugins disinstallati';
+$lang['By %s'] = 'Da %s';
+$lang['Visit plugin site'] = 'Visitate il sito del plugin';
+$lang['Active Languages'] = 'Lingue attivate';
+$lang['Delete this language'] = 'Cancellare questa lingua';
+$lang['Forbid this language to users'] = 'Vietare questa lingua agli utenti';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossibile disattivare questa lingua, innanzitutto impostare un\'altra lingua come predefinita.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossibile disattivare questa lingua. Deve essere attiva almeno una lingua.';
+$lang['Inactive Languages'] = 'Lingue disattivate';
+$lang['Make this language available to users'] = 'Rendere questa lingua disponibile agli utenti';
+$lang['Set as default language for unregistered and new users'] = 'Lingua predefinita per gli ospiti e nuovi utenti';
+$lang['Add Photos'] = 'Aggiungere delle foto';
+$lang['Miscellaneous'] = 'Informazioni';
+$lang['The following tag was deleted'] = 'Il tag seguente è stato cancellato';
+$lang['Virtual Links'] = 'Collegamenti virtuali';
+$lang['There is no other language available.'] = 'Non ci sono altre lingue disponibili.';
+$lang['There is no other plugin available.'] = 'Non ci sono altri plugin disponibili.';
+$lang['There is no other theme available.'] = 'Non ci sono altri temi disponibili.';
+$lang['delete'] = 'cancellare';
+$lang['Add another set of photos'] = 'Aggiungi un altro set di foto';
+$lang['Order of menubar items has been updated successfully.'] = 'L\'ordine degli elementi della barra dei menu è stato aggiornato con successo.';
+$lang['This theme was not designed to be directly activated'] = 'Questo tema non è stato progettato per essere attivato direttamente';
+$lang['Pending Comments'] = 'Commenti in attesa';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Nel vostro file php.ini, la variabile upload_max_filesize (%sB) è più grande di post_max_size (%sB), dovete modificare questa impostazione';
+$lang['Exif extension not available, admin should disable exif use'] = 'L\'estensione Exif non è disponibile, un amministratore deve disabilitare l\'uso dei metadati exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Il peso del file caricato supera il valore upload_max_filesize nel file php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Il peso totale dei file trasferiti supera il valore di post_max_size nel file php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Il peso del file caricato supera il valore di MAX_FILE_SIZE definito nel modulo HTML';
+$lang['The uploaded file was only partially uploaded'] = 'Il file è stato caricato solo parzialmente';
+$lang['No file was uploaded'] = 'Nessun file è stato caricato';
+$lang['Missing a temporary folder'] = 'Impossibile trovare la directory temporanea';
+$lang['Failed to write file to disk'] = 'Non è stato possibile scrivere il file sul disco';
+$lang['File upload stopped by extension'] = 'Il caricamento del file è stato fermato da un estensione';
+$lang['Unknown upload error'] = 'Errore sconosciuto durante il caricamento';
+$lang['Error on file "%s" : %s'] = 'Errore sul file "%s" : %s';
+$lang['Menu Management'] = 'Menu';
+$lang['automatic order'] = 'ordinamento automatico';
+$lang['manual order'] = 'ordinamento manuale';
+$lang['Albums automatically sorted'] = 'Album ordinati automaticamente';
+$lang['The original maximum width must be a number between %d and %d'] = 'La larghezza massima per ridimensionare la foto originale deve essere un numero compreso tra %d e %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'L\'altezza massima per ridimensionare la foto originale deve essere un numero compreso tra %d e %d';
+$lang['The original image quality must be a number between %d and %d'] = 'La qualità dell\'immagine per ridimensionare la foto originale deve essere un numero compreso tra %d e %d';
+$lang['Batch Manager'] = 'Gestione dei lotti';
+$lang['include child albums'] = 'includere gli album dipendenti';
+$lang['Selection'] = 'Selezione';
+$lang['Action'] = 'Azione';
+$lang['Set author'] = 'Definire l\'autore';
+$lang['Set title'] = 'Impostare il titolo';
+$lang['Set creation date'] = 'Impostare la data di creazione';
+$lang['Apply action'] = 'Applicare l\'azione';
+$lang['on the %d selected photos'] = 'sulle %d foto selezionate';
+$lang['%d of %d photos selected'] = '%d foto su %d sono selezionate';
+$lang['No photo selected, %d photos in current set'] = 'Nessuna foto selezionata tra le %d foto del set';
+$lang['All %d photos are selected'] = 'Tutte le %d foto del lotto sono selezionate';
+$lang['remove this filter'] = 'cancellare questo filtro';
+$lang['Duplicates'] = 'Duplicati';
+$lang['Add a filter'] = 'Aggiungere un filtro';
+$lang['Remove all filters'] = 'Cancellare tutti i filtri';
+$lang['Refresh photo set'] = 'Aggiornare il set di foto';
+$lang['The whole page'] = 'Tutta la pagina';
+$lang['The whole set'] = 'L\'intero set';
+$lang['No photo in the current set.'] = 'Nessuna foto nel set corrente.';
+$lang['No photo selected, no action possible.'] = 'Nessuna foto selezionata, nessuna azione possibile.';
+$lang['Choose an action'] = 'Scegliere un\'azione';
+$lang['remove author'] = 'cancellare l\'autore';
+$lang['Type here the author name'] = 'Inserire qui il nome dell\'autore';
+$lang['remove title'] = 'cancellare il titolo';
+$lang['Type here the title'] = 'Inserire qui il titolo';
+$lang['remove creation date'] = 'cancellare la data di creazione';
+$lang['Week starts on'] = 'La settimana comincia il';
+$lang['You have %d orphan tags: %s.'] = 'Avete %d tags orfani: %s.';
+$lang['Delete orphan tags'] = 'Cancellare i tags orfani';
+$lang['delete photo'] = 'cancellare la foto';
+$lang['Remove from caddie'] = 'Rimuovere dal cestino';
+$lang['Themes which need upgrade'] = 'Temi che necessitano un aggiornamento';
+$lang['Languages which need upgrade'] = 'Lingue che necessitano di un aggiornamento ';
+$lang['All themes are up to date.'] = 'Tutti i temi sono aggiornati.';
+$lang['All plugins are up to date.'] = 'Tutti i plug-in sono aggiornati.';
+$lang['All languages are up to date.'] = 'Tutte le lingue sono aggiornate.';
+$lang['Visit theme site'] = 'Visitare il sito del tema';
+$lang['Visit language site'] = 'Visitare il sito della lingua';
+$lang['New Version'] = 'Nuova versione';
+$lang['Obsolete Plugins'] = 'Plugins obsoleti';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENZIONE! Questo plugin non sembra essere compatibile con questa versione di Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Volete attivarlo comunque?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'QUESTO PLUGIN FA ORMAI PARTE DEL CORE DI PIWIGO! DISINSTALLATELO ORA!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRORE: QUESTO PLUGIN E\' MANCANTE MA TUTTORA INSTALLATO! DISINSTALLATELO ORA.';
+$lang['display'] = 'visualizzare';
+$lang['Restore'] = 'Ripristinare';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Reimpostare la configurazione predefinita? Perderete tutte le vostre impostazioni!';
+$lang['Thumbnails generation in progress...'] = 'Rigenerazione delle miniature in corso...';
+$lang['Photos generation in progress...'] = 'Rigenerazione delle foto in corso...';
+$lang['%s photos have been regenerated'] = '%s foto sono state rigenerate';
+$lang['%s photos can not be regenerated'] = '%s foto non possono essere rigenerate';
+$lang['Updates'] = 'Aggiornamento';
+$lang['Update in progress... Please wait.'] = 'Aggiornamento in corso... Attendere prego.';
+$lang['Ignore this update'] = 'Ignorare questo aggiornamento';
+$lang['Reset ignored updates'] = 'Ripristinare gli aggiornamenti ignorati';
+$lang['Update All'] = 'Aggiornare tutto';
+$lang['ERROR'] = 'ERRORE';
+$lang['Update Complete'] = 'Aggiornamento completato';
+$lang['Piwigo Update'] = 'Aggiornamento di Piwigo';
+$lang['Extensions Update'] = 'Aggiornamento delle estensioni';
+$lang['All extensions are up to date.'] = 'Tutte le estensioni sono aggiornate.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'I plugin seguenti potrebbero non essere compatibili con la nuova versione di Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'I temi seguenti potrebbero non essere compatibili con la nuova versione di Piwigo:';
+$lang['I decide to update anyway'] = 'Decido comunque di aggiornare';
+$lang['Update to Piwigo %s'] = 'Aggiornare a Piwigo %s';
+$lang['Two updates are available'] = 'Due aggiornamenti sono disponibili';
+$lang['This is a minor update, with only bug corrections.'] = 'Questo è un aggiornamento minore, con solo correzioni di bug.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Questo è un aggiornamento importante, con <a href="%s">nuove e interessanti funzionalità</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Alcuni temi e plugin possono non essere ancora disponibili.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'E\' possibile aggiornare direttamente a Piwigo %s, senza passare per Piwigo %s (consigliato).';
+$lang['Save Template Directory'] = 'Salvare la template directory';
+$lang['Dump Database'] = 'Salvare il database';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Includere la cronologia (Attenzione: può essere superato il limite di memoria del server)';
+$lang['Unable to dump database.'] = 'Impossibile eseguire il salvataggio del database.';
+$lang['Some upgrades are available for extensions.'] = 'Degli aggiornamenti sono disponibili per le estensioni.';
+$lang['Please wait...'] = 'Attendere prego...';
+$lang['Ignore All'] = 'Ignorare tutto';
+$lang['Crop'] = 'Ridimenzionare';
+$lang['Width'] = 'Larghezza';
+$lang['Height'] = 'Altezza';
+$lang['Follow Orientation'] = 'Rispettare l\'orientamento';
+$lang['Graphics Library'] = 'Libreria grafica';
+$lang['Show menubar'] = 'Visualizzare il menu';
+$lang['No results'] = 'Nessun risultato';
+$lang['Type in a search term'] = 'Digitare un termine di ricerca';
+$lang['Searching...'] = 'Ricerca...';
+$lang['new'] = 'nuovo';
+$lang['Default photos order'] = 'Ordinamento predefinita delle foto';
+$lang['Activate icon "new" next to albums and pictures'] = 'Visualizzare l\'icona "nuovo" a fianco degli album e delle foto';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Non potete impostare l\'ordine predefinito delle foto perché avete un\'impostazione personalizzata nella configurazione locale.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Avete specificato <i>$conf[\'order_by\']</i> nel vostro file di configurazione locale, questo parametro è obsoleto, si prega di eliminarlo o rinominarlo in <i>$conf[\'order_by_custom\']</i> !';
+$lang['Add a criteria'] = 'Aggiungere un criterio';
+$lang['... or '] = '... oppure ';
+$lang['Create'] = 'Creare';
+$lang['Start Upload'] = 'Avviare il caricamento';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Si sta utilizzando il Flash uploader. Problemi? Provare il <a href="%s">Browser uploader</a> invece.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'State utilizzando il Browser uploader. Provate con il <a href="%s">Flash uploader</a> invece.';
+$lang['Maximum file size: %sB.'] = 'Grandezza massima dei file: %sB.';
+$lang['Allowed file types: %s.'] = 'Tipi di file autorizzati: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Risoluzione massima approssimativa: %dM pixels (sia %dx%d pixels)';
+$lang['Manage Permissions'] = 'Gestire i permessi';
+$lang['Photo %s of %s'] = 'Foto %s su %s';
+$lang['show details'] = 'mostrare i dettagli';
+$lang['hide details'] = 'nascondere i dettagli';
+$lang['Merge tags'] = 'Unire i tags';
+$lang['Select the destination tag'] = 'Selezionare il tag di destinazione';
+$lang['(this tag will be deleted)'] = '(questo tag sara cancellato)';
+$lang['Confirm merge'] = 'Confermare l\'unione';
+$lang['Merge selected tags'] = 'Unire i tags selezionati';
+$lang['No destination tag selected'] = 'Non avete selezionato il tag di destinazione';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'I tags <em>%s</em> sono stati uniti nel tag <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Selezionare almeno due tag da fuzionare';
+$lang['Average rate'] = 'Voto medio';
+$lang['Rate'] = 'Voto';
+$lang['Learn more'] = 'Per saperne di più';
+$lang['Select an album'] = 'Selezionare un album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Per impostazione predefinita, Piwigo creerà una nuova dimensione web dalla versione HD (alta definizione) della vostra foto.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se la foto HD non è disponibile e la foto dimensioni web è più grande delle dimensioni qui di seguito, allora Piwigo la considererà come una foto HD e creerà la nuova foto dimensioni web.';
+$lang['An error has occured during upgrade.'] = 'Si è verificato un\'errore durante l\'aggiornamento.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Non è stato possibile estrarre i file. Verificare i permessi dei file della vostra installazione di Piwigo.<br><a href="%s">Cliccare qui per visualizzare il rapporto d\'errore</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo non può recuperare i file d\'aggiornamento dal server';
+$lang['Last import'] = 'Ultima importazione';
+$lang['With no album'] = 'Senza album';
+$lang['With no tag'] = 'Senza tag';
+$lang['With no virtual album'] = 'Senza album virtuale';
+$lang['Predefined filter'] = 'Filtro predefinito';
+$lang['Add tags'] = 'Aggiungere i tags';
+$lang['Synchronize metadata'] = 'Sincronizzare i metadati';
+$lang['Add to caddie'] = 'Aggiungere al cestino';
+$lang['Zoom'] = 'Zoom';
+$lang['Resize after upload'] = 'Ridimensionare dopo il caricamento';
+$lang['Original Size'] = 'Dimensioni originali';
+$lang['Send connection settings by email'] = 'Inviare gli ID via email';
+$lang['Activate comments'] = 'Attivare i commenti';
+$lang['Default comments order'] = 'Ordinamento predefinito dei commenti';
+$lang['A locked gallery is only visible to administrators'] = 'Una galleria bloccata è visibile solo dagli amministratori';
+$lang['Unlock gallery'] = 'Sbloccare la galleria';
+$lang['Gallery unlocked'] = 'Galleria sbloccata';
+$lang['Notify administrators when a comment is'] = 'Notificare agli amministratori quando un commento viene';
+$lang['modified'] = 'modificato';
+$lang['deleted'] = 'cancellato';
+$lang['pending validation'] = 'in attesa di convalida';
+$lang['Save visits in history for'] = 'Salvare storia delle visite per ';
+$lang['simple visitors'] = 'singoli visitatori';
+$lang['registered users'] = 'utenti registrati';
+$lang['administrators'] = 'amministratori';
+$lang['This album contains %d photos, added on %s.'] = 'Questo album contiene %d foto, aggiunte il %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Questo album contiene %d foto, aggiunte tra il %s e il %s.';
+$lang['This album contains no photo.'] = 'Questo album non contiene nessuna foto.';
+$lang['%s has been successfully updated.'] = '%s è stato aggiornato con successo.';
+$lang['Move to album'] = 'Spostare verso l\'album';
+$lang['You can activate only one mobile theme.'] = 'Potete attivare un solo tema mobile.';
+$lang['Center of interest'] = 'Centro d\'interesse';
+$lang['Not cropped correctly?'] = 'La foto non è ritagliata correttamente?';
+$lang['Photo name'] = 'Nome foto';
+$lang['Automatic sort order'] = 'Ordinamento automatico';
+$lang['apply automatic sort order'] = 'applicare un criterio di ordinamento automatico';
+$lang['Save manual order'] = 'Salvare l\'ordinamento manuale';
+$lang['cancel manual order'] = 'cancellare l\'ordinamento manuale';
+$lang['Cancel'] = 'Cancellare';
+$lang['List'] = 'Lista';
+$lang['Web Form'] = 'Modulo web';
+$lang['Applications'] = 'Applicazioni';
+$lang['Available versions for'] = 'Versioni disponibili per';
+$lang['Available on'] = 'Disponibile su';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo per iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'applicazione <em>Piwigo per iOS</em> permette di collegarti alla tua galleria Piwigo dal tuo iPhone, iPad o iPod Touch, creando degli album e caricando le immagini.';
+$lang['Piwigo for Android'] = 'Piwigo per Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'applicazione <em>Piwigo per Android</em> permette di collegarti alla tua galleria di Piwigo dal tuo cellulare o tablet Android, creando degli album e caricando le immagini.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Piwigo per Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom è un software fotografico specializzato per gestire grandi quantità di immagini ed eseguirne la post-produzione.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Il plugin di Piwigo permette di esportare e sincronizzare le immagini da Lightroom direttamente alla tua galleria di Piwigo.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin Piwigo per Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell è un organizzatore di immagini digitali open-source che funziona sotto Linux. E\' il gestore di immagini predefinito di Ubuntu e Fedora.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Su Linux, semplicemente installa il pacchetto Shotwell e attiva l\'opzione di pubblicazione su Piwigo.';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin Piwigo per digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam è un avanzato software di gestione foto digitali gratuito per Linux, Windows e MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam è stato progettato per i fotografi che vogliono visualizzare, gestire, modificare, migliorare, organizzare, tag e condividere foto.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Per esportare le immagini da digiKam a Piwigo, semplicemente installa digiKam e il plugin Kipi.';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin Piwigo per iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto è il gestore d\'immagini predefinito su MacOSX. Il plugin di Piwigo permette di creare nuovi album e esportare immagini direttamente da iPhoto sulla Galleria di Piwigo.';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin Piwigo per Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture è un potente programma per rifinire le immagini e gestire grandi librerie sotto Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture è realizzato per fotografi professionisti con la semplicità di iPhoto.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Il plugin di esportazione Piwigo permette di creare album ed esportare le immagini.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client per Android) è un client open-source (GPL v3) per Piwigo sotto piattaforma Android.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Le caratteristiche includono la navigazione nella galleria, la creazione di album e il caricamento di immagini';
+$lang['any visitor can see this album'] = 'qualsiasi visitatore può vedere questo album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'i visitatori devono registrarsi ed avere i permessi adeguati per vedere questo album';
+$lang['Groups and users'] = 'Gruppi e utenti';
+$lang['Permission granted for groups'] = 'Permessi ammessi ai gruppi';
+$lang['Select groups...'] = 'Selezione gruppi...';
+$lang['There is no group in this gallery.'] = 'Non c\'è nessun gruppo in questa galleria.';
+$lang['Permission granted for users'] = 'Permessi ammessi agli utenti';
+$lang['Select users...'] = 'Selezione utenti...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utenti hanno automaticamente i permessi in quanto appartengono ad un gruppo ammesso';
+$lang['include photos with lower privacy level'] = 'includere le foto con un livello di confidenzialità inferiore';
+$lang['No group is permitted to see this private album'] = 'A nessun gruppo è permesso visualizzare questo album privato';
+$lang['Permission management'] = 'Gestione permessi';
+$lang['Photo sizes with crop'] = 'Dimensione immagini con ritaglio';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Il centro di interesse è la zona più significativa nella foto.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Per le foto con ritaglio, come "quadrato", Piwigo farà il meglio possibile per includere il centro d\'interesse.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Per impostazione predefinita, il centro d\'interesse è posizionato nel mezzo della foto.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleziona una zona con il mouse in modo da definire un nuovo centro d\'interesse.';
+$lang['custom'] = 'Personalizzato';
+$lang['Delete multiple size images'] = 'Elimina immagini con dimensioni differenti';
+$lang['Generate multiple size images'] = 'Genera immagini con dimensioni diverse';
+$lang['add a new watermark'] = 'Aggiungi un nuovo watermark';
+$lang['Apply watermark if height is bigger than'] = 'Aggiungi watermark se l\'altezza è maggiore di';
+$lang['Apply watermark if width is bigger than'] = 'Aggiungi watermark se la larghezza è maggiore di';
+$lang['bottom left corner'] = 'angolo in basso a sinistra';
+$lang['bottom right corner'] = 'angolo in basso a destra';
+$lang['middle'] = 'centro';
+$lang['Opacity'] = 'Opacità';
+$lang['Select a file'] = 'Scegli un file';
+$lang['top left corner'] = 'angolo in alto a sinistra';
+$lang['top right corner'] = 'angolo in alto a destra';
+$lang['X Position'] = 'Posizione X';
+$lang['X Repeat'] = 'Ripetizione X';
+$lang['Y Position'] = 'Posizione Y';
+$lang['Multiple Size'] = 'Dimensioni multiple';
+$lang['Watermark'] = 'Watermark';
+$lang['Original file : %s'] = 'File originale: %s';
+$lang['Posted %s on %s'] = 'Postato %s il %s';
+$lang['Added by %s'] = 'Aggiunto da %s';
+$lang['Visited %d times'] = 'Visitato %d volte';
+$lang['Numeric identifier : %d'] = 'Numero identificativo: %d';
+$lang['%s ago'] = '%s fa';
+$lang['%s in the future'] = '%s nel futuro';
+$lang['Rated %d times, score : %.2f'] = 'Votato %d volte, punteggio: %.2f';
+$lang['%d year'] = '%d anno';
+$lang['%d years'] = '%d anni';
+$lang['%d month'] = '%d mese';
+$lang['%d months'] = '%d mesi';
+$lang['%d week'] = '%d settimana';
+$lang['%d weeks'] = '%d settimane';
+$lang['%d day'] = '%d giorno';
+$lang['%d days'] = '%d giorni';
+$lang['%d hour'] = '%d ora';
+$lang['%d hours'] = '%d ore';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minuti';
+$lang['%d second'] = '%d secondo';
+$lang['%d seconds'] = '%d secondi';
+$lang['Sharpen'] = 'Evidenziare';
+$lang['Edit photo'] = 'Modificare foto';
+$lang['create a new site'] = 'creare un nuovo sito';
+$lang['No order field selected'] = 'Nessun criterio di ordinamento selezionato';
+$lang['Name of the duplicate'] = 'Nome del duplicato';
+$lang['Source tag'] = 'Sorgente tag';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Il tag "%s" è ormai una copia di "%s"';
+$lang['Duplicate selected tags'] = 'Duplicare i tags selezionati';
+$lang['Minimum height'] = 'Altezza minima';
+$lang['Minimum width'] = 'Larghezza minima';
+$lang['Portrait'] = 'Ritratto';
+$lang['Landscape'] = 'Paesaggio';
+$lang['Panorama'] = 'Panorama';
+$lang['Manage photos'] = 'Gestire foto';
+$lang['View in gallery'] = 'Mostra nella galleria';
+$lang['Number of albums per page'] = 'Numero d\'album per pagina';
+$lang['Ratio'] = 'Rapporto';
+$lang['between %d and %d pixels'] = 'tra %d e %d pixels';
+$lang['between %.2f and %.2f'] = 'tra %.2f e %.2f';
+$lang['Manage the members'] = 'Gestire membri';
+$lang['Type here the name of the new group'] = 'Digita quì il nome del nuovo gruppo';
+$lang['No group selected, no action possible.'] = 'Nessun gruppo selezionato, nessuna azione possibile.';
+$lang['Please select at least two groups'] = 'Seleziona almeno due gruppi';
+$lang['Duplicate'] = 'Duplicare';
+$lang['Merge selected groups'] = 'Unire i gruppi selezionati';
+$lang['This group will be unset to default'] = 'Questo gruppo non sarà più utilizzato per impostazione predefinita';
+$lang['This group will be set to default'] = 'Questo gruppo sarà impostato sul valore predefinito';
+$lang['No members to manage'] = 'Nessun membro da gestire';
+$lang['Rename'] = 'Rinomina';
+$lang['Purge user cache'] = 'Svuotare la cache utente';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Le dimensioni dell\'immagine saranno ridotte a %dx%d pixel.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Ridimensionamento dopo l\'upload disattivato a causa dell\'uso di GD come libreria grafica';
+$lang['Select at least one tag'] = 'Selezionare almeno un tag';
+$lang['Basic settings'] = 'Impostazioni base';
+$lang['General'] = 'Generale';
+$lang['Mail theme'] = 'Tema email';
+$lang['on the %d selected users'] = 'su %d utenti selezionati';
+$lang['Showing %s to %s of %s users'] = 'Mostra %s a %s di %s utenti';
+$lang['Registered on %s, %s.'] = 'Registrati su %s, %s.';
+$lang['No user selected of %d users'] = 'Nessun utente selezionato di %d utenti';
+$lang['User %s updated'] = 'Utente %s aggiornato';
+$lang['User %s added'] = 'Utente %s aggiunto';
+$lang['Show %s users'] = 'Mostra %s utenti';
+$lang['Users modified'] = 'Utenti modificati';
+$lang['Update user'] = 'Aggiorna utente';
+$lang['Password updated'] = 'Password aggiornata';
+$lang['No user selected, no action possible.'] = 'Nessun utente selezionato, nessuna azione è possibile.';
+$lang['No matching user found'] = 'Nessun utente corrispondente trovato';
+$lang['Loading...'] = 'Caricamento...';
+$lang['Last visit on %s, %s.'] = 'Ultima visita su %s, %s.';
+$lang['All %d users are selected'] = 'Tutti %d utenti sono selezionati';
+$lang['(filtered from %s total users)'] = '(filtrato da %s utenti totali)';
+$lang['%d of %d users selected'] = '%d di %d utenti selezionati';
+$lang['Change username'] = 'Cambia nome utente';
+$lang['Change password'] = 'Cambia password';
+?>
Index: /tags/2.6.0RC1/language/it_IT/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Italiano [IT]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=424
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Italiano';
+$lang_info['country'] = 'Italia';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'it';
+$lang_info['zero_plural'] = false;
+
+$lang['%d album updated'] = '%d album aggiornato';
+$lang['%d albums updated'] = '%d album aggiornati';
+$lang['%d comment to validate'] = '%d commento da approvare';
+$lang['%d comment'] = '%d commento';
+$lang['%d comments to validate'] = '%d commenti da approvare';
+$lang['%d comments'] = '%d commenti';
+$lang['%d hit'] = 'vista %d';
+$lang['%d hits'] = 'viste %d';
+$lang['%d Kb'] = '%d KB';
+$lang['%d new comment'] = '%d nuovo commento';
+$lang['%d new comments'] = '%d nuovi commenti';
+$lang['%d new photo'] = '%d nuova foto';
+$lang['%d new photos'] = '%d nuove foto';
+$lang['%d new user'] = '%d nuovo utente';
+$lang['%d new users'] = '%d nuovi utenti';
+$lang['%d photo is also linked to current tags'] = '%d foto è anche collegata ai tag correnti';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos are also linked to current tags'] = '%d foto sono anche collegate ai tag correnti';
+$lang['%d photos'] = '%d foto';
+$lang['%d rates'] = '%d voti';
+$lang['(!) This comment requires validation'] = '(!) Questo commento deve essere approvato';
+$lang['... or browse your empty gallery'] = '... o navigare nella vostra galleria vuota';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... oppure disattivare questo messaggio, voglio riuscirci da solo';
+$lang['A comment on your site'] = 'Un commento sul tuo sito';
+$lang['About Piwigo'] = 'Informazioni su Piwigo';
+$lang['About'] = 'Informazioni su';
+$lang['Accelerate diaporama speed'] = 'Accelerare la velocità proiezione';
+$lang['Add a comment'] = 'Aggiungi un commento';
+$lang['add this photo to your favorites'] = 'Aggiungi la pagina ai tuoi preferiti';
+$lang['Admin: %s'] = 'Amministratore: %s';
+$lang['Administration'] = 'Amministrazione';
+$lang['Album results for'] = 'Risultati degli album per';
+$lang['Album'] = 'Album';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Albums'] = 'Album';
+$lang['All tags'] = 'Tutti i tags';
+$lang['All'] = 'Tutto';
+$lang['all'] = 'tutto';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un amministratore deve autorizzare il tuo commento affinchè sia visibile.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistema di sicurezza anti-flood: attendere prima di aggiungere un nuovo commento';
+$lang['Any tag'] = 'Qualsiasi tag';
+$lang['Are you sure?'] = 'Sei sicuro?';
+$lang['ascending'] = 'ascendente';
+$lang['At least one listed rule must be satisfied.'] = 'Almeno una delle regole elencate deve essere soddisfatta.';
+$lang['Author'] = 'Autore';
+$lang['author(s) : %s'] = 'autore(i): %s';
+$lang['Author: %s'] = 'Autore: %s';
+$lang['Auto login'] = 'Conessione automatica';
+$lang['available for administrators only'] = 'disponibile solo per gli amministratori';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Lo stato dell\'utente "guest" non è conforme, viene usato lo stato predefinito. Per favore avvisa il webmaster.';
+$lang['Best rated'] = 'I più votati';
+$lang['Browser: %s'] = 'Browser: %s';
+$lang['Calendar'] = 'Calendario';
+$lang['Change my password'] = 'Cambiare la mia password';
+$lang['Check your email for the confirmation link'] = 'Controllare la posta elettronica per trovare il link di conferma';
+$lang['chronology_monthly_calendar'] = 'Calendario mensile';
+$lang['chronology_monthly_list'] = 'Lista mensile';
+$lang['chronology_weekly_list'] = 'Lista settimanale';
+$lang['Click here if your browser does not automatically forward you'] = 'Cliccare qui se non siete reindirizzati automaticamente';
+$lang['Click on the photo to see it in high definition'] = 'Cliccare sulla foto per vederla in alta definizione';
+$lang['Close this window'] = 'Chiudi questa finestra';
+$lang['cloud'] = 'nuvola';
+$lang['Comment by %s'] = 'Commento per %s';
+$lang['comment date'] = 'data del commento';
+$lang['Comment'] = 'Commento';
+$lang['Comment: %s'] = 'Commento: %s';
+$lang['Comments'] = 'Commenti';
+$lang['Complete RSS feed (photos, comments)'] = 'Feed RSS completo (foto, commenti)';
+$lang['Confirm Password'] = 'Conferma Password';
+$lang['Connected user: %s'] = 'Utente connesso : %s';
+$lang['Connection settings'] = 'Parametri di connessione';
+$lang['Contact webmaster'] = 'Contattare il webmaster';
+$lang['Contact'] = 'Contattare';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'I cookies sono bloccati o non supportati dal vostro browser. Dovete attivare i cookie per connettervi.';
+$lang['Create a new account'] = 'Crea un nuovo account';
+$lang['created after %s (%s)'] = 'creata dopo il %s (%s)';
+$lang['created before %s (%s)'] = 'creata prima del %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creata tra il %s (%s) e il %s (%s)';
+$lang['created on %s'] = 'creata il %s';
+$lang['Created on'] = 'Creato il';
+$lang['Creation date'] = 'Data di creazione';
+$lang['Current password is wrong'] = 'La password non è corretta';
+$lang['customize the appareance of the gallery'] = 'personalizzare l\'aspetto della galleria';
+$lang['Customize'] = 'Personalizza';
+$lang['Date'] = 'Data';
+$lang['day'][0] = 'Domenica';
+$lang['day'][1] = 'Lunedì';
+$lang['day'][2] = 'Martedì';
+$lang['day'][3] = 'Mercoledì';
+$lang['day'][4] = 'Giovedì';
+$lang['day'][5] = 'Venerdì';
+$lang['day'][6] = 'Sabato';
+$lang['Default'] = 'Predefinito';
+$lang['delete all photos from your favorites'] = 'cancellare tutte le foto dai vostri favoriti';
+$lang['delete this photo from your favorites'] = 'Cancellare questa foto dalle vostre preferite';
+$lang['Delete'] = 'Cancellare';
+$lang['descending'] = 'discendente';
+$lang['Dimensions'] = 'Dimensioni';
+$lang['display a calendar by creation date'] = 'mostra il calendario per data di creazione';
+$lang['display a calendar by posted date'] = 'mostra il calendario per data d\'inserimento nella galleria';
+$lang['display a set of random photos'] = 'mostra un set di foto in modo casuale';
+$lang['display all photos in all sub-albums'] = 'mostrare tutte le foto in tutti gli album e sub-album';
+$lang['display available tags'] = 'mostra i tags disponibili';
+$lang['display best rated photos'] = 'mostra le foto le più votate';
+$lang['display each day with photos, month per month'] = 'visualizzare ogni giorno con foto, mese per mese';
+$lang['display last user comments'] = 'mostra gli ultimi commenti degli utenti';
+$lang['display most recent photos'] = 'mostra le foto più recenti';
+$lang['display most visited photos'] = 'mostra le foto le più viste';
+$lang['display only recently posted photos'] = 'mostra solo le foto pubblicate di recente';
+$lang['display photos linked to this tag'] = 'mostrare le foto connesse solo a questo tag';
+$lang['display recently updated albums'] = 'mostrare gli album caricati di recente';
+$lang['display this album'] = 'Mostra le foto alle radici dell\'album';
+$lang['display your favorites photos'] = 'mostra le mie foto preferite';
+$lang['Display'] = 'Visualizzazione';
+$lang['Download this file'] = 'Scarica questo file';
+$lang['Download'] = 'Scarica';
+$lang['Each listed rule must be satisfied.'] = 'Tutti i criteri devono essere soddisfatti';
+$lang['Edit a comment'] = 'Modifica un commento';
+$lang['edit'] = 'modificare';
+$lang['Edit'] = 'Modifica';
+$lang['Email address is missing. Please specify an email address.'] = 'Manca l\'indirizzo Email. Per favore specificane uno.';
+$lang['Email address'] = 'Indirizzo email';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Ricerca incompleta. Nessun criterio di ricerca inserito.';
+$lang['End-Date'] = 'Data di fine';
+$lang['Enter your new password below.'] = 'Immettere la nuova password qui sotto.';
+$lang['Enter your personnal informations'] = 'Inserire le informazioni personali';
+$lang['Error sending email'] = 'Errore durante l\'invio dell\'email';
+$lang['excluded'] = 'escluso';
+$lang['EXIF Metadata'] = 'Metadata EXIF';
+$lang['Expand all albums'] = 'Espandere tutti gli album';
+$lang['Favorites'] = 'Preferite';
+$lang['File name'] = 'Nome file';
+$lang['File'] = 'File';
+$lang['Filesize'] = 'Dimensione';
+$lang['Filter and display'] = 'Filtra e visualizza';
+$lang['Filter'] = 'Filtro';
+$lang['First'] = 'Primo';
+$lang['Forgot your password?'] = 'Password dimenticata?';
+$lang['from %s to %s'] = 'da %s a %s';
+$lang['Go through the gallery as a visitor'] = 'Visita la galleria come ospite';
+$lang['group by letters'] = 'ragruppare per lettera';
+$lang['guest'] = 'ospite';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Ciao %s, la tua galleria fotografica Piwigo è vuota!';
+$lang['Hello'] = 'Ciao';
+$lang['Hello %s,'] = 'Ciao %s,';
+$lang['Help'] = 'Aiuto';
+$lang['Home'] = 'Home';
+$lang['html tags are not allowed in login'] = 'i tag HTML non sono ammessi nel login';
+$lang['I want to add photos'] = 'Voglio aggiungere delle foto';
+$lang['Identification'] = 'Identificazione';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Se si tratta di un\'errore, ignorare questa email e la richiesta non sarà presa in considerazione.';
+$lang['in %d sub-album'] = 'in %d sub-album';
+$lang['in %d sub-albums'] = 'in %d sub-album';
+$lang['in this album'] = 'In questo album';
+$lang['included'] = 'incluso';
+$lang['Invalid key'] = 'Chiave non valida';
+$lang['Invalid password!'] = 'Password non valida!';
+$lang['Invalid username or email'] = 'Nome utente o indirizzo email non valido';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'Metadata IPTC';
+$lang['Keyword'] = 'Parola chiave';
+$lang['Kind of date'] = 'Tipo di data';
+$lang['Language'] = 'Lingua';
+$lang['last %d days'] = 'ultimi %d giorni';
+$lang['Last'] = 'Ultima';
+$lang['letters'] = 'lettere';
+$lang['Links'] = 'Links';
+$lang['login mustn\'t end with a space character'] = 'il nome utente non deve finire con uno spazio';
+$lang['login mustn\'t start with a space character'] = 'il nome utente non deve iniziare con uno spazio';
+$lang['Login'] = 'Connessione';
+$lang['Logout'] = 'Logout';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'l\'indirizzo email deve essere del tipo xxx@yyy.eee (ad esempio: cippalippa@libero.rio)';
+$lang['Manage this user comment: %s'] = 'Gestire questo commento: %s';
+$lang['Menu'] = 'Menu';
+$lang['month'][10] = 'Ottobre';
+$lang['month'][11] = 'Novembre';
+$lang['month'][12] = 'Dicembre';
+$lang['month'][1] = 'Gennaio';
+$lang['month'][2] = 'Febbraio';
+$lang['month'][3] = 'Marzo';
+$lang['month'][4] = 'Aprile';
+$lang['month'][5] = 'Maggio';
+$lang['month'][6] = 'Giugno';
+$lang['month'][7] = 'Luglio';
+$lang['month'][8] = 'Agosto';
+$lang['month'][9] = 'Settembre';
+$lang['Most visited'] = 'Le più viste';
+$lang['N/A'] = 'Non disponibile';
+$lang['New on %s'] = 'Nuovo il %s';
+$lang['New password'] = 'Nuova password';
+$lang['Next'] = 'Prossima';
+$lang['no rate'] = 'nessun voto';
+$lang['No'] = 'No';
+$lang['Not repeat the slideshow'] = 'Non ricominciare proiezione';
+$lang['Notification'] = 'Notifiche RSS';
+$lang['Number of items'] = 'Numero di elementi';
+$lang['Number of photos per page'] = 'Numero di miniature per pagina';
+$lang['obligatory'] = 'obbligatorio';
+$lang['Original dimensions'] = 'Dimensioni originali';
+$lang['Page generated in'] = 'Pagina generata in';
+$lang['Password forgotten'] = 'Password dimenticata';
+$lang['Password reset is not allowed for this user'] = 'La reimpostazione della password non è consentita per questo utente';
+$lang['Password Reset'] = 'Reimposta Password';
+$lang['password updated'] = 'password aggiornata';
+$lang['Password'] = 'Password';
+$lang['Pause of slideshow'] = 'Pausa proiezione';
+$lang['photo'] = 'foto';
+$lang['Photos only RSS feed'] = 'Feed RSS solo per le foto';
+$lang['photos posted during the last %d days'] = 'foto aggiunte durante gli ultimi %d giorni';
+$lang['Photos posted within the last %d day.'] = 'Foto pubblicate nelle ultime 24 ore.';
+$lang['Photos posted within the last %d days.'] = 'Foto pubblicate negli ultimi %d giorni.';
+$lang['Piwigo Help'] = 'Aiuto di Piwigo';
+$lang['Play of slideshow'] = 'Avvia proiezione';
+$lang['Please enter your username or email address.'] = 'Inserisci il tuo nome utente o indirizzo e-mail.';
+$lang['Please, enter a login'] = 'Per favore, inserire nome utente';
+$lang['Post date'] = 'Data d\'invio';
+$lang['posted after %s (%s)'] = 'disponibile dopo il %s (%s)';
+$lang['posted before %s (%s)'] = 'disponibile prima del %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'disponibile tra %s (%s) e il %s (%s)';
+$lang['posted on %s'] = 'disponibile il %s';
+$lang['Posted on'] = 'Inviato il';
+$lang['Powered by'] = 'Realizzato grazie a';
+$lang['Preferences'] = 'Preferenze';
+$lang['Previous'] = 'Precendente';
+$lang['Profile'] = 'Profilo';
+$lang['Quick connect'] = 'Connessione veloce';
+$lang['Quick search'] = 'Ricerca rapida';
+$lang['Random photos'] = 'Foto a caso';
+$lang['Rank'] = 'Posizione';
+$lang['Rate this photo'] = 'Vota questa foto';
+$lang['Rating score'] = 'Punteggio';
+$lang['Recent albums'] = 'Album recenti';
+$lang['Recent period must be a positive integer value'] = 'Il periodo deve essere un valore intero positivo';
+$lang['Recent period'] = 'Periodo recente';
+$lang['Recent photos'] = 'Ultime foto';
+$lang['Redirection...'] = 'Reindirizzamento...';
+$lang['Reduce diaporama speed'] = 'Ralentare la velocità proiezione';
+$lang['Register'] = 'Registrati';
+$lang['Registration of %s'] = 'Registrazione di %s';
+$lang['Registration'] = 'Registrazione';
+$lang['Related tags'] = 'Tags correlati';
+$lang['remove this tag from the list'] = 'eliminare questo tag dall\'elenco';
+$lang['Repeat the slideshow'] = 'Ricomincia proiezione';
+$lang['representative'] = 'miniatura dell\'album';
+$lang['Reset to default values'] = 'Ripristina le impostazioni predefinite';
+$lang['Reset'] = 'Cancella';
+$lang['Retrieve password'] = 'Recupera la password';
+$lang['Return to home page'] = 'Ritorna alla home page';
+$lang['return to normal view mode'] = 'ritorna alla visualizzazione normale';
+$lang['return to the display of all photos'] = 'ritornare alla visualizzazione di tutte le foto';
+$lang['RSS feed'] = 'Feed RSS';
+$lang['Search by date'] = 'Cerca per data';
+$lang['Search for all terms'] = 'Cerca tutte le parole';
+$lang['Search for any term'] = 'Cerca una qualsiasi delle parole';
+$lang['Search for Author'] = 'Cerca un Autore';
+$lang['Search for words'] = 'Cerca le parole';
+$lang['Search in albums'] = 'Cerca negli album';
+$lang['Search in sub-albums'] = 'Cerca nei sub-album';
+$lang['Search results'] = 'Risultato della ricerca';
+$lang['Search rules'] = 'Criteri di ricerca';
+$lang['Search tags'] = 'Cerca i tags';
+$lang['search'] = 'cercare';
+$lang['Search'] = 'Cerca';
+$lang['searched words : %s'] = 'parole ricercate: %s';
+$lang['Sent by'] = 'Inviato da';
+$lang['Send my connection settings by email'] = 'Inviare le mie impostazioni di connessione tramite e-mail';
+$lang['set as album representative'] = 'impostare come miniatura dell\'album';
+$lang['Show file metadata'] = 'Mostra i metadati del file';
+$lang['Show number of comments'] = 'Mostra il numero dei commenti';
+$lang['Show number of hits'] = 'Mostra il numero di visualizzazioni';
+$lang['show tag cloud'] = 'mostrare la nuvola di tags';
+$lang['Since'] = 'Dal';
+$lang['slideshow'] = 'avviare proiezione di diapositive';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Qualcuno ha chiesto di reimpostare la password per il seguente utente:';
+$lang['Sort by'] = 'Ordina per';
+$lang['Sort order'] = 'Ordinamento';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registrazione riuscita, riceverai presto una email con le tue impostazioni di connessione.. Benvenuto!';
+$lang['Specials'] = 'Speciale';
+$lang['SQL queries in'] = 'Queries SQL in';
+$lang['stop the slideshow'] = 'fermare le diapositive';
+$lang['Submit'] = 'Confermare';
+$lang['Tag results for'] = 'Risultato dei tag per';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tags';
+$lang['the beginning'] = 'l\'inizio';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'La galleria è chiusa per manutenzione. Torna più tardi.';
+$lang['The number of photos per page must be a not null scalar'] = 'Il numero di foto per pagina deve essere un intero non nullo';
+$lang['The passwords do not match'] = 'Le password non coincidono';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'L\'RSS Feed notifica delle novità della galleria: nuove foto, nuovi album, nuovi commenti. Da usare con un lettore RSS Feed.';
+$lang['the username must be given'] = 'nome utente obbligatorio';
+$lang['This author modified following comment:'] = 'Questo autore ha modificato il commento seguente:';
+$lang['This author removed the comment with id %d'] = 'Questo autore ha cancellato il commento con l\'ID %d';
+$lang['this email address is already in use'] = 'un utente usa già questo indirizzo mail';
+$lang['This login is already used by another user'] = 'Questo nome utente esiste già';
+$lang['this login is already used'] = 'nome utente già esistente';
+$lang['Thumbnails'] = 'Miniature';
+$lang['To reset your password, visit the following address:'] = 'Per rinnovare la vostra password, cliccare sul link qui sotto:';
+$lang['today'] = 'oggi';
+$lang['Unknown feed identifier'] = 'Identificatore di flusso sconosciuto';
+$lang['Unknown identifier'] = 'Identificante sconosciuto';
+$lang['Update your rating'] = 'Aggiorna il tuo voto';
+$lang['useful when password forgotten'] = 'utile se si dimentica la password';
+$lang['User "%s" has no email address, password reset is not possible'] = 'L\'utente "%s" non ha nessun indirizzo email, il rinnovo della password è impossibile';
+$lang['User comments'] = 'Commenti utenti';
+$lang['User: %s'] = 'Utente: %s';
+$lang['Username "%s" on gallery %s'] = 'Utente "%s" sur la galerie %s';
+$lang['Username or email'] = 'Nome utente o indirizzo email';
+$lang['Username'] = 'Nome utente';
+$lang['Username modification'] = 'Modificare il nome utente';
+$lang['View'] = 'Vista';
+$lang['Visits'] = 'Visite';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Settimana %d';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Benvenuto nella tua galleria fotografica Piwigo!';
+$lang['Welcome'] = 'Benvenuto';
+$lang['wrong date'] = 'data errata';
+$lang['Yes'] = 'Sì';
+$lang['You are not authorized to access the requested page'] = 'Non sei autorizzato a visualizzare la pagina richiesta';
+$lang['You will receive a link to create a new password via email.'] = 'Via email, riceverete un link da cliccare per rinnovare la vostra password';
+$lang['Your comment has been registered'] = 'Il vostro commento è stato registrato';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Il vostro commento NON è stato registrato perchè non rispetta le regole di convalidazione';
+$lang['Your favorites'] = 'Le mie preferite';
+$lang['Your Gallery Customization'] = 'Personalizzare la visualizzazione della Galleria ';
+$lang['Your username has been successfully changed to : %s'] = 'Il vostro nome d\'utente è stato cambiato con: %s';
+$lang['Your password has been reset'] = 'La password è stata reimpostata';
+$lang['Original'] = 'Originale';
+$lang['Thank you for registering at %s!'] = 'Grazie per esserti registrato su %s!';
+$lang['Here are your connection settings'] = 'Qui ci sono le impostazioni di connessione';
+$lang['Password: %s'] = 'Password: %s';
+$lang['Username: %s'] = 'Nome utente: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Se pensi di avere ricevuto questa email per sbaglio, contattateci %s';
+$lang['Photo sizes'] = 'Dimensioni delle foto';
+$lang['square'] = 'Quadrata';
+$lang['thumb'] = 'Miniatura';
+$lang['2small'] = 'XXS - minuscola';
+$lang['xsmall'] = 'XS - piccolissima';
+$lang['small'] = 'S - piccola';
+$lang['medium'] = 'M - Media';
+$lang['large'] = 'L - Grande';
+$lang['xlarge'] = 'XL - grandissima';
+$lang['xxlarge'] = 'XXL - enorme';
+$lang['Show latest comments first'] = 'Visualizza i commenti più recenti prima';
+$lang['Show oldest comments first'] = 'Visualizza i commenti meno recenti prima';
+$lang['View in'] = 'Visualizzazione';
+$lang['Mobile'] = 'Mobile';
+$lang['Desktop'] = 'Desktop';
+$lang['Date created, new &rarr; old'] = 'Data di creazione, recente &rarr; vecchia';
+$lang['Date created, old &rarr; new'] = 'Data di creazione, vecchia &rarr; recente';
+$lang['Date posted, new &rarr; old'] = 'Data di inserimento, recente &rarr; vecchia';
+$lang['Date posted, old &rarr; new'] = 'Data di inserimento, vecchia &rarr; recente';
+$lang['File name, A &rarr; Z'] = 'Nome file, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nome file, Z &rarr; A';
+$lang['Manual sort order'] = 'Ordine manuale';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numero identificativo, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numero identificativo, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Titolo foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Titolo foto, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Valutazione, alto &rarr; basso';
+$lang['Rating score, low &rarr; high'] = 'Valutazione, basso &rarr; alto';
+$lang['Visits, high &rarr; low'] = 'Visite, alto &rarr; basso';
+$lang['Visits, low &rarr; high'] = 'Visite, basso &rarr; alto';
+$lang['%d rate'] = '%d media';
+$lang['Page not found'] = 'Pagina non trovata';
+$lang['Bad request'] = 'Richiesta errata';
+$lang['Forbidden'] = 'Vietato';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ha riscontrato un errore irrecuperabile';
+$lang['Requested album does not exist'] = 'L\'album richiesto non esiste';
+$lang['Permalink for album not found'] = 'Permalink per l\'album non trovato';
+$lang['Requested tag does not exist'] = 'Il tag richiesto non esiste';
+$lang['Username is mandatory'] = 'Nome utente obbligatorio';
+$lang['Email address is mandatory'] = 'L\'indirizzo email è obbligatorio';
+$lang['mandatory'] = 'obbligatorio';
+$lang['Website'] = 'Sito web';
+$lang['Your website URL is invalid'] = 'L\'indirizzo del vostro sito web non è valido';
+$lang['Email'] = 'Email';
+$lang['Go back to the album'] = 'Ritorna all\'album';
+$lang['Last Page'] = 'Ultima pagina';
+$lang['First Page'] = 'Prima pagina';
+$lang['Password is missing. Please enter the password.'] = 'Campo password vuoto. Prego inserire la password.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Campo conferma della password vuoto. Si prega di confermare la password scelta.';
+$lang['%d photos per page'] = '%d foto per pagina';
+?>
Index: /tags/2.6.0RC1/language/it_IT/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,141 @@
+<h2>Modificare un album</h2>
+
+<h3>Informazioni</h3>
+
+<ul>
+
+  <li><strong>nome</strong>: rinominare l'album (virtualmente in caso
+  di un album fisico).</li>
+
+  <li><strong>descrizione</strong>: da un'idea generale del contenuto,
+  questo testo verrà visualizzato nella parte inferiore della pagina miniature.</li>
+
+</ul>
+
+<h3>Spostare</h3>
+
+<p>Se l'album è virtuale, potete spostarlo. Spostare un
+album significa cambiarne l'album padre.</p>
+
+<h3>Opzioni</h3>
+
+<ul>
+
+  <li><strong>Tipo di accesso</strong>: Gestione dei permessi. Se rendete
+un album privato, tutti gli album figli diventano privati. Se
+rendete un album pubblico, tutti gli album genitori diventano
+pubblici.</li>
+
+  <li><strong>Blocco</strong>: Gli album e i sub-album verranno disattivati temporaneamente per manutenzione.</li>
+
+<li><strong>Commenti</strong>: Autorizzare gli utenti a commentare
+le foto di quest'album.</li>
+  
+</ul>
+
+<p>Potete anche gestire queste opzioni con la gestione delle "Proprietà"
+(schermo <span class="pwgScreen">Commenti</span>, <span
+class="pwgScreen">Blocco</span>, <span
+class="pwgScreen">Pubblico/Privato</span>, <span
+class="pwgScreen">Rappresentativa</span> disponibile in <span
+class="pwgScreen">Amministrazione » Album » Proprietà</span>).</p>
+
+<h3>Ordine di apparizione</h3>
+
+<p>Scegliere se il tipo di ordinamento predefinito sarà usato.</p>
+
+<p>Indicare se quest'ordinamento sarà applicato ai sub-album.</p>
+
+<p>Scegliere le colonne per l'ordinamento da usare su quest'album.</p>
+<ul>
+<li><strong>Data di creazione</strong>: Data di creazione della foto</li>
+<li><strong>Aggiunto il</strong>: Data di sincronizzazione</li>
+<li><strong>Voto medio (*)</strong>: Media che potrebbe essere modificata dal voto di un utente</li>
+<li><strong>Le più viste (*)</strong>: La visita attuale potrebbe modificare l'ordine delle foto più viste</li>
+<li><strong>Nome file</strong>: Nome inserito nei campi precedenti</li>
+<li><strong>Id</strong>: Id interno (gli album più recenti hanno un "Id" più grande dei precedenti.</li>
+
+</ul>
+<p><strong>(*)</strong>Attenzione: Effettuare qualche test, l'ordinamento scelto potrebbe darvi qualche sorpresa.</p>
+
+
+<h3>Copertina</h3>
+
+<p>La copertina di un album è la miniatura che appare per rappresentare l'album sulla pagina principale (<span
+class="pwgScreen">category.php</span>) quando
+l'album contiene solo dei sub-album
+e non direttamente delle foto (come
+alla radice).</p>
+
+<p>Esistono quattro modi per scegliere la copertina di un album:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Pagina di visualizzazione delle foto</span>: nella barra delle azioni, uno dei pulsanti permette di scegliere
+la foto da visualizzare come copertina rappresentante l'album visualizzato. Il pulsante in questione è visibile solo
+agli amministratori.</li>
+
+  <li><span class="pwgScreen">Modicare le informazioni di una foto</span>
+in amministrazione. Questa pagina può essere raggiunta tramite <span
+class="pwgScreen">picture.php</span> o <span class="pwgScreen">Gestione per
+lotti</span> con il <em>modo unitario</em>. Per i dettagli, vedi l'aiuto per
+questa pagina.</li>
+
+  <li><span class="pwgScreen">Amministrazione » Album » Proprietà » 
+Copertina</span>. Per i dettagli, vedi l'aiuto per questa pagina.</li>
+
+  <li><span class="pwgScreen">Modificare un album</span> (questa
+pagina).</li>
+
+</ul>
+
+<p>La scelta della copertina dipende dal parametro di configurazione
+<code>allow_random_representative</code> (vedi <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Di default (<code>allow_random_representative</code> è impostato su "false"), ogni
+album contenente almeno una foto, è rappresentato da un elemento
+fisso (copertina). Una volta impostata (alla creazione del album), la copertina cambia
+solo se lo decide l'amministratore. Se la copertina
+non è appropriata, potete chiedere di <strong>Scegliere una copertina
+a caso</strong>.</p>
+
+<p>Se il parametro di configurazione <code>allow_random_representative</code>
+è impostato su "true", l'album contenente delle foto può non avere
+una copertina fissa. Usare semplicemente il pulsante <strong>Cancellare
+copertina</strong>.</p>
+
+<p>Se l'album non contiene nessuna foto (ma solo dei sub-album) può comunque essere rappresentato da una qualsiasi
+foto. Utilizzare la pagina <span class="pwgScreen">Modicare le informazioni
+di una foto</span>. L'unica opzione disponibile di questa pagina è il pulsante
+<strong>Cancellare copertina</strong>.</p>
+
+<h3>Associare tutte le foto di un album ad un nuovo album</h3>
+
+<ul>
+
+<li><strong>Nome dell'album virtuale</strong>: Nome del nuovo album da creare,
+tutte le foto dell'attuale album verranno associate al nuovo album.</li>
+
+<li><strong>Album padre</strong>: Dove deve essere creato il nuovo album,
+lasciare vuoto per crearlo alla radice (root) del sito.</li>
+
+</ul>
+
+<h3>Associare tutte le foto del album attuale a degli album esistenti</h3>
+
+<ul>
+
+<li><strong>Album</strong>: Scegliere l'album di destinazione.</li>
+
+</ul>
+
+<h3>Inviare un'email informativa ai membri del gruppo</h3>
+
+<ul>
+
+<li><strong>Gruppo</strong>: Gruppo dei destinatari</li>
+
+<li><strong>Contenuto dell'email</strong>: Testo libero da mandare.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/cat_move.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Spostare gli album virtuali</h2>
+
+<p>Solo gli album virtuali possono avere un nuovo album padre.</p>
+
+<h3>Album virtuali da spostare</h3>
+
+<p>Selezionare uno o più album virtuali da spostare. 
+Se l'elenco è vuoto, ciò vuole dire che non ne avete ancora creato uno.</p>
+
+<h3>Nuovo album padre</h3>
+
+<p>Selezionare un nuovo album padre (virtuale o fisico).
+Se non ne selezionate uno, 
+gli album da spostare verranno inserite nella root del sito.
+Non potete spostare un album verso se stesso o verso un proprio sub-album.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/cat_options.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>Opzioni degli album</h2>
+
+<p>Gestione delle opzioni di più album alla volta.</p>
+
+<dl>
+  
+  <dt>Commenti utenti</dt>
+
+  <dd>Permettere agli utenti di aggiungere dei commenti negli album selezionati.
+È possibile aggiungere un commento ad una foto se questa si trova in un album dove i commenti sono autorizzati.</dd>
+
+  <dt>Bloccare</dt>
+
+  <dd>Gli album selezionati sono temporaneamente bloccati
+per lavori di manutenzione. Se un album è bloccato per manutenzione, tutti i sub-album sono a loro volta bloccati.
+Se un album è sbloccato, tutti gli album padri vengono sbloccare.</dd>
+
+  <dt>Pubblico / Privato</dt>
+
+  <dd>La gestione dei permessi è possibile solo sugli album privati. Una volta reso un album privato, dovete
+in modo esplicito autorizzare gli utenti o i gruppi
+ad accedervi. Se un album è privato, tutti i sub-album diventono a loro volta privati.
+Se un album diventa pubblico, tutti gli album padri diventono pubblici.</dd>
+
+  <dt>Copertina</dt>
+
+  <dd>Questa opzione è disponibile solo se il parametro di
+configurazione <code>allow_random_representative</code> (vedi <span
+class="filename">include/config_defaults.inc.php</span>) è impostato su 
+<em>true</em>. Ogni album può essere rappresentato da una miniatura presa a caso o da una miniatura scelta come unica copertina.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/it_IT/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Gestire i permessi per un album</h2>
+
+<p>Questa pagina è disponibile soltanto per gli album privati.
+Qui potete scegliere gli utenti e i gruppi autorizzati per quest'album.</p>
+
+<h3>Gruppi</h3>
+
+<p>Potete concedere o negare l'accesso dei gruppi per l'album corrente. Di conseguenza, gli utenti
+che appartengono a questi gruppi si vedranno autorizzati, o non autorizzati, ad accedere al suddetto album.</p>
+
+<h3>Utenti</h3>
+
+<p>Potete concedere o negare l'accesso agli utenti ad un album in modo individuale. Agli utenti autorizzati ad accedere ad un album, grazie all'appartenenza ad un gruppo, gli si può negare l'accesso attivando un'eccezione</p>
Index: /tags/2.6.0RC1/language/it_IT/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/configuration.html	(revision 25596)
@@ -0,0 +1,132 @@
+<h2>Configurazione</h2>
+
+<p>Questa pagina permette di gestire la configurazione di base. 
+Infatti, questa pagina mostra soltanto i parametri che dovrebbero 
+bastare per la maggiore parte degli amministratori. Se volete 
+vedere gli altri numerosi parametri di configurazione, leggete il file <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Questa pagina è divisa in diverse sezioni, raggruppando i parametri 
+di configurazione per tema.</p>
+
+<h3>Principale</h3>
+<ul>
+
+  <li><strong>Titolo della galleria</strong>: usato per i Feed RSS e 
+la notifica via email.</li>
+
+  <li><strong>Banner delle pagine</strong>: Codice HTML presente in alto
+su tutte le pagine.</li>
+
+  <li><strong>URL della galleria</strong>: usato per i Feed RSS.</li>
+
+  <li><strong>Blocco galleria</strong>: Bloccare la galleria per 
+la manutenzione. Solo gli amministratori avranno accesso
+alla galleria.</li>
+
+  <li><strong>Voto</strong>: E' possibile dare un voto alle foto.</li>
+
+  <li><strong>Voto degli ospiti</strong>: Anche gli ospiti (utenti non registrati) possono dare un voto alle foto.</li>
+
+  <li><strong>Autorizzare l'iscrizione di nuovi utenti</strong>: Iscrizione libera per tutti.</li>
+
+  <li><strong>L'indirizzo email è obbligatorio per tutti gli utenti</strong>: L'indirizzo email sarà verificato durante l'iscrizione o durante l'aggiornamento dei profili, salvo il caso in cui l'iscrizione o l'aggiornamento venissero effettuati nel pannello di amministrazione, da parte dell'amministratore.</li>
+
+  <li><strong>Notificare agli amministratori quando un nuovo utente si registra</strong>: Gli amministratori riceveranno un'email ad ogni nuova iscrizione di utenti.</li>
+  
+  <li><strong>Ordinamento di default delle foto</strong> : Potete definire un'ordinamento personalizzato grazie a i menu a tendina.</li>
+
+</ul>
+
+<h3>Cronologia</h3>
+
+  <p>Le visite alle pagine <span
+class="pwgScreen">index.php</span> e <span
+class="pwgScreen">picture.php</span> sono
+registrate nella tabella <code>history</code>.</p>
+
+  <p>Le visite sono mostrate nella pagina <span class="pwgScreen">Amministrazione &raquo; tools &raquo; Cronologia</span>.</p>
+
+<ul>
+  <li><strong>Registrare le pagine visitate dagli ospiti</strong>: le pagine visitate dagli ospiti sono registrate.</li>
+
+  <li><strong>Registrare le pagine visitate dagli utenti</strong>: le pagine visitate dagli utenti sono registrate.</li>
+
+  <li><strong>Registrare le pagine visitate dagli amministratori</strong>: le pagine visitate dagli amministratori sono registrate.</li>
+
+</ul>
+
+<h3>Commenti</h3>
+<ul>
+
+  <li><strong>Commenti utenti per tutti</strong>: anche gli ospiti 
+possono scrivere commenti.</li>
+
+  <li><strong>Numero di commenti utente per pagina</strong>.</li>
+
+  <li><strong>Approvazione</strong>: un amministratore deve autorizzare 
+i commenti degli utenti prima che questi possano essere visibili nella
+parte pubblica. L'approvazione dei commenti utente avviene nella
+pagina <span class="pwgScreen">Amministrazione &raquo; Tools &raquo; Commenti in attesa</span>.</li>
+
+  <li><strong>Notificare agli amministratori quando un commento è stato scritto</strong>:
+Invio di un'email agli amministratori quando un utente scrive un commento.</li>
+
+  <li><strong>Notificare agli amministratori quando un commento richiede l'approvazione</strong>:
+Invio di un'email agli amministratori quando un utente scrive un commento che necessita di approvazione.
+L'approvazione dei commenti utente avviene nella pagina <span class="pwgScreen">Amministrazione &raquo; Tools &raquo; Commenti in attesa</span>.</li>
+
+</ul>
+
+<h3>Visualizzazione di default</h3>
+<p>Modificare le opzioni di visualizzazione di default per gli utenti non 
+connessi. Una volta effettuata la connessione, queste opzioni sono
+personalizzabili nella videata <span
+class="pwgScreen">profilo</span>).</p>
+
+<p>È possibile cambiare le impostazioni per gli utenti esistenti,
+in quest'altra pagina: <span class="pwgScreen">Amministrazione &raquo; 
+Utenti &raquo; Gestire</span>, in cui potete cambiare le impostazioni 
+degli utenti.</p>
+
+<ul>
+
+  <li><strong>Lingua</strong>: Solo per i titoli della galleria.
+Il nome degli album, delle foto e le descrizioni non sono compresi
+nella traduzione.</li>
+
+  <li><strong>Numero di miniature per riga</strong></li>
+
+  <li><strong>Numero di righe per pagina</strong></li>
+
+  <li><strong>Tema dell'interfaccia</strong></li>
+
+  <li><strong>Periodo recente</strong>: in giorni. Periodo durante il quale
+una foto è considerata come recente. Questo periodo deve essere superiore
+a 1 giorno.</li>
+
+  <li><strong>Espandere gli album</strong>: Espandere di default tutti
+gli album nel menu? <em>Attenzione</em>: questa opzione consuma molte
+risorse di sistema, se avete tanti album
+e sub-album.</li>
+
+  <li><strong>Mostrare il numero di commenti</strong>: Mostrare il numero
+di commenti sotto ogni miniatura. <em>Attenzione</em>: questa opzione consuma 
+delle risorse di sistema.</li>
+
+  <li><strong>Mostrare il numero di visite</strong>: Mostrare il numero 
+  di visualizzazioni della foto sotto la miniatura, nella pagina delle miniature. 
+  Valido solo se il parametro di configurazione avanzata è : <br>
+  $conf['show_nb_hits'] = true; <br>
+  N.B.: Di default il parametro è impostato su "false".</li>
+
+  <li><strong>Larghezza massima delle foto</strong>: larghezza massima di 
+  una foto visualizzata. Se la foto è più larga del parametro inserito, 
+  allora quest'ultima verrà ridimensionata. Se pensate che sia necessario cambiare 
+  questo parametro (per la visualizzazione di default), allora sarebbe meglio
+ridimensionare le foto prima di caricarle, specialmente se queste sono molto pesanti.</li>
+
+  <li><strong>Altezza massima delle foto</strong>: stessi consigli della 
+  voce precedente.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Configurazione per "l'estensione" dei templates</h2>
+
+<h3>Scopo</h3>
+<p>Definire le condizioni di sostituzione per ogni template (modello) dalla directory template-extension
+(template chiamato il "replacer" ("modelli personalizzato" / "sostituto")).</p>
+
+<p>I "templates originali" provengono da ./themes/default/template (o qualunque altro tema)
+ saranno rimpiazzati da un sostituto se quest'ultimo è collegato al "template originale"
+ (e in modo facoltativo, quando l'URL richiesta contiene un "parametro facoltativo dell'URL").</p>
+
+<p>I "parametri facoltativi dell'URL" sono quelli che potete trovare dopo il nome del modulo nell'indirizzo (URL).</p>
+
+<p>Quindi un "parametro facoltativo dell'URL" può essere un "permalink" attivo (per maggiore informazioni 
+vedere i permalinks nella nostra documentazione).</p>
+
+<p>Leggere: `<a href="#warnings">Avvertimenti</a>` sulle condizioni d'uso.</p>
+
+<h3>Che cosa sono le estensioni dei template?</h3>
+
+<p>Questo tool di configurazione è potente sia per i principianti che per gli utenti esperti.
+Trammite FTP, nella directory template-estensione, il Webmaster può duplicare i file
+ .tpl ("template originali") con un nome diverso
+ (sostituto).
+
+ "Template originali", attualmente i modelli d'origine sopportati sono:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> e/o <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> e/o <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> e/o <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> e/o <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> e/o <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> e/o <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> e/o <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Dove posso trovare i "templates originali"?</h3>
+
+<p>I templates originali sono in /themes/default/template/
+(non modificare i templates originali per evitare problemi durante gli aggiornamenti futuri). Così, con
+i "templates originali", il webmaster può creare i suoi "replacers (modelli personalizzati)".</p>
+
+<h3>Dove posso salvare i "modelli personalizzati"?</h3>
+
+<p><strong>I templates personalizzati</strong> possono essere salvati nella directory 
+template-extension (o sottodirectory).
+I "modelli personalizzati" possono avere qualunque nome con l'estensione .tpl. Per esempio: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Come posso attivare i miei "modelli personalizzati"?</h3>
+<p>Un <strong>template originale</strong> dovrebbe essere assegnato a 
+ <strong>un replacer (modello personalizzato)</strong> per potere attivare i modelli personalizzati associati.
+ Attivare i modelli personalizzati è la funzione "Estende i templates" nel menu di Configurazione dell'Amministrazione.</p>
+
+<p>Se selezionate un <strong>Parametro facoltativo del URL</strong> i modelli personalizzati saranno utilizzati 
+unicamente sulle pagine con questa parola chiave. Per esempio: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Gli utenti esperti useranno i permalinks (link permanenti) come
+<strong>parametro facoltativo del URL</strong>. </p>
+
+<p>Se selezionate un <strong>template legato</strong>, i modelli personalizzati avranno luogo unicamente su questo template.</p>
+
+<h3>Come posso disattivare mio "sostituto"?</h3>
+<ul>
+<li>Deselezionare il "template originale".</li>
+<li>Con l'FTP cancellare il "sostituto".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Avvertenze</h3>
+<ul>
+
+  <li>Il <strong>template d'origine</strong> deve essere il vero template "originale"
+  altrimenti potreste avere dei risultati inattesi!</li>
+
+  <li>Se diversi <strong>replacers (templates personalizzati)</strong> hanno lo stesso 
+  <strong>template originale</strong> e lo stesso <strong>parametro facoltativo del URL</strong> 
+  solo l'ultimo sostituto satà attivo.</li>
+
+  <li>Non selezionare <strong>il parametro facoltativo del URL</strong> 
+  attiverà il sostituto ad ogni uso del template.
+  Come detto precedente, l'ordine può annullare i modelli personalizzati precedenti.</li>
+
+  <li>Le sottodirectory:
+  Le sottodirectory sono ignorate, ma sono utili per cambiare l'ordine dei modelli personalizzati.<br />
+distributed-samples: sono distribuite per le vostre prove! 
+<strong>Non modificateli</strong>, create i vostri! 
+</li>
+
+  <li>Alla cancellazione di un sostituto, il <strong>template originale</strong>
+  sarà immediatamente riattivato.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Elenco dei gruppi</h2>
+
+<p>Amministrazione delle proprietà dei gruppi.</p>
+
+<h3>Aggiungere un gruppo</h3>
+
+<p>L'amministratore può creare dei gruppi.</p>
+
+<h3>Elenco dei gruppi</h3>
+
+<p>Permette per ogni gruppo di:</p>
+
+<ul>
+  <li>accedere al elenco dei membri</li>
+  <li>accedere ai permessi</li>
+  <li>cancellare il gruppo (necessita di conferma)</li>
+  <li>cambiare lo stato "default" (necessita di conferma)</li>
+</ul>
+
+<h3>Gruppo di default</h3>
+<p>Il gruppo di default è associato automaticamente ad ogni nuovo utente.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,33 @@
+<p>Esistono diversi metodi per aggiungere delle foto nella vostra
+galleria :</p>
+
+<ul>
+
+  <li><strong>L'upload diretto</strong> dal vostro browser è il metodo più semplice ed
+  immediato. Questo metodo dipende molto dalle capacità del vostro browser e del vostro
+  server web. Ideale per caricare poche foto. Per grossi volumi di foto, oppure in
+  caso di problemi, potete utilizzare dei metodi alternativi.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Utilizzare l'upload diretto</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> è un software gratuito da installare sul vostro 
+  computer. Scegliete le foto che volete trasferire ed inseritele nella finestra
+  di pLoader, cliccate su <em>"Trasferire verso Piwigo"</em> e lasciate che pLoader si occupi del resto. Esistono anche altri software, come <strong>WinToPiwigo</strong> o il modulo
+  di esportazione Piwigo di <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Utilizzare pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP</strong>
+  è il metodo ideale per aggiungere una vasta collezione
+  di foto con un numero minimo di click del mouse. Seguite la guida per preparare
+  le vostre foto. Questo metodo consente di controllare con precisione l'organizzazione
+  fisica dei files sul server.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Utilizzare FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/it_IT/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/help_groups.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>I gruppi sono un semplice metodo per impostare le autorizzazioni di un elenco di utenti.</p>
+
+<p>E' possibile creare gruppi ed aggiungere degli utenti in
+<span class="pwgScreen">Amministrazione &raquo; Utenti &raquo; Gruppi</span>.</p>
+
+<p>Un utente può appartenere a diversi gruppi. L'autorizzazione è prioritaria rispetto alla proibizione. Ad esempio, se l'utente "pippo" appartiene ai gruppi "famiglia"
+e "amici", e, tra questi gruppi, solo il gruppo "famiglia" può vedere l'album "Natale 2010", ne consegue che l'utente "pippo" sarà abilitato a visualizzare quest'album.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Dopo aver creato la vostra galleria potete configurarla per gli ospiti
+ <ul>
+	<li>La visualizzazione di default in <span class="pwgScreen">Amministrazione &raquo; Configurazione &raquo; Opzioni</span> scheda <span class="pwgScreen">Parametri ospite</span>.</li>
+	<li>Il tema di default in <span class="pwgScreen">Amministrazione &raquo; Configurazione &raquo; Temi</span></li>
+	<li>La lingua di default in <span class="pwgScreen">Amministrazione &raquo; Configurazione &raquo; Lingue</span></li>
+ </ul>
+ Di default, ogni nuovo utente erediterà queste proprietà al momento della registrazione.
+</p>
+<p>Se avete delle domande, la comunità di Piwigo sarà lieta di rispondervi sull'<a href="http://it.piwigo.org/forum">Forum</a>.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,48 @@
+<fieldset>
+<legend>Autorizzazioni per le foto</legend>
+
+<p>Ogni foto ha un <strong>livello di privacy</strong>. Anche ciascun utente ha un livello di privacy. Ci sono 5 livelli di privacy:
+<ol>
+  <li>Nessuno</li>
+  <li><em>Contatti</em></li>
+  <li><em>Amici</em> (superiore al livello Contatti)</li>
+  <li><em>Famiglia</em> (superiore al livello Amici)</li>
+  <li><em>Amministratori</em> (superiore a tutti gli altri livelli)</li>
+</ol>
+
+<p>I livelli superiori dispongono delle autorizzazioni per accedere ai livelli inferiori. Per un dato utente, maggiore è il suo livello di privacy, più foto potrà vedere.</p>
+
+<p>Ad esempio, se il livello di privacy della foto "matrimonio_pietro-0024.jpg" fosse impostato su <em>"Famiglia"</em>, allora potreste avere una situazione simile:</p>
+<ul>
+  <li>Pietro che ha livello di privacy impostato su <em>Amministratore</em>, può vederla visto che il livello <em>"Amministratori"</em> permette di vedere tutte le foto</li>;
+  <li>Vanessa che ha livello di privacy impostato su <em>Famiglia</em>, vedrà anche lei la foto, perchè il livello <em>Famiglia</em> è il livello minimo richiesto</li>;
+  <li>Maria che ha livello di privacy impostato su <em>Amica</em>, non potrà vederla, perchè il livello <em>Amica</em> è inferiore al livello <em>Famiglia</em> che è quello minimo necessario</li>.
+</ul>
+
+<p>Un utente che non dispone delle autorizzazioni per vedere il contenuto di un album, non vedrà l'album e nemmeno il suo titolo. Lo stesso principio si applica a un tag.</p>
+
+<p>E' possibile impostare il livello di privacy di un utente nella pagina <span class="pwgScreen">Amministrazione &raquo; Utenti &raquo; Gestire</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Autorizzazioni per gli album</legend>
+
+<p>Se i livelli di privacy non corrispondono esattamente ai vostri bisogni, potete anche gestire le autorizzazioni per album, per un utente o per un gruppo. E' possibile gestire le autorizzazioni per le foto e gli album contemporaneamente, senza conflitti.</p>
+
+<p>Potete vietare l'accesso agli album. Impostate il tipo d'accesso a "privato" se desiderate vietare l'accesso all'album.</p>
+  
+<p>Potete rendere un album privato modificando il singolo album (<span
+class="pwgScreen">Amministrazione &raquo; Album &raquo; Gestire &raquo; Modificare</span>) o 
+impostando l'opzione dell'albero completo degli album (<span
+class="pwgScreen">Amministrazione &raquo; Album &raquo; Proprietà &raquo; Pubblico/Privato</span>).</p>
+
+<p>Una volta che l'album è privato, potrete gestire le autorizzazioni per gruppi e gli utenti da 3 pagine :</p>
+
+<ul>
+  <li><span class="pwgScreen">Amministrazione &raquo; Utenti &raquo; Gestire &raquo; azione Permessi</span> (un link per utente)</li>
+  <li><span class="pwgScreen">Amministrazione &raquo; Utenti &raquo; Gruppi &raquo; azione Permessi</span> (un link per gruppo)</li>
+  <li><span class="pwgScreen">Amministrazione &raquo; Album &raquo; Gestire &raquo; Modificare i permessi</span> (un link per album)</li>
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/it_IT/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Le foto sono visualizzate nell'album corrispondente alla directory.</p>
+
+<p>Potete anche visualizzare una foto in più di un album, senza dupplicare il file. Associate la foto a un'altra o più album dallo schermo di modifica della foto (al quale accedete dalla pagina di visualizzazione della foto della vostra galleria, quando siete connessi come Amministratore).</p>
+
+<p>Gli album virtuali nascono da questo principio: non sono associate a nessuna directory fisica. Create degli album virtuali in <span class="pwgScreen">Amministrazione &raquo; Album &raquo; Gestire</span>.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/history.html	(revision 25596)
@@ -0,0 +1,44 @@
+<h2>Cronologia</h2>
+
+<p>Queste pagine vi permettono di controllare la cronologia delle visite del vostro sito, a seconda delle opzioni che avete attivato in - Amministrazione &raquo; Configurazione &raquo; Opzioni &raquo; Scheda "Cronologia".</p>
+
+<h3>Statistiche</h3>
+<ul>
+  <p>Se avete scelto che le visite alle pagine <span
+class="pwgScreen">index.php</span> e <span
+class="pwgScreen">picture.php</span> siano
+registrate nella tabella <code>history</code>,
+questa scheda vi permette di controllare il numero di visite</p>
+	
+	<li><strong>Statistiche totali</strong>: visualizzate le statistiche annuali</li>
+	
+	<li><strong>Statistiche di un anno</strong>: visualizzate le statistiche mensili dell'anno selezionato.</li>
+	
+	<li><strong>Statistiche di un mese</strong>: visualizzate le statistiche giornaliere del mese selezionato.</li>
+	
+	<li><strong>Statistiche di una giornata</strong>: visualizzate le statistiche orarie del giorno selezionato.</li>
+	
+</ul>
+
+<h3>Ricerca</h3>
+<ul>
+  <p>Se avete scelto che le visite delle pagine <span
+class="pwgScreen">index.php</span> e <span
+class="pwgScreen">picture.php</span> siano
+registrate nella tabella <code>history</code>, questa scheda vi permette di controllare in dettaglio le pagine visitate con l'aiuto di diversi filtri.</p>
+ 
+	<li><strong>Filtro per data</strong> : selezionate il periodo
+di cui volete verificare l’attività.</li>
+	
+	<li><strong>Filtro per tipo di elemento</strong> : selezionate
+il tipo di elemento di cui volete osservare l’attività.</li>
+	
+	<li><strong>Utente</strong> : selezionate l'utente di cui
+volete osservare l'attività.</li>
+	
+	<li><strong>Nome file</strong> : selezionate il nome del file di cui
+volete osservare l'attività.</li>
+	
+	<li><strong>Id immagine</strong> : selezionate l'Id dell'immagine di cui
+volete osservare l'attività.</li>
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/it_IT/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/maintenance.html	(revision 25596)
@@ -0,0 +1,64 @@
+<h2>Manutenzione</h2>
+
+<p>Per ottimizzare il tempo di generazione di una pagina, Piwigo utilizza una memoria cache.
+ Per esempio, invece di contare il numero di foto contenute in ogni album
+ ad ogni caricamento della pagina, queste informazioni vengono immagazzinate nel database.
+ In teoria, questa informazione dovrebbe essere sempre corretta, ma a volte si può verificare 
+ un errore e le informazioni memorizzate nella cache risulteranno errate.</p>
+
+<p>Alcune informazioni diventano inutili col tempo. Cancellare queste
+informazioni inutili dal database vi permette di liberare spazio sul disco.</p>
+
+<ul>
+
+  <li>
+    <strong>Elementi orfani:</strong>
+    Mostra le foto che non sono associate ad un album virtuale.
+  </li>
+  <li>
+    <strong>File con lo stesso nome in più album fisici:</strong>
+    Mostra le foto o altri file con lo stesso nome, trovati in più album.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Aggiornamento delle informazioni degli album :</strong> 
+  Per ogni album, sono controllate e, se necessario, aggiornate le seguenti informazioni: 
+  elenco degli album padri, numero di foto, data dell'ultima foto, posizione tra
+  gli album di stesso livello, posizione tra album padri e album figli.
+  Quest'azione controlla anche la presenza delle foto che fungono da copertina.</li>
+
+  <li><strong>Aggiornamento delle informazioni delle foto:</strong>
+Per ogni foto, le informazioni aggiornate sono: il percorso completo
+del file, il voto medio. Attenzione: da non confondere con i metadati
+sincronizzabili tramite la pagina <span class="pwgScreen">Amministrazione &raquo; Album &raquo; Sincronizzare</span>
+o nella pagina <span class="pwgScreen">Modificare le informazioni della foto</span> (accessibile dalla pagina di visualizzazione di una foto <span class="pwgScreen">picture.php</span>).</li>
+
+  <li><strong>Riparare e ottimizzare il database:</strong>
+Vengono eseguite le operazioni di riordinamento, riparazione ed ottimizzazione di ogni tabella del database.
+  </li>
+
+</ul>
+
+<ul>
+  <li><strong>Ripulire i dettagli dalla cronologia:</strong> 
+Cancella tutte le righe dalla tabella <code>history</code>. La pagina <span class="pwgScreen">
+Amministrazione &raquo; Tools &raquo; Cronologia</span> non mostrerà più nessuna informazione relativa alla cronologia. 
+<em>Attenzione</em>: Tutte le informazioni saranno definitivamente perse e non sarà più possibile recuperarle.
+  </li>
+
+  <li><strong>Ripulire il sommario della cronologia:</strong>
+Cancella tutte le informazioni del sommario (ottenute dal dettaglio della cronologia).
+  </li>
+
+  <li><strong>Ripulire le sessioni scadute:</strong> cancella tutte le sessioni scadute.</li>
+
+  <li><strong>Ripulire i flussi di notifica mai usati:</strong> cancella tutte le notifiche che non sono mai state usate.</li>
+  
+  <li><strong>Ripulire la cronologia delle ricerche:</strong> cancella tutte le informazioni sulle ricerche effettuate.</li>
+  
+  <li><strong>Ripulire i templates compilati:</strong> cancella le informazioni relative ai templates.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notifiche tramite Email</h2>
+
+<p>Questa pagina consente di configurare e gestire le notifiche via Email sui cambiamenti e le novità del vostro sito.</p>
+
+<p>Questa pagina è composta da 3 schede:</p>
+
+<h3>Parametri</h3>
+<p>Disponibile soltanto per il Webmaster, questa scheda gestisce i parametri della notifica via email.</p>
+
+<h3>Iscrizione</h3>
+<p>Disponibile soltanto per il Webmaster, questa scheda gestisce l'iscrizione/disiscrizione alla notifica via email.</p>
+
+<h3>Invio</h3>
+<p>Disponibile per il Webmaster e gli Amministratori, questa scheda consente l'invio di email per notificare le novità del sito.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalink</h2>
+
+<p>I Permalinks sono usati per rendere le url degli album più gradevoli. Quando un album ha un permalink associato, l'id dell'album nell'url non è più necessario.</p>
+
+<p>Quando un permalink è cancellato, potete salvarlo nello storico dei permalink, in modo che le fonti esterne alle pagine di PWG possano ancora farvi riferimento. Nella tabella della cronologia dei permalink potete trovare la data di cancellazione del permalink, oltre alla data dell'ultimo utilizzo ed il numero di volte che è stato utilizzato.</p>
+
+<p>Notare che i permalinks devono essere unici. Devono essere unici anche nella cronologia dei permalink.</p>
Index: /tags/2.6.0RC1/language/it_IT/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,78 @@
+<fieldset>
+  <legend>Guida rapida</legend>
+
+<ol>
+  <li>Create una directory sul vostro PC.</li>
+
+  <li>Copiate qualche foto in questa directory. <em>Attenzione</em>: il nome delle directory e dei files deve essere solamente formato da lettere, cifre e/o i simboli "-", "_" o ".". Non utilizzare spazi o caratteri accentati.</li>
+
+  <li>Con un client FTP (tipo Filezilla), caricate la directory in cui avete messo le foto, nella directory "galleries" della vostra galleria Piwigo.</li>
+
+  <li>Connettetevi alla vostra galleria Piwigo e andate in <span class="pwgScreen">Amministrazione</span> e cliccate sul pulsante Sincronizzazione</li>
+</ol>
+
+<p>Bene! Avete appena creato il primo album della vostra galleria.</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>Organizzazione delle directory e dei files</legend>
+
+<ul>
+
+  <li>
+
+    <p>Nella directory "galleries" si trovano gli album di Piwigo. Qui di seguito potete vedere lo schema ad albero di una piccola galleria (ma che usa moltissime funzionalità) : </p>
+  
+<pre>
+galleries
+|-- matrimonio
+|   |-- cerimonia
+|   |   |-- in-chiesa
+|   |   |   |-- entrata-pietro.jpg
+|   |   |   +-- entrata-paola.jpg
+|   |   +-- uscita
+|   |   |   |-- uscita-pietro-paola.jpg
+|   |   |   +-- foto-gruppo-invitati.jpg
+|   +-- cocktail
+|       |-- discorso001.jpg
+|       |-- discorso002.jpg
+|       +-- discorso003.jpg
++-- viaggio-di-noze
+    |-- albergo.png
+    |-- video-decollo-aereo.avi
+    +-- pwg_representative
+        +-- video-decollo-aereo.jpg
+</pre>
+
+  </li>
+  
+  <li>Ad eccezione di "pwg_representative", ogni directory inserita in "galleries" genera un album. Il numero di livelli (profondità) è illimitato.</li>
+
+  <li>Una foto è invece rappresentata da un file. Un file può essere una foto di Piwigo se la sua estensione è presente tra le possibilità previste nel parametro di configuarzione <code>file_ext</code> (vedi
+file <span class="filename">include/config.inc.php</span>). Un file è considerato come una foto
+se la sua estensione è presente tra quelle previste nel parametro di configurazione
+<code>picture_ext</code>.</li>
+
+  <li>Gli elementi che non sono delle foto (video, suoni, file di testo o
+altro) sono generalmente rappresentati con un'icona corrispondente
+all'estensione del file. In modo opzionale, è possibile associare una miniatura
+ed un file rappresentativo (come per il file <span 
+class="filename">video-decollaggio-aereo.avi</span> nell'esempio proposto).</li>
+
+  <li><em>Attenzione</em>: il nome di una directory o di un file deve essere
+composto da lettere, numeri o simboli come "-", "_" o ".". Non utilizzate spazio
+e caratteri accentati.</li>
+
+  <li><em>Suggerimento</em>: un album può contenere delle foto e
+dei sub-album. Tuttavia, è fortemente raccomandato scegliere,
+per ogni album, se inserire delle foto <strong>o</strong>
+dei sub-album.</li>
+
+  <li>Una volta che i file sono
+correttamente inseriti nelle directory, andare alla pagina <span
+class="pwgScreen">Amministrazione &raquo; Tools &raquo; Sincronizzare</span>.</li>
+
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/it_IT/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/search.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Ricerca</h2>
+
+<p>Cercare delle foto in tutta la galleria.</p>
+
+<dl>
+
+  <dt>Ricerca per parole</dt>
+
+  <dd>Cercare una o più parole in tutti gli attributi che riguardano le foto mostrate nella galleria. Usare * come carattere Jolly per ricerche parziali.</dd>
+  
+  <dt>Ricerca per Autore</dt>
+
+  <dd>Usare * come carattere Jolly per le ricerche parziali.</dd>
+
+  <dt>Ricerca per data</dt>
+
+  <dd>Selezionare una data e/o una data di fine. Lasciare la data vuota se
+volete fare una ricerca del tipo "prima di". L'anno deve essere inserito nell'ultimo campo come nel formato seguente : 0000 (per esempio 2010)</dd>
+
+  <dt>Ricerca negli album</dt>
+
+  <dd>Selezionare gli album in cui desiderate efettuare la ricerca.
+È possibile ricercare in tutti gli album selezionando l'album padre e autorizzando la ricerca ni tutti i sub-album.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/it_IT/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/synchronize.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Sincronizzare</h2>
+
+<ul>
+
+  <li>Ci sono 2 tipi di sincronizzazione possibili : struttura (directory/file) e
+metadati. Sincronizzare la struttura significa sincronizzare l'albero
+delle directory e dei file con il
+database. Sincronizzare i metadati permette di aggiornare
+le informazioni come le dimensioni, le informazioni EXIF o
+IPTC.</li>
+
+  <li>La prima sincronizzazione da effettuare deve essere quella della 
+struttura.</li>
+
+  <li>Il processo di sincronizzazione potrebbe essere più o meno lungo (dipende
+dal carico del server e della quantità di file da gestire). È possibile eseguire
+la sincronizzazione album per album.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/it_IT/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/it_IT/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/help/user_list.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Elenco degli utenti</h2>
+
+<p>Permette la gestione dei parametri per gli utenti iscritti. Solo i permessi sono gestiti in una pagina diversa.</p>
+
+<h3>Aggiungere un utente</h3>
+
+<p>L'amministratore può aggiungere manualmente gli utenti. </p>
+
+<h3>Elenco degli utenti</h3>
+
+<p>L'elenco può essere filtrato sul nome utente (* = carattere jolly), il
+gruppo o lo stato. L'elenco può essere ordinato per data d'iscrizione o
+per nome utente, in ordine cronologico o
+decrescente.</p>
+
+<p>In questa pagina si possono modificare più utenti
+alla volta :</p>
+
+<ul>
+  <li>cancellare degli utenti (necessita di conferma)</li>
+  <li>modificare lo stato</li>
+  <li>associare o dissociare ai gruppi</li>
+  <li>modificare le proprietà di visualizzazione</li>
+  <li>modificare le proprietà annesse</li>
+</ul>
+
+<p>Gli utenti modificati sono quelli selezionati (di default) o gli utenti dell'elenco filtrato.</p>
Index: /tags/2.6.0RC1/language/it_IT/index.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/it_IT/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installazione';
+$lang['Basic configuration'] = 'Configurazione di base';
+$lang['Default gallery language'] = 'Lingua predefinita della galleria';
+$lang['Database configuration'] = 'Configurazione database';
+$lang['Admin configuration'] = 'Configurazione utente Amministratore';
+$lang['Start Install'] = 'Inizia l\'installazione';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Esso verrà mostrato ai visitatori. E\' necessario per amministrare il vostro sito';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Connessione al server riuscita, ma non è stato possibile connettersi al database.';
+$lang['Can\'t connect to server'] = 'Impossibile connettersi al server';
+$lang['Host'] = 'Host';
+$lang['localhost or other, supplied by your host provider'] = 'localhost o altro, datovi dal vostro provider';
+$lang['User'] = 'Utente';
+$lang['user login given by your host provider'] = 'login utente database fornito dal vostro provider';
+$lang['user password given by your host provider'] = 'password d\'accesso al database fornita dal vostro provider';
+$lang['Database name'] = 'Nome del database';
+$lang['also given by your host provider'] = 'anche questo fornito dal vostro provider';
+$lang['Database table prefix'] = 'Prefisso tabelle database';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'i nomi delle tabelle del database saranno preceduti da questo prefisso (vi permette di gestire meglio le tabelle)';
+$lang['enter a login for webmaster'] = 'inserire un nome utente per il webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'il nome utente del webmaster non può contenere caratteri come \' o "';
+$lang['please enter your password again'] = 'reinserire la password';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Da conservare con cura. Permette l\'accesso al pannello d\'amministrazione';
+$lang['Password [confirm]'] = 'Password [confermare]';
+$lang['verification'] = 'verifica';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Avete bisogno di aiuto? Visitate il <a href="%s">forum di Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'I visitatori saranno in grado di contattarvi usando questa email';
+$lang['PHP 5 is required'] = 'E\' richiesto PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Sembra che la versione PHP del vostro server sia %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo tenterà di cambiare la configurazione di PHP 5 creando o modificando il file .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Nota: potete cambiare manualmente la configurazione PHP e poi riavviare Piwigo.';
+$lang['Try to configure PHP 5'] = 'Provare a configurare PHP 5';
+$lang['Sorry!'] = 'Spiacente!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo non è stato in grado di configurare PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Si consiglia di fare riferimento al supporto del vostro provider di hosting e vedere come potete passare a PHP 5 da soli.';
+$lang['Hope to see you back soon.'] = 'Speriamo di rivedervi presto.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Congratulazioni, l\'installazione di Piwigo è completata';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una soluzione alternativa è quella di copiare il testo della casella sopra e incollarlo nel file "local/config/database.inc.php" (Attenzione: database.inc.php deve contenere solo quello che c\'è nel box sopra, senza nessun ritorno a capo o spazio)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Creazione del file di configurazione local/config/database.inc.php fallita.';
+$lang['Download the config file'] = 'Scaricare il file di configurazione';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'E\' possibile scaricare il file di configurazione e caricarlo in local/config della vostra installazione di Piwigo.';
+$lang['Just another Piwigo gallery'] = 'Una galleria Piwigo in più ';
+$lang['Welcome to my photo gallery'] = 'Benvenuti nella mia galleria fotografica';
+$lang['Welcome to your new installation of Piwigo!'] = 'Benvenuti sulla vostra nuova installazione di Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Non esitate a consultare i nostri forum se avete un qualunque problema: %s';
+?>
Index: /tags/2.6.0RC1/language/it_IT/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/it_IT/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Italiano [IT]
Index: /tags/2.6.0RC1/language/it_IT/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/it_IT/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/it_IT/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = 'Aggiornamento';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Questa pagina vi propone di aggiornare il vostro database corrispondente alla vecchia versione di Piwigo con la nuova versione.
+L\'assistente all\'aggiornamento ha identificato la vostra attuale <strong>versione %s</strong> (o equivalente).';
+$lang['Upgrade from version %s to %s'] = 'Aggiornamento dalla versione %s alla %s';
+$lang['Statistics'] = 'Statistiche';
+$lang['total upgrade time'] = 'tempo totale aggiornamento';
+$lang['total SQL time'] = 'tempo totale SQL';
+$lang['SQL queries'] = 'queries SQL';
+$lang['Upgrade informations'] = 'Informazioni aggiornamento';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Se riscontrate dei problemi, effettuate una manutenzione in [Amministrazione>Tools>Manutenzione].';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Per precauzione, i seguenti plugins sono stati disattivati. E\' necessario verificare se esistono degli aggiornamenti prima di riattivarli:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Solo l\'amministratore può eseguire l\'aggiornamento: fare login.';
+$lang['You do not have access rights to run upgrade'] = 'Non avete le autorizzazioni necessarie per effettuare l\'aggiornamento';
+$lang['All sub-albums of private albums become private'] = 'Tutti i sub-album degli album privati diventano privati';
+$lang['User permissions and group permissions have been erased'] = 'I permessi degli utenti e dei gruppi sono stati cancellati';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Solo il prefisso delle miniature e l\'indirizzo email del webmaster sono stati recuperati dalla precedente configurazione';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Nel file <i>%s</i>, prima di <b>?></b>, inserite:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Per precauzione, i seguenti temi sono stati disattivati. E\' necessario verificare se esistono degli aggiornamenti prima di riattivarli:';
+?>
Index: /tags/2.6.0RC1/language/ja_JP/README.txt
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/README.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/README.txt	(revision 25596)
@@ -0,0 +1,4 @@
+Piwigo Japanese language files
+Translator Mitsuhiro Yoshida (http://mitstek.com/)
+Started 2008-12-21
+Updated 2009-05-02
Index: /tags/2.6.0RC1/language/ja_JP/about.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+    <p>このフォトガラリーはPiwigoより作成されました。</p>
+
+    <p>Piwigo はユーザや開発者のコミュニティーにより作成し、ウェブのためのフォトガラリーのソフトウェアです。Piwigoのプラグインにより簡単にカスタマイズできます。Piwigoはオープンソースで無料です。</p>
+
+    <p id="linkToPiwigo"><a href="http://piwigo.org">Piwigoのホームページにどうぞ！
+
+    </a></p>
+
+    <p>Pigiwo日本語版の管理は
+      <ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=4725">irohaprojet</a></li>
+	    <li>Mit</li>
+	   </ul>
+    により感謝しています。</p>
Index: /tags/2.6.0RC1/language/ja_JP/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/admin.lang.php	(revision 25596)
@@ -0,0 +1,904 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d associations'] = '関連:%d';
+$lang['%d album including'] = 'アルバム: %d  - ';
+$lang['%d albums including'] = 'アルバム: %d  - ';
+$lang['%d physical'] = '物理ディレクトリ:%d ';
+$lang['%d physicals'] = '物理ディレクトリ:%d ';
+$lang[' and %d virtual'] = 'バーチャルディレクトリ:%d ';
+$lang[' and %d virtuals'] = 'バーチャルディレクトリ:%d ';
+$lang['%d album moved'] = '%d 件のアルバムが移動されました。';
+$lang['%d albums moved'] = '%d 件のアルバムが移動されました。';
+$lang['%d group'] = 'グループ:%d';
+$lang['%d groups'] = 'グループ:%d';
+$lang['%d member'] = 'メンバー:%d';
+$lang['%d members'] = 'メンバー:%d';
+$lang['%d tag'] = 'タグ:%d';
+$lang['%d tags'] = 'タグ:%d';
+$lang['%d user comment rejected'] = '%d 件のユーザコメントが拒否されました。';
+$lang['%d user comments rejected'] = '%d 件のユーザコメントが拒否されました。';
+$lang['%d user comment validated'] = '%d 件のユーザコメントが承認されました。';
+$lang['%d user comments validated'] = '%d 件のユーザコメントが承認されました。';
+$lang['%d user deleted'] = '%d ユーザが削除されました。';
+$lang['%d users deleted'] = '%d ユーザが削除されました。';
+$lang['%d user'] = 'ユーザ:%d';
+$lang['%d users'] = 'ユーザ:%d';
+$lang['%d waiting for validation'] = '承認待ち: %d 件';
+$lang['Actions'] = '操作';
+$lang['Activate'] = '有効化';
+$lang['Add/delete a permalink'] = 'パーマリンクを追加/削除する';
+$lang['Add a tag'] = 'タグを追加する';
+$lang['Add a user'] = 'ユーザを追加する';
+$lang['Add group'] = 'グループを追加する';
+$lang['Add'] = '追加';
+$lang['Allow user registration'] = 'ユーザー登録を許可する';
+$lang['Apply to sub-albums'] = 'サブアルバムに適用する';
+$lang['Associated'] = '関連';
+$lang['Caddie management'] = 'キャディ管理';
+$lang['Caddie'] = 'キャディ';
+$lang['Albums authorized thanks to group associations'] = 'グループの関連付けによりアルバムが許可されました。';
+$lang['Album manual order was saved'] = 'アルバムの手動順が保存されました。';
+$lang['Check for upgrade failed for unknown reasons.'] = '不明な理由により、アップグレードのチェックが失敗しました。';
+$lang['Check for upgrade'] = 'アップグレードをチェックする';
+$lang['Comments for all'] = 'すべてのユーザーにコメントを許可する';
+$lang['Current name'] = '現在の名称';
+$lang['Database'] = 'データベース';
+$lang['Deactivate'] = '無効化';
+$lang['Delete Representant'] = 'アルバムのサムネイルを削除する';
+$lang['Delete selected tags'] = '選択したタグを削除する';
+$lang['Delete selected users'] = '選択したユーザを削除する';
+$lang['Deletions'] = '削除';
+$lang['Deny selected groups'] = '選択したグループを拒否する';
+$lang['Deny selected users'] = '選択したユーザを拒否する';
+$lang['Description'] = '説明';
+$lang['Display options'] = '表示オプション';
+$lang['Dissociated'] = '関連なし';
+$lang['Does not represent'] = '非表示';
+$lang['Edit selected tags'] = '選択したタグを編集する';
+$lang['Edit tags'] = 'タグを編集する';
+$lang['Email admins when a new user registers'] = '新しいユーザーの登録時、管理者にメールする';
+$lang['Email admins when a valid comment is entered'] = '有効なコメントが入力された場合、管理者にメールする';
+$lang['Email admins when a comment requires validation'] = 'コメントの承認が必要な場合、管理者にメールする';
+$lang['Environment'] = '環境';
+$lang['Form'] = 'フォーム';
+$lang['Gallery title'] = 'ギャラリータイトル';
+$lang['Grant selected groups'] = '選択したグループに付与する';
+$lang['Grant selected users'] = '選択したユーザーに付与する';
+$lang['Group name'] = 'グループ名';
+$lang['Groups'] = 'グループ';
+$lang['Guests'] = 'ゲスト';
+$lang['History'] = '履歴';
+$lang['Informations'] = '情報';
+$lang['Install'] = 'インストール';
+$lang['Link all album photos to a new album'] = 'すべてのアルバムの写真を、新しいアルバムにリンクする';
+$lang['Link all album photos to some existing albums'] = 'すべてのアルバムの写真を、既存のアルバムにリンクする';
+$lang['Linked albums'] = 'リンクされたアルバム';
+$lang['Lock gallery'] = 'ギャラリーをロックする';
+$lang['Maintenance'] = 'メンテナンス';
+$lang['Edit album permissions'] = 'アルバムのパーミッションを管理する';
+$lang['Manage permissions for group "%s"'] = 'グループ「 %s 」のパーミッションを管理する';
+$lang['Manage permissions for user "%s"'] = 'ユーザー「 %s 」のパーミッションを管理する';
+$lang['Manage tags'] = 'タグを管理する';
+$lang['Members'] = 'メンバー';
+$lang['Metadata synchronized from file'] = 'ファイルからメタデータを同期する';
+$lang['Move albums'] = 'アルバムを移動する';
+$lang['Move'] = '移動';
+$lang['Name'] = '名称';
+$lang['New name'] = '新しい名称';
+$lang['New parent album'] = '新しい親アルバム';
+$lang['New tag'] = '新しいタグ';
+$lang['Number of comments per page'] = '1ページあたりのコメント数';
+$lang['Number of rates'] = '評価数';
+$lang['Number of thumbnails to create'] = '作成サムネイル数';
+$lang['Only private albums are listed'] = 'プライベートカテゴリのみ表示されています。';
+$lang['Operating system'] = 'オペレーティングシステム';
+$lang['Options'] = 'オプション';
+$lang['Other private albums'] = '他のプライベートカテゴリ';
+$lang['Page banner'] = 'ページバナー';
+$lang['Parent album'] = '親カテゴリ';
+$lang['Path'] = 'パス';
+$lang['Permalink'] = 'パーマリンク';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'パーマリンク %s は、すでにカテゴリ %s で使用されています。最初にパーマリンク履歴を削除してください。';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'パーマリンク名は、a-z、A-Z、0-9、「-」、「_」、「/」で構成される必要があります。数字または「-」が続く数字を使用することはできません。';
+$lang['Permalink %s is already used by album %s'] = 'パーマリンク %s は、すでにカテゴリ %s で使用されています。';
+$lang['Permalink history'] = 'パーマリンク履歴';
+$lang['Permalinks'] = 'パーマリンク';
+$lang['Permission denied'] = 'パーミッション拒否';
+$lang['Permission granted thanks to a group'] = 'グループにパーミッションが付与されました。';
+$lang['Permission granted'] = 'パーミッション付与';
+$lang['Photo informations updated'] = '写真情報が更新されました。';
+$lang['Plugins'] = 'プラグイン';
+$lang['Position'] = 'ポジション';
+$lang['Preferences'] = 'プリファレンス';
+$lang['Properties'] = 'プロパティ';
+$lang['Random photo'] = 'ランダム写真';
+$lang['Rate date'] = '評価日';
+$lang['Rating by guests'] = 'ゲストによる評価';
+$lang['Rating'] = '評価';
+$lang['Reject'] = '拒否';
+$lang['Representant'] = '見本';
+$lang['Representation of albums'] = 'カテゴリ見本';
+$lang['Representative'] = '見本';
+$lang['Represents'] = '表示';
+$lang['Save order'] = '表示順を保存する';
+$lang['Save to permalink history'] = 'パーマネントリンク履歴に保存する';
+$lang['Select at least one album'] = '少なくとも1つのカテゴリを選択してください。';
+$lang['Select at least one photo'] = '少なくとも1つの写真を選択してください。';
+$lang['Select at least one user'] = '少なくとも1名のユーザを選択してください。';
+$lang['Show info'] = '情報を表示する';
+$lang['Site manager'] = 'サイトマネージャ';
+$lang['Status'] = 'ステータス';
+$lang['Statistics'] = '統計';
+$lang['Storage album'] = '保存カテゴリ';
+$lang['Sum of rates'] = '評価の合計';
+$lang['Tag "%s" already exists'] = 'タグ "%s" は、すでに登録されています。';
+$lang['Tag "%s" was added'] = 'タグ "%s" が追加されました。';
+$lang['Tag selection'] = 'タグ選択';
+$lang['The %d following tags were deleted'] = '次の %d 件のタグが削除されました。';
+$lang['Uninstall'] = 'アンインストール';
+$lang['Use the default photo sort order (defined in the configuration file)']='デフォルトの (設定ファイルで定義された) イメージ並び順を使用する';
+$lang['User comments validation'] = 'ユーザコメント承認';
+$lang['Users'] = 'ユーザ';
+$lang['Validate'] = '承認';
+$lang['Validation'] = '承認';
+$lang['Version'] = 'バージョン';
+$lang['Virtual albums to move'] = '移動するバーチャルカテゴリ';
+$lang['Virtual album name'] = 'バーチャルカテゴリ名';
+$lang['Webmaster cannot be deleted'] = 'ウェブマスタは削除できません。';
+$lang['You are running on development sources, no check possible.'] = 'あなたは開発版を使用しているため、チェックすることはできません。';
+$lang['You cannot delete your account'] = "あなた自身のアカウントを削除できません。";
+$lang['You cannot move an album in its own sub album'] = 'あなたは、カテゴリをサブカテゴリに移動できません。';
+$lang['You need to confirm deletion'] = 'あなたは、削除を確認する必要があります。';
+$lang['Associate to album'] = 'アルバムに関連付ける';
+$lang['associate to group'] = 'グループに関連付ける';
+$lang['Authorized'] = '承認';
+$lang['Add a virtual album'] = 'バーチャルカテゴリを追加する';
+$lang['Authorize users to add comments on selected albums'] = '選択されたカテゴリにユーザのコメント追加を許可する';
+$lang['The name of an album must not be empty'] = 'カテゴリ名は空白にしないでください。';
+$lang['Lock albums'] = 'アルバムをロックする';
+$lang['Private'] = 'プライベートカテゴリ';
+$lang['Public'] = 'パブリックカテゴリ';
+$lang['Find a new representant by random'] = '新しいサムネイルをランダムに探す';
+$lang['Public / Private'] = 'パブリック / プライベート';
+$lang['Manage authorizations for selected albums'] = '選択したアルバムの権限を管理する';
+$lang['Virtual album added'] = 'バーチャルカテゴリが追加されました。';
+$lang['Virtual album deleted'] = 'バーチャルカテゴリが削除されました。';
+$lang['Access type'] = 'アクセスタイプ';
+$lang['Information data registered in database'] = 'データベースに登録された情報データ';
+$lang['Default display'] = 'デフォルト表示';
+$lang['The gallery URL is not valid.'] = 'ギャラリーURIが有効ではありません。';
+$lang['The number of comments a page must be between 5 and 50 included.'] = '1ページあたりのコメント数は、5から50の間にしてください。';
+$lang['Configuration'] = '設定';
+$lang['confirm'] = '確認';
+$lang['Date'] = '日付';
+$lang['delete album'] = 'カテゴリを削除する';
+$lang['Dissociate from album'] = 'アルバムから関連付けを解除する';
+$lang['dissociate from group'] = 'グループから関連付けを解除する';
+$lang['Album updated successfully'] = 'アルバム情報が正常に更新されました。';
+$lang['photos per page'] = '1ページあたりのエレメント';
+$lang['High definition enabled'] = '高解像度を有効にする';
+$lang['File'] = 'ファイル';
+$lang['first photo added on %s'] = '最初のエレメント追加日時 %s';
+$lang['Forbidden'] = '禁止';
+$lang['global mode'] = 'グローバルモード';
+$lang['group "%s" added'] = 'グループ "%s" が追加されました。';
+$lang['group "%s" deleted'] = 'グループ "%s" が削除されました。';
+$lang['group "%s" updated'] = 'グループ "%s" が更新されました。';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'グループ名には「"」または「\'」を含んだり、空白にしないでください。';
+$lang['This name is already used by another group.'] = 'このグループ名は、すでに別のグループで使用されています。';
+$lang['High definition'] = '高解像度';
+$lang['jump to album'] = 'カテゴリにジャンプする';
+$lang['jump to photo'] = 'イメージにジャンプする';
+$lang['leave'] = '変更なし';
+$lang['Lock'] = 'ロック';
+$lang['Locked'] = 'ロック済み';
+$lang['manage album photos'] = 'カテゴリエレメントを管理する';
+$lang['manage sub-albums'] = 'サブカテゴリを管理する';
+$lang['Manage'] = '管理';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = '実行時間が終了しました。処理を継続します [予想時間: %d 秒]。';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = '実行時間が終了しました。処理を継続します  [予想時間: %d 秒].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'メール送信するユーザリストのユーザ数が制限されています。他のユーザは、リストに含まれていません。';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'メール送信時間が制限されています。他のメールはスキップされます。';
+$lang['To send ?'] = '送信?';
+$lang['Last send'] = '最終送信';
+$lang['User'] = 'ユーザ';
+$lang['See you soon,'] = 'それでは ';
+$lang['Go to'] = '移動 ';
+$lang['Hello'] = 'こんにちは ';
+$lang['New photos were added'] = '新しい写真が追加されました';
+$lang['on'] = ' ';
+$lang['between'] = ' ';
+$lang['and'] = ' - ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'あなたが通知メールを受信するよう、ウェブマスタが購読登録しました。';
+$lang['You have subscribed to receiving notifications by mail.'] = 'あなたは、通知メールを購読登録しました。';
+$lang['To subscribe'] = '購読登録するには、';
+$lang['If you encounter problems or have any question, please send a message to'] = 'あなたが問題に遭遇した場合、質問がある場合、次の宛先にメール送信してください:';
+$lang['[NBM] Problems or questions'] = '[NBM] 問題または質問';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'あなたの通知メール購読をウェブマスタが解除しました。';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'あなたは、通知メールを購読解除しました。';
+$lang[', click on'] = '次のリンクをクリックしてください:';
+$lang['To unsubscribe'] = '受講解除するには、';
+$lang['With blank value, gallery title will be used'] = '空白の場合、ギャラリータイトルが使用されます。';
+$lang['Notification'] = '通知';
+$lang['Error when sending email to %s [%s].'] = '%s [%s] にメール送信中、エラーが発生しました。';
+$lang['Mail sent to %s [%s].'] = 'メールが %s [%s] に送信されました。';
+$lang['%d mail was sent.'] = '%d メールが送信されました。';
+$lang['%d mails were sent.'] = '%d メールが送信されました。';
+$lang['%d mail was not sent.'] = '%d メールは送信されませんでした。';
+$lang['%d mails were not sent.'] = '%d メールは送信されませんでした。';
+$lang['No mail to send.'] = '送信すべきメールがありません。';
+$lang['There is no available subscribers to mail.'] = 'メールを送信できるユーザは存在しません。';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = '通知する新しいエレメントがある場合、ユーザが利用できます。';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'ユーザーはメール購読できません (このタブは、ウェブマスタにのみ表示されます)。';
+$lang['No user to send notifications by mail.'] = '通知メールを送信できるユーザは存在しません。';
+$lang['New photos added'] = '新しい写真が追加されました';
+$lang['Subscribe to notification by mail'] = '通知メールを購読する';
+$lang['Unsubscribe from notification by mail'] = '通知メールを購読解除する';
+$lang['Parameter'] = 'パラメータ';
+$lang['Continue processing treatment'] = '処理を続ける';
+$lang['Complementary mail content'] = '補足メールコンテンツ';
+$lang['Add detailed content'] = '詳細コンテンツを追加する';
+$lang['Send mail as'] = '送信者名';
+$lang['Send mail to users'] = 'ユーザにメールを送信する';
+$lang['Send'] = '送信';
+$lang['Options'] = 'オプション';
+$lang['Subscribed'] = '購読中';
+$lang['Subscribe'] = '購読';
+$lang['Parameters'] = 'パラメータ';
+$lang['Select recipients'] = '受信者の選択';
+$lang['Subscribe/unsubscribe users'] = 'ユーザの購読登録/購読解除';
+$lang['Unsubscribed'] = '購読なし';
+$lang['%d parameter was updated.'] = '%d 件のパラメータが更新されました。';
+$lang['%d parameters were updated.'] = '%d 件のパラメータが更新されました。';
+$lang['%d user was not updated.'] = '%d 名のユーザが更新されませんでした。';
+$lang['%d users were not updated.'] = '%d 名のユーザが更新されませんでした。';
+$lang['User %s [%s] was removed from the subscription list.'] = 'ユーザ %s [%s] は、購読リストから削除されました。';
+$lang['User %s [%s] was added to the subscription list.'] = 'ユーザ %s [%s] は、購読リストに追加されました。';
+$lang['%d user was updated.'] = '%d 名のユーザが更新されました。';
+$lang['%d users were updated.'] = '%d 名のユーザが更新されました。';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'ユーザ %s [%s] は、購読リストから削除されませんでした。';
+$lang['User %s [%s] was not added to the subscription list.'] = 'ユーザ %s [%s] は、購読リストに追加されませんでした。';
+$lang['User %s [%s] added.'] = 'ユーザ %s [%s] が追加されました。';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = '注意: 購読登録または購読解除の設定は、ユーザ宛にメール通知されます。';
+$lang['Send mail on HTML format'] = 'HTMLフォーマットでメールを送信する';
+$lang['Include display of recent photos grouped by dates'] = '最近の写真グループの日付ごとの表示を含む';
+$lang['Available only with HTML format'] = 'HTMLフォーマットのみ利用可';
+$lang['no write access'] = 'アクセス権なし';
+$lang['Permissions'] = 'パーミッション';
+$lang['private'] = 'プライベート';
+$lang['public'] = 'パブリック';
+$lang['Purge never used notification feeds'] = '未使用の通知フィードを削除する';
+$lang['Purge sessions'] = 'セッションを削除する';
+$lang['randomly represented'] = 'ランダム表示';
+$lang['registration date'] = '登録日';
+$lang['clean'] = 'クリーン';
+$lang['Create this site'] = 'このサイトを作成する';
+$lang['test'] = 'テスト';
+$lang['test this remote site'] = 'このリモートサイトをテストします。';
+$lang['remove tags'] = 'タグを削除する';
+$lang['Repair and optimize database'] = 'データベースを修復および最適化する';
+$lang['selection'] = '選択';
+$lang['set to'] = '設定';
+$lang['singly represented'] = '単独表示';
+$lang['This site already exists'] = 'このサイトは、すでに登録されています。';
+$lang['created'] = 'が作成されました。';
+$lang['delete'] = '削除';
+$lang['delete this site and all its attached elements'] = 'このサイトおよびすべてに添付ファイルを削除します。';
+$lang['deleted'] = 'が削除されました。';
+$lang['an error happened'] = 'エラーが発生しました。';
+$lang['Local'] = 'ローカル';
+$lang['Remote'] = 'リモート';
+$lang['update the database from files'] = 'ファイルからデータベースを更新します。';
+$lang['status'] = 'ステータス';
+$lang['Directory'] = 'ディレクトリー';
+$lang['sub-albums'] = 'サブカテゴリ';
+$lang['Synchronize metadata'] = 'メタデータを同期化する';
+$lang['target'] = 'ターゲット';
+$lang['Thumbnail'] = 'サムネイル';
+$lang['Title'] = 'タイトル';
+$lang['Album list management'] = 'アルバム管理';
+$lang['Piwigo configuration'] = 'Piwigo設定';
+$lang['Edit album'] = 'アルバムを編集する';
+$lang['Group management'] = 'グループ管理';
+$lang['User list'] = 'ユーザリスト';
+$lang['Edit photo information'] = '写真情報を修正する';
+$lang['Database synchronization with files'] = 'ファイルおよびデータベースの同期化';
+$lang['all'] = 'すべて';
+$lang['height must be a number superior to'] = '高さは、次の値より大きくしてください:';
+$lang['width must be a number superior to'] = '幅は、次の値より大きくしてください:';
+$lang['for the file format'] = 'ファイルフォーマット';
+$lang['Photo unreachable or no support'] = '写真にアクセスできないか、次の内容がサポートされていません:';
+$lang['GD version'] = 'GDバージョン';
+$lang['General statistics'] = '一般統計';
+$lang['average time'] = '平均時間';
+$lang['number of miniaturized photos'] = '縮小化された写真数';
+$lang['total time'] = '合計時間';
+$lang['for this file format'] = 'このファイルフォーマット';
+$lang['unit mode'] = 'ユニットモード';
+$lang['Unlocked'] = '未ロック';
+$lang['unset'] = '設定解除';
+$lang['Update albums informations'] = 'カテゴリ情報を更新する';
+$lang['Update photos information'] = 'イメージ情報を更新する';
+$lang['Synchronize'] = '同期化';
+$lang['reduce to single existing albums'] = '既存の単一カテゴリに減らす';
+$lang['Choose an option'] = 'オプションの選択';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = '最大限の情報を表示する (追加されたカテゴリおよびエレメント、削除されたカテゴリおよびエレメント)';
+$lang['Error list'] = 'エラーリスト';
+$lang['Errors caption'] = 'エラーの凡例';
+$lang['Detailed informations'] = '詳細情報';
+$lang['File/directory read error'] = 'ファイル/ディレクトリ読み込みエラー';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'ファイルまたはディレクトリにアクセスできません (存在していないか、アクセスが拒否されています)。';
+$lang['albums deleted in the database'] = 'カテゴリがデータベースから削除されました。';
+$lang['photos deleted from the database'] = 'エレメントがデータベースから削除されました。';
+$lang['photos candidates for metadata synchronization'] = 'メタデータ同期化候補のイメージ';
+$lang['photos informations synchronized with files metadata'] = 'ファイルメタデータに同期化されたエレメント情報';
+$lang['errors during synchronization'] = '同期化中にエラーが発生しました。';
+$lang['albums added in the database'] = 'カテゴリがデータベースに追加されました。';
+$lang['photos added in the database'] = 'データベースにエレメントが追加されました。';
+$lang['photos updated in the database'] = 'データベースのエレメントが更新されました。';
+$lang['Search for new images in the directories'] = 'ディレクトリ内の新しいイメージを検索する';
+$lang['added'] = '追加済み';
+$lang['deleted'] = '削除済み';
+$lang['Metadata synchronization results'] = 'メタデータ同期結果';
+$lang['only perform a simulation (no change in database will be made)'] = 'シミュレーションのみ実行する (データベースは更新されません)';
+$lang['Simulation'] = 'シミュレーション';
+$lang['directories + files'] = 'ディレクトリ + ファイル';
+$lang['only directories'] = 'ディレクトリのみ';
+$lang['synchronize files structure with database'] = 'ファイル構造とデータベースを同期化する';
+$lang['synchronize files metadata with database photos informations'] = 'ファイルメタデータとデータベースエレメント情報を同期化する';
+$lang['even already synchronized photos'] = 'すでに同期化されているエレメントも同期化する';
+$lang['Used metadata'] = '使用済みメタデータ';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'ディレクトリ名およびファイル名は、文字および記号「-」「_」「.」で構成される必要があります。';
+$lang['wrong filename'] = 'ファイル名が正しくありません。';
+$lang['Upload'] = 'アップロード';
+$lang['user "%s" added'] = 'ユーザ "%s" が追加されました。';
+$lang['User status'] = 'ユーザステータス';
+$lang['user_status_admin'] = '管理者';
+$lang['user_status_generic'] = '一般';
+$lang['user_status_guest'] = 'ゲスト';
+$lang['user_status_normal'] = 'ユーザ';
+$lang['user_status_webmaster'] = 'ウェブマスタ';
+$lang['Virtual album'] = 'バーチャルカテゴリ';
+$lang['Waiting'] = '承認待ち';
+$lang['default'] = 'デフォルト';
+$lang['Toggle \'default group\' property'] = '「デフォルトグループ」属性に切り替える';
+$lang['Advanced features'] = '高度な機能';
+$lang['Overall'] = '全体';
+$lang['Year'] = '年';
+$lang['Month'] = '月';
+$lang['Day'] = '日';
+$lang['Pages seen'] = 'ページ閲覧回数';
+$lang['Time'] = '時間';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'エレメント';
+$lang['Section'] = 'セクション';
+$lang['An information email was sent to group "%s"'] = 'グループ %s に情報メールが送信されました。';
+$lang['Send an information email to group members'] = 'グループメンバーに情報メールを送信する';
+$lang['Group'] = 'グループ';
+$lang['[%s] Visit album %s'] = '[%s]  %s を訪問してください。';
+$lang['Hello,'] = 'こんにちは。';
+$lang['See you soon.'] = 'さようなら。';
+$lang['Discover album:'] = 'アルバムを見つけてください:';
+$lang['Mail content'] = 'メールの内容';
+$lang['none'] = 'なし';
+$lang['high'] = '高';
+$lang['other'] = 'その他';
+$lang['Element type'] = 'エレメントタイプ';
+$lang['Image id'] = 'イメージID';
+$lang['Summary'] = 'サマリー';
+$lang['%d line filtered'] = '%d 行がフィルタされました。';
+$lang['%d lines filtered'] = '%d 行がフィルタされました。';
+$lang['%d guest'] = '%d 訪問者';
+$lang['%d guests'] = '%d 訪問者';
+$lang['Hour'] = '時間';
+$lang['guest'] = 'ゲスト';
+$lang['default values'] = 'デフォルト値';
+$lang['Guest cannot be deleted'] = 'ゲストは削除できません。';
+$lang['Default user cannot be deleted'] = 'デフォルトユーザーは削除できません。';
+$lang['Purge history detail'] = '履歴詳細を消去する';
+$lang['Purge history summary'] = '履歴サマリーを消去する';
+$lang['Check integrity'] = '整合性の確認';
+$lang['Anomaly'] = '例外';
+$lang['Correction'] = '修正';
+$lang['Automatic correction'] = '自動修正';
+$lang['Impossible automatic correction'] = '自動修正できません。';
+$lang['Correction applied with success'] = '正常に修正が適用されました。';
+$lang['Correction applied with error'] = '修正の適用にエラーが発生しました。';
+$lang['%d anomaly has been detected.'] = '%d 件の例外が検出されました。';
+$lang['%d anomalies have been detected.'] = '%d 件の例外が検出されました。';
+$lang['%d anomaly has been corrected.'] = '%d 件の例外が訂正されました。';
+$lang['%d anomalies have been detected corrected.'] = '%d 件の例外が訂正されました。';
+$lang['%d anomaly has not been corrected.'] = '%d 件の例外が訂正されませんでした。';
+$lang['%d anomalies have not been corrected.'] = '%d 件の例外が訂正されませんでした。';
+$lang['Go to %s or %s for more informations'] = '%s へアクセスするか、%s で詳細情報をご覧ください。';
+$lang['the forum'] = 'フォーラム';
+$lang['the wiki'] = 'Wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'exifがサポートされていないため、%s の値は正しいファイルではありません。';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = 'あなたのconfig_local.inc.phpファイルで %s は、falseに設定してください。';
+$lang['Main "guest" user does not exist'] = 'メイン「ゲスト」ユーザーは存在しません。';
+$lang['Main "guest" user status is incorrect'] = 'メイン「ゲスト」ユーザーステータスが正しくありません。';
+$lang['Default user does not exist'] = 'デフォルトユーザーが設定されていません。';
+$lang['Main "webmaster" user does not exist'] = 'メイン「ウェブマスタ」ユーザーは存在しません。';
+$lang['Main "webmaster" user status is incorrect'] = 'メイン「ウェブマスタ」ユーザーステータスが正しくありません。';
+$lang['User "%s" created with "%s" like password'] = 'ユーザ「 %s 」がパスワード「 %s 」で作成されました。';
+$lang['Status of user "%s" updated'] = 'ユーザ "%s" のステータスが更新されました。';
+$lang['add new photos to caddie'] = 'キャディに新しいエレメントを追加する';
+$lang['No display'] = '表示なし';
+$lang['Classic display'] = 'クラシック表示';
+$lang['Hoverbox display'] = 'ホバーボックス表示';
+$lang['Mail address is obligatory for all users'] = 'すべてのユーザにメールアドレスを必須とする';
+$lang['Minimum privacy level'] = '最小プライバシーレベル';
+$lang['Privacy level'] = 'プライバシーレベル';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = '連絡先';
+$lang['Level 2'] = '友だち';
+$lang['Level 4'] = '家族';
+$lang['Level 8'] = '管理者';
+$lang['Reinitialize check integrity'] = '整合性の再初期化チェック';
+$lang['Check all'] = 'すべてをチェックする';
+$lang['Uncheck all'] = 'すべてを選択解除する';
+$lang['Check automatic corrections'] = '自動修正をチェックする';
+$lang['Apply selected corrections'] = '選択した修正を適用する';
+$lang['Ignore selected anomalies'] = '選択した例外を無視する';
+$lang['Refresh'] = 'リフレッシュ';
+$lang['The anomaly will be ignored until next application version'] = '次のバージョンまで、例外は無視されます。';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = '無視されるため、例外の修正はキャンセルされました。';
+$lang['%d anomaly has been ignored.'] = '%d 件の例外が無視されました。';
+$lang['%d anomalies have been ignored.'] = '%d 件の例外が無視されました。';
+$lang['Plugins which need upgrade'] = 'アップグレードが必要なプラグイン';
+$lang['Plugin list'] = 'プラグインリスト';
+$lang['Check for updates'] = 'アップデートをチェックする';
+$lang['Other plugins'] = '他のプラグイン';
+$lang['Last revisions'] = '最新のリビジョン';
+$lang['Are you sure you want to delete this plugin?'] = '本当にこのプラグインを削除してもよろしいですか?';
+$lang['Are you sure you want to install this plugin?'] = '本当にこのプラグインをインストールしてもよろしいですか?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = '本当にアップグレードを実行してもよろしいですか? このバージョンをアンインストールする必要があるかどうか確認してください。';
+$lang['Plugin has been successfully copied'] = 'プラグインが正常にコピーされました。';
+$lang['You might go to plugin list to install and activate it.'] = 'プラグインをインストールおよび解凍するため、あなたはプラグイン一覧にアクセスすることができます。';
+$lang['Can\'t create temporary file.'] = '一時ファイルを作成できません。';
+$lang['Can\'t download archive.'] = 'アーカイブをダウンロードできません。';
+$lang['Can\'t read or extract archive.'] = 'アーカイブを読めないか、展開できません。';
+$lang['An error occured during extraction (%s).'] = '展開中にエラーが発生しました (%s)。';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = '「プラグイン」フォルダおよびサブフォルダのパーミッションをチェック (CHMOD) してください。';
+$lang['Can\'t connect to server.'] = 'サーバに接続できません。';
+$lang['Purge compiled templates'] = 'コンパイル済みテンプレートを削除する';
+$lang['ACCESS_0'] = 'フリーアクセス';
+$lang['ACCESS_1'] = 'すべてのユーザがアクセスできる';
+$lang['ACCESS_2'] = '登録ユーザのみアクセスできる';
+$lang['ACCESS_3'] = '管理者にアクセスする';
+$lang['ACCESS_4'] = 'ウェブマスタにアクセスする';
+$lang['ACCESS_5'] = 'アクセスなし';
+$lang['Support'] = 'サポート';
+$lang['Documentation'] = 'ドキュメンテーション';
+$lang['A new version of Piwigo is available.'] = '新しいバージョンのPiwigoが利用可能です。';
+$lang['Piwigo Administration'] = 'Piwigo管理';
+$lang['Piwigo version'] = 'Piwigoバージョン';
+$lang['You are running the latest version of Piwigo.'] = 'あなたは最新バージョンのPiwigoを使用しています。';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'インストールされている %s [%s] のバージョンは、必須バージョン [%s] に互換性がありません。';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'アプリケーションを十分に活用するには、あなたのシステムをアップグレードする必要があります。そうでない場合、アプリケーションは正常に動作しません。';
+$lang['Deleted on'] = '削除日時';
+$lang['Last hit'] =  '最新ヒット数';
+$lang['GD library is missing'] = 'GDライブラリがありません。';
+$lang['Templates'] = 'テンプレート';
+$lang['Extend for templates'] = 'テンプレートの拡張';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'template-extensionサブフォルダのテンプレートをカスタマイズして、オリジナルのテンプレートと置換します。';
+$lang['Replacers (customized templates)'] = '置換テンプレート (カスタマイズ済みテンプレート)';
+$lang['Original templates'] = 'オリジナルテンプレート';
+$lang['Optional URL keyword'] = '任意のURIキーワード';
+$lang['Templates configuration has been recorded.'] = 'テンプレート設定が保存されました。';
+$lang['All optimizations have been successfully completed.'] = 'すべての最適化が正常に完了しました。';
+$lang['Optimizations have been completed with some errors.'] = 'いくつかのエラーを含んで最適化が完了しました。';
+$lang['Modify information'] = '情報を修正する';
+$lang['nothing'] = 'なし';
+$lang['overrides existing values with empty ones'] = '既存の値を空白にする';
+$lang['Manage photo ranks'] = '写真のランクを管理する';
+$lang['Edit ranks'] = 'ランクを編集する';
+$lang['No photo in this album'] = 'このアルバムには、写真がありません。';
+$lang['Images manual order was saved'] = 'イメージ手動並び替えが保存されました。';
+$lang['ranks'] = 'ランク';
+$lang['Drag to re-order'] = 'ドラッグして並び替え';
+$lang['Quick Local Synchronization'] = 'クイックローカル同期';
+$lang['No photo can be deleted'] = '削除できる写真はありません';
+$lang['Delete selected photos'] = '選択した写真を削除する';
+$lang['%d photo was deleted'] = '%d 写真が削除されました。';
+$lang['%d photos were deleted'] = '%d 写真が削除されました。';
+// --------- Starting below: New or revised $lang ---- from Colibri
+$lang['Unable to check for upgrade.'] = 'アップグレードを確認できません。';
+$lang['Operation in progress'] = '処理中';
+$lang['Please wait...'] = 'しばらくお待ち下さい...';
+$lang['Downloads'] = 'ダウンロード';
+$lang['Released on'] = '発行';
+$lang['Number of downloads'] = 'ダウンロードの件数';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo のニューズレター';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Piwigoプロジェットのニュースレターでは、Piwigoの新しいリリース情報やセキュリティ・バグ修正、アップグレードなどについてのお知らせいたします。Piwigoのニュースレターに加入して下さい。';
+$lang['Subscribe %s'] = '加入 %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = ' %s Piwigoのニューズレターを加入する';
+$lang['Purge search history'] = 'パージ検索履歴';
+$lang['Hide'] = '隠す';
+$lang['Password is missing. Please enter the password.'] = 'パスワードがありません。パスワードを入力して下さい。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'パスワードの再確認がありません。パスワードの再確認を確認して下さい。';
+$lang['Allow users to edit their own comments'] = 'ユーザーは自分のコメントを編集できるようにする';
+$lang['Allow users to delete their own comments'] = 'ユーザーは自分のコメントを削除できるようにする';
+$lang['Email administrators when a comment is modified'] = 'コメントが変更された時、管理者にメールを送信する';
+$lang['Email administrators when a comment is deleted'] = 'コメントが削除された時、管理者にメールを送信する';
+$lang['Cannot delete the old permalink !'] = '旧パーマリンクを削除できません!';
+$lang['Hit'] = 'ヒット';
+$lang['Tools'] = 'ツール';
+$lang['Photos'] = '写真';
+$lang['Themes'] = 'テーマ';
+$lang['Instructions to use Piwigo'] = 'Piwigoの使い方';
+$lang['Installed Themes'] = 'インストールされたテーマ';
+$lang['Add New Theme'] = 'テーマを追加';
+$lang['Forbid this theme to users'] = 'このテーマをユーザーに禁止する';
+$lang['Set as default theme for unregistered and new users'] = '新しいユーザーや登録されてないユーザーにデフォルト・テーマを設定する';
+$lang['unknown'] = '不明';
+$lang['Upload Photos'] = '写真をアップロードする';
+$lang['Drop into album'] = 'アルバムに入れる';
+$lang['+ Add an upload box'] = '+ アップロード・ボックスを追加する';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = ' Piwigoにインストールされている場所の"%s" というディレクトリーに作成してください。';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Piwigoにインストールされている場所の "%s" というディレクトリーに書き込み(chmod 777)アクセスをする。';
+$lang['existing album'] = '存在しているカテゴリー';
+$lang['create a new album'] = '新しいカテゴリーを作成する';
+$lang['Album name'] = 'アルバム名';
+$lang['Album "%s" has been added'] = '"%s"のカテゴリーは追加されました。';
+$lang['Uploaded Photos'] = 'アップロードされた写真';
+$lang['%d photos uploaded'] = '%d 枚の写真がアップロードされた';
+$lang['Privacy level set to "%s"'] = 'プライバシー設定: "%s"';
+$lang['Album "%s" now contains %d photos'] = 'アルバム "%s" は現在　%d 枚の写真があります。';
+$lang['Manage this set of %d photos'] = ' %d 枚の写真を管理する';
+$lang['Select files'] = 'ファイルを選択する';
+$lang['Everybody'] = '全員';
+$lang['Who can see these photos?'] = 'どなたがこの写真を見られますか？';
+$lang['Settings'] = '設定';
+$lang['Resize'] = '拡大・縮小';
+$lang['Maximum width'] = '最大の幅';
+$lang['pixels'] = 'ピクセル';
+$lang['Maximum height'] = '最大の高さ';
+$lang['Image Quality'] = '画質';
+$lang['Save Settings'] = '設定を保存';
+$lang['Your configuration settings are saved'] = 'あなたの設定は保存されていました';
+$lang['Active Themes'] = '有効なテーマ';
+$lang['Add write access to the "%s" directory'] = '"%s" ディレクトリーに書き込みアクセスを追加';
+$lang['Administration Home'] = '管理用ホーム';
+$lang['Change Admin Colors'] = '管理用ホームの色を変更';
+$lang['Delete this theme'] = 'このテーマを削除';
+$lang['Directory does not exist'] = 'ディレクトリーは存在しません';
+$lang['Download,'] = 'ダウンロード,';
+$lang['FTP + Synchronization'] = 'FTP + 同期';
+$lang['Get Support on Piwigo Forum'] = 'Piwigoフォーラムでサポートを入手';
+$lang['Help Me'] = 'ヘルプ';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'このテーマを有効になれません。親テーマがありません: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'その他のテーマはこのテーマが必要なので、テーマを削除できません: %s';
+$lang['Inactive Themes'] = '無効なテーマ';
+$lang['Install on your computer,'] = 'あなたのパソコンにインストールする,';
+$lang['Make this theme available to users'] = 'このテーマをユーザーが利用できるようにする';
+$lang['Page end'] = 'ページの終わり';
+$lang['Piwigo Uploader'] = 'Piwigo アップローダ';
+$lang['Read Piwigo Documentation'] = 'Piwigoの説明書を読む';
+$lang['Start pLoader and add your photos.'] = 'pLoader を起動し、写真を追加する';
+$lang['Switch to clear or dark colors for administration'] = 'アドミニストレーションのために、透明色又は、暗い色に変更';
+$lang['Theme has been successfully installed'] = 'テーマのインストールは成功しました';
+$lang['Visit Gallery'] = 'ギャラリーへ';
+$lang['Visit Piwigo project website'] = 'Piwigo のホームページへ';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader は <em>Piwigo Uploader</em>と言います。pLoaderはあなたの写真をパソコンからあなたのPiwigoフォト・ギャラリーまで簡単にアップロードできます。';
+$lang['Guest Settings'] = 'ゲストの設定';
+$lang['Main Page'] = 'メインページ';
+$lang['Photo Page'] = '写真のページ';
+$lang['Activate Navigation Bar'] = 'ナビゲーション・バーを有効にする';
+$lang['Activate Navigation Thumbnails'] = 'ナビゲーションのサムネイルを有効にする';
+$lang['Activate icon "%s"'] = '"%s"のアイコンを有効する';
+$lang['Photo Properties'] = '写真のプロパティ';
+$lang['Allow user customization'] = 'ユーザーのカスタマイズを有効にする';
+$lang['Miscellaneous'] = 'その他の情報';
+$lang['Virtual Links'] = 'バーチャルのリンク';
+$lang['Languages'] = '言語';
+$lang['Installed Languages'] = 'インストールされた言語';
+$lang['Add New Language'] = '新しい言語を追加する';
+$lang['Language has been successfully installed'] = '言語のインストールは成功しました';
+$lang['Select:'] = '選択:';
+$lang['None'] = 'なし';
+$lang['Invert'] = '反転';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'このテーマは無効になりません。少なくとも一つのテーマが必要です。';
+$lang['Webmaster status is required.'] = 'ウェッブマスターのステータスが必要';
+$lang['Bound Theme'] = 'バウンドテーマ';
+$lang['Allow rating'] = '評価を許可する';
+$lang['Select at least one comment'] = '少なくとも一つのコメントを選択して下さい';
+$lang['Active Plugins'] = '有効なプラグイン';
+$lang['Inactive Plugins'] = '無効なプラグイン';
+$lang['Missing Plugins'] = '見つからないプラグイン';
+$lang['Uninstalled Plugins'] = 'インストールされてないプラグイン';
+$lang['By %s'] = '著作 %s';
+$lang['Visit plugin site'] = 'プラグインのサイトを訪問する';
+$lang['Active Languages'] = '有効な言語';
+$lang['Delete this language'] = 'この言語を削除する';
+$lang['Forbid this language to users'] = 'この言語をユーザーに禁止する';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'この言語を無効になれません。まず、その他の言語をデフォルトを設定して下さい。';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'この言語を無効になれません。少なくとも一つの言語が必要です。';
+$lang['Inactive Languages'] = '無効な言語';
+$lang['Make this language available to users'] = 'この言語をユーザーが利用できるようにする';
+$lang['Set as default language for unregistered and new users'] = '登録されてないユーザーと新しいユーザーのためにデフォルト言語を設定する。';
+$lang['Add Photos'] = '写真を追加します。';
+$lang['The following tag was deleted'] = '次のタグは削除されました。';
+$lang['There is no other language available.'] = 'その他の言語がありません。';
+$lang['There is no other plugin available.'] = 'その他のプラグインがありません。';
+$lang['There is no other theme available.'] = 'その他のテーマがありません。';
+$lang['By rank'] = '順番';
+$lang['Manual order'] = '手動順番';
+$lang['Add another set of photos'] = 'その他の写真を追加します';
+$lang['Order of menubar items has been updated successfully.'] = 'ニューの順番は正常に更新されました。';
+$lang['This theme was not designed to be directly activated'] = 'このテーマは直接有効化になりません。';
+$lang['Pending Comments'] = 'コメントを確認待ち';
+$lang['Menu Management'] = 'メニュー';
+$lang['%d of %d photos selected'] = '%d 個目の %d 個の写真選択されていました。';
+$lang['Action'] = 'アックション';
+$lang['Add a filter'] = 'フィルター追加';
+$lang['Album photos associated to the following albums: %s'] = '連携されていた写真アルバム: %s';
+$lang['Albums automatically sorted'] = 'アルバムを自動的に並び替えました';
+$lang['All %d photos are selected'] = '全ての %d 個の写真が選択されました';
+$lang['Apply action'] = 'アクションを実行する';
+$lang['automatic order'] = '自動並び替え';
+$lang['Batch Manager'] = 'バッチ・マネージャー';
+$lang['Choose an action'] = 'アクションを選択して下さい';
+$lang['Activate icon "new" next to albums and pictures'] = 'アルバムと写真のとなりに、\'起動アイコン　"新" があります';
+$lang['Deactivate all'] = '全て非活性する';
+$lang['Default photos order'] = 'デフォルト写真順番';
+$lang['Delete orphan tags'] = '使われていないタグを削除する';
+$lang['delete photo'] = '写真を削除する';
+$lang['Duplicates'] = '複写';
+$lang['Error on file "%s" : %s'] = '"%s"　のファイル・エラー : %s';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif 拡張機能がありません。管理者がexifの使用を中止すべきです。';
+$lang['Failed to write file to disk'] = 'ディスクに書き込みを失敗しました';
+$lang['File upload stopped by extension'] = '拡張機能による、ファイル・アップロードを中止しました。';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = ' あなたのphp.ini ファイルで、upload_max_filesize (%sB) (一回のアップロードの最大容量)が、post_max_size (%sB) (一回の投稿の最大容量)より大きいです。設定を変える必要があります。';
+$lang['Average rate'] = '平均評価';
+$lang['Rate'] = '評価';
+$lang['Learn more'] = '詳細はこちら';
+$lang['An error has occured during upgrade.'] = 'アップグレード中にエラーが発生しました。';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = '展開中にエラーが発生しました。あなたのPiwigoインストールのパーミッションを確認してください。<br /><a href="%s">ログエラーを表示するには、ここをクリックしてください</a>。';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigoは、アップグレードファイルをサーバから検索できません。';
+$lang['Save Template Directory'] = 'テンプレートディレクトリー保存';
+$lang['Dump Database'] = 'ダンプデータベース';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'データ履歴を含む（注意：サーバーのメモリー上限値を越える可能性があります。)';
+$lang['Unable to dump database.'] = 'ダンプデータベースができません。';
+$lang['Update in progress... Please wait.'] = 'アップグレード処理中 ... お待ちください。';
+$lang['Update to Piwigo %s'] = 'Piwigo %s にアップグレード';
+$lang['Two updates are available'] = '２個のアップグレードがあります';
+$lang['This is a minor update, with only bug corrections.'] = 'これはマイナーアップグレードだけバグ修正しています。';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'これはメジャーアップグレードで、 いろいろな楽しい<a href="%s">新機能がついています。</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'あるテーマとプラグインはまだできていません。';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Piwigo %sにアップグレードせずに、直接Piwigo %s にアップグレードすることができます（推進）。';
+$lang['Add to caddie'] = 'キャディに追加する';
+
+$lang['(this tag will be deleted)'] = '(このタグを削除される)';
+$lang['... or '] = '・・・または';
+$lang['Activate comments'] = 'コメントを有効する';
+$lang['Add a criteria'] = '条件を追加';
+$lang['Add tags'] = 'タグを追加';
+$lang['All extensions are up to date.'] = '全ての拡張機能が最新です';
+$lang['All languages are up to date.'] = '全ての言語が最新です';
+$lang['All plugins are up to date.'] = '全てのプラグインが最新です';
+$lang['All themes are up to date.'] = '全てのテーマが最新です';
+$lang['Allowed file types: %s.'] = '使用可能なファイル：%s。';
+$lang['Confirm merge'] = 'マージを確認して下さい';
+$lang['Create'] = '作成';
+$lang['Default comments order'] = 'デフォルトのコメント順';
+$lang['display'] = '表示';
+$lang['Height'] = '高さ';
+$lang['%d association'] = '関連:%d';
+$lang['%s has been successfully updated.'] = '%sのアップデートは成功しました。';
+$lang['Cancel'] = 'キャンセル';
+$lang['ERROR'] = 'エラー';
+$lang['Extensions Update'] = '拡張機能のアップデート';
+$lang['Ignore All'] = '全てを無視する。';
+$lang['Ignore this update'] = 'このアップデートを無視します。';
+$lang['List'] = '一覧';
+$lang['Manage Permissions'] = '権限管理';
+$lang['Merge selected tags'] = '選択したタグを統合する';
+$lang['Merge tags'] = 'タグを統合する';
+$lang['Move to album'] = 'アルバムへ移動';
+$lang['Original Size'] = 'オリジナルサイズ';
+$lang['Permission management'] = '権限管理';
+$lang['Remove all filters'] = '全てのフィルターを削除';
+$lang['Remove from caddie'] = 'キャディーから削除';
+$lang['Restore'] = '復元';
+$lang['Set author'] = '作者をセット';
+$lang['Some upgrades are available for extensions.'] = '拡張機能のアップグレードがあります。';
+$lang['Type here the author name'] = '作者名を入力してください。';
+$lang['Update All'] = '全てをアップデート';
+$lang['Update Complete'] = 'アップデート完了';
+$lang['Updates'] = 'アップデート';
+$lang['Watermark'] = '透かし';
+$lang['Width'] = '幅';
+$lang['Zoom'] = '拡大';
+$lang['add a new watermark'] = '新しい透かしを追加';
+$lang['custom'] = 'カスタム';
+$lang['hide details'] = '詳細を隠す';
+$lang['modified'] = '変更';
+$lang['remove author'] = '作者を削除';
+$lang['remove creation date'] = '作成日を削除';
+$lang['remove this filter'] = 'フィルターを削除';
+$lang['remove title'] = 'タイトルを削除';
+$lang['show details'] = '詳細表示';
+$lang['Crop'] = 'トリミングする';
+$lang['Resize after upload'] = 'アップロード後にサイズを変更';
+$lang['Searching...'] = '検索中...';
+$lang['Set title'] = 'タイトルを設定';
+$lang['Show menubar'] = 'メニューを表示';
+$lang['Start Upload'] = 'アップロード開始';
+$lang['Themes which need upgrade'] = 'テーマの更新が必要です。';
+$lang['Thumbnails generation in progress...'] = 'サムネイル作成中...';
+$lang['Type here the title'] = 'タイトルを入力して下さい。';
+$lang['Unknown upload error'] = '不明なアップロードエラー';
+$lang['Visit language site'] = '言語サイトへ移動';
+$lang['Visit theme site'] = 'テーマのサイトへ移動';
+$lang['Week starts on'] = '週の始まり';
+$lang['administrators'] = '管理者';
+$lang['Missing a temporary folder'] = '一時フォルダが見つかりません。';
+$lang['No file was uploaded'] = 'アップロードされたファイルはありません。';
+$lang['Piwigo Update'] = 'Piwigo をアップデート';
+$lang['Select a file'] = 'ファイル選択';
+$lang['Select an album'] = 'アルバムを選択';
+$lang['bottom left corner'] = '左下';
+$lang['bottom right corner'] = '右下';
+$lang['middle'] = '中央';
+$lang['top left corner'] = '左上';
+$lang['top right corner'] = '右上';
+$lang['%s photos can not be regenerated'] = '%s更新できなかった写真。';
+$lang['%s photos have been regenerated'] = '%s更新できた写真。';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'おおよその最大レゾリューション：%dM ピクセル (%dx%d ピクセルである).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'デフォルトで、PiwigoがHD（高品位）版の写真より、最新ウェブサイズ版を作成します。';
+$lang['Do you want to activate anyway?'] = 'とにかく有効化したいですか？';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'エラー：このプラグインがありませんが、インストールされています！すぐアンインストールして下さい。';
+$lang['Follow Orientation'] = '配向進み';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '次のプラグインは、Piwigoの最新版で使えない可能性があります。';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = '次のテーマは、Piwigoの最新版で使えない可能性があります。';
+$lang['Graphics Library'] = '画像ライブラリー';
+$lang['I decide to update anyway'] = 'とにかくアップデートすることにします。';
+$lang['Languages which need upgrade'] = 'アップグレードの必要な言語';
+$lang['Last import'] = '最終インポート';
+$lang['Maximum file size: %sB.'] = '最大ファイル・サイズ：%sB.';
+$lang['New Version'] = '新しいバージョン';
+$lang['Photo %s of %s'] = '写真%sの%s';
+$lang['Photo name'] = '写真名';
+$lang['Selection'] = '選択';
+$lang['Send connection settings by email'] = '接続設定をメールで送って下さい';
+$lang['include child albums'] = '子アルバム含み';
+$lang['manual order'] = 'マニュアル順';
+$lang['new'] = '最新';
+$lang['%d day'] = '%d 日';
+$lang['%d days'] = '%d 日間';
+$lang['%d hour'] = '%d 時';
+$lang['%d hours'] = '%d 時間';
+$lang['%d minute'] = '%d 分';
+$lang['%d minutes'] = '%d 分間';
+$lang['%d month'] = '%d 月';
+$lang['%d months'] = '%d ヶ月間';
+$lang['%d second'] = '%d 秒';
+$lang['%d seconds'] = '%d 秒間';
+$lang['%d week'] = '%d 週';
+$lang['%d weeks'] = '%d 週間';
+$lang['%d year'] = '%d 年';
+$lang['%d years'] = '%d 年間';
+$lang['%s ago'] = '%s 前';
+$lang['%s in the future'] = '%s 先';
+$lang['A locked gallery is only visible to administrators'] = 'ロックされたギャラリーは管理者にのみ表示されます。';
+$lang['Applications'] = 'アプリケーション';
+$lang['Available on'] = 'が利用可能';
+$lang['Available versions for'] = '利用可能なバージョンは';
+$lang['Edit photo'] = '写真を編集';
+$lang['Gallery unlocked'] = 'ギャラリーのロック解除';
+$lang['Groups and users'] = 'グループとユーザー';
+$lang['Multiple Size'] = '複数のサイズ';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Lightroom 用 Piwigo エクスポートプラグイン';
+$lang['Piwigo export plugin for Aperture'] = 'Aperture 用 Piwigo エクスポートプラグイン';
+$lang['Piwigo export plugin for iPhoto'] = 'iPhoto 用 Piwigo エクスポートプラグイン';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Shotwell 用 Piwigo 公開プラグイン';
+$lang['Piwigo publish plugin for digiKam'] = 'digiKam 用 Piwigo 公開プラグイン';
+$lang['Predefined filter'] = '定義済みフィルター';
+$lang['Select groups...'] = 'グループを選択...';
+$lang['Select users...'] = 'ユーザーを選択...';
+$lang['Set creation date'] = 'コレクション日を設定';
+$lang['Sharpen'] = 'シャープ';
+$lang['The whole page'] = 'ページ全体';
+$lang['The whole set'] = 'セット全体';
+$lang['This album contains no photo.'] = 'このアルバムには写真がありません。';
+$lang['Unlock gallery'] = '未ロックのギャラリー';
+$lang['Web Form'] = 'ウェブフォーム';
+$lang['X Position'] = 'X ポジション';
+$lang['X Repeat'] = 'X リピート';
+$lang['Y Position'] = 'Y ポジション';
+$lang['any visitor can see this album'] = '誰でもこのアルバムを見ることができます。';
+$lang['create a new site'] = '新規サイト作成';
+$lang['pending validation'] = '検証待ち';
+$lang['Delete multiple size images'] = '複数サイズのイメージを削除';
+$lang['Generate multiple size images'] = '複数サイズのイメージを作成';
+$lang['Original file : %s'] = 'オリジナルファイル : %s';
+$lang['Added by %s'] = '%sで追加されました。';
+$lang['Automatic sort order'] = '自動並び替え';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = '写真の真ん中は中心デフォルト';
+$lang['Center of interest'] = '中心';
+$lang['No destination tag selected'] = '行き先タグ選択されていません';
+$lang['No group is permitted to see this private album'] = 'このプライベートなアルバムを見ることのできるグループはありません';
+$lang['No photo in the current set.'] = '現在のセットには写真がありません。';
+$lang['No photo selected, %d photos in current set'] = '写真が選択されません。現在のセットに%d枚写真があります。';
+$lang['Orphan tags deleted'] = 'オーファンタグ削除されました。';
+$lang['Photos generation in progress...'] = '写真作成中・・・';
+$lang['Posted %s on %s'] = '%sの%s展示されました。';
+$lang['Save manual order'] = 'マニュアル順保存します。';
+$lang['Select the destination tag'] = 'タグの行き先を選択します。';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'このプラグインは現在PIWIGO本ソフトに含まれています！今すぐアンインストールしてください！';
+$lang['The uploaded file was only partially uploaded'] = 'アップロードされたファイルが途中失敗しました。';
+$lang['There is no group in this gallery.'] = 'このガラリにグループがありません。';
+$lang['Type in a search term'] = '検索アイテムを入力してください。';
+$lang['Visited %d times'] = '%d回見られました。';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '注意！このプラグインがこのPIWIGOのバージョンに合っていません。';
+$lang['Who can see this photo?'] = 'どなたがこの写真を見られますか？';
+$lang['With no album'] = 'アルバムなしを含まれます。';
+$lang['With no tag'] = 'タグなしを含まれます。';
+$lang['With no virtual album'] = 'バーチャル・アルバムが含まれません。';
+$lang['You can activate only one mobile theme.'] = 'モバイル・テーマ一つしか有効できません。';
+$lang['cancel manual order'] = 'マニュアル順を中止します。';
+$lang['registered users'] = '登録されているユーザー';
+$lang['simple visitors'] = '単ユーザー';
+$lang['Obsolete Plugins'] = 'サポートされないプラグイン';
+$lang['Opacity'] = '不透明度';
+$lang['No results'] = '結果なし';
+$lang['No photo selected, no action possible.'] = '写真が選択されていないので、なにもできません。';
+$lang['Not cropped correctly?'] = '正しくトリミングできませんでしたか?';
+$lang['Notify administrators when a comment is'] = 'コメントがされた際に、管理者へ知らせる';
+$lang['Name of the duplicate'] = '複写の名前';
+$lang['No group selected, no action possible.'] = 'グループが選択されていないので、何もできません。';
+$lang['No members to manage'] = '管理すべきメンバーがいません';
+$lang['No order field selected'] = '順序フィールドが選択されていません';
+$lang['Merge selected groups'] = '選択されたグループを統合する';
+$lang['Minimum height'] = '最小高さ';
+$lang['Minimum width'] = '最小幅
+';
+$lang['Manage photos'] = '写真を管理する';
+$lang['Manage the members'] = 'メンバーを管理する';
+$lang['Landscape'] = '横置';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'トリミングする大きさを四角で指定してください。Piwigoは対象の中心を含むように最善を尽します。';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'ギャラリーの閲覧、アルバムの作成、写真のアップロードの機能';
+$lang['Duplicate'] = '複写';
+$lang['Duplicate selected tags'] = '選択したタグを複製します';
+$lang['Apply watermark if height is bigger than'] = 'これ以上の高さの際にウォーターマークを付ける';
+$lang['Apply watermark if width is bigger than'] = 'これ以上の幅の際にウォーターマークを付ける';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroomは、大量のデジタル画像の管理と、撮影後の仕事のために設計されて写真用ソフトウェアです。';
+$lang['Permission granted for groups'] = 'グループ権限';
+$lang['Panorama'] = 'パノラマ';
+$lang['Number of albums per page'] = '１ページ当りのアルバム数';
+$lang['Please select at least two groups'] = 'グループを２つ以上選んで下さい。';
+$lang['Permission granted for users'] = 'ユーザー権限';
+$lang['Basic settings'] = '基本設定';
+$lang['General'] = '全般';
+$lang['Ratio'] = 'ートレート\'比率';
+$lang['Portrait'] = 'ポートレート';
+$lang['Purge user cache'] = 'ユーザーのキャッシュを削除';
+$lang['Photo sizes with crop'] = '写真サイズ';
+$lang['Mail theme'] = 'メールの件名';
+$lang['Numeric identifier : %d'] = '割り当てる数値 : 整数 : %d';
+?>
Index: /tags/2.6.0RC1/language/ja_JP/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: 日本語 [JP]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=425
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Japanese';
+$lang_info['country'] = 'Japan';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ja';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d 件のカテゴリが更新されました。';
+$lang['%d albums updated'] = '%d 件のカテゴリが更新されました。';
+$lang['%d comment to validate'] = '%d 件のコメントが承認されました。';
+$lang['%d comments to validate'] = '%d 件のコメントが承認されました。';
+$lang['%d new comment'] = '新しいコメント: %d';
+$lang['%d new comments'] = '新しいコメント: %d';
+$lang['%d comment'] = 'コメント: %d';
+$lang['%d comments'] = 'コメント: %d';
+$lang['%d hit'] = 'ヒット: %d';
+$lang['%d hits'] = 'ヒット: %d';
+$lang['%d new photo'] = '新しいイメージ: %d';
+$lang['%d new photos'] = '新しいイメージ: %d';
+$lang['%d new user'] = '新しいユーザ: %d';
+$lang['%d new users'] = '新しいユーザ: %d';
+$lang['About'] = 'About';
+$lang['All tags'] = 'すべてのタグ';
+$lang['Any tag'] = 'すべてのtag';
+$lang['At least one listed rule must be satisfied.'] = '少なくともリスト記載ルール1つを満たす必要があります。';
+$lang['Author'] = '撮影者';
+$lang['Albums'] = 'カテゴリ';
+$lang['Album'] = 'カテゴリ';
+$lang['Close this window'] = 'このウィンドウを閉じる';
+$lang['Complete RSS feed (photos, comments)'] = '完全なRSSフィード (イメージ、コメント)';
+$lang['Confirm Password'] = 'パスワードをもう一度';
+$lang['Connection settings'] = '接続設定';
+$lang['Login'] = 'ログイン';
+$lang['Contact webmaster'] = 'ウェブマスタに連絡する';
+$lang['Create a new account'] = '新しいアカウントを作成する';
+$lang['Created on'] = '作成日時';
+$lang['Creation date'] = '作成日';
+$lang['Current password is wrong'] = '現在のパスワードが正しくありません。';
+$lang['Dimensions'] = 'サイズ';
+$lang['Display'] = '表示';
+$lang['Each listed rule must be satisfied.'] = 'それぞれのリスト記載ルールを満たす必要があります。';
+$lang['Email address is missing. Please specify an email address.'] = 'メールアドレスがありません。';
+$lang['Email address'] = 'メールアドレス';
+$lang['Enter your personnal informations'] = 'あなたの個人情報を入力してください。';
+$lang['Error sending email'] = 'メールの送信にエラーが発生しました。';
+$lang['File name'] = 'ファイル名';
+$lang['File'] = 'ファイル';
+$lang['Filesize'] = 'ファイルサイズ';
+$lang['Filter and display'] = 'フィルタおよび表示';
+$lang['Filter'] = 'フィルタ';
+$lang['Forgot your password?'] = 'パスワードを忘れましたか?';
+$lang['Go through the gallery as a visitor'] = 'ビジターとしてギャラリーにアクセスする';
+$lang['Help'] = 'ヘルプ';
+$lang['Identification'] = 'アイデンティフィケーション';
+$lang['Photos only RSS feed'] = 'イメージ限定RSSフィード';
+$lang['Keyword'] = 'キーワード';
+$lang['Links'] = 'リンク';
+$lang['N/A'] = 'なし';
+$lang['New on %s'] = '最新投稿 - %s';
+$lang['Notification'] = '通知';
+$lang['Number of items'] = 'アイテム数';
+$lang['Original dimensions'] = 'オリジナルサイズ';
+$lang['Password forgotten'] = 'パスワードを忘れました。';
+$lang['Password'] = 'パスワード';
+$lang['Post date'] = '投稿日';
+$lang['Posted on'] = '投稿日時';
+$lang['Profile'] = 'プロファイル';
+$lang['Quick connect'] = 'クイック接続';
+$lang['RSS feed'] = 'RSSフィード';
+$lang['Register'] = '登録';
+$lang['Registration'] = '登録';
+$lang['Related tags'] = '関連タグ';
+$lang['Reset'] = 'リセット';
+$lang['Retrieve password'] = 'パスワード取得';
+$lang['Search rules'] = '検索ルール';
+$lang['Search tags'] = '検索タグ';
+$lang['Search'] = '検索';
+$lang['display available tags'] = '利用可能なタグを表示する';
+$lang['Since'] = 'Since';
+$lang['Sort by'] = '並び替え';
+$lang['Sort order'] = '並び順';
+$lang['Tag'] = 'タグ';
+$lang['Tags'] = 'タグ';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS通知フィードでは、このウェブサイトからニュースを通知します : 新しい写真、更新カテゴリ、新しいコメント。RSSフィードリーダーをお使いください。';
+$lang['Unknown feed identifier'] = '不明なフィードIDです。';
+$lang['User comments'] = 'ユーザコメント';
+$lang['Username'] = 'ユーザ名';
+$lang['Visits'] = '訪問';
+$lang['Webmaster'] = 'ウェブマスタ';
+$lang['Week %d'] = '週 %d';
+$lang['About Piwigo'] = 'Piwigoについて';
+$lang['You are not authorized to access the requested page'] = 'あなたは、リクエストしたページへのアクセスを許可されていません。';
+$lang['add this photo to your favorites'] = 'このイメージをあなたのお気に入りに追加する';
+$lang['Administration'] = '管理';
+$lang['all'] = 'すべて';
+$lang['ascending'] = '昇順';
+$lang['author(s) : %s'] = '作者 : %s';
+$lang['Expand all albums'] = 'すべてのカテゴリを拡げる';
+$lang['posted after %s (%s)'] = '%s (%s) 以降に投稿';
+$lang['posted before %s (%s)'] = '%s (%s) 以前に投稿';
+$lang['posted between %s (%s) and %s (%s)'] = '%s (%s) から %s (%s) の間に投稿';
+$lang['posted on %s'] = '%s に投稿';
+$lang['Best rated'] = '最高評価';
+$lang['display best rated photos'] = '最高評価アイテムを表示する';
+$lang['Calendar'] = 'カレンダー';
+$lang['All'] = 'すべて';
+$lang['display each day with photos, month per month'] = '月ごとに写真の投稿日を表示します。';
+$lang['View'] = '表示';
+$lang['chronology_monthly_calendar'] = '月カレンダー';
+$lang['chronology_monthly_list'] = '月リスト';
+$lang['chronology_weekly_list'] = '週リスト';
+$lang['Click here if your browser does not automatically forward you'] = '自動的にリダイレクトされない場合、ここをクリックしてください。';
+$lang['comment date'] = 'コメント投稿日';
+$lang['Comment'] = 'コメント';
+$lang['Your comment has been registered'] = 'あなたのコメントが登録されました。';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'アンチフラッドシステム : 新たに投稿するまで、しばらくお待ちください。';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = '承認ルールにパスしなかったため、あなたのコメントは登録されませんでした。';
+$lang['An administrator must authorize your comment before it is visible.'] = '表示される前に管理者があなたのコメントを承認する必要があります。';
+$lang['This login is already used by another user'] = 'このユーザIDは、すでに別のユーザに使用されています。';
+$lang['Comments'] = 'コメント';
+$lang['Add a comment'] = 'コメントを追加する';
+$lang['created after %s (%s)'] = '%s (%s) 以降に作成';
+$lang['created before %s (%s)'] = '%s (%s) 以前に作成';
+$lang['created between %s (%s) and %s (%s)'] = '%s (%s) から %s (%s) の間に作成';
+$lang['created on %s'] = '%s に作成';
+$lang['Customize'] = 'カスタマイズ';
+$lang['Your Gallery Customization'] = 'あなたのギャラリーカスタマイズ ';
+$lang['day'][0] = '日曜日';
+$lang['day'][1] = '月曜日';
+$lang['day'][2] = '火曜日';
+$lang['day'][3] = '水曜日';
+$lang['day'][4] = '木曜日';
+$lang['day'][5] = '金曜日';
+$lang['day'][6] = '土曜日';
+$lang['Default'] = 'デフォルト';
+$lang['delete this photo from your favorites'] = 'あなたのお気に入りから、このイメージを削除する';
+$lang['Delete'] = '削除';
+$lang['descending'] = '降順';
+$lang['Download'] = 'ダウンロード';
+$lang['Download this file'] = 'このファイルをダウンロードする';
+$lang['edit'] = '編集';
+$lang['wrong date'] = '日付が正しくありません。';
+$lang['excluded'] = '除外';
+$lang['Your favorites'] = 'お気に入り';
+$lang['display your favorites photos'] = '私のお気に入りの写真を表示する';
+$lang['Favorites'] = 'お気に入り';
+$lang['First'] = '最初へ';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'このカテゴリは、メンテナンスのためロックされています。後ほどアクセスしてください。';
+$lang['Page generated in'] = 'ページ作成:';
+$lang['guest'] = 'ゲスト';
+$lang['Hello'] = 'こんにちは';
+$lang['available for administrators only'] = '管理者のみ利用可能です。';
+$lang['display this album'] = 'このカテゴリのルートのイメージを表示する';
+$lang['display last user comments'] = '最新のユーザコメントを表示する';
+$lang['customize the appareance of the gallery'] = 'ギャラリーのアピアランスをカスタマイズする';
+$lang['search'] = '検索';
+$lang['Home'] = 'ホーム';
+$lang['in this album'] = '- このカテゴリ';
+$lang['in %d sub-album'] = '- %d サブカテゴリ';
+$lang['in %d sub-albums'] = '- %d サブカテゴリ';
+$lang['included'] = '含む';
+$lang['Invalid password!'] = 'パスワードが正しくありません!';
+$lang['Language']='言語';
+$lang['last %d days'] = '直近 %d 日';
+$lang['Last'] = '最後へ';
+$lang['Logout'] = 'ログアウト';
+$lang['obligatory'] = '必須';
+$lang['display a calendar by creation date'] = '作成日のカレンダーを表示する';
+$lang['display all photos in all sub-albums'] = 'すべてのサブカテゴリのエレメント表示する';
+$lang['return to normal view mode'] = 'ノーマルビューモードに戻る';
+$lang['display a calendar by posted date'] = '投稿日のカレンダーを表示する';
+$lang['month'][10] = '10月';
+$lang['month'][11] = '11月';
+$lang['month'][12] = '12月';
+$lang['month'][1] = '1月';
+$lang['month'][2] = '2月';
+$lang['month'][3] = '3月';
+$lang['month'][4] = '4月';
+$lang['month'][5] = '5月';
+$lang['month'][6] = '6月';
+$lang['month'][7] = '7月';
+$lang['month'][8] = '8月';
+$lang['month'][9] = '9月';
+$lang['Most visited'] = '最多アクセス';
+$lang['display most visited photos'] = '最もアクセスされた写真を表示します。';
+$lang['Unknown identifier'] = '不明なID';
+$lang['New password'] = '新しいパスワード';
+$lang['Rate this photo'] = 'この写真を評する';
+$lang['Next'] = '次へ';
+$lang['no rate'] = '評価なし';
+$lang['Photos posted within the last %d day.'] = '直近 %d 日に投稿されたエレメントのみ表示します。';
+$lang['Photos posted within the last %d days.'] = '直近 %d 日に投稿されたエレメントのみ表示します。';
+$lang['password updated'] = 'パスワードが更新されました。';
+$lang['Recent period must be a positive integer value'] = '最近の期間には正の整数を設定してください。';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = '写真';
+$lang['Click on the photo to see it in high definition'] = '高解像度の写真を表示するには、写真をクリックしてください。';
+$lang['Show file metadata'] = 'ファイルメタデータを表示する';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'プリファレンス';
+$lang['Previous'] = '前へ';
+$lang['Random photos'] = 'ランダム写真';
+$lang['display a set of random photos'] = '一連のランダム写真を表示します。';
+$lang['Recent albums'] = '最近のカテゴリ';
+$lang['display recently updated albums'] = '最近更新されたカテゴリを表示します。';
+$lang['Recent period'] = '最近の期間';
+$lang['Recent photos'] = '最近の写真';
+$lang['display most recent photos'] = '最近の写真を表示します。';
+$lang['Redirection...'] = 'リダイレクト ...';
+$lang['Please, enter a login'] = 'ユーザIDを入力してください。';
+$lang['login mustn\'t end with a space character'] = 'ユーザIDの末尾にスペースを使用しないでください。';
+$lang['login mustn\'t start with a space character'] = 'ユーザIDの最初にスペースを使用しないでください。';
+$lang['this login is already used'] = 'このユーザIDは、すでに使用されています。';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'メールアドレスは、xxx@yyy.eee のようなフォーマットを使用してください (例 : jack@altern.org)。';
+$lang['Auto login'] = '自動ログイン';
+$lang['remove this tag from the list'] = 'このタグをリストから削除する';
+$lang['representative'] = '見本';
+$lang['Search for Author'] = '作者で探す';
+$lang['Search in albums'] = 'カテゴリを探す';
+$lang['Search by date'] = '日付で探す';
+$lang['Date'] = '日付';
+$lang['End-Date'] = '終了日';
+$lang['Kind of date'] = '日付タイプ';
+$lang['Search for words'] = '言葉で探す';
+$lang['Search for all terms'] = 'すべてを含む';
+$lang['Search for any term'] = '少なくとも一つを含む';
+$lang['Empty query. No criteria has been entered.'] = '空のクエリーです。検索キーワードが入力されていません。';
+$lang['Search results'] = '検索結果';
+$lang['Search in sub-albums'] = 'サブカテゴリを探す';
+$lang['searched words : %s'] = '検索キーワード : %s';
+$lang['Contact'] = '連絡:';
+$lang['set as album representative'] = 'カテゴリ見本を設定する';
+$lang['Show number of comments'] = 'コメント数を表示する';
+$lang['Show number of hits'] = 'ヒット数を表示する';
+$lang['slideshow'] = 'スライドショー';
+$lang['stop the slideshow'] = 'スライドショーを停止する';
+$lang['Specials'] = '特別';
+$lang['SQL queries in'] = 'SQLクエリー:';
+$lang['display only recently posted photos'] = '最近投稿されたイメージのみ表示する';
+$lang['return to the display of all photos'] = 'すべてのイメージ表示に戻る';
+$lang['the beginning'] = '最初';
+$lang['Thumbnails'] = 'サムネイル';
+$lang['Menu'] = 'メニュー';
+$lang['A comment on your site'] = 'あなたのサイトのコメント';
+$lang['today'] = '今日';
+$lang['Update your rating'] = 'あなたの評価を更新する';
+$lang['the username must be given'] = 'ユーザ名を入力してください。';
+$lang['useful when password forgotten'] = 'パスワードを忘れたときに便利です。';
+$lang['Quick search'] = 'クイックサーチ';
+$lang['Connected user: %s'] = '接続ユーザ: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'ブラウザ: %s';
+$lang['Author: %s'] = '撮影者: %s';
+$lang['Comment: %s'] = 'コメント: %s';
+$lang['Comment by %s'] = 'コメント by %s';
+$lang['User: %s'] = 'ユーザ: %s';
+$lang['Email: %s'] = 'メールアドレス: %s';
+$lang['Admin: %s'] = '管理者: %s';
+$lang['Registration of %s'] = '%s の登録';
+$lang['Album: %s'] = 'カテゴリ: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'デフォルトステータスの使用に関して、ユーザ「ゲスト」は正しくないステータスです。ウェブマスタにご連絡ください。';
+$lang['this email address is already in use'] = 'このメールアドレスは、すでに他のユーザに使用されています。';
+$lang['Album results for'] = 'カテゴリ検索結果:';
+$lang['Tag results for'] = 'タグ検索結果:';
+$lang['from %s to %s'] = '%s - %s';
+$lang['Play of slideshow'] = 'スライドショーを実行する';
+$lang['Pause of slideshow'] = 'スライドショーを一時停止する';
+$lang['Repeat the slideshow'] = 'スライドショーを繰り返す';
+$lang['Not repeat the slideshow'] = 'スライドショーを繰り返さない';
+$lang['Reduce diaporama speed'] = 'スライドショーのスピードを減らす';
+$lang['Accelerate diaporama speed'] = 'スライドショーのスピードを増やす';
+$lang['Submit'] = '送信';
+$lang['Yes'] = 'はい';
+$lang['No'] = 'いいえ';
+$lang['%d photo']='イメージ: %d';
+$lang['%d photos']='イメージ: %d';
+$lang['%d photo is also linked to current tags'] = '%d イメージも現在のタグにリンクされました。';
+$lang['%d photos are also linked to current tags'] = '%d イメージも現在のタグにリンクされました。';
+$lang['display photos linked to this tag'] = 'このタグのみにリンクされているイメージを表示する';
+$lang['photos posted during the last %d days'] = '直近 %d 日に投稿されたイメージ';
+$lang['Piwigo Help'] = 'Piwigoヘルプ';
+$lang['Rank'] = 'ランク';
+$lang['group by letters'] = '文字でグループ化する';
+$lang['letters'] = '文字';
+$lang['show tag cloud'] = 'タグクラウドを表示する';
+$lang['cloud'] = 'クラウド';
+$lang['Are you sure?'] = '本当によろしいですか?';
+$lang['Reset to default values'] = 'デフォルトにリセットする';
+$lang['delete all photos from your favorites'] = 'お気に入りから画像を全て削除する。';
+$lang['Sent by'] = 'Sent by';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'あなたのブラウザーでは、クッキーの設定が有効にされていません。ブラウザのクッキーが有効になっていることも確認しておいてください。';
+$lang['Edit a comment'] = 'コメントを編集';
+$lang['(!) This comment requires validation'] = '(!) このコメントは有効が必要';
+$lang['Welcome'] = 'ようこそ';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Piwigoフォト・ガラリーにようこそ!';
+$lang['... or browse your empty gallery'] = '... または、空のガラリーを回覧する';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... または、このメッセージに無効にして下さい。私は自分で見てみます。';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'こんにちは %sさん, あなたのPiwigoフォト・ガラリーが何も入っていません!';
+$lang['I want to add photos'] = '写真を追加したい';
+$lang['Manage this user comment: %s'] = 'このユーザーのコメントを管理: %s';
+$lang['This author modified following comment:'] = 'このユーザーが次のコメントを書き直しました:';
+$lang['This author removed the comment with id %d'] = 'このユーザーがコメントID %d を削除しました。';
+$lang['The number of photos per page must be a not null scalar'] = 'ページごとの写真数はゼロではありません';
+$lang['Number of photos per page'] = 'ページごとの写真数';
+$lang['html tags are not allowed in login'] = 'ログインの際、HTMLタッグが使いません';
+$lang['%d rates'] = '%d 程度';
+$lang['Rating score'] = '程度のスコア';
+$lang['Invalid username or email'] = '無効なユーザー名又はメールアドレス';
+$lang['Password reset is not allowed for this user'] = 'このユーザーのためのパスワード・リセットは無効である。';
+$lang['User "%s" has no email address, password reset is not possible'] = 'ユーザー： "%s" はメールアドレスがありません。パスワード・リセットができません。';
+$lang['Someone requested that the password be reset for the following user account:'] = '次のユーザーのアカウントのために、誰かがパスワード・リセットを要求しました。';
+$lang['Username "%s" on gallery %s'] = 'ユーザー： "%s" は現在： %s\'のガラリー';
+$lang['To reset your password, visit the following address:'] = 'パスワードがリセットしたいために、次のアドレスへ：';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'もし、これは間違えたら、このメールを消去し、何も起こりません。';
+$lang['Password Reset'] = 'パスワード・リセット';
+$lang['Check your email for the confirmation link'] = '認証リンクのために、あなたのメールを確認してください。';
+$lang['Invalid key'] = '無効なキー';
+$lang['The passwords do not match'] = 'パスワードが合わせません。';
+$lang['Your password has been reset'] = 'あなたのパスワードはリセットされました。';
+$lang['Return to home page'] = 'ホームページに戻り';
+$lang['Please enter your username or email address.'] = 'あなたのユーザー名又はメールアドレスを入力してください。';
+$lang['You will receive a link to create a new password via email.'] = '新たなパスワードを作成するためのリンクをメールで送信しました。';
+$lang['Username or email'] = 'ユーザー名又はメール';
+$lang['Change my password'] = 'パスワード変更';
+$lang['Enter your new password below.'] = '新たなパスワードを以下の空欄に入力して下さい。';
+$lang['Edit'] = '編集';
+$lang['EXIF Metadata'] = 'EXIF メタデータ';
+$lang['Hello %s,'] = '%sさん、こんにちは,';
+$lang['IPTC Metadata'] = 'IPTC メタデータ';
+$lang['Send my connection settings by email'] = '接続設定をメールで送信してください。';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'ようこそ！登録完了。まもなくあなたの接続設定をメールで届く予定です。';
+$lang['Username modification'] = 'ユーザー名の変更';
+$lang['Your username has been successfully changed to : %s'] = '新規のユーザー名は: %s';
+$lang['square'] = '四角';
+$lang['thumb'] = 'サムネール';
+$lang['small'] = '小';
+$lang['medium'] = '中';
+$lang['large'] = '大';
+$lang['xlarge'] = 'XL';
+$lang['xxlarge'] = 'XXL';
+$lang['Original'] = 'オリジナル';
+$lang['Thank you for registering at %s!'] = '%sに登録して、ありがとうございました!';
+$lang['Here are your connection settings'] = 'あなたの接続設定です。';
+$lang['Password: %s'] = 'パスワード: %s';
+$lang['Username: %s'] = 'ユーザー名: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'もしも、このメールの受信が誤ったら、 %sに連絡して下さい。';
+$lang['2small'] = 'XXS 小さい';
+$lang['Desktop'] = 'デスクトップ';
+$lang['Mobile'] = 'モービル';
+$lang['Photo sizes'] = '画像のサイズ';
+$lang['Show latest comments first'] = '最新のコメントを先に表示';
+$lang['Show oldest comments first'] = '以前のコメントを先に表示';
+$lang['View in'] = '表示';
+$lang['xsmall'] = 'XS　最も小さい';
+$lang['Date created, new &rarr; old'] = '作成日, 新 &rarr; 旧';
+$lang['Date created, old &rarr; new'] = '作成日, 旧 &rarr; 新';
+$lang['Date posted, new &rarr; old'] = '掲載日, 新 &rarr; 旧';
+$lang['Date posted, old &rarr; new'] = '掲載日, 旧 &rarr; 新';
+$lang['File name, A &rarr; Z'] = 'ファイル名, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'ファイル名, Z &rarr; A';
+$lang['Manual sort order'] = 'マニュアル・ソート順';
+$lang['Numeric identifier, 1 &rarr; 9'] = '数字識別子, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = '数字識別子, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = '写真題名, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = '写真題名, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'スコア, 高 &rarr; 低';
+$lang['Rating score, low &rarr; high'] = 'スコア, 低 &rarr; 高';
+$lang['Visits, high &rarr; low'] = '訪問, 高 &rarr; 低';
+$lang['Visits, low &rarr; high'] = '訪問, 低 &rarr; 高';
+$lang['%d rate'] = '%dレート';
+$lang['Bad request'] = '不正な要求';
+$lang['Forbidden'] = '禁断';
+$lang['Page not found'] = 'ページが見つかりません';
+$lang['Permalink for album not found'] = 'このエントリーのアルバムが見つかりません';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigoは、回復不能エラーが発生しました';
+$lang['Requested album does not exist'] = '要求されたアルバムは存在しません。';
+$lang['Requested tag does not exist'] = '要求されたタグは存在しません。';
+$lang['Email address is mandatory'] = '電子メールアドレスは必須です';
+$lang['Username is mandatory'] = 'ユーザー名は必須です';
+$lang['Website'] = 'ウェブサイト';
+$lang['Your website URL is invalid'] = 'あなたのウェブサイトのURLが無効です';
+$lang['mandatory'] = '必須';
+$lang['Email'] = 'メールアドレス';
+$lang['First Page'] = '初めのページ';
+$lang['Go back to the album'] = 'アルバムに戻る';
+$lang['Last Page'] = '最後のページ';
+$lang['Password is missing. Please enter the password.'] = 'パスワードがありません。パスワードを入力して下さい。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'パスワードの再確認がありません。パスワードの再確認を確認して下さい。';
+?>
Index: /tags/2.6.0RC1/language/ja_JP/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,127 @@
+<h2>カテゴリを編集する</h2>
+
+<h3>情報</h3>
+
+<ul>
+
+  <li><strong>名称</strong>: カテゴリをリネームします (物理カテゴリの場合、バーチャルリネームとなります)。</li>
+
+  <li><strong>説明</strong>: コンテンツに一般的なアイディアを与えます。このテキストは、サムネイルの下に表示されます。</li>
+
+</ul>
+
+<h3>移動</h3>
+
+<p>カテゴリがバーチャルカテゴリの場合、あなたはカテゴリを移動することができます。
+カテゴリを移動することは、そのカテゴリの親カテゴリを変更することを意味します。</p>
+
+<h3>オプション</h3>
+
+<ul>
+
+  <li><strong>アクセスタイプ</strong>: パーミッション管理。あなたがカテゴリをプライベートにした場合、
+  すべての子カテゴリもプライベートになります。あなたがカテゴリをパブリックにした場合、
+  すべての親カテゴリもパブリックになります。</li>
+
+  <li><strong>ロック</strong>: メンテナンスのため、カテゴリおよびサブカテゴリが一時的に無効にされます。</li>
+
+  <li><strong>コメント</strong>: このカテゴリのコンテンツに関して、認証ユーザのコメント投稿を許可します。</li>
+
+  <li><strong>アップロードを許可する</strong>: ユーザのファイルアップロードを許可します。
+  このオプションは、(バーチャルカテゴリではなく) 物理カテゴリでのみ使用できます。</li>
+
+</ul>
+
+<p>あなたは、これらのオプションを「プロパティ」管理画面 (<span class="pwgScreen">管理 > カテゴリ > プロパティ</span> > <span class="pwgScreen">アップロード</span>、<span
+class="pwgScreen">コメント</span>、<span class="pwgScreen">ロック</span>,
+<span class="pwgScreen">パブリック/プライベート</span>, <span
+class="pwgScreen">見本</span>) で管理することもできます。</p>
+
+<h3>並び順</h3>
+
+<p>デフォルトの並び順を使用する場合、選択してください。</p>
+
+<p>この並び順がサブカテゴリに適用される場合、指定してください。</p>
+
+<p>このカテゴリで使用するカラムの並び順を選択してください。</p>
+<ul>
+<li><strong>作成日</strong>: 写真の作成日</li>
+<li><strong>投稿日</strong>: 同期化日</li>
+<li><strong>平均評価 (*)</strong>: 平均評価は、ビジターによって変わります。</li>
+<li><strong>最多アクセス (*)</strong>: 現在の訪問件数を最多アクセス順に変更します。</li>
+<li><strong>ファイル名</strong>: 情報フィールドに入力された名称です。</li>
+<li><strong>ID</strong>: 内部ID (新しいカテゴリは、前のカテゴリより高いIDを持ちます。</li>
+
+</ul>
+<p><strong>(*)</strong>予測できない結果となる場合がありますので、実行前に十分なテストを実施してください。</p>
+
+
+<h3>見本</h3>
+
+<p>カテゴリの見本は、カテゴリが (ルートカテゴリのように) サブカテゴリのみ含む場合、
+メインページ (<span class="pwgScreen">category.php</span>) に表示されるサムネイルです。</p>
+
+<p>カテゴリの見本を設定するには、4つの方法があります。 :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">写真ページ</span>: アクションボタンの1つをクリックすることで、
+  あなたは表示されている写真を表示カテゴリの見本に設定することができます。
+  このボタンは、管理者のみ利用することができます。</li>
+
+  <li>管理ページで<span class="pwgScreen">写真情報を修正する</span>。
+  この画面には、<span class="pwgScreen">picture.php</span>またはユニットモードの<span class="pwgScreen">バッチ管理</span>からアクセスすることができます。
+  詳細は、このページのヘルプをご覧ください。</li>
+
+  <li><span class="pwgScreen">「管理 > カテゴリ > プロパティ > 見本」。
+  詳細は、このページのヘルプをご覧ください。</li>
+
+  <li><span class="pwgScreen">カテゴリを編集する</span> (この画面)。</li>
+
+</ul>
+
+<p>見本は、設定パラメータ「<code>allow_random_representative</code>」の設定に依存します
+ (詳細は、<span class="filename">include/config_default.inc.php</span>をご覧ください)。</p>
+
+<p>デフォルトモード (<code>allow_random_representative</code> = false) の場合、
+それぞれのカテゴリには、少なくとも1つの固定されたエレメントが見本にされます。
+(カテゴリ作成時に) 設定した場合、見本は、管理者が求める場合のみ変更することができます。
+見本が適切ではない場合、あなたは<strong>新しい見本をランダムに探す</strong>を使って、新しい見本を探すことができます。</p>
+
+<p>設定パラメータ「<code>allow_random_representative</code>」にtrueが設定された場合、
+エレメントを含んだカテゴリは、固定の見本を持つことができません。
+<strong>見本を削除する</strong>ボタンを使用してください。</p>
+
+<p>カテゴリに (サブカテゴリのみで) エレメントが含まれていない場合、<span class="pwgScreen">写真情報を修整する</span>画面を使って、
+どのような写真でも見本にすることができます。現在の画面で使用できるオプションは、<strong>見本を削除する</strong>ボタンのみです。
+このボタンを使用した場合、見本は設定されないようになります。</p>
+
+<h3>すべてのカテゴリエレメントを新しいカテゴリにリンクする</h3>
+
+<ul>
+
+<li><strong>バーチャルカテゴリ名</strong>: 作成される新しいカテゴリ名です。
+現在のカテゴリ内にある、すべての写真は新しいカテゴリにリンクされます。</li>
+
+<li><strong>親カテゴリ</strong>: 新しいカテゴリがどこに作成されるか選択してください。
+未選択の場合、ホームカテゴリとして作成されます。</li>
+
+</ul>
+
+<h3>すべてのカテゴリエレメントを既存のカテゴリにリンクする</h3>
+
+<ul>
+
+<li><strong>カテゴリ</strong>: リンク先のカテゴリを選択してください。</li>
+
+</ul>
+
+<h3>グループメンバーに情報メールを送信する</h3>
+
+<ul>
+
+<li><strong>グループ</strong>: 受信グループ</li>
+
+<li><strong>メールコンテンツ</strong>: グループに送信するテキストです。</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ja_JP/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>バーチャルカテゴリを移動する</h2>
+
+<p>バーチャルカテゴリのみ新しい親カテゴリを持つことができます。</p>
+
+<h3>移動するバーチャルカテゴリ</h3>
+
+<p>あなたが移動したいバーチャルカテゴリを選択してください。 
+リストが空の場合、あなたがカテゴリを作成していないことを意味します。</p>
+
+<h3>新しい親カテゴリ</h3>
+
+<p>新しい親カテゴリ (バーチャルまたはフィジカル) を選択してください。
+あなたが選択しない場合、選択されたバーチャルカテゴリは、ルートに移動されます。
+あなたは、カテゴリをカテゴリ自身、または子カテゴリに移動することはできません。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/cat_options.html	(revision 25596)
@@ -0,0 +1,31 @@
+<h2>カテゴリオプション</h2>
+
+<p>このページでは、管理者が一度に多くのカテゴリのオプションを管理することができます。</p>
+
+<dl>
+
+  <dt>アップロード</dt>
+  <dd>カテゴリに対して、ギャラリーのビジターが写真をアップロードできるようにします。
+   非バーチャルおよび非リモートカテゴリのみ表示されます。</dd>
+
+  <dt>コメント</dt>
+  <dd>選択したカテゴリで、ユーザによるコメントの追加を許可します。
+  コメントを追加できるカテゴリを選択してください。
+  少なくとも1つのコメント可能なカテゴリに属しているイメージには、コメントを追加することができます。</dd>
+
+  <dt>ロック</dt>
+  <dd>選択されたカテゴリは、メンテナンスのため、一時的に無効にされます。
+  あなたがカテゴリをロックした場合、すべての子カテゴリもロックされます。
+  あなたがカテゴリのロックを解除した場合、すべての親カテゴリもロック解除されます。</dd>
+
+  <dt>パブリック/プライベート</dt>
+  <dd>選択されたカテゴリの権限を管理します。選択されたカテゴリがプライベートの場合、
+  あなたは、ユーザまたはグループにアクセスの許可を与える必要があります。
+  あなたがカテゴリをプライベートにした場合、すべての子カテゴリもプライベートになります。
+  あなたがカテゴリをパブリックにした場合、すべての親カテゴリもパブリックになります。</dd>
+
+  <dt>見本</dt>
+  <dd>あなたが<code>allow_random_representative</code> (詳細は、<span class="filename">include/config_defaults.inc.php</span>をご覧ください) 
+  の設定パラメータを「true」にした場合、このオプションを管理することができます。
+  それぞれのカテゴリを (独自の写真として) ランダムに表示、または単独に表示することができます。</dd>
+</dl>
Index: /tags/2.6.0RC1/language/ja_JP/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>カテゴリパーミッションを管理する</h2>
+
+<p>このページでは、プライベートカテゴリのみ利用できます。
+あなたは、このカテゴリへの権限を与えるユーザおよびグループを選択することができます。</p>
+
+<h3>グループ</h3>
+
+<p>現在のカテゴリに関して、あなたはグループに拒否または許可を与えることができます。
+あなたはカテゴリに許可されているグループのリストを修正することができます。</p>
+
+<h3>ユーザ</h3>
+
+<p>あなたは、個別のユーザに対して拒否または許可することができます。
+グループに属しているユーザに対して、拒否または許可を与えることができます。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/configuration.html	(revision 25596)
@@ -0,0 +1,111 @@
+<h2>設定</h2>
+
+<p>このページでは、管理者が基本的な設定を実行することができます。
+実際、このページでは、多くの管理者が必要とする最小設定のみ表示しています。
+あなたが他の多くの (そして高度な) 設定を閲覧したい場合、<span class="filename">include/config_default.inc.php</span>ファイルを参照してください。</p>
+
+<p>このページは、テーマにより設定パラメータを再編成するため、いくつかのセクションに分けられています。</p>
+
+
+<h3>メイン</h3>
+<ul>
+  <li><strong>ギャラリータイトル</strong>: RSSフィードおよびメール通知に使用されます。</li>
+
+  <li><strong>ページバナー</strong>: それぞれのページのトップに表示されます。</li>
+
+  <li><strong>ギャラリーURI</strong>: RSSフィードに使用されます。</li>
+
+  <li><strong>ギャラリーをロックする</strong>: メンテナンスのため、ギャラリー全体をロックします。
+  管理者のみギャラリーにアクセスすることができます。</li>
+
+  <li><strong>評価</strong>: 写真の評価機能を有効にします。</li>
+
+  <li><strong>ゲストによる評価</strong>: 未登録のユーザでも写真を評価できます。</li>
+
+  <li><strong>ユーザ登録を許可する</strong>: すべての人が自由にユーザ登録できます。</li>
+
+  <li><strong>すべてのユーザにメールアドレスを必須とする</strong>: 管理者による処理を除き、ユーザ登録およびプロファイル更新時にメールアドレスがチェックされます。</li>
+
+  <li><strong>新しいユーザ登録時、管理者にメールする</strong>: すべてのユーザ登録に関して、管理者がメール受信します。</li>
+
+</ul>
+
+<h3>履歴</h3>
+
+  <p>ページにアクセスすることで、<span
+  class="pwgScreen">category.php</span>および<span
+  class="pwgScreen">picture.php</span>が<code>history</code>テーブルに記録されます。</p>
+  
+  <p>アクセスは、「<span class="pwgScreen">管理 > 特別 > 履歴</span>」に表示されます。</p>
+
+<ul>
+  <li><strong>ゲストによるページアクセスを記録する</strong>: ゲストによるページアクセスが記録されます。</li>
+
+  <li><strong>ユーザによるページアクセスを記録する</strong>: ユーザによるページアクセスが記録されます。</li>
+
+  <li><strong>管理者によるページアクセスを記録する</strong>: 管理者によるページアクセスが記録されます。</li>
+
+</ul>
+
+<h3>コメント</h3>
+<ul>
+
+  <li><strong>すべてのユーザにコメントを許可する</strong>: ユーザ登録されていないゲストでもコメントを投稿することができます。</li>
+
+  <li><strong>1ページあたりのコメント数</strong>.</li>
+
+  <li><strong>承認</strong>: サイトで閲覧可能な状態になる前に、管理者がユーザによるコメントを承認します。
+  ユーザコメントの承認は、「<span class="pwgScreen">管理 > 写真 > コメント</span>」にて実施されます。</li>
+
+  <li><strong>有効なコメントが投稿された場合、管理者にメールする</strong>:
+ユーザがコメントを登録して、コメントが承認された場合、管理者にメール送信します。</li>
+
+  <li><strong>コメントの承認が必要な場合、管理者にメールする</strong>:
+管理者による承認が必要なコメントをユーザが投稿した場合、管理者にメール送信します。
+ユーザコメントの承認は、「<span class="pwgScreen">管理 > 写真 > コメント</span>」にて実施されます。</li>
+
+</ul>
+
+<!--TODO --><h3>アップロード</h3>
+<ul>
+<!--TODO -->  <li><strong>毎回アップロードリンクを表示する</strong>: アップロード可能なカテゴリが存在する場合、それぞれのカテゴリに追加リンクが表示されます。</li>
+<!--TODO -->  <li><strong>アップロードに関するユーザアクセスレベル</strong>: ユーザによるアップロードの制限を許可します。</li>
+  <li><strong>写真がアップロードされた場合、管理者にメールする</strong>: ユーザにより写真がアップロードされた場合、管理者にメール通知します。</li>
+</ul>
+
+<h3>デフォルト表示</h3>
+
+<p>ここであなたは、ログインしていないユーザに対する、デフォルト表示オプションを変更することができます。
+ユーザがログインした場合、これらのオプションは、ユーザ独自のオプション (<span class="pwgScreen">プロファイル</span>で変更可) により上書きされます。</p>
+
+<p>すべてのユーザは、表示オプションを変更することができますが、あなたは「<span class="pwgScreen">管理 > アイデンティフィケーション > ユーザ</span>」にて、
+選択したユーザの表示オプションを変更することもできます。</p>
+
+<ul>
+
+  <li><strong>言語</strong>: Piwigoラベルのみに関係します。カテゴリ名、写真名およびすべての説明はローカライズされません。</li>
+
+  <li><strong>1行あたりのイメージ数</strong></li>
+
+  <li><strong>1ページあたりの行数</strong></li>
+
+  <li><strong>インターフェーステーマ</strong></li>
+
+  <li><strong>最近の期間</strong>: 日数。写真が新しい写真として表示される期間です。1日より多い日数を指定してください。</li>
+
+  <li><strong>すべてのカテゴリを拡げる</strong>: デフォルトで、すべてのカテゴリをメニューに広げますか?
+  <em>警告</em>: このオプションは、多くのりソースを消費して、あなたのカテゴリツリーが多くのカテゴリを含む場合、巨大なメニューを作成してしまいます。</li>
+
+  <li><strong>コメント数を表示する</strong>: サムネイルページで、それぞれの写真のコメント数を表示します。多くのリソースを消費します。</li>
+
+  <li><strong>ヒット数を表示する</strong>: サムネイルページで、写真のヒット数をサムネイル下に表示します。
+  特別設定パラメータが次の場合のみ表示されます: <br />
+  $conf['show_nb_hits'] = true; <br />
+  注意: デフォルトでは、falseが設定されています。</li>
+
+  <li><strong>写真の最大幅</strong>: 写真の最大表示幅です。この設定より写真が大きい場合、表示時にリサイズされます。
+  この設定に値を入力したい場合、あなたの写真の幅に変更することをお勧めします。</li>
+
+  <li><strong>写真の最大高</strong>: 前の設定と同じです。</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ja_JP/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,85 @@
+<h2>テンプレートの拡張設定</h2>
+
+<h3>ゴール</h3>
+<p>それぞれのテンプレートに関して、テンプレート拡張より、テンプレートの置換 (「replacer」と呼びます) を定義します。</p>
+
+<p>replacerがオリジナルテンプレートにリンクされた場合 (または任意で、要求されたURIに「任意のURIキーワード」が含まれている場合)、
+./template/yoga (または他のyoga) は「replacer」と置換されます。</p>
+
+<p>「任意のURIキーワード」は、URIのモジュール名の後にあります。</p>
+
+<p>従って、「任意のURIキーワード」は、「パーマリンク」になり得ます (パーマリンクに関する詳細は、私たちのドキュメントをご覧ください)。</p>
+
+<p>使用用法に関して、「<a href="#warnings">注意</a>」をご覧ください。</p>
+
+<h3>テンプレート拡張とは?</h3>
+
+<p>この設定ツールは、ビギナーおよびアドバンストユーザにとって、パワフルなツールです。
+FTPを使用して、ウェブマスタは、多くの配布 .tplファイル (「オリジナルテンプレート」) を異なる名称 (「replacer」) で複製することができます。
+ 
+ 現在サポートされている「オリジナルテンプレート」は、以下のとおりです:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> および/または <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> および/または <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> および/または<span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> および/または <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> および/または <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> および/または <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> および/または <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>オリジナルテンプレートは、どこにありますか?</h3>
+
+<p>配布されているオリジナルテンプレートは、template/yoga/ にあります (アップグレードの観点から、編集しないでください)。
+そのため、ウェブマスタは、「オリジナルテンプレート」から独自の「replacers (カスタマイズテンプレート)」を作成することができます。
+
+<h3>replacerは、どこに保存すべきですか?</h3>
+
+<p><strong>replacer (カスタマイズテンプレート)</strong> は、template-extensionフォルダ (または、そのサブフォルダ) に配置する必要があります。
+Replacers can have any filename with the .tpl extension. For example: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>replacerは、どこで有効にできますか?</h3>
+<p>関連する置換テンプレートを有効にするため、<strong>オリジナルテンプレート</strong>は、
+<strong>replacer (カスタマイズテンプレート)</strong> に割り当てられる必要があります。
+これは、設定管理ページの「テンプレートの拡張」にて、割り当てることができます。</p>
+
+<p>あなたが<strong>任意のURIキーワード</strong>を選択した場合、このキーワードを使ったページのみ、
+置換が実行されます。例えば次のようになります: <span class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>アドバンストユーザは、<strong>任意URIキーワード</strong>をパーマリンクとして使用します。</p>
+<h3>replacerを無効にするには?</h3>
+<ul>
+<li>関連する「オリジナルテンプレート」の選択を解除してください。</li>
+<li>FTPでreplacerを削除してください。</li>
+</ul>
+<a name="warnings"></a>
+<h3>注意</h3>
+<ul>
+
+<li><strong>オリジナルテンプレート</strong>は、「オリジナル」テンプレートであるべきです。そうでない場合、あなたの予想できない結果となってしまいます!</li>
+
+<li>同じ<strong>オリジナルテンプレート</strong>を使って、いくつかの<strong>replacer (カスタマイズテンプレート)</strong> を作成して、
+同じ<strong>任意のURIキーワード</strong>を使用する場合、最後のreplacerのみ有効となります。</li>
+
+<li>未選択の<strong>任意のURIキーワード</strong>は、すべてのテンプレート使用に関して、replacerを有効にします。
+前の時点と同じように、順番は、前に選択されたreplacerをオーバーライドすることができます。</li>
+
+<li>サブフォルダ:
+サブフォルダは無視されますが、現在の順番を変更するのに有用です。<br />
+distributed-samples: テスト目的のため提供されます! 
+<strong>編集せずに</strong>、あなた自身のテンプレートを作成してください。
+</li>
+
+<li>replacerを削除すると、すぐに<strong>オリジナルテンプレート</strong>が再度有効にされます。</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ja_JP/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>グループリスト</h2>
+
+<p>ここでは、あなたが定義したグループを管理することができます。</p>
+
+<h3>グループを追加する</h3>
+
+<p>管理者は、グループを追加することができます。</p>
+
+<h3>グループリスト</h3>
+
+<p>グループリストでは、それぞれの要素に関して:</p>
+
+
+<ul>
+  <li>メンバーリストに移動できます。</li>
+  <li>パーミッションに移動できます。</li>
+  <li>グループを削除できます (要チェックボックスの確認)。</li>
+  <li>ステータスを「デフォルト」に切り替えることができます (要チェックボックスの確認)。</li>
+</ul>
+
+<h3>デフォルトグループ</h3>
+<p>デフォルトグループは、新しいユーザが自動的に関連付けられるグループです。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>色々な方法でガラリーに写真をアップロードできます：</p>
+
+<ul>
+  <li>ブラウザーの中で<strong>直接なアップロード</strong> は一番快適に気軽です。しかし、それはあなたのブラウザーやWebサーバーに依存します。多数の写真又は、その他のトラベルが発生がありましたら、その他のアップロード方法もあります。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">直接なアップロードへ</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> はあなたのパソコンにインストールするデスクトップのアプリケーションです。 pLoader ウィンドウに写真をドラッグ&amp;ドロップし、<em>"Piwigoにアップロード"</em> をクリックして待つだけです。<strong>WinToPiwigo</strong> 又は<strong>Digikam</strong> などのデスクトップアプリケーションも、あります。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">pLoaderへ</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li>多数の写真をアップロードする場合、<strong>FTP</strong> は推薦しています。写真をアップロードするために、ガイドをお読みください。ＦＴＰの方法はサーバー上に写真の場所を正確に指定することができます。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">ＦＴＰへ</a></p>
+</div>
Index: /tags/2.6.0RC1/language/ja_JP/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>ユーザは自分の写真をアップロードすることもできます。</p>
+
+<p>物理カテゴリにアップロードを許可します (「<span class="pwgScreen">管理 > カテゴリ > 管理 > 編集</span>」または「<span class="pwgScreen">管理 > カテゴリ &raquo; プロパティ &raquo; アップロード</span>」)。バーチャルカテゴリには、アップロードすることができません。</p>
+
+<p>対応するディレクトリに書込み権を与えてください。</p>
+
Index: /tags/2.6.0RC1/language/ja_JP/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/help_misc.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>あなたのギャラリーを作成したらすぐに、「<span class="pwgScreen">管理 &raquo; 設定 &raquo; デフォルト</span>」にて、デフォルト表示プロパティを変更してください。
+  すべての新規登録ユーザは、これらのデフォルト設定を使用することになります。</p>
+
+<p>あなたに質問がある場合、Piwigoコミュニティは、あなたを<a href="http://piwigo.org/forum">フォーラム</a>で歓迎します。</p>
+
+
Index: /tags/2.6.0RC1/language/ja_JP/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,45 @@
+<fieldset>
+<legend>写真のパーミッション</legend>
+
+<p>各写真は <strong>プライバシーレベル</strong>があります。各ユーザーはプライバシーレベルもあります。５つのプライバシーレベルがあります：</p>
+<ol>
+ <li>なし</li>
+ <li><em>連絡先</em></li>
+ <li><em>友人（連絡先より高い）</em></li>
+ <li><em>家族 （友人より高い）</em></li>
+ <li><em>アドミン （その他のレベルより高い）</em></li>
+</ol>
+
+<p>最も高いレベルは最も低いレベルのパーミッションがあります。どのユーザーにも、最も高いプライバシーレベルは最も多くの写真が見られます。</p>
+
+<p>例えば、もし、"peter_wedding-0024.jpg" の写真は<em>家族</em>のプライバシーレベルを設定していれば、</p>
+<ul>
+ <li>山田さんは<em>アドミン</em>なので、全ての写真がが見られます。</li>
+ <li>田中さんは <em>家族</em> なので、その写真も見られます。</li>
+ <li>鈴木さんは<em>友人</em>) なので、その写真が見られません。</li>
+</ul>
+
+<p>カテゴリー内容のパーミッションがないユーザーはそのカテゴリーやそのタイトルも見られません。タグも同じようなルールもあります。</p>
+
+<p><span class="pwgScreen">アドミニストレーション &raquo; ユーザー &raquo; 管理</span>の画面でユーザーのプライバシーレベルを設定できます。</p>
+
+</fieldset>
+
+<fieldset>
+<legend>カテゴリーのパーミッション</legend>
+
+<p>もし、現在のプライバシーレベルが利用できなかったら、ユーザー又はグループのためのカテゴリーのパーミッションも設定できます。カテゴリーと写真を同時にパーミッションを設定できます。</p>
+
+<p>あなたは、カテゴリへのアクセスを禁止することができます。あなたがパーミッションを管理したい場合、カテゴリアクセスタイプを「プライベート」に変更してください。</p>
+
+<p>あなたは、単一のカテゴリを編集 (<span class="pwgScreen">管理 &raquo; カテゴリ &raquo; 管理 > 編集</span>) または、
+  すべてのカテゴリツリーを設定 (<span class="pwgScreen">管理 &raquo; カテゴリ &raquo; プロパティ &raquo;  パブリック/プライベート</span>) することで、カテゴリをプライベートにすることができます。</p>
+
+<p>カテゴリがプライベートにされた場合、あなたはグループおよびユーザのパーミッションを3つの画面で管理することができます:</p>
+
+<ul>
+  <li><span class="pwgScreen">管理 &raquo; アイデンティフィケーション &raquo; ユーザ &raquo; パーミッション</span> (1ユーザにつき1リンク)</li>
+  <li><span class="pwgScreen">管理 &raquo; アイデンティフィケーション &raquo; グループ &raquo; パーミッション</span> (1グループにつき1リンク)</li>
+  <li><span class="pwgScreen">管理 &raquo; カテゴリ &raquo; カテゴリパーミッションの編集</span> (1カテゴリにつき1リンク)</li>
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ja_JP/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>写真は、ファイルディレクトリに関連するカテゴリ内に表示されます。</p>
+
+<p>ウェブサーバ内で複製せず、あなたは複数のカテゴリで写真を表示することができます。
+(管理者がギャラリーの写真ページからアクセスできる) 写真編集画面でカテゴリと写真を関連付けてください。</p>
+
+<p>バーチャルディレクトリは、このコンセプトに基づいています: バーチャルディレクトリには、対応するカテゴリが存在しません。
+バーチャルカテゴリを「<span class="pwgScreen">管理 &raquo; カテゴリ &raquo; 管理</span>」にて作成してください。</p>
+
Index: /tags/2.6.0RC1/language/ja_JP/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/history.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>履歴</h2>
+
+<p>これらのページでは、あなたが「管理 > 一般 > 履歴」で選択したオプションに従って、Piwigoの履歴ナビゲーションにアクセスすることができます。</p>
+	
+<h3>統計</h3>
+<ul>
+<p>あなたが、<code>history</code>テーブルにページアクセス (<span class="pwgScreen">index.php</span>および<span class="pwgScreen">picture.php</span>) を保存している場合、ここではサイトのページアクセスに関する情報を閲覧することができます。</p>
+
+	<li><strong>全体の統計</strong> : あなたは、年毎の統計を閲覧することができます。</li>
+	
+	<li><strong>年毎の統計</strong> : あなたが選択した年に関して、月毎の統計を閲覧することができます。</li>
+	
+	<li><strong>月毎の統計</strong> : あなたが選択した月に関して、日毎の統計を閲覧することができます。</li>
+	
+	<li><strong>日毎の統計</strong> : あなたが選択した日付に関して、時間毎の統計を閲覧することができます。</li>
+	
+</ul>
+
+<h3>検索</h3>
+<ul>
+<p>あなたが、<code>history</code>テーブルにページアクセス (<span class="pwgScreen">index.php</span>および<span class="pwgScreen">picture.php</span>) を保存している場合、ここでは異なるフィルタにより、サイトのページアクセス詳細に関する情報を閲覧することができます。</p>
+
+	<li><strong>日付に関するフィルタ</strong> : あなたが活動を閲覧したい期間を選択してください。</li>
+	
+	<li><strong>エレメントタイプに関するフィルタ</strong> : あなたが活動を閲覧したいエレメントタイプを選択してください。</li>
+	
+	<li><strong>ユーザに関するフィルタ</strong> : あなたが活動を閲覧したいユーザを選択してください。</li>
+	
+	<li><strong>ファイル名に関するフィルタ</strong> : あなたが活動を閲覧したいファイル名を選択してください。</li>
+	
+	<li><strong>イメージIDに関するフィルタ</strong> : あなたが活動を閲覧したいイメージIDを選択してください。</li>
+</ul>
Index: /tags/2.6.0RC1/language/ja_JP/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ja_JP/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/maintenance.html	(revision 25596)
@@ -0,0 +1,56 @@
+<h2>メンテナンス</h2>
+
+<p>ページ作成時間を最適化するため、Piwigoはキャッシュ情報を使用します。
+例えば、それぞれのカテゴリに含まれている写真数を、ページがリロードされるたびにカウントするのではなく、
+データベースに保存します。理論的には、この情報は常に更新されますが、時々エラーが発生して、キャッシュ情報が
+正しく表示されない場合もあります。</p>
+
+<p>時間に関して、いくつかの情報が無用になる場合もあります。この無用な情報をデータベースから削除することで、
+あなたはディスクスペースを減らすことができます。</p>
+
+<ul>
+
+  <li>
+    <strong>未リンクのエレメント:</strong>
+    どのバーチャルカテゴリにも関連付けられていないイメージを表示します。
+  </li>
+  <li>
+    <strong>1つ以上の物理カテゴリに存在する同一名ファイル:</strong>
+    複数カテゴリで見つかった同一ファイル名のイメージまたはファイルを表示します。
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>カテゴリ情報を更新する:</strong> それぞれのカテゴリに関して、次の情報が更新または管理されます:
+  親カテゴリのリスト、写真数、最近の写真の日付、子カテゴリのポジション、すべてのカテゴリのポジション。
+  この処理では、サムネイルの一致もチェックされます。</li>
+
+  <li><strong>イメージ情報を更新する:</strong> それぞれの写真に関して、次の情報が更新されます:
+  ファイルのフルパス、平均評点。
+  <em>警告</em>: 「<span class="pwgScreen">管理 > カテゴリ > 同期化</span>」または
+  写真の修正ページ (例えば、<span class="pwgScreen">写真</span>を経由) で同期化できる、
+  メタデータ情報に混乱しないでください。</li>
+
+  <li><strong>データベースを修復および最適化する:</strong>
+  それぞれのテーブルに関して、並び替え、修復および最適化処理が実行されます。
+  </li>
+</ul>
+
+<ul>
+  <li><strong>履歴詳細を消去する:</strong> <code>履歴</code>テーブルから、すべてのレコードが削除されます。
+  「<span class="pwgScreen">管理 > 特別 > 履歴</span>」ページでは、過去の履歴に関する情報が表示されなくなります。
+  <em>警告</em>: すべてのデータが削除されて、元に戻すことはできませんので留意してください。</li>
+
+  <li><strong>履歴サマリーを消去する:</strong> 履歴に関して、すべてのサマリー情報を削除します。このサマリーは、履歴詳細から計算されます。</li>
+
+  <li><strong>セッションを削除する:</strong> 期限切れのユーザセッションを削除します。</li>
+
+  <li><strong>未使用の通知フィードを削除する</strong></li>
+  
+  <li><strong>Purge search history</strong></li>
+  
+  <li><strong>コンパイル済みテンプレートを削除する</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ja_JP/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>メール通知</h2>
+
+<p>この画面では、あなたのサイトニュースに関する、ユーザのメール購読を設定および管理します。</p>
+
+<p>この画面は、3つのタブで構成されます:</p>
+
+<h3>パラメータ</h3>
+<p>ウェブマスタのみ利用できます。このタブでは、メール通知のパラメータを設定します。</p>
+
+<h3>購読</h3>
+<p>ウェブマスタのみ利用できます。このタブでは、ユーザに関する、メール通知の購読/購読解除を管理します。</p>
+
+<h3>送信</h3>
+<p>ウェブマスタおよび管理者のみ利用できます。このタブでは、ニュースをメール通知することができます。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>パーマリンク</h2>
+
+<p>パーマリンクは、カテゴリURIを素晴らしく変更します。カテゴリにパーマリンクが設定された場合、URIにカテゴリのIDが不要となります。</p>
+
+<p>パーマリンクが削除された場合、今後もPWGページにアクセスできるよう、あなたはパーマリンク履歴に保存することができます。パーマリンク履歴テーブルでは、あなたは最新利用日時、このパーマリンクの利用回数およびパーマリンクの削除日時を閲覧することができます。</p>
+
+<p>パーマリンクは、カテゴリごとにユニークである必要がありますので留意してください。また、パーマリンク履歴では、あなたは同じパーマリンクを2回以上定義することはできません。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,100 @@
+<fieldset>
+  <legend>クイックスタート</legend>
+
+<ol>
+  <li>あなたのコンピュータにディレクトリを作成してください。</li>
+
+  <li>このディレクトリ内に写真をコピーした後、ウェブ表示のため、写真をリサイズしてください。
+  <em>警告</em>: ディレクトリおよびファイル名には、文字、「-」「_」「.」の記号のみ含んでください。空白、アクセント符号は含まないでください。</li>
+
+  <li>FTPクライアントを使って、あなたのPiwigoインストレーションの「galleries」ディレクトリにディレクトリをコピーしてください。</li>
+
+  <li>あなたのギャラリーにログインして、未作成のサムネイルを作成するため、「<span class="pwgScreen">管理 > 写真 > サムネイル</span>」に移動してください。</li>
+
+  <li>「<span class="pwgScreen">管理</span>」に移動して、大きな「クイックローカル同期」ボタンをクリックしてください。</li>
+</ol>
+
+<p>おめでとうございます! あなたは、フォトギャラリーの最初のカテゴリの作成に成功しました。</p>
+
+</fieldset>
+
+<fieldset>
+  <legend>ディレクトリおよびファイル構造</legend>
+<ul>
+
+  <li>
+
+    <p>ギャラリーディレクトリは、Piwigoディレクトリ「galleries」にあります。以下、非常に小さな (しかし、多くの特長を持つ) ギャラリーのディレクトリツリーの例です:</p>
+
+    <pre>.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+
+  <li>「galleries」配下の各ディレクトリは、カテゴリを表します。カテゴリの深さに制限はありません。</li>
+ 
+  <li>基本的に、エレメントはファイルによって表されます。
+  ファイル拡張子が設定パラメータの<code>file_ext</code>内にある場合、ファイルはPiwigoのエレメントになることができます (詳細は、<span class="filename">include/config_default.inc.php</span>ファイルをご覧ください)。</li>
+
+  <li>写真エレメントは、サムネイルと関連付ける必要があります (詳細は、下記サムネイルの項目をご覧ください)。</li>
+
+  <li>写真エレメントは、高品質のファイルを関連付けることができます。上記例では、wedding.jpgです。高品質の写真には、接頭辞がありません。</li>
+
+  <li>デフォルトでは、写真エレメント (ビデオ、サウンド、テキスト等) に関して、ファイル名の拡張子に関連付けられるアイコンはありません。
+  任意で、あなたはサムネイルおよび見本ファイルを関連付けることができます (上記例のvideo.aviをご覧ください)。</li>
+
+  <li><em>警告</em>: ディレクトリおよびファイル名には、文字、「-」「_」「.」の記号のみ含んでください。空白、アクセント符号は含まないでください。</li>
+
+  <li>ファイル、サムネイルおよび見本が正しくディレクトリに配置された場合、「<span class="pwgScreen">管理 > カテゴリ > 同期化</span>」に移動してください。</li>
+
+</ul>
+
+</fieldset>
+
+<fieldset>
+  <legend>サムネイル</legend>
+<ul>
+
+  <li>それぞれの写真は、サムネイルを持つ必要があります。</li>
+
+  <li>サムネイルは、カテゴリディレクトリ内のサブディレクトリ「thumbnail」に保存されます。
+  サムネイルは、関連する写真のファイル名に接頭辞「<em>TN-</em>」を付けたファイル名となります。</li>
+
+  <li><em>アドバイス</em>: サムネイルの作成には、外部モジュールをお使いください。</li>
+
+  <li>(イメージクオリティ、ウェブサーバリソースのロードに関して) 推奨はできませんが、あなたはサムネイルの作成に「<span class="pwgScreen">管理 > 写真 > サムネイル</span>」ページを使用することができます。</li>
+
+  <li>すべてのカテゴリディレクトリに書込み権を与えてください。</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ja_JP/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/search.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>検索</h2>
+
+<p>このページでは、あなたはギャラリー全体から写真を検索することができます。</p>
+
+<dl>
+
+  <dt>言葉で探す</dt>
+  <dd>入力された言葉を使用して、ギャラリーで表示される写真に関連した属性すべてを検索します。
+  部分的な合致には、* をワイルドカードとして使用してください。</dd>
+
+  <dt>作者で探すdt>
+  <dd>部分的な合致には、* をワイルドカードとして使用してください。</dd>
+
+  <dt>日付で探す</dt>
+  <dd>あなたの検索に関して、日付および終了日を選択してください。あなたが「以前」を検索したい場合、
+  日付を空白のままにしてください。年は最後のフィールドに次のようなフォーマットで入力してください : 0000 (例 2009)</dd>
+
+  <dt>カテゴリを探す</dt>
+  <dd>あなたが探したいカテゴリを選択してください。親カテゴリを選択した後、
+  「サブカテゴリを探す」オプションを選択した場合、すべてのサブカテゴリも検索されます。</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ja_JP/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/synchronize.html	(revision 25596)
@@ -0,0 +1,10 @@
+<h2>同期化</h2>
+
+<p>同期化には、2つの方法があります: ディレクトリ/ファイルおよびファイルメタデータです。
+ディレクトリ/ファイルでは、データベース内のカテゴリツリーを含んだディレクトリを同期化します。
+メタデータでは、ファイルサイズ、ピクセルのサイズ、EXIFまたはIPTC情報等のエレメント情報を更新します。</p>
+
+<p>最初の同期化は、ディレクトリ/ファイルを実行してください。</p>
+
+<p>同期化処理には長時間を要します (あなたのサーバロードおよび管理するエレメント量に依存します)。
+そのため、カテゴリごとに処理することも可能です。</p>
Index: /tags/2.6.0RC1/language/ja_JP/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/help/user_list.html	(revision 25596)
@@ -0,0 +1,30 @@
+<h2>ユーザリスト</h2>
+
+<p>このページでは、あなたは登録済みユーザを管理することができます。
+パーミッションのみ異なるページで管理します。</p>
+
+<h3>ユーザを追加する</h3>
+
+<p>管理者は、手動でユーザを追加することができます。</p>
+
+<h3>ユーザリスト</h3>
+
+<p>リストは、ユーザ名 (ワイルドカードは、* を使用)、グループまたはステータスでフィルタすることができます。
+また、リストは登録日またはユーザ名の昇順または降順に並び替えることもできます。</p>
+
+<p>このページでは、複数のユーザに対して、同時に異なる処理を実施することができます:</p>
+
+<ul>
+
+  <li>ユーザの削除 (要確認チェックボックスのチェック)</li>
+
+  <li>ステータスの変更</li>
+
+  <li>グループの関連付け、または関連付けの解除</li>
+
+  <li>表示プロパティの変更</li>
+
+  <li>追加的なプロパティの変更</li>
+
+</ul>
+<p>ターゲットは「選択」されたユーザ (デフォルト) です。または、「すべて」のユーザを選択することができます。</p>
Index: /tags/2.6.0RC1/language/ja_JP/index.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ja_JP/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'インストール';
+$lang['Basic configuration'] = '基本設定';
+$lang['Default gallery language'] = 'ギャラリーのデフォルトの言語';
+$lang['Database configuration'] = 'データベース設定';
+$lang['Admin configuration'] = '管理設定';
+$lang['Start Install'] = 'インストールを開始する';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'ゲスト一覧に表示されます。ウェブサイト管理に必要です。';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'サーバへ接続することができましたが、データベースに接続できません。';
+$lang['Can\'t connect to server'] = 'サーバに接続できません。';
+$lang['Host'] = 'ホスト';
+$lang['User'] = 'ユーザー';
+$lang['user login given by your host provider'] = 'あなたのホスティング業者から提供されたデータベースユーザ名です。';
+$lang['user password given by your host provider'] = 'あなたのホスティング業者から提供されたデータベースパスワードです。';
+$lang['Database name'] = 'データベース名';
+$lang['also given by your host provider'] = 'こちらも、あなたのホスティング業者から提供されたデータベース名です。';
+$lang['Database table prefix'] = 'データベーステーブル接頭辞';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'データベーステーブルに接頭辞として付けられます (あなたのテーブルを管理しやすくします)。';
+$lang['enter a login for webmaster'] = 'ウェブマスタのユーザIDを入力してください。';
+$lang['webmaster login can\'t contain characters \' or "'] = 'ウェブマスタのユーザIDには、「\'」または「"」を含まないでください。';
+$lang['please enter your password again'] = 'もう一度あなたのパスワードを入力してください。';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'ウェブマスタパスワードは、秘密にしてください。ウェブマスタパスワードを使用して、管理パネルにアクセスできます。';
+$lang['Password [confirm]'] = 'パスワード [もう一度]';
+$lang['verification'] = '確認';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'ヘルプが必要ですか? <a href="%s">Piwigoメッセージボード</a>にて、あなたの質問を投稿してください。';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'ゲストは、このメールアドレスでサイト管理者に連絡することができます。';
+$lang['PHP 5 is required'] = 'PHP 5が必要です';
+$lang['It appears your webhost is currently running PHP %s.'] = 'あなたのウェブホストは現在PHP %sを使っています。';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigoは.htaccess ファイルを作成するか変更して、PHP 5を設定してみます。';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注：自分で設定を変更し、その後Piwigoを再起動もできます。';
+$lang['Try to configure PHP 5'] = 'PHP 5を設定してみます。';
+$lang['Sorry!'] = '申し訳ありません!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'PiwigoはPHP 5を設定できませんでした。';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'あなたのホスティング業者のサポートに連絡し、どうやったらPHP 5を設定できるか確認すべきです。';
+$lang['Hope to see you back soon.'] = 'またお越し下さい';
+$lang['Congratulations, Piwigo installation is completed'] = 'おめでとうございました。Piwigo のインストールが完了しました。';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'その他の解決は、上のボックスにあるテクストをコピーし、"local/config/database.inc.php"に貼り付けます。（注意：database.inc.php は上のテクスト内容以外のこと（エンターキーやスペースなど）を含まないでください。)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'local/config/database.inc.php の設定ファイル作成に失敗しました。';
+$lang['Download the config file'] = '設定ファイルをダウンロードします。';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = '設定ファイルをダウンロードし、インストールされた local/config ディレクトリーにアップロードすることができます。';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'どうぞ、フォーラムで相談するのをためらわないでください: %s';
+$lang['Just another Piwigo gallery'] = '他のPiwigoギャラリー';
+$lang['Welcome to your new installation of Piwigo!'] = '新しくPiwigoをインストールしていただき、ありがとうざいます!';
+$lang['Welcome to my photo gallery'] = '私のフォトギャラリーへようこそ';
+?>
Index: /tags/2.6.0RC1/language/ja_JP/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+日本語 [JP]
Index: /tags/2.6.0RC1/language/ja_JP/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ja_JP/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ja_JP/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = 'アップグレード';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'このページであなたのデータベースをアップグレードするように推薦しています（旧Piwigoのデータベースから、現在版）。
+アップグレード・アシスタントはあなたが現在<strong>release %s</strong> (またはそれと同等)を使っています。';
+$lang['Upgrade from version %s to %s'] = 'バージョン %s から %s にアップグレードする';
+$lang['Statistics'] = '統計';
+$lang['total upgrade time'] = '合計アップグレード時間';
+$lang['total SQL time'] = '合計SQL時間';
+$lang['SQL queries'] = 'SQLクエリー';
+$lang['Upgrade informations'] = '更新情報';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '問題がある場合、[管理 > ツール > メンテナンス] でメンテナンスチェックを実行してください。';
+$lang['Only administrator can run upgrade: please sign in below.'] = '管理者のみアップグレードを実行できます: 以下でログインしてください。';
+$lang['You do not have access rights to run upgrade'] = 'あなたには、アップグレードを実行する権限がありません。';
+$lang['All sub-albums of private albums become private'] = 'プライベートカテゴリのすべてのサブカテゴリがプライベートにされました。';
+$lang['User permissions and group permissions have been erased'] = 'ユーザパーミッションおよびグループパーミッションが削除されました。';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '以前の設定より、サムネイル接頭辞およびウェブマスターのメールアドレスのみ保存されました。';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = '予防措置として、次のプラグインは無効になりました。プラグインを有効にする前に、プラグインのアップグレードを確認してください。:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '<i>%s</i>に、 <b>?></b>の前に入力:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '予防措置として、次のテーマが無効になりました。テーマを有効にする前に、アップグレードを確認してください。：';
+?>
Index: /tags/2.6.0RC1/language/ka_GE/about.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/about.html	(revision 25596)
@@ -0,0 +1,12 @@
+  <li>Piwigo - ეს არის სკრიპტი,რომელიც საშუალებას გაძლევთ ადვილად შექმნათ ფოტო სურათების ონლაინ გალერეა.</li>
+
+  <li>გალერეა Piwigo შექმნილია  PHP (elePHPant) საშუალებით და იყენებს  MySQL (SQuirreL) მონაცემთა ბაზას.</li>
+
+  <li>თუკი გაგიჩნდებათ რაიმე კითხვა ან კომენტარი სკრიპტთან დაკავშირებით,გთხოვთ დატოვოთ იგი ოფიციალურ საიტზე <a
+  href="http://ru.piwigo.org">Piwigo</a>, ან მის <a href="http://ru.piwigo.org/forum">ფორუმზე</a>.</li>
+
+<p>The Georgian is maintained by (alpha ordered):
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=8075">geomagi</a></li>
+	</ul>
+         .... thanks to them</p>
Index: /tags/2.6.0RC1/language/ka_GE/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/admin.lang.php	(revision 25596)
@@ -0,0 +1,825 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d კავშირი';
+$lang['%d associations'] = '%d კავშირი';
+$lang['%d album including'] = '%d კატეგორია დამატებულია ';
+$lang['%d albums including'] = 'დამატებული კატეგორიები: %d';
+$lang['%d physical'] = '%d რეალური';
+$lang['%d physicals'] = '%d რეალური';
+$lang[' and %d virtual'] = ' და %d ვირტუალური';
+$lang[' and %d virtuals'] = ' და %d ვირტუალური';
+$lang['%d album moved'] = '%d კატეგორია გადატანილია';
+$lang['%d albums moved'] = '%d კატეგორია გადატანილია';
+$lang['%d group'] = '%d ჯგუფი';
+$lang['%d groups'] = '%d ჯგუფი';
+$lang['%d member'] = '%d მონაწილე';
+$lang['%d members'] = '%d მონაწილე';
+$lang['%d tag'] = '%d სიტყვა';
+$lang['%d tags'] = '%d სიტყვები';
+$lang['%d user comment rejected'] = '%d მომხმარებლის კომენტარი აცილებულია';
+$lang['%d user comments rejected'] = '%d მომხმარებლის კომენტარები აცილებულია';
+$lang['%d user comment validated'] = '%d მომხმარებლის კომენტარი მიღებულია';
+$lang['%d user comments validated'] = '%d მომხმარებლის კომენტარები მიღებული';
+$lang['%d user deleted'] = '%d მომხმარებელი წაშლილია';
+$lang['%d users deleted'] = '%d მომხმარებელი წაშლილია';
+$lang['%d user'] = '%d მომხმარებელი';
+$lang['%d users'] = '%d მომხმარებელი';
+$lang['%d waiting for validation'] = '%d უცდის შემოწმებას';
+$lang['Actions'] = 'მოქმედება';
+$lang['Activate'] = 'აქტივაცია';
+$lang['Add/delete a permalink'] = 'დავამატოთ/წავშალოთ მუდმივი ბმული';
+$lang['Add a tag'] = 'დავამატოთ სიტყვა';
+$lang['Add a user'] = 'დავამატოთ მომხმარებელი';
+$lang['Add group'] = 'დავამატოთ ჯგუფი';
+$lang['Add'] = 'დავამატოთ';
+$lang['Allow user registration'] = 'დაუშვათ მომხმარებლების რეგისტრაცია';
+$lang['Apply to sub-albums'] = 'გამოვიყენოთ ქვეკატეგორიებისთვისაც';
+$lang['Associated'] = 'დაკავშირებული';
+$lang['Caddie management'] = 'კალათის მართვა';
+$lang['Caddie'] = 'კალათა';
+$lang['Albums authorized thanks to group associations'] = 'კატეგორიები, რომლებიც დაშვებულია ჯგუფთან კავშირის გამო';
+$lang['Album manual order was saved'] = 'კატეგორიების განსაკუთრებული წყობა შენახულია';
+$lang['Check for upgrade failed for unknown reasons.'] = 'განახლების შემოწმება უცნობი მიზეზების გამო არ შესრულდა.';
+$lang['Check for upgrade'] = 'განახლების შემოწმება';
+$lang['Comments for all'] = 'კომენტარები ყველასათვის';
+$lang['Current name'] = 'მიმდინარე სახელი';
+$lang['Database'] = 'მონაცემთა ბაზა';
+$lang['Deactivate'] = 'გამორთვა';
+$lang['Delete Representant'] = 'წარმომადგენლის წაშლა';
+$lang['Delete selected tags'] = 'არჩეული სიტყვების წაშლა';
+$lang['Delete selected users'] = 'არჩეული მომხმარებლების წაშლა';
+$lang['Deletions'] = 'წაშლები';
+$lang['Deny selected groups'] = 'უარი ჯგუფის არჩევაზე';
+$lang['Deny selected users'] = 'უარი მომხმარებილს არჩევაზე';
+$lang['Description'] = 'აღწერა';
+$lang['Display options'] = 'ნახვის ვარიანტები';
+$lang['Dissociated'] = 'დაუკავშირებლები';
+$lang['Does not represent'] = 'წარმომადგენელი არ არის';
+$lang['Edit selected tags'] = 'გამოყოფილი სიტყვების რედაქტირება';
+$lang['Edit tags'] = 'სიტყვების რედაქტირება';
+$lang['Email admins when a new user registers'] = 'შევატყობინოთ ადმინისტრატორს ახალი მომხმარებლის რეგისტრაცია';
+$lang['Email admins when a valid comment is entered'] = 'შევატყობინოთ ადმინისტრატორს ახალი კომენტარის შესახებ';
+$lang['Email admins when a comment requires validation'] = 'შევატყობინოთ ადმინისტრატორს შესამოწმებელი კომანტარის შესახებ';
+$lang['Environment'] = 'გარემოცვა';
+$lang['Form'] = 'მოქმედებები';
+$lang['Gallery title'] = 'გალერეის სახელი';
+$lang['Grant selected groups'] = 'ნება დავრთოთ რჩეულ ჯგუფებს';
+$lang['Grant selected users'] = 'ნება დავრთოთ რჩეულ მომხმარებლებს';
+$lang['Group name'] = 'ჯგუფის სახელი';
+$lang['Groups'] = 'ლგუფები';
+$lang['Guests'] = 'სტუმრები';
+$lang['History'] = 'ისტორია';
+$lang['Informations'] = 'ინფორმაცია';
+$lang['Install'] = 'დავაყენოთ';
+$lang['Link all album photos to a new album'] = 'დაუკავშიროთ ამ კატეგორიის ყველა ელემენტი ახალს';
+$lang['Link all album photos to some existing albums'] = 'დაუკავშიროთ ამ კატეგორიის ყველა ელემენტი ერთ ერთ არსებულს';
+$lang['Linked albums'] = 'დაკავშირებული კატეგორიები';
+$lang['Lock gallery'] = 'დავბლოკოთ გალერეა';
+$lang['Maintenance'] = 'მომსახურება';
+$lang['Edit album permissions'] = 'ნებართვების მართვა კატეგორიებისათვის';
+$lang['Manage permissions for group "%s"'] = 'ნებართვების მართვა ჯგუფისთვის  "%s"';
+$lang['Manage permissions for user "%s"'] = 'ნებართვების მართვა მომხმარებლებისათვის  "%s"';
+$lang['Manage tags'] = 'სიტყვების მართვა';
+$lang['Members'] = 'მონაწილეები';
+$lang['Metadata synchronized from file'] = 'მეტამონაცემები სინქრონიზირებულია ფაილთან';
+$lang['Move albums'] = 'კატეგორიის გადატანა';
+$lang['Move'] = 'გადატანა';
+$lang['Name'] = 'სახელი';
+$lang['New name'] = 'ახალი სახელი';
+$lang['New parent album'] = 'ახალი მშობლიური კატეგორია';
+$lang['New tag'] = 'ახალი სიტყვა';
+$lang['Number of comments per page'] = 'კომენტარების რაოდენობა გვერდზე';
+$lang['Number of rates'] = 'შეფასების რაოდენობა';
+$lang['Number of thumbnails to create'] = 'შესაქმნელი ინიატურების რაოდენობა';
+$lang['Only private albums are listed'] = 'მხოლოდ დაფარული კატეგორიების ჩვენება';
+$lang['Operating system'] = 'ოპერატიული სისტემა';
+$lang['Options'] = 'ოპციები';
+$lang['Other private albums'] = 'პრივატულ კატეგორიებთან დაშვება';
+$lang['Page banner'] = 'წარწერა ბანერზე';
+$lang['Parent album'] = 'მშობლიური კატეგორია';
+$lang['Path'] = 'გზა';
+$lang['Permalink'] = 'მუდმივი მისამართი';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'მუდმივი მისამართი %s ადრე გამოიყენებოდა კატეგორიისთვის %s. წაშალეთ იგი მანამდე მუდმივი მისამართების ისტორიიდან';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'მუდმივი მისამართი უნდა შედგებოდეს  a-z, A-Z, 0-9, "-" ან"_". იგი არ უნდა იყოს რიცხობრივი და არ უნდა იწყებოდეს რიცხვით "-"';
+$lang['Permalink %s is already used by album %s'] = 'მუდმივი მისამართი %s უკვე გამოიყენება კატეგორიისათვის %s';
+$lang['Permalink history'] = 'მუდმივი მისამართების სია';
+$lang['Permalinks'] = 'მუდმივი მისამართი';
+$lang['Permission denied'] = 'დაშვება აკრძალულია';
+$lang['Permission granted thanks to a group'] = 'ჯგუფისთვის დაშვება შესაძლებელია';
+$lang['Permission granted'] = 'დაშვება შესაძლებელია';
+$lang['Photo informations updated'] = 'ინფორმაცია ფოტოსთვის განახლებულია';
+$lang['Plugins'] = 'პლაგინები';
+$lang['Position'] = 'ნომერი';
+$lang['Preferences'] = 'გასწორება';
+$lang['Properties'] = 'თვისებები';
+$lang['Random photo'] = 'შემთხვევითი ფოტო';
+$lang['Rate date'] = 'თარიღი';
+$lang['Rating by guests'] = 'სტუმრების შეფასება';
+$lang['Rating'] = 'შეფასება';
+$lang['Reject'] = 'უარი';
+$lang['Representant'] = 'წარმომადგენელი';
+$lang['Representation of albums'] = 'წარმოდგენილი კატეგორიები';
+$lang['Representative'] = 'წარმომადგენელი';
+$lang['Represents'] = 'წარმოადგენს';
+$lang['Save order'] = 'შევინახოთ წყობა';
+$lang['Save to permalink history'] = 'შევინახოთ მუდმვი მისამართების ისტორია';
+$lang['Select at least one album'] = 'აირჩიეთ ერთი კატეგორია მაინც';
+$lang['Select at least one photo'] = 'აირჩიეთ ერთი ფოტო მაინც';
+$lang['Select at least one user'] = 'აირჩიეთ ერთი მომხმარებელი მაინც';
+$lang['Show info'] = 'ვნახოთ ინფორმაცია';
+$lang['Site manager'] = 'საიტების მართვა';
+$lang['Status'] = 'სტატუსი';
+$lang['Statistics'] = 'სტატისტიკა';
+$lang['Storage album'] = 'შენახვის კატეგორია';
+$lang['Sum of rates'] = 'მთლიანი შეფასება';
+$lang['Tag "%s" already exists'] = 'სიტყვა "%s" უკვე არის';
+$lang['Tag "%s" was added'] = 'სიტყვა "%s" დამატებულია';
+$lang['Tag selection'] = 'სიტყვების არჩევა';
+$lang['The %d following tags were deleted'] = '%d მითითებული სიტყვა წაშლილია';
+$lang['Uninstall'] = 'დეინსტალაცია';
+$lang['Use the default photo sort order (defined in the configuration file)']='სურათების სორტირება ძირითადად (როგორც კონფიგურაციის ფაილშია)';
+$lang['User comments validation'] = 'მომხმარებლების კომენტარების შემოწმება';
+$lang['Users'] = 'მომხმარებლები';
+$lang['Validate'] = 'მივიღოთ';
+$lang['Validation'] = 'შემოწმება';
+$lang['Version'] = 'ვერსია';
+$lang['Virtual albums to move'] = 'ვირტუალური კატეგორიები გადასატანად';
+$lang['Virtual album name'] = 'ვირტუალური კატეგორიების სახელები';
+$lang['Webmaster cannot be deleted'] = 'ვებმასტერის წაშლა არ შეიძლება';
+$lang['You are running on development sources, no check possible.'] = 'მუშაობს დამუშავების პროცესში, შემოწმწბა შეუძლებელია.';
+$lang['You cannot delete your account'] = "თქვენ არ შეგიძლიათ თქვენი აკკაუნთის წაშლა";
+$lang['You cannot move an album in its own sub album'] = 'თქვენ არ შეგიძლიათ გადააადგილოთ კატეგორია მის ქვეკატერორიაში';
+$lang['You need to confirm deletion'] = 'თქვენ უნდა დაადასტუროთ წაშლა';
+$lang['Associate to album'] = 'მივამაგროთ კატეგორიას';
+$lang['associate to group'] = 'მივამაგროთ ჯგუფს';
+$lang['Authorized'] = 'დასაშვებია';
+$lang['Add a virtual album'] = 'დავამატოთ ვირტუალური კატეგორია';
+$lang['Authorize users to add comments on selected albums'] = 'ნება დავრთოთ მომხმარებლებს დაამატონ კომენტარები არჩეულ კატეგორიებს';
+$lang['The name of an album must not be empty'] = 'კატეგორიის სახელი ცარიელი არ უნდა იყოს';
+$lang['Lock albums'] = 'დავბლოკოთ კატეგორიები';
+$lang['Private'] = 'პირადი(პრივატული) კატეგორია';
+$lang['Public'] = 'საერთო კატეგორია';
+$lang['Find a new representant by random'] = 'ვიპოვოტ ახალი წარმომადგენელი შემთხვევითი მეთოდით';
+$lang['Public / Private'] = 'საერთო / პრივატული';
+$lang['Manage authorizations for selected albums'] = 'ავტორიზაციის მართვა არჩეული კატეგორიებისათვის';
+$lang['Virtual album added'] = 'ვირტუალური კატეგორია დამატებულია';
+$lang['Virtual album deleted'] = 'ვირტუალური კატეგორია წაშლილია';
+$lang['Access type'] = 'დაშვების ტიპი';
+$lang['Information data registered in database'] = 'ინფორმაცია დარეგისტრირებულია მონაცემთა ბაზაში';
+$lang['Default display'] = 'ძირითადი სახე';
+$lang['The gallery URL is not valid.'] = 'არაკორექტული URL გალერეისათვის';
+$lang['Main'] = 'მთავარი';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'გვერდზე შეიძლება იყოს 5 დან 50 კომენტარამდე.';
+$lang['Configuration'] = 'გასწორება';
+$lang['confirm'] = 'დასტური';
+$lang['delete album'] = 'წავშალოთ კატეგორია';
+$lang['Dissociate from album'] = 'მოვაშოროთ კატეგორიას';
+$lang['dissociate from group'] = 'მოვაშოროთ ჯგუფს';
+$lang['Album updated successfully'] = 'ინფორმაცია კატეგორიაზე წარმატებით განახლებულია.';
+$lang['photos per page'] = 'მინიატურები გვერდზე';
+$lang['High definition enabled'] = 'არსებობს დიდი გაფართოებით';
+$lang['File'] = 'ფაილი';
+$lang['first photo added on %s'] = 'პირველი ელემენტი დამატებულია %s';
+$lang['Forbidden'] = 'აკრძალულია';
+$lang['global mode'] = 'ჯგუფური რეჟიმი';
+$lang['group "%s" added'] = 'ჯგუფი "%s" დამატებულია';
+$lang['group "%s" deleted'] = 'ჯგუფი "%s" წაშლილია';
+$lang['group "%s" updated'] = 'ჯგუფი "%s" განახლებულია';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'ჯგუფის სახელი არ უნდა შეიცავდეს  " ან \' და არ უნდა იყოს ცარიელი.';
+$lang['This name is already used by another group.'] = 'ეს სახელი უკვე გამოყენებულია სხვა ჯგუფის მიერ.';
+$lang['Groups'] = 'ჯგუფები';
+$lang['High definition'] = 'დიდი გაფართოება';
+$lang['jump to album'] = 'კატეგორიაში გადასვლა';
+$lang['jump to photo'] = 'ფოტოებში გადასვლა';
+$lang['leave'] = 'დავტოვოთ';
+$lang['Lock'] = 'ბლოკირება';
+$lang['Locked'] = 'დაბლოკილია';
+$lang['manage album photos'] = 'კატეგორიის ფოტოების მართვა';
+$lang['manage sub-albums'] = 'ქვეკატეგორიების მართვა';
+$lang['Manage'] = 'მართვა';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'შესრულების დრო ამოიწურა, დამუშავება უნდა გაგრძელდეს [დაახლოებითი დრო: %d წამი].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'შესრულების დრო ამოიწურა, დამუშავება უნდა გაგრძელდეს [დაახლოებითი დრო: %d წამი].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'მომხმარებელთა სიის მომზადების დრო დასაგზავნად შეზრუდულია. დარჩენილი მომხმარებლები არ არიან სიაში.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'ფოსტის გაგზავნის დრო შეზღუდულია. სხვა წერილები გამოტოვებულია.';
+$lang['To send ?'] = 'გავგზავნოთ?';
+$lang['Last send'] = 'ბოლო გაგზავნილები';
+$lang['Email'] = 'email';
+$lang['User'] = 'მომხმარებელი';
+$lang['See you soon,'] = 'ნახვამდის,';
+$lang['Go to'] = 'გადავიდეთ ';
+$lang['Hello'] = 'გამარჯობა ';
+$lang['New photos were added'] = 'ახალი ელემენტები დამატებულია ';
+$lang['on'] = ' ში ';
+$lang['between'] = 'შორის ';
+$lang['and'] = ' და ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'ადმინისტრატორმა მოგცათ უფლება მიიღოთ  შეტყობინები ფოსტის საშუალებით.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'თქვენ  დაადასტურეთ ხელმოწერა შეტყობინებების ფოსტით მიღებაზე.';
+$lang['To subscribe'] = 'ხელმოწერა';
+$lang['If you encounter problems or have any question, please send a message to'] = 'თუკი გაგიჩნდებათ რაიმე პრობლემა ან კითხვები, მოგვწერეთ ';
+$lang['[NBM] Problems or questions'] = 'პრობლემები და შეკითხვები';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'ადმინისტრატორმა დაბლოკა უფლება მიიღოთ  შეტყობინები ფოსტის საშუალებით.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'თქვენ წაშალეთ ხელმოწერა შეტყობინებების ფოსტის მიღებაზე.';
+$lang[', click on'] = ', დაწკაპეთ ';
+$lang['To unsubscribe'] = 'რათა გააუქმოთ ხელმოწერა';
+$lang['With blank value, gallery title will be used'] = 'თუკი არ არის შევსებული, გამოყენებული იქნება გალერეის სახელი';
+$lang['Notification'] = 'შეტყობინებები';
+$lang['Error when sending email to %s [%s].'] = 'ფოსტის გაგზავნის შეცდომა %s [%s] თვის.';
+$lang['Mail sent to %s [%s].'] = 'წერილი გაგზავნილია %s [%s] თვის.';
+$lang['%d mail was sent.'] = 'გაგზავნილია წერილი: %d.';
+$lang['%d mails were sent.'] = 'გაგზავნილია წერილები: %d.';
+$lang['%d mail was not sent.'] = 'გაუგზავნელი წერილი: %d.';
+$lang['%d mails were not sent.'] = 'გაუგზავნელი წერილები: %d.';
+$lang['No mail to send.'] = 'არ არის გასაგზავნი წერილები.';
+$lang['There is no available subscribers to mail.'] = 'არ არიან მომხმარებლები, ვისთვისაც შეიძლება წერილის გაგზავნა.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'მომხმარებლები არსებობენ, თუკი არის ახალი შეტყობინების ელემენტები.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'შესაძლებელია ,არ არიან ხელმომწერები (მხოლოდ ადმინისტრატორი ხედავს ამას).';
+$lang['No user to send notifications by mail.'] = 'არ არიან მომხმარებლები, რომ გაუგზავნოთ სეტყობინება ფოსტით..';
+$lang['New photos added'] = 'დამატებულია ახალი ელემენტი';
+$lang['Subscribe to notification by mail'] = 'ხელმოწერა ფოსტით შეტყობინებაზე';
+$lang['Unsubscribe from notification by mail'] = 'ხელმოწერის გაუქმება ფოსტით შეტყობინებაზე';
+$lang['Parameter'] = 'პარამეტრები';
+$lang['Continue processing treatment'] = 'გავაგრძელოთ მიმართვის დამუშავება';
+$lang['Complementary mail content'] = 'წერილის დამატებითი შემადგენლობა';
+$lang['Add detailed content'] = 'დავამატოთ დამატებითი შემადგენლობა';
+$lang['Send mail as'] = 'გავაგზავნოთ წერილი';
+$lang['Send mail to users'] = 'გაუგზავნოთ წერილი მომხმარებელს';
+$lang['Send'] = 'გაგზავნა';
+$lang['Options'] = 'პარამეტრები';
+$lang['Send'] = 'გაგზავნა';
+$lang['Subscribed'] = 'დასაგზავნთა სიაში';
+$lang['Subscribe'] = 'დაგზავნის სია';
+$lang['Parameters'] = 'პარამეტრები';
+$lang['Select recipients'] = 'ავირჩიოთ მიმღებები';
+$lang['Subscribe/unsubscribe users'] = 'მონაწილეთა დამატება/წაშლა დაგზავნის სიაში';
+$lang['Unsubscribed'] = 'არ არის დაგზავნის სიაში';
+$lang['%d parameter was updated.'] = '%d პარამეტრი განახლებულია.';
+$lang['%d parameters were updated.'] = '%d პარამეტრი განახლებულია.';
+$lang['%d user was not updated.'] = '%d მომხმარებელი არ არის განახლებული.';
+$lang['%d users were not updated.'] = '%d მომხმარებელი არ არის განახლებული.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Пользователь %s [%s] წაშლილია დაგზავნის სიიდან.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Пользователь %s [%s] დამატებულია დაგზავნის სიაში.';
+$lang['%d user was updated.'] = '%d მომხმარებელი შეცვლილია.';
+$lang['%d users were updated.'] = '%d მომხმარებელი შეცვლილია.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'მომხმარებელი %s [%s] არ არის წაშლილი დაგზავნის სიიდან.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'მომხმარებელი %s [%s] არ არის დამატებული დაგზავნის სიაში.';
+$lang['User %s [%s] added.'] = 'მომხმარებელი %s [%s] დამატებულია.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'ყურადღება: დაგზავნის სიაში დამატება/წაშლისას მომხმარებლებს გეაგზავნებათ შეტყობინება';
+$lang['Send mail on HTML format'] = 'გავაგზავნოთ წერილი HTML ფორმატში';
+$lang['Include display of recent photos grouped by dates'] = 'ჩავრთოთ თარიღის მიხედვით დაწყობილი ბოლო ფოტოების გამოსახვა';
+$lang['Available only with HTML format'] = 'შესაძლებელია მხოლოდ HTML ფორმატში';
+$lang['no write access'] = 'ჩაწერაზე დაშვება არ არის';
+$lang['Permissions'] = 'დაშვებები';
+$lang['private'] = 'პრივატული';
+$lang['Properties'] = 'Свойства';
+$lang['public'] = 'საერთო';
+$lang['Purge never used notification feeds'] = 'გავწმინდოთ გამოუყენებელი შეტყობინებების არხები';
+$lang['Purge sessions'] = 'გავწმინდოთ სესიები';
+$lang['randomly represented'] = 'შემთხვევითი წარმომადგენელი';
+$lang['registration date'] = 'რეგისტრაციის თარიღი';
+$lang['clean'] = 'გავწმინდოთ';
+$lang['Create this site'] = 'შევქმნათ ეს საიტი';
+$lang['test'] = 'ტესტი';
+$lang['test this remote site'] = 'დავტესტოთ ეს დაშორებული საიტი';
+$lang['remove tags'] = 'წავშალოთ სიტყვები';
+$lang['Repair and optimize database'] = 'მონაცემთა ბაზის გასწორება და ოპტიმიზაცია';
+$lang['selection'] = 'აღნიშნულები';
+$lang['set to'] = 'შევცვალოთ';
+$lang['singly represented'] = 'აღნიშნული წარმომადგენელი';
+$lang['This site already exists'] = 'ასეთი საიტი უკვე არის';
+$lang['Create a new site : (give its URL to create_listing_file.php)'] = 'შევქმნათ ახალი საიტი: (ჩაწერეთ URL  create_listing_file.php -ში)';
+$lang['created'] = 'შექმნილია';
+$lang['delete'] = 'წაშლილია';
+$lang['delete this site and all its attached elements'] = 'წავშალოთ ეს საიტი და ყველა მიმაგრებული ელემენტი';
+$lang['an error happened'] = 'მოხდა შეცდომა';
+$lang['Local'] = 'ლოკალური';
+$lang['Remote'] = 'დაშორებული';
+$lang['update the database from files'] = 'განვაახლოთ მონაცემების გბაზა ფაილებიდან';
+$lang['status'] = 'სტატუსი';
+$lang['Directory'] = 'ფოლდერი';
+$lang['sub-albums'] = 'ქვეკატეგორიები';
+$lang['Synchronize metadata'] = 'მეტამონაცემების სინქრონიზაცია';
+$lang['target'] = 'შევცვალოთ';
+$lang['Thumbnail'] = 'მინიატურა';
+$lang['Title'] = 'სათაური';
+$lang['Album list management'] = 'კატეგორიების მართვა';
+$lang['Piwigo configuration'] = ' PhpWebGallery მართვა';
+$lang['Edit album'] = 'კატეგორიების რედაქტირება';
+$lang['Group management'] = 'ჯგუფების მართვა';
+$lang['User list'] = 'მომხმარებლების სია';
+$lang['Edit photo information'] = 'შევცვალოთ ინფორმაცია ფოტოზე';
+$lang['Database synchronization with files'] = 'მონაცემთა ბაზის სინქრონიზაცია ფაილებთან';
+$lang['all'] = 'ყველა';
+$lang['height must be a number superior to'] = 'სიმაღლე უნდა იყოს მეტი რიცხვი';
+$lang['width must be a number superior to'] = 'სიგანე უნდა იყოს მეტი რიცხვი';
+$lang['for the file format'] = 'ფაილის ფორმატისათვის';
+$lang['Photo unreachable or no support'] = 'ფოტო მიუწვდომელია ან არ არის მისი ფორმატის მხარდაჭერა';
+$lang['GD version'] = 'ვერსია GD';
+$lang['General statistics'] = 'საერთო სტატისტიკა';
+$lang['average time'] = 'საშუალო დრო';
+$lang['number of miniaturized photos'] = 'შემცირებული ფოტოების რაოდენობა';
+$lang['total time'] = 'საერთო დრო';
+$lang['for this file format'] = 'ამ ფაილის ფორმატისათვის';
+$lang['unit mode'] = 'ერთეული რეჟიმი';
+$lang['Unlocked'] = 'ბლოკის მოხსნა';
+$lang['unset'] = 'გავასუფთაოთ';
+$lang['Update albums informations'] = 'განვაახლოთ ინფორმაცია კატეგორიებზე';
+$lang['Update photos information'] = 'განვაახლოთ ინფორმაცია ფოტოებზე';
+$lang['Synchronize'] = 'სინქრონიზაცია';
+$lang['reduce to single existing albums'] = 'შევამოწმოთ მხოლოდ კატეგორია';
+$lang['Choose an option'] = 'აირჩიეთ პარამეტრები';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'ვნახოთ ინფორმაციის მაქსიმუმი (დამატებული კატეგორიები და ფოტოები, წაშლილი ფოტოები და ელემენტები)';
+$lang['Error list'] = 'შეცდომების სია';
+$lang['Errors caption'] = 'შეცდომების განმარტება';
+$lang['Detailed informations'] = 'დეტალური ინფორმაცია';
+$lang['File/directory read error'] = 'შეცდომია ფაილის/პაპკის კითხვისას';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'ფაილთან ან ფოლდერთან დაკავშირება არ მოხერხდა.(შესაძლებელია არ გაქვთ დაშვების უფლება ან მათთან დაშვება აკრძალულია)';
+$lang['albums deleted in the database'] = 'კატეგორია წაშლილია მონაცემთა ბაზიდან';
+$lang['photos deleted from the database'] = 'ელემენტი წაშლილია მონაცემთა ბაზიდან';
+$lang['photos candidates for metadata synchronization'] = 'სურათი მეტამონაცემების სინქრონიზაციისათვის';
+$lang['photos informations synchronized with files metadata'] = 'ინფორმაცია ელემენტებზე სინქრონირებულია ფაილების მეტამონაცემებთან';
+$lang['errors during synchronization'] = 'სინქრონიზაციის შეცდომები';
+$lang['albums added in the database'] = 'კატეგორიები დამატებულია მონაცემთა ბაზაში';
+$lang['photos added in the database'] = 'ელემენტები დამატებულია მონაცემთა ბაზაში';
+$lang['photos updated in the database'] = 'ელემანტები განახლებულია მონაცემთა ბაზაში';
+$lang['Search for new images in the directories'] = 'ახალი ფოტოების ძებნა პაპკებში';
+$lang['added'] = 'დამატებულია';
+$lang['deleted'] = 'წაშლილია';
+$lang['Metadata synchronization results'] = 'მეტამონაცემების სინქრონიზაციის შედეგები';
+$lang['only perform a simulation (no change in database will be made)'] = 'მხოლოდ ტესტირება (არ შევიტანოთ ცვლილებები მონაცემთა ბაზაში)';
+$lang['Simulation'] = 'ტესტი';
+$lang['directories + files'] = 'ფაილები და ფოლდერები';
+$lang['only directories'] = 'მხოლოდ ფოლდერები';
+$lang['synchronize files structure with database'] = 'ფაილების სტრუქტურის სინქრონიზაცია მონაცემთა ბაზასთან';
+$lang['synchronize files metadata with database photos informations'] = 'ფაილების მეტამონაცემების სინქრონიზაცია მონაცემთა ბაზასთან';
+$lang['even already synchronized photos'] = 'ყველა, ადრე სინქრონიზებულის ჩათვლით';
+$lang['Used metadata'] = 'გამოYენებული მეტამონაცემები';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'ფაილების ან ფოლდერების სახელი უნდა შედგებოდეს ასოების,ციფრების "-", "_" და "." სგან';
+$lang['wrong filename'] = 'ფაილის არასწორი სახელი';
+$lang['Upload'] = 'Зატვირთვა';
+$lang['user "%s" added'] = 'მომხმარებელი "%s" დამატებულია';
+$lang['User status'] = 'მომხმარებლის სტატუსი';
+$lang['user_status_admin'] = 'ადმინისტრატორი';
+$lang['user_status_generic'] = 'საერთო';
+$lang['user_status_guest'] = 'სტუმარი';
+$lang['user_status_normal'] = 'მომხმარებელი';
+$lang['user_status_webmaster'] = 'ვებდიზაინერი';
+$lang['Users'] = 'მომხმარებლები';
+$lang['Virtual album'] = 'ვირტუალური კატეგორია';
+$lang['Waiting'] = 'მოცდის პროცესში';
+$lang['default'] = 'ძირითადად';
+$lang['Toggle \'default group\' property'] = 'შევქმათ/მოვაშოროთ  \'ძირითადად\'';
+$lang['Advanced features'] = 'გაფართოებული ფუნქციები';
+$lang['Overall'] = 'ყველა';
+$lang['Year'] = 'წელი';
+$lang['Month'] = 'თვე';
+$lang['Day'] = 'დღე';
+$lang['Pages seen'] = 'გვერდია ნანახი';
+$lang['Time'] = 'დრო';
+$lang['User'] = 'მომხმარებელი';
+$lang['IP'] = 'IP';
+$lang['Element'] = '';
+$lang['Section'] = 'განყოფილება';
+$lang['Properties'] = 'თვისება';
+$lang['An information email was sent to group "%s"'] = 'საინფორმაციო წერილი გაგზავნილია "%s" ჯგუფისთვის';
+$lang['Send an information email to group members'] = 'გავაგზავნოთ საინფორმაციო წერილი ჯგუფისთვის';
+$lang['Group'] = 'ჯგუფი';
+$lang['[%s] Visit album %s'] = '[%s] გიწვევთ %s კატეგორიაში';
+$lang['Hello,'] = 'გამარჯობა,';
+$lang['See you soon.'] = 'ნახვამდისД.';
+$lang['Discover album:'] = 'მობრძანდით კატეგორიში:';
+$lang['Mail content'] = 'შინაარსი';
+$lang['none'] = 'არა';
+$lang['high'] = 'დიდი';
+$lang['other'] = 'სხვა';
+$lang['Element type'] = 'ელემენტის ტიპი';
+$lang['User'] = 'მომხმარებელი';
+$lang['Image id'] = 'ფოტოს id';
+$lang['Summary'] = 'სუმარულად';
+$lang['%d line filtered'] = '%d ხაზი გაფილტრულია';
+$lang['%d lines filtered'] = '%d ხაზი გაფილტრულია';
+$lang['%d guest'] = '%d სტუმარი';
+$lang['%d guests'] = '%d სტუმრები';
+$lang['Hour'] = 'საათი';
+$lang['guest'] = 'სტუმარი';
+$lang['default values'] = 'ძირითAდი მნიშვნელობა';
+// --------- Starting below: New or revised $lang ---- from version 1.7.1
+$lang['Guest cannot be deleted'] = 'შტუმრის წაშლა არ შეიძლება';
+$lang['Default user cannot be deleted'] = 'ძირითადი მომხმარებელის წაშლა არ შეიძლება';
+$lang['Purge history detail'] = 'გავასუფთაოთ ისტორია';
+$lang['Purge history summary'] = 'გავასუფთაოთ მთელი ისტორია';
+$lang['Check integrity'] = 'შესაბამისობის შემოწმება';
+$lang['Anomaly'] = 'გაუმართაობა';
+$lang['Correction'] = 'კორექტირება';
+$lang['Automatic correction'] = 'ავტომატური კორექტირება';
+$lang['Impossible automatic correction'] = 'ავტომატური კორექტირება შეუძლებელია';
+$lang['Correction applied with success'] = 'კორექტირებამ წარმატებით ჩაიარა';
+$lang['Correction applied with error'] = 'კორექციამ შეცდომებით ჩაიარა';
+$lang['%d anomaly has been detected.'] = 'აღმოჩენილია %d გაუმართაობა.';
+$lang['%d anomalies have been detected.'] = 'აღმოჩენილია %d გაუმართაობები.';
+$lang['%d anomaly has been corrected.'] = 'კორექტირებულია %d გაუმართაობა.';
+$lang['%d anomalies have been detected corrected.'] = 'კორექტირებულია %d გაუმართაობები.';
+$lang['%d anomaly has not been corrected.'] = 'არ არის კორექტირებული %d გაუმართაობა.';
+$lang['%d anomalies have not been corrected.'] = 'არ არის კორექტირებული %d გაუმართაობები.';
+$lang['Go to %s or %s for more informations'] = 'ნახეთ %s ან %s დამატებითი ინფორმაციის მისაღებად';
+$lang['the forum'] = 'ფორუმი';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'მნიშვნელობა %s ფაილში არა სწორია,რადგან exif მხარდაჭერა არაა';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s საჭიროა გათიშოთ ფაილში config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'მომხმარებლის სტატუსი "სტუმარი" აღარ არსებობს';
+$lang['Main "guest" user status is incorrect'] = 'მომხმარებლის სტატუსი "სტუმარი" არა კორექტულია';
+$lang['Default user does not exist'] = 'ძირითადი მომხმარებელი აღარ არსებობს';
+$lang['Main "webmaster" user does not exist'] = 'მომხმარებელი "ვებდიზაინერი" აღარ არსებობს';
+$lang['Main "webmaster" user status is incorrect'] = 'მომხმარებლის სახელი "ვებდიზაინერი" არა კორექტულია';
+$lang['User "%s" created with "%s" like password'] = 'მომხმარებელი "%s" შექმნილია პაროლით "%s"';
+$lang['Status of user "%s" updated'] = 'მომხმარებელი "%s" სტატუსი განახლებულია';
+$lang['add new photos to caddie'] = 'დავამატოთ ახალი ფოტოები კალათაში';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = 'არ ვანახოთ';
+$lang['Classic display'] = 'კლასიკური სახე';
+$lang['Hoverbox display'] = 'სახე Hoverbox';
+$lang['Mail address is obligatory for all users'] = 'ელ. ფოსტის მისამართი აუცილებელია ყველა მომხმარებლისათვის';
+$lang['Minimum privacy level'] = 'დაცვის მინიმალური დონე';
+$lang['Privacy level'] = 'დაცვის დონე';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'კონტაქტი';
+$lang['Level 2'] = 'მეგობრები';
+$lang['Level 4'] = 'ოჯახი';
+$lang['Level 8'] = 'ადმინისტრაცია';
+$lang['Reinitialize check integrity'] = 'გავიმეოროთ მთლიანობის შემოწმება';
+$lang['Check all'] = 'ავღნიშნოთ ყველა';
+$lang['Uncheck all'] = 'მოვხსნათ ყველა აღნიშვნა';
+$lang['Check automatic corrections'] = 'აღვნიშნოთ ავტოკორექცია';
+$lang['Apply selected corrections'] = 'გამოვიყენოთ აღნიშნული კორექციები';
+$lang['Ignore selected anomalies'] = 'აღნიშნული გაუმართაობების იგნორირება';
+$lang['Refresh'] = 'განვაახლოთ';
+$lang['The anomaly will be ignored until next application version'] = 'გაუმართაობები იგნორირებული იქნება სკრიპტის შემდგომი ვერსიის დაყენებამდე';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'გაუმართაობის კორექტირება გათიშავს მათ იგნორირებას';
+$lang['%d anomaly has been ignored.'] = '%d გაუმართაობა იგნორირებულია.';
+$lang['%d anomalies have been ignored.'] = 'იგნორირებული იქნა გაუმართაობები: %d';
+$lang['Plugins which need upgrade'] = 'პლაგინები, რომლებიც ითხხოვენ განახლებას';
+$lang['Plugin list'] = 'პლაგინების სია';
+$lang['Check for updates'] = 'განახლების შემოწმება';
+$lang['Other plugins'] = 'სხვა პლაგინები';
+$lang['Last revisions'] = 'ბოლო ცვლილებები';
+$lang['Are you sure you want to delete this plugin?'] = 'დარწმუნებული ხართ, რომ გინდათ წაშალოთ ეს პლაგინი?';
+$lang['Are you sure you want to install this plugin?'] = 'დარწმუნებული ხართ, რომ გინდათ დააყენოთ ეს პლაგინი?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'დარწმუნებული ხართ, რომ გინდათ განაახლოთ? შეამოწმეთ, ხომ არ ჭირდება ამ ვერსიას დეინსტალაცია.';
+$lang['Plugin has been successfully copied'] = 'პლაგინი წარმატებით იქნა კოპირებული';
+$lang['You might go to plugin list to install and activate it.'] = 'შეგიძლიათ გადახვიდეთ პლაგინების სიასთან მის დასაყენებლად და აქტივაციისათვის.';
+$lang['Can\'t create temporary file.'] = 'შეუძლებელია დროებითი ფაილის შექმნა.';
+$lang['Can\'t download archive.'] = 'შეუძლებელია არქივის ჩამოტვირთვა.';
+$lang['Can\'t read or extract archive.'] = 'შეუძლებელია არქივის წაკითხვა.';
+$lang['An error occured during extraction (%s).'] = 'შეცდომაა გახსნის პროცესშიО (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'გთხოვთ, შეამოწმოთ ფოლდერ "plugins"-ის და მისი ქვეფოლდერების უფლებები (CHMOD).';
+$lang['Can\'t connect to server.'] = 'სერვერთან დაკავშირება შეუძლებელია.';
+$lang['Purge compiled templates'] = 'გავასუფთაოთ შექმნილი შაბლონები';
+$lang['Upload'] = 'ატვირთვები';
+$lang['ACCESS_0'] = 'თავისუფალი დაშვება';
+$lang['ACCESS_1'] = 'დაშვებულია ყველასთვის';
+$lang['ACCESS_2'] = 'დაშვებულია რჩეულებისათვის';
+$lang['ACCESS_3'] = 'დაშვებულია ადმინისტრატორებისთვის';
+$lang['ACCESS_4'] = 'დაშვებულია ვებდიზაინერისათვის';
+$lang['ACCESS_5'] = 'დაუშვებელია';
+$lang['Support'] = 'მხარდაჭერა';
+$lang['Documentation'] = 'დოკუმენტაცია';
+$lang['A new version of Piwigo is available.'] = 'ხელმისაწვდომია Piwigo-ს ახალი ვერსია.';
+$lang['Piwigo Administration'] = 'Piwigo-ს ადმინისტრაცია';
+$lang['Piwigo version'] = 'Piwigo-ს ვერსია';
+$lang['You are running the latest version of Piwigo.'] = 'გაშვებულია Piwigo-ს ბოლო ვერსია.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'დაყენებული ვერსია %s [%s] შეუსაბამოა [%s] ვერსიასთან';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'რათა გამოიყენოთ სკრიპტის მტელი შესაძლებლობები, განაახლეთ სისტემა, წინააღმდეგ შემთხვევაში სკრიპტმა შესაძლოა შეცდომებით იმუშაოს';
+$lang['Deleted on'] = 'წაშლილია';
+$lang['Last hit'] =  'ბოლო ნაჩვენები';
+$lang['GD library is missing'] = 'GD ბიბლიოთეკა არ არსებობს';
+$lang['Templates'] = 'შაბლონები';
+$lang['Extend for templates'] = 'გაფართოებები შაბლონებისათვის';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'შევცვალოთ ორიგინალი შაბლონები მომხმარებლის შაბლონებით ქვეფოლდერიდანtemplate-extension';
+$lang['Replacers (customized templates)'] = 'შემცვლელი (მომხმარებლის შაბლონი)';
+$lang['Original templates'] = 'ორიგინალი შაბლონი';
+$lang['Optional URL keyword'] = 'ოპციონალური URL საკვანძო სიტყვა';
+$lang['Templates configuration has been recorded.'] = 'თარგების კონფიგურაცია ჩაწერილია.';
+$lang['All optimizations have been successfully completed.'] = 'ყველა ოპტიმიზაციამ წარმატებით ჩაიარა.';
+$lang['Optimizations have been completed with some errors.'] = 'ოპტიმიზაცია დასრულდა შეცდომებით.';
+$lang['Modify information'] = 'Modify information';
+$lang['nothing'] = 'არაფერი';
+$lang['overrides existing values with empty ones'] = 'შევცვალოთ არსებული მნიშვნელობები ცარიელით';
+$lang['Manage photo ranks'] = 'ფოტოების მართვის წესი';
+$lang['Edit ranks'] = 'შევცვალოთ წესი';
+$lang['No photo in this album'] = 'ცარიელი კატეგორია';
+$lang['Images manual order was saved'] = 'ფოტოებისთვის აღნიშნული წესი შენახულია';
+$lang['ranks'] = 'წესი';
+$lang['Drag to re-order'] = 'გადმოიტანეთ რათა შეცვალოთ წესი';
+$lang['Quick Local Synchronization'] = 'ჩქარი სინქრონიზაცია';
+$lang['No photo can be deleted'] = 'არ არის ფოტო წასაშლელად';
+$lang['Delete selected photos'] = 'წავშალოთ არჩეული ფოტოები';
+$lang['%d photo was deleted'] = '%d ფოტო წაშლილია';
+$lang['%d photos were deleted'] = '%d ფოტო წაშლილია';
+$lang['Unable to check for upgrade.'] = 'შეუძლებელია განახლების შემოწმება.';
+$lang['Date'] = 'თარიღი';
+$lang['Operation in progress'] = 'მიმართვის დამუშავება.';
+$lang['Please wait...'] = 'გთხოვთ მოიცადოთ...';
+$lang['Downloads'] = 'ჩამოტვირთვები';
+$lang['Released on'] = 'გამოშვება';
+$lang['Number of downloads'] = 'ჩამოტვირთვების რაოდენობა';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo საინფორმაციო დაგზავნა';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'იყავით კავშირზე პროექტ Piwigo სთან ერთად, თქვენ მიიღებთ შეტყობინებას როგორც კი გამოვა ახალი გამოცემა (ზოგჯერ წერილი შეიცავს შეცდომების გამოსწორებას, უსაფრთხოების ზომების შესახებ და თქვენ უნდა იცოდეთ ეს), ან როცა იქნება რამე მნიშვნელოვანი მოვლენა ან პროექტი. ეს მხოლოდ რამდენიმე წერილია წელიწადში.';
+$lang['Subscribe %s'] = 'ხელმოწერა %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'ხელმოწერა %s Piwigo საინფორმაციო დაგზავნაზე';
+$lang['Purge search history'] = 'გავასუფთაოთ ძებნის ისტორია';
+$lang['Hide'] = 'დავფაროთ';
+$lang['Password is missing. Please enter the password.'] = 'პაროლი არა სწორია. გთხოვთ გაიმეოროთ.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'პაროლის დადასტურება არ არის. გთხოვთ დაადასტურეთ არჩეული პაროლი.';
+$lang['Allow users to edit their own comments'] = 'ნება დავრთოთ მომხმარებლებს თავიანთი კომენტარის რედაქტირებაზე';
+$lang['Allow users to delete their own comments'] = 'ნება დავრთოთ მომხმარებელს წაშალოს თავისი კომენტარი';
+$lang['Email administrators when a comment is modified'] = 'შევატყობინოთ ადმინისტრატორს ელ.ფოსტით, როცა კომენტარი შეიცვლება';
+$lang['Email administrators when a comment is deleted'] = 'შევატყობინოთ ადმინისტრატორს ელ.ფოსტით, როცა კომენტარი წაიშლება';
+$lang['Cannot delete the old permalink !'] = 'ძველი მუდმივი ბმული არ შეიძლება წაიშალოს!';
+$lang['Hit'] = 'პოპულარული';
+$lang['Tools'] = 'ინსტრუმენტები';
+$lang['Photos'] = 'ფოტოები';
+$lang['Themes'] = 'თემები';
+$lang['Instructions to use Piwigo'] = 'Piwigo მოხმარების ინსტრუქცია';
+$lang['Installed Themes'] = 'დაყენებული თემები';
+$lang['Add New Theme'] = 'დავამატოთ ახალი თემა';
+$lang['Forbid this theme to users'] = 'აუკრზალოთ მომხმარებელს ამ თემის გამოყენება';
+$lang['Set as default theme for unregistered and new users'] = 'დავაყენოთ ეს თემა ახალი და დაურეგისტრირებელი მომხმარებელისათვის ძირითადად';
+$lang['unknown'] = 'უცნობია';
+$lang['Upload Photos'] = 'ავტვირთოთ ფოტოები';
+$lang['Drop into album'] = 'ავტვირთოთ კატეგორიაში';
+$lang['+ Add an upload box'] = '+ დავამატოთ ასატვირთი ველი';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'შექმენით "%s" კატალოგი თქვენს მიერ დაყენებული Piwigo-ს ფუძეში';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'მიეცით ჩაწერაზე დაშვება (chmod 777)  "%s" კატალოგს, თქვენს მიერ დაყენებული Piwigo-ს ფუძეში';
+$lang['existing album'] = 'არსებული კატეგორია';
+$lang['create a new album'] = 'შევქმნათ ახალი კატეგორია';
+$lang['Album name'] = 'კატეგორიის სახელი';
+$lang['Album "%s" has been added'] = 'კატეგორია "%s" დამატებულია';
+$lang['Uploaded Photos'] = 'ატვირთული ფოტოები';
+$lang['%d photos uploaded'] = '%d ფოტოები ატვირთულია';
+$lang['Privacy level set to "%s"'] = 'დავაყენოთ დაშვების უფლება "%s"';
+$lang['Album "%s" now contains %d photos'] = 'კატეგორია "%s" შეიცავს ამჟამად %d ფოტოს';
+$lang['Manage this set of %d photos'] = 'ამ კრებულის რედაქტირება, შემცველობით %d Fოტო';
+$lang['Select files'] = 'ავირჩიოთ ფაილები';
+$lang['Everybody'] = 'ყველა';
+$lang['Who can see these photos?'] = 'ვის შეუძლია ნახოს ეს ფოტოები?';
+$lang['Settings'] = 'პარამეტრები';
+$lang['Resize'] = 'ზომების შეცვლა';
+$lang['Maximum width'] = 'მაქსიმალური სიგანე';
+$lang['pixels'] = 'პიქსელი';
+$lang['Maximum height'] = 'მაქსიმალური სიმაღლე';
+$lang['Image Quality'] = 'ფოტოს ხარისხი';
+$lang['Save Settings'] = 'შევინახოთ პარამეტრები';
+$lang['Your configuration settings are saved'] = 'თქვენი კონფიგურაცია შენახულია';
+$lang['Active Themes'] = 'აქტიური თემები';
+$lang['Add write access to the "%s" directory'] = 'დაამატეთ ჩაწერის უფლება "%s" დირექტორიისათვის';
+$lang['Administration Home'] = 'ადმინისტრირება';
+$lang['Change Admin Colors'] = 'შევცვალოთ ადმინისტრირების პანელის ფერები';
+$lang['Delete this theme'] = 'წავშალოთ ეს თემა';
+$lang['Directory does not exist'] = 'დირექტორია არ არსებობს';
+$lang['Download,'] = 'ჩამოვტვირთოთ,';
+$lang['FTP + Synchronization'] = 'FTP + სინქრონიზაცია';
+$lang['Get Support on Piwigo Forum'] = 'მიმართეთ დახმარებისათვის Piwigo-ს ფორუმს';
+$lang['Help Me'] = 'დამეხმარეთ';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'ამ თემის აქტივაცია არ შეიძლება, რადგან მშობლიური თემა %s არ არსებობს';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'ამ თემის წაშლა არ შეიზლება, რადგან სხვა თემები %s დამოკიდებულნი არიან მასზე';
+$lang['Inactive Themes'] = 'არა აქტიური თემები';
+$lang['Install on your computer,'] = 'დააყენეთ თქვენს კომპიუტერზე,';
+$lang['Make this theme available to users'] = 'გავხადოთ ეს თემა მომხმარებლებისთვის ხელმისაწვდომი';
+$lang['Page end'] = 'გვერდის დასასრული';
+$lang['Piwigo Uploader'] = 'Piwigo ამტვირთავი';
+$lang['Read Piwigo Documentation'] = 'წაიკითხეთ Piwigo დოკუმენტაცია';
+$lang['Start pLoader and add your photos.'] = 'გახსენით pLoader და დაამატეთ თქვენი ფოტოები.';
+$lang['Switch to clear or dark colors for administration'] = 'ღია და მუქი ტონების არჩევა ადმინისტრირების პანელისათვის';
+$lang['Theme has been successfully installed'] = 'თემა წარმატებით არის დაყენებული';
+$lang['Visit Gallery'] = 'ნახეთ გალერეა';
+$lang['Visit Piwigo project website'] = 'ნახეთ პროექტ Piwigo-ს საიტი ';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader ცვლის <em>Piwigo ამტვირთავს</em>. pLoader-ის მეშვეობით თქვენ შეგიძლიათ ლოკალურად მოამზადოთ ფოტოები და და ატვირთოთ თქვენს Piwigo ფოტო გალერეაში.';
+$lang['Guest Settings'] = 'სტუმრის პარამეტრები';
+$lang['Main Page'] = 'მთავარი გვერდი';
+$lang['Photo Page'] = 'ფოტოების გვერდი';
+$lang['Activate Navigation Bar'] = 'სანავიგაციო პანელის აქტივაცია';
+$lang['Activate Navigation Thumbnails'] = 'მინიატურებში ნავიგაციის აქტივაცია';
+$lang['Activate icon "%s"'] = 'გავააქტიუროთ ხატულა "%s"';
+$lang['Photo Properties'] = 'ფოტოს თვისება';
+$lang['Allow user customization'] = 'ნება დავრთოთ მომხმარებლებს შეცვალონ გალერეის სახე';
+$lang['Languages'] = 'ენები';
+$lang['Installed Languages'] = 'დაყენებული ენები';
+$lang['Add New Language'] = 'დავამატოთ ახალი ენა';
+$lang['Language has been successfully installed'] = 'ენა წარმატებით დაყენდა';
+$lang['Select:'] = 'ავირჩიოთ:';
+$lang['None'] = 'არც ერთი';
+$lang['Invert'] = 'გადავწიოთ';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'შეუძლებელია ამ თემის დეაქტივაცია, თქვენ ერთი თემა მაინც უნდა გქონდეთ.';
+$lang['Webmaster status is required.'] = 'საჭიროა ადმინისტრატორის სტატუსი.';
+$lang['Bound Theme'] = 'დაკავშირებული თემა';
+$lang['Allow rating'] = 'ნება დავრთოთ შეაფასონ';
+$lang['Select at least one comment'] = 'აირჩიეთ ერთი კომენტარი მაინც';
+$lang['Active Plugins'] = 'გავააქტიუროოთ პლაგინი';
+$lang['Inactive Plugins'] = 'პლაგინის დეაქტივაცია';
+$lang['Missing Plugins'] = 'დაკარგული პლაგინები';
+$lang['Uninstalled Plugins'] = 'წაშლილი პლაგინები';
+$lang['By %s'] = ' %s';
+$lang['Visit plugin site'] = 'ვეწვიოთ პლაგინის საიტს';
+$lang['Active Languages'] = 'გავააქტიუროთ ენები';
+$lang['Delete this language'] = 'წავსალოთ ეს ენა';
+$lang['Forbid this language to users'] = 'გავხადოთ ეს ენა მომხმარებლისათვის ხელმიუწვდომელი';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'შეუყძლებელია ამ ენის დეაქტივაცია, დააყენეთ ძირითად ენად სხვა მანამდე.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'შეუძლებელია ამ ენის დეაქტივაცია, თქვენ ერთი ენა მაინც უნდა გქონდეთ.';
+$lang['Inactive Languages'] = 'ენის დეაქტივაცია';
+$lang['Make this language available to users'] = 'გავხადოთ ეს ენა მომხმარებლებისათვის ხელმისაწვდომი';
+$lang['Set as default language for unregistered and new users'] = 'დავაყენოთ ეს ენა დაურეგისტრირებელი მომხმარებლებისათვის ძირითადად';
+$lang['Add Photos'] = 'ფოტოს დამატება';
+$lang['The following tag was deleted'] = 'შემდეგი ნიშნულები წაშლილია';
+$lang['Miscellaneous'] = 'სხვა და სხვა';
+$lang['Virtual Links'] = 'ვირტ.ბმულები';
+$lang['Templates configuration has been recorded.'] = 'შაბლონის კონფიგურაცის გადაწერილია.';
+$lang['Modify information'] = 'ინფორმაცია ცვლილებების შესახებ';
+$lang['There is no other language available.'] = 'არ არის სხვა ენები.';
+$lang['There is no other plugin available.'] = 'არ არის სხვა პლაგინები.';
+$lang['There is no other theme available.'] = 'არ არის სხვა თემები.';
+$lang['By rank'] = 'რეიტინგით';
+$lang['Manual order'] = 'დავალაგოთ ხელით';
+$lang['Add another set of photos'] = 'დავამატოთ ფოტოები';
+$lang['Order of menubar items has been updated successfully.'] = 'მენიუში განლაგების წესი წარმატებით შეიცვალა.';
+$lang['This theme was not designed to be directly activated'] = 'ამ თემაში არ არის გათვლილი პირდაპირი აქტივაცია';
+$lang['Who can see this photo?'] = 'ვის შეუძლია ამ ფოტოს ნახვა?';
+$lang['Pending Comments'] = 'კომენტარის მოლოდინში';
+$lang['Menu Management'] = 'მენიუ';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'თქვენს php.ini ფაილში, upload_max_filesize (%sB) მეტია ვიდრე post_max_size (%sB), თქვენ უნდა შეცვალოთ ეს პარამეტრი ';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif გაფართოება არ არის ხელმისაწვდომი, ადმინისტრატორმა უნდა გამორთოს exif–ის გამოყენება';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'ასატვირთი ფაილის ზომა აღემატება upload_max_filesize დირექტივას ფაილში php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'ატვირთული ფაილების ზომა აღემატება post_max_size დირექტივას ფაილში php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'ასატვირთი ფაილის ზომა აღემატება MAX_FILE_SIZE დირექტივას მითითებულს HTML ფორმაში';
+$lang['The uploaded file was only partially uploaded'] = 'ასატვირთი ფაილი მოლოდ ნაწილობრივ აიტვირთა';
+$lang['No file was uploaded'] = 'ფაილი არ არის ატვირთული';
+$lang['Missing a temporary folder'] = 'არ არსებობს დროებითი ფოლდერი';
+$lang['Failed to write file to disk'] = 'ფაილის დისკზე ჩაწერა არ მოხერხდა';
+$lang['File upload stopped by extension'] = 'ფაილის ატვირთვა შეჩერებულია გაფართოების გამო';
+$lang['Unknown upload error'] = 'უცნობი ატვირთვის შეცდომა';
+$lang['Error on file "%s" : %s'] = 'შეცდომაა ფაილში "%s" : %s';
+$lang['automatic order'] = 'ავტომატურად განლაგება';
+$lang['manual order'] = 'ხელით განლაგება';
+$lang['Albums automatically sorted'] = 'ალბომები ავტომატურად დალაგებულია';
+$lang['Batch Manager'] = 'სურათების მენეჯერი';
+$lang['include child albums'] = 'მოიცავს ბავშვის ალბომებს';
+$lang['Selection'] = 'არჩევა';
+$lang['Action'] = 'მოქმედება';
+$lang['Set author'] = 'ავტორი';
+$lang['Set title'] = 'სათაური';
+$lang['Set creation date'] = 'შექმნის თარიღი';
+$lang['Apply action'] = 'არჩევანის დადასტურება';
+$lang['on the %d selected photos'] = '%d მონიშნული ფოტო';
+$lang['%d of %d photos selected'] = '%d დან %d ფოტოა შერჩეული';
+$lang['No photo selected, %d photos in current set'] = 'ფოტო არ არის არჩეული, %d ფოტოა მიმდინარე კრებულში';
+$lang['All %d photos are selected'] = 'ყველა %d ფოტოა არჩეული';
+$lang['remove this filter'] = 'გამოვრთოთ ეს ფილტრი';
+$lang['Duplicates'] = 'დუბლიკატები';
+$lang['Add a filter'] = 'დავამატოთ ფილტრი';
+$lang['Remove all filters'] = 'გავაუქმოთ ყველა ფილტრი';
+$lang['Refresh photo set'] = 'განვაახლოთ ფოტოები';
+$lang['The whole page'] = 'მთელი გვერდი';
+$lang['The whole set'] = 'მთელი რიგი';
+$lang['No photo in the current set.'] = 'არ არის სურათი მიმდინარე ნაკრებში.';
+$lang['No photo selected, no action possible.'] = 'არ არის არჩეული არც ერთი ფოტო, მოქმედება შეუძლებელია.';
+$lang['Choose an action'] = 'აირჩიეთ მოქმედება';
+$lang['remove author'] = 'წავშალოთ ავტორი';
+$lang['Type here the author name'] = 'ჩაწერეთ აქ ავტორის სახელი';
+$lang['remove title'] = 'წავშალოთ სათური';
+$lang['Type here the title'] = 'ჩაწერეთ აქ სათაური';
+$lang['remove creation date'] = 'წავშალოთ შექმნის თარიღი';
+$lang['Album photos associated to the following albums: %s'] = 'ალბომის ფოტო ასოცირებულია შემდეგ ალბომთან: %s';
+$lang['Delete orphan tags'] = 'დაობლებული ტეგების წაშლა';
+$lang['delete photo'] = 'ფოტოს წაშლა';
+$lang['Orphan tags deleted'] = 'დაობლებული ტეგები წაშლილია';
+$lang['Remove from caddie'] = 'Remove from caddie';
+$lang['Week starts on'] = 'კვირა იწყება';
+$lang['You have %d orphan tags: %s.'] = 'თქვენ გაქვთ %d დაობლებული ტეგი: %s.';
+$lang['Themes which need upgrade'] = 'თემები, რომელთაც სჭირდებათ განახლება';
+$lang['Languages which need upgrade'] = 'ენები, რომელთაც სჭირდება განახლება';
+$lang['All themes are up to date.'] = 'ყველა თემა განახლებულია.';
+$lang['All plugins are up to date.'] = 'ყველა პლაგინი განახლებულია.';
+$lang['All languages are up to date.'] = 'ყველა ენა განახლებულია.';
+$lang['Visit theme site'] = 'ეწვიეთ თემის ვებ გვერდს';
+$lang['Visit language site'] = 'ეწვიეთ ენის ვებ გვერდს';
+$lang['New Version'] = 'ახალი ვერსია';
+$lang['Obsolete Plugins'] = 'მოძველებული პლაგინები';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'გართხილება! ამ პლაგინს არ აქვს Piwigo–ს ამ ვერსიის მხარაჭერა.';
+$lang['Do you want to activate anyway?'] = 'თქვენ მაინც გინდათ გაააქტიუროთ?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ეს პლაგინი უკვე PIWIGO–ს ბირთვის ნაწილია! წაშალეთ იგი!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'შეცდომაა: ეს პლაგინი აკლია, მაგრამ იგი დაყენებულია! წაშალეთ იგი.';
+$lang['display'] = 'ნახვა';
+$lang['new'] = 'ახალი';
+$lang['No results'] = 'შედეგი არ არის';
+$lang['Searching...'] = 'ძიება...';
+$lang['Type in a search term'] = 'ჩაწერეთ მოსაძებნი სიტყვა';
+$lang['Learn more'] = 'გავიგოთ მეტი';
+$lang['Rate'] = 'შეფასება';
+$lang['Average rate'] = 'საშუალო ქულა';
+$lang['An error has occured during upgrade.'] = 'განახლების დროს მოხდა შეცდომა.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'ამოარქივების დროს მოხდა შეცდომა. გთხოვთ, შეამოწმეთ დაშვების უფლება piwigo–ს ფოლდერთან.<br><a href="%s">დაკლიკეთ, რათა ნახოთ ინფორმაცია შეცდომაზე</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ვერ იღებს განახლების ფაილებს სერვერიდან';
+$lang['Save Template Directory'] = 'შევინახოთ დირექტორიის შაბლონი';
+$lang['Dump Database'] = 'მონაცემთა ბაზის წაშლა';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'ჩავრთოთ ისტორიის მონაცემები (გაფრთხილება: შესაძლებელია სერვერზე მეხსიერების ლიმიტის  გადაჭარბება)';
+$lang['Unable to dump database.'] = 'შეუძლებელია მონაცემთა ბაზის წაშლა.';
+$lang['Update in progress... Please wait.'] = 'მიმდინარეობს განახლების პროცესი... გთხოვთ დაიცადოთ.';
+$lang['Update to Piwigo %s'] = 'განაახლეთ Piwigo %s';
+$lang['Two updates are available'] = 'ორი განახლებაა ხელმისაწვდომი';
+$lang['This is a minor update, with only bug corrections.'] = 'ეს მცირე განახლებაა, მხოლოდ შეცდომების შესწორება.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'ეს ძალიან დიდი განახლებაა <a href="%s">საინტერესო სიახლეებით</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'თემების და პლაგინების ნაწილი ჯერჯერობით არ არის ხელმისაწვდომი.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'თქვენ პირდაპირ შეგიძლიათ  Piwigo %s გადახვიდეთ,  Piwigo %s განახლების გარეშე(რეკომენდირებულია).';
+
+
+
+$lang['%s has been successfully updated.'] = '%s წარმატებით განახლდა';
+$lang['%s photos can not be regenerated'] = '%s ფოტო არ არის რეგენერირებილი';
+$lang['%s photos have been regenerated'] = '%s ფოტო გენერირებულია';
+$lang['(this tag will be deleted)'] = '( ეს ტეგი წაშლილია)';
+$lang['... or '] = '... ან';
+$lang['Activate comments'] = 'კომენტარების გააქტიურება';
+$lang['Activate icon "new" next to albums and pictures'] = 'ააქტიურებს ხატულას "ახალი" ალბომისა და ფოტოების გვერდით';
+$lang['Add a criteria'] = 'კრიტერიუმის დამატება';
+$lang['Add tags'] = 'ტეგების დამატება';
+$lang['All extensions are up to date.'] = 'ყველა გაფართოება განახლებულია.';
+$lang['Allowed file types: %s.'] = 'დაშვებული ფაილის გაფართოებებია: %';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'დაახლოებით მაქსიმალური რეზოლუციაა: %dM პიქსელი (ესაა %dx%d პიქსელი).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'ნაგულისხმევია ის რომ, Piwigo შექმნის თქვენი ფოტოს ახალ HD (High Definition) ვერსიას.';
+$lang['Cancel'] = 'დასრულება';
+$lang['Confirm merge'] = 'დაადასტურეთ გაერთიანება';
+$lang['Create'] = 'შექმნა';
+$lang['Crop'] = 'ჩამოჭრა';
+$lang['Deactivate all'] = 'გამოვრთოთ ყველა';
+$lang['Default comments order'] = 'კომენტარების განლაგების წესი';
+$lang['Default photos order'] = 'ფოტოების განლაგების წესი';
+$lang['Move to album'] = 'გადავიტანოთ ალბომში';
+$lang['Not cropped correctly?'] = 'არ ჩამოიჭრა სწორედ?';
+$lang['Photo name'] = 'ფოტოს სახელი';
+$lang['Photos generation in progress...'] = 'მიმდინარეობს ფოტოების გენერაცია...';
+$lang['Piwigo Update'] = 'Piwigo განახლებულია';
+$lang['Predefined filter'] = 'სტანდარტული ფილტრები';
+$lang['Reset ignored updates'] = 'გავაუქმოთ იგნორირებული განახლებები';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'აღვადგინოთ ძირითადი კონფიგურაცია. თქვენ დაკარგავთ პლაგინების პარამეტრებს!';
+$lang['Restore'] = 'აღდგენა';
+$lang['Save visits in history for'] = 'შევინახოთ ნახვები ისტორიაში';
+$lang['Select an album'] = 'აირჩიეთ ალბომი';
+$lang['Select at least two tags for merging'] = 'აირჩიეთ ორი ტეგი მაინც გასაერთიენებლად';
+$lang['Select the destination tag'] = 'აირჩიეთ დანიშნულების ტეგი';
+$lang['Send connection settings by email'] = 'პირადი პარამეტრების ელ-ფოსტაზე გაგზავნა';
+$lang['Show menubar'] = 'ვაჩვენოთ მენიუ';
+$lang['Some upgrades are available for extensions.'] = 'ზოგიერთი გაფართოებისათვის განახლება ხელმისაწვდომია.';
+$lang['Start Upload'] = 'დავიწყოთ ატვირთვა';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'ტეგი <em>%s</em> გაერთიანდება ტეგთან <em>%s</em>';
+$lang['The original image quality must be a number between %d and %d'] = 'გამოსახულების თავდაპირველი ხარისხი უნდა იყოს ციფრი %d და %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'ორიგინალური მაქსიმალური სიმაღლე უნდა იყოს %d და %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'ორიგინალური მაქსიმალური სიგანე უნდა იყოს %d და %d';
+$lang['This album contains %d photos, added between %s and %s.'] = 'ეს ალბომი შეიცავს %d ფოტოს, დამატებულია %s და %s შორის';
+$lang['This album contains %d photos, added on %s.'] = 'ეს ალბომი შეიცავს %d ფოტოს, დამატებულია %s';
+$lang['This album contains no photo.'] = 'ამ ალბომში ფოტო არ არის.';
+$lang['Thumbnails generation in progress...'] = 'მიმდინარეობს ხატულების გენერაცია...';
+$lang['You can activate only one mobile theme.'] = 'თქვენ უნდა გაააქტიუროთ მხოლოდ ერთი მობილური თემა.';
+$lang['administrators'] = 'ადმინისტრატორები';
+$lang['registered users'] = 'დარეგისტრირებული მომხმარებლები';
+$lang['show details'] = 'ვნახოთ დეტალები';
+$lang['simple visitors'] = 'უბრალო მნახველები';
+$lang['%d day'] = '%d დღე';
+$lang['%d days'] = '%d დღე';
+$lang['%d hour'] = '%d საათი';
+$lang['%d hours'] = '%d საათი';
+$lang['%d minute'] = '%d წუთი';
+$lang['%d minutes'] = '%d წუთი';
+$lang['%d month'] = '%d თვე';
+$lang['%d months'] = '%d თვე';
+$lang['%d second'] = '%d წამი';
+$lang['%d seconds'] = '%d წამი';
+$lang['%d week'] = '%d კვირა';
+$lang['%d weeks'] = '%d კვირა';
+$lang['%d year'] = '%d წელი';
+$lang['%d years'] = '%d წელი';
+$lang['Added by %s'] = 'დამატებულია %s';
+$lang['Edit photo'] = 'ფოტოს რედაქტირება';
+$lang['Original file : %s'] = 'ორიგინალი ფაილი: %d';
+$lang['Posted %s on %s'] = 'გამოქვეყნებულია %s %s -ში';
+$lang['Sharpen'] = 'სიმკვეთრე';
+?>
Index: /tags/2.6.0RC1/language/ka_GE/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: ქართული [GE]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=426
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Georgian';
+$lang_info['country'] = 'Georgia';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ge';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d კბ';
+$lang['%d album updated'] = '%d კატეგორიაა დამატებული';
+$lang['%d albums updated'] = 'დამატებული კატეგორიები: %d';
+$lang['%d comment to validate'] = '%d შესამოწმებელი კომენტარი';
+$lang['%d comments to validate'] = 'შესამოწმებელი კომენტარები: %d';
+$lang['%d new comment'] = '%d ახალი კომენტარი';
+$lang['%d new comments'] = 'ახალი კომენტარები: %d';
+$lang['%d comment'] = '%d კომენტარი';
+$lang['%d comments'] = 'კომენტარები: %d';
+$lang['%d hit'] = '%d ნახვა';
+$lang['%d hits'] = 'ნახვები: %d';
+$lang['%d new photo'] = '%d ახალი ელემენტი';
+$lang['%d new photos'] = '%d ახალი ელემენტები';
+$lang['%d new user'] = '%d ახალი მნახველი';
+$lang['%d new users'] = '%d ახალი მნახველები';
+$lang['About'] = 'საიტის ძრავი';
+$lang['All tags'] = 'ყველა სიტყვა';
+$lang['Any tag'] = 'ნებისმიერი სიტყვა';
+$lang['At least one listed rule must be satisfied.'] = 'ერთი წესი მაინც უნდა სრულდებოდეს.';
+$lang['Author'] = 'ავტორი';
+$lang['Albums'] = 'გალერეა';
+$lang['Album'] = 'გალერეა';
+$lang['Close this window'] = 'დავხუროთ ეს ფანჯარა';
+$lang['Complete RSS feed (photos, comments)'] = 'სრული RSS ლენტა (ფოტოები, კომენტარები)';
+$lang['Confirm Password'] = 'გაიმეორეთ პაროლი';
+$lang['Connection settings'] = 'დაკავშირების გასწორება';
+$lang['Login'] = 'ავტორიზაცია';
+$lang['Contact webmaster'] = 'ტექდახმარება';
+$lang['Create a new account'] = 'ახალი აკკაუნტის შექმნა';
+$lang['Created on'] = 'გადაღების დრო';
+$lang['Creation date'] = 'გადაღების დრო';
+$lang['Current password is wrong'] = 'არასწორი პაროლი';
+$lang['Dimensions'] = 'ზომები';
+$lang['Display'] = 'წესი';
+$lang['Each listed rule must be satisfied.'] = 'ყველა ჩამოთვლილი წესი უნდა შესრულდეს';
+$lang['Email address is missing. Please specify an email address.'] = 'ელ.ფოსტის მისამართი არ არის მითითებული';
+$lang['Email address'] = 'ელ.ფოსტის მისამართი ';
+$lang['Enter your personnal informations'] = 'მიუთითეთ პერსონალური მონაცემები';
+$lang['Error sending email'] = 'შეცდომა ელ.ფოსტის გაგზავნისას';
+$lang['File name'] = 'ფაილის სახელი';
+$lang['File'] = 'ფაილი';
+$lang['Filesize'] = 'ფაილის ზომა';
+$lang['Filter and display'] = 'გავფილტროთ და ვნახოთ';
+$lang['Filter'] = 'ფილტრი';
+$lang['Forgot your password?'] = 'დაგავიწყდათ პაროლი?';
+$lang['Go through the gallery as a visitor'] = 'შევიდეთ გალერეაში როგორც სტუმარი';
+$lang['Help'] = 'დახმარება';
+$lang['Identification'] = 'იდენტიფიკაცია';
+$lang['Photos only RSS feed'] = 'RSS ლენტი ფოტოებით';
+$lang['Keyword'] = 'ძირითადი სიტყვები';
+$lang['Links'] = 'ბმულები';
+$lang['N/A'] = 'გაურკვეველია';
+$lang['New on %s'] = 'ახალი %s';
+$lang['Notification'] = 'RSS-შეტყობინება';
+$lang['Number of items'] = 'რაოდენობა გვერდზე';
+$lang['Original dimensions'] = 'საწყისი ზომა';
+$lang['Password forgotten'] = 'პაროლი დაკარგულია';
+$lang['Password'] = 'პაროლი';
+$lang['Post date'] = 'გამოქვეყნების თარიღი';
+$lang['Posted on'] = 'გამოქვეყნების თარიღი';
+$lang['Profile'] = 'პროფილი';
+$lang['Quick connect'] = 'სწრაფი შესვლა';
+$lang['RSS feed'] = 'RSS ლენტი';
+$lang['Register'] = 'რეგისტრაცია';
+$lang['Registration'] = 'რეგისტრაცია';
+$lang['Related tags'] = 'დამოკიდებული სიტყვები';
+$lang['Reset'] = 'უარი';
+$lang['Retrieve password'] = 'პაროლის შეხსენება';
+$lang['Search rules'] = 'ძიების პირობა';
+$lang['Search tags'] = 'საძიებო ტეგები';
+$lang['Search'] = 'ძიება';
+$lang['display available tags'] = 'შესაძლო ტეგების ნახვა';
+$lang['Since'] = 'პერიოდი';
+$lang['Sort by'] = 'სორტირება';
+$lang['Sort order'] = 'სორტირების წესი';
+$lang['Tag'] = 'სიტყვა';
+$lang['Tags'] = 'საძიებო სიტყვები';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS შეტყობინებები გიამბობენ ახალ ფოტოებზე, გალერეის განახლებაზე, ახალ კომენტარებზე. ამისათვის გამოიყენეთ RSS-წამკითხველი.';
+$lang['Unknown feed identifier'] = 'ლენტის გაურკვეველი იდენტიფიკატორი';
+$lang['User comments'] = 'მნახველების კომენტარები';
+$lang['Username'] = 'მომხმარებლის სახელი';
+$lang['Visits'] = 'ნახვები';
+$lang['Webmaster'] = 'მოგვწერეთ';
+$lang['Week %d'] = 'კვირა %d';
+$lang['About Piwigo'] = 'PhpWebGallery–ზე';
+$lang['You are not authorized to access the requested page'] = 'თქვენ არ გაქვთ ავტორიზაციის გარეშე გვერდის ნახვის უფლება';
+$lang['add this photo to your favorites'] = ' დავამატოთეს ფოტო რჩეულებში';
+$lang['Administration'] = 'ადმინისტრირება';
+$lang['all'] = 'ყველა';
+$lang['ascending'] = 'ზრდის მიხედვით';
+$lang['author(s) : %s'] = 'ავტორი(ები) : %s';
+$lang['Expand all albums'] = 'გავხსნათ ყველა კატეგორია';
+$lang['posted after %s (%s)'] = 'გამოქვეყნებულია %s (%s) შემდეგ';
+$lang['posted before %s (%s)'] = 'გამოქვეყნებულია  %s (%s) მდე';
+$lang['posted between %s (%s) and %s (%s)'] = 'გამოქვეყნებულია %s (%s) და %s (%s) შორის';
+$lang['posted on %s'] = 'გამოქვეყნებულია %s';
+$lang['Best rated'] = 'შეფასებებით';
+$lang['display best rated photos'] = 'ვნახოთ მაღალშეფასებადი ';
+$lang['Calendar'] = 'კალენდარი';
+$lang['All'] = 'ყველა';
+$lang['display each day with photos, month per month'] = 'ვნახოთ ყველა დღე ფოტოებით,თვე თვეზე';
+$lang['View'] = 'ნახვა';
+$lang['chronology_monthly_calendar'] = 'თვე';
+$lang['chronology_monthly_list'] = 'რიცხვი';
+$lang['chronology_weekly_list'] = 'კვირის დღე';
+$lang['Click here if your browser does not automatically forward you'] = 'გადადით ამ მისამართზე,თუკი ბროუზერი არ გადაგამისამართებთ ავტომატურად';
+$lang['comment date'] = 'კომენტარის თარიღი';
+$lang['Comment'] = 'კომენტარი';
+$lang['Your comment has been registered'] = 'თქვენი კომენტარი გაგზავნილია';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'ანტიფლუდი: დაიცადეთ ცოტა ხანი სანამ გააგზავნით შემდეგ კომენტარს';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'თქვენი კომენტარი არ არის გაგზავნილი, რადგან არ შეესაბამება ჩვენს წესებს';
+$lang['An administrator must authorize your comment before it is visible.'] = 'ადმინისტრატორმა უნდა შეამოწმოს თქვენი კომენტარი,სანამ იგი ნაჩვენები იქნება.';
+$lang['This login is already used by another user'] = 'ეს სახელი(ლოგინი) უკვე დაკავებულია';
+$lang['Comments'] = 'კომენტარი';
+$lang['Add a comment'] = 'კომენტარის დამატება';
+$lang['created after %s (%s)'] = 'შექმნილი %s (%s) შემდეგ';
+$lang['created before %s (%s)'] = 'შექმნილი %s (%s) მდე';
+$lang['created between %s (%s) and %s (%s)'] = 'შექმნილი %s (%s) და %s (%s) შორის';
+$lang['created on %s'] = 'შექმნილი %s';
+$lang['Customize'] = 'გასწორება';
+$lang['Your Gallery Customization'] = 'გალერეის გასწორება ';
+$lang['day'][0] = 'კვ';
+$lang['day'][1] = 'ორშ';
+$lang['day'][2] = 'სამ';
+$lang['day'][3] = 'ოთხ';
+$lang['day'][4] = 'ხუთ';
+$lang['day'][5] = 'პარ';
+$lang['day'][6] = 'შაბ';
+$lang['Default'] = 'ძირითადად';
+$lang['delete this photo from your favorites'] = 'ამოვიღოთ ეს ფოტო რჩეულიდან';
+$lang['Delete'] = 'გადავაგდოთ';
+$lang['descending'] = 'კლებით';
+$lang['Download'] = 'ატვირთვა';
+$lang['Download this file'] = ' ავტვირთოთ ეს ფაილი';
+$lang['edit'] = 'რედაქტირება';
+$lang['wrong date'] = 'შეცდომა თარიღში';
+$lang['excluded'] = 'გამორიცხული';
+$lang['Your favorites'] = 'რჩეული';
+$lang['display your favorites photos'] = 'ვნახოთ არჩეული ფოტოები';
+$lang['Favorites'] = 'რჩეული';
+$lang['First'] = 'პირველი';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'გალერეა დროებით დაკეტილია. გთხოვთ მოგვიანებით მობრძანდეთ';
+$lang['Page generated in'] = 'გვერდი გენერირებილია';
+$lang['guest'] = 'სტუმარი';
+$lang['Hello'] = 'გამარჯობა';
+$lang['available for administrators only'] = 'დაშვება მხოლოდ ადმინისტრატორისათვის';
+$lang['display this album'] = 'ვნახოთ ფოტოები კატეგორიის ძირიდან';
+$lang['display last user comments'] = 'მომხმარებლების ბოლო კომენტარები';
+$lang['customize the appareance of the gallery'] = 'გაფორმების გასწორება';
+$lang['search'] = 'ძიება';
+$lang['Home'] = 'Home';
+$lang['Identification'] = 'შესვლა';
+$lang['in this album'] = 'ამ კატეგირიაში';
+$lang['in %d sub-album'] = ' %d ქვეკატეგორიაში';
+$lang['in %d sub-albums'] = '( %d ქვეკატეგორიებში)';
+$lang['included'] = 'ჩართულია';
+$lang['Invalid password!'] = 'არასწორი პაროლი!';
+$lang['Language']='ენა';
+$lang['last %d days'] = 'ბოლო %d დღე';
+$lang['Last'] = 'ბოლო';
+$lang['Logout'] = 'გამოსვლა';
+$lang['obligatory'] = 'აუცილებელი';
+$lang['Maximum photo height'] = 'სურათის მაქსიმალური სიმაღლე';
+$lang['Maximum height must be a number superior to 50'] = 'სურათის მაქსიმალური სიმაღლე უნდა იყოს 50–ზე მეტი';
+$lang['Maximum photo width'] = 'სურათის მაქსიმალური სიგანე';
+$lang['Maximum width must be a number superior to 50'] = 'სურათის მაქსიმალური სიგანე უნდა იყოს 50–ზე მეტი';
+$lang['display a calendar by creation date'] = ' ვნახოთ კალენდარი შექმნის თარიღით';
+$lang['display all photos in all sub-albums'] = ' ვნახოთ ყველა ფოტო ყველა ქვეკატეგორიებში';
+$lang['return to normal view mode'] = 'ჩვეულებრივ რეჯიმში დაბრუნება';
+$lang['display a calendar by posted date'] = ' ვნახოთ კალენდარი გაგზავნის დროის მიხედვით';
+$lang['month'][10] = 'ოქტომბერი';
+$lang['month'][11] = 'ნოემბერი';
+$lang['month'][12] = 'დეკემბერი';
+$lang['month'][1] = 'იანვარი';
+$lang['month'][2] = 'თებერვალი';
+$lang['month'][3] = 'მარტი';
+$lang['month'][4] = 'აპრილი';
+$lang['month'][5] = 'მაისი';
+$lang['month'][6] = 'ივნისი';
+$lang['month'][7] = 'ივლისი';
+$lang['month'][8] = 'აგვისტო';
+$lang['month'][9] = 'სექტემბერი';
+$lang['Most visited'] = 'პოპულარურობის მიხედვით';
+$lang['display most visited photos'] = 'ვნახოთ ყველაზე პოპულარული ფოტოები';
+$lang['Unknown identifier'] = 'უცნობი იდენტიფიკატორი';
+$lang['New password'] = 'ახალი პაროლი';
+$lang['Rate this photo'] = 'შეაფასეთ ეს ფოტო';
+$lang['Next'] = 'შემდეგი';
+$lang['Home'] = 'დასაწყისი';
+$lang['no rate'] = 'არ არის შეფასებული';
+$lang['Photos posted within the last %d day.'] = 'ვნახოთ ფოტოები, გამოქვეყნებული ბოლო %s დღეში.';
+$lang['Photos posted within the last %d days.'] = 'ვნახოთ ფოტოები, გამოქვეყნებული ბოლო %s დღეში.';
+$lang['password updated'] = 'პაროლი შეცვლილია';
+$lang['Recent period must be a positive integer value'] = 'ბოლო პერიოდი უნდა იყოს დადებითი ციფრი';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'ფოტო';
+$lang['Click on the photo to see it in high definition'] = 'დაკლიკეთ ფოტოზე, რათა ნახოთ იგი დიდი ფორმატით';
+$lang['Show file metadata'] = 'ვნახოთ მეტამონაცემები';
+$lang['Powered by'] = 'სკრიპტი';
+$lang['Preferences'] = 'უპირატესი';
+$lang['Previous'] = 'წინა';
+$lang['Random photos'] = 'შემთხვევითი';
+$lang['display a set of random photos'] = 'რამდენიმე შემთხვევითი ფოტო';
+$lang['Recent albums'] = 'ახალი გალერეები';
+$lang['display recently updated albums'] = 'ვნახოთ განახლებული გალერეები';
+$lang['Recent period'] = '"ახლების" ვადა';
+$lang['Recent photos'] = 'ახალი ფოტოები';
+$lang['display most recent photos'] = 'ვნახოთ ახალი ფოტოები';
+$lang['Redirection...'] = 'გადამისამართება...';
+$lang['Please, enter a login'] = 'გთხოვთ, შეიყვანეთ სახელი(ლოგინი)';
+$lang['login mustn\'t end with a space character'] = 'სახელი(ლოგინი) არ უნდა მთავრდებოდეს ცარიელი ადგილით(პრობელით)';
+$lang['login mustn\'t start with a space character'] = 'სახელი(ლოგინი) არ უნდა იწყებოდეს ცარიელი ადგილით(პრობელით)';
+$lang['this login is already used'] = 'ეს სახელი(ლოგინი) უკვე არსებობს';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'ელ.ფოსტის მისამართი უნდა გამოიყურებოდეს ესე xxx@yyy.eee (მაგალითად: jack@altern.org)';
+$lang['Auto login'] = 'დამიმახსოვრე';
+$lang['remove this tag from the list'] = 'გადავაგდოთ ეს ტეგი სიიდან';
+$lang['representative'] = 'წარმომადგენელი';
+$lang['Search for Author'] = 'ძიება ავტორის მიხედვით';
+$lang['Search in albums'] = 'ძიება კატეგორიებში';
+$lang['Search by date'] = 'ძიება თარიღით';
+$lang['Date'] = 'საწყისი თარიღი';
+$lang['End-Date'] = 'საბოლოო თარიღი';
+$lang['Kind of date'] = 'თარიღის ტიპი';
+$lang['Search for words'] = 'ძიება სიტყვებით';
+$lang['Search for all terms'] = 'ძიება ყველა კრიტერიუმით ';
+$lang['Search for any term'] = 'ძიება ნებისმიერი კრიტერიუმით';
+$lang['Empty query. No criteria has been entered.'] = 'ცარიელი მოთხოვნა. ძიების კრიტერიუმი არ რსებობს.';
+$lang['Search results'] = 'ძიების რეზულტატი';
+$lang['Search in sub-albums'] = 'ქვეკატეგორიებშიც';
+$lang['Search'] = 'ძიება';
+$lang['searched words : %s'] = 'მოსაძებნი სიტყვები: %s';
+$lang['Contact'] = 'კონტაქტი';
+$lang['set as album representative'] = 'გავხადოთ კატეგორიის წარმომადგენელი';
+$lang['Show number of comments'] = 'ვაჩვენოთ კომენტარების რაოდენობა';
+$lang['Show number of hits'] = 'ვაჩვენოთ ნახვების რაოდენობა';
+$lang['slideshow'] = ' სლაიდშოუ';
+$lang['stop the slideshow'] = 'სლაიდშოუს გაჩერება';
+$lang['Specials'] = 'რჩეული';
+$lang['SQL queries in'] = 'SQL-მოთხოვნა';
+$lang['display only recently posted photos'] = ' ვნახოთ მხოლოდ ახლახანს გამოქვეყნებული ფოტოები';
+$lang['return to the display of all photos'] = 'ყველა ფოტოს ნახვასთან დაბრუნება';
+$lang['the beginning'] = 'თავიდან';
+$lang['Thumbnails'] = 'მინიატურები';
+$lang['Menu'] = 'მენიუ';
+$lang['A comment on your site'] = 'კომენტარები თქვენი საიტიდან';
+$lang['today'] = 'დღეს';
+$lang['Update your rating'] = 'განვაახლოთ შეფასება';
+$lang['Author'] = 'ავტორი';
+$lang['the username must be given'] = 'მომხმარებლის სახელი უნდა არსებობდეს';
+$lang['useful when password forgotten'] = 'დაკარგული პაროლის აღსადგენად';
+$lang['Quick search'] = 'ჩქარი ძიება';
+$lang['Connected user: %s'] = 'დაკავშირებული მომხმარებლები: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'ბროუზერი: %s';
+$lang['Author: %s'] = 'ავტორი: %s';
+$lang['Comment: %s'] = 'კომენტარები: %s';
+$lang['Comment by %s'] = 'კომენტარები %s _სგან';
+$lang['User: %s'] = 'სტუმარი: %s';
+$lang['Email: %s'] = 'მისამართი: %s';
+$lang['Admin: %s'] = 'ადმინისტრატორი: %s';
+$lang['Registration of %s'] = 'რეგისტრაცია %s';
+$lang['Album: %s'] = 'კატეგორია: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'მომხმარებლის არასწორი სტატუსი "სტუმარი", გამოიყენეთ ძირითადი სტატუსი. გთხოვთ შეატყობინოთ ადმინისტრატორს.';
+$lang['this email address is already in use'] = 'მომხმარებელი ასეთი მისამართით უკვე არსებობს';
+$lang['Album results for'] = 'დღის კატეგორიების რეზულტატი';
+$lang['Tag results for'] = 'დღის სიტყვა–რეზულტატი';
+$lang['from %s to %s'] = ' %s დან  %s მდე';
+$lang['Play of slideshow'] = 'ვნახოთ სლაიდშოუ';
+$lang['Pause of slideshow'] = 'გავაჩეროთ სლაიდშოუ';
+$lang['Repeat the slideshow'] = 'გავიმეოროთ სლაიდშოუ';
+$lang['Not repeat the slideshow'] = 'არ გავიმეოროთ სლაიდშოუ';
+$lang['Reduce diaporama speed'] = 'Reduce diaporama speed';
+$lang['Accelerate diaporama speed'] = 'Accelerate diaporama speed';
+$lang['Submit'] = 'გაგზავნა';
+$lang['Yes'] = 'დიახ';
+$lang['No'] = 'არა';
+$lang['%d photo']='%d ფოტო';
+$lang['%d photos']='ფოტოები: %d';
+$lang['%d photo is also linked to current tags'] = '%d ფოტო ასევე დაკავშირებულია ამ სიტყვებთან';
+$lang['%d photos are also linked to current tags'] = '%d ფოტოები ასევე დაკავშირებულია ამ სიტყვებთან';
+$lang['display photos linked to this tag'] = 'ვნახოთ ფოტოები დაკავშირებული მხოლოდ ამ სიტყვასთან';
+$lang['photos posted during the last %d days'] = 'ფოტოები გამოქვეყნებული ბოლო %d დღეში';
+$lang['Piwigo Help'] = 'დახმარება';
+$lang['Rank'] = 'წყობა';
+$lang['group by letters'] = 'დავაჯგუფოთ ასოებით';
+$lang['letters'] = 'ასოები';
+$lang['show tag cloud'] = 'ვაჩვენოთ სიტყვების ღრუბელი';
+$lang['cloud'] = 'ღრუბელი';
+$lang['Are you sure?'] = 'დარწმუნებული ხართ?';
+$lang['Reset to default values'] = 'აღვადგინოთ ძირითადი მნიშვნელობები';
+$lang['delete all photos from your favorites'] = 'გადავაგდოთ ყველა ფოტო რჩეულიდან';
+$lang['Sent by'] = 'გაგზავნა';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'თქვენს როუზერს არ აქვს კუკების(Cookies) მხარდაჭერა, ან ბლოკავს მათ. გთხოვთ ჩართოთ ან გაასწოროთ იგი.';
+$lang['Edit a comment'] = 'კომენტარის რედაქტირება';
+$lang['(!) This comment requires validation'] = '(!) ეს კომენტარი ელოდება შემოწმებას';
+$lang['Welcome'] = 'კეთილი იყოს თქვენი მობრძანება';
+$lang['Welcome to your Piwigo photo gallery!'] = 'კეთილი იყოს თქვენი მობრძანება Piwigo–ს ფოტო გალერეაში!';
+$lang['... or browse your empty gallery'] = '... ან ნახეთ თქვენი ცარიელი გალერეა';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ან ნუ მაჩვენებთ ამ შეტყობინებას. მე თვითონ გადავწყვიტავ რას ვიმოქმედებ';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'გამარჯობა %s, თქვენი გალერეა ცარიელია!';
+$lang['I want to add photos'] = 'მსურს დავამატო ფოტო';
+$lang['Manage this user comment: %s'] = 'ამ მომხმარებლის კომენტარის მართვა: %s';
+$lang['This author modified following comment:'] = 'ამ ავტორმა შეცვალა  შემდეგი კომენტარი:';
+$lang['This author removed the comment with id %d'] = 'ამ ავტორმა წაშალა კომენტარი ნომერი %d';
+$lang['%d Kb'] = '%d კბ';
+$lang['Reduce diaporama speed'] = 'შევამციროთ პანორამის სიჩქარე';
+$lang['Accelerate diaporama speed'] = 'გავზარდოთ პანორამის სიჩქარე';
+$lang['html tags are not allowed in login'] = 'შესასვლელად html ტეგების გამოყენება აკრძალულია';
+$lang['%d rate'] = '%d შეფასება';
+$lang['%d rates'] = '%d განაკვეთი';
+$lang['2small'] = 'XXS - უმცირესი';
+$lang['Bad request'] = 'არასწორი მოთხოვნა';
+$lang['Change my password'] = 'პაროლის შეცვლა';
+$lang['Check your email for the confirmation link'] = 'შეამოწმეთ თქვენი ელ ფოსტა დადასტურების ბმულით';
+$lang['Date created, new &rarr; old'] = 'შექმნის თარიღი, ახალი  &rarr; ძველი';
+$lang['Date created, old &rarr; new'] = 'შექმნის თარიღი, ძველი  &rarr; ახალი';
+$lang['Date posted, new &rarr; old'] = 'გამოქვეყნების თარიღი, ახალი  &rarr; ძველი';
+$lang['Date posted, old &rarr; new'] = 'გამოქვეყნების თარიღი, ძველი  &rarr; ახალი ';
+$lang['Desktop'] = 'კომპიუტერი';
+$lang['EXIF Metadata'] = 'EXIF მეტადატა';
+$lang['Edit'] = 'რედაქტირება';
+$lang['Enter your new password below.'] = 'ჩაწერეთ თქვენი ახალი პაროლი';
+$lang['File name, A &rarr; Z'] = 'ფაილის სახელი, ა &rarr; ჰ';
+$lang['File name, Z &rarr; A'] = 'ფაილის სახელი, ჰ &rarr; ა';
+$lang['Forbidden'] = 'აკრძალულია';
+$lang['Hello %s,'] = 'გამარჯობა %s,';
+$lang['Here are your connection settings'] = 'თქვენი დაკავშირების პარამეტრებია';
+$lang['IPTC Metadata'] = 'IPTC მეტადატა';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'თუ შეცდომით მოგივიდათ ეს წერილი, იგნორირება გაუკეთეთ და ნუ უპასუხებთ მას.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'თუ ტქვენ თვლით რომ წერილი შეცდომით მიიღეთ, დაგვიკავშირდით მისამართზე  %s';
+$lang['Invalid key'] = 'არასწორი გასაღები';
+$lang['Invalid username or email'] = 'არასწორი სახელი ან ელ-ფოსტის მისამართი';
+$lang['Manual sort order'] = 'ხელით დალაგება';
+$lang['Mobile'] = 'მობილური';
+$lang['Number of photos per page'] = 'ფოტოების რაოდენობა გვერდზე';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'საიდეტიფიკაციო ნომერი, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'საიდეტიფიკაციო ნომერი, 9 &rarr; 1';
+$lang['Original'] = 'ორიგინალი';
+$lang['Page not found'] = 'გვერდი არ მოიძებნა';
+$lang['Password Reset'] = 'პაროლი შეიცვალა';
+$lang['Password reset is not allowed for this user'] = 'პაროლის შეცვლა შეუძლებელია ამ მომხმარებლისათვის';
+$lang['Password: %s'] = 'პაროლი: %s';
+$lang['Permalink for album not found'] = 'ბმული ალბომზე არ მოიძებნა';
+$lang['Photo sizes'] = 'ფოტოს ზომები';
+$lang['Photo title, A &rarr; Z'] = 'ფოტოს სახელი, ა &rarr; ჰ';
+$lang['Photo title, Z &rarr; A'] = 'ფოტოს სახელი, ჰ &rarr; ა';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo -მ აღმოაჩინა გამოუსწორებელი შეცდომა';
+$lang['Please enter your username or email address.'] = 'გთხოვთ ჩაწეროთ თქვენი სახელი ან ელ-ფოსტის მისამართი.';
+$lang['Rating score, high &rarr; low'] = 'შეფასება, მაღალი &rarr; დაბალი ';
+$lang['Rating score, low &rarr; high'] = 'შეფასება, დაბალი &rarr; მაღალი';
+$lang['Rating score'] = 'შეფასების ანგარიში';
+$lang['Requested album does not exist'] = 'მოთხოვნილი ალბომი არ არსებობს';
+$lang['Requested tag does not exist'] = 'მოთხოვნილი ტეგი არ არსებობს';
+$lang['Return to home page'] = 'მთავარ გვერდზე დაბრუნება';
+$lang['Send my connection settings by email'] = 'დაკავშირების პარამეტრების ელ-ფოსტაზე გაგზავნა';
+$lang['Show latest comments first'] = 'პირველი ვაჩვენოთ ახალი კომენტარი ';
+$lang['Show oldest comments first'] = 'პირველი ვაჩვენოთ ძველი კომენტარი ';
+$lang['Someone requested that the password be reset for the following user account:'] = 'ვიღაცამ მოითხოვა პაროლის აღდგენა შემდეგი  მომხმარებლებისათვის:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'გამარჯობა! თქვენ წარმატებით დარეგისტრირდით. მალე მიიღებთ დაკავშირების პარამეტრებს ელ-ფოსტაზე.  ';
+$lang['Thank you for registering at %s!'] = 'გმადლობთ რეგისტრაციისათვის  %s!';
+$lang['The number of photos per page must be a not null scalar'] = 'ფოტოების რაოდენობა გვერდზე უნდა იყოს ნულზე მეტი როცხვი.';
+$lang['The passwords do not match'] = 'პაროლები ერთმანეთს არ ემთხვევა';
+$lang['To reset your password, visit the following address:'] = 'პაროლის შესაცვლელად ეწვიეთ შემდეგ მისამართს:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'მომხმარებელ  "%s" არა აქვს მითითებული ელ ფოსტის მისამართი. აროლის შეცვლა შეუძლებელია.';
+$lang['Username "%s" on gallery %s'] = 'მომხმარებლის სახელი "%s" გალერეა %s ';
+$lang['Username modification'] = 'მომხმარებლის სახელის მოდიფიკაცია';
+$lang['Username or email'] = 'მომხმარებლის სახელი ან ელ-ფოსტა';
+$lang['Username: %s'] = 'მომხმარებლის სახელი: %s';
+$lang['View in'] = 'ვნახოთ';
+$lang['Visits, high &rarr; low'] = 'ნახვები, მეტი &rarr; ნაკლები';
+$lang['Visits, low &rarr; high'] = 'ნახვები, ნაკლები &rarr; მეტი';
+$lang['You will receive a link to create a new password via email.'] = 'თქვენ გამოგეგზავნათ წერილი თქვენს ელ-ფოსტის მისამართზე პაროლის შესაცვლელი ბმულით. ';
+$lang['Your password has been reset'] = 'თქვენი პაროლი შეიცვალა';
+$lang['Your username has been successfully changed to : %s'] = 'თქვენი მომხმარებლის სახელი შეიცვალა:  %s -ით';
+$lang['large'] = 'L - დიდი';
+$lang['medium'] = 'M - საშუალო';
+$lang['small'] = 'S - პატარა';
+$lang['square'] = 'ველი';
+$lang['thumb'] = 'ხატულა';
+$lang['xlarge'] = 'XL -ძალიან დიდი';
+$lang['xsmall'] = 'XS - ძალიან პატარა';
+$lang['xxlarge'] = 'XXL - უდიდესი';
+$lang['Password is missing. Please enter the password.'] = 'პაროლი არა სწორია. გთხოვთ გაიმეოროთ.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'პაროლის დადასტურება არ არის. გთხოვთ დაადასტურეთ არჩეული პაროლი.';
+?>
Index: /tags/2.6.0RC1/language/ka_GE/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,117 @@
+<h2>კატეგორიის რედაქტირება</h2>
+
+<h3>ინფორმაცია</h3>
+
+<ul>
+
+  <li><strong>სათაური</strong>: გაძლევთ საშუალებას სახელი გადაარქვათ კატეგორიას
+  (გავს ფსევდონიმს, რეალური კატეგორიის შემთხვევაში).</li>
+
+  <li><strong>აღწერა</strong>: შეგიძლიათ აღწეროთ კატეგორიის შემადგენლობა.
+  ეს ტექსტი გამოჩნდება მინიატურების გვერდზე, ქვევით.</li>
+
+</ul>
+
+<h3>გადატანა</h3>
+
+<p>თუ კატეგორია ვირტუალურია, თქვენ შეგიძლიათ გადაიტანოთ იგი. კატეგორიის გადატანა ნიშნავს მშობლიური კატეგორიის შეცვლას.</p>
+
+<h3>ოპციები</h3>
+
+<ul>
+
+  <li><strong>დაშვების ტიპი</strong>: დაშვების მართვა. თუ კატეგორიას მიანიჭებთ სტატუსს პრივატული, მაშინ ყველა ქვეკატეგორია ამ კატეგორიაში გახდება პრივატული, ხოლო თუ მიანიჭებთ კატეგორიას სტატუსს საერთო, მაშინ ყველა ქვეკატეგორია ამ კატეგორიაში გახდება საერთო.</li>
+
+  <li><strong>დაბლოკვა</strong>: კატეგორია და მისი ქვეკატეგორიები დროებით დაბლოკილი იქნება, მომსახურეობის მიზნით.</li>
+
+  <li><strong>Комментарии</strong>: მომხმარებლის მიერ კატეგორიის ელემენტების კომენტირების მართვა.</li>
+
+  <li><strong>ნება დავრთოთ ატვირთვაზე</strong>: მომხმარებლების მიერ ფაილების ატვირთვის მართვა. ეს ოპცია ხელმისაწვდომია მხოლოდ ჩვეულებრივი (არა ვირტუალური) კატეგორიებისათვის.</li>
+
+</ul>
+
+<p>ასევე თქვენ შეგიძლიათ მართოთ ეს გასწორებები გვერდზე "თვისება"
+ (ჩანართი <span class="pwgScreen">ატვირთვა</span>, <span
+class="pwgScreen">კომენტარები</span>, <span class="pwgScreen">დაბლოკვა</span>,
+<span class="pwgScreen">საერთო/პრივატული</span>), ყველაფერი ეს მენიუში <span
+class="pwgScreen">ადმინისტრირება, გალერეა, თვისება</span>.</p>
+
+<h3>სორტირების წესი</h3>
+
+<p>პირველი ჩეკბოქსი განსაზღვრავს ძირითად სორტირებას.</p>
+<p>მეორე ჩეკბოქსი განსაზღვრავს სორტირების წესს ქვეკატეგორიებზე.</p>
+
+<p>აირჩიეთ სხვა სორტირების წესი, თუკი ეს საჭიროა.</p>
+<ul>
+<li><strong>გადაღების დრო</strong>: ფოტოს გადაღების თარიღი</li>
+<li><strong>გამოქვეყნების დრო</strong>: ფოტოს გალერეაში გამოქვეყნების თარიღი</li>
+<li><strong>საშუალო ქულა (*)</strong>: რეიტინგის მიხედვით, რომლითაც ხმას აძლევენ მომხმარებლები</li>
+<li><strong>პოპულარულობის მიხედვით (*)</strong>: მომხმარებლების მიერ ფოტოების ნახვის მიხედვით</li>
+<li><strong>ფოტოს სახელი</strong>: ფოტოს სახელის მიხედვით სორტირება</li>
+<li><strong>Id</strong>: შიდა იდენტიფიკატორი (ახალ კატეგორიებს აქვთ უფრო მაღალი იდენტიფიკატორი ვიდრე ძველებს).</li>
+
+</ul>
+<p><strong>(*)</strong> ცადეთ ეს მნიშვნელობები. ხშირად ისინი იძლევიან არა პროგნოზირებად რეზულტატს.</p>
+
+
+<h3>წარმომადგენელი</h3>
+
+<p>კატეგორიის წარმომადგენელი-ეს არის მინიატურა, რომელიც წარმოადგენს კატეგორას გალერეის მთავარ გვერდზე (<span class="pwgScreen">category.php</span>) როცა კატეგორია შეიცავს მხოლოდ ქვეკატეგორიებს.</p>
+
+<p>არსებობს 4 საშუალება კატეგორიის წარმომადგენლად დანიშვნინსათვის:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">ფოტოების გვერდი</span>: ღილაკების რიგში პანელზე არის ღილაკი, რომელიც საშუალებას გაძლევთ კატეგორიის წარმომადგენლად დანიშნოთ ეს ფოტო. ეს ღილაკი ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის.</li>
+
+  <li><span class="pwgScreen">ფოტოს ინფორმაციის რედაქტირება</span> 
+  ადმინისტრირების განყოფილებაში. ეს ფუნქცია ხელმისაწვდომია ფოტოების გვერდიდან <span
+  class="pwgScreen">picture.php</span> ან <span class="pwgScreen">კალათის მართვა</span>
+  <em>ჯგუფური რეჟიმი</em>. ნახეთ დახმარება ამ ეკრანისათვის დეტალების დასაზუსტებლად.</li>
+
+  <li><span class="pwgScreen">ადმინისტრირება, გალერეა, თვისება, წარმომადგენელი</span>. ნახეთ დახმარება ამ ეკრანისათვის დეტალების დასაზუსტებლად.</li>
+
+  <li><span class="pwgScreen">კატეგორიის რედაქტირება</span> (этот экран).</li>
+
+</ul>
+
+<p>შეხედულება დამოკიდებულია კონფიგურაციის პარამეტრებზე
+<code>allow_random_representative</code> (ნახე <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>ძირითადად (<code>allow_random_representative</code> დაყენებულია false)
+ყოველი კატეგორია, რომელიც შეიცავს ერთ ელემენტს მაინც, წარმოდგენილია ფიქსირებული ელემენტით. დაყენებული ერთხელ (კატეგორიის შექმნისას), წარმომადგენელი შეიცვლება მხოლოდ მას შემდეგ რაც ადმინისტრატორი შეცვლის მას.
+თუკი შეხედულება არ მოგწონთ, შეგიძლიათ აირჩიოთ <strong> მოძებნოთ ახალი წარმომადგენელი შემთხვევითი წესით</strong>.</p>
+
+<p>თუკი კონფიგურაციის პარამეტრი <code>allow_random_representative</code> დაყენებულია true, კატეგორიას, რომელიც შეიცავს ელემენტებს, ფიქსირებული წარმომადგენელი არ გააჩნია. გამოიყენეთ ღილაკი  <strong> წავშალოთ წარმომადგენელი</strong>.</p>
+
+<p>თუკი კატეგორია არ შეიცავს ელემენტებს ( არ შეიცავს ქვეკატეგორიებს), იგი შეიძლება წარმოდგენილი იყოს ნებისმიერი ელემენტით <span
+class="pwgScreen">შევცვალოთ ინფორმაცია ფოტოზე</span>.
+
+<h3>მივამაგროთ ამ კატეგორიის ყველა ელემენტი ახალს</h3>
+
+<ul>
+
+<li><strong>ვირტუალური კატეგორიის სახელი</strong>: ახალი კატეგორია ამ სახელით იქნება შექმნილი, ყველა ფოტო ამ კატეგორიაში, მიმაგრებული იქნება მასთან.</li>
+
+<li><strong>მშობლიური კატეგორია</strong>: სად იქნება შექმნილი ახალი კატეგორია, თუკი ეს უნდა იყოს ზემოთა კატეგორია, დატოვეთ პარამეტრი ცარიელი.</li>
+
+</ul>
+
+<h3>მივამაგროთ ამ კატეგორიის ყველა ელემენტი ერთ ერთ არსებულს</h3>
+
+<ul>
+
+<li><strong>გალერეა</strong>: აირჩიეთ კატეგორია, რომელთანაც საჭიროა მიამაგროთ ელემენტები.</li>
+
+</ul>
+
+<h3>გაუგზავნოთ საინფორმაციო წერილი ჯგუფს</h3>
+
+<ul>
+
+<li><strong>ჯგუფი</strong>: ჯგუფი-ადრესატი</li>
+
+<li><strong>Содержание</strong>: ტექსტი, რომელიც გაეგზავნება მის მონაწილეებს.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ka_GE/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>ვირტუალური კატეგორიების გადატანა</h2>
+
+<p>მხოლოდ ვირტუალური კატეგორიები შეიძლება გადატანილი იყოს სხვა მშობლიურ კატეგორიაში.</p>
+
+<h3>ვირტუალური კატეგორიები გადასატანად</h3>
+
+<p>აირჩიეთ ვირტუალური კატეგორიები, რომლების გადატანაც გსურთ.
+თუკი სია ცარიელია, მაშინ თქვენ ჯერ არ შეგიქმნიათ ვირტუალური კატეგორიები.</p>
+
+<h3>ახალი მშობლიური კატეგორია</h3>
+
+<p>აირჩიეთ ახალი მშობლიური კატეგორია (ვირტუალური ან რეალური).
+თუკი არაფერს არ აირჩევთ, ვირტუალური კატეგორიები, არჩეული წინა ეტაპზე, გადატანილი იქნება გალერეის ფუძეში.
+თქვენ არ შეგიძლიათ გადაიტანოთ კატეგორია თავისივე თავში ან ერთ ერთ მისივე ქვეკატეგორიაში.</p>
Index: /tags/2.6.0RC1/language/ka_GE/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/cat_options.html	(revision 25596)
@@ -0,0 +1,28 @@
+<h2>კატეგორიის თვისება</h2>
+
+<p>ეს ეკრანი საშუალებას აძლევს ადმინისტრატორს შეცვალოს რამდენიმე კატეგორიის თვისება ერთდროულად.</p>
+
+<dl>
+
+  <dt>ატვირთვა</dt>
+  <dd>ხსნის კატეგორიებს მომხმარებლებისათვის ასატვირთად. ნაჩვენებია მხოლოდ არა ვირტუალური და წაუშლელი კატეგორიები.</dd>
+
+  <dt>კომენტარები</dt>
+  <dd>ხსნის კატეგორიებს კომენტირებისათვის.
+აირჩიეთ კატეგორიები, რომლებიც გინდათ გახსნათ კომენტირებისათვის.
+ფოტო ღიაა კომენტირებისათვის, თუკი ერთი კატეგორია მაინც გახსნილია კომენტარებისათვის.</dd>
+
+  <dt>ბლოკირება</dt>
+  <dd>არჩეული კატეგორიები დროებით დაბლოკილი იქნება, მომსახურების მიზნით. დაბლოკილი კატეგორიის ყველა ქვეკატეგორია , ასევე იქნება დაბლოკილი. როცა მოხსნით ბლოკირებას კატეგორიას, მისი ქვეკატეგორიებიდანაც მოიხსნება ბლოკირება.</dd>
+
+  <dt>საერთო / პრივატული</dt>
+  <dd>არჩეულ კატეგორიებთან დაშვების მართვა. თუკი გახდით კატეგორიას პრივატულს, საჭიროა მისცეთ მომხმარებლებს ან/და ჯგუფებს მასთან დაშვების უფლება.
+  თუკი კატეგორიას გახდით პრივატულს, მისი ქვეკატეგორიებიც პრივატული გახდება.
+  თუკი კატეგორიას გახდით საერთოს, ყველა მისი ქვეკატეგორია ასევე საერთო იქნება.</dd>
+
+  <dt>პრივილეგიები</dt>
+  <dd>ეს განყოფილება ხელმისაწვდომია,თუკი პარამეტრი <code>allow_random_representative</code>
+  (ნახეთ <span class="filename">include/config_defaults.inc.php</span>) დაყენებულია
+  <em>true</em>. ყოველ კატეგორიას შეიძლება ქონდეს შემთხვევითი წარმომადგენელი ან მხოლოდ ერთი წარმომადგენელი რომელსაც ადმინისტრატორი აირჩევს.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ka_GE/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>უფლებების მართვა კატეგორიისათვის</h2>
+
+<p>ეს ეკრანი ხელმისაწვდომია მხოლოდ პრივატული კატეგორიისათვის. აქ შეიძლება მომხმარებლების ან/და ჯგუფების არჩევა, რომლებსაც ექნებათ დაშვების უფლება ამ კატეგორიასთან.</p>
+
+<h3>ჯგუფები</h3>
+
+<p>თქვენ შეგიძლიათ უფლება მისცეთ ან აუკრძალოთ ჯგუფებს ამ კატეგორიასთან დაშვება.ჯგუფისთვის დაშვების უფლების შეცვლით, თქვენ ცვლით დაშვების უფლებას მომხმარებლებისთვისაც, რომლებიც ამ ჯგუფში არიან გაერთიანებულნი.</p>
+
+<h3>მომხმარებლები</h3>
+
+<p>ისევე როგორც ჯგუფებისათვის, შეგიძლიათ მოექცეთ ცალკეულ მომხმარებლებსაც.მომხმარებელი რომელსაც  კატეგორიასთან დაშვების უფლება აქვს ჯგუფის მიხედვით, შეიძლება შეზღუდული იყოს პერსონალურად მომხმარებლის დაშვების შეზღუდვის საშუალებით.</p>
Index: /tags/2.6.0RC1/language/ka_GE/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/configuration.html	(revision 25596)
@@ -0,0 +1,103 @@
+<h2>გასწორება</h2>
+
+<p>ეს ეკრანი აძლევს ადმინისტრატორს საშუალებას გააკეთოს უმარტივესი გასწორებები. სინამდვილეში, ეს ეკრანი გაჩვენებთ მხოლოდ უმარტივეს გასწორებებს, რომელიც საკმარისი იქნება ადმინისტრატორების უმეტესობისათვის. თუკი გსურთ იხილოთ სხვა გასწორებები (დამატებით), იხილეთ ფაილი <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>ეკრანი დაყოფილია სექციებად და დაჯგუფებულია რამდენიმე თემად.</p>
+
+
+<h3>მთავარი</h3>
+<ul>
+  <li><strong>გალერეის სახელი</strong>: გამოიყენება RSS ლენტაში და email შეტყობინებებში.</li>
+
+  <li><strong>წარწერა ბანერზე</strong>: ნაჩვენები იქნება ყველა გვერდის ზევით.</li>
+
+  <li><strong>გალერეის მისამართი</strong>: გამოიყენება RSS ლენტაში.</li>
+
+  <li><strong>გალერეის დაბლოკვა</strong>: გალერეის დაკეტვა მომსახურეობის მიზნით. გალერეა ღია იქნება მხოლოდ ადმინისტრატორისათვის.</li>
+
+  <li><strong>შეფასებები</strong>: ნება დავრთოთ შეაფასონ.</li>
+
+  <li><strong>სტუმრების შეფასებები</strong>: დაურეგისტრირებელი მომხმარებლებიც შეძლებენ შეაფასონ ფოტოები.</li>
+
+  <li><strong>დაუშვათ მომხმარებლების რეგისტრაცია</strong>: ნებისმიერს შეუძლია დარეგისტრირება.</li>
+
+  <li><strong>ელ.ფოსტის მისამართი აუცილებელია ყველა მომხმარებლისათვის </strong>: მისამართის არსებობა შემოწმებული იქნება რეგისტრაციის დროს ან პროფილის შეცვლის დროს თუკი ეს მოქმედება აღნიშნულია ადმინისტრირების ნაწილში.</li>
+
+  <li><strong>შევატყობინოთ ადმინისტრატორს როცა ახალი მომხმარებელი დარეგისტრირდება</strong>:
+  ადმინისტრატორი მიიღებს შეტყობინებას ყოველი რეგისტრაციის შესახებ.</li>
+
+</ul>
+
+<h3>ისტორია</h3>
+
+  <p>ნანახი გვერდები <span class="pwgScreen">category.php</span> და
+  <span class="pwgScreen">picture.php</span> ჩაწერილი იქნება ტაბულაში <code>history</code>.</p>
+
+  <p>ნახვები ნაჩვენები იქნება <span class="pwgScreen"> ადმინისტრირება, სპეც.ფუნქციები, ისტორია</span>.</p>
+
+<ul>
+  <li><strong>შევინახოთ სტუმრების მიერ ნანახი გვერდები</strong>: გვერდები, რომლებსაც სტუმრები ნახავენ, შენახული იქნება.</li>
+
+  <li><strong>შევინახოთ მომხმარებლების მიერ ნანახი გვერდები</strong>: გვერდები, რომლებსაც დარეგისტრირებული მომხმარებლები ნახავენ, შენახული იქნება.</li>
+
+  <li><strong>შევინახოთ ადმინისტრატორების მიერ ნანახი გვერდები</strong>: გვერდები, რომლებსაც ადმინისტრატორები ნახავენ, შენახული იქნება.</li>
+
+</ul>
+
+<h3>კომენტარები</h3>
+<ul>
+
+  <li><strong>კომენტარები ყველასათვის</strong>: დაურეგისტრირებელი მომხმარებლებიც შეძლებენ შეაფასონ ფოტოები.</li>
+
+  <li><strong>კომენტარების რაოდენობა გვერდზე</strong>.</li>
+
+  <li><strong>შემოწმება</strong>: ადმინისტრატორი ამოწმებს მომხმარებლების მიერ დაწერილ შეფასებებს მანამდე, სანამ ისინი ნაჩვენები იქნება საიტზე. კომენტარების შეფასება შესაძლებელია გვერდზე <span class="pwgScreen">ადმინისტრირება, ფოტოები, კომენტარები</span>.</li>
+
+  <li><strong>შევატყობინოთ ადმინისტრატორს როდესაც არსებობს კომენტარები</strong>: გაუგზავნოთ email ადმინისტრატორს როდესაც მომხმარებელი დატოვებს კომენტარს.</li>
+
+  <li><strong>შევატყობინოთ ადმინისტრატორს როდესაც არსებობს კომენტარები შესამოწმებლად</strong>:
+გაუგზავნოთ email ადმინისტრატორს როდესაც მომხმარებელი დატოვებს კომენტარს ადმინისტრატორის შესამოწმებლად. შესამოწმებელი კომენტარები მდებარეობს გვერდზე <span class="pwgScreen">
+ადმინისტრირება, ფოტოები, კომენტარები</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>ატვირთვა</h3>
+<ul>
+<!--TODO -->  <li><strong>ვაჩვენოთ ატვირთვის ბმული მუდმივად</strong>: თუკი არსებობს კატეგორიები, სადაც დაშვებულია ატვირთვა, დამატებული იქნება ბმული, რომელიც გამოჩნდება ყველა კატეგორიაში.</li>
+<!--TODO -->  <li><strong>მომხმარებლის დაშვების უფლება ასატვირთად</strong>:
+საშუალებას გაძლევთ შეზღუდოთ მომხმარებლების მიერ ატვირთვა</li>
+  <li><strong>შევატყობინოთ ადმინისტრატორს როდესაც ატვირთულია ფოტო</strong>: ადმინისტრატორი მიიღებს შეტყობინებას მომხმარებლის მიერ ატვირთულ ფოტოზე.</li>
+</ul>
+
+<h3>ჩვენების ძირითადი სახე</h3>
+
+<p>აქ შესაძლებელია შეცვალოთ ჩვენების ძირითადი პარამეტრები სტუმრისათვის ან არა ავტორიზებული მომხმარებლისათვის. ავტორიზაციის შემდეგ ჩვენების პარამეტრები შეიცვლება მომხმარებლისაზე ( რომელიც მითითებულია გვერდზე <span class="pwgScreen">პროფაილი</span>).</p>
+
+<p>ჩვენების პარამეტრები ყველა არსებული მომხმარებლისათვის შეგიძლიათ შეცვალოთ გვერდზე <span class="pwgScreen">ადმინისტრირება, იდენტიფიკაცია, მომხმარებლები</span>, სადაც შესაძლებელია ჩვენების პარამეტრების გასწორება არნიშნული მომხმარებლებისათვის.</p>
+
+<ul>
+
+  <li><strong>ენა</strong>: გავლენა აქვს მხოლოდ წარწერებზე. კატეგორიის სახელები, ფოტოები და აღწერილობა ლოკალიზებული არ იქნება.</li>
+
+  <li><strong>ფოტოების რაოდენობა სტრიქონში</strong></li>
+
+  <li><strong>სტრიქონების რაოდენობა გვერდზე</strong></li>
+
+  <li><strong>გაფორმება</strong></li>
+
+  <li><strong>"ახლების" ვადა</strong>: დღეებში. პერიოდი, რომლის განმავლობაშიც ფოტო ჩაითვლება ახლად. უნდა იყოს 1 დღეზე მეტი.</li>
+
+  <li><strong>გავხსნათ ყველა კატეგორია</strong>: გავხსნათ ყველა კატეგორია მენიუში?
+  <em>ყურადღება</em>: ეს ვარიანტი საკმაოდ დიდ რესურსს მოითხოვს და შესაძლებელია ძალიან დიდი მენიუს გენერირება მოახდინოს, თუკი თქვენს გალერეაში ძალიან ბევრი კატეგორიაა.</li>
+
+  <li><strong>ვაჩვენოთ კომენტარების რაოდენობა</strong>: ვაჩვენოთ კომენტარების რაოდენობა თითოეული ფოტოსათვის მინიატურების გვერდზე.</li>
+
+  <li><strong>ვაჩვენოთ ნახვების რაოდენობა</strong>: ვაჩვენოთ ფოტოების ნახვების რაოდენობა მინიატურების გვერდზე. მოქმედებს როდესაც პარამეტრი: <br />  $conf['show_nb_hits'] = true; <br />
+  შენიშვნა: პარამეტრი ძირითადად დგას false.</li>
+
+  <li><strong>გამოსახულების მახსიმალური სიგანე</strong>: მაქსიმალური სიგანე ჩვენებისას. თუკი ფოტო მეტია სიგანეში, იგი შემცირებული იქნება ჩვენებისას. თუ თქვენ ირჩევთ ამ ოფციას, უკეთესი იქნება     ადრევე შეცვალოთ ფოტოს სიგანე.</li>
+
+  <li><strong>გამოსახულების მაქსიმალური სიმაღლე</strong>: იგივე კომენტარები, რაც სიგანეზე.</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/ka_GE/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,77 @@
+<h2>შაბლონების გაფართოების გასწორება</h2>
+
+<h3>მიზანი</h3>
+<p>გაარკვიეთ ყოველი შაბლონისათვის შეცვლის პირობა შაბლონ-გაფართოებაზე (შაბლონი, სახელად "შემცვლელი").</p>
+
+<p>"პირველადი შაბლონი"  ./template/yoga  -დან(ან სხვა) ჩანაცვლებული იქნება "შემცვლელი"-თ თუკი შემცვლელი დაკავშირებულია ამ პირველადთან (და თუკი URL შეიცავს "URL ოპციონალურ სიტყვას").</p>
+
+<p>"URL ოპციონალურ სიტყვა" ეს არის ის, რომელიც შეგიძლიათ იპოვოთ მოდულის დასახელების შემდეგ URL -ში.</p>
+
+<p>ამიტომ, "URL ოპციონალური სიტყვები" შესაძლოა იყვნენ აქტიური "პირდაპირი ბმულები"
+(ნახეთ შესაბამისი განყოფილება ჩვენს დოკუმენტაციაში, შემდგომი განმარტებებისათვის).</p>
+
+<p>წაიკითხეთ: `<a href="#warnings">გაფრთხილება</a>` მოხმარების წესები.</p>
+
+<h3>რა არის შაბლონი-გაფართოება?</h3>
+
+<p>ეს არის კონფიგურაციის ინსტრუმენტი - მძლავრი ახალბედა და გამოცდილი მომხმარებლებისათვის. FTP-ს გამოყენებით, ფოლდერ template-extension -ში, Web-მასტერს შეუძლია დუბლირება ბევრი სხვა და სხვა .tpl ფაილების ("პირველადი შაბლონი") სხვა და სხვა დასახელებით ("შემცვლელი").
+
+
+ "პირველადი შაბლონები", მიმდინარე ორიგინალი მხარდაჭერილი შაბლონები:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> და/ან <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> და/ან <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> და/ან <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> და/ან <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> და/ან <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> და/ან <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> და/ან <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>სად ვნახო "პირველადი შაბლონები"?</h3>
+
+<p>პირველადი შაბლონები იმყოფება ფოლდერში template/yoga/
+(იქვე ნუ გაუკეთებთ რედაქტირებას რათა შეინარჩუნოთ განახლების საშუალება). ისე რომ, "პირველადი შაბლონებით" ნებისმიერ web-მასტერს შეყძლია შექმნას თავისი  "შემცვლელი" (მომხმარებლის შაბლონები).</p>
+
+<h3>სად ჩავწეროთ "შემცვლელი"?</h3>
+
+<p><strong>"შემცვლელი" (მომხმარებლის შაბლონები)</strong> უნდა განთავსდეს ფოლდერში template-extension (ან მის ქვეფოლდერში). შემცვლელს შესაძლოა ქონდეს ნებისმიერი სახელი, გაფართოებით .tpl. მაგალითად: <span class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>როგორ გავააქტიურო ჩემი "შემცვლელი შაბლონები"?</h3>
+<p>ყოველი <strong>პირველადი შაბლონი</strong> შეთავსებული უნდა იყოს თავის <strong> "შემცვლელ" (მომხმარებლის შაბლონთან)</strong> რათა გაააქტიუროთ დაკავშირებული შეცვლა. ეს მიზანი აქვს "შაბლონების გაფართოების გასწორება"-ს მენიუში გასწორება.</p>
+
+<p>თუკი თქვენ აირჩევთ <strong>URL ოპციონალურ სიტყვას</strong> მაშინ შეცვლა მოხდება მხოლოდ გვერდებზე რომელიც დაკავშირებულია ამ სიტვასთან. მაგალითად: <span class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+
+<p>გამოცდილ მომხმარებლებს შეუძლიათ გამოიყენონ პირდაპირი ბმული როგორც <strong>URL ოპციონალურ სიტყვა</strong>. </p>
+
+<h3>როგორ გავუკეთო დეაქტივაცია ჩემს "შემცვლელ შაბლონებს"?</h3>
+<ul>
+<li>აღნიშნეთ არჩეული "პირველადი შაბლონი".</li>
+<li> FTP-თი წაშალეთ "შემცვლელი".</li>
+</ul>
+<a name="warnings"></a>
+<h3>გაფრთხილება</h3>
+<ul>
+
+  <li><strong>ორიგინალი შაბლონი</strong> უნდა იყოს "პირველადი" შაბლონი, წინააღმდეგ შემთხვევაში რეზულტატი შეიძლება იყოს  არაპროგნოზირებადი!</li>
+
+  <li>თუკი არსებობს რამდენიმე <strong>"შემცვლელი" (მომხმარებლის შაბლონი)</strong> ერთნაირი სახელით <strong>"პირველადი შაბლონით"</strong> და ერთნაირი <strong>URL ოპციონალურ სიტყვით</strong> მხოლოდ ბოლო "შემცვლელი" იქნება აქტიური.</li>
+
+  <li>უარი არჩევაზე <strong>URL ოპციონალურ სიტყვა</strong> აქტიურს გახდის "შემცვლელ" შაბლონს ყველასთვის. როგორც წინა პუნქტში, შემდეგი არჩევანი აუქმებს წინას.</li>
+
+  <li>ქვეფოლდერები:
+ქვეფოლდერები იგნორირებულია მაგრამ, ისინი მოსახერხებელია მომდინარე პარამეტრების შეცვლისათვის.<br />
+</li>
+
+  <li>"შემცვლელის" წაშლით <strong>"პირველადი" შაბლონი</strong> ისევ აქტიუტი გახდება.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ka_GE/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>ჯგუფების სია</h2>
+
+<p>აქ თქვენ შეგიძლიათ მართოთ შექმნილი ჯგუფები.</p>
+
+<h3>დავამატოთ ჯგუფი</h3>
+
+<p>ადმინისტრატორს შეუძლია დაამატოს ჯგუფები.</p>
+
+<h3>ჯგუფების სია</h3>
+
+<p>ყოველი ელემენტის სიიდან შესაძლებელია შექმნათ:</p>
+
+
+<ul>
+  <li>გადავიდეთ მონაწილეთა სიასთან</li>
+  <li>გადავიდეთ ნებართვებთან</li>
+  <li>წავშალოთ ჯგუფი (require a confirmation checkbox)</li>
+  <li>toggle status "default" (გამოდის მოთხოვნა დასტურზე)</li>
+</ul>
+
+<h3>ძირითადი ჯგუფი</h3>
+<p>ახალი მომხმარებლები ავტომატურად ხვდებიან ამ ჯგუფში.</p>
Index: /tags/2.6.0RC1/language/ka_GE/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,20 @@
+<p>არსებობს რამდენიმე საშუალება დაამატოთ ფოტოები გალერეაში:</p>
+
+<ul>
+ <li><strong>ატვირთვა ბროუზერით</strong> – ეს ყველაზე ადვილი და ოპერატიული მეთოდია. ატვირთვის საიმედობა ამ დროს დამოკიდებულია თქვენი ბროუზერის და ვებ-სერვერის შესაძლებლობაზე. თუკი თქვენ გინდათ ატვირთოთ ძალიან დიდი რაოდენობის ფოტო, ან თუკი რაიმე სახის სიძნელეს შეხვით, ყოველთვის შეგიძლიათ გამოიყენოთ ატვირთვის ალტერნატიული გზა.
+</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">გადავიდეთ ბროუზერით ატვირთვასთან</a></p>
+
+<ul>
+ <li><strong>pLoader</strong> – ეს არის პროგრამა, რომელიც გაეშვება თქვენს კომპიუტერში. გადმოიტანეთ &amp; ფოტოები ასატვირთად pLoader-ის ფანჯარაში, დაკილკეთ <em>"Upload to Piwigo"</em> და pLoader-ი შეუდგება მუშაობას. არსებობს სხვა პროგრამებიც,მაგალითად, <strong>WinToPiwigo</strong> და პლაგინი ფოტოების ექსპორტისათვის პროგრამიდან <strong>Digikam</strong>  Piwigo-ში.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">გადავიდეთ pLoader თან</a></p>
+
+<ul>
+ <li><strong>ატვირთვა FTP თი</strong> – ყველაზე რეკომენდირებული საშუალება ძალიან დიდი რაოდენობის ფოტოების ასატვირთად კლიკების მინიმალური რაოდენობით. მოამზადეთ ფოტოები ინსტრუქციის გამოყენებით. FTP თი ატვირთვა საშუალებას მოგცემთ სერვერზე ფოტოების ორგანიზებისა ისე, როგორც თქვენ ეს გინდათ.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">ატვირთვა FTP თი</a></p>
Index: /tags/2.6.0RC1/language/ka_GE/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Piwigo გაძლევთ საშუალებას მართოთ მომხმარებლების ჯგუფები. ეს მოსახერხებელია პრივატული კატეგორიების ხელმისაწვდომობის მხრივ.</p>
+
+<p>თქვენ შეგიძლიათ შექმნათ ჯგუფები გვერდზე <span class="pwgScreen"> ადმინისტრირება, იდენტიფიკაცია, ჯგუფები </span> და დაამატოთ მომხმარებლები შექმნილ ჯგუფში გვერდზე <span class="pwgScreen">ადმინისტრირება, იდენტიფიკაცია, მომხმარებლები</span>.</p>
+
+<p>მომხმარებელი შესაძლოა იმყოფებოდეს რამდენიმე ჯგუფში. ნებართვა უფრო ძლიერია ვიდრე აკრძალვა: თუკი მომხმარებელი "jack" არის ჯგუფში "family" და "friends", და არის კატეგორია "Christmas 2003", რომელთანაც დაიშვებიან მხოლოდ მომხმარებლები ჯგუფიდან "family", მომხმარებელს "jack" ექნება უფლება ნახოს კატეგორია "Christmas 2003".</p>
+
Index: /tags/2.6.0RC1/language/ka_GE/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/help_misc.html	(revision 25596)
@@ -0,0 +1,4 @@
+<p>მას შემდეგ რაც შექმნით გალერეას, შეცვალეთ ძირითადი მნიშვნელობები, რომლებიც პასუხს აგებენ გალერეის სახეზე, ამისათვის კორექტირება გაუკეთეთ მნიშვნელობებს გვერდზე <span class="pwgScreen"> ადმინისტრირება, გასწორება, ძირითადი </span> ყოველი ახალი მომხმარებელი იხილავს გალერეას ისეთს როგორც თქვენ ამას მიუთითებთ გასწორების დროს.</p>
+
+<p>თუკი თქვენ გაქვთ შეკითხვები, ნუ დაიზარებთ და ნუ შეგრცხვებათ მოძებნოთ პასუხები <a href="http://ru.piwigo.org/forum"> ფორუმზე </a> ან დასვათ კითხვები იქ. უფრო დეტალური ინფორმაციისათვის წაიკითხეთ <a href="http://ru.piwigo.org/doc/"> Piwigo-ს ოფიციალური დოკუმენტაცია </a>.</p>
+
Index: /tags/2.6.0RC1/language/ka_GE/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,45 @@
+<fieldset>
+<legend>ფოტოებთან დაშვება</legend>
+
+<p>ყოველი ფოტოსათვის შეგიძლიათ განსაზღვროთ <strong>დაშვების უფლება</strong> (ბლოკირება). ასევე  ყოველ მომხმარებელს შეგიძლიათ მიანიჭოთ გარკვეული დაშვების უფლება (გასაღები). გთავაზობთ დაშვების 5 დონეს:</p>
+<ol>
+  <li>დახურულია ყველასათვის</li>
+  <li><em>ნაცნობები</em></li>
+  <li><em>მეგობრები (ე.ი. მეტი ვიდრე ნაცნობები)</em></li>
+  <li><em>ოჯახი (ე.ი. მეტი ვიდერ მეგობრები)</em></li>
+  <li><em>ადმინისტრატორები (ყველაზე მაღალი)</em></li>
+</ol>
+
+<p>უფრო მაღალი დონე შეიცავს უფორ დაბალი ჯგუფის დაშვებებს. მომხმარებელი, რაც უფრო მეტია მისი დაშვების უფლება, მით მეტი ფოტოს ნახვას შეძლებს.</p>
+
+<p>მაგალითად, თუკი ფოტოს "peter_wedding-0024.jpg" ("პეტის-ქორწილი-0024.jpg") აქვს დაშვების დონე<em>"ოჯახი"</em> ეს ნიშნავს, რომ:</p>
+<ul>
+  <li>Peter (პეტი) (მისი ჯგუფია <em>"ადმინისტრატორი"</em>) შეძლებს ნახოს ეს ფოტო, რადგან  <em> "ადმინისტრატორი" </em> უფლებამოსილია ნახოს ყველა ფოტო </li>
+  <li>Beth (ბეტი)(მისი ჯგუფია <em>"ოჯახი"</em> ) იგიც შეძლებს ნახოს ეს ფოტო</li>
+  <li>Mary (მარი)(რომლის ჯგუფია <em>"მეგობარი"</em>) ვერ ნახავს ამ ფოტოს</li>
+</ul>
+
+<p>მომხმარებელი, რომელსც არა აქვს უფლება ნახოს ესა თუ ის ფოტო, ვერ ნახავს ინფორმაციას კატეგორიაში შემავალი ფოტოების რაოდენობაზე, ვერც თვითონ კატეგორიას და ვერც მის სათაურს.</p>
+
+<p>თქვენ შეგიძლიათ მიანიჭოთ დაშვების უფლება მომხმარებელს მენიუში <span class="pwgScreen">ადმინისტრირება &raquo; მომხმარებელი &raquo; მართვა</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>კატეგორიებთან დაშვება</legend>
+
+<p>თუკი დაშვების დონე არ შეესაბამება თქვენს მოთხოვნებს, შეგიძლიათ მართოთ იგი გარკვეული ჯგუფისათვის ან მომხმარებლებისთვის. თქვენ შეგიძლიათ მართოთ დაშვების უფლება ფოტოებისა და კატეგორიებისათვის ერთდოულად - კონფლიქტები არ მოხდება.</p>
+
+
+<p>თქვენ შეგიძლიათ აკრძალოთ კატეგორიასთან დაშვება. კატეგორიები შეიძლება იყოს "საერთო" ან "პრივატული". დაშვების უფლების ( ჯგუფისათვის ან მომხმარებლისათვის) დაყენება შესაძლებელია მხოლოდ პირივატული კატეგორიისათვის.</p>
+
+<p>თქვენ შეგიძლიათ გახადოთ კატეგორია პრივატული ყოველი კატეგორიის თვისებების რედაქტირებით (<span class="pwgScreen">ადმინისტრირება, გალერეა, მართვა, რედაქტირება</span>) ან კატეგორიის თვისების ნახვისას (<span class="pwgScreen"> ადმინისტრირება, გალერეა, თვისება, საერთო / პრივატული </span>).</p>
+
+<p>თუკი კატეგორია პრივატულია, დაშვების უფლება შეგიძლიათ დააყენოთ სამი საშუალებით:</p>
+
+<ul>
+  <li><span class="pwgScreen">ადმინისტრირება &raquo; იდენტიფიკაცია &raquo; მომხმარებლები &raquo; ნებართვები (ბოლო სვეტი მომხმარებლის ტაბულაში)</span></li>
+  <li><span class="pwgScreen">ადმინისტრირება &raquo; იდენტიფიკაცია &raquo; ჯგუფი &raquo; ნებართვები (ბოლო სვეტი ჯგუფის ტაბულაში)</span></li>
+  <li><span class="pwgScreen">ადმინისტრირება &raquo; გალერეა &raquo; მართვა &raquo; რედაქტირება (ბმული ყოველი კატეგორიისათვის)</span></li>
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ka_GE/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Piwigo ანსხვავებს კატეგორიებს სად ინახება ელემენტები და კატეგორიებს სადაც ისინი ნაჩვენები იქნება.</p>
+
+<p>ძირითადად, ელემენტები ნაჩვენები იქნება მხოლოდ რეალური კატეგორიებიდან: ანუ ისინი, რომლებიც დაკავშირებული არიან ფოლდერებთან სერვერზე.</p>
+
+<p>იმისათვის, რომ მიაბათ ელემენტი კატეგორიას, საჭიროა მიუთითოთ იგი ელემენტის რედაქტირების გვერდზე ან ინფორმაციაში კატეგორიის ყველა ელემენტის შესახებ.</p>
+
+<p>ამ პრინციპის ცოდნით ადვილია გაიგოთ რა არის ვირტუალური კატეგორია: ესაა კატეგორია, რომელსაც არ შეესაბამება ფოლდერი სერვერზე. ვირტუალური კატეგორიები შეგიძლიათ შექმნათ გვერდზე <span class="pwgScreen"> ადმინისტრირება, კატეგორიები, მართვა </span>.</p>
+
Index: /tags/2.6.0RC1/language/ka_GE/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/history.html	(revision 25596)
@@ -0,0 +1,38 @@
+<h2>ისტორია</h2>
+
+<p>ეს ეკრანი გაძლევთ საშუალებას ნახოთ ნახვების ისტორია ოპციების თანახმად, რომლებიც არჩეულია გვერდზე ადმინისტრირება - გასწორება - ისტორია.</p>
+
+<h3>სტატისტიკა</h3>
+<ul>
+  <p>თუკი თქვენ აირჩიეთ ნახვების ისტორიის შენახვა (<span
+class="pwgScreen">index.php</span> და <span
+class="pwgScreen">picture.php</span>) ტაბულაში <code>history. </code>
+მაშინ აქ იხილავთ ამ გვერდების ნახვის სტატისტიკას.</p>
+
+	<li><strong>ყველა</strong>: სტატისტიკის ნახვა წლების მიხედვით. </li>
+
+	<li><strong>წლიური სტატისტიკა</strong>: ყოველთვიური სტატისტიკის ნახვა არჩეული წლისთვის.</li>
+
+	<li><strong>თვის სტატისტიკა</strong>: ყოველდღიური სტატისტიკის ნახვა არჩეული თვისთვის.</li>
+
+	<li><strong>დღის სტატისტიკა</strong>: საათობრივი სტატისტიკის ნახვა არჩეული დღისთვის.</li>
+
+</ul>
+
+<h3>ძიება</h3>
+<ul>
+  <p>თუკი თქვენ აირჩიეთ ნახვების ისტორიის შენახვა (<span
+class="pwgScreen">index.php</span> და <span
+class="pwgScreen">picture.php</span>) ტაბულაში <code>history. </code>
+მაშინ აქ იხილავთ ამ გვერდების ნახვის სტატისტიკას დაჯგუფებულს ფილტრების მეშვეობით.</p>
+
+	<li><strong>ფილტრი თარიღზე</strong>: აირჩიეთ თარიღის ინტერვალი აქტიურობის სტატისტიკის სანახავად.</li>
+
+	<li><strong>ფილტრი ელემენტის ტიპზე</strong>: აირჩიეთ ელემენტის ტიპი აქტიურობის სტატისტიკის სანახავად.</li>
+
+	<li><strong>ფილტრი მომხმარებელზე</strong>: აირჩიეთ მომხმარებელი აქტიურობის სტატისტიკის სანახავად.</li>
+
+	<li><strong>ფილტრი ფაილის სახელზე</strong>: აირჩიეთ ფაილის სახელი აქტიურობის სტატისტიკის სანახავად.</li>
+
+	<li><strong>ფილტრი გამოსახულების ნომერზე</strong>: აირჩიეთ გამოსახულების ნომერი აქტიურობის სტატისტიკის სანახავად.</li>
+</ul>
Index: /tags/2.6.0RC1/language/ka_GE/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ka_GE/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/maintenance.html	(revision 25596)
@@ -0,0 +1,49 @@
+<h2>მომსახურება</h2>
+
+<p>გვერდის შექმნის ოპტიმიზაციისათვის, Piwigo იყენებს ინფორმაციის კეშირებას. მაგალითად, იმის მაგივრად, რომ დაითვალოს ფოტოების რაოდენობა ყოველ კატეგორიაში განახლების დროს, ეს ინფორმაცია ინახება მონაცემთა ბაზაში. თეორიულად ეს ინფორმაცია კორექტული უნდა იყოს, მაგრამ ხანდახან კეშირების დროს მომხდარი შეცდომებისას, ეს ინფორმაცია არა სწორი ხდება.</p>
+
+<p>ზოგიერთი ინფორმაცია დროთა განმავლობაში გამოუსადეგარი ხდება. ამ უსარგებლო ინფორმაციის წაშლა მონაცემთა ბაზიდან, საშუალებას მოგცემთ შეინარჩუნოთ ადგილი დისკზე.</p>
+
+<ul>
+
+  <li>
+    <strong>დაუკავშირებელი ელემენტები:</strong>
+    გაჩვენებთ ფოტოებს, რომლებიც არ არიან დაკავშირებული არც ერთ ვირტუალურ კატეგორიასთან.
+  </li>
+  <li>
+    <strong>ფაილები ერთნაირი სახელით სხვა და სხვა ფოლდერში:</strong>
+    გაჩვენებთ ისეთ ფოტოებს და სხვა ფაილებს, რომლებსაც ერთნაირი სახელები აქვთ და სხვა და სხვა კატეგორიებში იმყოფებიან.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>განვაახლოთ ინფორმაცია კატეგორიებზე:</strong> ყოველი კატეგორიისათვის ხდება განახლება ან კონტროლდება შემდეგი ინფორმაცია: მშობლიური კატეგორიების სია, ფოტოების რაოდენობა, მდებარეობა ერთი დონის კატეგორიებთან, მდებარეობა ყველა კატეგორიასთან მიმართებით.</li>
+
+  <li><strong>განვაახლოთ ინფორმაცია ფოტოებზე:</strong> ყოველი ფოტოსათვის განახლდება ან        კონტროლირდება შემდეგი ინფორმაცია: სრული გზა ფაილამდე, რეიტინგი.
+  <em>გაფრთხილება</em>: არ აგერიოთ მეტამონაცემებში, რომლის სინქრონიზაციაც ხდება
+  <span class="pwgScreen">ადმინისტრირება, გალერეა, სინქრონიზაცია</span> ან ფოტოს რედაქტირების გვერდიდან.</li>
+
+  <li><strong>მონაცემთა ბაზის გასწორება და ოპტიმიზაცია:</strong>
+ ყოველი ცხრილისათვის გაკეთდება გადამოწმება, აღდგენა და ოპტიმიზაცია.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>გავწმინდოთ ისტორია:</strong> წაიშლება ყველა სტრიქონი ცხრილში <code>history</code>. 
+  გვერდზე <span class="pwgScreen">ადმინისტრირება, სპეც.ფუნქციები, ისტორია</span>
+  არ იქნება ინფორმაცია ისტორიასთან დაკავშირებით ამ ოპერაციამდე. <em>გაფრთხილება</em>:
+  ყველა მონაცემი წაიშლება და არ არის არანაირი საშუალება ინფორმაციის აღდგენისათვის.</li>
+
+  <li><strong>გავასუფთაოთ მთელი ისტორია:</strong> წაიშლება მთელი ნახვების ისტორია. ეს შემაჯამებელი ინფორმაცია გამოითვლება ისტორიის დეტალებიდან.</li>
+
+  <li><strong>გავწმინდოთ სესიები:</strong> წაიშლება მომხმარებლების დროგასული სეანსები.</li>
+
+  <li><strong>გავწმინდოთ შეტყობინებების გამოუყენებელი არხები</strong></li>
+  
+  <li><strong>გავწმინდოთ ძიების ისტორია</strong></li>
+  
+  <li><strong>გავწმინდოთ შექმნილი შაბლონები</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ka_GE/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>შეტყობინებები</h2>
+
+<p>ეს განყოფილება შექმნილია მომხმარებლებისათვის საიტის სიახლეების დაგზავნის გასწორებისა და მართვისათვის.</p>
+
+<p>გვერდი შეიცავს სამ ჩანართს:</p>
+
+<h3>პარამეტრები</h3>
+<p>ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს არის შეტყობინებების პარამეტრები.</p>
+
+<h3>დაგზავნის სია</h3>
+<p>ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს ჩანართი მართავს მომხმარებლების ხელმოწერას და შეტყობინებებს.</p>
+
+<h3>გაგზავნა</h3>
+<p>ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს ჩანართი გაძლევთ საშუალებას მოახდინოთ შეტყობინებების დაგზავნა.</p>
+
Index: /tags/2.6.0RC1/language/ka_GE/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/permalinks.html	(revision 25596)
@@ -0,0 +1,8 @@
+<h2>მუდმივი ბმულები</h2>
+
+<p>მუდმივ ბმულებს იყენებენ რიოდესაც საჭიროა კატეგორიის URL გახდეს უფრო მოხერხებული. როდესაც კატეგორიისათვის გარკვეულია პირდაპირი ბმული, კატეგორიის id, URL-ში აღარ გამოიყენება.</p>
+
+<p>პირდაპირი ბმულის წაშლის შემდეგ, თქვენ შეგიძლიათ შეინახოთ იგი პირდაპირი ბმულების ისტორიაში, რათა შეინარჩუნოთ შიდა ბმულების მოქმედუნარიანობა. პირდაპირი ბმულების ისტორიის ცხრილში შესაძლებელია წაშლის თარიღის, ბოლოს როდის გამოიყენეთ, სულ რამდენჯერ გამოყენეთ ინფორმაციის ნახვა.</p>
+
+<p>ყურადღება მიაქციეთ, შესაძლებელია მხოლოდ ერთი პირდაპირი ბმულის გამოყენება თითო კატეგორიისათვის.
+ანალოგიურად, პირდაპირი ბმულების ისტორიაში არ შეიძლება ერთი და იგივე პირდაპირი ბმულის გამოყენება რამდენჯერმე.</p>
Index: /tags/2.6.0RC1/language/ka_GE/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,112 @@
+<fieldset>
+  <legend>სწრაფი სტარტი</legend>
+
+<ol>
+
+  <li>შექმენით ლოკალური ფოლდერი "test_category".</li>
+
+  <li>გადაიტანეთ ფოტოები "test_category" -ში.</li>
+
+  <li>დაუკავშირდით გალერეას FTP -თი.</li>
+
+  <li>ატვირთეთ ლოკალური ფოლდერი "test_category" დაშორებულ ფოლდერში "galleries".
+  დააყენეთ დაშვების უფლება 777 ფოლდერზე "galleries/test_category".</li>
+
+  <li>შედით თქვენს Piwigo გალერეაში როგორც ადმინისტრატორი.</li>
+
+  <li>გადადით <span class="pwgScreen">ადმინისტრირება, ფოტოები,მინიატურები</span>. Piwigo იპოვის ფოტოებს მინიატურების გარეშე "test_category" -ში  და მოგთხოვთ დასტურს მინიატურების შექმნაზე.</li>
+
+  <li>გადადით <span class="pwgScreen">ადმინისტრირება, გალერეა, სინქრონიზაცია</span>. აღნიშნეთ "ფოლდერები და ფაილები", მოხსენით აღნიშვნა "მხოლოდ ტესტირება (არ შევიტანოთ ცვლილებები მონაცემთა ბაზაში)" და დაკლიკეთ გაგზავნა.</li>
+
+  <li>მორჩა. თქვენ შექმენით კატეგორია "test_category" თქვენი გალერეის ფუძეში.</li>
+
+</ol>
+
+</fieldset>
+<fieldset>
+  <legend>ფოტოების დამატება</legend>
+
+<ul>
+
+  <li>
+
+    <p>კატეგორიის ფოლდერები განლაგებულია ფოლდერ "galleries" -ში.
+    ქვევით ნახეთ პატარა გალერეის წყობა:</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+
+  <li>უმარტივეს შემთხვევაში კატეგორიები წარმოდგენილია როგორც ნებისმიერი დონის ფოლდერები ფოლდერში  "galleries". ყოველი კატეგორია შეიძლება შეიცავდეს იმდენ ქვეკატეგორიას რამდენიც გნებავთ. მაგალითში მაღლა, category-1.1.1.1 მდებარეობს მე-4 დონეზე.</li>
+
+  <li>ყოველი ფაილი - ესაა ფოტო. ფაილი შეიძლება იყოს Piwigo-ს ელემენტი, თუკი მისი ტიპი აღწერილია პარამეტრში <code>file_ext</code>
+  (ნახე ფაილი <span  class="filename">include/config_default.inc.php</span>).</li>
+
+  <li>ფოტოს უნდა ქონდეს მინიატურა (ნახე ქვემოთ განყოფილება მინიატურებზე)</li>
+
+  <li>ფოტოს შესაძლოა ქონდეს ვერსია დიდი გაფართოებით, როგორც wedding.jpg მაგალითში მაღლა. ფოტოს დიდი გაფართოებით არ აქვს პრეფიქსი.</li>
+
+  <li>ელემენტები, რომლებიც არ არიან ფოტოები (ვიდეო, მუსიკა, ტექსტი და ა.შ.) წარმოდგენილი არიან ამ ფაილის შესაბამისი მინიატურებით. დამატებით, თქვენ შეგიძლიათ დაუკავშიროთ მინიატურა და წარმომადგენლობითი ფაილი (ნახე video.avi მაგალითში მაღლა).</li>
+
+  <li><em>ყურადღება</em>: ფოლდერების და ფაილების სახელი უნდა შედგებოდეს ასოების, რიცხვების, "-", "_" ან "." -საგან. ნუ გამოიყენებთ დაშორებებს.</li>
+
+  <li><em>ცნობისათვის</em>: კატეგორია შეიძლება შეიცავდეს ელემენტებს და ქვეკატეგორიებს ერთდოულად. მიუხედავად ამისა, რეკომენდირებულია ყოველი კატეგორიისათვის აირჩიოთ, შეიცავს იგი ელემენტებს თუ კატეგორიებს.</li>
+
+  <li>როდესაც ფაილები, მინიატურები და წარმომადგენლები სწორად არიან ფოლდერში განლაგებულნი, აირჩიეთ:
+  <span class="pwgScreen">ადმინისტრირება, კატეგორიები, სინქრონიზაცია</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>მინიატურები</legend>
+
+<ul>
+
+  <li>როგორც ვთქვით, ყოველ ფოტოს უნდა ქონდეს მინიატურა.</li>
+
+  <li>მინიატურები განლაგებულია კატეგორიის ფოლდერის ქვეფოლდერში "thumbnail".
+  მინიატურა - ესაა სურათი რომელსაც ფაილის სახელში აქვს პრეფიქსი, რომელიც მითითებულია მინიატურის პრეფიქსის გასწორებაში (ნახე პანელი ადმინისტრირება, გასწორება, ძირითადი).</li>
+
+  <li>არ არის აუცილებელი მინიატურებსაც ისეთივე გაფართოება ქონდეთ როგორც ორიგინალ ფოტოებს (ფოტოს გაფართოებით .jpg შეიძლება ქონდეს მინიატურა გაფართოებით .GIF).</li>
+
+  <li>რჩევა: გამოიყენეთ შიდა მოდული მინიატურების შესაქმნელად.</li>
+
+  <li>თქვენ ასევე შეგიძლიათ გამოიყენოთ სკრიპტის შესაძლებლობები (<span class="pwgScreen"> ადმინისტრირება, ფოტოები,მინიატურები</span>), თუმცა ამის გაკეთება არ არის რეკომენდირებული. სამწუხაროდ, მინიატურების ხარისხი შეიძლება არც თუ ისე მაღალი იყოს ხოლო პროცესორზე დატვირთვა საკმაოდ მაღალია, რამაც შესაძლოა პრობლემები შეგიქმნათ უფასო ჰოსტინგის გამოყენების შემთხვევაში.</li>
+
+  <li>თუკი მაინც გამოიყენებთ სკრიპტის შესაძლებლობებს, საჭიროა ნებართვა ჩაწერაზე კატეგორიის ყველა ფოლდერში და ქვეფოლდერში "thumbnail".</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ka_GE/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/search.html	(revision 25596)
@@ -0,0 +1,20 @@
+<h2> ძიება </h2>
+
+<p> ეს გვერდი საშუალებას გაძლევთ მოძებნოთ ფოტოები მთელს გალერეაში.</p>
+
+<dl>
+
+  <dt> ძიება სიტყვებით </dt>
+  <dd> ძიება ყველა სიტყვით ყველა ატრიბუტით გალერეის ყველა ფოტოში.
+  გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის. </dd>
+
+  <dt> ძიება ავტორის მიხედვით </dt>
+  <dd> გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის.</dd>
+
+  <dt> ძიება თარიღის მიხედვით </dt>
+  <dd> აირჩიეთ საწყისი ან/და საბოლოო თარიღი მოთხოვნისათვის. დატოვეთ ცარიელი საწყისი თარიღი "ადრინდელის" მოსაძებნად. წელი უნდა ჩაწეროთ ბოლო ველში ფორმატში 0000 (ანუ 2010) </dd>
+
+  <dt> ძიება კატეგორიებში </dt>
+  <dd> აირჩიეთ კატეგორია ან კატეგორიები ძიების რაიონის შეცამცირებლად. ქვეკატეგორიაში მოსაძებნად შეგიძლიათ აირჩიოთ კატეგორია და დასვათ ქვეკატეგორიებში ძიების ალამი. </dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ka_GE/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/synchronize.html	(revision 25596)
@@ -0,0 +1,9 @@
+<h2>სინქრონიზაცია</h2>
+
+<p>შესაძლებელია სინქრონიზაციის 2 ტიპი: ფოლდერები/ფაილები და მეტამონაცემები.
+ფოლდერები/ფაილები სინქრონიზირებული იქნება ფოლდერები მონაცემთა ბაზაში ფოლდერებთან.
+მეტამონაცემები სინქრონიზირებული იქნება ინფორმაცია ელემენტებზე, ისეთი როგორიც არის ფაილის ზომა, ზომები პიქსელებში, ინფორმაცია EXIF ან IPTC.</p>
+
+<p>თავიდან სინქრონიზირებული უნდა იყოს ფოლდერები/ფაილები.</p>
+
+<p>სინქრონიზაციის პროცესმა შესაძლოა დიდი ხანი გასტანოს ( დამოკიდებულია სერვერის დატვირთვაზე და სინქრონიზირებული ელემენტების რაოდენობაზე) ანუ  შესაძლოა ღირდეს ნაბიჯ-ნაბიჯ გააკეთოთ: კატეგორიიდან კატეგორიამდე.</p>
Index: /tags/2.6.0RC1/language/ka_GE/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/help/user_list.html	(revision 25596)
@@ -0,0 +1,29 @@
+<h2>მომხმარებლების სია</h2>
+
+<p>ამ გვერდზე თქვენ შეგიძლიათ მართოთ დარეგისტრირებული მომხმარებლები. მარტო ნებართვების მართვა შესაძლებელია რამდენიმე ეკრანზე.</p>
+
+<h3>მომხმარებლების დამატება</h3>
+
+<p>ადმინისტრატორს შეუძლია ხელით დაამატოს მომხმარებელი.</p>
+
+<h3>მომხმარებლების სია</h3>
+
+<p>სია შეიძლება გაფილტრული იქნეს მომხმარებლის სახელის მიხედვით (გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის), ჯგუფის ან სტატუსის მიხედვით. სია შეიძლება  გადარჩეულ იქნეს  მომხმარებლის რეგისტრაციის ან სახელის მიხედვით, მატებით ან კლებით.</p>
+
+<p>ეს ეკრანი საშუალებას გაძლევთ ერთი და იგივე მოქმედება ჩაატაროთ რამდენიმე მომხმარებლის მიმართ:</p>
+
+<ul>
+
+  <li>მომხმარებლის წაშლა (საჭიროა თანხმობა ნიშნის ჩასმით)</li>
+
+  <li>სტატუსის შეცვლა</li>
+
+  <li>ჯგუფში ჩართვა ან გამორთვა</li>
+
+  <li>გამოსახულების მნიშვნელობის რედაქტირება</li>
+
+  <li>დამატებითი თვისებების რედაქტირება</li>
+
+</ul>
+
+<p>გასწორებები შეეხება არჩეულ მომხმარებლებს (ძირითადად) თუ ყველას.</p>
Index: /tags/2.6.0RC1/language/ka_GE/index.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ka_GE/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'დაყენება';
+$lang['Basic configuration'] = 'საბაზო გასწორება';
+$lang['Default gallery language'] = 'პრიორიტეტული ენა';
+$lang['Database configuration'] = 'მონაცემთა ბაზის გასწორება';
+$lang['Admin configuration'] = 'ადმინისტრირების გასწორება';
+$lang['Start Install'] = 'დავიწყოთ დაყენება';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'მას დაინახავენ მნახველები.საჭიროა საიტის ადმინისტრირებისათვის';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'წარმატებით დაუკავშირდით სერვერს,მაგრამ მონაცემთა ბაზასთან დაკავშირება შეუძლებელია';
+$lang['Can\'t connect to server'] = 'შეუძლებელია სერვერთან დაკავშირება';
+$lang['Host'] = 'MySQL ხოსტი';
+$lang['User'] = 'მომხმარებელი';
+$lang['user login given by your host provider'] = 'სახელი(ლოგინი),რომელიც პროვაიდერმა მოგცათ';
+$lang['user password given by your host provider'] = 'პაროლი,რომელიც პროვაიდერმა მოგცათ';
+$lang['Database name'] = 'მონაცემთა ბაზის სახელი';
+$lang['also given by your host provider'] = 'ასევე გაიცემა პროვაიდერის მიერ.ხშირად ემთხვევა სახელს(ლოგინს)';
+$lang['Database table prefix'] = 'ცხრილის პრეფიქსი მონაცემთა ბაზაში';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'ცხრილის სათაური დაიწყება ამითი(რაც გააადვილებს მის მომსახურებას)';
+$lang['enter a login for webmaster'] = 'საჭიროა შეიყვანოთ ლოგინი ვებმასტერისათვის';
+$lang['webmaster login can\'t contain characters \' or "'] = 'ლოგინი ვებმასტერისათვის არ უნდა შეიცავდეს სიმბოლოებს  \' ან "';
+$lang['please enter your password again'] = 'პაროლი კიდევ ერთხელ';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'არ გაუმხილოთ არავის,იგი საჭიროა ადმინისტრირების პანელთან დასაშვებად';
+$lang['Password [confirm]'] = 'გაიმეორეთ პაროლი';
+$lang['verification'] = 'კიდევ ერთხელ,შეცდომის გამოსარიცხად';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'გჭირდებათ დახმარება?დასვით შეკითხვები <a href="%s">Piwigo–ს ფორუმზე</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'გამოყენებული იქნება მომხმარებლების მიერ ადმინისტრატორთან კავშირისათვის';
+$lang['PHP 5 is required'] = 'საჭიროა PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'სავარაუდოდ თქვენი ხოსტინგი ამჟამად იყენებს PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo–ს შეუძლია შეეცადოს გადართოს თქვენი კონფიგურაცია PHP 5, .htaccess ფაილს შექმნით ან შეცვლით.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'აღნიშნეთ,რომ თქვენ შეგიძლიათ თქვენით შეცვალოთ კონფიგურაცია და ამის შემდეგ ახლიდან გაუშვით Piwigo.';
+$lang['Try to configure PHP 5'] = 'შვეცადოთ PHP 5 გადაკონფიგურირება';
+$lang['Sorry!'] = 'ბოდიში!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo–ს არ შეუძლია PHP 5 გადაკონფიგურირება.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'თქვენ უნდა მიმართოთ პროვაიდერს დახმარებისა და განმარტებისათვის ტუ როგორ მოახერხოთ PHP 5 ზე გადართვა.';
+$lang['Hope to see you back soon.'] = 'იმედი გავქვს მალე შემოგვიერთდებით.';
+$lang['Congratulations, Piwigo installation is completed'] = 'გილოცავთ,Piwigo–ს დაყენება დამთავრებულია';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'ალტერნატიული გადაწყვეტილება მდგომარეობს შემდეგში,შეგიძლიათ დააკოპიროთ ტექსტი მაღლა ბლოკიდან და ჩასვათ ამ ფაილში "local/config/database.inc.php"   (გაფრთხილება: database.inc.php უნდა შეიცავდეს მხოლოდ იმას რაც წერია textarea–ში, თავისუფალი ადგილების და დაბრუნების ხაზების გარეშე)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'კონფიგურაციის ფაილის local/config/database.inc.php შექმნა არ მოხერხდა.';
+$lang['Download the config file'] = 'ავტვირთოთ კონფიგურაციის ფაილი';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'თქვენ შეგიძლიათ ატვირთოთ კონფიგურაციის ფაილი და გადასცეთ იგი local/config directory ში.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ნუ მოგერიდებათ დახმარებისა და კონსულტაციისათვის მოგვმართოთ ჩვენს ფორუმზე: %s';
+$lang['Just another Piwigo gallery'] = 'Piwigo -ს კიდევ ერთი გალერეა';
+$lang['Welcome to my photo gallery'] = 'კეთილი იყოს ჩემს ფოტო გალერეაში თქვენი მობრძანება';
+$lang['Welcome to your new installation of Piwigo!'] = 'კეთილი იყოს თქვენს მიერ Piwigo -ს დაყენება!';
+?>
Index: /tags/2.6.0RC1/language/ka_GE/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ქართული [GE]
Index: /tags/2.6.0RC1/language/ka_GE/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ka_GE/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ka_GE/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'განახლება';
+$lang['Upgrade from version %s to %s'] = 'განახლება %s ვერსიიდან %s ვერსიამდე';
+$lang['Statistics'] = 'სტატისტიკა';
+$lang['total upgrade time'] = 'განახლების საერთო დრო';
+$lang['total SQL time'] = 'SQL საერთო დრო';
+$lang['SQL queries'] = 'SQL მოთხოვნა';
+$lang['Upgrade informations'] = 'ინფორმაცია განახლებებზე';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'განახორციელეთ მომსახურება [ადმინისტრირება>ინსტრუმენტები>მომსახურება] თუკი შეგექმნათ რაიმე პრობლემა.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'მხოლოდ ადმინისტრტორს შეუძლია განახლების გაშვება: შეამოწმეთ ქვევით.';
+$lang['You do not have access rights to run upgrade'] = 'თქვენ არ გაქვთ განახლების გაშვების უფლება';
+$lang['All sub-albums of private albums become private'] = 'პრივატული (კერძო) კატეგორიის ყველა ქვეკატეგორია იქნება პრივატული';
+$lang['User permissions and group permissions have been erased'] = 'მომხმარებლების და ჯგუფების დაშვების უფლებები წაშლილია';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'მხოლოდ ესკიზების პრეფიქსები და ვებმასტერის ფოსტის მისამართი იქნა შენახული წინა კონფიგურაციიდან';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'ეს გვერდი გთავაზობთ მონაცემთა ბაზის მოდერნიზაციას,თქვენი Piwigo ძველი ვერსიიდან ახალ ვერსიამდე. განახლების დამხმარე საშუალება ფიქრობს,რომ თქვენ ამჟამად იყენებთ <b> ვერსია %s </b> (ან ეკვივალენტურს).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'სასურველია,რომ შემდეგი პლაგინები დეზაქტივირებული იყოს. თქვენ უნდა შეამოწმოთ პლაგინების განახლება მანამდე,სანამ მოახდენთ მათ აქტივაციას:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] =' %s, მდე ?>, ჩავსვათ:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'უსაფრთხოების მიზნით შემდეგი თემები გამორთულია. თქვენ უნდა შეამოწმოთთემების განახლება? სანამ მათ ახლიდან ჩართავთ:';
+?>
Index: /tags/2.6.0RC1/language/km_KH/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/km_KH/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/km_KH/admin.lang.php	(revision 25596)
@@ -0,0 +1,212 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Add to caddie'] = 'ដាក់​ចូល​ទៅ​ក្នុង​កូន​ប្រអប់';
+$lang['Notification'] = "ការ​ផ្តល់​ដំណឹង​";
+$lang['Upload Photos'] = 'បញ្ចូល​រូប​ថត​';
+$lang['Select an album'] = 'ជ្រើស​រើស​សៀវ​ភៅ​រូប​ថត​';
+$lang['... or '] = '... ឬ ';
+$lang['create a new album'] = 'បង្កើត​សៀវ​ភៅ​រូប​ថត​ថ្មី​មួយ';
+$lang['Select files'] = 'ជ្រើស​រើស​រូប​ថត​';
+$lang['Start Upload'] = 'ចាប់​ផ្តើម​បញ្ចូល​';
+$lang['Learn more'] = 'ស្វែ​ងយល់​បន្ថែម​';
+$lang['Maximum file size: %sB.'] = 'ទំហំ​រូប​អតិ​បរមា​: %sB.';
+$lang['Allowed file types: %s.'] = 'អនុញ្ញាត​ឯកសារ​ប្រភេទ​: %s.';
+$lang['+ Add an upload box'] = '+ បន្ថែម​ប្រអប់​មួយ​ទៀត​';
+$lang['Add another set of photos'] = 'បន្ថែម​សំនុំ​រូប​មួយ​ផ្សេង​ទៀត​';
+$lang['Photo %s of %s'] = 'រូប​ថត​ទី %s នៃ %s';
+$lang['%d photos uploaded'] = '%d រូប​ថត​បាន​បញ្ចូល​';
+$lang['All %d photos are selected'] = 'រូប​ថត​ទាំង​អស់​ %d ត្រូវ​បាន​ជ្រើស​រើស​';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'អ្នក​កំពុង​ប្រើ​ប្រាស់​ Browser uploader. សាក​ល្បង​ប្រើ​ <a href="%s">Flash uploader</a> ជំនួស​វិញ';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'អ្នក​កំពុង​ប្រើ​ប្រាស់​ Flash uploader. មាន​បញ្ហា​? សាក​ល្បង​ប្រើ​ <a href="%s">Browser uploader</a> ជំនួស​វិញ​';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use ផ្នែក​បន្ថែម​ Exif មិន​អាច​ដំណើរ​ការ​បាន​។ អ្នក​គ្រប់​គ្រង​គួរ​តែ​ទៅ​បិទ exif use';
+$lang['Hide'] = "លាក់​";
+$lang['ACCESS_0'] = "ចូល​ដំណើរ​ការ​សេរី";
+$lang['ACCESS_1'] = "ដំណើរ​ការសំរាប់​​ទាំង​អស់​";
+$lang['ACCESS_2'] = "ដំណើរ​ការ​សំរាប់​អ្នក​ចុះឈ្មោះ​ប្រើ​ប្រាស់​";
+$lang['ACCESS_3'] = "ដំណើរ​ការ​សំរាប់​អ្នក​គ្រប់​គ្រង​";
+$lang['ACCESS_4'] = "ដំណើរ​ការ​សំរាប់​ប្រធាន​បណ្តាញ​ធំ​";
+$lang['ACCESS_5'] = "មិន​អាច​ដំណើរ​ការ​បាន​";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = "ទំនាក់​ទំនង​";
+$lang['Level 2'] = "មិត្ត​ភក្តិ​";
+$lang['Level 4'] = "គ្រួ​សារ​";
+$lang['Level 8'] = "អ្នក​គ្រប់​គ្រង​";
+$lang['%d album including'] = 'សៀវ​ភៅ​រូប​ថត %d កំពុង​ដាក់​បញ្ចូល';
+$lang['%d album moved'] = 'សៀវ​ភៅ​រូប​ថត %d បានផ្លាស់​ប្តូរ​ទី​តាំង​​';
+$lang['%d albums including'] = 'សៀវ​ភៅ​រូប​ថត %d កំពុង​បញ្ចូល';
+$lang['%d albums moved'] = 'សៀវ​ភៅ​រូប​ថត %d បាន​ផ្លាស់​ប្តូរ​ទី​តាំង​';
+$lang['%d anomalies have been detected corrected.'] = 'ភាព​ខុស​ប្រក្រតីចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​ និង​បាន​កែ​ប្រែ';
+$lang['%d anomalies have been detected.'] = 'ភាព​ខុស​ប្រក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​';
+$lang['%d anomalies have been ignored.'] = 'ភាព​ខុស​ប្រក្រ​តី​ចំនួន​ %d មិន​បាន​ទទួល​យក';
+$lang['%d anomalies have not been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d មិ​នទាន់​​បាន​កែ​ប្រែ​';
+$lang['%d anomaly has been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​កែ​ប្រែ​';
+$lang['%d anomaly has been detected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​';
+$lang['%d anomaly has been ignored.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d មិន​បាន​ទទួល​យក';
+$lang['%d anomaly has not been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន %d មិន​ទាន់​បាន​កែ​ប្រែ';
+$lang['%d group'] = '%d ក្រុម​';
+$lang['%d groups'] = '%d ក្រុម​';
+$lang['%d guest'] = 'ភ្ញៀវ​ %d នាក់​​';
+$lang['%d guests'] = 'ភ្ញៀវ​ %d នាក់​';
+$lang['%d line filtered'] = '​ច្រោះ​យក​ %d បន្ទាត់';
+$lang['%d lines filtered'] = 'ច្រោះ​យក​ %d បន្ទាត់​';
+$lang['%d mail was not sent.'] = 'អ៊ីម៉ែល​ចំនួន %d មិន​បាន​ផ្ញើ​ចេញ​ទេ';
+$lang['%d mail was sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d បាន​ផ្ញើ​ចេញ​';
+$lang['%d mails were not sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d មិន​បាន​ផ្ញើ​ចេញ​ទេ​';
+$lang['%d mails were sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d បាន​ផ្ញើ​ចេញ';
+$lang['%d member'] = 'សមាជិក​ %d នាក់​';
+$lang['%d members'] = 'សមា​ជិក​ %d នាក់​';
+$lang['%d of %d photos selected'] = '%d នៃ​ %d រូប​ថត​បាន​ជ្រើស​រើស​';
+$lang['%d photo was deleted'] = 'រូប​ថត​ %d បា​ន​លុប';
+$lang['%d photos were deleted'] = 'រូប​ថត​ %d បាន​លុប';
+$lang['%d physical'] = '%d រូប​សណ្ឋាន​';
+$lang[' and %d virtual'] = ' និង​ %d  សៀវ​ភៅ​រូប​ថត​រង​';
+$lang['Photo Properties'] = 'លក្ខណៈ​នៃ​រូបថត​';
+$lang['Photo name'] = 'ឈ្មោះ​រូប​ថត​';
+$lang['Name'] = 'ឈ្មោះ';
+$lang['Description'] = ' ពិពណ៌នា';
+$lang['Parent album'] = 'សៀវ​ភៅ​រូប​ថត​មេ';
+$lang['Album name'] = 'ឈ្មោះ​សៀវ​ភៅ​រូប​ថត';
+$lang['Create'] = 'បង្កើត​';
+$lang['Original Size'] = 'ទំ​ហំដើម​';
+$lang['A locked gallery is only visible to administrators'] = 'វិចិត្រ​សាលដែល​ត្រូវ​បាន​ការ​ពារ គឺ​អាច​មើល​ឃើញ​សំរាប់តែ​អ្នក​គ្រប់​គ្រង​តែ​ប៉ុណ្ណោះ';
+$lang['Unlock gallery'] = 'វិចិត្រ​សាល​​លែង​ការ​ពារ';
+$lang['Gallery unlocked'] = ' វិចិត្រ​សាលលែង​ត្រូវ​បាន​ការ​ពារ​';
+$lang['Notify administrators when a comment is'] = 'ផ្តល់​ដំណឹង​អ្នក​គ្រប់​គ្រង​ពេល​មាន​មតិ​';
+$lang['modified'] = 'បាន​​កែ​ប្រែ​';
+$lang['pending validation'] = 'ការ​បញ្ជាក់​សុពល​ភាព កំពុង​ស្ថិត​ក្នុង​ការ​រង​ចាំ​';
+$lang['Save visits in history for'] = 'រក្សា​ការ​ទស្សនា​ក្នុង​កំណត់​ត្រា​';
+$lang['simple visitors'] = 'ភ្ញៀវ​ធម្មតា';
+$lang['registered users'] = 'អ្នក​ប្រើ​ប្រាស់​បាន​ចុះ​ឈ្មោះ​';
+$lang['administrators'] = 'អ្នក​គ្រប់​គ្រង​';
+$lang['%d association'] = '%d រូប​ថត​ពាក់​ព័ន្ធ​';
+$lang['%d associations'] = '%d រូប​​ពាក់​ព័ន្ធ​';
+$lang['%d parameter was updated.'] = '%d parameter បាន​បន្ទាន់​សម័យ.';
+$lang['%d parameters were updated.'] = '%d parameters បាន​បន្ទាន់​សម័យ.';
+$lang['%d tag'] = '%d ស្លាក';
+$lang['%d tags'] = '%d ស្លាក';
+$lang['%d user comment rejected'] = '%d មតិ​អ្នក​ប្រើ​ប្រាស់​បាន​ច្រាន​ចោល';
+$lang['%d user comment validated'] = '%d មិត​អ្នក​ប្រើ​ប្រាស់​មាន​សុពល​ភាព';
+$lang['%d user comments rejected'] = '%d មតិ​អ្នក​ប្រើ​ប្រាស់​បាន​ច្រាន​ចោល';
+$lang['%d user comments validated'] = '%d មិត​អ្នក​ប្រើ​ប្រាស់​មាន​សុពល​ភាព';
+$lang['%d user deleted'] = 'អ្នក​ប្រើ​ប្រាស់​ %d បានលុប';
+$lang['%d user was not updated.'] = '%d អ្នក​ប្រើ​ប្រាស់​មិន​បាន​បន្ទាន់​សម័យ.';
+$lang['%d user was updated.'] = '%d អ្នក​ប្រើ​ប្រាស់​បាន​បន្ទាន់​សម័យ';
+$lang['%d user'] = '%d អ្នក​ប្រើ​ប្រាស់​';
+$lang['%d users deleted'] = 'អ្នក​ប្រើ​ប្រាស់​​ %d បាន​លុប';
+$lang['%d users were not updated.'] = 'អ្នក​ប្រើ​ប្រាស់​ %d មិន​បាន​បន្ទាន់​សម័យ';
+$lang['%d users were updated.'] = 'អ្នក​ប្រើ​ប្រាស់ %d បាន​បន្ទាន់​សម័យ';
+$lang['%d users'] = '%d អ្នក​ប្រើ​ប្រាស់​';
+$lang['%d waiting for validation'] = '%d កំពុង​រង​ចាំ​ការ​បញ្ជាក់​សុពល​ភាព​';
+$lang['%s has been successfully updated.'] = '%s បាន​បន្ទាន់​សម័យ​ដោយ​ជោគ​ជ័យ​';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s ត្រូវ​តែប្តូរ​ទៅ false ក្នុង​ទី​តាំង​ local/config/config.inc.php';
+$lang['%s photos can not be regenerated'] = '%s រូប​ថត​មិន​អាច​កែ​ប្រែ​ឡើង​វិញ';
+$lang['%s photos have been regenerated'] = '%s រូប​ថត​បាន​កែ​ប្រែ​ឡើង​វិញ​';
+$lang['%s value is not correct file because exif are not supported'] = '%s តំលៃមិន​ត្រឹម​ត្រូវ​ ព្រោះ exif ពុំ​ត្រឹម​ត្រូវ​';
+$lang['(this tag will be deleted)'] = '(ស្លាក​នេះនឹង​ត្រូវ​លុប)';
+$lang[', click on'] = ', ចុច​លើ​';
+$lang['A new version of Piwigo is available.'] = 'កំណែ​ប្រែ​ថ្មីនៃ Piwigo អាច​ស្វែង​រក​សំរាប់​ប្រើ​ប្រាស់​បាន​';
+$lang['Access type'] = 'ប្រភេ​ទ​នៃការ​ចូល​';
+$lang['Action'] = 'សកម្មភាព​';
+$lang['Actions'] = 'សកម្ម​ភាព​';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activate icon "ថ្មី​" បន្ទាប់​ពី​សៀវ​ភៅ​រូប​ថត​និង​រូប​ភាព​';
+$lang['Activate icon "%s"'] = 'ដាក់​ឲ្យ​តំ​ណើរ​ការ​រូប​តំណាង​ "%s"';
+$lang['Activate Navigation Bar'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​ផ្ទាំង​បង្ហាញផ្លូវ​';
+$lang['Activate Navigation Thumbnails'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​រូប​បង្ហាញ់​ផ្លូវ';
+$lang['Activate comments'] = 'ដាក់​ឲ្យ​ដំណើរ​ការ​មតិ';
+$lang['Activate'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​';
+$lang['Active Languages'] = 'តំណើរ​ការ​ភាសា​';
+$lang['Active Plugins'] = 'ដំណើរ​ការ​ Plugins';
+$lang['Active Themes'] = 'ដំណើរ​ការ​ Themes';
+$lang['Add a criteria'] = 'បន្ថែម​លក្ខណៈ​វិនិច្ឆ័យ​មួយ​';
+$lang['Add a filter'] = 'បន្ថែម​តំរង​មួយ​';
+$lang['Add a tag'] = 'បន្ថែម​ស្លាក​មួយ​';
+$lang['Add a user'] = 'បន្ថែម​អ្នក​ប្រើ​ប្រាស់​មួយ​';
+$lang['Add a virtual album'] = 'បន្ថែម​សៀវ​ភៅ​រូប​ថត​រង​មួយ​';
+$lang['Add detailed content'] = 'បន្ថែម​មាតិកា​លម្អិត​ខ្លះ​ៗ​';
+$lang['Add group'] = 'បន្ថែម​ក្រុម​';
+$lang['Add New Language'] = 'បន្ថែម​ភាសា​ថ្មី​';
+$lang['add new photos to caddie'] = 'បន្ថែម​រូប​ថត​ថ្មី​ទៅក្នុង​ caddie';
+$lang['Add New Theme'] = 'បន្ថែម​ theme ថ្មី​មួយ​';
+$lang['Add Photos'] = 'បន្ថែម​រូប​ថត​ផ្សេង​ទៀត​';
+$lang['Add tags'] = 'បន្ថែម​ស្លាក​ផ្សេង​ទៀត​';
+$lang['Add write access to the "%s" directory'] = 'បន្ថែម​ការ​អនុញ្ញាត​សរសេរ​បន្ថែម​ទៅ​សៀវ​ភៅ​ "%s"';
+$lang['Add'] = 'បន្ថែម​';
+$lang['Add/delete a permalink'] = 'បន្ថែម​/លុប​ permalink មួយ​';
+$lang['added'] = 'បាន​បន្ថែម​';
+$lang['Administration Home'] = 'ទំ​ព័រ​ដើម​អ្នក​គ្រប់​គ្រង​';
+$lang['Advanced features'] = 'លក្ខណៈ​ពិសេស​';
+$lang['Album "%s" has been added'] = 'សៀវ​ភៅ​រូប​ថត​ "%s" ត្រូវ​បាន​បន្ថែម​';
+$lang['Album list management'] = 'រៀ​ប​ចំ​តារាង​សៀវ​ភៅ​រូប​ថត​';
+$lang['Album manual order was saved'] = 'តំរៀប​សៀវ​ភៅ​រូប​ថត​ដោយ​ដៃ​ត្រូវ​បាន​រក្សា​ទុក​';
+$lang['Album photos associated to the following albums: %s'] = 'រូប​ថត​ទាំង​នេះ​មាន​ទំនាក់​ទំនង​ទៅ​នឹង​សៀវ​ភៅ​រូប​ថត​ទាំង​នេះ: %s';
+$lang['Album updated successfully'] = 'សៀវ​ភៅ​រូប​ថត​បាន​កែ​លំ​អ​​ជោគ​ជ័យ​';
+$lang['albums added in the database'] = 'សៀវ​ភៅ​រូប​ថត​បាន​បញ្ចូល​ទៅ​ក្នុង​ database';
+$lang['Albums authorized thanks to group associations'] = 'សៀវ​ភៅ​រូប​ថត​បាន​អនុញ្ញាត​ អរគុណ​ដល់​សមាជិក​ក្រុម​';
+$lang['Albums automatically sorted'] = 'សៀវ​ភៅ​រូប​ថត​បាន​តំ​រៀប​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['albums deleted in the database'] = 'សៀវ​ភៅ​រូប​ថត​បាន​លុប​ចេញ​ពី​ database';
+$lang['All extensions are up to date.'] = 'Extensions ទាំង​អស់​ទាន់​សម័យ';
+$lang['All languages are up to date.'] = 'ភាសាទាំង​អស់​ទាន់​សម័យ​';
+$lang['All optimizations have been successfully completed.'] = 'ដំណើរ​ការ​ទាំង​អស់​បាន​បញ្ចប់​ដោយ​ជោគ​ជ័យ​';
+$lang['All plugins are up to date.'] = 'Plugins ទាំង​អស់​ទាន់​សម័យ​';
+$lang['All themes are up to date.'] = 'Themes ទាំង​អស់​ទាន់​សម័យ';
+$lang['all'] = 'ទាំង​អស់​';
+$lang['Allow rating'] = 'អនុ​ញ្ញាត​ឲ្យ​វាយ​តម្លៃ​';
+$lang['Allow user customization'] = 'អនុញ្ញាតឲ្យ​អ្នក​ប្រើ​ប្រាស់​ធ្វើ​ការ​កែ​ប្រែ​';
+$lang['Allow user registration'] = 'អនុញ្ញាត​ឲ្យ​មាន​ការ​ចុះ​ឈ្មោះ​ប្រើ​ប្រាស់​';
+$lang['Allow users to delete their own comments'] = 'អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ប្រាស់​លុប​មតិ​របស់​ខ្លួន​ឯង​';
+$lang['Allow users to edit their own comments'] = 'អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ប្រាស់​កែ​ប្រែ​មតិ​របស់​ខ្លួន​ឯង​';
+$lang['an error happened'] = 'មាន​កំហុស​ឆ្គង​មួយ​បាន​កើត​ឡើង​';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'មាន​កំហុស​មួយ​បាន​កើត​ឡើង​កំឡុង​ពេល​ចម្លង​ចេញ​។ សូម​ពិនិត្យ​មើល​​សិទ្ធិ​​ដែល​បាន​ផ្តល់​ឲ្យ​ នៃ​ការ​តំឡើង Piwigo របស់​អ្នក​។<br><a href="%s">ចុច​ត្រង់​នេះ​ដើម្បី​បង្ហាញ​ log error</a>.';
+$lang['An error has occured during upgrade.'] = 'មាន​កំហុស​មួយ​កើត​ឡើង​ក្នុងខណៈ​​ពេល​បន្ទាន់​សម័យ';
+$lang['An error occured during extraction (%s).'] = 'មាន​កំហុស​មួយ​កើត​ឡើង​ក្នុង​ខណៈ​ពេល​ឯកសារ​ (%s) កំពុង​ចំលង​ចេញ​';
+$lang['An information email was sent to group "%s"'] = 'អ៊ី​ម៉ែល​ព័តមាន​​បាន​ផ្ញើ​ទៅ​កាន់​ក្រុម​ "%s"';
+$lang['and'] = 'ហើយ​និង';
+$lang['Anomaly'] = 'ខុស​ប្រក្រតី';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'យ៉ាង​ណា​មិញ​ មាន​តែ webmasters ដែល​អាច​មើល​ឃើញ​ផ្ទាំង​នេះ, មិនមាន​ administrators';
+$lang['Apply action'] = 'ដំណើរ​ការ​សកម្មភាព​';
+$lang['Apply selected corrections'] = 'ដំណើរ​ការ​កំណែរ​ប្រែ​ដែល​បាន​ជ្រើស​រើស​';
+$lang['Apply to sub-albums'] = 'ដំណើរ​​ការ​ទៅ​កាន់​សៀវ​ភៅ​រូប​ថត​រង​';
+
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo សំរាប់​ Android</em> ធ្វើ​ឲ្យលោក​អ្នក​អាច​ភ្ជាប់​ទូរស័ព្វ​ Android របស់​អ្នក ឬ​ក៏ Table ទៅកាន់​ Piwigo gallery របស់​អ្នក​​ ដែលលោក​​អ្នក​អាច​បង្កើត​សៀវភៅ​រូប​ថត ហើយ​ ដាក់បញ្ចូល​នូវ​រូប​ថត​ជា​ច្រើន​ក្នុង​ពេល​តែ​មួយ។';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo សំរាប់​ iOS</em> ធ្វើ​ឲ្យលោក​​អ្នក​អាច​ភ្ជាប់ទៅកាន់​ Piwigo gallery របស់​អ្នក​ពី​ទូរស័ព្វ iPhone, iPad ឬ iPod Touch របស់​អ្នក ដែលលោក​អ្នក​អាច​បង្កើត​សៀវភៅ​រូប​ថត ហើយ​ ដាក់បញ្ចូល​នូវ​រូប​ថត​ជា​ច្រើន​ក្នុង​ពេល​តែ​មួយ។';
+$lang['%d day'] = '%d ថ្ងៃ';
+$lang['%d days'] = '%d ថ្ងៃ';
+$lang['%d hour'] = '%d ម៉ោង';
+$lang['%d hours'] = '%d ម៉ោង';
+$lang['%d minute'] = '%d នាទី';
+$lang['%d minutes'] = '%d នាទី';
+$lang['%d month'] = '%d ខែ';
+$lang['%d months'] = '%d ខែ';
+$lang['%d second'] = '%d វិនាទី';
+$lang['%d seconds'] = '%d វិនាទី';
+$lang['%d week'] = '%d សប្តាហ៍';
+$lang['%d weeks'] = '%d សប្តាហ៍';
+$lang['%d year'] = '%d ឆ្នាំ';
+$lang['%d years'] = '%d ឆ្នាំ';
+$lang['%s ago'] = '%s កន្លងទៅ';
+$lang['%s in the future'] = '%s ក្នុង​ពេល​ខាងមុខ';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u អ្នកប្រើប្រាស់​ទាំងនេះ​មានការអនុញ្ញាត​ដោយ​ស្វ័យ​ប្រវត្តិ​ ពីព្រោះ​ពួកគេ​ស្ថិត​ក្នុង​ក្រុម​ដែល​បាន​ផ្តល់​សិទ្ធអនុញ្ញាត​រួច​ហើយ។';
+?>
Index: /tags/2.6.0RC1/language/km_KH/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/km_KH/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/km_KH/common.lang.php	(revision 25596)
@@ -0,0 +1,413 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: ភាសាខ្មែរ [KH]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=579
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "ភាសាខ្មែរ​";
+$lang_info['country'] = "ប្រទេសកម្ពុជា";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "en";
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d សៀវ​ភៅ​រូប​ថត​បាន​អាប់​ដែត​';
+$lang['%d albums updated'] = '%d សៀវ​ភៅ​រូប​ថត​ជា​ច្រើន​បាន​អាប់​ដែត​';
+$lang['%d comment to validate'] = '%d បញ្ចេញ​មតិដើម្បី​បញ្ជាក់​';
+$lang['%d comment'] = '%d បញ្ចេញមតិ';
+$lang['%d comments to validate'] = '%d បញ្ចេញ​មតិ​ផ្សេងៗ​ដើម្បី​បញ្ជាក់​';
+$lang['%d comments'] = '%d មតិ​ផ្សេងៗ';
+$lang['%d hit'] = '%d ដង';
+$lang['%d hit'] = '%d ចុច';
+$lang['%d hits'] = '%d ដង';
+$lang['%d Kb'] = '%d​ Kb';
+$lang['%d new comment'] = '%d មតិ​ថ្មី​';
+$lang['%d new comments'] = '%d មតិ​ថ្មីៗ​';
+$lang['%d new photo'] = '%d រូបថត​ថ្មី​';
+$lang['%d new photos'] = '%d រូប​ថត​ថ្មីៗ';
+$lang['%d new user'] = '%d អ្នក​ប្រើ​ប្រាស់​ថ្មី​';
+$lang['%d new users'] = '%d ​អ្នក​ប្រើ​ប្រាស់​ថ្មី​ច្រើន​នាក់​';
+$lang['%d rates'] = '%d ការ​វាយ​តម្លៃ​ទាំង​ឡាយ​';
+$lang['About'] = 'អំពីវិបសាយ';
+$lang['All tags'] = 'ស្លាក​ទាំងអស់';
+$lang['Any tag'] = 'ស្លាក​ផ្សេង​ទៀត​';
+$lang['At least one listed rule must be satisfied.'] = 'យ៉ាងហោច​ណាស់​​បញ្ជីអត្ថបទ​មួយ​ត្រូវ​​ធ្វើ​ឲ្យ​បាន​ត្រឹម​ត្រូវ​សិន';
+$lang['Author'] = 'ម្ចាស់​រូប​ថត';
+$lang['Albums'] = 'សៀវ​ភៅ​រូប​ថត​ទាំងអស់';
+$lang['Album'] = 'សៀវ​ភៅ​រូប​ថត​';
+$lang['Close this window'] = 'បិទ​ផ្ទាំង​មួយ​នេះ';
+$lang['Confirm Password'] = 'បញ្ជាក់​អក្សរ​សម្ងាត់​';
+$lang['Connection settings'] = 'ការ​កំណត់​បណ្តាញ​ភ្ជាប់​';
+$lang['Login'] = 'ចូល';
+$lang['Contact webmaster'] = 'ទំនាក់ទំនង អ្នកជំនាញ​ខាងវិបសាយ​';
+$lang['Create a new account'] = 'បង្កើត​គណនី​ថ្មី';
+$lang['Created on'] = 'បាន​បង្កើត​នៅ​​';
+$lang['Creation date'] = 'ថ្ងៃ​ដែល​បាន​​បង្កើត​';
+$lang['Current password is wrong'] = 'អក្សរ​សម្ងាត់​​នេះ​ខុស​';
+$lang['Dimensions'] = 'ទំហំ';
+$lang['Display'] = 'បង្ហាញ';
+$lang['Each listed rule must be satisfied.'] = 'គ្រប់​បញ្ជីអត្ថបទ​ទាំង​អស់​ត្រូវ​តែធ្វើ​ឲ្យ​បាន​ត្រឹម​ត្រូវ​សិន';
+$lang['Email address'] = 'អាស័យដ្ឋាន​អេឡិច​ត្រូ​និច​';
+$lang['Enter your personnal informations'] = 'បញ្ចូល​ពត៌​មាន​ផ្ទាល់​ខ្លួន​របស់​អ្នក​';
+$lang['Error sending email'] = 'មាន​បញ្ហា​កើត​ឡើង​ពេល​កំពុង​ផ្ញើ​សារ​អេ​ឡិច​ត្រូនិច';
+$lang['File name'] = 'ឈ្មោះ​ឯកសារ';
+$lang['File'] = 'ឯកសារ​';
+$lang['Filesize'] = 'ទំហំ​ឯកសារ';
+$lang['Filter and display'] = 'ច្រោះយក​ និង​ បង្ហាញ';
+$lang['Filter'] = 'ច្រោះ​យក​';
+$lang['Forgot your password?'] = 'ភ្លេច​អក្សរ​សម្ងាត់​របស់​អ្នក?';
+$lang['Go through the gallery as a visitor'] = 'ចូលក្នុង​វិចិត្រ​សាល​ក្នុង​នាម​ជា​ភ្ញៀវ';
+$lang['Help'] = 'ជំនួយ';
+$lang['Identification'] = 'អត្ត​សញ្ញាណ​';
+$lang['Photos only RSS feed'] = 'រូប​ភាព​សំរាប់​តែ RSS feed';
+$lang['Keyword'] = 'ពាក្យ​គន្លឹះ';
+$lang['Links'] = 'តំណភ្ជាប់​ជាច្រើន';
+$lang['day'][0] = "ថ្ងៃ​អាទិត្យ";
+$lang['day'][1] = "ថ្ងៃ​ច័ន្ទ";
+$lang['day'][2] = "ថ្ងៃ​អង្គារ";
+$lang['day'][3] = "ថ្ងៃ​ពុធ";
+$lang['day'][4] = "ថ្ងៃ​ព្រហស្បត្តិ៍";
+$lang['day'][5] = "ថ្ងៃ​សុក្រ";
+$lang['day'][6] = "ថ្ងៃ​​សៅរ៍";
+$lang['month'][10] = "ខែ​តុលា​";
+$lang['month'][11] = "ខែ​វិច្ឆិកា";
+$lang['month'][12] = "ខែ​ធ្នូ";
+$lang['month'][1] = "ខែ​មករា";
+$lang['month'][2] = "ខែ​កុម្ភះ";
+$lang['month'][3] = "ខែ​មិនា";
+$lang['month'][4] = "ខែ​មេសា";
+$lang['month'][5] = "ខែ​ឧសភា";
+$lang['month'][6] = "ខែ​​មិថុនា";
+$lang['month'][7] = "ខែ​កក្តដា";
+$lang['month'][8] = "ខែ​សីហា";
+$lang['month'][9] = "ខែ​កញ្ញា";
+$lang['Delete'] = 'លុប';
+$lang['descending'] = 'តាម​លំដាប់​ចុះ';
+$lang['Download'] = 'ទាញ​យក​';
+$lang['Download this file'] = 'ទាញ​យក​ឯកសារ​នេះ​';
+$lang['edit'] = 'កែ​ប្រែ​';
+$lang['wrong date'] = 'ខុស​ថ្ងៃ​ខែ​';
+$lang['excluded'] = 'បាន​ដក​ចោល​';
+$lang['Your favorites'] = 'ចំណង់​ចំណូល​ចិត្ត​របស់​អ្នក​';
+$lang['display your favorites photos'] = 'បង្ហាញ​រូប​ភាព​ដែល​អ្នក​ចូល​ចិត្ត​ទាំង​អស់';
+$lang['Favorites'] = 'ចំណូលចិត្ត​';
+$lang['First'] = 'ដំបូង​';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'វិចិត្រសាលបាន​បិទ​មិនឲ្យ​មាន​ការ​ជួស​ជុល​ទេ។ សូម​ព្យា​យាម​លើក​ក្រោយ​ទៀត។';
+$lang['Page generated in'] = 'ទំព័រ​បាន​បង្កើត​ក្នុង​';
+$lang['guest'] = 'ភ្ញៀវ';
+$lang['Hello'] = 'សួរស្តី';
+$lang['Notification'] = 'ការ​ជូន​ដំណឹង';
+$lang['Number of items'] = 'ចំនួន​នៃ​ធាតុ​';
+$lang['Original dimensions'] = 'ទំហំ​ដើម';
+$lang['Password forgotten'] = 'ភ្លេច​អក្សរ​សម្ងាត់​';
+$lang['Password'] = 'អក្សរ​សម្ងាត់​';
+$lang['Post date'] = 'ថ្ងៃ​ដាក់​ផ្សាយ​ប្រ​កាស​';
+$lang['Posted on'] = 'បាន​ផ្សាយ​ប្រកាសនៅ​ថ្ងៃ';
+$lang['Profile'] = 'គណនី';
+$lang['Quick connect'] = 'ភ្ជាប់​រហ័ស';
+$lang['RSS feed'] = 'RSS ព័ត៌មានផ្តល់មក​វិញ​';
+$lang['Rating score'] = 'ពិន្ទុ​នៃ​ការ​វាយ​តម្លៃ';
+$lang['Register'] = 'ចុះ​ឈ្មោះ';
+$lang['Registration'] = 'ការ​ចុះ​ឈ្មោះ​';
+$lang['Related tags'] = 'ស្លាក​ដែល​ទាក់​ទង​';
+$lang['Reset'] = 'ដាក់​ឲ្យ​ដូច​ដើម​';
+$lang['Retrieve password'] = 'ទាញ​យក​អក្សរ​សម្ងាត់​មក​វិញ​';
+$lang['Search rules'] = 'ស្វែងរក​លក្ខណៈ​វិនិច្ឆ័យ';
+$lang['Search tags'] = 'ស្វែងរក​ស្លាក​';
+$lang['Search'] = 'ស្វែង​រក​';
+$lang['display available tags'] = 'បង្ហាញ​ស្លាក​ទំនេរ​';
+$lang['Sort by'] = 'តម្រៀប​តាម​​';
+$lang['Sort order'] = 'តម្រៀប​តាម​លំដាប់​';
+$lang['Tag'] = 'ស្លាក​';
+$lang['Tags'] = 'ស្លាក';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = ' RSS ផ្តល់​ពត៌​មាន​​ទាំង​ឡាយ​ដែល​ជា​ ​ដំណឹង​នៃព្រឹត្តិការណ៍​ថ្មី​ៗ​ដែល​មាន​នៅ​លើ​គេហទំព័រ​មួយ​នេះដូចជា៖ ពេល​មាន​រូប​ថត​ថ្មីៗ ការ​កែ​ប្រែ​សៀវ​ភៅ​រូប​ថត​ថ្មី​ៗ​ មតិថ្មីៗ។ ដើម្បី​ប្រើ​ RSS ផ្តល់​ពត៌​មាន​សំរាប់​អ្នក​អាន​';
+$lang['Unknown feed identifier'] = 'មិន​ស្គាល់អ្វី​សំរាប់​​បង្ហាញ​ពត៌​មាន​មក​វិញ';
+$lang['User comments'] = 'មតិ​អ្នក​ប្រើ​ប្រាស់​';
+$lang['Username'] = 'ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​';
+$lang['Visits'] = 'ចូល​';
+$lang['Webmaster'] = 'ប្រធាន​បណ្តាញ';
+$lang['Week %d'] = 'សប្តាហ៍ %d';
+$lang['About Piwigo'] = 'អំពី Piwigo';
+$lang['You are not authorized to access the requested page'] = 'អ្នក​មិន​អនុញ្ញាតឲ្យ​ចូល​ទៅ​កាន់​ទំព័រ​នេះ​ទេ';
+$lang['add this photo to your favorites'] = 'ដាក់​រូប​ថត​នេះ​ទៅ​កាន់​ទី​តាំង​​ដែល​អ្នក​ចូល​ចិត្ត​';
+$lang['Administration'] = 'អ្នក​គ្រប់​គ្រង';
+$lang['all'] = 'ទាំង​អស់​';
+$lang['ascending'] = 'តាម​លំដាប់​កើន​';
+$lang['author(s) : %s'] = 'ក្រុម​អ្នក​និ​ពន្ធ​ : %s';
+$lang['Expand all albums'] = 'ពង្រីក​សៀវ​ភៅ​រូប​ថត​ទាំង​អស់​';
+$lang['posted after %s (%s)'] = 'បាន​ផ្សាយ​ប្រ​កាស​បន្ទាប់​ពី %s (%s)';
+$lang['posted before %s (%s)'] = 'បាន​ផ្សាយ​ប្រកាស​មុន​ពេល​ %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'បាន​ផ្សាយ​ប្រ​កាស​ចន្លោះ %s (%s) និង %s (%s)';
+$lang['posted on %s'] = 'បានផ្សាយ​​ប្រ​កាសលើ​ %s';
+$lang['Best rated'] = 'ការ​វាយ​តម្លៃ​ល្អ​ជាង​គេ​';
+$lang['display best rated photos'] = 'បង្ហាញ​រូ​ប​ថត​ដែល​បាន​វាយ​តម្លៃ​ខ្ពស់​ជាង​គេ';
+$lang['Calendar'] = 'ប្រតិទិន';
+$lang['All'] = 'ទាំង​អស់';
+$lang['display each day with photos, month per month'] = 'បង្ហាញ​រាល់​ថ្ងៃ​នូវ​រូប​ថត​ ក្នុង​មួយ​ខែ​ៗ​';
+$lang['View'] = 'បើកមើល';
+$lang['chronology_monthly_calendar'] = 'ប្រតិទិន​ប្រ​ចាំ​ខែ​';
+$lang['chronology_monthly_list'] = 'តារាង​ប្រ​ចាំ​ខែ​';
+$lang['chronology_weekly_list'] = 'តារាង​ប្រ​ចាំ​សប្តាហ៍';
+$lang['Click here if your browser does not automatically forward you'] = '​ចុច​ត្រង់​នេះ​ ប្រ​សិន​បើ​ Browser របស់​អ្នក​មិន​ដំណើរ​កា​រ​ទៅ​មុខ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['comment date'] = 'ថ្ងៃ​​បញ្ចេញ​មតិ​';
+$lang['Comment'] = 'មតិ';
+$lang['Your comment has been registered'] = 'មតិ​របស់​អ្នក​បាន​ដាក់​បញ្ចូល​';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'ប្រ​ព័ន្ធ Anti-flood: សូម​រង​ចាំ​មួយ​ភ្លេត​ មុន​ពេលទៅ​បញ្ចេញ​មតិ​មួយ​ផ្សេង​ទៀត​';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'មតិ​របស់​អ្នក​មិន​ត្រូវ​បាន​បញ្ចូល​ទេ ព្រោះវា​មិន​ត្រឹម​ត្រូវ​តាម​ការ​កំណត់​';
+$lang['An administrator must authorize your comment before it is visible.'] = 'អ្នក​គ្រប់​គ្រង​ត្រូវ​តែ​ផ្តល់​សិទ្ធិ​ជាមុន​លើ​មតិ​របស់​អ្នក​​ មុន​ពេល​វា​អាច​បង្ហាញ​';
+$lang['This login is already used by another user'] = 'ឈ្មោះ​នេះ​ត្រូវ​បាន​ប្រើ​ដោយ​អ្នក​ប្រើ​ប្រាស់​ម្នាក់​រួច​ហើយ';
+$lang['Comments'] = 'មតិ​';
+$lang['Add a comment'] = 'បញ្ចូល​មតិ';
+$lang['created after %s (%s)'] = 'បានបង្កើត​បន្ទាប់​ពី​ %s (%s)';
+$lang['created before %s (%s)'] = 'បាន​បង្កើត​មុន​ពេល​ %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'បាន​បង្កើត​ចន្លោះ %s (%s) និង %s (%s)';
+$lang['created on %s'] = 'បាន​បង្កើត​នៅ​ %s';
+$lang['Customize'] = 'រៀប​ចំ​កែ​សំរួល​';
+$lang['Your Gallery Customization'] = 'ការ​កែ​ប្រែ​សៀវ​ភៅ​រូប​ថត​របស់​អ្នក​';
+$lang['Default'] = 'លំនាំដើម​';
+$lang['delete this photo from your favorites'] = 'លុប​រូ​ប​ថត​នេះ​ចេញពី​ចំណូល​ចិត្ត​របស់​អ្នក​';
+$lang['available for administrators only'] = ' សំរាប់​តែ​អ្នក​គ្រប់​គ្រង​ប៉ុណ្ណោះ​';
+$lang['display this album'] = 'បង្ហាញ​សៀវ​ភៅ​រូប​ថត​នេះ​';
+$lang['display last user comments'] = 'បង្ហាញ​មតិ​របស់​អ្នក​ប្រើ​ប្រាស់​ចុង​ក្រោយ​';
+$lang['customize the appareance of the gallery'] = 'កែ​សំរួល​ទំរង់​បង្ហាញ​នៃ​វិចិត្រ​សាល​';
+$lang['search'] = 'ស្វែង​រក​';
+$lang['Home'] = 'ទំព័រ​ដើម​';
+$lang['in this album'] = 'ក្នុង​សៀវ​ភៅ​រូប​ថត​នេះ​';
+$lang['in %d sub-album'] = 'ក្នុង​ %d សៀវ​ភៅ​រូប​ថត​រង​';
+$lang['in %d sub-albums'] = 'ក្នុង​ %d សៀវ​ភៅ​រូប​ថត​រង​';
+$lang['included'] = 'បាន​បញ្ចូល​ក្នុង​';
+$lang['Invalid password!'] = 'អក្សរ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ​ទេ​';
+$lang['Language'] = 'ភាសា';
+$lang['last %d days'] = ' %d ថ្ងៃ​ចុង​ក្រោយ​';
+$lang['Last'] = 'ចុង​ក្រោយ​';
+$lang['Logout'] = 'ចាក​ចេញ​';
+$lang['Since'] = 'តាំងពី';
+$lang['obligatory'] = 'ដែល​ចាំ​បាច់​';
+$lang['Maximum photo height'] = 'កំពស់​វែង​បំផុត​នៃរូប​ថត​';
+$lang['Maximum height must be a number superior to 50'] = 'កំពស់​វែង​បំ​ផុត​ត្រូវ​តែ​ជា​លេខ​ដែល​មាន​តំលៃ​ធំ​ជាង​ ៥០';
+$lang['Maximum photo width'] = 'ទទឹង​វែង​បំ​ផុត​នៃ​រូប​ថត​';
+$lang['Maximum width must be a number superior to 50'] = 'ទទឹង​វែង​បំផុត​ត្រូវ​តែ​ជា​លេខ​មាន​តំលៃធំជាង​ ៥០';
+$lang['display a calendar by creation date'] = 'បង្ហាញ​ប្រតិទិន​​​ដោយ​ពិនិត្យ​តាម​ថ្ងៃ​បង្កើត​';
+$lang['display all photos in all sub-albums'] = 'បង្ហាញ​រូប​ថត​ទាំង​អស់​ដែល​មាន​នៅ​ក្នុង​សៀវ​ភៅ​រូប​ថត​រងទាំង​ឡាយ';
+$lang['return to normal view mode'] = 'ត្រឡប់​ទៅ​ការ​បង្ហាញ​បែប​សាមញ្ញ​';
+$lang['display a calendar by posted date'] = 'បង្ហាញ​ប្រតិទិន​ដោយ​ពិនិត្យ​តាម​ថ្ងៃ​ដែល​បាន​ប្រ​កាស​';
+$lang['Most visited'] = 'ទស្សនា​ច្រើន​ជាង​គេ​បំផុត​';
+$lang['display most visited photos'] = 'បង្ហាញ​រូប​ដែល​បាន​ទស្សនា​ច្រើ​ន​ជាង​គេ';
+$lang['The number of photos per page must be a not null scalar'] = 'ចំនួន​នៃ​រូប​ថត​ក្នុង​មួយ​ទំព័រ​ត្រូវ​តែ​ជា​ចំនួន​គត់​មិន​សូន្យ​';
+$lang['Number of photos per page'] = 'ចំនួន​រូប​ថត​ក្នុង​មួយ​ទំព័រ';
+$lang['Unknown identifier'] = 'មិន​ស្គាល់​អត្ត​សញ្ញាណ​';
+$lang['New password'] = 'អក្សរ​សម្ងាត់​ថ្មី​';
+$lang['Rate this photo'] = 'វាយ​តម្លៃ​រូប​ថត​នេះ​';
+$lang['Next'] = 'បន្ទាប់​';
+$lang['no rate'] = 'មិន​មាន​ការ​វាយ​តម្លៃ​';
+$lang['Photos posted within the last %d day.'] = 'រូប​ថត​ដែល​បាន​ដាក់​នៅ​រយះ​ពេល​ %d ថ្ងៃ​ប៉ុណ្ណោះ';
+$lang['Photos posted within the last %d days.'] = 'រូប​ថត​ដែល​បាន​ដាក់​នៅ​រយះ​ពេល​ %d ថ្ងៃ​ប៉ុណ្ណោះ';
+$lang['password updated'] = 'អក្សរ​សម្ងាត់​បាន​កែ​ប្រែ​';
+$lang['Recent period must be a positive integer value'] = 'ចន្លោះពេល​ថ្មីៗ​ត្រូវ​តែ​ជា​ចំនួន​គត់​វិជ្ជមាន​';
+$lang['photo'] = 'រូប​ថត​';
+$lang['Click on the photo to see it in high definition'] = 'ចុច​លើ​រូប​ថត​ដើម្បី​មើល​វា​ក្នុង​កំរិត​កាន់​តែ​ច្បាស់​';
+$lang['Show file metadata'] = 'បង្ហាញ​ឯកសារ​ metadata';
+$lang['Powered by'] = 'ដាក់​ឲ្យ​ប្រើ​ប្រាស់​ដោយ​';
+$lang['Preferences'] = 'ចូល​ចិត្ត​ជាង​';
+$lang['Previous'] = 'មុន​';
+$lang['Random photos'] = 'រូប​ភាព​ចៃ​ដន្យ​';
+$lang['display a set of random photos'] = 'បង្ហាញ​សំណុំ​នៃ​រូប​ភាព​ចៃ​ដន្យ​';
+$lang['Recent albums'] = 'សៀវភៅ​រូប​ថត​ថ្មី​ៗ';
+$lang['display recently updated albums'] = 'បង្ហាញ​សៀវ​ភៅ​រូប​ថត​ទើប​កែ​ប្រែ​ថ្មី​ៗ';
+$lang['Recent period'] = 'រយះ​ពេល​ថ្មីៗ';
+$lang['Recent photos'] = 'រូប​ថត​ថ្មីៗ';
+$lang['display most recent photos'] = 'បង្ហាញ​រូប​ថត​ថ្មីៗ​បំផុត​';
+$lang['Redirection...'] = 'កំពុង​ភ្ជាប់​ទៅ​...';
+$lang['Please, enter a login'] = 'សូម​ភ្ជាប់​ចូល​ក្នុង​ប្រព័ន្ធ​';
+$lang['login mustn\'t end with a space character'] = 'ការ​ភ្ជាប់​ចូល​ត្រូវ​តែ ​មិន​បញ្ចប់​ដោយ​មានដក​ឃ្លា​នៅ​ខាង​ក្រោយ​ទេ​';
+$lang['login mustn\'t start with a space character'] = 'ការ​ភ្ជាប់​ចូល​ត្រូវ​តែ​ មិន​ចាប់​ផ្តើម​ជាមួយ​ដក​ឃ្លា​';
+$lang['this login is already used'] = 'ការ​ភ្ជាប់​ចូល​ជាមួយ​ឈ្មោះ​នេះ​ បាន​ប្រើ​ប្រាស់​រួច​ហើយ';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'អាស័យដ្ឋាន​សារ​អេឡិច​ត្រូនិច​ត្រូវ​តែ​ក្នុង​ទំ​រង់​ xxx@yyy.eee (example : jack@altern.org)';
+$lang['Auto login'] = 'ភ្ជាប់​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ';
+$lang['remove this tag from the list'] = 'លុបស្លាក​នេះ​ចេញ​ពី​តារាង​';
+$lang['representative'] = 'រូប​ជា​គំរប​នៃ​សៀវ​ភៅ​រូប​ថត​';
+$lang['Search for Author'] = 'ស្វែង​រក​អ្នក​និ​ពន្ធ​ម្នាក់​';
+$lang['Search in albums'] = 'ស្វែង​រក​ក្នុង​សៀវ​ភៅ​រូប​ថត​';
+$lang['Search by date'] = 'ស្វែង​រក​តាម​រយះ​ថ្ងៃ​ខែ';
+$lang['Date'] = 'ថ្ងៃ​ខែ';
+$lang['End-Date'] = 'ថ្ងៃ​ខែ​បញ្ចប់​';
+$lang['Kind of date'] = 'ប្រ​ភេទ​នៃ​ពេល​វេលា​';
+$lang['Search for words'] = 'ស្វែង​រក​ពាក្យ​';
+$lang['Search for all terms'] = 'ស្វែង​រក​​ពាក្យ​ទាំង​អស់​';
+$lang['Search for any term'] = 'ស្វែង​រក​ពាក្យ​ផ្សេង​ៗ';
+$lang['Empty query. No criteria has been entered.'] = 'សំណួរទទេ. គ្មាន​ការ​វិនិច្ឆ័យ​ត្រូវ​បាន​បញ្ចូល';
+$lang['Search results'] = 'លទ្ធ​ផល​នៃ​ការ​ស្វែង​រក';
+$lang['Search in sub-albums'] = 'ស្វែង​រក​ក្នុង​សៀវ​ភៅ​រូប​ថត​រង​ទាំង​អស់​';
+$lang['searched words : %s'] = 'បាន​ស្វែង​រក​ពាក្យ​ : %s';
+$lang['Contact'] = 'ទាក់​ទង​';
+$lang['set as album representative'] = 'ដាក់​ជា​គំរប​សៀវភៅ​រូប​ថត​';
+$lang['Show number of comments'] = 'បង្ហាញ​ចំនួន​មតិ​ទាំង​អស់​';
+$lang['Show number of hits'] = 'បង្ហាញ​ចំនួន​នៃ​ការ​ទស្សនា​ទាំង​អស់​';
+$lang['slideshow'] = 'បង្ហាញ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['stop the slideshow'] = 'បញ្ឈប់​ការ​បង្ហាញ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['Specials'] = 'ពិសេស​';
+$lang['SQL queries in'] = 'SQL queries ក្នុង​';
+$lang['display only recently posted photos'] = 'បង្ហាញ​តែ​រូប​ថត​ដែល​ទើប​បាន​ប្រកាស​ថ្មី​ៗ';
+$lang['return to the display of all photos'] = 'ត្រឡប់​ទៅ​បង្ហាញ​រូប​ថត​ទាំង​អស់​';
+$lang['the beginning'] = 'ចាប់​ផ្តើម​ដំបូង​';
+$lang['Thumbnails'] = 'រូប​គំរប​ផ្ទៃ​លើ​';
+$lang['Menu'] = 'មីនុយ​';
+$lang['A comment on your site'] = 'មតិ​មួយ​នៅ​លើ​ប្រព័ន្ធ​របស់​អ្នក​';
+$lang['today'] = 'ថ្ងៃ​នេះ';
+$lang['Update your rating'] = 'កែ​សំរួល​ជាថ្មី​លើ​ការ​វាយ​តម្លៃ​របស់​អ្នក​';
+$lang['the username must be given'] = 'ឈ្មោះ​សំរាប់​ប្រើ​ប្រាស់​ តម្រូវ​ឲ្យ​ដាក់​';
+$lang['useful when password forgotten'] = 'សំរាប់​ប្រើ​ក្នុង​ករណី​​ភ្លេច​អក្សរ​សម្ងាត់​';
+$lang['Quick search'] = 'ស្វែង​រក​រហ័ស​';
+$lang['Connected user: %s'] = 'អ្នក​ប្រើ​ប្រាស់​ដែល​បាន​ភ្ជាប់​: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Browser: %s';
+$lang['Author: %s'] = 'អ្នក​និ​ពន្ធ​: %s';
+$lang['Comment: %s'] = 'មតិ: %s';
+$lang['Comment by %s'] = 'មាន​មតិ​ដោយ​ %s';
+$lang['User: %s'] = 'អ្នក​ប្រើ​ប្រាស់​: %s';
+$lang['Email: %s'] = 'សារ​អេ​ឡិច​ត្រូ​និច​: %s';
+$lang['Admin: %s'] = 'អ្នក​គ្រប់​គ្រង​: %s';
+$lang['Registration of %s'] = 'ការ​ចុះ​ឈ្មោះ​នៃ​ %s';
+$lang['Album: %s'] = 'សៀវ​ភៅ​រូប​ថត​: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'ប្រភេទ​អាក្រក់​សំរាប់​អ្នក​ប្រើ​ប្រាស់​ជា "ភ្ញៀវ", ប្រភេទ​​បែប​លំនាំ​ដើម​នឹង​ត្រូវ​យក​មក​ប្រើវិញ​។ សូម​ផ្តល់​ដំណឹង​ដល់​ប្រ​ធាន​បណ្តាញឲ្យ​បាន​ដឹង។';
+$lang['this email address is already in use'] = 'សារអេ​ឡិច​ត្រូ​និច​នេះ​បាន​ប្រើ​ប្រាស់​រួច​ហើយ​';
+$lang['Album results for'] = 'លទ្ធផល​សៀវ​ភៅ​រូប​ថត​សំរាប់​';
+$lang['Tag results for'] = 'លទ្ធផល​នៃ​ស្លាក​សំរាប់​';
+$lang['from %s to %s'] = 'ចាប់​ពី %s ទៅ %s';
+$lang['Play of slideshow'] = 'ចាប់​ផ្តើ​ម​បង្ហាញ​រូប​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['Pause of slideshow'] = 'ផ្អាក​​រូប​ដើរ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['Repeat the slideshow'] = 'បង្ហាញ​រូប​ស្វ័យ​ប្រ​វត្តិ​ សារ​ចុះ​ឡើង​​';
+$lang['Not repeat the slideshow'] = 'មិន​បង្ហាញ​រូប​ស្វ័យ​ប្រវត្តិ​ សារ​ចុះ​ឡើង';
+$lang['Reduce diaporama speed'] = 'បន្ថយ​ល្បឿន​រូប​បង្ហាញ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['Accelerate diaporama speed'] = 'បង្កើន​ល្បឿន​រូប​បង្ហាញ​ដោយ​ស្វ័យ​ប្រវត្តិ​';
+$lang['Submit'] = 'ដាក់​សំ​ណើរ​';
+$lang['Yes'] = 'យល់​ព្រម​';
+$lang['No'] = 'ទេ';
+$lang['%d photo'] = '%d រូប​';
+$lang['%d photos'] = '%d រូប​​';
+$lang['%d photo is also linked to current tags'] = '%d រូប​ថត​បាន​ភ្ជាប់​ទៅ​កាន់​ស្លាក​ថ្មី​ៗ​';
+$lang['%d photos are also linked to current tags'] = '%d​ រូប​ថត​បាន​ភ្ជាប់​ទៅ​កាន់​ស្លាក​ថ្មី​ៗ​';
+$lang['display photos linked to this tag'] = 'បង្ហាញ​រូប​ថត​ទាំង​ឡាយ​ដែល​បាន​ភា្ជប់​ទៅ​កាន់​ស្លាក​នេះ​';
+$lang['photos posted during the last %d days'] = 'រូប​ថត​ដែល​បាន​ដាក់​ចូល​ក្នុង​កំឡុង​ពេល​ %d ថ្ងៃ​ចុង​ក្រោយ​';
+$lang['Piwigo Help'] = 'ជំនួយ​ពី Piwigo';
+$lang['Rank'] = 'ជួរ​';
+$lang['group by letters'] = 'ក្រុម​តាម​លំដាប់​អក្សរ';
+$lang['letters'] = 'អក្សរ​';
+$lang['show tag cloud'] = 'បង្ហាញ​​ស្លាកដែល​ពេញ​និយម​​';
+$lang['cloud'] = 'ពពក​';
+$lang['Reset to default values'] = 'កំណត់​ទៅ​​តម្លៃតាម​លំនាំ​​ដើម​វិញ​';
+$lang['delete all photos from your favorites'] = 'លុប​រូប​ថត​ទាំង​អស់​ពី​តារាង​ចំណូល​ចិត្ត​របស់​អ្នក​';
+$lang['Sent by'] = 'បាន​​ផ្ញើរ​ដោយ​';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies បាន​គាំង​ ឬក៏ មិន​ត្រូវ​ជាមួយ browser របស់​លោក​អ្នក​។ លោក​អ្នក​ត្រូវ​តែ​ធ្វើ​ឲ្យ​​ cookies ដំណើរ​ការ​ប្រើ​បាន​ ដើម្បី​ភ្ជាប់​ចូល​។';
+$lang['Edit a comment'] = 'កែ​ប្រែ​មតិ​មួយ​';
+$lang['Are you sure?'] = 'តើ​អ្នក​ប្រា​កដច្បាស់​​ហើយ​ឬ​នៅ​?';
+$lang['(!) This comment requires validation'] = '(!) ការ​ដាក់​មតិ​នេះ​តំរូវ​ឲ្យ​មាន​លក្ខណះ​ត្រឹម​ត្រូវ​';
+$lang['Welcome'] = 'សូម​ស្វាគមន៍';
+$lang['Complete RSS feed (photos, comments)'] = 'បញ្ចូល​ពត៌មាន RSS រួច​រាល់​ (រូបភាព, មតិ)';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'ថ្មីលើ​ %s';
+$lang['Welcome to your Piwigo photo gallery!'] = 'សូម​ស្វា​គមន៍​ការ​មក​កាន់​វិចិត្រសាល​រូបថត​របស់​អ្នក​ក្នុង Piwigo !';
+$lang['... or browse your empty gallery'] = '... ឬក៏ ស្វែង​រក​វិចិត្រសាល​ទទេ​របស់​លោក​អ្នក​';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ឬ សូម​ធ្វើ​ឲ្យ​អសកម្ម​សារ​មួយ​នេះ ខ្ញុំ​នឹង​ស្វែង​រក​វិធី​ផ្សេង​ដោយ​ខ្លួន​ឯង';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'សួរស្តី​ %s, វិចិត្រសាល​រូប​ភាព​ក្នុង​ Piwigo របស់​អ្នក​គឺ​ទទេ!';
+$lang['I want to add photos'] = 'ខ្ញុំ​ចង់​បន្ថែម​រូប​ថត​ផ្សេងៗ​ទៀត​';
+$lang['Manage this user comment: %s'] = 'រៀប​ចំ​មតិ​នៃ​អ្នក​ប្រើ​ប្រាស់​នេះ​: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'សារ​អេឡិចត្រូ​និច​​មិន​មាន​ទេ​, សូមបញ្ជាក់​​ឡើង​វិញ​នូវ​សារ​អេឡិចត្រូនិច​នេះ';
+$lang['This author modified following comment:'] = 'អ្នក​និពន្ធ​នេះ​បាន​កែ​ប្រែ​មតិ​ខាង​ក្រោម​:';
+$lang['This author removed the comment with id %d'] = 'អ្នក​និ​ពន្ធ​នេះ​បាន​ដក​មតិ​ចេញ ដែល​មាន​លេខ​សំគាល់​ %d';
+$lang['html tags are not allowed in login'] = 'ស្លាក​ជាប្រ​ភេទ html មិន​បាន​អនុ​ញ្ញាត​ក្នុង​ការ​ភ្ជាប់​ចូល​ក្នុង​ប្រព័ន្ធទេ';
+$lang['Invalid username or email'] = 'ឈ្មោះ​ប្រើ​ប្រាស់​ ឬ សារអេឡិចត្រូនិច​ មិនត្រឹមត្រូវ​ទេ';
+$lang['Password reset is not allowed for this user'] = 'ការ​កែ​អក្សរ​សម្ងាត់​មិន​បាន​អនុញ្ញាត​សំរាប់​អ្នក​ប្រើ​ប្រាស់​ម្នាក់​នេះទេ';
+$lang['User "%s" has no email address, password reset is not possible'] = 'អ្នក​ប្រើ​ប្រាស់​ឈ្មោះ "%s" មិន​មាន​សារ​អេឡិចត្រូនិច, ការ​កែ​ប្រែអក្សរ​សម្ងាត់​មិន​អាច​ដំណើរ​ការ​ទៅបាន​ទេ';
+$lang['Someone requested that the password be reset for the following user account:'] = 'មាន​អ្នក​ផ្សេង​បាន​ស្នើរ​ឲ្យ​អក្សរ​សម្ងាត់​នោះ​អាច​កែប្រែ​បាន​សំរាប់​អ្នក​ប្រើ​ប្រាស់ដែល​មាន​​គណនី​ដូច​ខាង​ក្រោម​:';
+$lang['Username "%s" on gallery %s'] = 'ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​ "%s" នៅ​លើ​វិចិត្រសាល %s';
+$lang['To reset your password, visit the following address:'] = 'ដើម្បី​កែប្រែ​អក្សរ​សម្ងាត់​របស់​អ្នក​ សូម​ចូល​ទៅកាន់​អាស័យដ្ឋាន​ដូច​ខាង​ក្រោម​:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'ប្រសិន​បើ​នេះជា​កំហុសមួយ គ្រាន់​តែ​ធ្វើ​មិន​ដឹង​មិន​លឺជាមួយ​សារ​អេឡិចត្រូនិច​មួយ​នេះ ហើយ​នឹង​មិន​មាន​អ្វី​កើត​ឡើង​ទេ';
+$lang['Password Reset'] = 'កែប្រែ​អក្សរ​សម្ងាត់​​';
+$lang['Check your email for the confirmation link'] = 'ទៅ​ពិនិត្យ​មើល​សារ​អេឡិច​ត្រូនិច​របស់​អ្នកដើម្បីរក​តំណរភ្ជាប់​ជា​សំអាង​បញ្ជាក់​';
+$lang['Invalid key'] = 'ពាក្យ​គន្លឹះ​មិន​ត្រឹមត្រូវ';
+$lang['The passwords do not match'] = 'អក្សរ​សម្ងាត់​មិន​ត្រូវ​គ្នា​ទេ​';
+$lang['Your password has been reset'] = 'អក្សរ​សម្ងាត់របស់​អ្នក​បាន​កែប្រែ';
+$lang['Return to home page'] = 'ត្រឡប់​ទៅ​ទំព័រដើម​';
+$lang['Please enter your username or email address.'] = 'សូម​បញ្ចូល​ឈ្មោះ​ប្រើ​ប្រាស់​ និង​ សារ​អេឡិចត្រូនិច​របស់​អ្នក';
+$lang['You will receive a link to create a new password via email.'] = 'អ្នក​នឹង​ទទួលបាន​តំណរភ្ជាប់​មួយតាម​រយះ​សារ​អេឡិចត្រូនិច​ ដើម្បី​ទៅ​បង្កើត​អក្សរ​សម្ងាត់​ថ្មី​មួយ​';
+$lang['Username or email'] = 'ឈ្មោះ​ប្រើ​ប្រាស់​ ឬ សារអេឡិចត្រូនិច';
+$lang['Change my password'] = 'ប្តូរ​អក្សរ​សម្ងាត់​របស់​ខ្ញុំ​';
+$lang['Enter your new password below.'] = 'បញ្ចូល​អក្សរសម្ងាត់​ថ្មី​របស់​អ្នក​ខាង​ក្រោម​';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Edit'] = 'កែ​ប្រែ';
+$lang['Hello %s,'] = 'សួរ​ស្តី %s,';
+$lang['Send my connection settings by email'] = 'ផ្ញើ​ការ​ចាត់តាំង​តំណរ​ភ្ជាប់​របស់​ខ្ញុំ​តាម​រយះ​ម៉ែល​';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'ការ​ចុះ​ឈ្មោះទទួល​បាន​ជោគ​ជ័យ បន្តិច​ទៀត​អ្នក​នឹង​ទទួល​​ម៉ែល​មួយ​ជាមួយ​ការ​ចាត់​តាំង​តំណរ​ភ្ជាប់​របស់​អ្នក។ សូម​ស្វា​គមន៍!';
+$lang['Username modification'] = 'កែ​ប្រែឈ្មោះ​ប្រើ​ប្រាស់';
+$lang['Your username has been successfully changed to : %s'] = 'ឈ្មោះ​របស់​អ្នក​​បាន​កែ​ប្រែ​​ទៅ​ជា %s ជោគ​ជ័យ​ហើយ';
+$lang['square'] = 'បួន​ជ្រុង';
+$lang['small'] = 'តូច​';
+$lang['medium'] = 'មធ្យម​';
+$lang['large'] = 'ធំ';
+$lang['Original'] = 'ដើម​';
+$lang['Thank you for registering at %s!'] = 'អរ​គុណ​សំរាប់​ការ​ចុះ​ឈ្មោះ​នៅ​ %s!';
+$lang['Here are your connection settings'] = 'នេះ​ជា​ការ​ចាត់​តាំង​តំណរ​ភ្ជាប់​របស់​អ្នក​';
+$lang['Password: %s'] = 'លេខ​សំ​ងាត់​: %s';
+$lang['Username: %s'] = 'ឈ្មោះ​ប្រើ​ប្រាស់​: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'ប្រ​សិន​បើ​អ្នក​គិត​ថា​ ការ​ទទួល​ម៉ែល​របស់​អ្នក​ជួប​បញ្ហា សូម​ទំនាក់​ទំនង​យើង​តាម​រយះ​ %s';
+$lang['thumb'] = 'រូប​ក្រប​មុខ​';
+$lang['xlarge'] = 'ធំ​ជាង​';
+$lang['xxlarge'] = 'ធំ​បំ​ផុត​';
+$lang['Show oldest comments first'] = 'បង្ហាញ​មតិ​ចាស់​ជាង​គេ ​មុន​គេ';
+$lang['Show latest comments first'] = 'បង្ហាញ​មតិ​ចុង​ក្រោយ​ មុន​គេ';
+$lang['Photo sizes'] = 'ទំហំ​រូប​ថត​';
+$lang['View in'] = 'បង្ហាញ​ក្នុង​';
+$lang['Mobile'] = 'ចល័ត​';
+$lang['2small'] = 'XXS - tiny';
+$lang['xsmall'] = 'XS - តូច​ណាស់';
+$lang['Desktop'] = 'Desktop';
+$lang['File name, A &rarr; Z'] = 'ឈ្មោះ​ឯក​សារ​, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'ឈ្មោះ​ឯក​សារ​, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'ចំណង​ជើង​រូប​ថត​, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'ចំ​ណង​ជើង​រូប​ថត, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'ថ្ងៃ​ដែល​បាន​បង្កើត​, ថ្មី​ &rarr; ចាស់​';
+$lang['Date created, old &rarr; new'] = 'ថ្ងៃ​ដែល​បាន​បង្កើត​, ចាស់​ &rarr; ថ្មី​';
+$lang['Date posted, new &rarr; old'] = 'ថ្ងៃ​ដែល​បាន​ដាក់​ផ្សាយ​, ថ្មី​ &rarr; ចាស់​';
+$lang['Date posted, old &rarr; new'] = 'ថ្ងៃ​ដែល​បាន​ដាក់​ផ្សាយ​, ចាស់​ &rarr; ថ្មី​';
+$lang['Rating score, high &rarr; low'] = 'ពិន្ទុនៃ​ការ​​វាយ​តម្លៃ​, ខ្ពស់​ &rarr; ទាប​';
+$lang['Rating score, low &rarr; high'] = 'ពិន្ទុ​នៃ​ការ​វាយ​តម្លៃ​, ទាប​ &rarr; ខ្ពស់';
+$lang['Visits, high &rarr; low'] = 'ចំនួន​អ្នក​ទស្សនា​, ខ្ពស់​ &rarr; ទាប​';
+$lang['Visits, low &rarr; high'] = 'ចំនួន​អ្នក​ទស្ស​នា​, ទាប​ &rarr; ខ្ពស់​';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'ចំនួន​សំរាប់​សំគាល់​, ១ &rarr; ៩';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'ចំនួន​សំរាប់​សំ​គាល់​, ៩ &rarr; ១';
+$lang['Manual sort order'] = 'តំ​រៀប​ដោយ​ខ្លួន​ឯង​';
+$lang['%d rate'] = '%d វា​យ​តម្លៃ​';
+$lang['Bad request'] = 'ការ​ស្នើរ​សុំ​មិន​ដំណើរ​ការ';
+$lang['Forbidden'] = 'ត្រូវ​បាន​ហាម​ឃាត់';
+$lang['Page not found'] = 'ស្វែង​រក​ទំព័រ​មិន​ឃើញ';
+$lang['Permalink for album not found'] = 'ស្វែង​រក​ Permalink មិនឃើញ';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo បាន​ជួប​បញ្ហា​នៃ​កំហុស​ដែល​មិន​អាច​ដំណើរ​ការ​ឡើង​វិញ​';
+$lang['Requested album does not exist'] = 'ការ​ស្នើ​សុំ​សៀវភៅ​រូប​ថត​មិន​កើត​មាន​';
+$lang['Requested tag does not exist'] = 'ការ​ស្នើ​សុំ​ស្លាក​មិន​កើត​មាន​';
+
+?>
Index: /tags/2.6.0RC1/language/km_KH/index.php
===================================================================
--- /tags/2.6.0RC1/language/km_KH/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/km_KH/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/km_KH/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/km_KH/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/km_KH/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ភាសាខ្មែរ [KH]
Index: /tags/2.6.0RC1/language/kn_IN/about.html
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/about.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>ಈ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) Piwigo ದಿಂದ ರಚನೆಯಾಗಿದೆ</p>
+
+<p>Piwigo ಒಂದು  ಅಂತರ್ಜಾಲದ  ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ತಂತ್ರಾಂಶವಾಗಿದ್ದು, ಆಸಕ್ತ , ಕ್ರಿಯಾಶೀಲ ತಂತ್ರಜ್ಞರು ಹಾಗೂ ಬಳಕೆದಾರರ ಗುಂಪಿನಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ. ವಿಸ್ತರಣಿಕೆಗಳ (Extensions) ಮೂಲಕ ಈ ತಂತ್ರಾಂಶವನ್ನು ಬಹಳ ಸುಲಭವಾಗಿ ಗ್ರಾಹಕಸ್ನೇಹಿಯಾಗಿ ಮಾಡಬಹುದಾಗಿದೆ. ಎಲ್ಲಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ Piwigo ಉಚಿತ ಹಾಗೂ ಓಪನ್ ಸೋರ್ಸ್ ತಂತ್ರಾಂಶವಾಗಿದೆ.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Piwigo ಜಾಲತಾಣಕ್ಕೆ ಭೇಟಿ ಕೊಡಿ</a></p>
Index: /tags/2.6.0RC1/language/kn_IN/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/admin.lang.php	(revision 25596)
@@ -0,0 +1,264 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Manage the members'] = 'ಸದಸ್ಯರನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Manage this set of %d photos'] = ' ಈ %d ಚಿತ್ರಗಳ ಕಟ್ಟನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Maximum file size: %sB.'] = 'ಗರಿಷ್ಠ ಕಡತದ ಗಾತ್ರ  : %sB.';
+$lang['Maximum height'] = 'ಗರಿಷ್ಠ ಎತ್ತರ';
+$lang['Maximum width'] = 'ಗರಿಷ್ಠ ಅಗಲ';
+$lang['Members'] = 'ಸದಸ್ಯರು';
+$lang['Menu Management'] = 'ಆಯ್ಕೆಪಟ್ಟಿಗಳು';
+$lang['Merge selected groups'] = 'ಆರಿಸಿದ ಗುಂಪುಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Maintenance'] = 'ನಿರ್ವಹಣೆ';
+$lang['Make this language available to users'] = 'ಈ ಭಾಷೆಯನ್ನು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿರುವಂತೆ ಮಾಡು';
+$lang['Make this theme available to users'] = 'ಈ ಥೀಮ್ ಅನ್ನು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿರುವಂತೆ ಮಾಡು';
+$lang['Manage'] = 'ನಿರ್ವಹಿಸು';
+$lang['Manage Permissions'] = 'ಅನುಮತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Manage permissions for group "%s"'] = '"%s" ಗುಂಪುಗಳ ಅನುಮತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Manage permissions for user "%s"'] = '"%s" ಬಳಕೆದಾರರ ಅನುಮತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['Manage photos'] = 'ಚಿತ್ರಗಳನ್ನು  ನಿರ್ವಹಿಸಿ';
+$lang['Manage tags'] = 'ಟ್ಯಾಗ್ ಗಳನ್ನು  ನಿರ್ವಹಿಸಿ';
+$lang['List'] = 'ಪಟ್ಟಿ';
+$lang['Local'] = 'ಸ್ಥಳೀಯ';
+$lang['Mail address is obligatory for all users'] = 'ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೂ ಮಿಂಚೆ ವಿಳಾಸ ಖಡ್ಡಾಯ';
+$lang['Mail content'] = 'ಮಿಂಚೆ ವಸ್ತುವಿಷಯ';
+$lang['Mail sent to %s [%s].'] = '%s [%s] ರವರಿಗೆ ಮಿಂಚೆ ಕಳುಹಿಸಲಾಗಿದೆ.';
+$lang['Main'] = 'ಪ್ರಮುಖ';
+$lang['Main "guest" user does not exist'] = 'ಪ್ರಮುಖ "ಅತಿಥಿ" ಬಳಕೆದಾರರು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ';
+$lang['Main "guest" user status is incorrect'] = 'ಪ್ರಮುಖ "ಅತಿಥಿ" ಬಳಕೆದಾರರ ಸ್ಥಿತಿಗತಿ ಸರಿಯಾಗಿಲ್ಲ';
+$lang['Main "webmaster" user does not exist'] = 'ಪ್ರಮುಖ "ವೆಬ್ ಮಾಸ್ಟರ್" ಬಳಕೆದಾರರು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ';
+$lang['Main "webmaster" user status is incorrect'] = 'ಪ್ರಮುಖ "ವೆಬ್ ಮಾಸ್ಟರ್" ಬಳಕೆದಾರರ ಸ್ಥಿತಿಗತಿ ಸರಿಯಾಗಿಲ್ಲ';
+$lang['Main Page'] = 'ಮುಖ ಪುಟ';
+$lang['Language has been successfully installed'] = 'ಭಾಷೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ';
+$lang['Languages'] = 'ಭಾಷೆಗಳು';
+$lang['Languages which need upgrade'] = 'ನವೀಕರಣದ ಅಗತ್ಯವಿರವ ಭಾಷೆಗಳು';
+$lang['Last import'] = 'ಕೊನೆಯ ಆಮದು';
+$lang['Last revisions'] = 'ಕೊನೆಯ ಪರಿಷ್ಕರಣಗಳು';
+$lang['Last send'] = 'ಕೊನೆಯದಾಗಿ ಕಳುಹಿಸಿದ್ದು';
+$lang['Learn more'] = 'ಹೆಚ್ಚು ತಿಳಿಯಿರಿ';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'ಸಂಪರ್ಕಗಳು';
+$lang['Level 2'] = 'ಸ್ನೇಹಿತರು';
+$lang['Level 4'] = 'ಬಳಗ';
+$lang['Level 8'] = 'ನಿರ್ವಹಣೆಗಾರರು';
+$lang['Link all album photos to a new album'] = 'ಎಲ್ಲಾ ಸಂಪುಟದ ಚಿತ್ರಗಳನ್ನು ಹೊಸ ಸಂಪುಟಕ್ಕೆ ಲಿಂಕ್ ಮಾಡಿ';
+$lang['Link all album photos to some existing albums'] = 'ಎಲ್ಲಾ ಸಂಪುಟದ ಚಿತ್ರಗಳನ್ನು ಕೆಲವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪುಟಗಳಿಗೆ ಲಿಂಕ್ ಮಾಡಿ';
+$lang['Linked albums'] = 'ಲಿಂಕ್ ಆದ ಸಂಪುಟಗಳು ';
+$lang['Hoverbox display'] = 'ಹೋವರ್ ಬಾಕ್ಸ್ ಪ್ರದರ್ಶನ';
+$lang['If you encounter problems or have any question, please send a message to'] = 'ನೀವು ತೊಂದರೆಗಳನ್ನು ಎದುರಿಸುತ್ತಿದ್ದಲ್ಲಿ  ಅಥವಾ ನಿಮಗೆ ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳಿದ್ದಲ್ಲಿ, ದಯವಿಟ್ಟು ಅವರಿಗೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಿ';
+$lang['Inactive Languages'] = 'ನಿಷ್ಕ್ರಿಯ ಭಾಷೆಗಳು';
+$lang['Inactive Plugins'] = 'ನಿಷ್ಕ್ರಿಯ ಪ್ಲಗ್ ಇನ್ ಗಳು';
+$lang['Inactive Themes'] = 'ನಿಷ್ಕ್ರಿಯ  ಥೀಮ್ ಗಳು';
+$lang['Graphics Library'] = 'ಚಿತ್ರಿಕೆ ಸಂಗ್ರಹ';
+$lang['I decide to update anyway'] = 'ನಾನು ಹೇಗಿದ್ದರೂ ನವೀಕರಣಕ್ಕೆ ಒಪ್ಪಿದ್ದೇನೆ';
+$lang['IP'] = 'IP';
+$lang['Ignore All'] = 'ಎಲ್ಲಾವನ್ನೂ ನಿರ್ಲಕ್ಷಿಸಿ';
+$lang['Ignore selected anomalies'] = 'ಆರಿಸಿದ ಅಸಮಂಜಸತೆಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ';
+$lang['Ignore this update'] = 'ಈ ನವೀಕರಣವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ';
+$lang['Image Quality'] = 'ಚಿತ್ರದ ಗುಣ';
+$lang['Image id'] = 'ಚಿತ್ರದ ಐಡಿ';
+$lang['Impossible automatic correction'] = 'ಸ್ವಯಂಚಾಲಿತ ತಿದ್ದುಪಡಿ ಅಸಾಧ್ಯ';
+$lang['Group'] = 'ಗುಂಪು';
+$lang['Group management'] = 'ಗುಂಪುಗಳ ನಿರ್ವಹಣೆ';
+$lang['Group name'] = 'ಗುಂಪಿನ ಹೆಸರು';
+$lang['Groups'] = 'ಗುಂಪುಗಳು';
+$lang['Groups and users'] = 'ಗುಂಪುಗಳು ಮತ್ತು ಬಳಕೆದಾರರು';
+$lang['Guest Settings'] = 'ಅತಿಥಿಗಳ ಸಂಯೋಜನೆ';
+$lang['Guest cannot be deleted'] = 'ಅತಿಥಿಗಳನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ';
+$lang['Guests'] = 'ಅತಿಥಿಗಳು';
+$lang['Height'] = 'ಎತ್ತರ';
+$lang['Hello'] = 'ನಮಸ್ತೆ';
+$lang['Hello,'] = 'ನಮಸ್ತೆ,';
+$lang['Help Me'] = 'ನನಗೆ ಸಹಾಯಮಾಡಿ';
+$lang['Hide'] = 'ಬಚ್ಚಿಡಿ';
+$lang['History'] = 'ಇತಿಹಾಸ';
+$lang['Hour'] = 'ಗಂಟೆ';
+$lang['Edit album permissions'] = 'ಸಂಪುಟದ ಅನುಮತಿಗಳನ್ನು ಸಂಪಾದಿಸಿ';
+$lang['Edit photo'] = 'ಚಿತ್ರವನ್ನು ಸಂಪಾದಿಸಿ';
+$lang['Edit photo information'] = 'ಚಿತ್ರದ ಮಾಹಿತಿಯ';
+$lang['Edit ranks'] = 'ದರ್ಜೆಗಳನ್ನು ಸಂಪಾದಿಸಿ';
+$lang['Edit selected tags'] = 'ಆರಿಸಿದ ಟ್ಯಾಗ್ ಗಳನ್ನು ಸಂಪಾದಿಸಿ';
+$lang['Edit tags'] = 'ಟ್ಯಾಗ್ ಗಳನ್ನು ಸಂಪಾದಿಸಿ';
+$lang['Error list'] = 'ಗಳ ಪಟ್ಟಿ';
+$lang['Error on file "%s" : %s'] = 'ಕಡತದ ಮೇಲಿನ ದೋಷ "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = '%s [%s]ರಿಗೆ ಮಿಂಚೆ ಕಳುಹಿಸುವಾಗಿನ ದೋಷ. ';
+$lang['Everybody'] = 'ಎಲ್ಲಾರೂ';
+$lang['Directory'] = 'ಡೈರೆಕ್ಟರಿ';
+$lang['Directory does not exist'] = 'ಡೈರೆಕ್ಟರಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ';
+$lang['Display options'] = 'ಪ್ರದರ್ಶನದ ಆಯ್ಕೆಗಳು';
+$lang['Do you want to activate anyway?'] = 'ನೀವು ಹೇಗಿದ್ದರೂ ಸಕ್ರಿಯಗೊಳಿಸಲು ಬಯಸುತ್ತೀರಾ?';
+$lang['Documentation'] = 'ದಾಖಲಾತಿ';
+$lang['Does not represent'] = 'ಗೆ ಇದು ಕಿರುಚಿತ್ರವಲ್ಲ';
+$lang['Download,'] = 'ಇಳಿಸಿಕೊಳ್ಳಿ,';
+$lang['Downloads'] = 'ವರ್ಗಾವಣೆಗಳು';
+$lang['Delete orphan tags'] = 'ಅನಾಥ ಟ್ಯಾಗ್ ಗಳನ್ನು ಅಳಿಸಿ';
+$lang['Delete selected photos'] = 'ಆರಿಸಿದ ಚಿತ್ರಗಳನ್ನು ಅಳಿಸಿ';
+$lang['Delete selected tags'] = ' ಟ್ಯಾಗ್ ಗಳನ್ನು ಅಳಿಸಿ';
+$lang['Delete selected users'] = 'ಆರಿಸಿದ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿ';
+$lang['Delete this language'] = 'ಈ ಭಾಷೆಯನ್ನು ಅಳಿಸಿ';
+$lang['Delete this theme'] = 'ಈ ಥೀಮ್ ಅನ್ನು ಅಳಿಸಿ';
+$lang['Deleted on'] = 'ರಂದು ಅಳಿಸಿದ್ದು';
+$lang['Deletions'] = 'ಅಳಿಸುವಿಕೆಗಳು';
+$lang['Deny selected groups'] = 'ಆರಿಸಿದ ಗುಂಪುಗಳನ್ನು ನಿರ್ಭಂಧಿಸಿ';
+$lang['Deny selected users'] = 'ಆರಿಸಿದ ಬಳಕೆದಾರರನ್ನು ನಿರ್ಭಂಧಿಸಿ';
+$lang['Description'] = 'ವಿವರಗಳು';
+$lang['Detailed informations'] = 'ವಿವರವಾದ ಮಾಹಿತಿಗಳು';
+$lang['Current name'] = 'ಪ್ರಸ್ತುತ ಹೆಸರು';
+$lang['Database'] = 'ಡೇಟಾಬೇಸ್';
+$lang['Date'] = 'ದಿನಾಂಕೆ';
+$lang['Day'] = 'ದಿನ';
+$lang['Deactivate'] = 'ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ';
+$lang['Deactivate all'] = 'ಎಲ್ಲವನ್ನೂ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ';
+$lang['Default comments order'] = 'ಪೂರ್ವನಿಯೋಜಿತ ಟಿಪ್ಪಣಿ ಕ್ರಮ';
+$lang['Default display'] = 'ಪೂರ್ವನಿಯೋಜಿತ ಪ್ರದರ್ಶನ';
+$lang['Default photos order'] = 'ಪೂರ್ವನಿಯೋಜಿತ ಚಿತ್ರಗಳ ಕ್ರಮ';
+$lang['Default user cannot be deleted'] = 'ಪೂರ್ವನಿಯೋಜಿತ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ';
+$lang['Default user does not exist'] = 'ಪೂರ್ವನಿಯೋಜಿತ ಬಳಕೆದಾರರು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ';
+$lang['Delete Representant'] = 'ಸಂಪುಟದ ಕಿರುಚಿತ್ರವನ್ನು ಅಳಿಸಿ';
+$lang['Check for updates'] = 'ನವೀಕರಣಕಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ';
+$lang['Check for upgrade'] = 'ನವೀಕರಣಕ್ಕಾಗಿ ಪರೀಕ್ಷಿಸಿ';
+$lang['Check for upgrade failed for unknown reasons.'] = 'ಅನಾಮಿಕ ಕಾರಣಗಳಿಂದಾದ ನವೀಕರಣ ವಿಫಲತೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ.';
+$lang['Check integrity'] = 'ಸಮಗ್ರತೆಯ ಪರೀಕ್ಷೆ';
+$lang['Choose an action'] = 'ಕ್ರಿಯೆಯನ್ನು ಆರಿಸಿರಿ';
+$lang['Choose an option'] = 'ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿರಿ';
+$lang['Comments for all'] = 'ಎಲ್ಲರಿಗಾಗಿ ಟಿಪ್ಪಣಿ';
+$lang['Confirm merge'] = 'ಕೂಡಿಸುವಿಕೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸಿ';
+$lang['Correction'] = 'ತಿದ್ದುಪಡಿ';
+$lang['Correction applied with error'] = 'ತಿದ್ದುಪಡಿಯನ್ನು ದೋಷದೊಂದಿಗೆ ಅನ್ವಯಿಸಲಾಗಿದೆ';
+$lang['Correction applied with success'] = 'ತಿದ್ದುಪಡಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅನ್ವಯಿಸಲಾಗಿದೆ';
+$lang['Create'] = 'ರಚಿಸಿ';
+$lang['Create this site'] = 'ಈ ಜಾಲತಾಣವನ್ನು ರಚಿಸಿ';
+$lang['Crop'] = 'ಮುಂಡನ';
+$lang['Apply action'] = 'ಕ್ರಿಯೆಯನ್ನು ಅನ್ವಯಿಸಿ';
+$lang['Apply selected corrections'] = 'ಆರಿಸಿದ ತಿದ್ದುಪಡಿಗಳನ್ನು ಅನ್ವಯಿಸಿ';
+$lang['Apply to sub-albums'] = 'ಉಪ-ಸಂಪುಟಗಳಿಗೆ ಅನ್ವಯಿಸಿ';
+$lang['Apply watermark if height is bigger than'] = 'ಎತ್ತರ ಗಿಂತ ಹೆಚ್ಚಿದ್ದರೆ ನೀರ್ಕಲೆಯನ್ನು ಅನ್ವಯಿಸಿ';
+$lang['Apply watermark if width is bigger than'] = 'ಅಗಲ ಗಿಂತ ಹೆಚ್ಚಿದ್ದರೆ ನೀರ್ಕಲೆಯನ್ನು ಅನ್ವಯಿಸಿ';
+$lang['Are you sure you want to delete this plugin?'] = 'ಈ ಪ್ಲಗ್ ಇನ್ ಅನ್ನು ಅಳಿಸುವ ನಿಮ್ಮ ಇಚ್ಛೆ ನಿಮಗೆ ಸಮ್ಮತವೇ?';
+$lang['Are you sure you want to install this plugin?'] = 'ಈ ಪ್ಲಗ್ ಇನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ನಿಮ್ಮ ಇಚ್ಛೆ ನಿಮಗೆ ಸಮ್ಮತವೇ?';
+$lang['Associate to album'] = 'ಸಂಪುಟಕ್ಕೆ ಹೊಂದಿಸಿ';
+$lang['Associated'] = 'ಹೊಂದಿಸಿದ್ದು';
+$lang['Authorized'] = 'ಅಧಿಕೃತ';
+$lang['Automatic correction'] = 'ಸ್ವಯಂಚಾಲಿತ  ತಿದ್ದುಪಡಿ';
+$lang['Automatic sort order'] = 'ಸ್ವಯಂಚಾಲಿತ ಅನುಕ್ರಮಣಿಕೆ ಕ್ರಮ';
+$lang['Available on'] = 'ನಲ್ಲಿ ಲಭ್ಯವಿದೆ';
+$lang['Available only with HTML format'] = 'HTML ನಮೂನೆಯಲ್ಲಿ ಮಾತ್ರ ';
+$lang['Available versions for'] = 'ಗೆ ಲಭ್ಯವಿರುವ ಆವೃತ್ತಿಗಳು';
+$lang['Average rate'] = 'ಸಾಧಾರಣ ದರ್ಜೆ';
+$lang['Batch Manager'] = 'ಸಗಟು ನಿರ್ವಾಹಕ';
+$lang['Active Languages'] = 'ಸಕ್ರಿಯ ಭಾಷೆಗಳು';
+$lang['Active Plugins'] = 'ಸಕ್ರಿಯ ಪ್ಲಗ್ ಇನ್ ಗಳು';
+$lang['Active Themes'] = 'ಸಕ್ರಿಯ ಥೀಮ್ ಗಳು';
+$lang['Add'] = 'ಸೇರಿಸಿ';
+$lang['Add New Language'] = 'ಹೊಸ ಭಾಷೆಯನ್ನು ಸೇರಿಸಿ';
+$lang['Add New Theme'] = 'ಹೊಸ ಥೀಮ್ ಅನ್ನು ಸೇರಿಸಿ';
+$lang['Add Photos'] = 'ಚಿತ್ರಗಳನ್ನು ಸೇರಿಸಿ';
+$lang['Add a filter'] = 'ಶೋಧಕ ವನ್ನು ಸೇರಿಸಿ';
+$lang['Add a tag'] = 'ಟ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಿ';
+$lang['Add a user'] = 'ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ';
+$lang['Add group'] = 'ಗುಂಪನ್ನು ಸೇರಿಸಿ';
+$lang['Add tags'] = 'ಟ್ಯಾಗ್ ಗಳನ್ನು ಸೇರಿಸಿ';
+$lang['Added by %s'] = '%s ರಿಂದ ಸೇರಿಸಿದ್ದು';
+$lang['%d week'] = '%d ವಾರ';
+$lang['%d weeks'] = '%d ವಾರ';
+$lang['%d year'] = '%d ವರ್ಷ';
+$lang['%d years'] = '%d ವರ್ಷಗಳು';
+$lang['%s ago'] = '%s ರ ಹಿಂದೆ';
+$lang['%s has been successfully updated.'] = '%s ರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ.';
+$lang['Used metadata'] = 'ಬಳಸಿದ ಮೆಟಾಡೇಟಾ';
+$lang['User'] = 'ಕೆದಾರ';
+$lang['User list'] = 'ಬಳಕೆದಾರರ ಪಟ್ಟಿ';
+$lang['User status'] = 'ಬಳಕೆದಾರರ ಸ್ಥಿತಿಗತಿ';
+$lang['Users'] = 'ಬಳಕೆದಾರರು';
+$lang['Version'] = 'ಆವೃತ್ತಿ';
+$lang['View in gallery'] = 'ಚಿತ್ರಾಂಗಣದಲ್ಲಿ ನೋಡಿ';
+$lang['Visit Gallery'] = 'ಚಿತ್ರಾಂಗಣಕ್ಕೆ ಭೇಟಿಕೊಡಿ';
+$lang['Visit Piwigo project website'] = 'ಪಿವಿಗೋ ಪ್ರಾಜೆಕ್ಟ್ ಜಾಲತಾಣಕ್ಕೆ ಭೇಟಿಕೊಡಿ';
+$lang['Visit language site'] = 'ಭಾಷಾತಾಣಕ್ಕೆ ಭೇಟಿಕೊಡಿ';
+$lang['Visit plugin site'] = 'ಪ್ಲಗ್ ಇನ್ ';
+$lang['Visit theme site'] = 'ಥೀಮ್ ತಾಣಕ್ಕೆ ಭೇಟಿಕೊಡಿ';
+$lang['Watermark'] = 'ನೀರ್ಕಲೆ';
+$lang['Web Form'] = 'ಜಾಲತಾಣ ನಮೂನೆ';
+$lang['Webmaster cannot be deleted'] = 'ವೆಬ್ ಮಾಸ್ಟರ್ ರನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ';
+$lang['Webmaster status is required.'] = 'ವೆಬ್ ಮಾಸ್ಟರ್ ರ ಸ್ಥಿತಿಗತಿ ಯ ಅಗತ್ಯವಿದೆ.';
+$lang['Week starts on'] = 'ವಾರ ಶುರುವಾಗುವುದು';
+$lang['Who can see these photos?'] = 'ಈ ಚಿತ್ರಗಳನ್ನು ಯಾರು ನೋಡಬಹುದು?';
+$lang['Who can see this photo?'] = 'ಈ ಚಿತ್ರವನ್ನು ಯಾರು ನೋಡಬಹುದು?';
+$lang['Width'] = 'ಅಗಲ';
+$lang['With no album'] = 'ಸಂಪುಟ ರಹಿತ';
+$lang['With no tag'] = 'ಟ್ಯಾಗ್ ರಹಿತ';
+$lang['X Position'] = 'X ಸ್ಥಾನ';
+$lang['Y Position'] = 'Y ಸ್ಥಾನ';
+$lang['Year'] = 'ವರ್ಷ';
+$lang['You need to confirm deletion'] = 'ನೀವು ಅಳಿಸುವಿಕೆಯನ್ನು ಖಾತ್ರಿಮಾಡಲೇಬೇಕು';
+$lang['[%s] Visit album %s'] = '[%s] ಸಂಪುಟವನ್ನು ನೋಡಿ  %s';
+$lang['add a new watermark'] = 'ಹೊಸ ನೀರ್ಕಲೆಯನ್ನು ಸೇರಿಸಿ';
+$lang['added'] = 'ಸೇರಿಸಲಾಗಿದೆ';
+$lang['all'] = 'ಎಲ್ಲಾ';
+$lang['and'] = 'ಮತ್ತು';
+$lang['any visitor can see this album'] = 'ಯಾವುದೇ ಸಂದರ್ಶಕರು ಈ ಸಂಪುಟವನ್ನು ನೋಡಬಹುದು';
+$lang['associate to group'] = 'ಗುಂಪಿಗೆ ಹೊಂದಿಸಿ';
+$lang['high'] = 'ಹೆಚ್ಚು';
+$lang['jump to album'] = 'ಸಂಪುಟಕ್ಕೆ ಹೋಗಿ';
+$lang['jump to photo'] = 'ಚಿತ್ರಕ್ಕೆ ಹೋಗಿ';
+$lang['leave'] = 'ತೊರೆ';
+$lang['manage album photos'] = 'ಸಂಪುಟದ ಚಿತ್ರಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['manage sub-albums'] = 'ಉಪ-ಸಂಪುಟಗಳನ್ನು ನಿರ್ವಹಿಸಿ';
+$lang['middle'] = 'ಮಧ್ಯೆ';
+$lang['modified'] = 'ಬದಲಾಯಿಸಲಾದ';
+$lang['new'] = 'ಹೊಸ';
+$lang['none'] = 'ಯಾವುದೂ ಇಲ್ಲ';
+$lang['nothing'] = 'ಏನೂ ಇಲ್ಲ';
+$lang['number of miniaturized photos'] = 'ರಚಿಸಲಾದ ಕಿರುಚಿತ್ರಗಳ ಸಂಖ್ಯೆ';
+$lang['on'] = 'ಮೇಲೆ';
+$lang['only directories'] = 'ಡೈರೆಕ್ಟರಿಗಳು ಮಾತ್ರ';
+$lang['%d of %d photos selected'] = '%d ರ %d ಚಿತ್ರಗಳನ್ನು ಆರಿಸಲಾಗಿದೆ';
+$lang['%d parameter was updated.'] = '%d ನಿಯತಾಂಕ ನವೀಕರಿಸಿದೆ.';
+$lang['%d parameters were updated.'] = '%d ನಿಯತಾಂಕಗಳನ್ನು ನವೀಕರಿಸಿದೆ.';
+$lang['%d photo was deleted'] = '%d ಚಿತ್ರವನ್ನು ಅಳಿಸಲಾಗಿದೆ. ';
+$lang['%d photos uploaded'] = '%d ಚಿತ್ರಗಳನ್ನು ನವೀಕರಿಸಿದೆ. ';
+$lang['%d photos were deleted'] = '%d ಚಿತ್ರಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ. ';
+$lang['%d second'] = '%d ಸೆಕೆಂಡು';
+$lang['%d seconds'] = '%d ಸೆಕೆಂಡುಗಳು';
+$lang['%d tag'] = '%d ಟ್ಯಾಗ್';
+$lang['%d tags'] = '%d ಟ್ಯಾಗ್ ಗಳು';
+$lang['%d user'] = '%d ಬಳಕೆದಾರ';
+$lang['%d user deleted'] = '%d ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲಾಗಿದೆ.';
+$lang['%d user was not updated.'] = '%d ಬಳಕೆದಾರರನ್ನು ನವೀಕರಿಸಲಾಗಿಲ್ಲ.';
+$lang['%d user was updated.'] = '%d ಬಳಕೆದಾರರನ್ನು ನವೀಕರಿಸಿದೆ.';
+$lang['%d mails were not sent.'] = '%d ಮಿಂಚೆಗಳನ್ನು ಕಳುಹಿಸಲಾಗಿಲ್ಲ.';
+$lang['%d mails were sent.'] = '%d ಮಿಂಚೆಗಳನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.';
+$lang['%d member'] = '%d ಸದಸ್ಯ';
+$lang['%d members'] = '%d ಸದಸ್ಯರು';
+$lang['%d line filtered'] = '%d ಸಾಲು ಶೋಧಿಸಿದೆ';
+$lang['%d lines filtered'] = '%d ಸಾಲುಗಳನ್ನು ಶೋಧಿಸಿದೆ';
+$lang['%d mail was not sent.'] = '%d ಮಿಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿಲ್ಲ.';
+$lang['%d mail was sent.'] = '%d ಮಿಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.';
+$lang['%d guest'] = '%d ಅತಿಥಿ';
+$lang['%d guests'] = '%d ಅತಿಥಿಗಳು';
+$lang['%d hour'] = '%d ಗಂಟೆ';
+$lang['%d hours'] = '%d ಗಂಟೆಗಳು';
+$lang['%d day'] = '%d ದಿನ';
+$lang['%d days'] = '%d ದಿನಗಳು';
+$lang['%d group'] = '%d ಗುಂಪು';
+$lang['%d groups'] = '%d ಗುಂಪುಗಳು';
+?>
Index: /tags/2.6.0RC1/language/kn_IN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/common.lang.php	(revision 25596)
@@ -0,0 +1,417 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: ಕನ್ನಡ [IN]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=693
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "ಕನ್ನಡ";
+$lang_info['country'] = "ಭಾರತ";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "kn";
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = "%d ಸಂಪುಟ ಸಂಪನ್ನವಾಗಿದೆ";
+$lang['%d albums updated'] = "%d ಸಂಪುಟಗಳು ಸಂಪನ್ನವಾಗಿವೆ";
+$lang['%d comment to validate'] = "ಪರಿಶೀಲನೆಗಾಗಿ %d ಟಿಪ್ಪಣಿ ";
+$lang['%d comment'] = "%d ಟಿಪ್ಪಣಿ";
+$lang['%d comments to validate'] = "ಪರಿಶೀಲನೆಗಾಗಿ %d ಟಿಪ್ಪಣಿಗಳು ";
+$lang['%d comments'] = "%d ಟಿಪ್ಪಣಿಗಳು";
+$lang['%d hit'] = "%d ಭೇಟಿ";
+$lang['%d hits'] = "%d ಭೇಟಿಗಳು";
+$lang['%d new comment'] = "%d ಹೊಸ ಟಿಪ್ಪಣಿ";
+$lang['%d new comments'] = "%d ಹೊಸ ಟಿಪ್ಪಣಿಗಳು";
+$lang['%d new photo'] = "%d ಹೊಸ ಚಿತ್ರ";
+$lang['%d new photos'] = "%d ಹೊಸ ಚಿತ್ರಗಳು";
+$lang['%d new user'] = "%d ಹೊಸ ಬಳಕೆದಾರ";
+$lang['%d new users'] = "%d ಹೊಸ ಬಳಕೆದಾರರು";
+$lang['%d photo is also linked to current tags'] = "%d ಚಿತ್ರವು ಕೂಡ ಈ ಟ್ಯಾಗ್ ನ ಜೊತೆ ಜೋಡಿಸಲ್ಪಟ್ಟಿದೆ.";
+$lang['%d photo'] = "%d ಚಿತ್ರ";
+$lang['%d photos are also linked to current tags'] = "%d ಚಿತ್ರಗಳು ಕೂಡ ಈ ಟ್ಯಾಗ್ ಗಳ ಜೊತೆ ಜೋಡಿಸಲ್ಪಟ್ಟಿವೆ. ";
+$lang['%d photos'] = "%d ಚಿತ್ರಗಳು";
+$lang['%d rate'] = '%d ಗುಣದರ್ಜೆ';
+$lang['%d rates'] = "%d ಗುಣದರ್ಜೆಗಳು";
+$lang['(!) This comment requires validation'] = '(!) ಈ ಟಿಪ್ಪಣಿಯನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾಗಿದೆ';
+$lang['... or browse your empty gallery'] = '... ಅಥವಾ ನಿಮ್ಮ ಖಾಲಿ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ಯನ್ನು ವೀಕ್ಷಿಸಿ ';
+$lang['2small'] = 'XXS - ಅತಿ ಸಣ್ಣದು';
+$lang['A comment on your site'] = "ನಿಮ್ಮ ಜಾಲತಾಣದ ಬಗ್ಗೆ ಒಂದು ಟಿಪ್ಪಣಿ";
+$lang['About Piwigo'] = "Piwigo ದ ಬಗ್ಗೆ";
+$lang['About'] = "ಬಗ್ಗೆ";
+$lang['Accelerate diaporama speed'] = "ಪ್ರದರ್ಶಿಕೆಯ ವೇಗ ಹೆಚ್ಚಿಸಿ";
+$lang['Add a comment'] = "ಟಿಪ್ಪಣಿ ಸೇರಿಸಿರಿ";
+$lang['add this photo to your favorites'] = "ಈ ಚಿತ್ರವನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿ";
+$lang['Admin: %s'] = "ಅಡ್ಮಿನ್: %s";
+$lang['Administration'] = "ನಿರ್ವಹಣೆ";
+$lang['Album results for'] = "ಸಂಪುಟದ ಫಲಿತಾಂಶಗಳು";
+$lang['Album'] = "ಸಂಪುಟ";
+$lang['Album: %s'] = "ಸಂಪುಟ: %s";
+$lang['Albums'] = "ಸಂಪುಟಗಳು";
+$lang['All tags'] = "ಎಲ್ಲಾ ಟ್ಯಾಗ್ ಗಳು";
+$lang['all'] = "ಎಲ್ಲಾ";
+$lang['All'] = "ಎಲ್ಲಾ";
+$lang['An administrator must authorize your comment before it is visible.'] = "ನಿರ್ವಹಣೆಗಾರರು ನಿಮ್ಮ ಟಿಪ್ಪಣಿ ಯನ್ನು ಪರಿಶೀಲಿಸಿದ ನಂತರ ಅದು ನಿಮಗೆ ಲಭ್ಯವಾಗುವುದು.";
+$lang['Any tag'] = "ಯಾವುದೇ ಟ್ಯಾಗ್";
+$lang['Are you sure?'] = "ನಿಮಗೆ ಒಪ್ಪಿಗೆಯೇ?";
+$lang['ascending'] = "ಆರೋಹಣ ಕ್ರಮ";
+$lang['At least one listed rule must be satisfied.'] = "ಕೊನೇ ಪಕ್ಷ ಮಾನದಂಡಗಳ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಒಂದಾದರೂ ಸಮ್ಮತವಾಗಬೇಕು.";
+$lang['Author'] = "ಲೇಖಕ";
+$lang['author(s) : %s'] = 'ಲೇಖಕ(ರು): %s';
+$lang['Author: %s'] = "ಲೇಖಕ: %s";
+$lang['Auto login'] = "ಆಟೋ ಲಾಗಿನ್";
+$lang['available for administrators only'] = "ನಿರ್ವಹಣೆಗಾರರ (ಅಡ್ಮಿನ್ ಗಳ) ಉಪಯೋಗಕ್ಕೆ ಮಾತ್ರ";
+$lang['Bad request'] = 'ಕೋರಿಕೆ ತಪ್ಪಾಗಿದೆ';
+$lang['Best rated'] = "ಅತ್ಯುತ್ತಮವಾದವು";
+$lang['Browser: %s'] = "ಬ್ರೌಸರ್: %s";
+$lang['Calendar'] = "ದಿನದರ್ಶಿಕೆ";
+$lang['Change my password'] = 'ನನ್ನ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಿಸು';
+$lang['Check your email for the confirmation link'] = 'ಒಪ್ಪಿಗೆಯ ಲಿಂಕ್ ಗಾಗಿ  ನಿಮ್ಮ ಮಿಂಚೆಯನ್ನು ನೋಡಿ';
+$lang['chronology_monthly_calendar'] = "ತಿಂಗಳಿನ ದಿನದರ್ಶಿಕೆ";
+$lang['chronology_monthly_list'] = "ತಿಂಗಳಿನ ಪಟ್ಟಿ";
+$lang['chronology_weekly_list'] = "ವಾರದ ಪಟ್ಟಿ";
+$lang['Click here if your browser does not automatically forward you'] = "ನಿಮ್ಮ ಬ್ರೌಸರ್ ಆಯಾಚಿತವಾಗಿ ಮುಂದುವರೆಯದಿದ್ದಲ್ಲಿ, ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ. Click here if your browser does not automatically forward you";
+$lang['Click on the photo to see it in high definition'] = "ಉನ್ನತ ದರ್ಜೆಯಲ್ಲಿ ವೀಕ್ಷಿಸಲು ಚಿತ್ರದ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ";
+$lang['Close this window'] = "ಈ ವಿಂಡೋ ಅನ್ನು ಮುಚ್ಚಿರಿ";
+$lang['cloud'] = "ಕ್ಲೌಡ್";
+$lang['Comment by %s'] = "%s ರವರ ಟಿಪ್ಪಣಿ ";
+$lang['comment date'] = "ಟಿಪ್ಪಣಿಯ ದಿನಾಂಕ";
+$lang['Comment'] = "ಟಿಪ್ಪಣಿ";
+$lang['Comment: %s'] = "ಟಿಪ್ಪಣಿ: %s";
+$lang['Comments'] = "ಟಿಪ್ಪಣಿಗಳು";
+$lang['Complete RSS feed (photos, comments)'] = "ಸಂಪೂರ್ಣ RSS feed (ಚಿತ್ರಗಳು, ಟಿಪ್ಪಣಿಗಳು)";
+$lang['Confirm Password'] = 'ಪ್ರವೇಶಪದವನ್ನು ಖಾತ್ರಿಗೊಳಿಸಿ.';
+$lang['Connected user: %s'] = "ಸಂಪರ್ಕಿತವಾದ ಬಳಕೆದಾರ: %s";
+$lang['Connection settings'] = "ಸಂಪರ್ಕದ ವಿವರಗಳು";
+$lang['Contact webmaster'] = "ವೆಬ್ ಮಾಸ್ಟರ್ ಅವರನ್ನು ಸಂಪರ್ಕಿಸಿ";
+$lang['Contact'] = "ಸಂಪರ್ಕಿಸಿ";
+$lang['Create a new account'] = "ಹೊಸ ಖಾತೆಯನ್ನು ತೆರೆಯಿರಿ";
+$lang['created after %s (%s)'] = "%s (%s) ರ ನಂತರ ರಚಿಸಲಾಗಿದೆ ";
+$lang['created before %s (%s)'] = '%s (%s) ರ ಮುಂಚೆ ರಚಿಸಲಾಗಿದೆ ';
+$lang['created between %s (%s) and %s (%s)'] = '%s (%s) ರ ಮತ್ತು  %s (%s) ರ ನಡುವೆ ರಚಿಸಲಾಗಿದೆ';
+$lang['created on %s'] = "%s ರಂದು ತೆರೆಯಲಾಗಿದೆ";
+$lang['Created on'] = "ರಂದು ರಚಿಸಲಾಗಿದೆ";
+$lang['Creation date'] = "ರಚಿಸಲಾದ ದಿನಾಂಕ";
+$lang['Current password is wrong'] = "ಈಗಿನ ಗುಪ್ತಪದ ತಪ್ಪಾಗಿದೆ";
+$lang['customize the appareance of the gallery'] = "ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)ಯ ವಿನ್ಯಾಸ ಬದಲಾಯಿಸಿ";
+$lang['Customize'] = "ವಿನ್ಯಾಸ ಬದಲಿಸಿ";
+$lang['Date created, new &rarr; old'] = 'ರಚಿಸಲಾದ ದಿನಾಂಕ, ಹೊಸ &rarr; ಹಳೆಯ';
+$lang['Date created, old &rarr; new'] = 'ರಚಿಸಲಾದ ದಿನಾಂಕ, ಹಳೆಯ &rarr; ಹೊಸ';
+$lang['Date posted, new &rarr; old'] = 'ದಿನಾಂಕ, ಹೊಸ &rarr; ಹಳೆಯ';
+$lang['Date posted, old &rarr; new'] = 'ದಿನಾಂಕ, ಹಳೆಯ &rarr; ಹೊಸ';
+$lang['Date'] = "ದಿನಾಂಕ";
+$lang['day'][0] = "ಭಾನುವಾರ";
+$lang['day'][1] = "ಸೋಮವಾರ";
+$lang['day'][2] = "ಮಂಗಳವಾರ";
+$lang['day'][3] = "ಬುಧವಾರ";
+$lang['day'][4] = "ಗುರುವಾರ";
+$lang['day'][5] = "ಶುಕ್ರವಾರ";
+$lang['day'][6] = "ಶನಿವಾರ";
+$lang['delete all photos from your favorites'] = "ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನ ಪಟ್ಟಿಯಿಂದ ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ಅಳಿಸಿ.";
+$lang['delete this photo from your favorites'] = "ಈ ಚಿತ್ರವನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನ ಪಟ್ಟಿಯಿಂದ ಅಳಿಸಿ";
+$lang['Delete'] = "ಅಳಿಸಿ";
+$lang['descending'] = "ಅವರೋಹಣ ಕ್ರಮ";
+$lang['Desktop'] = 'ಡೆಸ್ಕ್ ಟಾಪ್';
+$lang['Dimensions'] = "ಅಳತೆ";
+$lang['display a calendar by creation date'] = "ದಿನದರ್ಶಿಕೆಯನ್ನು ರಚಿತವಾದ ದಿನಾಂಕದಂತೆ ಪ್ರದರ್ಶಿಸಿ";
+$lang['display a calendar by posted date'] = "ದಿನದರ್ಶಿಕೆಯನ್ನು ಪ್ರಕಟಣೆಯ ದಿನಾಂಕದಂತೆ ಪ್ರದರ್ಶಿಸಿ";
+$lang['display a set of random photos'] = "a set of random ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display all photos in all sub-albums'] = "ಎಲ್ಲಾ ಉಪ-ಸಂಪುಟಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display available tags'] = "ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಟ್ಯಾಗ್ ಗಳನ್ನು  ಪ್ರದರ್ಶಿಸಿ";
+$lang['display best rated photos'] = "ಅತ್ಯುತ್ತಮ ಗುಣದರ್ಜೆಯ ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display each day with photos, month per month'] = "ತಿಂಗಳಿನ ನಂತರ ತಿಂಗಳಿನಂತೆ, ಪ್ರತಿ ದಿನವನ್ನೂ ಚಿತ್ರಗಳೊಂದಿಗೆ ಪ್ರದರ್ಶಿಸಿ";
+$lang['display last user comments'] = "ಕೊನೆಯ ಬಳಕೆದಾರರ ಟಿಪ್ಪಣಿಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display most recent photos'] = "ಇತ್ತೀಚಿನ ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display most visited photos'] = "ಅತಿ ಹೆಚ್ಚು ಕೋರಿಕೆಯ  ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display only recently posted photos'] = "ಇತ್ತೀಚೆಗೆ ಸೇರಿಸಿದ ಚಿತ್ರಗಳನ್ನು ಮಾತ್ರ ಪ್ರದರ್ಶಿಸಿ";
+$lang['display photos linked to this tag'] = "ಈ ಟ್ಯಾಗ್ ನೊಂದಿಗೆ ಜೋಡಣೆಯಾದ ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display recently updated albums'] = "ಇತ್ತೀಚಿಗೆ ಉನ್ನತೀಕರಿಸಿದ ಸಂಪುಟಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display this album'] = "ಈ ಸಂಪುಟವನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['display your favorites photos'] = "ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನ ಚಿತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ";
+$lang['Display'] = "ಪ್ರದರ್ಶಿಸಿ";
+$lang['Download this file'] = "ಈ ಕಡತ (ಫೈಲ್)ಆನ್ನು ಡೌನ್ ಲೋಡ್ ಮಾಡಿ";
+$lang['Download'] = "ಡೌನ್ ಲೋಡ್ ಮಾಡಿ";
+$lang['Each listed rule must be satisfied.'] = 'ಪಟ್ಟಿಮಾಡಿರುವ ಪ್ರತಿಯೊಂದು ಮಾನದಂಡವೂ ಸಮ್ಮತವಾಗಬೇಕು.';
+$lang['Edit a comment'] = "ಟಿಪ್ಪಣಿಯನ್ನು ಸರಿಪಡಿಸಿ";
+$lang['edit'] = "ಸಂಪಾದಿಸಿ"; //TO remove
+$lang['Edit'] = 'ಸಂಪಾದಿಸಿ';
+$lang['Email address is missing. Please specify an email address.'] = "ದಯವಿಟ್ಟು ಮಿಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.";
+$lang['Email address'] = "ಮಿಂಚೆ ವಿಳಾಸ";
+$lang['Email address is mandatory'] = 'ಮಿಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಾಗಿದೆ';
+$lang['Email: %s'] = "ಮಿಂಚೆ: %s";
+$lang['End-Date'] = "ಕೊನೆಯ ದಿನಾಂಕ";
+$lang['Enter your new password below.'] = 'ನಿಮ್ಮ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಈ ಕೆಳಗೆ ನಮೂದಿಸಿ.';
+$lang['Enter your personnal informations'] = "ನಿಮ್ಮ ಸ್ವವಿವರಗಳನ್ನು ನಮೂದಿಸಿ";
+$lang['Error sending email'] = "ಮಿಂಚೆ ಕಳುಹಿಸುವಾಗ ತಪ್ಪಾಗಿದೆ";
+$lang['excluded'] = "ಹೊರತಾದ";
+$lang['EXIF Metadata'] = 'EXIF ವಿವರಗಳು';
+$lang['Expand all albums'] = "ಎಲ್ಲಾ ಸಂಪುಟಗಳನ್ನು ವಿಸ್ತರಿಸಿ";
+$lang['Favorites'] = "ಅಚ್ಚುಮೆಚ್ಚಿನವು";
+$lang['File name'] = "ಕಡತದ (ಫೈಲ್ ನ) ಹೆಸರು";
+$lang['File name, A &rarr; Z'] = 'ಕಡತದ (ಫೈಲ್ ನ) ಹೆಸರು, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'ಕಡತದ (ಫೈಲ್ ನ) ಹೆಸರು, Z &rarr; A';
+$lang['File'] = "ಕಡತ (ಫೈಲ್)";
+$lang['Filesize'] = "ಕಡತದ (ಫೈಲ್ ನ) ಗಾತ್ರ";
+$lang['Filter and display'] = "ಶೋಧಿಸಿ ಮತ್ತು ಪ್ರದರ್ಶಿಸಿ";
+$lang['Filter'] = "ಶೋಧನೆ";
+$lang['First'] = "ಮೊದಲಿನ";
+$lang['Forbidden'] = 'ನಿರ್ಬಂಧಿತ';
+$lang['Forgot your password?'] = 'ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಮರೆತು ಹೋಗಿದೆಯೆ?';
+$lang['from %s to %s'] = "ಇಂದ  %s ಗೆ %s";
+$lang['Go through the gallery as a visitor'] = "ಸಂದರ್ಶಕರಂತೆ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)ಯನ್ನು ವೀಕ್ಷಿಸಿ";
+$lang['group by letters'] = "ಪತ್ರಗಳಂತೆ ವಿಂಗಡಿಸಿ";
+$lang['guest'] = "ಅತಿಥಿ";
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'ನಮಸ್ತೆ %s ಅವರೆ, ನಿಮ್ಮ Piwigo ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ಖಾಲಿ ಇದೆ!';
+$lang['Hello %s,'] = 'ನಮಸ್ಕಾರ %s ಅವರೆ,';
+$lang['Hello'] = "ನಮಸ್ಕಾರ";
+$lang['Help'] = "ಸಹಾಯ";
+$lang['Here are your connection settings'] = 'ನಿಮ್ಮ ಸಂಪರ್ಕದ ವಿವರಗಳು ಇಲ್ಲಿವೆ ';
+$lang['Home'] = 'ಮುಖಪುಟ';
+$lang['html tags are not allowed in login'] = 'html ಟ್ಯಾಗ್ ಗಳನ್ನು ಲಾಗಿನ್ ನಲ್ಲಿ ಉಪಯೋಗಿಸುವಂತಿಲ್ಲ';
+$lang['I want to add photos'] = 'ನಾನು ಚಿತ್ರಗಳನ್ನು ಸೇರಿಸಬೇಕು';
+$lang['Identification'] = "ಗುರುತು";
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'ಈ ಮಿಂಚೆ ಕಣ್ತಪ್ಪಿನಿಂದ ಬಂದಿರಬಹುದು ಎಂದು ನಿಮಗನ್ನಿಸಿದ್ದಲ್ಲಿ, ಇದನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ, ಇದರಿಂದ ಯಾವ ತೊಂದರೆಯೂ ಉಂಟಾಗದು.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'ಈ ಮಿಂಚೆ ಕಣ್ತಪ್ಪಿನಿಂದ ಬಂದಿರಬಹುದು ಎಂದು ನಿಮಗನ್ನಿಸಿದ್ದಲ್ಲಿ, ದಯವಿಟ್ಟು ನಮ್ಮನ್ನು  %s ರಲ್ಲಿ ಸಂಪರ್ಕಿಸಿ.';
+$lang['in %d sub-album'] = "%d ಉಪ-ಸಂಪುಟ ದಲ್ಲಿ";
+$lang['in %d sub-albums'] = "%d ಉಪ-ಸಂಪುಟಗಳಲ್ಲಿ";
+$lang['in this album'] = "ಈ ಸಂಪುಟದಲ್ಲಿ";
+$lang['included'] = "ಸೇರಿಸಲಾದವು";
+$lang['Invalid key'] = 'ಅಸಿಂಧುವಾದ ಕೀ';
+$lang['Invalid password!'] = 'ತಪ್ಪಾದ ಪ್ರವೇಶಪದ!';
+$lang['Invalid username or email'] = 'ತಪ್ಪಾದ ಬಳಕೆದಾರರ ಹೆಸರು ಅಥವಾ ಮಿಂಚೆ ವಿಳಾಸ';
+$lang['IPTC Metadata'] = 'IPTC ಮೆಟಾಡೇಟಾ';
+$lang['Keyword'] = "ಮುಖ್ಯ ಪದ (ಕೀ ವರ್ಡ್)";
+$lang['Kind of date'] = "ದಿನಾಂಕದ ಬಗೆ";
+$lang['Language'] = "ಭಾಷೆ";
+$lang['large'] = 'L - ದೊಡ್ಡದಾದ';
+$lang['last %d days'] = "ಕೊನೆಯ %d ದಿನಗಳು";
+$lang['Last'] = "ಕೊನೆಯ";
+$lang['letters'] = "ಪದಗಳು - ಪತ್ರಗಳು";
+$lang['Links'] = "ಲಿಂಕ್ ಗಳು";
+$lang['login mustn\'t end with a space character'] = "ಲಾಗಿನ್, ಸ್ಪೇಸ್ ಅಕ್ಷರಗಳಿಂದ ಕೊನೆಯಾಗಬಾರದು";
+$lang['login mustn\'t start with a space character'] = "ಲಾಗಿನ್, ಸ್ಪೇಸ್ ಅಕ್ಷರಗಳಿಂದ ಶುರುವಾಗಬಾರದು";
+$lang['Login'] = "ಲಾಗಿನ್";
+$lang['Logout'] = "ಲಾಗೌಟ್";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'ಮಿಂಚೆ ವಿಳಾಸ ಈ ರೀತಿಯಾಗಿರಲಿ : xxx@yyy.eee (example: jack@altern.org)';
+$lang['Manage this user comment: %s'] = 'ಈ ಬಳಕೆದಾರರ ಟಿಪ್ಪಣಿ ಯನ್ನು ನಿರ್ವಹಿಸಿ: %s';
+$lang['Manual sort order'] = 'Manual ಅನುಕ್ರಮಣಿಕೆಯ ಕ್ರಮ';
+$lang['medium'] = 'M - ಮಧ್ಯಮ';
+$lang['Menu'] = "ಪಟ್ಟಿ";
+$lang['Mobile'] = 'ಮೊಬೈಲ್';
+$lang['month'][10] = "ಅಕ್ಟೋಬರ್";
+$lang['month'][11] = "ನವೆಂಬರ್";
+$lang['month'][12] = "ಡಿಸೆಂಬರ್";
+$lang['month'][1] = "ಜನವರಿ";
+$lang['month'][2] = "ಫೆಬ್ರವರಿ";
+$lang['month'][3] = "ಮಾರ್ಚ್";
+$lang['month'][4] = "ಏಪ್ರಿಲ್";
+$lang['month'][5] = "ಮೇ";
+$lang['month'][6] = "ಜೂನ್";
+$lang['month'][7] = "ಜುಲೈ";
+$lang['month'][8] = "ಆಗಸ್ಟ್";
+$lang['month'][9] = "ಸೆಪ್ಟೆಂಬರ್";
+$lang['Most visited'] = "ಅತಿ ಹೆಚ್ಚು ಕೋರಿಕೆಯ";
+$lang['New on %s'] = "ಹೊಸತು %s";
+$lang['New password'] = 'ಹೊಸ ಪ್ರವೇಶಪದ';
+$lang['Next'] = "ಮುಂದೆ";
+$lang['no rate'] = "ಯಾವುದೇ ಗುಣದರ್ಜೆ ಇಲ್ಲ";
+$lang['No'] = "ಇಲ್ಲ";
+$lang['Not repeat the slideshow'] = "ಪ್ರದರ್ಶಿಕೆಯ ಪುನರಾವರ್ತನೆ ಬೇಡ";
+$lang['Notification'] = "ತಿಳುವಳಿಕೆ (Notification)";
+$lang['Number of items'] = "ವಸ್ತುಗಳ ಸಂಖ್ಯೆ";
+$lang['Number of photos per page'] = "ಪ್ರತಿ ಪುಟಕ್ಕೆ ಚಿತ್ರಗಳ ಸಂಖ್ಯೆ";
+$lang['Numeric identifier, 1 &rarr; 9'] = 'ಸಂಖ್ಯಾ ಗುರುತು, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'ಸಂಖ್ಯಾ ಗುರುತು, 9 &rarr; 1';
+$lang['obligatory'] = "ಕಡ್ಡಾಯ";
+$lang['Original dimensions'] = "ಮೂಲ ಅಳತೆಗಳು"; //unused?
+$lang['Original'] = 'ಮೂಲ';
+$lang['Page generated in'] = "ದಲ್ಲಿ  ಪುಟ ಪುನರ್ರಚಿಸಲಾಗಿದೆ";
+$lang['Page not found'] = 'ಪುಟ ಸಿಗುತ್ತಿಲ್ಲ';
+$lang['Password forgotten'] = 'ಪ್ರವೇಶಪದಮರೆತಿದೆ';
+$lang['Password reset is not allowed for this user'] = 'ಈ ಬಳಕೆದಾರರ ಪ್ರವೇಶಪದವನ್ನು ಸರಿಪಡಿಸಲಾಗುವುದಿಲ್ಲ';
+$lang['Password Reset'] = 'ಪ್ರವೇಶಪದವನ್ನು ಸರಿಪಡಿಸಿ';
+$lang['password updated'] = 'ಪ್ರವೇಶಪದವನ್ನು ತಿದ್ದುಪಡಿಸಲಾಗಿದೆ';
+$lang['Password'] = 'ಪ್ರವೇಶಪದ';
+$lang['Password: %s'] = 'ಪ್ರವೇಶಪದ: %s';
+$lang['Pause of slideshow'] = "ಪ್ರದರ್ಶಿಕೆಯನ್ನು ತಡೆಹಿಡಿ";
+$lang['Permalink for album not found'] = 'ಸಂಪುಟದ Permalink ಸಿಗುತ್ತಿಲ್ಲ';
+$lang['Photo sizes'] = 'ಚಿತ್ರದ ಗಾತ್ರ';
+$lang['Photo title, A &rarr; Z'] = 'ಚಿತ್ರದ ಶೀರ್ಷಿಕೆ, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'ಚಿತ್ರದ ಶೀರ್ಷಿಕೆ, Z &rarr; A';
+$lang['photo'] = "ಚಿತ್ರ";
+$lang['Photos only RSS feed'] = "'ಚಿತ್ರಗಳು ಮಾತ್ರ' ದ   RSS feed (Photos only RSS feed)";
+$lang['photos posted during the last %d days'] = "ಕಳೆದ %d ದಿನಗಳ ಅವಧಿಯಲ್ಲಿ ಪ್ರಕಟವಾದ ಚಿತ್ರಗಳು";
+$lang['Photos posted within the last %d day.'] = "ಕಳೆದ %d ದಿನಗಳ ಅವಧಿಯೊಳಗೆ ಮಾತ್ರ ಪ್ರಕಟವಾದ ಚಿತ್ರಗಳು";
+$lang['Photos posted within the last %d days.'] = "ಕಳೆದ %d ದಿನಗಳ ಅವಧಿಯೊಳಗೆ ಮಾತ್ರ ಪ್ರಕಟವಾದ ಚಿತ್ರಗಳು";
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ದಲ್ಲಿ ಮರುಸರಿಪಡಿಸಲಾಗದ ಒಂದು ತಪ್ಪು ಉಂಟಾಗಿದೆ';
+$lang['Piwigo Help'] = "Piwigo ಸಹಾಯ";
+$lang['Play of slideshow'] = "ಪ್ರದರ್ಶಿಕೆಯನ್ನು ಚಾಲಿಸಿ";
+$lang['Please enter your username or email address.'] = 'ದಯವಿಟ್ಟು ನಿಮ್ಮ ಬಳಕೆದಾರರ ಹೆಸರು ಅಥವಾ ಮಿಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ';
+$lang['Please, enter a login'] = "ದಯವಿಟ್ಟು ಲಾಗಿನ್ ಅನ್ನು ನಮೂದಿಸಿ";
+$lang['Post date'] = "ಪ್ರಕಟಣೆಯ ದಿನಾಂಕ";
+$lang['posted after %s (%s)'] = '%s (%s) ರ ನಂತರ';
+$lang['posted before %s (%s)'] = "%s (%s) ಕ್ಕೆ ಮುನ್ನ ಪ್ರಕಟವಾದವು.";
+$lang['posted between %s (%s) and %s (%s)'] = "%s (%s) ಮತ್ತು %s (%s) ರ ಮಧ್ಯೆ ಪ್ರಕಟವಾದವು";
+$lang['posted on %s'] = "%s ರಂದು ಪ್ರಕಟವಾದವು";
+$lang['Posted on'] = "ರಲ್ಲಿ ಪ್ರಕಟವಾಗಿದ್ದು";
+$lang['Preferences'] = "ಆದ್ಯತೆಗಳು";
+$lang['Previous'] = "ಹಿಂದೆ";
+$lang['Profile'] = "ಸ್ವವಿವರ";
+$lang['Quick connect'] = "ವೇಗದ ಸಂಪರ್ಕ";
+$lang['Quick search'] = "ವೇಗದ ಹುಡುಕಾಟ";
+$lang['Random photos'] = 'ಯಾವುದಾದೊರೊಂದು ಚಿತ್ರ';
+$lang['Rank'] = "ದರ್ಜೆ";
+$lang['Rate this photo'] = "ಈ ಚಿತ್ರದ ಗುಣದರ್ಜೆಯನ್ನು ಹೊಂದಿಸಿ";
+$lang['Rating score'] = "ಗುಣದರ್ಜೆಯ ಅಂಕ";
+$lang['Rating score, high &rarr; low'] = 'ಗುಣದರ್ಜೆಯ ಅಂಕ, ಹೆಚ್ಚು &rarr; ಕಡಿಮೆ';
+$lang['Rating score, low &rarr; high'] = 'ಗುಣದರ್ಜೆಯ ಅಂಕ, ಕಡಿಮೆ &rarr; ಹೆಚ್ಚು';
+$lang['Recent albums'] = "ಇತ್ತೀಚಿನ ಸಂಪುಟಗಳು";
+$lang['Recent period must be a positive integer value'] = "ಇತ್ತೀಚಿನ ಅವಧಿಯ   ";
+$lang['Recent period'] = "ಇತ್ತೀಚಿನ ಅವಧಿ";
+$lang['Recent photos'] = "ಇತ್ತೀಚಿನ ಚಿತ್ರಗಳು";
+$lang['Redirection...'] = "ಮರುನಿರ್ದೇಶನ...";
+$lang['Reduce diaporama speed'] = "ಪ್ರದರ್ಶಿಕೆಯ ವೇಗವನ್ನು ಕಡಿಮೆಗೊಳಿಸಿ";
+$lang['Register'] = "ನೋಂದಾಯಿಸಿ";
+$lang['Registration of %s'] = " %s ರ ನೋಂದಣಿ";
+$lang['Registration'] = "ನೋಂದಣಿ";
+$lang['Related tags'] = "ಸಂಬಂಧಿಸಿದ ಟ್ಯಾಗ್ ಗಳು";
+$lang['remove this tag from the list'] = "ಪಟ್ಟಿಯಿಂದ ಈ ಟ್ಯಾಗ್ ಅನ್ನು ತೆಗೆಯಿರಿ";
+$lang['Repeat the slideshow'] = "ಪ್ರದರ್ಶಿಕೆಯನ್ನು ಪುನರಾವರ್ತಿಸಿ";
+$lang['representative'] = 'ಸಂಪುಟದ ಕಿರುಚಿತ್ರ';
+$lang['Requested album does not exist'] = 'ಕೋರಿಕೆಯ ಸಂಪುಟ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ.';
+$lang['Requested tag does not exist'] = 'ಕೋರಿಕೆಯ ಟ್ಯಾಗ್  ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ';
+$lang['Reset to default values'] = "ಪೂರ್ವನಿಯೋಜಿತ ಮೌಲ್ಯಗಳಿಗೆ ಮರುಹೊಂದಿಸಿ";
+$lang['Reset'] = "ಮರುಹೊಂದಿಸಿ";
+$lang['Retrieve password'] = 'ಗುಪ್ತಪದವನ್ನು ಮರಳಿ ಪಡೆಯಿರಿ';
+$lang['Return to home page'] = 'ಮರಳಿ ಮುಖಪುಟಕ್ಕೆ';
+$lang['return to normal view mode'] = "ಸಾಮಾನ್ಯ ವೀಕ್ಷಣೆಗೆ ಮರಳಿ";
+$lang['return to the display of all photos'] = "ಎಲ್ಲಾ ಚಿತ್ರಗಳ ಪ್ರದರ್ಶನಕ್ಕೆ ಮರಳಿ";
+$lang['Search by date'] = "ದಿನಾಂಕದಂತೆ ಹುಡುಕಿ";
+$lang['Search for all terms'] = "ಎಲ್ಲಾ ಪದಗಳಿಗಾಗಿ ಹುಡುಕಿ";
+$lang['Search for any term'] = "ಯಾವುದಾದರೊಂದು ಪದಕ್ಕಾಗಿ ಹುಡುಕಿ";
+$lang['Search for Author'] = "ಲೇಖಕರ ಹೆಸರಿನಂತೆ ಹುಡುಕಿ";
+$lang['Search for words'] = "ಪದಗಳಂತೆ ಹುಡುಕಿ";
+$lang['Search in albums'] = "ಸಂಪುಟಗಳಲ್ಲಿ ಹುಡುಕಿ";
+$lang['Search in sub-albums'] = "ಉಪ-ಸಂಪುಟಗಳಲ್ಲಿ ಹುಡುಕಿ";
+$lang['Search results'] = "ಹುಡುಕಾಟದ ಫಲಿತಾಂಶಗಳು";
+$lang['Search rules'] = "ಹುಡುಕಾಟದ ಮಾನದಂಡಗಳು";
+$lang['Search tags'] = "ಟ್ಯಾಗ್ ಗಳನ್ನು ಹುಡುಕಿ";
+$lang['Search'] = "ಹುಡುಕಿ";
+$lang['search'] = "ಹುಡುಕಿ";
+$lang['searched words : %s'] = 'ಹುಡುಕಲ್ಪಟ್ಟ ಪದಗಳು: %s';
+$lang['Send my connection settings by email'] = 'ನನ್ನ ಸಂಪರ್ಕದ ವಿವರಗಳನ್ನು ಮಿಂಚೆಯ ಜೊತೆ ಕಳುಹಿಸಿ.';
+$lang['Sent by'] = "ಇವರಿಂದ ಕಳುಹಿಸಲಾಗಿದೆ";
+$lang['set as album representative'] = "ಸಂಪುಟದ thumbnail ನಂತೆ ಹೊಂದಿಸಿ";
+$lang['Show file metadata'] = "ಕಡತದ ಮೆಟಾಡೇಟಾ ವನ್ನು ತೋರಿಸಿ";
+$lang['Show latest comments first'] = 'ಇತ್ತೀಚಿನ ಟಿಪ್ಪಣಿಗಳನ್ನು ಮೊದಲು ತೋರಿಸಿ';
+$lang['Show number of comments'] = "ಟಿಪ್ಪಣಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸಿ";
+$lang['Show number of hits'] = "ಭೇಟಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸಿ";
+$lang['Show oldest comments first'] = 'ಹಳೆಯ ಟಿಪ್ಪಣಿಗಳನ್ನು ಮೊದಲು ತೋರಿಸಿ';
+$lang['show tag cloud'] = "ಟ್ಯಾಗ್ ಕ್ಲೌಡ್ ಅನ್ನು ತೋರಿಸಿ";
+$lang['Since'] = "ತರುವಾಯ";
+$lang['slideshow'] = "ಚಿತ್ರ ಪ್ರದರ್ಶಿಕೆ";
+$lang['small'] = 'S - ಚಿಕ್ಕದಾದ';
+$lang['Someone requested that the password be reset for the following user account:'] = 'ಈ ಕೆಳಗಿನ ಬಳಕೆದಾರರ  ಖಾತೆಯ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲು ಮನವಿ ಸಲ್ಲಿಸಿದ್ದಾರೆ:';
+$lang['Sort order'] = "ಅನುಕ್ರಮಣಿಕೆಯ ಕ್ರಮ";
+$lang['Specials'] = "ವಿಶೇಷವಾದವುಗಳು";
+$lang['stop the slideshow'] = "ಪ್ರದರ್ಶಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಿ";
+$lang['Submit'] = "ಸಲ್ಲಿಸಿ";
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'ಯಶಸ್ವಿಯಾಗಿ ನೋಂದಾಯಿಸಲಾಗಿದೆ, ನಿಮ್ಮ ಸಂಪರ್ಕದ ವಿವರಗಳಿರುವ ಮಿಂಚೆ ಸಧ್ಯದಲ್ಲೇ ನಿಮಗೆ ಸೇರಲಿದೆ. ಸುಸ್ವಾಗತ!';
+$lang['Tag results for'] = "ಟ್ಯಾಗ್ ನ ಫಲಿತಾಂಶಗಳು :";
+$lang['Tag'] = "ಟ್ಯಾಗ್";
+$lang['Tags'] = "ಟ್ಯಾಗ್ ಗಳು";
+$lang['Thank you for registering at %s!'] = '%s ರಲ್ಲಿ ನೋಂದಾಯಿಕೊಂಡಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು !';
+$lang['the beginning'] = "ಆರಂಭ";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ಯನ್ನು ನಿರ್ವಹಣೆಗಾಗಿ ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೊಮ್ಮೆ ಭೇಟಿ ಕೊಡಿ.';
+$lang['The number of photos per page must be a not null scalar'] = 'ಪ್ರತಿ ಪುಟದಲ್ಲಿನ  ಚಿತ್ರಗಳ ಸಂಖ್ಯೆ  ಶೂನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಇರಬೇಕು';
+$lang['The passwords do not match'] = 'ಪ್ರವೇಶಪದಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = "ಈ RSS feed ಈ ಜಾಲತಾಣದ ಆ ಎಲ್ಲಾ  ಹೊಸ ಸಂಗತಿಗಳ ತಿಳುವಳಿಕೆ ನೀಡುತ್ತದೆ : ಹೊಸ ಚಿತ್ರಗಳು, ಉನ್ನತೀಕರಿಸಿದ ಸಂಪುಟಗಳು,ಹೊಸ ಟಿಪ್ಪಣಿಗಳು. RSS feed reader ನ ಜೊತೆ ಉಪಯೋಗಿಸಿ. (The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.)"; 
+$lang['the username must be given'] = "ಬಳಕೆದಾರರ ಹೆಸರು ಕಡ್ಡಾಯ";
+$lang['This author modified following comment:'] = 'ಈ ಲೇಖಕರು ಈ ಕೆಳಗಿನ ಟಿಪ್ಪಣಿಯನ್ನು ತಿದ್ದುಪಡಿಮಾಡಿದ್ದಾರೆ:';
+$lang['This author removed the comment with id %d'] = 'ಈ ಲೇಖಕರು ಟಿಪ್ಪಣಿ ಯನ್ನು ತೆಗೆದಿದ್ದಾರೆ, ಟಿಪ್ಪಣಿ id : %d';
+$lang['this email address is already in use'] = "ಈ ಮಿಂಚೆ ವಿಳಾಸ ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ";
+$lang['This login is already used by another user'] = "ಈ ಲಾಗಿನ್ ಅನ್ನು ಈಗಾಗಲೇ ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರರು ಬಳಸುತ್ತಿದ್ದಾರೆ ";
+$lang['this login is already used'] = "ಈ ಲಾಗಿನ್ ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ";
+$lang['To reset your password, visit the following address:'] = 'ನಿಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲು ಈ ವಿಳಾಸಕ್ಕೆ ಭೇಟಿ ಕೊಡಿ :';
+$lang['today'] = "ಇಂದು";
+$lang['Unknown feed identifier'] = "ಅನಾಮಿಕ feed ಗುರುತು";
+$lang['Unknown identifier'] = "ಅನಾಮಿಕ ಗುರುತು";
+$lang['Update your rating'] = "ನಿಮ್ಮ ದರ್ಜೆಯನ್ನು ಉನ್ನತೀಕರಿಸಿ";
+$lang['useful when password forgotten'] = 'ಈ ಮಾಹಿತಿ, ಪ್ರವೇಶಪದ ಮರೆತುಹೋದ ಸಂದರ್ಭದಲ್ಲಿ ಉಪಯುಕ್ತ';
+$lang['User "%s" has no email address, password reset is not possible'] = 'ಬಳಕೆದಾರ "%s" ಮಿಂಚೆ ವಿಳಾಸ ನಮೂದಿಸಿಲ್ಲ, ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಸಾಧ್ಯವಿಲ್ಲ';
+$lang['User comments'] = "ಬಳಕೆದಾರರ ಟಿಪ್ಪಣಿಗಳು";
+$lang['User: %s'] = "ಬಳಕೆದಾರ: %s";
+$lang['Username "%s" on gallery %s'] = '%s ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)ಯಲ್ಲಿ  "%s" ಬಳಕೆದಾರ  ';
+$lang['Username modification'] = 'ಬಳಕೆದಾರರ ತಿದ್ದುಪಡಿ';
+$lang['Username or email'] = 'ಬಳಕೆದಾರರ ಹೆಸರು ಅಥವಾ ಮಿಂಚೆ ವಿಳಾಸ';
+$lang['Username'] = "ಬಳಕೆದಾರರ ಹೆಸರು";
+$lang['Username is mandatory'] = 'ಬಳಕೆದಾರರ ಹೆಸರು ಕಡ್ಡಾಯ';
+$lang['Username: %s'] = 'ಬಳಕೆದಾರರ ಹೆಸರು: %s';
+$lang['View in'] = 'ರ ದರ್ಶನ';
+$lang['View'] = "ದರ್ಶನ";
+$lang['Visits'] = "ಭೇಟಿಗಳು";
+$lang['Visits, high &rarr; low'] = 'ಭೇಟಿಗಳು, ಹೆಚ್ಚು  &rarr; ಕಡಿಮೆ';
+$lang['Visits, low &rarr; high'] = 'ಭೇಟಿಗಳು, ಕಡಿಮೆ &rarr; ಹೆಚ್ಚು';
+$lang['Website'] = 'ಜಾಲತಾಣ';
+$lang['Webmaster'] = "ವೆಬ್ ಮಾಸ್ಟರ್";
+$lang['Week %d'] = "ವಾರ : %d";
+$lang['Welcome to your Piwigo photo gallery!'] = 'ನಿಮ್ಮ Piwigo ಚಿತ್ರ ಶಾಲೆ (ಗ್ಯಾಲರಿ) ಗೆ ಸ್ವಾಗತ!';
+$lang['Welcome'] = 'ಸ್ವಾಗತ';
+$lang['wrong date'] = "ದಿನಾಂಕ ತಪ್ಪಾಗಿದೆ";
+$lang['xlarge'] = 'XL - ಅತಿ ದೊಡ್ಡದು';
+$lang['xsmall'] = 'XS - ಅತಿ ಚಿಕ್ಕದು';
+$lang['xxlarge'] = 'XXL - ದೊಡ್ಡದು';
+$lang['Yes'] = "ಹೌದು";
+$lang['You are not authorized to access the requested page'] = "ನೀವು ಬಯಸುತ್ತಿಯರುವ ಪುಟವನ್ನು ತಲುಪಲು ನಿಮಗೆ ಸಮ್ಮತಿಯಿಲ್ಲ. ";
+$lang['You will receive a link to create a new password via email.'] = 'ಹೊಸ ಪ್ರವೇಶಪದ ವನ್ನು ರಚಿಸುವ ಲಿಂಕ್ ಅನ್ನು  ನಿಮಗೆ ಮಿಂಚೆಯ ಮೂಲಕ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.';
+$lang['Your comment has been registered'] = "ನಿಮ್ಮ ಟಿಪ್ಪಣಿಯನ್ನು ನೋಂದಾಯಿಸಲಾಗಿದೆ ";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = "ನೋಂದಾವಣೆಯ ಮಾನದಂಡಗಳನ್ನು ನಿಮ್ಮ ಟಿಪ್ಪಣಿ ಪೂರೈಸಿಲ್ಲವಾದ್ದರಿಂದ ಅದನ್ನು ನೋದಾಯಿಸಲಾಗಿಲ್ಲ.";
+$lang['Your favorites'] = "ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳು";
+$lang['Your Gallery Customization'] = "ನಿಮ್ಮ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ಯ ವಿನ್ಯಾಸ";
+$lang['Your password has been reset'] = 'ನಿಮ್ಮ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ';
+$lang['Your username has been successfully changed to : %s'] = 'ನಿಮ್ಮ ಬಳಕೆದಾರರ ಹೆಸರನ್ನು  %s ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ';
+$lang['Your website URL is invalid'] = 'ನಿಮ್ಮ ಜಾಲತಾಣ ಪುಟದ ವಿಳಾಸ (URL) ಅಸಿಂಧುವಾಗಿದೆ';
+$lang['mandatory'] = 'ಕಡ್ಡಾಯ';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... or please deactivate this message, I will find my way by myself';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood system: please wait a moment before trying to post another comment';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Bad status for user "guest", default status will be used. Please notify the webmaster.';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies are blocked or not supported by your browser. You must enable cookies to log in.';
+$lang['Default'] = 'ಪೂರ್ವನಿಯೋಜಿತ';
+$lang['Empty query. No criteria has been entered.'] = 'Empty query. No criteria have been entered.';
+$lang['IP: %s'] = 'IP: %s';
+$lang['%d Kb'] = '%d Kb';
+$lang['thumb'] = 'ಕಿರುಚಿತ್ರ';
+$lang['square'] = 'ಚೌಕಟ್ಟು';
+$lang['Thumbnails'] = 'ಕಿರುಚಿತ್ರಗಳು';
+$lang['Sort by'] = 'ಈ ಅನುಕ್ರಮಣಿಕೆಯಂತೆ';
+$lang['SQL queries in'] = 'SQL queries in';
+$lang['RSS feed'] = 'RSS feed';
+$lang['Powered by'] = 'Powered by';
+$lang['N/A'] = 'N/A';
+$lang['Email'] = 'ಮಿಂಚೆ';
+$lang['First Page'] = 'ಮೊದಲ ಪುಟ';
+$lang['Go back to the album'] = 'ಸಂಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿ';
+$lang['Last Page'] = 'ಕೊನೆಯ ಪುಟ';
+?>
Index: /tags/2.6.0RC1/language/kn_IN/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Start Install'] = 'ಸ್ಥಾಪನಾ ಕಾರ್ಯವನ್ನು ಆರಂಭಿಸಿ';
+$lang['verification'] = 'ಪರಿಶೀಲನೆ';
+$lang['user password given by your host provider'] = 'ಹೋಸ್ಟ್ ಪ್ರೊವೈಡರ್ ಒದಗಿಸಿರುವ ನಿಮ್ಮ ಬಳಕೆದಾರರ ಪ್ರವೇಶಪದ ';
+$lang['user login given by your host provider'] = 'ಹೋಸ್ಟ್ ಪ್ರೊವೈಡರ್ ಒದಗಿಸಿರುವ ನಿಮ್ಮ ಬಳಕೆದಾರರ ಲಾಗಿನ್';
+$lang['please enter your password again'] = 'ನಿಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೊಮ್ಮೆ ನಮೂದಿಸಿ';
+$lang['enter a login for webmaster'] = 'ವೆಬ್ ಮಾಸ್ಟರ್ ನ ಲಾಗಿನ್ ಅನ್ನು ನಮೂದಿಸಿ';
+$lang['Welcome to your new installation of Piwigo!'] = 'ನಿಮ್ಮ ಹೊಸ Piwigo ಸ್ಥಾಪನಾ ಕಾರ್ಯಕ್ಕೆ ಸುಸ್ವಾಗತ';
+$lang['Welcome to my photo gallery'] = 'ನನ್ನ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ಗೆ ಸುಸ್ವಾಗತ.';
+$lang['User'] = 'ಬಳಕೆದಾರ';
+$lang['Sorry!'] = 'ಕ್ಷಮಿಸಿ!';
+$lang['Default gallery language'] = 'ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)ಯ  ಪೂರ್ವನಿಯೋಜಿತ ಭಾಷೆ';
+$lang['Host'] = 'ಹೋಸ್ಟ್';
+$lang['Installation'] = 'ಸ್ಥಾಪನೆ';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'ಸಹಾಯ ಬೇಕೆ? ನಿಮ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು  <a href="%s">Piwigo message board</a> ನಲ್ಲಿ ಕೇಳಿ.';
+$lang['Just another Piwigo gallery'] = 'ಇದು ನಿಮ್ಮದೇ  Piwigo ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)';
+$lang['Database name'] = 'ಡೇಟಾಬೇಸಿನ ಹೆಸರು';
+$lang['Can\'t connect to server'] = 'ಸರ್ವರ್ ನೊಂದಿಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.';
+$lang['Congratulations, Piwigo installation is completed'] = 'ಅಭಿನಂದನೆಗಳು, ನಿಮ್ಮ Piwigo ದ ಸ್ಥಾಪನೆ ಇದೀಗ ಯಶಸ್ವಿಯಾಗಿ ಮುಗಿದಿದೆ.';
+$lang['Admin configuration'] = 'ನಿರ್ವಹಣೆಗಾರರ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Admin configuration)';
+$lang['Basic configuration'] = 'ಮೂಲ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Basic configuration)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'local/config/database.inc.php ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ ವನ್ನು ರೂಪಿಸುವಲ್ಲಿ ವಿಫಲ.';
+$lang['Database configuration'] = 'ಡೇಟಾಬೇಸ್ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Database configuration)';
+$lang['Download the config file'] = 'ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ (config file) ವನ್ನು ಇಳಿಸಿಕೊಳ್ಳಿ';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'ಗಮನಿಸಿ : ನಿಮ್ಮ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳನ್ನು ನೀವೇ ಬದಲಾಯಿಸಬಹುದು ಮತ್ತು ಆನಂತರ ಅದರ ಬಳಕೆಗಾಗಿ Piwigo ಅನ್ನು ಮರುಚಾಲಿಸಿ.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = '.htaccess ಕಡತವನ್ನು ರೂಪಿಸುವುದರ ಅಥವಾ ಮಾರ್ಪಡಿಸುವುದರ ಮೂಲಕ Piwigo ನಿಮ್ಮ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳನ್ನು  PHP 5 ಗೆ ವರ್ಗಾಯಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ಗೆ PHP 5  ಅನ್ನು ಸಿಧ್ಧಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.';
+$lang['Try to configure PHP 5'] = 'PHP 5  ಅನ್ನು ಸಿಧ್ಧಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ.';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'ಸ್ಥ್ಪಾಪನಾ ಕಾರ್ಯದಲ್ಲಿ, ನೀವು ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ ವನ್ನು ಇಳಿಸಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಅದನ್ನು local/config ಡೈರಕ್ಟರಿಗೆ ವರ್ಗಾಯಿಸಬಹುದು.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning: database.inc.php must only contain what is in the textarea, no line return or space character)';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ ಗಳ ಹೆಸರುಗಳಿಗೆ ಪೂರ್ವಪ್ರತ್ಯಯ ( prefix ) ಗಳನ್ನು ಅಳವಡಿಸುತ್ತದೆ. (ಟೇಬಲ್ ಗಳನ್ನು ಉತ್ತಮ ರೀತಿಯಲ್ಲಿ ನಿರ್ವಹಿಸಲು ಇದು ನಿಮಗೆ ಸಹಾಯಕ)';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ಯಾವುದೇ ಬಗೆಯ ಸಹಾಯಕ್ಕೆ ನಮ್ಮ ಈ ಚರ್ಚಾವೇದಿಕೆ (forum) ಗಳನ್ನು ಬಳಸುವಲ್ಲಿ ಹಿಂಜರಿಯಬೇಡಿ : %s';
+$lang['Database table prefix'] = 'ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ ಗಳ ಪೂರ್ವಪ್ರತ್ಯಯ ( prefix )';
+$lang['Password ']['confirm'] = 'ಪ್ರವೇಶಪದ [ಖಾತ್ರಿ]';
+$lang['PHP 5 is required'] = 'PHP 5 ಅತ್ಯಗತ್ಯವಾಗಿದೆ.';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'ಈ ವಿವರಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಇಡಿ, ಇದು ನಿಮಗೆ ನಿರ್ವಹಣಾ ಪ್ಯಾನೆಲ್ ಅನ್ನು ಬಳಸುವಾಗ ಉಪಯೊಗಕ್ಕೆ ಬರುತ್ತದೆ.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'ಈ ವಿವರಗಳು ನೋಡುಗರಿಗೆ ಲಭ್ಯವಿರುತ್ತವೆ, ಜಾಲತಾಣ ನಿರ್ವಹಣಾ ಕಾರ್ಯಕ್ಕೆ ಇದು ಅತ್ಯಗತ್ಯ.';
+$lang['It appears your webhost is currently running PHP %s.'] = 'ನಿಮ್ಮ ವೆಬ್ ಹೋಸ್ಟ್ ಸಧ್ಯಕ್ಕೆ PHP %s ಅನ್ನು ಬಳಸುತ್ತಿದೆ.';
+$lang['Hope to see you back soon.'] = 'ಮತ್ತೆ ಸಧ್ಯದಲ್ಲೇ ಭೇಟಿಯಾಗೋಣ.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'ಸರ್ವರ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ, ಆದರೆ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'ತಾಣ ನಿರ್ವಹಣೆಗಾರರ (ಸೈಟ್ ಅಡ್ಮಿನ್) ನ್ನು ಸಂಪರ್ಕಿಸಲು ಬಳಕೆದಾರರು/ನೋಡುಗರು ಈ ಮಿಂಚೆ ವಿಳಾಸವನ್ನು ಬಳಸಬಹುದಾಗಿದೆ';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'PHP 5 ಗೆ ನೀವು ಹೇಗೆ ಬದಲಾಯಿಸಿಕೊಳ್ಳ ಬಹುದು ಎಂಬುದರ ವಿವರಗಳನ್ನು ನಿಮ್ಮ ಹೋಸ್ಟಿಂಗ್ ಪ್ರೊವೈಡರ್ ಅವರ ಸಹಾಯದಲ್ಲಿ ನೋಡಿರಿ.';
+$lang['also given by your host provider'] = 'ಹಾಗೂ ನಿಮ್ಮ ಹೋಸ್ಟಿಂಗ್ ಪ್ರೊವೈಡರ್ ಅವರಿಂದ ಪೂರೈಸಿದೆ';
+$lang['webmaster login can\'t contain characters \' or "'] = 'ವೆಬ್ ಮಾಸ್ಟರ್ ಲಾಗಿನ್ \' ಅಥವಾ " ಸಂಕೇತಾಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬಾರದು';
+$lang['localhost or other, supplied by your host provider'] = 'ನಿಮ್ಮ ಹೋಸ್ಟ್ ಪ್ರೊವೈಡರ್ ಒದಗಿಸಿರುವ ಲೋಕಲ್ ಹೋಸ್ಟ್ ಅಥವಾ ಇತರೆ';
+?>
Index: /tags/2.6.0RC1/language/kn_IN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ಕನ್ನಡ [IN]
Index: /tags/2.6.0RC1/language/kn_IN/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/kn_IN/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/kn_IN/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Upgrade from version %s to %s'] = '%s ದಿಂದ %s ಕ್ಕೆ ಉನ್ನತೀಕರಿಸಿ';
+$lang['total SQL time'] = 'SQL ಸಮಯದ ಒಟ್ಟು ಮೊತ್ತ';
+$lang['total upgrade time'] = 'ಉನ್ನತೀಕರಣದ ಸಮಯದ ಒಟ್ಟು ಮೊತ್ತ';
+$lang['You do not have access rights to run upgrade'] = 'ಉನ್ನತೀಕರಣವನ್ನು ಕೈಗೊಳ್ಳಲು ನಿಮಗೆ ಹಕ್ಕುಗಳಿಲ್ಲ.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'ಈ ಪುಟವು ನಿಮ್ಮ ಹಳೆಯ ಪಿವಿಗೋ ಆವೃತ್ತಿಯಿಂದ ಹೊಸ ಆವೃತ್ತಿಯ ಡೇಟಾಬೇಸ್ ಗೆ ಉನ್ನತೀಕರಿಸಲು ಸೂಚಿಸುತ್ತಿದೆ. ಉನ್ನತೀಕರಣದ ಸಹಾಯಕವು ನೀವು ಸಧ್ಯಕ್ಕೆ  <strong>release %s</strong> ಅಥವಾ ಅದರ ಸಮಾನವಾದುದನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದೀರೆಂದು ಅಂದುಕೊಂಡಿದೆ.';
+$lang['User permissions and group permissions have been erased'] = 'ಬಳಕೆದಾರರ ಮತ್ತು ಗುಂಪುಗಳ ಅನುಮತಿಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ.';
+$lang['Upgrade'] = 'ಉನ್ನತೀಕರಿಸಿ';
+$lang['Upgrade informations'] = 'ಉನ್ನತೀಕರಣದ ವಿವರಗಳು';
+$lang['Statistics'] = 'ಅಂಕಿಅಂಶಗಳು';
+$lang['SQL queries'] = 'SQL ಕ್ವೆರಿಗಳು';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'ಏನಾದಾರೂ ತೊಂದರೆ ಉಂಟಾಗಿದ್ದಲ್ಲಿ, ನಿರ್ವಹಣೆ ಚೆಕ್ ಇನ್ ಅನ್ನು ಮಾಡಿ [Administration>Tools>Maintenance] ';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'ಕಿರುಚಿತ್ರದ ಪ್ರತ್ಯಯ ಮತ್ತು ವೆಬ್ ಮಾಸ್ಟರ್ ರ ಮಿಂಚೆ ವಿಳಾಸಗಳನ್ನು ಮಾತ್ರ ಈ ಹಿಂದಿನ ಕಾರ್ಯಸಿದ್ಧತಾ ಪಟ್ಟಿಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'ಕೇವಲ ನಿರ್ವಹಣೆಗಾರರು ಮಾತ್ರ ಉನ್ನತೀಕರಣ ಮಾಡಬಹುದು. ದಯವಿಟ್ಟು ಈ ಕೆಳಗೆ ಸೈನ್ ಇನ್ ಆಗಿರಿ.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '<i>%s</i> ನಲ್ಲಿ, ಮುಂದೆ <b>?></b>, ಸೇರಿಸಿ:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'ಮುನ್ನೆಚ್ಚರಿಕೆಯಾಗಿ, ಈ ಕೆಳಕಂಡ ಥೀಮ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಇವುಗಳನ್ನು ಮರುಸಕ್ರಿಯಗೊಳಿಸುವ ಮುನ್ನ ಉನ್ನತೀಕರಿಸಬಹುದಾದ ಥೀಮ್ ಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'ಮುನ್ನೆಚ್ಚರಿಕೆಯಾಗಿ, ಈ ಕೆಳಕಂಡ ಪ್ಲಗ್ ಇನ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಇವುಗಳನ್ನು ಮರುಸಕ್ರಿಯಗೊಳಿಸುವ ಮುನ್ನ ಉನ್ನತೀಕರಿಸಬಹುದಾದ ಪ್ಲಗ್ ಇನ್ ಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ.';
+$lang['All sub-albums of private albums become private'] = 'ಎಲ್ಲಾ ಖಾಸಗಿ ಸಂಪುಟಗಳ ಉಪ-ಸಂಪುಟಗಳು ಖಾಸಗಿಯಾಗುತ್ತವೆ';
+?>
Index: /tags/2.6.0RC1/language/ko_KR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ko_KR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ko_KR/admin.lang.php	(revision 25596)
@@ -0,0 +1,35 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Add group'] = '그룹 추가';
+$lang['Add tags'] = '태그 추가';
+$lang['Add/delete a permalink'] = '퍼마링크 추가/삭제';
+$lang['Added by %s'] = '%s이(가) 추가함';
+$lang['%d guest'] = '%d 손님';
+$lang['%d guests'] = '%d 손님';
+$lang['%d hour'] = '%d 시간';
+$lang['%d hours'] = '%d 시간';
+$lang['%d day'] = '%d 일';
+$lang['%d days'] = '%d 일';
+$lang['%d group'] = '%d 그룹';
+$lang['%d groups'] = '%d 그룹';
+?>
Index: /tags/2.6.0RC1/language/ko_KR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ko_KR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ko_KR/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: 한국어 [KR]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=509
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "한국어";
+$lang_info['country'] = "대한민국";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "en";
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d 개의 앨범이 업데이트 되었습니다';
+$lang['%d albums updated'] = '%d 개의 앨범이 업데이트 되었습니다';
+$lang['%d comment to validate'] = '%d 개의 승인 대기중인 댓글이 있습니다';
+$lang['%d comments to validate'] = '%d 개의 승인 대기중인 댓글이 있습니다';
+$lang['%d new comment'] = '%d 개의 새 댓글이 있습니다';
+$lang['%d new comments'] = '%d 개의 새 댓글이 있습니다';
+$lang['%d comment'] = '댓글 %d 개';
+$lang['%d comments'] = '댓글 %d 개';
+$lang['%d hit'] = '조회수 %d';
+$lang['%d hits'] = '조회수 %d';
+$lang['%d new photo'] = '%d 개의 새 사진';
+$lang['%d new photos'] = '%d 개의 새 사진';
+$lang['%d new user'] = '%d 명의 신규 사용자';
+$lang['%d new users'] = '%d 명의 신규 사용자';
+$lang['About'] = 'About';
+$lang['All tags'] = '모든 태그';
+$lang['Any tag'] = '아무 태그';
+$lang['At least one listed rule must be satisfied.'] = '적어도 하나의 기준을 만족해야 합니다.';
+$lang['Author'] = '작성자';
+$lang['Albums'] = '앨범';
+$lang['Album'] = '앨범';
+$lang['Close this window'] = '창 닫기';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS피드 (사진과 댓글)';
+$lang['Confirm Password'] = '비밀번호 확인';
+$lang['Connection settings'] = '접속설정';
+$lang['Login'] = '로그인';
+$lang['Contact webmaster'] = '웹마스터에게 연락하기';
+$lang['Create a new account'] = '새 계정 만들기';
+$lang['Created on'] = '생성일';
+$lang['Creation date'] = '만들어진 날짜';
+$lang['Current password is wrong'] = '현재 비밀번호가 잘못되었습니다';
+$lang['Dimensions'] = '해상도';
+$lang['Display'] = '표시';
+$lang['Each listed rule must be satisfied.'] = '각각의 기준을 만족해야 합니다.';
+$lang['Email address'] = '메일 주소';
+$lang['Enter your personnal informations'] = '개인 정보를 입력해 주세요';
+$lang['Error sending email'] = '메일을 보내는 중 오류가 발생하였습니다';
+$lang['File name'] = '파일명';
+$lang['File'] = '파일';
+$lang['Filesize'] = '파일 크기';
+$lang['Filter and display'] = '필터 후 표시';
+$lang['Filter'] = '필터';
+$lang['Forgot your password?'] = '비밀번호를 잊으셨나요?';
+$lang['Go through the gallery as a visitor'] = '손님으로 앨범 구경';
+$lang['Help'] = '도움말';
+$lang['Identification'] = '확인';
+$lang['Photos only RSS feed'] = 'RSS피드 사진들';
+$lang['Keyword'] = '키워드';
+$lang['Notification'] = '알림';
+$lang['Number of items'] = '항목 수';
+$lang['Original dimensions'] = '원본 해상도';
+$lang['Password forgotten'] = '비밀번호를 잃어버렸습니다';
+$lang['Password'] = '비밀번호';
+$lang['Post date'] = '등록일';
+$lang['Posted on'] = '등록일';
+$lang['Profile'] = '프로필';
+$lang['Quick connect'] = '빠른 연결';
+$lang['RSS feed'] = 'RSS 피드';
+$lang['Register'] = '신규 가입';
+$lang['Registration'] = '새 사용자 등록';
+$lang['Related tags'] = '관련 태그';
+$lang['Reset'] = '초기화';
+$lang['Retrieve password'] = '비밀번호 찾기';
+$lang['Search rules'] = '검색 조건';
+$lang['Search tags'] = '태그 검색';
+$lang['Search'] = '검색';
+$lang['display available tags'] = '사용 가능한 태그 보이기';
+$lang['Since'] = '기간';
+$lang['Sort by'] = '정렬 기준';
+$lang['Sort order'] = '정렬 순서';
+$lang['Tag'] = '태그';
+$lang['Tags'] = '태그';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS 피드 알림은 이 사이트의 새 사진, 댓글, 업데이트된 앨범에 대해 알려줍니다. RSS 리더와 함께 사용하세요.';
+$lang['Unknown feed identifier'] = '알 수 없는 피드 식별자입니다';
+$lang['User comments'] = '사용자 댓글';
+$lang['Username'] = '사용자명';
+$lang['Visits'] = '방문자';
+$lang['Webmaster'] = '웹마스터';
+$lang['Week %d'] = '이번주 %d';
+$lang['About Piwigo'] = 'Piwigo에 대해';
+$lang['You are not authorized to access the requested page'] = '이 페이지에 접근할 권한이 없습니다';
+$lang['add this photo to your favorites'] = '이 사진을 즐겨찾기에 추가';
+$lang['Administration'] = '관리';
+$lang['all'] = '모두';
+$lang['ascending'] = '오름차순';
+$lang['author(s) : %s'] = '작성자 : %s';
+$lang['Expand all albums'] = '모든 앨범 열기';
+$lang['posted after %s (%s)'] = '%s (%s) 이후의 포스트';
+$lang['posted before %s (%s)'] = '%s (%s) 이전의 포스트';
+$lang['posted between %s (%s) and %s (%s)'] = '%s (%s) 부터 %s (%s) 까지의 포스트';
+$lang['posted on %s'] = '%s 의 포스트';
+$lang['Best rated'] = '최고 등급';
+$lang['display best rated photos'] = '최고 등급의 사진들 보기';
+$lang['Calendar'] = '달력';
+$lang['All'] = '모두';
+$lang['display each day with photos, month per month'] = '매일을 사진으로 표시하여 한달을 표시합니다';
+$lang['View'] = '보기';
+$lang['chronology_monthly_calendar'] = '월별 캘린더';
+$lang['chronology_monthly_list'] = '월별 리스트';
+$lang['chronology_weekly_list'] = '주간 리스트';
+$lang['New on %s'] = '새로 등록됨(%s)';
+$lang['Click here if your browser does not automatically forward you'] = '자동으로 이동되지 않을 땐 이곳을 클릭하세요';
+$lang['comment date'] = '댓글 등록일';
+$lang['Comment'] = '댓글';
+$lang['Your comment has been registered'] = '댓글이 등록되었습니다';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = '도배 방지 시스템: 다른 댓글을 달기 전까지 잠시만 기다려 주세요.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = '유효 조건에 어긋난 의견이기 때문에 댓글이 등록되지 않았습니다';
+$lang['An administrator must authorize your comment before it is visible.'] = '관리자의 승인이 있기 전까지 다른 사용자들이 이 댓글을 볼 수 없습니다.';
+$lang['This login is already used by another user'] = '다른 사용자가 이미 이 계정을 사용중입니다';
+$lang['Comments'] = '댓글';
+$lang['Add a comment'] = '댓글 남기기';
+$lang['created after %s (%s)'] = '%s 이후 생성됨 (%s)';
+$lang['created before %s (%s)'] = '%s 이전 생성됨(%s)';
+$lang['created between %s (%s) and %s (%s)'] = '%s (%s) 에서 %s (%s) 사이에 생성됨';
+$lang['created on %s'] = '%s 에 생성됨';
+$lang['Customize'] = '개인화';
+$lang['Your Gallery Customization'] = '갤러리 개인화';
+$lang['Default'] = '기본값';
+$lang['delete this photo from your favorites'] = '이 사진을 즐겨찾기에서 삭제';
+$lang['Delete'] = '삭제';
+$lang['descending'] = '내림차순';
+$lang['Download'] = '내려받기';
+$lang['Download this file'] = '이 파일을 내려받기';
+$lang['edit'] = '편집';
+$lang['wrong date'] = '잘못된 날짜';
+$lang['excluded'] = '제외됨';
+$lang['Your favorites'] = '나의 즐겨찾기';
+$lang['display your favorites photos'] = '내 즐겨찾는 사진들을 표시';
+$lang['Favorites'] = '즐겨찾기';
+$lang['First'] = '처음';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = '이 갤러리는 유지/보수를 위해 잠겨 있습니다. 나중에 다시 방문해 주세요.';
+$lang['Page generated in'] = '페이지 생성됨';
+$lang['guest'] = '손님';
+$lang['Hello'] = '안녕하세요!';
+$lang['available for administrators only'] = '관리자만 사용 가능합니다';
+$lang['display this album'] = '이 앨범을 표시';
+$lang['display last user comments'] = '마지막 사용자 댓글을 표시';
+$lang['customize the appareance of the gallery'] = '갤러리 외형을 개인화합니다';
+$lang['search'] = '검색';
+$lang['Home'] = '홈';
+$lang['day'][0] = '일요일';
+$lang['day'][1] = '월요일';
+$lang['day'][2] = '화요일';
+$lang['day'][3] = '수요일';
+$lang['day'][4] = '목요일';
+$lang['day'][5] = '금요일';
+$lang['day'][6] = '토요일';
+$lang['month'][10] = "10월";
+$lang['month'][11] = "11월";
+$lang['month'][12] = "12월";
+$lang['month'][1] = "1월";
+$lang['month'][2] = "2월";
+$lang['month'][3] = "3월";
+$lang['month'][4] = "4월";
+$lang['month'][5] = "5월";
+$lang['month'][6] = "6월";
+$lang['month'][7] = "7월";
+$lang['month'][8] = "8월";
+$lang['month'][9] = "9월";
+$lang['Links'] = '링크';
+$lang['in this album'] = '이 앨범에서';
+$lang['in %d sub-album'] = '%d 하위 앨범에서';
+$lang['in %d sub-albums'] = '%d 하위 앨범에서';
+$lang['included'] = '포함됨';
+$lang['Invalid password!'] = '잘못된 비밀번호!';
+$lang['Language'] = '언어';
+$lang['last %d days'] = '최근 %d 일';
+$lang['Last'] = '마지막';
+$lang['Logout'] = '로그아웃';
+$lang['obligatory'] = '필수';
+$lang['display a calendar by creation date'] = '만들어진 날짜별로 달력 표시';
+$lang['display all photos in all sub-albums'] = '하위 앨범의 모든 사진 표시';
+$lang['return to normal view mode'] = '일반 모드로 돌아감';
+$lang['display a calendar by posted date'] = '등록된 날짜별로 달력 표시';
+$lang['Most visited'] = '최다 방문';
+$lang['display most visited photos'] = '가장 많이 방문한 사진 표시';
+$lang['Unknown identifier'] = '알 수 없는 식별자';
+$lang['New password'] = '새 비밀번호';
+$lang['Rate this photo'] = '이 사진 평가';
+$lang['Next'] = '다음';
+$lang['no rate'] = '평점 없음';
+$lang['Photos posted within the last %d day.'] = '%d 일 이내에 등록된 사진.';
+$lang['Photos posted within the last %d days.'] = '%d 일 이내에 등록된 사진.';
+$lang['password updated'] = '비밀번호가 변경되었습니다';
+$lang['Recent period must be a positive integer value'] = '최근 기간은 양의 정수여야 합니다';
+$lang['photo'] = '사진';
+$lang['Click on the photo to see it in high definition'] = '고해상도로 보시려면 사진을 클릭하세요';
+$lang['Show file metadata'] = 'Metadata 보기';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = '환경설정';
+$lang['Previous'] = '이전';
+$lang['Random photos'] = '무작위 사진';
+$lang['display a set of random photos'] = '무작위로 사진들을 보여줍니다';
+$lang['Recent albums'] = '최근 앨범';
+$lang['display recently updated albums'] = '최근에 업데이트된 앨범을 보여줍니다';
+$lang['Recent period'] = '최근 기간';
+$lang['Recent photos'] = '최근 사진';
+$lang['display most recent photos'] = '가장 최근의 사진을 보여줍니다';
+$lang['Redirection...'] = '연결중...';
+$lang['Please, enter a login'] = '로그인 정보를 입력하세요';
+$lang['login mustn\'t end with a space character'] = '공백문자로 끝낼 수 없습니다';
+$lang['login mustn\'t start with a space character'] = '공백문자로 시작할 수 없습니다';
+$lang['this login is already used'] = '이 정보는 이미 사용중입니다';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = '메일 주소는 xxx@yyy.eee 처럼 되야 합니다. (예 : jack@altern.org)';
+$lang['Auto login'] = '자동 로그인';
+$lang['remove this tag from the list'] = '목록에서 이 태그를 삭제';
+$lang['representative'] = '대표사진';
+$lang['Search for Author'] = '작성자로 검색';
+$lang['Search in albums'] = '앨범에서 검색';
+$lang['Search by date'] = '날짜로 검색';
+$lang['Date'] = '날짜';
+$lang['End-Date'] = '끝나는 날짜';
+$lang['Kind of date'] = '날짜의 종류';
+$lang['Submit'] = '등록';
+$lang['Yes'] = '예';
+$lang['No'] = '아니오';
+$lang['%d photo'] = '%d 개 사진';
+$lang['%d photos'] = '%d 개 사진';
+$lang['%d photo is also linked to current tags'] = '현재 태그에 %d 개의 사진이 연결되어 있습니다';
+$lang['%d photos are also linked to current tags'] = '현재 태그에 %d 개의 사진들이 연결되어 있습니다';
+$lang['display photos linked to this tag'] = '이 태그에 연결된 사진들 보이기';
+$lang['photos posted during the last %d days'] = '최근 %d 일간 등록된 사진들';
+$lang['Piwigo Help'] = 'Piwigo 도움말';
+$lang['Rank'] = '등급';
+$lang['group by letters'] = '문자로 그룹화';
+$lang['letters'] = '문자';
+$lang['show tag cloud'] = '태그 구름 보이기';
+$lang['cloud'] = '구름';
+$lang['Reset to default values'] = '기본값으로 설정';
+$lang['delete all photos from your favorites'] = '즐겨찾기의 모든 사진을 지웁니다';
+$lang['Sent by'] = '보낸이';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = '쿠키가 차단되었거나 지원되지 않는 브라우저입니다. 로그인하기 위해서는 쿠키를 사용해야 합니다.';
+$lang['Edit a comment'] = '댓글 편집';
+$lang['Are you sure?'] = '확실합니까?';
+$lang['(!) This comment requires validation'] = '(!) 이 댓글은 확인이 필요합니다.';
+$lang['Welcome'] = '환영합니다';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Piwigo 포토 갤러리에 오신것을 환영합니다!';
+$lang['... or browse your empty gallery'] = '... 혹은 빈 갤러리를 탐색합니다';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... 혹은 이 메시지를 비활성화합니다. 스스로 무언가를 해 봅니다.';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = '안녕하세요 %s, 현재 갤러리가 비었습니다!';
+$lang['I want to add photos'] = '사진을 등록하고 싶습니다';
+$lang['Manage this user comment: %s'] = '이 사용자 댓글 관리: %s';
+$lang['Email address is missing. Please specify an email address.'] = '메일 주소란이 비었습니다. 메일 주소를 확인 해 주세요.';
+$lang['This author modified following comment:'] = '이 작성자가 다음 댓글을 수정하였습니다:';
+$lang['This author removed the comment with id %d'] = '이 작성자가 다음 사용자의 댓글을 삭제하였습니다: %d';
+$lang['%d rates'] = '%d 개의 평가';
+$lang['A comment on your site'] = '당신의 웹 사이트에 댓글이 있습니다';
+$lang['Accelerate diaporama speed'] = '슬라이드쇼 속도 증가';
+$lang['Admin: %s'] = '관리자: %s';
+$lang['Album results for'] = '앨범 결과';
+$lang['Album: %s'] = '앨범: %s';
+$lang['Author: %s'] = '작성자: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = '"손님"사용자의 상태가 나빠 기본 상태를 사용합니다. 관리자에게 알려주세요.';
+$lang['Browser: %s'] = '브라우저: %s';
+$lang['Change my password'] = '비밀번호 변경';
+$lang['Check your email for the confirmation link'] = '인증을 위해 이메일을 확인 해 주세요';
+$lang['Comment by %s'] = '%s님의 댓글';
+$lang['Comment: %s'] = '댓글: %s';
+$lang['Connected user: %s'] = '접속중인 사용자: %s';
+$lang['Contact'] = '연락처';
+$lang['display only recently posted photos'] = '최근 등록된 사진만 보기';
+$lang['Edit'] = '편집';
+$lang['Email: %s'] = '이메일: %s';
+$lang['Empty query. No criteria has been entered.'] = '없는 요청입니다. 조건이 비었을 수 있습니다.';
+$lang['Enter your new password below.'] = '새 암호를 입력해주세요.';
+$lang['EXIF Metadata'] = 'EXIF 메타데이터';
+$lang['from %s to %s'] = '%s님이 %s님에게';
+$lang['Hello %s,'] = '%s님 안녕하세요,';
+$lang['html tags are not allowed in login'] = '로그인 폼에 html태그는 허용되지 않습니다';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = '만약 실수였다면 이 이메일을 무시하셔도 됩니다.';
+$lang['Invalid key'] = '잘못된 키';
+$lang['Invalid username or email'] = '잘못된 사용자 이름이나 이메일';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'IPTC 메타데이터';
+$lang['Menu'] = '메뉴'; 
+$lang['Email address is mandatory'] = '이메일 주소는 필수항목입니다';
+$lang['First Page'] = '첫 페이지';
+$lang['Manual sort order'] = '사용자 정의 순서';
+$lang['N/A'] = 'N/A';
+$lang['Not repeat the slideshow'] = '슬라이드쇼 반복하지 않기';
+$lang['Number of photos per page'] = '페이지상 사진 수';
+$lang['Page not found'] = '페이지를 찾을 수 없습니다';
+$lang['Username: %s'] = '사용자명: %s';
+$lang['Website'] = '웹사이트';
+$lang['You will receive a link to create a new password via email.'] = '이메일로 새로운 암호 설정을 위한 링크가 전송되었습니다.';
+$lang['Your password has been reset'] = '암호가 초기화 되었습니다.';
+$lang['Your website URL is invalid'] = '웹사이트 URL이 올바르지 않습니다';
+$lang['Password Reset'] = '암호 초기화';
+$lang['Return to home page'] = '홈페이지로 돌아가기';
+$lang['Search results'] = '검색 결과';
+$lang['searched words : %s'] = '검색된 단어: %s';
+$lang['set as album representative'] = '앨범 표지로 등록';
+$lang['slideshow'] = '슬라이드쇼';
+$lang['square'] = '사각형';
+$lang['stop the slideshow'] = '슬라이드쇼 정지';
+$lang['the beginning'] = '시작';
+$lang['the username must be given'] = '사용자명이 필요합니다';
+$lang['this email address is already in use'] = '이미 사용중인 이메일입니다';
+$lang['thumb'] = '대표사진';
+$lang['today'] = '오늘';
+$lang['Show latest comments first'] = '최신 댓글을  먼저 보기';
+$lang['Show number of comments'] = '댓글 개수 보기';
+$lang['Show oldest comments first'] = '오래된 댓글을 먼저 보기';
+$lang['Someone requested that the password be reset for the following user account:'] = '누군가가 다음 사용자의 암호 초기화를 요청했습니다:';
+$lang['Thank you for registering at %s!'] = '%s에 등록 해 주셔서 감사합니다!';
+$lang['The passwords do not match'] = '암호가 일치하지 않습니다';
+$lang['Thumbnails'] = '썸네일';
+$lang['User "%s" has no email address, password reset is not possible'] = '사용자 "%s"의 이메일 정보가 없어, 암호 초기화가 불가능합니다.';
+$lang['User: %s'] = '사용자: %s';
+$lang['Username is mandatory'] = '사용자명은 필수 항목입니다.';
+$lang['Username modification'] = '사용자명 변경';
+$lang['Username or email'] = '사용자명 혹은 이메일';
+$lang['mandatory'] = '필수';
+$lang['Password: %s'] = '암호: %s';
+$lang['Pause of slideshow'] = '슬라이드쇼 일시정지';
+$lang['Photo sizes'] = '사진 크기';
+$lang['Play of slideshow'] = '슬라이드쇼 재생';
+$lang['Quick search'] = '빠른 검색';
+$lang['Repeat the slideshow'] = '슬라이드쇼 반복';
+$lang['Requested album does not exist'] = '요청한 앨범이 존재하지 않습니다';
+$lang['Requested tag does not exist'] = '요청한 태그가 존재하지 않습니다';
+$lang['Original'] = '원본';
+$lang['Mobile'] = '모바일';
+$lang['Bad request'] = '잘못된 요청';
+$lang['Email'] = '이메일';
+$lang['File name, A &rarr; Z'] = '파일명, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = '파일명, Z &rarr; A';
+$lang['Go back to the album'] = '앨범으로 돌아가기';
+$lang['Last Page'] = '마지막 페이지';
+$lang['return to the display of all photos'] = '모든 사진 보기로 돌아가기';
+$lang['%d Kb'] = '%d KB';
+$lang['%d rate'] = '%d개의 평점';
+$lang['2small'] = 'XXS - tiny';
+$lang['xxlarge'] = 'XXL - huge';
+$lang['small'] = 'S - small';
+$lang['xlarge'] = 'XL - extra large';
+$lang['xsmall'] = 'XS - extra small';
+$lang['large'] = 'L - large';
+$lang['medium'] = 'M - medium';
+$lang['To reset your password, visit the following address:'] = '비밀번호 초기화를 위해 다음 주소를 방문하십시오:';
+$lang['Show number of hits'] = '방문자 수 보기';
+$lang['Permalink for album not found'] = '앨범의 Permalink를 찾을 수 없습니다';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo가 복구할 수 없는 예외를 만났습니다.';
+$lang['Date created, new &rarr; old'] = '생성일, 최신 &rarr; 이전';
+$lang['Date created, old &rarr; new'] = '생성일, 이전 &rarr; 최신';
+$lang['Date posted, new &rarr; old'] = '작성일, 최신 &rarr; 이전';
+$lang['Date posted, old &rarr; new'] = '작성일, 이전 &rarr; 최신';
+$lang['Visits, high &rarr; low'] = '방문자수, 내림차순';
+$lang['Visits, low &rarr; high'] = '방문자수, 오름차순';
+$lang['Update your rating'] = '평점 변경';
+$lang['Reduce diaporama speed'] = '슬라이드쇼 느리게';
+$lang['Rating score, low &rarr; high'] = '평점, 오름차순';
+$lang['Photo title, A &rarr; Z'] = '사진 제목, A->Z';
+$lang['Photo title, Z &rarr; A'] = '사진 제목, Z->A';
+$lang['Rating score, high &rarr; low'] = '평점, 내림차순';
+$lang['Rating score'] = '평점';
+$lang['useful when password forgotten'] = '암호를 잊은 경우를 대비';
+$lang['Username "%s" on gallery %s'] = '갤러리 %s에 있는 사용자명 "%s"';
+$lang['Tag results for'] = '태그 겸색 결과 : ';
+$lang['The number of photos per page must be a not null scalar'] = '페이지당 사진 수는 0이 아닌 정수여야 합니다';
+$lang['Password reset is not allowed for this user'] = '해당 사용자는 암호 초기화를 할 수 없습니다.';
+$lang['Please enter your username or email address.'] = '사용자명 혹은 이메일 주소를 입력하십시오.';
+$lang['Specials'] = '특집';
+$lang['Registration of %s'] = '%s 등록';
+$lang['Search for all terms'] = '모든 단어로 검색';
+$lang['Search for any term'] = '아무 단어나 검색';
+$lang['Search for words'] = '단어로 검색';
+$lang['Your username has been successfully changed to : %s'] = '성공적으로 사용자명을 %s로 변경하였습니다.';
+$lang['Numeric identifier, 1 &rarr; 9'] = '숫자 식별자, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = '숫자 식별자,  9 &rarr; 1';
+$lang['SQL queries in'] = 'SQL 쿼리에 ';
+$lang['Here are your connection settings'] = '접속 설정은 다음과 같습니다';
+$lang['Send my connection settings by email'] = '접속 설정을 이메일로 보내기';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = '성공적으로 가입되었습니다. 곧 접속 설정이 있는 이메일을 받으실겁니다. 환영합니다.';
+$lang['View in'] = '다음에서 보기 : ';
+$lang['Search in sub-albums'] = '서브 앨범에서 검색';
+$lang['Desktop'] = '컴퓨터';
+$lang['Forbidden'] = '금지됨';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = '만약 오류로 이 메일을 수신했다고 생각하시면, %s 로 연락 바랍니다.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '암호 확인이 입력되지 않았습니다. 선택한 암호를 확인하십시오.';
+$lang['Password is missing. Please enter the password.'] = '암호가 입력되지 않았습니다. 암호를 입력하십시오.';
+$lang['%d photos per page'] = '페이지당 %d 개의 사진';
+?>
Index: /tags/2.6.0RC1/language/ko_KR/index.php
===================================================================
--- /tags/2.6.0RC1/language/ko_KR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ko_KR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ko_KR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ko_KR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ko_KR/install.lang.php	(revision 25596)
@@ -0,0 +1,60 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['also given by your host provider'] = '호스팅 공급자가 제공';
+$lang['enter a login for webmaster'] = '웹마스터 사용자명을 입력하십시오';
+$lang['localhost or other, supplied by your host provider'] = 'localhost 혹은 호스팅 공급자가 제공한 값';
+$lang['user login given by your host provider'] = '호스팅 공급자가 제공한 사용자 아이디';
+$lang['user password given by your host provider'] = '호스팅 공급자가 제공한 사용자 암호';
+$lang['webmaster login can\'t contain characters \' or "'] = '웹마스터 사용자명은 \' 혹은 " 을 포함 할 수 없습니다';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = '설정 파일을 다운로드 하신 후 설치 디렉토리의 local/config 에 복사 할 수도 있습니다.';
+$lang['Admin configuration'] = '설정관리자 서';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = '필요하시면 망설이지 말고 포럼에 문의하세요: %s';
+$lang['Visitors will be able to contact site administrator with this mail'] = '방문객이 이 이메일 주소로 사이트 관리자에게 연락 할 것입니다.';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = '데이터베이스 테이블 이름 앞에 추가됩니다 (데이터베이스 테이블을 잘 관리할 수 있도록 해 줍니다)';
+$lang['verification'] = '확인';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = '도움이 필요하신가요? <a href="%s">Piwigo message board</a>에 물어보세요.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'PHP5 설정에 실패했습니다';
+$lang['Try to configure PHP 5'] = 'PHP5 설정 시도중';
+$lang['Welcome to my photo gallery'] = '사진 갤러리에 오신 것을 환영합니다';
+$lang['please enter your password again'] = '암호를 다시 입력하십시오';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '또다른 방법으로는 위의 텍스트 상자에 있는 문장을 복사하여 "local/config/database.inc.php"에 복사하는 방법입니다.
+(경고: database.inc.php는 줄바꿈이나 스페이스 없이 위 텍스트 상자에 있는 내용만 포함해야 합니다. ';
+$lang['Congratulations, Piwigo installation is completed'] = '축하합니다, Piwigo설치가 끝났습니다';
+$lang['Default gallery language'] = '기본 언어';
+$lang['PHP 5 is required'] = 'PHP5가 필요합니다';
+$lang['Password ']['confirm'] = '암호 [확인]';
+$lang['Sorry!'] = '죄송합니다!';
+$lang['Start Install'] = '설치 시작';
+$lang['User'] = '사용자';
+$lang['Basic configuration'] = '기본 설정';
+$lang['Can\'t connect to server'] = '서버에 접속 할 수 없습니다';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = '축하합니다. Piwigo설치가 끝났습니다.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = '설정파일 local/conf/database.inc.php 을 만들 수 없습니다.';
+$lang['Database configuration'] = '설정데이터베이스 서';
+$lang['Database name'] = '데이터베이스명';
+$lang['Database table prefix'] = '데이터베이스 테이블 접미사';
+$lang['Download the config file'] = '설정파일 다운로드';
+$lang['Host'] = '트명호스트';
+$lang['Installation'] = '설치';
+$lang['It appears your webhost is currently running PHP %s.'] = '웹서버가 PHP %s를 사용중입니다';
+?>
Index: /tags/2.6.0RC1/language/ko_KR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ko_KR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ko_KR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+한국어 [KR]
Index: /tags/2.6.0RC1/language/kok_IN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/kok_IN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/kok_IN/common.lang.php	(revision 25596)
@@ -0,0 +1,128 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: कोंकणी [IN]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=660
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'कोंकणी';
+$lang_info['country'] = 'भारत';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'kok';
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d आल्बम अद्यावत केला';
+$lang['%d albums updated'] = '%d आल्बम अद्यावत केल्यात';
+$lang['%d comment to validate'] = '%d वैध थारावूंक टिप्पणी दिवची';
+$lang['%d comment'] = '%d टिप्पणी';
+$lang['%d comments to validate'] = '%d वैध थारावूंक टिप्पण्यो दिवच्यो';
+$lang['%d comments'] = '%d टिप्पण्यो';
+$lang['%d hit'] = '%d हिट';
+$lang['%d hits'] = '%d हिट्स';
+$lang['%d Kb'] = '%d केबी';
+$lang['%d new comment'] = '%d नवी टिप्पणी';
+$lang['%d new comments'] = '%d नव्यो टिप्पण्यो';
+$lang['%d new photo'] = '%d नवो फोटो';
+$lang['%d new photos'] = '%d नवे फोटे';
+$lang['%d new user'] = '%d नवो वापरपी';
+$lang['%d new users'] = '%d नवे वापरपी';
+$lang['%d photo is also linked to current tags'] = '%d फोटो सध्याच्या टॅग्सांक लिंक्ड केल्ले आसात';
+$lang['%d photo'] = '%d फोटो';
+$lang['%d photos are also linked to current tags'] = '%d फोटे सध्याच्या टॅग्सांक लिंक्ड केल्ले आसात';
+$lang['%d photos'] = '%d फोटे';
+$lang['%d rates'] = '%d दर';
+$lang['(!) This comment requires validation'] = '(!) हे टिप्पणीक सत्यत्वस्थापनाची आवश्यकता आसा';
+$lang['... or browse your empty gallery'] = '... वा तुमची रिकामी गॅलरी ब्रावज करची';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... वा उपकार करून हो संदेश असक्रीय करचो, म्हजी वाट हांव स्वता सोदून काडटलों';
+$lang['A comment on your site'] = 'तुमचे सायटीटचेर टिप्पणी';
+$lang['About Piwigo'] = 'Piwigo विशीं';
+$lang['About'] = 'विशीं';
+$lang['Date'] = "तारीख";
+$lang['day'][0] = "आयतार";
+$lang['day'][1] = "सोमार";
+$lang['day'][2] = "मंगळार";
+$lang['day'][3] = "बुधवार";
+$lang['day'][4] = "बिरेस्तार";
+$lang['day'][5] = "शुक्रार";
+$lang['day'][6] = "शेनवार";
+$lang['month'][10] = "ऑक्टोबर";
+$lang['month'][11] = "नोव्हेंबर";
+$lang['month'][12] = "डिसेंबर";
+$lang['month'][1] = "जानेवारी";
+$lang['month'][2] = "फेब्रुवारी";
+$lang['month'][3] = "मार्च";
+$lang['month'][4] = "एप्रिल";
+$lang['month'][5] = "मे";
+$lang['month'][6] = "जून";
+$lang['month'][7] = "जुलाय";
+$lang['month'][8] = "ऑगस्ट";
+$lang['month'][9] = "सप्टेंबर";
+$lang['Username is mandatory'] = 'वापरप्याचें नांव सक्तीचें आसा';
+$lang['Username: %s'] = 'वापरप्याचें नांव: %s';
+$lang['View in'] = 'दृश्य करचें';
+$lang['View'] = 'दृश्य';
+$lang['Visits'] = 'भेटी';
+$lang['Visits, high &rarr; low'] = 'भेटी, चड &rarr; निम्न';
+$lang['Visits, low &rarr; high'] = 'भेटी, निम्न &rarr; चड';
+$lang['Website'] = 'वॅबसायट';
+$lang['Webmaster'] = 'वॅबमास्टर';
+$lang['Week %d'] = 'सप्तक %d';
+$lang['Welcome to your Piwigo photo gallery!'] = 'तुमचे Piwigo फोटो गॅलरीक येवकार!';
+$lang['Welcome'] = 'येवकार';
+$lang['wrong date'] = 'चुकीची तारीख';
+$lang['xlarge'] = 'XL – मायझ व्हड';
+$lang['xsmall'] = 'XS – मायझ ल्हान';
+$lang['xxlarge'] = 'XXL - व्हडलें';
+$lang['Yes'] = 'हय';
+$lang['You are not authorized to access the requested page'] = 'मागणी केल्ल्या पानांक ऍक्सॅस करूंक तुमकां अधिकार ना';
+$lang['You will receive a link to create a new password via email.'] = 'तुमकां ई-मेली वरवीं नवो पासवर्ड निर्माण करूंक एक लिंक मेळटलें.';
+$lang['Your comment has been registered'] = 'तुमची टिप्पणीची नोंदणी केल्या';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'तुमची टिप्पणी नोंदणी केल्ली ना कारण ती वैधताय नियमाचो पाळो करिना';
+$lang['Your favorites'] = 'तुमचे आवडीचे';
+$lang['Repeat the slideshow'] = 'स्लायडशो परत दाखोवचो';
+$lang['representative'] = 'आल्बम थंबनेल';
+$lang['Requested album does not exist'] = 'मागणी केल्लो आल्बम अस्तित्वांत ना';
+$lang['Requested tag does not exist'] = 'मागणी केल्लो टॅग अस्तित्वांत ना';
+$lang['Reset to default values'] = 'डिफॉल्ट मोलाचेर परत सॅट करचें';
+$lang['Reset'] = 'परत सॅट करचें';
+$lang['Retrieve password'] = 'पासवर्ड परत मेळोवचो';
+$lang['Return to home page'] = 'मुखेल पानाचेर परतुचें';
+$lang['return to normal view mode'] = 'सामान्य दृश्य मोडाचेर परतुचें';
+$lang['return to the display of all photos'] = 'सगळ्या फोट्याच्या प्रदर्शनाचेर परतुचें';
+$lang['Search by date'] = 'तारखे प्रमाणें सोदचें';
+$lang['Search for all terms'] = 'सगळ्या शब्दांक सोदचे';
+$lang['Search for any term'] = 'खंयच्याय शब्दाक सोदचो';
+$lang['Search for Author'] = 'लेखकाक सोदचो';
+$lang['Search for words'] = 'उतरां सोदचीं';
+$lang['Search in albums'] = 'आल्बमांनी सोदचें';
+$lang['Search in sub-albums'] = 'उप-आल्बमांनी सोदचें';
+$lang['Search results'] = 'सोद निकाल';
+$lang['Search rules'] = 'सोद निकश';
+$lang['Search tags'] = 'सोदपाचे टॅग्स';
+$lang['Search'] = 'सोद';
+$lang['search'] = 'सोद';
+
+?>
Index: /tags/2.6.0RC1/language/kok_IN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/kok_IN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/kok_IN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+कोंकणी[IN]
Index: /tags/2.6.0RC1/language/lb_LU/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lb_LU/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lb_LU/common.lang.php	(revision 25596)
@@ -0,0 +1,203 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Lëtzebuergesch [LU]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=715
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Lëtzebuergesch ';
+$lang_info['country'] = 'Luxembourg';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'lb';
+$lang_info['zero_plural'] = true;
+
+
+$lang['day'][0] = 'Sonden';
+$lang['day'][1] = 'Méinden';
+$lang['day'][2] = 'Denschten';
+$lang['day'][3] = 'Mettwoch';
+$lang['day'][4] = 'Donneschten';
+$lang['day'][5] = 'Freiden';
+$lang['day'][6] = 'Samschten';
+$lang['%d album updated'] = '%d Album aktualiséiert';
+$lang['%d albums updated'] = '%d D\'Albumen aktualiséiert';
+$lang['%d comment'] = '%d Kommentar';
+$lang['%d comment to validate'] = '%d Kommentar fräigin';
+$lang['%d comments'] = '%d Kommentaren';
+$lang['%d comments to validate'] = '%d Kommentaren fräigin';
+$lang['%d hit'] = '%d Opruff';
+$lang['%d photo'] = 'Foto';
+$lang['%d photos'] = 'Fotoen';
+$lang['%d new user'] = 'neien Benotzer';
+$lang['%d new photos'] = 'nei Fotoen';
+$lang['%d new photo'] = 'nei Foto';
+$lang['%d new comments'] = 'nei Kommentaren';
+$lang['%d new comment'] = 'neien Kommentar';
+$lang['%d hits'] = 'Opriff';
+$lang['%d rates'] = 'Bewäertungen';
+$lang['(!) This comment requires validation'] = 'Dëse Kommentar muss iwwerpréift ginn';
+$lang['2small'] = 'klinzeg';
+$lang['A comment on your site'] = 'Ee Kommentar op hirer Homepage';
+$lang['About'] = 'Iwwert eis';
+$lang['About Piwigo'] = 'Iwert Piwingo';
+$lang['%d new users'] = 'nei Benotzer';
+$lang['%d rate'] = 'Bewäertung';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS-Feed';
+$lang['Comment'] = 'Kommentar';
+$lang['Are you sure?'] = 'Si dir sécher';
+$lang['At least one listed rule must be satisfied.'] = 'Et muss opmanst eng Regel erfellt sin.';
+$lang['Author'] = 'Auteur';
+$lang['Auto login'] = 'Auto-Login';
+$lang['Calendar'] = 'Kalenner';
+$lang['Change my password'] = 'Mäi Passwuert änneren';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Een Administrateur muss äre Beitrag fräischalten éier en sichtbar ass.';
+$lang['Accelerate diaporama speed'] = 'Diashow méi séier';
+$lang['Administration'] = 'Administratioun';
+$lang['Album'] = 'Album';
+$lang['Album results for'] = 'Albumresultater fir';
+$lang['Albums'] = 'Albumen';
+$lang['All'] = 'Alles';
+$lang['All tags'] = 'All d\'Schlagwierder';
+$lang['... or browse your empty gallery'] = 'oder duerchwullt är eidel Gallerie';
+$lang['... or please deactivate this message, I will find my way by myself'] = 'oder iwwergéi dës Meldung. Ech gin eleng eens.';
+$lang['Rate this photo'] = 'Foto bewäerten';
+$lang['Recent albums'] = 'Neisten Albumen';
+$lang['Recent photos'] = 'Neisten Fotoen';
+$lang['Redirection...'] = 'Ëmleedung';
+$lang['Reduce diaporama speed'] = 'Diashow méi lues';
+$lang['Profile'] = 'Profil';
+$lang['RSS feed'] = 'RSS-Feed';
+$lang['Related tags'] = 'Matt de Schlagwierder';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ass op een net novollzéibare Feeler gestouss ';
+$lang['Pause of slideshow'] = 'Diashow unhalen';
+$lang['Photos only RSS feed'] = 'RSS-Feed (nëmmen Fotoen)';
+$lang['Piwigo Help'] = 'Piwigo-Hëllef';
+$lang['Play of slideshow'] = 'Diashow virufueren';
+$lang['Posted on'] = 'Agedroen den';
+$lang['Preferences'] = 'Astellungen';
+$lang['New password'] = 'Neit Passwuert';
+$lang['Next'] = 'Virun';
+$lang['No'] = 'Nee';
+$lang['Not repeat the slideshow'] = 'Diashow net widderhuelen';
+$lang['Notification'] = 'RSS-Feed';
+$lang['Original'] = 'Original';
+$lang['Page not found'] = 'D\'Säit net fond';
+$lang['Password'] = 'Passwuert';
+$lang['Password Reset'] = 'Passwuert zerécksetzen';
+$lang['Password forgotten'] = 'Passwuert vergiess';
+$lang['IPTC Metadata'] = 'IPTC-Metadaten';
+$lang['Keyword'] = 'Schlagwuert';
+$lang['Language'] = 'Sprooch';
+$lang['Links'] = 'Linken';
+$lang['Login'] = 'Umeldung';
+$lang['Logout'] = 'ofmellen';
+$lang['Menu'] = 'Menu';
+$lang['File'] = 'Datei';
+$lang['File name'] = 'Numm vun der Datei';
+$lang['Filter'] = 'Filter';
+$lang['Filter and display'] = 'filteren an uweisen';
+$lang['Forbidden'] = 'Verbueden';
+$lang['Hello'] = 'Moien';
+$lang['Help'] = 'Hëllef';
+$lang['Email'] = 'E-Mail';
+$lang['Email address'] = 'E-Mail-Adress';
+$lang['Email address is mandatory'] = 'E-Mail-Adress ass néideg';
+$lang['Favorites'] = 'Favoriten';
+$lang['Download this file'] = 'Datei eroflueden';
+$lang['Download'] = 'eroflueden';
+$lang['Connection settings'] = 'Umeldung';
+$lang['Contact'] = 'Kontakt';
+$lang['Contact webmaster'] = 'E-mail un de Webmaster';
+$lang['Date'] = 'Datum';
+$lang['Delete'] = 'läschen';
+$lang['Desktop'] = 'Desktop';
+$lang['Comments'] = 'Kommentaren';
+$lang['Username or email'] = 'Benotzernumm oder E-mail-Adress';
+$lang['Username'] = 'Benotzernumm';
+$lang['Sent by'] = 'Gescheckt vun';
+$lang['Show file metadata'] = 'Metadaten weisen';
+$lang['Sort by'] = 'Zortéieren no';
+$lang['Tag'] = 'Schlagwuert';
+$lang['Tags'] = 'Schlagwierder';
+$lang['Repeat the slideshow'] = 'Diashow widderhuelen';
+$lang['Reset'] = 'zerécksetzen';
+$lang['Retrieve password'] = 'Passwuert ofruffen';
+$lang['Search'] = 'sichen';
+$lang['Search by date'] = 'no engem Datum sichen';
+$lang['Search for Author'] = 'no engem Autor sichen';
+$lang['Search for words'] = 'No Wierder sichen';
+$lang['Search in albums'] = 'An den Albumen sichen';
+$lang['xsmall'] = 'zimlech kleng';
+$lang['xxlarge'] = 'ganz grouss';
+$lang['search'] = 'sichen';
+$lang['slideshow'] = 'Diashow';
+$lang['small'] = 'kleng';
+$lang['square'] = 'quadratesch';
+$lang['the beginning'] = 'Ufank';
+$lang['the username must be given'] = 'Benotzernumm feelt';
+$lang['today'] = 'haut';
+$lang['wrong date'] = 'Datum ass falsch';
+$lang['xlarge'] = 'besonnesch grouss';
+$lang['month']['12'] = 'Dezember';
+$lang['month']['1'] = 'Januar';
+$lang['month']['2'] = 'Februar';
+$lang['month']['3'] = 'Mäerz';
+$lang['month']['4'] = 'Abrëll';
+$lang['month']['5'] = 'Mee';
+$lang['month']['6'] = 'Juni';
+$lang['month']['7'] = 'Juli';
+$lang['month']['8'] = 'August';
+$lang['month']['9'] = 'September';
+$lang['no rate'] = 'nach keng Bewäertung';
+$lang['obligatory'] = 'obligatoresch';
+$lang['password updated'] = 'Passwuert aktualiséieren';
+$lang['photo'] = 'Foto';
+$lang['edit'] = 'beaarbechten';
+$lang['excluded'] = 'ausgeschloss';
+$lang['guest'] = 'Gaascht';
+$lang['in this album'] = 'an dësem Album';
+$lang['included'] = 'enthalen';
+$lang['large'] = 'grouss';
+$lang['letters'] = 'Buschtawen';
+$lang['medium'] = 'mëttel';
+$lang['month']['10'] = 'Oktober';
+$lang['month']['11'] = 'November';
+$lang['display most visited photos'] = 'Weis déi ';
+$lang['display this album'] = 'Weis dësen Album';
+$lang['all'] = 'all';
+$lang['cloud'] = 'Wollek';
+$lang['Welcome'] = 'Wëllkomm';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Wëllkomm!';
+$lang['Your favorites'] = 'Meng Favoriten';
+$lang['Your password has been reset'] = 'Äert Passwuert ass zeréckgesat gin';
+$lang['View'] = 'Usiicht';
+$lang['View in'] = 'Uweisen am';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Website'] = 'Homepage';
+$lang['Yes'] = 'Jo';
+$lang['Your website URL is invalid'] = 'Des Homepage URL ass falsch';
+?>
Index: /tags/2.6.0RC1/language/lb_LU/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/lb_LU/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/lb_LU/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Lëtzebuergesch [LU]
Index: /tags/2.6.0RC1/language/lt_LT/about.html
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>Ši nuotraukų galerija yra sukurta naudojant Piwigo.</p>
+
+<p>Piwigo yra nuotraukų galerijos programinė įranga skirta puslapiams, sukurta aktyvių narių bendruomenių ir kurėjų.
+ Plėtiniai padaro Piwigo  visiems lengvai pritaikoma. Ji yra visiškai nemokama.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Apsilankykite Piwigo internetinėje svetainėje</a></p>
+
+<p>Vertimas į lietuvių  sutvarkytas pagal (vardai abecelės tvarka)
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=17714">Giedrelis</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18781">vilisas</a></li>
+    </ul>
+Labai ačiū vertėjams!</p>
Index: /tags/2.6.0RC1/language/lt_LT/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/admin.lang.php	(revision 25596)
@@ -0,0 +1,969 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['%d users were not updated.'] = '%d vartotojų neatnaujinta.';
+$lang['%d users were updated.'] = '%d vartotojų atnaujinta.';
+$lang['%d waiting for validation'] = '%d laukia patvirtinimo';
+$lang['%d week'] = '%d savaitę';
+$lang['%d weeks'] = '%d savaitės';
+$lang['%d year'] = '%d metus';
+$lang['%d years'] = '%d metų';
+$lang['%s ago'] = 'prieš %s';
+$lang['%s has been successfully updated.'] = '%s sėkmingai atnaujinta.';
+$lang['%s in the future'] = '%s ateityje';
+$lang['%d parameters were updated.'] = '%d parametrai pakeisti.';
+$lang['%d photo was deleted'] = '%d nuotrauka ištrinta';
+$lang['%d photos uploaded'] = 'įkelta %d nuotraukų';
+$lang['%d photos were deleted'] = 'ištrinta %d nuotrauka';
+$lang['%d physical'] = ' %d fizinių';
+$lang['%d physicals'] = ' %d fizinių';
+$lang['%d second'] = '%d sekundė';
+$lang['%d seconds'] = '%d sekundžių';
+$lang['%d tag'] = '%d žymė';
+$lang['%d tags'] = '%d žymės';
+$lang['%d user'] = '%d vartotojas';
+$lang['%d user comment rejected'] = '%d vartotojų komentaras atmestas';
+$lang['%d user comment validated'] = '%d vartotojų komentaras patvirtintas';
+$lang['%d user comments rejected'] = '%d vartotojų komentarų atmesta';
+$lang['%d user comments validated'] = '%d vartotojų komentarų patvirtinta';
+$lang['%d user deleted'] = '%d vartotojas pašalintas';
+$lang['%d user was not updated.'] = '%d vartotojų neatnaujinta';
+$lang['%d user was updated.'] = '%d vartotojas atnaujintas';
+$lang['%d users'] = '%d vartotojų';
+$lang['%d users deleted'] = '%d vartotojų pašalinta';
+$lang['%d guest'] = '%d svečias';
+$lang['%d guests'] = '%d svečiai';
+$lang['%d hour'] = '%d valanda';
+$lang['%d hours'] = '%d valandų';
+$lang['%d line filtered'] = '%d eilutė nufiltruota';
+$lang['%d lines filtered'] = '%d eilutės nufiltruotos';
+$lang['%d mail was not sent.'] = '%d pranešimas nebuvo išsiųstas.';
+$lang['%d mail was sent.'] = '%d pranešimas išsiųstas.';
+$lang['%d mails were not sent.'] = '%d pranešimai nebuvo išsiųsta.';
+$lang['%d mails were sent.'] = '%d pranešimai išsiųsta.';
+$lang['%d member'] = '%d narys';
+$lang['%d members'] = '%d nariai';
+$lang['%d minute'] = '%d minutė';
+$lang['%d minutes'] = '%d minučių';
+$lang['%d month'] = '%d mėnesį';
+$lang['%d months'] = '%d mėnesius';
+$lang['%d of %d photos selected'] = 'pasirinkta %d iš %d nuotraukų';
+$lang['%d parameter was updated.'] = '%d parametras atnaujintas';
+$lang[' and %d virtuals'] = ' ir %d virtualių';
+$lang[' and %d virtual'] = ' ir %d virtualių';
+$lang['%d album including'] = 'įskaitant %d albumą';
+$lang['%d album moved'] = '%d albumas perkeltas';
+$lang['%d albums including'] = 'įskaitant %d albumus';
+$lang['%d albums moved'] = '%d albumų perkelta';
+$lang['%d anomalies have been detected corrected.'] = 'aptikta ir sutvarkyta %d anomalijų(-os).';
+$lang['%d anomalies have been detected.'] = 'aptikta %d anomalijų(-os).';
+$lang['%d anomalies have been ignored.'] = 'ignoruota %d anomalijų(-os).';
+$lang['%d anomalies have not been corrected.'] = '%d anomalijų(-os) nebuvo sutvarkyta.';
+$lang['%d anomaly has been corrected.'] = '%d anomalijų(-os) buvo sutvarkyta.';
+$lang['%d anomaly has been detected.'] = 'aptikta %d anomalija.';
+$lang['%d anomaly has been ignored.'] = 'ignoruota %d anomalija.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalija nebuvo sutvarkyta.';
+$lang['%d association'] = '%d asociacija';
+$lang['%d associations'] = '%d asociacijų';
+$lang['%d day'] = '%d diena';
+$lang['%d days'] = '%d dienos';
+$lang['%d group'] = '%d grupė';
+$lang['%d groups'] = '%d grupės';
+$lang['Check all'] = 'Patikrinti viską';
+$lang['Check for updates'] = 'Ieškoti atnaujinimų';
+$lang['Check for upgrade'] = 'Ieškoti patobulinimų';
+$lang['Batch Manager'] = 'Paketinis menedžeris';
+$lang['Bound Theme'] = 'Susieta tema';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Pagal nutylėjima kompozicijos centru laikomas geometrinis fotografijos centras.';
+$lang['Center of interest'] = 'Intereso centras';
+$lang['Available on'] = 'Prieinama';
+$lang['Available only with HTML format'] = 'Prieinama tik HTML formatu';
+$lang['Available versions for'] = 'Prieinamos versijos';
+$lang['Average rate'] = 'Vidutinis įvertinimas';
+$lang['By %s'] = 'Autorius %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Pagal nutylėjimą Piwigo sukurs nauja web dydį iš HD (didelės raiškos) jūsų nuotraukų versijų.';
+$lang['By rank'] = 'Pagal įvertinimą';
+$lang['Caddie'] = 'Krepšelis';
+$lang['Caddie management'] = 'Krepšelio tvarkymas';
+$lang['Can\'t connect to server.'] = 'Neįmanoma prisijungti prie serverio.';
+$lang['Can\'t create temporary file.'] = 'Laikinas failas negali būti sukurtas.';
+$lang['Can\'t download archive.'] = 'Neišeina atsisiųsti archyvo.';
+$lang['Can\'t read or extract archive.'] = 'Neišeina perskaityti ar išskleisti archyvo.';
+$lang['Cancel'] = 'Atšaukti';
+$lang['Cannot delete the old permalink !'] = 'Neįmanoma ištrinti senu fikstuotų nuorodų!';
+$lang['Change Admin Colors'] = 'Keisti administracijos spalvas';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture yra galingas įrankis, leidžiantis tvarkyti masyvias bibliotekas Mac\'u';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture sukurtas profesionaliems fotografams su iPhoto paprastumu.';
+$lang['Apply action'] = 'Taikyti veiksmą';
+$lang['Apply selected corrections'] = 'Vykdyti pasirinktus pakeitimus';
+$lang['Apply to sub-albums'] = 'Taikyti subalbumams';
+$lang['Apply watermark if height is bigger than'] = 'Uždėti vandens ženklą, jei aukštis didesnis nei';
+$lang['Apply watermark if width is bigger than'] = 'Uždėti vandens ženklą, jei plotis didesnis nei';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Apytiksliai maksimali rezoliucija: %dM pikseliu (tai %dx%d pikselių).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ar esate tikras, kad norite instaliuoti šį atnaujinimą ? Jūs turite patikrinti, ar ši versija nereikalauja prieš tai išinstaliuoti senosios.';
+$lang['Are you sure you want to delete this plugin?'] = 'Esate tikras, kad norite ištrinti šį priedą ?';
+$lang['Are you sure you want to install this plugin?'] = 'Esate tikras, kad norite instaliuoti šį priedą ?';
+$lang['Associate to album'] = 'Asociuoti su albumu';
+$lang['Associated'] = 'Asociuota';
+$lang['Authorize users to add comments on selected albums'] = 'Leisti vartotojams komentuoti pasiriniktus albumus';
+$lang['Authorized'] = 'Leidžiama';
+$lang['Automatic correction'] = 'Automatinė korekcija';
+$lang['Automatic sort order'] = 'Automatinė rūšiavimo tvarka';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u vartotojai turi automatinius leidimus, kurias suteikia grupės, kurioms jie priklauso.';
+$lang['Add detailed content'] = 'Pridėti papildomą turinį';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom yra fotografijos programa. Ji sukurta tvarkyti dideliems kiekiams skaitmeninių nuotraukų ir atlikti post produkcini darbą.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Išskleidžiant įvyko klaida. Prašome pasitikrinti piwigo instaliacijos failų leidimus.<br><a href="%s">Klaidų logas čia</a>.';
+$lang['An error has occured during upgrade.'] = 'Instaliuojant atnaujinimus įvyko klaida.';
+$lang['An error occured during extraction (%s).'] = 'Išskleidžiant failus (%s) įvyko klaida.';
+$lang['An information email was sent to group "%s"'] = 'Informacinins pranešimas nusiųstas į "%s" grupę';
+$lang['Anomaly'] = 'Anomalija';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Tik webmasteriai gali matyti šį tab\'ą, o ne administratoriai.';
+$lang['Applications'] = 'Programos';
+$lang['Allow user customization'] = 'Leisti vartotojams pasikeisti galerijos išvaizdą';
+$lang['All extensions are up to date.'] = 'Visų išplėtimų versijos naujausios.';
+$lang['All languages are up to date.'] = 'Visų kalbų versijos naujausios.';
+$lang['All optimizations have been successfully completed.'] = 'Visos optimizacijos buvo sėkmingai užbaigtos.';
+$lang['All plugins are up to date.'] = 'Visų priedų versijos naujausios.';
+$lang['All themes are up to date.'] = 'Visų temų versijos naujausios.';
+$lang['Allow rating'] = 'Leisti reitingavimą';
+$lang['Allow user registration'] = 'Leisti vartotojų registraciją';
+$lang['Allow users to delete their own comments'] = 'Leisti vartotojams trinti savo komentarus';
+$lang['Allow users to edit their own comments'] = 'Leisti vartotojams redaguoti savo komentarus';
+$lang['Allowed file types: %s.'] = 'Leidžiami failų tipai: %s.';
+$lang['Add to caddie'] = 'Pridėti į krepšelį';
+$lang['Add write access to the "%s" directory'] = 'Pridėti leidimą rašyti į "%s" katalogą';
+$lang['Add/delete a permalink'] = 'Pridėti/pašalinti fiksuotą nuorodą';
+$lang['Added by %s'] = 'Įdėjo ';
+$lang['Administration Home'] = 'Administracijos puslapis';
+$lang['Advanced features'] = 'Papildomos funkcijos';
+$lang['Album "%s" has been added'] = 'Albumas "%s" pridėtas';
+$lang['Album "%s" now contains %d photos'] = 'albumas "%s" dabar turi %d nuotraukas(-ų)';
+$lang['Album list management'] = 'Albumų sąrašo valdymas';
+$lang['Album manual order was saved'] = 'Albumų rankinis išrūšiavimas išsaugotas';
+$lang['Album name'] = 'Albumo pavadinimas';
+$lang['Album photos associated to the following albums: %s'] = 'Albumo nuotraukos asocijuotos su šiais albumais: %s';
+$lang['Album updated successfully'] = 'Albumas sėkmingai atnaujintas';
+$lang['Albums authorized thanks to group associations'] = 'Albumai autorizuoti dėka grupinių asociacijų';
+$lang['Albums automatically sorted'] = 'Albumai išrūšiuoti automatiškai';
+$lang['All %d photos are selected'] = 'Pasirinktos visos %d nuotraukos';
+$lang['+ Add an upload box'] = '+ Pridėti įkrovos lauką';
+$lang['Activate icon "%s"'] = 'Aktyvuoti piktogramą "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktyvuoti piktogramą "nauja" šalia albumų ir nuotraukų';
+$lang['Active Languages'] = 'Aktyvuoti kalbas';
+$lang['Active Plugins'] = 'Aktyvuoti priedus';
+$lang['Active Themes'] = 'Aktyvuoti temas';
+$lang['Add'] = 'Pridėti';
+$lang['Add New Language'] = 'Pridėti naują kalbą';
+$lang['Add New Theme'] = 'Pridėti naują temą';
+$lang['Add Photos'] = 'Pridėti nuotraukų';
+$lang['Add a criteria'] = 'Pridėti kriterijų';
+$lang['Add a filter'] = 'Pridėti filtrą';
+$lang['Add a tag'] = 'Pridėti žymą';
+$lang['Add a user'] = 'Pridėti vartotoją';
+$lang['Add a virtual album'] = 'Pridėti virtualų albumą';
+$lang['Add another set of photos'] = 'Pridėti nuotraukų rinkinį';
+$lang['Add group'] = 'Pridėti grupę';
+$lang['Add tags'] = 'Pridėti žymas';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s turi būti nustatyta į false local/config/config.inc.php faile';
+$lang['%s photos can not be regenerated'] = '%s nuotraukos(-ų) negali būti regeneruotos';
+$lang['%s photos have been regenerated'] = '%s nuotraukos(-ų) regeneruota';
+$lang['%s value is not correct file because exif are not supported'] = '%s reikšmė neteisinga, nes exif nepalaikomas';
+$lang['(this tag will be deleted)'] = '(ši žyma bus ištrinta)';
+$lang[', click on'] = ', paspausk ant';
+$lang['... or '] = '... arba ';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo Android\'ui</em> programėlė suteikia galimybę sujungti jūsų Android telefoną ar planšetę su jūsų Piwigo galerija, kurti kelis albumus ir įkelti kelias nuotraukas iškart.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo iOS\'ui</em> programėlė suteikia galimybę sujungti jūsų iPhone, iPad ar iPod Touch su jūsų Piwigo galerija, kurti kelis albumus ir įkelti kelias nuotraukas iškart.';
+$lang['A locked gallery is only visible to administrators'] = 'Užrakinta galerija prieinama tik administratoriams';
+$lang['A new version of Piwigo is available.'] = 'Yra nauja Piwigo versija.';
+$lang['ACCESS_2'] = 'Prieinama registruotiems vartotojams';
+$lang['Action'] = 'Veiksmas';
+$lang['Actions'] = 'Veiksmai';
+$lang['Activate'] = 'Aktyvuoti';
+$lang['Activate Navigation Bar'] = 'Aktyvuoti navigacijos juostą';
+$lang['Activate Navigation Thumbnails'] = 'Aktyvuoti navigacijos piktogramas';
+$lang['Activate comments'] = 'Aktyvuoti komentarus';
+$lang['ACCESS_0'] = 'Laisva prieiga';
+$lang['ACCESS_1'] = 'Prieinama visiems';
+$lang['ACCESS_3'] = 'Prieinama administratoriams';
+$lang['ACCESS_4'] = 'Prieinama webmasteriams';
+$lang['ACCESS_5'] = 'Neprieinama';
+$lang['Access type'] = 'Prieigos tipas';
+$lang['Invert'] = 'Invertuoti';
+$lang['Languages'] = 'Kalbos';
+$lang['Languages which need upgrade'] = 'Kalbos, kurioms reikia atnaujinimo';
+$lang['Last hit'] = 'Paskutinis paspaudimas';
+$lang['Grant selected groups'] = 'Leisti prieigą pasirinktoms grupėms';
+$lang['Grant selected users'] = 'Leisti prieigą pasirinktiems vartotojams';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neįmanoma išjungti šios kalbos - jums reikalinga bent viena kalba.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neįmanoma išjungti šios temos - jums reikalinga bent viena tema.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ši tema negali būti išjungta, nes ji reikalinga kitoms temoms: %s';
+$lang['Inactive Languages'] = 'Neaktyvios kalbos';
+$lang['Inactive Plugins'] = 'Neaktyvūs priedai';
+$lang['Inactive Themes'] = 'Neaktyvios temos';
+$lang['Informations'] = 'Informacija';
+$lang['Install'] = 'Instaliuoti';
+$lang['Installed Languages'] = 'Instaliuotos kalbos';
+$lang['Installed Themes'] = 'Instaliuotos temos';
+$lang['Instructions to use Piwigo'] = 'Instrukcijos, kaip naudoti Piwigo';
+$lang['High definition enabled'] = 'Didelė raiška įjungta';
+$lang['History'] = 'Istorija';
+$lang['Hit'] = 'Paspaudimai';
+$lang['Hour'] = 'Valanda';
+$lang['Hoverbox display'] = 'Hoverbox rodymas';
+$lang['I decide to update anyway'] = 'Aš nusprendžiau vistiek atnaujinti';
+$lang['IP'] = 'IP';
+$lang['Ignore All'] = 'Ignoruoti viską';
+$lang['Ignore selected anomalies'] = 'Ignoruoti pasirinktas anomalijas';
+$lang['Ignore this update'] = 'Ignoruoti atnaujinimą';
+$lang['Image Quality'] = 'Paveiksliuko kokybė';
+$lang['Image id'] = 'Paveiksliuko ID';
+$lang['Images manual order was saved'] = 'Paveiksliukų rankinis rūšiavimas išsaugotas';
+$lang['Impossible automatic correction'] = 'Automatiniai pataisymai neįmanomi';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ši tema negali būti aktyvuota, nes jai trūksta pagrindinės temos: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Šios kalbos išjungti neįmanoma, pirmiausia nustatykite kitą kalbą, kaip pagrindinę.';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Suteikite rašymo teises (chmod 777) "%s" katalogui šakniniame jūsų Piwigo instaliacijos kataloge';
+$lang['Go to'] = 'Eiti į';
+$lang['Go to %s or %s for more informations'] = 'Norėdami gauti daugiau informacijos eikite į %s arba %s';
+$lang['Graphics Library'] = 'Grafinė biblioteka';
+$lang['Group'] = 'Grupė';
+$lang['Group management'] = 'Grupės valdymas';
+$lang['Group name'] = 'Grupės pavadinimas';
+$lang['Groups'] = 'Grupės';
+$lang['Groups and users'] = 'Grupės ir vartotojai';
+$lang['Guest Settings'] = 'Svečio nustatymai';
+$lang['Guest cannot be deleted'] = 'Svečias negali būti ištrintas';
+$lang['Guests'] = 'Svečiai';
+$lang['Height'] = 'Aukštis';
+$lang['Hello'] = 'Labas';
+$lang['Hello,'] = 'Labas,';
+$lang['Help Me'] = 'Padėkite man';
+$lang['Hide'] = 'Paslėpti';
+$lang['High definition'] = 'Didelė raiška';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Naujovės leidžia galerijų naršymą, albumų kūrimą ir nuotraukų įkėlimą.';
+$lang['File'] = 'Failas';
+$lang['File upload stopped by extension'] = 'Priedas nutraukė failo atsiuntimą';
+$lang['File/directory read error'] = 'Failo/katalogo skaitymo klaida';
+$lang['Find a new representant by random'] = 'Rasti naują atsitiktinė albumo piktogramą';
+$lang['Follow Orientation'] = 'Srauto orientacija';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Toliau išvardinti priedai gali būti nesuderinami su nauja Piwigo versija:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Toliau išvardintos temos gali būti nesuderinamos su nauja Piwigo versija:';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Piwigo stengsis išsaugot interesų centro vietą nuotraukų dydžiams (pvz. tokiems, kaip "Kvadratas"), kuriems reikalingas apkarpymas.';
+$lang['Forbid this language to users'] = 'Uždrausti vartotojams naudoti šią kalbą.';
+$lang['Forbid this theme to users'] = 'Uždrausti vartotojams naudoti šią temą.';
+$lang['Forbidden'] = 'Draudžiama';
+$lang['Form'] = 'Nuo';
+$lang['GD library is missing'] = 'Trūksta GD bibliotekos';
+$lang['GD version'] = 'GD versija';
+$lang['Gallery title'] = 'Galerijos pavadinimas';
+$lang['Gallery unlocked'] = 'Galerija atrakinta';
+$lang['General statistics'] = 'Galerijos statistika';
+$lang['Generate multiple size images'] = 'Sukurti visų dydžių paveiksliukus';
+$lang['Get Support on Piwigo Forum'] = 'Gaukite pagalbą Piwigo diskusijų forume';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vykdymo laikas baigėsi, apdirbimas turi būti tęsiamas [Numatomas laikas: %d sek.].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vykdymo laikas viršytas, apdirbimas turi būti tęsiamas [Numatomas laikas: %d sek.].';
+$lang['Exif extension not available, admin should disable exif use'] = 'Nėra EXIF išplėtimo, administratorius turi išjungti EXIF naudojimą';
+$lang['Extend for templates'] = 'Išplėsti šablonus';
+$lang['Extensions Update'] = 'Plėtinių atnaujinimas';
+$lang['FTP + Synchronization'] = 'FTP + Sinchronizacija';
+$lang['Failed to write file to disk'] = 'Nepavyko įrašyti į diską';
+$lang['Everybody'] = 'Visi';
+$lang['Deny selected users'] = 'Drausti pasirinktus vartotojus';
+$lang['Edit album'] = 'Redaguoti albumą';
+$lang['Edit album permissions'] = 'Redaguoti albumo leidimus';
+$lang['Edit photo'] = 'Redaguoti nuotrauką';
+$lang['Edit photo information'] = 'Redaguoti nuotraukos informaciją';
+$lang['Edit ranks'] = 'Redaguoti reitingus';
+$lang['Edit selected tags'] = 'Redaguoti pasirinktas žymas';
+$lang['Edit tags'] = 'Redaguoti žymas';
+$lang['Element'] = 'Elementas';
+$lang['Element type'] = 'Elemento tipas';
+$lang['Email administrators when a comment is deleted'] = 'Siųsti el-laišką administratoriams, kai ištrinamas komentaras';
+$lang['Email administrators when a comment is modified'] = 'Siųsti el-laišką administratoriams, kai pakeičiamas komentaras';
+$lang['Email admins when a comment requires validation'] = 'Siųsti el-laišką administratoriams, kai komentaras reikalauja patvirtinimo';
+$lang['Email admins when a new user registers'] = 'Siųsti el-laišką administratoriams, kai užsiregistruoja naujas vartotojas';
+$lang['Email admins when a valid comment is entered'] = 'Siųsti el-laišką administratoriams, kai įrašomas tinkamas komentaras';
+$lang['Environment'] = 'Aplinka';
+$lang['Error list'] = 'Klaidų sąrašas';
+$lang['Error on file "%s" : %s'] = 'Failo "%s" klaidos: %s';
+$lang['Error when sending email to %s [%s].'] = 'Įvyko klaida siunčiant el-laišką adresu %s [%s]';
+$lang['Errors caption'] = 'Klaidų legendos';
+$lang['Discover album:'] = 'Atversti albumą';
+$lang['Dump Database'] = 'Duomenų bazės dump\'as';
+$lang['Directory'] = 'Katalogas';
+$lang['Directory does not exist'] = 'Katalogas neegzistuoja';
+$lang['Display options'] = 'Rodymo parinktys';
+$lang['Dissociate from album'] = 'Atskirti nuo albumo';
+$lang['Dissociated'] = 'Atskirta';
+$lang['Do you want to activate anyway?'] = 'Vistiek aktyvuoti ?';
+$lang['Documentation'] = 'Dokumentacija';
+$lang['Does not represent'] = 'Tai nėra piktograma skirta';
+$lang['Download,'] = 'Parsisiųsti,';
+$lang['Downloads'] = 'Parsisiuntimai';
+$lang['Drag to re-order'] = 'Norėdami perrūšiuoti - spauskite ir tempkite';
+$lang['Drop into album'] = 'Pasirinkite albumą';
+$lang['Duplicate'] = 'Dubliuoti';
+$lang['Duplicate selected tags'] = 'Dubliuoti pasirinktas žymas';
+$lang['Duplicates'] = 'Dublikatai';
+$lang['ERROR'] = 'KLAIDA';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'KLAIDA: ŠIS PRIEDAS NERASTAS, BET YRA INSTALIUOTAS! IŠINSTALIUOKITE JĮ DABAR.';
+$lang['Deleted on'] = 'Ištrinta';
+$lang['Deletions'] = 'Trynimai';
+$lang['Deactivate all'] = 'Išjungti viską';
+$lang['Default comments order'] = 'Numatyta komentarų tvarka';
+$lang['Default display'] = 'Numatytas vaizdas';
+$lang['Default photos order'] = 'Numatyta nuotraukų tvarka';
+$lang['Default user cannot be deleted'] = 'Numatytasis vartotojas negali būti pašalintas';
+$lang['Default user does not exist'] = 'Numatytasis vartotojas neegzistuoja';
+$lang['Delete Representant'] = 'Ištrinti albumo piktogramą';
+$lang['Delete multiple size images'] = 'Ištrinti kitų dydžių paveiksliukus';
+$lang['Delete orphan tags'] = 'Ištrinti nežinomas žymas';
+$lang['Delete selected photos'] = 'Ištrinti pažymėtas nuotraukas';
+$lang['Delete selected tags'] = 'Ištrinti pažymėtas žymes';
+$lang['Delete selected users'] = 'Ištrinti pažymėtus vartotojus';
+$lang['Delete this language'] = 'Ištrinti šią kalbą';
+$lang['Delete this theme'] = 'Ištrinti šią temą';
+$lang['Deny selected groups'] = 'Drausti pažymėtas grupes';
+$lang['Description'] = 'Aprašymas';
+$lang['Detailed informations'] = 'Detali informacija';
+$lang['Database'] = 'Duomenų bazė';
+$lang['Database synchronization with files'] = 'Duomenų bazės sinchronizavimas su failais';
+$lang['Date'] = 'Data';
+$lang['Day'] = 'Diena';
+$lang['Deactivate'] = 'Išjungti';
+$lang['Check automatic corrections'] = 'Tikrinti automatines korekcijas';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Atnaujinimo patikrinimas nepavyko dėl nežinomų priežasčių.';
+$lang['Check integrity'] = 'Vientisumo tikrinimas';
+$lang['Choose an action'] = 'Pasirinkite veiksmą';
+$lang['Choose an option'] = 'Pasirinkite variantą';
+$lang['Classic display'] = 'Klasikinis vaizdas';
+$lang['Comments for all'] = 'Komentarai visiems';
+$lang['Complementary mail content'] = 'Pridėti prie pranešimo';
+$lang['Configuration'] = 'Konfigūracija';
+$lang['Confirm merge'] = 'Patvirtini sujungimą';
+$lang['Continue processing treatment'] = 'Tęsti vykdomą apdorojimą';
+$lang['Correction'] = 'Koregavimas';
+$lang['Correction applied with error'] = 'Koregavimas įvykdytas su klaida';
+$lang['Correction applied with success'] = 'Koregavimas sėkmingai įvykdytas';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Pataisyta anomalija nebebus ignoruojama';
+$lang['Create'] = 'Sukurti';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Sukurkite "%s" katalogą pagrindiniame Piwigo instaliacijos kataloge';
+$lang['Create this site'] = 'Sukurti šį puslapį';
+$lang['Crop'] = 'Apkarpyti';
+$lang['Current name'] = 'Dabartinis pavadinimas';
+$lang['Plugin list'] = 'Priedų sąrašas';
+$lang['Plugins'] = 'Priedai';
+$lang['Plugins which need upgrade'] = 'Priedai, kurie bus atnaujinti';
+$lang['Portrait'] = 'Portretas';
+$lang['Position'] = 'Pozicija';
+$lang['Posted %s on %s'] = 'Paskelbta %s ant %s';
+$lang['Privacy level'] = 'Privatumo lygis';
+$lang['Privacy level set to "%s"'] = 'Privatumo lygis nustatytas į "%s"';
+$lang['Private'] = 'Privatu';
+$lang['Properties'] = 'Savybės';
+$lang['Public'] = 'Vieša';
+$lang['Public / Private'] = 'Vieša / Privatu';
+$lang['Purge compiled templates'] = 'Išvalyti parengtus šablonus';
+$lang['Purge history detail'] = 'Išvalyti istorijos detales';
+$lang['Purge history summary'] = 'Išvalyti istorijos suvestinę';
+$lang['Purge search history'] = 'Išvalyti paieškų istorija';
+$lang['Photos'] = 'Nuotraukos';
+$lang['Photos generation in progress...'] = 'Vyksta nuotraukų generavimas';
+$lang['Piwigo Administration'] = 'Piwigo administracija';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo naujienlaiškis';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish priedas - skirtas Lightroom';
+$lang['Piwigo Update'] = 'Piwigo atnaujinimas';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader\'is';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo negali atsisiųsti atnaujinimo failo iš serverio';
+$lang['Piwigo configuration'] = 'Piwigo konfigūracija';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksportavimo priedas, skirtas Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksportavimo priedas, skirtas iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo Android\'ui';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS\'ui (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo skelbimo priedas, skirtas Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo skelbimo priedas, skirtas digiKam';
+$lang['Piwigo version'] = 'Piwigo versija';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prašau patikrinti katalogo "plugins" ir jo subkatalogu leidimus (CHMOD).';
+$lang['Please select at least two groups'] = 'Prašome pasirinkti mažiausiai dvi grupes';
+$lang['Please wait...'] = 'Prašome palaukti...';
+$lang['Plugin has been successfully copied'] = 'Priedas sėkmingai nukopijuotas';
+$lang['Pending Comments'] = 'Nepatvirtinti komentarai';
+$lang['Permalink'] = 'Fikstuota nuoroda';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Fiksuotą nuorodą %s anksčiau naudojo albumas %s. Pirmiausia ištrinkite ją iš fiksuotu nuorodų istorijos.';
+$lang['Permalink %s is already used by album %s'] = 'Fiksuotą nuorodą %s jau naudoja albumas %s';
+$lang['Permalink history'] = 'Fiksuotų nuorodų istorija';
+$lang['Permalinks'] = 'Fiksuotos nuorodos';
+$lang['Permission denied'] = 'Nesuteiktas leidimas';
+$lang['Permission granted'] = 'Leidimas suteiktas';
+$lang['Permission granted for groups'] = 'Leidimas suteiktas grupėms';
+$lang['Permission granted for users'] = 'Leidimas suteiktas vartotojams';
+$lang['Permission granted thanks to a group'] = 'Leidimas suteiktas dėka grupės';
+$lang['Permission management'] = 'Leidimų tvarkymas';
+$lang['Permissions'] = 'Leidimai';
+$lang['Photo %s of %s'] = 'Nuotrauka %s iš %s';
+$lang['Photo Page'] = 'Nuotraukų puslapis';
+$lang['Photo Properties'] = 'Nuotraukų savybės';
+$lang['Photo informations updated'] = 'Nuotraukų informacijos atnaujintos';
+$lang['Photo name'] = 'Nuotraukos pavadinimas';
+$lang['Photo sizes with crop'] = 'Nuotraukų dydžiai su apkarpymu';
+$lang['Photo unreachable or no support'] = 'Nuotraukos nepasiekiamos arba nepalaikomas jų formatas';
+$lang['Optional URL keyword'] = 'Pasirinktinis URL raktažodis';
+$lang['Options'] = 'Parinktys';
+$lang['Order of menubar items has been updated successfully.'] = 'Meniu juostos tvarka sėkmingai atnaujinta.';
+$lang['Original Size'] = 'Originalus dydis';
+$lang['Original file : %s'] = 'Originalus failas: %s';
+$lang['Original templates'] = 'Originalūs šablonai';
+$lang['Orphan tags deleted'] = 'Nesusietos žymos buvo ištrintos';
+$lang['Other plugins'] = 'Yra kitų priedų';
+$lang['Other private albums'] = 'Kiti privatūs albumai';
+$lang['Overall'] = 'Apžvalga';
+$lang['Page banner'] = 'Puslapio banneris';
+$lang['Page end'] = 'Puslapio pabaiga';
+$lang['Pages seen'] = 'Peržiūrėti puslapiai';
+$lang['Panorama'] = 'Panorama';
+$lang['Parameter'] = 'Nustatymai';
+$lang['Parameters'] = 'Parametrai';
+$lang['Parent album'] = 'Pagrindinis albumas';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nėra slaptažodžio patvirtinimo. Prašome pakartoti slaptažodį';
+$lang['Password is missing. Please enter the password.'] = 'Nėra slaptažodžio. Prašome įvesti slaptažodį';
+$lang['Path'] = 'Kelias';
+$lang['New photos were added'] = 'Naujos nuotrauos buvo įdėtos';
+$lang['No destination tag selected'] = 'Nepasirinkta paskirties žyma';
+$lang['No display'] = 'Nerodyti';
+$lang['No order field selected'] = 'Nepasirinkta laukelių tvarka';
+$lang['Not cropped correctly?'] = 'Blogai apipjaustyta?';
+$lang['Notification'] = 'Pranešimai';
+$lang['Notify administrators when a comment is'] = 'Informuoti adminstratorius, kai komentaras';
+$lang['Number of albums per page'] = 'Albumų skaičius puslapyje';
+$lang['Number of comments per page'] = 'Komentarų skaičius puslapyje';
+$lang['Number of downloads'] = 'Atsisiuntimų skaičius';
+$lang['Number of rates'] = 'Įvertinimų kiekis';
+$lang['Number of thumbnails to create'] = 'Sukurti piktogramų';
+$lang['Numeric identifier : %d'] = 'Skaitinis identifikatorius: %d';
+$lang['Obsolete Plugins'] = 'Pasenę priedai';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Linux\'e paketu menedžerio pagalba tiesiog instaliuokite Shotwell, tuomet aktyvuokite "Piwigo publishing" parinktį.';
+$lang['Only private albums are listed'] = 'Rodomi tik privatūs albumai';
+$lang['Opacity'] = 'Nepermatomumas';
+$lang['Operating system'] = 'Operacinė sistema';
+$lang['Operation in progress'] = 'Vyksta apdorojimas';
+$lang['Optimizations have been completed with some errors.'] = 'Optimizacijos buvo baigtos su keliomis klaidomis';
+$lang['New parent album'] = 'Naujas pagrindinis albumas';
+$lang['New photos added'] = 'Naujos nuotraukos įkeltos';
+$lang['New tag'] = 'Nauja žyma';
+$lang['No file was uploaded'] = 'Nebuvo įkeltas joks failas';
+$lang['No group is permitted to see this private album'] = 'Jokiai grupei neleidžiama žiūrėti šio privataus albumo';
+$lang['No group selected, no action possible.'] = 'Nepasirinkta jokia grupė, todėl jokių veiksmų vykdyti neįmanoma.';
+$lang['No mail to send.'] = 'Nebus siunčiamas joks laiškas';
+$lang['No members to manage'] = 'Nėra jokių narių, kuriuos galima būtų tvarkyti';
+$lang['No photo can be deleted'] = 'Jokios nuotraukos negali būti ištrintos';
+$lang['No photo in the current set.'] = 'Šiuo metu rinkinyje nėra nuotraukų.';
+$lang['No photo in this album'] = 'Šiame albume nėra nuotraukų';
+$lang['No photo selected, %d photos in current set'] = 'Nepasirinkta jokia nuotrauka, šiame rinkinyje nuotraukų: %d';
+$lang['No photo selected, no action possible.'] = 'Nepasirinkta jokia nuotrauka, neįmanomas joks veiksmas.';
+$lang['No results'] = 'Nėra rezultatų';
+$lang['No user to send notifications by mail.'] = 'Nėra vartotojų, kurie galėtų būti informuoti paštu.';
+$lang['None'] = 'Nėra';
+$lang['Merge selected tags'] = 'Sujungti pasirinktas žymas';
+$lang['Merge tags'] = 'Sujungti žymas';
+$lang['Metadata synchronization results'] = 'Metadata sinchronizacijos rezultatai';
+$lang['Metadata synchronized from file'] = 'Metadata sinchronizuota iš failo';
+$lang['Minimum height'] = 'Minimalus aukštis';
+$lang['Minimum privacy level'] = 'Minimalus privatumo lygis';
+$lang['Minimum width'] = 'Minimalus plotis';
+$lang['Miscellaneous'] = 'Ivairūs';
+$lang['Missing Plugins'] = 'Trūkstami priedai';
+$lang['Missing a temporary folder'] = 'Trūksta laikinų failų katalogo';
+$lang['Modify information'] = 'Keisti informaciją';
+$lang['Month'] = 'Mėnuo';
+$lang['Move'] = 'Perkelti';
+$lang['Move albums'] = 'Perkelti albumus';
+$lang['Move to album'] = 'Perkelti į albumą';
+$lang['Multiple Size'] = 'Ivairūs dydžiai';
+$lang['Name'] = 'Vardas';
+$lang['Name of the duplicate'] = 'Dublikato vardas';
+$lang['New Version'] = 'Nauja versija';
+$lang['New name'] = 'Naujas vardas';
+$lang['List'] = 'Sąrašas';
+$lang['Make this language available to users'] = 'Padaryti šią kalbą prieinamą vartotojams';
+$lang['Make this theme available to users'] = 'Padaryti šią temą prieinamą vartotojams';
+$lang['Manage'] = 'Tvarkyti';
+$lang['Manage Permissions'] = 'Tvarkyti teises';
+$lang['Manage authorizations for selected albums'] = 'Tvarkyti pasirinktų vartotojų leidimus';
+$lang['Manage permissions for group "%s"'] = 'Tvarkyti grupės "%s" teises';
+$lang['Manage permissions for user "%s"'] = 'Tvarkyti vartotojo "%s" teises';
+$lang['Manage photo ranks'] = 'Nuotraukų rūšiavimo tvarka';
+$lang['Manage photos'] = 'Tvarkyti nuotraukas';
+$lang['Manage tags'] = 'Tvarkyti žymas';
+$lang['Manage the members'] = 'Tvarkyti narius';
+$lang['Manage this set of %d photos'] = 'Tvarkyti ši %d nuotraukų rinkinį';
+$lang['Manual order'] = 'Nustatyta tvarka';
+$lang['Maximum file size: %sB.'] = 'Maksimalus failo dydis: %sB.';
+$lang['Maximum height'] = 'Maksimalus aukštis';
+$lang['Maximum width'] = 'Maksimalus plotis';
+$lang['Members'] = 'Nariai';
+$lang['Menu Management'] = 'Meniu';
+$lang['Merge selected groups'] = 'Sujungti pasirinktas grupes';
+$lang['Last send'] = 'Paskutini siuntimas';
+$lang['Level 0'] = '---';
+$lang['Link all album photos to some existing albums'] = 'Susieti visas albumo nuotraukas su kokiu nors egzistuojančiu albumu';
+$lang['Linked albums'] = 'Susieti albumai';
+$lang['Local'] = 'Vietinis';
+$lang['Lock'] = 'Užrakinti';
+$lang['Lock albums'] = 'Užrakinti albumus';
+$lang['Lock gallery'] = 'Užrakinti galerijas';
+$lang['Locked'] = 'Užrakinta';
+$lang['Mail address is obligatory for all users'] = 'Pašto adresas privalomas visiems vartotojams';
+$lang['Mail content'] = 'Pranešimo turinys';
+$lang['Mail sent to %s [%s].'] = 'Pranešimas išsiųstas %s [%s].';
+$lang['Main "guest" user does not exist'] = 'Pagrindinis "guest" vartotojas neegzistuoja';
+$lang['Main "guest" user status is incorrect'] = 'Neteisingas pagrindinio "guest" vartotojo statusas';
+$lang['Main "webmaster" user does not exist'] = 'Pagrindinis "webmaster" vartotojas neegzistuoja';
+$lang['Main "webmaster" user status is incorrect'] = 'Neteisingas pagrindinio "webmaster" vartotojo statusas';
+$lang['Main Page'] = 'Pagrindinis puslapis';
+$lang['Maintenance'] = 'Priežiūra';
+$lang['Last revisions'] = 'Paskutiniai pakeitimai';
+$lang['Last import'] = 'Paskutinė įkrova';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Jei nėra HD kokybės nuotraukos, bet esamas dydis yra didesnis už kitų dydžių dimensijas, tai Piwigo ją perkels ir traktuos kaip HD kokybės. Taip pat iš jos bus sukurti mažesnio dydžio paveiksliukai.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'jeigu iškilo problemų arba turite kokių nors klausimų - prašome rašykite adresu';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Jūsų php.ini faile upload_max_filesize (%sB) yra didesnis už post_max_size (%sB), reikėtų pakeisti šią nuostatą.';
+$lang['Include display of recent photos grouped by dates'] = 'Taip pat rodyti nesenas nuotraukas, surūšiuotas pagal datas';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Taip pat rodyti istorijos duomenis (Įspėjimas, gali būti viršytas serverio atminties limitas)';
+$lang['Information data registered in database'] = 'Informacija registruota duomenų bazėje';
+$lang['Install on your computer,'] = 'Įdiekite į savo kompiuterį,';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Likite su Piwigo projektu, užsisakykite Piwigo naujienlaiškį. Jums el. paštu bus atsiųstas pranešimas, kai bus išleista nauja versija (kartais su saugumo pataisymais, kuriuos būtina žinoti ir atnaujinti) ir kai projekte ivyksta svarbūs įvykiai. Paprastai - tik keletas laiškų per metus.';
+$lang['Landscape'] = 'Landscape';
+$lang['Language has been successfully installed'] = 'Kalba buvo sėkmingai instaliuota';
+$lang['Learn more'] = 'Sužinoti daugiau';
+$lang['Level 1'] = 'Kontaktai';
+$lang['Level 2'] = 'Draugai';
+$lang['Level 4'] = 'Šeima';
+$lang['Level 8'] = 'Administratoriai';
+$lang['Link all album photos to a new album'] = 'Susieti visas albumo nuotraukas į naują albumą';
+$lang['reduce to single existing albums'] = 'apriboti iki vieno egzistuojančio albumo';
+$lang['unit mode'] = 'Individualiai';
+$lang['the forum'] = 'forumas';
+$lang['the wiki'] = 'wiki';
+$lang['top left corner'] = 'viršutinis kairysis kampas';
+$lang['top right corner'] = 'viršutinis dešinysis kampas';
+$lang['total time'] = 'viso laiko';
+$lang['unknown'] = 'nežinomas';
+$lang['unset'] = 'nepažymėtas';
+$lang['update the database from files'] = 'atnaujinti duomenų bazę su failais';
+$lang['user "%s" added'] = 'vartotojas "%s" pridėtas';
+$lang['user_status_admin'] = 'Administratorius';
+$lang['user_status_generic'] = 'Bendro pobūdžio';
+$lang['user_status_guest'] = 'Svečias';
+$lang['user_status_normal'] = 'Vartotojas';
+$lang['user_status_webmaster'] = 'Webmasteris';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Vartotojai norėdami matyti šį albumą turi prisijungti ir turėti atitinkamus leidimus';
+$lang['width must be a number superior to'] = 'plotis turi būti didesnis už';
+$lang['wrong filename'] = 'blogas failo vardas';
+$lang['registered users'] = 'registruoti vartotojai';
+$lang['registration date'] = 'registracijos data';
+$lang['remove author'] = 'pašalinti autoriu';
+$lang['remove creation date'] = 'pašalinti sukūrimo datą';
+$lang['remove tags'] = 'pašalinti žymas';
+$lang['remove this filter'] = 'pašalinti šį filtrą';
+$lang['remove title'] = 'pašalinti pavadinimą';
+$lang['selection'] = 'rinkinys';
+$lang['set to'] = 'nustatyti į';
+$lang['show details'] = 'rodyti detales';
+$lang['simple visitors'] = 'paprasti lankytojai';
+$lang['singly represented'] = 'fiksuota albumo piktograma';
+$lang['status'] = 'būsena';
+$lang['sub-albums'] = 'vidiniai albumai';
+$lang['synchronize files metadata with database photos informations'] = 'sinchronizuoti duomenų bazės nuotraukas su failų metaduomenimis';
+$lang['synchronize files structure with database'] = 'sinchronizuoti failų struktūrą su duomenų baze';
+$lang['target'] = 'taikinys';
+$lang['test'] = 'bandyti';
+$lang['test this remote site'] = 'bandyti šią nutolusią svetainę';
+$lang['on'] = 'ant';
+$lang['on the %d selected photos'] = 'ant %d pasirinktų nuotraukų';
+$lang['only directories'] = 'tik katalogai';
+$lang['only perform a simulation (no change in database will be made)'] = 'tik simuliuoti (niekas nebus pakeista duomenų bazėje)';
+$lang['other'] = 'kitas';
+$lang['overrides existing values with empty ones'] = 'perrašyti esamas reikšmes tuščiomis';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader verčiamas kaip <em>Piwigo Uploader</em>. pLoader paruošia ir perkelia nuotraukas iš Jūsų kompiuterio į Jūsų Piwigo nuotraukų galeriją.';
+$lang['pending validation'] = 'laukia patvirtinimo';
+$lang['photos added in the database'] = 'nuotraukos pridėtos į duomenų bazę';
+$lang['photos candidates for metadata synchronization'] = 'nuotraukų kandidatai metaduomenų sinchronizacijai';
+$lang['photos deleted from the database'] = 'nuotraukos pašalintos iš duomenų bazės';
+$lang['photos informations synchronized with files metadata'] = 'nuotraukų informacija sinchronizuota su failų metaduomenimis';
+$lang['photos per page'] = 'nuotraukos į puslapį';
+$lang['photos updated in the database'] = 'nuotraukos atnaujintos duomenų bazėje';
+$lang['pixels'] = 'pikseliai';
+$lang['private'] = 'privatu';
+$lang['public'] = 'vieša';
+$lang['randomly represented'] = 'atsitiktinė albumo piktograma';
+$lang['ranks'] = 'vertinama';
+$lang['high'] = 'didelis';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto yra numatytoji nuotraukų tvarkymo programa MacOSX aplinkoje. Piwigo eksportavimo priedas leidžia kurti naujus albumus ir eksportuoti nuotraukas tiesiai iš iPhoto į jūsų Piwigo nuotraukų galeriją.';
+$lang['include child albums'] = 'įtraukti vidinius albumus';
+$lang['include photos with lower privacy level'] = 'įtraukti nuotraukas su mažesniu privatumo lygiu';
+$lang['jump to album'] = 'peršokti į albumą';
+$lang['jump to photo'] = 'peršokti į nuotrauką';
+$lang['leave'] = 'palikti';
+$lang['manage album photos'] = 'tvarkyti albumo nuotraukas';
+$lang['manage sub-albums'] = 'tvarkyti subalbumus';
+$lang['manual order'] = 'rankinė tvarka';
+$lang['middle'] = 'vidurys';
+$lang['modified'] = 'modifikuotas';
+$lang['new'] = 'nauja';
+$lang['no write access'] = 'nėra rašymo teisių';
+$lang['none'] = 'nė vienas';
+$lang['nothing'] = 'niekas';
+$lang['number of miniaturized photos'] = 'sukurta piktogramų';
+$lang['display'] = 'rodyti';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'rodyti maksimaliai informacijos (pridėti/pašalinti albumai ir nuotraukos)';
+$lang['dissociate from group'] = 'atskirti nuo grupės';
+$lang['errors during synchronization'] = 'klaidos sinchronizuojant';
+$lang['even already synchronized photos'] = 'netgi jau sinchronizuotas nuotraukas';
+$lang['existing album'] = 'egzistuojantis albumas';
+$lang['first photo added on %s'] = 'pirmoji nuotrauka pridėta %s';
+$lang['for the file format'] = 'failo formatui';
+$lang['for this file format'] = 'šiam failo formatui';
+$lang['global mode'] = 'globalus režimas';
+$lang['group "%s" added'] = 'grupė "%s" pridėta';
+$lang['group "%s" deleted'] = 'grupė "%s" pašalinta';
+$lang['group "%s" updated'] = 'grupė "%s" atnaujinta';
+$lang['guest'] = 'svečias';
+$lang['height must be a number superior to'] = 'aukštis turi būti skaičius, didesnis už';
+$lang['hide details'] = 'slėpti detales';
+$lang['bottom left corner'] = 'apatinis kairysis kampas';
+$lang['bottom right corner'] = 'apatinis dešinysis kampas';
+$lang['cancel manual order'] = 'atšaukti rankinį rūšiavimą';
+$lang['clean'] = 'apvalyti';
+$lang['confirm'] = 'patvirtinti';
+$lang['create a new album'] = 'sukurti naują albumą';
+$lang['create a new site'] = 'sukurti naują puslapį';
+$lang['created'] = 'sukurta';
+$lang['custom'] = 'Specialus';
+$lang['default'] = 'numatytasis';
+$lang['default values'] = 'numatytosios reikšmės';
+$lang['delete'] = 'pašalinti';
+$lang['delete album'] = 'pašalinti albumą';
+$lang['delete photo'] = 'pašalinti nuotrauką';
+$lang['delete this site and all its attached elements'] = 'pašalinti šį puslapį ir visą susijusią informaciją';
+$lang['deleted'] = 'pašalinta';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam yra pažangi ir nemokama nuotraukų tvarkymo programa skirta Linux, Windows ir MacOSX';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam skirta fotografams, kurie nori žiūrėti, tvarkyti, redaguoti, pagerinti, organizuoti ir dalintis nuotraukomis.';
+$lang['directories + files'] = 'katalogai + failai';
+$lang['You are running on development sources, no check possible.'] = 'Veikia iš kūrėjų kodo, patikrinimas neįmanomas.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Neįmanoma nustatyti numatytosios nuotraukų rūšiavimo tvarkos, nes tai padaryta jūsų vietinėje konfigūracijoje.';
+$lang['You cannot move an album in its own sub album'] = 'Negalima perkelti albumo į jo paties subalbumą';
+$lang['You have %d orphan tags: %s.'] = 'Jūs turite %d nepririštų žymų: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Jūs esate nurodęs <i>$conf[\'order_by\']</i> savo konfigūraciniame faile, šis parametras yra pasenęs, prašome jį pašalinti arba pervardinti į <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Jūs esate užsisakęs pranešimų prenumeratą paštu.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Jūs neužsisakęs pranešimų prenumeratos paštu.';
+$lang['You might go to plugin list to install and activate it.'] = 'Eikite į priedų sąrašą, kad jį instaliuoti ir aktyvuoti ';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Norėdami naudotis visais programos privalumais jūs turėtumėte atnaujinti savo sistemą, kitaip ji gali veikti neteisingai arba neveikti išvis';
+$lang['Your configuration settings are saved'] = 'Jūsų konfigūracijos parametrai išsaugoti';
+$lang['[%s] Visit album %s'] = '[%s] Aplankyti albumą %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemos ir klausimai';
+$lang['any visitor can see this album'] = 'visi lankytojai gali matyti šį albumą';
+$lang['apply automatic sort order'] = 'taikyti automatinę rūšiavimo tvarką';
+$lang['associate to group'] = 'pririšti prie grupės';
+$lang['automatic order'] = 'automatinė tvarka';
+$lang['average time'] = 'vidutinis laikas';
+$lang['between'] = 'tarp';
+$lang['between %.2f and %.2f'] = 'tarp %.2f ir %.2f';
+$lang['between %d and %d pixels'] = 'tarp %d ir %d pikselių';
+$lang['all'] = 'visi';
+$lang['an error happened'] = 'ivyko klaida';
+$lang['and'] = 'ir';
+$lang['You need to confirm deletion'] = 'Šalinimą Jūs turite patvirtinti';
+$lang['Zoom'] = 'Priartinti';
+$lang['add a new watermark'] = 'pridėti naują vandens ženklą';
+$lang['add new photos to caddie'] = 'pridėti naujus nuotraukų dydžius į krepšelį';
+$lang['added'] = 'pridėtas';
+$lang['administrators'] = 'administratoriai';
+$lang['albums added in the database'] = 'albumas pridėtas į duomenų bazę';
+$lang['albums deleted in the database'] = 'albumas pašalintas iš duomenų bazės';
+$lang['Week starts on'] = 'Savaitės pradžia yra';
+$lang['Who can see these photos?'] = 'Kas gali matyti šias nuotraukas?';
+$lang['Who can see this photo?'] = 'Kas gali matyti šią nuotrauką?';
+$lang['Width'] = 'Plotis';
+$lang['With blank value, gallery title will be used'] = 'Jei tuščia, tai bus panaudotas galerijos pavadinimas';
+$lang['With no album'] = 'Jokiame albume';
+$lang['With no tag'] = 'Be žymos';
+$lang['With no virtual album'] = 'Jokiam virtualiame albume';
+$lang['X Position'] = 'X pozicija';
+$lang['X Repeat'] = 'X kartojimas';
+$lang['Y Position'] = 'Y Pozicija';
+$lang['Year'] = 'Metai';
+$lang['You are running the latest version of Piwigo.'] = 'Jūs naudojate naujausią Piwigo versiją.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Jūs naudojate įkėlima per naršyklę. Pamėginkite <a href="%s">įkėlimą per Flash</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Jūs naudojatės įkėlimu per Flash. Iškilo bėdų ? Pamėginkite <a href="%s">įkėlima per naršyklę</a>.';
+$lang['You can activate only one mobile theme.'] = 'Jūs galite aktyvuoti tik vieną mobilią temą.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Jūs galite atnaujinti tiesiai į Piwigo %s be atnaujinimo į Piwigo %s (rekomenduojama).';
+$lang['You cannot delete your account'] = 'Jūs negalite ištrinti savo paskyros';
+$lang['View in gallery'] = 'Žiūrėti galerijoje';
+$lang['Virtual Links'] = 'Virtualios nuorodos';
+$lang['Virtual album'] = 'Virtualus albumas';
+$lang['Virtual album added'] = 'Virtualus albumas sukurtas';
+$lang['Virtual album deleted'] = 'Virtualus albumas pašalintas';
+$lang['Virtual album name'] = 'Virtualaus albumo pavadinimas';
+$lang['Virtual albums to move'] = 'Virtualūs albumai, kuriuos reikia perkelti';
+$lang['Visit Gallery'] = 'Aplankyti galeriją';
+$lang['Visit Piwigo project website'] = 'Aplankyti Piwigo projekto svetainę';
+$lang['Visit language site'] = 'Aplankyti kalbų puslapį';
+$lang['Visit plugin site'] = 'Aplankyti kalbų puslapį';
+$lang['Visit theme site'] = 'Aplankyti temų puslapį';
+$lang['Visited %d times'] = 'Aplankyta %d kart.';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'DĖMESIO! Nepanašu, kad šis priedas būtų suderinamas su šia Piwigo versija.';
+$lang['Waiting'] = 'Laukiama';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Dėmesio: prenumerata arba jos nutraukimas išsiųs pašto pranešimus vartotojams';
+$lang['Watermark'] = 'Vandens ženklas';
+$lang['Web Form'] = 'Puslapio forma';
+$lang['Webmaster cannot be deleted'] = 'Webmasteris negali būti ištrintas';
+$lang['Webmaster status is required.'] = 'Reikalingas webmasterio statusas';
+$lang['Updates'] = 'Atnaujinimai';
+$lang['Upload'] = 'Įkėlimas';
+$lang['Upload Photos'] = 'Įkelti nuotraukas';
+$lang['Uploaded Photos'] = 'Įkeltos nuotraukos';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Naudoti nuotraukų rūšiavimą pagal nutylėjimą (tokį, koks nustatytas konfigūraciniame faile)';
+$lang['Used metadata'] = 'Naudojami metaduomenys';
+$lang['User'] = 'Vartotojas';
+$lang['User "%s" created with "%s" like password'] = 'Sukurtas vartotojas "%s" su slaptažodžiu "%s"';
+$lang['User %s [%s] added.'] = 'Vartotojas %s [%s] pridėtas.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Vartotojas %s [%s] pridėtas į prenumeratorių sąrašą.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Vartotojas %s [%s] nebuvo pridėtas į prenumeratorių sąrašą.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Vartotojas %s [%s] nepašalintas iš prenumeratorių sąrašo.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Vartotojas %s [%s] pašalintas iš prenumeratorių sąrašo.';
+$lang['User comments validation'] = 'Vartotojų komentarų patvirtinimas';
+$lang['User list'] = 'Vartotojų sąrašas';
+$lang['User status'] = 'Vartotojo būsena';
+$lang['Users'] = 'Vartotojai';
+$lang['Validate'] = 'Patvirtinti';
+$lang['Validation'] = 'Patvirtinimas';
+$lang['Version'] = 'Versija';
+$lang['Toggle \'default group\' property'] = 'Atstatyti \'grupė pagal nutylėjima\' reikšmę';
+$lang['Type here the name of the new group'] = 'Įveskite naujos grupės pavadinima čia';
+$lang['Type here the title'] = 'Įveskite pavadinima čia';
+$lang['Type in a search term'] = 'Įveskite paieškos frazę';
+$lang['Unable to check for upgrade.'] = 'Neišeina patikrinti ar yra atnaujinimų.';
+$lang['Unable to dump database.'] = 'Neišeina eksportuoti duomenų bazės.';
+$lang['Uncheck all'] = 'Atžymėti viską';
+$lang['Uninstall'] = 'Išinstaliuoti';
+$lang['Uninstalled Plugins'] = 'Išinstaliuoti priedai';
+$lang['Unknown upload error'] = 'Nežinoma įkėlimo klaida';
+$lang['Unlock gallery'] = 'Atrakinti galeriją';
+$lang['Unlocked'] = 'Atrakinta';
+$lang['Unsubscribe from notification by mail'] = 'Nutraukti pranešimų prenumeratą paštu';
+$lang['Unsubscribed'] = 'Prenumerata nutraukta';
+$lang['Update All'] = 'Atnaujinti viską';
+$lang['Update Complete'] = 'Atnaujinimas baigtas';
+$lang['Update albums informations'] = 'Atnaujinti albumų informaciją';
+$lang['Update in progress... Please wait.'] = 'Vyksta atnaujinimas... Prašome palaukti.';
+$lang['Update photos information'] = 'Atnaujinti nuotraukų informaciją';
+$lang['Update to Piwigo %s'] = 'Atnaujinti iki Piwigo %s';
+$lang['This group will be set to default'] = 'Ši grupė bus naudojama pagal nutylėjima';
+$lang['This group will be unset to default'] = 'Ši grupė nebebus naudojama pagal nutylėjimą';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Tai yra didelis atnaujinimas su <a href="%s">naujomis ir idomiomis funkcijomis</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Tai yra nedidelis atnaujinimas su klaidų pataisymais.';
+$lang['This name is already used by another group.'] = 'Šis pavadinimas jau naudojamas kitos grupės.';
+$lang['This site already exists'] = 'Toks puslapis jau yra';
+$lang['This theme was not designed to be directly activated'] = 'Ši tema nebuvo sukurta tiesioginiam aktyvavimui';
+$lang['Thumbnail'] = 'Piktograma';
+$lang['Thumbnails generation in progress...'] = 'Vyksta piktogramų generavimas...';
+$lang['Time'] = 'Laikas';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Laikas išsiųsti paštą ribotas. Kiti laiškai buvo praleisti.';
+$lang['Title'] = 'Pavadinimas';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Norėdami eksportuoti nuotraukas iš digiKam į Piwigo - tiesiog instaliuokite digiKam ir Kipi priedus.';
+$lang['To send ?'] = 'Siųsti?';
+$lang['To subscribe'] = 'Prenumeruoti';
+$lang['To unsubscribe'] = 'Nutraukti prenumeratą';
+$lang['Tools'] = 'Įrankiai';
+$lang['Two updates are available'] = 'Yra du atnaujinimai';
+$lang['Type here the author name'] = 'Įveskite autoriaus varda čia';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Įkeltas failas viršija MAX_FILE_SIZE dydį, kuris nurodytas HTML formoje';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Įkeltas failas viršija upload_max_filesize dydį, nurodytą php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Įkelta tik dalis failo';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Įkelti failai viršija post_max_size dydį, nurodyta php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Instaliuota %s versija [%s] nesuderinama su reikalinga versija [%s]';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmasteris užprenumeravo jums pranešimus paštu.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmasteris jums nutraukė pranešimų paštu prenumeratą.';
+$lang['The whole page'] = 'Visas puslapis';
+$lang['The whole set'] = 'Visas rinkinys';
+$lang['Theme has been successfully installed'] = 'Tema sėkmingai instaliuota';
+$lang['Themes'] = 'Išvaizda';
+$lang['Themes which need upgrade'] = 'Temos, kurias reikėtų atnaujinti';
+$lang['There is no available subscribers to mail.'] = 'Nėra prenumeratorių, kuriuos informuoti paštu.';
+$lang['There is no group in this gallery.'] = 'Šioje galerijoje nėra grupių.';
+$lang['There is no other language available.'] = 'Daugiau kalbų nėra.';
+$lang['There is no other plugin available.'] = 'Daugiau priedų nėra.';
+$lang['There is no other theme available.'] = 'Daugiau galimų temų nėra.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Šis albumas turi %d nuotr., pridėtų tarp %s ir %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Šis albumas turi %d nuotr., kurios buvo pridėtos %s.';
+$lang['This album contains no photo.'] = 'Šiame albume nėra nuotraukų.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Vartotojai rodomi tik tada, jei yra ka naujo jiems pranešti.';
+$lang['The original image quality must be a number between %d and %d'] = 'Originalo kokybė turi būti skaičius tarp %d ir %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Originalus maksimalus aukštis turi būti skaičius tarp %d ir %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Originalus maksimalus plotis turi būti skaičius tarp %d ir %d';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Fiksuotos nuorodos pavadinimas turi susidėti iš a-z, A-Z, "-", "_" ar "/". Jis neturi būti vien iš skaitmenų arba prasidėti skaičiumi su "-"';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Nuotraukos dydis bus sumažintas iki %dx%d pikselių.';
+$lang['Switch to clear or dark colors for administration'] = 'Administracijai rinktis šviesius arba tamsius tonus';
+$lang['The %d following tags were deleted'] = 'Sekančios %d žymos buvo ištrintos';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Failas arba katalogas nepasiekiamas (jis neegzistuoja arba nepakanka teisių)';
+$lang['The following tag was deleted'] = 'Sekanti žyma buvo ištrinta';
+$lang['The gallery URL is not valid.'] = 'Netinkama galerijos URL';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Grupės pavadinimas turi būti be kabučių " arba \', taip pat negali būti tuščias.';
+$lang['The name of an album must not be empty'] = 'Albumo pavadinimas negali būti tuščias';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Katalogų pavadinimai gali būti sudaromi tik iš raidžių, skaičių ir simbolių "-", "_", ar "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Komentarų skaičius puslapyje turi būti tarp 5 ir 50 imtinai.';
+$lang['Sum of rates'] = 'vertinimų suma';
+$lang['Summary'] = 'Apibendrinimas';
+$lang['Support'] = 'Palaikymas';
+$lang['Synchronize'] = 'Sinchronizuoti';
+$lang['Synchronize metadata'] = 'Sinchronizuoti metaduomenis';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ŠIS PRIEDAS YRA INTEGRUOTAS Į PIWIGO! NEDELSIANT JĮ IŠINSTALIUOKITE!';
+$lang['Tag "%s" already exists'] = 'Žyma "%s" jau egzistuoja';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Žyma "%s" dabar yra "%s" dublikatas';
+$lang['Tag "%s" was added'] = 'Žyma "%s" pridėta';
+$lang['Tag selection'] = 'Pasirinktos žymos';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Žymos <em>%s</em> apjungtos į žyma <em>%s</em>';
+$lang['Templates'] = 'Šablonai';
+$lang['Templates configuration has been recorded.'] = 'Šablonų konfigūracija irašyta.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export priedas leidžia jums kurti albumus ir eksportuoti nuotraukas.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish priedas leidžia jums eksportuoti ir sinchronizuoti nuotraukas iš Lightroom tiesiai į Jūsų Piwigo nuotraukų galeriją';
+$lang['The anomaly will be ignored until next application version'] = 'Anomalija bus ignoruojama iki sekančios programos versijos';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesų centras yra reikšmingiausia nuotraukos sritis.';
+$lang['Show info'] = 'Rodyti informaciją';
+$lang['Show menubar'] = 'Rodyti meniu juostą';
+$lang['Simulation'] = 'Simuliacija';
+$lang['Site manager'] = 'Svetainės valdymas';
+$lang['Some themes and plugins may be not available yet.'] = 'Kai kurios temos ir priedai kol kas gali būti neprieinami.';
+$lang['Some upgrades are available for extensions.'] = 'Yra keletas išplėtimų atnaujinimų.';
+$lang['Source tag'] = 'Šaltinio žyma';
+$lang['Start Upload'] = 'Pradėti įkėlimą';
+$lang['Start pLoader and add your photos.'] = 'Paleiskite pLoader ir pradėkite įkelinėti savo nuotraukas.';
+$lang['Statistics'] = 'Statistika';
+$lang['Status'] = 'Būsena';
+$lang['Status of user "%s" updated'] = 'Atnaujintas vartotojo "%s" statusas';
+$lang['Storage album'] = 'Albumas saugojimui';
+$lang['Subscribe'] = 'Prenumeruoti';
+$lang['Subscribe %s'] = 'Prenumeruoti %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Užprenumeruoti %s Piwigo anonsų naujienlaiškį';
+$lang['Subscribe to notification by mail'] = 'Prenumeruoti pranešimus paštu';
+$lang['Subscribe/unsubscribe users'] = 'Valdyti vartotojų prenumeratą';
+$lang['Subscribed'] = 'Prenumeruota';
+$lang['Select groups...'] = 'Pasirinkite grupes';
+$lang['Select recipients'] = 'Pasirinkite gavėjus';
+$lang['Select the destination tag'] = 'Pasirinkite kitą žymą';
+$lang['Select users...'] = 'Pasirinkite vartotojus...';
+$lang['Select:'] = 'Pasirinkite:';
+$lang['Selection'] = 'Parinktys';
+$lang['Send'] = 'Siųsti';
+$lang['Send an information email to group members'] = 'Siųsti informacinį pranešimą grupės nariams';
+$lang['Send connection settings by email'] = 'Siųsti prisijungimo nuostatas el-paštu';
+$lang['Send mail as'] = 'Siųsti paštą kaip';
+$lang['Send mail on HTML format'] = 'Siųsti paštą HTML formatu';
+$lang['Send mail to users'] = 'Siųsti paštą vartotojams';
+$lang['Set as default language for unregistered and new users'] = 'Pasirinkite numatytąją kalbą neregistruotiems ir naujiems vartotojams.';
+$lang['Set as default theme for unregistered and new users'] = 'Pasirinkite numatytąją temą neregistruotiems ir naujiems vartotojams.';
+$lang['Set author'] = 'Nustatyti autorių';
+$lang['Set creation date'] = 'Nustatyti sukūrimo datą';
+$lang['Set title'] = 'Nustatyti pavadinimą';
+$lang['Settings'] = 'Nustatymai';
+$lang['Sharpen'] = 'Paaštrinti';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell yra atvirojo kodo skaitmeninių nuotraukų apdorojimo programa skirta Linux. Ji yra numatytasis nuotraukų menedžeris Ubuntu ir Fedora distribucijose.';
+$lang['Save Settings'] = 'Išsaugoti pakeitimus';
+$lang['Save Template Directory'] = 'Išsaugoti šablonų katalogą';
+$lang['Save manual order'] = 'Išsaugoti rankinį rikiavimą';
+$lang['Save order'] = 'Išsaugoti rikiavimą';
+$lang['Save to permalink history'] = 'Išsaugoti į fiksuotų nuorodų istoriją';
+$lang['Save visits in history for'] = 'Saugoti apsilankymus';
+$lang['Search for new images in the directories'] = 'Ieškoti naujų paveiksliukų kataloguose';
+$lang['Searching...'] = 'Ieškoma...';
+$lang['Section'] = 'Sekcija';
+$lang['See you soon,'] = 'Iki pasimatymo,';
+$lang['See you soon.'] = 'Iki pasimatymo.';
+$lang['Select a file'] = 'Pasirinkite failą';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Pele pažymėkite interesų centro zoną.';
+$lang['Select an album'] = 'Pasirinkite albumą';
+$lang['Select at least one album'] = 'Pasirinkite bent vieną albumą';
+$lang['Select at least one comment'] = 'Pasirinkite bent vieną komentarą';
+$lang['Select at least one photo'] = 'Pasirinkite bent vieną nuotrauką';
+$lang['Select at least one user'] = 'Pasirinkite bent vieną vartotoją';
+$lang['Select at least two tags for merging'] = 'Apjungimui pasirinkite bent dvi žymas';
+$lang['Select files'] = 'Pasirinkite failus';
+$lang['Predefined filter'] = 'Iš anksto nustatytas filtras';
+$lang['Preferences'] = 'Nustatymai';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Laikas paruošti vartotojų sąrašą, kuriems bus išsiųstas paštas yra apribotas. Kiti vartotojai nerodomi.';
+$lang['Released on'] = 'Išleista';
+$lang['Remote'] = 'Nutolęs';
+$lang['Remove all filters'] = 'Pašalinti visus filtrus';
+$lang['Remove from caddie'] = 'Pašalinti iš krepšelio';
+$lang['Rename'] = 'Pervardinti';
+$lang['Repair and optimize database'] = 'Remontuoti ir optimizuoti duomenų bazę';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Originalių šablonų keitimas individualizuotais iš template-extension pakatalogio';
+$lang['Replacers (customized templates)'] = 'Pakaitalai (individualizuoti šablonai)';
+$lang['Representant'] = 'Albumo piktograma';
+$lang['Representation of albums'] = 'Albumo piktograma';
+$lang['Representative'] = 'Albumo piktograma';
+$lang['Represents'] = 'Yra piktograma skirta';
+$lang['Reset ignored updates'] = 'Perkrauti ignoruotus atnaujinimus';
+$lang['Resize'] = 'Keisti dydį';
+$lang['Resize after upload'] = 'Keisti dydį po įkrovimo';
+$lang['Restore'] = 'Atstatyti';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Atstatyti į numatytąją konfigūraciją. Įskiepių parametrai bus prarasti!';
+$lang['Purge never used notification feeds'] = 'Išvalyti niekad nenaudotus pranešimų srautus';
+$lang['Purge sessions'] = 'Išvalyti sesijas';
+$lang['Purge user cache'] = 'Įšvalyti vartotojų kešą';
+$lang['Quick Local Synchronization'] = 'Greitoji vietinė sinchronizacija';
+$lang['Random photo'] = 'Atsitiktinė nuotrauka';
+$lang['Rate'] = 'Įvertinimas';
+$lang['Rate date'] = 'Įvertinimo data';
+$lang['Rated %d times, score : %.2f'] = 'Įvertinta %d kart., rezultatas: %.2f';
+$lang['Rating'] = 'Vertinimas';
+$lang['Rating by guests'] = 'Leisti vertinti svečiams';
+$lang['Ratio'] = 'Santykis';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klientas Android\'ui) yra atvirojo kodo (GPL v3) Piwigo klientas Android platformai.';
+$lang['Read Piwigo Documentation'] = 'Skaitykite Piwigo dokumentaciją';
+$lang['Refresh'] = 'Atnaujinti';
+$lang['Refresh photo set'] = 'Atnaujinti nuotraukų rinkinį';
+$lang['Reinitialize check integrity'] = 'Iš naujo pradėti vientisumo patikrinimą';
+$lang['Reject'] = 'Atmesti';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Dydžio keitimas po įkėlimo išjungtas dėl to, kad naudojate GD kaip grafinę biblioteką';
+$lang['Select at least one tag'] = 'Pasirinkite bent vieną žymą';
+$lang['Basic settings'] = 'Paprasti nustatymai';
+$lang['General'] = 'Bendra';
+$lang['Mail theme'] = 'Pašto tema';
+$lang['Last visit on %s, %s.'] = 'Paskutini karta aplankyta %s, %s.';
+$lang['Registered on %s, %s.'] = 'Registruota %s, %s.';
+$lang['Showing %s to %s of %s users'] = 'Rodoma nuo %s iki %s iš %s narių';
+$lang['Update user'] = 'Atnaujinti narį';
+$lang['on the %d selected users'] = 'iš %d pasirinktų narių';
+$lang['%d of %d users selected'] = 'pasirinkta %d iš %d narių';
+$lang['(filtered from %s total users)'] = '(filtruota iš %s narių)';
+$lang['All %d users are selected'] = 'Pasirinkti visi %d nariai';
+$lang['Change password'] = 'Keisti slaptažodį';
+$lang['Change username'] = 'Keisti username';
+$lang['Loading...'] = 'Kraunasi...';
+$lang['No matching user found'] = 'Narių, atitinkančių kriterijus, nerasta';
+$lang['No user selected of %d users'] = 'Nepasirinktas nė vienas iš %d narių';
+$lang['No user selected, no action possible.'] = 'Nepasirinktas narys, negaliu tęsti veiksmų.';
+$lang['Password updated'] = 'Slaptažodis atnaujintas';
+$lang['Show %s users'] = 'Rodyti %s vartotojus';
+$lang['User %s added'] = 'Vartotojas %s pridėtas';
+$lang['User %s updated'] = 'Vartotojo %s informacija atnaujinta';
+$lang['Users modified'] = 'Vartotojo informacija pakeista';
+?>
Index: /tags/2.6.0RC1/language/lt_LT/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/common.lang.php	(revision 25596)
@@ -0,0 +1,435 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Lietuviu [LT]
+Version: 2.5.4
+Language URI: http://piwigo.org/ext/extension_view.php?eid=648
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'Lietuvių';
+$lang_info['country'] = 'Lietuva';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'lt';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d albumas atnaujintas';
+$lang['%d albums updated'] = '%d albumai atnaujinti';
+$lang['%d comment to validate'] = '%d patvirtinti komentarą';
+$lang['%d comment'] = '%d koment.';
+$lang['%d comments to validate'] = '%d patvirtinti komentarus';
+$lang['%d comments'] = '%d komentarai(-ų)';
+$lang['%d hit'] = '%d paspaudimas';
+$lang['%d hits'] = '%d paspaudimai';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d naujas komentaras';
+$lang['%d new comments'] = '%d nauji komentarai';
+$lang['%d new photo'] = '%d nauja nuotrauka';
+$lang['%d new photos'] = '%d naujos nuotraukos';
+$lang['%d new user'] = '%d naujas narys';
+$lang['%d new users'] = '%d nauji nariai';
+$lang['%d photo is also linked to current tags'] = '%d nuotrauka taip pat yra susijusi su dabartinėmis žymomis';
+$lang['%d photo'] = '%d nuotrauka';
+$lang['%d photos are also linked to current tags'] = '%d nuotraukos taip pat siejamos su dabartinėmis žymomis';
+$lang['%d photos'] = '%d nuotraukos(-ų)';
+$lang['%d rates'] = '%d reitingai';
+$lang['(!) This comment requires validation'] = '(!) šiam komentarui reikia patvirtinimo';
+$lang['... or browse your empty gallery'] = '... arba ieškoti tuščios galerijos';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... arba prašome išjungti šį pranešimą, aš rasiu pats';
+$lang['A comment on your site'] = 'Komenentaras svetainėje';
+$lang['About Piwigo'] = 'Apie Piwigo';
+$lang['About'] = 'Apie';
+$lang['All tags'] = 'Visos žymos';
+$lang['Any tag'] = 'Betkokia žyma';
+$lang['At least one listed rule must be satisfied.'] = 'Bent vienas iš išvardytų kriterijų, turi būti patenkintas.';
+$lang['Author'] = "Autorius";
+$lang['Close this window'] = 'Uždaryti šitą langą';
+$lang['Confirm Password'] = 'Pakartokite slaptažodį';
+$lang['Connection settings'] = "Prisijungimo nustatymai";
+$lang['Login'] = "Prisijungti";
+$lang['Contact webmaster'] = "Susisiekti su administratoriumi";
+$lang['Create a new account'] = 'Sukurti naują paskyrą';
+$lang['Created on'] = "Sukurta";
+$lang['Creation date'] = 'Sukūrimo data';
+$lang['Current password is wrong'] = 'Blogas slaptažodis';
+$lang['Dimensions'] = "Matmenys";
+$lang['Display'] = "Parodyti";
+$lang['Each listed rule must be satisfied.'] = 'Kiekvienas pateiktas kriterijus turi būti patenkintas.';
+$lang['Email address'] = 'Elektroninio pašto adresas';
+$lang['Enter your personnal informations'] = 'Įveskite savo asmeninius duomenis';
+$lang['Error sending email'] = 'Klaida siunčiant laišką nurodytu elektroninio pašto adresu';
+$lang['File name'] = "Failo vardas";
+$lang['File'] = "Failas";
+$lang['Filesize'] = "Failo dydis";
+$lang['Filter and display'] = 'Filtruoti ir rodyti';
+$lang['Filter'] = "Filtras";
+$lang['Forgot your password?'] = 'Pamiršote slaptažodį ?';
+$lang['Go through the gallery as a visitor'] = 'Naršyti galerijoje kaip svečias';
+$lang['Help'] = "Pagalba";
+$lang['Identification'] = "Identifikacija";
+$lang['Keyword'] = 'Raktažodis';
+$lang['Links'] = "Nuorodos";
+$lang['N/A'] = "N/A";
+$lang['New on %s'] = "Naujas %s";
+$lang['Notification'] = 'Pranešimas';
+$lang['Number of items'] = 'Vienetų skaičius';
+$lang['Original dimensions'] = 'Orginalūs matmenys';
+$lang['Password forgotten'] = 'Pamiršote slaptažodį';
+$lang['Password'] = 'Slaptažodis';
+$lang['Post date'] = "Publikavimo data";
+$lang['Posted on'] = "Paskelbta";
+$lang['Profile'] = 'Profilis';
+$lang['Quick connect'] = "Greitas prisijungimas";
+$lang['RSS feed'] = 'RSS srautas';
+$lang['Register'] = "Registruotis";
+$lang['Registration'] = "Registracija";
+$lang['Related tags'] = 'Susijusios žymos';
+$lang['Reset'] = 'Atstatyti';
+$lang['Retrieve password'] = 'Atkurti slaptažodį';
+$lang['Search rules'] = 'Ieškoti kriterijų';
+$lang['Search tags'] = 'Ieškoti žymų';
+$lang['Search'] = 'Ieškoti';
+$lang['Since'] = "Nuo";
+$lang['Sort by'] = 'Rūšiavimas pagal';
+$lang['Sort order'] = 'Rūšiavimo tvarka';
+$lang['Tag'] = 'Žyma';
+$lang['Tags'] = 'Žymos';
+$lang['Unknown feed identifier'] = 'Nežinomas identifikatorius';
+$lang['User comments'] = "Nario komentarai";
+$lang['Username'] = "Prisijungimo vardas";
+$lang['Visits'] = 'Apsilankymų';
+$lang['Webmaster'] = "Moderatorius";
+$lang['Week %d'] = 'Savaičių %d';
+$lang['About Piwigo'] = "Apie Piwigo";
+$lang['You are not authorized to access the requested page'] = 'Jūs neturite leidomo pasiekti norimą puslapį';
+$lang['Administration'] = "Administracija";
+$lang['all'] = "visi";
+$lang['ascending'] = 'didėjimo tvarka';
+$lang['author(s) : %s'] = "autorius : %s";
+$lang['posted after %s (%s)'] = "paskelbta po %s (%s)";
+$lang['posted before %s (%s)'] = 'paskelbta prieš %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = "paskelbta tarp %s (%s) ir %s (%s)";
+$lang['posted on %s'] = "paskelbta %s";
+$lang['Best rated'] = 'Geriausiai vertinamos';
+$lang['Calendar'] = "Kalendorius";
+$lang['All'] = "Visos";
+$lang['View'] = "Rodyti";
+$lang['chronology_monthly_calendar'] = "Menesio kalendorius";
+$lang['chronology_monthly_list'] = 'Mėnesio sąrašas';
+$lang['chronology_weekly_list'] = 'Savaitės sąrašas';
+$lang['Click here if your browser does not automatically forward you'] = 'Spauskite čia, jei jūsų naršyklė neužkrovė automatiškai';
+$lang['comment date'] = "pakomentavo";
+$lang['Comment'] = "Komentuoti";
+$lang['Your comment has been registered'] = 'Tavo komentaras užregistruotas';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood sistema: prašome šiek tiek palaukti prieš bandant rašyti kitą komentarą';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Jūsų komentaras nebuvo užregistruotas, nes neatitiko komentavimo taisyklių';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administratorius turi patvirtinti tavo komentarą, kad jis taptu matomau.';
+$lang['This login is already used by another user'] = 'Šis prisijungimo vardas jau naudojamas';
+$lang['Comments'] = "Komentarai";
+$lang['Add a comment'] = 'Rašyti komentarą';
+$lang['created after %s (%s)'] = "sukurtas po %s (%s)";
+$lang['created before %s (%s)'] = 'sukurtas prieš %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = "sukurta tarp %s (%s) ir %s (%s)";
+$lang['created on %s'] = "sukurta %s";
+$lang['Customize'] = "Nustatymai";
+$lang['Your Gallery Customization'] = 'Jūsų galerijos nustatymai';
+$lang['day'][0] = "Sekmadienis";
+$lang['day'][1] = "Pirmadienis";
+$lang['day'][2] = "Antradienis";
+$lang['day'][3] = "Tre&#269;iadienis";
+$lang['day'][4] = "Ketvirtadienis";
+$lang['day'][5] = "Penktadienis";
+$lang['day'][6] = "&#352;e&#353;tadienis";
+$lang['Default'] = "Numatyta";
+$lang['Delete'] = 'Ištrinti';
+$lang['descending'] = 'mažėjančia';
+$lang['edit'] = "redaguoti";
+$lang['wrong date'] = "bloga data";
+$lang['excluded'] = "atmesti";
+$lang['Favorites'] = 'Mėgstamiausios';
+$lang['First'] = "Pirmas";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galerija yra uždaryta profilaktikai. Prašome pabandyti vėliau.';
+$lang['Page generated in'] = "Puslapis atidarytas per";
+$lang['guest'] = 'svečias';
+$lang['Hello'] = "Sveiki";
+$lang['available for administrators only'] = "tik administracijai";
+$lang['customize the appareance of the gallery'] = 'redaguoti galerijos išvaizdą';
+$lang['search'] = 'ieškoti';
+$lang['Home'] = 'Pradžia';
+$lang['Identification'] = "Identifikacija";
+$lang['included'] = 'įskaitant';
+$lang['Invalid password!'] = 'Blogas slaptažodis!';
+$lang['Language'] = "Kalba";
+$lang['last %d days'] = "paskutines %d dienas";
+$lang['Last'] = "Paskutinis";
+$lang['Logout'] = "Atsijungti";
+$lang['obligatory'] = "privalomas";
+$lang['display a calendar by creation date'] = 'rodyti kalendorių pagal sukūrimo datą';
+$lang['return to normal view mode'] = 'grįžti į normalų peržiūros režimą';
+$lang['display a calendar by posted date'] = 'rodyti kalendorių pagal patalpinimo datą';
+$lang['month'][10] = "Spalis";
+$lang['month'][11] = "Lapkritis";
+$lang['month'][12] = "Gruodis";
+$lang['month'][1] = "Sausis";
+$lang['month'][2] = "Vasaris";
+$lang['month'][3] = "Kovas";
+$lang['month'][4] = "Balandis";
+$lang['month'][5] = "Gegu&#382;&#279;";
+$lang['month'][6] = "Bir&#382;elis";
+$lang['month'][7] = "Liepa";
+$lang['month'][8] = "Rugpj&#363;tis";
+$lang['month'][9] = "Rugs&#279;jis";
+$lang['Most visited'] = 'Žiūrimiausios';
+$lang['Unknown identifier'] = 'Nežinomas ifentifikatorius';
+$lang['New password'] = 'Naujas slaptažodis';
+$lang['Next'] = "Kita";
+$lang['no rate'] = 'nėra įvertinimų';
+$lang['password updated'] = 'slaptažodis atnaujintas';
+$lang['Recent period must be a positive integer value'] = "Naujausias laikotarpis turi buti teigiamas sveikasis skaicius";
+$lang['Show file metadata'] = "Rodyti failo duomenis";
+$lang['Powered by'] = "Sukurta";
+$lang['Preferences'] = "Nustatymai";
+$lang['Previous'] = "Atgal";
+$lang['Recent period'] = "Paskutinis laikotarpis";
+$lang['Redirection...'] = "Nukreipiama...";
+$lang['Please, enter a login'] = 'įrašykite prisijungimo vardą';
+$lang['login mustn\'t end with a space character'] = "Prisijungimo vardas negali baigtis tarpu";
+$lang['login mustn\'t start with a space character'] = "Prisijungimo vardas negali prasideti tarpu";
+$lang['this login is already used'] = 'Šis prisijungimo vardas jau naudojamas';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'Elektroninio pašto adresas turi būti toks: xxx@yyy.eee (pavyzdys : jack@altern.org)';
+$lang['Auto login'] = "Automatinis prisijungimas";
+$lang['remove this tag from the list'] = 'ištrinti šią žymą iš šio sąrašo';
+$lang['representative'] = "atstovauti";
+$lang['Search for Author'] = 'Ieškoti pagal autorių';
+$lang['Date'] = "Data";
+$lang['End-Date'] = "Pabaigos data";
+$lang['Kind of date'] = 'Rušies data';
+$lang['Search for words'] = 'Ieškoti žodžių';
+$lang['Search for all terms'] = 'Ieškoti visu žodžių';
+$lang['Empty query. No criteria has been entered.'] = 'Tušcia užklausa. Nėra kriterijų';
+$lang['Search results'] = 'Paieškos rezultatai';
+$lang['searched words : %s'] = 'ieškoti žodžiai : %s';
+$lang['Contact'] = "Kontaktai";
+$lang['Show number of comments'] = 'Rodyti kiek yra komentarų';
+$lang['Show number of hits'] = "Rodyti paspaudimus";
+$lang['slideshow'] = 'skaidrių žiūrėjimas';
+$lang['stop the slideshow'] = 'stabdyti skaidrių peržiūrą';
+$lang['Specials'] = "Specials";
+$lang['SQL queries in'] = "SQL queries in";
+$lang['the beginning'] = 'pradžia';
+$lang['Thumbnails'] = 'Piktogramos';
+$lang['Menu'] = "Meniu";
+$lang['A comment on your site'] = "Komenentaras svetain&#279;je";
+$lang['today'] = 'Šiandien';
+$lang['Update your rating'] = "Atnaujinti savo ivertinimus";
+$lang['the username must be given'] = "reikalingas slapyvardis";
+$lang['useful when password forgotten'] = 'naudinga tuo atveju, jei slaptažodi pamiršote';
+$lang['Quick search'] = "Greita paieska";
+$lang['Connected user: %s'] = 'Prisijungę vartotojai: %s';
+$lang['IP: %s'] = "IP: %s";
+$lang['Browser: %s'] = 'Naršyklė: %s';
+$lang['Author: %s'] = "Autorius: %s";
+$lang['Comment: %s'] = "Komentaras: %s";
+$lang['Comment by %s'] = "Komentavo %s";
+$lang['User: %s'] = "Slapyvardis: %s";
+$lang['Email: %s'] = "Email: %s";
+$lang['Admin: %s'] = "Administratorius: %s";
+$lang['Registration of %s'] = "Registracija %s";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Blogas vartotojo "guest "statusas, bus naudojama numatytoji busena. Prašome apie tai pranešti administratoriui.';
+$lang['Tag results for'] = 'žymų rezultatai';
+$lang['from %s to %s'] = "nuo %s iki %s";
+$lang['Play of slideshow'] = "Rodyti skaidres";
+$lang['Pause of slideshow'] = "Sustabdyti";
+$lang['Repeat the slideshow'] = "Kartoti skaidres";
+$lang['Not repeat the slideshow'] = 'Nekartoti nuotraukų';
+$lang['Reduce diaporama speed'] = 'Sulėtinti perjungimą';
+$lang['Accelerate diaporama speed'] = 'Pagreitinti perjungimą';
+$lang['Submit'] = "Patvirtinti";
+$lang['Yes'] = "Taip";
+$lang['No'] = "Ne";
+$lang['Piwigo Help'] = "Piwigo pagalba";
+$lang['Rank'] = 'įvertinimas';
+$lang['group by letters'] = 'grupuoti pagal abėcėlę';
+$lang['letters'] = 'raidės';
+$lang['show tag cloud'] = 'rodyti žymų debesį';
+$lang['cloud'] = "debesis";
+$lang['Reset to default values'] = "Nustatyti numatytuosius nustatymus";
+$lang['Sent by'] = 'Išsiųsta';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Slapukai yra blokuojami arba nepalaikomi jūsų naršyklėje. Jūs turite įgalinti slapukus prisijungdami';
+
+$lang['Edit a comment'] = 'Redaguoti komentarą';
+$lang['Are you sure?'] = "Ar esi tikras?";
+$lang['(!) This comment requires validation'] = '(!) &#352;iam komentarui reikia patvirtinimo';
+$lang['Welcome'] = 'Sveiki';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Sveiki atvykę į Piwigo nuotraukų galeriją!';
+$lang['... or browse your empty gallery'] = '... arba ie&#352;koti tu&#352;&#269;ios galerijos';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... arba pra&#353;ome i&#353;jungti š&#353;&#303; prane&#353;im&#261;, a&#353; rasiu pats';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Sveika(-as) %s, Tavo Piwigo galerija yra tuščia!';
+$lang['I want to add photos'] = 'Patalpinti nuotraukas';
+$lang['Manage this user comment: %s'] = 'Redaguoti šio žmogaus komentarą: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Neįrašytas elekroninio pašto adresas. Prašome jį nurodyti.';
+$lang['This author modified following comment:'] = 'Autorius pakeitė šį komentarą:';
+$lang['This author removed the comment with id %d'] = 'Šis autorius ištrynė komentarą, kurio id yra %d';
+$lang['month']['8'] = 'Rugpjūtis';
+$lang['month']['9'] = 'Rugsėjis';
+$lang['month']['5'] = 'Gegužė';
+$lang['month']['6'] = 'Birželis';
+$lang['day']['3'] = 'Trečiadienis';
+$lang['day']['6'] = 'Šeštadienis';
+$lang['set as album representative'] = 'nustatyti kaip albumo viršelį';
+$lang['in %d sub-album'] = '%d subalbume';
+$lang['in %d sub-albums'] = '%d subalbumuose';
+$lang['in this album'] = 'šiame albume';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS srautas informuoja apie naujus įvykius šiame puslapyje: naujas nuotraukas, atnaujintus albumus, naujus komentarus. Naudojama su RSS srauto skaitykle.';
+$lang['Photos posted within the last %d day.'] = 'Tik nuotrukos, paskelbtos per paskutinę %d dieną.';
+$lang['Photos posted within the last %d days.'] = 'Tik nuotrukos, paskelbtos per paskutines %d dienas.';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo susidūrė su didele klaida.';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Skaitine tvarka, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Skaitine tvarka, 9 &rarr; 1';
+$lang['IPTC Metadata'] = 'IPTC Metaduomenys';
+$lang['Forbidden'] = 'Priėjimas draudžiamas';
+$lang['return to the display of all photos'] = 'grįžti į visų nuotraukų peržiūrą';
+$lang['photos posted during the last %d days'] = 'nuotraukos, paskelbtos per paskutines %d dienas(-ų)';
+$lang['mandatory'] = 'privalomas';
+$lang['display available tags'] = 'rodyti galimas žymas';
+$lang['display best rated photos'] = 'rodyti geriausiai vertinamas nuotraukas';
+$lang['display last user comments'] = 'rodyti paskutinius lankytojų komentarus';
+$lang['display most recent photos'] = 'rodyti naujausias nuotraukas';
+$lang['display most visited photos'] = 'rodyti žiūrimiausias nuotraukas';
+$lang['display only recently posted photos'] = 'rodyti tik nesenai patalpintas nuotraukas';
+$lang['display photos linked to this tag'] = 'rodyti nuotraukas, susijusias su šia žyma';
+$lang['display recently updated albums'] = 'rodyti nesenai atnaujintus albumus';
+$lang['display this album'] = 'rodyti šį albumą';
+$lang['display your favorites photos'] = 'rodyti jūsų mėgstamiausias nuotraukas';
+$lang['html tags are not allowed in login'] = 'prisijungimo varde HTML žymos neleidžiamos';
+$lang['Invalid key'] = 'Neteisingas raktas';
+$lang['Manual sort order'] = 'Rankinė rūšiavimo tvarka';
+$lang['EXIF Metadata'] = 'EXIF Metaduomenys';
+$lang['2small'] = 'XXS - Miniatiūrinė';
+$lang['Here are your connection settings'] = 'Jūsų prisijungimo duomenys';
+$lang['Password Reset'] = 'Slaptažodžio keitimas';
+$lang['Password reset is not allowed for this user'] = 'Šiam vartotojui slaptažodžio keitimas negalimas';
+$lang['Password: %s'] = 'Slaptažodis: %s';
+$lang['Photos only RSS feed'] = 'Tik nuotrakų RSS srautas';
+$lang['Please enter your username or email address.'] = 'Prašome įvesti vartotojo vardą arba el-pašto adresą.';
+$lang['Rating score'] = 'Įvertinimo rezultatas';
+$lang['large'] = 'L - Didelė';
+$lang['medium'] = 'M - Vidutinė';
+$lang['photo'] = 'nuotrauka';
+$lang['small'] = 'S - Maža';
+$lang['square'] = 'Kvadratas';
+$lang['this email address is already in use'] = 'šis el-pašto adresas užimtas';
+$lang['thumb'] = 'Piktograma';
+$lang['xlarge'] = 'XL - Labai didelė';
+$lang['xsmall'] = 'XS - Labai maža';
+$lang['xxlarge'] = 'XXL - milžiniška';
+$lang['Search for any term'] = 'Ieškoti betkokio termino';
+$lang['Username "%s" on gallery %s'] = 'Vartotojas "%s" galerijoje %s';
+$lang['Username is mandatory'] = 'Vartotojo vardas privalomas';
+$lang['Username modification'] = 'Vartotojo vardo keitimas';
+$lang['Username or email'] = 'Vartotojo vardas arba el-paštas';
+$lang['Username: %s'] = 'Vartotojo vardas: %s';
+$lang['Visits, high &rarr; low'] = 'Peržiūros, daugiausia &rarr; mažiausia';
+$lang['Visits, low &rarr; high'] = 'Peržiūros, mažiausia &rarr; daugiausia';
+$lang['Website'] = 'Puslapis';
+$lang['You will receive a link to create a new password via email.'] = 'Jūs gausite nuorodą, kurioje galėsite pasikeisti slaptažodį, el-paštu.';
+$lang['Your favorites'] = 'Jūsų mėgstamiausios';
+$lang['Your password has been reset'] = 'Jūsų slaptažodis pakeistas';
+$lang['Your username has been successfully changed to : %s'] = 'Jūsų vartotojo vardas sėkmingai pakeistas į: %s';
+$lang['Your website URL is invalid'] = 'Jūsų web puslapio adresas neteisingas';
+$lang['add this photo to your favorites'] = 'pridėti šią nuotrauką prie jūsų mėgstamiausių';
+$lang['delete all photos from your favorites'] = 'pašalinti visas nuotraukas iš jūsų mėgstamiausių';
+$lang['delete this photo from your favorites'] = 'pašalinti šią nuotrauką iš jūsų mėgstamiausių';
+$lang['display a set of random photos'] = 'rodyti atsitiktinių nuotraukų rinkinį';
+$lang['display all photos in all sub-albums'] = 'rodyti visas nuotraukas iš visų subalbumų';
+$lang['Recent albums'] = 'Naujausi albumai';
+$lang['Recent photos'] = 'Naujausios nuotraukos';
+$lang['Requested album does not exist'] = 'Toks albumas neegzistuoja';
+$lang['Requested tag does not exist'] = 'Tokia žyma neegzistuoja';
+$lang['Search in albums'] = 'Ieškoti albumuose';
+$lang['Search in sub-albums'] = 'Ieškoti subalbumuose';
+$lang['Send my connection settings by email'] = 'Atsiųsti mano prisijungimo duomenis el-paštu';
+$lang['Show latest comments first'] = 'Pirma naujausi komentarai';
+$lang['Show oldest comments first'] = 'Pirma seniausi komentarai';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Kažkas paprašė pakeisti slaptažodį šiam vartotojui:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Sėkmingai užregistruota. Prisijungimo duomenis jums greitu metu atsiųsime el-paštu.';
+$lang['Thank you for registering at %s!'] = 'Ačiū, kad prisiregistravote %s';
+$lang['The number of photos per page must be a not null scalar'] = 'Nuotraukų skaičius puslapiui turi būti sveikas teigiamas skaičius';
+$lang['The passwords do not match'] = 'Slaptažodžiai nesutampa';
+$lang['To reset your password, visit the following address:'] = 'Norėdami pasikeisti slaptažodi apsilankykite šiuo adresu:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Vartotojas "%s" neįvedęs elektroninio pašto adreso - neįmanoma pakeisti slaptažodžio';
+$lang['Rating score, low &rarr; high'] = 'Įvertinimas, žemas &rarr; aukštas';
+$lang['Rating score, high &rarr; low'] = 'Įvertinimas, aukštas &rarr; žemas';
+$lang['Photo title, Z &rarr; A'] = 'Nuotraukos pavadinimas, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Nuotraukos pavadinimas, A &rarr; Z';
+$lang['Number of photos per page'] = 'Nuotraukų skaičius puslapiui';
+$lang['File name, Z &rarr; A'] = 'Failo vardas, Z &rarr; A';
+$lang['File name, A &rarr; Z'] = 'Failo vardas, A &rarr; Z';
+$lang['Date posted, old &rarr; new'] = 'Paskelbimo data, seniausi &rarr; naujausi';
+$lang['Date posted, new &rarr; old'] = 'Paskelbimo data, naujausi &rarr; seniausi';
+$lang['Date created, old &rarr; new'] = 'Sukūrimo data, seniausi &rarr; naujausi';
+$lang['Date created, new &rarr; old'] = 'Sukūrimo data, naujausi &rarr; seniausi';
+$lang['Photo sizes'] = 'Nuotraukų dydžai';
+$lang['Random photos'] = 'Atsitiktinės nuotraukos';
+$lang['Rate this photo'] = 'Įvertinti šią nuotrauką';
+$lang['Return to home page'] = 'Grįžti į pagrindinį puslapį';
+$lang['Search by date'] = 'Ieškoti pagal datą';
+$lang['Page not found'] = 'Puslapis nerastas';
+$lang['Original'] = 'Originalas';
+$lang['Album: %s'] = 'Albumas: %s';
+$lang['Invalid username or email'] = 'Neteisingas vartotojo vardas arba el-paštas';
+$lang['Mobile'] = 'Mobilus';
+$lang['Desktop'] = 'Darbastalis';
+$lang['Email address is mandatory'] = 'Elektroninio pašto adresas būtinas';
+$lang['Enter your new password below.'] = 'Įveskite savo naują slaptažodį.';
+$lang['Expand all albums'] = 'Išskleisti visus albumus';
+$lang['Hello %s,'] = 'Sveiki, %s,';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Jei manote, kad gavote šį laišką per klaidą - tiesiog ignoruokite jį';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Jei manote, kad gavote šį laišką per klaida - susisiekite su mumis adresu %s';
+$lang['Album'] = 'Albumas';
+$lang['Album results for'] = 'Paieškos rezultatai';
+$lang['Albums'] = 'Albumai';
+$lang['Bad request'] = 'Bloga užklausa';
+$lang['Change my password'] = 'Keisti mano slaptažodį';
+$lang['Check your email for the confirmation link'] = 'Jums į elektroninį paštą išsiųsta patvirtinimo nuoroda';
+$lang['Click on the photo to see it in high definition'] = 'Paspauskite ant nuotraukos, jei norite pamatyti ją didelės raiškos';
+$lang['Complete RSS feed (photos, comments)'] = 'Pilnas RSS srautas (nuotraukos, komentarai)';
+$lang['Download'] = 'atsisiųsti';
+$lang['Download this file'] = 'Atsisiųsti šį failą';
+$lang['Edit'] = 'Redaguoti';
+$lang['View in'] = 'Žiūrėti kaip';
+$lang['display each day with photos, month per month'] = 'rodyti kalendorių su fotografijomis, diena po dienos, menėsis po mėnesio';
+$lang['Permalink for album not found'] = 'Fiksuota nuoroda į albumą nerasta';
+$lang['%d rate'] = 'Įvertinimas: %d';
+$lang['Email'] = 'Elektroninis paštas';
+$lang['First Page'] = 'Pirmas puslapis';
+$lang['Go back to the album'] = 'Grįžti į albumą';
+$lang['Last Page'] = 'Paskutinis puslapis';
+$lang['Password is missing. Please enter the password.'] = 'Nėra slaptažodžio. Prašome įvesti slaptažodį';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nėra slaptažodžio patvirtinimo. Prašome pakartoti slaptažodį';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nav paroles apstiprinājuma. Lūdzu apstipriniet paroli.';
+$lang['%d photos per page'] = '%d nuotr. puslapyje';
+$lang['Theme'] = 'Tema';
+?>
Index: /tags/2.6.0RC1/language/lt_LT/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Jei reikės pagalbos - drąsiai kreipkitės konsultacijų mūsų forumuose: %s';
+$lang['Installation'] = 'Diegimas';
+$lang['Congratulations, Piwigo installation is completed'] = 'Sveikiname, Piwigo diegimas baigtas';
+$lang['enter a login for webmaster'] = 'įveskite webmasterio vartotojo vardą';
+$lang['webmaster login can\'t contain characters \' or "'] = 'webmasterio vartotojo vardas negali turėti simbolių \' ar "';
+$lang['Start Install'] = 'Pradėti įdiegimą';
+$lang['Try to configure PHP 5'] = 'Pabandyti sukonfigūruoti PHP 5';
+$lang['Welcome to your new installation of Piwigo!'] = 'Prašom užeiti į naują Piwigo svetainę!';
+$lang['also given by your host provider'] = 'taip pat teikiamas Jūsų hostingo paslaugų tiekėjo';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternatyvus būdas - tai nukopijuoti tekstą iš lauko aukščiau ir įrašyti jį į "local/config/database.inc.php" failą. Dėmesio! database.inc.php turi būti įrašyta tik tai, kas yra textarea laukelyje, jokių tuščių eilučių ir tarpų.';
+$lang['user login given by your host provider'] = 'login, kurį davė jūsų paslaugų tiekėjas';
+$lang['user password given by your host provider'] = 'slaptažodis, kurį davė jūsų paslaugų tiekėjas';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Lankytojai šiuo el-pašto adresu galės susisiekti su administratorium';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Jūs turėtumėte kreiptis pagalbos į savo paslaugų tiekėją, kaip perjungti į PHP 5 pačiam.';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'šį prefiksą turės duomenų bazės lentelės (tai padeda geriau valdyti lenteles)';
+$lang['please enter your password again'] = 'dar sykį įveskite savo slaptažodį';
+$lang['verification'] = 'patikrinimas';
+$lang['Hope to see you back soon.'] = 'Iki greito pasimatymo.';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Reikia pagalbos ? Užduokite klausimą <a href="%s">Piwigo pranešimų lentoje</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Dėmesio, jūs galite pakeisti savo konfigūraciją pats ir tada perkrauti Piwigo.';
+$lang['PHP 5 is required'] = 'reikalingas PHP 5';
+$lang['Password ']['confirm'] = 'Slaptažodis [pakartoti]';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo gali pamėginti perjungti Jūsų konfigūraciją į PHP5 sukuriant, ar modifikuojant, .htaccess failą.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo negalėjo sukonfigūruoti PHP 5';
+$lang['Sorry!'] = 'Apgailestaujame!';
+$lang['User'] = 'Vartotojas';
+$lang['Welcome to my photo gallery'] = 'Sveiki atvykę į mano foto galeriją';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Jūs galite atsisiųsti konfigūracinį failą ir padėti jį į local/config katalogą, prie Jūsų instaliacijos.';
+$lang['Admin configuration'] = 'Administracijos konfigūracija';
+$lang['Basic configuration'] = 'Pradinė konfigūracija';
+$lang['Can\'t connect to server'] = 'Neišeina prisijungti prie serverio';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Prie serverio prisijungti pavyko, tačiau prie duomenų bazės ne.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Nepavyko sukurti local/config/database.inc.php konfigūracinio failo.';
+$lang['Database configuration'] = 'Duomenų bazės konfigūracija';
+$lang['Database name'] = 'Duomenų bazės pavadinimas';
+$lang['Database table prefix'] = 'Duomenų bazės lentelių prefiksas';
+$lang['Default gallery language'] = 'Numatytoji galerijos kalba';
+$lang['Download the config file'] = 'Atsisiųsti konfigūracini failą';
+$lang['Host'] = 'Hostas';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Jūsų webhost\'as naudoja PHP %s.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Tai bus rodoma lankytojams. Tai būtina puslapio administracijai';
+$lang['Just another Piwigo gallery'] = 'Tiesiog dar viena Piwigo galerija';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Saugokite tai slaptai, nes tai leidžia prisijungti prie administratoriaus valdymo skydo.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost arba kitas, suteiktas jūsų paslaugų tiekėjo';
+?>
Index: /tags/2.6.0RC1/language/lt_LT/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Lietuvių [LT]
Index: /tags/2.6.0RC1/language/lt_LT/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lt_LT/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lt_LT/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Saugumo sumetimais toliau išvardinti priedai buvo išjungti. Prieš įjungiant priedus vėl, patikrinkite, ar nėra jų atnaujinimų:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Saugumo sumetimais toliau išvardintos temos buvo išjungtos. Prieš įjungiant temas vėl, patikrinkite, ar nėra jų atnaujinimų:';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Šis puslapis siųlo atnaujinti duomenų bazę iš senosios Piwigo versijos į naująją. Atnaujinimo asistentas mano, kad Jūs dabar naudojate <strong>leidimą %s</strong> (arba analogišką).';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Profilaktiškai peržiūrėkite [Administration>Tools>Maintenance], jei atsirado kokių nors netikėtumų.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Iš buvusios konfigūracijos išsaugoti tik miniatiūrų prefiksai ir webmasterio el-pašto adresas';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Tik administratorius gali pradėti atnaujinimą - prašome prisijungti žemiau.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '<i>%s</i> viduje, prieš <b>?></b>, įterpkite:';
+$lang['All sub-albums of private albums become private'] = 'Visi privačių albumų subalbumai tampa privatūs';
+$lang['total upgrade time'] = 'bendras atnaujinimo laikas';
+$lang['total SQL time'] = 'bendras SQL laikas';
+$lang['You do not have access rights to run upgrade'] = 'Jūs neturite leidimo pradėti atnaujinimo';
+$lang['User permissions and group permissions have been erased'] = 'Vartotojų ir grupių leidimai buvo ištrinti';
+$lang['Upgrade informations'] = 'Atnaujinimo informacija';
+$lang['Upgrade from version %s to %s'] = 'Atnaujinti iš %s versijos į %s';
+$lang['Upgrade'] = 'Atnaujinimas';
+$lang['Statistics'] = 'Statistika';
+$lang['SQL queries'] = 'SQL Užklausos';
+?>
Index: /tags/2.6.0RC1/language/lv_LV/about.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/about.html	(revision 25596)
@@ -0,0 +1,7 @@
+  <li>Piwigo - tas ir skripts, kas ļauj viegli uzbūvēt online galeriju.</li>
+
+  <li>Piwigo galerija ir radīta ar PHP (elePHPant) izmantojot MySQL (SQuirreL) datu bāzi.</li>
+
+  <li>Ja jums ir ierosinājumi vai vēlējumi skripta sakarā, adresējiet to  <a
+  href="http://ru.piwigo.org">Piwigo</a>, vai atstājiet <a href="http://ru.piwigo.org/forum">forumā</a>.</li>
+
Index: /tags/2.6.0RC1/language/lv_LV/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/admin.lang.php	(revision 25596)
@@ -0,0 +1,970 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d kopa';
+$lang['%d associations'] = '%d kopas';
+$lang['%d album including'] = '%d albūmu ieskaitot';
+$lang['%d albums including'] = '%d albūmus ieskaitot';
+$lang['%d physical'] = ' %d reāla';
+$lang['%d physicals'] = ' %d reālas';
+$lang[' and %d virtual'] = ' un %d virtuāls';
+$lang[' and %d virtuals'] = ' un %d virtuāli';
+$lang['%d album moved'] = '%d albūms pārvietots';
+$lang['%d albums moved'] = '%d albūmi pārvietoti';
+$lang['%d group'] = '%d grupa';
+$lang['%d groups'] = '%d grupas';
+$lang['%d member'] = '%d biedrs';
+$lang['%d members'] = '%d biedri';
+$lang['%d tag'] = '%d iezīme';
+$lang['%d tags'] = '%d iezīmes';
+$lang['%d user comment rejected'] = '%d lietotāja komentārs noraidīts';
+$lang['%d user comments rejected'] = '%d lietotāja komentāri noraidīti';
+$lang['%d user comment validated'] = '%d lietotāja komentārs apstiptināts';
+$lang['%d user comments validated'] = '%d lietotāja komentāri apstiptināti';
+$lang['%d user deleted'] = '%d lietotājs izdēsts';
+$lang['%d users deleted'] = '%d lietotāji izdzēsti';
+$lang['%d user'] = '%d lietotājs';
+$lang['%d users'] = '%d lietotāji';
+$lang['%d waiting for validation'] = '%d gaida apstiprinājumu';
+$lang['Actions'] = 'Darbības';
+$lang['Activate'] = 'Aktivēt';
+$lang['Add/delete a permalink'] = 'Pievienot/dzēst pamatsaiti';
+$lang['Add a tag'] = 'Pievienot iezīmi (birku)';
+$lang['Add a user'] = 'Pievienot lietotāju';
+$lang['Add group'] = 'Pievienot grupu';
+$lang['Add'] = 'Pievienot';
+$lang['Allow user registration'] = 'Atļaut reģistrēt lietotāju';
+$lang['Apply to sub-albums'] = 'Pielietot apakšalbūmiem';
+$lang['Associated'] = 'Saistītas';
+$lang['Caddie management'] = 'Groza pārvaldīšana';
+$lang['Caddie'] = 'Grozs';
+$lang['Albums authorized thanks to group associations'] = 'Albūmi autorizēti dēļ grupu apvienībēm';
+$lang['Album manual order was saved'] = 'Albūmu kārtība saglabāta';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Pārbaude pēc uzlabojuma nezināmu iemeslu dēļ nav izdevusies.';
+$lang['Check for upgrade'] = 'Pārbaudīt uzlabojumu';
+$lang['Comments for all'] = 'Komentāri visiem';
+$lang['Current name'] = 'Patreizējais nosaukums';
+$lang['Database'] = 'Datubāze';
+$lang['Deactivate'] = 'Izslēgt';
+$lang['Delete Representant'] = 'Dzēst Pārstāvi';
+$lang['Delete selected tags'] = 'Dzēst izvēlētās iezīmes';
+$lang['Delete selected users'] = 'Dzēst izvēlētos lietotājus';
+$lang['Deletions'] = 'Izdzēšanas';
+$lang['Deny selected groups'] = 'Noraidīt izvēlētās grupas';
+$lang['Deny selected users'] = 'Noraidīt izvēlētos lietotājus';
+$lang['Description'] = 'Apraksts';
+$lang['Display options'] = 'Parādīšanas varianti';
+$lang['Dissociated'] = 'Nesaistītas';
+$lang['Does not represent'] = 'Nepārstāv';
+$lang['Edit selected tags'] = 'Rediģēt izvēlētās iezīmes';
+$lang['Edit tags'] = 'Rediģēt iezīmes';
+$lang['Email admins when a new user registers'] = 'Paziņot adminam, kad jauns lietotājs reģistrējas';
+$lang['Email admins when a valid comment is entered'] = 'Paziņot adminam, kad derīgs komentārs ievadīts';
+$lang['Email admins when a comment requires validation'] = 'Paziņot adminam, kad parādījies komentārs, kas jāpārbauda';
+$lang['Environment'] = 'Vide';
+$lang['Form'] = 'Forma';
+$lang['Gallery title'] = 'Galerijas nosaukums';
+$lang['Grant selected groups'] = 'Atļaut piekļuvi izvēlētām grupām';
+$lang['Grant selected users'] = 'Atļaut piekļuvi izvēlētajiem lietotājiem';
+$lang['Group name'] = 'Grupas nosaukums';
+$lang['Groups'] = 'Grupas';
+$lang['Guests'] = 'Viesi';
+$lang['History'] = 'Vēsture';
+$lang['Informations'] = 'Informācija';
+$lang['Install'] = 'Instalēt';
+$lang['Link all album photos to a new album'] = 'Sasaistīt visus albūma fotoattēlus ar jaunu albūmu';
+$lang['Link all album photos to some existing albums'] = 'Sasaistīt visus albūma fotoattēlus ar jau esošiem albūmiem';
+$lang['Linked albums'] = 'Sasaistītie albūmi';
+$lang['Lock gallery'] = 'Bloķēt galeriju';
+$lang['Maintenance'] = 'Apkope';
+$lang['Edit album permissions'] = 'Pārvaldīt albūma atļaujas';
+$lang['Manage permissions for group "%s"'] = 'Pārvaldīt "%s" grupas atļaujas';
+$lang['Manage permissions for user "%s"'] = 'Pārvaldīt lietotāja "%s" atļaujas';
+$lang['Manage tags'] = 'Pārvaldīt iezīmes';
+$lang['Members'] = 'Biedri';
+$lang['Metadata synchronized from file'] = 'Metadati no faila sinhronizēti';
+$lang['Move albums'] = 'Pārvietot albūmus';
+$lang['Move'] = 'Pārvietot';
+$lang['Name'] = 'Nosaukums';
+$lang['New name'] = 'Jauns nosaukums';
+$lang['New parent album'] = 'Jauns pamatalbūms';
+$lang['New tag'] = 'Jauna iezīme';
+$lang['Number of comments per page'] = 'Komentāru skaits lapā';
+$lang['Number of rates'] = 'Vērtējumu skaits';
+$lang['Number of thumbnails to create'] = 'Izveidojamo piktogrammu skaits';
+$lang['Only private albums are listed'] = 'Tiek rādīti tikai privātie albūmi';
+$lang['Operating system'] = 'Operacionālā sistēma';
+$lang['Options'] = 'Izvēles';
+$lang['Other private albums'] = 'Citi privātie albūmi';
+$lang['Page banner'] = 'Lapas baneris';
+$lang['Parent album'] = 'Pamatalbūms';
+$lang['Path'] = 'Ceļš';
+$lang['Permalink'] = 'Pamatsaite';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Pirmsaiti %s iepriekš lietoja albūms %s. Vispirms izdzēsiet to no pirmsašu vēstures';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Pamatsaites nosaukums drīkst saturēt a-z, A-Z, 0-9, "-", "_" or "/". Tas nedrīkst būt tikai skaitlis vai sākties ar ciparu, kam seko "-"';
+$lang['Permalink %s is already used by album %s'] = 'Pirmsaiti %s jau lieto albūms %s';
+$lang['Permalink history'] = 'Pamatsaišu vēsture';
+$lang['Permalinks'] = 'Pamatsaites';
+$lang['Permission denied'] = 'Piekļuve liegta';
+$lang['Permission granted thanks to a group'] = 'Piekļuve atļauta pateicoties grupai';
+$lang['Permission granted'] = 'Piekļuve atļauta';
+$lang['Photo informations updated'] = 'Informācija par foto atjaunināta';
+$lang['Plugins'] = 'Spraudņi';
+$lang['Position'] = 'Pozīcijas';
+$lang['Preferences'] = 'Iestatījumi';
+$lang['Properties'] = 'Īpašības';
+$lang['Random photo'] = 'Gadījuma foto';
+$lang['Rate date'] = 'Vērtēšanas datums';
+$lang['Rating by guests'] = 'Viesu novērtējums';
+$lang['Rating'] = 'Vērtējums';
+$lang['Reject'] = 'Noraidīt';
+$lang['Representant'] = 'Pārstāvis';
+$lang['Representation of albums'] = 'Albūma attēlojums';
+$lang['Representative'] = 'Pārstāvniecisks';
+$lang['Represents'] = 'Pārstāv';
+$lang['Save order'] = 'Saglabāt kārtību';
+$lang['Save to permalink history'] = 'Saglabāt pamatsaišu vēsturē';
+$lang['Select at least one album'] = 'Izvēlēties vismaz vienu albūmu';
+$lang['Select at least one photo'] = 'Atlasiet vizmaz vienu foto';
+$lang['Select at least one user'] = 'Izvēlēties vismaz vienu lietotāju';
+$lang['Show info'] = 'Rādīt informāciju';
+$lang['Site manager'] = 'Web lapu pārzinis';
+$lang['Status'] = 'Statuss';
+$lang['Statistics'] = 'Statistika';
+$lang['Storage album'] = 'Albūma uzglabāšana';
+$lang['Sum of rates'] = 'Kopējais novērtējums';
+$lang['Tag "%s" already exists'] = 'Iezīme "%s" jau eksistē';
+$lang['Tag "%s" was added'] = 'Iezīme "%s" ir pievienota';
+$lang['Tag selection'] = 'Iezīmes izvēle';
+$lang['The %d following tags were deleted'] = ' %d sekojošas iezīmes izdzēstas';
+$lang['Unable to check for upgrade.'] = 'Neiespējami pārbaudīt vai ir uzlabojums.';
+$lang['Uninstall'] = 'Atinstalēt';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Lietot foto kārtošanu pēc noklusējuma (definēts konfigurācijas failā)';
+$lang['User comments validation'] = 'Lietotāju komentāru pārbaude';
+$lang['Users'] = 'Lietotāji';
+$lang['Validate'] = 'Apstiprināt';
+$lang['Validation'] = 'Apstiprināšana';
+$lang['Version'] = 'Versija';
+$lang['Virtual albums to move'] = 'Virtuālie albūmi pārvietošanai';
+$lang['Virtual album name'] = 'Virtuālā albūma nosaukums';
+$lang['Webmaster cannot be deleted'] = 'Webmasteru izdzēst nevar';
+$lang['You are running on development sources, no check possible.'] = 'Jūs darbojaties izstrādes režīmā, pārbaude nav iespējama.';
+$lang['You cannot delete your account'] = 'Jūs nevarat izdzēst savu kontu';
+$lang['You cannot move an album in its own sub album'] = 'Nevar pārvietot albūmu savā apakšalbūmā';
+$lang['You need to confirm deletion'] = 'Jums jāapstiprina izdzēšana';
+$lang['Associate to album'] = 'sasaistīt ar albūmu';
+$lang['associate to group'] = 'saistīt ar grupu';
+$lang['Authorized'] = 'Atļauts';
+$lang['Add a virtual album'] = 'Pievienot virtuālo albūmu';
+$lang['Authorize users to add comments on selected albums'] = 'Atļaut lietotājiem pievienot komentārus izvēlētajiem albūmiem';
+$lang['The name of an album must not be empty'] = 'Albūma nosaukums nedrīkst būt tukšs';
+$lang['Lock albums'] = 'Boķēt albūmus';
+$lang['Private'] = 'Privāts albūms';
+$lang['Public'] = 'Publiska albūms';
+$lang['Find a new representant by random'] = 'Atrast jaunu pārstāvi nejauši';
+$lang['Public / Private'] = 'Publisks / Privāts';
+$lang['Manage authorizations for selected albums'] = 'Pārvaldīt izvēlēto albūmu autorizācijas';
+$lang['Virtual album added'] = 'Virtuālais albūms pievienots';
+$lang['Virtual album deleted'] = 'Virtuālais albūms izdzēsts';
+$lang['Access type'] = 'Piekļuves tips';
+$lang['Information data registered in database'] = 'Datubāzē reģistrētā informācija';
+$lang['Default display'] = 'Izskats pēc noklusējuma';
+$lang['The gallery URL is not valid.'] = 'Nekorekts galerijas URL.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Lapā var būt no 5 līdz 50 komentāriem.';
+$lang['Configuration'] = 'Konfigurācija';
+$lang['confirm'] = 'apstiprinājums';
+$lang['Date'] = 'Datums';
+$lang['delete album'] = 'dzēst albūmu';
+$lang['Dissociate from album'] = 'atsaistīt no albūma';
+$lang['dissociate from group'] = 'atsaistīt no grupas';
+$lang['Album updated successfully'] = 'Informācija par albūmu veiksmīgi atjaunota.';
+$lang['photos per page'] = 'foto skaits lapā';
+$lang['High definition enabled'] = 'Augstā izšķirtspēja iespējota';
+$lang['File'] = 'Fails';
+$lang['first photo added on %s'] = 'pirmais %s pievienotais foto';
+$lang['Forbidden'] = 'Aizliegts';
+$lang['global mode'] = 'grupveida režīms';
+$lang['group "%s" added'] = 'grupa "%s" pievienota';
+$lang['group "%s" deleted'] = 'grupa "%s" izdzēsta';
+$lang['group "%s" updated'] = 'grupa "%s" atjaunināta';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Grupas nosaukums nedrīkst saturēt " vai \' būt tukšs.';
+$lang['This name is already used by another group.'] = 'Šo vārdu jau lieto cita grupa.';
+$lang['High definition'] = 'Augsta izšķirtspēja';
+$lang['jump to album'] = 'pāriet uz albūmu';
+$lang['jump to photo'] = 'iet uz foto';
+$lang['leave'] = 'atstāt';
+$lang['Lock'] = 'Bloķēt';
+$lang['Locked'] = 'Bloķēts';
+$lang['manage album photos'] = 'pārvaldīt albūmu elementus';
+$lang['manage sub-albums'] = 'Pārvaldīt apakšalbūmus';
+$lang['Manage'] = 'Pārvaldīt';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Izpildes laiks beidzies, apstrāde jāturpina [Aprēķinātais laiks: %d sekundes].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Izpildes laiks pārsniegts, apstrāde jāturpina [Aprēķinātais laiks: %d sekundes].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Laiks, kas atvēlēts lietotāju saraksta izveidei pasta nosūtīšanai, ierobežots. Citi lietotāji nav ietverti.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'E-pasta izsūtīšanas laiks ierobežots. Citas vēstules izlaistas.';
+$lang['To send ?'] = 'Nosūtīt?';
+$lang['Last send'] = 'Pēdējais nosūtītais';
+$lang['User'] = 'Lietotājs';
+$lang['Complementary mail content'] = 'Vēstules saturs';
+$lang['See you soon,'] = 'Visu labu,';
+$lang['Go to'] = 'Pāriet uz';
+$lang['Hello'] = 'Sveiki';
+$lang['New photos were added'] = 'Tika pievienoti jauni fotoattēli';
+$lang['on'] = 'pie';
+$lang['between'] = 'starp';
+$lang['and'] = 'un';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmāsters reģistrējis Jūs saņemt ziņas ar e-pastu.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Jūs esat reģistrējies saņemt ziņas pa e-pastu.';
+$lang['To subscribe'] = 'reģistrācijai';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Ja Jums rodas problēmas vai jautājumi, lūdzu rakstiet';
+$lang['[NBM] Problems or questions'] = '[NBM] Problēmas un jautājumi';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmāsters ir izdzēsis Jūs no reģistra , lai saņemtu ziņas ar e-pastu .';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Jūs anulējāt parakstu saņemt ziņas ar e-pastu.';
+$lang[', click on'] = ', klikšķiniet uz';
+$lang['To unsubscribe'] = 'Lai anulētu reģistrāciju';
+$lang['With blank value, gallery title will be used'] = 'Ja tukša vērtība, tiks lietots galerijas nosaukums';
+$lang['Notification'] = 'Paziņojums';
+$lang['Error when sending email to %s [%s].'] = 'Kļūda nosūtot vēstuli %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Vēstule nosūtīta %s [%s].';
+$lang['%d mail was sent.'] = '%d vēstule ir nosūtīta.';
+$lang['%d mails were sent.'] = '%d vēstules ir nosūtītas.';
+$lang['%d mail was not sent.'] = '%d vēstule netika nosūtīta.';
+$lang['%d mails were not sent.'] = '%d vēstules netika nosūtītas.';
+$lang['No mail to send.'] = 'Nav vēstuļu nosūtīšanai.';
+$lang['There is no available subscribers to mail.'] = 'Nav lietotāju, kam varētu nosūtīt pastu.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Lietotāji pieejami, ja ir jauni elementi ko paziņot.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Tikai Webmāsters var redzēt šo iezīmi, ne administrators.';
+$lang['No user to send notifications by mail.'] = 'Nav lietotāja, kam nosūtīt e-paziņojumu.';
+$lang['New photos added'] = 'Pievienoti jauni fotoattēli';
+$lang['Subscribe to notification by mail'] = 'Reģistrēties, lai saņemtu e-paziņojumus';
+$lang['Unsubscribe from notification by mail'] = 'Anulēt reģistrāciju, lai saņemtu e-paziņojumus';
+$lang['Parameter'] = 'Iestatījumi';
+$lang['Operation in progress'] = 'Procesa apstrāde.';
+$lang['Please wait...'] = 'Lūdzu uzgaidiet...';
+$lang['Continue processing treatment'] = 'Turpināt procesa apstrādi';
+$lang['Add detailed content'] = 'Pievienot detalizētu saturu';
+$lang['Send mail as'] = 'Sūtīt vēstuli no';
+$lang['Send mail to users'] = 'Sūtīt vēstuli lietotājiem';
+$lang['Send'] = 'Sūtīt';
+$lang['Subscribed'] = 'Izsūtīšanas sarakstā';
+$lang['Subscribe'] = 'Izsūtīšanas saraksts';
+$lang['Parameters'] = 'Parameteri';
+$lang['Select recipients'] = 'Izvēlēties saņēmējus';
+$lang['Subscribe/unsubscribe users'] = 'Reģistrēt/izdzēst lietotājus';
+$lang['Unsubscribed'] = 'Nav izsūtīšanas sarakstā';
+$lang['%d parameter was updated.'] = '%d parametrs atjaunināts.';
+$lang['%d parameters were updated.'] = '%d parametru atjauninātu.';
+$lang['%d user was not updated.'] = '%d lirtotājs nav atjaunināts.';
+$lang['%d users were not updated.'] = '%d lietotāji nav atjaunināti.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Lietotājs %s [%s] izņemts no e-pasta izsūtīšanai paredzētā saraksta.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Lietotājs %s [%s] pievienots e-pasta izsūtīšanai paredzētajam sarakstam.';
+$lang['%d user was updated.'] = '%d lietotājs izmainīts.';
+$lang['%d users were updated.'] = '%d lietotāji izmainīti.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Lietotājs %s [%s] nav izņemts no e-pasta izsūtīšanai paredzētā saraksta.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Lietotājs %s [%s] nav pievienots e-pasta izsūtīšanai paredzētajam sarakstam.';
+$lang['User %s [%s] added.'] = 'Lietotājs %s [%s] pievienots.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Uzmanību: pievienojot vai dzēšot e-pasta izsūtīšanai paredzētajam sarakstam lietotājiem tiks nosūtīts paziņojums';
+$lang['Send mail on HTML format'] = 'Sūtīt vēstuli HTML formātā';
+$lang['Include display of recent photos grouped by dates'] = 'Rādīt jaunākos foto, sagrupētus pēc datumiem';
+$lang['Available only with HTML format'] = 'Pieejams tikai HTML formātā';
+$lang['no write access'] = 'nav atļaujas ierakstīšanai';
+$lang['Permissions'] = 'Atļaujas';
+$lang['private'] = 'privāta';
+$lang['public'] = 'publiska';
+$lang['Purge never used notification feeds'] = 'Iztīrīt nelietotos paziņojumu kanālus';
+$lang['Purge sessions'] = 'Iztīrīt sesijas';
+$lang['randomly represented'] = 'gadījuma pārstāvis';
+$lang['registration date'] = 'reģistrācijas datums';
+$lang['clean'] = 'iztīrīt';
+$lang['Create this site'] = 'Izveidot šo web lapu';
+$lang['test'] = 'tests';
+$lang['test this remote site'] = 'testēt šo attālināto web lapu';
+$lang['remove tags'] = 'noņemt iezīmes';
+$lang['Repair and optimize database'] = 'Labot un optimizēt datu bāzi';
+$lang['selection'] = 'atlasītie';
+$lang['set to'] = 'izmainīt uz';
+$lang['singly represented'] = 'izvēlētais pārstāvis';
+$lang['This site already exists'] = 'Šī Web lapa jau eksistē';
+$lang['created'] = 'izveidota';
+$lang['delete'] = 'izdzēsta';
+$lang['delete this site and all its attached elements'] = 'izdzēst šo web lapu un visus tai pievienotos elementus';
+$lang['deleted'] = 'izdzēsta';
+$lang['an error happened'] = 'gadījusies kļūda';
+$lang['Local'] = 'Lokāls';
+$lang['Remote'] = 'Attālināts';
+$lang['update the database from files'] = 'atjaunināt datu bāzi no failiem';
+$lang['status'] = 'statuss';
+$lang['Directory'] = 'Direktorija';
+$lang['sub-albums'] = 'apakšalbūmi';
+$lang['Synchronize metadata'] = 'sinhronizēt metadatus';
+$lang['target'] = 'mērķis';
+$lang['Thumbnail'] = 'Piktogramma';
+$lang['Title'] = 'Nosaukums';
+$lang['Album list management'] = 'Albūmu pārvaldīšana';
+$lang['Piwigo configuration'] = 'Piwigo konfigurācija';
+$lang['Edit album'] = 'Rediģēt albūmu';
+$lang['Group management'] = 'Pārvaldīt grupas';
+$lang['User list'] = 'Lietotāju saraksts';
+$lang['Edit photo information'] = 'Rediģēt informāciju par foto';
+$lang['Database synchronization with files'] = 'Datu bāzes sinhronizācija ar failiem';
+$lang['all'] = 'viss';
+$lang['height must be a number superior to'] = 'augstuman jābūt skaitlim lielākam par';
+$lang['width must be a number superior to'] = 'platumam jābūt skaitlim lielākam par';
+$lang['for the file format'] = 'faila formātam';
+$lang['Photo unreachable or no support'] = 'foto nesasniedzams vai bez atbalsta';
+$lang['GD version'] = 'GD versija';
+$lang['General statistics'] = 'Vispārējā statistika';
+$lang['average time'] = 'vidējais laiks';
+$lang['number of miniaturized photos'] = 'miniaturizēto foto skaits';
+$lang['total time'] = 'kopējais laiks';
+$lang['for this file format'] = 'šim faila formātam';
+$lang['unit mode'] = 'mono režīms';
+$lang['Unlocked'] = 'Atbloķēt';
+$lang['unset'] = 'notīrīt';
+$lang['Update albums informations'] = 'Atjaunot albūma informāciju';
+$lang['Update photos information'] = 'Atjaunināt informāciju par fotoattēliem';
+$lang['Synchronize'] = 'Sinhrinizēšana';
+$lang['reduce to single existing albums'] = 'samazināt līdz vienam esošam albūmam';
+$lang['Choose an option'] = 'Izvēlieties iespēju';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'parādīt maksimālo informāciju (pievienotie albūmi un foto, izdzēstie albūmi un foto)';
+$lang['Error list'] = 'Kļūdu saraksts';
+$lang['Errors caption'] = 'Kļūdu apzīmējumi';
+$lang['Detailed informations'] = 'Detalizēta informācija';
+$lang['File/directory read error'] = 'Faila/mapes lasīšanas kļūda';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Nav piekļuves failam vai mapei (vai nu neeksistē vai piekļuve liegta)';
+$lang['albums deleted in the database'] = 'no datu bāzes izdzēsti albūmi';
+$lang['photos deleted from the database'] = 'no datu bāzes izdzēstie fotoattēli';
+$lang['photos candidates for metadata synchronization'] = 'foto kandidāti metadatu sinhronizācijai';
+$lang['photos informations synchronized with files metadata'] = 'informācija par foto sinhronizēta ar faila metadatiem';
+$lang['errors during synchronization'] = 'kļūdas sinhronizācijas laikā';
+$lang['albums added in the database'] = 'datu bāzei pievienoti albūmi';
+$lang['photos added in the database'] = 'datubāzei pievienotie fotoattēli';
+$lang['photos updated in the database'] = 'datubāzē atjauninātie fotoattēli';
+$lang['Search for new images in the directories'] = 'Jaunus attēlu meklēšana mapēs';
+$lang['added'] = 'pievienots';
+$lang['Metadata synchronization results'] = 'Metadatu sinhronizācijas rezultāti';
+$lang['only perform a simulation (no change in database will be made)'] = 'veikt tikai testēšanu (nekas nemainās datu bāzē)';
+$lang['Simulation'] = 'Simulācija';
+$lang['directories + files'] = 'mapes un faili';
+$lang['only directories'] = 'tikai mapes';
+$lang['synchronize files structure with database'] = 'sinhronizēt failu struktūru ar datubāzi';
+$lang['synchronize files metadata with database photos informations'] = 'sinhronizēt faila metadatus ar informāciju par foto datubāzē';
+$lang['even already synchronized photos'] = 'jau sinhronizētie fotoattēli';
+$lang['Used metadata'] = 'Lietotie metadati';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Mapju un failu nosaukumi jāveido no burtiem, cipariem, "-", "_" vai "."';
+$lang['wrong filename'] = 'nepareizs faila nosaukums';
+$lang['Upload'] = 'Augšupielāde';
+$lang['user "%s" added'] = 'lietotājs "%s" pievienots';
+$lang['User status'] = 'Lietotāja statuss';
+$lang['user_status_admin'] = 'Administrators';
+$lang['user_status_generic'] = 'Vispārējais';
+$lang['user_status_guest'] = 'Viesis';
+$lang['user_status_normal'] = 'Lietotājs';
+$lang['user_status_webmaster'] = 'Webmāsters';
+$lang['Virtual album'] = 'Virtuālais albūms';
+$lang['Waiting'] = 'Gaidīšana';
+$lang['default'] = 'pēc noklusējuma';
+$lang['Toggle \'default group\' property'] = 'Pretējais \'grupa pēc noklusējuma\' īpašība';
+$lang['Advanced features'] = 'Paplašinātās funkcijas';
+$lang['Overall'] = 'Visa';
+$lang['Year'] = 'Gads';
+$lang['Month'] = 'Mēnesis';
+$lang['Day'] = 'Diena';
+$lang['Pages seen'] = 'Lapas apskatītas';
+$lang['Time'] = 'Laiks';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Elements';
+$lang['Section'] = 'Nodaļa';
+$lang['An information email was sent to group "%s"'] = 'Informējošs e-pasts nosūtīts grupai "%s"';
+$lang['Send an information email to group members'] = 'Nosūtīt informējošu e-pastu grupas biedriem';
+$lang['Group'] = 'Grupa';
+$lang['[%s] Visit album %s'] = '[%s] Apciemo albūmu %s';
+$lang['Hello,'] = 'Sveiki,';
+$lang['See you soon.'] = 'Uz redzēšanos.';
+$lang['Discover album:'] = 'Atklāj albūmu:';
+$lang['Mail content'] = 'Pasta saturs';
+$lang['none'] = 'neviens';
+$lang['high'] = 'liels';
+$lang['other'] = 'cits';
+$lang['Element type'] = 'Elementa tips';
+$lang['Image id'] = 'Attēla id';
+$lang['Summary'] = 'Summāri';
+$lang['%d line filtered'] = '%d līnija nofiltrēta';
+$lang['%d lines filtered'] = '%d līnijas nofiltrētas';
+$lang['%d guest'] = '%d viesis';
+$lang['%d guests'] = '%d viesu';
+$lang['Hour'] = 'Stunda';
+$lang['guest'] = 'viesis';
+$lang['default values'] = 'vērtības pēc noklusēšanas';
+$lang['Guest cannot be deleted'] = 'Viesi nav iespējams izdzēst';
+$lang['Default user cannot be deleted'] = 'Lietotājs pēc noklusējuma nav izdzēšams';
+$lang['Purge history detail'] = 'Izdzēst daļu vēstures';
+$lang['Purge history summary'] = 'Izdzēst visu vēsturi';
+$lang['Check integrity'] = 'Saderības pārbaude';
+$lang['Anomaly'] = 'Bojājums';
+$lang['Correction'] = 'Labojums';
+$lang['Automatic correction'] = 'Automātisks labojums';
+$lang['Impossible automatic correction'] = 'Automātiska labošana neiespējama';
+$lang['Correction applied with success'] = 'Labojums sekmīgi pielietots';
+$lang['Correction applied with error'] = 'Labojums veikts ar kļūdām';
+$lang['%d anomaly has been detected.'] = '%d bojājums konstatēts.';
+$lang['%d anomalies have been detected.'] = '%d bojājumi konstatēti.';
+$lang['%d anomaly has been corrected.'] = '%d bojājums izlabots.';
+$lang['%d anomalies have been detected corrected.'] = '%d bojājumi konstatēti un izlaboti.';
+$lang['%d anomaly has not been corrected.'] = '%d bojājums nav izlabots.';
+$lang['%d anomalies have not been corrected.'] = '%d bojājumi nav izlaboti.';
+$lang['Go to %s or %s for more informations'] = 'Apmeklējie %s vai %s ,lai iegūtu vairāk informācijas';
+$lang['the forum'] = 'forums';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s vērtība nekorekta, jo exif netiek atbalstīts';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s jāatslēdz jūsu local/config/config.inc.php failā';
+$lang['Main "guest" user does not exist'] = 'Lietotāja "viesis" statuss vairs neeksistē';
+$lang['Main "guest" user status is incorrect'] = 'Lietotāja "viesis" statuss ir nekorekts';
+$lang['Default user does not exist'] = 'Lietotājs pēc noklusējuma vairs neeksistē';
+$lang['Main "webmaster" user does not exist'] = 'Lietotājs "webmāsters" vairs neeksistē';
+$lang['Main "webmaster" user status is incorrect'] = 'Lietotāja "webmāsters" statuss ir nekorekts';
+$lang['User "%s" created with "%s" like password'] = 'Lietotājs "%s" izveidots ar paroli "%s"';
+$lang['Status of user "%s" updated'] = 'Lietotāja "%s" statuss atjaunots';
+$lang['add new photos to caddie'] = 'pievienot jaunus fotoattēlus grozam';
+$lang['No display'] = 'Nerādīt';
+$lang['Classic display'] = 'Klasiskais izskats';
+$lang['Hoverbox display'] = 'Hoverbox izskats';
+$lang['Mail address is obligatory for all users'] = 'E-pasta adrese obligāta visiem lietotājiem';
+$lang['Minimum privacy level'] = 'Minimālais aizsardzības līmenis';
+$lang['Privacy level'] = 'Aizsardzības līmenis';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakti';
+$lang['Level 2'] = 'Draugi';
+$lang['Level 4'] = 'Ģimene';
+$lang['Level 8'] = 'Administrācija';
+$lang['Reinitialize check integrity'] = 'Atkārtot integritātes pārbaudi';
+$lang['Check all'] = 'Atzīmēt visu';
+$lang['Uncheck all'] = 'Noņemt visas atzīmes';
+$lang['Check automatic corrections'] = 'Atzīmēt autokorekciju';
+$lang['Apply selected corrections'] = 'Pielietot izvēlētās korekcijas';
+$lang['Ignore selected anomalies'] = 'Ignorēt atzīmētos bojājumus';
+$lang['Refresh'] = 'Atjaunināt';
+$lang['The anomaly will be ignored until next application version'] = 'Bojājumi tiks ignorēti līdz aplikācijas jaunajai versijai';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Bojājumu labojums atcels ignorēšanas faktu';
+$lang['%d anomaly has been ignored.'] = '%d bojājums ignorēts.';
+$lang['%d anomalies have been ignored.'] = '%d bojājumi ignorēti.';
+$lang['Plugins which need upgrade'] = 'Atjaunināmie spraudņi';
+$lang['Plugin list'] = 'Citi spraudņi';
+$lang['Check for updates'] = 'Jauninājumu pārbaude';
+$lang['Other plugins'] = 'Pieejami citi spraudņi';
+$lang['Last revisions'] = 'Pēdējās izmaiņas';
+$lang['Are you sure you want to delete this plugin?'] = 'Vai esat pārliecināts, ka gribat izdzēst šo spraudni?';
+$lang['Are you sure you want to install this plugin?'] = 'Vai esat pārliecināts, ka gribat instalēt šo spraudni?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Vai esat pārliecināts, kagribat instalēt šo jauninājumu? Pārbaudies vai esošajo versiju nav jāatinstalē.';
+$lang['Plugin has been successfully copied'] = 'Šis spraudnis sekmīgi nokopēts';
+$lang['You might go to plugin list to install and activate it.'] = 'Pārejiet pie spraudņu saraksta, lai to instalētu un aktivētu.';
+$lang['Can\'t create temporary file.'] = 'Nevar izveidot pagaidu failu.';
+$lang['Can\'t download archive.'] = 'Nevar lejupielādēt arhīvu.';
+$lang['Can\'t read or extract archive.'] = 'Nevar lasīt vai izpakot arhīvu.';
+$lang['An error occured during extraction (%s).'] = 'Kļūda izpakojot (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Lūdzu pārbaudiet "spraudņu" mapes and tās apakšdirektoriju atļaujas (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Neiespējams savienojums ar serveri.';
+$lang['Purge compiled templates'] = 'Dzēst izveidotās veidnes';
+$lang['ACCESS_0'] = 'Brīva piekļuve';
+$lang['ACCESS_1'] = 'Piekļuve visiem';
+$lang['ACCESS_2'] = 'Piekļuve tikai reģistrētiem lietotājiem';
+$lang['ACCESS_3'] = 'Piekļuve tikai administratoriem';
+$lang['ACCESS_4'] = 'Piekļuve webmāsteram';
+$lang['ACCESS_5'] = 'Nav piekļuves';
+$lang['Support'] = 'Atbalsts';
+$lang['Documentation'] = 'Dokumentācija';
+$lang['A new version of Piwigo is available.'] = 'Pieejama jauna Piwigo versija.';
+$lang['Piwigo Administration'] = 'Piwigo Administrācija';
+$lang['Piwigo version'] = 'Piwigo versija';
+$lang['You are running the latest version of Piwigo.'] = 'Jūs strādājat ar Piwigo beidzamo versiju.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Uzstādītā %s [%s] versija ir nesavietojama ar prasīto [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Lai izmantotu aplikāciju pilnībā uzlabojiet savu sistēmu, pretējā gadījumā tā strādās nekorekti vai nedarbosies vispār';
+$lang['Deleted on'] = 'Izdzēsts';
+$lang['Last hit'] = 'Pēdējie skatītie';
+$lang['GD library is missing'] = 'Trūksts GD bibliotēka';
+$lang['Templates'] = 'Paraugi';
+$lang['Extend for templates'] = 'Paplašinājums paraugiem';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Nomainīt oriģinālos paraugus ar lietotāja paraugiem no template-extension mapes';
+$lang['Replacers (customized templates)'] = 'Aizvietojošais (lietoptāja paraugs)';
+$lang['Original templates'] = 'Oriģinālie paraugi';
+$lang['Optional URL keyword'] = 'Izvēles URL atslēgvārds';
+$lang['Templates configuration has been recorded.'] = 'Parauga konfigurācija saglabāta.';
+$lang['All optimizations have been successfully completed.'] = 'Visi uzlabojumi sekmīgi veikti	.';
+$lang['Optimizations have been completed with some errors.'] = 'Uzlabojumi veikti ar dažām kļūdām.';
+$lang['Modify information'] = 'Modificēt informāciju';
+$lang['nothing'] = 'nekas';
+$lang['overrides existing values with empty ones'] = 'pārrakstīt esošās vērtības ar tukšām';
+$lang['Manage photo ranks'] = 'Pārvaldīt foto vērtējumus';
+$lang['Edit ranks'] = 'Rediģēt kārtību';
+$lang['No photo in this album'] = 'Šajā albūmā nav neviena foto';
+$lang['Images manual order was saved'] = 'Attēlu kārtība saglabāta';
+$lang['ranks'] = 'kārtība';
+$lang['By rank'] = 'Pēc kārtības';
+$lang['Manual order'] = 'Izveidotā kārtība';
+$lang['Drag to re-order'] = 'Pārvelciet, lai izmanītu kārtību ';
+$lang['Quick Local Synchronization'] = 'Ātrā vietējā sinhronizācija';
+$lang['No photo can be deleted'] = 'Nav attēlu, ko izdzēst';
+$lang['Delete selected photos'] = 'Dzēst izvēlētos attēlus';
+$lang['%d photo was deleted'] = '%d attēls izdzēsts';
+$lang['%d photos were deleted'] = '%d attēli izdzēsti';
+$lang['Downloads'] = 'Lejupielādes';
+$lang['Released on'] = 'Atbrīvots';
+$lang['Number of downloads'] = 'Lejupielāžu skaits';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Ziņu Lapa';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Uzturiet saikni ar Piwigo projektu, parakstieties uz Piwigo Ziņu Lapu. Jūs informēs par jaunumiem (reizēm ir nepieciešams zināt kādu knifu par aplikācijas drošību un atjaunināt to) kas notiek ar projektu. Tikai daži e-pasti gadā.';
+$lang['Subscribe %s'] = 'Parakstīties uz %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Parakstīties uz %s Piwigo Ziņu Lapu';
+$lang['Purge search history'] = 'Dzēst meklēšanas vēsturi';
+$lang['Hide'] = 'Paslēpt';
+$lang['Password is missing. Please enter the password.'] = 'Nepareiza parole. Lūdzu atkārtojiet mēģinājumu.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nav paroles apstiprinājuma. Lūdzu apstipriniet paroli.';
+$lang['Allow users to edit their own comments'] = 'Atļaut lietotājiem labot savus komentārus';
+$lang['Allow users to delete their own comments'] = 'Atļaut lietotājiem dzēst savus komentārus';
+$lang['Email administrators when a comment is modified'] = 'Paziņot ar e-pastu admisistratoram par izmainītu komentāru ';
+$lang['Email administrators when a comment is deleted'] = 'Paziņot ar e-pastu admisistratoram par dzēstu komentāru';
+$lang['Cannot delete the old permalink !'] = 'Nevar idzēst veco pirmsaiti!';
+$lang['Hit'] = 'Populāri';
+$lang['Tools'] = 'Rīki';
+$lang['Photos'] = 'Attēli';
+$lang['Themes'] = 'Tēmas';
+$lang['Instructions to use Piwigo'] = 'Piwigo lietošanas instrukcija';
+$lang['Installed Themes'] = 'Instalētās Tēmas';
+$lang['Add New Theme'] = 'Pievienot jaunu tēmu';
+$lang['Forbid this theme to users'] = 'Aizliegt lietotājiem izmantot šo tēmu';
+$lang['Set as default theme for unregistered and new users'] = 'Iestatīt tēmu pēc noklusējuma jauniem un nereģistrētiem lietotājiem';
+$lang['unknown'] = 'nezināms';
+$lang['Upload Photos'] = 'Augšupielādēt attēlus';
+$lang['Drop into album'] = 'Ievietot albūmā';
+$lang['+ Add an upload box'] = '+ Pievienot augšupielādes lauku';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Izveidot "%s" mapi jūsu instalētajā Piwigo saknes mapē';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Piešķirt rakstīšanas tiesības (chmod 777) "%s" mapei jūsu instalētajā Piwigo saknes mapē';
+$lang['existing album'] = 'esošs albūms';
+$lang['create a new album'] = 'izveidot jaunu albūmu';
+$lang['Album name'] = 'Albūma nosaukums';
+$lang['Album "%s" has been added'] = 'Albūms "%s" ir pievienots';
+$lang['Uploaded Photos'] = 'Augšupielādētie attēli';
+$lang['%d photos uploaded'] = '%d ielādēti attēli';
+$lang['Privacy level set to "%s"'] = 'Iestatīt piekļuves līmeni "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Albūmā "%s" tagad ir %d attēli';
+$lang['Manage this set of %d photos'] = 'Rediģēt šo %d attēlu kopumu.';
+$lang['Select files'] = 'Izvēlēties failus';
+$lang['Everybody'] = 'Visi';
+$lang['Who can see these photos?'] = 'Kas var skatīties šos attēlus?';
+$lang['Who can see this photo?'] = 'Kas var skatīties šo attēlu?';
+$lang['Settings'] = 'Iestatījumi';
+$lang['Resize'] = 'Izmainīt izmērus';
+$lang['Maximum width'] = 'Maksimālais platums';
+$lang['pixels'] = 'pikseļi';
+$lang['Maximum height'] = 'Maksimālais augstums';
+$lang['Image Quality'] = 'Attēla kvalitāte';
+$lang['Save Settings'] = 'Saglabāt iestatījumus';
+$lang['Your configuration settings are saved'] = 'Jūsu konfigurācija saglabāta';
+$lang['Active Themes'] = 'Aktīvās Tēmas';
+$lang['Add write access to the "%s" directory'] = 'Pievienot rakstīšanas tiesības mapei "%s"';
+$lang['Administration Home'] = 'Vadības panelis';
+$lang['Change Admin Colors'] = 'Izmainīt vadības paneļa krāsas';
+$lang['Delete this theme'] = 'Dzēst šo tēmu';
+$lang['Directory does not exist'] = 'Nav tādas mapes';
+$lang['Download,'] = 'Lejupielādēt,';
+$lang['FTP + Synchronization'] = 'FTP + Sinhronizācija';
+$lang['Get Support on Piwigo Forum'] = 'Griezieties pēc palīdzības Piwigo forumā';
+$lang['Help Me'] = 'Palīdzība';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Šo tēmu nevar aktivēt, jo nav pirmtēmas: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Šo tēmu nevar dzēst, jo no tās atkarīgas citas tēmas: %s';
+$lang['Inactive Themes'] = 'Neaktīvās tēmas';
+$lang['Install on your computer,'] = 'Instalējiet savā datorā,';
+$lang['Make this theme available to users'] = 'Padarīt šo tēmu pieejamu lietotājiem';
+$lang['Page end'] = 'Lapas beigas';
+$lang['Piwigo Uploader'] = 'Piwigo Augšupielādētājs';
+$lang['Read Piwigo Documentation'] = 'Lasiet Piwigo Documentāciju';
+$lang['Start pLoader and add your photos.'] = 'Startējiet pLoader un pievienojiet Jūsu fotogrāfijas.';
+$lang['Switch to clear or dark colors for administration'] = 'Izvēlieties vadības paneļa gaišos vai tumšos toņus';
+$lang['Theme has been successfully installed'] = 'Tēma sekmīgi uzinstalēta';
+$lang['Visit Gallery'] = 'Apmeklējiet Galeriju';
+$lang['Visit Piwigo project website'] = 'Apmeklējiet Piwigo projekta mājas lapu';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader aizvieto <em>Piwigo Augšupielādētāju</em>.Ar PLoader jūsu lokāli sagatavos attēlus var pārvietot uz jūsu Piwigo foto galeriju.';
+$lang['Guest Settings'] = 'Lietotāja Viesis iestatījumi';
+$lang['Main Page'] = 'Galvenā Lapa';
+$lang['Photo Page'] = 'Attēla Lapa';
+$lang['Activate Navigation Bar'] = 'Aktivēt Navigācijas Paneli';
+$lang['Activate Navigation Thumbnails'] = 'Aktivēt navigāciju pēc piktogrammām';
+$lang['Activate icon "%s"'] = 'Aktivēt ikonu "%s"';
+$lang['Photo Properties'] = 'Attēla raksturīgās īpašības';
+$lang['Allow user customization'] = 'Atļaut lietotājiem pielāgot galerijas izskatu';
+$lang['Languages'] = 'Valodas';
+$lang['Installed Languages'] = 'Instalēt Valodas';
+$lang['Add New Language'] = 'Pievienot Jaunu Valodu';
+$lang['Language has been successfully installed'] = 'Valoda sekmīgi uzinstalēta';
+$lang['Select:'] = 'Izvēlieties:';
+$lang['None'] = 'Neviens';
+$lang['Invert'] = 'Apvērst';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neiespējams deaktivēt šo Tēmu, nepieciešams, lai paliek vismaz viena Tēma.';
+$lang['Webmaster status is required.'] = 'Nepieciešams Webmāstera statuss.';
+$lang['Bound Theme'] = 'Piesaistītā Tēma';
+$lang['Allow rating'] = 'Atļaut novērtēt';
+$lang['Select at least one comment'] = 'Izvēlieties vismaz vienu komentāru';
+$lang['Active Plugins'] = 'Aktīvie Spraudņi';
+$lang['Inactive Plugins'] = 'Neaktīvie Spraudņi';
+$lang['Missing Plugins'] = 'Trūkstošie Spraudņi';
+$lang['Uninstalled Plugins'] = 'Atinstalētie Spraudņi';
+$lang['By %s'] = ' %s';
+$lang['Visit plugin site'] = 'Apmeklēt spraudņu mājas lapu';
+$lang['Active Languages'] = 'Aktivēt Valodas';
+$lang['Delete this language'] = 'Izdzēst šo valodu';
+$lang['Forbid this language to users'] = 'Aizliegt šo valodu lietotājiem';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Neiespējams deaktivēt šo valodu, vispirms iestatiet kā noklusējumu citu valodu.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neiespējams deaktivēt šo valodu, nepieciešama vismaz viena valoda.';
+$lang['Inactive Languages'] = 'Deaktivizēt Valodas';
+$lang['Make this language available to users'] = 'Padarīt šo valodu pieejamu lietotājiem';
+$lang['Set as default language for unregistered and new users'] = 'Iestatīt kā noklusējuma valodu nereģistrētiem un jauniem lietotājiem';
+$lang['Add Photos'] = 'Pievienot attēlus';
+$lang['The following tag was deleted'] = 'Izdzēsta sekojošas iezīme';
+$lang['Miscellaneous'] = 'Dažāds';
+$lang['Virtual Links'] = 'Virtuālās saites';
+$lang['There is no other language available.'] = 'Cita valoda nav pieejama.';
+$lang['There is no other plugin available.'] = 'Cits spraudnis nav pieejams.';
+$lang['There is no other theme available.'] = 'Cita tēma nav pieejama.';
+$lang['Add another set of photos'] = 'Pievienot citu attēlu kopumu';
+$lang['Order of menubar items has been updated successfully.'] = 'Izvēlnes rīku kārtība atjaunināta sekmīgi';
+$lang['This theme was not designed to be directly activated'] = 'Šo tēmu nevar aktivet tieši';
+$lang['Pending Comments'] = 'Komentaŗu pārbaude';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Jūsu php.ini faila upload_max_filesize (%sB) ir lielāks par post_max_size (%sB), jums jāizmaina šis iestatījums';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif paplašinājums nav iespējams, adminam jāaizliedz exif lietošana';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Augšupielādētais fails pārsniedz upload_max_filesize direktīvu php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Augšupielādētie faili pārsniedz post_max_size direktīvu php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Augšuplādējamais fails pārsniedz MAX_FILE_SIZE direktīvu, kas noteikta HTML formā';
+$lang['The uploaded file was only partially uploaded'] = 'Augšuplādētais fails tikai daļēji augšupielādēts';
+$lang['No file was uploaded'] = 'Fails netika augšupielādēts';
+$lang['Missing a temporary folder'] = 'Pazudusi pagaidu mape';
+$lang['Failed to write file to disk'] = 'Kļūda ierakstot failu diskā';
+$lang['File upload stopped by extension'] = 'Faila augšupielāde apturēta dēļ paplašinājuma';
+$lang['Unknown upload error'] = 'Nezināma augšupielādes kļūda';
+$lang['Error on file "%s" : %s'] = 'Kļūda failā "%s" : %s';
+$lang['Menu Management'] = 'Izvēlnes Pārvalde';
+$lang['automatic order'] = 'automātiskais kārtojums';
+$lang['manual order'] = 'manuālais kārtojums';
+$lang['Albums automatically sorted'] = 'Albūmi ir automātiski  sakārtoti';
+$lang['Batch Manager'] = 'Sērijveida failu pārvaldnieks';
+$lang['include child albums'] = 'ietvert radniecīgos albūmus';
+$lang['Selection'] = 'Izvēle';
+$lang['Action'] = 'Darbība';
+$lang['Set author'] = 'Ievadīt autoru';
+$lang['Set title'] = 'Ievadīt virsrakstu';
+$lang['Set creation date'] = 'Ievadīt izveides datumu';
+$lang['Apply action'] = 'Veikt darbību';
+$lang['on the %d selected photos'] = 'uz %d atlasītajiem fotoattēliem';
+$lang['%d of %d photos selected'] = '%d no %d atlasītajiem fotoattēliem';
+$lang['No photo selected, %d photos in current set'] = 'Nav atlasītu foto, %d fotoattēli tekošajā sērijā';
+$lang['All %d photos are selected'] = 'Visi %d foto ir atlasīti';
+$lang['remove this filter'] = 'noņemt šo filtru';
+$lang['Duplicates'] = 'dublikāti';
+$lang['Add a filter'] = 'Pievienot filtru';
+$lang['Remove all filters'] = 'Noņemt visus filtrus';
+$lang['Refresh photo set'] = 'Atjaunināt foto sēriju';
+$lang['The whole page'] = 'Visa lapa';
+$lang['The whole set'] = 'Visa sērija';
+$lang['No photo in the current set.'] = 'Nav fotoattēlu esošajā sērijā.';
+$lang['No photo selected, no action possible.'] = 'Nav atlasītu fotoattēlu, nekādas darbības nav iespējamas.';
+$lang['Choose an action'] = 'Izvēlēties darbību';
+$lang['remove author'] = 'izdzēst autoru';
+$lang['Type here the author name'] = 'Ievadīt autora vārdu šeit';
+$lang['remove title'] = 'dzēst nosaukumu';
+$lang['Type here the title'] = 'Ievadīt nosaukumu šeit';
+$lang['remove creation date'] = 'dzēst izveides datumu';
+$lang['Album photos associated to the following albums: %s'] = 'Albūma fotoattēli saistīti ar sekojošiem albūmiem: %s';
+$lang['Delete orphan tags'] = 'Dzēst nepiesaistītās cilnes (iezīmes)';
+$lang['delete photo'] = 'Dzēst fotoattēlu';
+$lang['Orphan tags deleted'] = 'Nepiesaistītās cilnes izdzēstas';
+$lang['Week starts on'] = 'Nedēļa sākas ar';
+$lang['You have %d orphan tags: %s.'] = 'Jums ir %d nepiesaistīto cilņu: %s.';
+$lang['Remove from caddie'] = 'Izņemt no groza';
+$lang['Themes which need upgrade'] = 'Tēmas, kurām nepieciešami jauninājumi';
+$lang['Languages which need upgrade'] = 'Valodas, kurām nepieciešami jauninājumi';
+$lang['All themes are up to date.'] = 'Visas tēmas ir atjauninātas.';
+$lang['All plugins are up to date.'] = 'Visi spraudņi ir atjaunināti.';
+$lang['All languages are up to date.'] = 'Visas valodas ir atjauninātas.';
+$lang['Visit theme site'] = 'Apmeklēt tēmu vietni';
+$lang['Visit language site'] = 'Apmeklēt valodu vietni';
+$lang['New Version'] = 'Jauna Versija';
+$lang['Obsolete Plugins'] = 'Nepiesaistītie Spraudņi';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UZMANĪBU! Šķiet, ka šis spraudnis nav saderīgs ar šo Piwigo versiju.';
+$lang['Do you want to activate anyway?'] = 'Vai vēlaties aktivēt jebkurā gadījumā?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TAGAD ŠIS SPRAUDNIS IR PIWIGO KODOLA SASTĀVDAĻA! VAI NOINSTALĒT TO!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'KĻŪDA: ŠIS SPRAUDNIS IZTRŪKST, BET TAS IR INSTALĒTS! VAI NOINSTALĒT TO';
+$lang['display'] = 'attēlot';
+$lang['Thumbnails generation in progress...'] = 'Notiek sīkbilžu ģenerēšanas (veidošanas) process...';
+$lang['Photos generation in progress...'] = 'Notiek foto izveide...';
+$lang['%s photos have been regenerated'] = 'izveidotas %s fotogrāfijas';
+$lang['%s photos can not be regenerated'] = '%s fotogrāfijas nav iespējams reģenerēt';
+$lang['new'] = 'jauns';
+$lang['No results'] = 'Nav rezultātu';
+$lang['Searching...'] = 'Meklē...';
+$lang['Type in a search term'] = 'Ierakstiet meklējamo vārdu';
+$lang['Deactivate all'] = 'Deaktivēt visu';
+$lang['Default photos order'] = 'Foto kārtojums pēc noklusējuma';
+$lang['Restore'] = 'Atjaunot';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Atjaunot noklusējuma konfigurāciju. Jūs zaudēsit savus spraudņa iestatījumus!';
+$lang['Show menubar'] = 'Rādīt izvēles joslu';
+$lang['Updates'] = 'Jauninājumi';
+$lang['Update in progress... Please wait.'] = 'Notiek jaunināšana... Lūdzu uzgaidiet.';
+$lang['Ignore this update'] = 'Ignorēt šo jauninājumu';
+$lang['Reset ignored updates'] = 'Atjaunot ignorētos jauninājumus';
+$lang['Update All'] = 'Jaunināt visu';
+$lang['ERROR'] = 'KĻŪDA';
+$lang['Update Complete'] = 'Jauninājums Paveikts';
+$lang['Piwigo Update'] = 'Piwigo Jauninājums';
+$lang['Extensions Update'] = 'Paplašinājumu Jauninājums';
+$lang['All extensions are up to date.'] = 'Visi paplašinājumi ir atjaunināti.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sekojoši spraudņi var nesaderēt ar jauno Piwigo versiju:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sekojošas tēmas var nesaderēt ar jauno Piwigo versiju:';
+$lang['I decide to update anyway'] = 'Esmu izlēmis veikt jauninājumu jebkurā gadījumā';
+$lang['Update to Piwigo %s'] = 'Jaunināt uz Piwigo %s';
+$lang['Two updates are available'] = 'Pieejami divi jauninājumi';
+$lang['This is a minor update, with only bug corrections.'] = 'Šis ir nenozīmīgs jauninājums, tikai daži defektu labojumi.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Šis ir svarīgs jauninājums, ar <a href="%s">jaunām svarīgām iespējām</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Dažas tēmas un spraudņi vēl var būt nav pieejami.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Jūs varat jaunināt uz Piwigo %s tieši, neuzlabojot uz Piwigo %s (ieteicams).';
+$lang['Save Template Directory'] = 'Saglabāt veidņu mapi';
+$lang['Dump Database'] = 'Izgāzt Datubāzi';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Ietvert datu vēsturi (Brīdinājums: servera atmiņas limits var tikt pārsniegts)';
+$lang['Unable to dump database.'] = 'Neiespējami izgāzt (dump) datubāzi.';
+$lang['Some upgrades are available for extensions.'] = 'Paplašinājumiem pieejami daži uzlabojumi.';
+$lang['Ignore All'] = 'Ignorēt Visu';
+$lang['Crop'] = 'Apgriezt';
+$lang['Width'] = 'Platums';
+$lang['Height'] = 'Augstums';
+$lang['Follow Orientation'] = 'Sekot Orientācijai';
+$lang['Graphics Library'] = 'Grafikas Bibliotēka';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivēt ikonu "new" (jauns) blakus albūmiem un attēliem';
+$lang['Add a criteria'] = 'Pievienot kritēriju';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nav iespējams izveidot foto kārtošanas secību pēc noklusējuma, jo jūsu izveidotajā lokālajā konfigurācijā ir jūsu pielāgotie iestatījumi.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Jūs savā  lokālajā konfigurācijas failā esat iestatīts  <i>$conf[\'order_by\']</i>, šis parametrs ir novecojis, lūdzu izdzēšiet to vai pārdēvējiet to sekojoši : <i>$conf[\'order_by_custom\']</i> !';
+$lang['Average rate'] = "Vidējais novērtejums";
+$lang['Rate'] = "Vērtējums";
+$lang['Learn more'] = 'Uzzini vairak';
+$lang['... or '] = '... vai ';
+$lang['Create'] = 'Izveidot';
+$lang['Start Upload'] = 'Sākt augšupielādi';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Jūs lietojat Flash augšuplādētāju. Problēmas? Tā vietā mēģiniet <a href="%s">Pārlūka augšuplādētāju</a>.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Jūs lietojat Pārlūka augšuplādētāju. Tā vietā mēģiniet <a href="%s">Flash augšuplādētāju</a>.';
+$lang['Maximum file size: %sB.'] = 'Faila maksimālais izmērs: %sB.';
+$lang['Allowed file types: %s.'] = 'Atļautie failu tipi: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Aptuvenā maksimālā izšķirtspēja: %dM pixeļi (tas ir %dx%d pixeļi).';
+$lang['Manage Permissions'] = 'Pārvaldīt Piekļuves Atļaujas';
+$lang['Photo %s of %s'] = ' %s foto no %s';
+$lang['show details'] = 'rādīt detaļas';
+$lang['hide details'] = 'paslēpt detaļas';
+$lang['Merge tags'] = 'Apvienot (sapludināt) cilnes (tags)';
+$lang['Select the destination tag'] = 'Izvēlēties mērķa cilni';
+$lang['(this tag will be deleted)'] = '(šī cilne (tag) tiks izdzēsta)';
+$lang['Confirm merge'] = 'Apstiprināt apvienošanu';
+$lang['Merge selected tags'] = 'Apvienot izvēlētās cilnes';
+$lang['No destination tag selected'] = 'Nav izvēlēta mērķa cilne';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Cilnes (tags) <em>%s</em> apvienotas cilnē <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Izvēlaties vismaz divas cilnes apvienošanai';
+$lang['Select an album'] = 'Izvēlaties albūmu';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Pēc noklusēšanas Piwigo izveidos jaunu foto webizmēru jūsējai HD (augstas izšķirtspējas) attēla versijai.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ja nav neviena HD un, ja esošais webizmērs ir lielāks par atļautajiem izmēriem, Piwigo to uzskata par HD attēlu un no šī attēla izveidos atbilsoša webizmēra attēlu.';
+$lang['An error has occured during upgrade.'] = 'Atjauninot notikusi kļūme.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Atpakošanas laikā notikusi kļūme. Pārbaudiet Jūsu piwigo instalācijas failu atļaujas.<br><a href="%s">Spiest te, lai redzētu log kļūdas</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nevar ielādēt jauninājuma failu no servera';
+$lang['Zoom'] = 'Tālummaiņa';
+$lang['%s has been successfully updated.'] = '%s ir sekmīgi atjaunināts.';
+$lang['Add tags'] = 'Pievienot tagus (birkas)';
+$lang['Add to caddie'] = 'Pievienot grozam';
+$lang['Last import'] = 'Pēdējais imports';
+$lang['Predefined filter'] = 'Definēts filtrs';
+$lang['With no album'] = 'Bez albūma';
+$lang['With no tag'] = 'Bez taga';
+$lang['With no virtual album'] = 'Bez virtuālā albūma';
+$lang['Activate comments'] = 'Aktivizēt komenārus';
+$lang['Default comments order'] = 'Komentāru kārtojums pēc noklusējuma';
+$lang['Photo name'] = 'Foto nosaukums';
+$lang['Send connection settings by email'] = 'Nosūtīt konekcijas iestatījumus ar e-pastu';
+$lang['The original image quality must be a number between %d and %d'] = 'Oriģinālā attēla kvalitātei jābūt skaitlim diapazonā starp %d un %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Oriģināla maksimālajam augstumam jābūt skaitlim starp %d un %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Oriģināla maksimālajam platumam jābūt skaitlim starp %d un %d';
+$lang['Resize after upload'] = 'Mainīt izmērus pēc augšupielāde';
+$lang['Original Size'] = 'Oriģinālie Izmēri';
+$lang['A locked gallery is only visible to administrators'] = 'Bloķētā galerija ir redzama tikai administratoriem';
+$lang['Unlock gallery'] = 'Atbloķēt galeriju';
+$lang['Gallery unlocked'] = 'Galerija ir atbloķēta';
+$lang['Notify administrators when a comment is'] = 'Ziņot administratoriem, kad komentārs ir';
+$lang['modified'] = 'modificēts';
+$lang['pending validation'] = 'gaida validāciju';
+$lang['Save visits in history for'] = 'Ieglabāt vēsturē apmeklējumus priekš';
+$lang['simple visitors'] = 'parastiem apmeklētājiem';
+$lang['registered users'] = 'reģistrētiem lietotājiem';
+$lang['administrators'] = 'administratoriem';
+$lang['This album contains %d photos, added on %s.'] = 'Šinī albūmā ir %d fotogrāfiju, kas pievienotas %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Šinī albūmā ir %d fotogrāfiju, kas pievienotas laikā starp %s un %s.';
+$lang['This album contains no photo.'] = 'Šinī albūmā nav fotogrāfiju.';
+$lang['Not cropped correctly?'] = 'Nav korekti apgriezts?';
+$lang['Center of interest'] = 'Interešu centrs';
+$lang['Move to album'] = 'Pārvietot uz albūmu';
+$lang['You can activate only one mobile theme.'] = 'Jūs varat aktivēt tikai vienu mobilo tēmu.';
+$lang['Automatic sort order'] = 'Automātiskās kārtošanas režīms';
+$lang['apply automatic sort order'] = 'pielietot automātiskās kārtošanas režīmu';
+$lang['Save manual order'] = 'Saglabāt manis veidoto kārtojumu';
+$lang['cancel manual order'] = 'atcelt manis veidoto kārtojumu';
+$lang['Cancel'] = 'Atcelt';
+$lang['List'] = 'Saraksts';
+$lang['Web Form'] = 'Web Forma';
+$lang['Applications'] = 'Aplikācijas';
+$lang['Available versions for'] = 'Pieejamās versijas priekš';
+$lang['Available on'] = 'Pieejams uz';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo priekš iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo priekš iOS</em> aplikācijas, kas ļauj piekļūt jūsu  Piwigo galerijai no iPhone, iPad vai iPod Touch, un bez pūlēm  izveidot jaunus albūmus un ielādēt jaunas fotogrāfijas.';
+$lang['Piwigo for Android'] = 'Piwigo priekš Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo priekš Android</em> aplikācija dod jums iespēju savienot savu Android telefonu vai iekārtu ar jūsu Piwigo galeriju, bez pūlēm izveidot jaunus albūmus un ielādēt jaunas fotogrāfijas.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publicēšanas spraudnis priekš Lightroom'; 
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom ir fotoredaktora programmatūra, kas domāta liela apjoma digitālu attēlu pārvaldīšanai un  pirmsproducēšanas darbu veikšanai.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publicēšanas spraudnis ļauj jums eksportēt un sinhronizēt attēlus Lightroom aplikācijā ar jūsu  Piwigo foto galeriju.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publicēšanas spraudnis priekš Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell ir atvērtā koda foto organizators, kas darbojas Linux vidē. Tas ir  Ubuntu and Fedora fotoredaktors pēc noklusēšanas.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Savā Linux vienkārši instalējiet Shotwell, izmantojot savu instalācijas menedžeri un aktivējiet Piwigo publicēšanas opciju.';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicēšanas spraudnis priekš digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam ir bezmaksas advancēta digitālo foto apstrādes aplikācija priekš Linux, Windows, and MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam radīta priekš fotogrāfiem, kas grib pārraudzīt, pārvaldīt, rediģēt, uzlabot, organizēt, iezīmēt un dalīties ar savām fotogrāfijām.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Lai eksportētu savus attēlus no digiKam uz Piwigo, vienkārši instalējiet digiKam un  Kipi-spraudņus.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksporta spraudnis priekš iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto ir foto menedžeris pēc noklusēšanas  MacOSX vidē. Piwigo eksporta spraudnis ļauj jums izveidot jaunus albūmus un eksportēt jūsu fotogrāfijas pa taisno no iPhoto uz jūsu Piwigo foto galeriju.';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksporta spraudnis priekš Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture ir jaudīgs rīks attēlu šķirošanai un masīvu bibliotēku pārvaldīšanai  Mac vidē.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture ir domāts profesionāliem fotogrāfiem ar iPhoto vienkāršību.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksporta spraudnis ļauj jums veidot albūmus un eksportēt fotogrāfijas.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android AttālinātāsGalerijs klients) ir atvērtā koda (GPL v3) Piwigo klients priekš Android platformas.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Iespējas sevī ietver galeriju pārlūkošanu, albūmu veidošanu un fotogrāfiju augšupielādi.';
+$lang['Generate multiple size images'] = 'Ģenerēt dažādu izmēru attēlus';
+$lang['Delete multiple size images'] = 'Dzēst dažādu izmēru attēlus';
+$lang['any visitor can see this album'] = 'jebkurš apmeklētājs var redzēt šo albūmu';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'apmeklētājiem jāielogojas un jābūt attiecīgām atļaujām, lai redzētu šo albūmu';
+$lang['Groups and users'] = 'Grupas un lietotāji';
+$lang['Permission granted for groups'] = 'Atļauja piešķirta grupām';
+$lang['Select groups...'] = 'Atlasīt grupas...';
+$lang['There is no group in this gallery.'] = 'Šajā galerijā nav grupu.';
+$lang['Permission granted for users'] = 'Atļauja piešķirta lietotājiem';
+$lang['Select users...'] = 'Atlasīt lietotājus...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u lietotājiem ir automātiskās piekļuves tiesības, jo tie pieder pie privileģētās grupas.';
+$lang['include photos with lower privacy level'] = 'iekļaut fotogrāfijas ar zemāku privātuma līmeni';
+$lang['custom'] = 'Lietotāja';
+$lang['No group is permitted to see this private album'] = 'Grupai nav atļauts skatīt šo privāto albūmu';
+$lang['Permission management'] = 'Atļauju pārvaldīšana';
+$lang['Photo sizes with crop'] = 'Foto izmēri pēc apgriešanas';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interešu centrs ir visnozīmīgākā zona fotogrāfijā.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Priekš apgriezto foto izmēriem, tādiem kā “Kvadrāts”, Piwigo paveic to vislabāko iekļaujot interešu centru.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Pēc noklusējuma interešu centrs atrodas fotogrāfijas vidū.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Ar peles palīdzību izvēlieties jaunu interešu centru.';
+$lang['X Position'] = 'X Pozīcija';
+$lang['Y Position'] = 'Y Pozīcija';
+$lang['X Repeat'] = 'X Atkārtot';
+$lang['Opacity'] = 'Caurspīdīgums';
+$lang['top left corner'] = 'augšējais kreisais stūris';
+$lang['top right corner'] = 'augšējais labais stūris';
+$lang['middle'] = 'vidus';
+$lang['bottom left corner'] = 'apakšējais kreisais stūris';
+$lang['bottom right corner'] = 'apakšējais labais stūris';
+$lang['Select a file'] = 'Izvēlēties failu';
+$lang['add a new watermark'] = 'pievienot jaunu ūdenszīmi';
+$lang['Apply watermark if width is bigger than'] = 'Lietot ūdenszīmi, ja platums ir lielāks par';
+$lang['Apply watermark if height is bigger than'] = 'Lietot ūdenszīmi, ja augstums ir lielāks par';
+$lang['Multiple Size'] = 'Vairāki izmēri';
+$lang['Watermark'] = 'Ūdenszīme';
+$lang['Original file : %s'] = 'Oriģinālais fails : %s';
+$lang['Posted %s on %s'] = 'Publicēts %s uz %s';
+$lang['Added by %s'] = 'Pievienojis %s';
+$lang['Visited %d times'] = 'Apmeklēts %d reizes';
+$lang['Numeric identifier : %d'] = 'Ciparveida identifikators : %d';
+$lang['%s ago'] = '%s atpakaļ';
+$lang['%s in the future'] = '%s nākotnē';
+$lang['Rated %d times, score : %.2f'] = 'Vērtēts %d reizes, vērtējums : %.2f';
+$lang['%d year'] = '%d gads';
+$lang['%d years'] = '%d gadi';
+$lang['%d month'] = '%d mēnesis';
+$lang['%d months'] = '%d mēneši';
+$lang['%d day'] = '%d diena';
+$lang['%d days'] = '%d dienas';
+$lang['%d hour'] = '%d stunda';
+$lang['%d hours'] = '%d stundas';
+$lang['%d minute'] = '%d minūte';
+$lang['%d minutes'] = '%d minūtes';
+$lang['%d second'] = '%d sekunde';
+$lang['%d seconds'] = '%d sekundes';
+$lang['Sharpen'] = 'Uzspicēts';
+$lang['%d week'] = '%d nedēļa';
+$lang['%d weeks'] = '%d nedēļas';
+$lang['Edit photo'] = 'Rediģēt foto';
+$lang['create a new site'] = 'izveidot jaunu web lapu';
+$lang['No order field selected'] = 'Nv izvēlēts kārtošanas lauks';
+$lang['Duplicate selected tags'] = 'Dublēt atlasītās cilnes';
+$lang['Name of the duplicate'] = 'Dublikāta nosaukums';
+$lang['Source tag'] = 'Avota cilne';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Cilne "%s" tagad ir "%s" dublikāts';
+$lang['Portrait'] = 'Portrets';
+$lang['Panorama'] = 'Panorāma';
+$lang['Minimum width'] = 'Minimālais platums';
+$lang['Minimum height'] = 'Minimālais augstums';
+$lang['Landscape'] = 'Ainava';
+$lang['Number of albums per page'] = 'Albumu skaits lapā';
+$lang['View in gallery'] = 'Ieskatīties galarijā';
+$lang['Manage photos'] = 'Pārvaldīt fotogrāfijas';
+$lang['Ratio'] = 'Attiecība';
+$lang['between %d and %d pixels'] = 'starp %d un %d pikseļiem';
+$lang['between %.2f and %.2f'] = 'starp %.2f un %.2f';
+$lang['Type here the name of the new group'] = 'Rakstiet šeit jaunās grupas nosaukumu';
+$lang['This group will be unset to default'] = 'Šī grupa vairs netiks izmantota pēc noklusējuma';
+$lang['This group will be set to default'] = 'Šī grupa tiks izmantots pēc noklusējuma';
+$lang['Rename'] = 'Pārdēvēt';
+$lang['Please select at least two groups'] = 'Lūdzu atlasiet vismaz divas grupas';
+$lang['No members to manage'] = 'Nav biedru, ko pārvaldīt';
+$lang['No group selected, no action possible.'] = 'Nav izvēlēta neviena grupa, nekādas darbības nav iespējamas.';
+$lang['Manage the members'] = 'Pārvaldīt biedrus';
+$lang['Merge selected groups'] = 'Sapludināt atlasītās grupas';
+$lang['Duplicate'] = 'Dublikāts';
+$lang['Purge user cache'] = 'Iztīrīt lietotāja kešatmiņu';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Attēla izmēri tiks samazināti uz %dx%d pikseļiem. ';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Sakarā ar GD kā grafiskās bibliotēkas izmantošanu, attēla izmēra mainīšana pēc augšupielādes ir atslēgta';
+$lang['Select at least one tag'] = 'Atlasiet vismaz vienu tagu';
+$lang['Basic settings'] = 'Pamata iestījumi';
+$lang['General'] = 'Vispārīgi';
+$lang['Mail theme'] = 'Pasta tēma';
+$lang['on the %d selected users'] = ' %d atlasītiem lietotājiem';
+$lang['Showing %s to %s of %s users'] = 'Parāda no %s līdz %s no %s lietotājiem';
+$lang['Registered on %s, %s.'] = 'Reģistrēts %s, %s.';
+$lang['User %s updated'] = '%s lietotājs atjaunināts';
+$lang['Update user'] = 'Atjaunināt lietotāju';
+$lang['Show %s users'] = 'Parādīt %s lietotājus';
+$lang['No user selected, no action possible.'] = 'Neviens lietotāja nav atlasīts, darbība nav iespējama.';
+$lang['No user selected of %d users'] = 'Neviens no %d lietotājiem nav atlasīts';
+$lang['No matching user found'] = 'Nav atrasti atbilstoši lietotāji';
+$lang['Users modified'] = 'Lietotāji modoficēti';
+$lang['User %s added'] = '%s lietotājs pievienots';
+$lang['Password updated'] = 'Parole atjaunināta';
+$lang['%d of %d users selected'] = '%d no %d lietotājiem atlasīti';
+$lang['(filtered from %s total users)'] = '(izfiltrēti no %s kopējiem lietotājiem)';
+$lang['All %d users are selected'] = 'Visi %d lietotāji ir atlasīti';
+$lang['Last visit on %s, %s.'] = 'Pēdējais apmeklējums %s, %s.';
+$lang['Loading...'] = 'Ielādējas';
+$lang['Change username'] = 'Nomainīt lietotājvārdu';
+$lang['Change password'] = 'Nomainīt paroli';
+?>
Index: /tags/2.6.0RC1/language/lv_LV/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/common.lang.php	(revision 25596)
@@ -0,0 +1,422 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Latviešu [LV]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=427
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = "Latvian";
+$lang_info['country'] = "Latvia";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "lv";
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d albūms album atjaunināts';
+$lang['%d albums updated'] = '%d albūmi atjaunināti';
+$lang['%d comment to validate'] = "%d apstiprināt komentārus";
+$lang['%d comments to validate'] = "%d apstiprināt komentarus";
+$lang['%d new comment'] = "%d jauns komentārs";
+$lang['%d new comments'] = "%d jauni komentāri";
+$lang['%d comment'] = "%d komentārs";
+$lang['%d comments'] = "%d komentāri";
+$lang['%d hit'] = "%d skatījums";
+$lang['%d hits'] = "%d skatījumi";
+$lang['%d new photo'] = '%d jauns foto';
+$lang['%d new photos'] = '%d jauni foto';
+$lang['%d new user'] = "%d jauns lietotājs";
+$lang['%d new users'] = "%d jauni lietotāji";
+$lang['About'] = "Par";
+$lang['All tags'] = "Visi tagi";
+$lang['Any tag'] = "Jabkurš tags";
+$lang['At least one listed rule must be satisfied.'] = "Ir jaapmierina vismaz viens piedāvātais kritērijs.";
+$lang['Author'] = "Autors";
+$lang['Albums'] = 'Albūmi';
+$lang['Album'] = 'Albūms';
+$lang['Close this window'] = "Aizveriet šo logu";
+$lang['Complete RSS feed (photos, comments)'] = 'Pilnīga RSS padeve (foto, komentāri)';
+$lang['Confirm Password'] = "Apstiprināt paroli";
+$lang['Connection settings'] = "Savienojuma iestatījumi";
+$lang['Login'] = "Ielogoties";
+$lang['Contact webmaster'] = "Savienot ar webmaster";
+$lang['Create a new account'] = "Izveidot jaunu kontu";
+$lang['Created on'] = "Izveidots";
+$lang['Creation date'] = "Izveidošanas datums";
+$lang['Current password is wrong'] = "Patrreizējā parole ir nepareiza";
+$lang['Dimensions'] = "Izmēri";
+$lang['Display'] = "Displejs";
+$lang['Each listed rule must be satisfied.'] = "Ir jāapmierina visus piedāvātos kritērijus.";
+$lang['Email address'] = "E-pasta adrese";
+$lang['Enter your personnal informations'] = "Ievadiet savus datus";
+$lang['Error sending email'] = "Kļūda nosūtot e-pastu";
+$lang['File name'] = "Faila vārds";
+$lang['File'] = "Fails";
+$lang['Filesize'] = "Faila izmērs";
+$lang['Filter and display'] = "Filtrēt un attēlot";
+$lang['Filter'] = "Filtrs";
+$lang['Forgot your password?'] = "Aizmirsāt paroli?";
+$lang['Go through the gallery as a visitor'] = "Skatīt galeriju ka apmeklētājam";
+$lang['Help'] = "Palīgs";
+$lang['Identification'] = "Identifikācija";
+$lang['Photos only RSS feed'] = 'foto tikai ar RSS padevi';
+$lang['Keyword'] = "Atslēgvārds";
+$lang['Links'] = "Saites";
+$lang['N/A'] = "N/A";
+$lang['New on %s'] = "Jauns %s";
+$lang['Notification'] = "Paziņojums";
+$lang['Number of items'] = "Vienību skaits";
+$lang['Original dimensions'] = "Oriģinālie izmēri";
+$lang['Password forgotten'] = "Aizmirsta parole";
+$lang['Password'] = "Parole";
+$lang['Post date'] = "Ievietošanas datums";
+$lang['Posted on'] = "Ievietots";
+$lang['Profile'] = "Profils";
+$lang['Quick connect'] = "Ātrais savienojums";
+$lang['RSS feed'] = "RSS padeve";
+$lang['Register'] = "Reģistrs";
+$lang['Registration'] = "Reģistrācija";
+$lang['Related tags'] = "Radniecīgie tagi";
+$lang['Reset'] = "Restartēt";
+$lang['Retrieve password'] = "Iegūt paroli";
+$lang['Search rules'] = "Meklēšanas kritēriji";
+$lang['Search tags'] = "Meklēt tagus";
+$lang['Search'] = "Meklēt";
+$lang['display available tags'] = "Skatīt pieejamos tagus";
+$lang['Since'] = "Kopš";
+$lang['Sort by'] = "Sarindot pēc";
+$lang['Sort order'] = "Rindošanas secība";
+$lang['Tag'] = "Tags";
+$lang['Tags'] = "Tagi";
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS paziņojumu kanāls sniedz paziņojumus šis vietnes jaunumiem: jauni foto, atjaunināti albūmi, jauni komentāri. Lietot RSS piegādes kanāla lasītāju.';
+$lang['Unknown feed identifier'] = "Nezināms piegādes identifikators";
+$lang['User comments'] = "Lietotāja komentāri";
+$lang['Username'] = "Lietotājvārds";
+$lang['Visits'] = "Apmeklējumi";
+$lang['Webmaster'] = "Webmasters";
+$lang['Week %d'] = "Nedēļa %d";
+$lang['About Piwigo'] = "Par Piwigo";
+$lang['You are not authorized to access the requested page'] = "Jūs neēsat autorizējies, lai piekļūtu šai lapai";
+$lang['add this photo to your favorites'] = 'pievienot šo foto pie jūsu favorītiem';
+$lang['Administration'] = "Administrēšana";
+$lang['all'] = "visi";
+$lang['ascending'] = "augšupejošs";
+$lang['author(s) : %s'] = "autors(i) : %s";
+$lang['Expand all albums'] = 'Izvērst visus albūmus';
+$lang['posted after %s (%s)'] = "ievietots pēc %s (%s)";
+$lang['posted before %s (%s)'] = "ievietots pirms %s (%s)";
+$lang['posted between %s (%s) and %s (%s)'] = "ievietots starp %s (%s) un %s (%s)";
+$lang['posted on %s'] = "ievietots %s";
+$lang['Best rated'] = "Vislabāk novērtētais";
+$lang['display best rated photos'] = 'parādīt visaugstāk novērtētos foto';
+$lang['Calendar'] = "Kalendārs";
+$lang['All'] = "Visi";
+$lang['display each day with photos, month per month'] = 'rādīt katru dienu ar fotogrāfijām mēnesi pēc mēneša';
+$lang['View'] = "Skatīt";
+$lang['chronology_monthly_calendar'] = "Mēnesis";
+$lang['chronology_monthly_list'] = "Datums";
+$lang['chronology_weekly_list'] = "Nedēļas diena";
+$lang['Click here if your browser does not automatically forward you'] = "Klikšķiniet šeit, ja pārlūks jūs automatiksti neparsledz";
+$lang['comment date'] = "komentāra datums";
+$lang['Comment'] = "Komentārs";
+$lang['Your comment has been registered'] = "Jūsu komentārs ir reģistrēts";
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = "Atipārpildīšanās : lūdzu pagaidiet pirms sūtīt jaunu komentāru";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = "Jūsu komentārs nav reģistrēts, jo neatbilst nosacījumiem";
+$lang['An administrator must authorize your comment before it is visible.'] = "Administrātoram ir jāpārbauda jūsu komentārs pirms tas tiks parādīts.";
+$lang['This login is already used by another user'] = "Šo loginu jau izmanto cits lietotājs";
+$lang['Comments'] = "Komentāri";
+$lang['Add a comment'] = "Pievienot komentāru";
+$lang['created after %s (%s)'] = "izveidots pēc %s (%s)";
+$lang['created before %s (%s)'] = "izveidots pirms %s (%s)";
+$lang['created between %s (%s) and %s (%s)'] = "izveidots starp %s (%s) and %s (%s)";
+$lang['created on %s'] = "izveidots %s";
+$lang['Customize'] = "Pielāgot";
+$lang['Your Gallery Customization'] = "Jūs Galerijas pielāgošana";
+$lang['day'][0] = "Svētdiena";
+$lang['day'][1] = "Pirmdiena";
+$lang['day'][2] = "Otrdiena";
+$lang['day'][3] = "Trešdiena";
+$lang['day'][4] = "Ceturtdiena";
+$lang['day'][5] = "Piektdiena";
+$lang['day'][6] = "Sestdiena";
+$lang['Default'] = "Noklusējums";
+$lang['delete this photo from your favorites'] = 'dzēst šo foto no jūsu favorītiem';
+$lang['Delete'] = "Dzēst";
+$lang['descending'] = "lejupejošs";
+$lang['Download'] = "Lejupielādēt";
+$lang['Download this file'] = "lejupielādēt šo failu";
+$lang['edit'] = "labot";
+$lang['wrong date'] = "nepareizs datums";
+$lang['excluded'] = "izņemtais";
+$lang['Your favorites'] = "Mani izvēlētie";
+$lang['display your favorites photos'] = 'rādīt jūsu iemīļotos fotoattēlus (favorītus)';
+$lang['Favorites'] = "Izvēlētie";
+$lang['First'] = "Pirmais";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = "Galerija slēgta apkopei, lūdzu apmeklējiet to vēlāk.";
+$lang['Page generated in'] = "Uzģenerēta lappuse";
+$lang['guest'] = "viesis";
+$lang['Hello'] = "Sveiki";
+$lang['available for administrators only'] = "pieeja tikai administratoriem";
+$lang['display this album'] = 'rādīt šo albūmu';
+$lang['display last user comments'] = "Apskatīt pēdējos lietotāju komentārus";
+$lang['customize the appareance of the gallery'] = "pielāgot galerijas izskatu";
+$lang['search'] = "meklēt";
+$lang['Home'] = "Sākums";
+$lang['in this album'] = 'šajā albūmā';
+$lang['in %d sub-album'] = '%d apakšalbūmā';
+$lang['in %d sub-albums'] = '%d apakšalbūmos';
+$lang['included'] = "iekļauts";
+$lang['Invalid password!'] = "Nepareiza parole!";
+$lang['Language'] = "Valoda";
+$lang['last %d days'] = "pēdējās %d dienas";
+$lang['Last'] = "Pēdējais";
+$lang['Logout'] = "Iziet";
+$lang['obligatory'] = "obligāts";
+$lang['display a calendar by creation date'] = "rāda kalendārā izveides datumu";
+$lang['display all photos in all sub-albums'] = 'rādīt visus apakšalbūmu (sub-albums) attēlus';
+$lang['return to normal view mode'] = "atgriezties normālajā apskates režīmā";
+$lang['display a calendar by posted date'] = "rāda kalendārā iesniegšanas datumu";
+$lang['month'][10] = "Oktobris";
+$lang['month'][11] = "Novembris";
+$lang['month'][12] = "Decembris";
+$lang['month'][1] = "Janvāris";
+$lang['month'][2] = "Februāris";
+$lang['month'][3] = "Marts";
+$lang['month'][4] = "Aprīlis";
+$lang['month'][5] = "Maijs";
+$lang['month'][6] = "Jūnijs";
+$lang['month'][7] = "Jūlijs";
+$lang['month'][8] = "Augusts";
+$lang['month'][9] = "Septembris";
+$lang['Most visited'] = "Visapmeklētākie";
+$lang['display most visited photos'] = 'parādīt visapmeklētākos fotoattēlus';
+$lang['The number of photos per page must be a not null scalar'] = 'Foto skaits lapā nedrīkst būt nulle skalārs lielums';
+$lang['Number of photos per page'] = 'Foto skaits lapā';
+$lang['Unknown identifier'] = "Nezināms identifikators";
+$lang['New password'] = "Jauna parole";
+$lang['Rate this photo'] = 'Vērtēt šo foto';
+$lang['Next'] = "Nākamais";
+$lang['no rate'] = "nav novērtējuma";
+$lang['Photos posted within the last %d day.'] = 'Pēdējās %d dienas laikā atsūtītie foto.';
+$lang['Photos posted within the last %d days.'] = 'Pēdējo %d dienu laikā atsūtītie foto.';
+$lang['password updated'] = "parole izmainīta";
+$lang['Recent period must be a positive integer value'] = "Tekošajam periodam jābūt veselam skaitlim";
+$lang['photo'] = 'foto';
+$lang['Click on the photo to see it in high definition'] = 'Klikšķināt uz foto, lai redzētu to lielā izšķirtspējā';
+$lang['Show file metadata'] = "Parādīt faila metadatus";
+$lang['Powered by'] = "Skripts";
+$lang['Preferences'] = 'Izvēles';
+$lang['Previous'] = "Iepriekšējais";
+$lang['Random photos'] = 'Gadījuma fotoattēli';
+$lang['display a set of random photos'] = 'rādīt gadījuma attēlu kopumu';
+$lang['Recent albums'] = 'Jaunākie albūmi';
+$lang['display recently updated albums'] = 'parādīt jaunākos atjauninātos albūmus';
+$lang['Recent period'] = "Jauninājumu periods";
+$lang['Recent photos'] = 'Jaunākie foto';
+$lang['display most recent photos'] = 'rādīt visjaunākos fotoattēlus';
+$lang['Redirection...'] = "Pāradresē...";
+$lang['Please, enter a login'] = "Lūdzu ielogojietis";
+$lang['login mustn\'t end with a space character'] = "logins nedrīkst beigties ar tukšumu - spacebar";
+$lang['login mustn\'t start with a space character'] = "logins nedrīkst sākties ar tukšumu - spacebar";
+$lang['this login is already used'] = "šo loginu jau lieto";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = "e-pasta adresei jāizskatās xxx@yyy.eee (piemēram : jack@altern.org)";
+$lang['Auto login'] = "Auto logins";
+$lang['remove this tag from the list'] = "izņemt šo tagu no saraksta";
+$lang['representative'] = "pārstāvis";
+$lang['Search for Author'] = "Meklēšana pēc autora";
+$lang['Search in albums'] = 'Meklēt albūmos';
+$lang['Search by date'] = "Meklēšana pēc datuma";
+$lang['Date'] = "Datums";
+$lang['End-Date'] = "Beigu datums";
+$lang['Kind of date'] = "Datuma tips";
+$lang['Search for words'] = "Meklēt pēc vārdiem";
+$lang['Search for all terms'] = "Meklēt pēc visiem kritērijiem";
+$lang['Search for any term'] = "Meklēt pēc jebkura kritērija";
+$lang['Empty query. No criteria has been entered.'] = "Tukšs saraksts. Nav ievadīts neviens kritērijs.";
+$lang['Search results'] = "Meklēšanas rezultāti";
+$lang['Search in sub-albums'] = 'Meklēt apakšalbūmos';
+$lang['searched words : %s'] = "meklējamie vārdi : %s";
+$lang['Contact'] = "Kontakts";
+$lang['set as album representative'] = 'iestatīt kā albūma pārstāvi';
+$lang['Show number of comments'] = "Parādīt komentāru skaitu";
+$lang['Show number of hits'] = "Parādīt apskates skaitu";
+$lang['slideshow'] = "slaidšovs";
+$lang['stop the slideshow'] = "pārtraukt slaidšovu";
+$lang['Specials'] = "Speciālie";
+$lang['SQL queries in'] = "SQL pieprasījums";
+$lang['display only recently posted photos'] = 'rādīt tikai tagad ievietotos fotoattēlus';
+$lang['return to the display of all photos'] = 'atgriezties pie visu foto rādīšanas režīma';
+$lang['the beginning'] = "sākums";
+$lang['Thumbnails'] = "Sīkbildes";
+$lang['Menu'] = "Izvēlne";
+$lang['A comment on your site'] = "Komentārijs no jūsu vietnes";
+$lang['today'] = "špdien";
+$lang['Update your rating'] = "Atjaunojiet savu vērtējumu";
+$lang['the username must be given'] = "nepieciešams lietotāja vārds";
+$lang['useful when password forgotten'] = "derīgi, ja aizmirsta parole";
+$lang['Quick search'] = "Ātrā meklēšana";
+$lang['Connected user: %s'] = "Pievienotais lietotājs: %s";
+$lang['IP: %s'] = "IP: %s";
+$lang['Browser: %s'] = "Pārlūks: %s";
+$lang['Author: %s'] = "Autors: %s";
+$lang['Comment: %s'] = "Komentārs: %s";
+$lang['Comment by %s'] = "Komentējis %s";
+$lang['User: %s'] = "Lietotājs: %s";
+$lang['Email: %s'] = "E-pasts: %s";
+$lang['Admin: %s'] = "Admins: %s";
+$lang['Registration of %s'] = "Reģistrācija %s";
+$lang['Album: %s'] = 'Albūms: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "Lietotāja \"viesis\" nepareizs satuss, lietojiet statusu pēc noklusējuma. Lūdzu informējiet webmasteru.";
+$lang['this email address is already in use'] = "cits lietotājs jau lieto šo pasta adresi";
+$lang['Album results for'] = 'Albūma rezultāti priekš';
+$lang['Tag results for'] = "Tagu rezultāti priekš";
+$lang['from %s to %s'] = "no %s līdz %s";
+$lang['Play of slideshow'] = "Attēlot slaidšovu";
+$lang['Pause of slideshow'] = "Pauzēt slaidšovu";
+$lang['Repeat the slideshow'] = "Atkārtot slaidšovu";
+$lang['Not repeat the slideshow'] = "Neatkārtot slaidšovu";
+$lang['Reduce diaporama speed'] = "Samazināt slaidšova ātrumu";
+$lang['Accelerate diaporama speed'] = "Palielināt slaidšova ātrumu";
+$lang['Submit'] = "Sūtīt";
+$lang['Yes'] = "Jā";
+$lang['No'] = "Nē";
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d foto';
+$lang['%d photo is also linked to current tags'] = '%d fotogrāfija ir sasaistīts arī ar tekošo cilmi (iezīmi)';
+$lang['%d photos are also linked to current tags'] = '%d fotogrāfijas ir sasaistītas arī ar tekošām cilmēm';
+$lang['display photos linked to this tag'] = 'rādīt fotogrāfijas, kas saistītas ar šo cilmi';
+$lang['photos posted during the last %d days'] = 'pēdējo %d dienu laikā ievietotie foto';
+$lang['Piwigo Help'] = "Piwigo palīgs";
+$lang['Rank'] = "Rinda";
+$lang['group by letters'] = "grupēt pēc burtiem";
+$lang['letters'] = "burti";
+$lang['show tag cloud'] = "parādīt tagu mākoni";
+$lang['cloud'] = "mākonis";
+$lang['Reset to default values'] = "Iestatīt noklusējuma vērtības";
+$lang['delete all photos from your favorites'] = 'dzēst visus fotoattēlus no favorītiem';
+$lang['Sent by'] = "Aizūtījis";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Jūsu pārlūks ir bloķējis sīklietotnes - cookies. Lai varētu ielogoties ir jāaktevizē sīklietotnes.";
+$lang['Edit a comment'] = "Labot komentāru";
+$lang['Are you sure?'] = "Esat pārliecināts?";
+$lang['(!) This comment requires validation'] = '(!) Šis komentārs prasa apstiprinājumu';
+$lang['Welcome'] = 'Laipni lūdzam';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Lapni lūgti Jūsu Piwigo foto galerijā!';
+$lang['... or browse your empty gallery'] = '... vai pārlūkot jūsu tukšo galeriju';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... vai nerādied lūdzu šo ziņojumu, Es pats tikšu galā ar to';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Sveiki %s, Jūsu Piwigo foto galerija ir tukša!';
+$lang['I want to add photos'] = 'Es gribu pievienot attēlus';
+$lang['Manage this user comment: %s'] = 'Pārvaldīt šo lietotāja komentāriju: %s';
+$lang['Email address is missing. Please specify an email address.'] = "Trūkst e-pasta adreses. Lūdzu norādiet e-pasta adresi.";
+$lang['This author modified following comment:'] = 'Šis autors modificējis sekojošu komentāru:';
+$lang['This author removed the comment with id %d'] = 'Šis autors izdz;esis komentāru ar id %d';
+$lang['html tags are not allowed in login'] = 'html cilnes (tagi) loginā nav atļautas';
+$lang['%d rates'] = '%d vērtējums';
+$lang['Rating score'] = 'Rezultējošais vērtējums';
+$lang['Invalid username or email'] = 'Kļūdains lietotājvārds vai e-pasta adrese';
+$lang['Password reset is not allowed for this user'] = 'Paroles atgūšana šim lietotājam nav atļauta';
+$lang['User "%s" has no email address, password reset is not possible'] = '"%s" Lietotājiem nav e-pasta adreses, paroles atgūšana nav iespējama';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Kāds pieprasījis atgūt paroli sekojošam lietotāja kontam:';
+$lang['Username "%s" on gallery %s'] = 'Lietotājvārds "%s" galerijā %s';
+$lang['To reset your password, visit the following address:'] = ' Lai atgūtu savu paroli, apmeklējiet sekojošu adresi:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ja tā ir bijusi kļūda, ignorējiet šo e-pastu un nekas nenotiks.';
+$lang['Password Reset'] = 'Paroles Atgūšana (reset)';
+$lang['Check your email for the confirmation link'] = 'Meklējiet savā e-pastā apstiprināšanas saiti';
+$lang['Invalid key'] = 'Kļūdaina atslēga (key)';
+$lang['The passwords do not match'] = 'Paroles nesakrīt';
+$lang['Your password has been reset'] = 'Jūsu parole ir atgūta (atiestatīta)';
+$lang['Return to home page'] = 'Atgriezties mājas lapā';
+$lang['Please enter your username or email address.'] = 'Lūdzu ievadiet lietotājvārdu vai e-pasta adresi.';
+$lang['You will receive a link to create a new password via email.'] = 'Jūs ar e-pastu saņemsiet saiti, lai izveidotu jaunu paroli.';
+$lang['Username or email'] = 'Lietotājvārds vai e-pasta adrese';
+$lang['Change my password'] = 'Nomainīt manu paroli';
+$lang['Enter your new password below.'] = 'Ievadiet savu jauno paroli zemāk.';
+$lang['EXIF Metadata'] = 'EXIF Metadati';
+$lang['IPTC Metadata'] = 'IPTC Metadati';
+$lang['Edit'] = 'Rediģēt';
+$lang['Hello %s,'] = 'Sveiki %s,';
+$lang['Send my connection settings by email'] = 'Nosūtīt manus konekcijas datus ar e-pastu';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Veiksmīgi piereģistrēts, drīz ar e-pastu saņemsiet savus konekcijas iestatījumus. Esat laipni gaidīti!';
+$lang['Username modification'] = 'Lietotājvārda modofikācija';
+$lang['Your username has been successfully changed to : %s'] = 'Jūsu lietotājvārds tika sekmīgi izmainīts uz: %s';
+$lang['square'] = 'Kvadrāts';
+$lang['thumb'] = 'Sīks';
+$lang['small'] = 'Mazs';
+$lang['medium'] = 'Vidējs';
+$lang['large'] = 'Liels';
+$lang['xlarge'] = 'XLiels';
+$lang['xxlarge'] = 'XXLiels';
+$lang['Original'] = 'Oriģināls';
+$lang['Thank you for registering at %s!'] = 'Paldies par reģistrēšanos %s!';
+$lang['Here are your connection settings'] = 'Šeit ir Jūsu konekcijas iestatījumi';
+$lang['Password: %s'] = 'Parole: %s';
+$lang['Username: %s'] = 'Lietotājvārds: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ja uzskatāt, ka saņēmāt kļūdainu e-pastu, lūdzu sazinieties ar mums %s';
+$lang['Photo sizes'] = 'Foto izmēri';
+$lang['Show oldest comments first'] = 'Vecāku saturu rādīt vispirms';
+$lang['Show latest comments first'] = 'Jaunākos komentārus rādīt vispirms';
+$lang['View in'] = 'Skatīties kā';
+$lang['Mobile'] = 'Mobilo';
+$lang['Desktop'] = 'Desktopu';
+$lang['2small'] = 'XXS - sīks';
+$lang['xsmall'] = 'XS - ļoti mazs';
+$lang['File name, A &rarr; Z'] = 'Faila nosaukums, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Faila nosaukums, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Foto nosaukums, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Foto nosaukums, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Izveides datums jaunais &rarr; vecais';
+$lang['Date created, old &rarr; new'] = 'Izveides datums, vecais &rarr; jaunais';
+$lang['Date posted, new &rarr; old'] = 'Publicēšanas datums, jaunais &rarr; vecais';
+$lang['Date posted, old &rarr; new'] = 'Publicēšanas datums, vecais &rarr; jaunais';
+$lang['Rating score, high &rarr; low'] = 'Novērtējums, augsts &rarr; zems';
+$lang['Rating score, low &rarr; high'] = 'Novērtējums, zems &rarr; augsts';
+$lang['Visits, high &rarr; low'] = 'Apmeklējums, augsts &rarr; zems';
+$lang['Visits, low &rarr; high'] = 'Apmeklējums, zems &rarr; augsts';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Ciparu identifikators, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Ciparu identifikators, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Lietotāja izvēlētais kārtojums';
+$lang['%d rate'] = '%d vērtējum';
+$lang['Page not found'] = 'Lapa nav atrasta';
+$lang['Bad request'] = 'Kļūdains pieprasījums';
+$lang['Forbidden'] = 'Aizliegts';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo piemeklējusi neatrisināma kļūme';
+$lang['Requested album does not exist'] = 'Pieprasītais albūms neeksistē';
+$lang['Permalink for album not found'] = 'Albūma permalinks nav atrasts';
+$lang['Requested tag does not exist'] = 'Pieprasītā cilne neeksistē';
+
+$lang['mandatory'] = 'obligāts';
+$lang['Username is mandatory'] = 'Lietotājvārds ir obligāts';
+$lang['Email address is mandatory'] = 'E-pasta adrese ir obligāta';
+$lang['Website'] = 'Interneta vietne';
+$lang['Your website URL is invalid'] = 'Jūsu interneta vietnes URL ir kļūdains';
+$lang['Email'] = 'e-pasts';
+$lang['Go back to the album'] = 'Iet atpakaļ uz albūmu';
+$lang['Last Page'] = 'Pēdējā lapa';
+$lang['First Page'] = 'Pirmā lapa';
+$lang['Password is missing. Please enter the password.'] = 'Nepareiza parole. Lūdzu atkārtojiet mēģinājumu.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Trūkst paroles apstiprinājuma. Lūdzu apstipriniet izvēlēto paroli.';
+$lang['%d photos per page'] = '%d fotogrāfiju lapā';
+$lang['Theme'] = 'Tēma';
+?>
Index: /tags/2.6.0RC1/language/lv_LV/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,45 @@
+ <h2>Regiģēt albūmu</h2>
+ <h3>Informācija</h3>
+ <ul> <li><strong>nosaukums</strong>: pārsaukt albūmu (virtuāla pārsaukšana fiziska albūma gadījumā).</li>
+   <li><strong>apraksts</strong>: īss skaidrojošs teksts, kas raksturo satura pamatideju,    šis teksts tiek rādīts sīkbilžu lapas apakšpusē.</li>
+ </ul>
+ <h3>Pārvietošana</h3>
+ <p>Ja albūms ir virtuāls, to iespējams pārvietot. Albūma pārvietošana nozīmē tā pamatalbūma (parent album) izmaiņas.</p>
+ <h3>Izvēles iespējas </h3>
+ <ul> <li><strong>Piekļuves veids</strong>: Atļauju pārvaldīšana. Ja padarāt albūmu privātu, visi tam pakļautie  (child) albūmi kļūst privāti. Ja padarāt albūmu publisku, visi tā pamatalbūmi (parent) publiski.</li>
+   <li><strong>Bloķēšana</strong>: Albūms un visi tā apakšalbūmi uz laiku tiek slēgti apkalpošanas pasākumiem.</li>
+   <li><strong>Komentāri</strong>: Autorizē lietotājus šī albūma fotogrāfiju komentēšanai.</li>
+ </ul>
+ <p>Jūs varat pārvaldīt šīs opcijas arī no &quot;Properties&quot; (rekvizīti) pārvaldīšanas loga (logi Komentāri, Slēgt, <span class="pwgScreen">Publisks/Privāts</span>, <span class="pwgScreen">Pārstāvim pieejams no Administrāšana</span><span class="pwgScreen"> &raquo; Albūmi &raquo; Rekvizīti</span>).</p>
+ <h3>Kārtošanas secība </h3>
+ <p>Lietot attēlu kārtošanas secību pēc noklusējuma.</p>
+ <p>Norādiet, vai šī kārtošanas secība attiecināma arī uz apakšalbumiem.</p>
+ <p>Izvēlēties noteiktus kārtošanas kritērijus, kas būtu jāizmanto  šim albūmam.</p>
+ <ul> <li><strong>Izveides datums</strong>: Fotogrāfijas uzņemšanas datums</li>
+   <li><strong>Iesniegšanas datums</strong>: Sinhronizācijas datums</li>
+   <li><strong>Vidējais vērtējums (*)</strong>: Vidējais vērtējums var tikt izmainīts pēc apmeklētāju vērtējuma</li>
+   <li><strong>Visvairāk apmeklētie (*)</strong>: Tekošais vērtējums var izmainīt visvairāk apmeklēto secību</li>
+   <li><strong>Faila nosaukums</strong>: Nosaukums, kas dots informācijas laukā</li>
+   <li><strong>Id</strong>: Iekšējais Id (tekošajām kategorijām ir lielāks id, kā iepriekšējām).</li>
+ </ul>
+ <p><strong>(*)</strong>Brīdinājums: Pārliecinieties par šo kārtošanas secību darbības pareizību pats, jo pretējā gadījumā tas var dot neparedzētus rezultātus.</p>
+ <h3>Pārstāvība</h3>
+ <p>Albūma pārstāvis  ir galvenajā lapā attēlotais sīktēls  (<span class="pwgScreen">category.php</span>), lai pārstāvētu to, kad tajā ir tikai apakšalbūmi un tajā nav neviena attēla  (glauži kā saknes albūma gadījumā).</p>
+ albūma foto :</p>
+ <ul> <li><span class="pwgScreen">Foto lapa</span>: viena no darbības pogām ļauj iestatīt pašreizējo fotoattēlu kā attēlojamā albūma pārstāvi. Šī poga pieejama tikai administratoriem.</li>
+   <li><span class="pwgScreen">Modificēt informāciju par foto pārvaldē</span>. Šajā logā var nonākt no <span    class="pwgScreen">picture.php</span> vai no  Grupas (batch) vadības, kas atrodas <em>unit mode vienības režīmā</em>. Detaļām, skatīt palīdzībā par šī loga izmantošanu.</li>
+   <li><span class="pwgScreen">Administrēšana &raquo; Albūmi &raquo; Rekvizīti,    Pārstāvis</span>. Detaļas skatīt palīdzībā par šī loga izmantošanu.</li>
+   <li><span class="pwgScreen">Rediģēt albūmu</span> (šajā logā).</li>
+ </ul>
+ <p>Pārstāvja izvēle ir atkarīga no <code>allow_random_representative</code> konfigurācijas parametra (skatīt <span class="filename">include/config_default.inc.php</span>).</p>
+ <p>Noklusēšanas režīmā  (<code>allow_random_representative</code> ir iestatīts false), katrs albūms, kurā ir vismaz viens elements, ir pārstāvēts ar fiksētu elemntu. Reiz istatīts (pie albūma izveides), pārstāvi maina tikai tad, ja administrators to pieprasa. Ja pārstāvis ir neatbilstošs situācijai, jūs varat vaicāt pēc jauna  pārstāvja - <strong>Atrast jaunu pārstāvi, izmantojot nejaušu izvēli</strong>.</p> <p>Ja <code>allow_random_representative</code> konfigurācijas parametrs ir iestatīts stāvoklī true, fotogrāfijas saturošai kategorijai var būt nefiksēts pārstāvis. Lietojiet pogu <strong>Dzēst pārstāvi</strong>.</p>
+ <p>Ja albūmā ir tikai apakšalbūmi un nav neviena foto, tomēr, pateicoties Modificēyai informācijai par foto ekrānu, to var pārstāvēt jebkurš elements. Vienīgā izvēlne uz šī ekrāna ir poga <strong>Dzēst pārstāvi</strong>.</p>
+ <h3>Sasaistīt visas albūma fotogrāfijas ar jaunu albūmu</h3> <ul> <li><strong>Virtuālā albūma nosaukums</strong>: Jaunizveidotajā un jaunnosauktajā albūmā visas pašreizējās kategorijas fotogrāfijas būs sasaistītas ar jaunoizveidoto.</li>
+ <li><strong>Pamatalbūms</strong>: Atstājiet tukšu vietu, kur paredzēts izveidot jauno albūmu, lai to izveidotu saknē.</li> </ul>
+ <h3>Sasaistīt visas albūma fotogrāfijas ar eksistējošu albūmu</h3> <ul> <li><strong>Albums</strong>: Izvēlieties mērķalbūmu..</li> </ul>
+ <h3>Nosūtīt informāciju uz e-pastu grupas dalībniekiem</h3> <ul> <li><strong>Grupa</strong>: saņēmēju grupa </li>
+   <li><strong>Pasta saturs</strong>: Viņiem brīvā formā nosūtāmais teksta ziņojums </li> </ul> --------------------- Actual LV Version -------------------
+ <h2>Rediģēt kategoriju</h2> <h3>Informācija</h3> <ul> <li><strong>nosaukums</strong>: pārdēvē kategoriju (virtuāla pārdēvēšana fiziskas kategorijas gadījumā).</li>
+ <li><strong>apraksts</strong>: īss apraksts, kas sniedz galveno informāciju par saturu,     šis teksts izvietots sīkbilžu lapas apakšā.</li> </ul> <h3>Pārvietot</h3> <p>Ja kategorija ir virtuāla to var pārvietot. Pārvietot kategoriju nozīmē izmainīt tās pamatkategoriju.</p> <h3>Izvēles iespējas</h3> <ul> <li><strong>Piekļuves tips</strong>: Piekļuves atļauju pārvaldība. Ja padarāt kategoriju privātu, visas tai radniecīgās apakškategorijas kļūst privātas.Ja padarāt kategoriju publiski pieejamu, tad arī visas tai radniecīgās apakškategorijas kļūst pieejamas.</li> <li><strong>Bloķēšana</strong>: Kategorija un tās apakškategorijas uz profilakses laiku tiks slēgtas piekļuvei.</li> <li><strong>Komentāri</strong>: Ļauj lietotājiem komentēt šīs kategorijas elementus.</li> <li><strong>Atļauja augšupielādēt</strong>: Atļauj lietotājiem augšupielādēt attēlu failus. Šī iespēja dota tikai fiziskām (nevis virtuālām) kategorijām.</li> </ul> <p>Šīs iespējas pieejamas arī no "Properties" (rekvizītu) pārvaldes loga (logi <span class="pwgScreen">Augšuplāde</span>, <span class="pwgScreen">Komentāri</span>, <span class="pwgScreen">Boķēšana</span>, <span class="pwgScreen">Publisks/Privāts</span>, <span class="pwgScreen">Pārstāvis</span> pieejams no <span class="pwgScreen">Administrēšana, Kategorijas, Rekvizīti</span>).</p> <h3>Kārtošanas secība</h3> <p>Lieto attēlu kārtošanas secību pēc noklusējuma.</p> <p>Norāda vai šī lietu kārtošanas secība attiecas arī uz apakškategorijām.</p> <p>Izvēlas atbilstošus kārtošanas kritērijus šai kategorijai.</p> <ul> <li><strong>Izveides datums</strong>: Attēla uzņemšanas datums</li> <li><strong>Iesūtīšanas datums</strong>: Sinhronizācijas datums</li> <li><strong>Vidējai vērtējums (*)</strong>: Apmeklētāja novērtējums var izmainīt vidējo vērtējumu </li> <li><strong>Visvairāk apmeklētais (*)</strong>: Tekošais apmeklējums var izmainīt visvairāk apmeklēto secību</li> <li><strong>Faila nosaukums</strong>: Vārds, kas piešķirts informācijas laukā</li> <li><strong>Id</strong>: Iekšējais Id (tekošajām kategorijām ir augstāks id kā vecākajām</li> </ul> <p><strong>(*)</strong>Brīdinājums: ieteikums izmēģināt šos kārtošanas kritērijus, jo tie var dod arī neparedzamus rezultātus.</p> <h3>Pārstāvība</h3> <p>Kategoriju pārstāv sīkbilde galvenajā lapā (<span class="pwgScreen">category.php</span>) lai pārstāvētu kategoriju, kad tajā ir tikai apakškategorijas un neviena tieša elementa (tāpat kā pamatkategorija).</p> <p>Ir 4 dažādi veidi kā noformēt kategoriju pārstāvošo attēlu :</p> <ul> <li><span class="pwgScreen">Attēla lapa</span>: viena no pogām ļauj Jums iestatīt patlabanējo attēlu kā šo kategoriju reprezentējošo attēlu. Šī darbība pieejama tikai administratoriem.</li> <li><span class="pwgScreen">Informācijas par attēlu modificēšana</span> administrācijā. Šis logs pieejams no <span class="pwgScreen">picture.php</span> vai <span class="pwgScreen">Grupas vadības</span> <em> vienības režīmā </em>. Detaļas skatiet šī loga palīgā.</li> <li><span class="pwgScreen">Administrēšana, Kategorijas, Rekvizīti, Pārstāvība</span>. Detaļas skatiet šī loga palīgā.</li> <li><span class="pwgScreen">Kategorijas rediģēšana</span> (esošais logs).</li> </ul> <p>Pārstāvniecības izvēle atkarīga no <code>allow_random_representative</code> konfigurācijas parametriem failā (see <span class="filename">include/config_default.inc.php</span>).</p>
+ <p>Noklusēšanas režīmā (<code>allow_random_representative</code> set to false), katra kategorija, kas satur vismaz vienu elementu, ir pārstāvēta ar fiksētu elementu. Kad pārstāvība noteikta (pie kategorijas izveides), to var nomainīt tikai administrators. Gadījuma, ja pārstāvība nav atbilstoša, Jūs varat mēģināt <strong>Atrast jaunu pārstāvi, izmantojot nejaušu izvēli</strong>.</p> <p>Ja <code>allow_random_representative</code> konfigurācijas parametrs ir patiesā (true) stāvoklī, elementus saturošajai kategorijai var nebūt fiksētas pārstāvības. Vienkārši lietojiet <strong>Dzēst pārstāvi</strong> pogu.</p> <p>Ja kategorijā ir tikai apakškategorijas un neviena elementa, to tik un tā var pārstāvēt jebkurš elements ņemts no <span class="pwgScreen">Informācijas par attēlu modificēšanas</span> loga. Vienīgā aktīvā iespēja esošajā logā ir <strong>Dzēst pārstāvi</strong> poga.</p> <h3>Sasaistīt visus kategorijas elementus ar jaunu kategoriju</h3> <ul> <li><strong>Virtuālās kategorijas nosaukums</strong>: Jaunizveidojamās kategorijas nosaukumā, visi esošās kategorijas attēli tiks sasaistīti ar jaunizveidoto kategoriju.</li> <li><strong>Pamatkategorija</strong>: Vieta, kur tiks veidota jauna kategorija, atstājiet tukšu, lai izveidotu to saknes mapē.</li> </ul> <h3>Sasaistīt visu kategoriju elementus ar esošajām kategorijām</h3> <ul> <li><strong>Kategorijas</strong>: Izvēlieties mērķa kategoriju.</li> </ul> <h3>Informācijas nosūtīšana ar e-pastu grupas biedriem</h3> <ul> <li><strong>Grupa</strong>: saņēmēju grupa</li>
+   <li><strong>Pasta saturs</strong>: Viņiem brīvā formā nosūtāmais teksta ziņojums </li> </ul>
Index: /tags/2.6.0RC1/language/lv_LV/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Virtuālo albūmu pārvietošana</h2>
+
+<p>Tikai virtuālajiem albūmiem var būt jauns (parent) pamatalbūms.</p>
+
+<h3>Pārvietošanai paredzētie albūmi</h3>
+
+<p>Atlasiet vienu vai vairākus virtuālos albūmus, ko vēlaties pārvietot.
+Ja saraksts ir tukšs, tas nozīmē, ka vēl nevienu neesat izveidojis.</p>
+
+<h3>Jauns pamatalbūms</h3>
+
+<p>Atlasīt jaunu pamatalbūmu (virtuālu vai fizisku).
+Ja neesat atlasījis nevienu pamatalbūmu, virtuāli atlasītie albūmi tiks pārvietoti uz saknes mapi.
+Albūmu nevar pārvietot sevī paša vai kādā no tā atvasinājumiem (child).</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/cat_options.html	(revision 25596)
@@ -0,0 +1,16 @@
+<h2>Albūma iespējas </h2>
+<p>Vairāku albūmu iespēju pārvaldīšana vienlaicīgi.</p>
+<dl>
+	<dt>Komentāri</dt>
+	<dd>Foto var saņemt komentārus no  jūsu apmeklētājiem, ja tas ir no albūma, kura komentāru režīms ir aktivēts.</dd>
+
+	<dt>Bloķēt</dt>
+	<dd>Bloķētie albūmi ir noņemti no apkalpošanas. Tikai administratoram ir iespēja  tos aplūkot galerijā.</dd>
+
+	<dt>Publisks / privāts</dt>
+	<dd>Kad albūms kļūst privāts, dod piekļuves tiesības lietotājiem un grupām</dd>
+  
+	<dt>Pārstāvis</dt>
+	<dd>Šī iespēja kļūst pieejama, kad konfigurācijas iestatījumos iestatījuma vērtība <code>allow_random_representative</code> (skat. <span   class="filename">include/config_defaults.inc.php</span>) ir patiesa ( <em>true)</em>. Katru albūmu var pārstāvēt  gadījuma fotoattēls vai fotoattēls, kas izvēlēts kā unikāls pārstāvis.</dd>
+	
+</dl>
Index: /tags/2.6.0RC1/language/lv_LV/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Rediģēt albūmu piekļuves atļaujas</h2>
+
+<p>Šis logs pieejams tikai privātajiem albūmiem. Šeit varat izvēlēties albūmam autorizētus lietotājus un grupas.</p>
+
+<h3>Grupas</h3>
+
+<p>Jūs varat liegt vai atļaut grupas piekļuvi tekošajam albūmam. Modificējot grupu piekļuves tiesības, lietotājiem piekrītošiem šai grupai, tiks liegta vai atļauta piekļuve albūmam. </p>
+
+<h3>Lietotāji</h3>
+
+<p>Jūs varat liegt vai atļaut  piekļuves tiesības atsevišķiem lietotājiem. Lietotājiem, kam ir grupas piekļuves tiesības, tās var atņemt izņēmuma kārtā.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/configuration.html	(revision 25596)
@@ -0,0 +1,108 @@
+<h2>Konfigurācija</h2>
+
+<p>Šajā logā administrators var veikt sistēmas pamatkonfigurāciju. Patiešām, šis logs dod piekļuvi tikai vienkāršākajiem konfigurācijas parametriem, kas ir gluži pietiekami lielākajam administratoru skaitam. Ja vēlaties vairāk (modernizētus) konfigurācijas parametrus, lasiet failu <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Šis logs ir sadalīts vairākās sekcijās, sagrupējot konfigurācijas parametrus pēc tēmām.</p>
+
+
+<h3>Galvenais</h3>
+<ul>
+<li><strong>Galerijas virsraksts</strong>: izmantots RSS padevē un e-pasta paziņojumos.</li>
+
+<li><strong>Lapas baneris</strong>: tiek atainots katras publiskās lapas augšā.</li>
+
+<li><strong>Galerijas URL</strong>: izmantots RSS padevē.</li>
+
+<li><strong>Bloķēt galeriju</strong>: Bloķē visu galeriju uz apkopes laiku. Tikai lietotāji ar administratora tiesībām var piekļūt galerijai.</li>
+
+<li><strong>Novērtējums</strong>: Attēla novērtēšanas funkcija ir iespējota.</li>
+
+<li><strong>Viesu veiktais novērtējums</strong>: Pat nepiereģistrēti lietotāji var vērtēt attēlus.</li>
+
+<li><strong>Atļauj lietotāja reģistrāciju</strong>: Ikviens var reģistrēties.</li>
+
+<li><strong>Visiem lietotājiem nepieciešama pasta adrese</strong>: pasta adrese tiks pārbaudīta reģistrējoties vai pie profila atjaunināšanas, izņemot, ja attiecīgās darbības veic administrators.</li>
+
+<li><strong>Izsūta e-pastu administratoram, kad reģistrējas jauns lietotājs</strong>:
+par katru jauna lietotāja reģistrēšanos ar e-pastu tiks paziņots administratoram.</li>
+
+</ul>
+
+<h3>Vēsture</h3>
+
+<p>Lapas apmeklējumu skaits <span
+   class="pwgScreen">category.php</span> un <span
+   class="pwgScreen">picture.php</span> tiks saglabāts <code>history</code> tabulā.</p>
+
+<p>Apmeklējumi tiks parādīti <span class="pwgScreen">Administrēšanā, Speciālos, Vēsturē</span>.</p>
+
+<ul>
+<li><strong>Saglabāt viesu lapu apmeklējumus</strong>: viesu veiktais lapu apmeklējumu skaits tiks ierakstīts.</li>
+
+<li><strong>Saglabāt lietotāju veiktos lapu apmeklējumus</strong>: reģistrēto lietotāju veiktais lapu apmeklējumu skaits tiks ierakstīts.</li>
+
+<li><strong>Saglabāt administratoru lapu apmeklējumus</strong>: administratoru veiktais lapu apmeklējumu skaits tiks ierakstīts.</li>
+
+</ul>
+
+<h3>Komentāri</h3>
+<ul>
+
+<li><strong>Komentāri visiem</strong>: Pat nereģistrēts viesis var komentēt.</li>
+
+<li><strong>Komentāru skaits lapā</strong>.</li>
+
+<li><strong>Apstiprināšana</strong>: administratoram jāapstiprina lietotāju komentāri pirms tie kļūst redzami web lapā. Lietotāju komentāru apstiprināšana notiek logā <span class="pwgScreen">Administrēšana, Attēli, Komentāri</span>.</li>
+
+<li><strong> Izsūta e-pastu administratoram, kad ievadīts derīgs komentārs</strong>:
+Izsūta e-pastu administratoram, kad lietotājs ievada komentāru un tas tiek pārbaudīts.</li>
+
+<li><strong> Izsūta e-pastu administratoram, kad komentāram nepieciešama apstiprināšana</strong>:
+Izsūta e-pastu administratoram , kad administratoram jāpārbauda un jāakceptē lietotāja ievadītais komentārs.
+Lietotāju komentāru apstiprināšana notiek logā <span
+class="pwgScreen">Administrēšana, Attēli, Komentāri</span>.</li>
+
+</ul>
+
+<h3>Augšupielāde</h3>
+<ul>
+ <li><strong>Rāda augšupielādes saiti katru reizi</strong>: ja eksistē augšuplādējamas kategorijas, augšupielādes saite tiek rādīta katrai kategorijai.</li>
+ <li><strong>Lietotāja piekļuves līmenis augšupielādei</strong>:
+Aizliedz augšupielādi dažām lietotāju kategorijām.</li>
+<li><strong> Izsūta e-pastu administratoram, kad tiek augšuplādēts attēls </strong>:
+Administratoram ar e-pastu paziņo katru reizi, kad lietotājs augšupielādē attēlu.</li>
+</ul>
+
+<h3>Attēlošana pēc noklusējuma</h3>
+
+<p>Šeit Jūs varat mainīt attēlošanas iespējas, ko lieto viesis, lietotājs pēc noklusēšanas, kas nav iekonektējies. Kad iekonektējas, tiek lietoti lietotāja paša istatījumi (modificējami <span class="pwgScreen">profilā</span>).</p>
+
+<p>Iespējams izmainīt atainošanas iespējas visiem eksistējošiem lietotājiem, jāieiet <span class="pwgScreen">Administrēšana, Identifikācija, Lietotāji</span> logā, kur var izvēlēties lietotāju sarakstu.</p>
+
+<ul>
+
+<li><strong>Valoda</strong>: pielietojams tikai Piwigo etiķetēm. Kategoriju un attēlu nosaukumi, kā arī visi aprakstošie komentāru lauki nav lokalizējami (tulkojami).</li>
+
+<li><strong>Attēlu skaits rindā</strong></li>
+
+<li><strong>Rindu skaits lapā</strong></li>
+
+<li><strong>Interfeisa tēma</strong></li>
+
+<li><strong>Tekošais periods</strong>: Dienās. Laika sprīdis, kurā attēls tiek rādīts kā jauns. Jābūt lielākam par 1 dienu.</li>
+
+<li><strong>Izvērst visas kategorijas</strong>: Pēc noklusējuma izvērst visas kategorijas izvēlnē <em>Brīdinājums</em>: šī darbība ir resursietilpīga un, ja Jūsu kategoriju koks satur daudz kategoriju, var tikt ģenerēts liels skaits izvēlņu.</li>
+
+<li><strong>Rāda komentāru skaitu</strong>: Sīkbilžu lapā rāda komentāru skaitu katram attēlam. Resursu patērējošs.</li>
+
+<li><strong>Rāda apmeklējumu skaitu</strong>: sīkbilžu lapā zem attiecīgās sīkbildes rāda cik reižu katrs attēls apskatīts.
+   Tikai tad, kad papildus konfigurācijas parametrs ir: <br>
+   $conf['show_nb_hits'] = true; <br>
+Zināšanai: false ir pēc noklusējuma.</li>
+
+<li><strong>Attēlu maksimālais platums</strong>: maksimālais attēlojamais platums. Attēli, kas pārsniedz šo lielumu, tiks pārveidoti, lai tos var parādīt. Labāk apsverat iespēju modificēt attēla platumu pašiem, nekā izmantot šo noklusējuma variantu.</li>
+
+<li><strong>Attēlu maksimālais augstums</strong>: attiecināms tas pats, kas pieminēts attēlu maksimālajā platumā.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/lv_LV/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,85 @@
+<h2>Plašāk par veidņu konfigurēšanu</h2>
+
+<h3>Mērķis</h3>
+<p>Definē aizvietošanas apstākļus katrai veidnei, ņemot vērā veidnes paplašinājumu (veidne saukta "replacer" - aizvietotājs).</p>
+
+<p>"original template" no ./template/yoga (vai jebkura cita, kā yoga)
+ tiks aizvietota ar "replacer", ja šī aizvietotājveidne ir sasaistīta ar "original template" (un izvēles kārtā, kad pieprasītais URL satur "optional URL keyword").</p>
+
+<p>"Optional URL keywords" (papildus URL atslēgvārdi) ir tie, pēc kuriem var atrast moduļa nosaukumu iekš URL.</p>
+
+<p>TādēlTherefore "Optional URL keywords" var darboties kā aktīvas pastāvīgās saites "permalink" (skatīt informāciju par pastāvīgajām saitēm permalinkiem mūsu dokumentācijā).</p>
+
+<p>Nolasīt: `<a href="#warnings">Warning</a>` lietošanas apstākļus.</p>
+
+<h3>Kādi ir veidņu paplašinājumi?</h3>
+
+<p>Šis konfigurēšanas rīks ir pietiekami jaudīgs priekš iesācējiem un arī priekš zinošiem lietotājiem.
+Izmantojot FTP, veidņu-paplašinājumu mapē, Webmāsters var nodublēt lielu daudzumu izplatīto .tpl failu ("original template") ar dažādiem nosaukumiem ("replacer").
+ 
+ "Original templates", patrreizējās oriģinālās atbalstītās veidnes ir:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> un/vai <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> un/vai <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> un/vai <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> un/vai <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> un/vai <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> un/vai <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> un/vai <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Kur var atrast veidņu pirmavotus "original templates"?</h3>
+
+<p>Izdalēmās oriģinālās veidnes ir atrodamas template/yoga/
+(nerediģējiet tās šai vietnē). Tādējādi lietojot "original templates", jebkurš webmāsters var izveidot savas "replacers (customized templates)" veidnes.</p>
+
+<h3>Kur var ieglabāt aizvietotājveidnes "replacers"?</h3>
+
+<p><strong>aizvietotājveidnes Replacers (pielāgotās veidnes)</strong> jāizvieto veidņu-paplašinājumu (template-extension) mapē (vai tās apakšmapēs).
+Aizvietotājveidnes nosaukums var būt jebkāds bet ar .tpl paplašinājumu. Piemēram: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Kā aktivizēt savas aizvietotājveidnes "replacers"?</h3>
+<p>Lai aktivizētu radniecīgās<strong>aizvietotājveidnes (pielāgotās veidnes)</strong> tām katrai jābūt piesaistītai <strong>oriģinājajai veidnei</strong>.
+ Šis ir "Extend for templates" uzdevums Konfigurēšanas Administrēšanas izvēlnē.</p>
+
+<p>Ja esta izvēlējies <strong>papildus URL atslēgvārdu</strong>, tad aizvietošanas notiks tikai lapās, kas sakritīs ar šo atslēgvārdu. Piemēram: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+ 
+<p>Pieredzējuši lietotāji kā <strong>papildus URL atslēgvārdu</strong> var lietot permalinkus – pastāvīgās saites. </p>
+
+<p>Ja esat izvēlējies <strong>Saistīto veidni</strong> tad aizvietošanas notiks tikai šajā veidnē.</p>
+
+<h3>Kā var deaktivizēt savas aizvietotājveidnes "replacers"?</h3>
+<ul>
+<li>Atselektējiet radniecīgās "Original templates".</li>
+<li>Izmantojot FTP, izdzēšat aizstājējvaidnes "replacers".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Brīdinājumi</h3>
+<ul>
+
+  <li><strong>Oriģinālajām veidnēm</strong> ir jābūt "original" veidnēm, pretējā gadījumā sagaidāmi neparedzami rezultāti!</li>
+
+  <li>No dažām<strong>aizstājējveidnēm (pielāgotām veidnēm)</strong> ar to pašu<strong>Oriģinālo veidni</strong> un to pašu <strong>papildus URL atslēgvārdu</strong> aktīva ir tikai pēdējā aizstājējveidne.</li>
+
+  <li>Atselektētais <strong>papildus URL atslēgvārds</strong> aktivizēs aizstājējveidni jebkurā veidnes lietošanas gadījumā. Kā iepriekšējā punktā, jaunākā aizstājējveidne izpildās pirmā, ignorējot pārējās rindā esošās.</li>
+
+  <li>Apakšmapes:
+Apakšmapes tiek ignorētas, bet tās ir lietderīgas veicot izmaiņas patrreizējā rindā.<br>
+izplatāmās-veidnes: tiek izplatītas testēšanas nolūkos!
+<strong>Nerediģējiet tās</strong> izveidojiet paši savas.
+</li>
+
+  <li>Izdzēšot aizstājējveidni <strong>Oriģinālā veidne </strong>nekavējoties tiek no jauna aktivizēta.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/lv_LV/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Grupu saraksts</h2>
+
+<p>Šeit Jūs varat pārvaldīt grupas.</p>
+
+<h3>Pievienot grupu</h3>
+
+<p>Administrators var pievienot grupas.</p>
+
+<h3>Grupu saraksts</h3>
+
+<p>Katram elementam saraksts atļauj:</p>
+
+
+<ul>
+<li>pārvietories uz biedru sarakstu</li>
+<li>pārvietoties uz atļauju pārvaldīšanas logu</li>
+<li>dzēst grupu (nepieciešams apstiprinājums)</li>
+<li>pārslēgt statusu "default" (nepieciešams apstiprinājums)</li>
+</ul>
+
+<h3>Grupas pēc noklusējuma</h3>
+<p>Grupas pēc noklusējuma ir tās, kuras administrators automātiski sasaistīta ar katru jaunu lietotāju tā reģistrācijas vai izveides gaitā.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Vairaki veidi ka pievienot attelus Jusu galerijai:</p>
+
+<ul>
+<li><strong>Tieša augšupielade</strong> izmantojot web parluku ir vienkaršakais un atrakais veids. To nosaka Jusu parluka iespejas un Jusu web serveris. Ja nepieciešams augšupieladet loti daudz attelu un ja, rodas problemas, ir citi veidi ka to izdarit!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Izmantot Tiešo Augšupieladi</a></p>
+
+<ul>
+<li><strong>pLoader</strong> ir aplikacija, kas jaieinstale Jusu datora. Ievelciet &amp; nolieciet attelus pLoader loga, uzklikškiniet uz <em>"Augšupieladet Piwigo"</em> un laujiet  pLoaderim padarit darbu. Ir pieejamas ari citas aplikacijas, piemeram, <strong>WinToPiwigo</strong> vai <strong>Digikam</strong> spraudni attelu ieladešanai Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a
+href="admin.php?page=photos_add&section=ploader">Izmantot pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+<li><strong>Ielade ar FTP </strong> ir ieteicamakais variants lielu attelu kolekciju augšupieladei ar minimalu darbibu skaitu. Sekojiet celvedim, lai sekmigi sagatavotu Jusu attelus. FTP ielades metode lauj pilniba kontrolet Jusu attelu organizaciju uz servera.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Izmantot FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/lv_LV/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/help_groups.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Grupas ir ērts veids kā piešķirt atļaujas lietotāju sarakstam.</p>
+
+<p>Izveidot grupas <span class="pwgScreen">Administrēšanas &raquo; Lietotāja &raquo; Grupas</span> un piesaistīt lietotājus šai grupai  <span class="pwgScreen">Administrēšanas &raquo; Lietotāja &raquo; Pārvaldīt</span>.</p>
+
+<p>Lietotājs var vienlaicīgi piederēt vairākām grupām. Autorizācijai ir priekšroka pār aizliegumu: ja lietotājs "jack" pieder grupām "family" un "friends", un tikai grupa  "family" var redzēt kategoriju "Christmas 2003" kategoriju, tad arī grupa "jack" redzēs "Christmas 2003".</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Tiklīdz esat izveidojis savu galeriju, varat to konfigurēt priekš apmeklētājiem
+<ul>
+<li>Atainojums pēc noklusējuma kā gribējāt iekš<span class="pwgScreen">Administrēšana &raquo; Konfigurācija &raquo; Iespējas</span> iezīme <span class="pwgScreen">Viesa Iestatījumi</span></li>
+<li>Tēma pēc noklusējuma iekš<span class="pwgScreen">Administrēšana &raquo; Konfigurācija &raquo; Tēmas</span></li>
+<li>Valoda pēc noklusējuma iekš <span class="pwgScreen"> Administrēšana &raquo; Konfigurācija &raquo; Valodas</span></li>
+</ul>
+  Pēc noklusējuma, katrs jaunais lietotājs manto šīs īpašības, tiklīdz reģistrējies.
+</p>
+<p>Ja rodas jautājumi, Piwigo komūna laipni aicina Jūs <a href="http://piwigo.org/forum">savā forumā</a>.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,56 @@
+<fieldset>
+<legend>Atļaujas attēliem</legend>
+
+<p>Katram attēlam ir <strong>konfidencialitātes līmenis</strong> (atslēga). Katram lietotājam arī ir konfidencialitātes līmenis (slēdzene). Ir 5 konfidencialitātes līmeņi:</p>
+<ol>
+<li>Neviens</li>
+<li><em>Kontakti</em></li>
+<li><em>Draugi (augstāks par kontaktiem)</em></li>
+<li><em>Ģimene (augstāks par draugiem)</em></li>
+<li><em>Administrators (augstāks par visiem līmeņiem)</em></li>
+</ol>
+
+<p>Augstākam līmenim ir atļauja lietot zemākos līmeņus. Jo lietotāja konfidencialitātes līmenis ir augstāks, jo vairāk attēlus tas redz.</p>
+
+<p>Piemēram, ja attēlam "peter_wedding-0024.jpg" ir <em>"Ģimenes"</em>
+konfidencialitātes līmenis, tad:</p>
+<ul>
+<li>Pēteris (kas ir  <em>"Administrators"</em>) redz attēlu, jo <em>"Adminstrators"</em> var redzēt visus attēlus</li>
+<li>Beta (kas ir <em>"Ģimenes"</em> biedrs) arī redzēs attēlu</li>
+<li>Marija (kas ir tikai <em>"Draugs"</em>) attēlu neredzēs</li>
+</ul>
+
+<p>Lietotājs, kam nav tiesību redzēt kategorijas saturu, neredzēs pat kategorijas nosaukumu. Tas pats attiecas arī uz iezīmēm.</p>
+
+<p>Jūs varat iestādīt lietotāja konfidencialitātes līmeni izmantojot <span class="pwgScreen">Administrācijas &raquo; Lietotāja &raquo; Pārvaldnieka</span>
+ekrānu.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Atļaujas kategorijām</legend>
+
+<p>Ja konfidencialitātes līmeņi Jūs neapmierina, iespējams izmantot lietotāja vai grupas atļaujas uz kategorijām. Jūs varat izmantot atļaujas uz attēliem un kategorijām vienlaikus bez konfliktiem.</p>
+
+<p>Jūs varat aizliegt piekļuvi kategorijām. Varat izmainīt piekļuves tipu kategorijai uz "privāto", ja nepieciešams pārvaldīt piekļuves atļaujas.</p>
+
+<p>Jūs varat iestatīt kategoriju uz privāto rediģējot vienu kategoriju izmantojot (<span class="pwgScreen">Administratora &raquo; Kategoriju &raquo; Pārvaldnieku
+&raquo; edit</span>) vai veicot izvēles visā kategoriju kokā izmantojot
+(<span class="pwgScreen">Administrācijas &raquo; Kategoriju &raquo;
+Rekvizītus &raquo; Publisks / Privāts</span>).</p>
+
+<p>Ja kategorija ir privāta, iespējams pārvaldīt grupu un lietotāju atļaujas uzreiz 3 ekrānos:</p>
+
+<ul>
+
+<li><span class="pwgScreen">Administratora &raquo; Lietotāja &raquo; Pārvaldnieka
+&raquo; darbības atļauja </span> ( viena saite uz lietotāju)</li>
+
+<li><span class="pwgScreen">Administratora &raquo; Lietotāja &raquo; Grupu
+&raquo; darbības atļauja </span> (viena saite uz grupu)</li>
+
+<li><span class="pwgScreen">Administratora &raquo; Kategorijas &raquo;
+Pārvaldnieka &raquo; kategoriju piekļuves rediģēšanas atļauja </span> (viena saite uz kategoriju)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/lv_LV/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Attēli tiek rādīti kategorijās atbilstoši to failu mapei.</p>
+
+<p>Iespējams parādīt attēlu vairākās kategorijās nedublējot tā failu uz web servera. Sasaistiet attēlu ar jebkuru kategoriju, izmantojot attēlu rediģēšanas logu (tas pieejams katram administratoram no attēla lapas galerijas pusē).</p>
+
+<p>Virtuālās kategorijas ir balstītas uz sekojoša koncepta: tām nav atbilstošu fizisku mapju. Veidojiet virtuālās kategorijas izmantojot <span class="pwgScreen">Administrēšanas &raquo; Kategoriju &raquo; Pārvaldnieku</span>.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/history.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>Vēsture</h2>
+
+<p>Šajos logos, saskaņā ar izvēlētajām iespējām panelī Administrēšana – Vispārējais – Vēstures indekss, Jūs varat kontrolēt savas galerijas apmeklējumu vēsturi.</p>
+
+<h3>Statistika</h3>
+<ul>
+<p>Ja esat izvēlējies ierakstīt (<span class="pwgScreen">index.php</span> un <span class="pwgScreen">picture.php</span>) apmeklētās lapas tabulā <code>history</code>, Jūs varat to kontrolēt no šejienes.</p>
+
+<li><strong>Vispārējā statistika</strong>: apmeklējumu skaits gada laikā. </li>
+
+<li><strong>Gada statistika</strong>: apmeklējumu skaits mēnesī izvēlētajā gadā.</li>
+
+<li><strong>Mēneša statistika</strong>: apmeklējumu skaits dienā izvēklētajā mēnesī.</li>
+
+<li><strong>Dienas statistika</strong>: apmeklējumu skaits stundā izvēlētajā dienā.</li>
+
+</ul>
+
+<h3>Meklēšana</h3>
+<ul>
+<p>Ja esat nolēmis ierakstīt (<span class="pwgScreen">index.php</span> un <span class="pwgScreen">picture.php</span>) apmeklētās lapas tabulā <code>history. </code>, tad, izmantojot šo iezīmi ar dažādu filtru palīdzību, varat aplūkot apmeklēto lapu detaļas.</p>
+
+<li><strong>Filrēšana pēc datuma</strong> : izvēlieties datumu intervālu, kurā vēlaties vērot apmeklējumu aktivitāti.</li>
+
+<li><strong>Filtrēšana pēc elementa tipa</strong> : lai aplūkotu noteikta elementa tipa apmeklējumu aktivitāti, izvēlieties tā tipu.</li>
+
+<li><strong>Filtrēšana pēc lietotāja</strong> : izvēlieties lietotāju, kura apmeklējumu aktivitāti vēlaties redzēt.</li>
+
+<li><strong>Filtrēšana pēc faila nosaukuma</strong> : izvēlieties faila nosaukumu, kura apmeklējumu aktivitāti vēlaties redzēt.</li>
+
+<li><strong>Filtrēšana pēc attēla identifikatora</strong> : izvēlieties attēlu pēc tā identifikatora, kura apmeklējumu aktivitāti vēlaties redzēt.</li>
+</ul>
Index: /tags/2.6.0RC1/language/lv_LV/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/maintenance.html	(revision 25596)
@@ -0,0 +1,45 @@
+<h2>Apkalpošana</h2>
+
+<p>Lai optimizētu lapas ģenerēšanas laiku, Piwigo izmanto kešatmiņu kā informācijas starpnieku. Piemēram, tā vietā, lai katru reizi ielādējot lapu skaitītu cik attēlu ir attiecīgajā kategorijā, šī informācija tiek glabāta datu bāzē. Teorētiski šai informācijai parasti būtu jābūt korektai, bet dažreiz gadās, ka kešatmiņā esošā informācija ir kļūdaina.</p>
+
+<p>Laikam ejot, daļa informācijas kļūst nevajadzīga. Izdzēšot nevajadzīgo informāciju no datu bāzes, ietaupīsiet savu diska telpu.</p>
+
+<ul>
+
+<li>
+<strong>Nesasaistītie elementi:</strong>
+     Tiek rādīti attēli, kuri nav sasaistīti ne ar vienu virtuālo kategoriju.
+</li>
+<li>
+<strong>Faili ar vienādiem nosaukumiem vairāk kā vienā fiziskā kategorijā:</strong>
+     Parāda attēlus vai failus, kuri atrasti vairākās kategorijās ar vienādiem faila vārdiem.
+</li>
+
+</ul>
+
+<ul>
+
+<li><strong>Atjaunina informāciju par kategoriju:</strong> Katru kategoriju raksturojošo informāciju pārbauda un, ja nepieciešams atjaunina: pamata kategoriju sarakstu, attēlu skaitu, pēdējo attēla datumu, vietu starp radniecīgām kategorijām, atrašanās vietu starp visām kategorijām. Šī darbība pārbauda arī pārstāvēto attēlu pastāvību.</li>
+
+<li><strong>Atjaunina informāciju par attēlu:</strong> Par katru attēlu atjaunināmā informācija ir: pilns ceļš līdz failam, vidējais novērtējums. <em>Brīdinājums</em>, nesajauciet: metadatu informācija ir jāsinhronizē no <span class="pwgScreen">Administrēšanas, Kategorijas, Sinchronizācijas</span>, vai izmantojot katra attēla modifikācijas ekrānu (līdz <span class="pwgScreen">Attēlam</span> piemēram).</li>
+
+<li><strong>Salabo un optimizē datu bāzi:</strong>
+   Veic pārkārtošanas, labošanas un optimizācijas operācijas katrai datu bāzes tabulai.
+</li>
+</ul>
+
+<ul>
+<li><strong>Dzēš vecos datus:</strong> Dzēš visas rindas no
+<code>vēstures</code> tabulas. Logs <span class="pwgScreen">Administratēšana,
+   Speciālais, Vēsture</span> vairāk nerādīs informāciju par pagājušo vēsturi. <em>Brīdinājums</em>: visi dati neatgriezeniski tiks pazaudēti.</li>
+
+<li><strong>Izdēš vēstures kopsavilkumu:</strong> Dzēš informācijas kopsavilkumu par apmeklējumu vēsturi. Šā kopsavilkuma pamatā vēsturiskās detaļas.</li>
+
+<li><strong>Dzēš sesijas:</strong> Dzēš lietotāju izbeigušās sesijas.</li>
+
+<li><strong> Dzēš neizmantotās paziņojumu plūsmas </strong></li>
+
+<li><strong>Dzēš meklēšanas vēsturi</strong></li>
+
+<li><strong>Dzēš izveidotās paraugveidnes</strong></li>
+</ul>
Index: /tags/2.6.0RC1/language/lv_LV/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>E-pasta paziņojumi</h2>
+
+<p>Šis logs ļauj konfigurēt un izsūtīt e-pastu lietotājiem, lai paziņotu par viņu web lapās veiktajām izmaiņām.</p>
+
+<p>Šis logs sastāv no trīs raksturiezīmēm:</p>
+
+<h3>Parameteri</h3>
+<p>Pieejams tikai webmāsteriem, ar šīs iezīmes palīdzību iestāda e-pasta paziņojuma parametrus.</p>
+
+<h3>Abonēšana</h3>
+<p> Pieejams tikai webmāsteriem, ar šīs iezīmes palīdzību pārvalda lietotāju reģistrēšanās/izrakstīšanās informācijas nosūtīšanu ar e-pastu.</p>
+
+<h3>Aģents</h3>
+<p> Pieejams tikai webmāsteriem un administratoriem, šī iezīme ļauj izsūtīt e-pasta paziņojumus, lai informētu par veiktajām izmaiņām.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Pastāvīgās saites - permalinki</h2>
+
+<p>Pastāvīgās saites izmanto, lai padarītu kategoriju url glītākus. Kad kategorija definēta ar pstāvīgo saiti, kategorijas id urlā vairs nav nepieciešama.</p>
+
+<p>Kad pastāvīgā saite ir izdzēsta, Jūs to varat saglabāt pastāvīgo saišu vēsturē, tādējādi ārējas saites uz Piwigo lapām darbosies. Pastāvīgo saišu vēstures tabulā iespējams atrast datumu, kad šī saite ir izdzēsta, kad ši saite pēdējo reizi lietota un cik reizes tā ir lietota.</p>
+
+<p>Svarīgi, ka katrai kategorijai ir jābūt unikālai pastāvīgai saitei. Arī pastāvīgo saišu vēsturē nevar būt divu vienādu pastāvīgo saišu.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,98 @@
+<fieldset>
+<legend>Ātrais Starts</legend>
+
+<ol>
+<li>Izveidot mapi Jūsu datorā.</li>
+
+<li>Kopēt dažus attēlus šīs mapes iekšienē, piemērot tos rādīšanai internetā.
+<em>Brīdinājums</em>: mapju un failu nosaukumi jāveido tikai no burtiem, cipariem, "-", "_" vai ".". Nav pieļaujami tukšumi vai apakšsvītras.</li>
+
+<li>Izmantojot FTP klientu, iekopējiet Jūsu mapi Piwigo instalācijas "galleries" mapē.</li>
+
+<li>Ielogojaties Jūsu galerijā un ejiet uz <span class="pwgScreen">Administrēšanu
+&raquo; Attēlu &raquo; Sīkbildēm</span>, lai izveidotu trūkstošās sīkbildes.</li>
+
+<li>Ejiet uz <span class="pwgScreen">Administrēšanu</span> un klikšķiniet uz lielās Sinhronizācijas pogas.</li>
+</ol> Apsveicam! Jūs esat sekmīgi izveidojis Jūsu fotogalerijas pirmo kategoriju.
+</fieldset>
+
+<fieldset>
+<legend>Mapju un failu organizācija</legend>
+
+<ul>
+
+<li>
+
+<p>Kategoriju mapes atrodas Piwigo mapē "galleries". Tālāk seko ļoti mazas (bet ar ļoti daudz iespējām) galerijas mapju koks:</ p>
+
+<pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+</li>
+
+<li>Izņemot ar nosaukumu "thumbnail", "pwg_high" vai "pwg_representative" (skatīt skaidrojumu zemāk), katra mape zem "galleries" veido kategoriju. To dziļumam nav ierobežojumu.</li>
+
+<li>Pamatā elementu pārstāv fails. Fails var būt Piwigo elements, ja tā paplašinājums ir starp <code>file_ext</code> konfigurācijas parametru iespējām (skatīt <span class="filename">include/config_default.inc.php</span> failu). Fails var būt attēls, ja tā paplašinājums ir starp <code>picture_ext</code> konfigurācijas parametru iespējām.</li>
+
+<li>Attēliem jābūt asociētiem ar savām sīkbildēm (skatīt sīkbilžu sekciju zemāk)</li>
+
+<li>Attēli var būt asociēti ar liela izmēra failiem augstai izšķirtsējai. Kā, piemēram, attēlam wedding.jpg augstāk. Bez prefiksa augstas izšķirtsējas attēlam.</li>
+
+<li>Pēc noklusējuma ikonai, kas pārstāv faila nosaukuma paplašinājumu, nav nekādu papildus attēla elementu (video, skaņu, tekstu, jebkas...) . Ar papildus izvēli, Jūs varat sasaistīt sīkbildi un pārstāvošo failu (skatīt video.avi augstāk piemērā).</li>
+
+<li><em>Brīdinājums</em>: mapju un failu nosaukumi jāveido tikai no burtiem, cipariem, "-", "_" vai ".". Nav pieļaujami tukšumi vai apakšsvītras.</li>
+
+<li>Kolīdz faili, sīkbildes un pārstāvības ir korekti saliktas mapēs, ejam uz: <span class="pwgScreen">Administrēšanu &raquo; Kategorijām &raquo; Sinchronizšānu</span></li>
+
+</ul>
+</fieldset>
+
+<fieldset>
+<legend>Sīkbildes</legend>
+<ul>
+
+<li>Katram attēkam ir jābūt savai sīkbildei.</li>
+
+<li>Sīkbildes glabājas "thumbnail" kategorijas mapes apakšmapē. Sīkbildei ir tāds pats faila nosaukums kā tās pārstāvētajam attēlam, ar konfigurācijas parametriem <code>prefix_thumbnail</code> kā prefikss (skatīt <span class="filename">include/config.inc.php</span>).</li>
+
+<li>Sīkbilžu failiem nav jābūt ar tādu pašu paplašinājumu kā to pārstāvētajiem attēliem (piem. ".jpg" attēlam var būt ".GIF" paplašinājums).</li>
+
+<li>Sīkbilžu izveidošanai ieteicams izmantot ārējo moduli.</li>
+
+<li>Nav ieteicams izmantot Piwigo integrēto sīkbilžu veidošanas instrumentu, jo ar to veidoto sīkbilžu kvalitāte ir zema un tas stipri noslogo serveri ( tas rada nopietnas problēmas šārētiem serveriem).
+
+<li>Ja sīkbilžu veidošanai esat nolēmis izmantot webserveri, Jums jāatļauj rakstīšanas tiesības visām mapēm.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/lv_LV/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Meklēt</h2>
+
+<p>Šeit Jūs varat meklēt attēlus visā galerijā.</p>
+
+<dl>
+
+<dt>Meklēt pēc vārdiem</dt>
+<dd>Meklē pēc viena vai vairākiem vārdiem starp ar galeriju saistīto attēlu atribūtiem. Lietojiet * kā aizstājējzīmi nepilnam meklējumvārdam.</dd>
+
+<dt>Meklēt pēc autora</dt>
+<dd>Lietojiet * aizstājējzīmi nepilnam meklējumvārdam.</dd>
+
+<dt>Meklēt pēc datuma</dt>
+<dd>Izvēlieties datumu un/vai beigu datumu jūsu meklējumam. Atstājiet datuma lauku tukšu, ja vēlaties izveidot "before" meklējumu. Gadu beidzamajā lauciņa jāievada sekojošā formātā: AAAA (t.i. 2004)</dd>
+
+<dt>Meklēt Kategorijās</dt>
+<dd>Izvēlietits kategoriju vai kategorijas, kurās vēlaties meklēt. Meklēts tiks arī visās apakškategorijās, ja izvēlēsities pamatkategoriju un iestatīsit atļauju meklēt apakškategorijās.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/lv_LV/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/synchronize.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Sinhrionizēšana</h2>
+
+<p>Ir divi dažādi sinhronizēšanas varianti:  pēc mapēm/failiem un failu metadatiem. Variants Mapes/faili sinhronizē Jūsu mapju koku ar kategoriju koku datu bāzē. Sinhronizācija pēc Metadatiem atjaunina informāciju par elementiem: faila izmērs, dimensijas pikseļos, EXIF vai IPTC informāciju.</p>
+
+<p>Pirmoreiz sinhronizējot ir jāsinhronizē pēc mapēm/failiem varianta.</p>
+
+<p>Sinhronizācijas process var stipri ieilgt (viss atkarīgs no servera noslodzes un sinhronizējamo elementu daudzuma) tā, ka ieteicams to darīt pakāpeniski, kategoriju pēc kategorijas.</p>
Index: /tags/2.6.0RC1/language/lv_LV/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/help/user_list.html	(revision 25596)
@@ -0,0 +1,31 @@
+<h2>Lietotāju saraksts</h2>
+
+<p>Šeit var pārvaldīt reģistrēto lietotāju rekvizītus, izņemot atļaujas, kas tiek pārvaldītas no citurienes.</p>
+
+<h3>Pievienot lietotāju</h3>
+
+<p>Administrators var pašrocīgi pievienot lietotājus.</p>
+
+<h3>Lietotāju saraksts</h3>
+
+<p>Sarakstu var filtrēt pēc lietotājvārda (lietot * kā aizstājējzīmi), grupas vai statusa. To var sakārtot pēc reģistrēšanas datuma vai lietotājvārda gan augošā, gan dilstošā kārtībā.</p>
+
+<p>Šis logs, izmantojot dažādas darbības, ļauj pārvaldīt vairākus lietotājus vienlaicīgi:</p>
+
+<ul>
+
+<li>dzēst lietotājus (nepieciešams apstiprinājums)</li>
+<li>izmainīt statusu</li>
+<li>piesaistīt vai atsaistīt no grupām</li>
+<li>modificēt rādīšanas rekvizītus</li>
+<li>modificēt papildus rekvizītus</li>
+
+</ul>
+
+<p>Mērķis ir atlasītie lietotāji (pēc noklusēšanas) vai visi lietotāji, kas uzrādas izfiltrētajā sarakstā.</p>
+
+<h3>Padomdevējs</h3>
+<p>Padomdevēja definīcija: lietotājs, kas izlasa visu viņam pieejamo informāciju simulācijas režīmā.</p>
+
+<p>Padomdevēja režīmu var iestādīt ar mainīgo $conf['allow_adviser'].</p>
+<p>Ja šī mainīgā vērtība ir 'true', jebkurš lietotājs iegūst padomdevēja statusu</p>
Index: /tags/2.6.0RC1/language/lv_LV/index.php
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/lv_LV/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "Instalacija";
+$lang['Basic configuration'] = "Pamatkonfiguracija";
+$lang['Default gallery language'] = "Galerijas valoda pec noklusešanas";
+$lang['Database configuration'] = "Datubazes konfiguracija";
+$lang['Admin configuration'] = "Administratora konfiguracija";
+$lang['Start Install'] = "Sakt instalaciju";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = "Tas tiks radits apmekletajiem. Tas nepieciešams web lapas administrešanai";
+$lang['Connection to server succeed, but it was impossible to connect to database'] = "Savienojums ar serveri sekmigs, bet savienojums ar datu bazi nav iespejams";
+$lang['Can\'t connect to server'] = "Nevar savienoties ar serveri";
+$lang['Host'] = "Hosts";
+$lang['User'] = "Lietotajs";
+$lang['user login given by your host provider'] = "lietotaja logins, ko pieškir Jusu hosta pakalpojuma sniedzejs";
+$lang['user password given by your host provider'] = " lietotaja parole, ko pieškir Jusu hosta pakalpojuma sniedzejs";
+$lang['Database name'] = "Datu bazes nosaukums";
+$lang['also given by your host provider'] = "ari pieškir Jusu hosta pakalpojuma sniedzejs";
+$lang['Database table prefix'] = "Datu bazes tabulas prefikss";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "datu bazes tabulu nosaukumi bus ar šo prefiksu (lauj labak parvaldit Jusu tabulas)";
+$lang['enter a login for webmaster'] = "ievadit webmastera loginu";
+$lang['webmaster login can\'t contain characters \' or "'] = "webmastera logins nedrikst saturet ' vai \"";
+$lang['please enter your password again'] = "ludzu ievadiet Jusu paroli no jauna";
+$lang['Keep it confidential, it enables you to access administration panel'] = "Esiet konfidenciali, tas lauj pieklut administratora panelim";
+$lang['Password [confirm]'] = "Parole [apstiprinat]";
+$lang['verification'] = "parbaude";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "Vajag palidzibu? Uzdodiet savu jautajumu <a href=\"%s\">Piwigo sludinajumos</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "Apmekletaji vares izmantot šo e-pastu, lai sazinatos ar lapas administratoru";
+$lang['PHP 5 is required'] = "nepieciešams PHP 5 ";
+$lang['It appears your webhost is currently running PHP %s.'] = "Jusu webhosts patlaban izmanto PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo var meginat parslegt Jusu konfiguraciju uz  PHP 5 izveidojot vai modificejot  a .htaccess failu.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Jus varat izmanit savu konfiguraciju pats un pec tam parstartet Piwigo.";
+$lang['Try to configure PHP 5'] = "Meginiet nokonfiguret PHP 5";
+$lang['Sorry!'] = "Atvainojiet!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo nevar nokonfiguret PHP 5.";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Jums javeršas pie Jusu hostinga pakalpojuma sniedzeja pec palidzibas un pašam jamegina parslegties uz PHP 5 atbalstu.";
+$lang['Hope to see you back soon.'] = "Ceram Jus redzet atkal.";
+$lang['Congratulations, Piwigo installation is completed'] = 'Apsveicam, Piwigo instalacija ir pabeigta';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = ' Alternativa ir iekopet tekstu lodzina augšpuse un ielimet to faila "local/config/database.inc.php" (Uzmanibu : database.inc.php drikst saturet tikai to kas ir teksta lodzina, ne enter ne tukšumus)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Konfigurācijas faila local/config/database.inc.php izveide ir nesekmīga.';
+$lang['Download the config file'] = 'Lejupladet config failu';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Jums jalejupielade configuracijas fails un jaielade tas Jusu instalacijas local/config mape.';
+$lang['Just another Piwigo gallery'] = 'Vēl viena Piwigo galerija';
+$lang['Welcome to my photo gallery'] = 'Laipni lūgti manā foto galerijā';
+$lang['Welcome to your new installation of Piwigo!'] = 'Laipni lūgti Jūsu Piwigo jaunajā instalācijā!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Nevilcinieties izmantot mūsu forumu palīdzību: %s';
+$lang['localhost or other, supplied by your host provider'] = 'vietējais pakalpojuma sniedzējs vai cits, tas ko atbalsta vietējais pakalpojuma sniedzējs';
+?>
Index: /tags/2.6.0RC1/language/lv_LV/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Latviešu [LV]
Index: /tags/2.6.0RC1/language/lv_LV/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/lv_LV/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/lv_LV/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Uzlabošana";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Šī lapa piedāvā uzlabot Jūsu Piwigo veco datu bāzi uz jaunāko versiju. Uzlabošanas asistents domā, ka Jūs patlaban lietojat <strong>release %s</strong> ( vai ekvivalentu).";
+$lang['Upgrade from version %s to %s'] = "Uzlabojums no  %s versijas uz %s";
+$lang['Statistics'] = "Statistika";
+$lang['total upgrade time'] = "kopējais uzlabošanas procesa laiks";
+$lang['total SQL time'] = "kopējais SQL laiks";
+$lang['SQL queries'] = "SQL rindas";
+$lang['Upgrade informations'] = "Informācija par uzlabojumu";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veiciet profilakses pārbaudi [Administrēšana>Rīki>Profilakse] , ja ir gadījusies kāda kļūme.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Piesardzības nolūkos tiek atslēgti sekojoši spraudņi. Pirms tos atkal pieslēgt, pārbaudiet vai nav pieejami to uzlabojumi:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Uzlabojumu var veikt tikai administrators: lūdzu veiciet pierakstīšanos zemāk.";
+$lang['You do not have access rights to run upgrade'] = "Jums nav pieejas tiesību, lai veiktu uzlabojumu";
+$lang['All sub-albums of private albums become private'] = 'Visi privātā albūma apakšalbūmi kļūst privāti';
+$lang['User permissions and group permissions have been erased'] = "Lietotāju un grupu piekļuves tiesības ir izdzēstas";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "No iepriekšējās konfigurācijas ir saglabāti tikai sīkbilžu prefiksi un webmāstera e-pasta adreses";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Iekš <i>%s</i>, pirms <b>?></b>,ievietot:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Piesardzības pasākumu dēļ, sekojošas tēmas ir deaktivētas. Pirms atkal tās aktivēt, jums jāpārbauda, vai nav pieejami šo tēmu jauninājumi:';
+?>
Index: /tags/2.6.0RC1/language/mk_MK/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mk_MK/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mk_MK/admin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Average rate'] = 'Просек';
+$lang['Rate'] = 'Оцени';
+$lang['Add to caddie'] = 'Додај ја фотографијата во календарот';
+$lang['Caddie'] = 'Календар';
+?>
Index: /tags/2.6.0RC1/language/mk_MK/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mk_MK/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mk_MK/common.lang.php	(revision 25596)
@@ -0,0 +1,398 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id$
+// | last update   : $Date$
+// | last modifier : $Author$
+// | revision      : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Македонски [MK]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=428
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Македонски';
+$lang_info['country'] = 'Република Македонија';
+$lang_info['charset'] = 'utf-8';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'mk';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d килобајти';
+$lang['%d album updated'] = '%d категорија беше обновена';
+$lang['%d albums updated'] = '%d категории беа обновени';
+$lang['%d comment to validate'] = '%d коментар чека валидирање';
+$lang['%d comments to validate'] = '%d коментари чекаат валидирање';
+$lang['%d new comment'] = '%d нов коментар';
+$lang['%d new comments'] = '%d нови коментари';
+$lang['%d comment'] = '%d коментар';
+$lang['%d comments'] = '%d коментари';
+$lang['%d hit'] = '%d посета';
+$lang['%d hits'] = '%d посети';
+$lang['%d new photo'] = '%d нов елемент';
+$lang['%d new photos'] = '%d нови елементи';
+$lang['%d new user'] = '%d нов член';
+$lang['%d new users'] = '%d нови членови';
+$lang['%d photo'] = '%d фотографија';
+$lang['%d photos'] = '%d фотографии';
+$lang['%d photo is also linked to current tags'] = '%d фотографија е поврзана со овие етикети';
+$lang['%d photos are also linked to current tags'] = '%d фотографии се поврзани со овие етикети';
+$lang['About'] = 'Помош';
+$lang['All tags'] = 'Сите етикети';
+$lang['Any tag'] = 'Било која етикета';
+$lang['At least one listed rule must be satisfied.'] = 'Барем едно правило треба да биде исполнето.';
+$lang['Author'] = 'Автор';
+$lang['Albums'] = 'Категории';
+$lang['Album'] = 'Категорија';
+$lang['Close this window'] = 'Затвори го овој прозор';
+$lang['Complete RSS feed (photos, comments)'] = 'Комплетен RSS feed (фотографии и коментари)';
+$lang['Confirm Password'] = 'Потврдете ја лозинката';
+$lang['Connection settings'] = 'Најавете се со вашето корисничко име и лозинка';
+$lang['Login'] = 'Најави се';
+$lang['Contact webmaster'] = '<a href="http://forum.avijacija.com.mk">Побарај помош тука.</a>';
+$lang['Create a new account'] = 'Зачлени се';
+$lang['Created on'] = 'Фотографирана во';
+$lang['Creation date'] = 'дата на создавање';
+$lang['Current password is wrong'] = 'Сегашната лозинка е погрешна';
+$lang['Dimensions'] = 'Димензии';
+$lang['Display'] = 'Преглед';
+$lang['Each listed rule must be satisfied.'] = 'Секое наведено правило мора да биде исполнето.';
+$lang['Email address is missing. Please specify an email address.'] = 'Email адресата недостасува.';
+$lang['Email address'] = 'Email адреса';
+$lang['Enter your personnal informations'] = 'Внесете ги вашите лични податоци';
+$lang['Error sending email'] = 'Грешка при испраќањето email.';
+$lang['File name'] = 'име на датотека';
+$lang['File'] = 'Датотека';
+$lang['Filesize'] = 'Големина';
+$lang['Filter and display'] = 'Пребарај и покажи ми';
+$lang['Filter'] = 'Филтер на пребарување';
+$lang['Forgot your password?'] = 'Ја заборави лозинката?';
+$lang['Go through the gallery as a visitor'] = 'Почетна страница';
+$lang['Help'] = 'Help';
+$lang['Identification'] = 'Корисник';
+$lang['Photos only RSS feed'] = 'Парцијален RSS feed (фотографии)';
+$lang['Keyword'] = 'Клучен збор';
+$lang['Links'] = 'Линкови';
+$lang['N/A'] = 'Не е познат';
+$lang['New on %s'] = 'Нова на %s';
+$lang['Notification'] = 'RSS';
+$lang['Number of items'] = 'Број на елементи';
+$lang['Original dimensions'] = 'Оригинални димензии';
+$lang['Password forgotten'] = 'Заборавена лозинка';
+$lang['Password'] = 'Лозинка';
+$lang['Piwigo Help'] = 'Често поставувани прашања';
+$lang['Post date'] = 'дата на испраќање';
+$lang['Posted on'] = 'Објавена во';
+$lang['Profile'] = 'Профил';
+$lang['Quick connect'] = 'Брзо најавување';
+$lang['RSS feed'] = 'RSS feed';
+$lang['Register'] = 'Зачлени се';
+$lang['Registration'] = 'Регистрирање на нов корисник';
+$lang['Related tags'] = 'Соодветни етикети';
+$lang['Reset'] = 'Избриши';
+$lang['Retrieve password'] = 'Врати ја лозинката';
+$lang['Search rules'] = 'Правила на пребарување';
+$lang['Search tags'] = 'Барај етикети';
+$lang['Search'] = 'Пребарување';
+$lang['display available tags'] = 'Погледни ги етикетите';
+$lang['Since'] = 'Од';
+$lang['Sort by'] = 'Подреди ги по';
+$lang['Sort order'] = 'Подредување по';
+$lang['Tag'] = 'Етикета';
+$lang['Tags'] = 'Етикети';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Really Simple Syndication функцијата обезбедува известувања кога се прикачуваат нови фотографии и пишуваат нови коментари. Потребно е да имате RSS feed reader. Повеќе информации може да најдете <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">тука.</a>';
+$lang['Unknown feed identifier'] = 'Непознат feed.';
+$lang['User comments'] = 'Коментари од корисниците';
+$lang['Username'] = 'Член';
+$lang['Visits'] = 'Погледи';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Недела %d';
+$lang['About Piwigo'] = 'Помош за користење на галеријата';
+$lang['You are not authorized to access the requested page'] = 'You are not authorized to access the requested page';
+$lang['add this photo to your favorites'] = 'Додај ја фотографијата во твоите омилени';
+$lang['Administration'] = 'Администрација';
+$lang['all'] = 'сите';
+$lang['ascending'] = 'хоризонтален ред';
+$lang['author(s) : %s'] = 'автор(и) : %s';
+$lang['Expand all albums'] = 'Отвори ги сите категории на насловната';
+$lang['posted after %s (%s)'] = 'објавено по %s (%s)';
+$lang['posted before %s (%s)'] = 'објавено пред %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'објавено помеѓу %s (%s) и %s (%s)';
+$lang['posted on %s'] = 'објавено на %s';
+$lang['Best rated'] = 'Најдобро рангирани';
+$lang['display best rated photos'] = 'Ги покажува најдобро рангираните фотографии';
+$lang['Calendar'] = 'Календар';
+$lang['All'] = 'Сите';
+$lang['display each day with photos, month per month'] = 'Ги покажува фотографиите сортирани по ден, недела и месец';
+$lang['View'] = 'Преглед';
+$lang['chronology_monthly_calendar'] = 'Месечен календар';
+$lang['chronology_monthly_list'] = 'Месечна листа';
+$lang['chronology_weekly_list'] = 'Неделна листа';
+$lang['Click here if your browser does not automatically forward you'] = 'Кликнете тука доколку не сакате вашиот прелистувач автоматски да ве пренасочи';
+$lang['comment date'] = 'дата на коментар';
+$lang['Comment'] = 'Коментар';
+$lang['Your comment has been registered'] = 'Вашиот коментар е додаден.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Се обидовте да додадете премногу коментари. Почекајте 30 секунди и обидете се повторно.';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Твојот коментар не беше додаден по прегледувањето од администрацијата.';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Твојот коментар мора да биде прегледан од администрацијата пред да биде објавен.';
+$lang['This login is already used by another user'] = 'Корисничкото име веќе се користи. Обиди се со друго.';
+$lang['Comments'] = 'Коментари';
+$lang['Add a comment'] = 'Додај коментар';
+$lang['created after %s (%s)'] = 'создадена по %s (%s)';
+$lang['created before %s (%s)'] = 'создадена пред %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'создадена помеѓу %s (%s) и %s (%s)';
+$lang['created on %s'] = 'создадена на %s';
+$lang['Customize'] = 'Кориснички панел';
+$lang['Your Gallery Customization'] = 'Твои подесувања во корисничкиот панел';
+$lang['day'][0] = 'недела';
+$lang['day'][1] = 'понеделник';
+$lang['day'][2] = 'вторник';
+$lang['day'][3] = 'среда';
+$lang['day'][4] = 'четврток';
+$lang['day'][5] = 'петок';
+$lang['day'][6] = 'сабота';
+$lang['Default'] = 'основа';
+$lang['delete this photo from your favorites'] = 'Избриши ја фотографијата од твоите омилени';
+$lang['Delete'] = 'Избриши';
+$lang['descending'] = 'вертикален ред';
+$lang['Download'] = 'зачувај';
+$lang['Download this file'] = 'зачувај ја оваа датотека';
+$lang['edit'] = 'уреди';
+$lang['wrong date'] = 'погрешна дата';
+$lang['excluded'] = 'исклучено';
+$lang['Your favorites'] = 'Мои омилени';
+$lang['display your favorites photos'] = 'Ги покажува твоите омилени фотографии';
+$lang['Favorites'] = 'Омилени фотографии';
+$lang['First'] = 'Прва';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Прикачувањето на галерија моментално е оневозможено, поради обнова. Во меѓувреме прегледувањето е дозволено.';
+$lang['Page generated in'] = 'Страницата беше генерирана за';
+$lang['guest'] = 'гостин';
+$lang['Hello'] = 'Здраво';
+$lang['available for administrators only'] = 'Пристапот не е дозволен.';
+$lang['display this album'] = 'Покажи фотографии од коренот на оваа категорија';
+$lang['display last user comments'] = 'Погледни ги последните коментари од членовите';
+$lang['customize the appareance of the gallery'] = 'Промени ги твоите лични подесувања';
+$lang['search'] = 'барај';
+$lang['Home'] = 'Почетна';
+$lang['Identification'] = 'Профил';
+$lang['in this album'] = 'во оваа категорија';
+$lang['in %d sub-album'] = 'во %d подкатегорија';
+$lang['in %d sub-albums'] = 'во %d подкатегории';
+$lang['included'] = 'вклучено';
+$lang['Invalid password!'] = 'Лозинката е погрешна!';
+$lang['Language']='Јазик';
+$lang['last %d days'] = 'последните %d дена';
+$lang['Last'] = 'Последна';
+$lang['Logout'] = 'Одјави се';
+$lang['obligatory'] = 'Полињата обележани со звездичка се задолжителни за пополнување';
+$lang['Maximum photo height'] = 'Максимална висина на фотографиите';
+$lang['Maximum height must be a number superior to 50'] = 'Максималната висина мора да е број поголем од 50';
+$lang['Maximum photo width'] = 'Максимална ширина на фотографиите';
+$lang['Maximum width must be a number superior to 50'] = 'Максималната ширина мора да е број поголем од 50';
+$lang['display a calendar by creation date'] = 'Го покажува календарот по дата на создавање';
+$lang['display all photos in all sub-albums'] = 'Ги покажува сите елементи во сите подкатегории';
+$lang['return to normal view mode'] = 'Врати се кон нормалниот преглед';
+$lang['display a calendar by posted date'] = 'Го покажува календарот по дата на испраќање';
+$lang['month'][10] = 'октомври';
+$lang['month'][11] = 'ноември';
+$lang['month'][12] = 'декември';
+$lang['month'][1] = 'јануари';
+$lang['month'][2] = 'февруари';
+$lang['month'][3] = 'март';
+$lang['month'][4] = 'април';
+$lang['month'][5] = 'мај';
+$lang['month'][6] = 'јуни';
+$lang['month'][7] = 'јули';
+$lang['month'][8] = 'август';
+$lang['month'][9] = 'септември';
+$lang['Most visited'] = 'Најпосетени';
+$lang['display most visited photos'] = 'Ги покажува најпосетените фотографии';
+$lang['Unknown identifier'] = 'Unknown identifier';
+$lang['New password'] = 'Нова лозинка';
+$lang['Rate this photo'] = 'Оцени ја фотографијата';
+$lang['Next'] = 'Следна';
+$lang['no rate'] = 'Никој не ја оценал досега';
+$lang['Photos posted within the last %d day.'] = 'Се прикажуваат само фотографии испратени во последниот %s ден.';
+$lang['Photos posted within the last %d days.'] = 'Се прикажуваат само фотографии испратени во последните %s дена.';
+$lang['password updated'] = 'лозинката е обновена';
+$lang['Recent period must be a positive integer value'] = 'Мора да внесеш позитивен број.';
+$lang['photo'] = 'фотографија';
+$lang['Click on the photo to see it in high definition'] = 'Кликни на фотографијата за поголема димензија';
+$lang['Show file metadata'] = 'Покажи метадата за датотеката';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'Подесувања';
+$lang['Previous'] = 'Претходна';
+$lang['Random photos'] = 'Случајни фотографии';
+$lang['display a set of random photos'] = 'Ги покажува случајните фотографии';
+$lang['Recent albums'] = 'Нови категории';
+$lang['display recently updated albums'] = 'Ги покажува најновите категории';
+$lang['Recent period'] = 'До колку денови фотографиите ги сметате за "нови"?';
+$lang['Recent photos'] = 'Нови фотографии';
+$lang['display most recent photos'] = 'Ги покажува најновите фотографии';
+$lang['Redirection...'] = 'Префрлувам...';
+$lang['Please, enter a login'] = 'Внесете корисничко име';
+$lang['login mustn\'t end with a space character'] = 'Корисничкото име не може да завршува со space место';
+$lang['login mustn\'t start with a space character'] = 'Корисничкото име не може да започнува со space место';
+$lang['this login is already used'] = 'Корисничкото име веќе постои. Ве молиме одберете друго.';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-mail адресата мора да изгледа вака xxx@yyy.eee (пример: pero@makedonija.com.mk)';
+$lang['Auto login'] = 'Логирај ме автоматски на секоја моја посета';
+$lang['remove this tag from the list'] = 'избриши ја оваа етикета од листата';
+$lang['representative'] = 'главна икона';
+$lang['search'] = 'Пребарување';
+$lang['Search for Author'] = 'Барај по автор';
+$lang['Search in albums'] = 'Барај по категории';
+$lang['Search by date'] = 'Барај по дата';
+$lang['Date'] = 'Почетна дата';
+$lang['End-Date'] = 'Крајна дата';
+$lang['Kind of date'] = 'Барај по';
+$lang['Search for words'] = 'Барај по зборови';
+$lang['Search for all terms'] = 'Барај по сите термини ';
+$lang['Search for any term'] = 'Барај по било кој термин';
+$lang['Empty query. No criteria has been entered.'] = 'Не внесовте ниту еден збор.';
+$lang['Search results'] = 'Резултати од пребарувањето';
+$lang['Search in sub-albums'] = 'Барај по подкатегории';
+$lang['searched words : %s'] = 'барани зборови : %s';
+$lang['Contact'] = 'Контакт';
+$lang['set as album representative'] = 'Намести ја како главна икона за категорија';
+$lang['Show number of comments'] = 'Покажи го бројот на коментарите?';
+$lang['Show number of hits'] = 'Покажи го бројот на прегледи?';
+$lang['slideshow'] = 'Презентација';
+$lang['stop the slideshow'] = 'Стопирај ја презентацијата';
+$lang['Specials'] = 'Функции';
+$lang['SQL queries in'] = 'SQL queries in';
+$lang['display only recently posted photos'] = 'Прикажи ги само новите фотографии';
+$lang['return to the display of all photos'] = 'Врати се кон прикажување на сите фотографии';
+$lang['the beginning'] = 'почетокот';
+$lang['Thumbnails'] = 'Сликички';
+$lang['Menu'] = 'Систем';
+$lang['A comment on your site'] = 'Коментар на твојата страна';
+$lang['today'] = 'денес';
+$lang['Update your rating'] = 'Обнови ја твојата оценка';
+$lang['the username must be given'] = 'корисничкото име мора да биде наведено';
+$lang['useful when password forgotten'] = 'Внесете постоечка и валидна e-mail адреса';
+$lang['Quick search'] = 'Брзо пребарување';
+$lang['Connected user: %s'] = 'Приклучен корисник: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Прелистувач: %s';
+$lang['Author: %s'] = 'Автор: %s';
+$lang['Comment by %s'] = 'Коментар од %s';
+$lang['User: %s'] = 'Корисник: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registration of %s';
+$lang['Album: %s'] = 'Категорија: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Грешка при најавувањето како гостин.';
+$lang['Submit'] = 'Поднесува';
+$lang['Yes'] = 'Да';
+$lang['No'] = 'Не';
+$lang['Comment: %s'] = 'Коментар: %s';
+$lang['Album results for'] = 'Резултат на Албуми за';
+$lang['Tag results for'] = 'Таг резултати за';
+$lang['from %s to %s'] = 'од %s до %s';
+$lang['Play of slideshow'] = 'Пушти ја проекцијата';
+$lang['Pause of slideshow'] = 'Паузирај ја проекцијата';
+$lang['Repeat the slideshow'] = 'Повтори ја проекцијата';
+$lang['Not repeat the slideshow'] = 'Не ја повторувај проекцијата';
+$lang['Reduce diaporama speed'] = 'Намали ја брзината на проекцијата';
+$lang['Accelerate diaporama speed'] = 'Забрзај ја брзината на проекцијата';
+$lang['Rank'] = 'Оцени';
+$lang['group by letters'] = 'групирај по букви';
+$lang['letters'] = 'букви';
+$lang['show tag cloud'] = 'прикажи го облакот на тагови';
+$lang['cloud'] = 'Облак';
+$lang['Reset to default values'] = 'Врати на оригинални вредности';
+$lang['delete all photos from your favorites'] = 'Избриши ги сите слики од Омилени';
+$lang['Sent by'] = 'Прати по';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Колачиња се блокирани или не се подржани од вашиот прелистувач. Мора да овозможите колачиња за да се логирате.';
+$lang['Edit a comment'] = 'Промени коментар';
+$lang['Are you sure?'] = 'Дали сте сигурни?';
+$lang['(!) This comment requires validation'] = '(!) Потребна е валидација за овој коментар';
+$lang['Welcome'] = 'Дојбедојдовте';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Дојбедојдовте во вашата Piwigo фото галерија!';
+$lang['... or browse your empty gallery'] = '... или прелистајте ја вашата празна галерија';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... или ве молам деактивирајте ја оваа порака, сам ќе се снајдам';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hello %s, your Piwigo photo gallery is empty!';
+$lang['I want to add photos'] = 'Сакам да додадам слики';
+$lang['Manage this user comment: %s'] = 'Раководи со коментарот на овој корисник: %s';
+$lang['This author modified following comment:'] = 'Овој автор го променил следниов коментар:';
+$lang['This author removed the comment with id %d'] = 'Овој автор го отстранил коментарот со бројот %d';
+$lang['photos posted during the last %d days'] = 'слики објавени во последните %d денови';
+$lang['this email address is already in use'] = 'Друг корисник ја користи постоечката е-пошта';
+$lang['display photos linked to this tag'] = 'Поглед кон слики поврзани само со овој таг';
+
+$lang['Change my password'] = 'Промени ја мојата лозинка';
+$lang['Check your email for the confirmation link'] = 'Проверете ја електронската пошта каде што ке најдеш link за потврда';
+$lang['Edit'] = 'Промени';
+$lang['Enter your new password below.'] = 'Внесете ја новата лозинка подолу.';
+$lang['Hello %s,'] = 'Здраво %s,';
+$lang['Here are your connection settings'] = 'Еве ги вашите поднесувања за поврзување';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ако ова беше грешка, ништо нема да се случи едноставно игнорирајте је пораката.';
+$lang['Invalid key'] = 'Погрешен клуч';
+$lang['Invalid username or email'] = 'Погрешно корисничко име или електронска адреса';
+$lang['Manual sort order'] = 'Рачно наместен распоред';
+$lang['Mobile'] = 'Мобилен';
+$lang['Number of photos per page'] = 'Број на слики по страна';
+$lang['Original'] = 'Оригинал';
+$lang['Password Reset'] = 'Ресетирање на лозинката';
+$lang['Password reset is not allowed for this user'] = 'За овој корисник е забрането ресетирање на лозинката';
+$lang['Password: %s'] = 'Лозинка: %s';
+$lang['Photo sizes'] = 'Големина на сликата';
+$lang['Please enter your username or email address.'] = 'Ве молам внесете го корисничкото име или електронската адреса.';
+$lang['Return to home page'] = 'Назад на домашната страна';
+$lang['Send my connection settings by email'] = 'Пратете ми ги поврзувачките поднесувања преку електронска пошта';
+$lang['Show latest comments first'] = 'Првин покажи го последниот коментар';
+$lang['Show oldest comments first'] = 'Првин покажи ги постарите коментари';
+$lang['Thank you for registering at %s!'] = 'Ви благодариме за регистрирањето во %s!';
+$lang['The passwords do not match'] = 'Лозинките не се совпаѓаат';
+$lang['To reset your password, visit the following address:'] = 'За да ја промеените лозинката, посетете ја следнава адреса:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Корисникот "%s" нема електронска адреса, затоа не е возможна промената на лозинката';
+$lang['Username "%s" on gallery %s'] = 'Корисничко име "%s" на галерија %s';
+$lang['Username modification'] = 'Промена на корисничко име';
+$lang['Username or email'] = 'Корисничко име или електронска пошта';
+$lang['View in'] = 'Види во';
+$lang['You will receive a link to create a new password via email.'] = 'Преку електронска пошта ке добиете линк каде што ке треирате нова лозинка.';
+$lang['Your password has been reset'] = 'Вашата лозинка беше променета';
+$lang['Your username has been successfully changed to : %s'] = 'Вашето корисничко име успешно е променето во : %s';
+$lang['large'] = 'L - големо';
+$lang['medium'] = 'M - Средно';
+$lang['small'] = 'S - мало';
+$lang['square'] = 'Квадрат';
+$lang['xlarge'] = 'XL - екстра големо';
+$lang['xsmall'] = 'XS - екстра мало';
+$lang['xxlarge'] = 'XXL - огромно';
+$lang['2small'] = 'XXS - ситно.';
+$lang['Date created, new &rarr; old'] = 'Дата на креирање, ново &rarr;старо';
+$lang['Date created, old &rarr; new'] = 'Дата на крирање, старо &rarr;ново ';
+$lang['Date posted, new &rarr; old'] = 'Дата на поставување, ново &rarr;старо';
+$lang['Desktop'] = 'Работна површина';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ако сметате дека по грешка сте ја добиле пораката, Ве молиме контактирајте не на %s';
+$lang['Rating score'] = 'Рејтинг листа';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Некој побара да се промени лозинката за следново корисничко име:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Успешно се регистриравте, наскоро ке добиете електронска пошта со вашите поднесувања за поврзување. Добродојдовте!';
+$lang['The number of photos per page must be a not null scalar'] = 'Броевите на фотографиите по страна треба да бидат nonzero integer';
+$lang['Username: %s'] = 'Корисничко име: %s';
+$lang['html tags are not allowed in login'] = 'со логирање не се дозволени html тагови';
+?>
Index: /tags/2.6.0RC1/language/mk_MK/index.php
===================================================================
--- /tags/2.6.0RC1/language/mk_MK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mk_MK/index.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id$
+// | last update   : $Date$
+// | last modifier : $Author$
+// | revision      : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/mk_MK/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mk_MK/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mk_MK/install.lang.php	(revision 25596)
@@ -0,0 +1,36 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Администраторски поднесувања';
+$lang['Basic configuration'] = 'Основни поднесувања';
+$lang['Congratulations, Piwigo installation is completed'] = 'Браво, Piwago инсталацијата е завршена';
+$lang['Database configuration'] = 'Конфигурација на датабаза';
+$lang['Database name'] = 'Име на датабазата';
+$lang['Default gallery language'] = 'Основен јазик на галеријата';
+$lang['Hope to see you back soon.'] = 'Се надеваме дека ќе се видиме наскоро.';
+$lang['Installation'] = 'Инсталација';
+$lang['Sorry!'] = 'Извини !';
+$lang['Start Install'] = 'Стартувај ја инсталацијата';
+$lang['Try to configure PHP 5'] = 'Пробај да го сетираш PHP 5';
+$lang['User'] = 'Корисник';
+?>
Index: /tags/2.6.0RC1/language/mk_MK/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/mk_MK/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/mk_MK/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Македонски [MK]
Index: /tags/2.6.0RC1/language/mn_MN/about.html
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+<p>Энэхүү гэрэл зургын галерей нь Piwigo дээр суурилсан болно.</p>
+
+<p>Piwigo - энэ бол гэрэл зургын вэб галерей бүтээхэд зориулсан программ
+бөгөөд идэвхтэй хэрэглэгчид болон программ хөгжүүлэгчдийн хамтын бүтээл юм.
+Төрөл бүрийн нэмэлт өргөтгөлүүд нь Piwigo-г илүү уян хатан, олон төрлийн өөрчлөлт хийх боломжийг олгодог.
+Piwigo-н хамгийн гол үнэ цэнэ нь нээлттэй эх кодтой, үнэгүй программ гэдэгтээ байдаг билээ.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Piwigo-н вэб сайт</a></p>
+
+<p> Монгол хэл уруу орчуулж хувь нэмэрээ оруулсан хүмүүс (цагаан толгойн дарааллаар):
+
+    <ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=18974">Ulzii</a></li>
+
+    </ul>
+            Орчуулга хийж хувь нэмэрээ оруулсан хүн бүхэнд талархал илэрхийлье!</p>
Index: /tags/2.6.0RC1/language/mn_MN/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/admin.lang.php	(revision 25596)
@@ -0,0 +1,355 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Zoom'] = 'Томсгох';
+$lang['add a new watermark'] = 'шинээр усан хээ нэмэх';
+$lang['average time'] = 'дундаж хугацаа';
+$lang['bottom left corner'] = 'зүүн доод булан';
+$lang['bottom right corner'] = 'баруун доод булан';
+$lang['clean'] = 'цэвэрлэх';
+$lang['create a new album'] = 'шинэ цомог үүсгэх';
+$lang['create a new site'] = 'шинэ сайт үүсгэх';
+$lang['default values'] = 'үндсэн утга';
+$lang['delete'] = 'устгах';
+$lang['delete album'] = 'цомогыг устгах';
+$lang['delete photo'] = 'зургыг устгах';
+$lang['deleted'] = 'устсан';
+$lang['Email'] = 'Имэйл';
+$lang['jump to album'] = 'цомог уруу очих';
+$lang['jump to photo'] = 'зураг уруу очих';
+$lang['guest'] = 'зочин';
+$lang['new'] = 'шинэ';
+$lang['number of miniaturized photos'] = 'үүсгэсэн дүрс зургын тоо';
+$lang['other'] = 'бусад';
+$lang['photos per page'] = 'нэг хуудсанд харагдах зураг';
+$lang['ranks'] = 'түвшин';
+$lang['registered users'] = 'бүртгүүлсэн хэрэглэгчид';
+$lang['registration date'] = 'бүртгүүлсэн огноо';
+$lang['remove tags'] = 'түлхүүр үгийг хасах';
+$lang['remove this filter'] = 'энэ шүүлтүүрийг хасах';
+$lang['test'] = 'шалгах';
+$lang['status'] = 'байдал';
+$lang['sub-albums'] = 'дэд цомог';
+$lang['top left corner'] = 'зүүн дээд булан';
+$lang['top right corner'] = 'баруун дээд булан';
+$lang['total time'] = 'нийт хугацаа';
+$lang['user_status_admin'] = 'Админ';
+$lang['user_status_guest'] = 'Зочин';
+$lang['user_status_normal'] = 'Хэрэглэгч';
+$lang['user_status_webmaster'] = 'Вэбмастер';
+$lang['wrong filename'] = 'файлын нэр буруу байна';
+$lang['User'] = 'Хэрэглэгч';
+$lang['Thumbnail'] = 'Дүрс зураг';
+$lang['Thumbnails generation in progress...'] = 'Дүрс зургыг үүсгэж байна...';
+$lang['The whole page'] = 'Хуудсыг бүхэлд нь';
+$lang['This album contains no photo.'] = 'Энэ цомог хоосон байна';
+$lang['The name of an album must not be empty'] = 'Цомогын нэр хоосон байх ёсгүй';
+$lang['The gallery URL is not valid.'] = 'Цомогны URL холбоос буруу байна';
+$lang['The following tag was deleted'] = 'Дараахь түлхүүр үг устлаа';
+$lang['Settings'] = 'Тохиргоо';
+$lang['Tag "%s" was added'] = '"%s" гэсэн түлхүүр үгийг амжилттай нэмлээ';
+$lang['Tag "%s" already exists'] = '"%s" гэсэн түлхүүр үг бүртгэгдсэн байна';
+$lang['Send mail on HTML format'] = 'Мэйлийг HTML хэлбэрээр илгээх';
+$lang['Representant'] = 'Цомогны дүрс зураг';
+$lang['Representation of albums'] = 'Цомогны дүрс зураг';
+$lang['Representative'] = 'Цомогны дүрс зураг';
+$lang['Save Settings'] = 'Тохиргоог хадаглах';
+$lang['Searching...'] = 'Хайж байна...';
+$lang['Select a file'] = 'Файлаа сонгоно уу';
+$lang['Select an album'] = 'Цомогоо сонгоно уу';
+$lang['Reject'] = 'Цуцлах';
+$lang['Refresh'] = 'Сэргээх';
+$lang['Rating'] = 'Үнэлгээ';
+$lang['Photo name'] = 'Зургын нэр';
+$lang['Path'] = 'Байршил';
+$lang['Photos'] = 'Зураг';
+$lang['No photo in this album'] = 'Энэ цомог хоосон байна';
+$lang['Number of downloads'] = 'Татсан тоо';
+$lang['Operating system'] = 'Үйлдлийн систем';
+$lang['New Version'] = 'Шинэ хувилбар';
+$lang['New name'] = 'Шинэ нэр';
+$lang['Members'] = 'Гишүүд';
+$lang['Modify information'] = 'Мэдээллийг засах';
+$lang['Month'] = 'Сар';
+$lang['Move'] = 'Зөөх';
+$lang['Move albums'] = 'Цомогыг зөөх';
+$lang['Move to album'] = 'Цомог уруу зөөх';
+$lang['Informations'] = 'Мэдээлэл';
+$lang['Install'] = 'Суулгах';
+$lang['Installed Languages'] = 'Идэвхтэй байгаа хэл';
+$lang['Languages'] = 'Хэл';
+$lang['Languages which need upgrade'] = 'Шинэчлэх шаардлагатай хэл';
+$lang['Level 2'] = 'Найз нөхөд';
+$lang['Level 4'] = 'Гэр бүлийн гишүүн';
+$lang['Level 8'] = 'Админ';
+$lang['List'] = 'Жагсаалт';
+$lang['Image Quality'] = 'Зургын чанар';
+$lang['Forbidden'] = 'Хориотой';
+$lang['GD version'] = 'GD хувилбар';
+$lang['Group'] = 'Бүлэг';
+$lang['Group name'] = 'Бүлгийн нэр';
+$lang['Groups'] = 'Бүлэг';
+$lang['Guests'] = 'Зочин';
+$lang['Height'] = 'Өндөр';
+$lang['Hide'] = 'Нуух';
+$lang['High definition'] = 'Өндөр нарийвчлалтай';
+$lang['Hour'] = 'Цаг';
+$lang['File'] = 'Файл';
+$lang['Edit photo'] = 'Зургыг засах';
+$lang['Error list'] = 'Алдааны жагсаалт';
+$lang['Everybody'] = 'Бүх хүн';
+$lang['Edit photo information'] = 'Зурагны мэдээллийг засах';
+$lang['Edit album'] = 'Цомогыг засах';
+$lang['ERROR'] = 'АЛДАА';
+$lang['Correction'] = 'Засвар';
+$lang['Create'] = 'Үүсгэх';
+$lang['Delete this language'] = 'Энэ хэлийг устгах';
+$lang['Delete selected photos'] = 'Сонгосон зургуудыг устгах';
+$lang['Delete Representant'] = 'Цомогны дүрс зургыг устгах';
+$lang['Day'] = 'Өдөр';
+$lang['Date'] = 'Огноо';
+$lang['Configuration'] = 'Тохиргоо';
+$lang['Check all'] = 'Бүгдийг сонгох';
+$lang['Cancel'] = 'Цуцлах';
+$lang['Average rate'] = 'Дундаж үнэлгээ';
+$lang['Album name'] = 'Цомогын нэр';
+$lang['Active Plugins'] = 'Идэвхтэй байгаа өргөтгөл';
+$lang['Add'] = 'Нэмэх';
+$lang['Add New Language'] = 'Шинэ хэл нэмэх';
+$lang['Add Photos'] = 'Зураг нэмэх';
+$lang['Add a tag'] = 'Түлхүүр үг нэмэх';
+$lang['Add a user'] = 'Хэрэглэгч нэмэх';
+$lang['Add tags'] = 'Түлхүүр үгс нэмэх';
+$lang['Active Languages'] = 'Идэвхтэй байгаа хэл';
+$lang['%d week'] = '%d долоо хоног';
+$lang['%d weeks'] = '%d долоо хоног';
+$lang['%d year'] = '%d жил';
+$lang['%d years'] = '%d жил';
+$lang['%s ago'] = '%d хоногын өмнө';
+$lang['A new version of Piwigo is available.'] = 'Piwigo-н шинэ хувилбар гарсан байна.';
+$lang['%d second'] = '%d секунд';
+$lang['%d seconds'] = '%d секунд';
+$lang['%d day'] = '%d өдөр';
+$lang['%d days'] = '%d хоног';
+$lang['%d hour'] = '%d цаг';
+$lang['%d hours'] = '%d цаг';
+$lang['%d photo was deleted'] = '%d зургыг устаглаа';
+$lang['%d albums moved'] = '%d цомогуудыг амжилттай зөөлөө';
+$lang['%d album moved'] = '%d цомогыг амжилттай зөөлөө';
+$lang['%d guest'] = '%d зочин';
+$lang['%d guests'] = '%d зочин';
+$lang['%d mail was not sent.'] = '%d мэйлийг илгээж чадсангүй.';
+$lang['%d mail was sent.'] = '%d мэйлийг амжилттай илгээлээ.';
+$lang['%d mails were not sent.'] = '%d мэйлийг илгээж чадсангүй.';
+$lang['%d mails were sent.'] = '%d мэйлийг амжилттай илгээлээ.';
+$lang['%d month'] = '%d сар';
+$lang['%d months'] = '%d сар';
+$lang['%d minute'] = '%d минут';
+$lang['%d minutes'] = '%d минут';
+$lang['%d member'] = '%d гишүүн';
+$lang['%d members'] = '%d гишүүн';
+$lang['%d anomalies have been detected.'] = '%d алдаа илэрлээ.';
+$lang['%d anomalies have not been corrected.'] = '%d алдаа засагдаагүй байна.';
+$lang['%d anomaly has been corrected.'] = '%d алдааг заслаа.';
+$lang['%d anomaly has been detected.'] = '%d алдаа илэрлээ.';
+$lang['%d anomaly has not been corrected.'] = '%d алдаа засагдаагүй байна.';
+$lang['%d anomalies have been detected corrected.'] = '%d алдааг илрүүлж заслаа.';
+$lang['Select users...'] = 'Хэрэглэгчийг сонгох...';
+$lang['User status'] = 'Хэрэглэгчийн байдал';
+$lang['Subscribe/unsubscribe users'] = 'Хэрэглэгчийг бүртгэх/бүртгэлээс хасах';
+$lang['Select at least one user'] = 'Дор хаяж нэг хэрэглэгчийг сонгоно уу';
+$lang['Users'] = 'Хэрэглэгчид';
+$lang['%d group'] = '%d бүлэг';
+$lang['Toggle \'default group\' property'] = 'Үндсэн бүлгийн тохиргоог сэргээх';
+$lang['This name is already used by another group.'] = 'Уучлаарай. Ийм нэртэй бүлэг үүссэн байна.';
+$lang['Please select at least two groups'] = 'Дор хаяж хоёр бүлэг сонгоно уу';
+$lang['Send an information email to group members'] = 'Мэдээллийг бүлгийн гишүүдэд имэйлээр илгээх';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Бүлгийн нэрэнд " or \' гэсэн үг эсвэл нэр огт хоосон байж болохгүй.';
+$lang['Select groups...'] = 'Бүлгийг сонгох...';
+$lang['Type here the name of the new group'] = 'Шинэ бүлгийн нэрээ энд бичнэ үү';
+$lang['dissociate from group'] = 'бүлгээс хасах';
+$lang['group "%s" added'] = '"%s" бүлгийг амжилттай нэмлээ';
+$lang['group "%s" deleted'] = '"%s" бүлгийг устаглаа';
+$lang['group "%s" updated'] = '"%s" бүлгийг амжилттай шинэчиллээ';
+$lang['associate to group'] = 'бүлэгт нэмэх';
+$lang['%d groups'] = '%d бүлэг';
+$lang['Merge selected groups'] = 'Сонгосон бүлгүүдийг нэгтгэх';
+$lang['Group management'] = 'Бүлгийн удирдлага';
+$lang['Groups and users'] = 'Бүлэг ба хэрэглэгчид';
+$lang['An information email was sent to group "%s"'] = '"%s" бүлэг уруу мэдээллийг имэйлээр амжилттай илгээлээ';
+$lang['There is no group in this gallery.'] = 'Энэ цомогт ямар нэгэн бүлэг хамааралгүй байна.';
+$lang['Add group'] = 'Бүлэг нэмэх';
+$lang['Album updated successfully'] = 'Цомогыг амжилттай шинэчиллээ';
+$lang['Administration Home'] = 'Админы үндсэн хуудас';
+$lang['ACCESS_5'] = 'Эрх байхгүй';
+$lang['%d users deleted'] = '%d хэрэглэгчийг устаглаа';
+$lang['%d users'] = '%d хэрэглэгч';
+$lang['%d user deleted'] = '%d хэрэглэгчийг устаглаа';
+$lang['%d user'] = '%d хэрэглэгч';
+$lang['Drop into album'] = 'Цомогоо сонгоно уу';
+$lang['Dump Database'] = 'Мэдээллийг санг устгах';
+$lang['Download,'] = 'Татаж авах,';
+$lang['Delete selected tags'] = 'Сонгосон түлхүүр үгсийг устгах';
+$lang['Delete selected users'] = 'Сонгосон хэрэглэгчдийг устгах';
+$lang['Database'] = 'Өгөгдлийн сан';
+$lang['Can\'t connect to server.'] = 'Сервертэй холбогдох боломжгүй байна.';
+$lang['By rank'] = 'Үнэлгээгээр';
+$lang['Are you sure you want to delete this plugin?'] = 'Энэ нэмэлт өргөтгөлийг устгана гэдэгтээ итгэлтэй байна уу?';
+$lang['Are you sure you want to install this plugin?'] = 'Энэ нэмэлт өргөтгөлийг суулгана гэдэгтээ итгэлтэй байна уу?';
+$lang['%d of %d photos selected'] = '%d (нийт %d-с) зураг сонгосон байна';
+$lang['Link all album photos to some existing albums'] = 'Энэ цомогны зурагнуудыг өөр цомогтой холбох';
+$lang['Link all album photos to a new album'] = 'Энэ цомогны зурагнуудыг шинэ цомогтой холбох';
+$lang['New photos were added'] = 'Шинэ зурагнууд нэмэгдлээ';
+$lang['Manage photo ranks'] = 'Зурагны дараалал';
+$lang['New photos added'] = 'Шинэ зурагнууд нэмэгдлээ';
+$lang['%d photos were deleted'] = '%d зургыг устаглаа';
+$lang['(this tag will be deleted)'] = '(энэ түлхүүр үг устах болно)';
+$lang['Name'] = 'Нэр';
+$lang['Language has been successfully installed'] = 'Хэлийг амжилттай нэмлээ';
+$lang['Hello'] = 'Сайн байна уу';
+$lang['Hello,'] = 'Сайн байна уу, ';
+$lang['History'] = 'Түүх';
+$lang['Edit tags'] = 'Түлхүүр үгсийг засах';
+$lang['Edit selected tags'] = 'Сонгосон түлхүүр үгсийг засах';
+$lang['Current name'] = 'Одоогын нэр';
+$lang['Confirm merge'] = 'Нэгтгэх';
+$lang['By %s'] = '%s-р';
+$lang['Password is missing. Please enter the password.'] = 'Уучлаарай. Нууц үгээ оруулна уу.';
+$lang['Parent album'] = 'Эх цомог';
+$lang['Parameter'] = 'Тохиргоо';
+$lang['Original file : %s'] = 'Эх хувь: %s';
+$lang['Original Size'] = 'Үндсэн хэмжээ';
+$lang['Tag selection'] = 'Түлхүүр үгсийг сонгох';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = '<em>%s</em> гэсэн түлхүүр үгсийг нэгтгэж <em>%s</em> болголоо';
+$lang['Select at least two tags for merging'] = 'Нэгтгэхийн тулд дор хаяж хоёр үг сонгоно уу';
+$lang['New tag'] = 'Шинэ түлхүүр үг';
+$lang['Merge tags'] = 'Түлхүүр үгсийг нэгтгэх';
+$lang['Maximum height'] = 'Өндрийн хязгаар';
+$lang['Maximum width'] = 'Өргөний хязгаар';
+$lang['Rated %d times, score : %.2f'] = '%d-н удаа үнэлсэн, оноо: %.2f';
+$lang['Rate date'] = 'Үнэлгээ өгсөн огноо';
+$lang['Private'] = 'Хувийн';
+$lang['Please wait...'] = 'Түр хүлээнэ үү...';
+$lang['Piwigo version'] = 'Piwigo-н хувилбар';
+$lang['No file was uploaded'] = 'Ямар ч файл хуулагдсангүй';
+$lang['General statistics'] = 'Ерөнхий байдал';
+$lang['Hit'] = 'Үзсэн';
+$lang['Guest Settings'] = 'Зочины тохиргоо';
+$lang['Help Me'] = 'Тусламж';
+$lang['IP'] = 'IP';
+$lang['Forbid this language to users'] = 'Хэрэглэгчид энэ хэлийг ашиглахыг хориглох';
+$lang['Edit album permissions'] = 'Цомогын тохиргоог засах';
+$lang['Edit ranks'] = 'Үнэлгээг засах';
+$lang['X Position'] = 'X-н байршил';
+$lang['Y Position'] = 'Y-н байршил';
+$lang['Year'] = 'Он';
+$lang['Width'] = 'Өргөн';
+$lang['Week starts on'] = 'Долоо хоног эхлэх өдөр';
+$lang['Webmaster cannot be deleted'] = 'Вебмастерийг устгах боломжгүй';
+$lang['Webmaster status is required.'] = 'Вебмастерийн эрх шаардлагатай';
+$lang['Who can see these photos?'] = 'Энэ зургийг хэн үзэх боломжтой вэ?';
+$lang['Who can see this photo?'] = 'Энэ зургийг хэн үзэх боломжтой вэ?';
+$lang['Manage tags'] = 'Түлхүүр үгсийг зохицуулах';
+$lang['%d tags'] = '%d -н түлхүүр үг';
+$lang['The %d following tags were deleted'] = 'Дараахь %d түлхүүр үгсийг устаглаа';
+$lang['All %d photos are selected'] = 'Нийт %d зураг сонгосон байна';
+$lang['Duplicate selected tags'] = 'Сонгосон түлхүүр үгсийг хувилах';
+$lang['Merge selected tags'] = 'Сонгосон түлхүүр үгсийг нэгтгэх';
+$lang['selection'] = 'сонголт';
+$lang['Select at least one album'] = 'Дор хаяж нэг цомог сонгоно уу';
+$lang['Select at least one comment'] = 'Дор хаяж нэг сэтгэгдэл сонгоно уу';
+$lang['Select at least one photo'] = 'Дор хаяж нэг зураг сонгоно уу';
+$lang['Select:'] = 'Сонгох:';
+$lang['leave'] = 'байгаагаар нь үлдээх';
+$lang['You need to confirm deletion'] = 'Устгана гэдэгээ баталгаажуулах шаардлагатай';
+$lang['confirm'] = 'баталгаажуулах';
+$lang['Deletions'] = 'Устгах';
+$lang['set to'] = 'өөрчлөх';
+$lang['You have %d orphan tags: %s.'] = 'Нийт %d -н сондгой түлхүүр үгс байна: %s.';
+$lang['Delete orphan tags'] = 'Сондгой түлхүүр үгсийг устгах';
+$lang['Orphan tags deleted'] = 'Сондгой түлхүүр үгсийг амжилттай устаглаа';
+$lang['Inactive Languages'] = 'Идэвхжүүлээгүй байгаа хэл';
+$lang['Album "%s" has been added'] = '"%s" цомогыг амжилттай нэмлээ';
+$lang['Album "%s" now contains %d photos'] = '"%s" цомогт нийт %d зураг байна';
+$lang['Level 1'] = 'Танилууд';
+$lang['Image id'] = 'Зургийн ID';
+$lang['Email administrators when a comment is deleted'] = 'Сэтгэгдэлийг устгахад админд мэйлээр мэдэгдэх';
+$lang['Email admins when a new user registers'] = 'Шинээр хэрэглэгч бүртгүүлэхэд админд мэйлээр мэдэгдэх';
+$lang['Documentation'] = 'Баримт бичиг';
+$lang['Add another set of photos'] = 'Өөр зурагнууд нэмэх';
+$lang['Uploaded Photos'] = 'Нэмэгдсэн зурагнууд';
+$lang['Upload Photos'] = 'Зураг нэмэх';
+$lang['%d albums including'] = 'Нийт %d цомог';
+$lang['first photo added on %s'] = 'анхны зураг оруулсан огноо: %s';
+$lang['Version'] = 'Хувилбар';
+$lang['Time'] = 'Хугацаа';
+$lang['Status'] = 'Байдал';
+$lang['Resize'] = 'Хэмжээг өөрчлөх';
+$lang['Rate'] = 'Үнэлэх';
+$lang['Level 0'] = '---';
+$lang['Lock'] = 'Түгжэх';
+$lang['Crop'] = 'Тасдах';
+$lang['An error has occured during upgrade.'] = 'Шинэчлэх явцад алдаа гарлаа.';
+$lang['Add a filter'] = 'Шүүлтүүр нэмэх';
+$lang['Activate'] = 'Идэвхжүүлэх';
+$lang['Watermark'] = 'Усан хээ';
+$lang['Rename'] = 'Нэрийг солих';
+$lang['Position'] = 'Байршил';
+$lang['Number of comments per page'] = 'Нэг хуудасанд харуулах сэтгэгдэлийн тоо';
+$lang['Number of albums per page'] = 'Нэг хуудасанд харуулах цомогийн тоо';
+$lang['Number of rates'] = 'Үнэлсэн тоо';
+$lang['Main Page'] = 'Үндсэн хуудас';
+$lang['Activate comments'] = 'Сэтгэгдэлийг идэвхжүүлэх';
+$lang['Description'] = 'Тайлбар';
+$lang['Comments for all'] = 'Бүх сэтгэгдэлүүд';
+$lang['Manage permissions for user "%s"'] = '"%s" хэрэглэгчийн эрхийг зохицуулах';
+$lang['Manage permissions for group "%s"'] = '"%s" бүлгийн эрхийг зохицуулах';
+$lang['Mail content'] = 'Имэйлийн агуулга';
+$lang['Mail sent to %s [%s].'] = 'Имэйлийг %s [%s] уруу амжилттай илгээлээ.';
+$lang['Main'] = 'Үндсэн';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Энэ цомогт %s-с %s-ний хооронд оруулсан нийт %d зураг байна.';
+$lang['This album contains %d photos, added on %s.'] = 'Энэ цомогт %s-нд оруулсан нийт %d зураг байна.';
+$lang['Site manager'] = 'Сайтийн зохицуулагч';
+$lang['Set as default language for unregistered and new users'] = 'Шинэ, бүртгүүлээгүй хэрэглэгчид ашиглах үндсэн хэл болгон тохируулах';
+$lang['Send connection settings by email'] = 'Холболтын тохиргоог имэйлээр илгээх';
+$lang['Selection'] = 'Сонголт';
+$lang['Save order'] = 'Эрэмбийг хадаглах';
+$lang['Restore'] = 'Сэргээх';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Үндсэн тохиргоог сэргээх. Нэмэлт программийн тохиргоонууд алдагдах болно.';
+$lang['Repair and optimize database'] = 'Мэдээллийн санг засаж, цэгцэлэх';
+$lang['Piwigo for Android'] = 'Android-д зориулсан Piwigo';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch)-д зориулсан Piwigo';
+$lang['Permalink'] = 'Холбоос';
+$lang['Permalinks'] = 'Холбоосууд';
+$lang['Allow users to delete their own comments'] = 'Хэрэглэгчид сэтгэгдэлээ устгаж болно';
+$lang['Allow users to edit their own comments'] = 'Хэрэглэгчид сэтгэгдэлээ засаж болно';
+$lang['Cannot delete the old permalink !'] = 'Хуучин холбоосыг устгах боломжгүй байна.';
+$lang['Center of interest'] = 'Сонирхол татах хэсэг';
+$lang['Visited %d times'] = 'Үзсэн тоо: %d';
+$lang['Posted %s on %s'] = 'Нэмсэн огноо: %s (%s)';
+$lang['Added by %s'] = 'Зургыг оруулсан: %s';
+$lang['Set title'] = 'Нэр өгөх';
+$lang['Title'] = 'Нэр';
+$lang['Type here the title'] = 'Нэрээ оруулна уу';
+$lang['remove title'] = 'нэрийг устгах';
+$lang['Numeric identifier : %d'] = 'Дугаар: %d';
+?>
Index: /tags/2.6.0RC1/language/mn_MN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Монгол хэл [MN]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=696
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'Монгол хэл';
+$lang_info['country'] = 'Монгол улс';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'mn';
+$lang_info['zero_plural'] = true;
+
+$lang['%d comments'] = '%d сэтгэгдэл';
+$lang['%d hit'] = '%d удаа үзсэн';
+$lang['%d hits'] = '%d удаа үзсэн';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d сэтгэгдэл';
+$lang['%d new comments'] = '%d сэтгэгдэл';
+$lang['%d new photo'] = '%d шинэ зураг';
+$lang['%d new photos'] = '%d шинэ зурагнууд';
+$lang['%d new user'] = '%d шинэ хэрэглэгч';
+$lang['%d new users'] = '%d шинэ хэрэглэгч';
+$lang['Date'] = 'Огноо';
+$lang['day'][0] = 'Ням';
+$lang['day'][1] = 'Даваа';
+$lang['day'][2] = 'Мягмар';
+$lang['day'][3] = 'Лхагва';
+$lang['day'][4] = 'Пүрэв';
+$lang['day'][5] = 'Баасан';
+$lang['day'][6] = 'Бямба';
+$lang['month'][10] = '10-р сар';
+$lang['month'][11] = '11-р сар';
+$lang['month'][12] = '12-р сар';
+$lang['month'][1] = '1-р сар';
+$lang['month'][2] = '2-р сар';
+$lang['month'][3] = '3-р сар';
+$lang['month'][4] = '4-р сар';
+$lang['month'][5] = '5-р сар';
+$lang['month'][6] = '6-р сар';
+$lang['month'][7] = '7-р сар';
+$lang['month'][8] = '8-р сар';
+$lang['month'][9] = '9-р сар';
+$lang['comment date'] = 'бичсэн огноогоор';
+$lang['%d albums updated'] = '%d цомог шинэчлэгдлээ';
+$lang['Creation date'] = 'Авсан огноо';
+$lang['Post date'] = 'Нийтэлсэн огноо';
+$lang['Search'] = 'Хайлт';
+$lang['Search for all terms'] = 'Бүгдийг оруулж хайх';
+$lang['Search for any term'] = 'Дурын үгийг хайх';
+$lang['Search for words'] = 'Хайх үг';
+$lang['Search in albums'] = 'Цомогноос хайх';
+$lang['searched words : %s'] = 'хайсан үг: %s';
+$lang['Search by date'] = 'Огноогоор хайх';
+$lang['Search in sub-albums'] = 'Дэд цомогноос хайх';
+$lang['Quick search'] = 'хайх үгээ бичнэ үү';
+$lang['Reset'] = 'Цуцлах';
+$lang['Original dimensions'] = 'Үндсэн хэмжээ';
+$lang['Kind of date'] = 'Хамаарах огноо';
+$lang['End-Date'] = 'Дуусах огноо';
+$lang['Date created, old &rarr; new'] = 'Авсан огноогоор, хуучин &rarr; шинэ';
+$lang['Browser: %s'] = 'Вэб хөтөч: %s';
+$lang['Albums'] = 'Цомог';
+$lang['2small'] = 'XXS - жоохон';
+$lang['small'] = 'S - жижэг';
+$lang['stop the slideshow'] = 'зогсоох';
+$lang['today'] = 'өнөөдөр';
+$lang['useful when password forgotten'] = 'Нууц үгээ мартсан үед хэрэг болно';
+$lang['wrong date'] = 'огноо буруу байна';
+$lang['xlarge'] = 'XL - маш том';
+$lang['xsmall'] = 'XS - жижэгхэн';
+$lang['xxlarge'] = 'XXL - асар том';
+$lang['search'] = 'хайх';
+$lang['medium'] = 'M - дундаж';
+$lang['no rate'] = 'үнэлгээ үгүй';
+$lang['password updated'] = 'нууц үг шиэчлэгдлээ';
+$lang['large'] = 'L - том';
+$lang['photo'] = 'зураг';
+$lang['edit'] = 'засах';
+$lang['guest'] = 'зочин';
+$lang['Username'] = 'Хэрэглэгчийн нэр';
+$lang['Username or email'] = 'Хэрэглэгчийн нэр буюу имэйл хаяг';
+$lang['Username: %s'] = 'Хэрэглэгчийн нэр: %s';
+$lang['Website'] = 'Вэбсайт';
+$lang['Welcome'] = 'Тавтай морилно уу';
+$lang['Yes'] = 'Тийм';
+$lang['Sort by'] = 'Эрэмблэх';
+$lang['Submit'] = 'OK';
+$lang['Tag'] = 'Түлхүүр үг';
+$lang['Tags'] = 'Түлхүүр үгс';
+$lang['The passwords do not match'] = 'Нууц үг хоорондоо тохирохгүй байна';
+$lang['Show latest comments first'] = 'Шинээр оруулсан сэтгэгдэлийг эхэнд нь харуулах';
+$lang['Show number of comments'] = 'Сэтгэгдэлийн тоог харуулах';
+$lang['Search results'] = 'Хайлтын үр дүн';
+$lang['Register'] = 'Бүртгүүлэх';
+$lang['Registration'] = 'Бүртгэл';
+$lang['Random photos'] = 'Дурын зураг';
+$lang['Rating score, low &rarr; high'] = 'Үнэлгээгээр, бага &rarr; их';
+$lang['Rank'] = 'Үнэлгээ';
+$lang['Rate this photo'] = 'Энэ зургыг үнэлэх';
+$lang['Rating score'] = 'Үнэлгээ оноо';
+$lang['Rating score, high &rarr; low'] = 'Үнэлгээгээр, их &rarr; бага';
+$lang['Manage this user comment: %s'] = 'Дараахь сэдгэгдэлийг засварлах: %s';
+$lang['Manual sort order'] = 'Гараараа эрэмблэх';
+$lang['Piwigo Help'] = 'Piwigo тусламж';
+$lang['Password reset is not allowed for this user'] = 'Танд нууц үгээ солих эрх байхгүй байна';
+$lang['Password: %s'] = 'Нууц үг: %s';
+$lang['Pause of slideshow'] = 'Зогсоох';
+$lang['Photo title, Z &rarr; A'] = 'Зургын нэрээр, Z &rarr; A ';
+$lang['Photo sizes'] = 'Зургын хэмжээ';
+$lang['Photo title, A &rarr; Z'] = 'Зургын нэрээр, A &rarr; Z';
+$lang['Invalid password!'] = 'Хэрэглэгчийн нэр эсвэл нууц үг буруу байна.';
+$lang['Invalid username or email'] = 'Хэрэглэгчийн нэр эсвэл имэйл хаяг буруу байна.';
+$lang['Keyword'] = 'Түлхүүр үг';
+$lang['Password'] = 'Нууц үг';
+$lang['Password Reset'] = 'Нууц үгээ солих';
+$lang['Password forgotten'] = 'Нууц үгээ мартсан';
+$lang['Most visited'] = 'Их үзсэн';
+$lang['Original'] = 'Эх хувь';
+$lang['Page not found'] = 'Ийм хуудас олдсонгүй';
+$lang['Language'] = 'Хэл';
+$lang['Login'] = 'Нэвтрэх';
+$lang['Logout'] = 'Гарах';
+$lang['Menu'] = 'Цэс';
+$lang['Mobile'] = 'Гар утас';
+$lang['New password'] = 'Шинэ нууц үг';
+$lang['Next'] = 'Дараагынх';
+$lang['No'] = 'Үгүй';
+$lang['Links'] = 'Холбоос';
+$lang['Hello %s,'] = 'Сайн байна уу %s,';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Сайн байна уу %s, Таны Piwigo гэрэл зургын галерей хоосон байна!';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Home'] = 'Нүүр хуудас';
+$lang['Email: %s'] = 'Имэйл: %s';
+$lang['Enter your new password below.'] = 'Шинэ нууц үгээ оруулна уу';
+$lang['File name, A &rarr; Z'] = 'Файлын нэрээр A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Файлын нэрээр Z &rarr; A';
+$lang['Hello'] = 'Сайн байна уу';
+$lang['Help'] = 'Тусламж';
+$lang['Filesize'] = 'Файлын хэмжээ';
+$lang['Filter'] = 'Шүүлтүүр';
+$lang['Forbidden'] = 'Хориотой';
+$lang['Forgot your password?'] = 'Нууц үгээ мартсан уу?';
+$lang['Check your email for the confirmation link'] = 'Баталгаажуулсан захиаг имэйл хаягнаасаа шалгана уу';
+$lang['Click on the photo to see it in high definition'] = 'Өндөр нарийвчлалтай харахыг хүсвэл зураг дээр дарна уу';
+$lang['Close this window'] = 'Цонхыг хаах';
+$lang['Comment'] = 'Сэтгэгдэл';
+$lang['Comment by %s'] = 'Сэтгэгдэл бичсэн %s';
+$lang['Album'] = 'Цомог';
+$lang['File'] = 'Файл';
+$lang['File name'] = 'Файлын нэр';
+$lang['Enter your personnal informations'] = 'Мэдээллээ оруулна уу';
+$lang['Error sending email'] = 'И-мэйлийг илгээхэд алдаа гарлаа';
+$lang['Expand all albums'] = 'Бүх цомогыг дэлгэх';
+$lang['Display'] = 'Харуулах';
+$lang['Download'] = 'татах';
+$lang['Download this file'] = 'Файлыг татаж авах';
+$lang['EXIF Metadata'] = 'EXIF мэдээлэл';
+$lang['Edit'] = 'Засах';
+$lang['Edit a comment'] = 'Сэтгэгдэлийг засах';
+$lang['Email address'] = 'И-мэйл хаяг';
+$lang['Dimensions'] = 'Хэмжээ';
+$lang['Comments'] = 'Сэтгэгдэл';
+$lang['Connection settings'] = 'Холбогдох тохиргоо';
+$lang['Create a new account'] = 'Шинээр бүртгүүлэх';
+$lang['Current password is wrong'] = 'Нууц үг буруу байна';
+$lang['Customize'] = 'Засах';
+$lang['Delete'] = 'Устгах';
+$lang['Contact'] = 'Холбоо барих';
+$lang['Contact webmaster'] = 'Вебмастертай холбогдох';
+$lang['Confirm Password'] = 'Нууц үгээ давтах';
+$lang['Connected user: %s'] = 'Холбогдсон хэрэглэгч: %s';
+$lang['Comment: %s'] = 'Сэтгэгдэл: %s';
+$lang['Are you sure?'] = 'Та итгэлтэй байна уу?';
+$lang['Auto login'] = 'Санах';
+$lang['Change my password'] = 'Нууц үгээ шинэчлэе';
+$lang['Calendar'] = 'Огноогоор';
+$lang['%d photos'] = '%d зураг';
+$lang['About Piwigo'] = 'Piwigo-н тухай';
+$lang['Add a comment'] = 'Сэтгэгдэл нэмэх';
+$lang['%d comment'] = '%d сэтгэгдэл';
+$lang['remove this tag from the list'] = 'жагсаалтаас энэ үгийг хасах';
+$lang['this email address is already in use'] = 'энэ имэйл хаягаар бүртгүүлсэн байна';
+$lang['the beginning'] = 'эхнээс нь';
+$lang['the username must be given'] = 'хэрэглэгчийн нэр заавал шаардлагатай';
+$lang['created after %s (%s)'] = '%s (%s)-с хойш авсан';
+$lang['created before %s (%s)'] = '%s (%s)-с өмнө авсан';
+$lang['customize the appareance of the gallery'] = 'галерейн харагдах байдлыг засах';
+$lang['created on %s'] = '%s-нд авсан';
+$lang['created between %s (%s) and %s (%s)'] = '%s (%s)-с %s (%s)-н хооронд авсан';
+$lang['all'] = 'бүх';
+$lang['Your website URL is invalid'] = 'Вэб сайтын холбоос тань буруу байна.';
+$lang['Your username has been successfully changed to : %s'] = 'Таны хэрэглэгчийн нэр %s болж шинэчлэгдлээ';
+$lang['Your password has been reset'] = 'Нууц үг тань шинэчлэгдлээ';
+$lang['Week %d'] = '%d дэхь(дахь) долоо хоног';
+$lang['View'] = 'Харах';
+$lang['User: %s'] = 'Хэрэглэгч: %s';
+$lang['User comments'] = 'Хэрэглэгчийн сэтгэгдэл';
+$lang['Show oldest comments first'] = 'Хуучин сэдгэгдэлийг эхэнд нь харуулах';
+$lang['Sent by'] = 'Илгээсэн';
+$lang['Search tags'] = 'Хайх үг';
+$lang['Search rules'] = 'Хайх утга';
+$lang['Return to home page'] = 'Нүүр хуудас уруу буцах';
+$lang['Desktop'] = 'Үндсэн';
+$lang['All'] = 'Бүгдийг';
+$lang['%d rate'] = '%d үнэлгээ';
+$lang['%d rates'] = '%d үнэлгээ';
+$lang['display each day with photos, month per month'] = 'зураг авсан өдрүүдээр нь ангилж харах';
+$lang['return to the display of all photos'] = 'бүх зургыг харуулах';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Piwigo гэрэл зургын галерейд тавтай морилно уу!';
+$lang['add this photo to your favorites'] = 'энэ зургыг дуртай зурагандаа нэмэх';
+$lang['delete all photos from your favorites'] = 'дуртай зурагнуудаа бүгдийг нь хасах';
+$lang['delete this photo from your favorites'] = 'энэ зургыг дуртай зурагнаасаа хасах';
+$lang['display your favorites photos'] = 'дуртай зурагнуудаа харах';
+$lang['The number of photos per page must be a not null scalar'] = 'Нэг хуудсанд харуулах зургын тоо 0-с их байх ёстой';
+$lang['I want to add photos'] = 'Би зураг оруулмаар байна';
+$lang['Number of photos per page'] = 'Нэг хуудасанд харагдах зургын тоо';
+$lang['%d photo is also linked to current tags'] = '%d зураг энэ түлхүүр үгтэй холбоотой байна';
+$lang['%d photos are also linked to current tags'] = '%d зураг энэ түлхүүр үгтэй холбоотой байна';
+$lang['Update your rating'] = 'Үнэлгээгээ шинэчлэх';
+$lang['%d comment to validate'] = 'баталгаажуулалт хүлээж буй сэтгэгдэл %d';
+$lang['%d comments to validate'] = 'баталгаажуулалт хүлээж буй сэтгэгдэл %d';
+$lang['Visits'] = 'Үзсэн';
+$lang['Visits, high &rarr; low'] = 'Үзсэн, их &rarr; бага';
+$lang['Visits, low &rarr; high'] = 'Үзсэн, бага &rarr; их';
+$lang['display all photos in all sub-albums'] = 'Дэд цомогт байгаа бүх зурагыг харуулах';
+$lang['in %d sub-album'] = '%d дэд цомогт байна';
+$lang['in %d sub-albums'] = '%d дэд цомогт байна';
+$lang['Identification'] = 'Бүртгэл';
+$lang['Send my connection settings by email'] = 'Тохиргоог имэйл хаягаараа хүлээн авъя';
+$lang['Quick connect'] = 'Нэвтрэх';
+$lang['Last'] = 'Сүүлийн хуудас';
+$lang['RSS feed'] = 'Шинэчлэл тандагч';
+$lang['Complete RSS feed (photos, comments)'] = '-Бүх шинэчлэлийг тандах (зураг, бичлэг, сэтгэгдэл)';
+$lang['Photos only RSS feed'] = '-Зөвхөн шинэ зургуудыг тандах';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = '﻿﻿RSS буюу шинэчлэл тандагчийг идэвхжүүлж энэ блог/сайтийн шинэ зураг, бичлэг, сэтгэгдэл, шинэчлэлтийн талаарх мэдээллийг тодорхой давтамжаар тоймлон хүлээж аваарай.';
+$lang['Notification'] = 'Мэдээлэл';
+$lang['display a calendar by posted date'] = 'Нийтэлсэн огноогоор нь харуулах';
+$lang['display a calendar by creation date'] = 'зураг авсан огноогоор харуулах';
+$lang['display available tags'] = 'түлхүүр үгсүүдыг харуулах';
+$lang['display a set of random photos'] = 'дурын зургуудыг түүж харуулах';
+$lang['display last user comments'] = 'сүүлд бичсэн сэтгэгдэлийг харуулах';
+$lang['display only recently posted photos'] = 'зөвхөн саяхан нийтэлсэн зургуудыг харуулах';
+$lang['display photos linked to this tag'] = 'энэ түлхүүр үгтэй холбоотой зургуудыг харуулах';
+$lang['display this album'] = 'энэ цомогыг харуулах';
+$lang['display most visited photos'] = 'хамгийн их үзсэн зургуудыг харуулах';
+$lang['display best rated photos'] = 'өндөр үнэлгээтэй зургуудыг харуулах';
+$lang['Recent albums'] = 'Шинэ цомог';
+$lang['display most recent photos'] = 'саяхан нийтэлсэн зургыг харуулах';
+$lang['Recent photos'] = 'Саяхан нийтэлсэн';
+$lang['First'] = 'Эхний хуудас';
+$lang['Email address is missing. Please specify an email address.'] = 'Имэйл хаягаа заавал оруулна уу';
+$lang['About'] = 'Тухай';
+$lang['%d album updated'] = '%d цомог шинэчлэгдлээ';
+$lang['Photos posted within the last %d day.'] = 'Зөвхөн сүүлийн %d хоногт нийтэлсэн зурагнууд.';
+$lang['Photos posted within the last %d days.'] = 'Зөвхөн сүүлийн %d хоногт нийтэлсэн зурагнууд.';
+$lang['posted between %s (%s) and %s (%s)'] = '%s (%s)-с %s (%s)-н хооронд нийтэлсэн';
+$lang['posted after %s (%s)'] = '%s (%s)-с дараа нийтэлсэн';
+$lang['posted before %s (%s)'] = '%s (%s)-с өмнө нийтэлсэн';
+$lang['posted on %s'] = '%s (%s)-д нийтэлсэн';
+$lang['photos posted during the last %d days'] = 'сүүлийн %d хоногт нийтэлсэн зурагнууд';
+$lang['Posted on'] = 'Нийтэлсэн огноо';
+$lang['Date posted, new &rarr; old'] = 'Нийтэлсэн огноогоор, шинэ &rarr; хуучин';
+$lang['Date posted, old &rarr; new'] = 'Нийтэлсэн огноогоор, хуучин &rarr; шинэ';
+$lang['display recently updated albums'] = 'сүүлд шинэчилсэн цомгыг харуулах';
+$lang['Filter and display'] = 'Шүүгээд харуулах';
+$lang['Number of items'] = 'Харуулах тоо';
+$lang['Sort order'] = 'Дараалал';
+$lang['ascending'] = 'өгсөх';
+$lang['descending'] = 'уруудах';
+$lang['Date created, new &rarr; old'] = 'Авсан огноогоор, шинэ &rarr; хуучин';
+$lang['Created on'] = 'Зураг авсан огноо';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Таны вэб хөтөч "cookie" дэмжихгүй байна. Нэвтэрч орохын тулд вэб хөтөчийнхөө "cookie"-г идэвхжүүлнэ үү.';
+$lang['Any tag'] = 'Дурын түлхүүр үг';
+$lang['Album: %s'] = 'Цомог';
+$lang['%d photo'] = 'зураг';
+$lang['Click here if your browser does not automatically forward you'] = 'Вэбхөтөч тань автоматаар шилжэхгүй байгаа энд дарна уу';
+$lang['Best rated'] = 'Өндөр үнэлгээтэй';
+$lang['Here are your connection settings'] = 'Таны холболтын тохиргоо';
+$lang['(!) This comment requires validation'] = '(!) Тухайн сэтгэгдэлийг ';
+$lang['A comment on your site'] = 'Танай сайтын талаархи сэтгэгдэл';
+$lang['Username is mandatory'] = 'Хэрэглэгчийн нэр заавал шаардлагатай';
+$lang['Email address is mandatory'] = 'Имэйл хаяг заавал шаардлагатай';
+$lang['Previous'] = 'Өмнөх';
+$lang['Show file metadata'] = 'Зургын файлын дэлгэрэнгүй мэдээллийг харуулах';
+$lang['Specials'] = 'Сонгож харах';
+$lang['this login is already used'] = 'Уучлаарай, ийм нэрээр бүртгүүлэх боломжгүй.';
+$lang['obligatory'] = 'шаардлагатай';
+$lang['mandatory'] = 'шаардлагатай';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'имэйл хаяг xxx@yyy.eee хэлбэртэй байх ёстой (жишээ нь: jack@altern.org)';
+$lang['login mustn\'t start with a space character'] = 'Хэрэглэгчийн нэр сул зайгаар эхлэх ёсгүй';
+$lang['last %d days'] = 'сүүлийн %d хоног';
+$lang['in this album'] = 'энэ цомогт';
+$lang['Your comment has been registered'] = 'Таны сэтгэгдэлийг бүртгэж авлаа.';
+$lang['Webmaster'] = 'Вэбмастер';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Уучлаарай. Хэрэглэгч "%s" Та имэйл хаягаа бүртгүүлээгүй учир нууц үгээ сэргээх боломжгүй.';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Бүртгүүлсэнд тань баярлалаа. Тохиргооны холбоотой мэдээлэлийг имэйл хаяг уруу тань илгээлээ. ';
+$lang['Thank you for registering at %s!'] = 'Манай %s сайтад бүртгүүлсэн Танд баярлалаа!';
+$lang['Show number of hits'] = 'Үзсэн тоог харуулах';
+$lang['Requested tag does not exist'] = 'Ийм түлхүүр үг байхгүй байна';
+$lang['Requested album does not exist'] = 'Ийм цомог байхгүй байна';
+$lang['Repeat the slideshow'] = 'Давтах';
+$lang['Reduce diaporama speed'] = 'Хурдыг нь багасгах';
+$lang['All tags'] = 'Бүх түлхүүр үгс';
+$lang['login mustn\'t end with a space character'] = 'Хэрэглэгчийн нэр сул зайгаар төгсөх ёсгүй';
+$lang['chronology_monthly_list'] = 'Сараар';
+$lang['chronology_weekly_list'] = 'Долоо хоногоор';
+$lang['Each listed rule must be satisfied.'] = 'Шаардлагатай бүх талбарыг гүйцэд бөглөнө үү';
+$lang['from %s to %s'] = '%s-с %s хүртэл';
+$lang['You are not authorized to access the requested page'] = 'Уучлаарай. Танд энэ хуудсыг үзэх эрхгүй байна.';
+$lang['Username modification'] = 'Хэрэглэгчийн нэрээ засах';
+$lang['To reset your password, visit the following address:'] = 'Нууц үгээ сэргээхийн тулд дараахь хаягаар хандана уу:';
+$lang['Since'] = 'Эхлэх';
+$lang['Reset to default values'] = 'Үндсэн утгыг сэргээх';
+$lang['Please enter your username or email address.'] = 'Хэрэглэгчийн нэр эсвэл имэйл хаягаа оруулна уу.';
+$lang['Retrieve password'] = 'Нууц үгээ сэргээх';
+$lang['Not repeat the slideshow'] = 'Давтахгүй байх';
+$lang['New on %s'] = '%s-д шинээр нэмэгдсэн';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Хэрвээ танд энэ имэйл ирэх ёсгүй гэж үзэж байгаа бол дараахь хаягаар бидэнтэй холбогдоно уу:  %s';
+$lang['Default'] = 'Үндсэн';
+$lang['Admin: %s'] = 'Admin:%s';
+$lang['Accelerate diaporama speed'] = 'Хурдыг нь нэмэх';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Уучлаарай манай сайт засвартай байна. Дараа эргэн зочилно уу.';
+$lang['Author'] = 'Сэтгэгдэл бичэгч';
+$lang['Author: %s'] = 'Сэтгэгдэл бичэгч: %s';
+$lang['Please, enter a login'] = 'Уучлаарай, шаардлагатай талбаруудыг гүйцэд бөглөнө үү.';
+$lang['Page generated in'] = 'Хуудсыг ачаалсан хугацаа:';
+$lang['This author removed the comment with id %d'] = '%d сэтгэгдэлийг бичэгч нь устгасан байна';
+$lang['Tag results for'] = 'Хайлтын үр дүн:';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Дараахь хэрэглэгчийн нууц үгийг сэргээх хүсэлт ирлээ:';
+$lang['Registration of %s'] = '%s-н бүртгэл';
+$lang['Powered by'] = 'Вэб хөгжүүлэгч';
+$lang['... or browse your empty gallery'] = '... эсвэл хоосон галерейгаа үзнэ үү';
+$lang['set as album representative'] = 'цомогны дүрс зураг болгох';
+$lang['representative'] = 'цомогны дүрс зураг';
+$lang['return to normal view mode'] = 'Энгийн горимд шилжэх';
+$lang['author(s) : %s'] = 'Бичэгч: %s';
+$lang['Related tags'] = 'Холбоотой түлхүүр үгс';
+$lang['At least one listed rule must be satisfied.'] = 'Дор хаяж нэг утга оруулна уу';
+$lang['Permalink for album not found'] = 'Уучлаарай. Ийм холбоос бүхий цомог олдсонгүй';
+$lang['letters'] = 'үсэг';
+$lang['group by letters'] = 'үсгээр нь бүлэглэх';
+$lang['Invalid key'] = 'Буруу түлхүүр байна';
+$lang['Go through the gallery as a visitor'] = 'Зочин маягаар үзэх';
+$lang['slideshow'] = 'Слайд-шоу';
+$lang['This author modified following comment:'] = 'Дараахь сэтгэдлийг бичсэн хүн нь засав:';
+$lang['SQL queries in'] = 'SQL ачаалсан хугацаа';
+$lang['Play of slideshow'] = 'Слайд-шоу эхлүүлэх';
+$lang['Album results for'] = 'Дараахь хайлтын үр дүн:';
+$lang['Thumbnails'] = 'Дүрс зураг';
+$lang['thumb'] = 'Дүрс зураг';
+$lang['This login is already used by another user'] = 'Энэ эрхээр өөр хэрэглэгч нэвтэрсэн байна';
+$lang['Recent period'] = 'Сүүлийн';
+$lang['Administration'] = 'Админ';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Тоон дараалал: 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Тоон дараалал: 9 &rarr; 1';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Таны бичсэн сэтгэгдэл админ хянаж, зөвшшөрсөний дараа нийтлэгдэх болно. ';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Уучлаарай. Системийн ачаалал өндөр байгаа тул сэтгэгдэл бичихын тулд түр хүлээнэ үү.';
+$lang['Recent period must be a positive integer value'] = 'Сүүлийн үеийн хоногын тоо эерэг утгатай байх ёстой';
+$lang['Profile'] = 'Бүртгэл';
+$lang['Preferences'] = 'Тохиргоо';
+$lang['excluded'] = 'хасагдсан';
+$lang['available for administrators only'] = 'зөвхөн админууд хандах эрхтэй';
+$lang['Your favorites'] = 'Дуртай зурагнууд';
+$lang['Piwigo encountered a non recoverable error'] = 'Сэргээх боломжгүй ноцтой алдаа гарлаа!!!';
+$lang['You will receive a link to create a new password via email.'] = 'Шинэ нууц үг үүсгэх холбоос имэйл хаяг уруу тань очих болно.';
+$lang['chronology_monthly_calendar'] = 'Сарын хуанли';
+$lang['Favorites'] = 'Дуртай зурагнууд';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... би өөрөө тохиргоогоо хийх тул энэ мэдээллийг дахин битгий харуул.';
+$lang['Empty query. No criteria has been entered.'] = 'Хайлтын утгаа оруулна уу';
+$lang['Redirection...'] = 'Шилжүүлэх...';
+$lang['Search for Author'] = 'Зохиогчийг хайх';
+$lang['square'] = 'Талбай';
+$lang['Bad request'] = 'Алдаатай хүсэлт байна';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Хэрвээ ийм мэйл ирэх ёсгүй гэж үзэж байгаа бол хэрэгсэхгүй орхино уу.';
+$lang['html tags are not allowed in login'] = 'нэвтрэх хэсэгт html tag ашиглах боломжгүй';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Уучлаарай Таны бичсэн сэтгэгдэлийг нийтлэх боломжгүй байна. ';
+$lang['View in'] = 'Харах';
+$lang['Your Gallery Customization'] = 'Цомогны тохиргоо';
+$lang['Unknown feed identifier'] = 'Үлмэдэгдэх ID дугаар байна';
+$lang['Unknown identifier'] = 'Ийм бүртгэл байхгүй байна';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = '"guest" хэрэглэгчийн тохиргоо эвдэрсэн түл үндсэн тохиргоог ашиглалаа. Вэбмастерт мэдэгдэнэ үү.';
+$lang['N/A'] = 'боломжгүй';
+$lang['Username "%s" on gallery %s'] = '%s цомог дахь хэрэглэгч "%s" ';
+$lang['show tag cloud'] = 'түлхүүр үгсийг харуулах';
+$lang['included'] = 'агуулсан';
+$lang['cloud'] = 'үүлэн тооцоолол';
+$lang['Email'] = 'и-мэйл';
+$lang['First Page'] = 'эхний хуудас';
+$lang['Go back to the album'] = 'Цомог уруу буцах';
+$lang['Last Page'] = 'сүүлийн хуудас';
+$lang['Password is missing. Please enter the password.'] = 'Уучлаарай. Нууц үгээ оруулна уу.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Нууц үгээ баталгаажуулж давтан оруулна уу.';
+$lang['%d photos per page'] = 'Нэг хуудасанд %d зураг';
+?>
Index: /tags/2.6.0RC1/language/mn_MN/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/install.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['It appears your webhost is currently running PHP %s.'] = 'Таны вэбсервер PHP %s хувилбарыг ашиглаж байна';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo PHP 5-г тохиргоог өөрчилж чадсангүй';
+$lang['Congratulations, Piwigo installation is completed'] = 'Танд баяр хүргэе, Piwigo амжилттай сууж дууслаа.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Сервертэй амжилттай холбогдсон боловч мэдээллийн сантай холбогдох боломж алга байна.';
+$lang['Try to configure PHP 5'] = 'PHP 5 тохиргоогоо өөрчилж үзнэ үү';
+$lang['User'] = 'Хэрэглэгч';
+$lang['Just another Piwigo gallery'] = 'Бас нэг Piwigo-н галарей ';
+$lang['Database configuration'] = 'Мэдээллийн сангийн тохиргоо';
+$lang['Welcome to my photo gallery'] = 'Миний зургийн цомогт тавтай морилно уу';
+$lang['please enter your password again'] = 'нууц үгээ дахин оруулна уу';
+$lang['Start Install'] = 'Суулгаж эхлэх';
+$lang['Sorry!'] = 'Уучлаарай';
+$lang['Password ']['confirm'] = 'Нууц үгээ давтах';
+$lang['Can\'t connect to server'] = 'Сервертэй холбогдож чадахгүй байна';
+$lang['Database name'] = 'Мэдээллийн сангын нэр';
+$lang['Default gallery language'] = 'Үндсэн хэл';
+$lang['PHP 5 is required'] = 'PHP 5 шаардлагатай';
+$lang['Download the config file'] = 'Тохиргооны файлыг татах';
+$lang['Admin configuration'] = 'Админий тохиргоо';
+$lang['Basic configuration'] = 'Үндсэн тохиргоо';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Вэбмастерийн нэрэнд \' or " гэсэн тэмдэгт орох ёсгүй.';
+$lang['verification'] = 'баталгаажуулалт';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Хэрэглэгчид энэ имэйл хаягаар админтай холбогдох боломжтой';
+$lang['Hope to see you back soon.'] = 'Тантай удахгүй эргэн уулзана гэдэгт найдаж байна.';
+$lang['Welcome to your new installation of Piwigo!'] = 'Piwigo-г шинээр суулгах хэсэгт тавтай морилно уу!';
+$lang['enter a login for webmaster'] = 'Вэбмастерийн мэдээллээ оруулна уу';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Тусламж хэрэгтэй бол <a href="%s">Piwigo message board</a> хаягаар хандаж асуултаа асуугаарай.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Тохиргооны файл local/config/database.inc.php-г үүсгэж чадсангүй';
+?>
Index: /tags/2.6.0RC1/language/mn_MN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Монгол хэл [MN]
Index: /tags/2.6.0RC1/language/mn_MN/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/mn_MN/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/mn_MN/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['You do not have access rights to run upgrade'] = 'Уучлаарай, Танд шинэчлэх эрх байхгүй байна.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Уучлаарай, зөвхөн админ шинэчлэх эрхтэй. Админы эрхээр системд нэвтэрнэ үү.';
+$lang['total upgrade time'] = 'Зарцуулсан хугацаа';
+$lang['Upgrade from version %s to %s'] = '%s-с %s хувилбар уруу шинэчлэх';
+$lang['Upgrade'] = 'Шинэчлэх';
+?>
Index: /tags/2.6.0RC1/language/ms_MY/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ms_MY/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ms_MY/common.lang.php	(revision 25596)
@@ -0,0 +1,163 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Malay [MY]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=645
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'Malay';
+$lang_info['country'] = 'Malaysia';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ms';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d album dikemaskini';
+$lang['%d albums updated'] = '%d album-album dikemaskini';
+$lang['%d comment to validate'] = '%d komen untuk mengesahkan';
+$lang['%d comment'] = '%d komen';
+$lang['%d comments to validate'] = '%d komen untuk mengesahkan';
+$lang['%d comments'] = '%d komen-komen';
+$lang['%d hit'] = '%d hit';
+$lang['%d hits'] = '%d hits';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d komen baru';
+$lang['%d new comments'] = '%d komen-komen baru';
+$lang['%d new photo'] = '%d baru foto';
+$lang['%d new photos'] = '%d baru foto-foto';
+$lang['%d new user'] = '%d pengguna baru';
+$lang['%d new users'] = '%d pengguna baru';
+$lang['%d photo is also linked to current tags'] = '%d foto juga dikaitkan dengan tags semasa';
+$lang['%d photo'] = '%d photo';
+$lang['%d photos are also linked to current tags'] = '%d gambar juga dikaitkan dengan tags semasa';
+$lang['%d photos'] = '%d foto-foto';
+$lang['%d rates'] = '%d kadar-kadar';
+$lang['(!) This comment requires validation'] = '(!) Komen ini memerlukan pengesahan';
+$lang['... or browse your empty gallery'] = '... atau melayari galeri kosong anda';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... atau sila menyahaktifkan mesej ini, saya akan mencari jalan saya oleh diri saya sendiri';
+$lang['A comment on your site'] = 'Satu komen di laman anda';
+$lang['About Piwigo'] = 'Mengenai Piwigo';
+$lang['About'] = 'Mengenai';
+
+$lang['Invalid key'] = 'Kunci tidak cocok';
+$lang['Invalid password!'] = 'kata sandi tidak cocok!';
+$lang['Invalid username or email'] = 'Nama pengguna atau email yang tidak cocok';
+$lang['Keyword'] = 'Kata kunci';
+$lang['Kind of date'] = 'Jenis tanggal';
+$lang['Language'] = 'Bahasa';
+$lang['Last'] = 'Terakhir';
+$lang['Last Page'] = 'Halaman terakhir';
+$lang['Links'] = 'Link';
+$lang['Login'] = 'Masuk';
+$lang['Logout'] = 'Keluar';
+$lang['Manage this user comment: %s'] = 'Atur komentar pengguna ini %s';
+$lang['Manual sort order'] = 'Penyusunan manual';
+$lang['Menu'] = 'Menu';
+$lang['Mobile'] = 'Ponsel';
+$lang['Most visited'] = 'Paling banyak dikunjungi';
+$lang['N/A'] = 'Tidak tersedia';
+$lang['New on %s'] = 'baru di %s';
+$lang['New password'] = 'Kata sandi baru';
+$lang['Filter'] = 'Saring';
+$lang['Filter and display'] = 'Saring dan tampilkan';
+$lang['First'] = 'Pertama';
+$lang['First Page'] = 'Halaman pertama';
+$lang['Forbidden'] = 'Disembunyikan';
+$lang['Forgot your password?'] = 'Lupa password anda?';
+$lang['Go back to the album'] = 'Kembali ke album';
+$lang['Go through the gallery as a visitor'] = 'Navigasi galeri sebagai pengunjung';
+$lang['Hello'] = 'Halo';
+$lang['Hello %s,'] = 'Halo %s';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Halo %, Galeri foto Piwigo anda masih kosong! ';
+$lang['Help'] = 'Bantuan';
+$lang['Here are your connection settings'] = 'Ini adalah pengaturan koneksi anda';
+$lang['Home'] = 'Beranda';
+$lang['I want to add photos'] = 'Saya ingin menambahkan sebuah foto';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Identification'] = 'Identifikasi';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Jika ini adalah kesalahan, cukup abaikan email ini dan tidak akan terjadi apa-apa.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Jika anda merasa email ini merupakan kesalahan, harap hubungi kami di %s';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['Edit'] = 'Ubah';
+$lang['Edit a comment'] = 'Ubah sebuah komentar';
+$lang['Email'] = 'Email';
+$lang['Email address'] = 'Alamat email';
+$lang['Email address is mandatory'] = 'Alamat email ditahan';
+$lang['Email address is missing. Please specify an email address.'] = 'Alamat email anda tidak aktif, mohon beri alamat yang baru';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Kolom ini kosong, Belum ada kriteria yang dimasukkan';
+$lang['End-Date'] = 'Tanggal kadaluarsa';
+$lang['Enter your new password below.'] = 'Masukkan kata sandi baru anda di bawah';
+$lang['Enter your personnal informations'] = 'Masukkan data pribadi anda';
+$lang['Error sending email'] = 'Kesalahan ketika mengirimkan email';
+$lang['Expand all albums'] = 'Lebarkan semua album';
+$lang['Favorites'] = 'Favorit';
+$lang['File'] = 'Dokumen';
+$lang['File name'] = 'Nama dokumen';
+$lang['File name, A &rarr; Z'] = 'Nama dokumen, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nama dokumen, Z &rarr; A';
+$lang['Filesize'] = 'Ukuran dokumen';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Kukis diblokir atau tidak didukung oleh browser anda. Anda harus mengaktifkan kukis untuk masuk';
+$lang['Create a new account'] = 'Membuat akun baru';
+$lang['Created on'] = 'Dibuat';
+$lang['Creation date'] = 'Tanggal pembuatan';
+$lang['Current password is wrong'] = 'Kata sandi sekarang keliru';
+$lang['Customize'] = 'Kostumisasi';
+$lang['Date'] = 'Tanggal';
+$lang['Date created, new &rarr; old'] = 'Tanggal pembuatan, baru &rarr; lama';
+$lang['Date created, old &rarr; new'] = 'Tanggal pembuatan, lama &rarr; baru';
+$lang['Date posted, new &rarr; old'] = 'Tanggal dipublikasi, baru &rarr; lama';
+$lang['Date posted, old &rarr; new'] = 'Tanggal dipublikasikan, lama &rarr; baru';
+$lang['Default'] = 'Standar';
+$lang['Delete'] = 'Hapus';
+$lang['Desktop'] = 'Deskop';
+$lang['Dimensions'] = 'Dimensi';
+$lang['Display'] = 'Tampilkan';
+$lang['Download'] = 'unggah';
+$lang['Download this file'] = 'unggah dokumen ini';
+$lang['Each listed rule must be satisfied.'] = 'Tiap kriteria harus diselesaikan';
+$lang['Author: %s'] = 'Penulis : %';
+$lang['Auto login'] = 'Masuk otomatis';
+$lang['Author'] = 'Penulis';
+$lang['At least one listed rule must be satisfied.'] = 'Sekurangnya satu kategori harus diselesaikan';
+$lang['Are you sure?'] = 'Apakah anda yakin?';
+$lang['Any tag'] = 'Kata kunci lain';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistem penahan : harap tunggu sebentar sebelum memposting komentar yang baru';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Seorang pengelola harus mengautorisasi komentar anda sebelum dilihat khalayak umum';
+$lang['All tags'] = 'Semua kata kunci';
+$lang['All'] = 'Semua';
+$lang['Albums'] = 'Album';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Album results for'] = 'Hasil album untuk';
+$lang['Administration'] = 'Pengelolaan';
+$lang['Album'] = 'Album';
+$lang['Admin: %s'] = 'Pengelola: %s';
+$lang['Add a comment'] = 'Tambahkan sebuah komentar';
+$lang['Accelerate diaporama speed'] = 'Tingkatkan kecepatan gambar geser';
+$lang['2small'] = 'XXS - Kecil';
+$lang['%d rate'] = '%d rating';
+?>
Index: /tags/2.6.0RC1/language/ms_MY/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ms_MY/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ms_MY/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Malay [MY]
Index: /tags/2.6.0RC1/language/nb_NO/about.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+<p>Dette fotogalleriet er basert på Piwigo.</p>
+
+<p>Piwigo er et fotogalleri program for web, laget av et aktivt miljø av
+brukere og utviklere. Tilleggsverktøy gjør at Piwigo lett kan skreddersys
+etter eget ønske. Og på toppen av det hele, Piwigo er gratis og har åpen
+kildekode.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Besøk Piwigo webside</a></p>
+
+<p> Den norske oversettelsen blir vedlikeholdt av (i alfabetisk rekkefølge):
+<ul>
+<li><a href="http://piwigo.org/forum/profile.php?id=16411">abbamust</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=11500">atlew</a></li>
+<li>Laurenz</li>
+</ul>
+              .... mange takk til deg </p>
Index: /tags/2.6.0RC1/language/nb_NO/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/admin.lang.php	(revision 25596)
@@ -0,0 +1,952 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d assosier';
+$lang['%d associations'] = '%d assosierer';
+$lang['%d album including'] = '%d album inkludert';
+$lang['%d albums including'] = '%d album inkludert';
+$lang['%d physical'] = ' %d fysisk';
+$lang[' and %d virtual'] = ' og %d virtuell';
+$lang['%d album moved'] = '%d album er flyttet';
+$lang['%d albums moved'] = '%d album er flyttet';
+$lang['%d group'] = '%d gruppe';
+$lang['%d groups'] = '%d grupper';
+$lang['%d member'] = '%d medlem';
+$lang['%d members'] = '%d medlemmer';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tager';
+$lang['%d user comment rejected'] = '%d bruker kommentar avvist';
+$lang['%d user comments rejected'] = '%d bruker kommentarer avvist';
+$lang['%d user comment validated'] = '%d bruker kommentar validert';
+$lang['%d user comments validated'] = '%d brukerkommentarer validert';
+$lang['%d user deleted'] = '%d bruker slettet';
+$lang['%d users deleted'] = '%d brukere slettet';
+$lang['%d user'] = '%d bruker';
+$lang['%d users'] = '%d brukere';
+$lang['%d waiting for validation'] = '%d venter på validering';
+$lang['Actions'] = 'Tiltak';
+$lang['Activate'] = 'Aktiver';
+$lang['Add/delete a permalink'] = 'Legg til/Slett en permalink';
+$lang['Add a tag'] = 'Legg til en tag';
+$lang['Add a user'] = 'Legg til en bruker';
+$lang['Add group'] = 'Legg til gruppe';
+$lang['Add'] = 'Legg til';
+$lang['Allow user registration'] = 'Godkjenn bruker registrering';
+$lang['Apply to sub-albums'] = 'Legg til i grunn-album';
+$lang['Associated'] = 'Sammenlignbar';
+$lang['Caddie management'] = 'Kurv behandling';
+$lang['Caddie'] = 'Kurv';
+$lang['Albums authorized thanks to group associations'] = 'Album autorisert grunnet gruppetilhørighet';
+$lang['Album manual order was saved'] = 'Album manuell sortering ble lagret';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Oppdateringssjekk misslyktes av ukjente grunner.';
+$lang['Check for upgrade'] = 'Sjekk etter oppgradering';
+$lang['Comments for all'] = 'Kommentar for alle';
+$lang['Current name'] = 'Gjeldende navn';
+$lang['Database'] = 'Database';
+$lang['Deactivate'] = 'Deaktiver';
+$lang['Delete Representant'] = 'Slett Representant';
+$lang['Delete selected tags'] = 'Slett valgte tag';
+$lang['Delete selected users'] = 'Slett valgte brukere';
+$lang['Deletions'] = 'Slettede';
+$lang['Deny selected groups'] = 'Nekt valgte grupper';
+$lang['Deny selected users'] = 'Nekt valgte brukere';
+$lang['Description'] = 'Beskrivelse';
+$lang['Display options'] = 'Visnings alternativer';
+$lang['Dissociated'] = 'Adskilt';
+$lang['Does not represent'] = 'Er ikke gjeldende';
+$lang['Edit selected tags'] = 'Rediger valgte tag';
+$lang['Edit tags'] = 'Rediger tag';
+$lang['Email admins when a new user registers'] = 'Email administrator når en ny bruker registreres';
+$lang['Email admins when a valid comment is entered'] = 'Email administrator når en kommentar blir lagt til';
+$lang['Email admins when a comment requires validation'] = 'Email administrator når en kommentar trenger godkjenning';
+$lang['Environment'] = 'Miljø';
+$lang['Form'] = 'Skjema';
+$lang['Gallery title'] = 'Galleri tittel';
+$lang['Grant selected groups'] = 'Godkjenn valgte grupper';
+$lang['Grant selected users'] = 'Godkjenn valgte brukere';
+$lang['Group name'] = 'Navn på gruppe';
+$lang['Groups'] = 'Grupper';
+$lang['Guests'] = 'Gjester';
+$lang['History'] = 'Historie';
+$lang['Informations'] = 'Informasjon';
+$lang['Install'] = 'Installere';
+$lang['Link all album photos to a new album'] = 'Link alle album elementer til et nytt album';
+$lang['Link all album photos to some existing albums'] = 'Link alle album elementer til noen eksisterende album';
+$lang['Linked albums'] = 'Linkede album';
+$lang['Lock gallery'] = 'Lås galleri';
+$lang['Maintenance'] = 'Vedlikehold';
+$lang['Edit album permissions'] = 'Rediger album rettigheter';
+$lang['Manage permissions for group "%s"'] = 'Behandle tillatelser for gruppen "%s"';
+$lang['Manage permissions for user "%s"'] = 'Behandle tillatelser for bruker "%s"';
+$lang['Manage tags'] = 'Behandle tags';
+$lang['Members'] = 'Medlemmer';
+$lang['Metadata synchronized from file'] = 'Metadata synkronisert fra fil';
+$lang['Move albums'] = 'Flytt album';
+$lang['Move'] = 'Flytt';
+$lang['Name'] = 'Navn';
+$lang['New name'] = 'Nytt navn';
+$lang['New parent album'] = 'Nytt nåverende album';
+$lang['New tag'] = 'Ny tag';
+$lang['Number of comments per page'] = 'Antall kommentarer per side';
+$lang['Number of rates'] = 'Antall stemmer';
+$lang['Number of thumbnails to create'] = 'Antall miniatyrbilder å lage';
+$lang['Only private albums are listed'] = 'Bare private album er listet';
+$lang['Operating system'] = 'Operativ system';
+$lang['Options'] = 'Alternativer';
+$lang['Other private albums'] = 'Andre private album';
+$lang['Page banner'] = 'Side banner';
+$lang['Parent album'] = 'Nåværende album';
+$lang['Path'] = 'Sti';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s har nylig blitt brukt av albumet %s. Slett dette fra permalinks historie først';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Permalink navn må bestå av a-å, A-Å, 0-9, "-", "_" eller "/". Det må ikke være numerisk eller begynne med et tall etterfulgt av "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s er allerede i bruk av album %s';
+$lang['Permalink history'] = 'Permalinker historie';
+$lang['Permalinks'] = 'Permalinker';
+$lang['Permission denied'] = 'Tillatelse nektet';
+$lang['Permission granted thanks to a group'] = 'Tillatelse godtatt grunnet gruppetilhørighet';
+$lang['Permission granted'] = 'Tillatelse godtatt';
+$lang['Photo informations updated'] = 'Bildeinformasjon oppdatert';
+$lang['Plugins'] = 'Tilleggsprogram';
+$lang['Position'] = 'Posisjon';
+$lang['Preferences'] = 'Preferanser';
+$lang['Properties'] = 'Egenskaper';
+$lang['Random photo'] = 'Tilfeldig bilde';
+$lang['Rate date'] = 'Stemme dato';
+$lang['Rating by guests'] = 'Stemt på av gjester';
+$lang['Rating'] = 'Stemming';
+$lang['Reject'] = 'Avvis';
+$lang['Representant'] = 'Representant';
+$lang['Representation of albums'] = 'Representant til album';
+$lang['Representative'] = 'Representative';
+$lang['Represents'] = 'Representere';
+$lang['Save order'] = 'Lagre rekkefølge';
+$lang['Save to permalink history'] = 'Lagre til permalink historie';
+$lang['Select at least one album'] = 'Velg minst et album';
+$lang['Select at least one photo'] = 'Velg minst et bilde';
+$lang['Select at least one user'] = 'Velg minst en bruker';
+$lang['Show info'] = 'Vis informasjon';
+$lang['Site manager'] = 'Håndter sider';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statistikk';
+$lang['Storage album'] = 'Lagrings album';
+$lang['Sum of rates'] = 'Sum av stemmer';
+$lang['Tag "%s" already exists'] = 'Tag "%s" eksisterer allerede';
+$lang['Tag "%s" was added'] = 'Tag "%s" har blitt lagt til';
+$lang['Tag selection'] = 'Tags utvalg';
+$lang['The %d following tags were deleted'] = 'Følgende %d tags har blitt slettet';
+$lang['Unable to check for upgrade.'] = 'Ikke mulig å sjekke for oppdatering.';
+$lang['Uninstall'] = 'Avinstaller';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'bruk standard bilde sortering (definert i konfigurasjons filen)';
+$lang['User comments validation'] = 'Brukerkommentar validering';
+$lang['Users'] = 'Brukere';
+$lang['Validate'] = 'Valider';
+$lang['Validation'] = 'Validering';
+$lang['Version'] = 'Versjon';
+$lang['Virtual albums to move'] = 'Virtuelle album å flytte';
+$lang['Virtual album name'] = 'Virtuelle album navn';
+$lang['Webmaster cannot be deleted'] = 'Webmaster kan ikke bli slettet';
+$lang['You are running on development sources, no check possible.'] = 'Du kjører på utviklingskilder, kontroll er ikke mulig.';
+$lang['You cannot delete your account'] = 'Du kan ikke slette din konto';
+$lang['You cannot move an album in its own sub album'] = 'Du kan ikke flytte et album i sitt eget grunn album';
+$lang['You need to confirm deletion'] = 'Du må bekrefte sletting';
+$lang['Add tags'] = 'Legg til tags';
+$lang['Associate to album'] = 'Assosier med album';
+$lang['associate to group'] = 'assosier med gruppe';
+$lang['Authorized'] = 'Godkjent';
+$lang['Add a virtual album'] = 'Legg til et virtuelt album';
+$lang['Authorize users to add comments on selected albums'] = 'Godkjen brukere til å legge inn kommentarer på valgte album';
+$lang['The name of an album must not be empty'] = 'Navnet på album kan ikke være tomt';
+$lang['Lock albums'] = 'Lås album';
+$lang['Private'] = 'Privat';
+$lang['Public'] = 'Offentlig';
+$lang['Find a new representant by random'] = 'Finn en ny tilfeldig representant';
+$lang['Public / Private'] = 'Offentlig / Privat';
+$lang['Manage authorizations for selected albums'] = 'Behandle autorisasjoner for valgt album';
+$lang['Virtual album added'] = 'Virtuelt album lagt til';
+$lang['Virtual album deleted'] = 'Virtuelt album slettet';
+$lang['Access type'] = 'Tilgangstype type';
+$lang['Information data registered in database'] = 'Informasjons data registrert i database';
+$lang['Default display'] = 'Standard visning';
+$lang['The gallery URL is not valid.'] = 'Galleri URL er ikke gyldig.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Antall kommentarer per side må være mellom 5 og 50.';
+$lang['Configuration'] = 'Konfigurasjon';
+$lang['confirm'] = 'Godkjenn';
+$lang['Date'] = 'Dato';
+$lang['delete album'] = 'slett album';
+$lang['Dissociate from album'] = 'Skill fra album';
+$lang['dissociate from group'] = 'Skill fra gruppe';
+$lang['Album updated successfully'] = 'Album vellykket oppdatert';
+$lang['photos per page'] = 'elementer per side';
+$lang['High definition enabled'] = 'Høy oppløsning aktivert';
+$lang['File'] = 'Fil';
+$lang['first photo added on %s'] = 'første element lagt til den %s';
+$lang['Forbidden'] = 'Forbudt';
+$lang['global mode'] = 'global modus';
+$lang['group "%s" added'] = 'gruppe "%s" lagt til';
+$lang['group "%s" deleted'] = 'gruppe "%s" slettet';
+$lang['group "%s" updated'] = 'gruppe "%s" oppdatert';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Navnet til en gruppe må inneholde " eller \' eller være tom.';
+$lang['This name is already used by another group.'] = 'Dette navnet er allerede i bruk i av annen gruppe.';
+$lang['High definition'] = 'Høy oppløsning';
+$lang['jump to album'] = 'hopp til album';
+$lang['jump to photo'] = 'hopp til bilde';
+$lang['leave'] = 'behold';
+$lang['Lock'] = 'Lås';
+$lang['Locked'] = 'Låst';
+$lang['manage album photos'] = 'behandle album elementer';
+$lang['manage sub-albums'] = 'behandle grunn-album';
+$lang['Manage'] = 'Behandle';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Prossessen svarer ikke, behandling fortsetter [Estimert tid: %d sekund].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Prossessen svarer ikke, behandling fortsetter [Estimert tid: %d sekunder].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Tiden å forberede liste over brukere som vil bli mailet er begrenset. Andre brukere er ikke listet.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tiden for å sende mail er begrenset. Andre mail er hoppet over.';
+$lang['To send ?'] = 'Å sende?';
+$lang['Last send'] = 'Sist sendt';
+$lang['User'] = 'Bruker';
+$lang['Complementary mail content'] = 'Kompletterende mail innhold';
+$lang['See you soon,'] = 'På gjensyn,';
+$lang['Go to'] = 'Gå til';
+$lang['Hello'] = 'Hallo';
+$lang['New photos were added'] = 'Nye elementer har blitt lagt til';
+$lang['on'] = 'på';
+$lang['between'] = 'mellom';
+$lang['and'] = 'og';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster har satt deg opp for beskjeder via e-mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Du har satt deg opp for beskjeder vi e-mail.';
+$lang['To subscribe'] = 'for å melde deg på nyhetsbrev';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Om du har spørsmål eller problemer, vennligst send mail til';
+$lang['[NBM] Problems or questions'] = '[NBM] Problem eller spørsmål.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster har fjernet deg for beskjeder via e-mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Du har fjernet deg for beskjeder vi e-mail.';
+$lang[', click on'] = ', Klikk på';
+$lang['To unsubscribe'] = 'for å fjerne nyhetsbrev';
+$lang['With blank value, gallery title will be used'] = 'Om blank verdi, galleri tittel vil bli brukt';
+$lang['Notification'] = 'Påminnelser';
+$lang['Error when sending email to %s [%s].'] = 'Feil ved sending av e-mail til %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Mail sent til %s [%s].';
+$lang['%d mail was sent.'] = '%d mail har blitt sendt.';
+$lang['%d mails were sent.'] = '%d mail har blitt sendt.';
+$lang['%d mail was not sent.'] = '%d mail har ikke blitt sent.';
+$lang['%d mails were not sent.'] = '%d mail har ikke blitt sent.';
+$lang['No mail to send.'] = 'Ingen mail å sende.';
+$lang['There is no available subscribers to mail.'] = 'Det er ingen abonnenter å varsle via e-mail.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Abonnenter kan bli listet (tilgjengelige) kun om det er nye meldinger.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Uansett kun webmastere ser denne fanen, ingen administratorer.';
+$lang['No user to send notifications by mail.'] = 'Ingen brukere å medele via mail.';
+$lang['New photos added'] = 'Nye elementer lagt til';
+$lang['Subscribe to notification by mail'] = 'Abonner for varsling via e-mail';
+$lang['Unsubscribe from notification by mail'] = 'Fjern abonnent på varsling via e-mail';
+$lang['Parameter'] = 'Settings';
+$lang['Operation in progress'] = 'Prosseserer behandling.';
+$lang['Please wait...'] = 'Vennligst vent...';
+$lang['Continue processing treatment'] = 'Fortsett pågående behandling';
+$lang['Add detailed content'] = 'Legg til detaljert innhold';
+$lang['Send mail as'] = 'Send mail som';
+$lang['Send mail to users'] = 'Send mail til brukere';
+$lang['Send'] = 'Send';
+$lang['Subscribed'] = 'Abonnert';
+$lang['Subscribe'] = 'Abonnere';
+$lang['Parameters'] = 'Parametere';
+$lang['Select recipients'] = 'Velg mottagere';
+$lang['Subscribe/unsubscribe users'] = 'Påmeld/avmeld brukere';
+$lang['Unsubscribed'] = 'Avmeldt';
+$lang['%d parameter was updated.'] = '%d parameter oppdatert.';
+$lang['%d parameters were updated.'] = '%d parametere oppdatert.';
+$lang['%d user was not updated.'] = '%d bruker ikke oppdatert.';
+$lang['%d users were not updated.'] = '%d brukere ikke oppdatert.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Bruker %s [%s] fjernet fra påmeldingslisten.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Bruker %s [%s] lagt til påmeldingslisten.';
+$lang['%d user was updated.'] = '%d bruker oppdatert.';
+$lang['%d users were updated.'] = '%d brukere oppdatert.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Bruker %s [%s] er ikke fjernet fra påmeldingslisten.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'bruker %s [%s] ikke lagt til påmeldingslisten.';
+$lang['User %s [%s] added.'] = 'Bruker %s [%s] lagt til.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Advarsel: Påmelding eller avmelding vil sende mail til brukere';
+$lang['Send mail on HTML format'] = 'Send mail i HTML format';
+$lang['Include display of recent photos grouped by dates'] = 'Inkluder visning av siste bilder grupert etter dato';
+$lang['Available only with HTML format'] = 'Tilgjengelig kun i HTML format';
+$lang['no write access'] = 'ingen skrive tilgang';
+$lang['Permissions'] = 'Tillatelser';
+$lang['private'] = 'privat';
+$lang['public'] = 'almenn';
+$lang['Purge never used notification feeds'] = 'Tøm aldrig brukte meldinger feeds';
+$lang['Purge sessions'] = 'Tøm sesjoner';
+$lang['randomly represented'] = 'tilfeldige representativer';
+$lang['registration date'] = 'registrert dato';
+$lang['clean'] = 'Rydd opp';
+$lang['Create this site'] = 'Lag denne siden';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'test ekstern side';
+$lang['remove tags'] = 'fjern tags';
+$lang['Repair and optimize database'] = 'Reparer og optimaliser database';
+$lang['selection'] = 'utvalg';
+$lang['set to'] = 'sett til';
+$lang['singly represented'] = 'faste representanter';
+$lang['This site already exists'] = 'Denne siden eksisterer allerede';
+$lang['created'] = 'laget';
+$lang['delete'] = 'slette';
+$lang['delete this site and all its attached elements'] = 'slett denne siden og all relatert informasjon';
+$lang['deleted'] = 'slettet';
+$lang['an error happened'] = 'en feil oppstod';
+$lang['Local'] = 'Lokal';
+$lang['Remote'] = 'Ekstern side';
+$lang['update the database from files'] = 'oppdater databasen med filer';
+$lang['status'] = 'status';
+$lang['Directory'] = 'Katalog';
+$lang['sub-albums'] = 'grunn-album';
+$lang['Synchronize metadata'] = 'synkroniser metadata';
+$lang['target'] = 'mål';
+$lang['Thumbnail'] = 'miniatyr bilde';
+$lang['Title'] = 'tittel';
+$lang['Album list management'] = 'Albumliste behandling';
+$lang['Piwigo configuration'] = 'Piwigo konfigurasjon';
+$lang['Edit album'] = 'Rediger album';
+$lang['Group management'] = 'Gruppe behandling';
+$lang['User list'] = 'Bruker liste';
+$lang['Edit photo information'] = 'Endre bilde informasjon';
+$lang['Database synchronization with files'] = 'Database synkronisering med filer';
+$lang['all'] = 'alle';
+$lang['height must be a number superior to'] = 'høyde må være et nummer høyere en';
+$lang['width must be a number superior to'] = 'bredde må være et nummer høyere en';
+$lang['for the file format'] = 'for fil format';
+$lang['Photo unreachable or no support'] = 'Bilde ikke tilgjengelig eller i feil filformat';
+$lang['GD version'] = 'GD versjon';
+$lang['General statistics'] = 'Generell statistikk';
+$lang['average time'] = 'gjennomsnitlig tid';
+$lang['number of miniaturized photos'] = 'antall miniatyrbilder laget';
+$lang['total time'] = 'total tid';
+$lang['for this file format'] = 'for dette fil format';
+$lang['unit mode'] = 'singel modus';
+$lang['Unlocked'] = 'Opplåst';
+$lang['unset'] = 'ubestemt';
+$lang['Update albums informations'] = 'Oppdater album informasjon';
+$lang['Update photos information'] = 'Oppdater bilde informasjon';
+$lang['Synchronize'] = 'Synkroniser';
+$lang['reduce to single existing albums'] = 'reduser til enkelt eksisterende album';
+$lang['Choose an option'] = 'Velg et alternativ';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'vis all informasjon (tillagte album og elemter, slettede album og elementer)';
+$lang['Error list'] = 'Liste med feilmeldinger';
+$lang['Errors caption'] = 'Feil legender';
+$lang['Detailed informations'] = 'Detaljert informasjon';
+$lang['File/directory read error'] = 'Lesefeil i Fil/katalog';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Fil eller katalog kan ikke nås (enten eksisterer den ikke eller tilgang er nektet)';
+$lang['albums deleted in the database'] = 'album slettet i database';
+$lang['photos deleted from the database'] = 'elementer slettet i database';
+$lang['photos candidates for metadata synchronization'] = 'bilder klare for metadata synkronisering';
+$lang['photos informations synchronized with files metadata'] = 'element informasjon synkronisert med filenes metadata';
+$lang['errors during synchronization'] = 'feil under synkronisering';
+$lang['albums added in the database'] = 'album lagt til i databasen';
+$lang['photos added in the database'] = 'elementer lagt til i databasen';
+$lang['photos updated in the database'] = 'elementer oppdatert i databasen';
+$lang['Search for new images in the directories'] = 'Søk etter nye bilder i mappene';
+$lang['added'] = 'lagt til';
+$lang['Metadata synchronization results'] = 'Metadatas synkroniserings resultat';
+$lang['only perform a simulation (no change in database will be made)'] = 'Utfør kun en simulering (ingen forandringer blir gjort i databasen)';
+$lang['Simulation'] = 'Simulering';
+$lang['directories + files'] = 'mapper + filer';
+$lang['only directories'] = 'kun mapper';
+$lang['synchronize files structure with database'] = 'Synkroniser filstruktur med databasen';
+$lang['synchronize files metadata with database photos informations'] = 'synkroniser database elementer med filers metadata';
+$lang['even already synchronized photos'] = 'også allerede synkroniserte elementer';
+$lang['Used metadata'] = 'Metadata brukt';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Navnet til mapper og filer må kun bestå av bokstaver, tall, "-", "_" eller "."';
+$lang['wrong filename'] = 'feil filnavn';
+$lang['Upload'] = 'Last opp';
+$lang['user "%s" added'] = 'bruker "%s" lagt til';
+$lang['User status'] = 'Bruker status';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Generisk';
+$lang['user_status_guest'] = 'Gjest';
+$lang['user_status_normal'] = 'Bruker';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Virtuelt album';
+$lang['Waiting'] = 'Avventer';
+$lang['default'] = 'Standard';
+$lang['Toggle \'default group\' property'] = 'Reverser \'Standard gruppering\' egenskaper';
+$lang['Advanced features'] = 'Avanserte funksjoner';
+$lang['Overall'] = 'Oversikt';
+$lang['Year'] = 'År';
+$lang['Month'] = 'Måned';
+$lang['Day'] = 'Dag';
+$lang['Pages seen'] = 'Sider sett';
+$lang['Time'] = 'Tid';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'Seksjon';
+$lang['An information email was sent to group "%s"'] = 'Informasjons email sendt til gruppe "%s"';
+$lang['Send an information email to group members'] = 'Send en informasjons email til gruppe medlemmer';
+$lang['Group'] = 'Gruppe';
+$lang['[%s] Visit album %s'] = '[%s] besøk album %s';
+$lang['Hello,'] = 'Hallo,';
+$lang['See you soon.'] = 'Vi sees senere.';
+$lang['Discover album:'] = 'Utforsk album:';
+$lang['Mail content'] = 'Mail innhold';
+$lang['none'] = 'ingen';
+$lang['high'] = 'Høy';
+$lang['other'] = 'andre';
+$lang['Element type'] = 'Element type';
+$lang['Image id'] = 'Bilde id';
+$lang['Summary'] = 'Resymé';
+$lang['%d line filtered'] = '%d linje filtrert';
+$lang['%d lines filtered'] = '%d linjer filtrert';
+$lang['%d guest'] = '%d gjest';
+$lang['%d guests'] = '%d gjester';
+$lang['Hour'] = 'Time';
+$lang['guest'] = 'gjest';
+$lang['default values'] = 'standard verdi';
+$lang['Guest cannot be deleted'] = 'Gjest kan ikke bli slettet';
+$lang['Default user cannot be deleted'] = 'Standard bruker kan ikke slettes';
+$lang['Purge history detail'] = 'Tøm historie detaljer';
+$lang['Purge history summary'] = 'Tøm historie sammendrag';
+$lang['Check integrity'] = 'Integritets sjekk';
+$lang['Anomaly'] = 'Unormal';
+$lang['Correction'] = 'Rettelse';
+$lang['Automatic correction'] = 'Automatisk rettelse';
+$lang['Impossible automatic correction'] = 'Automatisk rettelse umulig';
+$lang['Correction applied with success'] = 'Rettelse er gjennomført';
+$lang['Correction applied with error'] = 'Rettelse er gjennomført med feil';
+$lang['%d anomaly has been detected.'] = '%d en unormalitet har blitt oppdaget.';
+$lang['%d anomalies have been detected.'] = '%d unormaliteter har blitt oppdaget.';
+$lang['%d anomaly has been corrected.'] = '%d unormalitet har blitt rettet.';
+$lang['%d anomalies have been detected corrected.'] = '%d unormaliteter har blitt oppdaget og rettet.';
+$lang['%d anomaly has not been corrected.'] = '%d unormalitet har ikke blitt rettet.';
+$lang['%d anomalies have not been corrected.'] = '%d unormaliteter har ikke blitt rettet.';
+$lang['Go to %s or %s for more informations'] = 'Gå til %s eller %s for mer informasjon';
+$lang['the forum'] = 'Forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s verdier feil da xfif ikke støttes';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s må være satt til false i din local/config/config.inc.php file';
+$lang['Main "guest" user does not exist'] = 'Hovedbruker "gjest" finnes ikke';
+$lang['Main "guest" user status is incorrect'] = 'Hovedbruker "gjest" brukers status er feil';
+$lang['Default user does not exist'] = 'Standard bruker finnes ikke';
+$lang['Main "webmaster" user does not exist'] = 'Hovedbruker "webmaster" finnes ikke';
+$lang['Main "webmaster" user status is incorrect'] = 'Hovedbruker "webmaster" brukers status er feil';
+$lang['User "%s" created with "%s" like password'] = 'Bruker "%s" laget med "%s" som passord';
+$lang['Status of user "%s" updated'] = 'Bruker "%s" status oppdatert';
+$lang['add new photos to caddie'] = 'legg nytt element i kurv';
+$lang['No display'] = 'Ingen visning';
+$lang['Classic display'] = 'klassisk visning';
+$lang['Hoverbox display'] = 'Sveveboks visning';
+$lang['Mail address is obligatory for all users'] = 'Mail addresse er obligatorisk for alle brukere';
+$lang['Minimum privacy level'] = 'Minimum privat nivå';
+$lang['Privacy level'] = 'Privat nivå';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakter';
+$lang['Level 2'] = 'Venner';
+$lang['Level 4'] = 'Familie';
+$lang['Level 8'] = 'Administrator';
+$lang['Reinitialize check integrity'] = 'Re initialier integritets sjekk';
+$lang['Check all'] = 'Sjekk alle';
+$lang['Uncheck all'] = 'Avsjekk alle';
+$lang['Check automatic corrections'] = 'Sjekk endringer automatisk';
+$lang['Apply selected corrections'] = 'Legg til valgte endringer';
+$lang['Ignore selected anomalies'] = 'Ignorer valgte unormaliteter';
+$lang['Refresh'] = 'Oppdater';
+$lang['The anomaly will be ignored until next application version'] = 'Unormalitet vil bli ignorert  frem til neste program versjon';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Rettet unormalitet vil ikke lenger bli ignorert';
+$lang['%d anomaly has been ignored.'] = '%d unormalitet har blitt ignorert.';
+$lang['%d anomalies have been ignored.'] = '%d unormaliteter har blitt ignorert.';
+$lang['Plugins which need upgrade'] = 'Tilleggsverktøy som trenger oppdatering ';
+$lang['Plugin list'] = 'Liste over tilleggsverktøy';
+$lang['Check for updates'] = 'Sjekk for oppdateringer';
+$lang['Other plugins'] = 'Andre tillegsverktøy tilgjengelige';
+$lang['Last revisions'] = 'Siste revisjon';
+$lang['Are you sure you want to delete this plugin?'] = 'Er du sikker på å slette tilleggsverktøy?';
+$lang['Are you sure you want to install this plugin?'] = 'Er du sikker på å installere tilleggsverktøy?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Er du sikker på at du vil installere den oppgraderingen? Du må verifisere om ikke denne versjonen trenger avinstallasjon først.';
+$lang['Plugin has been successfully copied'] = 'Tilleggsverktøyet har blitt suksessfult kopiert';
+$lang['You might go to plugin list to install and activate it.'] = 'Gå til tilleggsverktøy liste for å installere og aktivere det.';
+$lang['Can\'t create temporary file.'] = 'Midlertidig fil kan ikke bli laget.';
+$lang['Can\'t download archive.'] = 'Arkiv kan ikke bli nedlastet.';
+$lang['Can\'t read or extract archive.'] = 'Arkiv kan ikke leses eller pakkes ut.';
+$lang['An error occured during extraction (%s).'] = 'En feil oppstod under utpakking:(%s)';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Vennligst sjekk "plugins" mappe og under-mappers rettigheter (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Tilkobling til server ikke mulig.';
+$lang['Purge compiled templates'] = 'Tøm kompilerte maler (templates)';
+$lang['ACCESS_0'] = 'Fri tillgang';
+$lang['ACCESS_1'] = 'Tilgjengelig for alle';
+$lang['ACCESS_2'] = 'Tilgjengelig for registrerte brukere';
+$lang['ACCESS_3'] = 'Tilgjengelig for administratorer';
+$lang['ACCESS_4'] = 'Tilgjengelig for webmastere';
+$lang['ACCESS_5'] = 'Ingen adgang';
+$lang['Support'] = 'Hjelp';
+$lang['Documentation'] = 'Dokumentasjon';
+$lang['A new version of Piwigo is available.'] = 'En ny versjon av Piwigo er tilgjengelig.';
+$lang['Piwigo Administration'] = 'Piwigo Administrasjon';
+$lang['Piwigo version'] = 'Piwigo versjon';
+$lang['You are running the latest version of Piwigo.'] = 'Du kjører siste versjon av Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Versjon av %s [%s] installert er ikke kompatibel med den ønskede versjon [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'du bør oppgradere systemet dit for å kunne få full utnyttelse av programmet, ellers kan programmet virke ustabilt eller ikke i det hele tatt';
+$lang['Deleted on'] = 'Slettet den';
+$lang['Last hit'] = 'Siste treff';
+$lang['GD library is missing'] = 'GD bibliotek mangler';
+$lang['Templates'] = 'Maler (templates)';
+$lang['Extend for templates'] = 'Utivd maler (templates)';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Erstattning av orginal mal med egentilpasset mal fra template-extension grunn-mappe';
+$lang['Replacers (customized templates)'] = 'Alternativer (egentilpassete maler)';
+$lang['Original templates'] = 'Orginal mal (templates)';
+$lang['Optional URL keyword'] = 'Alternativ URL nøkkel ord';
+$lang['Templates configuration has been recorded.'] = 'Mal konfigurasjon er blitt registrert.';
+$lang['All optimizations have been successfully completed.'] = 'All optimalisering har blitt utført.';
+$lang['Optimizations have been completed with some errors.'] = 'Optimalisering har blitt utført med feil.';
+$lang['Modify information'] = 'Endre informasjon';
+$lang['nothing'] = 'ingen ting';
+$lang['overrides existing values with empty ones'] = 'overskriver eksisterende verdier med tomme';
+$lang['Manage photo ranks'] = 'Behandle bilde rangering';
+$lang['Edit ranks'] = 'Rediger rangering';
+$lang['No photo in this album'] = 'Ingen elementer i dette album';
+$lang['Images manual order was saved'] = 'Bilders manuelle rekkefølge lagret';
+$lang['ranks'] = 'rangering';
+$lang['By rank'] = 'Etter rangering';
+$lang['Manual order'] = 'Manuell rekefølge';
+$lang['Drag to re-order'] = 'Dra og slipp for å endre rekkefølge';
+$lang['Quick Local Synchronization'] = 'Rask lokal synkronisering';
+$lang['No photo can be deleted'] = 'Ingen foto kan slettes';
+$lang['Delete selected photos'] = 'Slett valgte foto';
+$lang['%d photo was deleted'] = '%d foto slettet';
+$lang['%d photos were deleted'] = '%d foto slettet';
+$lang['Downloads'] = 'Nedlastinger';
+$lang['Released on'] = 'Sluppet den';
+$lang['Number of downloads'] = 'Antall nedlastinger';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo nyhets brev';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hold deg oppdatert i Piwigo prosjektet, abonner på Piwigo nyhetsbrev. Du vil få tilsendt email når en ny versjon er tilgjengelig (til tider med sikkerhets fix, noe som er viktig å oppdaere) og når større hendelser skjer i prosjektet. Kun noen få mail per år.';
+$lang['Subscribe %s'] = 'Abonner %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonner %s på Piwigo nyhets brev';
+$lang['Purge search history'] = 'Tøm søke historikk';
+$lang['Hide'] = 'Gjem';
+$lang['Password is missing. Please enter the password.'] = 'Passord mangler. Vennligst skriv passord.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Passord bekreftelse mangler. Vennligst bekreft det valgte passord.';
+$lang['Allow users to edit their own comments'] = 'Tillat bruker å redigere sine egne kommentarer';
+$lang['Allow users to delete their own comments'] = 'Tillat brukere å slette sine egne kommentarer';
+$lang['Email administrators when a comment is modified'] = 'Email administrator når en kommentar er endret';
+$lang['Email administrators when a comment is deleted'] = 'Email administrator når en kommentar er slettet';
+$lang['Cannot delete the old permalink !'] = 'Gammel permalink kan ikke slettes!';
+$lang['Hit'] = 'Treff';
+$lang['Tools'] = 'Verktøy';
+$lang['Photos'] = 'Foto';
+$lang['Themes'] = 'Temaer';
+$lang['Instructions to use Piwigo'] = 'Instruksjoner i bruk av Piwigo';
+$lang['Installed Themes'] = 'Installerte temaer';
+$lang['Add New Theme'] = 'Legg til et nytt tema';
+$lang['Forbid this theme to users'] = 'Nekt dette tema for brukere';
+$lang['Set as default theme for unregistered and new users'] = 'Set som standard tema for uregistrerte og nye brukere';
+$lang['unknown'] = 'unkjent';
+$lang['Upload Photos'] = 'Last opp foto';
+$lang['Drop into album'] = 'Slipp inn i album';
+$lang['+ Add an upload box'] = '+ legg til en opplastings boks';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Lag "%s" mappe i roten av din Piwigo installasjon';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Gi skrive tilgang (chmod 777) til "%s" mappe i roten av din Piwigo installasjon';
+$lang['existing album'] = 'eksisterende album';
+$lang['create a new album'] = 'lag et nytt album';
+$lang['Album name'] = 'Album navn';
+$lang['Album "%s" has been added'] = 'Album "%s" har blitt lagt til';
+$lang['Uploaded Photos'] = 'Opplastede bilder';
+$lang['%d photos uploaded'] = '%d foto opplastet';
+$lang['Privacy level set to "%s"'] = 'Privat nivå satt til "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" består nå av %d bilder';
+$lang['Manage this set of %d photos'] = 'Behandle disse %d bildene';
+$lang['Select files'] = 'Velg filer';
+$lang['Everybody'] = 'Alle';
+$lang['Who can see these photos?'] = 'Hvem kan se disse bildene?';
+$lang['Who can see this photo?'] = 'Hvem kan se dette bildet?';
+$lang['Settings'] = 'Instillinger';
+$lang['Resize'] = 'Endre størrelse';
+$lang['Maximum width'] = 'Maksimum bredde';
+$lang['pixels'] = 'piksler';
+$lang['Maximum height'] = 'Maksimum høyde';
+$lang['Image Quality'] = 'Bilde kvalitet';
+$lang['Save Settings'] = 'Lagre innstillinger';
+$lang['Your configuration settings are saved'] = 'Dine konfigurasjons instillinger er lagret';
+$lang['Active Themes'] = 'Aktive temaer';
+$lang['Add write access to the "%s" directory'] = 'Legg til skriver tilgang på "%s" mappe';
+$lang['Administration Home'] = 'Administrasjon Hjem';
+$lang['Change Admin Colors'] = 'Endre administrasjons farger';
+$lang['Delete this theme'] = 'Slett dette tema';
+$lang['Directory does not exist'] = 'mappen eksisterer ikke';
+$lang['Download,'] = 'Last ned,';
+$lang['FTP + Synchronization'] = 'FTP + synkronisering';
+$lang['Get Support on Piwigo Forum'] = 'Få hjelp på Piwigo forum';
+$lang['Help Me'] = 'Hjelp meg';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Dette tema kan ikke aktiveres, da temaet mangler: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Dette temaet kan ikke slettes, andrfe temaer er avhengig av det: %s';
+$lang['Inactive Themes'] = 'Innaktive temaer';
+$lang['Install on your computer,'] = 'Installer på din maskin,';
+$lang['Make this theme available to users'] = 'Gjør dette temaet tilgjengelig for brukere';
+$lang['Page end'] = 'Slutten av side';
+$lang['Piwigo Uploader'] = 'Piwigo opplaster';
+$lang['Read Piwigo Documentation'] = 'Les Piwigo dokumentasjon';
+$lang['Start pLoader and add your photos.'] = 'Start pLoader og legg til dine bilder.';
+$lang['Switch to clear or dark colors for administration'] = 'Bytt til lyse eller mørke farger for administrasjon';
+$lang['Theme has been successfully installed'] = 'Temaet er installert';
+$lang['Visit Gallery'] = 'Besøk galleriet';
+$lang['Visit Piwigo project website'] = 'Besøk Piwigo prosjektets webside';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for <em>Piwigo Opplaster</em>. Fra din maskin, pLoader klargjør dine bilder og overfører demtil ditt Piwigo photo galleri.';
+$lang['Guest Settings'] = 'Instillinger for gjester';
+$lang['Main Page'] = 'Hovedside';
+$lang['Photo Page'] = 'Bilde side';
+$lang['Activate Navigation Bar'] = 'Aktiver navigasjon bar';
+$lang['Activate Navigation Thumbnails'] = 'Aktiver navigasjon miniatyrbilder';
+$lang['Activate icon "%s"'] = 'Aktiver icon "%s"';
+$lang['Photo Properties'] = 'Bilde egenskaper';
+$lang['Allow user customization'] = 'Godkjenn brukers egne instillinger';
+$lang['Languages'] = 'Språk';
+$lang['Installed Languages'] = 'Installerte språk';
+$lang['Add New Language'] = 'Legg til nytt språk';
+$lang['Language has been successfully installed'] = 'Språkpakke har blitt installert';
+$lang['Select:'] = 'Velg:';
+$lang['None'] = 'Ingen';
+$lang['Invert'] = 'Inverter';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Umulig å deaktivere dette tema, du må minst et tema aktivt.';
+$lang['Webmaster status is required.'] = 'Webmaster status er nødvendig.';
+$lang['Bound Theme'] = 'Bundet tema';
+$lang['Allow rating'] = 'Godta gradering';
+$lang['Select at least one comment'] = 'Velg minst 1 kommentar';
+$lang['Active Plugins'] = 'Aktive tilleggsprogram';
+$lang['Inactive Plugins'] = 'Inaktive tilleggsprogram';
+$lang['Missing Plugins'] = 'Manglende tilleggsprogram';
+$lang['Uninstalled Plugins'] = 'Avinstallerte tilleggsprogram';
+$lang['By %s'] = 'Av %s';
+$lang['Visit plugin site'] = 'Besøk tilleggsprogram side';
+$lang['Active Languages'] = 'Aktive språk';
+$lang['Delete this language'] = 'Slett denne språkpakken';
+$lang['Forbid this language to users'] = 'Forby dette språket for brukere';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Umulig å deaktivere dette språket, sett et annet språk som standard først.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Umulig å deaktivere dette språket, du trenger minst et språk.';
+$lang['Inactive Languages'] = 'Inaktive språk';
+$lang['Make this language available to users'] = 'Gjør dette språket tilgjengelig for brukere';
+$lang['Set as default language for unregistered and new users'] = 'Sett som standard språk for uregistrerte og nye brukerer';
+$lang['Add Photos'] = 'Legg til bilder';
+$lang['The following tag was deleted'] = 'Følgende tag er slettet';
+$lang['Miscellaneous'] = 'Diverse';
+$lang['Virtual Links'] = 'Virtuelle Linker';
+$lang['There is no other language available.'] = 'Det er ingen andre språk tilgjengelig.';
+$lang['There is no other plugin available.'] = 'Det er ingen andre tilleggsprogrammer tilgjengelig.';
+$lang['There is no other theme available.'] = 'Det er ingen andre temaer tilgjengelig.';
+$lang['Add another set of photos'] = 'Legg til et annet sett med bilder';
+$lang['Order of menubar items has been updated successfully.'] = 'Sorteringen av meny elementer har blitt opppdatert.';
+$lang['This theme was not designed to be directly activated'] = 'Dette tema er ikke laget for å bli direkte aktivert';
+$lang['Pending Comments'] = 'Ventende kommentarer';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini fil, om upload_max_filesize (%sB) er større en post_max_size (%sB), bør du endre denne instillingen';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif tillegg ikke tilgjengelig, administrator bør gjøre bruk av exif utilgjengelig';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den opplastede filen overgår upload_max_filesize direktivet i php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den opplastede filen overgår post_max_size direktivet i php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den opplastede filen overgår MAX_FILE_SIZE direktivetsom er spesifisert i HTML skjemaet';
+$lang['The uploaded file was only partially uploaded'] = 'Filen ble bare delvis opplastet';
+$lang['No file was uploaded'] = 'Ingen filer ble lastet opp';
+$lang['Missing a temporary folder'] = 'Mangler en midlertidig mappe';
+$lang['Failed to write file to disk'] = 'Feilet i å skrive til disk';
+$lang['File upload stopped by extension'] = 'Fil| opplastingen stoppet av tillegg';
+$lang['Unknown upload error'] = 'Ukjent opplastings feil';
+$lang['Error on file "%s" : %s'] = 'Feil på fil "%s" : %s';
+$lang['Menu Management'] = 'Menyer';
+$lang['automatic order'] = 'automatisk sortering';
+$lang['manual order'] = 'manuell sortering';
+$lang['Albums automatically sorted'] = 'Album automatisk sortert';
+$lang['Batch Manager'] = 'Batch Behandler';
+$lang['include child albums'] = 'inkluder under album';
+$lang['Selection'] = 'Utvalg';
+$lang['Action'] = 'Tiltak';
+$lang['Set author'] = 'Sett forfatter';
+$lang['Set title'] = 'Sett tittel';
+$lang['Set creation date'] = 'Sett opprettelses dato';
+$lang['Apply action'] = 'Aktiver handlinger';
+$lang['on the %d selected photos'] = 'på de %d valgte bildene';
+$lang['%d of %d photos selected'] = '%d av %d bilder valgt';
+$lang['No photo selected, %d photos in current set'] = 'Ingen foto valgt, %d foto i forrige sett';
+$lang['All %d photos are selected'] = 'Alle %d bilder er valgt';
+$lang['remove this filter'] = 'fjern filter';
+$lang['Predefined filter'] = 'Redefiner filter';
+$lang['Last import'] = 'Siste importering';
+$lang['With no virtual album'] = 'Uten virtuelle album';
+$lang['Duplicates'] = 'duplikater';
+$lang['Add a filter'] = 'Legg inn filter';
+$lang['Remove all filters'] = 'Fjern alle filtere';
+$lang['Refresh photo set'] = 'Oppdater bilde sesjonen';
+$lang['The whole page'] = 'Hele siden';
+$lang['The whole set'] = 'Hele sesjonen';
+$lang['No photo in the current set.'] = 'Ingen foto i gjeldende sesjon.';
+$lang['No photo selected, no action possible.'] = 'Ingne bilder valgt, ingen tilltak mulig.';
+$lang['Choose an action'] = 'Velg et tilltak';
+$lang['remove author'] = 'fjern forfatter';
+$lang['Type here the author name'] = 'Skriv forfatter navn her';
+$lang['remove title'] = 'fjern tittel';
+$lang['Type here the title'] = 'Skriv tittel her';
+$lang['remove creation date'] = 'fjern  opprettelse dato';
+$lang['With no album'] = 'Uten album';
+$lang['With no tag'] = 'Uten tag';
+$lang['Album photos associated to the following albums: %s'] = 'Album bilder assosiert til følgende album: %s';
+$lang['Delete orphan tags'] = 'Slett foreldreløse tagger';
+$lang['delete photo'] = 'slett bilde';
+$lang['Orphan tags deleted'] = 'Foreldreløse  tagger slettet';
+$lang['Week starts on'] = 'Uke starter på';
+$lang['You have %d orphan tags: %s.'] = 'Du har %d foreldreløse tagger: %s.';
+$lang['Remove from caddie'] = 'Fjern fra kurv';
+$lang['Themes which need upgrade'] = 'Temaer som trenger oppgradering'; 
+$lang['Languages which need upgrade'] = 'Språk som trenger oppgradering'; 
+$lang['All themes are up to date.'] = 'Alle temaer er oppdaterte.'; 
+$lang['All plugins are up to date.'] = 'Alle plugginene er oppdaterte.'; 
+$lang['All languages are up to date.'] = 'Alle språk er oppdaterte.'; 
+$lang['Visit theme site'] = 'Besøk tema side'; 
+$lang['Visit language site'] = 'Besøk språk side'; 
+$lang['New Version'] = 'Ny versjon';
+$lang['Learn more'] = 'Lær mer';
+$lang['Rate'] = 'Rangere';
+$lang['Average rate'] = 'Gjennomsnittlig rate';
+$lang['An error has occured during upgrade.'] = 'En feil oppstod under oppgraderingen.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'En feil oppstod under utpakkingen. Vennligst sjekk fil rettigheter i din piwigo installasjon.<br><a href="%s">Klikk her for å vise feil loggen</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan ikke motta oppgraderingsfilen fra serveren';
+$lang['Update in progress... Please wait.'] = 'Oppgradering pågår... Vennligst vent.';
+$lang['Update to Piwigo %s'] = 'Oppgrader til Piwigo %s';
+$lang['Two updates are available'] = 'To oppgraderinger er tilgjengelige';
+$lang['This is a minor update, with only bug corrections.'] = 'Dette er en mindre oppgradering, kun med noen interne feilrettinger.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Dette er en omfattende oppgradering, med <a href="%s">nye spennende funksjoner</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Noen temaer og tilleggsverktøy er muligens ikke tilgjengelig foreløpig.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan oppgradere til Piwigo %s direkte, uten å oppgradere til Piwigo %s (anbefalt).';
+$lang['Save Template Directory'] = 'Lagre mal (template) mappe';
+$lang['Dump Database'] = 'Tøm Database';
+$lang['ERROR'] = 'FEIL';
+$lang['Update Complete'] = 'Oppgradering fullført';
+$lang['Piwigo Update'] = 'Piwigo-oppgradering';
+$lang['Extensions Update'] = 'Tilleggsprogram-oppgradering';
+$lang['All extensions are up to date.'] = 'Alle tilleggsprogram er oppdaterte.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Følgende tilleggsprogram er muligens ikke kompatible med den nye utgaven av Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Følgende temaer er muligens ikke kompatible med den nye utgaven av Piwigo:';
+$lang['Height'] = 'Høyde';
+$lang['Width'] = 'Bredde';
+$lang['display'] = 'Vis';
+$lang['Zoom'] = 'Zoom';
+$lang['Add to caddie'] = 'legg i kurv';
+
+$lang['... or '] = '... eller';
+$lang['Allowed file types: %s.'] = 'Tillatte filtyper: %s.';
+$lang['%s has been successfully updated.'] = '%s har blitt oppdatert';
+$lang['%s photos can not be regenerated'] = '%s bilder kan ikke bli regenerert';
+$lang['%s photos have been regenerated'] = '%s bilder har blitt regenerert';
+$lang['(this tag will be deleted)'] = '(tilleggsinfo om bilde vil bli slettet)';
+$lang['Activate comments'] = 'Aktiver kommentarer';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktiver knappen "ny" ved siden av album og bilder';
+$lang['Add a criteria'] = 'Legg til kriterier';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ca. max oppløsning: %dM piksler (dvs. %dx%d piksler).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo vil automatisk lage ny størrelse på bilde tilpasset web på dine HD bilder.';
+$lang['Confirm merge'] = 'Bekreft fletting';
+$lang['Create'] = 'Lag';
+$lang['Crop'] = 'Beskjær';
+$lang['Deactivate all'] = 'Deaktivere alt';
+$lang['Default comments order'] = 'Standard rekkefølge på kommentarer';
+$lang['Default photos order'] = 'Standard rekkefølge på bilder';
+$lang['Do you want to activate anyway?'] = 'Vil du aktivere allikevel?';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEIL: DETTE TILLEGGET MANGLER, MEN ER INSTALLERT! AVINSTALLER NÅ.';
+$lang['Graphics Library'] = 'Grafikkbibliotek';
+$lang['hide details'] = 'skjul detaljer';
+$lang['I decide to update anyway'] = 'Jeg vil oppgradere allikevel';
+$lang['Ignore All'] = 'Ignorer alle';
+$lang['Ignore this update'] = 'Ignorer denne oppdatering';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluder historisk data (Advarsel: serverens minne kan overstiges)';
+$lang['Manage Permissions'] = 'Behandle rettigheter';
+$lang['Maximum file size: %sB.'] = 'Maksimal filstørrelse: %sB.';
+$lang['Merge selected tags'] = 'Flett merkede bildetags';
+$lang['Merge tags'] = 'Flett bildetags';
+$lang['new'] = 'ny';
+$lang['No results'] = 'Ingen resultater';
+$lang['Photo %s of %s'] = 'Bilde %s av %s';
+$lang['Photo name'] = 'Bildenavn';
+$lang['Reset ignored updates'] = 'Nullstill ignorerte uppdateringer';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Gjenopprett standard konfigurasjon. Du vil miste innstillingene til tilleggene.';
+$lang['Restore'] = 'Gjenopprett';
+$lang['Searching...'] = 'Søker...';
+$lang['Select an album'] = 'Velg et album';
+$lang['show details'] = 'Vis detaljer';
+$lang['Show menubar'] = 'Vis menyer';
+$lang['Start Upload'] = 'Start opplasting';
+$lang['Type in a search term'] = 'Skriv inn et søkeord';
+$lang['Update All'] = 'Oppdater alt';
+$lang['Updates'] = 'Oppdateringer';
+$lang['A locked gallery is only visible to administrators'] = 'Et lukket galleri er kun synlig for administratorer';
+$lang['administrators'] = 'administrator';
+$lang['apply automatic sort order'] = 'Sett automatisk rekkefølge';
+$lang['Automatic sort order'] = 'Automatisk rekkefølge';
+$lang['cancel manual order'] = 'avbryt manuell rekkefølge';
+$lang['Cancel'] = 'Avbryt';
+$lang['Gallery unlocked'] = 'Galleri låst opp';
+$lang['modified'] = 'endret';
+$lang['Move to album'] = 'Flytt til album';
+$lang['No destination tag selected'] = 'Ingen mål tag valgt';
+$lang['Obsolete Plugins'] = 'Foreldet tillegg.';
+$lang['Original Size'] = 'Original størrelse';
+$lang['pending validation'] = 'venter på bekreftelse';
+$lang['Photos generation in progress...'] = 'Generering av bilder foregår...';
+$lang['registered users'] = 'registrert bruker';
+$lang['Resize after upload'] = 'Endre størrelse etter opplasting';
+$lang['Save manual order'] = 'Lagre manuell rekkefølge';
+$lang['Select at least two tags for merging'] = 'Velg minst to tagger for fletting';
+$lang['Select the destination tag'] = 'Velg mål tag';
+$lang['Send connection settings by email'] = 'Send tilkoblingsinfo på epost';
+$lang['Some upgrades are available for extensions.'] = 'Oppgraderinger er tilgjengelig for tillegg.';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Tag <em>%s</em> er flettet med tag <em>%s</em>';
+$lang['The original image quality must be a number between %d and %d'] = 'Opprinnelig bildekvalitet må være et tall mellom %d og %d.';
+$lang['The original maximum height must be a number between %d and %d'] = 'Opprinnelig maksimale bildehøyde må være et tall mellom %d og %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Opprinnelig maksimale bildebredde må være et tall mellom %d og %d';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Dette albumet inneholder %s bilder, lagt til mellom %s og %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Dette albumet inneholder %d bilder, lag til %s.';
+$lang['This album contains no photo.'] = 'Dette albumet er tomt.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE TILLEGGET ER NÅ EN DEL AV PIWIGO! AVINSTALLER DET NÅ! ';
+$lang['Thumbnails generation in progress...'] = 'Generering av miniatyrbilder er i gang.';
+$lang['Unlock gallery'] = 'Lås opp galleri';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVARSEL! Dette tillegge ser ikke ut til å være kompatibelt med denne versjonen av Piwigo.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Du bruker nettleseropplasting. Prøv <a href="%s">Flashopplasting </a> isteden.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Du bruker Flashopplasting. Prøv <a href="%s">Nettleseropplasting </a> isteden.';
+$lang['Available on'] = 'Tilgjengelig på';
+$lang['Available versions for'] = 'Tilgjengelig versjon for';
+$lang['List'] = 'Vis';
+$lang['Not cropped correctly?'] = 'Ikke beskåret riktig?';
+$lang['Notify administrators when a comment is'] = 'Gi beskjed til administrator når en kommentar er';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Save visits in history for'] = 'Lagre besøkshistorie for ';
+$lang['Unable to dump database.'] = 'Kan ikke dumpe databasen';
+$lang['You can activate only one mobile theme.'] = 'Du kan kun aktivere et mobilt tema.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikke definere standard bilderekkefølge, fordi du har eget oppsett i din lokale konfigurasjon.';
+$lang['simple visitors'] = 'vanlig besøkende';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u brukere har automatisk rettigheter fordi de tilhører en gruppe som allerede har rettigheter.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> applikasjonen gjør at du kan koble til ditt Piwigo-galleri fra din Android-telefon, opprette album og laste opp flere bilder samtidig.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em> applikasjonen gjør at du kan koble til ditt Piwigo-galleri fra din iPhone, iPad eller iPod Touch, opprette album og laste opp flere bilder samtidig.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom et et bildebehandlingsprogram, lagd for å å organisere svært mange bilder, samt etterbehandling av bilder.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er et kraftig verktøy for å avgrense bilder, og for å behandle store bildebibliotek på Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er lagd for profesjonelle fotografer med iPhoto enkelhet.';
+$lang['Applications'] = 'Applikasjoner';
+$lang['Apply watermark if height is bigger than'] = 'Legg på vannmerke hvis høyden er større enn';
+$lang['Apply watermark if width is bigger than'] = 'Legg på vannmerke hvis bredden er større enn';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard, midten av fokus er plassert i midten av bilde.';
+$lang['Center of interest'] = 'Midten av fokus';
+$lang['Delete multiple size images'] = 'Slett bilder med flere størrelser';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funksjoner inkluderer å bla i gallerier, opprette album og laste opp bilder.';
+$lang['Follow Orientation'] = 'Følg retning';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For beskårede bilder, som feks. "kvadratiske", vil Piwigo på best mulig måte prøve å inkludere midten av fokus.';
+$lang['Generate multiple size images'] = 'Lag bilder med flere størrelser';
+$lang['Groups and users'] = 'Grupper og brukere';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Hvis ikke HD er tilgjengelig, og hvis aktuell webstørrelse er større enn ny størrelse, vil Piwigo flytte bildet som HD, og opprette nedskalert webstrørrelse bilde. ';
+$lang['No group is permitted to see this private album'] = 'Ingen grupper har rettigheter til å se dette private album';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I Linux kan du enkelt installere Shortwell i programvaresenteret, og deretter aktivere Piwigo publisering.';
+$lang['Opacity'] = 'Opasitet';
+$lang['Permission granted for groups'] = 'Rettigheter satt for grupper';
+$lang['Permission granted for users'] = 'Rettigheter satt for brukere.';
+$lang['Permission management'] = 'Administrere rettigheter';
+$lang['Photo sizes with crop'] = 'Bildestørrelse med beskjæring';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publiseringstillegg for Lightroom';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksporteringstillegg for Aperture.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksporteringstillegg for iPhone.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publiseringstillegg for Shortwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publiseringstillegg for digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Ekstern galleriklient for Android) er en åpen-kildekode (GPL v3) Piwigo klient for Android.';
+$lang['Select a file'] = 'Velg en fil';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Velg et område med musa for å definere nytt fokus.';
+$lang['Select groups...'] = 'Velg grupper...';
+$lang['Select users...'] = 'Velg brukere...';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shortwell er et Linux åpen-kildekode program for å organisere bilder. Det er standard bildebehandlingsprogram i Ubuntu og Fedora.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksporteringstillegg gjør at du kan opprette album og eksportere bilder.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publiseringstillegg muliggjør eksport og synkronisering av bilder fra Lightroom direkte til ditt Piwigo galleri.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Midten av fokus er det mest meningsfulle delen av bilde.';
+$lang['There is no group in this gallery.'] = 'Ingen grupper i dette galleriet.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For å eksportere dine bilder fra digiKam til Piwigo, må du installere digiKam og Kipi-tillegg.';
+$lang['Web Form'] = 'Web-skjema';
+$lang['X Position'] = 'X posisjon';
+$lang['X Repeat'] = 'X repetering';
+$lang['Y Position'] = 'Y posisjon';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Parameteren <i>$conf[\'order_by\']</i> du har spesifisert i din lokale konfigurasjonsfil er foreldet. Vennligst fjern den, eller skift navn på den til <i>$conf[\'order_by_custom\']</i>!';
+$lang['add a new watermark'] = 'legg til vannmerke';
+$lang['any visitor can see this album'] = 'alle besøkende kan se dette album';
+$lang['bottom left corner'] = 'nedre venstre hjørne';
+$lang['bottom right corner'] = 'nedre høyre hjørne';
+$lang['custom'] = 'Egendefinert';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam er et gratis avansert digital bildebehandlingsprogram for Linux, Windows og MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er lagd for fotografer som ønsker å se, behandle, redigere, forbedre, organisere, tagge og dele bilder.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standard bildebehandler på MacOSX. Piwigo eksporteringstillegg lar deg lage nye album og eksportere dine bilder direkte fra iPhoto til ditt Piwigo galleri.';
+$lang['include photos with lower privacy level'] = 'ta med bilder av lavere rettighetsnivå';
+$lang['middle'] = 'senter';
+$lang['top left corner'] = 'øvre venstre hjørne';
+$lang['top right corner'] = 'øvre høyre hjørne';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besøkende må logge inn for å se dette album';
+$lang['Multiple Size'] = 'Flere størrelser';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dager';
+$lang['%d hour'] = '%d time';
+$lang['%d hours'] = '%d timer';
+$lang['%d minute'] = '%d minutt';
+$lang['%d minutes'] = '%d minutter';
+$lang['%d month'] = '%d måned';
+$lang['%d months'] = '%d måneder';
+$lang['%d second'] = '%d sekund';
+$lang['%d seconds'] = '%d sekunder';
+$lang['%d year'] = '%d år';
+$lang['%d years'] = '%d år';
+$lang['%s ago'] = '%s siden';
+$lang['%s in the future'] = '%s i framtiden';
+$lang['Added by %s'] = 'Lagt til av %s';
+$lang['Numeric identifier : %d'] = 'Numerisk identifikasjon: %d';
+$lang['Original file : %s'] = 'Orginal fil: %s';
+$lang['Posted %s on %s'] = 'Postet %s den %s';
+$lang['Rated %d times, score : %.2f'] = 'Vurdert %d ganger, poeng: %.2f';
+$lang['Sharpen'] = 'Gjør skarpere';
+$lang['Visited %d times'] = 'Sett %s ganger';
+$lang['Watermark'] = 'Vannmerke';
+$lang[' and %d virtuals'] = 'og %d virtuell';
+$lang['%d physicals'] = '%d fysisk';
+$lang['%d week'] = '%d uke';
+$lang['%d weeks'] = '%d uker';
+$lang['Edit photo'] = 'Endre bilde';
+$lang['create a new site'] = 'lag en ny side';
+$lang['No order field selected'] = 'Ingen rekkefølgefelt er valgt';
+$lang['Duplicate selected tags'] = 'Flere tagger valgt';
+$lang['Name of the duplicate'] = 'Navn på duplikater';
+$lang['Source tag'] = 'Kildetagg';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagg "%s" er nå en duplikat av "%s"';
+$lang['Landscape'] = 'Liggende';
+$lang['Manage photos'] = 'Behandle bilder';
+$lang['Minimum height'] = 'Minimum høyde';
+$lang['Minimum width'] = 'Minimum bredde';
+$lang['Number of albums per page'] = 'Antall album pr side';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portrett';
+$lang['View in gallery'] = 'Se i galleri';
+$lang['Ratio'] = 'Ratio';
+$lang['Duplicate'] = 'Duplikat';
+$lang['Manage the members'] = 'Behandle medlemmene';
+$lang['Merge selected groups'] = 'Flett markerte grupper';
+$lang['No group selected, no action possible.'] = 'Ingen gruppe markert, kan ikke gjøre noe.';
+$lang['No members to manage'] = 'Ingen medlemmer å behandle';
+$lang['Please select at least two groups'] = 'Vennligst marker minst to grupper';
+$lang['Rename'] = 'Gi nytt navn';
+$lang['This group will be set to default'] = 'Denne gruppen bli satt til standard';
+$lang['This group will be unset to default'] = 'Denne gruppen mister merket standard';
+$lang['Type here the name of the new group'] = 'Skriv her navnet på den nye gruppen';
+$lang['between %.2f and %.2f'] = 'mellom %.2f og %.2f';
+$lang['between %d and %d pixels'] = 'mellom %d og %d piksler';
+$lang['Purge user cache'] = 'Rens bruker cache';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Endring av bildestørrelse er slått av, siden du bruker GD som grafikkgalleri.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Bildets dimensjoner vil bli redusert til %dx%d piksler.';
+$lang['Select at least one tag'] = 'Velg minst en tag';
+$lang['Basic settings'] = 'Generelle innstillinger';
+$lang['General'] = 'Genrelt';
+$lang['Mail theme'] = 'Eposttema';
+?>
Index: /tags/2.6.0RC1/language/nb_NO/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/common.lang.php	(revision 25596)
@@ -0,0 +1,419 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Norwegian [NO]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=483
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "Norwegian";
+$lang_info['country'] = "Norway";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "no";
+$lang_info['zero_plural'] = true;
+
+$lang['useful when password forgotten'] = "Nyttig om passord blir glemt";
+$lang['Quick search'] = "Hurtigsøk";
+$lang['Connected user: %s'] = "Pålogget bruker: %s";
+$lang['IP: %s'] = "IP: %s";
+$lang['Browser: %s'] = "Browser: %s";
+$lang['Author: %s'] = "Forfatter: %s";
+$lang['Comment: %s'] = "Kommentar: %s";
+$lang['Comment by %s'] = "Kommentert av %s";
+$lang['User: %s'] = "Bruker: %s";
+$lang['Email: %s'] = 'E-post: %s';
+$lang['Admin: %s'] = "Admin: %s";
+$lang['Registration of %s'] = "Registrering av %s";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "Feil status for bruker \"gjest\", default status vil bli brukt. Vennligst kontakt webmaster.";
+$lang['this email address is already in use'] = 'En annen bruker har allerede denne e-postadressem';
+$lang['Tag results for'] = "Tag resultat for";
+$lang['from %s to %s'] = "fra %s til %s";
+$lang['Play of slideshow'] = 'Start slideshow';
+$lang['Pause of slideshow'] = "Pause slideshow";
+$lang['Repeat the slideshow'] = "Gjenta slideshow";
+$lang['Not repeat the slideshow'] = "Ikke repeter slideshow";
+$lang['Reduce diaporama speed'] = "Reduser slideshow hastighet";
+$lang['Accelerate diaporama speed'] = "Øk slideshow hastighet";
+$lang['Submit'] = "Send";
+$lang['Yes'] = "Ja";
+$lang['No'] = "Nei";
+$lang['%d photo'] = "%d bilde";
+$lang['%d photos'] = "%d bilder";
+$lang['%d photo is also linked to current tags'] = '%d bilde er også linket til gjeldende stikkord';
+$lang['%d photos are also linked to current tags'] = '%d bilder er også linket til gjeldende stikkord';
+$lang['display photos linked to this tag'] = 'Se kun bilder linket til gjeldende stikkord';
+$lang['photos posted during the last %d days'] = "bilder postet innen de siste %d dager";
+$lang['Piwigo Help'] = "Piwigo hjelp";
+$lang['Rank'] = "Rangering";
+$lang['group by letters'] = "ordne etter bokstav";
+$lang['letters'] = "bokstav";
+$lang['show tag cloud'] = 'vis stikkordsky';
+$lang['cloud'] = 'sky';
+$lang['Reset to default values'] = "Sett tilbake til standard verdier";
+$lang['delete all photos from your favorites'] = "slett alle bilder fra dine favoritter";
+$lang['Sent by'] = "Sendt av";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Cookies er blokkert eller ikke støttet av din nettleser. Du må aktivere cookies for å logge inn.";
+$lang['day'][0] = 'Søndag';
+$lang['day'][1] = 'Mandag';
+$lang['day'][2] = 'Tirsdag';
+$lang['day'][3] = 'Onsdag';
+$lang['day'][4] = 'Torsdag';
+$lang['day'][5] = 'Fredag';
+$lang['day'][6] = 'Lørdag';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'Desember';
+$lang['month'][1] = 'Januar';
+$lang['month'][2] = 'Februar';
+$lang['month'][3] = 'Mars';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Juni';
+$lang['month'][7] = 'July';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['Albums'] = 'Album';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Lukk dette vinduet';
+$lang['Complete RSS feed (photos, comments)'] = 'Komplett RSS mating (bilder, kommentarer)';
+$lang['Confirm Password'] = 'Bekreft Passord';
+$lang['Connection settings'] = 'Tilkoblings innstillinger';
+$lang['Login'] = 'Logg inn';
+$lang['Contact webmaster'] = 'Kontakt webmaster';
+$lang['Create a new account'] = 'Opprett ny konto';
+$lang['Created on'] = 'Opprettet den';
+$lang['Creation date'] = 'Dato for opprettelse';
+$lang['Current password is wrong'] = 'Passordet er feil';
+$lang['Dimensions'] = 'Dimensjoner';
+$lang['Display'] = 'Vis';
+$lang['Each listed rule must be satisfied.'] = 'Alle listede krav må være oppfylt.';
+$lang['Email address'] = 'E-postadresse';
+$lang['Enter your personnal informations'] = 'Skriv inn dine personlige data';
+$lang['Error sending email'] = 'Feil ved sending av e-post';
+$lang['File name'] = 'Fil navn';
+$lang['File'] = 'Fil';
+$lang['Filesize'] = 'Filstørrelse';
+$lang['Filter and display'] = 'Filtrer og vis';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Glemt passord?';
+$lang['Go through the gallery as a visitor'] = 'Naviger galleriet som gjest';
+$lang['Help'] = 'Hjelp';
+$lang['Identification'] = 'Identifikasjon';
+$lang['Photos only RSS feed'] = 'Bare bilder RSS feed';
+$lang['Keyword'] = 'Nøkkelord';
+$lang['Links'] = 'Linker';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Ny den %s';
+$lang['%d album updated'] = '%d album oppdatert';
+$lang['%d albums updated'] = '%d album oppdatert';
+$lang['%d comment to validate'] = '%d kommentar å godkjenne';
+$lang['%d comments to validate'] = '%d kommentarer å godkjenne';
+$lang['%d new comment'] = '%d ny kommentar';
+$lang['%d new comments'] = '%d nye kommentarer';
+$lang['%d comment'] = '%d kommentar';
+$lang['%d comments'] = '%d kommentarer';
+$lang['%d hit'] = '%d treff';
+$lang['%d hits'] = '%d treff';
+$lang['%d new photo'] = '%d nytt bilde';
+$lang['%d new photos'] = '%d nye bilder';
+$lang['%d new user'] = '%d ny bruker';
+$lang['%d new users'] = '%d nye brukere';
+$lang['About'] = 'Om';
+$lang['All tags'] = 'Alle stikkord';
+$lang['Any tag'] = 'Valgte stikkord';
+$lang['At least one listed rule must be satisfied.'] = 'Minst en listet regel må være med.';
+$lang['Author'] = 'Forfatter';
+$lang['Notification'] = 'Til informasjon';
+$lang['Number of items'] = 'Antall poster';
+$lang['Original dimensions'] = 'Original dimensjoner';
+$lang['Password forgotten'] = 'Glemt passord';
+$lang['Password'] = 'Passord';
+$lang['Post date'] = 'Post dato';
+$lang['Posted on'] = 'Postet den';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Hurtigtilkobling';
+$lang['RSS feed'] = 'RSS mating';
+$lang['Register'] = 'Registrere';
+$lang['Registration'] = 'Registrering';
+$lang['Related tags'] = 'Relaterte stikkord';
+$lang['Reset'] = 'Tibakestill';
+$lang['Retrieve password'] = 'Motta passord';
+$lang['Search rules'] = 'Søke kriterie';
+$lang['Search tags'] = 'Søk i stikkord';
+$lang['Search'] = 'Søk';
+$lang['display available tags'] = 'Se tilgjengelige stikkord';
+$lang['Since'] = 'Siden';
+$lang['Sort by'] = 'Sorter etter';
+$lang['Sort order'] = 'Sorter alfabetisk';
+$lang['Tag'] = 'Stikkord';
+$lang['Tags'] = 'Stikkord';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS mater gir varsling om nye aktiviteter fra denne web siden: nye bilder, oppdaterte album, nye kommentarer. For å bli brukt i en RSS leser.';
+$lang['Unknown feed identifier'] = 'ukjent mater gjenkjenner';
+$lang['User comments'] = 'Bruker kommentarer';
+$lang['Username'] = 'Brukernavn';
+$lang['Visits'] = 'Besøk';
+$lang['Webmaster'] = 'Webmaster';
+$lang['About Piwigo'] = 'Om Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Du er ikke autorisert til å se ønsket side';
+$lang['add this photo to your favorites'] = 'legg dette bilde til dine favoritter';
+$lang['Administration'] = 'Administrasjon';
+$lang['all'] = 'alle';
+$lang['ascending'] = 'stigende';
+$lang['author(s) : %s'] = 'forfatter(e) : %e';
+$lang['Expand all albums'] = 'Vis alle album';
+$lang['posted after %s (%s)'] = 'postet etter %s (%s)';
+$lang['posted before %s (%s)'] = 'postet before %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'postet mellom %s (%s) og %s (%s)';
+$lang['posted on %s'] = 'postet den %s';
+$lang['Best rated'] = 'Best rangert';
+$lang['display best rated photos'] = 'vis de best rangerte bildene';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Alle';
+$lang['display each day with photos, month per month'] = 'Vis hver dag med bilder, måned etter måned';
+$lang['View'] = 'Vis';
+$lang['chronology_monthly_calendar'] = 'Månedlig kalender';
+$lang['chronology_monthly_list'] = 'Månedlig liste';
+$lang['chronology_weekly_list'] = 'Ukentlig liste';
+$lang['Click here if your browser does not automatically forward you'] = 'Klikk her om din nettleser ikke automatisk sender deg viderer.';
+$lang['comment date'] = 'Kommentert dato';
+$lang['Comment'] = 'kommentar';
+$lang['Your comment has been registered'] = 'Din kommentar er registrert';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Overbuffringsvern : Vennligst vent før du prøver å legge til den ny kommentar';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Din kommentar har IKKE blitt registrert da den ikke ble validert';
+$lang['An administrator must authorize your comment before it is visible.'] = 'En administrator må godkjenne din kommentar før den blir synlig.';
+$lang['This login is already used by another user'] = 'Denne innloggingen er allerede i bruk.';
+$lang['Comments'] = 'Kommentarer';
+$lang['Add a comment'] = 'Legg til en kommentar';
+$lang['created after %s (%s)'] = 'oprettet etter %s (%s)';
+$lang['created before %s (%s)'] = 'opprettet før %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'opprettet mellom %s (%s) og %s (%s)';
+$lang['created on %s'] = 'opprettet den %s';
+$lang['Customize'] = 'Egendefinert';
+$lang['Your Gallery Customization'] = 'Ditt galleri egendefinert';
+$lang['Default'] = 'Standard';
+$lang['delete this photo from your favorites'] = 'slett bildet fra dine favoritter';
+$lang['Delete'] = 'Slett';
+$lang['descending'] = 'synkende';
+$lang['Download'] = 'Last ned';
+$lang['Download this file'] = 'last ned denne filen';
+$lang['edit'] = 'redigere';
+$lang['wrong date'] = 'feil dato';
+$lang['excluded'] = 'ekskludert';
+$lang['Your favorites'] = 'Mine favoritter';
+$lang['display your favorites photos'] = 'vis mine favoritt bilder';
+$lang['Favorites'] = 'Favoritter';
+$lang['First'] = 'Første';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet er stengt for vedlikehold. Vennligst kom tilbake senere.';
+$lang['Page generated in'] = 'Side generert i';
+$lang['guest'] = 'gjest';
+$lang['Hello'] = 'Hallo';
+$lang['available for administrators only'] = 'kun tilgjengelig for administrator';
+$lang['display this album'] = 'vis bilder fra root i dette albumet';
+$lang['display last user comments'] = 'Se siste brukers kommentarer';
+$lang['customize the appareance of the gallery'] = 'Egendefiner visning av dette galleriet';
+$lang['search'] = 'søk';
+$lang['Home'] = 'Hjem';
+$lang['in this album'] = 'i dette albumet';
+$lang['in %d sub-album'] = 'i %d under-album';
+$lang['in %d sub-albums'] = 'i %d under-albumer';
+$lang['included'] = 'inkludert';
+$lang['Invalid password!'] = 'Ugyldig passord!';
+$lang['Language'] = 'Språk';
+$lang['last %d days'] = 'siste %d dager';
+$lang['Last'] = 'Sist';
+$lang['Logout'] = 'Logg ut';
+$lang['obligatory'] = 'obligatorisk';
+$lang['display a calendar by creation date'] = 'vis en kalender fra opprettelses dato';
+$lang['display all photos in all sub-albums'] = 'vis alle elementer i alle grunn-albumer';
+$lang['return to normal view mode'] = 'tilbake til normalvisning';
+$lang['display a calendar by posted date'] = 'vis en kalender etter dato postet';
+$lang['Most visited'] = 'Mest besøkte';
+$lang['display most visited photos'] = 'vis mest besøkte bilder';
+$lang['The number of photos per page must be a not null scalar'] = 'Antall bilder per side må være større en null';
+$lang['Number of photos per page'] = 'Antall bilder per side';
+$lang['Unknown identifier'] = 'Ukjent identifier';
+$lang['New password'] = 'Nytt passord';
+$lang['Rate this photo'] = 'Gi karakter på dette bildet';
+$lang['Next'] = 'Neste';
+$lang['no rate'] = 'ingen karakter';
+$lang['Photos posted within the last %d day.'] = 'Elementer posted kun de %d siste dager.';
+$lang['Photos posted within the last %d days.'] = 'Elementer posted kun de %d siste dager.';
+$lang['password updated'] = 'passord oppdatert';
+$lang['Recent period must be a positive integer value'] = 'Siste periode må være en positiv verdi';
+$lang['photo'] = 'bilde';
+$lang['Click on the photo to see it in high definition'] = 'Klikk på bildet for å se det i høy oppløsning';
+$lang['Show file metadata'] = 'Vis filens metadata';
+$lang['Powered by'] = 'Drevet av';
+$lang['Preferences'] = 'Referanser';
+$lang['Previous'] = 'Forrige';
+$lang['Random photos'] = 'Tilfeldige bilder';
+$lang['display a set of random photos'] = 'viser en gruppe tilfeldige bilder';
+$lang['Recent albums'] = 'Siste album';
+$lang['display recently updated albums'] = 'viser nylig oppdaterte album';
+$lang['Recent period'] = 'Siste periode';
+$lang['Recent photos'] = 'Siste bilder';
+$lang['display most recent photos'] = 'Viser de sist sette bilder';
+$lang['Redirection...'] = 'Videresender...';
+$lang['Please, enter a login'] = 'Vennligst logg inn';
+$lang['login mustn\'t end with a space character'] = 'login må ikke ende med et mellomrom';
+$lang['login mustn\'t start with a space character'] = 'login må ikke starte med et mellomrom';
+$lang['this login is already used'] = 'denne innloggingen er allerede i bruk';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mail addresse må være tilsvarende xxx@yyy.eee (eksempel : jack@altern.org)';
+$lang['Auto login'] = 'Auto innlogging';
+$lang['%d Kb'] = '%d Kb';
+$lang['Week %d'] = 'Uke %d';
+$lang['remove this tag from the list'] = 'fjern stikkord fra denne listen';
+$lang['representative'] = 'representative';
+$lang['Search for Author'] = 'Søk etter forfatter';
+$lang['Search in albums'] = 'Søk i album';
+$lang['Search by date'] = 'Søk etter dato';
+$lang['Date'] = 'Dato';
+$lang['End-Date'] = 'Ende dato';
+$lang['Kind of date'] = 'Type dato';
+$lang['Search for words'] = 'Søk etter ord';
+$lang['Search for all terms'] = 'Søk i alle termer';
+$lang['Search for any term'] = 'Søk i hvilken som helst term';
+$lang['Empty query. No criteria has been entered.'] = 'Tøm spørring. Ingen kriterier har blitt lagt inn.';
+$lang['Search results'] = 'Søke resultat';
+$lang['Search in sub-albums'] = 'Søk i under-album';
+$lang['searched words : %s'] = 'søkte ord : %';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'sett som album representant';
+$lang['Show number of comments'] = 'Vis antall kommentarer';
+$lang['Show number of hits'] = 'Vis antall treff';
+$lang['slideshow'] = 'slideshow';
+$lang['stop the slideshow'] = 'stopp slideshow';
+$lang['Specials'] = 'Spesial';
+$lang['SQL queries in'] = 'SQL spørring' ;
+$lang['display only recently posted photos'] = 'Vis kun sisite postede bilder';
+$lang['return to the display of all photos'] = 'tilbake til visning av alle bilder';
+$lang['the beginning'] = 'begynnelsen';
+$lang['Thumbnails'] = 'Miniatyrbilder';
+$lang['Menu'] = 'Meny';
+$lang['A comment on your site'] = 'En kommentar på din side';
+$lang['today'] = 'i dag';
+$lang['Update your rating'] = 'Oppdater din rating';
+$lang['the username must be given'] = 'brukernavn kreves';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Album results for'] = 'Album resultat for';
+$lang['Edit a comment'] = 'Endre en kommentar';
+$lang['Are you sure?'] = 'Er du sikker?';
+$lang['(!) This comment requires validation'] = '(!) Denne kommentaren krever godkjenning';
+$lang['Welcome'] = 'Velkommen';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Velkommen til din Piwigo photo gallery!';
+$lang['... or browse your empty gallery'] = '... eller bla i ditt tomme galleri';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... eller vennligst deaktiver denne beskjeden, jeg vil finne ut av det selv';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hallo %, ditt Piwigo photo gallery er tomt!';
+$lang['I want to add photos'] = 'Jeg vil legge til foto';
+$lang['Manage this user comment: %s'] = 'Behandle denne brukers kommentar: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'E-postadresse mangler. Vennligst skriv en e-postadresse.';
+$lang['This author modified following comment:'] = 'Denne forfatteren modifiserte følgende kommentar:';
+$lang['This author removed the comment with id %d'] = 'Denne forfatteren fjernetkommentaren med id %d';
+$lang['Change my password'] = 'Bytt mitt passord';
+$lang['Check your email for the confirmation link'] = 'Bekreftelseslink er sent til deg på epost';
+$lang['Edit'] = 'Endre';
+$lang['Enter your new password below.'] = 'Skriv inn ditt nye passord.';
+$lang['EXIF Metadata'] = 'Avansert bildedata';
+$lang['Hello %s,'] = 'Hei %s,';
+$lang['html tags are not allowed in login'] = 'html-kode er ikke lov i brukernavn/passord';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Hvis dette var en feiltagelse, bare ignorer denne epost, ingen ting vil skje.';
+$lang['Invalid key'] = 'Feil nøkkel';
+$lang['Invalid username or email'] = 'Feil brukernavn eller passord';
+$lang['IPTC Metadata'] = 'Bildedata';
+$lang['Password reset is not allowed for this user'] = 'Du har ikke lov til å nullstille passord';
+$lang['Password Reset'] = 'Nullstill passord';
+$lang['Please enter your username or email address.'] = 'Skriv inn ditt brukernavn eller passord';
+$lang['Rating score'] = 'Karakter';
+$lang['Return to home page'] = 'Tilbake til hovedsiden';
+$lang['Send my connection settings by email'] = 'Send tilkoblingsinnstillinger på epost';
+$lang['Show oldest comments first'] = 'Vis eldste kommentarer først';
+$lang['Show latest comments first'] = 'Vis seneste kommentert først';
+$lang['square'] = 'Kvadrat';
+$lang['thumb'] = 'Miniatyrbilde';
+$lang['2small'] = 'XXS - bitte lite';
+$lang['xsmall'] = 'XS - veldig lite';
+$lang['small'] = 'S - lite';
+$lang['medium'] = 'M - medium';
+$lang['large'] = 'L - stor';
+$lang['xlarge'] = 'XL - veldig stort';
+$lang['xxlarge'] = 'XXL - kjempestort';
+$lang['Original'] = 'Original';
+$lang['Password: %s'] = 'Passord: %s';
+$lang['Username: %s'] = 'Brukernavn: %s';
+$lang['Photo sizes'] = 'Bildestørrelser';
+$lang['View in'] = 'Se bilde på';
+$lang['Mobile'] = 'Mobil';
+$lang['Desktop'] = 'Skrivebord';
+$lang['%d rates'] = '%d karakter';
+$lang['Here are your connection settings'] = 'Her er din påloggingsinfo';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Hvis du tror du fikk denne eposten ved en feiltagelse, vennligst ta kontakt med oss på %s.';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Noen har bedt om å tilbakestille passordet for følgende bruker:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registrering fullført, du får snart en epost med info om pålogging.
+Velkommen!';
+$lang['Thank you for registering at %s!'] = 'Takk for at du registrerte deg hos %s!';
+$lang['The passwords do not match'] = 'Passordene er ikke like';
+$lang['To reset your password, visit the following address:'] = 'For å tilbakestille passordet, vennligst bruk følgene lenke:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Bruker "%s" har ikke registrert epostadresse, tilbakestilling av passord er ikke mulig';
+$lang['Username "%s" on gallery %s'] = 'Bruker "%s" i galleri %s';
+$lang['Username modification'] = 'Endre brukernavn';
+$lang['Username or email'] = 'Brukernavn eller epost';
+$lang['You will receive a link to create a new password via email.'] = 'Du får en link på epost for å lage nytt passord.';
+$lang['Your password has been reset'] = 'Ditt passord har blitt endret.';
+$lang['Your username has been successfully changed to : %s'] = 'Ditt brukernavn har blitt endret til: %s';
+$lang['Date created, new &rarr; old'] = 'Dato opprettet, nyeste &rarr; eldste';
+$lang['Date created, old &rarr; new'] = 'Dato opprettet, eldste &rarr; nyeste';
+$lang['Date posted, new &rarr; old'] = 'Dato publisert, nyeste &rarr; eldste';
+$lang['Date posted, old &rarr; new'] = 'Dato publisert, eldste &rarr; nyeste';
+$lang['File name, A &rarr; Z'] = 'Filnavn, A &rarr; Å';
+$lang['File name, Z &rarr; A'] = 'Filnavn, Å &rarr; A';
+$lang['Manual sort order'] = 'Manuell sortering';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Bildenummer, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Bildenummer, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Bildetittel, A &rarr; Å';
+$lang['Photo title, Z &rarr; A'] = 'Bildetittel, Å &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Karakter, høy &rarr; lav';
+$lang['Rating score, low &rarr; high'] = 'Karakter, lav &rarr; høy';
+$lang['Visits, high &rarr; low'] = 'Besøk, høy &rarr; lav';
+$lang['Visits, low &rarr; high'] = 'Besøk, lav &rarr; høy';
+$lang['%d rate'] = '%d vurder';
+$lang['Bad request'] = 'Feil forespørsel';
+$lang['Forbidden'] = 'Ingen tilgang';
+$lang['Page not found'] = 'Siden ikke funnet';
+$lang['Permalink for album not found'] = 'Permalink for album ikke funnet';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo støtte på et problem som ikke kan gjenopprettes';
+$lang['Requested album does not exist'] = 'Forespurt album finnes ikke';
+$lang['Requested tag does not exist'] = 'Forespurt stikkord finnes ikke';
+$lang['Email address is mandatory'] = 'E-postadresse er obligatorisk';
+$lang['Username is mandatory'] = 'Brukernavn er obligatorisk';
+$lang['mandatory'] = 'obligatorisk';
+$lang['Website'] = 'Nettside';
+$lang['Your website URL is invalid'] = 'Adressen til nettsiden er feil';
+$lang['Email'] = 'Epost';
+$lang['First Page'] = 'Første side';
+$lang['Go back to the album'] = 'Tilbake til albumet';
+$lang['Last Page'] = 'Siste side';
+$lang['Password is missing. Please enter the password.'] = 'Passord mangler. Vennligst skriv passord.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Passord bekreftelse mangler. Vennligst bekreft det valgte passord.';
+?>
Index: /tags/2.6.0RC1/language/nb_NO/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,134 @@
+<h2>Rediger album</h2>
+
+<h3>Informasjon</h3>
+
+<ul>
+
+  <li><strong>navn</strong>: gi nytt navn til album (en virtuell navneendring om dette er et fysisk album).</li>
+
+  <li><strong>Beskrivelse</strong>: kort tekst som gir en ide om innholdet,
+  denne teksten vil vises i bunnen av miniatyr bildene.</li>
+
+</ul>
+
+<h3>Flytte</h3>
+
+<p>Om albumet er virtuelt, kan du flytte det. Flytting av album betyr å endre dets tillhørende mappe/album.</p>
+
+<h3>Alternativer</h3>
+
+<ul>
+
+  <li><strong>Tilgangstype type</strong>: Rettighets behandler. Om du gjør et album privat, vil alle dens under albums også bli
+
+private.
+   Om du gjør et album tilgjengelig for alle, vil alle bundne album bli tilgjengelig for alle.</li>
+
+  <li><strong>Lås</strong>: Albumet og dets under-album vil bli midlertidig utilgjengelig for vedlikehold .</li>
+
+  <li><strong>Comments</strong>: Autoriser brukere for å kunne kommentere dette albumet.</li>
+
+  <li><strong>Autoriser opplastinger</strong>: Autoriser brukere til å laste opp bilde filer. Dette alternativet er kun
+
+tilgjengelig for fysiske (ikke virtuelle) album.</li>
+
+</ul>
+
+<p>Du kan også redigere disse alternativene via "egenskaper" i
+Album menyen (Arkfane <span class="pwgScreen">Last opp</span>, <span
+class="pwgScreen">Kommentarer</span>, <span class="pwgScreen">Lås</span>,
+<span class="pwgScreen">Offentlig/Privat</span>, <span
+class="pwgScreen">Alternativer</span> tilgjengelig fra <span
+class="pwgScreen">Administrasjon &raquo; Album &raquo; Egenskaper</span>).</p>
+
+<h3>Sorterings rekkefølge</h3>
+
+<p>Bruk standard bilde sorterings rekkefølge.</p>
+
+<p>Indikerer om denne sortering rekkefølgen vil gjelde under album også.</p>
+
+<p>Velg spesifiserte sorterings rekkefølge på disse album.</p>
+<ul>
+<li><strong>Opprettelses dato</strong>: Dato for når bilder er tatt</li>
+<li><strong>Post dato</strong>: Synkroniserings dato</li>
+<li><strong>Gjennomsnittlige rangering (*)</strong>: Gjennomsittlig rangering kan bli endret av besøkendes rangering </li>
+<li><strong>Mest besøkte (*)</strong>: Det forrige besøket kan endre mest besøkte rekkefølgen</li>
+<li><strong>Fil navn</strong>: Navn som er satt i informasjons feltet</li>
+<li><strong>Id</strong>: Intern Id (siste album har en høyere id en den før der igjen.</li>
+
+</ul>
+<p><strong>(*)</strong>Advarsel: Vær nøye med å test dise sorterings rekkefølgene selv da de kan gi uventede resultater.</p>
+
+
+<h3>Representanter</h3>
+
+<p>Albumets representat er miniatyr bildet som vises på hoved siden (<span class="pwgScreen">category.php</span>) for å
+
+representere albumet når det kun består av under album og ingen bilder direkte(akkurat som et grunn album).</p>
+Bilder fra et album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Bilde side</span>: en av knappene lar deg sette gjeldende bilde som representant for gjeldende
+
+vist album. Knappen er kun synlig for administratorer.</li>
+
+  <li><span class="pwgScreen">Endre informasjon om et bilde</span> i
+  administrasjon. Dette skjermbildet kan nåes fra <span
+  class="pwgScreen">bilder.php</span> eller <span class="pwgScreen">Batch
+  behandler</span> i <em>unit modus</em>. Se hjelpefilen på dette skjermbildet for detaljer.</li>
+
+  <li><span class="pwgScreen">Administrasjon &raquo; Album &raquo; Egenskaper,
+  Representanter</span>. Se hjelpefilen på dette skjermbildet for detaljer.</li>
+
+  <li><span class="pwgScreen">Rediger album</span> (forrige skjermbilde).</li>
+
+</ul>
+
+<p>Valget for en representant avhenger av <code>allow_random_representative</code> konfigurasjons parametere (se <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>I standard modus (<code>godkjenn_tilfeldig_representativer</code> satt til usant(false)),
+vil hvert album som inneholder minst et element bli representert av et satt
+ellement. Når dette er satt (ved album opprettelse), vil representanten kun endres når en administrator ber om det.
+Om det representative bildet ikke passer,
+kan du få et nytt bilde i<strong>Finn en ny tilfeldig representant</strong>.</p>
+
+<p>Om <code>godkjenn_tilfeldig-representant</code> konfigurasjons parametere er sat til sant, kan en kategori bestående av
+
+bilder ikke ha noen satt representant. Bare bruk <strong>Slett representant</strong> knappen.</p>
+
+<p>Om albumet består av kun under album og ingen bilder, kan det alikevell bli representert av hvilket som helst element takket
+
+være <span class="pwgScreen">Endre informasjon om bildet</span> skjermbildet. Det eneste alterantivet på gjeldende skjermbilde
+
+er <strong>Slett representant</strong> knappen.</
+
+
+<h3>Link alle album elementer til et nytt album</h3>
+
+<ul>
+
+<li><strong>Virtuelle album navn</strong>: Navnet på det nye albumet som blir laget,
+alle bilder i det forrige albumet vil bli linket til det nye.</li>
+
+<li><strong>Forrige album</strong>: Hvor det nye albumet vil være,
+La dette være tomt for å legge den på root.</li>
+
+</ul>
+
+<h3>Link alle album bilder til eksisterende albums</h3>
+
+<ul>
+
+<li><strong>Album</strong>: Velg hvor albumet skal ligge.</li>
+
+</ul>
+
+<h3>Send en informasjons email til gruppe medlemmer</h3>
+
+<ul>
+
+<li><strong>Gruppe</strong>: tilgjengelige grupper</li>
+
+<li><strong>Mail innhold</strong>: Fri tekst som skal sendes.</li>
Index: /tags/2.6.0RC1/language/nb_NO/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Flytte virtuelle album</h2>
+
+<p>Kun virtuelle album kan ha et nytt side album.</p>
+
+<h3>Virtuelle album å flytte</h3>
+
+<p>Velg et eller flere virtuelle albumsom du vil flytte.
+Om listen er tom, betyr det at ingen er oprettet enda.</p>
+
+<h3>Nytt side album</h3>
+
+<p>Velg et nytt side album (virtuelt eller fysisk).
+Om du ikke velger et side album, Vil det valgte virtuelle bli flyttet til root.
+Et album kan ikke bli flyttet inn i seg selv eller til noen av sine egne undermapper.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Album alternativer</h2>
+
+<p>Alternativ behandling av flere album sammtidig.</p>
+
+<dl>
+
+<dt>Kommentarer</dt>
+<dd>Et bilde kan motta kommentarer fra besøkende om det tillhører et album som har kommentarer aktivert.</dd>
+
+<dt>Lås</dt>
+<dd>Låste album er utilgjengelige grunnet vedlikehold. Kun administratorer kan se de i galleriet.</dd>
+
+<dt>Offentlig / privat</dt>
+<dd>Når et album blir privat, må det gies rettigheter til brukere og grupper</dd>
+
+<dt>Representative</dt>
+<dd>Dette alternativet er tilgjengelig når du setter konfigurasjons instillingene
+<code>allow_random_representative</code> (see <span
+class="filename">include/config_defaults.inc.php</span>) til
+<em>true</em>. Hvert album kan være representert av et tilfeldig bilde, eller et bilde valgt som en unik representant.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nb_NO/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Rediger album rettigheter</h2>
+
+<p>Dette skjmbildet er kun tilgjengelig for private album. Her kan du velge brukere og grupper autorisert for et album.</p>
+
+<h3>Grupper</h3>
+
+<p>Du kan nekte eller gi tilgang for grupper til gjeldende album. Ved å modifisere gruppe rettigheter, vil brukerens gruppetillhørighet bestemme om de blir nektet eller gitt tilgang til albumet.</p>
+
+<h3>Brukere</h3>
+
+<p>Du kan nekte eller gi tilgang til individuelle brukere. Brukere som har tilgang gjennom en gruppe kan bli nektet tilgang ved å sette unntak.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/configuration.html	(revision 25596)
@@ -0,0 +1,117 @@
+<h2>Konfigurasjon</h2>
+
+<p>Dette skjermbildet lar administratorer gjøre standard konfigurasjon. Men, dette bildet viser bare de enkle konfigurasjons
+parametrene som bør være nok for de fleste administratorer.
+Om du ønsker å se flere (og avanserte) konfigurasjons parametere, les filen <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Dette skjermbildet er delt opp i flere seksjoner, omgrupper konfigurasjons
+parametere etter temaer.</p>
+
+
+<h3>Hovedside</h3>
+<ul>
+  <li><strong>Galleri tittel</strong>: brukt i RSS mating og nyhetsbrev via email.</li>
+
+  <li><strong>Side banner</strong>: Vises på toppen av hver offentlige side.</li>
+
+  <li><strong>Galleri URL</strong>: brukes til RSS mating.</li>
+
+  <li><strong>Lås gallery</strong>: Låser hele galleriet for vedlikehold.
+  Kun administratorer brukere vil kunne nå galleriet.</li>
+
+  <li><strong>Stemming</strong>: Bilde avstemming er aktiv.</li>
+
+  <li><strong>Stemmer fra gjester</strong>: Selv uregistrerte brukere kan gi stemmer på bilder.</li>
+
+  <li><strong>Tillat bruker registrering</strong>: Alle kan registrere seg.</li>
+
+  <li><strong>Mail addresse er et krav for alle brukere</strong>: mail addresse blir sjekket ved registrering eller ved profil oppdatering,
+  unntak er om dette blir gjort av en administrator.</li>
+
+  <li><strong>Mailer administrator når en ny bruker registrerer seg</strong>: administratorer vil bli kontaktet via mail for hver registrering.</li>
+
+</ul>
+
+<h3>Historie</h3>
+
+  <p>Besøk på sider <span
+  class="pwgScreen">Album.php</span> og <span
+  class="pwgScreen">bilde.php</span> vil bli lagret i
+  <code>historie</code> tabellen.</p>
+
+  <p>Besøk vil vises i <span
+  class="pwgScreen">Administrasjon, verktøy, Historie</span>.</p>
+
+<ul>
+  <li><strong>Lagre sider besøkt av gjester</strong>: sider besøkt av gjester vil bli logget.</li>
+
+  <li><strong>Lagre sider besøkt av brukere</strong>: sider besøkt av brukere vil bli logget.</li>
+
+  <li><strong>Lagre sider besøk besøkt av administratorer</strong>: sider besøkt av administratorer vil bli logget.</li>
+
+</ul>
+
+<h3>Kommentarer</h3>
+<ul>
+
+  <li><strong>Kommentarer for alle</strong>: Selv uregistrerte gjester kan poste kommentarer.</li>
+
+  <li><strong>Antall kommentarer per side</strong>.</li>
+
+  <li><strong>Validering</strong>: en administrator må validere brukeres kommentarer før de blir synlige på siden. Brukers    kommentar validering gjøres i skjermbilde <span class="pwgScreen">Administrasjon, Verktøy,
+  Ventende kommentarer</span>.</li>
+
+  <li><strong>Email administrator når en reell kommentar blir lagt til</strong>:
+Sender en email til administratorer når en bruker legger inn en kommentar.</li>
+
+  <li><strong>Email administratorer når en kommentar trenger godkjenning</strong>:
+Sender en email til administratorer når en bruker legger inn en kommentar som krever godkjenning fra en administrator.
+Brukers kommentar godkjenning gjøres i skjermbildet <span class="pwgScreen">Administrasjon, Verktøy, Ventende kommentarer</span>.</li>
+
+</ul>
+
+<h3>Last opp</h3>
+<ul>
+  <li><strong>Viser opplastings link hver gang</strong>: Om opplastede album eksisterer, en opplasting link vil vises for hvert album.</li>
+  <li><strong>Brukers tilgangsnivå for opplasting</strong>: Begrenser opplasting til noen album til brukere</li>
+  <li><strong>Email administratorer når et bilde er lastet</strong>: Administratorer blir informert via mail hver gang et bilde blir
+    lastet opp av en bruker.</li>
+</ul>
+
+<h3>Instillinger for gjester</h3>
+
+<p>Her kan du endre visnings alternativene brukt av gjester, standad bruker som ikke er innlogget. Ved innlogging, blir disse alternativene overstyrt av brukerens egne alternativer (redigerbare i <span class="pwgScreen">profil</span>).</p>
+
+<p>Det er mulig å endre visningsalternativene for alle eksisterende brukere, gjøres via <span class="pwgScreen">Administrasjon &raquo;
+Brukere &raquo; Behandle</span> skjermbildet, hvor du kan velge en liste av brukere.</p>
+
+
+<ul>
+
+  <li><strong>Språk</strong>: Endrer kun tekst i Piwigo programmet. Album navn, bilde navn og alle beskrivende felt er ikke berørt.</li>
+
+  <li><strong>Antall bilder per rad</strong></li>
+
+  <li><strong>Antall rader per side</strong></li>
+
+<li><strong>Siste periode</strong>: Etter dager. Periode et bilde sakl vises som nytt. Må være mer en 1 dag.</li>
+
+
+  <li><strong>Vis alle album</strong>: Viser alle album som standard i menyen <em>Advarsel</em>: dette alternativet er ressurskrevende og kan generere en lang meny om ditt album tre inneholder mange album.</li>
+
+  <li><strong>Vis antall kommentarer</strong>: Viser antall kommentarer for hvert bilde i miniatyrbilde siden. Ressurs krevende.</li>
+
+  <li><strong>Vis antall hit </strong>: viser antall treff på bilder like under miniatyrbildet i miniatyrbilde siden.
+  Kun når avansert konfigurasjons parameter er satt til: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Noter: false er standard.</li>
+
+  <li><strong>Bildets maksimum bredde</strong>: maksimum vist bredde. Bilder større en denne instillingen vil bli tilpasset ved visning.
+  Heller en å velge dette alternativet, bør du overveie å modifisere bredden på dine bilder; Det vil være en mye bedre kjøre regel.</li>
+
+  <li><strong>Bildets maksimum høyde</strong>: samme kjøre regler som for maksimium bredde instillinger.</li>
+
+  <li><strong>Grensesnitt tema</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/nb_NO/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,92 @@
+
+<h2>Utvidelse for mal konfigurasjon</h2>
+
+<h3>Mål</h3>
+<p>Definere erstatnings status for hver malfra mal utvidelesen (mal kalt "replacer").</p>
+
+<p>"orginal mal" fra ./themes/default/template (eller hvilken som helst annet tema)
+vil bli erstattet av en "erstatter" om erstatteren er linket til denne "orginal malen"
+(eller, når den ønskede URL´en består av "valgfri URL nøkkelord").</p>
+
+<p>"Alternativ URL nøkkelord" er de du kan finne etter modilnavnets i URL´er.</p>
+
+<p>Derfor kan "Alternativ URL nøkkelord" være en aktiv "permalink"
+(se permalinker i vår dokumentasjon for videre forklaring).</p>
+
+<p>Les: `<a href="#warnings">Advarsel</a>` bruker tilrettelegginger.</p>
+
+<h3>Hva er mal utvidelser?</h3>
+
+<p>Dette konfigurasjons verktøyet er kraftfult både for nybegynnere og viderkommende brukere.
+Med FTP, i mal-utvideles mappen, kan web masteren duplikere en rekke av de distribuerte .tpl filene ("orginal male") med et annet navn
+("erstatter").
+
+"Orginal maler", tidligere orginalt støttede maler er:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Hvor kan jeg finne "orginal maler"?</h3>
+
+<p>Distribuerte orginal maler er i /themes/default/template/
+(ikke rediger dem med tanke på opggradering). Så med "orginal maler",
+hvilken som helst webmaster kan lage sin "erstatter (modifiserte maler)".</p>
+
+<h3>Hvor bør jeg lagre "erstattere"?</h3>
+
+<p><strong>Erstattere (modifiserte maler)</strong> mæ ligge i template-extension mappenr (eller i sine under mapper).
+Erstattere kan ha hvilket som helst navn med .tpl ending. For eksempel: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Hvordan kan jeg aktivere min "erstatter"?</h3>
+<p>An <strong>orginal mal</strong> bør være knyttet til hver <strong>erstatter (egendefinert mal)</strong> for å aktivere de relaterte erstatningene.
+Dette er målet til "utvidelse for maler" i konfigurasjon administrasjons menyen.</p>
+
+<p>Du kan velge et <strong>alternativ URL nøkkel ord</strong> da vil erstatteren gjelde kun på de sidene med dette nøkkelordet. For eksempel: <span
+  class="pwgScreen">index.php?/<strong>mest_besøkte</strong></span></p>
+
+<p>Avanserte brukere vil bruke permalinker som <strong>alternative URL nøkkel ord</strong>. </p>
+
+<p>Om du velger en <strong>Bundet mal</strong> vil erstatningen kun gjelde på denne malen.</p>
+
+<h3>Hvordan kan jeg deaktivere min "erstatter"?</h3>
+<ul>
+<li>Velg bort relaterte "orginal maler".</li>
+<li>Med FTP slett "erstattere".</li>
+</ul>
+<a name="Advarsler"></a>
+<h3>Advarsler</h3>
+<ul>
+
+  <li><strong>Orginal mal</strong> må være den "orginale" malen ellers kan du få uventede resultater!</li>
+
+  <li>På flere <strong>erstattere (modifiserte maler)</strong> med samme<strong>Orginal mal</strong> og den samme <strong>valgfrie URL
+  nøkkel ord</strong> vil kun den siste erstatteren være aktiv.</li>
+
+  <li>Velg bort <strong>alternativ URL nøkkel ord</strong> vil aktivere erstatteren på hvem som helst mal i bruk. Som i forrige punkt,
+    rekkefølge kan overkjøre forrige valgte erstatter.</li>
+
+  <li>Undermapper:
+Undermapper blir ignorert men de er nyttige for å endre gjeldende rekkefølge.<br>
+distribuerte-eksempler: Disse er sendt med for utprøving!
+<strong>Ikke rediger dem</strong> Lag dine egne.
+</li>
+
+  <li>Ved sletting av en erstatter blir den<strong>Orginale malen</strong> umiddelbart reaktivert.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/nb_NO/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Gruppe liste</h2>
+
+<p>Dette er stedet hvor du kan behandle grupper.</p>
+
+<h3>Legg til en gruppe</h3>
+
+<p>Administrator kan legge til grupper.</p>
+
+<h3>Gruppe lister</h3>
+
+<p>For hvert element, gir listen tilgang til:</p>
+
+
+<ul>
+  <li>gå til medlem lister</li>
+  <li>gå til rettighetbehandlings skjermvindu</li>
+  <li>slette gruppe (krever en bekreftelse)</li>
+  <li>endre status "standard" (krever en bekreftelse)</li>
+</ul>
+
+<h3>Standard grupper</h3>
+<p>Standard grupper er grupper som automatisk blir assosiert til hver ny bruker ved registrering eller ved oprettelse av en administrator.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,28 @@
+<p>Flere måter å legge til foto i ditt galleri:</p>
+
+<ul>
+  <li><strong>Direkte opplasting</strong> i din netleser er den enkleste og raskeste måten. Det avhenger av noe av din nettleser og servers kapasitet. For en stor mengde
+
+bilder eller om du støter på problemer, bare venter de andre løsningene på deg!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Gå til direkte opplasting </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> er en lokal applikasjon som skal installeres på din maskin. Dra &amp; slipp bilder inn i pLoader vinduet, klikk på <em>"Last opp til
+
+Piwigo"</em> og la pLoader gjøre jobben. Du kan finne andre lokale applikasjoner som <strong>WinToPiwigo</strong> eller <strong>Digikam</strong> eksporteringsverktøy til
+
+Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Gå til pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP opplasting</strong> er den best anbefalte måten å legge til store samlinger av bilder med et minimum av klikk.
+Følg guiden for å klargjøre dine bilder. FTP metoden gir deg full kontroll over organiseringen av dine bilder på serveren.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Gå til FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/nb_NO/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/help_groups.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Via grupper kan man på en fornuftig måte sette rettigheter på en rad brukere.</p>
+
+<p>Lag grupper i <span class="pwgScreen">Administrasjon &raquo; Brukere
+&raquo; Gupper</span> og assosier brukere til denne gruppen i <span class="pwgScreen">Administrasjon &raquo; Brukere &raquo;
+Behandle</span>.</p>
+
+<p>En bruker kan tillhøre flere grupper. Autorisasjon gir tillatelser over flere mapper : om bruker "jack" hører til gruppen
+"familie" og "venner", og den eneste gruppen "familie" kan se kategori "Jul 2003" kategory vil "jack" kunne se "jul 2003".</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Når du har laget ditt galleri kan du konfigurere det for besøkende
+<ul>
+    <li>Standard visning du vil ha i <span class="pwgScreen">Administrasjon &raquo; Konfigurasjon &raquo; Alternativ</span> tab <span class="pwgScreen">Gjeste instillinger</span></li>
+    <li>Standard tema i <span class="pwgScreen">Administrasjon &raquo; konfigurasjon &raquo; Temaer</span></li>
+    <li>Standard språk i <span class="pwgScreen">Administration &raquo; Konfigurasjon &raquo; Språk</span></li>
+</ul>
+Som standard,     hver ny bruker vil arve disse egenskapene ved registrering.
+</p>
+<p>Om du har noen spørsmål, ønsker Piwigo samfunnet deg velkommen <a href="http://piwigo.org/forum">på forumet</a>.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,57 @@
+<fieldset>
+<legend>Rettigheter på bilder</legend>
+
+<p>Hvert bilde har et <strong>tilgangs nivå</strong> (en lås). Hver bruker har også et tilgangs nivå (en nøkkel). Det er 5 private nivåer:</p>
+<ol>
+  <li>Ingen</li>
+  <li><em>Kontakter</em></li>
+  <li><em>Venner (som er høyere en en kontakt)</em></li>
+  <li><em>Familie (som er høyere en en venn)</em></li>
+  <li><em>Administrator (som er høyere en alle andre nivåer)</em></li>
+</ol>
+
+<p>Høyere nivåer har rettigheter på lavere nivåer. For en gitt bruker, jo høyere tilgangs nivå, jo fler bilder kan han se.</p>
+
+<p>For eksempel, om bildet "peter_bryllup-0024.jpg" har <em>"Familie"</em> tilgangs nivå, vil:</p>
+<ul>
+  <li>Peter (som er en <em>"Administrator"</em>) kunne se bildet fordi <em>"Administratorer"</em> kan se alle bilder</li>
+  <li>Beth (som er <em>"Familie"</em> medlem) vil også kunne se bildet</li>
+  <li>Mary (som kun er <em>"venn"</em>) vil ikke kunne se bildet</li>
+</ul>
+
+<p>En bruker som ikke har noen rettigheter til å se innholdet i en kategori vil heller ikke se selve kategorien, selv ikke tittelen. Samme prinsipp gjelder Tagger. Om
+
+ingen rettigheter, vil de ikke synes. </p>
+
+<p>Du kan sette rettighets nivå på en bruker i <span class="pwgScreen">Administrasjon &raquo; Brukere &raquo; Behandle</span> Bildet.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Rettigheter på kategorier</legend>
+
+<p>Om private nivåer ikke oppfyller dine behov, kan du også behandle rettigheter på kategorier for en bruker eller en gruppe. Du kan behandle rettigheter på foto og
+
+kategorier samtidig, uten at dette gir konflikter.</p>
+
+<p>Du kan nekte tilgang til kategorier. Bytt kategori tillgangs type til "privat" om du ønsker å behandle rettigheter.</p>
+
+<p>Du kan sette en kategori til privat ved å redigere en enkel kategori (<span class="pwgScreen">Administrasjon &raquo; kategorier &raquo; Behandle &raquo;
+
+redigere</span>) eller ved å endre alternativer for hele kategori strukturen (treet)(<span class="pwgScreen">Administrasjon &raquo; Kategori &raquo;
+Egenskaper &raquo; Offentlig / Privat</span>).</p>
+
+<p>Når kategorien er privat, kan du behandle rettigheter for grupper og brukere i 3 vinduer:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administrasjon &raquo; Brukere &raquo; Behandle &raquo;
+  Under tiltak -> tillatelser</span> (en link per bruker)</li>
+
+  <li><span class="pwgScreen">Administrasjon &raquo; Bruker &raquo; Grupper &raquo;
+  Under tiltak -> tillatelser</span> (en link per gruppe)</li>
+
+  <li><span class="pwgScreen">Administrasjon &raquo; Album &raquo; Behandle &raquo; rediger kategori rettigheter action</span> (en link per kategori)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/nb_NO/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Bilder vises i det album  som stemmer overens med deres filmapper.</p>
+
+<p>Du kan også vise et bilde i flere album, uten å duplikere filen på web serveren. Assosier bildet til vilket som helst album fra bilde redigerings vinduet (som alle administratorer når fra bilde siden i gallerier).</p>
+
+<p>Virtuelle mapper er basert på dette konseptet: De har ingen tillhørende mapper. Lag virtuelle album fra <span class="pwgScreen">Administrasjon &raquo; Album &raquo; Behandle</span>.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/history.html	(revision 25596)
@@ -0,0 +1,37 @@
+<h2>Historik</h2>
+
+<p>På disse skjermbildene kan du monitorere ditt galleris besøks historie opp i mot de valg du har valgt i - Administrasjon &raquo; Konfigurasjon &raquo; Alternativer &raquo; Historik indeks.</p>
+   
+<h3>Statistik</h3>
+<ul>
+  <p>Om du har valgt å overvåke(<span
+class="pwgScreen">index.php</span> og <span
+class="pwgScreen">picture.php</span>) sider besøkt i tabellen <code>historik</code>,
+kan du overvåke dem fra denne siden.</p>
+   
+    <li><strong>Global statistics</strong>: besøk per år. </li>
+   
+    <li><strong>Yearly statistics</strong>: besøk per måned i valgt år.</li>
+   
+    <li><strong>Monthly statistics</strong>: besøk per dag i valgte måned.</li>
+   
+    <li><strong>Daily statistics</strong>: besøk per time på valgt dag.</li>
+   
+</ul>
+
+<h3>Søk</h3>
+<ul>
+  <p>Om du har valgt å overvåke (<span
+class="pwgScreen">index.php</span> og <span
+class="pwgScreen">picture.php</span>) sider besøkt i tabellen <code>historik. </code>, kan du utforske detaljene på de besøkte sidene fra denne siden ved hjelp av forskjellige filtre.</p>
+
+    <li><strong>Filtrer per dato</strong> : velg dato perioden du ønsker å se aktiviteten over.</li>
+   
+    <li><strong>Filtrer per type element</strong> : velg hvilken type element du ønsker å observere aktiviteten over.</li>
+   
+    <li><strong>Filtrer per bruker</strong> : velg brukeren du ønsker å observere aktiviteten på.</li>
+   
+    <li><strong>Filtrer per navn på fil</strong> : velg fil navn du ønsker å observere aktiviteten på.</li>
+   
+    <li><strong>Filtrer per bilde identifikator</strong> : velg bilde identifiaktoren du ønsker å observere aktiviteten til.</li>
+</ul>
Index: /tags/2.6.0RC1/language/nb_NO/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/maintenance.html	(revision 25596)
@@ -0,0 +1,63 @@
+<h2>Vedlikehold</h2>
+
+<p>For å optimalisere side genererings tiden, bruker Piwigo mellomlagret informasjon. For eksempel, i stedet for å telle antall bilder i hvert
+
+album hver gang siden relastes, blir denne informasjonen lagret i databasen. I teorien bør denne infomasjonen alltid være korrekt, men ved noen
+
+anledninger kan en feil oppstå og den lagrede informasjonen blir feil.</p>
+
+<p>Noe informasjon blir ubrukelig ettersom tiden går. Sletting av disse unødige dataene vil frigjøre mere diskplass.</p>
+
+<ul>
+
+  <li>
+    <strong>Ulinkede bilder:</strong>
+    Vis bilder som ikke er assosiert til noen virtuelle album.
+  </li>
+  <li>
+    <strong>Filer med samme navn i mer en et fysisk album:</strong>
+    Vis bilder eller filer som er funnet med samme filnavn i flere album.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Oppdater album informasjon:</strong> For hvert album,
+  følgende informasjon blir sjekket og oppdatert ved behov: liste over hoved album, antall bilder, siste bilde dato, posisjon rundt relaterte
+
+album, posisjon iblandt alle album. Dette tiltaket sjekker også representative bilders ektehet.</li>
+
+  <li><strong>Oppdater bilde informasjon:</strong> For hvert bilde,
+  oppdatert informasjon er: full sti til filen, gjennomsnittlige stemmer. <em>Advarsel</em>, må ikke blandes med: metadata informasjon
+  må synkroniseres fra <span class="pwgScreen">Administrasjon &raquo;
+  Verktøy &raquo; Synkronisering</span>, eller i modifikasjons skjerm bildet til et enkelt bilde (gjennom <span class="pwgScreen">Bilder</span>
+
+for
+  eksempel).</li>
+
+  <li><strong>Reprer og optimaliser databasen:</strong>
+  Gjennomfør reorganisering, reparer og optimaliser rutiner i hver tabell i databasen.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>Tøm historikk detaljer:</strong> Slett alle linjer fra <code>historik</code> tabellen. Skjermvindu <span
+
+class="pwgScreen">Administrasjon &raquo;
+  Verktøy &raquo; Historik</span> vil ikkke lenger vise informasjon for tidligere historikk. <em>Advarsel</em>: alle data vil bli borte uten
+
+noen mulighet for å få de tilbake.</li>
+
+  <li><strong>Tøm historikk sammendrag:</strong> Slett all informasjons historik om alle besøk. Dette sammendraget er kalkulert fra historikk
+
+detaljene.</li>
+
+  <li><strong>Tøm sesjon:</strong> Slett utgåtte bruker sesjoner.</li>
+
+  <li><strong>Tøm informasjons matinger som aldrig er brukt</strong></li>
+
+  <li><strong>Tøm søke historikk</strong></li>
+ 
+  <li><strong>Tøm kompilerte maler</strong></li> 
+</ul>
Index: /tags/2.6.0RC1/language/nb_NO/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Beskjeder via mail</h2>
+
+<p>Dette skjermbildet lar deg konfigurere og behandle mail brukeres, for å sende melding om endringer på siden din.</p>
+
+<p>Dette skjermbildet består av 3 alternativer:</p>
+
+<h3>Parametere</h3>
+<p>Tilgjengelig kun for webmaster, dette alternativet setter parametrene på meldinger via mail.</p>
+
+<h3>Abonner</h3>
+<p>Tilgjengelig kun for webmaster, dette alternativet behandler brukeres abonnenter påmelding/avmelding for email beskjeder.</p>
+
+<h3>Envoi</h3>
+<p>Tilgjengelig kun for webmaster og administratorer, dette alternativet tillater å sende mail for å varsle endringer.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalinker</h2>
+
+<p>Permalinker blir brukt for å gjøre album adresser mer brukervennlig. Når et album har en permalink definert, vil ikke albumets ID lengre være påkrevd i url´en.</p>
+
+<p>Når en permalink er slettet, kan den lagres i permalink historikken, da vil den eksterne linken til Piwigo sidene fortsatt virke. I permalink historikk skjermbildet kan du se når linken har blitt slettet, siste gang den var i brukt og antall ganger linken har blitt brukt.</p>
+
+<p>Noter at permalinker må være unike for hvert album. Heller ikke i permalink historikken kan du ha samme permalink definert mer en en gang.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,143 @@
+<fieldset>
+  <legend>Hurtig veiledning</legend>
+
+<ol>
+  <li>Lag en mappe på din datamaskin.</li>
+
+  <li>Kopier noen bilder inn i denne mappen, endre størrelse til web visning. <em>Advarsel</em>:
+
+Navnet til mapper og filer må kun inneholde bokstaver, figurer, "-", "_" eller ".". Ingen blanke
+
+mellomrom, ei heller opphøyde karakterer.</li>
+
+  <li>Med en ftp klient, kopier mappen din inn i "galleries" mappen i din Piwigo installasjon.</li>
+
+  <li>Logg inn i ditt glleri og gå til <span class="pwgScreen">Administrasjon &raquo; Verktøy
+
+&raquo; Miniatyr bilder</span> for å lage manglende miniatyr bilder.</li>
+
+  <li>Gå til <span class="pwgScreen">Administrasjon</span> og klikk på den store synkroniserings
+
+knappen.</li>
+</ol>
+
+Gratulerer! Du har nå laget ditt første album i ditt foto galleri.
+</fieldset>
+
+<fieldset>
+  <legend>Mapper og fil organisering</legend>
+
+<ul>
+
+  <li>
+
+    <p>Album mapper er i Piwigo mappen "galleries". Her følger mappestrukturen til et veldig lite
+
+galleri (men bruker mange muligheter):</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- gallerier
+|   |-- album-1
+|   |   |-- album-1.1
+|   |   |   |-- album-1.1.1
+|   |   |   |   |-- album-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- miniatyrbilder
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- album-1.1.1.2
+|   |   |   +-- album-1.1.2
+|   |   |-- album-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- miniatyrbilder
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- album-1.3
+|   +-- album-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- miniatyrbilder
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+
+  <li>Untagen de med navnet "miniatyrbilder", "pwg_high" eller "pwg_representative" (se forklaring
+
+under), vil hver mappe under "gallerier" representerer et album. Det er ingen begrensning på dybden
+
+i strukturen.</li>
+
+  <li>Hovedsakelig, et element er representert av en fil. En fil kan være et Piwigo element om dets
+
+fil endelse er iblandt <code>file_ext</code>
+  konfigurasjons parametres muligheter(se <span
+  class="filename">inkluder/config_default.inc.php</span> file). En fil kan være et bilde om dets
+
+fil endelse er blandt <code>picture_ext</code>
+  konfigurasjons parametres muligheter.</li>
+
+  <li>Bilde elementer må ha et assosiert miniatyr bilde (se seksjonen under om miniatyr bilder)</li>
+
+  <li>Bilde elementer kan ha høy kvalitets filer assosiert. Som for eks wedding.jpg i eksempelet
+
+over. Ingen prefix på høy kvalitets bildet.</li>
+
+  <li>Ingen bilde elementer (video, lyder, fil tekster, hva du måtte ønske...) er representert som
+
+standard med et icon tillhørende fil endelsen. Valgfritt, kan du assosiere et miniatyr bilde
+
+og en representativ fil (se video.avi i eksempelet over).</li>
+
+  <li><em>Advarsel</em>: navnet på mapper og filer må kun inneholde bokstaver, figurer, "-", "_"
+
+eller ".". Ingen tomme mellomrom, ei heller opphøyde karakterer.</li>
+
+  <li>Når så filer, miniatyr bilder og representativer er korrekt plassert i mappene, gå til: <span
+
+class="pwgScreen">Administrasjon &raquo; Verktøy &raquo;
+  Synkroniser</span></li>
+
+</ul>
+</fieldset>
+
+<fieldset>
+  <legend>Miniatyr bilder</legend>
+<ul>
+
+  <li>Hvert bilde må ha sitt miniatyr bilde.</li>
+
+  <li>Miniatyr bilde blir lagret i "miniatyrbilde " under mappe i album
+  mappen. Miniatyr bildene har det samme filnavnet som bildet det passer opp mot, med konfigurasjons
+
+parametrene <code>prefix_thumbnail</code> som prefix (se <span
+
+class="filename">inkluder/config.inc.php</span>).</li>
+
+  <li>Miniatyr bilde filer bør ikke nødvendigvis ha samme fil endelse som det assosierte bildet (Eks
+
+".jpg" bilde kan ha ".GIF" endelse).</li>
+
+  <li>Det anbefales å bruker en ekstern modul for å lage miniatyr bilder.</li>
+
+  <li>Bruken av miniatyr bilde oprettelses verktøyet integrert i Piwigo er ikke anbefalt, Dette
+
+fordi den resulterte kvaliteten kan være skuffende og den vil bruke mye server ressurser (Dette kan
+
+være et stort problem på en delt server).
+
+  <li>Om du vleger å bruker web serveren til å lage miniatyr bilder, må du gi skrive rettigheter på
+
+alle album mappene.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/nb_NO/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Søk</h2>
+
+<p>Denne siden lar deg søke på bilder i hele galleriet.</p>
+
+<dl>
+
+  <dt>Søk etter ord</dt>
+  <dd>Søk etter et eller flere ord iblandt atributtene relatert til bilder i galleriet. Bruk * som en ukjent for flere treff.</dd>
+
+  <dt>Søk etter en forfatter</dt>
+  <dd>Bruk * som en ukjent for flere treff.</dd>
+
+  <dt>Søk etter dato</dt>
+  <dd>Velg en dato og /eller en slutt dato for ditt søk. La dato feltet stå tomt om du ønsker å gjøre et "før" søk. Året i det siste feltet må ha følgende format: AAAA (feks 2004)</dd>
+
+  <dt>Søk i album</dt>
+  <dd>Velg album eller flere album du vil søke i. Alle under album kan også bli søkt i ved å velge hele hovedalbumet og sette søk i under album til enable.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nb_NO/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/synchronize.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Synkroniser</h2>
+
+<p>Set er 2 forskjellige synkroniserings typer: mapper/filer og fil metadata. Mapper/filer handler om å synkronisere mappe strukturen mot album
+
+strukturen i databasen. Metadata handler om å oppdatere bilde informasjon som filstørrelse, dimensjoner i piksler, EXIF eller IPTC
+informasjon.</p>
+
+<p>Første synkronisering må være mapper / filer.</p>
+
+<p>Synkroniseringen kan ta noe tid (avhengig av din server belastning og mengden data å behandle) så det er mulig å gjøre dette album etter
+
+album.</p>
Index: /tags/2.6.0RC1/language/nb_NO/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/help/user_list.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Bruker liste</h2>
+
+<p>Dette er stedet for behandling av registrerte bruker egenskaper, untagen rettigheter som gjøres fra et annet skjermbilde.</p>
+
+<h3>Legg til en bruker</h3>
+
+<p>Administratorer kan legge til brukere manuelt.</p>
+
+<h3>Bruker liste</h3>
+
+<p>Listen kan filtreres etter brukernavn (bruk * som ukjent), gruppe eller status. Du kan organisere etter registreringsdato eller brukernavn, i stigende eller synkende rekkefølge.</p>
+
+<p>Dette skjermbildet tillater å behandle flere brukere samtidig, ved bruk av flere tilltak:</p>
+
+<ul>
+
+  <li>slett bruker (krever bekreftelse)</li>
+  <li>endre status</li>
+  <li>assosier eller ikke assosier med grupper</li>
+  <li>endre visnings egenskaper</li>
+  <li>endre lignende egenskaper</li>
+
+</ul>
+
+<p>Målet er den valgte brukeren (som standard) eller alle brukere vist i den filtrerte listen.</p>
Index: /tags/2.6.0RC1/language/nb_NO/index.php
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/nb_NO/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installasjon';
+$lang['Basic configuration'] = 'Grunnleggende konfigurasjon';
+$lang['Default gallery language'] = 'Standard galleri språk';
+$lang['Database configuration'] = 'Database konfigurasjon';
+$lang['Admin configuration'] = 'Admin konfigurasjon';
+$lang['Start Install'] = 'Start installasjon';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Det vil vises for besøkende. Det er nødvendig med side administrasjon';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Tilkobling til server er ok, men tilkobling til databasen er ikke mulig';
+$lang['Can\'t connect to server'] = 'Kan ikke koble til server';
+$lang['Host'] = 'Host';
+$lang['User'] = 'bruker (user)';
+$lang['user login given by your host provider'] = 'bruker (user) innlogging gitt av din web tilbyder';
+$lang['user password given by your host provider'] = 'bruker (user) passord gitt av din web tilbyder';
+$lang['Database name'] = 'Database navn';
+$lang['also given by your host provider'] = 'også gitt av din web tilbyder';
+$lang['Database table prefix'] = 'Database tabellers prefix';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'database tabellers navn kommer til å få prefix (gjør deg i bedre stand til å behandle tabellene)';
+$lang['enter a login for webmaster'] = 'skriv et brukernavn for webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'webmasters brukernavn kan ikke inneholde tegn som \' eller "';
+$lang['please enter your password again'] = 'vennligst skriv passord igjen';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hold det hemmelig, dette gir deg tilgang til administrasjons panelet';
+$lang['Password [confirm]'] = 'Passord [bekreft]';
+$lang['verification'] = 'verifisering';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Trenger du hjelp? Still et spørsmål på <a href="%s">Piwigo message board</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Besøkende vil kunne bruke denne mailen for å kontakte side administrator.';
+$lang['PHP 5 is required'] = 'PHP 5 er nødvendig';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Det kan se ut som om din leverandør kjører PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan prøve å endre din konfigurasjon til PHP 5 ved å lage eller modifisere en .htaccess fil.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Merk, du kan endre din konfigurasjon selv og restarte Piwigo etter dette.';
+$lang['Try to configure PHP 5'] = 'Prøve å konfigurere PHP 5';
+$lang['Sorry!'] = 'Beklager!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo var ikke i stand til å konfigurere PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Du kan sjekke din web tilbyder\'e support og se om du kan endre til PHP 5 selv.';
+$lang['Hope to see you back soon.'] = 'Håper vi sees snart.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulerer, Piwigo installasjonen er ferdig';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ løsning er å kopiere teksten fra tekst boksen over og lime det inn i filen "local/config/database.inc.php" (Advarsel: database.inc.php må kun inneholde hva som ligger i tekstområdet, ingen ny linje eller mellomrom)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Opprettelse av konfig fil local/config/database.inc.php feilet.';
+$lang['Download the config file'] = 'Last ned konfig fil';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan laste ned konfig filen og laste den opp til local/config mappen i din installasjon.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ikke nøl med å sjekke vårt forum for hjelp: %s';
+$lang['Just another Piwigo gallery'] = 'Enda et Piwigo bildegalleri';
+$lang['Welcome to my photo gallery'] = 'Velkommen til mitt bildegalleri';
+$lang['Welcome to your new installation of Piwigo!'] = 'Velkommen til din nye installasjon av Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'lokal tjener eller annen tjenesteleverandør';
+?>
Index: /tags/2.6.0RC1/language/nb_NO/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Norsk bokmål [NO]
Index: /tags/2.6.0RC1/language/nb_NO/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nb_NO/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nb_NO/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Oppgrader';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Denne siden tilbyr å oppgradere databasen fra din gamle Piwigo versjonen til den gjeldende versjonen. Oppgraderings assistenten mener at du for tiden kjører <strong>Versjon %s</strong> (eller lignende).';
+$lang['Upgrade from version %s to %s'] = 'Oppgrader fra versjon %s til %s';
+$lang['Statistics'] = 'Statistisk';
+$lang['total upgrade time'] = 'total oppgraderings tid';
+$lang['total SQL time'] = 'total SQL tid';
+$lang['SQL queries'] = 'SQL spørringer';
+$lang['Upgrade informations'] = 'oppgraderings informasjon';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gjennomfør en vedlikeholds sjekk i [Administration>Tools>Maintenance] om du møter på problemer.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'For å være sikker, følgende tilleggsprogrammer har blitt deaktivert. Du må sjekke for oppgradering på dine tilleggsverktøy før du reaktiverer dem:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'kun en administrator kan oppgradere: .Vennligst logg inn under';
+$lang['You do not have access rights to run upgrade'] = 'Du har ikke tilgangs rettigheter for å kunne oppgradere';
+$lang['All sub-albums of private albums become private'] = 'Alle grunn-album i privat album blir private';
+$lang['User permissions and group permissions have been erased'] = 'Bruker og gruppe rettigheter har blitt slettet';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Kun miniatyr bliders prefix and webmasters mail addresse har blitt lagret fra forrige konfigurasjon';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'I <i>%s</i>, før <b>?></b>, sett inn:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] =  'Som en sikkerhet har følgende temaer blitt deaktivert. Du må sjekke om det finnes oppgraderinger til dem før aktivering:';
+
+?>
Index: /tags/2.6.0RC1/language/nl_NL/about.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/about.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Deze fotogalerie is gemaakt met Piwigo.</p>
+
+<p>Piwigo is programmatuur voor het publiceren van uw fotogalerieën op het
+web. Het wordt ontwikkeld en onderhouden door een actieve groep gebruikers
+en ontwikkelaars. Met behulp van vele uitbreidingen kunt u Piwigo naar uw
+wensen aanpassen. En niet onbelangrijk: Piwigo is gratis en opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://nl.piwigo.org">Bezoek de Piwigo 
+website</a></p>
+
+<p>De Nederlandse vertaling wordt verzorgd door (in alfabetische volgorde):
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16204">EdwinKort</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=11901">J.Commelin</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=6755">Kees Hessels</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=12734">Mattias</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=7168">pauldaytona</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15676">ruud</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13823">stim</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=3594">terwolde</a></li>>
+	</ul>
+          .... waarvoor hartelijke dank</p>
Index: /tags/2.6.0RC1/language/nl_NL/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/admin.lang.php	(revision 25596)
@@ -0,0 +1,975 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d associatie';
+$lang['%d associations'] = '%d associaties';
+$lang['%d album including'] = '%d album waarvan ';
+$lang['%d albums including'] = '%d albums waarvan ';
+$lang['%d physical'] = '%d fysiek';
+$lang[' and %d virtual'] = 'en %d virtueel';
+$lang['%d album moved'] = '%d album verplaatst';
+$lang['%d albums moved'] = '%d albums verplaatst';
+$lang['%d group'] = '%d groep';
+$lang['%d groups'] = '%d groepen';
+$lang['%d member'] = '%d lid';
+$lang['%d members'] = '%d leden';
+$lang['%d tag'] = '%d label';
+$lang['%d tags'] = '%d labels';
+$lang['%d user comment rejected'] = '%d gebruikerscommentaar afgewezen';
+$lang['%d user comments rejected'] = '%d gebruikerscommentaren afgewezen';
+$lang['%d user comment validated'] = '%d gebruikerscommentaar bevestigd';
+$lang['%d user comments validated'] = '%d gebruikerscommentaren goedgekeurd';
+$lang['%d user deleted'] = '%d gebruiker verwijderd';
+$lang['%d users deleted'] = '%d gebruikers verwijderd';
+$lang['%d user'] = '%d gebruiker';
+$lang['%d users'] = '%d gebruikers';
+$lang['%d waiting for validation'] = '%d wachten op bevestiging';
+$lang['Actions'] = 'Acties';
+$lang['Activate'] = 'Activeer';
+$lang['Add/delete a permalink'] = 'Toevoegen/verwijderen van een permalink';
+$lang['Add a tag'] = 'Voeg een label toe';
+$lang['Add a user'] = 'Voeg een gebruiker toe';
+$lang['Add group'] = 'Voeg een groep toe';
+$lang['Add'] = 'Toevoegen';
+$lang['Allow user registration'] = 'Sta gebruikersregistratie toe';
+$lang['Apply to sub-albums'] = 'Toepassen op sub-albums';
+$lang['Associated'] = 'Gelinkt';
+$lang['Caddie management'] = 'Beheer verzamelmandje';
+$lang['Caddie'] = 'Verzamelmandje';
+$lang['Albums authorized thanks to group associations'] = 'Albums geautoriseerd dankzij groepassociaties';
+$lang['Album manual order was saved'] = 'De handmatige sorteervolgorde is vastgelegd';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Upgradecontrole is door onbekende reden niet (goed) uitgevoerd.';
+$lang['Check for upgrade'] = 'Upgradecontrole';
+$lang['Comments for all'] = 'Iedereen mag commentaar geven (ook gasten)';
+$lang['Current name'] = 'Huidige naam';
+$lang['Database'] = 'Database';
+$lang['Deactivate'] = 'Deactiveer';
+$lang['Delete Representant'] = 'Verwijder album-klikplaatje';
+$lang['Delete selected tags'] = 'Verwijder de geselecteerde labels';
+$lang['Delete selected users'] = 'Verwijder geselecteerde gebruikers';
+$lang['Deletions'] = 'Verwijderingen';
+$lang['Deny selected groups'] = 'Verbiedt geselecteerde groepen';
+$lang['Deny selected users'] = 'Verbiedt geselecteerde gebruikers';
+$lang['Description'] = 'Omschrijving';
+$lang['Display options'] = 'Toon opties';
+$lang['Dissociated'] = 'Niet gelinkt';
+$lang['Does not represent'] = 'Is geen klikplaatje voor';
+$lang['Edit selected tags'] = 'Bewerk de geselecteerde labels';
+$lang['Edit tags'] = 'Bewerk labels';
+$lang['Email admins when a new user registers'] = 'Stuur email naar administrators wanneer een nieuwe gebruiker zich heeft geregistreerd';
+$lang['Email admins when a valid comment is entered'] = 'Stuur email naar administrators wannneer een geldig commentaar is ingevuld';
+$lang['Email admins when a comment requires validation'] = 'Stuur email naar administrators wanneer een commentaar gevalideerd dient te worden';
+$lang['Environment'] = 'Omgeving';
+$lang['Form'] = 'Formulier';
+$lang['Gallery title'] = 'Galerie-titel';
+$lang['Grant selected groups'] = 'Toegang geselecteerde groepen';
+$lang['Grant selected users'] = 'Toegang geselecteerde gebruikers';
+$lang['Group name'] = 'Groepsnaam';
+$lang['Groups'] = 'Groepen';
+$lang['Guests'] = 'Gasten';
+$lang['History'] = 'Geschiedenis';
+$lang['Informations'] = 'Informatie';
+$lang['Install'] = 'Installeer';
+$lang['Link all album photos to a new album'] = 'Link alle album-foto\'s aan een nieuw album';
+$lang['Link all album photos to some existing albums'] = 'Link alle album-foto\'s aan een bestaand album';
+$lang['Linked albums'] = 'Gelinkte albums';
+$lang['Lock gallery'] = 'Sluit galerie voor onderhoud';
+$lang['Maintenance'] = 'Onderhoud';
+$lang['Edit album permissions'] = 'Beheer de album-rechten';
+$lang['Manage permissions for group "%s"'] = 'Beheer rechten van groep "%s"';
+$lang['Manage permissions for user "%s"'] = 'Beheer rechten van gebruiker "%s"';
+$lang['Manage tags'] = 'Beheer labels';
+$lang['Members'] = 'Leden';
+$lang['Metadata synchronized from file'] = 'Metadata gesynchroniseerd met bestand';
+$lang['Move albums'] = 'Verplaats albums';
+$lang['Move'] = 'Verplaatsen';
+$lang['Name'] = 'Naam';
+$lang['New name'] = 'Nieuwe naam';
+$lang['New parent album'] = 'Nieuwe hoofd-album';
+$lang['New tag'] = 'Nieuw label';
+$lang['Number of comments per page'] = 'Aantal weer te geven commentaren per pagina';
+$lang['Number of rates'] = 'Aantal waarderingen';
+$lang['Number of thumbnails to create'] = 'Aantal te maken klikplaatjes';
+$lang['Only private albums are listed'] = 'Alleen privé albums worden getoond';
+$lang['Operating system'] = 'Besturingssysteem';
+$lang['Options'] = 'Opties';
+$lang['Other private albums'] = 'Andere privé albums';
+$lang['Page banner'] = 'Pagina banner';
+$lang['Parent album'] = 'Hoofd-album';
+$lang['Path'] = 'Pad';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s is eerder gebruikt door album %s. Verwijder eerst de permalink geschiedenis';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'De permalinknaam moet bestaan uit a-z, A-Z, 0-9, "-", "_" of "/". Het mag geen getal zijn of starten met een cijfer met "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s is al in gebruik door album %s';
+$lang['Permalink history'] = 'Permalink geschiedenis';
+$lang['Permalinks'] = 'Permalinks';
+$lang['Permission denied'] = 'Rechten geweigerd';
+$lang['Permission granted thanks to a group'] = 'Rechten verleend dankzij een groep';
+$lang['Permission granted'] = 'Rechten verleend';
+$lang['Photo informations updated'] = 'Foto-informatie bijgewerkt';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Positie';
+$lang['Preferences'] = 'Voorkeuren';
+$lang['Properties'] = 'Eigenschappen';
+$lang['Random photo'] = 'Willekeurig plaatje';
+$lang['Rate date'] = 'Waarderingsdatum';
+$lang['Rating by guests'] = 'Ook gasten kunnen waarderen';
+$lang['Rating'] = 'Waarderen';
+$lang['Reject'] = 'Afwijzen';
+$lang['Representant'] = 'Album-klikplaatje';
+$lang['Representation of albums'] = 'Album-klikplaatje';
+$lang['Representative'] = 'Album-klikplaatje';
+$lang['Represents'] = 'Is klikplaatje voor ';
+$lang['Save order'] = 'Bewaar sortering';
+$lang['Save to permalink history'] = 'Opslaan in permalink geschiedenis';
+$lang['Select at least one album'] = 'Selecteer minstens één album';
+$lang['Select at least one photo'] = 'Selecteer minstens één plaatje';
+$lang['Select at least one user'] = 'Selecteer minstens één gebruiker';
+$lang['Show info'] = 'Toon info';
+$lang['Site manager'] = 'Site manager';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statistieken';
+$lang['Storage album'] = 'Opslag album';
+$lang['Sum of rates'] = 'Eindwaardering';
+$lang['Tag "%s" already exists'] = 'Label "%s" bestaat al';
+$lang['Tag "%s" was added'] = 'Label "%s" is toegevoegd';
+$lang['Tag selection'] = 'Label selectie';
+$lang['The %d following tags were deleted'] = 'De %d volgende labels zijn verwijderd';
+$lang['Unable to check for upgrade.'] = 'Het is niet mogelijk om een upgradecontrole uit te voeren.';
+$lang['Uninstall'] = 'Deinstaleer';
+$lang['Use the default photo sort order (defined in the configuration file)']='Gebruik de standaard sortering (gedefinieerd in het configuratiebestand)';
+$lang['User comments validation'] = 'Gebruikers-commentaren die wachten op validatie';
+$lang['Users'] = 'Gebruikers';
+$lang['Validate'] = 'Valideren';
+$lang['Validation'] = 'Validatie van commentaar voor plaatsing is nodig';
+$lang['Version'] = 'Versie';
+$lang['Virtual albums to move'] = 'Virtuele albums om te verplaatsen';
+$lang['Virtual album name'] = 'Virtuele albumnaam';
+$lang['Webmaster cannot be deleted'] = 'Webbeheerder kan niet verwijderd worden';
+$lang['You are running on development sources, no check possible.'] = 'U werkt op basis van ontwikkelings bronnen, geen controle mogelijk.';
+$lang['You cannot delete your account'] = "U kunt uw account niet verwijderen";
+$lang['You cannot move an album in its own sub album'] = 'U kunt een album niet verplaatsen naar zijn eigen sub-album';
+$lang['You need to confirm deletion'] = 'U moet de verwijdering bevestigen';
+$lang['Associate to album'] = 'Link naar album';
+$lang['associate to group'] = 'Link aan groep';
+$lang['Authorized'] = 'Toegestaan';
+$lang['Add a virtual album'] = 'Voeg een virtueel album toe';
+$lang['Authorize users to add comments on selected albums'] = 'Gebruikers machtigen om commentaar te kunnen geven op geselecteerde albums';
+$lang['The name of an album must not be empty'] = 'De album-naam mag niet leeg zijn';
+$lang['Lock albums'] = 'Sluit albums af';
+$lang['Private'] = 'Privé';
+$lang['Public'] = 'Openbaar';
+$lang['Find a new representant by random'] = 'Zoek een nieuw willekeurig album-klikplaatje';
+$lang['Public / Private'] = 'Openbaar / Privé';
+$lang['Manage authorizations for selected albums'] = 'Beheer toegang voor geselecteerde albums';
+$lang['Virtual album added'] = 'Virtueel album toegevoegd';
+$lang['Virtual album deleted'] = 'Virtueel album verwijderd';
+$lang['Access type'] = 'Toegangstype';
+$lang['Information data registered in database'] = 'Informatie opgeslagen in de database';
+$lang['Default display'] = 'Standaardweergave';
+$lang['The gallery URL is not valid.'] = 'De URL van de galerie is niet correct.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Het aantal commentaren per pagina moet tussen 5 and 50 liggen.';
+$lang['Configuration'] = 'Configuratie';
+$lang['confirm'] = 'Bevestig';
+$lang['Date'] = 'Datum';
+$lang['delete album'] = 'Verwijder album';
+$lang['Dissociate from album'] = 'Verwijder link naar album';
+$lang['dissociate from group'] = 'Verwijder link aan groep';
+$lang['Album updated successfully'] = 'Album succesvol bijgewerkt';
+$lang['photos per page'] = 'foto\'s per pagina';
+$lang['High definition enabled'] = 'Hoge kwaliteit (origineel) ingeschakeld';
+$lang['File'] = 'Bestand';
+$lang['first photo added on %s'] = 'eerste foto toegevoegd op %s';
+$lang['Forbidden'] = 'Niet toegestaan';
+$lang['global mode'] = 'Compact overzicht';
+$lang['group "%s" added'] = 'groep "%s" toegevoegd';
+$lang['group "%s" deleted'] = 'groep "%s" verwijderd';
+$lang['group "%s" updated'] = 'groep "%s" bijgewerkt';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'De naam van de groep mag geen " of \' bevatten of leeg zijn.';
+$lang['This name is already used by another group.'] = 'Deze naam is al in gebruik door een andere groep.';
+$lang['High definition'] = 'Hoge kwaliteit (origineel)';
+$lang['jump to album'] = 'Ga naar album';
+$lang['jump to photo'] = 'Ga naar foto';
+$lang['leave'] = 'Niet wijzigen';
+$lang['Lock'] = 'Gesloten';
+$lang['Locked'] = 'Afgesloten';
+$lang['manage album photos'] = 'Beheer album-foto\'s';
+$lang['manage sub-albums'] = 'Beheer sub-albums';
+$lang['Manage'] = 'Beheer';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Uitvoerings-tijd is om, de afhandeling moet verder gaan [Geschatte tijd: %d seconden].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'De tijd om de gebruikerslijst voor een mailing samen te stellen is gelimiteerd. De overige gebruikers staan niet op de lijst.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tijd om email te sturen is gelimiteerd. Andere emailtjes worden overgeslagen.';
+$lang['To send ?'] = 'aan sturen ?';
+$lang['Last send'] = 'Laatst sturen';
+$lang['User'] = 'Gebruiker';
+$lang['See you soon,'] = 'Tot ziens op onze webpagina,';
+$lang['Go to'] = 'Ga naar ';
+$lang['Hello'] = 'Hallo ';
+$lang['New photos were added'] = 'Nieuwe foto\'s toegevoegd ';
+$lang['on'] = ' op ';
+$lang['between'] = 'tussen ';
+$lang['and'] = ' en ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'De webbeheerder heeft u ingeschreven op de meldingenlijst, u ontvangt in het vervolg meldingen per email.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'U heeeft zich ingeschreven voor meldingen per email.';
+$lang['To subscribe'] = 'Inschrijven';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Als u problemen of vragen heeft, stuur een bericht naar: ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemen of vragen';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'De webbeheerder heeft u uitgeschreven van de meldingenlijst, u ontvangt geen meldingen meer per email.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'U heeft zichzelf uitgeschreven om meldingen per email te ontvangen.';
+$lang[', click on'] = ', klik op ';
+$lang['To unsubscribe'] = 'Uitschrijven';
+$lang['With blank value, gallery title will be used'] = 'Wanneer niet ingevuld, zal de galerie-titel worden gebruikt';
+$lang['Notification'] = 'Meldingen';
+$lang['Error when sending email to %s [%s].'] = 'Fout bij het versturen van email naar %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email verstuuurd naar %s [%s].';
+$lang['%d mail was sent.'] = '%d email is verstuurd.';
+$lang['%d mails were sent.'] = '%d emails zijn verstuurd.';
+$lang['%d mail was not sent.'] = '%d email is niet verstuurd.';
+$lang['%d mails were not sent.'] = '%d emails zijn niet verstuurd.';
+$lang['No mail to send.'] = 'Geen email om te versturen.';
+$lang['There is no available subscribers to mail.'] = 'Geen gebruikers om email te sturen.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Gebruikers worden alleen weergegeven indien er nieuwe foto\'s zijn te melden.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Hoe dan ook, alleen webbeheerders kunnen dit tabblad zien, de administrators niet.';
+$lang['No user to send notifications by mail.'] = 'Geen gebruikers om meldingen te ontvangen per email.';
+$lang['New photos added'] = 'Nieuwe foto\'s toegevoegd';
+$lang['Subscribe to notification by mail'] = 'Inschrijving om meldingen te ontvangen per email';
+$lang['Unsubscribe from notification by mail'] = 'Uitschrijven van meldingen per email';
+$lang['Parameter'] = 'Parameters';
+$lang['Continue processing treatment'] = 'Verder gaan met de bewerking';
+$lang['Complementary mail content'] = 'Bijkomende email-inhoud';
+$lang['Add detailed content'] = 'Toevoegen gedetailleerde inhoud';
+$lang['Send mail as'] = 'Stuur email als (afzender)';
+$lang['Send mail to users'] = 'Stuur email naar gebruikers';
+$lang['Send'] = 'Sturen';
+$lang['Options'] = 'Opties';
+$lang['Subscribed'] = 'Ingeschreven';
+$lang['Subscribe'] = 'Inschrijven';
+$lang['Parameters'] = 'Parameters';
+$lang['Select recipients'] = 'Selecteer ontvangers';
+$lang['Subscribe/unsubscribe users'] = 'Inschrijven/Uitschrijven gebruikers';
+$lang['Unsubscribed'] = 'Uitgeschreven';
+$lang['%d parameter was updated.'] = '%d parameter is bijgewerkt.';
+$lang['%d parameters were updated.'] = '%d parameters zijn bijgewerkt.';
+$lang['%d user was not updated.'] = '%d gebruiker is niet bijgewerkt.';
+$lang['%d users were not updated.'] = '%d gebruikers zijn niet bijgewerkt.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Gebruiker %s [%s] is verwijderd van de inschrijvingslijst.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Gebruiker %s [%s] is toegevoegd aan de inschrijvingslijst.';
+$lang['%d user was updated.'] = '%d gebruiker is bijgewerkt.';
+$lang['%d users were updated.'] = '%d gebruikers zijn bijgewerkt.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Gebruiker %s [%s] is niet verwijderd van de inschrijvingslijst.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Gebruiker %s [%s] is niet toegevoegd aan de inschrijvingslijst.';
+$lang['User %s [%s] added.'] = 'Gebruiker %s [%s] toegevoegd.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Waarschuwing: in/uitschrijven zal een email versturen naar de gebruikers';
+$lang['Send mail on HTML format'] = 'Stuur email in HTML formaat';
+$lang['Include display of recent photos grouped by dates'] = 'Inclusief het vertonen van recente foto\'s gegroepeerd op datum';
+$lang['Available only with HTML format'] = 'Alleen beschikbaar in HTML formaat';
+$lang['no write access'] = 'geen schrijftoegang';
+$lang['Permissions'] = 'Rechten';
+$lang['private'] = 'Privé';
+$lang['public'] = 'Publiek';
+$lang['Purge never used notification feeds'] = 'Verwijder feeds met nooit met gebruikte meldingen';
+$lang['Purge sessions'] = 'Verwijder sessies';
+$lang['randomly represented'] = 'willekeurig album-klikplaatje';
+$lang['registration date'] = 'Registratiedatum';
+$lang['clean'] = 'opschonen';
+$lang['Create this site'] = 'Maak deze site';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'test deze remote site';
+$lang['remove tags'] = 'Verwijder labels';
+$lang['Repair and optimize database'] = 'Repareer en optimaliseer de database';
+$lang['selection'] = 'Selectie';
+$lang['set to'] = 'Instellen op';
+$lang['singly represented'] = 'album-klikplaatje hersteld';
+$lang['This site already exists'] = 'Deze site bestaat al';
+$lang['created'] = 'gemaakt';
+$lang['delete'] = 'Verwijderen';
+$lang['delete this site and all its attached elements'] = 'Verwijder de site en alle bijbehorende foto\'s';
+$lang['an error happened'] = 'er heeft zich een fout voorgedaan';
+$lang['Local'] = 'Lokaal';
+$lang['Remote'] = 'Remote';
+$lang['update the database from files'] = 'werk de database bij vanuit bestanden';
+$lang['status'] = 'Status';
+$lang['Directory'] = 'Map';
+$lang['sub-albums'] = 'Sub-album';
+$lang['Synchronize metadata'] = 'Synchroniseer metadata';
+$lang['target'] = 'Doel';
+$lang['Thumbnail'] = 'Klikplaatje';
+$lang['Title'] = 'Titel';
+$lang['Album list management'] = 'Albumlijst beheer';
+$lang['Piwigo configuration'] = 'Piwigo configuratie';
+$lang['Edit album'] = 'Bewerk album';
+$lang['Group management'] = 'Groepsbeheer';
+$lang['User list'] = 'Gebruikerslijst';
+$lang['Edit photo information'] = 'Verander de informatie van een foto';
+$lang['Database synchronization with files'] = 'Database synchronisatie met bestanden';
+$lang['all'] = 'Allen';
+$lang['height must be a number superior to'] = 'Hoogte moet groter zijn dan';
+$lang['width must be a number superior to'] = 'Breedte moet groter zijn dan';
+$lang['for the file format'] = 'voor het bestandsformaat';
+$lang['Photo unreachable or no support'] = 'Foto is niet bereikbaar of er is geen support';
+$lang['GD version'] = 'GD versie';
+$lang['General statistics'] = 'Algemene statistieken';
+$lang['average time'] = 'gemiddelde tijd';
+$lang['number of miniaturized photos'] = 'aantal gecreëerde klikplaatjes';
+$lang['total time'] = 'totale tijd';
+$lang['for this file format'] = 'voor dit bestandsformaat';
+$lang['unit mode'] = 'Uitgebreid overzicht';
+$lang['Unlocked'] = 'Open';
+$lang['unset'] = 'Niet ingesteld';
+$lang['Update albums informations'] = 'Album-informatie bijwerken';
+$lang['Update photos information'] = 'Foto-informatie bijwerken';
+$lang['Synchronize'] = 'Synchroniseer';
+$lang['reduce to single existing albums'] = 'In één enkel album zoeken:';
+$lang['Choose an option'] = 'Kies een optie';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'toon maximale informatie (toegevoegde albums en foto\'s, verwijderde albums en foto\'s)';
+$lang['Error list'] = 'Foutenlijst';
+$lang['Errors caption'] = 'Foutmeldingen';
+$lang['Detailed informations'] = 'Gedetailleerde informatie';
+$lang['File/directory read error'] = 'Bestand/map lees fout';
+$lang['albums deleted in the database'] = 'albums uit de database verwijderd';
+$lang['photos deleted from the database'] = 'foto\'s verwijderd uit de database';
+$lang['photos candidates for metadata synchronization'] = 'foto\'s waarvan de metadata gesynchroniseerd zou kunnen worden';
+$lang['photos informations synchronized with files metadata'] = 'foto-informatie gesynchroniseerd met bestandsmetadata';
+$lang['errors during synchronization'] = 'fouten tijdens de synchronisatie';
+$lang['albums added in the database'] = 'albums toegevoegd aan de database';
+$lang['photos added in the database'] = 'foto\'s toegevoegd aan de database';
+$lang['photos updated in the database'] = 'foto\'s bijgewerkt in de database';
+$lang['Search for new images in the directories'] = 'Zoek naar nieuwe foto\'s in de mappen';
+$lang['added'] = 'wordt toegevoegd';
+$lang['deleted'] = 'verwijderd';
+$lang['Metadata synchronization results'] = 'Metadata synchronisatie-resultaten';
+$lang['only perform a simulation (no change in database will be made)'] = 'alleen een simulatie uitvoeren (er worden geen veranderingen aangebracht in de database)';
+$lang['Simulation'] = 'Simulatie';
+$lang['directories + files'] = 'mappen + bestanden';
+$lang['only directories'] = 'alleen mappen';
+$lang['synchronize files structure with database'] = 'Synchroniseer bestandenstructuur met de database';
+$lang['synchronize files metadata with database photos informations'] = 'Synchroniseer de databasefoto\'s met de bestandsmetadata';
+$lang['even already synchronized photos'] = 'ook reeds gesynchroniseerde foto\'s';
+$lang['Used metadata'] = 'Gebruikte metadata';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'De naam van mappen en bestanden moeten bestaan uit letters, cijfers, "-", "_" of "."';
+$lang['wrong filename'] = 'verkeerde bestandsnaam';
+$lang['Upload'] = 'Upload';
+$lang['user "%s" added'] = 'gebruiker "%s" toegevoegd';
+$lang['User status'] = 'Gebruikersstatus';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Algemeen';
+$lang['user_status_guest'] = 'Gast';
+$lang['user_status_normal'] = 'Gebruiker';
+$lang['user_status_webmaster'] = 'Webbeheerder';
+$lang['Virtual album'] = 'Virtueel album';
+$lang['Waiting'] = 'Valideer';
+$lang['default'] = 'standaard';
+$lang['Toggle \'default group\' property'] = 'Wissel \'standaard groep\' instelling';
+$lang['Advanced features'] = 'Geavanceerde functies';
+$lang['Overall'] = 'Totaal';
+$lang['Year'] = 'Jaar';
+$lang['Month'] = 'Maand';
+$lang['Day'] = 'Dag';
+$lang['Pages seen'] = 'Pagina\'s bekeken';
+$lang['Time'] = 'tijd';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'sectie';
+$lang['An information email was sent to group "%s"'] = 'Een informatie email is verstuurd naar de groep "%s"';
+$lang['Send an information email to group members'] = 'Stuur een informatie email naar groepsleden';
+$lang['Group'] = 'Groep';
+$lang['[%s] Visit album %s'] = '[%s] Bezoek album %s';
+$lang['Hello,'] = 'Hallo,';
+$lang['See you soon.'] = 'Tot ziens op onze webpagina.';
+$lang['Discover album:'] = 'Ondek album:';
+$lang['Mail content'] = 'Email inhoud';
+$lang['none'] = 'geen';
+$lang['high'] = 'hoog';
+$lang['other'] = 'anders';
+$lang['Element type'] = 'Element-type';
+$lang['Image id'] = 'Afbeeldings id';
+$lang['Summary'] = 'Overzicht';
+$lang['%d line filtered'] = '%d regel gefilterd';
+$lang['%d lines filtered'] = '%d regels gefilterd';
+$lang['%d guest'] = '%d gast';
+$lang['%d guests'] = '%d gasten';
+$lang['Hour'] = 'Uur';
+$lang['guest'] = 'gast';
+$lang['default values'] = 'Standaard waarden';
+$lang['Guest cannot be deleted'] = 'Gast kan niet verwijderd worden';
+$lang['Default user cannot be deleted'] = 'Standaard gebruiker kan niet verwijderd worden';
+$lang['Purge history detail'] = 'Details van de filtergeschiedenis';
+$lang['Purge history summary'] = 'Overzicht van de filtergeschiedenis';
+$lang['Check integrity'] = 'Controleer integriteit';
+$lang['Anomaly'] = 'Onregelmatigheid';
+$lang['Correction'] = 'Correctie';
+$lang['Automatic correction'] = 'Automatische correctie';
+$lang['Impossible automatic correction'] = 'Automatische correctie onmogelijk';
+$lang['Correction applied with success'] = 'Correctie die met succes is toegepast';
+$lang['Correction applied with error'] = 'Correctie die met fout wordt toegepast';
+$lang['%d anomaly has been detected.'] = '%d onregelmatigheid ontdekt.';
+$lang['%d anomalies have been detected.'] = '%d onregelmatigheden ontdekt.';
+$lang['%d anomaly has been corrected.'] = '%d onregelmatigheid zijn gecorrigeerd.';
+$lang['%d anomalies have been detected corrected.'] = '%d onregelmatigheden die zijn gecorrigeerd.';
+$lang['%d anomaly has not been corrected.'] = '%d onregelmatigheid is niet gecorrigeerd.';
+$lang['%d anomalies have not been corrected.'] = '%d onregelmatigheden zijn niet gecorrigeerd.';
+$lang['Go to %s or %s for more informations'] = 'Ga naar %s of %s voor meer informatie';
+$lang['the forum'] = 'het forum';
+$lang['the wiki'] = 'de wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s waarde is niet correct omdat exif niet ondersteund wordt';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s moet aangepast worden naar false in uw local/config/config.inc.php bestand';
+$lang['Main "guest" user does not exist'] = 'Hoofd "gast" gebruiker bestaat niet meer';
+$lang['Main "guest" user status is incorrect'] = 'Hoofd "gast" gebruikersstatus is niet correct';
+$lang['Default user does not exist'] = 'Standaard gebruiker bestaat niet';
+$lang['Main "webmaster" user does not exist'] = 'De Hoofd "webbeheerder" bestaat niet';
+$lang['Main "webmaster" user status is incorrect'] = 'De status van de Hoofd "webbeheerder" is niet correct';
+$lang['User "%s" created with "%s" like password'] = 'Gebruiker "%s" aangemaakt met wachtwoord "%s" ';
+$lang['Status of user "%s" updated'] = 'Status van de gebruiker "%s" is bijgewerkt';
+$lang['add new photos to caddie'] = 'voeg nieuwe foto\'s toe aan verzamelmandje';
+$lang['No display'] = 'Geen weergave';
+$lang['Classic display'] = 'Klassieke weergave';
+$lang['Hoverbox display'] = 'Hoverbox weergave';
+$lang['Mail address is obligatory for all users'] = 'Email-adres is verplicht voor alle gebruikers';
+$lang['Minimum privacy level'] = 'Minimaal privacy nivo';
+$lang['Privacy level'] = 'Privacy nivo';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contacten';
+$lang['Level 2'] = 'Vrienden';
+$lang['Level 4'] = 'Familie';
+$lang['Level 8'] = 'Admins';
+$lang['Reinitialize check integrity'] = 'Herinitialiseer de integriteitscontrole';
+$lang['Check all'] = 'Controleer alles';
+$lang['Uncheck all'] = 'Deselecteer alles';
+$lang['Check automatic corrections'] = 'Controleer de automatische correcties';
+$lang['Apply selected corrections'] = 'Pas geselecteerde correcties toe';
+$lang['Ignore selected anomalies'] = 'Negeer geselecteerde onregelmatigheden';
+$lang['Refresh'] = 'Ververs';
+$lang['The anomaly will be ignored until next application version'] = 'De onregelmatigheid wordt genegeerd tot de volgende versie';
+$lang['%d anomaly has been ignored.'] = '%d onregelmatigheid wordt genegeerd.';
+$lang['%d anomalies have been ignored.'] = '%d onregelmatigheden zijn genegeerd.';
+$lang['Plugins which need upgrade'] = 'Plugins welke bijgewerkt moeten worden';
+$lang['Plugin list'] = 'Plugin lijst';
+$lang['Check for updates'] = 'Controleer op updates';
+$lang['Other plugins'] = 'Andere plugins';
+$lang['Last revisions'] = 'Lastste revisie';
+$lang['Are you sure you want to delete this plugin?'] = 'Weet U het zeker dat u deze plugin wilt verwijderen?';
+$lang['Are you sure you want to install this plugin?'] = 'Weet U het zeker dat u deze plugin wilt installeren?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Weet U het zeker dat u deze plugin wilt bijwerken? U moet controleren of deze versie niet gedeinstaleerd moet worden.';
+$lang['Plugin has been successfully copied'] = 'Plugin is succesvol gekopieerd';
+$lang['You might go to plugin list to install and activate it.'] = 'U zou naar de plugin-lijst kunnen gaan om de plugin te installeren en te activeren.';
+$lang['Can\'t create temporary file.'] = 'Kan geen tijdelijk bestand maken.';
+$lang['Can\'t download archive.'] = 'Kan geen archief downloaden.';
+$lang['Can\'t read or extract archive.'] = 'Kan het archief niet lezen of uitpakken.';
+$lang['An error occured during extraction (%s).'] = 'Een fout is opgetreden tijdens het uitpakken van de bestanden (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Controleer de "plugins" folder en de sub-folders rechten/attributen (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Verbinding met server niet mogelijk.';
+$lang['Purge compiled templates'] = 'Verwijder samengestelde sjablonen';
+$lang['Support'] = 'Piwigo Forum';
+$lang['Documentation'] = 'Documentatie';
+$lang['ACCESS_0'] = 'Vrije toegang';
+$lang['ACCESS_1'] = 'Toegang tot alles';
+$lang['ACCESS_2'] = 'Toegang tot geabonneerde';
+$lang['ACCESS_3'] = 'Toegang voor administrators';
+$lang['ACCESS_4'] = 'Toegang voor webbeheerders';
+$lang['ACCESS_5'] = 'Geen toegang';
+$lang['A new version of Piwigo is available.'] = 'Een nieuwere versie van Piwigo is beschikbaar.';
+$lang['Piwigo Administration'] = 'Piwigo Administratie';
+$lang['Piwigo version'] = 'Piwigo versie';
+$lang['You are running the latest version of Piwigo.'] = 'U heeft de laatste versie van Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'De versie van %s [%s] die geïnstalleerd is is niet compatibel met de vereiste versie [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'U moet uw systeem bijwerken om volledig gebruik te kunnen maken van alle mogelijkheden van de software, anders kan de software niet goed werken, of helemaal niet';
+$lang['Deleted on'] = 'Verwijderd op';
+$lang['Last hit'] =  'Laaste hit';
+$lang['GD library is missing'] = 'GD library bestaat niet';
+$lang['Templates'] = 'Sjablonen';
+$lang['Extend for templates'] = 'Uitbreiding voor sjablonen';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 
+ 'Vervanging van de originele sjablonen door aangepaste sjablonen van sjabloon-extensie submap';
+$lang['Replacers (customized templates)'] = 'Vervangers (eigenbouw sjabloon)';
+$lang['Original templates'] = 'Originele sjabloontemplates';
+$lang['Optional URL keyword'] = 'Optionele URL sleutelwoord';
+$lang['Templates configuration has been recorded.'] = 'Sjabloon configuratie is vastgelegd.';
+$lang['All optimizations have been successfully completed.'] = 'Alle verbeteringen zijn succesvol afgerond.';
+$lang['Optimizations have been completed with some errors.'] = 'Verbeteringen zijn afgerond met enkele fouten.';
+$lang['Modify information'] = 'Aanpassen informatie';
+$lang['nothing'] = 'niets';
+$lang['overrides existing values with empty ones'] = 'overschrijft de bestaande waarden met lege waardes';
+$lang['Drag to re-order'] = 'Sleep om volgorde te veranderen';
+$lang['Quick Local Synchronization'] = 'Snelle lokale Synchronisatie';
+$lang['No photo can be deleted'] = 'Geen enkele foto kan verwijderd worden';
+$lang['Delete selected photos'] = 'Verwijder geselecteerde foto\'s';
+$lang['%d photo was deleted'] = '%d foto is verwijderd';
+$lang['%d photos were deleted'] = '%d foto\'s zijn verwijderd';
+$lang['Downloads'] = 'Downloads';
+$lang['Released on'] = 'Uitgegeven op';
+$lang['Number of downloads'] = 'Aantal downloads';
+$lang['Operation in progress'] = 'In behandeling.';
+$lang['Please wait...'] = 'Even geduld aub...';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Het corrigeren van de onregelmatigheid maakt een einde aan het negeren';
+$lang['Manage photo ranks'] = 'Bewerk de foto-rangen';
+$lang['Edit ranks'] = 'Bewerk de rangen';
+$lang['No photo in this album'] = 'Geen foto in dit album';
+$lang['Images manual order was saved'] = 'De handmatige sortering van de afbeeldingen is bewaard';
+$lang['ranks'] = 'Rangen';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Aankondigings Nieuwsbrief';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hou contact met het Piwigo project, abonneer u op de Piwigo Aankondigings Nieuwsbrief. Dan ontvangt u een email wanneer een nieuwe Piwigo-release beschikbaar komt, wanneer een belangrijke beveiligings bugfix nodig is of wanneer belangrijke ontwikkelingen binnen het Piwigo-project plaatsvinden. Alles bij elkaar een paar emails per jaar.';
+$lang['Subscribe %s'] = 'Abonneer %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonneer %s op de Piwigo Aankondigings Nieuwsbrief';
+$lang['Purge search history'] = 'Verwijder de Zoek-geschiedenis';
+$lang['Hide'] = 'Verberg';
+$lang['Password is missing. Please enter the password.'] = 'Wachtwoord ontbreekt. Geef uw wachtwoord aub.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Wachtwoord-bevestiging ontbreekt. Bevestig aub uw gekozen wachtwoord.';
+$lang['Allow users to edit their own comments'] = 'Sta toe dat gebruikers hun eigen commentaar kunnen bewerken';
+$lang['Allow users to delete their own comments'] = 'Sta toe dat gebruikers hun eigen commentaar kunnen verwijderen';
+$lang['Email administrators when a comment is modified'] = 'Stuur email naar de administrators wanneer een commentaar is gewijzigd';
+$lang['Email administrators when a comment is deleted'] = 'Stuur email naar de administrators wanneer een commentaar is verwijderd';
+$lang['Cannot delete the old permalink !'] = 'De oude permalink kan niet verwijderd worden !';
+$lang['Hit'] = 'Hit';
+$lang['Tools'] = 'Hulpmiddelen';
+$lang['Photos'] = 'Foto\'s';
+$lang['Themes'] = 'Thema\'s';
+$lang['Instructions to use Piwigo'] = 'Piwigo Gebruiks-instructies';
+$lang['Installed Themes'] = 'Geïnstalleerde thema\'s';
+$lang['Add New Theme'] = 'Nog niet geïnstalleerde thema\'s';
+$lang['Forbid this theme to users'] = 'Dit thema mag niet door gebruikers gebruikt worden';
+$lang['Set as default theme for unregistered and new users'] = 'Standaard thema voor niet geregisteerde en nieuwe gebruikers';
+$lang['unknown'] = 'onbekend';
+$lang['Upload Photos'] = 'Upload foto\'s';
+$lang['Drop into album'] = 'Selecteer een album';
+$lang['+ Add an upload box'] = 'Voeg een lege upload-regel toe';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Maak de "%s" directory aan vanuit de root van uw Piwigo-installatie';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Geef schrijfrechten (chmod 777) aan de "%s" directory vanuit de root van uw piwigo installatie';
+$lang['existing album'] = 'Bestaand album';
+$lang['create a new album'] = 'Maak een nieuw album aan';
+$lang['Album name'] = 'Albumnaam';
+$lang['Album "%s" has been added'] = 'Album "%s" is toegevoegd';
+$lang['Uploaded Photos'] = 'Ge-uploade foto\'s';
+$lang['%d photos uploaded'] = '%d foto\'s ge-uploaded';
+$lang['Privacy level set to "%s"'] = 'Privacy-niveau staat nu op "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" bevat nu %d foto\'s';
+$lang['Manage this set of %d photos'] = 'Beheer deze reeks van %d foto\'s';
+$lang['Select files'] = 'Selecteer bestanden';
+$lang['Everybody'] = 'Iedereen';
+$lang['Who can see these photos?'] = 'Wie mag deze foto\'s zien?';
+$lang['Settings'] = 'Instellingen';
+$lang['Resize'] = 'Grootte aanpassen';
+$lang['Maximum width'] = 'Maximum Breedte';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height'] = 'Maximum Hoogte';
+$lang['Image Quality'] = 'Afbeeldingskwaliteit';
+$lang['Save Settings'] = 'Bewaar instellingen';
+$lang['Your configuration settings are saved'] = 'Uw configuratie-instellingen zijn opgeslagen';
+$lang['Active Themes'] = 'Actieve Thema\'s';
+$lang['Add write access to the "%s" directory'] = 'Geef de "%s" directorie schrijfbevoegdheden';
+$lang['Administration Home'] = 'Administratie Startpagina';
+$lang['Change Admin Colors'] = 'Wijzig de Admin-kleuren';
+$lang['Delete this theme'] = 'Verwijder dit thema';
+$lang['Directory does not exist'] = 'Map bestaat niet';
+$lang['Download,'] = 'Download,';
+$lang['FTP + Synchronization'] = 'Via FTP + Synchronisatie';
+$lang['Get Support on Piwigo Forum'] = 'Zoek/Krijg ondersteuning op het Piwigo gebruikers-forum';
+$lang['Help Me'] = 'Help';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Het is niet mogelijk dit thema te activeren, het basis-thema ontbreekt: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Het is niet mogelijk dit thema te verwijderen. Er zijn nog andere thema\'s die aan dit thema gekoppeld zijn: %s';
+$lang['Inactive Themes'] = 'Niet actieve Thema\'s';
+$lang['Install on your computer,'] = 'Installeer op uw computer,';
+$lang['Make this theme available to users'] = 'Maak dit thema beschikbaar voor gebruikers';
+$lang['Page end'] = 'Pagina-einde';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = 'Lees de Piwigo Documentatie';
+$lang['Start pLoader and add your photos.'] = 'Start pLoader en voeg uw foto\'s toe.';
+$lang['Switch to clear or dark colors for administration'] = 'Schakel om naar heldere of donkere kleuren voor de administratie';
+$lang['Theme has been successfully installed'] = 'Thema is succesvol geïnstalleerd';
+$lang['Visit Gallery'] = 'Bezoek Galerie';
+$lang['Visit Piwigo project website'] = 'Bezoek de website van het Piwigo project';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader is een afkorting van <em>Piwigo Uploader</em>. pLoader maakt uw foto\'s op uw computer klaar en zet ze dan over naar uw Piwigo fotogalerie.';
+$lang['Guest Settings'] = 'Bezoeker/Guest-Instellingen';
+$lang['Main Page'] = 'Hoofd-pagina';
+$lang['Photo Page'] = 'Foto-pagina';
+$lang['Activate Navigation Bar'] = 'Activeer de Navigatie-balk';
+$lang['Activate Navigation Thumbnails'] = 'Activeer de navigatie-klikplaatjes';
+$lang['Activate icon "%s"'] = 'Activeer icoon "%s"';
+$lang['Photo Properties'] = 'Foto-eigenschappen';
+$lang['Allow user customization'] = 'Sta gebruikers-aanpassingen toe';
+$lang['Languages'] = 'Talen';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Uitvoerings-tijd overschreden, de afhandeling moet verder gaan [Geschatte tijd: %d seconden].';
+$lang['Installed Languages'] = 'Geïnstalleerde talen';
+$lang['Add New Language'] = 'Voeg een nieuwe taal toe';
+$lang['Language has been successfully installed'] = 'Taal is succesvol geïnstalleerd';
+$lang['Select:'] = 'Selecteer:';
+$lang['None'] = 'Geen';
+$lang['Invert'] = 'Inverteer';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Dit thema kan niet gedeactiveerd worden. Er moet minstens één thema geactiveerd zijn.';
+$lang['Webmaster status is required.'] = 'De status van de webbeheerder is noodzakelijk.';
+$lang['Bound Theme'] = 'Gebonden Thema';
+$lang['Allow rating'] = 'Waardering toestaan';
+$lang['Select at least one comment'] = 'Minstens een commentaar selecteren';
+$lang['Active Plugins'] = 'Actieve Plugins';
+$lang['Inactive Plugins'] = 'Niet actieve Plugins';
+$lang['Missing Plugins'] = 'Missende Plugins';
+$lang['Uninstalled Plugins'] = 'Niet geïnstalleerde Plugins';
+$lang['By %s'] = 'Door %s';
+$lang['Visit plugin site'] = 'Bezoek de plugin site';
+$lang['Active Languages'] = 'Actieve talen';
+$lang['Delete this language'] = 'Verwijder deze taal';
+$lang['Forbid this language to users'] = 'Stel deze taal niet beschikbaar aan gebruikers';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Niet mogelijk om deze taal te deactiveren, stel eerst een andere taal in als standaardtaal.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Niet mogelijk om deze taal te deactiveren, er moet minstens één taal actief zijn.';
+$lang['Inactive Languages'] = 'Niet actieve talen';
+$lang['Make this language available to users'] = 'Stel deze taal beschikbaar aan gebruikers';
+$lang['Set as default language for unregistered and new users'] = 'Stel in als standaardtaal voor niet geregistreerde en nieuwe gebruikers';
+$lang['Miscellaneous'] = 'Diverse';
+$lang['Virtual Links'] = 'Virtuele Links';
+$lang['Add Photos'] = 'Foto\'s toevoegen';
+$lang['The following tag was deleted'] = 'Het volgende label werd verwijderd';
+$lang['There is no other language available.'] = 'Er is geen andere taal beschikbaar.';
+$lang['There is no other plugin available.'] = 'Er is geen andere plugin beschikbaar.';
+$lang['There is no other theme available.'] = 'Er is geen andere thema beschikbaar.';
+$lang['Add another set of photos'] = 'Een andere set foto\'s toevoegen';
+$lang['By rank'] = 'Op rang';
+$lang['Manual order'] = 'Handmatige volgorde';
+$lang['Order of menubar items has been updated successfully.'] = 'De volgorde van menu-items is succesvol aangepast.';
+$lang['This theme was not designed to be directly activated'] = 'Dit thema is niet ontworpen om direct geactiveerd te worden';
+$lang['Who can see this photo?'] = 'Wie mag deze foto zien?';
+$lang['Pending Comments'] = 'Nog niet goedgekeurde commentaren';
+$lang['Menu Management'] = 'Menu';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In uw php.ini bestand, de upload_max_filesize (%sB) is groter dan post_max_size (%sB), moet u deze instelling wijzigen';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Het geuploade bestand is groter dan de upload_max_filesize richtlijn in php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Het geuploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in het HTML formulier';
+$lang['The uploaded file was only partially uploaded'] = 'Het geuploade bestand is slechts gedeeltelijk geupload';
+$lang['No file was uploaded'] = 'Er is geen bestand geupload';
+$lang['Missing a temporary folder'] = 'Er ontbreekt een tijdelijke map';
+$lang['Failed to write file to disk'] = 'Kan bestand niet naar schijf schrijven';
+$lang['File upload stopped by extension'] = 'Bestand upload gestopt door bestandsextensie';
+$lang['Unknown upload error'] = 'Onbekende upload fout';
+$lang['Error on file "%s" : %s'] = 'Fout in het bestand "%s" : %s';
+$lang['automatic order'] = 'automatische volgorde';
+$lang['manual order'] = 'handmatige volgorde';
+$lang['Albums automatically sorted'] = 'Albums automatisch gesorteerd';
+$lang['Batch Manager'] = 'Bulk beheerder';
+$lang['include child albums'] = 'include child albums';
+$lang['Selection'] = 'Selectie';
+$lang['Action'] = 'Actie';
+$lang['Set author'] = 'Stel auteur in';
+$lang['Set title'] = 'Stel titel in';
+$lang['Set creation date'] = 'Stel aanmaakdatum in';
+$lang['Apply action'] = 'Toepassen';
+$lang['on the %d selected photos'] = 'op de %d geselecteerde foto\'s';
+$lang['%d of %d photos selected'] = '%d van %d foto\'s geselecteerd';
+$lang['No photo selected, %d photos in current set'] = 'Geen foto geselecteerd, %d foto\'s in de huidige set';
+$lang['All %d photos are selected'] = 'Alle %d foto\'s zijn geselecteerd';
+$lang['remove this filter'] = 'Verwijder dit filter';
+$lang['Duplicates'] = 'duplicaten';
+$lang['Add a filter'] = 'Voeg een filter toe';
+$lang['Remove all filters'] = 'Verwijder alle filters';
+$lang['Refresh photo set'] = 'Vernieuwen foto set';
+$lang['The whole page'] = 'De hele pagina';
+$lang['The whole set'] = 'De hele set';
+$lang['No photo in the current set.'] = 'Geen foto in de huidige reeks.';
+$lang['No photo selected, no action possible.'] = 'Geen foto geselecteerd, geen actie mogelijk.';
+$lang['Choose an action'] = 'Kies een actie';
+$lang['remove author'] = 'Verwijder auteur';
+$lang['Type here the author name'] = 'Typ hier de naam van de auteur';
+$lang['remove title'] = 'Verwijder titel';
+$lang['Type here the title'] = 'Typ hier de titel';
+$lang['remove creation date'] = 'Verwijder aanmaakdatum';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif extensie is niet beschikbaar, de administrator moet exif gebruik uitsluiten';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Het geuploade bestand is groter dan upload_max_filesize instelling in php.ini: %sB';
+$lang['include child albums'] = 'inclusief sub albums';
+$lang['Album photos associated to the following albums: %s'] = 'Album-foto\'s verbonden met de volgende albums: %s';
+$lang['Delete orphan tags'] = 'Verwijder niet gebruikte labels';
+$lang['delete photo'] = 'verwijder foto';
+$lang['Orphan tags deleted'] = 'Niet gebruikte labels verwijderd';
+$lang['Remove from caddie'] = 'Verwijder uit verzamelmandje';
+$lang['Week starts on'] = 'De week begint op';
+$lang['You have %d orphan tags: %s.'] = 'U heeft %d niet gebruikte labels: %s.';
+$lang['Themes which need upgrade'] = 'Thema\'s die bijgewerkt moeten worden';
+$lang['Languages which need upgrade'] = 'Talen die bijgewerkt moeten worden';
+$lang['All themes are up to date.'] = 'Alle thema\'s zijn bijgewerkt.';
+$lang['All plugins are up to date.'] = 'Alle plugins zijn bijgewerkt.';
+$lang['All languages are up to date.'] = 'Alle talen zijn bijgewerkt.';
+$lang['Visit theme site'] = 'Bezoek de thema-webpagina';
+$lang['Visit language site'] = 'Bezoek de talen-webpagina';
+$lang['New Version'] = 'Nieuwe versie';
+$lang['Obsolete Plugins'] = 'Verouderde Plugins';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WAARSCHUWING! Deze plugin lijkt niet compatibel met deze versie van Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Wilt u desondanks activeren?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DEZE PLUGIN IS NU ONDERDEEL VAN PIWIGO CORE! VERWIJDER DE PLUGIN NU.';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FOUT: DEZE PLUGIN MIST MAAR IS GEINSTALEERD! DEINSTALLEER DE PLUGIN NU.';
+$lang['Thumbnails generation in progress...'] = 'Bezig met genereren van klikplaatjes...';
+$lang['Photos generation in progress...'] = 'Bezig met genereren foto\'s...';
+$lang['%s photos have been regenerated'] = '%s foto\'s zijn opnieuw gegenereerd.';
+$lang['%s photos can not be regenerated'] = '%s foto\'s kunnen niet opnieuw gegenereerd worden';
+$lang['display'] = 'toon';
+$lang['new'] = 'nieuw';
+$lang['No results'] = 'Geen resultaten';
+$lang['Searching...'] = 'Bezig met zoeken...';
+$lang['Type in a search term'] = 'Type een zoekterm in';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activeer "nieuw" pictogram naast albums en afbeeldingen';
+$lang['Deactivate all'] = 'Deactiveer alles';
+$lang['Default photos order'] = 'Standaard foto volgorde';
+$lang['Restore'] = 'Herstel';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Herstel de standaard instellingen. U zult alle plugin instellingen kwijtraken!';
+$lang['Show menubar'] = 'Toon menubalk';
+$lang['Updates'] = 'Updates';
+$lang['Update in progress... Please wait.'] = 'Bezig met updaten... Even geduld aub';
+$lang['Ignore this update'] = 'Negeer deze update';
+$lang['Reset ignored updates'] = 'Reset genegeerde updates';
+$lang['Update All'] = 'Update Alles';
+$lang['ERROR'] = 'ERROR';
+$lang['Update Complete'] = 'Update klaar';
+$lang['Piwigo Update'] = 'Piwigo Update';
+$lang['Extensions Update'] = 'Uitbreidingen Update';
+$lang['All extensions are up to date.'] = 'Alle uitbreidingen zijn bijgewerkt.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'De volgende plugins zouden niet compatibel kunnen zijn met de nieuwe versie van Piwigo:';
+$lang['Add a criteria'] = 'Voeg een criterium toe';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'U kunt geen standaard foto volgorde definiëren in verband met aangepaste instelling in uw persoonlijke configuratie';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'U heeft <i>$conf[\'order_by\']</i> in uw lokale configuratie bestand gespecificeerd. Deze parameter is verouderd, verwijder het of hernoem het naar <i>$conf[\'order_by_custom\']</i> !';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'De volgende thema\'s zijn mogelijk niet compatibel met de nieuwe versie van Piwigo:';
+$lang['I decide to update anyway'] = 'Ik besluit om alsnog te updaten';
+$lang['Update to Piwigo %s'] = 'Update naar Piwigo %s';
+$lang['Two updates are available'] = 'Twee updates zijn beschikbaar';
+$lang['This is a minor update, with only bug corrections.'] = 'Dit is een kleine update, met alleen wat gerepareerde foutjes.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Dit is een grote update, met <a href="%s">allerlei nieuwe mogelijkheden</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Sommige thema\'s en plugins zijn mogelijk nog niet beschikbaar.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'U kunt gelijk naar Piwigo %s updaten, zonder eerst up te daten naar Piwigo %s (aanbevolen).';
+$lang['Save Template Directory'] = 'Sla sjabloon direcotry op';
+$lang['Dump Database'] = 'Dump Database';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Gebruik geschiedenis data (Waarschuwing: het geheugen limiet van de server kan overschreden worden).';
+$lang['Unable to dump database.'] = 'Kan de database niet dumpen.';
+$lang['Some upgrades are available for extensions.'] = 'Er zijn enkele plugin-updates beschikbaar.';
+$lang['Ignore All'] = 'Negeer alles';
+$lang['Crop'] = 'Inkorten';
+$lang['Width'] = 'Breedte';
+$lang['Height'] = 'Hoogte';
+$lang['Follow Orientation'] = 'Volg orientatie';
+$lang['Graphics Library'] = 'Afbeeldingen bibliotheek';
+$lang['Average rate'] = 'Gemiddelde waardering';
+$lang['Rate'] = 'Waardering';
+$lang['Learn more'] = 'Leer meer';
+$lang['An error has occured during upgrade.'] = 'Er is iets foutgegaan bij het bijwerken van Piwigo naar de nieuwste versie.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Er is iets foutgegaan bij het uitpakken. Controleer de bestands-rechten/attributen van uw Piwigo installatie.<br><a href="%s">Klik hier om de fout-logging weer te geven</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan het upgrade-bestand niet van de server verkrijgen';
+$lang['... or '] = '... of ';
+$lang['Create'] = 'Aanmaken';
+$lang['Start Upload'] = 'Start Upload';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'U gebruikt de Flash uploader. Problemen? Probeer de <a href="%s">Browser uploader</a> inplaats.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'U gebruikt de Browser uploader. Problemen? Probeer de  <a href="%s">Flash uploader</a> inplaats.';
+$lang['Maximum file size: %sB.'] = 'Maximum bestands omvang: %sB.';
+$lang['Allowed file types: %s.'] = 'Toegestane bestands typen: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Geschatte maximale resolutie: %dM pixels (dat is %dx%d pixels).';
+$lang['Manage Permissions'] = 'Beheer Rechten';
+$lang['Photo %s of %s'] = 'Foto %s of %s';
+$lang['show details'] = 'Toon details';
+$lang['hide details'] = 'Verberg details';
+$lang['Merge tags'] = 'Voeg labels samen';
+$lang['Select the destination tag'] = 'Kies het bestemmings-label';
+$lang['(this tag will be deleted)'] = '(Dit label wordt verwijderd)';
+$lang['Confirm merge'] = 'Bevestig samenvoegen';
+$lang['Merge selected tags'] = 'Voeg de geselecteerde labels samen';
+$lang['No destination tag selected'] = 'Geen bestemmings-label geselecteerd';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Labels <em>%s</em> samengevoegd in label <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Selecteer ten minste twee labels om samen te voegen';
+$lang['Select an album'] = 'Kies een album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Standaard zal Piwigo een nieuwe web formaat foto aanmaken van de HD (high definition / originele) versie van uw foto.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Als geen HD beschikbaar is en de huidige web formaat foto is groter dan de nieuwe afmetingen, dan zal Piwigo het als HD gebruiken en daar een web formaat foto van maken.';
+$lang['Zoom'] = 'Zoom';
+$lang['%s has been successfully updated.'] = '%s is geupdated.';
+$lang['Add tags'] = 'Voeg labels toe';
+$lang['Add to caddie'] = 'Voeg toe aan het verzamelmandje';
+$lang['Last import'] = 'Laatste import';
+$lang['Predefined filter'] = 'Voorgedefinieerd filter';
+$lang['With no album'] = 'Zonder album';
+$lang['With no tag'] = 'Zonder label';
+$lang['With no virtual album'] = 'Zonder virtueel album';
+$lang['Photo name'] = 'Foto-naam';
+$lang['Activate comments'] = 'Activeer onderschriften';
+$lang['Default comments order'] = 'Standaard commentaar volgorde';
+$lang['Send connection settings by email'] = 'Verstuur verbindings-instellingen per email';
+$lang['The original image quality must be a number between %d and %d'] = 'De originele foto-kwaliteit moet een nummer zijn tussen %d en %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'De originele maximum grootte moet een nummer zijn tussen %d en %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'De originele maximum breedte moet een nummer zijn tussen %d en %d';
+$lang['Resize after upload'] = 'Wijzig het formaat na uploaden';
+$lang['Original Size'] = 'Originele formaat';
+$lang['A locked gallery is only visible to administrators'] = 'Een gesloten galerie is alleen zichtbaar voor administrators';
+$lang['Unlock gallery'] = 'Open galerie';
+$lang['Gallery unlocked'] = 'Galerie geopend';
+$lang['Notify administrators when a comment is'] = 'Informeer administrators indien een commentaar';
+$lang['modified'] = 'gewijzigd is';
+$lang['pending validation'] = 'wacht op validatie';
+$lang['Save visits in history for'] = 'Sla bezoeken op in geschiedenis voor';
+$lang['simple visitors'] = 'gewone bezoekers';
+$lang['registered users'] = 'geregistreerde gebruikers';
+$lang['administrators'] = 'Administrators';
+$lang['This album contains %d photos, added on %s.'] = 'Dit album bevat %d foto\'s, toegevoegd op %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Dit album bevat %d foto\'s, toegevoegd tussen %s en %s.';
+$lang['This album contains no photo.'] = 'Dit album bevat geen afbeeldingen.';
+$lang['Not cropped correctly?'] = 'Niet goed bijgesneden?';
+$lang['Center of interest'] = 'Middelpunt van belangstelling';
+$lang['Move to album'] = 'Verplaats naar album';
+$lang['You can activate only one mobile theme.'] = 'U kunt slechts een mobiel thema activeren.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'De <em>Piwigo voor Android</em> applicatie stelt u in staat uw Piwigo galerie te openen vanaf uw Android-telefoon of tablet, een aantal albums aan te maken en meerdere foto\'s tegelijk te uploaden.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo voor IOS</em> applicatie stelt u in staat uw Piwigo galerie te openen vanaf uw iPhone, iPad of iPod Touch, een aantal albums aan te maken en meerdere foto\'s tegelijk te uploaden.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is fotografie-software ontworpen om grote hoeveelheden digitale foto\'s te verwerken en voor het verrichten van post-productie werk.';
+$lang['Applications'] = 'Via toepassingen';
+$lang['apply automatic sort order'] = 'Automatische sorteervolgorde toepassen';
+$lang['Automatic sort order'] = 'Automatische sorteervolgorde';
+$lang['Available on'] = 'Beschikbaar voor';
+$lang['Available versions for'] = 'Beschikbare versies voor';
+$lang['cancel manual order'] = 'Annuleer handmatige volgorde';
+$lang['Cancel'] = 'Annuleer';
+$lang['List'] = 'Lijst';
+$lang['Piwigo for Android'] = 'Piwigo voor Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo voor iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plugin voor Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Publish plugin voor Shotwell';
+$lang['Save manual order'] = 'Bewaar handmatige volgorde';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is een open source digitale foto organizer die draait op Linux. Het is de standaard foto-manager in Ubuntu en Fedora.';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Het bestand of de map kan niet worden geopend (of het bestaat niet of de toegang wordt geweigerd)';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Met de Piwigo Publish plugin kunt u foto\'s direct vanuit Lightroom naar uw Piwigo fotogalerie exporteren en synchroniseren.';
+$lang['Web Form'] = 'Via webformulier';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u gebruikers hebben automatisch recht, omdat ze tot een groep behoren die dit recht is verleend';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is een krachtig gereedschap om grote hoeveelheden foto\'s te beheren en te verbeteren op een Mac .';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is gemaakt voor proferssionele fotografen met iPhoto gemak.';
+$lang['Apply watermark if height is bigger than'] = 'Breng watermerk aan, als de hoogte groter is dan';
+$lang['Apply watermark if width is bigger than'] = 'Breng watermerk aan, als de breedte groter is dan';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Standaard, is het centrum van belangstelling in het midden van de foto geplaatst';
+$lang['Delete multiple size images'] = 'Verwijder meerdere formaat plaatjes';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Kenmerken omvatten galerie browsen, album maken en foto\'s uploaden.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Voor bijgesneden fotoformaten, probeert Piwigo het centrum van belangstelling in te voegen.   ';
+$lang['Generate multiple size images'] = 'Genereer meerdere formaat plaatjes';
+$lang['Groups and users'] = 'Groepen en gebruikers';
+$lang['No group is permitted to see this private album'] = 'Geen enkele groep heeft rechten om dit album te zien';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Onder Linux, installeer Shotwell met de package manager, en activeer de Piwigo publicatie optie.';
+$lang['Opacity'] = 'Transparantie';
+$lang['Permission granted for groups'] = 'Rechten verleend voor groepen';
+$lang['Permission granted for users'] = 'Rechten verleend voor gebruikers';
+$lang['Permission management'] = 'Rechten-beheer';
+$lang['Photo sizes with crop'] = 'Bijgesneden foto formaten';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin voor Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin voor iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicatie plugin voor digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is een open source (GPL v3) Piwigo client voor Android.';
+$lang['Select a file'] = 'Kies een bestand';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecteer met de muis een gebied als nieuw centrum van belangstelling.';
+$lang['Select groups...'] = 'Selecteer groepen...';
+$lang['Select users...'] = 'Kies gebruikers...';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'De Piwigo export plugin maakt het mogelijk om albums te maken en foto\'s te exporteren.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Het centrum van belangstelling is het belangrijkste gedeelte van de foto.';
+$lang['There is no group in this gallery.'] = 'Er is geen groep in deze galerie';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Om foto\'s van digiKam naar Piwigo te exporteren, installeer de digiKam en Kipi-plugins.';
+$lang['X Position'] = 'X positie';
+$lang['X Repeat'] = 'X herhalen';
+$lang['Y Position'] = 'Y positie';
+$lang['add a new watermark'] = 'Voeg een nieuw watermerk toe';
+$lang['any visitor can see this album'] = 'elke bezoeker kan dit album zien';
+$lang['bottom left corner'] = 'hoek links onder';
+$lang['bottom right corner'] = 'hoek rechts onder';
+$lang['custom'] = 'Aangepast';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is een gratis geavanceerde digitale foto beheersoftware voor Linux, Windows en MacOSX.  ';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is voor fotografen die foto\'s willen bekijken, beheren, bewerken, labelen en delen. ';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is de standaard foto-manager onder MacOSX. De Piwigo export plugin maakt het aanmaken van albums en het exporteren van foto\'s mogelijk, van iPhoto naar de Piwigo galerie';
+$lang['include photos with lower privacy level'] = 'Inclusief foto\'s met een lager rechten niveau ';
+$lang['middle'] = 'midden';
+$lang['top left corner'] = 'hoek links boven';
+$lang['top right corner'] = 'hoek rechts boven';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Bezoekers moeten zich aanmelden en dienen de juiste rechten te hebben om dit album te kunnen zien';
+$lang['Multiple Size'] = 'Verschillende formaten';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dagen';
+$lang['%d hour'] = '%d uur';
+$lang['%d hours'] = '%d uren';
+$lang['%d minute'] = '%d minuut';
+$lang['%d minutes'] = '%d minuten';
+$lang['%d month'] = '%d maand';
+$lang['%d months'] = '%d maanden';
+$lang['%d second'] = '%d seconde';
+$lang['%d seconds'] = '%d seconden';
+$lang['%d year'] = '%d jaar';
+$lang['%d years'] = '%d jaren';
+$lang['%s ago'] = '%s geleden';
+$lang['%s in the future'] = '%s in de toekomst';
+$lang['Added by %s'] = 'toegevoegd door %s';
+$lang['Numeric identifier : %d'] = 'Numerieke aanduiding : %d';
+$lang['Original file : %s'] = 'Origineel bestand : %s';
+$lang['Posted %s on %s'] = 'Geplaatst %s om %s';
+$lang['Rated %d times, score : %.2f'] = 'Gewaardeerd %d keer, score : %.2f';
+$lang['Sharpen'] = 'Verscherp';
+$lang['Visited %d times'] = '%d keer bezocht';
+$lang['Watermark'] = 'Watermerk';
+$lang[' and %d virtuals'] = 'en %d virtueel';
+$lang['%d physicals'] = '%d fysiek';
+$lang['%d week'] = '%d week';
+$lang['%d weeks'] = '%d weken';
+$lang['Edit photo'] = 'Foto aanpassen';
+$lang['create a new site'] = 'Maak een nieuwe site';
+$lang['No order field selected'] = 'Geen volgordeveld geselecteerd';
+$lang['Duplicate selected tags'] = 'Dupliceer de geselecteerde labels';
+$lang['Name of the duplicate'] = 'Naam van het duplicaat';
+$lang['Source tag'] = 'Bron-label';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Label "%s" is nu een duplicaat van "%s"';
+$lang['Manage photos'] = 'Foto\'s beheren';
+$lang['View in gallery'] = 'Bekijk in galerie';
+$lang['Ratio'] = 'Verhouding';
+$lang['Landscape'] = 'Landschap';
+$lang['Minimum height'] = 'Minimum hoogte';
+$lang['Minimum width'] = 'Minimum breedte';
+$lang['Number of albums per page'] = 'Aantal albums per pagina';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portret';
+$lang['between %.2f and %.2f'] = 'tussen %.2f en %.2f';
+$lang['between %d and %d pixels'] = 'tussen %d en %d pixels';
+$lang['Duplicate'] = 'Kopieer';
+$lang['Manage the members'] = 'Beheer de gebruikers';
+$lang['Merge selected groups'] = 'Voeg de geselecteerde groepen samen';
+$lang['No group selected, no action possible.'] = 'Geen groep geselecteerd, handeling niet mogelijk';
+$lang['No members to manage'] = 'Geen gebruikers te beheren';
+$lang['Please select at least two groups'] = 'Selecteer tenminste 2 groepen';
+$lang['Rename'] = 'Hernoem';
+$lang['This group will be set to default'] = 'Deze groep zal standaard worden gebruikt';
+$lang['This group will be unset to default'] = 'Deze groep zal niet langer als standaard worden gebruikt';
+$lang['Type here the name of the new group'] = 'Voer de naam in van de nieuwe groep';
+$lang['Purge user cache'] = 'Verwijder gebruikers-cache';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'De afmetingen van de afbeelding zullen worden verlaagd naar %dx%d pixels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Omdat GD als grafische bibliotheek (graphic library) wordt gebruikt, is het formatteren van afbeeldingen na het uploaden geblokkeerd';
+$lang['Basic settings'] = 'Basisinstellingen';
+$lang['General'] = 'Algemeen';
+$lang['Mail theme'] = 'Mail-thema';
+$lang['Select at least one tag'] = 'Op zijn minst één label kiezen';
+$lang['Loading...'] = 'Wordt geladen...';
+$lang['(filtered from %s total users)'] = '(gefilterd van %s totaal aantal gebruikers)';
+$lang['User %s added'] = 'Gebruiker %s toegevoegd';
+$lang['User %s updated'] = 'Gebruiker %s gwijzigd';
+$lang['on the %d selected users'] = 'aan de %d geselecteerde gebruikers';
+$lang['Users modified'] = 'Gebruikers veranderd';
+$lang['Showing %s to %s of %s users'] = 'Geef %s weer aan %s van de %s gebruikers';
+$lang['Update user'] = 'Werk de gebruiker bij';
+$lang['No matching user found'] = 'Geen overeenkomende gebruikers gevonden';
+$lang['No user selected of %d users'] = 'Geen gebruiker geselecteerd van de %d gebruikers';
+$lang['No user selected, no action possible.'] = 'Geen gebruiker geselecteerd, geen actie mogelijk';
+$lang['Registered on %s, %s.'] = 'Geregistreerd op %s, %s.';
+$lang['Show %s users'] = 'Geef %s gebruikers weer';
+$lang['Change username'] = 'Verander gebruikersnaam';
+$lang['Last visit on %s, %s.'] = 'Laatste bezoek op %s, %s.';
+$lang['Password updated'] = 'Wachtwoord aangepast';
+$lang['%d of %d users selected'] = '%d van %d gebruikers geselecteerd';
+$lang['All %d users are selected'] = 'Alle %d gebruikers zijn geselecteerd';
+$lang['Change password'] = 'Verander wachtwoord';
+?>
Index: /tags/2.6.0RC1/language/nl_NL/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/common.lang.php	(revision 25596)
@@ -0,0 +1,429 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Nederlands [NL]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=429
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Dutch';
+$lang_info['country'] = 'Nederland';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'nl';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album bijgewerkt';
+$lang['%d albums updated'] = '%d albums bijgewerkt';
+$lang['%d comment to validate'] = '%d commentaar voor validatie';
+$lang['%d comments to validate'] = '%d commentaren voor validatie';
+$lang['%d new comment'] = '%d nieuw commentaar';
+$lang['%d new comments'] = '%d nieuwe commentaren';
+$lang['%d comment'] = '%d commentaar';
+$lang['%d comments'] = '%d commentaren';
+$lang['%d hit'] = '%d bezoeker';
+$lang['%d hits'] = '%d bezoekers';
+$lang['%d new photo'] = '%d nieuwe foto';
+$lang['%d new photos'] = '%d nieuwe foto\'s';
+$lang['%d new user'] = '%d nieuwe gebruiker';
+$lang['%d new users'] = '%d nieuwe gebruikers';
+$lang['About'] = 'Over';
+$lang['All tags'] = 'Alle labels';
+$lang['Any tag'] = 'Een van de labels';
+$lang['At least one listed rule must be satisfied.'] = 'Op zijn minst moet aan één regel worden voldaan.';
+$lang['Author'] = 'Naam';
+$lang['Albums'] = 'Albums';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Sluit dit venster';
+$lang['Complete RSS feed (photos, comments)'] = 'Complete RSS feed (foto\'s, commentaren)';
+$lang['Confirm Password'] = 'Bevestig wachtwoord';
+$lang['Connection settings'] = 'Verbindings-instellingen';
+$lang['Login'] = 'Aanmelden';
+$lang['Contact webmaster'] = 'Neem contact op met de webbeheerder';
+$lang['Create a new account'] = 'Maak een nieuw account aan';
+$lang['Created on'] = 'Aangemaakt op';
+$lang['Creation date'] = 'Aanmaakdatum';
+$lang['Current password is wrong'] = 'Huidig wachtwoord is niet juist';
+$lang['Dimensions'] = 'Dimensies';
+$lang['Display'] = 'Weergeven';
+$lang['Each listed rule must be satisfied.'] = 'Aan elke weergegeven regel moet worden voldaan.';
+$lang['Email address is missing. Please specify an email address.'] = 'Emailadres is niet ingevuld.';
+$lang['Email address'] = 'Emailadres';
+$lang['Enter your personnal informations'] = 'Vul uw persoonlijke informatie in';
+$lang['Error sending email'] = 'Fout bij het versturen van email';
+$lang['File name'] = 'Bestandsnaam';
+$lang['File'] = 'Bestand';
+$lang['Filesize'] = 'Bestandsgrootte';
+$lang['Filter and display'] = 'Filteren en tonen';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Wachtwoord vergeten?';
+$lang['Go through the gallery as a visitor'] = 'Bekijk de galerie als gast';
+$lang['Help'] = 'Help';
+$lang['Identification'] = 'Identificatie';
+$lang['Photos only RSS feed'] = 'Alleen RSS feed mbt foto\'s';
+$lang['Keyword'] = 'Sleutelwoord';
+$lang['Links'] = 'Links';
+$lang['N/A'] = 'Niet bekend';
+$lang['New on %s'] = 'Nieuw op %s';
+$lang['Notification'] = 'Meldingen';
+$lang['Number of items'] = 'Aantal items';
+$lang['Original dimensions'] = 'Originele dimensies';
+$lang['Password forgotten'] = 'Wachtwoord vergeten';
+$lang['Password'] = 'Wachtwoord';
+$lang['Post date'] = 'Plaatsingsdatum';
+$lang['Posted on'] = 'Geplaatst op';
+$lang['Profile'] = 'Profiel';
+$lang['Quick connect'] = 'Snel verbinden';
+$lang['RSS feed'] = 'RSS feed';
+$lang['Register'] = 'Registreren';
+$lang['Registration'] = 'Registratie';
+$lang['Related tags'] = 'Gerelateerde labels';
+$lang['Reset'] = 'Reset';
+$lang['Retrieve password'] = 'Ontvang nieuw wachtwoord';
+$lang['Search rules'] = 'Zoekregels';
+$lang['Search tags'] = 'Zoek labels';
+$lang['Search'] = 'Zoeken';
+$lang['display available tags'] = 'Toon de beschikbare labels';
+$lang['Since'] = 'Sinds';
+$lang['Sort by'] = 'Sorteren op';
+$lang['Sort order'] = 'Sorteervolgorde';
+$lang['Tag'] = 'Label';
+$lang['Tags'] = 'Labels';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'De RSS feed geeft meldingen als er nieuws is op deze website: nieuwe foto\'s, bijgewerkte albums, nieuwe commentaaren. Gebruik hiervoor een RSS-feed lezer.';
+$lang['Unknown feed identifier'] = 'Onbekende feed identifier';
+$lang['User comments'] = 'Gebruikers-commentaar';
+$lang['Username'] = 'Gebruikersnaam';
+$lang['Visits'] = 'Bezoeken';
+$lang['Webmaster'] = 'Webbeheerder';
+$lang['Week %d'] = 'Week %d';
+$lang['About Piwigo'] = 'Over Piwigo';
+$lang['You are not authorized to access the requested page'] = 'U heeft geen rechten voor de opgevraagde pagina';
+$lang['add this photo to your favorites'] = 'Voeg deze foto toe aan uw favorieten';
+$lang['Administration'] = 'Beheer';
+$lang['all'] = 'alle';
+$lang['ascending'] = 'Oplopend';
+$lang['author(s) : %s'] = 'Naam/Namen: %s';
+$lang['Expand all albums'] = 'Toon alle albums';
+$lang['posted after %s (%s)'] = 'geplaatst na %s (%s)';
+$lang['posted before %s (%s)'] = 'geplaatst voor %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'geplaatst tussen %s (%s) en %s (%s)';
+$lang['posted on %s'] = 'geplaatst op %s';
+$lang['Best rated'] = 'Beste gewaardeerd';
+$lang['display best rated photos'] = 'Geef de hoogst gewaardeerde foto\'s weer';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Alle';
+$lang['display each day with photos, month per month'] = 'Geef elke dag weer met foto\'s, maand voor maand';
+$lang['View'] = 'Bekijk';
+$lang['chronology_monthly_calendar'] = 'Maand-kalender';
+$lang['chronology_monthly_list'] = 'Maand-lijst';
+$lang['chronology_weekly_list'] = 'Week-lijst';
+$lang['Click here if your browser does not automatically forward you'] = 'Klik hier als uw browser u niet doorstuurt';
+$lang['comment date'] = 'Commentaardatum';
+$lang['Comment'] = 'Commentaar';
+$lang['Your comment has been registered'] = 'Uw commentaar is geregistreerd';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood systeem : u moet even wachten voordat u weer een nieuw commentaar kunt plaatsen';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Uw commentaar is NIET geregistreerd omdat de validatie-regels de plaatsing voorkwam';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Een beheerder moet uw commentaar goedkeuren voordat het zichtbaar wordt.';
+$lang['This login is already used by another user'] = 'Deze gebruikersnaam is al in gebruik';
+$lang['Comments'] = 'Commentaren';
+$lang['Add a comment'] = 'Voeg commentaar toe';
+$lang['created after %s (%s)'] = 'Gemaakt na %s (%s)';
+$lang['created before %s (%s)'] = 'Gemaakt voor %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'Gemaakt tussen %s (%s) en %s (%s)';
+$lang['created on %s'] = 'gemaakt op %s';
+$lang['Customize'] = 'Profiel aanpassen';
+$lang['Your Gallery Customization'] = 'Uw galerie aanpassingen ';
+$lang['day'][0] = 'Zondag';
+$lang['day'][1] = 'Maandag';
+$lang['day'][2] = 'Dinsdag';
+$lang['day'][3] = 'Woensdag';
+$lang['day'][4] = 'Donderdag';
+$lang['day'][5] = 'Vrijdag';
+$lang['day'][6] = 'Zaterdag';
+$lang['Default'] = 'Standaard';
+$lang['delete this photo from your favorites'] = 'Verwijder deze foto van uw favorieten';
+$lang['Delete'] = 'Verwijderen';
+$lang['descending'] = 'Aflopend';
+$lang['Download'] = 'Download';
+$lang['Download this file'] = 'download dit bestand';
+$lang['edit'] = 'Wijzig';
+$lang['wrong date'] = 'verkeerde datum';
+$lang['excluded'] = 'uitsluiten';
+$lang['Your favorites'] = 'Mijn favorieten';
+$lang['display your favorites photos'] = 'Toon mijn favoriete foto\'s';
+$lang['Favorites'] = 'Favorieten';
+$lang['First'] = 'Eerste';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'De galerie is in onderhoud. Probeer het later nog eens.';
+$lang['Page generated in'] = 'Pagina gegenereerd in';
+$lang['guest'] = 'gast';
+$lang['Hello'] = 'Hallo';
+$lang['available for administrators only'] = 'Alleen voor beheerders';
+$lang['display this album'] = 'Geef dit album weer';
+$lang['display last user comments'] = 'Bekijk de laatste gebruikerscommentaren';
+$lang['customize the appareance of the gallery'] = 'Weergave van de galerie aanpassen';
+$lang['search'] = 'zoeken';
+$lang['Home'] = 'Startpagina';
+$lang['Identification'] = 'Administratie';
+$lang['in this album'] = 'in dit album';
+$lang['in %d sub-album'] = 'in %d sub-album';
+$lang['in %d sub-albums'] = 'in %d sub-albums';
+$lang['included'] = 'inclusief';
+$lang['Invalid password!'] = 'Verkeerd wachtwoord!';
+$lang['Language'] = 'Taal';
+$lang['last %d days'] = 'laaste %d dagen';
+$lang['Last'] = 'Laatste';
+$lang['Logout'] = 'Afmelden';
+$lang['obligatory'] = 'verplicht';
+$lang['display a calendar by creation date'] = 'Toon een kalender met foto\'s gesorteerd op aanmaakdatum';
+$lang['display all photos in all sub-albums'] = 'Toon alle foto\'s in alle sub-albums';
+$lang['return to normal view mode'] = 'Terug naar de standaardweergave';
+$lang['display a calendar by posted date'] = 'Toon een kalender met foto\'s gesorteerd op plaatsingsdatum';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'December';
+$lang['month'][1] = 'Januari';
+$lang['month'][2] = 'Februari';
+$lang['month'][3] = 'Maart';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Mei';
+$lang['month'][6] = 'Juni';
+$lang['month'][7] = 'Juli';
+$lang['month'][8] = 'Augustus';
+$lang['month'][9] = 'September';
+$lang['Most visited'] = 'Meest bekeken';
+$lang['display most visited photos'] = 'Toon de meest bekeken foto\'s';
+$lang['The number of photos per page must be a not null scalar'] = 'Het aantal foto\'s per pagina moet een, niet-nul, geheel getal zijn';
+$lang['Number of photos per page'] = 'Aantal foto\'s per pagina';
+$lang['Unknown identifier'] = 'Onbekend herkenningsteken';
+$lang['New password'] = 'Nieuw wachtwoord';
+$lang['Rate this photo'] = 'Waardeer deze foto';
+$lang['Next'] = 'Volgende';
+$lang['no rate'] = 'geen waardering';
+$lang['Photos posted within the last %d day.'] = 'Toon alleen foto\'s geplaatst op de laatste %s dag.';
+$lang['Photos posted within the last %d days.'] = 'Toon alleen foto\'s de laatste %s dagen geplaatst.';
+$lang['password updated'] = 'wachtwoord bijgewerkt';
+$lang['Recent period must be a positive integer value'] = 'Recente periode moet een positieve waarde zijn';
+$lang['photo'] = 'foto';
+$lang['Click on the photo to see it in high definition'] = 'Klik op de foto om deze te bekijken in "high Definition" (Origineel) formaat';
+$lang['Show file metadata'] = 'Toon bestands metadata';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'Voorkeuren';
+$lang['Previous'] = 'Vorige';
+$lang['Random photos'] = 'Willekeurige foto\'s';
+$lang['display a set of random photos'] = 'Toon een aantal willekeurige foto\'s';
+$lang['Recent albums'] = 'Recente albums';
+$lang['display recently updated albums'] = 'Toon de onlangs bijgewerkte albums';
+$lang['Recent period'] = 'Recente periode (aantal dagen)';
+$lang['Recent photos'] = 'Recente foto\'s';
+$lang['display most recent photos'] = 'Toon de meest recente foto\'s';
+$lang['Redirection...'] = 'doorsturen...';
+$lang['Please, enter a login'] = 'Vul uw gebruikersnaam in aub.';
+$lang['login mustn\'t end with a space character'] = 'Gebruikersnaam mag niet eindigen met een spatie';
+$lang['login mustn\'t start with a space character'] = 'Gebruikersnaam mag niet beginnen met een spatie';
+$lang['this login is already used'] = 'Deze gebruikersnaam is al in gebruik';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'emailadres moet het formaat xxx@yyy.eee hebben (bijvoorbeeld : jack@altern.org)';
+$lang['Auto login'] = 'Automtisch aanmelden';
+$lang['remove this tag from the list'] = 'Verwijder dit label uit de lijst';
+$lang['representative'] = 'album-klikplaatje';
+$lang['Search for Author'] = 'Zoeken naar auteur';
+$lang['Search in albums'] = 'Zoeken in albums';
+$lang['Search by date'] = 'Zoeken op datum';
+$lang['Date'] = 'Begindatum';
+$lang['End-Date'] = 'Einddatum';
+$lang['Kind of date'] = 'Welke datum ?';
+$lang['Search for words'] = 'Zoeken naar woorden met';
+$lang['Search for all terms'] = 'Moet al deze woorden bevatten';
+$lang['Search for any term'] = 'Moet één van deze woorden bevatten';
+$lang['Empty query. No criteria has been entered.'] = 'Lege zoekopdracht. Er is niets ingevuld.';
+$lang['Search results'] = 'Zoekresultaten';
+$lang['Search in sub-albums'] = 'Ook zoeken in sub-albums';
+$lang['searched words : %s'] = 'zoekwoorden : %s';
+$lang['Contact'] = 'Contact';
+$lang['set as album representative'] = 'Stel in als album-klikplaatje';
+$lang['Show number of comments'] = 'Toon aantal commentaren';
+$lang['Show number of hits'] = 'Toon aantal bezoekers';
+$lang['slideshow'] = 'Diavoorstelling';
+$lang['stop the slideshow'] = 'Stop de diavoorstelling';
+$lang['Specials'] = 'Speciaal';
+$lang['SQL queries in'] = 'SQL queries in';
+$lang['display only recently posted photos'] = 'Toon alleen de recent geplaatste foto\'s';
+$lang['return to the display of all photos'] = 'Toon alle foto\'s';
+$lang['the beginning'] = 'het begin';
+$lang['Thumbnails'] = 'Klikplaatjes';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'Commentaar op uw site';
+$lang['today'] = 'vandaag';
+$lang['Update your rating'] = 'Werk uw waardering bij';
+$lang['the username must be given'] = 'de gebruikersnaam moet ingevuld zijn';
+$lang['useful when password forgotten'] = 'handig indien u uw wachtwoord bent vergeten';
+$lang['Quick search'] = 'Snel zoeken';
+$lang['Connected user: %s'] = 'Aangemeld als gebruiker: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Browser: %s';
+$lang['Author: %s'] = 'Naam: %s';
+$lang['Comment: %s'] = 'Commentaar: %s';
+$lang['Comment by %s'] = 'Commentaar van %s';
+$lang['User: %s'] = 'Gebruiker: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Beheerder: %s';
+$lang['Registration of %s'] = 'Registratie van %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Foutieve status voor gebruiker "guest", gebruik standaard status. Waarschuw de webbeheerder.';
+$lang['this email address is already in use'] = 'Een andere gebruiker maakt al gebruik van dit emailadres';
+$lang['Album results for'] = 'Album resultaten voor';
+$lang['Tag results for'] = 'Label-resultaten voor';
+$lang['from %s to %s'] = 'van %s tot %s';
+$lang['Play of slideshow'] = 'Diavoorstelling afspelen';
+$lang['Pause of slideshow'] = 'Diavoorstelling pauzeren';
+$lang['Repeat the slideshow'] = 'Diavoorstelling herhalen';
+$lang['Not repeat the slideshow'] = 'Diavoorstelling niet herhalen';
+$lang['Reduce diaporama speed'] = 'Diavoorstelling langzamer';
+$lang['Accelerate diaporama speed'] = 'Diavoorstelling sneller';
+$lang['Submit'] = 'Bevestig';
+$lang['Yes'] = 'Ja';
+$lang['No'] = 'Nee';
+$lang['%d photo'] = '%d foto';
+$lang['%d photos'] = '%d foto\'s';
+$lang['%d photo is also linked to current tags'] = '%d foto is ook gelinkt aan het huidige label';
+$lang['%d photos are also linked to current tags'] = '%d foto\'s zijn ook gelinkt aan het huidige label';
+$lang['display photos linked to this tag'] = 'Toon de aan dit label gelinkte foto\'s';
+$lang['photos posted during the last %d days'] = 'Foto\'s de afgelopen %d dagen ontvangen';
+$lang['Piwigo Help'] = 'Piwigo Help';
+$lang['Are you sure?'] = 'Weet u het zeker?';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'Gegroepeerd per letter';
+$lang['letters'] = 'letters';
+$lang['show tag cloud'] = 'Geef label-wolk weer';
+$lang['cloud'] = 'wolk';
+$lang['Reset to default values'] = 'Reset naar standaardwaarden';
+$lang['delete all photos from your favorites'] = 'verwijder alle foto\'s van uw favorieten';
+$lang['Sent by'] = 'Verstuurd door';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies worden geblokkeerd of worden niet ondersteund door uw browser. Indien u zich wilt aanmelden dient u er voor te zorgen dat het gebruik van cookies mogelijk is.';
+$lang['Edit a comment'] = 'Wijzig een commentaar';
+$lang['(!) This comment requires validation'] = '(!) Dit commentaar moet nog gevalideerd worden';
+$lang['Welcome'] = 'Welkom';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Welkom bij uw Piwigo foto-galerie!';
+$lang['... or browse your empty gallery'] = '... of blader door uw lege galerie';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... of deactiveer deze boodschap aub, Ik vind mijn weg zelf wel';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hallo %s, uw Piwigo foto-galerie is leeg!';
+$lang['I want to add photos'] = 'Ik wil foto\'s toevoegen';
+$lang['Manage this user comment: %s'] = 'Valideer het volgende gebruikers-commentaar: %s';
+$lang['This author modified following comment:'] = 'Deze bewerker wijzigde het volgende commentaar:';
+$lang['This author removed the comment with id %d'] = 'Deze bewerker verwijderde het commentaar met id %d';
+$lang['html tags are not allowed in login'] = 'html tags zijn niet toegestaan in login';
+$lang['%d rates'] = '%d stemmen';
+$lang['Rating score'] = 'Waarderings score';
+$lang['Invalid username or email'] = 'Gebruikersnaam of emailadres is ongeldig';
+$lang['Password reset is not allowed for this user'] = 'Deze gebruiker heeft geen toestemming om het wachtwoord te vernieuwen';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Gebruiker "%s" heeft geen emailadres, daarom kan het wachtwoord niet vernieuwd worden';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Iemand heeft verzocht om het wachtwoord te vernieuwen voor het volgende account:';
+$lang['Username "%s" on gallery %s'] = 'Gebruikersnaam "%s" voor galerie %s';
+$lang['To reset your password, visit the following address:'] = 'Om uw wachtwoord te vernieuwen kunt u het volgende adres bezoeken:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Als dit een vergissing was, kunt u deze email negeren. Er zal dan niets gewijzigd worden.';
+$lang['Password Reset'] = 'Vernieuw wachtwoord';
+$lang['Check your email for the confirmation link'] = 'Kijk in uw email box voor de bevestigings-link';
+$lang['Invalid key'] = 'Onjuiste sleutel';
+$lang['The passwords do not match'] = 'De wachtwoorden zijn niet gelijk';
+$lang['Your password has been reset'] = 'Uw wachtwoord is vernieuwd';
+$lang['Return to home page'] = 'Keer terug naar de home page';
+$lang['Please enter your username or email address.'] = 'Geef uw gebruikersnaam en emailadres in.';
+$lang['You will receive a link to create a new password via email.'] = 'U ontvangt via email een link om uw wachtwoord te vernieuwen.';
+$lang['Username or email'] = 'Gebruikersnaam of email';
+$lang['Change my password'] = 'Vernieuw mijn wachtwoord';
+$lang['Enter your new password below.'] = 'Geef hieronder uw nieuwe wachtwoord in.';
+$lang['EXIF Metadata'] = 'EXIF Metagegevens';
+$lang['IPTC Metadata'] = 'IPTC Metagegevens';
+$lang['Edit'] = 'Wijzig';
+$lang['large'] = 'groot';
+$lang['medium'] = 'middel';
+$lang['Original'] = 'origineel';
+$lang['small'] = 'klein';
+$lang['square'] = 'vierkant';
+$lang['thumb'] = 'klikplaatje';
+$lang['xlarge'] = 'extra-groot';
+$lang['xxlarge'] = 'extra-extra-groot';
+$lang['Hello %s,'] = 'Hallo %s,';
+$lang['Here are your connection settings'] = 'Dit zijn uw verbindings-instellingen';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Indien u denkt dat er iets niet klopt nu u deze email ontvangt, vragen wij u contact met ons op te nemen via %s ';
+$lang['Password: %s'] = 'Wachtwoord %s';
+$lang['Send my connection settings by email'] = 'Verstuur mijn verbindings-instellingen per email';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'U bent succesvol geregistreerd. U ontvangt op korte termijn een email met uw verbindings-instellingen. Welkom!';
+$lang['Thank you for registering at %s!'] = 'Bedankt voor uw registratie bij %s';
+$lang['Username modification'] = 'Gebruikersnaam wijziging';
+$lang['Username: %s'] = 'Gebruikersnaam %s';
+$lang['Your username has been successfully changed to : %s'] = 'Uw gebruikersnaam is succesvol gewijzigd in: %s';
+$lang['Show oldest comments first'] = 'Toon oudste commentaren eerst';
+$lang['Show latest comments first'] = 'Toon nieuwste commentaren eerst';
+$lang['Photo sizes'] = 'Fotoformaat';
+$lang['View in'] = 'Bekijk in';
+$lang['Mobile'] = 'Mobiel';
+$lang['Desktop'] = 'Bureaublad';
+$lang['2small'] = 'extra-extra-klein';
+$lang['Date created, new &rarr; old'] = 'Aanmaakdatum, nieuw &rarr; oud';
+$lang['Date created, old &rarr; new'] = 'Aanmaakdatum, oud &rarr; nieuw';
+$lang['Date posted, new &rarr; old'] = 'Datum geplaatst, nieuw &rarr; oud';
+$lang['Date posted, old &rarr; new'] = 'Datum geplaatst, oud &rarr; nieuw';
+$lang['File name, A &rarr; Z'] = 'Bestandsnaam, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Bestandsnaam, Z &rarr; A';
+$lang['Manual sort order'] = 'Handmatige sorteervolgorde';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numerieke aanduiding, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numerieke aanduiding, 0 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Foto-titel, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Foto-titel, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Waardering, hoog &rarr; laag';
+$lang['Rating score, low &rarr; high'] = 'Waardering, laag &rarr; hoog';
+$lang['Visits, high &rarr; low'] = 'Aantal keren bezocht, hoog &rarr; laag';
+$lang['Visits, low &rarr; high'] = 'Aantal keren bezocht, laag &rarr; hoog';
+$lang['xsmall'] = 'extra-klein';
+$lang['%d rate'] = '%d tarief';
+$lang['Bad request'] = 'Foutief verzoek';
+$lang['Forbidden'] = 'Niet toegestaan';
+$lang['Page not found'] = 'Pagina niet gevonden';
+$lang['Permalink for album not found'] = 'Permalink van dit album niet gevonden';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo heeft een onherstelbare fout ondervonden';
+$lang['Requested album does not exist'] = 'Het opgevraagde album bestaat niet';
+$lang['Requested tag does not exist'] = 'Het opgevraagde label bestaat niet';
+$lang['Email address is mandatory'] = 'Emailadres is verplicht';
+$lang['Username is mandatory'] = 'Gebruikersnaam is verplicht';
+$lang['mandatory'] = 'verplicht';
+$lang['Website'] = 'Website';
+$lang['Your website URL is invalid'] = 'De URL van deze website is ongeldig';
+$lang['day']['0'] = 'zondag';
+$lang['day']['1'] = 'maandag';
+$lang['day']['2'] = 'dinsdag';
+$lang['day']['3'] = 'woensdag';
+$lang['day']['4'] = 'donderdag';
+$lang['day']['5'] = 'vrijdag';
+$lang['day']['6'] = 'zaterdag';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Eerste bladzijde';
+$lang['Go back to the album'] = 'Ga terug naar het album';
+$lang['Last Page'] = 'Laatste bladzijde';
+$lang['Password is missing. Please enter the password.'] = 'Wachtwoord ontbreekt. Geef uw wachtwoord aub.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Wachtwoord-bevestiging ontbreekt. Bevestig aub het gekozen wachtwoord.';
+$lang['%d photos per page'] = '%d foto\'s per pagina';
+$lang['Theme'] = 'Thema';
+?>
Index: /tags/2.6.0RC1/language/nl_NL/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,128 @@
+<h2>Een categorie bewerken</h2>
+
+<h3>Informatie</h3>
+
+<ul>
+
+  <li><strong>naam</strong>: hernoem de categorie (een virtuele hernoeming in het geval van een physieke categorie).</li>
+
+  <li><strong>omschrijving</strong>: geef informatie over de inhoud die getoond word in de categorie,
+  deze tekst word onder de thumbnail.</li>
+
+</ul>
+
+<h3>Verplaatsen</h3>
+
+<p>Als het een virtuele categorie is, dan kun je hem verplaatssen. Het verplaatsen van een categorie houd in dat je het ouderschap veranderd.</p>
+
+<h3>Opties</h3>
+
+<ul>
+
+  <li><strong>Toegangs type</strong>: Rechten beheren. Als je een 
+  categorie private maakt, worden alle daaronderliggende (kinder)categorieën worden dan ook private.<br>
+  Als je een categorie publiek maakt, worden alle ouder categorieën zullen dan ook publiek worden.</li>
+
+  <li><strong>Sluiten</strong>: De categorie en zijn sub-categorieë zijn
+  tijdelijk uitgeschakeld voor onderhoud.</li>
+
+  <li><strong>Commentaar</strong>: Machtig gebruikers om commentaar te geven op de elementen in deze categorie.</li>
+
+  <li><strong>Machtiging tot upload</strong>: Machtig gebruikers om bestanden te-uploaden. Deze optie is alleen beschikbaar als de categorie physiek is (niet
+  virtueel).</li>
+
+</ul>
+
+<p>Je kan de opties ook beheren via "Eigenschappen" beheer schermen (scherm <span class="pwgScreen">Upload</span>, <span
+class="pwgScreen">Commentaar</span>, <span class="pwgScreen">Sluiten</span>,
+<span class="pwgScreen">Publiek/Private</span>, <span
+class="pwgScreen">Vertegewoordiging</span> beschikbaar via <span
+class="pwgScreen">Administratie, Categorieën, Eigenschappen</span>).</p>
+
+<h3>Sorteer volgorde</h3>
+
+<p>Kies als de standaard sortering word gebruikt.</p>
+
+<p>Indicatie dat de sortering wort toegepast op de sub-categorieën.</p>
+
+<p>Gebruik specifieke sorteren middels de kolommen in deze categorie.</p>
+<ul>
+<li><strong>Aanmaak datum</strong>: Aanmaak datum foto</li>
+<li><strong>Plaatings datum</strong>: Synchronizatie datum</li>
+<li><strong>Gemiddelde waardering(*)</strong>: Gemiddelde waardering kan gewijzigt worden door een bezoeker</li>
+<li><strong>Most visited (*)</strong>: The current visit change the most visited order</li>
+<li><strong>Bestandsnaam</strong>: Gekozen naam in het informatie veld</li>
+<li><strong>Id</strong>: Interne Id (recente categorieën hoger id dan vorige id's.</li>
+
+</ul>
+<p><strong>(*)</strong>Neem zorg en test het voor uw zelf aangezien het onvoorspelbare resultaten kan geven.</p>
+
+
+<h3>Vertegenwoordiging</h3>
+
+<p>De vertegenwoordiging van de categorie is een indexplaatje "thumbnail" welke getoond word
+om de categorie te tonen op de hoofdpagina (<span class="pwgScreen">category.php</span>) wanneer een
+categorie alleen sub-categorieieën bevat (alleen als root categorie).</p>
+
+<p>Er zijn 4 manieren om een indexplaatje te tonen als weergavevan een categoie :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Picture page</span>: in het aktiemenu, 
+  met een van de knoppen is het mogelijk om een plaatje te kiezen als
+  vertegenwoordiging van een categorie. Deze knop is alleen beschikbaar voor administrators.</li>
+
+  <li><span class="pwgScreen">Verander informatie over een plaatje</span> via de administratie.
+  Je kunt bij dit scherm komen via <span class="pwgScreen">picture.php</span> of 
+  <span class="pwgScreen">Batch management</span> in <em>unit mode</em>. Kijk voor meer info in de documentatie voor meer details.</li>
+
+  <li><span class="pwgScreen">Administratie, Categorieën, Eigenschappen, Thumbnails</span>. Kijk voor meer info in de documentatie voor meer details.</li>
+
+  <li><span class="pwgScreen">Bewerk een categorie</span> (dit scherm).</li>
+
+</ul>
+
+<p>De indexafbeelding is afhankelijk van de configuratie parameter <code>allow_random_representative</code> (zie <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Standaard is <code>allow_random_representative</code> ingesteld op false (onwaar)
+elke categorie die tenminste 1 element bevat is vertegenwoordigd door een vastgestelde afbeelding. 
+Eenmaal ingesteld (Bij het maken van de categorie), kan deze alleen veranderd worden door administrator 
+ die daar dan om verzoekt it. Als de indexafbeelding niet meer bestaat kun je er <strong>willekeurig</strong> een nieuwe aan toewijzen.</p>
+
+<p>Als de configuratie parameter <code>allow_random_representative</code> is
+ingesteld op true (waar), dan is eer geen vaste indexafbeelding. Gebruik gewoon <strong>Verwijder indexafbeelding</strong> knop.</p>
+
+<p>Als de categorie geen elementen bevat (maar alleen sub-categorieën) kan het 
+vertegenwoordigt worden dankzij het scherm <span class="pwgScreen">verander informatie over een afbeelding</span>. De enigste optie 
+op het huidige scherm is <strong>Verwijder vertegenwoordigingsafbeelding</strong> knop, na deze optie te hebben gebruikt is er geen 
+afbeeldingsafbeeldings optie meer om te veranderen.</p>
+
+<h3>Link alle categorie elementen aan een nieuwe categorie</h3>
+
+<ul>
+
+<li><strong>Virtuele categorie naam</strong>: Nieuwe categorie naam aanmaaken, 
+alle afbeeldingen van de huidige categorie zullen gekoppeld worden aan de nieuwecategorie.</li>
+
+<li><strong>Ouder categorie</strong>: Waar de nieuwe moet komen, laat dit leeg om deze in de root te maken.</li>
+
+</ul>
+
+<h3>Link alle categorie elementen aan bestaande categorieën</h3>
+
+<ul>
+
+<li><strong>Categorieën</strong>: Kies de doelcategorie.</li>
+
+</ul>
+
+<h3>Stuur een informatie email naar de groepsleden</h3>
+
+<ul>
+
+<li><strong>Groep</strong>: Geadresseerden groep</li>
+
+<li><strong>Email inhoud</strong>: Vrije tekst om mee te sturen.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/nl_NL/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/cat_move.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Verplaatsen virtuele categorieën</h2>
+
+<p>Allen virtuele categorieën kunnen een nieuwe ouder-categorie hebben.</p>
+
+<h3>Virtuele categorieën verplaatsen</h3>
+
+<p>Selecteer een virtuele categorie die je wilt verplaatsen.
+Als de lijst leeg is, wil dat zeggen dat je er geen gemaakt hebt.</p>
+
+<h3>Nieuwe ouder categorie</h3>
+
+<p>Selecteer de nieuwe ouder (virtueel of physiek). 
+Als je het niet doet zullen de geselecteerde categorieën verplaatst worden 
+naar het begin van de map (root). Categorieën kunnen niet verplaatst worden
+naar zichzelf of een kind van de categorie.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/cat_options.html	(revision 25596)
@@ -0,0 +1,30 @@
+<h2>Categorie opties</h2>
+
+<p>Dit scherm geeft administrators de mogelijkheid om categorie opties te beheren voor meerde categorieën in één keer.</p>
+
+<dl>
+
+  <dt>Upload</dt>
+  <dd>Maak categorieën benaderbaar voor bezoekers om er bestanden in te plaatsen. Alleen niet virtuele en externe categorieën worden getoond.</dd>
+
+  <dt>Commentaar</dt>
+  <dd>Geef gebruikers rechten om commentaar te plaatsen in de geselecteerde categorieën.
+	Selecteer de categorie waarop commentaar gegeven kan worden.
+	Op een afbeelding kan alleen commentaar gegeven worden als deze behoord tot een categorie waar dit is toegestaan.</dd>
+
+  <dt>sluiten</dt>
+  <dd>Geselecteerde categorieën zijn op dit moment gesloten voor onderhoud. 
+	Als je een categorie sluit, alle daaronder liggende categorieën zijn dan ook gesloten. Als je een categorie 
+	weer opent, alle ouder categorieën worden dan ook weer geopend.</dd>
+
+  <dt>Publiek / private</dt>
+  <dd>Beheer rechten voor de geselecteerde categorieën. Geselecteerde categorieën zijn private : je moet gebruikers/groepen rechten geven op deze categorieën.
+	 Als je een categorie private maakt, alle daaronderliggende categorieën worden dan ook private. 
+	Als je eeen categorie publiek maakt, alle ouder categorieën worden dan ook publiek</dd>
+
+  <dt>Vertegenwoordiging</dt>
+  <dd>Deze opties kunnen alleen beheerd worden als de configuratie parameter <code>allow_random_representative</code>
+	 is ingesteld op <em>true</em>.(zie <span class="filename">include/config_defaults.inc.php</span>)
+	Elke categorie kan vertegenwoordigd worden door een willekeurige of afzonderlijke vertegenwoordiging (door een unieke afbeelding).</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nl_NL/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Beheer rechten voor een categorie</h2>
+
+<p>Dit scherm is allen beschikbaar voor private categorën. Hier kun je gebruikers en groepn toegang geven voor deze categorie.</p>
+
+<h3>Groepen</h3>
+
+<p>Je kan groepen toegang geven of toegang weigeren op de huidige categorie. Door het aanpassen van de groepsrechten kun je dat
+<br>bereiken. Je zal de lijst met gebruikers die toegang hebben tot deze categorie moeten wijzigen
+op basis van groepsrechten.</p>
+
+<h3>Gebruikers</h3>
+
+<p>Je kan een individuele gebruiker toegang geven of weigeren.
+Gebruikers die behoren tot een groep kunnen ook toegang gegeven of geweigerd worden.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/configuration.html	(revision 25596)
@@ -0,0 +1,106 @@
+<h2>Configuratie</h2>
+
+<p>Dit scherm geeft de administrator de mogenlijkheid tot basisconfiguratie. Dit scherm toont namelijk slechts eenvoudige 
+configuratieparameters die zouden moeten zijn genoeg voor de overgrote meerderheid van beheerders. Als je de andere mogelijkheden wilt zien
+(geavanceerde) over de configuratie parameters, lees dan <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Dit scherm wordt verdeeld in verscheidene secties, hergroeperend configuratieparameters per thema.</p>
+
+
+<h3>Begin</h3>
+<ul>
+  <li><strong>Gallerie titel</strong>: word gebruikt in RSS meldingen en meldingen per email.</li>
+
+  <li><strong>Pagina banner</strong>: word getoond op elke publieke pagina.</li>
+
+  <li><strong>Gallerie URL</strong>: word gebruikt voor de RSS meldingen.</li>
+
+  <li><strong>Sluit gallery</strong>: Sluit de hele gallerie voor onderhoud. Alleen administrators kunnen de gallerie nog bereiken.</li>
+
+  <li><strong>Waardering</strong>: Waarderings optie is ingeschakeld.</li>
+
+  <li><strong>Waardering door gasten</strong>: Niet geregisteerde gebruikers kunnen ook hun waardering geven aan afbeeldingen.</li>
+
+  <li><strong>Sta registratie toe</strong>: Registratie is gratis voor iedereen.</li>
+
+  <li><strong>Email adres is verplicht voor alle gebruikers</strong>: Email adres word gecontroleerd bij registratie of profiel update uitgezonderd als de actie word uitgevoerd op de administratie scherm.</li>
+
+  <li><strong>Email admins wanneer een nieuwe gebruiker zich registreerd</strong>: Administrators ontvangen een mailtje bij elke registratie.</li>
+
+</ul>
+
+<h3>Geschiedenis</h3>
+
+  <p>Bezoek op de pagina's <span class="pwgScreen">category.php</span> en <span class="pwgScreen">picture.php</span> worden opgeslagen in de <code>history</code> tabel.</p>
+  
+  <p>Bezoek word getoond in <span class="pwgScreen">Administratie, Speciaal, Geschiedenis</span>.</p>
+
+<ul>
+  <li><strong>Bewaar pagina bezoek door gasten</strong>: pagina bezoek van gasten wordt opgeslagen.</li>
+
+  <li><strong>Bewaar pagina bezoek door gebruikers</strong>: pagina bezoek van geregistreerde gebruikers wordt opgeslagen.</li>
+
+  <li><strong>Bewaar pagina bezoek door administrators</strong>: pagina bezoek van administrators wordt opgeslagen.</li>
+
+</ul>
+
+<h3>Commentaar</h3>
+<ul>
+
+  <li><strong>Commentaar door iedereen</strong>: Ook gasten kunnen commentaar plaatsen.</li>
+
+  <li><strong>Aantal commentaren per per pagina</strong>.</li>
+
+  <li><strong>Validatie</strong>: een administrator valideerd de door gebruikers geplaatste commentaren voordat deze zichtbaar wordt op de website.
+   Valideren van gebruikers commentaar gebeurd via het scherm <span class="pwgScreen">Administratie, Afbeeldingen, Commentaar</span>.</li>
+
+  <li><strong>Email admins when a valid comment is entered</strong>:
+Sends an email to the administrators when a user enters a comment and this comment is validated.</li>
+
+  <li><strong>Email admins wanneer een commentaar validatie nodig heeft</strong>:
+Stuurt de administrator een bericht dat een gebruiker een p[merking heeft geplaatst die nog gevalideerd moet worden door de administrator.
+Gebruikers commentaar valideren gaat via het scherm <span class="pwgScreen">Administratie, Afbeeldingen, Commentaren</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>Upload</h3>
+<ul>
+<!--TODO -->  <li><strong>Show upload link every time</strong>: If exists uploadeable categories, add link will be show for each categoy.</li>
+<!--TODO -->  <li><strong>User access level to upload</strong>: Allows to restrict upload by users</li>
+  <li><strong>Email admins wanneer een afbeelding is ge-upload</strong>: Administrators ontvangen een mailtje voor elke ge-uploade bestand door gebruikers.</li>
+</ul>
+
+<h3>Standaard weergave</h3>
+
+<p>Hier kan je de weergave aan passen die als standaard worden ingesteld, die je gast ziet als hij zich niet heeft aangemeld. Eenmaal aangemeld worden deze 
+opties overschreven door de gebruikers eigen opties (aanpasbaar in <span class="pwgScreen">profiel</span>).</p>
+
+<p>Het is mogelijk om de weergave opties voor alle gebruikers aan te passen, via scherm <span class="pwgScreen">Administratie, Identificatie, Gebruikers</span>, waar de opties voor de geslecteerde lijst van gebruikers word getoond.</p>
+
+<ul>
+
+  <li><strong>Talen</strong>: betreft slechts Piwigo labels. De namen van de categorie, de bestandsnamen en alle beschrijvingen vallen hier buiten.</li>
+
+  <li><strong>Aantal afbeeldingen per rij</strong></li>
+
+  <li><strong>Aantal afbeeldingen per pagina</strong></li>
+
+  <li><strong>aangezichts thema</strong></li>
+
+  <li><strong>Recente periode</strong>: per dag. Periode waarin de foto aangeduid moet worden als nieuw. Moet meer dan 1 dag zijn.</li>
+
+  <li><strong>Toon alle categorieën</strong>: Toon standaard alle categorieën in het menu? <em>Warning</em>: deze optie is een server belastende optie 
+en toont mogelijk een erg groot menu als je categorie erg veel sub categorieën bevat.</li>
+
+  <li><strong>Aantal commentaren tonen</strong>: Het aantal commentaren zichtbaar bij een afbeelding op de thumbnails pagina. Zware belasting.</li>
+
+  <li><strong>Toon aantal hits</strong>: Toon het aantal keren dat een afbeelding bekeken is, onder de afbeelding op de thumbnails pagina. 
+  Allen mogelijk als de geavanceerde configuratie parameter is: <br />  $conf['show_nb_hits'] = true; <br />
+  Opmerking: standaars is dit false.</li>
+
+  <li><strong>Maximale breedte van de afbeeldingen</strong>: maximale toonbare breedte. Als de afbeeldingen groter zijn dan deze instelling, worden ze verkleind op het scherm.  Als je deze optie gebruikt, denk er dan over na om de afbeelding aan te passen voor je ze plaatst op je gallery.</li>
+
+  <li><strong>Maximale hoogte van de afbeeldingen</strong>: Zelfde als hierboven.</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/nl_NL/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,100 @@
+<h2>Extend for templates configuration</h2>
+
+<h3>Goal</h3>
+<p>Define replacement conditions for each template from template-extension
+(template called "replacer").</p>
+
+<p>"original template" from ./template/yoga (or any other than yoga)
+ will be replaced by a "replacer" if the replacer is linked to this "original template"
+ (and optionally, when the requested URL contains an "optional URL keyword").</p>
+
+<p>"Optional URL keywords" are those you can find after the module name in URLs.</p>
+
+<p>Therefore "Optional URL keywords" can be an active "permalink" 
+(see permalinks in our documentation for further explanation).</p>
+
+<p>Read: `<a href="#warnings">Warning</a>` usage conditions.</p>
+
+<h3>What are template extensions?</h3>
+
+<p>This configuration tool is powerfull for beginners and advanced users.
+By FTP, in the template-extension folder, the Webmaster can duplicate a lot of
+ the distributed .tpl files ("original template") with a different name 
+ ("replacer").
+ 
+ "Original templates", current original supported templates are:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Where can I find "original templates"?</h3>
+
+<p>Distributed original templates are in template/yoga/ 
+(don't edit them in place for upgrade perspectives). So with "original templates", 
+any webmaster can create his "replacers (customized templates)".</p>
+
+<h3>Where should I save "replacers"?</h3>
+
+<p><strong>Replacers (customized templates)</strong> must be placed in the 
+template-extension folder (or its subfolders).
+Replacers can have any filename with the .tpl extension. For example: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>How can I activate my "replacers"?</h3>
+<p>An <strong>original template</strong> should be assigned to each
+ <strong>replacer (customized templates)</strong> to activate the related replacements.
+ This is the goal of "Extend for templates" in the Configuration Administration menu.</p>
+
+<p>If you select an <strong>optional URL keyword</strong> then replacements 
+will be operate only on pages with this keyword. For example: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+  
+<p>Advanced users will use permalinks as <strong>optional URL keyword</strong>. </p>
+
+<p>If you select a <strong>Bound template</strong> then replacements will be operate only on this template.</p>
+
+<h3>How can I deactivate my "replacers"?</h3>
+<ul>
+<li>Unselect related "Original templates".</li>
+<li>By FTP delete of "replacers".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+
+  <li><strong>Original template</strong> must be the "original" template 
+  otherwise you could have unpredictable results!</li>
+
+  <li>On several <strong>replacers (customized templates)</strong> with the
+  same<strong>Original template</strong> and the same <strong>optional URL 
+  keyword</strong> only the last replacer is active.</li>
+
+  <li>Unselected <strong>optional URL keyword</strong> will active the replacer
+  on any template usage. As previous point, order can override previous
+  selected replacers.</li>
+
+  <li>Subfolders:
+Subfolders are ignored but they are usefull to change current order.<br />
+distributed-samples: for test purpose are distributed! 
+<strong>Don't edit them</strong> create your own ones.
+</li>
+
+  <li>On delete of a replacer the <strong>Original template</strong> is 
+  immediately reactivated.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/nl_NL/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Groepen lijst</h2>
+
+<p>Hier kan je de gedefinieerde groepen beheren.</p>
+
+<h3>Voeg een groep toe</h3>
+
+<p>Een administrator kan groepen toevoegen.</p>
+
+<h3>Groeps lijst</h3>
+
+<p>De lijst staat voor elk element toe:</p>
+
+
+<ul>
+  <li>naar de ledenlijst gaan</li>
+  <li>naar rechten gaan</li>
+  <li>een groep verwijderen (vereist een bevestiging)</li>
+  <li>stel de staus in als "standaard" (vereist een bevestiging)</li>
+</ul>
+
+<h3>Standaard groepen</h3>
+<p>Standaard groepen zijn groepen waar nieuwe gebruikers automatisch lid van worden.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,23 @@
+<p>Verschillende manieren om fotos aan de gallerie toe te voegen:</p>
+
+<ul>
+  <li><strong>Direct upload</strong> In je web browser is de makkelijkste mannier.
+  Het hangt van je webbrowser en web server af.
+  Om grote hoeveelheden foto's te uploaden, of als je een probleem hebt  zijn er andere manieren!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Ga naar Direct Upload </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> IS een desktop applicatie, die op je computer geïnstalleerd moet worden. Sleep &amp; fotos in het ploader venster , klik op <em>"Upload naar Piwigo"</em> and let pLoader do the job. You can find other desktop applications such as <strong>WinToPiwigo</strong> or the <strong>Digikam</strong> export plugin to Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Ga naar pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP overdracht</strong> is de meest geschikte nainier om een grote hoeveelheid fotos toe te voegen met zo min mogelijk handelingen. Volg de aanwijzingen om je fotos voor te bereiden. De FTP manier is laat je precies de indeling van je fotos op de server bepalen.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Ga naar FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/nl_NL/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<!--TODO--><p>Groups is a convenient way to set permissions for a list of users.</p>
+
+<p>Je kan groepen maken in <span class="pwgScreen">Administratie &raquo; Gebruikers &raquo; Groepen</span> en voeg gebruikers toe aan de groep via <span class="pwgScreen">Administratie, Identicatie, Gebruikers</span>.</p>
+
+<p>Een gebruiker kan behoren tot verschillende groepen. De vergunning is sterker dan verbod : als gebruiker "jack" behoord tot de groep "familie" en "Vrienden", en alleen de groep "familie" kan de categorie "Christmas 2003" zien, "jack" zal de mogelijkheid hebben om de categorie "Christmas 2003" te zien.</p>
+
Index: /tags/2.6.0RC1/language/nl_NL/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/help_misc.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p> Als je de Gallery geinstalleerd hebt, kan je het voor je bezoeker configureren.
+<ul>
+<li>Als je je gallery-installatie hebt afgerond, verander dan het uiterlijk van de standaard weergave
+in <span class="pwgScreen">Administratie paneel &raquo; Configuratie &raquo; Opties &raquo; Bezoeker/Gast-Instellingen</span></li>
+<li>Het standaard thema in <span class="pwgScreen">Administratie &raquo; Configuratie &raquo; Thema\'s</span></li>
+<li>De standaard taal in <span class="pwgScreen">Administratie &raquo; Configuratie &raquo; Talen</span></li>
+</ul>
+Elke nieuwe geregistreerde gebruiker zal deze standaard vertoningseigenschappen hebben.</p>
+
+<p>Als je nog vragen hebt, de Piwigo gemeenschap heet je welkom op
+<a href="http://piwigo.org/forum">haar forum</a>.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,13 @@
+<!--TODO--><p>You can forbid access to categories. Switch the category access type to "private" if you want to manage permissions.</p>
+
+<p>U kunt een categorie aan private maken door het aanpassen van een enkele categorie(<span
+  class="pwgScreen">Administratie &raquo; Categorieën &raquo; Beheren &raquo; bewerken</span>) of bij het aanpassen van de opties op de hele categorie map (<span class="pwgScreen">Administratie &raquo; Categorieën &raquo; Eigenschappen &raquo; Publiek / Private</span>).</p>
+
+<p>Als de categorie private is, dan kun je de rechten aanpassen voor de groepen en gebruikers via 3 schermen :</p>
+
+<ul>
+  <li><span class="pwgScreen">Administratie &raquo; Gebruikers &raquo; Beheer &raquo; rechten aanpassen (een link per gebruiker)</span></li>
+  <li><span class="pwgScreen">Administratie &raquo; Gebruikers &raquo; Groepen &raquo; rechten aanpassen (een link per groep)</span></li>
+  <li><span class="pwgScreen">Administratie &raquo; Categorieën &raquo; Beheer &raquo; bewerk categorie rechten aanpassen (one link per categorie)</span></li>
+</ul>
+
Index: /tags/2.6.0RC1/language/nl_NL/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,13 @@
+<p>Afbeeldingen / Foto's worden weergegeven in de categorie die overeenkomt
+met hun directory.</p>
+
+<p>Een afbeelding kan in meerdere categorieën worden weergegeven, zonder dat
+het bestand meerdere keren op uw webserver geplaatst hoeft te worden.
+Verbindt uw afbeelding de gewenste categorie of categorieën op het
+fotobewerkingsscherm (dat elke administrator kan bereiken vanaf het
+galeriescherm waarop de afbeelding weergegeven wordt).p>
+
+<p>Virtuele categorieën zijn gebaseerd op het volgende idee: ze hebben geen
+bijbehorende directory. Maak virtuele categorieën aan vanuit <span
+class="pwgScreen">Administratie &raquo; Categorieën &raquo;
+Beheer</span>.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/history.html	(revision 25596)
@@ -0,0 +1,37 @@
+<h2>Historie</h2>
+
+<p>Op deze pagina's , kan je de bezoekers geschiedenis van je gallerie zien, volgens de opties die ingesteld zijn in - Administratie - Algemeen - Historie inhoud.</p>
+
+<h3>Statistieken</h3>
+<ul>
+<p>Als je ervoor hebt gekozen om geschiedenis van (<span
+class="pwgScreen">index.php</span> en <span
+class="pwgScreen">picture.php</span>) bezochte pagina's <code>historie</code> geschiedenis,
+te bewaren kan je die bekijken op deze tab.</p>
+
+<li><strong>Algemene statistieken</strong>: bezoeken per jaar. </li>
+
+<li><strong>Jaarlijkste statistieken</strong>: bezoeken per maand in het geselecteerde jaar.</li>
+
+<li><strong>Maandeijkse statistieken</strong>: bezoeken per dag in de geselecteerde maand .</li>
+
+<li><strong>Dagelijkse statistieken</strong>: bezoeken per uur in de geselecteerde dag.</li>
+
+</ul>
+
+<h3>Zoeken</h3>
+<ul>
+<p>Als je ervoor hebt gekozen om geschiedenis van (<span
+class="pwgScreen">index.php</span> en <span
+class="pwgScreen">picture.php</span>) pagina's bezocht in de tabel <code>historie</code> te bewaren, kun je de gegevens van de bezochte pagina's bekijken met behulp van verschillende filters.</p>
+
+<li><strong>Filter op datum</strong> : kies het datum bereik waarvan je het bezoek wil bekijken.</li>
+
+<li><strong>Filter op type element</strong> : kies het type element waarvan je het bezoek wil bekijken.</li>
+
+<li><strong>Filter op gebruiker</strong> : kies de gebruiker waarvan je het bezoek wil bekijken.</li>
+
+<li><strong>Filter op bestandsnaam</strong> : kies de bestandsnaam waarvan je het bezoek wil bekijken.</li>
+
+<li><strong>Filter op beeld id</strong> : kies het beeld ID waarvan je het bezoek wil bekijken.</li>
+</ul>
Index: /tags/2.6.0RC1/language/nl_NL/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/nl_NL/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/maintenance.html	(revision 25596)
@@ -0,0 +1,54 @@
+<h2>Onderhoud</h2>
+
+<p>Om de pagina genereringstijd te optimaliseren, gebruikt Piwigo gecachde informatie. Voorbeeld, 
+inplaats van in plaats van het tellen van het aantal beelden, bevat elke categorie bij paginaherladen, 
+wordt deze informatie opgeslagen inde database. In theorie, zou deze informatie altijd correct zijn, 
+maar soms kan een fout optreden en de cache informatie is dan foutief.</p>
+
+<p>Bepaalde informatie word door tijd nutteloos. Door de nutteloze informatie te verwijderen uit de database bespaar je ruimte.</p>
+
+<ul>
+
+  <li>
+    <strong>Niet gelinkte elementen:</strong>
+    Toon afbeeldingen die niet gekoppeld zijn aan enige virtuele categorie.
+  </li>
+  <li>
+    <strong>Bestanden met dezelfde naam in meer dan één physieke categorie:</strong>
+    Toon afbeeldingen of bestanden met dezelfde naam in verschillende categorieën.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Update categorie informatie:</strong> Voor elke categorie,
+  informatie bijwerken of controleren zijn de volgende: lijst van hooft
+  categorieën, aantal afbeeldingen, datum van de laatste afbeelding, positie onder 
+  broeder categorieën, positie onder alle categorieën. Deze aktie controleerd ook de koppeling met de indexafbeelding.</li>
+
+  <li><strong>Update afbeeldings informatie:</strong> Voor elke afbeelding,
+  informatie om te updaten zijn : volledige adres naar het bestand, gemiddelde waardering. 
+  <em>Waarschuwing</em>: raak niet in verwarring met de metadata informatie, welke gesynchroniseerd word via <span class="pwgScreen">Administratie,
+  Categorieën, Synchronizeren</span> of doormiddel van wijzigen enkele afbeelding (via <span class="pwgScreen">Afbeelding</span> voorbeeld).</li>
+
+  <li><strong>Repareren en optimalizeren database:</strong>
+  Voor elke tabel, re-odrer, reparatie en optimalizatie worden voltooid.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>Filter geschiedenis:</strong> Verwijder alle <code>geschiedenis</code>uit de tabel. Scherm <span class="pwgScreen">Administratie,
+  Speciaal, Geschiedenis</span> toont geen informatie meer uit de verleden tijd. <em>Waarschuwing</em>: alle data wordt verwijderd en is niet meer te herstellen.</li>
+
+  <li><strong>Filter samenvatting:</strong> Verwijder alle informatie over het bezoek aan de website. Deze samenvatting is samengesteld uit de geschiedenis informatie.</li>
+
+  <li><strong>Filter sessies:</strong> Verwijder verlopen gebruikers sessies.</li>
+
+  <li><strong>Filter nooit gebruikte meldingen</strong></li>
+  
+  <li><strong>Purge search history</strong></li>
+  
+  <li><strong>Purge samengestelde sjablonen</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/nl_NL/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Meldingen per email</h2>
+
+<p>Dit scherm geeft je de mogelijkheid om emailmeldingen te configureren en te beheren om je gebruikers op de hoogte te stellen van nieuws op je website.</p>
+
+<p>Dit scherm is verdeelt in 3 delen:</p>
+
+<h3>Parameters</h3>
+<p>Alleen beschikbaar voor webmasters, dit deel configureerd de meldingen per email.</p>
+
+<h3>Inschrijven</h3>
+<p>Alleen beschikbaar voor webmasters, dit deel beheerd de in/uitschrijvingen voor email meldingen.</p>
+
+<h3>Verzending</h3>
+<p>Alleen beschikbaar voor webmasters en administrators, dit deel staat het toe om email meldingen te verzenden.</p>
+
Index: /tags/2.6.0RC1/language/nl_NL/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permanente links</h2>
+
+<p>Permanente links worden gebruikt om de adressen naar de categorie mooier te maken. wanneer een categorie een bepaalde permanente link heeft, wordt categorienaam niet meer vereist in de link ernaar toe.</p>
+
+<p>Wanneer een permanente link wordt verwijderd heb je de mogelijkheid om de geschiedenis te bewaren omde externe links naar de gallery werkend te houden. In de tabel met de permanente link geschiedenis kun je zien wanneer een permanente link is verwijderd, alsmede de laatste keer dat hij is gebruikt en het aantal keer.<p>
+
+<p>Let op: De permanente link naar een categorie moet uniek zijn. In de geschiedenis kan ook maar één keer dezelfde permanente link bestaan.</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,126 @@
+<fieldset>
+  <legend>Snelle start</legend>
+
+<ol>
+  <!--TODO--><li>Create a directory on your computer.</li>  
+
+  <!--TODO--><li>Copy some photos inside this directory, resize them for web display. <em>Warning</em>: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, no accentuated characters.</li>
+
+  <!--TODO--><li>With a FTP client, copy your directory in the "galleries" directory of your Piwigo installation.</li>
+
+  <!--TODO--><li>Logon your gallery and go to <span class="pwgScreen">Administration &raquo; Pictures &raquo; Thumbnails</span> to create missing thumbnails.</li>
+
+  <!--TODO--><li>Go to <span class="pwgScreen">Administration</span> and click on the big Synchronization button.</li>
+</ol>
+
+<!--TODO-->Congratulations! You have successfuly created the first category of your photo gallery.
+
+</fieldset>
+<fieldset>
+  <legend><!--TODO-->Directories and files organization</legend>
+
+<ul>
+
+  <li>
+
+    <p>Categorie mappen zijn in de Piwigo map "galleries". Bekijk de mapstructuur van een kleine gallerie (maar met een hoop mogelijkheden) :</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- categorie-1
+|   |   |-- categorie-1.1
+|   |   |   |-- categorie-1.1.1
+|   |   |   |   |-- categorie-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- categorie-1.1.1.2
+|   |   |   +-- categorie-1.1.2
+|   |   |-- categorie-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- categorie-1.3
+|   +-- categorie-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+  
+  <li>Eigenlijk, een categorie is gepresenteerd door een map op welke level in
+  Piwigo map "galleries". Elke categorie kan zoveel submappen als jij wilt bevatten.
+  In het voorbeeld hierboven, categorie-1.1.1.1 is op nivo 4 van de trap.</li>
+
+  <li>Eigenlijk, een element is gepresenteerd door een bestand. Een bestand kan een
+  Piwigo element zijn als de extenstie is <code>file_ext</code>
+  configuration parameter mofenlijkheden (zie <span
+  class="filename">include/config_default.inc.php</span> file). Een bestand kan
+  een afbeelding zijn als de extensie gelijk is aan <code>picture_ext</code>
+  configuration parameter possibilities.</li>
+
+  <li>Afbeeldings elementen moeten een link naar een thumbnail hebben.(zie sectie hieronder
+  over thumbnails)</li>
+
+  <li>Afbeeldings elementen kunnen gekoppeld zijn aan hoge kwaliteit bestanden. Zoals 
+  in het voorbeeld wedding.jpg hierboven. Er is geen andere naamsaanpassing nodig voor de
+   hoge kwaliteit afbeelding verplicht.
+  </li>
+
+  <li>Niet afbeeldings elementen (video, geluid, tekstbestanden, wat je wil...) worden 
+  standaard vertegenwoordigt door een ikoontje die overeenkomt met de bestandsextensie.
+   Optioneel, je kan zelf een associatie met een thumbnail en een bestand opgeven (zie video.avi in het voorbeeld hierboven).</li>
+
+  <li><em>Waarshuwing</em> : de naam van de mappen en bestanden moeten bestaan uit de letters en koppeltekens "-", "_" of ".". Geen spaties en geen accenten
+ op de karakters</li>
+
+  <li><em>Advies</em> : Een categorie kan elementen en sub-categorieën hebben
+op het zelfde moment. Desalnietemin, word je geadviseerd om te kiezen uit categorieën die elementen bevatten <strong>of</strong> categorieën
+die sub-categorieën bevatten.</li>
+
+  <li>Als bestanden, thumbnails en representativev corrct zijn geplaatst in
+ mappen ga dan naar: <span class="pwgScreen">Administratie &raquo; Categorieën &raquo; Synchronizeren</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>Thumbnails</legend>
+
+<ul>
+
+  <li>Zoals eerde gemeld, elk element of afbeeldingstype moet geassociateerd worden met een thumbnail.</li>
+
+  <li>Thumbnails worden opgeslagen in een sub-directory "thumbnail" of de categorie map. De thumbnail is een afbeelding (zelfde bestandsnaam extensies mogelijk
+  als de afbeeldingbestanden) welke is prefixed met een geconfigureerde
+  "Thumbnail prefix" (zie administratie paneel, Configuratie, Algemeen).</li>
+
+  <li>Thumbnails hoeven niet de zelfde extensie te hebben als het geassocieerde
+  afbeelding (een afbeelding met .jpg extensie kan een thumbnail hebben met .GIF
+  extentie als voorbeeld).</li>
+
+  <li>Advies: gebruik een ecterne module voor het maken van thumbnails.</li>
+
+  <li>Je kunt ook de pagina thumbnail maken gebruiken (<span
+  class="pwgScreen">Administratie, Afbeeldingen, Thumbnails</span>), maar dat word niet aangeraden.
+   De thumbnail kwaliteit kan slecht zijn en het gebruikt een hoge CPU kracht welke een probleem kan zijn bij gratis webhost.</li>
+
+  <li>Als je er voor kiest om de thumbnails te laten maken door de webhoster, dan dien je de rechten toe te wijzen op die mappen om de thumbnail te kunnen maken.
+  De correcte rechten op de mappen en sub-mappen zijn gebruiker/goep/wereld (ook wel 777)
+</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/nl_NL/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Zoeken</h2>
+
+<p>Via deze pagina kun je afbeeldingen zoeken in de totale gallerie.</p>
+
+<dl>
+
+  <dt>Zoeken naar woorden</dt>
+  <dd>Zoek naar opgegeven woorden in alle eigenschappen die betrekking heeft op de afbeelding die in de gallerie word getoond. Gebruik * als vervanging voor gedeeltelijke overeenkomsten.</dd>
+
+  <dt>Zoeken naar Auteur</dt>
+  <dd>Gebruik * als vervanging voor gedeeltelijke overeenkomsten.</dd>
+
+  <dt>Zoeken op datum</dt>
+  <dd>Selecteer een datum en/of een eind datum voor je zoekopdracht. Laat de datum leeg als je zoekt op een datum voor vandaag. Het jaartal moet zijn in het formaat : 0000 (2004)</dd>
+
+  <dt>Zoeken in Categorieën</dt>
+  <dd>Selecteer de categorie of categorieën waarin je wil zoeken. Voor snelheid kunnen alle subcategorieën worden doorzocht door de ouder te selecteren, en dan kun je kiezen om de subcategorieën te doorzoeken doormiddel van het aanvinken van die optie.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nl_NL/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/synchronize.html	(revision 25596)
@@ -0,0 +1,8 @@
+<h2>Synchronizeren</h2>
+
+<p>Er zijn 2 synchronizaties mogelijk : mappen/bestanden en bestands metadata. mapppen/bestanden gaat over het synchronizeren van je mapstructuur met de categorie structuur in de database.
+ metadata gaat over het bijwerken van de informatie zoals bestandsgrootte, dimenties in pixels en EXIF of IPTC informatie.</p>
+
+<p>De eerste synchronizatie moet zijn mappen/bestanden.</p>
+
+<p>Het synchronizatiren kan een lange tijd duren (afhankelijk van de server belasting en het aantal bestanden) daarom is het mogelijk om de categorieën één voor één te doen. (categorie voor categorie)</p>
Index: /tags/2.6.0RC1/language/nl_NL/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/help/user_list.html	(revision 25596)
@@ -0,0 +1,30 @@
+<h2>Gebruikers lijst</h2>
+
+<p>Hier kun je geregistreerde gebruikers beheren. Rechten kun je aanpassen in een aantal andere schermen.</p>
+
+<h3>Gebruiker toevoegen</h3>
+
+<p>Administrators kunnen zelf handmatig een gebruiker toevoegen.</p>
+
+<h3>Bebruikerslijst</h3>
+
+<p>De lijst kan gefilterd worden op gebruikersnaam (gebruike * als wildcard), groepen of status. De lijst kan gesorteerd worden op registratiedatum of gebruikersnaam, van A tot Z
+of van Z tot A.</p>
+
+<p>Dit scherm werkt verschillende gebruikers bij met verschillende akties:</p>
+
+<ul>
+
+  <li>verwijder gebruikers (vereist een bevestiging)</li>
+
+  <li>veranderen status</li>
+
+  <li>aan/af koppelen van groepen</li>
+
+  <li>wijzig weergave eigenschappen</li>
+
+  <li>wijzig extra eigenschappen</li>
+
+</ul>
+
+<p>Het doel is de geselecteerde groep gebruikers (standaard) of alle gebruikers. dit word gevraagd.</p>
Index: /tags/2.6.0RC1/language/nl_NL/index.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/nl_NL/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installatie';
+$lang['Basic configuration'] = 'Basis-configuratie';
+$lang['Default gallery language'] = 'Standaard galerie-taal';
+$lang['Database configuration'] = 'Database-configuratie';
+$lang['Admin configuration'] = 'Admin configuratie';
+$lang['Start Install'] = 'Start Installatie';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Het wordt getoond aan de bezoekers. Het is ook noodzakelijk voor de administratie van de website';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'De verbinding met de server is geslaagd, maar het is niet mogelijk om verbinding te krijgen met de database';
+$lang['Can\'t connect to server'] = 'Geen verbinding met de server';
+$lang['Host'] = 'MySQL host';
+$lang['User'] = 'Gebruiker';
+$lang['user login given by your host provider'] = 'De gebruikersnaam welke door uw provider is gegeven';
+$lang['user password given by your host provider'] = 'Wachtwoord welke door uw provider is gegeven';
+$lang['Database name'] = 'Database-naam';
+$lang['also given by your host provider'] = 'Ook deze is door uw provider gegeven';
+$lang['Database table prefix'] = 'Database-tabel voorvoegsel';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Tabellen in de database worden voorzien van dit voorvoegsel (dit maakt een beter beheer van de database mogelijk) ook wel prefix genoemd';
+$lang['enter a login for webmaster'] = 'Geef een gebruikersnaam voor de beheerder';
+$lang['webmaster login can\'t contain characters \' or "'] = 'De gebruikersnaam mag geen \' of " bevatten';
+$lang['please enter your password again'] = 'Vul a.u.b. nogmaals uw wachtwoord in';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hou dit vertrouwelijk, het geeft toegang tot de beheermodule';
+$lang['Password [confirm]'] = 'Bevestig wachtwoord';
+$lang['verification'] = 'verificatie';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Hulp nodig ? Stel uw vraag op het <a href="%s" target="_blank">Piwigo forum</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Met dit email-adres kunnen bezoekers contact opnemen met de beheerder';
+$lang['PHP 5 is required'] = 'PHP 5 is vereist';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Het lijkt er op dat uw webhost momenteel gebruik maakt van PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan proberen uw configuratie om te zetten naar PHP 5 door het aanmaken of wijzigen van een .htaccess bestand.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Opmerking: u kunt uw configuratie ook zelf aanpassen en daarna Piwigo opnieuw opstarten.';
+$lang['Try to configure PHP 5'] = 'Probeer PHP 5 te configureren';
+$lang['Sorry!'] = 'Sorry!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo kon PHP 5 niet configureren.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Neem contact op met de support van uw hosting provider en probeer met hen te bepalen hoe u kunt omschakelen naar PHP 5.';
+$lang['Hope to see you back soon.'] = 'Hoop u snel weer te zien op deze site !.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gefeliciteerd, de Piwigo installatie is afgerond';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Als alternatieve oplossing kunt u de tekst in de bovenstaande box kopiëren en plakken in bestand "local/config/database.inc.php" (Opgelet : in database.inc.php mag alleen datgene staan dat in het tekstgebied staat, geen return- of spatie-tekens)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Het aanmaken van config-bestand local/config/database.inc.php is mislukt.';
+$lang['Download the config file'] = 'Download het config-bestand';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'U kunt het config-bestand downloaden en het uploaden naar de local/config directory van uw Piwigo-installatie.';
+$lang['Just another Piwigo gallery'] = 'Alweer een Piwigo galerie';
+$lang['Welcome to my photo gallery'] = 'Welkom bij mijn foto galerie';
+$lang['Welcome to your new installation of Piwigo!'] = 'Welkom bij uw nieuwe installatie van Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Aarzel niet om onze forum\'s te raadplegen voor hulp: %s';
+$lang['localhost or other, supplied by your host provider'] = 'localhost of andere, geleverd door uw provider';
+?>
Index: /tags/2.6.0RC1/language/nl_NL/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Nederlands [NL]
Index: /tags/2.6.0RC1/language/nl_NL/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nl_NL/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nl_NL/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Upgrade';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Deze pagina stelt voor om uw
+huidige oude Piwigo-database te converteren naar de nieuwe versie. De upgrade-assistant denkt dat u momenteel gebruik maakt van <strong>release %s</strong> (of equivalent).';
+$lang['Upgrade from version %s to %s'] = 'Upgrade van versie %s naar versie %s';
+$lang['Statistics'] = 'Statistieken';
+$lang['total upgrade time'] = 'totale upgrade tijd';
+$lang['total SQL time'] = 'totale SQL tijd';
+$lang['SQL queries'] = 'SQL queries';
+$lang['Upgrade informations'] = 'Upgrade informatie';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Voor een onderhoudscontrole uit [Administratie>Hulpmiddelen>Onderhoud] indien u problemen ondervindt.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Als voorzorgsmaatregel zijn de volgende plugins gedeactiveerd. Voordat u ze reactiveert moet u deze plugins op upgrades controleren:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Alleen een administrator kan een upgrade uitvoeren: hieronder kunt u inloggen.';
+$lang['You do not have access rights to run upgrade'] = 'U bent niet gerechtigd om een upgrade uit te voeren';
+$lang['All sub-albums of private albums become private'] = 'Alle sub-albums van privé albums worden privé';
+$lang['User permissions and group permissions have been erased'] = 'Gebruikers- en groepsrechten zijn verwijderd';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Alleen het voorvoegsel (prefix) van de klikplaatjes en het email-adres van de webbeheerder zijn bewaard gebleven van de vorige configuratie';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, voor <b>?></b>, voeg tussen:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Als voorzorgsmaatregel zijn de volgende thema\'s gedeactiveerd. Controleer of er nieuwe versies van deze thema\'s bestaan, voordat u ze reactiveerd:';
+
+?>
Index: /tags/2.6.0RC1/language/nn_NO/about.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/about.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Dette fotogalleriet er basera på Piwigo.</p>
+
+<p>Piwigo er eit fotogalleri for bruk på web, uvikla av eit aktivt miljø av brukarar og utviklarar. Tilleggsverktøy gjer at Piwigo lett kan tilpassast til eigne ynskje. Og på toppen av det heile, Piwigo er gratis og har åpen kildekode.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Besøk nettsida til Piwigo</a></p>
+
+<p> Omsetjinga til nynorsk blir vedlikehalden av (i alfabetisk rekkefylge):
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18893">kiho</a></li>
+	</ul>
+               .... mange takk!
+</p>
Index: /tags/2.6.0RC1/language/nn_NO/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/admin.lang.php	(revision 25596)
@@ -0,0 +1,963 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['... or '] = '... eller';
+$lang['ACCESS_0'] = 'Fri tilgang';
+$lang['ACCESS_5'] = 'Ingen tilgang';
+$lang['%d users were updated.'] = '%d brukarar oppdatera';
+$lang['%d user comments rejected'] = '%d brukarkommentarar avvist';
+$lang['%d user comments validated'] = '%d brukarkommentarar godkjend';
+$lang['%d user deleted'] = '%d brukar sletta';
+$lang['%d user was not updated.'] = '%d brukar er ikkje oppdatera';
+$lang['%d user was updated.'] = '%d brukar oppdatera';
+$lang['%d users'] = '%d brukarar';
+$lang['%d users deleted'] = '%d brukarar sletta';
+$lang['%d users were not updated.'] = '%d brukarar er ikkje oppdatera';
+$lang['%d photos were deleted'] = '%d bilete sletta';
+$lang['%d second'] = '%d sekund';
+$lang['%d seconds'] = '%d sekundar';
+$lang['%d tag'] = '%d stikkord';
+$lang['%d tags'] = '%d stikkord';
+$lang['%d user'] = '%d brukar';
+$lang['%d user comment rejected'] = '%d brukarkommentar avvist';
+$lang['%d user comment validated'] = '%d brukarkommentarar godkjend';
+$lang['%d guest'] = '%d gjest';
+$lang['%d guests'] = '%d gjester';
+$lang['%d hour'] = '%d time';
+$lang['%d hours'] = '%d timar';
+$lang['%d member'] = '%d medlem';
+$lang['%d members'] = '%d medlemer';
+$lang['%d minute'] = '%d minutt';
+$lang['%d minutes'] = '%d minuttar';
+$lang['%d month'] = '%d månad';
+$lang['%d months'] = '%d månader';
+$lang['%d photo was deleted'] = '%d bilete sletta';
+$lang['wrong filename'] = 'feil filnamn';
+$lang['Add detailed content'] = 'Legg til detaljera innhald';
+$lang['Add group'] = 'Legg til gruppe';
+$lang['Add tags'] = 'Legg til stikkord';
+$lang['Add to caddie'] = 'Legg til "caddie"';
+$lang['Add/delete a permalink'] = 'Legg til/fjern ei permalenke';
+$lang['Added by %s'] = 'Lagt til av %s';
+$lang['Administration Home'] = 'Startside for administrasjon';
+$lang['Advanced features'] = 'Avansera funksjonar';
+$lang['Album "%s" has been added'] = 'Albumet %s er oppdatera';
+$lang['Album "%s" now contains %d photos'] = 'Albumet %s inneheld nå %d bilete';
+$lang['Album list management'] = 'Albumliste handtering';
+$lang['Album manual order was saved'] = 'Manuell sortering av albumet er lagra';
+$lang['Album name'] = 'Albumnamn';
+$lang['Activate Navigation Bar'] = 'Legg til navigeringsmeny';
+$lang['Activate Navigation Thumbnails'] = 'Aktiver miniatyrbilete for navigering';
+$lang['Activate comments'] = 'Aktiver kommentarar';
+$lang['Activate icon "%s"'] = 'Aktiver ikon "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktiver ikon "ny" ved sida av album og bilete';
+$lang['Active Languages'] = 'Aktive språk';
+$lang['Active Plugins'] = 'Aktive tilleggsprogram';
+$lang['Active Themes'] = 'Aktive tema';
+$lang['Add'] = 'Legg til';
+$lang['Add New Language'] = 'Legg til nytt språk';
+$lang['Add New Theme'] = 'Legg til nytt tema';
+$lang['Add Photos'] = 'Legg til bilete';
+$lang['Add a criteria'] = 'Legg til reglar';
+$lang['Add a filter'] = 'Legg til filter';
+$lang['Add a tag'] = 'Legg til stikkord';
+$lang['Add a user'] = 'Legg til brukar';
+$lang['Add a virtual album'] = 'Legg til eit virtuelt album';
+$lang['Add another set of photos'] = 'Legg til eit anna set med bilete';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s må bli sett til usann (false) i fila local/config/config.inc.php';
+$lang['%s photos can not be regenerated'] = '%d bilete kan ikkje bli bygd opp att';
+$lang['%s photos have been regenerated'] = '%d bilete kan ikkje bli bygd opp att';
+$lang['%s value is not correct file because exif are not supported'] = '%s er feil avdi exif ikkje er støtta';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%d brukarar har automatisk tilgang avdi dei høyrer til ei gruppe med løyve.';
+$lang['(this tag will be deleted)'] = '(dette stikkordet vil bli sletta)';
+$lang['+ Add an upload box'] = '+ Legg til ein opplastingsboks';
+$lang[', click on'] = ', klikk på';
+$lang['A locked gallery is only visible to administrators'] = 'Eit låst galleri er bare synleg for administratorar';
+$lang['A new version of Piwigo is available.'] = 'Ein ny version av Piwigo er tilgjengeleg';
+$lang['ACCESS_1'] = 'Tilgang til alt';
+$lang['ACCESS_2'] = 'Tilgang til registrera brukarar';
+$lang['ACCESS_3'] = 'Tilgang til administratorar';
+$lang['ACCESS_4'] = 'Tilgang til webmaster';
+$lang['Access type'] = 'Tilgangstype';
+$lang['Action'] = 'Handling';
+$lang['Actions'] = 'Handlingar';
+$lang['Activate'] = 'Aktiver';
+$lang['%d line filtered'] = '%d line filtrera';
+$lang['%d lines filtered'] = '%d liner filtrera';
+$lang['%d mail was not sent.'] = '%d e-post har ikkje blitt sendt.';
+$lang['%d mail was sent.'] = '%d e-post har blitt sendt.';
+$lang['%d mails were not sent.'] = '%d e-postar har ikkje blitt sendt.';
+$lang['%d mails were sent.'] = '%d e-postar har blitt sendt.';
+$lang['%d of %d photos selected'] = '%d av %d bilete er vald';
+$lang['%d parameter was updated.'] = '%d eigenskap er oppdatera.';
+$lang['%d parameters were updated.'] = '%d eigenskapar er oppdatera.';
+$lang['%d photos uploaded'] = '%d bilete er lasta opp';
+$lang['%d physical'] = '%d fysisk';
+$lang['%d physicals'] = '%d fysisk';
+$lang['%d waiting for validation'] = '%d ventar på godkjenning';
+$lang['%d week'] = '%d veke';
+$lang['%d weeks'] = '%d veker';
+$lang['%d year'] = '%d år';
+$lang['%d years'] = '%d år';
+$lang['%s ago'] = '%s sidan';
+$lang['%s has been successfully updated.'] = '%s har blitt vellykka oppdatera.';
+$lang['%s in the future'] = '%s i framtida';
+$lang[' and %d virtual'] = 'og %d virtuell';
+$lang[' and %d virtuals'] = 'og %d virtuelle';
+$lang['%d album including'] = '%d album inkludera ';
+$lang['%d album moved'] = '%d album er flytta';
+$lang['%d albums including'] = '%d album inkludera';
+$lang['%d albums moved'] = '%d album er flytta';
+$lang['%d anomalies have been detected corrected.'] = '%d feil har blitt oppdaga og retta opp.';
+$lang['%d anomalies have been detected.'] = '%d feil har blitt oppdaga.';
+$lang['%d anomalies have been ignored.'] = '%d feil har blitt ignorera.';
+$lang['%d anomalies have not been corrected.'] = '%d feil har ikkje blitt retta opp.';
+$lang['%d anomaly has been corrected.'] = '%d feil har blitt retta opp.';
+$lang['%d anomaly has been detected.'] = '%d feil har blitt oppdaga.';
+$lang['%d anomaly has been ignored.'] = '%d feil har blitt ignorera.';
+$lang['%d anomaly has not been corrected.'] = '%d feil har ikkje blitt retta opp.';
+$lang['%d association'] = '%d tilknytning';
+$lang['%d associations'] = '%d tilknytningar';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dagar';
+$lang['%d group'] = '%d gruppe';
+$lang['%d groups'] = '%d grupper';
+$lang['albums deleted in the database'] = 'album fjerna frå databasen';
+$lang['all'] = 'alle ';
+$lang['an error happened'] = 'det oppstod ein feil';
+$lang['and'] = 'og';
+$lang['automatic order'] = 'automatisk sortering';
+$lang['average time'] = 'gjennomsnittleg tid';
+$lang['between'] = 'mellom';
+$lang['between %.2f and %.2f'] = 'mellom %.2f og %.2f';
+$lang['between %d and %d pixels'] = 'mellom %d og %d biletpunkt (pikslar)';
+$lang['bottom left corner'] = 'nedre venstre hjørne';
+$lang['bottom right corner'] = 'nedre høgre hjørne';
+$lang['cancel manual order'] = 'nullstill manuell sortering';
+$lang['clean'] = 'rydd opp';
+$lang['confirm'] = 'stadfest';
+$lang['create a new album'] = 'lag nytt album';
+$lang['create a new site'] = 'lag ny nettside';
+$lang['created'] = 'oppretta';
+$lang['default'] = 'standard';
+$lang['default values'] = 'standardverdiar';
+$lang['delete'] = 'fjern';
+$lang['delete album'] = 'fjern album';
+$lang['delete photo'] = 'fjern bilete';
+$lang['delete this site and all its attached elements'] = 'fjern denne nettsida og all informasjon knytt til denne';
+$lang['deleted'] = 'fjerna';
+$lang['directories + files'] = 'katalogar + filer';
+$lang['display'] = 'vis';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'vis maksimal informasjon (album og bilete lagt til eller sletta';
+$lang['errors during synchronization'] = 'feil under synkronisering';
+$lang['existing album'] = 'eksisterande album';
+$lang['first photo added on %s'] = 'fyrste bilete lagt til %s';
+$lang['group "%s" added'] = 'gruppe "%s" er lagt til';
+$lang['group "%s" deleted'] = 'gruppe "%s" er fjerna';
+$lang['group "%s" updated'] = 'gruppe "%s" er oppdatera';
+$lang['guest'] = 'gjest';
+$lang['height must be a number superior to'] = 'høgde må vera ei tal større enn';
+$lang['hide details'] = 'gøym detaljar';
+$lang['high'] = 'høg';
+$lang['include child albums'] = 'inkluder underalbum';
+$lang['include photos with lower privacy level'] = 'includer bilete med lågare personverninnstillingar';
+$lang['jump to album'] = 'hopp til ablum';
+$lang['jump to photo'] = 'hopp til bilete';
+$lang['manage album photos'] = 'handter albumbilete';
+$lang['manage sub-albums'] = 'handter underalbum';
+$lang['manual order'] = 'manuell stortering';
+$lang['middle'] = 'midten';
+$lang['modified'] = 'endra';
+$lang['new'] = 'ny';
+$lang['no write access'] = 'ikkje rett til å skrive';
+$lang['none'] = 'ingen';
+$lang['nothing'] = 'ingenting';
+$lang['number of miniaturized photos'] = 'antal miniatyrbilete oppretta';
+$lang['on'] = 'på';
+$lang['only directories'] = 'bare katalogar';
+$lang['other'] = 'anna';
+$lang['photos added in the database'] = 'bilete lagt til i databasen';
+$lang['photos deleted from the database'] = 'bilete fjerna frå databasen';
+$lang['photos per page'] = 'bilete pr. side';
+$lang['photos updated in the database'] = 'bilete oppdatera i databasen';
+$lang['pixels'] = 'bildepunkt (piksel)';
+$lang['private'] = 'privat';
+$lang['public'] = 'offentleg';
+$lang['randomly represented'] = 'tilfeldig album-miniatyrbilete';
+$lang['registered users'] = 'registrera brukarar';
+$lang['remove author'] = 'fjern forfattar';
+$lang['remove tags'] = 'fjern stikkord';
+$lang['remove this filter'] = 'fjern dette filteret';
+$lang['remove title'] = 'fjern tittel';
+$lang['selection'] = 'utval';
+$lang['show details'] = 'vis detaljar';
+$lang['status'] = 'status';
+$lang['sub-albums'] = 'underalbum';
+$lang['synchronize files structure with database'] = 'synkroniser filstruktur med databasen';
+$lang['target'] = 'mål';
+$lang['test'] = 'test';
+$lang['the forum'] = 'forumet';
+$lang['the wiki'] = 'wiki';
+$lang['top left corner'] = 'øvre venstre hjørne';
+$lang['top right corner'] = 'øvre høgre hjørne';
+$lang['total time'] = 'total tid';
+$lang['unit mode'] = 'enkel-modus';
+$lang['unknown'] = 'ukjend';
+$lang['user "%s" added'] = 'brukar "%s" er lagt til';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Generell';
+$lang['user_status_guest'] = 'Gjest';
+$lang['user_status_normal'] = 'Brukar';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'dei som vitjar galleriet må logge på og ha naudsynte rettar for å sjå dette albumet';
+$lang['width must be a number superior to'] = 'breidde må vera eit tal større enn';
+$lang['Anomaly'] = 'Feil';
+$lang['Are you sure you want to delete this plugin?'] = 'Er du sikker på at du vil fjerne dette tilleggsprogrammet';
+$lang['Are you sure you want to install this plugin?'] = 'Er du sikker på at du vil installere dette tilleggsprogrammet';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> appen gjer det mogleg å kople ein Android telefon eller nettbrett til ditt Piwigo galleri. Du kan lage album og laste opp fleire bilete på ein gong.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em> appen gjer det mogleg å kople ein iPhone, iPad eller iPod Touch til ditt Piwigo galleri. Du kan lage album og laste opp fleire bilete på ein gong.';
+$lang['Add write access to the "%s" directory'] = 'Legg til skriverettar til "%s" katalogen';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom er programvare laga for å handtere store mengder digitale foto og gjera biletbehandling.';
+$lang['Album photos associated to the following albums: %s'] = 'Albumbilete er knytt til fylgjande album: %s';
+$lang['Album updated successfully'] = 'Album er oppdatera';
+$lang['Albums automatically sorted'] = 'Albuma er automatisk sortera';
+$lang['All %d photos are selected'] = 'Alle %d bilete er vald';
+$lang['All extensions are up to date.'] = 'Alle tillegg er siste versjon';
+$lang['All languages are up to date.'] = 'Alle språk er siste versjon';
+$lang['All plugins are up to date.'] = 'Alle tilleggsprogram er siste versjon';
+$lang['All themes are up to date.'] = 'Alle tema er siste versjon';
+$lang['Allow rating'] = 'Tillat rangering';
+$lang['Allow user customization'] = 'Tillat brukartilpasning';
+$lang['Allow user registration'] = 'Tillat brukarregistrering';
+$lang['Allow users to delete their own comments'] = 'Tillat brukarar å slette sine eigne kommentarar';
+$lang['Allow users to edit their own comments'] = 'Tillat brukarar å endre sine eigne kommentarar';
+$lang['Allowed file types: %s.'] = 'Tillatne filtyper: %s';
+$lang['Mail content'] = 'Send innhald på e-post';
+$lang['Mail sent to %s [%s].'] = 'E-post sendt til %s [%s].';
+$lang['Main Page'] = 'Hovudside';
+$lang['Multiple Size'] = 'Fleire størrelsar';
+$lang['Level 2'] = 'Vener';
+$lang['Level 4'] = 'Familie';
+$lang['Level 8'] = 'Administratorar';
+$lang['Link all album photos to a new album'] = 'Kople alle albumbilete til eit nytt album';
+$lang['Link all album photos to some existing albums'] = 'Kople alle albumbilete til eit eksisterande album';
+$lang['Linked albums'] = 'Tilkopla album';
+$lang['List'] = 'Liste';
+$lang['Local'] = 'Lokal';
+$lang['Lock'] = 'Lås';
+$lang['Lock albums'] = 'Lås album';
+$lang['Lock gallery'] = 'Lås galleri';
+$lang['Locked'] = 'Låst';
+$lang['Inactive Languages'] = 'Inaktive språk';
+$lang['Inactive Plugins'] = 'Inaktive tilleggsprogram';
+$lang['Inactive Themes'] = 'Inaktive tema';
+$lang['Languages'] = 'Språk';
+$lang['Languages which need upgrade'] = 'Språk som treng oppgradering';
+$lang['Last hit'] = 'Siste treff';
+$lang['Last import'] = 'Siste importering';
+$lang['Last revisions'] = 'Siste revisjonar';
+$lang['Last send'] = 'Sist sendt';
+$lang['Learn more'] = 'Lær meir';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontaktar';
+$lang['Informations'] = 'informasjon';
+$lang['Install'] = 'Installer';
+$lang['Install on your computer,'] = 'Installer på din datamaskin';
+$lang['Installed Languages'] = 'Installera språk';
+$lang['Installed Themes'] = 'Installera tema';
+$lang['Instructions to use Piwigo'] = 'Instruksjonar for å bruke Piwigo';
+$lang['Invert'] = 'Inverter';
+$lang['Landscape'] = 'Landskap';
+$lang['Language has been successfully installed'] = 'Språk er installera';
+$lang['Apply action'] = 'Utfør handling';
+$lang['Apply selected corrections'] = 'Utfør valde korrigeringar';
+$lang['Associate to album'] = 'Kople til album';
+$lang['Associated'] = 'Kopla til';
+$lang['Authorized'] = 'Autorisera';
+$lang['Automatic correction'] = 'Automatisk korrigering';
+$lang['Automatic sort order'] = 'Automatisk sorteringsrekkefylgje';
+$lang['Available on'] = 'Tilgjengeleg';
+$lang['Available only with HTML format'] = 'Kun tilgjengeleg med HTML-format';
+$lang['Available versions for'] = 'Tilgjengelege versjonar for';
+$lang['associate to group'] = 'kople til gruppe';
+$lang['Update to Piwigo %s'] = 'Oppdatera til Piwigo %s';
+$lang['Updates'] = 'Oppdateringar';
+$lang['Upload'] = 'Last opp';
+$lang['Week starts on'] = 'Veka startar på';
+$lang['Who can see these photos?'] = 'Kven kan sjå desse bileta?';
+$lang['New parent album'] = 'Nytt foreldrealbum';
+$lang['No display'] = 'Ingen vising';
+$lang['No group selected, no action possible.'] = 'Ingen gruppe er vald, ingen handling mogleg.';
+$lang['Not cropped correctly?'] = 'Ikkje kutta rett?';
+$lang['Notification'] = 'Melding';
+$lang['Notify administrators when a comment is'] = 'Send melding til administratorar når ein kommentar er';
+$lang['Opacity'] = 'Grad av gjennomsiktighet';
+$lang['Optional URL keyword'] = 'Valfritt URL-nøkkelord';
+$lang['Order of menubar items has been updated successfully.'] = 'Rekkefylgje på menyelement på menylina er oppdatera';
+$lang['Merge selected tags'] = 'Flett valde stikkord';
+$lang['Merge tags'] = 'Flett stikkord';
+$lang['Metadata synchronization results'] = 'Resultat for synkronisering av metadata';
+$lang['Metadata synchronized from file'] = 'Metadata synkronisera frå fil';
+$lang['Minimum height'] = 'Minste høgde';
+$lang['Minimum privacy level'] = 'Lågaste personvern-nivå';
+$lang['Minimum width'] = 'Minste breidde';
+$lang['Miscellaneous'] = 'Diverse';
+$lang['Missing Plugins'] = 'Manglande tilleggsprogram';
+$lang['Missing a temporary folder'] = 'Kladdemappe manglar';
+$lang['Modify information'] = 'Endre informasjon';
+$lang['Month'] = 'Månad';
+$lang['Move'] = 'Flytt';
+$lang['Move albums'] = 'Flytt album';
+$lang['Move to album'] = 'Flytt til album';
+$lang['Name'] = 'Namn';
+$lang['Name of the duplicate'] = 'Namn på duplikat';
+$lang['New Version'] = 'Ny versjon';
+$lang['New name'] = 'Nytt namn';
+$lang['Maintenance'] = 'Vedlikehald';
+$lang['Make this language available to users'] = 'Gjer dette språket tilgjengeleg for brukarar';
+$lang['Make this theme available to users'] = 'Gjer dette temaet tilgjengeleg for brukarar';
+$lang['Manage'] = 'Handter';
+$lang['Manage Permissions'] = 'Handter løyve';
+$lang['Manage authorizations for selected albums'] = 'Handter autorisering for valde album';
+$lang['Manage permissions for group "%s"'] = 'Handter løyve for gruppa "%s"';
+$lang['Manage permissions for user "%s"'] = 'Handter løyve for brukaren "%s"';
+$lang['Manage photo ranks'] = 'Sorteringsrekkefylgje for bilete';
+$lang['Manage photos'] = 'Handter bilete';
+$lang['Manage tags'] = 'Handter stikkord';
+$lang['Manage the members'] = 'Handter medlemer';
+$lang['Manage this set of %d photos'] = 'Handter denne samlinga av %d bilete';
+$lang['Manual order'] = 'Manuell rekkefylgje';
+$lang['Maximum file size: %sB.'] = 'Største filstørrelse: %sB.';
+$lang['Maximum height'] = 'Største høgde';
+$lang['Maximum width'] = 'Største breidde';
+$lang['Members'] = 'Medlemer';
+$lang['Menu Management'] = 'Menyar';
+$lang['Merge selected groups'] = 'Flett valde grupper';
+$lang['Average rate'] = 'Gjennomsittleg vurdering';
+$lang['By %s'] = 'Av %s';
+$lang['Caddie'] = '"Caddie"';
+$lang['Caddie management'] = '"Caddie"-handtering';
+$lang['Can\'t connect to server.'] = 'Tilkopling til tenar er ikkje tilgjengeleg.';
+$lang['Can\'t create temporary file.'] = 'Kan ikkje opprette kladdefil.';
+$lang['Can\'t download archive.'] = 'Kan ikkje laste ned arkiv.';
+$lang['Can\'t read or extract archive.'] = 'Kan ikkje lesa eller pakke ut arkiv.';
+$lang['Cancel'] = 'Avbryt';
+$lang['Cannot delete the old permalink !'] = 'Den gamle permalenka kan ikkje slettast!';
+$lang['Change Admin Colors'] = 'Endre fargar for administrasjon';
+$lang['Check all'] = 'Sjekk alle';
+$lang['Check for updates'] = 'Sjekk for oppdateringar';
+$lang['Check for upgrade'] = 'Sjekk oppdateringar';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Oppgraderingssjekk feila av ukjend årsak.';
+$lang['Check integrity'] = 'Integritetssjekk';
+$lang['Choose an action'] = 'Vel ei handling';
+$lang['Choose an option'] = 'Vel eit alternativ';
+$lang['Classic display'] = 'Klassisk vising';
+$lang['Comments for all'] = 'Kommentarar for alle';
+$lang['Configuration'] = 'Konfigurasjon';
+$lang['Confirm merge'] = 'Stadfest fletting';
+$lang['Correction'] = 'Korreksjon';
+$lang['Correction applied with error'] = 'Korreksjon vart gjort, men med feil';
+$lang['Correction applied with success'] = 'Korreksjon vellukka';
+$lang['Create'] = 'Opprett';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Opprett mappa "%s" i rotmappa for din Piwigo-installasjon';
+$lang['Create this site'] = 'Opprett denne nettsida';
+$lang['Crop'] = 'Kutt';
+$lang['Current name'] = 'Noverande namn';
+$lang['Database'] = 'Dataase';
+$lang['Database synchronization with files'] = 'Synkroniser database med filer';
+$lang['Date'] = 'Dato';
+$lang['Day'] = 'Dag';
+$lang['Deactivate'] = 'Deaktiver';
+$lang['Deactivate all'] = 'Deaktiver alt';
+$lang['Default comments order'] = 'Standard rekkefylgje for kommentarar';
+$lang['Default display'] = 'Standard vising';
+$lang['Default photos order'] = 'Standard bilet-rekkefylgje';
+$lang['Default user cannot be deleted'] = 'Standardbrukar kan ikkje slettast';
+$lang['Default user does not exist'] = 'Standarbrukar finst ikkje';
+$lang['Delete Representant'] = 'Fjern miniatyrbilete for album';
+$lang['Delete orphan tags'] = 'Slett stikkord som ikkje høyrer til noko bilete';
+$lang['Delete selected photos'] = 'Slett valde bilete';
+$lang['Delete selected tags'] = 'Slett valde stikkord';
+$lang['Delete selected users'] = 'Slett valde brukarar';
+$lang['Delete this language'] = 'Slette dett språket';
+$lang['Delete this theme'] = 'Slett dette temaet';
+$lang['Deleted on'] = 'Sletta';
+$lang['Deletions'] = 'Slettingar';
+$lang['Deny selected groups'] = 'Avvis valde grupper';
+$lang['Deny selected users'] = 'Avvis valde brukarar';
+$lang['Description'] = 'Skildring';
+$lang['Detailed informations'] = 'Detaljera informasjon';
+$lang['Directory'] = 'Mappe';
+$lang['Directory does not exist'] = 'Mappe finst ikkje';
+$lang['Discover album:'] = 'Oppdag album:';
+$lang['Display options'] = 'Visingsinnstillingar';
+$lang['Dissociate from album'] = 'Frikople frå album';
+$lang['Dissociated'] = 'Frikobla';
+$lang['Do you want to activate anyway?'] = 'Ynskjer du å aktivere likevel?';
+$lang['Documentation'] = 'Dokumentasjon';
+$lang['Does not represent'] = 'er ikkje miniatyrbilete for';
+$lang['Download,'] = 'Last ned,';
+$lang['Downloads'] = 'Nedlastingar';
+$lang['Drag to re-order'] = 'Klikk-og-dra for å endre rekkefylgje';
+$lang['Drop into album'] = 'Vel eit album';
+$lang['Dump Database'] = 'Dump database';
+$lang['Duplicate'] = 'Dupliser';
+$lang['IP'] = 'IP';
+$lang['Ignore All'] = 'Ignorer alt';
+$lang['Ignore this update'] = 'Ignorer denne oppdateringa';
+$lang['Image Quality'] = 'Biletkvalitet';
+$lang['Image id'] = 'Bilde-ID';
+$lang['Hello'] = 'Hei';
+$lang['Hello,'] = 'Hei,';
+$lang['Help Me'] = 'Hjelp meg';
+$lang['Hide'] = 'Gøym';
+$lang['High definition'] = 'Høg oppløysing';
+$lang['High definition enabled'] = 'Høg oppløysing aktivera';
+$lang['History'] = 'Historie';
+$lang['Hit'] = 'Treff';
+$lang['Hour'] = 'Time';
+$lang['Graphics Library'] = 'Grafikk-bibliotek';
+$lang['Group'] = 'Gruppe';
+$lang['Group management'] = 'Gruppe-handtering';
+$lang['Group name'] = 'Gruppenamn';
+$lang['Groups'] = 'Grupper';
+$lang['Groups and users'] = 'Grupper og brukarar';
+$lang['Guest Settings'] = 'Innstillingar for gjester';
+$lang['Guest cannot be deleted'] = 'Gjest kan ikkje slettast';
+$lang['Guests'] = 'Gjester';
+$lang['Height'] = 'Høgde';
+$lang['Forbid this language to users'] = 'Gjer dette språket utilgjengeleg for brukarar';
+$lang['Forbid this theme to users'] = 'Gjer dette temaet utilgjengeleg for brukarar';
+$lang['Forbidden'] = 'Utilgjengeleg';
+$lang['Form'] = 'Frå';
+$lang['GD library is missing'] = 'GD-bibliotek manglar';
+$lang['GD version'] = 'GD-versjon';
+$lang['Gallery title'] = 'Galleritittel';
+$lang['Gallery unlocked'] = 'Galleriet låst opp';
+$lang['General statistics'] = 'Galleri-statistikk';
+$lang['Get Support on Piwigo Forum'] = 'Få brukarstøtte på Piwigo-forum';
+$lang['Go to'] = 'Gå til';
+$lang['Go to %s or %s for more informations'] = 'Gå til %s eller %s for meir informasjon';
+$lang['Error on file "%s" : %s'] = 'Feil i fil "%s": %s';
+$lang['Error when sending email to %s [%s].'] = 'Feil ved sending av e-post til %s [%s].';
+$lang['Errors caption'] = 'Feilforklaring';
+$lang['Everybody'] = 'Alle';
+$lang['Extend for templates'] = 'Utvid malar';
+$lang['Extensions Update'] = 'Oppdatering av tilleggsmodular';
+$lang['FTP + Synchronization'] = 'FTP + synkronisering';
+$lang['Failed to write file to disk'] = 'Feil ved skriving av fil til disk';
+$lang['File'] = 'Fil';
+$lang['File upload stopped by extension'] = 'Opplasting av fil stoppa av utvidelse';
+$lang['File/directory read error'] = 'Lesefeil for fil/mappe';
+$lang['Find a new representant by random'] = 'Finn eit nytt tilfeldig miniatyrbilere for album';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Fylgjande tilleggsprogram er kanskje ikkje kompatibl med den nye versjonen av Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Fylgjande tema er kanskje ikke kompatible med den nye versjonen av Piwigo:';
+$lang['Duplicate selected tags'] = 'Dupliser valde stikkord';
+$lang['Duplicates'] = 'Duplikat';
+$lang['ERROR'] = 'FEIL';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEIL: DETTE TILLEGGSPROGRAMMET MANGLAR, MEN ER INSTALLERA! AVINSTALLER NÅ.';
+$lang['Edit album'] = 'Endre album';
+$lang['Edit album permissions'] = 'Endre ablumtilgang';
+$lang['Edit photo'] = 'Endre bilete';
+$lang['Edit photo information'] = 'Endre biletinformasjon';
+$lang['Edit ranks'] = 'Endre rangering';
+$lang['Edit selected tags'] = 'Endre valde stikkord';
+$lang['Edit tags'] = 'Endre stikkord';
+$lang['Element'] = 'Element';
+$lang['Element type'] = 'Element-type';
+$lang['Email administrators when a comment is deleted'] = 'Send e-post til administratorar når ein kommentar er sletta';
+$lang['Email administrators when a comment is modified'] = 'Send e-post til administratorar når ein kommentar er endra';
+$lang['Email admins when a comment requires validation'] = 'Send e-post til adminstratorar når ein kommentar treng validering';
+$lang['Email admins when a new user registers'] = 'Send e-post til administratorar når ein ny brukar er registrera';
+$lang['Email admins when a valid comment is entered'] = 'Send e-post til administratorar når ein gyldig kommentar er lagt til';
+$lang['Environment'] = 'Miljø';
+$lang['Error list'] = 'Liste med feil';
+$lang['New photos added'] = 'Nye bilete lagt til';
+$lang['New photos were added'] = 'Nye bilete bilete er lagt til';
+$lang['New tag'] = 'Nytt stikkord';
+$lang['No file was uploaded'] = 'Ingen fil vart lasta opp';
+$lang['No group is permitted to see this private album'] = 'Ingen gruppe har løyve til å sjå dette private albumet';
+$lang['No mail to send.'] = 'Ingen e-post å sende';
+$lang['No members to manage'] = 'Ingen medlemer å handtere';
+$lang['No order field selected'] = 'Ikkje noko sorteringsfelt er vald';
+$lang['No photo can be deleted'] = 'Ingen bilete kan slettast';
+$lang['No photo in the current set.'] = 'Ingen bilete i gjeldande samling';
+$lang['No photo in this album'] = 'Ingen bilete i dette albumet';
+$lang['No photo selected, %d photos in current set'] = 'Ingen bilete vald, %d bilete i gjeldande samling';
+$lang['No photo selected, no action possible.'] = 'Ingen bilete vald, ingen handling er mogleg.';
+$lang['No results'] = 'Ingen resultat';
+$lang['No user to send notifications by mail.'] = 'Ingen brukar som kan informerast via e-post.';
+$lang['None'] = 'Ingen';
+$lang['Number of albums per page'] = 'Antal ablum pr. side';
+$lang['Number of comments per page'] = 'Antal kommentarar pr. side';
+$lang['Number of downloads'] = 'Antal nedlastingar';
+$lang['Number of rates'] = 'Antal rangeringar';
+$lang['Number of thumbnails to create'] = 'Antal miniatyrbilete som skal opprettast';
+$lang['Only private albums are listed'] = 'Bare private album er lista opp';
+$lang['Operating system'] = 'Operativsystem';
+$lang['Options'] = 'Innstillingar';
+$lang['Original Size'] = 'Original størrelse';
+$lang['Original file : %s'] = 'Original fil: %s';
+$lang['Original templates'] = 'Originale malar';
+$lang['Orphan tags deleted'] = 'Stikkord som ikkje høyrer til noko bilete er sletta';
+$lang['Other plugins'] = 'Andre tilleggsprogram er tilgjengeleg';
+$lang['Other private albums'] = 'Andre private album';
+$lang['Overall'] = 'Oversikt';
+$lang['Page banner'] = 'Side-banner';
+$lang['Page end'] = 'Sideslutt';
+$lang['Pages seen'] = 'Sider vist';
+$lang['Panorama'] = 'Panorama';
+$lang['Parameter'] = 'Innstillingar';
+$lang['Parameters'] = 'Parametrar';
+$lang['Parent album'] = 'Foreldrealbum';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Stadfesting av passord manglar. Skriv inn stadfesting av passord.';
+$lang['Password is missing. Please enter the password.'] = 'Passord manglar. Skriv inn eit passord.';
+$lang['Path'] = 'Sti';
+$lang['Pending Comments'] = 'Ventande kommentarar';
+$lang['Permalink'] = 'Permalenke';
+$lang['Permalink %s is already used by album %s'] = 'Permalenke %s er allereie i bruk av album %s';
+$lang['Permalink history'] = 'Permalenke-historikk';
+$lang['Piwigo for Android'] = 'Piwigo for Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)';
+$lang['Posted %s on %s'] = 'Lagt til %s %s';
+$lang['Permalinks'] = 'Permalenker';
+$lang['Permission denied'] = 'Du har ikkje løyve';
+$lang['Permission granted'] = 'Løyve gjeve';
+$lang['Permission granted for groups'] = 'Løyve gjeve for grupper';
+$lang['Permission granted for users'] = 'Løyve gjeve for brukarar';
+$lang['Permission granted thanks to a group'] = 'Løyve gjeve på grunn av gruppmedlemskap';
+$lang['Permission management'] = 'Handtering av løyve';
+$lang['Permissions'] = 'Løyve';
+$lang['Photo %s of %s'] = 'Bilete %s av %s';
+$lang['Photo informations updated'] = 'Biletinformasjon er oppdatera';
+$lang['Photo Page'] = 'Biletside';
+$lang['Photo Properties'] = 'Eigenskapar for bilete';
+$lang['Photo name'] = 'Namn på bilete';
+$lang['Photos'] = 'Bilete';
+$lang['Piwigo Administration'] = 'Piwigo adminstrasjon';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish-tilleggsprogram for Lightroom';
+$lang['Piwigo Update'] = 'Oppdatering av Piwido';
+$lang['Piwigo configuration'] = 'Konfigurering av Piwigo';
+$lang['Piwigo version'] = 'Piwigo-versjon';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Sjekk mappe for tilleggsprogram og undermapper for tilgangsløyve (CHMOD)';
+$lang['Please select at least two groups'] = 'Vel minst to grupper';
+$lang['Please wait...'] = 'Vent...';
+$lang['Plugin has been successfully copied'] = 'Tilleggsprogrammet vart kopiera';
+$lang['Plugin list'] = 'Liste med tilleggsprogram';
+$lang['Plugins'] = 'Tilleggsprogram';
+$lang['Plugins which need upgrade'] = 'Tilleggsprogram som skal oppgraderast';
+$lang['Portrait'] = 'Portrett';
+$lang['Position'] = 'Posisjon';
+$lang['Private'] = 'Privat';
+$lang['Properties'] = 'Eigenskapar';
+$lang['Public'] = 'Offentleg';
+$lang['Public / Private'] = 'Offentleg / Privat';
+$lang['Purge compiled templates'] = 'Fjern kompilera malar';
+$lang['Purge history detail'] = 'Fjern historikk-detaljar';
+$lang['Purge history summary'] = 'Fjern historikk-summering';
+$lang['Purge never used notification feeds'] = 'Fjern informasjons-matingar som ikkje har vore bruka';
+$lang['Purge search history'] = 'Fjern søkehistorikk';
+$lang['Purge sessions'] = 'Fjern sesjonar';
+$lang['Purge user cache'] = 'Fjern mellomlagring for brukar';
+$lang['Quick Local Synchronization'] = 'Rask lokal synkronisering';
+$lang['Random photo'] = 'Tilfeldig bilete';
+$lang['Rate'] = 'Ranger';
+$lang['Rating'] = 'Rangering';
+$lang['Rating by guests'] = 'Rangera av gjester';
+$lang['Read Piwigo Documentation'] = 'Les dokumentasjon for Piwigo';
+$lang['Refresh'] = 'Oppfrisk';
+$lang['Refresh photo set'] = 'Oppfrisk biletsamling';
+$lang['Reject'] = 'Avvis';
+$lang['Remove all filters'] = 'Fjern alle filter';
+$lang['Remove from caddie'] = 'Fjern frå "caddie"';
+$lang['Rename'] = 'Gje nytt namn';
+$lang['Repair and optimize database'] = 'Reparer og optimaliser databasen';
+$lang['Representant'] = 'Miniatyrbilete for album';
+$lang['Representation of albums'] = 'Miniatyrbilete for album';
+$lang['Representative'] = 'Miniatyrbilete for album';
+$lang['Represents'] = 'Er miniatyrbilete for';
+$lang['Reset ignored updates'] = 'Nullstill ignorera oppdateringar';
+$lang['Resize'] = 'Skaler';
+$lang['Resize after upload'] = 'Skaler etter opplasting';
+$lang['Restore'] = 'Set tilbake';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Set tilbake til standardkonfigurasjon. Du vil miste innstillingar for tilleggsprogram';
+$lang['Save Settings'] = 'Lagre innstillingar';
+$lang['Save Template Directory'] = 'Lagre mal-mappe';
+$lang['Save manual order'] = 'Lagre manuell sortering';
+$lang['Save order'] = 'Lagre sortering';
+$lang['Save to permalink history'] = 'Lagre til historikk for permalenker';
+$lang['Search for new images in the directories'] = 'Søk etter nye bilete i mappene';
+$lang['Searching...'] = 'Søker...';
+$lang['Section'] = 'Seksjon';
+$lang['See you soon,'] = 'Ser deg snart,';
+$lang['See you soon.'] = 'Ser deg snart.';
+$lang['Select a file'] = 'Vel ei fil';
+$lang['Select an album'] = 'Vel eit ablum';
+$lang['Select at least one album'] = 'Vel minst eitt album';
+$lang['Select at least one comment'] = 'Vel minst ein kommentar';
+$lang['Select at least one photo'] = 'Vel minst eitt bilete';
+$lang['Select at least one user'] = 'Vel minst ein brukar';
+$lang['Select at least two tags for merging'] = 'Vel minst to stikkord for fletting';
+$lang['Select files'] = 'Vel filer';
+$lang['Select groups...'] = 'Vel grupper...';
+$lang['Select recipients'] = 'Vel mottakarar';
+$lang['Select the destination tag'] = 'Vel mål-stikkord';
+$lang['Select users...'] = 'vel brukarar...';
+$lang['Select:'] = 'Vel:';
+$lang['Selection'] = 'Utval';
+$lang['Send'] = 'Send';
+$lang['Send an information email to group members'] = 'Send informasjon på e-post til ei gruppe medlemer';
+$lang['Send connection settings by email'] = 'Send innloggings-instillingar på e-post';
+$lang['Send mail as'] = 'Send e-post som';
+$lang['Send mail on HTML format'] = 'Send e-post i HTML-format';
+$lang['Send mail to users'] = 'Send e-post til brukarar';
+$lang['Settings'] = 'Instillingar';
+$lang['Sharpen'] = 'Oppskarping';
+$lang['Show info'] = 'Vis informasjon';
+$lang['Show menubar'] = 'Vis menyline';
+$lang['Simulation'] = 'Simulering';
+$lang['Site manager'] = 'Nettstadsadministrator';
+$lang['Some themes and plugins may be not available yet.'] = 'Nokre tema og tilleggsprogram er kanskje ikkje tilgjengelege nå.';
+$lang['Some upgrades are available for extensions.'] = 'Oppgraderingar er tilgjengelege for tilleggsmodular';
+$lang['Start Upload'] = 'Start opplasting';
+$lang['Start pLoader and add your photos.'] = 'Start pLoader og legg til dine bilete.';
+$lang['Statistics'] = 'Statistikk';
+$lang['Status'] = 'Status';
+$lang['Status of user "%s" updated'] = 'Status for brukar "%s" er oppdatera';
+$lang['Subscribe'] = 'Abonner';
+$lang['Subscribe %s'] = 'Abonner %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonner %s på Piwigo annonserings-nyheitsbrev';
+$lang['Summary'] = 'Summering';
+$lang['Support'] = 'Støtte';
+$lang['Synchronize'] = 'Synkroniser';
+$lang['Synchronize metadata'] = 'Synkroniser metadata';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE TILLEGGSPROGRAMMET ER NÅ EIN DEL AV KJERNA I PIWIGO! AVINNSTALLER DET NÅ!';
+$lang['Tag "%s" already exists'] = 'Stikkordet "%s" finst allereie';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Stikkordet "%s" er nå duplikat av "%s"';
+$lang['Tag "%s" was added'] = 'Stikkordet "%s" er lagt til';
+$lang['Tag selection'] = 'Val av stikkord';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Stikkord <em>%s</em> fletta saman med stikkordet <em>%s</em>';
+$lang['Templates'] = 'Malar';
+$lang['The following tag was deleted'] = 'Desse stikkorda vart sletta';
+$lang['The gallery URL is not valid.'] = 'URL til galleriet er ikkje gyldig';
+$lang['The name of an album must not be empty'] = 'Namnet til eit album kan ikkje vera tomt';
+$lang['Virtual album'] = 'Virtuelt album';
+$lang['Virtual album added'] = 'Virtuelt album er lagt til';
+$lang['Virtual album deleted'] = 'Virtuelt album er sletta';
+$lang['Virtual album name'] = 'Namn på virtuelt ablum';
+$lang['Virtual albums to move'] = 'Virtuelle ablum som skal flyttast';
+$lang['Visit Gallery'] = 'Besøk galleriet';
+$lang['Visit Piwigo project website'] = 'Besøk nettstaden til Piwigo-prosjektet';
+$lang['Visit language site'] = 'Gå til språksida';
+$lang['Visit plugin site'] = 'Gå til sida for tilleggsprogram';
+$lang['Visit theme site'] = 'Gå til sida for tema';
+$lang['Visited %d times'] = 'Besøkt %d gonger';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'VARSEL! Dette tilleggsprogrammet ser ikkje ut til å vera kompatibel med denne versjonen av Piwigo.';
+$lang['Waiting'] = 'Ventande';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Varsel: ';
+$lang['Watermark'] = 'Vassmerke';
+$lang['Web Form'] = 'Web-skjema';
+$lang['Webmaster cannot be deleted'] = 'Webmaster kan ikkje fjernast';
+$lang['Webmaster status is required.'] = 'Webmaster-status er påkrevd';
+$lang['Upload Photos'] = 'Last opp bilete';
+$lang['Uploaded Photos'] = 'Opplasta bilete';
+$lang['User'] = 'Brukar';
+$lang['User "%s" created with "%s" like password'] = 'Brukar "%s" oppretta med "%s" som passord';
+$lang['User %s [%s] added.'] = 'Brukar %s [%s] er lagt til';
+$lang['User %s [%s] was added to the subscription list.'] = 'Brukar %s [%s] lagt til som abonnent.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Brukar %s [%s] er ikkje lagt til som abonnent.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Brukar %s [%s] er ikkje fjerna som abonnent.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Brukar %s [%s] fjerna som abonnent.';
+$lang['User comments validation'] = 'Validering av kommentar frå brukar';
+$lang['User list'] = 'Brukarliste';
+$lang['User status'] = 'Brukarstatus';
+$lang['Users'] = 'Brukarar';
+$lang['Validate'] = 'Valider';
+$lang['Validation'] = 'Validering';
+$lang['Version'] = 'Versjon';
+$lang['View in gallery'] = 'Vis i galleriet';
+$lang['Virtual Links'] = 'Virutelle lenker';
+$lang['Who can see this photo?'] = 'Kven kan sjå dette biletet?';
+$lang['Width'] = 'Breidde';
+$lang['With blank value, gallery title will be used'] = 'Om tomt, galleriets tittel vil bli bruka';
+$lang['With no album'] = 'Utan ablum';
+$lang['With no tag'] = 'Utan stikkord';
+$lang['With no virtual album'] = 'Utan virutelt album';
+$lang['X Position'] = 'X posisjon';
+$lang['X Repeat'] = 'X repetering';
+$lang['Y Position'] = 'Y posisjon';
+$lang['Year'] = 'År';
+$lang['You are running the latest version of Piwigo.'] = 'Du køyrer siste versjon av Piwigo.';
+$lang['You cannot delete your account'] = 'Du kan ikkje slette din konto';
+$lang['You cannot move an album in its own sub album'] = 'Du kan ikkje flytte eit album til sitt eige underalbum';
+$lang['You have %d orphan tags: %s.'] = 'Du har %d stikkord som ikkje høyrer til bilete: %s.';
+$lang['Zoom'] = 'Zoom';
+$lang['add a new watermark'] = 'legg til nytt vassmerke';
+$lang['add new photos to caddie'] = 'legg nye bilete til "caddie"';
+$lang['added'] = 'lagt til';
+$lang['administrators'] = 'administratorar';
+$lang['albums added in the database'] = 'album lagt til i databasen';
+$lang['any visitor can see this album'] = 'all gjester kan sjå dette ablumet';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'dikiKam er eit avansera fritt digital bilethandteringsprogram for Linux, Windows og Mac OSX';
+$lang['even already synchronized photos'] = 'og allereie synkronisera bilete';
+$lang['for the file format'] = 'for dette filformatet';
+$lang['for this file format'] = 'for denne filas format';
+$lang['global mode'] = 'globalmodus';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standard bilethandsamar på Mac OSX. Piwigo eksport tilleggsprogram let deg oppretta nye album og eksportere dine bilete direkte frå iPhoto til ditt Piwigo biletgalleri';
+$lang['leave'] = 'ingen endring';
+$lang['on the %d selected photos'] = 'på desse %s valde bileta';
+$lang['ranks'] = 'rangering';
+$lang['registration date'] = 'registreringsdato';
+$lang['remove creation date'] = 'fjern opprettingsdato';
+$lang['set to'] = 'sett til';
+$lang['simple visitors'] = 'enkle besøkande';
+$lang['singly represented'] = 'fiksa miniatyrbilete';
+$lang['synchronize files metadata with database photos informations'] = 'syknroniser bileta i databasen med metadata i filene';
+$lang['test this remote site'] = 'test denne nettstaden';
+$lang['unset'] = 'nullstill';
+$lang['update the database from files'] = 'oppdater databasen med filene';
+$lang['An error has occured during upgrade.'] = 'Det oppstod ein feil under oppgraderinga.';
+$lang['An error occured during extraction (%s).'] = 'Det oppstod ein feil under utpakking av filene (%s).';
+$lang['An information email was sent to group "%s"'] = 'E-post med informasjon er sendt til gruppe "%s"';
+$lang['Apply to sub-albums'] = 'Gjer gjeldande for underalbum';
+$lang['Apply watermark if height is bigger than'] = 'Legg til vassmerke om høgda er større enn';
+$lang['Apply watermark if width is bigger than'] = 'Legg til vassmerke om breidda er større enn';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Fila eller mappa kan ikkje nåast (den finst ikkje eller tilgang er nekta)';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Talet på kommentarar på ei side må vera mellom 5 og 50.';
+$lang['The original image quality must be a number between %d and %d'] = 'Kvalitet på originalbilete må vera eit tal mellom %d og %d';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo greier ikkje hente oppgraderingsfile frå tenaren';
+$lang['Ratio'] = 'Storleiksforhold';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery-klient for Android) er eit åpent kjeldekodeprogram (GPL v3) - ein Piwigo-klient for Android-plattforma.';
+$lang['Bound Theme'] = 'Bunden mal';
+$lang['Continue processing treatment'] = 'Fortsett handsaming som er igang';
+$lang['Delete multiple size images'] = 'Slett multistørrelse bilete';
+$lang['Hoverbox display'] = 'Hoverbox-vising';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Dersom du opplever problem eller har spørsmål, kan du sende ei melding til';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Dette temaet kan ikkje aktiverast avdi foreldretemaet manglar: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Kan ikkje deaktivere dette språket. Du må seta eit anna språk som standardspråk.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Kan ikkje deaktivere dette språket. Minst eit språk må vera aktivera.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Kan ikkje deaktivere dette temaet. Minst eit tema må vera aktivera.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Dette temaet kan ikkje slettast avdi andre tema er avhengig av dette: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I php.ini fila di er upload_max_filesize (%sB) større enn post_max_size (%sB). Du bør endre denne innstillinga.';
+$lang['Include display of recent photos grouped by dates'] = 'Inkluder vising av nye bilete gruppera etter dato';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluder historikk (Varsel: serverminne-grense kan verta overskriden)';
+$lang['Information data registered in database'] = 'Informasjonsdata lagra i databasen';
+$lang['Obsolete Plugins'] = 'For gamle tilleggsprogram';
+$lang['Operation in progress'] = 'Handsaming er igang.';
+$lang['Preferences'] = 'Innstillingar';
+$lang['Released on'] = 'Utgeven';
+$lang['Remote'] = 'Fjern';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Du har starta abbonnement på varsling via e-post.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Du har avlsutta abbonnement på varsling via e-post.';
+$lang['You need to confirm deletion'] = 'Du må stadfeste slettinga';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Du bør oppgradere systemet ditt for å få full nytte av applikasjonen, elles vil applikasjonen ha feil eller ikkje virke i det heile.';
+$lang['[%s] Visit album %s'] = '[%s] Gjest album %s';
+$lang['custom'] = 'Tilpassa';
+$lang['Replacers (customized templates)'] = 'Erstattar (tilpassa mal)';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vel eit område med musa for å definere interessesenter.';
+$lang['Set as default language for unregistered and new users'] = 'Set som standard språk for uregistrera og nye brukarar';
+$lang['Set as default theme for unregistered and new users'] = 'Set som standard mal for uregistrera og nye brukarar';
+$lang['Set author'] = 'Set fotograf';
+$lang['Set creation date'] = 'Set opprettingsdato';
+$lang['Set title'] = 'Set tittel';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell er eit åpent kjeldekodeprograme for å handtere digitale bilete på Linux. Det er standard bilethandteringsprogram i Ubuntu og Fedora.';
+$lang['Subscribe to notification by mail'] = 'Abonner på varsling via e-post';
+$lang['Subscribe/unsubscribe users'] = 'Start/avslutt abonnement for brukarar';
+$lang['Subscribed'] = 'Abonnement starta';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Abonnentar kan bli lista (tilgjengeleg) bare om der nye element å varsle om.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksport-tilleggsprogrammet gjev deg tilgang til å opprette album og eksportere bilete.';
+$lang['The anomaly will be ignored until next application version'] = 'Feilen vil bli ignorera til neste versjon av applikasjonen';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interessesenter er det viktigaste område på biletet.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Namn på permalenke kan innehalde a-z, A-Z, 0-9, "-", "_" eller "/". Den kan ikkje innehalde bare tal eller byrje med tal fylgd av "-"';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Versjonen av %s [%s] som er installera er ikkje kompatibel med den versjonen som er påkrevd [%s]';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster har starta abonnement for deg på varsling via e-post.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Du brukar nettlesaropplasting. Prøv <a href="%s">Flash-opplasting</a> istadenfor.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Du brukar Flash-opplasting. Problem? Prøv <a href="%s">nettlesaropplasting</a> istadenfor.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan laste opp til Piwigo %s direkte utan å oppgradere til Piwigo %s (tilrådd)';
+$lang['photos informations synchronized with files metadata'] = 'biletinformasjon er synkronisera med metadata for fila';
+$lang['The original maximum height must be a number between %d and %d'] = 'Største høgde på original må vera ei tal mellom %d og %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Største breidde på original må vera ei tal mellom %d og %d';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Biletstørrelse vil bli redusera til %dx%d bilepunkt.';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den opplasta file er større enn innstillinga MAX_FILE_SIZE som er spesifisera i HTML-skjemaet';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den opplasta fila er større enn innstillinga upload_max_filesize i php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Den opplasta file vart berre delvis opplasta';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den opplasta fila er større enn innstillinga post_max_size i php.ini: %sB';
+$lang['[NBM] Problems or questions'] = '[NMB] Problem eller spørsmål';
+$lang['apply automatic sort order'] = 'bruk automatisk sorteringsrekkefylgje';
+$lang['dissociate from group'] = 'koble frå gruppe';
+$lang['only perform a simulation (no change in database will be made)'] = 'gjer bare ein simuletring (ingenting vil bli endra i databasen)';
+$lang['overrides existing values with empty ones'] = 'overstyr gjeldande verdiar med tomme';
+$lang['pending validation'] = 'ventande validering';
+$lang['reduce to single existing albums'] = 'reduser til enkle eksiterande album';
+$lang['Your configuration settings are saved'] = 'Dine konfigurasjonsinnstillingar er lagra';
+$lang['You can activate only one mobile theme.'] = 'Du kan bare aktivere eit mobil-tema.';
+$lang['You might go to plugin list to install and activate it.'] = 'Gå til lista med tilleggsprogram for å installere og aktivere det.';
+$lang['Update Complete'] = 'Oppdatering ferdig';
+$lang['Update albums informations'] = 'Oppdater informasjon om album';
+$lang['Update in progress... Please wait.'] = 'Oppdatering igang... Vent.';
+$lang['Update photos information'] = 'Oppdater informasjon om bilete';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Bruk standard sorteringsrekkefylgje for bilete (definera i konfigurasjonefil)';
+$lang['Used metadata'] = 'Metadata i bruk';
+$lang['You are running on development sources, no check possible.'] = 'Du køyrer med utviklingskjeldekode, sjekk er ikkje mogleg.';
+$lang['Unable to dump database.'] = 'Greier ikkje dumpe databasen';
+$lang['Uncheck all'] = 'Velg bort alle';
+$lang['Uninstall'] = 'Avinstaller';
+$lang['Uninstalled Plugins'] = 'Avinstallera tilleggsprogram';
+$lang['Unknown upload error'] = 'Ukjend opplastingsfeil';
+$lang['Unlock gallery'] = 'Lås opp galleri';
+$lang['Unlocked'] = 'Låst opp';
+$lang['Unsubscribe from notification by mail'] = 'Avslutt abonnement på varsling via e-post';
+$lang['Unsubscribed'] = 'Abonemment avslutta';
+$lang['Update All'] = 'Oppdater alle';
+$lang['To subscribe'] = 'Start abonnement';
+$lang['To unsubscribe'] = 'Avslutt abonnement';
+$lang['Toggle \'default group\' property'] = 'Inverter \'standargruppe\'-eigenskapen';
+$lang['Tools'] = 'Verktøy';
+$lang['Two updates are available'] = 'To oppdateringar er tilgjengelege';
+$lang['Type here the author name'] = 'Skriv inn forfattarnamn';
+$lang['Type here the name of the new group'] = 'Skriv inn namn på ny gruppe';
+$lang['Type here the title'] = 'Skriv inn tittel';
+$lang['Type in a search term'] = 'Skriv inn søkeord';
+$lang['Unable to check for upgrade.'] = 'Greier ikkje sjekke for oppgraderingar.';
+$lang['This name is already used by another group.'] = 'Dette namnet er allereie i bruk av ei anna gruppe.';
+$lang['This site already exists'] = 'Denne nettsida finst allereie';
+$lang['This theme was not designed to be directly activated'] = 'Dette temaet kan ikkje aktiverast direkte';
+$lang['Thumbnail'] = 'Miniatyrbilete';
+$lang['Thumbnails generation in progress...'] = 'Oppretting av miniatyrebilete er i gang...';
+$lang['Time'] = 'Tid';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tida tilgjengeleg for å sende e-post er avgrensa. Andre e-postar er hoppa over.';
+$lang['Title'] = 'Tittel';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For å eksportere bileta dine frå digiKam til Piwigo, installer dikiKam og Kipi-tilleggsprogrammet.';
+$lang['To send ?'] = 'Send?';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster har avslutta abonnementet ditt på e-postvarsling.';
+$lang['There is no available subscribers to mail.'] = 'Det er ingen abonnentar å varsle på e-post.';
+$lang['There is no other theme available.'] = 'Ingen andre tema er tilgjengelege.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Dette albumet inneheld %d bilete lagt til mellom %s og %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Dette albumet inneheld %d bilete lagt til %s.';
+$lang['This album contains no photo.'] = 'Dette albumet inneheld ingen bilete.';
+$lang['This group will be set to default'] = 'Denne gruppa vil bli bruka som standard';
+$lang['This group will be unset to default'] = 'Denne gruppa vil ikkje lenger bli bruka som standard';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Dette er ei større oppgdatering med <a href="%s">nye spennande mogleghetar</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Dette er ei mindre oppdatering med kun opprretting av feil.';
+$lang['The whole page'] = 'Heile sida';
+$lang['The whole set'] = 'Heile samlinga';
+$lang['Theme has been successfully installed'] = 'Tema har vorte installera';
+$lang['Themes'] = 'Tema';
+$lang['Themes which need upgrade'] = 'Tema som treng oppgradering';
+$lang['There is no group in this gallery.'] = 'Det finst ingen grupper i galleriet';
+$lang['There is no other language available.'] = 'Ingen andre språk er tilgjengelege.';
+$lang['There is no other plugin available.'] = 'Ingen andre tillgeggsprogram er tilgjengelege.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Gruppenamnet kan ikkje innehalde " eller \' eller vera tomt.';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Mappenamn og filnamn kan bare innehalde bokstavar, tal, "-", "_" eller "."';
+$lang['Save visits in history for'] = 'Lagre vitjingshistorikk for';
+$lang['Source tag'] = 'Kjeldestikkord';
+$lang['Storage album'] = 'Lagringsalbum';
+$lang['Sum of rates'] = 'Sum av vurderingar';
+$lang['Switch to clear or dark colors for administration'] = 'Byt til ljos eller mørk farge for administrasjon';
+$lang['Templates configuration has been recorded.'] = 'Mal-konfigurasjon har blitt lagra';
+$lang['The %d following tags were deleted'] = 'Fylgjande %d stikkord har vorte sletta';
+$lang['Privacy level'] = 'Personvernnivå';
+$lang['Privacy level set to "%s"'] = 'Personvernnivå sett til "%s"';
+$lang['Rate date'] = 'Vurderingsgsdato';
+$lang['Rated %d times, score : %.2f'] = 'Vurdera %s gonger, skår: %.2f';
+$lang['Photos generation in progress...'] = 'Biletgenerering i gang...';
+$lang['Piwigo Uploader'] = 'Piwigo opplastar';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo tilleggsprogram for eksport frå Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo tilleggsprogram for eksport frå iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo tilleggsprogram for eksport frå Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo tilleggsprogram for eksport frå digiKam';
+$lang['Predefined filter'] = 'Førehandsdefinera filter';
+$lang['Mail address is obligatory for all users'] = 'E-postadresse er påkrevd for alle brukarar';
+$lang['Main "guest" user does not exist'] = 'Hovudbrukaren "gjest" finst ikkje';
+$lang['Main "guest" user status is incorrect'] = 'Hovudbrukaren "gjest" sin status er feil';
+$lang['Main "webmaster" user does not exist'] = 'Hovudbrukaren "webmaster" finst ikkje';
+$lang['Main "webmaster" user status is incorrect'] = 'Hovudbrukaren "webmaster" sin status er feil';
+$lang['No destination tag selected'] = 'Målstikkord er ikkje vald';
+$lang['Optimizations have been completed with some errors.'] = 'Optimalisering er gjennomførd, men med nokre feil.';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalenke %s har tidlegare vore i bruk av album %s. Du må slette den frå permalenke-historikken fyrst.';
+$lang['Photo unreachable or no support'] = 'Får ikkje tak i biletet eller bilet-typa er ikkje støtta';
+$lang['I decide to update anyway'] = 'Eg vil oppdatere likevel';
+$lang['Ignore selected anomalies'] = 'Ignorer valde feil';
+$lang['Images manual order was saved'] = 'Manuell sortering av bilete er lagra';
+$lang['Impossible automatic correction'] = 'Automatisk korrigering er ikkje mogleg';
+$lang['Exif extension not available, admin should disable exif use'] = 'EXIF-utvidelse er ikkje tilgjengeleg, administrator bør deaktivere bruk av EXIF';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Mogleghetar inkluderar å bla i galleriet, lage album og laste opp bilete.';
+$lang['Follow Orientation'] = 'Fylg orientering/retning';
+$lang['Generate multiple size images'] = 'Lag fleire størrelsar av bileta';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Gje skriverettar (chmod 777) til "%s" mappa i rotmappa i din Piwigo installasjon';
+$lang['Grant selected groups'] = 'Gje tilgang til valde grupper';
+$lang['Grant selected users'] = 'Gje tilgang til valde brukarar';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er eit kraftig verktøy for å forbetre bilete og handtere store mengder bilete på ein Mac datamaskin.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er laga for profesjonelle fotografar, men liknar iPhoto.';
+$lang['Applications'] = 'Applikasjonar';
+$lang['Authorize users to add comments on selected albums'] = 'Autoriser brukarar til å legge til kommentarar på valde album';
+$lang['Batch Manager'] = 'Jobb handterar';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard vil Piwigo lage ein ny biletstørrelse ut frå HD-versjonen (high definition) av ditt bildete.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard vil insteressesenter for biletet bli plassera i midten.';
+$lang['By rank'] = 'Etter rangering';
+$lang['Center of interest'] = 'Interessesenter';
+$lang['Check automatic corrections'] = 'Sjekk automatiske korrigeringar';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Feilen som er korrigera vil ikkje lenger bli ignorera';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For biletstørrelsar med avskjering, slik som "Firkant", vil Piwigo gjera det som er mogleg for å inkludere interessesenter.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Om ingen HD er tilgjengeleg og om gjeldande web-størrelse er større enn skaleringsdimensjonar, vil Piwigo flytte den som HD og lage ein nedskalera bilete i web-størrelse av dette.';
+$lang['Photo sizes with crop'] = 'Biletstørrelse med avskjering';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo nyheitsbrev';
+$lang['Albums authorized thanks to group associations'] = 'Album er autorisera på grunn av gruppetilknyting';
+$lang['All optimizations have been successfully completed.'] = 'Alle optimaliseringar er gjennomført.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Ein feil oppstod under utpakking. Sjekk tilgangsrettar til filer i din Piwigo-installasjon. <br /><a href="%s">Klikk her for å vise feillogg</a>.';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Er du sikker på at du vil installere denne oppgraderinga? Du må sjekke om denne versjonen ikkje treng å avinstallere tidlegare versjonar.';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Tida for å tilrettelegge lista med brukara som skal få e-post er avgrensa. Andre brukarar er ikkje med i lista.';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Erstatning av original mal med tilpassa malar frå mappe med mal-utvidingar';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publiserings-tillegg gjev deg mogleghet til å eksportere og synkronisere bilete frå Lightroom direkte til ditt Piwigo biletgalleri.';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hald kontakt med Piwigo-prosjektet, abonner på Piwigo nyheitsbrev. Du vil motta e-postar når nye versjonar er tilgjengelege (kan innehalde oppretting av sikkerheitsproblem slik at det er viktig å kjenne til oppgraderinga) og når større hendingar i prosjektet skjer. Det er bare nokre få meldingar i året.';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Eksekveringstida er overskriden, handsaminga må fortseta [Estimera tid: %d sekundar]';
+$lang['Complementary mail content'] = 'Komplementært meldingsinnhald';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Eksekveringstida er ute, handsaming må halde fram [Estimera tid: %d sekundar].';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Bare webmaster kan sjå denne fana, ikkje administratorar.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Omtrentleg største oppløysing: %dM piksel (det er %dx%d biletpunkt)';
+$lang['Numeric identifier : %d'] = 'Numerisk identifikator: %d';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I Linux-installsjonen din kan du installere Shotwell og aktivere Piwigo publserings-opsjon.';
+$lang['Reinitialize check integrity'] = 'Start integritetssjekk på nytt';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikkje definere standard biletrekkefylgje fordi du har ei tilpassa instilling i din lokal konfigurasjon.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Du har spesifisera <i>$conf[\'order_by\']</i> i di lokal konfigurasjonfil, denne parameteren er utdatera. Du må fjerne den eller endre namn til <i>$conf[\'order_by_custom\']</i> !';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er laga for fotografar som vil sjå, handtere, endre, forbetre, organisere, merke og dele bilete.';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for <em>Piwigo Uploader</em>. Frå datamaskina di kan pLoader tilrettelegge bileta dine og overføre dei til ditt Piwigo biletgalleri.';
+$lang['photos candidates for metadata synchronization'] = 'bilete som er kanditatar for synkronisering av metadata';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Endring av storleik etter opplasting er ikkje tilgjengeleg avdi GD vert bruka som grafikkbibliotek';
+$lang['Select at least one tag'] = 'Vel minst eitt nøkkelord';
+$lang['Basic settings'] = 'Grunnleggjande innstillingar';
+$lang['General'] = 'Generelt';
+$lang['Mail theme'] = 'E-posttema';
+$lang['User %s added'] = 'Brukar %s lagt til';
+$lang['User %s updated'] = 'Brukar %s er oppdatera';
+$lang['Users modified'] = 'Brukarar er endra';
+$lang['%d of %d users selected'] = '%d av %d brukarar er valde';
+$lang['(filtered from %s total users)'] = '(filtrera frå %s brukarar totalt)';
+$lang['All %d users are selected'] = 'Alle %d brukarar er valde';
+$lang['Change password'] = 'Endre passord';
+$lang['Change username'] = 'Endre brukarnamn';
+$lang['Last visit on %s, %s.'] = 'Sist vitja %s, %s.';
+$lang['Loading...'] = 'Lastar...';
+$lang['No matching user found'] = 'Ingen brukarar vart funne';
+$lang['Password updated'] = 'Passordet er endra';
+$lang['Show %s users'] = 'Vis %s brukarar';
+?>
Index: /tags/2.6.0RC1/language/nn_NO/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Norwegian nynorsk [NO]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=689
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'Norwegian nynorsk';
+$lang_info['country'] = 'Norway';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'nn';
+$lang_info['zero_plural'] = true;
+
+$lang['%d comments'] = '%d kommentarar';
+$lang['%d hit'] = '%d treff';
+$lang['%d hits'] = '%d treff';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d ny kommentar';
+$lang['%d new comments'] = '%d nye kommentarar';
+$lang['%d new photo'] = '%d nytt bilete';
+$lang['%d new photos'] = '%d nye bilete';
+$lang['%d new user'] = '%d ny brukar';
+$lang['%d new users'] = '%d nye brukarar';
+$lang['Date'] = 'Dato';
+$lang['day'][0] = 'Sundag';
+$lang['day'][1] = 'Måndag';
+$lang['day'][2] = 'Tysdag';
+$lang['day'][3] = 'Onsdag';
+$lang['day'][4] = 'Torsdag';
+$lang['day'][5] = 'Fredag';
+$lang['day'][6] = 'Laurdag';
+$lang['month'][10] = 'Oktober';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'Desember';
+$lang['month'][1] = 'Januar';
+$lang['month'][2] = 'Februar';
+$lang['month'][3] = 'Mars';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'June';
+$lang['month'][7] = 'Juli';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['I want to add photos'] = 'Eg ynskjer å legge til bilete';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'IPTC Medadata';
+$lang['Keyword'] = 'Nøkkelord';
+$lang['Customize'] = 'Mine instillingar';
+$lang['Expand all albums'] = 'Utvid album';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hei %s, ditt Piwigo biletgalleri er tomt!';
+$lang['Connection settings'] = 'Innstillingar for pålogging';
+$lang['Contact'] = 'Kontakt';
+$lang['Contact webmaster'] = 'Kontakt webmaster';
+$lang['Create a new account'] = 'Lag ny brukar';
+$lang['Created on'] = 'Oppretta';
+$lang['Creation date'] = 'Oppretta dato';
+$lang['Current password is wrong'] = 'Passordet er feil';
+$lang['Registration'] = 'Registrering';
+$lang['Registration of %s'] = 'Registrering av %s';
+$lang['Rating score'] = 'Rangering';
+$lang['Rating score, high &rarr; low'] = 'Rangering, høg &rarr; låg';
+$lang['Rating score, low &rarr; high'] = 'Rangering, låg &rarr; høg';
+$lang['Update your rating'] = 'Oppdater din rangering';
+$lang['%d rate'] = '%d rangering';
+$lang['%d rates'] = '%d rangeringar';
+$lang['Best rated'] = 'Best rangering';
+$lang['Page generated in'] = 'Sida bygd på';
+$lang['Rate this photo'] = 'Ranger dette bilete';
+$lang['no rate'] = 'ingen rangering';
+$lang['Sort by'] = 'Sorter etter';
+$lang['Submit'] = 'Send';
+$lang['Sent by'] = 'Sendt av';
+$lang['Show latest comments first'] = 'Vis siste kommentarar fyrst';
+$lang['Show number of comments'] = 'Vis antal kommentarar';
+$lang['Show number of hits'] = 'Vis antal treff';
+$lang['Show oldest comments first'] = 'Vis eldste kommentarar fyrst';
+$lang['Since'] = 'Sidan';
+$lang['Tag'] = 'Stikkord';
+$lang['Tag results for'] = 'Stikkord for';
+$lang['Tags'] = 'Stikkord';
+$lang['Thank you for registering at %s!'] = 'Takk for at du registrera deg på %s!';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet er stengd for vedlikehald. Prøv litt seinare.';
+$lang['The passwords do not match'] = 'Passorda er ikkje like';
+$lang['Thumbnails'] = 'Miniatyrbilete';
+$lang['User comments'] = 'Brukarkommentarar';
+$lang['User: %s'] = 'Brukar: %s';
+$lang['Username'] = 'Brukarnamn';
+$lang['Username "%s" on gallery %s'] = 'Brukarnamn "%s" i galleri %s';
+$lang['Username is mandatory'] = 'Brukarnamn er påkrevd';
+$lang['Username modification'] = 'Endre brukarnamn';
+$lang['Username or email'] = 'Brukarnamn eller e-post';
+$lang['Username: %s'] = 'Brukarnamn: %s';
+$lang['View'] = 'Vis';
+$lang['View in'] = 'Vis i';
+$lang['Visits'] = 'Visnngar';
+$lang['Visits, high &rarr; low'] = 'Visingar, mange &rarr; få';
+$lang['Visits, low &rarr; high'] = 'Visingar, få &rarr; mange';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Website'] = 'Nettstad';
+$lang['Week %d'] = 'Veke %d';
+$lang['Welcome'] = 'Velkomen';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Velkomen til ditt Piwigo biletgalleri!';
+$lang['Yes'] = 'Ja';
+$lang['You are not authorized to access the requested page'] = 'Du har ikkje tilgang til å sjå denne sida';
+$lang['Your comment has been registered'] = 'Kommentaren din er registrera';
+$lang['Your favorites'] = 'Mine favorittar';
+$lang['Your password has been reset'] = 'Passordet er nullstilt';
+$lang['add this photo to your favorites'] = 'legg dette bilete til favorittliste';
+$lang['customize the appareance of the gallery'] = 'tilpass utsjånad av galleriet';
+$lang['delete all photos from your favorites'] = 'fjern alle bilete frå favorittliste';
+$lang['delete this photo from your favorites'] = 'fjern dette biletet frå favorittliste';
+$lang['all'] = 'alle';
+$lang['ascending'] = 'stigande';
+$lang['author(s) : %s'] = 'fotograf: %s';
+$lang['available for administrators only'] = 'kun tilgjengeleg for administrator';
+$lang['chronology_monthly_calendar'] = 'Månadskalender';
+$lang['chronology_monthly_list'] = 'Månadsliste';
+$lang['chronology_weekly_list'] = 'Vekeliste';
+$lang['cloud'] = 'sky';
+$lang['comment date'] = 'kommentardato';
+$lang['created after %s (%s)'] = 'oppretta etter %s (%s)';
+$lang['created before %s (%s)'] = 'oppretta før %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'oppretta mellom %s (%s) og %s (%s)';
+$lang['created on %s'] = 'oppretta %s';
+$lang['descending'] = 'synkande';
+$lang['display a set of random photos'] = 'vis tilfeldige bilete';
+$lang['display all photos in all sub-albums'] = 'vis alle bilete i underalbum';
+$lang['display available tags'] = 'vis tilgjengelege stikkord';
+$lang['display best rated photos'] = 'vis best rangera bilete';
+$lang['display last user comments'] = 'vis siste brukarkommentarar';
+$lang['display most recent photos'] = 'vis nye bilete';
+$lang['display most visited photos'] = 'vis mest viste bilete';
+$lang['display only recently posted photos'] = 'vis bare bilete nyleg lagt til';
+$lang['display photos linked to this tag'] = 'vis bilete knytt til dette stikkordet';
+$lang['display recently updated albums'] = 'vis nyleg oppdatera album';
+$lang['display this album'] = 'vis dette albumet';
+$lang['display your favorites photos'] = 'vis dine favorittbilete';
+$lang['edit'] = 'endre';
+$lang['excluded'] = 'ekskludera';
+$lang['from %s to %s'] = 'frå %s til %s';
+$lang['group by letters'] = 'grupper på bokstav';
+$lang['guest'] = 'gjest';
+$lang['html tags are not allowed in login'] = 'html-taggar er ikkje lov i brukarnavn';
+$lang['in %d sub-album'] = 'i %d underalbum';
+$lang['in %d sub-albums'] = 'i %d underalbum';
+$lang['searched words : %s'] = 'søkte ord: %s';
+$lang['this login is already used'] = 'dette brukarnamnet er allereie i bruk';
+$lang['in this album'] = 'i dette albumet';
+$lang['included'] = 'inkludera';
+$lang['large'] = 'L - stort';
+$lang['last %d days'] = 'siste %d dagar';
+$lang['letters'] = 'bokstavar';
+$lang['login mustn\'t end with a space character'] = 'brukarnamn kan ikke avsluttast med mellomrom';
+$lang['login mustn\'t start with a space character'] = 'brukarnamn kan ikkje starte med mellomrom';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-postadresse må vera på formen xxx@yyy.eee (døme: user@example.org)';
+$lang['mandatory'] = 'påkrevd';
+$lang['medium'] = 'M - middels stor';
+$lang['obligatory'] = 'påkrevd';
+$lang['password updated'] = 'passordet er oppdatera';
+$lang['photo'] = 'bilete';
+$lang['photos posted during the last %d days'] = 'bilete lagt inn dei siste %d dagane';
+$lang['posted after %s (%s)'] = 'lagt til etter %s (%s)';
+$lang['posted before %s (%s)'] = 'lagt til før %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'lagt til mellom %s (%s) og %s (%s)';
+$lang['posted on %s'] = 'lagt til %s';
+$lang['remove this tag from the list'] = 'slett dette stikkordet frå lista';
+$lang['representative'] = 'miniatyrbilete for album';
+$lang['return to normal view mode'] = 'attende til normalvisning';
+$lang['return to the display of all photos'] = 'attende til å vise alle bilete';
+$lang['set as album representative'] = 'set som miniatyrbilete for album';
+$lang['show tag cloud'] = 'vis stikkordsky';
+$lang['the username must be given'] = 'brukarnamn er påkrevd';
+$lang['this email address is already in use'] = 'denne e-postadressa er allereie i bruk';
+$lang['thumb'] = 'Miniatyrbilete';
+$lang['useful when password forgotten'] = 'nyttig om du gløymer passorder';
+$lang['search'] = 'søk';
+$lang['slideshow'] = 'biletvisning';
+$lang['small'] = 'S - lite';
+$lang['square'] = 'Firkant';
+$lang['stop the slideshow'] = 'stopp biletvisning';
+$lang['the beginning'] = 'starten';
+$lang['today'] = 'idag';
+$lang['wrong date'] = 'feil dato';
+$lang['xlarge'] = 'XL - ekstra stor';
+$lang['xsmall'] = 'XS - ekstra lite';
+$lang['xxlarge'] = 'XXL - kjempestort';
+$lang['Play of slideshow'] = 'Start bildevisning';
+$lang['Please enter your username or email address.'] = 'Skriv inn navnet eller e-postadressa di.';
+$lang['Please, enter a login'] = 'Skriv inn brukarnavn';
+$lang['Photo sizes'] = 'Biletstørrelsar';
+$lang['Photo title, A &rarr; Z'] = 'Bilettittel, A &rarr; Å';
+$lang['Photo title, Z &rarr; A'] = 'Bilettittel, Å &rarr; A';
+$lang['Piwigo Help'] = 'Hjelp for Piwigo';
+$lang['Number of photos per page'] = 'Antal bilete pr side';
+$lang['Original'] = 'Original';
+$lang['Original dimensions'] = 'Original størrelse';
+$lang['Password'] = 'Passord';
+$lang['Password Reset'] = 'Nullstill passord';
+$lang['Password forgotten'] = 'Gløymt passord';
+$lang['Password reset is not allowed for this user'] = 'Nullstilling av passord er ikkje lov for denne brukaren';
+$lang['Password: %s'] = 'Passord: %s';
+$lang['Language'] = 'Språk';
+$lang['Last'] = 'Siste';
+$lang['Links'] = 'Lenker';
+$lang['Login'] = 'Logg inn';
+$lang['Logout'] = 'Logg ut';
+$lang['Menu'] = 'Meny';
+$lang['Mobile'] = 'Mobil';
+$lang['Most visited'] = 'Mest vist';
+$lang['N/A'] = 'N/A';
+$lang['New password'] = 'Nytt passord';
+$lang['Next'] = 'Neste';
+$lang['No'] = 'Nei';
+$lang['Notification'] = 'RSS-kanalar';
+$lang['Number of items'] = 'Antal';
+$lang['Hello %s,'] = 'Hei %s,';
+$lang['Hello'] = 'Hallo';
+$lang['Forgot your password?'] = 'Gløymt passordet?';
+$lang['Filter and display'] = 'Filtrer og vis';
+$lang['First'] = 'Fyrste';
+$lang['Filter'] = 'Filter';
+$lang['Filesize'] = 'Filstørrelse';
+$lang['File name, A &rarr; Z'] = 'Filnavn, A &rarr; Å';
+$lang['File name, Z &rarr; A'] = 'Filnavn, Å &rarr; A';
+$lang['File name'] = 'Filnavn';
+$lang['File'] = 'Fil';
+$lang['Favorites'] = 'Favorittar';
+$lang['Desktop'] = 'Skrivebord';
+$lang['Default'] = 'Standard';
+$lang['Delete'] = 'Slett';
+$lang['Dimensions'] = 'Størrelse';
+$lang['Display'] = 'Vis';
+$lang['Download'] = 'last ned';
+$lang['Download this file'] = 'Last ned denne fila';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['Edit'] = 'Endre';
+$lang['Edit a comment'] = 'Endre ein kommentar';
+$lang['Email address'] = 'E-postadresse';
+$lang['Email address is mandatory'] = 'E-postadresse er obligatorisk';
+$lang['Email address is missing. Please specify an email address.'] = 'E-postadresse manglar. Skriv inn ei e-postadresse.';
+$lang['Email: %s'] = 'E-post: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Tom spørring. Kriterie er ikkje lagt inn.';
+$lang['End-Date'] = 'Sluttdato';
+$lang['Enter your new password below.'] = 'Skriv inn nytt passord.';
+$lang['Enter your personnal informations'] = 'Legg inn personleg informasjon';
+$lang['Accelerate diaporama speed'] = 'Raskare framvising';
+$lang['Browser: %s'] = 'Nettlesar: %s';
+$lang['Close this window'] = 'Let att dette vindauget';
+$lang['Comment'] = 'Kommentar';
+$lang['Comment by %s'] = 'Kommentera av %s';
+$lang['Comment: %s'] = 'Kommentar: %s';
+$lang['Comments'] = 'Kommentarar';
+$lang['Connected user: %s'] = 'Pålogga brukar: %s';
+$lang['Are you sure?'] = 'Er du sikker?';
+$lang['Author'] = 'Fotograf';
+$lang['Author: %s'] = 'Fotograf: %s';
+$lang['Auto login'] = 'Automatisk innlogging';
+$lang['Calendar'] = 'Kalender';
+$lang['Change my password'] = 'Endre passord';
+$lang['Check your email for the confirmation link'] = 'Ein e-post med lenke for å godkjenne og stadfeste er sendt.';
+$lang['Click here if your browser does not automatically forward you'] = 'Klikk her dersom nettlesaren ikkje automatisk sender deg vidare';
+$lang['Click on the photo to see it in high definition'] = 'Klikk på biletet for å sjå det i høg oppløysing';
+$lang['2small'] = 'XXS - bitte lite';
+$lang['A comment on your site'] = 'Ein kommentar på nettsida';
+$lang['About'] = 'Om';
+$lang['About Piwigo'] = 'Om Piwigo';
+$lang['Add a comment'] = 'Legg til ein kommentar';
+$lang['Admin: %s'] = 'Administrer %s';
+$lang['Administration'] = 'Administrasjon';
+$lang['Album'] = 'Album';
+$lang['Album results for'] = 'Albumresultat for';
+$lang['Album: %s'] = 'Album %s';
+$lang['Albums'] = 'Album';
+$lang['All'] = 'Alle';
+$lang['All tags'] = 'Alle stikkord';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Ein administrator må godkjenne kommentaren din før den blir vist.';
+$lang['... or browse your empty gallery'] = '... eller bla i ditt nye galleri';
+$lang['(!) This comment requires validation'] = '(!) Denne kommentaren krev godkjenning';
+$lang['%d photos are also linked to current tags'] = '%d bilete er og knytt til desse stikkorda';
+$lang['%d photos'] = '%d bilete';
+$lang['%d photo is also linked to current tags'] = '%d bilete er og knytt til desse stikkorda';
+$lang['%d photo'] = '%d bilete';
+$lang['%d comments to validate'] = '%d kommentarar for godkjenning';
+$lang['%d comment to validate'] = '%d kommentar for godkjenning';
+$lang['%d comment'] = '%d kommentar';
+$lang['%d albums updated'] = '%d album er oppdatera';
+$lang['%d album updated'] = '%d album er oppdatera';
+$lang['Search by date'] = 'databasekall på';
+$lang['Search for Author'] = 'Søk';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Søk i stikkord';
+$lang['Search tags'] = 'Søk i stikkord';
+$lang['SQL queries in'] = 'databasekall på';
+$lang['Search'] = 'Søk';
+$lang['Specials'] = 'Biletvisingar';
+$lang['Quick connect'] = 'Pålogging';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS-kanalen gjev informasjon om nye hendingar på nettstaden: nye bilete, oppdatera album og nye kommentarar. Kan visast i ein RSS-lesar.';
+$lang['The number of photos per page must be a not null scalar'] = 'Antal bilete pr side må vera eit tal større enn null';
+$lang['This author modified following comment:'] = 'Forfattaren endra fylgjande kommentar:';
+$lang['This author removed the comment with id %d'] = 'Forfattaren fjerna kommentar med id %d';
+$lang['This login is already used by another user'] = 'Brukarnamnet er allereie i bruk av ein annan brukar';
+$lang['To reset your password, visit the following address:'] = 'For å nullstille passordet ditt, kan du gå til denne adressa:';
+$lang['Unknown feed identifier'] = 'Ukjend RSS-kanal';
+$lang['Here are your connection settings'] = 'Her er innstillingar for pålogging';
+$lang['Send my connection settings by email'] = 'Send informasjon om pålogging på e-post';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registreringa var vellukka. Du vil straks motta ein e-post med informasjon om pålogging.
+Velkommen! ';
+$lang['Unknown identifier'] = 'Ukjent biletnummer';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Brukaren "%s" har ikkje e-postadresse - nullstilling av passord er ikkje mogleg';
+$lang['You will receive a link to create a new password via email.'] = 'Du vil motta ei lenke der du kan opprette nytt passord på e-post.';
+$lang['Your Gallery Customization'] = 'Tilpass galleriet ditt';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Kommentaren din vart IKKJE registrera fordi den ikkje vart godkjend av godkjenningsreglane';
+$lang['Your username has been successfully changed to : %s'] = 'Brukarnamnet ditt vart endra til: %s';
+$lang['Your website URL is invalid'] = 'URL til nettstaden er feil';
+$lang['display a calendar by creation date'] = 'vis kalender etter dato oppretta';
+$lang['display a calendar by posted date'] = 'vis kalender etter dato lagt inn';
+$lang['display each day with photos, month per month'] = 'vis kvar dag med bilete, månad for månad';
+$lang['Repeat the slideshow'] = 'Vis bilete ommatt';
+$lang['Requested album does not exist'] = 'Albumet du ynskjer å visa finst ikkje';
+$lang['Requested tag does not exist'] = 'Stikkordet finst ikkje';
+$lang['Reset'] = 'Nullstill';
+$lang['Reset to default values'] = 'Set tilbake til standardinnstillingar';
+$lang['Retrieve password'] = 'Hent passord';
+$lang['Return to home page'] = 'Attende til startside';
+$lang['Search for all terms'] = 'Søk etter alle orda';
+$lang['Search for any term'] = 'Søk etter eitt av orda';
+$lang['Search for words'] = 'Søk etter ord';
+$lang['Search in albums'] = 'Søk i album';
+$lang['Search in sub-albums'] = 'Søk i underalbum';
+$lang['Search results'] = 'Søkeresultat';
+$lang['Search rules'] = 'Søkereglar';
+$lang['Show file metadata'] = 'Vis metadata for fila';
+$lang['Sort order'] = 'Sorteringsrekkefylgje';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo oppdaga ein feil som ikkje kan rettast opp';
+$lang['Post date'] = 'Dato lagt inn';
+$lang['Posted on'] = 'Lagt inn';
+$lang['Powered by'] = 'Driven av';
+$lang['Preferences'] = 'Føretrekte innstillingar';
+$lang['Previous'] = 'Førre';
+$lang['Profile'] = 'Profil';
+$lang['Quick search'] = 'Søk';
+$lang['RSS feed'] = 'RSS-kanal';
+$lang['Random photos'] = 'Tilfeldige bilete';
+$lang['Rank'] = 'Rangesring';
+$lang['Recent albums'] = 'Nye album';
+$lang['Recent period'] = 'Siste periode';
+$lang['Recent period must be a positive integer value'] = 'Siste periode må vera eit positivt heiltal';
+$lang['Recent photos'] = 'Siste bilete';
+$lang['Redirection...'] = 'Vidaresending...';
+$lang['Reduce diaporama speed'] = 'Reduser hastighet for biletvising';
+$lang['Register'] = 'Registrering';
+$lang['Related tags'] = 'Liknande stikkord';
+$lang['Identification'] = 'Brukarmeny';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Dersom dette var ein feil, kan du ignorere denne e-posten og ingen ting vil skje vidare.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Dersom du mottok denne e-posten ved ein feil, ta kontakt med oss på %s';
+$lang['Invalid key'] = 'Ugyldig nøkkel';
+$lang['Invalid password!'] = 'Ugyldig passord1';
+$lang['Invalid username or email'] = 'Ugyldig brukarnamn eller e-post';
+$lang['Kind of date'] = 'Datotype';
+$lang['Manage this user comment: %s'] = 'Handter kommentarane til denne brukaren: %s';
+$lang['Manual sort order'] = 'Manuell sortering';
+$lang['New on %s'] = 'Ny %s';
+$lang['Not repeat the slideshow'] = 'Ikkje repeter biletframvisinga';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Biletnummer, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Biletnummer, 9 &rarr; 1';
+$lang['Page not found'] = 'Sida vart ikkje funnen';
+$lang['Pause of slideshow'] = 'Pause biletframvisninga';
+$lang['Permalink for album not found'] = 'Permalenke for dette albument vart ikkje funnen';
+$lang['Photos only RSS feed'] = 'RSS-kanal med bare bilette';
+$lang['Photos posted within the last %d day.'] = 'Bilete lagt inn den siste dagen (%s dag).';
+$lang['Photos posted within the last %d days.'] = 'Bilete lagt inn dei siste %d dagane.';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... eller deaktiver denne meldinga, eg finn ut av dette sjølv';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Overbufringsvern: Vent litt før du prøver å legge inn ein kommentar til';
+$lang['Any tag'] = 'Eit av stikkorda';
+$lang['At least one listed rule must be satisfied.'] = 'Minst ein regel i lista må vera med.';
+$lang['Bad request'] = 'Feil førespurnad';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Feil status for gjestebrukar, standard status vil bli bruka. Meld frå til webmaster.';
+$lang['Complete RSS feed (photos, comments)'] = 'Komplett RSS-kanal (bilete og kommentarar)';
+$lang['Confirm Password'] = 'Stadfest passord';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies er blokkera eller ikkje støtta av nettlesaren din. Du må aktivere cookies for å logge inn.';
+$lang['Date created, new &rarr; old'] = 'Dato oppretta, ny &rarr; gamal';
+$lang['Date created, old &rarr; new'] = 'Dato oppretta, gamal &rarr; ny';
+$lang['Date posted, new &rarr; old'] = 'Dato lagt inn, ny &rarr; gamal';
+$lang['Date posted, old &rarr; new'] = 'Dato lagt inn, gamal &rarr; ny';
+$lang['Each listed rule must be satisfied.'] = 'Alle reglane må vera oppfylt.';
+$lang['Error sending email'] = 'Feil ved utsending av e-post';
+$lang['Forbidden'] = 'Ikkje tillaten';
+$lang['Go through the gallery as a visitor'] = 'Naviger i galleriet som ein gjest';
+$lang['Help'] = 'Hjelp';
+$lang['Home'] = 'Heim';
+$lang['Email'] = 'E-post';
+$lang['First Page'] = 'Fyrste side';
+$lang['Go back to the album'] = 'Attende til album';
+$lang['Last Page'] = 'Siste side';
+$lang['Password is missing. Please enter the password.'] = 'Passord manglar. Skriv inn eit passord.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Stadfesting av passord manglar. Skriv inn stadfesting av passord.';
+$lang['%d photos per page'] = '%d bilete på kvar side';
+$lang['Theme'] = 'Utsjånadsmal';
+?>
Index: /tags/2.6.0RC1/language/nn_NO/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,118 @@
+<h2>Endre album</h2>
+
+<h3>Informasjon</h3>
+
+<ul>
+
+  <li><strong>namn</strong>: gje nytt namn til album (ein virtuell namneendring om dette er eit fysisk album).</li>
+
+  <li><strong>Skildring</strong>: kort tekst som gjev ein ide om innhaldet,
+  denne teksten vil visast i botnen av sida med miniatyrbileta.</li>
+
+</ul>
+
+<h3>Flytte</h3>
+
+<p>Om albumet er virtuelt, kan du flytte det. Flytting av album tyder å endre mappe/album det høyrer til.</p>
+
+<h3>Alternativ</h3>
+
+<ul>
+
+  <li><strong>Tilgangstype</strong>: Rettighetshantdering. Om du gjer eit album privat, vil all underalbum og verta private.
+   Om du gjer eit album tilgjengelig for alle, vil alle "foreldrealbum" bli tilgjengelig for alle.</li>
+  <li><strong>Lås</strong>: Albumet og underalbum vil verta midlertidig utilgjengeleg for endringar.</li>
+  <li><strong>Kommentarar</strong>: Autoriser brukarar for å kunne kommentere dette albumet.</li>
+  <li><strong>Autoriser opplastingar</strong>: Autoriser brukerar til å laste opp biletfiler. Dette alternativet er kun tilgjengelig for fysiske (ikke virtuelle) album.</li>
+
+</ul>
+
+<p>Du kan og endre desse alternativa via "eigenskapar" i
+album-menyen (Arkfane <span class="pwgScreen">Last opp</span>, <span
+class="pwgScreen">Kommentarar</span>, <span class="pwgScreen">Lås</span>,
+<span class="pwgScreen">Offentleg/Privat</span>, <span
+class="pwgScreen">Alternativ</span> tilgjengeleg frå <span
+class="pwgScreen">Administrasjon &raquo; Album &raquo; Eigenskapar</span>).</p>
+
+<h3>Sorteringsrekkefylgje</h3>
+
+<p>Bruk standard bilet-sorteringsrekkefylgje.</p>
+
+<p>Indikerer om denne sorteringsrekkefylgja og vil gjelde underalbum.</p>
+
+<p>Velg spesifisera sorteringsrekkefylgje på desse albuma.</p>
+<ul>
+<li><strong>Opprettingsdato</strong>: Dato for når biletet er teke</li>
+<li><strong>Opplastingsdato</strong>: Synkroniseringsdato</li>
+<li><strong>Gjennomsnittleg rangering (*)</strong>: Gjennomsittleg rangering kan bli endra av rangering besøkande gjev</li>
+<li><strong>Mest besøkte (*)</strong>: Det siste besøket kan endre rekkefylgje på mest besøkte</li>
+<li><strong>Filnamn</strong>: Namn som er sett i informasjonsfeltet</li>
+<li><strong>Id</strong>: Intern Id (siste album har ein høgare id enn den før der.</li>
+
+</ul>
+<p><strong>(*)</strong>Advarsel: Ver nøye med å test desse sorteringsrekkefylgjene sjølv, då dei kan gje uventa resultat.</p>
+
+
+<h3>Representantar</h3>
+
+<p>Albumet sin representat er miniatyrbiletet som visast på hovudsida (<span class="pwgScreen">category.php</span>) for å
+representera albumet når det kun inneheld underalbum og ingen bilete direkte(akkurat som et underalbum).</p>
+Bilete frå eit album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Biletside</span>: ein av knappane let deg sette gjeldande bilete som representant for gjeldande
+vist album. Knappen er kun synleg for administratorar.</li>
+  <li><span class="pwgScreen">Endre informasjon om eit bilete</span> i
+  administrasjon. Dette skjermbiletet kan nås frå <span
+  class="pwgScreen">picture.php</span> eller <span class="pwgScreen">Batch
+  behandlar</span> i <em>unit modus</em>. Sjå hjelp for dette skjermbildetet for fleire detaljar.</li>
+  <li><span class="pwgScreen">Administrasjon &raquo; Album &raquo; Eigenskapar,
+  Representantar</span>. Sjå hjelpe for dette skjermbildet for meir detaljer.</li>
+  <li><span class="pwgScreen">Endre album</span> (forrige skjermbilete).</li>
+
+</ul>
+
+<p>Valet for en representant avhenger av <code>allow_random_representative</code> konfigurasjons parametere (se <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>I standardmodus (<code>allow_random_representative</code> satt til usant(false)),
+vil kvart album som inneheld minst eit element bli representert av eit sett
+ellement. Når dette er sett (ved oppretting av album), vil representanten kun endrast når ein administrator ber om det.
+Om det representative bildet ikkje passer,
+kan du få eit nytt bilete i<strong>Finn ein ny tilfeldig representant</strong>.</p>
+
+<p>Om <code>allow_random_representative</code> konfigurasjonsparameter er sett til sant (true), kan eit album som bare inneheld bilete ikkje ha nokon representant. Bare bruk <strong>Slett representant</strong>-knappen.</p>
+
+<p>Om albumet inneheld bare underalbum og ingen bilete, kan det bli representert av kva som helst element takket
+være <span class="pwgScreen">Endre informasjon om biletet</span>-skjermbiletet. Det eineste alterantivet på gjeldande skjermbilete
+er <strong>Slett representant</strong>-knappen.</
+
+
+<h3>Link alle albumbilete til eit nytt album</h3>
+
+<ul>
+
+<li><strong>Virtuelle albumnamn</strong>: Namnet på det nye albumet som blir oppretta,
+alle bilete i dette albumet vil bli linket til det nye.</li>
+
+<li><strong>Foreldrealbum</strong>: Kvar det nye albumet vil vera,
+La dette være tomt for å legge det på øvste nivå.</li>
+
+</ul>
+
+<h3>Link alle albumbilete til eksisterande album</h3>
+
+<ul>
+
+<li><strong>Album</strong>: Velg målalbumet som bileta skal knyttast til.</li>
+
+</ul>
+
+<h3>Send en informasjonsmelding til gruppemedlemmer</h3>
+
+<ul>
+
+<li><strong>Gruppe</strong>: mottakar si gruppe</li>
+
+<li><strong>E-postinnhald</strong>: Tekst som skal sendast.</li>
Index: /tags/2.6.0RC1/language/nn_NO/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Flytte virtuelle album</h2>
+
+<p>Bare virtuelle album kan tilordnast nytt foreldrealbum.</p>
+
+<h3>Virtuelle album som skal flyttast</h3>
+
+<p>Velg eit eller fleire virtuelle album du ynskjer å flytte. 
+Om lista er tom, tyder det at det ikkje er laga noko virtuelt album enda.</p>
+
+<h3>Nytt foreldrealbum</h3>
+
+<p>Velg eit nytt foreldrealbum (virtuelt eller fysisk). 
+Om du ikkje vel eit nytt foreldrealbum, vil dei valgte virtuelle albuma bli flytt til øvste nivå.
+Eit album kan ikkje flyttast til seg sjølv, eller eit underalbum til seg sjølv.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Eigenskapar til album</h2>
+
+<p>Handtering av eigenskapar for fleire album på ei gong.</p>
+
+<dl>
+
+<dt>Kommentarar</dt>
+<dd>Eit bilete kan få kommentarar frå dei som vitjar galleriet om bilete høyrer til eit album der det er lov å legge inn kommentarar.</dd>
+
+<dt>Lås</dt>
+<dd>Låste album er stengt for å gjera vedlikehald. Bare administratorar kan sjå desse i galleriet.</dd>
+
+<dt>Offentleg / privat</dt>
+<dd>Når eit album vert privat, kan du gje rettar til brukarar og grupper</dd>
+
+<dt>Representant</dt>
+<dd>Denne eigenskapen er tilgjengeleg om du set innstillinga 
+<code>allow_random_representative</code> (sjå <span
+ class="filename">include/config_defaults.inc.php</span>) til
+<em>true</em>. Kvart album kan eit tilfeldig representant-bilete eller eit bilete som blir valgt for albumet.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nn_NO/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Endre rettar til album</h2>
+
+<p>Dette skjermbiletet er bare tilgjengeleg for private album. Her kan du velge brukarar og grupper som har rett til å sjå dette albumet.</p>
+
+<h3>Grupper</h3>
+
+<p>Du kan nekte eller gje tilgang til grupper til å sjå dette albumet. Om du endrar rettane grupper, vil brukarar som høyrer til desse gruppene bli nekta tilgang eller gjeve tilgang til dette albumet.</p>
+
+<h3>Brukarar</h3>
+
+<p>Du kan nekte eller gje tilgang til enkeltbrukarar. Brukarar som har tilgang via gruppa dei høyrer til, kan bli nekta tilgang ved å nekte tilgang til enkeltbrukar.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,20 @@
+<p>Ulike måtar å legge til bilete i galleriet:</p>
+
+<ul>
+  <li><strong>Direkte opplasting</strong> i nettlesaren er den enklaste og mest direkte måten. Den er avhengig av moglegheitane i netllesaren og web-tenaren. For større antal bilete eller om du har problem, så finst andre metodar som ventar på deg!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Gå til direkte opplasting </a></p>
+
+<ul>
+ <li><strong>pLoader</strong> er eit program som installerast og køyrer på din datamaskin. Dra &amp; slepp bilete inn i pLoader vindauget, clikk på <em>"Upload to Piwigo"</em> og la pLoader ta jobben. Du kan og finne andre program slik som <string>WinToPiwigo</strong> eller <strong>Digikam</strong> sitt tilleggsprogram for å eksportere til Piwigo.</li>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Gå til pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP-overføring</strong> er den tilrådde måten å legge til store samlingar med bilete med eit minimum av klikk. Fylg hjelpinformasjonen for å tilrettelegge bileta. FTP-metoden let deg kontrollere den fysiske organiseringa av bileta på din nett-tenar.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Gå til FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/nn_NO/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Grupper er ein enkel måte å gje løyve til ei liste med brukarar.</p>
+
+<p>Opprett grupper i <span class="pwgScreen">Administrasjon &raquo; Brukarar
+&raquo; Grupper</span> og knytt brukarar til desse gruppene i 
+<span class="pwgScreen">Administrasjon &raquo; Brukarar &raquo;
+Handter</span>.</p>
+
+<p>Ein brukar kan høyre til fleire grupper. Autorisering (løyve) overstyrer nekta tilgang: 
+om bruker "olav" høyrer til gruppa "familie" og "venner", og
+bare gruppa "familie" kan sjå albumet "Jol 2010", då vil
+"olav" kunne sjå albumet "Jol 2010".</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Når du har oppretta galleriet ditt, kan du konfigurere det for besøkande
+<ul>
+	<li>Standarvising slik du ynskjer i <span class="pwgScreen">Administrasjon &raquo; Konfigurasjon &raquo; Innstillingar</span> fane <span class="pwgScreen">Innstillingar for gjester</span></li>
+	<li>Standard-tema i <span class="pwgScreen">Administrasjon &raquo; Konfigurasjon &raquo; Tema</span></li>
+	<li>Standard språk i <span class="pwgScreen">Administrasjon &raquo; Konfigurasjon &raquo; Språk</span></li>
+ </ul>
+ Som standard vil nye brukarar "arve" desse eigenskapane når dei vert registrera.
+</p>
+<p>Om du har spørsmål vil Piwigo-felleskapet ynskje deg velkomen på <a href="http://piwigo.org/forum">sitt forum</a>.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Bilete blir vist i albumet som høyrer til katalogen biletfila ligg 
+i.</p>
+
+<p>Du kan og vise bilete i fleire album utan å kopiere biletfila på
+nett-tenaren. Du kan knytte biletet til eit eller fleire album frå 
+skjermbiletet for endring av bilete (dette skjermbilete kan ein 
+administrator få opp frå biletsida på galleriet).</p>
+
+<p>Virtuelle album er basera på dette konseptet: dei har ikkje
+nokon tilhøyrande katalog tilknyt. Lag virtuelle album frå
+ <span class="pwgScreen">Administrasjon &raquo; Album &raquo;
+Handter</span>.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Historikk</h2>
+
+<p>På desse skjermbileta kan du overvaka vitjingshistorikk for galleriet i høve til dei innstillingane du har vald i: Administrasjon &raquo; Konfigurasjon &raquo; Innstillingar &raquo; Historikk</p>
+	
+<h3>Statistikk</h3>
+<ul>
+  <p>Om du har vald å lagre sidevisingar (<span class="pwgScreen">index.php</span> og <span class="pwgScreen">picture.php</span>), kan du overvake dei frå denne fana.</p>
+	<li><strong>Global statistikk</strong>: visingar pr. år. </li>
+	<li><strong>Årleg statistikk</strong>: visingar pr. month i det valde året.</li>
+	<li><strong>Månadleg statistikk</strong>: visingar pr. dag i den valde månaden.</li>
+	<li><strong>Dagleg statistikk</strong>: visingar pr. time på den valde dagen.</li>
+</ul>
+
+<h3>Søk</h3>
+<ul>
+  <p>Om du har vald å lagre sidevisingar (<span class="pwgScreen">index.php</span> og <span class="pwgScreen">picture.php</span>), kan du bla i detaljar i denne fanna ved hjelp av ulike filter.</p>
+	<li><strong>Filtrer på dato:</strong> vel eit datointervall å søke i ved å seta start og slutt dato.</li>
+	<li><strong>Filtrer på type element:</strong> vel type element for statistikk for den type element.</li>
+	<li><strong>Filtrer på brukar:</strong> vel brukaren for statistikk knytt til den brukaren.</li>
+	<li><strong>Filtrer på bilet-identifikator (ID):</strong> vel ein bilet-identifikator (ID) for statustikk om dette biletet.</li>
+	<li><strong>Filtrer på namn på fila:</strong> vel eit filnamn for statistikk om denne fila.</li>
+</ul>
Index: /tags/2.6.0RC1/language/nn_NO/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Varsling på e-post (Notification By Mail - NBM)</h2>
+
+<p>Konfigurering og handtering av e-postvarsling til brukarane for å varsle dei om endringar på galleriet.</p>
+
+<p>Dette skjermbiletet har tre arkfaner:</p>
+
+<h3>Innstillingar</h3>
+<p>Tilgjengeleg bare for webmaster. Denne set opp eigenskapar for e-postvarsling.</p>
+
+<h3>Abonner</h3>
+<p>Tilgjengeleg bare for webmaster. Denne arkfana handterar abonnering på e-postvarsling. Legg brukarar til lista over abonenntar for at dei skal få varsling på e-post.</p>
+
+<h3>Send</h3>
+<p>Tilgjengeleg bare for webmaster og administratorar. Denne arkfana gjev administratorar tilgang til å sende e-postvarsel til brukarar som har abonnera.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalenker</h2>
+
+<p>Permalenker blir bruka til å lage URL til ablumet enklare å hugse. Når eit album har ei definera permalenke, trengst ikkje ID til ablument i URL lenger.</p>
+
+<p>Når ei permalenke blir sletta, kan du lagre den i permalenke-historikken, slik at eksterne lenker til sider i Piwigo galleriet framleis vil verke. I tabellen for permalenke-historikken kan du sjå datoen då permalenka vart sletta, sist den var i bruk og antal gonger permalenka har vorte bruka.</p>
+
+<p>Merk at permalenker må vera unike for kvart album. Permalenker i historikken kan heller ikkje vera definera meir enn ei gong.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,66 @@
+<fieldset>
+  <legend>Kvikkstart</legend>
+
+<ol>
+  <li>Lag ei mappe på din datamaskin.</li>  
+
+  <li>Kopier nokre bilete til denne mappa, skaler dei for vising på web. <em>Varsel</em>: namn på mapper og filer kan bare innehalde bokstavar (a - z, A - Z), tal, "-", "_" or ".". Ikkje bruk mellomrom eller spesielle tegn.</li>
+
+  <li>Med ein FTP-klient, kopier mappa til "galleries" mappa i din Piwigo installasjon.</li>
+
+  <li>Logg inn på ditt galleri og gå til <span class="pwgScreen">Administrasjon</span> og klikk på den store Synkronisering-knappen.</li>
+</ol>
+
+<p>Gratulere! Du har nå laga ditt fyrste album i biletgalleriet.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Organisering av mapper og filer</legend>
+
+<ul>
+
+  <li>
+
+    <p>Albummapper er i Piwigo-mappa
+    "galleries". Her er mappestrukturen for eit lite galleri (men med bruk av mange funksjonar):</p>
+
+    <pre>
+galleries
+|-- bryllaup
+|   |-- vielse
+|   |   |-- mottaking
+|   |   |   |-- olav-aleine.jpg
+|   |   |   +-- kari-aleie.jpg
+|   |   +-- avreise
+|   |       +-- olav-og-kari.jpg
+|   +-- fest
+|       |-- dansarar001.jpg
+|       |-- dansarar002.jpg
+|       +-- dansarar003.jpg
++-- bryllaupsreise
+    |-- hotell.png
+    |-- video-fraa-fly.avi
+    +-- pwg_representative
+        +-- video-fraa-fly.jpg
+</pre>
+
+  </li>
+
+  <li>Bortsett frå "pwg_representative" (sjå forklaring under), vil kvar mappe under "galleries" lage eit album. Det er ingen avgrensing på djubde.</li>
+
+  <li>Som utgangspunkt er eit element representera av ei file. Ei fil kan vera eit
+  Piwigo element om filtypa er blant <code>file_ext</code>
+  konfigurasjons-eigenskapan (sjå <span
+  class="filename">include/config_default.inc.php</span> file). Ei fil kan vera eit bilete om filtypa
+  er blant <code>picture_ext</code>
+  konfigurasjons-eigenskapan.</li>
+
+  <li>Ingen bilet-element (video, lyd, tekstfiler, eller kva som helst...) er som standard vist med eit ikon som samsvarar med filtypa. Valfritt, kan du knytte til ei miniatyrbilete og ein representatnt--fil til ei fil (sjå video.avi i dømet over).</li>
+
+  <li><em>Varsel</em>: namn på mapper og filer kan bare innehalde bokstavar (a - z, A - Z), tal, "-", "_" or ".". Ikkje bruk mellomrom eller spesielle tegn.</li>
+
+  <li>Når bilete er plassera korrekt i mapper, gå til: <span class="pwgScreen">Administrasjon &raquo; Verktøy &raquo;
+  Synkroniser</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/nn_NO/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/search.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Søk</h2>
+
+<p>Denne sida let deg søke etter bilete frå heile galleriet.</p>
+
+<dl>
+
+  <dt>Søk etter ord</dt>
+  <dd>Søk etter eit eller fleire ord i attributtane til bilete i galleriet.
+  Bruk * som tegn for oppgje bare delar av ordet.</dd>
+
+  <dt>Søk etter fotograf</dt>
+  <dd>Bruk * som tegn for oppgje bare delar av namnet.</dd>
+
+  <dt>Datosøk</dt>
+  <dd>Velg ein dato eller ein sluttdato for eit søk. Lat datofelted vera tomt
+  dersom du vil lage "før dato" spørring. Året i siste felted må skrivast inn
+  på fylgjande format: ÅÅÅÅ (døme: 2004)</dd>
+
+  <dt>Søk etter album</dt>
+  <dd>Velg album (eit eller fleire) du vil søke etter. Alla
+  underalbum kan bli søkt i dersom du i foreldrealbumet aktiverar søk i underalbum.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/nn_NO/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Synkronisering</h2>
+
+<p>Det er to typar synkronisering:</p>
+<ul>
+	<li>katalogar/filer</li>
+	<li>metadata for filer (bilete)</li>
+</ul>
+
+<p>Synkronisering av katalogar og filer handlar om å oppdatere katalogstrukturen med albumstrukturen i databasen. 
+Synkronisering av metadata for filer (bilete) handlar om å oppdatere informasjon om bilete slik som filstørrelse, dimensjonar (i bildepunkt), EXIF eller IPTC informasjon med informasjon i databasen.</p>
+
+<p>Når synkronisering av opplasta bilete skal gjerast i galleriet, må du fyrst synkronisere katalogar og filer.</p>
+
+<p>Synkroniseringsprosessen kan ta lang tid (kjem an på kor mykje serveren er lasta og antal element som skal handterast), det er difor mogleg å gjera det for eit og eit album.</p>
Index: /tags/2.6.0RC1/language/nn_NO/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Brukarliste</h2>
+
+<p>Her håndterar du brukarane i ditt Piwigo-galleri.</p>
+
+<h3>Legg til brukar</h3>
+
+<p>Ein administrator kan manuelt legge til brukarar. For kvar brukar må det leggast inn brukarnamn, passord og ei gyldig e-postadresse.</p>
+
+<h3>Brukarliste</h3>
+
+<p>Lista over eksisterande brukarar kan filtrerast på brukarnamn (bruk * som jokertegn), gruppe eller status. Lista kan sorterast på oppretta dato eller brukarnamn i stigande eller fallande retning.</p>
+
+<p>Dette skjermbilete gjev tilgang til å endre fleire brukarar om gongen. Fylgjande endringar kan gjerast:</p>
+
+<ul>
+  <li>slett brukar (treng stadfesting)</li>
+  <li>endre status på brukar</li>
+  <li>legge til eller ta bort frå grupper</li>
+  <li>endre visingseigenskapar</li>
+  <li>endre andre innstillingar</li>
+</ul>
+
+<p>Endringane vil bli gjort på vald brukar (som standard) eller alle brukaran vist i den filtrera lista.</p>
Index: /tags/2.6.0RC1/language/nn_NO/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Database name'] = 'Databasenamn';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Du kan endre konfigurasjonen sjølv og ta omstart på Piwigo etterpå.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Du bør sjekke med dei som leverar nett-tenaren om korleis du kan byte til PHP5.';
+$lang['also given by your host provider'] = 'er og levera av den som leverar nett-tenaren';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'namna på databasetabellane vil verta prefiksa med dette (gjev deg mogleghet til å handtere databasetabellane betre)';
+$lang['enter a login for webmaster'] = 'skriv inn brukarnamn for webmaster';
+$lang['please enter your password again'] = 'skriv inn passord ei gong til';
+$lang['user login given by your host provider'] = 'brukarnamn du har fått av den som har nett-tenaren';
+$lang['user password given by your host provider'] = 'passord du har fått av den som har nett-tenaren';
+$lang['verification'] = 'sjekk';
+$lang['webmaster login can\'t contain characters \' or "'] = 'brukarnamn for webmaster kan ikkje innehalde tegna \' eller "';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ikkje vent med å sjå på foruma våre for hjelp: %s';
+$lang['PHP 5 is required'] = 'PHP5 er påkrevd';
+$lang['Password ']['confirm'] = 'Passord [stadfest]';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan prøve å byte din konfigurasjon til PHP5 ved å lage eller endre fila .htaccess.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo greidde ikkje å konfigurere PHP5.';
+$lang['Sorry!'] = 'Orsak!';
+$lang['Start Install'] = 'Start installasjon';
+$lang['Try to configure PHP 5'] = 'Prøv å konfigurere PHP5';
+$lang['User'] = 'Brukar';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Dei som vitjar nettsida kan bruke denne e-postadressa for å kontakte administrator for nettsida';
+$lang['Welcome to my photo gallery'] = 'Velkomen til mitt biletgalleri';
+$lang['Welcome to your new installation of Piwigo!'] = 'Velkomen til din nye installasjon av Piwigo!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan laste ned konfigurasjonsfila og laste den opp til "local/config" katalogen i din installasjon.';
+$lang['Admin configuration'] = 'Administratorkonfigurasjone';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Ein alternativ løysing er å kopiere teksten i boksen over og lime den inn i fila "local/config/database.inc.php" (Åtvaring: "database.inc.php" kan bare innehalde det som er i tekstfeltet, ikkje lineskift eller mellomrom)';
+$lang['Basic configuration'] = 'Grunnleggande konfigurasjon';
+$lang['Can\'t connect to server'] = 'Kan ikkje kople til tenar';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulere, installasjon av Piwigo er ferdig';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Kopling til tenar er vellukka, men tilkopling til databasen var ikkje mogleg.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Oppretting av konfigurasjonsfila "local/config/database.inc.php" feila.';
+$lang['Database configuration'] = 'Databasekonfigurasjon';
+$lang['Database table prefix'] = 'Prefiks for databasetabellar';
+$lang['Default gallery language'] = 'Standard språk for galleriet';
+$lang['Download the config file'] = 'Last ned konfigurasjonsfil';
+$lang['Hope to see you back soon.'] = 'Håpar å sjå deg att snart.';
+$lang['Host'] = 'Tenar';
+$lang['Installation'] = 'Installasjon';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Det verkar som nettenaren køyrer PHP %s.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Den vil bli vist til dei som vitjar galleriet. Den er naudsynt for administrasjon av nettsida';
+$lang['Just another Piwigo gallery'] = 'Enda eit Piwigo galleri';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Hald dette hemmeleg, det gjev deg tilgang til administrasjonspanelet';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Treng du hjelp? Still spørsmålet ditt på <a href="%s"> Piwigo sitt forum</a>.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost eller servernamn gjeve av administrator for server';
+?>
Index: /tags/2.6.0RC1/language/nn_NO/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Nynorsk [NO]
Index: /tags/2.6.0RC1/language/nn_NO/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/nn_NO/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/nn_NO/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Alle underalbum av private album blir private';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'For å vera sikker så er fylgjande tilleggsmodular deaktivera. Du må sjekke for oppgraderingar for tilleggsmodular før du kan aktivere dei att.';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'For å vera sikker så er fylgjande tema deaktivera. Du må sjekke for oppgraderingar for tema før du kan aktivere dei att.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'I <i>%s</i>, før <b>?></b>, sett inn:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Bare administrator kan utføre ei oppgradering: logg inn under.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Bare miniatyrbilete-prefix og webmaster e-postadresse har blitt teke vare på frå den tidlegare versjonen';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Utfør ein vedlikehaldssjekk i [Administrasjon>Verktøy>Vedlikehald] om du oppdagar eit problem.';
+$lang['SQL queries'] = 'SQL-spørjingar';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Denne sida føreslår å oppgradere databasen frå din gamle Piwigo-versjon til den nye versjonen. Oppgraderingsassistenten meiner du kjøyrer <strong>versjon %s</strong> (eller ein samsvarande versjon)';
+$lang['User permissions and group permissions have been erased'] = 'Rettar til brukarar og grupper har blitt sletta';
+$lang['You do not have access rights to run upgrade'] = 'Du har ikkje løyve til å starte oppgradering';
+$lang['total SQL time'] = 'total SQL-tid';
+$lang['total upgrade time'] = 'total tid for oppgradering';
+$lang['Statistics'] = 'Statistikk';
+$lang['Upgrade'] = 'Oppgradering';
+$lang['Upgrade from version %s to %s'] = 'Oppgrader frå vesjon %s til %s';
+$lang['Upgrade informations'] = 'Oppgraderingsinformasjon';
+?>
Index: /tags/2.6.0RC1/language/pl_PL/about.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/about.html	(revision 25596)
@@ -0,0 +1,19 @@
+<p>Ta galeria zdjęć bazuje na Piwigo.</p>
+
+<p>Piwigo jest oprogramowaniem typu galeria zdjęć www, stworzone przez programistów oraz aktywną społeczność użytkowników. Dzięki rozszerzeniom Piwigo jest łatwe w dostosowaniu do własnych potrzeb. A co najważniejsze Piwigo jest oprogramowaniem otwartym.</p>
+
+<p id="linkToPiwigo"><a href="http://de.piwigo.org">Odwiedź stronę Piwigo</a></p>
+
+<p>Polskie tłumaczenie Piwigo jest utrzymywane przez (w kolejności alfabetycznej):
+	<ul>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=5244">emcek</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=9792">Greybrow</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=18504">K.S.</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=4657">kuba</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=16313">larky</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=13190">Ortolan</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=13965">T00kie</a></li>
+		<li><a href="http://pl.piwigo.org/forum/profile.php?id=4624">voyteckst</a></li>
+	</ul>
+        .... podziękowania dla nich</p>
+
Index: /tags/2.6.0RC1/language/pl_PL/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/admin.lang.php	(revision 25596)
@@ -0,0 +1,973 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d powiązanie';
+$lang['%d associations'] = '%d powiązań';
+$lang['%d album including'] = '%d album zawiera';
+$lang['%d albums including'] = '%d albumy zawierające';
+$lang['%d physical'] = '%d fizycznie';
+$lang[' and %d virtual'] = 'i %d wirtualny';
+$lang['%d album moved'] = '%d album przeniesiony';
+$lang['%d albums moved'] = '%d albumów przeniesionych';
+$lang['%d group'] = '%d grupa';
+$lang['%d groups'] = '%d grup';
+$lang['%d member'] = '%d członek';
+$lang['%d members'] = '%d członków';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tagów';
+$lang['%d user comment rejected'] = '%d komentarz użytkownika odrzucony';
+$lang['%d user comments rejected'] = '%d komentarzy użytkownika odrzuconych';
+$lang['%d user comment validated'] = '%d komentarz użytkownika zaakceptowany';
+$lang['%d user comments validated'] = '%d komentarzy użytkowników zaakceptowanych';
+$lang['%d user deleted'] = '%d użytkownik usunięty';
+$lang['%d users deleted'] = '%d usuniętych użytkowników';
+$lang['%d user'] = '%d użytkownik';
+$lang['%d users'] = '%d użytkowników';
+$lang['%d waiting for validation'] = '%d oczekujących na zatwierdzenie';
+$lang['Actions'] = 'Akcje';
+$lang['Activate'] = 'Aktywacja';
+$lang['Add/delete a permalink'] = 'Dodaj/Usuń permalink';
+$lang['Add a tag'] = 'Dodaj tag';
+$lang['Add a user'] = 'dodaj użytkownika';
+$lang['Add group'] = 'Dodaj grupę';
+$lang['Add'] = 'Dodaj';
+$lang['Allow user registration'] = 'Zezwól na rejestrację użytkowników';
+$lang['Apply to sub-albums'] = 'Zastosuj do pod-albumów';
+$lang['Associated'] = 'Powiązane';
+$lang['Caddie management'] = 'Zarządzanie koszykiem';
+$lang['Caddie'] = 'Koszyk';
+$lang['Albums authorized thanks to group associations'] = 'Albumy zautoryzowane dzięki powiązaniom z grupami';
+$lang['Album manual order was saved'] = 'Zapisano własną kolejność albumów';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Sprawdzenie aktualizacji nie powiodło się z nieznanych powodów.';
+$lang['Check for upgrade'] = 'Sprawdź aktualizacje';
+$lang['Comments for all'] = 'Komentarze dla wszystkich';
+$lang['Current name'] = 'Bieżąca nazwa';
+$lang['Database'] = 'Baza danych';
+$lang['Deactivate'] = 'Deaktywuj';
+$lang['Delete Representant'] = 'Usuń reprezentanta';
+$lang['Delete selected tags'] = 'Usuń zaznaczone tagi';
+$lang['Delete selected users'] = 'Usuń zaznaczonych użytkowników';
+$lang['Deletions'] = 'Usunięcia';
+$lang['Deny selected groups'] = 'Zabroń zaznaczonym grupom';
+$lang['Deny selected users'] = 'Zabroń zaznaczonym użytkownikom';
+$lang['Description'] = 'Opis';
+$lang['Display options'] = 'Opcje wyświetlania';
+$lang['Dissociated'] = 'Niepowiązane';
+$lang['Does not represent'] = 'Nie reprezentuje';
+$lang['Edit selected tags'] = 'Edytuj zaznaczone tagi';
+$lang['Edit tags'] = 'Edytuj tagi';
+$lang['Email admins when a new user registers'] = 'Wyślij wiadomość do administratora gdy zarejestruje się nowy użytkownik';
+$lang['Email admins when a valid comment is entered'] = 'Wyślij wiadomość do administratora gdy zostanie wprowadzony poprawny komentarz';
+$lang['Email admins when a comment requires validation'] = 'Wyślij wiadomość do administratora gdy komentarz wymaga weryfikacji';
+$lang['Environment'] = 'Środowisko';
+$lang['Form'] = 'Formularz';
+$lang['Gallery title'] = 'Tytuł galerii';
+$lang['Grant selected groups'] = 'Zezwól zaznaczonym grypom';
+$lang['Grant selected users'] = 'Zezwól zaznaczonym użytkownikom';
+$lang['Group name'] = 'Nazwa grupy';
+$lang['Groups'] = 'Grupy';
+$lang['Guests'] = 'Goście';
+$lang['History'] = 'Historia';
+$lang['Informations'] = 'Informacje';
+$lang['Install'] = 'Instaluj';
+$lang['Link all album photos to a new album'] = 'Podlinkuj wszystkie zdjęcia albumu do nowego albumu';
+$lang['Link all album photos to some existing albums'] = 'Podlinkuj wszystkie zdjęcia albumu do istniejących albumów';
+$lang['Linked albums'] = 'Podlinkowane albumy';
+$lang['Lock gallery'] = 'Zablokuj galerię';
+$lang['Maintenance'] = 'Konserwacja';
+$lang['Edit album permissions'] = 'Zarządzaj uprawnieniami dla albumu';
+$lang['Manage permissions for group "%s"'] = 'Zarządzaj uprawnieniami dla grupy "%s"';
+$lang['Manage permissions for user "%s"'] = 'Zarządzaj uprawnieniami dla użytkownika "%s"';
+$lang['Manage tags'] = 'Zarządzaj tagami';
+$lang['Members'] = 'Członkowie';
+$lang['Metadata synchronized from file'] = 'Metadane zsynchronizowane z pliku';
+$lang['Move albums'] = 'Przenieś albumy';
+$lang['Move'] = 'Przenieś';
+$lang['Name'] = 'Nazwa';
+$lang['New name'] = 'Nowa nazwa';
+$lang['New parent album'] = 'Nowy nadrzędny album';
+$lang['New tag'] = 'Nowy tag';
+$lang['Number of comments per page'] = 'Liczba komentarzy na stronę';
+$lang['Number of rates'] = 'Liczba ocen';
+$lang['Number of thumbnails to create'] = 'Liczba miniatur do stworzenia';
+$lang['Only private albums are listed'] = 'Lista zawiera tylko prywatne albumy';
+$lang['Operating system'] = 'System operacyjny';
+$lang['Options'] = 'Opcje';
+$lang['Other private albums'] = 'Inne prywatne albumy';
+$lang['Page banner'] = 'Banner strony';
+$lang['Parent album'] = 'Nadrzędny album';
+$lang['Path'] = 'Ścieżka';
+$lang['Permalink'] = 'Link permanentny';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Link permanentny %s był wcześniej używany przez album %s. Usuń go najpierw z historii linkó permanentnych';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Nazwa linku permanentnego musi składać się z następujących znaków a-z, A-Z, 0-9, "-", "_" lub "/". Nie może być cyfrą lub zaczynać się od "-"';
+$lang['Permalink %s is already used by album %s'] = 'Link permanentny %s jest aktualnie używany przez album %s';
+$lang['Permalink history'] = 'Historia linków permanentnych';
+$lang['Permalinks'] = 'Linki permanentne';
+$lang['Permission denied'] = 'Dostęp zabroniony';
+$lang['Permission granted thanks to a group'] = 'Uprawnienia przyznane dzięki grupie';
+$lang['Permission granted'] = 'Dostęp przyznany';
+$lang['Photo informations updated'] = 'Zaktualizowano informację o obrazie';
+$lang['Plugins'] = 'Wtyczki';
+$lang['Position'] = 'Pozycja';
+$lang['Preferences'] = 'Preferencje';
+$lang['Properties'] = 'Właściwości';
+$lang['Random photo'] = 'Losowy obraz';
+$lang['Rate date'] = 'Oceny po dacie';
+$lang['Rating by guests'] = 'Oceny przez gości';
+$lang['Rating'] = 'Oceny';
+$lang['Reject'] = 'Odrzuć';
+$lang['Representant'] = 'Reprezentant';
+$lang['Representation of albums'] = 'Reprezentacja albumu';
+$lang['Representative'] = 'Reprezentacyjny';
+$lang['Represents'] = 'Reprezentuje';
+$lang['Save order'] = 'Zapisz kolejność';
+$lang['Save to permalink history'] = 'Zapisz do historii linków permanentnych';
+$lang['Select at least one album'] = 'Wybierz przynajmniej jeden album';
+$lang['Select at least one photo'] = 'Wybierz przynajmniej jeden obraz';
+$lang['Select at least one user'] = 'Wybierz przynajmniej jednego użytkownika';
+$lang['Show info'] = 'Pokaż informacje';
+$lang['Site manager'] = 'Menadżer strony';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statystyki';
+$lang['Storage album'] = 'Lokalizacja albumu';
+$lang['Sum of rates'] = 'Suma ocen';
+$lang['Tag "%s" already exists'] = 'Tag "%s" już istnieje';
+$lang['Tag "%s" was added'] = 'Tag "%s" został dodany';
+$lang['Tag selection'] = 'Wybór tagu';
+$lang['The %d following tags were deleted'] = '%d tagów zostało usuniętych';
+$lang['Uninstall'] = 'Odinstaluj';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Użyj domyślnego sortowania zdjęć (zdefiniowane w pliku konfiguracyjnym)';
+$lang['User comments validation'] = 'Zatwierdzanie komentarzy użytkowników';
+$lang['Users'] = 'Użytkownicy';
+$lang['Validate'] = 'Zatwierdź';
+$lang['Validation'] = 'Zatwierdzanie';
+$lang['Version'] = 'Wersja';
+$lang['Virtual albums to move'] = 'Wirtualne albumy do przeniesienia';
+$lang['Virtual album name'] = 'Wirtualna nazwa albumu';
+$lang['Webmaster cannot be deleted'] = 'Nie można usunąć użytkownika Webmaster';
+$lang['You are running on development sources, no check possible.'] = 'Nie można sprawdzić, ponieważ używasz źródeł developerskich.';
+$lang['You cannot delete your account'] = "Nie możesz usunąć swojego konta";
+$lang['You cannot move an album in its own sub album'] = 'Nie możesz przenieść albumu do jego własnego pod-albumu';
+$lang['You need to confirm deletion'] = 'Musisz potwierdzić usunięcie';
+$lang['Associate to album'] = 'Powiąż z albumem';
+$lang['associate to group'] = 'powiązane z grupą';
+$lang['Authorized'] = 'Zautoryzowane';
+$lang['Add a virtual album'] = 'Dodaj wirtualny album';
+$lang['Authorize users to add comments on selected albums'] = 'Autoryzuj użytkowników do dodawania komentarzy do albumu';
+$lang['The name of an album must not be empty'] = 'Nazwa albumu nie może być pusta';
+$lang['Lock albums'] = 'Zablokuj albumy';
+$lang['Private'] = 'prywatny';
+$lang['Public'] = 'publiczny';
+$lang['Find a new representant by random'] = 'Znajdź losowo nowego reprezentanta';
+$lang['Public / Private'] = 'Publiczne / Prywatne';
+$lang['Manage authorizations for selected albums'] = 'Zarządzaj autoryzacjami do zaznaczonych albumów';
+$lang['Virtual album added'] = 'Album wirtualny dodany';
+$lang['Virtual album deleted'] = 'Album wirtualny usunięty';
+$lang['Access type'] = 'Typ dostępu';
+$lang['Information data registered in database'] = 'Dane zapisane w bazie danych';
+$lang['Default display'] = 'Wyświetlanie domyślne';
+$lang['The gallery URL is not valid.'] = 'Adres URL galerii jest niepoprawny.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Liczba komentarzy na stronę musi być pomiędzy 5 a 50.';
+$lang['Configuration'] = 'Konfiguracja';
+$lang['confirm'] = 'potwierdź';
+$lang['Date'] = 'Data';
+$lang['delete album'] = 'usuń album';
+$lang['Dissociate from album'] = 'Usuń powiązanie z albumem';
+$lang['dissociate from group'] = 'usuń powiązanie z grupy';
+$lang['Album updated successfully'] = 'Informacje o albumie zostały zaktualizowane pomyślnie.';
+$lang['photos per page'] = 'elementów na stronę';
+$lang['High definition enabled'] = 'Wysoka jakość włączona';
+$lang['File'] = 'plik';
+$lang['first photo added on %s'] = 'pierwszy element dodany %s';
+$lang['Forbidden'] = 'Zabronione';
+$lang['global mode'] = 'tryb globalny';
+$lang['group "%s" added'] = 'dodano grupę "%s"';
+$lang['group "%s" deleted'] = 'usunięto grupę "%s"';
+$lang['group "%s" updated'] = 'zaktualizowano grupę "%s"';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Nazwa grupy nie może zawierać znaków " lub \' lub być pusta.';
+$lang['This name is already used by another group.'] = 'Nazwa jest już używana przez inną grupę.';
+$lang['High definition'] = 'Wysoka jakość';
+$lang['jump to album'] = 'przejdź do albumu';
+$lang['jump to photo'] = 'przejdź do obrazu';
+$lang['leave'] = 'opuść';
+$lang['Lock'] = 'Zablokuj';
+$lang['Locked'] = 'Zablokowane';
+$lang['manage album photos'] = 'Zarządzaj zdjęciami w albumie';
+$lang['manage sub-albums'] = 'Zarządzaj pod-albumami';
+$lang['Manage'] = 'Zarządzaj';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Czas wykonania minął, proces musi być kontynuowany [Szacowany czas: %d sekund].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Czas wykonania minął, proces musi być kontynuowany [Szacowany czas: %d sekund].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Czas wysłania wiadomości do listy użytkowników jest ograniczony. Pozostali użytkownicy nie znajdują się na liście.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Czas wysłania wiadomości jest ograniczony. Pozostałe wiadomości zostaną pominięte.';
+$lang['To send ?'] = 'Do wysłania ?';
+$lang['Last send'] = 'Ostatnio wysłane';
+$lang['User'] = 'Użytkownik';
+$lang['See you soon,'] = 'Do zobaczenia wkrótce,';
+$lang['Go to'] = 'Przejdź do ';
+$lang['Hello'] = 'Witaj ';
+$lang['New photos were added'] = 'dodano nowe elementy ';
+$lang['on'] = ' dnia ';
+$lang['between'] = 'pomiędzy ';
+$lang['and'] = ' i ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster zapisał Cię na listę powiadomień.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Zapisałeś(łaś) się aby otrzymywać powiadomienia.';
+$lang['To subscribe'] = 'Aby się zapisać';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Jeżeli napotkasz problem lub masz pytania wyślij wiadomość do ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemy i pytania';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster wypisał Cię z otrzymywania powiadomień.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Zostałeś wypisany z otrzymywania powiadomień.';
+$lang[', click on'] = ', kliknij ';
+$lang['To unsubscribe'] = 'Aby się wypisać';
+$lang['With blank value, gallery title will be used'] = 'Tytuł galerii będzie używany jeżeli pole zostanie puste';
+$lang['Notification'] = 'Powiadomienia';
+$lang['Error when sending email to %s [%s].'] = 'Błąd podczas wysyłania wiadomości do %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Wysłano wiadomość do %s [%s].';
+$lang['%d mail was sent.'] = 'Wysłano %d wiadomość.';
+$lang['%d mails were sent.'] = 'Wysłano %d wiadomości.';
+$lang['%d mail was not sent.'] = 'Nie wysłano %d wiadomości.';
+$lang['%d mails were not sent.'] = 'Nie wysłano %d wiadomości.';
+$lang['No mail to send.'] = 'Brak wiadomości do wysłania.';
+$lang['There is no available subscribers to mail.'] = 'Brak dostępnych użytkowników do wysłania powiadomienia.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Użytkownik jest dostępny, jeżeli są nowe elementy do powiadomienia.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Prawdopodobnie nie ma zapisanych użytkowników (tę zakładkę widzi tylko użytkownik webmaster).';
+$lang['No user to send notifications by mail.'] = 'Brak użytkowników do wysłania powiadomień.';
+$lang['New photos added'] = 'Dodano nowe elementy';
+$lang['Subscribe to notification by mail'] = 'Zapisz do powiadomień email';
+$lang['Unsubscribe from notification by mail'] = 'Wypisz z powiadomień email';
+$lang['Parameter'] = 'Parametr';
+$lang['Continue processing treatment'] = 'Kontynuuj procesowanie';
+$lang['Complementary mail content'] = 'Uzupełniająca treść wiadomości';
+$lang['Add detailed content'] = 'Dodaj szczegółową treść';
+$lang['Send mail as'] = 'Wyślij wiadomość jako';
+$lang['Send mail to users'] = 'Wyślij wiadomość do użytkowników';
+$lang['Send'] = 'Wyślij';
+$lang['Options'] = 'Opcje';
+$lang['Subscribed'] = 'Zapisani';
+$lang['Subscribe'] = 'Zapisy';
+$lang['Parameters'] = 'Parametry';
+$lang['Select recipients'] = 'Wybierz odbiorców';
+$lang['Subscribe/unsubscribe users'] = 'Zapisz/wypisz użytkowników';
+$lang['Unsubscribed'] = 'Nie zapisani';
+$lang['%d parameter was updated.'] = 'Zaktualizowano %d parametr.';
+$lang['%d parameters were updated.'] = 'Zaktualizowano %d parametrów.';
+$lang['%d user was not updated.'] = 'Użytkownik %d nie został zaktualizowany.';
+$lang['%d users were not updated.'] = 'Nie zaktualizowano %d użytkowników.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Użytkownik %s [%s] usunięty z listy zapisanych.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Użytkownik %s [%s] został dodany do listy zapisanych na listę.';
+$lang['%d user was updated.'] = 'Zaktualizowano użytkownika %d.';
+$lang['%d users were updated.'] = 'Zaktualizowano %d użytkowników.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Użytkownik %s [%s] nie został usunięty z listy zapisanych.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Nie dodano użytkownika %s [%s] do listy zapisanych.';
+$lang['User %s [%s] added.'] = 'Dodano użytkownika %s [%s] .';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Ostrzeżenie: zapisanie lub wypisanie spowoduje wysłanie wiadomości do użytkowników';
+$lang['Send mail on HTML format'] = 'Wyślij email w formacie HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Dodaj wyświetlanie aktualnych zdjęć grupowane po dacie';
+$lang['Available only with HTML format'] = 'Dostępne tylko w formacie HTML';
+$lang['no write access'] = 'brak praw do zapisu';
+$lang['Permissions'] = 'Uprawnienia';
+$lang['private'] = 'prywatna';
+$lang['public'] = 'publiczna';
+$lang['Purge never used notification feeds'] = 'Wyczyść nigdy nie używane RSS feed';
+$lang['Purge sessions'] = 'Wyczyść sesje';
+$lang['randomly represented'] = 'reprezentowane losowo';
+$lang['registration date'] = 'data rejestracji';
+$lang['clean'] = 'wyczyść';
+$lang['Create this site'] = 'Utwórz tę stronę';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'testuj zdalną stronę';
+$lang['remove tags'] = 'Usuń tagi';
+$lang['Repair and optimize database'] = 'Napraw i optymalizuj bazę danych';
+$lang['selection'] = 'zaznaczenie';
+$lang['set to'] = 'ustaw na';
+$lang['singly represented'] = 'pojedynczy reprezentant';
+$lang['This site already exists'] = 'Taka strona już istnieje';
+$lang['created'] = 'utworzona';
+$lang['delete'] = 'usuń';
+$lang['delete this site and all its attached elements'] = 'usuń tę stronę oraz wszystkie załączone elementy';
+$lang['an error happened'] = 'wystąpił błąd';
+$lang['Local'] = 'Lokalny';
+$lang['Remote'] = 'Zdalny';
+$lang['update the database from files'] = 'aktualizuj bazę danych z plików';
+$lang['status'] = 'status';
+$lang['Directory'] = 'Katalog';
+$lang['sub-albums'] = 'pod-albumy';
+$lang['Synchronize metadata'] = 'Synchronizuj metadane';
+$lang['target'] = 'cel';
+$lang['Thumbnail'] = 'miniatura';
+$lang['Title'] = 'tytuł';
+$lang['Album list management'] = 'Zarządzanie albumami';
+$lang['Piwigo configuration'] = 'Konfiguracja Piwigo';
+$lang['Edit album'] = 'Edytuj album';
+$lang['Group management'] = 'Zarządzanie grupami';
+$lang['User list'] = 'Lista użytkowników';
+$lang['Edit photo information'] = 'Edytuj informacje o obrazie';
+$lang['Database synchronization with files'] = 'Synchronizacja bazy danych z plikami';
+$lang['all'] = 'wszystkie';
+$lang['height must be a number superior to'] = 'wysokość musi być liczbą większą od';
+$lang['width must be a number superior to'] = 'szerokość musi być liczbą większą od';
+$lang['for the file format'] = 'dla typu pliku';
+$lang['Photo unreachable or no support'] = 'Obraz niedostępny lub brak wsparcia';
+$lang['GD version'] = 'Wersja GD';
+$lang['General statistics'] = 'Ogólne statystyki';
+$lang['average time'] = 'czas średni';
+$lang['number of miniaturized photos'] = 'liczba plików, dla których zostały dodane miniatury';
+$lang['total time'] = 'czas sumaryczny';
+$lang['for this file format'] = 'dla tego rodzaju plików';
+$lang['unit mode'] = 'tryb jednostkowy';
+$lang['Unlocked'] = 'Odblokowane';
+$lang['unset'] = 'nie ustawione';
+$lang['Update albums informations'] = 'Aktualizuj informacje o albumie';
+$lang['Update photos information'] = 'Aktualizuj informacje o obrazach';
+$lang['Synchronize'] = 'Synchronizuj';
+$lang['reduce to single existing albums'] = 'zredukuj do pojedynczego istniejącego albumu';
+$lang['Choose an option'] = 'Wybierz opcję';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'pokaż maksimum informacji (dodanie albumu i elementów, usunięcie albumu i elementów)';
+$lang['Error list'] = 'Lista błędów';
+$lang['Errors caption'] = 'Nagłówki błędów';
+$lang['Detailed informations'] = 'Informacje szczegółowe';
+$lang['File/directory read error'] = 'Błąd odczytu pliku/katalogu';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Brak dostępu do pliku lub katalogu (nie istnieje lub brak uprawnień)';
+$lang['albums deleted in the database'] = 'albumy usunięte z bazy danych';
+$lang['photos deleted from the database'] = 'elementów usuniętych z bazy danych';
+$lang['photos candidates for metadata synchronization'] = 'zdjęć dla których można zsynchronizować metadane';
+$lang['photos informations synchronized with files metadata'] = 'informacji o elementach zsynchronizowanych z metadanymi plików';
+$lang['errors during synchronization'] = 'błędów podczas synchronizacji';
+$lang['albums added in the database'] = 'albumy dodane do bazy danych';
+$lang['photos added in the database'] = 'elementów dodanych do bazy danych';
+$lang['photos updated in the database'] = 'elementów zaktualizowanych w bazie danych';
+$lang['Search for new images in the directories'] = 'Szukaj nowych zdjęć w katalogach';
+$lang['added'] = 'dodane';
+$lang['deleted'] = 'usunięte';
+$lang['Metadata synchronization results'] = 'Wynik synchronizacji metadanych';
+$lang['only perform a simulation (no change in database will be made)'] = 'przeprowadź tylko symulację (nie będzie żadnych zmian w bazie danych)';
+$lang['Simulation'] = 'Symulacja';
+$lang['directories + files'] = 'katalogi + pliki';
+$lang['only directories'] = 'tylko katalogi';
+$lang['synchronize files structure with database'] = 'synchronizuj strukturę plików z bazą danych';
+$lang['synchronize files metadata with database photos informations'] = 'synchronizuj metadane z informacjami o elementach z bazy danych';
+$lang['even already synchronized photos'] = 'także elementy już zsynchronizowane';
+$lang['Used metadata'] = 'Wykorzystane metadane';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Nazwy plików i katalogów muszą się składać z liter, cyfr, znaków: "-", "_" lub "."';
+$lang['wrong filename'] = 'zła nazwa pliku';
+$lang['Upload'] = 'Wgrywanie';
+$lang['user "%s" added'] = 'użytkownik "%s" został dodany';
+$lang['User status'] = 'Status użytkownika';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Ogólny';
+$lang['user_status_guest'] = 'Gość';
+$lang['user_status_normal'] = 'Użytkownik';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Album wirtualny';
+$lang['Waiting'] = 'Oczekujące';
+$lang['default'] = 'domyślna';
+$lang['Toggle \'default group\' property'] = 'Właściwości przełączania \'grupy domyślnej\'';
+$lang['Advanced features'] = 'Zaawansowane';
+$lang['Overall'] = 'W sumie';
+$lang['Year'] = 'Rok';
+$lang['Month'] = 'Miesiąc';
+$lang['Day'] = 'Dzień';
+$lang['Pages seen'] = 'Oglądanych stron';
+$lang['Time'] = 'czas';
+$lang['IP'] = 'IP';
+$lang['Element'] = '';
+$lang['Section'] = 'sekcja';
+$lang['An information email was sent to group "%s"'] = 'Powiadomienie wysłane do członków grupy "%s"';
+$lang['Send an information email to group members'] = 'Wyślij powiadomienie do członków grupy';
+$lang['Group'] = 'Grupa';
+$lang['[%s] Visit album %s'] = '[%s] Odwiedź album %s';
+$lang['Hello,'] = 'Witaj,';
+$lang['See you soon.'] = 'Do zobaczenia wkrótce.';
+$lang['Discover album:'] = 'Odkryj album:';
+$lang['Mail content'] = 'Treść maila';
+$lang['none'] = 'brak';
+$lang['high'] = 'wysoki';
+$lang['other'] = 'inny';
+$lang['Element type'] = 'Typ elementu';
+$lang['Image id'] = 'ID obrazu';
+$lang['Summary'] = 'Podsumowanie';
+$lang['%d line filtered'] = '%d linia odfiltrowana';
+$lang['%d lines filtered'] = '%d linii odfiltrowanych';
+$lang['%d guest'] = '%d gość';
+$lang['%d guests'] = '%d gości';
+$lang['Hour'] = 'Godzina';
+$lang['guest'] = 'gość';
+$lang['default values'] = 'wartości domyślne';
+$lang['Guest cannot be deleted'] = 'Gość nie może zostać usunięty';
+$lang['Default user cannot be deleted'] = 'domyślny użytkownik nie może zostać usunięty';
+$lang['Purge history detail'] = 'Usuń szczegóły historii';
+$lang['Purge history summary'] = 'Usuń podsumowanie historii';
+$lang['Check integrity'] = 'Sprawdź integralność';
+$lang['Anomaly'] = 'Anomalie';
+$lang['Correction'] = 'Poprawki';
+$lang['Automatic correction'] = 'Automatyczne poprawki';
+$lang['Impossible automatic correction'] = 'Automatyczna poprawka niemożliwa';
+$lang['Correction applied with success'] = 'Poprawki zastosowana pomyślnie';
+$lang['Correction applied with error'] = 'Poprawka zastosowana, ale wystąpił błąd';
+$lang['%d anomaly has been detected.'] = 'Została wykryta %d anomalia.';
+$lang['%d anomalies have been detected.'] = 'Zostało wykrytych %d anomalii.';
+$lang['%d anomaly has been corrected.'] = '%d anomalii została poprawnie wykrytych.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalii zostało poprawnie wykrytych.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalia nie została poprawiona.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalii nie zostało poprawionych.';
+$lang['Go to %s or %s for more informations'] = 'Aby uzyskać więcej informacji przejdź do %s lub %s';
+$lang['the forum'] = 'forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'Wartość %s nie jest poprawna, ponieważ exif nie jest wspierany';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = 'Wartość %s musi być ustawiona na false w pliku konfiguracyjnym config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'Główny użytkownik "gość" nie istnieje';
+$lang['Main "guest" user status is incorrect'] = 'Status głównego użytkownika "gość" jest niepoprawny';
+$lang['Default user does not exist'] = 'Domyślny użytkownik nie istnieje';
+$lang['Main "webmaster" user does not exist'] = 'Główny użytkownik "webmaster" nie istnieje';
+$lang['Main "webmaster" user status is incorrect'] = 'Status głównego użytkownika "webmaster" jest niepoprawny';
+$lang['User "%s" created with "%s" like password'] = 'Użytkownik "%s" został utworzony z hasłem "%s"';
+$lang['Status of user "%s" updated'] = 'Status użytkownika "%s" został zaktualizowany';
+$lang['add new photos to caddie'] = 'dodaj nowe elementy do koszyka';
+$lang['No display'] = 'Brak wyświetlania';
+$lang['Classic display'] = 'Wyświetlanie klasyczne';
+$lang['Hoverbox display'] = 'Wyświetlanie w ramkach w kształcie poduszek';
+$lang['Mail address is obligatory for all users'] = 'Adres email jest obowiązkowy dla wszystkich użytkowników';
+$lang['Minimum privacy level'] = 'Minimalny poziom prywatności';
+$lang['Privacy level'] = 'Poziom prywatności';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakty';
+$lang['Level 2'] = 'Znajomi';
+$lang['Level 4'] = 'Rodzina';
+$lang['Level 8'] = 'Administratorzy';
+$lang['Reinitialize check integrity'] = 'Rozpocznij jeszcze raz sprawdzenie integralności';
+$lang['Check all'] = 'Zaznacz wszystkie';
+$lang['Uncheck all'] = 'Odznacz wszystkie';
+$lang['Check automatic corrections'] = 'Automatycznie sprawdzaj poprawki';
+$lang['Apply selected corrections'] = 'Zastosuj wybrane poprawki';
+$lang['Ignore selected anomalies'] = 'Ignoruj wybrane anomalie';
+$lang['Refresh'] = 'Odśwież';
+$lang['The anomaly will be ignored until next application version'] = 'Anomalia zostania zignorowana aż do następnej aktualizacji wersji';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Poprawka anomalii anuluje fakt, że została zignorowana';
+$lang['%d anomaly has been ignored.'] = '%d anomalia została zignorowana.';
+$lang['%d anomalies have been ignored.'] = '%d anomalii zostało zignorowanych.';
+$lang['Plugins which need upgrade'] = 'Wtyczki wymagające aktualizacji';
+$lang['Plugin list'] = 'Lista wtyczek';
+$lang['Check for updates'] = 'Sprawdź dostępność aktualizacji';
+$lang['Other plugins'] = 'Inne wtyczki';
+$lang['Last revisions'] = 'Ostatnie wersje';
+$lang['Are you sure you want to delete this plugin?'] = 'Czy na pewno chcesz usunąć tę wtyczkę?';
+$lang['Are you sure you want to install this plugin?'] = 'Czy na pewno chcesz zainstalować tę wtyczkę?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Czy na pewno chcesz zainstalować aktualizację? Musisz zweryfikować czy aktualna wersja nie wymaga odinstalowania.';
+$lang['Plugin has been successfully copied'] = 'Wtyczka została poprawnie skopiowana';
+$lang['You might go to plugin list to install and activate it.'] = 'Aby zainstalować lub aktywować wtyczkę udaj się do listy wtyczek.';
+$lang['Can\'t create temporary file.'] = 'Nie można stworzyć pliku tymczasowego.';
+$lang['Can\'t download archive.'] = 'Nie można pobrać archiwum.';
+$lang['Can\'t read or extract archive.'] = 'Nie można odczytać lub rozpakować archiwum.';
+$lang['An error occured during extraction (%s).'] = 'Błąd podczas rozpakowywania (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Sprawdź uprawnienia (CHMOD) do katalogu "plugins" oraz podfolderów.';
+$lang['Can\'t connect to server.'] = 'Nie można połączyć się do serwera.';
+$lang['Purge compiled templates'] = 'Usuń skompilowane szablony';
+$lang['ACCESS_0'] = 'Wolny dostęp';
+$lang['ACCESS_1'] = 'Dostęp dla wszystkich';
+$lang['ACCESS_2'] = 'Dostęp dla zapisanych';
+$lang['ACCESS_3'] = 'Dostęp dla Administratorów';
+$lang['ACCESS_4'] = 'Dostęp dla webmasterów';
+$lang['ACCESS_5'] = 'Brak dostępu';
+$lang['Support'] = 'Wsparcie';
+$lang['Documentation'] = 'Dokumentacja';
+$lang['A new version of Piwigo is available.'] = 'Dostępna jest nowa wersja Piwigo.';
+$lang['Piwigo Administration'] = 'Administracja Piwigo';
+$lang['Piwigo version'] = 'Wersja Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Używasz aktualnej wersji Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Zainstalowana wersja %s [%s] jest niekompatybilna z wymaganą wersją [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Musisz zaktualizować swój system by ......... w przeciwnym wypadku aplikacja nie będzie działała poprawnie lub w ogóle';
+$lang['Deleted on'] = 'Usunięte';
+$lang['Last hit'] =  'Ostatnie wejście';
+$lang['GD library is missing'] = 'Brak biblioteki GD';
+$lang['Templates'] = 'Szablony';
+$lang['Extend for templates'] = 'Rozszerz dla szablony';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'Zamienniki oryginalnych szablonów przez spersonalizowane szablony z katalogu template-extension';
+$lang['Replacers (customized templates)'] = 'Zamienniki (spersonalizowane szablony)';
+$lang['Original templates'] = 'Oryginalne szablony';
+$lang['Optional URL keyword'] = 'Opcjonalne słowo klucz dla URL';
+$lang['Templates configuration has been recorded.'] = 'Konfiguracja szablonów została zapisana.';
+$lang['All optimizations have been successfully completed.'] = 'Wszystkie optymalizacje zakończone pomyślnie.';
+$lang['Optimizations have been completed with some errors.'] = 'Optymalizacje zakończone z kilkoma błędami.';
+$lang['Modify information'] = 'Modyfikuj informacje';
+$lang['nothing'] = 'nic';
+$lang['overrides existing values with empty ones'] = 'nadpisuje istniejące wartości pustymi';
+$lang['Manage photo ranks'] = 'Sortowanie zdjęć';
+$lang['Edit ranks'] = 'Edytuj rankingi';
+$lang['No photo in this album'] = 'Brak elementó w tym albumie';
+$lang['Images manual order was saved'] = 'Zapisano własną kolejność zdjęć';
+$lang['ranks'] = 'rankingi';
+$lang['Drag to re-order'] = 'Przesuń aby zreorganizować';
+$lang['Quick Local Synchronization'] = 'Szybka synchronizacja lokalna';
+$lang['No photo can be deleted'] = 'Żadne zdjęcie nie zostało usunięte';
+$lang['Delete selected photos'] = 'Usuń zaznaczone zdjęcie';
+$lang['%d photo was deleted'] = '%d zdjęcie zostało usunięte';
+$lang['%d photos were deleted'] = '%d zdjęć zostało usuniętych';
+$lang['Downloads'] = 'Pobrania';
+$lang['Released on'] = 'Opublikowano';
+$lang['Number of downloads'] = 'Liczba pobrań';
+$lang['Piwigo Announcements Newsletter'] = 'Biuletyn Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Zapisz się, aby otrzymywać biuletyn Piwigo, jeśli chcesz mieć bieżące informacje o projekcie Piwigo. Kiedy nowa wersja Piwigo zostanie opublikowana (czasami zawierająca konieczne do zainstalowania poprawki bezpieczeństwa) oraz gdy zajdą ważne zdarzenia dotyczące projektu - wtedy otrzymasz wiadomość e-mail z biuletynem Piwigo. Powinno to być kilka wiadomości w ciągu roku.';
+$lang['Subscribe %s'] = 'Zapisz %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Zapisz %s do angielskiej wersji biuletynu Piwigo';
+$lang['Purge search history'] = 'Usuń historię przeszukiwań';
+$lang['Hide'] = 'Ukryj';
+$lang['Miscellaneous'] = 'Informacje różne';
+$lang['Unable to check for upgrade.'] = 'Nie można sprawdzić aktualizacji.';
+$lang['Operation in progress'] = 'Przetwarzanie obróbki.';
+$lang['Please wait...'] = 'Proszę czekać...';
+$lang['Password is missing. Please enter the password.'] = 'Brak hasła. Proszę wprowadzić hasło.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Brak potwierdzenia hasła. Proszę potwierdzić wybrane hasło.';
+$lang['Allow users to edit their own comments'] = 'Zezwól użytkownikom edytować swoje komentarze';
+$lang['Allow users to delete their own comments'] = 'Zezwól użytkownikom usuwać swoje komentarze';
+$lang['Email administrators when a comment is modified'] = 'Wyślij email do administratorów gdy komentarz był modyfikowany';
+$lang['Email administrators when a comment is deleted'] = 'Wyślij email do administratorów gdy komentarz został usunięty';
+$lang['Cannot delete the old permalink !'] = 'Stary link permanentny nie może być usunięty!';
+$lang['Hit'] = 'Wejść';
+$lang['Tools'] = 'Narzędzia';
+$lang['Photos'] = 'Zdjęcia';
+$lang['Themes'] = 'Szablony wyglądu ';
+$lang['Instructions to use Piwigo'] = 'Instrukcje używania Piwigo';
+$lang['Installed Themes'] = 'Zainstalowane szablony wyglądu ';
+$lang['Add New Theme'] = 'Dodaj nowy szablon wyglądu';
+$lang['Forbid this theme to users'] = 'Zabroń używania tego szablonu wyglądu przez użytkowników';
+$lang['Set as default theme for unregistered and new users'] = 'Ustaw jako domyślny szablon wyglądu dla niezarejestrowanych użytkowników';
+$lang['unknown'] = 'nieznany';
+$lang['Upload Photos'] = 'Wgrywanie zdjęć';
+$lang['Drop into album'] = 'Wrzuć do albumu';
+$lang['+ Add an upload box'] = '+ Dodaj skrzynki wgrywania';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Tworzy katalog "%s" w głównym katalogu Twojej instalacji Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dodaj prawa do zapisu (chmod 777) do katalogu "%s" w głównym katalogu Twojej instalacji Piwigo';
+$lang['existing album'] = 'istniejący album';
+$lang['create a new album'] = 'stwórz nowy album';
+$lang['Album name'] = 'Nazwa albumu';
+$lang['Album "%s" has been added'] = 'Kategoria "%s" została dodana';
+$lang['Uploaded Photos'] = 'Wgrane zdjęcia';
+$lang['%d photos uploaded'] = '%d wgranych zdjęć';
+$lang['Privacy level set to "%s"'] = 'Poziom prywatności ustawiony na "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Kategoria "%s" aktualnie zawiera %d zdjęć';
+$lang['Manage this set of %d photos'] = 'Zarządzaj tym zbiorem %d zdjęć';
+$lang['Select files'] = 'Wybierz pliki';
+$lang['Everybody'] = 'Każdy';
+$lang['Who can see these photos?'] = 'Kto może oglądać te zdjęcia?';
+$lang['Settings'] = 'Ustawienia';
+$lang['Resize'] = 'Zmień wymiary';
+$lang['Maximum width'] = 'Maksymalna szerokość';
+$lang['pixels'] = 'pikseli';
+$lang['Maximum height'] = 'Maksymalna wysokość';
+$lang['Image Quality'] = 'Jakość obrazu';
+$lang['Save Settings'] = 'Zapisz Ustawienia';
+$lang['Your configuration settings are saved'] = 'Twoje ustawienia konfiguracji zostały zapisane';
+$lang['Active Themes'] = 'Aktywne szablony wyglądu ';
+$lang['Add write access to the "%s" directory'] = 'Dodaj ustawienia do zapisu do katalogu "%s"';
+$lang['Administration Home'] = 'Administracja';
+$lang['Change Admin Colors'] = 'Zmień kolory administracyjne';
+$lang['Delete this theme'] = 'Usuń ten szablon wyglądu';
+$lang['Directory does not exist'] = 'Katalog nie istnieje';
+$lang['Download,'] = 'Pobierz,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronizacja';
+$lang['Get Support on Piwigo Forum'] = 'Uzyskaj pomoc na forum Piwigo';
+$lang['Help Me'] = 'Pomóż Mi';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ten szablon wyglądu nie może zostać aktywowany, ponieważ brakuje szablonu nadrzędnego: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ten szablon wyglądu nie może zostać usunięty, ponieważ zależą od niego inne szablony: %s';
+$lang['Inactive Themes'] = 'Nieaktywne szablony wyglądu ';
+$lang['Install on your computer,'] = 'Zainstaluj na swoim komputerze,';
+$lang['Make this theme available to users'] = 'Daj dostęp do szablonu wyglądu użytkownikom';
+$lang['Page end'] = 'Koniec strony';
+$lang['Piwigo Uploader'] = 'Wgrywanie Piwigo';
+$lang['Read Piwigo Documentation'] = 'Czytaj dokumentację Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Uruchom pLoader i dodaj swoje zdjęcia.';
+$lang['Switch to clear or dark colors for administration'] = 'Przełącz pomiędzy czystym i ciemnym kolorem administracji';
+$lang['Theme has been successfully installed'] = 'Szablon wyglądu został pomyślnie zainstalowany';
+$lang['Visit Gallery'] = 'Odwiedź galerię';
+$lang['Visit Piwigo project website'] = 'Odwiedź stronę projektu Piwigo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader służy do <em>Piwigo Uploader</em>. pLoader przygotuje zdjęcia i prześle je do Twojej galerii Piwigo, z Twojego komputera.';
+$lang['Guest Settings'] = 'Ustawienia gości';
+$lang['Main Page'] = 'Strona główna';
+$lang['Photo Page'] = 'Strona zdjęć';
+$lang['Activate Navigation Bar'] = 'Aktywuj pasek nawigacji';
+$lang['Activate Navigation Thumbnails'] = 'Aktywuj pasek nawigacji z miniaturami';
+$lang['Activate icon "%s"'] = 'Aktywuj ikonę "%s"';
+$lang['Photo Properties'] = 'Właściwości zdjęcia';
+$lang['Allow user customization'] = 'Zezwól na dostosowanie przez użytkowników';
+$lang['Languages'] = 'Języki';
+$lang['Installed Languages'] = 'Zainstalowane języki';
+$lang['Add New Language'] = 'Dodaj nowy język';
+$lang['Language has been successfully installed'] = 'Język został zainstalowany pomyślnie';
+$lang['Select:'] = 'Wybierz:';
+$lang['None'] = 'Brak';
+$lang['Invert'] = 'Odwróć';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nie można zdezaktywować szablonu wyglądu, ponieważ przynajmniej jeden musi być aktywny.';
+$lang['Webmaster status is required.'] = 'Status Webmastera jest wymagany.';
+$lang['Bound Theme'] = 'Powiązany szablon wyglądu ';
+$lang['Allow rating'] = 'Zezwól na oceny';
+$lang['Select at least one comment'] = 'Wybierz przynajmniej jeden komentarz';
+$lang['Active Plugins'] = 'Aktywne wtyczki';
+$lang['Inactive Plugins'] = 'Nieaktywne wtyczki';
+$lang['Missing Plugins'] = 'Brakujące wtyczki';
+$lang['Uninstalled Plugins'] = 'Niezainstalowane wtyczki';
+$lang['By %s'] = 'Przez %s';
+$lang['Visit plugin site'] = 'Odwiedź stronę z wtyczkami';
+$lang['Active Languages'] = 'Aktywne języki';
+$lang['Delete this language'] = 'Usuń ten język';
+$lang['Forbid this language to users'] = 'Zabroń używania tego języka użytkownikom';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nie można zdezaktywować tego języka. Najpierw ustaw inny język jako domyślny.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nie można zdezaktywować tego języka, ponieważ musisz posiadać co najmniej jeden język.';
+$lang['Inactive Languages'] = 'Nieaktywne języki';
+$lang['Make this language available to users'] = 'Daj dostęp do tego języka użytkownikom';
+$lang['Set as default language for unregistered and new users'] = 'Ustaw jako domyślny język dla niezarejestrowanych oraz nowych użytkowników';
+$lang['Add Photos'] = 'Dodaj zdjęcia';
+$lang['The following tag was deleted'] = 'Ten tag został usunięty';
+$lang['Virtual Links'] = 'Wirtualne linki';
+$lang['There is no other language available.'] = 'Nie ma dostępnego innego języka.';
+$lang['There is no other plugin available.'] = 'Nie ma dostępnej innej wtyczki.';
+$lang['There is no other theme available.'] = 'Nie ma dostępnego innego szablon wyglądu .';
+$lang['By rank'] = 'Po rankingu';
+$lang['Manual order'] = 'Własna kolejność';
+$lang['Add another set of photos'] = 'Dodaj inny zbiór zdjęć';
+$lang['Order of menubar items has been updated successfully.'] = 'Kolejność elementów paska menu została zaktualizowana pomyślnie.';
+$lang['This theme was not designed to be directly activated'] = 'Szablon wyglądu nie został zaprojektowany tak, by aktywować go bezpośrednio.';
+$lang['Who can see this photo?'] = 'Kto może oglądać to zdjęcie?';
+$lang['Pending Comments'] = 'Oczekujące komentarze';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'W twoim pliku php.ini, parametr upload_max_filesize (%sB) jest większy niż post_max_size (%sB), powinieneś zmienić te ustawienia';
+$lang['Exif extension not available, admin should disable exif use'] = 'Rozszerzenie exif jest nie dostępne, administrator powinien usunąć korzystanie z exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze upload_max_filesize w pliku php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze post_max_size w pliku php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze MAX_FILE_SIZE w formularzu HTML';
+$lang['The uploaded file was only partially uploaded'] = 'Plik został wgrany tylko częściowo';
+$lang['No file was uploaded'] = 'Nie został wgrany żaden plik';
+$lang['Missing a temporary folder'] = 'Brak katalogu tymczasowego';
+$lang['Failed to write file to disk'] = 'Błąd zapisu na dysku';
+$lang['File upload stopped by extension'] = 'Wgrywanie pliku zostało zatrzymane przez rozszerzenie';
+$lang['Unknown upload error'] = 'Nieznany błąd podczas wgrywania';
+$lang['Error on file "%s" : %s'] = 'Błąd w pliku"%s" : %s';
+$lang['Menu Management'] = 'Menu';
+$lang['automatic order'] = 'automatyczna kolejność';
+$lang['manual order'] = 'własna kolejność';
+$lang['Albums automatically sorted'] = 'Albumy sortowane automatycznie';
+$lang['Batch Manager'] = 'Manadżer wsadowy';
+$lang['include child albums'] = 'zawieraj podalbumy';
+$lang['Selection'] = 'Zaznaczenie';
+$lang['Action'] = 'Akcja';
+$lang['Set author'] = 'Ustaw autora';
+$lang['Set title'] = 'Ustaw tytuł';
+$lang['Set creation date'] = 'Ustaw datę utworzenia';
+$lang['Apply action'] = 'Zastosuj akcje';
+$lang['on the %d selected photos'] = 'na %d zaznaczonych zdjęć';
+$lang['%d of %d photos selected'] = '%d z %d zaznaczonych zdjęć';
+$lang['No photo selected, %d photos in current set'] = 'Nie zostało wybrane żadne zdjęcie, %d zdjęć w aktualnym zestawie';
+$lang['All %d photos are selected'] = '%d wszystkich zaznaczonych zdjęć';
+$lang['remove this filter'] = 'usuń ten filtr';
+$lang['Duplicates'] = 'duplikaty';
+$lang['Add a filter'] = 'Dodaj filtr';
+$lang['Remove all filters'] = 'Usuń wszystkie filtry';
+$lang['Refresh photo set'] = 'Odśwież zestaw zdjęć';
+$lang['The whole page'] = 'Całą strona';
+$lang['The whole set'] = 'Cały zestaw';
+$lang['No photo in the current set.'] = 'Brak zdjęć w wybranym zestawie.';
+$lang['No photo selected, no action possible.'] = 'Brak wybranych zdjęć, niedostępna jest żadna akcja.';
+$lang['Choose an action'] = 'Wybierz akcję';
+$lang['remove author'] = 'usuń autora';
+$lang['Type here the author name'] = 'Wpisz tutaj nazwę autora';
+$lang['remove title'] = 'usuń tytuł';
+$lang['Type here the title'] = 'Wpisz tutaj tytuł';
+$lang['remove creation date'] = 'usuń datę stworzenia';
+$lang['Album photos associated to the following albums: %s'] = 'Zdjęcia albumu są powiązane z następującymi albumami: %s';
+$lang['Delete orphan tags'] = 'Usuń niepowiązane tagi';
+$lang['delete photo'] = 'usuń zdjęcie';
+$lang['Orphan tags deleted'] = 'Niepowiązane tagi usunięto';
+$lang['Remove from caddie'] = 'Usuń z koszyk';
+$lang['Week starts on'] = 'Tydzień zaczyna się w';
+$lang['You have %d orphan tags: %s.'] = 'Masz %d niepowiązanych tagów: %s.';
+$lang['Themes which need upgrade'] = 'Szablony wyglądu wymagające aktualizacji';
+$lang['Languages which need upgrade'] = 'Języki wymagające aktualizacji';
+$lang['All themes are up to date.'] = 'Wszystkie szablony wyglądu są aktualne.';
+$lang['All plugins are up to date.'] = 'Wszystkie wtyczki są aktualne.';
+$lang['All languages are up to date.'] = 'Wszystkie języki są aktualne.';
+$lang['Visit theme site'] = 'Odwiedź stronę szablonu wyglądu';
+$lang['Visit language site'] = 'Odwiedź stronę języka';
+$lang['New Version'] = 'Nowa wersja';
+$lang['Obsolete Plugins'] = 'Przestałe wtyczki';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UWAGA! Ta wtyczka wydaje się nie być kompatybilna z tą wersją Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Czy jednak chcesz aktywować?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TA WTYCZKA JEST TERAZ CZĘŚCIĄ PODSTAWOWEJ WERSJI PIWIGO! ODINSTALUJ JĄ TERAZ!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'BŁĄD: BRAK WTYCZKI CHOĆ JEST ZAINSTALOWANA! ODINSTALUJ JĄ TERAZ.';
+$lang['display'] = 'wyświetlanie';
+$lang['new'] = 'nowy';
+$lang['No results'] = 'Brak wyników';
+$lang['Searching...'] = 'Wyszukiwanie...';
+$lang['Type in a search term'] = 'Wpisz frazę do wyszukania';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktywuj ikonę "nowe" obok albumów i zdjęć';
+$lang['Deactivate all'] = 'Deaktywuj wszystko';
+$lang['Default photos order'] = 'Domślne sortowanie zdjęć';
+$lang['Restore'] = 'Przywróć';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Przywróć domyślną konfigurację. Stracisz ustawienia wtyczek!';
+$lang['Show menubar'] = 'Pokazuj belkę z menu';
+$lang['Thumbnails generation in progress...'] = 'Trwa tworzenie miniatur...';
+$lang['Photos generation in progress...'] = 'Trwa tworzenie zdjęć...';
+$lang['%s photos have been regenerated'] = 'Stworzono %s zdjęć';
+$lang['%s photos can not be regenerated'] = '%s zdjęć nie mogło zostać stworzonych';
+$lang['Updates'] = 'Aktualizacje';
+$lang['Update in progress... Please wait.'] = 'Trwa aktualizacja... Proszę czekać.';
+$lang['Ignore this update'] = 'Ignoruj tę aktualizację';
+$lang['Reset ignored updates'] = 'Zresetuj ignorowane aktualizacje';
+$lang['Update All'] = 'Aktualizuj wszystko';
+$lang['ERROR'] = 'BŁĄD';
+$lang['Update Complete'] = 'Aktualizacja zakończona';
+$lang['Rate'] = 'Ocena';
+$lang['Average rate'] = 'Średnia ocena';
+$lang['Learn more'] = 'Dowiedz się więcej';
+$lang['Add a criteria'] = 'Dodaj kryteria';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nie możesz zdefiniować domyślnej kolejności zdjęć, gdyż stworzono własne ustawienia w konfiguracji plików lokalnych .';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Określiłeś <i>$conf[\'order_by\']</i> w lokalnym plików konfiguracji. Parametr ten jest przestarzały. Usuń go lub zmień jego nazwę na <i>$conf[\'order_by_custom\']</i> !';
+$lang['Piwigo Update'] = 'Aktualizacja Piwigo';
+$lang['Extensions Update'] = 'Aktualizacja rozszerzeń';
+$lang['All extensions are up to date.'] = 'Wszystkie rozszerzenia są aktualne.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Poniższe rozszerzenia mogą być nieaktualne z nową wersją Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Poniższe szablony wyglądu mogą być nieaktualne z nową wersją Piwigo:';
+$lang['I decide to update anyway'] = 'Aktualizuj mimo wszystko';
+$lang['Update to Piwigo %s'] = 'Aktualizuj do Piwigo %s';
+$lang['Two updates are available'] = 'Dostępne są dwie aktualizacje';
+$lang['This is a minor update, with only bug corrections.'] = 'Jest to mała aktualizacja usuwająca tylko znalezione błędy.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Jest to duża aktualizacja z <a href="%s">nowymi funkcjami</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Niektóre szablony wyglądu i rozszerzenia mogą nie być jeszcze dostępne.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Możesz aktualizować bezpośrednio do Piwigo %s, bez potrzeby wcześniejszej aktualizacji do wersji %s (zalecane).';
+$lang['Save Template Directory'] = 'Zachowaj katalog szablonów';
+$lang['Dump Database'] = 'Zrzut Bazy Danych';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Dołącz informacje o historii (Uwaga: limit pamięci serwera może zostać przekroczony)';
+$lang['Unable to dump database.'] = 'Błąd zrzucania bazy danych.';
+$lang['Some upgrades are available for extensions.'] = 'Niektóre rozszerzenia posiadają aktualizacje.';
+$lang['Ignore All'] = 'Ignoruj wszystko';
+$lang['Crop'] = 'Przytnij';
+$lang['Width'] = 'Szerokość';
+$lang['Height'] = 'Wysokość';
+$lang['Follow Orientation'] = 'Zgodnie z orientacją';
+$lang['Graphics Library'] = 'Biblioteki Graficzne';
+$lang['... or '] = '... lub ';
+$lang['Create'] = 'Utwórz';
+$lang['Start Upload'] = 'Rozpocznij wysyłanie';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Używasz trybu Flash. Problem? Spróbuj <a href="%s">interfejsu przeglądarkowego</a>.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Używasz trybu przeglądarki. Wypróbuj <a href="%s">trybu Flash</a>.';
+$lang['Maximum file size: %sB.'] = 'Maksymalny rozmiar pliku: %sB.';
+$lang['Allowed file types: %s.'] = 'Dostępne typy plików: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Przybliżona maksymalna rozdzielczość: %dM pikseli (tj. %dx%d pikseli).';
+$lang['Manage Permissions'] = 'Zarządzaj uprawnieniami';
+$lang['Photo %s of %s'] = 'Zdjęcie %s z %s';
+$lang['show details'] = 'pokaż szczegóły';
+$lang['hide details'] = 'ukryj szczegóły';
+$lang['Merge tags'] = 'Połącz tagi';
+$lang['Select the destination tag'] = 'Wybierz tag docelowy';
+$lang['(this tag will be deleted)'] = '(ten tag zostanie usunięty)';
+$lang['Confirm merge'] = 'Zatwierdź łączenie';
+$lang['Merge selected tags'] = 'Połącz wybrane tagi';
+$lang['No destination tag selected'] = 'Nie wybrano taga docelowego';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Tagi <em>%s</em> połączono w tag <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Wybierz co najmniej dwa tagi do łączenia';
+$lang['Select an album'] = 'Wybierz album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo stworzy domyślnie nową stronę z twoich zdjęć w jakości HD.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Jeśli wersja HD jest niedostępna a bieżący rozmiar jest większy niż rozmiar zmiany, Piwigo przesunie zdjęcia jako HD i stworzy z nich pomniejszone wersje.'; 
+$lang['An error has occured during upgrade.'] = 'Wystąpił błąd podczas aktualizacji.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Wystąpił błąd podczas rozpokowywania. Sprawdź uprawnienia do plików w katalogu gdize jest zainstalowane piwigo.<br><a href="%s">Kliknij aby zobaczyć błędy</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nie może ściągnąć pliku aktualizacji z serwera';
+$lang['Zoom'] = 'Powiększenie';
+$lang['Add to caddie'] = 'Dodaj do koszyka';
+$lang['Add tags'] = 'Dodaj tagi';
+$lang['Last import'] = 'Ostatnie importowanie';
+$lang['Photo name'] = 'Nazwa zdjęcia';
+$lang['Predefined filter'] = 'Filtr predefiniowany';
+$lang['With no album'] = 'Bez albumu';
+$lang['With no tag'] = 'Bez tagów';
+$lang['With no virtual album'] = 'Bez wirtualnego albumu';
+$lang['%s has been successfully updated.'] = '%s zostało pomyślnie zaktualizowanych.';
+$lang['Activate comments'] = 'Aktywuj komentarze';
+$lang['Default comments order'] = 'Domyślna kolejność komentarzy';
+$lang['Send connection settings by email'] = 'Wyślij dane logowania emailem';
+$lang['The original image quality must be a number between %d and %d'] = 'Oryginalna jakość musi być liczbą pomiędzy %d i %d';
+$lang['The original maximum height must be a number between %d and %d'] = ' Oryginalna maksymalna wysokość musi być liczbą pomiędzy %d i %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Oryginalna maksymalna szerokość musi być liczbą pomiędzy %d i %d';
+$lang['Resize after upload'] = 'Zmień rozmiar po wgraniu';
+$lang['Original Size'] = 'Oryginalny Rozmiar';
+$lang['A locked gallery is only visible to administrators'] = 'Zablokowana galeria jest widoczna tylko dla administratorów';
+$lang['Unlock gallery'] = 'Odblokuj galerię';
+$lang['Gallery unlocked'] = 'Galeria odblokowana';
+$lang['Notify administrators when a comment is'] = 'Powiadom administratorów jeżeli komentarz jest';
+$lang['modified'] = 'zmodyfikowany';
+$lang['pending validation'] = 'oczekuje na zatwierdzenie';
+$lang['Save visits in history for'] = 'Zapisz historię odwiedzin dla';
+$lang['simple visitors'] = 'zwykli użytkownicy';
+$lang['registered users'] = 'zarejestrowanych użytkowników';
+$lang['administrators'] = 'administratorów';
+$lang['This album contains %d photos, added on %s.'] = 'Ten album zawiera %d zdjęć, dodanych %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Ten album zawiera %d zdjęć, dodanych między %s a %s.';
+$lang['This album contains no photo.'] = 'Ten album nie zawiera zdjęć.';
+$lang['Not cropped correctly?'] = 'Rozmiar nie zmieniony poprawnie?';
+$lang['Center of interest'] = 'Centrum zainteresowania';
+$lang['Move to album'] = 'Przenieś do albumu';
+
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo na Androida</em> aplikacja daje możliwość połączenia Twojej galerii Piwigo z Twoim telefonem lub tabletem opartym na Androidzie. Możesz tworzyć albumy i wysyłać wiele zdjęć jednocześnie.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo na iOS</em> aplikacja daje możliwość połączenia Twojej galerii Piwigo z Twoim iPhonem, iPadem lub iPodem. Możesz tworzyć albumy i wysyłać wiele zdjęć jednocześnie.';
+$lang['Applications'] = 'Aplikacje';
+$lang['Available on'] = 'Dostępne na';
+$lang['Available versions for'] = 'Wersje dostępne na';
+$lang['Cancel'] = 'Anuluj';
+$lang['Piwigo for Android'] = 'Piwigo na Androida';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo na iOS (iPhone, iPad, iPod Touch)';
+$lang['any visitor can see this album'] = 'wszyscy odwiedzający galerię zobaczą ten album';
+$lang['apply automatic sort order'] = 'Zastosuj automatyczną kolejność sortowania';
+$lang['Automatic sort order'] = 'Automatyczna kolejność sortowania';
+$lang['cancel manual order'] = 'Anuluj własne ustawienia kolejności';
+$lang['No group is permitted to see this private album'] = 'Do tego prywatnego albumu nie przydzielono żadnej grupy';
+$lang['Save manual order'] = 'Zapisz własne ustawienia kolejności';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'odwiedzający galerię muszą się zalogować i mieć uprawnienia do oglądania tego albumu';
+$lang['You can activate only one mobile theme.'] = 'Możesz aktywować tylko jeden mobilny szablon wyglądu';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u użytkowników dostało zezwolenie automatycznie, bo należą do grupy, której udzielono zezwolenia';
+$lang['custom'] = 'Własne';
+$lang['Delete multiple size images'] = 'Kasuj obrazy w wielu rozmiarach';
+$lang['Generate multiple size images'] = 'Twórz obrazy w wielu rozmiarach';
+$lang['Groups and users'] = 'Użytkownicy i grupy';
+$lang['include photos with lower privacy level'] = 'dołącz zdjęcia z niższym poziomem prywatności';
+$lang['List'] = 'Lista';
+$lang['Permission granted for groups'] = 'Zezwolenia udzielone grupom';
+$lang['Permission granted for users'] = 'Zezwolenia udzielone użytkownikom';
+$lang['Permission management'] = 'Zarządzanie zezwoleniami';
+$lang['Select groups...'] = 'Wybierz grupy...';
+$lang['Select users...'] = 'Wybierz użytkowników...';
+$lang['There is no group in this gallery.'] = 'Do tej galerii nie przydzielono żadnej grupy';
+$lang['Web Form'] = 'Forumlarz www';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom jest oprogramowaniem do zdjęć zaprojektowanym do zarządzania dużą ilością cyfrowych obrazów oraz prac po ich stworzeniu.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na Linux po prostu instalujesz Shotwell swoim menadżerem pakietów a następnie aktywujesz opcję publikowania Piwigo.';
+$lang['Piwigo publish plugin for digiKam'] = 'Wtyczka Piwigo dla digiKam.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Wtyczka Piwigo Publish dla Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Wtyczka Piwigo dla Shotwell.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell jest oprogramowaniem typu open source do zarządzania zdjęciami na systemie Linux. Jest domyślnym menadżerem zdjęć dla dystrybucji Ubuntu oraz Fedora.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Wtyczka Piwigo Publish powala na eksportowanie i synchronizację zdjęć bezpośrednio z Lightroom do Twojej galerii Piwigo.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture jest narzędziem do poprawiania oraz zarządzania bibliotekami zdjęć na Mac\'u.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture jest zaprojektowany dla profesjonalnych fotografów, ale posiada prostotę iPhoto.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam jest zaawansowanym, darmowym oprogramowaniem do zarządzania zdjęciami dla systemów Linux, Windows oraz MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam jest zaprojektowany dla fotografów, którzy chcą przeglądac, zarządzać, edytować, polepszać, organizować, tagować oraz współdzielić zdjęcia.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkcje to m.in. przeglądanie, tworzenie albumów oraz wgrywanie zdjęć.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto jest domyślnym oprogramowaniem zarządzania zdjęciami dla MacOSX. Wtyczka eksportu Piwigo pozwoli Ci tworzyć nowe albumy i eksportować zdjęcia bezpośrednio z iPhoto do galerii Piwigo.';
+$lang['Piwigo export plugin for Aperture'] = 'Wtyczka Piwigo dla Aperture.';
+$lang['Piwigo export plugin for iPhoto'] = 'Wtyczka Piwigo dla iPhoto.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Klient RemoteGallery dla Androida) jest klientem Piwigo na platformę Android (open source na licencji GPLv3).';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Wtyczka eksportu Piwigo, pozwala Ci na łatwe tworzenie albumów oraz eksport zdjęć.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Aby eksportować zdjęcia z digiKam, zainstaluj digiKam oraz wtyczki Kipi.';
+$lang['Apply watermark if height is bigger than'] = 'Dodaj znak wodny, jeśli wysokość jest większa niż';
+$lang['Apply watermark if width is bigger than'] = 'Dodaj znak wodny, jeśli szerokość jest większa niż';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Domyślnie, wybierany jest środek zdjęcia.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Dla obciętych zdjęć np. do kwadratu, Piwigo będzie starać się wyśrodkować na interesującym obszarze zdjęcia.';
+$lang['Opacity'] = 'Przezroczystość';
+$lang['Photo sizes with crop'] = 'Rozmiary zdjęć po obcięciu';
+$lang['Select a file'] = 'Wybierz plik';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Zaznacz myszką nowy obszar zdjęcia.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesujący obszar zdjęcia, to ten w którym dzieje się najwięcej.';
+$lang['X Position'] = 'Pozycja X';
+$lang['X Repeat'] = 'Powtarzaj X';
+$lang['Y Position'] = 'Pozycja Y';
+$lang['add a new watermark'] = 'dodaj nowy znak wodny';
+$lang['bottom left corner'] = 'dolny lewy róg';
+$lang['bottom right corner'] = 'prawy dolny róg';
+$lang['middle'] = 'środek';
+$lang['top left corner'] = 'lewy górny róg';
+$lang['top right corner'] = 'prawy górny róg';
+$lang['Multiple Size'] = 'Obrazy o wielu rozmiarach';
+$lang['%d day'] = '%d dzień';
+$lang['%d days'] = '%d dni';
+$lang['%d hour'] = '%d godzina';
+$lang['%d hours'] = '%d godzin/y';
+$lang['%d minute'] = '%d minuta';
+$lang['%d minutes'] = '%d minut/y';
+$lang['%d month'] = '%d miesiąc';
+$lang['%d months'] = '%d miesiące/miesięcy';
+$lang['%d second'] = '%d sekunda';
+$lang['%d seconds'] = '%d sekund/y';
+$lang['%d year'] = '%d rok';
+$lang['%d years'] = '%d lat/lata';
+$lang['%s ago'] = '%s temu';
+$lang['%s in the future'] = '%s w przyszłości';
+$lang['Added by %s'] = 'Dodane przez %s';
+$lang['Numeric identifier : %d'] = 'Identyfikator numeryczny: %d';
+$lang['Original file : %s'] = 'Oryginalny plik: %s';
+$lang['Posted %s on %s'] = 'Zamieszczone %s, data: %s';
+$lang['Rated %d times, score : %.2f'] = 'Ocenione %d razy, wynik: %.2f';
+$lang['Sharpen'] = 'Wyostrz';
+$lang['Visited %d times'] = 'Odwiedzone %s razy';
+$lang['Watermark'] = 'Znak wodny';
+$lang[' and %d virtuals'] = 'i %d wirtualnych';
+$lang['%d physicals'] = '%d fizycznych';
+$lang['%d week'] = '%d tydzień';
+$lang['%d weeks'] = '%d tygodnie';
+$lang['Edit photo'] = 'Edycja zdjęcia';
+$lang['create a new site'] = 'stwórz nową stronę';
+$lang['No order field selected'] = 'Nie wybrano sortowania';
+$lang['Duplicate selected tags'] = 'Zduplikuj wybrane tagi';
+$lang['Name of the duplicate'] = 'Nazwa duplikatu';
+$lang['Source tag'] = 'Tag źródłowy';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tag "%s" jest teraz duplikatem "%s"';
+$lang['Landscape'] = 'Krajobraz';
+$lang['Minimum height'] = 'Minimalna wysokość';
+$lang['Minimum width'] = 'Minimalna szerokość';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portret';
+$lang['Manage photos'] = 'Zarządzaj zdjęciami';
+$lang['Number of albums per page'] = 'Liczba albumów na stronę';
+$lang['View in gallery'] = 'Obejrzyj w galerii';
+$lang['Ratio'] = 'Proporcje';
+$lang['between %d and %d pixels'] = 'pomiędzy %d i %d pikseli';
+$lang['between %.2f and %.2f'] = 'pomiędzy %.2f i %.2f';
+$lang['Duplicate'] = 'Duplikuj';
+$lang['Manage the members'] = 'Zarządzaj członkami';
+$lang['Merge selected groups'] = 'Połącz wybrane grupy';
+$lang['No group selected, no action possible.'] = 'Nie wybrano grup, nie można wykonywać żadnych akcji';
+$lang['No members to manage'] = 'Nie ma członków do zarządzania';
+$lang['Please select at least two groups'] = 'Wybierz conajmniej dwie grupy';
+$lang['Rename'] = 'Zmień nazwę';
+$lang['This group will be set to default'] = 'Ta grupa zostanie zaznaczona jako domyślna';
+$lang['This group will be unset to default'] = 'Ta grupa zostanie odznaczona jako domyślna';
+$lang['Type here the name of the new group'] = 'Wpisz nazwę nowej grupy';
+$lang['Purge user cache'] = 'Wyczyść pamięć podręczną użytkowników';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Wymiary zdjęcia zostaną zmniejszone do %dx%d pikseli.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Z powodu używania GD jako biblioteki graficznej nie będzie możliwa zmiana rozmiaru po wgraniu zdjęcia na serwer.';
+$lang['Select at least one tag'] = 'Wybierz co najmniej jeden tag';
+$lang['Basic settings'] = 'Podstawowe ustawienia';
+$lang['General'] = 'Ogólne';
+$lang['Mail theme'] = 'Motyw maila';
+$lang['Showing %s to %s of %s users'] = 'Wyświetlam %s do %s z %s użytkowników';
+$lang['(filtered from %s total users)'] = '(wyfiltrowany z %s wszystkich użytkowników)';
+$lang['Users modified'] = 'Użytkownicy zmodyfikowani';
+$lang['on the %d selected users'] = 'na %d wybranych użytkownikach';
+$lang['%d of %d users selected'] = 'wybrano %d z %d użytkowników';
+$lang['All %d users are selected'] = 'Każdy z %d użytkowników został wybrany';
+$lang['No matching user found'] = 'Nie odnaleziono pasującego użytkownika';
+$lang['No user selected of %d users'] = 'Nie wybrano żadnego z %d użytkowników';
+$lang['No user selected, no action possible.'] = 'Nie wybrano żadnego użytkownika, żadna akcja nie jest możliwa.';
+$lang['Update user'] = 'Zaktualizuj użytkownika';
+$lang['User %s added'] = 'Dodano użytkownika %s';
+$lang['User %s updated'] = 'Użytkownik %s został zaktualizowany';
+$lang['Change password'] = 'Zmień hasło';
+$lang['Change username'] = 'Zmień nazwę użytkownika';
+$lang['Last visit on %s, %s.'] = 'Ostatnia wizyta %s, %s.';
+$lang['Loading...'] = 'Wczytywanie...';
+$lang['Password updated'] = 'Hasło zostało zaktualizowane';
+$lang['Registered on %s, %s.'] = 'Zarejestrowany %s, %s.';
+$lang['Show %s users'] = 'Pokaż %s użytkowników';
+?>
Index: /tags/2.6.0RC1/language/pl_PL/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/common.lang.php	(revision 25596)
@@ -0,0 +1,425 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Polski [PL]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=430
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+//Polish translation by voyteckst (voyteckst@yahoo.com). You can edit them free and post corrections to Piwigo.
+$lang_info['language_name'] = 'Polish';
+$lang_info['country'] = 'Polska';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'pl';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album zaktualizowany';
+$lang['%d albums updated'] = '%d albumów zaktualizowanych';
+$lang['%d comment to validate'] = '%d komentarz do weryfikacji';
+$lang['%d comments to validate'] = '%d komentarzy do weryfikacji';
+$lang['%d new comment'] = '%d nowy komentarz';
+$lang['%d new comments'] = '%d nowe komentarze';
+$lang['%d comment'] = '%d komentarz';
+$lang['%d comments'] = '%d komentarzy';
+$lang['%d hit'] = '%d wejście';
+$lang['%d hits'] = '%d wejść';
+$lang['%d new photo'] = '%d nowy element';
+$lang['%d new photos'] = '%d nowych elementów';
+$lang['%d new user'] = '%d nowy użytkownik';
+$lang['%d new users'] = '%d nowi użytkownicy';
+$lang['About'] = 'O Piwigo';
+$lang['All tags'] = 'Wszystkie tagi';
+$lang['Any tag'] = 'Dowolny tag';
+$lang['At least one listed rule must be satisfied.'] = 'Przynajmniej jedna reguła musi być spełniona.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Albumy';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Zamknij okno';
+$lang['Complete RSS feed (photos, comments)'] = 'Kompletny RSS feed (zdjęcia, komentarze)';
+$lang['Confirm Password'] = 'Potwierdź hasło';
+$lang['Connection settings'] = 'Ustawienia połączenia';
+$lang['Login'] = 'Logowanie';
+$lang['Contact webmaster'] = 'Kontakt z webmasterem';
+$lang['Create a new account'] = 'Utwórz nowe konto';
+$lang['Created on'] = 'Utworzone';
+$lang['Creation date'] = 'Data utworzenia';
+$lang['Current password is wrong'] = 'Złe hasło';
+$lang['Dimensions'] = 'Rozmiary';
+$lang['Display'] = 'Wyświetlanie';
+$lang['Each listed rule must be satisfied.'] = 'Każda reguła musi być spełniona.';
+$lang['Email address is missing. Please specify an email address.'] = 'Brak adresu email';
+$lang['Email address'] = 'Adres email';
+$lang['Enter your personnal informations'] = 'Wprowadź informacje';
+$lang['Error sending email'] = 'Błąd podczas wysyłania maila';
+$lang['File name'] = 'Nazwa pliku';
+$lang['File'] = 'Plik';
+$lang['Filesize'] = 'Rozmiar pliku';
+$lang['Filter and display'] = 'Filtrowanie i wyświetlanie';
+$lang['Filter'] = 'Filtr';
+$lang['Forgot your password?'] = 'Zapomniane hasło?';
+$lang['Go through the gallery as a visitor'] = 'Przejdź do galerii jako gość';
+$lang['Help'] = 'Pomoc';
+$lang['Identification'] = 'Logowanie';
+$lang['Photos only RSS feed'] = 'RSS feed tylko dla zdjęć';
+$lang['Keyword'] = 'Słowo kluczowe';
+$lang['Links'] = 'Linki';
+$lang['N/A'] = 'N/D';
+$lang['New on %s'] = 'Nowe %s';
+$lang['Notification'] = 'Powiadamianie';
+$lang['Number of items'] = 'Liczba obiektów';
+$lang['Original dimensions'] = 'Oryginalne rozmiary';
+$lang['Password forgotten'] = 'Zapomniane hasło';
+$lang['Password'] = 'Hasło';
+$lang['Post date'] = 'Data umieszczenia';
+$lang['Posted on'] = 'Data umieszczenia';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Logowanie';
+$lang['RSS feed'] = 'RSS feed';
+$lang['Register'] = 'Zarejestruj';
+$lang['Registration'] = 'Rejestracja';
+$lang['Related tags'] = 'Powiązane tagi';
+$lang['Reset'] = 'Resetuj';
+$lang['Retrieve password'] = 'Odzyskaj hasło';
+$lang['Search rules'] = 'Reguły wyszukiwania';
+$lang['Search tags'] = 'Szukaj tagów';
+$lang['Search'] = 'Szukaj';
+$lang['display available tags'] = 'Zobacz dostępne tagi';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Sortuj po';
+$lang['Sort order'] = 'Sortowanie po';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tagi';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS zapewnia powiadomienia o wydarzeniach na tej stronie: nowych zdjęciach, aktualizacjach albumów, nowych komentarzach. Do użycia z czytnikiem RSS.';
+$lang['Unknown feed identifier'] = 'Nieznany identyfikator feed';
+$lang['User comments'] = 'Komentarze użytkowników';
+$lang['Username'] = 'Użytkownik';
+$lang['Visits'] = 'Odwiedzin';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Tydzień %d';
+$lang['About Piwigo'] = 'O Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Nie masz uprawnień do oglądania tej strony';
+$lang['add this photo to your favorites'] = 'Dodaj zdjęcie do ulubionych';
+$lang['Administration'] = 'Administracja';
+$lang['all'] = 'wszystkie';
+$lang['ascending'] = 'rosnąco';
+$lang['author(s) : %s'] = 'Autor(-rzy) : %s';
+$lang['Expand all albums'] = 'Rozwiń wszystkie albumy';
+$lang['posted after %s (%s)'] = 'umieszczone po %s (%s)';
+$lang['posted before %s (%s)'] = 'umieszczone przed %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'umieszczone pomiędzy %s (%s) i %s (%s)';
+$lang['posted on %s'] = 'umieszczone %s';
+$lang['Best rated'] = 'Najlepiej oceniane';
+$lang['display best rated photos'] = 'wyświetl najlepiej oceniane obiekty';
+$lang['Calendar'] = 'Kalendarz';
+$lang['All'] = 'Wszystkie';
+$lang['display each day with photos, month per month'] = 'wyświetl każdy dzień ze zdjęciem, miesiąc po miesiącu';
+$lang['View'] = 'Pokaż';
+$lang['chronology_monthly_calendar'] = 'Kalendarz miesięczny';
+$lang['chronology_monthly_list'] = 'Lista miesięczna';
+$lang['chronology_weekly_list'] = 'Lista tygodniowa';
+$lang['Click here if your browser does not automatically forward you'] = 'Kliknij jeżeli nie zostałeś przekierowany poprawnie';
+$lang['comment date'] = 'data komentarza';
+$lang['Comment'] = 'Komentarz';
+$lang['Your comment has been registered'] = 'Twój komentarz został zapisany';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood system : poczekaj chwilę aby wysłać następny komentarz';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Twój komentarz nie został zarejestrowany, ponieważ nie jest zgodny z regułami walidacji';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administrator musi zatwierdzić Twój komentarz zanim będzie on widoczny.';
+$lang['This login is already used by another user'] = 'Ten login jest już używany przez innego użytkownika';
+$lang['Comments'] = 'Komentarze';
+$lang['Add a comment'] = 'Dodaj komentarz';
+$lang['created after %s (%s)'] = 'utworzone po %s (%s)';
+$lang['created before %s (%s)'] = 'utworzone przed %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'utworzone pomiędzy %s (%s) i %s (%s)';
+$lang['created on %s'] = 'utworzone %s';
+$lang['Customize'] = 'Dostosuj';
+$lang['Your Gallery Customization'] = 'Twoje dostosowanie ';
+$lang['day'][0] = 'Niedziela';
+$lang['day'][1] = 'Poniedziałek';
+$lang['day'][2] = 'Wtorek';
+$lang['day'][3] = 'Środa';
+$lang['day'][4] = 'Czwartek';
+$lang['day'][5] = 'Piątek';
+$lang['day'][6] = 'Sobota';
+$lang['Default'] = 'Domyślnie';
+$lang['delete this photo from your favorites'] = 'Usuń zdjęcie ze swoich ulubionych';
+$lang['Delete'] = 'Usuń';
+$lang['descending'] = 'malejąco';
+$lang['Download'] = 'Pobierz';
+$lang['Download this file'] = 'Pobierz ten plik';
+$lang['edit'] = 'edytuj';
+$lang['wrong date'] = 'zła data';
+$lang['excluded'] = 'wykluczone';
+$lang['Your favorites'] = 'Moje ulubione';
+$lang['display your favorites photos'] = 'pokaż moje ulubione zdjęcia';
+$lang['Favorites'] = 'Ulubione';
+$lang['First'] = 'Pierwsza';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galeria zablokowana w celach konserwacji. Wróć później.';
+$lang['Page generated in'] = 'Strona wygenerowana w';
+$lang['guest'] = 'gość';
+$lang['Hello'] = 'Witaj';
+$lang['available for administrators only'] = 'dostępne tylko dla administratorów';
+$lang['display this album'] = 'pokazuje zdjęcia w głównym katalogu albumu';
+$lang['display last user comments'] = 'Zobacz ostatnie komentarze';
+$lang['customize the appareance of the gallery'] = 'dostosuj wygląd galerii';
+$lang['search'] = 'szukaj';
+$lang['Home'] = 'Strona Główna';
+$lang['Identification'] = 'Uprawnienia';
+$lang['in this album'] = 'w tym albumie';
+$lang['in %d sub-album'] = 'w %d pod-albumie';
+$lang['in %d sub-albums'] = 'w %d pod-albumach';
+$lang['included'] = 'zawarte';
+$lang['Invalid password!'] = 'Złe hasło!';
+$lang['Language']='Język';
+$lang['last %d days'] = 'ostatnich %d dni';
+$lang['Last'] = 'Ostatnia';
+$lang['Logout'] = 'Wyloguj';
+$lang['obligatory'] = 'obowiązkowe';
+$lang['display a calendar by creation date'] = 'wyświetla kalendarz po dacie utworzenia';
+$lang['display all photos in all sub-albums'] = 'pokaż wszystkie elementy w albumach i pod-albumach';
+$lang['return to normal view mode'] = 'powrót do normalnego widoku';
+$lang['display a calendar by posted date'] = 'wyświetla kalendarz po dacie umieszczenia';
+$lang['month'][10] = 'Październik';
+$lang['month'][11] = 'Listopad';
+$lang['month'][12] = 'Grudzień';
+$lang['month'][1] = 'Styczeń';
+$lang['month'][2] = 'Luty';
+$lang['month'][3] = 'Marzec';
+$lang['month'][4] = 'Kwiecień';
+$lang['month'][5] = 'Maj';
+$lang['month'][6] = 'Czerwiec';
+$lang['month'][7] = 'Lipiec';
+$lang['month'][8] = 'Sierpień';
+$lang['month'][9] = 'Wrzesień';
+$lang['Most visited'] = 'Najczęściej odwiedzane';
+$lang['display most visited photos'] = 'pokaż najczęściej odwiedzane zdjęcia';
+$lang['The number of photos per page must be a not null scalar'] = 'Liczba zdjęć na stronie musi być większa od zera';
+$lang['Number of photos per page'] = 'Liczba zdjęć na stronie';
+$lang['Unknown identifier'] = 'Nieznany identyfikator';
+$lang['New password'] = 'Nowe hasło';
+$lang['Rate this photo'] = 'Oceń to zdjęcie';
+$lang['Next'] = 'Następne';
+$lang['no rate'] = 'nie oceniane';
+$lang['Photos posted within the last %d day.'] = 'Wyświetl elementy umieszczone w ciągu ostatniego %s dnia.';
+$lang['Photos posted within the last %d days.'] = 'Wyświetl elementy umieszczone w ciągu ostatnich %s dni.';
+$lang['password updated'] = 'hasło zmienione';
+$lang['Recent period must be a positive integer value'] = 'Okres czasu musi być liczbą dodatnią';
+$lang['photo'] = 'zdjęcie';
+$lang['Click on the photo to see it in high definition'] = 'Wybierz zdjęcie aby je zobaczyć w większej rozdzielczości';
+$lang['Show file metadata'] = 'Pokaż metadane (EXIF)';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'Preferencje';
+$lang['Previous'] = 'Poprzednia';
+$lang['Random photos'] = 'Losowe zdjęcia';
+$lang['display a set of random photos'] = 'wyświetla zbiór losowych zdjęć';
+$lang['Recent albums'] = 'Aktualne albumy';
+$lang['display recently updated albums'] = 'pokaż aktualnie zaktualizowane albumy';
+$lang['Recent period'] = 'Najnowszy okres';
+$lang['Recent photos'] = 'Najnowsze zdjęcia';
+$lang['display most recent photos'] = 'wyświetla najnowsze zdjęcia';
+$lang['Redirection...'] = 'Przekierowywanie...';
+$lang['Please, enter a login'] = 'Wprowadź login';
+$lang['login mustn\'t end with a space character'] = 'Login nie może posiadać spacji';
+$lang['login mustn\'t start with a space character'] = 'Login nie może zaczynać się od znaku specjalnego';
+$lang['this login is already used'] = 'ten login już istnieje';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'mail musi być w postaci xxx@yyy.eee (przykład : jack@altern.org)';
+$lang['Auto login'] = 'Pamiętaj mnie';
+$lang['remove this tag from the list'] = 'usuń ten tag z listy';
+$lang['representative'] = 'reprezentant';
+$lang['Search for Author'] = 'Szukaj Autora';
+$lang['Search in albums'] = 'Szukaj w albumach';
+$lang['Search by date'] = 'Szukaj po Dacie';
+$lang['Date'] = 'Data od';
+$lang['End-Date'] = 'Data do';
+$lang['Kind of date'] = 'Rodzaj daty';
+$lang['Search for words'] = 'Szukaj słów';
+$lang['Search for all terms'] = 'Szukaj po wszystkim ';
+$lang['Search for any term'] = 'Szukaj po wszystkim';
+$lang['Empty query. No criteria has been entered.'] = 'Puste zapytanie. Nie zostały wprowadzone żadne kryteria.';
+$lang['Search results'] = 'Wyniki wyszukiwania';
+$lang['Search in sub-albums'] = 'Szukaj w pod-albumach';
+$lang['searched words : %s'] = 'szukane słowa : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'ustaw jako reprezentanta albumu';
+$lang['Show number of comments'] = 'Pokaż liczbę komentarzy';
+$lang['Show number of hits'] = 'Pokaż liczbę wyświetleń';
+$lang['slideshow'] = 'pokaz zdjęć';
+$lang['stop the slideshow'] = 'zatrzymaj pokaz';
+$lang['Specials'] = 'Specjalne';
+$lang['SQL queries in'] = 'Zapytania SQL w';
+$lang['display only recently posted photos'] = 'wyświetla tylko ostatnio umieszczone';
+$lang['return to the display of all photos'] = 'powrót do wyświetlania wszystkich elementów';
+$lang['the beginning'] = 'początek';
+$lang['Thumbnails'] = 'Miniatury';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'Komentarz do Twojej strony';
+$lang['today'] = 'dzisiaj';
+$lang['Update your rating'] = 'Aktualizuj Twoją ocenę';
+$lang['the username must be given'] = 'nazwa użytkownika musi być podana';
+$lang['useful when password forgotten'] = 'przydatne gdy zostanie zapomniane hasło';
+$lang['Quick search'] = 'Szybkie wyszukiwanie';
+$lang['Connected user: %s'] = 'Zalogowany użytkownik: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Przeglądarka: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Komentarz: %s';
+$lang['Comment by %s'] = 'Komentarz wystawiony przez %s';
+$lang['User: %s'] = 'Użytkownik: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Rejestracja %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Zły status dla użytkownika "gość", używam domyślnego';
+$lang['this email address is already in use'] = 'użytkownik już używa tego adresu email';
+$lang['Album results for'] = 'Wyniki albumu dla';
+$lang['Tag results for'] = 'Wyniki tagów dla';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Odtwórz jako slideshow';
+$lang['Pause of slideshow'] = 'Pause pokazu';
+$lang['Repeat the slideshow'] = 'Powtarzaj slideshow';
+$lang['Not repeat the slideshow'] = 'Nie powtarzaj slideshow';
+$lang['Reduce diaporama speed'] = 'Zmniejsz prędkość diaporamy';
+$lang['Accelerate diaporama speed'] = 'Zwiększ prędkość diaporamy';
+$lang['Submit'] = 'Zatwierdź';
+$lang['Yes'] = 'Tak';
+$lang['No'] = 'Nie';
+$lang['%d photo']='%d obraz';
+$lang['%d photos']='%d obrazów';
+$lang['%d photo is also linked to current tags'] = '%d obraz jest także podpięty do aktualnych tagów';
+$lang['%d photos are also linked to current tags'] = '%d obrazów jest także podpiętych do aktualnych tagów';
+$lang['display photos linked to this tag'] = 'Zobacz obrazy podpięte tylko do tego tagu';
+$lang['photos posted during the last %d days'] = 'obrazy wgrane przez ostatnich %d dni';
+$lang['Piwigo Help'] = 'Piwigo Pomoc';
+$lang['Rank'] = 'Ranking';
+$lang['group by letters'] = 'grupuj literami';
+$lang['letters'] = 'litery';
+$lang['show tag cloud'] = 'pokazuj tag jako chmurkę';
+$lang['cloud'] = 'chmurka';
+$lang['Are you sure?'] = 'Jesteś pewien?';
+$lang['Reset to default values'] = 'Resetuj do domyślnych wartości';
+$lang['delete all photos from your favorites'] = 'usuń wszystkie obrazy ze swoich ulubionych';
+$lang['Sent by'] = 'Wysłane przez';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookie są zablokowane lub nie wspierane przez Twoją przeglądarkę. Musisz włączyć cookies aby się zalogować.';
+$lang['Edit a comment'] = 'Edytuj komentarz';
+$lang['(!) This comment requires validation'] = '(!) Ten komentarz wymaga potwierdzenia';
+$lang['Welcome'] = 'Witaj';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Witaj w swojej galerii Piwigo!';
+$lang['... or browse your empty gallery'] = '... lub przeglądaj pustą galerię';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... lub zdezaktywuj tę wiadomość, znajdę sam sposób aby sobie poradzić';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Cześć %s, Twoja galeria Piwigo jest pusta!';
+$lang['I want to add photos'] = 'Chcę dodać zdjęcia';
+$lang['Manage this user comment: %s'] = 'Zarządzaj komentarzami tego użytkownika: %s';
+$lang['This author modified following comment:'] = 'Ten autor zmodyfikował następujący komentarz:';
+$lang['This author removed the comment with id %d'] = 'Ten autor usunął komentarz o id %d';
+$lang['Album'] = 'Album';
+$lang['Album: %s'] = 'Albumy: %s';
+$lang['html tags are not allowed in login'] = 'znaczniki html nie są dozwolone w polu login';
+$lang['%d rates'] = '%d ocen';
+$lang['Rating score'] = 'Ocena';
+$lang['Invalid username or email'] = 'Niewłaściwa nazwa użytkownika lub adres e-mail';
+$lang['Password reset is not allowed for this user'] = 'Przywracanie hasła jest dla tego użytkownika niedozwolone';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Użytkownik "%s" nie ma adresu e-mail, przywracanie hasła jest niemożliwe';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Zgłoszono prośbę o przywrócenie hasła dla następującego konta użytkownika:';
+$lang['Username "%s" on gallery %s'] = 'Użytkownik "%s" w galerii %s';
+$lang['To reset your password, visit the following address:'] = 'Aby przywrócić hasło odwiedź następującą stronę:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Jeśli wybrałeś przywracanie hasła przypadkowo zignoruj tą wiadomość (nie zostaną wprowadzone żadne zmiany).';
+$lang['Password Reset'] = 'Przywracanie hasła';
+$lang['Check your email for the confirmation link'] = 'Sprawdź skrzynkę e-mail czy otrzymałeś link potwierdzający';
+$lang['Invalid key'] = 'Nieprawidłowy klucz';
+$lang['The passwords do not match'] = 'Hasła są różne';
+$lang['Your password has been reset'] = 'Twoje hasło zostało zresetowane';
+$lang['Return to home page'] = 'Wróć do strony głównej';
+$lang['Please enter your username or email address.'] = 'Wpisz swoją nazwę użytkownika lub adres e-mail';
+$lang['You will receive a link to create a new password via email.'] = 'Link do stworzenia nowego hasła otrzymasz drogą mailową.';
+$lang['Username or email'] = 'nazwa użytkownika lub adres e-mail';
+$lang['Change my password'] = 'Zmień moje hasło';
+$lang['Enter your new password below.'] = 'Wpisz poniżej swoje nowe hasło.';
+$lang['EXIF Metadata'] = 'Metadane EXIF';
+$lang['IPTC Metadata'] = 'Metadane IPTC';
+$lang['Edit'] = 'Edytuj';
+$lang['Hello %s,'] = 'Witaj %s,';
+$lang['Send my connection settings by email'] = 'Wyślij moje dane połączenia mailem';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Zarejestrowany pomyślnie! Wkrótce dostaniesz mail z danymi do połączenia. Witamy!';
+$lang['Username modification'] = 'Zmiana nazwy użytkownika';
+$lang['Your username has been successfully changed to : %s'] = 'Twoja nazwa użytkownika została zmieniona pomyślnie na: %s';
+$lang['square'] = 'Kwadrat';
+$lang['thumb'] = 'Thumb';
+$lang['small'] = 'Mały';
+$lang['medium'] = 'Średni';
+$lang['large'] = 'Duży';
+$lang['xlarge'] = 'Bardzo duży (XL)';
+$lang['xxlarge'] = 'Bardzo bardzo duży (XXL)';
+$lang['Original'] = 'Oryginalny';
+$lang['Thank you for registering at %s!'] = 'Dziękujemy za rejestrację na %s!';
+$lang['Here are your connection settings'] = 'Dane Twojego połączenia';
+$lang['Password: %s'] = 'Hasło: %s';
+$lang['Username: %s'] = 'Nazwa użytkownika: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Jeżeli myślisz, że otrzymałeś ten mail w wyniku błędu, skontaktuj się proszę z nami tutaj %s';
+$lang['Photo sizes'] = 'Rozmiary zdjęć';
+$lang['2small'] = 'XXS - malutkie';
+$lang['Desktop'] = 'Wersja standardowa';
+$lang['Mobile'] = 'Wersja mobilna';
+$lang['Show latest comments first'] = 'Pokaż najpierw najnowsze komentarze';
+$lang['Show oldest comments first'] = 'Pokaż najpierw najstarsze komentarze';
+$lang['View in'] = 'Obejrzyj w';
+$lang['xsmall'] = 'XS - bardzo małe';
+$lang['Date created, new &rarr; old'] = 'Data utworzenia, wcześniejsze &rarr; starsze';
+$lang['Date created, old &rarr; new'] = 'Data utworzenia, starsze &rarr; wcześniejsze';
+$lang['Date posted, new &rarr; old'] = 'Data publikacji, wcześniejsze &rarr; starsze';
+$lang['Date posted, old &rarr; new'] = 'Data publikacji, starsze &rarr; wcześniejsze';
+$lang['File name, A &rarr; Z'] = 'Nazwa pliku, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nazwa pliku, Z &rarr; A';
+$lang['Manual sort order'] = 'Własna kolejność';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identyfikator, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identyfikator, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Tytuł zdjęcia, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Tytuł zdjęcia, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Ocena, wysoka &rarr; niska';
+$lang['Rating score, low &rarr; high'] = 'Ocena, niska &rarr; wysoka';
+$lang['Visits, high &rarr; low'] = 'Liczba odwiedzin, wysoka &rarr; niska';
+$lang['Visits, low &rarr; high'] = 'Liczba odwiedzin, niska &rarr; wysoka';
+$lang['%d rate'] = '%d ocena';
+$lang['Bad request'] = 'Nieprawidłowe zapytanie';
+$lang['Forbidden'] = 'Zabronione';
+$lang['Page not found'] = 'Nie znaleziono żądanej strony';
+$lang['Permalink for album not found'] = 'Nie znaleziono stałego odnośnika do albumu';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo napotkało na błąd krytyczny';
+$lang['Requested album does not exist'] = 'Nie znaleziono żądanego albumu';
+$lang['Requested tag does not exist'] = 'Szukana etykieta nie istnieje';
+$lang['Email address is mandatory'] = 'Adres e-mail jest obowiązkowy';
+$lang['Username is mandatory'] = 'Nazwa użytkownika jest obowiązkowa';
+$lang['mandatory'] = 'obowiązkowo';
+$lang['Website'] = 'Strona internetowa';
+$lang['Your website URL is invalid'] = 'Adres Twojej strony internetowej jest niepoprawny';
+$lang['Email'] = 'E-mail';
+$lang['First Page'] = 'Pierwsza strona';
+$lang['Go back to the album'] = 'Wróć do albumu';
+$lang['Last Page'] = 'Ostatnia strona';
+$lang['Password is missing. Please enter the password.'] = 'Brak hasła. Proszę wprowadzić hasło.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Brak potwierdzenia hasła. Proszę potwierdzić wybrane hasło.';
+$lang['%d photos per page'] = '%d zdjęc na każdej stronie';
+$lang['Theme'] = 'Motyw';
+?>
Index: /tags/2.6.0RC1/language/pl_PL/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,118 @@
+<h2>Edycja kategorii</h2>
+
+<h3>Informacje</h3>
+
+<ul>
+
+  <li><strong>nazwa</strong>: zmień nazwę kategorii (wirtualna zmiana nazwy dla fizycznie istniejącej kategorii).</li>
+
+  <li><strong>opis</strong>: daje ogólny obraz zawartości,
+  ten tekst będzie wyświetlany pod stroną miniaturami.</li>
+
+</ul>
+
+<h3>Przenieś</h3>
+
+<p>Jeżeli dana kategoria jest wirtualna, to można ją przenieść. Przeniesienie kategorii oznacza zmianę kategorii nadrzędnej.</p>
+
+<h3>Opcje</h3>
+
+<ul>
+
+  <li><strong>Typ dostępu</strong>: Zarządzanie uprawnieniami. Jeżeli ustawisz kategorię jako prywatną, to wszystkie jej podkategorie będą prywatne. Jeżeli ustawisz kategorię jako publiczną, to wszystkie jej podkategorie będą publiczne.</li>
+
+  <li><strong>Blokada</strong>: Kategoria i podkategorie są tymczasowo zablokowane na czas prac konserwacyjnych.</li>
+
+  <li><strong>Komentarze</strong>: Zautoryzowani użytkownicy mogą dodawać komentarze do elementów kategorii.</li>
+
+  <li><strong>Autoryzuj upload</strong>: Zautoryzowani użytkownicy mogą wgrywać pliki. Ta opcja jest możliwa tylko dla kategorii fizycznej (nie wirtualnej).</li>
+
+</ul>
+
+<p>Możesz także zarządzać tymi opcjami poprzez ekran "Właściwości"
+(ekrany <span class="pwgScreen">Upload</span>, <span
+class="pwgScreen">Komentarze</span>, <span class="pwgScreen">Blokada</span>,
+<span class="pwgScreen">Publiczny/Prywatny</span>, <span
+class="pwgScreen">Reprezentacyjny</span> dostępne z <span
+class="pwgScreen">Administracja, Kategorie, Właściwości</span>).</p>
+
+<h3>Kolejnośćsortowania</h3>
+
+<p>Wybierz czy ma być sortowanie domyślne.</p>
+
+<p>Oznacza, że sortowanie będzie także dla podkategorii.</p>
+
+<p>Wybierz okreslony rodzaj sortowania dla kategorii.</p>
+<ul>
+<li><strong>Data utworzenia</strong>: Data utworzenia obrazu</li>
+<li><strong>Data wysłania</strong>: Data synchronizacji</li>
+<li><strong>Średnie oceny (*)</strong>: Średnie oceny mogą zostać zmienione przez odwiedzających</li>
+<li><strong>Najczęściej odwiedzane (*)</strong>: Aktualne odwiedziny zmieniają kolejność najczęściej odwiedzanych</li>
+<li><strong>Nazwa pliku</strong>: Nazwa nada w informacji o pliku</li>
+<li><strong>Id</strong>: Wewnętrzne Id (aktualnie wgrane elementy mają wyższe niż wgrane poprzednio).</li>
+
+</ul>
+<p><strong>(*)</strong>Przetestuj sam ponieważ opcja ma nieprzewidzialne rezultaty.</p>
+
+
+<h3>Reprezentant</h3>
+
+<p>Reprezantant kategorii to miniatura, która jest wyświetlana na stronie głównej kategorii (<span class="pwgScreen">category.php</span>) jeżeli kategoria zawiera podkategorie (w tym przypadku tylko głównej kategorii).</p>
+
+<p>Są 4 sposoby ustawienia reprezentanta kategorii :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Strona obrazy</span>: w pasku przycisków akcji,
+  jeden z nich pozwoli ustawić Ci reprezentanta danej kategorii. Przycisk ten ejst dostępny dla administratorów.</li>
+
+  <li><span class="pwgScreen">Edycja informacji o obrazie</span> w panelu administracyjnym. Ekran ten jest dostępny z poziomu <span
+  class="pwgScreen">picture.php</span> lub <span class="pwgScreen">Zarządzanie batch</span> w <em>trybie jednostkowym</em>. Aby dowiedzić się więcej zobacz pomoc dlatego ekranu.</li>
+
+  <li><span class="pwgScreen">Administracja, Kategorie, Właściwości,
+  Reprezentujący</span>. Aby dowiedzić się więcej zobacz pomoc dlatego ekranu.</li>
+
+  <li><span class="pwgScreen">Edycja kategorii</span> (ten ekran).</li>
+
+</ul>
+
+<p>Reprezentacja zależy od ustawienia parametru konfiguracyjnego
+<code>allow_random_representative</code> (zobacz <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>W trybie domyślnym (<code>allow_random_representative</code> jest ustawiony na false)
+każda kategoria zawiera jeden element ustawiony jako ją reprezentujący. Raz ustawiony (przy tworzeniu kategorii), reprezentant może zostać zmieniony tylko przez administratora. Jeżeli dany obrac nie odpowiada Ci jako reprezentujący kategorię,
+możesz wybrać <strong>Znajdź reprezentanta losowo</strong>.</p>
+
+<p>Jeżeli natomiast parametr konfiguracyjny <code>allow_random_representative</code> ma wartość true, kategoria zwierająca elementy nie może mieć ustawionego jednego reprezentanta. Wtedy wystarczy użyć przycisku <strong>Usuń reprezentanta</strong> .</p>
+
+<p>JEżeli kategoria nie zawiera żacnych elementów (a tylko podkategorie) może być wtedy reprezentowana dzięki ekranowi <span class="pwgScreen">Edytuj informacje o obrazie</span>. JEdyną dostepną opcją na aktualnym ekranie jest przycisk <strong>Usuń reprezentanta</strong> . P wybraniu przycisku nie ma już możliwości wybrania nowego reprezentanta.</p>
+
+<h3>Podpięcie wszystkich elementów kategorii do nowej kategorii</h3>
+
+<ul>
+
+<li><strong>Nazwa wirtualnej kategorii</strong>: Nazwa nowo tworzonej kategorii, 
+do której będą podpięte wszystkie elementy bieżącej kategorii.</li>
+
+<li><strong>Kategoria nadrzędna</strong>: Zostaw pole puste jeżeli kategoria ma być stworzona w głównej kategorii.</li>
+
+</ul>
+
+<h3>Podpięcie wszystkich elementów kategorii do którejś z istniejących kategorii</h3>
+
+<ul>
+
+<li><strong>Kategorie</strong>: Wybierz kategorię docelową.</li>
+
+</ul>
+
+<h3>Wyślij maila informacyjnego do wszystkich członków grupy</h3>
+
+<ul>
+
+<li><strong>Grupa</strong>: adresy grup</li>
+
+<li><strong>Treść wiadomości</strong>: Dowolny tekst do wpisania.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/pl_PL/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Przenoszenie kategorii wirtualnych</h2>
+
+<p>Tylko wirtualne kategorie mogą mieć nową kategorię nadrzędną.</p>
+
+<h3>Wirtualne kategorie do przeniesienia</h3>
+
+<p>Wybierz dowolną wirtualną kategorię, którą chcesz przenieść. 
+Jeżeli lista jest pusta, to oznacza, że żadnej nie stworzyłeś.</p>
+
+<h3>Nowa kategoria nadrzędna</h3>
+
+<p>Wybierz nową kategorię nadrzędną (wirtualną lub fizyczną). 
+Jeżeli nie wybierzesz żadnej wirtualnej kategorie zostaną przeniesione do głównej kategorii nadrzędnej.
+Nie można przenieść kategorii do własnej podkategorii.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/cat_options.html	(revision 25596)
@@ -0,0 +1,27 @@
+<h2>Opcje kategorii</h2>
+
+<p>Ekran umożliwia administratorowi zmianę opcji dla wielu kategorii jednocześnie.</p>
+
+<dl>
+
+  <dt>Upload</dt>
+  <dd>Umożliwia odwiedzającym wgrywanie plików do kategorii. Wyświetlone są tylko kategorie nie będące wirtualnymi</dd>
+
+  <dt>Komentarze</dt>
+  <dd>Zezwala użytkownikom na dodawanie komentarzy w wybranych kategoriach.
+Wybiera kategorie, które mają już tę opcję włączoną. Obraz może być komentowany wtedy jeżeli kategoria ma tę opcję włączoną.</dd>
+
+  <dt>Zablokuj</dt>
+  <dd>Umożliwia zablokowanie wybranych kategorii np. w ramach prac prowadzonych nad daną kategorią. 
+  Jeżeli zablokujesz kategorię, zablokowane również zostaną wszystkie jej podkategorie. Podobnie jeżeli odblokujesz kategorię, wszystkie jej podkategorie zostaną odblokowane.</dd>
+
+  <dt>Publiczne / Prywatne</dt>
+  <dd>Zarządza autoryzacją wo wybranych kategorii. Wybrane kategorie są prywatne : aby użytkownicy mieli dostęp do tych kategorii, będzie trzeba przyznać uprawnienia do tych kategorii grupom/użytkownikom. Jeżeli ustawisz daną kategorię jako prywatną, wtedy wszystkie jej podkategorie także będą prywatne. Analogicznie, jeżeli ustawisz daną kategorią jako publiczną, wszystkie jej podkategorie będą publiczne</dd>
+
+  <dt>Reprezentant</dt>
+  <dd>Opcja jest dostępna tylko wtedy jeżeli masz skonfigurowany parametr
+  <code>allow_random_representative</code> (zobacz <span
+  class="filename">include/config_defaults.inc.php</span>) na
+  <em>true</em>. Każda kategoria może mieć reprezentanta losowego lub ustawionego (unikalny obraz).</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/pl_PL/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Zarządzanie uprawnieniami dla kategorii</h2>
+
+<p>Ekran ten jest dostępny tylko dla kategorii prywatnych. Możesz tutaj wybrać grupy oraz użytkowników, którzy będą posiadali dostęp do danej kategorii.</p>
+
+<h3>Grupy</h3>
+
+<p>Dla bieżącej kategorii możesz przyznać uprawnienia lub zabronić dostępu. Modyfikując grupy, zmodyfikujesz użytkowników, którzy dzięki przynależności do tych grup mają lub nie dostęp do danej kategorii.</p>
+
+<h3>Użytkownicy</h3>
+
+<p>Możesz także przyznać uprawnienia lub zabronić dostępu. Użytkownicy posiadający dostęp dzięki przynależności do grupy, mogą w tym miejscu mieć ten dostęp odebrany.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/configuration.html	(revision 25596)
@@ -0,0 +1,109 @@
+<h2>Konfiguracja</h2>
+
+<p>Ekran umożliwia administratorom podstawową administrację. Pomimo małej ilości parametrów konfiguracyjnych, powinna ona być wystarczająca dla większości administratorów. Jeżeli chciałbyś zmienić więcej parametrów zajrzyj do pliku <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Ekran jest podzielony na sekcje grupujące parametry tematycznie.</p>
+
+
+<h3>Główna</h3>
+<ul>
+  <li><strong>Tytuł galerii</strong>: używany w RSS oraz powiadomieniach mailowych.</li>
+
+  <li><strong>Baner strony</strong>: wyświetlany na górze każdej strony.</li>
+
+  <li><strong>Adres URL galerii</strong>: wykorzystywany w RSS.</li>
+
+  <li><strong>Blokada galerii</strong>: Blokuje całą galerię do celów serwisowych. Tylko użytkownicy posiadający uprawnienia administracyjne będą mogli korzystać z galerii.</li>
+
+  <li><strong>Oceny</strong>: Włączone oceny obrazów.</li>
+
+  <li><strong>Oceny przez gości</strong>: Opcja umożliwiająca oceny obrazów także przez niezalogowanych użytkowników.</li>
+
+  <li><strong>Zezwól na rejestrację użytkowników</strong>: Pozwala na rejestrację użytkowników w galerii.</li>
+
+  <li><strong>Adres email jest obowiązkowy dla wszystkich użytkowników</strong>: Adres email będzie sprawdzany podczas rejestracji lub podczas aktualizacji profilu (jeżeli akcja jest wykonywana przez administratora).</li>
+
+  <li><strong>Wyślij wiadomość do administratora gdy zarejestruje się nowy użytkownik </strong>: Administrator będzie powiadamiany o każdej rejestracji nowego użytkownika.</li>
+
+</ul>
+
+<h3>Historia</h3>
+
+  <p>Odwiedziny na stronach <span
+  class="pwgScreen">category.php</span> i <span
+  class="pwgScreen">picture.php</span> będą zapisane w tabeli
+  <code>historia</code> .</p>
+  
+  <p>Odwiedziny będą wyświetlane w <span
+  class="pwgScreen">Administracja, Specjalne, Historia</span>.</p>
+
+<ul>
+  <li><strong>Zapisuj odwiedziny strony przez  gości</strong>: zapisywane będą odwiedziny niezalogowanych użytkowników.</li>
+
+  <li><strong>Zapisuj odwiedziny strony przez  użytkowników</strong>: zapisywane będą odwiedziny zarejestrowanych użytkowników.</li>
+
+  <li><strong>Zapisuj odwiedziny strony przez administratorów</strong>: zapisywane będą odwiedziny administratorów.</li>
+
+</ul>
+
+<h3>Komentarze</h3>
+<ul>
+
+  <li><strong>Komentarze dla wszystkich</strong>: umożliwia dodawanie komentarzy przez niezarejestrowanych użytkowników.</li>
+
+  <li><strong>Liczba komentarzy na stronę</strong>.</li>
+
+  <li><strong>Zatwierdzanie</strong>: administrator zatwierdza komentarze pojawiające się w galerii. Zatwierdzanie komentarzy jest możliwe z  <span class="pwgScreen">Administracja, Obrazy,
+  Komentarze</span>.</li>
+
+  <li><strong>Wyślij wiadomość do administratora gdy zostanie wprowadzony poprawny komentarz</strong>:
+Wysyła wiadomość do administratora w przypadku dodania komentarza i gdy ten komentarz zostanie zatwierdzony.</li>
+
+  <li><strong>Wyślij wiadomość do administratora gdy komentarz wymaga weryfikacji</strong>:
+Wysyła wiadomość do administratora w przypadku dodania komentarza, który wymaga zatwierdzenia przez administratora.
+Zatwierdzanie komentarzy jest możliwe z  <span class="pwgScreen">Administracja, Obrazy, Komentarze</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>Upload</h3>
+<ul>
+<!--TODO -->  <li><strong>Zawsze pokazuj link upload</strong>: Jeżeli istnieją kategorie mające włączoną opcję wgrywania plików, odpowiedni link będzie widoczny przy każdej kategorii.</li>
+<!--TODO -->  <li><strong>Poziom uprawnień użytkowników dla upload'u</strong>: Pozwala na zabronienie użytkownikom wgrywania plików</li>
+  <li><strong>Wyślij wiadomość do administratora gdy został wgrany nowy obraz</strong>: Administrator otrzyma wiadomość o każdym wgranym pliku.</li>
+</ul>
+
+<h3>Wyświetlanie domyślne</h3>
+
+<p>W tym miejscu można zmienić domyślne wyświetlanie, dla użytkownika gość (niezalogowanego). Po zalogowaniu opcje są nadpisywane przez preferencje użytkownika(edycja w <span class="pwgScreen">profil</span>).</p>
+
+<p>Możliwa jest zmiana dla wszystkich użytkowników, natomiast opcja ta jest dostępna z poziomu <span class="pwgScreen">Administracja,
+Uprawnienia, Użytkownicy</span>, gdzie opcje można zmienić dla wybranych użytkowników.</p>
+
+<ul>
+
+  <li><strong>Język</strong>: dotyczy tylko labelek Piwigo. Nazwy kategorii, obrazów oraz wszystkie opisy nie podlegają tłumaczeniu.</li>
+
+  <li><strong>Liczba obrazów w wierszu</strong></li>
+
+  <li><strong>Liczba wierszy na stronę</strong></li>
+
+  <li><strong>Interfejs użytkownika</strong></li>
+
+  <li><strong>Aktualny okres</strong>: W dniach. Okres oznaczający, że elementy są wyświetlane jako nowe. Musi być większe od 1 dnia.</li>
+
+  <li><strong>Rozwiń wszystkie kategorie</strong>: Rozwija wszystkie kategorie w menu <em>Ostrzeżenie</em>: opcja ta wymaga dużo zasobów i może wygenerować bardzo duże menu jeżeli liczba kategorii jest duża..</li>
+
+  <li><strong>Pokazuj liczbę komentarzy</strong>: wyświetla liczbę komentarzy na stronie z miniaturami. Wymaga dużych zasobów.</li>
+
+  <li><strong>Pokazuj liczbę wejść</strong>: wyświetla liczbę wyświetleń danego obrazu na stronie z miniaturami. 
+  Tylko gdy zaawansowany parametr jest ustawiony na: <br />
+  $conf['show_nb_hits'] = true; <br />
+  Notka: domyślne ustawienie to false.</li>
+
+  <li><strong>Maksymalna szerokość obrazu</strong>: maksymalna wyświetlana szerokość. Jeżeli obraz jest większy, to wtedy zostanie pomniejszony (do wyświetlenia). Jeżeli chcesz zaznaczyć tę opcję, lepiej jest rozważyć zmianę rozmiarów obrazów.</li>
+
+  <li><strong>Maksymalna wysokość obrazu</strong>: jak wyżej (ale odnośnie szerokości).</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/pl_PL/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,87 @@
+<h2>Rozszerzenie dla konfiguracji szablonów</h2>
+
+<h3>Cel</h3>
+<p>Definiuje warunki zamiany szablonu z template-extension
+(szablon zwany "zamiennikiem").</p>
+
+<p>"Oryginalny szablon" z ./template/yoga (lub inny niż yoga)
+ będzie zamieniony przez "zamiennik" jeżeli zamiennik jest podpięty do "szablonu oryginalnego"
+ (lub opcjonalnie, jeżeli żądany adres URL zawiera "opcjonalne słowo klucz dla URL").</p>
+
+<p>"Opcjonalne słowa klucze dla URL" mogą zostać odnalezione w module URLs.</p>
+
+<p>"Opcjonalne słowa klucze dla URL" może być także "linkiem permanentnym" 
+(zobacz opis linków permanentnych w naszej dokumentacji).</p>
+
+<p>Czytaj: `<a href="#warnings">Ostrzeżenie</a>` warunki użycia.</p>
+
+<h3>Czym są rozszerzenia szablonów?</h3>
+
+<p>Narzędzie konfiguracyjne zarówno dla użytkowników początkujących jak i zaawansowanych.
+Webmaster może powielić wiele dostarczanych plików (.tpl) szablonów ("szablony oryginalne") przez FTP do folderu template-extensions nadając im inne nazwy.
+ 
+ "Szablony oryginalne", aktualnie szablony oryginalne są wspierane dla:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> i/lub <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> i/lub <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> i/lub <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> i/lub <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> i/lub <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> i/lub <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> i/lub <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Gdzie mogę znaleźć  "szablony oryginalne"?</h3>
+
+<p>Szablony oryginalne znajdują się w katalogu template/yoga/ 
+(nie należy ich edytować z powodów aktualizacji). Z "szablonów oryginalnych", 
+dowolny administrator może stworzyć ich "zamienniki (spersonalizowane szablony)".</p>
+
+<h3>Gdzie należy zapisać "zamienniki"?</h3>
+
+<p><strong>Zamienniki (szablony spersonalizowane)</strong> muszą być umieszczone w katalogu template-exension (lub jego podkatalogach).
+Nazwy plików zamienników mogą mieć dowolne nazwy oraz rozszerzenie .tpl. Na przykład: <span
+class="filename">template-extension/moje-rozszerzenia/wideo.tpl</span>.</p>
+
+
+<h3>Jak mogę aktywować "zamienniki"?</h3>
+<p>Aby aktywować powiązane zamienniki<strong>szablon oryginalny</strong> powinien być przypisany do każdego
+ <strong>zamiennika (szablonu spersonalizowanego)</strong>.
+ Do tego służy funkcja "Rozszerz szablony" w menu Konfiguracja/Administracja.</p>
+
+<p>Jeżeli zostanie wybrane <strong>opcjonalne słowo klucz dla adresu URL</strong> zamienniki będą funkcjonować tylko dla stron zawierających te słowa. Na przykład: <span
+  class="pwgScreen">index.php?/<strong>najczęściej_odwiedzane</strong></span></p>
+  
+<p>Zaawansowani użytkownicy mogą używać linków permanentnych jako <strong>opcjonalnego słowa klucz dla adresu URL</strong>. </p>
+<h3>Jak mogę deaktywować "zamienniki"?</h3>
+<ul>
+<li>Odznacz powiązane "Szablony oryginalne".</li>
+<li>Usuń "zamienniki" przez FTP.</li>
+</ul>
+<a name="warnings"></a>
+<h3>Ostrzeżenia</h3>
+<ul>
+
+  <li><strong>Szablon oryginalny</strong> musi być "oryginalnym" szablonem, w przeciwnym przypadku mogą wystąpić nieprzewidziane problemy!</li>
+
+  <li>Dla wielu <strong>zamienników (szablonów spersonalizowanych)</strong> z takim samym<strong>Szablonem oryginalnym</strong> i takim samym <strong>kluczowym słowem dla adresu URL</strong> aktywny jest tylko ostatni zamiennik.</li>
+
+  <li>Odznaczenie <strong>opcjonalnego słowa klucz dla adresu URL</strong> aktywuje zamiennik dla dowolnego użycia szablonu. Jak już wspomniano wcześniej, kolejność może nadpisać poprzednio wybrane zamienniki.</li>
+
+  <li>Podkatalogi:
+Podkatalogi są ignorowane, ale są przydatne aby zmienić kolejność.<br />
+distributed-samples: rozpowszechniane dla celów testowych! 
+<strong>Nie edytuj ich</strong>, ale stwórz własne.
+</li>
+
+  <li>Po usunięciu zamiennika natychmiastowo jest aktywowany <strong>Szablon oryginalny</strong>.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/pl_PL/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Lista grup</h2>
+
+<p>To jest miejsce, w którym możesz zarządzać zdefiniowanymi grupami.</p>
+
+<h3>Dodaj grupę</h3>
+
+<p>Grupy może dodawać administrator.</p>
+
+<h3>Lista grup</h3>
+
+<p>Lista dla każdego elementu umożliwia:</p>
+
+
+<ul>
+  <li>przejście do listy członków</li>
+  <li>przejście do uprawnień</li>
+  <li>usunięcie grupy (wymaga zaznaczenia potwierdzającego checkbox'a)</li>
+  <li>zmiana statusu "default" (wymaga zaznaczenia potwierdzającego checkbox'a)</li>
+</ul>
+
+<h3>Grupy domyślne</h3>
+<p>Grupy domyślne są grupami przypisywanymi do nowych użytkowników.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>Wiele możliwości dodania zdjęć do Twojej galerii:</p>
+
+<ul>
+  <li><strong>Wgranie bezpośrednie</strong> z poziomu przeglądarki jest najprostszym i szybkim sposobem. Zależy od możliwości Twojej przeglądarki oraz serwera. W przypadku problemów z dużą ilością zdjęć, możesz skorzystać z wgrywania innym sposobem!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Przejdź do Bezpośredniego Wgrywania </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> jest aplikacją zainstalowaną na Twoim komputerze. Przeciągnij &amp; upuść zdjęcia w oknie pLoader, kliknij <em>"Wgraj do Piwigo"</em> i pozwól pLoader'owi wykonać swoją pracę. Możesz także znaleźć inne aplikacje takie jak <strong>WinToPiwigo</strong> lub plugin eksportu do Piwigo <strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Przejdź do pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Transfer FTP</strong> jest najbardziej rekomendowanym sposobem dodawania bardzo dużej ilości zdjęć przy pomocy niewielu kliknięć. Skorzystaj z przewodnika aby przygotować swoje zdjęcia. Metoda FTP umożliwia Ci bardzo dokładną kontrolę nad umiejscowieniem plików zdjęć na serwerze.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Przejdź do FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/pl_PL/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/help_groups.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Grupy są dobrym sposobem do zarządzania uprawnieniami dla określonej listy użytkowników.</p>
+
+<p>Możesz tworzyć grupy w <span class="pwgScreen">Administracja &raquo; Użytkownicy &raquo; Grupy</span> i przypisywać użytkowników do tych grup w <span class="pwgScreen">Administracja &raquo; Użytkownicy &raquo; Zarządzaj</span>.</p>
+
+<p>Użytkownik może należeć do wielu grup. Przyznanie dostępu jest ważniejsze niż zabronienie : jeżeli użytkownik "jack" należy do grup "family" i "friends", i tylko grupa "family" może oglądać kategorię "Christmas 2003", "jack" będzie mógł oglądać kategorię "Christmas 2003".</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Jak tylko utworzysz galerię, możesz dostosować ją dla odwiedzających
+<ul>
+    <li>Domyślne wyswietlanie w zakładce <span class="pwgScreen">Administracja &raquo; Konfiguracja &raquo; Opcje</span> <span class="pwgScreen">Ustawienia dla gości</span></li>
+    <li>Domyślny temat w <span class="pwgScreen">Administracja &raquo; Konfiguracja &raquo; Tematy</span></li>
+    <li>Domyślny język w <span class="pwgScreen">Administracja &raquo; Konfiguracja &raquo; Języki</span></li>
+</ul>
+Domyślnie, każdy nowy użytkownik otrzyma te ustawienia po rejestracji.
+</p>
+<p>Jeżeli masz pytania, społeczność Piwigo zaprasza Cię na swoje <a href="http://pl.piwigo.org/forum">forum</a>.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,47 @@
+<fieldset>
+<legend>Uprawnienia dla zdjęć</legend>
+
+<p>Każde zdjęcie posiada <strong>poziom prywatności</strong> (blokadę). Każdy użytkownik także posiada poziom prywatności (klucz). Jest 5 poziomów prywatności:</p>
+<ol>
+  <li>Brak</li>
+  <li><em>Kontakty</em></li>
+  <li><em>Przyjaciele (który jest wyższy niż Kontakty)</em></li>
+  <li><em>Rodzina (który jest wyższy niż Przyjaciele)</em></li>
+  <li><em>Administratorzy (który jest wyższy niż każdy inny poziom)</em></li>
+</ol>
+
+<p>Wyższe poziomy posiadają uprawnienia do niższych poziomów. Jeżeli dany użytkownik posiada wyższy poziom prywatności, to może oglądać więcej zdjęć.</p>
+
+<p>Na przykład jeżeli zdjęcie "peter_wedding-0024.jpg" posiada poziom prywatności <em>"Rodzina"</em>, to:</p>
+<ul>
+  <li>Piotr (który posiada poziom <em>"Administratorem"</em>) będzie widział zdjęcie ponieważ <em>"Administratorzy"</em> mogą oglądać wszystkie zdjęcia</li>
+  <li>Beata (która posiada poziom <em>"Rodzina"</em>) także będzie widzieć zdjęcie</li>
+  <li>Maria (która posiada poziom tylko <em>"Przyjaciel"</em>) nie będzie widziała zdjęcia</li>
+</ul>
+
+<p>Użytkownik, który nie posiada uprawnień do oglądania zawartości danej kategorii, nie będzie widział nawet tej kategorii. Ta sama zasada dotyczy tagów.</p>
+
+<p>Możesz ustawić poziom prywatności dla użytkownika w: <span class="pwgScreen">Administracja&raquo; Użytkownicy &raquo; Zarządzaj</span> .</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Uprawnienia na kategoriach</legend>
+
+<p>Jeżeli poziomy prywatności nie bardzo pasują do Twoich potrzeb, możesz także zarządzać uprawnieniami na kategoriach dla użytkowników oraz grup. W tym samym czasie możesz zarządzać uprawnieniami dla zdjęć oraz kategorii, nie powodując konfliktów.</p>
+
+<p>Do poszczególnych kategorii można zabronić dostępu. Kategorie mogą być "publiczne" lub
+"prywatne". Uprawnienia (dla grup i użytkowników) mogą być ustawione tylko dla kategorii "prywatnych".</p>
+
+<li>Możesz ustawić kategorię jako "prywatna" dla pojedynczej kategorii (<span
+class="pwgScreen">Administracja &raquo; Kategorie &raquo; Zarządzaj &raquo; edycja</span>) lub przez ustawienie opcji dla całego drzewa (<span class="pwgScreen">Administracja &raquo; Kategorie &raquo; Właściwości &raquo; Publiczna / Prywatna</span>).</p>
+
+<p>Po ustawieniu kategorii jako prywatna, możesz zarządzać uprawnieniami dla grup i użytkowników przy pomocy następujących 3 ekranów :</p>
+
+<ul>
+  <li><span class="pwgScreen">Administracja &raquo; Użytkownicy &raquo; Zarządzaj &raquo; akcja uprawnienia</span> (jeden link per użytkownik)</li>
+  <li><span class="pwgScreen">Administracja &raquo; Użytkownicy &raquo; Grupy &raquo; akcja uprawnienia</span> (jeden link per grupa)</li>
+  <li><span class="pwgScreen">Administracja &raquo; Kategorie &raquo; Zarządzaj &raquo; akcja edycja uprawnień kategorii</span> (jeden link per kategoria)</li>
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/pl_PL/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,5 @@
+<p>Zdjęcia są wyświetlane w kategoriach odpowiadających katalogom, w których dane pliki się znajdują.</p>
+
+<p>Możesz także wyświetlać zdjęcia w wielu kategoriach bez duplikowania plików na serwerze www. By podlinkować link do kategorii, wystarczy utworzyć powiązanie na stronie edycji zdjęcia (do której ma dostęp każdy administrator ze strony danego zdjęcia w galerii).</p>
+
+<p>Kategorie wirtualne bazują na następującym założeniu : nie mają odpowiadających katalogów. Kategorię wirtualną możesz stworzyć w <span class="pwgScreen">Administracja &raquo; Kategorie &raquo; Zarządzaj</span>.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/history.html	(revision 25596)
@@ -0,0 +1,38 @@
+<h2>Historia</h2>
+
+<p>Ekran umożliwia śledzenie historii odwiedzin stron galerii Piwigo w nawiązaniu do wybranych opcji w Administracja, Ogólne, Historia.</p>
+	
+<h3>Statystyki</h3>
+<ul>
+  <p>Jeżeli wybrałeś opcję zapisywania odwiedzin stron(<span
+class="pwgScreen">index.php</span> i <span
+class="pwgScreen">picture.php</span>) w tabeli <code>historii. </code>
+Index pozwala na prześledzenie odwiedzonych stron.</p>
+	
+	<li><strong>Statystyki ogólne</strong> : wizualizacja roczna. </li>
+	
+	<li><strong>Statystyki roczne</strong> : wizualizacja miesięczna dla wybranego roku.</li>
+	
+	<li><strong>Statystyki miesięczne</strong> : wizualizacja dzienna dla wybranego miesiąca.</li>
+	
+	<li><strong>Statystyki dzienne</strong> :wizualizacja dzienna dla wybranego dnia.</li>
+	
+</ul>
+
+<h3>Wyszukiwanie</h3>
+<ul>
+  <p>Jeżeli wybrałeś opcję zapisywania odwiedzin stron (<span
+class="pwgScreen">index.php</span> i <span
+class="pwgScreen">picture.php</span>) w tabeli <code>historii. </code>
+Index pozwala na prześledzenie odwiedzonych stron z wykorzystaniem różnych filtrów.</p>
+ 
+	<li><strong>Filtrowanie po dacie</strong> : wybierz interwał dat, które Cię interesują.</li>
+	
+	<li><strong>Filtrowanie po typie elementu</strong> : wybierz typ elementu, którego statystyki chcesz zobaczyć.</li>
+	
+	<li><strong>Filtrowanie po użytkowniku</strong> : wybierz użytkownika, którego statystyki chcesz zobaczyć.</li>
+	
+	<li><strong>Filtrowanie po nazwie pliku</strong> : wybierz nazwę pliku, dla którego chcesz zobaczyć statystyki.</li>
+	
+	<li><strong>Filtrowanie po identyfikacyjnym obrazie</strong> : wybierz identyfikacyjny obraz, dla którego statystyki chcesz zobaczyć.</li>
+</ul>
Index: /tags/2.6.0RC1/language/pl_PL/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/pl_PL/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/maintenance.html	(revision 25596)
@@ -0,0 +1,47 @@
+<h2>Maintenance</h2>
+
+<p>W celu optymalizacji czasu generowania strony Piwigo wykorzystuje informacje umieszczone w cache'u. Dla przykładu zamiast przeliczać za każdym razem liczbę elementów w kategorii, informacja ta jest zapisana w bazie danych. Teoretycznie informacja ta powinna być zawsze prawdziwa, ale czasami występują błędy i informacja wyświetlana jest niepoprawna.</p>
+
+<p>Niektóre informacje stają się wtedy bezużyteczne. Usuwanie tych bezużytecznych informacji pozwala zaoszczędzić przestrzeń na dysku.</p>
+
+<ul>
+
+  <li>
+    <strong>Nie powiązane elementy:</strong>
+    Wyświetla obrazy, które nie są powiązane z żadną wirtualną kategorią.
+  </li>
+  <li>
+    <strong>Pliki o tej samej nazwie w jednej lub wielu kategoriach:</strong>
+    Wyświetla obrazy lub pliki o tej samej nazwie znalezione w jednej lub wielu kategoriach.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Aktualizuj informacje o kategoriach:</strong> Informacje dla każdej kategorii : lista kategorii nadrzędnych, liczba obrazów, data dodania ostatniego obrazu, pozycja względem sąsiednich kategorii, pozycja względem wszystkich kategorii. Akcja ta sprawdza także istnienie reprezentanta dla kategorii.</li>
+
+  <li><strong>Aktualizuj informacje o obrazach:</strong> Dla każdego obrazu są to informacje : pełna ścieżka do pliku, średnie oceny. <em>Ostrzeżenie</em>: nie należy mylić tych informacji z metadanymi, które są dostępne z poziomu <span class="pwgScreen">Administracja,
+  Kategorie, Synchronizacja</span> lub dostępne z poziomu ekranu edycji dla każdego elementu (np. przez <span class="pwgScreen">Obraz</span>  ).</li>
+
+  <li><strong>Napraw i optymalizuj bazę danych:</strong>
+  Dla każdej tabeli może być wykonana, re-organizacja, naprawa i optymalizacja.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>Usuń szczegóły historii:</strong> Usuwa wszystkie linie z tabeli
+  <code>historii</code> . Ekran <span class="pwgScreen">Administracja,
+  Specjalne, Historia</span> nie będzie wyświetlał żadnej historii. <em>Ostrzeżenie</em>: wszystkie dane zostaną utracone bez możliwości ich odzyskania.</li>
+
+  <li><strong>Usuń podsumowanie historii:</strong> Usuwa informacje podsumowujące liczbę odwiedzin historii. Podsumowanie to jest wyliczane na podstawie szczegółowych informacji zawartych w historii.</li>
+
+  <li><strong>Wyczyść sesje:</strong> Usuwa wygaśnięte sesje użytkowników.</li>
+
+  <li><strong>Wyczyść nigdy nie używane RSS feed</strong></li>
+  
+  <li><strong>Purge search history</strong></li>
+  
+  <li><strong>Usuń skompilowane szablony</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/pl_PL/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Powiadamianie mailowe</h2>
+
+<p>Ekran umożliwia konfigurację oraz zarządzanie powiadomieniami użytkowników o nowościach na stronie.</p>
+
+<p>Ekran składa się z 3 zakładek:</p>
+
+<h3>Parametry</h3>
+<p>Dostępna tylko dla webmaster'a, umożliwia zmianę parametrów powiadomień mailowych.</p>
+
+<h3>Zapisy</h3>
+<p>Dostępna tylko dla webmaster'a, umożliwia zapisywanie/wypisywanie użytkowników z powiadomień.</p>
+
+<h3>Wyślij</h3>
+<p>Dostępna tylko dla webmaster'ów i administratorów, umożliwia wysłanie wiadomości do użytkowników.</p>
+
Index: /tags/2.6.0RC1/language/pl_PL/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Linki permanentne</h2>
+
+<p>Linki permanentne są wykorzystywane po to, aby adres URL danej kategorii był łatwiejszy do zapamiętania i ładniej wyglądał. Jeżeli kategoria posiada taki link, nie jest już potrzebne zapamiętywanie jej ID.</p>
+
+<p>Podczas usuwania linku, istnieje możliwość zapisania go w historii, po to, żeby w dalszym ciągu działały adresy zewnętrzne. W historii linków permanentnych można zobaczyć kiedy dany link został usunięty jak również czas kiedy był ostatnio używany oraz liczbę jego użyć.</p>
+
+<p>Link permanentny musi być unikalny w obrębie kategorii. Również w historii linków permanentnych dana nazwa może być użyta tylko raz.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,70 @@
+<fieldset>
+  <legend>Szybki start</legend>
+
+<ol>
+  <li>Utwórz katalog lokalny na swoim komputerze.</li>
+
+  <li>Skopiuj zdjęcia do tego katalogu (zmień ich rozmiar na potrzeby internetu). <em>Uwaga</em>: nazwy katalogów oraz plików mogą zawierać tylko litery, cyfry oraz znaki "-", "_" lub ".". Nie mogą zawierać innych znaków, znaku spacji ani polskich liter.</li></li>
+
+  <li>Za pomocą klienta FTP skopiuj katalog katalogu "galleries".</li>
+
+  <li>Zaloguj się do galerii i przejdź do <span class="pwgScreen">Administracja</span> i wybierz duży przycisk Synchronizacja.</li>
+</ol>
+
+<p>Gratulacje! Stworzyłeś pierwszą kategorię w swojej galerii.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Struktura katalogów i plików</legend>
+
+<ul>
+
+  <li>
+
+    <p>W Piwigo katalogi kategorii znajdują się wewnątrz katalogu
+    "galleries". Poniżej można zobaczyć drzewo niewielkiej galerii
+	(ale wykorzystującej wiele funkcji):</p>
+
+    <pre>
+galleries
+|-- wedding
+|   |-- celebration
+|   |   |-- arrival
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- departure
+|   |       +-- paul-and-sarah.jpg
+|   +-- party
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- honeymoon
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+  
+  <li>Poza "pwg_representative" (wyjaśnienie poniżej), każdy podkatalog w katalogu "galleries" tworzy kategorię. Nie ma limitu na poziomy zagłębień katalogów.</li>
+
+  <li>Ogólnie element jest reprezentowany przez plik. Plik może być elementem
+  Piwigo jeżeli jego rozszerzenie jest zawarte <code>file_ext</code>
+  (plik <span class="filename">include/config_default.inc.php</span>).
+  Plik może być obrazem jeżeli jego rozszerzenie
+  jest zawarte w <code>picture_ext</code>
+  .</li>
+
+  <li>Domyślnie, pliki nie będące obrazami (filmy, dźwięki, tekst, cokolwiek innego...), są przedstawiane przy pomocy ikon z rozszerzeniem pliku
+  Opcjonalnie można powiązać miniaturę przez pwg_representative.
+  Przyjrzyj się przykładowi powyżej dla video.avi.</li>
+  
+  <li><em>Ostrzeżenie</em>: nazwy katalogów oraz plików mogą zawierać tylko litery, cyfry oraz znaki "-", "_" lub ".". Nie mogą zawierać innych znaków, znaku spacji ani polskich liter.
+
+  <li>Po umieszczeniu plików, miniatur oraz reprezentantów,
+  przejdź do: <span class="pwgScreen">Administracja &raquo; Narzędzia &raquo;
+  Synchronizacja</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/pl_PL/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Wyszukiwanie</h2>
+
+<p>Funkcja umożliwia wyszukiwanie obrazów w całej galerii.</p>
+
+<dl>
+
+  <dt>Wyszukiwanie słów</dt>
+  <dd>Szuka danego słowa we wszystkich atrybutach obrazów umieszczonych w galerii. Użyj znaku * aby wyszukać obrazy, do których słowo częściowo pasuje (np. wycieczk*).</dd>
+
+  <dt>Wyszukiwanie autora</dt>
+  <dd>Użyj znaku * aby wyszukać słowo które częściowo pasuje (np. jac*).</dd>
+
+  <dt>Wyszukiwanie po dacie</dt>
+  <dd>Wybierz datę i/lub datę końcową dla wyszukiwania. Zostaw datę pustą jeżeli chcesz wyszukać obrazy "sprzed" danej daty. Rok musi być wpisany w ostatnim polu w formacie : 0000 (np. 2004)</dd>
+
+  <dt>Wyszukiwanie w kategoriach</dt>
+  <dd>Wybierz kategorię lub kategorie, w których chcesz wyszukiwać. Dla przyśpieszenia wyszukiwania w podkategoriach, można zaznaczyć główną kategorię oraz opcję szukania w podkategoriach.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/pl_PL/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/synchronize.html	(revision 25596)
@@ -0,0 +1,8 @@
+<h2>Synchronizuj</h2>
+
+<p>Możliwe są 2 sposoby synchronizacji : katalogi/pliki oraz metadane plików. Tryb katalogi/pliki służy do synchronizacji struktury katalogów oraz plików kategorii z bazą danych. Tryb metadane plików aktualizuje informacje o elementach takie jak rozmiar pliku, rozmiar w pixelach, EXIF czy IPTC.</p>
+
+<p>Najpierw musi zostać wykonana synchronizacja katalogi/pliki.</p>
+
+<p>Proces synchronizacji może trwać długo (zależny jest np od obciążenia serwera oraz ilości elementów, które mają zostać zsynchronizowane) dlatego możliwa jest synchronizacja krok po kroku:
+kategoria po kategorii.</p>
Index: /tags/2.6.0RC1/language/pl_PL/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/help/user_list.html	(revision 25596)
@@ -0,0 +1,30 @@
+<h2>Lista użytkowników</h2>
+
+<p>W tym miejscu można zarządzać zarejestrowanymi użytkownikami. Tylko uprawnienia znajdują się na kilku innych ekranach.</p>
+
+<h3>Dodawanie użytkownika</h3>
+
+<p>Administrator może dodawać użytkowników ręcznie.</p>
+
+<h3>Lista użytkowników</h3>
+
+<p>Lista użytkowników może być filtrowana po nazwie użytkownika (użyj znaku * jako wildcard), grupie lub statusie. Lista może być sortowana po dacie rejestracji, nazwie użytkownika w kolejności roznącej lub malejącej.</p>
+
+<p>Ekran ten umożliwia wykonywanie w tym samym czasie danej akcji na kilku użytkonwikach
+:</p>
+
+<ul>
+
+  <li>usuwanie użytkowników (wymaga potwierdzenia przez zaznaczenie checkbox)</li>
+
+  <li>zmiana statusu</li>
+
+  <li>dodanie lub usuięcie z grup</li>
+
+  <li>edycja właściwości wyświetlania</li>
+
+  <li>edycja dodatkowych właściwości</li>
+
+</ul>
+
+<p>Domyślnie można wykonać taką akcję np. dla użytkowników zaznaczonych lub wszystkich użytkowników.</p>
Index: /tags/2.6.0RC1/language/pl_PL/index.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/pl_PL/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalacja';
+$lang['Basic configuration'] = 'Podstawowa konfiguracja';
+$lang['Default gallery language'] = 'Domyślny język galerii';
+$lang['Database configuration'] = 'Konfiguracja bazy danych';
+$lang['Admin configuration'] = 'Konfiguracja administratora';
+$lang['Start Install'] = 'Rozpoczęcie instalacji';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'To będzie wyświetlone dla odwiedzających i jest konieczne do celów administracyjnych ';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Połączenie do serwera powiodło się, ale nie było możliwe połączenie do bazy danych';
+$lang['Can\'t connect to server'] = 'Nie można połączyć się do serwera';
+$lang['Host'] = 'MySQL host';
+$lang['User'] = 'Użytkownik';
+$lang['user login given by your host provider'] = 'login użytkownika otrzymany od dostawy';
+$lang['user password given by your host provider'] = 'hasło użytkownika otrzymane od dostawcy';
+$lang['Database name'] = 'Nazwa bazy danych';
+$lang['also given by your host provider'] = 'także otrzymana od dostawcy';
+$lang['Database table prefix'] = 'Prefix tabel bazy danych';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'tabele w bazie danych będą miały taki prefix (ułatwia to zarządzanie tabelami)';
+$lang['enter a login for webmaster'] = 'wprowadź nazwę użytkownika posiadającego uprawnienia Webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'login nie może zawierać następujących znaków \' lub "';
+$lang['please enter your password again'] = 'wprowadź hasło jeszcze raz';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Zachowaj hasło, umożliwia ono dostęp do panelu administracyjnego';
+$lang['Password [confirm]'] = 'Hasło [potwierdź]';
+$lang['verification'] = 'weryfikacja';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Potrzebujesz pomocy ? Zadaj pytanie na <a href="%s">Forum Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Z jego pomocą odwiedzający będą mogli się skontaktować z administratorem strony';
+$lang['PHP 5 is required'] = 'PHP 5 jest wymagane';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Twój serwer aktualnie używa PHP w wersji %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo może spróbować przełączyć Twoją konfigurację do PHP 5 poprzez modyfikację pliku .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Możesz również zmienić tę konfigurację sam, a następnie uruchomić ponownie Piwigo.';
+$lang['Try to configure PHP 5'] = 'Spróbuj skonfigurować PHP 5';
+$lang['Sorry!'] = 'Niestety!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nie mógł skonfigurować Twojego PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Możesz skontaktować się z działem wsparcia Twojego providera aby dowiedzieć się jak włączyć PHP 5.';
+$lang['Hope to see you back soon.'] = 'Do zobaczenia wkrótce.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulacje, instalacja Piwigo zakończona sukcesem';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternatywnym rozwiązaniem jest skopiować tekst z powyższego textbox i wkleić do pliku "local/config/database.inc.php" (Uwaga : database.inc.php musi zawierać to co jest w textbox i nie może zawierać znaków spacji oraz enter)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Nie powiodło się stworzenie pliku konfiguracyjnego local/config/database.inc.php.';
+$lang['Download the config file'] = 'Pobierz plik konfiguracyjny';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Możesz pobrać plik konfiguracyjny i wgrać go do katalogu lokalnego/z konfiguracją.';
+$lang['Just another Piwigo gallery'] = 'Kolejna galeria Piwigo';
+$lang['Welcome to my photo gallery'] = 'Witaj w mojej galerii zdjęć';
+$lang['Welcome to your new installation of Piwigo!'] = 'Witamy w Towjej nowej instalacji Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Nie obawiaj się kontaktu na forum w celu skorzystania z pomocy: %s';
+$lang['localhost or other, supplied by your host provider'] = 'localhost lub iny, dostarczone przez Twojego dostawcę';
+?>
Index: /tags/2.6.0RC1/language/pl_PL/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Polski [PL]
Index: /tags/2.6.0RC1/language/pl_PL/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pl_PL/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pl_PL/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Aktualizacja';
+$lang['Upgrade from version %s to %s'] = 'Aktualizacja z wersji %s do %s';
+$lang['Statistics'] = 'Statystyki';
+$lang['total upgrade time'] = 'sumaryczny czas aktualizacji';
+$lang['total SQL time'] = 'sumaryczny czas SQL';
+$lang['SQL queries'] = 'zapytań SQL';
+$lang['Upgrade informations'] = 'Informacje o aktualizacji';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Jeżeli napotkasz jakiś problem wykonaj weryfikację przez [Administracja>Narzędzia>Konserwacja].';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Tylko administrator może wykonać aktualizację: zaloguj się poniżej.';
+$lang['You do not have access rights to run upgrade'] = 'Nie masz uprawnień do wykonania aktualizacji';
+$lang['All sub-albums of private albums become private'] = 'Wszystkie pod-albumy prywatnych albumów będą prywatne';
+$lang['User permissions and group permissions have been erased'] = 'Uprawnienia użytkowników oraz grup zostały usunięte';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z poprzedniej konfiguracji zostały zapisane tylko prefiks miniatur oraz adres e-mail administratora.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Ta strona proponuje aktualizację Twojej bazy danych Piwigo do nowej wersji. Asystent aktualizacji myśli, że aktualnie używasz <strong>wersji %s</strong> (lub równoważnej).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Na wszelki wypadek następujące wtyczki zostały zdezaktywowane. Przed ich aktywacją, należy sprawdzić, czy nie ma nowszych wersji';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'W <i>%s</i>, przed <b>?></b>, wstaw:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Na wszelki wypadek następujące motywy zostały dezaktywowane. Przed ich aktywacją, należy sprawdzić, czy nie ma nowszych wersji';
+
+?>
Index: /tags/2.6.0RC1/language/pt_BR/about.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+  <li>Piwigo é uma aplicação web que permite a criação de uma galeria de imagens on line.</li>
+
+  <li>Piwigo é desenvolevido em PHP com uma base de dados MySQL.</li>
+
+  <li>Se houver sugestões ou comentários, visite o <a
+  href="http://piwigo.org">sitio oficial</a> e <a href="http://br.piwigo.org/forum">seu forum</a>.</li>
+
+<p>A tradução Brasil é mantida por (em ordem alfabética):
+
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18215">flaviove</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17804">glaucio</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17057">oigreslima</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17030">PabloBSantiago</a></li>
+	</ul>
+.... Muito obrigado</p>
Index: /tags/2.6.0RC1/language/pt_BR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/admin.lang.php	(revision 25596)
@@ -0,0 +1,955 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d associação';
+$lang['%d associations'] = '%d associações';
+$lang['%d album including'] = '%d álbum incluído';
+$lang['%d albums including'] = '%d álbuns incluídos ';
+$lang['%d physical'] = '%d físico';
+$lang[' and %d virtual'] = ' e %d virtual';
+$lang['%d album moved'] = '%d álbum movido';
+$lang['%d albums moved'] = '%d álbuns movidos';
+$lang['%d group'] = '%d grupo';
+$lang['%d groups'] = '%d grupos';
+$lang['%d member'] = '%d membro';
+$lang['%d members'] = '%d membros';
+$lang['%d tag'] = '%d tag';
+$lang['%d tags'] = '%d tags';
+$lang['%d user comment rejected'] = '%d comentário de usuário rejeitado';
+$lang['%d user comments rejected'] = '%d comentários de usuário rejeitados';
+$lang['%d user comment validated'] = '%d comentário de usuário aprovado';
+$lang['%d user comments validated'] = '%d comentários de usuário aprovados';
+$lang['%d user deleted'] = '%d usuário apagado';
+$lang['%d users deleted'] = '%d usuários apagados';
+$lang['%d user'] = '%d usuário';
+$lang['%d users'] = '%d usuários';
+$lang['%d waiting for validation'] = '%d aguardando aprovação';
+$lang['Actions'] = 'Acões';
+$lang['Activate'] = 'Ativar';
+$lang['Add/delete a permalink'] = 'Adicionar/apagar um link';
+$lang['Add a tag'] = 'Adicionar uma tag';
+$lang['Add a user'] = 'Adicionar um usuário';
+$lang['Add group'] = 'Adicionar um grupo';
+$lang['Add'] = 'Adicionar';
+$lang['Allow user registration'] = 'Permitir o registro de usuário';
+$lang['Apply to sub-albums'] = 'Aplicar aos sub-álbuns';
+$lang['Associated'] = 'Associados(as)';
+$lang['Caddie management'] = 'Gerenciamento da cesta';
+$lang['Caddie'] = 'Cesta';
+$lang['Albums authorized thanks to group associations'] = 'Álbuns autorizados graças às associações de grupo';
+$lang['Album manual order was saved'] = 'A ordem manual dos álbuns foi salva';
+$lang['Check for upgrade failed for unknown reasons.'] = 'A checagem por atualização falhou por razões desconhecidas.';
+$lang['Check for upgrade'] = 'Checar por atualização';
+$lang['Comments for all'] = 'Comentários para todos';
+$lang['Current name'] = 'Nome atual';
+$lang['Database'] = 'Base de dados';
+$lang['Deactivate'] = 'Desativar';
+$lang['Delete Representant'] = 'Apagar representante';
+$lang['Delete selected tags'] = 'Excluir tags selecionadas';
+$lang['Delete selected users'] = 'Apagar usuários selecionados';
+$lang['Deletions'] = 'Itens apagados';
+$lang['Deny selected groups'] = 'Negar os grupos selecionados';
+$lang['Deny selected users'] = 'Negar usuários selecionados';
+$lang['Description'] = 'Descrição';
+$lang['Display options'] = 'Mostrar opções';
+$lang['Dissociated'] = 'Desassociados';
+$lang['Does not represent'] = 'Não representa';
+$lang['Edit selected tags'] = 'Editar tags selecionadas';
+$lang['Edit tags'] = 'Editar tags';
+$lang['Email admins when a new user registers'] = 'Notificar os administradores quando um novo usuário se registrar';
+$lang['Email admins when a valid comment is entered'] = 'Notificar os administradores quando um comentário aprovado for incluído';
+$lang['Email admins when a comment requires validation'] = 'Notificar os administradores quando um comentário necessitar de aprovação';
+$lang['Environment'] = 'Ambiente';
+$lang['Form'] = 'Formulário';
+$lang['Gallery title'] = 'Título da galeria';
+$lang['Grant selected groups'] = 'Permitir os grupos selecionados';
+$lang['Grant selected users'] = 'Permitir os usuários selecionados';
+$lang['Group name'] = 'Nome do grupo';
+$lang['Groups'] = 'Grupos';
+$lang['Guests'] = 'Visitantes';
+$lang['History'] = 'Histórico';
+$lang['Informations'] = 'Informações';
+$lang['Install'] = 'Instalar';
+$lang['Link all album photos to a new album'] = 'Vincular (lincar) todos os itens do álbum em um novo álbum';
+$lang['Link all album photos to some existing albums'] = 'Vincular (lincar) todos os itens do álbum a algum(s) álbum existente';
+$lang['Linked albums'] = 'Álbuns vinculados (Linked)';
+$lang['Lock gallery'] = 'Trancar a  galeria';
+$lang['Maintenance'] = 'Manutenção';
+$lang['Edit album permissions'] = 'Gerenciar permissões do álbum';
+$lang['Manage permissions for group "%s"'] = 'Gerenciar permissões do grupo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Gerenciar permissões do usuário "%s"';
+$lang['Manage tags'] = 'Gerenciar tags';
+$lang['Members'] = 'Membros';
+$lang['Metadata synchronized from file'] = 'Metadados sincronizados do arquivo';
+$lang['Move albums'] = 'Mover álbuns';
+$lang['Move'] = 'Mover';
+$lang['Name'] = 'Nome';
+$lang['New name'] = 'Nome novo';
+$lang['New parent album'] = 'Novo álbum pai (parent album)';
+$lang['New tag'] = 'Tag nova';
+$lang['Number of comments per page'] = 'Número de comentários por página';
+$lang['Number of rates'] = 'Número de votos';
+$lang['Number of thumbnails to create'] = 'Número de miniaturas (thumbnails) a ser criado';
+$lang['Only private albums are listed'] = 'Apenas os álbuns privados estão listados';
+$lang['Operating system'] = 'Sistema operacional';
+$lang['Options'] = 'Opções';
+$lang['Other private albums'] = 'Outros álbuns privados';
+$lang['Page banner'] = 'Banner da página (imagem que fica no cabeçalho)';
+$lang['Parent album'] = 'Álbum pai';
+$lang['Path'] = 'Caminho (path)';
+$lang['Permalink'] = 'Permalink (endereço permanente)';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s já está sendo usado pelo álbum %s. Apague do histórico do permalink primeiro';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'O permalink deve ser composto de a-z, A-Z, 0-9, "-", "_" ou "/". Não deve ser numérico ou começar com número seguido de "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s já está sendo usado pelo álbum %s';
+$lang['Permalink history'] = 'Histórico de permalinks';
+$lang['Permalinks'] = 'Permalinks';
+$lang['Permission denied'] = 'Permissão negada';
+$lang['Permission granted thanks to a group'] = 'Permissão garantida graças ao grupo';
+$lang['Permission granted'] = 'Permissão garantida';
+$lang['Photo informations updated'] = 'Informações da imagem atualizada';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Posição';
+$lang['Preferences'] = 'Preferências';
+$lang['Properties'] = 'Propriedades';
+$lang['Random photo'] = 'Imagem randômica';
+$lang['Rate date'] = 'Data da votação';
+$lang['Rating by guests'] = 'Votado(a) pelos visitantes';
+$lang['Rating'] = 'Avaliação';
+$lang['Reject'] = 'Rejeitar';
+$lang['Representant'] = 'Representante';
+$lang['Representation of albums'] = 'Representante dos álbuns';
+$lang['Representative'] = 'Representativo';
+$lang['Represents'] = 'Representa';
+$lang['Save order'] = 'Salvar ordem';
+$lang['Save to permalink history'] = 'Salvar no histórico de permalinks';
+$lang['Select at least one album'] = 'Selecione ao menos um álbum';
+$lang['Select at least one photo'] = 'Selecionar ao menos uma foto';
+$lang['Select at least one user'] = 'Selecionar ao menos um usuário';
+$lang['Show info'] = 'Mostrar info';
+$lang['Site manager'] = 'Gerenciador do site';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Estatísticas';
+$lang['Storage album'] = 'Álbum de armazenagem';
+$lang['Sum of rates'] = 'Soma dos valores';
+$lang['Tag "%s" already exists'] = 'A tag "%s" já existe';
+$lang['Tag "%s" was added'] = 'A tag "%s" foi adicionada';
+$lang['Tag selection'] = 'Seleção de tag';
+$lang['The %d following tags were deleted'] = 'As %d tags seguintes foram apagadas';
+$lang['Unable to check for upgrade.'] = 'Não foi possível checar as atualizações.';
+$lang['Uninstall'] = 'Desinstalar';
+$lang['Use the default photo sort order (defined in the configuration file)']='Usar a ordem de exibição padrão (definida no arquivo de configuração)';
+$lang['User comments validation'] = 'Validação dos comentários de usuário';
+$lang['Users'] = 'Usuários';
+$lang['Validate'] = 'Aprovar';
+$lang['Validation'] = 'Aprovação';
+$lang['Version'] = 'Versão';
+$lang['Virtual albums to move'] = 'Álbuns virtuais a serem movidos';
+$lang['Virtual album name'] = 'Nome do álbum virtual';
+$lang['Webmaster cannot be deleted'] = 'Webmaster não pode ser apagado';
+$lang['You are running on development sources, no check possible.'] = 'Você está navegando em fontes de desenvolvimento, nenhuma checagem é possível.';
+$lang['You cannot delete your account'] = "Você não pode apagar sua conta";
+$lang['You cannot move an album in its own sub album'] = 'Você não pode mover um álbum em seu próprio sub-álbum.';
+$lang['You need to confirm deletion'] = 'Você precisa confirmar a remoção';
+$lang['Associate to album'] = 'Associar ao álbum';
+$lang['associate to group'] = 'associar ao grupo';
+$lang['Authorized'] = 'Autorizado';
+$lang['Add a virtual album'] = 'Adicionar um álbum virtual';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizar os usuários a adicionar comentários nos álbuns selecionados';
+$lang['The name of an album must not be empty'] = 'O nome de um álbum não pode ser vazio';
+$lang['Lock albums'] = 'Trancar álbuns';
+$lang['Private'] = 'Álbuns privados';
+$lang['Public'] = 'Álbuns públicos';
+$lang['Find a new representant by random'] = 'Escolha aleatoriamente um novo representante para este álbum';
+$lang['Public / Private'] = 'Público / Privado';
+$lang['Manage authorizations for selected albums'] = 'Gerenciar as autorizações para álbuns selecionados';
+$lang['Virtual album added'] = 'Álbum virtual adicionado';
+$lang['Virtual album deleted'] = 'Álbum virtual apagado';
+$lang['Access type'] = 'Tipo de acesso';
+$lang['Information data registered in database'] = 'Dado de informação registrado na base de dados';
+$lang['Default display'] = 'Exibição padrão (Default display)';
+$lang['The gallery URL is not valid.'] = 'O URL (endereço) da galeria não é valido.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'O número de comentários por página deve ser entre 5 e 50 .';
+$lang['Configuration'] = 'Configuração';
+$lang['confirm'] = 'confirmar';
+$lang['Date'] = 'Data';
+$lang['delete album'] = 'apagar o álbum';
+$lang['Dissociate from album'] = 'Desassociar do álbum';
+$lang['dissociate from group'] = 'desassociar do grupo';
+$lang['Album updated successfully'] = 'As informações do álbum foram atualizadas com sucesso';
+$lang['photos per page'] = 'itens por página';
+$lang['High definition enabled'] = 'Alta definição ativada';
+$lang['File'] = 'Arquivo';
+$lang['first photo added on %s'] = 'primeiro item adicionado em %s';
+$lang['Forbidden'] = 'Proibido';
+$lang['global mode'] = 'modo global';
+$lang['group "%s" added'] = 'grupo "%s" adicionado';
+$lang['group "%s" deleted'] = 'grupo "%s" apagado';
+$lang['group "%s" updated'] = 'grupo "%s" atualizado';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'O nome de um grupo não deve conter " ou \' ou ser vazio.';
+$lang['This name is already used by another group.'] = 'Este nome já está sendo usado por outro grupo.';
+$lang['High definition'] = 'Alta definição';
+$lang['jump to album'] = 'ir para o álbum';
+$lang['jump to photo'] = 'ir para imagem';
+$lang['leave'] = 'deixar (leave)';
+$lang['Lock'] = 'Trancar (Lock)';
+$lang['Locked'] = 'Trancado(a) (Locked)';
+$lang['manage album photos'] = 'gerenciar as fotos do álbum';
+$lang['manage sub-albums'] = 'gerenciar sub-álbuns';
+$lang['Manage'] = 'Gerenciar';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'O tempo de execução acabou, tratamento deve ser contínuo [Tempo estimado: %d segundo].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'O tempo de execução acabou, tratamento deve ser contínuo [Tempo estimado: %d segundos].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'O tempo disponível para a criação da lista de usuários para enviar email é limitado. Outros usuários não estão listados.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'O tempo para enviar email é limitado. Outros emails estão desconsiderados.';
+$lang['To send ?'] = 'Enviar ?';
+$lang['Last send'] = 'Enviado pela última vez';
+$lang['User'] = 'Usuário';
+$lang['See you soon,'] = 'Até breve,';
+$lang['Go to'] = 'Ir à(ao) ';
+$lang['Hello'] = 'Olá ';
+$lang['New photos were added'] = 'Novos itens foram adicionados ';
+$lang['on'] = ' em ';
+$lang['between'] = 'entre ';
+$lang['and'] = ' e ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'O webmaster inscreveu você para receber notificações por email.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Você está na assinatura para receber notificações por email.';
+$lang['To subscribe'] = 'Para assinar';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Se encontrar problemas ou tiver qualquer pergunta, por favor envie uma mensagem para ';
+$lang['[NBM] Problems or questions'] = '[Notificação] Problemas ou perguntas';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'O webmaster cancelou sua inscrição para você não receber notificações por email.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Você saiu da assinatura para receber notificações por email.';
+$lang[', click on'] = ', clique em ';
+$lang['To unsubscribe'] = 'Para cancelar a assinatura';
+$lang['With blank value, gallery title will be used'] = 'Com valor em branco, o título da galeria será usado';
+$lang['Notification'] = 'Notificação';
+$lang['Error when sending email to %s [%s].'] = 'Erro ao enviar email para %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email enviado para %s [%s].';
+$lang['%d mail was sent.'] = '%d email foi enviado.';
+$lang['%d mails were sent.'] = '%d emails foram enviados.';
+$lang['%d mail was not sent.'] = '%d email não foi enviado.';
+$lang['%d mails were not sent.'] = '%d emails não foram enviados.';
+$lang['No mail to send.'] = 'Nenhum email para enviar.';
+$lang['There is no available subscribers to mail.'] = 'Não há assinante algum para enviar email.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Assinantes poderiam ser listados (disponíveis) apenas se houver novos itens para notificar.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Em todo caso, apenas webmasters podem ver esta tab e nunca administradores.';
+$lang['No user to send notifications by mail.'] = 'Nenhum usuário para enviar notificações por email.';
+$lang['New photos added'] = 'Novos itens adicionados';
+$lang['Subscribe to notification by mail'] = 'Assinar as notificações por email';
+$lang['Unsubscribe from notification by mail'] = 'Cancelar a assinatura das notificações por email';
+$lang['Parameter'] = 'Parâmetro';
+$lang['Continue processing treatment'] = 'Continuar processando tratamento';
+$lang['Complementary mail content'] = 'Conteúdo complementar da correspondência';
+$lang['Add detailed content'] = 'Adicionar conteúdo detalhado';
+$lang['Send mail as'] = 'Enviar email como';
+$lang['Send mail to users'] = 'Enviar email aos usuários';
+$lang['Send'] = 'Enviar';
+$lang['Options'] = 'Opções';
+$lang['Subscribed'] = 'Assinados';
+$lang['Subscribe'] = 'Assinar';
+$lang['Parameters'] = 'Parâmetros';
+$lang['Select recipients'] = 'Selecionar os destinatários';
+$lang['Subscribe/unsubscribe users'] = 'Assinar/Cancelar Assinatura de usuários';
+$lang['Unsubscribed'] = 'Assinatura Cancelada';
+$lang['%d parameter was updated.'] = '%d parâmetro foi atualizado.';
+$lang['%d parameters were updated.'] = '%d parâmetros foram atualizados.';
+$lang['%d user was not updated.'] = '%d usuário não foi atualizado.';
+$lang['%d users were not updated.'] = '%d usuários não foram atualizados.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Usuário %s [%s] foi removido da lista de assinantes.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Usuário %s [%s] foi adicionado na lista de assinantes.';
+$lang['%d user was updated.'] = '%d usuário foi atualizado.';
+$lang['%d users were updated.'] = '%d usuários foram atualizados.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Usuário %s [%s] não foi removido da lista de assinantes.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Usuário %s [%s] não foi adicionado na lista de assinantes.';
+$lang['User %s [%s] added.'] = 'Usuário %s [%s] adicionado.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Aviso: assinando ou cancelando a assinatura enviará correspondência aos usuários';
+$lang['Send mail on HTML format'] = 'Enviar a correspondência no formato HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Incluir a exibição do grupo das imagens recentes por datas';
+$lang['Available only with HTML format'] = 'Disponível apenas com o formato HTML';
+$lang['no write access'] = 'sem acesso de escrita';
+$lang['Permissions'] = 'Permissões';
+$lang['private'] = 'privado';
+$lang['public'] = 'público';
+$lang['Purge never used notification feeds'] = 'Limpar os feeds de notificação que nunca foram usados';
+$lang['Purge sessions'] = 'Limpar as sessões';
+$lang['randomly represented'] = 'radomicamente representado';
+$lang['registration date'] = 'dato de registro';
+$lang['clean'] = 'limpar';
+$lang['Create this site'] = 'Criar este site';
+$lang['test'] = 'testar';
+$lang['test this remote site'] = 'testar ste site remoto';
+$lang['remove tags'] = 'Remover tags';
+$lang['Repair and optimize database'] = 'Reparar e otimizar base de dados';
+$lang['selection'] = 'seleção';
+$lang['set to'] = 'iniciar';
+$lang['singly represented'] = 'unicamente representado';
+$lang['This site already exists'] = 'Este site já existe';
+$lang['created'] = 'criado';
+$lang['delete this site and all its attached elements'] = 'apagar este site e todos os itens associados a ele';
+$lang['deleted'] = 'apagado';
+$lang['an error happened'] = 'um erro aconteceu';
+$lang['Local'] = 'Local';
+$lang['Remote'] = 'Remoto';
+$lang['update the database from files'] = 'usar os arquivos para atualizar a base de dados';
+$lang['status'] = 'status';
+$lang['Directory'] = 'Diretório';
+$lang['sub-albums'] = 'sub-álbuns';
+$lang['Synchronize metadata'] = 'Sincronizar metadado';
+$lang['target'] = 'alvo';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Title'] = 'Título';
+$lang['Album list management'] = 'Gerenciamento de álbuns';
+$lang['Piwigo configuration'] = 'Configuração Piwigo';
+$lang['Edit album'] = 'Editar álbum';
+$lang['Group management'] = 'Gerenciamento de grupo';
+$lang['User list'] = 'Lista de usuários';
+$lang['Edit photo information'] = 'Modificar informações sobre uma imagem';
+$lang['Database synchronization with files'] = 'Sincronização da base de dados com os arquivos';
+$lang['all'] = 'tudo';
+$lang['height must be a number superior to'] = 'altura deve ser um número superior a';
+$lang['width must be a number superior to'] = 'largura deve ser um número superior a';
+$lang['for the file format'] = 'para o formato de arquivo';
+$lang['Photo unreachable or no support'] = 'Imagem não alcançável ou nenhum suporte';
+$lang['GD version'] = 'versão GD';
+$lang['General statistics'] = 'Estatísticas gerais';
+$lang['average time'] = 'tempo médio';
+$lang['number of miniaturized photos'] = 'número de imagens miniaturizadas';
+$lang['total time'] = 'tempo total';
+$lang['for this file format'] = 'para este formato de arquivo';
+$lang['unit mode'] = 'modo unitário';
+$lang['Unlocked'] = 'Destrancado (Unlocked)';
+$lang['unset'] = 'sem valor (não ajustado)';
+$lang['Update albums informations'] = 'Atualizar as informações dos álbuns';
+$lang['Update photos information'] = 'Atualizar as informações das fotos';
+$lang['Synchronize'] = 'Sincronizar';
+$lang['reduce to single existing albums'] = 'reduzir os álbuns existentes em apenas um';
+$lang['Choose an option'] = 'Escolher uma opção';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'exibir o máximo de informações (álbuns e fotos adicionados, álbuns e fotos apagados)';
+$lang['Error list'] = 'Lista de erros';
+$lang['Errors caption'] = 'Captura de erros';
+$lang['Detailed informations'] = 'Informações detalhadas';
+$lang['File/directory read error'] = 'Erro de leitura em arquivo/diretório';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'O arquivo ou diretório não pode ser acessado (ou ele não existe ou o acesso está negado)';
+$lang['albums deleted in the database'] = 'álbuns apagados da base de dados';
+$lang['photos deleted from the database'] = 'itens apagados da base de dados';
+$lang['photos candidates for metadata synchronization'] = 'imagens candidatas para a sincronização com o metadado';
+$lang['photos informations synchronized with files metadata'] = 'as informações dos itens foram sincronizados com o metadado dos arquivos';
+$lang['errors during synchronization'] = 'erros durante a sincronização';
+$lang['albums added in the database'] = 'álbuns adicionados à base de dados';
+$lang['photos added in the database'] = 'itens adicionados à base de dados';
+$lang['photos updated in the database'] = 'itens atualizados na base de dados';
+$lang['Search for new images in the directories'] = 'Pesquisar novas imagens nos diretórios';
+$lang['added'] = 'adicionado(a)';
+$lang['deleted'] = 'apagado(a)';
+$lang['Metadata synchronization results'] = 'Resultados da sincronização do metadado';
+$lang['only perform a simulation (no change in database will be made)'] = 'apenas executa uma simulação (não será feita alteração alguma na base de dados)';
+$lang['Simulation'] = 'Simulação';
+$lang['directories + files'] = 'diretórios + arquivos';
+$lang['only directories'] = 'apenas diretórios';
+$lang['synchronize files structure with database'] = 'sincronizar a estrutura dos arquivos com a base de dados';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizar o metadado dos arquivos com as informações dos itens da base de dados';
+$lang['even already synchronized photos'] = 'itens já sincronizados';
+$lang['Used metadata'] = 'Metadados usados';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'O nome dos diretórios e dos arquivos devem conter somente letras, números, "-", "_" ou "."';
+$lang['wrong filename'] = 'nome de arquivo errado';
+$lang['Upload'] = 'Enviar (Upload)';
+$lang['user "%s" added'] = 'adicionado usuário "%s" ';
+$lang['User status'] = 'Status de usuário';
+$lang['user_status_admin'] = 'Administrador';
+$lang['user_status_generic'] = 'Genérico';
+$lang['user_status_guest'] = 'Visitante';
+$lang['user_status_normal'] = 'Usuário';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Álbum virtual';
+$lang['Waiting'] = 'Aguardando';
+$lang['default'] = 'padrão';
+$lang['Toggle \'default group\' property'] = 'Ligar/Desligar \'gruppo padrão\' propriedade';
+$lang['Advanced features'] = 'Características principais';
+$lang['Overall'] = 'Completo(amente)';
+$lang['Year'] = 'Ano';
+$lang['Month'] = 'Mês';
+$lang['Day'] = 'Dia';
+$lang['Pages seen'] = 'Páginas vistas';
+$lang['Time'] = 'Tempo';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Item';
+$lang['Section'] = 'Seção';
+$lang['An information email was sent to group "%s"'] = 'Um email informativo foi foi enviado para o grupo "%s';
+$lang['Send an information email to group members'] = 'Enviar um email informativo aos membros do grupo';
+$lang['Group'] = 'Grupo';
+$lang['[%s] Visit album %s'] = '[%s] Venha visitar o álbum %s';
+$lang['Hello,'] = 'Olá,';
+$lang['See you soon.'] = 'Até breve.';
+$lang['Discover album:'] = 'Venha descobrir o álbum:';
+$lang['Mail content'] = 'conteúdo da correspondência';
+$lang['none'] = 'nenhum';
+$lang['high'] = 'alto';
+$lang['other'] = 'outro';
+$lang['Element type'] = 'Tipo de item';
+$lang['Image id'] = 'ID da imagem';
+$lang['Summary'] = 'Sumário';
+$lang['%d line filtered'] = '%d linha filtrada';
+$lang['%d lines filtered'] = '%d linhas filtradas';
+$lang['%d guest'] = '%d visitante';
+$lang['%d guests'] = '%d visitantes';
+$lang['Hour'] = 'Hora';
+$lang['guest'] = 'visitante';
+$lang['default values'] = 'valores padrão';
+$lang['Guest cannot be deleted'] = 'Visitante não pode ser apagado';
+$lang['Default user cannot be deleted'] = 'Usuário padrão não pode ser apagado';
+$lang['Purge history detail'] = 'Limpar o detalhe histórico';
+$lang['Purge history summary'] = 'Limpar o sumário do histórico';
+$lang['Check integrity'] = 'Checar integridade';
+$lang['Anomaly'] = 'Anomalia';
+$lang['Correction'] = 'Correção';
+$lang['Automatic correction'] = 'Correção automática';
+$lang['Impossible automatic correction'] = 'Impossível a correção automática';
+$lang['Correction applied with success'] = 'A correção foi aplicada com sucesso';
+$lang['Correction applied with error'] = 'A correção foi aplicada com erro';
+$lang['%d anomaly has been detected.'] = '%d anomalia foi detectada.';
+$lang['%d anomalies have been detected.'] = '%d anomalias foram detectadas.';
+$lang['%d anomaly has been corrected.'] = '%d anomalia foi corrigida.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalias foram corrigidas.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalia não foi corrigida.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalias não foram corrigidas.';
+$lang['Go to %s or %s for more informations'] = 'Vá ao %s ou %s para mais informações';
+$lang['the forum'] = 'forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'valor %s não está correto porque exif não é suportado';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s deve ser atualizado para falso no seu arquivo config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'O usuário "visitante" principal não existe';
+$lang['Main "guest" user status is incorrect'] = 'O status de usuário do "visitante" principal está incorreto';
+$lang['Default user does not exist'] = 'usuário padrão (default) não existe';
+$lang['Main "webmaster" user does not exist'] = 'O usuário principal "webmaster" não existe';
+$lang['Main "webmaster" user status is incorrect'] = 'O status do usuário principal "webmaster" está incorreto';
+$lang['User "%s" created with "%s" like password'] = 'O usuário "%s" foi criado com "%s" como senha';
+$lang['Status of user "%s" updated'] = 'Status do usuário "%s" foi atualizado';
+$lang['add new photos to caddie'] = 'adicionar novos itens à cesta';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = 'Nenhuma exibição';
+$lang['Classic display'] = 'Exibição clássica';
+$lang['Hoverbox display'] = 'Exibição hoverbox';
+$lang['Mail address is obligatory for all users'] = 'Endereço de email é obrigatório para todos os usuários';
+$lang['Minimum privacy level'] = 'Nível de privacidade mínima';
+$lang['Privacy level'] = 'Nível de privacidade';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contatos';
+$lang['Level 2'] = 'Amigos';
+$lang['Level 4'] = 'Família';
+$lang['Level 8'] = 'Administradores';
+$lang['Reinitialize check integrity'] = 'Reiniciar checar integridade';
+$lang['Check all'] = 'marcar tudo';
+$lang['Uncheck all'] = 'desmarcar tudo';
+$lang['Check automatic corrections'] = 'Checar correções automáticas';
+$lang['Apply selected corrections'] = 'Aplicar as correções selecionadas';
+$lang['Ignore selected anomalies'] = 'Ignorar as anomalias selecionadas';
+$lang['Refresh'] = 'Substituir';
+$lang['The anomaly will be ignored until next application version'] = 'A anomalia será ignorada até a próxima versão da aplicação';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'A correção da anomalia irá cancelar o fato de que está ignorada';
+$lang['%d anomaly has been ignored.'] = '%d anomalia foi ignorada.';
+$lang['%d anomalies have been ignored.'] = '%d anomalias foram ignoradas.';
+$lang['Plugins which need upgrade'] = 'Plugins que necessitam atualização (upgrade)';
+$lang['Plugin list'] = 'Lista de plugins';
+$lang['Check for updates'] = 'Checar por atualizações';
+$lang['Other plugins'] = 'Outros plugins';
+$lang['Last revisions'] = 'Últimas revisões';
+$lang['Are you sure you want to delete this plugin?'] = 'Você tem certeza de que você quer apagar este plugin?';
+$lang['Are you sure you want to install this plugin?'] = 'Você tem certeza de que você quer instalar este plugin?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Você tem certeza de que você quer instalar esta atualização? Você deve verificar se esta versão não necessita de uma desinstalação.';
+$lang['Plugin has been successfully copied'] = 'Plugin foi copiado com sucesso';
+$lang['You might go to plugin list to install and activate it.'] = 'Você deve ir à lista de plugins para instalar e ativá-lo.';
+$lang['Can\'t create temporary file.'] = 'Não é possível criar arquivo temporário.';
+$lang['Can\'t download archive.'] = 'Não é possível baixar arquivo.';
+$lang['Can\'t read or extract archive.'] = 'Não é possível ler ou extrair arquivo.';
+$lang['An error occured during extraction (%s).'] = 'Houve um erro durante a extração (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Por favor, checar as permissões das pastas e subpastas de plugins (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Não foi possível a conexão com o servidor.';
+$lang['Purge compiled templates'] = 'Limpar os modelos compilados';
+$lang['ACCESS_0'] = 'Acesso livre';
+$lang['ACCESS_1'] = 'Acesso a todos';
+$lang['ACCESS_2'] = 'Acesso a assinantes';
+$lang['ACCESS_3'] = 'Acesso a administradores';
+$lang['ACCESS_4'] = 'Acesso a webmasters';
+$lang['ACCESS_5'] = 'Nenhum acesso';
+$lang['Support'] = 'Suporte';
+$lang['Documentation'] = 'Documentação';
+$lang['A new version of Piwigo is available.'] = 'Uma nova versão de Piwigo está disponível.';
+$lang['Piwigo Administration'] = 'Administração Piwigo';
+$lang['Piwigo version'] = 'Versão Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Você está usando a última versão de Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'A versão instalada de %s [%s] não é compatível com a versão requerida [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Você precisa atualizar seu sistema para aproveitar ao máximo esta aplicação, caso contrário, a aplicação pode não funcionar completa ou corretamente.';
+$lang['Deleted on'] = 'Apagada em';
+$lang['Last hit'] = 'Último acesso (Last hit)';
+$lang['GD library is missing'] = 'está faltanto a GD library';
+$lang['Templates'] = 'Modelos (Templates)';
+$lang['Extend for templates'] = 'Extensões para modelos (templates)';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+'Substituição dos modelos originais pelos modelos customizados do subdiretório template-extension';
+$lang['Replacers (customized templates)'] = 'Substitutos (modelos customizados)';
+$lang['Original templates'] = 'Modelos(templates) originais';
+$lang['Optional URL keyword'] = 'palavra chave URL opcional';
+$lang['Templates configuration has been recorded.'] = 'A configuração dos modelos (templates) foram gravadas.';
+$lang['All optimizations have been successfully completed.'] = 'Todas as otimizações foram finalizadas com sucesso.';
+$lang['Optimizations have been completed with some errors.'] = 'As otimizações foram finalizadas com alguns erros.';
+$lang['Modify information'] = 'Modificar informação';
+$lang['nothing'] = 'nada';
+$lang['overrides existing values with empty ones'] = 'sobrepor os valores existentes com valores vazios';
+$lang['Manage photo ranks'] = 'Ordenação das fotos';
+$lang['Edit ranks'] = 'Editar posições (ranks)';
+$lang['No photo in this album'] = 'Nenhum item nesse álbum';
+$lang['Images manual order was saved'] = 'A ordem manual das imagens foi salva';
+$lang['ranks'] = 'posições (ranks)';
+$lang['Drag to re-order'] = 'Arraste para reordenar';
+$lang['Quick Local Synchronization'] = 'Sincronização Local Rápida';
+$lang['No photo can be deleted'] = 'Nenhuma foto pode ser apagada';
+$lang['Delete selected photos'] = 'Apagar as fotos selecionadas';
+$lang['%d photo was deleted'] = '%d foto foi apagada';
+$lang['%d photos were deleted'] = '%d fotos foram apagadas';
+$lang['Downloads'] = 'Downloads';
+$lang['Released on'] = 'Lançado em';
+$lang['Number of downloads'] = 'Número de downloads';
+$lang['Piwigo Announcements Newsletter'] = 'Boletim (newsletter) sobre anúncios do Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fique atualizado com o projeto Piwigo, assine o boletim (newsletter) dos anúncios do Piwigo. Você receberá emails quando uma nova versão for disponibilizada (às vezes incluindo a correção de um bug, é importante estar por dentro para atualizar) e quando eventos importantes acontecerem no projeto. Apenas uns poucos emails ao longo do ano.';
+$lang['Subscribe %s'] = 'Assinar %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Fazer %s assinar o boletim (newsletter) sobre anúncios do Piwigo';
+$lang['Purge search history'] = 'Limpar o histórico da pesquisa';
+$lang['Hide'] = 'Esconder';
+$lang['Miscellaneous'] = 'Outras informações';
+$lang['Virtual Links'] = 'Links virtuais';
+$lang['Menu Management'] = 'Menu';
+$lang['Rate'] = 'Nota';
+$lang['Average rate'] = 'Nota média';
+$lang['Add to caddie'] = 'Acrescentar à cesta';
+$lang['%d of %d photos selected'] = '%d de %d fotos selecionadas';
+$lang['%d photos uploaded'] = '%d fotos enviadas';
+$lang['%s has been successfully updated.'] = '%s foi atualizado com sucesso.';
+$lang['%s photos can not be regenerated'] = '%s fotos não puderam ser recriadas';
+$lang['%s photos have been regenerated'] = '%s fotos foram ser recriadas';
+$lang['(this tag will be deleted)'] = '(esta tag será excluída)';
+$lang['+ Add an upload box'] = '+ Inserir uma caixa de envio';
+$lang['... or '] = '... ou ';
+$lang['Action'] = 'Ação';
+$lang['Activate icon "%s"'] = 'Ativar ícone "%s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'Ativar ícone "novo" próximo a àlbuns e imagens';
+$lang['Activate Navigation Bar'] = 'Ativar barra de navegação';
+$lang['Activate Navigation Thumbnails'] = 'Ativar miniaturas de navegação';
+$lang['Activate comments'] = 'Ativar comentários';
+$lang['Active Languages'] = 'Ativar idiomas';
+$lang['Active Plugins'] = 'Ativar Plugins';
+$lang['Active Themes'] = 'Ativar Temas';
+$lang['Add a criteria'] = 'Adicionar um critério';
+$lang['Add a filter'] = 'Adicionar um filtro';
+$lang['Add another set of photos'] = 'Inserir outro conjunto de fotos';
+$lang['Add New Language'] = 'Inserir novo idioma';
+$lang['Add New Theme'] = 'Inserir um novo tema';
+$lang['Add Photos'] = 'Inserir fotos';
+$lang['Add tags'] = 'Inserir tags';
+$lang['Add write access to the "%s" directory'] = 'Adicionar acesso de gravação ao diretório "%s"';
+$lang['Administration Home'] = 'Administração';
+$lang['Album "%s" has been added'] = 'Álbum "%s" foi inserido';
+$lang['Album "%s" now contains %d photos'] = 'Álbum "%s" contém agora %d fotos';
+$lang['Album name'] = 'Nome do álbum';
+$lang['Album photos associated to the following albums: %s'] = 'Álbum associado aos seguintes álbuns: %s';
+$lang['Albums automatically sorted'] = 'Albuns classificados automaticamente';
+$lang['All %d photos are selected'] = 'Todas as %d fotos foram selecionadas';
+$lang['All extensions are up to date.'] = 'Todas as extensões estão atualizadas.';
+$lang['All languages are up to date.'] = 'Todos os idiomas estão atualizados.';
+$lang['All plugins are up to date.'] = 'Todos os plugins estão atualizados.';
+$lang['All themes are up to date.'] = 'Todos os temas estão atualizados.';
+$lang['Allow rating'] = 'Permitir avaliação';
+$lang['Allow user customization'] = 'Permitir personalização de usuário';
+$lang['Allow users to delete their own comments'] = 'Permitir aos usuários excluir seus próprios comentários';
+$lang['Allow users to edit their own comments'] = 'Permitir aos usuários editar seus próprios comentários';
+$lang['Allowed file types: %s.'] = 'Tipos de arquivos permitidos: %s.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Um erro ocorreu durante a extração. Por favor, verifique as permissões de arquivo da sua instalação do Piwigo.<br><a href="%s">Clique aqui para mostrar o registro de erros</a>.';
+$lang['An error has occured during upgrade.'] = 'Um erro ocorreu durante a atualização.';
+$lang['Apply action'] = 'Aplicar ação';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolução máxima aproximada: %dM pixels (que é %dx%d pixels).';
+$lang['automatic order'] = 'Ordem automática';
+$lang['Batch Manager'] = 'Gerenciador de lotes';
+$lang['Bound Theme'] = 'Tema vinculado';
+$lang['By %s'] = 'Por %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por padrão, Piwigo criará um novo tamanho web a partir da versão HD (alta definição) da sua foto.';
+$lang['By rank'] = 'Por classificação';
+$lang['Cannot delete the old permalink !'] = 'O antigo link permanente não pode ser deletado!';
+$lang['Change Admin Colors'] = 'Trocar cores da administração';
+$lang['Choose an action'] = 'Escolha uma ação';
+$lang['Confirm merge'] = 'Confirme a fusão';
+$lang['create a new album'] = 'criar um novo álbum';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Criar o diretório "%s" no diretório raiz de instalação do seu Piwigo';
+$lang['Create'] = 'Criar';
+$lang['Crop'] = 'Cortar';
+$lang['Deactivate all'] = 'Desativar todos';
+$lang['Default comments order'] = 'Ordem de comentários padrão';
+$lang['Default photos order'] = 'Ordem de fotos padrão';
+$lang['Delete orphan tags'] = 'Excluir tags orfãos';
+$lang['Delete this language'] = 'Excluir essa linguagem.';
+$lang['Delete this theme'] = 'Excluir esse tema.';
+$lang['Directory does not exist'] = 'Essa pasta não existe.';
+$lang['Do you want to activate anyway?'] = 'Você deseja mesmo ativar?';
+$lang['Download,'] = 'Baixar,';
+$lang['Drop into album'] = 'Selecione um álbum';
+$lang['Dump Database'] = 'Limpar Banco de Dados';
+$lang['Duplicates'] = 'Duplicados';
+$lang['ERROR'] = 'ERRO';
+$lang['Error on file "%s" : %s'] = 'Erro no arquivo "%s" : %s';
+$lang['Everybody'] = 'Todos';
+$lang['Exif extension not available, admin should disable exif use'] = 'A extensão Exif não está disponível, o administrador deve desabilitar o uso do Exif';
+$lang['Extensions Update'] = 'Atualizar Extensões';
+$lang['FTP + Synchronization'] = 'FTP + Sincronização';
+$lang['Failed to write file to disk'] = 'Falha ao gravar arquivo no disco';
+$lang['Follow Orientation'] = 'Siga a orientação';
+$lang['Forbid this language to users'] = 'Proibir essa linguagem para usuários';
+$lang['Forbid this theme to users'] = 'Proibir esse tema para usuários';
+$lang['Get Support on Piwigo Forum'] = 'Obter suporte no Piwigo Fórum ';
+$lang['Guest Settings'] = 'Configuração de Convidados';
+$lang['Height'] = 'Altura';
+$lang['Help Me'] = 'Ajuda';
+$lang['I decide to update anyway'] = 'Eu decido atualizar';
+$lang['Ignore All'] = 'Ignorar tudo';
+$lang['Ignore this update'] = 'Ignorar essa atualização';
+$lang['Image Quality'] = 'Qualidade da imagem';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Este tema não pode ser ativado, está faltando o tema principal: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossível desativar essa linguagem, primeiro defina outra linguagem como padrão.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossível desativar essa linguagem, você precisa de pelo menos uma linguagem.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossível desativar esse tema, você precida de pelo menos um tema.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema não pode ser excluido, porque outros temas dependem dele: %s';
+$lang['Inactive Languages'] = 'Linguagens inativas';
+$lang['Inactive Plugins'] = 'Pluguins inativos';
+$lang['Inactive Themes'] = 'Temas inativos';
+$lang['Install on your computer,'] = 'Instalar em seu computador, ';
+$lang['Installed Languages'] = 'Idiomas instalados';
+$lang['Installed Themes'] = 'Temas Instalados';
+$lang['Instructions to use Piwigo'] = 'Introdução para usar o Piwigo';
+$lang['Invert'] = 'Inverter';
+$lang['Language has been successfully installed'] = 'Idioma instalado com sucesso';
+$lang['Languages which need upgrade'] = 'Línguas que precisam atualizar';
+$lang['Languages'] = 'Idiomas';
+$lang['Last import'] = 'Última importação';
+$lang['Learn more'] = 'Saiba mais';
+$lang['Main Page'] = 'Página Principal';
+$lang['delete photo'] = 'Excluir foto';
+$lang['delete'] = 'Excluir.';
+$lang['display'] = 'Exibir';
+$lang['existing album'] = 'Cagtegoria já existe';
+$lang['hide details'] = 'Esconder detalhes';
+$lang['include child albums'] = 'Incluir álbuns infantis';
+$lang[' and %d virtuals'] = 'e %d virtual';
+$lang['%d day'] = '%d dia';
+$lang['%d days'] = '%d dias';
+$lang['%d hour'] = '%d hora';
+$lang['%d hours'] = '%d horas';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minutos';
+$lang['%d month'] = '%d mês';
+$lang['%d months'] = '%d meses';
+$lang['%d physicals'] = '%d físico';
+$lang['%d second'] = '%d segundo';
+$lang['%d seconds'] = '%d segundos';
+$lang['%d week'] = '%d semana';
+$lang['%d weeks'] = '%d semanas';
+$lang['%d year'] = '%d ano';
+$lang['%d years'] = '%d anos';
+$lang['%s ago'] = '%s atrás';
+$lang['%s in the future'] = '%s no futuro';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'usuários %u tem permissão automática porque pertencem a um grupo que possui essa permissão';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'O aplicativo <em>Piwigo para Android</em> capacita você a conectar o seu celular ou tablet Android à sua galeria Piwigo, criando álbuns e colocando várias fotos ao mesmo tempo.';
+$lang['A locked gallery is only visible to administrators'] = 'Uma galeria trancada é somente visível pelos administradores';
+$lang['Added by %s'] = 'Adicionado por %s';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'O Adobe Photoshop Lightroom é um software de fotografia feito para gerenciar grandes quantidades de imagens digitais e fazer o trabalho de pós-produção';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture é uma poderosa ferramenta para refinar imagens e gerenciar grandes bibliotecas no Mac.';
+$lang['Applications'] = 'Aplicações';
+$lang['Apply watermark if height is bigger than'] = 'Aplica marca d\'água se a altura é maior do que';
+$lang['Apply watermark if width is bigger than'] = 'Aplica marca d\'água se a largura é maior do que';
+$lang['Automatic sort order'] = 'Ordena automaticamente';
+$lang['Available on'] = 'Disponível em';
+$lang['Available versions for'] = 'Versões disponíveis para';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por padrão, o centro de interesse é colocado no meio da foto.';
+$lang['Cancel'] = 'Cancelar';
+$lang['Center of interest'] = 'Centro de interesse';
+$lang['Delete multiple size images'] = 'Apagar múltiplos tamanhos de imagens';
+$lang['Duplicate selected tags'] = 'Duplicar as tags selecionadas';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTE PLUGIN ESTÁ FALTANDO, MAS O MESMO ESTÁ INSTALADO! DESINSTALE O MESMO AGORA.';
+$lang['Edit photo'] = 'Editar Foto';
+$lang['Email administrators when a comment is deleted'] = 'Envia um e-mail aos administradores quando um comentário é deletado';
+$lang['Email administrators when a comment is modified'] = 'Envia um e-mail aos administradores quando um comentário é modificado';
+$lang['File upload stopped by extension'] = 'A transferência de arquivos foi interrompida por uma extensão';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Os seguintes plugins podem não ser compatíveis com a nova versão do Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Os seguintes temas podem não ser compatíveis com a nova versão do Piwigo:';
+$lang['Gallery unlocked'] = 'Galeria destravada';
+$lang['Generate multiple size images'] = 'Gerar múltiplos tamanhos de imagem';
+$lang['Graphics Library'] = 'Biblioteca gráfica';
+$lang['Groups and users'] = 'Grupos e usuários';
+$lang['List'] = 'Lista';
+$lang['Make this language available to users'] = 'Faz essa linguagem disponível aos usuários';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A aplicação <em>Piwigo para iOS</em>  permite conectar a sua galeria Piwigo direto do seu iPhone, iPad ou iPod Touch para criar álbuns e enviar fotos imediatamente.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture foi desenvolvido para fotógrafos profissionais com a simplicidade do iPhoto.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'As características incluem navegação em galerias, criação de álbuns e envio de fotos.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para fotos recortadas no formato "quadrado", Piwigo fará o melhor para incluir o centro de interesse.';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dê permissão de escrita (chmod 777) para o diretório "%s" na raiz da usa instalação Piwigo';
+$lang['Hit'] = 'Acesso';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se nenhuma foto de Alta Definição estiver disponível e se o tamanho atual for maior do que as dimensões de redimensionamento, Piwigo moverá a foto como Alta Definição e criará uma foto de menor resolução para ser baixada.';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'No seu arquivo php.ini, o upload_max_filesize (%sB) é maior do que post_max_size (%sB), você deve mudar essa configuração.';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclua dados do histórico (Cuidado: limite de memória do servidor poderá ser ultrapassado).';
+$lang['Make this theme available to users'] = 'Faça esse tema disponível para os usuários';
+$lang['Manage Permissions'] = 'Gerencie Permissões';
+$lang['Manage this set of %d photos'] = 'Gerencie esse conjunto de %d fotos';
+$lang['Manual order'] = 'Ordem Manual';
+$lang['Maximum height'] = 'Comprimento Máximo';
+$lang['Maximum width'] = 'Largura Máxima';
+$lang['Maximum file size: %sB.'] = 'Tamanho máximo do arquivo %sB.';
+$lang['Merge selected tags'] = 'Juntar as tags selecionadas';
+$lang['Merge tags'] = 'Juntar tags';
+$lang['Missing Plugins'] = 'Plugins perdidos';
+$lang['Missing a temporary folder'] = 'Pasta temporária perdida';
+$lang['Move to album'] = 'Mover para o álbum';
+$lang['Multiple Size'] = 'Múltiplos tamanhos';
+$lang['Name of the duplicate'] = 'Nome do duplicado';
+$lang['New Version'] = 'Nova Versão';
+$lang['No destination tag selected'] = 'Nenhuma tag de destino selecionada';
+$lang['No file was uploaded'] = 'Nenhum arquivo foi enviado';
+$lang['No group is permitted to see this private album'] = 'Nenhum grupo tem permissão para ver esse álbum';
+$lang['No order field selected'] = 'Nenhum campo de ordenação selecionado';
+$lang['No photo in the current set.'] = 'Nenhuma foto no set atual';
+$lang['No photo selected, %d photos in current set'] = 'Nenhuma foto selecionada, %d fotos no set atual';
+$lang['No photo selected, no action possible.'] = 'Nenhuma fotos selecionada, nenhuma ação possível.';
+$lang['No results'] = 'Sem Resultados';
+$lang['None'] = 'Nenhum';
+$lang['Not cropped correctly?'] = 'Não recortado corretamente?';
+$lang['Notify administrators when a comment is'] = 'Notifique os administradores quando comentado';
+$lang['Numeric identifier : %d'] = 'Identificador numérico: %d';
+$lang['Obsolete Plugins'] = 'Plugins Obsoletos';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'No seu Linux,simplesmente instale Shotwell com seu gerenciador de pacotes e ative a opção de publicação Piwigo.';
+$lang['Opacity'] = 'Opacidade';
+$lang['Operation in progress'] = 'Tratamento em progresso';
+$lang['Order of menubar items has been updated successfully.'] = 'Ordenamento do menu foi atualizado com sucesso.';
+$lang['Original Size'] = 'Tamanho Original';
+$lang['Original file : %s'] = 'Arquivo original: %s';
+$lang['Orphan tags deleted'] = 'Tags órfãs excluídas';
+$lang['Page end'] = 'Página final';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Confirmação de senhas perdida. Por favor confirme a senha escolhida.';
+$lang['Password is missing. Please enter the password.'] = 'Senha perdida. Por favor entre com a senha.';
+$lang['Pending Comments'] = 'Comentários pendentes';
+$lang['Permission granted for groups'] = 'Permissão garantida para grupos';
+$lang['Permission granted for users'] = 'Permissão garantida para usuários';
+$lang['Permission management'] = 'Gerenciamento de permissões';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['Photo Page'] = 'Página da Foto';
+$lang['Photo Properties'] = 'Propriedade da Foto';
+$lang['Photo name'] = 'Nome da Foto';
+$lang['Photo sizes with crop'] = 'Tamanho da foto recortada';
+$lang['Photos generation in progress...'] = 'Geração de Fotos em progresso...';
+$lang['Photos'] = 'Fotos';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de Publicação Piwigo para Lightroom';
+$lang['Piwigo Update'] = 'Atualização Piwigo';
+$lang['Piwigo Uploader'] = 'Envio de Fotos do Piwigo';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo não pode receber arquivos de atualização do servidor';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin de Exportação do Piwigo para Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin de Exportação do Piwigo para iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo para Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de publicação do Piwigo para Shortwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin de publicação do Piwigo para digiKam';
+$lang['Please wait...'] = 'Por favor espere...';
+$lang['Posted %s on %s'] = 'Publicado %s em %s';
+$lang['Predefined filter'] = 'Filtro pré-definido';
+$lang['Privacy level set to "%s"'] = 'Nível de privacidade definido para "%s"';
+$lang['Rated %d times, score : %.2f'] = 'Avaliado %d vezes, Nota: %2f';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Galeria Remota cliente para Android) é um cliente Piwigo de código aberto (GPL v3) para a plataforma Android.';
+$lang['Read Piwigo Documentation'] = 'Leia da Documentação do Piwigo';
+$lang['Refresh photo set'] = 'Recarregue as fotos';
+$lang['Remove all filters'] = 'Remova todos os filtros';
+$lang['Remove from caddie'] = 'Remova da cesta';
+$lang['Reset ignored updates'] = 'Reset atualizações ignoradas';
+$lang['Resize after upload'] = 'Redimensione depois de enviar';
+$lang['Resize'] = 'Redimensione';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaure a configuração padrão. Você perderá suas configurações de plugins!';
+$lang['Restore'] = 'Restaure';
+$lang['Save Settings'] = 'Salve as configurações';
+$lang['Save Template Directory'] = 'Salve o diretório de templates';
+$lang['Save manual order'] = 'Salve a ordem manual';
+$lang['Save visits in history for'] = 'Salve o histórico de visitantes';
+$lang['Searching...'] = 'Pesquisando...';
+$lang['Select a file'] = 'Selecione um arquivo';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecione uma região com o mouse para definir um novo centro de interesse.';
+$lang['Select an album'] = 'Selecione um álbum';
+$lang['Select at least one comment'] = 'Selecione ao menos um comentário';
+$lang['Select at least two tags for merging'] = 'Selecione ao menos duas tags para juntar';
+$lang['Select files'] = 'Selecione arquivos';
+$lang['Select groups...'] = 'Selecione grupos...';
+$lang['Select the destination tag'] = 'Selecione a tag de destino';
+$lang['Select users...'] = 'Selecione usuários...';
+$lang['Select:'] = 'Selecione:';
+$lang['Selection'] = 'Seleção';
+$lang['Send connection settings by email'] = 'Envie configuração de conexão por e-mail';
+$lang['Set as default language for unregistered and new users'] = 'Escolha o idioma padrão para os novos usuários e usuários não registrados.';
+$lang['Set as default theme for unregistered and new users'] = 'Escolha o tema padrão para os novos usuários e usuários não registrados.';
+$lang['Set author'] = 'Escolha o autor';
+$lang['Set creation date'] = 'Escolha a data de criação';
+$lang['Set title'] = 'Escolha o título';
+$lang['Settings'] = 'Configurações';
+$lang['Sharpen'] = 'Destacar';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é um organizador de fotos de código aberto que roda em Linux e é o gerenciador padrão de fotos no Ubuntu e Fedora.';
+$lang['Show menubar'] = 'Mostre menu';
+$lang['Some themes and plugins may be not available yet.'] = 'Álguns temas e plugins podem não estar disponíveis ainda.';
+$lang['Some upgrades are available for extensions.'] = 'Algumas atualizações estão disponíveis para as extensões.';
+$lang['Source tag'] = 'Tag fonte';
+$lang['Start Upload'] = 'Inicia o envio';
+$lang['Start pLoader and add your photos.'] = 'Inicie o pLoader e adicione suas fotos.';
+$lang['Switch to clear or dark colors for administration'] = 'Troque para cores claras ou escuras na Adminstração.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESSE PLUGIN AGORA FAZ PARTE DO NÙCLEO DO PIWIGO! DESINSTALE-O AGORA!';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'A tag "%s" agora está duplicada de "%s"';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Tag <em>%s</em> juntada na tag<em>%s</em>';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'O plugin de exportação do Piwigo permite que você crie álbuns e exporte fotos.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'O plugin de publicação Piwigo permite que você exporte e sincronize fotos diretamente do Lightroom para sua galeria Piwigo.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interesse é a área mais significativa da foto.';
+$lang['The following tag was deleted'] = 'A tag seguinte foi apagada';
+$lang['The original image quality must be a number between %d and %d'] = 'A qualidade de imagem original deve ser um número entre %d e %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'A altura máxima original deve ser um número entre %d e %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'A largura máxima original deve ser um número entre %d e %d';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Os arquivos enviados excederam a diretiva MAX_FILE_SIZE especificada no formulário HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Os arquivos enviados excederam a diretiva upload_max_filesize no php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'O arquivo enviado foi somente parcialmente enviado';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os arquivos enviados excederam a diretiva post_max_size no php.ini: %sB';
+$lang['The whole page'] = 'Toda a página';
+$lang['The whole set'] = 'Todo o set';
+$lang['Theme has been successfully installed'] = 'Temas forma instalados com sucesso.';
+$lang['Themes which need upgrade'] = 'Temas que necessitam ser atualizados.';
+$lang['Themes'] = 'Temas';
+$lang['There is no group in this gallery.'] = 'Não existe nenhum grupo nessa galeria.';
+$lang['There is no other language available.'] = 'Nâo existe nenhum outro idioma disponível.';
+$lang['There is no other plugin available.'] = 'Não existe nenhum outro plugin disponível.';
+$lang['There is no other theme available.'] = 'Não existe nenhum outro tema disponível.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Esse álbum contém %d fotos, adicionadas entre %s e %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Esse álbum contém %d fotos, adicionadas em %s';
+$lang['This album contains no photo.'] = 'Esse álbum não contém foto.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Essa é uma grande atualização, com <a href="%s">novas características excitantes</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Essa é uma pequena atualização, somente com correção de bugs.';
+$lang['This theme was not designed to be directly activated'] = 'Esse tema não foi desenvolvido para ser ativado diretamente.';
+$lang['Thumbnails generation in progress...'] = 'Geração de Thumbnails em progresso...';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar suas fotos do digiKam para Piwigo, simplesmente instale os plugins digiKam e Kipi.';
+$lang['Tools'] = 'Ferramentas';
+$lang['Two updates are available'] = 'Duas atualizações estão disponíveis';
+$lang['Type here the author name'] = 'Digite aqui o nome do autor';
+$lang['Type here the title'] = 'Digite aqui o título';
+$lang['Type in a search term'] = 'Digite um termo para pesquisar';
+$lang['Unable to dump database.'] = 'Não foi possível esvaziar o banco de dados';
+$lang['Uninstalled Plugins'] = 'Plugins desinstalados';
+$lang['Unknown upload error'] = 'Erro de envio desconhecido';
+$lang['Unlock gallery'] = 'Galeria destrancada';
+$lang['Update All'] = 'Atualize tudo';
+$lang['Update Complete'] = 'Atualização Completa';
+$lang['Update in progress... Please wait.'] = 'Atualização em progresso... por favor espere.';
+$lang['Update to Piwigo %s'] = 'Atualize para Piwigo %s';
+$lang['Updates'] = 'Atualizações';
+$lang['Upload Photos'] = 'Envio de fotos';
+$lang['Uploaded Photos'] = 'Fotos Enviadas';
+$lang['Visit Gallery'] = 'Visite a Galeria';
+$lang['Visit Piwigo project website'] = 'Visite o site do Projeto Piwigo';
+$lang['Visit language site'] = 'Visite o site de Idiomas';
+$lang['Visit plugin site'] = 'Visite o site de Plugins';
+$lang['Visit theme site'] = 'Visite o site de temas';
+$lang['Visited %d times'] = 'Visitado %d vezes';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Cuidado: Esse plugin parece não ser compatível com essa versão do Piwigo.';
+$lang['Watermark'] = 'Marca Dágua';
+$lang['Web Form'] = 'Formulário Web';
+$lang['Webmaster status is required.'] = 'status de webmaster é necessário';
+$lang['Week starts on'] = 'Semana inicia em';
+$lang['Who can see these photos?'] = 'Quem pode ver essas fotos?';
+$lang['Who can see this photo?'] = 'Quem pode ver essa foto?';
+$lang['Width'] = 'Largura';
+$lang['With no album'] = 'Com nenhum álbum';
+$lang['With no tag'] = 'Com nenhuma tag';
+$lang['With no virtual album'] = 'Com nenhum álbum virtual';
+$lang['X Position'] = 'Posição X';
+$lang['X Repeat'] = 'Repita X';
+$lang['Y Position'] = 'Posição Y';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Você está usando o envio de fotos do navegador. Tente em vez disso o <a href="%s">envio de fotos em Flash</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Você está usando o envio de fotos em Flash. Problemas? Tente em vez disso o <a href="%s">envio de fotos do navegador</a>.';
+$lang['You can activate only one mobile theme.'] = 'Você pode ativar somente um tema móbile.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Você pode atualizar para o Piwigo %s diretamente, sem atualizar para o Piwigo %s (recomendado).';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Você não pode definir uma ordenação padrão das fotos porque você tem uma configuração personalizada na sua configuração local.';
+$lang['You have %d orphan tags: %s.'] = 'Você tem %d tags órfãs: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Você especificou <i>$conf[\'order_by\']</i> no seu arquivo de configuração local, esse parâmetro está em desuso, por favor remova-o ou renomei-o dentro <i>$conf[\'order_by_custom\']</i>!';
+$lang['Your configuration settings are saved'] = 'Sua configuração foi salva';
+$lang['Zoom'] = 'Zoom';
+$lang['add a new watermark'] = 'adicione uma nova marca dágua';
+$lang['administrators'] = 'administradores';
+$lang['any visitor can see this album'] = 'qualquer visitante pode ver esse álbum';
+$lang['apply automatic sort order'] = 'aplique ordenamento automático';
+$lang['bottom left corner'] = 'botão canto esquerdo';
+$lang['bottom right corner'] = 'botão canto direito';
+$lang['cancel manual order'] = 'Cancela ordenamento manual';
+$lang['create a new site'] = 'Cria novo site';
+$lang['custom'] = 'Personalize';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam é um software livre gerenciador avançado de fotos digitais para Linux, Windows e MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam é desenvolvido para fotógrafos que querem ver, gerenciar, editar, melhorar, organizar, colocar tags e compartilhar fotografias.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto é o gerenciador padrão no MacOSX. O Plugin de exportação do Piwigo deixa você criar novos álbuns e exportar fotos diretamente do iPhoto para sua galeria de fotos Piwigo.';
+$lang['include photos with lower privacy level'] = 'inclua fotos com menor nível de privacidade';
+$lang['manual order'] = 'Ordem Manual';
+$lang['middle'] = 'médio';
+$lang['modified'] = 'modificadon';
+$lang['new'] = 'novo';
+$lang['on the %d selected photos'] = 'nas %d fotos selecionadas';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader plataforma para <em>Envio de fotos do Piwigo</em>. Do seu computador, pLoader prepara suas fotos e as transfere para sua Galeria Piwigo.';
+$lang['pending validation'] = 'Validação pendente';
+$lang['pixels'] = 'pixels';
+$lang['registered users'] = 'Usuários Registrados';
+$lang['remove author'] = 'remove autor';
+$lang['remove creation date'] = 'remove data de criação';
+$lang['remove this filter'] = 'remove esse filtro';
+$lang['remove title'] = 'remove título';
+$lang['show details'] = 'mostra detalhes';
+$lang['simple visitors'] = 'visitante simples';
+$lang['top left corner'] = 'canto superior esquerdo';
+$lang['top right corner'] = 'Canto superior direito';
+$lang['unknown'] = 'desconhecido';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'os visitantes precisam autenticar e ter as permissões apropriadas para ver esse álbum';
+$lang['Landscape'] = 'Landscape';
+$lang['Manage photos'] = 'Gerencie Fotos';
+$lang['Minimum height'] = 'Altura Mínima';
+$lang['Minimum width'] = 'Largura Mínima';
+$lang['Number of albums per page'] = 'Número de álbuns por página';
+$lang['Panorama'] = 'Paisagem';
+$lang['Portrait'] = 'Retrato';
+$lang['View in gallery'] = 'Ver na Galeria';
+$lang['Ratio'] = 'Relação';
+$lang['between %.2f and %.2f'] = 'Entre %.2f e %.2f';
+$lang['between %d and %d pixels'] = 'Entre %d e %d pixels';
+$lang['Duplicate'] = 'Duplicado';
+$lang['Manage the members'] = 'Gerencie os membros';
+$lang['Merge selected groups'] = 'Junte os grupos selecionados';
+$lang['No group selected, no action possible.'] = 'Nenhum grupo selecionado. Nenhuma açao é possível.';
+$lang['No members to manage'] = 'Sem membros para gerenciar';
+$lang['Please select at least two groups'] = 'Por favor, selecione ao menos dois grupos';
+$lang['Rename'] = 'Renomear';
+$lang['This group will be set to default'] = 'Esse grupo será usado por padrão';
+$lang['This group will be unset to default'] = 'Esse grupo nao será mais usado por padrao';
+$lang['Type here the name of the new group'] = 'Digite aqui o nome do novo grupo';
+$lang['Purge user cache'] = 'limpa o cache do usuário';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensões da imagem serão reduzida para %dx%d pixels.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionamento após envio foi desativado devido ao uso de GD como biblioteca gráfica';
+$lang['Select at least one tag'] = 'Selecione pelo menos uma tag';
+$lang['Basic settings'] = 'Configurações básicas';
+$lang['General'] = 'Geral';
+$lang['Mail theme'] = 'Tema correio';
+?>
Index: /tags/2.6.0RC1/language/pt_BR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Brasil [BR]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=431
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Português';
+$lang_info['country'] = 'Brasil';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'pt';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d álbum atualizado';
+$lang['%d albums updated'] = '%d álbuns atualizados';
+$lang['%d comment to validate'] = '%d comentário para aprovar';
+$lang['%d comments to validate'] = '%d comentários para serem aprovados';
+$lang['%d new comment'] = '%d novo comentário';
+$lang['%d new comments'] = '%d novos comentários';
+$lang['%d comment'] = '%d comentário';
+$lang['%d comments'] = '%d comentários';
+$lang['%d hit'] = 'visto %d vez';
+$lang['%d hits'] = 'visto %d vezes';
+$lang['%d new photo'] = '%d imagem nova';
+$lang['%d new photos'] = '%d imagens novas';
+$lang['%d new user'] = '%d usuário novo';
+$lang['%d new users'] = '%d usuários novos';
+$lang['About'] = 'Sobre';
+$lang['All tags'] = 'Todas as tags';
+$lang['Any tag'] = 'Qualquer tag';
+$lang['At least one listed rule must be satisfied.'] = 'Ao menos um dos critérios deve ser obedecido.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Álbuns';
+$lang['Album'] = 'Álbum';
+$lang['Close this window'] = 'Fechar esta janela';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS completo';
+$lang['Confirm Password'] = 'Confirmar senha';
+$lang['Connection settings'] = 'Configurações de conexão';
+$lang['Login'] = 'autenticar';
+$lang['Contact webmaster'] = 'Contatar o webmaster';
+$lang['Create a new account'] = 'Criar uma nova conta';
+$lang['Created on'] = 'Criada em';
+$lang['Creation date'] = 'Data de criação';
+$lang['Current password is wrong'] = 'A senha atual está errada';
+$lang['Dimensions'] = 'Dimensões';
+$lang['Display'] = 'Mostrar';
+$lang['Each listed rule must be satisfied.'] = 'Todos os critérios devem ser satisfeitos';
+$lang['Email address is missing. Please specify an email address.'] = 'Está faltando o endereço de email';
+$lang['Email address'] = 'Endereço de email';
+$lang['Enter your personnal informations'] = 'Introduza suas informações pessoais';
+$lang['Error sending email'] = 'Erro durante o envio do email';
+$lang['File name'] = 'Nome do arquivo';
+$lang['File'] = 'Arquivo';
+$lang['Filesize'] = 'Tamanho do arquivo';
+$lang['Filter and display'] = 'Filtrar e mostrar';
+$lang['Filter'] = 'Filtro';
+$lang['Forgot your password?'] = 'Esqueceu sua senha?';
+$lang['Go through the gallery as a visitor'] = 'Percorer a galeria como visitante';
+$lang['Help'] = 'Ajuda';
+$lang['Identification'] = 'Identificação';
+$lang['Photos only RSS feed'] = 'RSS das imagens';
+$lang['Keyword'] = 'Palavra chave';
+$lang['Links'] = 'Links';
+$lang['N/A'] = 'Não disponível';
+$lang['New on %s'] = 'Novo em %s';
+$lang['Notification'] = 'Notificação';
+$lang['Number of items'] = 'Número de itens';
+$lang['Original dimensions'] = 'Dimensão original';
+$lang['Password forgotten'] = 'Senha perdida';
+$lang['Password'] = 'Senha';
+$lang['Post date'] = 'Data de envio';
+$lang['Posted on'] = 'Enviado em';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'Conexão rápida';
+$lang['RSS feed'] = 'fluxo RSS';
+$lang['Register'] = 'Registrar-se';
+$lang['Registration'] = 'Registro';
+$lang['Related tags'] = 'Tags relacionadas';
+$lang['Reset'] = 'Cancelar';
+$lang['Retrieve password'] = 'Recuperar a senha';
+$lang['Search rules'] = 'Critérios de busca';
+$lang['Search tags'] = 'Pesquisar as tags';
+$lang['Search'] = 'Pesquisa';
+$lang['display available tags'] = 'ver as tags disponíveis';
+$lang['Since'] = 'Desde ';
+$lang['Sort by'] = 'Listado por';
+$lang['Sort order'] = 'Ordem de exibição';
+$lang['Tag'] = 'Tag';
+$lang['Tags'] = 'Tags';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'O RSS notifica sobre os eventos da galeria: novas imagens, álbuns atualizados, novos comentários de usuários. Use um leitor de fluxos RSS.';
+$lang['Unknown feed identifier'] = 'identificador de fluxo RSS desconhecido';
+$lang['User comments'] = 'Comentários de usuário';
+$lang['Username'] = 'Nome de usuário';
+$lang['Visits'] = 'Visitas';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Semana %d';
+$lang['About Piwigo'] = 'Sobre Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Acesso proibido';
+$lang['add this photo to your favorites'] = 'Acrescentar aos favoritos';
+$lang['Administration'] = 'Administração';
+$lang['all'] = 'tudo';
+$lang['ascending'] = 'crescente';
+$lang['author(s) : %s'] = 'autor(es) : %s';
+$lang['Expand all albums'] = 'Expandir todos os álbuns';
+$lang['posted after %s (%s)'] = 'disponível depois de %s (%s)';
+$lang['posted before %s (%s)'] = 'disponível antes de %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'disponível entre o %s (%s) e o %s (%s)';
+$lang['posted on %s'] = 'disponível em %s';
+$lang['Best rated'] = 'Com a melhor pontuação';
+$lang['display best rated photos'] = 'Mostrar as imagens com as notas mais altas';
+$lang['Calendar'] = 'Calendário';
+$lang['All'] = 'Todos';
+$lang['display each day with photos, month per month'] = 'Mostrar ano por ano, mês por mês, dia por dia';
+$lang['View'] = 'Vista';
+$lang['chronology_monthly_calendar'] = 'Calendário mensal';
+$lang['chronology_monthly_list'] = 'Lista mensal';
+$lang['chronology_weekly_list'] = 'Lista semanal';
+$lang['Click here if your browser does not automatically forward you'] = 'Clique aqui se o seu browser não o redirecionar automaticamente.';
+$lang['comment date'] = 'data do comentário';
+$lang['Comment'] = 'comentário';
+$lang['Your comment has been registered'] = 'O seu comentário foi registrado.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistema contra abuso : Por favor, espere um momento antes de tentar escrever um novo comentario';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'O seu comentário não pôde ser registado porque não passou pelas regras de validação';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Um administrador deve autorizar o seu comentário para que ele seja visível por todos.';
+$lang['This login is already used by another user'] = 'Este login já está sendo usado por outro usuário.';
+$lang['Comments'] = 'Comentários';
+$lang['Add a comment'] = 'Adicionar um comentário';
+$lang['created after %s (%s)'] = 'criado depois de %s (%s)';
+$lang['created before %s (%s)'] = 'criado antes de %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'Criada entre  %s (%s) e  %s (%s)';
+$lang['created on %s'] = 'criado em %s';
+$lang['Customize'] = 'Personalizar';
+$lang['Your Gallery Customization'] = 'Personalização Da Sua Galeria';
+$lang['day'][0] = 'Domingo';
+$lang['day'][1] = 'Segunda-feira';
+$lang['day'][2] = 'Terça-feira';
+$lang['day'][3] = 'Quarta-feira';
+$lang['day'][4] = 'Quinta-eira';
+$lang['day'][5] = 'Sexta-feira';
+$lang['day'][6] = 'Sábado';
+$lang['Default'] = 'Padrão';
+$lang['delete this photo from your favorites'] = 'Apague esta imagem de seus favoritos';
+$lang['Delete'] = 'Apagar';
+$lang['descending'] = 'decrescente';
+$lang['Download'] = 'baixar';
+$lang['Download this file'] = 'baixar este arquivo';
+$lang['edit'] = 'editar';
+$lang['wrong date'] = 'data errada';
+$lang['excluded'] = 'excluídos';
+$lang['Your favorites'] = 'Meus favoritos';
+$lang['display your favorites photos'] = 'Mostrar minhas imagens favoritas';
+$lang['Favorites'] = 'Favoritas';
+$lang['First'] = 'Primeira página';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'A galeria está bloqueada para manutenção. Por favor, volte mais tarde.';
+$lang['Page generated in'] = 'Página gerada em';
+$lang['guest'] = 'visitante';
+$lang['Hello'] = 'Olá';
+$lang['available for administrators only'] = 'disponível apenas para os administradores';
+$lang['display this album'] = 'mostra as imagens da pasta raíz deste álbum';
+$lang['display last user comments'] = 'Ver os últimos comentários de usuários';
+$lang['customize the appareance of the gallery'] = 'personalisar a aparência da galeria';
+$lang['search'] = 'Pesquisar';
+$lang['Home'] = 'Início';
+$lang['in this album'] = 'neste álbum';
+$lang['in %d sub-album'] = 'em %d sub-álbuns';
+$lang['in %d sub-albums'] = 'em %d sub-álbuns';
+$lang['included'] = 'incluídos';
+$lang['Invalid password!'] = 'Senha inválida!';
+$lang['Language'] = 'Idioma';
+$lang['last %d days'] = '%d últimos dias';
+$lang['Last'] = 'Última página';
+$lang['Logout'] = 'Desconectar (logout)';
+$lang['obligatory'] = 'obrigatório';
+$lang['display a calendar by creation date'] = 'Mostra um calendário ordenado pela data de criação';
+$lang['display all photos in all sub-albums'] = 'Mostra todos os elementos em todos os sub-álbuns';
+$lang['return to normal view mode'] = 'voltar à exibição normal';
+$lang['display a calendar by posted date'] = 'Mostrar um calendário por data de envio das imagens';
+$lang['month'][10] = 'outubro';
+$lang['month'][11] = 'novembro';
+$lang['month'][12] = 'dezembro';
+$lang['month'][1] = 'janeiro';
+$lang['month'][2] = 'fevereiro';
+$lang['month'][3] = 'março';
+$lang['month'][4] = 'abril';
+$lang['month'][5] = 'maio';
+$lang['month'][6] = 'junho';
+$lang['month'][7] = 'julho';
+$lang['month'][8] = 'agosto';
+$lang['month'][9] = 'setembro';
+$lang['Most visited'] = 'Mais visitadas';
+$lang['display most visited photos'] = 'Mostra as imagens mais visitadas';
+$lang['The number of photos per page must be a not null scalar'] = 'O número de imagens por página deve ser inteiro e não nulo';
+$lang['Number of photos per page'] = 'Número de imagens por página';
+$lang['Unknown identifier'] = 'Origem desconhecida';
+$lang['New password'] = 'Senha nova';
+$lang['Rate this photo'] = 'Dê uma nota a esta imagem';
+$lang['Next'] = 'Página seguinte';
+$lang['no rate'] = 'nenhuma nota';
+$lang['Photos posted within the last %d day.'] = 'Imagens adicionadas a partir do últimos %d dia.';
+$lang['Photos posted within the last %d days.'] = 'Imagens adicionadas a partir dos últimos %d dias';
+$lang['password updated'] = 'senha atualizada';
+$lang['Recent period must be a positive integer value'] = 'O período deve ser um número inteiro positivo';
+$lang['photo'] = 'imagem';
+$lang['Click on the photo to see it in high definition'] = 'Clique na imagem para vê-la em alta definição';
+$lang['Show file metadata'] = 'Mostrar os metadados do arquivo.';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'Preferências';
+$lang['Previous'] = 'Página anterior';
+$lang['Random photos'] = 'Imagens aleatórias';
+$lang['display a set of random photos'] = 'exibir um grupo aleatório de imagens';
+$lang['Recent albums'] = 'Álbuns recentes';
+$lang['display recently updated albums'] = 'exibir álbuns atualizados recentemente';
+$lang['Recent period'] = 'Período recente';  
+$lang['Recent photos'] = 'Imagens recentes';
+$lang['display most recent photos'] = 'Mostrar as imagens mais recentes';
+$lang['Redirection...'] = 'Redirecionamento...';
+$lang['Please, enter a login'] = 'Por favor, entre com um nome de usuário';
+$lang['login mustn\'t end with a space character'] = 'O nome de usuário não deve terminar com um espaço';
+$lang['login mustn\'t start with a space character'] = 'O nome de usuário não deve começar com um espaço';
+$lang['this login is already used'] = 'Este nome de usuário já existe';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'O formato do email deve ser do tipo: xxx@yyy.eee (exemplo : jack@altern.org)';
+$lang['Auto login'] = 'Auto login (autenticação automática)';
+$lang['remove this tag from the list'] = 'remover esta tag da lista';
+$lang['representative'] = 'representante';
+$lang['Search for Author'] = 'Pesquisar por autor';
+$lang['Search in albums'] = 'Pesquisar nos álbuns';
+$lang['Search by date'] = 'Pesquisar por data';
+$lang['Date'] = 'Data';
+$lang['End-Date'] = 'Data final';
+$lang['Kind of date'] = 'Tipo de data';
+$lang['Search for words'] = 'Pesquisar por palavras';
+$lang['Search for all terms'] = 'Pesquisar todos os termos';
+$lang['Search for any term'] = 'Pesquisar qualquer um dos termos';
+$lang['Empty query. No criteria has been entered.'] = 'Pesquisa vazia. Nenhum critério fornecido.';
+$lang['Search results'] = 'Resultados da pesquisa';
+$lang['Search in sub-albums'] = 'Pesquisar nos sub-álbuns';
+$lang['searched words : %s'] = 'Palavras pesquisadas : %s';
+$lang['Contact'] = 'Contatar';
+$lang['set as album representative'] = 'eleger para representar este álbum';
+$lang['Show number of comments'] = 'Exibir o número de comentários';
+$lang['Show number of hits'] = 'Exibir o número de vizualisações';
+$lang['slideshow'] = 'Slideshow';
+$lang['stop the slideshow'] = 'interromper o Slideshow';
+$lang['Specials'] = 'Ferramentas';
+$lang['SQL queries in'] = 'Pesquisa SQL em';
+$lang['display only recently posted photos'] = 'exibir apenas as imagens enviadas recentemente';
+$lang['return to the display of all photos'] = 'voltar a exibir todas as imagens';
+$lang['the beginning'] = 'o início';
+$lang['Thumbnails'] = 'Miniaturas';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'Um comentário no seu site';
+$lang['today'] = 'hoje';
+$lang['Update your rating'] = 'atualizar nota';
+$lang['the username must be given'] = 'Entre com o nome de usuário';
+$lang['useful when password forgotten'] = 'útil em caso de senha esquecida';
+$lang['Quick search'] = 'Pesquisa Rápida';
+$lang['Connected user: %s'] = 'Usuário conectado: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Comentário: %s';
+$lang['Comment by %s'] = 'Comentário de %s';
+$lang['User: %s'] = 'Usuário: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Administração: %s';
+$lang['Registration of %s'] = 'Registro de %s';
+$lang['Album: %s'] = 'Álbum: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Status ruim para o usuário "convidado", será usado status padrão. Por favor, avise o administrador do site.';
+$lang['this email address is already in use'] = 'um outro usuário já utiliza este email';
+$lang['Album results for'] = 'Resultados do álbum para';
+$lang['Tag results for'] = 'Resultados da tag para';
+$lang['from %s to %s'] = 'de %s ao %s';
+$lang['Play of slideshow'] = 'Iniciar o Slideshow';
+$lang['Pause of slideshow'] = 'Parar o Slideshow';
+$lang['Repeat the slideshow'] = 'Repetir o Slideshow';
+$lang['Not repeat the slideshow'] = 'Não repetir o Slideshow';
+$lang['Reduce diaporama speed'] = 'Diminuir a velocidade do Slideshow';
+$lang['Accelerate diaporama speed'] = 'Aumentar a velocidade do Slideshow';
+$lang['Submit'] = 'Ok';
+$lang['Yes'] = 'Sim';
+$lang['No'] = 'Não';
+$lang['%d photo']='%d imagem';
+$lang['%d photos']='%d imagens';
+$lang['%d photo is also linked to current tags'] = '%d imagem está também ligada às tags correntes';
+$lang['%d photos are also linked to current tags'] = '%d imagens estão também ligadas às tags correntes';
+$lang['display photos linked to this tag'] = 'ver as imagens ligadas apenas a esta tag';
+$lang['photos posted during the last %d days'] = 'imagens enviadas durante os últimos %d dias';
+$lang['Piwigo Help'] = 'Piwigo Help';
+$lang['Rank'] = 'Fila (Rank)';
+$lang['group by letters'] = 'agrupar por letras';
+$lang['letters'] = 'letras';
+$lang['show tag cloud'] = 'mostar a nuvem de tags';
+$lang['cloud'] = 'nuvem';
+$lang['Are you sure?'] = 'Você tem certeza?';
+$lang['%d rates'] = '%d taxas';
+$lang['(!) This comment requires validation'] = '(!) Este comentário necessita aprovação';
+$lang['... or browse your empty gallery'] = '... ou procure sua galeria vazia';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ou, por favor, desative esta mensagem, encontrarei minha maneira por mim mesmo';
+$lang['Change my password'] = 'Alterar minha senha';
+$lang['Check your email for the confirmation link'] = 'Verifique em seu email o link de confirmação';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies estão bloqueados ou não são suportados pelo seu navegador. Você deve ativar os cookies para entrar no sistema.';
+$lang['delete all photos from your favorites'] = 'Exclua todas as fotos do seu Favoritos';
+$lang['Edit a comment'] = 'Editar um comentário';
+$lang['Edit'] = 'Editar';
+$lang['Enter your new password below.'] = 'Insira sua nova senha abaixo.';
+$lang['EXIF Metadata'] = 'Metadados EXIF';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Olá %s, sua galeria de fotos Piwigo está vazia!';
+$lang['Hello %s,'] = 'Olá %s,';
+$lang['html tags are not allowed in login'] = 'marcadores html não são permitidas na autenticação';
+$lang['I want to add photos'] = 'Eu quero inserir fotos';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Se isto foi um engano, apenas ignore esta mensagem e nada acontecerá.';
+$lang['Invalid key'] = 'Chave inválida';
+$lang['Invalid username or email'] = 'Nome de usuário ou email inválido';
+$lang['IPTC Metadata'] = 'Metadados IPTC';
+$lang['Manage this user comment: %s'] = 'Gerenciar o comentário deste usuário: %s';
+$lang['Password reset is not allowed for this user'] = 'Não é permitido a este usuário redefinir senha';
+$lang['Password Reset'] = 'Redefinir senha';
+$lang['Please enter your username or email address.'] = 'Por favor, insira seu nome de usuário ou email.';
+$lang['Rating score'] = 'Avaliação';
+$lang['Reset to default values'] = 'Voltar aos valores padrão';
+$lang['Return to home page'] = 'Voltar à página inicial';
+$lang['Sent by'] = 'Enviado por';
+$lang['Send my connection settings by email'] = 'Enviar minhas configurações de conexão por email';
+$lang['Show oldest comments first'] = 'Mostrar comentários antigos primeiro';
+$lang['Show latest comments first'] = 'Mostrar comentários recentes primeiro';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Alguém solicitou que a senha do seguinte usuário seja redefinida:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registrado com sucesso. Em breve você receberá um email com suas configurações de conexão. Bem-vindo!';
+$lang['The passwords do not match'] = 'As senhas não combinam';
+$lang['This author modified following comment:'] = 'Este autor alterou o seguinte comentário:';
+$lang['This author removed the comment with id %d'] = 'Este autor removeu o comentário com id %d';
+$lang['To reset your password, visit the following address:'] = 'Para redefinir sua senha, visite o seguinte endereço:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'O usuário "%s" não possui endereço de email, não é possível redefinir a senha';
+$lang['Username "%s" on gallery %s'] = 'Nome de usuário "%s" na galeria %s';
+$lang['Username or email'] = 'Nome de usuário ou email';
+$lang['Username modification'] = 'Alteração do nome de usuário';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bem-vindo à sua galeria de fotos Piwigo!';
+$lang['Welcome'] = 'Bem-vindo';
+$lang['You will receive a link to create a new password via email.'] = 'Você receberá, via email, um link para criar uma nova senha.';
+$lang['Your username has been successfully changed to : %s'] = 'Seu nome de usuário foi alterado com sucesso para: %s';
+$lang['Your password has been reset'] = 'Sua senha foi redefinida';
+$lang['square'] = 'quadrado';
+$lang['thumb'] = 'miniatura';
+$lang['2small'] = 'XXS - minúscula';
+$lang['xsmall'] = 'XS - extra pequeno';
+$lang['small'] = 'S - pequeno';
+$lang['medium'] = 'M - médio';
+$lang['large'] = 'L - grande';
+$lang['xlarge'] = 'XL - extra grande';
+$lang['xxlarge'] = 'XXL - enorme';
+$lang['Original'] = 'Original';
+$lang['Thank you for registering at %s!'] = 'Obrigado por registrar-se em %s!';
+$lang['Here are your connection settings'] = 'Aqui estão suas configurações de conexão';
+$lang['Password: %s'] = 'Senha: %s';
+$lang['Username: %s'] = 'Nome de usuário: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Se você acha que recebeu este email por engano, por favor nos contacte em %s';
+$lang['Photo sizes'] = 'Tamanhos da foto';
+$lang['View in'] = 'Ver em';
+$lang['Mobile'] = 'Móvel';
+$lang['Desktop'] = 'Área de trabalho';
+$lang['File name, A &rarr; Z'] = 'Nome do arquivo, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nome do arquivo, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Título da foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Título da foto, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Data de criação, nova &rarr; antiga';
+$lang['Date created, old &rarr; new'] = 'Data de criação, antiga &rarr; nova';
+$lang['Date posted, new &rarr; old'] = 'Data de publicação, nova &rarr; antiga';
+$lang['Date posted, old &rarr; new'] = 'Data de publicação, antiga &rarr; nova';
+$lang['Rating score, high &rarr; low'] = 'Avaliação, alta &rarr; baixa';
+$lang['Rating score, low &rarr; high'] = 'Avaliação, baixa &rarr; alta';
+$lang['Visits, high &rarr; low'] = 'Visitas, alta &rarr; baixa';
+$lang['Visits, low &rarr; high'] = 'Visitas, baixa &rarr; alta';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificador numérico, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificador numérico, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Ordem de classificação manual';
+$lang['%d rate'] = '%d Avaliação';
+$lang['Bad request'] = 'Solicitação Imprópria';
+$lang['Forbidden'] = 'Proibido';
+$lang['Page not found'] = 'Página não encontrada';
+$lang['Permalink for album not found'] = 'Link permanente para o álbum não encontrado ';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo encontrou um erro não recuperável';
+$lang['Requested album does not exist'] = 'Álbum requerido não existe';
+$lang['Requested tag does not exist'] = 'Tag requerida não existe';
+$lang['Email address is mandatory'] = 'Endereço de e-mail obrigatório';
+$lang['Username is mandatory'] = 'nome de usuário obrigatório';
+$lang['mandatory'] = 'obrigatório';
+$lang['Website'] = 'Website';
+$lang['Your website URL is invalid'] = 'Seu endereço de site é inválido';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Primeira Página';
+$lang['Go back to the album'] = 'Retornar para o album';
+$lang['Last Page'] = 'Última página';
+$lang['day']['4'] = 'Quinta-feira';
+$lang['Password is missing. Please enter the password.'] = 'Senha perdida. Por favor entre com a senha.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Confirmação de senhas perdida. Por favor confirme a senha escolhida.';
+?>
Index: /tags/2.6.0RC1/language/pt_BR/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,123 @@
+<h2>Editar álbum</h2>
+
+<h3>Informações</h3>
+
+<ul>
+
+  <li><strong>nome</strong>: renomear o álbum (Renomear virtualmente no caso de álbum físico.).</li>
+
+  <li><strong>descrição</strong>: um pequeno texto dando a ideia do conteúdo,
+  este texto será mostrado no rodapé da página de thumbnails.</li>
+
+</ul>
+
+<h3>Mover</h3>
+
+<p>Se o álbum for virtual, você pode movê-lo. Mover um álbum significa mudar seu álbum pai.</p>
+
+<h3>Opções</h3>
+
+<ul>
+
+  <li><strong>Tipos de acessos</strong>: Gerenciamento de permissões. Se você fizer um álbum privado, todos os seus álbuns filhos tornam-se privados. Se você faz um álbum público, todos os seus álbuns pais tornam-se públicos.
+  
+  <li><strong>Trancar</strong>: Os álbuns e seus sub-álbuns ficarão temporariamente desabilitados para manutenção.</li>
+
+  <li><strong>Comentários</strong>: Autoriza usuários a comentar fotos desse álbum.</li>
+
+</ul>
+
+<p>Você também pode gerenciar essas opções na tela de gerenciamento de "Propriedades"(screens <span
+class="pwgScreen">Comentários</span>, <span class="pwgScreen">Trancar</span>,
+<span class="pwgScreen">Público/Privado</span>, <span
+class="pwgScreen">Representante</span> disponível a partir de <span
+class="pwgScreen">Administração &raquo; Álbums &raquo; Propriedades</span>).</p>
+
+<h3>Ordem de Classificação</h3>
+
+<p>Use o padrão ordem de classificação de imagens.</p>
+
+<p>Indique se esta ordem de classificação será aplicada também a sub-álbuns.</p>
+
+<p>Selecione critérios específicos de classificação para serem usados com este álbum.</p>
+<ul>
+<li><strong>Data de criação</strong>: Data em que a foto foi tirada</li>
+<li><strong>Data da publicação</strong>: Data da sincronização</li>
+<li><strong>Taxa média (*)</strong>: Taxa média poderá ser alterada pela avaliação do visitante</li>
+<li><strong>Mais visitadas (*)</strong>: A visita atual pode alterar a ordem do mais visitado</li>
+<li><strong>Nome do arquivo</strong>: Nome dado no campo de informações</li>
+<li><strong>Id</strong>: Identificação interna (categorias recentes têm identificação interna maior.</li>
+
+</ul>
+<p><strong>(*)</strong>Aviso: Certifique-se de testar essas ordens de classificação pois elas podem provocar resultados inesperados.</p>
+
+
+<h3>Representante</h3>
+
+<p>A representação do álbum é a miniatura exibida na página principal (<span class="pwgScreen">category.php</span>) para representar
+o álbum quando
+ele contém apenas sub-álbuns e não fotografias (assim como o álbum raiz).</p>
+foto de um álbum :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Página da foto</span>: um dos botões de ação que permite definir a foto atual como representante do 
+álbum exibido. Este botão está disponível apenas para administradores.</li>
+
+  <li><span class="pwgScreen">Modificar informações sobre uma foto</span> em
+administração. Esta tela pode ser alcançada a partir <span
+  class="pwgScreen">picture.php</span> ou <span class="pwgScreen">Gerenciamento</span> em <em>modo de unidade</em>. Consulte a ajuda da tela para
+   detalhes.</li>
+
+  <li><span class="pwgScreen">Administração &raquo; Álbuns &raquo; Propriedades,
+  Representação</span>. Veja a ajuda dessa tela para maiores informações.</li>
+
+  <li><span class="pwgScreen">Editar álbum</span> (a tela atual).</li>
+
+</ul>
+
+<p>A escolha de um representante depende da 
+<code>permitir_representante_aleatório</code> parâmetro de configuração (ver <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>No modo padrão (<code>allow_random_representative</code> definido como falso),
+cada álbum que contém pelo menos um elemento é representado por um elemento fixo. 
+Uma vez definida (a criação do álbum), o representante muda apenas
+quando um administrador solicitar. Se o representante não é adequado,
+você pode pedir para <strong>Encontre um representante novo aleatoriamente</strong>.</p>
+
+<p>Se o parâmetro de configuração <code>allow_random_representative</code> é
+definido como verdadeiro, uma categoria contendo fotos pode não ter representante fixo. Apenas use o botão <strong>Eliminar representante</strong>.</p>
+
+<p>Se o álbum contém apenas sub-álbuns e nenhuma foto, ele pode no entanto ser representado por qualquer elemento graças ao <span class="pwgScreen">modificar informações sobre uma foto</span>. A única opção na tela atual
+é o botão <strong>Eliminar representante</strong>.</p>
+
+<h3>Vincular todas as fotos do álbum para um novo álbum</h3>
+
+<ul>
+
+<li><strong>Nome do álbum virtual</strong>: Nome do novo álbum a ser criado,
+todas as fotos da categoria corrente serão ligadas ao novo álbum.</li>
+
+<li><strong>Álbum pai</strong>: Onde o novo álbum vai ser criado,
+deixe em branco para criá-lo na raiz.</li>
+
+</ul>
+
+<h3>Vincular todas as fotos do álbum para álbuns existentes</h3>
+
+<ul>
+
+<li><strong>Álbuns</strong>: Escolha o álbum de destino.</li>
+
+</ul>
+
+<h3>Enviar um e-mail de informações para membros do grupo</h3>
+
+<ul>
+
+<li><strong>Grupo</strong>: grupo de destinatários</li>
+
+<li><strong>Conteúdo do email</strong>: Texto livre para enviar a eles.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/pt_BR/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/cat_move.html	(revision 25596)
@@ -0,0 +1,15 @@
+
+<h2>Movendo &Aacute;lbums virtuais</h2>
+
+<p>Apenas &Aacute;lbums virtuais podem ter um novo &Aacute;lbum-pai.</p>
+
+<h3>&Aacute;lbums virtuais a mover</h3>
+
+<p>Selecione um ou mais &aacute;bums virtuais que deseje mover. 
+Se a lista estiver vazia, isso significa que ainda n&atilde;o criou nenhum &aacute;lbum.</p>
+
+<h3>Novo &aacute;lbum-pai</h3>
+
+<p>Selecione o novo &aacute;lbum-pai (virtual ou f&iacute;sico). 
+Se n&atilde;o seleccionar um &aacute;lbum-pai, os &aacute;lbums virtuais selecionados ser&atilde;o movidos para a raiz.
+Um &aacute;lbum n&atilde;o poder&aacute; ser movido para dentro de si pr&oacute;prio ou para um dos seus sub-&aacute;lbums.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Opções de álbum</h2>
+
+<p>Opções de configuração para vários álbuns de uma vez.</p>
+
+<dl>
+
+<dt>Comentários</dt>
+<dd>Uma foto pode receber comentários de seus visitantes se ele pertence a um álbum com comentários ativados.</dd>
+
+<dt>Trancar (Lock)</dt>
+<dd>Álbuns trancados estão desativados para manutenção. Somente os administradores podem vê-los na galeria.</dd>
+
+<dt>Público / privado</dt>
+<dd>Uma vez que um álbum é privado, dê direitos de acesso aos usuários e grupos.</dd>
+
+<dt>Representante</dt>
+<dd>Esta opção está disponível quando a entrada no arquivo de configuração <code>allow_random_representative</code>
+(veja <span class="filename">include/config_defaults.inc.php</span>) está com o valor 
+<em>true</em>. Cada álbum pode ser representado por uma foto aleatória ou por meio de uma foto escolhida como representante único.
+</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/pt_BR/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,14 @@
+
+<h2>Editar permissões de álbuns</h2>
+
+<p>Esta tela está disponível apenas para álbuns privados. Aqui você pode selecionar
+usuários e grupos autorizados para um álbum.</p>
+
+<h3>Grupos</h3>
+
+<p>Você pode negar ou conceder o acesso de grupos do álbum atual. Modificando
+autorizações de grupos, os usuários pertencentes a estes grupos serão negados ou concedidos o acesso ao álbum.</p>
+ 
+<h3>Usuários</h3>
+
+<p>Você pode negar ou conceder acesso a usuários individuais. Usuários que têm acesso através de um grupo pode ser negado o acesso por exceção.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/configuration.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Configuração</h2>
+
+<p>Esta tela permitir que ao administrador fazer a configuração básica da galeria. Na verdade, esta tela mostra apenas os parâmetros de configuração simples que devem ser suficientes para a grande maioria dos administradores. Se você quiser ver outras inúmeros (e avançados) parâmetros de configuração, leia o arquivo de configuração padrão <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>A tela é dividida em seções diferentes, agrupando os parâmetros de configuração por tema.</p>
+
+
+<h3>Principal</h3>
+<ul>
+  <li><strong>Título da galeria</strong>: usada em RSS feed e notificações por e-mail.</li>
+
+  <li><strong>Página banner</strong>: exibida na parte superior de cada página pública.</li>
+
+  <li><strong>URL da Galeria</strong>: usedo para o RSS feed.</li>
+
+  <li><strong>Bloqueio da galeria</strong>: Bloquear toda a galeria para a manutenção. Somente usuários administradores serão capazes de acessar a galeria.</li>
+
+  <li><strong>Classificação</strong>: Recurso de classificação da foto está habilitado.</li>
+
+  <li><strong>Avaliação pelos visitantes</strong>: Mesmo usuários não cadastrados podem avaliar as imagens.</li>
+
+  <li><strong>Permitir o registo de usuário</strong>: Qualquer pessoa pode se cadastrar.</li>
+
+  <li><strong>Endereço de email é obrigatória para todos os usuários</strong>: endereço de e-mail será verificado na atualização de registro ou perfil, exceto se a ação é feita por um administrador.</li>
+
+  <li><strong>Administrar e-mail quando um novo usuário se registrar</strong>: aadministradores serão notificados por e-mail para cada registro.</li>
+  
+  <li><strong>Ordem padrão de fotos</strong>: você pode definir uma ordem personalizada com esses menus drop-down.</li>
+
+</ul>
+
+<h3>Histórico</h3>
+
+  <p>Visitas nas páginas <span
+  class="pwgScreen">category.php</span> e <span
+  class="pwgScreen">picture.php</span> será salva na tabela <code>histórico</code>.</p>
+  
+  <p>Visitas serão mostradas em <span  class="pwgScreen">Administração &raquo; Ferramentas &raquo; Histórico</span>.</p>
+
+<ul>
+  <li><strong>Salvar páginas visitadas pelos visitantes</strong>: as visitas as páginas pelos visitantes serão gravadas.</li>
+
+  <li><strong>Salvar páginas visitadas pelos usuários</strong>: as visitas as páginas pelos usuários registrados visitantes serão gravadas.</li>
+
+  <li><strong>Salvar páginas visitadas pelos administradores</strong>: as visitas as páginas pelos administradores serão gravadas.</li>
+
+</ul>
+
+<h3>Comentários</h3>
+<ul>
+
+  <li><strong>Comentários para todos </strong>: Mesmo visitantes não registrados podem postar comentários.</li>
+
+  <li><strong>Número de comentários por página</strong>.</li>
+
+  <li><strong>Validação </strong>: um administrador deve validar comentários dos usuários antes que eles se tornam visíveis no site. Validação de comentários de usuários
+   ocorrem na tela <span class="pwgScreen">Administração &raquo; Ferramenta &raquo; Pending Comentários</span>.</li>
+
+  <li><strong>Administrar e-mail quando um comentário válido é inserido </strong>: Envia um e-mail para os administradores quando um usuário digita um comentário e este comentário é validado.</li>
+
+  <li><strong>Administrar e-mail quando um comentário necessita de validação</strong>:
+Envia um e-mail para os administradores quando um usuário entra um comentário que requer a validação pelo administrador.
+Validação de comentários de usuários tem lugar na tela <span class="pwgScreen">Administração &raquo; Ferramentas &raquo; Comentários Pendentes</span>.</li>
+
+</ul>
+
+<h3>Exibição padrão</h3>
+
+<p>Aqui você pode alterar as opções de exibição usados ​​por visitantes, o usuário padrão que não está conectado. Uma vez conectado, estas opções são substituídas por opções do próprio usuário
+(modificável em <span class="pwgScreen">perfil</span>).</p>
+
+<p>É possível alterar as opções de exibição de todos os usuários existentes no <span class="pwgScreen">Administração &raquo;
+Usuários &raquo; Gerenciar</span> tela onde você pode selecionar uma lista de usuários.</p>
+
+<ul>
+
+  <li><strong>Idioma</strong>: Aplicar a rótulos do Piwigo apenas. Nomes de álbuns de fotos, nomes e descrições de todos os campos não são localizados.</li>
+
+  <li><strong>Número de fotos por linha</strong></li>
+
+  <li><strong>Número de linhas por página</strong></li>
+
+  <li><strong>Tema da interface </strong></li>
+
+  <li><strong>Período recente </strong>: Por dia. Período durante o qual a foto é mostrada como nova. Deve ser maior do que 1 dia.</li>
+
+  <li><strong>Expandir todos os álbuns </strong>: Expandir todos os álbuns por
+padrão no menu <em> Alerta</em>: esta opção é intensiva em recursos e pode gerar uma enorme menu se sua árvore álbum contendo muitos álbuns.</li>
+
+  <li><strong>Mostrar número de comentários </strong>: Ver o número de comentários para cada foto na página de miniaturas. Uso intensivo de recursos.</li>
+
+  <li><strong>Mostrar número de acessos</strong>: Mostrar sucessos de exibição observados na foto apenas para sua miniatura na página de miniaturas. Somente quando o parâmetro de configuração avançada é: <br>
+  $conf['show_nb_hits'] = verdadeira; <br>
+  Notice: falso por padrão.</li>
+
+  <li><strong>Largura máxima das fotos</strong>: máxima largura apresentada . Fotos maiores do que esta definição vão ser redimensionada em exibição. Em vez de escolher esta opção, você pode considerar modificar a largura de suas fotos, o que seria uma melhor prática.</li>
+
+  <li><strong>Altura máxima das fotos </strong>: O mesmo que para a configuração de largura máxima.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/pt_BR/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Configuração de extensão de modelo</h2>
+
+<h3>Sobre</h3>
+<p>Sua galeria do Piwigo pode ser personalizada, substituindo arquivos de modelos existentes com versões personalizadas. Por exemplo, o modelo de cabeçalho padrão (header.tpl) pode ser substituído por um modelo de cabeçalho personalizado (my-header.tpl). Depois de enviar as alterações para o banco de dados a galeria vai exibir o cabeçalho personalizado em vez do cabeçalho original.<br>
+Extensões do modelo são uma forma poderosa de criar temas personalizados para usuários novos e avançados. Usado em conjunto com o Editor LocalFiles você pode criar seus próprios temas infantis.</p>
+
+<h3>Modelo Original</h3>
+<p>Um tema contém uma série de arquivos de modelos que compõem as páginas da galeria. Estes são os modelos originais.</p>
+
+<h3>Palavra chave URL opcional</h3>
+<p>Testas são palavras encontradas no URL da galeria após o nome do módulo. Eles também podem ser permalinks ativos (Consulte a documentação permalink para mais informações). <a href="#warnings"> AVISO:</a>, se o mesmo modelo original e mesma palavra-chave é usado em mais de um modelo personalizado apenas o último está ativo.</p>
+
+<h3>Tema Ligado</h3>
+<p>O tema ligado é o tema a partir do qual os arquivos de modelo estão sendo substituídos.</p>
+
+<h3>Onde estão os modelos originais?</h3>
+<p>Modelos originais são os arquivos de modelo fornecidos com cada tema. Estes são salvos em <em>/themes/default/template</em> (ou <em>themes/<theme name>/template</em>). Estes arquivos de modelo não deve ser editado, pois essas alterações serão perdidas com atualizações tema.<br>
+Suportados incluem modelos originais:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> e/ou <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> e/ou <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> e/ou <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> e/ou <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> e/ou <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> e/ou <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> e/ou <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Gravando modelos personalizados</h3>
+<p>Modelos personalizados devem ser salvos na pasta de modelo de extensão ou subpastas. por exemplo, <em>/template-extension/my-default/header.tpl</em> (ou <em>/template-extension/<my-theme-name>/header.tpl</em>)  Arquivos de modelo pode ter qualquer nome com uma extensão de .tpl. Os arquivos de modelo em subpastas aparecem na tela de configuração do modelo como disponíveis modelos personalizados.</p>
+<h3>Ativando modelos personalizados</h3>
+<p>Selecione o modelo original para substituir. Opcionalmente escolher uma palavra-chave de URL para assegurar que o molde personalizado é mostrado apenas em páginas com essa palavra-chave Selecione um tema ligado e as alterações entrarão em vigor sobre esse tema Enviar as alterações para o banco de dados.</p>
+<h3>Desativando modelos personalizados</h3>
+<p>Desmarcar o modelo original e enviar as alterações para o banco de dados <br>
+Exclua os arquivos de modelo personalizado a partir da pasta de modelo extensão.</p>
+
+<a name="avisos"></a>
+<h3>Avidos</h3>
+<ul>
+  <li><strong>O modelo original</strong> deve ser o modelo original caso contrário você pode ter resultados imprevisíveis.</li>
+  <li>Se o mesmo modelo original e mesma palavra-chave da URL é usado em mais de um modelo personalizado apenas o último está ativo.</li>
+  <li>Arquivos de modelo de amostra são distribuídos para fins de teste apenas. Não editá-los. Criar as suas próprias ou copiar arquivos temáticos existentes no modelo em <em>/template-extension/<my-theme>/</em></li>
+  <li>Quando o modelo personalizado é excluído o arquivo de modelo original seja imediatamente reativado.</li>
+</ul>
Index: /tags/2.6.0RC1/language/pt_BR/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Lista de grupos</h2>
+
+<p>Este é o lugar onde você gerencia grupos.</p>
+
+<h3>Adicionar um grupo</h3>
+
+<p>Administrador pode adicionar grupos.</p>
+
+<h3>Lista de grupos</h3>
+
+<p>Para cada grupo as seguintes ações podem ser aplicadas:</p>
+
+
+<ul>
+  <li>ir para o gerenciamento de usuários (Admin &raquo; Usuários &raquo; Gerir)</li>
+  <li>ir para a tela de gerenciamento de permissões para conceder ou negar o acesso aos álbuns privados.</li>
+  <li>excluir o grupo (requer uma confirmação)</li>
+  <li>alternância de status "padrão" (requer uma confirmação)</li>
+</ul>
+
+<h3>Grupos padrão</h3>
+<p>Grupos padrão são grupos que são automaticamente associadas a cada novo usuário no momento do registro ou a criação por um administrador.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,28 @@
+<p>Várias maneiras de adicionar suas fotos em sua galeria:</p>
+
+<ul>
+  <li><strong>Envio direto</strong> dentro do seu navegador é a
+forma mais simples e imediata. Depende dos recursos de seu navegador
+e seu servidor web. Para uma quantidade enorme de fotos ou em caso de você encontrar algum problema,
+os outros métodos estão apenas esperando por você!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Ir para o Envio Direto </a></p>
+
+<ul>
+  <li><strong>pLoader</strong>é uma aplicação desktop, que deve ser instalada no seu computador. Arraste e solte as fotos na janela do pLoader, clique em <em>"Enviar para o Piwigo"</em> e deixe o pLoader fazer o trabalho. Você pode encontrar outras aplicações desktop como <strong>WinToPiwigo</strong> ou o <strong>Digikam</strong> Plugin de exportação para o Piwigo.</li>
+</ul>
+
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Ir para o pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Transferência FTP</strong> é a forma mais recomendada para adicionar uma
+   coleção muito grande de fotos com o mínimo de cliques. Siga
+   o guia para preparar suas fotos. O método de FTP permitem controlar com precisão
+   a organização física de suas fotos em seu servidor.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Ir para o FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/pt_BR/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Os grupos são uma maneira conveniente de configurar permissões para uma lista de usuários.</p>
+
+<p>Crie grupos em <span class="pwgScreen">Administração &raquo; Usuários &raquo; Grupos</span> e associe usuários para este grupo em <span class="pwgScreen">Administração &raquo; Usuários &raquo; Gerenciar</span>.</p>
+
+<p>Um usuário pode pertencer a vários grupos. A autorização é mais forte do que a proibição : se o usuário "jack" pertence aos grupos "família" e "amigos", e apenas o grupo "família" pode ver a categoria "Natal 2003", então "jack" poderá ver "Natal 2003".</p>
+
Index: /tags/2.6.0RC1/language/pt_BR/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/help_misc.html	(revision 25596)
@@ -0,0 +1,4 @@
+<p>Assim que você tiver criado sua galeria, modifique as propriedades padrão em <span class="pwgScreen">Administração &raquo; Configuração &raquo; Opções &raquo; Guest Settings</span>. Todo usuário novo registrado usará estas opções de configuração padrão.</p>
+
+<p>Se você tiver qualquer pergunta, a comunidade Piwigo lhe receberá de braços abertos em <a href="http://br.piwigo.org/forum">seu forum</a>.</p>
+
Index: /tags/2.6.0RC1/language/pt_BR/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Você pode proibir o acesso às categorias. Altere o modo de acesso à categoria para "privado" se você quiser gerenciar permissões.</p>
+
+<p>Você pode tornar uma categoria privada simplesmente editando uma categoria (<span class="pwgScreen">Administração &raquo; Categorias &raquo; Gerenciar &raquo; editar</span>) ou alterando as opções em toda a árvore da categoria (<span class="pwgScreen">Administração &raquo; Categorias &raquo; Propriedades &raquo; Publico / Privado</span>).</p>
+
+<p>Uma vez que a categoria esteja como privada, você pode gerenciar as permissões para grupos e usuários com 3 telas:</p>
+
+<ul>
+  <li><span class="pwgScreen">Administração &raquo; Usuários &raquo; Gerenciar &raquo; ação das permissões</span> (um link por usuário)</li>
+  <li><span class="pwgScreen">Administração &raquo; Usuários &raquo; Grupos &raquo; ação das permissões</span> (um link por grupo)</li>
+  <li><span class="pwgScreen">Administração &raquo; Categorias &raquo; Gerenciar &raquo; editar ação das permissões da categoria</span> (um link por categoria)</li>
+</ul>
+
Index: /tags/2.6.0RC1/language/pt_BR/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>As fotos são mostradas na categoria correspondente are displayed in the category corresponding to the file directory.</p>
+
+<p>Você também pode mostrar uma imagem em várias categorias, sem a necessidade de duplicar o arquivo em seu servidor. Associe a imagem a qualquer categoria na tela de edição de foto (que qualquer administrador pode ter acesso da página de foto na galeria).</p>
+
+<p>Categorias virtuais são baseadas neste conceito: elas não tem diretório correspondente. Crie categorias virtuais através da <span class="pwgScreen">Administração &raquo; Categorias &raquo; Gerenciar</span>.</p>
+
Index: /tags/2.6.0RC1/language/pt_BR/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Histórico</h2>
+
+<p>Nestas telas, você pode monitorar história de visitas de sua galeria de acordo com as opções escolhidas em: Administração &raquo; Configuração &raquo; Opções &raquo; Histórico</p>
+	
+<h3>Estatísticas</h3>
+<ul>
+  <p>Se você escolheu para gravar as páginas visitadas (<span class="pwgScreen">index.php</span> e <span class="pwgScreen">picture.php</span>), você pode monitorá-los a partir dessa guia.</p>
+	<li><strong>Estatística Global</strong>: visitas por ano. </li>
+	<li><strong>Estatística Anual</strong>: visitas por mês no ano selecionado .</li>
+	<li><strong>Estatística Mensal</strong>: visitas por dia no mês selecionado .</li>
+	<li><strong>Estatística Diária</strong>: visitas por hora no dia selecionado.</li>
+</ul>
+
+<h3>Pesquisar</h3>
+<ul>
+  <p>Se você escolheu para gravar as páginas visitadas (<span class="pwgScreen">index.php</span> e <span class="pwgScreen">picture.php</span>), você pode procurar os detalhes deste guia com a ajuda de filtros diferentes.</p>
+	<li><strong>Filtro por data:</strong> selecione o intervalo de datas para pesquisar para definir as datas de início e fim.</li>
+	<li><strong>Filtro por tipo de elemento:</strong> selecionar o tipo de elemento para estatísticas sobre esse elemento.</li>
+	<li><strong>Filtro por usuário:</strong> selecione o usuário para as estatísticas sobre esse usuário.</li>
+	<li><strong>Filtro por imagem identifier:</strong> selecione o identificador de imagem para as estatísticas sobre essa imagem.</li>
+	<li><strong>Filtro por nome do arquivo:</strong> selecione o nome do arquivo para estatísticas sobre o arquivo..</li>
+</ul>
Index: /tags/2.6.0RC1/language/pt_BR/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Manutenção</h2>
+
+<p>Para otimizar o tempo de geração da página o Piwigo usa informações armazenadas em cache. Por exemplo, em vez de contar o número de imagens contidas em cada álbum, em cada página recarregada esta informação está armazenada na base de dados. Em teoria, esta informação deve ser sempre correta mas, às vezes, pode ocorrer um erro e as informações em cache se tornam desatualizadas.</p>
+
+<p>Algumas informações se tornam menos útil quando o tempo passa. Excluindo essa informação inútil do banco de dados vai lhe poupar algum espaço em disco.</p>
+
+<ul>
+	<li><strong>Excluir tags órfãs</strong></li>
+</ul>
+<ul>
+  <li><strong>Atualizar informações de álbuns:</strong> Para cada álbum, a seguinte informação é verificada e atualizada, se necessário: lista de álbuns dos pais, número de fotos, data da última foto, a posição entre os álbuns irmãos, posição entre todos os álbuns. Esta ação também verifica a consistência de fotos representantes.</li>
+  <li><strong>Atualização de informações de fotos:</strong> Para cada foto, as informações atualizadas são: caminho completo para o arquivo, a taxa média. <em>Aviso</em>, não se confunda: informações de metadados devem ser sincronizados a partir de <span class="pwgScreen">Administração &raquo; Ferramentas &raquo; sincronização</span>, ou na tela de modificação de uma foto simples (através de <span class="pwgScreen">Foto</span> por exemplo).</li>
+</ul>
+<ul>
+  <li><strong>Reparar e otimizar o banco de dados:</strong>Realiza operações de reordenamento, reparação e otimização em cada tabela do banco de dados</li>
+  <li><strong>Reinicializar verificação de integridade</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Purgar detalhes de história:</strong> Eliminar todas as linhas da tabela história. Tela <span class="pwgScreen">Administração &raquo; Ferramentas &raquo; Histórico</span> não vai mais mostrar informações para a história do passado. <em>Aviso:</em> todos os dados serão perdidos, sem qualquer forma de recuperá-los.</li>
+  <li><strong>Purgar resumo histórico:</strong> Eliminar todas as informações de resumo sobre visitas. Este resumo é calculado a partir dos detalhes da história.</li>
+  <li><strong>Purgar seções:</strong> Excluir sessões de usuários expirados.</li>
+  <li><strong>Purgar notificações feeds nunca usadas</strong></li>
+  <li><strong>Purgar historia de pesquisas</strong></li>
+  <li><strong>Purgar modelos compilados</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/pt_BR/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notificação pelo Mail (NPM)</h2>
+
+<p>Configurar e gerir notificações de e-mail aos usuários notificando-os de mudanças para o seu site.</p>
+
+<p>Esta tela é composta por três guias:</p>
+
+<h3>Configurações</h3>
+<p>Disponível apenas para webmasters, este guia apresenta a notificação por meio de parâmetros de e-mail.</p>
+
+<h3>Subscrever</h3>
+<p>Disponível apenas para webmasters, este guia gerencia assinatura de um usuário para notificações por email. Adicionar usuários para a caixa de subscrito por eles para receber notificações por correio.</p>
+
+<h3>Enviar</h3>
+<p>Disponível apenas para webmasters e administradores, este guia permite que os administradores enviem e-mails de notificação aos usuários inscritos.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalinks</h2>
+
+<p>Permalinks são usados ​​para fazer urls álbum mais agradáveis. Quando um álbum tem um permalink definido, o id do álbum não é mais necessária na url.</p>
+
+<p>Quando um permalink for excluída, você pode salvá-lo na história permalink, de modo que links externos para páginas do Piwigo ainda funcionam. Na tabela _ permalink você pode ver a data em que o permalink foi excluído, a última vez que foi usado e o número de vezes que este permalink foi usado.</p>
+
+<p>Note que permalinks deve ser exclusivo por álbum. Também na história permalink você não pode ter o mesmo permalink definido mais de uma vez.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,106 @@
+<fieldset>
+  <legend>Início Rápido</legend>
+
+<ol>
+  <li>Crie um diretório no seu computador.</li>  
+
+  <li>Copie algumas fotos para esse diretório, altere o tamanho delas para serem exibidas na rede. <em>Cuidado</em>: o nome dos diretórios e dos arquivos devem conter apenas letras, números, "-", "_" ou ".". Não use espaço em branco, e nem caracteres acentuados.</li>
+
+  <li>Com a ajuda de um programa de FTP, copie o seu diretório para o diretório "galleries" da sua instalação Piwigo.</li>
+
+  <li>Faça o login na sua galeria e vá até <span class="pwgScreen">Administração &raquo; Imagens &raquo; Miniatruras</span> para criar alguma miniatura que esteja faltando.</li>
+
+  <li>Vá até <span class="pwgScreen">Administração</span> e clique no grande botão escrito "Sincronização".</li>
+</ol>
+
+<p>Parabéns! Você acabou de criar a primeira categoria da sua galeria de fotos.</p>
+
+</fieldset>
+<fieldset>
+  <legend>Organização de diretórios e arquivos</legend>
+<ul>
+
+  <li>
+
+    <p>Os diretórios das categorias estão no diretório "galleries" no Piwigo. Segue aqui a árvore de diretórios de uma pequena galeria (mas
+    usando muitos recursos) :</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+  
+  <li>Cada diretório sob "galleries" produz uma categoria. Não há limite de profundidade.</li>
+
+  <li>Basicamente, um item é representado por um arquivo. Um arquivo pode ser um
+  iten Piwigo se sua extensão estiver entre as possibilidades dos parâmetros de configuração <code>file_ext</code> (veja o arquivo <span
+  class="filename">include/config_default.inc.php</span> ). Um arquivo pode
+  ser uma imagem se a sua extensão estiver entre as possibilidades dos parâmetros de configuração <code>picture_ext</code>.</li>
+
+  <li>Os itens fotográficos devem ter uma miniatura associada (veja a seção abaixo
+  sobre miniaturas)</li>
+
+  <li>Os itens fotográficos podem ter um arquivo de alta definição associado. Assim como para
+  wedding.jpg no exemplo acima. Não use prefixo nas imagens de alta definição.</li>
+
+  <li>Outros itens (video, sons, arquivos de texto, o que você quiser...) são
+  por padrão representados por um ícone correspondente à extensão do nome de arquivo. Você tem a opção de associar uma miniatura e um arquivo representativo (veja video.avi no exemplo acima).</li>
+
+  <li><em>Atenção</em>: o nome dos diretórios e dos arquivos devem conter apenas letras, números, "-", "_" ou ".". Não use espaço em branco e nem caracteres acentuados.</li>
+
+  <li>Uma vez que os arquivos, as miniaturas e representativos estiverem corretamente alocados nos diretórios,
+  vá até : <span class="pwgScreen">Administração &raquo; Categorias &raquo;
+  Sincronizar</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>Miniaturas (Thumbnails)</legend>
+<ul>
+
+  <li>Cada foto deve ter a sua miniatura.</li>
+
+  <li>As miniaturas estão armazenadas no subdiretório "thumbnail" no diretório das categorias. 
+      A miniatura tem o mesmo nome de arquivo que a foto correspondente, com <em>TN-</em> como prefixo.</li>
+
+  <li><em>Aviso</em>: use um módulo externo para a criação das miniaturas.</li>
+
+  <li>Mesmo se isto não é recomendado (qualidade da imagem, carregamento do servidor, etc), você pode usar a página<span>
+  class="pwgScreen">Administração &raquo; Imagens &raquo; Miniaturas</span> para criar as miniaturas.</li>
+
+  <li>Dê acesso de escrita para todos os diretórios das categorias.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/pt_BR/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/search.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Pesquiasar</h2>
+
+<p>Esta página permite que você faça pesquisa de fotos em toda a galeria.</p>
+
+<dl>
+
+  <dt>Busca por palavras</dt>
+  <dd>Busca de uma ou várias palavras entre os atributos relacionados às fotos
+   da galeria. Use * como complemento para palavras parciais.</dd>
+
+  <dt>Busca de um autor</dt>
+  <dd>Use * como complemento para palavras parciais.</dd>
+
+  <dt>Pesquisar por data</dt>
+  <dd>Selecione uma data e/ou uma data final para a sua consulta. Deixe o campo de data vazio
+se você quiser fazer uma consulta "antes". O ano no último
+campo deve ser digitado no seguinte formato: AAAA (ou seja, 2004)</dd>
+
+  <dt>Pesquisa em álbuns</dt>
+  <dd>Selecione álbum ou álbuns que deseja pesquisar. Todos os
+   sub-álbuns podem ser pesquisados ​​selecionando-se o álbum pai e definindo-se permitir
+   pesquisa sub-álbuns abaixo.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/pt_BR/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Sincronize</h2>
+
+<p>Existem dois tipos diferentes de sincronização:</p>
+<ul>
+	<li>diretórios/arquivos</li>
+	<li>arquivo de  metadados</li>
+</ul>
+
+<p>Sincronizar diretórios e arquivos é atualizar sua árvore de diretórios com a árvore de diretórios no banco de dados. 
+Sincronizar arquivos de metadados é atualizar informações de fotos, tais como tamanho do arquivo, dimensões em pixels, informações de EXIF ou IPTC no banco de dados.</p>
+
+<p>Quando sincronizar seus envios com sua galeria, você deve primeiro sincronizar diretórios e arquivos.</p>
+
+<p>O processo de sincronização pode tomar muito tempo (dependendo do servidor e do número de elementos para gerenciar) assim é possível fazê-lo álbum por álbum.</p>
Index: /tags/2.6.0RC1/language/pt_BR/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Lista de usuários</h2>
+
+<p>Esse é o lugar onde você gerencia os usuários de sua galeria Piwigo.</p>
+
+<h3>Adicionar um usuário</h3>
+
+<p>Um administrador pode adicionar usuários manualmente.  Para cada usuário crie um nome de usuário, uma senha e submeta um e-mail válido.</p>
+
+<h3>Lista de usuários</h3>
+
+<p>A lista de usuários existentes pode ser filtrada por nome de usuário (use * com coringa), grupo ou status. Ela pode ser ordenada por data de registro ou nome de usuário, em ordem crescente ou decrescente.</p>
+
+<p>Essa tela permite gerenciar vários usuários de uma única vez usando diferentes ações:</p>
+
+<ul>
+  <li>Apagar usuários (requer confirmação)</li>
+  <li>Mudar o status do usuário</li>
+  <li>Associá-lo ou dessociá-lo de grupos</li>
+  <li>Modificar propriedades de exibiçao</li>
+  <li>Modificar preferências adicionais</li>
+</ul>
+
+<p>O alvo padrão é a seleção (somente os usuários selecionados) ou todos os usuários mostrados na lista filtrada.</p>
Index: /tags/2.6.0RC1/language/pt_BR/index.php
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/pt_BR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalação';
+$lang['Basic configuration'] = 'Configuração Básica';
+$lang['Default gallery language'] = 'Idioma padrão da galeria';
+$lang['Database configuration'] = 'Configuração da base de dados';
+$lang['Admin configuration'] = 'Configuração da administração';
+$lang['Start Install'] = 'Iniciar a instalação';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Será mostrado aos visitantes. É necessário para a administração do website';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'A conexão com o servidor foi bem sucedida, porém não foi possível se conectar à base de dados';
+$lang['Can\'t connect to server'] = 'Não foi possível se conectar ao servidor';
+$lang['Host'] = 'MySQL host';
+$lang['User'] = 'Usuário';
+$lang['user login given by your host provider'] = 'login de usuário fornecido pelo seu provedor de hospedagem';
+$lang['user password given by your host provider'] = 'senha de usuário fornecida pelo seu provedor de hospedagem';
+$lang['Database name'] = 'Nome da base de dados';
+$lang['also given by your host provider'] = 'também forncido pelo seu provedor de hospedagem';
+$lang['Database table prefix'] = 'Prefixo da tabela da base de dado';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Os nomes das tabelas da base de dados terão este prefixo (isto possibilita que você gerencie melhor suas tabelas)';
+$lang['enter a login for webmaster'] = 'entre um login para o webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'o login do webmaster não pode conter os caracteres \' ou "';
+$lang['please enter your password again'] = 'por favor, entre com a sua senha novamente';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'mantenha-a bem guardada, é ela que lhe permite acessar o painel da administração';
+$lang['Password [confirm]'] = 'Senha [confirmar]';
+$lang['verification'] = 'verificação';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Precisa de ajuda ? Faça a sua pergunta no <a href="%s">Piwigo message board</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Os visitantes poderão entrar em contato com o administrador do site através desse email';
+$lang['PHP 5 is required'] = 'É necessário PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que a sua hospedagem está atualmente usando PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pode tentar mudar sua configuração para PHP 5 através da criação ou modificação de um arquivo .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que você pode alterar sua configuração por conta própria e reiniciar o Piwigo depois disso.';
+$lang['Try to configure PHP 5'] = 'Tentar configurar PHP 5';
+$lang['Sorry!'] = 'Lamento!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo não teve condições de configurar o PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Você deve entrar em contato com o suporte do seu provedor e ver como você poderia mudar para PHP 5 por conta própria.";
+$lang['Hope to see you back soon.'] = 'Espero te ver de volta em breve.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Uma solução alternativa é copiar o texto na caixa acima e cole-o no arquivo "local/config/database.inc.php" (Atenção: database.inc.php deve conter apenas o que está na área de texto, sem retorno de linha ou caractere de espaço)';
+$lang['Congratulations, Piwigo installation is completed'] = 'Parabéns, a instalção do Piwigo foi completada.  ';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Criação do arquivo de configuração local/config/database.inc.php falhou.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Não hesite em consultar os nossos fóruns para qualquer ajuda: %s';
+$lang['Download the config file'] = 'Baixar o arquivo de configuração.';
+$lang['Just another Piwigo gallery'] = 'Apenas outra galeria Piwigo.';
+$lang['Welcome to my photo gallery'] = 'Bem-Vindo a minha galeria de fotos.';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bem-Vindo a sua nova instalação do Piwigo.';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Você pode baixar o arquivo de configuração e colocá-lo na pasta local/config de sua instalação.';
+$lang['localhost or other, supplied by your host provider'] = 'localhost ou outro, fornecido pelo seu provedor de hospedagem';
+?>
Index: /tags/2.6.0RC1/language/pt_BR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Brasil [BR]
Index: /tags/2.6.0RC1/language/pt_BR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_BR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_BR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = 'Atualização';
+$lang['Upgrade from version %s to %s'] = 'Atualizar da versão %s para a %s';
+$lang['Statistics'] = 'Estatísticas';
+$lang['total upgrade time'] = 'tempo total do upgrade';
+$lang['total SQL time'] = 'tempo total do SQL';
+$lang['SQL queries'] = 'Consultas SQL';
+$lang['Upgrade informations'] = 'Informações do upgrade';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Execute uma avaliação de rotina em [Administração>Tools>Manutenção] se você encontrar algum problema.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaução, os plugins abaixo foram desativados. Você deve checar por atualizações dos plugins antes de reativá-los:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Apenas administrador pode realizar o upgrade: por favor, faça o login logo abaixo.';
+$lang['You do not have access rights to run upgrade'] = 'Você não tem permissões de acesso para realizar o upgrade';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Em <i>%s</i>, antes de <b>?></b>, insira:';
+$lang['All sub-albums of private albums become private'] = 'Todas os sub-álbuns de álbuns privados tornam-se privados';
+$lang['User permissions and group permissions have been erased'] = 'Permissões de usuário e de grupo foram apagadas';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Apenas o prefixo das miniaturas (thumbnails) e o endereço de email do webmaster foram salvos da configuração anterior.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Esta página se propõe a atualizar o banco de dados do seu Piwigo de uma versão antiga para uma nova versão. O assistente de atualização detectou que você está rodando uma <strong>distribuição %s</strong> (ou equivalente).'; 
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Por precaução, os temas abaixo foram desativados. Você deve verificar por atualizações dos temas antes de reativá-los:';
+
+?>
Index: /tags/2.6.0RC1/language/pt_PT/about.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+  <li>Piwigo é uma aplicação web que permite a criação de uma galeria de imagens na internet.</li>
+
+  <li>Piwigo é desenvolvido em PHP com uma base de dados MySQL.</li>
+
+  <li>Se tiver sugestões ou comentários, visite o <a href="http://piwigo.org">sítio oficial</a> e o <a href="http://piwigo.org/forum">fórum Piwigo</a>.</li>
+
+<p>A tradução Portuguesa é mantida por (em ordem alfabética):
+
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=2588">alahel76</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16666">ANO</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=12768">PsyKick_RuhYn</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16839">sda</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18588">toze</a></li>
+	</ul>
+.... Muito obrigado</p>
Index: /tags/2.6.0RC1/language/pt_PT/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/admin.lang.php	(revision 25596)
@@ -0,0 +1,972 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d associação';
+$lang['%d associations'] = '%d associações';
+$lang['%d album including'] = '%d do album incluído ';
+$lang['%d albums including'] = '%d albums incluídos ';
+$lang['%d physical'] = '%d físico';
+$lang['%d physicals'] = '%d físicos';
+$lang[' and %d virtual'] = ' e %d virtual';
+$lang[' and %d virtuals'] = ' e %d virtuais';
+$lang['%d album moved'] = '%do album movido';
+$lang['%d albums moved'] = '%d albums movidos';
+$lang['%d group'] = '%d grupo';
+$lang['%d groups'] = '%d grupos';
+$lang['%d member'] = '%d membro';
+$lang['%d members'] = '%d membros';
+$lang['%d tag'] = '%d etiqueta';
+$lang['%d tags'] = '%d etiquetas';
+$lang['%d user comment rejected'] = '%d comentário de utilizador rejeitado';
+$lang['%d user comments rejected'] = '%d comentários de utilizador rejeitados';
+$lang['%d user comment validated'] = '%d comentário de utilizador aprovado';
+$lang['%d user comments validated'] = '%d comentários de utilizador aprovados';
+$lang['%d user deleted'] = '%d utilizador apagado';
+$lang['%d users deleted'] = '%d utilizadores apagados';
+$lang['%d user'] = '%d utilizador';
+$lang['%d users'] = '%d utilizadores';
+$lang['%d waiting for validation'] = '%d a aguardar aprovação';
+$lang['Actions'] = 'Ações';
+$lang['Activate'] = 'Activar';
+$lang['Add/delete a permalink'] = 'Adicionar/apagar um link';
+$lang['Add a tag'] = 'Adicionar uma etiqueta';
+$lang['Add a user'] = 'Adicionar um utilizador';
+$lang['Add group'] = 'Adicionar um grupo';
+$lang['Add'] = 'Adicionar';
+$lang['Allow user registration'] = 'Permitir o registo de utilizadores';
+$lang['Apply to sub-albums'] = 'Aplicar aos sub-albums';
+$lang['Associated'] = 'Associados(as)';
+$lang['Caddie management'] = 'Gestão do carrinho';
+$lang['Caddie'] = 'Carrinho';
+$lang['Albums authorized thanks to group associations'] = 'Albuns autorizados graças a associações de grupo';
+$lang['Album manual order was saved'] = 'A ordem manual dos albuns foi salva';
+$lang['Check for upgrade failed for unknown reasons.'] = 'A actualização falhou por razões desconhecidas.';
+$lang['Check for upgrade'] = 'Procurar por atualizações';
+$lang['Comments for all'] = 'Comentários para todos';
+$lang['Current name'] = 'Nome actual';
+$lang['Database'] = 'Base de dados';
+$lang['Deactivate'] = 'Desactivar';
+$lang['Delete Representant'] = 'Apagar capa do album';
+$lang['Delete selected tags'] = 'Apagar etiquetas selecionadas';
+$lang['Delete selected users'] = 'Apagar utilizadores selecionados';
+$lang['Deletions'] = 'Items apagados';
+$lang['Deny selected groups'] = 'Negar os grupos selecionados';
+$lang['Deny selected users'] = 'Negar utilizadores selecionados';
+$lang['Description'] = 'Descrição';
+$lang['Display options'] = 'Opções de visualização';
+$lang['Dissociated'] = 'Desassociado';
+$lang['Does not represent'] = 'Não representa';
+$lang['Edit selected tags'] = 'Editar etiquetas selecionadas';
+$lang['Edit tags'] = 'Editar etiquetas';
+$lang['Email admins when a new user registers'] = 'Notificar os administradores quando um novo utilizador se registar';
+$lang['Email admins when a valid comment is entered'] = 'Notificar os administradores quando um comentário for inserido';
+$lang['Email admins when a comment requires validation'] = 'Notificar os administradores quando um comentário necessitar de aprovação';
+$lang['Environment'] = 'Ambiente';
+$lang['Form'] = 'Formulário';
+$lang['Gallery title'] = 'Título da galeria';
+$lang['Grant selected groups'] = 'Permitir os grupos selecionados';
+$lang['Grant selected users'] = 'Permitir os utilizadores selecionados';
+$lang['Group name'] = 'Nome do grupo';
+$lang['Groups'] = 'Grupos';
+$lang['Guests'] = 'Visitantes';
+$lang['History'] = 'Histórico';
+$lang['Informations'] = 'Informações';
+$lang['Install'] = 'Instalar';
+$lang['Link all album photos to a new album'] = 'Vincular todos os items do album a um novo album';
+$lang['Link all album photos to some existing albums'] = 'Vincular todos os items do album a um album já existente';
+$lang['Linked albums'] = 'Albuns vinculados';
+$lang['Lock gallery'] = 'Trancar a  galeria';
+$lang['Maintenance'] = 'Manutenção';
+$lang['Edit album permissions'] = 'Editar as permissões do album';
+$lang['Manage permissions for group "%s"'] = 'Gerir permissões do grupo "%s"';
+$lang['Manage permissions for user "%s"'] = 'Gerir permissões do utilizador "%s"';
+$lang['Manage tags'] = 'Gerir etiquetas';
+$lang['Members'] = 'Membros';
+$lang['Metadata synchronized from file'] = 'Metadados do ficheiro sincronizados';
+$lang['Move albums'] = 'Mover albuns';
+$lang['Move'] = 'Mover';
+$lang['Name'] = 'Nome';
+$lang['New name'] = 'Novo nome';
+$lang['New parent album'] = 'Novo albun pai';
+$lang['New tag'] = 'Etiqueta nova';
+$lang['Number of comments per page'] = 'Número de comentários por página';
+$lang['Number of rates'] = 'Número de votos';
+$lang['Number of thumbnails to create'] = 'Número de miniaturas a serem criadas';
+$lang['Only private albums are listed'] = 'Apenas os albuns privados estão listados';
+$lang['Operating system'] = 'Sistema operativo';
+$lang['Options'] = 'Opções';
+$lang['Other private albums'] = 'Outros albums privados';
+$lang['Page banner'] = 'Banner da página';
+$lang['Parent album'] = 'Album pai';
+$lang['Path'] = 'Caminho';
+$lang['Permalink'] = 'Ligação Permanente';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'A Ligação Permanente %s já está a ser usada pelo álbum %s. Apague-o do histórico de ligações permanentes primeiro';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'A Ligação Permanente deve ser composta de a-z, A-Z, 0-9, "-", "_" ou "/". Poderá não ser apenas numérica mas começar com um número seguido de "-"';
+$lang['Permalink %s is already used by album %s'] = 'A Ligação Permanente %s já está a ser usada pelo álbum %s';
+$lang['Permalink history'] = 'Histórico de ligações permanentes';
+$lang['Permalinks'] = 'Ligações Permanentes';
+$lang['Permission denied'] = 'Permissão negada';
+$lang['Permission granted thanks to a group'] = 'Permissão garantida graças ao grupo';
+$lang['Permission granted'] = 'Permissão garantida';
+$lang['Photo informations updated'] = 'Informações da foto actualizadas';
+$lang['Plugins'] = 'Extensões';
+$lang['Position'] = 'Posição';
+$lang['Preferences'] = 'Preferências';
+$lang['Properties'] = 'Propriedades';
+$lang['Random photo'] = 'Foto aleatória';
+$lang['Rate date'] = 'Data da classificação';
+$lang['Rating by guests'] = 'Classificado(a) pelos visitantes';
+$lang['Rating'] = 'Classificação';
+$lang['Reject'] = 'Rejeitar';
+$lang['Representant'] = 'Miniatura de capa do do album';
+$lang['Representation of albums'] = 'Miniaturas das capas dos albuns';
+$lang['Representative'] = 'Miniatura capa do album';
+$lang['Represents'] = 'É miniatura para capa';
+$lang['Save order'] = 'Salvar ordem';
+$lang['Save to permalink history'] = 'Salvar no histórico de ligações permanentes';
+$lang['Select at least one album'] = 'Selecionar pelo menos um album';
+$lang['Select at least one photo'] = 'Selecionar pelo menos uma foto';
+$lang['Select at least one user'] = 'Selecionar pelo menos um utilizador';
+$lang['Show info'] = 'Mostrar informação';
+$lang['Site manager'] = 'Gerir a galeria';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Estatísticas';
+$lang['Storage album'] = 'Armazenar album';
+$lang['Sum of rates'] = 'Soma das classificações';
+$lang['Tag "%s" already exists'] = 'A etiqueta "%s" já existe';
+$lang['Tag "%s" was added'] = 'A etiqueta "%s" foi adicionada';
+$lang['Tag selection'] = 'Seleção de etiqueta';
+$lang['The %d following tags were deleted'] = 'As seguintes etiquetas %d  foram apagadas';
+$lang['Unable to check for upgrade.'] = 'Não foi possível procurar actualizações.';
+$lang['Uninstall'] = 'Desinstalar';
+$lang['Use the default photo sort order (defined in the configuration file)']='Usar a ordem de exibição padrão (definida no ficheiro de configuração)';
+$lang['User comments validation'] = 'Aprovação dos comentários de utilizador';
+$lang['Users'] = 'Utilizadores';
+$lang['Validate'] = 'Validar';
+$lang['Validation'] = 'Aprovação';
+$lang['Version'] = 'Versão';
+$lang['Virtual albums to move'] = 'Albums virtuais a mover';
+$lang['Virtual album name'] = 'Nome do album virtual';
+$lang['Webmaster cannot be deleted'] = 'O Webmaster não pode ser apagado';
+$lang['You are running on development sources, no check possible.'] = 'Você está a usar o código fonte de desenvolvimento, não é possível qualquer verificação.';
+$lang['You cannot delete your account'] = "Não pode apagar a sua conta";
+$lang['You cannot move an album in its own sub album'] = 'Não pode mover um album para um dos seus sub-albuns.';
+$lang['You need to confirm deletion'] = 'Precisa confirmar a remoção';
+$lang['Associate to album'] = 'Associar ao album';
+$lang['associate to group'] = 'Associar ao grupo';
+$lang['Authorized'] = 'Autorizado';
+$lang['Add a virtual album'] = 'Adicionar um album virtual';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizar os utilizadores a adicionar comentários nos álbums seleccionados';
+$lang['The name of an album must not be empty'] = 'O nome de um album não deverá ficar vazio';
+$lang['Lock albums'] = 'Trancar albuns';
+$lang['Private'] = 'Privado';
+$lang['Public'] = 'Público';
+$lang['Find a new representant by random'] = 'Procurar alietoriamente nova miniatura para capa do album';
+$lang['Public / Private'] = 'Público / Privado';
+$lang['Manage authorizations for selected albums'] = 'Gerir as autorizações para os albuns seleccionados';
+$lang['Virtual album added'] = 'Album virtual adicionado';
+$lang['Virtual album deleted'] = 'Album virtual apagado';
+$lang['Access type'] = 'Tipo de Acesso';
+$lang['Information data registered in database'] = 'Informação dos dados registados na base de dados';
+$lang['Default display'] = 'Exibição padrão';
+$lang['The gallery URL is not valid.'] = 'O URL (endereço) da galeria não é valido.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'O número de comentários por página deve ser entre 5 e 50 .';
+$lang['Configuration'] = 'Configuração';
+$lang['confirm'] = 'Confirmar';
+$lang['Date'] = 'Data';
+$lang['delete album'] = 'Apagar album';
+$lang['Dissociate from album'] = 'Desassociar do album';
+$lang['dissociate from group'] = 'Desassociar do grupo';
+$lang['Album updated successfully'] = 'As informações do album foram actualizadas com sucesso.';
+$lang['photos per page'] = 'Fotos por página';
+$lang['High definition enabled'] = 'Alta definição activada';
+$lang['File'] = 'Arquivo';
+$lang['first photo added on %s'] = 'Primeira foto adicionada em %s';
+$lang['Forbidden'] = 'Proibido';
+$lang['global mode'] = 'Modo global';
+$lang['group "%s" added'] = 'Grupo "%s" adicionado';
+$lang['group "%s" deleted'] = 'Grupo "%s" apagado';
+$lang['group "%s" updated'] = 'Grupo "%s" actualizado';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'O nome de um grupo não deve conter " ou \' ou ficar vazio.';
+$lang['This name is already used by another group.'] = 'Este nome já é usado por outro grupo.';
+$lang['High definition'] = 'Alta definição';
+$lang['jump to album'] = 'Ir para album';
+$lang['jump to photo'] = 'Ir para foto';
+$lang['leave'] = 'Manter';
+$lang['Lock'] = 'Trancar';
+$lang['Locked'] = 'Trancado';
+$lang['manage album photos'] = 'Gerir as fotos do album';
+$lang['manage sub-albums'] = 'Gerir sub-albuns';
+$lang['Manage'] = 'Gerir';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'O tempo de execução acabou, tratamento deve ser contínuo [Tempo estimado: %d segundo].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'O tempo de execução acabou, tratamento deve ser contínuo [Tempo estimado: %d segundos].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'O tempo disponível para a criação da lista de utilizadores a quem enviar mail é limitado. Outros utilizadores não estão listados.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'O tempo para enviar mail é limitado. Outros mails serão omitidos.';
+$lang['To send ?'] = 'Enviar?';
+$lang['Last send'] = 'Enviado pela última vez';
+$lang['User'] = 'Utilizador';
+$lang['See you soon,'] = 'Até breve,';
+$lang['Go to'] = 'Ir para';
+$lang['Hello'] = 'Olá ';
+$lang['New photos were added'] = 'Foram adicionadas novas fotos';
+$lang['on'] = ' em ';
+$lang['between'] = 'entre ';
+$lang['and'] = ' e ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'O webmaster subscreveu-o para receber notificações por mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Você subscreveu receber notificações por email.';
+$lang['To subscribe'] = 'Subscrever';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Se encontrar problemas ou tiver qualquer questão a colocar, por favor envie uma mensagem para ';
+$lang['[NBM] Problems or questions'] = '[Notificação] Problemas ou perguntas';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'O webmaster retirou-o da lista de subscrição de notificações por mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Você anulou a subscrição para receber notificações por email.';
+$lang[', click on'] = ', clique em ';
+$lang['To unsubscribe'] = 'Cancelar subscrição';
+$lang['With blank value, gallery title will be used'] = 'Se em branco, será usado o título da galeria';
+$lang['Notification'] = 'Notificação';
+$lang['Error when sending email to %s [%s].'] = 'Erro ao enviar email para %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email enviado para %s [%s].';
+$lang['%d mail was sent.'] = '%d email foi enviado.';
+$lang['%d mails were sent.'] = '%d emails foram enviados.';
+$lang['%d mail was not sent.'] = '%d email não foi enviado.';
+$lang['%d mails were not sent.'] = '%d emails não foram enviados.';
+$lang['No mail to send.'] = 'Nenhum mail para enviar.';
+$lang['There is no available subscribers to mail.'] = 'Não existem subscritores para serem notificados por mail.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Subscritores apenas poderão ser listados quando existirem novos items para notificar.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Apenas os webmasters podem ver este separador e não os administradores.';
+$lang['No user to send notifications by mail.'] = 'Nenhum utilizador a quem enviar notificações por mail.';
+$lang['New photos added'] = 'Novas fotos adicionados';
+$lang['Subscribe to notification by mail'] = 'Subscrever as notificações por email';
+$lang['Unsubscribe from notification by mail'] = 'Cancelar a subscrição das notificações por email';
+$lang['Parameter'] = 'Parâmetro';
+$lang['Continue processing treatment'] = 'Continuar a processar tratamento';
+$lang['Complementary mail content'] = 'Conteúdo complementar do mail.';
+$lang['Add detailed content'] = 'Adicionar conteúdo detalhado';
+$lang['Send mail as'] = 'Enviar email como';
+$lang['Send mail to users'] = 'Enviar email aos utilizadores';
+$lang['Send'] = 'Enviar';
+$lang['Options'] = 'Opções';
+$lang['Subscribed'] = 'Subscrito';
+$lang['Subscribe'] = 'Subscrever';
+$lang['Parameters'] = 'Parâmetros';
+$lang['Select recipients'] = 'Selecionar os destinatários';
+$lang['Subscribe/unsubscribe users'] = 'Subscrever/Cancelar Subscrição dos utilizadores';
+$lang['Unsubscribed'] = 'Subscrição Cancelada';
+$lang['%d parameter was updated.'] = '%d parâmetro foi actualizado.';
+$lang['%d parameters were updated.'] = '%d parâmetros foram actualizados.';
+$lang['%d user was not updated.'] = '%d utilizador não foi actualizado.';
+$lang['%d users were not updated.'] = '%d utilizadores não foram actualizados.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Utilizador %s [%s] foi removido da lista de subscritores.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Utilizador %s [%s] foi adicionado na lista de subscritores.';
+$lang['%d user was updated.'] = '%d utilizador foi actualizado.';
+$lang['%d users were updated.'] = '%d utilizadores foram actualizados.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Utilizador %s [%s] não foi removido da lista de subscritores.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Utilizador %s [%s] não foi adicionado na lista de subscritores.';
+$lang['User %s [%s] added.'] = 'Utilizador %s [%s] adicionado.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Atenção: Activando ou desativando a subscrição enviará mails aos utilizadores';
+$lang['Send mail on HTML format'] = 'Enviar a correspondência no formato HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Incluír a exibição das fotos recentes agrupadas por datas';
+$lang['Available only with HTML format'] = 'Disponível apenas com o formato HTML';
+$lang['no write access'] = 'Sem acesso de escrita';
+$lang['Permissions'] = 'Permissões';
+$lang['private'] = 'Privado';
+$lang['public'] = 'Público';
+$lang['Purge never used notification feeds'] = 'Purgar as notificações que nunca foram enviadas';
+$lang['Purge sessions'] = 'Purgar as sessões';
+$lang['randomly represented'] = 'Miniatura aliatória para a capa do album';
+$lang['registration date'] = 'Data de registo';
+$lang['clean'] = 'limpar';
+$lang['Create this site'] = 'Criar este sitio';
+$lang['test'] = 'Testar';
+$lang['test this remote site'] = 'Testar este sitio remoto';
+$lang['remove tags'] = 'Remover etiquetas';
+$lang['Repair and optimize database'] = 'Reparar e optimizar a base de dados';
+$lang['selection'] = 'Seleção';
+$lang['set to'] = 'Definir para';
+$lang['singly represented'] = 'Miniatura do album fixa';
+$lang['This site already exists'] = 'Este sitio já existe';
+$lang['created'] = 'Criado';
+$lang['delete'] = 'Apagar';
+$lang['delete this site and all its attached elements'] = 'Apagar este sitio e toda a informação associada';
+$lang['deleted'] = 'Apagado(a)';
+$lang['an error happened'] = 'Ocorreu um erro';
+$lang['Local'] = 'Local';
+$lang['Remote'] = 'Remoto';
+$lang['update the database from files'] = 'Atualizar a base de dados com arquivos';
+$lang['status'] = 'Estado';
+$lang['Directory'] = 'Diretório';
+$lang['sub-albums'] = 'Sub-albuns';
+$lang['Synchronize metadata'] = 'sincronizar metadados';
+$lang['target'] = 'Objetivo';
+$lang['Thumbnail'] = 'Miniatura';
+$lang['Title'] = 'Título';
+$lang['Album list management'] = 'Gerir lista albuns';
+$lang['Piwigo configuration'] = 'Configuração Piwigo';
+$lang['Edit album'] = 'Editar album';
+$lang['Group management'] = 'Gestão de grupos';
+$lang['User list'] = 'Lista de utilizadores';
+$lang['Edit photo information'] = 'Editar informação da foto';
+$lang['Database synchronization with files'] = 'Sincronização da base de dados com arquivos';
+$lang['all'] = 'Todos';
+$lang['height must be a number superior to'] = 'Altura deve ser um número maior que';
+$lang['width must be a number superior to'] = 'Largura deve ser um número superior a';
+$lang['for the file format'] = 'para o formato do arquivo';
+$lang['Photo unreachable or no support'] = 'Formato da Foto não localizado ou não suportado';
+$lang['GD version'] = 'Versão GD';
+$lang['General statistics'] = 'Estatísticas gerais';
+$lang['average time'] = 'Tempo médio';
+$lang['number of miniaturized photos'] = 'Número de miniaturas criadas';
+$lang['total time'] = 'Tempo total';
+$lang['for this file format'] = 'para este formato de arquivo';
+$lang['unit mode'] = 'Modo simples';
+$lang['Unlocked'] = 'Destrancada';
+$lang['unset'] = 'não definido';
+$lang['Update albums informations'] = 'Atualizar as informações dos albums';
+$lang['Update photos information'] = 'Atualizar as informações das fotos';
+$lang['Synchronize'] = 'Sincronizar';
+$lang['reduce to single existing albums'] = 'Reduzir para um único os álbums existentes';
+$lang['Choose an option'] = 'Escolher uma opção';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Exibir o máximo de informações (álbums e fotos adicionados, álbums e fotos apagados)';
+$lang['Error list'] = 'Lista de erros';
+$lang['Errors caption'] = 'Captura de erros';
+$lang['Detailed informations'] = 'Informações detalhadas';
+$lang['File/directory read error'] = 'Erro na leitura do arquivo/diretório';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'O ficheiro ou pasta não pode ser acedido (ou ele não existe ou o acesso foi negado)';
+$lang['albums deleted in the database'] = 'Albuns  apagados da base de dados';
+$lang['photos deleted from the database'] = 'Fotos apagadas da base de dados';
+$lang['photos candidates for metadata synchronization'] = 'Fotos candidatas para a sincronização de meta-dados';
+$lang['photos informations synchronized with files metadata'] = 'Informações das fotos foram sincronizadas com osficheiros de metadados ';
+$lang['errors during synchronization'] = 'Erros durante a sincronização';
+$lang['albums added in the database'] = 'Albuns adicionados à base de dados';
+$lang['photos added in the database'] = 'Fotos adicionadas à base de dados';
+$lang['photos updated in the database'] = 'Fotos atualizadas na base de dados';
+$lang['Search for new images in the directories'] = 'Pesquisar novas fotos nos diretórios';
+$lang['added'] = 'Adicionado(a)';
+$lang['deleted'] = 'apagado(a)';
+$lang['Metadata synchronization results'] = 'Resultados da sincronização de metadados';
+$lang['only perform a simulation (no change in database will be made)'] = 'apenas executa uma simulação (não será feita alteração alguma na base de dados)';
+$lang['directories + files'] = 'Diretórios + Arquivos';
+$lang['only directories'] = 'Apenas diretórios';
+$lang['synchronize files structure with database'] = 'sincronizar a estrutura dos ficheiros com a base de dados';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizar os meta-dados dos ficheiros com as informações das fotos na base de dados';
+$lang['even already synchronized photos'] = 'Também fotos já sincronizadas';
+$lang['Used metadata'] = 'Metadados usados';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'O nome dos diretórios e dos arquivos deve ser composto de letras, números, "-", "_" ou "."';
+$lang['wrong filename'] = 'Nome de arquivo errado';
+$lang['Upload'] = 'Carregar';
+$lang['user "%s" added'] = 'utilizador "%s" adicionado';
+$lang['User status'] = 'Status do utilizador';
+$lang['user_status_admin'] = 'Administrador';
+$lang['user_status_generic'] = 'Genérico';
+$lang['user_status_guest'] = 'Visitante';
+$lang['user_status_normal'] = 'Utilizador';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Album virtual';
+$lang['Waiting'] = 'Pendente';
+$lang['default'] = 'Padrão';
+$lang['Toggle \'default group\' property'] = 'Ligar/Desligar propriedade do \'grupo padrão\' ';
+$lang['Advanced features'] = 'Características principais';
+$lang['Overall'] = 'Prever';
+$lang['Year'] = 'Ano';
+$lang['Month'] = 'Mês';
+$lang['Day'] = 'Dia';
+$lang['Pages seen'] = 'Páginas vistas';
+$lang['Time'] = 'Tempo';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Elemento';
+$lang['Section'] = 'Secção';
+$lang['An information email was sent to group "%s"'] = 'Um email informativo foi enviado para o grupo "%s';
+$lang['Send an information email to group members'] = 'Enviar um email informativo aos membros do grupo';
+$lang['Group'] = 'Grupo';
+$lang['[%s] Visit album %s'] = '[%s] Visite o album %s';
+$lang['Hello,'] = 'Olá,';
+$lang['See you soon.'] = 'Até breve.';
+$lang['Discover album:'] = 'Descobrir o album:';
+$lang['Mail content'] = 'Conteúdo do email';
+$lang['none'] = 'Nenhum';
+$lang['high'] = 'Maior';
+$lang['other'] = 'outro';
+$lang['Element type'] = 'Tipo de elemento';
+$lang['Image id'] = 'ID da foto';
+$lang['Summary'] = 'Sumário';
+$lang['%d line filtered'] = '%d linha filtrada';
+$lang['%d lines filtered'] = '%d linhas filtradas';
+$lang['%d guest'] = '%d visitante';
+$lang['%d guests'] = '%d visitantes';
+$lang['Hour'] = 'Hora';
+$lang['guest'] = 'Visitante';
+$lang['default values'] = 'Valores padrão';
+$lang['Guest cannot be deleted'] = 'Visitante não pode ser apagado';
+$lang['Default user cannot be deleted'] = 'Utilizador padrão não pode ser apagado';
+$lang['Purge history detail'] = 'Limpar detalhes do histórico';
+$lang['Purge history summary'] = 'Limpar sumário do histórico';
+$lang['Check integrity'] = 'Verificar integridade';
+$lang['Anomaly'] = 'Anomalia';
+$lang['Correction'] = 'Correcção';
+$lang['Automatic correction'] = 'Correcção automática';
+$lang['Impossible automatic correction'] = 'Impossível efectuar a correcção automática';
+$lang['Correction applied with success'] = 'A correcção foi aplicada com sucesso';
+$lang['Correction applied with error'] = 'A correcção foi aplicada com erro(s)';
+$lang['%d anomaly has been detected.'] = '%d anomalia foi detectada.';
+$lang['%d anomalies have been detected.'] = '%d anomalias foram detectadas.';
+$lang['%d anomaly has been corrected.'] = '%d anomalia foi corrigida.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalias foram detectadas e corrigidas.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalia não foi corrigida.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalias não foram corrigidas.';
+$lang['Go to %s or %s for more informations'] = 'Vá ao %s ou %s para mais informações';
+$lang['the forum'] = 'Forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'o valor %s não está correcto porque exif não é suportado';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s deve ser definido para falso o arquivo local/config/config.inc.php  ';
+$lang['Main "guest" user does not exist'] = 'O utilizador principal "visitante" não existe';
+$lang['Main "guest" user status is incorrect'] = 'O status do "visitante" utilizador está incorreto';
+$lang['Default user does not exist'] = 'utilizador padrão não existe';
+$lang['Main "webmaster" user does not exist'] = 'O "webmaster" utilizador principal não existe';
+$lang['Main "webmaster" user status is incorrect'] = 'O estatuto do "webmaster" utilizador principal  está incorreto';
+$lang['User "%s" created with "%s" like password'] = 'O utilizador "%s" foi criado com "%s" como Senha';
+$lang['Status of user "%s" updated'] = 'Status do utilizador "%s" foi atualizado';
+$lang['add new photos to caddie'] = 'Adicionar novos itens ao carrinho';
+$lang['No display'] = 'Não exibir';
+$lang['Classic display'] = 'Exibição clássica';
+$lang['Hoverbox display'] = 'Exibição hoverbox';
+$lang['Mail address is obligatory for all users'] = 'Endereço de email é obrigatório para todos os utilizadores';
+$lang['Minimum privacy level'] = 'Nível de privacidade mínima';
+$lang['Privacy level'] = 'Nível de privacidade';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contactos';
+$lang['Level 2'] = 'Amigos';
+$lang['Level 4'] = 'Família';
+$lang['Level 8'] = 'Administradores';
+$lang['Reinitialize check integrity'] = 'Reiniciar verificação de integridade';
+$lang['Check all'] = 'Marcar tudo';
+$lang['Uncheck all'] = 'Desmarcar tudo';
+$lang['Check automatic corrections'] = 'Verificar correcções automáticas';
+$lang['Apply selected corrections'] = 'Aplicar as correções seleccionadas';
+$lang['Ignore selected anomalies'] = 'Ignorar as anomalias seleccionadas';
+$lang['Refresh'] = 'Recarregar a página';
+$lang['The anomaly will be ignored until next application version'] = 'A anomalia será ignorada até à próxima versão da aplicação';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'A anomalia corrigida não será mais ignorada';
+$lang['%d anomaly has been ignored.'] = '%d anomalia foi ignorada.';
+$lang['%d anomalies have been ignored.'] = '%d anomalias foram ignoradas.';
+$lang['Plugins which need upgrade'] = 'Plugins que necessitam atualização.';
+$lang['Plugin list'] = 'Lista de extenções';
+$lang['Check for updates'] = 'Procurar atualizações';
+$lang['Other plugins'] = 'Outras extenções disponíveis';
+$lang['Last revisions'] = 'Últimas revisões';
+$lang['Are you sure you want to delete this plugin?'] = 'Você tem certeza de que quer apagar esta extenção?';
+$lang['Are you sure you want to install this plugin?'] = 'Tem a certeza de que quer instalar esta extenção?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Tem a certeza de que quer instalar esta atualização? Deve verificar se esta versão não necessita uma outra instalação prévia.';
+$lang['Plugin has been successfully copied'] = 'Extensão copiada com sucesso';
+$lang['You might go to plugin list to install and activate it.'] = 'Você deve ir à lista de Extenções para instalar e ativá-la.';
+$lang['Can\'t create temporary file.'] = 'Não é possível criar ficheiro temporário.';
+$lang['Can\'t download archive.'] = 'O arquivo não pode ser descarregado.';
+$lang['Can\'t read or extract archive.'] = 'O arquivo não pode ser lido ou extraído.';
+$lang['An error occured during extraction (%s).'] = 'Ocorreu um erro durante a extração dos arquivos (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Por favor, verifique as permissões das pastas e subpastas das extenções (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Ligação ao servidor inexistente.';
+$lang['Purge compiled templates'] = 'Purgar as templates compiladas';
+$lang['ACCESS_0'] = 'Acesso livre';
+$lang['ACCESS_1'] = 'Acesso a todos';
+$lang['ACCESS_2'] = 'Acesso a utilizadores registados';
+$lang['ACCESS_3'] = 'Acesso a administradores';
+$lang['ACCESS_4'] = 'Acesso a webmasters';
+$lang['ACCESS_5'] = 'Sem acesso';
+$lang['Support'] = 'Suporte';
+$lang['Documentation'] = 'Documentação';
+$lang['A new version of Piwigo is available.'] = 'Uma nova versão de Piwigo está disponível.';
+$lang['Piwigo Administration'] = 'Administração Piwigo';
+$lang['Piwigo version'] = 'Versão Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Você tem a última versão de Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'A versão instalada de %s [%s] não é compatível com a versão requerida [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Necessita atualizar seu sistema para tirar o máximo partido da aplicação, caso contrário, a aplicação poderá funcionar de forma impropria ou até não funcionar.';
+$lang['Deleted on'] = 'Apagada em';
+$lang['Last hit'] = 'Último acesso';
+$lang['GD library is missing'] = 'Livraria GD foi omitida';
+$lang['Templates'] = 'Matrizes (Templates)';
+$lang['Extend for templates'] = 'Extensões para modelos (templates)';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Substituição das templates originais pelas templates personalizadas do sub-diretório template-extension';
+$lang['Replacers (customized templates)'] = 'Substitutos (templates personalizadas)';
+$lang['Original templates'] = 'Templates originais';
+$lang['Optional URL keyword'] = 'Palavra chave da URL opcional';
+$lang['Templates configuration has been recorded.'] = 'A configuração das matrizes (templates) foram gravadas.';
+$lang['All optimizations have been successfully completed.'] = 'Todas as optimizações foram completadas com sucesso.';
+$lang['Optimizations have been completed with some errors.'] = 'As otimizações foram finalizadas com alguns erros.';
+$lang['Modify information'] = 'Modificar informação';
+$lang['nothing'] = 'Nada';
+$lang['overrides existing values with empty ones'] = 'Sobrepor os valores existentes com valores vazios';
+$lang['Manage photo ranks'] = 'Gerenciar posições das fotos';
+$lang['Edit ranks'] = 'Editar posições (ranks)';
+$lang['No photo in this album'] = 'Album sem fotos';
+$lang['Images manual order was saved'] = 'A ordem manual das fotos foi salva';
+$lang['ranks'] = 'Posições (ranks)';
+$lang['Drag to re-order'] = 'Clique e arraste para reordenar';
+$lang['Quick Local Synchronization'] = 'Rápida Sincronização local';
+$lang['No photo can be deleted'] = 'Nenhuma foto pode ser apagada';
+$lang['Delete selected photos'] = 'Apagar fotos selecionadas';
+$lang['%d photo was deleted'] = '%d foto apagada';
+$lang['%d photos were deleted'] = '%d fotos foram apagadas';
+$lang['Downloads'] = 'Descargas';
+$lang['Released on'] = 'Lançado em';
+$lang['Number of downloads'] = 'Número de descargas';
+$lang['Piwigo Announcements Newsletter'] = 'Circular sobre comunicações Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fique atualizado com o projeto Piwigo, assine a circular com comunicações sobre o Piwigo. Você receberá emails quando uma nova versão for disponibilizada, (às vezes incluindo a correção de um bug, é importante saber e atualizar) e quando eventos importantes acontecerem relativos ao projeto. Apenas alguns emails ao longo do ano.';
+$lang['Subscribe %s'] = 'Subscrever %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Subscrever %s para circular das comunicações Piwigo';
+$lang['Purge search history'] = 'Purgar o histórico da pesquisa';
+$lang['Hide'] = 'Esconder';
+$lang['Miscellaneous'] = 'Outras informações';
+$lang['Virtual Links'] = 'Links virtuais';
+$lang['Menu Management'] = 'Menus';
+$lang['%d of %d photos selected'] = '%d de %d fotos seleccionadas';
+$lang['%d photos uploaded'] = '%d fotos enviadas';
+$lang['+ Add an upload box'] = '+ Adicionar uma caixa de envio';
+$lang['Action'] = 'Ação';
+$lang['Activate icon "%s"'] = 'Activar ícone "%s"';
+$lang['Activate Navigation Bar'] = 'Activar Barra de Navegação';
+$lang['Activate Navigation Thumbnails'] = 'Activar Navegação das Miniaturas';
+$lang['Active Languages'] = 'Activar Idiomas';
+$lang['Active Plugins'] = 'Activar Extenções';
+$lang['Active Themes'] = 'Activar Temas';
+$lang['Add a filter'] = 'Adicionar um filtro';
+$lang['Add another set of photos'] = 'Adicionar outro conjunto de fotos';
+$lang['Add New Language'] = 'Adicionar novo idioma';
+$lang['Add New Theme'] = 'Adicionar um novo Tema';
+$lang['Add Photos'] = 'Adicionar Fotos';
+$lang['Add write access to the "%s" directory'] = 'Definir permissões de escrita ao diretório "%s"';
+$lang['Administration Home'] = 'Painel Administrativo';
+$lang['Album "%s" has been added'] = 'O album "%s" foi adicionado';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" agora contém %d fotos';
+$lang['Album photos associated to the following albums: %s'] = 'Fotos do album associadas aos seguintes albums: %s';
+$lang['Album name'] = 'Nome do album';
+$lang['Albums automatically sorted'] = 'Albums sortidos automaticamente';
+$lang['All %d photos are selected'] = 'Todas as %d fotos estão seleccionadas';
+$lang['Allow rating'] = 'Permitir avaliação';
+$lang['Allow user customization'] = 'Permitir Personalização do Utilizador';
+$lang['Allow users to delete their own comments'] = 'Permitir aos utilizadores apagar os seus comentários';
+$lang['Allow users to edit their own comments'] = 'Permitir aos utilizadores editar os seus comentários';
+$lang['Apply action'] = 'Aplicar Ação';
+$lang['automatic order'] = 'Ordenação automática';
+$lang['Batch Manager'] = 'Gestor de carga em Massa';
+$lang['Bound Theme'] = 'Ligar Tema';
+$lang['By %s'] = 'Por %s';
+$lang['By rank'] = 'Por classificação';
+$lang['Cannot delete the old permalink !'] = 'O permalink antigo não pode ser apagado!';
+$lang['Change Admin Colors'] = 'Alterar cores na Administração';
+$lang['Choose an action'] = 'Escolher uma acção';
+$lang['create a new album'] = 'criar novo album';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Criar o diretório "%s" na raiz da instalação Piwigo';
+$lang['Delete orphan tags'] = 'Apagar Etiquetas orfãs';
+$lang['delete photo'] = 'Apagar foto';
+$lang['Delete this language'] = 'Apagar este idioma';
+$lang['Delete this theme'] = 'Apagar este Tema';
+$lang['Directory does not exist'] = 'O diretório não existe';
+$lang['Download,'] = 'Descarga,';
+$lang['Drop into album'] = 'Selecionar um album';
+$lang['Duplicates'] = 'duplicados';
+$lang['Email administrators when a comment is deleted'] = 'Enviar um Email aos administradores quando um comentário for apagado';
+$lang['Email administrators when a comment is modified'] = 'Enviar um Email aos administradores quando um comentário for modificado';
+$lang['Error on file "%s" : %s'] = 'Erro no arquivo "%s" : %s';
+$lang['Everybody'] = 'Todos';
+$lang['Exif extension not available, admin should disable exif use'] = 'Extensão Exif indisponível, o administrador poderá ter descativado o uso de Exif';
+$lang['existing album'] = 'Album existente';
+$lang['Failed to write file to disk'] = 'Falhou o registo do arquivo no disco';
+$lang['File upload stopped by extension'] = 'Carga de arquivo parada por extensão';
+$lang['Forbid this language to users'] = 'Proibir este idioma aos utilizadores';
+$lang['Forbid this theme to users'] = 'Proibir este tema aos utilizadores';
+$lang['FTP + Synchronization'] = 'FTP + Sincronização';
+$lang['Get Support on Piwigo Forum'] = 'Obtenha ajuda no fórum Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dê permissões de escrita (chmod 777) à pasta "%s" situada na raiz da sua intalação Piwigo';
+$lang['Guest Settings'] = 'Definições de Visitante';
+$lang['Help Me'] = 'Ajuda';
+$lang['Hit'] = 'Visita';
+$lang['Image Quality'] = 'Qualidade da Foto';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Impossível activar este tema, o tema pai não existe: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossível activar este idioma, primeiro escolha outro idioma padrão';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossível desactivar este idioma, é necessário ter pelo menos um idioma ativo.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossível desactivar este tema, precisa de ter pelo menos um tema ativo.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Impossível apagar este tema, outros temas dependem dele: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'No arquivo php.ini o upload_max_filesize (%sB) é maior que o post_max_size (%sB). Deverá deverá alterar esta definição.';
+$lang['Inactive Languages'] = 'Idiomas Inactivos';
+$lang['Inactive Plugins'] = 'Extensões Inactivas';
+$lang['Inactive Themes'] = 'Temas Inactivos';
+$lang['include child albums'] = 'Incluír albuns filhos';
+$lang['Install on your computer,'] = 'Instalar no seu computador,';
+$lang['Installed Languages'] = 'Idiomas Instalados';
+$lang['Installed Themes'] = 'Temas Instalados';
+$lang['Instructions to use Piwigo'] = 'Instruções para usar Piwigo';
+$lang['Invert'] = 'Inverter';
+$lang['Language has been successfully installed'] = 'Idioma instalado com sucesso';
+$lang['Languages'] = 'Idiomas';
+$lang['Main Page'] = 'Página Principal';
+$lang['Make this language available to users'] = 'Tornar este idioma acessivel aos utilizadores';
+$lang['Make this theme available to users'] = 'Tornar este tema acessivel aos utilizadores';
+$lang['Manage this set of %d photos'] = 'Gerir este conjunto de %d fotos';
+$lang['Manual order'] = 'Ordem Manual';
+$lang['manual order'] = 'Ordem manual';
+$lang['Maximum height'] = 'Altura máxima';
+$lang['Maximum width'] = 'Largura máxima';
+$lang['Missing a temporary folder'] = 'Esquecida uma pasta temporária';
+$lang['Missing Plugins'] = 'Extenções em Falta';
+$lang['No file was uploaded'] = 'Nenhum carregado qualquer arquivo';
+$lang['No photo in the current set.'] = 'Nenhuma foto no conjunto actual.';
+$lang['No photo selected, %d photos in current set'] = 'Nenhuma foto seleccionada, %d fotos no conjunto actual';
+$lang['No photo selected, no action possible.'] = 'Nenhuma foto seleccionada, Impossível realizar acção.';
+$lang['None'] = 'Nenhuma';
+$lang['on the %d selected photos'] = 'Nas %d fotos seleccionadas';
+$lang['Operation in progress'] = 'Operação em progresso.';
+$lang['Order of menubar items has been updated successfully.'] = 'A ordem dos items do menu foi actualizada com sucesso.';
+$lang['Orphan tags deleted'] = 'Etiquetas orfãs removidas';
+$lang['Page end'] = 'Fim de Página';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Confirmação da Senha em falta. Por favor confirme a Palavra Passe escolhida.';
+$lang['Password is missing. Please enter the password.'] = 'Senha em falta. Por favor escreva a Senha.';
+$lang['Pending Comments'] = 'Comentários Pendentes';
+$lang['Photo Properties'] = 'Propriedades da Foto';
+$lang['Photos'] = 'Fotos';
+$lang['Piwigo Uploader'] = 'Carregar Piwigo';
+$lang['pixels'] = 'pixeis';
+$lang['Please wait...'] = 'Aguarde por favor...';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa <em>Carregador Piwigor</em>. Directamente do seu computador, pLoader prepara as suas fotos e transfere-as para a sua galeria de fotos Piwigo.';
+$lang['Privacy level set to "%s"'] = 'Nível de privacidade definido para "%s"';
+$lang['Read Piwigo Documentation'] = 'Ler Documentação Piwigo';
+$lang['Refresh photo set'] = 'Recarregar conjunto de fotos';
+$lang['Remove all filters'] = 'Remover todos os filtros';
+$lang['remove author'] = 'Remover autor';
+$lang['remove creation date'] = 'Remover data de criação';
+$lang['remove this filter'] = 'Remover este filtro';
+$lang['remove title'] = 'Remover título';
+$lang['Resize'] = 'Redimensionar';
+$lang['Save Settings'] = 'Salvar Definições';
+$lang['Select at least one comment'] = 'Selecione pelo menos um comentário';
+$lang['Select files'] = 'Seleccionar ficheiros';
+$lang['Select:'] = 'Selecionar:';
+$lang['Selection'] = 'Selecção';
+$lang['Set as default language for unregistered and new users'] = 'Definir como Linguagem por defeito para utilizadores não registados e novos utilizadores';
+$lang['Set as default theme for unregistered and new users'] = 'Definir como Tema por defeito para utilizadores não registados e novos utilizadores';
+$lang['Set author'] = 'Definir autor';
+$lang['Set creation date'] = 'Definir data de criação';
+$lang['Set title'] = 'Definir título';
+$lang['Settings'] = 'Definições';
+$lang['Start pLoader and add your photos.'] = 'Iniciar pLoader e adicionar as suas fotos.';
+$lang['Switch to clear or dark colors for administration'] = 'Mudar para claro ou escuro as cores na administração';
+$lang['The following tag was deleted'] = 'A Etiqueta seguinte foi removida';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'O arquivo enviado excede a directiva MAX_FILE_SIZE especificada no formulário HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'O arquivo enviado excede a directiva upload_max_filesize definida no ficheiro php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'O arquivo apenas foi enviado parcialmente';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os ficheiros enviados excedem a directiva post_max_sizedefinida no ficheiro php.ini: %sB';
+$lang['The whole page'] = 'Página completa';
+$lang['The whole set'] = 'Conjunto Completo';
+$lang['Theme has been successfully installed'] = 'O Tema foi instalado com sucesso';
+$lang['Themes'] = 'Temas';
+$lang['There is no other language available.'] = 'Não existe outro idioma disponível.';
+$lang['There is no other plugin available.'] = 'Não existem mais extensões disponíveis.';
+$lang['There is no other theme available.'] = 'Não existem mais temas disponíveis.';
+$lang['This theme was not designed to be directly activated'] = 'Este tema não foi desenhado para ser activado directamente';
+$lang['Tools'] = 'Ferramentas';
+$lang['Type here the author name'] = 'Escreva aqui o nome do autor';
+$lang['Type here the title'] = 'Escreva aqui o título';
+$lang['Uninstalled Plugins'] = 'Extenções não Instaladas';
+$lang['Unknown upload error'] = 'Erro de Envio desconhecido';
+$lang['unknown'] = 'Desconhecido';
+$lang['Upload Photos'] = 'Carregar Fotos';
+$lang['Uploaded Photos'] = 'Fotos carregadas';
+$lang['Visit Gallery'] = 'Visitar a galeria';
+$lang['Visit Piwigo project website'] = 'Visitar o sítio do projecto Piwigo';
+$lang['Visit plugin site'] = 'Visitar o sítio da extenção';
+$lang['Webmaster status is required.'] = 'Estatuto de Webmaster requerido.';
+$lang['Week starts on'] = 'A semana começa em';
+$lang['Who can see these photos?'] = 'Quem pode ver estas fotos?';
+$lang['Who can see this photo?'] = 'Quem pode ver esta foto?';
+$lang['You have %d orphan tags: %s.'] = 'Tem %d etiquetas orfãs: %s.';
+$lang['Your configuration settings are saved'] = 'A sua configuração foi guardada';
+$lang['Remove from caddie'] = 'Remover do carrinho';
+$lang['Themes which need upgrade'] = 'Temas que precisam ser actualizados';
+$lang['Languages which need upgrade'] = 'Idiomas que precisam ser actualizados';
+$lang['All themes are up to date.'] = 'Todos os Temas estão actualizados.';
+$lang['All plugins are up to date.'] = 'Todas as extenções estão actualizadas.';
+$lang['All languages are up to date.'] = 'Todos os Idiomas estão actualizados.';
+$lang['Visit theme site'] = 'Visitar s&iacute;tio do Tema';
+$lang['Visit language site'] = 'Visitar sitio do Idioma';
+$lang['New Version'] = 'Nova Versão';
+$lang['Obsolete Plugins'] = 'Extensões Obsoletas';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENÇÃO! Esta extensão não parece ser compatível com esta versão Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Deseja mesmo activar a extensão?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTA EXTENSÃO JÁ FAZ PARTE DO PIWIGO! DESINSTALE-A AGORA!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTA EXTENSÃO NÃO EXISTE MAS ESTÁ INSTALADA! DESINSTALE-A AGORA.';
+$lang['Simulation'] = 'Simulação';
+$lang['new'] = 'nova';
+$lang['No results'] = 'Sem resultados';
+$lang['Searching...'] = 'Procurando...';
+$lang['Type in a search term'] = 'Escreva um termo de busca';
+$lang['Learn more'] = 'Saber mais';
+$lang['Rate'] = 'Classificar';
+$lang['Average rate'] = 'Avaliação média';
+$lang['Activate icon "new" next to albums and pictures'] = 'Mostrar o icon "novo(a)" ao lado dos albums e das fotos';
+$lang['Add a criteria'] = 'Adicionar um critério';
+$lang['Deactivate all'] = 'Desactivar tudo';
+$lang['Default photos order'] = 'Ordem padrão das fotos.';
+$lang['Restore'] = 'Restaurar';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurar a configuração padrão? Perderá as configurações pesoiais !';
+$lang['Show menubar'] = 'Mostrar o menu';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Não pode definir uma ordem padrão para as fotos porque tem uma definição personalizada na sua configuração local.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Especificou <i>$conf[\'order_by\']</i> no seu arquivo de configuração local, este parâmetro esta obsoleto, apague ou renomeie para <i>$conf[\'order_by_custom\']</i> !';
+$lang['display'] = 'Mostrar';
+$lang['An error has occured during upgrade.'] = 'Ocorreu um erro durante a actualização.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Ocorreu um erro durante a extração dos ficheiros. Por favior verifique as permissões de escrita da sua instalação Piwigo.<br><a href="%s">Clique aqui para ver o relatório de erros</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo não consegue recuperar o ficheiro de actualização do servidor remoto.';
+$lang['Update in progress... Please wait.'] = 'Actualização em curso... Aguarde, por favor.';
+$lang['Update to Piwigo %s'] = 'Actualizar para Piwigo %s';
+$lang['Two updates are available'] = 'Duas actualizações disponíveis';
+$lang['This is a minor update, with only bug corrections.'] = 'Esta é uma actualização menor, apenas algumas pequenos falhas foram corrigidas.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Esta é uma actualização maior, com <a href="%s">novas e interessantes funcionalidades</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Alguns temas e extenções poderão não estar ainda disponíveis.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Pode actualizar para Piwigo %s directamente, sem actualizar antecipadamente para Piwigo %s (recomendado).';
+$lang['Save Template Directory'] = 'Salvar a pasta de Templates';
+$lang['Dump Database'] = 'Descarregar a Base de Dados';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluir dados históricos (Aviso: pode exceder o limite de memória do servidor)';
+$lang['Unable to dump database.'] = 'Impossível descarregar base de dados.';
+$lang['ERROR'] = 'ERRO';
+$lang['Update Complete'] = 'Actualização Completa';
+$lang['Piwigo Update'] = 'Actualizar Piwigo';
+$lang['Extensions Update'] = 'Actualizar Extensões';
+$lang['All extensions are up to date.'] = 'Todas as extensões estão actualizadas.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'As seguintes estensões poderão não ser compatíveis com a nova versão do Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Os seguintes temas poderão não ser compatíveis com a nova versão do Piwigo:';
+$lang['Add to caddie'] = 'Adicionar ao carrinho';
+$lang['%s has been successfully updated.'] = '%s foi atualizado com sucesso.';
+$lang['%s photos can not be regenerated'] = '%s fotos não puderam ser regeneradas';
+$lang['%s photos have been regenerated'] = '%s fotos foram regeneradas';
+$lang['(this tag will be deleted)'] = '(esta tag será excluída)';
+$lang['... or '] = '... ou ';
+$lang['Add tags'] = 'adicionar etiquetas';
+$lang['Allowed file types: %s.'] = 'tipos de arquivos permitidos: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolução máxima aproximada %dM pixels (é de %dx%d pixels).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por defeito,o Piwigo irá criar um novo tamanho a partir da versão HD (alta definição)da sua foto.';
+$lang['Confirm merge'] = 'Confirmar fusão';
+$lang['Create'] = 'Criar';
+$lang['Crop'] = 'Cortar';
+$lang['Follow Orientation'] = 'Siga a orientação';
+$lang['Graphics Library'] = 'Biblioteca Gráfica';
+$lang['Height'] = 'Altura';
+$lang['hide details'] = 'Ocultar detalhes';
+$lang['I decide to update anyway'] = 'Eu quero atualizar mesmo assim';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se não existe HD disponível e o tamanho é maior que as dimensões de redimensionamento, Piwigo moverá como HD e criará uma foto com tamanho inferior a partir desta.';
+$lang['Ignore All'] = 'Ignorar tudo';
+$lang['Ignore this update'] = 'Ignorar esta atualização';
+$lang['Last import'] = 'Última importação';
+$lang['Manage Permissions'] = 'Gerenciar permissões';
+$lang['Maximum file size: %sB.'] = 'Tamanho máximo do arquivo: %sB.';
+$lang['Merge selected tags'] = 'Misturar etiquetas selecionadas';
+$lang['Merge tags'] = 'Misturar etiquetas';
+$lang['No destination tag selected'] = 'Nenhuma etiqueta de destino selecionada';
+$lang['Photo %s of %s'] = 'Foto %s de %s';
+$lang['Photo name'] = 'Nome da foto';
+$lang['Photos generation in progress...'] = 'Generação de fotos em progresso...';
+$lang['Predefined filter'] = 'Filtro predefinido';
+$lang['Reset ignored updates'] = 'Redefinir atualizações ignoradas';
+$lang['Select an album'] = 'Selecionar um album';
+$lang['Select at least two tags for merging'] = 'Selecione pelo menos duas etiquetas para misturar';
+$lang['Select the destination tag'] = 'Selecione a etiqueta de destino';
+$lang['show details'] = 'Mostrar detalhes';
+$lang['Some upgrades are available for extensions.'] = 'Algumas atualizações estão disponíveis para extenções.';
+$lang['Start Upload'] = 'Iniciar carga';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Etiquetas <em>%s</em> misturadas ncom a etiqueta<em>%s</em>';
+$lang['Thumbnails generation in progress...'] = 'Geração de miniaturas em progresso...';
+$lang['Update All'] = 'Atualizar tudo';
+$lang['Updates'] = 'Atualizações';
+$lang['Width'] = 'Largura';
+$lang['With no album'] = 'Sem album';
+$lang['With no tag'] = 'Sem etiqueta';
+$lang['With no virtual album'] = 'Sem album virtual';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Está a usar o navegador para carga. Em vez disso, tente a via <a href="%s"> Flash</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Está a usar a via Flash para carga. Tem problemas? Em vez disso tente enviar via <a href="%s"> Navegador</a>.';
+$lang['Zoom'] = 'Zoom';
+$lang['Activate comments'] = 'Ativar comentários';
+$lang['Default comments order'] = 'Ordem padrão dos comentários';
+$lang['Photo Page'] = 'Página da foto';
+$lang['Send connection settings by email'] = 'Enviar configurações de ligação por e-mail';
+$lang['The original image quality must be a number between %d and %d'] = 'A qualidade da imagem original deve ser um número entre %d e %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'A altura original máxima deve ser um número entre %d e %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'A largura original máxima deve ser um número entre %d e %d';
+$lang['Resize after upload'] = 'Redimensionar depois de carregada';
+$lang['Original Size'] = 'Tamanho original';
+$lang['A locked gallery is only visible to administrators'] = 'Uma galeria bloqueada apenas é visível aos administradores';
+$lang['Unlock gallery'] = 'Desbloquear galeria';
+$lang['Gallery unlocked'] = 'Galeria desbloqueada';
+$lang['Notify administrators when a comment is'] = 'Notificar os administradores quando um comentário é';
+$lang['modified'] = 'Modificado';
+$lang['pending validation'] = 'Validação pendente';
+$lang['Save visits in history for'] = 'Gravar visitas no histórico de';
+$lang['simple visitors'] = 'Visitantes comuns';
+$lang['registered users'] = 'Utilizadores registados';
+$lang['administrators'] = 'Administradores';
+$lang['This album contains %d photos, added on %s.'] = 'Este album contém %d  fotos, adicionadas em %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Este album contém %d fotos, adicionadas entre %s e %s.';
+$lang['This album contains no photo.'] = 'Este album não contém fotos.';
+$lang['Not cropped correctly?'] = 'Não foi cortada corretamente?';
+$lang['Center of interest'] = 'Centro de interesse';
+$lang['Move to album'] = 'Mover para o album';
+$lang['You can activate only one mobile theme.'] = 'Você pode ativar apenas um tema móvel.';
+$lang['Automatic sort order'] = 'Ordenação na apresentação automática';
+$lang['apply automatic sort order'] = 'Aplicar ordenação automática';
+$lang['Save manual order'] = 'Gravar ordem manual';
+$lang['cancel manual order'] = 'Cancelar ordem manual';
+$lang['Cancel'] = 'Cancelar';
+$lang['List'] = 'Lista';
+$lang['Web Form'] = 'Formulário web';
+$lang['Applications'] = 'Aplicações'; 
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'A aplicação <em>Piwigo for Android</em> permite-lhe ligar do seu telefone Android ou Tablet à galeria Piwigo, criar albuns e carregar diversas fotos simultâneamente.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A aplicação <em>Piwigo for iOS</em> permite-lhe, ligação à sua galeria Piwigo a partir do seu IPhone,IPad ou IPod táctil, criar albuns e carregar fotos simultâneamente.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom é um software para fotografia desenhado para manusear larga quantidade de fotos digitais e para transferência depois de produzidas.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Abertura é uma potente ferramenta destinada a refinar imagens e gerenciar massivas livrarias em Mac.';
+$lang['Available on'] = 'Existente em';
+$lang['Available versions for'] = 'Versões existentes para';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'DigiKam é um software grátis de tratamento foto-digital para Linux, Windows e MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'Digikam é aconselhado para fotografos que querem ver, manusear, editar, tratar, organizar, atribuir tags e partilhar essas fotos.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Iphoto é, por defeito, um software para MacOSX. A Extenção de exportação Piwigo permite-lhe criar novos albuns e exportar fotos directamente de Iphoto para a galeria Piwigo.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Em Linux, instale o Shotwell com o pacote base e, depois terá de ativar a opção ativar publicação Piwigo.';
+$lang['Piwigo export plugin for Aperture'] = 'Exportar Extenção Piwigo para Aperture.';
+$lang['Piwigo export plugin for iPhoto'] = 'Extenção Piwigo de exportação para Iphoto.';
+$lang['Piwigo for Android'] = 'Piwigo para Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para  iOS (iPhone, iPad, iPod táctil)';
+$lang['Piwigo publish plugin for digiKam'] = 'Extenção de publicação Piwigo para DigiKam.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Extenção de publicação Piwigo para Lightroom.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Extenção de publicação Piwigo para Shotwell.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é um organizador (Open Source) de origem aberta para fotos digitais em Linux. É, por defeito, o organizador do Ubuntu e Fedora';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'A Extenção "Piwigo publish" permite-lhe exportar e sincronizar fotos directamente do Lightroom para a sua galeria Piwigo. ';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para expotar fotos da DigiKam para Piwwigo, apenas é necessário instalar as aplicações DigiKam e Kipi.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilizadores têm permissão automática porque pertecem ao grupo.';
+$lang['any visitor can see this album'] = 'Este album pode ser visto por qualquer visitante.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Abertura foi concebida para ser usada com simplicidade  fotografos profissionais com Iphoto.';
+$lang['custom'] = 'Personalizado.';
+$lang['Delete multiple size images'] = 'Apagar imagens de multiplos tamanhos.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Como funções inclui navegação da galeria, criaçãoo de album e carregar fotos.';
+$lang['Generate multiple size images'] = 'Gerar mimagens de multiplos tamanhos.';
+$lang['Groups and users'] = 'Grupos e utilizadores.';
+$lang['include photos with lower privacy level'] = 'Incluir fotos com baixo nível de privacidade.';
+$lang['No group is permitted to see this private album'] = 'Este album privado é interdito a grupos.';
+$lang['Permission granted for groups'] = 'Permissão garantida para grupos.';
+$lang['Permission granted for users'] = 'Permissão.';
+$lang['Permission management'] = 'Permissões de gerenciamento.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Galeria remota para Android) é uma aplicação Piwigo de Origem Aberta(GPLv3) para plataforma Android.';
+$lang['Select groups...'] = 'Selecionar grupos.';
+$lang['Select users...'] = 'Selecionar utilizadores.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'A Extenção Piwigo Export permite criar albuns e exportar fotos.';
+$lang['There is no group in this gallery.'] = 'Nesta galeria não existe grupo.';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Para ver este album, os visitantes deverão entrar como inscritos e possuir permissão para tal.';
+$lang['add a new watermark'] = 'Adicionar nova marca de água';
+$lang['Apply watermark if height is bigger than'] = 'Aplicar marca de água se a altura é maior que';
+$lang['Apply watermark if width is bigger than'] = 'Aplicar marca de água se a largura é maior que';
+$lang['bottom left corner'] = 'Canto inferior esquerdo';
+$lang['bottom right corner'] = 'Canto inferior direito';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por defeito o ponto de mais interesse é colocado no centro da foto';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamanhos de foto com recorte, como quadradas, Piwigo fará o seu melhor para incluir o ponto de maior interesse.';
+$lang['middle'] = 'Meio';
+$lang['Opacity'] = 'Opacidade';
+$lang['Photo sizes with crop'] = 'Tamanho das fotos após recorte';
+$lang['Select a file'] = 'Selecionar um arquivo';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecionar uma zona com o rato para definir outro ponto como centro de interesse';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interesse é a zona que mais chama a nossa atenção na foto';
+$lang['top left corner'] = 'Canto superior esquerdo ';
+$lang['top right corner'] = 'Canto  superior direito';
+$lang['X Position'] = 'Posição X';
+$lang['X Repeat'] = 'Repetir X';
+$lang['Y Position'] = 'Posição Y';
+$lang['Multiple Size'] = 'Tamanho multiplo';
+$lang['%d day'] = '%d dia';
+$lang['%d days'] = '%d dias';
+$lang['%d hour'] = '%d hora';
+$lang['%d hours'] = '%d horas';
+$lang['%d minute'] = '%d minuto';
+$lang['%d minutes'] = '%d minutos';
+$lang['%d month'] = '%d mês';
+$lang['%d months'] = '%d mêses';
+$lang['%d second'] = '%d segundo';
+$lang['%d seconds'] = '%d segundos';
+$lang['%d year'] = '%d ano';
+$lang['%d years'] = '%d anos';
+$lang['%s ago'] = '%s atrás';
+$lang['%s in the future'] = '%s no futuro';
+$lang['Added by %s'] = 'Adicionado por %s';
+$lang['Numeric identifier : %d'] = 'Identificador numérico: %d';
+$lang['Original file : %s'] = 'Arquivo original: %s';
+$lang['Posted %s on %s'] = 'Colocada(s) %s em %s';
+$lang['Rated %d times, score : %.2f'] = 'Avaliada %d vezes, classificação: %.2f';
+$lang['Sharpen'] = 'Refinar';
+$lang['Visited %d times'] = 'Visitada %d vezes';
+$lang['Watermark'] = 'Marca de água';
+$lang['%d week'] = '%d semana';
+$lang['%d weeks'] = '%d semanas';
+$lang['Edit photo'] = 'Editar foto';
+$lang['create a new site'] = 'Criar novo sitio';
+$lang['No order field selected'] = 'Nenhum critério de ordenação seleccionado ';
+$lang['Duplicate selected tags'] = 'Duplicar as etiquetas selecionadas';
+$lang['Name of the duplicate'] = 'Nome do duplicado';
+$lang['Source tag'] = 'Origem da etiqueta';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Etiqueta "%s" é agora um duplicado de "%s"';
+$lang['Landscape'] = 'Paisagem';
+$lang['Manage photos'] = 'Organizar fotos';
+$lang['Minimum height'] = 'Altura mínima';
+$lang['Minimum width'] = 'Largura mínima';
+$lang['Number of albums per page'] = 'Número de albuns por página';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Retrato';
+$lang['View in gallery'] = 'Ver na galeria';
+$lang['Ratio'] = 'Rácio';
+$lang['between %.2f and %.2f'] = 'entre %.2f e %.2f';
+$lang['between %d and %d pixels'] = 'entre %d e %d pixels';
+$lang['Duplicate'] = 'Duplicar';
+$lang['Manage the members'] = 'Gerir os membros';
+$lang['Merge selected groups'] = 'Omitir os grupos selecionados';
+$lang['No group selected, no action possible.'] = 'Não existe grupo selecionado, não é possivel qualquer ação';
+$lang['No members to manage'] = 'Sem membros para gerir';
+$lang['Please select at least two groups'] = 'Selecione, por favor, pelo menos dois grupo.';
+$lang['Rename'] = 'Renomear';
+$lang['This group will be set to default'] = 'Este grupo será usado como padrão';
+$lang['This group will be unset to default'] = 'Este grupo não será mais usado como padrão';
+$lang['Type here the name of the new group'] = 'Escreva aqui o nome do novo grupo';
+$lang['Purge user cache'] = 'Purgar cache de utilizador';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensões desta foto serão reduzidas para %dx%d pixels';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimencionar depois de carregar, devido ao uso de GD como livraria gráfica,está desativado. ';
+$lang['Select at least one tag'] = 'Selecionar no mínimo uma etiqueta';
+$lang['Basic settings'] = 'definições básicas';
+$lang['General'] = 'Geral';
+$lang['Mail theme'] = 'Tema do mail';
+$lang['(filtered from %s total users)'] = '(filtrado de %s utilizadores totais)';
+$lang['Show %s users'] = 'Mostrar %s utilizadores';
+$lang['%d of %d users selected'] = '%d de %d utilizadores selecionados';
+$lang['All %d users are selected'] = 'Todos os %d utilizadores estão selecionados';
+$lang['Change password'] = 'Alterar a senha';
+$lang['Change username'] = 'Alterar o nome de utilizador';
+$lang['Last visit on %s, %s.'] = 'Última visita em  %s, %s.';
+$lang['Loading...'] = 'Carregando';
+$lang['No matching user found'] = 'Não foram encontrados utilizadores que correspondam';
+$lang['No user selected of %d users'] = 'Em %d utilizadores não foi nenhum selecionado';
+$lang['No user selected, no action possible.'] = 'Sem utilizador selecionado não é possivel qualquer ação';
+$lang['Password updated'] = 'Senha atualizada';
+$lang['Registered on %s, %s.'] = 'Registado em %s, %s.';
+$lang['Showing %s to %s of %s users'] = 'Mostrando %s para %s de %s utilizadores';
+$lang['Update user'] = 'Atualizar o utilizador';
+$lang['User %s added'] = 'Utilizador %s adicionado';
+$lang['User %s updated'] = 'Utilizador %s atualizado';
+$lang['Users modified'] = 'Utilizadores modificados';
+$lang['on the %d selected users'] = 'Em %d utilizadores selecionados';
+?>
Index: /tags/2.6.0RC1/language/pt_PT/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/common.lang.php	(revision 25596)
@@ -0,0 +1,426 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: PortuguÃªs [PT]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=432
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'PortuguÃªs';
+$lang_info['country'] = 'Portugal';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'pt';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album actualizado';
+$lang['%d albums updated'] = '%d albums actualizados';
+$lang['%d comment to validate'] = '%d comentÃ¡rio para validar';
+$lang['%d comments to validate'] = '%d comentÃ¡rios para validar';
+$lang['%d new comment'] = '%d novo comentÃ¡rio';
+$lang['%d new comments'] = '%d novos comentÃ¡rios';
+$lang['%d comment'] = '%d comentÃ¡rio';
+$lang['%d comments'] = '%d comentÃ¡rios';
+$lang['%d hit'] = 'Visto %d vez';
+$lang['%d hits'] = 'visto %d vezes';
+$lang['%d new photo'] = '%d foto nova';
+$lang['%d new photos'] = '%d fotos novas';
+$lang['%d new user'] = '%d novo utilizador ';
+$lang['%d new users'] = '%d novos utilizadores ';
+$lang['About'] = 'Sobre';
+$lang['All tags'] = 'Todas as etiquetas';
+$lang['Any tag'] = 'Qualquer etiqueta';
+$lang['At least one listed rule must be satisfied.'] = 'No mínimo, um dos critérios deverá ser satisfeito.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Albuns';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Fechar a janela';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS completo (fotos e comentários)';
+$lang['Confirm Password'] = 'Confirmar a senha';
+$lang['Connection settings'] = 'Definições de ligação';
+$lang['Login'] = 'Entrar';
+$lang['Contact webmaster'] = 'Contactar o webmaster';
+$lang['Create a new account'] = 'Abrir uma conta nova';
+$lang['Created on'] = 'Aberta em';
+$lang['Creation date'] = 'Data de abertura';
+$lang['Current password is wrong'] = 'A Senha actual está errada';
+$lang['Dimensions'] = 'Dimensões';
+$lang['Display'] = 'Mostrar';
+$lang['Each listed rule must be satisfied.'] = 'Todos os critérios listados devem ser satisfeitos';
+$lang['Email address is missing. Please specify an email address.'] = 'Esqueceu o endereço de email. Por favor indique um email.';
+$lang['Email address'] = 'EndereÃ§o de email';
+$lang['Enter your personnal informations'] = 'Introduza os seus dados pessoais';
+$lang['Error sending email'] = 'Erro durante o envio do email';
+$lang['File name'] = 'Nome do arquivo';
+$lang['File'] = 'Arquivo';
+$lang['Filesize'] = 'Tamanho do arquivo';
+$lang['Filter and display'] = 'Filtrar e mostrar';
+$lang['Filter'] = 'Filtro';
+$lang['Forgot your password?'] = 'Esqueceu a Senha?';
+$lang['Go through the gallery as a visitor'] = 'Ver a galeria como visitante';
+$lang['Help'] = 'Ajuda';
+$lang['Identification'] = 'IdentificaÃ§Ã£o';
+$lang['Photos only RSS feed'] = 'RSS de fotos';
+$lang['Keyword'] = 'Palavra chave';
+$lang['Links'] = 'Links';
+$lang['N/A'] = 'NÃ£o disponÃ­vel';
+$lang['New on %s'] = 'Novo no %s';
+$lang['Notification'] = 'NotificaÃ§Ã£o';
+$lang['Number of items'] = 'NÃºmero de items';
+$lang['Original dimensions'] = 'DimensÃµes originais';
+$lang['Password forgotten'] = 'Senha esquecida';
+$lang['Password'] = 'Senha';
+$lang['Post date'] = 'Data de PublicaÃ§Ã£o';
+$lang['Posted on'] = 'Publicado em';
+$lang['Profile'] = 'Perfil';
+$lang['Quick connect'] = 'LigaÃ§Ã£o RÃ¡pida';
+$lang['RSS feed'] = 'RSS';
+$lang['Register'] = 'Registar';
+$lang['Registration'] = 'Registo';
+$lang['Related tags'] = 'Etiquetas relacionados';
+$lang['Reset'] = 'RecomeÃ§ar';
+$lang['Retrieve password'] = 'Recuperar a Senha';
+$lang['Search rules'] = 'CritÃ©rios de pesquisa';
+$lang['Search tags'] = 'Pesquisar as estiquetas';
+$lang['Search'] = 'Pesquisar';
+$lang['display available tags'] = 'Mostrar etiquetas disponÃ­veis';
+$lang['Since'] = 'Desde ';
+$lang['Sort by'] = 'Ordenar por';
+$lang['Sort order'] = 'Ordem de exibiÃ§Ã£o';
+$lang['Tag'] = 'Etiqueta';
+$lang['Tags'] = 'Etiquetas';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'O RSS notifica-o(a) dos eventos da galeria : novas imagens, albums actualizados, novos comentÃ¡rios, utilizadores, etc. Use um leitor de RSS para subscrever.';
+$lang['Unknown feed identifier'] = 'identificador de RSS desconhecido';
+$lang['User comments'] = 'ComentÃ¡rios de utilizador';
+$lang['Username'] = 'Nome de utilizador';
+$lang['Visits'] = 'Visitas';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Semana %d';
+$lang['About Piwigo'] = 'Sobre Piwigo';
+$lang['You are not authorized to access the requested page'] = 'NÃ£o tem permissÃµes para aceder Ã  pÃ¡gina solicitada';
+$lang['add this photo to your favorites'] = 'Adicionar aos favoritos';
+$lang['Administration'] = 'AdministraÃ§Ã£o';
+$lang['all'] = 'tudo';
+$lang['ascending'] = 'crescente';
+$lang['author(s) : %s'] = 'autor(es) : %s';
+$lang['Expand all albums'] = 'Expandir todos os albums';
+$lang['posted after %s (%s)'] = 'Publicada depois de %s (%s)';
+$lang['posted before %s (%s)'] = 'publicada antes de %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'publicada entre %s (%s) e  %s (%s)';
+$lang['posted on %s'] = 'Publicada em %s';
+$lang['Best rated'] = 'Melhor classificadas';
+$lang['display best rated photos'] = 'Mostrar as fotos com melhor classificaÃ§Ã£o';
+$lang['Calendar'] = 'CalendÃ¡rio';
+$lang['All'] = 'Tudo';
+$lang['display each day with photos, month per month'] = 'Mostrar cada dia com fotos, mÃªs a mÃªs';
+$lang['View'] = 'Ver';
+$lang['chronology_monthly_calendar'] = 'CalendÃ¡rio mensal';
+$lang['chronology_monthly_list'] = 'Lista mensal';
+$lang['chronology_weekly_list'] = 'Lista semanal';
+$lang['Click here if your browser does not automatically forward you'] = 'Clique aqui se o seu navegador nÃ£o o redireccionar automaticamente.';
+$lang['comment date'] = 'Data do comentÃ¡rio';
+$lang['Comment'] = 'Comentar';
+$lang['Your comment has been registered'] = 'O seu comentÃ¡rio foi registado.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistema anti-abuso : Por favor, espere um momento antes de tentar escrever um novo comentÃ¡rio';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'O seu comentÃ¡rio NÃO pÃ´de ser registado porque nÃ£o passou pelas regras de validaÃ§Ã£o';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Um administrador deve autorizar o seu comentÃ¡rio para que ele fique visÃ­vel a todos.';
+$lang['This login is already used by another user'] = 'Esta entrada jÃ¡ Ã© usada por outro utilizador.';
+$lang['Comments'] = 'ComentÃ¡rios';
+$lang['Add a comment'] = 'Adicionar um comentÃ¡rio';
+$lang['created after %s (%s)'] = 'Criado depois de %s (%s)';
+$lang['created before %s (%s)'] = 'Criado antes de %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'Criado entre  %s (%s) e  %s (%s)';
+$lang['created on %s'] = 'Criado em %s';
+$lang['Customize'] = 'Personalizar';
+$lang['Your Gallery Customization'] = 'PersonalizaÃ§Ã£o da sua galeria';
+$lang['day'][0] = 'Domingo';
+$lang['day'][1] = 'Segunda-feira';
+$lang['day'][2] = 'TerÃ§a-feira';
+$lang['day'][3] = 'Quarta-feira';
+$lang['day'][4] = 'Quinta-eira';
+$lang['day'][5] = 'Sexta-feira';
+$lang['day'][6] = 'SÃ¡bado';
+$lang['Default'] = 'PadrÃ£o';
+$lang['delete this photo from your favorites'] = 'Remover esta foto das suas favoritas';
+$lang['Delete'] = 'Apagar';
+$lang['descending'] = 'decrescente';
+$lang['Download'] = 'Descarregar';
+$lang['Download this file'] = 'Descarregar deste ficheiro';
+$lang['edit'] = 'Editar';
+$lang['wrong date'] = 'data errada';
+$lang['excluded'] = 'ExcluÃ­das';
+$lang['Your favorites'] = 'Meus favoritos';
+$lang['display your favorites photos'] = 'Mostrar as minhas imagens favoritas';
+$lang['Favorites'] = 'Favoritos';
+$lang['First'] = 'Primeira pÃ¡gina';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'A galeria estÃ¡ bloqueada para manutenÃ§Ã£o. Por favor, volte mais tarde.';
+$lang['Page generated in'] = 'PÃ¡gina gerada em';
+$lang['guest'] = 'Visitante';
+$lang['Hello'] = 'OlÃ¡';
+$lang['available for administrators only'] = 'disponÃ­vel apenas para os administradores';
+$lang['display this album'] = 'mostrar este album';
+$lang['display last user comments'] = 'Ver os Ãºltimos comentÃ¡rios dos utilizadores';
+$lang['customize the appareance of the gallery'] = 'Personalisar a aparÃªncia da galeria';
+$lang['search'] = 'Pesquisar';
+$lang['Home'] = 'InÃ­cio';
+$lang['in this album'] = 'neste album';
+$lang['in %d sub-album'] = 'no sub-album %d ';
+$lang['in %d sub-albums'] = 'nos sub-albums %d ';
+$lang['included'] = 'incluÃ­dos';
+$lang['Invalid password!'] = 'Senha invÃ¡lida!';
+$lang['Language'] = 'Idioma';
+$lang['last %d days'] = '%d Ãºltimos dias';
+$lang['Last'] = 'Ãltima pÃ¡gina';
+$lang['Logout'] = 'Sair';
+$lang['obligatory'] = 'mandatÃ¡rio';
+
+
+
+
+$lang['display a calendar by creation date'] = 'Mostra um calendÃ¡rio ordenado pela data de criaÃ§Ã£o';
+$lang['display all photos in all sub-albums'] = 'Mostra todas as fotos em todos os sub-albuns';
+$lang['return to normal view mode'] = 'Voltar ao modo normal de visionamento';
+$lang['display a calendar by posted date'] = 'Mostrar um calendÃ¡rio por data em que as imagens foram carregadas';
+$lang['month'][10] = 'Outubro';
+$lang['month'][11] = 'Novembro';
+$lang['month'][12] = 'Dezembro';
+$lang['month'][1] = 'Janeiro';
+$lang['month'][2] = 'Fevereiro';
+$lang['month'][3] = 'MarÃ§o';
+$lang['month'][4] = 'Abril';
+$lang['month'][5] = 'Maio';
+$lang['month'][6] = 'Junho';
+$lang['month'][7] = 'Julho';
+$lang['month'][8] = 'Agosto';
+$lang['month'][9] = 'Setembro';
+$lang['Most visited'] = 'Mais visitadas';
+$lang['display most visited photos'] = 'Mostra as fotos mais vistadas';
+$lang['The number of photos per page must be a not null scalar'] = 'O nÃºmero de fotos por pÃ¡gina deve ser um nÃºmero que nÃ£o 0';
+$lang['Number of photos per page'] = 'NÃºmero de fotos por pÃ¡gina';
+$lang['Unknown identifier'] = 'Identificador desconhecido';
+$lang['New password'] = 'Nova senha';
+$lang['Rate this photo'] = 'Classifique esta foto';
+$lang['Next'] = 'Seguinte';
+$lang['no rate'] = 'Sem avaliaÃ§Ã£o';
+$lang['Photos posted within the last %d day.'] = 'Fotos adicionadas no Ãºltimo dia %d.';
+$lang['Photos posted within the last %d days.'] = 'Fotos adicionadas nos Ãºltimos dias %d';
+$lang['password updated'] = 'Senha actualizada';
+$lang['Recent period must be a positive integer value'] = 'O perÃ­odo de tempo deve ser um nÃºmero inteiro positivo';
+$lang['photo'] = 'Foto';
+$lang['Click on the photo to see it in high definition'] = 'Clique na foto para vÃª-la em alta definiÃ§Ã£o';
+$lang['Show file metadata'] = 'Mostrar os metadados do arquivo.';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = 'PreferÃªncias';
+$lang['Previous'] = 'PrÃ©via';
+$lang['Random photos'] = 'Fotos aleatÃ³rias';
+$lang['display a set of random photos'] = 'Exibir um conjunto aleatÃ³rio de fotos';
+$lang['Recent albums'] = 'Albuns recentes';
+$lang['display recently updated albums'] = 'Exibir albums actualizados recentemente.';
+$lang['Recent period'] = 'PerÃ­odo recente';  
+$lang['Recent photos'] = 'Fotos recentes';
+$lang['display most recent photos'] = 'Mostrar as fotos mais recentes';
+$lang['Redirection...'] = 'A redireccionar...';
+$lang['Please, enter a login'] = 'Por favor, escreva um nome de utilizador';
+$lang['login mustn\'t end with a space character'] = 'O nome de utilizador nÃ£o deve terminar com um espaÃ§o';
+$lang['login mustn\'t start with a space character'] = 'O nome de utilizador nÃ£o deve comeÃ§ar com um espaÃ§o';
+$lang['this login is already used'] = 'Este nome de utilizador jÃ¡ existe';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'O formato do email deve ser do tipo: xxx@yyy.eee (exemplo : jack@altern.org)';
+$lang['Auto login'] = 'InÃ­ciar sessÃ£o automÃ¡ticamente';
+$lang['remove this tag from the list'] = 'Remover esta etiqueta da lista';
+$lang['representative'] = 'Foto de Capa';
+$lang['Search for Author'] = 'Pesquisar por autor';
+$lang['Search in albums'] = 'Pesquisar nos albums';
+$lang['Search by date'] = 'Pesquisar por data';
+$lang['Date'] = 'Data';
+$lang['End-Date'] = 'Data final';
+$lang['Kind of date'] = 'Tipo de data';
+$lang['Search for words'] = 'Pesquisar por palavras';
+$lang['Search for all terms'] = 'Pesquisar todos os termos';
+$lang['Search for any term'] = 'Pesquisar qualquer um dos termos';
+$lang['Empty query. No criteria has been entered.'] = 'Pesquisa vazia. NÃ£o indicou qualquer critÃ©rio.';
+$lang['Search results'] = 'Resultados da pesquisa';
+$lang['Search in sub-albums'] = 'Pesquisar nos sub-albums';
+$lang['searched words : %s'] = 'Palavras pesquisadas : %s';
+$lang['Contact'] = 'Contacto';
+$lang['set as album representative'] = 'Escolher como capa do album';
+$lang['Show number of comments'] = 'Mostrar o nÃºmero de comentÃ¡rios';
+$lang['Show number of hits'] = 'Mostrar o nÃºmero de vizualisaÃ§Ãµes';
+$lang['slideshow'] = 'Slideshow';
+$lang['stop the slideshow'] = 'Parar o Slideshow';
+$lang['Specials'] = 'Especiais';
+$lang['SQL queries in'] = 'Pesquisas SQL em';
+$lang['display only recently posted photos'] = 'Mostrar apenas as fotos publicadas recentemente';
+$lang['return to the display of all photos'] = 'Voltar a visionar todas as fotos';
+$lang['the beginning'] = 'O comeÃ§o';
+$lang['Thumbnails'] = 'Miniaturas';
+$lang['Menu'] = 'Menu';
+$lang['A comment on your site'] = 'Um comentÃ¡rio no seu sitio';
+$lang['today'] = 'hoje';
+$lang['Update your rating'] = 'Actualizar a sua classificaÃ§Ã£o';
+$lang['the username must be given'] = 'O nome de utilizador Ã© obrigatÃ³rio';
+$lang['useful when password forgotten'] = 'Ãºtil em caso de esquecer a senha';
+$lang['Quick search'] = 'Pesquisa RÃ¡pida';
+$lang['Connected user: %s'] = 'Utilizador ligado: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Navegador: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'ComentÃ¡rio: %s';
+$lang['Comment by %s'] = 'ComentÃ¡rio de %s';
+$lang['User: %s'] = 'Utilizador: %s';
+$lang['Email: %s'] = 'Email: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registo de %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Status incorrecto para visitante, deverÃ¡ ser usado o status por defeito. Por favor, contacte o administrador do site.';
+$lang['this email address is already in use'] = 'Este email jÃ¡ estÃ¡ em uso';
+$lang['Album results for'] = 'Resultados de album para';
+$lang['Tag results for'] = 'Resultados de etiqueta para';
+$lang['from %s to %s'] = 'de %s a %s';
+$lang['Play of slideshow'] = 'Iniciar o Slideshow';
+$lang['Pause of slideshow'] = 'Pausar o Slideshow';
+$lang['Repeat the slideshow'] = 'Repetir o Slideshow';
+$lang['Not repeat the slideshow'] = 'NÃ£o repetir o Slideshow';
+$lang['Reduce diaporama speed'] = 'Diminuir a velocidade do Slideshow';
+$lang['Accelerate diaporama speed'] = 'Aumentar a velocidade do Slideshow';
+$lang['Submit'] = 'Submeter';
+$lang['Yes'] = 'Sim';
+$lang['No'] = 'NÃ£o';
+$lang['%d photo']='%d foto';
+$lang['%d photos']='%d fotos';
+$lang['%d photo is also linked to current tags'] = '%d foto estÃ¡ tambÃ©m ligada Ã s etiquetas actuais';
+$lang['%d photos are also linked to current tags'] = '%d fotos estÃ£o tambÃ©m ligadas Ã s etiquetas actuais';
+$lang['display photos linked to this tag'] = 'Ver as fotos ligadas a esta etiqueta';
+$lang['photos posted during the last %d days'] = 'Fotos publicadas durante os Ãºltimos %d dias';
+$lang['Piwigo Help'] = 'Ajuda Piwigo';
+$lang['Rank'] = 'PosiÃ§Ã£o';
+$lang['group by letters'] = 'Agrupar por letras';
+$lang['letters'] = 'letras';
+$lang['show tag cloud'] = 'Mostar a nÃºvem de etiquetas';
+$lang['cloud'] = 'nuvem';
+$lang['Are you sure?'] = 'Tem a certeza?';
+$lang['Reset to default values'] = 'Repor valores padrÃ£o';
+$lang['delete all photos from your favorites'] = 'apagar todas as fotos das suas favoritas';
+$lang['Sent by'] = 'Enviado por';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Os cookies estÃ£o bloqueados ou nÃ£o sÃ£o suportados pelo seu navegador. DeverÃ¡ activar os cookies para Iniciar SessÃ£o.';
+$lang['Edit a comment'] = 'Editar um comentÃ¡rio';
+$lang['(!) This comment requires validation'] = '(!) Este cometÃ¡rio requer validaÃ§Ã£o';
+$lang['Welcome'] = 'Bem-vindo(a)!';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bem-vindo(a) Ã  sua galeria Piwigo!';
+$lang['... or browse your empty gallery'] = '... ou navegue a sua galeria vazia';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ou, desactivar esta mensagem por favor, encontrarei o caminho por mim mesmo.';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'OlÃ¡ %s, a sua galeria Piwigo estÃ¡ vazia!';
+$lang['I want to add photos'] = 'Eu quero adicionar fotos';
+$lang['Manage this user comment: %s'] = 'Gerir comentÃ¡rios deste utilizador: %s';
+$lang['This author modified following comment:'] = 'Este autor modificou o seguinte comentÃ¡rio:';
+$lang['This author removed the comment with id %d'] = 'Este autor removeu o comentÃ¡rio com o ID %d';
+$lang['html tags are not allowed in login'] = 'Etiquetas HTML nÃ£o sÃ£o permitidas na entrada';
+$lang['%d rates'] = '%d avaliaÃ§Ãµes';
+$lang['Rating score'] = 'PontuaÃ§Ã£o na avaliaÃ§Ã£o';
+$lang['Invalid username or email'] = 'Nome de utilizador ou email invÃ¡lido(s)';
+$lang['Password reset is not allowed for this user'] = 'A reinicializaÃ§Ã£o da senha nÃ£o Ã© permitida para este utilizador';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Utilizador "%s" nÃ£o tem email, a reinicializaÃ§Ã£o da Senha nÃ£o Ã© possÃ­vel';
+$lang['Someone requested that the password be reset for the following user account:'] = 'AlguÃ©m pediu a reinicializaÃ§Ã£o da senha para a conta do seguinte utilizador :';
+$lang['Username "%s" on gallery %s'] = 'Nome de utilizador "%s" na galeria %s';
+$lang['To reset your password, visit the following address:'] = 'Para reinicializar a sua senha, siga o endereÃ§o seguinte :';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Se for um erro, apenas deverÃ¡ ignorar este email e nada acontecerÃ¡.';
+$lang['Password Reset'] = 'Senha reinicializada';
+$lang['Check your email for the confirmation link'] = 'Verifique o seu email para clicar no link de confirmaÃ§Ã£o';
+$lang['Invalid key'] = 'Chave invÃ¡lida';
+$lang['The passwords do not match'] = 'As Senhas nÃ£o correspondem';
+$lang['Your password has been reset'] = 'A sua senha foi reinicializada';
+$lang['Return to home page'] = 'Voltar ao inicio';
+$lang['Please enter your username or email address.'] = 'Por Favor escreva o seu nome de utilizador ou o seu email.';
+$lang['You will receive a link to create a new password via email.'] = 'Vai receber um link para criar uma nova senha por email.';
+$lang['Username or email'] = 'nome de utilizador ou email';
+$lang['Change my password'] = 'Alterar a minha senha';
+$lang['Enter your new password below.'] = 'Escreva abaixo a sua nova senha.';
+$lang['Edit'] = 'Editar';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Hello %s,'] = 'OlÃ¡ %s,';
+$lang['Send my connection settings by email'] = 'Enviar minhas configuraÃ§Ãµes de entrada por e-mail';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registado com sucesso! VocÃª receberÃ¡, em breve, um e-mail com as suas configuraÃ§Ãµes de entrada. Bem-vindo(a)!';
+$lang['Username modification'] = 'ModificaÃ§Ã£o de nome de utilizador';
+$lang['Your username has been successfully changed to : %s'] = 'Seu nome de utilizador foi alterado com sucesso para : %s';
+$lang['square'] = 'Quadrado';
+$lang['thumb'] = 'Miniatura';
+$lang['small'] = 'Pequeno';
+$lang['medium'] = 'MÃ©dio';
+$lang['large'] = 'Grande';
+$lang['xlarge'] = 'XL MÂ´dia';
+$lang['xxlarge'] = 'XXL - Grande';
+$lang['Original'] = 'Original';
+$lang['Thank you for registering at %s!'] = 'Obrigado por se registrar no %s!';
+$lang['Here are your connection settings'] = 'Aqui estÃ£o as suas definiÃ§Ãµes de entrada';
+$lang['Password: %s'] = 'Senha: %s';
+$lang['Username: %s'] = 'Nome de utilizador: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Se vocÃª acha que recebeu este e-mail por engano, por favor contacte-nos em %s';
+$lang['Photo sizes'] = 'Tamanhos da fotografia';
+$lang['Show oldest comments first'] = 'Mostrar comentÃ¡rios mais antigos primeiro';
+$lang['Show latest comments first'] = 'Mostrar comentÃ¡rios mais recentes primeiro';
+$lang['View in'] = 'Visualizar em';
+$lang['Mobile'] = 'MÃ³vel';
+$lang['Desktop'] = 'Ãrea de Trabalho'; 
+
+$lang['2small'] = 'XXS - Pequenissimo';
+$lang['Date created, new &rarr; old'] = 'Data de abertura, recente &rarr; antiga';
+$lang['Date created, old &rarr; new'] = 'Data de abertura, antiga &rarr; nova';
+$lang['Date posted, new &rarr; old'] = 'Data de publicaÃ§Ã£o, recente &rarr; antiga';
+$lang['Date posted, old &rarr; new'] = 'Data de publicaÃ§Ã£o, antiga &rarr; recente';
+$lang['File name, A &rarr; Z'] = 'Nome do arquivo, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Nome do arquivo, Z &rarr; A';
+$lang['Manual sort order'] = 'Ordenar manualmente';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificador numÃ©rico, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificador numÃ©rico, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'TÃ­tulo da foto, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'TÃ­tulo da foto,Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'NÃ­vel de avaliaÃ§Ã£o, elevado &rarr; baixo';
+$lang['Rating score, low &rarr; high'] = 'NÃ­vel de avaliaÃ§Ã£o, baixo &rarr; elevado';
+$lang['Visits, high &rarr; low'] = 'Visitas, elevadas &rarr; parcas';
+$lang['Visits, low &rarr; high'] = 'Visitas, parcas &rarr; elevadas';
+$lang['xsmall'] = 'XS - Pequena';
+$lang['%d rate'] = '%d avaliaÃ§Ã£o';
+$lang['Bad request'] = 'MÃ¡ solicitaÃ§Ã£o';
+$lang['Forbidden'] = 'Proibido';
+$lang['Page not found'] = 'PÃ¡gina nÃ£o encontrada';
+$lang['Permalink for album not found'] = 'NÃ£o foi encontrada a LigaÃ§Ã£o do link ao album ';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo encontrou um erro irreparÃ¡vel';
+$lang['Requested album does not exist'] = 'O album solicitado nÃ£o existe';
+$lang['Requested tag does not exist'] = 'NÃ£o existe a etiqueta solicitada';
+$lang['Email address is mandatory'] = 'O endereÃ§o Email Ã© obrigatÃ³rio';
+$lang['Username is mandatory'] = 'O nome de Utilizador Ã© obrigatÃ³rio';
+$lang['mandatory'] = 'obrigatÃ³rio';
+$lang['Website'] = 'Sitio na net';
+$lang['Your website URL is invalid'] = 'A URL do sitio Ã© invÃ¡lida';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Primeira pÃ¡gina';
+$lang['Go back to the album'] = 'Voltar ao album';
+$lang['Last Page'] = 'Ãltima pÃ¡gina';
+$lang['Password is missing. Please enter the password.'] = 'Senha em falta. Por favor escreva a Senha.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Confirmação da Senha em falta. Por favor confirme a Palavra Passe escolhida.';
+$lang['%d photos per page'] = '%d Fotos por pÃ¡gina';
+$lang['Theme'] = 'Tema';
+?>
Index: /tags/2.6.0RC1/language/pt_PT/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,111 @@
+<h2>Editar o álbum </h2>
+
+<h3> Informações </h3>
+
+<ul>
+
+  <li><strong>nome</strong>: renomear o album (virtualmente para um album físico).</li>
+
+  <li><strong> descrição </strong>: pequeno texto dando uma ideia do conteúdo do album,
+  Este texto aparecera em baixo da página das miniaturas.</li>
+
+</ul>
+
+<h3>Mover</h3>
+
+<p>Se o album é virtual, pode move-lo. Mover um album significa alterar o seu album pai movendo-o para outro.</p>
+
+<h3>Opções</h3>
+
+<ul>
+
+  <li><strong>tipo de acesso</strong>: Gestão das permissões. Se tornar um album privado, todos os albuns filhos tornam-se privados. Se tornar um álbum publico, todos os álbuns pais tornam-se públicos.</li>
+
+  <li><strong>Bloquear</strong>: O album e todos os sub-albuns serão temporariamente desactivados para manutenção.</li>
+
+  <li><strong>Comentários</strong>: Autoriza os utilizadores a comentar a fotos deste album.</li>
+
+</ul>
+
+<p> Também pode gerir esta opção pelas "propriedades" (ecrãs <span
+class="pwgScreen"> Comentários </span>, <span class="pwgScreen">Bloquear</span>,
+<span class="pwgScreen"> Publico/Privativo</span>, <span
+class="pwgScreen">Representante</span> Disponível à partir de <span
+class="pwgScreen"> Administração &raquo; Albuns; Propriedades </span>).</p>
+
+<h3>Ordem de triagem</h3>
+
+<p>Utilizar o ordem de triagem por defeito das fotos.</p>
+
+<p>Indicar se a triagem também se aplica aos sub-albuns.</p>
+
+<p>Seleccione a ordem de triagem para utilizar neste album.</p>
+<ul>
+<li><strong>Data de criação </strong>: Data de tomada de vista</li>
+<li><strong>Data de adição </strong>: Data de sincronização</li>
+<li><strong>Nota media (*)</strong>: Esta media pode ser modificada pela nota do visitante</li>
+<li><strong>Mais visitadas (*)</strong>: A visita corrente pode modificara ordem das mais vistas</li>
+<li><strong>Nome do ficheiro</strong>: Nome dado na área de informações</li>
+<li><strong>Id</strong>: Id interno (Os álbuns recentes têm um Id maior que os anteriores.</li>
+
+</ul>
+<p><strong>(*)</strong> Atenção: Verifique estas triagens que podem dar resultados não previstos.</p>
+
+
+<h3>Representante</h3>
+
+<p>O representante de um album é a miniatura na página principal (<span class="pwgScreen">category.php</span>) para representar o album quando  só contem sob-albuns e nenhuma foto directa (como raiz).</p>
+
+<p>Existe 4 modos diferentes de escolher o representante de um album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen"> Página das fotos</span>: um dos botões de acção permite escolher a foto corrente como representante do album. Este botão só é acessível aos administradores.</li>
+
+  <li><span class="pwgScreen">Modificar as informações de uma foto</span> na administração. Este ecrã pode ser atingido à partir de <span
+  class="pwgScreen">picture.php</span> ou <span class="pwgScreen">Gestão de lotes</span> no <em>modo unitário </em>. Veja a ajuda de este ecra para detalhes.</li>
+
+  <li><span class="pwgScreen"> Administração &raquo; Álbuns &raquo; Propriedades,
+  Representante</span>. Veja a ajuda de este ecra para detalhes.</li>
+
+  <li><span class="pwgScreen"> Editar um album </span> (o presente ecrã).</li>
+
+</ul>
+
+<p>A escolha de um representante depende do parâmetro de configuração <code>allow_random_representative</code> (ver <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Por defeito (<code>allow_random_representative</code> a falso),
+cada album contendo ao menos uma foto é representado pelo um elemento fixo. após fixado (à criação do album), o representante muda unicamente  quando o administrador o pedir. Se o representante não convir, pode pedir para <strong>Encontrar um novo representante ao calha</strong>.</p>
+
+<p>Se o parâmetro de configuração <code>allow_random_representative</code> esta posicionado em true, o album contendo fotos pode não ter um representante fixo. Utilize o botão <strong>Suprimir representante </strong>.</p>
+
+<p>Se o album só conter sob-albuns e nenhuma foto, pode todavia ser representado por qualquer foto graças ao ecrã <span class="pwgScreen">Modificar as informações de uma foto</span>. A única opção no ecrã corrente é o botão <strong>Suprimir o representante</strong>.</p> 
+
+<h3>Associar todas as fotos de um album à outro album</h3>
+
+<ul>
+
+<li><strong>Nome virtual do album </strong>: Nome do novo album para criar, todas as fotos do album serão-lhe associadas.</li>
+
+<li><strong>Album pai</strong>: onde o novo album será criado, deixe vazio para criar o album à raiz.</li>
+
+</ul>
+
+<h3>Associar todas as fotos a um album existente</h3>
+
+<ul>
+
+<li><strong>Albuns</strong>: Escolher o album de destino.</li>
+
+</ul>
+
+<h3>Enviar um email de informação aos membros de um grupo</h3>
+
+<ul>
+
+<li><strong>Grupo</strong>: grupo de destinatários </li>
+
+<li><strong> conteúdo do mail</strong>: Texto livre para lhe enviar.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/pt_PT/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Movendo Albuns virtuais</h2>
+
+<p>Apenas albuns virtuais podem ter um novo album-pai.</p>
+
+<h3>Albuns virtuais a mover</h3>
+
+<p>Seleccione um ou mais albuns virtuais que deseje mover. 
+Se a lista estiver vazia, isso significa que ainda n&atilde;o criou nenhum album.</p>
+
+<h3>Novo album-pai</h3>
+
+<p>Seleccione o novo album-pai (virtual ou f&iacute;sico). 
+Se n&atilde;o seleccionar um album-pai, os albuns virtuais seleccionados ser&atilde;o movidos para a raiz.
+Um album n&atilde;o poder&aacute; ser movido para dentro de si pr&oacute;prio ou para um dos seus sub-albuns.</p>
Index: /tags/2.6.0RC1/language/pt_PT/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/configuration.html	(revision 25596)
@@ -0,0 +1,98 @@
+<h2>Configuration</h2>
+
+<p>Este ecrã permite gerir a configuração básica. Com efeito, este ecrã só mostra os parâmetros de configuração suficientes para a maioria dos administradores. Se quiser ver os outros vários (e avançados) parâmetros de configuração, leia o fichiero <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Este ecrã esta dividido em diferentes secções, agrupando os parâmetros por temas.</p>
+
+<h3>Principal</h3>
+<ul>
+  <li><strong> Titulo da galeria</strong>: utilizado para os fluxos RSS e as notificações pelo email.</li>
+
+<li><strong>Bandeira das páginas </strong>: afixado em cima de cada página.</li>
+
+  <li><strong>URL da galeria</strong>: utilizado para os fluxos RSS.</li>
+
+  <li><strong>Aferrolhar a galeria</strong>: Bloquear a galeria inteira para manutenção. Só os administradores podarem aceder a galeria.</li>
+
+  <li><strong>Notação</strong>: A notação das fotos é possível.</li>
+
+  <li><strong> Notação pelos visitantes</strong>: Os utilizadores não registados também podem notar as fotos.</li>
+
+  <li><strong>Autorizar o registo dos utilizadores</strong>: O registo é livre para todos.</li>
+
+  <li><strong>O endereço email é obrigatório para todos os utilizadores</strong>: O endereço email será verificado aos registos ou de as posta em dia dos perfis.</li>
+
+  <li><strong>Notificar os administradores ao registo de novos utilizadores</strong>: os administradores receberão um mail para cada registo.</li>
+  
+  <li><strong>Ordem por defeito das fotos</strong>: Pode definir um ordem personalizado graças a estes menus.</li>
+
+</ul>
+
+<h3>Histórico</h3>
+
+ <p>A visita das paginas <span
+  class="pwgScreen">category.php</span> e <span
+  class="pwgScreen">picture.php</span> são salvadas na tabela <code>history</code>.</p>
+  
+  <p>As visitas serão visíveis no ecrã <span  class="pwgScreen"> Administração &raquo; Ferramentas &raquo; Histórico </span>.</p>
+
+<ul>
+  <li><strong>Salvar paginas visitadas pelos convidados</strong>: as paginas vistas pelos visitantes serão salvadas.</li>
+
+  <li><strong>Salvar paginas visitadas pelos utilizadores</strong>: as paginas vistas pelos utilizadores serão salvadas.</li>
+
+  <li><strong>Salvar paginas visitadas pelos administradores</strong>: as paginas vistas pelos administradores serão salvadas.</li>
+
+</ul>
+
+<h3> Comentários </h3>
+<ul>
+
+  <li><strong>Comentários para todos</strong>: Os utilizadores não registados também podem deixar comentários.</li>
+
+  <li><strong> Numero de comentários por página </strong>.</li>
+
+  <li><strong>Validação</strong>: Um administrador deve validar os comentários dos utilizadores antes que possam ser visíveis na parte publica. A validação dos comentários faz-se no ecrã  <span class="pwgScreen"> Administração &raquo; Ferramentas &raquo; Comentários pendentes</span>.</li>
+
+  <li><strong>Notificar os administradores quando alguém deixar um comentário</strong>: Mandar um email aos administradores quando um utilizador deixar um comentário e que este comentário estar validado.</li>
+
+  <li><strong>Notificar os administradores quando um comentário necessitar uma validação </strong>:
+Mandar um email aos administradores quando um utilizador deixar um comentário necessitando uma validação.
+A validação dos comentários faz-se no ecrã  <span class="pwgScreen"> Administração &raquo; Ferramentas &raquo; Comentários pendentes</span>./li>
+
+</ul>
+
+<h3>Afixagem por defeito</h3>
+
+<p>Modificar as opções de afixação por defeito para os visitantes não conectados. Quando estar conectado estas opções são suplantadas para as dos utilizadores. (Alterável no <span class="pwgScreen">perfil</span>).</p>
+
+<p>E possível modificar estas opçoes para todos os utilizadores existentes no ecrã <span class="pwgScreen"> Administração &raquo;
+Utilizadores &raquo; Gerir</span> no qual pode modificar estas opções para uma lista de utilizadores.</p>
+
+<ul>
+
+  <li><strong>Língua</strong>: Aplica-se unicamente aos títulos Piwigo. Os nomes dos albuns, os nomes das fotos e as descrições não são localizadas.</li>
+
+  <li><strong>Numero de miniaturas por linha</strong></li>
+
+  <li><strong>Numero de linhas par página</strong></li>
+
+  <li><strong>Tema da interface</strong></li>
+
+  <li><strong>Período recente</strong>: Em dias. Período durante o qual uma foto é considerara como nova. Este período deve ser superior à um dia.</li>
+
+ <li><strong> Expandir todos os albuns </strong>: Expandir todos os albuns. <em> Atenção </em>: Esta opção é susceptível de consumir inutilmente recursos se a sua árvore de album conter muitos albuns.</li>
+
+  <li><strong>Mostrar o numero de comentários</strong>: Mostrar o numero de comentários para cada foto em baixo de cada miniatura. consume muitos recursos.</li>
+
+  <li><strong>Mostrar o numero de visualizações</strong>: Afixar os hits relevados em cada foto em baixo da miniatura na página das miniaturas. Unicamente válido se o parâmetro de configuração é: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Notice: false by default.</li>
+
+  <li><strong>Largura máxima das fotos</strong>:  As fotos mais largas do que este parâmetro serão redimensionadas.  Em lugar de escolher esta opção, é melhor redimensionar directamente as fotos.</li>
+
+  <li><strong> Altura máxima das fotos</strong>: idêntico a largura.</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/pt_PT/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Configuração para estender os templates</h2>
+
+<h3>Objectivo</h3>
+<p>A galeria pode ser personalizada substituindo os ficheiros existindo para outros que foram personalizados. Por exemplo, o header (header.tpl) por ser substituído por outro personalizado (meu-header.tpl). após submeter as modificações na base de dados, a galeria aparecerá com o header personalizado.<br>
+as extensões de templates são uma maneira possante de criar temas personalizados. Usado conjuntamente com o Localfiles Editor permite criar novos temas.</p>
+
+<h3>Original Template</h3>
+<p>A theme contains a number of template files that make up the gallery pages.  These are the original templates.</p>
+
+<h3>Optional URL Keyword</h3>
+<p>These are words found in the gallery URL after the module name.  They can also be active permalinks  (See the permalink documentation for more information).  <a href="#warnings">WARNING:</a> if the same original template and same keyword is used on more than one customised template only the last one is active.</p>
+
+<h3>Bound Theme</h3>
+<p>The bound theme is the theme from which the template files are being replaced.</p>
+
+<h3>Where are the original templates?</h3>
+<p>Original templates are the template files shipped with each theme.  These are saved in <em>/themes/default/template</em> (or <em>themes/<theme name>/template</em>).  These template files should not be edited in place as changes will be lost with theme upgrades.<br>
+Supported original templates include:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Saving customised templates</h3>
+<p>Customised templates should be saved in the template-extension folder or subfolders.  For example, <em>/template-extension/my-default/header.tpl</em> (or <em>/template-extension/<my-theme-name>/header.tpl</em>)  Template files can have any name with a .tpl extension.  The template files in subfolders appear in the Template configuration screen as available custom templates.</p>
+<h3>Activating customised templates</h3>
+<p>Select the original template to replace.  Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword.  Select a bound theme and the changes will be effective on that theme.  Submit the changes to the database.</p>
+<h3>Deactivating customised templates</h3>
+<p>Unselect the original template and submit the changes to the database.<br>
+Delete the customised template files from the template-extension folder.</p>
+
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+  <li><strong>The original template</strong> must be the original template otherwise you may have unpredictable results.</li>
+  <li>If the same original template and same URL keyword is used on more than one customised template only the last one is active.</li>
+  <li>Distributed sample template files are for test purposes only.  Do not edit them.  Create your own ones or copy existing theme template files into <em>/template-extension/<my-theme>/</em></li>
+  <li>When the customised template is deleted the original template file is immediately reactivated.</li>
+</ul>
Index: /tags/2.6.0RC1/language/pt_PT/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Lista de Grupos</h2>
+
+<p>Este &eacute; o local onde gere os grupos.</p>
+
+<h3>Adicione um grupo</h3>
+
+<p>O Administrador pode adicionar grupos.</p>
+
+<h3>Lista de Grupos</h3>
+
+<p>Para cada grupo as seguintes a&ccedil;&otilde;es podem ser aplicadas:</p>
+
+
+<ul>
+  <li>ir para gest&atilde;o de utilizadores (Administra&ccedil;&atilde;o &raquo; Utilizadores &raquo; Gerir)</li>
+  <li>ir para o ecr&atilde; de gest&atilde;o de permiss&otilde;es para permitir ou negar acesso a &aacute;lbums privados.</li>
+  <li>apagar grupo (requer confirma&ccedil;&atilde;o)</li>
+  <li>mudar estado "default" (requer confirma&ccedil;&atilde;o)</li>
+</ul>
+
+<h3>Grupos por defeito(default)</h3>
+<p>Grupos por defeito(default) s&atilde;o grupos automaticamente associados a cada novo utilizador na altura do registo no site ou da cria&ccedil;&atilde;o por um administrador.</p>
Index: /tags/2.6.0RC1/language/pt_PT/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,29 @@
+<p>Existem varios m&eacute;todos para juntar fotos na sua galeria :</p>
+
+<ul>
+
+  <li><strong>A adi&ccedil;&atilde;o direta</strong> no seu navigador web &eacute; o m&eacute;todo mais simples e mais imediato.
+	Depende das capacidades do seu navegador e do seu servidor. Para grandes volumes ou em caso de problemas,
+	os m&eacute;todos alternativos ficam &agrave; sua espera !</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Usar a adi&ccedil;&atilde;o direta</a></p>
+
+<ul>
+	<li><strong>ploader</strong> &eacute; um software a instalar no seu computador. Fazer drag-and-drop, arrastar e largar,
+	suas fotos na janela de ploader, clicar sobre<em>"Transferir para Piwigo"</em> e ploader faz o resto.
+	Existem outros programas clientes, como <strong>WinToPiwigo</strong> ou o m&oacute;dulo de exporta&ccedil;&atilde;o Piwigo de
+	<strong>Digikam</strong>.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Usar ploader</a></p>
+
+<div id="helpSynchro">
+<ul>
+<li><strong>A transfer&ecirc;ncia FTP</strong>
+	&eacute; o m&eacute;todo ideal para a adi&ccedil;&atilde;o de uma grande cole&ccedil;&atilde;o em um m&iacute;nimo de opera&ccedil;&otilde;es. Siga o guia para preparar as suas fotos.
+	Este m&eacute;todo permite-lhe controlar com precis&atilde;o a organiza&ccedil;&atilde;o f&iacute;sica de suas fotos em seu servidor.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Usar FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/pt_PT/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Os grupos s&atilde;o uma maneira conveniente de configurar permiss&otilde;es para uma lista de utilizadores.</p>
+
+<p>Crie grupos em <span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Utilizadores &raquo; Grupos</span> e associe utilizadores ao grupo em <span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Utilizadores &raquo; Gerir</span>.</p>
+
+<p>Um utilizador pode pertencer a v&aacute;rios grupos. A autoriza&ccedil;&atilde;o &eacute; mais forte do que a proibi&ccedil;&atilde;o : se o usu&aacute;rio "jack" pertence aos grupos "fam&iacute;lia" e "amigos", e apenas o grupo "fam&iacute;lia" pode ver a categoria "Natal 2003", ent&atilde;o "jack" poder&aacute; ver "Natal 2003".</p>
+
Index: /tags/2.6.0RC1/language/pt_PT/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/help_misc.html	(revision 25596)
@@ -0,0 +1,4 @@
+<p>Assim que tiver criado a sua galeria, modifique as propriedades padr&atilde;o em <span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Configura&ccedil;&atilde;o &raquo; Op&ccedil;&otilde;es &raquo; Op&ccedil;&otilde;es de Convidado</span>. Todo o novo utilizador registado usar&aacute; estas op&ccedil;&otilde;es de configura&ccedil;&atilde;o padr&atilde;o.</p>
+
+<p>Se voc&ecirc; tiver qualquer pergunta, a comunidade Piwigo o receber&aacute; de bra&ccedil;os abertos no <a href="http://piwigo.org/forum">seu f&oacute;rum</a>.</p>
+
Index: /tags/2.6.0RC1/language/pt_PT/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,12 @@
+<p>Poder&aacute; proibir o acesso &aacute;s categorias. Altere o modo de acesso &agrave; categoria para "privado" se quiser gerir permiss&otilde;es.</p>
+
+<p>Poder&aacute; tornar uma categoria privada simplesmente editando uma categoria (<span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Categorias &raquo; Gerir &raquo; Editar</span>) ou alterando as op&ccedil;&otilde;es em toda a &aacute;rvore da categoria (<span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Categorias &raquo; Propriedades &raquo; P&uacute;blico / Privado</span>).</p>
+
+<p>Uma vez que a categoria esteja como privada, poder&aacute; gerir as permiss&otilde;es para grupos e utilizadores em 3 p&aacute;ginas:</p>
+
+<ul>
+  <li><span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Utilizadores &raquo; Gerir &raquo; a&ccedil;&atilde;o das permiss&otilde;es</span> (um link por utilizador)</li>
+  <li><span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Utilizadores &raquo; Grupos &raquo; a&ccedil;&atilde;o das permiss&otilde;es</span> (um link por grupo)</li>
+  <li><span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Categorias &raquo; Gerir &raquo; editar a&ccedil;&atilde;o das permiss&otilde;es da categoria</span> (um link por categoria)</li>
+</ul>
+
Index: /tags/2.6.0RC1/language/pt_PT/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>As fotos s&atilde;o mostradas na categoria correspondente &agrave; pasta do ficheiro.</p>
+
+<p>Tamb&eacute;m pode mostrar uma imagem em v&aacute;rias categorias, sem a necessidade de duplicar o ficheiro no seu servidor. Associe a imagem a qualquer categoria na p&aacute;gina de edi&ccedil;&atilde;o de foto (que qualquer administrador pode ter acesso da p&aacute;gina de foto na galeria).</p>
+
+<p>Categorias virtuais s&atilde;o baseadas neste conceito: elas n&atilde;o tem diret&oacute;rio correspondente. Crie categorias virtuais atrav&eacute;s da <span class="pwgScreen">Administra&ccedil;&atilde;o &raquo; Categorias &raquo; Gerenciar</span>.</p>
+
Index: /tags/2.6.0RC1/language/pt_PT/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Historico</h2>
+
+<p>Estes ecrãs permitem de seguir o histórico de navegação no piwigo seguindo as opções definidas em: Administração &raquo; Configuração &raquo; Opções &raquo; Histórico </p>
+	
+<h3> Estatísticas </h3>
+<ul>
+  <p>Se escolheu que as visitas das páginas(<span class="pwgScreen">index.php</span> e <span class="pwgScreen">picture.php</span>) sejam registadas na tabela history, esta aba permite seguir o numero de paginas visitadas.</p>
+	<li><strong>Estaticistas totais</strong>: visitas por ano. </li>
+	<li><strong>Estaticistas anuais</strong>: visitas por mês do ano seleccionado.</li>
+	<li><strong>Estaticistas mensais</strong>: visitas por dia do mês seleccionado.</li>
+	<li><strong>Estaticistas diárias </strong>: visitas por hora do dia seleccionado.</li>
+</ul>
+
+<h3>Pesquisa</h3>
+<ul>
+    <p>Se escolheu que as visitas das páginas(<span class="pwgScreen">index.php</span> e <span class="pwgScreen">picture.php</span>) sejam registadas na tabela history,esta aba permite seguir mais em detalhe as paginas visitadas com a ajuda dos diferentes filtros.</p>
+	<li><strong>Filtrar por data:</strong> seleccione o intervale de datas que deseja seguir.</li>
+	<li><strong>Filtrar por tipo de elemento:</strong> seleccione o tipo de elemento que deseja seguir.</li>
+	<li><strong>Filtrar por utilizador:</strong> seleccione o utilizador que deseja seguir.</li>
+	<li><strong>Filtrar por nome de ficheiro:</strong> seleccione o nome do ficheiro que deseja seguir.</li>
+	<li><strong>Filtrar por nome de imagem:</strong> seleccione o nome da imagem que deseja seguir.</li>
+</ul>
Index: /tags/2.6.0RC1/language/pt_PT/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2> Manutenção </h2>
+
+<p>Para optimizar o tempo de geração das paginas, Piwigo utiliza informações em cache. Por exemplo em lugar de contar o numero de fotos de cada álbum cada recarregamento de pagina, esta informação está armazenada na base de dados. Em teoria esta informação deve estar sempre correcta, mas por vezes pode haver um erro e a informação em cache torna-se falsa..</p>
+
+<p>Algumas informações tornam-se falsas com o tempo. suprimi-las da base de dados permite liberar espaço disco.</p>
+
+<ul>
+	<li><strong>suprimir tags órfãs </strong></li>
+</ul>
+<ul>
+  <li><strong>Por em dia as informações dos álbuns :</strong>Para cada álbum as seguintes informações são verificadas e postas em dia se for necessário : lista dos álbuns pai, numero de fotos,data da ultima foto, posição entre os outros álbuns irmãos, posição entre todos os álbuns. Esta acção também  verifica a consistência dos representantes.</li>
+  <li><strong>Por em dia as informações das fotos :</strong> Para cada foto, as informações postas em dia são : caminho completo para o ficheiro, nota media. <em> atenção </em>, não confunda : os meta-dados são sincronizados no ecrã <span class="pwgScreen"> Administração &raquo; Álbuns &raquo; sincronizar</span>, o no ecrã Modificar as informações de uma foto (acessível na pagina visualização de uma foto.</li>
+</ul>
+<ul>
+  <li><strong>Reparar e optimizar a base de dados :</strong>Efectuar operações de reorganização, reparação e optimização de cada tabela da base de dados.</li>
+  <li><strong>Reinitialize integrity check</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Purgar o detalhe do histórico :</strong> Suprimir todas a linhas da tabela history. O ecrã <span class="pwgScreen"> Administração &raquo; Ferramenta &raquo; Histórico </span> Não mostrara mais nenhuma informação sobre o passado. <em> Atenção :</em> Todos os dados serão perdidos sem possibilidade de recuperação.</li>
+  <li><strong>Purgar a síntese do histórico :</strong> Suprimir as informações recapitulativas.(Obtidas à partir do detalhe do histórico).</li>
+  <li><strong>Purgar as sessões :</strong> Suprimir as sessões expiradas.</li>
+  <li><strong>Purgar as notificações não utilizadas</strong></li>
+  <li><strong>Purgar o histórico das pesquisas</strong></li>
+  <li><strong>Purgar os templates compilados</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/pt_PT/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Notificação por email</h2>
+
+<p>Permite gerir o envio de emails aos utilizadores, para notificar-los das novidades do sitio.</p>
+
+<p>Este ecrã comporta 3 abas:</p>
+
+<h3>Parametrização</h3>
+<p>Disponível para os webmasters unicamente, permite definir os parâmetros de notificação par email.</p>
+
+<h3>Inscrição</h3>
+<p>Disponível para os webmasters unicamente, permite gerir as inscrições/desinscrições e a notificação por email.</p>
+
+<h3>Envio</h3>
+<p> Disponível para os webmasters e administradores, permite efectuar os  envios de emails para notificar das  novidades.</p>
Index: /tags/2.6.0RC1/language/pt_PT/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,96 @@
+<fieldset>
+  <legend>In&iacute;cio R&aacute;pido</legend>
+
+<ol>
+  <li>Crie uma pasta no seu computador.</li>  
+
+  <li>Copie algumas fotos para essa pasta, altere o tamanho das imagens para serem exibidas na internet. <em>Cuidado</em>: o nome das pastas e ficheiros deve conter apenas letras, n&uacute;meros, "-", "_" ou ".". N&atilde;o use espa&ccedil;os em branco nem caracteres acentuados.</li>
+
+  <li>Com a ajuda de um programa de FTP, copie a sua pasta para a pasta "galleries" da sua instala&ccedil;&atilde;o Piwigo.</li>
+
+  <li>Fa&ccedil;a o login na sua galeria e v&aacute; at&eacute; <span class="pwgScreen">Ferramentas &raquo; Miniaturas</span> para criar alguma miniatura que esteja em falta.</li>
+
+  <li>V&aacute; at&eacute; <span class="pwgScreen">Painel Administrativo</span> e clique no bot&atilde;o "Sincroniza&ccedil;&atilde;o R&aacute;pida".</li>
+</ol>
+
+Parab&eacute;ns! Voc&ecirc; acabou de criar o primeiro &aacute;lbum da sua galeria de fotos.
+
+</fieldset>
+<fieldset>
+  <legend>Organiza&ccedil;&atilde;o de pastas e ficheiros</legend>
+<ul>
+
+  <li>
+
+	<p>As pastas dos &aacute;lbums est&atilde;o na pasta "galleries" no Piwigo. Segue aqui a &aacute;rvore de pastas de uma pequena galeria (mas usando muitos recursos) :</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+  
+  <li>Cada pasta sob "galleries" produz um album. N&atilde;o h&aacute; limite de profundidade.</li>
+
+  <li>Basicamente, um item &eacute; representado por um ficheiro. Um ficheiro pode ser um item Piwigo se a sua extens&atilde;o estiver entre as possibilidades dos par&acirc;metros de configura&ccedil;&atilde;o <code>file_ext</code> (veja o ficheiro <span class="filename">include/config_default.inc.php</span>). Um ficheiro pode ser uma imagem se a sua extens&atilde;o estiver entre as possibilidades dos par&acirc;metros de configura&ccedil;&atilde;o <code>picture_ext</code>.</li>
+
+  <li>Os itens fotogr&aacute;ficos devem ter uma miniatura associada (veja a sec&ccedil;&atilde;o abaixo sobre miniaturas)</li>
+
+  <li>Os itens fotogr&aacute;ficos podem ter um ficheiro de alta defini&ccedil;&atilde;o associado. Assim como para wedding.jpg no exemplo acima. N&atilde;o use prefixo nas imagens de alta defini&ccedil;&atilde;o.</li>
+
+  <li>Outros itens (video, sons, arquivos de texto, o que voc&ecirc; quiser...) s&atilde;o por padr&atilde;o representados por um &iacute;cone correspondente &agrave; extens&atilde;o do nome de arquivo. Voc&ecirc; tem a op&ccedil;&atilde;o de associar uma miniatura e um ficheiro representativo (veja video.avi no exemplo acima).</li>
+
+  <li><em>Aten&ccedil;&atilde;o</em>: o nome das pastas e dos ficheiros devem conter apenas letras, n&uacute;meros, "-", "_" ou ".". N&atilde;o use espa&ccedil;o em branco e nem caracteres acentuados.</li>
+
+  <li>Uma vez que os ficheiros, as miniaturas e representativos estiverem corretamente alocados nas pastas,v&aacute; at&eacute; : <span class="pwgScreen">Ferramentas &raquo; Sincronizar</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>Miniaturas (Thumbnails)</legend>
+<ul>
+
+  <li>Cada foto deve ter a sua miniatura.</li>
+
+  <li>As miniaturas est&atilde;o armazenadas na subpasta "thumbnail" na pasta das categorias. 
+      A miniatura tem o mesmo nome de ficheiro que a foto correspondente, com <em>TN-</em> como prefixo.</li>
+
+  <li><em>Aten&ccedil;&atilde;o</em>: use um m&oacute;dulo externo para a cria&ccedil;&atilde;o das miniaturas.</li>
+
+  <li>Embora n&atilde;o seja recomendado (qualidade da imagem, carga do servidor, etc), pode usar a p&aacute;gina <span class="pwgScreen">Ferramentas &raquo; Miniaturas</span> para criar as miniaturas.</li>
+
+  <li>D&ecirc; permiss&otilde;es de escrita para todas as pastas dos albums.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/pt_PT/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/search.html	(revision 25596)
@@ -0,0 +1,20 @@
+<h2>Pesquisa</h2>
+
+<p>Pesquisa de fotos em toda a galeria.</p>
+
+<dl>
+
+<dt>Pesquisar uma palavra</dt>
+<dd>Pesquisar uma ou varias palavras em todos os atributos das fotos da galeria. Use * para pesquisas 
+Parciais.</dd>
+
+<dt>pesquisar um autor</dt>
+<dd>Use * para pesquisas parciais.</dd>
+
+<dt>Pesquisar por data</dt>
+<dd>Selectione uma data e/ou uma data de fim.Deixe a data vazia se quiser fazer uma pesquisa "antes".Na ultima área, o ano deve ser composto de quatro números (2012 por exemplo).</dd>
+
+<dt>Pesquisar nos álbuns</dt>
+<dd>Selectione os álbuns nos quais pesquisar. E possível buscar em todos os álbuns seleccionando o album pai, e autorizando a pesquisa nos sob-albuns.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/pt_PT/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Sincronizar</h2>
+
+<p>Existe dois tipos de sincronização:</p>
+<ul>
+	<li>repertórios/ficheiros</li>
+	<li>metadados</li>
+</ul>
+
+<p>Sincronizar repertórios e ficheiros correponde a por em dia a arborescência dos repertórios com a arborscência na base de dados. 
+Sincronizar metadados corresponde a por em dia as informações das fotos, como o peso dos ficheiros, dimensões em pixels, EXIF ou IPTC, na base de dados.</p>
+
+<p>Os repertórios e ficheiros devem ser sincronizados em primeiro.</p>
+
+<p>A sincronização pode durar muito tempo(dependendo da carga do servidor e da quantidade de ficheiros)Por isso é possível de proceder álbum por álbum.</p>
Index: /tags/2.6.0RC1/language/pt_PT/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Lista de Utilizadores</h2>
+
+<p>&Eacute; aqui que pode gerir os utilizadores da sua galeria Piwigo.</p>
+
+<h3>AIcionar um utilizador</h3>
+
+<p>Um administrador pode adicionar utilizadores manualmente.  Para cada utilizador, crie um nome de utilizador, uma palavra-passe e submeta um endere&ccedil;o de email v&aacute;lido.</p>
+
+<h3>Lista de Utilizadores</h3>
+
+<p>Esta lista de utilizadores existentes poder&aacute; ser filtrada por nome (use * para substituir qualquer valor), grupo ou estado. Poder&aacute; ser ordenada por data de registo ou nome do utilizador, em ordem ascendente ou descendente.</p>
+
+<p>Esta p&aacute;gina permite a gest&atilde;o de m&uacute;ltiplos utilizadores de uma s&oacute; vez, utilizando diferentes a&ccedil;&otilde;es:</p>
+
+<ul>
+  <li>apagar utilizador (requer confirma&ccedil;&atilde;o)</li>
+  <li>modificar o estado do utilizador</li>
+  <li>associar ou desassociar de grupos</li>
+  <li>modificar propriedades de exibi&ccedil;&atilde;o</li>
+  <li>modificar prefer&ecirc;ncias adicionais</li>
+</ul>
+
+<p>O alvo &eacute; o utilizador selecionado (por defeito) ou todos os utilizadores exibidos numa lista filtrada.</p>
Index: /tags/2.6.0RC1/language/pt_PT/index.php
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/pt_PT/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/install.lang.php	(revision 25596)
@@ -0,0 +1,70 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalação';
+$lang['Basic configuration'] = 'Configuração Básica';
+$lang['Default gallery language'] = 'Idioma padrão da galeria';
+$lang['Database configuration'] = 'Configuração da base de dados';
+$lang['Admin configuration'] = 'Configuração da administração';
+$lang['Start Install'] = 'Iniciar a instalação';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Será mostrado aos visitantes. É necessário para a administração do sitio';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'A ligação ao servidor foi bem sucedida, mas foi impossível ligar à base de dados';
+$lang['Can\'t connect to server'] = 'Não foi possível ligar ao servidor';
+$lang['Host'] = 'Servidor MySQL';
+$lang['User'] = 'Utilizador';
+$lang['user login given by your host provider'] = 'Login de utilizador fornecido pelo seu fornecedor de alojamento';
+$lang['user password given by your host provider'] = 'Palavra-passe fornecida pelo seu fornecedor de alojamento';
+$lang['Database name'] = 'Nome da base de dados';
+$lang['also given by your host provider'] = 'Também fornecido pelo seu fornecedor de alojamento';
+$lang['Database table prefix'] = 'Prefixo da tabela da base de dados';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Os nomes das tabelas da base de dados terão este prefixo (isto possibilita uma melhor gestão das tabelas)';
+$lang['enter a login for webmaster'] = 'Introduza um nome para o webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'O nome do webmaster não pode conter os caracteres \' ou "';
+$lang['please enter your password again'] = 'Por favor, escreva a sua senha novamente';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Mantenha-a bem guardada, é ela que lhe permite aceder ao painel administrativo';
+$lang['Password [confirm]'] = 'Palavra-passe [confirmação]';
+$lang['verification'] = 'Verificar Senha inserida';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Precisa de ajuda? Faça a sua pergunta no <a href="%s">Fórum Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Os visitantes poderão entrar em contacto com o administrador da galeria através deste email';
+$lang['PHP 5 is required'] = 'PHP 5 é necessário';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que o seu provedor de hospedagem usa actualmente PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pode tentar mudar a sua configuração para PHP 5 através da criação ou modificação de um arquivo .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que você pode alterar sua configuração por conta própria e reiniciar o Piwigo depois disso.';
+$lang['Try to configure PHP 5'] = 'Tentar configurar PHP 5';
+$lang['Sorry!'] = 'Lamentamos!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo não pôde configurar o PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Você deve entrar em contacto com o suporte do seu provedor e saber como pode mudar para PHP 5.";
+$lang['Hope to see you back soon.'] = 'Desejamos volte em breve.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Parabéns, a sua instalação Piwigo está completa';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Uma solução alternativa será copiar o texto na caixa supra e colá-lo no ficheiro "local/config/database.inc.php" (Atenção : database.inc.php apenas deverá conter o que está na área de texto, não insira nenhuma linha nova ou espaço em branco)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'A criação do ficheiro de configuração local/config/database.inc.php falhou.';
+$lang['Download the config file'] = 'Guardar ficheiro de configuração';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Pode guardar o ficheiro de configuração no seu computador e de seguida enviá-lo para a pasta /local/config da sua instalação.';
+$lang['Just another Piwigo gallery'] = 'Apenas mais uma galeria Piwigo';
+$lang['Welcome to my photo gallery'] = 'Bem-vindo à minha galeria de fotos';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bem-vindo à sua nova instalação do Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Não hesite em visitar nossos foruns para qualquer ajuda: %s';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Você deve entrar em contacto com o suporte do seu fornecedor de alojamento e saber como pode mudar para PHP 5.';
+$lang['Password ']['confirm'] = 'Senha [confirme]';
+$lang['localhost or other, supplied by your host provider'] = 'hospedeiro local ou outro, fornecido pelo seu alojador';
+?>
Index: /tags/2.6.0RC1/language/pt_PT/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Português [PT]
Index: /tags/2.6.0RC1/language/pt_PT/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/pt_PT/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/pt_PT/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Actualizar';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Recomendamos que faça uma actualização à sua base de dados para a versão mais recente. O assistente de actualização reconhece a sua versão como <strong>versão %s</strong> (ou equivalente).';
+$lang['Upgrade from version %s to %s'] = 'Actualizar da versão %s para a versão %s';
+$lang['Statistics'] = 'Estatísticas';
+$lang['total upgrade time'] = 'Tempo total de actualização';
+$lang['total SQL time'] = 'Tempo total de SQL';
+$lang['SQL queries'] = 'Consultas SQL';
+$lang['Upgrade informations'] = 'Informações da actualização';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Se encontrar algum problema durante a actualização execute uma avaliação de rotina em [Administração>Ferramentas>Manutenção].';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaução as seguintes extenções foram desactivadas. Deve procurar actualizações das extenções antes de reactivá-las:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Apenas o administrador pode efectuar actualizações: por favor Inicie Sessão no formulário abaixo.';
+$lang['You do not have access rights to run upgrade'] = 'Você não tem permissões de acesso para efectuar a actualização';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Em <i>%s</i>, antes de <b>?></b>, insira:';
+$lang['All sub-albums of private albums become private'] = 'Todos os sub-albuns de albuns privados ficam privados tambem';
+$lang['User permissions and group permissions have been erased'] = 'Permissões de utilizador e de grupo foram apagadas.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Apenas o prefixo das miniaturas e o endereço de email do webmaster foram salvos da configuração anterior.';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Como precau&ccedil;&atilde;o os seguintes temas foram desactivados. Dever&aacute; verificar por actualiza&ccedil;&otilde;es para os temas antes de os reactivar:';
+
+?>
Index: /tags/2.6.0RC1/language/ro_RO/about.html
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/about.html	(revision 25596)
@@ -0,0 +1,17 @@
+<p> Această galerie foto este bazată pe Piwigo.</p>
+
+<p> Piwigo este un software pentru galerii foto web, dezvoltat de o comunitate activă de utilizatori și dezvoltatori. Extensiile fac Piwigo ușor personalizabil. In plus, Piwigo este liber și gratuit.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Vizitează web site-ul Piwigo</a></p>
+
+Traducerea Piwigo în limba română este menținuta de :
+
+<p>Traducerea Piwigo în limba română este menținuta de :
+
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16378">madalinul1</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16422">norboo</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16282">SERGIUx</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=2393">strotti</a></li>
+	</ul>
+        .... Ii mulțumim.</p>
Index: /tags/2.6.0RC1/language/ro_RO/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/admin.lang.php	(revision 25596)
@@ -0,0 +1,956 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['%d association'] = '%d asociatie';
+$lang['%d associations'] = '%d asociatii';
+$lang['%d album including'] = '%d album inclusiv';
+$lang['%d albums including'] = '%d albums inclusiv';
+$lang['%d physical'] = ' %d fizic';
+$lang[' and %d virtual'] = 'şi %d virtual';
+$lang['%d album moved'] = '%d album mutata';
+$lang['%d albums moved'] = '%d albums mutate';
+$lang['%d group'] = '%d grup';
+$lang['%d groups'] = '%d grupuri';
+$lang['%d member'] = '%d membru';
+$lang['%d members'] = '%d membrii';
+$lang['%d tag'] = '%d eticheta';
+$lang['%d tags'] = '%d etichete';
+$lang['%d user comment rejected'] = '%d comentariu utilizator respins';
+$lang['%d user comments rejected'] = '%d comentarii utilizator respinse';
+$lang['%d user comment validated'] = '%d comentariu utilizator validat';
+$lang['%d user comments validated'] = '%d comentarii utilizator validate';
+$lang['%d user deleted'] = '%d utilizator sters';
+$lang['%d users deleted'] = '%d utilizatori stersi';
+$lang['%d user'] = '%d utilizator';
+$lang['%d users'] = '%d utilizatori';
+$lang['%d waiting for validation'] = '%d în asteptare pentru validare';
+$lang['Actions'] = 'Actiuni';
+$lang['Activate'] = 'Activa';
+$lang['Add/delete a permalink'] = 'Adaugati / stergeti un link permanent';
+$lang['Add a tag'] = 'Adaugati o eticheta';
+$lang['Add a user'] = 'Adaugati un utilizator';
+$lang['Add group'] = 'Adaugati un grup';
+$lang['Add'] = 'Adauga';
+$lang['Allow user registration'] = 'Permite înregistrarea utilizatorilor';
+$lang['Associated'] = 'Asociat';
+$lang['Caddie management'] = 'Gestiunea caruciorului';
+$lang['Caddie'] = 'Cărucior';
+$lang['Albums authorized thanks to group associations'] = 'albums autorizate datorita asociatiilor la grupuri';
+$lang['Album photos associated to the following albums: %s'] = 'photoele albumi asociate la urmatoarele albums : %s';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Verificarea pentru ultima versiune a aplicatiei a esuat din motive necunoscute.';
+$lang['Check for upgrade'] = 'Ultima versiune?';
+$lang['Comments for all'] = 'Comentarii pentru toti';
+$lang['Current name'] = 'Numele actual';
+$lang['Database'] = 'Baza de date';
+$lang['Deactivate'] = 'Dezactivare';
+$lang['Delete Representant'] = 'Ștergeți reprezentantul';
+$lang['Delete selected tags'] = 'Ștergeți etichetele selectate';
+$lang['Delete selected users'] = 'Ștergeți utilizatorii selectați';
+$lang['Deletions'] = 'Ștergeri';
+$lang['Deny selected groups'] = 'Restricționați accesul la grupurile selecționate';
+$lang['Deny selected users'] = 'Restricționați accesul la utilizatorii selecționați';
+$lang['Description'] = 'Descriere';
+$lang['Display options'] = 'Opțiuni de afişare';
+$lang['Dissociated'] = 'Disociat de';
+$lang['Does not represent'] = 'Nu reprezintă';
+$lang['Edit photo information'] = 'Modifică informațiile legate de această imagine';
+$lang['Edit selected tags'] = 'Modifică etichetele selecționate';
+$lang['Edit tags'] = 'Modifică etichetele';
+$lang['Email admins when a new user registers'] = 'Anunță administratorii atunci cînd un nou utilizator se înregistrează';
+$lang['Email admins when a valid comment is entered'] = 'Anunță administratorii atunci cînd un comentariu valabil este înscris';
+$lang['Email admins when a comment requires validation'] = 'Anunță administratorii atunci cînd un comentariu necesită validare';
+$lang['Environment'] = 'Mediul';
+$lang['Form'] = 'Formular';
+$lang['Gallery title'] = 'Titlul galeriei';
+$lang['Grant selected groups'] = 'Asigură accesul la grupurile selectate';
+$lang['Grant selected users'] = 'Asigură accesul la utilizatorii selectați';
+$lang['Group name'] = 'Numele grupului';
+$lang['Groups'] = 'Grupuri';
+$lang['Guests'] = 'Invitați';
+$lang['History'] = 'Istoric';
+$lang['Informations'] = 'Informații';
+$lang['Install'] = 'Instalează';
+$lang['Link all album photos to a new album'] = 'Corelează toate photoele albumi la o nouă album';
+$lang['Link all album photos to some existing albums'] = 'Corelează toate photoele albumi la unele albums existente';
+$lang['Linked albums'] = 'albums corelate';
+$lang['Lock gallery'] = 'Blochează galeria';
+$lang['Maintenance'] = 'Întreţinere';
+$lang['Manage permissions for group "%s"'] = 'Gestionează permisiunile pentru grupul "%s"';
+$lang['Manage permissions for user "%s"'] = 'Gestionează permisiunile pentru utilizatorul "%s"';
+$lang['Manage tags'] = 'Gestionează etichetele';
+$lang['Members'] = 'Membrii';
+$lang['Metadata synchronized from file'] = 'Metadata sincronizate din fișier';
+$lang['Move albums'] = 'Deplasează albumsle';
+$lang['Move'] = 'Deplasează';
+$lang['Name'] = 'Nume';
+$lang['New name'] = 'Nume nou';
+$lang['New parent album'] = 'album mamă nouă';
+$lang['New tag'] = 'Etichetă nouă';
+$lang['Number of comments per page'] = 'Număr de comentarii pe pagină';
+$lang['Number of rates'] = 'Numărul evaluărilor';
+$lang['Number of thumbnails to create'] = 'Numărul miniaturilor de creat';
+$lang['Only private albums are listed'] = 'Doar albumsle private sunt enumerate';
+$lang['Operating system'] = 'Sistemul de operare';
+$lang['Options'] = 'Opțiuni';
+$lang['Other private albums'] = 'Alte albums private';
+$lang['Page banner'] = 'Panglica paginii';
+$lang['Parent album'] = 'album mamă';
+$lang['Path'] = 'Cale';
+$lang['Permalink'] = 'Permalink';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink-ul %s a fost folosit în prealabil de album %s. Ștergeți permalink-ul din istoric mai întîi';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Permalink-ul trebuie să conțină doar caractere alfanumerice de la a-z, A-Z, 0-9, "-", "_" sau "/". Nu trebuie să fie doar numeric sau să înceapă cu un număr urmat de "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalink-ul %s este deja folosit de album %s';
+$lang['Permalink history'] = 'Istoricul permalink-ului';
+$lang['Permalinks'] = 'Permalink-uri';
+$lang['Permission denied'] = 'Acces interzis';
+$lang['Permission granted thanks to a group'] = 'Accesul autorizat datorită apartenenței la un grup';
+$lang['Permission granted'] = 'Acces autorizat';
+$lang['Plugins'] = 'Plugin-uri';
+$lang['Position'] = 'Poziție';
+$lang['Preferences'] = 'Preferințe';
+$lang['Properties'] = 'Proprietăți';
+$lang['Random photo'] = 'Fotografie la nimereală';
+$lang['Rate date'] = 'Data evaluării';
+$lang['Rating by guests'] = 'Evaluat de invitați';
+$lang['Rating'] = 'Apreciere';
+$lang['Reject'] = 'Respinge';
+$lang['Representant'] = 'Reprezentant';
+$lang['Representation of albums'] = 'Reprezentarea albumslor';
+$lang['Representative'] = 'Reprezentativă';
+$lang['Represents'] = 'Reprezintă';
+$lang['Save order'] = 'Salvează ordinea';
+$lang['Save to permalink history'] = 'Salvare în istorie la permalinks';
+$lang['Select at least one album'] = 'Selectați cel puțin o album';
+$lang['Select at least one photo'] = 'Selectați cel puțin o fotografie';
+$lang['Select at least one user'] = 'Selectați cel puțin un utilizator';
+$lang['Show info'] = 'Afișare info';
+$lang['Site manager'] = 'Managerul site-ului';
+$lang['Status'] = 'Statut';
+$lang['Statistics'] = 'Statistici';
+$lang['Storage album'] = 'album depozitului';
+$lang['Sum of rates'] = 'Suma evaluarilor';
+$lang['Tag "%s" already exists'] = 'Eticheta "%s" există deja';
+$lang['Tag "%s" was added'] = 'Eticheta "%s" a fost adăugată';
+$lang['Tag selection'] = 'Selecționarea etichetei';
+$lang['The %d following tags were deleted'] = 'Următoarele %d etichete au fost șterse';
+$lang['Unable to check for upgrade.'] = 'Imposibil de verificat pentru upgrade.';
+$lang['Uninstall'] = 'Dezinstalează';
+$lang['User comments validation'] = 'Validarea comentariilor utilizatorilor';
+$lang['Users'] = 'Utilizatori';
+$lang['Validate'] = 'Validează';
+$lang['Validation'] = 'Validare';
+$lang['Version'] = 'Versiune';
+$lang['Virtual albums to move'] = 'albums virtuale de mutat';
+$lang['Virtual album name'] = 'Numele albumslor virtuale';
+$lang['Webmaster cannot be deleted'] = 'Utilizatorul Webmaster nu poate fi șters';
+$lang['You are running on development sources, no check possible.'] = 'Folosiți sursele de dezvoltare, nu e posibil de verificat.';
+$lang['You cannot delete your account'] = 'Nu puteți șterge contul dumneavoastră';
+$lang['You need to confirm deletion'] = 'Trebuie să confirmați ștergerea';
+$lang['associate to group'] = 'asociază grupului';
+$lang['Authorized'] = 'Autorizat';
+$lang['Add a virtual album'] = 'Adaugă o album virtuală';
+$lang['Authorize users to add comments on selected albums'] = 'Autorizați utilizatorii să adauge comentarii pe albumsle selectate';
+$lang['Lock albums'] = 'Blochează albumsle';
+$lang['Private'] = 'Privată';
+$lang['private'] = 'privată';
+$lang['Public'] = 'Publică';
+$lang['public'] = 'publică';
+$lang['Find a new representant by random'] = 'Găsiți un reprezentant aleatoriu nou';
+$lang['Public / Private'] = 'Public / Privat';
+$lang['Manage authorizations for selected albums'] = 'Administrează autorizațiile pentru albumsle selectate';
+$lang['Virtual album added'] = 'album virtuală adăugată';
+$lang['Virtual album deleted'] = 'album virtuală ștearsă';
+$lang['Access type'] = 'Metodă de acces';
+$lang['%d album including'] = '%d album includ';
+$lang['%d album moved'] = '%d album mutat';
+$lang['%d albums including'] = '%d albume includ';
+$lang['%d albums moved'] = '%d albume mutate';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalii au fost detectate şi corectate.';
+$lang['%d anomalies have been detected.'] = '%d anomalii au fost detectate.';
+$lang['%d anomalies have been ignored.'] = '%d anomalii au fost ignorate.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalii nu au fost corectate.';
+$lang['%d anomaly has been corrected.'] = '%d anomalie a fost corectată.';
+$lang['%d anomaly has been detected.'] = '%d anomalie a fost detectată.';
+$lang['%d anomaly has been ignored.'] = '%d anomalie a fost ignorată.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalie nu a fost corectată.';
+$lang['%d guest'] = '%d invitat';
+$lang['%d guests'] = '%d invitaţi';
+$lang['%d line filtered'] = '%d linie filtrată';
+$lang['%d lines filtered'] = '%d linii filtrate';
+$lang['%d mail was not sent.'] = '%d mesaj nu a fost trimis.';
+$lang['%d mail was sent.'] = '%d mesaj a fost trimis.';
+$lang['%d mails were not sent.'] = '%d mesaje nu au fost trimise.';
+$lang['%d mails were sent.'] = '%d mesaje au fost trimise.';
+$lang['%d of %d photos selected'] = '%d din %d fotografii selectate';
+$lang['%d parameter was updated.'] = '%d parametru adus la zi.';
+$lang['%d parameters were updated.'] = '%d parametri aduşi la zi.';
+$lang['%d photo was deleted'] = '%d fotografie ştearsă';
+$lang['%d photos uploaded'] = '%d fotografii încărcate';
+$lang['%d photos were deleted'] = '%d fotografii şterse';
+$lang['ACCESS_0'] = 'Acces liber';
+$lang['ACCESS_1'] = 'Acces pentru toţi';
+$lang['ACCESS_2'] = 'Acces pentru utilizatorii înregistraţi';
+$lang['ACCESS_3'] = 'Acces pentru administratori';
+$lang['ACCESS_4'] = 'Acces pentru administratorii de site';
+$lang['ACCESS_5'] = 'Fără acces';
+$lang['Action'] = 'Acţiune';
+$lang['Activate icon "%s"'] = 'Activează pictograma "%s"';
+$lang['Activate Navigation Bar'] = 'Activează bara de navigaţie';
+$lang['Activate Navigation Thumbnails'] = 'Activează miniaturile de navigare';
+$lang['Activate icon "new" next to albums and pictures'] = 'Activează pctograma "nou" lângă albume şi fotografii';
+$lang['Active Languages'] = 'Limbi active';
+$lang['Active Plugins'] = 'Conectori activi';
+$lang['Active Themes'] = 'Teme active';
+$lang['Add a criteria'] = 'Adaugă un criteriu';
+$lang['Add a filter'] = 'Adaugă un filtru';
+$lang['Add a virtual album'] = 'Adaugă un album virtual';
+$lang['Add another set of photos'] = 'Adaugă un nou set de fotografii';
+$lang['Add detailed content'] = 'Adaugă conţinut detaliat';
+$lang['Add New Language'] = 'Adaugă o limbă nouă';
+$lang['add new photos to caddie'] = 'adauga fotografii noi în coş';
+$lang['Add New Theme'] = 'Adaugă o temă nouă';
+$lang['Add Photos'] = 'Adaugă fotografii';
+$lang['Add write access to the "%s" directory'] = 'Adaugă drept de scriere în directorul "%s"';
+$lang['added'] = 'adăugat';
+$lang['Administration Home'] = 'Centrul de administrare';
+$lang['Advanced features'] = 'Opţiuni avansate';
+$lang['Album "%s" has been added'] = 'Albumul "%s" a fost adăugat';
+$lang['Album "%s" now contains %d photos'] = 'Albumul "%s" conţine acum %d fotografii';
+$lang['Album photos associated to the following albums: %s'] = 'Fotografii asociate următoarelor albume: %s';
+$lang['Album list management'] = 'Administrarea listei de albume';
+$lang['Album manual order was saved'] = 'Ordinea manuală a albumelor a fost salvată';
+$lang['Album name'] = 'Nume album';
+$lang['Album updated successfully'] = 'Album adus la zi cu succes';
+$lang['albums added in the database'] = 'albume adăugate în baza de date';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Contacte';
+$lang['Level 2'] = 'Prieteni';
+$lang['Level 4'] = 'Familie';
+$lang['Level 8'] = 'Administratori';
+$lang['%d user was not updated.'] = '%d utilizator nu a fost adus la zi.';
+$lang['%d user was updated.'] = '%d utilizator a fost adus la zi.';
+$lang['%d users were not updated.'] = '%d utilizatori nu au fost aduşi la zi.';
+$lang['%d users were updated.'] = '%d utilizatori au fost aduşi la zi.';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s trebuie modificat în fals în fişierul local/config/config.inc.php';
+$lang['%s value is not correct file because exif are not supported'] = '%s valoare este incorectă, deoarece exif-urile nu sunt suportate';
+$lang['+ Add an upload box'] = '+ Adauga o cutie de încărcare';
+$lang[', click on'] = ', apasă pe';
+$lang['A new version of Piwigo is available.'] = 'O nouă versiune a lui Piwigo este disponibilă.';
+$lang['Albums automatically sorted'] = 'Albume sortate automat';
+$lang['albums deleted in the database'] = 'albume şterse în baza de date';
+$lang['All %d photos are selected'] = 'Toate cele %d fotografii sunt selectate';
+$lang['All optimizations have been successfully completed.'] = 'Toate optimizările au fost terminate cu succes.';
+$lang['all'] = 'toate';
+$lang['Allow rating'] = 'Permite aprecierea';
+$lang['Allow user customization'] = 'Permite adaptarea utilizatorilor';
+$lang['Allow users to delete their own comments'] = 'Permite utilizatorilor să-şi şteargă propriile comentarii';
+$lang['Allow users to edit their own comments'] = 'Permite utilizatorilor să-şi modifice propriile comentarii';
+$lang['an error happened'] = 's-a produs o eroare';
+$lang['An error occured during extraction (%s).'] = 'S-a produs o eroare în timpul extragerii fişierelor (%s).';
+$lang['An information email was sent to group "%s"'] = 'Un mesaj de informare a fost trimis către grupul "%s"';
+$lang['and'] = 'şi';
+$lang['Anomaly'] = 'Anomalie';
+$lang['Rate'] = 'Evaluare';
+$lang['Add to caddie'] = 'adaugă în cărucior';
+
+$lang['%s has been successfully updated.'] = '%s a fost actualizat cu succes.';
+$lang['%s photos can not be regenerated'] = '%s fotografii nu pot fi regenerate';
+$lang['%s photos have been regenerated'] = '%s fotografii au fost regenerate';
+$lang['(this tag will be deleted)'] = '(această etichetă va fi ștearsă)';
+$lang['... or '] = '...sau';
+$lang['Activate comments'] = 'Activează comentarii';
+$lang['Add tags'] = 'Adaugă etichete';
+$lang['All extensions are up to date.'] = 'Toate extensiile sunt la zi.';
+$lang['All languages are up to date.'] = 'Toate limbile sunt la zi.';
+$lang['All plugins are up to date.'] = 'Toate pluginurile sunt la zi.';
+$lang['All themes are up to date.'] = 'Toate temele sunt la zi.';
+$lang['Allowed file types: %s.'] = 'Tipuri de fişiere permise: %s';
+$lang['An error has occured during upgrade.'] = 'O eroare a apărut în timpul actualizării.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Oricum numai webmasterii pot vedea acest document, nu administratorii.';
+$lang['Apply action'] = 'Aplicați acțiunea';
+$lang['Apply selected corrections'] = 'Aplicați corecţiile selectate';
+$lang['Apply to sub-albums'] = 'Aplicați la sub-albume';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Rezoluţie maximă aproximativă: %dM pixeli (aceasta înseamnă %dx%d pixeli).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Sunteţi sigur că doriţi să instalaţi această actualizare? Trebuie să verificați dacă această versiune nu trebuie dezinstalată mai întâi.';
+$lang['Are you sure you want to delete this plugin?'] = 'Sunteți sigur că doriți sa ștergeți pluginul acesta?';
+$lang['Are you sure you want to install this plugin?'] = 'Sunteți sigur că doriți să instalați pluginul acesta?';
+$lang['Associate to album'] = 'Asociază la album';
+$lang['Automatic correction'] = 'Corectare automată';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'O eroare a apărut în timpul extracției. Vă rugăm să verificaţi permisiunile fişierelor de instalare ale galeriei piwigo.<br><a href="%s">Dați click aici pentru a vedea jurnalul de erori </ a>.';
+$lang['Available only with HTML format'] = 'Disponibil doar în format HTML';
+$lang['Average rate'] = 'Rata medie ';
+$lang['Batch Manager'] = 'Manager de lot';
+$lang['Bound Theme'] = 'Consolidează tema';
+$lang['By %s'] = 'Câte %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'În mod implicit, Piwigo va crea o nouă dimensiune din  versiunea HD (înaltă definiţie) a fotografiei.';
+$lang['By rank'] = 'Pe rang';
+$lang['Can\'t connect to server.'] = 'Conexiunea la server este imposibilă.';
+$lang['Can\'t create temporary file.'] = 'Fişierul temporar nu poate fi creat.';
+$lang['Can\'t download archive.'] = 'Arhiva nu poate fi descărcată.';
+$lang['Can\'t read or extract archive.'] = 'Arhiva nu poate fi citită sau extrasă.';
+$lang['Cannot delete the old permalink !'] = 'Permalink-urile vechi nu pot fi şterse!';
+$lang['Change Admin Colors'] = 'Schimbă culorile de la modulul de administrare';
+$lang['Check all'] = 'Verificaţi tot';
+$lang['Check automatic corrections'] = 'Verificaţi corecţiile automate';
+$lang['Check for updates'] = 'Verificaţi pentru actualizări';
+$lang['Check integrity'] = 'Verificare de integritate';
+$lang['Choose an action'] = 'Alege o acțiune';
+$lang['Choose an option'] = 'Alege o opțiune';
+$lang['Classic display'] = 'Afișare clasică';
+$lang['Complementary mail content'] = 'Conţinut suplementar al mailului';
+$lang['Configuration'] = 'Configuraţie';
+$lang['Confirm merge'] = 'Confirmaţi îmbinare';
+$lang['Continue processing treatment'] = 'Continuă tratamentul în curs de desfăşurare';
+$lang['Correction applied with error'] = 'Corecţie aplicată cu eroare';
+$lang['Correction applied with success'] = 'Corecţie aplicată cu succes';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Anomalia rectificată nu va mai fi ignorată';
+$lang['Correction'] = 'Corectare';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Creați dosarul "%s" la rădăcina de instalare Piwigo';
+$lang['Create this site'] = 'Creați siteul acesta';
+$lang['Create'] = 'Creare';
+$lang['automatic order'] = 'ordonare automată';
+$lang['average time'] = 'timpul mediu';
+$lang['between'] = 'între';
+$lang['clean'] = 'curățare';
+$lang['confirm'] = 'confirmă';
+$lang['create a new album'] = 'creați un nou album';
+$lang['created'] = 'creat(ă)';
+$lang[' and %d virtuals'] = 'și %d virtual';
+$lang['%d physicals'] = '%d fizic';
+$lang['Crop'] = 'Editează';
+$lang['Database synchronization with files'] = 'Sincronizarea bazei de date cu fișierele';
+$lang['Date'] = 'Data';
+$lang['Day'] = 'Zi';
+$lang['Deactivate all'] = 'Dezactivează tot';
+$lang['Default comments order'] = 'Ordinea implicită a comentariilor';
+$lang['Default display'] = 'Vizualizare implicită';
+$lang['Default photos order'] = 'Ordinea implicită a imaginilor';
+$lang['Default user cannot be deleted'] = 'Utilizatorul implicit nu poate fi șters';
+$lang['Default user does not exist'] = 'Utilizatorul implicit nu există';
+$lang['Delete orphan tags'] = 'Șterge tagurile orfane';
+$lang['Delete selected photos'] = 'Șterge imaginile selectate';
+$lang['Delete this language'] = 'Șterge această limbă';
+$lang['Delete this theme'] = 'Șterge această temă';
+$lang['Deleted on'] = 'Șters la data de';
+$lang['Detailed informations'] = 'Informație detaliată';
+$lang['Directory does not exist'] = 'Directorul nu există';
+$lang['Directory'] = 'Director';
+$lang['Documentation'] = 'Documentație';
+$lang['Download,'] = 'Descarcă';
+$lang['Downloads'] = 'Descărcări';
+$lang['Drop into album'] = 'Selectează un album';
+$lang['Dump Database'] = 'Șterge baza de date';
+$lang['Duplicates'] = 'Duplicate';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'EROARE: ACEST PLUGIN LIPSEȘTE DAR ESTE INSTALAT! DEZINSTALEAZĂ-L ACUM.';
+$lang['ERROR'] = 'EROARE';
+$lang['Edit album'] = 'Editează album';
+$lang['Element'] = 'Element';
+$lang['Error list'] = 'Listă erori';
+$lang['Error on file "%s" : %s'] = 'Eroare in fișierul "%s" : %s';
+$lang['FTP + Synchronization'] = 'FTP + Sincronizare';
+$lang['File'] = 'Fișier';
+$lang['Group'] = 'Grup';
+$lang['Hide'] = 'Ascunde';
+$lang['Hour'] = 'Ora';
+$lang['default values'] = 'valori implicite';
+$lang['default'] = 'implicit';
+$lang['delete album'] = 'șterge album';
+$lang['delete photo'] = 'șterge imagine';
+$lang['delete this site and all its attached elements'] = 'Șterge acest sit și toată informația asociată';
+$lang['deleted'] = 'șters';
+$lang['delete'] = 'șterge';
+$lang['directories + files'] = 'diurectoare + fișiere';
+$lang['display'] = 'vizualizează';
+$lang['errors during synchronization'] = 'erori în timpul sincronizării';
+$lang['even already synchronized photos'] = 'chiar și imaginile deja sincronizate';
+$lang['existing album'] = 'album existent';
+$lang['hide details'] = 'ascunde detaliile';
+$lang['Discover album:'] = 'Descoperă albumul:';
+$lang['Dissociate from album'] = 'Disociază de album';
+$lang['Do you want to activate anyway?'] = 'Doriți să activați oricum?';
+$lang['Drag to re-order'] = 'Faceţi clic-şi-trageţi pentru a rearanja';
+$lang['Edit album permissions'] = 'Editează permisiunile la album';
+$lang['Edit ranks'] = 'Editează clasamentul';
+$lang['Element type'] = 'Tip de element';
+$lang['Email administrators when a comment is deleted'] = 'Trimiteți un mail la administratori atunci când un comentariu este eliminat';
+$lang['Email administrators when a comment is modified'] = 'Trimiteți un mail la administratori atunci când un comentariu este modificat';
+$lang['Error when sending email to %s [%s].'] = 'Eroare la transmiterea e-mailului la %s[%s].';
+$lang['Errors caption'] = 'Legenda erorilor';
+$lang['Everybody'] = 'Toată lumea';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Timpul de execuție fiind terminat, tratamentul trebuie să continue [Estimare: %d secunde].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Timpul de execuție fiind depăşit, tratamentul trebuie să continue [Estimare: %d secunde].';
+$lang['Exif extension not available, admin should disable exif use'] = 'Extinderile Exif nu sunt disponibile, administratorul ar trebui să dezactiveze utilizarea exif';
+$lang['Extend for templates'] = 'Extindeţi şabloanele';
+$lang['Extensions Update'] = 'Actualizarea extensiilor';
+$lang['Failed to write file to disk'] = 'Scrierea unui fişier pe disc nu a funcționat';
+$lang['File upload stopped by extension'] = 'Trimiterea fişierului e blocată din cauza extensiei';
+$lang['File/directory read error'] = 'Eroare de citire a dosarului/fișierului';
+$lang['Follow Orientation'] = 'Urmaţi Orientare';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Plugin-urile următoare ar putea fi incompatibile cu noua versiune a Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Temele următoare ar putea fi incompatibile cu noua versiune a Piwigo:';
+$lang['Forbid this language to users'] = 'Interziceți acest limbaj utilizatorilor';
+$lang['Forbid this theme to users'] = 'Interziceți această temă utilizatorilor';
+$lang['Forbidden'] = 'Interzis';
+$lang['GD library is missing'] = 'Biblioteca GD lipseşte';
+$lang['GD version'] = 'Versiunea GD';
+$lang['General statistics'] = 'Statistici generale';
+$lang['Get Support on Piwigo Forum'] = 'Primiți sprijin pe forumul Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dați acces de scriere (chmod 777) la dosarul "%s" în dosarul rădăcină de instalare Piwigo';
+$lang['Go to %s or %s for more informations'] = 'Mergeți la %s sau %s pentru mai multe informații';
+$lang['Go to'] = 'Mergeți la';
+$lang['Graphics Library'] = 'Biblioteca de grafice';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'afișează maximul de informaţii (albume şi fotografii adăugate, albume şi fotografii şterse)';
+$lang['dissociate from group'] = 'disociază de grup';
+$lang['first photo added on %s'] = 'prima fotografie a fost adăugată pe %s';
+$lang['for the file format'] = 'pentru formatul de fişier';
+$lang['for this file format'] = 'pentru acest format de fişier';
+$lang['global mode'] = 'Mod global';
+$lang['%d day'] = '%d zi';
+$lang['%d days'] = '%d zile';
+$lang['%d hour'] = '%d oră';
+$lang['%d hours'] = '%d ore';
+$lang['%d minute'] = '%d minut';
+$lang['%d minutes'] = '%d minute';
+$lang['%d month'] = '%d lună';
+$lang['%d months'] = '%d luni';
+$lang['%d second'] = '%d secundă';
+$lang['%d seconds'] = '%d secunde';
+$lang['%d week'] = '%d săptămână';
+$lang['%d weeks'] = '%d săptămâni';
+$lang['%d year'] = '%d an';
+$lang['%d years'] = '%d ani';
+$lang['%s ago'] = '%s în urmă';
+$lang['Apply watermark if height is bigger than'] = 'Aplică filigran dacă lungimea este mai mare de';
+$lang['Apply watermark if width is bigger than'] = 'Aplică filigran dacă lațimea este mai mare de';
+$lang['Edit photo'] = 'Editează imagine';
+$lang['IP'] = 'IP';
+$lang['Ignore selected anomalies'] = 'Ignoră anomaliile selectate';
+$lang['Ignore this update'] = 'Ignoră această actualizare';
+$lang['Image Quality'] = 'Calitatea imaginii';
+$lang['Image id'] = 'ID-ul imaginii';
+$lang['Inactive Languages'] = 'Limbi inactive';
+$lang['Inactive Plugins'] = 'Pluginuri inactive';
+$lang['Inactive Themes'] = 'Teme inactive';
+$lang['Include display of recent photos grouped by dates'] = 'Include afișarea imaginilor recente grupate in funcție de dată';
+$lang['Installed Languages'] = 'Limbi instalate';
+$lang['Installed Themes'] = 'Teme instalate';
+$lang['Invert'] = 'Inversează';
+$lang['Language has been successfully installed'] = 'Această limbă a fost instalată cu succes';
+$lang['Languages which need upgrade'] = 'Limbi ce au nevoie de actualizare';
+$lang['Languages'] = 'Limbi';
+$lang['Last import'] = 'Importul precedent';
+$lang['Last revisions'] = 'Revizuirea perecdentă';
+$lang['Maximum height'] = 'Lungimea maximă';
+$lang['Maximum width'] = 'Lățimea maximă';
+$lang['Multiple Size'] = 'Mărimi multiple';
+$lang['New Version'] = 'Versiune Nouă';
+$lang['No photo in this album'] = 'Acest album nu conține nici o imagine';
+$lang['No results'] = 'Nu există rezultate';
+$lang['Number of downloads'] = 'Număr descărcări';
+$lang['Numeric identifier : %d'] = 'Identificator numeric: %d';
+$lang['Opacity'] = 'Opacitate';
+$lang['Overall'] = 'Privire de ansamblu';
+$lang['Pages seen'] = 'Pagini vizionate';
+$lang['Parameter'] = 'Setări';
+$lang['Parameters'] = 'Parametri';
+$lang['Permissions'] = 'Permisiuni';
+$lang['Photo %s of %s'] = 'Imaginea %s din %s';
+$lang['Photo informations updated'] = 'Datele imaginii au fost actualizate';
+$lang['Photo name'] = 'Titlul imaginii';
+$lang['Rated %d times, score : %.2f'] = 'Rating %d ori, scor: %.2f';
+$lang['This album contains %d photos, added on %s.'] = 'Acest album conține %d imagini, adăgate la %s';
+$lang['Watermark'] = 'Fligran';
+$lang['add a new watermark'] = 'adaugă filigran nou';
+$lang['administrators'] = 'adminstratori';
+$lang['bottom left corner'] = 'Colțul stânga jos';
+$lang['bottom right corner'] = 'Colțul dreapta jos';
+$lang['guest'] = 'oaspete';
+$lang['include child albums'] = 'Include albumele descendente';
+$lang['leave'] = 'părăsește';
+$lang['middle'] = 'mijloc';
+$lang['nothing'] = 'nimic';
+$lang['only directories'] = 'doar directoare';
+$lang['photos added in the database'] = 'imagini adăgate in baza de date';
+$lang['top left corner'] = 'Colțul stânga sus';
+$lang['top right corner'] = 'Colțul dreapta sus';
+$lang['Group management'] = 'Administrarea grupurilor';
+$lang['Height'] = 'Lungime';
+$lang['Hello,'] = 'Bună,';
+$lang['Hello'] = 'Bună';
+$lang['Help Me'] = 'Ajută-mă';
+$lang['Ignore All'] = 'Ignoră tot';
+$lang['Impossible automatic correction'] = 'Corecția automată nu este posibilă';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Această limbă nu poate fi dezactivată, ai nevoie de cel puțin o limbă';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Această temă nu poate fi dezactivată, ai nevoie de cel puțin o temă';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Această temă nu poate fi ștearsă, pentru că alte teme depind de ea: %s';
+$lang['Main Page'] = 'Pagina principală';
+$lang['Manage Permissions'] = 'Administrează permisiunile';
+$lang['Manage this set of %d photos'] = 'Administrează acest set de %d imagini';
+$lang['Manage'] = 'Administrează';
+$lang['Miscellaneous'] = 'Diverse';
+$lang['Month'] = 'Lună';
+$lang['New photos added'] = 'Imagini noi adăugate';
+$lang['New photos were added'] = 'Imagini noi au fost adăguate';
+$lang['No photo in the current set.'] = 'Nu există imagini în setul curent';
+$lang['Obsolete Plugins'] = 'Plugin-uri învechite';
+$lang['Photos'] = 'Imagini';
+$lang['Please wait...'] = 'Așteaptă te rog...';
+$lang['Plugin has been successfully copied'] = 'Plugin-ul a fost copiat cu succes';
+$lang['Predefined filter'] = 'Filtre predefinite';
+$lang['Save Settings'] = 'Salvează setările';
+$lang['Section'] = 'Secțiune';
+$lang['Select an album'] = 'Selectează un album';
+$lang['Select at least one comment'] = 'Selectează cel puțin un comentariu';
+$lang['group "%s" added'] = 'grupul "%s" a fost adăugat';
+$lang['group "%s" deleted'] = 'grupul "%s" a fost șters';
+$lang['group "%s" updated'] = 'grupul "%s" a fost actualizat';
+$lang['height must be a number superior to'] = 'lungimea trebuie să fie un număr mai mare decât';
+$lang['new'] = 'nou';
+$lang['photos deleted from the database'] = 'imagini șterse din baza de date';
+$lang['photos per page'] = 'imagini pe pagină';
+$lang['pixels'] = 'pixeli';
+$lang['registration date'] = 'data registrării';
+$lang['A locked gallery is only visible to administrators'] = 'O galerie blocata este vizibila doar administratorilor';
+$lang['Added by %s'] = 'Adaugat de %s';
+$lang['Applications'] = 'Aplicatii';
+$lang['Automatic sort order'] = 'Sortare ordine automata';
+$lang['Available on'] = 'Disponibil in';
+$lang['Available versions for'] = 'Versiune disponibila pentru';
+$lang['Cancel'] = 'Anulare';
+$lang['Hit'] = 'Accesari';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Daca intampini probleme sau au intrebari, trimite un mesaj la';
+$lang['Instructions to use Piwigo'] = 'Instructiuni pentru a folosi Piwigo';
+$lang['Last hit'] = 'Ultima accesare';
+$lang['Last send'] = 'Ultima trimitere';
+$lang['Learn more'] = 'Afla mai multe';
+$lang['List'] = 'Lista';
+$lang['Lock'] = 'Blocat';
+$lang['[NBM] Problems or questions'] = '[NBM] Probleme sau întrebări';
+$lang['any visitor can see this album'] = 'orice vizitator poate viziona acest album';
+$lang['create a new site'] = 'creează un site nou';
+$lang['jump to album'] = 'sari la album';
+$lang['jump to photo'] = 'sari la imagine';
+$lang['registered users'] = 'utilizatori înregistrați';
+$lang['remove author'] = 'șterge autor';
+$lang['remove tags'] = 'șterge taguri';
+$lang['remove this filter'] = 'șterge acest filtru';
+$lang['remove title'] = 'șterge titlu';
+$lang['selection'] = 'selecție';
+$lang['show details'] = 'arată detalii';
+$lang['simple visitors'] = 'vizitatori simpli';
+$lang['synchronize files structure with database'] = 'sincronizează structura fișierelor cu baza de date';
+$lang['test'] = 'test';
+$lang['the forum'] = 'forumul';
+$lang['total time'] = 'timp total';
+$lang['unknown'] = 'necunoscut';
+$lang['user "%s" added'] = 'utilizatorul "%s" a fost adăgat';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_guest'] = 'Oaspete';
+$lang['user_status_normal'] = 'Utilizator';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['width must be a number superior to'] = 'lățimea trebuie să fie mai mare de';
+$lang['wrong filename'] = 'nume de fișier greșit';
+$lang['Mail sent to %s [%s].'] = 'Mail trimis la %s [%s].';
+$lang['Main'] = 'Principal';
+$lang['%s in the future'] = '%s în viitor';
+$lang['Manage the members'] = 'Gestionați membrii';
+$lang['photos informations synchronized with files metadata'] = 'Informațiile fotografiilor sincronizate cu metadatele fișierelor';
+$lang['singly represented'] = 'miniatura fixă pentru album';
+$lang['synchronize files metadata with database photos informations'] = 'sincronizați fotografiile din baza de date cu metadatele fișierelor';
+$lang['unit mode'] = 'mono-mod';
+$lang['unset'] = 'nesetat';
+$lang['update the database from files'] = 'actualizarea bazei de date cu fișiere';
+$lang['pending validation'] = 'în așteptarea validării';
+$lang['photos candidates for metadata synchronization'] = 'fotografii posibile pentru sincronizarea metadatelor';
+$lang['photos updated in the database'] = 'fotografii actualizate în baza de date';
+$lang['randomly represented'] = 'miniatura aleatorie a albumului ';
+$lang['ranks'] = 'locuri';
+$lang['remove creation date'] = 'eliminați data creării';
+$lang['set to'] = 'setat la';
+$lang['status'] = 'statut';
+$lang['sub-albums'] = 'sub-albume';
+$lang['target'] = 'țintă';
+$lang['test this remote site'] = 'testează acest site îndepărtat';
+$lang['the wiki'] = 'wiki-ul';
+$lang['user_status_generic'] = 'Generic';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'vizitatorii trebuie să se autentifice și să aibă permisiunile corespunzătoare pentru a vedea acest album';
+$lang['Local'] = 'Local';
+$lang['Locked'] = 'Blocat';
+$lang['Mail address is obligatory for all users'] = 'Adresa de mail e obligatorie pentru toți utilizatorii';
+$lang['Mail content'] = 'Conținutul mailului';
+$lang['Main "guest" user does not exist'] = 'Utilizatorul principal "oaspete" nu există';
+$lang['Main "guest" user status is incorrect'] = 'Statutul utilizatorului principal "oaspete" nu este corect';
+$lang['Main "webmaster" user does not exist'] = 'Utilizatorul principal "webmaster" nu există';
+$lang['Main "webmaster" user status is incorrect'] = 'Statutul utilizatorului principal "webmaster" nu este corect';
+$lang['Make this language available to users'] = 'Puneți această limbă la dispoziția utilizatorilor';
+$lang['Make this theme available to users'] = 'Puneți această temă la dispoziția utilizatorilor';
+$lang['Manage photos'] = 'Gestionați fotografiile';
+$lang['Landscape'] = 'Peisaj';
+$lang['Install on your computer,'] = 'Instalați pe calculatorul dvs.,';
+$lang['Information data registered in database'] = 'Datele sunt înregistrate în baza de date ';
+$lang['Images manual order was saved'] = 'Ordinea manuala a imaginilor salvată';
+$lang['I decide to update anyway'] = 'Decid să actualizez oricum';
+$lang['High definition enabled'] = 'Înaltă definiție activată';
+$lang['High definition'] = 'De înaltă definiție';
+$lang['Guest cannot be deleted'] = 'Oaspeții nu pot fi șterși';
+$lang['Guest Settings'] = 'Setările oaspeților';
+$lang['Groups and users'] = 'Grupuri și utilizatori';
+$lang['Generate multiple size images'] = 'Generați imagini de diferite dimensiuni ';
+$lang['Gallery unlocked'] = 'Galerie deblocată';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funcționalitățile sale includ navigarea prin galerie, crearea de albume foto și transferul de poze.';
+$lang['Duplicate selected tags'] = 'Duplică etichetele selecționate';
+$lang['Center of interest'] = 'Centrul de interes';
+$lang['Duplicate'] = 'Duplică';
+$lang['Delete multiple size images'] = 'Șterge imagini de dimensiuni diferite';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'În mod implicit, centrul de interes este plasat în mijlocul fotografiei.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture este proiectat pentru fotografi profesioniști cu simplitatea iPhoto-ului.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture este un instrument puternic proiectat pentru redefinirea imaginilor și pentru gestiunea de biblioteci mari pe un sistem Mac.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom este un program pentru fotografii proiectat pentru a gestiona și a prelucra mari cantități de imagini digitale.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo pentru iOS</em> programul vă permite să vă conectați iPhone-ul, iPad-ul sau iPad-ul Touch la galeria dvs. Piwigo, să creați unele albume și să transmiteți mai multe fotografii în același timp.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo pentru Android</em> programul vă permite să vă conectați telefonul sau tableta dvs. Android  la galeria dvs. Piwigo, să creați unele albume și să transmiteți mai multe fotografii în același timp.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'u% de utilizatori  au permisiunea automată, deoarece aceștia aparțin unui grup cu permisii.';
+$lang['View in gallery'] = 'Vezi în galerie';
+$lang['Used metadata'] = 'Metadate utilizate';
+$lang['User'] = 'Utilizator';
+$lang['User "%s" created with "%s" like password'] = 'Utilizator "%s" creat cu parola "%s" ';
+$lang['User %s [%s] added.'] = 'Utilizator %s [%s] adăugat.';
+$lang['User list'] = 'Listă de utilizatori';
+$lang['There is no other language available.'] = 'Nicio altă limbă nu este disponibilă.';
+$lang['There is no other theme available.'] = 'Nicio altă temă nu este disponibilă.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Acest album conţine %d imagini, adăugate între %s şi %s.';
+$lang['Uncheck all'] = 'Debifează tot';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Eticheta "%s" este acum un duplicat al lui "%s"';
+$lang['Source tag'] = 'Etichetă sursă';
+$lang['Piwigo Administration'] = 'Administrare Piwigo';
+$lang['Portrait'] = 'Portret';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Această temă nu a putut fi activată, deoarece tema părinte lipseşte: %s.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Imposibil de dezactivat această limbă, alege întâi altă limbă ca implicit.';
+$lang['No file was uploaded'] = 'Niciun fişier nu a fost încărcat';
+$lang['No group is permitted to see this private album'] = 'Niciunui grup nu îi este permis să vadă acest album';
+$lang['No photo can be deleted'] = 'Nicio imagine nu poate fi ştearsă';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Fişierele încărcate depăşesc directiva post_max_size directive din php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Versiunea instalată a %s [%s] nu este compatibilă cu versiunea cerută [%s]';
+$lang['Resize after upload'] = 'Redimensionează după încărcare';
+$lang['See you soon,'] = 'Ne vedem în curând,';
+$lang['See you soon.'] = 'ne vedem în curând.';
+$lang['Select a file'] = 'Alege un fişier';
+$lang['Select at least two tags for merging'] = 'Alege cel puţin două etichete pentru îmbinare';
+$lang['Select files'] = 'Alege fişiere';
+$lang['Toggle \'default group\' property'] = 'Inversează proprietatea \'grup implicit\'';
+$lang['Tools'] = 'Unelte';
+$lang['Type here the author name'] = 'Scrie aici numele autorului';
+$lang['Type here the name of the new group'] = 'Scrie aici numele noului grup';
+$lang['Type here the title'] = 'Scrie aici titlul';
+$lang['Type in a search term'] = 'Scrie un termen de căutare';
+$lang['Synchronize'] = 'Sincronizează';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Etichetele <em>%s</em> îmbinate în eticheta <em>%s</em:';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Fişierul sau dosarul nu pot fi accesate (nu există sau accesul nu este permis)';
+$lang['The following tag was deleted'] = 'Următoarele etichete au fost şterse';
+$lang['The gallery URL is not valid.'] = 'URL-ul galeriei nu este valid.';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Fişierul încărcat depăşeşte directiva MAX_FILE_SIZE care a fost specificată în formularul HTML';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Fişierul încărcat depăşeşte directiva upload_max_filesize din php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Fişierul încărcat a fost încărcat doar paţial';
+$lang['Select groups...'] = 'Alege grupuri...';
+$lang['Select the destination tag'] = 'Alege eticheta de destinaţie';
+$lang['Select users...'] = 'Alege utilizatori...';
+$lang['Select:'] = 'Alege:';
+$lang['Send'] = 'Trimite';
+$lang['Send an information email to group members'] = 'Trimite mesaj electronic de informare la toţi membrii grupului';
+$lang['Send mail on HTML format'] = 'Trimite mesaj electronic în format HTML';
+$lang['Privacy level'] = 'Nivel de confidenţialitate';
+$lang['Privacy level set to "%s"'] = 'Nivelul de confidenţialitate a fost setat la "%s"';
+$lang['Purge history detail'] = 'Epurează detaliile istoricului';
+$lang['Purge history summary'] = 'Epurează sumarul istoricului';
+$lang['Purge search history'] = 'Epurează istoricul de căutări';
+$lang['Purge sessions'] = 'Epurează sesiunile';
+$lang['Quick Local Synchronization'] = 'Sincronizare Locală Rapidă';
+$lang['Ratio'] = 'Raţie';
+$lang['Read Piwigo Documentation'] = 'Citeşte Documentaţia Piwigo';
+$lang['Remove all filters'] = 'Înlătură toate filtrele';
+$lang['Piwigo configuration'] = 'Configurare Piwigo';
+$lang['Piwigo version'] = 'Versiune Piwigo';
+$lang['Please select at least two groups'] = 'Te rog alege cel puţin două grupuri';
+$lang['Permission granted for users'] = 'Permisiuni acordate pentru utilizator';
+$lang['Permission management'] = 'Management de permisiuni';
+$lang['Piwigo for Android'] = 'Piwigo pentru Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pentru iOS (iPhone, iPad, iPod Touch=';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Numele unui grup trebuie să nu conţină " sau \' sau sa fie gol.';
+$lang['The name of an album must not be empty'] = 'Numele unui album trebuie să nu fie gol';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Numele dosarelor şi fişierelor trebuie să conţină numai litere, cifre, "-", "_" sau ".".';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Numărul comentariilor de pe o pagină trebuie să fie între 5 şi 50, inclusiv.';
+$lang['The original image quality must be a number between %d and %d'] = 'Calitatea imaginii originale trebuie să fie un număr între %d si %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Înălţimea maximă a originalului trebuie să fie un număr între %d şi %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Lăţimea maximă a originalului trebuie să fie un număr între %d şi %d';
+$lang['The whole page'] = 'Întreaga pagină';
+$lang['The whole set'] = 'Întregul set';
+$lang['Theme has been successfully installed'] = 'Tema a fost instalată cu succes';
+$lang['Themes'] = 'Teme';
+$lang['This album contains no photo.'] = 'Acest album nu conţine nicio imagine.';
+$lang['This group will be set to default'] = 'Acest grup va fi folosit implicit';
+$lang['This group will be unset to default'] = 'Acest grup nu va mai fi folosit implicit';
+$lang['This name is already used by another group.'] = 'Acest nume este deja folosit de un alt grup.';
+$lang['This site already exists'] = 'Această pagină există deja.';
+$lang['This theme was not designed to be directly activated'] = 'Această temă nu a fost proiectată pentru a fi activată direct';
+$lang['Time'] = 'Timp';
+$lang['Title'] = 'Titlu';
+$lang['Virtual Links'] = 'Legături virtuale';
+$lang['Virtual album'] = 'Album virtual';
+$lang['Visit Gallery'] = 'Vizitează galeria';
+$lang['Visit Piwigo project website'] = 'Vizitează pagina proiectului Piwigo';
+$lang['Visit language site'] = 'Vizitează pagina de traduceri';
+$lang['Visit theme site'] = 'Vizitează pagina de teme';
+$lang['Visited %d times'] = 'Vizitat de % ori';
+$lang['Week starts on'] = 'Săptămâna incepe';
+$lang['Who can see these photos?'] = 'Cine poate vedea aceste imagini?';
+$lang['Who can see this photo?'] = 'Cine poate vedea această imagine?';
+$lang['Width'] = 'Lăţime';
+$lang['With blank value, gallery title will be used'] = 'Dacă este gol, va fi fi folosit titlul galeriei';
+$lang['With no album'] = 'Fără niciun album';
+$lang['With no tag'] = 'Fără nicio etichetă';
+$lang['apply automatic sort order'] = 'aplică ordinea automata de sortare';
+$lang['between %d and %d pixels'] = 'între %d şi %d pixeli';
+$lang['cancel manual order'] = 'anulează ordinea manuală';
+$lang['include photos with lower privacy level'] = 'include imagini cu nivel de confidenţialitate mic';
+$lang['manual order'] = 'ordine manuală';
+$lang['modified'] = 'modificat';
+$lang['no write access'] = 'fără drept de scriere';
+$lang['on'] = 'pe';
+$lang['on the %d selected photos'] = 'pe cele %d imagini alese';
+$lang['other'] = 'alte';
+$lang['overrides existing values with empty ones'] = 'suprascrie valorile existente cu unele goale';
+$lang['Summary'] = 'Sumar';
+$lang['Synchronize metadata'] = 'Sincronizează metadate';
+$lang['The anomaly will be ignored until next application version'] = 'Anomalia aceasta va fi ignorată până la versiunea următoare a aplicaţiei';
+$lang['Selection'] = 'Selecţie';
+$lang['Send mail as'] = 'Trimite mesaj electronic ca';
+$lang['Send mail to users'] = 'Trimite mesaj electronic la utilizatorii';
+$lang['Show menubar'] = 'Arată bara de meniu';
+$lang['Simulation'] = 'Simulare';
+$lang['Refresh'] = 'Reîmprospătează';
+$lang['Refresh photo set'] = 'Reîmprospătează setul de imagini';
+$lang['Reinitialize check integrity'] = 'Reiniţializează verificarea de integritate';
+$lang['Rename'] = 'Renumeşte';
+$lang['Repair and optimize database'] = 'Repară şi optimizează baza de date';
+$lang['Resize'] = 'Redimensionează';
+$lang['Restore'] = 'Restaurează';
+$lang['Save manual order'] = 'Salvează ordinea manuală';
+$lang['Save visits in history for'] = 'Salvează vizitele în istoric pentru';
+$lang['Search for new images in the directories'] = 'Caută imagini noi în dosarele';
+$lang['No group selected, no action possible.'] = 'Niciun grup ales, nicio acţiune posibilă.';
+$lang['No mail to send.'] = 'Niciun mesaj electronic de trimis.';
+$lang['No members to manage'] = 'Niciun membru de administrat';
+$lang['Merge selected groups'] = 'Îmbină grupurile alese';
+$lang['Merge selected tags'] = 'Îmbină etichetele alese';
+$lang['Merge tags'] = 'Îmbină etichete';
+$lang['Missing a temporary folder'] = 'Lipseşte un dosar temporar';
+$lang['Modify information'] = 'Modifică informaţie';
+$lang['Move to album'] = 'Mută în album';
+$lang['Name of the duplicate'] = 'Numele duplicatului';
+$lang['Manual order'] = 'Ordine manuală';
+$lang['Maximum file size: %sB.'] = 'Dimensiunea maximă a fişierului: %sB.';
+$lang['Menu Management'] = 'Meniuri';
+$lang['Metadata synchronization results'] = 'Rezultatele sincronizării metadatelor';
+$lang['Minimum height'] = 'Înălţime minimă';
+$lang['Minimum privacy level'] = 'Nivel minim de confidenţialitate';
+$lang['Minimum width'] = 'Lăţime minimă';
+$lang['Operation in progress'] = 'Tratament în progres.';
+$lang['Optimizations have been completed with some errors.'] = 'Optimizările au fost terminate cu unele erori.';
+$lang['Optional URL keyword'] = 'Cuvinte cheie optionale pentru URL';
+$lang['Order of menubar items has been updated successfully.'] = 'Ordinea elemenetelor din bara de meniu a fost adusă la zi cu succes.';
+$lang['Original Size'] = 'Mărime Originală';
+$lang['Original file : %s'] = 'Fişier original: %s.';
+$lang['Orphan tags deleted'] = 'Etichete orfane şterse.';
+$lang['Page end'] = 'Sfărşitul paginii';
+$lang['Panorama'] = 'Panoramă';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Lipseşte confirmarea parolei. Te rog să confirmi parola aleasă.';
+$lang['Password is missing. Please enter the password.'] = 'Parola lipseşte. Te rog sa introduci parola-';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Alege o zonă cu mouseul pentru a defini un nou centru de interes.';
+$lang['There is no group in this gallery.'] = 'Nu există niciun grup în această galerie.';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Foloseşte ordinea implicită de sortare a imaginilor (definită în fişierul de configurare)';
+$lang['You are running the latest version of Piwigo.'] = 'Rulezi ultima versiune a Piwigo.';
+$lang['You can activate only one mobile theme.'] = 'Poţi activa numai o temă pentru mobile odată.';
+$lang['You cannot move an album in its own sub album'] = 'Nu poţi muta un album în popriul său sub-album';
+$lang['You have %d orphan tags: %s.'] = 'Ai %d etichete orfane:%s.';
+$lang['between %.2f and %.2f'] = 'între %.2f şi %.2f';
+$lang['With no virtual album'] = 'Fără album virtual';
+$lang['Year'] = 'An';
+$lang['Zoom'] = 'Marește';
+$lang['Thumbnails generation in progress...'] = 'Creația miniaturilor este în curs...';
+$lang['Thumbnail'] = 'Miniatură';
+$lang['There is no other plugin available.'] = 'Nu există alt plugin disponibil.';
+$lang['Themes which need upgrade'] = 'Teme care au nevoie de actualizare';
+$lang['Templates'] = 'Modele';
+$lang['Unlocked'] = 'Deblocat';
+$lang['Updates'] = 'Actualizări';
+$lang['Update in progress... Please wait.'] = 'Actualizare în curs...Vă rugăm să așteptați.';
+$lang['Update albums informations'] = 'Actualizați informațiile despre albume';
+$lang['Update Complete'] = 'Actualizare terminată';
+$lang['Update All'] = 'Actualizați totul';
+$lang['Unsubscribed'] = 'Dezabonat';
+$lang['Unsubscribe from notification by mail'] = 'Dezabonați-vă de la notificare prin e-mail';
+$lang['Uninstalled Plugins'] = 'Pluginuri dezinstalate';
+$lang['Unlock gallery'] = 'Deblocați galeria foto';
+$lang['Two updates are available'] = 'Două actualizări sunt disponibile';
+$lang['You might go to plugin list to install and activate it.'] = 'Mergeți la lista de plugin-uri pentru a le instala și activa.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'V-ați dezabonat de la primirea notificărilor prin e-mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'V-ați abonat pentru a primi notificări prin e-mail.';
+$lang['Y Position'] = 'Y Poziție';
+$lang['X Repeat'] = 'X Repetare';
+$lang['X Position'] = 'X Poziție';
+$lang['Web Form'] = 'Formular web';
+$lang['Waiting'] = 'În așteptare';
+$lang['Visit plugin site'] = 'Vizitați site-ul pluginului';
+$lang['User status'] = 'Statutul utilizatorului';
+$lang['only perform a simulation (no change in database will be made)'] = 'efectuează numai o simulare (nimic nu va fi schimbat în baza de date)';
+$lang['number of miniaturized photos'] = 'număr de miniaturi create';
+$lang['none'] = 'nici unul';
+$lang['manage sub-albums'] = 'gestionează sub-albume';
+$lang['manage album photos'] = 'gestionează fotografiile albumului';
+$lang['high'] = 'înalt';
+$lang['custom'] = 'Pe măsură';
+$lang['[%s] Visit album %s'] = '[%s] Vizitează albumul %s';
+$lang['Your configuration settings are saved'] = 'Setările d-voastră de configurare sunt salvate';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Ai specificat <i>$conf[\'order_by\']</i> în fișierul tău local de configurație, acest parametru este perimat, șterge-l sau renumește-l în <i>$conf[\'order_by_custom\']</i> !';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam este un administrator avansat sursă libera de fotografii digitale pentru Linux, Windows și MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam este proiectat pentru fotografi care vor să vizualizeze, administreze, editeze, îmbunătățească, organizeze, eticheteze și partajeze fotografii.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto este administratorul implicit de fotografii digitale din MacOSX. Plugin-ul Piwigo de export iți permite să creezi albume noi și să exporți fotografiile tale din iPhoto direct în galeria ta Piwigo.';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader înseamnă <em>Piwigo Uploader</em>. Din calculatorul tău, pLoader îți pregătește fotografiile și le transferă în galeria ta Piwigo.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Utilizatorul %s [%s] a fost adăugat la lista de abonați.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Utilizatorul %s [%s] nu a fost adăugat la lista de abonați.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Utilizatorul %s [%s] nu a fost șters din lista de abonați.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Utilizatorul %s [%s] a fost șters din lista de abonați.';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENȚIE! Aces plugin nu pare să fie compatibil cu această versiune de Piwigo.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Atenție: abonarea sau dezabonarea vor trimite mesaje la utilizatori';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pentru a exporta fotografiile tale din digiKam în Piwigo, instalează digiKam si plugin-urile Kipi.';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell este un organizator sursă liberă de fotografii digitale care ruleaza pe Linux. Este organizatorul de fotografii implicit în Ubuntu și Fedora.';
+$lang['Some themes and plugins may be not available yet.'] = 'Unele teme și plugin-uri s-ar putea să nu fie încă disponibile.';
+$lang['Start pLoader and add your photos.'] = 'Pornește pLoader și adaugă fotografiile tale.';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Verifică permisiunile dosarului "plugins" și ale sub-dosarelor (CHMOD).';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'În fișierul tău php.ini, upload_max_filesize (%sB) este mai mare decât post_max_size (%sB), ar trebui să modifici această setare';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Include datele istorice (Atenție: memoria server-ului poate fi depășită)';
+$lang['Manage photo ranks'] = 'Ordine de sortare pentru fotografii';
+$lang['Not cropped correctly?'] = 'Nu a fost decupat corect?';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Pe Linux-ul tău, instalează Shotwell cu ajutorul administratorului de pachete și activează opțiunea Piwigo de publicare.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) este un client Piwigo sursă deschisă (GPL v3) pentru platforma Android.';
+$lang['Replacers (customized templates)'] = 'Substitute (șabloane personalizate)';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurează configurația implicită. Îți vei pierde setările plugin-urilor!';
+$lang['Save Template Directory'] = 'Salvează dosarul de șabloane';
+$lang['Other plugins'] = 'Alte plugin-uri disponibile';
+$lang['Missing Plugins'] = 'Plugin-uri lipsă';
+$lang['No destination tag selected'] = 'Nicio etichetă destinație aleasă';
+$lang['Notify administrators when a comment is'] = 'Informează administratorii când un comentariu este';
+$lang['Number of albums per page'] = 'Numărul de albume pe pagină';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ACEST PLUGIN ESTE ACUM PARTE DIN NUCLEUL PIWIGO! DEZINSTEALEAZĂ-L ACUM!';
+$lang['Templates configuration has been recorded.'] = 'Configurația șabloanelor a fost înregistrată.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Plugin-ul Piwigo de export îți permite să creezi albume și să exporți fotografii.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Plugin-ul Piwigo de publicare îți permite să exporți și să sincronizezi fotografii din Lightroom direct în galeria ta Piwigo.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Dimensiunile fotografiei vor fi reduse la %dx%d pixeli.';
+$lang['Pending Comments'] = 'Comentarii în așteptare';
+$lang['Permission granted for groups'] = 'Permisiune acordată pentru grupuri';
+$lang['Photo Properties'] = 'Proprietățile fotografiei';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Piwigo pentru publicare pentru Ligtroom';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin Piwigo pentru export pentru Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin Piwigo pentru export pentru iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin Piwigo pentru publicare pentru Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin Piwigo pentru publicare pentru digiKam';
+$lang['Plugin list'] = 'Lista de plugin-uri';
+$lang['Original templates'] = 'Șabloane originale';
+$lang['Photo unreachable or no support'] = 'Fotografie nedisponibilă sau în format nesuportat';
+$lang['Support'] = 'Suport';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Dacă HD nu este disponibil și dacă dimensiunea curentă pentru web este mai mare decât dimensiunile noi, Piwigo o va muta ca HD și va crea din ea o fotografie cu dimensiuni mai mici pentru web.';
+$lang['None'] = 'Nimic';
+$lang['Posted %s on %s'] = 'A publicat %s pe %s';
+$lang['Photo Page'] = 'Pagina fotografii';
+$lang['Purge never used notification feeds'] = 'Curăță feed-urile de înștiințări neutilizate';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fii în contact cu proiectul Piwigo, abonează-te la Scrisoarea de știri Piwigo. Vei primi e-mail-uri când vor fi disponibile noi versiuni (câteodată incluzând reparări de bug-uri de securirate, este important să știi și să actualizezi) și când se vor întâmpla evenimente majore cu proiectul. Numai cateva e-mail-uri pe an.';
+$lang['Piwigo Announcements Newsletter'] = 'Scrisoarea de știri Piwigo';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonează %s la Scrisoarea de știri Piwigo';
+$lang['Sharpen'] = 'Ascute';
+$lang['Remote'] = 'Distant';
+$lang['reduce to single existing albums'] = 'redu la albume unice existente';
+$lang['Remove from caddie'] = 'Șterge din coș';
+$lang['There is no available subscribers to mail.'] = 'Nu există niciun abonat pentru a fi înștiințat prin e-mail.';
+$lang['Unable to dump database.'] = 'Imposibil de descărcat baza de date.';
+$lang['Unknown upload error'] = 'Eroare necuonscută de încărcare';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pentru dimensiunile de fotografii cu decupare, cum ar fi "Pătrat", Piwigo va încerca să includa centrul de interes.';
+$lang['Notification'] = 'Înștiințare';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Aceasta este o actualizare majoră, cu <a href="%s">îmbunătățiri interesante</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Aceasta este o actualizare minoră, numai cu corecții de bug-uri.';
+$lang['To send ?'] = 'Se trimite?';
+$lang['To subscribe'] = 'Pentru a abona';
+$lang['To unsubscribe'] = 'pentru a dezabona';
+$lang['Photo sizes with crop'] = 'Dimensiunile fotografiei cu decupare';
+$lang['Photos generation in progress...'] = 'Generarea fotografiilor în curs...';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Timpul de pregătire a liste utilizatorilor la care va fi trimis e-mail este limitat. Alți utilizatori nu vor fi afișați.';
+$lang['Searching...'] = 'Căutare...';
+$lang['Settings'] = 'Setări';
+$lang['Status of user "%s" updated'] = 'Utilizatorul "%s" statut actualizat';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Abonații pot fi listați (disponibili) numai dacă există elemente noi pentru înștiințări.';
+$lang['Send connection settings by email'] = 'Trimite setările de conexiune prin e-mail';
+$lang['Some upgrades are available for extensions.'] = 'Sunt disponibile unele actualizări pentru extensii.';
+$lang['Start Upload'] = 'Începe încărcarea';
+$lang['Reset ignored updates'] = 'Resetează actualizările ignorate';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionarea după încărcare a fost dezactivată datorită folosirii GD ca librărie grafică';
+$lang['Set creation date'] = 'Alege data creării';
+$lang['Piwigo Update'] = 'Actualizare Piwigo';
+$lang['Piwigo Uploader'] = 'Utilitar de încărcare Piwigo';
+$lang['Plugins which need upgrade'] = 'Plugin-uri de actualizat';
+$lang['Purge compiled templates'] = 'Curăță șabloanele compilate';
+$lang['Purge user cache'] = 'Curăță cache-ul utilizatorului';
+$lang['Released on'] = 'Lansat pe';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Foloesești utilitarul de încărcare prin navigator. Încearcă <a href="%s">utilitarul de încărcare prin Flash</a> în locul lui.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Folosești utilitarul de încărcare prin Flash. Ai probleme?  Încearcă <a href="%s">utilitarul de încărcare prin navigator</a> în locul lui.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Poți actualiza direct la Piwigo %s, fără a actualiza la Piwigo %s (recomandat).';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Ar trebui să-ți actualizezi sistemul pentru a beneficia de toate avantajele aplicației, altfel aplicația ar putea funcționa necorespunzător sau deloc';
+$lang['Update photos information'] = 'Actualizează informațiile fotografiiloe';
+$lang['Update to Piwigo %s'] = 'Actualizează la Piwigo $s';
+$lang['Upload'] = 'Încarcă';
+$lang['Upload Photos'] = 'Încarcă fotografii';
+$lang['Uploaded Photos'] = 'Fotografii încărcate';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Înlocuirea șabloanelor originale cu șabloane personalizate din sub-dosarul șabloane-extensii';
+$lang['Select recipients'] = 'Alege destinatari';
+$lang['Set as default language for unregistered and new users'] = 'Alege ca limbă implicită pentru utilizatorii noi si neînregistrați';
+$lang['Set as default theme for unregistered and new users'] = 'Alege ca temă implicită pentru utilizatorii noi si neînregistrați';
+$lang['Set author'] = 'Alege autor';
+$lang['Set title'] = 'Alege titlu';
+$lang['Subscribe'] = 'Abonează';
+$lang['Subscribe %s'] = 'Abonează %s';
+$lang['Subscribe to notification by mail'] = 'Abonează-te la înștiințări prin e-mail';
+$lang['Subscribed'] = 'Abonat';
+$lang['Switch to clear or dark colors for administration'] = 'Schimbă la clar sau la culori întunecate pentru administrare.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Timpul pentru a trimite e-mail-uril este limitat. Alte e-mail-luri au fost sărite.';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nu poți defini o ordine implicită a fotografiilor, pentru că ai deja o setare personalizată în configurația locală.';
+$lang['Hoverbox display'] = 'Afișaj în fereastră flotantă';
+$lang['No display'] = 'Niciu';
+$lang['No order field selected'] = 'Nicio ordine a cămpurilor aleasă';
+$lang['No photo selected, %d photos in current set'] = 'Nicio fotografie aleasă, %d fotografii în setul curent';
+$lang['No photo selected, no action possible.'] = 'Nicio fotografie aleasă, nicio acțiune posibilă.';
+$lang['No user to send notifications by mail.'] = 'Niciun utilizator petnru a fi înștiințat prin e-mail.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Pwigo nu poate aduce fotografiile de pe server';
+$lang['Webmaster status is required.'] = 'Este necesar statutul de webmaster.';
+$lang['Subscribe/unsubscribe users'] = 'Abonează/dezabonează utilizatori';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Centrul de interes este partea cu cel mai mult înțeles dintr-o fotografie.';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster-ul te-a abonat pentru a fi înștiințat prin e-mail.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster-ul te-a dezabonat de la înștiințările prin e-mail.';
+?>
Index: /tags/2.6.0RC1/language/ro_RO/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Română [RO]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=433
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Română';
+$lang_info['country'] = 'România';  
+$lang_info['charset'] = 'utf-8';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ro';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album actualizat';
+$lang['%d albums updated'] = '%d albume actualizate';
+$lang['%d comment to validate'] = '%d comentariu de validat';
+$lang['%d comments to validate'] = '%d comentarii de validat';
+$lang['%d new comment'] = '%d nou comentariu';
+$lang['%d new comments'] = '%d noi comentarii';
+$lang['%d comment'] = '%d comentariu';
+$lang['%d comments'] = '%d comentarii';
+$lang['%d hit'] = 'vazut %d dată';
+$lang['%d hits'] = 'vazut %d ori';
+$lang['%d new photo'] = '%d imagine nouă';
+$lang['%d new photos'] = '%d imagini noi';
+$lang['%d new user'] = '%d utilizator nou';
+$lang['%d new users'] = '%d utilizatori noi';
+$lang['About'] = 'Despre';
+$lang['All tags'] = 'Toate etichetele';
+$lang['Any tag'] = 'Orice eticheta';
+$lang['At least one listed rule must be satisfied.'] = 'Cel puţin o singură regulă trebuie să fie îndeplinită';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Albume';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Inchide această fereastră';
+$lang['Complete RSS feed (photos, comments)'] = 'Flux RSS complet (imagini, comentarii)';
+$lang['Confirm Password'] = 'Confirmare parolă';
+$lang['Connection settings'] = 'Parametrii de conecţie';
+$lang['Login'] = 'Conecţie';
+$lang['Contact webmaster'] = 'Contactaţi webmasterul';
+$lang['Create a new account'] = 'Creaţi un cont nou';
+$lang['Created on'] = 'Creat pe';
+$lang['Creation date'] = 'Data creaţiei';
+$lang['Current password is wrong'] = 'Parola actuală nu este corectă';
+$lang['Dimensions'] = 'Dimensiuni';
+$lang['Display'] = 'Afişare';
+$lang['Each listed rule must be satisfied.'] = 'Fiecare regulă enumerată trebuie să fie îndeplinită';
+$lang['Email address'] = 'Adresa de e-mail';
+$lang['Enter your personnal informations'] = 'Introduceţi informaţiile dvs. personale';
+$lang['Error sending email'] = 'Eroare la trimiterea de e-mail';
+$lang['File name'] = 'Nume de fişier';
+$lang['File'] = 'Fişier';
+$lang['Filesize'] = 'Mărime fişier';
+$lang['Filter and display'] = 'Filtrează şi afişează';
+$lang['Filter'] = 'Filtrează';
+$lang['Forgot your password?'] = 'Aţi uitat parola?';
+$lang['Go through the gallery as a visitor'] = 'Navigaţi prin galerie ca un vizitator';
+$lang['Help'] = 'Ajutor';
+$lang['Identification'] = 'Identificare';
+$lang['Photos only RSS feed'] = 'RSS feed numai cu imagini';
+$lang['Keyword'] = 'Cuvânt cheie';
+$lang['Links'] = 'Link-uri';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Nou pe %s';
+$lang['Notification'] = 'Notificare';
+$lang['Number of items'] = 'Numărul de articole';
+$lang['Original dimensions'] = 'Dimensiuni originale';
+$lang['Password forgotten'] = 'Parola uitată';
+$lang['Password'] = 'Parola';
+$lang['Post date'] = 'Dată post';
+$lang['Posted on'] = 'Postat pe';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Conectare rapidă';
+$lang['RSS feed'] = 'RSS feed';
+$lang['Register'] = 'Înscrie';
+$lang['Registration'] = 'Înscriere';
+$lang['Related tags'] = 'Etichete asociate';
+$lang['Reset'] = 'Resetare';
+$lang['Retrieve password'] = 'Recuperare parolă';
+$lang['Search rules'] = 'Criterii de căutare';
+$lang['Search tags'] = 'Caută etichete';
+$lang['Search'] = 'Caută';
+$lang['display available tags'] = 'Vezi etichetele disponibile';
+$lang['Since'] = 'De la';
+$lang['Sort by'] = 'Sortare după';
+$lang['Sort order'] = 'Ordine de sortare';
+$lang['Tag'] = 'Etichetă';
+$lang['Tags'] = 'Etichete';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Notificarea RSS feed prevede notificarea cu privire la noutăţile din acest sit: poze noi, albume actualizate, noi comentarii. Folosiţi un RSS feed reader.';
+$lang['Unknown feed identifier'] = 'Identificator RSS feed  necunoscut';
+$lang['User comments'] = 'Comentarii utilizator ';
+$lang['Username'] = 'Nume de utilizator';
+$lang['Visits'] = 'Vizite';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Săptămâna %d';
+$lang['About Piwigo'] = 'Despre Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Nu sunteţi autorizat sa accesaţi pagina solicitată';
+$lang['add this photo to your favorites'] = 'adăuga această imagine la favorite';
+$lang['Administration'] = 'Administraţie';
+$lang['all'] = 'tot';
+$lang['ascending'] = 'ascendent';
+$lang['author(s) : %s'] = 'autor(i) : %s';
+$lang['Expand all albums'] = 'Extinde toate albumele';
+$lang['posted after %s (%s)'] = 'postat după %s (%s)';
+$lang['posted before %s (%s)'] = 'postat înainte de %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'postat între %s (%s) şi %s (%s)';
+$lang['posted on %s'] = 'postat pe %s';
+$lang['Best rated'] = 'Cele mai bine notate';
+$lang['display best rated photos'] = 'afişează cele mai bune imagini';
+$lang['Calendar'] = 'Calendar';
+$lang['All'] = 'Tot';
+$lang['display each day with photos, month per month'] = 'Afişare an de an, lună de lună, zi de zi';
+$lang['View'] = 'Vedere';
+$lang['chronology_monthly_calendar'] = 'Calendar lunar';
+$lang['chronology_monthly_list'] = 'Listă lunară';
+$lang['chronology_weekly_list'] = 'Listă săptămânală ';
+$lang['Click here if your browser does not automatically forward you'] = 'Click aici dacă browser-ul nu va trimite în mod automat';
+$lang['comment date'] = 'data comentariului';
+$lang['Comment'] = 'Comentariu';
+$lang['Your comment has been registered'] = 'Comentariul dvs. a fost înregistrat';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Sistem Anti-flood: vă rugăm aşteptaţi o clipă înainte de a încerca să postaţi un alt comentariu';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Comentariul dvs. nu a fost înregistrat deoarece nu a trecut regulile de validare';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Un administrator trebuie să autorizeze comentariul dvs. înainte de a deveni vizibil.';
+$lang['This login is already used by another user'] = 'Acest nume este deja folosit de un alt utilizator';
+$lang['Comments'] = 'Comentarii';
+$lang['Add a comment'] = 'Adaugă un comentariu';
+$lang['created after %s (%s)'] = 'creat după %s (%s)';
+$lang['created before %s (%s)'] = 'create înainte de %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'creat între %s (%s) şi %s (%s)';
+$lang['created on %s'] = 'creat pe %s';
+$lang['Customize'] = 'Particularizează';
+$lang['Your Gallery Customization'] = 'Personalizarea Galeriei dvs.';
+$lang['Default'] = 'În mod implicit';
+$lang['delete this photo from your favorites'] = 'şterge această poză din favorite';
+$lang['Delete'] = 'Şterge';
+$lang['descending'] = 'descendent';
+$lang['Download'] = 'descărcare';
+$lang['Download this file'] = 'descărcă acest fişier';
+$lang['edit'] = 'editează';
+$lang['wrong date'] = 'dată greşită';
+$lang['day'][0] = 'Duminică';
+$lang['day'][1] = 'Luni';
+$lang['day'][2] = 'Marţi';
+$lang['day'][3] = 'Miercuri';
+$lang['day'][4] = 'Joi';
+$lang['day'][5] = 'Vineri';
+$lang['day'][6] = 'Sâmbătă';
+$lang['excluded'] = 'exclus';
+$lang['Your favorites'] = 'Favoritele dvs.';
+$lang['display your favorites photos'] = 'Afişează imaginile dvs. favorite';
+$lang['Favorites'] = 'Favorite';
+$lang['First'] = 'Prima(ul)';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galeria este blocată pentru întreţinere. Vă mulţumim reveniţi mai târziu.';
+$lang['Page generated in'] = 'Pagina generată în';
+$lang['guest'] = 'vizitator';
+$lang['Hello'] = 'Bună ziua';
+$lang['available for administrators only'] = 'disponibil numai pentru administratori';
+$lang['display this album'] = 'afişează acest album';
+$lang['display last user comments'] = 'Vezi cele mai recente comentarii ale utilizatorilor';
+$lang['customize the appareance of the gallery'] = 'personalizează aspectul galeriei';
+$lang['search'] = 'căutare';
+$lang['Home'] = 'Prima pagină';
+$lang['in this album'] = 'în aceat album';
+$lang['in %d sub-album'] = 'în %d sub-album';
+$lang['in %d sub-albums'] = 'în %d sub-albume';
+$lang['included'] = 'inclus';
+$lang['Invalid password!'] = 'Parolă invalidă !';
+$lang['Language'] = 'Limbă';
+$lang['last %d days'] = 'ultimele %d zile';
+$lang['Last'] = 'Ultima(ul)';
+$lang['Logout'] = 'Deconectare';
+$lang['obligatory'] = 'obligatoriu';
+$lang['display a calendar by creation date'] = 'afişează un calendar în funcţie de data creării';
+$lang['display all photos in all sub-albums'] = 'afişează toate elementele în toate sub-albumele';
+$lang['return to normal view mode'] = 'Înapoi la vizualizarea normală';
+$lang['display a calendar by posted date'] = 'afişează un calendar în funcţie de data adăugării';
+$lang['Most visited'] = 'Cele mai vizionate';
+$lang['display most visited photos'] = 'afişează imaginile cele mai vizionate';
+$lang['The number of photos per page must be a not null scalar'] = 'Numărul de imagini pe pagină trebuie să fie un număr întreg nenul';
+$lang['Number of photos per page'] = 'Numărul de miniaturi pe pagină';
+$lang['Unknown identifier'] = 'Identificator necunoscut ';
+$lang['New password'] = 'Parolă nouă';
+$lang['Rate this photo'] = 'Evaluează aceasta imagine';
+$lang['Next'] = 'Înainte';
+$lang['no rate'] = 'nici o evaluare';
+$lang['Photos posted within the last %d day.'] = 'Imagini postate în ultima %d zi.';
+$lang['Photos posted within the last %d days.'] = 'Imagini postate în ultimele %d zile.';
+$lang['password updated'] = 'parolă actualizată';
+$lang['Recent period must be a positive integer value'] = 'perioada recentă trebuie să fie un număr întreg pozitiv';
+$lang['photo'] = 'imagine';
+$lang['Click on the photo to see it in high definition'] = 'Clicaţi pe imagine pentru a o vedea de înaltă definiţie';
+$lang['Show file metadata'] = 'Arată metadatele fişierului';
+$lang['Powered by'] = 'Realizat de';
+$lang['Preferences'] = 'Preferinţe';
+$lang['Random photos'] = 'Imagini aleatoare';
+$lang['display a set of random photos'] = 'afişează un set de imagini aleatoare';
+$lang['Recent albums'] = 'Albume recente';
+$lang['display recently updated albums'] = 'afişează albumele create sau actualizate recent ';
+$lang['Recent period'] = 'Recent';
+$lang['Recent photos'] = 'Imagini recente';
+$lang['display most recent photos'] = 'afişează cele mai recente imagini';
+$lang['Redirection...'] = 'Redirecţionare...';
+$lang['Please, enter a login'] = 'Vă rugăm, introduceţi un nume de utilizator';
+$lang['login mustn\'t end with a space character'] = 'numele de utilizator nu trebuie să se încheie cu un spaţiu';
+$lang['login mustn\'t start with a space character'] = 'numele de utilizator nu trebuie sa înceapă cu un spaţiu';
+$lang['this login is already used'] = 'acest nume este deja folosit';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'adresa de e-mail trebuie să fie de genul xxx@yyy.eee (de exemplu: jack@altern.org)';
+$lang['Auto login'] = 'Conectare automatică';
+$lang['remove this tag from the list'] = 'eliminaţi această etichetă de pe lista';
+$lang['representative'] = 'reprezentant';
+$lang['Search for Author'] = 'Caută autor';
+$lang['Search in albums'] = 'Caută în albume';
+$lang['Previous'] = 'Înapoi';
+$lang['Search by date'] = 'Căutare după dată';
+$lang['Date'] = 'Dată';
+$lang['End-Date'] = 'Sfârșit';
+$lang['Kind of date'] = 'Tip de dată';
+$lang['Search for words'] = 'Caută cuvinte';
+$lang['Search for all terms'] = 'Caută toţi termenii';
+$lang['Search for any term'] = 'Caută oricare termen';
+$lang['Empty query. No criteria has been entered.'] = 'Interogare goală. Nici un criteriu nu a fost introdus.';
+$lang['Search results'] = 'Rezultatele căutării';
+$lang['Search in sub-albums'] = 'Caută în sub-albume';
+$lang['searched words : %s'] = 'cuvinte căutate : %s';
+$lang['Contact'] = 'Contact';
+$lang['set as album representative'] = 'Setaţi ca reprezentant al acestui album';
+$lang['Show number of comments'] = 'Arată numărul de comentarii';
+$lang['Show number of hits'] = 'Arată numărul de vizualizări';
+$lang['slideshow'] = 'prezentare';
+$lang['stop the slideshow'] = 'opreşte prezentarea';
+$lang['Specials'] = 'Speciale';
+$lang['SQL queries in'] = 'interogări SQL în';
+$lang['display only recently posted photos'] = 'Arată numai elementele publicate recent';
+$lang['return to the display of all photos'] = 'reveniţi la afişarea tuturor imaginilor';
+$lang['the beginning'] = 'începutul';
+$lang['Thumbnails'] = 'Miniaturi';
+$lang['Menu'] = 'Meniu';
+$lang['A comment on your site'] = 'Un comentariu pe site-ul dvs.';
+$lang['today'] = 'azi';
+$lang['Update your rating'] = 'Actualizaţi evaluarea dvs.';
+$lang['the username must be given'] = 'numele de utilizator trebuie specificat';
+$lang['useful when password forgotten'] = 'utilă în cazul în care uitaţi parola';
+$lang['Quick search'] = 'Căutare rapidă';
+$lang['Connected user: %s'] = 'Utilizator conectat : %s';
+$lang['IP: %s'] = 'Adresa IP : %s';
+$lang['Browser: %s'] = 'Navigator : %s';
+$lang['Author: %s'] = 'Autor : %s';
+$lang['Comment: %s'] = 'Comentariu : %s';
+$lang['Comment by %s'] = 'Comentarii de %s';
+$lang['User: %s'] = 'Utilizator: %s';
+$lang['Email: %s'] = 'E-mail : %s';
+$lang['Admin: %s'] = 'Administraţie : %s';
+$lang['Registration of %s'] = 'Înregistrare de %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Statutul utilizatorului "invitat" este eronat, se vor folosi  parametrii impliciţi. Va rugăm sa informaţi webmasterul.';
+$lang['this email address is already in use'] = 'un alt utilizator foloseşte deja acest e-mail';
+$lang['Album results for'] = 'Albume pentru';
+$lang['Tag results for'] = 'Rezultatele  etichetelor pentru';
+$lang['from %s to %s'] = 'de la %s până la %s';
+$lang['Play of slideshow'] = 'Startează prezentarea';
+$lang['Pause of slideshow'] = 'Pune pe pauză prezentarea';
+$lang['Repeat the slideshow'] = 'Repetă prezentarea';
+$lang['Not repeat the slideshow'] = 'Nu repeta prezentarea';
+$lang['Reduce diaporama speed'] = 'Încetineşte viteza prezentării';
+$lang['Accelerate diaporama speed'] = 'Accelerează viteza prezentării';
+$lang['Submit'] = 'Execută';
+$lang['Yes'] = 'Da';
+$lang['No'] = 'Nu';
+$lang['%d photo'] = '%d imagine';
+$lang['%d photos'] = '%d imagini';
+$lang['%d photo is also linked to current tags'] = '%d imagine este de asemenea legată de etichetele actuale';
+$lang['%d photos are also linked to current tags'] = '%d imagini sunt de asemenea legate de etichetele actuale';
+$lang['display photos linked to this tag'] = 'Vezi numai imagini legate de această etichetă';
+$lang['photos posted during the last %d days'] = 'Imagini adăugate în ultimele %d zile';
+$lang['Piwigo Help'] = 'Ajutor pentru Piwigo';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'regrupează pe litere';
+$lang['letters'] = 'litere';
+$lang['show tag cloud'] = 'arată norul de etichete';
+$lang['cloud'] = 'nor';
+$lang['Reset to default values'] = 'Reveniţi la setările implicite';
+$lang['delete all photos from your favorites'] = 'scoate-ţi toate pozele din favoritele dvs.';
+$lang['Sent by'] = 'Trimis de';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookie-urile sunt blocate sau nu sunt suportate de browser-ul dumneavoastră. Trebuie să activaţi  cookie-urile pentru a vă conecta.';
+$lang['Edit a comment'] = 'modifică un comentariu';
+$lang['Are you sure?'] = 'Sunteţi sigur(ă) ?';
+$lang['(!) This comment requires validation'] = '(!) Acest comentariu trebuie să fie validat';
+$lang['Welcome'] = 'Bine aţi venit';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Bine aţi venit la galeria dvs. foto Piwigo !';
+$lang['... or browse your empty gallery'] = '... sau navigaţi prin galeria dvs. vidă';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... sau vă rugăm să dezactivaţi acest mesaj, mă voi descurca singur';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Bună ziua %s, galeria dvs. foto Piwigo este vidă !';
+$lang['I want to add photos'] = 'Vreau să adaug poze';
+$lang['Manage this user comment: %s'] = 'Administrează acest comentariu de utilizator: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Adresa de email lipseşte. Vă rugăm să specificaţi o adresă de e-mail.';
+$lang['This author modified following comment:'] = 'Acest autor a modificat următorul comentariu :';
+$lang['This author removed the comment with id %d'] = 'Acest autor a şters comentariul cu id-ul %d';
+$lang['month'][10] = 'Octombrie';
+$lang['month'][11] = 'Noiembrie';
+$lang['month'][12] = 'Decembrie';
+$lang['month'][1] = 'Ianuarie';
+$lang['month'][2] = 'Februarie';
+$lang['month'][3] = 'Martie';
+$lang['month'][4] = 'Aprilie';
+$lang['month'][5] = 'Mai';
+$lang['month'][6] = 'Iunie';
+$lang['month'][7] = 'Iulie';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'Septembrie';
+$lang['html tags are not allowed in login'] = 'tag-urile HTML nu sunt permise în login';
+
+$lang['Change my password'] = 'Schimba parola';
+$lang['Check your email for the confirmation link'] = 'Verifica-ti emailul pentru link-ul de confirmare';
+$lang['Edit'] = 'Editeaza';
+$lang['Enter your new password below.'] = 'Repeta noua parola aici';
+$lang['Hello %s,'] = 'Hello%s,';
+$lang['Here are your connection settings'] = 'Aici ai setarile de conectare';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Daca acesta e o greseala, doar ignora acest email si nimic nu se va intampla.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Daca crezi ca ai primit acest mail eronat, te rugam sa ne contactezi la%s';
+$lang['Invalid key'] = 'Cheie invalida';
+$lang['Invalid username or email'] = 'Nume de utilizator sau email incorect';
+$lang['large'] = 'L - mare';
+$lang['medium'] = 'M - Mediu';
+$lang['Mobile'] = 'Mobil';
+$lang['Original'] = 'Original';
+$lang['Password reset is not allowed for this user'] = 'Resetarea parolei nu este permisa pentru acest user';
+$lang['Password Reset'] = 'Resetare parola';
+$lang['Password: %s'] = 'Parola:%s';
+$lang['Photo sizes'] = 'Marime fotografie';
+$lang['Please enter your username or email address.'] = 'Introduceti numele de utilizator sau email';
+$lang['Return to home page'] = 'Reveniti la pagina principala';
+$lang['Send my connection settings by email'] = 'Trimiteti-mi setarile conexiunii pe email';
+$lang['Show latest comments first'] = 'Arata-mi cele mai noi comentarii';
+$lang['Show oldest comments first'] = 'Arata-mi cele mai vechi comentarii';
+$lang['small'] = 'S - mic';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Cineva a cerut resetarea parolei pentru contul acestui user';
+$lang['square'] = 'Pătrat';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Inregistrarea a fost cu succes, curand vei primi un email cu setarile conexiunii.Bine ai venit!!!';
+$lang['Thank you for registering at %s!'] = 'Multumim pentru inregistrarea la%s!';
+$lang['The passwords do not match'] = 'Parola nu se potriveste';
+$lang['To reset your password, visit the following address:'] = 'Pentru a reseta parola, click pe urmatorul link';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Userul"%s" nu are o adresa de email, resetarea parolei nu va fi posibila';
+$lang['Username modification'] = 'Modificare numelui de utilizator';
+$lang['Username or email'] = 'Nume de utilizator sau email';
+$lang['Username: %s'] = 'Nume de utilizator:%s';
+$lang['View in'] = 'Vezi in';
+$lang['You will receive a link to create a new password via email.'] = 'Vei primi un link pe email pentru a creea o noua parola';
+$lang['Your password has been reset'] = 'Parola ta a fost resetata';
+$lang['Your username has been successfully changed to : %s'] = 'Numele de utilizatora fost schimbat cu succes in:%s';
+$lang['%d rates'] = '%d rating';
+$lang['Desktop'] = 'Prima pagina';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Rating score'] = 'Scor mediu';
+$lang['thumb'] = 'Thumb';
+$lang['Username "%s" on gallery %s'] = '"%s" nume de utilizator(i) pe aceasta pagina %s';
+$lang['xlarge'] = 'XL - foarte mare';
+$lang['xxlarge'] = 'XXL - enorm';
+$lang['2small'] = 'XXS - minuscul';
+$lang['xsmall'] = 'XS - foarte mic';
+$lang['Date created, new &rarr; old'] = 'Data creării, nou &rarr; vechi';
+$lang['Date created, old &rarr; new'] = 'Data creării, vechi &rarr; nou';
+$lang['Date posted, new &rarr; old'] = 'Data postării, nou &rarr; vechi';
+$lang['Date posted, old &rarr; new'] = 'Data postări, vechi &rarr; nou';
+$lang['File name, A &rarr; Z'] = 'Numele fişierului, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Numele fişierului, Z &rarr; A';
+$lang['Manual sort order'] = 'Ordonarea manuala';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Identificatorul numeric, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Identificatorul numeric, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Titlul pozei, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Titlul pozei, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Scorul de rating, ridicat &rarr; scazut';
+$lang['Rating score, low &rarr; high'] = 'Scorul de rating, scazut &rarr; ridicat';
+$lang['Visits, high &rarr; low'] = 'Vizite, ridicat &rarr; scazut';
+$lang['Visits, low &rarr; high'] = 'Vizite, scazut &rarr; ridicat';
+$lang['%d rate'] = 'Evaluare %d';
+$lang['Bad request'] = 'Căutare greșită';
+$lang['Forbidden'] = 'Interzis';
+$lang['Page not found'] = 'Pagina nu a fost găsită';
+$lang['Permalink for album not found'] = 'Permalinkul pentru album nu există';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo întâmpină o eroare nerecuperabilă';
+$lang['Requested album does not exist'] = 'Albumul căutat nu există';
+$lang['Requested tag does not exist'] = 'Eticheta căutată nu există';
+$lang['Email address is mandatory'] = 'Adresa de email este obligatorie';
+$lang['Username is mandatory'] = 'Numele de utilizator este obligatoriu';
+$lang['mandatory'] = 'obligatoriu';
+$lang['Website'] = 'Site';
+$lang['Your website URL is invalid'] = 'URL-ul sitului tău este invalid';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Prima pagină';
+$lang['Go back to the album'] = 'Înapoi la album';
+$lang['Last Page'] = 'Ultima pagină';
+$lang['Password is missing. Please enter the password.'] = 'Parola lipseşte. Te rog sa introduci parola-';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Lipseşte confirmarea parolei. Te rog să confirmi parola aleasă.';
+?>
Index: /tags/2.6.0RC1/language/ro_RO/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/help/cat_move.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Mutând Albume virtuale</h2>
+
+<p>Doar albumele virtuale pot avea un nou album originar</p>
+
+<h3>Albume virtuale de mutat</h3>
+
+<p>Selecteaza( unul sau mai multe albume virtuale pe care vrei sa( le mut,i. Daca( lista e goala(, înseamna( ca( nu ai creat înca( unul.</p>
+
+<h3>Album originar nou</h3>
+
+<p>Selecteaza( noul album originar (virtual sau fizic). Daca( nu selectezi niciunul originar, albumele virtuale selectate vor fi mutate la început. Un album nu poate fi mutat în el însus,i sau într-o copie de-a sa.</p>
Index: /tags/2.6.0RC1/language/ro_RO/index.php
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ro_RO/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Configurarea Adminului';
+$lang['also given by your host provider'] = 'De asemenea oferita de host';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'O solutie alternativa ar fi sa copiezi textul din casuta de deasupra si sa il scrii in fila "local/config/database.inc.php" (Atentie database.inc.php trebuie sa contina doar caracterele din text, fara linie sau space)';
+$lang['Basic configuration'] = 'Configurarea de baza';
+$lang['Can\'t connect to server'] = 'Nu se poate conecta la server';
+$lang['Congratulations, Piwigo installation is completed'] = 'Felicitari, Piwigo s-a instalat cu succes.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Conectarea la server reusita, dar conexiunea cu baza de data este imposibila';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Creearea filei local/config/database.inc.php a esuat';
+$lang['Database configuration'] = 'Configurarea datezi de baze';
+$lang['Database name'] = 'Numele bazei de date';
+$lang['Database table prefix'] = 'Prefixele tabelelor bazei de date';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Tabelele bazei de date vor avea prefix ( permitandu-ti o mai usoara administrare)';
+$lang['Default gallery language'] = 'Limba default a galeriei';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Nu ezita sa vizitezi forumul pentru ajutor %s';
+$lang['Download the config file'] = 'Descarca fila de configurare';
+$lang['enter a login for webmaster'] = 'Introduceti userul pentru webmaster';
+$lang['Hope to see you back soon.'] = 'Speram sa te revedem curand! Pa.';
+$lang['Host'] = 'Host';
+$lang['Installation'] = 'Instalare';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Se pare ca webhostul tau ruleaza PHP %s.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Va fi afisata vizitatorilor. Este necesara pentru administrarea site-ului.';
+$lang['Just another Piwigo gallery'] = 'Doar o alta galerie Piwigo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Tine-o secreta, iti permite accesul la panoul de administrare';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Ai nevoie de ajutor? Intreaba pe <a href="%s">Forumul Piwigo</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Poti sa schimbi configuratia manual si sa restartezi Piwigo dupa aceea.';
+$lang['Password [confirm]'] = 'Parola [confirma]';
+$lang['PHP 5 is required'] = 'PHP5 este necesar';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo va incerca sa treaca configuratia ta la PHP5 folosind o fila  .htaccess';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nu a putut sa configureze PHP5';
+$lang['please enter your password again'] = 'Introduce parola inca o data';
+$lang['Sorry!'] = 'Imi pare rau!';
+$lang['Start Install'] = 'Incepe instalarea';
+$lang['Try to configure PHP 5'] = 'Incearca sa configurezi PHP5';
+$lang['user login given by your host provider'] = 'Userul oferit de providerul de host.';
+$lang['user password given by your host provider'] = 'Parola oferita de providerul de host';
+$lang['User'] = 'User';
+$lang['verification'] = 'verificarea';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Vizitatorii vor folosii aceasta adresa pentru a contacta administratorul';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Userul nu poate sa contina caracterele \' sau "';
+$lang['Welcome to my photo gallery'] = 'Bine ati venit la galeria mea foto';
+$lang['Welcome to your new installation of Piwigo!'] = 'Bine ai venit la noua instalare Piwigo!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Poti sa descarci fila de configurare si sa o uploadezi in folderul local/config al instalarii.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Ar trebui sa te adresezi hostului si sa intrebi cum poti sa treci la PHP5';
+$lang['localhost or other, supplied by your host provider'] = 'localhost sau alta, furnizat de furnizorul de găzduire';
+?>
Index: /tags/2.6.0RC1/language/ro_RO/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Română [RO]
Index: /tags/2.6.0RC1/language/ro_RO/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ro_RO/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ro_RO/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Toate sub-albumele ale albumelor private devin private';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Ca precatuie urmatoarele pluginuri au fost dezactivate. Trebuie sa le verifici de actualizari inainte de a le activa';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Ca precautie urmatoarele teme au fost dezactivate. Trebuie sa verifici de actualizari inainte de a le activa.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'In <i>%s</i>, inainte de <b>?></b>, insert:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Numai un administrator poate face upgrade. Te rog logheaza-te mai jos.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Numai prefixurile thumbnailurilor si adresa de mail a webmasterului au fost salvate';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Ruleaza o verificare de mentenanta in [Administration>Tools>Maintenance] daca intampini probleme';
+$lang['SQL queries'] = 'Interogari SQL';
+$lang['Statistics'] = 'Statistici';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Aceasta pagina upgradeaza baza de date de la o versiunea mai veche de Piwigo la cea noua.
+In acest moment rulezi <strong>release %s</strong>';
+$lang['total SQL time'] = 'timpul total SQL';
+$lang['total upgrade time'] = 'Timpul total pentru upgrade';
+$lang['Upgrade from version %s to %s'] = 'Upgradeaza de la versiunea  %s la %s';
+$lang['Upgrade informations'] = 'Informatiile pentru upgrade';
+$lang['Upgrade'] = 'Upgradeaza';
+$lang['User permissions and group permissions have been erased'] = 'Userii si permisiunile grupurilor au fost sterse';
+$lang['You do not have access rights to run upgrade'] = 'Nu ai acces pentru a face upgrade';
+?>
Index: /tags/2.6.0RC1/language/ru_RU/about.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/about.html	(revision 25596)
@@ -0,0 +1,18 @@
+<p>Эта фотогалерея работает на Piwigo.</p>
+
+<p>Piwigo -  система управления контентом (CMS) для сайта-фотогалереи, поддерживается активным сообществом пользователей и разработчиков. Разнообразные плагины делают Piwigo гибкой и легко модифицируемой системой. Особенно ценно то, что Piwigo - бесплатная CMS с открытым исходным кодом.</p>
+
+<p id="linkToPiwigo"><a href="http://ru.piwigo.org">Посетите официальный сайт Piwigo</a></p>
+
+<p>Актуальность русской локализации поддерживается (в алфавитном порядке):
+
+    <ul>
+        <li><a href="http://ru.piwigo.org/forum/profile.php?id=6705">ie</a></li>
+		<li><a href="http://ru.piwigo.org/forum/profile.php?id=4895">kiddy-admin</a></li>
+		<li><a href="http://ru.piwigo.org/forum/profile.php?id=17102">Konve</a></li>
+		<li><a href="http://ru.piwigo.org/forum/profile.php?id=16485">marchelly</a></li>
+        <li><a href="http://ru.piwigo.org/forum/profile.php?id=3180">nadusha</a></li>
+		<li><a href="http://ru.piwigo.org/forum/profile.php?id=16998">rocket</a></li>
+		<li><a href="http://ru.piwigo.org/forum/profile.php?id=6714">yuragal</a></li>
+    </ul>
+           .... спасибо вам большое</p>
Index: /tags/2.6.0RC1/language/ru_RU/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/admin.lang.php	(revision 25596)
@@ -0,0 +1,975 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = 'связей: %d';
+$lang['%d associations'] = 'связей: %d';
+$lang['%d album including'] = 'Альбомов: %d, включая ';
+$lang['%d albums including'] = 'Альбомов: %d, включая ';
+$lang['%d physical'] = 'реальных: %d';
+$lang[' and %d virtual'] = ' и виртуальных: %d';
+$lang['%d album moved'] = 'перемещено альбомов: %d';
+$lang['%d albums moved'] = 'перемещено альбомов: %d';
+$lang['%d group'] = 'Групп: %d';
+$lang['%d groups'] = 'Групп: %d';
+$lang['%d member'] = 'участников: %d';
+$lang['%d members'] = 'участников: %d';
+$lang['%d tag'] = 'Тегов: %d';
+$lang['%d tags'] = 'Тегов: %d';
+$lang['%d user comment rejected'] = 'отклонено комментариев посетителей: %d';
+$lang['%d user comments rejected'] = 'отклонено комментариев посетителей: %d';
+$lang['%d user comment validated'] = 'принято комментариев посетителей: %d';
+$lang['%d user comments validated'] = 'принято комментариев посетителей: %d';
+$lang['%d user deleted'] = 'пользователей удалено: %d';
+$lang['%d users deleted'] = 'пользователей удалено: %d';
+$lang['%d user'] = 'Пользователей: %d';
+$lang['%d users'] = 'Пользователей: %d';
+$lang['%d waiting for validation'] = 'ожидает проверки: %d';
+$lang['Actions'] = 'Действия';
+$lang['Activate'] = 'Активировать';
+$lang['Add/delete a permalink'] = 'Добавить/удалить постоянную ссылку';
+$lang['Add a tag'] = 'Добавить метку';
+$lang['Add a user'] = 'Добавить пользователя';
+$lang['Add group'] = 'Добавить группу';
+$lang['Add'] = 'Добавить';
+$lang['Allow user registration'] = 'Разрешить регистрацию пользователей';
+$lang['Apply to sub-albums'] = 'Применить к вложенным альбомам';
+$lang['Associated'] = 'Связаны';
+$lang['Caddie management'] = 'Управление корзиной';
+$lang['Caddie'] = 'Корзина';
+$lang['Albums authorized thanks to group associations'] = 'Альбомы разрешены благодаря группе ассоциаций';
+$lang['Album manual order was saved'] = 'Ручной порядок альбомов был сохранен';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Проверка обновлений не удалась по неизвестным причинам.';
+$lang['Check for upgrade'] = 'Проверить обновления';
+$lang['Comments for all'] = 'Комментарии для всех';
+$lang['Current name'] = 'Текущее название';
+$lang['Database'] = 'База данных';
+$lang['Deactivate'] = 'Выключить';
+$lang['Delete Representant'] = 'Удалить представителя';
+$lang['Delete selected tags'] = 'Удалить выбранные метки';
+$lang['Delete selected users'] = 'Удалить выбранных пользователей';
+$lang['Deletions'] = 'Удаления';
+$lang['Deny selected groups'] = 'Отмена выбора групп';
+$lang['Deny selected users'] = 'Отмена выбора пользователей';
+$lang['Description'] = 'Описание';
+$lang['Display options'] = 'Варианты показа';
+$lang['Dissociated'] = 'Не связанные';
+$lang['Does not represent'] = 'Нет представителя';
+$lang['Edit selected tags'] = 'Редактировать выделенные метки';
+$lang['Edit tags'] = 'Редактировать метки';
+$lang['Email admins when a new user registers'] = 'Сообщать администратору когда зарегистрировался новый посетитель';
+$lang['Email admins when a valid comment is entered'] = 'Сообщать администратору когда появился комментарий';
+$lang['Email admins when a comment requires validation'] = 'Сообщать администратору когда появился комментарий для проверки';
+$lang['Environment'] = 'Окружение';
+$lang['Form'] = 'Действия';
+$lang['Gallery title'] = 'Название галереи';
+$lang['Grant selected groups'] = 'Разрешить доступ выбранным группам';
+$lang['Grant selected users'] = 'Разрешить доступ выбранным пользователям';
+$lang['Group name'] = 'Название группы';
+$lang['Groups'] = 'Группы';
+$lang['Guests'] = 'Гости';
+$lang['History'] = 'История';
+$lang['Informations'] = 'Информация';
+$lang['Install'] = 'Установить';
+$lang['Link all album photos to a new album'] = 'Привязать все фотографии альбома к новому альбому';
+$lang['Link all album photos to some existing albums'] = 'Привязать все фотографии альбома к существующим альбомам';
+$lang['Linked albums'] = 'Связать альбомы';
+$lang['Lock gallery'] = 'Заблокировать галерею';
+$lang['Maintenance'] = 'Обслуживание';
+$lang['Edit album permissions'] = 'Управлять разрешением для альбомов';
+$lang['Manage permissions for group "%s"'] = 'Управление разрешениями для группы "%s"';
+$lang['Manage permissions for user "%s"'] = 'Управление разрешениями для пользователя "%s"';
+$lang['Manage tags'] = 'Управление метками';
+$lang['Members'] = 'Участники';
+$lang['Metadata synchronized from file'] = 'Метаданные синхронизированы с файлом';
+$lang['Move albums'] = 'Переместить альбом';
+$lang['Move'] = 'Перемещение';
+$lang['Name'] = 'Название';
+$lang['New name'] = 'Новое название';
+$lang['New parent album'] = 'Новый родительский альбом';
+$lang['New tag'] = 'Новая метка';
+$lang['Number of comments per page'] = 'Количество комментариев на странице';
+$lang['Number of rates'] = 'Количество оценок';
+$lang['Number of thumbnails to create'] = 'Количество создаваемых миниатюр';
+$lang['Only private albums are listed'] = 'Показаны только приватные альбомы';
+$lang['Operating system'] = 'Операционная система';
+$lang['Options'] = 'Опции';
+$lang['Other private albums'] = 'Другие приватные альбомы';
+$lang['Page banner'] = 'Надпись на баннере';
+$lang['Parent album'] = 'Родительский альбом';
+$lang['Path'] = 'Путь';
+$lang['Permalink'] = 'Постоянная ссылка';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Постоянная ссылка %s была ранее использована для альбома %s. Удалите ее сначала из истории постоянных ссылок';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Имя постоянной ссылки должно состоять из a-z, A-Z, 0-9, "-" или "_". Оно не должно быть числовым или начинаться с числа с "-"';
+$lang['Permalink %s is already used by album %s'] = 'Постоянная ссылка %s уже используется альбомом %s';
+$lang['Permalink history'] = 'История постоянных ссылок';
+$lang['Permalinks'] = 'Постоянные ссылки';
+$lang['Permission denied'] = 'Доступ запрещен';
+$lang['Permission granted thanks to a group'] = 'Доступ для группы разрешен';
+$lang['Permission granted'] = 'Доступ разрешен';
+$lang['Photo informations updated'] = 'Информация о фотографии обновлена';
+$lang['Plugins'] = 'Плагины';
+$lang['Position'] = 'Расположение';
+$lang['Preferences'] = 'Настройки';
+$lang['Properties'] = 'Свойства';
+$lang['Random photo'] = 'Случайная фотография';
+$lang['Rating by guests'] = 'Оценки от гостей';
+$lang['Rating'] = 'Оценки';
+$lang['Reject'] = 'Отклонить';
+$lang['Representant'] = 'Миниатюра альбома';
+$lang['Representation of albums'] = 'Представитель альбомов';
+$lang['Representative'] = 'Представитель';
+$lang['Represents'] = 'Представляет';
+$lang['Save order'] = 'Сохранить порядок';
+$lang['Save to permalink history'] = 'Сохранить историю постоянных ссылок';
+$lang['Select at least one album'] = 'Выберите хотя бы один альбом';
+$lang['Select at least one photo'] = 'Выберите по крайней мере одну фотографию';
+$lang['Select at least one user'] = 'Выберите хотя бы одного пользователя';
+$lang['Show info'] = 'Показать информацию';
+$lang['Site manager'] = 'Управление сайтами';
+$lang['Status'] = 'Статус';
+$lang['Statistics'] = 'Статистика';
+$lang['Storage album'] = 'Альбом для хранения';
+$lang['Sum of rates'] = 'Суммарная оценка';
+$lang['Tag "%s" already exists'] = 'Метка "%s" уже есть';
+$lang['Tag "%s" was added'] = 'Метка "%s" добавлена';
+$lang['Tag selection'] = 'Выбор меток';
+$lang['The %d following tags were deleted'] = 'Следующие %d меток были удалены';
+$lang['Uninstall'] = 'Удалить';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Использовать порядок сортировки фотографий по умолчанию (определенный в конфигурационном файле)';
+$lang['User comments validation'] = 'Проверка комментариев посетителей';
+$lang['Users'] = 'Пользователи';
+$lang['Validate'] = 'Принять';
+$lang['Validation'] = 'Проверка';
+$lang['Version'] = 'Версия';
+$lang['Virtual albums to move'] = 'Виртуальные альбомы для перемещения';
+$lang['Virtual album name'] = 'Название виртуального альбома';
+$lang['Webmaster cannot be deleted'] = 'Нельзя удалить Вебмастера';
+$lang['You are running on development sources, no check possible.'] = 'Выполняется в режиме разработки, проверка невозможна.';
+$lang['You cannot delete your account'] = "Вы не можете удалить свой аккаунт";
+$lang['You cannot move an album in its own sub album'] = 'Вы не можете переместить альбом в его собственный подальбом';
+$lang['You need to confirm deletion'] = 'Вам нужно подтвердить удаление';
+$lang['Associate to album'] = 'Привязать к альбому';
+$lang['associate to group'] = 'привязать к группе';
+$lang['Authorized'] = 'Разрешено';
+$lang['Add a virtual album'] = 'Добавить виртуальный альбом';
+$lang['Authorize users to add comments on selected albums'] = 'Авторизованные пользователи могут добавлять комментарии к выбранным альбомам';
+$lang['The name of an album must not be empty'] = 'Название альбома не может быть пустым';
+$lang['Lock albums'] = 'Управление блокировкой альбомов';
+$lang['Private'] = 'Приватные альбомы';
+$lang['Public'] = 'Общедоступные альбомы';
+$lang['Find a new representant by random'] = 'Найти нового представителя случайным образом';
+$lang['Public / Private'] = 'Общедоступные / Приватные';
+$lang['Manage authorizations for selected albums'] = 'Управление доступом для выбранных альбомов';
+$lang['Virtual album added'] = 'Виртуальный альбом добавлен';
+$lang['Virtual album deleted'] = 'Виртуальный альбом удален';
+$lang['Access type'] = 'Тип доступа';
+$lang['Information data registered in database'] = 'Информация зарегистрирована в базе данных';
+$lang['Default display'] = 'Вид по умолчанию';
+$lang['The gallery URL is not valid.'] = 'Некорректный URL галереи';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'На странице может быть от 5 до 50 комментариев.';
+$lang['Configuration'] = 'Настройки';
+$lang['confirm'] = 'подтверждение';
+$lang['delete album'] = 'удалить альбом';
+$lang['Dissociate from album'] = 'Отделить из альбома';
+$lang['dissociate from group'] = 'отвязать от группы';
+$lang['Album updated successfully'] = 'Информация об альбоме успешно добавлена.';
+$lang['photos per page'] = 'Изображений на странице';
+$lang['High definition enabled'] = 'Доступно высокое разрешение';
+$lang['File'] = 'файл';
+$lang['first photo added on %s'] = 'первое изображение добавлено %s';
+$lang['Forbidden'] = 'Запрещено';
+$lang['global mode'] = 'Групповой режим';
+$lang['group "%s" added'] = 'группа "%s" добавлена';
+$lang['group "%s" deleted'] = 'группа "%s" удалена';
+$lang['group "%s" updated'] = 'группа "%s" обновлена';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Название группы не должно содержать " и \' или быть пустым.';
+$lang['This name is already used by another group.'] = 'Это название уже используется для другой группы.';
+$lang['High definition'] = 'Большое разрешение';
+$lang['jump to album'] = 'перейти в альбом';
+$lang['jump to photo'] = 'перейти к фотографии';
+$lang['leave'] = 'оставить';
+$lang['Lock'] = 'Блокировка';
+$lang['Locked'] = 'Заблокированные';
+$lang['manage album photos'] = 'управлять элементами альбома';
+$lang['manage sub-albums'] = 'Управление вложенными альбомами';
+$lang['Manage'] = 'Управление';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Время выполнения превышено, обработка должна быть продолжена [Рассчетное время: %d сек].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Время выполнения превышено, обработка должна быть продолжена [Рассчетное время: %d сек].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Время подготовки списка пользователей для рассылки ограничено. Остальные пользователи не выведены.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Время для отправки почты ограничено. Другие письма пропущены.';
+$lang['To send ?'] = 'Отправить?';
+$lang['Last send'] = 'Последнее отправленное';
+$lang['User'] = 'Пользователь';
+$lang['See you soon,'] = 'Пока,';
+$lang['Go to'] = 'Перейти к ';
+$lang['Hello'] = 'Привет,';
+$lang['New photos were added'] = 'Были добавлены новые фотографии';
+$lang['on'] = ' в ';
+$lang['between'] = 'между ';
+$lang['and'] = ' и ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Вебмастер подписал Вас на получение уведомлений по почте.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Вы подписались на получение уведомлений по почте.';
+$lang['To subscribe'] = 'Для подписки';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Если у Вас возникнут проблемы или вопросы, пожалуйста, напишите ';
+$lang['[NBM] Problems or questions'] = 'Проблемы и вопросы';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Вебмастер удалил подписку на получение уведомлений по почте.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Вы удалили подписку на получение уведомлений по почте.';
+$lang[', click on'] = ', щелкните на ';
+$lang['To unsubscribe'] = 'Чтобы отменить подписку';
+$lang['With blank value, gallery title will be used'] = 'Если не заполнено, будет использовано название галереи';
+$lang['Notification'] = 'Уведомления';
+$lang['Error when sending email to %s [%s].'] = 'Ошибка отправки почты для %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Письмо отправлено для %s [%s].';
+$lang['%d mail was sent.'] = 'писем отправлено: %d.';
+$lang['%d mails were sent.'] = 'писем отправлено: %d.';
+$lang['%d mail was not sent.'] = 'писем не отправлено: %d.';
+$lang['%d mails were not sent.'] = 'писем не отправлено: %d.';
+$lang['No mail to send.'] = 'Нет писем для отправки.';
+$lang['There is no available subscribers to mail.'] = 'Нет пользователей, которым можно было бы отправить почту.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Пользователи доступны, если есть новые элементы уведомлений.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Возможно, нет подписанных пользователей (только webmaster может видеть это).';
+$lang['No user to send notifications by mail.'] = 'Нет пользователей, чтобы послать уведомления почтой.';
+$lang['New photos added'] = 'Новые фотографии добавлены';
+$lang['Subscribe to notification by mail'] = 'Подписаться на уведомления по почте';
+$lang['Unsubscribe from notification by mail'] = 'Отписаться от уведомлений по почте';
+$lang['Parameter'] = 'Параметры';
+$lang['Continue processing treatment'] = 'Продолжить обработку обращения';
+$lang['Complementary mail content'] = 'Дополнительное содержание письма';
+$lang['Add detailed content'] = 'Добавить дополнительное содержание';
+$lang['Send mail as'] = 'Отправить письмо от';
+$lang['Send mail to users'] = 'Отправить письмо пользователям';
+$lang['Send'] = 'Отправка';
+$lang['Options'] = 'Параметры';
+$lang['Subscribed'] = 'В списке рассылки';
+$lang['Subscribe'] = 'Список рассылки';
+$lang['Parameters'] = 'Параметры';
+$lang['Select recipients'] = 'Выбрать получателей';
+$lang['Subscribe/unsubscribe users'] = 'Добавление/удаление пользователей в список рассылки';
+$lang['Unsubscribed'] = 'Не в списке рассылки';
+$lang['%d parameter was updated.'] = 'обновлено параметров: %d';
+$lang['%d parameters were updated.'] = 'обновлено параметров: %d';
+$lang['%d user was not updated.'] = 'пользователей НЕ обновлено: %d';
+$lang['%d users were not updated.'] = 'пользователей НЕ обновлено: %d.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Пользователь %s [%s] удален из списка рассылки.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Пользователь %s [%s] добавлен в список рассылки.';
+$lang['%d user was updated.'] = 'пользователей изменено: %d.';
+$lang['%d users were updated.'] = 'пользователей изменено: %d.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Пользователь %s [%s] не удален из списка рассылки.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Пользователь %s [%s] не добавлен в список рассылки.';
+$lang['User %s [%s] added.'] = 'Пользователь %s [%s] добавлен.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Внимание: при добавлении/удалении в список рассылки будет отправлено уведомление пользователям';
+$lang['Send mail on HTML format'] = 'Отправить письмо в HTML формате';
+$lang['Include display of recent photos grouped by dates'] = 'Включить показ недавних фотографий, сгруппированных по датам';
+$lang['Available only with HTML format'] = 'Возможно только в HTML формате';
+$lang['no write access'] = 'нет доступа на запись';
+$lang['Permissions'] = 'Разрешения';
+$lang['private'] = 'приватная';
+$lang['public'] = 'общедоступная';
+$lang['Purge never used notification feeds'] = 'очистить неиспользуемые каналы уведомлений';
+$lang['Purge sessions'] = 'очистить сессии';
+$lang['randomly represented'] = 'случайный представитель';
+$lang['registration date'] = 'дата регистрации';
+$lang['clean'] = 'очистить';
+$lang['Create this site'] = 'Создать этот сайт';
+$lang['test'] = 'тест';
+$lang['test this remote site'] = 'тестировать этот удаленный сайт';
+$lang['remove tags'] = 'Удалить тэги';
+$lang['Repair and optimize database'] = 'исправить и оптимизировать базу данных';
+$lang['selection'] = 'отмеченные';
+$lang['set to'] = 'изменить на';
+$lang['singly represented'] = 'выбранный представитель';
+$lang['This site already exists'] = 'Такой сайт уже есть';
+$lang['created'] = 'создан';
+$lang['delete'] = 'удален';
+$lang['delete this site and all its attached elements'] = 'удалить этот сайт и все прикрепленные элементы';
+$lang['deleted'] = 'удален';
+$lang['an error happened'] = 'произошла ошибка';
+$lang['Local'] = 'Локальный';
+$lang['Remote'] = 'Удаленный';
+$lang['update the database from files'] = 'обновить базу данных из файлов';
+$lang['status'] = 'статус';
+$lang['Directory'] = 'Папка';
+$lang['sub-albums'] = 'вложенные альбомы';
+$lang['Synchronize metadata'] = 'Синхронизировать метаданные';
+$lang['target'] = 'изменить';
+$lang['Thumbnail'] = 'миниатюра';
+$lang['Title'] = 'Название';
+$lang['Album list management'] = 'Управление списком альбомов';
+$lang['Piwigo configuration'] = 'Настройка Piwigo';
+$lang['Edit album'] = 'Редактирование альбома';
+$lang['Group management'] = 'Управление группами';
+$lang['User list'] = 'Список пользователей';
+$lang['Edit photo information'] = 'Редактировать всю информацию о фотографии';
+$lang['Database synchronization with files'] = 'Синхронизация базы данных с файлами';
+$lang['all'] = 'все';
+$lang['height must be a number superior to'] = 'высота должна быть числом больше, чем';
+$lang['width must be a number superior to'] = 'ширина должна быть числом больше, чем';
+$lang['for the file format'] = 'для формата файла';
+$lang['Photo unreachable or no support'] = 'Фотография недоступна или поддержка не возможна';
+$lang['GD version'] = 'версия GD';
+$lang['General statistics'] = 'Общая статистика';
+$lang['average time'] = 'среднее время';
+$lang['number of miniaturized photos'] = 'число фотографий с миниатюрами';
+$lang['total time'] = 'общее время';
+$lang['for this file format'] = 'для формата этого файла';
+$lang['unit mode'] = 'Одиночный режим';
+$lang['Unlocked'] = 'Доступные';
+$lang['unset'] = 'очистить';
+$lang['Update albums informations'] = 'Обновить информацию об альбомах';
+$lang['Update photos information'] = 'Обновить информацию об изображениях';
+$lang['Synchronize'] = 'Синхронизация';
+$lang['reduce to single existing albums'] = 'поместить в один из существующих альбомов';
+$lang['Choose an option'] = 'Выберите параметры';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'показать максимум информации (добавленные альбомы и фотографии, удаленные альбомы и фотографии)';
+$lang['Error list'] = 'Список ошибок';
+$lang['Errors caption'] = 'Обозначение ошибки';
+$lang['Detailed informations'] = 'Детальная информация';
+$lang['File/directory read error'] = 'Ошибка чтения файла/папки';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Нет доступа к файлу или папке (возможно они отсутствуют или доступ к ним запрещен)';
+$lang['albums deleted in the database'] = 'альбомы удалены из базы данных';
+$lang['photos deleted from the database'] = 'фотографии удалены из базы данных';
+$lang['photos candidates for metadata synchronization'] = 'фотографии, предложенные для синхронизации';
+$lang['photos informations synchronized with files metadata'] = 'информация о фотографиях синхронизировалась с метаданными файлов';
+$lang['errors during synchronization'] = 'ошибок синхронизации';
+$lang['albums added in the database'] = 'альбомы добавлены в базу данных';
+$lang['photos added in the database'] = 'фотографии добавлены в базу данных';
+$lang['photos updated in the database'] = 'фотографии обновлены в базе данных';
+$lang['Search for new images in the directories'] = 'Поиск новых изображений в папках';
+$lang['added'] = 'добавлена';
+$lang['deleted'] = 'удалена';
+$lang['Metadata synchronization results'] = 'Результаты синхронизации метаданных';
+$lang['only perform a simulation (no change in database will be made)'] = 'только тестировать (не вносить изменения в базу данных)';
+$lang['Simulation'] = 'Тест';
+$lang['directories + files'] = 'папки и файлы';
+$lang['only directories'] = 'только папки';
+$lang['synchronize files structure with database'] = 'синхронизировать файловую структуру с базой данных';
+$lang['synchronize files metadata with database photos informations'] = 'синхронизируйте метаданные файлов с информацией о фотографиях базы данных';
+$lang['even already synchronized photos'] = 'даже уже просинхронизированные фотографии';
+$lang['Used metadata'] = 'Используемые метаданные';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Название папки и файла должно состоять из букв, цифр, "-", "_" и "."';
+$lang['wrong filename'] = 'неверное имя файла';
+$lang['Upload'] = 'Загрузка';
+$lang['user "%s" added'] = 'пользователь "%s" добавлен';
+$lang['User status'] = 'Статус пользователя';
+$lang['user_status_admin'] = 'Администратор';
+$lang['user_status_generic'] = 'Общий';
+$lang['user_status_guest'] = 'Гость';
+$lang['user_status_normal'] = 'Пользователь';
+$lang['user_status_webmaster'] = 'Вебмастер';
+$lang['Virtual album'] = 'Виртуальный альбом';
+$lang['Waiting'] = 'Ожидающие';
+$lang['default'] = 'по умолчанию';
+$lang['Toggle \'default group\' property'] = 'Сделать/убрать \'по умолчанию\'';
+$lang['Advanced features'] = 'Расширенные функции';
+$lang['Overall'] = 'Обзор';
+$lang['Year'] = 'Год';
+$lang['Month'] = 'Месяц';
+$lang['Day'] = 'День';
+$lang['Pages seen'] = 'Страниц просмотрено';
+$lang['Time'] = 'время';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Элемент';
+$lang['Section'] = 'раздел';
+$lang['An information email was sent to group "%s"'] = 'Информационное письмо отправлено для группы "%s"';
+$lang['Send an information email to group members'] = 'Отправить информационное письмо для группы';
+$lang['Group'] = 'Группа';
+$lang['[%s] Visit album %s'] = '[%s] Просмотреть альбом %s';
+$lang['Hello,'] = 'Привет,';
+$lang['See you soon.'] = 'До встречи.';
+$lang['Discover album:'] = 'Откройте альбом:';
+$lang['Mail content'] = 'Содержание';
+$lang['none'] = 'нет';
+$lang['high'] = 'большой';
+$lang['other'] = 'другой';
+$lang['Element type'] = 'Тип элемента';
+$lang['Image id'] = 'id изображения';
+$lang['Summary'] = 'Суммарно';
+$lang['%d line filtered'] = 'линия отфильтрована: %d';
+$lang['%d lines filtered'] = 'линий отфильтровано: %d';
+$lang['%d guest'] = 'гостей: %d';
+$lang['%d guests'] = 'гостей: %d';
+$lang['Hour'] = 'Час';
+$lang['guest'] = 'гость';
+$lang['default values'] = 'значение по умолчанию';
+$lang['Guest cannot be deleted'] = 'Гость не может быть удален';
+$lang['Default user cannot be deleted'] = 'Пользователь по умолчанию не может быть удален';
+$lang['Purge history detail'] = 'очистить историю';
+$lang['Purge history summary'] = 'очистить всю историю';
+$lang['Check integrity'] = 'Проверка совместимости';
+$lang['Anomaly'] = 'Неисправность';
+$lang['Correction'] = 'Корректировка';
+$lang['Automatic correction'] = 'Автоматическая коррекция';
+$lang['Impossible automatic correction'] = 'Автоматическая коррекция невозможна';
+$lang['Correction applied with success'] = 'Коррекция успешно применена';
+$lang['Correction applied with error'] = 'Коррекция применена с ошибками';
+$lang['%d anomaly has been detected.'] = 'неисправностей обнаружено: %d.';
+$lang['%d anomalies have been detected.'] = 'неисправностей обнаружено: %d.';
+$lang['%d anomaly has been corrected.'] = 'неисправностей скорректировано: %d.';
+$lang['%d anomalies have been detected corrected.'] = 'неисправностей скорректировано: %d.';
+$lang['%d anomaly has not been corrected.'] = 'неисправностей НЕ скорректировано: %d.';
+$lang['%d anomalies have not been corrected.'] = 'неисправностей НЕ скорректировано: %d.';
+$lang['Go to %s or %s for more informations'] = 'Смотрите %s или %s для получения дополнительной информации';
+$lang['the forum'] = 'форум';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'значение %s в файле не верно, так как exif не поддерживается';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s нужно отключить в файле config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'Статус пользователя "гость" больше не существует';
+$lang['Main "guest" user status is incorrect'] = 'Статус пользователя "гость" некорректен';
+$lang['Default user does not exist'] = 'Пользователь по умолчанию больше не существует';
+$lang['Main "webmaster" user does not exist'] = 'Пользователь "webmaster" больше не существует';
+$lang['Main "webmaster" user status is incorrect'] = 'Статус пользователя "webmaster" некорректен';
+$lang['User "%s" created with "%s" like password'] = 'Пользователь "%s" создан с паролем "%s"';
+$lang['Status of user "%s" updated'] = 'Статус пользователя "%s" обновлен';
+$lang['add new photos to caddie'] = 'добавить новые фотографии в корзину';
+$lang['No display'] = 'Не показывать';
+$lang['Classic display'] = 'Классический вид';
+$lang['Hoverbox display'] = 'Вид Hoverbox';
+$lang['Mail address is obligatory for all users'] = 'Адрес электронной почты обязателен для всех пользователей';
+$lang['Minimum privacy level'] = 'Минимальный уровень защиты';
+$lang['Privacy level'] = 'Уровень защиты';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Контакты';
+$lang['Level 2'] = 'Друзья';
+$lang['Level 4'] = 'Семья';
+$lang['Level 8'] = 'Администрация';
+$lang['Reinitialize check integrity'] = 'Повторить проверку целостности';
+$lang['Check all'] = 'Отметить все';
+$lang['Uncheck all'] = 'Снять все отметки';
+$lang['Check automatic corrections'] = 'Отметить автокоррекцию';
+$lang['Apply selected corrections'] = 'Применить выбранные корректировки';
+$lang['Ignore selected anomalies'] = 'Игнорировать отмеченные неисправности';
+$lang['Refresh'] = 'Обновить';
+$lang['The anomaly will be ignored until next application version'] = 'Неисправности будут игнорироваться до установки следующей версии скрипта';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Исправленная неисправность больше не будет игнорироваться';
+$lang['%d anomaly has been ignored.'] = 'неисправностей проигнорировано: %d';
+$lang['%d anomalies have been ignored.'] = 'неисправностей проигнорировано: %d';
+$lang['Plugins which need upgrade'] = 'Плагины, требующие обновлений';
+$lang['Plugin list'] = 'Список плагинов';
+$lang['Check for updates'] = 'Проверка обновлений';
+$lang['Other plugins'] = 'Другие плагины';
+$lang['Last revisions'] = 'Последние измененные';
+$lang['Are you sure you want to delete this plugin?'] = 'Уверены, что хотите удалить этот плагин?';
+$lang['Are you sure you want to install this plugin?'] = 'Уверены, что хотите установить этот плагин?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Уверены, что хотите обновить? Проверьте, не нужна ли этой версии деинсталляция.';
+$lang['Plugin has been successfully copied'] = 'Плагин успешно скопирован';
+$lang['You might go to plugin list to install and activate it.'] = 'Вы можете перейти к списку плагинов для его установки и активации.';
+$lang['Can\'t create temporary file.'] = 'Невозможно создать временный файл.';
+$lang['Can\'t download archive.'] = 'Невозможно скачать архив.';
+$lang['Can\'t read or extract archive.'] = 'Невозможно прочитать или распаковать архив.';
+$lang['An error occured during extraction (%s).'] = 'Ошибка в процессе распаковки (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Пожалуйста, проверьте права папки "plugins" и подпапок (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Невозможно соединиться с сервером.';
+$lang['Purge compiled templates'] = 'Очистить созданные шаблоны';
+$lang['ACCESS_0'] = 'Свободный доступ';
+$lang['ACCESS_1'] = 'Доступно для всех';
+$lang['ACCESS_2'] = 'Доступно для избранных';
+$lang['ACCESS_3'] = 'Доступно для администраторов';
+$lang['ACCESS_4'] = 'Доступно для вебмастера';
+$lang['ACCESS_5'] = 'Недоступно';
+$lang['Support'] = 'Поддержка';
+$lang['Documentation'] = 'Документация';
+$lang['A new version of Piwigo is available.'] = 'Доступна новая версия Piwigo.';
+$lang['Piwigo Administration'] = 'Администрирование Piwigo';
+$lang['Piwigo version'] = 'Версия Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Запущена последняя версия Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Установленная версия %s [%s] не совместима с версией [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Чтобы воспользоваться всеми возможностями скрипта, обновите систему, иначе скрипт может работать некорректно';
+$lang['Deleted on'] = 'Удалено';
+$lang['Last hit'] =  'Последние просмотренные';
+$lang['GD library is missing'] = 'Библиотека GD отсутствует';
+$lang['Templates'] = 'Шаблоны';
+$lang['Extend for templates'] = 'Расширение для шаблонов';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =  'Заменить исходные шаблоны на пользовательские из подпапки template-extension';
+$lang['Replacers (customized templates)'] = 'Заменяющий (пользовательский шаблон)';
+$lang['Original templates'] = 'Исходный шаблон';
+$lang['Optional URL keyword'] = 'Опциональное ключевое слово URL';
+$lang['Templates configuration has been recorded.'] = 'Templates configuration has been recorded.';
+$lang['All optimizations have been successfully completed.'] = 'Все оптимизации успешно завершены.';
+$lang['Optimizations have been completed with some errors.'] = 'Оптимизации завершены с ошибками.';
+$lang['Modify information'] = 'Внести изменения в информацию';
+$lang['nothing'] = 'ничего';
+$lang['overrides existing values with empty ones'] = 'замена существующих значений пустыми';
+$lang['Manage photo ranks'] = 'Редактировать оценку фотографии';
+$lang['Edit ranks'] = 'Изменить порядок';
+$lang['No photo in this album'] = 'В этом альбоме нет фотографий';
+$lang['Images manual order was saved'] = 'Указанный порядок изображений сохранен';
+$lang['ranks'] = 'порядок';
+$lang['Drag to re-order'] = 'Перетащите чтобы изменить порядок';
+$lang['Quick Local Synchronization'] = 'Быстрая синхронизация';
+$lang['No photo can be deleted'] = 'Нет фото для удаления';
+$lang['Delete selected photos'] = 'Удалить выбранные фото';
+$lang['%d photo was deleted'] = 'удалено фотографий: %d';
+$lang['%d photos were deleted'] = 'удалено фотографий: %d';
+$lang['Unable to check for upgrade.'] = 'Невозможно проверить обновление.';
+$lang['Date'] = 'Дата';
+$lang['Operation in progress'] = 'Обработка обращения.';
+$lang['Please wait...'] = 'Пожалуйста, подождите...';
+$lang['Downloads'] = 'Загрузки';
+$lang['Released on'] = 'Выпуск';
+$lang['Number of downloads'] = 'Число скачиваний';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo информационная рассылка';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Оставайтесь на связи с проектом Piwigo, подпишитесь на информационную рассылку Piwigo. Вы получите письмо, как только будет доступен новый релиз (иногда письма будут содержать корректировку ошибок безопасности, о которых Вы должны знать и исправить), или когда произойдет какое-то важное событие с проектом. Это всего несколько электронных писем в год.';
+$lang['Subscribe %s'] = 'Подписка %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Подписать %s на информационную рассылку от Piwigo';
+$lang['Purge search history'] = 'Очистить историю поиска';
+$lang['Hide'] = 'Спрятать';
+$lang['Password is missing. Please enter the password.'] = 'Пароль не верен. Пожалуйста, повторите попытку.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Подтверждение пароля отсутствует. Пожалуйста, подтвердите выбранный пароль.';
+$lang['Allow users to edit their own comments'] = 'Позволить пользователям редактировать свои комментарии';
+$lang['Allow users to delete their own comments'] = 'Позволить пользователям удалять их комментарии';
+$lang['Email administrators when a comment is modified'] = 'Уведомить администратора по почте, когда комментарий изменен';
+$lang['Email administrators when a comment is deleted'] = 'Уведомить администратора по почте, когда комментарий удален';
+$lang['Cannot delete the old permalink !'] = 'Старая постоянная ссылка не может быть удалена!';
+$lang['Hit'] = 'Популярное';
+$lang['Tools'] = 'Инструменты';
+$lang['Photos'] = 'Фотографии';
+$lang['Themes'] = 'Темы';
+$lang['Instructions to use Piwigo'] = 'Инструкция по использованию Piwigo';
+$lang['Installed Themes'] = 'Установленные темы';
+$lang['Add New Theme'] = 'Добавить новую тему';
+$lang['Forbid this theme to users'] = 'Запретить использование этой темы пользователям';
+$lang['Set as default theme for unregistered and new users'] = 'Установить тему по умолчанию для новых и незарегистрированных пользователей';
+$lang['unknown'] = 'неизвестен';
+$lang['Upload Photos'] = 'Загрузить фотографии';
+$lang['Drop into album'] = 'Выберите альбом';
+$lang['+ Add an upload box'] = '+ Добавить поле для загрузки';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Создайте папку "%s" в папке где установлен Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Дайте доступ для записи (chmod 777) к папке "%s" в папке где установлен Piwigo';
+$lang['existing album'] = 'существующий альбом';
+$lang['create a new album'] = 'создать новый альбом';
+$lang['Album name'] = 'Название альбома';
+$lang['Album "%s" has been added'] = 'Альбом "%s" добавлен';
+$lang['Uploaded Photos'] = 'Загруженные фотографии';
+$lang['%d photos uploaded'] = 'загружено фотографий: %d';
+$lang['Privacy level set to "%s"'] = 'Установить уровень доступа "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Альбом "%s" содержит фотографий: %d';
+$lang['Manage this set of %d photos'] = 'Редактировать этот набор из %d фотографий';
+$lang['Select files'] = 'Выбрать файлы';
+$lang['Everybody'] = 'Все';
+$lang['Who can see these photos?'] = 'Кто может смотреть эти изображения?';
+$lang['Settings'] = 'Установки';
+$lang['Resize'] = 'Изменить размеры';
+$lang['Maximum width'] = 'Максимальная ширина';
+$lang['pixels'] = 'пикселей';
+$lang['Maximum height'] = 'Максимальная высота';
+$lang['Image Quality'] = 'Качество изображения';
+$lang['Save Settings'] = 'Сохранить установки';
+$lang['Your configuration settings are saved'] = 'Ваши настройки конфигурации сохранены';
+$lang['Active Themes'] = 'Активные темы';
+$lang['Add write access to the "%s" directory'] = 'Добавьте права записи для папки "%s"';
+$lang['Administration Home'] = 'Панель администрирования';
+$lang['Change Admin Colors'] = 'Изменить цвет панели администратора';
+$lang['Delete this theme'] = 'Удалить эту тему';
+$lang['Directory does not exist'] = 'Папка не существует';
+$lang['Download,'] = 'Загрузить,';
+$lang['FTP + Synchronization'] = 'FTP + Синхронизация';
+$lang['Get Support on Piwigo Forum'] = 'Обратитесь за помощью на Piwigo форум';
+$lang['Help Me'] = 'Помощь';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Эта тема не может быть активизирована, поскольку родительская тема отсутствует: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Эта тема не может быть удалена, потому что другие темы зависят от нее: %s';
+$lang['Inactive Themes'] = 'Неактивные темы';
+$lang['Install on your computer,'] = 'Установите на Ваш компьютер,';
+$lang['Make this theme available to users'] = 'Сделать эту тему доступной для пользователей';
+$lang['Page end'] = 'Конец страницы';
+$lang['Piwigo Uploader'] = 'Piwigo загрузчик';
+$lang['Read Piwigo Documentation'] = 'Читайте документацию Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Откройте pLoader и добавьте свои фотографии.';
+$lang['Switch to clear or dark colors for administration'] = 'Выбрать светлые или темные тона для панели администирования';
+$lang['Theme has been successfully installed'] = 'Тема была успешно установлена';
+$lang['Visit Gallery'] = 'Перейти на сайт';
+$lang['Visit Piwigo project website'] = 'посмотрите сайт проекта Piwigo ';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader заменяет <em>Piwigo Загрузчик</em>. С помощью pLoader Вы можете локально подготовить Ваши фотографии и загрузить их в Вашу фотогалерею Piwigo.';
+$lang['Guest Settings'] = 'Установки пользователя Гость';
+$lang['Main Page'] = 'Главная страница';
+$lang['Photo Page'] = 'Страница фотографии';
+$lang['Activate Navigation Bar'] = 'Активизировать навигационную панель';
+$lang['Activate Navigation Thumbnails'] = 'Активизировать навигацию по миниатюрам';
+$lang['Activate icon "%s"'] = 'Активизировать иконку "%s"';
+$lang['Photo Properties'] = 'Свойства фотографии';
+$lang['Allow user customization'] = 'Разрешить пользователям изменять внешний вид галереи';
+$lang['Languages'] = 'Языки';
+$lang['Installed Languages'] = 'Установленные языки';
+$lang['Add New Language'] = 'Добавить новый язык';
+$lang['Language has been successfully installed'] = 'Язык был успешно установлен';
+$lang['Select:'] = 'Вы можете выбрать:';
+$lang['None'] = 'Ничего';
+$lang['Invert'] = 'Обратить';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Невозможный деактивировать эту тему, у Вас должна оставаться по крайней мере одна тема.';
+$lang['Webmaster status is required.'] = 'Требуется статус веб мастера.';
+$lang['Bound Theme'] = 'связанная тема';
+$lang['Allow rating'] = 'Разрешить оценивать';
+$lang['Select at least one comment'] = 'Выберите по крайней мере один комментарий';
+$lang['Active Plugins'] = 'Активные плагины';
+$lang['Inactive Plugins'] = 'Неактивные плагины';
+$lang['Missing Plugins'] = 'Потерянные плагины';
+$lang['Uninstalled Plugins'] = 'Удаленные плагины';
+$lang['By %s'] = ' %s';
+$lang['Visit plugin site'] = 'Страница плагина';
+$lang['Active Languages'] = 'Активные языки';
+$lang['Delete this language'] = 'Удалить этот язык';
+$lang['Forbid this language to users'] = 'Сделать недоступным этот язык для пользователей';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Невозможный деактивировать этот язык, сначала установите другой язык как значение по умолчанию.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Невозможный деактивировать этот язык, у Вас должен быть по крайней мере один язык.';
+$lang['Inactive Languages'] = 'Неактивные языки';
+$lang['Make this language available to users'] = 'Сделать этот язык доступным для пользователей';
+$lang['Set as default language for unregistered and new users'] = 'Установить язык по умолчанию для незарегистрированных и новых пользователей';
+$lang['Add Photos'] = 'Добавить фотографии';
+$lang['The following tag was deleted'] = 'Следущие метки были удалены';
+$lang['Miscellaneous'] = 'Разное';
+$lang['Virtual Links'] = 'Виртуальные ссылки';
+$lang['Templates configuration has been recorded.'] = 'Конфигурация шаблона перезаписана.';
+$lang['Modify information'] = 'Информация по изменению';
+$lang['There is no other language available.'] = 'Нет других доступных языков.';
+$lang['There is no other plugin available.'] = 'Нет других доступных плагинов.';
+$lang['There is no other theme available.'] = 'Нет других доступных тем.';
+$lang['By rank'] = 'По рейтингу';
+$lang['Manual order'] = 'Сортировать вручную';
+$lang['Add another set of photos'] = 'Добавить фотографии';
+$lang['Order of menubar items has been updated successfully.'] = 'Порядок расположения элементов меню изменен успешно.';
+$lang['This theme was not designed to be directly activated'] = 'В этой теме не предусмотрена активация напрямую';
+$lang['Who can see this photo?'] = 'Кто может смотреть это изображение?';
+$lang['Pending Comments'] = 'Проверка комментариев';
+$lang['Menu Management'] = 'Меню';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'В вашем файле php.ini, upload_max_filesize (%sB) больше, чем post_max_size (%sB), вы должны изменить это значение';
+$lang['Exif extension not available, admin should disable exif use'] = 'Расширение Exif не поддерживается, администратор должен отключить использование Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Размер загружаемого файла превышает значение upload_max_filesize, указанное в php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Размер загружаемого файла превышает значение post_max_size, указанное in php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Размер загружаемого файла превышает значение MAX_FILE_SIZE, указанное в html форме';
+$lang['The uploaded file was only partially uploaded'] = 'Файл был загружен лишь частично';
+$lang['No file was uploaded'] = 'Файл не был загружен';
+$lang['Missing a temporary folder'] = 'Потеряна временная папка';
+$lang['Failed to write file to disk'] = 'Не удалось записать файл на диск';
+$lang['File upload stopped by extension'] = 'Загрузка файла остановлена из-за его расширения';
+$lang['Unknown upload error'] = 'Ошибка загрузки не известна';
+$lang['Error on file "%s" : %s'] = 'Ошибка в файле "%s": %s';
+$lang['automatic order'] = 'автоматический режим';
+$lang['manual order'] = 'ручной режим';
+$lang['Albums automatically sorted'] = 'Автоматическая сотрировка альбомов';
+$lang['Batch Manager'] = 'Пакетный менеджер';
+$lang['include child albums'] = 'включает вложенные альбомы';
+$lang['Selection'] = 'Выбор';
+$lang['Action'] = 'Действие';
+$lang['Set author'] = 'Установить автора';
+$lang['Set title'] = 'Установить название';
+$lang['Set creation date'] = 'Установить дату создания';
+$lang['Apply action'] = 'Добавить действие';
+$lang['on the %d selected photos'] = 'на %d выбранных фотографиях';
+$lang['%d of %d photos selected'] = '%d из %d фотографий выбрано';
+$lang['No photo selected, %d photos in current set'] = 'Ничего не выбрано, а всего в текущем наборе - %d изображений';
+$lang['All %d photos are selected'] = 'Все %d фотографии были выбраны';
+$lang['remove this filter'] = 'удалить этот фильтр';
+$lang['Duplicates'] = 'дубликаты';
+$lang['Add a filter'] = 'Добавить фильтр';
+$lang['Remove all filters'] = 'Удалить все фильтры';
+$lang['Refresh photo set'] = 'Обновить набор изображений';
+$lang['The whole page'] = 'Все на странице';
+$lang['The whole set'] = 'Все в наборе';
+$lang['No photo in the current set.'] = 'Нет фотографий в текущем наборе.';
+$lang['No photo selected, no action possible.'] = 'Ничего не выбрано, действие невозможно.';
+$lang['Choose an action'] = 'Выберите действие';
+$lang['remove author'] = 'удалить автора';
+$lang['Type here the author name'] = 'напечатайте имя автора здесь';
+$lang['remove title'] = 'удалить название';
+$lang['Type here the title'] = 'напечатайте название здесь';
+$lang['remove creation date'] = 'удалить дату создания';
+$lang['Album photos associated to the following albums: %s'] = 'Фотографии этого альбома связаны со следущими альбомами: %s';
+$lang['Delete orphan tags'] = 'Удалить тэги, с которыми не связано ни одно изображение';
+$lang['delete photo'] = 'удалить фотографию';
+$lang['Orphan tags deleted'] = 'Непривязанные метки удалены';
+$lang['Week starts on'] = 'Неделя начинается с';
+$lang['You have %d orphan tags: %s.'] = 'У Вас есть %d непривязанных меток: %s.';
+$lang['Remove from caddie'] = 'Очистить корзину';
+$lang['Themes which need upgrade'] = 'Темы, которые нужно обновить';
+$lang['Languages which need upgrade'] = 'Языки, которые нужно обновить';
+$lang['All themes are up to date.'] = 'Все темы обновлены до последней версии.';
+$lang['All plugins are up to date.'] = 'Все плагины обновлены до последней версии.';
+$lang['All languages are up to date.'] = 'Все языки обновлены до последней версии.';
+$lang['Visit theme site'] = 'Посмотреть полное описание темы';
+$lang['Visit language site'] = 'Посмотреть подробную страницу языка';
+$lang['New Version'] = 'Новая версия';
+$lang['Obsolete Plugins'] = 'Устаревшие плагины';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ВНИМАНИЕ! По всей вероятности, этот плагин не совместим с данной версией Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Всё равно хотите активировать?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ЭТОТ ПЛАГИН СЕЙЧАС УЖЕ ЯВЛЯЕТСЯ ЧАСТЬЮ ЯДРА PIWIGO! УДАЛИТЕ ЕГО СЕЙЧАС!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ОШИБКА: НЕСМОТРЯ НА ТО, ЧТО ЭТОТ ПЛАГИН УСТАНОВЛЕН, ОН НЕ НАЙДЕН! УДАЛИТЕ ЕГО.';
+$lang['new'] = 'новый';
+$lang['No results'] = 'Ничего не найдено';
+$lang['Searching...'] = 'Выполняется поиск...';
+$lang['Type in a search term'] = 'Определите критерий поиска';
+$lang['display'] = 'показать';
+$lang['Activate icon "new" next to albums and pictures'] = 'Активировать иконку "new" рядом с альбомами и фотографиями';
+$lang['Deactivate all'] = 'Деактивировать все';
+$lang['Default photos order'] = 'Порядок фотографий по умолчанию';
+$lang['Restore'] = 'Восстановить';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Восстановление конфигурации по умолчанию. Ваши настройки плагинов будут потеряны!';
+$lang['Show menubar'] = 'Показать меню';
+$lang['Thumbnails generation in progress...'] = 'Идет генерация миниатюр ...';
+$lang['Photos generation in progress...'] = 'Идет генерация фотографий ...';
+$lang['%s photos have been regenerated'] = '%s фотографий было создано заново';
+$lang['%s photos can not be regenerated'] = '%s фотографий не было создано заново';
+$lang['Updates'] = 'Обновление';
+$lang['Update in progress... Please wait.'] = 'Процесс обновления... Пожалуйста, подождите.';
+$lang['Ignore this update'] = 'Пропустить это обновление';
+$lang['Reset ignored updates'] = 'Сбросить проигнорированные обновления';
+$lang['Update All'] = 'Обновить все';
+$lang['ERROR'] = 'ОШИБКА';
+$lang['Update Complete'] = 'Обновление завершено';
+$lang['Piwigo Update'] = 'Обновление Piwigo';
+$lang['Extensions Update'] = 'Обновление плагинов';
+$lang['All extensions are up to date.'] = 'Все плагины обновлены.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Следующие плагины, возможно, не являются совместимыми с новой версией Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следующие темы, возможно, не являются совместимыми с новой версией Piwigo:';
+$lang['I decide to update anyway'] = 'Всё равно обновить!';
+$lang['Update to Piwigo %s'] = 'Обновление до версии Piwigo %s';
+$lang['Two updates are available'] = 'Два апдейта доступны';
+$lang['This is a minor update, with only bug corrections.'] = 'Это незначительный апдейт, исправлены небольшие ошибки.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Это основной апдейт, с <a href="%s">новыми восхитительными возможностями</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Некоторые темы и плагины  все же могут быть не доступны.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Вы можете обновиться до версии  Piwigo %s, минуя апдейт до версии Piwigo %s (рекомендуется).';
+$lang['Save Template Directory'] = 'Сохранить папку шаблонов';
+$lang['Dump Database'] = 'Дамп базы данных';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включить данные истории (Предупреждение: память сервера может быть превышена)';
+$lang['Unable to dump database.'] = 'Невозможно сделать дамп базы данных.';
+$lang['Some upgrades are available for extensions.'] = 'Для некоторых плагинов доступны обновления.';
+$lang['Ignore All'] = 'Пропустить все';
+$lang['Crop'] = 'Обрезать';
+$lang['Width'] = 'Ширина';
+$lang['Height'] = 'Высота';
+$lang['Follow Orientation'] = 'Изменить ориентацию';
+$lang['Graphics Library'] = 'Библиотека изображений';
+$lang['Add a criteria'] = 'Добавить критерий';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Вы не можете определить порядок сортировки фотографий по умолчанию, так как он переопределен в локальных настройках.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Вы использовали <i>$conf[\'order_by\']</i> в качестве порядка сортировки в локальном файле конфигурации. Этот параметр не рекомендуется для использования. Пожалуйста, удалите его или переименуйте в <i>$conf[\'order_by_custom\']</i> !';
+$lang['Learn more'] = 'Узнать больше';
+$lang['Rate'] = 'Оценка';
+$lang['Average rate'] = 'Средний балл';
+$lang['Rate date'] = 'Дата оценки';
+$lang['... or '] = '... или ';
+$lang['Create'] = 'Создать';
+$lang['Start Upload'] = 'Начать загрузку';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Вы используете Flash-загрузчик. Возникли проблемы? Попробуйте <a href="%s">браузерный загрузчик</a>.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Вы используете браузерный загрузчик. Попробуйте <a href="%s">Flash-загрузчик</a>.';
+$lang['Maximum file size: %sB.'] = 'Максимальный размер файла: %sB.';
+$lang['Allowed file types: %s.'] = 'Допустимые типы файлов: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Максимальное разрешение: %dM пикселей (то есть %dx%d пикселей).';
+$lang['Manage Permissions'] = 'Настройка прав доступа';
+$lang['Photo %s of %s'] = 'Фотография %s из %s';
+$lang['show details'] = 'показать подробности';
+$lang['hide details'] = 'скрыть подробности';
+$lang['Merge tags'] = 'Объединить метки';
+$lang['Select the destination tag'] = 'Выбрать метку-получатель';
+$lang['(this tag will be deleted)'] = '(эта метка будет удалена)';
+$lang['Confirm merge'] = 'Подтвердите объединение';
+$lang['Merge selected tags'] = 'Объединить выбранные метки';
+$lang['No destination tag selected'] = 'Метка-получатель не выбрана';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Метки <em>%s</em> объединены в метку <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Выберите по крайней мере две метки для объединения';
+$lang['Select an album'] = 'Выберите альбом';
+$lang['An error has occured during upgrade.'] = 'Во время обновления произошла ошибка.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Во время распаковки произошла ошибка. Пожалуйста, проверьте права доступа к папке установки piwigo.<br><a href="%s">Нажмите, чтобы посмотреть лог ошибки</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не может получить файлы обновления с сервера';
+$lang['Zoom'] = 'увеличение';
+$lang['Add to caddie'] = 'Добавить в корзину';
+
+$lang['%s has been successfully updated.'] = '%s успешно обновлено.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Приложение <em>Piwigo для iOS</em> позволяет Вам соединяться с Вашей галереей Piwigo с Вашего iPhone, iPad или iPod touch, создавать альбомы и загружать несколько фотографий сразу.';
+$lang['A locked gallery is only visible to administrators'] = 'Заблокированная галерея видна только администраторам';
+$lang['Activate comments'] = 'Активировать комментарии';
+$lang['Add tags'] = 'Добавить тэги';
+$lang['Applications'] = 'Приложения';
+$lang['Available versions for'] = 'Доступные версии для';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'По умолчанию Piwigo создает новые изображения формата web из HD (высокого разрешения) версий фотографий.';
+$lang['Default comments order'] = 'Порядок комментариев по умолчанию';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Если HD-изображение недоступно и если существующее изображение web-размера больше чем получается при изменении размеров, Piwigo запишет его как HD и создаст из него web-размер.';
+$lang['Last import'] = 'Последняя загрузка';
+$lang['List'] = 'Список';
+$lang['Original Size'] = 'Размер оригинала';
+$lang['Photo name'] = 'Название фотографии';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo для iOS (iPhone, iPad, iPod Touch)';
+$lang['Predefined filter'] = 'Префильтр';
+$lang['Resize after upload'] = 'Изменение размеров после загрузки';
+$lang['Send connection settings by email'] = 'Отправить настройки подключения по электронной почте';
+$lang['The original image quality must be a number between %d and %d'] = 'Качество изображения оригинала должно быть числом между %d и %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Максимальная высота оригинала должна быть числом между %d и %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Максимальная ширина оригинала должна быть числом между %d и %d';
+$lang['Unlock gallery'] = 'Разблокировать галерею';
+$lang['Web Form'] = 'Web-форма';
+$lang['With no album'] = 'Без альбома';
+$lang['With no tag'] = 'Без меток';
+$lang['With no virtual album'] = 'Без виртуальных альбомов';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'Пользователи %u автоматически получили разрешение, так как входят  в группу, которой дано разрешение.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Приложение <em>Piwigo для Android</em> позволяет Вам соединяться с Вашей галереей Piwigo с Вашего Android телефона, создавать альбомы и загружать несколько фотографий сразу.';
+$lang['add a new watermark'] = 'добавить новый водяной знак';
+$lang['administrators'] = 'администраторов';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom - это софт для фотографов, созданный для систематизации большого количества фотографий, их обработки и последующего использования.';
+$lang['any visitor can see this album'] = 'все посетители видят этот альбом';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture - мощный инструмент для улучшения изображений и управления большими библиотеками изображений для Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture создан для профессиональных фотографов с простотой iPhoto.';
+$lang['apply automatic sort order'] = 'применить автоматическую сортировку';
+$lang['Apply watermark if height is bigger than'] = 'Применять водяной знак, если высота больше';
+$lang['Apply watermark if width is bigger than'] = 'Применять водяной знак, если ширина больше';
+$lang['Automatic sort order'] = 'Автоматическая сортировка';
+$lang['Available on'] = 'Доступно';
+$lang['bottom left corner'] = 'левый нижний угол';
+$lang['bottom right corner'] = 'правый нижний угол';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'По умолчанию, центром композиции считается геометрический центр изображения.';
+$lang['cancel manual order'] = 'отменить ручную сортировку';
+$lang['Cancel'] = 'Отмена';
+$lang['Center of interest'] = 'Центр интереса';
+$lang['custom'] = 'Пользовательский';
+$lang['Delete multiple size images'] = 'Удалить изображения разных размеров';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam - продвинутый и бесплатный менеджер фотографий для Linux, Windows и MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam создан для фотографов которым нужно просматривать, управлять, редактировать, каталогизировать, проставлять метки и публиковать фотографии.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Среди его возможностей просмотр галереи, создание альбома и загрузка фотографий.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'При обрезке изображения, например квардратная миниатюра, Piwigo старается максимально отобразить центр композиции.';
+$lang['Gallery unlocked'] = 'Галерея разблокирована';
+$lang['Generate multiple size images'] = 'Сгенерировать изображения разных размеров';
+$lang['Groups and users'] = 'Пользователи и группы';
+$lang['include photos with lower privacy level'] = 'включены фотографии с более низким уровнем приватности';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto - менеджер фото по умолчанию для MacOSX. Плагин публикации фотографий Piwigo позволяет создавать новые альбомы и загружать фотографии напрямую из iPhoto в Вашу галерею Piwigo.';
+$lang['middle'] = 'середина';
+$lang['modified'] = 'изменен';
+$lang['Move to album'] = 'Переместить в альбом';
+$lang['No group is permitted to see this private album'] = 'Нет групп, которым открыт доступ к этому приватному альбому';
+$lang['Not cropped correctly?'] = 'Вырезано некорректно?';
+$lang['Notify administrators when a comment is'] = 'Уведомить администраторов когда комментарий';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'В Linux, просто установите Shotwell с диспетчером пакетов и активируйте опцию публикации в Piwigo.';
+$lang['Opacity'] = 'Прозрачность';
+$lang['pending validation'] = 'ожидает проверки';
+$lang['Permission granted for groups'] = 'Разрешение предоставлено для групп';
+$lang['Permission granted for users'] = 'Разрешение предоставлено для пользователей';
+$lang['Permission management'] = 'Управление доступом';
+$lang['Photo sizes with crop'] = 'Размеры изображений с кропом';
+$lang['Piwigo export plugin for Aperture'] = 'Плагин публикации фотографий для Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Плагин публикации фотографий для iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo для Android';
+$lang['Piwigo publish plugin for digiKam'] = 'Плагин публикации фотографий для digiKam';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Плагин публикации фотографий в Piwigo из Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Плагин публикации фотографий для Shotwell';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (клиент RemoteGallery для Android) - это клиент для Piwigo с открытым кодом (GPL v3) для платформы Android.';
+$lang['registered users'] = 'зарегистрированных пользователей';
+$lang['Save manual order'] = 'Сохранить ручную сортировку';
+$lang['Save visits in history for'] = 'Сохранять посещения в истории для';
+$lang['Select a file'] = 'Выберите файл';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Выделите необходимую зону мышкой, и она станет новым отображаемым центром композиции.';
+$lang['Select groups...'] = 'Выбрать группы...';
+$lang['Select users...'] = 'Выбрать пользователей...';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell - приложение с открытым кодом для каталогизации фотографий под Linux. Является менеджером фото по умолчанию для Ubuntu и Fedora.';
+$lang['simple visitors'] = 'простых посетителей';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Центр композиции - самая значимая зона в фотографии.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Плагин публикации фотографий Piwigo позволяет создавать новые альбомы и загружать фотографии напрямую в Вашу галерею Piwigo.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Плагин публикации Piwigo позволяет экспортировать и синхронизировать фотографии из Lightroom напрямую в Вашу галерею Piwigo.';
+$lang['There is no group in this gallery.'] = 'В галерее нет групп.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Этот альбом содержит фотографий: %d, добавлен между %s и %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Этот альбом содержит фотографий: %d, добавлен %s.';
+$lang['This album contains no photo.'] = 'Этот альбом не содержит фотографий.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Для экспорта фото из digiKam в Piwigo, просто установите digiKam и плагин Kipi.';
+$lang['top left corner'] = 'левый верхний угол';
+$lang['top right corner'] = 'правый верхний угол';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'посетители должны авторизоваться и иметь соответствующие права для просмотра этого альбома';
+$lang['X Position'] = 'Координата X';
+$lang['X Repeat'] = 'X Повтор';
+$lang['Y Position'] = 'Координата Y';
+$lang['You can activate only one mobile theme.'] = 'Вы можете активировать только одну мобильную тему.';
+$lang['Multiple Size'] = 'Размеры';
+$lang['%d day'] = '%d день';
+$lang['%d days'] = '%d дней';
+$lang['%d hour'] = '%d час';
+$lang['%d hours'] = '%d часов';
+$lang['%d minute'] = '%d минута';
+$lang['%d minutes'] = '%d минуты';
+$lang['%d month'] = '%d месяц';
+$lang['%d months'] = '%d месяцев';
+$lang['%d second'] = '%d секунд';
+$lang['%d seconds'] = '%d секунды';
+$lang['%d year'] = '%d год';
+$lang['%d years'] = '%d лет';
+$lang['%s ago'] = '%s назад';
+$lang['%s in the future'] = '%s в будущем';
+$lang['Added by %s'] = 'Добавлен %s';
+$lang['Numeric identifier : %d'] = 'Идентификатор: %d';
+$lang['Original file : %s'] = 'Оригинал: %s';
+$lang['Posted %s on %s'] = 'Опубликован %s в %s';
+$lang['Rated %d times, score : %.2f'] = 'Оценок: %d, средняя: %.2f';
+$lang['Sharpen'] = 'Резкость';
+$lang['Visited %d times'] = 'Просмотров: %d';
+$lang['Watermark'] = 'Водяной знак';
+$lang[' and %d virtuals'] = ' и виртуальных: %d';
+$lang['%d physicals'] = 'реальных: %d';
+$lang['%d week'] = '%d недель';
+$lang['%d weeks'] = '%d недель';
+$lang['Edit photo'] = 'Редактировать фото';
+$lang['create a new site'] = 'создать новый сайт';
+$lang['No order field selected'] = 'Не выбран порядок полей';
+$lang['Duplicate selected tags'] = 'Дублировать выделенные теги';
+$lang['Name of the duplicate'] = 'Название дубля';
+$lang['Source tag'] = 'Тег-источник';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Тег "%s" теперь дубликат "%s"';
+$lang['Landscape'] = 'Ландшафт';
+$lang['Minimum height'] = 'Минимальная высота';
+$lang['Minimum width'] = 'Минимальная ширина';
+$lang['Panorama'] = 'Панорама';
+$lang['Portrait'] = 'Портрет';
+$lang['Manage photos'] = 'Управление фотографиями';
+$lang['Number of albums per page'] = 'Количество альбомов на странице';
+$lang['View in gallery'] = 'Смотреть в галерее';
+$lang['Ratio'] = 'способ';
+$lang['between %.2f and %.2f'] = 'между %.2f и %.2f';
+$lang['between %d and %d pixels'] = 'между %d и %d пикселями';
+$lang['Duplicate'] = 'Дубликат';
+$lang['Manage the members'] = 'Управление участниками';
+$lang['Merge selected groups'] = 'Объединить выбранные группы';
+$lang['No group selected, no action possible.'] = 'Группы не выбраны, поэтому сделать ничего нельзя';
+$lang['No members to manage'] = 'Не выбраны пользователи для управления';
+$lang['Please select at least two groups'] = 'Пожалуйста, выберите хотя бы две группы';
+$lang['Rename'] = 'Переименовать';
+$lang['This group will be set to default'] = 'Эта группа будет использоваться по умолчанию';
+$lang['This group will be unset to default'] = 'Эта группа не будет теперь использоваться по умолчанию';
+$lang['Type here the name of the new group'] = 'Введите имя новой группы';
+$lang['Purge user cache'] = 'Очистить кэш пользователя';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Размер изображения будет уменьшен до %dx%d пикселей.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Изменение размеров изображений отключено из-за использования GD в качестве графической библиотеки';
+$lang['Select at least one tag'] = 'Выберите хотя бы один тэг';
+$lang['Basic settings'] = 'Основные установки';
+$lang['General'] = 'Общее';
+$lang['Mail theme'] = 'Тема почты';
+$lang['%d of %d users selected'] = '%d пользователей выбрано из %d';
+$lang['(filtered from %s total users)'] = '(отобрано из %s - общее число пользователей)';
+$lang['All %d users are selected'] = '%d - все пользователи выбраны';
+$lang['No matching user found'] = 'Соответствующих пользователей не найдено';
+$lang['No user selected of %d users'] = 'Не выбраны из %d пользователей';
+$lang['No user selected, no action possible.'] = 'Пользователи не выбраны; действие невозможно.';
+$lang['Registered on %s, %s.'] = 'Зарегистрировано %s, %s.';
+$lang['Show %s users'] = '%s пользователей паказано';
+$lang['Showing %s to %s of %s users'] = 'Показ %s от %s до %s пользователей';
+$lang['User %s added'] = 'Добавлен пользователь %s ';
+$lang['User %s updated'] = 'Обновлен пользователь %s';
+$lang['Users modified'] = 'Пользователи изменены';
+$lang['on the %d selected users'] = 'на %d выбранных пользователей';
+$lang['Change password'] = 'Сменить пароль';
+$lang['Change username'] = 'Сменить имя пользователя';
+$lang['Last visit on %s, %s.'] = 'Последний визит был %s, %s.';
+$lang['Loading...'] = 'Загрузка...';
+$lang['Password updated'] = 'Пароль обновлен';
+$lang['Update user'] = 'Пользователь обновлен';
+?>
Index: /tags/2.6.0RC1/language/ru_RU/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/common.lang.php	(revision 25596)
@@ -0,0 +1,425 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Русский [RU]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=434
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Russian';
+$lang_info['country'] = 'Russia';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ru';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d альбом изменен';
+$lang['%d albums updated'] = '%d альбомы изменены';
+$lang['%d comment to validate'] = '%d комментарий на проверке';
+$lang['%d comments to validate'] = 'комментариев на проверке: %d';
+$lang['%d new comment'] = '%d новый комментарий';
+$lang['%d new comments'] = 'новых комментариев: %d';
+$lang['%d comment'] = '%d комментарий';
+$lang['%d comments'] = 'комментариев: %d';
+$lang['%d hit'] = '%d просмотр';
+$lang['%d hits'] = 'просмотров: %d';
+$lang['%d new photo'] = '%d новая фотография';
+$lang['%d new photos'] = '%d новых фотографий';
+$lang['%d new user'] = '%d новый посетитель';
+$lang['%d new users'] = '%d новых посетителей';
+$lang['About'] = 'О...';
+$lang['All tags'] = 'Все слова';
+$lang['Any tag'] = 'Любая метка';
+$lang['At least one listed rule must be satisfied.'] = 'Хотя бы одно правило должно выполняться.';
+$lang['Author'] = 'Автор';
+$lang['Albums'] = 'Альбомы';
+$lang['Album'] = 'Альбом';
+$lang['Close this window'] = 'Закрыть это окно';
+$lang['Complete RSS feed (photos, comments)'] = 'Полная RSS лента (изображения, комментарии)';
+$lang['Confirm Password'] = 'Повторите пароль';
+$lang['Connection settings'] = 'Настройки соединения';
+$lang['Login'] = 'Авторизация';
+$lang['Contact webmaster'] = 'Техподдержка';
+$lang['Create a new account'] = 'Создать новый аккаунт';
+$lang['Created on'] = 'Дата съемки';
+$lang['Creation date'] = 'Дата съемки';
+$lang['Current password is wrong'] = 'Введен неправильный пароль';
+$lang['Dimensions'] = 'Размеры';
+$lang['Display'] = 'Порядок';
+$lang['Each listed rule must be satisfied.'] = 'Все перечисленные правила должны выполняться';
+$lang['Email address is missing. Please specify an email address.'] = 'Не указан адрес электронной почты';
+$lang['Email address'] = 'Адрес электронной почты';
+$lang['Enter your personnal informations'] = 'Укажите персональную информацию';
+$lang['Error sending email'] = 'Ошибка отправки электронной почты';
+$lang['File name'] = 'Имя файла';
+$lang['File'] = 'Файл';
+$lang['Filesize'] = 'Размер файла';
+$lang['Filter and display'] = 'Отфильтровать и показать';
+$lang['Filter'] = 'Фильтр';
+$lang['Forgot your password?'] = 'Забыли пароль?';
+$lang['Go through the gallery as a visitor'] = 'Войти в галерею как посетитель';
+$lang['Help'] = 'Помощь';
+$lang['Identification'] = 'Идентификация';
+$lang['Photos only RSS feed'] = 'RSS лента. Только изображения.';
+$lang['Keyword'] = 'Ключевые слова';
+$lang['Links'] = 'Ссылки';
+$lang['N/A'] = 'не определен';
+$lang['New on %s'] = 'Новое в %s';
+$lang['Notification'] = 'RSS-ленты';
+$lang['Number of items'] = 'Кол-во на странице';
+$lang['Original dimensions'] = 'Исходный размер';
+$lang['Password forgotten'] = 'Пароль утерян';
+$lang['Password'] = 'Пароль';
+$lang['Post date'] = 'Дата публикации';
+$lang['Posted on'] = 'Дата публикации';
+$lang['Profile'] = 'Профиль';
+$lang['Quick connect'] = 'Быстрый вход';
+$lang['RSS feed'] = 'RSS ленты';
+$lang['Register'] = 'Регистрация';
+$lang['Registration'] = 'Регистрация';
+$lang['Related tags'] = 'Связанные слова';
+$lang['Reset'] = 'Отмена';
+$lang['Retrieve password'] = 'Напомнить пароль';
+$lang['Search rules'] = 'Условия для поиска';
+$lang['Search tags'] = 'Тэги для поиска';
+$lang['Search'] = 'Поиск';
+$lang['display available tags'] = 'Просмотр доступных тэгов';
+$lang['Since'] = 'За период';
+$lang['Sort by'] = 'Сортировать по';
+$lang['Sort order'] = 'Порядок сортировки';
+$lang['Tag'] = 'Тэг';
+$lang['Tags'] = 'Тэги';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS лента позволяет Вам быть в курсе новостей этого веб-сайта: новые изображения, обновленные альбомы, новые комментарии. Используйте любой удобный для Вас RSS-ридер.';
+$lang['Unknown feed identifier'] = 'Неизвестный идентификатор ленты';
+$lang['User comments'] = 'Комментарии посетителей';
+$lang['Username'] = 'Имя пользователя';
+$lang['Visits'] = 'Посещения';
+$lang['Webmaster'] = 'Техподдержка';
+$lang['Week %d'] = 'Неделя %d';
+$lang['About Piwigo'] = 'О Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Вы не можете получить доступ к запрашиваемой странице без авторизации';
+$lang['add this photo to your favorites'] = 'добавить эту фотографию в избранные';
+$lang['Administration'] = 'Администрирование';
+$lang['all'] = 'все';
+$lang['ascending'] = 'по возрастанию';
+$lang['author(s) : %s'] = 'автор(ы): %s';
+$lang['Expand all albums'] = 'Раскрыть все альбомы';
+$lang['posted after %s (%s)'] = 'опубликовано после %s (%s)';
+$lang['posted before %s (%s)'] = 'опубликовано до %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'опубликовано между %s (%s) и %s (%s)';
+$lang['posted on %s'] = 'опубликовано %s';
+$lang['Best rated'] = 'По оценкам';
+$lang['display best rated photos'] = 'показать высоко оцененные';
+$lang['Calendar'] = 'Календарь';
+$lang['All'] = 'Все';
+$lang['display each day with photos, month per month'] = 'показать календарь с  фотографиями, день за днем, месяц за месяцем';
+$lang['View'] = 'Просмотр';
+$lang['chronology_monthly_calendar'] = 'Календарь по месяцам';
+$lang['chronology_monthly_list'] = 'Месяцы';
+$lang['chronology_weekly_list'] = 'Недели';
+$lang['Click here if your browser does not automatically forward you'] = 'Пройдите по этой ссылке, если браузер не перенаправляет Вас автоматически';
+$lang['comment date'] = 'дата комментария';
+$lang['Comment'] = 'Комментарий';
+$lang['Your comment has been registered'] = 'Ваш комментарий отправлен';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Антифлуд: пожалуйста, подождите немного, прежде чем отправить следующий комментарий';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Ваш комментарий НЕ отправлен, так как не соответствует правилам';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Администратор должен проверить ваш комментарий, прежде чем он будет показан.';
+$lang['This login is already used by another user'] = 'Этот логин уже используется другим посетителем';
+$lang['Comments'] = 'Комментарии';
+$lang['Add a comment'] = 'Добавить комментарий';
+$lang['created after %s (%s)'] = 'созданы после %s (%s)';
+$lang['created before %s (%s)'] = 'созданы до %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'созданы между %s (%s) и %s (%s)';
+$lang['created on %s'] = 'созданы %s';
+$lang['Customize'] = 'Настройка';
+$lang['Your Gallery Customization'] = 'Настройка галереи ';
+$lang['day'][0] = 'Вс';
+$lang['day'][1] = 'Пн';
+$lang['day'][2] = 'Вт';
+$lang['day'][3] = 'Ср';
+$lang['day'][4] = 'Чт';
+$lang['day'][5] = 'Пт';
+$lang['day'][6] = 'Сб';
+$lang['Default'] = 'По умолчанию';
+$lang['delete this photo from your favorites'] = 'удалить эту фотографию из избранных';
+$lang['Delete'] = 'Удалить';
+$lang['descending'] = 'по убыванию';
+$lang['Download'] = 'Загрузить';
+$lang['Download this file'] = 'загрузить этот файл';
+$lang['edit'] = 'редактировать';
+$lang['wrong date'] = 'ошибка в дате';
+$lang['excluded'] = 'исключенный';
+$lang['Your favorites'] = 'Избранное';
+$lang['display your favorites photos'] = 'показать ваши избранные фотографии';
+$lang['Favorites'] = 'Избранное';
+$lang['First'] = 'Первая';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Галерея закрыта для обслуживания. Пожалуйста, заходите попозже.';
+$lang['Page generated in'] = 'Страница сгенерирована за';
+$lang['guest'] = 'гость';
+$lang['Hello'] = 'Привет';
+$lang['available for administrators only'] = 'доступно только для администратора';
+$lang['display this album'] = 'показать этот альбом';
+$lang['display last user comments'] = 'Просмотр последних пользовательский комментариев';
+$lang['customize the appareance of the gallery'] = 'настройка оформления';
+$lang['search'] = 'поиск';
+$lang['Home'] = 'Начало';
+$lang['Identification'] = 'Вход';
+$lang['in this album'] = 'в этом альбоме';
+$lang['in %d sub-album'] = 'в %d вложенном альбоме';
+$lang['in %d sub-albums'] = 'в %d вложенных альбомах';
+$lang['included'] = 'включено';
+$lang['Invalid password!'] = 'Неверный пароль!';
+$lang['Language']='Язык';
+$lang['last %d days'] = 'последние %d дней';
+$lang['Last'] = 'Последняя';
+$lang['Logout'] = 'Выход';
+$lang['obligatory'] = 'обязательный';
+$lang['display a calendar by creation date'] = 'показывает календарь по дате создания';
+$lang['display all photos in all sub-albums'] = 'показать все фотографии во всех вложенных альбомах';
+$lang['return to normal view mode'] = 'возвращение к нормальному режиму';
+$lang['display a calendar by posted date'] = 'показывает календарь по дате отправления';
+$lang['month'][10] = 'Октябрь';
+$lang['month'][11] = 'Ноябрь';
+$lang['month'][12] = 'Декабрь';
+$lang['month'][1] = 'Январь';
+$lang['month'][2] = 'Февраль';
+$lang['month'][3] = 'Март';
+$lang['month'][4] = 'Апрель';
+$lang['month'][5] = 'Май';
+$lang['month'][6] = 'Июнь';
+$lang['month'][7] = 'Июль';
+$lang['month'][8] = 'Август';
+$lang['month'][9] = 'Сентябрь';
+$lang['Most visited'] = 'По популярности';
+$lang['display most visited photos'] = 'показать наиболее популярные фотографии';
+$lang['Unknown identifier'] = 'Неизвестный идентификатор';
+$lang['New password'] = 'Новый пароль';
+$lang['Rate this photo'] = 'Оценить эту фотографию';
+$lang['Next'] = 'Следующая';
+$lang['no rate'] = 'оценок изображений нет';
+$lang['Photos posted within the last %d day.'] = 'Фотографии, загруженные в течении последнего %d дня.';
+$lang['Photos posted within the last %d days.'] = 'Фотографии, загруженные в течении последних %d дней.';
+$lang['password updated'] = 'пароль изменен';
+$lang['Recent period must be a positive integer value'] = 'Последний период должен быть положительным целым числом';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'изображение';
+$lang['Click on the photo to see it in high definition'] = 'Нажмите для просмотра фотографии в большом разрешении';
+$lang['Show file metadata'] = 'Показать метаданные';
+$lang['Powered by'] = 'Скрипт';
+$lang['Preferences'] = 'Предпочтение';
+$lang['Previous'] = 'Предыдущая';
+$lang['Random photos'] = 'Случайные фотографии';
+$lang['display a set of random photos'] = 'показать ряд случайных фотографий ';
+$lang['Recent albums'] = 'Последние альбомы';
+$lang['display recently updated albums'] = 'показать недавно обновленные альбомы';
+$lang['Recent period'] = 'Срок "новых"';
+$lang['Recent photos'] = 'Недавние фотографии';
+$lang['display most recent photos'] = 'показать больше свежих фотографий';
+$lang['Redirection...'] = 'Перенаправляем...';
+$lang['Please, enter a login'] = 'Пожалуйста, введите логин';
+$lang['login mustn\'t end with a space character'] = 'логин не должен оканчиваться пробелом';
+$lang['login mustn\'t start with a space character'] = 'логин не должен начинаться с пробела';
+$lang['this login is already used'] = 'такой логин уже есть';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'адрес электронной почты должен выглядеть как-то типа xxx@yyy.eee (например: jack@altern.org)';
+$lang['Auto login'] = 'Запомнить меня';
+$lang['remove this tag from the list'] = 'удалить этот тэг из списка';
+$lang['representative'] = 'миниатюра альбома';
+$lang['Search for Author'] = 'Поиск по автору';
+$lang['Search in albums'] = 'Поиск в альбомах';
+$lang['Search by date'] = 'Поиск по дате';
+$lang['Date'] = 'Начальная дата';
+$lang['End-Date'] = 'Конечная дата';
+$lang['Kind of date'] = 'Тип даты';
+$lang['Search for words'] = 'Поиск по словам';
+$lang['Search for all terms'] = 'Поиск по всем критериям ';
+$lang['Search for any term'] = 'Поиск по любому критерию';
+$lang['Empty query. No criteria has been entered.'] = 'Пустой запрос. Нет критериев для поиска.';
+$lang['Search results'] = 'Результаты поиска';
+$lang['Search in sub-albums'] = 'Поиск во вложенных альбомах';
+$lang['searched words : %s'] = 'искомые слова: %s';
+$lang['Contact'] = 'Контакты';
+$lang['set as album representative'] = 'установить как миниатюру альбома';
+$lang['Show number of comments'] = 'Показывать количество комментариев';
+$lang['Show number of hits'] = 'Показывать количество просмотров';
+$lang['slideshow'] = 'слайдшоу';
+$lang['stop the slideshow'] = 'остановить слайдшоу';
+$lang['Specials'] = 'Избранное';
+$lang['SQL queries in'] = 'SQL-запрос в';
+$lang['display only recently posted photos'] = 'показать только недавно загруженные фотографии';
+$lang['return to the display of all photos'] = 'вернуться к полному списку фотографий';
+$lang['the beginning'] = 'с начала';
+$lang['Thumbnails'] = 'Миниатюры';
+$lang['Menu'] = 'Меню';
+$lang['A comment on your site'] = 'Комментарий с вашего сайта';
+$lang['today'] = 'сегодня';
+$lang['Update your rating'] = 'Обновить оценку';
+$lang['the username must be given'] = 'должно присутствовать имя пользователя';
+$lang['useful when password forgotten'] = 'для восстановления потерянного пароля';
+$lang['Quick search'] = 'Быстрый поиск';
+$lang['Connected user: %s'] = 'Подключены пользователи: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Браузер: %s';
+$lang['Author: %s'] = 'Автор: %s';
+$lang['Comment: %s'] = 'Комментарий: %s';
+$lang['Comment by %s'] = 'Комментарий от %s';
+$lang['User: %s'] = 'Посетитель: %s';
+$lang['Email: %s'] = 'Электронная почта: %s';
+$lang['Admin: %s'] = 'Администратор: %s';
+$lang['Registration of %s'] = 'Регистрация %s';
+$lang['Album: %s'] = 'Альбом: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Неверный статус пользователя "гость", используйте статус по умолчанию. Пожалуйста, сообщите вебмастеру.';
+$lang['this email address is already in use'] = 'пользователь с таким адресом уже есть';
+$lang['Album results for'] = 'Альбом определен для';
+$lang['Tag results for'] = 'Тэги-результаты для';
+$lang['from %s to %s'] = 'от %s до %s';
+$lang['Play of slideshow'] = 'Показать слайдшоу';
+$lang['Pause of slideshow'] = 'Остановить слайдшоу';
+$lang['Repeat the slideshow'] = 'Повторять слайдшоу';
+$lang['Not repeat the slideshow'] = 'Не повторять слайдшоу';
+$lang['Reduce diaporama speed'] = 'Reduce diaporama speed';
+$lang['Accelerate diaporama speed'] = 'Accelerate diaporama speed';
+$lang['Submit'] = 'Отправить';
+$lang['Yes'] = 'Да';
+$lang['No'] = 'Нет';
+$lang['%d photo'] = '%d фотография';
+$lang['%d photos'] = '%d фотографии';
+$lang['%d photo is also linked to current tags'] = '%d фотография также связана с этими метками';
+$lang['%d photos are also linked to current tags'] = 'еще %d фотографий, связаных с этими метками';
+$lang['display photos linked to this tag'] = 'показать фотографии, связанные с этой меткой';
+$lang['photos posted during the last %d days'] = 'фотографии, опубликованные за последние %d дней';
+$lang['Piwigo Help'] = 'Помощь';
+$lang['Rank'] = 'Ряд';
+$lang['group by letters'] = 'сгруппировать по буквам';
+$lang['letters'] = 'буквы';
+$lang['show tag cloud'] = 'показать облако слов';
+$lang['cloud'] = 'облако';
+$lang['Are you sure?'] = 'Уверены?';
+$lang['Reset to default values'] = 'Восстановить значения по умолчанию';
+$lang['delete all photos from your favorites'] = 'удалить все фотографии из избранных';
+$lang['Sent by'] = 'Отправить';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Ваш браузер не поддерживает или блокирует куки. Разрешите использовать куки в настройках.';
+$lang['Edit a comment'] = 'Редактировать комментарий';
+$lang['(!) This comment requires validation'] = '(!) Этот комментарий ждет проверки';
+$lang['Welcome'] = 'Добро пожаловать';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Добро пожаловать в фотогалерею Piwigo!';
+$lang['... or browse your empty gallery'] = '... или просмотрите Вашу пустую галерею';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... или не показывать это сообщение, Я самостоятельно решу, что предпринять';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Привет %s, Ваша галерея Piwigo пуста!';
+$lang['I want to add photos'] = 'Я хочу добавить фото';
+$lang['Manage this user comment: %s'] = 'Управление этим комментарием пользователя: %s';
+$lang['This author modified following comment:'] = 'Этот автор изменил следующий комментарий:';
+$lang['This author removed the comment with id %d'] = 'Этот автор удалил комментарий номер %d';
+$lang['%d Kb'] = '%d Кб';
+$lang['Reduce diaporama speed'] = 'Уменьшить скорость панорамы';
+$lang['Accelerate diaporama speed'] = 'Увеличить скорость панорамы';
+$lang['html tags are not allowed in login'] = 'html тэги не допустимы в логине';
+$lang['The number of photos per page must be a not null scalar'] = 'Число фотографий на странице должно быть ненулевым целым числом';
+$lang['Number of photos per page'] = 'Число фотографий на странице';
+$lang['%d rates'] = 'Оценок: %d';
+$lang['Rating score'] = 'Средний балл';
+$lang['Invalid username or email'] = 'Неверное имя пользователя или адрес электронной почты';
+$lang['Password reset is not allowed for this user'] = 'Для этого пользователя сброс пароля невозможен';
+$lang['User "%s" has no email address, password reset is not possible'] = 'У пользователя "%s" нет адреса электронной почты, сброс пароля невозможен';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Поступил запрос на изменение пароля для следуюшей учетной записи:';
+$lang['Username "%s" on gallery %s'] = 'Пользователь "%s" в галерее %s';
+$lang['To reset your password, visit the following address:'] = 'Чтобы сбросить пароль пройдите по ссылке:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Если Вы получили это сообщение по ошибке, просто не предпринимайте никаких действий, и ничего не произойдет.';
+$lang['Password Reset'] = 'Сброс пароля';
+$lang['Check your email for the confirmation link'] = 'Проверьте Ваш адрес электронной почты, на который выслано сообщение с подтверждающей ссылкой';
+$lang['Invalid key'] = 'Неверный ключ';
+$lang['The passwords do not match'] = 'Пароли не совпадают';
+$lang['Your password has been reset'] = 'Ваш пароль был сброшен';
+$lang['Return to home page'] = 'Возврат на домашнюю страницу';
+$lang['Please enter your username or email address.'] = 'Пожалуйста, введите имя пользователя или адрес Вашей электронной почты.';
+$lang['You will receive a link to create a new password via email.'] = 'Вы получите ссылку для ввода нового пароля по электронной почте.';
+$lang['Username or email'] = 'Имя пользователя или адрес электронной почты';
+$lang['Change my password'] = 'Изменить пароль';
+$lang['Enter your new password below.'] = 'Введите новый пароль.';
+$lang['EXIF Metadata'] = 'Метаданные EXIF';
+$lang['IPTC Metadata'] = 'Метаданные IPTC';
+$lang['Edit'] = 'Изменить';
+$lang['Hello %s,'] = 'Здравствуйте, %s,';
+$lang['Send my connection settings by email'] = 'Отправить настройки моего соединения по почте';
+$lang['Show oldest comments first'] = 'Показывать комментарии, начиная со старых';
+$lang['Show latest comments first'] = 'Показывать комментарии, начиная с новых';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Регистрация прошла успешно. Скоро вы получите письмо с настройками Вашего соединения. Добро пожаловать!';
+$lang['Username modification'] = 'Изменить имя пользователя';
+$lang['Your username has been successfully changed to : %s'] = 'Имя пользователя было успешно изменено на %s';
+$lang['square'] = 'Квадрат';
+$lang['thumb'] = 'Миниатюра';
+$lang['2small'] = 'XXS - крошечный';
+$lang['xsmall'] = 'XS - очень мелкий';
+$lang['small'] = 'S - мелкий';
+$lang['medium'] = 'M - средний';
+$lang['large'] = 'L - крупный';
+$lang['xlarge'] = 'XL - очень крупный';
+$lang['xxlarge'] = 'XXL - огромный';
+$lang['Original'] = 'Исходный';
+$lang['Thank you for registering at %s!'] = 'Благодарим за регистрацию на %s!';
+$lang['Here are your connection settings'] = 'Ваши настройки соединения';
+$lang['Password: %s'] = 'Пароль: %s';
+$lang['Username: %s'] = 'Имя пользователя: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Если Вы получили это сообщение по ошибке, пожалуйста, напишите нам по адресу %s';
+$lang['Photo sizes'] = 'Размер фотографии';
+$lang['View in'] = 'Вид';
+$lang['Mobile'] = 'Мобильное устройство';
+$lang['Desktop'] = 'Компьютер';
+$lang['Date created, new &rarr; old'] = 'Дата создания, новые &rarr; старые';
+$lang['Date created, old &rarr; new'] = 'Дата создания, старые &rarr; новые';
+$lang['Date posted, new &rarr; old'] = 'Дата публикации, новые &rarr; старые';
+$lang['Date posted, old &rarr; new'] = 'Дата публикации, старые &rarr; новые';
+$lang['File name, A &rarr; Z'] = 'Имя файла, А &rarr; Я';
+$lang['File name, Z &rarr; A'] = 'Имя файла, Я &rarr; А';
+$lang['Manual sort order'] = 'Сортировка вручную';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Порядок номеров, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Порядок номеров, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Название фотографии, А &rarr; Я';
+$lang['Photo title, Z &rarr; A'] = 'Название фотографии, Я &rarr; А';
+$lang['Rating score, high &rarr; low'] = 'Рейтинг, высокий &rarr; низкий';
+$lang['Rating score, low &rarr; high'] = 'Рейтинг, низкий &rarr; высокий';
+$lang['Visits, high &rarr; low'] = 'Посещения, много &rarr; мало';
+$lang['Visits, low &rarr; high'] = 'Посещения, мало &rarr; много';
+$lang['%d rate'] = 'Оценка: %d';
+$lang['Bad request'] = 'Некорректный запрос';
+$lang['Forbidden'] = 'Доступ запрещен';
+$lang['Page not found'] = 'Страница не найдена';
+$lang['Permalink for album not found'] = 'Постоянная ссылка на альбом не найдена';
+$lang['Piwigo encountered a non recoverable error'] = 'Возникла непредвиденная ошибка';
+$lang['Requested album does not exist'] = 'Запрашиваемый альбом не существует';
+$lang['Requested tag does not exist'] = 'Запрошенный тег не существует';
+$lang['Email address is mandatory'] = 'Адрес электронной почты является обязательным';
+$lang['Username is mandatory'] = 'Имя пользователя является обязательным';
+$lang['mandatory'] = 'обязательно';
+$lang['Website'] = 'Вэб-сайт';
+$lang['Your website URL is invalid'] = 'URL-адрес Вашего сайта неверен';
+$lang['Email'] = 'Электронная почта';
+$lang['First Page'] = 'Первая страница';
+$lang['Go back to the album'] = 'Вернуться в альбом';
+$lang['Last Page'] = 'Последняя страница';
+$lang['Password is missing. Please enter the password.'] = 'Пароль не верен. Пожалуйста, повторите попытку.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Подтверждение пароля отсутствует. Пожалуйста, подтвердите выбранный пароль.';
+$lang['%d photos per page'] = '%d изображений на странице';
+$lang['Theme'] = 'Тема';
+?>
Index: /tags/2.6.0RC1/language/ru_RU/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,137 @@
+<h2>Редактирование категорий</h2>
+
+<h3>Информация</h3>
+
+<ul>
+
+  <li><strong>Название</strong>: дает возможность переименовать категорию
+  (похоже на псевдоним в случае реальной категории).</li>
+
+  <li><strong>Описание</strong>: можно описать содержимое категории.
+  Этот текст будет показан внизу на странице с миниатюрами.</li>
+
+</ul>
+
+<h3>Перемещение</h3>
+
+<p>Если категория виртуальная, Вы можете ее перемещать. Перемещение категории
+   означает изменение родительской категории.</p>
+
+<h3>Опции</h3>
+
+<ul>
+
+  <li><strong>Тип доступа</strong>: Управление доступом. Если сделать категорию
+  приватной, все вложенные категории тоже станут приватными. Если сделать категорию
+  общедоступной, все вложенные категории тоже станут общедоступными.</li>
+
+  <li><strong>Блокировка</strong>: Категория и ее подкатегории временно будут
+  закрыты на обслуживание.</li>
+
+  <li><strong>Комментарии</strong>: Управление возможностью комментировать
+  элементы категории для пользователей.</li>
+
+  <li><strong>Разрешить загрузку</strong>: Управление доступом для загрузки
+  файлов пользователями. Эта опция доступна только для обычных категорий (не виртуальных).</li>
+
+</ul>
+
+<p>Также вы можете управлять этими настройками на странице "Свойства"
+ (вкладки <span class="pwgScreen">Загрузка</span>, <span
+class="pwgScreen">Комментарии</span>, <span class="pwgScreen">Блокировка</span>,
+<span class="pwgScreen">Общедоступные / Приватные</span>), все это в меню <span
+class="pwgScreen">Администрирование, Галереи, Свойства</span>.</p>
+
+<h3>Порядок сортировки</h3>
+
+<p>Первый чекбокс определяет сортировку по умолчанию.</p>
+<p>Второй чекбокс определяет распространяет правила сортировки на подкатегории.</p>
+
+<p>Выберите другую сортировку, если это необходимо.</p>
+<ul>
+<li><strong>Дата съемки</strong>: Дата создания фотографии</li>
+<li><strong>Дата публикации</strong>: Дата добавления фотографии в галерею</li>
+<li><strong>Средний балл (*)</strong>: По рейтингу, за который голосуют посетители</li>
+<li><strong>По популярности (*)</strong>: По числу посещений посетителями страниц с фотографиями</li>
+<li><strong>Имя файла</strong>: Сортировка по имени файла фотографий</li>
+<li><strong>Id</strong>: Внутренний идентификатор (недавние категории имеют более высокий идентификатор, чем более ранние).</li>
+
+</ul>
+<p><strong>(*)</strong> Попробуйте эти значения. Часто они дают непрогнозируемые
+результаты.</p>
+
+
+<h3>Представитель</h3>
+
+<p>Представитель категории - это миниатюра, которая представляет категорию на
+главной странице (<span class="pwgScreen">category.php</span>) когда категория
+содержит только подкатегории (как корнревая, например).</p>
+
+<p>Существует 4 способа назначить представителя категории:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Страница с фотографией</span>: в ряду кнопок на
+  панели есть кнопка, назначающая эту фотографию представителем отображаемой
+  категории. Эта кнопка доступна только администратору.</li>
+
+  <li><span class="pwgScreen">Редактирование информации о фотографии</span> в
+  разделе администрирования. Эта функция доступна со страницы с фотографией <span
+  class="pwgScreen">picture.php</span> или <span class="pwgScreen">Управление корзиной</span>
+  в <em>групповом режиме</em>. См. помощь этого экрана для уточнения деталей.</li>
+
+  <li><span class="pwgScreen">Администрирование, Галереи, Свойства,
+  Представитель</span>. См. помощь этого экрана для уточнения деталей.</li>
+
+  <li><span class="pwgScreen">Редактирование категории</span> (этот экран).</li>
+
+</ul>
+
+<p>Представление зависит от параметра конфигурации
+<code>allow_random_representative</code> (см. <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>По умолчанию (<code>allow_random_representative</code> установлен на false)
+каждая категория, содержащая по крайней мере один элемент, представлена
+фиксированным элементом. Установленный однажды (при создании категории),
+представитель изменяется только когда администратор сделает это.
+Если представительне устраивает, Вы можете выбрать <strong>Найти нового
+представителя случайным образом</strong>.</p>
+
+<p>Если параметр конфигурации <code>allow_random_representative</code> установлен на
+ true, категория, имеющая элементы не имеет фиксированного представителя. Используйте
+ кнопку <strong>Удалить представителя</strong>.</p>
+
+<p>Если категория не содержит элементов (но содердит подкатегории), она может
+быть представлеа любым элементом установленным с помощью страницы <span
+class="pwgScreen">Изменить информацию о фотографии</span>.
+
+<h3>Привязать все элементы этой категории к новой</h3>
+
+<ul>
+
+<li><strong>Название виртуальной категории</strong>: Новая категория с этим именем будет создана,
+все фотографии этой категории будут привязаны к ней.</li>
+
+<li><strong>Родительская категория</strong>: Где будет создана новая категория,
+если это должна быть верхняя категория, оставьте параметр пустым.</li>
+
+</ul>
+
+<h3>Привязать все элементы этой категории к одной из существующих</h3>
+
+<ul>
+
+<li><strong>Галереи</strong>: Выберите категорию, к которой нужно привязать элементы.</li>
+
+</ul>
+
+<h3>Отправить информационное письмо для группы</h3>
+
+<ul>
+
+<li><strong>Группа</strong>: группа-адресат</li>
+
+<li><strong>Содержание</strong>: Текст, который будет отправлен ее участникам.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ru_RU/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Перемещение виртуальных категорий</h2>
+
+<p>Только виртуальные категории могут быть перемещены в новую родительскую категорию.</p>
+
+<h3>Виртуальные категории для перемещения</h3>
+
+<p>Выберите виртуальные категории, которые хотите переместить.
+Если список пуст, то Вы еще не создавали виртуальных категорий.</p>
+
+<h3>Новая родительская категория</h3>
+
+<p>Выберите новую родительскую категорию (виртуальную или реальную).
+Если ничего не выбрать, виртуальные категории, отмеченные на предыдущем этапе, будут перемещены в корневую галерею.
+Вы не можете переместить категорию в саму себя или в одну из собственных подкатегорий.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/cat_options.html	(revision 25596)
@@ -0,0 +1,34 @@
+<h2>Свойства категорий</h2>
+
+<p>Этот экран позволяет администратору изменять свойства нескольких категорий одновременно.</p>
+
+<dl>
+
+  <dt>Загрузка</dt>
+  <dd>Открывает категории для загрузки файлов пользователями. Показаны только не
+  виртуальные и не удаленные категории.</dd>
+
+  <dt>Комментарии</dt>
+  <dd>Открывает категории для комментирования.
+Выберите категории, которые хотите открыть для комментирования.
+Изображение открыто для комментариев, если хотя бы одна категория открыта для
+комментариев.</dd>
+
+  <dt>Блокировка</dt>
+  <dd>Выбранные категории будут временно заблокированы для обслуживания. Все
+  подкатегории заблокированной категории также будут заблокированы. Если разблокировать
+  категорию, все ее родительские категории также разблокируются.</dd>
+
+  <dt>Общедоступные / Приватные</dt>
+  <dd>Управление доступом к выбранным категориям. Если сделать категорию приватной,
+  нужно дать права пользователям и/или группам для доступа к ним.
+  Если сделать категорию приватной, все ее подкатегории тоже станут приватными.
+  Если сделать категорию общедоступной, все родительские категории также станут общедоступными.</dd>
+
+  <dt>Представители</dt>
+  <dd>Этот раздел доступен, если параметр <code>allow_random_representative</code>
+  (см. <span class="filename">include/config_defaults.inc.php</span>) установлен в
+  <em>true</em>. Каждая категория может иметь случайно выбранного представителя
+  или единственного представителя (выбранного администратором).</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ru_RU/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Управление разрешениями для категории</h2>
+
+<p>Этот экран доступен только для приватной категории. Здесь можно выбрать
+пользователей и группы, которые имеют доступ к этой категории.</p>
+
+<h3>Группы</h3>
+
+<p>Вы можете разрешить или запретить группам доступ к этой категории. Изменяя доступность для групп,
+Вы изменяете доступность для пользователей, входящих в соответствующие группы.</p>
+
+<h3>Пользователи</h3>
+
+<p>Так же как с группами, можно поступать с отдельными пользователями.
+Пользователь допущенный к категории по участию в группе, может быть ограничен в
+правах персонально с помощью доступа пользователя.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/configuration.html	(revision 25596)
@@ -0,0 +1,136 @@
+<h2>Настройка</h2>
+
+<p>Этот экран позволяет администратору делать простейшие настройки. На самом деле, этот
+экран всего лишь показывает простейшие настройки, которых будет достаточно для
+большинства администраторов. Если Вы хотите увидеть другие настройки (дополнительные),
+смотрите файл <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Экран разбит на несколько секций, группирующих настройки по темам.</p>
+
+
+<h3>Главная</h3>
+<ul>
+  <li><strong>Название галереи</strong>: используется в ленте RSS и уведомлениях по email.</li>
+
+  <li><strong>Надпись на баннере</strong>: показывается вверху всех страниц.</li>
+
+  <li><strong>Адрес галереи</strong>: используется в ленте RSS.</li>
+
+  <li><strong>Заблокировать галерею</strong>: Закрыть галерею на обслуживание.
+  Доступ к галерее будет открыт только администратору.</li>
+
+  <li><strong>Оценки</strong>: Разрешить выставлять оценки.</li>
+
+  <li><strong>Оценки от гостей</strong>: Даже не зарегистрированные пользователи
+  смогут оценивать фотографии.</li>
+
+  <li><strong>Разрешить регистрацию пользователей</strong>: Любой может свободно
+  зарегистрироваться.</li>
+
+  <li><strong>Адрес электронной почты обязателен для всех пользователей</strong>:
+  Наличие адреса будет проверено при регистрации или изменении профиля если это
+  действие задано в административной части.</li>
+
+  <li><strong>Сообщать администратору когда зарегистрировался новый посетитель</strong>:
+  Администратор получает письмо при каждой регистрации.</li>
+
+</ul>
+
+<h3>История</h3>
+
+  <p>Посещения страниц <span class="pwgScreen">category.php</span> и
+  <span class="pwgScreen">picture.php</span> будут записываться в таблицу <code>history</code>.</p>
+
+  <p>Посещения показаны на <span class="pwgScreen">Администрирование, Спец функции, История</span>.</p>
+
+<ul>
+  <li><strong>Сохранять страницы посещенные гостями</strong>: страницы посещенные
+  гостями будут сохраняться.</li>
+
+  <li><strong>Сохранять страницы посещенные пользователями</strong>: страницы
+  посещенные зарегистрированными пользователями будут сохраняться.</li>
+
+  <li><strong>Сохранить страницы посещенные администраторами</strong>: страницы
+  посещенные администратором будут сохраняться.</li>
+
+</ul>
+
+<h3>Комментарии</h3>
+<ul>
+
+  <li><strong>Комментарии для всех</strong>: Даже не зарегистрированные
+  пользователи могут комментировать фотографии.</li>
+
+  <li><strong>Количество комментариев на странице</strong>.</li>
+
+  <li><strong>Проверка</strong>: администратор проверяет комментарии написанные
+  пользователями прежде чем они будут показаны на сайте. Проверка комментариев
+  осуществляется на странице <span class="pwgScreen">Администрирование, Фотографии,
+  Комментарии</span>.</li>
+
+  <li><strong>Сообщать администратору когда появился комментарий</strong>:
+Посылать email администратору когда пользователь внесет комментарий.</li>
+
+  <li><strong>Сообщать администратору когда появился комментарий для проверки</strong>:
+Посылать email администратору когда пользователь внесет комментарий для проверки администратором.
+Комментарии для проверки находятся на странице<span class="pwgScreen">
+Администрирование, Фотографии, Комментарии</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>Загрузки</h3>
+<ul>
+<!--TODO -->  <li><strong>Показывать ссылку на загрузку постоянно</strong>: Если
+есть категории, куда разрешена загрузка, добавляется ссылка, которая показывается
+в каждой категории.</li>
+<!--TODO -->  <li><strong>Уровень доступа пользователя для загрузки</strong>:
+Позволяет ограничит загрузку для пользователей</li>
+  <li><strong>Сообщать администратору когда загружена фотография</strong>:
+  Администратор получает письмо при загрузке фотографии каждым пользователем.</li>
+</ul>
+
+<h3>Вид по умолчанию</h3>
+
+<p>Здесь можно изменить параметры отображения по умолчанию для пользователя
+Гость или не авторизованного пользователя.
+После авторизации параметры отображения изменятся на пользовательские (заданные
+на странице <span class="pwgScreen">профайла</span>).</p>
+
+<p>Параметры отображения для всех существующих пользователей можно изменить на
+странице <span class="pwgScreen">Администрирование,
+Идентификация, Пользователи</span>, где можно сделать настройки для отмеченных пользователей.</p>
+
+<ul>
+
+  <li><strong>Язык</strong>: влияет только на надписи. Названия категорий,
+  фотографий и все описания не локализуются.</li>
+
+  <li><strong>Число фотографий в строке</strong></li>
+
+  <li><strong>Число строк на странице</strong></li>
+
+  <li><strong>Оформление</strong></li>
+
+  <li><strong>Срок "новых"</strong>: В днях. Период в течение которого фотография
+  показывается как новая. Должен быть больше 1 дня.</li>
+
+  <li><strong>Раскрыть все категории</strong>: Раскрыть все категории в меню?
+  <em>Внимание</em>: этот вариант ресурсоемок и может сгенерировать очень большое
+  меню, если дерево категорий Вашей галереи содержит много категорий.</li>
+
+  <li><strong>Показывать количество комментариев</strong>: показывать количество комментариев
+  для каждой фотографии на странице миниатюр.</li>
+
+  <li><strong>Показывать количество просмотров</strong>: показывать количество
+  просмотров фотографии под миниатюрой фотографии на странице миниатюр.
+  Действует когда параметр: <br />  $conf['show_nb_hits'] = true; <br />
+  Примечание: параметр по умолчанию установлен в false.</li>
+
+  <li><strong>Максимальная ширина изображения</strong>: максимальная отображаемая
+  ширина. Если фотография больше по ширине, она будет уменьшена при показе.
+  Если Вы устанавливаете эту настройку, лучше будет изменить ширину фотографий заранее.</li>
+
+  <li><strong>Максимальная высота изображения</strong>: те же комментарии, что и у ширины.</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/ru_RU/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,96 @@
+<h2>Настройка расширений для шаблонов</h2>
+
+<h3>Цель</h3>
+<p>Определите условия замены каждого шаблона на шаблон-расширение (шаблон,
+названный "заменяющим").</p>
+
+<p>"Исходный шаблон" из ./template/yoga (или другой) будет заменен на
+ "заменяющий" если заменяющий связан с этим "исходным"
+ (и, опционально, если URL содержит "Опциональное ключевое слово URL").</p>
+
+<p>"Опциональное ключевое слово URL" это те, которые Вы можете найти после названия модуля в URL.</p>
+
+<p>Поэтому "Опциональные ключевые слова URL" могут быть активным "прямыми ссылками"
+(см. соответствующий раздел в нашей документации для дальнейшего объяснения).</p>
+
+<p>Читайте: `<a href="#warnings">Предупреждение</a>` условий использования.</p>
+
+<h3>Что такое шаблон-расширение?</h3>
+
+<p>Этот инструмент конфигурации - мощный для новичков и продвинутых пользователей.
+С помощью FTP, в папке template-extension, Web-мастер может дублировать много
+разных .tpl файлов ("исходный шаблон") с различным названием ("заменяющим").
+
+
+ "Исходные шаблоны", текущие оригинальные поддерживаемые шаблоны:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> и/или <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> и/или <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> и/или <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> и/или <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> и/или <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> и/или <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> и/или <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Где мне найти "исходные шаблоны"?</h3>
+
+<p>Находятся исходные шаблоны в template/yoga/
+(не редактируйте их там для сохранения возможности обновления). Так, с "исходными шаблонами",
+любой web-мастер может создать свои "заменяющие (пользовательские шаблоны)".</p>
+
+<h3>Куда записать "заменяющие"?</h3>
+
+<p><strong>Заменяющие (пользовательские шаблоны)</strong> должны находиться в папке
+template-extension (или ее подпапке).
+Заменяющие могут иметь любые имена файлов с расширением .tpl. Например: <span
+class="filename">template-extension/my-extension/video.tpl</span>.</p>
+
+
+<h3>Как мне активировать мои "заменяющие шаблоны"?</h3>
+<p>Каждый <strong>исходный шаблон</strong> должен быть сопоставлен со своим
+ <strong>заменяющим (пользовательским шаблоном)</strong> чтобы активировать связанные замены.
+ Это является целью "Настройки расширений для шаблонов" в меню Настроек.</p>
+
+<p>Если Вы выберете <strong>Опциональное ключевое слово URL</strong> тогда замена
+будет производиться только на страницах с этим ключевым словом. Например: <span
+  class="pwgScreen">index.php?/<strong>most_visited</strong></span></p>
+
+<p>Продвинутые пользователи могут использовать прямую ссылку как <strong>Опциональное
+ключевое слово URL</strong>. </p>
+
+<h3>Как мне деактивировать мои "заменяющие шаблоны"?</h3>
+<ul>
+<li>Отмените выбранный "Исходный шаблон".</li>
+<li>Через FTP удалите "заменяющий".</li>
+</ul>
+<a name="warnings"></a>
+<h3>Предупреждение</h3>
+<ul>
+
+  <li><strong>Оригинальный шаблон</strong> должен быть "исходным" шаблоном,
+  иначе результат может быть непредсказуемым!</li>
+
+  <li>При наличии нескольких <strong>заменяющих (пользовательских шаблонов)</strong>
+  с одинаковыми <strong>исходными шаблонами</strong> и одинаковыми <strong>опциональным
+  ключевым словом URL</strong> только последний заменяющий будет активным.</li>
+
+  <li>Отмена выбора <strong>опционального ключевого слова URL</strong> сделает
+  активной заменяющий шаблон для всех. Как в предыдущем пункте, следующий выбор может
+  отменить предыдущий.</li>
+
+  <li>Подпапки:
+Подпапки игнорируются, но они удобны для смены текущих установок.<br />
+</li>
+
+  <li>При удалении замещающего <strong>Исходный шаблон</strong> будет снова активным.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ru_RU/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Список групп</h2>
+
+<p>Здесь Вы можете управлять созданными группами.</p>
+
+<h3>Добавить группу</h3>
+
+<p>Администратор может добавлять группы.</p>
+
+<h3>Список групп</h3>
+
+<p>Из списка для каждого элемента можно сделать:</p>
+
+
+<ul>
+  <li>перейти к списку участников</li>
+  <li>перейти к разрешениям</li>
+  <li>удалить группу (require a confirmation checkbox)</li>
+  <li>toggle status "default" (выдается запрос подтверждения)</li>
+</ul>
+
+<h3>Группа по умолчанию</h3>
+<p>Новые пользователи автоматически попадают в эту группу.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Существует несколько способов добавить фотографии в галерею:</p>
+
+<ul>
+ <li><strong>Загрузка через браузер</strong> – это самый простой и оперативный способ. Надежность загрузки при этом зависит от возможностей вашего браузера и веб-сервера. Если вам нужно загрузить очень большое количество фотографий, или если вы столкнулись с какими-то трудностями, всегда можно воспользоваться альтернативными способами загрузки.
+</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Перейти к загрузке через браузер</a></p>
+
+<ul>
+ <li><strong>pLoader</strong> – это приложение, которое запускается у вас на компьютере. Перетащите &amp; фотографии для загрузки на окно pLoader, кликните <em>"Upload to Piwigo"</em> и pLoader приступит к работе. Существуют и другие приложения, например, <strong>WinToPiwigo</strong> и плагин для экспорта фотографий из программы <strong>Digikam</strong> в Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Перейти к pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+ <li><strong>Загрузка по FTP</strong> – наиболее рекомендуемый способ загрузки очень большой коллекции фотографии при минимальном количестве кликов. Подготовьте фотографии, воспользовавшись инструкцией. Загрузка по FTP позволит вам организовать фотографии на сервере именно так, как нужно.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Загрузка по FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/ru_RU/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Piwigo позволяет управлять группами пользователей. Это удобно для установки прав доступа к приватным категориям.</p>
+
+<p>Вы можете создать группы на странице <span class="pwgScreen">Администрирование, Идентификация, Группы</span> и добавить пользователей в созданную группу на странице <span class="pwgScreen">Администрирование, Идентификация, Пользователи</span>.</p>
+
+<p>Пользователь может входить в несколько групп. Разрешение сильнее чем запрет: если пользователь "jack" входит в группы "family" и "friends", и есть категория "Christmas 2003", доступ к которой открыт только для группы "family", пользователь "jack" будет иметь доступ к категории "Christmas 2003".</p>
+
Index: /tags/2.6.0RC1/language/ru_RU/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>После того, как вы создали галерею, вы можете настроить ее вид по умолчанию для посетителей
+<ul>
+    <li>отображение: <span class="pwgScreen">Панель администирования &raquo; Настройки &raquo; Параметры</span> закладка <span class="pwgScreen">Установки пользователя Гость</span></li>
+    <li>тема: <span class="pwgScreen">Панель администирования &raquo; Настройки &raquo; Темы</span></li>
+    <li>язык: <span class="pwgScreen">Панель администирования &raquo; Настройки &raquo; Языки</span></li>
+</ul>
+Каждый новый пользователь сразу после регистраци будет видеть галерею так, как описано в этих настройках. Впоследствии он сможет изменить вид галереи.
+</p>
+<p>Если у вас есть вопросы, члены сообщества разработчиков и пользователей Piwigo будут рады ответить на них  <a href="http://ru.piwigo.org/forum">на форуме</a>.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,45 @@
+<fieldset>
+<legend>Допуск к фотографиям</legend>
+
+<p>Для каждой фотографии можно определить <strong>уровень доступа</strong> (блокировка). Каждого пользователя также можно отнести к определенному уровню доступа (ключ). Представляем вашему вниманию 5 уровней доступа:</p>
+<ol>
+  <li>Закрыто для всех</li>
+  <li><em>Знакомые</em></li>
+  <li><em>Друзья (те, что больше, чем друзья)</em></li>
+  <li><em>Семья (важнее друзей)</em></li>
+  <li><em>Администраторы (превыше всех)</em></li>
+</ol>
+
+<p>Более высокий уровнь включает в себя разрешения более низких уровней. Для каждого пользователя, чем выше уровень доступа, тем больше фотографий он может видеть.</p>
+
+<p>Например, если фото "peter_wedding-0024.jpg" ("свадьба-пети-0024.jpg") имеет уровень доступа<em>"Семья"</em> это значит, что:</p>
+<ul>
+  <li>Peter (Пети) (он <em>"Администратор"</em>) может любоваться этой фотографией потому, что <em>"Администраторы"</em> могут видеть все фото</li>
+  <li>Beth (Оля)(она член <em>"Семьи"</em> ) тоже может смотреть это фото</li>
+  <li>Mary (Маша)(она всего лишь <em>"Друг"</em>) увы, не сможет увидеть фото</li>
+</ul>
+
+<p>Пользователь, у которого нет разрешения смотреть какие-либо фотографии, не будет видеть ни информационное наполнение категории, ни категорию непосредственно, не говоря уже о ее заголовке. Тот же самый принцип относится и к метке.</p>
+
+<p>Вы можете установить уровень доступа для пользователя в меню <span class="pwgScreen">Администратор &raquo; Пользователь &raquo; Управление</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Допуск к категориям</legend>
+
+<p>Если уровни допуска не соответствуют Вашим потребностям, Вы можете также управлять разрешениями определенных категорий для пользователя или группы. Вы можете управлять разрешениями на фотографиях и категориях одновременно - конфликта не возникнет.</p>
+
+
+<p>Вы можете запретить доступ к категориям. Категории могут быть "публичными" или "приватными". Права доступа (для групп и пользователей) могут быть установлены только для приватных категорий.</p>
+
+<p>Вы можете сделать приватной категорию редактируя свойства каждой категории (<span class="pwgScreen">Администрирование, Галереи, Управление, редактировать</span>) или просматривая дерево категорий (<span class="pwgScreen">Администрирование, Галереи, Свойства, Общедоступные / Приватные</span>).</p>
+
+<p>Если категория приватная, права доступа к ней можно установить для групп и пользователей тремя способами:</p>
+
+<ul>
+  <li><span class="pwgScreen">Администрирование &raquo; Идентификация &raquo; Пользователи &raquo; разрешения (последний столбец в таблице с пользователем)</span></li>
+  <li><span class="pwgScreen">Администрирование &raquo; Идентификация &raquo; Группы &raquo; разрешения (последний столбец в таблице с группой)</span></li>
+  <li><span class="pwgScreen">Администрирование &raquo; Галереи &raquo; Управление &raquo; редактировать (ссылка для каждой категории)</span></li>
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/ru_RU/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Piwigo различает категории где хранятся элементы и категории где они показаны.</p>
+
+<p>По умолчанию, элементы показываются только в реальных категориях: тех, которые связаны с папками на сервере.</p>
+
+<p>Чтобы привязать элемент к категории, нужно только указать это на странице редактирования элемента или в информации обо всех элементах категории.</p>
+
+<p>Зная этот принцип, легко понять что такое виртуальные категории: это те, которым не соответствуют папки на сервере. Виртуальные категории можно создать на странице <span class="pwgScreen">Администрирование, Категории, Управление</span>.</p>
+
Index: /tags/2.6.0RC1/language/ru_RU/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/history.html	(revision 25596)
@@ -0,0 +1,45 @@
+<h2>История</h2>
+
+<p>Этот экран позволяет просматривать историю посещений согласно опциям, которые
+выбраны в Администрирование - Настройки - История.</p>
+
+<h3>Статистика</h3>
+<ul>
+  <p>Если Вы выбрали сохранение истории посещений (<span
+class="pwgScreen">index.php</span> и <span
+class="pwgScreen">picture.php</span>) в таблице <code>history. </code>
+То здесь Вы увидите статистику посещений этих страниц.</p>
+
+	<li><strong>Вся</strong>: просмотр статистики по годам. </li>
+
+	<li><strong>Годовая статистика</strong>: просмотр помесячной статистики за выбранный год.</li>
+
+	<li><strong>Статистика за месяц</strong>: просмотр статистики по дням за выбранный месяц.</li>
+
+	<li><strong>Дневная статистика</strong>: просмотр статистики по часам за выбранный день.</li>
+
+</ul>
+
+<h3>Поиск</h3>
+<ul>
+  <p>Если Вы выбрали сохранение истории посещений (<span
+class="pwgScreen">index.php</span> и <span
+class="pwgScreen">picture.php</span>) в таблице <code>history. </code>
+То здесь Вы увидите статистику посещений этих страниц сгруппированную с помощью
+фильтров.</p>
+
+	<li><strong>Фильтр на дату</strong>: выберите интервал дат для отображения
+	статистики активности.</li>
+
+	<li><strong>Фильтр на тип элемента</strong>: выберите тип элемента для
+	отображения статистики активности.</li>
+
+	<li><strong>Фильтр на пользователя</strong>: выберите пользователя для
+	отображения статистики активности.</li>
+
+	<li><strong>Фильтр на имя файла</strong>: выберите имя файла для отображения
+	статистики активности.</li>
+
+	<li><strong>Фильтр на номер изображения</strong>: выберите номер изображения
+	для отображения статистики активности.</li>
+</ul>
Index: /tags/2.6.0RC1/language/ru_RU/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ru_RU/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/maintenance.html	(revision 25596)
@@ -0,0 +1,60 @@
+<h2>Обслуживание</h2>
+
+<p>Чтобы оптимизировать время создания страницы, Piwigo использует кэширование
+информации. Например, вместо того, чтобы считать число фотографий, содержащихся в
+каждой категории при каждом обновлении, эту информация хранят в базе данных. В
+теории, эта информация должна быть корректной, но иногда при ошибках кэшированная
+информация становится неверной.</p>
+
+<p>Некоторая информации становится бесполезным со временем. Удаление этой бесполезной
+информации из базы данных позволит сохранить дисковое пространство.</p>
+
+<ul>
+
+  <li>
+    <strong>Не привязанные элементы:</strong>
+    Показывает фотографии которые не связаны ни с одной виртуальной категорией.
+  </li>
+  <li>
+    <strong>Файлы с одинаковыми именами в разных папках:</strong>
+    Показывает фотографии или другие файлы имеющие одинаковые имена и находящиеся в разных категориях.
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>Обновить информацию о категориях:</strong> Для каждой категории
+  обновляется или контролируется следующая информация: список родительских категорий,
+  число фотографий, дата последней фотографии, положение среди категорий одного
+  уровня, положение среди всех категорий.</li>
+
+  <li><strong>Обновить информацию о фотографиях:</strong> Для каждой фотографии
+  обновляется или контролируется следующая информация: полный путь к файлу, рейтинг.
+  <em>Предупреждение</em>: не путайте с метаданными которые синхронизируются из
+  <span class="pwgScreen">Администрирование, Галереи, Синхронизация</span> или
+  через страницу редактирования фотографии.</li>
+
+  <li><strong>Исправить и оптимизировать базу данных:</strong>
+  Для каждой таблицы будут проведены переупорядочивание, восстановление и оптимизация.
+  </li>
+</ul>
+
+<ul>
+  <li><strong>Очистить историю:</strong> Удаляются все строки из таблицы <code>history</code>.
+  На странице <span class="pwgScreen">Администрирование, Спец. функции, История</span>
+  не будет информации относительно истории до этой операции. <em>Предупреждение</em>:
+  все данные будут потеряны и нет никакого способа вернуть информацию.</li>
+
+  <li><strong>Очистить всю историю:</strong> Удаляется вся итоговая информаци об
+  истории посещений. Эта итоговая информация вычисляется из деталей истории.</li>
+
+  <li><strong>Очистить сессии:</strong> Удаляются истекшие пользовательские сеансы.</li>
+
+  <li><strong>Очистить неиспользуемые каналы уведомлений</strong></li>
+  
+  <li><strong>Purge search history</strong></li>
+  
+  <li><strong>Очистить созданные шаблоны</strong></li>
+
+</ul>
Index: /tags/2.6.0RC1/language/ru_RU/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,16 @@
+<h2>Уведомления</h2>
+
+<p>Этот раздел создан для настройки и управления уведомлениями по электронной
+почте пользователей о новостях на сайте.</p>
+
+<p>Страница содержит три вкладки:</p>
+
+<h3>Параметры</h3>
+<p>Доступные только вебмастеру, это параметры уведомлений.</p>
+
+<h3>Список рассылки</h3>
+<p>Доступно только вебмастеру, эта вкладка управляет подпиской пользователей на уведомления.</p>
+
+<h3>Отправка</h3>
+<p>Доступно только вебмастеру и администратору, эта вкладка позволяет производить рассылку уведомлений.</p>
+
Index: /tags/2.6.0RC1/language/ru_RU/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/permalinks.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Постоянные ссылки</h2>
+
+<p>Постоянные ссылки используют чтобы сделать URL категории более удобным. Когда
+для категории определена прямая ссылка, id категории в URL более не используется.</p>
+
+<p>После удаления прямой ссылки, Вы можете сохранить ее в истории прямых ссылок,
+чтобы сохранить работоспособность внешних ссылок. В таблице истории прямых ссылок
+ можно посмотреть дату удаления прямой ссылки, когда ей последний раз пользовались,
+ сколько всего раз ей пользовались.</p>
+
+<p>Заметьте, допускается только одна прямая ссылка на каждую категорию.
+Аналогично и в истории прямых ссылок нельзя определить одну и ту же прямую ссылку несколько раз.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,69 @@
+<fieldset>
+  <legend>Быстрый старт</legend>
+
+<ol>
+  <li>Создайте локальную папку.</li>
+  <li>Скопируйте несколько фотографий в эту папку, измените размер для web. <em>Внимание</em>: названия папок и файлов должны содержать только латинские буквы, цифры, "-", "_" или ".". Без пробелов и спецсимволов.</li>
+
+  <li>С помощью FTP-клиента, скопируйте вашу папку в папку "galleries" на сервере где установлен ваш Piwigo.</li>
+
+  <li>Авторизуйтесь в вашей галерее и выберите <span class="pwgScreen">Администрирование</span> и нажмите большую кнопку Быстрая синхронизация.</li>
+</ol>
+
+<p>Поздравляем! Вы успешно создали первый альбом в вашей галерее.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Структура папок и файлов</legend>
+
+<ul>
+
+  <li>
+
+    <p>Папки альбомов расположены в папке Piwigo "galleries". 
+    Ниже смотрите дерево небольшой галереи:</p>
+
+    <pre>
+galleries
+|-- wedding
+|   |-- celebration
+|   |   |-- arrival
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- departure
+|   |       +-- paul-and-sarah.jpg
+|   +-- party
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- honeymoon
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>В простейшем случае, категории представлены как папки любого уровня в
+  папке "galleries". Каждая категория может содержать столько подкатегорий,
+  сколько хотите.</li>
+
+  <li>Каждый элемент - это файл. Файл может быть элементом Piwigo если его
+  тип описан в параметре <code>file_ext</code>
+  (см файл <span class="filename">include/config_default.inc.php</span>).
+  Файл может быть изображением если его тип описан в параметре <code>picture_ext</code>.</li>
+
+  <li>Элементы, не являющиеся изображениями (видео, музыка, тексты и др.) по определению
+  представлены иконками соответствующими расширению файла. Дополнительно, Вы можете
+  связать миниатюру и представительный файл (см. video.avi в примере выше).</li>
+
+  <li><em>Внимание</em>: имена папок и файлов должны содержать только латинские буквы,
+  цифры, "-", "_" или ".". Не используйте пробелы и спецсимволы.</li>
+
+   <li>Когда файлы правильно размещены в папках, выберите:
+  <span class="pwgScreen">Администрирование &raquo; Инструменты &raquo; Синхронизация</span></li>
+
+</ul>
+
+</fieldset>
Index: /tags/2.6.0RC1/language/ru_RU/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/search.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Поиск</h2>
+
+<p>Эта страница позволяет искать фотографии по всей галерее.</p>
+
+<dl>
+
+  <dt>Поиск по словам </dt>
+  <dd>Поиск по всем словам во всех атрибутах во всех изображениях галереи.
+  Используйте * как подстановочный знак для частичных соответствий.</dd>
+
+  <dt>Поиск по автору</dt>
+  <dd>Используйте * как подстановочный знак для частичных соответствий.</dd>
+
+  <dt>Поиск по дате</dt>
+  <dd>Выберите начальную и/или конечную дату запроса. Оставьте пустой начальную
+  дату для поиска "ранее". Год должен вводиться в последнее поле в формате 0000 (т.е. 2004)</dd>
+
+  <dt>Поиск в Категориях</dt>
+  <dd>Выберите категорию или категории для ограничения области поиска. Для поиска
+  во всех подкатегориях можно выбратьродительскую категорию и установить флаг поиска в подкатегориях.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/ru_RU/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/synchronize.html	(revision 25596)
@@ -0,0 +1,12 @@
+<h2>Синхронизация</h2>
+
+<p>Возможны 2 типа синхронизации: папки/файлы и метаданные.
+Папки/файлы синхронизируют дерево папок с деревом категорий в базе данных.
+Метаданные синхронизируют информацию элементов, такую как размер файла, размеры
+в пикселях, информацию EXIF или IPTC.</p>
+
+<p>Сначала должны быть синхронизированы папки/файлы.</p>
+
+<p>Процесс синхронизации может занять много времени (в зависимости от загрузки
+сервера и количества синхронизируемых элементов) то есть возможно стоит продвигаться
+пошагово:  от категории к категории.</p>
Index: /tags/2.6.0RC1/language/ru_RU/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/help/user_list.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>Список пользователей</h2>
+
+<p>На этой странице Вы можете управлять зарегистрированными пользователями.
+Только разрешениями управляют в нескольких различных экранах.</p>
+
+<h3>Добавление пользователей</h3>
+
+<p>Администратор может вручную добавить пользователя.</p>
+
+<h3>Список пользователей</h3>
+
+<p>Список может быть отфильтрован по имени пользователя (используйте * как
+подстановочный знак), группе или статусу. Список можно отсортировать по дате
+регистрации или имени пользователя, по возрастанию или по убыванию.</p>
+
+<p>Этот экран позволяет производить над несколькими пользователями одно или несколько действий:</p>
+
+<ul>
+
+  <li>удаление пользователей (требуется подтвердить установкой галочки)</li>
+
+  <li>изменение статуса</li>
+
+  <li>включение или исключение из группы</li>
+
+  <li>редактирование свойств отображения</li>
+
+  <li>редактирование дополнительных свойств</li>
+
+</ul>
+
+<p>Настройки применяются к выбранным пользователям (по умолчанию) или ко всем.</p>
Index: /tags/2.6.0RC1/language/ru_RU/index.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/ru_RU/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Установка';
+$lang['Basic configuration'] = 'Базовая настройка';
+$lang['Default gallery language'] = 'Язык по умолчанию';
+$lang['Database configuration'] = 'Настройка базы данных';
+$lang['Admin configuration'] = 'Настройка администрирования';
+$lang['Start Install'] = 'Начать установку';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Он будет показан посетителям. Необходим для администрирования сайта';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Успешно соединились с сервером, но невозможно подключиться к базе данных';
+$lang['Can\'t connect to server'] = 'Невозможно соединиться с сервером';
+$lang['Host'] = 'Хост MySQL';
+$lang['User'] = 'Пользователь';
+$lang['user login given by your host provider'] = 'логин, который выдал провайдер';
+$lang['user password given by your host provider'] = 'пароль, который выдал провайдер';
+$lang['Database name'] = 'Имя базы данных';
+$lang['also given by your host provider'] = 'также выдается провайдером. Часто совпадает с логином';
+$lang['Database table prefix'] = 'Префикс таблиц в базе данных';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'названия таблиц в базе данных будут начинаться с этого (что упростит их обслуживание)';
+$lang['enter a login for webmaster'] = 'нужно ввести логин для вебмастера';
+$lang['webmaster login can\'t contain characters \' or "'] = 'логин вебмастера не должен содержать символы  \' или "';
+$lang['please enter your password again'] = 'еще раз пароль';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Не сообщайте его никому, он необходим для доступа к панели администрирования';
+$lang['Password [confirm]'] = 'Повторите пароль';
+$lang['verification'] = 'еще раз для исключения опечатки';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Нужна помощь? Задайте свои вопросы на <a href="%s">Форуме Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Будет использоваться для контакта посетителей с администратором';
+$lang['PHP 5 is required'] = 'Требуется PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Кажется, что Ваш хостинг в настоящее время под управлением  PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo может попытаться переключить Вашу конфигурацию на PHP 5, создавая или изменяя .htaccess файл.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Отметьте, что Вы можете изменить конфигурацию самостоятельно и перезапустите Piwigo после этого.';
+$lang['Try to configure PHP 5'] = 'Попытаться переконфигурировать PHP 5';
+$lang['Sorry!'] = 'Извините!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo не в состоянии переконфигурировать PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Вы должны обратиться к своему провайдеру за поддержой и разъяснениями, как переключиться на PHP 5.';
+$lang['Hope to see you back soon.'] = 'Надеемся скоро увидеть Вас вновь.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Поздравляем, установка Piwigo полностью завершена';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Альтернативное решение состоит в том, чтобы скопировать текст в блоке выше и вставить это в файл "local/config/database.inc.php"   (Предупреждение: database.inc.php должен только содержать то, что находится в текстовом поле, без символов возврата строки или пробелов)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Создать файл конфигурации local/config/database.inc.php не удалось.';
+$lang['Download the config file'] = 'Загрузить файл конфигурации';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Вы можете загрузить файл конфигурации и передать его в local/config directory.';
+$lang['Just another Piwigo gallery'] = 'Еще одна галерея Piwigo';
+$lang['Welcome to my photo gallery'] = 'Добро пожаловать в мою фотогалерею';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не стесняйтесь консультироваться на наших форумах для получения любой помощи, %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Добро пожаловать в новую установку Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost или другой, который указан провайдером';
+?>
Index: /tags/2.6.0RC1/language/ru_RU/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Русский [RU]
Index: /tags/2.6.0RC1/language/ru_RU/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ru_RU/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ru_RU/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,41 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Обновление';
+$lang['Upgrade from version %s to %s'] = 'Обновление с версии %s до %s';
+$lang['Statistics'] = 'Статистика';
+$lang['total upgrade time'] = 'общее время обновления';
+$lang['total SQL time'] = 'общее время SQL';
+$lang['SQL queries'] = 'SQL запросы';
+$lang['Upgrade informations'] = 'Информация об обновлениях';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Выполните обслуживание [Администрирование> Инструменты > Обслуживание], если Вы столкнулись с какими-либо проблемами.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Только администратор может запустить обновление: проверьте ниже.';
+$lang['You do not have access rights to run upgrade'] = 'У вас нет прав на запуск обновлений';
+$lang['All sub-albums of private albums become private'] = 'Все альбомы, вложенные в приватный альбом, тоже становятся приватными';
+$lang['User permissions and group permissions have been erased'] = 'Разрешения пользователей и групп были стерты';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Только префикс эскизов и адрес почты вебмастера были сохранены от предыдущей конфигурации';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Эта страница предлагает модернизировать базу данных от Вашей старой версии Piwigo до новой версии. Помощник обновления думает, что Вы используете в настоящее время <b> выпуск %s </b> (или эквивалентный).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Желательно, чтобы следующие плагины были дезактивированы. Вы должны проверить обновления плагинов прежде, чем активировать их снова:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] ='В %s, до ?>, вставить:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Предварительно эти темы были деактивированы. Вы должны проверить актуальность их версии, прежде чем реактивировать их:';
+?>
Index: /tags/2.6.0RC1/language/sh_RS/about.html
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/about.html	(revision 25596)
@@ -0,0 +1,13 @@
+  <li>Piwigo je web aplikacija koja vam omogućava izradu web galerije na lak način.</li>
+
+  <li>Tehnički, Piwigo je potpuno razvijen korišćenjem PHP (the elePHPant) te MySQL baze podataka (the SQuirreL).</li>
+
+  <li>Ako imate predloga i komentara, molimo posjetite <a href="http://piwigo.org">Piwigo</a> službenu stranicu, i njoj posvećen <a href="http://piwigo.org/forum">forum</a>.</li>
+
+<p>The serbia translation is maintained by (in alphabetical order):
+
+<ul>
+<li>Darko</li>
+<li><a href="http://piwigo.org/forum/profile.php?id=16294">vladamilanovic</a></li>
+</ul>
+.... Many thanks to you</p> 
Index: /tags/2.6.0RC1/language/sh_RS/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/admin.lang.php	(revision 25596)
@@ -0,0 +1,901 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d veza';
+$lang['%d associations'] = '%d veze';
+$lang['%d album including'] = '%d kategorija obuhvata ';
+$lang['%d albums including'] = '%d kategorije obuhvataju ';
+$lang['%d physical'] = '%d stvarna';
+$lang['%d physicals'] = '%d stvarnih';
+$lang[' and %d virtual'] = ' i %d virtualna';
+$lang[' and %d virtuals'] = ' i %d virtualnih';
+$lang['%d album moved'] = '%d kategorija premeštena';
+$lang['%d albums moved'] = '%d kategorija premešteno';
+$lang['%d group'] = '%d grupa';
+$lang['%d groups'] = '%d grupa';
+$lang['%d member'] = '%d član';
+$lang['%d members'] = '%d članova';
+$lang['%d tag'] = '%d oznaka';
+$lang['%d tags'] = '%d oznaka';
+$lang['%d user comment rejected'] = '%d korisnički komentar odbačen';
+$lang['%d user comments rejected'] = '%d korisničkih komentara odbačeno';
+$lang['%d user comment validated'] = '%d korisnički kometar odobren';
+$lang['%d user comments validated'] = '%d korisničkih komentara odobreno';
+$lang['%d user deleted'] = '%d korisnik izbrisan';
+$lang['%d users deleted'] = '%d korisnika izbrisano';
+$lang['%d user'] = '%d korisnik';
+$lang['%d users'] = '%d korisnika';
+$lang['%d waiting for validation'] = '%d čekanje na overu';
+$lang['Actions'] = 'Postupci';
+$lang['Activate'] = 'Uključi';
+$lang['Add/delete a permalink'] = 'Dodaj/izbriši stalnu vezu';
+$lang['Add a tag'] = 'Dodaj';
+$lang['Add a user'] = 'Dodaj korisnika';
+$lang['Add group'] = 'Dodaj grupu';
+$lang['Add'] = 'Dodaj';
+$lang['Allow user registration'] = 'Odobri upis korisnika';
+$lang['Apply to sub-albums'] = 'Primeni na podkategorije';
+$lang['Associated'] = 'Povezanost';
+$lang['Caddie management'] = 'Kontrola fioke';
+$lang['Caddie'] = 'Fioka';
+$lang['Albums authorized thanks to group associations'] = 'Kategorije overene zahvaljujući grupnoj vezi';
+$lang['Album manual order was saved'] = 'Redosled kategorija je sačuvan';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Provera nadogradnje neuspešna iz nepoznatog razloga.';
+$lang['Check for upgrade'] = 'Provera nadogradnje';
+$lang['Comments for all'] = 'Komentari za sve';
+$lang['Current name'] = 'Trenutni naziv';
+$lang['Database'] = 'Baza podataka';
+$lang['Deactivate'] = 'Isključi';
+$lang['Deletions'] = 'Brisanja';
+$lang['Deny selected groups'] = 'Zabrani odabrane grupe';
+$lang['Deny selected users'] = 'Zabrani odabrane korisnike';
+$lang['Description'] = 'Opis';
+$lang['Display options'] = 'Mogućnosti prikaza';
+$lang['Dissociated'] = 'Odvojeno';
+$lang['Does not represent'] = 'Ne predstavlja';
+$lang['Edit selected tags'] = 'Uredi odabrane oznake';
+$lang['Edit tags'] = 'Uredi oznake';
+$lang['Email admins when a new user registers'] = 'E-mail administratorima pri upisu novih korisnika';
+$lang['Email admins when a valid comment is entered'] = 'E-mail administratorima pri upisu novih komentara';
+$lang['Email admins when a comment requires validation'] = 'Email administratorima kada komentar treba overu';
+$lang['Environment'] = 'Okruženje';
+$lang['Form'] = 'Oblik';
+$lang['Gallery title'] = 'Naziv galerije';
+$lang['Grant selected groups'] = 'Ovlasti odabrane grupe';
+$lang['Grant selected users'] = 'Ovlasti odabrane korisnike';
+$lang['Group name'] = 'Naziv grupe';
+$lang['Groups'] = 'Grupa';
+$lang['Guests'] = 'Gostiju';
+$lang['History'] = 'Istorija';
+$lang['Informations'] = 'Informacije';
+$lang['Install'] = 'Instaliraj';
+$lang['Link all album photos to a new album'] = 'Poveži sve elemente kategorije sa novom kategorijom';
+$lang['Link all album photos to some existing albums'] = 'Poveži sve elemente kategorije sa nekom postojećom kategorijom';
+$lang['Linked albums'] = 'Povezane kategorije';
+$lang['Lock gallery'] = 'Zaključaj galeriju';
+$lang['Maintenance'] = 'Održavanje';
+$lang['Edit album permissions'] = 'Upravljanje dozvolama za kategoriju';
+$lang['Manage permissions for group "%s"'] = 'Upravljanje dozvolama za grupu "%s"';
+$lang['Manage permissions for user "%s"'] = 'Upravljanje dozvolama za korisnika "%s"';
+$lang['Manage tags'] = 'Upravljanje oznakama';
+$lang['Members'] = 'Članovi';
+$lang['Metadata synchronized from file'] = 'Usklađivanje meta podataka iz datoteke';
+$lang['Move albums'] = 'Premesti kategorije';
+$lang['Move'] = 'Premesti';
+$lang['Name'] = 'Naziv';
+$lang['New name'] = 'Novi naziv';
+$lang['New parent album'] = 'Nova nadređena kategorija';
+$lang['New tag'] = 'Nova oznaka';
+$lang['Number of comments per page'] = 'Broj komentara po stranici';
+$lang['Number of rates'] = 'Broj ocena';
+$lang['Number of thumbnails to create'] = 'broj poveznih sličica za izradu';
+$lang['Only private albums are listed'] = 'Samo lične kategorije su ispisane';
+$lang['Operating system'] = 'Operativni sistem';
+$lang['Options'] = 'Mogućnosti';
+$lang['Other private albums'] = 'Ostale lične kategorije';
+$lang['Page banner'] = 'Baner stranice';
+$lang['Parent album'] = 'Nadređena kategorija';
+$lang['Path'] = 'Putanja';
+$lang['Permalink'] = 'Stalna veza';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Stalna veza mora biti sastavljena od znakova a-z, A-Z, 0-9, "-", "_" ili "/". Ne sme biti brojčana vrijednost ili počinjati brojem pa znakom "-"';
+$lang['Permalink %s is already used by album %s'] = 'Stalnu vezu %s već koristi kategorija %s';
+$lang['Permalink history'] = 'Istorija stalnih veza';
+$lang['Permalinks'] = 'Stalne veze';
+$lang['Permission denied'] = 'Dozvola uskraćena';
+$lang['Permission granted thanks to a group'] = 'Dozvola odobrena zahvaljujući grupi';
+$lang['Permission granted'] = 'Dozvola odobrena';
+$lang['Photo informations updated'] = 'Podaci o slikama obnovljeni';
+$lang['Plugins'] = 'Dodaci';
+$lang['Position'] = 'Položaj';
+$lang['Preferences'] = 'Podešavanja';
+$lang['Properties'] = 'Karakteristike';
+$lang['Random photo'] = 'Slika slučajnog izbora';
+$lang['Rate date'] = 'Datum ocene';
+$lang['Rating by guests'] = 'Ocene gostiju';
+$lang['Rating'] = 'Ocenjivanje';
+$lang['Reject'] = 'Odbaci';
+$lang['Representant'] = 'Predstavnik';
+$lang['Representation of albums'] = 'Predstavljanje kategorija';
+$lang['Representative'] = 'Predstavljeno';
+$lang['Represents'] = 'Predstavlja';
+$lang['Save order'] = 'Snimi raspored';
+$lang['Save to permalink history'] = 'Snimi u istoriju stalnih veza';
+$lang['Select at least one album'] = 'Odaberite najmanje jednu kategoriju';
+$lang['Select at least one photo'] = 'Odaberite najmanje jednu sliku';
+$lang['Select at least one user'] = 'Odaberite najmanje jednog korisnika';
+$lang['Show info'] = 'Prikaz podataka';
+$lang['Site manager'] = 'Administrator galerije';
+$lang['Status'] = 'Stanje';
+$lang['Statistics'] = 'Statistika';
+$lang['Storage album'] = 'Kategorija snimanja';
+$lang['Sum of rates'] = 'Zbir ocena';
+$lang['Tag "%s" already exists'] = 'Oznaka "%s" već postoji';
+$lang['Tag "%s" was added'] = 'Oznaka "%s" dodata';
+$lang['Tag selection'] = 'Izbor oznake';
+$lang['The %d following tags were deleted'] = 'Sledeće %d oznake su izbrisane';
+$lang['Unable to check for upgrade.'] = 'Ne mogu proveriti za nadogradnju.';
+$lang['Uninstall'] = 'Ukloni';
+$lang['Use the default photo sort order (defined in the configuration file)']='Koristi podrazumevani redosled slaganja slika (određeno u datoteci za podešavanje)';
+$lang['User comments validation'] = 'Overa korisničkih komentara';
+$lang['Users'] = 'Korisnici';
+$lang['Validate'] = 'Overi';
+$lang['Validation'] = 'Overa';
+$lang['Version'] = 'Verzija';
+$lang['Virtual albums to move'] = 'Virtuelne kategorije za premeštanje';
+$lang['Virtual album name'] = 'Naziv virtuelne kategorije';
+$lang['Webmaster cannot be deleted'] = 'Webmaster ne može biti izbrisan';
+$lang['You are running on development sources, no check possible.'] = 'Vi koristite razvojni izvorni kod, provera nemoguća.';
+$lang['You cannot delete your account'] = "Ne možete izbrisati svoj nalog";
+$lang['You cannot move an album in its own sub album'] = 'Ne možete premestiti kategoriju u njenu podkategoriju';
+$lang['You need to confirm deletion'] = 'Potvrdi brisanje';
+$lang['Associate to album'] = 'poveži sa kategorijom';
+$lang['associate to group'] = 'poveži sa grupom';
+$lang['Authorized'] = 'Ovlašćeno';
+$lang['Add a virtual album'] = 'Dodaj virtuelnu kategoriju';
+$lang['Authorize users to add comments on selected albums'] = 'Ovlastite korisnike za davanje komentara u odabranim kategorijama';
+$lang['The name of an album must not be empty'] = 'Naziv kategorije ne bi trebao biti prazan';
+$lang['Lock albums'] = 'Zaključaj kategorije';
+$lang['Private'] = 'Lična kategorija';
+$lang['Public'] = 'Javna kategorija';
+$lang['Find a new representant by random'] = 'Izbor novog predstavnika slučajnim izborom';
+$lang['Public / Private'] = 'Javno / Lično';
+$lang['Manage authorizations for selected albums'] = 'Upravljanje ovlašćenjima za odabrane kategorije';
+$lang['Virtual album added'] = 'Virtuelna kategorija dodata';
+$lang['Virtual album deleted'] = 'Virtuelna kategorija izbrisana';
+$lang['Access type'] = 'Vrsta pristupa';
+$lang['Information data registered in database'] = 'Podaci upisani u bazu podataka';
+$lang['Default display'] = 'Podrazumevani prikaz';
+$lang['The gallery URL is not valid.'] = 'URL galerije nije odgovarajući.';
+$lang['Main'] = 'Glavno';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Broj komentara po stranici mora biti između 5 i 50.';
+$lang['Configuration'] = 'Podešavanje';
+$lang['confirm'] = 'potvrdi';
+$lang['Date'] = 'Datum';
+$lang['delete album'] = 'obriši kategoriju';
+$lang['Dissociate from album'] = 'odvoji od kategorije';
+$lang['dissociate from group'] = 'odvoji od grupe';
+$lang['Album updated successfully'] = 'Podaci kategorije uspešno obnovljeni.';
+$lang['photos per page'] = 'elemenata po stranici';
+$lang['High definition enabled'] = 'Visoka rezolucija omogućena';
+$lang['File'] = 'Datoteka';
+$lang['first photo added on %s'] = 'prvi element dodat %s';
+$lang['Forbidden'] = 'Zabranjeno';
+$lang['global mode'] = 'opšti način';
+$lang['group "%s" added'] = 'grupa "%s" dodata';
+$lang['group "%s" deleted'] = 'grupa "%s" izbrisana';
+$lang['group "%s" updated'] = 'grupa "%s" obnovljena';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Naziv grupe ne može sadržati  " ili \' ili biti prazan.';
+$lang['This name is already used by another group.'] = 'Ovaj naziv već koristi druga grupa.';
+$lang['High definition'] = 'Visoka rezolucija';
+$lang['jump to album'] = 'skok u kategoriju';
+$lang['jump to photo'] = 'skok na sliku';
+$lang['leave'] = 'ostavi';
+$lang['Lock'] = 'Zaključaj';
+$lang['Locked'] = 'Zaključano';
+$lang['manage album photos'] = 'upravljanje elementima kategorije';
+$lang['manage sub-albums'] = 'upravljanje podkategorijama';
+$lang['Manage'] = 'Upravljaj';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vreme izvršenja je isteklo, obrada se mora nastaviti [Procenjeno vreme: %d sekunde].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vreme izvršenja je isteklo, obrada se mora nastaviti [Procenjeno vreme: %d sekundi].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Predviđeno vreme za popis korisnika za slanje poruka je ograničeno. Ostali korisnici nisu izlistani.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Vreme za slanje poruke je ograničeno. Ostale poruke su preskočene.';
+$lang['To send ?'] = 'Poslati ?';
+$lang['Last send'] = 'Zadnje poslato';
+$lang['Email'] = 'e-mail';
+$lang['User'] = 'Korisnik';
+$lang['See you soon,'] = 'Vidimo se uskoro,';
+$lang['Go to'] = 'Idi na ';
+$lang['Hello'] = 'Pozdrav ';
+$lang['New photos were added'] = 'Novi elementi su dodati ';
+$lang['on'] = ' na ';
+$lang['between'] = 'između ';
+$lang['and'] = ' i ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster vas je pretlatio na primanje e-mail obaveštenja.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Pretplatili ste se na primanje e-mail obaveštenja.';
+$lang['To subscribe'] = 'Pretplata';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Ukoliko ste naišli na probleme ili imate pitanja, molimo pošaljite poruku za ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problemi ili pitanja';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster Vas je uklonio sa liste za primanje e-mail obaveštenja.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Uklonili ste se sa liste za primanje e-mail obaveštenja.';
+$lang[', click on'] = ', kliknite na ';
+$lang['To unsubscribe'] = 'Za uklanjanje';
+$lang['With blank value, gallery title will be used'] = 'Sa praznim poljem, koristi će se naziv galerije';
+$lang['Notification'] = 'Obaveštenje';
+$lang['Error when sending email to %s [%s].'] = 'Greška prilikom slanja e-mail poruke za %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Poruka poslata za %s [%s].';
+$lang['%d mail was sent.'] = '%d poruka poslata.';
+$lang['%d mails were sent.'] = '%d poruke poslate.';
+$lang['%d mail was not sent.'] = '%d poruka nije poslata.';
+$lang['%d mails were not sent.'] = '%d poruke nisu poslate.';
+$lang['No mail to send.'] = 'Nema poruke za slanje.';
+$lang['There is no available subscribers to mail.'] = 'Nema dostupnih primaoca za slanje poruka.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Pretplatnici mogu biti izlistani (dostupni) samo ako ima novih elemenata za obaveštenje.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'U svakom slučaju samo webmaster može pristupiti ovoj tabli a nikad administratori.';
+$lang['No user to send notifications by mail.'] = 'Nema korisnika za slanje e-mail obaveštenja.';
+$lang['New photos added'] = 'Novi elementi dodati';
+$lang['Subscribe to notification by mail'] = 'Pretplatite se za e-mail obaveštenja';
+$lang['Unsubscribe from notification by mail'] = 'Uklonite se iz sistema primanja e-mail obaveštenja';
+$lang['Parameter'] = 'Stavka';
+$lang['Continue processing treatment'] = 'Nastavi obradu postupka';
+$lang['Complementary mail content'] = 'Kompletan sadržaj poruke';
+$lang['Add detailed content'] = 'Dodaj detaljni sadržaj';
+$lang['Send mail as'] = 'Pošalji poruku kao ';
+$lang['Send mail to users'] = 'Pošalji poruku korisnicima';
+$lang['Send'] = 'Pošalji';
+$lang['Options'] = 'Mogućnosti';
+$lang['Send'] = 'Pošalji';
+$lang['Subscribed'] = 'Pretplaćen';
+$lang['Subscribe'] = 'Pretplatite se';
+$lang['Parameters'] = 'Stavke';
+$lang['Select recipients'] = 'Odaberite primaoce';
+$lang['Subscribe/unsubscribe users'] = 'Pretplati/poništi pretplatu korisnika';
+$lang['Unsubscribed'] = 'Pretplata poništena';
+$lang['%d parameter was updated.'] = '%d stavka je obnovljena.';
+$lang['%d parameters were updated.'] = '%d stavke su poništene.';
+$lang['%d user was not updated.'] = '%d korisnik nije obnovljen.';
+$lang['%d users were not updated.'] = '%d korisnici nisu obnovljeni.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Korisnik %s [%s] je uklonjen iz liste pretplatnika.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Korisnik %s [%s] je dodat na listu pretplatnika.';
+$lang['%d user was updated.'] = '%d korisnik je obnovljen.';
+$lang['%d users were updated.'] = '%d korisnici su obnovljeni.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Korisnik %s [%s] nije uklonjen iz liste pretplatnika.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Korisnik %s [%s] nije dodat na listu pretplatnika.';
+$lang['User %s [%s] added.'] = 'Korisnik %s [%s] dodat.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Upozorenje: pretplata ili ukidanje pretplate će poslati e-mail poruke korisnicima';
+$lang['Send mail on HTML format'] = 'Pošalji poruku u HTML obliku';
+$lang['Include display of recent photos grouped by dates'] = 'Uključi prikaz nedavnih slika složenih po datumima';
+$lang['Available only with HTML format'] = 'Dostupno samo u HTML obliku';
+$lang['no write access'] = 'nema dozvole upisa';
+$lang['Permissions'] = 'Dozvole';
+$lang['private'] = 'lično';
+$lang['public'] = 'javno';
+$lang['Purge never used notification feeds'] = 'Isprazni nikad korišćene obaeštavajuće izvore';
+$lang['Purge sessions'] = 'Isprazni sesije';
+$lang['randomly represented'] = 'predstavljen slučajnim izborom';
+$lang['registration date'] = 'datum upisa';
+$lang['clean'] = 'čisto';
+$lang['Create this site'] = 'Napravi ovu stranicu';
+$lang['test'] = 'proba';
+$lang['test this remote site'] = 'isprobajte ovo udaljenu stranicu';
+$lang['remove tags'] = 'ukloni oznake';
+$lang['Repair and optimize database'] = 'Popravi i podesi bazu podataka';
+$lang['selection'] = 'izbor';
+$lang['set to'] = 'postavljeno na';
+$lang['singly represented'] = 'jednoznačno predstavljeno';
+$lang['This site already exists'] = 'Ova stranica već postoji';
+$lang['Create a new site : (give its URL to create_listing_file.php)'] = 'Izradi novu stranicu : (odrdite njenu URL za izradu create_listing_file.php)';
+$lang['created'] = 'napravljeno';
+$lang['delete'] = 'obriši';
+$lang['delete this site and all its attached elements'] = 'obriši ovu stranicu i sve njene pridodate stavke';
+$lang['an error happened'] = 'došlo je do greške';
+$lang['Local'] = 'Lokalno';
+$lang['Remote'] = 'Udaljeno';
+$lang['update the database from files'] = 'obnovi bazu podataka pomoću datoteke';
+$lang['status'] = 'stanje';
+$lang['Directory'] = 'Mapa';
+$lang['sub-albums'] = 'podkategorije';
+$lang['Synchronize metadata'] = 'sinhronizuj meta podatke';
+$lang['target'] = 'odredište';
+$lang['Thumbnail'] = 'Povezne sličice';
+$lang['Title'] = 'naslov';
+$lang['Album list management'] = 'Upravljanje kategorijama';
+$lang['Piwigo configuration'] = 'Piwigo podešavanja';
+$lang['Edit album'] = 'Uredi kategoriju';
+$lang['Group management'] = 'Upravljanje grupama';
+$lang['User list'] = 'Lista korisnika';
+$lang['Edit photo information'] = 'Promena podataka o slici';
+$lang['Database synchronization with files'] = 'Sinhronizacija baze podataka sa datotekama';
+$lang['all'] = 'sve';
+$lang['height must be a number superior to'] = 'visina mora biti broj veći od ';
+$lang['width must be a number superior to'] = 'širina mora biti broj veći od';
+$lang['for the file format'] = 'za datotečni oblik';
+$lang['Photo unreachable or no support'] = 'Slika nedostupna ili bez podrške';
+$lang['GD version'] = 'GD verzija';
+$lang['General statistics'] = 'Glavna statistika';
+$lang['average time'] = 'prosečno vreme';
+$lang['number of miniaturized photos'] = 'broj umanjenih slika';
+$lang['total time'] = 'ukupno vreme';
+$lang['for this file format'] = 'za ovu vrstu datoteke';
+$lang['unit mode'] = 'pojedinačni način';
+$lang['Unlocked'] = 'Otključano';
+$lang['unset'] = 'razdešeno';
+$lang['Update albums informations'] = 'Obnovi podatke o kategorijama';
+$lang['Update photos information'] = 'Obnovi podatke o slikama';
+$lang['Synchronize'] = 'Sinhronizuj';
+$lang['reduce to single existing albums'] = 'umanji na jednu postojeću kategoriju-e';
+$lang['Choose an option'] = 'Izaberite mogućnost';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'najopširniji mogući prikaz podataka (dodate kategorije i elementi, izbrisane  kategorije i elementi)';
+$lang['Error list'] = 'Lista grešaka ';
+$lang['Errors caption'] = 'Zaglavlja grešaka';
+$lang['Detailed informations'] = 'Detaljnija obaveštenja';
+$lang['File/directory read error'] = 'Greška čitanja datoteke/direktorijuma';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Datoteci ili direktorijumu se ne može pristupiti (ne postoji ili je pristup zabranjen)';
+$lang['albums deleted in the database'] = 'kategorije izbrisane iz baze podataka';
+$lang['photos deleted from the database'] = 'elementi izbrisani iz baze podataka';
+$lang['photos candidates for metadata synchronization'] = 'slika kandidata za sinhronizaciju meta podataka';
+$lang['photos informations synchronized with files metadata'] = 'podataka elemenata sinhronizovano sa meta podacima datoteke';
+$lang['errors during synchronization'] = 'grešaka tokom sinhronizacije';
+$lang['albums added in the database'] = 'kategorija dodato u bazu podataka';
+$lang['photos added in the database'] = 'elemenata dodato u bazu podataka';
+$lang['photos updated in the database'] = 'elemenata obnovljeno u bazi podataka';
+$lang['Search for new images in the directories'] = 'Pretraživanje novih slika u direktorijumima';
+$lang['added'] = 'dodato';
+$lang['deleted'] = 'obrisano';
+$lang['Metadata synchronization results'] = 'Rezultat usklađivanja meta podataka';
+$lang['only perform a simulation (no change in database will be made)'] = 'izvrši samo simulaciju (nema promena u bazi podataka)';
+$lang['Simulation'] = 'Simulacija';
+$lang['directories + files'] = 'direktorijume + datoteke';
+$lang['only directories'] = 'samo direktorijume';
+$lang['synchronize files structure with database'] = 'uskladi strukturu datoteke sa bazom podataka';
+$lang['synchronize files metadata with database photos informations'] = 'uskladi meta podatke datoteke sa podacima o elementu iz baze podataka';
+$lang['even already synchronized photos'] = 'čak i već usklađene elemente';
+$lang['Used metadata'] = 'Korišćeni meta podaci';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Nazivi direktorijuma i datoteka moraju biti sastavljeni od slova, brojva, "-", "_" ili "."';
+$lang['wrong filename'] = 'loš naziv datoteke';
+$lang['Upload'] = 'Prebaci';
+$lang['user "%s" added'] = 'korisnik "%s" dodat';
+$lang['User status'] = 'Stanje korisnika';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Opšti';
+$lang['user_status_guest'] = 'Gost';
+$lang['user_status_normal'] = 'Korisnik';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Virtuelna ketegorija';
+$lang['Waiting'] = 'Čekanje';
+$lang['default'] = 'podrazumevano';
+$lang['Toggle \'default group\' property'] = 'Promeni \'podrazumevana grupa\' osobine';
+$lang['Advanced features'] = 'Napredne mogućnosti';
+$lang['Overall'] = 'Sveukupno';
+$lang['Year'] = 'Godina';
+$lang['Month'] = 'Mesec';
+$lang['Day'] = 'Dan';
+$lang['Pages seen'] = 'Stranica viđeno';
+$lang['Time'] = 'Vreme';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'Sekcija';
+$lang['An information email was sent to group "%s"'] = 'E-mail poruka obaveštenja je poslata grupi "%s';
+$lang['Send an information email to group members'] = 'Pošalji e-mail obaveštenja članovima grupe';
+$lang['Group'] = 'Grupa';
+$lang['[%s] Visit album %s'] = '[%s] Dođite i pogledajte kategoriju %s';
+$lang['Hello,'] = 'Zdravo,';
+$lang['See you soon.'] = 'Do viđenja.';
+$lang['Discover album:'] = 'Dođite i otkrijte kategoriju:';
+$lang['Mail content'] = 'sadržaj e-mail poruke';
+$lang['none'] = 'ni jedan';
+$lang['high'] = 'visoko';
+$lang['other'] = 'ostalo';
+$lang['Element type'] = 'Tip elementa';
+$lang['Image id'] = 'ID slike';
+$lang['Summary'] = 'Zbirno';
+$lang['%d line filtered'] = '%d linija pročišćena';
+$lang['%d lines filtered'] = '%d linija pročišćeno';
+$lang['%d guest'] = '%d gost';
+$lang['%d guests'] = '%d gostiju';
+$lang['Hour'] = 'Sat';
+$lang['guest'] = 'gost';
+$lang['default values'] = 'podrazumevane vrednosti';
+// --------- Starting below: New or revised $lang ---- from version 1.7.1
+$lang['Guest cannot be deleted'] = 'Gost ne može biti izbrisan';
+$lang['Default user cannot be deleted'] = 'Podrazumevani korisnik ne može biti izbrisan';
+$lang['Purge history detail'] = 'Isprazni detalje istorije';
+$lang['Purge history summary'] = 'Isprazni zbirnu istoriju';
+$lang['Check integrity'] = 'Provera celovitosti';
+$lang['Anomaly'] = 'Nepravilnost';
+$lang['Correction'] = 'Ispravka';
+$lang['Automatic correction'] = 'Automatsko ispravljanje';
+$lang['Impossible automatic correction'] = 'Automatsko ispravljanje nemoguće';
+$lang['Correction applied with success'] = 'Ispravka uspešno primenjena';
+$lang['Correction applied with error'] = 'Ispravka primenjena s greškom';
+$lang['%d anomaly has been detected.'] = '%d nepravilnost je otkrivena.';
+$lang['%d anomalies have been detected.'] = '%d nepravilnosti su otkrivene.';
+$lang['%d anomaly has been corrected.'] = '%d nepravilnost je ispravljena.';
+$lang['%d anomalies have been detected corrected.'] = '%d nepravilnosti je ispravljeno.';
+$lang['%d anomaly has not been corrected.'] = '%d nepravilnost nije ispravljena.';
+$lang['%d anomalies have not been corrected.'] = '%d nepravilnosti nije ispravljeno.';
+$lang['Go to %s or %s for more informations'] = 'Idite na %s ili %s za više detalja';
+$lang['the forum'] = 'forum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s vrijednost nije valjana datoteka jer exif nije podržan';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s mora biti postavljeno na false u config_local.inc.php file';
+$lang['Main "guest" user does not exist'] = 'Glavni "guest" korisnik ne postoji';
+$lang['Main "guest" user status is incorrect'] = 'Stanje glavnog "guest" korisnika je neispravno';
+$lang['Default user does not exist'] = 'Podrazumevani korisnik ne postoji';
+$lang['Main "webmaster" user does not exist'] = 'Glavni "webmaster" korisnik ne postoji';
+$lang['Main "webmaster" user status is incorrect'] = 'Stanje glavnog "webmaster" korisnika je neispravno';
+$lang['User "%s" created with "%s" like password'] = 'Korisnik "%s" izrađen sa "%s" kao lozinkom';
+$lang['Status of user "%s" updated'] = 'Stanje korisnika "%s" obnovljeno';
+$lang['add new photos to caddie'] = 'dodaj nove elemente u fioku';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = 'Bez prikaza';
+$lang['Classic display'] = 'Klasični prikaz';
+$lang['Hoverbox display'] = 'Prikaz lebdećim prozorom';
+$lang['Mail address is obligatory for all users'] = 'E-mail adresa je obavezna za sve korisnike';
+$lang['Minimum privacy level'] = 'Najniži nivo privatnosti';
+$lang['Privacy level'] = 'Nivo privatnosti';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Poznanici';
+$lang['Level 2'] = 'Prijatelji';
+$lang['Level 4'] = 'Porodica';
+$lang['Level 8'] = 'Administratori';
+$lang['Reinitialize check integrity'] = 'Ponovi proveru celovitosti';
+$lang['Check all'] = 'Označi sve';
+$lang['Uncheck all'] = 'Odznači sve';
+$lang['Check automatic corrections'] = 'Označi automatske ispravke';
+$lang['Apply selected corrections'] = 'Primeni odabrane ispravke';
+$lang['Ignore selected anomalies'] = 'Zanemari odabrane nepravilnosti';
+$lang['Refresh'] = 'Osveži';
+$lang['The anomaly will be ignored until next application version'] = 'Nepravilnost će se zanemariti do sledeće verzije galerije';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Ispravka nepravilnosti će poništiti činjenicu da je zanemarena';
+$lang['%d anomaly has been ignored.'] = '%d nepravilnost je zanemarena.';
+$lang['%d anomalies have been ignored.'] = '%d nepravilnosti su zanemarene.';
+$lang['Plugins which need upgrade'] = 'Dodaci koji trebaju nadogradnju';
+$lang['Plugin list'] = 'Lista dodataka';
+$lang['Check for updates'] = 'Provera nadogradnje';
+$lang['Other plugins'] = 'Ostali dodaci';
+$lang['Last revisions'] = 'Zadnja izdanja';
+$lang['Are you sure you want to delete this plugin?'] = 'Sigurno želite ukloniti ovaj dodatak?';
+$lang['Are you sure you want to install this plugin?'] = 'Sigurno želite instalirati ovaj dodatak?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Sigurno želite instalirati ovaj dodatak? Morate potvrditi da ova prečica ne treba uklanjanje.';
+$lang['Plugin has been successfully copied'] = 'Dodatak je uspješno iskopiran';
+$lang['You might go to plugin list to install and activate it.'] = 'Možete ići na listu datoteka za instalaciju i pokretanje.';
+$lang['Can\'t create temporary file.'] = 'Ne mogu napraviti privremeni datoteku.';
+$lang['Can\'t download archive.'] = 'Ne mogu preuzeti datoteku.';
+$lang['Can\'t read or extract archive.'] = 'Ne mogu očitati ili raspakovati datoteku.';
+$lang['An error occured during extraction (%s).'] = 'Došlo je do greške prilikom raspakovanja (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Proverite "plugins" direktorijum i dozvole poddirektorijuma (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Ne mogu se povezati na server.';
+$lang['Purge compiled templates'] = 'Isprazni obrađene šablone';
+$lang['ACCESS_0'] = 'Slobodan pristup';
+$lang['ACCESS_1'] = 'Pristup svima';
+$lang['ACCESS_2'] = 'Pristup pretplatnicima';
+$lang['ACCESS_3'] = 'Pristup administratorima';
+$lang['ACCESS_4'] = 'Pristup webmaster-ima';
+$lang['ACCESS_5'] = 'Bez pristupa';
+$lang['Support'] = 'Podrška';
+$lang['Documentation'] = 'Dokumentacija';
+$lang['A new version of Piwigo is available.'] = 'Nova Piwigo verzija je dostupna.';
+$lang['Piwigo Administration'] = 'Piwigo administracija';
+$lang['Piwigo version'] = 'Piwigo verzija';
+$lang['You are running the latest version of Piwigo.'] = 'Koristite najnoviju verziju Piwigo-a.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Verzija od %s [%s] postavljene nije odgovarajuća potrebnoj verziji [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'morate nadograditi vaš sistem da biste imali sve pogodnosti u protivnom sistem neće raditi ispravno ili uopšte neće raditi';
+$lang['Deleted on'] = 'Izbrisan na';
+$lang['Last hit'] =  'Zadnja poseta';
+$lang['GD library is missing'] = 'Nedostaje GD biblioteka';
+$lang['Templates'] = 'Šabloni';
+$lang['Extend for templates'] = 'Proširenje za šablone';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'Zamena izvornih šablona prilagođenim iz direktorijuma template-extension';
+$lang['Replacers (customized templates)'] = 'Zamene (prilagođeni šabloni)';
+$lang['Original templates'] = 'Izvorni šabloni';
+$lang['Optional URL keyword'] = 'Izborna URL ključna reč';
+$lang['Templates configuration has been recorded.'] = 'Podešavnje šablona je sačuvano.';
+$lang['All optimizations have been successfully completed.'] = 'Sva poboljšanja su uspešno dovršena.';
+$lang['Optimizations have been completed with some errors.'] = 'Poboljšanja su izvršena uz neke greške.';
+$lang['Modify information'] = 'Promeni podatak';
+$lang['nothing'] = 'ništa';
+$lang['overrides existing values with empty ones'] = 'prekucava postojeće vrednosti praznim poljima';
+$lang['Manage photo ranks'] = 'Upravljanje poretkom';
+$lang['Edit ranks'] = 'Uredi poredak';
+$lang['No photo in this album'] = 'Nema elemenata u ovoj kategoriji';
+$lang['Images manual order was saved'] = 'Sačuvan je podešenii redosled slika';
+$lang['ranks'] = 'poredak';
+$lang['Drag to re-order'] = 'Povuci za preređivanje';
+$lang['Quick Local Synchronization'] = 'Brza Lokalna Sinhronizacija';
+$lang['No photo can be deleted'] = 'Nema slike koja se može brisati';
+$lang['Delete selected photos'] = 'Briši odabrane slike';
+$lang['%d photo was deleted'] = '%d slika je izbrisana';
+$lang['%d photos were deleted'] = '%d slike su izbrisane';
+$lang['Downloads'] = 'Preuzimanja';
+$lang['Released on'] = 'Objavljeno dana';
+$lang['Number of downloads'] = 'Broj preuzimanja';
+// --------- Starting below: New or revised $lang ---- from Colibri
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Announcements e-Novine';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Ostanite u vezi sa projektom, pretplatite se na Piwigo Announcement e-Novine. Dobijaćete e-mail poruke po izlasku novih verzija (ponekad sa sigurnosnim zakrpama, važno je znati da su dostupne i treba ih što pre ugraditi) te o svim važnijim desavanjima i događanjima u vezi sa projektom. Svega par e-mail poruka godišnje.';
+$lang['Subscribe %s'] = 'Pretplatite %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Pretplatite %s na Piwigo English Announcements e-Novine';
+$lang['Purge search history'] = 'Očisti istoriju pretraživanja';
+$lang['Hide'] = 'Sakrij';
+$lang['Operation in progress'] = 'Tretiranje procesa.';
+$lang['Please wait...'] = 'Molim sačekajte...';
+$lang['Password is missing. Please enter the password.'] = 'Lozinka nedostaje. Molim unesite lozinku.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Potvrda lozinke nedostaje. Molim potvrdite izabranu lozinku.';
+$lang['Allow users to edit their own comments'] = 'Dozvoli korisnicima da uređuju svoje komentare';
+$lang['Allow users to delete their own comments'] = 'Dozvoli korisnicima da brišu svoje komentare';
+$lang['Email administrators when a comment is modified'] = 'Pošalji e-mail administratoru kada je komentar izmenjen';
+$lang['Email administrators when a comment is deleted'] = 'Pošalji e-mail administratoru kada je komentar izbrisan';
+$lang['Cannot delete the old permalink !'] = 'Stari link se ne može obrisati!';
+$lang['Hit'] = 'Pogodak';
+$lang['Tools'] = 'Alati';
+$lang['Photos'] = 'Fotografije';
+$lang['Themes'] = 'Teme';
+$lang['Instructions to use Piwigo'] = 'Instrukcije kako da koristite Piwigo';
+$lang['Installed Themes'] = 'Instalirane teme';
+$lang['Add New Theme'] = 'Dodaj novu temu';
+$lang['Forbid this theme to users'] = 'Zabrani ovu temu korisnicima';
+$lang['Set as default theme for unregistered and new users'] = 'Postavi kao podrazumevanu temu za neregistrovane i nove korisnike';
+$lang['unknown'] = 'nepoznato';
+$lang['Upload Photos'] = 'Pošalji fotografije';
+$lang['Drop into album'] = 'Baci u kategoriju';
+$lang['+ Add an upload box'] = '+ Dodaj kutiju za slanje';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Napravi "%s" directorijum u korenu Vaše Piwigo instalacije';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dozvoli upis (chmod 777) u "%s" direktorijum u korenu Vaše Piwigo instalcije';
+$lang['existing album'] = 'postojeće kategorije';
+$lang['create a new album'] = 'napravi novu kategoriju';
+$lang['Album name'] = 'Naziv kategorije';
+$lang['Album "%s" has been added'] = 'Kategorija "%s" je dodata';
+$lang['Uploaded Photos'] = 'Pošalji fotografije';
+$lang['%d photos uploaded'] = '%d fotografije poslate';
+$lang['Privacy level set to "%s"'] = 'Nivo privatnosti podešen na "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Kategorija "%s" sada sadrži %d fotografija';
+$lang['Manage this set of %d photos'] = 'Uredi ovaj set %d fotografija';
+$lang['Select files'] = 'Izaberi datoteke';
+$lang['Everybody'] = 'Svi';
+$lang['Who can see these photos?'] = 'Ko može da vidi fotografije?';
+$lang['Settings'] = 'Podešenja';
+$lang['Resize'] = 'Promeni veličinu';
+$lang['Maximum width'] = 'Maksimalna širina';
+$lang['pixels'] = 'pikseli';
+$lang['Maximum height'] = 'Maksimalna visina';
+$lang['Image Quality'] = 'Kvalitet slike';
+$lang['Save Settings'] = 'Snimi podešenja';
+$lang['Your configuration settings are saved'] = 'Vaša podešenja su sačuvana';
+$lang['Active Themes'] = 'Aktivne teme';
+$lang['Add write access to the "%s" directory'] = 'Dozvoli upis "%s" direktorijumu';
+$lang['Administration Home'] = 'Početna administracije';
+$lang['Change Admin Colors'] = 'Promeni administratorske boje';
+$lang['Delete this theme'] = 'Obriši ovu temu';
+$lang['Directory does not exist'] = 'Direktorijum ne postoji';
+$lang['Download,'] = 'Snimi na računar,';
+$lang['FTP + Synchronization'] = 'FTP + Sinhronizacija';
+$lang['Get Support on Piwigo Forum'] = 'Podrška on Piwigo forumu';
+$lang['Help Me'] = 'Pomoć';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ova tema se ne može aktivirati, jer tema ne postoji: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ova tema se ne može obrisati, jer druge teme zavise od nje: %s';
+$lang['Inactive Themes'] = 'Neaktivne teme';
+$lang['Install on your computer,'] = 'Instaliraj na tvom računaru,';
+$lang['Make this theme available to users'] = 'Napravi ovu temu dostupnu korisnicima';
+$lang['Page end'] = 'Kraj strane';
+$lang['Piwigo Uploader'] = 'Piwigo pošiljaoc';
+$lang['Read Piwigo Documentation'] = 'Pročitaj Piwigo dokumentaciju';
+$lang['Start pLoader and add your photos.'] = 'Pokreni pLoader i dodaj tvoje slike.';
+$lang['Switch to clear or dark colors for administration'] = 'Promeni na svetle ili tamne boje za administratora';
+$lang['Theme has been successfully installed'] = 'tema je uspešno instalirana';
+$lang['Visit Gallery'] = 'Poseti galeriju';
+$lang['Visit Piwigo project website'] = 'Poseti stranicu Piwigo projekta';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader označava <em>Piwigo Uploader</em>. Sa Vašeg racunara, pLoader priprema Vaše fotografije i šalje ih u  Piwigo foto galeriju.';
+$lang['Guest Settings'] = 'Podešenja za goste';
+$lang['Main Page'] = 'Glavna strana';
+$lang['Photo Page'] = 'Foto strana';
+$lang['Activate Navigation Bar'] = 'Aktiviraj liniju za navigaciju';
+$lang['Activate Navigation Thumbnails'] = 'Aktiviraj povezne sličice za navigaciju';
+$lang['Activate icon "%s"'] = 'Aktiviiraj ikonu "%s"';
+$lang['Photo Properties'] = 'Osobine slike';
+$lang['Allow user customization'] = 'Dozvoli podešavanja korisniku';
+$lang['Languages'] = 'Jezici';
+$lang['Installed Languages'] = 'Instalirani jezici';
+$lang['Add New Language'] = 'Dodaj novi jezik';
+$lang['Language has been successfully installed'] = 'Jezik je uspešno instaliran';
+$lang['Select:'] = 'Odaberi:';
+$lang['None'] = 'Ništa';
+$lang['Invert'] = 'Suprotno';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nemoguće deaktivirati ovu temu, treba Vam bar jedna tema.';
+$lang['Webmaster status is required.'] = 'Webmaster status je potreban.';
+$lang['Bound Theme'] = 'Povezana tema';
+$lang['Allow rating'] = 'Dozvoli rangiranje';
+$lang['Select at least one comment'] = 'Odaberi najmanje jedan komentar';
+$lang['Active Plugins'] = 'Aktivni dodaci';
+$lang['Inactive Plugins'] = 'Neaktivni dodaci';
+$lang['Missing Plugins'] = 'Nedostajući dodaci';
+$lang['Uninstalled Plugins'] = 'Deinstalirani dodaci';
+$lang['By %s'] = 'Od %s';
+$lang['Visit plugin site'] = 'Poseti stranicu sa dodacima';
+$lang['Active Languages'] = 'Aktivni jezici';
+$lang['Delete this language'] = 'Obriši ovaj jezik';
+$lang['Forbid this language to users'] = 'Zabrani ovaj jezik za korisnike';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nemoguće deaktivirati ovaj jezik, prvo odaberite drugi jezik kao podrazumevani.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nemoguće deaktivirati ovaj jezik, treba Vam najmanje jedan jezik.';
+$lang['Inactive Languages'] = 'Neaktivni jezici';
+$lang['Make this language available to users'] = 'Omogući ovaj jezik korisnicima';
+$lang['Set as default language for unregistered and new users'] = 'Postavi kao podrazumevani jezik za neregistrovane i nove korisnike';
+$lang['Add Photos'] = 'Dodaj fotografije';
+$lang['The following tag was deleted'] = 'Tekuća oznaka je obrisana';
+$lang['Miscellaneous'] = 'Ostalo';
+$lang['Virtual Links'] = 'Virtualne veze';
+$lang['There is no other language available.'] = 'Drugi jezik nije dostupan.';
+$lang['There is no other plugin available.'] = 'Drugi dodatak nije dostupan.';
+$lang['There is no other theme available.'] = 'Druga tema nije dostupna.';
+$lang['By rank'] = 'Po rangu';
+$lang['Manual order'] = 'Ručno poređano';
+$lang['Add another set of photos'] = 'Dodaj drugi set fotografija';
+ $lang['Order of menubar items has been updated successfully.'] = ' Poredak elemenata u izborniku je uspešno ažuriran.';
+$lang['Menu Management'] = 'Izbornik';
+$lang['%d of %d photos selected'] = '%d od %d fotografija odabrano';
+$lang['%s has been successfully updated.'] = '%s je uspešno ažiran';
+$lang['(this tag will be deleted)'] = '(ova oznaka će biti obrisana)';
+$lang['... or '] = '... ili';
+$lang['Action'] = 'Akcija';
+$lang['Activate comments'] = 'Aktivira komentare';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivira ikonicu "novo" pored albuma i slika';
+$lang['Add a criteria'] = 'Dodaj kriterijum';
+$lang['Add a filter'] = 'Dodaj filter';
+$lang['Add tags'] = 'Dodaj oznake';
+$lang['Add to caddie'] = 'Dodaj u fioku';
+$lang['Album photos associated to the following albums: %s'] = 'Fotografije albuma povezane sa sledećim albumima: %s';
+$lang['Albums automatically sorted'] = 'Albumi automatski poređani';
+$lang['All %d photos are selected'] = 'Svih %d fotografija je odabrano';
+$lang['All extensions are up to date.'] = 'Sve ekstenzije su ažurne.';
+$lang['All languages are up to date.'] = 'Svi jezici su ažurni.';
+$lang['All plugins are up to date.'] = 'Svi plaginovi su ažurni.';
+$lang['All themes are up to date.'] = 'Sve teme su ažurne.';
+$lang['Allowed file types: %s.'] = 'Dozvoljeni tipovi fajlova: %s';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Dogodila se greška u toku raspakivanja. Molimo proverite dozvole na fajlovima Vaše piwigo instalacije.
+<br><a href="%s">Kliknite ovde da biste videli zapis greške</a>.';
+$lang['An error has occured during upgrade.'] = 'Dogodila se greška u toku nadgradnje.';
+$lang['Apply action'] = 'Primeni akciju';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna rezolucija: %dM piksela (odnosno %dx%d piksela)';
+$lang['automatic order'] = 'automatski poredak';
+$lang['Average rate'] = 'Prosečna ocena';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Podrazumevano, Piwigo će kreirati novu veličinu prilagođenu web-u od HD verzije (visoke definicije) Vaše fotografije';
+$lang['Choose an action'] = 'Izaberi akciju';
+$lang['Confirm merge'] = 'Potvrdi pripajanje';
+$lang['Create'] = 'Kreiraj';
+$lang['Crop'] = 'Iseci';
+$lang['Deactivate all'] = 'Isključi sve';
+$lang['Default comments order'] = 'Podrazumevani poredak komentara';
+$lang['Default photos order'] = 'Podrazumevani poredak fotografija';
+$lang['Delete orphan tags'] = 'Obriši napuštene oznake';
+$lang['delete photo'] = 'obriši fotografiju';
+$lang['display'] = 'prikaži';
+$lang['Do you want to activate anyway?'] = 'Da li želite ipak da uključite?';
+$lang['Dump Database'] = 'Obriši bazu podataka';
+$lang['Duplicates'] = 'Duplikati';
+$lang['Error on file "%s" : %s'] = 'Greška u fajlu "%s": %s';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'GREŠKA: OVAJ PLAGIN NEDOSTAJE IAKO JE INSTALIRAN! DEINSTALIRAJTE GA ODMAH.';
+$lang['ERROR'] = 'GREŠKA';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif ekstenzija nije dostupna, admin bi trebalo da onemogući njeno korišćenje';
+$lang['Extensions Update'] = 'Ažuriranja ekstenzija';
+$lang['Failed to write file to disk'] = 'Nije uspelo pisanje fajla na disk';
+$lang['File upload stopped by extension'] = 'Otpremanje fajla je zaustavila ekstenzija';
+$lang['Follow Orientation'] = 'Prati orjentaciju';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sledeći plaginovi mogu biti nekompatibilni sa novom verzijom Piwigo-a:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sledeće teme mogu biti nekompatibilne sa novom verzijom Piwigo-a:';
+$lang['Graphics Library'] = 'Biblioteka grafika';
+$lang['Height'] = 'Visina';
+$lang['hide details'] = 'sakrij detalje';
+$lang['I decide to update anyway'] = 'Odlučio sam da ipak ažuriram';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ako je HD nedostupna i ako je trenutna web-veličina veća od promenjene veličine, Piwigo će ukloniti HD i kreirati smanjenu web-veličinu fotografije.';
+$lang['Ignore All'] = 'Ignoriši sve';
+$lang['Ignore this update'] = 'Ignoriši ovo ažuriranje';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'U Vašem php.ini fajlu upload_max_filesize(%sB) je veći od post_max_size(%sB), trebalo bi da promenite ovo podešavanje';
+$lang['include child albums'] = 'uključi podređene albume';
+$lang['Languages which need upgrade'] = 'Jezici kojima treba ažuriranje';
+$lang['Last import'] = 'Poslednji uvoz';
+$lang['%s photos can not be regenerated'] = '%s fotografija ne može biti regenerisano';
+$lang['%s photos have been regenerated'] = '%s fotografija je regenerisano';
+$lang['A locked gallery is only visible to administrators'] = 'Zaključana galerija je vidljiva samo administratorima';
+$lang['administrators'] = 'administratori';
+$lang['Applications'] = 'Aplikacije';
+$lang['apply automatic sort order'] = 'primeni automatski poredak';
+$lang['Automatic sort order'] = 'Automatski poredak';
+$lang['Batch Manager'] = 'Menadžer automatizma';
+$lang['cancel manual order'] = 'poništi ručni poredak';
+$lang['Cancel'] = 'Odustani';
+$lang['Center of interest'] = 'Interesno središte';
+$lang['Delete Representant'] = 'Obriši ikonice albuma';
+$lang['Gallery unlocked'] = 'Galerija otključana';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Uključi istoriju podataka (Upozorenje: može se premašiti limit memorije na serveru)';
+$lang['Learn more'] = 'Nauči više';
+$lang['List'] = 'Lista';
+$lang['Manage Permissions'] = 'Uredi dozvole';
+$lang['manual order'] = 'ručni poredak';
+$lang['Maximum file size: %sB.'] = 'Maksimalna veličina fajla: %sB.';
+$lang['Merge selected tags'] = 'Spoj odabrane oznake';
+$lang['Merge tags'] = 'Spoj oznake';
+$lang['Missing a temporary folder'] = 'Nedostaje privremeni direktorijum';
+$lang['modified'] = 'izmenjen';
+$lang['Move to album'] = 'Premesti u album';
+$lang['New Version'] = 'Nova verzija';
+$lang['new'] = 'novo';
+$lang['No destination tag selected'] = 'Nije odabrana odredišna oznaka';
+$lang['No file was uploaded'] = 'Nije poslat ni jedan fajl';
+$lang['No photo in the current set.'] = 'Nema fotografija u trenutnom skupu';
+$lang['No photo selected, %d photos in current set'] = 'Nema odabranih fotografija, %d fotografija u trenutnom skupu';
+$lang['No photo selected, no action possible.'] = 'Nema odabranih fotografija, nema dozvoljenih akcija';
+$lang['No results'] = 'Nema rezultata';
+$lang['Not cropped correctly?'] = 'Pogrešno isečeno?';
+$lang['Notify administrators when a comment is'] = 'Obavesti administratore kada je komentar';
+$lang['Obsolete Plugins'] = 'Zastareli plagin';
+$lang['on the %d selected photos'] = 'od %d odabranih fotografija';
+$lang['Original Size'] = 'Originalna veličina';
+$lang['Orphan tags deleted'] = 'Napuštena oznaka obrisana';
+$lang['Pending Comments'] = 'Komentari na čekanju';
+$lang['pending validation'] = 'čeka validaciju';
+$lang['Photo %s of %s'] = 'Fotografija %s od %s';
+$lang['Photo name'] = 'Naziv fotografije';
+$lang['Photos generation in progress...'] = 'Generisanje fotografija...';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne može preuzeti nadogradnju sa servera';
+$lang['Piwigo Update'] = 'Piwigo nadogradnja';
+$lang['Predefined filter'] = 'Predefinisani filter';
+$lang['Rate'] = 'Ocena';
+$lang['Refresh photo set'] = 'Osveži skup fotografija';
+$lang['registered users'] = 'registrovani korisnici';
+$lang['Remove all filters'] = 'Ukloni sve filtere';
+$lang['remove author'] = 'ukloni autora';
+$lang['remove creation date'] = 'ukloni datum kreiranja';
+$lang['Remove from caddie'] = 'Ukloni iz fioke';
+$lang['remove this filter'] = 'ukloni ovaj filter';
+$lang['remove title'] = 'ukloni naslov';
+$lang['Reset ignored updates'] = 'Resetuj ignorisane nadogradnje';
+$lang['Resize after upload'] = 'Promeni veličinu posle slanja';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Vrati podrazumevana podešavanja. Izgubićete podešavanja plaginova!';
+$lang['Restore'] = 'Vrati';
+$lang['Save manual order'] = 'Sačuvaj ručni poredak';
+$lang['Save Template Directory'] = 'Sačuvaj privremeni direktorijum';
+$lang['Save visits in history for'] = 'Sačuvaj posete u istoriji za ';
+$lang['Searching...'] = 'Traženje...';
+$lang['Select an album'] = 'Izaberite album';
+$lang['Select at least two tags for merging'] = 'Odaberite najmanje dve oznake za spajanje';
+$lang['Select the destination tag'] = 'Odaberite odredišnu oznaku';
+$lang['Selection'] = 'Odabir';
+$lang['Send connection settings by email'] = 'Pošalji podešavanja veze mejlom';
+$lang['Set author'] = 'Postavi autora';
+$lang['Set creation date'] = 'Postavi datum kreiranja';
+$lang['Set title'] = 'Postavi naslov';
+$lang['show details'] = 'prikaži detalje';
+$lang['Show menubar'] = 'Prikaži meni bar';
+$lang['simple visitors'] = 'obični posetioci';
+$lang['Some themes and plugins may be not available yet.'] = 'Neke teme i plaginovi neće biti dostupni odmah.';
+$lang['Some upgrades are available for extensions.'] = 'Neke nadogradnje su dostupne za proširenja.';
+$lang['Start Upload'] = 'Počni slanje';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Oznake  <em>%s</em> spojene u oznaku <em>%s</em>';
+$lang['The original image quality must be a number between %d and %d'] = 'Kvalitet originalne slike mora biti broj između %d i %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Visina originalne slike mora biti broj između %d i %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Širina originalne slike mora biti broj između %d i %d';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Poslati fajl prelazi MAX_FILE_SIZE direktivu koja je specificirana u HTML formi';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Poslati fajl prelazi upload_max_filesize direktivu u php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Poslati fajl je nije kompletan';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Poslati fajlovi prelaze post_max_size direktivu u php.ini: %sB';
+$lang['The whole page'] = 'Kompletna strana';
+$lang['The whole set'] = 'Kompletan skup';
+$lang['Themes which need upgrade'] = 'Theme koje je potrebno nadograditi';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Ovaj album sadrži %d fotografija, dadatih od %s do %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Ovaj album sadrži %d fotografija, dodatih %s.';
+$lang['This album contains no photo.'] = 'Ovaj album ne sadrži fotografije.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Ovo je bitna nadogradnja, sa <a href="%s"> novim mogućnostima</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Ovo je manja nadogradnja, sa ispravkama bagova.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'OVAJ PLAGIN JE SADA DEO PIWIGO JEZGRA! OBRIŠITE GA SADA!';
+$lang['This theme was not designed to be directly activated'] = 'Ova tema nije dizajnirana da bude direktno aktivirana';
+$lang['Thumbnails generation in progress...'] = 'Generisanje sličica...';
+$lang['Two updates are available'] = 'Dve nadogradnje su dostupne';
+$lang['Type here the author name'] = 'Unesite ime autora';
+$lang['Type here the title'] = 'Unesite naslov';
+$lang['Type in a search term'] = 'Unesite pojam za pretragu';
+$lang['Unable to dump database.'] = 'Neuspelo brisanje baze.';
+$lang['Unknown upload error'] = 'Nepoznata greška slanja';
+$lang['Unlock gallery'] = 'Otključaj galeriju';
+$lang['Update All'] = 'Nadogradi sve';
+$lang['Update Complete'] = 'Nadogradnja završena';
+$lang['Update in progress... Please wait.'] = 'Nadogradnja... Molimo sačekajte.';
+$lang['Update to Piwigo %s'] = 'Nadogradnja Piwiga %s';
+$lang['Updates'] = 'Nadogradnje';
+$lang['Visit language site'] = 'Poseti sajt jezika';
+$lang['Visit theme site'] = 'Poseti sajt tema';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UPOZORENJE! Ovaj plagin nije kompatibilan sa trenutnom verzijom Piwiga';
+$lang['Web Form'] = 'Web forma';
+$lang['Week starts on'] = 'Dan kada počinje sedmica:';
+$lang['Who can see this photo?'] = 'Ko može videti fotografiju?';
+$lang['Width'] = 'Širina';
+$lang['With no album'] = 'Bez albuma';
+$lang['With no tag'] = 'Bez oznake';
+$lang['With no virtual album'] = 'Bez virtuelnog albuma';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Koristite slanje iz brauzera. Probajte <a href="%s">slanje iz Flash-a</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Koristite slanje iz Flash-a. Imate problem? Probajte <a href="%s">slanje iz brauzera</a>.';
+$lang['You can activate only one mobile theme.'] = 'Možete aktivirati samo jednu pokretnu temu.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Možete nadograditi Piwigo %s direktno, bez nadogradnji na Piwigo %s (preporučeno).';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ne možete postaviti podrazumevani poredak fotografija jer je drugačije podešeno u vašem lokalnom podešavanju.';
+$lang['You have %d orphan tags: %s.'] = 'Imate %d napuštenih oznaka: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Označili ste  <i>$conf[\'order_by\']</i> u svom lokalnom podešavanju, ovaj parametar je zastareo, molimo uklonite ga ili ga preimenujte u <i>$conf[\'order_by_custom\']</i>!';
+$lang['Zoom'] = 'Uvećaj';
+$lang['Delete selected tags'] = 'Obriši odabrane oznake';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo for Android</em> aplikacija omogućava Vam da se povežete sa Vašom Piwigo galerijom preko Adroid telefona ili tablet računara, možete da kreirate albume i pošaljete nekoliko slika odjednom.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo za iOS</em> aplikacija omogućava Vam da se povežete sa Vašom Piwigo galerijom preko iPhone, iPad ili iPod Touch uređaja, možete da kreirate albume i pošaljete nekoliko slika odjednom.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je softver za fotografije dizajniran da upravlja velikom količinom digitalnih slika i za postprodukciju.';
+$lang['Available on'] = 'Dostupno na';
+$lang['Available versions for'] = 'Dostupna verzija za';
+$lang['Delete selected users'] = 'Obriši odabrane korisnike';
+$lang['Piwigo for Android'] = 'Piwigo za Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo za iOs (iPhone, iPad, iPod Touch)';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plagin za Ligtroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plagin za Shotwell';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Publish plagin omogućava Vam da izvezete i sinhronizujete fotografije iz Lightroom-a direktno u Vašu Piwigo foto-galeriju.';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u korisnici imaju dozvole jer pripadaju grupi kojoj je data dozvola.';
+$lang['any visitor can see this album'] = 'bilo koji posetilac može videti ovaj album';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je moćan alat za poboljšanje slika i upravljanje velikim bibliotekama na Mac-u.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je dizajniran za profesionalne fotografe sa iPhoto jednostavnošću.';
+$lang['Delete multiple size images'] = 'Obriši višestruke veličine slika';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je besplatni, napredni menadžer digitalnih fotografija za Linux, Windows i MacOSX';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je dizajniran za fotografe koji žele da pregledaju, upravljaju, urede, poboljšaju, organizuju, označe i dele fotografije.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Karakteristike uključuju pregled galerije, kreiranje albuma i slanje fotografija.';
+$lang['Generate multiple size images'] = 'Generiši višestruke veličine slika';
+$lang['Groups and users'] = 'Grupe i korisnici';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je podrazumevani menadžer fotografijama na MacOSX. Piwigo izvozni dodatak omogućava Vam da kreirate novi album i da izvezete Vaše fotografije direktno iz iPhoto u Vašu Piwigo foto-galeriju.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na Linux-u, jednostavno instalirajte Shotwell preko Vašeg menadžera paketa i onda aktivirajte Piwigo opciju objavljivanja.';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Trajni-link %s je prethodno korišćen od strane albuma %s. Obrišite ga prvo iz istorije trajnih linkova';
+$lang['Permission granted for groups'] = 'Dozvola pridodata grupama';
+$lang['Permission granted for users'] = 'Dozvola data korisnicima';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo izvozni dodatak za Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo izvozni dodatak za iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo dodatak za objavljivanje za digiKam';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient za Android) je Piwigo klient otvorenog koda (GPL v3) za Adroid platformu.';
+$lang['Select groups...'] = 'Odaberi grupe...';
+$lang['Select users...'] = 'Odaberi korisnike...';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je organizator digitalnih fotografija otvorenog koda za Linux. To je podrazumevani menadžer fotografija u Ubuntu-u i Fedori.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo izvozni dodatak omogućava Vam da kreirate albume i da izvezete fotografije.';
+$lang['There is no group in this gallery.'] = 'Ne postoje grupe u ovoj galeriji';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Da biste izvezli fotografije iz digiKam-a u Piwigo, samo instalirajte digiKam i the Kipi dodatke';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'posetioci moraju biti prijavljeni i imati odgovarajuće dozvole da bi videli ovaj album';
+$lang['custom'] = 'Po izboru';
+$lang['include photos with lower privacy level'] = 'Uključi fotografije sa nižim nivoom privatnosti';
+$lang['No group is permitted to see this private album'] = 'Ni jednoj grupi nije dozvoljeno da vidi ovaj privatni album';
+$lang['Permission management'] = 'Upravljanje dozvolama';
+$lang['Apply watermark if height is bigger than'] = 'Primeni vodeni žig ako je visina veća od';
+$lang['Apply watermark if width is bigger than'] = 'Primeni vodeni žig ako je širina veća od ';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Podrazumevano, interesni centar je postavljen na sredinu fotografije.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Za veličine fotografija sa odsecanjem, kao što je "kvadrat", Piwigo će uraditi najbolje što je moguće da uključi interesni centar.';
+$lang['Opacity'] = 'Neprovidnost';
+$lang['Photo sizes with crop'] = 'Veličina fotografija sa odsecanjem';
+$lang['Select a file'] = 'Odaberite fajl';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Odaberite mišem zonu da bi ste definisali novi interesni centar.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesni centar je najbitnija zona fotografije.';
+$lang['X Position'] = 'X pozicija';
+$lang['X Repeat'] = 'X ponavljanja';
+$lang['Y Position'] = 'Y pozicija';
+$lang['add a new watermark'] = 'dodajte novi vodeni žig';
+$lang['bottom left corner'] = 'donji levi ugao';
+$lang['bottom right corner'] = 'donji desni ugao';
+$lang['middle'] = 'sredina';
+$lang['top left corner'] = 'gornji lefi ugao';
+$lang['top right corner'] = 'gornji desni ugao';
+?>
Index: /tags/2.6.0RC1/language/sh_RS/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/common.lang.php	(revision 25596)
@@ -0,0 +1,407 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Srpski [SR]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=435
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Srpski';
+$lang_info['country'] = 'Srbija';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'sh';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d kategorija obnovljena';
+$lang['%d albums updated'] = '%d kategorije obnovljene';
+$lang['%d comment to validate'] = '%d komentar za overu';
+$lang['%d comments to validate'] = '%d komentari za overu';
+$lang['%d new comment'] = '%d novi komentar';
+$lang['%d new comments'] = '%d novi komentari';
+$lang['%d comment'] = '%d komentar';
+$lang['%d comments'] = '%d komentari';
+$lang['%d hit'] = '%d poseta';
+$lang['%d hits'] = '%d poseta';
+$lang['%d new photo'] = '%d nova slika';
+$lang['%d new photos'] = '%d nove slike';
+$lang['%d new user'] = '%d novi korisnik';
+$lang['%d new users'] = '%d novi korisnici';
+$lang['About'] = 'O...';
+$lang['All tags'] = 'Svi tagovi';
+$lang['Any tag'] = 'Bilo koji tag';
+$lang['At least one listed rule must be satisfied.'] = 'Najmanje jedno od navedenih pravila mora biti zadovoljeno.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Kategorije';
+$lang['Album'] = 'Kategorija';
+$lang['Close this window'] = 'Zatvori prozor';
+$lang['Complete RSS feed (photos, comments)'] = 'Potpuni RSS izvori (slike, komentari)';
+$lang['Confirm Password'] = 'Potvrdi Lozinku';
+$lang['Connection settings'] = 'Podešavanja povezivanja';
+$lang['Login'] = 'Prijava';
+$lang['Contact webmaster'] = 'Pišite webmaster-u';
+$lang['Create a new account'] = 'Napravi novi nalog';
+$lang['Created on'] = 'Napravljen na';
+$lang['Creation date'] = 'Datum izrade';
+$lang['Current password is wrong'] = 'Trenutna lozinka je neispravna';
+$lang['Dimensions'] = 'Veličine';
+$lang['Display'] = 'Prikaz';
+$lang['Each listed rule must be satisfied.'] = 'Svako navedeno pravilo mora biti zadovoljeno.';
+$lang['Email address is missing. Please specify an email address.'] = 'Nedostaje E-mail adresa';
+$lang['Email address'] = 'E-mail adresa';
+$lang['Enter your personnal informations'] = 'Upišite svoje lične podatke';
+$lang['Error sending email'] = 'Greška prilikom slanja e-mail poruke';
+$lang['File name'] = 'Naziv datoteke';
+$lang['File'] = 'Datoteka';
+$lang['Filesize'] = 'Veličina datoteke';
+$lang['Filter and display'] = 'Filter i prikaz';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Zaboravili ste lozinku?';
+$lang['Go through the gallery as a visitor'] = 'Pregledajte galeriju kao posetioc';
+$lang['Help'] = 'Pomoć';
+$lang['Identification'] = 'Prijava';
+$lang['Photos only RSS feed'] = 'RSS izvor samo za slike';
+$lang['Keyword'] = 'Ključna riječ';
+$lang['Links'] = 'Linkovi';
+$lang['N/A'] = 'N/D';
+$lang['New on %s'] = 'Novi na on %s';
+$lang['Notification'] = 'Obaveštenje';
+$lang['Number of items'] = 'Broj stavki';
+$lang['Original dimensions'] = 'Izvorne veličine';
+$lang['Password forgotten'] = 'Zaboravljena lozinka';
+$lang['Password'] = 'Lozinka';
+$lang['Post date'] = 'Datum objave';
+$lang['Posted on'] = 'Objavljeno u';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Brza veza';
+$lang['RSS feed'] = 'RSS izvor';
+$lang['Register'] = 'Upišite se';
+$lang['Registration'] = 'Registracija';
+$lang['Related tags'] = 'Povezani tagovi';
+$lang['Reset'] = 'Poništi';
+$lang['Retrieve password'] = 'Vrati lozinku';
+$lang['Search rules'] = 'Pravila pretrage';
+$lang['Search tags'] = 'Tagovi pretrage';
+$lang['Search'] = 'Pretraživanje';
+$lang['display available tags'] = 'Pogledaj dostupne tagove';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Složeno po';
+$lang['Sort order'] = 'Redosled slaganja';
+$lang['Tag'] = 'Oznaka';
+$lang['Tags'] = 'Tagovi';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS obavijesni izvor omogućava obaveštavanje o novostima sa ovog web mesta : nove slike, obnovljene kategorije, nove komentare. Koristite čitač RSS izvora.';
+$lang['Unknown feed identifier'] = 'Nepoznata oznaka izvora';
+$lang['User comments'] = 'Korisnički komentari';
+$lang['Username'] = 'Korisničko ime';
+$lang['Visits'] = 'Poseta';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Nedelja %d';
+$lang['About Piwigo'] = 'O Piwigo-u';
+$lang['You are not authorized to access the requested page'] = 'Niste ovlašteni za pristup zatraženoj stranici';
+$lang['add this photo to your favorites'] = 'dodaj ovu sliku u omiljene';
+$lang['Administration'] = 'Administracija';
+$lang['all'] = 'sve';
+$lang['ascending'] = 'uzlazno';
+$lang['author(s) : %s'] = 'autor(i) : %s';
+$lang['Expand all albums'] = 'Proširi sve kategorije';
+$lang['posted after %s (%s)'] = 'objavljeno posle %s (%s)';
+$lang['posted before %s (%s)'] = 'objavljeno pre %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'objavljeno između %s (%s) i %s (%s)';
+$lang['posted on %s'] = 'objavljeno na %s';
+$lang['Best rated'] = 'Najbolje ocenjeno';
+$lang['display best rated photos'] = 'prikaz najbolje ocenjenih stavki';
+$lang['Calendar'] = 'Kalendar';
+$lang['All'] = 'Sve';
+$lang['display each day with photos, month per month'] = 'prikaz svakog dana sa slikama, mesec po mesec';
+$lang['View'] = 'Pogledaj';
+$lang['chronology_monthly_calendar'] = 'Mesečni kalendar';
+$lang['chronology_monthly_list'] = 'Mesečni popis';
+$lang['chronology_weekly_list'] = 'Nedeljni popis';
+$lang['Click here if your browser does not automatically forward you'] = 'Kliknite ovde ako niste automatski prebačeni';
+$lang['comment date'] = 'datum komentara';
+$lang['Comment'] = 'Komentar';
+$lang['Your comment has been registered'] = 'Vaš je komentar upisan';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood sistem : molimo sačekajte malo pre objave novog komentara';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Vaš komentar NIJE upisan jer nije prošao pravila overe';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administrator mora odobriti vaš komentar pre objave.';
+$lang['This login is already used by another user'] = 'Ovo korisničko ime se već koristi';
+$lang['Comments'] = 'Komentari';
+$lang['Add a comment'] = 'Dodaj komentar';
+$lang['created after %s (%s)'] = 'napravljen nakon %s (%s)';
+$lang['created before %s (%s)'] = 'napravljen prije %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'napravljen između %s (%s) i %s (%s)';
+$lang['created on %s'] = 'napravljen na %s';
+$lang['Customize'] = 'Podesi';
+$lang['Your Gallery Customization'] = 'Podešavanje Vaše Galerije ';
+$lang['day'][0] = 'Nedelja';
+$lang['day'][1] = 'Ponedjeljak';
+$lang['day'][2] = 'Utorak';
+$lang['day'][3] = 'Sreda';
+$lang['day'][4] = 'Četvrtak';
+$lang['day'][5] = 'Petak';
+$lang['day'][6] = 'Subota';
+$lang['Default'] = 'Podrazumevano';
+$lang['delete this photo from your favorites'] = 'uklonite ovu sliku iz omiljenih';
+$lang['Delete'] = 'Ukloni';
+$lang['descending'] = 'silazno';
+$lang['Download'] = 'Preuzmi';
+$lang['Download this file'] = 'preuzmi ovu sliku';
+$lang['edit'] = 'uredi';
+$lang['wrong date'] = 'pogrešan datum';
+$lang['excluded'] = 'isključeno';
+$lang['Your favorites'] = 'Moji omiljeni';
+$lang['display your favorites photos'] = 'prikaz mojih omiljenih slika';
+$lang['Favorites'] = 'Omiljeni';
+$lang['First'] = 'Prvi';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galerija je zaključana zbog održavanja. Molimo, navratite kasnije.';
+$lang['Page generated in'] = 'Stranica izrađena u ';
+$lang['guest'] = 'gost';
+$lang['Hello'] = 'Pozdrav';
+$lang['available for administrators only'] = 'dostupno samo administratorima';
+$lang['display this album'] = 'prikazuje slike u glavnoj kategoriji';
+$lang['display last user comments'] = 'Pregled zadnjih korisničkih komentara';
+$lang['customize the appareance of the gallery'] = 'podesite izgled vaše galerije';
+$lang['search'] = 'pretraži';
+$lang['Home'] = 'Početna';
+$lang['in this album'] = 'u ovoj kategoriji';
+$lang['in %d sub-album'] = 'u %d podkategoriji';
+$lang['in %d sub-albums'] = 'u %d podkategorijama';
+$lang['included'] = 'uključeno';
+$lang['Invalid password!'] = 'Pogrešna lozinka!';
+$lang['Language']='Jezik';
+$lang['last %d days'] = 'zadnjih %d dana';
+$lang['Last'] = 'Zadnji';
+$lang['Logout'] = 'Odjava';
+$lang['obligatory'] = 'obvezno';
+$lang['Maximum photo height'] = 'Najveća dozvoljena visina slika';
+$lang['Maximum height must be a number superior to 50'] = 'Najveća visina mora biti broj veći od 50';
+$lang['Maximum photo width'] = 'Najveća dozvoljena širina slika';
+$lang['Maximum width must be a number superior to 50'] = 'Najveća širina mora biti broj veći od 50';
+$lang['display a calendar by creation date'] = 'prikaz kalendara po datumu izrade';
+$lang['display all photos in all sub-albums'] = 'prikaz svih stavki u svim podkategorijama';
+$lang['return to normal view mode'] = 'povratak u uobičajeni način pregleda';
+$lang['display a calendar by posted date'] = 'prikaz kalendara po datumu objave';
+$lang['month'][10] = 'Oktobar';
+$lang['month'][11] = 'Novembar';
+$lang['month'][12] = 'Decembar';
+$lang['month'][1] = 'Januar';
+$lang['month'][2] = 'Februar';
+$lang['month'][3] = 'Mart';
+$lang['month'][4] = 'April';
+$lang['month'][5] = 'Maj';
+$lang['month'][6] = 'Jun';
+$lang['month'][7] = 'Jul';
+$lang['month'][8] = 'Avgust';
+$lang['month'][9] = 'Septembar';
+$lang['Most visited'] = 'Najposjećenije';
+$lang['display most visited photos'] = 'prikaz najposjećenijih slika';
+$lang['The number of photos per page must be a not null scalar'] = 'broj slika po stranici mora biti celobrojna vrednost';
+$lang['Number of photos per page'] = 'Broj slika po stranici';
+$lang['Unknown identifier'] = 'Nepoznata oznaka';
+$lang['New password'] = 'Nova lozinka';
+$lang['Rate this photo'] = 'Oceni ovu sliku';
+$lang['Next'] = 'Sledeći';
+$lang['no rate'] = 'bez ocene';
+$lang['Photos posted within the last %d day.'] = 'Stavke objavljene u zadnjem %d danu.';
+$lang['Photos posted within the last %d days.'] = 'Stavke objavljene u zadnjih %d dana.';
+$lang['password updated'] = 'lozinka obnovljena';
+$lang['Recent period must be a positive integer value'] = 'Razdoblje mora biti pozitivna celobrojna vrednost';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'slika';
+$lang['Click on the photo to see it in high definition'] = 'Klikni na sliku za pregled u visokoj rezoluciji';
+$lang['Show file metadata'] = 'Prikaži meta podatke zapisa';
+$lang['Powered by'] = 'Urađeno u';
+$lang['Preferences'] = 'Podešenja';
+$lang['Previous'] = 'Prethodni';
+$lang['Random photos'] = 'Slike po slučajnom izboru';
+$lang['display a set of random photos'] = 'prikaz slika po slučajnom izboru';
+$lang['Recent albums'] = 'Nedavne kategorije';
+$lang['display recently updated albums'] = 'prikaz nedavno obnovljenih kategorija';
+$lang['Recent period'] = 'Nedavno razdoblje';
+$lang['Recent photos'] = 'Nedavne slike';
+$lang['display most recent photos'] = 'prikaz najnovijih slika';
+$lang['Redirection...'] = 'Preusmeravanje...';
+$lang['Please, enter a login'] = 'Molimo, prijavite se';
+$lang['login mustn\'t end with a space character'] = 'prijava ne sme završavati razmakom';
+$lang['login mustn\'t start with a space character'] = 'prijava ne sme počinjati razmakom';
+$lang['this login is already used'] = 'ovo korisničko ime se već koristi';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-mail adresa mora biti oblika xxx@yyy.eee (npr : korisnik@stranica.org)';
+$lang['Auto login'] = 'Upamti me';
+$lang['remove this tag from the list'] = 'ukloni  ovaj tag iz popisa';
+$lang['representative'] = 'predstavnik';
+$lang['Search for Author'] = 'Pretraživanje po Autoru';
+$lang['Search in albums'] = 'Pretraživanje u Kategorijama';
+$lang['Search by date'] = 'Pretraživanje po Datumu';
+$lang['Date'] = 'Datum';
+$lang['End-Date'] = 'Krajnji Datum';
+$lang['Kind of date'] = 'Vrsta datuma';
+$lang['Search for words'] = 'Pretraživanje po rečima';
+$lang['Search for all terms'] = 'Pretraživanje po svim kriterijumima ';
+$lang['Search for any term'] = 'Pretraživanje po bilo kojem kriterijumu';
+$lang['Empty query. No criteria has been entered.'] = 'Prazna pretraga. Nije unešeno ni jedno polje.';
+$lang['Search results'] = 'Rezultati pretraživanja';
+$lang['Search in sub-albums'] = 'Pretraživanje u podkategorijama';
+$lang['searched words : %s'] = 'tražene reči : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'postavi za predstavnika kategorije';
+$lang['Show number of comments'] = 'Prikaži broj komentara';
+$lang['Show number of hits'] = 'Prikaži broj poseta';
+$lang['slideshow'] = 'klizni prikaz';
+$lang['stop the slideshow'] = 'zaustavi klizni prikaz';
+$lang['Specials'] = 'Posebne kategorije';
+$lang['SQL queries in'] = 'SQL upit u ';
+$lang['display only recently posted photos'] = 'prikaz samo nedavno objavljenih slika';
+$lang['return to the display of all photos'] = 'povratak u prikaz svih slika';
+$lang['the beginning'] = 'početak';
+$lang['Thumbnails'] = 'Sličice';
+$lang['Menu'] = 'Izbornik';
+$lang['A comment on your site'] = 'Komentar na Vašem sajtu';
+$lang['today'] = 'danas';
+$lang['Update your rating'] = 'Obnovite svoju ocenu';
+$lang['the username must be given'] = 'mora se upisati korisničko ime';
+$lang['useful when password forgotten'] = 'korisno kada se zaboravi lozinka';
+$lang['Quick search'] = 'Brzo pretraživanje';
+$lang['Connected user: %s'] = 'Povezani korisnik: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Pretraživač: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Komentar: %s';
+$lang['Comment by %s'] = 'Komentarisao-la %s';
+$lang['User: %s'] = 'Korisnik: %s';
+$lang['Email: %s'] = 'E-mail: %s';
+$lang['Admin: %s'] = 'Administrator: %s';
+$lang['Registration of %s'] = 'Prijava od %s';
+$lang['Album: %s'] = 'Kategorija: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Loš status za korisnika "guest", koristi se podrazumevani status. Molimo obavestite webmaster-a.';
+$lang['this email address is already in use'] = 'korisnik već koristi ovu e-mail adresu';
+$lang['Album results for'] = 'Rezultati kategorije za ';
+$lang['Tag results for'] = 'Rezultati tagova za';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Pokreni klizni prikaz';
+$lang['Pause of slideshow'] = 'Zaustavi klizni prikaz';
+$lang['Repeat the slideshow'] = 'Ponovi klizni prikaz';
+$lang['Not repeat the slideshow'] = 'Ne ponavljaj klizni prikaz';
+$lang['Reduce diaporama speed'] = 'Smanji brzinu ';
+$lang['Accelerate diaporama speed'] = 'Povećaj brzinu ';
+$lang['Submit'] = 'Pošalji';
+$lang['Yes'] = 'Da';
+$lang['No'] = 'Ne';
+$lang['%d photo']='%d slika';
+$lang['%d photos']='%d slike';
+$lang['%d photo is also linked to current tags'] = '%d slika takođe povezana sa trenutnim tagovima';
+$lang['%d photos are also linked to current tags'] = '%d slike takođe povezana sa trenutnim tagovima';
+$lang['display photos linked to this tag'] = 'Pregledaj slike povezane samo sa ovim tag-om';
+$lang['photos posted during the last %d days'] = 'slike objavljene tokom zadnjih %d dana';
+$lang['Piwigo Help'] = 'Piwigo Pomoć';
+$lang['Rank'] = 'Redosled';
+$lang['group by letters'] = 'složeno po slovima';
+$lang['letters'] = 'slova';
+$lang['show tag cloud'] = 'prikaži tag oblak';
+$lang['cloud'] = 'oblak';
+$lang['Reset to default values'] = 'Vrati na podrazumevane vrednosti';
+$lang['delete all photos from your favorites'] = 'obriši sve slike iz Omiljeni';
+$lang['Sent by'] = 'Poslao';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies su blokirani ili nisu podržani od Vašeg pretraživača. Morate omogućiti cookies da bi se logovali.';
+$lang['Edit a comment'] = 'Uredi komentar';
+$lang['Are you sure?'] = 'Jeste li sigurni?';
+$lang['(!) This comment requires validation'] = '(!) Ovaj komentar zahteva overu';
+$lang['Welcome'] = 'Dobrodošli';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Dobrodošli u Vašu Piwigo foto galeriju!';
+$lang['... or browse your empty gallery'] = '... ili pretraži Vašu praznu galeriju';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ili isključite ovu poruku, uradiću to na svoj način';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Zdravo %s, Vaša Piwigo foto galerija je prazna!';
+$lang['I want to add photos'] = 'Želim da dodam fotografije';
+$lang['Manage this user comment: %s'] = 'Uredi komentare ovog korisnika: %s';
+$lang['This author modified following comment:'] = 'Ovaj autor je menjao tekući komentar:';
+$lang['This author removed the comment with id %d'] = 'Ovaj autor je uklonio komentar sa identifikacijom %d';
+$lang['html tags are not allowed in login'] = 'html oznake nisu dozvoljene prilikom logovanja';
+$lang['%d rates'] = '%d ocene';
+$lang['Change my password'] = 'Promena lozinke';
+$lang['Check your email for the confirmation link'] = 'Proverite da li vam je stigao email sa potvrdnim linkom';
+$lang['Desktop'] = 'Stoni';
+$lang['Edit'] = 'Uređivanje';
+$lang['Enter your new password below.'] = 'Unesite novu lozinku.';
+$lang['EXIF Metadata'] = 'EXIF Metapodatak';
+$lang['Hello %s,'] = 'Zdravo %s,';
+$lang['Here are your connection settings'] = 'Ovde su vaša podešavanja veze';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ukoliko je greška, samo ignorišite ovaj email i ništa se neće desiti.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ako mislite da ste greškom dobili ovaj email, molimo da nas kontaktirate na %s';
+$lang['Invalid key'] = 'Neispravan ključ';
+$lang['Invalid username or email'] = 'Neispravno korisničko ime ili email';
+$lang['IPTC Metadata'] = 'IPTC Metapodatak';
+$lang['large'] = 'Veliko';
+$lang['medium'] = 'Srednje';
+$lang['Mobile'] = 'Mobilni';
+$lang['Original'] = 'Original';
+$lang['Password reset is not allowed for this user'] = 'Reset lozinke nije dozvoljen za ovog korisnika';
+$lang['Password Reset'] = 'Reset lozinke';
+$lang['Password: %s'] = 'Lozinka: %s';
+$lang['Photo sizes'] = 'Veličine fotografija';
+$lang['Please enter your username or email address.'] = 'Unesite Vaše korisničko ime ili email adresu.';
+$lang['Rating score'] = 'Rezultat ocenjivanja';
+$lang['Return to home page'] = 'Povratak na početnu stranu';
+$lang['Send my connection settings by email'] = 'Pošalji moja podešavanja veze email-om';
+$lang['Show latest comments first'] = 'Prikaži prvo poslednje komentare';
+$lang['Show oldest comments first'] = 'Prikaži prvo najstarije komentare';
+$lang['small'] = 'Malo';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Neko je zatražio reset lozinke korisnika';
+$lang['square'] = 'Kvadrat';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Uspešno ste se registrovali, uskoro ćete dobiti email sa podešavanjima veze. Dobrodošli!';
+$lang['Thank you for registering at %s!'] = 'Hvala na registrovavnju za %s!';
+$lang['The passwords do not match'] = 'Lozinke se ne poklapaju';
+$lang['thumb'] = 'Palac';
+$lang['To reset your password, visit the following address:'] = 'Da biste resetovali lozinku, posetite sledeću adresu:';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Korisnik "%s" nema email adresu, reset lozinke nije moguć';
+$lang['Username "%s" on gallery %s'] = 'Korisničko ime "%s" u galeriji %s';
+$lang['Username modification'] = 'Promena korisničkog imena';
+$lang['Username or email'] = 'Korisničko ime ili email';
+$lang['Username: %s'] = 'Korisničko ime: %s';
+$lang['View in'] = 'Pogled u';
+$lang['xlarge'] = 'Ekstra veliko';
+$lang['xxlarge'] = 'Ekstra ekstra veliko';
+$lang['You will receive a link to create a new password via email.'] = 'Dobićete email-om link za kreiranje nove lozinke.';
+$lang['Your password has been reset'] = 'Vaša lozinka je resetovana';
+$lang['Your username has been successfully changed to : %s'] = 'Vaše korisničko ime je uspešno promenjeno na: %s';
+$lang['2small'] = 'XXS-sićušan';
+$lang['xsmall'] = 'XS-ekstra mali';
+$lang['Date created, new &rarr; old'] = 'Datum kreiranja, novo &rarr; staro';
+$lang['Date created, old &rarr; new'] = 'Datum kreiranja, staro &rarr; novo';
+$lang['Date posted, new &rarr; old'] = 'Datum objavljivanja, novo &rarr; staro';
+$lang['Date posted, old &rarr; new'] = 'Datum objavljivanja, staro &rarr; novo';
+$lang['File name, A &rarr; Z'] = 'Ime fajla, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Ime fajla, Z &rarr; A';
+$lang['Manual sort order'] = 'Ručno sortiran poredak';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Brojni identifikator, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Brojni identifikator, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Naslov fotografije, A &rarr; Z ';
+$lang['Photo title, Z &rarr; A'] = 'Naslov fotografije, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Ocena, visoka &rarr; niska';
+$lang['Rating score, low &rarr; high'] = 'Ocena, niska &rarr; visoka';
+$lang['Visits, high &rarr; low'] = 'Posete, više &rarr; manje';
+$lang['Visits, low &rarr; high'] = 'Posete, manje &rarr; više';
+$lang['%d rate'] = '%d ocena';
+$lang['Password is missing. Please enter the password.'] = 'Lozinka nedostaje. Molim unesite lozinku.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Potvrda lozinke nedostaje. Molim potvrdite izabranu lozinku.';
+?>
Index: /tags/2.6.0RC1/language/sh_RS/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,129 @@
+<h2>Uredi album</h2>
+
+<h3>Informacije</h3>
+
+<ul>
+
+  <li><strong>ime</strong>: preimenuj album (virtuelno preimenovanje u slučaju fizičkog albuma).</li>
+
+  <li><strong>opis</strong>: kratak tekst sa op&scaron;tim podacima o sadržaju, ovaj tekst će biti prikazan na dnu strane sličica.</li>
+
+</ul>
+
+<h3>Premesti</h3>
+
+<p>Ako je album virtuelni, možete ga pomeriti. Pomeranje albuma znači promenu njegovog roditeljskog albuma.</p>
+
+<h3>Opcije</h3>
+
+<ul>
+
+  <li><strong>Tip pristuma</strong>: Upravljanje dozvolama. Ako napravite privatni album,
+  svi njegovi podređeni albumi postaju privatni. Ako napravite album javnim, svi njegovi nadređeni albumi postaju javni.</li>
+
+  <li><strong>Zaključaj</strong>: The album and its sub-albums will
+  be temporary disabled for maintenance.</li>
+
+  <li><strong>Comments</strong>: Authorize users to comment photos of this
+  album.</li>
+
+</ul>
+
+<p>You can also manage these options on the "Properties"
+management screen (screens <span
+class="pwgScreen">Comments</span>, <span class="pwgScreen">Lock</span>,
+<span class="pwgScreen">Public/Private</span>, <span
+class="pwgScreen">Representative</span> available from <span
+class="pwgScreen">Administration &raquo; Albums &raquo; Properties</span>).</p>
+
+<h3>Sort order</h3>
+
+<p>Use the default images sort order.</p>
+
+<p>Indicate whether this sort order will apply to subalbums also.</p>
+
+<p>Select specific sorting criteria to be used with this album.</p>
+<ul>
+<li><strong>Creation date</strong>: Photo shooting date</li>
+<li><strong>Post date</strong>: Synchronization date</li>
+<li><strong>Average rate (*)</strong>: Average rate could be changed by the visitor rating</li>
+<li><strong>Most visited (*)</strong>: The current visit might change the most visited order</li>
+<li><strong>File name</strong>: Name given in information field</li>
+<li><strong>Id</strong>: Internal Id (recent categories have an higher id than previous ones.</li>
+
+</ul>
+<p><strong>(*)</strong>Warning: Be sure to test these sort orders by yourself as they can give unexpected results.</p>
+
+
+<h3>Representant</h3>
+
+<p>The album representative is the thumbnail displayed on the main page (<span class="pwgScreen">category.php</span>) to represent
+the album when
+it contains only sub-albums and no direct photo (just as the root album).</p>
+photo of a album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: one of the action buttons let you set the current photo as the representative for the
+  displayed album. This button is available only for administrators.</li>
+
+  <li><span class="pwgScreen">Modify informations about a photo</span> in
+  administration. This screen can be reached from <span
+  class="pwgScreen">picture.php</span> or <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>. See the help of this screen for
+  details.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Properties,
+  Representative</span>. See the help of this screen for details.</li>
+
+  <li><span class="pwgScreen">Edit album</span> (the present screen).</li>
+
+</ul>
+
+<p>The choice of a representative depends on the 
+<code>allow_random_representative</code> configuration parameter (see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In default mode (<code>allow_random_representative</code> set to false),
+each album containing at least one element is represented by a fixed
+element. Once set (at album creation), the representative changes only
+when an administrator ask for it. If the representative is not appropriate,
+you can ask to <strong>Find a new representant by random</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to <span class="pwgScreen">Modify
+informations about a photo</span> screen. The only option on the current screen
+is the <strong>Delete representant</strong> button.</p>
+
+<h3>Link all album photos to a new album</h3>
+
+<ul>
+
+<li><strong>Virtual album name</strong>: Name of the new album to be created, 
+all photos of the current category will be linked to the new one.</li>
+
+<li><strong>Parent album</strong>: Where the new album will be, 
+leave empty to create it at root.</li>
+
+</ul>
+
+<h3>Link all album photos to existing albums</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Choose the destination album.</li>
+
+</ul>
+
+<h3>Send an information email to group members</h3>
+
+<ul>
+
+<li><strong>Group</strong>: recipients group</li>
+
+<li><strong>Mail content</strong>: Free text to send to them.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/sh_RS/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,25 @@
+<p>Nekoliko načina da dodate Vaše slike u galeriju:</p>
+
+<ul>
+  <li><strong>Direktno slanje</strong> u Vašem web pretraživaču je najjednostavniji i najdirektniji način. Zavisi od mogućnosti Vašeg web pretraživača
+  i Vašeg web servera. Za veliki broj fotografija ili u slučaju da imate neki problem,
+  druge metode Vas čekaju!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Idi na Direktno slanje </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> je aplikacija za računar, koju trebate da instalirate. Pokupite i ubacite slike u pLoader prozor, kliknite na <em>"Upload to Piwigo"</em> i pustite pLoader da uradi posao. Možete naći drugu desktop aplikaciju kao<strong>WinToPiwigo</strong> ili <strong>Digikam</strong> dodatak za slanje na Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Idi na pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP prenos</strong>je najčešće preporučen način da dodate
+  jako veliku kolekciju fotografija sa najmanjim brojem klikova. Sledite uputstvo da biste pripremili Vaše fotografije. FTP metoda Vam omogućava kontrolu
+  organizacije Vaših fotografija na severu.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Idi na FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/sh_RS/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sh_RS/index.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sh_RS/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Instalacija';
+$lang['Basic configuration'] = 'Osnovna podešenja';
+$lang['Default gallery language'] = 'Podrazumevani jezik galerije';
+$lang['Database configuration'] = 'Podešavanje baze';
+$lang['Admin configuration'] = 'Administratorska podešenja';
+$lang['Start Install'] = 'Pokreni instalaciju';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Bice prikazano posetiocima. Neophodno je za administraciju stranice';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Konekcija na server uspešna, ali konecija na bazu je nemoguca';
+$lang['Can\'t connect to server'] = 'Nemoguce povezivanje na server';
+$lang['Host'] = 'Host';
+$lang['User'] = 'Korisnik';
+$lang['user login given by your host provider'] = 'korisnicko ime dat od strane Vašeg host distributera';
+$lang['user password given by your host provider'] = 'korisnicka lozinka data od strane Vašeg host distributera ';
+$lang['Database name'] = 'Ime baze';
+$lang['also given by your host provider'] = 'takode dato od Vašeg Host distributera';
+$lang['Database table prefix'] = 'Prefix tabele baze';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'ime tabele baze will bice prefix sa njim (omogucava da upravljate bolje Vašuim tabelama)';
+$lang['enter a login for webmaster'] = 'Unesi pristupne podatke za webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'pristupni podaci za webmastera ne mogu sadržati znake \' ili "';
+$lang['please enter your password again'] = 'molim unesite Vašu lozinku ponovo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Sacuvajte u tajnosti, omogucava pristup administratorskom delu';
+$lang['Password [confirm]'] = 'Lozinka[potvrdi]';
+$lang['verification'] = 'Provera';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Potrebna Vam je pomoc? Pitajte na  <a href="%s">Piwigo tabli za poruke</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Posetioci ce biti u mogucnosti da koriste ovaj mail da kontaktiraju administratora stranice';
+$lang['PHP 5 is required'] = 'PHP 5 je neophodan';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Izgleda da Vaš webhost trenutno koristi PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo može pokušati da promeni Vašu konfiguraciju na PHP 5 kreiranjem ili menjanjem .htaccess datoteke.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Imajte u vidu da možete sami izmeniti Vašu konfiguraciju restartovati Piwigo posle toga.';
+$lang['Try to configure PHP 5'] = 'Pokušajte da podestite PHP 5';
+$lang['Sorry!'] = 'Žao nam je!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo wnije uspeo da podesi PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Trebalo bi da se obartite podršci Vašeg hosting provajdera za uputstvo kako da promenite na PHP 5 sami.';
+$lang['Hope to see you back soon.'] = 'Nadamo se da se uskoro vidimo.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Cestitamo, Piwigo instalacija je završena';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternativno rešenje je da kopirate tekst iz kutije iznad i nalepite u datoteku "local/config/database.inc.php" (Upozorenje : database.inc.php mora sadržati samo tekst iz kutije, bez linije ili praznih karaktera)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Kreiranje konfiguracione datoteke local/config/database.inc.php neuspešno.';
+$lang['Download the config file'] = 'Snimi na racunar konfiguracionu datoteku';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Možete snimiti na racunar konfiguracionu datoteku i poslati je na local/config direktorijum Vaše instalacije.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ne oklevajte da zatražite pomoć na našem forumu oko bilo čega: %s';
+$lang['Just another Piwigo gallery'] = 'Još jedna Piwigo galerija';
+$lang['Welcome to my photo gallery'] = 'Dobrodošli u moju foto galeriju';
+$lang['Welcome to your new installation of Piwigo!'] = 'Dobrodošli na Vašu novu instalaciju Piwigo-a!';
+?>
Index: /tags/2.6.0RC1/language/sh_RS/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Srpski [SR]
Index: /tags/2.6.0RC1/language/sh_RS/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sh_RS/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sh_RS/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Nadogradnja";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Ova stranica predlaže nadogradnju baze sa Piwigo stare verzije na novu.
+Asistent nadogradnje procenjuje da trenutno koristite <strong>izdanje %s</strong> (ili ekvivalentnu).";
+$lang['Upgrade from version %s to %s'] = "Nadogradnja sa verzije %s na %s";
+$lang['Statistics'] = "Statistika";
+$lang['total upgrade time'] = "ukupno vreme nadogradnje";
+$lang['total SQL time'] = "ukupno SQL vreme";
+$lang['SQL queries'] = "SQL upiti";
+$lang['Upgrade informations'] = "Informacije o nadogradnji";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Izvršiti proveru održavanja u [Administracija>Alati>Održavanje] ako naiđšete na neki problem.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Kao meru predostrožnost, dati dodaci su deaktivirani. Morate proveriti za nadogradnju dodataka pre nego ih ponovo aktivirate :";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Samo administrator može da pokrene nadogradnju: prijavite se ispod.";
+$lang['You do not have access rights to run upgrade'] = "Nemate pristupna prava da pokrenete nadogradnju";
+$lang['All sub-albums of private albums become private'] = "Sve podkategorije privatnih kategorija postaju privatne";
+$lang['User permissions and group permissions have been erased'] = "Korisničke i grupne dozvole su obrisane";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Samo prefix za povezne sličice i webmaster e-mail adresa su sačuvane iz prethodne konfiguracije";
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Iz predustrožnosti, sledeće teme su deaktivirane. Proverite nadogradnje tema pre nego što ih reaktivirate:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'U <i>%s</i>, pre <b>?></b>, dodajte:';
+?>
Index: /tags/2.6.0RC1/language/sk_SK/about.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/about.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Táto web fotogaléria je založená na aplikáci Piwigo.</p>
+
+<p>Piwigo je softvér fotogalérie pre web vytvorený aktívnou komunitou používateľov a vývojárov. Rozšírenia a doplnky robia Piwigo jednoducho prispôsobiteľné. Zásadná výhoda nakoniec: Piwigo je bezplatné a opensource.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Navštívte Piwigo web stránky</a></p>
+
+<p>Slovenské Piwigo udržuje:
+
+	<ul>
+        <li><a href="http://piwigo.org/forum/profile.php?id=9968">Jozef Kaffka</a></li>
+  </ul></p>
Index: /tags/2.6.0RC1/language/sk_SK/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/admin.lang.php	(revision 25596)
@@ -0,0 +1,976 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d spojenie';
+$lang['%d associations'] = '%d spojení';
+$lang['%d album including'] = '%d album obsahujúci';
+$lang['%d albums including'] = '%d albumy obsahujúce';
+$lang['%d physical'] = '%d fyzická';
+$lang[' and %d virtual'] = 'a %d virtuálna';
+$lang['%d album moved'] = '%d album presunutý';
+$lang['%d albums moved'] = '%d albumov presunutých';
+$lang['%d group'] = '%d skupina';
+$lang['%d groups'] = '%d skupín';
+$lang['%d member'] = '%d účastník';
+$lang['%d members'] = '%d účastníkov';
+$lang['%d tag'] = '%d kľúčové slovo';
+$lang['%d tags'] = '%d kľúčových slov';
+$lang['%d user comment rejected'] = '%d komentár používateľa odmietnutý';
+$lang['%d user comments rejected'] = '%d komentárov používateľov odmietnutých';
+$lang['%d user comment validated'] = '%d komentár používateľa schválený';
+$lang['%d user comments validated'] = '%d komentárov používateľov schválených';
+$lang['%d user deleted'] = '%d používateľ zmazaný';
+$lang['%d users deleted'] = '%d používateľov zmazaných';
+$lang['%d user'] = '%d používateľ';
+$lang['%d users'] = '%d používateľov';
+$lang['%d waiting for validation'] = '%d čaká na schválenie';
+$lang['Actions'] = 'Akcia';
+$lang['Activate'] = 'Aktivovať';
+$lang['Add/delete a permalink'] = 'Pridať/odobrať pernamentný odkaz';
+$lang['Add a tag'] = 'Pridať kľúčové slovo';
+$lang['Add a user'] = 'Pridat používateľa';
+$lang['Add group'] = 'Pridať skupinu';
+$lang['Add'] = 'Pridať';
+$lang['Allow user registration'] = 'Povoliť registráciu používateľa';
+$lang['Apply to sub-albums'] = 'Použiť na podalbumy';
+$lang['Associated'] = 'Priradené';
+$lang['Caddie management'] = 'Správa košíku';
+$lang['Caddie'] = 'Košík';
+$lang['Albums authorized thanks to group associations'] = 'Albumy schválené vďaka skupinovým spojeniam';
+$lang['Album manual order was saved'] = 'Manuálne radenie albumov bolo schválené';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Zistenie možnosti aktualizácie sa nepodarilo';
+$lang['Check for upgrade'] = 'Zistiť možnosť aktualizácie';
+$lang['Comments for all'] = 'Komentáre pre všetkých';
+$lang['Current name'] = 'Súčasný názov';
+$lang['Database'] = 'Databáza';
+$lang['Deactivate'] = 'Deaktivovať';
+$lang['Delete Representant'] = 'Zmazať ukážkovú fotografiu';
+$lang['Delete selected tags'] = 'Zmazať vybrané kľúčové slová';
+$lang['Delete selected users'] = 'Zmazať vybraných používateľov';
+$lang['Deletions'] = 'Zmazanie';
+$lang['Deny selected groups'] = 'Zakázať vybraným skupinám';
+$lang['Deny selected users'] = 'Zakázať vybraným používateľom';
+$lang['Description'] = 'Popis';
+$lang['Display options'] = 'Nastavenie zobrazenia';
+$lang['Dissociated'] = 'Väzba zrušená';
+$lang['Does not represent'] = 'Nereprezentuje';
+$lang['Edit selected tags'] = 'Upraviť vybrané kľúčové slová';
+$lang['Edit tags'] = 'Upraviť kľúčové slová';
+$lang['Email admins when a new user registers'] = 'Poslať e-mail administrátorom pri registrácii nového používateľa';
+$lang['Email admins when a valid comment is entered'] = 'Poslať e-mail administrátorom pri vložení nového komentára';
+$lang['Email admins when a comment requires validation'] = 'Poslať e-mail administrátorom pri vložení nového komentára vyžadujúceho schválenie.';
+$lang['Environment'] = 'Prostredie';
+$lang['Form'] = 'Formulár';
+$lang['Gallery title'] = 'Názov galérie';
+$lang['Grant selected groups'] = 'Povoliť vybrané skupiny';
+$lang['Grant selected users'] = 'Povoliť vybraných používateľov';
+$lang['Group name'] = 'Meno skupiny';
+$lang['Groups'] = 'Skupiny';
+$lang['Guests'] = 'Hostia';
+$lang['History'] = 'História';
+$lang['Informations'] = 'Informácie';
+$lang['Install'] = 'Inštalovať';
+$lang['Link all album photos to a new album'] = 'Napojiť všetky položky na nový album';
+$lang['Link all album photos to some existing albums'] = 'Napojiť všetky položky na niektoré existujúce albumy';
+$lang['Linked albums'] = 'Napojené albumy';
+$lang['Lock gallery'] = 'Zamknúť galériu';
+$lang['Maintenance'] = 'Údržba';
+$lang['Edit album permissions'] = 'Nastaviť práva pre album';
+$lang['Manage permissions for group "%s"'] = 'Nastaviť práva pre skupinu "%s"';
+$lang['Manage permissions for user "%s"'] = 'Nastaviť práva pre používateľa "%s"';
+$lang['Manage tags'] = 'Správa kľúčových slov';
+$lang['Members'] = 'Členovia';
+$lang['Metadata synchronized from file'] = 'Metadata synchronizované zo súboru';
+$lang['Move albums'] = 'Presunúť albumy';
+$lang['Move'] = 'Presunúť';
+$lang['Name'] = 'Meno';
+$lang['New name'] = 'Nové meno';
+$lang['New parent album'] = 'Nový rodičovský album';
+$lang['New tag'] = 'Nové kľúčové slovo';
+$lang['Number of comments per page'] = 'Počet komentárov na stránke';
+$lang['Number of rates'] = 'Počet hodnotení';
+$lang['Number of thumbnails to create'] = 'Počet náhľadov k vytvoreniu';
+$lang['Only private albums are listed'] = 'Sú zobrazené len súkromné albumy';
+$lang['Operating system'] = 'Operačný systém';
+$lang['Options'] = 'Nastavenia';
+$lang['Other private albums'] = 'Ďalšie súkromné albumy';
+$lang['Page banner'] = 'Banner stránky';
+$lang['Parent album'] = 'Rodičovský album';
+$lang['Path'] = 'Cesta';
+$lang['Permalink'] = 'Pernamentné spojenie';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Pernamentné spojenie %s bolo predtým použité albumom %s. Najprv zmažte z histórie spojení.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Permanentné spojenie musí byť zložené zo znakov a-z, A-Z, 0-9, "-", "_" alebo "/". Nie je možné použiť len číslo alebo číslo nasledované "-"';
+$lang['Permalink %s is already used by album %s'] = 'Pernamentné spojenie je už využívané albumom %s';
+$lang['Permalink history'] = 'História permanentného spojenia';
+$lang['Permalinks'] = 'Permanentné spojenie';
+$lang['Permission denied'] = 'Prístup zamietnutý';
+$lang['Permission granted thanks to a group'] = 'Prístup povolený vďaka skupine';
+$lang['Permission granted'] = 'Prístup povolený';
+$lang['Photo informations updated'] = 'Informácie o fotografii aktualizované';
+$lang['Plugins'] = 'Doplnky';
+$lang['Position'] = 'Pozícia';
+$lang['Preferences'] = 'Nastavenia';
+$lang['Properties'] = 'Vlastnosti';
+$lang['Random photo'] = 'Náhodná fotografia';
+$lang['Rate date'] = 'Dátum hodnotenia';
+$lang['Rating by guests'] = 'Hodnotenie hosťami';
+$lang['Rating'] = 'Hodnotenie';
+$lang['Reject'] = 'Zamietnuť';
+$lang['Representant'] = 'Ukážkové';
+$lang['Representation of albums'] = 'Reprezentatívna fotografia pre albumy';
+$lang['Representative'] = 'Ukážková fotografia';
+$lang['Represents'] = 'Ukážkové fotografie';
+$lang['Save order'] = 'Uložiť poradie';
+$lang['Save to permalink history'] = 'Uložiť do histórie permanentného spojenia';
+$lang['Select at least one album'] = 'Je nutné zvoliť aspoň jeden album';
+$lang['Select at least one photo'] = 'Je nutné zvoliť aspoň jednu fotografiu';
+$lang['Select at least one user'] = 'Je nutné zvoliť aspoň jedného používateľa';
+$lang['Show info'] = 'Zobraziť informácie';
+$lang['Site manager'] = 'Správca stránky';
+$lang['Status'] = 'Stav';
+$lang['Statistics'] = 'Štatistiky';
+$lang['Storage album'] = 'Album umiestnení';
+$lang['Sum of rates'] = 'Sumarizácia hodnotení';
+$lang['Tag "%s" already exists'] = 'Kľúčové slovo "%" už existuje';
+$lang['Tag "%s" was added'] = '"%" kľúčové slovo bolo pridané';
+$lang['Tag selection'] = 'Výber kľúčového slova';
+$lang['The %d following tags were deleted'] = 'Nasledujúcích %d kľúčových slov bolo odstránených';
+$lang['Unable to check for upgrade.'] = 'Nie je možné skontrolovať aktualizácie.';
+$lang['Uninstall'] = 'Odinštalovať';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Použiť východzie radenie (definované v konfiguračnom súbore)';
+$lang['User comments validation'] = 'Schválenie komentárov používateľa';
+$lang['Users'] = 'Používatelia';
+$lang['Validate'] = 'Schváliť';
+$lang['Validation'] = 'Schválenie';
+$lang['Version'] = 'Verzia';
+$lang['Virtual albums to move'] = 'Virtuálne albumy k presunutiu';
+$lang['Virtual album name'] = 'Názov virtuálneho albumu';
+$lang['Webmaster cannot be deleted'] = 'Administrátor nemôže byť zmazaný';
+$lang['You are running on development sources, no check possible.'] = 'Sú používané vývojové zdrojové kódy, zistenie nie je možné.';
+$lang['You cannot delete your account'] = 'Nemôžete zmazať svoj účet';
+$lang['You cannot move an album in its own sub album'] = 'Nie je možné presunúť album do jeho vlastného podalbumu';
+$lang['You need to confirm deletion'] = 'Je nutné potvrdiť vymazanie';
+$lang['Associate to album'] = 'priradiť k albumu';
+$lang['associate to group'] = 'priradiť ku skupine';
+$lang['Authorized'] = 'Autorizované';
+$lang['Add a virtual album'] = 'Pridať virtuálny album';
+$lang['Authorize users to add comments on selected albums'] = 'Povoliť používateľom komentovať vybrané albumy';
+$lang['The name of an album must not be empty'] = 'Meno albumu nesmie byť prázdne';
+$lang['Lock albums'] = 'Zamknúť albumy';
+$lang['Private'] = 'Súkromný album';
+$lang['Public'] = 'Verejný album';
+$lang['Find a new representant by random'] = 'Nájsť ukážkovú fotografiu pomocou náhodného výberu';
+$lang['Public / Private'] = 'Verejná / Súkromná';
+$lang['Manage authorizations for selected albums'] = 'Nastaviť oprávnenie pre vybrané albumy';
+$lang['Virtual album added'] = 'Virtuálny album pridaný';
+$lang['Virtual album deleted'] = 'Virtuálny album zmazaný';
+$lang['Access type'] = 'Druh prístupu';
+$lang['Information data registered in database'] = 'Data boli uložené do databázy';
+$lang['Default display'] = 'Východzie zobrazenie';
+$lang['The gallery URL is not valid.'] = 'URL galérie nie je platné';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Počet komentárov na stránku musí byť číslo medzi 5 a 50 vrátane';
+$lang['Configuration'] = 'Konfigurácia';
+$lang['confirm'] = 'potvrdiť';
+$lang['Date'] = 'Dátum';
+$lang['delete album'] = 'vymazať album';
+$lang['Dissociate from album'] = 'oddeliť z albumu';
+$lang['dissociate from group'] = 'oddeliť od skupiny';
+$lang['Album updated successfully'] = 'Informácie o albume boli úspěšne aktualizované.';
+$lang['photos per page'] = 'položiek na stránke';
+$lang['High definition enabled'] = 'Vysoké rozlíšenie povolené';
+$lang['File'] = 'Súbor';
+$lang['first photo added on %s'] = 'prvá položka pridaná k %s';
+$lang['Forbidden'] = 'Zakázané';
+$lang['global mode'] = 'viac naraz';
+$lang['group "%s" added'] = 'skupina "%s" pridaná';
+$lang['group "%s" deleted'] = 'skupina "%s" vymazaná';
+$lang['group "%s" updated'] = 'skupina "%s" aktualizovaná';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Názov skupiny nesmie obsahovať " alebo \' alebo byť prázdny.';
+$lang['This name is already used by another group.'] = 'Toto meno je už používané pre inú skupinu.';
+$lang['High definition'] = 'Vysoké rozlíšenie';
+$lang['jump to album'] = 'Prejsť do albumu';
+$lang['jump to photo'] = 'prejsť na obrázok';
+$lang['leave'] = 'ponechať';
+$lang['Lock'] = 'Zamknúť';
+$lang['Locked'] = 'Uzamknuté';
+$lang['manage album photos'] = 'Spravovať položky albumu';
+$lang['manage sub-albums'] = 'Spravovať položky podalbumov';
+$lang['Manage'] = 'Správa';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vykonávanie operácie prekročilo povolený čas, spracovanie musí pokračovať [zostávajúci čas: %d sekundu].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vykonávanie prekročilo maximálny čas, spracovanie musí pokračovať [zostávajúci čas: %d sekúnd].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Nastavený čas pre zobrazenie zoznamu používateľov bol prekročený. Ďalší používatelia nebudú zobrazení.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Nastavený čas pre odoslanie správy bol prekročený. Ďalšie správy nebudú odoslané.';
+$lang['To send ?'] = 'Odoslať?';
+$lang['Last send'] = 'Naposledy odoslané';
+$lang['User'] = 'Používateľ';
+$lang['See you soon,'] = 'Dovidenia';
+$lang['Go to'] = 'Prejsť na';
+$lang['Hello'] = 'Dobrý deň ';
+$lang['New photos were added'] = 'Boli pridané nové fotografie';
+$lang['on'] = ' v ';
+$lang['between'] = 'medzi ';
+$lang['and'] = ' a ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster Vás prihlásil k odberu noviniek e-mailom.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Prihlásenie k odberu noviniek e-mailom prebehlo úspešne.';
+$lang['To subscribe'] = 'Pre prihlásenie kliknite na %s .';
+$lang['If you encounter problems or have any question, please send a message to'] = 'V prípade problémov alebo otázok kontaktujte ';
+$lang['[NBM] Problems or questions'] = '[NBM] Problémy alebo otázky';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster Vás odhlásil z odberu noviniek e-mailom.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Odhlásenie z odberu noviniek e-mailom prebehlo úspešne.';
+$lang[', click on'] = ', kliknite na ';
+$lang['To unsubscribe'] = 'Pre odhlásenie kliknite na %s .';
+$lang['With blank value, gallery title will be used'] = 'Pokiaľ nie je zadané, použije sa názov galérie';
+$lang['Notification'] = 'Oznámenie';
+$lang['Error when sending email to %s [%s].'] = 'Chyba pri odosielaní správy príjemcovi %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Správa odoslaná príjemcovi %s [%s].';
+$lang['%d mail was sent.'] = '%d správa odoslaná.';
+$lang['%d mails were sent.'] = '%d správ odoslaných.';
+$lang['%d mail was not sent.'] = '%d správa nebola odoslaná.';
+$lang['%d mails were not sent.'] = '%d správ nebolo odoslaných.';
+$lang['No mail to send.'] = 'Žiadna správa k odoslaniu.';
+$lang['There is no available subscribers to mail.'] = 'Nie sú žiadni odberatelia prihlásení pre príjem správy.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Prihlásení odberatelia môžu byť zobrazení len ak existujú novinky k upozorneniu.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Táto záložka sa zobrazuje len administrátorom.';
+$lang['No user to send notifications by mail.'] = 'Nebol nájdený žiaden používateľ pre odoberanie noviniek e-mailom.';
+$lang['New photos added'] = 'Nové položky boli pridané';
+$lang['Subscribe to notification by mail'] = 'Prihlásiť k odberu novinek e-mailom';
+$lang['Unsubscribe from notification by mail'] = 'Odhlásiť z odberu noviniek e-mailom';
+$lang['Parameter'] = 'Parameter';
+$lang['Continue processing treatment'] = 'Pokračovať v údržbe';
+$lang['Complementary mail content'] = 'Doplnkový obsah správy';
+$lang['Add detailed content'] = 'Odoslať obsah';
+$lang['Send mail as'] = 'Odoslať správu ako';
+$lang['Send mail to users'] = 'Odoslať e-mail používateľom';
+$lang['Send'] = 'Odoslať';
+$lang['Subscribed'] = 'Prihlásení používatelia';
+$lang['Subscribe'] = 'Prihlásiť';
+$lang['Parameters'] = 'Parametre';
+$lang['Select recipients'] = 'Zvoľte príjemcov';
+$lang['Subscribe/unsubscribe users'] = 'Prihlásiť/odhlásiť používateľov';
+$lang['Unsubscribed'] = 'Neprihlásení používatelia';
+$lang['%d parameter was updated.'] = '%d parameter aktualizovaný.';
+$lang['%d parameters were updated.'] = '%d parametrov aktualizovaných.';
+$lang['%d user was not updated.'] = '%d používateľ nebyl aktualizovaný.';
+$lang['%d users were not updated.'] = '%d používateľov nebolo aktualizovaných.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Používateľ %s [%s] bol odhlásený z odberu noviniek e-mailom.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Používateľ %s [%s] bol prihlásený k odoberaniu noviniek e-mailom.';
+$lang['%d user was updated.'] = '%d používateľ aktualizovaný.';
+$lang['%d users were updated.'] = '%d používateľov aktualizovaných.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Používateľ %s [%s] nebol odobraný zo zoznamu prihlásených k odoberaniu noviniek.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Používateľ %s [%s] nebol pridaný do zoznamu prihlásených k odoberaniu noviniek.';
+$lang['User %s [%s] added.'] = 'Používateľ %s [%s] pridaný.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Upozornenie: prihlásenie alebo odhlásenie má za následok odoslanie e-mailov používateľom';
+$lang['Send mail on HTML format'] = 'Odosielať správy v HTML formáte';
+$lang['Include display of recent photos grouped by dates'] = 'Zahrnúť novú skupinu fotografií podľa dátumu';
+$lang['Available only with HTML format'] = 'Dostupné len pre správy vo formáte HTML';
+$lang['no write access'] = 'nemáte prístupové práva';
+$lang['Permissions'] = 'Oprávnenia';
+$lang['private'] = 'súkromé';
+$lang['public'] = 'verejné';
+$lang['Purge never used notification feeds'] = 'Previesť údržbu nepoužitých RSS vlákien';
+$lang['Purge sessions'] = 'Previesť údržbu relácií';
+$lang['randomly represented'] = 'náhodne reprezentovaný';
+$lang['registration date'] = 'dátum registrácie';
+$lang['clean'] = 'vyčistiť';
+$lang['Create this site'] = 'Vytvoriť túto stránku';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'otestovať vzdialenú stránku';
+$lang['remove tags'] = 'presunúť kľúčové slová';
+$lang['Repair and optimize database'] = 'Opraviť a optimalizovať databázu';
+$lang['selection'] = 'výber';
+$lang['set to'] = 'nastaviť ';
+$lang['singly represented'] = 'samostatne reprezentovaný';
+$lang['This site already exists'] = 'Táto stránka už existuje';
+$lang['created'] = 'vytvorené';
+$lang['delete'] = 'vymazať';
+$lang['delete this site and all its attached elements'] = 'vymazať túto stránku a všetky súvisiace položky';
+$lang['deleted'] = 'vymazané';
+$lang['an error happened'] = 'došlo k chybe';
+$lang['Local'] = 'Miestny';
+$lang['Remote'] = 'Vzdialený';
+$lang['update the database from files'] = 'aktualizovať databázu zo súboru';
+$lang['status'] = 'stav';
+$lang['Directory'] = 'Adresár';
+$lang['sub-albums'] = 'podalbumy';
+$lang['Synchronize metadata'] = 'synchronizovať metadata';
+$lang['target'] = 'cieľ';
+$lang['Thumbnail'] = 'Náhľad';
+$lang['Title'] = 'názov';
+$lang['Album list management'] = 'Správa albumov';
+$lang['Piwigo configuration'] = 'Nastavenie aplikácie Piwigo';
+$lang['Edit album'] = 'Editovať album';
+$lang['Group management'] = 'Správa skupín';
+$lang['User list'] = 'Zoznam používateľov';
+$lang['Edit photo information'] = 'Upraviť informácie o fotografii';
+$lang['Database synchronization with files'] = 'Synchronizácia databázy so súbormi';
+$lang['all'] = 'všetko';
+$lang['height must be a number superior to'] = 'výška musí byť väčšia ako';
+$lang['width must be a number superior to'] = 'šírka musí byť väčšia ako';
+$lang['for the file format'] = 'pre formát súboru';
+$lang['Photo unreachable or no support'] = 'Fotografia nie je dostupná alebo podporovaná';
+$lang['General statistics'] = 'Celková štatistika';
+$lang['average time'] = 'priemerný čas';
+$lang['number of miniaturized photos'] = 'počet miniaturizovaných fotografií';
+$lang['total time'] = 'celkový čas';
+$lang['for this file format'] = 'pre tento formát súboru';
+$lang['unit mode'] = 'jednotlivo';
+$lang['Unlocked'] = 'Odomknuté';
+$lang['unset'] = 'nenastavovať';
+$lang['Update albums informations'] = 'Aktualizovať informácie o albumoch';
+$lang['Update photos information'] = 'Aktualizovať informácie o fotografiách';
+$lang['Synchronize'] = 'Synchronizácia';
+$lang['reduce to single existing albums'] = 'Previesť do jediného existujúceho albumu';
+$lang['Choose an option'] = 'Zvoliť nastavenie';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Zobraziť všetky informácie (pridané a odstránené albumy a položky)';
+$lang['Error list'] = 'Zozam chýb';
+$lang['Errors caption'] = 'Chyby - legenda';
+$lang['Detailed informations'] = 'Detailné informácie';
+$lang['File/directory read error'] = 'Chyba pri čítaní súboru/adresára';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Súbor alebo adresár nie je prístupný alebo neexistuje';
+$lang['albums deleted in the database'] = 'albumy odstránené z databázy';
+$lang['photos deleted from the database'] = 'položky odstránené z databázy';
+$lang['photos candidates for metadata synchronization'] = 'fotografie pre synchronizáciu metadat';
+$lang['photos informations synchronized with files metadata'] = 'informácie synchronizované z metadat súborov';
+$lang['errors during synchronization'] = 'chýb behom synchronizácie';
+$lang['albums added in the database'] = 'albumy pridané do databázy';
+$lang['photos added in the database'] = 'položky pridané do databázy';
+$lang['photos updated in the database'] = 'položky aktualizované v databáze';
+$lang['Search for new images in the directories'] = 'Hľadať nové obrázky v kategóriách';
+$lang['added'] = 'pridané';
+$lang['Metadata synchronization results'] = 'Výsledky synchronizácie metadat';
+$lang['only perform a simulation (no change in database will be made)'] = 'len simulácia pridania (nebudú urobené žiadne zmeny v databáze)';
+$lang['Simulation'] = 'Simulácia';
+$lang['directories + files'] = 'adresáre + súbory';
+$lang['only directories'] = 'len adresáre';
+$lang['synchronize files structure with database'] = 'synchronizovať štruktúru súborov s databázou';
+$lang['synchronize files metadata with database photos informations'] = 'synchronizovať metadata súborov s databázou';
+$lang['even already synchronized photos'] = 'zahrnúť aj skôr synchronizované položky';
+$lang['Used metadata'] = 'Použité metadata';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Názov adresárov a súborov musí byť tvorený písmenami, číslami, "-", "_" alebo "."';
+$lang['wrong filename'] = 'chybný názov súboru';
+$lang['Upload'] = 'Nahrať fotografie';
+$lang['user "%s" added'] = 'používateľ "%s" pridaný';
+$lang['User status'] = 'Stav používateľa';
+$lang['user_status_admin'] = 'Administrátor';
+$lang['user_status_generic'] = 'Všeobecný';
+$lang['user_status_guest'] = 'Hosť';
+$lang['user_status_normal'] = 'Používateľ';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Virtuálny album';
+$lang['Waiting'] = 'Na schválenie';
+$lang['default'] = 'východzí';
+$lang['Toggle \'default group\' property'] = 'Prepnúť vlastnosť \'základná skupina\'';
+$lang['Advanced features'] = 'Rozšírené vlastnosti';
+$lang['Overall'] = 'Celkovo';
+$lang['Year'] = 'Rok';
+$lang['Month'] = 'Mesiac';
+$lang['Day'] = 'Deň';
+$lang['Pages seen'] = 'Prezretých stránok';
+$lang['Time'] = 'čas';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Fotografie';
+$lang['Section'] = 'Sekcia';
+$lang['An information email was sent to group "%s"'] = 'Informačný e-mail bol poslaný skupine "%s"';
+$lang['Send an information email to group members'] = 'Poslať informačný e-mail používateľom skupiny';
+$lang['Group'] = 'Skupina';
+$lang['[%s] Visit album %s'] = '[%s] Navštívilo album %s';
+$lang['Hello,'] = 'Dobrý deň,';
+$lang['See you soon.'] = 'Dovidenia.';
+$lang['Discover album:'] = 'Navštívte album:';
+$lang['Mail content'] = 'Obsah e-mailu';
+$lang['none'] = 'žiadny';
+$lang['high'] = 'vysoký';
+$lang['other'] = 'iný';
+$lang['Element type'] = 'Typ položky';
+$lang['Image id'] = 'ID fotografie';
+$lang['Summary'] = 'Súhrn';
+$lang['%d line filtered'] = '%d riadok filtrovaný';
+$lang['%d lines filtered'] = '%d riadkov filtrovaných';
+$lang['%d guest'] = '%d hosť';
+$lang['%d guests'] = '%d hostí';
+$lang['Hour'] = 'Hodina';
+$lang['guest'] = 'hosť';
+$lang['default values'] = 'východzie hodnoty';
+$lang['Guest cannot be deleted'] = 'Používateľa hosť nie je možné vymazať';
+$lang['Default user cannot be deleted'] = 'Východzieho používateľa nie je možné vymazať';
+$lang['Purge history detail'] = 'Previesť údržbu detailov histórie';
+$lang['Purge history summary'] = 'Previesť údržbu celej histórie';
+$lang['Check integrity'] = 'Skontrolovať integritu';
+$lang['Anomaly'] = 'Anomálie';
+$lang['Correction'] = 'Oprava';
+$lang['Automatic correction'] = 'Automatická oprava';
+$lang['Impossible automatic correction'] = 'Automatická oprava nie je možná';
+$lang['Correction applied with success'] = 'Oprava úspešne prevedená';
+$lang['Correction applied with error'] = 'Oprava sa nepodarila';
+$lang['%d anomaly has been detected.'] = '%d anomália detekovaná.';
+$lang['%d anomalies have been detected.'] = '%d anomálií detekovaných.';
+$lang['%d anomaly has been corrected.'] = '%d anomália bola opravená.';
+$lang['%d anomalies have been detected corrected.'] = '%d anomálií bolo opravených.';
+$lang['%d anomaly has not been corrected.'] = '%d anomália nebola opravená.';
+$lang['%d anomalies have not been corrected.'] = '%d anomálií nebolo opravených.';
+$lang['Go to %s or %s for more informations'] = 'Viac informácií nájdete na %s a %s';
+$lang['the forum'] = 'fórum';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s nie je korektný súbor - EXIF nie je podporovaný';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s musí byť nastavený na false v súbore config_local.inc.php';
+$lang['Main "guest" user does not exist'] = 'Hlavný používateľ "hosť" neexistuje';
+$lang['Main "guest" user status is incorrect'] = 'Stav hlavného používateľa "hosť" je chybný';
+$lang['Default user does not exist'] = 'Východzí hlavný používateľ neexistuje';
+$lang['Main "webmaster" user does not exist'] = 'Hlavný používateľ "webmaster" neexistuje';
+$lang['Main "webmaster" user status is incorrect'] = 'Stav hlavného používateľa "webmaster" je chybný';
+$lang['User "%s" created with "%s" like password'] = 'Používateľ "%s" vytvorený s heslom "%s"';
+$lang['Status of user "%s" updated'] = 'Stav používateľa "%s" aktualizovaný';
+$lang['add new photos to caddie'] = 'pridať nové položky do košíku';
+$lang['No display'] = 'Bez zobrazenia';
+$lang['Classic display'] = 'Bežné zobrazenie';
+$lang['Hoverbox display'] = 'Zobraziť pri ukázaní myšou';
+$lang['Mail address is obligatory for all users'] = 'E-mailová adresa je povinná pre všetkých používateľov';
+$lang['Minimum privacy level'] = 'Najnižší stupeň ochrany súkromia';
+$lang['Privacy level'] = 'Stupeň ochrany súkromia';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakty';
+$lang['Level 2'] = 'Priatelia';
+$lang['Level 4'] = 'Rodina';
+$lang['Level 8'] = 'Administrátori';
+$lang['Reinitialize check integrity'] = 'Znovu spustiť kontrolu integrity';
+$lang['Check all'] = 'Vybrať všetko';
+$lang['Uncheck all'] = 'Zrušiť výber';
+$lang['Check automatic corrections'] = 'Vybrať automatické opravy';
+$lang['Apply selected corrections'] = 'Previesť vybrané opravy';
+$lang['Ignore selected anomalies'] = 'Ignorovať vybrané anomálie';
+$lang['Refresh'] = 'Aktualizovať';
+$lang['The anomaly will be ignored until next application version'] = 'Anomálie budú ignorované do novej verzie aplikácie';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Prevedením opravy anomálie sa zruší ich ignorácia';
+$lang['%d anomaly has been ignored.'] = '%d anomália bola ignorovaná.';
+$lang['%d anomalies have been ignored.'] = '%d anomálií bolo ignorovaných.';
+$lang['Plugins which need upgrade'] = 'Doplnky vyžadujúce aktualizáciu';
+$lang['Plugin list'] = 'Zoznam doplnkov';
+$lang['Check for updates'] = 'Skontrolovať aktualizácie';
+$lang['Other plugins'] = 'Ďalšie doplnky';
+$lang['Last revisions'] = 'Posledná revízia';
+$lang['Are you sure you want to delete this plugin?'] = 'Prajete si odstrániť tento doplnok?';
+$lang['Are you sure you want to install this plugin?'] = 'Prajete si nainštalovať tento doplnok?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Prajete si nainštalovať túto aktualizáciu? Je potrebné overiť, či súčasnú verziu nie je nutné najskôr odinštalovať.';
+$lang['Plugin has been successfully copied'] = 'Doplnok bol úspešne nainštalovaný';
+$lang['You might go to plugin list to install and activate it.'] = 'Doplnok je potrebné aktivovať v zozname doplnkov.';
+$lang['Can\'t create temporary file.'] = 'Nie je možné vytvoriť dočasný súbor.';
+$lang['Can\'t download archive.'] = 'Nie je možné stiahnuť archív.';
+$lang['Can\'t read or extract archive.'] = 'Archív nie je možné rozbaliť alebo prečítať.';
+$lang['An error occured during extraction (%s).'] = 'Behom rozbaľovania došlo k chybe (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prosím skontrolujte oprávnenie pre adresár "plugins" vrátane podadresárov (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Nie je možné sa pripojiť k serveru.';
+$lang['Purge compiled templates'] = 'Previesť údržbu šablón';
+$lang['Upload'] = 'Nahrať fotografie';
+$lang['ACCESS_0'] = 'Voľný prístup';
+$lang['ACCESS_1'] = 'Prístupné všetkým';
+$lang['ACCESS_2'] = 'Prístupné prihláseným';
+$lang['ACCESS_3'] = 'Prístupné administrátorom';
+$lang['ACCESS_4'] = 'Prístupné správcom';
+$lang['ACCESS_5'] = 'Neprístupné';
+$lang['Support'] = 'Podpora';
+$lang['Documentation'] = 'Dokumentácia';
+$lang['A new version of Piwigo is available.'] = 'Je dostupná nová verzia Piwigo.';
+$lang['Piwigo Administration'] = 'Administrácia Piwigo';
+$lang['Piwigo version'] = 'Verzia Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Používate najnovšiu verziu Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Používaná verzia %s [%s] nie je kompatibilná s požadovanou verziou [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Je nutné aktualizovať systém pokiaľ chcete využívať všetky funkcie aplikácie - inak nemusí aplikácia pracovať správne alebo vôbec';
+$lang['Deleted on'] = 'Vymazané';
+$lang['Last hit'] = 'Posledné zobrazenie';
+$lang['GD library is missing'] = 'GD knižnica neexistuje';
+$lang['Templates'] = 'Šablóny';
+$lang['Extend for templates'] = 'Rozšírenia pre šablóny';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Nahradiť pôvodné šablóny používateľskými z podadresára template-extension';
+$lang['Replacers (customized templates)'] = 'Nahradiť používateľskými šablónami';
+$lang['Original templates'] = 'Pôvodné šablóny';
+$lang['Optional URL keyword'] = 'Voliteľné kľúčové slovo URL';
+$lang['Templates configuration has been recorded.'] = 'Nastavenie šablón bolo uložené.';
+$lang['All optimizations have been successfully completed.'] = 'Všetky zmeny boli úspešne dokončené.';
+$lang['Optimizations have been completed with some errors.'] = 'Zmeny boli dokončené s niekoľkými chybami.';
+$lang['Modify information'] = 'Upraviť informácie';
+$lang['nothing'] = 'prázdne';
+$lang['overrides existing values with empty ones'] = 'nahradiť súčasné hodnoty prázdnymi';
+$lang['Manage photo ranks'] = 'Spravovať hodnotenie fotografií';
+$lang['Edit ranks'] = 'Upraviť hodnotenie';
+$lang['No photo in this album'] = 'Album neobsahuje žiadne položky';
+$lang['Images manual order was saved'] = 'Poradie fotografií bolo uložené';
+$lang['ranks'] = 'hodnotenie';
+$lang['Drag to re-order'] = 'Poradie zmeníte ťahaním myši';
+$lang['Quick Local Synchronization'] = 'Rýchla miestna synchronizácia';
+$lang['No photo can be deleted'] = 'Fotografia nemôže byť vymazaná';
+$lang['Delete selected photos'] = 'Vymazať vybrané fotografie';
+$lang['%d photo was deleted'] = '%d fotografia vymazaná';
+$lang['%d photos were deleted'] = '%d fotografií vymazaných';
+$lang['Downloads'] = 'Stiahnuté';
+$lang['Released on'] = 'Vydané';
+$lang['Number of downloads'] = 'Počet stiahnutí';
+$lang['Upload Photos'] = 'Nahrať fotografie';
+$lang['Drop into album'] = 'Späť do albumu';
+$lang['+ Add an upload box'] = '+ Pridat pole';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Vytvorte "%s" adresár v koreňovom adresári inštalácie Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Povoľte zápis (chmod 777,644,atď.) do "%s" adresára v koreňovom adresári inštalácie Piwigo';
+$lang['existing album'] = 'súčasný album';
+$lang['create a new album'] = 'Založiť nový album';
+$lang['Album name'] = 'Názov albumu';
+$lang['Album "%s" has been added'] = 'Kategória "%s" pridaná';
+$lang['Uploaded Photos'] = 'Nahrať fotografie';
+$lang['%d photos uploaded'] = '%d fotografií nahraných';
+$lang['Privacy level set to "%s"'] = 'Úroveň súkromia údajov nastavená na "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Kategória "%s" teraz obsahuje %d fotografií';
+$lang['Manage this set of %d photos'] = 'Spravovať tento súbor %d fotografií';
+$lang['Select files'] = 'Výber súborov';
+$lang['Operation in progress'] = 'Prevádzam údržbu.';
+$lang['Please wait...'] = 'Prosím počkajte...';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo spravodaj';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Prihláste sa k odberu Piwigo spravodaja, aby ste boli informovaný o novinkách. Dostanete tak e-mail, keď bude k dispozícii nová verzia Piwigo (ktorá môže obsahovať bezpečnostnú záplatu, o čom je dôležité byť informovaný) alebo v prípade dôležitých novinek v projekte. Jedná sa len o niekoľko mailov ročne.';
+$lang['Subscribe %s'] = 'Prihlásiť %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Prihlásiť %s k Spravodaju Piwigo';
+$lang['Purge search history'] = 'Odstrániť históriu hľadania';
+$lang['Hide'] = 'Skryť';
+$lang['Password is missing. Please enter the password.'] = 'Chýba heslo. Prosím napíšte heslo.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Chýba potvrdenie hesla. Prosím potvrďte vybrané heslo.';
+$lang['Allow users to edit their own comments'] = 'Povoliť používateľom upravovať ich vlastné komentáre';
+$lang['Allow users to delete their own comments'] = 'Povoliť používateľom mazať ich vlastné komentáre';
+$lang['Email administrators when a comment is modified'] = 'Informovať e-mailom administrátorov, keď je upravený komentár';
+$lang['Email administrators when a comment is deleted'] = 'Informovať e-mailom administrátorov, keď je zmazaný komentár';
+$lang['Cannot delete the old permalink !'] = 'Starý pernamentný odkaz nemôže byť zmazaný!';
+$lang['Hit'] = 'Zobrazenie';
+$lang['Tools'] = 'Nástroje';
+$lang['Photos'] = 'Fotografie';
+$lang['Themes'] = 'Témy';
+$lang['Instructions to use Piwigo'] = 'Informácie ako používať Piwigo';
+$lang['Installed Themes'] = 'Inštalované témy';
+$lang['Add New Theme'] = 'Pridať novú tému';
+$lang['Forbid this theme to users'] = 'Zakázať použitie tojto témy používateľom';
+$lang['Set as default theme for unregistered and new users'] = 'Nastaviť východziu tému pre nezaregistrovaných a nových používateľov';
+$lang['unknown'] = 'neznámy';
+$lang['Everybody'] = 'Každý';
+$lang['Who can see these photos?'] = 'Kto môže vidieť tieto fotografie?';
+$lang['Who can see this photo?'] = 'Kto môže vidieť túto fotografiu?'; 
+$lang['Pending Comments'] = 'Nevybavené komentáre';
+$lang['Settings'] = 'Nastavenia';
+$lang['Resize'] = 'Zmeniť veľkosť';
+$lang['Maximum width'] = 'Maximálna šířka';
+$lang['pixels'] = 'bodov';
+$lang['Maximum height'] = 'Maximálna výška';
+$lang['Image Quality'] = 'Kvalita formátu';
+$lang['Save Settings'] = 'Uložiť nastavenia';
+$lang['Your configuration settings are saved'] = 'Vaše nastavenia boli uložené';
+$lang['Active Themes'] = 'Aktívne témy';
+$lang['Add write access to the "%s" directory'] = 'Nastavte prístup pre zápis do adresára "%s"';
+$lang['Administration Home'] = 'Úvodná stránka administrácie';
+$lang['Change Admin Colors'] = 'Zmeňte farvy administrácie';
+$lang['Delete this theme'] = 'Zrušte túto tému';
+$lang['Directory does not exist'] = 'Adresár neexistuje';
+$lang['Download,'] = 'Stiahnuť,';
+$lang['FTP + Synchronization'] = 'FTP + Synchronizácia';
+$lang['Get Support on Piwigo Forum'] = 'Získať podporu na fóre Piwigo';
+$lang['Help Me'] = 'Pomoc';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Táto téma nemôže byť aktivovaná, protože chýba rodičovská téma: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Táto téma nemôže byť zrušená, protože na nej závisia ďalšie témy: %s';
+$lang['Inactive Themes'] = 'Neaktívne témy';
+$lang['Install on your computer,'] = 'Inštalovať na Váš počítač,';
+$lang['Make this theme available to users'] = 'Sprístupniť používateľom';
+$lang['Page end'] = 'Koniec stránky';
+$lang['Piwigo Uploader'] = 'Piwigo nahrávač fotografií';
+$lang['Read Piwigo Documentation'] = 'Čítajte Piwigo dokumentáciu';
+$lang['Start pLoader and add your photos.'] = 'Spustite pLoader a pridajte Vaše fotografie.';
+$lang['Switch to clear or dark colors for administration'] = 'Prepnúť na svetlé alebo tmavé farvy pre administráciu';
+$lang['Theme has been successfully installed'] = 'Téma bola úspešne nainštalovaná';
+$lang['Visit Gallery'] = 'Navštíviť galériu';
+$lang['Visit Piwigo project website'] = 'Navštíviť Piwigo projektový web portál';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je <em>Piwigo nahrávač</em>. pLoader pripraví Vaše fotografie na Vašom počítači a nahraje ich na Vašu Piwigo fotogalériu.';
+$lang['Guest Settings'] = 'Nastavenie pre hostí';
+$lang['Main Page'] = 'Hlavná stránka';
+$lang['Photo Page'] = 'Fotostránka';
+$lang['Activate Navigation Bar'] = 'Aktivovať navigačnú lištu';
+$lang['Activate Navigation Thumbnails'] = 'Aktivovať navigačné náhľady';
+$lang['Activate icon "%s"'] = 'Aktivovať ikonu "%s"';
+$lang['Photo Properties'] = 'Vlastnosti fotografie';
+$lang['Allow user customization'] = 'Povoliť používateľskú úpravu nastavení';
+$lang['Languages'] = 'Jazyky';
+$lang['Installed Languages'] = 'Inštalované jazyky';
+$lang['Add New Language'] = 'Pridať nový jazyk';
+$lang['Language has been successfully installed'] = 'Jazyk bol úspešne nainštalovaný';
+$lang['Select:'] = 'Vybrať:';
+$lang['None'] = 'Žiadny';
+$lang['Invert'] = 'Obrátiť';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nie je možné deaktivovať túto tému, potrebujete aspoň jednu tému.';
+$lang['Webmaster status is required.'] = 'Je požadovaný status webmastra.';
+$lang['Bound Theme'] = 'Zviazať témy';
+$lang['Allow rating'] = 'Povoliť hodnotenie';
+$lang['Select at least one comment'] = 'Vyberte aspoň jeden komentár';
+$lang['Active Plugins'] = 'Aktivovať doplnky';
+$lang['Inactive Plugins'] = 'Deaktivovať doplnky';
+$lang['Missing Plugins'] = 'Chýbajúce doplnky';
+$lang['Uninstalled Plugins'] = 'Nenainštalované doplnky';
+$lang['By %s'] = 'Od %s';
+$lang['Visit plugin site'] = 'Navštívte web portál doplnkov';
+$lang['Active Languages'] = 'Aktívne jazyky';
+$lang['Delete this language'] = 'Odstrániť tento jazyk';
+$lang['Forbid this language to users'] = 'Zneprístupniť tento jazyk používateľom';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nie je možné deaktivovať tento jazyk, najprv vyberte iný východzí jazyk.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nie je možné deaktivovať tento jazyk, potrebujete aspoň jeden jazyk.';
+$lang['Inactive Languages'] = 'Deaktivované jazyky';
+$lang['Make this language available to users'] = 'Sprístupniť tento jazyk používateľom';
+$lang['Set as default language for unregistered and new users'] = 'Nastaviť ako východzí jazyk pre nezaregistrovaných a nových používateľov';
+$lang['Add Photos'] = 'Pridať fotografie';
+$lang['The following tag was deleted'] = 'Nasledujúce kľúčové slovo bolo odstránené';
+$lang['Miscellaneous'] = 'Rôzne';
+$lang['Virtual Links'] = 'Virtuálne odkazy';
+$lang['There is no other language available.'] = 'Nie je dostupný žiadny ďalší jazyk.';
+$lang['There is no other plugin available.'] = 'Nie je dostupný žiadny ďalší doplnok.';
+$lang['There is no other theme available.'] = 'Nie je dostupná žiadna ďalšia téma.';
+$lang['Add another set of photos'] = 'Pridať ďalšiu množinu fotografií';
+$lang['user_status_generic'] = 'Všeobecné';
+$lang['IP'] = 'IP';
+$lang['By rank'] = 'Podľa hodnotenia';
+$lang['Manual order'] = 'Radené ručne';
+$lang['Order of menubar items has been updated successfully.'] = 'Poradie položiek v menu bolo úspešne aktualizované.';
+$lang['This theme was not designed to be directly activated'] = 'Táto téma nebola navrhnutá tak, aby bola priamo aktivovateľná';
+$lang['Menu Management'] = 'Ďalšie funkcie';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'V súbore php.ini, upload_max_filesize (%sB) je väčší ako post_max_size (%sB), mali by ste zmeniť toto nastavenie';
+$lang['Exif extension not available, admin should disable exif use'] = 'Doplnok Exif nie je dostupný, administrátor by mal deaktivovať jeho použitie';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Nahrané súbory presahujú upload_max_filesize ako je uvedené v php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Nahrané súbory presahujú post_max_size ako je uvedené v php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Nahraný súbor presahuje MAX_FILE_SIZE ako je uvedené v HTML formulári';
+$lang['The uploaded file was only partially uploaded'] = 'Súbor bol iba čiastočne nahraný';
+$lang['No file was uploaded'] = 'Súbor nebol nahraný';
+$lang['Missing a temporary folder'] = 'Chýbajúci dočasný adresár';
+$lang['Failed to write file to disk'] = 'Chyba zápisu súboru na disk';
+$lang['File upload stopped by extension'] = 'Nahrávanie súboru zastavené doplnkom';
+$lang['Unknown upload error'] = 'Neznáma chyba nahrávania';
+$lang['Error on file "%s" : %s'] = 'Chyba súboru "%s" : %s';
+$lang['automatic order'] = 'automatické zoradenie';
+$lang['manual order'] = 'manuálne zoradenie';
+$lang['Albums automatically sorted'] = 'Automaticky triedené albumy';
+$lang['Batch Manager'] = 'Správca dávky';
+$lang['include child albums'] = 'vrátane podalbumov';
+$lang['Selection'] = 'Výber';
+$lang['Action'] = 'Akcia';
+$lang['Set author'] = 'Nastavenie autora';
+$lang['Set title'] = 'Nastavenie názvu';
+$lang['Set creation date'] = 'Nastavenie dátumu vytvorenia';
+$lang['Apply action'] = 'Pridaj akciu';
+$lang['on the %d selected photos'] = 'na %d vybraných fotografií';
+$lang['%d of %d photos selected'] = '%d z %d vybraných fotografií';
+$lang['No photo selected, %d photos in current set'] = 'Žiadna fotografia vybraná, %d fotografií v súčasnom súbore';
+$lang['All %d photos are selected'] = 'Všetkých %d fotografií vybraných';
+$lang['remove this filter'] = 'odstráň tento filter';
+$lang['Duplicates'] = 'duplicity';
+$lang['Add a filter'] = 'Pridaj filter';
+$lang['Remove all filters'] = 'Odstráň všetky filtre';
+$lang['Refresh photo set'] = 'Obnoviť foto súbor';
+$lang['The whole page'] = 'Celá stránka';
+$lang['The whole set'] = 'Celý súbor';
+$lang['No photo in the current set.'] = 'Žiadna fotografia v súčasnom súbore.';
+$lang['No photo selected, no action possible.'] = 'Nie je označená žiadna fotografia, nie je možné pokračovať v akcii.';
+$lang['Choose an action'] = 'Zvoľ akciu';
+$lang['remove author'] = 'odstrániť autora';
+$lang['Type here the author name'] = 'Sem napíšte meno autora';
+$lang['remove title'] = 'odstrániť názov';
+$lang['Type here the title'] = 'Sem napíšte názov';
+$lang['remove creation date'] = 'odstrániť dátum vytvorenia';
+$lang['Album photos associated to the following albums: %s'] = 'Fotografie prepojené na nasledujúce albumy: %s';
+$lang['Delete orphan tags'] = 'Vymazanie nepriradených kľúčových slov';
+$lang['delete photo'] = 'vymazať fotografiu';
+$lang['Orphan tags deleted'] = 'Nepriradené kľúčové slová boli vymazané';
+$lang['Week starts on'] = 'Týždenné spustenie';
+$lang['You have %d orphan tags: %s.'] = 'Máte %d nepriradených kľúčových slov: %s.';
+$lang['Remove from caddie'] = 'Vymazať z krabičky';
+$lang['Themes which need upgrade'] = 'Témy potrebujúce aktualizáciu'; 
+$lang['Languages which need upgrade'] = 'Jazyky potrebujúce aktualizáciu '; 
+$lang['All themes are up to date.'] = 'Všetky témy sú aktuálne.'; 
+$lang['All plugins are up to date.'] = 'Všetky doplnky sú aktuálne.'; 
+$lang['All languages are up to date.'] = 'Všetky jazyky sú aktuálne.'; 
+$lang['Visit theme site'] = 'Navštívte stránku tém'; 
+$lang['Visit language site'] = 'Navštívte stránku jazykov'; 
+$lang['New Version'] = 'Nová verzia';
+$lang['Obsolete Plugins'] = 'Zastaralé doplnky';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UPOZORNENIE! Tento doplnok nemusí byť kompatibilný s touto verziou Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Chtete ho aj tak aktivovať?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TENTO DOPLNOK JE TERAZ SÚČASŤOU JADRA PIWIGO! ODINŠTALUJTE HO TERAZ!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'CHYBA: TENTO DOPLNOK CHÝBA ALE JE NAINŠTALOVANÝ! ODINŠTALUJTE HO TERAZ.';
+$lang['display'] = 'zobrazenie';
+$lang['Thumbnails generation in progress...'] = 'Prebieha tvorba náhľadov...';
+$lang['Photos generation in progress...'] = 'Prebieha tvorba fotografií...';
+$lang['%s photos have been regenerated'] = '%s fotografií bolo vytvorených';
+$lang['%s photos can not be regenerated'] = '%s fotografií nebolo vytvorených';
+$lang['new'] = 'nové';
+$lang['No results'] = 'Bez výsledkov';
+$lang['Searching...'] = 'Vyhľadávam...';
+$lang['Type in a search term'] = 'Napíšte vo vyhľadávaní';
+$lang['Deactivate all'] = 'Ukončiť všetko';
+$lang['Restore'] = 'Obnoviť';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnoviť východiskovú konfiguráciu. Stratíte nastavenia Vašich doplnkov!';
+$lang['Show menubar'] = 'Zobraziť menu';
+$lang['Updates'] = 'Aktualizácie';
+$lang['Update in progress... Please wait.'] = 'Prebieha aktualizácia... Prosím čakajte.';
+$lang['Ignore this update'] = 'Ignorovať túto aktualizáciu';
+$lang['Reset ignored updates'] = 'Obnoviť ignorované aktualizácie';
+$lang['Update All'] = 'Aktualizovať všetko';
+$lang['ERROR'] = 'CHYBA';
+$lang['Update Complete'] = 'Aktualizácia kompletná';
+$lang['Piwigo Update'] = 'Piwigo aktualizácia';
+$lang['Extensions Update'] = 'Aktualizácia doplnkov';
+$lang['All extensions are up to date.'] = 'Všetky doplnky sú aktuálne.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Nasledovné doplnky nemusia byť kompatibilné s novou verziou Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = ' Nasledovné témy nemusia byť kompatibilné s novou verziou Piwigo:';
+$lang['I decide to update anyway'] = 'Rozhodol som sa aktualizovať každopádne';
+$lang['Update to Piwigo %s'] = 'Aktualizovať na Piwigo %s';
+$lang['Two updates are available'] = 'Dve aktualizácie sú dostupné';
+$lang['This is a minor update, with only bug corrections.'] = 'Toto je malá aktualizácia opravujúca chyby.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Toto je veľká aktulizácia s <a href="%s">novými funkciami</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Niektoré témy a doplnky nemusia byť prístupné.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Môžete aktualizovať na Piwigo %s priamo bez aktualizácie na Piwigo %s (odporúčané).';
+$lang['Save Template Directory'] = 'Uložiť adresár šablón';
+$lang['Dump Database'] = 'Vyčistiť databázu';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Vrátane histórie údajov (Upozornenie: limit pamäte servera môže byť prekročený)';
+$lang['Unable to dump database.'] = 'Nemožno vyčistiť databázu.';
+$lang['Some upgrades are available for extensions.'] = 'Niektoré aktualizácie sú dostupné pre doplnky.';
+$lang['Ignore All'] = 'Ignorovať všetko';
+$lang['Crop'] = 'Orezať';
+$lang['Width'] = 'Šírka';
+$lang['Height'] = 'Výška';
+$lang['Follow Orientation'] = 'Nasledovať orientáciu';
+$lang['Graphics Library'] = 'Grafická knižnica';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivovať ikonu "new" pre ďalšie albumy a fotky'; 
+$lang['Default photos order'] = 'Predvolené zoradenie fotiek';
+$lang['Average rate'] = 'Priemerné hodnotenie';
+$lang['Rate'] = 'Hodnotenie';
+$lang['Add a criteria'] = 'Pridať kritéria';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nemožno definovať prednastavené zoradenie fotiek, pretože ho máte inak nastavené lokálnej konfigurácii.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Máte špecifikované <i>$conf[\'order_by\']</i> vo Vašom lokálnom konfiguračnom súbore, tento parameter je neprípustný, prosím vymažte ho alebo premenujte v <i>$conf[\'order_by_custom\']</i> !';
+$lang['Learn more'] = 'Zistiť viac';
+$lang['... or '] = '... alebo ';
+$lang['Create'] = 'Vytvoriť';
+$lang['Start Upload'] = 'Spustiť nahrávanie';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Používate Flash uploader. Problemy? Skúste <a href="%s">Browser uploader</a> miesto toho.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Používate prehliadačový uploader. Skúste <a href="%s">Flash uploader</a> miesto toho.';
+$lang['Maximum file size: %sB.'] = 'Maximálna veľkosť súboru: %sB.';
+$lang['Allowed file types: %s.'] = 'Povolené typy súborov: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približné maximálne rozlíšenie: %dM pixelov (teda %dx%d pixelov).';
+$lang['Manage Permissions'] = 'Riadenie prístupov';
+$lang['Photo %s of %s'] = 'Fotka %s z %s';
+$lang['show details'] = 'ukázať detaily';
+$lang['hide details'] = 'schovať detaily';
+$lang['Merge tags'] = 'Zlúčiť kľúčové slová';
+$lang['Select the destination tag'] = 'Označiť cieľové kľúčové slovo';
+$lang['(this tag will be deleted)'] = '(toto kľúčové slovo bude vymazané)';
+$lang['Confirm merge'] = 'Potvrdiť zlúčnie';
+$lang['Merge selected tags'] = 'Zlúčiť označené kľúčové slová';
+$lang['No destination tag selected'] = 'Žiadne cieľové kľúčové slovo nie je označené';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Kľúčové slová <em>%s</em> sú zlúčené do kľúčového slova <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Označiť najmenej dve kľúčové slová pre zlúčenie';
+$lang['Select an album'] = 'Označiť album';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Štandardne Piwigo vytvorí novú veľkosť pre web z HD (high definition) verzie fotky.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ak nie je k dispozícii HD a ak súčasná veľkosť pre web je väčšia ako rozmer zmeny veľkosti, Piwigo fotku presunie ako HD a vytvorí z nej menšiu veľkosť pre web.';
+$lang['An error has occured during upgrade.'] = 'Pri upgrade sa vyskytla chyba.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Pri rozbaľovaní sa vyskytla chyba. Prosím skontrolujte prístupové práva súborov Vašej inštalácie piwigo.<br><a href="%s">Kliknite sem na zobrazenie logu chyby</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nemôže získať upgradovací súbor zo servra';
+$lang['Zoom'] = 'Zväčšenie';
+$lang['Add to caddie'] = 'Pridať do košíku';
+$lang['%s has been successfully updated.'] = '%s bol úspešne aktualizovaný.'; 
+$lang['Add tags'] = 'Pridať kľúčové slová'; 
+$lang['Last import'] = 'Ostatný import'; 
+$lang['Predefined filter'] = 'Predefinovaný filter'; 
+$lang['With no album'] = 'Bez albumu'; 
+$lang['With no tag'] = 'Bez kľúčového slova'; 
+$lang['With no virtual album'] = 'Bez virtuálneho albumu';
+$lang['Activate comments'] = 'Aktívne komentáre';
+$lang['Default comments order'] = 'Predvolené zoradenie komentárov';
+$lang['GD version'] = 'GD verzia';
+$lang['Photo name'] = 'Názov fotky';
+$lang['Send connection settings by email'] = 'Poslať nastavenie pripojenia mailom';
+$lang['The original image quality must be a number between %d and %d'] = 'Originálna kvalita fotky musí byť číslo medzi %d a %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Originálna maximálna výška musí byť číslo medzi %d a %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Originálna maximálna šírka musí byť číslo medzi %d a %d';
+$lang['Resize after upload'] = 'Zmeniť rozmer po nahratí';
+$lang['Original Size'] = 'Originálna veľkosť';
+$lang['A locked gallery is only visible to administrators'] = 'Uzamknutý album je viditeľný len administrátorom'; 
+$lang['Unlock gallery'] = 'Odomknúť album'; 
+$lang['Gallery unlocked'] = 'Album odomknutý'; 
+$lang['Notify administrators when a comment is'] = 'Upozorniť administrátorov, keď je komentár'; 
+$lang['modified'] = 'upravené'; 
+$lang['pending validation'] = 'čakajúce na potvrdenie'; 
+$lang['Save visits in history for'] = 'Uložiť návštevy do histórie'; 
+$lang['simple visitors'] = 'obyčajní návštevníci'; 
+$lang['registered users'] = 'registrovaní používatelia'; 
+$lang['administrators'] = 'administrátori'; 
+$lang['This album contains %d photos, added on %s.'] = 'Tento album obsahuje %d fotiek, pridaných %s.'; 
+$lang['This album contains %d photos, added between %s and %s.'] = 'Tento album obsahuje %d fotiek, pridaných medzi %s a %s.'; 
+$lang['This album contains no photo.'] = 'Tento album neobsahuje fotky.';
+$lang['Not cropped correctly?'] = 'Nesprávne orezanie?';
+$lang['Center of interest'] = 'Stred záujmu';
+$lang['Move to album'] = 'Premiestniť do albumu';
+$lang['You can activate only one mobile theme.'] = 'Môžete aktivovať len jednu tému pre mobil.';
+$lang['Automatic sort order'] = 'Automatické zoradenie';
+$lang['apply automatic sort order'] = 'použiť automatické zoradenie';
+$lang['Save manual order'] = 'Uložiť manuálne zoradenie';
+$lang['cancel manual order'] = 'zrušiť manuálne zoradenie';
+$lang['Cancel'] = 'Zrušiť';
+$lang['List'] = 'Zoznam';
+$lang['Web Form'] = 'Web formulár';
+$lang['Applications'] = 'Aplikácie';
+$lang['Available versions for'] = 'Dostupné verzie pre';
+$lang['Available on'] = 'K dispozícii';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pre iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo pre iOS</em> aplikácie umožňujúcej spojenie na Vašu Piwigo galériu pre Váš iPhone, iPad alebo iPod Touch, vytváranie albumov a nahrávanie fotografií.';
+$lang['Piwigo for Android'] = 'Piwigo pre Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo pre Android</em> aplikácie umožňujúcej spojenie na Vašu Piwigo galériu pre Váš iPhone, iPad alebo iPod Touch, vytváranie albumov a nahrávanie fotografií.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publikačný doplnok pre Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je fotografický softvér určený na správu väčšieho počtu digitálnych fotografií a postprodukčnú prácu.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publikačný doplnok umožňuje export a synchronizáciu fotografií z Lightroomu priamo do Vašej Piwigo foto galérie.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publikačný doplnok pre Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je open source digitálny foto organizér pracujúci pod Linuxom. Je to predvolený foto správca v Ubuntu a Fedore.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Vo Vašom Linuxe jednoducho nainštalujte Shotwell so správcovským balíkom a aktivujte Piwigo publikačnú voľbu.';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publikačný doplnok pre digiKam';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je pokročilý digitálny foto správca a to voľne šíriteľný pre Linux, Windows, a MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je navrhnutý pre fotografov, ktorí chcú prezerať, spravovať, upravovať, vylepšovať, organizovať, označovať a zdieľať fotografie.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pre export Vašich fotografií z digiKam do Piwigo jednoducho nainštalujte digiKam a Kipi-doplnky.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export doplnok pre iPhoto';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je predvolený foto správca na MacOSX. Piwigo export doplnok umožňuje vytvárať nové albumy a exportovať Vaše fotografie priamo z iPhoto do Vašej Piwigo foto galérie.';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export doplnok pre Aperture';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je výkonný nástroj na vylepšovanie fotografií a správu veľkých knižníc na Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je navrhnutý pre profesionálnych fotografov s jednoduchosťou iPhoto.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export doplnok umožňuje vytváranie albumov a export fotografií.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient pre Android) je open source (GPL v3) Piwigo klient pre platformu Android.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkcie vrátane prehliadania galérií, vytvárania albumov a nahrávania fotografií.';
+$lang['Generate multiple size images'] = 'Tvorba početných veľkostí fotografií';
+$lang['Delete multiple size images'] = 'Vymazanie početných veľkostí fotografií';
+$lang['any visitor can see this album'] = 'ktorýkoľvek návštevník môže vidieť tento album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'návštevníci sa musia prihlásiť a mať povolené vidieť tento album';
+$lang['Groups and users'] = 'Skupiny a používatelia';
+$lang['Permission granted for groups'] = 'Práva udelené pre skupiny';
+$lang['Select groups...'] = 'Výber skupín...';
+$lang['There is no group in this gallery.'] = 'Nie je definovaná skupina v tejto galérii.';
+$lang['Permission granted for users'] = 'Povolenia udelené pre používateľov';
+$lang['Select users...'] = 'Výber používateľov...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u používateľov má automaticky oprávnenia, pretože patria do skupiny s prideleným oprávnením.';
+$lang['include photos with lower privacy level'] = 'vrátane fotografií s nízkou súkromnou úrovňou';
+$lang['custom'] = 'Voliteľné';
+$lang['No group is permitted to see this private album'] = 'Žiadna skupina nemá oprávnenie vidieť tento súkromný album';
+$lang['Permission management'] = 'Správa oprávnení';
+$lang['add a new watermark'] = 'pridať novú vodotlač';
+$lang['Apply watermark if height is bigger than'] = 'Použiť vodotlač ak výška je väčšia ako';
+$lang['Apply watermark if width is bigger than'] = 'Použiť vodotlač ak šírka je väčšia ako';
+$lang['bottom left corner'] = 'ľavý dolný roh';
+$lang['bottom right corner'] = 'pravý dolný roh';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Ako predvolené, stred záujmu je umiestnený do stredu fotky.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pre fotku s orezom, takým ako "Štvorec", Piwigo ju urobí čo najlepšie so stredom záujmu.';
+$lang['middle'] = 'stred';
+$lang['Opacity'] = 'Nepriehľadnosť';
+$lang['Photo sizes with crop'] = 'Veľkosť fotky s orezom';
+$lang['Select a file'] = 'Označiť súbor';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Označiť zónu Vašou myšou na definovanie nového stredu záujmu.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Stred záujmu je veľmi významná zóna na fotke';
+$lang['top left corner'] = 'ľavý horný roh';
+$lang['top right corner'] = 'pravý horný roh';
+$lang['X Position'] = 'X Pozícia';
+$lang['X Repeat'] = 'X Opakovanie';
+$lang['Y Position'] = 'Y Pozícia';
+$lang['Multiple Size'] = 'Viacnásobná veľkosť';
+$lang['%d day'] = '%d deň';
+$lang['%d days'] = '%d dní';
+$lang['%d hour'] = '%d hodina';
+$lang['%d hours'] = '%d hodín';
+$lang['%d minute'] = '%d minúta';
+$lang['%d minutes'] = '%d minút';
+$lang['%d month'] = '%d mesiac';
+$lang['%d months'] = '%d mesiacov';
+$lang['%d second'] = '%d sekunda';
+$lang['%d seconds'] = '%d sekúnd';
+$lang['%d year'] = '%d rok';
+$lang['%d years'] = '%d rokov';
+$lang['%s ago'] = 'pred %s';
+$lang['%s in the future'] = '%s v budúcnosti';
+$lang['Added by %s'] = 'Pridané %s';
+$lang['Numeric identifier : %d'] = 'Číselný identifikátor: %d';
+$lang['Original file : %s'] = 'Originálny súbor: %s';
+$lang['Posted %s on %s'] = 'Poslaný %s na %s';
+$lang['Rated %d times, score : %.2f'] = 'Hodnotené %d krát, skóre: %.2f';
+$lang['Sharpen'] = 'Zaostriť';
+$lang['Visited %d times'] = 'Zobrazené %d krát';
+$lang['Watermark'] = 'Vodoznak';
+$lang[' and %d virtuals'] = 'a %d virtuálna';
+$lang['%d physicals'] = '%d fizický';
+$lang['%d week'] = '%d týždeň';
+$lang['%d weeks'] = '%d týždňov';
+$lang['Edit photo'] = 'Upraviť fotku';
+$lang['create a new site'] = 'vytvoriť novú stránku';
+$lang['No order field selected'] = 'Nie je určené zoradenie';
+$lang['Duplicate selected tags'] = 'Duplikovať označené kľúčové slová';
+$lang['Name of the duplicate'] = 'Názov duplikácie';
+$lang['Source tag'] = 'Zdrojové kľúčové slovo';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Kľúčové slovo "%s" je teraz duplikácia "%s"';
+$lang['Portrait'] = 'Na výšku';
+$lang['Panorama'] = 'Panoráma';
+$lang['Minimum width'] = 'Minimálna šírka';
+$lang['Minimum height'] = 'Minimálna výška';
+$lang['Landscape'] = 'Na šírku';
+$lang['Manage photos'] = 'Spravovať fotky';
+$lang['View in gallery'] = 'Zobraziť v galérii';
+$lang['Number of albums per page'] = 'Počet albumov na stránku';
+$lang['Ratio'] = 'Hodnotenie';
+$lang['between %.2f and %.2f'] = 'medzi %.2f and %.2f';
+$lang['between %d and %d pixels'] = 'medzi %d and %d pixelmi';
+$lang['Type here the name of the new group'] = 'Sem napíšte názov novej skupiny';
+$lang['This group will be unset to default'] = 'Táto skupina už viac nebude použitá ako predvolená';
+$lang['This group will be set to default'] = 'Táto skupina bude použitá ako predvolená';
+$lang['Rename'] = 'Premenovať';
+$lang['Please select at least two groups'] = 'Prosím označte aspoň dve skupiny';
+$lang['No group selected, no action possible.'] = 'Žiadna skupina nie je označená, žiadna akcia nie je možná.';
+$lang['No members to manage'] = 'Žiadni používatelia na spravovanie';
+$lang['Manage the members'] = 'Spravovať používateľov';
+$lang['Merge selected groups'] = 'Pridať označené skupiny';
+$lang['Duplicate'] = 'Duplikovať';
+$lang['Purge user cache'] = 'Vyčistiť cache používateľa';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Fotka bola zmenšená na %dx%d pixelov.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Zmena veľkosti po odoslaní zakázaná kvôli použitiu GD ako grafickej knižnice';
+$lang['Select at least one tag'] = 'Vyberte aspoň jedno kľúčové slovo';
+$lang['Mail theme'] = 'Témy mailu';
+$lang['General'] = 'Hlavné';
+$lang['Basic settings'] = 'Základné nastavenie';
+$lang['on the %d selected users'] = 'na %d označených používateľov';
+$lang['Users modified'] = 'Používatelia zmenení';
+$lang['User %s updated'] = 'Používateľ %s aktualizovaný';
+$lang['User %s added'] = 'Používateľ %s pridaný';
+$lang['Update user'] = 'Používateľ aktualizovaný';
+$lang['Showing %s to %s of %s users'] = 'Zobrazených %s až %s z %s používateľov';
+$lang['Show %s users'] = 'Zobrazených %s používateľov';
+$lang['Registered on %s, %s.'] = 'Registrované na %s, %s.';
+$lang['Password updated'] = 'Heslo aktualizované';
+$lang['No user selected, no action possible.'] = 'Žiaden používateľ označený, žiadna akcia možná.';
+$lang['No user selected of %d users'] = 'Žiaden používateľ z %d používateľov označený';
+$lang['No matching user found'] = 'Nenájdený požívateľ';
+$lang['Loading...'] = 'Nahrávam...';
+$lang['Last visit on %s, %s.'] = 'Naposledy videný %s, %s.';
+$lang['Change username'] = 'Zmeniť používateľské meno';
+$lang['Change password'] = 'Zmeniť heslo';
+$lang['All %d users are selected'] = 'Všetkých %d používateľov je označených';
+$lang['(filtered from %s total users)'] = '(odfotrovaných %s z celkového počtu používateľov)';
+$lang['%d of %d users selected'] = '%d z %d používateľov označených';
+?>
Index: /tags/2.6.0RC1/language/sk_SK/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/common.lang.php	(revision 25596)
@@ -0,0 +1,431 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Slovensky [SK]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=452
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Slovenčina';
+$lang_info['country'] = 'Slovenská republika';
+$lang_info['charset'] = 'UTF-8';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'sk';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album aktualizovaný';
+$lang['%d albums updated'] = '%d albumov aktualizovaných';
+$lang['%d comment to validate'] = '%d komentár na schválenie';
+$lang['%d comments to validate'] = '%d komentárov na schválenie';
+$lang['%d new photo'] = '%d nová fotka';
+$lang['%d new photos'] = '%d nových fotiek';
+$lang['%d comment'] = '%d komentár';
+$lang['%d comments'] = '%d komentárov';
+$lang['%d hit'] = '%d zobrazenie';
+$lang['%d hits'] = '%d zobrazení';
+$lang['%d new photo'] = '%d nový objekt';
+$lang['%d new photos'] = '%d nových objektov';
+$lang['%d new user'] = '%d nový používateľ';
+$lang['%d new users'] = '%d nových používateľov';
+$lang['About'] = 'O galérii';
+$lang['All tags'] = 'Všetky kľúčové slová';
+$lang['Any tag'] = 'Akékoľvek kľúčové slovo';
+$lang['At least one listed rule must be satisfied.'] = 'Aspoň jedno pravidlo zo zoznamu musí byť splnené.';
+$lang['Author'] = 'Autor';
+$lang['Albums'] = 'Albumy';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Zatvoriť okno';
+$lang['Complete RSS feed (photos, comments)'] = 'Kompletné RSS vlákno (fotografie, komentáre)';
+$lang['Confirm Password'] = 'Potvrdiť heslo';
+$lang['Connection settings'] = 'Nastavenie prihlasovacích údajov';
+$lang['Login'] = 'Prihlásiť sa';
+$lang['Contact webmaster'] = 'Kontaktovať webmastra';
+$lang['Create a new account'] = 'Vytvoriť nový účet';
+$lang['Created on'] = 'Vytvorené';
+$lang['Creation date'] = 'Dátum vytvorenia';
+$lang['Current password is wrong'] = 'Chybne zadané heslo';
+$lang['Dimensions'] = 'Rozmery';
+$lang['Display'] = 'Zobraziť';
+$lang['Each listed rule must be satisfied.'] = 'Všetky pravidlá zo zoznamu musia byť splnené.';
+$lang['Email address is missing. Please specify an email address.'] = 'Chýba e-mailová adresa. Prosím zadajte e-mailovú adresu.';
+$lang['Email address'] = 'E-mail';
+$lang['Enter your personnal informations'] = 'Vyplňte svoje osobné údaje';
+$lang['Error sending email'] = 'Chyba pri odosielaní správy';
+$lang['File name'] = 'Názov súboru';
+$lang['File'] = 'Súbor';
+$lang['Filesize'] = 'Veľkosť súboru';
+$lang['Filter and display'] = 'Zobraziť podľa filtra';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Zabudnuté heslo?';
+$lang['Go through the gallery as a visitor'] = 'Prechádzať galériu ako hosť';
+$lang['Help'] = 'Nápoveda';
+$lang['Identification'] = 'Identifikácia';
+$lang['Photos only RSS feed'] = 'RSS vlákno len s fotografiami';
+$lang['Keyword'] = 'Kľúčové slovo';
+$lang['Links'] = 'Odkazy';
+$lang['N/A'] = 'nezadané';
+$lang['New on %s'] = 'Nový na %s';
+$lang['Notification'] = 'RSS vlákno';
+$lang['Number of items'] = 'Počet položiek';
+$lang['Original dimensions'] = 'Pôvodné rozmery';
+$lang['Password forgotten'] = 'Zabudnuté heslo';
+$lang['Password'] = 'Heslo';
+$lang['Post date'] = 'Dátum zverejnenia';
+$lang['Posted on'] = 'Odoslané';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Rýchle prihlásenie';
+$lang['RSS feed'] = 'RSS čítačka';
+$lang['Register'] = 'Zaregistrovať sa';
+$lang['Registration'] = 'Registrácia';
+$lang['Related tags'] = 'Súvisiace kľúčové slová';
+$lang['Reset'] = 'Vynulovať';
+$lang['Retrieve password'] = 'Obnoviť heslo';
+$lang['Search rules'] = 'Podmienky pre vyhľadávanie';
+$lang['Search tags'] = 'Hľadať podľa kľúčových slov';
+$lang['Search'] = 'Vyhľadať';
+$lang['display available tags'] = 'Ukázať dostupné kľúčové slová';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Zoradiť podľa';
+$lang['Sort order'] = 'Smer zoradenia';
+$lang['Tag'] = 'Kľúčové slovo';
+$lang['Tags'] = 'Kľúčové slová';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS vlákno informuje o novinkách na týchto stránkach: nové fotografie, aktualizované albumy, komentáre. Použite RSS čítačku.';
+$lang['Unknown feed identifier'] = 'Neznámý identifikátor vlákna';
+$lang['User comments'] = 'Komentáre používateľov';
+$lang['Username'] = 'Používateľské meno';
+$lang['Visits'] = 'Návštev';
+$lang['Webmaster'] = 'Webmaster';
+$lang['Week %d'] = 'Týždeň %d';
+$lang['About Piwigo'] = 'O aplikácii Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Nemáte oprávnenie k prístupu na požadovanú stránku';
+$lang['add this photo to your favorites'] = 'Pridať túto fotografiu k obľúbeným';
+$lang['Administration'] = 'Administrácia';
+$lang['all'] = 'všetko';
+$lang['ascending'] = 'vzostupne';
+$lang['author(s) : %s'] = 'autor : %s';
+$lang['Expand all albums'] = 'Rozbaliť všetky albumy';
+$lang['posted after %s (%s)'] = 'vložené po %s (%s)';
+$lang['posted before %s (%s)'] = 'vložené pred %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'vložené medzi %s (%s) a %s (%s)';
+$lang['posted on %s'] = 'vložené %s';
+$lang['Best rated'] = 'Najlepšie hodnotené';
+$lang['display best rated photos'] = 'Zobraziť najlepšie hodnotené položky';
+$lang['Calendar'] = 'Kalendár';
+$lang['All'] = 'Všetko';
+$lang['display each day with photos, month per month'] = 'Fotografie podľa dňov, mesiac po mesiaci';
+$lang['View'] = 'Zobraziť';
+$lang['chronology_monthly_calendar'] = 'Kalendár na mesiac';
+$lang['chronology_monthly_list'] = 'Zoznam na mesiac';
+$lang['chronology_weekly_list'] = 'Týždenný zoznam';
+$lang['Click here if your browser does not automatically forward you'] = 'Ak neprebehlo automatické presmerovanie, kliknite sem';
+$lang['comment date'] = 'dátum vloženia komentára';
+$lang['Comment'] = 'Komentár';
+$lang['Your comment has been registered'] = 'Váš komentár bol zaregistrovaný';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Ochrana proti zahlteniu: prosím počkajte chvíľu pred vložením nového komentára';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Váš komentár nebol vložený, protože neprešiel schválením';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Váš komentár nebude zobrazený, pokiaľ ho neschváli administrátor.';
+$lang['This login is already used by another user'] = 'Prihlasovacie meno je už používané iným používateľom';
+$lang['Comments'] = 'Komentáre';
+$lang['Add a comment'] = 'Vložiť komentár';
+$lang['created after %s (%s)'] = 'vytvorené po %s (%s)';
+$lang['created before %s (%s)'] = 'vytvorené pred %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'vytvorené medzi %s (%s) a %s (%s)';
+$lang['created on %s'] = 'vytvorené %s';
+$lang['Customize'] = 'Upraviť';
+$lang['Your Gallery Customization'] = 'Prispôsobiť galériu ';
+$lang['day'][0] = 'Nedeľa';
+$lang['day'][1] = 'Pondelok';
+$lang['day'][2] = 'Utorok';
+$lang['day'][3] = 'Streda';
+$lang['day'][4] = 'Štvrtok';
+$lang['day'][5] = 'Piatok';
+$lang['day'][6] = 'Sobota';
+$lang['Default'] = 'Východzie';
+$lang['delete this photo from your favorites'] = 'Odstrániť fotografiu z obľúbených';
+$lang['Delete'] = 'Zmazať';
+$lang['descending'] = 'zostupne';
+$lang['Download'] = 'Stiahnuť';
+$lang['Download this file'] = 'stiahnuť tento súbor';
+$lang['edit'] = 'editovať';
+$lang['wrong date'] = 'chybný dátum';
+$lang['excluded'] = 'vyňaté';
+$lang['Your favorites'] = 'Obľúbené';
+$lang['display your favorites photos'] = 'zobraziť moje obľúbené fotografie';
+$lang['Favorites'] = 'Obľúbené';
+$lang['First'] = 'Začiatok';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galéria je uzamknutá z dôvodu údržby. Skúste to prosím neskôr.';
+$lang['Page generated in'] = 'Stránka vytvorená ';
+$lang['guest'] = 'hosť';
+$lang['Hello'] = 'Prihlásený ako';
+$lang['available for administrators only'] = 'prístupné len adminitrátorom';
+$lang['display this album'] = 'ukazuje fotografie v koreňovom adresári tohto albumu';
+$lang['display last user comments'] = 'Zobraziť najnovšie komentáre používateľov';
+$lang['customize the appareance of the gallery'] = 'prispôsobiť vzhľad galérie';
+$lang['search'] = 'hľadať';
+$lang['Home'] = 'Úvodná stránka';
+$lang['Identification'] = 'Identifikácia';
+$lang['in this album'] = 'v tomto albume';
+$lang['in %d sub-album'] = 'v %d podalbume';
+$lang['in %d sub-albums'] = 'v %d podalbumoch';
+$lang['included'] = 'vrátane';
+$lang['Invalid password!'] = 'Neplatné heslo!';
+$lang['Language'] = 'Jazyk';
+$lang['last %d days'] = 'posledných %d dní';
+$lang['Last'] = 'Koniec';
+$lang['Logout'] = 'Odhlásiť sa';
+$lang['obligatory'] = 'povinné';
+$lang['display a calendar by creation date'] = 'zobraziť v kalendári podľa dátumu vytvorenia';
+$lang['display all photos in all sub-albums'] = 'zobraziť všetky objekty v podalbumoch';
+$lang['return to normal view mode'] = 'návrat do normálneho zobrazenia';
+$lang['display a calendar by posted date'] = 'zobraziť v kalendári podľa dátumu vloženia';
+$lang['month'][10] = 'Október';
+$lang['month'][11] = 'November';
+$lang['month'][12] = 'December';
+$lang['month'][1] = 'Január';
+$lang['month'][2] = 'Február';
+$lang['month'][3] = 'Marec';
+$lang['month'][4] = 'Apríl';
+$lang['month'][5] = 'Máj';
+$lang['month'][6] = 'Jún';
+$lang['month'][7] = 'Júl';
+$lang['month'][8] = 'August';
+$lang['month'][9] = 'September';
+$lang['Most visited'] = 'Najčastejšie zobrazované';
+$lang['display most visited photos'] = 'najčastejšie zobrazované fotografie';
+$lang['The number of photos per page must be a not null scalar'] = 'Počet fotografií na stránke musí byť číslo väčšie ako 0.';
+$lang['Number of photos per page'] = 'Počet fotografií na stránke';
+$lang['Unknown identifier'] = 'Neznámy identifikátor';
+$lang['New password'] = 'Nové heslo';
+$lang['Rate this photo'] = 'Ohodnotiť túto fotografiu';
+$lang['Next'] = 'Nasledujúca';
+$lang['no rate'] = 'bez hodnotenia';
+$lang['Photos posted within the last %d day.'] = 'Fotografie vložené behom posledného %d dňa.';
+$lang['Photos posted within the last %d days.'] = 'Fotografie vložené behom posledných %d dní.';
+$lang['password updated'] = 'heslo aktualizované';
+$lang['Recent period must be a positive integer value'] = 'Aktuálny interval musí byť číslo väčšie ako 0.';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'fotografia';
+$lang['Click on the photo to see it in high definition'] = 'Pre zobrazenie vo vyššom rozlíšení kliknite na fotografiu';
+$lang['Show file metadata'] = 'Zobraziť metadata';
+$lang['Powered by'] = 'Publikované pomocou aplikácie';
+$lang['Preferences'] = 'Nastavenia';
+$lang['Previous'] = 'Predchádzajúca';
+$lang['Random photos'] = 'Náhodný výber';
+$lang['display a set of random photos'] = 'Zobraziť sadu fotografií podľa náhodného výberu';
+$lang['Recent albums'] = 'Nové albumy';
+$lang['display recently updated albums'] = 'zobraziť novo pridané albumy';
+$lang['Recent period'] = 'Doba, počas ktorej sú fotografie zobrazované ako novo pridané';
+$lang['Recent photos'] = 'Nové fotografie';
+$lang['display most recent photos'] = 'zobraziť novo pridané fotografie';
+$lang['Redirection...'] = 'Presmerovanie...';
+$lang['Please, enter a login'] = 'Zadajte prosím prihlasovacie údaje';
+$lang['login mustn\'t end with a space character'] = 'používateľské meno nesmie končiť medzerou';
+$lang['login mustn\'t start with a space character'] = 'používateľské meno nesmie začínať medzerou';
+$lang['this login is already used'] = 'tieto prihlasovacie údaje už sú používané';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'E-mail musí byť vo formáte xxx@yyy.eee (napríklad: kovac@zoznam.sk)';
+$lang['Auto login'] = 'Automatické prihlásenie';
+$lang['remove this tag from the list'] = 'odstrániť toto kľúčové slovo zo zoznamu';
+$lang['representative'] = 'vzorový';
+$lang['Search for Author'] = 'Hľadať autora';
+$lang['Search in albums'] = 'Hľadanie v albumoch';
+$lang['Search by date'] = 'Hľadať podľa dátumu pridania';
+$lang['Date'] = 'Od';
+$lang['End-Date'] = 'Do';
+$lang['Kind of date'] = 'Dátum:';
+$lang['Search for words'] = 'Hľadať slová';
+$lang['Search for all terms'] = 'Hľadať uvedené výrazy ';
+$lang['Search for any term'] = 'Hľadať všetky výrazy';
+$lang['Empty query. No criteria has been entered.'] = 'Neúplný dotaz. Neboli zadané žiadne podmienky pre vyhľadávanie.';
+$lang['Search results'] = 'Výsledky vyhľadávania';
+$lang['Search in sub-albums'] = 'Hľadanie v subalbumoch';
+$lang['searched words : %s'] = 'hľadať slová: %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'nastaviť album ako reprezentatívny';
+$lang['Show number of comments'] = 'Ukázať počet komentárov';
+$lang['Show number of hits'] = 'Ukázať počet zobrazení';
+$lang['slideshow'] = 'automatické prehrávanie';
+$lang['stop the slideshow'] = 'zastaviť automatické prehrávanie';
+$lang['Specials'] = 'Zobraziť';
+$lang['SQL queries in'] = 'SQL dotazov behom';
+$lang['display only recently posted photos'] = 'zobrazí len novo vložené fotografie';
+$lang['return to the display of all photos'] = 'návrat k zobrazeniu všetkých fotografií';
+$lang['the beginning'] = 'začiatok';
+$lang['Thumbnails'] = 'Náhľady';
+$lang['Menu'] = 'Ďalšie funkcie';
+$lang['A comment on your site'] = 'Komentár v Vašim stránkam';
+$lang['today'] = 'dnes';
+$lang['Update your rating'] = 'Aktualizovať hodnotenie';
+$lang['the username must be given'] = 'je nutné zadať používateľské meno';
+$lang['useful when password forgotten'] = 'užitočné pri zabudnutí hesla';
+$lang['Quick search'] = 'Rýchle hľadanie';
+$lang['Connected user: %s'] = 'Pripojený používateľ: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Prehliadač: %s';
+$lang['Author: %s'] = 'Autor: %s';
+$lang['Comment: %s'] = 'Komentár: %s';
+$lang['Comment by %s'] = 'Komentár od %s';
+$lang['User: %s'] = 'Používateľ: %s';
+$lang['Email: %s'] = 'E-mail: %s';
+$lang['Admin: %s'] = 'Administrátor: %s';
+$lang['Registration of %s'] = 'Registrácia %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Zlý stav pre používateľa "hosť", bude použitý východzí stav. Prosím informujte webmastra.';
+$lang['this email address is already in use'] = 'táto e-mailová adresa je už používaná';
+$lang['Album results for'] = 'Výsledky pre album';
+$lang['Tag results for'] = 'Výsledky pre kľúčové slová';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Spustiť prezentáciu';
+$lang['Pause of slideshow'] = 'Zastaviť prezentáciu';
+$lang['Repeat the slideshow'] = 'Opakovať prezentáciu';
+$lang['Not repeat the slideshow'] = 'Neopakovať prezentáciu';
+$lang['Reduce diaporama speed'] = 'Spomaliť';
+$lang['Accelerate diaporama speed'] = 'Zrýchliť';
+$lang['Submit'] = 'Poslať';
+$lang['Yes'] = 'Áno';
+$lang['No'] = 'Nie';
+$lang['%d photo'] = '%d fotografia';
+$lang['%d photos'] = '%d fotografií';
+$lang['%d photo is also linked to current tags'] = '%d fotografia je tiež spojená s aktuálnymi kľúčovými slovami';
+$lang['%d photos are also linked to current tags'] = '%d fotografií je tiež spojených s aktuálnymi kľúčovými slovami';
+$lang['display photos linked to this tag'] = 'Ukázať len fotografie spojené s aktuálnym kľúčovým slovom';
+$lang['photos posted during the last %d days'] = 'fotografie vložené za posledních %d dní';
+$lang['Piwigo Help'] = 'Nápoveda Piwigo';
+$lang['Rank'] = 'Hodnotiť';
+$lang['group by letters'] = 'zoskupiť podľa písmen';
+$lang['letters'] = 'písmená';
+$lang['show tag cloud'] = 'zobraziť kľúčové slová v bubline';
+$lang['cloud'] = 'bublina';
+$lang['Are you sure?'] = 'Ste si istý?';
+$lang['Reset to default values'] = 'Obnoviť východzie hodnoty';
+$lang['delete all photos from your favorites'] = 'vymazať všetky obrázky z Vašich obľúbených';
+$lang['Sent by'] = 'Poslané';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies sú buď blokované, alebo nie sú povolené vo Vašom prehliadači. Musíte povoliť cookies, aby bolo možné sa prihlásiť.';
+$lang['Edit a comment'] = 'Upraviť komentár';
+$lang['(!) This comment requires validation'] = '(!) Tento komentár vyžaduje kontrolu';
+$lang['Welcome'] = 'Vitajte';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Vitajte vo Vašej Piwigo fotogalérii!';
+$lang['... or browse your empty gallery'] = '... alebo prezerajte Vašu prázdnu galériu';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... alebo prosím zrušte túto správu, program nájde spôsob sám';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Vitajte %s, Vaša Piwigo fotogaléria je prázdna!';
+$lang['I want to add photos'] = 'Chcem pridať fotografie';
+$lang['Manage this user comment: %s'] = 'Spravujte tento používateľský komentár: %s';
+$lang['This author modified following comment:'] = 'Tento autor upravil nasledujúci komentár:';
+$lang['This author removed the comment with id %d'] = 'Tento autor zmazal komentár s identifikátorom %d';
+$lang['%d Kb'] = '%d Kb';
+$lang['IP: %s'] = 'IP: %s';
+$lang['%d new comment'] = '%d nový komentár';
+$lang['%d new comments'] = '%d nové komentáre';
+$lang['html tags are not allowed in login'] = 'html znaky nie sú povolené pri prihlásení';
+$lang['%d rates'] = '%d hodnotení';
+$lang['Rating score'] = 'Bodové hodnotenie';
+$lang['Invalid username or email'] = 'Nesprávne meno alebo email';
+$lang['Password reset is not allowed for this user'] = 'Obnova hesla nie je povolená pre tohto používateľa';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Používateľ "%s" nemal zadaný email, obnova hesla nie je možná';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Niekto požiadal o obnovu hesla pre nasledovný používateľský účet:';
+$lang['Username "%s" on gallery %s'] = 'Používateľské meno "%s" v galérii %s';
+$lang['To reset your password, visit the following address:'] = 'Pre obnovu hesla navštívte nasledovnú adresu:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ak to bola chyba, jednoducho ignorujte tento mail a všetko bude v poriadku.';
+$lang['Password Reset'] = 'Obnova hesla';
+$lang['Check your email for the confirmation link'] = 'Skontrolujte Váš email pre potvrdenie linku';
+$lang['Invalid key'] = 'Nesprávny kľúč';
+$lang['The passwords do not match'] = 'Heslo sa nezhoduje';
+$lang['Your password has been reset'] = 'Vaše heslo bolo obnovené';
+$lang['Return to home page'] = 'Návrat na Úvodnú stránku';
+$lang['Please enter your username or email address.'] = 'Prosím vložte Vaše používateľské meno alebo email.';
+$lang['You will receive a link to create a new password via email.'] = 'Obdržíte adresu na vytvorenie nového hesla cez email.';
+$lang['Username or email'] = 'Používateľské meno alebo email';
+$lang['Change my password'] = 'Zmeniť moje heslo';
+$lang['Enter your new password below.'] = 'Nižšie vložte Vaše nové heslo.';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Edit'] = 'Upraviť';
+$lang['Hello %s,'] = 'Ahoj %s,';
+$lang['Send my connection settings by email'] = 'Odoslať moje nastavenia pripojenia emailom';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Úspešná registrácia, obdržíte email s Vašimi nastaveniami pripojenia. Vitajte!';
+$lang['Username modification'] = 'Zmena používateľského mena';
+$lang['Your username has been successfully changed to : %s'] = 'Vaše používateľské meno bolo úspešne zmenené na : %s';
+$lang['square'] = 'Štvorec';
+$lang['thumb'] = 'Náhľad';
+$lang['small'] = 'Malý';
+$lang['medium'] = 'Stredný';
+$lang['large'] = 'Veľký';
+$lang['xlarge'] = 'Väčší';
+$lang['xxlarge'] = 'Najväčší';
+$lang['Original'] = 'Originál';
+$lang['Thank you for registering at %s!'] = 'Ďakujeme za registráciu na %s!';
+$lang['Here are your connection settings'] = 'Tu je Vaše nastavenie pripojenia';
+$lang['Password: %s'] = 'Heslo: %s';
+$lang['Username: %s'] = 'Používateľské meno: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ak si myslíte, že tento mail ste dostali chybne, kontaktujte nás prosím na %s';
+$lang['Show oldest comments first'] = 'Zobraziť staršie komentáre ako prvé';
+$lang['Show latest comments first'] = 'Zobraziť najnovšie komentáre ako prvé';
+$lang['Photo sizes'] = 'Veľkosti fotky';
+$lang['View in'] = 'Ukázať v';
+$lang['Mobile'] = 'Mobile';
+$lang['Desktop'] = 'Desktope';
+$lang['Mobile'] = 'Mobil';
+$lang['2small'] = 'XXS - malé';
+$lang['xsmall'] = 'XS – veľmi malé';
+$lang['File name, A &rarr; Z'] = 'Názov súboru, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Názov súboru, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Názov fotky, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Názov fotky, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Dátum vytvorenia, nové &rarr; staré';
+$lang['Date created, old &rarr; new'] = 'Dátum vytvorenia, staré &rarr; nové';
+$lang['Date posted, new &rarr; old'] = 'Dátum odoslania, nové &rarr; staré';
+$lang['Date posted, old &rarr; new'] = 'Dátum odoslania, staré &rarr; nové';
+$lang['Manual sort order'] = 'Manuálne zoradenie';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Číselný identifikátor, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Číselný identifikátor, 9 &rarr; 1';
+$lang['Rating score, high &rarr; low'] = 'Hodnotenie, vysoké &rarr; nízke';
+$lang['Rating score, low &rarr; high'] = 'Hodnotenie, nízke &rarr; vysoké';
+$lang['Visits, high &rarr; low'] = 'Zobrazenia, vysoké &rarr; nízke';
+$lang['Visits, low &rarr; high'] = 'Zobrazenia, nízke &rarr; vysoké';
+$lang['%d rate'] = '%d hodnotené';
+$lang['Bad request'] = 'Nesprávna požiadavka';
+$lang['Forbidden'] = 'Zakázané';
+$lang['Page not found'] = 'Stránka sa nenašla';
+$lang['Permalink for album not found'] = 'Permanentný link pre album sa nenašiel';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo narazilo na opraviteľnú chybu';
+$lang['Requested album does not exist'] = 'Požadovaný album neexistuje';
+$lang['Requested tag does not exist'] = 'Požadované kľúčové slovo neexistuje';
+$lang['Email address is mandatory'] = 'Emailová adresa je povinná';
+$lang['Username is mandatory'] = 'Meno používateľa je povinné';
+$lang['mandatory'] = 'povinné';
+$lang['Your website URL is invalid'] = 'URL Vašej web stránky je neplatné';
+$lang['Website'] = 'Web stránka';
+$lang['Email'] = 'Email';
+$lang['Go back to the album'] = 'Späť do albumu';
+$lang['Last Page'] = 'Posledná strana';
+$lang['First Page'] = 'Prvá strana';
+$lang['Password is missing. Please enter the password.'] = 'Chýba heslo. Prosím napíšte heslo.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Chýba potvrdenie hesla. Prosím potvrďte vybrané heslo.';
+$lang['%d photos per page'] = '%d fotiek na stránku';
+$lang['Theme'] = 'Téma';
+?>
Index: /tags/2.6.0RC1/language/sk_SK/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,117 @@
+<h2>Editovanie albumov</h2>
+
+<h3>Informácie</h3>
+
+<ul>
+
+  <li><strong>názov</strong>: premenujte album (virtuálne premenovanie v prípade fyzických albumov).</li>
+
+  <li><strong>popis</strong>: krátky text všeobecne popisujúci obsah, tento text sa zobrazí v spodnej časti pod stránkou s náhľadmi.</li>
+
+</ul>
+
+<h3>Presun</h3>
+
+<p>Ak je album virtuálny, môžete ho presunúť. Presun albumu znamená zmenu jeho rodičovského (nadradeného) albumu.</p>
+
+<h3>Možnosti</h3>
+
+<ul>
+
+  <li><strong>Typ prístupu</strong>: Správa oprávnení. Keď album nastavíte ako súkromný, všetci jeho potomkovia (podalbumy) sa stanú súkromnými. Keď nastavíte album ako verejný, stanú sa verejnými aj jeho nadradené albumy.</li>
+
+  <li><strong>Zámok</strong>: Album a jeho podalbumy sa dočasne kvôli údržbe zneprístupnia.</li>
+
+  <li><strong>Komentáre</strong>: Oprávení užívatelia, ktorí môžu komentovať obrázky tohto albumu.</li>
+
+</ul>
+
+<p>Tieto možnosti môžete tiež spravovať v správe  "Vlastnosti" (záložky <span
+class="pwgScreen">Komentáre</span>, <span class="pwgScreen">Zámok</span>,
+<span class="pwgScreen">Verejný/Súkromný</span>, <span
+class="pwgScreen">Reprezentatívny</span> dostupné v<span
+class="pwgScreen">Administrácia &raquo; Albumov &raquo; Vlastnosti</span>).</p>
+
+<h3>Poradie</h3>
+
+<p>Použiť východzie poradie obrázkov.</p>
+
+<p>Určuje, či toto radenie použiť tiež na podalbumy.</p>
+
+<p>Vyberte špecifické radenie, ktoré sa použije na tento album.</p>
+<ul>
+<li><strong>Dátum vytvorenia</strong>: Dátum vytvorenia obrázku</li>
+<li><strong>Dátum zverejnenia</strong>: Dátum synchronizácie</li>
+<li><strong>Priemerné hodnotenie (*)</strong>: Priemer sa mení podľa hodnotenia návštevníkov</li>
+<li><strong>Najčastejšie navštevované (*)</strong>: Poradie je ovlyvnené aktuálnou návštevnosťou</li>
+<li><strong>Názov súboru</strong>: Názov určený v informačnom poli</li>
+<li><strong>ID</strong>: Interné ID (novšie albumy majú vyššie ID než predchádzajúce).</li>
+
+</ul>
+<p><strong>(*)</strong>Varovanie: Vlastné radenie vždy otestujte, občas vie dať neočakávané výsledky.</p>
+
+
+<h3>Reprezentant</h3>
+
+<p>Reprezentant albumu je náhľad, ktorý sa zobrazí na hlavnej stránke (<span class="pwgScreen">category.php</span>) v prípade, keď obsahuje len podalbumy a nie priamo obrázky (rovnako ako koreňový album).</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Stránka s obrázkami</span>: Jedným z tlačidiel nastavíte aktuálny obrázok ako reprezentatívny. Toto tlačidlo je prístupné len administrátorom.</li>
+
+  <li><span class="pwgScreen">Úprava informácii o obrázku</span> v administrácii. Dostupné z <span
+  class="pwgScreen">picture.php</span>alebo <span class="pwgScreen">v Správe dávky</span> pri  <em>móde jednotlivo</em>. Viac v zodpovedajúcom pomocníkovi.</li>
+
+  <li><span class="pwgScreen">Administrácia &raquo; Albumy &raquo; Vlastnosti,
+  Reprezentatívny</span>. Viac v zodpovedajúcom pomocníkovi.</li>
+
+  <li><span class="pwgScreen">Editácia albumu</span> (súčasná obrazovka).</li>
+
+</ul>
+
+<p>Voľba reprezentanta záleží na
+<code>allow_random_representative</code> konfiguračnom parametre (v súbore <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>Vo defaultnom móde (<code>allow_random_representative</code> nastavená na false),
+každý album, ktorý obsahuje aspoň jeden prvok, je reprezentovaný fixným prvkom.
+Keď sa reprezentant nastaví (pri tvorbe albumu), môže ho zmeniť len administrátor. Pokiaľ reprezentant nevyhovuje,
+môžete použiť <strong>Nájsť reprezentanta pomocou náhodného výberu</strong>.</p>
+
+<p>Ak je konfiguračný parameter <code>allow_random_representative</code> nastavený na true,  album obsahujúci obrázky nemusí mať fixného reprezentanta.
+Len použite tlačidlo <strong>Vymazať reprezentanta</strong> .</p>
+
+<p>Ak album obstahuje len podalbumy a žiadne obrázky, aj tak môže byť reprezentovaný ľubovoľným prvkom vďaka oknu <span class="pwgScreen">Zmena informácii o obrázku</span>. Jediná možnosť v aktuálnom okne
+je tlačidlo <strong>Vymazať reprezentanta</strong>.</p>
+
+<h3>Napojiť všetky obrázky albumu na nový album</h3>
+
+<ul>
+
+<li><strong>Názov virtuálneho albumu</strong>: Názov novo vytvoreného albumu, 
+všetky obrázky z aktuálneho albumu sa napoja na tento album.</li>
+
+<li><strong>Nadradený album</strong>: Kde sa bude nachádzať nový album, 
+Nechajte prázdne, ak má byť v koreňovom adresári.</li>
+
+</ul>
+
+<h3>Napojiť všetky obrázky na existujúci album</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Vyberte cieľový album.</li>
+
+</ul>
+
+<h3>Poslať informačný email členom skupiny</h3>
+
+<ul>
+
+<ul>
+
+<li><strong>Skupina</strong>: skupina adresátov</li>
+
+<li><strong>Obsah emailu</strong>: ľubovoľný text emailu, ktorý sa odošle.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/sk_SK/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Premiestnenie virtuálneho albumu</h2>
+
+<p>Len virtuálne albumy môžu mať nový rodičovský album.</p>
+
+<h3>Virtuálne albumy na premiestnenie</h3>
+
+<p>Označte jeden alebo viac virtuálnych albumov, ktoré chcete premiestniť. 
+Ak je zoznam prázdny, to zanmená, že nemáte vytvorený žiaden.</p>
+
+<h3>Nový rodičovský album</h3>
+
+<p>Vyberte nový rodičovský album (virtuálny alebo fyzický).
+Ak nevyberiete žiaden rodičovský budú virtuálne vybrané albumy presunuté do rootu.
+Album nemôže byť presunutý do seba alebo do jedného z jeho podriadených.</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Vlastnosti albumu</h2>
+
+<p>Správa vlastností pre viac albumov naraz</p>
+
+<dl>
+
+<dt>Komentáre</dt>
+<dd>Komentár k obrázkom je možné pridať, ak sú zaradené do albumu, ktorý má aktivované komentáre.</dd>
+
+<dt>Zamknúť</dt>
+<dd>Zamknuté albumy sú kvôli údržbe neprístupné. V galérii ich vidia len administrátori.</dd>
+
+<dt>Verejný / súkromný</dt>
+<dd>Keď nastavíte album ako súkromný, udeľte prístupové práva užívateľom a skupinám</dd>
+
+<dt>Reprezentatívny</dt>
+<dd>Táto voľba je prístupná, keď je v konfigurácii nastavené
+<code>allow_random_representative</code> (viď <span
+ class="filename">include/config_defaults.inc.php</span>) na
+<em>true</em>. Každý album môže byť reprezentovaný náhodným obrázkom alebo obrázkom vami určeným.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/sk_SK/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Nastavenie oprávnení pre albumy</h2>
+
+<p>Toto nastavenie je prístupné len pre súkromné albumy (galérie). Tu si môžete zvoliť užívateľov a skupiny, pre ktoré je album prístupný.</p>
+
+<h3>Skupiny</h3>
+
+<p>Pre aktuálny album môžete odobrať alebo umožniť prístup skupine. Tým, že zmeníte oprávnenia skupín, užívateľom patriacim do týchto skupín sa odoprie alebo umožní prístu do albumu.</p>
+
+<h3>Užívatelia</h3>
+
+<p>Tiež môžete odobrať alebo udeliť prístup jednotlivým užívateľom. Užívateľom, ktorí majú prístup cez skupinu, sa môže odoprieť prístup cez výnimky.</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,22 @@
+<p>Existuje niekoľko možností, ako pridať fotografie do Vašej Piwigo galérie:</p>
+
+<ul>
+  <li><strong>priame nahranie</strong> vo Vašom web prehliadači je najjednoduchšia a najpriamejšia cesta. Záleží na možnostiach Vašeho prehliadača a Vašeho web servra.
+  Pre nahranie veľkého množstva fotografií, alebo v prípade, že tento spôsob sklame, sú tu ďalšie možnosti.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Prejdite na priame nahrávanie</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> je aplikácia, ktorú musíte nainštalovať na Váš počítač. Pretiahnite fotografie do okna pLoader, kliknite na <em>"Upload to Piwigo"</em> a nechajte pLoader nahraťt fotografie na server. Existujú taktiež ďalšie aplikácie ako <strong>WinToPiwigo</strong>, alebo <strong>Digikam</strong>, doplnok pre nahrávanie fotografií do Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Prejdite na pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP prenos</strong> je najviac odporúčaná cesta, ako nahrať veľké množstvo fotografií s minimálnym úsilím. Nasledujte návod, ako pripraviť Vaše fotografie. Táto metóda Vám dáva možnosť presne riadiť usporiadanie Vašich fotografií na Vašom servri.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Prejdite na FTP prenos</a></p>
+</div>
Index: /tags/2.6.0RC1/language/sk_SK/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/help_groups.html	(revision 25596)
@@ -0,0 +1,8 @@
+<p>Skupiny predstavujú spôsob, ako nastaviť rovnaké oprávnenia pre viacero používateľov.</p>
+
+<p>Vytvorte skupinu pomocou <span class="pwgScreen">Administrácia &raquo; Používatelia &raquo; Skupiny</span> a priraďte používateľov do tejto skupiny pomocou
+<span class="pwgScreen">Administrácie &raquo; Používatelia &raquo;
+Správa</span>.</p>
+
+<p>Používateľ môže patriť do viacerých skupín. Používateľ potom získava práva súčtom práv všetkých týchto skupín: pokiaľ používateľ "janko" patrí do skupín "rodina" aj "priatelia" a len "rodina" má oprávnenie na kategóriu "Vianoce" tak 
+"janko" kategóriu "Vianoce" uvidí.</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Akonáhle ste vytvorili Vašu galériu, môžete ju nakonfigurovať pre Vašich návštevníkov.
+<ul>
+    <li>Predvolené zobrazenie ako chcete v <span class="pwgScreen">Administrácia &raquo; Konfigurácia &raquo; Možnosti</span> tab <span class="pwgScreen">Nastavenie návštevníka</span></li>
+    <li>Predvolený motív v <span class="pwgScreen">Administrácia &raquo; Konfigurácia &raquo; Motívy</span></li>
+    <li>Predvolený jazyk v <span class="pwgScreen">Administrácia &raquo; Konfigurácia &raquo; Jazyky</span></li>
+</ul>
+Štandardne každý nový používateľ bude mať tieto základné nastavenia po registrácii.
+</p>
+<p>Ak máte nejaké otázky, Piwigo komunita Vás rada privíta na <a href="http://piwigo.org/forum">jej fórume</a>.</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,54 @@
+<fieldset>
+<legend>Oprávnenia na fotografiách</legend>
+
+<p>Každá fotografia má <strong>úroveň súkromia</strong> (zámok). Každý používateľ má úroveň prístupu (kľúč). Existuje 5 úrovní:</p>
+<ol>
+  <li>Žiadna</li>
+  <li><em>Kontakty</em></li>
+  <li><em>Priatelia (vyššia ako kontakty)</em></li>
+  <li><em>Rodina (vyššia ako priatelia)</em></li>
+  <li><em>Adminstrátori (nejvyššia)</em></li>
+</ol>
+
+<p>Vyššie úrovne majú oprávnenia na nižšie úrovne. Pre daného upoužívateľa to znamená, že čím vyššiu úroveň prístupu má, tým viac fotografií vidí.</p>
+
+<p>Napríklad, pokiaľ fotografie "svatba-0011.jpg" má úroveň súkromia <em>"Rodina"</em> tak:</p>
+<ul>
+  <li>Peter (ktorý je <em>"Administrátor"</em>) ju uvidí, protože <em>"Administrátori"</em> môžu vidieť všetky fotografie</li>
+  <li>Barbora (ktorá je <em>"Rodina"</em>) tiež uvidí</li>
+  <li>Mária (ktorá je len <em>"Priateľ"</em>) ale fotografiu neuvidí</li>
+</ul>
+
+<p>Používateľ, ktorý nemá právo vidieť obsah kategórie, neuvidí ani kategóriu ako takú a teda ani jej názov. Rovnaký princíp platí pre kľúčové slová.</p>
+
+<p>Úroveň prístupu (kľúč) môžete nastaviť na obrazovke <span class="pwgScreen">Administrácia &raquo; Používatelia &raquo; Správa</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Oprávnenia na kategóriach</legend>
+
+<p>Pokiaľ Vám vyššie popísané úrovne súkromia nevyhovujú, môžete tiež spravovať oprávnenia pre používateľov a pre skupiny. Môžete spravovať oprávnenia pre používateľov aj pre skupiny naraz, bez rizika, že by došlo ku konfliktom.</p>
+
+<p>Môžete zakázať prístup do kategórií. Prepnite prístup do kategórie na 
+"súkromný" pokiaľ chcete riadiť prístup.</p>
+
+<p>Môžete nastaviť prístup do kategórie na "súkromný" pri editácii jednej kategórie (<span class="pwgScreen">Administrácia &raquo; Kategória &raquo; Správa
+&raquo; editovať</span>), alebo nastavením vlastností pre celý strom kategórií 
+(<span class="pwgScreen">Administrácia &raquo; Kategórie &raquo;
+Vlastnosti &raquo; Verejná / Súkromná</span>).</p>
+
+<p>Keď je prístup do kategórie nastavený na "súkromný", môžete riadiť prístup pre skupiny a používateľov na troch obrazovkách:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administrácia &raquo; Používatelia &raquo; Správa &raquo;
+  akcia oprávnenia</span></li>
+
+  <li><span class="pwgScreen">Administrácia &raquo; Používatelia &raquo; Skupiny &raquo;
+  akcia oprávnenia</span></li>
+
+  <li><span class="pwgScreen">Administrácia &raquo; Kategória &raquo; Správa &raquo; editovať</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/sk_SK/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Fotografie sú zobrazené v kategórii, ktorá zodpovedá adresáru, v ktorom sú uložené.</p>
+
+<p>Môžete ale tiež zobraziť rovnakú fotografiu vo viacerých kategóriách bez toho, že by museli byť uložené na servri viackrát. urobíte to tak, že spojíte fotografiu s akoukoľvek inou kategóriou pomocou obrazovky <span class="pwgScreen">Upraviť informácie o fotografii</span>, ktorú môže administrátor vyvolať zo stránky zobrazenia fotografie.</p>
+
+<p>Virtuálne kategórie sú založené na tomto koncepte: nemajú žiaden odpovedajúci adresá na servri. Virtuálne kategórie môžete vytvoriť pomocou <span class="pwgScreen">Administrácia &raquo; Kategória &raquo;
+Správa</span>.</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sk_SK/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,102 @@
+<fieldset>
+  <legend>Rýchly návod</legend>
+
+<ol>
+  <li>Vytvorte kategóriu (adresár) na Vašom počítači.</li>  
+
+  <li>Skopírujte nejaké fotografie do tohto adresára, zmeňte ich veľkosť pre zobrazenie na webe. <em>Varovanie</em>: názvy adresárov a súborov musia obsahovať len písmena, čísla, "-", "_" alebo ".". Žiadne medzery alebo znaky s diakritikou.</li>
+
+  <li>Pomocou FTP skopírujte Váš adresár do adresára "galleries" vašej inštalácie  Piwigo.</li>
+
+  <li>Prihláste sa do Vašej Piwigo galérie a prejdite na <span class="pwgScreen">Administrácia &raquo; Nástroje &raquo; Náhľady</span> aby ste vytvorili chýbajúce náhľady.</li>
+
+  <li>Choďte na <span class="pwgScreen">Adminstrácia</span> a stlačte veľké tlačidlo Rýchla miestna synchronizácia.</li>
+</ol>
+
+Gratulujeme! Práve ste vytvorili vašu prvú galériu fotografií vo Vašej Piwigo galérii.
+</fieldset>
+
+<fieldset>
+  <legend>Organizácia súborov a adresárov</legend>
+
+<ul>
+
+  <li>
+
+    <p>Adresáre kategórií sú v Piwigo adresári 
+    "galleries". Tu je ukážka malej adresárovej štruktúry Piwigo (ktorá ale využívá veľa vlastností Piwigo):</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- kategoria-1
+|   |   |-- kategoria-1.1
+|   |   |   |-- kategoria-1.1.1
+|   |   |   |   |-- kategoria-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- svatba.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-svatba.jpg
+|   |   |   |   |   +-- svatba.jpg
+|   |   |   |   +-- kategoria-1.1.1.2
+|   |   |   +-- kategoria-1.1.2
+|   |   |-- kategoria-1.2
+|   |   |   |-- slon.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-slon.jpg
+|   |   +-- kategoria-1.3
+|   +-- kategoria-2
+|       |-- teliatko.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-teliatko.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+
+  <li>Okrem adresárov pomenovaných "thumbnail", "pwg_high" alebo "pwg_representative" (čítajte vysvetlenie nižšie), každý adresár v "galleries" vytvorí kategóriu. Nie je tu omedzenie hĺbky adresárov.</li>
+
+  <li>Každý element kategórie je reprezentovaný súborom. Súbor môže byť elementom Piwigo pokiaľ jeho prípona odpovedá parametru konfigurácie <code>file_ext</code>
+  (viz. súbor <span
+  class="filename">include/config_default.inc.php</span>). Súbor môže byť obrázok (fotografia) ak jeho prípona je uvedená v parametri <code>picture_ext</code>.</li>
+
+  <li>Obrázky musia mať priradený náhľad (viz. sekcia o náhľadoch nižšie)</li>
+
+  <li>Obrázky môžu mať priradenú verziu vo vysokej kvalite. Ako napríklad svatba.jpg v príklade vyššie. Verzia vo vysokej kvalite nemá, na rozdiel od náhľadu, žiaden prefix v názve.</li>
+
+  <li>Elementy, ktoré nie sú obrázky (video, zvuk, textové súbory, čokoľvek chcete...) majú ako východzí náhľad ikonu, ktorá odpovedá ich prípone. Voliteľne môžete priradiť náhľad a reprezentatívny súbor (viď. video.avi v príklade vyššie).</li>
+
+  <li><em>Varovanie</em>: názvy adresárov a súborov musia obsahovať len písmená, čísla, "-", "_" alebo ".". Žiadne medzery alebo znaky s diakritikou.</li>
+
+  <li>Keď sú elementy, obrázky, náhľady a reprezentatívne súbory umiestnené v adresárovej štruktúre, prejdite na: <span class="pwgScreen">Administrácia &raquo; Kategória &raquo;
+  Synchronizácia</span></li>
+
+</ul>
+</fieldset>
+
+<fieldset>
+  <legend>Náhľady</legend>
+<ul>
+
+  <li>Všetky obrázky (fotografie) musia mať priradený náhľad.</li>
+
+  <li>Náhľady sú umiestnené v podadresári "thumbnail", ktorý je v adresári kategórie. Náhľad má rovnaký názov ako jemu odpovídajúci obrázok s prefixom podľa konfiguračného parametra <code>prefix_thumbnail</code> (viď. <span class="filename">include/config.inc.php</span>).</li>
+
+  <li>Náhľad nemusí mať nutne rovnakú príponu ako jemu odpovedajúcí obrázok (napríklad ".jpg", obrázok môže mať náhľad s ".GIF" príponou).</li>
+
+  <li>Odporúčame použiť externú aplikáciu pre tvorbu náhľadov.</li>
+
+  <li>Vytváranie náhľadov pomocou Piwigo môže viesť k zlej kvalite vytvorených náhľadov, protože tá závisí na zdrojoch servra (a toto môže byť na zdielaných servroch (webhosting) problém).
+
+  <li>Pokiaľ budete aj tak vytvárať náhľady pomocou Piwigo na servri, tak musíte povoliť prístup pre zápis do všetkých adresárov "galleries" a všetkých podadresárov.</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/sk_SK/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Vyhľadávanie</h2>
+
+<p>Táto stránka umožňuje vyhľadávať obrázky z celej galérie.</p>
+
+<dl>
+
+  <dt>Vyhľadávanie podľa zadaných slov</dt>
+  <dd>Vyhľadávanie jedného alebo viac slov podľa atribútu priradeného k obrázku v galérii. Pre vyhľadávanie slov s čiastočnou zhodou je možné použiť * ako zástupný znak.</dd>
+
+  <dt>Vyhľadávanie podľa autora</dt>
+  <dd>Pre čiastočnú zhodu použite * ako zástupný znak.</dd>
+
+  <dt>Vyhľadávanie podľa dátumu</dt>
+  <dd>Vyberte počiatočný a/alebo koncový dátum. Pole ponechajte prázdne, ak chcete vyhľadávať "doteraz". Rok v poslednom poli musí by v nasledujúcom tvare :  RRRR (napr. 2004)</dd>
+
+  <dt>Vyhľadávanie v albumoch</dt>
+  <dd>Vyberte jeden či viac albumov, v ktorých chcete vyhľadávať. Vo všetkých podalbumoch sa dá vyhľadávať výberom rodičovského albumu a nastavením voľby "prehľadávať aj podalbumy".</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/sk_SK/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Synchronizácia</h2>
+
+<p>Existujú dve rôzne typy synchronizácie:</p>
+<ul>
+	<li>adresáre/soubory</li>
+	<li>metadáta súboru</li>
+</ul>
+
+<p>Synchronizácia adresárov a súborov slúži k aktualizácii vášho stromu adresárov so stromom albumov v databáze. 
+Synchronizácia súborových metadát slúži k aktualizácii informácii o fotografii, napr. veľkosť súboru, rozmery v pixeloch, EXIF či IPTC informácii v databáze.</p>
+
+<p>Keď synchronizujete svoje nahrávky s vašou galériou, najprv musíte synchronizovať adresáre a súbory.</p>
+
+<p>Synchronizácia môže trvať nejaký čas (závisí od zaťaženia a rýchlosti servera a počtu položiek, ktoré treba zvládnuť, takže je možné robiť ju album po albume).</p>
Index: /tags/2.6.0RC1/language/sk_SK/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/help/user_list.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Zoznam užívateľov</h2>
+
+<p>Na tomto mieste môžete spravovať užívateľov vašej Piwigo galérie.</p>
+
+<h3>Pridať užívateľa</h3>
+
+<p>Administrátor môže pridať užívateľa ručne. Pre každého užívateľa vytvorte užívateľské meno, heslo a odošlite platnú emailovú adresu</p>
+
+<h3>Zoznam užívateľov</h3>
+
+<p>Zoznam užívateľov je možné filtrovať podľa užívateľského mena (použite * pre čiastočnú zhodu), skupiny alebo stavu. 
+Výpis môžete nechať zoradiť podľa dátumu registrácie, vo vzostupnom alebo zostupnom poradí.</p>
+
+<p>Tu je možné editovať niekoľko užívateľov naraz. Môžete použiť tieto akcie:</p>
+
+<ul>
+
+<li>zmazanie užívateľov (vyžaduje potvrdenie)</li>
+<li>zmena stavu užívateľa</li>
+<li>zaradenie alebo vyradenie zo skupiny</li>
+<li>úprava vlastností zobrazenia</li>
+<li>úprava dodatočných vlastností</li>
+
+</ul>
+
+<p>Cieľom je vybraný užívateľ (východzie nastavenie) alebo všetci užívatelia zobrazení po použití filtra.</p> 
Index: /tags/2.6.0RC1/language/sk_SK/index.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sk_SK/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/install.lang.php	(revision 25596)
@@ -0,0 +1,72 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Inštalácia';
+$lang['Basic configuration'] = 'Základná konfigurácia';
+$lang['Default gallery language'] = 'Základný jazyk galérie';
+$lang['Database configuration'] = 'Databázová konfigurácia';
+$lang['Admin configuration'] = 'Administrátorská konfigurácia';
+$lang['Start Install'] = 'Spustiť inštaláciu';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Bude zobrazený návštevníkom. Je nutný pre administráciu aplikácie.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Spojenie na server sa podarilo, ale nebolo možné pripojiť databázu';
+$lang['Can\'t connect to server'] = 'Nebolo možné sa pripojiť k serveru';
+$lang['Host'] = 'MySQL server';
+$lang['localhost, sql.multimania.com, toto.freesurf.fr'] = 'localhost, sql.multimania.com, toto.freesurf.sk';
+$lang['User'] = 'Používateľ';
+$lang['user login given by your host provider'] = 'používateľské meno, ktoré Vám pridelil prevádzkovateľ serveru';
+$lang['user password given by your host provider'] = 'heslo na tomto serveri';
+$lang['Database name'] = 'Názov databázy';
+$lang['also given by your host provider'] = 'ktorý na tomto servri';
+$lang['Database table prefix'] = 'Predpona názvov databázových tabuliek';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'názvy vytvorených databázových tabuliek budú označené predponou (pre ich jednoduchšiu správu)';
+$lang['enter a login for webmaster'] = 'zadať používateľské meno webmastra';
+$lang['webmaster login can\'t contain characters \' or "'] = 'používateľské meno správcu nemôže obsahovať znak \' alebo "';
+$lang['please enter your password again'] = 'prosím zadať znovu heslo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Heslo majte utajené, umožní Vám prístup do administrácie aplikácie';
+$lang['Password [confirm]'] = 'Heslo [potvrdenie]';
+$lang['verification'] = 'kontrola';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Potrebujete pomoc? Opýtajte sa na <a href="%s">Piwigo fóre</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Návštevníci môžu pomocou tohto e-mailu kontaktovať správcu';
+$lang['PHP 5 is required'] = 'Je nutné PHP 5';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Na Vašom webhostingu je PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo sa môže pokúsiť zmeniť Vaše nastavenie na PHP 5 tým, že vytvorí alebo zmení súbor .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Prípadne môžete zmeniť Vašu konfiguráciu sami a potom reštartovať Piwigo.';
+$lang['Try to configure PHP 5'] = 'Pokúste sa zmeniť Vaše nastavenie na PHP 5';
+$lang['Sorry!'] = 'Bohužiaľ!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nebolo schopné zmeniť Vaše nastavenie na PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Obráďte sa na poskytovateľa Vašeho webhostingu, aby ste zistili, ako môžete zmeniť Vaše nastavenie na PHP 5.';
+$lang['Hope to see you back soon.'] = 'Veríme, že sa čoskoro uvidíme.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulujeme, Piwigo inštalácia je ukončená';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Náhradným riešením je skopírovať text z boxu vyššie a vložiť ho do súboru "local/config/database.inc.php" (Upozornenie: súbor database.inc.php môže obsahovať len to, čo je v tomto boxe, žiadne znaky odriadkovania alebo medzery)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Vytvorenie súboru local/config/database.inc.php sa nepodarilo.';
+$lang['Download the config file'] = 'Stiahnuť konfiguračný súbor';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Môžete stiahnuť konfiguračný súbor a nahrať ho do adresára local/config Vašej inštalácie.';
+$lang['Just another Piwigo gallery'] = 'Len iná Piwigo galéria';
+$lang['Welcome to my photo gallery'] = 'Vitajte v mojej foto galérii';
+$lang['Welcome to your new installation of Piwigo!'] = 'Vitajte vo Vašej novej inštalácii Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Neváhajte konzultovať na našom fóre každú pomoc: %s'; 
+$lang['localhost or other, supplied by your host provider'] = 'localhost alebo iné, obdržíte od poskytovateľa hostu';
+?>
Index: /tags/2.6.0RC1/language/sk_SK/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Slovensky [SK]
Index: /tags/2.6.0RC1/language/sk_SK/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sk_SK/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sk_SK/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,45 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// | Czech language localization                                           |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2009     Pavel Budka & Petr Jirsa    http://pbudka.co.cc |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Aktualizácia';
+$lang['Upgrade from version %s to %s'] = 'Aktualizácia z verzie %s na %s';
+$lang['Statistics'] = 'Štatistika';
+$lang['total upgrade time'] = 'celkový čas aktualizácie';
+$lang['total SQL time'] = 'celkový čas SQL';
+$lang['SQL queries'] = 'SQL otázky';
+$lang['Upgrade informations'] = 'Informácie o aktualizácii';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Vykonanie kontroly údržby v [Administrácia>Nástroje>Údržba] ak narazíte na problém.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Len administrátor môže spustiť aktualizáciu: prosím prihláste sa nižšie.';
+$lang['You do not have access rights to run upgrade'] = 'Nemáte prístupové práva na spustenie aktualizácie';
+$lang['All sub-albums of private albums become private'] = 'Všetky subalbumy súkromných albumov budú súkromné';
+$lang['User permissions and group permissions have been erased'] = 'Používateľské oprávnenia a oprávnenia skupín boli vymazané';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z predchádzajúcej konfigurárie boli zachované len predpony náhľadov a mailová adresa webmastra.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Navrhujeme aktualizovať databázu Vašej galérie Piwigo zo staršej na novú verziu.
+Asistent aktualizácie sa domnieva, že aktuálne používate <strong>verziu %s</strong> (alebo obdobnú).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Ako predbežné opatrenie boli deaktivované nasledujúce doplnky. Prosím skontrolujte aktualizácie týchto doplnkov predtým než ich znovu aktivujete:';$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'V <i>%s</i>, pred <b>?></b>, vložením:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Z opatrnosti boli nasledovné témy deaktivované. Musíte skontrolovať aktualizácie tém pred ich reaktiváciou:';
+
+?>
Index: /tags/2.6.0RC1/language/sl_SI/about.html
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/about.html	(revision 25596)
@@ -0,0 +1,18 @@
+﻿<p>Piwigo foto galerija</p>
+
+<p>Piwigo je spletna foto galerija, zgrajena s pomočjo aktivne skupnosti uporabnikov in razvijalcev.
+   Piwigo je možno preko razširitev na hiter in enostaven način prilagoditi vašim zahtevam.
+   Piwigo je odprto kodni projekt in je brezplačen.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Obiščite Piwigo spletno stran</a></p>
+
+
+<p>Slovenski prevod vzdržujejo (v abecednem vrstnem redu ):
+
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18864">MarkoAm</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18786">obucek</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=18932">simon.krajnc</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=15806">svartur81</a></li>
+	</ul>
+           .... zahvala vsem</p>
Index: /tags/2.6.0RC1/language/sl_SI/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/admin.lang.php	(revision 25596)
@@ -0,0 +1,971 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['%d album including'] = '%d album vsebuje';
+$lang['%d album moved'] = '%d album je bil premaknjen';
+$lang['%d albums including'] = '%d albumov vsebuje';
+$lang['%d albums moved'] = '%d albumov je bilo premaknjenih';
+$lang['%d anomalies have been detected corrected.'] = '%d anomalij je bilo zaznanih in odpravljenih.';
+$lang['%d anomalies have been detected.'] = '%d anomalij je bilo zaznanih.';
+$lang['%d anomalies have been ignored.'] = '%d anomalij je bilo ignoriranih.';
+$lang['%d anomalies have not been corrected.'] = '%d anomalij ni bilo odpravljenih.';
+$lang['%d anomaly has been corrected.'] = '%d anomalija je bila odpravljena.';
+$lang['%d anomaly has been detected.'] = '%d anomalija je bila zaznana.';
+$lang['%d anomaly has been ignored.'] = '%d anomalija je bila ignorirana.';
+$lang['%d anomaly has not been corrected.'] = '%d anomalija ni bila odpravljena.';
+$lang['%d association'] = '%d asocijacija';
+$lang['%d associations'] = '%d asocijacij';
+$lang['%d group'] = '%d skupina';
+$lang['%d groups'] = '%d skupine';
+$lang['%d guest'] = '%d gost';
+$lang['%d guests'] = '%d gostov';
+$lang['%d line filtered'] = '%d vrstica filtrirana';
+$lang['%d lines filtered'] = '%d vrstic filtriranih';
+$lang['ACCESS_0'] = 'Prosti dostop';
+$lang['ACCESS_1'] = 'Polni dostop';
+$lang['ACCESS_2'] = 'Dostop za registrirane uporabnike';
+$lang['ACCESS_3'] = 'Dostop za administratorje';
+$lang['ACCESS_4'] = 'Dostop za spletne skrbnike';
+$lang['ACCESS_5'] = 'Brez dostopa';
+$lang['Action'] = 'Dejanje';
+$lang['Actions'] = 'Dejanja';
+$lang['Activate icon "%s"'] = 'Omogoči ikono "%s"';
+$lang['Activate Navigation Bar'] = 'Omogoči navigacijsko vrstico';
+$lang['Activate Navigation Thumbnails'] = 'Omogoči navigacijo za predoglede';
+$lang['Activate'] = 'Omogoči';
+$lang['Activate icon "new" next to albums and pictures'] = 'Omogoči ikono "novo" poleg albumov in slik';
+$lang['Active Languages'] = 'Omogočeni jeziki';
+$lang['Active Plugins'] = 'Omogočeni vtičniki';
+$lang['Active Themes'] = 'Omogočene teme';
+$lang['Add a criteria'] = 'Dodaj kriterij';
+$lang['Add a filter'] = 'Dodaj filter';
+$lang['Add a tag'] = 'Dodaj znacko';
+$lang['clean'] = 'pobriši';
+$lang['Comments for all'] = 'Komentarji za vse';
+$lang['Complementary mail content'] = 'Komplementarna vsebina pošte';
+$lang['Configuration'] = 'Konfiguracija';
+$lang['confirm'] = 'potrdi';
+$lang['Continue processing treatment'] = 'Nadaljuj z obdelavo';
+$lang['Correction applied with error'] = 'Popravek namešcen z napako';
+$lang['Correction applied with success'] = 'Popravek uspešno namešcen';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Odpravljene anomalije ne bodo več ignorirane.';
+$lang['Correction'] = 'Popravek';
+$lang['create a new album'] = 'ustvari nov album';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Ustvari imenik "%s" v korenu Piwigo namestitve.';
+$lang['Create this site'] = 'Ustvari stran';
+$lang['delete album'] = 'odstrani album';
+$lang['Delete orphan tags'] = 'Odstrani neuporabljene oznake';
+$lang['delete photo'] = 'odstrani sliko';
+$lang['Delete Representant'] = 'Odstrani Predstavnika';
+$lang['Delete selected photos'] = 'Odstrani izbrane slike';
+$lang['Delete selected tags'] = 'Odstrani izbrane oznake';
+$lang['Delete selected users'] = 'Odstrani izbrane uporabnike';
+$lang['Delete this language'] = 'Odstrani jezik';
+$lang['delete this site and all its attached elements'] = 'odstrani stran in pripadajoče podatke';
+$lang['Delete this theme'] = 'Odstrani temo';
+$lang['delete'] = 'odstrani';
+$lang['Deleted on'] = 'Odstranjeno';
+$lang['deleted'] = 'odstranjeno';
+$lang['Deletions'] = 'Odstrani';
+$lang['Deny selected groups'] = 'Prepreči dostop izbranim skupinam';
+$lang['Deny selected users'] = 'Prepreči dostop izbranim uporabnikom';
+$lang['Description'] = 'Opis';
+$lang['Average rate'] = 'Povprečje';
+$lang['Rate'] = 'Glasuj';
+$lang['Album "%s" has been added'] = 'Album "%s" je bil dodan';
+$lang['Album "%s" now contains %d photos'] = 'Album "%s" vsebuje %d slik';
+$lang['Album photos associated to the following albums: %s'] = 'Slike albuma pripadajo naslednjim albumom: %s';
+$lang['Album list management'] = 'Upravljanje seznama albuma';
+$lang['Album manual order was saved'] = 'Ročna nastavitev razvrščanja albuma je bila uspešno shranjena';
+$lang['Album name'] = 'Ime albuma';
+$lang['Album updated successfully'] = 'Album uspešno popravljen';
+$lang['albums added in the database'] = 'albumi dodani v bazo';
+$lang['Albums automatically sorted'] = 'Albumi so bili samodejno razvrščeni';
+$lang['albums deleted in the database'] = 'albumi odstranjeni iz baze';
+$lang['Access type'] = 'Vrsta dostopa';
+$lang['Add a user'] = 'Dodaj uporabnika';
+$lang['Add a virtual album'] = 'Dodaj navidezni (virtualni) album';
+$lang['Add another set of photos'] = 'Dodaj nov nabor slik';
+$lang['Add detailed content'] = 'Dodaj vsebino';
+$lang['Add group'] = 'Dodaj skupino';
+$lang['Add New Language'] = 'Dodaj nov jezik';
+$lang['add new photos to caddie'] = 'dodaj nove slike v košarico';
+$lang['Add New Theme'] = 'Dodaj novo temo';
+$lang['Add Photos'] = 'Dodaj slike';
+$lang['Add write access to the "%s" directory'] = 'Dodaj pravico pisanja "%s" imeniku';
+$lang['Add'] = 'Dodaj';
+$lang['Add/delete a permalink'] = 'Dodaj/odstrani stalno povezavo';
+$lang['added'] = 'dodano'; 
+$lang['%d tag'] = '%d oznaka';
+$lang['%d tags'] = '%d oznake';
+$lang['%d user comment rejected'] = '%d komentar zavrnjen';
+$lang['%d user comment validated'] = '%d komentar preverjen';
+$lang['%d user comments rejected'] = '%d komentarjev zavrnjenih';
+$lang['%d user comments validated'] = '%d komentarjev preverjenih';
+$lang['%d user deleted'] = '%d uporabnik odstranjen';
+$lang['%d user was not updated.'] = '%d uporabnik ni bil posodobljen.';
+$lang['%d user was updated.'] = '%d uporabnik posodobljen.';
+$lang['%d user'] = '%d uporabnik';
+$lang['%d users deleted'] = '%d uporabnikov odstranjenih';
+$lang['%d users were not updated.'] = '%d uporabnikov ni bilo posodobljenih.';
+$lang['%d users were updated.'] = '%d uporabnikov posodobljenih.';
+$lang['%d users'] = '%d uporabnikov';
+$lang['%d waiting for validation'] = '%d čaka preverjanje';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s mora biti nastavljeno na false v datoteki: local/config/config.inc.php';
+$lang['%s value is not correct file because exif are not supported'] = '%s vrednost je neveljavna, exif ni podprt';
+$lang['+ Add an upload box'] = '+ Dodaj polje nalaganja';
+$lang[', click on'] = ', klikni na';
+$lang[' and %d virtual'] = ' in %d navidezen';
+$lang['%d mail was not sent.'] = '%d e-mail ni bil poslan.';
+$lang['%d mail was sent.'] = '%d e-mail uspešno poslan.';
+$lang['%d mails were not sent.'] = '%d e-mailov ni bilo poslanih.';
+$lang['%d mails were sent.'] = '%d e-mailov poslanih.';
+$lang['%d member'] = '%d član';
+$lang['%d members'] = '%d članov';
+$lang['%d of %d photos selected'] = '%d od %d slik izbranih';
+$lang['%d parameter was updated.'] = '%d parameter popravljen.';
+$lang['%d parameters were updated.'] = '%d parametrov popravljenih.';
+$lang['%d photo was deleted'] = '%d slika odstranjena';
+$lang['%d photos uploaded'] = '%d slik naloženih';
+$lang['%d photos were deleted'] = '%d slik  odstranjenih';
+$lang['%d physical'] = ' %d fizičen';
+$lang['A new version of Piwigo is available.'] = 'Na voljo je nova različica Piwigo.';
+$lang['Administration Home'] = 'Administracija';
+$lang['Advanced features'] = 'Napredne možnosti';
+$lang['Albums authorized thanks to group associations'] = 'Albumi omogočeni zahvaljujoč skupini ki ji pripadajo';
+$lang['All %d photos are selected'] = 'Vseh %d slik je izbranih';
+$lang['All optimizations have been successfully completed.'] = 'Vsi optimizacijski postopki uspešno zakljuceni.';
+$lang['all'] = 'vsi';
+$lang['Allow rating'] = 'Dovoli glasovanje';
+$lang['Allow user customization'] = 'Dovoli uporabniku prilagoditev';
+$lang['Allow user registration'] = 'Dovoli registracijo uporabnika';
+$lang['Allow users to delete their own comments'] = 'Dovoli uporabnikom brisanje lastnih komentarjev';
+$lang['Allow users to edit their own comments'] = 'Dovoli uporabnikom popravljanje lastnih komentarjev';
+$lang['an error happened'] = 'prišlo je do napake';
+$lang['An error occured during extraction (%s).'] = 'Med razširjanjem datotek (%s) je prišlo do napake.';
+$lang['An information email was sent to group "%s"'] = 'Informativni e-mail je bil poslan skupini "%s"';
+$lang['and'] = 'in';
+$lang['Anomaly'] = 'Nepravilnost';
+$lang['General statistics'] = 'Splošna statistika';
+$lang['Get Support on Piwigo Forum'] = 'Za več pomoči obišči Piwigo forum';
+$lang['global mode'] = 'globalni način';
+$lang['Go to %s or %s for more informations'] = 'Pojdi na %s ali %s za več informacij';
+$lang['Go to'] = 'Pojdi na';
+$lang['Grant selected groups'] = 'Odobri izbrane skupine';
+$lang['Grant selected users'] = 'Odobri izbrane uporabnike';
+$lang['group "%s" added'] = 'skupina "%s" dodana';
+$lang['group "%s" deleted'] = 'skupina "%s" odstranjena';
+$lang['group "%s" updated'] = 'skupina "%s" popravljena';
+$lang['Group management'] = 'Upravljanje skupin';
+$lang['Group name'] = 'Ime skupine';
+$lang['Group'] = 'Skupina';
+$lang['Groups'] = 'Skupine';
+$lang['Guest cannot be deleted'] = 'Gost ne more biti odstranjen';
+$lang['Guest Settings'] = 'Nastavitve gosta';
+$lang['guest'] = 'gost';
+$lang['Guests'] = 'Gosti';
+$lang['height must be a number superior to'] = 'višina mora biti številka, večja od ';
+$lang['Hello'] = 'Pozdravljen';
+$lang['Hello,'] = 'Pozdravljen,';
+$lang['Help Me'] = 'Pomagaj mi';
+$lang['Hide'] = 'Skrij';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Kakorkoli, ta zavihek je viden le skrbnikom, administratorjem pa ne.';
+$lang['Apply action'] = 'Uporabi dejanje';
+$lang['Apply selected corrections'] = 'Uporabi izbrane popravke';
+$lang['Apply to sub-albums'] = 'Uporabi na vseh pod-albumih';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ali res želite namestiti posodobitev ? Potrebno je preveriti, če nova različica ne zahteva odstranitev trenutno namešcene.';
+$lang['Are you sure you want to delete this plugin?'] = 'Ali res želite odstraniti ta vtičnik?';
+$lang['Are you sure you want to install this plugin?'] = 'Ali res želite namestiti ta vtičnik?';
+$lang['Associate to album'] = 'Poveži z albumom';
+$lang['associate to group'] = 'poveži s skupino';
+$lang['Associated'] = 'Povezano';
+$lang['Authorize users to add comments on selected albums'] = 'Avtoriziraj uporabnike za dodajanje komentarjev na izbranih albumih';
+$lang['Authorized'] = 'Avtoriziran';
+$lang['Automatic correction'] = 'Avtomatski popravki';
+$lang['automatic order'] = 'avtomatsko razvrščanje';
+$lang['Available only with HTML format'] = 'Na voljo le v HTML obliki';
+$lang['average time'] = 'povprečen čas';
+$lang['Batch Manager'] = 'Paketni upravljalnik';
+$lang['between'] = 'med';
+$lang['Bound Theme'] = 'Povezana tema';
+$lang['By %s'] = 'Po %s';
+$lang['By rank'] = 'Po oceni';
+$lang['%s has been successfully updated.'] = '%s je bil uspešno posodobljen.';
+$lang['%s photos can not be regenerated'] = '%s slik se ne da regenerirat';
+$lang['%s photos have been regenerated'] = '%s slike so bile regenerirane';
+$lang['(this tag will be deleted)'] = '(ta oznaka bo odstranjena)';
+$lang['... or '] = '... ali ';
+$lang['Add tags'] = 'Dodaj oznake';
+$lang['Add to caddie'] = 'Add to caddie';
+$lang['All extensions are up to date.'] = 'Vse razširitve so posodobljene.';
+$lang['All languages are up to date.'] = 'Vsi jeziki so posodobljeni.';
+$lang['All plugins are up to date.'] = 'Vsi vticniki so posodobljeni.';
+$lang['All themes are up to date.'] = 'Vse teme so posodobljene.';
+$lang['Allowed file types: %s.'] = 'Dovoljeni vrste datotek so: %s.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Med razširjanjem je prišlo do napake. Prosimo preverite pravice datotek vaše piwigo namestitve.<br>Prikaži <a href="%s"> dnevnik napak</a>.';
+$lang['An error has occured during upgrade.'] = 'Prišlo je do napake med nadgrajevanjem.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna resolucija: %dM pik (to je %dx%d pik).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = ' Privzeto bo Piwigo ustvaril nove spletne slike iz vaših slik visoke ločljivosti.';
+$lang['Can\'t connect to server.'] = 'Ne morem vzpostaviti povezave s strežnikom.';
+$lang['Can\'t create temporary file.'] = 'Ne morem ustvariti začasne datoteke.';
+$lang['Check all'] = 'Preveri vse';
+$lang['Choose an action'] = 'Izberi dejanje';
+$lang['Create'] = 'Ustvari';
+$lang['created'] = 'ustvarjeno';
+$lang['%d days'] = '%d dnevi';
+$lang['%d hour'] = '%d ura';
+$lang['%d hours'] = '%d ure';
+$lang['%d minute'] = '%d minuta';
+$lang['%d minutes'] = '%d minute';
+$lang['%d second'] = '%d sekunda';
+$lang['%d seconds'] = '%d sekunde';
+$lang['Database'] = 'Podatkovna baza';
+$lang['Date'] = 'Datum';
+$lang['Day'] = 'Dan';
+$lang['Deactivate all'] = 'Deaktiviraj vse';
+$lang['Deactivate'] = 'Deaktiviraj';
+$lang['Detailed informations'] = 'Podrobne informacije';
+$lang['Directory does not exist'] = 'Imenik ne obstaja';
+$lang['Directory'] = 'Imenik';
+$lang['Documentation'] = 'Dokumentacija';
+$lang['Drop into album'] = 'Izberi album';
+$lang['Edit album'] = 'Uredi album';
+$lang['default values'] = 'privzete vrednosti';
+$lang['default'] = 'privzeto';
+$lang['directories + files'] = 'imeniki + datoteke';
+$lang['display'] = 'prikaz';
+$lang['Added by %s'] = 'Dodal';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je program, ki je namenjen upravljanju velikega števila digitalnih fotografij ter za kasnejše urejanje.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je zmogljivo orodje za izboljšavo fotografij in za upravljanje velikih knjižnic na Mac sistemih';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je namenjen profesionalnim fotografom hkrati pa vsebuje iPhoto preprostost';
+$lang['Applications'] = 'Aplikacije';
+$lang['Activate comments'] = 'Omogoči komentarje';
+$lang['%d week'] = '%d teden';
+$lang['%d weeks'] = '%d tednov';
+$lang['%d year'] = '%d leto';
+$lang['%d years'] = '%d let';
+$lang['%s ago'] = '%d nazaj';
+$lang['%s in the future'] = '%s naprej';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uporabniki imajo samodejno dovoljenje ker pripadajo odobreni skupini';
+$lang['A locked gallery is only visible to administrators'] = 'Zaklenjeno galerijo lahko vidijo le Administratorji';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo za iOS</em> je aplikacija, ki vam omogoči povezavo z vašo Piwigo galerijo preko iOS naprave (iPhone, iPad ali iPod Touch) . Ustvarite nove albume in naložite več fotografij hkrati.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo za Android</em> je aplikacija, ki vam omogoči povezavo z vašo Piwigo galerijo preko Andriod naprave. Ustvarite nove albume in naložite več fotografij hkrati.';
+$lang['%d physicals'] = ' %d fizičen';
+$lang['%d month'] = '%d mesec';
+$lang['%d months'] = '%d mesecev';
+$lang['%d day'] = '%d dni';
+$lang[' and %d virtuals'] = ' in %d navidezen';
+$lang['ERROR'] = 'NAPAKA';
+$lang['Discover album:'] = 'Razišči album:';
+$lang['Drag to re-order'] = 'Klikni in spusti za spreminjanje vrstnega reda';
+$lang['Downloads'] = 'Prenosi';
+$lang['Download,'] = 'Prenesi';
+$lang['Crop'] = 'Izreži';
+$lang['Current name'] = 'Trenutno ime';
+$lang['Database synchronization with files'] = 'Sinhroniziranje podatkovne baze z datotekami';
+$lang['Confirm merge'] = 'Potrdi spajanje';
+$lang['Classic display'] = 'Klasičen prikaz';
+$lang['Apply watermark if height is bigger than'] = 'Vstavi vodni žig, če je višina večja kot';
+$lang['Apply watermark if width is bigger than'] = 'Vstavi vodni žig, če je širina večja kot';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Privzeto je središče pozornosti umeščena na sredino fotografije.';
+$lang['Choose an option'] = 'Izberi možnost.';
+$lang['Check integrity'] = 'Preverjanje integritete.';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Preverjanje nadgradnje neuspešno zaradi neznanega razloga.';
+$lang['Check for upgrade'] = 'Preveri za nadgradnjo';
+$lang['Check for updates'] = 'Preveri za posodobitve';
+$lang['Check automatic corrections'] = 'Preveri avtomatske popravke';
+$lang['Change Admin Colors'] = 'Spremeni administratorsko barvno paleto';
+$lang['Center of interest'] = 'Središče pozornosti';
+$lang['Cannot delete the old permalink !'] = 'Stari permalink ni mogoče izbrisati.';
+$lang['Cancel'] = 'Razveljavi';
+$lang['Can\'t read or extract archive.'] = 'Arhiva ni bilo mogoče prebrati ali razširiti.';
+$lang['Can\'t download archive.'] = 'Arhiva ni bilo mogoče naložiti.';
+$lang['Caddie management'] = 'Upravljanje košarice';
+$lang['Caddie'] = 'Košarica';
+$lang['Available versions for'] = 'Na voljo različice za';
+$lang['Available on'] = 'Na voljo na';
+$lang['Automatic sort order'] = 'Avtomatsko razvrščanje';
+$lang['Languages which need upgrade'] = 'Jeziki, ki potrebujejo posodobitev';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Teme ni mogoče izbrisati ker se navezuje na drugo temo.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ni mogoče deaktivirati jezika, potrebuješ vsaj en jezik.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ni mogoče deaktivirati jezika, označiti moraš nadomestni jezik';
+$lang['Invert'] = 'Obrni';
+$lang['Last import'] = 'Zadnji uvoz';
+$lang['Last revisions'] = 'Zadnja revizija';
+$lang['Level 1'] = 'Kontakti';
+$lang['Level 0'] = '---';
+$lang['Learn more'] = 'Več o tem...';
+$lang['Last send'] = 'Nazadnje poslano';
+$lang['Last hit'] = 'Zadnji zadetek';
+$lang['Languages'] = 'Jeziki';
+$lang['Language has been successfully installed'] = 'Jezik je bil uspešno posodobljen';
+$lang['Landscape'] = 'Pokrajina';
+$lang['Instructions to use Piwigo'] = 'Navodila za uporabo Piwigo';
+$lang['Installed Themes'] = 'Nameščene teme';
+$lang['Inactive Languages'] = 'Neaktivni jeziki.';
+$lang['Inactive Plugins'] = 'Neaktivni vtičniki.';
+$lang['Inactive Themes'] = 'Neaktivne teme';
+$lang['Install on your computer,'] = 'Namesti na svoj računalnik';
+$lang['Installed Languages'] = 'Nameščeni jeziki';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Ni mogoče deaktivirati teme, potrebna je vsaj še ena tema.';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Vključi podatke o zgodovini (Opozorilo: presežena je lahko strežniška pomnilniška omejitev)';
+$lang['Information data registered in database'] = 'Podatki Informacij zabeleženi v podatkovni bazi';
+$lang['Informations'] = 'Informacije';
+$lang['Install'] = 'Namesti';
+$lang['Image Quality'] = 'kakovost slike';
+$lang['Impossible automatic correction'] = 'Avtomatski popravek ni mogoč';
+$lang['Images manual order was saved'] = 'Ročni vrstni red slik shranjen';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Teme ni mogoče aktivirati, manjka nadrejena tema';
+$lang['Image id'] = 'id slike';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Če HD ni na voljo in je trenutna spletna velikost večja kot pomanjšana dimenzija bo Piwigo umaknil sliko kot HD in kreiral pomanjšano spletno sliko iz nje.';
+$lang['Height'] = 'Višina';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Dodatki vsebujejo možnosti za brskanje po galeriji, kreiranje albumov in nalaganje fotografij.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Za velikosti slik z izrezom, kot npr.  "Kvadrat", bo Piwigo poskušal kar najbolje vključiti središče pozornosti';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Čas izvajanja je prekoračen, postopek se mora nadaljevati (Preostali čas: %sekund)';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Čas izvajanja je potekel, postopek se mora nadaljevati (Preostali čas: %sekund)';
+$lang['Graphics Library'] = 'Grafična knjižnica';
+$lang['Groups and users'] = 'Skupine in uporabniki';
+$lang['High definition'] = 'Visoka ločljivost (HD)';
+$lang['High definition enabled'] = 'Visoka ločljivost omogočena';
+$lang['History'] = 'Zgodovina';
+$lang['Hit'] = 'Zadetek';
+$lang['Hour'] = 'Ura';
+$lang['Hoverbox display'] = 'Hoverbox prikaz';
+$lang['I decide to update anyway'] = 'Vseeno nadaljuj s posodobitvijo';
+$lang['IP'] = 'IP';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Če naletiš na težavo ali imaš kakršnokoli vprašanje, prosim pošlji sporočilo na';
+$lang['Ignore All'] = 'Prezri vse';
+$lang['Ignore selected anomalies'] = 'Prezri označene nepravilnosti';
+$lang['Ignore this update'] = 'Prezri to posodobitev';
+$lang['File upload stopped by extension'] = 'Nalaganje datoteke ustavljeno zaradi končnice';
+$lang['File/directory read error'] = 'Napaka pri branju Datoteke/Mape';
+$lang['Find a new representant by random'] = 'Poišči naključno sličico za album';
+$lang['Follow Orientation'] = 'Sledi orientaciji';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sledeči vtičniki morda niso združljivi z novo verzijo Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sledeče preobleke morda niso združljive z novo verzijo Piwigo:';
+$lang['Forbid this language to users'] = 'Uporabnikom prepreči uporabo tega jezika';
+$lang['Forbid this theme to users'] = 'Uporabnikom prepreči uporabo te preobleke';
+$lang['Forbidden'] = 'Prepovedano';
+$lang['Form'] = 'Obrazec';
+$lang['GD library is missing'] = 'GD knjižnica ni nameščena';
+$lang['GD version'] = 'GD različica';
+$lang['Gallery title'] = 'Naslov galerije';
+$lang['Gallery unlocked'] = 'Galerija je odklenjena';
+$lang['Generate multiple size images'] = 'Ustvari slike različnih velikosti';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Omogoči dovoljenje za pisanje (chmod 777) na "%s" mapi v korenu vaše Piwigo namestitve';
+$lang['File'] = 'Datoteka';
+$lang['Extensions Update'] = 'Posodobitev razširitev';
+$lang['FTP + Synchronization'] = 'FTP + Sinhronizacija';
+$lang['Failed to write file to disk'] = 'Napaka pri zapisu datoteke na disk';
+$lang['Edit ranks'] = 'Urejanje uvrstitvenih nivojev';
+$lang['Edit selected tags'] = 'Uredi izbrane oznake';
+$lang['Edit tags'] = 'Uredi oznake';
+$lang['Element'] = 'Predmet';
+$lang['Element type'] = 'Tip predmeta';
+$lang['Email administrators when a comment is deleted'] = 'E-mail skrbnikom, ko je komentar izbrisan';
+$lang['Email administrators when a comment is modified'] = 'E-mail skrbnikom, ko je komentar spremenjen';
+$lang['Email admins when a comment requires validation'] = 'E-mail skrbnikom, ko komentar potrebuje potrditev';
+$lang['Email admins when a new user registers'] = 'E-mail skrbnikom, ob registraciji novega uporabnika';
+$lang['Email admins when a valid comment is entered'] = 'E-mail skrbnikom, ko je objavljen veljaven komentar';
+$lang['Environment'] = 'Okolje';
+$lang['Error list'] = 'Seznam napak';
+$lang['Error on file "%s" : %s'] = 'Napaka v datoteki "%s" : %s ';
+$lang['Error when sending email to %s [%s].'] = 'Napaka pri pošiljanju e-pošte za: %s [%s].';
+$lang['Errors caption'] = 'Legende napak';
+$lang['Everybody'] = 'Vsi';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif dodatek ni na voljo, skrbnik naj ga onemogoči';
+$lang['Extend for templates'] = 'Razširi predloge';
+$lang['Delete multiple size images'] = 'Izbriši slike večih velikosti';
+$lang['Display options'] = 'Možnosti prikaza';
+$lang['Dissociate from album'] = 'Loči od albuma';
+$lang['Dissociated'] = 'Loči';
+$lang['Do you want to activate anyway?'] = 'Ĺ˝elite vseeno aktivirati?';
+$lang['Does not represent'] = 'Ni sličica za';
+$lang['Dump Database'] = 'Odloži podatkovno bazo';
+$lang['Duplicate'] = 'Podvoji';
+$lang['Duplicate selected tags'] = 'Podvoji izbrane oznake';
+$lang['Duplicates'] = 'Podvojeni';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'NAPAKA: TA VTIČNIK MANJKA VENDAR JE NAMEĹ ČEN! ODSTRANITE GA ZDAJ.';
+$lang['Edit album permissions'] = 'Uredi dovoljenja albuma';
+$lang['Edit photo'] = 'Uredi sliko';
+$lang['Edit photo information'] = 'Uredi informacije o sliki';
+$lang['Default comments order'] = 'Privzeti vrstni red komentarjev';
+$lang['Default display'] = 'Privzeti prikaz';
+$lang['Default photos order'] = 'Privzeti vrstni red slik';
+$lang['Default user cannot be deleted'] = 'Privzetega uporabnika se ne da izbrisati';
+$lang['Default user does not exist'] = 'Privzeti uporabnik ne obstaja';
+$lang['No photo selected, %d photos in current set'] = 'Označene ni nobene fotografije, %d fotografije v trenutnem nizu';
+$lang['No photo can be deleted'] = 'Ni fotografij, ki bi jih bilo mogoče izbrisati';
+$lang['No photo in the current set.'] = 'V tem nizu ni fotografij';
+$lang['No mail to send.'] = 'Ni maila, ki bi ga lahko poslali';
+$lang['No group selected, no action possible.'] = 'Označena ni nobena skupina, izvesti ni mogoče nobenega ukaza';
+$lang['No group is permitted to see this private album'] = 'Nobena skupina nima dovoljenja za ogled tega privatnega albuma';
+$lang['No members to manage'] = 'Ni članov za upravljanje';
+$lang['No order field selected'] = 'Ni označenega vrstnega reda polj';
+$lang['No photo in this album'] = 'V tem albumu ni fotografij';
+$lang['New tag'] = 'Nova oznaka';
+$lang['No destination tag selected'] = 'Označena ni bila ustrezna oznaka';
+$lang['No file was uploaded'] = 'Nobena datoteka ni bila naložena';
+$lang['No display'] = 'Ni prikaza';
+$lang['New photos were added'] = 'Nove fotografije bodo dodane';
+$lang['New parent album'] = 'Nov starševski album';
+$lang['New photos added'] = 'Dodane so bile nove fotografije';
+$lang['New Version'] = 'Nova verzija';
+$lang['New name'] = 'Novo ime';
+$lang['Name of the duplicate'] = 'Ime duplikata';
+$lang['Name'] = 'Ime';
+$lang['Miscellaneous'] = 'Različno';
+$lang['Missing Plugins'] = 'Manjka vtičnik';
+$lang['Modify information'] = 'Spremeni informacije';
+$lang['Missing a temporary folder'] = 'Manjka začasna mapa';
+$lang['Month'] = 'Mesec';
+$lang['Move'] = 'Premakni';
+$lang['Move albums'] = 'Premakni albume';
+$lang['Move to album'] = 'Premakni v album';
+$lang['Multiple Size'] = 'Več strani';
+$lang['Minimum privacy level'] = 'Minimalni nivo zasebnosti';
+$lang['Minimum width'] = 'Minimalna širina';
+$lang['Minimum height'] = 'Minimalna višina';
+$lang['Metadata synchronized from file'] = 'Metapodatki so bili sinhronizirani z datoteko';
+$lang['Merge tags'] = 'Združi oznake';
+$lang['Metadata synchronization results'] = 'Rezultati sinhronizacije metapodatkov';
+$lang['Merge selected tags'] = 'Združi označene oznake';
+$lang['Merge selected groups'] = 'Združi označene skupine';
+$lang['Menu Management'] = 'Meni';
+$lang['Members'] = 'Člani';
+$lang['Maximum width'] = 'Maksimalna širina';
+$lang['Main "guest" user status is incorrect'] = 'Status osnovnega uporabnika "Gost" je napačen';
+$lang['Main "webmaster" user does not exist'] = 'Osnoven "webmaster" uporabnik ne obstaja';
+$lang['Main "webmaster" user status is incorrect'] = 'Osnoven "webmaster" uporabniški status je napačen';
+$lang['Make this theme available to users'] = 'Potrdi dostopnost te teme uporabnikom';
+$lang['Make this language available to users'] = 'Potrdi dostopnost tega jezika vsem uporabnikom';
+$lang['Maintenance'] = 'Vzdrževanje';
+$lang['Main Page'] = 'Glavna stran';
+$lang['Manage'] = 'Upravljaj';
+$lang['Manage authorizations for selected albums'] = 'Upravljaj avtorizacije za izbrane albume';
+$lang['Manage Permissions'] = 'Upravljaj dovoljenja';
+$lang['Manage permissions for user "%s"'] = 'Upravljaj dovoljenja za uporabnika "%s"';
+$lang['Manage permissions for group "%s"'] = 'Upravljaj dovoljenja za skupino "%s"';
+$lang['Manage photo ranks'] = 'Upravljanje uvrstitve fotografij';
+$lang['Manage photos'] = 'Upravljaj fotografije';
+$lang['Manage tags'] = 'Urejanje oznak';
+$lang['Manage the members'] = 'Urejanje članov';
+$lang['Manage this set of %d photos'] = 'Upravljal ta sklop %d fotografij.';
+$lang['Maximum height'] = 'Maksimalna višina';
+$lang['Manual order'] = 'Ročni vrstni red';
+$lang['Maximum file size: %sB.'] = 'Maksimalna velikost datoteke: %sB.';
+$lang['Mail sent to %s [%s].'] = 'e-mail poslan za  %s [%s].';
+$lang['Link all album photos to some existing albums'] = 'Poveži vse fotografije albuma v nek že obstoječi album';
+$lang['Link all album photos to a new album'] = 'Poveži vse fotografije tega albuma v nov album';
+$lang['Level 8'] = 'Administratorji';
+$lang['Level 2'] = 'Prijatelji';
+$lang['Level 4'] = 'Družina';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'V vaši php.ini datoteki, je dodeljen upload_max_filsezie (%B) večji kot post_max_size(%B), spremeniti morate nastavitve!';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Ostanite v stiku s projektom Piwigo, naročite se na obvestila o spremembah in novostih. Poslali vam bomo obvestilo z informacijami o novih verzijah programa Piwigo, ki lahko vključujejo tudi pomembne varnostne popravke in ostale pomembnejše posodobitve. Obvestila pošiljamo samo takrat, ko je to nujno potrebno.';
+$lang['Include display of recent photos grouped by dates'] = 'Vključi pogled novejših fotografij združenih po datumu';
+$lang['Linked albums'] = 'Povezani albumi';
+$lang['Main "guest" user does not exist'] = 'Osnoven uporabnik "gost" ne obstaja';
+$lang['Mail content'] = 'Vsebina e-pošte';
+$lang['Mail address is obligatory for all users'] = 'E-mail naslov je obvezen za vse uporabnike';
+$lang['Locked'] = 'Zaklenjeno';
+$lang['Lock gallery'] = 'Zakleni galerijo';
+$lang['Lock albums'] = 'Zakleni albume';
+$lang['Lock'] = 'Zakleni';
+$lang['Local'] = 'Lokalno';
+$lang['List'] = 'Seznam';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'preveri to oddaljeno stran';
+$lang['the forum'] = 'forum';
+$lang['the wiki'] = 'wiki';
+$lang['top left corner'] = 'zgornji levi kot';
+$lang['top right corner'] = 'zgornji desni kot';
+$lang['total time'] = 'skupen čas';
+$lang['unit mode'] = 'enojen način';
+$lang['unknown'] = 'nepoznan';
+$lang['unset'] = 'razveljavi nastavitev';
+$lang['update the database from files'] = 'posodobi podatkovno datoteko z datotekami';
+$lang['user "%s" added'] = 'uporabnikr "%s" dodan';
+$lang['user_status_admin'] = 'Administrator';
+$lang['user_status_generic'] = 'Splošen';
+$lang['user_status_guest'] = 'Gost';
+$lang['user_status_normal'] = 'Uporabnik';
+$lang['user_status_webmaster'] = 'Skrbnik';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'obiskovalci se morajo vpisati in imeti ustrezna dovoljenja za ogled tega albuma';
+$lang['width must be a number superior to'] = 'širina mora biti število večje od';
+$lang['wrong filename'] = 'napačno ime datoteke';
+$lang['randomly represented'] = 'naključna sličica albuma';
+$lang['ranks'] = 'uvrstitve';
+$lang['reduce to single existing albums'] = 'zmanjšaj na en sam obstoječ album';
+$lang['registered users'] = 'registrirani uporabniki';
+$lang['registration date'] = 'datum registracije';
+$lang['remove author'] = 'odstrani avtorja';
+$lang['remove creation date'] = 'odstrani datum nastanka';
+$lang['remove tags'] = 'odstrani oznake';
+$lang['remove this filter'] = 'odstrani ta filter';
+$lang['remove title'] = 'odstrani ime';
+$lang['selection'] = 'izbor';
+$lang['set to'] = 'nastavi na';
+$lang['show details'] = 'prikaži podrobnosti';
+$lang['simple visitors'] = 'preprosti obiskovalci';
+$lang['singly represented'] = 'stalna sličica albuma';
+$lang['status'] = 'stanje';
+$lang['sub-albums'] = 'pod-albumi';
+$lang['synchronize files metadata with database photos informations'] = 'sinhroniziraj podatkovno bazo slik z metapodatki datotek';
+$lang['synchronize files structure with database'] = 'sinhroniziraj strukturo datotek s podatkovno bazo';
+$lang['target'] = 'cilj';
+$lang['none'] = 'noben';
+$lang['nothing'] = 'nič';
+$lang['number of miniaturized photos'] = 'število ustvarjenih sličic';
+$lang['on'] = 'na';
+$lang['on the %d selected photos'] = 'na %d izbranih slikah';
+$lang['only directories'] = 'samo direktoriji';
+$lang['only perform a simulation (no change in database will be made)'] = 'izvedi le simulacijo (v podatkovni bazi ne bo prišlo do sprememb)';
+$lang['other'] = 'ostalo';
+$lang['overrides existing values with empty ones'] = 'prepiše obstoječe vrednosti s praznimi';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je ime za <em>Piwigo prenašalnik</em>. Na vašem računalniku pLoader pripravi vaše slike in jih prenese v vašo Piwigo foto galerijo.';
+$lang['pending validation'] = 'na čakanju odobritve';
+$lang['photos added in the database'] = 'slike dodate v podatkovno bazo';
+$lang['photos candidates for metadata synchronization'] = 'možne slike za sinhronizacijo metapodatkov';
+$lang['photos deleted from the database'] = 'slike izbrisane iz podatkovne baze';
+$lang['photos informations synchronized with files metadata'] = 'informacije slik sinhronizirane z metapodatki datotek';
+$lang['photos per page'] = 'slik na stran';
+$lang['photos updated in the database'] = 'slike posodobljene v podatkovni bazi';
+$lang['pixels'] = 'piksli';
+$lang['private'] = 'zasebno';
+$lang['public'] = 'javno';
+$lang['even already synchronized photos'] = 'tudi že sinhronizirane slike';
+$lang['existing album'] = 'obstoječ album';
+$lang['first photo added on %s'] = 'prva slika dodana: %s';
+$lang['for the file format'] = 'za obliko datoteke';
+$lang['for this file format'] = 'za to obliko datoteke';
+$lang['hide details'] = 'skrij podrobnosti';
+$lang['high'] = 'visoko';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je privzet upravljalec slik na MacOSX. Piwigo izvozni vtičnik vam omogoča da ustvarite nove albume in jih izvozite neposredno iz iPhoto v vašo Piwigo foto galerijo.';
+$lang['include child albums'] = 'vključi podrejene albume';
+$lang['include photos with lower privacy level'] = 'vključi slike z nižjim nivojem zasebnosti';
+$lang['jump to album'] = 'pojdi v album';
+$lang['jump to photo'] = 'pojdi na sliko';
+$lang['leave'] = 'pusti';
+$lang['manage album photos'] = 'upravljaj slike albuma';
+$lang['manage sub-albums'] = 'upravljaj pod-albume';
+$lang['manual order'] = 'raočno razvrstitev';
+$lang['middle'] = 'sredina';
+$lang['modified'] = 'spremenjeno';
+$lang['new'] = 'novo';
+$lang['no write access'] = 'ni dostopa za pisanje';
+$lang['Your configuration settings are saved'] = 'Vaše nastavitve so shranjene';
+$lang['Zoom'] = 'Povečava';
+$lang['[%s] Visit album %s'] = '[%s] Obišči album %s';
+$lang['[NBM] Problems or questions'] = '[NBM] Težave ali vprašanja';
+$lang['add a new watermark'] = 'dodaj nov vodni žig';
+$lang['administrators'] = 'skrbniki';
+$lang['any visitor can see this album'] = 'vsak obiskovalec lahko vidi ta album';
+$lang['apply automatic sort order'] = 'uveljavi samodejno razvrščanje';
+$lang['between %.2f and %.2f'] = 'med %.2f in %.2f';
+$lang['between %d and %d pixels'] = 'med %d in %d pikslov';
+$lang['bottom left corner'] = 'spodnji levi kot';
+$lang['bottom right corner'] = 'spodnji desni kot';
+$lang['cancel manual order'] = 'prekliči ročno razvrščanje';
+$lang['create a new site'] = 'Ustvari novo stran';
+$lang['custom'] = 'Po meri';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je napreden, brezplačen program za delo z digitalnimi fotografijami na sistemih Linux, Windows in MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je namenjen fotografom, ki želijo pregledovati, upravljati, urejati, izboljšati, organizirati, označevati in dati svoje fotografije v skupno rabo.';
+$lang['dissociate from group'] = 'loči od skupine';
+$lang['errors during synchronization'] = 'napake med sinhronizacijo';
+$lang['With no virtual album'] = 'Brez navideznega albuma';
+$lang['X Position'] = 'X Pozicija';
+$lang['X Repeat'] = 'X ponavljanje';
+$lang['Y Position'] = 'Y pozicija';
+$lang['Year'] = 'Leto';
+$lang['You are running on development sources, no check possible.'] = 'Uporabljate razvojno kodo, preverjanje ni na voljo.';
+$lang['You are running the latest version of Piwigo.'] = 'Uporabljate zadnjo različico Piwigo';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Uporabljate prenašalnik brskalnika. Preizkusite <a href="%s">Flash prenašalnik</a> če želite.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Uporabljate Flash prenašalnik. Če imate težave poizkusite z <a href="%s">Brskalnikovim prenašalnikom</a>. ';
+$lang['You can activate only one mobile theme.'] = 'Aktivirate lahko le eno mobilno temo.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Posodobitev na Piwigo %s je možna brez nadgradnje na Piwigo %s (priporočeno).';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ne morete določiti privzetega razvrščanja slik ker imate v vaši lokalni nastavitveni datoteki nastavljeno razvrščanje po vaši meri.';
+$lang['You cannot delete your account'] = 'Vašega računa ne morete izbrisati.';
+$lang['You cannot move an album in its own sub album'] = 'Albuma ne morete premakniti v njegov pod-album';
+$lang['You have %d orphan tags: %s.'] = 'Imate %d osirotelih oznak: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Določili ste <i>$conf[\'order_by\']</i> v vaši lokalni nastavitveni datoteki. Ta parameter je opuščen zato ga prosimo odstranite ali spremenite v: <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Naročili ste se na prejemanje novic na e-pošto.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Odjavili ste obveščanje po e-pošti.';
+$lang['You need to confirm deletion'] = 'Izbris morate potrditi';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Razmislite o nadgradnji vašega sistema! Le tako boste lahko uporabljali vse možnosti aplikacije. V nasprotnem primeru aplikacija morda ne bo delovala ali ne bo delovala pravilno.';
+$lang['Visit Gallery'] = 'Obišči galerijo';
+$lang['Visit Piwigo project website'] = 'Obiščite spletno stan projekta Piwigo';
+$lang['Visit language site'] = 'Obiščite stran z jeziki';
+$lang['Visit plugin site'] = 'Obiščite stran z vtičniki';
+$lang['Visit theme site'] = 'Obiščite stran z temami';
+$lang['Visited %d times'] = 'Obiskano %d ';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'OPOZORILO! Kot kaže, ta vtičnik ni v skladu z vašo verzijo Piwigo.';
+$lang['Waiting'] = 'Čakanje';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Opozorilo: naročanje ali odjavljanje bo poslalo obvestilo na e-pošto uporabnikov';
+$lang['Watermark'] = 'Vodni žig';
+$lang['Web Form'] = 'Spletni obrazec';
+$lang['Webmaster cannot be deleted'] = 'Skrbnika ne morete izbrisati';
+$lang['Webmaster status is required.'] = 'Status skrbnika je obvezen.';
+$lang['Week starts on'] = 'Teden se začne z';
+$lang['Who can see these photos?'] = 'Kdo lahko vidi te slike?';
+$lang['Who can see this photo?'] = 'Kdo lahko vidi to sliko?';
+$lang['Width'] = 'Širina';
+$lang['With blank value, gallery title will be used'] = 'Če je prazno bo uporabljen naslov galerije';
+$lang['With no album'] = 'Brez albuma';
+$lang['With no tag'] = 'Brez oznake';
+$lang['User "%s" created with "%s" like password'] = 'Uporabnik "%s" ustvarjen z geslom "%s"';
+$lang['User %s [%s] added.'] = 'Uporabnik %s [%s] dodan.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Uporabnik %s [%s] dodan na seznam naročnikov.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Uporabnik %s [%s] ni dodan na seznam naročnikov.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Uporabnik %s [%s] ni bil odstranjen s seznama naročnikov.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Uporabnik %s [%s] je bil odstranjen s seznama naročnikov.';
+$lang['User comments validation'] = 'Potrditev komentarjev uporabnikov';
+$lang['User list'] = 'Seznam uporabnikov';
+$lang['User status'] = 'Stanje uporabnika';
+$lang['Users'] = 'Uporabniki';
+$lang['Validate'] = 'Potrdi';
+$lang['Validation'] = 'Potrditev';
+$lang['Version'] = 'Različica';
+$lang['View in gallery'] = 'Poglej v galeriji';
+$lang['Virtual Links'] = 'Navidezne povezave';
+$lang['Virtual album'] = 'Navidezni album';
+$lang['Virtual album added'] = 'Navidezni album dodan';
+$lang['Virtual album deleted'] = 'Navidezni album izbrisan';
+$lang['Virtual album name'] = 'Ime navideznega albuma';
+$lang['Virtual albums to move'] = 'Navidezni album za premikanje';
+$lang['Unable to dump database.'] = 'Ne morem zavreči podatkovne baze';
+$lang['Uncheck all'] = 'Odznači vse';
+$lang['Unknown upload error'] = 'Nepoznana napaka pri nalaganju';
+$lang['Unlock gallery'] = 'Odkleni galerijo';
+$lang['Unlocked'] = 'Odklenjeno';
+$lang['Unsubscribe from notification by mail'] = 'Odjavi obvestila na e-pošto';
+$lang['Unsubscribed'] = 'Odjavljen';
+$lang['Update All'] = 'Posodobi vse';
+$lang['Update Complete'] = 'Posodobitev končana';
+$lang['Update albums informations'] = 'Posodobi informacije albumov';
+$lang['Update in progress... Please wait.'] = 'Posodabljanje je v teku... Prosimo počakajte.';
+$lang['Update photos information'] = 'Posodobi informacije slik';
+$lang['Update to Piwigo %s'] = 'Posodobi na Piwigo %s';
+$lang['Updates'] = 'Posodobitve';
+$lang['Upload'] = 'Naloži';
+$lang['Upload Photos'] = 'Naloži slike';
+$lang['Uploaded Photos'] = 'Naložene slike';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Uporabi privzeto razvrščanje slik (določeno v konfiguracijski datoteki)';
+$lang['Used metadata'] = 'Metadata uporabljen';
+$lang['User'] = 'Uporabnik';
+$lang['This site already exists'] = 'Ta stran že obstaja';
+$lang['This theme was not designed to be directly activated'] = 'Ta tema ni bila narejena tako da bi jo neposredno aktivirali.';
+$lang['Thumbnail'] = 'Sličica';
+$lang['Thumbnails generation in progress...'] = 'Ustvarjanje sličic je v teku.....';
+$lang['Time'] = 'Čas';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Čas za pošiljanje pošte je omejen. Ostala pošta je bila prezrta.';
+$lang['Title'] = 'Naslov';
+$lang['To send ?'] = 'Poslati?';
+$lang['To subscribe'] = 'Naročiti se';
+$lang['To unsubscribe'] = 'Odjaviti se';
+$lang['Toggle \'default group\' property'] = 'Preobrni lstnosti "privzete skupine"';
+$lang['Tools'] = 'Orodja';
+$lang['Two updates are available'] = 'Na voljo stad ve posodobitvi';
+$lang['Type here the author name'] = 'Tu vpišite ime avtorja';
+$lang['Type here the name of the new group'] = 'Tu vpišite ime nove skupine';
+$lang['Type here the title'] = 'Tu vpišite naslov';
+$lang['Type in a search term'] = 'Vpišite iskalni niz';
+$lang['Unable to check for upgrade.'] = 'Ne morem preveriti za nadgradnjo';
+$lang['This name is already used by another group.'] = 'To ime že uporablja druga skupina';
+$lang['This is a minor update, with only bug corrections.'] = 'To je le manjša posodobitev s popravki hroščev';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Naložena datoteka presega upload_max_filesize direktivo v php.ini , ki je: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Naložena datoteka je bila prenešena le delno';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Naložena datoteka presega post_max_size direktivo v php.ini , ki je: %sB';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Skrbnik vas je dodal med naročnike prejemnikov obvestil na e-pošto';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Skrbnik vas je odjavil s seznama prejemnikov obvestil na e-pošto';
+$lang['The whole page'] = 'Cela stran';
+$lang['The whole set'] = 'Cel nabor';
+$lang['Themes'] = 'Teme';
+$lang['Themes which need upgrade'] = 'Teme ki potrebujejo nadgradnjo';
+$lang['There is no available subscribers to mail.'] = 'Ni naročnikov ki bi jih obveščali na e-mail.';
+$lang['There is no group in this gallery.'] = 'V tej galeriji ni skupine';
+$lang['There is no other language available.'] = 'Na voljo ni drugega jezika.';
+$lang['There is no other plugin available.'] = 'Na voljo ni drugih vtičnikov.';
+$lang['There is no other theme available.'] = 'Na voljo ni drugih tem.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Ta album vsebuje %d slik, dodanih med %s in %s.';
+$lang['This album contains %d photos, added on %s.'] = 'Ta album vsebuje %d slik, dodanih na dan %s.';
+$lang['This album contains no photo.'] = 'Ta album ne vsebuje slik.';
+$lang['This group will be set to default'] = 'Ta skupina bo uporabljena kot privzeta.';
+$lang['This group will be unset to default'] = 'Ta skupina ne bo več uporabljena kot privzeta.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'To je pomembna posodobitev z <a href="%s">novimi, zanimivimi funkcijami</a>.';
+$lang['Storage album'] = 'Album za shranjevanje';
+$lang['Templates configuration has been recorded.'] = 'Nastavitev predloge je bila zabeležena';
+$lang['The %d following tags were deleted'] = 'Sledeče  %d oznake so bile izbrisane';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo vtičnik za izvoz vam omogoča da ustvarite albume in izvozite slike.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Objavni vtičnik vam omogoča da izvozite in sinhronizirate slike iz programa Lightroom neposredno v Piwigo foto galerijo.';
+$lang['The anomaly will be ignored until next application version'] = 'Nepravilnost bo spregledana do naslednje različice programa.';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Središče pozornosti je najbolj pomembno območje na fotografiji';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Ne morem dostopati do datoteke ali direktorija (ali ne obstaja ali pa ni pravic za dostop)';
+$lang['The following tag was deleted'] = 'Sledeča oznaka je bila izbrisana';
+$lang['The gallery URL is not valid.'] = 'URL galerije ni pravilen';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Ime skupine ne sme vsebovati "or" in ne sme biti prazno.';
+$lang['The name of an album must not be empty'] = 'Ime albuma ne sme biti prazno';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Imena direktorijev in datotek morajo vsebovati le črke, številke, "-", "_" ali "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Število komentarjev na stran mora biti med 5 in 50.';
+$lang['The original image quality must be a number between %d and %d'] = 'Izvirna kakovost slike mora biti število med %d in %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Izvirna maksimalna višina mora biti število med %d in %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Izvirna maksimalna širina mora biti število med %d in %d';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Ime stalne povezave (permalink) mora biti sestavljeno iz: a-z, A-Z, 0-9, "-", "_" ali "/". Ne sme biti numerična in ne sme se začeti s številko ki ji sledi "-"';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Dimenzija slike bo pomanjšana na  %dx%d pikslov';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Naložena datoteka presega direktivo MAX_FILE_SIZE , ki je bila določena v HTML obrazcu';
+$lang['Subscribe'] = 'Naroči se';
+$lang['Subscribe %s'] = 'Naroči %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Naroči %s se na Piwigo Obvestilne novice';
+$lang['Subscribe to notification by mail'] = 'Naroči se na obvestila na e-pošto';
+$lang['Subscribe/unsubscribe users'] = 'Naroči/odjavi uporabnike';
+$lang['Subscribed'] = 'Naročen';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Prikaz seznama naročnikov je možen le če obstajajo nove vsebine za obvestila.';
+$lang['Sum of rates'] = 'Vsota ocen';
+$lang['Summary'] = 'Povzetek';
+$lang['Support'] = 'Podpora';
+$lang['Switch to clear or dark colors for administration'] = 'S klikom preklopi med čisto ali temnejšo preobleko za admin panel';
+$lang['Synchronize'] = 'Sinhroniziraj';
+$lang['Synchronize metadata'] = 'Sinhroniziraj metadata';
+$lang['Tag "%s" already exists'] = 'Oznaka "%s" že obstaja';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Oznaka "%s" je sedaj dvojnik od  "%s"';
+$lang['Tag "%s" was added'] = 'Oznaka "%s" je bila dodana';
+$lang['Tag selection'] = 'Izbira oznak';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Oznake <em>%s</em> združene v oznako <em>%s</em>';
+$lang['Templates'] = 'Predloge';
+$lang['Send connection settings by email'] = 'Pošlji mi prijavne informacije na e-pošto';
+$lang['Remove from caddie'] = 'Odstrani iz košarice';
+$lang['Status of user "%s" updated'] = 'Status uporabnika "%s" posodobljen';
+$lang['Send mail to users'] = 'Pošlji pošto uporabnikom';
+$lang['Set as default language for unregistered and new users'] = 'Nastavi za privzet jezik za neregistrirane in nove uporabnike';
+$lang['Set as default theme for unregistered and new users'] = 'Nastavi kot privzeto temo za neregistrirane in nove uporabnike';
+$lang['Set author'] = 'Nastavi avtorja';
+$lang['Set creation date'] = 'Nastavi datum nastanka';
+$lang['Set title'] = 'Nastavi ime';
+$lang['Settings'] = 'Nastavitve';
+$lang['Sharpen'] = 'OStrenje';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je odprtokodni program za delo z digitalnimi fotografijami in je privzeti program za organiziranje fotografij v Linux distribuciji Ubuntu in Fedora.';
+$lang['Show info'] = 'Prikaži info';
+$lang['Show menubar'] = 'Prikaži menijsko vrstico';
+$lang['Simulation'] = 'Simulacija';
+$lang['Site manager'] = 'Upravljalec strani';
+$lang['Some themes and plugins may be not available yet.'] = 'Nekatere teme in vtičniki morda še niso na voljo.';
+$lang['Some upgrades are available for extensions.'] = 'Na voljo je nekaj posodobitev za razširitve.';
+$lang['Source tag'] = 'Izvorna oznaka';
+$lang['Start Upload'] = 'Začni prenos';
+$lang['Start pLoader and add your photos.'] = 'Zaženi pLoader in dodaj svoje fotografije.';
+$lang['Statistics'] = 'Statistika';
+$lang['Status'] = 'Stanje';
+$lang['Select a file'] = 'Izberi datoteko';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Z miško izberite področje, da določite novo polje zanimivosti slike';
+$lang['Select an album'] = 'Izberite album';
+$lang['Select at least one album'] = 'Izberite vsaj en album';
+$lang['Select at least one comment'] = 'Izberite vsaj en komentar';
+$lang['Select at least one photo'] = 'Izberite vsaj eno sliko';
+$lang['Select at least one user'] = 'Izberite vsaj enega uporabnika';
+$lang['Select at least two tags for merging'] = 'Izberite vsaj dve oznaki za združitev';
+$lang['Select files'] = 'Izberite datoteke';
+$lang['Select groups...'] = 'Izberite skupine';
+$lang['Select recipients'] = 'Izberite prejemnike';
+$lang['Select the destination tag'] = 'Izberite ciljno oznako';
+$lang['Select users...'] = 'Izberite uporabnike';
+$lang['Select:'] = 'Izberite:';
+$lang['Selection'] = 'Izbor';
+$lang['Send'] = 'Pošlji';
+$lang['Send an information email to group members'] = 'Pošlji obvestilni email članom skupine';
+$lang['Send mail as'] = 'Pošlji pošto kot';
+$lang['Send mail on HTML format'] = 'Pošlji pošto v HTML obliki';
+$lang['Theme has been successfully installed'] = 'Predloga je bila uspešno nameščena.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Različica %s [%s] ki je nameščena ni v skladu z zahtevano različico [%s]';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TA VTIČNIK JE SEDAJ ŽE DEL PIVIGO PROGRAMA. ODSTRANITE VTIČNIK!';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Da bi vaše slike prenesli iz digiKam v Piwigo preprosto namestite digiKam in Kipi-vtičnike.';
+$lang['Uninstall'] = 'Odstrani';
+$lang['Uninstalled Plugins'] = 'Nenameščeni vtičniki';
+$lang['You might go to plugin list to install and activate it.'] = 'Za namestitev in aktiviranje pojdi na seznam vtičnikov';
+$lang['Representant'] = 'Sličica albuma';
+$lang['Representation of albums'] = 'Sličica albuma';
+$lang['Representative'] = 'Sličica albuma';
+$lang['Represents'] = 'je sličica za';
+$lang['Reset ignored updates'] = 'Ponastaviti prezrte posodobitve';
+$lang['Resize'] = 'Spremeni velikost';
+$lang['Resize after upload'] = 'Spremeni velikost po nalaganju';
+$lang['Restore'] = 'Obnovi';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnovi privzete nastavitve. Nastavitve vtičnikov bodo izgubljene.';
+$lang['Save Settings'] = 'Shrani nastavitve';
+$lang['Save Template Directory'] = 'Shrani imenik predlog';
+$lang['Save manual order'] = 'Shrani ročno razvrstitev';
+$lang['Save order'] = 'Shrani razvrstitev';
+$lang['Save to permalink history'] = 'Shrani v zgodovino stalnih povezav (permalinks-ov)';
+$lang['Save visits in history for'] = 'Shrani obiske v zgodovino za';
+$lang['Search for new images in the directories'] = 'Išči nove slike v direktorijih';
+$lang['Searching...'] = 'Iskanje poteka...';
+$lang['Section'] = 'Razdelek';
+$lang['See you soon,'] = 'Se vidimo kmalu,';
+$lang['See you soon.'] = 'Se vidimo kmalu.';
+$lang['Random photo'] = 'Naključna slika';
+$lang['Rate date'] = 'Datum ocene';
+$lang['Rated %d times, score : %.2f'] = 'Število ocen: %d , skupna ocena : %.2f';
+$lang['Rating'] = 'Ocena';
+$lang['Rating by guests'] = 'Ocene gostov';
+$lang['Ratio'] = 'Razmerje';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) je odprtokodni (GPL v3) Piwigo odjemalec za Android platformo';
+$lang['Read Piwigo Documentation'] = 'Preberi Piwigo dokumentacijo';
+$lang['Refresh'] = 'Osveži';
+$lang['Refresh photo set'] = 'Osveži komplet slik';
+$lang['Reinitialize check integrity'] = 'Ponovi preverjanje celovitosti';
+$lang['Reject'] = 'Zavrni';
+$lang['Released on'] = 'Datum izdaje';
+$lang['Remote'] = 'Oddaljeno';
+$lang['Remove all filters'] = 'Odstrani vse filtre';
+$lang['Rename'] = 'Preimenuj';
+$lang['Repair and optimize database'] = 'Popravi in optimiziraj podatkovno bazo';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Zamenjava izvirne predloge s prirejeno predlogo iz direktorija template-extension';
+$lang['Replacers (customized templates)'] = 'Nadomestki (prirejene predloge)';
+$lang['Portrait'] = 'Pokončno';
+$lang['Position'] = 'Položaj';
+$lang['Posted %s on %s'] = 'Objavljeno %s na %s';
+$lang['Predefined filter'] = 'Prednastavljeni filter';
+$lang['Preferences'] = 'Izbire';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Čas za pripravo seznama uporabnikov katerim bo poslan e-mail je omejen. OStalih uporabnikov ni na seznamu.';
+$lang['Privacy level'] = 'Nivo zasebnosti';
+$lang['Privacy level set to "%s"'] = 'Nivo zasebnosti nastavljen na "%s"';
+$lang['Private'] = 'Zasebno';
+$lang['Properties'] = 'Lastnosti';
+$lang['Public'] = 'Javno';
+$lang['Public / Private'] = 'Javno / Zasebno';
+$lang['Purge compiled templates'] = 'Izbriši sestavljene predloge';
+$lang['Purge history detail'] = 'Izbriši podrobnosti zgodovine';
+$lang['Purge history summary'] = 'Izbriši povzetek zgodovine';
+$lang['Purge never used notification feeds'] = 'Izbriši nikoli uporabljene vire obvestil';
+$lang['Purge search history'] = 'Izbriši zgodovino iskanja';
+$lang['Purge sessions'] = 'Izbriši seje';
+$lang['Purge user cache'] = 'Izbriši predpomnilnik (cache) uporabnika';
+$lang['Quick Local Synchronization'] = 'Hitra lokalna sinhronizacija';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo obvestila';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Objavni vtičnik za Lightroom';
+$lang['Piwigo Update'] = 'Piwigo posodobitev';
+$lang['Piwigo Uploader'] = 'Piwigo prenašalnik';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne more prenesti nadgradnje s strežnika';
+$lang['Piwigo configuration'] = 'Piwigo nastavitve';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo izvoz vtičnika za Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo izvoz vtičnika za iPhoto';
+$lang['Piwigo for Android'] = 'Piwigo za Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Pivigo za iOS (iPhone, iPad, iPod Touch)';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo objavni vtičnik za Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo objavni vtičnik za digiKam';
+$lang['Piwigo version'] = 'Piwigo različica';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prosimo preverite doveljenja za "plugins" direktorij in poddirektorije (chmod)';
+$lang['Please select at least two groups'] = 'Prosimo iberite vsaj dve skupini';
+$lang['Please wait...'] = 'Prosimo počakajte...';
+$lang['Plugin has been successfully copied'] = 'Ta vtičnik je bil uspešno kopiran.';
+$lang['Plugin list'] = 'Seznam Vtičnikov';
+$lang['Plugins'] = 'Vtičniki';
+$lang['Plugins which need upgrade'] = 'Vtičniki, ki jih je potrebno nadgraditi';
+$lang['Permalink %s is already used by album %s'] = 'Permalink %s je že uporabljen za album %s.';
+$lang['Permalink history'] = 'Zgodovina stalnih povezav (Permalinks-ov)';
+$lang['Permalinks'] = 'Stalne povezave';
+$lang['Permission denied'] = 'Dostop zavrnjen';
+$lang['Permission granted'] = 'Dostop omogočen';
+$lang['Permission granted for groups'] = 'Dostop omogočen za skupino';
+$lang['Permission granted for users'] = 'Dostop omogočen za uporabnike';
+$lang['Permission granted thanks to a group'] = 'Dostop omogočen na račun (zaradi) skupine';
+$lang['Permission management'] = 'Upravljanje dovoljenj';
+$lang['Permissions'] = 'Dovoljenja';
+$lang['Photo %s of %s'] = 'Slika %s od %s';
+$lang['Photo Page'] = 'Stran slik';
+$lang['Photo Properties'] = 'Lastnosti slike';
+$lang['Photo informations updated'] = 'Informacije o sliki posodobljene';
+$lang['Photo name'] = 'Ime slike';
+$lang['Photo sizes with crop'] = 'Velikosti slik z obrezovanjem';
+$lang['Photo unreachable or no support'] = 'Slika ni dosegljiva ali pa je v nepodprti obliki';
+$lang['Photos'] = 'Slike';
+$lang['Photos generation in progress...'] = 'Izdelava slik v teku...';
+$lang['Piwigo Administration'] = 'Piwigo Administracija';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'prikaži največ informacij (dodani albumi in slike, izbrisani albumi in slike)';
+$lang['Original Size'] = 'Originalna velikost';
+$lang['Original file : %s'] = 'Izvirna datoteka : %s';
+$lang['Original templates'] = 'Izvirna preobleka';
+$lang['Orphan tags deleted'] = 'OSirotele oznake izbrisane';
+$lang['Other plugins'] = 'Na voljo so drugi vtičniki';
+$lang['Other private albums'] = 'Drugi zasebni albumi';
+$lang['Overall'] = 'Pregled';
+$lang['Page banner'] = 'Naslovni napis strani';
+$lang['Page end'] = 'Konec strani';
+$lang['Pages seen'] = 'Ogledanih strani';
+$lang['Panorama'] = 'Panorama';
+$lang['Parameter'] = 'Nastavitve';
+$lang['Parameters'] = 'Parametri';
+$lang['Parent album'] = 'Nadrejeni album';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Manjka potrditev gesla. Prosimo potrdite izbrano geslo.';
+$lang['Password is missing. Please enter the password.'] = 'Manjka geslo. Prosimo vpišite geslo.';
+$lang['Path'] = 'Pot';
+$lang['Pending Comments'] = 'Komentarji na čakanju';
+$lang['Permalink'] = 'Permalink (stalna povezava)';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s je bil prej uporabljen za album %s. Najprej ga izbrišite iz zgodovine stalnih povezav ';
+$lang['None'] = 'Noben';
+$lang['Not cropped correctly?'] = 'Ni pravilno obrezano?';
+$lang['Notification'] = 'Obvestilo';
+$lang['Notify administrators when a comment is'] = 'Obvestilo administratorju ko je komentar';
+$lang['Number of albums per page'] = 'Število albumov na stran';
+$lang['Number of comments per page'] = 'Število komentarjev na stran';
+$lang['Number of downloads'] = 'Število prenosov';
+$lang['Number of rates'] = 'Število ocen';
+$lang['Number of thumbnails to create'] = 'Število sličic za kreiranje';
+$lang['Numeric identifier : %d'] = 'Številčna oznaka: %d';
+$lang['Obsolete Plugins'] = 'Zastareli vtičniki';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'V Linuxu namestite Shotwell in nato aktivirajte možnost Piwigo objavljanje.';
+$lang['Only private albums are listed'] = 'Navedeni so le zasebni albumi';
+$lang['Opacity'] = 'Prosojnost';
+$lang['Operating system'] = 'Operacijski sistem';
+$lang['Operation in progress'] = 'Obdelava v teku';
+$lang['Optimizations have been completed with some errors.'] = 'Optimizacija se je zaključila z nekaj napakami';
+$lang['Optional URL keyword'] = 'Opcijska URL ključna beseda';
+$lang['Options'] = 'Možnosti';
+$lang['Order of menubar items has been updated successfully.'] = 'Razvrstitev elementov menijske vrstice je bila uspešno posodobljena';
+$lang['No photo selected, no action possible.'] = 'Ker ni izbrana nobena slika, ni možno nobeno dejanje.';
+$lang['No results'] = 'Ni rezultatov';
+$lang['No user to send notifications by mail.'] = 'Noben uporabnik ne bo obveščen preko e-pošte.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Stiskanje fotografij pred nalaganjem je onemogočeno zaradi uporabe GD grafične knjižnice.';
+$lang['Select at least one tag'] = 'Izberite vsaj eno oznako';
+$lang['Basic settings'] = 'Osnovne nastavitve';
+$lang['General'] = 'Splošno';
+$lang['Mail theme'] = 'Videz e-pošte';
+$lang['%d of %d users selected'] = 'Izbranih %d od %d uporabnikov';
+$lang['(filtered from %s total users)'] = '(filtrirano od %s vseh uporabnikov)';
+$lang['All %d users are selected'] = 'Izbranih vseh %d uporabnikov';
+$lang['Change password'] = 'Spremeni geslo';
+$lang['Change username'] = 'Spremeni uporabniško ime';
+$lang['Last visit on %s, %s.'] = 'Zadnji obisk  %s, %s.';
+$lang['Loading...'] = 'Nalaganje...';
+$lang['No matching user found'] = 'Ne najdem ustreznih uporabnikov';
+$lang['No user selected of %d users'] = 'Izbran ni noben uporabnik od %d uporabnikov';
+$lang['No user selected, no action possible.'] = 'Izbran ni noben uporabnik, nobeno dejanje ni mogoče';
+$lang['Password updated'] = 'Geslo posodobljeno';
+$lang['Registered on %s, %s.'] = 'Registrirani  %s, %s.';
+$lang['Show %s users'] = 'Prikaži %s uporabnikov';
+$lang['Showing %s to %s of %s users'] = 'Prikazanih  %s do %s od %s uporabnikov';
+$lang['Update user'] = 'Posodobi uporabnika';
+$lang['User %s added'] = 'Uporabnik %s dodan';
+$lang['User %s updated'] = 'Uporabnik %s posodobljen';
+$lang['Users modified'] = 'Uporabnik spremenjen';
+$lang['on the %d selected users'] = ' na %d izbranih uporabnikih';
+?>
Index: /tags/2.6.0RC1/language/sl_SI/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Slovenšcina [SI]
+Version: 2.5.3
+Language URI: http://piwigo.org/ext/extension_view.php?eid=453
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'slovenščina';
+$lang_info['country'] = 'Slovenija';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'sl';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album popravljena';
+$lang['%d albums updated'] = '%d albumov popravljenih';
+$lang['%d comment to validate'] = '%d komentar za preveriti';
+$lang['%d comments to validate'] = '%d komentarjev za preveriti';
+$lang['%d new comment'] = '%d nov komentar';
+$lang['%d new comments'] = '%d novih komentarjev';
+$lang['%d comment'] = '%d komentar';
+$lang['%d comments'] = '%d komentarjev';
+$lang['%d hit'] = '%d zadetek';
+$lang['%d hits'] = '%d zadetkov';
+$lang['%d new user'] = '%d nov uporabnik';
+$lang['%d new users'] = '%d novih uporabnikov';
+$lang['About'] = 'Vizitka';
+$lang['All tags'] = 'Vse oznake';
+$lang['Any tag'] = 'Katerakoli oznaka';
+$lang['At least one listed rule must be satisfied.'] = 'Vsaj eno pravilo mora biti izpolnjeno.';
+$lang['Author'] = 'Avtor';
+$lang['Albums'] = 'Albumi';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Zapri okno';
+$lang['Confirm Password'] = 'Potrdi geslo';
+$lang['Connection settings'] = 'Prijavni podatki';
+$lang['Contact webmaster'] = 'Kontaktiraj skrbnika';
+$lang['Create a new account'] = 'Ustvari nov račun';
+$lang['Created on'] = 'Ustvarjeno';
+$lang['Creation date'] = 'Ustvarjeno';
+$lang['Current password is wrong'] = 'Napačno geslo';
+$lang['Dimensions'] = 'Dimenzije';
+$lang['Display'] = 'Prikaz';
+$lang['%d new photo'] = '%d nova slika';
+$lang['%d new photos'] = '%d novih slik';
+$lang['Complete RSS feed (photos, comments)'] = 'Poln RSS vir (slike, komentarji)';
+$lang['Login'] = 'Prijava';
+$lang['Each listed rule must be satisfied.'] = 'Vsa pravila morajo biti izpolnjena.';
+$lang['Email address'] = 'E-pošta';
+$lang['Enter your personnal informations'] = 'Vnesite svoje osebne podatke';
+$lang['Error sending email'] = 'Napaka pri pošiljanju e-pošte';
+$lang['File name'] = 'Ime datoteke';
+$lang['File'] = 'Datoteka';
+$lang['Filesize'] = 'Velikost datoteke';
+$lang['Filter and display'] = 'Filter in prikaz';
+$lang['Filter'] = 'Filter';
+$lang['Forgot your password?'] = 'Ste pozabili vaše geslo?';
+$lang['Go through the gallery as a visitor'] = 'Ogled galerije kot obiskovalec';
+$lang['Help'] = 'Pomoč';
+$lang['Identification'] = 'Identifikacija';
+$lang['Photos only RSS feed'] = 'Slikovni RSS vir (samo slike)';
+$lang['Keyword'] = 'Ključna beseda';
+$lang['Links'] = 'Povezave';
+$lang['N/A'] = 'Ni na voljo';
+$lang['New on %s'] = 'Nov na %s';
+$lang['Notification'] = 'Obvestilo';
+$lang['Number of items'] = 'Število predmetov ';
+$lang['Original dimensions'] = 'Originalna velikost';
+$lang['Password forgotten'] = 'Pozabljeno geslo';
+$lang['Password'] = 'Geslo';
+$lang['Post date'] = 'Datum objave';
+$lang['Posted on'] = 'Objavljeno';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Hitra povezava';
+$lang['RSS feed'] = 'RSS vir';
+$lang['Register'] = 'Registriraj se';
+$lang['Registration'] = 'Registracija';
+$lang['Unknown feed identifier'] = 'Neznan identifikator vira';
+$lang['User comments'] = 'Komentarji uporabnika';
+$lang['Username'] = 'Uporabniško ime';
+$lang['Visits'] = 'Ogledov';
+$lang['Webmaster'] = 'Skrbnik';
+$lang['Week %d'] = 'Teden %d';
+$lang['About Piwigo'] = 'O Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Za dostop do zahtevane strani nimate pooblastil';
+$lang['add this photo to your favorites'] = 'dodaj sliko med svoje priljubljene';
+$lang['Administration'] = 'Administracija';
+$lang['all'] = 'vse';
+$lang['ascending'] = 'naraščajoče';
+$lang['author(s) : %s'] = 'avtor(ji) : %s';
+$lang['Expand all albums'] = 'Razširi vse kategorije';
+$lang['posted after %s (%s)'] = 'naloženo po %s (%s)';
+$lang['posted before %s (%s)'] = 'naloženo pred %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'naloženo med %s (%s) in %s (%s)';
+$lang['posted on %s'] = 'naloženo na %s';
+$lang['Best rated'] = 'Najbolje ocenjene';
+$lang['display best rated photos'] = 'prikaži najbolje ocenjene slike';
+$lang['Calendar'] = 'Koledar';
+$lang['All'] = 'Vse';
+$lang['display each day with photos, month per month'] = 'prikaži slike po dnevih in mesecih'; 
+$lang['View'] = 'Pogled';
+$lang['chronology_monthly_calendar'] = 'Mesečni koledar';
+$lang['chronology_monthly_list'] = 'Mesečni seznam';
+$lang['chronology_weekly_list'] = 'Tedenski seznam';
+$lang['Click here if your browser does not automatically forward you'] = 'Če vas brskalnik ni preusmeril, kliknite tukaj.';
+$lang['comment date'] = 'komentarji po datumih';
+$lang['Comment'] = 'Komentar';
+$lang['Your comment has been registered'] = 'Vaš komentar je bil vpisan';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood sistem : prosim počakajte trenutek, preden oddate nov komentar';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Vaš komentar NI bil vpisan, saj ne ustreza pravilom preverjanja';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Administrator mora pregledati vaš komentar, preden le-ta postane viden.';
+$lang['This login is already used by another user'] = 'Te prijavne podatke že uporablja drug uporabnik';
+$lang['Comments'] = 'Komentarji';
+$lang['Add a comment'] = 'Dodaj komentar';
+$lang['created after %s (%s)'] = 'kreirano po %s (%s)';
+$lang['created before %s (%s)'] = 'kreirano pred %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'kreirano med %s (%s) in %s (%s)';
+$lang['created on %s'] = 'kreirano na %s';
+$lang['Customize'] = 'Prilagodi';
+$lang['Your Gallery Customization'] = 'Prilagodi svojo galerijo';
+$lang['Related tags'] = 'Sorodne oznake';
+$lang['Reset'] = 'Ponastavi';
+$lang['Retrieve password'] = 'Pridobi geslo';
+$lang['Search rules'] = 'Iskalni kriteriji';
+$lang['Search tags'] = 'Iskalne oznake';
+$lang['Search'] = 'Išči';
+$lang['display available tags'] = 'Prikaži možne oznake';
+$lang['Since'] = 'Od';
+$lang['Sort by'] = 'Uredi po';
+$lang['Sort order'] = 'Urejeno po';
+$lang['Tag'] = 'Oznaka';
+$lang['Tags'] = 'Oznake';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS viri omogočajo prijavo na novosti te spletne strani, kot so: nove slike, novi albumi, novi komentarji. Za uporabo je potreben RSS odjemalec.';
+$lang['Default'] = 'Privzeto';
+$lang['delete this photo from your favorites'] = 'odstrani to sliko iz svojih priljubljenih';
+$lang['Delete'] = 'Izbriši';
+$lang['descending'] = 'padajoče';
+$lang['Download'] = 'prenesi';
+$lang['Download this file'] = 'prenesi to datoteko';
+$lang['edit'] = 'uredi';
+$lang['wrong date'] = 'napačen datum';
+$lang['excluded'] = 'izključen';
+$lang['Your favorites'] = 'Moje priljubljene';
+$lang['display your favorites photos'] = 'prikaži moje priljubljene slike';
+$lang['Favorites'] = 'Priljubljene';
+$lang['First'] = 'Prva';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Stran je v vzdrževanju. Prosim, poskusite kasneje.';
+$lang['Page generated in'] = 'Stran naložena v';
+$lang['guest'] = 'gost';
+$lang['Hello'] = 'Pozdravljen';
+$lang['available for administrators only'] = 'dovoljeno samo za administratorje';
+$lang['display this album'] = 'prikaži slike na najvišjem nivoju te kategorije';
+$lang['display last user comments'] = 'Prikaži zadnje komentarje uporabnika';
+$lang['customize the appareance of the gallery'] = 'prilagodi izgled galerije';
+$lang['search'] = 'išči';
+$lang['Home'] = 'Domov';
+$lang['in this album'] = 'v tem albumu';
+$lang['in %d sub-album'] = 'v %d pod-albumu';
+$lang['in %d sub-albums'] = 'v %d pod-albumih';
+$lang['included'] = 'vsebuje';
+$lang['Invalid password!'] = 'Napačno geslo!';
+$lang['Language'] = 'Jezik';
+$lang['last %d days'] = 'zadnjih %d dnevih';
+$lang['Last'] = 'Zadnji';
+$lang['Logout'] = 'Odjava';
+$lang['obligatory'] = 'obvezno';
+$lang['Most visited'] = 'Največ ogledov';
+$lang['display most visited photos'] = 'prikaži največkrat ogledane slike';
+$lang['The number of photos per page must be a not null scalar'] = 'Število slik na stran, mora biti celo število, večje od nič.';
+$lang['Number of photos per page'] = 'Število slik na stran';
+$lang['Unknown identifier'] = 'Neznan';
+$lang['New password'] = 'Novo geslo';
+$lang['Rate this photo'] = 'Oceni to sliko';
+$lang['Next'] = 'Naprej';
+$lang['no rate'] = 'brez ocene';
+$lang['Photos posted within the last %d day.'] = 'Elementi naloženi znotraj zadnjega %d dneva.';
+$lang['Photos posted within the last %d days.'] = 'Elementi naloženi znotraj zadnjih %d  dni.';
+$lang['password updated'] = 'geslo spremenjeno';
+$lang['Recent period must be a positive integer value'] = 'Novo obdobje mora biti pozitivno celo število';
+$lang['photo'] = 'slika';
+$lang['Click on the photo to see it in high definition'] = 'Za ogled  v originalni velikosti, kliknite na sliko';
+$lang['Show file metadata'] = 'Prikaži meta podatke datoteke';
+$lang['Powered by'] = 'Narejeno s';
+$lang['Preferences'] = 'Nastavitve';
+$lang['Previous'] = 'Nazaj';
+$lang['Random photos'] = 'Naključne slike';
+$lang['display a set of random photos'] = 'prikaži množico naključno izbranih slik';
+$lang['Recent albums'] = 'Novi albumi';
+$lang['display recently updated albums'] = 'prikaži nedavno posodobljene albume';
+$lang['Recent period'] = 'Nedavno';
+$lang['Recent photos'] = 'Novejše slike';
+$lang['display most recent photos'] = 'prikaži najnovejše slike';
+$lang['Redirection...'] = 'Preusmeritev...';
+$lang['Please, enter a login'] = 'Prosimo, prijavite se';
+$lang['login mustn\'t end with a space character'] = 'prijava se ne sme končati s presledkom';
+$lang['login mustn\'t start with a space character'] = 'prijava se ne sme začeti s presledkom';
+$lang['this login is already used'] = 'ta uporabnik je že prijavljen';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-mail mora biti oblike xxx@yyy.eee (primer : nekdo@domena.org)';
+$lang['Auto login'] = 'Samodejna prijava';
+$lang['remove this tag from the list'] = 'odstrani oznako s seznama';
+$lang['representative'] = 'sličica albuma';
+$lang['Search for Author'] = 'Iskanje avtorja';
+$lang['Search in albums'] = 'Iskanje v albumih';
+$lang['Search by date'] = 'Iskanje po datumu';
+$lang['Date'] = 'Datum';
+$lang['End-Date'] = 'Končni datum';
+$lang['Kind of date'] = 'Oblika datuma';
+$lang['Search for words'] = 'Iskanje po besedah';
+$lang['Search for all terms'] = 'Iskanje po vseh izrazih';
+$lang['Search for any term'] = 'Iskanje po kateremkoli izrazu';
+$lang['Empty query. No criteria has been entered.'] = 'Prazen niz. Vnesen ni bil niti en kriterij.';
+$lang['Search results'] = 'Rezultat iskanja';
+$lang['Search in sub-albums'] = 'Iskanje po pod-albumih';
+$lang['searched words : %s'] = 'iskane besede : %s';
+$lang['Contact'] = 'Kontakt';
+$lang['set as album representative'] = 'nastavi kot sličico albuma';
+$lang['display a calendar by creation date'] = 'prikaži koledar po datumu nastanka';
+$lang['display all photos in all sub-albums'] = 'prikaži vse slike v vseh pod-albumih';
+$lang['return to normal view mode'] = 'vrni se v normalni način';
+$lang['display a calendar by posted date'] = 'prikaži kolendar po datumu objave';
+$lang['Show number of comments'] = 'Prikaži število komentarjev';
+$lang['Show number of hits'] = 'Prikaži število zadetkov';
+$lang['slideshow'] = 'diaprojekcija';
+$lang['stop the slideshow'] = 'ustavi diaprojekcijo';
+$lang['Specials'] = 'Posebno';
+$lang['SQL queries in'] = 'SQL povpraševanje v';
+$lang['display only recently posted photos'] = 'prikaži samo nedavno objavljene slike';
+$lang['return to the display of all photos'] = 'vrni se v prikaz vseh slik';
+$lang['the beginning'] = 'začetek';
+$lang['Thumbnails'] = 'Sličice';
+$lang['Menu'] = 'Meni';
+$lang['A comment on your site'] = 'Komentar na vaši strani';
+$lang['today'] = 'danes';
+$lang['Update your rating'] = 'Popravi svojo oceno';
+$lang['the username must be given'] = 'zahtevano je uporabniško ime';
+$lang['useful when password forgotten'] = 'uporabno, v primeru izgubljenega gesla';
+$lang['Quick search'] = 'Hitro iskanje';
+$lang['Connected user: %s'] = 'Prijavljeni uporabniki: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Brskalnik: %s';
+$lang['Author: %s'] = 'Avtor: %s';
+$lang['Comment: %s'] = 'Komentar: %s';
+$lang['Comment by %s'] = 'Komentiral %s';
+$lang['User: %s'] = 'Uporabnik: %s';
+$lang['Email: %s'] = 'E-pošta: %s';
+$lang['Admin: %s'] = 'Administrator: %s';
+$lang['Registration of %s'] = 'Prijavljenih %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Nepravilen status uporabnika "guest", uporabljen bo privzeti status. Prosim obvestite skrbnika.';
+$lang['this email address is already in use'] = 'ta e-poštni naslov že uporablja drug uporabnik';
+$lang['Album results for'] = 'Rezultat albumov za';
+$lang['Tag results for'] = 'Rezultat oznak za';
+$lang['from %s to %s'] = 'od %s do %s';
+$lang['Play of slideshow'] = 'Začni diaprojekcijo';
+$lang['Pause of slideshow'] = 'Premor diaprojekcije';
+$lang['Repeat the slideshow'] = 'Ponovi diaprojekcijo';
+$lang['day'][0] = "nedelja";
+$lang['day'][1] = "ponedeljek";
+$lang['day'][2] = "torek";
+$lang['day'][3] = "sreda";
+$lang['day'][4] = "četrtek";
+$lang['day'][5] = "petek";
+$lang['day'][6] = "sobota";
+$lang['month'][10] = "oktober";
+$lang['month'][11] = "november";
+$lang['month'][12] = "december";
+$lang['month'][1] = "januar";
+$lang['month'][2] = "februar";
+$lang['month'][3] = "marec";
+$lang['month'][4] = "april";
+$lang['month'][5] = "maj";
+$lang['month'][6] = "junij";
+$lang['month'][7] = "julij";
+$lang['month'][8] = "avgust";
+$lang['month'][9] = "september";
+$lang['Not repeat the slideshow'] = 'Ne ponavljaj diaprojekcije';
+$lang['Reduce diaporama speed'] = 'Zmanjšaj hitrost predvajanja';
+$lang['Accelerate diaporama speed'] = 'Povečaj hitrost predvajanja';
+$lang['Submit'] = 'Pošlji';
+$lang['Yes'] = 'Da';
+$lang['No'] = 'Ne';
+$lang['%d photo'] = '%d slika';
+$lang['%d photos'] = '%d slik';
+$lang['%d photo is also linked to current tags'] = '%d slika je prav tako povezana s trenutno oznako';
+$lang['%d photos are also linked to current tags'] = '%d slike so prav tako povezane s trenutnimi oznakami';
+$lang['display photos linked to this tag'] = 'Pokaži slike povezane s to oznako';
+$lang['photos posted during the last %d days'] = 'slike objavljene zadnjih %d dni';
+$lang['Piwigo Help'] = 'Piwigo pomoč';
+$lang['Rank'] = 'Zaporedje';
+$lang['group by letters'] = 'razvrsti po abecedi';
+$lang['letters'] = 'črke';
+$lang['show tag cloud'] = 'prikaži oznake v oblaku';
+$lang['cloud'] = 'oblak';
+$lang['Reset to default values'] = 'Ponastavi na privzete vrednosti';
+$lang['delete all photos from your favorites'] = 'odstrani vse slike iz svojih priljubljenih';
+$lang['Sent by'] = 'Poslano od';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Piškotki so blokirani ali pa jih vaš brskalnik ne podpira. Za prijavo je potrebno omogočiti piškotke.';
+$lang['Edit a comment'] = 'Uredi komentar';
+$lang['Are you sure?'] = 'Ali ste prepričani?';
+$lang['(!) This comment requires validation'] = '(!) Komentar potrebuje potrditev';
+$lang['Welcome'] = 'Dobrodošli';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Dobrodošli v vaši novi Piwigo galeriji!';
+$lang['... or browse your empty gallery'] = '... ali prebrskaj svojo prazno galerijo';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ali prosim deaktivirajte to sporočilo , znašel se bom sam';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Zdravo %s, tvoja Piwigo galerija je prazna!';
+$lang['I want to add photos'] = 'Želim dodati slike';
+$lang['Manage this user comment: %s'] = 'Uredi komentar uporabnika: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Manjkajoči e-poštni naslov. Prosim navedite svojo e-poštni naslov.';
+$lang['This author modified following comment:'] = 'Ta uporabnik je uredil naslednji komentar:';
+$lang['This author removed the comment with id %d'] = 'Ta uporabnik je odstranil komentar z id-jem %d';
+$lang['html tags are not allowed in login'] = 'pri prijavi niso dovoljene html oznake';
+$lang['%d rates'] = '%d točk';
+$lang['Rating score'] = 'Ocena';
+$lang['Invalid username or email'] = 'Nepravilno uporabniško ime ali e-pošta';
+$lang['Password reset is not allowed for this user'] = 'Ponastavitev gesla za tega uporabnika ni možna ';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Uporabnik "%s" nima e-pošte, zato ponastavitev gesla ni možna';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Nekdo je zahteval ponastavite gesla za uporabniški račun:';
+$lang['Username "%s" on gallery %s'] = 'Uporabnik "%s" galerije %s';
+$lang['To reset your password, visit the following address:'] = 'Za ponastavitev gesla, obiščite naslednji spletni naslov:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Če je bila to napaka, preprosto prezrite to sporočilo in nič se ne bo zgodilo.';
+$lang['Password Reset'] = 'Ponastavitev gesla';
+$lang['Check your email for the confirmation link'] = 'Preverite e-pošto za potrditev';
+$lang['Invalid key'] = 'Nepravilen ključ';
+$lang['The passwords do not match'] = 'Gesli se ne ujemata';
+$lang['Your password has been reset'] = 'Vaše geslo je bilo ponastavljeno';
+$lang['Return to home page'] = 'Vrnite se na domačo stran';
+$lang['Please enter your username or email address.'] = 'Prosim vnesite svoje uporabniško ime ali e-poštni naslov.';
+$lang['You will receive a link to create a new password via email.'] = 'Na vaš e-pošti naslov boste prejeli povezavo za kreiranje novega gesla.';
+$lang['Username or email'] = 'Uporabniško ime ali e-pošta';
+$lang['Change my password'] = 'Spremeni geslo';
+$lang['Enter your new password below.'] = 'Vnesite novo geslo.';
+$lang['EXIF Metadata'] = 'EXIF metapodatki';
+$lang['IPTC Metadata'] = 'IPTC metapodatki';
+$lang['Edit'] = 'Uredi';
+$lang['Hello %s,'] = 'Pozdravljen %s,';
+$lang['Password: %s'] = 'Geslo: %s';
+$lang['Username: %s'] = 'Uporabnik: %s';
+$lang['Here are your connection settings'] = 'To so vaši prijavni podatki';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Če mislite, da ste prejeli to e-pošto po pomoti, se lahko obrnete na nas na: %s';
+$lang['large'] = 'velika';
+$lang['medium'] = 'srednja';
+$lang['Original'] = 'Izvirna';
+$lang['Send my connection settings by email'] = 'Pošlji mi prijavne podatke na moj e-poštni naslov';
+$lang['small'] = 'majhna';
+$lang['square'] = 'kvadratno';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Uspešno ste se registrirali. Na vaš e-mail naslov boste prejeli vaše prijavne podatke. Dobrodošli v naši fotogaleriji!!';
+$lang['Thank you for registering at %s!'] = 'Hvala za registracijo na %s!';
+$lang['thumb'] = 'sličica';
+$lang['Username modification'] = 'Sprememba uporabniškega imena';
+$lang['xlarge'] = 'večja';
+$lang['xxlarge'] = 'XXL - zelo velika';
+$lang['Your username has been successfully changed to : %s'] = 'Vaše uporabniško ime je bilo uspešno sprememenjeno na: %s';
+$lang['%d rate'] = '%d ocena';
+$lang['2small'] = 'XXS - zelo mala';
+$lang['Date created, new &rarr; old'] = 'Datum kreiranja, nove &rarr; stare';
+$lang['Date created, old &rarr; new'] = 'Datum kreiranja, stare &rarr; nove';
+$lang['Date posted, new &rarr; old'] = 'Datum objave, nove &rarr; stare';
+$lang['Date posted, old &rarr; new'] = 'Datum objave, stare &rarr; nove';
+$lang['Desktop'] = 'Namizje';
+$lang['File name, A &rarr; Z'] = 'Ime datoteke, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Ime datoteke, Z &rarr; A';
+$lang['Manual sort order'] = 'Ročni način razvrščanja';
+$lang['Mobile'] = 'Mobilen';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Številčna oznaka, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Številčna oznaka, 9 &rarr; 1';
+$lang['Photo sizes'] = 'Velikosti slike';
+$lang['Photo title, A &rarr; Z'] = 'Ime slike, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Ime slike, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Ocene, visoke &rarr; nizke';
+$lang['Rating score, low &rarr; high'] = 'Ocene, nizke &rarr; visoke';
+$lang['Show latest comments first'] = 'Najnovejši komentarji najprej';
+$lang['Show oldest comments first'] = 'Najstarejši komentarji najprej';
+$lang['View in'] = 'Poglej v';
+$lang['Visits, high &rarr; low'] = 'Ogledi, veliko &rarr; malo';
+$lang['Visits, low &rarr; high'] = 'Ogledi, malo &rarr; veliko';
+$lang['xsmall'] = 'XS - manjša';
+$lang['Forbidden'] = 'Prepovedan dostop';
+$lang['Page not found'] = 'Stran ne obstaja';
+$lang['Requested album does not exist'] = 'Zahtevan album ne obstaja';
+$lang['Requested tag does not exist'] = 'Zahtevana oznaka ne obstaja';
+$lang['Bad request'] = 'Nepravilna zahteva';
+$lang['Permalink for album not found'] = 'Stalne povezave (permalink) za album ni bilo mogoče najti';
+$lang['Piwigo encountered a non recoverable error'] = 'Prišlo je do napake v Piwigo';
+$lang['Email address is mandatory'] = 'E-poštni naslov je obvezn';
+$lang['Username is mandatory'] = 'Uporabniško ime je obvezno';
+$lang['mandatory'] = 'obvezno';
+$lang['Website'] = 'Spletna stran';
+$lang['Your website URL is invalid'] = 'Naslov spletne strani je nepravilen';
+$lang['Email'] = 'E-pošta';
+$lang['First Page'] = 'Prva stran';
+$lang['Go back to the album'] = 'Nazaj na album';
+$lang['Last Page'] = 'Zadnja stran';
+$lang['Password is missing. Please enter the password.'] = 'Manjka geslo. Prosimo vpišite geslo.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Manjka potrditev gesla. Prosimo potrdite izbrano geslo.';
+$lang['%d photos per page'] = '%d slik na stran';
+$lang['Theme'] = 'Preobleka';
+?>
Index: /tags/2.6.0RC1/language/sl_SI/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/help/search.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Iskanje</h2>
+
+<p>Ta stran vam omogoča iskanje fotografij po celi galeriji.</p>
+
+<dl>
+
+  <dt>Išči besede</dt>
+  <dd>Iskanje besede ali več besed med lastnostimi povezanimi s fotografijami
+  galerije. Uporabite * kot wildcard za delne zadetke.</dd>
+
+  <dt>Iskanje po avtorju</dt>
+  <dd>Uporabite * kot wildcard za delne zadetke.</dd>
+
+  <dt>Iskanje po datumu</dt>
+  <dd>Izberite datum in/ali končni datum za poizvedbo. Polje datum pustite prazno
+  če želite izvesti poizvedbo "pred". Letnica v zadnjem polju
+  mora biti v formatu : AAAA (npr. 2004)</dd>
+
+  <dt>Iskanje v albumih</dt>
+  <dd>Izberite album ali albume v katerih želite iskati. V iskanje so lahko
+  vključeni vsi podalbumi, če izberete nadrejeni album in spodaj izberete možnost
+  iskanja v podalbumih.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/sl_SI/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Usklajevanje (sinhronizacija)</h2>
+
+<p>Obstajata dva tipa usklajevanja:</p>
+<ul>
+	<li>imeniki/datoteke</li>
+	<li>metapodatki datoteke</li>
+</ul>
+
+<p>Usklajevanje imenikov(direktorijev) in datotek se nanaša na uskladitev drevesa imenikov in datotek z drevesom albumov v podatkovni bazi. 
+Usklajevanje metapodatkov datotek se nanaša na uskladitev informacij o slikah kot so velikost, dimenzije, pixli, EXIF ali IPTC informacij s podatkovno bazo.</p>
+
+<p>Kadar usklajujete vaše dodane slike z galerijo, morate najprej uskladiti imenike in datoteke.</p>
+
+<p>Proces usklajevanja lahko traja dolgo (odvisno od obremenitve strežnika in števila elementov za obdelavo) zato lahko usklajevanje izvajate tudi po posameznih albumih.</p>
Index: /tags/2.6.0RC1/language/sl_SI/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Seznam uporabnikov</h2>
+
+<p>Tu lahko urejate uporabnike vaše Piwigo galerije.</p>
+
+<h3>Dodaj uporabnika</h3>
+
+<p>Administrator lahko ročno doda uporabnika. Za vsakega uporabnika ustvarite uporabniško ime in geslo, in vpišite veljaven elektronski naslov.</p>
+
+<h3>Seznam uporabnikov</h3>
+
+<p>Seznam obstoječih uporabnikov je možno filtrirati po uporabniškem imenu (uporabi * kot wildcard), ali po skupini ter statusu. Razvrstitev je možna po datumu registracije ali po  uporabniškem imenu, in sicer v naraščajočem ali padajočem vrstnem redu.</p>
+
+<p>Ta stran omogoča upravljanje več uporabnikov hkrati. Možna so različna dejanja:</p>
+
+<ul>
+  <li>izbris uporabnikov (zahtevana potrditev)</li>
+  <li>spremeba statusa uporabnikov</li>
+  <li>povezava ali razveza s skupinami</li>
+  <li>spreminjanje lastnosti prikaza</li>
+  <li>spreminjanje dodatnih nastavitev</li>
+</ul>
+
+<p>Izvedba dejanj velja za izbranega uporabnika (privzeto) ali za vse uporabnike prikazane na filtriranem seznamu.</p>
Index: /tags/2.6.0RC1/language/sl_SI/index.php
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sl_SI/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['PHP 5 is required'] = 'Zahtevan je PHP 5';
+$lang['Password [confirm]'] = 'Geslo [potrdi]';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo bo poskušal preklopiti vaše nastavitve na PHP 5 z ustvarjanjem ali urejanjem .htacceess datoteke';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ni mogel nastaviti PHP 5.';
+$lang['Sorry!'] = 'Oprostite!';
+$lang['Start Install'] = 'Začni namestitev';
+$lang['Try to configure PHP 5'] = 'Poskušam nastaviti PHP 5';
+$lang['User'] = 'Uporabnik';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Obiskovalci bodo lahko ta elektronski naslov uporabljali za kontakt s skrbnikom spletne strani ';
+$lang['Welcome to my photo gallery'] = 'Dobrodošli v moji foto galeriji';
+$lang['Welcome to your new installation of Piwigo!'] = 'Dobrodošli v vaši novi namestitvi Piwigo!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Lahko prenesete namestitveno datoteko ter jo naložite v local/config imenik vaše namestitve.';
+$lang['Admin configuration'] = 'Admin nastavitve';
+$lang['Basic configuration'] = 'Osnovne nastavitve';
+$lang['Can\'t connect to server'] = 'Ne morem se povezati s strežnikom';
+$lang['Congratulations, Piwigo installation is completed'] = 'Čestitamo! Namestitev Piwigo aplikacije je uspešno dokončana!';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Uspešno ste se povezali na strežnik vendar je povezava s podatkovno bazo spodletela.';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Ustvarjanje nastavitvene datoteke local/config/database.inc.php je spodletelo.';
+$lang['Database configuration'] = 'Nastavitve podatkovne baze';
+$lang['Database name'] = 'Ime podatkovne baze';
+$lang['Database table prefix'] = 'Predpona podatkovnih tabel';
+$lang['Default gallery language'] = 'Privzeti jezik galerije';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ne oklevajte in povprašajte za pomoč na našem forumu: %s';
+$lang['Download the config file'] = 'Prenesite config datoteko';
+$lang['Hope to see you back soon.'] = 'Upam, da se kmalu ponovno vidimo.';
+$lang['Host'] = 'Gostitelj';
+$lang['Installation'] = 'Namestitev';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Zdi se, da  je na spletnem strežniku trenutno nameščen PHP %s';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Vidno bo obiskovalcem. To je potrebno za upravljanje spletne strani';
+$lang['Just another Piwigo gallery'] = 'To je zgolj še ena Piwigo galerija';
+$lang['enter a login for webmaster'] = 'vnesite prijavno ime skrbnika';
+$lang['please enter your password again'] = 'prosimo ponovno vnesite vaše geslo';
+$lang['user login given by your host provider'] = 'prijavno ime uporabnika pridobljeno od vašega ponudnika gostovanja';
+$lang['user password given by your host provider'] = 'geslo uporabnika pridobljeno od vašega ponudnika gostovanja';
+$lang['verification'] = 'preverjanje';
+$lang['webmaster login can\'t contain characters \' or "'] = 'prijavno ime skrbnika ne sme vsebovati znakov \' ali "';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'imena tabel v podatkovni bazi bodo imela predpono. (omogoča lažje upravljanje tabel)';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Posvetujte se z vašim ponudnikom gostovanja kako bi lahko sami prešli na zahtevano PHP 5 različico.';
+$lang['also given by your host provider'] = 'tudi pridobljeno od vašega ponudnika gostovanja';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Potrebujete dodatno pomoč? Zastavite vprašanje na <a href="%s">Piwigo oglasni deski</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Upoštevajte da lahko sami spremenite nastavitve in nato ponovno zaženete Piwigo.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Druga rešitev je, da kopirate besedilo v polje zgoraj in ga prilepite v datoteko "local/config/database.inc.php" (Opozorilo: database.inc.php mora vsebovati le to kar je v besedilnem polju, brez znakov prehoda v novo vrstico(line return)ali znakov za presledke)';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Varno shranite, omogoča vam dostop do administratorske nadzorne plošče!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost ali drug naslov ki ga imate pri svojem ponudniku gostovanja';
+?>
Index: /tags/2.6.0RC1/language/sl_SI/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Slovenščina [SI]
Index: /tags/2.6.0RC1/language/sl_SI/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sl_SI/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sl_SI/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Kot previdnostni ukrep so sledeči vtičniki onemogočeni. Preveriti morate posodobitve za te vtičnike in jih nato ponovno omogočiti:';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Od predhodnje nastavitve so shranjene le predpone sličic in e-poštni naslov skrbnika spletne strani';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'V primeru težav naredite vzdrževalno preverjanje preko [Administracija>Orodja>Vzdrževanje]';
+$lang['SQL queries'] = 'SQL poizvedbe';
+$lang['Statistics'] = 'Statistika';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Ta stran predlaga, da nadgradite podatkovno bazo vaše Piwigo različice na novejšo različico. Čarovnik nadgradnje je zaznal, da trenutno uporabljate <strong>različico %s</strong> (ali enakovredno).';
+$lang['Upgrade'] = 'Nadgradi';
+$lang['Upgrade from version %s to %s'] = 'Nadgradi iz različice %s na različico %s';
+$lang['Upgrade informations'] = 'Informacije nadgradnje';
+$lang['User permissions and group permissions have been erased'] = 'Dovoljenja uporabnikov in skupin so bila izbrisana';
+$lang['You do not have access rights to run upgrade'] = 'Nimate dovoljenja za izvedbo nadgradnje';
+$lang['total SQL time'] = 'skupen SQL čas';
+$lang['total upgrade time'] = 'skupen čas nadgradnje';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'V <i>%s</i>, pred <b>?></b>, vstavi:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Nadgradnjo lahko opravi le Administrator. Prosimo prijavite se spodaj:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Kot previdnostni ukrep so sledeče preobleke onemogočene. Preveriti morate posodobitve za te preobleke in jih nato ponovno omogočiti:';
+$lang['All sub-albums of private albums become private'] = 'Vsi pod-albumi zasebnega albuma postanejo zasebni';
+?>
Index: /tags/2.6.0RC1/language/sr_RS/about.html
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/about.html	(revision 25596)
@@ -0,0 +1,6 @@
+  <li>Piwigo је интернет апликација која вам омогућава израду интернет галерије на лак начин.</li>
+
+  <li>Технички, Piwigo је потпуно развијен коришћењем PHP (the elePHPant) као и  MySQL базе података (the SQuirreL).</li>
+
+  <li>Ако имате предлога и коментара, молимо посјетите <a href="http://piwigo.org">Piwigo</a> службену страницу, и њој посвећен <a href="http://piwigo.org/forum">форум</a>.</li>
+
Index: /tags/2.6.0RC1/language/sr_RS/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/admin.lang.php	(revision 25596)
@@ -0,0 +1,881 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d веза';
+$lang['%d associations'] = '%d везе';
+$lang['%d album including'] = '%d категорија обухвата ';
+$lang['%d albums including'] = '%d категорије обухватају ';
+$lang['%d physical'] = '%d стварна';
+$lang['%d physicals'] = '%d стварних';
+$lang[' and %d virtual'] = ' и %d виртуална';
+$lang[' and %d virtuals'] = ' и %d виртуалних';
+$lang['%d album moved'] = '%d категорија премештена';
+$lang['%d albums moved'] = '%d категорија премештено';
+$lang['%d group'] = '%d група';
+$lang['%d groups'] = '%d група';
+$lang['%d member'] = '%d члан';
+$lang['%d members'] = '%d чланова';
+$lang['%d tag'] = '%d ознака';
+$lang['%d tags'] = '%d ознака';
+$lang['%d user comment rejected'] = '%d кориснички коментар одбачен';
+$lang['%d user comments rejected'] = '%d корисничких коментара одбачено';
+$lang['%d user comment validated'] = '%d кориснички кометар одобрен';
+$lang['%d user comments validated'] = '%d корисничких коментара одобрено';
+$lang['%d user deleted'] = '%d корисник избрисан';
+$lang['%d users deleted'] = '%d корисника избрисано';
+$lang['%d user'] = '%d корисник';
+$lang['%d users'] = '%d корисника';
+$lang['%d waiting for validation'] = '%d чекање на оверу';
+$lang['Actions'] = 'Поступци';
+$lang['Activate'] = 'Укључи';
+$lang['Add/delete a permalink'] = 'Додај/избриши сталну везу';
+$lang['Add a tag'] = 'Додај ознаку';
+$lang['Add a user'] = 'Додај корисника';
+$lang['Add group'] = 'Додај групу';
+$lang['Add'] = 'Додај';
+$lang['Allow user registration'] = 'Одобри упис корисника';
+$lang['Apply to sub-albums'] = 'Примени на подкатегорије';
+$lang['Associated'] = 'Повезаност';
+$lang['Caddie management'] = 'Контрола фиоке';
+$lang['Caddie'] = 'Фиока';
+$lang['Albums authorized thanks to group associations'] = 'Категорије оверене захваљујући групној вези';
+$lang['Album manual order was saved'] = 'Редослед категорија је сачуван';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Провера надоградње неуспешна из непознатог разлога.';
+$lang['Check for upgrade'] = 'Провера надоградње';
+$lang['Comments for all'] = 'Коментари за све';
+$lang['Current name'] = 'Тренутни назив';
+$lang['Database'] = 'База података';
+$lang['Deactivate'] = 'Искључи';
+$lang['Delete Representant'] = 'Избриши представника';
+$lang['Delete selected tags'] = 'Избриши одабране ознаке';
+$lang['Delete selected users'] = 'Избриши одабране кориснике';
+$lang['Deletions'] = 'Брисања';
+$lang['Deny selected groups'] = 'Забрани одабране групе';
+$lang['Deny selected users'] = 'Забрани одабране кориснике';
+$lang['Description'] = 'Опис';
+$lang['Display options'] = 'Могућности приказа';
+$lang['Dissociated'] = 'Одвојено';
+$lang['Does not represent'] = 'Не представља';
+$lang['Edit selected tags'] = 'Уреди одабране ознаке';
+$lang['Edit tags'] = 'Уреди ознаке';
+$lang['Email admins when a new user registers'] = 'Пошаљи електронску пошту администраторима при упису нових корисника';
+$lang['Email admins when a valid comment is entered'] = 'Пошаљи електронску пошту администраторима при упису нових коментара';
+$lang['Email admins when a comment requires validation'] = 'Пошаљи електронску пошту администраторима када коментар треба оверу';
+$lang['Environment'] = 'Окружење';
+$lang['Form'] = 'Облик';
+$lang['Gallery title'] = 'Назив галерије';
+$lang['Grant selected groups'] = 'Овласти одабране групе';
+$lang['Grant selected users'] = 'Овласти одабране кориснике';
+$lang['Group name'] = 'Назив групе';
+$lang['Groups'] = 'Група';
+$lang['Guests'] = 'Гостију';
+$lang['History'] = 'Историја';
+$lang['Informations'] = 'Информације';
+$lang['Install'] = 'Инсталирај';
+$lang['Link all album photos to a new album'] = 'Повежи све елементе категорије са новом категоријом';
+$lang['Link all album photos to some existing albums'] = 'Повежи све елементе категорије са неком постојећом категоријом';
+$lang['Linked albums'] = 'Повезане категорије';
+$lang['Lock gallery'] = 'Закључај галерију';
+$lang['Maintenance'] = 'Одржавање';
+$lang['Edit album permissions'] = 'Управљање дозволама за категорију';
+$lang['Manage permissions for group "%s"'] = 'Управљање дозволама за групу "%s"';
+$lang['Manage permissions for user "%s"'] = 'Управљање дозволама за корисника "%s"';
+$lang['Manage tags'] = 'Управљање ознакама';
+$lang['Members'] = 'Чланови';
+$lang['Metadata synchronized from file'] = 'Усклађивање мета података из датотеке';
+$lang['Move albums'] = 'Премести категорије';
+$lang['Move'] = 'Премести';
+$lang['Name'] = 'Назив';
+$lang['New name'] = 'Нови назив';
+$lang['New parent album'] = 'Нова надређена категорија';
+$lang['New tag'] = 'Нова ознака';
+$lang['Number of comments per page'] = 'Број коментара по страници';
+$lang['Number of rates'] = 'Број оцена';
+$lang['Number of thumbnails to create'] = 'број повезних сличица за израду';
+$lang['Only private albums are listed'] = 'Само личне категорије су исписане';
+$lang['Operating system'] = 'Оперативни систем';
+$lang['Options'] = 'Могућности';
+$lang['Other private albums'] = 'Остале личне категорије';
+$lang['Page banner'] = 'Банер странице';
+$lang['Parent album'] = 'Надређена категорија';
+$lang['Path'] = 'Путања';
+$lang['Permalink'] = 'Стална веза';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Стална веза %s је претходно коришћтена од категорије %s. Прво је избришите из старих записа';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Стална веза мора бити састављена од знакова a-z, A-Z, 0-9, "-", "_" или "/". Не сме бити бројчана вриједност или почињати бројем па знаком "-"';
+$lang['Permalink %s is already used by album %s'] = 'Сталну везу %s већ користи категорија %s';
+$lang['Permalink history'] = 'Историја сталних веза';
+$lang['Permalinks'] = 'Сталне везе';
+$lang['Permission denied'] = 'Дозвола ускраћена';
+$lang['Permission granted thanks to a group'] = 'Дозвола одобрена захваљујући групи';
+$lang['Permission granted'] = 'Дозвола одобрена';
+$lang['Photo informations updated'] = 'Подаци о сликама обновљени';
+$lang['Plugins'] = 'Додаци';
+$lang['Position'] = 'Положај';
+$lang['Preferences'] = 'Подешавања';
+$lang['Properties'] = 'Карактеристике';
+$lang['Random photo'] = 'Слика случајног избора';
+$lang['Rate date'] = 'Датум оцене';
+$lang['Rating by guests'] = 'Оцене гостију';
+$lang['Rating'] = 'Оцењивање';
+$lang['Reject'] = 'Одбаци';
+$lang['Representant'] = 'Представник';
+$lang['Representation of albums'] = 'Представљање категорија';
+$lang['Representative'] = 'Представљено';
+$lang['Represents'] = 'Представља';
+$lang['Save order'] = 'Сними распоред';
+$lang['Save to permalink history'] = 'Сними у историју сталних веза';
+$lang['Select at least one album'] = 'Одаберите најмање једну категорију';
+$lang['Select at least one photo'] = 'Одаберите најмање једну слику';
+$lang['Select at least one user'] = 'Одаберите најмање једног корисника';
+$lang['Show info'] = 'Приказ података';
+$lang['Site manager'] = 'Администратор галерије';
+$lang['Status'] = 'Стање';
+$lang['Statistics'] = 'Статистика';
+$lang['Storage album'] = 'Категорија снимања';
+$lang['Sum of rates'] = 'Збир оцена';
+$lang['Tag "%s" already exists'] = 'Ознака "%s" већ постоји';
+$lang['Tag "%s" was added'] = 'Ознака "%s" додата';
+$lang['Tag selection'] = 'Избор ознаке';
+$lang['The %d following tags were deleted'] = 'Следеће %d ознаке су избрисане';
+$lang['Unable to check for upgrade.'] = 'Не могу проверити за надоградњу.';
+$lang['Uninstall'] = 'Уклони';
+$lang['Use the default photo sort order (defined in the configuration file)']='Користи подразумевани редослед слагања слика (одређено у датотеци за подешавање)';
+$lang['User comments validation'] = 'Овера корисничких коментара';
+$lang['Users'] = 'Корисници';
+$lang['Validate'] = 'Овери';
+$lang['Validation'] = 'Овера';
+$lang['Version'] = 'Верзија';
+$lang['Virtual albums to move'] = 'Виртуелне категорије за премештање';
+$lang['Virtual album name'] = 'Назив виртуелне категорије';
+$lang['Webmaster cannot be deleted'] = 'Мајстор интернет страница не може бити избрисан';
+$lang['You are running on development sources, no check possible.'] = 'Ви користите развојни изворни код, провера немогућа.';
+$lang['You cannot delete your account'] = "Не можете избрисати свој налог";
+$lang['You cannot move an album in its own sub album'] = 'Не можете преместити категорију у њену подкатегорију';
+$lang['You need to confirm deletion'] = 'Потврди брисање';
+$lang['Associate to album'] = 'повежи са категоријом';
+$lang['associate to group'] = 'повежи са групом';
+$lang['Authorized'] = 'Овлашћено';
+$lang['Add a virtual album'] = 'Додај виртуелну категорију';
+$lang['Authorize users to add comments on selected albums'] = 'Овластите кориснике за давање коментара у одабраним категоријама';
+$lang['The name of an album must not be empty'] = 'Назив категорије не би требао бити празан';
+$lang['Lock albums'] = 'Закључај категорије';
+$lang['Private'] = 'Лична категорија';
+$lang['Public'] = 'Јавна категорија';
+$lang['Find a new representant by random'] = 'Избор новог представника случајним избором';
+$lang['Public / Private'] = 'Јавно / Лично';
+$lang['Manage authorizations for selected albums'] = 'Управљање овлашћењима за одабране категорије';
+$lang['Virtual album added'] = 'Виртуелна категорија додата';
+$lang['Virtual album deleted'] = 'Виртуелна категорија избрисана';
+$lang['Access type'] = 'Врста приступа';
+$lang['Information data registered in database'] = 'Подаци уписани у базу података';
+$lang['Default display'] = 'Подразумевани приказ';
+$lang['The gallery URL is not valid.'] = 'URL галерије није одговарајући.';
+$lang['Main'] = 'Главно';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Број коментара по страници мора бити између 5 и 50.';
+$lang['Configuration'] = 'Подешавање';
+$lang['confirm'] = 'потврди';
+$lang['Date'] = 'Датум';
+$lang['delete album'] = 'обриши категорију';
+$lang['Dissociate from album'] = 'одвоји од категорије';
+$lang['dissociate from group'] = 'одвоји од групе';
+$lang['Album updated successfully'] = 'Подаци категорије успешно обновљени.';
+$lang['photos per page'] = 'елемената по страници';
+$lang['High definition enabled'] = 'Висока резолуција омогућена';
+$lang['File'] = 'Датотека';
+$lang['first photo added on %s'] = 'први елемент додат %s';
+$lang['Forbidden'] = 'Забрањено';
+$lang['global mode'] = 'општи начин';
+$lang['group "%s" added'] = 'група "%s" додата';
+$lang['group "%s" deleted'] = 'група "%s" избрисана';
+$lang['group "%s" updated'] = 'група "%s" обновљена';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Назив групе не може садржати  " или \' или бити празан.';
+$lang['This name is already used by another group.'] = 'Овај назив већ користи друга група.';
+$lang['High definition'] = 'Висока резолуција';
+$lang['jump to album'] = 'прелазак на категорију';
+$lang['jump to photo'] = 'прелазак на слику';
+$lang['leave'] = 'остави';
+$lang['Lock'] = 'Закључај';
+$lang['Locked'] = 'Закључано';
+$lang['manage album photos'] = 'управљање елементима категорије';
+$lang['manage sub-albums'] = 'управљање подкатегоријама';
+$lang['Manage'] = 'Управљај';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Време извршења је истекло, обрада се мора наставити [Процењено време: %d секунде].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Време извршења је истекло, обрада се мора наставити [Процењено време: %d секунди].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Предвиђено време за попис корисника за слање порука је ограничено. Остали корисници нису излистани.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Време за слање поруке је ограничено. Остале поруке су прескочене.';
+$lang['To send ?'] = 'Послати ?';
+$lang['Last send'] = 'Задње послато';
+$lang['Email'] = 'електронска адреса';
+$lang['User'] = 'Корисник';
+$lang['See you soon,'] = 'Видимо се ускоро,';
+$lang['Go to'] = 'Иди на ';
+$lang['Hello'] = 'Поздрав ';
+$lang['New photos were added'] = 'Нови елементи су додати ';
+$lang['on'] = ' на ';
+$lang['between'] = 'између ';
+$lang['and'] = ' и ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Мајстор интернет страница вас је претлатио на примање електронских обавештења.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Претплатили сте се на примање електронских обавештења.';
+$lang['To subscribe'] = 'Претплата';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Уколико сте наишли на проблеме или имате питања, молимо пошаљите поруку за ';
+$lang['[NBM] Problems or questions'] = '[NBM] Проблеми или питања';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Мајстор интернет страница Вас је уклонио са листе за примање е-маил обавештења.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Уклонили сте се са листе за примање електронских обавештења.';
+$lang[', click on'] = ', кликните на ';
+$lang['To unsubscribe'] = 'За уклањање';
+$lang['With blank value, gallery title will be used'] = 'Са празним пољем, користи ће се назив галерије';
+$lang['Notification'] = 'Обавештење';
+$lang['Error when sending email to %s [%s].'] = 'Грешка приликом слања електронске поруке за %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Порука послата за %s [%s].';
+$lang['%d mail was sent.'] = '%d порука послата.';
+$lang['%d mails were sent.'] = '%d поруке послате.';
+$lang['%d mail was not sent.'] = '%d порука није послата.';
+$lang['%d mails were not sent.'] = '%d поруке нису послате.';
+$lang['No mail to send.'] = 'Нема поруке за слање.';
+$lang['There is no available subscribers to mail.'] = 'Нема доступних примаоца за слање порука.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Претплатници могу бити излистани (доступни) само ако има нових елемената за обавештење.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'У сваком случају само мајстор интернет страница може приступити овој табли а никад администратори.';
+$lang['No user to send notifications by mail.'] = 'Нема корисника за слање електронских обавештења.';
+$lang['New photos added'] = 'Нови елементи додати';
+$lang['Subscribe to notification by mail'] = 'Претплатите се на електронска обавештења';
+$lang['Unsubscribe from notification by mail'] = 'Уклоните се из система примања електронских обавештења';
+$lang['Parameter'] = 'Ставка';
+$lang['Continue processing treatment'] = 'Настави обраду поступка';
+$lang['Complementary mail content'] = 'Комплетан садржај поруке';
+$lang['Add detailed content'] = 'Додај детаљни садржај';
+$lang['Send mail as'] = 'Пошаљи поруку као ';
+$lang['Send mail to users'] = 'Пошаљи поруку корисницима';
+$lang['Send'] = 'Пошаљи';
+$lang['Options'] = 'Могућности';
+$lang['Send'] = 'Пошаљи';
+$lang['Subscribed'] = 'Претплаћен';
+$lang['Subscribe'] = 'Претплатите се';
+$lang['Parameters'] = 'Ставке';
+$lang['Select recipients'] = 'Одаберите примаоце';
+$lang['Subscribe/unsubscribe users'] = 'Претплати/поништи претплату корисника';
+$lang['Unsubscribed'] = 'Претплата поништена';
+$lang['%d parameter was updated.'] = '%d ставка је обновљена.';
+$lang['%d parameters were updated.'] = '%d ставке су поништене.';
+$lang['%d user was not updated.'] = '%d корисник није обновљен.';
+$lang['%d users were not updated.'] = '%d корисници нису обновљени.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Корисник %s [%s] је уклоњен из листе претплатника.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Корисник %s [%s] је додат на листу претплатника.';
+$lang['%d user was updated.'] = '%d корисник је обновљен.';
+$lang['%d users were updated.'] = '%d корисници су обновљени.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Корисник %s [%s] није уклоњен из листе претплатника.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Корисник %s [%s] није додат на листу претплатника.';
+$lang['User %s [%s] added.'] = 'Корисник %s [%s] додат.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Упозорење: претплата или укидање претплате ће послати електронске поруке корисницима';
+$lang['Send mail on HTML format'] = 'Пошаљи поруку у ХТМЛ облику';
+$lang['Include display of recent photos grouped by dates'] = 'Укључи приказ недавних слика сложених по датумима';
+$lang['Available only with HTML format'] = 'Доступно само у ХТМЛ облику';
+$lang['no write access'] = 'нема дозволе уписа';
+$lang['Permissions'] = 'Дозволе';
+$lang['private'] = 'лично';
+$lang['public'] = 'јавно';
+$lang['Purge never used notification feeds'] = 'Испразни никад коришћене обаештавајуће изворе';
+$lang['Purge sessions'] = 'Испразни сесије';
+$lang['randomly represented'] = 'представљен случајним избором';
+$lang['registration date'] = 'датум уписа';
+$lang['clean'] = 'чисто';
+$lang['Create this site'] = 'Направи ову страницу';
+$lang['test'] = 'проба';
+$lang['test this remote site'] = 'испробајте ово удаљену страницу';
+$lang['remove tags'] = 'уклони ознаке';
+$lang['Repair and optimize database'] = 'Поправи и подеси базу података';
+$lang['selection'] = 'избор';
+$lang['set to'] = 'постављено на';
+$lang['singly represented'] = 'једнозначно представљено';
+$lang['This site already exists'] = 'Ова страница већ постоји';
+$lang['created'] = 'направљено';
+$lang['delete'] = 'обриши';
+$lang['delete this site and all its attached elements'] = 'обриши ову страницу и све њене придодате ставке';
+$lang['an error happened'] = 'дошло је до грешке';
+$lang['Local'] = 'Локално';
+$lang['Remote'] = 'Удаљено';
+$lang['update the database from files'] = 'обнови базу података помоћу датотеке';
+$lang['status'] = 'стање';
+$lang['Directory'] = 'Мапа';
+$lang['sub-albums'] = 'подкатегорије';
+$lang['Synchronize metadata'] = 'синхронизуј мета податке';
+$lang['target'] = 'одредиште';
+$lang['Thumbnail'] = 'Повезне сличице';
+$lang['Title'] = 'наслов';
+$lang['Album list management'] = 'Управљање категоријама';
+$lang['Piwigo configuration'] = 'Piwigo подешавања';
+$lang['Edit album'] = 'Уреди категорију';
+$lang['Group management'] = 'Управљање групама';
+$lang['User list'] = 'Листа корисника';
+$lang['Edit photo information'] = 'Промена података о слици';
+$lang['Database synchronization with files'] = 'Синхронизација базе података са датотекама';
+$lang['all'] = 'све';
+$lang['height must be a number superior to'] = 'висина мора бити број већи од ';
+$lang['width must be a number superior to'] = 'ширина мора бити број већи од';
+$lang['for the file format'] = 'за датотечни облик';
+$lang['Photo unreachable or no support'] = 'Слика недоступна или без подршке';
+$lang['GD version'] = 'ГД верзија';
+$lang['General statistics'] = 'Главна статистика';
+$lang['average time'] = 'просечно време';
+$lang['number of miniaturized photos'] = 'број умањених слика';
+$lang['total time'] = 'укупно време';
+$lang['for this file format'] = 'за ову врсту датотеке';
+$lang['unit mode'] = 'појединачни начин';
+$lang['Unlocked'] = 'Откључано';
+$lang['unset'] = 'раздешено';
+$lang['Update albums informations'] = 'Обнови податке о категоријама';
+$lang['Update photos information'] = 'Обнови податке о сликама';
+$lang['Synchronize'] = 'Усагласи';
+$lang['reduce to single existing albums'] = 'сажми на једну постојећу категорију-е';
+$lang['Choose an option'] = 'Изаберите могућност';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'најопширнији могући приказ података (додате категорије и елементи, избрисане  категорије и елементи)';
+$lang['Error list'] = 'Листа грешака ';
+$lang['Errors caption'] = 'Заглавља грешака';
+$lang['Detailed informations'] = 'Детаљнија обавештења';
+$lang['File/directory read error'] = 'Грешка читања датотеке/директоријума';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Датотеци или директоријуму се не може приступити (не постоји или је приступ забрањен)';
+$lang['albums deleted in the database'] = 'категорије избрисане из базе података';
+$lang['photos deleted from the database'] = 'елементи избрисани из базе података';
+$lang['photos candidates for metadata synchronization'] = 'слика кандидата за синхронизацију мета података';
+$lang['photos informations synchronized with files metadata'] = 'података елемената синхронизовано са мета подацима датотеке';
+$lang['errors during synchronization'] = 'грешака током синхронизације';
+$lang['albums added in the database'] = 'категорија додато у базу података';
+$lang['photos added in the database'] = 'елемената додато у базу података';
+$lang['photos updated in the database'] = 'елемената обновљено у бази података';
+$lang['Search for new images in the directories'] = 'Претраживање нових слика у директоријумима';
+$lang['added'] = 'додато';
+$lang['deleted'] = 'обрисано';
+$lang['Metadata synchronization results'] = 'Резултат усклађивања мета података';
+$lang['only perform a simulation (no change in database will be made)'] = 'изврши само симулацију (нема промена у бази података)';
+$lang['Simulation'] = 'Симулација';
+$lang['directories + files'] = 'директоријуме + датотеке';
+$lang['only directories'] = 'само директоријуме';
+$lang['synchronize files structure with database'] = 'усклади структуру датотеке са базом података';
+$lang['synchronize files metadata with database photos informations'] = 'усклади мета податке датотеке са подацима о елементу из базе података';
+$lang['even already synchronized photos'] = 'чак и већ усклађене елементе';
+$lang['Used metadata'] = 'Коришћени мета подаци';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Називи директоријума и датотека морају бити састављени од слова, бројва, "-", "_" ili "."';
+$lang['wrong filename'] = 'лош назив датотеке';
+$lang['Upload'] = 'Пребаци';
+$lang['user "%s" added'] = 'корисник "%s" додат';
+$lang['User status'] = 'Стање корисника';
+$lang['user_status_admin'] = 'Администратор';
+$lang['user_status_generic'] = 'Општи';
+$lang['user_status_guest'] = 'Гост';
+$lang['user_status_normal'] = 'Корисник';
+$lang['user_status_webmaster'] = 'Мајстор интернет страница';
+$lang['Virtual album'] = 'Виртуелна кетегорија';
+$lang['Waiting'] = 'Чекање';
+$lang['default'] = 'подразумевано';
+$lang['Toggle \'default group\' property'] = 'Промени \'подразумевана група\' особине';
+$lang['Advanced features'] = 'Напредне могућности';
+$lang['Overall'] = 'Свеукупно';
+$lang['Year'] = 'Година';
+$lang['Month'] = 'Месец';
+$lang['Day'] = 'Дан';
+$lang['Pages seen'] = 'Страница виђенa';
+$lang['Time'] = 'Време';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Елемент';
+$lang['Section'] = 'Секција';
+$lang['An information email was sent to group "%s"'] = 'Електронска порука обавештења је послата групи "%s';
+$lang['Send an information email to group members'] = 'Пошаљи електронско обавештења члановима групе';
+$lang['Group'] = 'Група';
+$lang['[%s] Visit album %s'] = '[%s] Дођите и погледајте категорију %s';
+$lang['Hello,'] = 'Здраво,';
+$lang['See you soon.'] = 'До виђења.';
+$lang['Discover album:'] = 'Дођите и откријте категорију:';
+$lang['Mail content'] = 'садржај електронске поруке';
+$lang['none'] = 'ни један';
+$lang['high'] = 'високо';
+$lang['other'] = 'остало';
+$lang['Element type'] = 'Тип елемента';
+$lang['Image id'] = 'Шифра слике';
+$lang['Summary'] = 'Збирно';
+$lang['%d line filtered'] = '%d линија прочишћена';
+$lang['%d lines filtered'] = '%d линија прочишћено';
+$lang['%d guest'] = '%d гост';
+$lang['%d guests'] = '%d гостију';
+$lang['Hour'] = 'Сат';
+$lang['guest'] = 'гост';
+$lang['default values'] = 'подразумеване вредности';
+$lang['Guest cannot be deleted'] = 'Гост не може бити избрисан';
+$lang['Default user cannot be deleted'] = 'Подразумевани корисник не може бити избрисан';
+$lang['Purge history detail'] = 'Испразни детаље историје';
+$lang['Purge history summary'] = 'Испразни збирну историју';
+$lang['Check integrity'] = 'Провера целовитости';
+$lang['Anomaly'] = 'Неправилност';
+$lang['Correction'] = 'Исправка';
+$lang['Automatic correction'] = 'Аутоматско исправљање';
+$lang['Impossible automatic correction'] = 'Аутоматско исправљање немогуће';
+$lang['Correction applied with success'] = 'Исправка успешно примењена';
+$lang['Correction applied with error'] = 'Исправка примењена с грешком';
+$lang['%d anomaly has been detected.'] = '%d неправилност је откривена.';
+$lang['%d anomalies have been detected.'] = '%d неправилности су откривене.';
+$lang['%d anomaly has been corrected.'] = '%d неправилност је исправљена.';
+$lang['%d anomalies have been detected corrected.'] = '%d неправилности је исправљено.';
+$lang['%d anomaly has not been corrected.'] = '%d неправилност није исправљена.';
+$lang['%d anomalies have not been corrected.'] = '%d неправилности није исправљено.';
+$lang['Go to %s or %s for more informations'] = 'Идите на %s или %s за више детаља';
+$lang['the forum'] = 'форум';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s вредност није ваљана датотека јер exif није подржан';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s мора бити постављено на false у config_local.inc.php датотеци';
+$lang['Main "guest" user does not exist'] = 'Главни "гост" корисник не постоји';
+$lang['Main "guest" user status is incorrect'] = 'Стање главног "гост" корисника је неисправно';
+$lang['Default user does not exist'] = 'Подразумевани корисник не постоји';
+$lang['Main "webmaster" user does not exist'] = 'Главни "мајстора интернет страница" као корисник не постоји';
+$lang['Main "webmaster" user status is incorrect'] = 'Стање главног "мајстора интернет страница" као корисника је неисправно';
+$lang['User "%s" created with "%s" like password'] = 'Корисник "%s" израђен са "%s" као лозинком';
+$lang['Status of user "%s" updated'] = 'Стање корисника "%s" обновљено';
+$lang['add new photos to caddie'] = 'додај нове елементе у фиоку';
+$lang['No display'] = 'Без приказа';
+$lang['Classic display'] = 'Класични приказ';
+$lang['Hoverbox display'] = 'Приказ лебдећим прозором';
+$lang['Mail address is obligatory for all users'] = 'Електронска адреса је обавезна за све кориснике';
+$lang['Minimum privacy level'] = 'Најнижи ниво приватности';
+$lang['Privacy level'] = 'Ниво приватности';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Познаници';
+$lang['Level 2'] = 'Пријатељи';
+$lang['Level 4'] = 'Породица';
+$lang['Level 8'] = 'Администратори';
+$lang['Reinitialize check integrity'] = 'Понови проверу целовитости';
+$lang['Check all'] = 'Означи све';
+$lang['Uncheck all'] = 'Одзначи све';
+$lang['Check automatic corrections'] = 'Означи аутоматске исправке';
+$lang['Apply selected corrections'] = 'Примени одабране исправке';
+$lang['Ignore selected anomalies'] = 'Занемари одабране неправилности';
+$lang['Refresh'] = 'Освежи';
+$lang['The anomaly will be ignored until next application version'] = 'Неправилност ће се занемарити до следеће верзије галерије';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Исправка неправилности ће поништити чињеницу да је занемарена';
+$lang['%d anomaly has been ignored.'] = '%d неправилност је занемарена.';
+$lang['%d anomalies have been ignored.'] = '%d неправилности су занемарене.';
+$lang['Plugins which need upgrade'] = 'Додаци који требају надоградњу';
+$lang['Plugin list'] = 'Листа додатака';
+$lang['Check for updates'] = 'Провера надоградње';
+$lang['Other plugins'] = 'Остали додаци';
+$lang['Last revisions'] = 'Задња издања';
+$lang['Are you sure you want to delete this plugin?'] = 'Сигурно желите уклонити овај додатак?';
+$lang['Are you sure you want to install this plugin?'] = 'Сигурно желите инсталирати овај додатак?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Сигурно желите инсталирати овај додатак? Морате потврдити да ова пречица не треба уклањање.';
+$lang['Plugin has been successfully copied'] = 'Додатак је успјешно ископиран';
+$lang['You might go to plugin list to install and activate it.'] = 'Можете ићи на листу датотека за инсталацију и покретање.';
+$lang['Can\'t create temporary file.'] = 'Не могу направити привремени датотеку.';
+$lang['Can\'t download archive.'] = 'Не могу преузети датотеку.';
+$lang['Can\'t read or extract archive.'] = 'Не могу очитати или распаковати датотеку.';
+$lang['An error occured during extraction (%s).'] = 'Дошло је до грешке приликом распаковања (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Проверите "plugins" директоријум и дозволе поддиректоријума (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Не могу се повезати на сервер.';
+$lang['Purge compiled templates'] = 'Испразни обрађене шаблоне';
+$lang['ACCESS_0'] = 'Слободан приступ';
+$lang['ACCESS_1'] = 'Приступ свима';
+$lang['ACCESS_2'] = 'Приступ претплатницима';
+$lang['ACCESS_3'] = 'Приступ администраторима';
+$lang['ACCESS_4'] = 'Приступ мајсторима интернет страница';
+$lang['ACCESS_5'] = 'Без приступа';
+$lang['Support'] = 'Подршка';
+$lang['Documentation'] = 'Документација';
+$lang['A new version of Piwigo is available.'] = 'Нова Piwigo vерзија је доступна.';
+$lang['Piwigo Administration'] = 'Piwigo администрација';
+$lang['Piwigo version'] = 'Piwigo верзија';
+$lang['You are running the latest version of Piwigo.'] = 'Користите најновију верзију Piwigo-a.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Верзија од %s [%s] постављене није одговарајућа потребној верзији [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'морате надоградити ваш систем да бисте имали све погодности у противном систем неће радити исправно или уопште неће радити';
+$lang['Deleted on'] = 'Избрисан на';
+$lang['Last hit'] =  'Задња посета';
+$lang['GD library is missing'] = 'Недостаје ГД библиотека';
+$lang['Templates'] = 'Шаблони';
+$lang['Extend for templates'] = 'Проширење за шаблоне';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] =
+ 'Замена изворних шаблона прилагођеним из директоријума template-extension';
+$lang['Replacers (customized templates)'] = 'Замене (прилагођени шаблони)';
+$lang['Original templates'] = 'Изворни шаблони';
+$lang['Optional URL keyword'] = 'Изборна URL кључна реч';
+$lang['Templates configuration has been recorded.'] = 'Подешавње шаблона је сачувано.';
+$lang['All optimizations have been successfully completed.'] = 'Сва побољшања су успешно довршена.';
+$lang['Optimizations have been completed with some errors.'] = 'Побољшања су извршена уз неке грешке.';
+$lang['Modify information'] = 'Промени податак';
+$lang['nothing'] = 'ништа';
+$lang['overrides existing values with empty ones'] = 'прекуцава постојеће вредности празним пољима';
+$lang['Manage photo ranks'] = 'Управљање поретком';
+$lang['Edit ranks'] = 'Уреди поредак';
+$lang['No photo in this album'] = 'Нема елемената у овој категорији';
+$lang['Images manual order was saved'] = 'Сачуван је подешении редослед слика';
+$lang['ranks'] = 'поредак';
+$lang['Drag to re-order'] = 'Повуци за преређивање';
+$lang['Quick Local Synchronization'] = 'Брза Локална Синхронизација';
+$lang['No photo can be deleted'] = 'Нема слике која се може брисати';
+$lang['Delete selected photos'] = 'Бриши одабране слике';
+$lang['%d photo was deleted'] = '%d слика је избрисана';
+$lang['%d photos were deleted'] = '%d слике су избрисане';
+$lang['Downloads'] = 'Преузимања';
+$lang['Released on'] = 'Објављено дана';
+$lang['Number of downloads'] = 'Број преузимања';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Announcements e-Новине';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Останите у вези са пројектом, претплатите се на Piwigo Announcement e-Новине. Добијаћете електронске поруке по изласку нових верзија (понекад са сигурносним закрпама, важно је знати да су доступне и треба их што пре уградити) те о свим важнијим десавањима и догађањима у вези са пројектом. Свега пар електронских порука годишње.';
+$lang['Subscribe %s'] = 'Претплатите %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Претплатите %s на Piwigo English Announcements e-Новине';
+$lang['Purge search history'] = 'Очисти историју претраживања';
+$lang['Hide'] = 'Сакриј';
+$lang['Operation in progress'] = 'Третирање процеса.';
+$lang['Please wait...'] = 'Молим сачекајте...';
+$lang['Password is missing. Please enter the password.'] = 'Лозинка недостаје. Молим унесите лозинку.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Потврда лозинке недостаје. Молим потврдите изабрану лозинку.';
+$lang['Allow users to edit their own comments'] = 'Дозволи корисницима да уређују своје коментаре';
+$lang['Allow users to delete their own comments'] = 'Дозволи корисницима да бришу своје коментаре';
+$lang['Email administrators when a comment is modified'] = 'Пошаљи електронску поруку администратору када је коментар измењен';
+$lang['Email administrators when a comment is deleted'] = 'Пошаљи електронску поруку администратору када је коментар избрисан';
+$lang['Cannot delete the old permalink !'] = 'Стара интернет веза се не може обрисати!';
+$lang['Hit'] = 'Погодак';
+$lang['Tools'] = 'Алати';
+$lang['Photos'] = 'Фотографије';
+$lang['Themes'] = 'Теме';
+$lang['Instructions to use Piwigo'] = 'Инструкције како да користите Piwigo';
+$lang['Installed Themes'] = 'Инсталиране теме';
+$lang['Add New Theme'] = 'Додај нову тему';
+$lang['Forbid this theme to users'] = 'Забрани ову тему корисницима';
+$lang['Set as default theme for unregistered and new users'] = 'Постави као подразумевану тему за нерегистроване и нове кориснике';
+$lang['unknown'] = 'непознато';
+$lang['Upload Photos'] = 'Пошаљи фотографије';
+$lang['Drop into album'] = 'Баци у категорију';
+$lang['+ Add an upload box'] = '+ Додај кутију за слање';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Направи "%s" дирецторијум у корену Ваше Piwigo инсталације';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Дозволи упис (chmod 777) у "%s" директоријум у корену Ваше Piwigo инсталције';
+$lang['existing album'] = 'постојеће категорије';
+$lang['create a new album'] = 'направи нову категорију';
+$lang['Album name'] = 'Назив категорије';
+$lang['Album "%s" has been added'] = 'Категорија "%s" је додата';
+$lang['Uploaded Photos'] = 'Пошаљи фотографије';
+$lang['%d photos uploaded'] = '%d фотографије послате';
+$lang['Privacy level set to "%s"'] = 'Ниво приватности подешен на "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Категорија "%s" сада садржи %d фотографија';
+$lang['Manage this set of %d photos'] = 'Уреди овај сет %d фотографија';
+$lang['Select files'] = 'Изабери датотеке';
+$lang['Everybody'] = 'Сви';
+$lang['Who can see these photos?'] = 'Ко може да види фотографије?';
+$lang['Settings'] = 'Подешења';
+$lang['Resize'] = 'Промени величину';
+$lang['Maximum width'] = 'Максимална ширина';
+$lang['pixels'] = 'тачака';
+$lang['Maximum height'] = 'Максимална висина';
+$lang['Image Quality'] = 'Квалитет слике';
+$lang['Save Settings'] = 'Сними подешења';
+$lang['Your configuration settings are saved'] = 'Ваша подешења су сачувана';
+$lang['Active Themes'] = 'Активне теме';
+$lang['Add write access to the "%s" directory'] = 'Дозволи упис "%s" директоријуму';
+$lang['Administration Home'] = 'Почетна администрације';
+$lang['Change Admin Colors'] = 'Промени администраторске боје';
+$lang['Delete this theme'] = 'Обриши ову тему';
+$lang['Directory does not exist'] = 'Директоријум не постоји';
+$lang['Download,'] = 'Сними на рачунар,';
+$lang['FTP + Synchronization'] = 'FTP + Синхронизација';
+$lang['Get Support on Piwigo Forum'] = 'Подршка он Пиwиго форуму';
+$lang['Help Me'] = 'Помоћ';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ова тема се не може активирати, јер тема не постоји: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ова тема се не може обрисати, јер друге теме зависе од ње: %s';
+$lang['Inactive Themes'] = 'Неактивне теме';
+$lang['Install on your computer,'] = 'Инсталирај на твом рачунару,';
+$lang['Make this theme available to users'] = 'Направи ову тему доступну корисницима';
+$lang['Page end'] = 'Крај стране';
+$lang['Piwigo Uploader'] = 'Piwigo пошиљаоц';
+$lang['Read Piwigo Documentation'] = 'Прочитај Piwigo документацију';
+$lang['Start pLoader and add your photos.'] = 'Покрени pLoader и додај твоје слике.';
+$lang['Switch to clear or dark colors for administration'] = 'Промени на светле или тамне боје за администратора';
+$lang['Theme has been successfully installed'] = 'тема је успешно инсталирана';
+$lang['Visit Gallery'] = 'Посети галерију';
+$lang['Visit Piwigo project website'] = 'Посети страницу Piwigo пројекта';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader означава <em>Piwigo Uploader</em>. Са Вашег рацунара, pLoader припрема Ваше фотографије и шаље их у  Piwigo фото галерију.';
+$lang['Guest Settings'] = 'Подешења за госте';
+$lang['Main Page'] = 'Главна страна';
+$lang['Photo Page'] = 'Фото страна';
+$lang['Activate Navigation Bar'] = 'Активирај линију за навигацију';
+$lang['Activate Navigation Thumbnails'] = 'Активирај повезне сличице за навигацију';
+$lang['Activate icon "%s"'] = 'Активиирај икону "%s"';
+$lang['Photo Properties'] = 'Особине слике';
+$lang['Allow user customization'] = 'Дозволи подешавања кориснику';
+$lang['Languages'] = 'Језици';
+$lang['Installed Languages'] = 'Инсталирани језици';
+$lang['Add New Language'] = 'Додај нови језик';
+$lang['Language has been successfully installed'] = 'Језик је успешно инсталиран';
+$lang['Select:'] = 'Одабери:';
+$lang['None'] = 'Ништа';
+$lang['Invert'] = 'Супротно';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Немогуће деактивирати ову тему, треба Вам бар једна тема.';
+$lang['Webmaster status is required.'] = 'Потребан је статус мајстора интернет страница.';
+$lang['Bound Theme'] = 'Повезана тема';
+$lang['Allow rating'] = 'Дозволи рангирање';
+$lang['Select at least one comment'] = 'Одабери најмање један коментар';
+$lang['Active Plugins'] = 'Активни додаци';
+$lang['Inactive Plugins'] = 'Неактивни додаци';
+$lang['Missing Plugins'] = 'Недостајући додаци';
+$lang['Uninstalled Plugins'] = 'Деинсталирани додаци';
+$lang['By %s'] = 'Од %s';
+$lang['Visit plugin site'] = 'Посети страницу са додацима';
+$lang['Active Languages'] = 'Активни језици';
+$lang['Delete this language'] = 'Обриши овај језик';
+$lang['Forbid this language to users'] = 'Забрани овај језик за кориснике';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Немогуће деактивирати овај језик, прво одаберите други језик као подразумевани.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Немогуће деактивирати овај језик, треба Вам најмање један језик.';
+$lang['Inactive Languages'] = 'Неактивни језици';
+$lang['Make this language available to users'] = 'Омогући овај језик корисницима';
+$lang['Set as default language for unregistered and new users'] = 'Постави као подразумевани језик за нерегистроване и нове кориснике';
+$lang['Add Photos'] = 'Додај фотографије';
+$lang['The following tag was deleted'] = 'Текућа ознака је обрисана';
+$lang['Miscellaneous'] = 'Остало';
+$lang['Virtual Links'] = 'Виртуалне везе';
+$lang['There is no other language available.'] = 'Други језик није доступан.';
+$lang['There is no other plugin available.'] = 'Други додатак није доступан.';
+$lang['There is no other theme available.'] = 'Друга тема није доступна.';
+$lang['By rank'] = 'По рангу';
+$lang['Manual order'] = 'Ручно поређано';
+$lang['Add another set of photos'] = 'Додај други сет фотографија';
+$lang['Order of menubar items has been updated successfully.'] = ' Поредак елемената у избору је успешно ажуриран.';
+$lang['Menu Management'] = 'Контрола избора';
+$lang['Who can see this photo?'] = 'Ко може да види ову слику?';
+$lang['This theme was not designed to be directly activated'] = 'Ова тема није пројектована да може бити непосредно активирана';
+$lang['Pending Comments'] = 'Коментари који чекају на објављивање';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'У Вашој php.ini датотеци, upload_max_filesize (%sB) је већи од post_max_size (%sB), требало би да промените ову вредност';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif екстензија није на располагању, администратор треба да онемогућите коришћење Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Пренешена датотека премашује upload_max_величину датотеке у php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Пренете датотеке су веће од  post_max_size вредности у  php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Пренета датотека је већа од MAX_FILE_SIZE вредности дефинисане у HTML обрасцу';
+$lang['The uploaded file was only partially uploaded'] = 'Преузимана датотека је само делимично преузета!';
+$lang['No file was uploaded'] = 'Ниједна датотека није преузета';
+$lang['Missing a temporary folder'] = 'Недостаје привремени директоријум';
+$lang['Failed to write file to disk'] = 'Грешка при упису на диск';
+$lang['File upload stopped by extension'] = 'Преузимање датотеке зауставњено због продужног имена';
+$lang['Unknown upload error'] = 'Непозната грешка преузимања!';
+$lang['Error on file "%s" : %s'] = 'Грешка код датотеке "%s" : %s';
+$lang['%d of %d photos selected'] = '%d од %d фотографија одабрано';
+$lang['Action'] = 'Операција';
+$lang['Add a filter'] = 'Додај филтер';
+$lang['Album photos associated to the following albums: %s'] = 'Слике албума  се налазе и у следећим албумима: %s';
+$lang['Albums automatically sorted'] = 'Албуми су аутоматски уређени';
+$lang['All %d photos are selected'] = 'Одабране су све слике: %d ';
+$lang['Apply action'] = 'Примени операцију';
+$lang['automatic order'] = 'аутоматско сређивање';
+$lang['Batch Manager'] = 'Менаџер операција';
+$lang['Choose an action'] = 'Одабери операцију';
+$lang['Delete orphan tags'] = 'Обриши orphan ознаку';
+$lang['delete photo'] = 'избриши фотографију';
+$lang['Duplicates'] = 'дупликати';
+$lang['include child albums'] = 'укључи подалбуме';
+$lang['manual order'] = 'ручно уређивање';
+$lang['No photo in the current set.'] = 'Нема фотографија у одабраном скупу.';
+$lang['No photo selected, %d photos in current set'] = 'Ниједна одабрана фотографија, број фотографија у одабраном скупу: %d';
+$lang['No photo selected, no action possible.'] = 'Ниједна одабрана фотографија, нема могућих операција.';
+$lang['on the %d selected photos'] = 'on the %d одабране слике';
+$lang['Orphan tags deleted'] = 'Orphan ознака обрисана';
+$lang['Refresh photo set'] = 'Обнови скуп слика';
+$lang['Remove all filters'] = 'Обриши све филтере';
+$lang['remove author'] = 'обриши аутора';
+$lang['remove creation date'] = 'обриши датум прављења';
+$lang['Remove from caddie'] = 'Избриши из caddie';
+$lang['remove this filter'] = 'избриши овај филтер';
+$lang['remove title'] = 'обриши наслов';
+$lang['Selection'] = 'Избор';
+$lang['Set author'] = 'Постави аутора';
+$lang['Set creation date'] = 'Постави датум прављења';
+$lang['Set title'] = 'Постави наслов';
+$lang['The whole page'] = 'Комплетна страница';
+$lang['The whole set'] = 'Комплетан скуп';
+$lang['Type here the author name'] = 'Откуцај овде име аутора';
+$lang['Type here the title'] = 'Откуцај овде наслов';
+$lang['Week starts on'] = 'Недеља стартује у';
+$lang['You have %d orphan tags: %s.'] = 'Имате %d orphan ознака: %s.';
+$lang['Themes which need upgrade'] = 'Теме које треба да унапредите';
+$lang['Languages which need upgrade'] = 'Језици које треба да унапредите';
+$lang['All themes are up to date.'] = 'Све теме су унапређене.';
+$lang['All plugins are up to date.'] = 'Сви додаци су унапређени.';
+$lang['All languages are up to date.'] = 'Сви језици су унапређени.';
+$lang['Visit theme site'] = 'Посетите страницу о теми';
+$lang['Visit language site'] = 'Посетите страницу о језику';
+$lang['New Version'] = 'Нова верзија';
+$lang['Obsolete Plugins'] = 'Застарели додаци';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Упозорење! Овај додатак није компатибилан са овом верзијом Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Да ли ипак желите да је активирате?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'Овај додатак је сада део PIWIGO програма! Обришите га  ОДМАХ!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ГРЕШКА: Овај додатак недостаје, али је инсталиран! Уклоните(деинсталирате) га ОДМАХ.';
+$lang['new'] = 'Ново';
+$lang['No results'] = 'Без резултата';
+$lang['Searching...'] = 'Тражење...';
+$lang['Type in a search term'] = 'Откуцајте тражени израз';
+$lang['display'] = 'приказ';
+$lang['Average rate'] = 'Просечна оцена';
+$lang['Rate'] = 'Оцена';
+$lang['Deactivate all'] = 'Искључи све';
+$lang['Restore'] = 'Обнови';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Обнови подразумевану конфигурацију. Изгубићете Ваша подешавања додатака!';
+$lang['Show menubar'] = 'Прикажи мени';
+$lang['Thumbnails generation in progress...'] = 'У току је генерисање сличица ...';
+$lang['Photos generation in progress...'] = 'У току је генерисање слика ...';
+$lang['%s photos have been regenerated'] = 'Број регенерисаних фотографија: %s';
+$lang['%s photos can not be regenerated'] = 'Број фотографија који се не може регенерисати: %s';
+$lang['Updates'] = 'Унапређење';
+$lang['Update in progress... Please wait.'] = 'У току је унапређење... Молимо Вас да сачеката.';
+$lang['Ignore this update'] = 'Занемари ово унапређење';
+$lang['Reset ignored updates'] = 'Обнови занемарена унапређења';
+$lang['Update All'] = 'Унапреди све';
+$lang['ERROR'] = 'Грешка';
+$lang['Update Complete'] = 'Унапређење је завршено';
+$lang['Piwigo Update'] = 'ПиВиГо је унапређен';
+$lang['Extensions Update'] = 'Додатаци су унапређени';
+$lang['All extensions are up to date.'] = 'Сви додаци су ажурирани.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Следећи додаци можда нису компатибилни са новом верзијом ПиВиГо-а:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следеће теме можда нису компатибилне са новом верзијом ПиВиГо-а:';
+$lang['I decide to update anyway'] = 'Одлучио сам да унапредим у сваком случају';
+$lang['Update to Piwigo %s'] = 'Унапредите на ПиВиГо: %s';
+$lang['Two updates are available'] = 'Два унапређења су доступна';
+$lang['This is a minor update, with only bug corrections.'] = 'Ово је мање унапређење, само са мањим корекцијама грешака.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Ово је главно унапређење, са <a href="%s">новим могућностима</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Неке теме и додаци можда још нису доступни.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Можете унапредити ПиВиГо директно на %s, без унапређења ПиВиГо-а %s (препоручено).';
+$lang['Save Template Directory'] = 'Снимање адресара шаблона';
+$lang['Dump Database'] = 'Дамповање базе података';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Укључи податке о историји (Упозорење: Меморијско ограничење сервера може бити прекорачено)';
+$lang['Unable to dump database.'] = 'Не могу да дампујем базу података.';
+$lang['Some upgrades are available for extensions.'] = 'Нека унапређења су доступна за проширења.';
+$lang['Ignore All'] = 'Занемари све';
+$lang['Crop'] = 'Одсецање';
+$lang['Width'] = 'Ширина';
+$lang['Height'] = 'Висина';
+$lang['Follow Orientation'] = 'Следећа орјентација';
+$lang['Graphics Library'] = 'Графичка библиотека';
+$lang['Learn more'] = 'Научите више';
+$lang['An error has occured during upgrade.'] = 'Појавила се грешка у току унапређења.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Појавила се грешка у току распаковања. Молимо Вас, проверите дозволе приступа Вашој piwigo инсталацији.<br><a href="%s">Притисните овде да видите извештај о грешкама</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не може да преузме датотеку за надоградњу са сервера';
+$lang['Add to caddie'] = 'додај у фиоку';
+
+$lang['(this tag will be deleted)'] = '(ова ознака биће обрисана)';
+$lang['... or '] = '... или';
+$lang['Activate comments'] = 'Активирај коментар';
+$lang['Add a criteria'] = 'Додај критеријум';
+$lang['Add tags'] = 'Додај ознаке';
+$lang['Allowed file types: %s.'] = 'Дозвољене врсте датотека: %s.';
+$lang['Cancel'] = 'Откажи';
+$lang['Default comments order'] = 'Подразумевани редослед коментара';
+$lang['Default photos order'] = 'Подразумевани редослед фотографија';
+$lang['Merge selected tags'] = 'Споји одабране ознаке';
+$lang['Merge tags'] = 'Споји ознаке';
+$lang['Photo name'] = 'Назив фотографије';
+$lang['bottom left corner'] = 'горњи леви угао';
+$lang['bottom right corner'] = 'доњи десни угао';
+$lang['%d minute'] = 'минута: %d.';
+$lang['%d minutes'] = 'Број минута: %d.';
+$lang['%d month'] = 'месец: %d.';
+$lang['%d months'] = 'број месеци: %d.';
+$lang['%d second'] = 'секунди: %d.';
+$lang['%d seconds'] = 'Број секунди: %d.';
+$lang['%d week'] = 'недеља број: %d.';
+$lang['%d year'] = 'година: %d';
+$lang['%d years'] = 'број година: %d.';
+$lang['%s has been successfully updated.'] = '%s је успешно унапређено.';
+$lang['Confirm merge'] = 'Потврдите спајање';
+$lang['Create'] = 'Направи';
+$lang['Edit photo'] = 'Измени фотографију';
+$lang['Manage Permissions'] = 'Управљај дозволама приступа';
+$lang['Maximum file size: %sB.'] = 'Максимална величина датотеке: %sB.';
+$lang['Select a file'] = 'Одаберите датотеку';
+$lang['Select an album'] = 'Одаберите албум';
+$lang['Sharpen'] = 'Изоштри';
+$lang['hide details'] = 'сакриј појединости';
+$lang['middle'] = 'средина';
+$lang['show details'] = 'прикажи појединости';
+$lang['top left corner'] = 'горњи леви угао';
+$lang['top right corner'] = 'горњи десни угао';
+$lang['Groups and users'] = 'Групе и корисници';
+$lang['Original Size'] = 'Почетна величина';
+$lang['Photo %s of %s'] = 'Слика %s од %s';
+$lang['Start Upload'] = 'Почни пренос';
+$lang['This album contains no photo.'] = 'Албум не садржи фотографије';
+$lang['%d day'] = 'број дана: %d';
+$lang['%d days'] = 'број дана: %d';
+$lang['registered users'] = 'регистровани корисник';
+$lang['simple visitors'] = 'обичан посетилац';
+$lang['modified'] = 'промењено';
+$lang['Format'] = 'Формат';
+$lang['Invalid dimension'] = 'Неправилна димензија';
+$lang['Move to album'] = 'Пребаци у албум';
+$lang['Minimum width'] = 'Минимална ширина';
+$lang['Minimum height'] = 'Минимална висина';
+$lang['Landscape'] = 'Положено';
+$lang['Piwigo for Android'] = 'ПиВиГо за Андроид';
+$lang['Panorama'] = 'Панорама';
+$lang['Select groups...'] = 'Одабери групе ...';
+$lang['Select users...'] = 'Одабери кориснике ...';
+$lang['Y Position'] = 'позиција Y';
+$lang['X Position'] = 'позиција Х ';
+$lang['Visited %d times'] = 'Број посета: %d';
+$lang['Unlock gallery'] = 'Откључај галерију';
+$lang['Activate icon "new" next to albums and pictures'] = 'Активирај„ново“ уз албум и слику';
+$lang['Added by %s'] = 'Додао %s';
+$lang['A locked gallery is only visible to administrators'] = 'Закључана галерија је видљива само администраторима';
+$lang['%d hour'] = 'Број сати: %d';
+$lang['%d hours'] = 'Број сати: %d';
+$lang['%d weeks'] = 'Број недеља: %d';
+$lang['Save manual order'] = 'Сними ручни редослед';
+$lang['Rename'] = 'Промени име';
+$lang['Ratio'] = 'Однос';
+$lang['Portrait'] = 'Усправно';
+$lang['apply automatic sort order'] = 'Примени аутоматски редослед';
+$lang['cancel manual order'] = 'Откажи ручни редослед';
+$lang['administrators'] = 'администратори';
+$lang['Name of the duplicate'] = 'Име дупликата';
+$lang['Multiple Size'] = 'Вишеструке величине';
+$lang['Merge selected groups'] = 'Управљај одабраним групама';
+$lang['Manage the members'] = 'Управљај члановима';
+$lang['Manage photos'] = 'Управљај фотографијама';
+$lang['List'] = 'Списак';
+$lang['Last import'] = 'Последљи увоз';
+$lang['Gallery unlocked'] = 'Галерија откључана';
+$lang['Duplicate'] = 'Дупликат';
+$lang['Delete multiple size images'] = 'Избришите вишеструке величине слика';
+$lang['Zoom'] = 'Увећање';
+$lang['Watermark'] = 'Водени жиг';
+$lang['With no album'] = 'Без албума';
+$lang['any visitor can see this album'] = 'било који посетилац може видети овај албум';
+$lang['add a new watermark'] = 'додајте нови водени жиг';
+$lang['custom'] = 'По избору';
+$lang['With no tag'] = 'Без ознаке';
+$lang['Resize after upload'] = 'Промени величину после слања';
+$lang['Select at least two tags for merging'] = 'Одаберите најмање две ознаке за спајање';
+$lang['Select the destination tag'] = 'Одаберите одредишну ознаку';
+$lang['The original maximum height must be a number between %d and %d'] = 'Висина оригиналне слике мора бити број између %d и %d';
+$lang['The original image quality must be a number between %d and %d'] = 'Квалитет оригиналне слике мора бити број између %d и %d';
+$lang['Send connection settings by email'] = 'Пошаљи подешавања везе електронском поштом';
+$lang['Save visits in history for'] = 'Сачувај посете у историји за ';
+$lang['Not cropped correctly?'] = 'Погрешно исечено?';
+$lang['Opacity'] = 'Непровидност';
+$lang['Permission granted for users'] = 'Дозвола дата корисницима';
+$lang['Generate multiple size images'] = 'Направи вишеструке величине слика ';
+$lang['No destination tag selected'] = 'Није одабрана одредишна ознака';
+$lang['No group is permitted to see this private album'] = 'Ни једној групи није дозвољено да види овај приватни албум';
+$lang['Apply watermark if height is bigger than'] = 'Примени водени жиг ако је висина већа од';
+$lang['Apply watermark if width is bigger than'] = 'Примени водени жиг ако је ширина већа од ';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u корисници имају дозволе јер припадају групи којој је дата дозвола.';
+$lang['%s in the future'] = '%s у будућности';
+$lang['Available versions for'] = 'Доступна верзија за';
+$lang['Available on'] = 'Доступно на';
+$lang['Automatic sort order'] = 'Аутоматски редослед';
+?>
Index: /tags/2.6.0RC1/language/sr_RS/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/common.lang.php	(revision 25596)
@@ -0,0 +1,416 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Српски [SR]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=458
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Српски';
+$lang_info['country'] = 'Србија';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'sr';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d категорија обновљена';
+$lang['%d albums updated'] = '%d категорије обновљене';
+$lang['%d comment to validate'] = '%d коментар за оверу';
+$lang['%d comments to validate'] = '%d коментари за оверу';
+$lang['%d new comment'] = '%d нови коментар';
+$lang['%d new comments'] = '%d нови коментари';
+$lang['%d comment'] = '%d коментар';
+$lang['%d comments'] = '%d коментари';
+$lang['%d hit'] = '%d посета';
+$lang['%d hits'] = '%d посета';
+$lang['%d new photo'] = 'број нових слика: %d';
+$lang['%d new photos'] = 'нове слике - %d';
+$lang['%d new user'] = '%d нови корисник';
+$lang['%d new users'] = '%d нови корисници';
+$lang['About'] = 'O...';
+$lang['All tags'] = 'Све ознаке';
+$lang['Any tag'] = 'Било која ознака';
+$lang['At least one listed rule must be satisfied.'] = 'Најмање једно од наведених правила мора бити задовољено.';
+$lang['Author'] = 'Аутор';
+$lang['Albums'] = 'Категорије';
+$lang['Album'] = 'Категорија';
+$lang['Close this window'] = 'Затвори прозор';
+$lang['Complete RSS feed (photos, comments)'] = 'Потпуни RSS извори (слике, коментари)';
+$lang['Confirm Password'] = 'Потврди лозинку';
+$lang['Connection settings'] = 'Подешавања повезивања';
+$lang['Login'] = 'Пријава';
+$lang['Contact webmaster'] = 'Пишите wебмастер-у';
+$lang['Create a new account'] = 'Направи нови налог';
+$lang['Created on'] = 'Датум израде:';
+$lang['Creation date'] = 'Датум израде';
+$lang['Current password is wrong'] = 'Тренутна лозинка је неисправна';
+$lang['Dimensions'] = 'Величине';
+$lang['Display'] = 'Приказ';
+$lang['Each listed rule must be satisfied.'] = 'Свако наведено правило мора бити задовољено.';
+$lang['Email address is missing. Please specify an email address.'] = 'Недостаје адреса електронске поште';
+$lang['Email address'] = 'Адреса електронске поште';
+$lang['Enter your personnal informations'] = 'Упишите своје личне податке';
+$lang['Error sending email'] = 'Грешка приликом слања електронске поште';
+$lang['File name'] = 'Назив датотеке';
+$lang['File'] = 'Датотека';
+$lang['Filesize'] = 'Величина датотеке';
+$lang['Filter and display'] = 'Филтер и приказ';
+$lang['Filter'] = 'Филтер';
+$lang['Forgot your password?'] = 'Заборавили сте лозинку?';
+$lang['Go through the gallery as a visitor'] = 'Прегледајте галерију као посетилац';
+$lang['Help'] = 'Помоћ';
+$lang['Identification'] = 'Пријава';
+$lang['Photos only RSS feed'] = 'RSS извор само за слике';
+$lang['Keyword'] = 'Кључна реч';
+$lang['Links'] = 'Интернет везе';
+$lang['N/A'] = 'Н/Д';
+$lang['New on %s'] = 'Нови на %s';
+$lang['Notification'] = 'Обавештење';
+$lang['Number of items'] = 'Број ставки';
+$lang['Original dimensions'] = 'Изворне величине';
+$lang['Password forgotten'] = 'Заборављена лозинка';
+$lang['Password'] = 'Лозинка';
+$lang['Post date'] = 'Датум објаве:';
+$lang['Posted on'] = 'Датум објављивања';
+$lang['Profile'] = 'Профил';
+$lang['Quick connect'] = 'Брза веза';
+$lang['RSS feed'] = 'RSS извор';
+$lang['Register'] = 'Упишите се';
+$lang['Registration'] = 'Регистрација';
+$lang['Related tags'] = 'Повезане ознаке';
+$lang['Reset'] = 'Поништи';
+$lang['Retrieve password'] = 'Врати лозинку';
+$lang['Search rules'] = 'Правила претраге';
+$lang['Search tags'] = 'Ознаке претраге';
+$lang['Search'] = 'Претраживање';
+$lang['display available tags'] = 'Погледај доступне ознаке';
+$lang['Since'] = 'Од';
+$lang['Sort by'] = 'Сложено по';
+$lang['Sort order'] = 'Редослед слагања';
+$lang['Tag'] = 'Ознака';
+$lang['Tags'] = 'Ознаке';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS обавијесни извор омогућава обавештавање о новостима са овог wеб места : нове слике, обновљене категорије, нове коментаре. Користите читач RSS iзвора.';
+$lang['Unknown feed identifier'] = 'Непозната ознака извора';
+$lang['User comments'] = 'Кориснички коментари';
+$lang['Username'] = 'Корисничко име';
+$lang['Visits'] = 'Посета';
+$lang['Webmaster'] = 'Мајстор за интернет странице';
+$lang['Week %d'] = 'Недеља %d';
+$lang['About Piwigo'] = 'О Piwigo-u';
+$lang['You are not authorized to access the requested page'] = 'Нисте овлаштени за приступ затраженој страници';
+$lang['add this photo to your favorites'] = 'додај ову слику у омиљене';
+$lang['Administration'] = 'Администрација';
+$lang['all'] = 'све';
+$lang['ascending'] = 'узлазно';
+$lang['author(s) : %s'] = 'аутор(и) : %s';
+$lang['Expand all albums'] = 'Прошири све категорије';
+$lang['posted after %s (%s)'] = 'објављено после %s (%s)';
+$lang['posted before %s (%s)'] = 'објављено пре %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'објављено између %s (%s) и %s (%s)';
+$lang['posted on %s'] = 'објављено на %s';
+$lang['Best rated'] = 'Најбоље оцењено';
+$lang['display best rated photos'] = 'приказ најбоље оцењених ставки';
+$lang['Calendar'] = 'Календар';
+$lang['All'] = 'Све';
+$lang['display each day with photos, month per month'] = 'приказ сваког дана са сликама, месец по месец';
+$lang['View'] = 'Погледај';
+$lang['chronology_monthly_calendar'] = 'Месечни календар';
+$lang['chronology_monthly_list'] = 'Месечни попис';
+$lang['chronology_weekly_list'] = 'Недељни попис';
+$lang['Click here if your browser does not automatically forward you'] = 'Кликните овде ако нисте аутоматски пребачени';
+$lang['comment date'] = 'датум коментара';
+$lang['Comment'] = 'Коментар';
+$lang['Your comment has been registered'] = 'Ваш је коментар уписан';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood систем : молимо сачекајте мало пре објаве новог коментара';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Ваш коментар НИЈЕ уписан јер није прошао правила овере';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Администратор мора одобрити ваш коментар пре објаве.';
+$lang['This login is already used by another user'] = 'Ово корисничко име се већ користи';
+$lang['Comments'] = 'Коментари';
+$lang['Add a comment'] = 'Додај коментар';
+$lang['created after %s (%s)'] = 'направљен након %s (%s)';
+$lang['created before %s (%s)'] = 'направљен прије %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'направљен између %s (%s) и %s (%s)';
+$lang['created on %s'] = 'направљен на %s';
+$lang['Customize'] = 'Подеси';
+$lang['Your Gallery Customization'] = 'Подешавање Ваше Галерије ';
+$lang['day'][0] = 'Недеља';
+$lang['day'][1] = 'Понедељак';
+$lang['day'][2] = 'Уторак';
+$lang['day'][3] = 'Среда';
+$lang['day'][4] = 'Четвртак';
+$lang['day'][5] = 'Петак';
+$lang['day'][6] = 'Субота';
+$lang['Default'] = 'Подразумевано';
+$lang['delete this photo from your favorites'] = 'уклоните ову слику из омиљених';
+$lang['Delete'] = 'Уклони';
+$lang['descending'] = 'силазно';
+$lang['Download'] = 'преузми';
+$lang['Download this file'] = 'преузми ову слику';
+$lang['edit'] = 'уреди';
+$lang['wrong date'] = 'погрешан датум';
+$lang['excluded'] = 'искључено';
+$lang['Your favorites'] = 'Моји омиљени';
+$lang['display your favorites photos'] = 'приказ мојих омиљених слика';
+$lang['Favorites'] = 'Омиљени';
+$lang['First'] = 'Први';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Галерија је закључана због одржавања. Молимо, навратите касније.';
+$lang['Page generated in'] = 'Страница израђена у ';
+$lang['guest'] = 'гост';
+$lang['Hello'] = 'Поздрав';
+$lang['available for administrators only'] = 'доступно само администраторима';
+$lang['display this album'] = 'приказује слике у главној категорији';
+$lang['display last user comments'] = 'Преглед задњих корисничких коментара';
+$lang['customize the appareance of the gallery'] = 'подесите изглед ваше галерије';
+$lang['search'] = 'претражи';
+$lang['Home'] = 'Почетна';
+$lang['in this album'] = 'у овој категорији';
+$lang['in %d sub-album'] = 'у %d подкатегорији';
+$lang['in %d sub-albums'] = 'у %d подкатегорија';
+$lang['included'] = 'укључено';
+$lang['Invalid password!'] = 'Погрешна лозинка!';
+$lang['Language']='Језик';
+$lang['last %d days'] = 'задњих %d дана';
+$lang['Last'] = 'Задњи';
+$lang['Logout'] = 'Одјава';
+$lang['obligatory'] = 'обвезно';
+$lang['display a calendar by creation date'] = 'приказ календара по датуму израде';
+$lang['display all photos in all sub-albums'] = 'приказ свих ставки у свим подкатегоријама';
+$lang['return to normal view mode'] = 'повратак у уобичајени начин прегледа';
+$lang['display a calendar by posted date'] = 'приказ календара по датуму објаве';
+$lang['month'][10] = 'Октобар';
+$lang['month'][11] = 'Новембар';
+$lang['month'][12] = 'Децембар';
+$lang['month'][1] = 'Јануар';
+$lang['month'][2] = 'Фебруар';
+$lang['month'][3] = 'Март';
+$lang['month'][4] = 'Април';
+$lang['month'][5] = 'Мај';
+$lang['month'][6] = 'Јун';
+$lang['month'][7] = 'Јул';
+$lang['month'][8] = 'Август';
+$lang['month'][9] = 'Септембар';
+$lang['Most visited'] = 'Најпосјећеније';
+$lang['display most visited photos'] = 'приказ најпосјећенијих слика';
+$lang['Unknown identifier'] = 'Непозната ознака';
+$lang['New password'] = 'Нова лозинка';
+$lang['Rate this photo'] = 'Оцени ову слику';
+$lang['Next'] = 'Следећи';
+$lang['no rate'] = 'без оцене';
+$lang['Photos posted within the last %d day.'] = 'Ставке објављене у задњем %d дану.';
+$lang['Photos posted within the last %d days.'] = 'Ставке објављене у задњих %d дана.';
+$lang['password updated'] = 'лозинка обновљена';
+$lang['Recent period must be a positive integer value'] = 'Раздобље мора бити позитивна целобројна вредност';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'слика';
+$lang['Click on the photo to see it in high definition'] = 'Кликни на слику за преглед у високој резолуцији';
+$lang['Show file metadata'] = 'Прикажи мета податке записа';
+$lang['Powered by'] = 'Урађено у';
+$lang['Preferences'] = 'Подешења';
+$lang['Previous'] = 'Претходни';
+$lang['Random photos'] = 'Слике по случајном избору';
+$lang['display a set of random photos'] = 'приказ слика по случајном избору';
+$lang['Recent albums'] = 'Недавне категорије';
+$lang['display recently updated albums'] = 'приказ недавно обновљених категорија';
+$lang['Recent period'] = 'Недавно раздобље';
+$lang['Recent photos'] = 'Недавне слике';
+$lang['display most recent photos'] = 'приказ најновијих слика';
+$lang['Redirection...'] = 'Преусмеравање...';
+$lang['Please, enter a login'] = 'Молимо, пријавите се';
+$lang['login mustn\'t end with a space character'] = 'пријава не сме завршавати размаком';
+$lang['login mustn\'t start with a space character'] = 'пријава не сме почињати размаком';
+$lang['this login is already used'] = 'ово корисничко име се већ користи';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'адреса електронске поште мора бити облика xxx@yyy.eee (нпр. : korisnik@stranica.org)';
+$lang['Auto login'] = 'Упамти ме';
+$lang['remove this tag from the list'] = 'уклони  ову ознаку из пописа';
+$lang['representative'] = 'представник';
+$lang['Search for Author'] = 'Претраживање по аутору';
+$lang['Search in albums'] = 'Претраживање у категоријама';
+$lang['Search by date'] = 'Претраживање по датуму';
+$lang['Date'] = 'Датум';
+$lang['End-Date'] = 'Крајњи датум';
+$lang['Kind of date'] = 'Врста датума';
+$lang['Search for words'] = 'Претраживање по речима';
+$lang['Search for all terms'] = 'Претраживање по свим критеријумима ';
+$lang['Search for any term'] = 'Претраживање по било којем критеријуму';
+$lang['Empty query. No criteria has been entered.'] = 'Празна претрага. Није унешено ни једно поље.';
+$lang['Search results'] = 'Резултати претраживања';
+$lang['Search in sub-albums'] = 'Претраживање у подкатегоријама';
+$lang['searched words : %s'] = 'тражене речи : %s';
+$lang['Contact'] = 'Контакт';
+$lang['set as album representative'] = 'постави за представника категорије';
+$lang['Show number of comments'] = 'Pрикажи број коментара';
+$lang['Show number of hits'] = 'Прикажи број посета';
+$lang['slideshow'] = 'клизни приказ';
+$lang['stop the slideshow'] = 'заустави клизни приказ';
+$lang['Specials'] = 'Посебне категорије';
+$lang['SQL queries in'] = 'SQL упит у ';
+$lang['display only recently posted photos'] = 'приказ само недавно објављених слика';
+$lang['return to the display of all photos'] = 'повратак у приказ свих слика';
+$lang['the beginning'] = 'почетак';
+$lang['Thumbnails'] = 'Сличице';
+$lang['Menu'] = 'Избор';
+$lang['A comment on your site'] = 'Коментар на Вашој интернет страници';
+$lang['today'] = 'данас';
+$lang['Update your rating'] = 'Обновите своју оцену';
+$lang['the username must be given'] = 'мора се уписати корисничко име';
+$lang['useful when password forgotten'] = 'корисно када се заборави лозинка';
+$lang['Quick search'] = 'Брзо претраживање';
+$lang['Connected user: %s'] = 'Повезани корисник: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Претраживач: %s';
+$lang['Author: %s'] = 'Аутор: %s';
+$lang['Comment: %s'] = 'Коментар: %s';
+$lang['Comment by %s'] = 'Коментарисао-ла %s';
+$lang['User: %s'] = 'Корисник: %s';
+$lang['Email: %s'] = 'Електронска адреса: %s';
+$lang['Admin: %s'] = 'Администратор: %s';
+$lang['Registration of %s'] = 'Пријава од %s';
+$lang['Album: %s'] = 'Категорија: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Лош статус за корисника „гост“, користи се подразумевани статус. Молимо обавестите мајстора интернет страница.';
+$lang['this email address is already in use'] = 'корисник већ користи ову адресу електронске поште';
+$lang['Album results for'] = 'Резултати категорије за ';
+$lang['Tag results for'] = 'Резултати ознака за';
+$lang['from %s to %s'] = 'од %s до %s';
+$lang['Play of slideshow'] = 'Покрени клизни приказ';
+$lang['Pause of slideshow'] = 'Заустави клизни приказ';
+$lang['Repeat the slideshow'] = 'Понови клизни приказ';
+$lang['Not repeat the slideshow'] = 'Не понављај клизни приказ';
+$lang['Reduce diaporama speed'] = 'Смањи брзину ';
+$lang['Accelerate diaporama speed'] = 'Повећај брзину ';
+$lang['Submit'] = 'Пошаљи';
+$lang['Yes'] = 'Да';
+$lang['No'] = 'Не';
+$lang['%d photo']='слика %d';
+$lang['%d photos']='%d слике';
+$lang['%d photo is also linked to current tags'] = '%d слика такође повезана са тренутним ознакама';
+$lang['%d photos are also linked to current tags'] = '%d слике такође повезана са тренутним ознакама';
+$lang['display photos linked to this tag'] = 'Прегледај слике повезане само са овом ознаком';
+$lang['photos posted during the last %d days'] = 'слике објављене током задњих %d дана';
+$lang['Piwigo Help'] = 'Piwigo Помоћ';
+$lang['Rank'] = 'Редослед';
+$lang['group by letters'] = 'сложено по словима';
+$lang['letters'] = 'слова';
+$lang['show tag cloud'] = 'прикажи означен облак';
+$lang['cloud'] = 'облак';
+$lang['Reset to default values'] = 'Врати на подразумеване вредности';
+$lang['delete all photos from your favorites'] = 'обриши све слике из Омиљени';
+$lang['Sent by'] = 'Послао';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies су блокирани или нису подржани од Вашег претраживача. Морате омогућити цоокиес да би се логовали.';
+$lang['Edit a comment'] = 'Уреди коментар';
+$lang['Are you sure?'] = 'Јесте ли сигурни?';
+$lang['(!) This comment requires validation'] = '(!) Овај коментар захтева оверу';
+$lang['Welcome'] = 'Добродошли';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Добродошли у Вашу Piwigo фото галерију!';
+$lang['... or browse your empty gallery'] = '... или претражи Вашу празну галерију';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... или искључите ову поруку, урадићу то на свој начин';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Здраво %s, Ваша Piwigo фото галерија је празна!';
+$lang['I want to add photos'] = 'Желим да додам фотографије';
+$lang['Manage this user comment: %s'] = 'Уреди коментаре овог корисника: %s';
+$lang['This author modified following comment:'] = 'Овај аутор је мењао текући коментар:';
+$lang['This author removed the comment with id %d'] = 'Овај аутор је уклонио коментар са идентификацијом %d';
+$lang['html tags are not allowed in login'] = 'html ознаке нису дозвољене овде';
+$lang['The number of photos per page must be a not null scalar'] = 'Број фотографија по страни мора бити већи од нуле';
+$lang['Number of photos per page'] = 'Број фотографија по страници';
+$lang['%d rates'] = '%d оцена';
+$lang['Rating score'] = 'Оцена резултата';
+$lang['Invalid username or email'] = 'Неправилно корисничко име или адреса е-поште';
+$lang['Password reset is not allowed for this user'] = 'Поништавање лозинке није дозвољено за овог корисника';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Корисник "%s" нема адресу е-поште, поништавање лозинке није могуће';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Неко је захтевао да се лозинка поништи за корисничко налог:';
+$lang['Username "%s" on gallery %s'] = 'Корисничко име "%s" у галерији %s';
+$lang['To reset your password, visit the following address:'] = 'Да бисте поништили Вашу лозинку прочитајте пошту са следеће е-адресе:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ако је ово грешка, занемарите ову поруку и ништа се неће десити.';
+$lang['Password Reset'] = 'Поништавање лозинке';
+$lang['Check your email for the confirmation link'] = 'Проверите вашу е-пошту за везу потврде';
+$lang['Invalid key'] = 'Лош кључ';
+$lang['The passwords do not match'] = 'Лозинке нису једнаке';
+$lang['Your password has been reset'] = 'Ваша лозинка је поништена';
+$lang['Return to home page'] = 'Повратак на почетну страницу';
+$lang['Please enter your username or email address.'] = 'Молимо Вас да унесете корисничко име или е-адресу.';
+$lang['You will receive a link to create a new password via email.'] = 'Добићете везу  преко е-поште да бисте променили лозинку.';
+$lang['Username or email'] = 'Корисничко име или е-адреса';
+$lang['Change my password'] = 'Промени моју лозинку';
+$lang['Enter your new password below.'] = 'Унесите Вашу нову лозинку испод.';
+$lang['Edit'] = 'Промени';
+$lang['EXIF Metadata'] = 'EXIF подаци';
+$lang['Hello %s,'] = 'Здраво %s,';
+$lang['IPTC Metadata'] = 'IPTC подаци';
+$lang['Send my connection settings by email'] = 'Пошаљи податке о подешавању везе електронском поштом';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Успешна регистрација, добићете ускоро е-пошту са подацима о подешавању везе. Добродошли!';
+$lang['Username modification'] = 'Промена корисничког имена';
+$lang['Your username has been successfully changed to : %s'] = 'Ваше корисничко име је успешно промењено у : %s';
+$lang['square'] = 'квадрат';
+$lang['thumb'] = 'сличица';
+$lang['small'] = 'мала';
+$lang['medium'] = 'средња';
+$lang['large'] = 'Велика';
+$lang['xlarge'] = 'XL велика';
+$lang['xxlarge'] = 'XXL велика';
+$lang['Original'] = 'оригинална';
+$lang['Thank you for registering at %s!'] = 'Хвала за регистрацију на %s!';
+$lang['Here are your connection settings'] = 'Овде су ваша подешавања за везу';
+$lang['Password: %s'] = 'Лозинка: %s';
+$lang['Username: %s'] = 'Корисничко име: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ако мислите да сте добили ову е-пошту грешком, контактирајте нас на следећу адресу: %s';
+$lang['Show oldest comments first'] = 'Прикажи најстарије коментаре прво';
+$lang['Show latest comments first'] = 'Прикажи последње коментаре прво';
+$lang['2small'] = 'XXS - мали';
+$lang['xsmall'] = 'XS - врло мали';
+$lang['Photo sizes'] = 'Величине фотографија';
+$lang['View in'] = 'Погледај у';
+$lang['Mobile'] = 'Мобилни';
+$lang['Desktop'] = 'Стони';
+$lang['File name, A &rarr; Z'] = 'Назив датотеке, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Назив датотеке, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Наслов фотографије, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Наслов фотографије, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Датум сликања, најсновији &rarr; најстарији';
+$lang['Date created, old &rarr; new'] = 'Датум сликања, најстарији &rarr; најновији';
+$lang['Date posted, new &rarr; old'] = 'Датум објављивања, најновији &rarr; најстарији';
+$lang['Date posted, old &rarr; new'] = 'Датум објављивања, најстарији &rarr; најновији';
+$lang['Rating score, high &rarr; low'] = 'Према оцењивању, највећа &rarr; најмања';
+$lang['Rating score, low &rarr; high'] = 'Према оцењивању, најмања &rarr; највећа';
+$lang['Visits, high &rarr; low'] = 'Посете, најбројније &rarr; најмање';
+$lang['Visits, low &rarr; high'] = 'Посете, најмање &rarr; најбројније';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Бројчана променљива, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Бројчана променљива, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Ручно уређени редослед'; 
+
+$lang['%d rate'] = '%d однос';
+$lang['Bad request'] = 'Лош захтев';
+$lang['Forbidden'] = 'Забрањено';
+$lang['Page not found'] = 'Страница није нађена';
+$lang['Permalink for album not found'] = 'Стална веза за галерију није нађена';
+$lang['Piwigo encountered a non recoverable error'] = 'Пивиго је наишао на непоправљиву грешку.';
+$lang['Requested album does not exist'] = 'Захтевана галерија не постоји';
+$lang['Requested tag does not exist'] = 'Захтевана ознака не постоји';
+$lang['Email address is mandatory'] = 'Електронска адреса је обавезна';
+$lang['Username is mandatory'] = 'Корисничко име је обавезно';
+$lang['mandatory'] = 'обавезан';
+$lang['Website'] = 'Међумрежно место';
+$lang['Your website URL is invalid'] = 'Ваша адреса на глобалној мрежи (URL) је неисправна';
+$lang['Password is missing. Please enter the password.'] = 'Лозинка недостаје. Молим унесите лозинку.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Потврда лозинке недостаје. Молим потврдите изабрану лозинку.';
+?>
Index: /tags/2.6.0RC1/language/sr_RS/index.php
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sr_RS/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/install.lang.php	(revision 25596)
@@ -0,0 +1,67 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Инсталација';
+$lang['Basic configuration'] = 'Основна подешења';
+$lang['Default gallery language'] = 'Подразумевани језик галерије';
+$lang['Database configuration'] = 'Подешавање базе';
+$lang['Admin configuration'] = 'Администраторска подешења';
+$lang['Start Install'] = 'Покрени инсталацију';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Биће приказано посетиоцима. Неопходно је за администрацију интернет страница';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Повезивање на сервер успешно, али повезивање на базу је немогућа';
+$lang['Can\'t connect to server'] = 'Немогуће повезивање на сервер';
+$lang['Host'] = 'Хост';
+$lang['User'] = 'Корисник';
+$lang['user login given by your host provider'] = 'корисничко име дато од стране Вашег давалаца интернет услуга';
+$lang['user password given by your host provider'] = 'корисничка лозинка дата од стране Вашег давалаца интернет услуга';
+$lang['Database name'] = 'Име базе';
+$lang['also given by your host provider'] = 'такоде дато од Вашег дистрибутера интернет услуга';
+$lang['Database table prefix'] = 'Префиx табела базе';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'име табеле базе биће префикс са њим (омогућава да управљате боље Вашим табелама)';
+$lang['enter a login for webmaster'] = 'Унеси приступне податке за уредника интернет страница';
+$lang['webmaster login can\'t contain characters \' or "'] = 'приступни подаци за уредника интернет страница не могу садржати знаке \' или "';
+$lang['please enter your password again'] = 'молим унесите Вашу лозинку поново';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Сачувајте у тајности, омогућава приступ администраторском делу';
+$lang['Password [confirm]'] = 'Лозинка[потврди]';
+$lang['verification'] = 'Провера';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Потребна Вам је помоц? Питајте на  <a href="%s">Piwigo табли за поруке</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Посетиоци ће бити у могућности да са ове електронске адресе контактирају администратора странице';
+$lang['PHP 5 is required'] = 'PHP 5 је неопходан';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Изгледа да Ваш сервер тренутно користи PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'ПиВиГо може покушати да промени Вашу конфигурацију на PHP 5 формирањем или мењањем .htaccess датотеке.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Имајте у виду да можете сами изменити Вашу конфигурацију рестартовати Piwigo после тога.';
+$lang['Try to configure PHP 5'] = 'Покушајте да подестите PHP 5';
+$lang['Sorry!'] = 'Жао нам је!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'ПиВиГо није успео да подеси PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Требало би да се обартите подршци Вашег хостинг провајдера за упутство како да промените на PHP 5 сами.';
+$lang['Hope to see you back soon.'] = 'Надамо се да се ускоро поново видимо.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Честитамо, ПиВиГо инсталација је завршена';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Алтернативно решење је да копирате текст из кутије изнад и налепите у датотеку "local/config/database.inc.php" (Упозорење : database.inc.php мора садржати само текст из кутије, без линије или празних карактера)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Формирање конфигурационе датотеке local/config/database.inc.php неуспешно.';
+$lang['Download the config file'] = 'Сними на рачунар конфигурациону датотеку';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Можете снимити на рачунар конфигурациону датотеку и послати је на local/config директоријум Ваше инсталације.';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не устручавајте се да посетите наш форум за помоћ: %s';
+$lang['Just another Piwigo gallery'] = 'ПиВиГо фото галерија';
+$lang['Welcome to my photo gallery'] = 'Добродошли у фото галерију';
+$lang['Welcome to your new installation of Piwigo!'] = 'Добродошли у нову инсталацију ПиВиГо!';
+?>
Index: /tags/2.6.0RC1/language/sr_RS/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Српски [SR]
Index: /tags/2.6.0RC1/language/sr_RS/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sr_RS/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sr_RS/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "Надоградња";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "Ова страница предлаже надоградњу базе са Piwigo старе верзије на нову.
+Асистент надоградње процењује да тренутно користите <strong>издање %s</strong> (или еквивалентну).";
+$lang['Upgrade from version %s to %s'] = "Надоградња са верзије %s на %s";
+$lang['Statistics'] = "Статистика";
+$lang['total upgrade time'] = "укупно време надоградње";
+$lang['total SQL time'] = "укупно SQL време";
+$lang['SQL queries'] = "SQL упити";
+$lang['Upgrade informations'] = "Информације о надоградњи";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Извршити проверу одржавања у [Администрација>Алати>Одржавање] ако наиђете на неки проблем.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Као меру предострожност, дати додаци су деактивирани. Морате проверити за надоградњу додатака пре него их поново активирате: ";
+$lang['Only administrator can run upgrade: please sign in below.'] = "Само администратор може да покрене надоградњу: пријавите се испод.";
+$lang['You do not have access rights to run upgrade'] = "Немате приступна права да покренете надоградњу";
+$lang['All sub-albums of private albums become private'] = "Све подкатегорије приватних категорија постају приватне";
+$lang['User permissions and group permissions have been erased'] = "Корисничке и групне дозволе су обрисане";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Само префиx за повезне сличице и адреса електронске поште уредника интернет страница су сачуване из претходне конфигурације";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'У <i>%s</i>, испред <b>?></b>, уметни:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Као мера предострожности, следеће теме су деактивиране. Ви треба да проверите да ли теме имају унапређење пре него што их поново активирате:'; 
+?>
Index: /tags/2.6.0RC1/language/sv_SE/about.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/about.html	(revision 25596)
@@ -0,0 +1,16 @@
+<p>Det här fotogalleriet är baserat på Piwigo.</p>
+ 
+<p>Piwigo är en fotogalleriprogramvara för internet, byggt av en aktiv gemenskap av användare och utvecklare. Påbyggnadsmoduler gör Piwigo lätt att anpassna och utöka. Piwigio är licensierat under GPL vilket innebär att det är fri programvara.</P>
+ 
+<p id="linkToPiwigo"> <a href="http://piwigo.org">Besök Piwigo's hemsida</a></p>
+ 
+</p>
+
+<p>För den svenska översättningen riktas ett särskilt tack till (i alfabetisk ordning): 
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=12558">berraw</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=9834">jonas</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=14638">styxsailor</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=10283">Wallster</a></li>
+	</Ul>
+</p>
Index: /tags/2.6.0RC1/language/sv_SE/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/admin.lang.php	(revision 25596)
@@ -0,0 +1,954 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['%d association'] = '%d association';
+$lang['%d associations'] = '%d associationer';
+$lang['%d album including'] = '%d kategori inkluderar';
+$lang['%d albums including'] = '%d kategorier inkluderar';
+$lang['%d physical'] = ' %d fysisk';
+$lang[' and %d virtual'] = ' och %d virituell';
+$lang['%d album moved'] = '%d kategori flyttad';
+$lang['%d albums moved'] = '%d kategorier flyttade';
+$lang['%d group'] = '%d grupp';
+$lang['%d groups'] = '%d grupper';
+$lang['%d member'] = '%d medlem';
+$lang['%d members'] = '%d medlemmar';
+$lang['%d tag'] = '%d tagg';
+$lang['%d tags'] = '%d taggar';
+$lang['%d user comment rejected'] = '%d användares kommentar nekad';
+$lang['%d user comments rejected'] = '%d användares kommentarer nekade';
+$lang['%d user comment validated'] = '%d användares kommentar godkänd';
+$lang['%d user comments validated'] = '%d användares kommentarer godkända';
+$lang['%d user deleted'] = '%d användare borttagen';
+$lang['%d users deleted'] = '%d användare borttagna';
+$lang['%d user'] = '%d användare';
+$lang['%d users'] = '%d användare';
+$lang['%d waiting for validation'] = '%d väntar på godkännande';
+$lang['Actions'] = 'Åtgärder';
+$lang['Activate'] = 'Aktivera';
+$lang['Add/delete a permalink'] = 'Lägg till/Ta bort en permalink';
+$lang['Add a tag'] = 'Lägg till en tagg';
+$lang['Add a user'] = 'Lägg till en användare';
+$lang['Add group'] = 'Lägg till grupp';
+$lang['Add'] = 'Lägg till';
+$lang['Allow user registration'] = 'Tillåt användarregistrering';
+$lang['Apply to sub-albums'] = 'Använd på underkategorier';
+$lang['Associated'] = 'Associerad';
+$lang['Caddie management'] = 'Korghantering';
+$lang['Caddie'] = 'Korg';
+$lang['Albums authorized thanks to group associations'] = 'Kategorier auktoriserade tack vare grupp associationer';
+$lang['Album manual order was saved'] = 'Kategoriernas manuella ordningsföljd är sparad';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Sök efter uppdatering misslyckades av okänd anledning.';
+$lang['Check for upgrade'] = 'Sök efter uppdatering';
+$lang['Comments for all'] = 'Kommentarer för alla';
+$lang['Current name'] = 'Aktuellt namn';
+$lang['Database'] = 'Databas';
+$lang['Deactivate'] = 'Avaktivera';
+$lang['Delete Representant'] = 'Ta bort Representant';
+$lang['Delete selected tags'] = 'Ta bort markerade taggar';
+$lang['Delete selected users'] = 'Ta bort markerade användare';
+$lang['Deletions'] = 'Borttagna';
+$lang['Deny selected groups'] = 'Neka markerade grupper';
+$lang['Deny selected users'] = 'Neka markerad användare';
+$lang['Description'] = 'Beskrivning';
+$lang['Display options'] = 'Visa alternativ';
+$lang['Dissociated'] = 'Skiljd';
+$lang['Does not represent'] = 'Representerar inte';
+$lang['Edit selected tags'] = 'Ändra markerade taggar';
+$lang['Edit tags'] = 'Ändra taggar';
+$lang['Email admins when a new user registers'] = 'Sänd mail till admin när en ny användare registreas';
+$lang['Email admins when a valid comment is entered'] = 'Sänd mail till admin när en giltig kommentar är inlagd';
+$lang['Email admins when a comment requires validation'] = 'Sänd mail till admin när en kommentar väntar på godkännande';
+$lang['Environment'] = 'Miljö';
+$lang['Form'] = 'Formulär';
+$lang['Gallery title'] = 'Galleri titel';
+$lang['Grant selected groups'] = 'Tillåt markerade grupper';
+$lang['Grant selected users'] = 'Tillåt markerade användare';
+$lang['Group name'] = 'Grupp namn';
+$lang['Groups'] = 'Grupper';
+$lang['Guests'] = 'Gäster';
+$lang['History'] = 'Historik';
+$lang['Informations'] = 'Information';
+$lang['Install'] = 'Installera';
+$lang['Link all album photos to a new album'] = 'Länka alla kategori element till en ny kategori';
+$lang['Link all album photos to some existing albums'] = 'Länka alla kategori element till existerande kategorier';
+$lang['Linked albums'] = 'Länkade kategorier';
+$lang['Lock gallery'] = 'Lås galleri';
+$lang['Maintenance'] = 'Underhåll';
+$lang['Edit album permissions'] = 'Redigera alumsbehörigheter';
+$lang['Manage permissions for group "%s"'] = 'Hantera behörigheter för grupp "%s"';
+$lang['Manage permissions for user "%s"'] = 'Hantera behörigheter för användare "%s"';
+$lang['Manage tags'] = 'Hantera taggar';
+$lang['Members'] = 'Medlemmar';
+$lang['Metadata synchronized from file'] = 'Metadata synkroniserad från fil';
+$lang['Move albums'] = 'Flytta kategorier';
+$lang['Move'] = 'Flytta';
+$lang['Name'] = 'Namn';
+$lang['New name'] = 'Nytt namn';
+$lang['New parent album'] = 'Ny nuvarande kategori';
+$lang['New tag'] = 'Ny tagg';
+$lang['Number of comments per page'] = 'Antal kommentarer per sida';
+$lang['Number of rates'] = 'Antal röster';
+$lang['Number of thumbnails to create'] = 'Antal miniatyrer att skapa';
+$lang['Only private albums are listed'] = 'Enbart privata kategorier är listade';
+$lang['Operating system'] = 'Operativ system';
+$lang['Options'] = 'Alternativ';
+$lang['Other private albums'] = 'Andra privata kategorier';
+$lang['Page banner'] = 'Sidans banner';
+$lang['Parent album'] = 'Nuvarande kategori';
+$lang['Path'] = 'Sökväg';
+$lang['Permalink'] = 'Permalänk';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalänk %s har tidigare varit använd av kategori %s. Ta bort från permalänks historiken först';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Permalänkens namn får endast innehålla följande tecken: a-z, A-Z, 0-9, "-", "_" eller "/". Den får inte vara numerisk eller börja med ett nummber följt av "-"';
+$lang['Permalink %s is already used by album %s'] = 'Permalänk %s används redan av kategori %s';
+$lang['Permalink history'] = 'Permalänks historik';
+$lang['Permalinks'] = 'Permalänkar';
+$lang['Permission denied'] = 'Tillgång nekad';
+$lang['Permission granted thanks to a group'] = 'Tillgång beviljad tack vare en grupp';
+$lang['Permission granted'] = 'Tillgång beviljad';
+$lang['Photo informations updated'] = 'Bild information uppdaterad';
+$lang['Plugins'] = 'Insticksmoduler';
+$lang['Position'] = 'Position';
+$lang['Preferences'] = 'Inställningar';
+$lang['Properties'] = 'Egenskaper';
+$lang['Random photo'] = 'Slumpad bild';
+$lang['Rate date'] = 'Röst datum';
+$lang['Rating by guests'] = 'Röstning av gäster';
+$lang['Rating'] = 'Röstning';
+$lang['Reject'] = 'Neka';
+$lang['Representant'] = 'Representant';
+$lang['Representation of albums'] = 'Kategori representation';
+$lang['Representative'] = 'Representativ';
+$lang['Represents'] = 'Representerar';
+$lang['Save order'] = 'Spara ordning';
+$lang['Save to permalink history'] = 'Spara i permalänks historik';
+$lang['Select at least one album'] = 'Markera minst en kategori';
+$lang['Select at least one photo'] = 'Markera minst en bild';
+$lang['Select at least one user'] = 'Markera minst en användare';
+$lang['Show info'] = 'Visa info';
+$lang['Site manager'] = 'Hantera sidor';
+$lang['Status'] = 'Status';
+$lang['Statistics'] = 'Statistik';
+$lang['Storage album'] = 'Lagrings kategori';
+$lang['Sum of rates'] = 'Summa av röster';
+$lang['Tag "%s" already exists'] = 'Tagg "%s" existerar redan';
+$lang['Tag "%s" was added'] = 'Tagg "%s" har lagts till';
+$lang['Tag selection'] = 'Tagg markering';
+$lang['The %d following tags were deleted'] = 'Följande %d taggar har blivit borttagna';
+$lang['Unable to check for upgrade.'] = 'Fel uppstod under sökning efter uppdatering.';
+$lang['Uninstall'] = 'Avinstallera';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Använd standard ordning för bild sortering (definerad i konfigurationsfilen)';
+$lang['User comments validation'] = 'Validera användar kommentarer';
+$lang['Users'] = 'Användare';
+$lang['Validate'] = 'Godkänn';
+$lang['Validation'] = 'Godkänn';
+$lang['Version'] = 'Version';
+$lang['Virtual albums to move'] = 'Virtuella kategorier att flytta';
+$lang['Virtual album name'] = 'Namn på virtuell kategori';
+$lang['Webmaster cannot be deleted'] = 'Kan inte ta bort Webmaster';
+$lang['You are running on development sources, no check possible.'] = 'Du använder utväcklar källor, kontroll är inte möjlig.';
+$lang['You cannot delete your account'] = 'Du kan inte ta bort ditt konto';
+$lang['You cannot move an album in its own sub album'] = 'Du kan inte flytta en kategori till sin egen underkategori';
+$lang['You need to confirm deletion'] = 'Du måste godkänna borttagning';
+$lang['Associate to album'] = 'associera till kategori';
+$lang['associate to group'] = 'associera till grupp';
+$lang['Authorized'] = 'Befogad';
+$lang['Add a virtual album'] = 'Lägg till en virtuell kategori';
+$lang['Authorize users to add comments on selected albums'] = 'Tillåt användare att lägga till kommentarer på markerade kategorier';
+$lang['The name of an album must not be empty'] = 'Namnet på en kategori kan inte vara blankt';
+$lang['Lock albums'] = 'Lås kategorier';
+$lang['Private'] = 'Privat kategori';
+$lang['Public'] = 'Allmänn ';
+$lang['Find a new representant by random'] = 'Hitta en ny slumpad representant';
+$lang['Public / Private'] = 'Allmän / Privat';
+$lang['Manage authorizations for selected albums'] = 'Hantera behörigheter för markerade kategorier';
+$lang['Virtual album added'] = 'Virtuell kategori tillagd';
+$lang['Virtual album deleted'] = 'Virtuell kategori borttagen';
+$lang['Access type'] = 'Typ av tillgång';
+$lang['Information data registered in database'] = 'Informations data registrerad i databas';
+$lang['Default display'] = 'Standardvy';
+$lang['The gallery URL is not valid.'] = 'Adressen till galleriet är ogiltig.';
+$lang['Main'] = 'Allmänt';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Antalet kommentarer per sida måste vara mellan 5 och 50.';
+$lang['Configuration'] = 'Inställningar';
+$lang['confirm'] = 'godkänn';
+$lang['Date'] = 'Datum';
+$lang['delete album'] = 'ta bort kategori';
+$lang['Dissociate from album'] = 'Skilj från kategori';
+$lang['dissociate from group'] = 'skilj från grupp';
+$lang['Album updated successfully'] = 'Kategori informationen har uppdaterats.';
+$lang['photos per page'] = 'Bilder per sida';
+$lang['High definition enabled'] = 'High definition aktiverad';
+$lang['File'] = 'Fil';
+$lang['first photo added on %s'] = 'första elementet tillagt på %s';
+$lang['Forbidden'] = 'Förbjudet';
+$lang['global mode'] = 'globalt läge';
+$lang['group "%s" added'] = 'grupp "%s" tillagd';
+$lang['group "%s" deleted'] = 'grupp "%s" borttagen';
+$lang['group "%s" updated'] = 'grupp "%s" uppdaterad';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Namnet på en grupp får inte innehålla symbolerna " eller \' eller vara blank.';
+$lang['This name is already used by another group.'] = 'Det här namnet används redan av en annan grupp.';
+$lang['High definition'] = 'High definition';
+$lang['jump to album'] = 'gå till kategori';
+$lang['jump to photo'] = 'gå till bild';
+$lang['leave'] = 'lämna';
+$lang['Lock'] = 'Lås';
+$lang['Locked'] = 'Låst';
+$lang['manage album photos'] = 'Hantera kategori element';
+$lang['manage sub-albums'] = 'Hantera underkategorier';
+$lang['Manage'] = 'Hantera';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Processen svarar inte, behandling måste fortsätta [Uppskattad tid: %d sekund].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Processen svarar inte, behandling måste fortsätta [Uppskattad tid: %d sekunder].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Tid att förbereda listan för användare som ska skickas e-mail är begränsad. Andra användare är inte listade.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tiden att skicka e-mail är begränsad. Andras e-mail hoppas över.';
+$lang['To send ?'] = 'Att skicka?';
+$lang['Last send'] = 'Senast skickat';
+$lang['Email'] = 'E-mail';
+$lang['User'] = 'Användare';
+$lang['Complementary mail content'] = 'Kompletterande mail innehåll';
+$lang['See you soon,'] = 'Vi ses,';
+$lang['Go to'] = 'Gå till';
+$lang['Hello'] = 'Hej';
+$lang['New photos were added'] = 'Nya element har blivit tillagda';
+$lang['on'] = 'på';
+$lang['between'] = 'mellan';
+$lang['and'] = 'och';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster har lagt till dig så att du får notifikationer via e-mail.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Du har lagts till och kommer nu får notifikationer via e-mail.';
+$lang['To subscribe'] = 'Till prenumerera';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Om du stöter på problem eller har frågor, vänligen skicka ett meddelande till';
+$lang['[NBM] Problems or questions'] = '[NBM] Problem eller frågor';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster har tagit bort dig från listan, du kommer nu inte få några notifikationer via e-mail.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Du har blivit borttagen från notifikations e-mail listan.';
+$lang[', click on'] = ', klicka på';
+$lang['To unsubscribe'] = 'Till avsluta prenumeration';
+$lang['With blank value, gallery title will be used'] = 'Om lämnad tom kommer galleriets titel att användas';
+$lang['Notification'] = 'Notifikation';
+$lang['Error when sending email to %s [%s].'] = 'Ett fel uppstod när e-post skickades till %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'E-mail skickat till %s [%s].';
+$lang['%d mail was sent.'] = '%d e-mail har skickats.';
+$lang['%d mails were sent.'] = '%d e-mail har skickats.';
+$lang['%d mail was not sent.'] = '%d e-mail skickades inte.';
+$lang['%d mails were not sent.'] = '%d e-mail skickades inte.';
+$lang['No mail to send.'] = 'Inga e-mail att skicka.';
+$lang['There is no available subscribers to mail.'] = 'Det finns inga prenumeranter att skicka notifikationer till.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Prenumeranter kan listas (tillgänglig) enbart om det finns nya element att meddela.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'I vilket fall som helst kan enbart webbansvarig kan se denna flik, inte administratörer.';
+$lang['No user to send notifications by mail.'] = 'Ingen användare att meddela via e-mail.';
+$lang['New photos added'] = 'Nya element tillagda';
+$lang['Subscribe to notification by mail'] = 'Anmäl till notifikation via e-mail';
+$lang['Unsubscribe from notification by mail'] = 'Avanmäl notifikation via e-mail';
+$lang['Parameter'] = 'Inställningar';
+$lang['Operation in progress'] = 'Bearbetnings behandling.';
+$lang['Continue processing treatment'] = 'Fortsätt med pågående behandling';
+$lang['Add detailed content'] = 'Lägg till detaljerad information';
+$lang['Send mail as'] = 'Skicka e-mail som';
+$lang['Send mail to users'] = 'Skicka e-mail till användare';
+$lang['Send'] = 'Skicka';
+$lang['Subscribed'] = 'Anmäld';
+$lang['Subscribe'] = 'Anmäl';
+$lang['Parameters'] = 'Parameter';
+$lang['Select recipients'] = 'Välj mottagare';
+$lang['Subscribe/unsubscribe users'] = 'Anmäl/Avanmäl användare';
+$lang['Unsubscribed'] = 'Avanmäld';
+$lang['%d parameter was updated.'] = '%d parameter uppdaterad.';
+$lang['%d parameters were updated.'] = '%d parametrar uppdaterade.';
+$lang['%d user was not updated.'] = '%d användare uppdaterades inte.';
+$lang['%d users were not updated.'] = '%d användare uppdaterades inte.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Användare %s [%s] borttagen från prenumerations listan.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Användare %s [%s] tillagd till prenumerations listan.';
+$lang['%d user was updated.'] = '%d användare uppdaterad.';
+$lang['%d users were updated.'] = '%d användare uppdaterade.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Användare %s [%s] inte borttagen från prenumerations listan.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Användare %s [%s] inte tillagd till prenumerations listan.';
+$lang['User %s [%s] added.'] = 'Användare %s [%s] tillagd.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Varning: anmälning eller avanmälning kommer att skicka e-mail till användare';
+$lang['Send mail on HTML format'] = 'Skicka e-mail i HTML format';
+$lang['Include display of recent photos grouped by dates'] = 'Inkludera display av tidigare bilder grupperat efter datum';
+$lang['Available only with HTML format'] = 'Endast tillgänglig med HTML format';
+$lang['no write access'] = 'inte tillåtelse att skriva';
+$lang['Permissions'] = 'Behörigheter';
+$lang['private'] = 'privat';
+$lang['public'] = 'allmänt';
+$lang['Purge never used notification feeds'] = 'Utrensning använder aldrig notifikations feeds';
+$lang['Purge sessions'] = 'Sessioner för utrensning';
+$lang['randomly represented'] = 'slumpad representant';
+$lang['registration date'] = 'registrerings datum';
+$lang['clean'] = 'rensa upp';
+$lang['Create this site'] = 'Skapa denna sida';
+$lang['test'] = 'test';
+$lang['test this remote site'] = 'testa fjärrsidan';
+$lang['remove tags'] = 'ta bort taggar';
+$lang['Repair and optimize database'] = 'Reparera och optimisera databas';
+$lang['selection'] = 'markering';
+$lang['set to'] = 'inställd på';
+$lang['singly represented'] = 'fast representant';
+$lang['This site already exists'] = 'Sidan existerar redan';
+$lang['created'] = 'skapad';
+$lang['delete'] = 'ta bort';
+$lang['delete this site and all its attached elements'] = 'ta bort hemsidan och all relaterad information';
+$lang['deleted'] = 'borttagen';
+$lang['an error happened'] = 'ett fel uppstod';
+$lang['Local'] = 'Lokal';
+$lang['Remote'] = 'Fjärrsida';
+$lang['update the database from files'] = 'uppdatera databasen med filer';
+$lang['status'] = 'status';
+$lang['Directory'] = 'Katalog';
+$lang['sub-albums'] = 'underkategorier';
+$lang['Synchronize metadata'] = 'synkronisera metadata';
+$lang['target'] = 'mål';
+$lang['Title'] = 'titel';
+$lang['Album list management'] = 'Hantera kategorier';
+$lang['Piwigo configuration'] = 'Piwigo konfiguration';
+$lang['Edit album'] = 'Redigera album';
+$lang['Group management'] = 'Grupp hantering';
+$lang['User list'] = 'Användarlista';
+$lang['Edit photo information'] = 'Modifiera bildinformation';
+$lang['Database synchronization with files'] = 'Synkronisera databas med filer';
+$lang['all'] = 'alla';
+$lang['height must be a number superior to'] = 'bildens höjd måste vara större än';
+$lang['width must be a number superior to'] = 'bildens bredd måste vara större än';
+$lang['for the file format'] = 'för filformatet';
+$lang['Photo unreachable or no support'] = 'Bilden kunde inte nås eller filformatet stöds inte';
+$lang['GD version'] = 'GD version';
+$lang['General statistics'] = 'Allmän statistik';
+$lang['average time'] = 'snitt tid';
+$lang['number of miniaturized photos'] = 'antal miniatyrer skapade';
+$lang['total time'] = 'total tid';
+$lang['for this file format'] = 'för detta filformat';
+$lang['unit mode'] = 'enkel läge';
+$lang['Unlocked'] = 'Upplåst';
+$lang['unset'] = 'obestämd';
+$lang['Update albums informations'] = 'Uppdatera information för kategori';
+$lang['Update photos information'] = 'Uppdatera information för bilder';
+$lang['Synchronize'] = 'Synkronisera';
+$lang['reduce to single existing albums'] = 'reducera till enstaka existerande kategorier';
+$lang['Choose an option'] = 'Välj ett alternativ';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'visa maximal information (tillagda kategorier och element, borttagna kategorier och element)';
+$lang['Error list'] = 'Fellista';
+$lang['Errors caption'] = 'Felbeskrivningar';
+$lang['Detailed informations'] = 'Detaljerad information';
+$lang['File/directory read error'] = 'Läsfel i fil/katalog';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Filen eller katalogen kan inte nås (antigen existerar den inte eller tillträde nekat)';
+$lang['albums deleted in the database'] = 'kategorier borttagna ur databasen';
+$lang['photos deleted from the database'] = 'element borttagna ur databasen';
+$lang['photos candidates for metadata synchronization'] = 'bild kandidater för metadata synkronisering';
+$lang['photos informations synchronized with files metadata'] = 'element informationer synkroniserade med filernas metadata';
+$lang['errors during synchronization'] = 'fel uppstod under synkronisering';
+$lang['albums added in the database'] = 'kategorier tillagda i databas';
+$lang['photos added in the database'] = 'element tillagda i databasen';
+$lang['photos updated in the database'] = 'element i databasen uppdaterade';
+$lang['Search for new images in the directories'] = 'Sök i katalogerna efter nya bilder';
+$lang['added'] = 'tillagd';
+$lang['Metadata synchronization results'] = 'Resultat för synkronisering av metadata';
+$lang['only perform a simulation (no change in database will be made)'] = 'Utför enbart simulering (inget kommer att ändras i databasen)';
+$lang['Simulation'] = 'Simulering';
+$lang['directories + files'] = 'Kataloger + filer';
+$lang['only directories'] = 'bara kataloger';
+$lang['synchronize files structure with database'] = 'synkronisera filstruktur med databas';
+$lang['synchronize files metadata with database photos informations'] = 'synkronisera databas element med filernas metadata';
+$lang['even already synchronized photos'] = 'även redan synkroniserade element';
+$lang['Used metadata'] = 'Metadata Använd';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Namn på kataloger och filer får enbart innehålla bokstäver, siffror samt följande symboler: "-", "_" eller "."';
+$lang['wrong filename'] = 'ogiltigt filnamn';
+$lang['Upload'] = 'Ladda upp';
+$lang['user "%s" added'] = 'Användare "%s" tillagd';
+$lang['User status'] = 'Användares status';
+$lang['user_status_admin'] = 'Administratör';
+$lang['user_status_generic'] = 'Generisk';
+$lang['user_status_guest'] = 'Gäst';
+$lang['user_status_normal'] = 'Användare';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Virtuell kategori';
+$lang['Waiting'] = 'Väntande';
+$lang['default'] = 'standard';
+$lang['Toggle \'default group\' property'] = 'Omvänd egenskap för \'standard grupp\' ';
+$lang['Advanced features'] = 'Avancerade funktioner';
+$lang['Overall'] = 'Översikt';
+$lang['Year'] = 'År';
+$lang['Month'] = 'Månad';
+$lang['Day'] = 'Dag';
+$lang['Pages seen'] = 'Sidor sedda';
+$lang['Time'] = 'Tid';
+$lang['IP'] = 'IP';
+$lang['Element'] = 'Element';
+$lang['Section'] = 'Sektion';
+$lang['An information email was sent to group "%s"'] = 'E-mail med information skickat till grupp "%s"';
+$lang['Send an information email to group members'] = 'Skicka e-mail med information till medlemmar i grupp';
+$lang['Group'] = 'Grupp';
+$lang['[%s] Visit album %s'] = '[%s] Besök kategori %s';
+$lang['Hello,'] = 'Hej,';
+$lang['See you soon.'] = 'Vi ses.';
+$lang['Discover album:'] = 'Utforska kategori:';
+$lang['Mail content'] = 'E-mail innehåll';
+$lang['none'] = 'inget';
+$lang['high'] = 'hög';
+$lang['other'] = 'annan';
+$lang['Element type'] = 'Typ av element';
+$lang['Image id'] = 'Bild id';
+$lang['Summary'] = 'Sammanfattning';
+$lang['%d line filtered'] = '%d rad filtrerad';
+$lang['%d lines filtered'] = '%d rader filtrerade';
+$lang['%d guest'] = '%d gäst';
+$lang['%d guests'] = '%d gäster';
+$lang['Hour'] = 'Timme';
+$lang['guest'] = 'gäst';
+$lang['default values'] = 'standardvärden';
+$lang['Guest cannot be deleted'] = 'Gäst kan inte tas bort';
+$lang['Default user cannot be deleted'] = 'Standard användare kan inte tas bort';
+$lang['Purge history detail'] = 'Rensa historik detaljer';
+$lang['Purge history summary'] = 'Rensa historik sammanställning';
+$lang['Check integrity'] = 'Integritetskontroll';
+$lang['Anomaly'] = 'Avvikelse';
+$lang['Correction'] = 'Rättning';
+$lang['Automatic correction'] = 'Automatisk rättning';
+$lang['Impossible automatic correction'] = 'Automatisk rättning var inte möjlig';
+$lang['Correction applied with success'] = 'Rättning utfördes med framgång';
+$lang['Correction applied with error'] = 'Rättning utfördes men med fel';
+$lang['%d anomaly has been detected.'] = '%d avvikelse har upptäckts.';
+$lang['%d anomalies have been detected.'] = '%d avvikelser har upptäckts.';
+$lang['%d anomaly has been corrected.'] = '%d avvikelse har rättats.';
+$lang['%d anomalies have been detected corrected.'] = '%d avvikelser har upptäckts och rättats.';
+$lang['%d anomaly has not been corrected.'] = '%d avvikelse kunde inte rättats.';
+$lang['%d anomalies have not been corrected.'] = '%d avvikelser kunde inte rättas.';
+$lang['Go to %s or %s for more informations'] = 'Gå till %s eller %s för mer information';
+$lang['the forum'] = 'forumet';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s värde är inkorrekt eftersom att exif inte stöds';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s måste ställas in som falsk i din lokala config-fil: local/config/config.inc.php';
+$lang['Main "guest" user does not exist'] = 'Huvudanvändare "gäst" är inte korrekt';
+$lang['Main "guest" user status is incorrect'] = 'Huvudanvändare "gäst" är inte korrekt';
+$lang['Default user does not exist'] = 'Standard användare existerar inte';
+$lang['Main "webmaster" user does not exist'] = 'Huvudanvändare "webmaster" existerar inte';
+$lang['Main "webmaster" user status is incorrect'] = 'Huvudanvändare "webmaster" status är inkorrekt';
+$lang['User "%s" created with "%s" like password'] = 'Användare "%s" skapades med "%s" som lösenord';
+$lang['Status of user "%s" updated'] = 'Användare "%s" status uppdaterad';
+$lang['add new photos to caddie'] = 'lägg till nytt element till korg';
+$lang['No display'] = 'Inget att visa';
+$lang['Classic display'] = 'Klassisk visning';
+$lang['Hoverbox display'] = 'Hoverbox visning';
+$lang['Mail address is obligatory for all users'] = 'Mail adress är obligatorisk för alla användare';
+$lang['Minimum privacy level'] = 'Minimum privat nivå';
+$lang['Privacy level'] = 'Privat nivå';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Kontakter';
+$lang['Level 2'] = 'Vänner';
+$lang['Level 4'] = 'Familj';
+$lang['Level 8'] = 'Administratörer';
+$lang['Reinitialize check integrity'] = 'Återinitialisera integritetskontroll';
+$lang['Check all'] = 'Kontrollera alla';
+$lang['Uncheck all'] = 'Avmarkera alla';
+$lang['Check automatic corrections'] = 'Kontrollera automatiska rättningar';
+$lang['Apply selected corrections'] = 'Tillämpa markeradApply selected corrections';
+$lang['Ignore selected anomalies'] = 'Ignorera markerade avvikelser';
+$lang['Refresh'] = 'Uppdatera';
+$lang['The anomaly will be ignored until next application version'] = 'Avvikelsen kommer att ignoreras tills nästa version av applikationen';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Rättad avvikelse kommer inte längre att ignoreras';
+$lang['%d anomaly has been ignored.'] = '%d avvikelse ignorerades.';
+$lang['%d anomalies have been ignored.'] = '%d avvikelser ignorerades.';
+$lang['Plugins which need upgrade'] = 'Insticksmoduler som behöver uppdateras';
+$lang['Plugin list'] = 'Lista över insticksmoduler';
+$lang['Check for updates'] = 'Sök efter uppdateringar';
+$lang['Other plugins'] = 'Andra insticksmoduler tillgängliga';
+$lang['Last revisions'] = 'Senaste ändringar';
+$lang['Are you sure you want to delete this plugin?'] = 'Är du säker på att du vill ta bort denna insticksmodul?';
+$lang['Are you sure you want to install this plugin?'] = 'Är du säker på att du vill installera denna insticksmodul?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Är du säker på att du vill installera uppdateringen? Du måste verifiera nedan att denna version inte behöver yterligare avinstallering.';
+$lang['Plugin has been successfully copied'] = 'Kopiering av denna insticksmodul utfördes med framgång';
+$lang['You might go to plugin list to install and activate it.'] = 'Gå till insticksmodulslistan för att installera och aktivera.';
+$lang['Can\'t create temporary file.'] = 'Tillfällig fil kunde inte skapas.';
+$lang['Can\'t download archive.'] = 'Arkiv kan inte laddas ner.';
+$lang['Can\'t read or extract archive.'] = 'Arkiv kunde inte läsas eller extraheras.';
+$lang['An error occured during extraction (%s).'] = 'Ett fel uppstod när följande filer packades upp: (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Kontrollera insticksmodulmappen och eventuella undermappars behörigheter (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Kunde inte ansluta till servern.';
+$lang['Purge compiled templates'] = 'Rensa sammanställda mallar';
+$lang['ACCESS_0'] = 'Fritt tillträde';
+$lang['ACCESS_1'] = 'Tillgänglighet för alla';
+$lang['ACCESS_2'] = 'Tillgänglighet för registrerade användare';
+$lang['ACCESS_3'] = 'Tillgänglighet för administratörer';
+$lang['ACCESS_4'] = 'Tillgänglighet för webmasters';
+$lang['ACCESS_5'] = 'Ingen tillgänglighet';
+$lang['Support'] = 'Hjälp';
+$lang['Documentation'] = 'Dokumentation';
+$lang['A new version of Piwigo is available.'] = 'En ny version av Piwigo finns nu tillgänglig.';
+$lang['Piwigo Administration'] = 'Piwigo Administration';
+$lang['Piwigo version'] = 'Piwigo version';
+$lang['You are running the latest version of Piwigo.'] = 'Du använder senaste versionen av Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Versionen av %s [%s] installerad är inte kompatibel med versionen som krävs [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'För att utnyttja alla fördelar av programmet, uppdatera ditt system, annars kan det resultera i att programmet inte fungerar korrekt eller inte alls';
+$lang['Deleted on'] = 'Borttagen den';
+$lang['Last hit'] = 'Senaste träff';
+$lang['GD library is missing'] = 'GD bibliotek saknas';
+$lang['Templates'] = 'Mallar';
+$lang['Extend for templates'] = 'Utöka mallar';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Ersättning av originalmallar med specialanpassade mallar från  undermappen mall-tillägg (template-extension)';
+$lang['Replacers (customized templates)'] = 'Ersättningar (anpassade mallar)';
+$lang['Original templates'] = 'Standardmallar';
+$lang['Optional URL keyword'] = 'Standard URL nyckelord';
+$lang['Templates configuration has been recorded.'] = 'Inställning av mallar har registrerats.';
+$lang['All optimizations have been successfully completed.'] = 'Alla optimeringar har slutförts.';
+$lang['Optimizations have been completed with some errors.'] = 'Optimeringar har slutförts, men fel uppstod.';
+$lang['Modify information'] = 'Modifiera information';
+$lang['nothing'] = 'inget';
+$lang['overrides existing values with empty ones'] = 'skriver över existerande värden med tomma värden';
+$lang['Manage photo ranks'] = 'Hantera bild betygsättning';
+$lang['Edit ranks'] = 'Ändra betygsättning';
+$lang['No photo in this album'] = 'Inga element i denna kategori';
+$lang['Images manual order was saved'] = 'Manuell bild ordning sparad';
+$lang['ranks'] = 'betyg';
+$lang['By rank'] = 'Efter betyg';
+$lang['Manual order'] = 'Manuell order';
+$lang['Drag to re-order'] = 'Klicka-och-dra för att ändra ordning';
+$lang['Quick Local Synchronization'] = 'Snabb Lokal Synkronisering';
+$lang['No photo can be deleted'] = 'Inga foton kan tas bort';
+$lang['Delete selected photos'] = 'Ta bort markerade foton';
+$lang['%d photo was deleted'] = '%d foto borttaget';
+$lang['%d photos were deleted'] = '%d foton borttagna';
+$lang['Downloads'] = 'Nerladdningar';
+$lang['Released on'] = 'Släppt den';
+$lang['Number of downloads'] = 'Antal nerladdningar';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Nyhetsbrev';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Håll dig uppdaterad om Piwigo projektet, prenumerera på Piwigos nyhetsbrev. Ett e-mail kommer att skickas till dig så fort en ny uppdatering är tillgänglig (innehållande säkerhetsuppdateringar, felkorrigerringar och saker som är viktiga för säkerheten av ditt galleri) och vid viktiga händelser. Enbart några få e-mail varje år.';
+$lang['Subscribe %s'] = 'Anmäl %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Anmäl dig %s till Piwigo Nyhetsbrev';
+$lang['Purge search history'] = 'Rensa sökhistorik';
+$lang['Hide'] = 'Göm';
+$lang['Password is missing. Please enter the password.'] = 'Lösenord saknas. Ange lösenord.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Bekräftelse av lösenord saknas. Vänligen bekräfta ditt valda lösenord.';
+$lang['Allow users to edit their own comments'] = 'Tillåt användare att ändra egna kommentarer';
+$lang['Allow users to delete their own comments'] = 'Tillåt användare att ta bort egna kommentarer';
+$lang['Email administrators when a comment is modified'] = 'Notifiera administratör när en kommentar läggs till';
+$lang['Email administrators when a comment is deleted'] = 'Notifiera administratör när kommentar tas bort';
+$lang['Cannot delete the old permalink !'] = 'Kan inte ta bort gammal permalänk!';
+$lang['Hit'] = 'Träff';
+$lang['Tools'] = 'Verktyg';
+$lang['Photos'] = 'Foton';
+$lang['Themes'] = 'Teman';
+$lang['Instructions to use Piwigo'] = 'Instruktioner för användning av Piwigo';
+$lang['Installed Themes'] = 'Installerade Teman';
+$lang['Add New Theme'] = 'Lägg till nytt tema';
+$lang['Forbid this theme to users'] = 'Förbjud detta tema för användare';
+$lang['Set as default theme for unregistered and new users'] = 'Ange som standard tema för oregistrerade och nya användare';
+$lang['unknown'] = 'okänd';
+$lang['Upload Photos'] = 'Ladda upp foton';
+$lang['Drop into album'] = 'Släpp in i kategori';
+$lang['+ Add an upload box'] = '+ Lägg till en uppladdningsruta';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Skapa meppen "%s" i rotkatalogen för din Piwigo installation';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Ge tillåtelse att skriva (chmod 777) i mappen "%s" i rotkatalogen för din Piwigo installation';
+$lang['existing album'] = 'existerande kategori';
+$lang['create a new album'] = 'skapa ny kategori';
+$lang['Album name'] = 'Namn på kategori';
+$lang['Album "%s" has been added'] = 'Kategori "%s" har lagts till';
+$lang['Uploaded Photos'] = 'Uppladdade Foton';
+$lang['%d photos uploaded'] = '%d foton uppladdade';
+$lang['Privacy level set to "%s"'] = 'Sekretessnivå inställd på "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Kategori "%s" innehåller nu %d foton';
+$lang['Manage this set of %d photos'] = 'Hantera settet om %d foton';
+$lang['Select files'] = 'Markerade filer';
+$lang['Everybody'] = 'Alla';
+$lang['Who can see these photos?'] = 'Vem kan se dessa foton?';
+$lang['Who can see this photo?'] = 'Vem kan se detta foto?';
+$lang['Settings'] = 'Inställningar';
+$lang['Resize'] = 'Ändra storlek';
+$lang['Maximum width'] = 'Maximal Bredd';
+$lang['pixels'] = 'pixlar';
+$lang['Maximum height'] = 'Maximal höjd';
+$lang['Image Quality'] = 'Bild kvalitet';
+$lang['Thumbnail'] = 'Miniatyrbild';
+$lang['Save Settings'] = 'Spara inställningar';
+$lang['Your configuration settings are saved'] = 'Dina inställningar är nu sparade';
+$lang['Active Themes'] = 'Aktiva teman';
+$lang['Add write access to the "%s" directory'] = 'Lägg till skrivrättigheter till "%s" katalogen';
+$lang['Administration Home'] = 'Administration Hem';
+$lang['Change Admin Colors'] = 'Ändra administrations färger';
+$lang['Delete this theme'] = 'Ta bort temat';
+$lang['Directory does not exist'] = 'Katalog existerar inte';
+$lang['Download,'] = 'Ladda ner,';
+$lang['FTP + Synchronization'] = 'FTP + Synkronisering';
+$lang['Get Support on Piwigo Forum'] = 'Support hittar du på Piwigo forum';
+$lang['Help Me'] = 'Hjälp mig';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Temat kunde inte aktiveras, följande tema verkar inte existera: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Temat kunde inte tas bort, andra teman är beroende av det: %s';
+$lang['Inactive Themes'] = 'Inaktivera teman';
+$lang['Install on your computer,'] = 'Installera på din dator,';
+$lang['Make this theme available to users'] = 'Gör temat tillgängligt för användare';
+$lang['Page end'] = 'Slut av sidan';
+$lang['Piwigo Uploader'] = 'Piwigo Uppladdare';
+$lang['Operation in progress'] = 'Behandling av bearbetning.';
+$lang['Please wait...'] = 'Vänligen vänta...';
+$lang['Read Piwigo Documentation'] = 'Läs Piwigo Dokumentation';
+$lang['Start pLoader and add your photos.'] = 'Starta pLoader och lägg till dina bilder.';
+$lang['Switch to clear or dark colors for administration'] = 'Byt till klara eller mörka färger för administration';
+$lang['Theme has been successfully installed'] = 'Temat har installerats';
+$lang['Visit Gallery'] = 'Besök galleriet';
+$lang['Visit Piwigo project website'] = 'Besök Piwigo projekts hemsida';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står för <em>Piwigo Uploader</em>. pLoader förbereder bilder från din dator och laddar upp dom i ditt Piwigo galleri.';
+$lang['Guest Settings'] = 'Gästinställningar';
+$lang['Main Page'] = 'Huvudsida';
+$lang['Photo Page'] = 'Fotosida';
+$lang['Activate Navigation Bar'] = 'Aktivera navigeringsfältet';
+$lang['Activate Navigation Thumbnails'] = 'Aktivera navigations miniatyrer';
+$lang['Activate icon "%s"'] = 'Aktivera ikon "%s"';
+$lang['Photo Properties'] = 'Fotoinställningar';
+$lang['Allow user customization'] = 'Tillåt användaranpassning';
+$lang['Languages'] = 'Språk';
+$lang['Installed Languages'] = 'Installerade Språk';
+$lang['Add New Language'] = 'Lägg till nytt språk';
+$lang['Language has been successfully installed'] = 'Språket har installerats';
+$lang['Select:'] = 'Markera:';
+$lang['None'] = 'Inget';
+$lang['Invert'] = 'Invertera';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Det går inte att inaktivera detta tema, minst ett tema måste vara aktiverat.';
+$lang['Webmaster status is required.'] = 'Webmaster status krävs.';
+$lang['Bound Theme'] = 'Bundet tema';
+$lang['Allow rating'] = "Tillåt röstning";
+$lang['Select at least one comment'] = 'Markera minst en kommentar';
+$lang['Active Plugins'] = 'Aktivera insticksmoduler';
+$lang['Inactive Plugins'] = 'Inaktivera insticksmoduler';
+$lang['Missing Plugins'] = 'Insticksmodul som saknas';
+$lang['Uninstalled Plugins'] = 'Avinstallerade insticksmoduler';
+$lang['By %s'] = 'Av %s';
+$lang['Visit plugin site'] = 'Besök hemsida för insticksmodul';
+$lang['Active Languages'] = 'Aktiva språk';
+$lang['Delete this language'] = 'Ta bort det här språket';
+$lang['Forbid this language to users'] = 'Förbjud språket för användare';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Det är inte möjligt att inaktivera detta språk, först ange ett annat språk som standard.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Det är inte möjligt att inaktivera detta språk, du måste ha minst ett språk.';
+$lang['Inactive Languages'] = 'Inaktivera språk';
+$lang['Make this language available to users'] = 'Gör detta språk tillgängligt för användare';
+$lang['Set as default language for unregistered and new users'] = 'Ange som standard språk för oregistrerade och nya användare';
+$lang['Add Photos'] = 'Lägg till foton';
+$lang['The following tag was deleted'] = 'Följande tagg blev borttagen';
+$lang['Miscellaneous'] = 'Diverse';
+$lang['Virtual Links'] = 'Virtuella Länkar';
+$lang['There is no other language available.'] = 'Det finns inget annat språk tillgängligt.';
+$lang['There is no other plugin available.'] = 'Det finns ingen annan insticksmodul tillgänglig.';
+$lang['There is no other theme available.'] = 'Det finns inget annat tema tillgängligt.';
+$lang['Add another set of photos'] = 'Lägg till en ny uppsättning foton';
+$lang['Order of menubar items has been updated successfully.'] = 'Ordningen för objekt i menyraden har blivit uppdaterad.';
+$lang['This theme was not designed to be directly activated'] = 'Detta tema är inte anpassat för att bli direkt aktiverat';
+$lang['Pending Comments'] = 'Väntande kommentarer';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini fil, upload_max_filesize (%sB) är större än post_max_size (%sB), du rekomenderas att ändra detta';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension är inte tillgänglig, admin borde avaktivera användandet av exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den uppladdade filen överskrider upload_max_filesize direktionerna i php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den uppladdade filen överskrider post_max_size direktionerna i php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den uppladdade filen överskrider MAX_FILE_SIZE direktiv som var specifierat i HTML form';
+$lang['The uploaded file was only partially uploaded'] = 'Den uppladdade filen blev bara delvis uppladdad';
+$lang['No file was uploaded'] = 'Ingen fil laddades upp';
+$lang['Missing a temporary folder'] = 'Saknar en temporär mapp';
+$lang['Failed to write file to disk'] = 'Kunde inte skriva filen till disk';
+$lang['File upload stopped by extension'] = 'Uppladdning av filen stoppades av ett tillägg';
+$lang['Unknown upload error'] = 'Okänt fel uppstod under uppladdning';
+$lang['Error on file "%s" : %s'] = 'Fel på fil "%s" : %s';
+$lang['Menu Management'] = 'Hantera menyer';
+$lang['automatic order'] = 'automatisk beställning';
+$lang['manual order'] = 'manuell beställning';
+$lang['Albums automatically sorted'] = 'Album sorteras automatiskt';
+$lang['Batch Manager'] = 'Batchhanteraren';
+$lang['include child albums'] = 'innefattar under album';
+$lang['Selection'] = 'Urval';
+$lang['Action'] = 'Åtgärd';
+$lang['Set author'] = 'Ange författare';
+$lang['Set title'] = 'Sätt rubriken';
+$lang['Set creation date'] = 'Sätt datum för skapande';
+$lang['Apply action'] = 'Utför åtgärder';
+$lang['on the %d selected photos'] = 'på %d valda bilder';
+$lang['%d of %d photos selected'] = '%d av %d markerade bilder';
+$lang['No photo selected, %d photos in current set'] = 'Inga bilder markerat, %d bilder i aktuella uppsättningen';
+$lang['All %d photos are selected'] = 'Alla %d bilder väljs';
+$lang['remove this filter'] = 'Ta bort det här filtret';
+$lang['Duplicates'] = 'Dubbletter';
+$lang['Add a filter'] = 'Lägg till ett filter';
+$lang['Remove all filters'] = 'Ta bort alla filter';
+$lang['Refresh photo set'] = 'Uppdatera bilder';
+$lang['The whole page'] = 'Hela sidan';
+$lang['The whole set'] = 'Hela markeringen';
+$lang['No photo in the current set.'] = 'inga bilder i den aktuella markeringen..';
+$lang['No photo selected, no action possible.'] = 'Inga foton är valda, inga åtgärder är möjlig.';
+$lang['Choose an action'] = 'Välj en åtgärd';
+$lang['remove author'] = 'ta bort författaren';
+$lang['Type here the author name'] = 'Skriv författarens namn här';
+$lang['remove title'] = 'Ta bort rubriken';
+$lang['Type here the title'] = 'Skriv rubriken här';
+$lang['remove creation date'] = 'Ta bort skapande datum ';
+$lang['Album photos associated to the following albums: %s'] = 'Album bilder associerade till följande album: %s';
+$lang['Delete orphan tags'] = 'Ta bort anonyma taggar';
+$lang['delete photo'] = 'Ta bort bild';
+$lang['Orphan tags deleted'] = 'Anonyma taggar är readerade';
+$lang['Week starts on'] = 'Veckan börjar på';
+$lang['You have %d orphan tags: %s.'] = 'Du har %d anonyma taggar: %s.';
+$lang['Remove from caddie'] = 'Ta bort från korg';
+$lang['Themes which need upgrade'] = 'Teman som behöver uppgraderas';
+$lang['Languages which need upgrade'] = 'Språk som behöver uppgradera';
+$lang['All themes are up to date.'] = 'Alla teman är uppdaterade.';
+$lang['All plugins are up to date.'] = 'Alla insticksmoduler are up to date.';
+$lang['All languages are up to date.'] = 'Alla språk är aktuella.';
+$lang['Visit theme site'] = 'Besök temats webbplats';
+$lang['Visit language site'] = 'Besök språkets webbplats';
+$lang['New Version'] = 'Ny version';
+$lang['Obsolete Plugins'] = 'Föråldrade insticksmoduler';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'VARNING! Denna insticksmodul verkar inte vara kompatibel med denna version av Piwigo.';
+$lang['Do you want to activate anyway?'] = 'Vill du aktivera ändå?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'Dennna insticksmodul är nu del av PIWIGO CORE! Avinstallera det NU!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEL: Denna insticksmodul saknas men installerad! Avinstallera den nu!';
+$lang['display'] = 'Visa';
+$lang['Thumbnails generation in progress...'] = 'generering av miniatyr bilder pågår ......';
+$lang['Photos generation in progress...'] = 'Bild generering pågår..';
+$lang['%s photos have been regenerated'] = '%s foton har skapats';
+$lang['%s photos can not be regenerated'] = '%s foton har inte skapats';
+$lang['new'] = 'ny';
+$lang['No results'] = 'Inga poster hittades';
+$lang['Searching...'] = 'Söker...';
+$lang['Type in a search term'] = 'Ange nytt sökord';
+$lang['Activate icon "new" next to albums and pictures'] = 'Aktivera ikonen "ny" intill album och bilder';
+$lang['Deactivate all'] = 'Avaktivera allt';
+$lang['Default photos order'] = 'Standardordning för bilder';
+$lang['Restore'] = 'Återställ';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Återställ standardkonfiguration. Du kommer att förlora inställingarna för dina insticksmoduler!';
+$lang['Show menubar'] = 'Visa verktygsfält';
+$lang['Updates'] = 'Uppdateringar';
+$lang['Update in progress... Please wait.'] = 'Uppdatering körs... Var vänlig vänta.';
+$lang['Ignore this update'] = 'Ignorera denna uppdatering';
+$lang['Reset ignored updates'] = 'Nollställ ignorerade uppdateringar';
+$lang['Update All'] = 'Uppdatera allt';
+$lang['ERROR'] = 'FEL';
+$lang['Update Complete'] = 'Uppdatering avslutad';
+$lang['Piwigo Update'] = 'Piwigo Uppdatering';
+$lang['Extensions Update'] = 'Uppdatering av tillägg';
+$lang['Rate'] = 'Betygsätt';
+$lang['Average rate'] = 'Genomsnittligt betyg';
+$lang['Learn more'] = 'Läs mer';
+$lang['Some upgrades are available for extensions.'] = 'Det finns uppdateringar till några insticksmoduler.';
+$lang['Ignore All'] = 'Ignorera alla';
+$lang['Crop'] = 'Klipp';
+$lang['Width'] = 'Bredd';
+$lang['Height'] = 'Höjd';
+$lang['Follow Orientation'] = 'Följ bildformat';
+$lang['Graphics Library'] = 'Grafikbibliotek';
+$lang['... or '] = '... eller ';
+$lang['Create'] = 'Skapa';
+$lang['Start Upload'] = 'Börja uppladdning';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Du använder Flash-uppladaren. Har du problem, försök med <a href="%s">webbläsaruppladdaren</a> istället.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Du använder webbläsaruppladdaren, prova gärna <a href="%s">Flash-uppladdaren</a> istället.';
+$lang['Maximum file size: %sB.'] = 'Maximal filstorlek: %sB.';
+$lang['Allowed file types: %s.'] = 'Tillåtna filtyper: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ungefärlig maximal upplösning: %dM pixlar (motsvarande %dx%d pixlar).';
+$lang['Manage Permissions'] = 'Hantera rättigheter';
+$lang['Photo %s of %s'] = 'Bild %s av %s';
+$lang['show details'] = 'visa detaljer';
+$lang['hide details'] = 'dölj detaljer';
+$lang['Merge tags'] = 'Sammanfoga taggar';
+$lang['Select the destination tag'] = 'Välj mål-tagg';
+$lang['(this tag will be deleted)'] = '(den här taggen kommer raderas)';
+$lang['Confirm merge'] = 'Bekräfta sammanfogning';
+$lang['Merge selected tags'] = 'Sammanfoga valda taggar';
+$lang['No destination tag selected'] = 'Ingen mål-tagg har valts';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Taggar <em>%s</em> sammanfogade som <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Välj minst två taggar för sammanfogning';
+$lang['Select an album'] = 'Välj ett album';
+$lang['Add a criteria'] = 'Lägg till ett kriterium';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan inte ange en standardsortering för foton på grund av en vald inställning i din lokala konfiguration.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Du har specifierat <i>$conf[\'order_by\']</i> i din lokala konfigurationsfil, den här parametern är ersatt. Ta bort den eller döpom till <i>$conf[\'order_by_custom\']</i> !';
+$lang['All extensions are up to date.'] = 'Alla insticksmoduler är de senaste.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Följande insticksmoduler kan vara inkompatibla med senaste Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Följande teman kan vara inkompatibla med senaste Piwigo:';
+$lang['I decide to update anyway'] = 'Jag uppdaterar ändå';
+$lang['Update to Piwigo %s'] = 'Uppdatera till Piwigo %s';
+$lang['Two updates are available'] = 'Två uppdateringar är tillgängliga';
+$lang['This is a minor update, with only bug corrections.'] = 'Det här är en mindre uppdatering med bug-fixar.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Det här är en stor uppdatering med <a href="%s">nya spännande funktioner</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Några teman och insticksmoduler kan vara otillgängliga ännu.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan uppdatera till to Piwigo %s direkt, utan att uppgradera till Piwigo %s (rekommenderat).';
+$lang['Save Template Directory'] = 'Spara mallkatalogen';
+$lang['Dump Database'] = 'Dumpa databasen';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkludera historiska data (Varning: serverns minnesgräns kan överskridas)';
+$lang['Unable to dump database.'] = 'Kan inte dumpa databasen.';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard kommer Piwigo skapa en ny webbstorlek från HD (high definition) versionen av din bild.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Om ingen HD-bild är tillgänglig och den nuvarande webbstorleken är större än skalningsdimensionerna så kommer Piwigo flytta bilden till HD och skapa en nedskalad version av den.';
+$lang['An error has occured during upgrade.'] = 'Det uppstod ett fel under uppgraderingen.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Ett fel uppstod vid dekomprimeringen. Kontrollera rättigheterna på din Piwigo-installation och försök igen.<br><a href="%s">Klicka här för att visa felloggen</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan inte hämta uppgraderingen från servern';
+$lang['Zoom'] = 'förstora';
+$lang['Add to caddie'] = 'lägg i korgen';
+$lang['%s has been successfully updated.'] = '%s har uppdaterats.';
+$lang['Add tags'] = 'Lägg till taggar';
+$lang['Last import'] = 'Senaste import';
+$lang['Predefined filter'] = 'Fördefinierat filter';
+$lang['With no album'] = 'Utan album';
+$lang['With no tag'] = 'Utan tag';
+$lang['With no virtual album'] = 'Utan virtuellt album';
+$lang['Activate comments'] = 'Aktivera komentarer';
+$lang['Default comments order'] = 'Standardordning för kommentarer';
+$lang['Photo name'] = 'Fotonamn';
+$lang['Send connection settings by email'] = 'Skicka anslutningsinställningar med e-post';
+$lang['The original image quality must be a number between %d and %d'] = 'Originalets bildkvalitet måste vara ett nummer mellan %d %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Originalets maxhöjd måste vara ett nummer mellan %d och %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Originalets maxbredd måste vara ett nummer mellan %d och %d';
+$lang['Resize after upload'] = 'Skala om efter upppladdning';
+$lang['Original Size'] = 'Originalstorlek';
+$lang['A locked gallery is only visible to administrators'] = 'Ett låst galleri är bara synligt för administratörer';
+$lang['Unlock gallery'] = 'Lås upp galleri';
+$lang['Gallery unlocked'] = 'Galleri upplåst';
+$lang['Notify administrators when a comment is'] = 'Meddela administratörer när en kommentar är';
+$lang['modified'] = 'redigerad';
+$lang['pending validation'] = 'väntar på validering';
+$lang['Save visits in history for'] = 'Sparar besök i historik för';
+$lang['simple visitors'] = 'enkla användare';
+$lang['registered users'] = 'registrerade användare';
+$lang['administrators'] = 'administratörer';
+$lang['This album contains %d photos, added on %s.'] = 'Det här albumet innehåller %d foton, tillagda på %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Det här albumet innehåller %d foton, tillagda mellan %s och %s.';
+$lang['This album contains no photo.'] = 'Det här albumet innehåller inga foton.';
+$lang['Not cropped correctly?'] = 'Ej beskuren korrekt?';
+$lang['Center of interest'] = 'Intressefokus';
+$lang['Move to album'] = 'Flytta till album';
+$lang['You can activate only one mobile theme.'] = 'Du kan enbart aktivera ett mobilt tema.';
+$lang['Automatic sort order'] = 'Automatisk sorteringsordning';
+$lang['apply automatic sort order'] = 'tillämpa automatisk sorteringsordning';
+$lang['Save manual order'] = 'Spara manuell sorteringsordning';
+$lang['cancel manual order'] = 'avbryt manuell sorteringsordning';
+$lang['Cancel'] = 'Avbryt';
+$lang['List'] = 'Lista';
+$lang['Web Form'] = 'Webbformulär';
+$lang['Applications'] = 'Applikationer';
+$lang['Available versions for'] = 'Tillgängliga versioner för';
+$lang['Available on'] = 'Tillgängliga på';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo för iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo för iOS</em> applikationer tillåter dig ansluta till ditt Piwigo galleri från din iPhone, iPad eller iPod Touch, skapa några album och ladda upp flera bilder på en gång.';
+$lang['Piwigo for Android'] = 'Piwigo för Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo för Android</em> applikationer tillåter dig ansluta till ditt Piwigo galleri från din Android telefon eller tablet, skapa några album och ladda upp flera bilder på en gång.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish insticksmodul för Lightroom';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom är en fotoredigeringsmjukvara designad för att hantera stora mängder bilder och göra efterredigering.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Insticksmodulen för Piwigo publicering möjliggör export och synkronisering av bilder mellan Lightroom och ditt bildgalleri.';
+$lang['Piwigo publish plugin for Shotwell'] = 'Insticksmodul för Piwigo publicering via Shotwell';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell är en Open Source digital fotohanterare för Linux som används som standard av Ubuntu och Fedora.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I din Linux distribution, installera Shotwell via pakethanteraren och aktivera valmöjligheten Piwigo publicering.';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicering via digiKam'; 
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam är ett avancerat program för digital mediahantering, framför allt bilder, för Linux, Windows och MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam är designat för fotografer som vill se, hantera, förbättra, organisera, märka och distribuera bilder.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'För att exportera bilder från digiKam till Piwigo, installera digiKam och Kipi-insticksmodul för export till Piwigo.';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo insticksmodul för iPhoto export';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto är standard för MacOSX. Piwigo export insticksmodul låter dig skapa album och exportera dina bilder från iPhoto till ditt Piwigo galleri.';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo insticksmodul för Aperture export';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture är ett kraftfullt verktyg för bildhantering för Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture är designat för proffs med iPhotos enkelhet.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export modulen låter dig skapa och exportera bilder.';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) är en open source (GPL v3) Piwigo klient för the Android.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Bland annat ingår galleri-utforskning, skapande av nya album och uppladdning av bilder.';
+$lang['Generate multiple size images'] = 'Skapa flera storlekar av bilder';
+$lang['Delete multiple size images'] = 'Ta bort flera storlekar av bilder';
+$lang['any visitor can see this album'] = 'alla besökare kan se detta album';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besökare måste lpgga in med korrekta rättigheter för att se detta album';
+$lang['Groups and users'] = 'Grupper och användare';
+$lang['Permission granted for groups'] = 'Tillstånd för följande grupper';
+$lang['Select groups...'] = 'Välj grupper...';
+$lang['There is no group in this gallery.'] = 'Det finns inga grupper i det här galleriet.';
+$lang['Permission granted for users'] = 'Tillstånd utfärdat för valda användare';
+$lang['Select users...'] = 'Välj användare...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u användare har automatiskt tillstånd eftersom de tillhör en grupp med rättigheter utfärdade.';
+$lang[' and %d virtuals'] = ' och %d virtuell';
+$lang['%d physicals'] = ' %d fysisk';
+$lang['include photos with lower privacy level'] = 'inkludera bilder med lägre sekretessnivå';
+$lang['custom'] = 'Anpassad';
+$lang['No group is permitted to see this private album'] = 'Ingen grupp tillåts se detta privata album';
+$lang['Permission management'] = 'Behörighetshantering';
+$lang['Photo sizes with crop'] = 'Bildstorlekar med beskärning';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Bildens mittpunkt är den mest meningsfulla delen (intressefokus).';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'För beskärda bilder, såsom "Fyrkant", kommer Piwigo försöka inkludera bildens intressefokus.';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard antas intressefokus vara i mitten på bilden.';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Välj en zon med musen för att definiera ett nytt intressefokus.';
+$lang['X Position'] = 'X Position';
+$lang['Y Position'] = 'Y Position';
+$lang['X Repeat'] = 'X Repetition';
+$lang['Opacity'] = 'Ogenomskinlighet';
+$lang['top left corner'] = 'övre vänstra hörn';
+$lang['top right corner'] = 'övre högra hörn';
+$lang['middle'] = 'mitt';
+$lang['bottom left corner'] = 'nedre vänstra hörn';
+$lang['bottom right corner'] = 'nedre högra hörn';
+$lang['Select a file'] = 'Välj en fil';
+$lang['add a new watermark'] = 'lägg till vattenstämpel';
+$lang['Apply watermark if width is bigger than'] = 'Lägg till vattenstämpel om bredden är större än';
+$lang['Apply watermark if height is bigger than'] = 'Lägg till vattenstämpel om höjden är större än';
+$lang['Multiple Size'] = 'Multiplicera storlek';
+$lang['Watermark'] = 'Vattenstämpel';
+$lang['Original file : %s'] = 'Originalfil : %s';
+$lang['Posted %s on %s'] = 'Upladdad %s on %s';
+$lang['Added by %s'] = 'Tillagd av %s';
+$lang['Visited %d times'] = 'Besökt %d gånger';
+$lang['Numeric identifier : %d'] = 'Numeriskt id : %d';
+$lang['%s ago'] = '%s sedan';
+$lang['%s in the future'] = '%s i framtiden';
+$lang['Rated %d times, score : %.2f'] = 'Betygsatt %d gånger, betyg : %.2f';
+$lang['%d year'] = '%d år';
+$lang['%d years'] = '%d år';
+$lang['%d month'] = '%d månad';
+$lang['%d months'] = '%d månader';
+$lang['%d week'] = '%d vecka';
+$lang['%d weeks'] = '%d veckor';
+$lang['%d day'] = '%d dag';
+$lang['%d days'] = '%d dagar';
+$lang['%d hour'] = '%d timme';
+$lang['%d hours'] = '%d timmar';
+$lang['%d minute'] = '%d minut';
+$lang['%d minutes'] = '%d minuter';
+$lang['%d second'] = '%d sekund';
+$lang['%d seconds'] = '%d sekunder';
+$lang['Sharpen'] = 'Skärpa';
+$lang['Edit photo'] = 'Redigera bild';
+
+$lang['create a new site'] = 'skapa en ny site';
+$lang['No order field selected'] = 'Inget ordningsfält valt';
+$lang['Manage the members'] = 'Hantera medlemmar';
+$lang['Manage photos'] = 'Hantera bilder';
+$lang['Landscape'] = 'Liggande';
+$lang['Duplicate selected tags'] = 'Duplicera markerade taggar';
+$lang['Duplicate'] = 'Duplicera';
+$lang['This group will be set to default'] = 'Denna grupp kommer att användas som standard';
+$lang['View in gallery'] = 'Visa i galleriet';
+$lang['Type here the name of the new group'] = 'Skriv här namnet på den nya gruppen';
+$lang['This group will be unset to default'] = 'Denna grupp kommer inte längre att användas som standard';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagg "%s" är nu en kopia av "%s"';
+$lang['Source tag'] = 'Källtagg';
+$lang['between %d and %d pixels'] = 'mellan %d och %d pixlar';
+$lang['between %.2f and %.2f'] = 'mellan %.2f och %.2f';
+$lang['Portrait'] = 'Stående';
+$lang['Ratio'] = 'Förhållande';
+$lang['Rename'] = 'Byt namn';
+$lang['Please select at least two groups'] = 'Vänligen välj minst två grupper';
+$lang['Panorama'] = 'Panorama';
+$lang['Number of albums per page'] = 'Antal album per sida';
+$lang['No members to manage'] = 'Inga medlemmar att hantera';
+$lang['No group selected, no action possible.'] = 'Ingen grupp vald, ingen åtgärd möjlig';
+$lang['Name of the duplicate'] = 'Namn på kopia';
+$lang['Minimum width'] = 'Minsta bredd';
+$lang['Minimum height'] = 'Minsta höjd';
+$lang['Merge selected groups'] = 'Sammanfoga markerade grupper';
+$lang['Purge user cache'] = 'Rensa användarecache';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Skalning efter uppladdning är inaktiverat eftersom GD används som grafikbibliotek.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Bildens dimension kommer att reduceras till %dx%d pixlar.';
+$lang['Select at least one tag'] = 'Välj minst en etikett';
+?>
Index: /tags/2.6.0RC1/language/sv_SE/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/common.lang.php	(revision 25596)
@@ -0,0 +1,424 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Svenska [SE]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=451
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Swedish';
+$lang_info['country'] = 'Sverige';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'se';
+$lang_info['zero_plural'] = true;
+
+$lang['useful when password forgotten'] = 'är användbart om du glömt lösenordet';
+$lang['Quick search'] = 'Snabbsökning';
+$lang['Connected user: %s'] = 'Anslutna användare: %s';
+$lang['IP: %s'] = 'IP: %s';
+$lang['Browser: %s'] = 'Webbläsare: %s';
+$lang['Author: %s'] = 'Fotograf: %s';
+$lang['Comment: %s'] = 'Kommentar: %s';
+$lang['Comment by %s'] = 'Kommentar av %s';
+$lang['User: %s'] = 'Användare: %s';
+$lang['Email: %s'] = 'E-post: %s';
+$lang['Admin: %s'] = 'Admin: %s';
+$lang['Registration of %s'] = 'Registrering av %s';
+$lang['Album: %s'] = 'Album: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Användarstatus för \"gäst\" är ogiltig, standard status kommer användas. Vänligen informera webbansvarig.';
+$lang['this email address is already in use'] = 'en annan användare använder redan denna e-post';
+$lang['Album results for'] = 'Albumresultat för';
+$lang['Tag results for'] = 'Tagg-resultat för';
+$lang['from %s to %s'] = 'från %s till %s';
+$lang['Play of slideshow'] = 'Starta bildspel';
+$lang['Pause of slideshow'] = 'Pausa bildspel';
+$lang['Repeat the slideshow'] = 'Repetera bildspel';
+$lang['Not repeat the slideshow'] = 'Repetera inte bildspel';
+$lang['Reduce diaporama speed'] = 'Minska bildspelets hastighet';
+$lang['Accelerate diaporama speed'] = 'Öka bildspelets hastighet';
+$lang['Submit'] = 'Skicka';
+$lang['Yes'] = 'Ja';
+$lang['No'] = 'Nej';
+$lang['%d photo'] = '%d bild';
+$lang['%d photos'] = '%d bilder';
+$lang['%d photo is also linked to current tags'] = '%d bilden är även kopplad till aktuella taggar';
+$lang['%d photos are also linked to current tags'] = '%d bilderna är även kopplade till aktuella taggar';
+$lang['display photos linked to this tag'] = 'visa enbart bilder länkade till denna tagg';
+$lang['photos posted during the last %d days'] = 'bilder postade de senaste %d dagarna';
+$lang['Piwigo Help'] = 'Piwigo Hjälp';
+$lang['Rank'] = 'Rang';
+$lang['group by letters'] = 'gruppera i bokstavsordning';
+$lang['letters'] = 'bokstäver';
+$lang['show tag cloud'] = 'Visa tagg-moln';
+$lang['cloud'] = 'moln';
+$lang['Reset to default values'] = 'Återställ till standardvärden';
+$lang['delete all photos from your favorites'] = 'radera alla bilder från dina favoriter';
+$lang['Sent by'] = 'Skickat av';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies är blockerade eller stöds inte av din webbläsare. Du måste aktivera cookies för att ansluta.';
+$lang['%d new comment'] = '%d ny kommentar';
+$lang['%d new comments'] = '%d nya kommentarer';
+$lang['%d comment'] = '%d kommentar';
+$lang['%d comments'] = '%d kommentarer';
+$lang['%d hit'] = '%d träff';
+$lang['%d hits'] = '%d träffar';
+$lang['%d new photo'] = '%d ny bild';
+$lang['%d new photos'] = '%d nya bilder';
+$lang['%d new user'] = '%d ny användare';
+$lang['%d new users'] = '%d nya användare';
+$lang['About'] = 'Om';
+$lang['All tags'] = 'Alla taggar';
+$lang['Any tag'] = 'Någon tagg';
+$lang['At least one listed rule must be satisfied.'] = 'Minst ett villkor måste uppfyllas.';
+$lang['Author'] = 'Fotograf';
+$lang['Albums'] = 'Album';
+$lang['Album'] = 'Album';
+$lang['Close this window'] = 'Stäng detta fönster';
+$lang['Complete RSS feed (photos, comments)'] = 'Komplett RSS-flöde (bilder, kommentarer)';
+$lang['Confirm Password'] = 'Bekräfta lösenord';
+$lang['Connection settings'] = 'Inställningar för anslutning';
+$lang['Login'] = 'Logga in';
+$lang['Contact webmaster'] = 'Kontakta webmaster';
+$lang['Create a new account'] = 'Skapa ett nytt konto';
+$lang['Created on'] = 'Skapad den';
+$lang['Creation date'] = 'Skapat den';
+$lang['Current password is wrong'] = 'Aktuellt lösenord är fel';
+$lang['Dimensions'] = 'Dimensioner';
+$lang['Display'] = 'Visa';
+$lang['Each listed rule must be satisfied.'] = 'Varje villkor måste vara uppfyllt.';
+$lang['Email address'] = 'E-postadress';
+$lang['Enter your personnal informations'] = 'Ange personlig information';
+$lang['Error sending email'] = 'Fel vid sändning av e-post';
+$lang['File name'] = 'Filnamn';
+$lang['File'] = 'Fil';
+$lang['Filesize'] = 'Filstorlek';
+$lang['Filter and display'] = 'Filtrera och visa';
+$lang['Filter'] = 'Filtrera';
+$lang['Forgot your password?'] = 'Har du glömt lösenordet?';
+$lang['Go through the gallery as a visitor'] = 'Navigera galleriet som besökare';
+$lang['Help'] = 'Hjälp';
+$lang['Identification'] = 'Identifiering';
+$lang['Photos only RSS feed'] = 'RSS-flöde med endast bilder';
+$lang['Keyword'] = 'Sökord';
+$lang['Links'] = 'Länkar';
+$lang['Notification'] = 'Meddelande';
+$lang['Number of items'] = 'Antal';
+$lang['Original dimensions'] = 'Originalstorlek';
+$lang['Password forgotten'] = 'Glömt lösenord';
+$lang['Password'] = 'Lösenord';
+$lang['Post date'] = 'Publiceringsdatum';
+$lang['Posted on'] = 'Publicerat';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Snabblogin';
+$lang['RSS feed'] = 'RSS-flöde';
+$lang['Register'] = 'Registrera';
+$lang['Registration'] = 'Registrering';
+$lang['Related tags'] = 'Relaterade taggar';
+$lang['Reset'] = 'Återställ';
+$lang['Retrieve password'] = 'Hämta lösenord';
+$lang['Search rules'] = 'Sökkriterier';
+$lang['Search tags'] = 'Sök taggar';
+$lang['Search'] = 'Sök';
+$lang['display available tags'] = 'visa tillgängliga taggar';
+$lang['Since'] = 'Sedan';
+$lang['Sort by'] = 'Sortera efter';
+$lang['Sort order'] = 'Sorteringsordning';
+$lang['Tag'] = 'Tagg';
+$lang['Tags'] = 'Taggar';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS-flödet ger information om nya händelser från denna webbplats: nya bilder, uppdaterade album och nya kommentarer. Används med en RSS-läsare.';
+$lang['Unknown feed identifier'] = 'Okänt RSS-flöde';
+$lang['User comments'] = 'Kommentarer';
+$lang['Username'] = 'Användarnamn';
+$lang['Visits'] = 'Besök';
+$lang['Webmaster'] = 'Webbansvarig';
+$lang['Week %d'] = 'Vecka %d';
+$lang['About Piwigo'] = 'Om Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Du har inte behörighet till den begärda sidan';
+$lang['add this photo to your favorites'] = 'lägg bilden i dina favoriter';
+$lang['Administration'] = 'Administration';
+$lang['all'] = 'alla';
+$lang['ascending'] = 'stigande';
+$lang['author(s) : %s'] = 'fotograf(er) : %s';
+$lang['Expand all albums'] = 'Visa alla album';
+$lang['posted after %s (%s)'] = 'publicerade efter %s (%s)';
+$lang['posted before %s (%s)'] = 'publicerade före %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'publicerade mellan %s (%s) och %s (%s)';
+$lang['posted on %s'] = 'Publicerad den %s';
+$lang['Best rated'] = 'Högst betygsatta';
+$lang['display best rated photos'] = 'visa högst betygsatta bilder';
+$lang['Calendar'] = 'Kalender';
+$lang['All'] = 'Alla';
+$lang['display each day with photos, month per month'] = 'visa varje dag med bilder, månad för månad';
+$lang['View'] = 'Visa';
+$lang['day'][0] = "Söndag";
+$lang['day'][1] = "Måndag";
+$lang['day'][2] = "Tisdag";
+$lang['day'][3] = "Onsdag";
+$lang['day'][4] = "Torsdag";
+$lang['day'][5] = "Fredag";
+$lang['day'][6] = "Lördag";
+$lang['month'][10] = "Oktober";
+$lang['month'][11] = "November";
+$lang['month'][12] = "December";
+$lang['month'][1] = "Januari";
+$lang['month'][2] = "Februari";
+$lang['month'][3] = "Mars";
+$lang['month'][4] = "April";
+$lang['month'][5] = "Maj";
+$lang['month'][6] = "Juni";
+$lang['month'][7] = "Juli";
+$lang['month'][8] = "Augusti";
+$lang['month'][9] = "September";
+$lang['chronology_monthly_calendar'] = 'månadskalender';
+$lang['chronology_monthly_list'] = 'månadslista';
+$lang['chronology_weekly_list'] = 'veckolista';
+$lang['Click here if your browser does not automatically forward you'] = 'Klicka här om din webbläsare inte automatiskt omdirigerar dig';
+$lang['comment date'] = 'kommentarsdatum';
+$lang['Comment'] = 'Kommentar';
+$lang['Your comment has been registered'] = 'Din kommentar har registrerats';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood-system: vänta en stund innan du försöker att skicka ytterligare en kommentar';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Din kommentar har INTE registrerats eftersom den inte överensstämmer med valideringsreglerna';
+$lang['An administrator must authorize your comment before it is visible.'] = 'En administratör måste godkänna din kommentar innan den visas.';
+$lang['This login is already used by another user'] = 'Denna inloggning används redan av en annan användare';
+$lang['Comments'] = 'Kommentarer';
+$lang['Add a comment'] = 'Lägg till en kommentar';
+$lang['created after %s (%s)'] = 'har skapats efter %s (%s)';
+$lang['created before %s (%s)'] = 'har skapats före %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'har skapats mellan %s (%s) och %s (%s)';
+$lang['created on %s'] = 'har skapats den %s';
+$lang['Customize'] = 'Anpassa';
+$lang['Your Gallery Customization'] = 'Din gallerianpassning';
+$lang['Default'] = 'Standard';
+$lang['delete this photo from your favorites'] = 'ta bort bilden från dina favoriter';
+$lang['Delete'] = 'Ta bort';
+$lang['descending'] = 'fallande';
+$lang['Download'] = 'Ladda ner';
+$lang['Download this file'] = 'ladda ner denna fil';
+$lang['edit'] = 'redigera';
+$lang['wrong date'] = 'fel datum';
+$lang['excluded'] = 'exkluderade';
+$lang['Your favorites'] = 'Mina favoriter';
+$lang['display your favorites photos'] = 'visa mina favoriterbilder';
+$lang['Favorites'] = 'Favoriter';
+$lang['First'] = 'Första';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Galleriet är stängt för underhåll. Vänligen kom tillbaka senare.';
+$lang['Page generated in'] = 'Sidan skapades';
+$lang['guest'] = 'Gäst';
+$lang['Hello'] = 'Hej';
+$lang['available for administrators only'] = 'endast för administratörer';
+$lang['display this album'] = 'visa detta album';
+$lang['display last user comments'] = 'visa de senaste användarkommentarerna';
+$lang['customize the appareance of the gallery'] = 'anpassa galleriets utseende';
+$lang['search'] = 'sök';
+$lang['Home'] = 'Hem';
+$lang['in this album'] = 'i detta album';
+$lang['in %d sub-album'] = 'i %d underliggande album';
+$lang['in %d sub-albums'] = 'i %d underliggande album';
+$lang['included'] = 'inkluderat';
+$lang['Invalid password!'] = 'Ogiltigt lösenord!';
+$lang['Language'] = 'Språk';
+$lang['last %d days'] = 'sista %d dagarna';
+$lang['Last'] = 'Sista';
+$lang['Logout'] = 'Logga ut';
+$lang['obligatory'] = 'obligatorisk';
+$lang['Maximum photo height'] = 'Maximal höjd på bilderna';
+$lang['Maximum height must be a number superior to 50'] = 'Maximal höjd måste vara större än 50';
+$lang['Maximum photo width'] = 'Maximal bredd på bilderna';
+$lang['Maximum width must be a number superior to 50'] = 'Maximal bredd måste vara större än 50';
+$lang['display a calendar by creation date'] = 'visa en kalender sorterad efter datum för skapande';
+$lang['display all photos in all sub-albums'] = 'visa alla bilder i alla underliggande album';
+$lang['return to normal view mode'] = 'återgå till normalt visningsläge';
+$lang['display a calendar by posted date'] = 'visa en kalender sorterad efter publiceringsdatum';
+$lang['Most visited'] = 'Mest besökta';
+$lang['display most visited photos'] = 'visa mest besökta bilder';
+$lang['Unknown identifier'] = 'Okänt id';
+$lang['New password'] = 'Nytt lösenord';
+$lang['Rate this photo'] = 'Betygsätt den här bilden';
+$lang['Next'] = 'Nästa';
+$lang['no rate'] = 'inget betyg';
+$lang['Photos posted within the last %d day.'] = 'Bilder postade den senaste %d dagen.';
+$lang['Photos posted within the last %d days.'] = 'Bilder postade de senaste %d dagarna.';
+$lang['password updated'] = 'lösenord uppdaterat';
+$lang['Recent period must be a positive integer value'] = 'Senaste tiden måste vara ett positivt heltal';
+$lang['photo'] = 'bild';
+$lang['Click on the photo to see it in high definition'] = 'Klicka på bilden för att se den i hög upplösning';
+$lang['Show file metadata'] = 'Visa filens metadata';
+$lang['Powered by'] = 'Baserat på';
+$lang['Preferences'] = 'Inställningar';
+$lang['Previous'] = 'Föregående';
+$lang['Random photos'] = 'Slumpmässiga bilder';
+$lang['display a set of random photos'] = 'visa en uppsättning slumpmässiga bilder';
+$lang['Recent albums'] = 'Senaste album';
+$lang['display recently updated albums'] = 'visa nyligen uppdaterade album';
+$lang['Recent period'] = 'Senaste perioden';
+$lang['Recent photos'] = 'Senaste bilder';
+$lang['display most recent photos'] = 'visa senaste bilder';
+$lang['Redirection...'] = 'Omdirigering...';
+$lang['Please, enter a login'] = 'Vänligen ange inloggning';
+$lang['login mustn\'t end with a space character'] = 'användarnamn får inte sluta med ett mellanslag';
+$lang['login mustn\'t start with a space character'] = 'användarnamn får inte börja med ett mellanslag';
+$lang['this login is already used'] = 'Detta användarnamn används redan';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-postadress måste vara av formen ”arne@anka.org';
+$lang['Auto login'] = 'Automatisk inloggning';
+$lang['remove this tag from the list'] = 'ta bort taggen från listan';
+$lang['representative'] = 'representant';
+$lang['Search for Author'] = 'Sök efter en fotograf';
+$lang['Search in albums'] = 'Sök i album';
+$lang['Search by date'] = 'Sök efter datum';
+$lang['Date'] = 'Datum';
+$lang['End-Date'] = 'Slutdatum';
+$lang['Kind of date'] = 'Typ av datum';
+$lang['Search for words'] = 'Sök efter orden';
+$lang['Search for all terms'] = 'Sök efter alla termer';
+$lang['Search for any term'] = 'Sök efter någon term';
+$lang['Empty query. No criteria has been entered.'] = 'Tom fråga. Inga kriterier har angetts.';
+$lang['Search results'] = 'Sökresultat';
+$lang['Search in sub-albums'] = 'Sök i underliggande album';
+$lang['searched words : %s'] = 'sökte efter : %s';
+$lang['Contact'] = 'Kontakta';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d album uppdaterat';
+$lang['%d albums updated'] = '%d album uppdaterade';
+$lang['%d comment to validate'] = '%d inlägg att godkänna';
+$lang['%d comments to validate'] = '%d inlägg att godkänna';
+$lang['N/A'] = 'Inte tillgängligt';
+$lang['New on %s'] = 'Nya på %s';
+$lang['set as album representative'] = 'ange som omslag för album';
+$lang['Show number of comments'] = 'Visa antal inlägg';
+$lang['Show number of hits'] = 'Visa antal träffar';
+$lang['slideshow'] = 'bildspel';
+$lang['stop the slideshow'] = 'stoppa bildspelet';
+$lang['Specials'] = 'Funktioner';
+$lang['SQL queries in'] = 'SQL-frågor i';
+$lang['display only recently posted photos'] = 'visa endast nyligen publicerade bilder';
+$lang['return to the display of all photos'] = 'återgå till visning av alla bilder';
+$lang['the beginning'] = 'början';
+$lang['Thumbnails'] = 'Miniatyrer';
+$lang['Menu'] = 'Meny';
+$lang['A comment on your site'] = 'En kommentar på din sida';
+$lang['today'] = 'idag';
+$lang['Update your rating'] = 'Ändra ditt betyg';
+$lang['the username must be given'] = 'användarnamn krävs';
+$lang['Edit a comment'] = 'Redigera ett inlägg';
+$lang['Are you sure?'] = 'Är du säker?';
+$lang['(!) This comment requires validation'] = '(!) Detta inlägg kräver validering';
+$lang['Welcome'] = 'Välkommen';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Välkommen till ditt Piwigo-fotogalleri!';
+$lang['... or browse your empty gallery'] = '... eller bläddra i ditt tomma galleri';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... eller vänligen avaktivera detta meddelande, jag hittar själv';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hej %s, ditt Piwigo fotogalleri är tomt!';
+$lang['I want to add photos'] = 'Jag vill lägga till bilder';
+$lang['Manage this user comment: %s'] = 'Hantera det här användarinlägget: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'E-postadressen saknas. Vänligen ange din e-postadress.';
+$lang['This author modified following comment:'] = 'Denna fotograf modifierade följande inlägg:';
+$lang['This author removed the comment with id %d'] = 'Denna fotograf raderade inlägg med id %d';
+$lang['html tags are not allowed in login'] = 'HTML-taggar är inte tillåtna vid inloggning';
+$lang['The number of photos per page must be a not null scalar'] = 'Antal foton per sida får inte vara noll';
+$lang['Number of photos per page'] = 'Antal foton per sida';
+$lang['%d rates'] = '%d röster';
+$lang['Rating score'] = 'Röstpoäng';
+$lang['Invalid username or email'] = 'Ogiltigt användarnamn eller e-postaddress';
+$lang['Password reset is not allowed for this user'] = 'Lösenordsåterställning är ej tillåtet för denna användare';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Användare "%s" har ingen e-postadress, lösenordsåterställning är ej möjlig';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Någon har begärt lösenordsåterställning för följande användarkonto:';
+$lang['Username "%s" on gallery %s'] = 'Användare "%s" i galleri %s';
+$lang['To reset your password, visit the following address:'] = 'För att återställa ditt lösenord, gå till denna adress:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Om detta var felaktigt, vänligen ignorera detta meddelande och ingen åtgärd kommer vidtas.';
+$lang['Password Reset'] = 'Lösenordsåterställning';
+$lang['Check your email for the confirmation link'] = 'Kontrollera din e-post för bekräftelselänken';
+$lang['Invalid key'] = 'Ogiltig nyckel';
+$lang['The passwords do not match'] = 'Lösenorden stämmer inte överens';
+$lang['Your password has been reset'] = 'Ditt lösenord har återställts';
+$lang['Return to home page'] = 'Gå tillbaks timm hem-sidan';
+$lang['Please enter your username or email address.'] = 'Ange ditt användarnamn och e-postadress.';
+$lang['You will receive a link to create a new password via email.'] = 'Du kommer att få en länk via e-post för att skapa ett nytt lösenord.';
+$lang['Username or email'] = 'Användanamn eller e-post';
+$lang['Change my password'] = 'Ändra mitt lösenord';
+$lang['Enter your new password below.'] = 'Ange ditt nya lösenord nedan.';
+$lang['EXIF Metadata'] = 'EXIF Metadata';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Edit'] = 'Redigera';
+$lang['Hello %s,'] = 'Hej %s,';
+$lang['Send my connection settings by email'] = 'Skicka mina anslutningsinställningar via e-post';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Registreringen lyckades, du kommer snart få ett e-post meddelande med dina anslutningsinställningar. Välkommen!';
+$lang['Username modification'] = 'Regdigera användarnamn';
+$lang['Your username has been successfully changed to : %s'] = 'Ditt användarnamn har ändrats till: %s';
+$lang['square'] = 'Kvadrat';
+$lang['thumb'] = 'Miniatyr';
+$lang['small'] = 'Liten';
+$lang['medium'] = 'Medium';
+$lang['large'] = 'Stor';
+$lang['xlarge'] = 'XStor';
+$lang['xxlarge'] = 'XXStor';
+$lang['Original'] = 'Original';
+$lang['Thank you for registering at %s!'] = 'Tack för att du registrerat på %s!';
+$lang['Here are your connection settings'] = 'Här är dina anslutningsinställningar';
+$lang['Password: %s'] = 'Lösenord: %s';
+$lang['Username: %s'] = 'Användarnamn: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Om du anser att du har fått det här meddelandet felaktigt, vänligen kontakta oss på %s';
+$lang['Show oldest comments first'] = 'Visa äldsta kommentarer först';
+$lang['Show latest comments first'] = 'Visa senaste kommentarer först';
+$lang['Photo sizes'] = 'Bildstorlekar';
+$lang['View in'] = 'Visa i';
+$lang['Mobile'] = 'Mobil';
+$lang['Desktop'] = 'Desktop';
+$lang['2small'] = 'XXS - miniatyr';
+$lang['xsmall'] = 'XS - extra liten';
+$lang['File name, A &rarr; Z'] = 'Filnamn, A &rarr; Ö';
+$lang['File name, Z &rarr; A'] = 'Filnamn, Ö &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Bildens namn, A &rarr; Ö';
+$lang['Photo title, Z &rarr; A'] = 'Bildens namn, Z &rarr; Ö';
+$lang['Date created, new &rarr; old'] = 'Skapad datum, ny &rarr; gammal';
+$lang['Date created, old &rarr; new'] = 'Skapad datum, gammal &rarr; ny';
+$lang['Date posted, new &rarr; old'] = 'Publicerad datum, ny &rarr; gammal';
+$lang['Date posted, old &rarr; new'] = 'Publicerad datum, gammal &rarr; ny';
+$lang['Rating score, high &rarr; low'] = 'Betyg, hög &rarr; låg';
+$lang['Rating score, low &rarr; high'] = 'Betyg, låg &rarr; hög';
+$lang['Visits, high &rarr; low'] = 'Besökare, hög &rarr; låg';
+$lang['Visits, low &rarr; high'] = 'Besökare, låg &rarr; hög';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Numeriskt id, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Numeriskt id, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Manuell sortering';
+$lang['%d rate'] = '%d omdöme';
+$lang['Page not found'] = 'Sidan hittades inte';
+$lang['Bad request'] = 'Felaktig begäran';
+$lang['Forbidden'] = 'Förbjuden';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo stötte på ett fel som ej kan åtgärdas';
+$lang['Requested album does not exist'] = 'Det efterfrågade albumet finns inte';
+$lang['Permalink for album not found'] = 'Permalänk till albumet kan ej hittas';
+$lang['Requested tag does not exist'] = 'Den efterfrågade taggen finns inte';
+
+$lang['Email address is mandatory'] = 'E-postadress är obligatorisk';
+$lang['Username is mandatory'] = 'Användarnamn är obligatorisk';
+$lang['Website'] = 'Hemsida';
+$lang['Your website URL is invalid'] = 'URL för hemsida är ogiltig';
+$lang['mandatory'] = 'obligatorisk';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Första sidan';
+$lang['Go back to the album'] = 'Gå tillbaka till album';
+$lang['Last Page'] = 'Sista sidan';
+$lang['Password is missing. Please enter the password.'] = 'Lösenord saknas. Ange lösenord.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Bekräftelse av lösenord saknas. Vänligen bekräfta ditt valda lösenord.';
+?>
Index: /tags/2.6.0RC1/language/sv_SE/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,130 @@
+<h2>Redigera en kategori</h2>
+
+<h3>Information</h3>
+
+<ul>
+
+  <li><strong>namn</strong>: Byt namn på kategori (virtuellt namn byte
+  av en fysisk kategori).</li>
+
+  <li><strong>beskrivning</strong>: en kort text ger en allmän uppfattning om innehållet,
+  Denna text kommer att visas längst ned på miniatyrer sidan.</li>
+
+</Ul>
+
+<h3>Flytta</h3>
+
+<p>Om kategorin är virtuell, kan du flytta den. Flytta en kategori innebär
+att ändra den överordnade kategorin.</p>
+
+<h3>Alternativ</h3>
+
+<ul>
+
+  <li><strong>Åtkomsttyp</strong>: Behörigheter hantering. Om du gör en
+  kategori privat, så blir alla dess underordnade kategorier blir privata. Om du gör en
+  kategori allmän, blir alla dess överordnade kategorier allmänna.</li>
+
+  <li><strong> Låst</strong>: Den kategori och dess underkategorier kommer att
+  vara tillfällig inaktiverad för underhåll.</li>
+
+  <li><strong>Kommentarer</strong>: Auktorisera användare kan kommentera delar av dena
+  kategorin. </ li>
+
+  <li><strong>Auktoriserad att ladda upp</strong>: Auktorisera användare kan ladda upp
+  bildfiler. Det här alternativet är tillgängligt för fysisk (inte
+  virtuella) kategorier. </li>
+
+</Ul>
+
+<p> Du kan också hantera dessa alternativ på "Egenskaper"
+management skärmen (screens<span class="pwgScreen">Ladda upp</span>,<span
+class = "pwgScreen"> Kommentarer</span>,<span class="pwgScreen">Låst</span>,
+<span class="pwgScreen">Offentlig-Privata</span>,<span
+class = "pwgScreen">Representant</span> tillgänglig från <span
+class = "pwgScreen">Administration, kategorier, Egenskaper</span>).</p>
+
+<h3>Sorteringsordning</h3>
+
+<p>Använd standard sorteringsordningen för bilderna.</p>
+
+<p> Ange om denna sorteringsordningen kommer att gälla även underkategorier. </p>
+
+<p> Välj specifika sorterings kriterier som skall användas med på den här kategorin.</p>
+<ul>
+<li><strong>Skapande datum</strong>: Bild fotograferingsdatum</li>
+<li><strong>Publilerings datum</strong>: Synkronisering datum</li>
+<li><strong>Genomsnittskurs (*)</strong>: Genomsnittlig kan ändras av besökarnas röstning </li>
+<li><strong>Mest besökta (*)</strong>: Det aktuella besöket kan ändra mest besökta ordning</li>
+<li><strong>Filnamn</strong>: Namn anges i information område </ li>
+<li><strong>Id </strong>:. Internt id (senare kategorierna har ett högre id än tidigare </li>
+
+</Ul>
+<p><strong>(*)</strong>Varning: Var noga med att testa dessa sorteringsordningsinställningar själv, då de kan ge oväntade resultat</p>.
+
+
+<!--no translate-->
+<h3>Representant</h3>
+
+<p>Albumet representeras av miniatyren som visas på huvudsidan (<span class="pwgScreen">category.php</span>) när albumet enbart består av underalbum och inga direkta bilder
+ (enbart rotalbumet).</p>
+bild av ett album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Fotosida</span>: en av action-knapparna låter dig ange nuvarande foto som representant för det visade albumet. Detta album är tillgängligt enbart för administratörer.</li>
+
+  <li><span class="pwgScreen">Redigera information om en bild</span> under administration. Denna sida kan nås via
+  <span
+  class="pwgScreen">picture.php</span> eller <span class="pwgScreen">Batch
+  hantering</span> i <em>unit mode</em>.  Se hjälpen på den här sidan för detaljer.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Album &raquo; Egenskaper,
+  Representant</span>. Se hjälpen på den här sidan för detaljer.</li>
+
+  <li><span class="pwgScreen">Redigera album</span> (nuvarande sida).</li>
+
+</ul>
+
+<p>Val av representant beror på  
+<code>allow_random_representative</code> inställningsparametern (se <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>I default mode (<code>allow_random_representative</code> satt till falskt),
+representeras varje album som innehåller minst en bild av en statisk bild. När den har angetts (vid albumets skapande), ändras representanten enbart när en administratör begär det. Om representanten inte är representativ så kan du begära att
+ <strong>Hitta en slumpmässig representant</strong>.</p>
+
+<p>Om <code>allow_random_representative</code> inställningsparametern är 'sant'
+så kan en kategori inte ha en statisk representant. Använd <strong>Radera representant</strong> knappen.</p>
+
+<p>Om albumet enbart innehåller underalbum och ingen bild, så kan den ändå representeras av ett godtyckligt element genom sidan<span class="pwgScreen">Redigera bildinformation</span>. Den enda valmöjligheten för aktuell sida är <strong>radera representant</strong> knappen.</p>
+
+<h3>Länka alla bilder till ett nytt album</h3>
+
+<ul>
+
+<li><strong>Namn på virtuellt album</strong>: Namn på albumet som ska skapas, 
+alla bilder i nuvarande katefori kommer att länkas till den nya.</li>
+
+<li><strong>Överliggande album</strong>: Var albumet kommer skapas,
+lämna blankt för att ange som rot.</li>
+
+</ul>
+
+<h3>Länka alla albums bilder till album som finns</h3>
+
+<ul>
+
+<li><strong>Album</strong>: Välj målalbum.</li>
+
+</ul>
+
+<h3>Skicka information till gruppmedlemmarna</h3>
+
+<ul>
+
+<li><strong>Grupp</strong>: mottagargrup</li>
+
+<li><strong>E-post innehåll</strong>: Fritext att skicka.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/sv_SE/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Flytta virtuella album</h2>
+
+<p>Endast virtuella album kan få ett nytt överordnade album.</p>
+
+<h3>Virtuella album att flytta</h3>
+
+<p>Välj en eller flera virtuella album som du vill flytta.
+Om listan är tom, att betyda att du inte har skapat ett ännu.</p>
+
+<h3>Nya överliggande album</h3>
+
+<p>Välj det nya överliggande albumet (virtuellt eller fysiskt).
+Om du inte väljer någon överliggande, kommer den virtuella markerade album flyttas till roten.
+Ett album kan inte flyttas till sig själv eller till någon av sina underliggande.</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Albums alternativ</h2>
+
+<p>Alternativ hantering för flera album på en gång</p>
+
+<dl>
+
+<dt>kommentarer</dt>
+<dd>Ett foto kan ta emot kommentarer från fler besökare om den tillhör ett album med kommentarer aktiverad.</dd>
+
+<dt>Låst/dt>
+<dd>Låst album är avaktiverade för underhåll. Endast administratörer kan se dem i galleriet.</dd>
+
+<dt>Offentlig / privata</dt>
+<dd>När ett album blir privat, ge rättigheter till användare och grupper</dd>
+
+<dt>representant</dt>
+<dd>Det här alternativet finns när du anger i konfigurationsinställningen
+<code>allow_random_representative</code> (se <span
+class="filename">include/config_defaults.inc.php</span>) to
+<em>Sant</em>. Varje album kan representeras av en slumpmässig bild eller ett foto som valts som en unik representant.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/sv_SE/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Hantera behörigheter för en kategori</h2>
+
+<p>Den här meny är bara tillgänglig för privata kategorier. Här kan du välja
+användare och grupper som godkänts för en kategori.</p>
+
+<h3>Grupper</h3>
+
+<p>Du kan neka eller bevilja grupper tillgång för den aktuella kategorin. Genom att modifiera
+en gruppstillstånd kommer användare som tillhör dessa grupper vägras eller beviljas tillträde till den kategori.</p>
+
+<h3>Användare</h3>
+
+<p>Du kan neka eller ge tillgång till enskilda användare. Användare som har tillgång till genom en grupp behörighet kan nekas tillträde med undantag.</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/configuration.html	(revision 25596)
@@ -0,0 +1,132 @@
+<h2>Konfiguration</h2>
+
+<p>Denna meny låter administratören utföra grundläggande konfiguration. Faktum är att denna
+meny visar endast enkel konfigurering parametrar som bör räcka för
+de allra flesta administratörer. Om du vill se andra otaliga (och
+avancerad) konfigurationsparametrar, läsa filen  <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Den här meny är uppdelad i flera avsnitt, omgruppera konfiguration
+parametrar efter tema.</p>
+
+
+<h3>Huvudsakliga</h3>
+<ul>
+  <li><strong>Galleri titel</strong>: används i RSS-feed och noteringar av
+e-post.</li>
+
+  <li><strong>Sid banner</strong>: Visas högst upp på varje public sida.</li>
+
+  <li><strong>Galleri URL</strong>: används för RSS-flöde.</li>
+
+  <li><strong>Stäng galleri</strong>: stänger hela galleriet för
+   underhåll. Endast administratörer användare kommer att kunna nå
+   galleriet.</li>
+
+  <li><strong>Betyg</strong>: Funktionen för att sätta betyg är aktiverad.</li>
+
+  <li><strong>Bestyg av gäster</strong>: Även oregistrerade användare kan betygsätta bilder.</li>
+
+  <li><strong>Tillåt användare registrering</strong>: Vem som helst kan registrera sig.</li>
+
+  <li><strong>E-post är obligatoriskt för alla användare</strong>: e-postadress kommer att kontrolleras vid registrering eller profil uppdatering, förutom om åtgärden görs av en administratör.</li>
+
+  <li><strong>Skicka e-post när nya användare regestrerar sig</strong>: administratörer kommer att meddelas via e-post för varje ny registrering.</li>
+
+</ul>
+
+<h3>Historia</h3>
+
+  <p>Besök på sidorna <span
+  class="pwgScreen">category.php</span> Och <span
+  class="pwgScreen">picture.php</span> kommer att sparas i
+  <code>historisk</code> tabell.</p>
+
+  <p>Besök kommer att visas i <span
+  class="pwgScreen">Administration, Erbjudande, Historik</span>.</p>
+
+<ul>
+  <li><strong>Spara sidan som gäster har besökt</strong>: Sidor som besökts av gäster kommer att registreras.</li>
+
+  <li><strong>Spara sidan som registrerade användare har besökt</strong>: Sidor som besökts av användare kommer att registreras.</li>
+
+  <li><strong>Spara sidan som administratörer har besökt</strong>: Sidor som besökts av administratörer kommer att registreras.</li>
+
+</ul>
+
+<h3>Comments</h3>
+<ul>
+
+  <li><strong>Kommentarer till allal</strong>: Även oregistrerade gäster kan skicka
+   kommentarer.</li>
+
+  <li><strong>Antal kommentarer per sida</strong>.</li>
+
+  <li><strong>Validering</strong>: en administratör måste validera användarens kommentarer innan de blir synliga på webbplatsen. Användarens kommentarer valideras i
+  menyn administration <span class="pwgScreen">Administration, bilder,
+  Komentarer</span>.</li>
+
+  <li><strong>Skickar e-post till admins när en komentar godkänns</strong>:
+Skickar ett mejl till administratörer när en användare anger en kommentar och den här kommentaren är godkänd.</li>
+
+  <li><strong>Skickar e-post till admins när en kommentar kräver validering</strong>:
+Skickar ett mejl till administratörer när en användare anger en kommentar som kräver godkännande av admin.
+Kommentarer validering sker på Menyn <span class="pwgScreen">Administration, bilder, Kommentarer </span>.</li>
+
+</ul>
+
+<h3>Ladda upp</h3>
+<ul>
+  <li><strong>Visa upp laddnings länk varje gång</strong>: Om uppladdade kategorier finns redan, kommer en uppladdning länk visas för varje kategor.</li>
+  <li><strong>Användarnas behörighets nivå för uppladdning</strong>: Begränsar uppladdning till vissa kategorier av användare</li>
+  <li><strong>Skickar e-post till admin när en bild är uppladdad</strong>: Administratörer kommer att meddelas via e-post varje gång en bild laddas upp av en användare.</li>
+</ul>
+
+<h3>Standard display</h3>
+
+<p>Här kan du ändra visningsalternativ som används av gäst, standard användare som inte har loggat in.
+När användaren har loggat in så får användaren sina egna alternativ
+(modifiable in <span class="pwgScreen">Profil</span>).</p>
+
+<p>Det är möjligt att ändra visningsalternativ för alla befintliga användare, på <span class="pwgScreen">Administration,
+Inloggnings id, Användare</span> menyn, där du kan välja en lista med
+användare.</p>
+
+<ul>
+
+  <li><strong>Språk /strong>: används på Piwigo
+   etiketter bara. Kategori namn, namn på bild och alla beskrivande fält är inte
+   lokala.</li>
+
+  <li><strong>Antal bilder per rad</strong></li>
+
+  <li><strong>Antal rader per sida</strong></li>
+
+  <li><strong>Tema för gränssnitt</strong></li>
+
+  <li><strong>Senaste perioden</strong>: Sorterat på dagar. Period under vilken en bild är
+   visas som nya. Måste vara större än 1 dag.</li>
+
+  <li><strong>Expandera alla kategorier</strong>: Expandera alla kategorier som
+   standard i menyn <em>Varning</em>: det här alternativet är resurs krävande
+   och kan generera stora menyn om ditt kategori träd innehåller många
+   kategorier.</li>
+
+  <li><strong>Visa antal kommentarer</strong>: visa antalet kommentarer
+   för varje bild på miniatyrerna sidan. Resurs krävande.</li>
+
+  <li><strong>Visa antal träffar</strong>: visa träffar på bilder
+  under miniatyrbilden på miniatyrerna sida.
+  Först när avancerad konfiguration parameter: <br>
+  $conf['show_nb_hits'] = Sant; <br>
+  Notice: Inte aktiverat som standard.</li>
+
+  <li><strong>Maximal bredd på bilderna</strong>: visa max bredden.
+  Bilder som är större än den här inställningen kommer att ändras på
+   i visningsläget. Välj hälldre att ändra bredden på dina bilder,
+   det skulle vara en bättre praxis.</li>
+
+  <li><strong>Maximal höjd på bilderna</strong>: Samma anmärkningar som för
+maximal bredd inställningen.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/sv_SE/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,54 @@
+<h2>Mallutökningsinsällning</h2>
+
+<h3>Om</h3>
+<p>
+Ditt Piwigo galleri kan anpassas genom att ersätta befintliga mallfiler med anpassade varianter. Till exempel, standardmallen för rubriker (header.tpl) kan ersättas med en anpassad rubrikmall. Efter att ha skickat ändringarna till databasen kommer galleriet visa de anpassade rubrikerna istället för originalrubriken.<br>
+Mallutökningar är ett kraftfullt verktyg för att skapa anpassade teman för både nya och avancerade användare.  Använd tillsammans med LokalaFiler redigeraren kan du skapa dina egna underteman.</p>
+
+<h3>Originalmall</h3>
+<p>Ett tema innehåller ett antal mallfiler som utgör gallerisidorna.  Detta är originalmallarna.</p>
+
+<h3>Alternativa URL nyckelord</h3>
+<p>Detta är ord som återfinns i galleriets URL efter modulnamnet.  De kan också vara aktiva permalänkar (se dokumentationen om permalänkar för mer information) <a href="#warnings">VARNING:</a> om samma originalmall och samma nyckelord används för mer än en anpassad mall så kommer enbart den senaste vara aktiv.</p>
+
+<h3>Bundet Tema</h3>
+<p>Det bundna temat är temat varifrån mallfilerna ersätts.</p>
+
+<h3>Var är originalmallarna?</h3>
+<p>Originalmallarna är mallfilerna som ingår i vardera tema. Dessa är sparade i <em>/themes/default/template</em> (eller <em>themes/<theme name>/template</em>).  Dessa temafiler skall ine redigeras där de är, eftersom ändringar kommer att ersättas vid temauppdateringar.<br>
+Stöd för följande originalteman inkluderas:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Spara anpassade mallar</h3>
+<p>Anpassade mallar skall sparas i template-extension mappen eller undermappar. Till exempel, <em>/template-extension/my-default/header.tpl</em> (eller <em>/template-extension/<my-theme-name>/header.tpl</em>)  Mallfiler kan döpas hursomhelst med .tpl suffix.  Temafiler i undermappar visas i Mallinställningssidan som tillgängliga anpassade mallar.</p>
+<h3>Aktivera anpassade mallar</h3>
+<p>Välj originalmallen att ersätta. Alternativt, välj URL nyckelord för att säkerställa att den anpassade mallen enbart visas på sidor som innehåller det nyckelordet. Välj ett bundet tema och ändringarna kommer att aktiveras för det temat. Skicka ändringarna till databasen.</p>
+<h3>Avaktivera anpassade teman</h3>
+<p>Välj bort originalmallen och skicka ändringarna till databasen.<br>
+Radera de anpassade mallfilerna från mall-tilläggs mappen.</p>
+
+<a name="warnings"></a>
+<h3>Varningar</h3>
+<ul>
+  <li><strong>Originalmallen</strong> måste vara rätt originalmall, annars kan oväntade resultat uppnås.</li>
+  <li>Om samma originalmall och samma URL nuckelord används till mer än en anpassad mall kommer enbart den senaste vara aktiv.</li>
+  <li>Distribuerade exempelmallar är enbart för teständamål. Redigera dem inte. Skapa dina egna eller kopiera befinliga temamallar till <em>/template-extension/<my-theme>/</em></li>
+  <li>När den anpassade tema-mallen raderas så återaktiveras genast originalmallfilen.</li>
+</ul>
+
+
Index: /tags/2.6.0RC1/language/sv_SE/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Grupplista</h2>
+
+<p>Här kan du hantera grupper.</p>
+
+<h3>Lägg till en grupp</h3>
+
+<p>Administratören kan lägga till grupper.</p>
+
+<h3>Grupplista</h3>
+
+<p>för varje element, så kan du i listan:</p>
+
+
+<ul>
+  <li>gå till listan för över medlemmar</li>
+  <li>gå till behörighetsmenyn</li>
+  <li>ta bort en grupp (kräver en bekräftelse)</li>
+  <li>växla status, "default" (kräver en bekräftelse)</li>
+</ul>
+
+<h3>Standardgrupper</h3>
+<p>Standardgrupper är grupper som är automatiskt kopplade till varje ny användare vid registrering eller nya användare skapande av en administratör.</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+<p>Det finns flera sätt att lägga dina bilder i ditt galleri:</p>
+
+<ul>
+  <li><strong>Direkt uppladdning</strong> i din webbläsare är det
+   enklaste och mest direkta sättet. Beroende på din Webbläsares funktioner
+   och din webbserver så kan fel uppkomma,tex För en stor mängd bilder eller i fall du stöter på några andra problem,
+   så finns det andra metoder som bara väntar på dig!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Gå till Direkt uppladdning </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> är ett program, som installeras på din dator. Dra &amp;släpp bilder till pLoader fönstret, klicka på <em>"Ladda upp till Piwigo"</em> och låt pLoader göra jobbet. Det finns även andra program som <strong>WinToPiwigo</strong> eller <strong>Digikam</strong> som är ett export plugin till Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Gå till pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP-överföring</strong> är den mest rekommenderade sättet att lägga till en
+   mycket stor samling av bilder med ett minimalt antal klick. Följ
+   guiden att förbereda dina bilder. FTP-metod kan du kontrollera exakt
+   den fysiska organisationen av dina bilder på din server.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Gå till FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/sv_SE/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Grupper är ett bekvämt sätt att ange behörigheter för en lista med användare.</p>
+
+<p>Skapa grupper i <span class="pwgScreen">Administration &raquo; Användare
+&raquo; Grupper</span> och användare associerade till denna grupp i
+<span class="pwgScreen">Administration &raquo; användare &raquo;
+Hantera</span>.</p>
+
+<p>En användare kan tillhöra flera grupper. Tillåtelse har företräde framför Förbud:
+Om användaren "jack" tillhör gruppen "familj" och "vänner", men endast gruppen
+"familj" kan se kategori "jul 2003", så kommer
+"jack" att kunna se "jul 2003".</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/help_misc.html	(revision 25596)
@@ -0,0 +1,10 @@
+<p>Så snart du skapat ditt galleri kan du ange inställningar för besökare
+<ul>
+	<li>Standardvisningen som du föredrar i <span class="pwgScreen">Administration &raquo; Inställningar &raquo; Alternativ</span> tab <span class="pwgScreen">Gästinställningar</span></li>
+	<li>Standardtema i <span class="pwgScreen">Administration &raquo; Inställningar &raquo; Teman</span></li>
+	<li>Standardspråk i <span class="pwgScreen">Administration &raquo; Inställningar &raquo; Språk</span></li>
+ </ul>
+ Som standard kommer varje ny användare ärva dessa inställningar vid registrering.
+</p>
+<p>Om fu har någon fråga så välkomnas du av Piwigo kollektivet på <a href="http://piwigo.org/forum"> forumet</a>.</p>
+
Index: /tags/2.6.0RC1/language/sv_SE/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,57 @@
+<fieldset>
+<legend>Behörigheter på bilder</legend>
+
+<p>Varje bild har en <strong>behörighetsnivå</strong> .(Låsbar), Varje användare har också en behörighetsnivå (ett ID). Det finns 5 behörighetsnivåer:</p>
+<ol>
+  <li>Ingen</li>
+  <li><em>Kontakter</em></li>
+  <li><em>Vänner (vilket är högre än en kontakter)</em></li>
+  <li><em>Familj (vilket är högre än en vänner)</em></li>
+  <li><em>Administratörer (vilket är högre än någon annan nivå)</em></li>
+</ol>
+
+<p>Högre nivåer har behörighet på lägre nivåer. Ju höre behörighet användaren har, ju mer bilder kan användaren se.</p>
+
+<p>Till exempel, om foto "peter_wedding-0024.jpg" Har <em>"Familj"</em> behörighetsnivå, då:</p>
+<ul>
+  <li>Peter (som är en <em>"administratör"</em>) kommer att se bilden eftersom <em>"Adminstratör"</em> kan se alla bilder</li>
+  <li>Beth (som är en <em>"Familj"</em> member) kommer också se bilden</li>
+  <li>Mary (som är en <em>"Vänner"</em>) kommer inte se bilden</li>
+</ul>
+
+<p>En användare som inte har någon behörighet att visa innehållet i en kategori, kommer att se kategorin själv, inte ens dess titel. Samma princip gäller för en taggar</p>
+
+<p>Du kan ställa in behörighetsnivån för en användare på <span class="pwgScreen">Administration &raquo; Användare &raquo; Hantera</span> skärmen.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Behörigheter på Kategorier</legend>
+
+<p>Om behörighets niverna inte passar dina behov, kan du hantera även sätta behörigheter på kategorier för en användare eller en grupp. Du kan hantera behörigheter på bilder och kategorier samtidigt, utan konflikter.</p>
+
+<p>Du kan förbjuda tillgång till kategorier. Byt kategori åtkomst typ till
+"Privat" om du vill hantera behörigheter.</p>
+
+<p>Du kan ange en kategori som "privat" genom att redigera en kategori
+(<span class="pwgScreen">Administration &raquo; Kategorier &raquo; Hantera
+&raquo; Editera</span>) eller genom att ange alternativ för hela din kategori trädet
+(<span class="pwgScreen">Administration &raquo; Kategorier &raquo;
+Engenskaper &raquo; Publik / Privat</span>).</p>
+
+<p>När kategorin är privat, kan du hantera behörigheter för grupper och
+användare med dessa 3 menyer:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Administration &raquo; Användare &raquo; hantera &raquo;
+  behörigheter</span> (en länk per användare)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Användare &raquo; Grupper &raquo;
+  behörigheter</span> (en länk per grupp)</li>
+
+  <li><span class="pwgScreen">Administration &raquo; kategorier &raquo; hantera &raquo; editera
+  Kategori behörighet</span> (en länk per kategori)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/sv_SE/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>Foton visas i albumet som motsvarar deras filkatalog.</p>
+
+<p>Du kan även visa en bild i flera album, utan att duplicera bilden på din webbserver. Associera bilden med ett godtyckligt album från fotoredigeringsskärmen (som alla administratörer kan nå från bildsidan på gallerisidan).</p>
+
+<p>Virtuella album skapas konceptuellt så att de inte har någon motsvarande filkatalog (directory). Skapa virtuella album från <span class="pwgScreen">Administration &raquo; Album &raquo;
+Hantera</span>.</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Historik</h2>
+
+<p>På dessa sidor kan du se antalet besök till ditt galleri enligt de inställningar du valt i: Administration &raquo; Alternativ &raquo; Allmänt &raquo; Historik</p>
+	
+<h3>Statistik</h3>
+<ul>
+  <p>Om du har valt att logga sidbesök (<span class="pwgScreen">index.php</span> och <span class="pwgScreen">picture.php</span>), så kan du se statistik från denna fliken.</p>
+	<li><strong>Global statistics</strong>: besök per år. </li>
+	<li><strong>Yearly statistics</strong>: besök per månad under valt år.</li>
+	<li><strong>Monthly statistics</strong>: besök under vald månad.</li>
+	<li><strong>Daily statistics</strong>: besök per timme under vald dag.</li>
+</ul>
+
+<h3>Search</h3>
+<ul>
+  <p>Om du har valt att logga sidbesök (<span class="pwgScreen">index.php</span> och <span class="pwgScreen">picture.php</span>), så kan du navigera detaljer via denna flik genom olika filter.</p>
+	<li><strong>Filtrera via datum:</strong> välj datumintervall för sökningen genom att sätta start och slutdatum.</li>
+	<li><strong>Filtrera via elementtyp:</strong> välj typ av element för statistik gällande det elementet.</li>
+	<li><strong>Filtrera per användare:</strong> välj användare för statistik om den användaren.</li>
+	<li><strong>Filtrera per bildidentitet:</strong> välj bildidentifierare för statistik om den bilden.</li>
+	<li><strong>Filtrera via filnamn:</strong> välj filnamn för statistik för den filen.</li>
+</ul>
Index: /tags/2.6.0RC1/language/sv_SE/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/sv_SE/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/maintenance.html	(revision 25596)
@@ -0,0 +1,26 @@
+<h2>Underhåll</h2>
+
+<p>För att optimera sidgenereringstiden så använder Piwigo cachad information. Till exempel, istället för att räkna antalet foton som ett album innehåller varje gång en sida laddas, så sparas det i databasen. Teoretiskt skall denna information alltid vara korrekt, men ibland kan ett fel inträffa och den cachade informationen blir utdaterad.</p>
+
+<p>Viss information tappar värde ju äldre den blir. Genom att radera oanvändbar information från databasen kan du spara lagringsutrymme på hårddisken.</p>
+
+<ul>
+	<li><strong>Radera hemlösa taggar</strong></li>
+</ul>
+<ul>
+  <li><strong>Uppdatera albumsinformation:</strong> För varje album kommer följande information kontrolleras och uppdateras om nödvändigt: lista över överliggande album, antal foton, senaste fotodatum, position bland syskonalbum, position bland alla album. Detta konsistenskontrollerar även repesentantbilderna.</li>
+  <li><strong>Uppdatera bildinformation:</strong> För varje bild är den uppdaterade informationen: full sökväg, snittbetyg. <em>Varning</em>, blanda inte ihop med metadata information som måste synkroniseras från <span class="pwgScreen">Administration &raquo; Verktyg &raquo; Synkronisera</span>, eller på redigeringssidan för individuella bilder (genom <span class="pwgScreen">Bild</span> till exempel).</li>
+</ul>
+<ul>
+  <li><strong>Reparera och optimera databasen:</strong>Genomför omarrangering, reparation och optimeringsåtgärder på alla tabeller i databasen.</li>
+  <li><strong>Ominitialisera integritetskontroll</strong></li>
+</ul>
+
+<ul>
+  <li><strong>Radera historikdetaljer:</strong> Radera alla rader från historiktabellen. Bild <span class="pwgScreen">Administration &raquo; Verktyg &raquo; Historik</span> kommer inte längre visa tidigare historik. <em>Varning:</em> all data kommer raderas, utan möjlighet till återställning.</li>
+  <li><strong>Radera historiksammanställning:</strong> Radera alla sammanställningar av besökshistoriken. Denna sammanställning beräknas från den detaljerade informationen.</li>
+  <li><strong>Radera sessioner:</strong> Raderera utgångna användarsessioner.</li>
+  <li><strong>Radera ej använda notifikationslöp (notification feeds)</strong></li>
+  <li><strong>Radera sökhistorik</strong></li>
+  <li><strong>Radera kompilerade mallar</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/sv_SE/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Notifikationer via e-post (NBM)</h2>
+
+<p>Inställningar och hantering av e-post notifikationer till användare för att informera om ändringar på din sida.</p>
+
+<p>Den här sidan består av tre flikar:</p>
+
+<h3>Inställningar</h3>
+<p>Tillgänglig bara för webmasters. Den här fliken anger parametrer för e-post notifikationer.</p>
+
+<h3>Prenumerera</h3>
+<p>Tillgänglig bara för webmasters. Den här fliken hanterar användarinställningar för prenumerationer på e-post notifikationer. Lägg till användare genom att markera prenumerationsvalrutan.</p>
+
+<h3>Skicka</h3>
+<p>Tillgänglig bara för webmasters och administratörer. Den här fliken låter administratörer att skicka notifikationer via e-post till prenumererande ancändare.</p>
+
Index: /tags/2.6.0RC1/language/sv_SE/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Permalänkar</h2>
+
+<p>Permalänkar används för att göra urls till album enklare. När ett album är associerat med en permalänk så behöver albumets id ej längre anges i url'en.</p>
+
+<p>När en permalänk raderas så kan du spare den i permalänkhistoriken så att externa länkar till Piwigo fortsätter att hitta rätt. I permalänkshistoriktabellen kan du se vilket datum en permalänk raderats, senaste gång den använts och antalet gånger den använts.</p>
+
+<p>Notera att permalänkar måste vare unika per album. Även i permalänkshistoriken måste dessa vara unika.</p>
Index: /tags/2.6.0RC1/language/sv_SE/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/search.html	(revision 25596)
@@ -0,0 +1,24 @@
+<h2>Sök</h2>
+
+<p>Denna sida låter dig söka foton i hela galleriet.</p>
+
+<dl>
+
+  <dt>Sök efter ord</dt>
+  <dd>Sök efter ett eller flera ord i attributen kopplade till foton 
+  i galleriet. Använd * som wildcard för partiella matchningar.</dd>
+
+  <dt>Sök efter en författare</dt>
+  <dd>Använd * som wildcard för partiella matchningar.</dd>
+
+  <dt>Sök efter datum</dt>
+  <dd>Välj ett datum och/eller ett slutdatum för din fråga. Lämna datumfältet 
+  tomt om du vill ställa en "före" fråga. Årtal i sista fältet anges i 
+  följande format : AAAA (dvs 2004)</dd>
+
+  <dt>Sök i album</dt>
+  <dd>Välj ett eller flera album som du vill söka i. För att söka 
+  i alla underalbum väljer du huvudalbum, och sedan aktiverar sök 
+  i underalbum nedan.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/sv_SE/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/help/user_list.html	(revision 25596)
@@ -0,0 +1,33 @@
+<h2>Användarlista</h2>
+
+<p>Detta är platsen för hantering av inställningar för registrerade användare, utom behörigheter som hanteras från andra menyer.</p>
+
+<h3>Lägg till en användare</h3>
+
+<p>Administratören kan lägga till användare manuellt.</p>
+
+<h3>Lista över användare</h3>
+
+<p>Listan kan filtreras på användarnamn (använd * som jokertecken), grupp eller
+status. Den kan sorteras genom registrering datum eller användarnamn, i stigande
+eller fallande ordning.</p>
+
+<p>I denna meny kan du hantera flera användare samtidigt, med hjälp av olika alternativ:</p>
+
+<ul>
+
+  <li>ta bort användare (kräver bekräftelse)</li>
+  <li>ändra status</li>
+  <li>koppla till eller separera från grupper </li>
+  <li>ändra visningsegenskaper</li>
+  <li>ändra ytterligare egenskaper</li>
+
+</ul>
+
+<p>Som standard är målet användaren, eller alla användare som visas i den filtrerade listan.</p>
+
+<h3>Rådgivare</h3>
+<p>Definition av en användare klassad som Rådgivare: en användare som har läst / simulering på alla menyer som tillåts av sina egna behörigheter.</p>
+
+<p>Rådgivare-läge ställs in med variabeln $conf['allow_adviser'].</p>
+<p>Om denna variabel är satt till "sant", så kan alla användare vara Rådgivare</p></h2>
Index: /tags/2.6.0RC1/language/sv_SE/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Installation';
+$lang['Basic configuration'] = 'Grund Inställningar';
+$lang['Default gallery language'] = 'Standard språk för galleriet';
+$lang['Database configuration'] = 'Databas konfiguration';
+$lang['Admin configuration'] = 'Admin konfiguration';
+$lang['Start Install'] = 'Påbörja installation';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Det kommer att visas för besökare. Det är nödvändigt för administrering av hemsidan.';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Ansluten till server, men kunde inte ansluta till databasen.';
+$lang['Can\'t connect to server'] = 'Kan inte ansluta till servern';
+$lang['Host'] = 'Värd';
+$lang['User'] = 'Användare';
+$lang['user login given by your host provider'] = 'användares inloggning given av ditt webbhotell';
+$lang['user password given by your host provider'] = 'användares lösenord given av ditt webbhotell';
+$lang['Database name'] = 'Databas namn';
+$lang['also given by your host provider'] = 'också tilldelad av din webbhotell';
+$lang['Database table prefix'] = 'Prefix för tabeller i Databasen';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'tabellernas namn i databasen kommer att bli prefixerad med det (detta gör att du kan hantera dina tabeller bättre)';
+$lang['enter a login for webmaster'] = 'ange inloggning för webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'login för webmaster får inte innehålla symbolerna \' eller "';
+$lang['please enter your password again'] = 'ange ditt lösenord igen';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Håll det hemligt, lösenordet ger dig tillgång till administrationspanelen';
+$lang['Password [confirm]'] = 'Lösenord [bekräfta]';
+$lang['verification'] = 'verifiering';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Behöver du hjälp? Ställ din fråga på <a href="%s">Piwigo message board</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Besökare kommer att kunna kontakta sidans administratör med denna e-mail adress';
+$lang['PHP 5 is required'] = 'PHP 5 krävs';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Ditt webbhotell använder just nu PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan kanske komma att ändra dina inställningar i PHP 5 genom att skapa eller ändra en .htaccess fil.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Notera att du kan ändra dina inställningar förutsatt att du startar om Piwigo efteråt.';
+$lang['Try to configure PHP 5'] = 'Försök att konfigurera PHP 5';
+$lang['Sorry!'] = 'Ursäkta!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo kunde inte konfigurera PHP 5.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Vi rekomenderar att du kontaktar leverantören för ditt webbhotell för att se hur du kan ändra till PHP 5.';
+$lang['Hope to see you back soon.'] = 'Välkommen tillbaka snart igen.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Gratulerar, Piwigo installationen är klar';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ lösning är att kopiera texten ovan och klistra in i filen "local/config/database.inc.php" (Varning : database.inc.php får enbart innehålla texten från textarean, inga radbrytare eller mellanrum)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Kunde inte skapa filen local/config/database.inc.php .';
+$lang['Download the config file'] = 'Ladda ner konfigurations filen';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan ladda ner konfigurationsfilen och ladda upp den till local/config .';
+$lang['Just another Piwigo gallery'] = 'Ännu ett Piwigo galleri';
+$lang['Welcome to my photo gallery'] = 'Välkommen till mitt fotogalleri';
+$lang['Welcome to your new installation of Piwigo!'] = 'Välkomment till din nya installation av Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Tveka inte att kontakta våra forum för hjälp: %s';
+$lang['localhost or other, supplied by your host provider'] = 'localhost eller det värdnams som du valt eller tilldelats av din webhotells leverantör/server';
+?>
Index: /tags/2.6.0RC1/language/sv_SE/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Svenska [SE]
Index: /tags/2.6.0RC1/language/sv_SE/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/sv_SE/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/sv_SE/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = 'Uppgradera';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Denna sida föreslår att du ska uppgradera databasen från din gamla versionen till den nya versionen. Uppgraderingen assistenten tycker att du för närvarande kör en <strong>versionen %s </strong> (eller motsvarande).';
+$lang['Upgrade from version %s to %s'] = 'Uppgradera från version %s till %s';
+$lang['Statistics'] = 'Statistik';
+$lang['total upgrade time'] = 'total uppgraderings tid';
+$lang['total SQL time'] = 'Total SQL tid';
+$lang['SQL queries'] = 'SQL-frågor';
+$lang['Upgrade informations'] = 'Uppgraderings information';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gör en underhållskontroll i mynyn [Administration> Verktyg> Underhåll] om du stöter på några problem. .';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Som en försiktighetsåtgärd, har följande insticksmoduler avaktiverats, Du måste kontrollera alla plugins uppgraderingar före återaktivering av dem:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Endast en administratör kan köra uppgraderingen: Logga in nedan.';
+$lang['You do not have access rights to run upgrade'] = 'Du har inte behörighet att köra uppgradering';
+$lang['All sub-albums of private albums become private'] = 'Alla underliggande album av "privata album" blir "privata';
+$lang['User permissions and group permissions have been erased'] = 'Användare och grupper behörigheter har raderats';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'miniatyrbilder Endast prefix och webmaster postadress har sparats från tidigare konfiguration';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'I <i>%s</i>, innan <b>?></b>, infoga:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Som en försiktighetsåtgärd, har följande teman har avaktiverats. Du måste kolla tema uppgraderingar innan du aktivera dem:';
+
+?>
Index: /tags/2.6.0RC1/language/ta_IN/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ta_IN/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ta_IN/admin.lang.php	(revision 25596)
@@ -0,0 +1,184 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['%d associations'] = '
+';
+$lang['%d guests'] = '% d விருந்தினர்';
+$lang['%d hour'] = '% d மணிநேரம்';
+$lang['%d hours'] = '% d மணிநேரம்';
+$lang['%d guest'] = '% d விருந்தினர்';
+$lang['%d groups'] = '%d குழுக்கள்';
+$lang['%d group'] = '%d குழு';
+$lang['%d days'] = '%d நாட்கள்';
+$lang['%d day'] = '% d நாள்';
+$lang['%d anomalies have been detected.'] = '% d முரண்பாடுகள் கண்டறியப்பட்டது';
+$lang['%d anomalies have been detected corrected.'] = '% d முரண்பாடுகள் கண்டறியப்பட்டு மேலும் சரிசெய்யப்பட்டது';
+$lang['%d albums moved'] = '%d ஆல்பங்கள் நகர்த்தப்பட்டது';
+$lang['%d albums including'] = 'இதில்% d ஆல்பங்கள்';
+$lang['%d album moved'] = '% D ஆல்பம் நகர்த்தப்பட்டது';
+$lang['%d album including'] = '% d ஆல்பம் அடங்கும்';
+$lang[' and %d virtual'] = 'மற்றும் %d நிஜமான';
+$lang[' and %d virtuals'] = 'மற்றும் %d நிஜமான';
+$lang['%d anomaly has been corrected.'] = '% d ஒழுங்கின்மை சரி செய்யப்பட்டது.';
+$lang['%d anomalies have not been corrected.'] = '% d முரண்பாடுகள் சரி, இல்ல';
+$lang['%d anomalies have been ignored.'] = '%d நேரின்மைகளுடன் புறக்கணிக்கப்பட்டது.';
+$lang['%d association'] = '%d தொடர்பு';
+$lang['%d mails were sent.'] = '%d அஞ்சல்கள் அனுப்பப்பட்டுள்ளன.';
+$lang['%d members'] = '%d உறுப்பினர்கள்';
+$lang['%d minute'] = '%d நிமிடம்';
+$lang['%d minutes'] = '%d நிமிடங்கள்';
+$lang['%d month'] = '%d மாதம்';
+$lang['%d months'] = '%d மாதங்கள்';
+$lang['%d of %d photos selected'] = '%d இன் % d புகைப்படங்கள் தேர்ந்தெடுக்கப்பட்டது';
+$lang['%d parameter was updated.'] = '%d அளவுரு மேம்படுத்தப்பட்டது.';
+$lang['%d photos uploaded'] = '%d புகைப்படங்கள் பதிவேற்றப்பட்டது';
+$lang['%d photos were deleted'] = '%d படங்கள் நீக்கப்பட்டன';
+$lang['%d member'] = '%d உறுப்பினர்';
+$lang['%d mails were not sent.'] = '% d அஞ்சல் அனுப்பப்படவில்லை.';
+$lang['%d lines filtered'] = '% d வரிசைகள் வடிகட்டப்பட்டது';
+$lang['%d mail was sent.'] = '%d மின்னஞ்சல் அனுப்பப்பட்டது';
+$lang['%d mail was not sent.'] = '%d மின்னஞ்சல் அனுப்பப்படவில்லை';
+$lang['%d line filtered'] = '% d கோடு வடிகட்டப்பட்டது';
+$lang['%d parameters were updated.'] = '% d அளவுருக்கள் மேம்படுத்தப்பட்டது.';
+$lang['%d photo was deleted'] = '% d படம் நீக்கப்பட்டது';
+$lang['%d tag'] = '% d குறிச்சொல்';
+$lang['%d tags'] = '% d குறிச்சொற்கள்';
+$lang['%d user'] = '% d பயனர்';
+$lang['%d user comment rejected'] = '% d பயனர் கருத்துரை நிராகரிக்கப்பட்டது';
+$lang['%d user comment validated'] = '% d பயனர் கருத்துரை சரிபார்க்கப்பட்டது';
+$lang['%d user comments rejected'] = '% d பயனர் கருத்துரைகள் நிராகரிக்கப்பட்டது';
+$lang['%d user comments validated'] = '% d பயனர் கருத்துரைகள் சரிபார்க்கப்பட்டது';
+$lang['%d user deleted'] = '% d பயனாளர் அழிக்கப்பட';
+$lang['%d user was not updated.'] = '% d பயனாளர் மேம்படுத்தப்பட்டு இல்லை
+';
+$lang['%d user was updated.'] = '% d பயனாளர் மேம்படுத்தப்பட்டு.';
+$lang['%d users'] = '% d பயனர்களுக்கு';
+$lang['%d users deleted'] = '% d பயனர்கள் நீக்கப்பட்டன';
+$lang['%d users were not updated.'] = '% d பயனர்கள் மேம்படுத்தப்பட்டு இல்லை.';
+$lang['%d seconds'] = '% d விநாடிகளில்';
+$lang['%d second'] = '% d விநாடி';
+$lang['%d physicals'] = '% d பருநிலை';
+$lang['%d physical'] = '% d பருநிலை';
+$lang['%d anomaly has not been corrected.'] = '% d ஒழுங்கின்மை சரி செய்யப்படவில்லை.';
+$lang['%d anomaly has been ignored.'] = '% d ஒழுங்கின்மை புறக்கணிக்கப்பட்டது';
+$lang['%d anomaly has been detected.'] = '% d ஒழுங்கின்மை கண்டறியப்பட்டது.';
+$lang['%d users were updated.'] = '% d பயனர்கள் மேம்படுத்தப்பட்டது.';
+$lang['%d waiting for validation'] = '% d காத்திருக்கிறது சரிபார்த்தல்';
+$lang['%d week'] = '% d வாரம்';
+$lang['%d weeks'] = '% d வாரங்கள்';
+$lang['%d year'] = '% d வருடம்';
+$lang['%d years'] = '% d வருடங்கள்';
+$lang['%s ago'] = '% கள் முன்பு ';
+$lang['%s has been successfully updated.'] = '% கள் வெற்றிகரமாக மேம்படுத்தப்பட்டது.';
+$lang['%s in the future'] = '%கள் எதிர்காலத்தில்';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '% கள் உங்கள்  local/config/config.inc.php கோப்பில் தவறான என்று அமைக்கப்பட்டிருக்க வேண்டும்';
+$lang['%s photos can not be regenerated'] = '% கள் புகைப்படங்கள் மறு உருவாக்கம் செய்ய முடியாது';
+$lang['%s photos have been regenerated'] = '% கள் புகைப்படங்கள் மீண்டும் உருவாக்கப்படுகிறது';
+$lang['%s value is not correct file because exif are not supported'] = '% s மதிப்பு தவறானது ஏனெனில் எக்ஸிப் ஆதரிக்கப்படவில்லை';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '% u பயனர்களுக்கு தானியங்கு அனுமதி
+அவர்கள் ஒரு வழங்கப்பட்ட குழுவை சேர்ந்தவை என்பதால்.';
+$lang['(this tag will be deleted)'] = '(இந்த குறி நீக்கப்படும்)';
+$lang['+ Add an upload box'] = '+ ஒரு பதிவேற்ற பெட்டியை சேர்க்கவும்';
+$lang[', click on'] = 'சொடுக்கவும் மீது';
+$lang['... or '] = '... அல்லது';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em> Android க்கான Piwigo </ em>  பயன்பாட்டு உங்கள் Piwigo கேலரியில் உங்கள் Android தொலைபேசி அல்லது வரைபட்டிகை இணைக்க அனுமதிக்கும், சில ஆல்பங்களை உருவாக்க மற்றும் ஒரே நேரத்தில் பல புகைப்படங்களை பதிவேற்றலாம்.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em> Piwigo iOS க்கு </ em> பயன்பாட்டு சில ஆல்பங்களை உருவாக்கி ஒரே நேரத்தில் பல புகைப்படங்களை பதிவேற்ற, உங்கள் ஐபோன், ஐபாட் அல்லது ஐபாட் டச் உங்கள் Piwigo கேலரி இணைக்க நீங்கள் அதிகாரமளிக்கிகிறது.';
+$lang['ACCESS_3'] = 'நிர்வாகிகள் அணுகல்';
+$lang['ACCESS_4'] = 'வலை மேலாளர்கள் அணுகல்';
+$lang['ACCESS_5'] = 'அணுகுவதற்கு இல்லை
+';
+$lang['Access type'] = 'அணுகல் வகையான';
+$lang['Action'] = 'செயல்';
+$lang['Actions'] = 'செயல்கள்';
+$lang['Activate'] = 'செயலாக்க';
+$lang['ACCESS_2'] = 'பதிவு செய்த பயனர் அணுகல்';
+$lang['ACCESS_1'] = 'அனைத்து அணுகல்
+';
+$lang['ACCESS_0'] = 'இலவச அணுகல்';
+$lang['A new version of Piwigo is available.'] = 'ஒரு புதிய Piwigo பதிப்பு உள்ளது.';
+$lang['A locked gallery is only visible to administrators'] = 'ஒரு பூட்டிய கேலரி நிர்வாகிகளால் மட்டுமே காண முடியும்';
+$lang['Activate Navigation Bar'] = 'செயல்படுத்தவும் திசை பட்டையில்';
+$lang['Activate Navigation Thumbnails'] = 'திசையமைப்பு சிறுபடவுருக்களையும் செயல்படுத்தவும்';
+$lang['Add'] = 'சேர்க்க';
+$lang['Add New Language'] = 'புதிய மொழியை சேர்க்க';
+$lang['Add New Theme'] = 'ஒரு புதிய கருப்பொருளை சேர்க்க';
+$lang['Add Photos'] = 'ஒரு புகைப்படத்தை சேர்க்க';
+$lang['Add a criteria'] = 'ஒரு நிர்ணய அளவை சேர்க்க';
+$lang['Add a filter'] = 'ஒரு வடிப்பான் சேர்க்க';
+$lang['Add a tag'] = 'ஒரு குறியை சேர்க்க';
+$lang['Add a user'] = 'ஒரு பயனர் சேர்க்க';
+$lang['Add a virtual album'] = 'ஒரு மெய்நிகர் ஆல்பம் சேர்க்க';
+$lang['Add another set of photos'] = 'மற்றொரு புகைப்படங்கள் தொகுப்பைஅமைக்க';
+$lang['Add detailed content'] = 'சில விவரமான உள்ளடக்கத்தை சேர்க்க';
+$lang['Add group'] = 'குழுவாக சேர்க்க';
+$lang['Activate comments'] = 'கருத்துரைகளை செயல்படுத்த';
+$lang['Activate icon "%s"'] = 'படவுருவை செயல்படுத்த   "% s"';
+$lang['Activate icon "new" next to albums and pictures'] = 'படவுருவை செயல்படுத்த "புதிய" அடுத்ததாக ஆல்பங்கள் மற்றும் படங்களின்';
+$lang['Active Languages'] = 'செயல்மிகு மொழிகள்';
+$lang['Active Plugins'] = 'செயல்மிகு செருகுநிரல்கள்';
+$lang['Active Themes'] = 'செயல்மிகு கருப்பொருள்கள்';
+$lang['Add tags'] = 'குறிச்சொற்களை சேர்க்க';
+$lang['Add to caddie'] = 'Caddies சேர்க்கவும்';
+$lang['Add write access to the "%s" directory'] = 'சேர்க்க எழுதுவதற்கு அணுகல் "%s" அடைவில்';
+$lang['Add/delete a permalink'] = 'ஒரு பெர்மாலின்க் சேர்க்க / நீக்க';
+$lang['Added by %s'] = 'சேர்க்கப்பட்டது மூலமாக % s';
+$lang['Administration Home'] = 'நிர்வாகத்தின் முகப்பு';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'அடோப் ஃபோட்டோஷா Lightroom வடிவமைக்கப்பட்ட புகைப்படக்கலை மென்பொருள் டிஜிட்டல் படங்கள் அதிக அளவில் நிர்வகிப்பதற்கான மற்றும் பிந்தைய தயாரிப்பு பணி செய்வதற்கு.';
+$lang['Advanced features'] = 'முன்னேறிய அம்சங்கள்';
+$lang['Album "%s" has been added'] = 'ஆல்பம் "%கள்" சேர்க்கப்பட்டுள்ளது';
+$lang['Album "%s" now contains %d photos'] = 'ஆல்பம் "% கள்" இப்பொழுது% d புகைப்படங்களை கொண்டிருக்கிறது';
+$lang['Album list management'] = 'ஆல்பம் பட்டியல் மேலாண்மை';
+$lang['Album manual order was saved'] = 'ஆல்பம் கைமுறையாக வரிசையில் சேமிக்கப்படும்';
+$lang['Album name'] = 'ஆல்பம் பெயர்';
+$lang['Album photos associated to the following albums: %s'] = 'ஆல்பம் புகைப்படங்கள் தொடர்புடையதாக பின்வரும் ஆல்பங்கள்:% கள்';
+$lang['Album updated successfully'] = 'ஆல்பம் வெற்றிகரமாக புதுப்பிக்கப்பட்டன';
+$lang['Albums authorized thanks to group associations'] = 'ஆல்பங்கள் அங்கீகரிக்கப்பட்ட நன்றி  குழு சங்கத்தை';
+$lang['Albums automatically sorted'] = 'தன்னிச்சையாக வரிசைப்படுத்தப்பட்ட ஆல்பங்கள்';
+$lang['All %d photos are selected'] = 'அனைத்து% d புகைப்படங்கள் தேர்ந்தெடுக்கப்பட்டன';
+$lang['All extensions are up to date.'] = 'அனைத்து நீட்சிகள் இருக்கின்றன இன்றுவரை.';
+$lang['All languages are up to date.'] = 'அனைத்து மொழிகளும் இருக்கின்றன இன்றுவரை.';
+$lang['All plugins are up to date.'] = 'அனைத்து செருகுநிரல்கள் இன்றுவரை புதுப்பிக்கப்பட்ட நிலையில் உள்ளன';
+$lang['All themes are up to date.'] = 'அனைத்து கருப்பொருள்கள் இன்றுவரை புதுப்பிக்கப்பட்ட நிலையில் உள்ளன';
+$lang['Allow rating'] = 'அனுமதிக்க மதிப்பீடு';
+$lang['Allow user customization'] = 'பயனர் தனிபயனாக்கத்திற்கு அனுமதிக்கிறது';
+$lang['Allow user registration'] = 'பயனர் பதிவுசெய்தல் அனுமதிக்கிறது';
+$lang['Allow users to delete their own comments'] = 'பயனர்கள் தங்கள் சொந்த கருத்துக்களையும் நீக்க அனுமதிக்கிறது';
+$lang['All optimizations have been successfully completed.'] = 'அனைத்து உகந்ததாக்கல்களை  வெற்றிகரமாக முடிக்கப்பட்டது.';
+$lang['Allow users to edit their own comments'] = 'பயனர்கள் தங்கள் சொந்த கருத்துரைகளை திருத்த அனுமதிக்கின்றன';
+$lang['Allowed file types: %s.'] = 'அனுமதிக்கப்பட்ட கோப்பு வகைகள்:% கள்.';
+$lang['An information email was sent to group "%s"'] = 'தகவல் மின்னஞ்சல் அனுப்பப்பட்டது குழுக்களுக்கு "% s"';
+$lang['Anomaly'] = 'நெறி பிறழ்வு';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'வலைத்தலைமைகள் மட்டும் இந்த தாவலை பார்க்க முடியும்,
+ நிர்வாகிகள் இல்லை.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'துவாரம் ஒரு சக்திவாய்ந்த கருவியாக உள்ளது படங்களை துல்லியமாக்க மற்றும் மேக் மீது பாரிய நூலகங்கள் நிர்வகிக்க.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'இடைவெளியில் தனித்தெடுத்த நிறம் நிபுணத்துவ புகைப்படக்காரர்கள் வடிவமைக்கப்பட்டுள்ளது
+iPhoto எளிமையாக.';
+$lang['Applications'] = 'பயன்பாடுகள்';
+$lang['Apply action'] = 'செயலை பயன்படுத்து';
+$lang['Apply selected corrections'] = 'தெரிவுசெய்யப்பட்ட திருத்தங்களை பயன்படுத்து';
+$lang['Apply to sub-albums'] = 'துணை ஆல்பங்களை பயன்படுத்து';
+$lang['An error has occured during upgrade.'] = 'ஒரு பிழை ஏற்பட்டுள்ளது மேம்படுத்தும் போது .';
+$lang['An error occured during extraction (%s).'] = 'ஒரு பிழை நிகழ்ந்தது கோப்புகள் (% கள் ) பிரித்தெடுக்கும்
+பொழுது.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'பிரித்தெடுக்கும் பொழுது ஒரு பிழை ஏற்பட்டுள்ளது.உங்கள் piwigo நிறுவல் கோப்பு அனுமதிகளை சரிபார்க்கவும்.<br>
+ <a href="%s">பதிகை காட்ட இங்கே கிளிக் செய்யவும்</a>.';
+?>
Index: /tags/2.6.0RC1/language/ta_IN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ta_IN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ta_IN/common.lang.php	(revision 25596)
@@ -0,0 +1,423 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: தமிழ் [IN]
+Version: 2.5.1
+Language URI: http://piwigo.org/ext/extension_view.php?eid=638
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = 'தமிழ்';
+$lang_info['country'] = 'இந்தியா';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'ta';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d ஆல்பம் புதுப்பிக்கப்பட்டது';
+$lang['%d albums updated'] = '%d ஆல்பங்கள் மேம்படுத்தப்பட்டது';
+$lang['%d comment to validate'] = '%d கருத்து பரிசீலிக்கப்படுகிறது';
+$lang['%d comment'] = '%d கருத்து';
+$lang['%d comments to validate'] = '%d கருத்து பரிசீலிக்கப்படுகிறது';
+$lang['%d comments'] = '%d கருத்துரைகள்';
+$lang['%d hit'] = '%d ஹிட்';
+$lang['%d hits'] = '%d ஹிட்ஸ்';
+$lang['%d Kb'] = '%d கேபி';
+$lang['%d new comment'] = '%d புதிய கருத்து';
+$lang['%d new comments'] = '%d புதிய கருத்துக்கள்';
+$lang['%d new photo'] = '%d புதிய புகைப்படம்';
+$lang['%d new photos'] = '%d புதிய புகைப்படங்கள்';
+$lang['%d new user'] = '%d புதிய உறுப்பினர்';
+$lang['%d new users'] = '%d புதிய உறுப்பினர்கள்';
+$lang['%d photo is also linked to current tags'] = '%d புகைப்படங்களுக்கும் தற்போதைய குறிச்சொற்கள் இணைக்கப்பட்டது';
+$lang['%d photo'] = '%d புகைப்படம்';
+$lang['%d photos are also linked to current tags'] = '%d புகைப்படங்களுக்கும் தற்போதைய குறிச்சொற்கள் இணைக்கப்பட்டது';
+$lang['%d photos'] = '%d புகைப்படங்கள்';
+$lang['%d rates'] = '%d மதிப்பீடுகள்';
+$lang['(!) This comment requires validation'] = '(!)இந்தக் கருத்துக்கு பரிசீலனை தேவைப்படுகிறது';
+$lang['... or browse your empty gallery'] = '... அல்லது உங்களுடைய காலியான ஆல்பத்தில் உலவு';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... அல்லது தயவு செய்து இந்த செய்தியை செயலிழக்க செய்யவும், நான் என் வழியில் கண்டுகொள்கிறேன்';
+$lang['A comment on your site'] = 'உங்கள் தளத்திற்கு ஒரு கருத்து வந்துள்ளது';
+$lang['About Piwigo'] = 'Piwigo பற்றி';
+$lang['About'] = 'பற்றி';
+
+
+$lang['Search for Author'] = 'ஒரு பதிவருக்கான தேடல்';
+$lang['Search for all terms'] = 'அனைத்து ஒப்பந்தத்திலிருந்து தேடவும்';
+$lang['Search for any term'] = 'ஏதாவது ஒப்பந்தத்திலிருந்து தேடவும்';
+$lang['Search for words'] = 'வார்த்தைகள் தேடவும்';
+$lang['Search in albums'] = 'ஆல்பங்களில் தேடவும்';
+$lang['Search in sub-albums'] = 'துணை ஆல்பங்களில் தேடவும்';
+$lang['Search results'] = 'தேடல் முடிவுகள்';
+$lang['Search rules'] = 'கட்டளை விதி தேடல்';
+$lang['Search tags'] = 'குறிச்சொற்கள் தேடல்';
+$lang['Send my connection settings by email'] = 'மின்னஞ்சல் மூலம் என் இணைப்பு அமைப்புகள் அனுப்பு';
+$lang['Sent by'] = 'அனுப்பியர்';
+$lang['Show file metadata'] = 'மேல்நிலை தரவு கோப்பைக் காட்டு';
+$lang['Show latest comments first'] = 'முதலில் சமீபத்திய கருத்துக்கள் காட்டு';
+$lang['Show number of comments'] = 'கருத்துரைகள் எண்ணிக்கை காட்டு';
+$lang['Show number of hits'] = 'ஹிட் எண்ணிக்கைகள் காட்டு';
+$lang['Show oldest comments first'] = 'முதலில் பழய கருத்துக்கள் காட்டு';
+$lang['Since'] = 'தொடங்கி';
+$lang['Someone requested that the password be reset for the following user account:'] = 'யாரோ கடவுச்சொல்லை பின்வரும் பயனர் கணக்கை மீட்டமைக்க வேண்டும் என்று கேட்டுள்ளார்:';
+$lang['Sort by'] = 'வரிசைப்படுத்து';
+$lang['Sort order'] = 'வரிசை அமைப்பு';
+$lang['Recent albums'] = 'சமீபத்திய ஆல்பங்கள்';
+$lang['Recent period'] = 'சமீப காலம்';
+$lang['Recent period must be a positive integer value'] = 'சமீப காலத்தில் ஒரு நேர்மறையான முழு மதிப்பு இருக்க வேண்டும்';
+$lang['Recent photos'] = 'சமீபத்திய புகைப்படங்கள்';
+$lang['Redirection...'] = 'திருப்பிவிடுகிறது ...';
+$lang['Reduce diaporama speed'] = 'வில்லைக்காட்சி வேகத்தைக் குறைக்க';
+$lang['Register'] = 'பதிவுசெய்';
+$lang['Registration'] = 'பதிவு செய்தல்';
+$lang['Registration of %s'] = 'பதிவு செய்தது %s';
+$lang['Related tags'] = 'தொடர்புடைய குறிச்சொற்கள்';
+$lang['Repeat the slideshow'] = 'வில்லைக்காட்சி மீண்டும் இயக்கு';
+$lang['Requested album does not exist'] = 'கோரப்பட்ட ஆல்பம் இல்லை';
+$lang['Requested tag does not exist'] = 'கோரப்பட்ட குறிச்சொல் இல்லை';
+$lang['Reset'] = 'மீட்டமை';
+$lang['Reset to default values'] = 'இயல்பிருப்பு மதிப்புக்கு மீட்டமை';
+$lang['Retrieve password'] = 'கடவுச்சொல்லை மீட்டெடுக்க';
+$lang['Return to home page'] = 'முதல் பக்கத்திற்கு திரும்பு';
+$lang['SQL queries in'] = 'SQL வினவல்';
+$lang['Search'] = 'தேடு';
+$lang['Search by date'] = 'தேதி வாரியாக தேடு';
+$lang['Piwigo Help'] = 'Piwigo உதவி';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo ஒரு சரிசெய்யமுடியாத பிழை ஏற்பட்டுள்ளது';
+$lang['Play of slideshow'] = 'வில்லைக்காட்சி இயக்கு';
+$lang['Please enter your username or email address.'] = 'உங்கள் பயனர் பெயர் அல்லது மின்னஞ்சல் முகவரியை உள்ளிடவும்.';
+$lang['Please, enter a login'] = 'தயவுசெய்து, ஒரு உள்நுழைவு உள்ளிடுக';
+$lang['Post date'] = 'பதிந்த தேதி';
+$lang['Posted on'] = 'பதிவிட்டவர்';
+$lang['Powered by'] = 'உரிமையானவர்';
+$lang['Preferences'] = 'விருப்பங்கள்';
+$lang['Previous'] = 'முந்தைய';
+$lang['Profile'] = 'சுயவிவரம்';
+$lang['Quick connect'] = 'விரைவு இணைப்பு';
+$lang['Quick search'] = 'விரைவு தேடல்';
+$lang['RSS feed'] = 'RSS ஓடை';
+$lang['Random photos'] = 'வரிசையற்ற புகைப்படங்கள்';
+$lang['Rank'] = 'தரம்';
+$lang['Rate this photo'] = 'இந்த புகைப்படத்தை மதிப்பிடு';
+$lang['Rating score'] = 'மதிப்பு வரையீடு';
+$lang['Rating score, high &rarr; low'] = 'மதிப்பு வரையீடு, அதிகம் &rarr; குறைவு';
+$lang['Rating score, low &rarr; high'] = 'மதிப்பு வரையீடு, குறைவு &rarr; அதிகம்';
+$lang['Number of photos per page'] = 'ஒரு பக்கத்திற்கான புகைப்படங்களின் எண்ணிக்கை';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'எண் அடையாளங்காட்டி, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'எண் அடையாளங்காட்டி, 9 &rarr; 1';
+$lang['Original'] = 'அசல்';
+$lang['Original dimensions'] = 'அசல் பரிமாணங்கள்';
+$lang['Page generated in'] = 'உருவாக்கப்பட்ட பக்கத்தில்';
+$lang['Page not found'] = 'பக்கம் கிடைக்கப்பெறவில்லை';
+$lang['Password'] = 'கடவுச்சொல்';
+$lang['Password Reset'] = 'கடவுச்சொல்லை மீட்டமை';
+$lang['Password forgotten'] = 'கடவுச்சொல்லை மறந்துவிட்டேன்';
+$lang['Password reset is not allowed for this user'] = 'கடவுச்சொல் மீட்டமைக்க இந்த பயனருக்கு அனுமதி இல்லை';
+$lang['Password: %s'] = 'கடவுச்சொல்: %s';
+$lang['Pause of slideshow'] = 'வில்லைக்காட்சி இடை நிறுத்தம்';
+$lang['Permalink for album not found'] = 'ஆல்பத்திற்கு நிரந்தரத் தொடுப்பு காணவில்லை';
+$lang['Photo sizes'] = 'புகைப்படங்களின் அளவுகள்';
+$lang['Photo title, A &rarr; Z'] = 'புகைப்பட அளவு, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'புகைப்பட அளவு, Z &rarr; A';
+$lang['Photos only RSS feed'] = 'RSS ஓடை புகைப்படங்கள் மட்டும்';
+$lang['Photos posted within the last %d day.'] = 'புகைப்படங்கள் கடந்  %d நாளில் பதிவிடப்பட்டது';
+$lang['Photos posted within the last %d days.'] = 'புகைப்படங்கள் கடந்  %d நாட்களில் பதிவிடப்பட்டது';
+$lang['Keyword'] = 'திறவுச் சொல்';
+$lang['Kind of date'] = 'தேதி வகையான';
+$lang['Language'] = 'மொழி';
+$lang['Last'] = 'இறுதி';
+$lang['Links'] = 'இணைப்புகள்';
+$lang['Login'] = 'உள்நுழை';
+$lang['Logout'] = 'வெளியேறு';
+$lang['Manage this user comment: %s'] = 'இந்த பயனர் கருத்தை மேலாண்மை செய்: %s';
+$lang['Manual sort order'] = 'கைமுறை வரிசைப்படுத்து';
+$lang['Menu'] = 'பட்டியல்';
+$lang['Mobile'] = 'மொபைல்';
+$lang['Most visited'] = 'அதிகம் பார்வையிடப்பட்டது';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'புதிய %s';
+$lang['New password'] = 'புதிய கடவுச்சொல்';
+$lang['Next'] = 'அடுத்து';
+$lang['No'] = 'இல்லை';
+$lang['Not repeat the slideshow'] = 'வில்லைக்காட்சியை திரும்பக் காட்ட வேண்டாம்.';
+$lang['Notification'] = 'அறிவிப்பு';
+$lang['Number of items'] = 'உருப்படிகளின் எண்ணிக்கை';
+$lang['First'] = 'முதல்';
+$lang['Forbidden'] = 'தடை செய்';
+$lang['Forgot your password?'] = 'உங்கள் கடவுச்சொல்லை மறந்துவிட்டீர்களா?';
+$lang['Go through the gallery as a visitor'] = 'காட்சியகத்தை ஒரு பார்வையாளர் போல் நடத்திச் செல்லவும் ';
+$lang['Hello'] = 'வணக்கம்';
+$lang['Hello %s,'] = 'வணக்கம் %s,';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'வணக்கம் %s, உங்கள் புகைப்படத் தொகுப்பு காலியாக உள்ளது!';
+$lang['Help'] = 'உதவி';
+$lang['Here are your connection settings'] = 'இங்கு உங்கள் இணைப்பு அமைப்பு உள்ளது';
+$lang['Home'] = 'இல்லம்';
+$lang['I want to add photos'] = 'நான் புகைப்படங்கள் சேர்க்க வேண்டும்';
+$lang['IP: %s'] = 'ஐபி: %s';
+$lang['IPTC Metadata'] = 'IPTC மேல்நிலை தரவு';
+$lang['Identification'] = 'அடையாளம்';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'இது தவறு என்றால், இந்த மின்னஞ்சல் புறக்கணிக்கவும், எதுவும் நடக்காது.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'நீங்கள் தவறுதலாக இந்த மின்னஞ்சல் வந்துள்ளது நினைத்தால், எங்களைத் தொடர்பு கொள்க %s';
+$lang['Invalid key'] = 'செல்லாத விசை';
+$lang['Invalid password!'] = 'கடவுச்சொல்லை தவறானது!';
+$lang['Invalid username or email'] = 'தவறான பயனர்பெயர் அல்லது மின்னஞ்சல்';
+$lang['Edit'] = 'திருத்து';
+$lang['Edit a comment'] = 'ஒரு கருத்தை திருத்து';
+$lang['Email address'] = 'மின்னஞ்சல் முகவரி';
+$lang['Email address is mandatory'] = 'மின்னஞ்சல் முகவரி அவசியமானதாகும்';
+$lang['Email address is missing. Please specify an email address.'] = 'மின்னஞ்சல் முகவரி இல்லை. ஒரு மின்னஞ்சல் முகவரியை குறிப்பிடவும்.';
+$lang['Email: %s'] = 'மின்னஞ்சல்: %s';
+$lang['Empty query. No criteria has been entered.'] = 'வெற்றுக் கேள்வி. எந்த வரன்முறையும் உள்ளிடப்படவில்லை.';
+$lang['End-Date'] = 'முடிவு தேதி';
+$lang['Enter your new password below.'] = 'கீழே உங்கள் புதிய கடவுச்சொல்லை உள்ளிடவும்.';
+$lang['Enter your personnal informations'] = 'உங்கள் தனிப்பட்ட தரவை உள்ளிடவும்';
+$lang['Error sending email'] = 'மின்னஞ்சல் அனுப்பும் பொழுது பிழை';
+$lang['Expand all albums'] = 'அனைத்து ஆல்பங்கள் விரிவாக்கு';
+$lang['Favorites'] = 'பிடித்தவை';
+$lang['File'] = 'கோப்பு';
+$lang['File name'] = 'கோப்பின் பெயர்';
+$lang['File name, A &rarr; Z'] = 'கோப்பின் பெயர்,  A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'கோப்பின் பெயர், Z &rarr; A';
+$lang['Filesize'] = 'கோப்பு அளவு';
+$lang['Filter'] = 'வடிகட்டி';
+$lang['Filter and display'] = 'வடிகட்டி மற்றும் காட்சி';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'குக்கீகள் உங்கள் உலாவியில் தடுக்கப்பட்டது அல்லது ஒத்துப்போகாது. நீங்கள் குக்கீகளை உள்நுழைய செயல்படுத்த வேண்டும்';
+$lang['Create a new account'] = 'ஒரு புதிய கணக்கை உருவாக்க';
+$lang['Created on'] = 'அன்று உருவாக்கப்பட்டது';
+$lang['Creation date'] = 'உருவாக்கிய தேதி';
+$lang['Current password is wrong'] = 'தற்போதைய கடவுச்சொல் தவறு';
+$lang['Customize'] = 'தனிப்பயனாக்கு';
+$lang['Date'] = 'தேதி';
+$lang['Date created, new &rarr; old'] = 'தேதி உருவாக்கப்பட்டது, புதிய &rarr; பழைய';
+$lang['Date created, old &rarr; new'] = 'தேதி உருவாக்கப்பட்டது, பழைய &rarr; புதிய';
+$lang['Date posted, new &rarr; old'] = 'பதிவிடப்பட்ட தேதி, புதிய &rarr; பழைய';
+$lang['Date posted, old &rarr; new'] = 'பதிவிடப்பட்ட தேதி, பழைய &rarr; புதிய ';
+$lang['Default'] = 'இயல்பிருப்பு';
+$lang['Delete'] = 'நீக்கு';
+$lang['Desktop'] = 'மேசைத்தளம்';
+$lang['Dimensions'] = 'பரிமானங்கள்';
+$lang['Display'] = 'காட்சி';
+$lang['Download'] = 'பதிவிறக்கம்';
+$lang['Download this file'] = 'இந்த கோப்பை பதிவிறக்கு';
+$lang['EXIF Metadata'] = 'EXIF மேல்நிலை தரவு';
+$lang['Each listed rule must be satisfied.'] = 'ஒவ்வொரு பட்டியலிடப்பட்ட அளவுகோல் திருப்தி';
+$lang['Bad request'] = 'தவறான கோரிக்கை';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'மோசமான நிலையில் பயனர் "விருந்தினர்", முன்னிருப்பு நிலை பயன்படுத்தப்படும். தயவு செய்து தளநிர்வாகிக்கு தெரியப்படுத்தவும்.';
+$lang['Best rated'] = 'சிறந்த மதிப்பிடப்பட்டது';
+$lang['Browser: %s'] = 'உலாவி: %s';
+$lang['Calendar'] = 'அட்டவணை';
+$lang['Change my password'] = 'என்னுடைய கடவுச்சொல்லை மாற்றுக';
+$lang['Check your email for the confirmation link'] = 'உறுதிப்படுத்தல் சுட்டிக்கு உங்கள் மின்னஞ்சலைப் பார்க்கவும்';
+$lang['Click here if your browser does not automatically forward you'] = 'உங்கள் உலாவி தானாக முன் அனுப்பவில்லை என்றால் இங்கு அழுத்தவும்
+';
+$lang['Click on the photo to see it in high definition'] = 'உயர் வரையறையாகப் பார்க்க படத்தின் மீது அழுத்தவும்';
+$lang['Close this window'] = 'இந்த சாளரத்தை மூடவும்';
+$lang['Comment'] = 'கருத்து';
+$lang['Comment by %s'] = 'கருத்திட்டவர் %s';
+$lang['Comment: %s'] = 'கருத்து: %s';
+$lang['Comments'] = 'கருத்துக்கள்';
+$lang['Complete RSS feed (photos, comments)'] = 'முழு செய்தியோடை (புகைப்படங்கள், கருத்துக்கள்)';
+$lang['Confirm Password'] = 'கடவுச்சொல் உறுதிப்படுத்து';
+$lang['Connected user: %s'] = 'இணைக்கப்பட்ட பயனர்: %s';
+$lang['Connection settings'] = 'இணைப்பு அமைப்புகள்';
+$lang['Contact'] = 'தொடர்புகொள்ள';
+$lang['Contact webmaster'] = 'தளநிர்வாகியை தொடர்புகொள்ள';
+$lang['%d rate'] = '%d மதிப்பீடு';
+$lang['2small'] = 'XXS - சிறிய';
+$lang['Accelerate diaporama speed'] = 'படவில்லைக்காட்சி வேகத்தை அதிகரிக்க';
+$lang['Add a comment'] = 'கருத்தைச் சேர்';
+$lang['Admin: %s'] = 'நிர்வாகி';
+$lang['Administration'] = 'நிர்வாகம்';
+$lang['Album'] = 'ஆல்பம்';
+$lang['Album results for'] = 'இந்த ஆல்பம் முடிவு';
+$lang['Album: %s'] = 'ஆல்பம்';
+$lang['Albums'] = 'ஆல்பங்கள்';
+$lang['All'] = 'அனைத்தும்';
+$lang['All tags'] = 'அனைத்து குறிச்சொற்கள்';
+$lang['An administrator must authorize your comment before it is visible.'] = 'உங்கள் பின்னூட்டம் தெரிவதற்கு தள நிர்வாகி உங்கள் கருத்தை அங்கீகரிக்க வேண்டும்.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood system : மற்றொரு கருத்தை முன் தயவு செய்து சிறிது நேரம் காத்திருக்கவும்';
+$lang['Any tag'] = 'ஏதாவது குறிச்சொல்';
+$lang['Are you sure?'] = 'நீங்கள் உறுதியாக இருக்கிறீர்களா?';
+$lang['At least one listed rule must be satisfied.'] = 'குறைந்தது ஒரு பட்டியலிடப்பட்ட அடிப்படை திருப்தி.';
+$lang['Author'] = 'ஆசிரியர்';
+$lang['Author: %s'] = 'ஆசிரியர்r: %s';
+$lang['Auto login'] = 'தானாக உள்நுழை';
+$lang['Specials'] = 'சிறப்புகள்';
+$lang['Submit'] = 'பதிவிடு';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'வெற்றிகரமாக பதிவு செய்யப்பட்டது, விரைவில் நீங்கள் உங்கள் இணைப்பு அமைப்புகளை ஒரு மின்னஞ்சலில் பெறுவீர்கள். வருக!';
+$lang['Tag'] = 'குறிச்சொல்';
+$lang['Tag results for'] = 'குறிச்சொல் முடிவுகள்';
+$lang['Tags'] = 'குறிச்சொற்கள்';
+$lang['Thank you for registering at %s!'] = 'பதிவு செய்ததற்கு நன்றி %s!';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS ஓடை இந்த வலைத்தளத்தில் இருந்து புதிய நிகழ்வுகளை அறிவிப்பு வழங்குகிறது: புதிய புகைப்படங்கள், மேம்படுத்தப்பட்ட ஆல்பங்கள், புதிய கருத்துக்கள். ஒரு RSS ஓடை படிப்பான் பயன்படுத்த வேண்டும்.';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'காட்சியகம் பராமரிப்பிற்காக பூட்டப்பட்டுள்ளது. தயவு செய்து பின்னர் திரும்பி வாருங்கள்.';
+$lang['The number of photos per page must be a not null scalar'] = 'பக்கத்திற்கான புகைப்படங்களின் எண்ணிக்கை சுழியமில்லாத முழு எண்ணாக இருக்க வேண்டும்';
+$lang['The passwords do not match'] = 'கடவுச்சொற்கள் பொருந்தவில்லை';
+$lang['This author modified following comment:'] = 'இந்த பதிவர் பின்வரும் கருத்தை மாற்றம் செய்துள்ளார்:';
+$lang['This author removed the comment with id %d'] = 'இந்த பதிவர் கருத்துடன் ஐடியையும் நீக்கியுள்ளார் %d';
+$lang['This login is already used by another user'] = 'இந்த உள்நுழைவு மற்றொரு பயனரால் ஏற்கனவே பயன்படுத்தப்படுகிறது';
+$lang['Thumbnails'] = 'சிறுபடவுருக்கள்';
+$lang['To reset your password, visit the following address:'] = 'உங்கள் கடவுச்சொல்லை மீட்டமைக்க, பின்வரும் முகவரியை பார்க்கவும்:';
+$lang['Unknown feed identifier'] = 'தெரியாத ஓடை அடையாளங்காட்டி';
+$lang['Unknown identifier'] = 'தெரியாத அடையாளங்காட்டி';
+$lang['Update your rating'] = 'உங்கள் மதிப்பீட்டை புதுப்பிக்கவும்';
+$lang['User "%s" has no email address, password reset is not possible'] = 'பயனர் "%s" என்ற மின்னஞ்சல் முகவரி இல்லை, கடவுச்சொல்லை மீட்டமை முடியாது';
+$lang['this email address is already in use'] = 'இந்த மின்னஞ்சல் முகவரி ஏற்கனவே பயன்பாட்டில் உள்ளது';
+$lang['this login is already used'] = 'இந்த உள்நுழைவு ஏற்கனவே பயன்படுத்தப்படுகிறது';
+$lang['thumb'] = 'வில்லைப்படம்';
+$lang['today'] = 'இன்று';
+$lang['useful when password forgotten'] = 'ஒருவேளை கடவுச்சொல்லை மறந்துவிட்டால் பயனுள்ளதாக இருக்கும்';
+$lang['wrong date'] = 'தவறான தேதி';
+$lang['xlarge'] = 'XL - மிகப் பெரியது';
+$lang['xsmall'] = 'XS - மிகப் சிறியது';
+$lang['xxlarge'] = 'XXL - பிரம்மாண்டமான';
+$lang['photos posted during the last %d days'] = 'கடந்த %d நாட்களில் இடப்பட்ட புகைப்படங்கள்';
+$lang['posted after %s (%s)'] = 'பிறகு பதிவிடப்பட்டது %s (%s)';
+$lang['posted before %s (%s)'] = 'முன்னர் பதிவிடப்பட்டது %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'இடையே பதிவிடப்பட்டது %s (%s) மறும் %s (%s)';
+$lang['posted on %s'] = 'பதிவிடப்பட்டது %s';
+$lang['remove this tag from the list'] = 'பட்டியலில் இருந்து இந்த குறிச்சொல்லை நீக்க';
+$lang['representative'] = 'ஆல்பம் வில்லைப்படம்';
+$lang['return to normal view mode'] = 'சாதாரண காட்சி முறைக்குத் திரும்ப';
+$lang['return to the display of all photos'] = 'அனைத்து புகைப்படங்கள் காட்சிக்குத் திரும்ப';
+$lang['search'] = 'தேடுக';
+$lang['searched words : %s'] = 'தேடப்பட்ட சொற்கள் : %s';
+$lang['set as album representative'] = 'ஆல்பம் சிறுபடமாக இணைக்க';
+$lang['show tag cloud'] = 'குறிமேகச் சொற்களைக் காட்டு';
+$lang['slideshow'] = 'வில்லைக்காட்சி';
+$lang['small'] = 'S - சிறியது';
+$lang['square'] = 'சதுரம்';
+$lang['stop the slideshow'] = 'வில்லைக்காட்சியை நிறுத்து';
+$lang['the beginning'] = 'ஆரம்பத்தில்';
+$lang['the username must be given'] = 'பயனர் பெயர் தேவை';
+$lang['login mustn\'t start with a space character'] = 'உள்நுழைவு கண்டிப்பாக வெற்றிடத்துடன் துவங்கக் கூடாது';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'மின்னஞ்சல் முகவரி இதுபோன்று இருக்க வேண்டும் xxx@yyy.eee (example : jack@altern.org)';
+$lang['mandatory'] = 'கட்டளை';
+$lang['medium'] = 'M - நடுத்தர';
+$lang['month']['10'] = 'அக்டோபர்';
+$lang['month']['11'] = 'நவம்பர்';
+$lang['month']['12'] = 'டிசம்பர்';
+$lang['month']['1'] = 'ஜனவரி';
+$lang['month']['2'] = 'பிப்ரவரி';
+$lang['month']['3'] = 'மார்ச்';
+$lang['month']['4'] = 'ஏப்ரல்';
+$lang['month']['5'] = 'மே';
+$lang['month']['6'] = 'ஜூன்';
+$lang['month']['7'] = 'ஜுலை';
+$lang['month']['8'] = 'ஆகஸ்ட்';
+$lang['month']['9'] = 'செப்டம்பர்';
+$lang['no rate'] = 'மதிப்பீடு இல்லை';
+$lang['obligatory'] = 'கட்டளை';
+$lang['password updated'] = 'கடவுச்சொல் மேம்படுத்தப்பட்டது';
+$lang['photo'] = 'புகைப்படம்';
+$lang['display most visited photos'] = 'அதிகம் பார்வையிடப்பட்ட புகைப்படங்களைக் காட்சிப்படுத்து';
+$lang['display only recently posted photos'] = 'சமீபத்தில் பதிந்த புகைப்படங்களை மட்டும் காட்சிப்படுத்து';
+$lang['display photos linked to this tag'] = 'இந்த குறிச்சொல் இணைக்கப்பட்ட படங்களைக் காட்சிப்படுத்து';
+$lang['display recently updated albums'] = 'சமீபத்தில் புதுப்பிக்கப்பட்ட ஆல்பங்கள் காட்சிப்படுத்து';
+$lang['display this album'] = 'இந்த ஆல்பத்தைக் காட்சிப்படுத்து';
+$lang['display your favorites photos'] = 'உங்கள் அபிமான புகைப்படங்கள் காட்சிப்படுத்து';
+$lang['edit'] = 'திருத்து';
+$lang['excluded'] = 'விலக்கப்பட்டது';
+$lang['from %s to %s'] = 'இருந்து %s to %s';
+$lang['group by letters'] = 'எழுத்துக்கள் மூலம் குழு';
+$lang['guest'] = 'விருந்தினர்';
+$lang['html tags are not allowed in login'] = 'html குறிச்சொற்கள் உள்நுழைவுக்கு அனுமதி இல்லை';
+$lang['in %d sub-album'] = 'ல் %d துணை-ஆலப்ம்';
+$lang['in %d sub-albums'] = 'ல் %d துணை-ஆலப்ம்';
+$lang['in this album'] = 'இந்த ஆல்பத்தில்';
+$lang['included'] = 'உள்ளடக்கிய';
+$lang['large'] = 'L - பெரிது';
+$lang['last %d days'] = 'கடந்த %d நாட்கள்';
+$lang['letters'] = 'எழுத்துக்கள்';
+$lang['login mustn\'t end with a space character'] = 'உள்நுழைவு கண்டிப்பாக இறுதியில் வெற்றிடமாக முடியக்கூடாது';
+$lang['customize the appareance of the gallery'] = 'காட்சியகத் தோற்றத்தை தனிப்பயனாக்க';
+$lang['day']['0'] = 'ஞாயிறு';
+$lang['day']['1'] = 'திங்கள்';
+$lang['day']['2'] = 'செவ்வாய்';
+$lang['day']['3'] = 'புதன்';
+$lang['day']['4'] = 'வியாழன்';
+$lang['day']['5'] = 'வெள்ளி';
+$lang['day']['6'] = 'ஞாயிறு';
+$lang['delete all photos from your favorites'] = 'உங்கள் அபிமான அனைத்து புகைப்படங்களையும் நீக்க';
+$lang['delete this photo from your favorites'] = 'உங்கள் அபிமான அனைத்து புகைப்படங்களையும் நீக்க';
+$lang['descending'] = 'இறங்குமுகம்';
+$lang['display a calendar by creation date'] = 'உருவாக்கப்பட்ட தேதியாக நாட்காட்டியைக் காட்டு';
+$lang['display a calendar by posted date'] = 'பதிந்த தேதியாக நாட்காட்டியைக் காட்டு';
+$lang['display a set of random photos'] = 'சீரற்ற புகைப்படங்கள் ஒரு தொகுப்பாகக் காட்டு';
+$lang['display all photos in all sub-albums'] = 'அனைத்து துணை ஆல்பங்களின் அனைத்து புகைப்படங்களையும் காட்டு';
+$lang['display available tags'] = 'கிடைக்கக்கூடிய குறிச்சொற்களைக் காட்டு';
+$lang['display best rated photos'] = 'சிறந்த மதிப்பிடப்பட்ட புகைப்படங்களைக் காட்டு';
+$lang['display each day with photos, month per month'] = ' மாதத்திற்கு மாதம் ஒவ்வொரு நாளையும் படத்துடன் காட்டு';
+$lang['display last user comments'] = 'கடந்த பயனரின் கருத்துரைகளைக் காட்டு';
+$lang['display most recent photos'] = 'மிக சமீபத்திய புகைப்படங்களைக் காட்டு';
+$lang['Your Gallery Customization'] = 'உங்கள் காட்சியகம் தனிபயனாக்கத்திற்கு';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'உங்கள் கருத்து பதிவு செய்யப்படவில்லை ஏனெனில் சரிபார்த்தல் விதிகள் வெற்றி பெறவில்லை';
+$lang['Your comment has been registered'] = 'உங்கள் கருத்து பதிவுசெய்யப்பட்டது';
+$lang['Your favorites'] = 'உங்களுக்கு பிடித்தவை';
+$lang['Your password has been reset'] = 'உங்கள் கடவுச்சொல் மீட்டமைக்கப்பட்டது';
+$lang['Your username has been successfully changed to : %s'] = 'உங்கள் பயனர் பெயர் வெற்றிகரமாக மாற்றப்பட்டுள்ளது : %s';
+$lang['add this photo to your favorites'] = 'உங்களுக்குப் பிடித்ததாக இந்த புகைப்படத்தை சேர்க்க';
+$lang['all'] = 'அனைத்தும்';
+$lang['ascending'] = 'ஏறுமுகம்';
+$lang['author(s) : %s'] = 'பயனர்(கள்) : %s';
+$lang['available for administrators only'] = 'நிர்வாகிகளுக்கு மட்டுமே கிடைக்கும்';
+$lang['chronology_monthly_calendar'] = 'மாத நாட்காட்டி';
+$lang['chronology_monthly_list'] = 'மாதாந்திர பட்டியல்';
+$lang['chronology_weekly_list'] = 'வாராந்திர பட்டியல்';
+$lang['cloud'] = 'மேகம்';
+$lang['comment date'] = 'கருத்திட்ட தேதி';
+$lang['created after %s (%s)'] = 'பிறகு உருவாக்கப்பட்டது %s (%s)';
+$lang['created before %s (%s)'] = 'முன்னர் உருவாக்கப்பட்டது %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'இடையே உருவாக்கப்பட்டது %s (%s) மற்றும் %s (%s)';
+$lang['created on %s'] = 'உருவாக்கப்பட்டது %s';
+$lang['User comments'] = 'பயனர் கருத்துரைகள்';
+$lang['User: %s'] = 'பயனர்: %s';
+$lang['Username'] = 'பயனர் பெயர்';
+$lang['Username "%s" on gallery %s'] = 'கேலரியில் "%s" பயனர் பெயர் %s';
+$lang['Username is mandatory'] = 'பயனர்பெயர் அவசியமானதாகும்';
+$lang['Username modification'] = 'பயனர் பெயர் மாற்றம்';
+$lang['Username or email'] = 'பயனர் பெயர் அல்லது மின்னஞ்சல்';
+$lang['Username: %s'] = 'பயனர்பெயர்: %s';
+$lang['View'] = 'பார்க்க';
+$lang['View in'] = 'காண்க';
+$lang['Visits'] = 'வருகைகள்';
+$lang['Visits, high &rarr; low'] = 'வருகைகள், உயர் &rarr; குறைந்த';
+$lang['Visits, low &rarr; high'] = 'வருகைகள், குறைந்த &rarr; உயர்';
+$lang['Webmaster'] = 'தளநிறுவனர்';
+$lang['Week %d'] = 'வாரம் %d';
+$lang['Welcome'] = 'வருக';
+$lang['Welcome to your Piwigo photo gallery!'] = 'உங்களை Piwigo புகைப்படத் தொகுப்புக்கு வரவேற்கிறோம்!';
+$lang['Yes'] = 'ஆம்';
+$lang['You are not authorized to access the requested page'] = 'நீங்கள் கோரிய பக்கத்தை அணுக உங்களுக்கு அதிகாரம் இல்லை';
+$lang['You will receive a link to create a new password via email.'] = 'மின்னஞ்சல் வழியாக ஒரு புதிய கடவுச்சொல்லை உருவாக்க ஒரு இணைப்பை பெறுவீர்கள்.';
+$lang['Email'] = 'மின்னஞ்சல்';
+$lang['Go back to the album'] = 'மீண்டும்,ஆல்பம் செல்ல';
+$lang['Last Page'] = 'கடைசி பக்கம்';
+$lang['Website'] = 'இணையதளம்';
+$lang['Your website URL is invalid'] = 'உங்கள் வலைத்தளத்தின் URL தவறானது';
+$lang['First Page'] = 'முதல் பக்கம்';
+$lang['Password is missing. Please enter the password.'] = 'கடவுச்சொல் விடுபட்டுள்ளது. தயவு செய்து
+கடவுச்சொல்லை உள்ளிடவும்';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'கடவுச்சொல்லை உறுதிப்படுத்தல் விடுபட்டுள்ளது. தேர்ந்தெடுத்த கடவுச்சொல்லை உறுதிப்படுத்தவும்';
+?>
Index: /tags/2.6.0RC1/language/ta_IN/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ta_IN/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ta_IN/install.lang.php	(revision 25596)
@@ -0,0 +1,72 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'ஒரு மாற்று தீர்வு மேலே பெட்டியில் உரை நகலெடுத்து கோப்புகளை ஒட்டவும் உள்ளது."local/config/database.inc.php"(எச்சரிக்கை: database.inc.php மட்டும், textarea என்ன எந்த வரியை திரும்ப அல்லது இடைவெளி எழுத்து கொண்டிருக்க வேண்டும்)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'கட்டமைப்பு கோப்பு உருவாக்கம் local/config/database.inc.php தோல்வியடைந்தது.';
+$lang['Default gallery language'] = 'இயல்புநிலை கேலரி மொழி';
+$lang['Download the config file'] = 'Config கோப்பை பதிவிறக்க';
+$lang['Hope to see you back soon.'] = 'நீங்கள் விரைவில் திரும்பி பார்க்க நம்புகிறேன்';
+$lang['Host'] = 'host';
+$lang['Installation'] = 'நிறுவல்';
+$lang['It appears your webhost is currently running PHP %s.'] = 'இது உங்களது webhost தற்போது PHP% கள் இயக்கத்தில் தோன்றுகின்றது.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'இது பார்வையாளர்களுக்கு காண்பிக்கப்படும். இது இணைய நிர்வாகத்தில் அவசியம்';
+$lang['Just another Piwigo gallery'] = 'மற்றொரு Piwigo கேலரி';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'இதை ரகசியமாக வைத்து, இதை நீங்கள் நிர்வாகத்தில் பலகத்தை அணுகுவதற்கு உதவுகிறது';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'உதவி வேண்டுமா? <a உங்கள் கேள்வி கேட்க href="%s"> Piwigo செய்தி பலகை </ a>';
+$lang['Database configuration'] = 'தரவுத்தள உள்ளமைவை';
+$lang['Database name'] = 'தரவுத்தளத்தின் பெயர்';
+$lang['Database table prefix'] = 'தரவுத்தள அட்டவணைகள் முன்னிணைப்பு';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'சர்வர் இணைப்பு வெற்றி, ஆனால் தரவுத்தளத்தின் இணைப்பு சாத்தியம் இல்லை.';
+$lang['Congratulations, Piwigo installation is completed'] = 'வாழ்த்துக்கள், Piwigo நிறுவல், முடிக்கப்பட்டது';
+$lang['Can\'t connect to server'] = 'சர்வருடன் இணைக்க முடியவில்லை';
+$lang['Basic configuration'] = 'அடிப்படை கட்டமைப்பு';
+$lang['Admin configuration'] = 'நிர்வாகம் கட்டமைப்பு';
+$lang['webmaster login can\'t contain characters \' or "'] = 'வலை மேலாளரின் உள்நுழைவு எழுத்துக்கள் \' or " இல்லாமல் இருக்கலாம்';
+$lang['verification'] = 'சரிபார்த்தல்';
+$lang['user password given by your host provider'] = 'பயனர் கடவுச்சொல் உங்களுடைய host வழங்குநர் வழங்கப்பட்டது';
+$lang['user login given by your host provider'] = 'உங்களுடைய host வழங்குநர் வழங்கப்பட்ட பயனர் உள்நுழைவு';
+$lang['localhost or other, supplied by your host provider'] = 'localhost அல்லது வேறு வழங்கப்பட்ட உங்களுடைய host வழங்குநரை';
+$lang['please enter your password again'] = 'தயவுசெய்து மறுபடியும் உங்களுடைய கடவுச்சொல்லை உள்ளிடவும்';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ஆலோசனை தயங்க வேண்டாம் நம்முடைய கருத்துக்களம்
+எந்தவொரு உதவிக்கு.:% s';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'நீங்கள் புரவன் வழங்குநரிடம் ஆதரவு பார்க்கவும் மற்றும் பார்க்க வேண்டும் எப்படி நீங்கள் PHP 5 மூலம்  மாற்றலாம்.';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'நீங்கள் கட்டமைப்பு கோப்பினை பதிவிறக்கம் செய்யலாம்
+மற்றும் பதிவேற்றலாம் அது உங்களுடைய local/config நிறுவலின் கோப்பகத்தில்';
+$lang['also given by your host provider'] = 'மேலும் வழங்கப்பட்டஉங்களுடைய புரவன் வழங்குநரிடம்';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'தரவுத்தள அட்டவணையில் பெயரை முன்னொட்டாக (உங்களுடைய அட்டவணைகளை சிறப்பாக நிர்வகிக்க உதவும்)';
+$lang['enter a login for webmaster'] = 'தயவுசெய்து உள்ளிடவும் வலைமேலாளரின் பயனர்பெயர்';
+$lang['Welcome to your new installation of Piwigo!'] = 'வரவேற்கிறோம்
+உங்களுடைய புதிய Piwigo நிறுவல்! செய்ய';
+$lang['Welcome to my photo gallery'] = 'வரவேற்கிறேன்
+என்னுடைய புகைப்படம் கேலரிக்கு';
+$lang['Try to configure PHP 5'] = 'PHP 5 கட்டமைக்க முயற்சிக்கவும்';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'பார்வையாளர்கள் இந்த மின்னஞ்சலை பயன்படுத்தி தளத்தின் நிர்வாகியை தொடர்புகொள்ளவும்';
+$lang['User'] = 'பயனர்';
+$lang['Sorry!'] = 'வருந்துகிறேன்!';
+$lang['Start Install'] = 'நிறுவலை தொடங்கு';
+$lang['Password ']['confirm'] = 'கடவுச்சொல்லை [உறுதிப்படுத்தவும்].';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo PHP 5 கட்டமைக்க முடியவில்லை';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo முயற்சி செய்யலாம்
+ஒரு. htaccess கோப்பு உருவாக்குவதில் அல்லது மாற்றியமைப்பதன் மூலம் PHP 5 உங்கள் கட்டமைப்பு மாற';
+$lang['PHP 5 is required'] = 'PHP 5 தேவைப்படுகிறது';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'குறிப்பு நீங்களே உங்கள் கட்டமைப்பை மாற்ற செய்யலாம், மேலும் Piwigo மீண்டும் துவக்கவும்';
+?>
Index: /tags/2.6.0RC1/language/ta_IN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/ta_IN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/ta_IN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+தமிழ் [IN]
Index: /tags/2.6.0RC1/language/ta_IN/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/ta_IN/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/ta_IN/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Only administrator can run upgrade: please sign in below.'] = 'ஒரு நிர்வாகி மட்டும் தான் ஒரு மேம்படுத்தலை இயக்க முடியும்: கீழே நுழையுங்கள்.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'ஒரே சிறுபடங்களை முன்னொட்டு மற்றும் வலை மேலாளரின் மின்னஞ்சல் முகவரி முந்தைய கட்டமைப்பு இருந்து சேமிக்கப்பட்டது';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'ஒரு பராமரிப்பு சரிபார்ப்பு செய்யவும் [நிர்வாக> கருவிகள்> பராமரிப்பு] இல் உங்களுக்கு எந்த சிக்கல்களை தீர்க்க';
+$lang['SQL queries'] = 'SQL வினவல்கள்';
+$lang['Statistics'] = 'புள்ளி விவரம்';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'இந்த பக்கம் உங்கள் பழைய Piwigo பதிப்பு புதிய பதிப்பு தகவல் மேம்படுத்த முன்மொழிகிறது.மேம்படுத்தல் உதவி நினைக்கிறது
+உங்களுக்கு தற்போது <strong> வெளியீடு %s </strong> (அல்லது அதற்கு சமமான) இயங்குகிறது.';
+$lang['Upgrade informations'] = 'தகவலை மேம்படுத்தல்';
+$lang['Upgrade from version %s to %s'] = 'பதிப்பு% s இலிருந்து% s மேம்படுத்தல்';
+$lang['Upgrade'] = 'மேம்படுத்தல்';
+$lang['User permissions and group permissions have been erased'] = 'பயனர்கள் மற்றும் குழுக்களின் அனுமதிகள் நீக்கப்பட்டன';
+$lang['You do not have access rights to run upgrade'] = 'நீங்கள் மேம்படுத்தலை இயக்க சரியான அணுகல் இல்லை';
+$lang['total SQL time'] = 'மொத்த SQL நேரம்';
+$lang['total upgrade time'] = 'மொத்த மேம்படுத்தல் நேரம்';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'இல் <i>%s</i>, முன்பாக <b>?></b>, முன்பாக:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'ஒரு முன்னெச்சரிக்கையாக, பின்வரும் கருப்பொருள்கள் முடக்கப்பட்டிருக்கிறது. நீங்கள்  கண்டிப்பாக மேம்படுத்த கருப்பொருள்களை சரிபார்க்க வேண்டும் முன்பாக மறு செயலாக்க';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'ஒரு முன்னெச்சரிக்கையாக, பின்வரும் செருகுநிரல்கள் முடக்கப்பட்டிருக்கிறது.நீங்கள் அவற்றை மேம்படுத்த செயலாக்க மீண்டும் செருகுநிரல்களை செயலாக்க வேண்டும்
+';
+$lang['All sub-albums of private albums become private'] = 'அனைத்து துணை ஆல்பங்களின்
+தனியார் ஆல்பங்கள் தனியார் ஆக இருந்து';
+?>
Index: /tags/2.6.0RC1/language/th_TH/about.html
===================================================================
--- /tags/2.6.0RC1/language/th_TH/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/about.html	(revision 25596)
@@ -0,0 +1,13 @@
+<p>นี่คือระบบแกลลอรี่ของ Piwigo.</p>
+
+<p>Piwigo เป็นซอฟแวร์แกลอรี่รูปภาพสำหรับเว็บที่สร้างขึ้นโดยกลุ่มผู้ใช้และทีมนักพัฒนา. ซึ่งมาพร้อมกับส่วนขยายที่ปรับแต่งได้ง่าย เพราะ Piwigo คือซอร์ฟแวร์เปิด (Opensourse)</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">เยี่ยมชมเว็บไซต์ Piwigo</a></p>
+
+<p>แปลเป็นภาษาไทยและเรียบเรียงโดย (ตามลำดับตัวอักษร):
+
+<ul>
+<li><a href="http://piwigo.org/forum/profile.php?id=15276">Mr.Pradit Saenkaew</a></li>
+<li>Songchai</li>
+</ul>
+            .... ขอขอบคุณทีมแปลภาษา </p>
Index: /tags/2.6.0RC1/language/th_TH/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/th_TH/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/admin.lang.php	(revision 25596)
@@ -0,0 +1,959 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+
+$lang[' and %d virtual'] = " และ %d";
+$lang[' and %d virtuals'] = " และ %d";
+$lang['%d album including'] = "%d อัลบั้มที่กำลังรวม";
+$lang['%d album moved'] = "%d อัลบั้มที่ย้าย";
+$lang['%d albums including'] = "%d อัลบั้มที่กำลังรวม";
+$lang['%d albums moved'] = "%d อัลบั้มที่ย้าย";
+$lang['%d anomalies have been detected corrected.'] = "%d ความผิดปกติที่ได้ตรวจพบและแก้ไขแล้ว.";
+$lang['%d anomalies have been detected.'] = "%d ความผิดปกติที่ตรวจพบ.";
+$lang['%d anomalies have been ignored.'] = "%d ความผิดปกติที่ได้รับการละเว้น.";
+$lang['%d anomalies have not been corrected.'] = "%d ความผิดปกติที่ยังไม่ได้รับการแก้ไข.";
+$lang['%d anomaly has been corrected.'] = "%d ความผิดปกติที่ได้รับการแก้ไขแล้ว.";
+$lang['%d anomaly has been detected.'] = "%d ความผิดปกติที่ได้รับการตรวจแล้ว.";
+$lang['%d anomaly has been ignored.'] = "%d ความผิดปกติที่ถูกปฏิเสธ.";
+$lang['%d anomaly has not been corrected.'] = "%d ความผิดปกติไม่ได้รับการแก้ไข.";
+$lang['%d association'] = "%d กลุ่ม";
+$lang['%d associations'] = "%d กลุ่ม";
+$lang['%d group'] = "%d กลุ่ม";
+$lang['%d groups'] = "%d กลุ่ม";
+$lang['%d guest'] = "%d ผู้เยี่ยมชม";
+$lang['%d guests'] = "%d ผู้เยี่ยมชม";
+$lang['%d line filtered'] = "%d บรรทัดที่กรองแล้ว";
+$lang['%d lines filtered'] = "%d บรรทัดที่กรองแล้ว";
+$lang['%d mail was not sent.'] = "%d จดหมายที่ยังไม่ได้ส่ง.";
+$lang['%d mail was sent.'] = "%d จดหมายได้ส่งไปแล้ว.";
+$lang['%d mails were not sent.'] = "%d อีเมลที่ยังไม่ได้ส่ง.";
+$lang['%d mails were sent.'] = "%d อีเมลที่ได้ส่งแล้ว.";
+$lang['%d member'] = "%d สมาชิก";
+$lang['%d members'] = "%d สมาชิก";
+$lang['%d of %d photos selected'] = 'ได้เลือก %d รูปภาพ จากรูปภาพทั้งหมด %d รูปภาพ';
+$lang['%d parameter was updated.'] = "%d ตัวแปรที่ได้อัพเดต.";
+$lang['%d parameters were updated.'] = "%d ตัวแปรที่ได้อัพเดต.";
+$lang['%d photo was deleted'] = "%d รูป ได้ถูกลบแล้ว";
+$lang['%d photos uploaded'] = '%d รูป ได้ถูกอัพโหลดแล้ว';
+$lang['%d photos were deleted'] = "%d รูป ได้ถูกลบแล้ว";
+$lang['%d physical'] = " %d กายภาพ";
+$lang['%d physicals'] = " %d กายภาพ";
+$lang['%d tag'] = "%d แท็ก";
+$lang['%d tags'] = "%d แท็ก";
+$lang['%d user comment rejected'] = "%d ความคิดเห็นของผู้ใช้ที่ถูกปฏิเสธ";
+$lang['%d user comment validated'] = "%d ความคิดเห็นของผู้ใช้ที่ได้รับการตรวจสอบ";
+$lang['%d user comments rejected'] = "%d ความคิดเห็นของผู้ใช้ที่ถูกปฏิเสธ";
+$lang['%d user comments validated'] = "%d ความคิดเห็นของผู้ใช้ที่ได้รับการตรวจสอบ";
+$lang['%d user deleted'] = "%d ผู้ใช้งานที่ถูกลบ";
+$lang['%d user was not updated.'] = "%d ผู้ใช้งานที่ไม่ได้อัพเดตมูล.";
+$lang['%d user was updated.'] = "%d ผู้ใช้งานที่ได้อัพเดตข้อมูล";
+$lang['%d user'] = "%d ผู้ใช้งาน";
+$lang['%d users deleted'] = "%d ผู้ใช้งานที่ถูกลบ";
+$lang['%d users were not updated.'] = "%d ผู้ใช้งานที่ไม่ได้อัพเดต.";
+$lang['%d users were updated.'] = "%d ผู้ใช้งานที่ถูกลบ.";
+$lang['%d users'] = "%d ผู้ใช้งาน";
+$lang['%d waiting for validation'] = "%d กำลังรอการตวจสอบ";
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s จะต้องเข้าไปตั้งค่าไฟล์ โฟลเดอร์ Piwigoของคุณ/config/config.inc.php ให้ถูกต้อง";
+$lang['%s value is not correct file because exif are not supported'] = "%s ค่าไม่ถูกต้องเพราะระบบ Exif จะไม่สนับสนุน";
+$lang['+ Add an upload box'] = '+ เพิ่มกล่องอัพโหลด';
+$lang[', click on'] = ", คลิกที่";
+$lang['A new version of Piwigo is available.'] = "ตรวจพบเวอร์ชั่นใหม่ของ Piwigo.";
+$lang['Access type'] = "ประเภทการเข้าถึง";
+$lang['ACCESS_0'] = "ไม่จำกัดการเข้าถึง";
+$lang['ACCESS_1'] = "สามารถเข้าถึงได้ทั้งหมด";
+$lang['ACCESS_2'] = "การเข้าถึงเฉพาะผู้ใช้ที่ลงทะเบียน";
+$lang['ACCESS_3'] = "การเข้าถึงเฉพาะผู้ดูแลระบบ";
+$lang['ACCESS_4'] = "การเข้าถึงเฉพาะเว็บมาสเตอร์";
+$lang['ACCESS_5'] = "จำกัดทั้งหมด";
+$lang['Action'] = 'การกระทำ';
+$lang['Actions'] = "การกระทำ";
+$lang['Activate icon "%s"'] = 'เปิดใช้งานไอคอน "%s"';
+$lang['Activate Navigation Bar'] = 'เปิดใช้งานแถบเนวิเกเตอร์';
+$lang['Activate Navigation Thumbnails'] = 'เปิดใช้งานเนวิเกเตอร์รูปภาพขนาดย่อ';
+$lang['Activate'] = "เปิดใช้งาน";
+$lang['Activate icon "new" next to albums and pictures'] = 'เปิดใช้งานปุ่ม "สร้าง" ในอัลบั้มและรูปภาพต่อไป';
+$lang['Active Languages'] = 'ภาษาที่ได้เปิดใช้งาน';
+$lang['Active Plugins'] = 'ปลั๊กอินที่ได้เปิดใช้งาน';
+$lang['Active Themes'] = 'ธีมที่ได้เปิดใช้งาน';
+$lang['Add a criteria'] = 'เพิ่มเกณฑ์';
+$lang['Add a filter'] = 'เพิ่มตัวกรอง';
+$lang['Add a tag'] = "เพิ่มแท็ก";
+$lang['Add a user'] = "เพิ่มผู้ใช้งาน";
+$lang['Add a virtual album'] = "เพิ่มอัลบั้ม";
+$lang['Add another set of photos'] = 'เพิ่มรูปภาพอื่นอีก';
+$lang['Add detailed content'] = "เพิ่มรายละเอียดเนื้อหา";
+$lang['Add group'] = "เพิ่มกลุ่ม";
+$lang['Add New Language'] = 'เพิ่มภาษาใหม่';
+$lang['add new photos to caddie'] = "เพิ่มรูปภาพไปยัง Caddie";
+$lang['Add New Theme'] = "เพิ่มธีมใหม่";
+$lang['Add Photos'] = 'เพิ่มรูปภาพ';
+$lang['Add write access to the "%s" directory'] = 'เพิ่มเขียนการกำหนดสิทธิ์การเข้าถึง "%s" ไดเรกทอรี';
+$lang['Add'] = "เพิ่ม";
+$lang['Add/delete a permalink'] = "เพิ่ม/ลบ การเชื่อมโยง";
+$lang['added'] = "ที่เพิ่มแล้ว";
+$lang['Administration Home'] = 'หน้าการจัดการระบบ';
+$lang['Advanced features'] = "คุณสมบัติขั้นสูง";
+$lang['Album "%s" has been added'] = 'อัลบั้ม "%s" ได้ถูกเพิ่มแล้ว';
+$lang['Album "%s" now contains %d photos'] = 'อัลบั้ม "%s" ตอนนี้มีรูปทั้งหมด %d รูป';
+$lang['Album photos associated to the following albums: %s'] = "อัลบั้มรูปภาพนี้ได้เกี่ยวข้องกับอัลบั้ม: %s";
+$lang['Album list management'] = "การจัดการอัลบั้ม";
+$lang['Album manual order was saved'] = "อัลบั้มที่เลือกได้บันทึกแล้ว";
+$lang['Album name'] = 'ชื่ออัลบั้ม';
+$lang['Album updated successfully'] = "อัลบั้มได้อัพเดตเรียบร้อยแล้ว";
+$lang['albums added in the database'] = "อัลบั้มที่ได้เพิ่มเข้าไปในฐานข้อมูล";
+$lang['Albums authorized thanks to group associations'] = "อัลบั้มที่ได้อนุญาตจากกลุ่มสมาคม";
+$lang['Albums automatically sorted'] = 'อัลบั้มได้ถูกเรียงแบบอัติโนมัติ';
+$lang['albums deleted in the database'] = "อัลบั้มถูกลบออกจากฐานข้อมูลแล้ว";
+$lang['All %d photos are selected'] = 'ทั้งหมด %d รูปที่ได้เลือก';
+$lang['All optimizations have been successfully completed.'] = "การปรับแต่งให้เหมาะสมทั้งหมด ได้สำเร็จเรียบร้อยแล้ว.";
+$lang['all'] = "ทั้งหมด";
+$lang['Allow rating'] = "อนุญาตให้มีการให้คะแนน";
+$lang['Allow user customization'] = 'อนุญาตให้ผู้ใช้งานปรับแต่งการตั้งค่าส่วนตัว';
+$lang['Allow user registration'] = "อนุญาตให้มีการลงทะเบียนผู้ใช้งาน";
+$lang['Allow users to delete their own comments'] = "อนุญาตให้ผู้ใช้ลบความคิดเห็นของตัวเอง";
+$lang['Allow users to edit their own comments'] = "อนุญาตให้ผู้ใช้แก้ไขข้อคิดเห็นของตัวเอง";
+$lang['an error happened'] = "เกิดความผิดพลาด";
+$lang['An error occured during extraction (%s).'] = "เกิดความผิดพลาดไฟล์ (%s) ที่กำลังแตกไฟล์.";
+$lang['An information email was sent to group "%s"'] = "อีเมลรายละเอียดข้อมูลได้ส่งไปยังกลุ่ม \"%s\"";
+$lang['and'] = "และ";
+$lang['Anomaly'] = "ความผิดปกติ";
+$lang['Anyway only webmasters can see this tab and never administrators.'] = "เว็บมาสเตอร์เท่านั้น ที่สามารถมองเห็นแท็บนี้, แต่จำกัดการเข้าถึงสำหรับผู้ดูแลระบบ.";
+$lang['Apply action'] = 'นำไปใช้';
+$lang['Apply selected corrections'] = "ใช้การแก้ไขที่เลือก";
+$lang['Apply to sub-albums'] = "นำไปใช้ยัง อัลบั้ม-ย่อย";
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "คุณแน่ใจหรือว่าต้องการติดตั้งการอัพเกรดนี้? หากไม่ต้องการเวอร์ชั่นนี้ คุณสามารถถอนการติดตั้งนี้ได้.";
+$lang['Are you sure you want to delete this plugin?'] = "คุณแน่ใจหรือว่าต้องการลบปลั๊กอินนี้?";
+$lang['Are you sure you want to install this plugin?'] = "คุณแน่ใจหรือว่าต้องการติดตั้งปลั๊กอินนี้?";
+$lang['Associate to album'] = "เชื่อมโยงไปยังอัลบั้ม";
+$lang['associate to group'] = "เชื่อมโยงไปยังกลุ่ม";
+$lang['Associated'] = "เชื่อมโยง";
+$lang['Authorize users to add comments on selected albums'] = "อนุมัติให้ผู้ใช้เพิ่มความคิดเห็นเกี่ยวกับอัลบั้มที่เลือก";
+$lang['Authorized'] = 'ได้รับอนุญาต';
+$lang['Automatic correction'] = "การแก้ไขอัตโนมัติ";
+$lang['automatic order'] = 'คำสั่งอัตโนมัติ';
+$lang['Available only with HTML format'] = "ใช้ได้เฉพาะกับรูปแบบ HTML";
+$lang['Average rate'] = "คะแนนเฉลี่ย";
+$lang['average time'] = "เวลาเฉลี่ย";
+$lang['Batch Manager'] = 'การจัดการระบบ';
+$lang['between'] = "ระหว่าง";
+$lang['Bound Theme'] = 'ธีมที่เลือกไว้';
+$lang['By %s'] = 'โดย %s';
+$lang['By rank'] = 'โดยการจัดอันดับ';
+$lang['Caddie management'] = "การจัดการ Caddie";
+$lang['Caddie'] = "Caddie";
+$lang['Cannot delete the old permalink !'] = "ความคิดเห็นเก่าไม่สามารถลบได้!";
+$lang['Can\'t connect to server.'] = "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์ได้.";
+$lang['Can\'t create temporary file.'] = "แฟ้มชั่วคราวไม่สามารถสร้างได้.";
+$lang['Can\'t download archive.'] = "แฟ้มที่ถูกบีบอัดไม่สามารถดาวน์โหลดได้.";
+$lang['Can\'t read or extract archive.'] = "แฟ้มที่ถูกบีบอัดไม่สามารถอ่านหรือแตกไฟล์ได้.";
+$lang['Change Admin Colors'] = 'สลับโหมดสี';
+$lang['Check all'] = "เลือกทั้งหมด";
+$lang['Check automatic corrections'] = "ตรวจสอบการแก้ไขอัตโนมัติ";
+$lang['Check for updates'] = "ตรวจสอบการอัพเดต";
+$lang['Check for upgrade failed for unknown reasons.'] = "ไม่สามารถตรวจสอบการอัพเดตได้ เนื่องจากอาจไม่มีการเชื่อมต่ออินเตอร์เน็ต.";
+$lang['Check for upgrade'] = "ตรวจสอบการอัพเกรด";
+$lang['Check integrity'] = "ตรวจสอบความสมบูรณ์";
+$lang['Choose an action'] = 'เลือกการการดำเนินการ';
+$lang['Choose an option'] = "เลือกตัวเลือก";
+$lang['Classic display'] = "แสดงผลแบบธรรมดา";
+$lang['clean'] = "ล้าง";
+$lang['Comments for all'] = "สำหรับทุกความคิดเห็น";
+$lang['Complementary mail content'] = 'เนื้อหาประกอบในอีเมล';
+$lang['Complementary mail content'] = "เนื้อหาเมล";
+$lang['Configuration'] = "การปรับแต่ง";
+$lang['confirm'] = "ยืนยัน";
+$lang['Continue processing treatment'] = "ดำเนินกระบวนการแบบต่อเนื่อง";
+$lang['Correction applied with error'] = "การแก้ไขได้นำไปใช้กับข้อผิดพลาด";
+$lang['Correction applied with success'] = "การแก้ไขได้สำเร็จแล้ว";
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = "การแก้ไขความผิดปกติจะใช้เวลานานและอาจไม่สำเร็จ";
+$lang['Correction'] = "การแก้ไข";
+$lang['create a new album'] = 'สร้างอัลบั้มใหม่';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'สร้าง "%s" ไว้ที่โฟลเดอร์ Piwigo ของคุณ หรือ Root ที่เดียวกับที่ Piwigo ได้ติดตั้งอยู่';
+$lang['Create this site'] = "สร้างที่อยู่นี้";
+$lang['created'] = "สร้าง";
+$lang['Current name'] = "ชื่อปัจจุบัน";
+$lang['Database synchronization with files'] = "การซิงโคไนซ์ฐานข้อมูลกับไฟล์";
+$lang['Database'] = "ฐานข้อมูลระบบ";
+$lang['Date'] = "วันที่";
+$lang['Day'] = "วัตถุ";
+$lang['Deactivate'] = "ยกเลิกการใช้งาน";
+$lang['Deactivate all'] = "ยกเลิกการใช้งานทั้งหมด";
+$lang['Default display'] = "แสดงผลค่าเริ่มต้น";
+$lang['Default photos order'] = "จัดระเบียบรูปภาพตามค่าปกติ";
+$lang['Default user cannot be deleted'] = "ผู้ใช้งานไม่สามารถลบได้";
+$lang['Default user does not exist'] = "ผู้ใช้งานไม่มีอยู่";
+$lang['default values'] = "ค่าเริ่มต้น";
+$lang['default'] = "ภาษาเริ่มต้น";
+$lang['delete album'] = "ลบอัลบั้ม";
+$lang['Delete orphan tags'] = 'ลบแท็กที่ไม่ได้ถูกใช้';
+$lang['delete photo'] = 'ลบรูปภาพ';
+$lang['Delete Representant'] = "ลบรูปภาพขนาดย่อของอัลบั้ม";
+$lang['Delete selected photos'] = "ลบรูปภาพที่เลือก";
+$lang['Delete selected tags'] = "ลบแท็กที่เลือก";
+$lang['Delete selected users'] = "ลบผู้ใช้งานที่เลือก";
+$lang['Delete this language'] = 'ลบภาษานี้';
+$lang['delete this site and all its attached elements'] = "ลบที่อยู่นี้และข้อมูลทั้งหมดที่เกี่ยวข้อง";
+$lang['Delete this theme'] = 'ลบธีมนี้';
+$lang['delete'] = "ลบ";
+$lang['Deleted on'] = "ถูกลบเมื่อ";
+$lang['deleted'] = "ถูกลบ";
+$lang['Deletions'] = "การลบ";
+$lang['Deny selected groups'] = "ปฏิเสธกลุ่มที่เลือก";
+$lang['Deny selected users'] = " ปฏิเสธผู้ใช้งานที่เลือก";
+$lang['Description'] = "บรรยายรายละเอียด";
+$lang['Detailed informations'] = "รายละเอียดข้อมูล";
+$lang['directories + files'] = "ไดเรกทอรี่ + ไฟล์";
+$lang['Directory does not exist'] = 'ไม่มีไดเรกทอรี่อยู่';
+$lang['Directory'] = "ไดเรกทอรี่";
+$lang['Discover album:'] = "ดูอัลบั้ม:";
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = "แสดงข้อมูลทั้งหมด (ที่ได้เพิ่มทั้งในอัลบั้มและภาพถ่าย, และในอัลบั้มและรูปภาพที่ได้ถูกลบไปแล้วด้วย)";
+$lang['Display options'] = "ตัวเลือกการแสดงผล";
+$lang['Dissociate from album'] = "แยกออกจากอัลบั้ม";
+$lang['dissociate from group'] = "แยกออกจากกลุ่ม";
+$lang['Dissociated'] = "ที่ได้แยก";
+$lang['Documentation'] = "เอกสารที่เกี่ยวข้อง";
+$lang['Does not represent'] = "ไม่แสดงภาพขนาดย่อสำหรับ";
+$lang['Download,'] = 'ดาวน์โหลด';
+$lang['Downloads'] = "ดาวน์โหลด";
+$lang['Drag to re-order'] = "คลิก-และ-ลาก เพื่อกำหนด";
+$lang['Drop into album'] = 'เลือกอัลบั้มรูป';
+$lang['Edit album permissions'] = "แก้ไขการเข้าถึงอัลบั้ม";
+$lang['Edit album'] = "แก้ไขอัลบั้ม";
+$lang['Edit photo information'] = "แก้ไขเพิ่มเติมข้อมูลรูปภาพ";
+$lang['Edit ranks'] = "แก้ไขอันดับ";
+$lang['Edit selected tags'] = "แก้ไขแท็กที่เลือก";
+$lang['Edit tags'] = "ไก้ไขแท็ก";
+$lang['Element type'] = "ชนิดของวัตถุ";
+$lang['Element'] = "วัตถุ";
+$lang['photos informations synchronized with files metadata'] = "รายละเอียดภาพถ่ายตรงกับข้อมูลเมตาไฟล์";
+$lang['Email administrators when a comment is deleted'] = "รายงานผู้ดูแลระบบทางอีเมล เมื่อความคิดเห็นถูกลบ";
+$lang['Email administrators when a comment is modified'] = "รายงานผู้ดูแลระบบทางอีเมล เมื่อความคิดเห็นถูกแก้ไขเปลี่ยนแปลง";
+$lang['Email admins when a comment requires validation'] = "รายงานผู้ดูแลระบบทางอีเมลเมื่อความคิดเห็น ที่จำเป็นต้องมีการตรวจสอบก่อน";
+$lang['Email admins when a new user registers'] = "รายงานผู้ดูระบบทางอีเมล เมื่อมีผู้ใช้ใหม่ที่ลงทะเบียน";
+$lang['Email admins when a valid comment is entered'] = "รายงานผู้ดูแลระบบทางอีเมล เมื่อมีความคิดเห็นแสดงเข้ามา";
+$lang['Email'] = "อีเมล";
+$lang['Environment'] = "ข้อมูลระบบ";
+$lang['Error list'] = "รายการข้อผิดพลาด";
+$lang['Error on file "%s" : %s'] = 'เกิดความผิดพลาดที่ไฟล์ "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = "เกิดความผิดพลาดเมื่อตอนกำลังส่งเมลไปยัง %s [%s].";
+$lang['Errors caption'] = "Errors legends";
+$lang['errors during synchronization'] = "เกิดความผิดพลาดในขณะที่กำลังซิงโคไนซ์";
+$lang['even already synchronized photos'] = "even already synchronized photos";
+$lang['Everybody'] = 'ทุกคน';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "เวลาการดำเนิน, จะต้องดำเนินการอีก [เวลาโดยประมาณ: %d วินาที].";
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = "เวลาการดำเนิน, จะต้องดำเนินการอีก [เวลาโดยประมาณ: %d วินาที].";
+$lang['Exif extension not available, admin should disable exif use'] = 'ระบบ Exif ไม่สามารถใช้งานได้, ผู้ดูแลระบบควรปิดการใช้งานระบบ Exif';
+$lang['existing album'] = 'อัลบั้มที่มีอยู่';
+$lang['Extend for templates'] = "ส่วนขยายแม่แบบ";
+$lang['Failed to write file to disk'] = 'ล้มเหลวในการเขียนแฟ้มไปยังดิสก์';
+$lang['File upload stopped by extension'] = 'ประเภทไฟล์นี้ได้ถูกห้ามอัพโหลด';
+$lang['File'] = "ชื่อไฟล์";
+$lang['File/directory read error'] = "เกิดความผิดพลาดในการอ่าน ไฟล์/ไดเรกทอรี่";
+$lang['Find a new representant by random'] = "Find a new random album thumbnail";
+$lang['first photo added on %s'] = "รูปภาพแรกถูกเพิ่มเมื่อ %s";
+$lang['for the file format'] = "สำหรับรูปแบบไฟล์";
+$lang['for this file format'] = "สำหรับรูปแบบไฟล์";
+$lang['Forbid this language to users'] = 'ยกเลิกการใช้งานภาษานี้สำหรับผู้ใช้งาน';
+$lang['Forbid this theme to users'] = "ยกเลิกการใช้งานธีมนี้สำหรับผู้ใช้งาน";
+$lang['Forbidden'] = "ไม่อนุญาต";
+$lang['Form'] = "จาก";
+$lang['FTP + Synchronization'] = 'FTP + Synchronization';
+$lang['Gallery title'] = "ชื่อแกลลอรี่";
+$lang['GD library is missing'] = "ไม่พบ GD ไลบรารี่";
+$lang['GD version'] = "GD เวอร์ชั่น";
+$lang['General statistics'] = "สถิติทั่วไป";
+$lang['Get Support on Piwigo Forum'] = 'ขอรับการสนับสนุนของ Piwigo จากฟอรั่ม Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation';
+$lang['global mode'] = "โหมดทั่วไป";
+$lang['Go to %s or %s for more informations'] = "ไปที่ %s หรือ %s เพื่อดูข้อมูลเพิ่มเติม";
+$lang['Go to'] = "ไปที่";
+$lang['Grant selected groups'] = "อนุญาตกลุ่มที่ได้เลือกไว้";
+$lang['Grant selected users'] = "อนุญาตผู้ใช้งานที่ได้เลือกไว้";
+$lang['group "%s" added'] = "กลุ่ม \"%s\" ได้ถูกเพิ่มแล้ว";
+$lang['group "%s" deleted'] = "กลุ่ม \"%s\" ได้ถูกลบแล้ว";
+$lang['group "%s" updated'] = "กลุ่ม \"%s\" ได้ถูกอัพเดตแล้ว";
+$lang['Group management'] = "การจัดการกลุ่ม";
+$lang['Group name'] = "ชื่อกลุ่ม";
+$lang['Group'] = "กลุ่ม";
+$lang['Groups'] = "กลุ่ม";
+$lang['Guest cannot be deleted'] = "ผู้เยี่ยมชมไม่สามารถลบได้";
+$lang['Guest Settings'] = 'ตั้งค่าผู้เยี่ยมชม';
+$lang['guest'] = "ผู้เยี่ยมชม";
+$lang['Guests'] = "ผู้เยี่ยมชม";
+$lang['height must be a number superior to'] = "ความสูงจะต้องเป็นค่าตัวเลขที่มากกว่า";
+$lang['Hello'] = "สวัสดี";
+$lang['Hello,'] = "สวัสดี,";
+$lang['Help Me'] = 'ช่วยเหลือ';
+$lang['Hide'] = "ซ่อน";
+$lang['High definition enabled'] = "การแสดงผลความละเอียดสูงได้ถูกเปิดใช้งานแล้ว";
+$lang['High definition'] = "ความละเอียดสูง";
+$lang['high'] = "ความสูง";
+$lang['History'] = "ประวัติ";
+$lang['Hit'] = "เข้าชม";
+$lang['Hour'] = "ชั่วโมง";
+$lang['Hoverbox display'] = "แสดงแบบกล่อง";
+$lang['If you encounter problems or have any question, please send a message to'] = "ถ้าคุณเจอปัญหา หรือมีคำถามใดๆ, โปรดส่งข้อความไปยัง";
+$lang['Ignore selected anomalies'] = "ปฏิเสธความผิดปกติที่ได้เลือกไว้";
+$lang['Image id'] = "ไอดี รูปภาพ";
+$lang['Image Quality'] = 'คุณภาพของรูป';
+$lang['Images manual order was saved'] = "ลำดับรูปภาพแบบกำหนดเองได้ถูกบันทึกแล้ว";
+$lang['Impossible automatic correction'] = "การตรวจแก้ไขโดยอัตโนมัตไม่สามารถทำได้";
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'ธีมนี้ไม่สามารถเปิดใช้งานได้, เนื่องจากธีมหลักขาดหายไป: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'การยกเลิกการใช้งานภาษานี้ไม่สามารถทำได้, เนื่องจากมีการใช้งานภาษานี้อยู่ โปรดกำหนดภาษาอื่นเพื่อใช้งานก่อน แล้วค่อยยกเลิกภาษาดังกล่าว.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'การยกเลิกการใช้งานภาษานี้ไม่สามารถทำได้, คุณต้องมีภาษาอย่างน้อยหนึ่งภาษาที่เปิดใช้งาน.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'การยกเลิกการใช้งานธีมนี้ไม่สามารถทำได้, คุณต้องมีธีมอย่างน้อยหนึ่งธีมที่เปิดใช้งาน.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'ธีมนี้ไม่สามารถลบได้, เพราะว่ามีธีมอื่นซึ่งได้ใช้งานอยู่กับมัน: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'ไฟล์การตั้งค่า php.ini ของคุณ, สามารถอัพโหลดไฟล์ได้ขนาดสูงสุด (%sB) ซึ่งมันขนาดใหญ่กว่าขนาดไฟล์สูงสุดที่อนุญาตให้โพส (%sB), คุณควจเปลี่ยนการตั้งค่านี้';
+$lang['Inactive Languages'] = 'ภาษาที่ไม่ได้เปิดใช้งาน';
+$lang['Inactive Plugins'] = 'ปลั๊กอินที่ไม่ได้เปิดใช้งาน';
+$lang['Inactive Themes'] = 'ธีมที่ไม่ได้เปิดใช้งาน';
+$lang['include child albums'] = 'รวมอัลบั้ม';
+$lang['Include display of recent photos grouped by dates'] = "รวมถึงการแสดงของภาพถ่ายเมื่อไม่นานตามวันที่";
+$lang['Information data registered in database'] = "ข้อมูลได้ถูกบันทึกลงฐานข้อมูลแล้ว";
+$lang['Informations'] = "ข้อมูลพื้นฐาน";
+$lang['Install on your computer,'] = 'ติดตั้งลงบนเครื่องคอมพิวเตอร์ของคุณ';
+$lang['Install'] = "ติดตั้ง";
+$lang['Installed Languages'] = 'ภาษาที่ถูกติดตั้ง';
+$lang['Installed Themes'] = "ธีมที่ถูกติดตั้ง";
+$lang['Instructions to use Piwigo'] = "คำแนะนำในการใช้งาน Piwigo แกลลอรี่";
+$lang['Invert'] = 'สลับ';
+$lang['IP'] = "ไอพี";
+$lang['jump to album'] = "ไปยังอัลบั้ม";
+$lang['jump to photo'] = "ไปยังรูปภาพ";
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = "ติดต่อกับ Piwigo โปรเจค, บอกรับข่าวสารจาก Piwigo. คุณจะได้รับอีเมล เมื่อมี Piwigo เวอร์ชั่นใหม่ถูกปล่อยออกมา (บางที มีการปรับปรุงแก้ไขด้านความปลอดภัย และจุดบกพล่องต่างๆ ซึ่งมันสำคัญมากเพื่ออัพเกรดระบบ) รวมทั้งเมื่อ Piwigo โปรเจคได้ทำ เวอร์ชั่นหลัก หรือเมเจอร์เวอร์ชั่น. ซึ่งมีเมลถึงคุณต่อปีไม่กี่ฉบับเท่านั้น.";
+$lang['Language has been successfully installed'] = 'ภาษาได้ถูกติดตั้งสมบูรณ์';
+$lang['Languages'] = 'ภาษา';
+$lang['Last hit'] = "เข้าชมครั้งล่าสุด";
+$lang['Last revisions'] = "การแก้ไขครั้งล่าสุด";
+$lang['Last send'] = "ส่งครั้งล่าสุด";
+$lang['leave'] = "ปล่อยว่าง";
+$lang['Level 0'] = "---";
+$lang['Level 1'] = "ผู้ติดต่อ";
+$lang['Level 2'] = "เพื่อน";
+$lang['Level 4'] = "ครอบครัว";
+$lang['Level 8'] = "ผู้ดูแลระบบ";
+$lang['Link all album photos to a new album'] = "เชื่อมโยงอัลบั้มรูปถ่ายทั้งหมดไปยังอัลบั้มใหม่";
+$lang['Link all album photos to some existing albums'] = "เชื่อมโยงอัลบั้มรูปถ่ายทั้งหมดไปยังอัลบั้มใหม่";
+$lang['Linked albums'] = "อยู่ในอัลบั้ม";
+$lang['Local'] = "ภายใน";
+$lang['Lock albums'] = "ล็อคอัลบั้ม";
+$lang['Lock gallery'] = "ล็อคแกลลอรี่";
+$lang['Lock'] = "ล็อค";
+$lang['Locked'] = "ล็อค";
+$lang['Mail address is obligatory for all users'] = "ที่อยู่เมลสำหรับผู้ใช้งานทั้งหมด";
+$lang['Mail content'] = "เนื้อหาเมล";
+$lang['Mail sent to %s [%s].'] = "เมลได้ถูกส่งไปยัง %s [%s].";
+$lang['Main "guest" user does not exist'] = "หลัก \"ผู้เยี่ยมชม\" ผู้ใช้งานไม่มีอยู่";
+$lang['Main "guest" user status is incorrect'] = "หลัก \"ผู้เยี่ยมชม\" ผู้ใช้งานสถานะไม่ถูกต้อง";
+$lang['Main "webmaster" user does not exist'] = "หลัก \"เว็บมาสเตอร์\" ผู้ใช้งานไม่มีอยู่";
+$lang['Main "webmaster" user status is incorrect'] = "หลัก \"เว็บมาสเตอร์\" ผู้ใช้งานสถานะไม่ถูกต้อง";
+$lang['Main Page'] = 'หน้าหลัก';
+$lang['Main'] = "หลัก";
+$lang['Maintenance'] = "การปรับปรุง";
+$lang['Make this language available to users'] = 'กำหนดภาษานี้สำหรับผู้ใช้งาน';
+$lang['Make this theme available to users'] = 'กำหนดธีมนี้สำหรับผู้ใช้งาน';
+$lang['manage album photos'] = "จัดการอัลบั้มรูป";
+$lang['Manage authorizations for selected albums'] = "จัดการการอนุญาตสำหรับอัลบั้มที่เลือก";
+$lang['Manage permissions for group "%s"'] = "จัดการการอนุญาตสำหรับกลุ่ม \"%s\"";
+$lang['Manage permissions for user "%s"'] = "จัดการการอนุญาตสำหรับผู้ใช้งาน \"%s\"";
+$lang['Manage photo ranks'] = "จัดการอันดับภาพถ่าย";
+$lang['manage sub-albums'] = "จัดการอัลบั้ม-ย่อย";
+$lang['Manage tags'] = "จัดการแท็ก";
+$lang['Manage this set of %d photos'] = 'จัดการตั้งค่าเพิ่มเติมชุดของ %d รูปถ่ายนี้';
+$lang['Manage'] = "จัดการ";
+$lang['Manual order'] = 'คำสั่งกำหนดเอง';
+$lang['manual order'] = 'คำสั่งกำหนดเอง';
+$lang['Maximum height'] = 'ความสูงสูงสุด';
+$lang['Maximum width'] = 'ความกว้างสูงสุด';
+$lang['Members'] = "สมาชิก";
+$lang['Menu Management'] = 'จัดการเมนู';
+$lang['Metadata synchronization results'] = "ผลลัพธ์การซิงโคไนซ์เมตาดาต้า";
+$lang['Metadata synchronized from file'] = "ได้ถูกซิงโคไนซ์เมตาดาต้าจากไฟล์";
+$lang['Minimum privacy level'] = "ระดับของความเป็นส่วนตัวน้อยที่สุด";
+$lang['Miscellaneous'] = 'เบ็ดเตล็จ';
+$lang['Missing a temporary folder'] = 'ไม่พบโฟลเดอร์ชั่วคราว';
+$lang['Missing Plugins'] = 'ไม่พบปลั๊กอิน';
+$lang['Modify information'] = "แก้ไขข้อมูล";
+$lang['Month'] = "เดือน";
+$lang['Move albums'] = "ย้ายอัลบั้ม";
+$lang['Move'] = "ย้าย";
+$lang['Name'] = "ชื่อ";
+$lang['new'] = "ใหม่";
+$lang['New name'] = "ชื่อใหม่";
+$lang['New parent album'] = "อัลบั้มหลักใหม่";
+$lang['New photos added'] = "รูปภาพใหม่ที่ได้ถูกเพิ่ม";
+$lang['New photos were added'] = "รูปภาพใหม่ที่ได้ถูกเพิ่ม";
+$lang['New tag'] = "แท็กใหม่";
+$lang['No display'] = "ไม่มีการแสดงผล";
+$lang['No file was uploaded'] = 'ไม่มีไฟล์ที่ถูกอัพโหลด';
+$lang['No mail to send.'] = "ไม่มีเมลที่ถูกส่ง.";
+$lang['No photo can be deleted'] = "ไม่มีรูปที่สามารถลบได้";
+$lang['No photo in the current set.'] = 'ไม่มีรูปภาพในชุดปัจจุบันนี้.';
+$lang['No photo in this album'] = "ไม่มีรูปภาพในอัลบั้มนี้";
+$lang['No photo selected, %d photos in current set'] = 'ไม่มีรูปที่ได้เลือกไว้,มีรูปทั้งหมด %d รูปในเซตนี้';
+$lang['No photo selected, no action possible.'] = 'ไม่มีรูปภาพที่ได้เลือกไว้.';
+$lang['No results'] = "ไม่มี ผลลัพธ์";
+$lang['No user to send notifications by mail.'] = "ไม่มีผู้ใช้งานที่ได้ติดต่อทางเมล.";
+$lang['no write access'] = "ไม่มีการเขียนการเข้าถึงข้อมูล";
+$lang['none'] = "ไม่มี";
+$lang['None'] = 'ไม่มี';
+$lang['nothing'] = "ไม่มีสิ่งใด";
+$lang['Notification'] = "การแจ้งเตือน";
+$lang['Number of comments per page'] = "จำนวนของความเห็นที่แสดงต่อหนึ่งหน้า";
+$lang['Number of downloads'] = "จำนวนครั้งที่ดาวน์โหลด";
+$lang['number of miniaturized photos'] = "จำนวนของรูปภาพขนาดย่อที่ได้ถูกสร้าง";
+$lang['Number of rates'] = "จำนวนของคะแนนนิยม";
+$lang['Number of thumbnails to create'] = "จำนวนของรูปภาพขนาดย่อที่จะสร้าง";
+$lang['on the %d selected photos'] = 'ของ %d รูปภาพที่ได้เลือกไว้';
+$lang['on'] = "ใน";
+$lang['only directories'] = "ไดเรกทอรี่อย่างเดียว";
+$lang['only perform a simulation (no change in database will be made)'] = "แค่การจำลองเสมือน (ไม่มีอะไรที่จะถูกเปลี่ยนในฐานข้อมูล)";
+$lang['Only private albums are listed'] = "อัลบั้มส่วนตัวเท่านั้น";
+$lang['Operating system'] = "ระบบปฏิบัติการ";
+$lang['Operation in progress'] = 'การดำเนินการ.';
+$lang['Optimizations have been completed with some errors.'] = "การทำให้เหมาะสมได้เสร็จแล้ว พร้อมกับมีข้อผิดพลาดบางอย่าง.";
+$lang['Optional URL keyword'] = "URL คีย์เวิร์ด";
+$lang['Options'] = "ตัวเลือก";
+$lang['Options'] = "ตัวเลือก";
+$lang['Order of menubar items has been updated successfully.'] = 'เมนูบาร์ได้ถูกอัพเดตเรียบร้อยแล้ว.';
+$lang['Original templates'] = "แม่แบบดั้งเดิม";
+$lang['Orphan tags deleted'] = 'แท็กที่ไม่ได้ใช้งานที่ได้ถูกลบ';
+$lang['Other plugins'] = "ปลั๊กอินอื่นที่ใช้งานได้";
+$lang['Other private albums'] = "อัลบั้มส่วนตัวอื่นๆ";
+$lang['other'] = "อื่นๆ";
+$lang['Overall'] = "Overview";
+$lang['overrides existing values with empty ones'] = "ยกเลิกค่าที่มีอยู่โดยกำหนดให้มันว่างเปล่า";
+$lang['Page banner'] = "สโลแกน";
+$lang['Page end'] = 'หน้าสุดท้าย';
+$lang['Pages seen'] = "จำนวนหน้าที่เปิด";
+$lang['Parameter'] = "ตั้งค่า";
+$lang['Parameters'] = "ตัวแปร";
+$lang['Parent album'] = "อัลบั้มหลัก";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "คุณยังไม่ได้ยืนยันรหัสผ่าน. กรุณายืนยันรหัสผ่านเดิมอีกครั้ง.";
+$lang['Password is missing. Please enter the password.'] = "คุณยังไม่ได้กำหนดรหัสผ่าน. กรุณากรอรหัสผ่าน.";
+$lang['Path'] = "ที่ตั้ง";
+$lang['Pending Comments'] = 'ความเห็นกำลังรออนุมัติ';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = "การเชื่อมโยง %s ได้มีอยู่ก่อนแล้ว และได้ถูกไใช้โดยอัลบั้ม %s. ลบมันออกจากประวัติการเชื่อมโยงในอัลบั้มก่อน";
+$lang['Permalink %s is already used by album %s'] = "การเชื่อมโยง %s มีอยู่แล้วและถูกใช้โดยอัลบั้ม %s";
+$lang['Permalink history'] = "ประวัติการเชื่อมโยง";
+$lang['Permalink'] = "การเชื่อมโยง";
+$lang['Permalinks'] = "การเชื่อมโยง";
+$lang['Permission denied'] = "ไม่อนุญาต";
+$lang['Permission granted thanks to a group'] = "การอนุญาตการเข้าถึงไปยังกลุ่ม";
+$lang['Permission granted'] = "ได้ยินยอมการอนุญาตแล้ว";
+$lang['Permissions'] = "การอนุญาต";
+$lang['Photo Page'] = 'หน้าภาพถ่าย';
+$lang['Photo Properties'] = 'คุณสมบัติรูปภาพ';
+$lang['photos added in the database'] = "รูปภาพได้ถูกเพิ่มในฐานข้อมูลแล้ว";
+$lang['photos candidates for metadata synchronization'] = "รูปภาพที่ถูกเลือกเข้ามา เพื่อการซิงโคไนซ์เมตาดาต้า";
+$lang['photos deleted from the database'] = "รูปภาพได้ถูกลบออจากฐานข้อมูลแล้ว";
+$lang['photos per page'] = "จำนวนรูปภาพต่อหน้า";
+$lang['photos updated in the database'] = "รูปภาพได้ถูกอัพเดตในฐานข้อมูลแล้ว";
+$lang['Photos'] = "รูป";
+$lang['Photo informations updated'] = "ข้อมูลรูปภาพได้ถูกบันทึกแล้ว";
+$lang['Photo unreachable or no support'] = "รูปภาพไม่สามารถเข้าถึงได้ หรือรูปแบบ ไม่สนับสนุน";
+$lang['Piwigo Administration'] = "การจัดการระบบ Piwigo";
+$lang['Piwigo Announcements Newsletter'] = "ข่าวสารและประกาศของ Piwigo";
+$lang['Piwigo configuration'] = "การตั้งค่าปรับแต่ง Piwigo";
+$lang['Piwigo Uploader'] = 'ตัวช่วยอัพโหลด Piwigo';
+$lang['Piwigo version'] = "Piwigo เวอร์ชั่น";
+$lang['pixels'] = 'พิกเซล';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "กรุณตรวจสอบโฟลเดอร์ \"plugins\" การกำหนดสิทธิ์การเข้าถึงทั้งโฟลเดอร์หลัก และโฟลเดอร์ย่อย (CHMOD).";
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader คือโปรแกรม <em>ตัวช่วยอัพโหลด Piwigo</em>. จากคอมพิวเตอร์ของคุณ, pLoader จะเตรียมรูปภาพของคุณพร้อมกับส่งไปยังแกลลอรี่ Piwigo.';
+$lang['Plugin list'] = "รายการปลั๊กอิน";
+$lang['Plugins which need upgrade'] = "ปลั๊กอินต้องการการอัพเกรด";
+$lang['Plugins'] = "ปลั๊กอิน";
+$lang['Position'] = "ตำแหน่ง";
+$lang['Preferences'] = "การปรับแต่ง";
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = "การเตรียมรายชื่อผู้ใช้งานเพื่อส่งเมลถึงผู้ใช้งานเหล่านั้น ซึ่งการส่งจะถูกจำกัดเฉพาะผู้ที่มีรายชื่อในรายการเท่า่นั้น. ซึ่งผู้ใช้งานที่ไม่มีชื่อในรายการจะไม่ถูกส่ง.";
+$lang['Privacy level set to "%s"'] = 'ระดับความเป็นส่วนตัว "%s"';
+$lang['Privacy level'] = "ระดับความเป็นส่วนตัว";
+$lang['Private'] = "ส่วนตัว";
+$lang['private'] = "ส่วนตัว";
+$lang['Properties'] = "คุณสมบัติพื้นฐาน";
+$lang['Public / Private'] = "สาธารณะ / ส่วนตัว";
+$lang['Public'] = "สาธารณะ";
+$lang['public'] = "สาธารณะ";
+$lang['Purge compiled templates'] = "ล้างการรวบรวมธีม";
+$lang['Purge history detail'] = "ล้างรายละเอียดประวัติของข้อมูล";
+$lang['Purge history summary'] = "ล้างประวัติ";
+$lang['Purge never used notification feeds'] = "ล้างการแจ้งเตือนที่ไม่ได้มีการถูกใช้";
+$lang['Purge search history'] = "ลางประวัติการค้นหา";
+$lang['Purge sessions'] = "ล้างระยะเวลาที่อยู่ในระบบ";
+$lang['Quick Local Synchronization'] = "เริ่มการซิงโคไนซ์อย่างรวดเร็ว";
+$lang['Random photo'] = "สุ่มรูปภาพ";
+$lang['randomly represented'] = "สุ่มรูปภาพปกอัลบั้ม";
+$lang['ranks'] = "อันดับ";
+$lang['Rate'] = "คะแนนนิยม";
+$lang['Rate date'] = "คะแนนตามวัน";
+$lang['Rating by guests'] = "ให้คะแนนโดยผู้เยี่ยมชม";
+$lang['Rating'] = "คะแนนนิยม";
+$lang['Read Piwigo Documentation'] = 'อ่านเอกสารที่เกี่ยวข้องกับ Piwigo';
+$lang['reduce to single existing albums'] = "รวมเข้าเป็นอัลบั้มเดียวกันกับอัลบั้มที่มีอยู่";
+$lang['Refresh photo set'] = 'รีเฟรชชุดรูปภาพ';
+$lang['Refresh'] = "รีเฟรช";
+$lang['registration date'] = "วันที่ลงทะเบียน";
+$lang['Reinitialize check integrity'] = "ตรวสอบความสมบูรณ์ของการเตรียมการเริ่มต้นใช้งานระบบใหม่";
+$lang['Reject'] = "ถอด";
+$lang['Released on'] = "ถูกปล่อย เมื่อ";
+$lang['Remote'] = "รีโมต";
+$lang['Remove all filters'] = 'ลบตัวกรองทั้งหมด';
+$lang['remove author'] = 'ลบเจ้าของรูปภาพ';
+$lang['remove creation date'] = 'ลบวันที่สร้าง';
+$lang['Remove from caddie'] = 'ลบจาก caddie';
+$lang['remove tags'] = "ลบแท็ก";
+$lang['remove this filter'] = 'ลบตัวกรองนี้';
+$lang['remove title'] = 'ลบชื่อ';
+$lang['Repair and optimize database'] = "ซ่อมแซม และทำให้ฐานข้อมูลเหมาะัสมที่สุด";
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "แทนที่ธีมเก่า โดยการปรับแต่งธีมจาก ธีม-ส่วนขยาย ในโฟลเดอร์ย่อย";
+$lang['Replacers (customized templates)'] = "แทนที่ (ปรับแต่งแม่แบบ)";
+$lang['Representant'] = "รูปภาพขนาดย่อของอัลบั้ม";
+$lang['Representation of albums'] = "รูปภาพขนาดย่อของอัลบั้ม";
+$lang['Representative'] = 'รูปภาพขนาดย่อของอัลบั้ม';
+$lang['Represents'] = 'เป็นรูปภาพขนาดย่อสำหรับ';
+$lang['Resize'] = 'ลดขนาด';
+$lang['Restore'] = "คืนค่า";
+$lang['Restore default configuration. You will lose your plugin settings!'] = "คืนค่าการตั้งค่าปกติ. คุณอาจจะสูญเสียการตั้งค่าต่างๆ ของปลั๊กอิน!";
+$lang['Save order'] = "บันทึกคำสั่ง";
+$lang['Save Settings'] = 'บันทึกการตั้งค่า';
+$lang['Save to permalink history'] = "บันทึกไปยังประวัติการเชื่อมโยง";
+$lang['Searching...'] = "กำลังค้นหา...";
+$lang['Search for new images in the directories'] = "ค้นหารูปภาพใหม่ในไดเรกทอรี่";
+$lang['Section'] = "หมวดหมู่";
+$lang['See you soon,'] = "เจอคุณในไม่ช้า,";
+$lang['See you soon.'] = "เจอคุณในไม่ช้า.";
+$lang['Select at least one album'] = "อย่างอัลบั้มอย่างน้อยที่สุดหนึ่งอัลบั้ม";
+$lang['Select at least one comment'] = 'เลือกความเห็นอย่างน้อยที่สุดหนึ่งความเห็น';
+$lang['Select at least one photo'] = "เลือกรูปภาพอย่างน้อยที่สุดหนึ่งรูป";
+$lang['Select at least one user'] = "เลือกผู้ใช้งานอย่างน้อยที่สุดหนึ่งคน";
+$lang['Select files'] = 'เลือกไฟล์';
+$lang['Select recipients'] = "เลือกผู้รับ";
+$lang['Select:'] = 'เลือก:';
+$lang['selection'] = "เลือก";
+$lang['Selection'] = 'เลือก';
+$lang['Send an information email to group members'] = "ส่งเมลรายละเอียดข้อมูลไปยังกลุ่มสมาชิก";
+$lang['Send mail as'] = "Send mail as";
+$lang['Send mail on HTML format'] = "ส่งเมลในรูปแบบ HTML";
+$lang['Send mail to users'] = "ส่งเมลไปยังผู้ใช้งาน";
+$lang['Send'] = "ส่ง";
+$lang['Set as default language for unregistered and new users'] = 'ใช้งานภาษานี้';
+$lang['Set as default theme for unregistered and new users'] = "ใช้งานธีมนี้";
+$lang['Set author'] = 'ตั้งชื่อผู้เขียน';
+$lang['Set creation date'] = 'กำหนดวันที่สร้าง';
+$lang['Set title'] = 'ตั้งชื่อ';
+$lang['set to'] = "ตั้งค่าเป็น";
+$lang['Settings'] = 'ตั้งค่า';
+$lang['Show info'] = "แสดงรายละเอียด";
+$lang['Show menubar'] = "แสดงแถบเมนู";
+$lang['Simulation'] = "การจำลอง";
+$lang['singly represented'] = 'ถูกกำหนดเป็นรูปภาพขนาดย่อของอัลบั้ม';
+$lang['Site manager'] = "จัดการที่อยู่";
+$lang['Start pLoader and add your photos.'] = 'เริ่มการใช้งานโปรแกรม pLoader และเพิ่มรูปถ่ายของคุณ.';
+$lang['Statistics'] = "สถิติ";
+$lang['Status of user "%s" updated'] = "ผู้ใช้งาน \"%s\" ได้อัพเดตสถานะ";
+$lang['Status'] = "สถานะ";
+$lang['status'] = "สถานะ";
+$lang['Storage album'] = "อัลบัมที่ใช้จัดเก็บ";
+$lang['sub-albums'] = "อัลบั้ม-ย่อย";
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "บอกรับ %s to จดหมายข่าวสารและประกาศของ Piwigo";
+$lang['Subscribe %s'] = "บอกรับ %s";
+$lang['Subscribe to notification by mail'] = "บอกรับการแจ้งเตือนโดยเมล";
+$lang['Subscribe'] = "บอกรับ";
+$lang['Subscribe/unsubscribe users'] = "บอกรับ/ยกเลิกการบอกนับผู้ใช้งาน";
+$lang['Subscribed'] = "ได้ถูกบอกรับ";
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "รายชื่อผู้บอกรับในรายการ (ที่สามารถใช้ได้) เท่านั้น ที่จะได้รับการแจ้งเตือน.";
+$lang['Sum of rates'] = "ผลรวมของคะแนนนิยม";
+$lang['Summary'] = "สาระสำคัญ";
+$lang['Support'] = "ขอรับการสนับสนุน";
+$lang['Switch to clear or dark colors for administration'] = 'สลับไปยังโหมดสีสว่าง หรือ มืด สำหรับส่วนของการจัดการระบบ';
+$lang['synchronize files metadata with database photos informations'] = "ซิงโคไนซ์ฐานข้อมูลรูปภาพกับไฟล์ด้วยเมตาดาต้า";
+$lang['synchronize files structure with database'] = "ซิงโคไนซ์ไฟล์กับฐานข้อมูล";
+$lang['Synchronize'] = "ซิงโคไนซ์";
+$lang['Tag "%s" already exists'] = "แท็ก \"%s\" ได้มีอยู่แล้ว";
+$lang['Tag "%s" was added'] = "แท็ก \"%s\" ได้ถูกเพิ่มแล้ว";
+$lang['Tag selection'] = "เลือกแท็ก";
+$lang['target'] = "เป้าหมาย";
+$lang['Templates configuration has been recorded.'] = "การปรับแต่งการตั้งค่าแม่แบบได้ถูกบันทึกแล้ว.";
+$lang['Templates'] = "แม่แบบ";
+$lang['test this remote site'] = "ทดสอบการเชื่อมโยงที่อยู่ระยะไกล";
+$lang['test'] = "ทดสอบ";
+$lang['The %d following tags were deleted'] = "การติดตามแท็ก %d แท็ก ได้ถูกลบแล้ว";
+$lang['The anomaly will be ignored until next application version'] = "ความผิดปกติจะถูกเพิกเฉยไปจนถึงเวอร์ชั่นถัดไปของแอพพลิเคชั่น";
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "ไฟล์ หรือ ไดเรกทอรี่ ไม่สามารถที่จะเข้าถึงได้ (หรือไม่ก็ มันอาจจะไม่มีอยู่ หรือถูกปฏิเสธการเข้าถึง)";
+$lang['The following tag was deleted'] = 'แท็กที่กำลังหาได้ถูกลบแล้ว';
+$lang['the forum'] = "ฟอรั่ม";
+$lang['The gallery URL is not valid.'] = "URL แกลลอรี่ไม่ถูกต้อง.";
+$lang['The name of a group must not contain " or \' or be empty.'] = "ชื่อกลุ่มจะต้องไม่ประกอบด้วยเครื่องหมาย \" หรือ ' หรือช่องเว้นว่าง.";
+$lang['The name of an album must not be empty'] = "ชื่อของอัลบั้มจะต้องไม่ปล่อยว่าง";
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "ชื่อของไดเรกทอรี่และไฟล์ ต้องประกอบด้วยตัวอักษร, ตัวเลข, \"-\", \"_\" หรือ \".\"เท่านั้น";
+$lang['The number of comments a page must be between 5 and 50 included.'] = "จำนวนความคิดเห็นต่อหนึ่งหน้า จะต้องเป็นจำนวนระหว่าง 5 แต่ไม่เกิน 50 ความคิดเห็น.";
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "ชื่อลิงค์จะต้องประกอบด้วย a-z, A-Z, 0-9, \"-\", \"_\" หรือ \"/\". แต่จะต้องไม่ใช่อักขระพิเศษ หรือเริ่มต้นด้วยตัวเลขแล้วตามด้วยเครื่องหมาย \"-\"";
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'ไฟล์ที่จะอัพโหลด มีขนาดใหญ่เกินไป โปรดใช้การอัพโหลดโดยตรงผ่านรูปแบบ HTML หรือการอัพโหลดแบบปกติ';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'ไฟล์ที่จะอัพโหลดมีขนาดใหญ่เกินที่กำหนดไว้ในไฟล์การตั้งค่า php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'ไฟล์ที่อัพโหลดได้ถูกอัพโหลดไปบางส่วน';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'ไฟล์ที่จะอัพโหลดมีขนาดใหญ่เกินที่กำหนดไว้ในไฟล์การตั้งค่า php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "เวอร์ชั่นของ %s [%s] ที่ได้ติดตั้งไปไม่สามารถรองรับการทำงาน กับเวอร์ชั่นที่ต้องการ [%s]";
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'เว็บมาสเตอร์ได้บอกรับคุณโดยการแจ้งผ่านเมล์.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'เว็บมาสเตอร์ได้ยกเลิกบอกรับคุณโดยการแจ้งผ่านเมล์.';
+$lang['The whole page'] = 'หน้าทั้งหมด';
+$lang['The whole set'] = 'ชุดการตั้งค่าทั้งหมด';
+$lang['the wiki'] = "วิกิ wiki";
+$lang['Theme has been successfully installed'] = 'ธีมได้ถูกติดตั้งเรียบร้อยแล้ว';
+$lang['Themes'] = "ธีม";
+$lang['There is no available subscribers to mail.'] = "ไม่มีการแจ้งเตือนการบอกรับโดยทางเมล.";
+$lang['There is no other language available.'] = 'ไม่มีภาษาอื่นที่สามารถใช้ได้เพิ่มเติม.';
+$lang['There is no other plugin available.'] = 'ไม่มีปละ๊กอินอื่นที่สามารถใช้ได้เพิ่มเติม.';
+$lang['There is no other theme available.'] = 'ไม่มีธีมอื่นที่สามารถใช้ได้เพิ่มเติม.';
+$lang['This name is already used by another group.'] = "ชื่อนี้ได้ถูกใช้แล้ว.";
+$lang['This site already exists'] = "ที่อยู่นี้ได้มีอยู่แล้ว";
+$lang['This theme was not designed to be directly activated'] = 'ธีมนี้ไม่สามารถปรับแต่งได้ เนื่องจากมีการเปิดการใช้งานอยู่';
+$lang['Thumbnail'] = "รูปภาพขนาดย่อ";
+$lang['Thumbnail'] = 'รูปภาพขนาดย่อ';
+$lang['Time to send mail is limited. Others mails are skipped.'] = "เวลาในการส่งเมลถูกจำกัด. เมลอื่นๆ อาจจะไม่ได้ถูกส่ง.";
+$lang['Time'] = "เวลา";
+$lang['Title'] = "ชื่อ";
+$lang['To send ?'] = "ต้องการส่ง?";
+$lang['To subscribe'] = "บอกรับ";
+$lang['To unsubscribe'] = "ยกเลิกการบอกรับ";
+$lang['Toggle \'default group\' property'] = "กลับไปยังคุณสมบัติ 'กลุ่มปกติ'";
+$lang['Tools'] = "เครื่องมือ";
+$lang['total time'] = "เวลาทั้งหมด";
+$lang['Type here the author name'] = 'ชนิดของชื่อผู้เขียน';
+$lang['Type here the title'] = 'ชนิดของชื่อ';
+$lang['Type in a search term'] = "ชนิดของการค้นหา";
+$lang['Unable to check for upgrade.'] = "ไม่สามารถตรวจสำหรับอัพเกรดได้.";
+$lang['Uncheck all'] = "ไม่เลือกทั้งหมด";
+$lang['Uninstall'] = "ถอนการติดตั้ง";
+$lang['Uninstalled Plugins'] = 'ได้ถอนการติดตั้งปลั๊กอินแล้ว';
+$lang['unit mode'] = "โหมดเฉพาะ";
+$lang['Unknown upload error'] = 'ไม่ทราบข้อผิดพลาดของการอัพโหลด';
+$lang['unknown'] = 'ไม่ทราบ';
+$lang['Unlocked'] = "ปลดล็อค";
+$lang['unset'] = "ไม่มีการตั้งค่า";
+$lang['Unsubscribe from notification by mail'] = "ยกเลิกการบอกรับการแจ้งเตือนโดยเมล";
+$lang['Unsubscribed'] = "ได้ยกเลิกการบอกรับแล้ว";
+$lang['Update albums informations'] = "อัพเดตรายละเอียดอัลบั้ม";
+$lang['Update photos information'] = "อัพเดตรายละเอียดรูปภาพ";
+$lang['update the database from files'] = "อัพเดตฐานข้อมูลกับไฟล์";
+$lang['Upload Photos'] = 'อัพโหลดรูปภาพ';
+$lang['Upload'] = "อัพโหลด";
+$lang['Uploaded Photos'] = 'รูปภาพที่ได้ถูกอัพโหลดแล้ว';
+$lang['Use the default photo sort order (defined in the configuration file)'] = "ใช้การจัดเรียงภาพถ่ายคำสั่งพื้นฐาน (ดูในการตั้งค่าไฟล์)";
+$lang['Used metadata'] = "ใช้งานเมตาดาต้า";
+$lang['user "%s" added'] = "ผู้ใช้งาน \"%s\" ได้ถูกเพิ่มแล้ว";
+$lang['User "%s" created with "%s" like password'] = "ผู้ใช้งาน \"%s\" สร้างด้วย \"%s\" รหัสผ่าน";
+$lang['User %s [%s] added.'] = "ผู้ใช้งาน %s [%s] ได้ถูกเพิ่มแล้ว.";
+$lang['User %s [%s] was added to the subscription list.'] = "ผู้ใช้งาน %s [%s] ได้เพิ่มเข้ารายการการบอกรับการเป็นสมาชิก.";
+$lang['User %s [%s] was not added to the subscription list.'] = "ผู้ใช้งาน %s [%s] ไม่ได้เพิ่มเข้ารายการการบอกรับการเป็นสมาชิก.";
+$lang['User %s [%s] was not removed from the subscription list.'] = "ผู้ใช้งาน %s [%s] ที่ไม่ได้ถูกลบจากรายการการบอกรับเป็นสมาชิก.";
+$lang['User %s [%s] was removed from the subscription list.'] = "ผู้ใช้งาน %s [%s] ที่ได้ถูกลบจากรายการการบอกรับเป็นสมาชิก.";
+$lang['User comments validation'] = "การตรวจสอบความคิดเห็นของผู้ใช้งาน";
+$lang['User list'] = "รายชื่อผู้ใช้งาน";
+$lang['User status'] = "สถานะของผู้ใช้งาน";
+$lang['User'] = "ผู้ใช้งาน";
+$lang['Users'] = "ผู้ใช้งาน";
+$lang['user_status_admin'] = "ผู้ดูแลระบบ";
+$lang['user_status_generic'] = "ผู้ใช้งานทั่วไป";
+$lang['user_status_guest'] = "ผู้เยี่ยมชม";
+$lang['user_status_normal'] = "ผู้ใช้งาน";
+$lang['user_status_webmaster'] = "เว็บมาสเตอร์";
+$lang['Validate'] = "ตรวจสอบ";
+$lang['Validation'] = "การตรวจสอบ";
+$lang['Version'] = "เวอร์ชั่น";
+$lang['Virtual album added'] = "อัลบั้มได้ถูกเพิ่มแล้ว";
+$lang['Virtual album deleted'] = "อัลบั้มได้ถูกลบแล้ว";
+$lang['Virtual album name'] = "อัลบั้มชื่อ";
+$lang['Virtual album'] = "อัลบั้ม";
+$lang['Virtual albums to move'] = "ย้ายอัลบั้ม";
+$lang['Virtual Links'] = 'ลิงค์';
+$lang['Visit Gallery'] = 'เยี่ยมชมแกลลอรี่';
+$lang['Visit Piwigo project website'] = 'เยี่ยมชมเว็บไซต์อย่างเป็นทางการของ Piwigo';
+$lang['Visit plugin site'] = 'เยี่ยมชมเว็บไซต์ปลั๊กอิน';
+$lang['Waiting'] = "รออนุมัติ";
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = "คำเตือน: การบอกรับ หรือ ยกเลิกการบอกรับ จะถูกส่งไปยังผู้ใช้งานโดยเมล";
+$lang['Webmaster cannot be deleted'] = "เว็บมาสเตอร์ไม่สามารถลบได้";
+$lang['Webmaster status is required.'] = 'จำเป็นต้องมีสถานะเป็น เว็บมาสเตอร์.';
+$lang['Week starts on'] = 'เริ่มต้นสัปดาห์วัน';
+$lang['Who can see these photos?'] = 'ใครบ้างที่สามารถเข้าชมรูปภาพเหล่านี้ได้?';
+$lang['Who can see this photo?'] = 'ใครบ้างที่สามารถเข้าชมรูปภาพเหล่านี้ได้?';
+$lang['width must be a number superior to'] = "ความกว้างต้องเป็นตัวเลขจำนวนที่มากกว่า";
+$lang['With blank value, gallery title will be used'] = "ถ้าปล่อยว่าง, ชื่อแกลลอรี่ของคุณจะถูกใช้แสดงแทน";
+$lang['wrong filename'] = "ชื่อไฟล์ไม่ถูกต้อง";
+$lang['Year'] = "ปี";
+$lang['You are running on development sources, no check possible.'] = "คุณกำลังใช้งาน Piwigo เวอร์ชั่นที่กำลังพัฒนาอยู่, ซึ่งไม่ใช่เวอร์ชั่นที่ถูกปล่อยอย่างเป็นทางการ.";
+$lang['You are running the latest version of Piwigo.'] = "คุณกำลังใช้งาน Piwigo เวอร์ชั่นล่าสุดอยู่.";
+$lang['You cannot delete your account'] = "คุณไม่สามารถลบบัญชีผู้ใช้งานของคุณได้";
+$lang['You cannot move an album in its own sub album'] = "คุณไม่สามารถย้ายอัลบั้มหลักเข้าไปในอัลบั้มย่อยได้";
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'คุณไม่สามารถกำหนดค่ารูปภาพเป็นค่าปกติได้ เพราะว่าคุณได้ปรับแต่งการตั้งค่าด้วยตนเองในส่วนของ การปรับแต่งการตั้งค่าระบบ.';
+$lang['You have %d orphan tags: %s.'] = 'คุณมี %d แท็กที่ไม่ได้ใช้งาน: %s. แท็ก';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'ชื่อจะต้องเป็นชื่อเฉพาะ <i>$conf[\'order_by\']</i> ในไฟล์การตั้งค่าของคุณ, มันคือตัวแปรที่ปิดกั้นการดำเนินการ, กรุณาลบมันออก หรือ เปลี่ยนชื่อมันเป็นอย่างอื่น <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = "คุณได้มีการบอกรับข่าวสารและจะได้รับข่าวสารและการแจ้งเตือนผ่านทางเมล.";
+$lang['You have unsubscribed from receiving notifications by mail.'] = "คุณได้ยกเลิกการบอกรับข่าวสารและจะไม่ได้ได้รับข่าวสารและการแจ้งเตือนผ่านทางเมล.";
+$lang['You might go to plugin list to install and activate it.'] = "ไปยังรายการปลั๊กอินเพื่อนติดตั้งและเปิดใช้งาน.";
+$lang['You need to confirm deletion'] = "คุณจะต้องยืนยันการลบ";
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "คุณควรอัพเดตระบบของคุณ เพื่อประสิทธิภาพการทำงานของแอพพลิเคชั่น, ไม่เช่นนั้นแอพพลิเคชั่นของคุณอาจไม่สามารถทำงานได้อย่างถูกต้อง, หรือไม่สามารถทำงานได้อย่างสิ้นเชิง";
+$lang['Your configuration settings are saved'] = 'การเปลี่ยนแปลงการตั้งค่าของคุณได้ถูกบันทึกแล้ว';
+$lang['[%s] Visit album %s'] = "[%s] เข้าชมอัลบั้ม %s";
+$lang['[NBM] Problems or questions'] = "[NBM] ปัญหาหรือคำถาม";
+$lang['Themes which need upgrade'] = 'ธีมนี้ต้องการการอัพเกรด';
+$lang['Languages which need upgrade'] = 'ภาษานี้ต้องการการอัพเกรด';
+$lang['All themes are up to date.'] = 'ธีมทั้งหมดถูกอัพเดตแล้ว.';
+$lang['All plugins are up to date.'] = 'ปลั๊กอินทั้งหมดถูกอัพเดตแล้ว.';
+$lang['All languages are up to date.'] = 'ภาษาทั้งหมดถูกอัพเดตแล้ว.';
+$lang['Visit theme site'] = 'เยี่ยมชมเว็บไซต์ธีม';
+$lang['Visit language site'] = 'เยี่ยมชมเว็บไซต์ภาษา';
+$lang['New Version'] = 'เวอร์ชั่นใหม่';
+$lang['Obsolete Plugins'] = 'ปลั๊กอินเก่า';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'คำเตือน! ปลั๊กนี้ไม่รองรับการใช้งาน(เข้ากันไม่ได้) Piwigo เวอร์ชั่นที่ใช้อยู่.';
+$lang['Do you want to activate anyway?'] = 'คุณต้องการเปิดการใช้งาน ไม่ว่าอย่างไรก็ตาม?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ปลั๊กอินนี้ไม่ใช่ส่วนหนึ่งของ PIWIGO CORE! ถอนการติดตั้งตอนนี้!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'เกิดความผิดพลาด: ไม่พบปลั๊กอินนี้แต่มันได้ถูกติดตั้งแล้ว! ถอนการติดตั้งตอนนี้.';
+$lang['display'] = 'การแสดงผล';
+$lang['Thumbnails generation in progress...'] = 'การสร้างรูปภาพขนาดย่อ กำลังประมวลผล...';
+$lang['Photos generation in progress...'] = 'การสร้างรูปภาพ กำลังประมวลผล...';
+$lang['%s photos have been regenerated'] = '%s รูปภาพที่ได้สร้างใหม่';
+$lang['%s photos can not be regenerated'] = '%s รูปภาพที่ไม่สามารถสร้างได้';
+$lang['Updates'] = 'อัพเดต';
+$lang['Update in progress... Please wait.'] = 'กำลังประมวลผลการอัพเดต... กรุณารอ.';
+$lang['Ignore this update'] = 'ปฏิเสธการอัพเดต';
+$lang['Reset ignored updates'] = 'คืนค่าการอัพเดตที่ถูกปฏิเสธ';
+$lang['Update All'] = 'อัพเดต ทั้งหมด';
+$lang['ERROR'] = 'ผิดพลาด';
+$lang['Update Complete'] = 'อัพเดต เรียบร้อยแล้ว';
+$lang['Piwigo Update'] = 'อัพเดต Piwigo';
+$lang['Extensions Update'] = 'อัพเดต ส่วนขยาย';
+$lang['All extensions are up to date.'] = 'ส่วนขยายทั้งหมดได้ถูกอัพเดตแล้ว.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'ปลั๊กอินนี้อาจจะไม่รองรับการทำงานบนเวอร์ชั่นใหม่ของ Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'ธีมนี้อาจจะไม่รองรับการทำงานบนเวอร์ชั่นใหม่ของ Piwigo:';
+$lang['I decide to update anyway'] = 'ฉันตัดสินใจที่จะอัพเดต';
+$lang['Update to Piwigo %s'] = 'อัพเดตไปยัง Piwigo %s';
+$lang['Two updates are available'] = 'การอัพที่สามารถทำได้';
+$lang['This is a minor update, with only bug corrections.'] = 'นี่คือไมเนอร์อัพเดต หรือ การอัพเดตเวอร์ชั่นรอง, ซึ่งมีการแก้ไขจุดบกพร่องบางประการ.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'นี่คือเมเจอร์อัพเดต หรือ การอัพเดตเวอ์ชั่นหลัก, ซึ่งมาพร้อมกับ <a href="%s">ความสามารถใหม่</a>. ที่น่าสนใจ.';
+$lang['Some themes and plugins may be not available yet.'] = 'ธีมและปลั๊กอินบางตัวอาจไม่สามารถใช้งานได้.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'คุณสามารถอัพเดต Piwigo %s ได้โดยตรง, โดยไม่ต้องอัพเกรด Piwigo %s (แนะนำ).';
+$lang['Save Template Directory'] = 'บันทึกไดเรกทอรี่แม่แบบ';
+$lang['Dump Database'] = 'ดัมพ์ฐานข้อมูล';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'นำเข้าประวัติข้อมูล (คำเตือน: อาจจะทำให้ประสิทธิภาพการทำงานหรือความเร็วของเซิร์ฟเวอร์ลดลง)';
+$lang['Unable to dump database.'] = 'ไม่สามารถดัมพ์ฐานข้อมูลได้.';
+$lang['Some upgrades are available for extensions.'] = 'มีส่วนขยายบางตัว ที่ต้องการการอัพเกรด.';
+$lang['Please wait...'] = 'กรุณารอ...';
+$lang['Ignore All'] = 'ปฏิเสธทั้่งหมด';
+$lang['Crop'] = 'ตัด';
+$lang['Width'] = 'กว้าง';
+$lang['Height'] = 'สูง';
+$lang['Follow Orientation'] = 'การติดตามแนวโน้ม';
+$lang['Graphics Library'] = 'กราฟฟิค ไลบราลี่';
+$lang['... or '] = '... หรือ ';
+$lang['Create'] = 'สร้าง';
+$lang['Start Upload'] = 'เริ่มการอัพโหลด';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'ตอนนี้คุณกำลังใช้การอัพโหลดแบบ แฟลชอัพโหลด. หากเจอปัญหา? ให้ลองใช้ <a href="%s">การอัพโหลดแบปกติ</a> แทน.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'คุณกำลังใช้การอัพโหลด แบบปกติ. ลองใช้การอัพโหลดแบบ <a href="%s">แฟลชอัพโหลด</a> แทน.';
+$lang['Maximum file size: %sB.'] = 'ขนาดไฟล์สูงสุด: %sB.';
+$lang['Allowed file types: %s.'] = 'รูปแบบไฟล์ที่อนุญาต: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'ความละเอียดสูงสุดโดยประมาณ: %dM เมกะพิกเซล. (ไม่เกินขนาด %dx%d พิกเซล).';
+$lang['Manage Permissions'] = 'จัดการการอนุญาตสิทธิ์';
+$lang['Photo %s of %s'] = 'รูปภาพ %s จาก %s';
+$lang['show details'] = 'แสดงรายละเอียด';
+$lang['hide details'] = 'ซ่อนรายละเอียด';
+$lang['Merge tags'] = 'รวมแท็ก';
+$lang['Select the destination tag'] = 'เลือกแท็กปลายทาง';
+$lang['(this tag will be deleted)'] = '(แท็กนี้จะถูกลบ)';
+$lang['Confirm merge'] = 'ยืนยันการรวม';
+$lang['Merge selected tags'] = 'รวมแท็กที่เลือก';
+$lang['No destination tag selected'] = 'ไม่มีแท็กปลายทางที่เลือก';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'แท็ก <em>%s</em> ได้ถูกรวมเข้าไปยังแท็ก <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'เลือกอย่างน้อยสองแท็กเพื่อรวม ';
+$lang['Learn more'] = 'เรียนรู้เพิ่มเติม';
+$lang['Select an album'] = 'เลือกอัลบั้มรูป';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'โดยปกติ, จะสร้างรูปภาพขนาดใหม่ ซึ่งแยกต่างหากจากภาพคุณภาพความละเอียดสูง หรือแบบ HD (high definition) หรือขนาดปกติของรูปภาพของคุณ.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'ถ้าไม่มีรูปภาพขนาดความละเอียดสูง หรือ HD และเถ้ารูปภาพของคุณขนาดใหญ่กว่าขนาดที่กำหนดเพื่อลดขนาดหรือ Resize, Piwigo จะย้ายรูปภาพเหล่านั้นไปยังขนาด HD และสร้างขนาดรูปภาพใหม่โดยการลดขนาดรูปภาพจากภาพดังกล่าวเป็นภาพขนาดที่กำหนดไว้สำหรับแสดงบนเว็บ.';
+$lang['An error has occured during upgrade.'] = 'เกิดข้อผิดพลาดในระหว่างการอัพเกรด.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'เกิดข้อผิดพลาดในระหว่างการแตกไฟล์. กรุณาตรวจสอบสิทธิ์ในการเข้าถึงโฟลเดอร์การติดตั้งของ Piwigo.<br><a href="%s">คลิกที่นี่เพื่อดูบันทึกรายการข้อผิดพลาด</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ไม่สามารถรัับไฟล์อัพเกรดจากเซิร์ฟเวอร์ได้';
+
+$lang['%d days'] = '%d วัน';
+$lang['%d day'] = '%d วัน';
+$lang['%d hours'] = '%d ชั่วโมง';
+$lang['%d hour'] = '%d ชั่วโมง';
+$lang['%d minutes'] = '%d นาที';
+$lang['%d minute'] = '%d นาที';
+$lang['%d months'] = '%d เดือน';
+$lang['%d month'] = '%d เดือน';
+$lang['%d seconds'] = '%d วินาที';
+$lang['%d second'] = '%d วินาที';
+$lang['%d weeks'] = '%d สัปดาห์';
+$lang['%d week'] = '%d สัปดาห์';
+$lang['%d years'] = '%d ปี';
+$lang['%d year'] = '%d ปี';
+$lang['%s ago'] = '%d ที่แล้ว';
+$lang['%s has been successfully updated.'] = '%s ได้อัพเดตข้อมูลมูลเรียบร้อยแล้ว.';
+$lang['%s in the future'] = '%s ในอนาคต';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'กำหนดให้ผู้ใช้ได้รับอนุญาตโดยอัตโนมัติ เนื่องจากพวกเขาอยู่ในกลุ่มที่ได้รับอนุญาตอยู่แล้ว';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo สำหรับ แอนดรอยด์</em> แอพพลิเคชั่นที่จะช่วยให้คุณสามารถเชื่อมต่อโทรศัพท์ แอนดรอยด์ หรือแท็บเลต ไปยังอัลบั้มรูป, เพื่อสร้างอัลบั้ม และอัพโหลดรูปของคุณ.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo สำหรับ ไอโอเอส</em> แอพพลิเคชั่นที่จะช่วยให้คุณสามารถเชื่อมต่อโทรศัพท์ ไปยังอัลบั้มรูป จาก ไอโฟน หรือไอแพดทัช, เพื่อสร้างอัลบั้ม และอัพโหลดรูปของคุณ.';
+$lang['A locked gallery is only visible to administrators'] = 'แกลลอรี่ถูกล็อก สามารถใช้งานได้เฉพาะผู้ดูแลระบบ';
+$lang['Activate comments'] = 'เปิดใช้งานคอมเม้นต์';
+$lang['Add tags'] = 'เพิ่มป้ายชื่อ';
+$lang['Add to caddie'] = 'เพิ่มไปยังแคดดี้';
+$lang['Added by %s'] = 'ถูกเพิม่โดย%s';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom เป็นซอฟต์แวร์การถ่ายภาพที่ออกแบบมาเพื่อจัดการภาพดิจิตอลปริมาณมากและการดำเนินงานผลิตชิ้นงานต่างๆ';
+$lang['Applications'] = 'แอพพลิเคชั่น';
+$lang['Apply watermark if height is bigger than'] = 'ใช้ลายน้ำถ้าความสูงใหญ่กว่า';
+$lang['Apply watermark if width is bigger than'] = 'ใช้ลายน้ำถ้าความกว้างใหญ่กว่า';
+$lang['Automatic sort order'] = 'การเรียงลำดับอัตโนมัติ';
+$lang['Available on'] = 'พร้อมใช้งาน';
+$lang['Available versions for'] = 'เวอร์ชั่นที่ใช้ได้สำหรับ';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'โดยค่าเริ่มต้นซึ่งเป็นศูนย์กลางของความสนใจจะอยู่ตรงกลางของภาพ';
+$lang['Cancel'] = 'ยกเลิก';
+$lang['Center of interest'] = 'ศูนย์ที่น่าสนใจ';
+$lang['Default comments order'] = 'เรียงลำดับคอมเม้นต์ตามค่าเริ่มต้น';
+$lang['Delete multiple size images'] = 'ลบภาพที่มีขนาดหลาย';
+$lang['Duplicate selected tags'] = 'ทำซ้ำป้ายชื่อที่เลือก';
+$lang['Duplicates'] = 'คัดลอก';
+$lang['Edit photo'] = 'แก้ไขรูปภาพ';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'รวมถึงการเรียกดูแกลเลอรี่, การสร้างอัลบั้มและอัพโหลดรูปภาพ';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'สำหรับขนาดภาพที่มีตัดเช่น "สี่เหลี่ยม", Piwigo จะทำอย่างดีที่สุดที่จะรวมศูนย์ที่น่าสนใจ';
+$lang['Gallery unlocked'] = 'แกลลอรี่ปลดล็อค';
+$lang['Generate multiple size images'] = '
+สร้างภาพหลายขนาด';
+$lang['Groups and users'] = 'กลุ่มและผู้ใช้งาน';
+$lang['Last import'] = 'นำเข้าล่าสุด';
+$lang['List'] = 'รายการ';
+$lang['Move to album'] = 'ย้ายไปยังอัลบั้ม';
+$lang['Multiple Size'] = 'หลายขนาด';
+$lang['Name of the duplicate'] = 'ชื่อที่ซ้ำกัน';
+$lang['No group is permitted to see this private album'] = 'ไม่มีกลุ่มที่ได้รับอนุญาตให้ดูอัลบั้มส่วนตัวนี้';
+$lang['Opacity'] = 'ความโปร่งใส';
+$lang['Original Size'] = 'ขนาดเเท่าต้นฉบับ';
+$lang['Original file : %s'] = 'ไฟล์ต้นฉบับ : %s';
+$lang['Permission management'] = 'การจัดการการอนุญาต';
+$lang['Photo name'] = 'ชื่อรูปภาพ';
+$lang['Photo sizes with crop'] = 'ขนาดรูปถ่ายที่มีตัด';
+$lang['Piwigo for Android'] = 'Piwigo สำหรับ Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo สำหรับ iOS (iPhone, iPad, iPod Touch)';
+$lang['Predefined filter'] = 'ตัวกรองที่กำหนดไว้ล่วงหน้า';
+$lang['Source tag'] = 'แหล่งที่มาของป้ายชื่อ';
+$lang['Synchronize metadata'] = 'ประสานข้อมูลเมตาดาต้า';
+$lang['There is no group in this gallery.'] = 'ไม่มีกลุ่มในแกลเลอรี่นี้';
+$lang['This album contains no photo.'] = 'อัลบั้มนี้ยังไม่มีรูปภ่าย';
+$lang['Unlock gallery'] = 'ปลดล็อกแกลเลอรี่';
+$lang['Visited %d times'] = 'เข้าชม %d ครั้ง';
+$lang['Piwigo Publish plugin for Lightroom'] = 'ปลั๊กอิน Piwigo สำหรับ Lightroom';
+$lang['Piwigo export plugin for iPhoto'] = 'ปลั๊กอิน Piwigo สำหรับการส่งออก iPhoto';
+$lang['Piwigo publish plugin for Shotwell'] = 'ปลั๊กอิน Piwigo สำหรับ Shotwell';
+$lang['Piwigo publish plugin for digiKam'] = 'ปลั๊กอิน Piwigo สำหรับ digiKam';
+$lang['Plugin has been successfully copied'] = 'ปลั๊กอินได้คัดลอกสำเร็จแล้ว';
+$lang['Posted %s on %s'] = 'ถูกโพส %s เมื่อ %s';
+$lang['Rated %d times, score : %.2f'] = 'เรต %d ครั้ง, คะแนน : %.2f';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (รีโมตไคลเอนต์แกลลอรี่สำหรับ Android) คือโอเพนซอร์ส (GPL v3) ลูกค้า Piwigo สำหรับแพลตฟอร์ม Android';
+$lang['Resize after upload'] = 'การปรับขนาดหลังจากที่อัปโหลด';
+$lang['Save manual order'] = 'บันทึกคำสั่งด้วยตนเอง';
+$lang['Save visits in history for'] = 'บันทึกการเข้าชมในประวัติสำหรับ';
+$lang['Select a file'] = 'เลือกไฟล์';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'เลือกโซนด้วยเมาส์ของคุณเพื่อกำหนดศูนย์ใหม่ที่สนใจ';
+$lang['Select groups...'] = 'เลือกกลุ่ม ...';
+$lang['Select users...'] = 'เลือกผู้ใช้งาน ...';
+$lang['Send connection settings by email'] = 'ส่งการตั้งค่าการเชื่อมต่อทางอีเมล';
+$lang['Sharpen'] = 'ความคมชัด';
+$lang['No order field selected'] = 'ไม่ได้เลือก ฟิลด์คำสั่ง';
+$lang['Not cropped correctly?'] = 'ครอบตัดถูกต้องหรือไม่?';
+$lang['Notify administrators when a comment is'] = 'แจ้งผู้ดูแลระบบเมื่อมีความเห็น';
+$lang['Numeric identifier : %d'] = 'ระบุตัวเลข:%d';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'เกี่ยวกับลินุกซ์ คุณเพียงแค่ติดตั้ง Shotwell กับแพคเกจหารจัดการและเปิดใช้งานตัวเลือกการเผยแพร่ Piwigo ของคุณ';
+$lang['Permission granted for groups'] = 'สิทธิ์นี้อนุญาตสำหรับกลุ่ม';
+$lang['Permission granted for users'] = 'สิทธิ์นี้อนุญาตสำหรับผู้ใช้งาน';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'ป้ายชื่อ "%s" นี้ซ้ำกับ "%s"';
+$lang['include photos with lower privacy level'] = 'รวมถึงภาพถ่ายที่มีระดับความเป็นส่วนตัวต่ำ';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'ผู้เข้าชมต้องเข้าสู่ระบบถึงจะมีสิทธิเข้าชมอัลบั้มนี้';
+$lang['This album contains %d photos, added between %s and %s.'] = 'อัลบั้มนี้มี %d รูปถ่าย เข้ามาระหว่าง %s และ %s';
+$lang['pending validation'] = 'รอการตรวจสอบ';
+$lang['registered users'] = 'ผู้ใช้ที่ลงทะเบียน';
+$lang['simple visitors'] = 'ผู้เข้าชมทั่วไป';
+$lang['top left corner'] = 'มุมซ้ายด้านบน';
+$lang['top right corner'] = 'มุมขวาด้านบน';
+$lang['The original image quality must be a number between %d and %d'] = 'คุณภาพของภาพต้นฉบับจะต้องเป็นตัวเลขระหว่าง %d และ %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'ความสูงของภาพจะต้องเป็นตัวเลขระหว่าง %d และ %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'ความกว้างของภาพจะต้องเป็นตัวเลขระหว่าง %d และ %d';
+$lang['apply automatic sort order'] = 'ใช้การเรียงลำดับอัตโนมัติ';
+$lang['custom'] = 'กำหนดเอง';
+$lang['modified'] = 'ได้ถูกเปลี่ยนแปลง';
+$lang['middle'] = 'กึ่งกลาง';
+$lang['This album contains %d photos, added on %s.'] = 'อัลบั้มนี้มีรูปถ่าย %d รูป, อัพโหลดเมื่อ %s';
+$lang['any visitor can see this album'] = 'ผู้เข้าชมทุกคนสามารถเห็นอัลบั้มนี้ได้';
+$lang['bottom left corner'] = 'มุมซ้ายด้านล่าง';
+$lang['bottom right corner'] = 'มุมขวาด้านล่าง';
+$lang['cancel manual order'] = 'ยกเลิกคำสั่งด้วยตนเอง';
+$lang['create a new site'] = 'สร้างที่อยู่ไหม่';
+$lang['X Repeat'] = 'X ทำซ้ำ';
+$lang['Y Position'] = 'ตำแหน่ง Y';
+$lang['You can activate only one mobile theme.'] = 'คุณสามารถเปิดใช้งานรูปแบบเพียงหนึ่งชุดสำหรับมือถือ';
+$lang['Zoom'] = 'ขยาย';
+$lang['add a new watermark'] = 'เพิ่มลายน้ำใหม่';
+$lang['administrators'] = 'ผู้ดูแลระบบ';
+$lang['Watermark'] = 'ภาพลายน้ำ';
+$lang['Web Form'] = 'ฟอร์มทางเว็บ';
+$lang['With no album'] = 'กับที่ไม่มีอัลบั้ม';
+$lang['With no tag'] = 'กับที่ไม่มีป้ายชื่อ';
+$lang['With no virtual album'] = 'กับที่ไม่มีอัลบั้ม';
+$lang['X Position'] = 'ตำแหน่ง X';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'เครื่องมือที่มีประสิทธิภาพเพื่อปรับแต่งภาพและการบริหารจัดการไลบรารีขนาดใหญ่บน Mac';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'เครื่องมือถูกออกแบบมาสำหรับช่างภาพมืออาชีพด้วยความเรียบง่าย iPhoto';
+$lang['Piwigo export plugin for Aperture'] = 'ปลั๊กอินส่งออกสำหรับ Aperture';
+$lang['Minimum height'] = 'ความสูงต่ำสุด';
+$lang['Panorama'] = 'พาโนรามา';
+$lang['Minimum width'] = 'ความกว้างต่ำสุด';
+$lang['Portrait'] = 'แนวตั้ง';
+$lang['Landscape'] = 'แนวนอน';
+$lang['Manage photos'] = 'จัดการรูปภาพ';
+$lang['Format'] = 'รูปแบบ';
+$lang['Invalid dimension'] = 'ขนาดไม่ถูกต้อง';
+$lang['View in gallery'] = 'ดูในแกลอรี่';
+$lang['Number of albums per page'] = 'จำนวนอัลบั้มที่แสดงในแต่ละหน้า';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto คือซอฟต์แวร์จัดการรูปภาพบนระบบปฏิบัติการแมคโอเอสเอ็กซ์, โดยปลั๊กอิน Piwigo export จะช่วยให้คุณสร้างอัลบั้ม และส่งออกรูปภาพของคุณจาก iPhoto ไปยังแกลลอรี่ Piwigo ของคุณ';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam ได้ถูกออกแบบมาเพื่อนักถ่ายภาพ สำหรับใครที่ต้องการดู, จัดการ, แก้ไข, ปรับแต่ง, และแชร์ภาพถ่าย';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam คือซอฟต์แวร์ฟรีที่เกี่ยวกับการจัดการรูปภาพขั้นสูงสำหรับ ลีนุกซ์, วินโดว์ และ แมคโอเอสเอ็กซ์';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'คือปลั๊กอินที่อนุญาตให้คุณส่งออก และ ซิงโคไนซ์ รูปภาพจาก Lightroom ไปยัง แกลอรี่ Piwigo ของคุณ ได้โดยตรง';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'ปลั๊กอิน Piwigo export คือปลั๊กอินที่อนุญาตให้สร้างอัลบั้มและส่งออกรูปภาพเหล่านั้น';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'ส่งออกรูปภาพจาก digiKam ไปยัง แกลลอรี่ Piwigo, ง่ายในการติดตั้ง digiKam และ Kipi-plugin';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'ศูนย์กลางของความสนใจเป็นพื้นที่ที่มีความหมายมากที่สุดของภาพ';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell คือซอฟต์แวร์เสรีเกี่ยวกับการจัดการรูปภาพที่รันบน ลีนุกซ์,โดยเริ่มต้นมันเป็นซอฟต์แวร์ที่จัดการรูปภาพบน Ubuntu และ Fedora';
+$lang['Ratio'] = 'อัตราส่วน';
+$lang['between %.2f and %.2f'] = 'ระหว่าง %.2f และ %.2f';
+$lang['between %d and %d pixels'] = 'ระหว่าง %d และ %d พิกเซล';
+$lang['Duplicate'] = 'สำเนา';
+$lang['Manage the members'] = 'จัดการสมาชิก';
+$lang['Merge selected groups'] = 'รวมกลุ่มที่เลือก';
+$lang['No group selected, no action possible.'] = 'ยังไม่ได้เลือกกลุ่ม, ไม่สามารถรวมกลุ่มได้';
+$lang['No members to manage'] = 'ไม่มีสมาชิกที่จะจัดการ';
+$lang['Please select at least two groups'] = 'โปรดเลือกกลุ่มอย่างน้อยสองกลุ่ม';
+$lang['Rename'] = 'เปลี่ยนชื่อ';
+$lang['This group will be set to default'] = 'กลุ่มนี้ถูกกำหนดให้เป็นกลุ่มปกติ';
+$lang['This group will be unset to default'] = 'กลุ่มนี้ไม่ได้ถูกกำหนดให้เป็นกลุ่มปกติ';
+$lang['Type here the name of the new group'] = 'พิมพ์ชื่อของกลุ่มใหม่';
+$lang['Purge user cache'] = 'ล้างแคชผู้ใช้งาน';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'ขนาดของภาพจะลดลงถึง %dx%d พิเซลส์.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'การปรับขนาดหลังจากการอัพโหลด อาจถูกปิดโดย GD graphic library';
+?>
Index: /tags/2.6.0RC1/language/th_TH/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/th_TH/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: ภาษาไทย [TH]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=519
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = "ภาษาไทย";
+$lang_info['country'] = "ประเทศไทย";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "th";
+$lang_info['zero_plural'] = "1";
+
+
+$lang['%d album updated'] = '%d อัลบั้มได้อัพเดตแล้ว';
+$lang['%d albums updated'] = '%d อัลบั้มที่ได้อัพเดตแล้ว';
+$lang['%d comment to validate'] = "%d ความเห็นรอการตรวจสอบ";
+$lang['%d comment'] = "%d ความคิดเห็น";
+$lang['%d comments to validate'] = "%d ความเห็นรอการตรวจสอบ";
+$lang['%d comments'] = "%d ความคิดเห็น";
+$lang['%d hit'] = "%d hit";
+$lang['%d hits'] = "%d hits";
+$lang['%d Kb'] = "%d กิโลไบต์ (Kb)";
+$lang['%d new comment'] = "%d ความคิดเห็นใหม่";
+$lang['%d new comments'] = "%d ความคิดเห็นใหม่";
+$lang['%d new photo'] = "%d รูปภาพใหม่";
+$lang['%d new photos'] = "%d รูปภาพใหม่";
+$lang['%d new user'] = "%d ผู้ใช้งานใหม่";
+$lang['%d new users'] = "%d ผู้ใช้งานใหม่";
+$lang['%d rates'] = "%d คะแนนนิยม";
+$lang['About'] = "ข้อมูลที่เกี่ยวข้อง";
+$lang['All tags'] = "แทคทั้งหมด";
+$lang['Any tag'] = "แท็คใดๆ";
+$lang['At least one listed rule must be satisfied.'] = "ต้องมีกฏของลำดับอย่างน้อยหนึ่งกฏเพื่อยอมรับ.";
+$lang['Author'] = "เจ้าของ";
+$lang['Albums'] = "อัลบั้ม";
+$lang['Album'] = "อัลบั้ม";
+$lang['Close this window'] = "ปิดหน้าต่างนี้";
+$lang['Complete RSS feed (photos, comments)'] = "RSS feed เสร็จสมบูรณ์ (รูปภาพ, ความคิดเห็น)";
+$lang['Confirm Password'] = "ยืนยันรหัสผ่าน";
+$lang['Connection settings'] = "ตั้งค่าการเชื่อมต่อ";
+$lang['Login'] = "เข้าสู่ระบบ";
+$lang['Contact webmaster'] = "ติดต่อผู้เว็บมาสเตอร์";
+$lang['Create a new account'] = "สร้างบัญชีผู้ใช้งานใหม่";
+$lang['Created on'] = "สร้างเมื่อ";
+$lang['Creation date'] = "วันที่สร้าง";
+$lang['Current password is wrong'] = "รหัสผ่านเดิมไม่ถูกต้อง";
+$lang['Dimensions'] = "ขนาด";
+$lang['Display'] = "การแสดงผล";
+$lang['Each listed rule must be satisfied.'] = "กฏของลำดับแต่ละกฏต้องได้รับการยอมรับ.";
+$lang['Email address'] = "อี-เมล์";
+$lang['Enter your personnal informations'] = "กรอกข้อมูลส่วนตัว";
+$lang['Error sending email'] = "เกิดข้อผิดพลาดขณะส่งเมล์";
+$lang['File name'] = "ชื่อไฟล์";
+$lang['File'] = "ไฟล์";
+$lang['Filesize'] = "ขนาดไฟล์";
+$lang['Filter and display'] = "ตัวกรอง และ การแสดงผล";
+$lang['Filter'] = "ตัวกรอง";
+$lang['Forgot your password?'] = "ลืมรหัสผ่าน?";
+$lang['Go through the gallery as a visitor'] = "เข้าชมแกเลอรีเหมือนผู้เยี่ชมทั่วไป";
+$lang['Help'] = "ช่วยเหลือ";
+$lang['Identification'] = "เมนูสมาชิก";
+$lang['Photos only RSS feed'] = "RSS feed สำหรับภาพเท่านั้น";
+$lang['Keyword'] = "คำค้น";
+$lang['Links'] = "การเชื่อมโยง";
+$lang['N/A'] = "ไม่ปรากฎ";
+$lang['New on %s'] = "ใหม่เมื่อ %s";
+$lang['Notification'] = "การแจ้งเตือน";
+$lang['Number of items'] = "จำนวนรายการ";
+$lang['Original dimensions'] = "ขนาดดั้งเดิม";
+$lang['Password forgotten'] = "ลืมรหัสผ่าน";
+$lang['Password'] = "รหัสผ่าน";
+$lang['Post date'] = "วันที่โพสต์";
+$lang['Posted on'] = "โพสต์ไว้เมื่อ";
+$lang['Profile'] = "ข้อมูลส่วนตัว";
+$lang['Quick connect'] = "เชื่อมต่ออย่างเร็ว";
+$lang['RSS feed'] = "RSS feed";
+$lang['Rating score'] = "คะแนนนิยม";
+$lang['Register'] = "สมัครสมาชิก";
+$lang['Registration'] = "การสมัครสมาชิก";
+$lang['Related tags'] = "แท็กใกล้เคียง";
+$lang['Reset'] = "เริ่มใหม่";
+$lang['Retrieve password'] = "Retrieve password";
+$lang['Search rules'] = "ขอบเขตการค้นหา";
+$lang['Search tags'] = "ค้นหาแท็ค";
+$lang['Search'] = "ค้นหา";
+$lang['display available tags'] = "แสดงแท็คที่ใช้ได้";
+$lang['Since'] = "ตั้งแต่";
+$lang['Sort by'] = "จัดเรียงโดย";
+$lang['Sort order'] = "ลำดับการจัดเรียง";
+$lang['Tag'] = "แท็ค";
+$lang['Tags'] = "แท็ค";
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = "RSS feed แสดงความเคลื่อนไหวต่างๆจากเว็บ: ภาพใหม่, เปลี่ยนแปลงอัลบั้ม, ความเห็นใหม่ เพื่อใช้สำหรับ RSS feed reader.";
+$lang['Unknown feed identifier'] = "feed ที่ไม่รู้จัก";
+$lang['User comments'] = "ความคิดเห็นของผู้ใช้งาน";
+$lang['Username'] = "ชื่อผู้ใช้งาน";
+$lang['Visits'] = "เข้าชม";
+$lang['Webmaster'] = "เว็บมาสเตอร์";
+$lang['Week %d'] = "สัปดาห์ %d";
+$lang['About Piwigo'] = "เกี่ยวกับ Piwigo";
+$lang['You are not authorized to access the requested page'] = "คุณไม่มีสิทธิหรืไม่ได้รับอนุญาตให้เข้าใช้งานหน้านี้";
+$lang['add this photo to your favorites'] = "เพิ่มรูปภาพนี้เป็นภาพโปรด";
+$lang['Administration'] = "จัดการระบบ";
+$lang['all'] = "ทั้งหมด";
+$lang['ascending'] = "น้อยไปหามาก";
+$lang['author(s) : %s'] = "เจ้าของ : %s";
+$lang['Expand all albums'] = "แสดงทุกอัลบั้ม";
+$lang['posted after %s (%s)'] = "โพสต์ไว้หลังจาก %s (%s)";
+$lang['posted before %s (%s)'] = "โพสต์ไว้ก่อน %s (%s)";
+$lang['posted between %s (%s) and %s (%s)'] = "โพสต์ระหว่าง %s (%s) และ %s (%s)";
+$lang['posted on %s'] = "โพสต์เมื่อ %s";
+$lang['Best rated'] = "คะแนนนิยมที่มากสุด";
+$lang['display best rated photos'] = "แสดงรูปภาพที่มีคะแนนนิยมมากที่สุด";
+$lang['Calendar'] = "ปฏิทิน";
+$lang['All'] = "ทั้งหมด";
+$lang['display each day with photos, month per month'] = "แสดงภาพในแต่ละวัน, เดือนต่อเดือน";
+$lang['View'] = "เข้าชม";
+$lang['chronology_monthly_calendar'] = "ปฏิทินแสดงเป็นเดือน";
+$lang['chronology_monthly_list'] = "แสดงรายเดือน";
+$lang['chronology_weekly_list'] = "แสดงรายสัปดาห์";
+$lang['Click here if your browser does not automatically forward you'] = "คลิกที่นี่ หากบราวเวอร์ของคุณไม่ดำเนินการโดยอัติโนมัติ";
+$lang['comment date'] = "ความคิดเห็นวันที่";
+$lang['Comment'] = "ความคิดเห็น";
+$lang['Your comment has been registered'] = "ความคิดเห็นของคุณได้ถูกบันทึกแล้ว";
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = "ป้องกันการล่ม ของระบบ : กรุณารอสักครู่ ก่อนลองโพสความคิดเห็นอื่นอีก";
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = "ความคิดเห็นของคุณไม่ได้ถูกบันทึก เพราะว่ามันอาจไม่ถูกต้องตามกฎที่กำหนดไว้";
+$lang['An administrator must authorize your comment before it is visible.'] = "จะต้องให้ผู้ดูแลระบบตรวจสอบความเห็นของท่านก่อน.";
+$lang['This login is already used by another user'] = "ื่อเข้าสู่ระบบนี้ถูกใช้ไปแล้ว โดยผู้ใช้งานอีกคน";
+$lang['Comments'] = "ความคิดเห็น";
+$lang['Add a comment'] = "เพิ่มความคิดเห็น";
+$lang['created after %s (%s)'] = "สร้างขึ้นหลังจาก %s (%s)";
+$lang['created before %s (%s)'] = "สร้างขึ้นก่อน %s (%s)";
+$lang['created between %s (%s) and %s (%s)'] = "สร้างขึ้นระหว่าง %s (%s) และ %s (%s)";
+$lang['created on %s'] = "สร้างขึ้นเมื่อ %s";
+$lang['Customize'] = "ปรับแต่งการตั้งค่า";
+$lang['Your Gallery Customization'] = "การปรับแต่งแกลอรี่ของคุณ";
+$lang['day'][0] = "วันอาทิตย์";
+$lang['day'][1] = "วันจันทร์";
+$lang['day'][2] = "วันอังคาร";
+$lang['day'][3] = "วันพุธ";
+$lang['day'][4] = "วันพฤหัสบดี";
+$lang['day'][5] = "วันศุกร์";
+$lang['day'][6] = "วันเสาร์";
+$lang['Default'] = "ค่าปกติ";
+$lang['delete this photo from your favorites'] = "ลบรูปภาพนี้ออกจากรายการโปรด";
+$lang['Delete'] = "ลบ";
+$lang['descending'] = "มาก-น้อย";
+$lang['edit'] = "แก้ไข";
+$lang['wrong date'] = "วันที่ไม่ถูกต้อง";
+$lang['excluded'] = "ได้ถูกแยกออกไป";
+$lang['Your favorites'] = "รายการโปรดของคุณ";
+$lang['display your favorites photos'] = "แสดงรูปภาพในรายการโปรดของคุณ";
+$lang['Favorites'] = "รายการโปรด";
+$lang['First'] = "ลำดับแรก";
+$lang['The gallery is locked for maintenance. Please, come back later.'] = "The gallery is locked for maintenance. Please, come back later.";
+$lang['Page generated in'] = "เวลาในการสร้างหน้านี้";
+$lang['guest'] = "ผู้เยี่ยมชม";
+$lang['Hello'] = "สวัสดี";
+$lang['available for administrators only'] = "สำหรับผู้ดูแลระบบเท่านั้น";
+$lang['display this album'] = "แสดงอัลบั้มนี้";
+$lang['display last user comments'] = "แสดงความเห็นล่าสุด";
+$lang['customize the appareance of the gallery'] = "ปรับแต่งมุมมองของแกลอรี่";
+$lang['search'] = "ค้นหา";
+$lang['Home'] = "หน้าหลัก";
+$lang['in this album'] = "ในอัลบั้มนี้";
+$lang['in %d sub-album'] = "ใน %d อัลบั้มย่อย";
+$lang['in %d sub-albums'] = "ใน %d อัลบั้มย่อย";
+$lang['included'] = "รวม";
+$lang['Invalid password!'] = "ชื่อผู้ใช้งาน หรือ รหัสผ่านไม่ถูกต้อง!";
+$lang['Language'] = "ภาษา";
+$lang['last %d days'] = "ล่าสุด %d วัน";
+$lang['Last'] = "ล่าสุด";
+$lang['Logout'] = "ออกจากระบบ";
+$lang['obligatory'] = "จำเป็น";
+$lang['display a calendar by creation date'] = "แสดงปฏิทินตามวันที่สร้างอัลบั้ม";
+$lang['display all photos in all sub-albums'] = "แสดงรูปภาพทั้งหมดในอัลบั้มย่อย";
+$lang['return to normal view mode'] = "กลับไปยังโหมดการดูปกติ";
+$lang['display a calendar by posted date'] = "แสดงปฏิทินตามวันที่โพส";
+$lang['month'][10] = "ตุลาคม";
+$lang['month'][11] = "พฤษจิกายน";
+$lang['month'][12] = "ธันวาคม";
+$lang['month'][1] = "มกราคม";
+$lang['month'][2] = "กุมภาพันธ์";
+$lang['month'][3] = "มีนาคม";
+$lang['month'][4] = "เมษายน";
+$lang['month'][5] = "พฤษภาคม";
+$lang['month'][6] = "มิถุยายน";
+$lang['month'][7] = "กรกฎาคม";
+$lang['month'][8] = "สิงหาคม";
+$lang['month'][9] = "กันยายน";
+$lang['Most visited'] = "เข้าชมสูงสุด";
+$lang['display most visited photos'] = "แสดงรูปภาพที่เข้าชมสูงสุด";
+$lang['The number of photos per page must be a not null scalar'] = "จำนวนของการแสดงภาพถ่ายต่อหนึ่งหน้า จะต้องเป็นเลขจำนวนเต็ม";
+$lang['Number of photos per page'] = "จำนวนรูปภาพต่อหนึ่งหน้า";
+$lang['Unknown identifier'] = "ไม่ได้ระบุตัวตน";
+$lang['New password'] = "รหัสผ่านใหม่";
+$lang['Rate this photo'] = "คะแนนนิยมรูปภาพนี้";
+$lang['Next'] = "ภาพต่อไป";
+$lang['no rate'] = "ไม่มี คะแนนนิยม";
+$lang['Photos posted within the last %d day.'] = "รูปภาพที่ถูกโพสเมื่อ %d วันก่อนนี้.";
+$lang['Photos posted within the last %d days.'] = "รูปภาพที่ถูกโพสเมื่อ %d วันก่อนนี้.";
+$lang['password updated'] = "รหัสผ่านได้ถูกอัพเดตแล้ว";
+$lang['Recent period must be a positive integer value'] = "ช่วงระยะเวลาจะต้องเป็นค่าจำนวนเต็มบวก";
+$lang['photo'] = "รูปภาพ";
+$lang['Click on the photo to see it in high definition'] = "คลิกที่รูปภาพเพื่อดูขนาดใหญ่กว่า";
+$lang['Show file metadata'] = "แสดงข้อมูลไฟล์";
+$lang['Powered by'] = "พัฒนาโดย";
+$lang['Preferences'] = "การตั้งค่า";
+$lang['Previous'] = "ก่อนหน้า";
+$lang['Random photos'] = "สุ่มรูปภาพ";
+$lang['display a set of random photos'] = "แสดงรูปภาพโดยการสุ่ม";
+$lang['Recent albums'] = "อัลบั้มล่าสุด";
+$lang['display recently updated albums'] = "แสดงอัลบั้มที่ได้อัพเดตล่าสุด";
+$lang['Recent period'] = "ช่วงเวลาล่าสุด";
+$lang['Recent photos'] = "ภาพถ่ายล่าสุด";
+$lang['display most recent photos'] = "แสดงภาพถ่ายล่าสุด";
+$lang['Redirection...'] = "กำลังเรียกไปยัง...";
+$lang['Please, enter a login'] = "กรุณากรอกชื่อและรหัสผ่านเพื่อเข้าสู่ระบบ";
+$lang['login mustn\'t end with a space character'] = "ชื่อเข้าสู่ระบบต้องไม่ลงท้ายด้วยอักขระช่องว่าง";
+$lang['login mustn\'t start with a space character'] = "ชื่อเข้าสู่ระบบไม่ต้องเริ่มต้นด้วยอักขระช่องว่าง";
+$lang['this login is already used'] = "ชื่อเข้าสู่ระบบนี้ถูกใช้ไปแล้ว";
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = "ที่อยู่อีเมลจะต้องมีลักษณะ xxx@yyy.eee (ตัวอย่าง : jack@altern.org)";
+$lang['Auto login'] = "เข้าสู่ระบบอัตโนมัติ";
+$lang['remove this tag from the list'] = "ลบแท็กนี้จากรายการ";
+$lang['representative'] = 'รูปภาพขนาดย่อประจำอัลบั้ม';
+$lang['Search for Author'] = "ค้นหาช่างภาพ";
+$lang['Search in albums'] = "ค้นหาในอัลบั้ม";
+$lang['Date'] = "วันที่";
+$lang['End-Date'] = "วันสุดท้าย";
+$lang['Kind of date'] = "ชนิดของวันที่";
+$lang['Search for words'] = "ค้นหาคำ";
+$lang['Search for all terms'] = "ค้นหาคำทั้งหมด";
+$lang['Empty query. No criteria has been entered.'] = "คำถามว่างเปล่า. ไม่มีคำถามนี้ปรากฎอยู่.";
+$lang['Search results'] = "ผลการค้นหา";
+$lang['Search in sub-albums'] = "ค้นหาในอัลบั้มย่อย";
+$lang['searched words : %s'] = "คำที่ค้นหาได้ : %s";
+$lang['Contact'] = "ติดต่อ";
+$lang['set as album representative'] = "ตั้งรูปภาพนี้เป็นปกอัลบั้ม";
+$lang['Show number of comments'] = "แสดงจำนวนของความคิดเห็น";
+$lang['Show number of hits'] = "แสดงจำนวนครั้งที่เข้าชม";
+$lang['slideshow'] = "สไลด์โชว์";
+$lang['stop the slideshow'] = "หยุดการสไลด์โชว์";
+$lang['Specials'] = "เมนูพิเศษ";
+$lang['SQL queries in'] = "SQL queries ใน";
+$lang['display only recently posted photos'] = "แสดงเฉพาะรูปภาพที่เพิ่งถูกโพสเมื่อเร็วๆ นี้";
+$lang['return to the display of all photos'] = "กลับไปแสดงรูปภาพทั้งหมด";
+$lang['the beginning'] = "การเริ่มต้น";
+$lang['Thumbnails'] = "รูปภาพขนาดย่อ";
+$lang['Menu'] = "เมนู";
+$lang['A comment on your site'] = "แสดงความคิดเห็นถึงคุณ";
+$lang['today'] = "วันนี้";
+$lang['Update your rating'] = "อัพเดตคะแนนิยมของคุณ";
+$lang['the username must be given'] = "จำเป็นต้องกรอกชื่อผู้ใช้";
+$lang['useful when password forgotten'] = "ใช้ในกรณีที่ลืมรหัสผ่าน";
+$lang['Quick search'] = "ค้นหาแบบเร็ว...";
+$lang['Connected user: %s'] = "ได้เชื่อมต่อไปยังผู้ใช้งาน: %s";
+$lang['IP: %s'] = "ไอพี: %s";
+$lang['Browser: %s'] = "บราวเซอร์: %s";
+$lang['Author: %s'] = "ช่างภาพ: %s";
+$lang['Comment: %s'] = "ความคิดเห็น: %s";
+$lang['Comment by %s'] = "แสดงความคิดเห็นโดย %s";
+$lang['User: %s'] = "ผู้ใช้งาน: %s";
+$lang['Email: %s'] = "อีเมล: %s";
+$lang['Admin: %s'] = "ผู้ดูแลระบบ: %s";
+$lang['Registration of %s'] = "การสมัครสมาชิกของ %s";
+$lang['Album: %s'] = "อัลบั้ม: %s";
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = "สถานะไม่เป็นที่ยอมรับ \"ผู้เยี่ยมชม\", ปกติสถานะนี้จะถูกใช้. กรุณาแจ้งไปยังเว็บมาสเตอร์.";
+$lang['this email address is already in use'] = "อีเมลนี้ได้ถูกใข้ไปแล้ว";
+$lang['Album results for'] = "ผลการค้นหาอัลบั้มสำหรับ";
+$lang['Tag results for'] = "ผลการค้นหา";
+$lang['from %s to %s'] = "จาก %s ถึง %s";
+$lang['Play of slideshow'] = "เล่น สไลด์โชว์";
+$lang['Pause of slideshow'] = "พักการเล่น สไลด์โชว์";
+$lang['Repeat the slideshow'] = "เล่นซ้ำ สไลด์โชว์";
+$lang['Not repeat the slideshow'] = "ไม่ต้องเล่นซ้ำ สไลด์โชว์";
+$lang['Reduce diaporama speed'] = "ลดความเร็ว การเล่นสไลด์โชว์";
+$lang['Accelerate diaporama speed'] = "เพิ่มความเร็ว การเล่นสไลด์โชว์";
+$lang['Submit'] = "ยอมรับ";
+$lang['Yes'] = "ใช่";
+$lang['No'] = "ไม่";
+$lang['%d photo'] = "%d รูปภาพ";
+$lang['%d photos'] = "%d รูปภาพ";
+$lang['%d photo is also linked to current tags'] = "%d ภาพได้ถูกเชื่อมโยงไปยังแท็กปัจจุบัน";
+$lang['%d photos are also linked to current tags'] = "%d ภาพได้ถูกเชื่อมโยงไปยังแท็กปัจจุบัน";
+$lang['display photos linked to this tag'] = "แสดงภาพถ่ายที่ได้เชื่อมโยงกับแท็กนี้";
+$lang['photos posted during the last %d days'] = "รูปภาพที่ได้ถูกโพสในช่วง %d วันก่อน";
+$lang['Piwigo Help'] = "ช่วยเหลือ";
+$lang['Rank'] = "อันดับ";
+$lang['group by letters'] = "กลุ่มตามตัวอักษร";
+$lang['letters'] = "ตัวอักษร";
+$lang['show tag cloud'] = "แสดงแท็กคลาวด์";
+$lang['cloud'] = "คลาวด์";
+$lang['Reset to default values'] = "กลับไปใช้งานค่าเริ่มต้น";
+$lang['delete all photos from your favorites'] = "ลบภาพทั้งหมดออกจากรายการโปรดของคุณ";
+$lang['Sent by'] = "ถูกส่งโดย";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "คุกกี้ถูกบล็อกหรือไม่สนับสนุนในเบราว์เซอร์ของคุณ คุณต้องเปิดใช้งานคุกกี้เพื่อเข้าสู่ระบบ.";
+$lang['Edit a comment'] = "แก้ไขความคิดเห็น";
+$lang['Are you sure?'] = "คุณแน่ใจหรือไม่?";
+$lang['(!) This comment requires validation'] = '(!) ความคิดเห็นนี้จำเป็นต้องใได้รับการตรวจสอบก่อน';
+$lang['Welcome'] = 'ยินดีต้อนรับ';
+$lang['Welcome to your Piwigo photo gallery!'] = 'ยินดีต้อนรับสู่ Piwigo แกลลอรี่!';
+$lang['... or browse your empty gallery'] = '... หรือเลือกแกลลอรี่ที่ว่าง';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... ฉันยังไม่ต้องการเพิ่มรูปถ่ายในตอนนี้ (ซึ่งคุณสามารถเพิ่มรูปถ่ายได้ในภายหลัง) คลิกเพื่อเข้าชมหน้า Piwigo แกลลอรี่ของคุณ';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'สวัสดี %s, Piwigo แกลลอรี่ของคุณตอนนี้ว่างเปล่า!';
+$lang['I want to add photos'] = 'ฉันต้องการเพิ่มรูปภาพตอนนี้';
+$lang['Manage this user comment: %s'] = 'จัดการความคิดเห็นของผู้ใช้งานคนนี้: %s';
+$lang['Email address is missing. Please specify an email address.'] = "คุณยังไม่ได้ระบุอยู่อีเมล. กรุณาระบุที่อยู่อีเมล์.";
+$lang['This author modified following comment:'] = 'ผู้เขียนได้แก้ไขความคิดเห็นดังต่อไปนี้:';
+$lang['This author removed the comment with id %d'] = 'ผู้เขียนได้ลบความคิดเห็นโดย ไอดี %d';
+$lang['html tags are not allowed in login'] = 'html แท็ก นี้จะไม่ได้รับอนุญาตในการเข้าสู่ระบบ';
+$lang['Invalid username or email'] = 'ชื่อผู้ใช้ หรือ ที่อยู่อีเมล์ไม่ถูกต้อง';
+$lang['Password reset is not allowed for this user'] = 'การีเซ็ตรหัสผ่าน หรือการตั้งรหัสผ่านใหม่ไม่อนุญาตให้ผู้ใช้งานนี้ทำได้';
+$lang['User "%s" has no email address, password reset is not possible'] = 'ผู้ใช้งาน "%s" ไม่มีที่อยู่อีเมล์,ไม่สามารถรีเซ็ตรหัสผ่านได้';
+$lang['Someone requested that the password be reset for the following user account:'] = 'มีบางคนได้ร้องขอการรีเซ็ตรหัสผ่าน ดังต่อไปนี้:';
+$lang['Username "%s" on gallery %s'] = 'ชื่อผู้ใช้งาน "%s" ในแกลลอรี่ %s';
+$lang['To reset your password, visit the following address:'] = 'เพื่อรีเซ็ตรหัสผ่านของคุณ, ให้เข้าไปที่:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'ถ้านี้คือความผิดพลาด, อีเมล์ฉบับนี้จะไม่มีผลอะไรเลย.';
+$lang['Password Reset'] = 'รีเซ็ตรหัสผ่าน';
+$lang['Check your email for the confirmation link'] = 'กรุณาตรวจสอบอีเมล์ของคุณสำหรับการยืนยันการใช้งาน';
+$lang['Invalid key'] = 'คีย์ไม่ถูกต้อง';
+$lang['The passwords do not match'] = 'รหัสผ่านไม่ตรงกัน';
+$lang['Your password has been reset'] = 'รหัสผ่านของคุณได้รับการรีเซ็ตใหม่';
+$lang['Return to home page'] = 'กลับไปยังหน้าหลัก';
+$lang['Please enter your username or email address.'] = 'กรุณาใส่ชื่อผู้ใช้หรือที่อยู่อีเมลของคุณ.';
+$lang['You will receive a link to create a new password via email.'] = 'คุณจะได้รับลิงค์เพื่อสร้างรหัสผ่านใหม่ทางอีเมลของคุณ.';
+$lang['Username or email'] = 'ชื่อผู้ใช้งานหรืออีเมล';
+$lang['Change my password'] = 'เปลี่ยนรหัสผ่านของฉัน';
+$lang['Enter your new password below.'] = 'กำหนดรหัสผ่านใหม่ของคุณด้านล่าง.';
+$lang['EXIF Metadata'] = 'ข้อมูล EXIF';
+$lang['IPTC Metadata'] = 'ข้อมูล IPTC';
+$lang['Download this file'] = 'ดาวน์โหลดไฟล์นี้';
+$lang['Download'] = 'ดาวน์โหลด';
+$lang['Edit'] = 'แก้ไข';
+$lang['Hello %s,'] = 'สวัสดี %s,';
+$lang['Search by date'] = 'ค้นหาตามวัน';
+$lang['Search for any term'] = 'ค้นหาคำใด ๆ';
+$lang['Send my connection settings by email'] = 'ส่งการตั้งค่าการเชื่อมต่อของฉันโดยทางอีเมล์';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'การลงทะเบียนสำเร็จแล้ว, และคุณจะได้รับอีเมลที่มีการตั้งค่าการเชื่อมต่อของคุณ ยินดีต้อนรับ!';
+$lang['Username modification'] = 'การปรับเปลี่ยนชื่อผู้ใช้';
+$lang['Your username has been successfully changed to : %s'] = 'ชื่อผู้ใช้งานคุณได้ถูกเปลี่ยนเป็น : %s เรียบร้อยแล้ว';
+$lang['square'] = 'สี่เหลี่ยม';
+$lang['thumb'] = 'ภาพตัวอย่าง';
+$lang['small'] = 'เล็ก';
+$lang['medium'] = 'กลาง';
+$lang['large'] = 'ใหญ่';
+$lang['xlarge'] = 'ใหญ่กว่า';
+$lang['xxlarge'] = 'ใหญ่มาก';
+$lang['Original'] = 'ขนาดดั้งเดิม';
+$lang['Thank you for registering at %s!'] = 'ขอบคุณสำหรับการลงทะเบียนที่ %s!';
+$lang['Here are your connection settings'] = 'นี่คือการตั้งค่าการเชื่อมต่อของคุณ';
+$lang['Password: %s'] = 'รหัสผ่าน: %s';
+$lang['Username: %s'] = 'ชื่อผู้ใช้งาน: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'ถ้าคุณไม่ได้รับอีเมล์ หรือหากได้รับอีเมล์ที่ไม่ถูกต้อง, โปรดติดต่อเราที่ %s';
+
+$lang['%d rate'] = '%d คะแนน';
+$lang['Bad request'] = 'หน้าที่เรียก ไม่ถูกต้อง';
+$lang['Desktop'] = 'เดสก์ท็อป';
+$lang['Forbidden'] = 'ปฏิเสธการเข้าถึง';
+$lang['Mobile'] = 'โมบาย';
+$lang['Page not found'] = 'ไม่พบหน้าที่เรียก';
+$lang['Photo sizes'] = 'ขนาดรูปภาพ';
+$lang['Show latest comments first'] = 'แสดงคอมเม้นต์ล่าสุดขึ้นก่อน';
+$lang['Show oldest comments first'] = 'แสดงคอมเม้นต์หลังสุดขึ้นก่อน';
+$lang['View in'] = 'ดูใน';
+$lang['2small'] = 'เล็กสุด';
+$lang['Date created, new &rarr; old'] = 'วันที่สร้างใหม่ &rarr; เก่า';
+$lang['Date created, old &rarr; new'] = 'วันที่สร้างเก่า &rarr; ใหม่';
+$lang['Date posted, new &rarr; old'] = 'วันที่โพสใหม่ &rarr; เก่า';
+$lang['Date posted, old &rarr; new'] = 'วันที่โพสเก่า &rarr; ใหม่';
+$lang['File name, A &rarr; Z'] = 'ชื่อไฟล์ A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'ชื่อไฟล์ Z &rarr; A';
+$lang['Manual sort order'] = 'จัดเรียงตามคำสั่ง';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'ระบุตัวเลข 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'ระบุตัวเลข 9 &rarr; 1';
+$lang['Permalink for album not found'] = 'ไม่พบลิงค์ที่เชื่อมโยงมายังอัลบั้มนี้';
+$lang['Photo title, A &rarr; Z'] = 'ชื่อรูปภาพ A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'ชื่อรูปภาพ Z &rarr; A';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo พบข้อผิดพลาดที่ไม่สามารถกู้คืนได้';
+$lang['Rating score, high &rarr; low'] = 'อันดับคะแนน สูง &rarr; ต่ำ';
+$lang['Rating score, low &rarr; high'] = 'อันดับคะแนน ต่ำ &rarr; สูง';
+$lang['Requested album does not exist'] = 'ไม่พบอัลบั้มที่ร้องขอ';
+$lang['Requested tag does not exist'] = 'ไม่พบป้ายชื่อที่ร้องขอ';
+$lang['Visits, high &rarr; low'] = 'เข้าชม สูง &rarr; ต่ำ';
+$lang['Visits, low &rarr; high'] = 'เข้าชม ต่ำ &rarr; สูง';
+$lang['xsmall'] = 'XS - เล็กพิเศษ';
+$lang['Email address is mandatory'] = 'จำเป็นต้องมีที่อยู่อีเมล์';
+$lang['Username is mandatory'] = 'จำเป็นต้องมีชื่อผู้ใช้งาน';
+$lang['mandatory'] = 'จำเป็น';
+$lang['Website'] = 'เว็บไซต์';
+$lang['Your website URL is invalid'] = 'ที่อยู่เว็บไซต์ของคุณไม่ถูกต้อง';
+$lang['Email'] = 'อีเมล';
+$lang['First Page'] = 'หน้าแรก';
+$lang['Go back to the album'] = 'กลับไปยังอัลบั้ม';
+$lang['Last Page'] = 'หน้าสุดท้าย';
+$lang['Password is missing. Please enter the password.'] = "คุณยังไม่ได้กำหนดรหัสผ่าน. กรุณากรอรหัสผ่าน.";
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = "คุณยังไม่ได้ยืนยันรหัสผ่าน. กรุณายืนยันรหัสผ่านเดิมอีกครั้ง.";
+?>
Index: /tags/2.6.0RC1/language/th_TH/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/th_TH/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/help/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/th_TH/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/th_TH/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = "การติดตั้ง";
+$lang['Basic configuration'] = "การตั้งค่าพื้นฐาน";
+$lang['Default gallery language'] = "กำหนดภาษาพื้นฐานสำหรับแกลลอรี่";
+$lang['Database configuration'] = "การตั้งค่าฐานข้อมูล";
+$lang['Admin configuration'] = "การตั้งค่าผู้ดูแลระบบ";
+$lang['Start Install'] = "เริ่มการติดตั้ง";
+$lang['It will be shown to the visitors. It is necessary for website administration'] = "มันจะแสดงส่วนนี้ไปยังผู้เยี่ยมชม. ซึ่งมันจำเป็นสำหรับผู้ดูแลระบบของเว็บไซต์";
+$lang['Connection to server succeed, but it was impossible to connect to database'] = "เชื่อมต่อเซิร์ฟเวอร์เรียบร้อยแล้ว, แต่ไม่สามารถเชื่อมต่อฐานข้อมูลได้";
+$lang['Can\'t connect to server'] = "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้";
+$lang['Host'] = "เซิร์ฟเวอร์";
+$lang['User'] = "ชื่อผู้ใช้งาน";
+$lang['user login given by your host provider'] = "ชื่อผู้ใช้งานจะได้รับจากผู้ให้บริการเซิร์ฟเวอร์";
+$lang['user password given by your host provider'] = "รหัสผ่านของผู้ใช้งานจะได้รับจากผู้ให้บริการเซิร์ฟเวอร์";
+$lang['Database name'] = "ชื่อฐานข้อมูล";
+$lang['also given by your host provider'] = "ซึ่งจะได้รับจากผู้ให้บริการเซิร์ฟเวอร์ของคุณ";
+$lang['Database table prefix'] = "คำนำหน้าตารางฐานข้อมูล";
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = "ชื่อฐานข้อมูลจะถูกกำกับด้วยคำนำหน้าตารางฐานข้อมูล ที่คุณได้กำหนดไว้  (หากคุณกำหนดไว้ มันจะง่ายต่อการจัดการฐานข้อมูล)";
+$lang['enter a login for webmaster'] = "กำหนดชื่อในการเข้าสู่ระบบสำหรับเว็บมาสเตอร์";
+$lang['webmaster login can\'t contain characters \' or "'] = "ชื่อเข้าสู่ระบบจะต้องไม่ประกอบด้วยเครื่องหมาย ' หรือ \"";
+$lang['please enter your password again'] = "กรุณากรอกรหัสผ่านอีกครั้ง";
+$lang['Keep it confidential, it enables you to access administration panel'] = "โปรดเก็บไว้เป็นความลับ, เพราะมันสามารถใช้เพื่อเข้าถึงหน้าการจัดการระบบ Piwigo แกลลอรี่ ของคุณได้";
+$lang['Password [confirm]'] = "รหัสผ่าน [ยืนยัน]";
+$lang['verification'] = "การยืนยัน";
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = "ต้องการความช่วยเหลือ? โปรดถามคำถามไว้ได้ที่ <a href=\"%s\">บอร์ดข้อความของ Piwigo</a>.";
+$lang['Visitors will be able to contact site administrator with this mail'] = "ผู้เยี่ยมชมจะสามารถที่จะใช้อีเมลนี้ เพื่อติดต่อกับผู้ดูแลระบบได้";
+$lang['PHP 5 is required'] = "PHP 5 จำเป็นต้องมี";
+$lang['It appears your webhost is currently running PHP %s.'] = "มันจะแสดงบนเวิร์ฟเวอร์ที่คุณใช้งานอยู่ ซึ่งคุณใช้งานอยู่บน PHP %s.";
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo อาจจะลองปรับการตั้งค่าของคุณไปยัง PHP 5 โดยการสร้างหรือแก้ไขปรับแต่งไฟล์ .htaccess.";
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "จำไว้ว่า คุณสามารถเปลี่ยนแปลงการตั้งค่าในภายหลังได้ด้วยตนเอง.";
+$lang['Try to configure PHP 5'] = "ลองตั้งค่า PHP 5 ใหม่";
+$lang['Sorry!'] = "เสียใจ!";
+$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo ไม่สามารถตั้งค่า PHP 5. ได้";
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "คุณควรติดต่อไปยังผู้ให้บริการเซิร์ฟเวอร์ของคุณเพื่อสอบถามว่า เซิร์ฟเวอร์ดังกล่าวนี้สนับสนุนการทำงานของ PHP 5 หรือว่าคุณสามารถสลับไปใช้งาน PHP 5 ด้วยตนเอง ได้หรือไม่อย่างไร.";
+$lang['Hope to see you back soon.'] = "หวังว่าจะได้เจอคุณเร็วๆ นี้.";
+$lang['Congratulations, Piwigo installation is completed'] = 'ยินดีด้วย, การติดตั้ง Piwigo ได้ดำเนินการเสร็จเรียบร้อยแล้ว';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'คัดลอกข้อความในกล่องข้อความด้านล่าง เพื่อนำไปวางในไฟล์ "local/config/database.inc.php" (ข้อควรระวัง : ไฟล์ database.inc.php จะต้องเป็นข้อความที่ได้คัดลอกจากภายในกล่องข้อความเท่านั้น, จะต้องไม่มีบรรทัดเกิน หรืออักขระว่าง)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'การสร้างไฟล์ตั้งค่า local/config/database.inc.php ล้มเหลว.';
+$lang['Download the config file'] = 'ดาวน์โหลดไฟล์ตั้งค่า';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'คุณสามารถดาวน์โหลดไฟล์ตั้งค่า และอัพไปไว้ยังไดเรกทอรี่ local/config ของ Piwigo.';
+$lang['Just another Piwigo gallery'] = 'เพียงแค่ Piwigo แกลลอรี่ เว็บหนึ่ง';
+$lang['Welcome to my photo gallery'] = 'ยินดีต้อนรับสู่แกลลอรี่รูปภาพของฉัน';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'อย่าลังเลที่จะปรึกษาหรือโพสคำถามในฟอรั่มของเรา เพื่อขอความช่วยเหลือใดๆ :%s';
+$lang['Welcome to your new installation of Piwigo!'] = 'ยินดีต้อนรับสู่การติดตั้งใหม่ของ Piwigo!';
+$lang['localhost or other, supplied by your host provider'] = 'localhost หรืออื่น ๆ ที่จัดทำโดยผู้ให้บริการโฮสต์ของคุณ';
+?>
Index: /tags/2.6.0RC1/language/th_TH/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/th_TH/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ภาษาไทย [TH]
Index: /tags/2.6.0RC1/language/th_TH/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/th_TH/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/th_TH/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,43 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2011 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+
+$lang['Upgrade'] = "อัพเกรด";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "หน้านี้คือ หน้าการอัพเกรดฐานข้อมูลจาก Piwigo เวอร์ชั่นเก่าของคุณ ไปยังเวอร์ชั่นใหม่. ซึ่งการอัพเกรดจะทำให้ ระบบ Piwigo แกลลอรี่ ของคุณเป็นปัจจบัน หรือเป็นการใช้งานบนเวอร์ชั่นที่ถูก <strong>ปล่อย %s</strong> (หรือ เทียบเท่า).";
+$lang['Upgrade from version %s to %s'] = "อัพเกรดจากเวอร์ชั่น %s ไปยัง %s";
+$lang['Statistics'] = "สถิติ";
+$lang['total upgrade time'] = "ระยะเวลาการอัพเกรดทั้งหมด";
+$lang['total SQL time'] = "เวลา SQL ทั้งหมด";
+$lang['SQL queries'] = "SQL queries";
+$lang['Upgrade informations'] = "ข้อมูลการอัพเกรด";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "การปรับปรุงระบบโปรดตรวจสอบใน [การจัดการระบบ>เครื่องมือ>การปรับปรุง] หากคุณพบปัญหาใดๆ ในการอัพเกรด.";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "โปรดระมัดระวัง, ปลั๊กอินที่คุณใช้งานอยู่ได้ถูกยกเลิกการใช้งานแล้ว. คุณจะต้องตรวจสอบก่อนการอัพเกรดปลั๊กอิน:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "สำหรับผู้ดูแลระบบเท่านั้นที่สามารภทำการอัพเกรดระบบได้: โปรดเข้าสู่ระบบด้านล่าง.";
+$lang['You do not have access rights to run upgrade'] = "คุณไม่ได้เข้าถึงการอัพเกรดอย่างถูกต้อง";
+$lang['All sub-albums of private albums become private'] = "อัลบั้มย่อยทั้งหมดของอัลบั้มส่วนตัว จะกลายเป็นอัลบั้มส่วนตัว";
+$lang['User permissions and group permissions have been erased'] = "การอนุญาตให้สิทธฺ์ของผู้ใช้งานและกลุ่มจะถูกลบ";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "รูปภาพขนาดย่อ คำนำหน้าของรูปภาพขนาดย่อ และที่อยู่เมลของเว็บมาสเตอร์เท่านั้นที่จะได้ถูกบันทึกจากการตั้งค่าครั้งก่อน";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'ใน <i>%s</i>, ก่อน <b>?></b>, ใส่:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'โปรดระมัดระวัง, ธีมที่คุณใช้งานอยู่ได้ถูกยกเลิกการใช้งานแล้ว. คุณจะต้องตรวจสอบก่อนการอัพเกรดธีม:';
+?>
Index: /tags/2.6.0RC1/language/tr_TR/about.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>Bu resim galerisi Piwigo kullanılarak oluşturulmuştur.</p>
+
+<p>Piwigo web için tasarlanan bir resim galerisi yazılımıdır, kullanıcı ve gelistiricilerden oluşan aktif bir topluluk tarafından hazırlanmıştır. Eklentiler sayesinde Piwigo kolaylıkla kişiselleştirilebilir. Piwigo'nun tamamen ücretsiz olması ve açik kaynak kodlu (geliştirilebilir) bir yapısı olması da cabası..</p>
+
+<p id="linkToPiwigo"><a href="http://tr.piwigo.org">Daha fazla bilgi için Piwigo'nun Web sitesini ziyaret edin!</a></p>
+
+<p> Türkçe çeviriler bu çevirmenler tarafından yapılmaktadır (alfabetik sırayla isimleri):
+
+	<ul>
+		<li> <a href="http://piwigo.org/forum/profile.php?id=18458">hakanselcuk</a></li>
+		<li> <a href="http://piwigo.org/forum/profile.php?id=16860">LazBoy</a></li>
+		<li> <a href="http://piwigo.org/forum/profile.php?id=7403">Nakre</a></li>
+	</ul>
+Çevirmenlere çok teşekkürler! </P>
Index: /tags/2.6.0RC1/language/tr_TR/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/admin.lang.php	(revision 25596)
@@ -0,0 +1,971 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['... or '] = '...veya ';
+$lang[' and %d virtual'] = 've %d sanal';
+$lang['%d album including'] = '%d albüm dahil';
+$lang['%d album moved'] = '%d albüm taşındı';
+$lang['%d albums including'] = '%d albüm dahil';
+$lang['%d albums moved'] = '%d albüm taşındı';
+$lang['%d anomalies have been detected.'] = '%d anormallikler tespit edildi.';
+$lang['%d anomalies have been detected corrected.'] = '%d anormallikler tespit edildi ve düzeltildi.';
+$lang['%d anomalies have been ignored.'] = '%d anormallikler yok sayıldı.';
+$lang['%d anomalies have not been corrected.'] = '%d anormallik düzeltilemedi.';
+$lang['%d anomaly has been corrected.'] = '%d anormallik düzeltildi.';
+$lang['%d anomaly has been detected.'] = '%d anormallik tespit edildi.';
+$lang['%d anomaly has been ignored.'] = '%d anormallik yok sayıldı.';
+$lang['%d anomaly has not been corrected.'] = '%d anormallik düzeltilemedi.';
+$lang['%d association'] = '%d bağlantı';
+$lang['%d associations'] = '%d bağlantı';
+$lang['%d group'] = '%d grup';
+$lang['%d groups'] = '%d grup';
+$lang['%d guest'] = '%d misafir';
+$lang['%d guests'] = '%d misafir';
+$lang['%d line filtered'] = '%d satır filtre edildi';
+$lang['%d lines filtered'] = '%d satır filtre edildi';
+$lang['%d mail was not sent.'] = '%d posta gönderilemedi.';
+$lang['%d mail was sent.'] = '%d posta gönderildi.';
+$lang['%d mails were not sent.'] = '%d posta gönderilemedi.';
+$lang['%d mails were sent.'] = '%d posta gönderildi.';
+$lang['%d member'] = '%d üye';
+$lang['%d members'] = '%d üye';
+$lang['%d of %d photos selected'] = '%d/%d fotoğraf seçildi';
+$lang['%d parameter was updated.'] = '%d parametre güncellendi.';
+$lang['%d parameters were updated.'] = '%d parametre güncellendi.';
+$lang['%d photo was deleted'] = '%d fotoğraf silindi';
+$lang['%d photos uploaded'] = '%d fotoğraf yüklendi';
+$lang['%d photos were deleted'] = '%d fotoğraf silindi';
+$lang['%d physical'] = '%d fiziksel';
+$lang['%d tag'] = '%d etiket';
+$lang['%d tags'] = '%d etiket';
+$lang['%d user comment rejected'] = '%d kullanıcı yorumu reddedildi';
+$lang['%d user comment validated'] = '%d kullanıcı yorumu onaylandı';
+$lang['%d user comments rejected'] = '%d kullanıcı yorumu reddedildi';
+$lang['%d user comments validated'] = '%d kullanıcı yorumu onaylandı';
+$lang['%d user deleted'] = '%d kullanıcı silindi';
+$lang['%d user was not updated.'] = '%d kullanıcı güncellenemedi.';
+$lang['%d user was updated.'] = '%d kullanıcı güncellendi.';
+$lang['%d user'] = '%d kullanıcı';
+$lang['%d users deleted'] = '%d kullanıcı silindi';
+$lang['%d users were not updated.'] = '%d kullanıcı güncellenemedi.';
+$lang['%d users were updated.'] = '%d kullanıcı güncellendi.';
+$lang['%d users'] = '%d kullanıcı';
+$lang['%d waiting for validation'] = '%d onay için bekliyor';
+$lang['%s has been successfully updated.'] = '%s başarıyla güncellendi.';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '/config/config.inc.php dosyası içindeki %s false olarak ayarlanmalı';
+$lang['%s photos can not be regenerated'] = '%s fotoğraf tekrar oluşturulamadı';
+$lang['%s photos have been regenerated'] = '%s fotoğraf tekrar oluşturuldu';
+$lang['%s value is not correct file because exif are not supported'] = '%s değeri yanlış çünkü exif desteklenmiyor';
+$lang['(this tag will be deleted)'] = '(bu etiket silinecek)';
+$lang['+ Add an upload box'] = '+ Bir yükleme kutusu ekleyin';
+$lang[', click on'] = ', üzerine tıkla';
+$lang['[%s] Visit album %s'] = '[%s] albümü gez%s';
+$lang['[NBM] Problems or questions'] = 'Sorunlar veya sorular';
+$lang['A new version of Piwigo is available.'] = 'Piwigo\'nun yeni bir sürümü mevcut.';
+$lang['Access type'] = 'Erişim türü';
+$lang['ACCESS_0'] = 'Serbest erişim';
+$lang['ACCESS_1'] = 'Tümüne erişim';
+$lang['ACCESS_2'] = 'Kayıtlı kullanıcılara erişim';
+$lang['ACCESS_3'] = 'Yöneticilere erişim';
+$lang['ACCESS_4'] = 'Site töneticilerine erişim';
+$lang['ACCESS_5'] = 'Erişim yok';
+$lang['Action'] = 'Eylem';
+$lang['Actions'] = 'Eylem';
+$lang['Activate icon "%s"'] = '"%s" simgesini aktifleştir';
+$lang['Activate icon "new" next to albums and pictures'] = 'Resimlerin yanındaki "yeni" simgesini etkinleştir';
+$lang['Activate Navigation Bar'] = 'Gezinti çubuğunu etkinleştir';
+$lang['Activate Navigation Thumbnails'] = 'Gezinti çubuğu küçük resimlerini etkinleştir';
+$lang['Activate'] = 'Etkinleştir';
+$lang['Active Languages'] = 'Etkin Diller';
+$lang['Active Plugins'] = 'Etkin Eklentiler';
+$lang['Active Themes'] = 'Etkin Temalar';
+$lang['Add a criteria'] = 'Kriter ekle';
+$lang['Add a filter'] = 'Filtre ekle';
+$lang['Add a tag'] = 'Etiket ekle';
+$lang['Add a user'] = 'Kullanıcı ekle';
+$lang['Add a virtual album'] = 'Sanal albüm ekle';
+$lang['Add another set of photos'] = 'Başka bir resim seti ekleyin';
+$lang['Add detailed content'] = 'Bazi detayli içerik ekleyin';
+$lang['Add group'] = 'Grup ekle';
+$lang['Add New Language'] = 'Yeni bir dil ekle';
+$lang['add new photos to caddie'] = 'Yardımcıya yeni elemanlar ekle';
+$lang['Add New Theme'] = 'Yeni bir tema ekle';
+$lang['Add Photos'] = 'Resim ekle';
+$lang['Add tags'] = 'Etiket ekle';
+$lang['Add to caddie'] = "Yardımcıya ekle";
+$lang['Add write access to the "%s" directory'] = '"%s" dizinine yazma erişimi ekle';
+$lang['Add'] = 'Ekle';
+$lang['Add/delete a permalink'] = 'Kalıcı Bağlantı ekle / sil';
+$lang['added'] = 'eklendi';
+$lang['Administration Home'] = 'Yönetim Ana Sayfa';
+$lang['Advanced features'] = 'Gelişmiş özellikler';
+$lang['Album "%s" has been added'] = '"%s" albümü eklendi';
+$lang['Album "%s" now contains %d photos'] = 'Albüm "%s" şimdi %d fotoğraf içeriyor';
+$lang['Album list management'] = 'Albüm listesi yönetimi';
+$lang['Album manual order was saved'] = 'Albümlerin elle sıralaması kaydedildi';
+$lang['Album name'] = 'Albüm ismi';
+$lang['Album photos associated to the following albums: %s'] = 'Albüm fotoğrafları takip eden albümlerle ilişkilendirildi: %s';
+$lang['Album updated successfully'] = 'Albüm bilgileri güncellendi';
+$lang['albums added in the database'] = 'veri tabanına eklenen albümler';
+$lang['Albums authorized thanks to group associations'] = 'Albümler grup ilişkilendirmeleriyle yetkilendirildi';
+$lang['Albums automatically sorted'] = 'Albümler otomatik olarak sıralandı';
+$lang['albums deleted in the database'] = 'veri tabanından silinen albümler';
+$lang['All %d photos are selected'] = 'Bütün %d fotoğraf seçildi';
+$lang['All extensions are up to date.'] = 'Tüm eklentiler güncel.';
+$lang['All languages are up to date.'] = 'Bütün diller güncel.';
+$lang['All optimizations have been successfully completed.'] = 'Tüm iyileştirmeler başarıyla tamamlandı.';
+$lang['All plugins are up to date.'] = 'Bütün eklentiler güncel.';
+$lang['All themes are up to date.'] = 'Bütün temalar güncel.';
+$lang['all'] = 'tüm';
+$lang['Allow rating'] = 'Puanlamaya izin ver';
+$lang['Allow user customization'] = 'Kullanıcı özelleştirmesine izin ver';
+$lang['Allow user registration'] = 'Kullanıcı kaydına izin ver';
+$lang['Allow users to delete their own comments'] = 'Kullanıcıların kendi yorumlarını silmesine izin ver';
+$lang['Allow users to edit their own comments'] = 'Kullanıcıların kendi yorumlarını düzenlemesine izin ver';
+$lang['Allowed file types: %s.'] = 'İzin verilen dosya türleri: %s.';
+$lang['an error happened'] = 'Bir hata olustu';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Çıkarma sırasında bir hata oluştu. Lütfen Piwigo kurulum dosya izinlerini kontrol ediniz.<br><a href="%s">Hataları göstermek için buraya tıklayın</a>.';
+$lang['An error has occured during upgrade.'] = 'Yükseltme sırasında bir hata oluştu.';
+$lang['An error occured during extraction (%s).'] = '(%s) dosyası çıkarılırken hata oluştu.';
+$lang['An information email was sent to group "%s"'] = 'Bilgi e-postası "%s" grubuna gönderildi';
+$lang['and'] = 've';
+$lang['Anomaly'] = 'Anormallik';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Bu sekmeyi sadece site yöneticisi görebilir, diğer yöneticiler göremez.';
+$lang['Apply action'] = 'Eylemi uygula';
+$lang['Apply selected corrections'] = 'Seçilen düzeltmeleri uygula';
+$lang['Apply to sub-albums'] = 'Alt albümlere uygula';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Yaklaşık maksimum çözünürlük: %dM pixel (%dx%d pixel).';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Bu yükseltmeyi yüklemek istediğinizden emin misiniz? Bu sürüm öncesinde kaldırma ihtiyacı olup olmadığını doğrulamalısınız.';
+$lang['Are you sure you want to delete this plugin?'] = 'Bu eklentiyi silmek istediğinize emin misiniz?';
+$lang['Are you sure you want to install this plugin?'] = 'Bu eklentiyi kurmak istediğinize emin misiniz?';
+$lang['Associate to album'] = 'Albüme bağla';
+$lang['associate to group'] = 'Gruba iliskilendirmek';
+$lang['Associated'] = 'Bağlantılı';
+$lang['Authorize users to add comments on selected albums'] = 'Kullanıcıları seçilen albümler için yorum yapmaya yetkilendir';
+$lang['Authorized'] = 'Yetkili';
+$lang['Automatic correction'] = 'Otomatik düzeltme';
+$lang['automatic order'] = 'otomatik sıralama';
+$lang['Available only with HTML format'] = 'Sadece HTML biçiminde mevcuttur';
+$lang['Average rate'] = 'Ortalama derecelendirme';
+$lang['average time'] = 'ortalama süre';
+$lang['Batch Manager'] = 'Küme Yöneticisi';
+$lang['between'] = 'arasinda';
+$lang['Bound Theme'] = 'Yükümlü tema';
+$lang['By %s'] = 'Tarafından %s';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Varsayılan olarak, Piwigo HD (yüksek çözünürlüklü) fotoğraflarınızdan yeni bir web boyutu oluşturacak.';
+$lang['By rank'] = 'Rütbece';
+$lang['Caddie management'] = 'Yardımcı yönetimi';
+$lang['Caddie'] = 'Yardımcı';
+$lang['Can\'t connect to server.'] = 'Sunucuya bağlantı kurulamıyor.';
+$lang['Can\'t create temporary file.'] = 'Geçici dosya oluşturulamadı.';
+$lang['Can\'t download archive.'] = 'Arşiv indirilemedi.';
+$lang['Can\'t read or extract archive.'] = 'Arşiv okunamadı veya açılamadı.';
+$lang['Cannot delete the old permalink !'] = 'Eski kalıcı bağlantı silinemez!';
+$lang['Change Admin Colors'] = 'Yönetim sayfası renk değişimi';
+$lang['Check all'] = 'Hepsini işaretle';
+$lang['Check automatic corrections'] = 'Otomatik düzeltmeleri kontrol et';
+$lang['Check for updates'] = 'Güncellemeleri kontrol et';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Yükseltme kontrolü bilinmeyen bir sebepten dolayı başarısız oldu';
+$lang['Check for upgrade'] = 'Yükseltmeleri kontrol et';
+$lang['Check integrity'] = 'Bütünlük kontrolü';
+$lang['Choose an action'] = 'Eylem seçiniz';
+$lang['Choose an option'] = 'Bir seçenek seçiniz';
+$lang['Classic display'] = 'Klasik ekran';
+$lang['clean'] = 'Temizle';
+$lang['Comments for all'] = 'Hepsine yorum yap';
+$lang['Complementary mail content'] = 'Tamamlayıcı posta içeriği';
+$lang['Configuration'] = 'Yapılandırma';
+$lang['Confirm merge'] = 'Birleştirmeyi onaylayın';
+$lang['confirm'] = 'Onayla';
+$lang['Continue processing treatment'] = 'Sürmekte olan işleme devam';
+$lang['Correction applied with error'] = 'Düzeltme hata ile uygulandı';
+$lang['Correction applied with success'] = 'Düzeltme başarıyla uygulandı';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Düzeltilmiş anomali artık göz ardı edilecektir';
+$lang['Correction'] = 'Düzeltme';
+$lang['create a new album'] = 'yeni bir albüm oluştur';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Piwigo\'nun kurulduğu kök dizin altında "%s" dizinini oluşturun';
+$lang['Create this site'] = 'Bu siteyi oluştur';
+$lang['Create'] = 'Oluştur';
+$lang['created'] = 'yaratildi';
+$lang['Crop'] = 'Kes';
+$lang['Current name'] = 'Geçerli isim';
+$lang['Database synchronization with files'] = 'Dosyalar ile veritabanı senkronizasyonu';
+$lang['Database'] = 'Veritabanı';
+$lang['Date'] = 'Tarih';
+$lang['Day'] = 'Gün';
+$lang['Deactivate all'] = 'Tümünü etkinsizleştir';
+$lang['Deactivate'] = 'Etkisizleştir';
+$lang['Default display'] = 'Varsayılan görüntü';
+$lang['Default photos order'] = 'Varsayılan fotoğraf sıralaması';
+$lang['Default user cannot be deleted'] = 'Varsayılan kullanıcı silinemez';
+$lang['Default user does not exist'] = 'Varsayılan kullanıcı yok';
+$lang['default values'] = 'varsayılan değerler';
+$lang['default'] = 'Varsayılan';
+$lang['delete album'] = 'albümüsil';
+$lang['Delete orphan tags'] = 'Sahipsiz etiketleri sil';
+$lang['delete photo'] = 'resimi sil';
+$lang['Delete Representant'] = 'Albüm pul resmini sil';
+$lang['Delete selected photos'] = 'Seçili fotoğrafları sil';
+$lang['Delete selected tags'] = 'Seçilen etiketleri sil';
+$lang['Delete selected users'] = 'Seçilen kullanıcılari sil';
+$lang['Delete this language'] = 'Bu dili sil';
+$lang['delete this site and all its attached elements'] = 'bu siteyi ve eklenen tüm içerigi sil';
+$lang['Delete this theme'] = 'Bu temayı sil';
+$lang['delete'] = 'sil';
+$lang['Deleted on'] = 'Silindi';
+$lang['deleted'] = 'silindi';
+$lang['Deletions'] = 'Silinenler';
+$lang['Deny selected groups'] = 'Seçilen grubu reddet';
+$lang['Deny selected users'] = 'Seçilen kullanıcıları reddet';
+$lang['Description'] = 'Tanım/Açıklama';
+$lang['Detailed informations'] = 'Detaylı bilgi';
+$lang['directories + files'] = 'dizinler + resimler';
+$lang['Directory does not exist'] = 'Dizin mevcut değil';
+$lang['Directory'] = 'Dizin';
+$lang['Discover album:'] = 'Albümü keşfet:';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'En fazla bilgileri göster (eklenen albümler resimler, silinen albümler resimler)';
+$lang['Display options'] = 'Görünüm seçenekleri';
+$lang['display'] = 'göster';
+$lang['Dissociate from album'] = 'Albümden ayır';
+$lang['dissociate from group'] = 'Gruptan ayirmak';
+$lang['Dissociated'] = 'Ayrılmış';
+$lang['Do you want to activate anyway?'] = 'Yine de etkinleştirmek istiyor musunuz?';
+$lang['Documentation'] = 'Belgeler';
+$lang['Does not represent'] = 'Temsil edilmiyor / Karsiligi yok';
+$lang['Download,'] = 'İndir,';
+$lang['Downloads'] = 'İndirmeler';
+$lang['Drag to re-order'] = 'Yeniden sıralamak için tıkla ve sürükle';
+$lang['Drop into album'] = 'Bir albüm seç';
+$lang['Dump Database'] = 'Vertitabanı Dökümü';
+$lang['Duplicates'] = 'Kopyalar';
+$lang['Edit album permissions'] = 'Albüm yetkilerini düzenle';
+$lang['Edit album'] = 'Albüm düzenle';
+$lang['Edit photo information'] = 'Fotoğraf bilgilerini düzenle';
+$lang['Edit ranks'] = 'Rütbeleri yönet';
+$lang['Edit selected tags'] = 'Seçilen etiketleri düzenle';
+$lang['Edit tags'] = 'Etiketleri düzenle';
+$lang['Element type'] = 'Eleman türü';
+$lang['Element'] = 'Eleman';
+$lang['Email administrators when a comment is deleted'] = 'Yorum silindiğinde yöneticilere e-posta gönder';
+$lang['Email administrators when a comment is modified'] = 'Yorum değiştirildiğinde yöneticilere e-posta gönder';
+$lang['Email admins when a comment requires validation'] = 'Yorum onayı gerektiğinde yöneticilere e-posta gönder';
+$lang['Email admins when a new user registers'] = 'Yeni kullanıcı kayıt olduğunda yöneticilere e-posta gönder';
+$lang['Email admins when a valid comment is entered'] = 'Geçerli bir yorum girildiğinde yöneticilere e-posta gönder';
+$lang['Environment'] = 'Sistem Bileşenleri';
+$lang['Error list'] = 'Hata listesi';
+$lang['Error on file "%s" : %s'] = 'Hata dosyada "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = 'E-Posta gönderirken hata %s [%s].';
+$lang['ERROR'] = 'HATA';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'HATA: BU EKLENTİ EKSİK ANCAK YÜKLENMİŞ. ŞİMDİ KALDIRIN.';
+$lang['Errors caption'] = 'Hata başlıkları';
+$lang['errors during synchronization'] = 'Senkronizasyon sırasında hatalar';
+$lang['even already synchronized photos'] = 'hatta elemanlar senkronize edildi';
+$lang['Everybody'] = 'Herkes';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Yürütme zaman asimi, islem devam etmeli [Tahmini zaman: %d saniye].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Yürütme zaman asimi, islem devam etmeli [Tahmini zaman: %d saniye].';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif eklentisi hazır değil, yönetici exif hizmet dışı bırakmalı';
+$lang['existing album'] = 'olan albüm';
+$lang['Extend for templates'] = 'Şablonları genişlet';
+$lang['Extensions Update'] = 'Eklentilerin Güncellenmesi';
+$lang['Failed to write file to disk'] = 'Dosya diske yazılamadı';
+$lang['File upload stopped by extension'] = 'Dosya yükleme uzantı tarafından durduruldu';
+$lang['File'] = 'Dosya';
+$lang['File/directory read error'] = 'Dosya/dizin okuma hatası';
+$lang['Find a new representant by random'] = 'Rastgele yeni bir pul resmi bul';
+$lang['first photo added on %s'] = 'Ilk içerigin eklenme zamani %s';
+$lang['Follow Orientation'] = 'Yönlendirmeyi İzleyin';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Aşağıdaki eklentiler Piwigo\'nun yeni sürümü ile uyumlu olmayabilir:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Aşağıdaki temalar Piwigo\'nun yeni sürümü ile uyumlu olmayabilir:';
+$lang['for the file format'] = 'dosya biçimi için';
+$lang['for this file format'] = 'Bu dosya biçimi için';
+$lang['Forbid this language to users'] = 'Kullanıcılara bu dili yasakla';
+$lang['Forbid this theme to users'] = 'Kullanıcılara bu temayı yasakla';
+$lang['Forbidden'] = 'Yasaklanmış';
+$lang['Form'] = 'Kalıp';
+$lang['FTP + Synchronization'] = 'FTP + Eşitleme';
+$lang['Gallery title'] = 'Galeri Başlığı';
+$lang['GD library is missing'] = 'GD kütüphanesi eksik';
+$lang['GD version'] = 'GD sürümü';
+$lang['General statistics'] = 'Genel istatistikler';
+$lang['Get Support on Piwigo Forum'] = 'Piwigo forumundan destek alın';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Piwigo\'nun kurulduğu kök dizindeki "%s" dizinine yazma yetkisi verin (chmod 777)';
+$lang['global mode'] = 'Küresel mod';
+$lang['Go to %s or %s for more informations'] = 'Daha fazla bilgi için %s veya %s \'ye gidin';
+$lang['Go to'] = 'Git';
+$lang['Grant selected groups'] = 'Seçilen gruplara izin ver';
+$lang['Grant selected users'] = 'Seçilen kullanıcılara izin ver';
+$lang['Graphics Library'] = 'Grafik Kütüphanesi';
+$lang['group "%s" added'] = 'Grup "%s" eklendi';
+$lang['group "%s" deleted'] = 'Grup "%s" silindi';
+$lang['group "%s" updated'] = 'Grup "%s" güncellendi';
+$lang['Group management'] = 'Grup yönetimi';
+$lang['Group name'] = 'Grup Adı';
+$lang['Group'] = 'Grup';
+$lang['Groups'] = 'Gruplar';
+$lang['Guest cannot be deleted'] = 'Misafir silinemez';
+$lang['Guest Settings'] = 'Misafir ayarları';
+$lang['guest'] = 'Misafir';
+$lang['Guests'] = 'Misafirler';
+$lang['height must be a number superior to'] = 'yüksekligi bir sayi olmali';
+$lang['Height'] = 'Yükseklik';
+$lang['Hello'] = 'Merhaba';
+$lang['Hello,'] = 'Merhaba,';
+$lang['Help Me'] = 'Bana yardım edin';
+$lang['hide details'] = 'ayrıntıları gizle';
+$lang['Hide'] = 'Gizle';
+$lang['High definition enabled'] = 'Yüksek çözünürlük etkin';
+$lang['High definition'] = 'Yüksek çözünürlüklü';
+$lang['high'] = 'Yüksek';
+$lang['History'] = 'Geçmis';
+$lang['Hit'] = 'Tıklanma';
+$lang['Hour'] = 'Saat';
+$lang['Hoverbox display'] = 'Hoverbox görüntüle';
+$lang['I decide to update anyway'] = 'Her şekilde güncellemeye karar verdim';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Eğer HD yoksa ve geçerli web boyutu yeniden boyutlandırma ölçülerinden büyük ise, Piwigo bu resmi HD olarak algılayacak ve yeni bir web boyutu oluşturacaktır.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Eger sorun yaşarsanız yada herhangi bir sorunuz varsa, lütfen buraya bir mesaj gönderin:';
+$lang['Ignore All'] = 'Tümünü Yoksay';
+$lang['Ignore selected anomalies'] = 'Seçilen anormallikleri yoksay';
+$lang['Ignore this update'] = 'Bu güncellemeyi yoksay';
+$lang['Image id'] = 'Resim kimliği';
+$lang['Image Quality'] = 'Resim kalitesi';
+$lang['Images manual order was saved'] = 'Resimlerin elle sıralandırılması kaydedildi';
+$lang['Impossible automatic correction'] = 'Otomatik düzeltme imkansız';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ana tema eksik olduğundan bu tema aktifleştirilemiyor: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Bu dili devre dışı bırakmak imkansız, önce varsayılan olarak başka bir dil ayarla.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Bu dili devre dışı bırakmak imkansız, en az bir dil olması gerekir.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Bu temayı devreden çıkarmak imkansız, en az bir tema olması gerekir.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Bu tema silinemez çünkü diğer temalar buna bağımlı: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'php.ini dosyasındaki upload_max_filesize (%sB),  post_max_size (%sB) den daha büyük, bu ayarı değiştirmelisiniz';
+$lang['Inactive Languages'] = 'Aktif olmayan Diller';
+$lang['Inactive Plugins'] = 'Aktif olmayan Eklentiler';
+$lang['Inactive Themes'] = 'Aktif olmayan Temalar';
+$lang['include child albums'] = 'alt albümler dahil';
+$lang['Include display of recent photos grouped by dates'] = 'Tarihe göre gruplandırılmış son fotoğrafları dahil et';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Geçmiş verileri dahil et (UYARI: sunucu belleği sınırı aşılabilir)';
+$lang['Information data registered in database'] = 'Veritabanına kayıtlı bilgiler';
+$lang['Informations'] = 'Bilgiler';
+$lang['Install on your computer,'] = 'Bilgisayarınızda yükleyin,';
+$lang['Install'] = 'Kur';
+$lang['Installed Languages'] = 'Yüklü Diller';
+$lang['Installed Themes'] = 'Yüklü Temalar';
+$lang['Instructions to use Piwigo'] = 'Piwigo kullanma talimatları';
+$lang['Invert'] = 'Ters çevir';
+$lang['IP'] = 'IP';
+$lang['jump to album'] = 'albüme geç';
+$lang['jump to photo'] = 'Resime geç';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Piwigo projesi ile bağlantınızı sürdürmek için Piwigo Duyuru Bültenine üye olun. Yeni bir sürüm mevcut olduğunda ve projede oluşan önemli olaylar hakkında (bazen bilinmesi önemli olan bir güvenlik açığı düzeltmesi ve terfileri içerebilir) e-Posta alacaksınız. Sadece yılda bir kaç e-Posta.';
+$lang['Language has been successfully installed'] = 'Dil başarıyla yüklendi';
+$lang['Languages which need upgrade'] = 'Güncellenmesi gereken diller';
+$lang['Languages'] = 'Diller';
+$lang['Last hit'] = 'En son ziyaret';
+$lang['Last import'] = 'Son içe aktarma';
+$lang['Last revisions'] = 'Son revizyonlar';
+$lang['Last send'] = 'Son gönderilen';
+$lang['Learn more'] = 'Daha fazla bilgi edinin';
+$lang['leave'] = 'Ayril';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Tanıdıklar';
+$lang['Level 2'] = 'Arkadaşlar';
+$lang['Level 4'] = 'Aile';
+$lang['Level 8'] = 'Yöneticiler';
+$lang['Link all album photos to a new album'] = 'Bütün albüm fotoğraflarını yeni bir albüme bağla';
+$lang['Link all album photos to some existing albums'] = 'Bütün albüm fotoğraflarını bulunan albümlere bağla';
+$lang['Linked albums'] = 'Bağlanan albümler';
+$lang['Local'] = 'Yerel';
+$lang['Lock albums'] = 'Albümleri kilitle';
+$lang['Lock gallery'] = 'Galeriyi kilitle';
+$lang['Lock'] = 'Kilitle';
+$lang['Locked'] = 'Kilitlendi';
+$lang['Mail address is obligatory for all users'] = 'e-Posta adresi tüm kullanıcılar için zorunludur';
+$lang['Mail content'] = 'Posta içeriği';
+$lang['Mail sent to %s [%s].'] = '%s [%s] \'a e-Posta gönderildi.';
+$lang['Main "guest" user does not exist'] = 'Ana "Misafir" kullanıcısı yok';
+$lang['Main "guest" user status is incorrect'] = 'Ana "Misafir" kullanıcısı durumu yanlış';
+$lang['Main "webmaster" user does not exist'] = 'Ana "Site Yöneticisi" kullanıcısı yok';
+$lang['Main "webmaster" user status is incorrect'] = 'Ana "Site Yöneticisi" kullanıcısı durumu yanlış';
+$lang['Main Page'] = 'Ana Sayfa';
+$lang['Maintenance'] = 'Bakım';
+$lang['Make this language available to users'] = 'Bu dili kullanıcılara aç';
+$lang['Make this theme available to users'] = 'Bu temayı kullanıcılara aç';
+$lang['manage album photos'] = 'albüm resimlerini yönet';
+$lang['Manage authorizations for selected albums'] = 'Seçilen albüm yetkilerinin yönetimi';
+$lang['Manage permissions for group "%s"'] = '"%s" gubu izinlerini yönet';
+$lang['Manage permissions for user "%s"'] = '"%s% kullanıcısı izinlerini yönet';
+$lang['Manage Permissions'] = 'İzinleri Yönet';
+$lang['Manage photo ranks'] = 'Fotoğrfa rütbesini yönet';
+$lang['manage sub-albums'] = 'yönet alt-albümler';
+$lang['Manage tags'] = 'Etiketleri yönet';
+$lang['Manage this set of %d photos'] = 'Bu %d fotoğraf setini yönet';
+$lang['Manage'] = 'Yönet';
+$lang['manual order'] = 'el ile düzen';
+$lang['Manual order'] = 'Elle sıralama';
+$lang['Maximum file size: %sB.'] = 'Azami dosya boyutu: %sB.';
+$lang['Maximum height'] = 'Azami yükseklik';
+$lang['Maximum width'] = 'Azami genişlik';
+$lang['Members'] = 'Üyeler';
+$lang['Menu Management'] = 'Menüler';
+$lang['Merge selected tags'] = 'Seçilen etiketleri birleştir';
+$lang['Merge tags'] = 'Etiketleri birleştir';
+$lang['Metadata synchronization results'] = 'Metadata eşitleme sonuçları';
+$lang['Metadata synchronized from file'] = 'Metadata dosyadan eşitlendi';
+$lang['Minimum privacy level'] = 'Asgari gizlilik seviyesi';
+$lang['Miscellaneous'] = 'Çeşitli';
+$lang['Missing a temporary folder'] = 'Geçici dizin eksik';
+$lang['Missing Plugins'] = 'Eksik Eklentiler';
+$lang['Modify information'] = 'Bilgiyi değiştir';
+$lang['Month'] = 'Ay';
+$lang['Move albums'] = 'Albümleri taşı';
+$lang['Move'] = 'Taşı';
+$lang['Name'] = 'İsim';
+$lang['New name'] = 'Yeni isim';
+$lang['New parent album'] = 'Yeni ana albüm';
+$lang['New photos added'] = 'Yeni fotoğraflar eklendi';
+$lang['New photos were added'] = 'Yeni fotoğraflar eklendi';
+$lang['New tag'] = 'Yeni etiket';
+$lang['New Version'] = 'Yeni Sürüm';
+$lang['new'] = 'yeni';
+$lang['No destination tag selected'] = 'Hedef etiket seçilmedi';
+$lang['No display'] = 'Görüntü yok';
+$lang['No file was uploaded'] = 'Dosya yüklenmedi';
+$lang['No mail to send.'] = 'Gönderilecek posta yok';
+$lang['No photo can be deleted'] = 'Fotoğraf silinemez';
+$lang['No photo in the current set.'] = 'Bu sette fotoğraf yok';
+$lang['No photo in this album'] = 'Bu albümde fotoğraf yok';
+$lang['No photo selected, %d photos in current set'] = 'Bu setteki %d fotoğraftan hiçbiri seçilmedi';
+$lang['No photo selected, no action possible.'] = 'Fotoğraf seçilmedi, eylem imkansız.';
+$lang['No results'] = 'Sonuç yok';
+$lang['No user to send notifications by mail.'] = 'e-Posta yoluyla bilgilendirilecek hiç kullanıcı bulunmuyor.';
+$lang['no write access'] = 'Yazma yetkisi yok';
+$lang['none'] = 'Hiç';
+$lang['None'] = 'Hiçbiri';
+$lang['nothing'] = 'hiçbir şey';
+$lang['Notification'] = 'Bilgilendirme';
+$lang['Number of comments per page'] = 'Her sayfadaki yorum sayısı';
+$lang['Number of downloads'] = 'İndirme sayısı';
+$lang['number of miniaturized photos'] = 'oluşturulan küçük resim sayısı';
+$lang['Number of rates'] = 'Derecelendirme sayısı';
+$lang['Number of thumbnails to create'] = 'Yaratilacak pul resmi sayısı';
+$lang['Obsolete Plugins'] = 'Eski Eklentiler';
+$lang['on the %d selected photos'] = '%d resimler seçildi';
+$lang['on'] = 'üzerinde';
+$lang['only directories'] = 'sadece dizinler';
+$lang['only perform a simulation (no change in database will be made)'] = 'sadece veritabanında değişecektir) bir simülasyon (hiçbir şey yapılmayacak)';
+$lang['Only private albums are listed'] = 'Sadecee özel albümler listelendi';
+$lang['Operating system'] = 'İşletim sistemi';
+$lang['Operation in progress'] = 'İşlem devam ediyor.';
+$lang['Optimizations have been completed with some errors.'] = 'Optimizasyonlar bazı hatalar ile tamamlanmıştır.';
+$lang['Optional URL keyword'] = 'İsteğe bağlı URL anahtar kelimesi';
+$lang['Options'] = 'Seçenekler';
+$lang['Order of menubar items has been updated successfully.'] = 'Menü çubuğu öğe sıralaması başarıyla güncellendi.';
+$lang['Original templates'] = 'Orjinal şablonlar';
+$lang['Orphan tags deleted'] = 'Etkisiz etiketler silindi';
+$lang['Other plugins'] = 'Mevcut diğer eklentiler';
+$lang['Other private albums'] = 'Diğer özel albümler';
+$lang['other'] = 'Diğer';
+$lang['Overall'] = 'Genel bakış';
+$lang['overrides existing values with empty ones'] = 'boş olan değerleri geçersiz kılar';
+$lang['Page banner'] = 'Sayfa afişi';
+$lang['Page end'] = 'Sayfa sonu';
+$lang['Pages seen'] = 'Görülen sayfalar';
+$lang['Parameter'] = 'Ayarlar';
+$lang['Parameters'] = 'Parametreler';
+$lang['Parent album'] = 'Ana albüm';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Şifre doğrulama eksik. Lütfen seçtiğiniz şifreyi doğrulayın.';
+$lang['Password is missing. Please enter the password.'] = 'Şifre eksik. Lütfen şifrenizi girin.';
+$lang['Path'] = 'Yol';
+$lang['Pending Comments'] = 'Bekleyen Yorumlar';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = '%s kalıcı bağlantısı %s albümü tarafından kullanıldı. Kalıcı bağlantı geçmişinden önce onu silin.';
+$lang['Permalink %s is already used by album %s'] = '%s kalıcı bağlantısı zaten %s albümü tarafından kullanıldı';
+$lang['Permalink history'] = 'Kalıcı bağlantı geçmisi';
+$lang['Permalink'] = 'Kalıcı bağlantı';
+$lang['Permalinks'] = 'Kalıcı bağlantılar';
+$lang['Permission denied'] = 'İzin verilmedi';
+$lang['Permission granted thanks to a group'] = 'Gruba izin verilmiştir';
+$lang['Permission granted'] = 'İzin verildi';
+$lang['Permissions'] = 'İzinler';
+$lang['Photo %s of %s'] = 'Fotoğraf %s / %s';
+$lang['Photo informations updated'] = 'Fotoğraf bilgileri güncellendi';
+$lang['Photo Page'] = 'Fotoğraf sayfası';
+$lang['Photo Properties'] = 'Fotoğraf özellikleri';
+$lang['Photo name'] = 'Fotoğraf adı';
+$lang['Photo unreachable or no support'] = 'Fotoğrafa erişilemiyor yada desteklenmeyen biçimde';
+$lang['photos added in the database'] = 'elemanlar veritabanında ekledi';
+$lang['photos candidates for metadata synchronization'] = 'metadata senkronizasyon için görüntüleri adayları';
+$lang['photos deleted from the database'] = 'elemanlar veritabanında silindi';
+$lang['Photos generation in progress...'] = 'Fotoğrafların oluşturulmasına devam ediliyor...';
+$lang['photos informations synchronized with files metadata'] = 'elemanları bilgiler dosyaları ile metadata senkronize edildi';
+$lang['photos per page'] = 'Safya basina içerikler';
+$lang['photos updated in the database'] = 'elemanlar veritabanında güncellendi';
+$lang['Photos'] = 'Fotoğraflar';
+$lang['Piwigo Administration'] = 'Piwigo Yönetimi';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo Duyuru Bülteni';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo sunucudan yükseltme dosyasını alamıyor';
+$lang['Piwigo configuration'] = 'Piwigo yapılandırma';
+$lang['Piwigo Update'] = 'Piwigo Güncellemesi';
+$lang['Piwigo Uploader'] = 'Piwigo Yükleyici';
+$lang['Piwigo version'] = 'Piwigo Sürümü';
+$lang['pixels'] = 'pikseller';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Lütfen "plugins" klasörünü ve alt klasörler izinleri (CHMOD) kontrol edin.';
+$lang['Please wait...'] = 'Lütfen bekleyiniz...';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader <em>Piwigo Yükleyiciyi temsil eder</em>. Bilgisayarınızdan, pLoader fotoğraflarınızı hazırlar ve Piwigo fotoğraf galerisi aktarabilirsiniz.';
+$lang['Plugin has been successfully copied'] = 'Eklenti başarıyla kopyalandı';
+$lang['Plugin list'] = 'Eklenti listesi';
+$lang['Plugins which need upgrade'] = 'Yükseltilecek eklentiler';
+$lang['Plugins'] = 'Eklentiler';
+$lang['Position'] = 'Pozisyon';
+$lang['Predefined filter'] = 'Önceden tanımlanmış filtre';
+$lang['Preferences'] = 'Tercihler';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'e-Posta gönderecek kullanıcılar listesinin hazırlığı için süre sınırlıdır. Diğer kullanıcılar listelenmez.';
+$lang['Privacy level set to "%s"'] = 'Gizlilik seviyesini "%s" \'ye ayarla';
+$lang['Privacy level'] = 'Gizlilik seviyesi';
+$lang['Private'] = 'Özel';
+$lang['private'] = 'Özel';
+$lang['Properties'] = 'Özellikler';
+$lang['Public / Private'] = 'Herkese açık / Özel';
+$lang['Public'] = 'Herkese açık';
+$lang['public'] = 'Genel';
+$lang['Purge compiled templates'] = 'Derlenmiş şablonları temizle';
+$lang['Purge history detail'] = 'Tarih detaylarını temizle';
+$lang['Purge history summary'] = 'Tarih özetini temizle';
+$lang['Purge never used notification feeds'] = 'Hiç kullanılmamış beslemeleri temizle';
+$lang['Purge search history'] = 'Arama geçmişini temizle';
+$lang['Purge sessions'] = 'Temizleme oturumlari';
+$lang['Quick Local Synchronization'] = 'Hızlı Yerel Eşitleme';
+$lang['Random photo'] = 'Rastgele fotoğraf';
+$lang['randomly represented'] = 'Karisik temsici';
+$lang['ranks'] = 'rütbeler';
+$lang['Rate date'] = 'Oylama tarihi';
+$lang['Rate'] = 'Oyla';
+$lang['Rating by guests'] = 'Misafir oyları';
+$lang['Rating'] = 'Oylama';
+$lang['Read Piwigo Documentation'] = 'Piwigo Belgelerini Oku';
+$lang['reduce to single existing albums'] = 'mevcut albümleri küçült';
+$lang['Refresh photo set'] = 'Fotoğraf setini yenile';
+$lang['Refresh'] = 'Yenile';
+$lang['registration date'] = 'Kayit tarihi';
+$lang['Reinitialize check integrity'] = 'Bütünlük kontrolünü yeniden başlat';
+$lang['Reject'] = 'Reddet';
+$lang['Released on'] = 'Yayınlama';
+$lang['Remote'] = 'Uzak';
+$lang['Remove all filters'] = 'Tüm filtreleri sil';
+$lang['remove author'] = 'yazarı sil';
+$lang['remove creation date'] = 'oluşturulma tarihini sil';
+$lang['Remove from caddie'] = 'Yardımcıdan sil';
+$lang['remove tags'] = 'etiketleri sil';
+$lang['remove this filter'] = 'Bu filtreyi sil';
+$lang['remove title'] = 'başlığı sil';
+$lang['Repair and optimize database'] = 'Veritabanini onar ve en uygun hale getir';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Orjinal şablon temsilcisi özelleştirilmiş şablonlar template-extension yedek dosyasından';
+$lang['Replacers (customized templates)'] = 'Yedekler (Özelleştirilmiş şablonlar)';
+$lang['Representant'] = 'Temsilen';
+$lang['Representation of albums'] = 'Albüm gösterimi';
+$lang['Representative'] = 'Temsilci';
+$lang['Represents'] = 'Temsilciler';
+$lang['Reset ignored updates'] = 'Görmezden gelinen güncellemeleri tekrar ayarla';
+$lang['Resize'] = 'Tekrar boyutlandır';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Varsayılan yapılandırmalarınızı onarın. Eklenti ayarlrınız kaybolacaktır!';
+$lang['Restore'] = 'Onarım';
+$lang['Save order'] = 'Düzeni kaydet';
+$lang['Save Settings'] = 'Ayarları kaydet';
+$lang['Save Template Directory'] = 'Tema dizinini kaydet';
+$lang['Save to permalink history'] = 'Kalıcı Bağlantı geçmisini kaydet';
+$lang['Search for new images in the directories'] = 'Dizinlerde yeni resimler ara';
+$lang['Searching...'] = 'Arıyor...';
+$lang['Section'] = 'Bölüm';
+$lang['See you soon.'] = 'Sonra görüşürüz.';
+$lang['See you soon,'] = 'Yakinda görüsürüz,';
+$lang['Select an album'] = 'Albüm seçiniz';
+$lang['Select at least one album'] = 'en az bir albüm seçiniz';
+$lang['Select at least one comment'] = 'En az bir yorum seç';
+$lang['Select at least one photo'] = 'En az bir resim seçiniz';
+$lang['Select at least one user'] = 'En az bir kullanıcı seçiniz';
+$lang['Select at least two tags for merging'] = 'Birleştirmek için en az iki etiketleri seçin';
+$lang['Select files'] = 'Dosyaları seçin';
+$lang['Select recipients'] = 'Alicilari seç';
+$lang['Select the destination tag'] = 'Hedef etiketi seçin';
+$lang['Select:'] = 'Seç:';
+$lang['Selection'] = 'Seçim';
+$lang['selection'] = 'Seçim';
+$lang['Send an information email to group members'] = 'Grup üyelerine bilgi e-postası gönder';
+$lang['Send mail as'] = 'Posta gönderim sekli';
+$lang['Send mail on HTML format'] = 'Postayi HTML formatinda yolla';
+$lang['Send mail to users'] = 'kullanıcılara posta gönderin';
+$lang['Send'] = 'Gönder';
+$lang['Set as default language for unregistered and new users'] = 'Kayıtsız ve yeni kullanıcılar için varsayılan dil olarak ayarlamak';
+$lang['Set as default theme for unregistered and new users'] = 'Kayıtsız ve yeni kullanıcılar için varsayılan tema olarak ayarla';
+$lang['Set author'] = 'Yazar ayarla';
+$lang['Set creation date'] = 'oluşturma tarihi ayarla';
+$lang['Set title'] = 'Başlığı ayarla';
+$lang['set to'] = 'Ayarla';
+$lang['Settings'] = 'Ayarlar';
+$lang['show details'] = 'ayrıntıları göster';
+$lang['Show info'] = 'Bilgi Göster';
+$lang['Show menubar'] = 'menü çubuğunu göster';
+$lang['Simulation'] = 'Simülasyon';
+$lang['singly represented'] = 'tek basina temsil';
+$lang['Site manager'] = 'Site yöneticisi';
+$lang['Some themes and plugins may be not available yet.'] = 'Bazı tema ve eklentiler henüz hazır olamayabilir.';
+$lang['Some upgrades are available for extensions.'] = 'Eklentiler için bazı güncellemeler mevcut.';
+$lang['Start pLoader and add your photos.'] = 'pLoader başlat ve resimler yükle.';
+$lang['Start Upload'] = 'Yüklemeye başla';
+$lang['Statistics'] = 'Istatistikler';
+$lang['Status of user "%s" updated'] = 'Kullanıcı "%s" durumu güncellendi';
+$lang['Status'] = 'Durum';
+$lang['status'] = 'Durum';
+$lang['Storage album'] = 'Depola albümü';
+$lang['sub-albums'] = 'alt-albümler';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '%s adresi ile Piwigo bülten duyurularına abone ol';
+$lang['Subscribe %s'] = 'Abone %s';
+$lang['Subscribe to notification by mail'] = 'Posta ile abone bildirimi';
+$lang['Subscribe'] = 'Abone';
+$lang['Subscribe/unsubscribe users'] = 'kullanıcılar Abone/Abone degil';
+$lang['Subscribed'] = 'Abone olundu';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Aboneler sadece yeni içerikler';
+$lang['Sum of rates'] = 'Toplam reytingler';
+$lang['Summary'] = 'Özet';
+$lang['Support'] = 'Destek';
+$lang['Switch to clear or dark colors for administration'] = 'Açık veya koyu renk yönetim sayfasına geç';
+$lang['synchronize files metadata with database photos informations'] = 'veri tabanı fotoğrafları ile dosya metadatasını eşleştir';
+$lang['synchronize files structure with database'] = 'dosya yapısını veritabanı ile eşleştir';
+$lang['Synchronize metadata'] = 'Senkronize metadata';
+$lang['Synchronize'] = 'Senkronize';
+$lang['Tag "%s" already exists'] = 'Etiket "%s" zaten var';
+$lang['Tag "%s" was added'] = 'Etiket "%s" eklendi';
+$lang['Tag selection'] = 'Etiket seçme';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Etiketler <em>%s</em> ile <em>%s</em> etiketleri birleştirildi';
+$lang['target'] = 'hedef';
+$lang['Templates configuration has been recorded.'] = 'Şablonları yapılandırma kaydedildi.';
+$lang['Templates'] = 'Şablonlar';
+$lang['test this remote site'] = 'uzak siteyi dene';
+$lang['test'] = 'deneme';
+$lang['The %d following tags were deleted'] = 'Asagidaki %d etiketler silindi';
+$lang['The anomaly will be ignored until next application version'] = 'Bu anormallik sonraki uygulama sürümüne kadar dikkate alınmayacaktır';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Dosya veya dizin erişemez (ya yok yada erişim reddedildi)';
+$lang['The following tag was deleted'] = 'Aşağıdaki etiketi silindi';
+$lang['the forum'] = 'Forum';
+$lang['The gallery URL is not valid.'] = 'Galeri URL geçerli degil.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Bir grubun ismi " veya \ içermemelidir yada bos olmamalidir.';
+$lang['The name of an album must not be empty'] = 'Albüm ismi boş olamaz';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Dizin ve dosya ismi sadece harfler, rakamlardan olmalı, "-", "_" veya "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Bir sayfadaki yorumlarin sayisini 5 ile 50 arasinda olmalidir.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Kalıcı Bağlantı ismi a-z, A-Z, 0-9, "-", "_" yada "/" karekterlerinden olusmalidir. Sayisal olmamali veya sayi ile baslamamalidir';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Yüklenen dosya HTML biçiminde belirtilmiş MAX_FILE_SIZE aşıyor';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Yüklenen dosyanın php.ini upload_max_filesize aşıyor: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Yüklenen dosya sadece kısmen yüklendi';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Yüklenen dosyalar php.ini post_max_size aşıyor: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Bu %s versiyonu yüklenen [%s] versiyonu ile uyumlu değildir.';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Site yöneticisi posta ile haberdar olmaniz için sizi abone etti.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Site yöneticisi posta ile haberdar edilme aboneliginizi kaldirdi.';
+$lang['The whole page'] = 'Bütün sayfa';
+$lang['The whole set'] = 'Bütün set';
+$lang['the wiki'] = 'Wiki';
+$lang['Theme has been successfully installed'] = 'Tema başarıyla yüklendi';
+$lang['Themes which need upgrade'] = 'Güncellenmesi gereken temalar';
+$lang['Themes'] = 'Temalar';
+$lang['There is no available subscribers to mail.'] = 'Hiç posta abonesi yok.';
+$lang['There is no other language available.'] = 'Kullanılabilir başka bir dil yok.';
+$lang['There is no other plugin available.'] = 'Kullanılabilir başka bir eklenti yok.';
+$lang['There is no other theme available.'] = 'Kullanılabilir başka bir teama yok';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Bu yeni büyük bir güncelleme <a href="%s">yeni heyecan verici özellikler</a> içerir.';
+$lang['This is a minor update, with only bug corrections.'] = 'Bu sadece hata düzeltmeleri ile, küçük bir güncelleştirme.';
+$lang['This name is already used by another group.'] = 'Bu isim baska bir grup tarafindan kullanilmaktadir';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'BU EKLENTİ PIWIGO ÇEKİRDEĞİNDE BULUNMAKTADIR! ŞİMDİ KALDIRIN!';
+$lang['This site already exists'] = 'Bu site zaten var';
+$lang['This theme was not designed to be directly activated'] = 'Bu tema doğrudan harekete geçmek için tasarlanmış değildir';
+$lang['Thumbnail'] = 'Küçük resim';
+$lang['Thumbnails generation in progress...'] = 'Küçük resimler oluşturuluyor...';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Posta gönderme zamani sinirlidir.Diger postalar atlandi.';
+$lang['Time'] = 'Zaman';
+$lang['Title'] = 'Baslik';
+$lang['To send ?'] = 'Göndermek için?';
+$lang['To subscribe'] = 'Abone olmak için';
+$lang['To unsubscribe'] = 'Abonelikten çikarmak için';
+$lang['Toggle \'default group\' property'] = 'Ters \'varsayılan\' özellik';
+$lang['Tools'] = 'Araçlar';
+$lang['total time'] = 'toplam zaman';
+$lang['Two updates are available'] = 'İki güncelleştirme mevcut';
+$lang['Type here the author name'] = 'Yazar adını buraya yazın';
+$lang['Type here the title'] = 'Başlığı buraya yazın';
+$lang['Type in a search term'] = 'Aramak için bir kelime yazınız';
+$lang['Unable to check for upgrade.'] = 'Yükseltme kontrolü yapilamiyor.';
+$lang['Unable to dump database.'] = 'Veritabanı silinemiyor.';
+$lang['Uncheck all'] = 'Tüm işaretleri kaldır';
+$lang['Uninstall'] = 'Kaldir';
+$lang['Uninstalled Plugins'] = 'Kaldırılan eklentiler';
+$lang['unit mode'] = 'tek modlu';
+$lang['Unknown upload error'] = 'Bilinmeyen yükleme hata';
+$lang['unknown'] = 'bilinmeyen';
+$lang['Unlocked'] = 'Kilitsiz';
+$lang['unset'] = 'Kaldırmak';
+$lang['Unsubscribe from notification by mail'] = 'Bildiri aboneliginden çik';
+$lang['Unsubscribed'] = 'Abonelikten çikarildi';
+$lang['Update albums informations'] = 'Albümlerin bilgilerini güncelle';
+$lang['Update All'] = 'Hepsini Güncelle';
+$lang['Update Complete'] = 'Güncelleme Tamamlandı';
+$lang['Update in progress... Please wait.'] = 'Güncelleniyor.. Lütfen bekleyiniz.';
+$lang['Update photos information'] = 'Resimlerin bilgilerini güncelle';
+$lang['update the database from files'] = 'Dosyalar ile veritabani güncelleme';
+$lang['Update to Piwigo %s'] = 'Piwigoyu %s\'e güncelle';
+$lang['Updates'] = 'Güncellemeler';
+$lang['Upload Photos'] = 'Resim Yükle';
+$lang['Upload'] = 'Yükle';
+$lang['Uploaded Photos'] = 'Yüklenen resimler';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'Varsayilan görüntü siralama düzenini kullan';
+$lang['Used metadata'] = 'Metadata kullanıldı';
+$lang['user "%s" added'] = 'Kullanıcı "%s" eklendi';
+$lang['User "%s" created with "%s" like password'] = 'Kullanıcı "%s" şifre "%s" ile yaratıldı';
+$lang['User %s [%s] added.'] = 'kullanıcı %s [%s] eklendi.';
+$lang['User %s [%s] was added to the subscription list.'] = 'kullanıcı %s [%s] abone listesine eklendi.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'kullanıcı %s [%s] abone listesine eklenemedi.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'kullanıcı %s [%s] abone listesinden silinemedi..';
+$lang['User %s [%s] was removed from the subscription list.'] = 'kullanıcı %s [%s] abone listesinden silindi.';
+$lang['User comments validation'] = 'kullanıcı yorumlari dogrulama';
+$lang['User list'] = 'Kullanıcılar listesi';
+$lang['User status'] = 'Kullanıcı durumu';
+$lang['User'] = 'kullanıcı';
+$lang['user_status_admin'] = 'Yönetici';
+$lang['user_status_generic'] = 'Genel';
+$lang['user_status_guest'] = 'Misafir';
+$lang['user_status_normal'] = 'Kullanıcı';
+$lang['user_status_webmaster'] = 'Site Yöneticisi';
+$lang['Users'] = 'Kullanıcılar';
+$lang['Validate'] = 'Onayla';
+$lang['Validation'] = 'Onaylama';
+$lang['Version'] = 'Sürüm';
+$lang['Virtual album added'] = 'sanal albüm eklendi';
+$lang['Virtual album deleted'] = 'sanal albüm silindi';
+$lang['Virtual album name'] = 'Sanal albüm ismi';
+$lang['Virtual album'] = 'Sanal albüm';
+$lang['Virtual albums to move'] = 'Taşınacak sanal albümler';
+$lang['Virtual Links'] = 'Sanal Linkler';
+$lang['Visit Gallery'] = 'Galeriyi ziyaret et';
+$lang['Visit language site'] = 'Dil sitesine git';
+$lang['Visit Piwigo project website'] = 'Piwigo proje sitesini ziyaret et';
+$lang['Visit plugin site'] = 'Eklenti sitesini ziyaret et';
+$lang['Visit theme site'] = 'Tema sitesine git';
+$lang['Waiting'] = 'Bekleyen';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UYARI! Bu eklenti Piwigo galerinizin bu sürümü ile uyumlu değildir.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Uyari abone olurken veya çikarken kullanıcılara mail gönderecegiz.';
+$lang['Webmaster cannot be deleted'] = 'Site yöneticisi silinemez';
+$lang['Webmaster status is required.'] = 'Site yöneticisi durum gereklidir.';
+$lang['Week starts on'] = 'Hafta başlangıcı';
+$lang['Who can see these photos?'] = 'Kim bu resimleri görebilir?';
+$lang['Who can see this photo?'] = 'Kim bu resimi görebilir?';
+$lang['width must be a number superior to'] = 'genişlik bundan daha büyük bir sayı olmalı';
+$lang['Width'] = 'Genişlik';
+$lang['With blank value, gallery title will be used'] = 'Bos olursa, galeri baslik kullanilir';
+$lang['With no album'] = 'sıfır albüm ile';
+$lang['With no tag'] = 'sıfır etiket ile';
+$lang['With no virtual album'] = 'sıfır sanal albüm ile';
+$lang['wrong filename'] = 'yanlış dosya ismi';
+$lang['Year'] = 'Yıl';
+$lang['You are running on development sources, no check possible.'] = 'Gelistirme kaynaklarini kullaniyorsunuz incelemek mümkün degil';
+$lang['You are running the latest version of Piwigo.'] = 'Piwigo\'nun son sürümü çalıştırılmaktadır.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Tarayıcı yükleyiciyi kullanıyorsunuz. <a href="%s">Flash Yükleyiciyi</a> deneyiniz.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Flash Yükleyiciyi kullanıyorsunuz. Sorun mu var? <a href="%s">Tarayıcı Yükleyiciyi</a> deneyiniz.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Piwigoyu direkt olarak %s\'e güncelleyebilirsiniz, Piwigo %s\'e güncellemeden (önerilir).';
+$lang['You cannot delete your account'] = 'Kendi hesabinizi silemezsiniz';
+$lang['You cannot move an album in its own sub album'] = 'Bir albümü kendi alt bölümü içindeki albüme taşıyamazsınız';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Varsayılan resim sırasını tanımlayamazsınız, çünkü yerel yapılandırmada özel bir ayar var';
+$lang['You have %d orphan tags: %s.'] = '%d etkisiz etiketleriniz: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Yerel yapılandırma dosyasında <i>$conf[\'order_by\']</i> belirttiniz, bu parametre olarak önerilmemektedir, lütfen bu parametreyi siliniz veya <i>$conf[\'order_by_custom\']</i> olarak yeniden adlandırınız!';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Posta yoluyla bildirimleri almak için abone oldunuz.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Posta yoluyla bildirimleri almak için olan aboneliginizi iptal ettiniz.';
+$lang['You might go to plugin list to install and activate it.'] = 'Yükleme ve aktif etmek için eklentiler listesine gidiniz';
+$lang['You need to confirm deletion'] = 'Silme islemini onaylayiniz';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Sisteminizi yükseltmelisiniz aksi taktirde uygulama yanlış veya hiç çalışmayabilir.';
+$lang['Your configuration settings are saved'] = 'Yapılandırma ayarları kaydedildi';
+$lang['Zoom'] = 'Yakınlaştırma';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'izin verilmiş bir gruba ait oldukları için %u kullanıcı otomatik izine sahip.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Android için Piwigo</em> uygulaması ile Android telefon veya tablet\'inizden Piwigo galerinize bağlanmaya, albümler yaratmanıza ve birden fazla fotoğraf birden aktarmanıza izin verir.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo for iOS</em> uygulaması ile iPhone, iPad veya iPod Touch\'ınızdan Piwigo galerinize bağlanmaya, albümler yaratmanıza ve birden fazla fotoğraf birden aktarmanıza izin verir. ';
+$lang['A locked gallery is only visible to administrators'] = 'Kilitli bir galeri sadece yöneticiler tarafından görülebilir';
+$lang['Activate comments'] = 'Yorumları etkinleştir';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom büyük sayıda dijital görüntü yönetmek ve yapım sonrasındaki işleri gerçekleştirmek için tasarlanmış bir yazılımdır.';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture, görüntüleri tasfiye etmeye ve büyük resim kütüphaneleri yönetmek için Mac de kullanılır.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture iPhoto basitliği ile profesyonel fotoğrafcılar için tasarlanmış.';
+$lang['Applications'] = 'Uygulamalar';
+$lang['Apply watermark if height is bigger than'] = 'Filigran uygulama koşulu: Yükseklik bundan daha büyük ise:';
+$lang['Apply watermark if width is bigger than'] = 'Filigran uygulama koşulu: Genişlik bundan daha büyük ise:';
+$lang['Automatic sort order'] = 'Otomatik sıralama';
+$lang['Available on'] = 'Mevcut platform';
+$lang['Available versions for'] = 'Bunun için mevcut sürümler';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Genelde ilgi odak noktası, fotoğrafın ortasında yer almaktadır.';
+$lang['Cancel'] = 'İptal';
+$lang['Center of interest'] = 'İlgi odağı';
+$lang['Default comments order'] = 'Varsayılan yorum sıralaması';
+$lang['Delete multiple size images'] = 'Çoklu boyut görüntüleri sil';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Galeride gezinme, albüm yaratma ve fotoğraf yükleme gibi özellikleri içerir.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Fotoğraf kırpmayla boyutlandırılır seçeneği için, örneğin "Kare", Piwigo ilgi odağını içerebilmek için elinden geleni yapmaya çalışacaktır.';
+$lang['Gallery unlocked'] = 'Galeri kilidi açık';
+$lang['Generate multiple size images'] = 'Çoklu ebat görüntüleri üret';
+$lang['Groups and users'] = 'Gruplar ve Kullanıcılar';
+$lang['List'] = 'Listele';
+$lang['Move to album'] = 'Albüme taşı';
+$lang['No group is permitted to see this private album'] = 'Bu özel albüme görebilmek için hiçbir gruba izin verilmedi';
+$lang['Not cropped correctly?'] = 'Doğru kırpılmadı mı?';
+$lang['Notify administrators when a comment is'] = 'Bu yorum olduğunda yöneticileri bilgilendir:';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Linux sürümünüzde kullanmış olduğunuz paket yöneticisi ile sadece Shotwell\'i kurun ve Piwigo publish eklentisini aktif hale getirin.';
+$lang['Opacity'] = 'Opaklık';
+$lang['Original Size'] = 'Orjinal Boyut';
+$lang['Permission granted for groups'] = 'Gruplara izin verilmiştir';
+$lang['Permission granted for users'] = 'Kullanıcılara izin verilmiştir';
+$lang['Permission management'] = 'İzin yönetimi';
+$lang['Photo sizes with crop'] = 'Kırparak fotoğrafı boyutlandır';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Lightroom için Piwigo Publish eklentisi ';
+$lang['Piwigo export plugin for Aperture'] = 'Aperture için Piwigo aktarım eklentisi';
+$lang['Piwigo export plugin for iPhoto'] = 'iPhoto için Piwigo aktarım eklentisi';
+$lang['Piwigo for Android'] = 'Android için Piwigo';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch) için Piwigo';
+$lang['Piwigo publish plugin for Shotwell'] = 'Shotwell için Piwigo publish eklentisi';
+$lang['Piwigo publish plugin for digiKam'] = 'digiKam için Piwigo publish eklentisi';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android için RemoteGallery istemcisi) Android platformu için yazılmış açık kaynak kodlu (GPL v3) bir Piwigo istemcisidir.';
+$lang['Resize after upload'] = 'Karşıya gönderdikten sonra yeniden boyutlandır';
+$lang['Save manual order'] = 'Manüel sıralamayı kayıt et';
+$lang['Save visits in history for'] = 'Geçmişte şu ziyaretleri kayıt et';
+$lang['Select a file'] = 'Bir dosya seçin';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Yeni bir odak noktası belirlemek için farenizle bir bölge seçiniz.';
+$lang['Select groups...'] = 'Grupları seçin...';
+$lang['Select users...'] = 'Kullanıcıları seçin...';
+$lang['Send connection settings by email'] = 'Bağlantı ayarları eposta ile gönder';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell linux altında çalışan açık kaynaklı bir dijital fotoğraf yönticisidir. Ubuntu ve Fedora için varsayılan fotoğraf yöneticisidir.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo aktarım eklentisi albümler yaratmanıza ve fotoğrafları aktarmanıza olanak tanır.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish eklentisi Lightroom yazılımından görüntülerinizi Piwigo fotoğraf galerisine aktarmak ve senkronize etmeye izin verir. ';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Odak noktası, bir fotoğrafın en çok anlam taşıdığı bölgedir.';
+$lang['The original image quality must be a number between %d and %d'] = 'Orjinal görüntü kalitesi %d ile &d arasında bir sayı olmalı';
+$lang['The original maximum height must be a number between %d and %d'] = 'Orjinal yüksekliği %d ile %d arasında bir sayı olmalı';
+$lang['The original maximum width must be a number between %d and %d'] = 'Orjinal genişliği %d ile %d arasında bir sayı olmalı';
+$lang['There is no group in this gallery.'] = 'Bu galeride herhangi bir grup yer almamaktadır.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Bu albüm %d fotoğraf içeriyor, %s ile %s arasında eklendi.';
+$lang['This album contains %d photos, added on %s.'] = 'Bu albüm %d resim içeriyor, %d de eklendi.';
+$lang['This album contains no photo.'] = 'Bu albüm herhangi bir fotoğraf içermiyor.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'digiKam dan Piwigo\'ya fotoğraflarınızı aktarmak için, sadece digiKam ve Kipi-eklentileri kurunuz.';
+$lang['Unlock gallery'] = 'Galeri kilidini aç';
+$lang['Web Form'] = 'Web Form';
+$lang['X Position'] = 'X Pozisyonu';
+$lang['X Repeat'] = 'X Tekrarlama';
+$lang['Y Position'] = 'Y Pozisyonu';
+$lang['You can activate only one mobile theme.'] = 'Sadece bir mobil thema etkinleştirebilirsiniz.';
+$lang['add a new watermark'] = 'yeni bir filigran ekle';
+$lang['administrators'] = 'yöneticileri';
+$lang['any visitor can see this album'] = 'herhangi bir ziyaretci bu albümü görebilir';
+$lang['apply automatic sort order'] = 'otomatik sıralamayı uygula';
+$lang['bottom left corner'] = 'alt sol köşe';
+$lang['bottom right corner'] = 'alt sağ köşe';
+$lang['cancel manual order'] = 'manuel sıralamayı iptal et';
+$lang['custom'] = 'Özel';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam Linux, Windows ve MacOSX platformlar için geliştirilmiş açık ve gelişmiş bir dijital fotoğraf yönetim yazılımıdır. ';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam, fotoğraflarını görüntülemek, yönetmek, düzenlemek, geliştirmek, orgamize etmek, etiketletirmek ve paylaşmak isteyen fotoğrafcılar için tasarlanmıştır.';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto MacOSX\'in varsayılan fotoğraf yöneticisidir. Piwigo aktarım eklentisi, yeni albümler yaratmanıza ve fotoğraflarınızı direkt iPhoto\'dan Piwigo fotğraf galerisine aktarmanıza olanak tanır.';
+$lang['include photos with lower privacy level'] = 'daha düşük olan bir özel seviyesine ait olan fotoğrafları içerin ';
+$lang['middle'] = 'orta';
+$lang['modified'] = 'değiştiğinde';
+$lang['pending validation'] = 'doğrulama beklemede';
+$lang['registered users'] = 'kayıtlı kullanıcılar';
+$lang['simple visitors'] = 'normal ziyaretcileri';
+$lang['top left corner'] = 'üst sol köşe';
+$lang['top right corner'] = 'üst sağ köşe';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'ziyaretçilerin bu albümü görebilmeleri için oturum açmaları ve uygun izinlere sahip olmaları gereklidir';
+$lang['Multiple Size'] = 'Çoklu Boyut';
+$lang['%d days'] = '%d gün';
+$lang['%d day'] = '%d gün';
+$lang['%d hours'] = '%d saat';
+$lang['%d hour'] = '%d saat';
+$lang['%d minutes'] = '%d dakika';
+$lang['%d minute'] = '%d dakika';
+$lang['%d months'] = '%d ay';
+$lang['%d month'] = '%d ay';
+$lang['%d seconds'] = '%d saniye';
+$lang['%d second'] = '%d saniye';
+$lang['%d weeks'] = '%d hafta';
+$lang['%d week'] = '%d hafta';
+$lang['%d years'] = '%d yıl';
+$lang['%d year'] = '%d yıl';
+$lang['%s ago'] = '%s önce';
+$lang['Edit photo'] = 'Fotoğraf düzenle';
+$lang[' and %d virtuals'] = 've %d sanal';
+$lang['%d physicals'] = '%d fiziksel';
+$lang['Added by %s'] = '%s tarafından eklendi';
+$lang['Numeric identifier : %d'] = 'Sayısal tanımlayıcı: %d';
+$lang['Original file : %s'] = 'Orjinal dosya: %s';
+$lang['Rated %d times, score : %.2f'] = '%d kez oylandı, skor: %.2f';
+$lang['Sharpen'] = 'Keskinleştirmek';
+$lang['Visited %d times'] = '%d kez görüntülendi';
+$lang['Watermark'] = 'watermark';
+$lang['%s in the future'] = '%s gelecekte';
+$lang['Posted %s on %s'] = '%s gönderildi %s tarihinde';
+$lang['create a new site'] = 'yeni bir site oluştur';
+$lang['No order field selected'] = 'Sıralandırma alanı seçilmedi';
+$lang['Duplicate selected tags'] = 'Seçili etiketleri kopyala';
+$lang['Name of the duplicate'] = 'Kopya ismi';
+$lang['Source tag'] = 'Kaynak etiket';
+$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" etiketi şimdi "%s" \'nin kopyasıdır';
+$lang['Landscape'] = 'Manzara';
+$lang['Minimum height'] = 'Asgari yükseklik';
+$lang['Minimum width'] = 'Asgari genişlik';
+$lang['Panorama'] = 'Panorama';
+$lang['Portrait'] = 'Portre';
+$lang['Manage photos'] = 'Fotoğrafları yönet';
+$lang['Number of albums per page'] = 'Her sayfadaki albüm sayısı';
+$lang['View in gallery'] = 'Galeride göster';
+$lang['Ratio'] = 'Oran';
+$lang['between %.2f and %.2f'] = '%.2f ve %.2f arasında';
+$lang['between %d and %d pixels'] = '%d ve %d piksel arasında';
+$lang['This group will be set to default'] = 'Bu grup varsayılan olarak seçilecek';
+$lang['This group will be unset to default'] = 'Bu grup varsayılan olmaktan çıkartılacak';
+$lang['Type here the name of the new group'] = 'Buraya yeni grubun ismini yazın';
+$lang['Duplicate'] = 'Kopyasını al';
+$lang['Manage the members'] = 'Üyeleri yönet';
+$lang['Merge selected groups'] = 'Seçilen grupları birleştir';
+$lang['No group selected, no action possible.'] = 'Hiç bir grup seçili değil, herhangi bir eylem yapılamaz';
+$lang['No members to manage'] = 'Yönetecek üye yok';
+$lang['Please select at least two groups'] = 'En azından iki grup seçin';
+$lang['Rename'] = 'Yeniden adlandır';
+$lang['Purge user cache'] = 'Kullaıcı önbelleğini temizle';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Yüklenen %s [%s] sürümü, gereken sürüm [%s] ile uyumlu değildir.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Resim boyutları %dx%d piksele düşürülecektir.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'GD \'nin grafik kütüphanesi olarak kullanımından dolayı yükleme sonrası yeniden boyutlandırma devredışı';
+$lang['Select at least one tag'] = 'En azından bir etiket seçin';
+$lang['Mail theme'] = 'Posta Teması';
+$lang['General'] = 'Genel';
+$lang['Basic settings'] = 'Temel ayarlar';
+$lang['Registered on %s, %s.'] = '%s \'ye kayıt yapıldı, %s.';
+$lang['Showing %s to %s of %s users'] = '%s \'den %s\'ye olan kullanıcılar görüntüleniyor (toplam %s)';
+$lang['No user selected of %d users'] = '%d kullanıcıdan hiçbiri seçilmedi';
+$lang['User %s added'] = 'Kullanıcı %s eklendi';
+$lang['Update user'] = 'Kullanıcıyı güncelle';
+$lang['Show %s users'] = '%s kullanıcıyı göster';
+$lang['No user selected, no action possible.'] = 'Hiç bir kullanıcı seçilmedi, eylem imkansız.';
+$lang['Last visit on %s, %s.'] = '%s \'ye son ziyaretiniz, %s.';
+$lang['on the %d selected users'] = 'seçilen %d kullanıcıda';
+$lang['Users modified'] = 'Kullanıcılarda değişiklik yapıldı';
+$lang['User %s updated'] = '%s kullanıcı güncellendi';
+$lang['Password updated'] = 'Şifre güncellendi';
+$lang['No matching user found'] = 'Uyan hiç bir kullanıcı bulunamadı';
+$lang['Loading...'] = 'Yükleniyor...';
+$lang['Change password'] = 'Şifre değiştir';
+$lang['Change username'] = 'Kullanıcı adı değiştir';
+$lang['All %d users are selected'] = 'Tüm %d kullanıcı seçildi';
+$lang['(filtered from %s total users)'] = '(toplam %s kullanıcıdan filtrelendi)';
+$lang['%d of %d users selected'] = '%d/%d kullanıcı seçildi';
+?>
Index: /tags/2.6.0RC1/language/tr_TR/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Türkçe [TR]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=436
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Turkish';
+$lang_info['country'] = 'Turkey';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'tr';
+$lang_info['zero_plural'] = true;
+
+$lang['... or browse your empty gallery'] = '... yada boş galerinizde gezin';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... yada lütfen bu mesajı etkisizleştirin, kendi yolumu kendim bulacağım';
+$lang['%d album updated'] = '%d albüm güncellendi';
+$lang['%d albums updated'] = '%d albüm güncellendi';
+$lang['%d comment to validate'] = '%d onaylanacak yorum';
+$lang['%d comment'] = '%d yorum';
+$lang['%d comments to validate'] = '%d onaylanacak yorum ';
+$lang['%d comments'] = '%d yorum';
+$lang['%d hit'] = '%d ziyaret';
+$lang['%d hits'] = '%d ziyaret';
+$lang['%d Kb'] = '%d Kilobayt';
+$lang['%d new comment'] = '%d yeni yorum';
+$lang['%d new comments'] = '%d yeni yorum';
+$lang['%d new photo'] = '%d yeni fotoğraf';
+$lang['%d new photos'] = '%d yeni fotoğraf';
+$lang['%d new user'] = '%d yeni kullanıcı';
+$lang['%d new users'] = '%d yeni kullanıcı';
+$lang['%d photo is also linked to current tags'] = '%d fotoğraf aynı zamanda bu etiketlere sahip';
+$lang['%d photo'] = '%d fotoğraf';
+$lang['%d photos are also linked to current tags'] = '%d fotoğraf aynı zamanda bu etiketlere sahip';
+$lang['%d photos'] = '%d fotoğraf';
+$lang['%d rates'] = '%d oy';
+$lang['(!) This comment requires validation'] = '(!) Bu yoruma onay gerekmektedir.';
+$lang['A comment on your site'] = 'Sitenize bir yorum yapıldı';
+$lang['About Piwigo'] = 'Piwigo Hakkında';
+$lang['About'] = 'Hakkında';
+$lang['Accelerate diaporama speed'] = 'Slayt gösterisi hızını yükselt';
+$lang['Add a comment'] = 'Bir yorum ekle';
+$lang['add this photo to your favorites'] = 'Bu fotoğrafı favorilerinize ekleyin';
+$lang['Admin: %s'] = 'Yönetici: %s';
+$lang['Administration'] = 'Yönetim';
+$lang['Album results for'] = 'Albüm sonuçları';
+$lang['Album'] = 'Albüm';
+$lang['Album: %s'] = 'Albüm: %s';
+$lang['Albums'] = 'Albümler';
+$lang['All tags'] = 'Tüm Etiketler';
+$lang['All'] = 'Tümü';
+$lang['all'] = 'tümü';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Yorumunuzun görünür olabilmesi için yönetici tarafindan onaylanmasi gerekir.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Anti-flood sistemi : lütfen bir müddet bekledikten sonra ikinci yorumu gönderiniz';
+$lang['Any tag'] = 'Herhangi bir etiket';
+$lang['Are you sure?'] = 'Emin misiniz?';
+$lang['ascending'] = 'Artan';
+$lang['At least one listed rule must be satisfied.'] = 'Listelenen kriterlerden en az biri yerine getirilmelidir.';
+$lang['Author'] = 'Yayımcı';
+$lang['author(s) : %s'] = 'Yazar(lar) : %s';
+$lang['Author: %s'] = 'Yayımcı: %s';
+$lang['Auto login'] = 'Beni hatırla';
+$lang['available for administrators only'] = 'yalnızca yöneticilere için';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Kullanıcı için kötü statü "ziyaretçi", varsayılan statü kullanılıyor. Lütfen webmaster\'a bildirin';
+$lang['Best rated'] = 'En çok oylanan';
+$lang['Browser: %s'] = 'Tarayıcı: %s';
+$lang['Calendar'] = 'Takvim';
+$lang['Change my password'] = 'Şifremi değiştir';
+$lang['Check your email for the confirmation link'] = 'Onaylama bağlantısı için e-postanızı kontrol ediniz.';
+$lang['chronology_monthly_calendar'] = 'Aylık takvim';
+$lang['chronology_monthly_list'] = 'Aylık liste';
+$lang['chronology_weekly_list'] = 'Haftalık liste';
+$lang['Click here if your browser does not automatically forward you'] = 'Eğer otomatik olarak yönlendirilmediyseniz buraya tıklayınız.';
+$lang['Click on the photo to see it in high definition'] = 'Fotoğrafı yüksek çözünürlükte görmek için üzerine tıklayın';
+$lang['Close this window'] = 'Pencereyi kapat';
+$lang['cloud'] = 'küme';
+$lang['Comment by %s'] = 'Yorumlayan %s';
+$lang['comment date'] = 'yorum tarihi';
+$lang['Comment'] = 'Yorum';
+$lang['Comment: %s'] = 'Yorum: %s';
+$lang['Comments'] = 'Yorumlar';
+$lang['Complete RSS feed (photos, comments)'] = 'RSS besleme tamamla (resimler, yorumlar)';
+$lang['Confirm Password'] = 'Şifreyi Onayla';
+$lang['Connected user: %s'] = 'Bağlanan kullanıcı: %s';
+$lang['Connection settings'] = 'Bağlantı ayarları';
+$lang['Contact webmaster'] = 'Webmaster ile bağlantı kur';
+$lang['Contact'] = 'İletişim';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Çerezler engelli yada web tarayıcınız tarafından desteklenmiyor. Oturum açmak için çerezlere izin verin.';
+$lang['Create a new account'] = 'Yeni hesap oluştur';
+$lang['created after %s (%s)'] = '%s (%s) \'den sonra oluşturulanlar';
+$lang['created before %s (%s)'] = '%s (%s) \'den önce oluşturulanlar';
+$lang['created between %s (%s) and %s (%s)'] = '%s (%s) ile %s (%s) arasında oluşturulanlar';
+$lang['created on %s'] = '%s \'de oluşturulanlar';
+$lang['Created on'] = 'Oluşturuldu';
+$lang['Creation date'] = 'Oluşturulma Tarihi';
+$lang['Current password is wrong'] = 'Şimdiki parola yanlış';
+$lang['customize the appareance of the gallery'] = 'galeri görünümünü kişiselleştir';
+$lang['Customize'] = 'Kişiselleştir';
+$lang['Date'] = 'Tarih';
+$lang['day'][0] = 'Pazar';
+$lang['day'][1] = 'Pazartesi';
+$lang['day'][2] = 'Salı';
+$lang['day'][3] = 'Çarşamba';
+$lang['day'][4] = 'Perşembe';
+$lang['day'][5] = 'Cuma';
+$lang['day'][6] = 'Cumartesi';
+$lang['Default'] = 'Varsayılan';
+$lang['delete all photos from your favorites'] = 'favorilerinizdeki tüm fotoğrafları silin';
+$lang['delete this photo from your favorites'] = 'bu fotoğrafı favorilerinizden çıkarın';
+$lang['Delete'] = 'Sil';
+$lang['descending'] = 'Azalan';
+$lang['Dimensions'] = 'Boyutlar';
+$lang['display a calendar by creation date'] = 'oluşturma tarihine göre bir takvim göster';
+$lang['display a calendar by posted date'] = 'gönderme gününü takvimde göster';
+$lang['display a set of random photos'] = 'rastgele birkaç fotoğraf göster';
+$lang['display all photos in all sub-albums'] = 'tüm alt albümlerdeki tüm fotoğrafları göster';
+$lang['display available tags'] = 'uygun etiketleri göster';
+$lang['display best rated photos'] = 'Ençok oy alan fotoğrafları göster';
+$lang['display each day with photos, month per month'] = 'ay ay her günü fotoğraflarla göster';
+$lang['display last user comments'] = 'Son kullanıcı yorumlarını göster';
+$lang['display most recent photos'] = 'En son eklenen fotoğrafları göster';
+$lang['display most visited photos'] = 'en çok görüntülenen fotoğrafları göster';
+$lang['display only recently posted photos'] = 'sadece yakın zamanda gönderilen fotoğrafları göster';
+$lang['display photos linked to this tag'] = 'sadece bu etikete sahip fotoğrafları göster';
+$lang['display recently updated albums'] = 'Son güncellenen albümleri göster';
+$lang['display this album'] = 'bu albümü göster';
+$lang['display your favorites photos'] = 'Favori fotoğraflarımı göster';
+$lang['Display'] = 'Görünüm';
+$lang['Download this file'] = 'Bu dosyayı indir';
+$lang['Download'] = 'İndir';
+$lang['Each listed rule must be satisfied.'] = 'Listelenen her bir kriter yerine getirilmelidir.';
+$lang['Edit a comment'] = 'Yorumu düzenle';
+$lang['Edit'] = 'Düzenle';
+$lang['Email address is missing. Please specify an email address.'] = 'e-Posta adresi yok. Lütfen bir e-Posta adresi belirtiniz.';
+$lang['Email address'] = 'e-Posta adresi';
+$lang['Email: %s'] = 'e-Posta: %s';
+$lang['Empty query. No criteria has been entered.'] = 'Boş sorgulama. Arama kriteri girilmedi.';
+$lang['End-Date'] = 'Bitiş tarihi';
+$lang['Enter your new password below.'] = 'Yeni şifrenizi alt kısma giriniz';
+$lang['Enter your personnal informations'] = 'Kişisel bilgilerinizi giriniz';
+$lang['Error sending email'] = 'e-Posta göndermede hata';
+$lang['excluded'] = 'çıkartıldı';
+$lang['EXIF Metadata'] = 'EXIF Meta verisi';
+$lang['Expand all albums'] = 'Tüm albümleri genişlet';
+$lang['Favorites'] = 'Favoriler';
+$lang['File name'] = 'Dosya adı';
+$lang['File'] = 'Dosya';
+$lang['Filesize'] = 'Dosya boyutu';
+$lang['Filter and display'] = 'Filtrele ve Görüntüle';
+$lang['Filter'] = 'Filtrele';
+$lang['First'] = 'İlk';
+$lang['Forgot your password?'] = 'Şifrenizi mi unuttunuz?';
+$lang['from %s to %s'] = 'şundan %s buna %s';
+$lang['Go through the gallery as a visitor'] = 'Galeride ziyaretçi olarak gezin';
+$lang['group by letters'] = 'harflere göre grupla';
+$lang['guest'] = 'Misafir';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Merhaba %s, Piwigo fotoğraf galeriniz boş!';
+$lang['Hello'] = 'Merhaba';
+$lang['Help'] = 'Yardım';
+$lang['Home'] = 'Anasayfa';
+$lang['html tags are not allowed in login'] = 'girişte html etiketlerine izin verilmez';
+$lang['I want to add photos'] = 'Fotoğraf eklemek istiyorum';
+$lang['Identification'] = 'Kullanıcı Girişi';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Eğer bu bir hata ise, bu e-Postayı görmezden geliniz.';
+$lang['in %d sub-album'] = '%d alt albümde';
+$lang['in %d sub-albums'] = '%d alt albümde';
+$lang['in this album'] = 'bu albümde';
+$lang['included'] = 'dahil edildi';
+$lang['Invalid key'] = 'Hatalı anahtar';
+$lang['Invalid password!'] = 'Yanlış şifre!';
+$lang['Invalid username or email'] = 'Hatalı kullanıcı adı veya e-Posta';
+$lang['IP: %s'] = 'IP:%s';
+$lang['IPTC Metadata'] = 'IPTC Meta verisi';
+$lang['Keyword'] = 'Anahtar Kelime';
+$lang['Kind of date'] = 'tarih çeşidi';
+$lang['Language']='Dil';
+$lang['large'] = 'L - büyük';
+$lang['last %d days'] = 'son %d gün';
+$lang['Last'] = 'Son';
+$lang['letters'] = 'harfler';
+$lang['Links'] = 'Bağlantılar';
+$lang['login mustn\'t end with a space character'] = 'kullanıcı adı boşluk karakteri ile bitemez';
+$lang['login mustn\'t start with a space character'] = 'kullanıcı adı boşluk karakteri ile başlayamaz';
+$lang['Login'] = 'Oturum aç';
+$lang['Logout'] = 'Çıkış yap';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-Posta adresi xxx@yyy.eee (örnek : jack@altern.org) gibi olmalıdır';
+$lang['Manage this user comment: %s'] = 'Bu kullanıcı yorumunu yönet: %s';
+$lang['medium'] = 'M - orta';
+$lang['Menu'] = 'Menü';
+$lang['month'][1] = "Ocak";
+$lang['month'][2] = "Şubat";
+$lang['month'][3] = "Mart";
+$lang['month'][4] = "Nisan";
+$lang['month'][5] = "Mayıs";
+$lang['month'][6] = "Haziran";
+$lang['month'][7] = "Temmuz";
+$lang['month'][8] = "Ağustos";
+$lang['month'][9] = "Eylül";
+$lang['month'][10] = "Ekim";
+$lang['month'][11] = "Kasım";
+$lang['month'][12] = "Aralık";
+$lang['Most visited'] = 'En çok ziyaret edilenler';
+$lang['N/A'] = 'N/A';
+$lang['New on %s'] = 'Yeni %s';
+$lang['New password'] = 'Yeni şifre';
+$lang['Next'] = 'Sonraki';
+$lang['no rate'] = 'puan verilmemiş';
+$lang['No'] = 'Hayır';
+$lang['Not repeat the slideshow'] = 'Slayt gösterisini tekrar etme';
+$lang['Notification'] = 'Bildiri';
+$lang['Number of items'] = 'Öğe adedi';
+$lang['Number of photos per page'] = 'Sayfa başına fotoğraf sayısı';
+$lang['obligatory'] = 'zorunlu';
+$lang['Original dimensions'] = 'Orijinal boyutlar';
+$lang['Original'] = "asıl";
+$lang['Page generated in'] = 'Sayfa oluşturuldu';
+$lang['Password forgotten'] = 'Unutulmuş şifre';
+$lang['Password reset is not allowed for this user'] = 'Bu kullanıcı için şifre yenilemeye izin verilmiyor';
+$lang['Password Reset'] = 'Şifreyi Sıfırla';
+$lang['password updated'] = 'şifre güncellendi';
+$lang['Password'] = 'Şifre';
+$lang['Pause of slideshow'] = 'Slayt gösterisini dondur (Pause)';
+$lang['photo'] = 'fotoğraf';
+$lang['Photos only RSS feed'] = 'Yalnızca fotoğraflar için RSS beslemesi';
+$lang['photos posted during the last %d days'] = 'son %d günde gösterilen fotoğraflar';
+$lang['Photos posted within the last %d day.'] = 'Sadece son %d gün içinde yüklenen fotoğraflar.';
+$lang['Photos posted within the last %d days.'] = 'Sadece son %d gün içinde yüklenen fotoğraflar.';
+$lang['Piwigo Help'] = 'Piwigo yardım';
+$lang['Play of slideshow'] = 'Slayt gösterisini yürüt';
+$lang['Please enter your username or email address.'] = 'Lütfen kullanıcı adınızı veya e-posta adresinizi giriniz.';
+$lang['Please, enter a login'] = 'Lütfen kullanıcı adınızı giriniz';
+$lang['Post date'] = 'Gönderim tarihi';
+$lang['posted after %s (%s)'] = '%s (%s) \'den sonra gönderilenler';
+$lang['posted before %s (%s)'] = '%s (%s) \'den önce gönderilenler';
+$lang['posted between %s (%s) and %s (%s)'] = '%s (%s) ile %s (%s) arasında gönderilenler';
+$lang['posted on %s'] = '%s \'de gönderilenler';
+$lang['Posted on'] = 'Gönderim saati';
+$lang['Powered by'] = 'Destekleyen';
+$lang['Preferences'] = 'Özellikler';
+$lang['Previous'] = 'Önceki';
+$lang['Profile'] = 'Profil';
+$lang['Quick connect'] = 'Kullanıcı Girişi';
+$lang['Quick search'] = 'Hızlı arama';
+$lang['Random photos'] = 'Karışık fotoğraflar';
+$lang['Rank'] = 'Sıralama';
+$lang['Rate this photo'] = 'Bu fotoğrafa puan ver';
+$lang['Rating score'] = 'Oy sayısı';
+$lang['Recent albums'] = 'Son albümler';
+$lang['Recent period must be a positive integer value'] = 'Yakın dönem pozitif bir tam sayı değerine sahip olmalıdır';
+$lang['Recent period'] = 'Yakın dönem';
+$lang['Recent photos'] = 'Son eklenenler';
+$lang['Redirection...'] = 'Yönlendirme...';
+$lang['Reduce diaporama speed'] = 'Slayt gösterisi hızını düşür';
+$lang['Register'] = 'Kayıt Ol';
+$lang['Registration of %s'] = 'Tescil Eden: %s';
+$lang['Registration'] = 'Kayıt';
+$lang['Related tags'] = 'İlgili Etiketler';
+$lang['remove this tag from the list'] = 'listedeki işaretlemeyi kaldır';
+$lang['Repeat the slideshow'] = 'Slayt gösterisini tekrar et';
+$lang['representative'] = 'albüm pul resmi';
+$lang['Reset to default values'] = 'Varsayılan ayarlara döndür';
+$lang['Reset'] = 'Sıfırla';
+$lang['Retrieve password'] = 'Şifre al';
+$lang['Return to home page'] = 'Anasayfaya dön';
+$lang['return to normal view mode'] = 'normal görüntü moduna geri dön';
+$lang['return to the display of all photos'] = 'tüm fotoğraf görünümüne geri dön';
+$lang['RSS feed'] = 'RSS Beslemesi';
+$lang['Search by date'] = 'Tarihe göre ara';
+$lang['Search for all terms'] = 'Tüm ifadelerde ara';
+$lang['Search for any term'] = 'Herhangi bir ifadede ara';
+$lang['Search for Author'] = 'Yayımcı adıyla ara';
+$lang['Search for words'] = 'Kelimelerde ara';
+$lang['Search in albums'] = 'Albümlerde ara';
+$lang['Search in sub-albums'] = 'Alt albümlerde ara';
+$lang['Search results'] = 'Arama sonuçları';
+$lang['Search rules'] = 'Arama kriteri';
+$lang['Search tags'] = 'Arama etiketi';
+$lang['Search'] = 'Ara';
+$lang['search'] = 'Arama';
+$lang['searched words : %s'] = 'aranan kelimeler : %s';
+$lang['Sent by'] = 'Gönderen';
+$lang['set as album representative'] = 'albüm pul resmi olarak ayarla';
+$lang['Show file metadata'] = 'Dosyanin meta verilerini göster';
+$lang['Show number of comments'] = 'Yorumların sayısını göster';
+$lang['Show number of hits'] = 'Ziyaret sayısını göster';
+$lang['show tag cloud'] = 'etiket kümesini göster';
+$lang['Since'] = 'Şu tarihten beri:';
+$lang['slideshow'] = 'slayt gösterisi';
+$lang['small'] = 'S - küçük';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Birisi belirtilen kullanıcı için şifre sıfırlaması istedi';
+$lang['Sort by'] = 'Sırala';
+$lang['Sort order'] = 'Sıralama düzeni';
+$lang['Specials'] = 'Hızlı Gezinti';
+$lang['SQL queries in'] = 'SQL Sorgulaması';
+$lang['square'] = "kare";
+$lang['stop the slideshow'] = 'slayt gösterisini durdur';
+$lang['Submit'] = 'Gönder';
+$lang['Tag results for'] = 'Etiket sonuçları';
+$lang['Tag'] = 'Etiket';
+$lang['Tags'] = 'Etiketler';
+$lang['the beginning'] = 'başlangıç';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Bakım çalışmaları nedeniyle kapalıyız. Daha sonra tekrar ziyaret ediniz.';
+$lang['The number of photos per page must be a not null scalar'] = 'Sayfa başına fotoğraf sayısı sıfırdan farklı bir tam sayı olmalıdır';
+$lang['The passwords do not match'] = 'Şifreler eşleşmiyor';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Bu RSS beslemesi bu siteden yeni resimler, güncellenen albümler, yeni yorumlar içerir. Bir RSS okuyucu ile kullanılabilir';
+$lang['the username must be given'] = 'kullanıcı adı gerekmektedir';
+$lang['This author modified following comment:'] = 'Bu yayımcı bu yorumu değiştirdi:';
+$lang['This author removed the comment with id %d'] = 'Bu yayımcı %d id numaralı yorumu silmiştir';
+$lang['this email address is already in use'] = 'bu e-posta adresi başka bir kullanıcı tarafından kullanılmaktadır.';
+$lang['This login is already used by another user'] = 'Bu kullanıcı adı başka biri tarafından kullanılıyor';
+$lang['this login is already used'] = 'kullanıcı adı zaten kullanılmakta';
+$lang['thumb'] = 'Pul resmi';
+$lang['Thumbnails'] = 'Küçük resimler';
+$lang['To reset your password, visit the following address:'] = 'Şifrenizi yenilemek için bu adrese gidiniz:';
+$lang['today'] = 'bugün';
+$lang['Unknown feed identifier'] = 'Bilinmeyen besleme kimliği';
+$lang['Unknown identifier'] = 'Bilinmeyen kimlik';
+$lang['Update your rating'] = 'Puanlamanızı güncelleyin';
+$lang['useful when password forgotten'] = 'şifrenizi unuttuğunuz zamanlarda kullanışlıdır';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Kullanıcı "%s" e-posta adresi belirtmemiş, yeniden şifre alması imkansız';
+$lang['User comments'] = 'Ziyaretçi yorumları';
+$lang['User: %s'] = 'Kullanıcı: %s';
+$lang['Username "%s" on gallery %s'] = 'Kullanici adi "%s" zaten galeride %s';
+$lang['Username or email'] = 'Kullanıcı adı veya e-posta';
+$lang['Username'] = 'Kullanıcı Adı';
+$lang['View'] = 'Görünüm';
+$lang['Visits'] = 'Görüntülenme';
+$lang['Webmaster'] = 'Site Yöneticisi';
+$lang['Week %d'] = 'Hafta %d';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Piwigo fotoğraf galerinize hoş geldiniz!';
+$lang['Welcome'] = 'Hoş geldiniz';
+$lang['wrong date'] = 'Yanlış Tarih';
+$lang['xlarge'] = 'XL - ekstra geniş';
+$lang['xxlarge'] = 'XXL - devasa';
+$lang['Yes'] = 'Evet';
+$lang['You are not authorized to access the requested page'] = 'İstenen sayfaya erişim yetkiniz yok';
+$lang['You will receive a link to create a new password via email.'] = 'E-posta yoluyla yeni bir şifre oluşturmak için bir bağlantı alacaksınız.';
+$lang['Your comment has been registered'] = 'Yorumunuz kaydedildi';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Doğrulama kriterlerini geçemedigi için yorumunuz kayit edilmedi';
+$lang['Your favorites'] = 'Favorilerim';
+$lang['Your Gallery Customization'] = 'Galeri Özelleştirmesi ';
+$lang['Your password has been reset'] = 'Şifreniz yenilendi';
+$lang['Hello %s,'] = 'Merhaba %s,';
+$lang['Send my connection settings by email'] = 'Bağlantı ayarlarımı e-posta yoluyla gönder';
+$lang['Show latest comments first'] = 'Yeni yorumları başta göster';
+$lang['Show oldest comments first'] = 'Eski yorumları baştar göster';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Başarılı olarak kayıt oldunuz, yakında bağlantı ayarlarını içeren bir e-posta alacaksınız. Hoş geldiniz.';
+$lang['Username modification'] = 'Kullanıcı adı değişikliği';
+$lang['edit'] = 'düzenle';
+$lang['2small'] = 'XXS - minicik';
+$lang['Thank you for registering at %s!'] = '%s de kayıt için teşekkür ederiz!';
+$lang['Your username has been successfully changed to : %s'] = 'Kullanıcı adınız başarılı şekilde %s olarak değiştirildi.';
+$lang['xsmall'] = 'XS - çok küçük';
+$lang['Here are your connection settings'] = 'Bağlantı ayarlarınız bunlardır';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Bu e-Postayı yanlışlıkla aldığınızı düşünüyorsanız bizimle %s ^\'den bağlantı kurabilirsiniz.';
+$lang['Password: %s'] = 'Şifre: %s';
+$lang['Username: %s'] = 'Kullanıcı adı: %s';
+$lang['Date created, new &rarr; old'] = 'Oluşturulan tarih, yeni &rarr; eski';
+$lang['Date created, old &rarr; new'] = 'Oluşturulan tarih, eski &rarr; yeni';
+$lang['Date posted, new &rarr; old'] = 'Gönderilme tarihi, yeni &rarr; eski';
+$lang['Date posted, old &rarr; new'] = 'Gönderilme tarihi, eski &rarr; yeni';
+$lang['Desktop'] = 'Masaüstü';
+$lang['File name, A &rarr; Z'] = 'Dosya adı, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Dosya adı, Z &rarr; A';
+$lang['Manual sort order'] = 'Elle sıralama';
+$lang['Mobile'] = 'Mobil';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Sayısal Tanımlayıcı (1-9)';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Sayısal Tanımlayıcı (9-1)';
+$lang['Photo sizes'] = 'Fotoğraf boyutları';
+$lang['Photo title, A &rarr; Z'] = 'Fotoğraf başlığı, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Fotoğraf başlığı, Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = 'Puan, yüksek &rarr; düşük';
+$lang['Rating score, low &rarr; high'] = 'Puan, düşük &rarr; yüksek';
+$lang['View in'] = 'Görüntüle';
+$lang['Visits, high &rarr; low'] = 'Görüntülenme, yüksek &rarr; düşük';
+$lang['Visits, low &rarr; high'] = 'Görüntülenme, düşük &rarr; yüksek';
+$lang['%d rate'] = '%d oy';
+$lang['Bad request'] = 'Geçersiz istek';
+$lang['Forbidden'] = 'Yasaklanmış';
+$lang['Page not found'] = 'Sayfa bulunamadı';
+$lang['Permalink for album not found'] = 'Albüm kalıcı bağlantısı bulunamadı';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo düzeltilemeyen bir hata ile karşılaştı';
+$lang['Requested album does not exist'] = 'Talep edilen albüm yok';
+$lang['Requested tag does not exist'] = 'Talep edilen etiket yok';
+$lang['Email address is mandatory'] = 'e-Posta adresi mecburidir';
+$lang['Username is mandatory'] = 'Kullanıcı adı mecburidir';
+$lang['mandatory'] = 'zorunlu';
+$lang['Website'] = 'Web sitesi';
+$lang['Your website URL is invalid'] = 'Web sitenizin URL adresi geçersiz';
+$lang['Email'] = 'E-posta';
+$lang['First Page'] = 'İlk sayfa';
+$lang['Go back to the album'] = 'Albüme geri dön';
+$lang['Last Page'] = 'Son sayfa';
+$lang['Password is missing. Please enter the password.'] = 'Şifre eksik. Lütfen şifrenizi girin.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Şifre doğrulama eksik. Lütfen seçtiğiniz şifreyi doğrulayın.';
+$lang['%d photos per page'] = 'sayfa başına %d fotoğraf';
+$lang['Theme'] = 'Tema';
+?>
Index: /tags/2.6.0RC1/language/tr_TR/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,126 @@
+<h2>Albüm Editleme</h2>
+
+<h3>Bilgiler</h3>
+
+<ul>
+
+  <li><strong>isim</strong>: albüm ismini ayarlar (fiziksel albüm şeklinde sanal isimlendirme).</li>
+
+  <li><strong>açıklama</strong>: içerik hakkında genel fikir veren kısa metin,
+  bu metin sayfanın alt kısmında gözükür.</li>
+
+</ul>
+
+<h3>Taşıma</h3>
+
+<p>Albüm sanal albümse taşıyabilirsiniz. Albümü taşımak üst albümün değiştirilmesi anlamına gelir.</p>
+
+<h3>Seçenekler</h3>
+
+<ul>
+
+  <li><strong>Erişim Türü</strong>: Yetki Yönetimi. Bir Albümü özel yaparsanız tüm alt albümleri özel olur. Bir albümü herkese açık yaparsanız tüm üst albümleri aynı yetkiyi alır..</li>
+
+  <li><strong>Kilit</strong>: Albüm ve alt albümler bakım için kilitli olacak.</li>
+
+  <li><strong>Yorumlar</strong>: Kullanıcıları bu albümdeki fotoğrafları yorumlamak için yetkilendirme</li>
+
+</ul>
+
+<p>Ayrıca "Özellikler" yönetim ekranından (screens <span
+class="pwgScreen">Yorumlar</span>, <span class="pwgScreen">Kilit</span>,
+<span class="pwgScreen">Genel/Özel</span>, <span
+class="pwgScreen">Temsilci</span> available from <span
+class="pwgScreen">Administration &raquo; Albums &raquo; Properties</span>). bu özellikleri yönetebilirsiniz.</p>
+
+<h3>Sıralama</h3>
+
+<p>Varsayılan görüntüleri sıralama düzenini kullanın.</p>
+
+<p>Bu sıralama düzeninin alt albümler için geçerli olup olmadığını belirtiniz.</p>
+
+<p>Bu albüm ile kullanılmak üzere özel sıralama kriterleri seçiniz.</p>
+<ul>
+<li><strong>Oluşturulma tarihi</strong>: Fotoğrafın çekildiği tarih</li>
+<li><strong>Yüklenme tarihi</strong>: Senkronizasyon tarihi</li>
+<li><strong>Ortalama oran (*)</strong>: Ziyaretçi reytingine göre değişir</li>
+<li><strong>En çok ziyaret edilen (*)</strong>: En çok ziaret edilenlere göre sıralama yapar</li>
+<li><strong>Dosya Adı</strong>: Dosya adına göre sıralama</li>
+<li><strong>Id</strong>: İç Id (Son kategoriler öncekilerden daha yüksek önceliğe sahiptir.</li>
+
+</ul>
+<p><strong>(*)</strong>Uyarı: Sıralama düzenini test edip beklenmeyen sonuçlar içermediğinden emin olun</p>
+
+
+<h3>Representant</h3>
+
+<p>The album representative is the thumbnail displayed on the main page (<span class="pwgScreen">category.php</span>) to represent
+the album when
+it contains only sub-albums and no direct photo (just as the root album).</p>
+photo of a album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: one of the action buttons let you set the current photo as the representative for the
+  displayed album. This button is available only for administrators.</li>
+
+  <li><span class="pwgScreen">Modify informations about a photo</span> in
+  administration. This screen can be reached from <span
+  class="pwgScreen">picture.php</span> or <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>. See the help of this screen for
+  details.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Properties,
+  Representative</span>. See the help of this screen for details.</li>
+
+  <li><span class="pwgScreen">Albüm Editleme</span> (Editleme Ekranı).</li>
+
+</ul>
+
+<p>The choice of a representative depends on the 
+<code>allow_random_representative</code> configuration parameter (see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In default mode (<code>allow_random_representative</code> set to false),
+each album containing at least one element is represented by a fixed
+element. Once set (at album creation), the representative changes only
+when an administrator ask for it. If the representative is not appropriate,
+you can ask to <strong>Find a new representant by random</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to <span class="pwgScreen">Modify
+informations about a photo</span> screen. The only option on the current screen
+is the <strong>Delete representant</strong> button.</p>
+
+<h3>Yeni albüm için tüm fotoğrafları bağlama</h3>
+
+<ul>
+
+<li><strong>Sanal albüm adı</strong>: Yeni albüm adı oluştutulacak, 
+mevcut kategorideki tüm fotoğraflar yeni birime bağlı olacak.</li>
+
+<li><strong>Ana Albüm</strong>: Yeni albüm oluturulacak durumlarda,
+root dizininde kkök albüm oluşturun.</li>
+
+</ul>
+
+<h3>Albüm fotoğraflarını mevcut albümlere bağlayın</h3>
+
+<ul>
+
+<li><strong>Albümler</strong>: hedef albüm seçin.</li>
+
+</ul>
+
+<h3>Grup üyelerine bilgilendirici e-posta gönderimi</h3>
+
+<ul>
+
+<li><strong>Gtup</strong>: alıcı grubu</li>
+
+<li><strong>Mail içeriği</strong>: Kullanıcılara göndermek için metin alanı.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/tr_TR/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Sanal Albümler Taşınıyor</h2>
+
+<p>Sadece sanal albümler yeni bir ana albüm alabilir.</p>
+
+<h3>Taşınacak Sanal Albümler</h3>
+
+<p>Taşımak istediğiniz bir veya daha fazla sanal albümü seçiniz. 
+Bu liste boş ise, bu demektir ki henüz bir sanal albümünüz yok.</p>
+
+<h3>Yeni Ana Albüm</h3>
+
+<p>Sana yada fiziksel yeni bir ana albüm seçiniz. 
+Eğer ana albüm seçmezseniz, seçilen sana albümler root bölümüne taşınacaktır.
+Bir albüm kendi içine ya da kendi alt albümü içine taşınamaz.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/cat_options.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>Albüm seçenekleri</h2>
+
+<p>Aynı anda birkaç albüm için seçenekler yönetimi.</p>
+
+<dl>
+
+<dt>Yorumlar</dt>
+<dd>Bir resim eğer albüme bağlı ve yorum ayarları etkin ise kullanıcılarınız tarafından yorumlanabilir.</dd>
+
+<dt>Kilit</dt>
+<dd>Kilitli albümler bakım için devre dışıdır. Yalnızca yöneticiler bu albümleri galeride görüntüleyebilir.</dd>
+<dt>Özel / Genel</dt>
+<dd>Bir albüm özel olduğu zaman, kullanıcı ve gruplara gerekli izinleri veriniz</dd>
+
+<dt>Temsilci</dt>
+<dd>Yapılandırma ayarlarını tamamladığınızda bu seçenek etkinleşecektir
+<code>allow_random_representative</code> (bakınız ve <span
+ class="filename">include/config_defaults.inc.php</span>)
+<em>doğrulayınız</em>. Her albüm rastgele bir resim ya da eşsiz bir temsilci olarak seçilen bir resim ile temsil edilebilir.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/tr_TR/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>Albüm izinleri düzenle</h2>
+
+<p>Bu ekran sadece özel albümler içindir. Burada kullanıcılar ve gruplar için albüm izinlerini düzenleyebilirsiniz.</p>
+
+<h3>Gruplar</h3>
+
+<p>Bu albüm için gruplara erişim izin verebilir veya reddedebilirsiniz. Grup izinlerini değiştirerek, gruba bağlı olan kullanıcıların albüm erişim izni olup olmamasını düzenleyebilirsiniz.</p>
+
+<h3>Kullanıcılar</h3>
+
+<p>Kullanıcılar için kişisel erişim izni verebilir veya reddedebilirsiniz. Bir albüme grup erişim izni olan kullanıcın bu şekilde erişimi iptal edilebilir.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/configuration.html	(revision 25596)
@@ -0,0 +1,117 @@
+<h2>Yapılandırma</h2>
+
+<p>Bu ekranda yönetici temel yapılandırma yapabilir. Nitekim, bu ekran sadece basit yapılandırma parametreleri gösterir, yöneticilerin büyük çoğunluğu için yeterli olacaktır. Eğer diğer sayısız (ve ileri) yapılandırma parametrelerini görmek istiyorsanız <span
+class="filename">include/config_default.inc.php</span> dosyasını okuyunuz.</p>
+
+<p>Bu ekran birkaç bölüme ayrılmıştır, temaya göre yapılandırma parametrelerini yeniden gruplama.</p>
+
+
+<h3>Ana</h3>
+<ul>
+  <li><strong>Galeri başlığı</strong>: E-posta bildirimleri ile RSS beslemelerinde kullanılan.</li>
+
+  <li><strong>Sayfa afişi</strong>: her bir genel sayfanın üst kısmında görüntülenen.</li>
+
+  <li><strong>Galeri URLsi</strong>: RSS beslemelerinde kullanılan.</li>
+
+  <li><strong>Galeri Kilidi</strong>: Bakım için tüm galeriyi kilitle.
+  Sadece yöneticiler galeriye ulaşabilecektir.
+  </li>
+
+  <li><strong>Derecelendirme</strong>: Resim derecelendirme özelliği açıldı.</li>
+
+  <li><strong>Misafir Derecelendirmeleri</strong>: Kayıtlı olmayan kullanıcılar resimleri derecelendirebilir.</li>
+
+  <li><strong>Kullanıcı kaydına izin ver</strong>: Herkes kayıt olabilir..</li>
+
+  <li><strong>E-Posta adresi, tüm kullanıcılar için zorunludur</strong>: işlemin yönetici tarafından yapılması durumu hariç, kayıt ve profil güncellemede kontrol edilecektir .</li>
+
+  <li><strong>Yeni bir kullanıcı kayıt olduğunda yöneticiye e-posta gönder</strong>: yöneticiler her kayıt için bir e-posta ile bildirilir.</li>
+
+</ul>
+
+<h3>Geçmiş</h3>
+
+  <p>Sayfa ziyaretleri <span
+  class="pwgScreen">category.php</span> ve <span
+  class="pwgScreen">picture.php</span>
+  <code>geçmiş</code> tablosunda kayıt edilecektir.</p>
+
+  <p>Ziyaretler <span
+  class="pwgScreen">Yönetim &raquo; Araçlar &raquo; Geçmiş</span> bölümünde gösterilecektir.</p>
+
+<ul>
+  <li><strong>Misafirler tarafından ziyaret edilen sayfaları kaydet</strong>: misafirlerin sayfa ziyaretleri kayıt altına alınacaktır.</li>
+
+  <li><strong>Kayıtlı kullanıcılar tarafından ziyaret edilen sayfaları kaydet</strong>: Kayıtlı kullanıcıların sayfa ziyaretleri kayıt altına alınacatırk.</li>
+
+  <li><strong>Yöneticiler tarafından ziyaret edilen sayfaları kaydet</strong>: Yöneticilerin sayfa ziyaretleri kayıt altına alınacaktır.</li>
+
+</ul>
+
+<h3>Yorumlar</h3>
+<ul>
+
+  <li><strong>Herkes yorum yapabilir</strong>: Misafirler dahil herkes yorum yapabilir.</li>
+
+  <li><strong>Sayfa başına yorum sayısı</strong>.</li>
+
+  <li><strong>Onaylama</strong>: yorumlar bir yöneticinin onayından geçmeden sitede görünür hale gelemez. Kullanıcı yorumlarını doğrulama ekranı <span class="pwgScreen">Yönetim &raquo; Araçlar &raquo; Bekleyen Yorumlar</span> da yer alır.</li>
+
+  <li><strong>Bir yorum eklendiği zaman yöneticilere e-posta gönder</strong>:
+Bir kullanıcı yorum yaptığı ve bu yorum onaylandığı zaman yöneticilere e-posta gönder.</li>
+
+  <li><strong>Bir yorum onaylama beklediği zaman yöneticilere e-posta gönder</strong>:
+Bir kullanıcı yorum gönderdiği ve bu yorum yönetici onayı beklediği zaman yöneticilere e-posta gönder.
+Kullanıcı yorum doğrulama ekranı  <span class="pwgScreen">Yönetim, Araçlar, Yorumlar</span>.</li>
+
+</ul>
+
+<h3>Yükleme</h3>
+<ul>
+  <li><strong>Resim yükleme linkini her zaman göster</strong>: Yüklenebilir albüm varsa, bir yükleme linki her albümde görünecek.</li>
+  <li><strong>Yükleme için kullanıcı erişim seviyesi</strong>: Kullanıcıların bazı albümlere yüklemesini kısıtla</li>
+  <li><strong>Bir resim yüklendiği zaman yöneticilere e-posta gönder</strong>: Yöneticiler her yeni bir resim yüklendiğinde bir e-posta ile haberdar edilecektir.</li>
+</ul>
+
+<h3>Varsayılan Görüntüleme</h3>
+
+<p>Burada misafirler için galerinizin nasıl görüntülenmesi gerektiği ayarlarını yapabilirsiniz. Kullanıcı giriş yaptığı zaman kendi özel görüntüleme ayarları geçerli olacaktır.
+(Düzenleme için <span class="pwgScreen">profil</span>) ayarlarına giriniz.</p>
+
+<p>Kayıtlı kullanıcıların görüntüleme ayarlarını değiştirmek için <span class="pwgScreen">Yönetim &raquo;
+Kullanıcılar &raquo; Yönet</span> penceresine gidiniz ve görüntüleme ayarlarını değiştirmek istediğiniz kullanıcıları seçerek yeni ayarları yapınız.</p>
+
+<ul>
+
+  <li><strong>Dil</strong>: Sadece Piwigo etiketleri için geçerlidir.
+  Albüm ve resim isimleri ile açıklamaları kapsamaz.
+  </li>
+
+  <li><strong>Satır başına fotoğraf sayısı</strong></li>
+
+  <li><strong>Sayfa başına satır sayısı</strong></li>
+
+  <li><strong>Tema arayüzü</strong></li>
+
+  <li><strong>Son dönem</strong>: Gün olarak. Dönem sırasında eklenen resimler yeni olarak gösterilir.
+  1 günden fazla olmalıdır.
+  </li>
+
+  <li><strong>Bütün albümleri genişlet</strong>: Varsayılan olarak bütün albümleri menüde genişlet <em>Uyarı</em>: bu seçenek kaynakları tükertir (sayfa yavaşlar)
+  ve eğer çok fazla albümünüz varsa büyük bir menü oluşturur.</li>
+
+  <li><strong>Yorum sayısını göster</strong>: küçük resimler sayfadasındaki her resim için yorum sayısını göster. Kaynakları tükertir (sayfa yavaşlar).</li>
+
+  <li><strong>Ziyaret sayısını göster</strong>: ziyaret sayılarını küçük resimlerin altında göster.
+  Yalnızca gelişmiş yapılandırma parametresi: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Not: false varsayılandır.</li>
+
+  <li><strong>resimlerin azami genişliği</strong>: azami görüntülenen genişlik.
+  Bu ayardan daha büyük olan resimler yeniden boyutlandırılacaktır.
+  Bu ayarı kullanmaktan ziyade, resimlerinizin genişliğini değiştirmek daha iyi bir uygulama olacaktır.</li>
+
+  <li><strong>resimlerin azami yüksekliği</strong>: genişlik için olan sözler bu özellik içinde geçerlidir.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/tr_TR/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,55 @@
+<h2>Şablon Uzantı Yapılandırması</h2>
+
+<h3>Hakkında</h3>
+<p>Piwigo galeriniz var olan şablon dosyalarının kişisel uyarlamalarla değiştirilmesi ile özelleştirilebilir. Örneğin, varsayılan başlık şablonu (header.tpl) özelleştirilmiş bir başlık şablonu (my-header.tpl) ile değiştirilebilir. Değişiklik veri tabanına gönderildiğinde galeriniz varsayılan yerine yenilediğiniz şablonu görüntüleyecektir.<br>
+Şablon uzantıları yeni veya uzman her iki kullanıcı grubu için de tema oluşturmak için güçlü bir yol sağlar. LocalFiles düzenleyicisi ile çalışarak kendinize ait alt temalar yaratabilirsiniz.</p>
+
+<h3>Esas (Orjinal) Şablon</h3>
+<p>Bir tema, galeri sayfalarınızı oluşturan bir kaç adet şablon dosyasından oluşur. Bunlar esas (orjinal) şablonlardır.</p>
+
+<h3>İsteğe bağlı URL anahtar kelimeleri</h3>
+<p>Bunlar modül adından sonra gelen galeri URL'sinde bulunan kelimelerdir. Bunlar aynı zamanda kalıcı bağlantı olabilirler (Detaylı bilgi için kalıcı bağlantı dokümanını inceleyebilirsiniz).  <a href="#warnings">UYARI:</a> Eğer aynı esas şablon ve aynı anahtar kelime bir veya bir kaç kişisel şablonda kullanılırsa, sadece en sonuncusu etkinleştirilir.</p>
+
+<h3>Bağlı Tema</h3>
+<p>Şablon dosyalarının yenileriyle değiştirileceği temaya Bağlı Tema denir.</p>
+
+<h3>Esas (Orjinal) şablonlar nerdedir?</h3>
+<p>Orijinal şablonlar, her tema ile birlikte gelen şablon dosyalarıdır. Bunlar <em>/themes/default/template</em> (yada <em>themes/<theme name>/template</em>) alanında bulunurlar. Bu şablon dosyaları yerinde düzenleme yapılmamalıdır, tema güncellemesi sırasında değişiklikler kaybedilir.<br>
+Desteklenen esas (orjinal) şablonlar arasında bunlar vardır:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>Özelleştirilmiş şablonların kaydedilmesi</h3>
+<p>Özelleştirilmiş şablonlar template-extension dizini veya alt dizinlerine kaydedilmelidir. Örneğin, <em>/template-extension/my-default/header.tpl</em> (yada <em>/template-extension/<my-theme-name>/header.tpl</em>). Şablon dosyaları uzantısı .tpl olacak şekilde her adı alabilirler. Alt dizinlerdeki şablon dosyaları Şablon yapılandırma ekranında kullanılabilir özelleştirilmiş şablonlar olarak gözükürler.</p>
+
+<h3>Özelleştirilmiş şablonların etkinleştirilmesi</h3>
+<p>Değiştirmek için esas (orjinal) şablonu seçin. İsteğe bağlı olarak özelleştirilmiş şablonun sadece o anahtar kelime ile sayfalarda gösterildiğinden emin olmak için bir URL anahtar kelimesi seçin. Bağlantılı temayı seçin ve değişiklikler o temada etkinleşecektir.
+Değişiklikleri veri tabanına gönderin..</p>
+
+<h3>Özelleştirilmiş şablonları devredışı bırakmak</h3>
+<p>Esas (orjinal) şablondaki seçimi kaldırın ve değişikliği veritabanına gönderin.<br>
+template-extension dizinindeki özelleştirilmiş şablon dosyalarını silin.</p>
+
+<a name="warnings"></a>
+<h3>Uyarılar</h3>
+<ul>
+  <li><strong>Esas (orjinal) şablon</strong> mutlaka esas şablon olmalıdır aksi durumda öngörülemez sonuçlar alınabilir.</li>
+  <li>Eğer aynı esas şablon ve aynı URL anahtar kelimesi birden fazla özelleştirilmiş şablonda kullanılıyorsa sadece en sonuncu etkinleşir.</li>
+  <li>Dağıtımı yapılan örnek şablon dosyaları sadece test amaçlıdır. Bunları düzenlemeyin. Kendiniz bir tane yaratın veya <em>/template-extension/<my-theme>/</em> dizininde yer alan şablon dosyalarını kopyalayın.</li>
+  <li>Özelleştirilmiş şablon silindiğinde esas (orjinal) şablon derhal etkinleşir.</li>
+</ul>
Index: /tags/2.6.0RC1/language/tr_TR/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Gruplar listesi</h2>
+
+<p>Burası Grupları yöneteceğiniz bölümdür.</p>
+
+<h3>Grup Ekle</h3>
+
+<p>Yöneticiler grup ekleyebilir.</p>
+
+<h3>Gruplar listesi</h3>
+
+<p>Her bir seçenek için, şunlar sağlanır:</p>
+
+
+<ul>
+  <li>Üye listesini görebilme</li>
+  <li>İzinler yönetim bölümünü görebilme</li>
+  <li>Grup silebilme (oner gerektirir)</li>
+  <li>Geçiş durumu "varsayılan" (bir onay gerektirir)</li>
+</ul>
+
+<h3>Varsayılan gruplar</h3>
+<p>Varsayılan gruplar yenibir kullanıcı kayıt olduğuna veya yönetici oluşturduğunda otomatik olarak alınan gruplardır.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,26 @@
+<p>Galerinize resim eklemek için farklı yollar:</p>
+
+<ul>
+  <li><strong>Doğrudan yükleme</strong> Web tarayıcısı içinde
+  ve en hızlı basit yolu. Tarayıcınızın ve web sunucunuzun yeteneklerine bağlıdır.
+  büyük miktarda ki resim yüklemelerinde veya bazı sorunlarla karşılaştığınızda,
+  diğer yöntemler sizi bekliyor!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Doğrudan yüklemeye git</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> bir masaüstü uygulamasıdır, bilgisayarınızda yüklü olması gerekmektedir. pLoader penceresine resimlerinizi sürükle &amp; bırak yöntemi ile alınız , <em>"Upload to Piwigo"</em> tıklayınız ve pLoader'in bütün işlemi yapmasına izin verin. Başka bir masaüstü uygulaması ise <strong>WinToPiwigo</strong> veya <strong>Digikam</strong> ile Piwigo galerinize resimlerinizi yükleyebilirsiniz.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">pLoader'e git</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP transferi</strong> tavsiye edilen yol olmakla birlikte, çok az sayıda tıklama ile bir çok resim eklemeniz mümkündür. Fotoğraflarınızı hazırlamak için kılavuza uyun.
+  FTP yöntemi kesin olarak sunucu üzerinde fotoğraflarınızın fiziksel organizasyonu kontrolü sağlar.
+  </li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">FTP'ye git</a></p>
+</div>
Index: /tags/2.6.0RC1/language/tr_TR/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/help_groups.html	(revision 25596)
@@ -0,0 +1,10 @@
+<p>Gruplar bir liste kullanıcının izinlerini ayarlamak için uygun bir yoldur.</p>
+
+<p>Grup oluşturmak için <span class="pwgScreen">Yönetim &raquo; Kullanıcılar
+&raquo; Gruplar</span> bölümüne ve kullanıcıyı gruba eklemek için
+in <span class="pwgScreen">Yönetim &raquo; Kullanıcılar &raquo;
+Yönet</span>bölümlerine göz atınız.</p>
+
+<p>Bir kullanıcı birden fazla gruba üye olabilir. Yetkiler önceliklidir : eğer "Erkan" grup "aile" ve "arkadaşlar" üyesi ise, ve
+sadece "aile" grubu albüm "Yılbaşı 2011" görebilirse
+"Erkan" da albüm "Yılbaşı 2011" görebilecektir.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Galerinizi oluşturdukdan sonra ziyaretçileriniz için ayarlamalar yapabilirsiniz
+<ul>
+	<li>Varsayılan görünüm ayarları <span class="pwgScreen">Yönetim &raquo; Yapılandırma &raquo; Seçenekler</span> bölümündeki <span class="pwgScreen">Misafir Ayarları</span> sekmesindedir</li>
+	<li>Varsayılan tema ayarları <span class="pwgScreen">Yönetim &raquo; Yapılandırma &raquo; Temalar</span></li>
+	<li>Varsayılan dil ayarları <span class="pwgScreen">Yönetim &raquo; Yapılandırma &raquo; Diller</span></li>
+ </ul>
+ Varsayılan olarak her yeni kayıtlı kullanıcı bu özellikleri alır.
+</p>
+<p>Eğer bir sorunuz varsa, Piwigo topluluğu sizi <a href="http://tr.piwigo.org/forum">forumlarında</a> ağırlamaktan memnuniyet duyar.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,54 @@
+<fieldset>
+<legend>Resim izinleri</legend>
+
+<p>Her resim bir <strong>gizlilik derecesine</strong> sahiptir. Her bir kullanıcı da gizlilik derecesine sahiptir. Tam olarak 5 gizlilik derecesi bulunmaktadır:</p>
+<ol>
+  <li>Hiç kimse</li>
+  <li><em>Kişiler</em></li>
+  <li><em>Arkadaşlar (kişilerden bir üst derecedir )</em></li>
+  <li><em>Aile (arkadaşlardan bir üst derecedir)</em></li>
+  <li><em>Yöneteciler (diğer derecelerden üst derecedir)</em></li>
+</ol>
+
+<p>Üst derecelerin alt derecelerde izinleri vardır. Bir kullanıcıya üst derece verilirse daha fazla resim görebilir.</p>
+
+<p>Örneğin, eğer resim "peter_wedding-0024.jpg"<em>"Aile"</em> gizlilik derecesine sahip ise:</p>
+<ul>
+  <li>Peter (kim ki bir <em>"Yönetici"</em>) bu resmi görecektir çünkü <em>"Yöneticiler"</em> bütün resimleri görebilir</li>
+  <li>Beth (kim ki bir <em>"Aile"</em> member) bu resmi görecektir</li>
+  <li>Mary (kim ki bir <em>"Arkadaşlar"</em>) bu resmi göremeyecektir</li>
+</ul>
+
+<p>Bir albümün içeriğini görme izni olmayan kullanıcı bu albümü, başlığını ve etiketlerini de göremez.</p>
+
+<p>Kullanıcı izinlerini <span class="pwgScreen">Yönetim &raquo; Kullanıcılar &raquo; Yönet</span> screen.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Albüm izinleri</legend>
+
+<p>Gizlilik seviyesi ihtiyaçlarınızı karşılamıyor ise, ayrıca bir kullanıcı veya grup için albüm izinleri ayarlayabilirsiniz. Resim ve albümler üzerinde çatışma olmadan izinler ayarlanabilir.</p>
+
+<p>Albümlere erişim yasaklanabilir. Albüm erişim iznine "özel" yaparak izinleri yönetebilirsiniz.</p>
+
+<p>Bir albümü düzenleyerek "özel" yapabilirsiniz
+(<span class="pwgScreen">Yönetim &raquo; Albümler &raquo; Yönet
+&raquo; düzen</span>) veya bütün albümlerin özelliklerini
+(<span class="pwgScreen">Yönetim &raquo; Albümler &raquo;
+Özellikler &raquo; Genel / Özel</span>) den ayarlayabilirsiniz.</p>
+
+<p>Bir albüm özel olduğu zaman gruplar ve kullanıcılar için izin ayarlarını 3 şekilde değiştirebilirsiniz:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Yönetim &raquo; Kullanıcılar &raquo; Yönet &raquo;
+  aksiyonlar, izinler</span> (one link per user)</li>
+
+  <li><span class="pwgScreen">Yönetim &raquo; Kullanıcılar &raquo; Gruplar &raquo;
+  aksiyonlar, izinler</span> (one link per group)</li>
+
+  <li><span class="pwgScreen">Yönetim &raquo; Albümler &raquo; Yönet &raquo; albüm izinlerini düzenleme</span> (her albüm için bir bağlantı)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/tr_TR/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Resimler kendi dosyasına karşılık gelen albümde görüntülenir.</p>
+
+<p>Web sunucusu üzerinde resimleri bir kaç albümde birden göstertebilir, bunun
+için resimleri ikinci kez yüklemenize gerek kalmaz. herhangi bir albümle ilişkilendirilen fotoğrafa
+Fotoğraf Editleme Ekranından ulaşabilirsiniz. (Yöneticiler fotoğraf görüntüleme sayfasından fotoğraf editleme sayfasına ulaşabilir).</p>
+
+<p>Sanal albümler bu kavram üzerine kuruludur buna karşılık gelen bir dosya yoktur. Sanal albüm oluşturmak için
+ <span class="pwgScreen">Administration &raquo; Albums &raquo;
+Manage</span>.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Geçmiş</h2>
+
+<p>Geçmiş galeri ve resimleri görebilmek için sırası ile: Yönetim &raquo; Konfigürasyon &raquo; Seçenekler &raquo; Geçmiş</p>
+	
+<h3>İstatistikler</h3>
+<ul>
+  <p>Ziyaret ettiğiniz sayfaları kaydetmek isterseniz (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>),bu sekmeden izleyebilirsiniz..</p>
+	<li><strong>Genel İstatistikler</strong>: Yıllık ziyaret. </li>
+	<li><strong>Yıllık İstatistikler</strong>: Seçilen yıldaki aylık ziyaret .</li>
+	<li><strong>Aylık İstatistikler</strong>: Seçilen aydaki günlük ziyaret .</li>
+	<li><strong>Günlük İstatistikler</strong>: Seçilen gündeki saatlik ziyaret.</li>
+</ul>
+
+<h3>Arama</h3>
+<ul>
+  <p>Geçmiş sayfaları kaydet i seçtiyseniz(<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), bu sekmelerden farklı filtreler yardımıyla arama yapabilirsiniz. .</p>
+	<li><strong>Güne göre Filtrele:</strong> başlangıç ve bitiş tarihlerini belirleyerek aramak için tarih aralığı seçin</li>
+	<li><strong>Eleman türüne göre Filtrele:</strong> Eleman türünü seçerek istatistileri arayın.</li>
+	<li><strong>Kullanıcıya göre Filtrele:</strong> kullanıcı istatistiklerine göre arama yapmak için kullanıcıyı seçin.</li>
+	<li><strong>Resim açıklamasına göre Filtrele:</strong> Dosya açıklamasını seçerek istetistikleri arayın.</li>
+	<li><strong>Dosya adına göre Filtrele:</strong> Dosya adını seçerek istatistikleri arayın..</li>
+</ul>
Index: /tags/2.6.0RC1/language/tr_TR/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/maintenance.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Bakım</h2>
+
+<p>Sayfa oluşturma hızını optimize etmek için Piwigo önbellekte sakladığı bilgileri kullanır. Mesela, her albümdeki fotoğrafları her sayfa yüklenişinde saymak yerine bu bilgi veri tabanında saklanır. Teoride bu bilgi her zaman doğru olmaktadır ancak bazen bir hata oluşarak bilginin geçersiz olmasına yol açabilir.</p>
+
+<p>Bazı bilgiler gün geçtikçe kullanışsız/gereksiz hale gelebilir. Bu verilerin veri tabanından silinmesi size disk alanı kazandıracaktır.</p>
+
+<ul>
+	<li><strong>Sahipsiz etiketlerin silinmesi</strong></li>
+</ul>
+<ul>
+  <li><strong>Albüm bilgilerini güncelleme:</strong> Her albüm için takip eden bilgiler kontrol edilir ve gerekirse güncellenir: ana albüm listesi, fotoğraf sayısı, son fotoğraf tarihi, kardeş albümler arasındaki konumu, tüm albümler arasındaki konumu. Bu eylem aynı zamanda temsil fotoğraflarının tutarlılığını da kontrol eder.</li>
+  <li><strong>Fotoğraf bilgilerinin güncellenmesi:</strong> Her fotoğraf için takip eden bilgiler güncellenir: tam dosya konumu, ortalama derecelendirmes. <em>Uyarı</em>, karıştırmayın: metadata bilgisi mutlaka <span class="pwgScreen">Yönetimsel &raquo; Araçlar &raquo; Eşleştirme</span> 'dan yada tek bir fotoğrafın değişiklik sayfasından eşleştirilmelidir (örneğin buradan <span class="pwgScreen">Fotoğraf</span> </li>
+</ul>
+<ul>
+  <li><strong>Veri tabanının onarımı ve optimizasyonu:</strong>Veri tabanındaki her tablo için yeniden sıralandırma, onarım ve optimizasyon operasyonlarını yapın.</li>
+  <li><strong>Bütünlük kontrolünü yeniden başlatın</strong></li>
+</ul>
+<ul>
+  <li><strong>Geçmiş detayların silinmesi:</strong> Geçmiş tablosundaki tüm satırları silin. <span class="pwgScreen">Yönetimsel &raquo; Araçlar &raquo; Geçmiş</span> ekranı artık geçmişi görüntülemeyecektir. <em>Uyarı:</em> Geri almanın bir yolu olmadan tüm veriler kaybedilecektir.</li>
+  <li><strong>Geçmiş özetinin silinmesi:</strong> Ziyaret geçmişine ait tüm özeti silin. Bu özet geçmiş detayından alınmaktadır.</li>
+  <li><strong>Oturumların silinmesi:</strong> Zamanı geçen oturum bilgilerini silin.</li>
+  <li><strong>Hiç kullanılmayan bilgilendirme beslemelerini silin.</strong></li>
+  <li><strong>Aramalar geçmişini silin.</strong></li>
+  <li><strong>Derlenen şablonları silin.</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/tr_TR/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>Posta ile Duyuru</h2>
+
+<p>Bu ekran sitenizdeki değişiklikleri kullanıcılara e-posta ile duyuru yapmak için gerekli yapılandırmaları ve düzenlemeleri sağlar.</p>
+
+<p>Bu ekran 3 sekmeden oluşur:</p>
+
+<h3>Ayarlar</h3>
+<p>Bu sekmeyi Site Yöneticisi görebilir ve duyuru için gerekli ayarları yapmanızı sağlar.</p>
+
+<h3>Abonelik</h3>
+<p>Bu sekmeyi Site Yöneticisi görebilir ve abonelik için gerekli ayarları yapmanızı sağlar.</p>
+
+<h3>Gönder</h3>
+<p>Bu sekmeyi Site Yöneticisi görebilir ve duyuru göndermenizi sağlar..</p>
+
Index: /tags/2.6.0RC1/language/tr_TR/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>Kalıcı Bağlantılar</h2>
+
+<p>Kalıcı bağlantılar, albüm URL adreslerini daha güzel hale getirmek için kullanılırlar. Bir albüm kalıcı bağlantı tanımına sahipse, URL adresinde albüm kimliğinin kullanımına gerek yoktur.</p>
+
+<p>Kalıcı bağlantı silindiğinde, kalıcı bağlantıyı geçmiş kayıtlarına (history) kaydedebilirsiniz, böylece Piwigo galerisine ait dış bağlantılar çalışmaya devam edecektir. Kalıcı bağlantı geçmişi tablosunda kalıcı bağlantıların ne zaman silindiğini, en son ne zaman kullanıldığını ve kaç defa kullanıldığını görebilirsiniz.</p>
+
+<p>Kalıcı bağlantıların her albüme özgü olması gerektiğini unutmayın. Aynı şekilde geçmiş kayıtlarında da aynı bağlantının birden fazlasını da bulunduramazsınız.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,68 @@
+<fieldset>
+  <legend>Hızlı Başlangıç</legend>
+
+<ol>
+  <li>Bilgisayarınızda bir klasör oluşturun.</li>  
+
+  <li>Webde görüntülemek için yeniden boyutlandırdığınız fotoğraflarınızı oluşturduğunuz klasörün içine kopyalayın . <em>Önemli Uyarı </em>: Oluşturmuş olduğunuz klasör ve dosya isimleri sadece harf ve rakamlardan oluşmalı, "-", "_" or ".". Boşluk karakteri olmamalı, ve diğer karakterleri içermemelidir.</li>
+
+  <li>FTP Client ile masaüstünde oluşturduğunuz klasörü Piwigo Yüklediğiniz dizindeki 'galleries' klasörüne kopyalayın. </li>
+
+  <li>Galeri sitenizin Admin paneline giriş yaptıktan sonra <span class="pwgScreen">Yönetim Ana Sayfasına </span> girerek  Senkronizasyon butonuna basın.</li>
+</ol>
+
+<p>Tebrikler!İlk albümünüzü başarı ile oluşturdunuz..</p>
+</fieldset>
+
+<fieldset>
+  <legend>Dizin ve dosya organizasyonu</legend>
+
+<ul>
+
+  <li>
+
+    <p>"galleries" klasörünün altındaki albüm dizinleri Piwigo nun bir çok özelliğini kullanmış olarak aşağıdaki gibi sıralanmıştır.</p>
+
+    <pre>
+galleries
+|-- wedding
+|   |-- celebration
+|   |   |-- arrival
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- departure
+|   |       +-- paul-and-sarah.jpg
+|   +-- party
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- honeymoon
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.</li>
+
+  <li>Basically, an element is represented by a file. A file can be a
+  Piwigo element if its extension is among <code>file_ext</code>
+  configuration parameter possibilities (see <span
+  class="filename">include/config_default.inc.php</span> file). A file can
+  be a picture if its extension is among <code>picture_ext</code>
+  configuration parameter possibilities.</li>
+
+  <li>No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename
+  extension. Optionally, you can associate a thumbnail and a representative
+  file (see video.avi in the example above).</li>
+
+  <li><em>Warning</em>: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.</li>
+
+  <li>Once photos are correctly placed in the
+  directories, go to: <span class="pwgScreen">Administration &raquo; Tools &raquo;
+  Synchronize</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/tr_TR/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>Arama</h2>
+
+<p>Bu sayfa bütün galerideki resimlerde arama yapmanızı sağlar.</p>
+
+<dl>
+
+  <dt>Kelime arama</dt>
+  <dd>Galerideki resim özelliklerine göre bir veya bir kaç kelime arama yapabilirsiniz. Kısmen uyuşanlar için joker * işaretini kullanın.</dd>
+
+  <dt>Yazar arama</dt>
+  <dd>Kısmen uyuşanlar için joker * işaretini kullanın.</dd>
+
+  <dt>Tarih arama</dt>
+  <dd>Bir başlangıç ve bitiş tarihi seçerek aramadır. Başlangıcı boş bırakarak da arayabilirsiniz. Bitiş tarihi aşağıdaki biçimde olmalıdır: AAAA (örneğin: 2004)</dd>
+
+  <dt>Albüm içinde arama</dt>
+  <dd>Bir veya bir kaç albüm seçerek arama. Alt albümler de aramak için ana albümü seçtikten sonra alt albümlerde arama seçeneği etkin olmalıdır.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/tr_TR/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/synchronize.html	(revision 25596)
@@ -0,0 +1,13 @@
+<h2>Senkronize</h2>
+
+<p>İki tip senkronizasyon vardır:</p>
+<ul>
+	<li>dizinler/dosyalar</li>
+	<li>dosya metadata</li>
+</ul>
+
+<p>Dizinlerin ve dosyaların senkronizasyonu, veritabanındaki dizin ağacı ile albüm ağacının güncellenmesi anlamındadır.
+Dosya metada senkronizasyonu, veritabanındaki fotoğraf bilgisin, örneğin dosya büyüklüğü, piksel olarak boyutları, EXIF yada IPTC bilgisinin senkronizasyonu anlamına gelir.</p>
+
+<p>Yüklemelerinizin ve galerilerin senkronizasyonu sırasında ilk olarak mutlaka dizinleri ve dosyaları senkronize etmelisiniz.</p>
+<p>Senkronizasyon işlemi uzun zaman alabilir (sunucu yüküne ve yönetilecek işlere bağlıdır) bundan dolayı albümden albüme yapılması mümkündür.</p>
Index: /tags/2.6.0RC1/language/tr_TR/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/help/user_list.html	(revision 25596)
@@ -0,0 +1,25 @@
+<h2>Kullanıcı listesi</h2>
+
+<p>Bu bölüm kayıtlı kullanıcıların özelliklerini düzenlemek için olmakla beraberfarklı bölümlere ait özellikler hariçtir.</p>
+
+<h3>Kullanıcı ekle</h3>
+
+<p>Yönetici kullanıcı ekleyebilir</p>
+
+<h3>Kullanıcı listesi</h3>
+
+<p>Listede isimler filtre edilebilir ( * jokeri kullanılabilir), grup yada kullanıcı durumu. Bu liste artan, azalan, kayıt tarihi ve kullanıcı adı sıralamasına göre düzenlenmiş olabilir.</p>
+
+<p>Bu ekran farklı eylemler kullanılarak aynıanda bir çok kullanıcı yönetimi sağlar:</p>
+
+<ul>
+
+  <li>kullanıcıları silmek (onay gerektirir)</li>
+  <li>durumu değiştirmek</li>
+  <li>gruplara eklemek veya kaldırmak</li>
+  <li>görüntü özelliklerini değiştirmek</li>
+  <li>ek özelliklerini değiştirmek</li>
+
+</ul>
+
+<p>Varsayılan olarak seçilen kullanıcılar hedeftir veya listede görünün tüm kullanıcılar.</p>
Index: /tags/2.6.0RC1/language/tr_TR/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/install.lang.php	(revision 25596)
@@ -0,0 +1,69 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Yükleme';
+$lang['Basic configuration'] = 'Temel yapılandırma';
+$lang['Default gallery language'] = 'Varsayılan galeri dili';
+$lang['Database configuration'] = 'Veritabanı yapılandırması';
+$lang['Admin configuration'] = 'Yönetici yapılandırması';
+$lang['Start Install'] = 'Yüklemeyi başlat';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Bu ziyaretçilere gösterilecek. Bu web sitesi yönetimi için gereklidir';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Sunucuya bağlantı başarılı ancak veritabanı bağlantısı kurulamadı.';
+$lang['Can\'t connect to server'] = 'Sunucuya bağlanamadı';
+$lang['Host'] = 'Sunucu';
+$lang['User'] = 'Kullanıcı';
+$lang['user login given by your host provider'] = 'barındırma sağlağıcı tarafından size verilen kullanıcı adı';
+$lang['user password given by your host provider'] = 'barındırma sağlağıcı tarafından size verilen şifre';
+$lang['Database name'] = 'Veritabanı adı';
+$lang['also given by your host provider'] = 'ayrıca barındırma sağlayıcınız tarafından verilen';
+$lang['Database table prefix'] = 'Veritabanı tabloları öneki';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'veritabanı tablo isimlerinin önüne bu öntakı eklenecektir (tablolarınızı daha iyi yönetmenizi sağlar)';
+$lang['enter a login for webmaster'] = 'Site yöneticisi için bir kullanıcı adı girin';
+$lang['webmaster login can\'t contain characters \' or "'] = 'Site yöneticisi adı \' veya " karakterlerini içeremez';
+$lang['please enter your password again'] = 'lütfen şifrenizi tekrar giriniz';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Gizli tutun, yönetim paneline ulaşmanızı sağlar';
+$lang['Password [confirm]'] = 'Şifre [kabul]';
+$lang['verification'] = 'doğrulama';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Yardım ihtiyacınız var? Sorularınızı <a href="%s">Piwigo forumda sorabilirsiniz</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Ziyaretçilerin site yöneticisi ile bağlantıya geçmesi için bu e-posta adresini kullanabileceklerdir.';
+$lang['PHP 5 is required'] = 'PHP 5 gereklidir';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Web sunucunuz şu anda PHP %s çalıştırıyor görünüyor.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo .htaccess dosyası oluşturarak veya değiştirerek ayarlarınızı PHP 5 \'e geçirmeyi deneyebilir.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Not: Yapılandırmayı kendiniz değiştirip sonrasında Piwigo\'yu tekrar başlatabilirsiniz.';
+$lang['Try to configure PHP 5'] = 'PHP 5 yapılandırmasını dene';
+$lang['Sorry!'] = 'Üzgünüm!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo, PHP 5 yapılandırmasını başaramadı.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Barındırma sağlayıcınızın desteğini alarak, kendinizin PHP 5\'e nasıl geçebileceğinizi öğrenin.';
+$lang['Hope to see you back soon.'] = 'Yakında tekrar görüşmek dileğiyle.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Tebrikler, Piwigo kurulumu tamamlandı.';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Diğer çözüm aşağıdaki kutudaki yazıyı kopyalayın ve "local/config/database.inc.php" dosyası içine pasteleyin.(Uyarı : database.inc.php sadece yazı içermeli hiçbir ifade veya boşluk karakteri içermemelidir)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'ocal/config/database.inc.php konfigürasyon dosyasının oluşturulması başarısız oldu.';
+$lang['Download the config file'] = 'Yapılandırma dosyasını indir';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Yapılandırma dosyasını indirip kurulum dizininde local/config bölümüne yükleyebilirsiniz.';
+$lang['Just another Piwigo gallery'] = 'Bir başka Piwigo galerisi';
+$lang['Welcome to my photo gallery'] = 'Fotoğraf galerime hoş geldiniz';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Herhangi bir sebeple yardım gerektiğinde, forumlarımıza danışmakta tereddüt etmeyin: %s';
+$lang['Welcome to your new installation of Piwigo!'] = 'Piwigo\'nunuzun yeni kurulumuna hoşgeldiniz!';
+$lang['Password ']['confirm'] = 'Şifre [doğrula]';
+$lang['localhost or other, supplied by your host provider'] = 'localhost veya diğer, bulundurma hizmeti sağlayıcınız tarafından verilen';
+?>
Index: /tags/2.6.0RC1/language/tr_TR/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Türkçe [TR]
Index: /tags/2.6.0RC1/language/tr_TR/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/tr_TR/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/tr_TR/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Upgrade'] = 'Yükseltme';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Bu sayfa, eski Piwigo sürümüne ait veritabanını yeni sürüme yükseltmeyi öneriyor. Yükseltme yardımcısı şu anda <strong>sürüm %s</strong> (veya eşdeğeri) çalıştırıldığınızı düşünüyor.';
+$lang['Upgrade from version %s to %s'] = '%s sürümünden %s sürümüne yükselt';
+$lang['Statistics'] = 'İstatistik';
+$lang['total upgrade time'] = 'toplam güncelleme zamanı';
+$lang['total SQL time'] = 'toplam SQL zamanı';
+$lang['SQL queries'] = 'SQL sorguları';
+$lang['Upgrade informations'] = 'Yükseltme bilgileri';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Herhangi bir sorunla karşılaşırsanız, [Yönetim>Araçlar>Bakım] ile bakım yapınız.';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Bir önlem olarak, belirtilen eklentiler devre dışı bırakıldı. Tekrar etkinleştirmeden önce yükseltme seçeneklerini kontrol etmelisiniz.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Sadece yönetici yüksletmeyi çalıştırabilir: Lütfen oturum açın.';
+$lang['You do not have access rights to run upgrade'] = 'Yüksletmeyi çalıştırmak için erişim hakkınız bulunmuyor';
+$lang['All sub-albums of private albums become private'] = 'Özel albümlerin tüm alt albümleri de özel olur';
+$lang['User permissions and group permissions have been erased'] = 'Kullanicılar ve grupların izinleri silinmiştir';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Önceki yapılandırmadan sadece pul resimleri ön takıları ve site yöneticisi e-posta adresi kaydedildi.';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '<i>%s</i> içine, <b>?></b> önce, ekleyin:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Bir önlem olarak, belirtilen temalar devre dışı bırakıldı. Tekrar etkinleştirmeden önce yükseltme seçeneklerini kontrol etmelisiniz.';
+
+?>
Index: /tags/2.6.0RC1/language/uk_UA/about.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/about.html	(revision 25596)
@@ -0,0 +1,19 @@
+<p>Ця фотогалерея базована на Piwigo.</p>
+
+<p>Piwigo - це набір веб-базованого програмного забезпечення для
+фотогалереї, побудованого активною групою користувачів та розробників.
+Завдяки розширенням Piwigo легко налаштовувати. І на додачу, Piwigo є
+безкоштовною і з відкритим вихідним кодом.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org">Відвідати веб-сайт
+Piwigo</a></p>
+
+<p> Український переклад підтримується (в алфавітному порядку):
+	<ul>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13737">animan</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16485">marchelly</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=13453">quest_tom</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=17060">Rata</a></li>
+		<li><a href="http://piwigo.org/forum/profile.php?id=16520">rukhov</a></li>
+	</ul>
+            .... велике спасибі вам </p>
Index: /tags/2.6.0RC1/language/uk_UA/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/admin.lang.php	(revision 25596)
@@ -0,0 +1,971 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang[' and %d virtual'] = ' і %d віртуальних';
+$lang['%d album including'] = 'включає %d альбом';
+$lang['%d album moved'] = '%d альбом перенесено';
+$lang['%d albums including'] = 'включає %d альбомів';
+$lang['%d albums moved'] = '%d альбомів перенесено';
+$lang['%d anomalies have been detected corrected.'] = '%d аномалій було виявлено і виправлено.';
+$lang['%d anomalies have been detected.'] = '%d аномалій було виявлено.';
+$lang['%d anomalies have been ignored.'] = '%d аномалій було проігноровано.';
+$lang['%d anomalies have not been corrected.'] = '%d аномалій не було виправлено.';
+$lang['%d anomaly has been corrected.'] = '%d аномалія була виправлена.';
+$lang['%d anomaly has been detected.'] = '%d аномалія була виявлена.';
+$lang['%d anomaly has been ignored.'] = '%d аномалія була проігнорована.';
+$lang['%d anomaly has not been corrected.'] = '%d аномалія не була виправлена.';
+$lang['%d association'] = '%d асоціація';
+$lang['%d associations'] = '%d асоціацій';
+$lang['%d group'] = '%d група';
+$lang['%d groups'] = '%d груп';
+$lang['%d guest'] = '%d гість';
+$lang['%d guests'] = '%d гостей';
+$lang['%d line filtered'] = '%d лінія відфільтрована';
+$lang['%d lines filtered'] = '%d ліній відфільтровано';
+$lang['%d mail was not sent.'] = '%d лист не був відправлений.';
+$lang['%d mail was sent.'] = '%d лист був відправлений.';
+$lang['%d mails were not sent.'] = '%d листів не було відправлено.';
+$lang['%d mails were sent.'] = '%d листів було відправлено.';
+$lang['%d member'] = '%d учасник';
+$lang['%d members'] = '%d учасники';
+$lang['%d of %d photos selected'] = 'виділено %d з %d фотографій';
+$lang['%d parameter was updated.'] = '%d параметр оновлено.';
+$lang['%d parameters were updated.'] = '%d параметрів оновлено.';
+$lang['%d photo was deleted'] = '%d фотографія видалена';
+$lang['%d photos uploaded'] = '%d фотографій завантажено';
+$lang['%d photos were deleted'] = '%d фотографій видалено';
+$lang['%d physical'] = ' %d фізичні';
+$lang['%d tag'] = '%d теґ';
+$lang['%d tags'] = '%d теґів';
+$lang['%d user comment rejected'] = '%d коментар користувача відхилено';
+$lang['%d user comment validated'] = '%d коментар користувача перевірено';
+$lang['%d user comments rejected'] = '%d коментарів користувачів відхилено';
+$lang['%d user comments validated'] = '%d коментарів користувачів перевірено';
+$lang['%d user deleted'] = '%d користувач видалений';
+$lang['%d user was not updated.'] = '%d користувач не оновлений.';
+$lang['%d user was updated.'] = '%d користувач оновлений.';
+$lang['%d user'] = '%d користувач';
+$lang['Cannot delete the old permalink !'] = 'Старе посилання не може бути видалено!';
+$lang['Can\'t connect to server.'] = "З'єднання з сервером неможливе.";
+$lang['Can\'t create temporary file.'] = 'Не можна створити тимчасовий файл.';
+$lang['Can\'t download archive.'] = 'Не можна завантажити архів.';
+$lang['Can\'t read or extract archive.'] = 'Не можна прочитати чи розпакувати архів.';
+$lang['Change Admin Colors'] = 'Змінити кольори адміністрування';
+$lang['Check all'] = 'Перевірити все';
+$lang['Check automatic corrections'] = "Перевірити автоматичне з'єднання";
+$lang['Check for updates'] = 'Перевірити оновлення';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Перевірити оновлення не вдалося з невідомих причин.';
+$lang['Check for upgrade'] = 'Перевірити оновлення';
+$lang['Check integrity'] = 'Перевірка цілісності';
+$lang['Choose an action'] = 'Виберіть дію';
+$lang['Choose an option'] = 'Виберіть опцію';
+$lang['Classic display'] = 'Показувати класично';
+$lang['clean'] = 'прибрати';
+$lang['Comments for all'] = 'Коментарі для всіх';
+$lang['%d users deleted'] = '%d користувачів видалено';
+$lang['%d users were not updated.'] = '%d користувачів не оновлено.';
+$lang['%d users were updated.'] = '%d користувачів оновлено.';
+$lang['%d users'] = '%d користувачів';
+$lang['%d waiting for validation'] = '%d очікують перевірки';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s повинно бути встановлено в false в файлі local/config/config.inc.php';
+$lang['%s value is not correct file because exif are not supported'] = '%s значення некоректне, оскільки EXIF не підтримуються';
+$lang['+ Add an upload box'] = '+ Додати вікно завантаження';
+$lang[', click on'] = ', натисніть на';
+$lang['A new version of Piwigo is available.'] = 'Доступна нова версія Piwigo.';
+$lang['Access type'] = 'Тип доступу';
+$lang['ACCESS_0'] = 'Вільний доступ';
+$lang['ACCESS_1'] = 'Доступ для всіх';
+$lang['ACCESS_2'] = 'Доступ для зареєстрованих користувачів';
+$lang['ACCESS_3'] = 'Доступ для адміністраторів';
+$lang['ACCESS_4'] = 'Доступ для вебмайстрів';
+$lang['ACCESS_5'] = 'Немає доступу';
+$lang['Action'] = 'Дія';
+$lang['Actions'] = 'Дії';
+$lang['Activate icon "%s"'] = 'Активувати значок "%s"';
+$lang['Activate Navigation Bar'] = 'Активувати панель навігації';
+$lang['Activate Navigation Thumbnails'] = 'Активувати навігаційні мініатюри';
+$lang['Activate'] = 'Активувати';
+$lang['Active Languages'] = 'Активні мови';
+$lang['Active Plugins'] = 'Активні плаґіни';
+$lang['Active Themes'] = 'Активні теми';
+$lang['Add a filter'] = 'Додати фільтр';
+$lang['Add a tag'] = 'Додати теґ';
+$lang['Add a user'] = 'Додати користувача';
+$lang['Add a virtual album'] = 'Додати віртуальний альбом';
+$lang['Add another set of photos'] = 'Додати ще один набір фотографій';
+$lang['Add detailed content'] = 'Додати детальний зміст';
+$lang['Add group'] = 'Додати групу';
+$lang['Add New Language'] = 'Додати нову мову';
+$lang['add new photos to caddie'] = 'додати нові зображення в кошик';
+$lang['Add New Theme'] = 'Додати нову тему';
+$lang['Add Photos'] = 'Додати зображення';
+$lang['Add tags'] = 'Додати теґи';
+$lang['Add write access to the "%s" directory'] = 'Додати право запису в директорію "%s"';
+$lang['Add'] = 'Додати';
+$lang['Add/delete a permalink'] = 'Додати/видалити посилання';
+$lang['added'] = 'додано';
+$lang['Administration Home'] = 'Адміністрування';
+$lang['Advanced features'] = 'Розширені функції';
+$lang['Album "%s" has been added'] = 'Доданий альбом "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Альбом "%s" зараз вміщає %d фотографій';
+$lang['Album photos associated to the following albums: %s'] = 'Фотографії альбому пов\'язані з наступними альбомами: %s';
+$lang['Album list management'] = 'Список управління альбомом';
+$lang['Album manual order was saved'] = 'Альбом був збережений в ручному режимі';
+$lang['Album name'] = 'Назва альбому';
+$lang['Album updated successfully'] = 'Альбом оновлено успішно';
+$lang['albums added in the database'] = 'альбоми додано в базу даних';
+$lang['Albums authorized thanks to group associations'] = 'Альбоми авторизовані завдяки групі асоціацій';
+$lang['Albums automatically sorted'] = 'Альбоми відсортовані автоматично';
+$lang['albums deleted in the database'] = 'альбоми видалені з бази даних';
+$lang['All %d photos are selected'] = 'Виділено всі %d фотографій';
+$lang['All optimizations have been successfully completed.'] = 'Вся оптимізація була успішно завершена.';
+$lang['all'] = 'всі';
+$lang['Allow rating'] = 'Дозволити рейтинг';
+$lang['Allow user customization'] = 'Дозволити налаштування користувача';
+$lang['Allow user registration'] = 'Дозволити реєстрацію користувачів';
+$lang['Allow users to delete their own comments'] = 'Дозволити користувачам видаляти свої коментарі';
+$lang['Allow users to edit their own comments'] = 'Дозволити користувачам редагувати свої власні коментарі';
+$lang['an error happened'] = 'помилка';
+$lang['An error occured during extraction (%s).'] = 'Помилка при отриманні файлу (%s).';
+$lang['An information email was sent to group "%s"'] = 'Електронний лист з інформацією відправлений до групи "%s"';
+$lang['and'] = 'і';
+$lang['Anomaly'] = 'Аномалія';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'В усякому разі тільки веб-майстри можуть бачити цю вкладку, не адміністратори.';
+$lang['Apply action'] = 'Застосувати дії';
+$lang['Apply selected corrections'] = 'Застосувати виділені виправлення';
+$lang['Apply to sub-albums'] = 'Застосувати до під-альбомів';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ви впевнені, що хочете встановити це оновлення? Ви повинні перевірити, чи ця версія не вимагає попереднього видалення.';
+$lang['Are you sure you want to delete this plugin?'] = 'Ви впевнені, що хочете видалити цей плаґін?';
+$lang['Are you sure you want to install this plugin?'] = 'Ви впевнені, що хочете встановити цей плаґін?';
+$lang['Associate to album'] = 'Асоціювати до альбому';
+$lang['associate to group'] = 'Асоціювати до групи';
+$lang['Associated'] = 'Асоційований';
+$lang['Authorize users to add comments on selected albums'] = 'Авторизувати користувачів для додавання коментарів у вибрані альбоми';
+$lang['Authorized'] = 'Авторизовані';
+$lang['Automatic correction'] = 'Автоматична корекція';
+$lang['automatic order'] = 'автоматичне замовлення';
+$lang['Available only with HTML format'] = 'Доступно тільки з HTML-форматом';
+$lang['average time'] = 'середній час';
+$lang['Batch Manager'] = 'Пакетний менеджер';
+$lang['between'] = 'між';
+$lang['Bound Theme'] = "Пов'язані теми";
+$lang['By %s'] = 'Автор %s';
+$lang['By rank'] = 'За рангом';
+$lang['Caddie management'] = 'Керування кошиком';
+$lang['Caddie'] = 'Кошик';
+$lang['Complementary mail content'] = 'Додатковий зміст пошти';
+$lang['Configuration'] = 'Конфігурація';
+$lang['confirm'] = 'підтвердити';
+$lang['Continue processing treatment'] = 'Продовжити лікування';
+$lang['Correction applied with error'] = 'Виправлення застосувались з помилкою';
+$lang['Correction applied with success'] = 'Виправлення успішно застосувались';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Виправлена ​​аномалія більше не ігноруватиметься';
+$lang['Correction'] = 'Виправлення';
+$lang['create a new album'] = 'створити новий альбом';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Створити директорію "%s" в кореневій директорії інсталяції Piwigo';
+$lang['Create this site'] = 'Створити цей сайт';
+$lang['created'] = 'створено';
+$lang['Current name'] = "Поточне ім'я";
+$lang['Database synchronization with files'] = 'Синхронізація бази даних з файлами';
+$lang['Database'] = 'База даних';
+$lang['Date'] = 'Дата';
+$lang['Day'] = 'День';
+$lang['Deactivate'] = 'Деактивувати';
+$lang['Default display'] = 'Показувати за замовчуванням';
+$lang['Default user cannot be deleted'] = 'Користувач за замовчуванням не може бути видалений';
+$lang['Default user does not exist'] = 'Користувач за замовчуванням не існує';
+$lang['default values'] = 'значення за замовчуванням';
+$lang['default'] = 'за замовчуванням';
+$lang['delete album'] = 'видалити альбом';
+$lang['Delete orphan tags'] = 'Видалити пусті теґи';
+$lang['delete photo'] = 'видалити фотографію';
+$lang['Delete Representant'] = 'Видалити представника';
+$lang['Delete selected photos'] = 'Видалити виділені зображення';
+$lang['Delete selected tags'] = 'Видалити виділені теґи';
+$lang['Delete selected users'] = 'Видалити виділених користувачів';
+$lang['Delete this language'] = 'Видалити цю мову';
+$lang['delete this site and all its attached elements'] = "Видалити цей сайт і всю пов'язану з ним інформацію";
+$lang['Delete this theme'] = 'Видалити цю тему';
+$lang['delete'] = 'видалити';
+$lang['Deleted on'] = 'Видалено на';
+$lang['deleted'] = 'видалено';
+$lang['Deletions'] = 'Видалення';
+$lang['Deny selected groups'] = 'Заблокувати виділені групи';
+$lang['Deny selected users'] = 'Заблокувати виділених користувачів';
+$lang['Description'] = 'Опис';
+$lang['Detailed informations'] = 'Детальна інформація';
+$lang['directories + files'] = 'каталоги + файли';
+$lang['Directory does not exist'] = 'Каталог не існує';
+$lang['Directory'] = 'Каталог';
+$lang['Discover album:'] = 'Розкрити альбом:';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'відобразити максимум інформації (додані альбоми і зображення, видалені альбоми і зображення)';
+$lang['Display options'] = 'Показати опції';
+$lang['Dissociate from album'] = 'Відокремити від альбому';
+$lang['dissociate from group'] = 'відокремити від групи';
+$lang['Dissociated'] = 'Відокремлено';
+$lang['Documentation'] = 'Документація';
+$lang['Does not represent'] = 'Не відображати';
+$lang['Download,'] = 'Завантажити,';
+$lang['Downloads'] = 'Завантаження';
+$lang['Drag to re-order'] = 'Натисніть та перетягніть, щоб змінити порядок';
+$lang['Drop into album'] = 'Вибрати альбом';
+$lang['Duplicates'] = 'дублікати';
+$lang['Edit album permissions'] = 'Редагувати права альбому';
+$lang['Edit album'] = 'Редагувати альбом';
+$lang['Edit photo information'] = 'Редагувати інформацію про фотографію';
+$lang['Edit ranks'] = 'Редагувати ряди';
+$lang['Edit selected tags'] = 'Редагувати виділені теґи';
+$lang['Edit tags'] = 'Редагувати теґи';
+$lang['Element type'] = 'Тип елемента';
+$lang['Element'] = 'Елемент';
+$lang['photos informations synchronized with files metadata'] = 'інформація про зображення синхронізована з файлами метаданих';
+$lang['Email administrators when a comment is deleted'] = 'Надіслати лист адміністраторам, коли коментар видалено';
+$lang['Email administrators when a comment is modified'] = 'Надіслати лист адміністраторам, коли коментар змінено';
+$lang['Email admins when a comment requires validation'] = 'Надіслати лист адміністраторам, коли коментар вимагає валідації';
+$lang['Email admins when a new user registers'] = 'Надіслати лист адміністраторам, коли реєструється новий користувач';
+$lang['Email admins when a valid comment is entered'] = 'Надіслати лист адміністраторам, коли коментар введений валідний коментар';
+$lang['Environment'] = 'Середовище';
+$lang['Error list'] = 'Список помилок';
+$lang['Error on file "%s" : %s'] = 'Помилка файлу "%s" : %s';
+$lang['Error when sending email to %s [%s].'] = 'Помилка при відправці листа користувачу %s [%s].';
+$lang['Errors caption'] = 'Легенда помилок';
+$lang['errors during synchronization'] = 'помилки при синхронізації';
+$lang['even already synchronized photos'] = 'навіть вже синхронізовані зображення';
+$lang['Everybody'] = 'Всі';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Час виконання вичерпався, лікування потрібно продовжити [Приблизний час: %d секунд].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Час виконання вичерпався, лікування потрібно продовжити [Приблизний час: %d секунда].';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif розширення не доступні, адміністратор повинен відключити використання exif';
+$lang['existing album'] = 'існуючий альбом';
+$lang['Extend for templates'] = 'Розширення шаблонів';
+$lang['Failed to write file to disk'] = 'Не вдалося записати файл на диск';
+$lang['File upload stopped by extension'] = 'Завантаження файлу зупинене за допомогою розширення';
+$lang['File'] = 'Файл';
+$lang['File/directory read error'] = 'Помилка читання файлу/директорії';
+$lang['Find a new representant by random'] = 'Знайти нові випадкові представлення';
+$lang['first photo added on %s'] = 'перша фотографія додана в %s';
+$lang['for the file format'] = 'для форматів файлів';
+$lang['for this file format'] = 'для цього формату файлу';
+$lang['Forbid this language to users'] = 'Заборонити цю мову для користувачів';
+$lang['Forbid this theme to users'] = 'Заборонити цю тему для користувачів';
+$lang['Forbidden'] = 'Заборонено';
+$lang['Form'] = 'Форма';
+$lang['FTP + Synchronization'] = 'FTP + Синхронізація';
+$lang['Gallery title'] = 'Заголовок галереї';
+$lang['GD library is missing'] = 'GD бібліотека відсутня';
+$lang['GD version'] = 'GD версія';
+$lang['General statistics'] = 'Загальна статистика';
+$lang['Get Support on Piwigo Forum'] = 'Отримати підтримку на форумі Piwigo';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Надайте право запису (chmod 777) директорії "%s" в кореневому каталозі установки Piwigo';
+$lang['global mode'] = 'глобальний режим';
+$lang['Go to %s or %s for more informations'] = 'Перейдіть до %s або %s для детальнішої інформації';
+$lang['Go to'] = 'До';
+$lang['Grant selected groups'] = 'Грант виділених груп';
+$lang['Grant selected users'] = 'Грант виділених користувачів';
+$lang['group "%s" added'] = 'група "%s" додана';
+$lang['group "%s" deleted'] = 'група "%s" видалена';
+$lang['group "%s" updated'] = 'група "%s" оновлена';
+$lang['Group management'] = 'Управління групами';
+$lang['Group name'] = 'Назва групи';
+$lang['Group'] = 'Група';
+$lang['Groups'] = 'Групи';
+$lang['Guest cannot be deleted'] = 'Гість не може бути видалений';
+$lang['Guest Settings'] = 'Налаштування гостя';
+$lang['guest'] = 'гість';
+$lang['Guests'] = 'Гості';
+$lang['height must be a number superior to'] = 'висота повинна бути числом, більшим ніж';
+$lang['Hello'] = 'Привіт';
+$lang['Hello,'] = 'Привіт,';
+$lang['Help Me'] = 'Допоможіть мені';
+$lang['Hide'] = 'Приховати';
+$lang['High definition enabled'] = 'Висока чіткість включена';
+$lang['High definition'] = 'Висока чіткість';
+$lang['high'] = 'високий';
+$lang['History'] = 'Історія';
+$lang['Hit'] = 'Хіт';
+$lang['Hour'] = 'Година';
+$lang['Move'] = 'Переміщення';
+$lang['Name'] = 'Ім\'я';
+$lang['New name'] = 'Нове ім\'я';
+$lang['New parent album'] = 'Новий батьківский альбом';
+$lang['New photos added'] = 'Нові світлини додано';
+$lang['New photos were added'] = 'Нові світлини було додано';
+$lang['New tag'] = 'Новий теґ';
+$lang['No display'] = 'Не показувати';
+$lang['No photo can be deleted'] = 'Світлини не можуть бути видалені';
+$lang['No photo in the current set.'] = 'Нема світлин в поточному наборі.';
+$lang['No photo in this album'] = 'Нема світлин в цьому альбомі';
+$lang['no write access'] = 'нема доступу на запис';
+$lang['none'] = 'жодного';
+$lang['None'] = 'Жодного';
+$lang['nothing'] = 'нічого';
+$lang['on'] = 'увімкнено';
+$lang['Make this language available to users'] = 'Зробити цю мову доступною для користувачів';
+$lang['Make this theme available to users'] = 'Зробити цю тему доступною для користувачів';
+$lang['manage album photos'] = 'керувати світлинами альбому';
+$lang['Manage authorizations for selected albums'] = 'Керувати дозволами для обраного альбому';
+$lang['Manage permissions for group "%s"'] = 'Керувати дозволами групи "%s"';
+$lang['Manage permissions for user "%s"'] = 'Керувати дозволами користувача "%s"';
+$lang['Manage photo ranks'] = 'Керувати рейтингами світлин';
+$lang['manage sub-albums'] = 'керувати суб-альбомами';
+$lang['Manage tags'] = 'Керувати теґами';
+$lang['Manage this set of %d photos'] = 'Керувати цьою серією з %d світлин';
+$lang['Manage'] = 'Керувати';
+$lang['Manual order'] = 'власноруч встановлений порядок';
+$lang['manual order'] = 'саморуч встановлений порядок';
+$lang['Deactivate all'] = 'Деактивувати все';
+$lang['No file was uploaded'] = 'Файл не був завантажений';
+$lang['No mail to send.'] = 'Немає пошти для відправки.';
+$lang['No photo selected, %d photos in current set'] = 'Немає виділених зображень, %d зображення в поточному наборі';
+$lang['No photo selected, no action possible.'] = 'Немає виділених фотографій, немає можливих дій.';
+$lang['No results'] = 'Немає результату';
+$lang['No user to send notifications by mail.'] = 'Немає користувачів для оповіщення поштою.';
+$lang['Notification'] = 'Оповіщення';
+$lang['Number of comments per page'] = 'Кількість коментарів на сторінку';
+$lang['Number of downloads'] = 'Кількість завантажень';
+$lang['number of miniaturized photos'] = 'кількість створених іконок';
+$lang['Number of rates'] = 'Кількість голосів';
+$lang['Number of thumbnails to create'] = 'Кількість іконок для створення';
+$lang['on the %d selected photos'] = 'на %d вибраних зображеннях';
+$lang['only directories'] = 'лише директорії';
+$lang['only perform a simulation (no change in database will be made)'] = 'виконати лише симуляцію (нічого не буде змінено в базі даних)';
+$lang['Only private albums are listed'] = 'Тільки приватні альбоми перераховані';
+$lang['Operating system'] = 'Операційна система';
+$lang['Operation in progress'] = 'Лікування в процесі.';
+$lang['Optimizations have been completed with some errors.'] = 'Оптимізації були завершені з деякими помилками.';
+$lang['Optional URL keyword'] = "Необов'язкове ключове слово URL";
+$lang['Maximum height'] = 'Максимальна висота';
+$lang['Maximum width'] = 'Максимальна ширина';
+$lang['Members'] = 'Члени';
+$lang['Menu Management'] = 'Меню';
+$lang['Metadata synchronization results'] = 'Результати синхронізації метаданих';
+$lang['Metadata synchronized from file'] = 'Метадані синхронізовані з файлу';
+$lang['Minimum privacy level'] = 'Мінімальний рівень приватності';
+$lang['Miscellaneous'] = 'Різне';
+$lang['Missing a temporary folder'] = 'Відсутня тимчасова папка';
+$lang['Missing Plugins'] = 'Відсутні модулі';
+$lang['Modify information'] = 'Змінити інформацію';
+$lang['Month'] = 'Місяць';
+$lang['Move albums'] = 'Перемістити альбоми';
+$lang['new'] = 'новий';
+$lang['Activate icon "new" next to albums and pictures'] = 'Активувати значок "нове" поруч з альбомами і фотографіями';
+$lang['Default photos order'] = 'Порядок фотографій за замовчуванням';
+$lang['Options'] = 'Опції';
+$lang['Order of menubar items has been updated successfully.'] = 'Порядок пунктів меню був успішно оновлений.';
+$lang['Original templates'] = 'Оригінальні шаблони';
+$lang['Orphan tags deleted'] = 'Порожні теґи видалені';
+$lang['Other plugins'] = 'Інші плаґіни';
+$lang['Other private albums'] = 'Інші приватні альбоми';
+$lang['other'] = 'інший';
+$lang['Overall'] = 'Огляд';
+$lang['overrides existing values with empty ones'] = 'скасовує існуючі порожні значення';
+$lang['Page banner'] = 'Банер сторінки';
+$lang['Page end'] = 'Кінець сторінки';
+$lang['Pages seen'] = 'Переглянуті сторінки';
+$lang['Parameter'] = 'Налаштування';
+$lang['Parameters'] = 'Параметри';
+$lang['Parent album'] = 'Батьківський альбом';
+$lang['Piwigo configuration'] = 'Конфігурація Piwigo';
+$lang['Piwigo Uploader'] = 'Piwigo Завантажувач';
+$lang['Piwigo version'] = 'Версія Piwigo';
+$lang['pixels'] = 'пікселі';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Будь ласка перевірте дозволи для теки "plugins" та вкладених тек (CHMOD).';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader стоїть для <em>Piwigo Завантажувача</em>. На вашому компьютері, pLoader готує ваши світлини та відсилає їх до вашої Piwigo галереї.';
+$lang['Plugin has been successfully copied'] = 'Плаґін було успішно скопійовано';
+$lang['Plugin list'] = 'Список плаґінів';
+$lang['Plugins which need upgrade'] = 'Плаґіни які потребують модернізації';
+$lang['Plugins'] = 'Плаґіни';
+$lang['Position'] = 'Позиція';
+$lang['Predefined filter'] = 'Попередньо встановленний фільтер';
+$lang['Preferences'] = 'Уподобання';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Час для підготовки списку користувачів яким буде відправлено листи обмежений. Інші користувачі не перераховані.';
+$lang['Privacy level set to "%s"'] = 'Рівень конфідеційності встановлено в "%s"';
+$lang['Privacy level'] = 'Рівень конфідеційності';
+$lang['Private'] = 'Приватно';
+$lang['private'] = 'конфідеційно';
+$lang['Properties'] = 'Властивості';
+$lang['Public / Private'] = 'Публічно/Приватно';
+$lang['Public'] = 'Публічно';
+$lang['public'] = 'публічно';
+$lang['Purge compiled templates'] = 'Очистити скомпільовані шаблони';
+$lang['Purge history detail'] = 'Очистити історію переглядів';
+$lang['Purge history summary'] = 'Очистити історію резюме';
+$lang['Purge never used notification feeds'] = 'Очистити невикористані канали повідомлень';
+$lang['Purge search history'] = 'Очистити історію пошуку';
+$lang['Add a criteria'] = 'Додати критерії';
+$lang['Photo informations updated'] = 'Інформацію про світлину оновлено';
+$lang['Photo unreachable or no support'] = 'Світлина недоступна або непідтримуваний формат';
+$lang['Piwigo Administration'] = 'Керування Piwigo';
+$lang['Piwigo Announcements Newsletter'] = 'Розсилка оголошень Piwigo';
+$lang['Purge sessions'] = 'Чистка сесій';
+$lang['Quick Local Synchronization'] = 'Швидка локальна синхронізація';
+$lang['Random photo'] = 'Випадклва світлина';
+$lang['randomly represented'] = 'випадково представлений';
+$lang['ranks'] = 'оцінки';
+$lang['Rate date'] = 'дата оцінювання';
+$lang['Rating by guests'] = 'оцінювання відвідувачами';
+$lang['Rating'] = 'Оцінка';
+$lang['Read Piwigo Documentation'] = 'Читати документацію Piwigo';
+$lang['reduce to single existing albums'] = 'зменшити до одного існуючи альбоми';
+$lang['Refresh photo set'] = 'Оновити серію світлин';
+$lang['Refresh'] = 'Оновити';
+$lang['registration date'] = 'дата реєстрації';
+$lang['Reinitialize check integrity'] = 'Повторно ініціалізувати перевірку цілісності';
+$lang['Reject'] = 'Забракувати';
+$lang['Released on'] = 'Випущено';
+$lang['Remote'] = 'Віддалено';
+$lang['Remove all filters'] = 'Видалити всі фільтри';
+$lang['remove author'] = 'видалити автора';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Відсутнє підтвердження пароля. Будь ласка, підтвердіть вибраний пароль.';
+$lang['Password is missing. Please enter the password.'] = 'Пароль відсутній. Будь ласка введіть пароль.';
+$lang['Path'] = 'Шлях';
+$lang['Pending Comments'] = 'Коментарі в очікуванні';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Постійне посилання %s раніше використовувалося для альбому %s. Спочатку видаліть його з історії постійних посилань';
+$lang['Permalink %s is already used by album %s'] = 'Постійне посилання %s вже використовується для альбому %s';
+$lang['Permalink history'] = 'Історія постійних посилань';
+$lang['Permalink'] = 'Постійне посилання';
+$lang['Permalinks'] = 'Постійні посилання';
+$lang['Permission denied'] = 'Доступ заборонений';
+$lang['Permission granted thanks to a group'] = 'Доступ наданий завдяки групі';
+$lang['Permission granted'] = 'Доступ наданий';
+$lang['Permissions'] = 'Дозволи';
+$lang['Photo Page'] = 'Сторінка зображення';
+$lang['Photo Properties'] = 'Властивості зображення';
+$lang['photos added in the database'] = 'зображення додані в базу даних';
+$lang['photos candidates for metadata synchronization'] = 'кандидати зображень для синхронізації метаданих';
+$lang['photos deleted from the database'] = 'зображення видалені з бази даних';
+$lang['photos per page'] = 'зображень на сторінку';
+$lang['photos updated in the database'] = 'зображення оновлені в базі даних';
+$lang['Photos'] = 'Фотографії';
+$lang['Themes'] = 'Теми';
+$lang['There is no available subscribers to mail.'] = 'Немає абонентів для одержування повідомлень поштою.';
+$lang['There is no other language available.'] = 'Немає іншої доступної мови.';
+$lang['There is no other plugin available.'] = 'Немає іншого доступного плагіну.';
+$lang['There is no other theme available.'] = 'Немає іншої доступної теми.';
+$lang['This name is already used by another group.'] = "Це ім'я вже використовується іншою групою.";
+$lang['This site already exists'] = 'Цей сайт вже існує';
+$lang['This theme was not designed to be directly activated'] = 'Ця тема не була призначена для безпосереднього активування';
+$lang['Thumbnail'] = 'Мініатюра';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Час для відправки пошти обмежений. Інші листи були пропущені.';
+$lang['Time'] = 'Час';
+$lang['Title'] = 'назва';
+$lang['To send ?'] = 'Відправити?';
+$lang['To subscribe'] = 'Підписатися';
+$lang['To unsubscribe'] = 'Відписатися';
+$lang['Toggle \'default group\' property'] = 'Змінити властивість \'групи за замовчуванням\' на протилежну';
+$lang['Tools'] = 'Інструменти';
+$lang['total time'] = 'загальний час';
+$lang['Type here the author name'] = 'Введіть тут ім\'я автора';
+$lang['Type here the title'] = 'Введіть тут назву';
+$lang['Type in a search term'] = 'Введіть слово для пошуку';
+$lang['Save order'] = 'Порядок збереження';
+$lang['Save Settings'] = 'Зберегти налаштування';
+$lang['Save to permalink history'] = 'Зберегти в історію постіних посилань';
+$lang['Searching...'] = 'Пошук...';
+$lang['Search for new images in the directories'] = 'Шукати нові зображення в папках';
+$lang['Section'] = 'Розділ';
+$lang['See you soon,'] = 'До побачення,';
+$lang['See you soon.'] = 'До побачення.';
+$lang['Select at least one album'] = 'Виберіть принаймі один альбом';
+$lang['Select at least one comment'] = 'Віберіть принаймі один коментарій';
+$lang['Select at least one photo'] = 'Виберіть принаймі одну світлину';
+$lang['Select at least one user'] = 'Виберіть принаймі одного користувача';
+$lang['Select files'] = 'Виберіть файли';
+$lang['Select recipients'] = 'Виберіть одержувачів';
+$lang['Select:'] = 'Вибрати:';
+$lang['selection'] = 'вибір';
+$lang['Selection'] = 'Вибір';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Відновлення конфігурації за замовчуванням. Ви втратите налаштування плаґіна!';
+$lang['Send an information email to group members'] = 'Надіслати інформаційний лист членам групи';
+$lang['Send mail as'] = 'Надіслати лист як';
+$lang['Send mail on HTML format'] = 'Надіслати лист в HTML форматі';
+$lang['Send mail to users'] = 'Надіслати лист користувачам';
+$lang['Send'] = 'Надіслати';
+$lang['Set as default language for unregistered and new users'] = 'Встановити як мова за замовчуванням для незареєстрованих і нових користувачів';
+$lang['Set as default theme for unregistered and new users'] = 'Встановити як тема за замовчуванням для незареєстрованих і нових користувачів';
+$lang['Set author'] = 'Встановити автора';
+$lang['Set creation date'] = 'Встановити дату створення';
+$lang['Set title'] = 'Встановити назву';
+$lang['set to'] = 'встановити в';
+$lang['Settings'] = 'Налаштування';
+$lang['Show info'] = 'Показати інформацію';
+$lang['Show menubar'] = 'Показати меню';
+$lang['Simulation'] = 'Моделювання';
+$lang['singly represented'] = 'фіксоване представлення';
+$lang['Site manager'] = 'Менеджер сайту';
+$lang['Average rate'] = 'Середній бал';
+$lang['Rate'] = 'Оцінка';
+$lang['Start pLoader and add your photos.'] = 'Запустіть pLoader і додайте ваші зображення.';
+$lang['Statistics'] = 'Статистика';
+$lang['Status of user "%s" updated'] = 'Для користувача "%s" оновлений статус';
+$lang['Status'] = 'Статус';
+$lang['status'] = 'статус';
+$lang['Storage album'] = 'Зберегти альбом';
+$lang['sub-albums'] = 'під-альбоми';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Підписати %s на розсилання новин Piwigo';
+$lang['Subscribe %s'] = 'Підписати %s';
+$lang['Subscribe to notification by mail'] = 'Підписатися на повідомлення поштою';
+$lang['Subscribe'] = 'Підписатися';
+$lang['Subscribe/unsubscribe users'] = 'Підписати/відписати користувачів';
+$lang['Subscribed'] = 'Підписані';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Підписані користувачі можуть бути вказані (доступні) тільки при наявності нових елементів для повідомлення.';
+$lang['Sum of rates'] = 'Сума голосів';
+$lang['Summary'] = 'Резюме';
+$lang['Support'] = 'Підтримка';
+$lang['The following tag was deleted'] = 'Наступний теґ був видалений';
+$lang['the forum'] = 'форум';
+$lang['The gallery URL is not valid.'] = 'URL на галерею не валідний.';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Назва групи не повинна вміщувати " чи \' чи бути порожньою.';
+$lang['The name of an album must not be empty'] = 'Назва альбому не повинна бути порожньою';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Назви директорій і файлів повинні включати тільки букви, цифри, "-", "_" або "."';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Число коментарів на сторінці повинно бути між 5 і 50 включно.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Посилання повинне складатися з a-z, A-Z, 0-9, "-", "_" або "/". Воно не повинно бути числовим або починатися з цифри, що слідують за "-"';
+$lang['Switch to clear or dark colors for administration'] = 'Переключити на світлі або темні кольори для адміністрації';
+$lang['synchronize files metadata with database photos informations'] = 'синхронізувати базу даних зображень з метаданими файлів';
+$lang['synchronize files structure with database'] = 'синхронізувати структуру файлів з базою данних';
+$lang['Synchronize metadata'] = 'синхронізувати метаданні';
+$lang['Synchronize'] = 'Синхронізувати';
+$lang['Tag "%s" already exists'] = 'Теґ "%s" вже існує';
+$lang['Tag "%s" was added'] = 'Теґ "%s" додано';
+$lang['Tag selection'] = 'Вибір теґів';
+$lang['target'] = 'мета';
+$lang['Templates configuration has been recorded.'] = 'Конфігурацію шаблонів збережено.';
+$lang['Templates'] = 'Шаблони';
+$lang['test this remote site'] = 'перевірити цев віддалений вузол';
+$lang['test'] = 'тест';
+$lang['The %d following tags were deleted'] = 'Наступні %d теґи видалено';
+$lang['The anomaly will be ignored until next application version'] = 'Аномалію буде проігноровано до виходу наступної версії програми';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Файл або тека недоступні (або вони не існують або доступ заборонено)'; 
+$lang['%s has been successfully updated.'] = '%s було успішно оновлено.';
+$lang['%s photos can not be regenerated'] = '%s зображення не можуть бути відновлені';
+$lang['%s photos have been regenerated'] = '%s зображення були відновлені';
+$lang['(this tag will be deleted)'] = '(цей теґ буде видалений)';
+$lang['... or '] = '... або ';
+$lang['Add to caddie'] = 'Додати в кошик';
+$lang['All extensions are up to date.'] = 'Всі розширення останніх версій.';
+$lang['All languages are up to date.'] = 'Всі мови останніх версій.';
+$lang['All plugins are up to date.'] = 'Всі плаґінни останніх версій.';
+$lang['All themes are up to date.'] = 'Всі теми останніх версій.';
+$lang['Allowed file types: %s.'] = 'Дозволені типи файлів: %s.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Сталася помилка під час вилучення. Будь ласка, перевірте права доступу до файлів установки Piwigo.<br><a href="%s">Натисніть тут, щоб показати журнал помилок</a>.';
+$lang['An error has occured during upgrade.'] = 'Сталася помилка під час оновлення.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Приблизний максимальний дозвіл: %dM пікселів (це %dx%d пікселів).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'За замовчуванням, Piwigo створить новий розмір від HD (високої чіткості) версії вашого фото.';
+$lang['Confirm merge'] = 'Підтвердіть злиття';
+$lang['Create'] = 'Створити';
+$lang['Crop'] = 'Результат';
+$lang['display'] = 'показати';
+$lang['Do you want to activate anyway?'] = 'Чи Ви таки бажаєте активувати?';
+$lang['Dump Database'] = 'Дамп бази даних';
+$lang['ERROR'] = 'ПОМИЛКА';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ПОМИЛКА: ЦЕЙ ДОДАТОК ВІДСУТНІЙ, АЛЕ ВІН ВСТАНОВЛЕНИЙ! ВИДАЛИТИ ЙОГО ЗАРАЗ.';
+$lang['Extensions Update'] = 'Оновлення розширень';
+$lang['Follow Orientation'] = 'Дотримуватись орієнтації';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Наступні додатки можуть бути несумісні з новою версією Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Наступні теми можуть бути несумісні з новою версією Piwigo:';
+$lang['Graphics Library'] = 'Графічна бібліотека';
+$lang['Height'] = 'Висота';
+$lang['hide details'] = 'приховати деталі';
+$lang['Hoverbox display'] = 'Відображати маркерну рамку';
+$lang['I decide to update anyway'] = 'Я таки вирішив оновити';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Якшо нема HD-зображення і поточний веб-розмір більший за нові розміри, Piwigo перемістить його як HD і створить зменьшене до веб-розміру зображення.';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Якшо у Вас виникли проблеми або запитання, надішлить повідомлення до';
+$lang['Ignore All'] = 'Ігнорувати Всі';
+$lang['Ignore selected anomalies'] = 'Ігнорувати обрані аномалії';
+$lang['Ignore this update'] = 'Ігнорувати це оновлення';
+$lang['Image id'] = 'Ідентифікатор зображення';
+$lang['Image Quality'] = 'Якість зображення';
+$lang['jump to album'] = 'перейти до альбому';
+$lang['jump to photo'] = 'перейти до фото';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Залишайтесь з пректом Piwigo, підпишіться на інформаційний бюлетень Piwigo Announcement. Ви будуте одержувати повідомлення коли новий реліз буде доступний (час від часу з виправленням помилок в системі безпеки, це важливо знати і оновлювати) і коли значні події відбуваються з проектом. Лише кілька повідомлень на рік.';
+$lang['Language has been successfully installed'] = 'Мову було успішно встановлено';
+$lang['Languages which need upgrade'] = 'Мови що потребують оновлення';
+$lang['Languages'] = 'Мови';
+$lang['Last hit'] = 'Останне влучення';
+$lang['Last import'] = 'Останній імпорт';
+$lang['Last revisions'] = 'Останні зміни';
+$lang['Last send'] = 'Останне відіслане';
+$lang['Learn more'] = 'Дізнатися більше';
+$lang['leave'] = 'покинути';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Контакти';
+$lang['Level 2'] = 'Друзі';
+$lang['Level 4'] = 'Родина';
+$lang['Level 8'] = 'Адміністратори'; 
+$lang['Activate comments'] = 'Активувати коментарі';
+$lang['Default comments order'] = 'Порядок коментарів за замовчуванням';
+$lang['Images manual order was saved'] = 'Ручний порядок зображень збережено';
+$lang['Impossible automatic correction'] = 'Автоматичне виправлення неможливо';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ця тема не може бути активована, остільки батьківська тема відсутня: %s';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Неможливо відключити цю мову, спочатку потрібно встановити іншу мову за замовчуванням.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Неможливо відключити цю мову, потрібна хоча б одна мова.';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Неможливо відключити цю тему, потрібна хоча б одна тема.';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Неможливо видалити цю тему, тому що інші теми залежать від неї: %s';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'В вашому файлі php.ini, параметр upload_max_filesize (%sB) більший за параметр post_max_size (%sB), вам необхідно змінити ці налаштування';
+$lang['Inactive Languages'] = 'Неактивні мови';
+$lang['Inactive Plugins'] = 'Неактивні плаґіни';
+$lang['Inactive Themes'] = 'Неактивні теми';
+$lang['include child albums'] = 'включити дочірні альбоми';
+$lang['Include display of recent photos grouped by dates'] = 'Включити відображення недавніх фотографій, згрупованих по датам';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включити історичні дані (Увага: ліміт пам\'яті сервера може бути перевищений)';
+$lang['Information data registered in database'] = 'Інформація даних, зареєстрованих в базі даних';
+$lang['Informations'] = 'Інформація';
+$lang['Install on your computer,'] = 'Встановити на Ваш компьютер,';
+$lang['Install'] = 'Встановити';
+$lang['Installed Languages'] = 'Встановлені мови';
+$lang['Installed Themes'] = 'Встановлені теми';
+$lang['Instructions to use Piwigo'] = 'Інсрукції по використанню Piwigo';
+$lang['Invert'] = 'Інвертувати';
+$lang['IP'] = 'IP';
+$lang['Link all album photos to a new album'] = 'Зв`язати всі світлини альбому з новим альбомом';
+$lang['Link all album photos to some existing albums'] = 'Зв`язати всі світлини альбому з існуючим альбомом';
+$lang['Linked albums'] = 'Пов`язані альбоми';
+$lang['Local'] = 'Локальний';
+$lang['Lock albums'] = 'Зачинити альбоми';
+$lang['Lock gallery'] = 'Зачинити галерею';
+$lang['Lock'] = 'Замок';
+$lang['Locked'] = 'Зачинено';
+$lang['Mail address is obligatory for all users'] = 'електронная пошта обов`язкова для всіх користувачів';
+$lang['Mail content'] = 'Зміст листа'; 
+$lang['Mail sent to %s [%s].'] = 'Поштові повідомлення на %s [%s].';
+$lang['Main "guest" user does not exist'] = 'Основний "гість" користувача не існує';
+$lang['Main "guest" user status is incorrect'] = 'Основний "гість" статус користувача невірно';
+$lang['Main "webmaster" user does not exist'] = 'Основний "веб-майстер" користувача не існує';
+$lang['Main "webmaster" user status is incorrect'] = 'Основний "веб-майстер" статус користувача невірно';
+$lang['Main Page'] = 'Головна сторінка';
+$lang['Maintenance'] = 'Обслуговування';
+$lang['Manage Permissions'] = 'Управління дозволами';
+$lang['Maximum file size: %sB.'] = 'Максимальний розмір файлу: %sB.';
+$lang['Merge selected tags'] = 'Злиття обраних теґів';
+$lang['Merge tags'] = 'Злиття теґів';
+$lang['New Version'] = 'Нова версія';
+$lang['No destination tag selected'] = 'Немає призначення обраний теґ';
+$lang['Obsolete Plugins'] = 'Застарілі плаґіни';
+$lang['Photo %s of %s'] = 'Фотографія %s з %s';
+$lang['Photo name'] = 'Ім\'я зображення';
+$lang['Photos generation in progress...'] = 'Процес генерації зображень...';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не може отримати файл оновлення з сервера';
+$lang['Piwigo Update'] = 'Piwigo оновлення';
+$lang['Please wait...'] = 'Будь ласка, зачекайте...';
+$lang['remove creation date'] = 'видалити дату створення';
+$lang['Remove from caddie'] = 'Видалити з кошику';
+$lang['remove tags'] = 'видалити теґи';
+$lang['remove this filter'] = 'видалити цей фільтр';
+$lang['remove title'] = 'видалити назву';
+$lang['Repair and optimize database'] = 'Ремонт та оптимізація бази даних';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Заміна оригінальних шаблонів, налаштованих шаблонів від шаблонів розширення підтеки';
+$lang['Replacers (customized templates)'] = 'Substitutes (customized templates)';
+$lang['Representant'] = 'Ескіз альбому';
+$lang['Representation of albums'] = 'Ескіз альбомів';
+$lang['Representative'] = 'Ескіз альбому';
+$lang['Represents'] = 'Мініатюра для';
+$lang['Reset ignored updates'] = 'Скидання ігнорування оновлення';
+$lang['Resize'] = 'Зміна розміру';
+$lang['Restore'] = 'Відновлення';
+$lang['Save Template Directory'] = 'Зберегти шаблон каталогу';
+$lang['Select an album'] = 'Виберіть альбом';
+$lang['Select at least two tags for merging'] = 'Виберіть принаймні два теґа для об\'єднання';
+$lang['Select the destination tag'] = 'Виберіть призначення теґу';
+$lang['Send connection settings by email'] = 'Надіслати налаштування з\'єднання по електронній пошті';
+$lang['show details'] = 'показати деталі';
+$lang['Some themes and plugins may be not available yet.'] = 'Деякі теми і плаґіни можуть бути не доступні.';
+$lang['Some upgrades are available for extensions.'] = 'Доступні деякі оновлення для розширень.';
+$lang['Start Upload'] = 'Початок завантаження';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Теґи <em>%s</em> об\'єднані в теґ <em>%s</em>';
+$lang['The original image quality must be a number between %d and %d'] = 'Вихідна якість зображення повинна бути число від %d та %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Оригінальна максимальна висота повинна бути поряд з %d та %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Оригінальна Максимальна ширина повинна бути поряд з %d та %d';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Розмір завантаження перевищує MAX_FILE_SIZE директиву, яка була вказана в HTML-формі';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Розмір завантаження перевищує upload_max_filesize директиви php.ini: %sB';
+$lang['The uploaded file was only partially uploaded'] = 'Завантажений файл був завантажений лише частково';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Завантажених файлів перевищує post_max_size директиви php.ini: %sB';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Встановлена версія %s [%s] ​​не сумісна з версією, потрібно [%s]';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Вебмастер підписався на Вас поштою.';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Вебмастер відписався від Вас поштою.';
+$lang['The whole page'] = 'Вся сторінка';
+$lang['The whole set'] = 'Всі сторінки';
+$lang['the wiki'] = 'вікі';
+$lang['Theme has been successfully installed'] = 'Тему було успішно встановлено';
+$lang['Themes which need upgrade'] = 'Теми, які необхідно оновити';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Це велике оновлення з <a href="%s">нововведеннями</a>.';
+$lang['This is a minor update, with only bug corrections.'] = 'Це невелике оновлення, тільки з виправленнями помилок.';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ЦЕЙ ПЛАҐІН Є ЧАСТИНОЮ CORE Piwigo! ВИДАЛІТЬ ЙОГО НЕГАЙНО!';
+$lang['Thumbnails generation in progress...'] = 'Процес генерації мініатюр...';
+$lang['Two updates are available'] = 'Два доступних оновлень';
+$lang['Unable to check for upgrade.'] = 'Неможливо перевірити наявність оновлень.';
+$lang['Unable to dump database.'] = 'Неможливо зберегти базу даних.';
+$lang['Uncheck all'] = 'Зняти все';
+$lang['Uninstall'] = 'Видалити';
+$lang['Uninstalled Plugins'] = 'Видалити плаґіни';
+$lang['unit mode'] = 'однокористувацький режим';
+$lang['unknown'] = 'невідомий';
+$lang['Unknown upload error'] = 'Невідома помилка при завантаженні';
+$lang['Unlocked'] = 'Розблоковано';
+$lang['unset'] = 'встановлено';
+$lang['Unsubscribe from notification by mail'] = 'Відмовитися від повідомлень по електронній пошті';
+$lang['Unsubscribed'] = 'Відписався';
+$lang['Update albums informations'] = 'Оновлення інформації альбомів';
+$lang['Update All'] = 'Оновити все';
+$lang['Update Complete'] = 'Оновлення завершено';
+$lang['Update in progress... Please wait.'] = 'Триває оновлення... Будь ласка, почекайте.';
+$lang['Update photos information'] = 'Оновлення інформації зображень';
+$lang['update the database from files'] = 'оновлення бази даних з файлами';
+$lang['Update to Piwigo %s'] = 'Оновлення Piwigo %s';
+$lang['Updates'] = 'Оновлення';
+$lang['Upload'] = 'Завантажити';
+$lang['Upload Photos'] = 'Завантажити зображення';
+$lang['Uploaded Photos'] = 'Завантажено світлини';
+$lang['Use the default photo sort order (defined in the configuration file)'] = 'За допомогою сортування за замовчуванням порядку зображення (визначені в файлі конфігурації)';
+$lang['Used metadata'] = 'метадані, що використовуються';
+$lang['User'] = 'Користувач';
+$lang['user "%s" added'] = 'користувача "%s" додано';
+$lang['User "%s" created with "%s" like password'] = 'Користувачу "%s" створено "%s" в якості пароля';
+$lang['User %s [%s] added.'] = 'Користувача %s [%s] додано.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Користувача %s [%s] додано до списку підписників.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Користувача %s [%s] не додано до списку підписників.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Користувач %s [%s] не видаляється зі списку розсилки.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Користувач %s [%s] видалений зі списку розсилки.';
+$lang['User comments validation'] = 'Перевірка коментарів користувачів';
+$lang['User list'] = 'Список користувачів';
+$lang['User status'] = 'Статус користувача';
+$lang['Users'] = 'Користувачі';
+$lang['user_status_admin'] = 'Адміністратор';
+$lang['user_status_generic'] = 'Загальний';
+$lang['user_status_guest'] = 'Гість';
+$lang['user_status_normal'] = 'Користувач';
+$lang['user_status_webmaster'] = 'Веб-майстер';
+$lang['Validate'] = 'Підтвердження';
+$lang['Validation'] = 'Перевірка';
+$lang['Version'] = 'Версія';
+$lang['Virtual album'] = 'Віртуальний альбом';
+$lang['Virtual album added'] = 'Віртуальний альбом додано';
+$lang['Virtual album deleted'] = 'Віртуальний альбом видалено';
+$lang['Virtual album name'] = 'Назва віртуального альбому';
+$lang['Virtual albums to move'] = 'Віртуальні альбоми для переміщення';
+$lang['Virtual Links'] = 'Віртуальні посилання';
+$lang['Visit Gallery'] = 'Відвідайте галерею';
+$lang['Visit language site'] = 'Відвідайте сайт мови';
+$lang['Visit Piwigo project website'] = 'Відвідайте веб-сайт проекту Piwigo';
+$lang['Visit plugin site'] = 'Відвідайте сторінку плаґіну';
+$lang['Visit theme site'] = 'Відвідайте сайт теми';
+$lang['Waiting'] = 'В очікуванні';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'УВАГА! Цей плаґін, здається, не сумісні з цією версією Piwigo.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Попередження: передплата і відписка буде надсилати електронну пошту користувачів';
+$lang['Webmaster cannot be deleted'] = 'Для веб-майстрів не може бути видалений';
+$lang['Webmaster status is required.'] = 'Веб-майстеру статус не потрібен.';
+$lang['Week starts on'] = 'Початок тижня';
+$lang['Who can see these photos?'] = 'Хто може бачити ці зображення?';
+$lang['Who can see this photo?'] = 'Хто може бачити цю фотографію?';
+$lang['Width'] = 'Ширина';
+$lang['width must be a number superior to'] = 'ширина повинна бути трохи більше, ніж';
+$lang['With blank value, gallery title will be used'] = 'Якщо це поле порожнє, галерея буде використовувати назву';
+$lang['With no album'] = 'При відсутності альбому';
+$lang['With no tag'] = 'При відсутності теґів';
+$lang['With no virtual album'] = 'При відсутності віртуального альбому';
+$lang['wrong filename'] = 'неправильне ім\'я файлу';
+$lang['A locked gallery is only visible to administrators'] = 'Заблоковано, галерею видно тільки адміністратору';
+$lang['administrators'] = 'адміністратори';
+$lang['Center of interest'] = 'Центр інтересів';
+$lang['Gallery unlocked'] = 'Галерея розблокована';
+$lang['modified'] = 'модифікований';
+$lang['Move to album'] = 'Перемістити до альбому';
+$lang['Not cropped correctly?'] = 'Не обрізати правильно?';
+$lang['Notify administrators when a comment is'] = 'Повідомити адміністратора, якщо коментар є';
+$lang['Original Size'] = 'Оригінальний розмір';
+$lang['pending validation'] = 'готовий до перевірки';
+$lang['registered users'] = 'зареєстровані користувачі';
+$lang['Resize after upload'] = 'Зміна розмірів після завантаження';
+$lang['Save visits in history for'] = 'Зберегти відвідування в історії';
+$lang['simple visitors'] = 'прості відвідувачі';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Цей альбом містить %d зображень, додано ​​між %s і %s';
+$lang['This album contains %d photos, added on %s.'] = 'Цей альбом містить %d зображень, додано %s.';
+$lang['This album contains no photo.'] = 'Цей альбом не містить зображень.';
+$lang['Unlock gallery'] = 'Розблокувати галерею';
+$lang['Year'] = 'Рік';
+$lang['You are running on development sources, no check possible.'] = 'Ви працюєте на розвиток джерела, не перевірити це можливо.';
+$lang['You are running the latest version of Piwigo.'] = 'Ви працюєте з Piwigo останньої версії.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Ви використовуєте браузерний завантажувач. Спробуйте <a href="%s">Флеш завантажувач</a>.';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Ви використовуєте Флеш завантажувач. Проблеми? Спробуйте браузерний <a href="%s">завантажувач</a>.';
+$lang['You can activate only one mobile theme.'] = 'Ви можете активувати тільки одну мобільну тему.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Ви можете оновити Piwigo %s напряму, без переходу на Piwigo %s (рекомендовано).';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ви не можете визначити порядок за замовчуванням фотографії, тому що у Вас є налаштування користувача у вашій локальній конфігурації.';
+$lang['You cannot delete your account'] = 'Ви не можете видалити свій аккаунт';
+$lang['You cannot move an album in its own sub album'] = 'Ви не можете переміщати альбом в свій під-альбом';
+$lang['You have %d orphan tags: %s.'] = 'У вас є %d теґи-пустишки: %s.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Ви вказали <i>$conf[\'order_by\']</i> в локальному файлі конфігурації, цей параметр в застарів, будь ласка, видаліть його або перейменувати його в <i>$conf[\'order_by_custom\']</i> !';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Ви підписалися на отримання повідомлень електронною поштою.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Ви відписалися від отримання повідомлення поштою.';
+$lang['You might go to plugin list to install and activate it.'] = 'Перейти до списку плаґінів для інсталяції та активації.';
+$lang['You need to confirm deletion'] = 'Ви повинні підтвердити видалення';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Ви повинні оновити систему в повній мірі скористатися додатком, в іншому випадку програма може працювати неправильно, або взагалі не працювати';
+$lang['Your configuration settings are saved'] = 'Параметри конфігурації зберігаються';
+$lang['Zoom'] = 'Збільшити';
+$lang['[%s] Visit album %s'] = '[%s] Відвідайте альбом %s';
+$lang['[NBM] Problems or questions'] = '[НБМ] Проблеми та питання';
+$lang['apply automatic sort order'] = 'застосовувати автоматичне сортування';
+$lang['Automatic sort order'] = 'Автоматичне сортування';
+$lang['Cancel'] = 'Скасувати';
+$lang['cancel manual order'] = 'відмінити ручне сортування';
+$lang['List'] = 'Список';
+$lang['Save manual order'] = 'Зберегти ручне сортування';
+$lang['Applications'] = 'Додатки';
+$lang['Web Form'] = 'Веб-форми';
+$lang['Available on'] = 'Доступні на';
+$lang['Available versions for'] = 'Доступні версії для';
+$lang['Delete multiple size images'] = 'Видалення декількох зображень розміром';
+$lang['Generate multiple size images'] = 'Створення декількох зображень розміром';
+$lang['Piwigo for Android'] = 'Piwigo для Android';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo для iOS(iPhone, iPad, iPod Touch)';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u користувачі мають автоматичний дозвіл, тому що вони належать до наданої групи.';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo для Android</em> додаток дозволяє вам підключити ваш телефон або планшет в галерею Piwigo, створити кілька альбомів і завантажити декілька зображень одночасно.';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo для iOS</em> додаток дає можливість підключатись до вашої галереї Piwigo з вашого сенсорного iPhone, iPad та iPod, створити кілька альбомів і завантажити декілька зображень одночасно.';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom являє собою програмне забезпечення фотографа, призначене для управління великою кількістю цифрових зображень і робить роботу постпродакшн.';
+$lang['any visitor can see this album'] = 'будь-який відвідувач може бачити цей альбом';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture є потужним інструментом для уточнення зображення і керувати великими бібліотеками на Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture призначена для професійних фотографів з iPhoto.';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam - передове цифрове безкоштовне програмне забезпечення управління зображень для Linux, Windows, і MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'DigiKam призначений для фотографів, які хочуть переглядати, управляти, редагувати, покращувати організацію, теґи та обміну фотографіями.';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Особливості включають перегляд галереї, створення альбому і завантаження зображень.';
+$lang['Groups and users'] = 'Групи та користувачі';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto - менеджер зображень за замовченням на MacOSX. Доповнення Piwigo експортує до програми створені нові альбоми і ваші фото безпосередньо від iPhoto до вашої фотогалереї Piwigo.';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'На вашому Linux , просто встановіть Shotwell з вашим менеджером пакетів та активувати Piwigo параметр публікації.';
+$lang['Permission granted for groups'] = 'Дозвіл, наданий для груп';
+$lang['Permission granted for users'] = 'Дозвіл, наданий для користувачів';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export плаґін для Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export плаґін для iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish плаґін для digiKam';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Видають доповнення до програми для Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish плаґін для Shotwell';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery клієнт для Android) це клієнт з відкритим вихідним кодом (GPL версії 3) Piwigo для платформи Android.';
+$lang['Select groups...'] = 'Виберіть групи...';
+$lang['Select users...'] = 'Виберіть користувачів...';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell є відкритим початковим цифровим організатором зображень, який працює на Linux. Він - менеджер заданий за замовчуванню зображень в Ubuntu і Fedora.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Плаґін Piwigo експорту дозволяє створювати альбоми та експортовані зображення.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish плаґін на дозволяє експортувати та синхронізувати зображення з Lightroom безпосередньо до вашої галереї Piwigo.';
+$lang['There is no group in this gallery.'] = 'Немає ніякої групи в цій галереї.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Щоб експортувати ваші зображення з digiKam до Piwigo, просто встановіть digiKam і Kipi-plugins.';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'відвідувачі повинні увійти і мати відповідні дозволи, щоб побачити цей альбом';
+$lang['custom'] = 'Звичай';
+$lang['include photos with lower privacy level'] = 'включати в себе зображення з більш низьким рівнем конфіденційності';
+$lang['No group is permitted to see this private album'] = 'Ніякій групі не дозволяється бачити цей приватний альбом';
+$lang['Permission management'] = 'Управління дозволу';
+$lang['add a new watermark'] = 'додати новий водяний знак';
+$lang['Apply watermark if height is bigger than'] = 'Накладення водяних знаків, якщо висота більше, ніж';
+$lang['Apply watermark if width is bigger than'] = 'Накладення водяних знаків, якщо ширина більше, ніж';
+$lang['Select a file'] = 'Виберіть файл';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Центр інтересу - найзначиміша зона у зображенні.';
+$lang['bottom left corner'] = 'нижній лівий кут';
+$lang['bottom right corner'] = 'нижній правий кут';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'За замовчуванням центр уваги знаходиться в центральній частині зображення.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Для зображень розміром з горошину, такі як "Площа", Piwigo зробить все можливе, щоб включити в центрі уваги.';
+$lang['middle'] = 'середина';
+$lang['Opacity'] = 'Непрозорість';
+$lang['Photo sizes with crop'] = 'Зображення розміром з горошину';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Виберіть зону за допомогою миші, щоб визначити новий центр уваги.';
+$lang['top left corner'] = 'верхній лівий кут';
+$lang['top right corner'] = 'верхній правий кут';
+$lang['X Position'] = 'Позиція X';
+$lang['X Repeat'] = 'Повторення X';
+$lang['Y Position'] = 'Позиція Y';
+$lang['Multiple Size'] = 'Кілька розмірів';
+$lang['%d days'] = '%d днів';
+$lang['%d day'] = '%d день';
+$lang['%d hours'] = '%d годин';
+$lang['%d hour'] = '%d година';
+$lang['%d minutes'] = '%d хвилин';
+$lang['%d minute'] = '%d хвилина';
+$lang['%d months'] = '%d місяців';
+$lang['%d month'] = '%d місяць';
+$lang['%d seconds'] = '%d секунд';
+$lang['%d second'] = '%d секунда';
+$lang['%d years'] = '%d років';
+$lang['%d year'] = '%d рік';
+$lang['%s ago'] = '%s тому';
+$lang['%s in the future'] = '%s в майбутньому';
+$lang['Added by %s'] = 'Додано користувачем %s';
+$lang['Numeric identifier : %d'] = 'Числовий ідентифікатор: %d';
+$lang['Original file : %s'] = 'Оригінальний файл: %s';
+$lang['Posted %s on %s'] = 'Опубліковано %s на %s';
+$lang['Rated %d times, score : %.2f'] = 'Оцінений %d разів, рахунок: %.2f';
+$lang['Sharpen'] = 'Загострити';
+$lang['Visited %d times'] = 'Відвідали %d разів';
+$lang['Watermark'] = 'Водяний знак';
+$lang[' and %d virtuals'] = 'та %d віртуальні';
+$lang['%d physicals'] = '%d фізичні';
+$lang['%d weeks'] = '%d тижнів';
+$lang['%d week'] = '%d тиждень';
+$lang['Edit photo'] = 'Редагувати фото';
+$lang['create a new site'] = 'створити новий сайт';
+$lang['No order field selected'] = 'Немає порядкового вибраного поля';
+$lang['Duplicate selected tags'] = 'Дублювати виділені теґи';
+$lang['Name of the duplicate'] = 'Назва дубліката';
+$lang['Source tag'] = 'Джерело теґа';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Теґ "%s" зараз є дублікатом "%s"';
+$lang['Landscape'] = 'Ландшафт';
+$lang['Minimum height'] = 'Мінімальна висота';
+$lang['Minimum width'] = 'Мінімальна ширина';
+$lang['Panorama'] = 'Панорама';
+$lang['Portrait'] = 'Портрет';
+$lang['Manage photos'] = 'Управління зображеннями';
+$lang['View in gallery'] = 'Переглянути у галереї';
+$lang['Number of albums per page'] = 'Кількість альбомів на сторінці';
+$lang['Ratio'] = 'Співвідношення';
+$lang['between %.2f and %.2f'] = 'між %.2f і %.2f';
+$lang['between %d and %d pixels'] = 'між %d і %d пікселями';
+$lang['Duplicate'] = 'Дублювати';
+$lang['Manage the members'] = 'Керування учасниками';
+$lang['Merge selected groups'] = 'Злиття вибраних груп';
+$lang['No group selected, no action possible.'] = 'Жодна група не вибрана, не можливі ніякі дії.';
+$lang['No members to manage'] = 'Немає учасників для управління';
+$lang['Please select at least two groups'] = 'Виберіть щонайменше дві групи';
+$lang['Rename'] = 'Перейменувати';
+$lang['This group will be set to default'] = 'Ця група буде встановлена за замовчуванням';
+$lang['This group will be unset to default'] = 'Ця група буде знята з замовчування';
+$lang['Type here the name of the new group'] = 'Введіть назву нової групи';
+$lang['Purge user cache'] = 'Очистити кеш користувача';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Розміри зображення будє зменьшено до %dx%d пікселів';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Зміну розміру після вивантаження вимкнено через використання бібліотеки GD';
+$lang['Select at least one tag'] = 'Виберіть принаймні один теґ';
+$lang['Basic settings'] = 'Основні параметри';
+$lang['General'] = 'Загальні';
+$lang['Mail theme'] = 'Поштова тема';
+$lang['Showing %s to %s of %s users'] = 'Показано %s від %s до %s користувачів';
+$lang['%d of %d users selected'] = '%d з %d користувачів вибрані';
+$lang['(filtered from %s total users)'] = '(фільтруються від загального числа користувачів %s)';
+$lang['All %d users are selected'] = 'Усі %d користувачі вибрані';
+$lang['Change password'] = 'Змінити пароль';
+$lang['Change username'] = 'Змінити ім’я користувача';
+$lang['Last visit on %s, %s.'] = 'Був на сайті %s, %s.';
+$lang['Loading...'] = 'Завантаження...';
+$lang['No matching user found'] = 'Відповідних користувачі не знайдено';
+$lang['No user selected of %d users'] = 'Не вибраний жоден з %d користувачів ';
+$lang['No user selected, no action possible.'] = 'Жоден користувач не обраний, ніякі дії можливі.';
+$lang['Password updated'] = 'Пароль оновлений';
+$lang['Registered on %s, %s.'] = 'Зареєстрований %s, %s.';
+$lang['Show %s users'] = 'Відображати %s користувачів';
+$lang['Update user'] = 'Оновлення користувача';
+$lang['User %s added'] = 'Користувач %s доданий';
+$lang['User %s updated'] = 'Користувач %s оновленний';
+$lang['Users modified'] = 'Змінений користувач';
+$lang['on the %d selected users'] = 'на %d вибраних користувачів';
+?>
Index: /tags/2.6.0RC1/language/uk_UA/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/common.lang.php	(revision 25596)
@@ -0,0 +1,421 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Українська [UA]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=523
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = "Українська";
+$lang_info['country'] = "Україна";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "ua";
+$lang_info['zero_plural'] = true;
+
+$lang['%d album updated'] = '%d альбом оновлено';
+$lang['%d albums updated'] = 'альбомів оновлено: %d';
+$lang['%d comment to validate'] = '%d коментар на перевірці';
+$lang['%d comments to validate'] = 'коментарів на перевірці: %d';
+$lang['%d new comment'] = '%d новий коментар';
+$lang['%d new comments'] = 'нових коментарів: %d';
+$lang['%d comment'] = '%d коментар';
+$lang['%d comments'] = 'коментарів: %d';
+$lang['%d hit'] = '%d перегляд';
+$lang['%d hits'] = 'переглядів: %d';
+$lang['%d new photo'] = '%d нова фотографія';
+$lang['%d new photos'] = 'нових зображень: %d';
+$lang['%d new user'] = '%d новий користувач';
+$lang['%d new users'] = 'нових користувачів: %d';
+$lang['About'] = 'Про рушій';
+$lang['All tags'] = 'Всі теґи';
+$lang['Any tag'] = 'Будь-який теґ';
+$lang['At least one listed rule must be satisfied.'] = 'Хоча б одне правило повинне виконуватись.';
+$lang['Author'] = 'Автор';
+$lang['Albums'] = 'Альбоми';
+$lang['Album'] = 'Альбом';
+$lang['Close this window'] = 'Закрити це вікно';
+$lang['Complete RSS feed (photos, comments)'] = 'Повний RSS канал (фотографії, коментарі)';
+$lang['Confirm Password'] = 'Підтвердіть пароль';
+$lang['Connection settings'] = "Налаштування з'єднання";
+$lang['Login'] = 'Авторизація';
+$lang['Contact webmaster'] = 'Техпідтримка';
+$lang['Create a new account'] = 'Створити новий обліковий запис';
+$lang['Created on'] = 'Дата зйомки';
+$lang['Creation date'] = 'Дата зйомки';
+$lang['Current password is wrong'] = 'Введений невірний пароль';
+$lang['Dimensions'] = 'Розміри';
+$lang['Display'] = 'Порядок';
+$lang['Each listed rule must be satisfied.'] = 'Усі перераховані правила повинні виконуватись.';
+$lang['Email address'] = 'Адреса електронної пошти';
+$lang['Enter your personnal informations'] = 'Вкажіть вашу персональну інформацію';
+$lang['Error sending email'] = 'Помилка відправки електронної пошти';
+$lang['File name'] = "Ім'я файлу";
+$lang['File'] = 'Файл';
+$lang['Filesize'] = 'Розмір файлу';
+$lang['Filter and display'] = 'Відфільтрувати і показати';
+$lang['Filter'] = 'Фільтр';
+$lang['Forgot your password?'] = 'Забули пароль?';
+$lang['Go through the gallery as a visitor'] = 'Увійти в галерею як відвідувач';
+$lang['Help'] = 'Допомога';
+$lang['Identification'] = 'Ідентифікація';
+$lang['Photos only RSS feed'] = 'RSS канал тільки з фотографіями';
+$lang['Keyword'] = 'Ключеве слово';
+$lang['day'][0] = "Неділя";
+$lang['day'][1] = "Понеділок";
+$lang['day'][2] = "Вівторок";
+$lang['day'][3] = "Середа";
+$lang['day'][4] = "Четвер";
+$lang['day'][5] = "П'ятниця";
+$lang['day'][6] = "Субота";
+$lang['month'][10] = "Жовтень";
+$lang['month'][11] = "Листопад";
+$lang['month'][12] = "Грудень";
+$lang['month'][1] = "Січень";
+$lang['month'][2] = "Лютий";
+$lang['month'][3] = "Березень";
+$lang['month'][4] = "Квітень";
+$lang['month'][5] = "Травень";
+$lang['month'][6] = "Червень";
+$lang['month'][7] = "Липень";
+$lang['month'][8] = "Серпень";
+$lang['month'][9] = "Вересень";
+$lang['Notification'] = 'Повідомлення';
+$lang['Number of items'] = 'Кількість елементів';
+$lang['Original dimensions'] = 'Оригінальні розміри';
+$lang['Password forgotten'] = 'Забули пароль';
+$lang['Password'] = 'Пароль';
+$lang['Post date'] = 'Дата розміщення';
+$lang['Posted on'] = 'Опубліковано';
+$lang['Profile'] = 'Профіль';
+$lang['Quick connect'] = "Швидке з'єднання";
+$lang['RSS feed'] = 'RSS канал';
+$lang['Register'] = 'Реєстрація';
+$lang['Registration'] = 'Реєстрація';
+$lang['Related tags'] = 'Пов\'язані теґи';
+$lang['Reset'] = 'Скинути';
+$lang['Retrieve password'] = 'Відновити пароль';
+$lang['Search rules'] = 'Критерії пошуку';
+$lang['Search tags'] = 'Теґи пошуку';
+$lang['Search'] = 'Пошук';
+$lang['display available tags'] = 'відображати доступні теґи';
+$lang['Since'] = 'З';
+$lang['Sort by'] = 'Сортувати за';
+$lang['Sort order'] = 'Порядок сортування';
+$lang['Tag'] = 'Теґ';
+$lang['Tags'] = 'Теґи';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS канал надсилає повідомлення про нові події з цього сайту: нові фотографії, оновлені альбоми, нові коментарі. Використовуйте читання RSS каналів.';
+$lang['Unknown feed identifier'] = 'Невідомий ідентифікатор каналу';
+$lang['User comments'] = 'Коментарі користувача';
+$lang['Username'] = "Ім'я користувача";
+$lang['Visits'] = 'Відвідувань';
+$lang['Webmaster'] = 'Вебмайстер';
+$lang['Week %d'] = 'Тиждень %d';
+$lang['About Piwigo'] = 'Про Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Ви не авторизовані для доступу до запитуваної сторінки';
+$lang['add this photo to your favorites'] = 'Додати це зображення в обране';
+$lang['Administration'] = 'Адміністрування';
+$lang['all'] = 'всі';
+$lang['ascending'] = 'в порядку зростання';
+$lang['useful when password forgotten'] = "корисно, коли забули пароль";
+$lang['Quick search'] = "Швидкий пошук";
+$lang['Connected user: %s'] = "Підключений користувач: %s";
+$lang['Browser: %s'] = "Браузер: %s";
+$lang['Author: %s'] = "Автор: %s";
+$lang['Comment: %s'] = "Коментар: %s";
+$lang['Comment by %s'] = "Коментар %s";
+$lang['User: %s'] = "Користувач: %s";
+$lang['Email: %s'] = "Електронна пошта: %s";
+$lang['Admin: %s'] = "Адміністратор: %s";
+$lang['Registration of %s'] = "Зареєстровано %s";
+$lang['Tag results for'] = "Результати для";
+$lang['from %s to %s'] = "від %s до %s";
+$lang['Play of slideshow'] = "Показувати слайдшоу";
+$lang['Pause of slideshow'] = "Пауза слайдшоу";
+$lang['Repeat the slideshow'] = "Повторити слайдшоу";
+$lang['Not repeat the slideshow'] = "Не повторювати слайдшоу";
+$lang['Reduce diaporama speed'] = "Зменшити швидкість слайдшоу";
+$lang['Accelerate diaporama speed'] = "Збільшити швидкість слайдшоу";
+$lang['Submit'] = "Відправити";
+$lang['Yes'] = "Так";
+$lang['No'] = "Ні";
+$lang['Piwigo Help'] = "Допомога Piwigo";
+$lang['Rank'] = "Ранг";
+$lang['group by letters'] = "групувати по буквах";
+$lang['letters'] = "букви";
+$lang['show tag cloud'] = 'показувати хмару теґів';
+$lang['cloud'] = "хмара";
+$lang['Reset to default values'] = "Скинути на значення за замовчуванням";
+$lang['Sent by'] = "Надіслано";
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = "Куки заблоковані або не підтримуються вашим браузером. Ви повинні увімкнути куки, щоб увійти.";
+$lang['author(s) : %s'] = 'автор(и) : %s';
+$lang['Expand all albums'] = 'Розгорнути всі альбоми';
+$lang['posted after %s (%s)'] = 'додано після %s (%s)';
+$lang['posted before %s (%s)'] = 'додано до %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'додано між %s (%s) і %s (%s)';
+$lang['posted on %s'] = 'додано в %s';
+$lang['Best rated'] = 'Найбільший рейтинг';
+$lang['display best rated photos'] = 'показати фотографії з найбільшим рейтингом';
+$lang['Calendar'] = 'Календар';
+$lang['All'] = 'Всі';
+$lang['display each day with photos, month per month'] = 'показувати кожен день з фотографіями, місяць за місяцем';
+$lang['View'] = 'Перегляд';
+$lang['chronology_monthly_calendar'] = 'Місячний календар';
+$lang['chronology_monthly_list'] = 'Список місяців';
+$lang['chronology_weekly_list'] = 'Список тижнів';
+$lang['Click here if your browser does not automatically forward you'] = 'Натисніть тут, якщо ваш браузер не перенаправив вас автоматично';
+$lang['comment date'] = 'дата коментаря';
+$lang['Comment'] = 'Коментар';
+$lang['Your comment has been registered'] = 'Ваш коментар був зареєстрований';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Анти-флуд система : будь ласка, зачекайте кілька секунд перед тим, як додати новий коментар';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Ваш коментар НЕ був зареєстрований, оскільки він не відповідає вимогам';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Адміністратор повинен авторизувати ваш коментар перед тим, як він стане видимим.';
+$lang['This login is already used by another user'] = 'Цей лоґін вже використовується іншим користувачем';
+$lang['Comments'] = 'Коментарі';
+$lang['Add a comment'] = 'Додати коментар';
+$lang['created after %s (%s)'] = 'створено після %s (%s)';
+$lang['created before %s (%s)'] = 'створено до %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'створено між %s (%s) і %s (%s)';
+$lang['created on %s'] = 'створено в %s';
+$lang['Customize'] = 'Налаштування';
+$lang['Your Gallery Customization'] = 'Налаштування вашої галереї';
+$lang['Default'] = 'За замовчуванням';
+$lang['delete this photo from your favorites'] = 'видалити це зображення з обраних';
+$lang['Delete'] = 'Видалити';
+$lang['descending'] = 'в порядку спадання';
+$lang['Download'] = 'Завантажити';
+$lang['Download this file'] = 'завантажити цей файл';
+$lang['edit'] = 'редагувати';
+$lang['wrong date'] = 'невірна дата';
+$lang['excluded'] = 'вилучено';
+$lang['Your favorites'] = 'Ваше обране';
+$lang['display your favorites photos'] = 'показати ваші обрані зображення';
+$lang['Favorites'] = 'Обрані';
+$lang['First'] = 'Початок';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Галерея закрита для обслуговування. Будь ласка, зайдіть пізніше.';
+$lang['Page generated in'] = 'Сторінка згенерована за';
+$lang['guest'] = 'гість';
+$lang['Hello'] = 'Привіт';
+$lang['available for administrators only'] = 'доступно тільки для адміністраторів';
+$lang['display this album'] = 'показати цей альбом';
+$lang['display last user comments'] = 'показати останні коментарі користувачів';
+$lang['customize the appareance of the gallery'] = 'налаштувати зовнішній вигляд галереї';
+$lang['search'] = 'пошук';
+$lang['Home'] = 'Домашня сторінка';
+$lang['in this album'] = 'в цьому альбомі';
+$lang['in %d sub-album'] = 'в %d під-альбомі';
+$lang['in %d sub-albums'] = 'в %d під-альбомах';
+$lang['included'] = 'включено';
+$lang['Invalid password!'] = 'Невірний пароль!';
+$lang['Language'] = 'Мова';
+$lang['last %d days'] = 'останні %d днів';
+$lang['Last'] = 'Кінець';
+$lang['Logout'] = 'Вийти';
+$lang['Links'] = 'Посилання';
+$lang['New on %s'] = 'Нове на %s';
+$lang['obligatory'] = "обов'язкове";
+$lang['display a calendar by creation date'] = 'показувати календар за датою створення';
+$lang['display all photos in all sub-albums'] = 'показувати всі фотографії в усіх під-альбомах';
+$lang['return to normal view mode'] = 'повернутися до звичайного режиму перегляду';
+$lang['display a calendar by posted date'] = 'показувати календар за датою відправлення';
+$lang['Most visited'] = 'Найбільш відвідувані';
+$lang['display most visited photos'] = 'показувати найбільш відвідувані фотографії';
+$lang['The number of photos per page must be a not null scalar'] = 'Кількість зображень на сторінці повинно бути цілим ненульовим числом';
+$lang['Number of photos per page'] = 'Кількість зображень на сторінці';
+$lang['Unknown identifier'] = 'Невідомий ідентифікатор';
+$lang['New password'] = 'Новий пароль';
+$lang['Rate this photo'] = 'Оцінити цю фотографію';
+$lang['Next'] = 'Наступне';
+$lang['no rate'] = 'не оцінено';
+$lang['Photos posted within the last %d day.'] = 'Фотографії, розміщені лише протягом останнього %d дня.';
+$lang['Photos posted within the last %d days.'] = 'Фотографії, розміщені лише протягом останніх %d днів.';
+$lang['password updated'] = 'пароль оновлено';
+$lang['Recent period must be a positive integer value'] = "Останній період повинен бути невід'ємним цілим значенням";
+$lang['photo'] = 'фото';
+$lang['Click on the photo to see it in high definition'] = 'Натисніть на фото, щоб побачити його у високій якості';
+$lang['Show file metadata'] = 'Показати метадані';
+$lang['Powered by'] = 'Підтримка';
+$lang['Preferences'] = 'Налаштування';
+$lang['Previous'] = 'Попереднє';
+$lang['Random photos'] = 'Випадкові фотографії';
+$lang['display a set of random photos'] = 'показувати випадкові фотографії';
+$lang['Recent albums'] = 'Останні альбоми';
+$lang['display recently updated albums'] = 'показувати нещодавно оновлені альбоми';
+$lang['Recent period'] = 'Останній період';
+$lang['Recent photos'] = 'Останні фотографії';
+$lang['display most recent photos'] = 'показувати останні фотографії';
+$lang['Redirection...'] = 'Перенаправлення...';
+$lang['Please, enter a login'] = 'Будь ласка, введіть лоґін';
+$lang['login mustn\'t end with a space character'] = 'лоґін не повинен закінчуватися на пробіл';
+$lang['login mustn\'t start with a space character'] = 'лоґін не повинен починатися з пробілу';
+$lang['this login is already used'] = 'цей лоґін вже використовується';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'адреса електронної пошти повинна бути у вигляді xxx@yyy.eee (наприклад : jack@altern.org)';
+$lang['Auto login'] = 'Автолоґін';
+$lang['remove this tag from the list'] = 'видалити цей теґ зі списку';
+$lang['representative'] = 'зразок';
+$lang['Search for Author'] = 'Пошук по автору';
+$lang['Search in albums'] = 'Пошук в альбомах';
+$lang['Search by date'] = 'Пошук по даті';
+$lang['Date'] = 'Дата';
+$lang['End-Date'] = 'Кінцева дата';
+$lang['Kind of date'] = 'Вид дати';
+$lang['Search for words'] = 'Пошук по словам';
+$lang['Search for all terms'] = 'Пошук по всім словам';
+$lang['Search for any term'] = 'Пошук по будь-якому слову';
+$lang['Empty query. No criteria has been entered.'] = 'Порожній запит. Не був введений жоден критерій.';
+$lang['%d Kb'] = '%d Кб';
+$lang['Search results'] = 'Результати пошуку';
+$lang['Search in sub-albums'] = 'Пошук в під-альбомах';
+$lang['searched words : %s'] = 'знайдено слів : %s';
+$lang['Contact'] = 'Контакт';
+$lang['set as album representative'] = 'встановити як обкладинку альбому';
+$lang['Show number of comments'] = 'Показувати число коментарів';
+$lang['Show number of hits'] = 'Показувати число посилань';
+$lang['slideshow'] = 'слайдшоу';
+$lang['stop the slideshow'] = 'зупинити слайдшоу';
+$lang['Specials'] = 'Спеціальні';
+$lang['SQL queries in'] = 'SQL запитів за';
+$lang['display only recently posted photos'] = 'показувати тільки нещодавно завантажені фотографії';
+$lang['return to the display of all photos'] = 'повернутися до всіх зображень';
+$lang['the beginning'] = 'початок';
+$lang['Thumbnails'] = 'Ескізи';
+$lang['Menu'] = 'Меню';
+$lang['A comment on your site'] = 'Коментар на вашому сайті';
+$lang['today'] = 'сьогодні';
+$lang['Update your rating'] = 'Оновити ваш рейтинг';
+$lang['the username must be given'] = "необхідно ім'я користувача";
+$lang['Album: %s'] = 'Альбом: %s';
+$lang['this email address is already in use'] = 'ця адреса електронної пошти вже використовується';
+$lang['Album results for'] = 'Результати для';
+$lang['%d photo'] = '%d фотографія';
+$lang['%d photos'] = '%d зображень';
+$lang['%d photo is also linked to current tags'] = "%d фотографія також пов'язана з поточними мітками";
+$lang['%d photos are also linked to current tags'] = "%d фотографій також пов'язані з поточними мітками";
+$lang['display photos linked to this tag'] = 'показувати фотографії, пов\'язані з поточними теґами';
+$lang['photos posted during the last %d days'] = 'фотографії, завантажені протягом останніх %d днів';
+$lang['delete all photos from your favorites'] = 'видалити всі зображення з обраних';
+$lang['Edit a comment'] = 'Редагувати коментар';
+$lang['Are you sure?'] = 'Ви впевнені?';
+$lang['(!) This comment requires validation'] = '(!) Цей коментар вимагає валідації';
+$lang['Welcome'] = 'Ласкаво просимо';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Ласкаво просимо до вашої фото-галереї Piwigo!';
+$lang['... or browse your empty gallery'] = '... або відкрити вашу порожню галерею';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... або, будь ласка, деактивуйте це повідомлення, я знайду рішення сам';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Привіт %s, ваша Piwigo фото-галерея порожня!';
+$lang['I want to add photos'] = 'Я хочу додати фотографії';
+$lang['Manage this user comment: %s'] = 'Виправити цей коментар користувача: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Відсутня адреса електронної пошти. Будь ласка, вкажіть адресу електронної пошти.';
+$lang['This author modified following comment:'] = 'Цей автор змінив наступний коментар:';
+$lang['This author removed the comment with id %d'] = 'Цей автор видалив коментар з ідентифікатором %d';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Невірний статус для користувача "гість", буде використовуватись статус за замовчуванням. Будь ласка, повідомте веб-майстра.';
+$lang['N/A'] = 'невідомий';
+$lang['IP: %s'] = "IP: %s";
+$lang['html tags are not allowed in login'] = 'лоґін не повинен містити html тегів';
+$lang['%d rates'] = '%d голосів';
+$lang['Rating score'] = 'Рейтинговий бал';
+$lang['Invalid username or email'] = 'Невірне ім\'я користувача або адреса електронної пошти';
+$lang['Password reset is not allowed for this user'] = 'Оновлення паролю не дозволено для цього користувача';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Користувач "%s" не має адреси електронної пошти, оновлення паролю неможливе';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Хтось запросив оновлення паролю для наступного облікового запису користувача:';
+$lang['Username "%s" on gallery %s'] = 'Ім\'я "%s" в галереї %s';
+$lang['To reset your password, visit the following address:'] = 'Щоб оновити пароль, відвідайте наступну адресу:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Якщо це було помилкою, просто проігноруйте це повідомлення і нічого не трапиться.';
+$lang['Password Reset'] = 'Оновлення паролю';
+$lang['Check your email for the confirmation link'] = 'Перевірте вашу пошту на наявність лінку підтвердження';
+$lang['Invalid key'] = 'Невірний ключ';
+$lang['The passwords do not match'] = 'Паролі не співпадають';
+$lang['Your password has been reset'] = 'Ваш пароль був оновлений';
+$lang['Return to home page'] = 'Повернутися на домашню сторінку';
+$lang['Please enter your username or email address.'] = 'Будь ласка введіть ваше ім\'я користувача або адресу електронної пошти.';
+$lang['You will receive a link to create a new password via email.'] = 'Ви отримаєте посилання, щоб створити новий пароль по електронній пошті.';
+$lang['Username or email'] = 'Ім\'я користувача або адреса електронної пошти';
+$lang['Change my password'] = 'Змінити мій пароль';
+$lang['Enter your new password below.'] = 'Введіть ваш новий пароль нижче.';
+$lang['EXIF Metadata'] = 'EXIF метадані';
+$lang['IPTC Metadata'] = 'IPTC метадані';
+$lang['Edit'] = 'Редагувати';
+$lang['Hello %s,'] = 'Привіт %s,';
+$lang['Send my connection settings by email'] = 'Надіслати мої дані для входу по електронній пошті';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Реєстрація успішна. Скоро ви отримаєте лист з вашими даними. Ласкаво просимо!';
+$lang['Username modification'] = 'Зміна імені користувача';
+$lang['Your username has been successfully changed to : %s'] = 'Ваше ім\'я користувача було успішно змінене на  : %s';
+$lang['square'] = 'Квадрат';
+$lang['thumb'] = 'Іконка';
+$lang['small'] = 'Малий';
+$lang['medium'] = 'Середній';
+$lang['large'] = 'Великий';
+$lang['xlarge'] = 'XВеликий';
+$lang['xxlarge'] = 'XXВеликий';
+$lang['Original'] = 'Оригінальний';
+$lang['Thank you for registering at %s!'] = 'Дякуємо вам за реєстрацію на сайті %s!';
+$lang['Here are your connection settings'] = 'Ось Ваші дані для входу';
+$lang['Password: %s'] = 'Пароль: %s';
+$lang['Username: %s'] = 'Ім\'я користувача: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Якщо Ви думаєте, що Ви отримали цей лист помилково, будь ласка, зв\'яжіться з нами за адресою %s';
+$lang['Photo sizes'] = 'Розміри зображення';
+$lang['Desktop'] = 'Комп’ютер';
+$lang['Mobile'] = 'Мобільний пристрій';
+$lang['View in'] = 'Подивитися в';
+$lang['Show latest comments first'] = 'Покажіть найновіші коментарі спочатку';
+$lang['Show oldest comments first'] = 'Покажіть найстаріші коментарі спочатку';
+$lang['2small'] = 'XXS - крихітний';
+$lang['xsmall'] = 'XS - особливо малий';
+$lang['Date created, new &rarr; old'] = 'Дата створення, новіше &rarr; старіше';
+$lang['Date created, old &rarr; new'] = 'Дата створення, старіше &rarr; новіше';
+$lang['Date posted, new &rarr; old'] = 'Дата публікації, новіше &rarr; старіше';
+$lang['Date posted, old &rarr; new'] = 'Дата публікації, старіше &rarr; новіше';
+$lang['File name, A &rarr; Z'] = 'Ім\'я файлу, А &rarr; Я';
+$lang['File name, Z &rarr; A'] = 'Ім\'я файлу, Я &rarr; А';
+$lang['Manual sort order'] = 'Ручне сортування';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Числовий ідентифікатор, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Числовий ідентифікатор, 9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = 'Назва зображення, А &rarr; Я';
+$lang['Photo title, Z &rarr; A'] = 'Назва зображення,, Я &rarr; А';
+$lang['Rating score, high &rarr; low'] = 'Рейтинговий бал, від найвищий &rarr; найнижчий';
+$lang['Rating score, low &rarr; high'] = 'Рейтинговий бал, від найнижчий &rarr; найвищий';
+$lang['Visits, high &rarr; low'] = 'Переглядів, більше &rarr; менше';
+$lang['Visits, low &rarr; high'] = 'Перегляди, менше &rarr; більше';
+$lang['%d rate'] = '%d рейтингу';
+$lang['Bad request'] = 'Неправильний запит';
+$lang['Forbidden'] = 'Заборонено';
+$lang['Page not found'] = 'Сторінку не знайдено';
+$lang['Permalink for album not found'] = 'Постійне посилання для альбом не знайдено';
+$lang['Requested album does not exist'] = 'Запитуваний альбом не існує';
+$lang['Requested tag does not exist'] = 'Запитуваний теґ не існує';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo зіткнувся з невиправною помилкою';
+$lang['Email address is mandatory'] = 'Адреса електронної пошти обов\'язкова';
+$lang['Username is mandatory'] = 'Ім\'я користувача є обов\'язковим';
+$lang['mandatory'] = 'обов’язковий';
+$lang['Website'] = 'Веб-сайт';
+$lang['Your website URL is invalid'] = 'Адрес вашого сайту є недійсним';
+$lang['Email'] = 'Електронна пошта';
+$lang['First Page'] = 'Перша сторінка';
+$lang['Go back to the album'] = 'Повернутися до альбому';
+$lang['Last Page'] = 'Остання сторінка';
+$lang['Password is missing. Please enter the password.'] = 'Пароль відсутній. Будь ласка введіть пароль.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Відсутнє підтвердження пароля. Будь ласка, підтвердіть вибраний пароль.';
+$lang['%d photos per page'] = '%d зображень на сторінці';
+$lang['Theme'] = 'Тема';
+?>
Index: /tags/2.6.0RC1/language/uk_UA/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,128 @@
+<h2>Редагувати альбом</h2>
+
+<h3>Інформація</h3>
+
+<ul>
+
+  <li><strong>ім'я</strong>: перейменувати альбом (віртуальне перейменування в разі
+фізичного альбому).</li>
+
+  <li><strong>опис</strong>: короткий текст, що дає загальну думку вмісту,
+цей текст буде показаний в низі сторінки згорнутих зображень.</li>
+
+</ul>
+
+<h3>Переміщення</h3>
+
+<p>Якщо альбом є віртуальним, ви можете перемістити його. Переміщення альбому означає,
+зміни його перший альбом.</p>
+
+<h3>Парметри</h3>
+
+<ul>
+
+  <li><strong>Тип доступу</strong>: Дозволи управління. Якщо ви робите
+альбом приватним, всі його під-альбоми стають приватним. Якщо ви робите
+альбом публічним, всі його батьківські альмоми стають доступними для громадськості.</li>
+
+  <li><strong>Заблоовані</strong>: Альбом і його під-альбоми будуть тимчасово вимкнуті для технічного обслуговування.</li>
+
+  <li><strong>Коментарі</strong>: Дозволити користувачам коментувати фотографії цього альбому.</li>
+
+</ul>
+
+<p>Ви також можете керувати цим параметром на "Властивості"
+екрані управління (екрани <span
+class="pwgScreen">Коментарі</span>, <span class="pwgScreen">Блокування</span>,
+<span class="pwgScreen">Публічно/Приватно</span>, <span
+class="pwgScreen">Представник</span> доступні з <span
+class="pwgScreen">Адміністрування &raquo; Альбоми &raquo; Властивості</span>).</p>
+
+<h3>Порядок сортування</h3>
+
+<p>Використовувати порядок сортування зображення за промовчанням.</p>
+
+<p>Вкажіть, чи цей порядок сортування буде застосовано до під-альбомів також.</p>
+
+<p>Виберіть специфічні сортуючі критерії, які використані з цим альбомом.</p>
+<ul>
+<li><strong>Дата створення</strong>: Дата створення зображення</li>
+<li><strong>Дата публікації</strong>: Дата синхронізації</li>
+<li><strong>Середній рейтинг (*)</strong>: Середній рейтинг змогла змінити оцінка відвідувача</li>
+<li><strong>Найбільш відвідувані (*)</strong>: Нинішній візит може змінити порядок найбільш відвідуваних</li>
+<li><strong>Ім'я файлу</strong>: Назва дана в інформаційному полі</li>
+<li><strong>Ід</strong>: Внутрішній Ід (останні категорії мають вищий ідентифікатор, ніж попередні.</li>
+
+</ul>
+<p><strong>(*)</strong>Попередження: Не забудьте перевірити цей порядок сортування за себе, оскільки вони можуть дати неочікувані результати.</p>
+
+
+<h3>Представник</h3>
+
+<p>Представник альбом є мініатюри, що відображається на головній сторінці (<span class="pwgScreen">category.php</span>) для представлення
+альбому коли
+він містить тільки вкладені альбоми і немає прямих зображень (так само, як корінь альбому).</p>
+зображення з альбому :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Сторінка зображення</span>: одна з кнопок дозволяє налаштувати поточне зображення як представник альбому. Ця кнопка доступна лише для адміністраторів.</li>
+
+  <li><span class="pwgScreen">Змінити інформацію про фото</span> в
+  адмініструванні. Цей екран може бути досягнуто в <span
+  class="pwgScreen">picture.php</span> або <span class="pwgScreen">Пакетний
+  менеджер</span> в <em>одиничному режимі</em>. Переглянути допомогу по цьому екрану 
+  детальніше.</li>
+
+  <li><span class="pwgScreen">Адміністрування &raquo; Альбоми &raquo; Властивості,
+  Представник</span>. Переглянути допомогу по цьому екрану детальніше.</li>
+
+  <li><span class="pwgScreen">Редагувати альбом</span> (цей екран).</li>
+
+</ul>
+
+<p>Вибір представника залежить від 
+<code>allow_random_representative</code> параметра конфігурації (див. <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>В режимі за промовчанням (<code>allow_random_representative</code> значення false),
+кожен альбом, що містить хоча б один елемент являє собою фіксований
+елемент. Після встановлення(створення альбому), представник змінюється лише
+коли адміністратор просити про це. Якщо представник не підходить,
+Ви можете попросити <strong>знайти нових представників випадково</strong>.</p>
+
+<p>Якщо параметр конфігурації <code>allow_random_representative</code>
+встановлено вірно, категорії з зображеннями може не мають фіксованого
+передставника. Просто використовуйте кнопку <strong>Видалення передставника</strong>.</p>
+
+<p>Якщо альбом містить тільки під-альбоми і немає зображень, він тим не менше може бути представлений на будь-який елемент, завдяки екрану <span class="pwgScreen">Зміни
+інформації про зображення</span>. Єдиний варіант, на поточному екрані є кнопка <strong>Видалення передставника</strong>.</p>
+
+<h3>Пов'язати усі зображення альбому з новим альбомом</h3>
+
+<ul>
+
+<li><strong>Ім'я віртуального альбому</strong>: Ім'я нового альбому, який створений,
+усі зображення поточної категорії будуть зв'язані з новим.</li>
+
+<li><strong>Батьківський альбом</strong>: Де буде новий альбом, залиште пустим для його створення в корені.</li>
+
+</ul>
+
+<h3>Пов'язати усі зображення альбому з існуючими альбомами</h3>
+
+<ul>
+
+<li><strong>Альбоми</strong>: Виберіть призначений альбом.</li>
+
+</ul>
+
+<h3>Відправте інформаційну електронну пошту членам групи</h3>
+
+<ul>
+
+<li><strong>Група</strong>: група одержувачів</li>
+
+<li><strong>Повідомлення електронної пошти</strong>: Вільний текст для відправки їм.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/uk_UA/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Вибір альбому</h2>
+
+<p>Опції управління для кількох альбомів відразу.</p>
+
+<dl>
+
+<dt>Коментарі</dt>
+<dd>Зображення може отримати коментарі від відвідувачів, якщо воно належить до альбому з дозволеним коментуванням.</dd>
+
+<dt>Заблоковано</dt>
+<dd>Заблоковані альбоми вимкнуто для технічного обслуговування. Лише адміністратори можуть переглянути їх в галереї.</dd>
+
+<dt>Публічний / приватний</dt>
+<dd>Після того, як альбом став приватним, надайте права доступу користувачам і групам</dd>
+
+<dt>Представник</dt>
+<dd>Цей параметр доступний, якщо установлено параметр конфігурації
+<code>allow_random_representative</code> (подивіться <span
+ class="filename">include/config_defaults.inc.php</span>) значення
+<em>true</em>. Коженому альбому може бути представлено випадкові зображення або зображення, обрані у якості унікального представника.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/uk_UA/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/configuration.html	(revision 25596)
@@ -0,0 +1,101 @@
+<h2>Конфігурація</h2>
+
+<p>Цей екран дозволяє адміністратору налаштувати базові конфігурації галереї. Дійсно, цей екран відображає тільки прості параметри конфігурації, цього має бути достатньо для переважної більшості адміністраторів. Якщо ви хочете побачити інші численні(і додаткові) параметри конфігурації, прочитати файл конфігурації за замовчуванням <span
+class="filename">include/config_default.inc.php</span>.</p>
+
+<p>Екран ділиться на різні розділи групування параметри конфігурації по категоріях.</p>
+
+
+<h3>Головна</h3>
+<ul>
+  <li><strong>Назва галереї</strong>: використовується в RSS-каналі і повідомленнях по електронній пошті.</li>
+
+  <li><strong>Заголовок сторінки</strong>: відображається у верхній частині кожної відкритій сторінці.</li>
+
+  <li><strong>URL галереї</strong>: використовується для подачі RSS.</li>
+
+  <li><strong>Блокування галереї</strong>: Блокувати всю галерею на технічне обслуговування. Тільки адміністратор буде мати можливість доступу до галереї.</li>
+
+  <li><strong>Рейтинг</strong>: Функція рейтингу зображення включена.</li>
+
+  <li><strong>Рейтинг гостей</strong>: Навіть незареєстровані користувачі можуть оцінювати зображення.</li>
+
+  <li><strong>Дозволити реєстрацію користувачів</strong>: Будь-хто може зареєструватися.</li>
+
+  <li><strong>Поштова адреса є обов'язковою для всіх користувачів</strong>: пошта буде перевірятися на поновлення реєстрації або профілю, за винятком, якщо дія відбувається на адміністратора.</li>
+
+  <li><strong>Емейл повідомлення адміністраторам, коли новий користувач реєструється</strong>: адміністратори будуть повідомлені поштою про кожну реєстрацію.</li>
+  
+  <li><strong>Порядок зображень за замовчуванням</strong>: ви можете визначити персональне замовлення з цими випадаючим меню.</li>
+
+</ul>
+
+<h3>Історія</h3>
+
+  <p>Відвідувань на сторінках <span
+  class="pwgScreen">category.php</span> та <span
+  class="pwgScreen">picture.php</span> будуть збережені в таблиці <code>history</code>.</p>
+  
+  <p>Відвідування буде показано в <span  class="pwgScreen">Адміністрування &raquo; Інструменти &raquo; Історія</span>.</p>
+
+<ul>
+  <li><strong>Зберегти сторінки відвідувані гостями</strong>: відвідувані сторінки гостями будуть записані.</li>
+
+  <li><strong>Зберегти сторінки відвідувані користувачами</strong>: відвідування користувачів буде записано.</li>
+
+  <li><strong>Зберегти сторінки відвідувані адміністраторами</strong>: сторінки відвідувані адміністраторами буде записано.</li>
+
+</ul>
+
+<h3>Коментарі</h3>
+<ul>
+
+  <li><strong>Коментарі для всіх</strong>: Навіть незареєстровані гості можуть отримати можливість надсилати коментарі.</li>
+
+  <li><strong>Кількість коментарів на сторінці</strong>.</li>
+
+  <li><strong>Перевірка</strong>: адміністратор повинен перевірити коментарі користувачів, перш ніж вони стають видні на сайті. Перевірка коментарів користувача
+ відбувається на екрані <span class="pwgScreen">Адміністрування &raquo; Інструменти &raquo; Коментарі в очікуванні</span>.</li>
+
+  <li><strong>Емейл лист адміністраторам, коли вводяться дійсні коментарі</strong>: Відправлення електронною поштою адміністратору, коли користувач вводить свій коментар і цей коментар перевіряється.</li>
+
+  <li><strong>Емейл лист адміністраторам, коли коментар вимагає перевірки</strong>:
+Відправлення електронною поштою листа адміністратору, коли користувач вводить коментар, який вимагає перевірки адміністратором.
+Перевірка коментарів користувачів відбувається на екрані <span class="pwgScreen">Адміністрування &raquo; Інструменти &raquo; Коментарі в очікуванні</span>.</li>
+
+</ul>
+
+<h3>Відображення за замовчуванням</h3>
+
+<p>Тут ви можете змінити параметри відображення, які використовуються гостем, користувачем за промовчанням. Після підключення, ці параметри змінюються на власні параметри користувача
+(змінювані в <span class="pwgScreen">профілю</span>).</p>
+
+<p>Можна змінити параметри відображення для всіх існуючих користувачів на <span class="pwgScreen">Адміністрування &raquo;
+Користувачі &raquo; Управління</span> екрані, де ви можете вибрати список користувачів.</p>
+
+<ul>
+
+  <li><strong>Мова</strong>: Застосувати лише до позначки Piwigo. Назви альбомів, імена зображень і описи всіх полів не локалізовані.</li>
+
+  <li><strong>Кількість зображень в рядку</strong></li>
+
+  <li><strong>Кількість рядків на сторінці</strong></li>
+
+  <li><strong>Теми інтерфейсу</strong></li>
+
+  <li><strong>Недавній період</strong>: Вдень. Період, впродовж якого зображення показується як нове. Має бути більшим, ніж 1 день.</li>
+
+  <li><strong>Розгорнути всі альбоми</strong>: Розгортання всіх альбомів
+в меню <em>Попередження</em>: цей параметр є ресурсомістким і може генерувати величезні меню, якщо ваше дерево альбом містить багато альбомів.</li>
+
+  <li><strong>Показати кількість коментарів</strong>: Показати кількість коментарів для кожного зображення на сторінці мініатюр. Ресурсомісткий.</li>
+
+  <li><strong>Показати кількість показів</strong>: Відображення показів спостерігається на зображенні під його мініатюрою на сторінці мініатюр. Тільки тоді, коли додатковий параметр конфігурації: <br>
+  $conf['show_nb_hits'] = true; <br>
+  Примітка: false за замовчуванням.</li>
+
+  <li><strong>Максимальна ширина зображення</strong>: максимальна ширина відображення.  Зображення більше, ніж цей параметр буде змінено на показі.  Замість того, щоб вибрати цей параметр, ви можете розглянути можливість зміни ширини зображення; Це було б кращою практикою.</li>
+
+  <li><strong>Максимальна висота зображення</strong>: Те ж саме що стосується налаштування максимальної ширини.</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/uk_UA/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>Розширення конфігурації шаблону</h2>
+
+<h3>Про</h3>
+<p>Piwigo галерея може бути налаштована шляхом заміни існуючих файлів шаблону з індивідуальних версій.  Наприклад, за замовчуванням заголовок шаблон (header.tpl) можна замінити шаблон індивідуальний заголовок (my-header.tpl).  Після подання зміни до бази даних галерея буде відображати індивідуальний заголовку замість вихідного заголовка.<br>
+Шаблон розширень ефективний спосіб створювати власні теми для нових, так і старих користувачів. Використовується разом з редактором LocalFiles ви можете створювати свої власні під-теми.</p>
+
+<h3>Оригінальний шаблон</h3>
+<p>Тема містить безліч файлів шаблонів, які складають галерею сторінок. Це оригінальні шаблони.</p>
+
+<h3>Необов'язкові ключові слова URL</h3>
+<p>Це слова, знайдені в галереї URL після ім'я модуля.  Вони також можуть бути активними постійна (див. документацію постійне посилання для отримання додаткової інформації).  <a href="#warnings">ПОПЕРЕДЖЕННЯ:</a> якщо той же оригінальний шаблон і таке ж ключове слово використаний більш ніж на одному налагодженому шаблоні тільки один є активним.</p>
+
+<h3>Зв'яжіть тему</h3>
+<p>Пов'язаних темою є тема, з якої файли шаблонів замінюються.</p>
+
+<h3>Де знаходяться оригінальні шаблони?</h3>
+<p>Оригінальні шаблони файлів шаблонів поставляється з кожною темою окремо.  Вони зберігаються в <em>/themes/default/template</em> (або <em>themes/<theme name>/template</em>).  Ці файли шаблонів не повинні бути змінені на місці, оскільки зміни будуть втрачені з оновленням теми.<br>
+Підтримка оригінальних шаблонів включають:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Збереження індивідуальних шаблонів</h3>
+<p>Індивідуальний шаблони має бути збережено в шаблоні розширення папки та вкладені папки.  Наприклад, <em>/template-extension/my-default/header.tpl</em> (або <em>/template-extension/<my-theme-name>/header.tpl</em>)  Шаблон-файли можуть мати будь-яке ім'я з розширення .tpl.  Файли шаблонів у підпапки з'являтися у вікні конфігурації шаблону та доступні як користувацькі шаблони.</p>
+<h3>Активація індивідуальних шаблонів</h3>
+<p>Виберіть вихідний шаблон для заміни.  Можна також вибрати ключові слова URL, щоб переконатися, що індивідуальний шаблон тільки показано на сторінках за цим ключовим словом.  Виберіть приєднані теми та зміни будуть ефективні на цій темі.  Внести зміни до бази даних.</p>
+<h3>Деактивація індивідуальних шаблонів</h3>
+<p>Скасувати вибір вихідного шаблона і відправити зміни в базу даних.<br>
+Видалити файли індивідуального шаблону з папки шаблонів розширення.</p>
+
+<a name="warnings"></a>
+<h3>Попередження</h3>
+<ul>
+  <li><strong>Оригінальний шаблон</strong> повинен бути вихідний шаблон в іншому випадку у вас можуть бути непередбачувані результати.</li>
+  <li>Якщо ж вихідний шаблон та те ж саме URL ключове слово використовується більше одного індивідуального шаблону тільки останній є активний.</li>
+  <li>Розподілені файли прикладів шаблонів для тестування тільки.  Не редагуйте їх.  Створіть свої власні, або скопіюйте існуючу тему шаблонів файлів в <em>/template-extension/<my-theme>/</em></li>
+  <li>Коли індивідуальний шаблон видалено вихідний файл шаблону буде негайно відновлений.</li>
+</ul>
Index: /tags/2.6.0RC1/language/uk_UA/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Список груп</h2>
+
+<p>Це місце, де можна керувати групами.</p>
+
+<h3>Додати групу</h3>
+
+<p>Адміністратор може додавати групи.</p>
+
+<h3>Список груп</h3>
+
+<p>Для кожної групи можуть бути застосовані такі дії:</p>
+
+
+<ul>
+  <li>перейти до управління користувачами (Адміністрування&raquo;Користувачі&raquo;Керувати)</li>
+  <li>перейти на дозвіл екрана управління для дозволу або заборони доступу до приватних альбомів.</li>
+  <li>видалити групу (потрібно підтвердження)</li>
+  <li>перемикання статусу "за умовчанням" (вимагає підтвердження)</li>
+</ul>
+
+<h3>Стандартні групи</h3>
+<p>Групи за замовчуванням групи, які будуть автоматично пов'язані з кожним новим користувачем при реєстрації або створенні адміністратором.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,27 @@
+<p>Кілька способів додавання зображень в галерею:</p>
+
+<ul>
+  <li><strong>Пряме завантаження</strong> усередині вашого браузера є
+найпростішим і найбезпосереднішим способом. Це залежить від ваших здібностей браузеру
+і вашого веб-серверу. Для величезної кількості зображень або у разі, якщо ви стикаєтеся з деякою проблемою,
+інші методи, тільки й чекають вас!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Перейти до прямого завантаження </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> це програма, яка буде встановлена ​​на вашому комп'ютері. Перетягніть зображення в вікно pLoader, натисніть <em>"Завантажити до Piwigo"</em> і нехай pLoader робить свою роботу. Ви можете знайти інші настільні додатки, такі як <strong>WinToPiwigo</strong> або експортувати плаґін <strong>Digikam</strong> для Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Перейти до pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Передача FTP</strong> Це найбільш рекомендований спосіб додати
+дуже велику колекцію зображень з мінімальною кількістю кліків. Ознайомтесь з
+Посібник для підготовки зображення. FTP метод дозволяє точно контролювати
+фізичну організацію зображень на вашому сервері.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Перейти до FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/uk_UA/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/help_groups.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Групи є зручним способом встановити дозволи для списку користувачів.</p>
+
+<p>Створення груп в <span class="pwgScreen">Адміністрування &raquo; Користувачі
+&raquo; Групи</span> і пов'язати користувачів до цієї групи
+в <span class="pwgScreen">Адміністрування &raquo; Користувачі
+&raquo; Керувати</span>.</p>
+
+<p>Користувач може належати до декількох груп. Авторизація має пріоритет над
+забороною: якщо користувач "Іван" відноситься до груп "сім'я" і "друзі", і
+що тільки група "сім'я" може бачити альбом "Різдво 2012", то альбом
+"Різдво 2012" "Іван" зможе побачити.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>Після того як ви створили свою галерею, ви можете налаштувати її для ваших відвідувачів
+<ul>
+	<li>Відображення за замовчуванням, як вам подобається в <span class="pwgScreen">Адміністрування &raquo; Конфігурація &raquo; Інструменти</span> вкладка <span class="pwgScreen">Налаштування гостя</span></li>
+	<li>Тема за замовчуванням у <span class="pwgScreen">Адміністрування &raquo; Конфігурація &raquo; Теми</span></li>
+	<li>Мова за замовчуванням у <span class="pwgScreen">Адміністрування &raquo; Конфігурація &raquo; Мови</span></li>
+ </ul>
+ За замовчуванням кожен новий користувач буде наслідувати ці властивості при реєстрації.
+</p>
+<p>Якщо у Вас виникли питання, співтовариство Piwigo будуть раді допомогти Вам на <a href="http://piwigo.org/forum">форумі</a>.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,58 @@
+<fieldset>
+<legend>Дозволи на зображення</legend>
+
+<p>Кожне зображення має <strong>рівень конфіденційності</strong> (блокування). Кожен користувач також має рівень конфіденційності (ключ). 
+Є 5 рівнів конфіденційності:</p>
+<ol>
+  <li>Ніхто</li>
+  <li><em>Контакти</em></li>
+  <li><em>Друзі (який вище, ніж контакти)</em></li>
+  <li><em>Сім'я (який вище, ніж друзі)</em></li>
+  <li><em>Адміни (який вище, ніж будь-який інший рівень)</em></li>
+</ol>
+
+<p>Вищі рівні мають дозволи на нижчих рівнях. Для даного користувача, чим вище рівень конфіденційності, то більше зображень він може бачити.</p>
+
+<p>Наприклад, якщо зображення "peter_wedding-0024.jpg" має рівень конфіденційності <em>"Сім'я"</em>, тоді:</p>
+<ul>
+  <li>Peter (якщо рівень конфіденційності <em>"Адміни"</em>) бачитиме зображення, тому що <em>"Адміни"</em> можуть бачити всі зображення</li>
+  <li>Beth (якщо рівень конфіденційності <em>"Сім'я"</em>) також бачитиме зображення</li>
+  <li>Mary (якщо рівень конфіденційності <em>"Друзі"</em>) не бачитиме зображення</li>
+</ul>
+
+<p>Користувач, який не має ніякого дозволу бачити вміст альбому, не бачитиме альбом безпосередньо, навіть його заголовок. Той же принцип звертається до теґ.</p>
+
+<p>Ви можете встановити рівень конфіденційності користувача на <span class="pwgScreen">Адміністрування &raquo; Користувачі &raquo; Керувати</span>.</p>
+
+</fieldset>
+
+<fieldset>
+<legend>Дозволи на альбоми</legend>
+
+<p>Якщо рівні конфіденційності не відповідає вашим потребам, можна також керувати дозволами на альбоми для користувача або групи. Ви можете керувати дозволами на зображення та альбоми в той же час, без конфліктів.</p>
+
+<p>Ви можете заборонити доступ до альбомів. Перемкніть тип посилання альбому
+"приватний", якщо ви хочете управляти дозволами.</p>
+
+<p>Ви можете встановити альбом приватним шляхом редагування одного альбому
+(<span class="pwgScreen">Адміністрування &raquo; Альбоми &raquo; Керувати
+&raquo; редагувати</span>) або налаштування параметрів вашого дерева альбому
+(<span class="pwgScreen">Адміністрування &raquo; Альбоми &raquo;
+ Властивості &raquo; Публічно / Конфіденційно</span>).</p>
+
+<p>Після того, як альбом є приватним, ви можете керувати дозволами для груп та
+користувачів з 3 екранів:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Адміністрування &raquo; Користувачі &raquo; Керувати &raquo;
+  permissions action</span> (one link per user)</li>
+
+  <li><span class="pwgScreen">Адміністрування &raquo; Користувачі &raquo; Групи &raquo;
+  permissions action</span> (one link per group)</li>
+
+  <li><span class="pwgScreen">Адміністрування &raquo; Альбоми &raquo; Керувати &raquo; редагувати
+  </span> дії дозволів альбому(одне посилання на альбом)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/uk_UA/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,11 @@
+<p>Зображення показуються в альбомі, що відповідає їх файлу
+директорій.</p>
+
+<p>Ви можете також показати зображення в декількох альбомах, без дублювання
+файл на вашому веб-сервері. Асоціюйте зображення до будь-якого альбому у
+екрані редагування зображень(будь-який адміністратора, може дістатисяз сторінки з зображенням на сторінку галереї).</p>
+
+<p>Віртуальні альбоми на основі цієї концепції: вони не мають відповідного
+каталогу. Створення віртуальних альбомів
+у <span class="pwgScreen">Адміністрування &raquo; Альбоми &raquo;
+Керувати</span>.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>Історія</h2>
+
+<p>На цих екранах, ви можете контролювати вашу галерею історії відвідування відповідно до параметрів, які ви вибрали в: Адміністрування &raquo; Конфігурація &raquo; Опції &raquo; Історія</p>
+	
+<h3>Статистика</h3>
+<ul>
+  <p>Якщо ви вибрали для запису відвіданих сторінок (<span class="pwgScreen">index.php</span> та <span class="pwgScreen">picture.php</span>), Ви можете слідкувати за ними з цієї вкладки.</p>
+	<li><strong>Глобальна статистика</strong>: відвідувань на рік. </li>
+	<li><strong>Щорічна статистика</strong>: відвідує за місяць у відібраному році.</li>
+	<li><strong>Щомісячна статистика</strong>: відвідувань на дні вибраного місяця.</li>
+	<li><strong>Щоденна статистика</strong>: відвідувань на годину в обраний день.</li>
+</ul>
+
+<h3>Пошук</h3>
+<ul>
+  <p>Якщо ви вибрали для запису відвідані сторінки (<span class="pwgScreen">index.php</span> and <span class="pwgScreen">picture.php</span>), Ви можете переглянути відомості на цій вкладці за допомогою різних фільтрів.</p>
+	<li><strong>Фільтр за датою:</strong> Виберіть діапазон дат для пошуку по установці дати початку і закінчення.</li>
+	<li><strong>Фільтр за типом елемента:</strong> виберіть вид елементу для статистики по цьому елементу.</li>
+	<li><strong>Фільтр за користувачем:</strong> виберіть користувача для статистики по цьому користувачеві.</li>
+	<li><strong>Фільтр за індефікатором зображення:</strong> виберіть ідентифікатор зображення для статистики по цьому зображенню.</li>
+	<li><strong>Фільтр за ім'я файлу:</strong> виберіть ім'я файлу для статистики по цьому файлу..</li>
+</ul>
Index: /tags/2.6.0RC1/language/uk_UA/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Повідомлення поштою (ПП)</h2>
+
+<p>Налагодження та управління електронною поштою користувачів, повідомлення їх про зміни на вашому сайті.</p>
+
+<p>Цей екран складається з трьох вкладок:</p>
+
+<h3>Налаштування</h3>
+<p>Доступно тільки для веб-майстрів, на цій вкладці задаєються параметри повідомлення поштою.</p>
+
+<h3>Підписатися</h3>
+<p>Доступно тільки для веб-майстра, ця вкладка управляє підписками користувачів на повідомлення по електронній пошті. Додати користувача можна у вікні підписалися на їх отримання повідомлень електронною поштою.</p>
+
+<h3>Надіслати</h3>
+<p>Доступно тільки для веб-майстрів та адміністраторів, ця вкладка дозволяє адміністраторам відправляти електронні повідомлення користувачам, що підписалися.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,70 @@
+<fieldset>
+  <legend>Швидкий старт</legend>
+
+<ol>
+  <li>Створіть директорію на вашому комп'ютері.</li>  
+
+  <li>Скопіюйте кілька зображень всередину цієї директорії, змініть їх розмір для веб-дисплея. <em>Попередження</em>: ім'я директорії і файлів повинне містити тільки листи, фігури, "-", "_" or ".". Без пробілів і акцентованих символів.</li>
+
+  <li>З клієнтом FTP, копіюйте ваші директорії в директорії "Галереї" вашої Piwigo.</li>
+
+  <li>Увійдіть до своєї галереї та перейдіть до <span class="pwgScreen">Адміністрування</span> і натисніть на велику кнопку синхронізації.</li>
+</ol>
+
+<p>Вітаємо! Ви успішно створили перший альбом галереї.</p>
+</fieldset>
+
+<fieldset>
+  <legend>Організація директорій і файлів</legend>
+
+<ul>
+
+  <li>
+
+    <p>Директорії альбому знаходяться в директорії Piwigo
+"galleries". Тут слідує дерево каталогів дуже маленької галереї(але
+користується багатьма особливостями):</p>
+
+    <pre>
+galleries
+|-- wedding
+|   |-- celebration
+|   |   |-- arrival
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- departure
+|   |       +-- paul-and-sarah.jpg
+|   +-- party
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- honeymoon
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>За винятком "pwg_representative" (див. пояснення нижче), в кожній директорії в розділі "galleries" виступає як альбом. Немає ніяких обмежень на глибину директорій.</li>
+
+  <li>В основному, файл представлений елементом. Файл може бути на
+Piwigo елементом, якщо його розширення, серед <code>file_ext</code>
+  можливостей параметра конфігурації (див. файл <span
+  class="filename">include/config_default.inc.php</span>). Файл може
+бути зображенням, якщо його розширення серед <code>picture_ext</code>
+  можливостей параметра конфігурації.</li>
+
+  <li>Немає елементів зображень (відео, звук, файл текстів, все, що ви хочете...) представлених за замовчуванням значок відповідає імені файлу
+розширення. За бажанням, можна пов'язати мініатюру і представника
+файлу (див. video.avi у наведеному вище прикладі).</li>
+
+  <li><em>Попередження</em>: ім'я директорії і файлів повинне містити тільки листи, фігури, "-", "_" or ".". Без пробілів і акцентованих символів.</li>
+
+  <li>Як тільки фотографії правильно розташовані в
+директорії, перейдіть: <span class="pwgScreen">Адміністрування &raquo; Інструменти &raquo;
+  Синхронізація</span></li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/uk_UA/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/search.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Пошук</h2>
+
+<p>Ця сторінка дозволяє шукати зображення зі всієї галереї.</p>
+
+<dl>
+
+  <dt>Пошук слів</dt>
+  <dd>Пошук одного або декількох слів, серед атрибутів, пов'язаних з зображенням
+в галереї. Використовуйте * в якості шаблону для часткового співпадіння.</dd>
+
+  <dt>Пошук за автором</dt>
+  <dd>Використовуйте * в якості шаблону для часткового співпадіння.</dd>
+
+  <dt>Пошук за датою</dt>
+  <dd>Виберіть дату та/або Кінцеву дату для вашого запиту. Залиште порожнім поле "Дата"
+Якщо ви хочете зробити запит "до". Рік в останньому полі слід ввести у форматі : AAAA (тобто 2004)</dd>
+
+  <dt>Пошук за альбомами</dt>
+  <dd>Виберіть альбом або альбоми, які Ви хочете знайти. Всі
+вкладені альбоми можуть бути знайдені за вибором батьківських альбомів і налаштування дозволяють
+шукати по під-альбомами нижче.</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/uk_UA/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>Синхронізація</h2>
+
+<p>Є два різних типи синхронізації:</p>
+<ul>
+	<li>тек/файлів</li>
+	<li>файл метаданих</li>
+</ul>
+
+<p>Синхронізація тек і файлів щодо оновлення тек дерева з альбомом дерева в базі даних.
+Синхронізація файлів метаданих щодо оновлення інформації про знімок, такі, як розмір файла, розмір в пікселях, EXIF і IPTC інформації в базі даних.</p>
+
+<p>При синхронізації з завантаженням в вашу галерею, ви повинні спочатку синхронізувати каталоги і файли.</p>
+
+<p>Процес синхронізації може зайняти тривалий час (в залежності від навантаження на сервер і кількість елементів управління), так що можна це зробити альбом за альбомом.</p>
Index: /tags/2.6.0RC1/language/uk_UA/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>Список користувачів</h2>
+
+<p>Тут ви можете керувати користувачами вашої галереї Piwigo.</p>
+
+<h3>Додати нового користувача</h3>
+
+<p>Адміністратор може додавати користувачів вручну. Для кожного користувача необхідно вказати лоґін, пароль та дійсну адресу електронної пошти.</p>
+
+<h3>Список користувачів</h3>
+
+<p>Перелік існуючих користувачів можуть бути відфільтровані по імені користувача (використовуйте * як шаблон), групі або статусу. Їх можна розсортувати по даті реєстрації або ім'я користувача, в порядку зростання або спадання.</p>
+
+<p>Цей екран дозволяє керувати декількома користувачами одночасно, використовуючи різні дії:</p>
+
+<ul>
+  <li>видаляти користувачів (необхідне підтвердження)</li>
+  <li>змінити статус користувача</li>
+  <li>приєднати або від'єднати від групи</li>
+  <li>змінювати властивості відображення</li>
+  <li>змінювати додаткові дозволи</li>
+</ul>
+
+<p>Ціль обраного користувача (за замовчуванням) або всіх користувачів, яких показано в відфільтрованому списоку.</p>
Index: /tags/2.6.0RC1/language/uk_UA/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Admin configuration'] = 'Конфігурація адміністратора';
+$lang['also given by your host provider'] = 'також дізнайтесь у Вашого хостинг-провайдера';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Альтернативним рішенням є копіювання тексту в поле вище і вставте його в файл "local/config/database.inc.php" (Попередження: database.inc.php повинен містити тільки те, що в текстовому полі, без зворотної лінії або пропусків)';
+$lang['Basic configuration'] = 'Базова конфігурація';
+$lang['Can\'t connect to server'] = 'Не вдається підключитися до сервера';
+$lang['Congratulations, Piwigo installation is completed'] = 'Вітаємо, Piwigo завершив встановлення';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'З\'єднання з сервером успішно, але з\'єднання з базою даних неможлива';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Створення файлу конфігурації local/config/database.inc.php не вдалося.';
+$lang['Database configuration'] = 'Конфігурація бази даних';
+$lang['Database name'] = 'Ім\'я бази даних';
+$lang['Database table prefix'] = 'Префікс таблиць бази даних';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'таблиці бази даних імена, яких будуть починатися з префіксами (дозволяє управляти таблицями краще)';
+$lang['Default gallery language'] = 'Типова мова галереї';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не соромтеся проконсультуватися на форумі першим з будь-яким питанням: %s';
+$lang['Download the config file'] = 'Завантажити файл конфігурації';
+$lang['enter a login for webmaster'] = 'введіть лоґін веб-майстра';
+$lang['Hope to see you back soon.'] = 'Сподіваюся побачити вас найближчим часом.';
+$lang['Host'] = 'Хост';
+$lang['Installation'] = 'Встановлення';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Схоже, ваш хостинг в даний час працює з PHP %s.';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Він буде показаний відвідувачам. Це необхідно для адміністрації сайту';
+$lang['Just another Piwigo gallery'] = 'Ще одна галерея Piwigo';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Тримайте його конфіденційність, він дозволяє отримати доступ до адміністративної панелі';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Потрібна допомога? Задайте питання на <a href="%s">форумі Piwigo</a>.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Зверніть увагу, ви можете змінити свою конфігурацію і перезавантажити собі Piwigo після цього.';
+$lang['Password [confirm]'] = 'Пароль [підтвердження]';
+$lang['PHP 5 is required'] = 'Потрібен PHP 5';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo можуть спробувати перемкнути конфігурацію PHP 5 шляхом створення або зміни .htaccess файлу.';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo не зміг налаштувати PHP 5.';
+$lang['please enter your password again'] = 'введіть пароль ще раз';
+$lang['Sorry!'] = 'Вибачте!';
+$lang['Start Install'] = 'Початок встановлення';
+$lang['Try to configure PHP 5'] = 'Спробуйте налаштувати PHP 5';
+$lang['user login given by your host provider'] = 'лоґін користувача дізнайтесь у вашого хостинг-провайдера';
+$lang['user password given by your host provider'] = 'лоґін користувача дізнайтесь у Вашого хостинг-провайдера';
+$lang['verification'] = 'перевірка';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Відвідувачі зможуть використовувати цю пошту, щоб зв\'язатися з адміністратором сайту';
+$lang['webmaster login can\'t contain characters \' or "'] = 'лоґін веб-майстера не може містити символів \' або "';
+$lang['Welcome to my photo gallery'] = 'Ласкаво просимо в фотогалерею';
+$lang['Welcome to your new installation of Piwigo!'] = 'Ласкаво просимо у ваш новий встановлений Piwigo!';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Ви можете завантажити конфігураційний файл і завантажити його до local/config каталогу встановлення.';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Ви повинні звернутися в службу підтримки вашого хостинг-провайдера і подивитися, як ви можете переключитися на PHP 5 самостійно.';
+$lang['User'] = 'Користувач';
+$lang['localhost or other, supplied by your host provider'] = 'локальний хост або будь-який інший, наданий вашим провайдером';
+?>
Index: /tags/2.6.0RC1/language/uk_UA/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Українська [UA]
Index: /tags/2.6.0RC1/language/uk_UA/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/uk_UA/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/uk_UA/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = 'Всі вкладені альбоми приватних альбомів стали приватними';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'В якості запобіжного заходу, наступні плаґіни були відключені. Ви повинні перевіряти оновлення плагінів до їх відновлення:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'В якості запобіжного заходу, теми вони були відключені. Ви повинні перевірити оновлення перед тим як активуєте їх:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'В <i>%s</i>, до <b>?></b>, вставити:';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Тільки адміністратор може запустити оновлення: увійдіть у систему нижче.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Тільки префікс мініатюр та адресу електронної пошти веб-майстра збережено збережено від попередньої конфігурації';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Їх виконає автоматична перевірка в [Адміністрування> Сервіс> Обслуговування], якщо у вас виникнуть якісь проблеми.';
+$lang['SQL queries'] = 'SQL запитів';
+$lang['Statistics'] = 'Статистика';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Ця сторінка пропонує оновлення базу даних, що оновлює вашу стару версію Piwigo до поточної версії. Помічник оновлення думає, що ви в даний час працюєте з <strong>релізом %s</strong>(або подібним).';
+$lang['total SQL time'] = 'загальний час SQL';
+$lang['total upgrade time'] = 'загальний час оновлення';
+$lang['Upgrade'] = 'Оновлення';
+$lang['Upgrade from version %s to %s'] = 'Оновлення з версії %s на %s';
+$lang['Upgrade informations'] = 'Інформація оновлення';
+$lang['User permissions and group permissions have been erased'] = 'Користувачі та групи дозволів було видалено';
+$lang['You do not have access rights to run upgrade'] = 'У вас немає прав доступу для запуску оновлення';
+?>
Index: /tags/2.6.0RC1/language/vi_VN/README.txt
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/README.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/README.txt	(revision 25596)
@@ -0,0 +1,6 @@
+Piwigo Vietnamese language files
+author: Tien Ho Quang
+website: http://www.quangtien.net
+e-mail: 
+
+update : 28/01/2010
Index: /tags/2.6.0RC1/language/vi_VN/about.html
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/about.html	(revision 25596)
@@ -0,0 +1,10 @@
+  <li>Piwigo là một ứng dụng web đem đến cho bạn khả năng thiết lập một gallery ảnh trực tuyến một cách dễ dàng.</li>
+
+  <li>Về mặt kỹ thuật, Piwigo hoàn toàn được phát triển bằng ngôn ngữ lập trình PHP với cơ sở dữ liệu MySQL.</li>
+
+  <li>Nếu bạn có ý kiến đóng góp cho phần mềm Piwigo, vui lòng ghé vào web site chính thức của <a
+  href="http://piwigo.org">Piwigo</a> và <a href="http://forum.Piwigo.net">diễn đàn</a> dành riêng cho Piwigo.</li>
+  
+    <li>Việt hoá bởi <a
+  href="http://www.quangtien.net">TienHQ</a>.</li>
+
Index: /tags/2.6.0RC1/language/vi_VN/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/admin.lang.php	(revision 25596)
@@ -0,0 +1,973 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d kết hợp';
+$lang['%d associations'] = '%d kết hợp';
+$lang['%d album including'] = '%d đề mục bao gồm ';
+$lang['%d albums including'] = '%d đề mục bao gồm ';
+$lang[' and %d virtual'] = ' và %d thư mục ảo';
+$lang[' and %d virtuals'] = ' và %d thư mục ảo';
+$lang['%d album moved'] = '%d đề mục đã được chuyển';
+$lang['%d albums moved'] = '%d đề mục đã được chuyển';
+$lang['%d group'] = '%d nhóm';
+$lang['%d groups'] = '%d nhóm';
+$lang['%d member'] = '%d thành viên';
+$lang['%d members'] = '%d thành viên';
+$lang['%d tag'] = '%d thẻ';
+$lang['%d tags'] = '%d thẻ';
+$lang['%d user comment rejected'] = '%d lời bình của thành viên dùng đã bị từ chối';
+$lang['%d user comments rejected'] = '%d lời bình của thành viên dùng đã bị từ chối';
+$lang['%d user comment validated'] = '%d lời bình của thành viên dùng đã được xác nhận';
+$lang['%d user comments validated'] = '%d lời bình của thành viên dùng đã được xác nhận';
+$lang['%d user deleted'] = '%d tên thành viên đã được xóa';
+$lang['%d users deleted'] = '%d tên thành viên đã được xóa';
+$lang['%d user'] = '%d thành viên';
+$lang['%d users'] = '%d thành viên';
+$lang['%d waiting for validation'] = 'Có %d hình đang đợi xác nhận';
+$lang['Actions'] = 'Hành động';
+$lang['Activate'] = 'Kích hoạt';
+$lang['Add/delete a permalink'] = 'Thêm/xoá một link cố định';
+$lang['Add a tag'] = 'Thêm một tag';
+$lang['Add a user'] = 'Thêm một thành viên';
+$lang['Add group'] = 'Thêm nhóm';
+$lang['Add'] = 'Thêm';
+$lang['Allow user registration'] = 'Cho phép đăng ký';
+$lang['Apply to sub-albums'] = 'Áp dụng cho các đề mục nhỏ';
+$lang['Associated'] = 'Được kết hợp';
+$lang['Caddie management'] = 'Quản lý Caddie ';
+$lang['Caddie'] = 'Caddie';
+$lang['Albums authorized thanks to group associations'] = 'Đề mục đã được cho phép nhờ vào kết hợp nhóm';
+$lang['Album manual order was saved'] = 'Sắp xếp thủ công đề mục đã được lưu';
+$lang['Check for upgrade failed for unknown reasons.'] = 'Quá trình dò tìm phiên bản nâng cấp bị lỗi, không xác định được nguyên nhân.';
+$lang['Check for upgrade'] = 'Dò tìm phiên bản mới';
+$lang['Comments for all'] = 'Cho mọi đối tượng được phép gởi bình luận';
+$lang['Current name'] = 'Tên hiện tại';
+$lang['Database'] = 'Cơ sở dữ liệu';
+$lang['Deactivate'] = 'Bỏ kích hoạt';
+$lang['Delete Representant'] = 'Xoá mục đại diện';
+$lang['Delete selected tags'] = 'Xoá những tag đã chọn';
+$lang['Delete selected users'] = 'Xoá những thành viên đã chọn';
+$lang['Deletions'] = 'Xoá bỏ';
+$lang['Deny selected groups'] = 'Từ chối nhóm đã chọn';
+$lang['Deny selected users'] = 'Từ chối thành viên đã chọn';
+$lang['Description'] = 'Miêu tả';
+$lang['Display options'] = 'Hiển thị tuỳ chọn';
+$lang['Dissociated'] = 'Không kết hợp';
+$lang['Does not represent'] = 'Không làm đại diện';
+$lang['Edit selected tags'] = 'Biên tập các tag đã chọn';
+$lang['Edit tags'] = 'Biên tập tags';
+$lang['Email admins when a new user registers'] = 'Gởi email cho quản trị khi có một thành viên mới đăng ký';
+$lang['Email admins when a valid comment is entered'] = 'Gởi email cho quản trị khi có một lời bình đã xác nhận được gởi lên gallery.';
+$lang['Email admins when a comment requires validation'] = 'Gởi email cho quản trị khi có một mời bình cần được xác nhận';
+$lang['Environment'] = 'Môi trường';
+$lang['Form'] = 'Form';
+$lang['Gallery title'] = 'Tiêu đề của gallery';
+$lang['Grant selected groups'] = 'Cấp cho các nhóm đã chọn';
+$lang['Grant selected users'] = 'Cấp cho các thành viên đã chọn';
+$lang['Group name'] = 'Tên nhóm';
+$lang['Groups'] = 'Nhóm người dùng';
+$lang['Guests'] = 'Khách';
+$lang['History'] = 'Bản ghi';
+$lang['Informations'] = 'Thông tin';
+$lang['Install'] = 'Cài đặt';
+$lang['Link all album photos to a new album'] = 'Liên kết tất cả các thành phần của đề mục này với một đề mục mới';
+$lang['Link all album photos to some existing albums'] = 'Liên kết tất cả các thành phần của đề mục này với một số đề mục trước';
+$lang['Linked albums'] = 'Đã liên kết các đề mục trên';
+$lang['Lock gallery'] = 'Tạm khoá gallery';
+$lang['Maintenance'] = 'Bảo trì';
+$lang['Edit album permissions'] = 'Quản lý quyền truy xuất của một đề mục';
+$lang['Manage permissions for group "%s"'] = 'Quản lý quyền truy xuất của nhóm "%s"';
+$lang['Manage permissions for user "%s"'] = 'Quản lý quyền truy xuất của thành viên "%s"';
+$lang['Manage tags'] = 'Quản lý tags';
+$lang['Members'] = 'Thành viên';
+$lang['Metadata synchronized from file'] = 'Metadata đã được đồng bộ hoá từ file';
+$lang['Move albums'] = 'Di chuyển đề mục';
+$lang['Move'] = 'Di chuyển';
+$lang['Name'] = 'Tên';
+$lang['New name'] = 'Tên mới';
+$lang['New parent album'] = 'Đề mục ngoài mới';
+$lang['New tag'] = 'Tag mới';
+$lang['Number of comments per page'] = 'Số lời bình trên một trang';
+$lang['Number of rates'] = 'Số lần đánh giá';
+$lang['Number of thumbnails to create'] = 'Số hình thu nhỏ cần tạo ra';
+$lang['Only private albums are listed'] = 'Chỉ những đề mục riêng tư mới được liệt kê';
+$lang['Operating system'] = 'Hệ điều hành';
+$lang['Options'] = 'Tuỳ chọn';
+$lang['Other private albums'] = 'Các đề mục riêng tư khác';
+$lang['Page banner'] = 'Banner của trang';
+$lang['Parent album'] = 'Đề mục ngoài';
+$lang['Path'] = 'Đường dẫn';
+$lang['Permalink'] = 'Liên kết cố định';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Có %s liên kết cố định đã được dùng trước đó bởi đề mục %s. Hãy xoá liên kết cố định này từ bảng ghi trước.';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"';
+$lang['Permalink %s is already used by album %s'] = 'Liên kết cố định %s được sử dụng bởi đề mục %s';
+$lang['Permalink history'] = 'Permalink history';
+$lang['Permalinks'] = 'Liên kết cố định';
+$lang['Permission denied'] = 'Sự chấp nhận đã bị từ chối';
+$lang['Permission granted thanks to a group'] = 'Chấp nhận đã được công nhân nhờ vào một nhóm người dùng';
+$lang['Permission granted'] = 'Sự chấp nhận đã được công nhận';
+$lang['Photo informations updated'] = 'Thông tin của hình đã được cập nhật';
+$lang['Plugins'] = 'Plugins';
+$lang['Position'] = 'Vị trí';
+$lang['Preferences'] = 'Tuỳ chỉnh';
+$lang['Properties'] = 'Thuộc tính';
+$lang['Random photo'] = 'Hình ngẫu nhiên';
+$lang['Rate date'] = 'Ngày tháng đánh giá';
+$lang['Rating by guests'] = 'Đánh giá bởi khách';
+$lang['Rating'] = 'Đánh giá';
+$lang['Reject'] = 'Từ chối';
+$lang['Representant'] = 'Hình đại diện';
+$lang['Representation of albums'] = 'Hình đại diện cho các đề mục';
+$lang['Representative'] = 'Đại diện';
+$lang['Represents'] = 'Hình đại diện';
+$lang['Save order'] = 'Lưu vị trí sắp xếp';
+$lang['Save to permalink history'] = 'Lưu vào bảng ghi cố định';
+$lang['Select at least one album'] = 'Chọn ít nhất một đề mục';
+$lang['Select at least one photo'] = 'Chọn ít nhất một hình ảnh';
+$lang['Select at least one user'] = 'Chọn ít nhất một người dùng';
+$lang['Show info'] = 'Hiển thị thông tin';
+$lang['Site manager'] = 'Quản lý site';
+$lang['Status'] = 'Trạng thái';
+$lang['Statistics'] = 'Thống kê';
+$lang['Storage album'] = 'Đề mục lưu trữ';
+$lang['Sum of rates'] = 'Tổng hợp đánh giá';
+$lang['Tag "%s" already exists'] = 'Tag "%s" đã có đó';
+$lang['Tag "%s" was added'] = 'Tag "%s" đã được thêm vào';
+$lang['Tag selection'] = 'Chọn tag';
+$lang['The %d following tags were deleted'] = 'Các tag %d sau đã bị xoá';
+$lang['Unable to check for upgrade.'] = 'Không thể dò tìm bản nâng cấp.';
+$lang['Uninstall'] = 'Tháo bỏ';
+$lang['Use the default photo sort order (defined in the configuration file)']='Sử dụng tính năng sắp xếp vị trí hình ảnh mặc định (được chỉ ra trong file cấu hình)';
+$lang['User comments validation'] = 'Xác nhận lời bình của thành viên';
+$lang['Users'] = 'Thành viên';
+$lang['Validate'] = 'Xác nhận';
+$lang['Validation'] = 'Xác nhận';
+$lang['Version'] = 'Phiên bản';
+$lang['Virtual albums to move'] = 'Đề mục ảo cần di chuyển';
+$lang['Virtual album name'] = 'Tên đề mục ảo';
+$lang['Webmaster cannot be deleted'] = 'Webmaster không thể xoá được';
+$lang['You are running on development sources, no check possible.'] = 'Bạn đang sử dụng mã nguồn dạng phát triển, không thể kiểm tra được.';
+$lang['You cannot delete your account'] = "Bạn không thể tự xoá tài khoản của mình được";
+$lang['You cannot move an album in its own sub album'] = 'Bạn không thể dời một đề mục vào trong đề mục con của chính nó.';
+$lang['You need to confirm deletion'] = 'Bạn cần được xác nhận để xoá';
+$lang['Associate to album'] = 'Kết hợp với đề mục';
+$lang['associate to group'] = 'kết hợp với nhóm người dùng';
+$lang['Authorized'] = 'Được cho phép';
+$lang['Add a virtual album'] = 'Thêm vào một đề mục ảo';
+$lang['Authorize users to add comments on selected albums'] = 'Cho phép người dùng có thể gởi bình luận ở các đề mục được chọn';
+$lang['The name of an album must not be empty'] = 'Tên của đề mục không được để trống';
+$lang['Lock albums'] = 'Những đề mục bị khoá';
+$lang['Private'] = 'Đề mục riêng';
+$lang['Public'] = 'Đề mục chung (công cộng)';
+$lang['Find a new representant by random'] = 'Tìm ngẫu nhiên hình ảnh đại diện mới';
+$lang['Public / Private'] = 'Chung / Riêng tư';
+$lang['Manage authorizations for selected albums'] = 'Quản lý sự cho phép đối với những đề mục được chọn';
+$lang['Virtual album added'] = 'Đề mục ảo đã được thêm vào';
+$lang['Virtual album deleted'] = 'Đề mục ảo đã bị xoá';
+$lang['Access type'] = 'Kiểu truy cập';
+$lang['Information data registered in database'] = 'Dữ liệu thông tin đã thêm vào cơ sở dữ liệu';
+$lang['Default display'] = 'Hiển thị theo mặc định';
+$lang['The gallery URL is not valid.'] = 'Địa chỉ của gallery không tồn tại.';
+$lang['The number of comments a page must be between 5 and 50 included.'] = 'Số lời bình trên một trang phải từ 5 đến 50.';
+$lang['Configuration'] = 'Cấu hình';
+$lang['confirm'] = 'xác nhận';
+$lang['Date'] = 'Ngày tháng';
+$lang['delete album'] = 'xoá bỏ đề mục';
+$lang['Dissociate from album'] = 'không kết hợp với đề mục';
+$lang['dissociate from group'] = 'Không kết hợp với nhóm người dùng';
+$lang['Album updated successfully'] = 'Thông tin của đề mục đã được cập nhập thành công.';
+$lang['photos per page'] = 'thành phần trên mỗi trang';
+$lang['High definition enabled'] = 'Bật chế độ xem hình lớn';
+$lang['File'] = 'Tệp tin';
+$lang['first photo added on %s'] = 'thành phần đầu tiên đã được thêm vào %s';
+$lang['Forbidden'] = 'Bị cấm';
+$lang['global mode'] = 'chế độ tổng thể';
+$lang['group "%s" added'] = 'nhóm người dùng tên "%s" đã được thêm vào';
+$lang['group "%s" deleted'] = 'nhóm người dùng tên "%s" đã được xoá';
+$lang['group "%s" updated'] = 'nhóm người dùng tên "%s" đã được cập nhật';
+$lang['The name of a group must not contain " or \' or be empty.'] = 'Tên của nhóm người dùng không có ký tự "\' hoặc bỏ trống.';
+$lang['This name is already used by another group.'] = 'Tên nhóm đã được đặt cho nhóm người dùng trước đó.';
+$lang['High definition'] = 'Định dạng cao';
+$lang['jump to album'] = 'nhảy đến đề mục';
+$lang['jump to photo'] = 'nhảy đến hình';
+$lang['leave'] = 'để';
+$lang['Lock'] = 'Khoá';
+$lang['Locked'] = 'Đã khoá';
+$lang['manage album photos'] = 'quản lý các thành phần đề mục';
+$lang['manage sub-albums'] = 'quản lý các đề mục con';
+$lang['Manage'] = 'Quản lý';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Thời gian xử lý đã hết, quá trình xử lý cần phải được tiếp tục [Trong khoảng: %d giây].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Thời gian xử lý đã hết, quá trình xử lý cần phải được tiếp tục [Trong khoảng: %d giây].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Thời gian chuẩn bị cho danh sách người dùng cần gởi email là có giới hạn. Các thành viên khác không được liệt kê ra.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = 'Thời gian gởi mail là có giới hạn. Các email khác đã được bỏ qua.';
+$lang['To send ?'] = 'Để gởi ?';
+$lang['Last send'] = 'Gởi lần cuối';
+$lang['User'] = 'Người dùng';
+$lang['See you soon,'] = 'Hẹn gặp lại bạn,';
+$lang['Go to'] = 'Đi đến ';
+$lang['Hello'] = 'Xin chào ';
+$lang['New photos were added'] = 'Thành phần mới đã được thêm ';
+$lang['on'] = ' vào ';
+$lang['between'] = 'giữa ';
+$lang['and'] = ' và ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster đã đăng ký bạn nhận thông báo qua email.';
+$lang['You have subscribed to receiving notifications by mail.'] = 'Bạn đã đăng ký nhận thông báo qua email.';
+$lang['To subscribe'] = 'Đăng ký';
+$lang['If you encounter problems or have any question, please send a message to'] = 'Nếu bạn bắt gặp lỗi hoặc cần hỏi điều gì liên quan đến site, vui lòng gởi email liên hệ';
+$lang['[NBM] Problems or questions'] = '[NBM] Lỗi hoặc câu hỏi';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster đã xoá email của bạn ra khỏi danh sách nhận thông báo qua email.';
+$lang['You have unsubscribed from receiving notifications by mail.'] = 'Bạn đã xoá email của mình ra khỏi danh sách nhận thông báo qua email.';
+$lang[', click on'] = ', click vào ';
+$lang['To unsubscribe'] = 'Không đăng ký';
+$lang['With blank value, gallery title will be used'] = 'Với giá trị nhập vào để trống, thì tiêu đề của gallery sẽ được sử dụng thay thế';
+$lang['Notification'] = 'Thông báo';
+$lang['Error when sending email to %s [%s].'] = 'Có lỗi khi gởi email đến %s [%s].';
+$lang['Mail sent to %s [%s].'] = 'Email đã được gởi tới %s [%s].';
+$lang['%d mail was sent.'] = 'Có %d mail đã được gởi.';
+$lang['%d mails were sent.'] = 'Có %d mails đã được gởi.';
+$lang['%d mail was not sent.'] = 'Có %d mail không gởi được.';
+$lang['%d mails were not sent.'] = 'Có %d mails không gởi được.';
+$lang['No mail to send.'] = 'Không có mail nào được gởi đi.';
+$lang['There is no available subscribers to mail.'] = 'Không có đăng ký nhận email nào.';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Người đăng ký có thể được liệt kê ra nếu như chỉ gởi thông báo khi có thành phần mới thêm vào.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Dù sao thì chỉ có webmasters có thể xem được tab này còn đối với quản trị thì không.';
+$lang['No user to send notifications by mail.'] = 'Không có người dùng nào cần gởi email thông báo.';
+$lang['New photos added'] = 'Thành phần mới đã được thêm';
+$lang['Subscribe to notification by mail'] = 'Đăng ký nhận thông báo qua email';
+$lang['Unsubscribe from notification by mail'] = 'Bỏ đăng ký nhận thông báo qua email';
+$lang['Parameter'] = 'Tham số';
+$lang['Continue processing treatment'] = 'Tiếp tục quá trình xử lý';
+$lang['Complementary mail content'] = 'Nội dung email bổ sung';
+$lang['Add detailed content'] = 'Thêm vào nội dung chi tiết';
+$lang['Send mail as'] = 'Gởi mail như';
+$lang['Send mail to users'] = 'Gởi mail đến người dùng';
+$lang['Send'] = 'Gởi';
+$lang['Options'] = 'Tuỳ chọn';
+$lang['Subscribed'] = 'Đăng ký nhận tin';
+$lang['Subscribe'] = 'Đăng ký';
+$lang['Parameters'] = 'Tham số';
+$lang['Select recipients'] = 'Chọn người nhận';
+$lang['Subscribe/unsubscribe users'] = 'Người dùng có đăng ký/bỏ đăng ký';
+$lang['Unsubscribed'] = 'Bỏ đăng ký';
+$lang['%d parameter was updated.'] = 'Có %d tham số đã được cập nhật.';
+$lang['%d parameters were updated.'] = 'Có %d tham số đã được cập nhật.';
+$lang['%d user was not updated.'] = 'Có %d người dùng không được cập nhật.';
+$lang['%d users were not updated.'] = 'Có %d người dùng không được cập nhật.';
+$lang['User %s [%s] was removed from the subscription list.'] = 'Người dùng %s [%s] đã được xoá khỏi danh sách đăng ký nhận tin.';
+$lang['User %s [%s] was added to the subscription list.'] = 'Người dùng %s [%s] đã được thêm vào danh sách đăng ký nhận tin.';
+$lang['%d user was updated.'] = 'Có %d người dùng được cập nhật.';
+$lang['%d users were updated.'] = 'Có %d người dùng được cập nhật.';
+$lang['User %s [%s] was not removed from the subscription list.'] = 'Người dùng %s [%s] đã không xoá khỏi danh sách đăng ký nhận tin.';
+$lang['User %s [%s] was not added to the subscription list.'] = 'Người dùng %s [%s] đã không thêm vào danh sách đăng ký nhận tin.';
+$lang['User %s [%s] added.'] = 'Thành viên %s [%s] đã được thêm.';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Cảnh báo: đăng ký hoặc không đăng ký gởi email đến cho các thành viên.';
+$lang['Send mail on HTML format'] = 'Gởi mail với định dạng HTML';
+$lang['Include display of recent photos grouped by dates'] = 'Bao gồm cả việc hiển thị những hình ảnh gần đây được nhóm lại theo ngày tháng.';
+$lang['Available only with HTML format'] = 'Chỉ dùng được với định dạng HTML';
+$lang['no write access'] = 'không được phép ghi';
+$lang['Permissions'] = 'Quyền truy xuất';
+$lang['private'] = 'riêng tư';
+$lang['public'] = 'công cộng';
+$lang['Purge never used notification feeds'] = 'Việc dọn dẹp hệ thống không bao giờ sử dụng các feed thông báo.';
+$lang['Purge sessions'] = 'Phiên dọn dẹp';
+$lang['randomly represented'] = 'đại diện ngẫu nhiên';
+$lang['registration date'] = 'ngày tháng đăng ký';
+$lang['clean'] = 'dọn dẹp';
+$lang['Create this site'] = 'Khởi tạo site này';
+$lang['test'] = 'kiểm tra';
+$lang['test this remote site'] = 'kiểm tra site truy xuất từ xa này';
+$lang['remove tags'] = 'bỏ tags';
+$lang['Repair and optimize database'] = 'Sửa chữa và tối ưu hóa cơ sở dữ liệu';
+$lang['selection'] = 'chọn lựa';
+$lang['set to'] = 'cài đặt thành';
+$lang['singly represented'] = 'đại diện đơn';
+$lang['This site already exists'] = 'Site này đã có trước đó';
+$lang['created'] = 'đã được tạo';
+$lang['delete'] = 'xóa bỏ';
+$lang['delete this site and all its attached elements'] = 'xóa site này và tất cả các thành phần đính kèm';
+$lang['deleted'] = 'đã xoa bỏ';
+$lang['an error happened'] = 'có một lỗi xuất hiện';
+$lang['Local'] = 'Cục bộ';
+$lang['Remote'] = 'Từ xa';
+$lang['update the database from files'] = 'cập nhật cơ sở dữ liệu từ file';
+$lang['status'] = 'trạng thái';
+$lang['Directory'] = 'Thư mục';
+$lang['sub-albums'] = 'đề mục con';
+$lang['Synchronize metadata'] = 'đồng bộ hóa metadata';
+$lang['target'] = 'mục tiêu';
+$lang['Thumbnail'] = 'Hình thu nhỏ';
+$lang['Title'] = 'Tiêu đề';
+$lang['Album list management'] = 'Quản lý đề mục';
+$lang['Piwigo configuration'] = 'Cấu hình Piwigo';
+$lang['Edit album'] = 'Biên tập một đề mục';
+$lang['Group management'] = 'Quản lý nhóm';
+$lang['User list'] = 'Danh sách thành viên';
+$lang['Edit photo information'] = 'Chỉnh sửa thông tin của hình ảnh';
+$lang['Database synchronization with files'] = 'Đồng bộ hóa cơ sở dữ liệu với tệp tin';
+$lang['all'] = 'tất cả';
+$lang['height must be a number superior to'] = 'chiều cao hình phải là số lớn hơn';
+$lang['width must be a number superior to'] = 'chiều rộng hình phải là số lớn hơn';
+$lang['for the file format'] = 'dành cho định dạng file';
+$lang['Photo unreachable or no support'] = 'Hình không đọc được hoặc định dạng không được hỗ trợ';
+$lang['GD version'] = 'Phiên bản GD';
+$lang['General statistics'] = 'Thống kê tổng quát';
+$lang['average time'] = 'thời gian trung bình';
+$lang['number of miniaturized photos'] = 'số lượng hình ảnh được tối thiểu hóa';
+$lang['total time'] = 'thời gian tổng cộng';
+$lang['for this file format'] = 'dành cho định dạng file này';
+$lang['unit mode'] = 'chế độ đơn vị hình';
+$lang['Unlocked'] = 'Bỏ khóa';
+$lang['unset'] = 'không đặt';
+$lang['Update albums informations'] = 'Cập nhật thông tin của đề mục';
+$lang['Update photos information'] = 'Cập nhật thông tin của hình ảnh';
+$lang['Synchronize'] = 'Đồng bộ hóa';
+$lang['reduce to single existing albums'] = 'rút gọn về đề mục đơn đang tồn tại';
+$lang['Choose an option'] = 'Chọn một tùy chọn';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'hiển thi thông tin tối đa (thành phần và đề mục được thêm vào hoặc bị xóa đi)';
+$lang['Error list'] = 'Danh sách lỗi';
+$lang['Errors caption'] = 'Ghi chú lỗi';
+$lang['Detailed informations'] = 'Thông tin chi tiết';
+$lang['File/directory read error'] = 'Lỗi đọc file/thư mục';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Tệp tin hoặc thư mục không truy xuất được (có thê nó không tồn tại hoặc bị từ chối truy cập)';
+$lang['albums deleted in the database'] = 'đã xóa các đề mục trong cơ sở dữ liệu';
+$lang['photos deleted from the database'] = 'đã xóa các thành phần trong cơ sở dữ liệu';
+$lang['photos candidates for metadata synchronization'] = 'hình ảnh được bình chọn cho việc đồng bộ hóa metadata';
+$lang['photos informations synchronized with files metadata'] = 'thông tin những thành phần được đồng bộ hóa với metadata của file';
+$lang['errors during synchronization'] = 'lỗi xuất hiện trong quá trình đồng bộ hóa';
+$lang['albums added in the database'] = 'đề mục được thêm vào cơ sở dữ liệu';
+$lang['photos added in the database'] = 'thành phần được thêm vào cơ sở dữ liệu';
+$lang['photos updated in the database'] = 'thành phần được cập nhật vào cơ sở dữ liệu';
+$lang['Search for new images in the directories'] = 'Tìm kiếm hình mới trong thư mục';
+$lang['added'] = 'đã thêm vào';
+$lang['deleted'] = 'đã xóa';
+$lang['Metadata synchronization results'] = 'Kết quả đồng bộ hóa metadata';
+$lang['only perform a simulation (no change in database will be made)'] = 'chỉ thực hiện công đoạn giả lập (không có sự thay đổi nào đối với cơ sở dữ liệu)';
+$lang['Simulation'] = 'Giả lập';
+$lang['directories + files'] = 'thư mục + tệp tin';
+$lang['only directories'] = 'chỉ áp dụng cho các thư mục';
+$lang['synchronize files structure with database'] = 'đồng bộ hóa cấu trúc file với cơ sở dữ liệu';
+$lang['synchronize files metadata with database photos informations'] = 'đồng bộ hóa metadata của file với thông tin các thành phần cơ sở dữ liệu';
+$lang['even already synchronized photos'] = 'ngay cả những thành phần đã được đồng bộ hóa';
+$lang['Used metadata'] = 'Metadata được sử dụng';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Tên thư mục và phải là chữ hoặc số, "-", "_" hoặc "."';
+$lang['wrong filename'] = 'sai tên file';
+$lang['Upload'] = 'Gởi hình';
+$lang['user "%s" added'] = 'thành viên "%s" đã được thêm';
+$lang['User status'] = 'Trạng thái của thành viên';
+$lang['user_status_admin'] = 'Quản trị';
+$lang['user_status_generic'] = 'Chung';
+$lang['user_status_guest'] = 'Khách';
+$lang['user_status_normal'] = 'Thành viên';
+$lang['user_status_webmaster'] = 'Webmaster';
+$lang['Virtual album'] = 'Đề mục ảo';
+$lang['Waiting'] = 'Đang đợi';
+$lang['default'] = 'mặc định';
+$lang['Toggle \'default group\' property'] = 'Dịch chuyển \'nhóm mặc định\' thuộc tính';
+$lang['Advanced features'] = 'Đặc điểm vượt trội';
+$lang['Overall'] = 'Toàn bộ';
+$lang['Year'] = 'Năm';
+$lang['Month'] = 'Tháng';
+$lang['Day'] = 'Ngày';
+$lang['Pages seen'] = 'Những trang được xem';
+$lang['Time'] = 'Thời gian';
+$lang['IP'] = 'Địa chỉ IP';
+$lang['Element'] = 'Thành phần';
+$lang['Section'] = 'Mục';
+$lang['An information email was sent to group "%s"'] = 'Một thư thông báo đã được gởi đến nhóm người dùng "%s"';
+$lang['Send an information email to group members'] = 'Gởi thư thông báo đến nhóm thành viên';
+$lang['Group'] = 'Nhóm';
+$lang['[%s] Visit album %s'] = '[%s] Đến để xem đề mục %s';
+$lang['Hello,'] = 'Xin chào,';
+$lang['See you soon.'] = 'Hẹn gặp lại bạn.';
+$lang['Discover album:'] = 'Đến để khám phá đề mục:';
+$lang['Mail content'] = 'Nội dung thư gởi';
+$lang['none'] = 'không';
+$lang['high'] = 'chiều cao';
+$lang['other'] = 'khác';
+$lang['Element type'] = 'Loại thành phần';
+$lang['Image id'] = 'Id của hình';
+$lang['Summary'] = 'Tóm tắt';
+$lang['%d line filtered'] = 'Có %d hành được lọc ra';
+$lang['%d lines filtered'] = 'Có %d hành được lọc ra';
+$lang['%d guest'] = 'Có %d khách';
+$lang['%d guests'] = 'Có %d khách';
+$lang['Hour'] = 'Giờ';
+$lang['guest'] = 'khách';
+$lang['default values'] = 'giá trị mặc định';
+$lang['Guest cannot be deleted'] = 'Tài khoản khách không thể bị xóa';
+$lang['Default user cannot be deleted'] = 'Người dùng mặc định không thể bị xóa';
+$lang['Purge history detail'] = 'Dọn dẹp bản ghi chi tiết';
+$lang['Purge history summary'] = 'Dọn dẹp tóm tắt bản ghi';
+$lang['Check integrity'] = 'Kiểm tra tính nguyên vẹn';
+$lang['Anomaly'] = 'Bất thường';
+$lang['Correction'] = 'Sửa đổi';
+$lang['Automatic correction'] = 'Sửa đổi tự động';
+$lang['Impossible automatic correction'] = 'Không thể sửa đổi tự động';
+$lang['Correction applied with success'] = 'Sửa đổi được áp dụng với những thành công';
+$lang['Correction applied with error'] = 'Sửa đổi được áp dụng với những lỗi';
+$lang['%d anomaly has been detected.'] = 'Có %d bất thường được nhận dạng.';
+$lang['%d anomalies have been detected.'] = 'Có %d bất thường được nhận dạng.';
+$lang['%d anomaly has been corrected.'] = 'Có %d bất thường đã được sửa đổi.';
+$lang['%d anomalies have been detected corrected.'] = 'Có %d bất thường đã được nhận dạng sửa đổi.';
+$lang['%d anomaly has not been corrected.'] = 'Có %d bất thường không được sửa đổi.';
+$lang['%d anomalies have not been corrected.'] = 'Có %d bất thường không được sửa đổi.';
+$lang['Go to %s or %s for more informations'] = 'Chuyển đến %s hoặc %s để có thêm thông tin';
+$lang['the forum'] = 'diễn đàn';
+$lang['the wiki'] = 'thư viện wiki';
+$lang['%s value is not correct file because exif are not supported'] = 'Có %s giá trị không phải là kiểu file đúng bởi vì exif không được hỗ trợ';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = 'Có %s phải được thiết lập là false trong file config_local.inc.php của bạn';
+$lang['Main "guest" user does not exist'] = 'Nhóm người dùng "khách chính" không tồn tại';
+$lang['Main "guest" user status is incorrect'] = 'Trạng thái nhóm người dùng "khách chính" không đúng';
+$lang['Default user does not exist'] = 'Người dùng mặc định không tồn tại';
+$lang['Main "webmaster" user does not exist'] = 'Nhóm "webmaster chính" không tồn tại';
+$lang['Main "webmaster" user status is incorrect'] = 'Trạng thái nhóm "webmaster chính" không đúng';
+$lang['User "%s" created with "%s" like password'] = 'Người dùng "%s" được tạo ra với cùng mật khẩu "%s"';
+$lang['Status of user "%s" updated'] = 'Trạng thái của người dùng "%s" đã được cập nhật';
+$lang['add new photos to caddie'] = 'thêm thành phần mới vào caddie';
+$lang['No display'] = 'Không hiển thị';
+$lang['Classic display'] = 'Hiển thị kiểu classic';
+$lang['Hoverbox display'] = 'Hiển thị  kiểu hoverbox';
+$lang['Mail address is obligatory for all users'] = 'Địa chỉ email là thành phần bắt buộc đối với mọi nhóm người dùng';
+$lang['Minimum privacy level'] = 'Mức độ riêng tư tối thiểu';
+$lang['Privacy level'] = 'Mức độ riêng tư';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = 'Liên hệ';
+$lang['Level 2'] = 'Bạn bè';
+$lang['Level 4'] = 'Gia đình';
+$lang['Level 8'] = 'Quản trị';
+$lang['Reinitialize check integrity'] = 'Tái khởi động quá trình kiểm tra tính nguyên vẹn';
+$lang['Check all'] = 'Chọn tất cả';
+$lang['Uncheck all'] = 'Bỏ chọn tất cả';
+$lang['Check automatic corrections'] = 'Kiểm tra sửa lỗi tự động';
+$lang['Apply selected corrections'] = 'Áp dụng những sửa lỗi đã chọn';
+$lang['Ignore selected anomalies'] = 'Bỏ qua những bất thường đã chọn';
+$lang['Refresh'] = 'Làm tươi lại';
+$lang['The anomaly will be ignored until next application version'] = 'Bất thường sẽ bị bỏ qua cho đến khi phiên bản tiếp theo của ứng dụng.';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Sửa đổi những bất thường sẽ hủy bỏ vấ đề chính mà nó bị bỏ qua';
+$lang['%d anomaly has been ignored.'] = 'Có %d báo cáo bất thường đã được bỏ qua.';
+$lang['%d anomalies have been ignored.'] = 'Có %d báo cáo bất thường đã được bỏ qua.';
+$lang['Plugins which need upgrade'] = 'Plugins cần được nâng cấp';
+$lang['Plugin list'] = 'Danh sách plugin';
+$lang['Check for updates'] = 'Dò tìm bản bâng cấp';
+$lang['Other plugins'] = 'Các plugins khác';
+$lang['Last revisions'] = 'Lần sửa đổi cuối';
+$lang['Are you sure you want to delete this plugin?'] = 'Bạn có chắc là muốn xóa bỏ plugin này không?';
+$lang['Are you sure you want to install this plugin?'] = 'Bạn có chắc là muốn cài đặt plugin này không?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Bạn có chắc là muốn cài đặt bản nâng cấp này? Bạn phải xác nhận nếu phiên bản này không yêu cầu phải tháo bỏ phiên bản cũ.';
+$lang['Plugin has been successfully copied'] = 'Plugin đã được copy xong';
+$lang['You might go to plugin list to install and activate it.'] = 'Bạn nen vào danh sách các plugin để cài đặt và kích hoạt nó.';
+$lang['Can\'t create temporary file.'] = 'Không thể tạo ra file tạm.';
+$lang['Can\'t download archive.'] = 'Không thể tải xuống tệp lưu trữ.';
+$lang['Can\'t read or extract archive.'] = 'Không thể đọc hoặc trích xuất tệp lưu trữ.';
+$lang['An error occured during extraction (%s).'] = 'Có lỗi xuất hiện trong quá trình trích xuất (%s).';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Vui lòng kiểm tra quyền truy xuất của thư mục "plugins" và thư mục con (CHMOD).';
+$lang['Can\'t connect to server.'] = 'Không thể kết nối với máy chủ.';
+$lang['Purge compiled templates'] = 'Don dẹp những template kết hợp';
+$lang['ACCESS_0'] = 'Truy xuất tự to';
+$lang['ACCESS_1'] = 'Truy xuất vào tất cả';
+$lang['ACCESS_2'] = 'Truy xuất vào mục đăng ký nhân bản tin';
+$lang['ACCESS_3'] = 'Truy xuất vào phần quản trị';
+$lang['ACCESS_4'] = 'Truy xuất vào webmasters';
+$lang['ACCESS_5'] = 'Không được phép truy xuất';
+$lang['Support'] = 'Hỗ trợ';
+$lang['Documentation'] = 'Tài liệu tham khảo';
+$lang['A new version of Piwigo is available.'] = 'Đã có phiên bản Piwigo mới.';
+$lang['Piwigo Administration'] = 'Quản trị Piwigo';
+$lang['Piwigo version'] = 'Phiên bản Piwigo';
+$lang['You are running the latest version of Piwigo.'] = 'Bạn đang sử dụng phiên bản mới nhất của Piwigo.';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Phiên bản %s [%s] đã cài đặt không tương thích với phiên bản được yêu cầu là [%s]';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Bạn cần nâng cấp hệ thống để tận dụng hết các chức năng của ứng dụng, nếu không ứng dụng sẽ không hoạt động chính xác, hoặc sẽ không vận hành được';
+$lang['Deleted on'] = 'Xóa vào';
+$lang['Last hit'] =  'Lần xem cuối';
+$lang['GD library is missing'] = 'Thư viện GD bị thiếu';
+$lang['Templates'] = 'Templates';
+$lang['Extend for templates'] = 'Mở rộng cho template';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Việc thay đổi các templates gốc bằng những templates tùy biến từ thư mục con chứa thành phần template mở rộng';
+$lang['Replacers (customized templates)'] = 'Thay thế (templates được tùy biến)';
+$lang['Original templates'] = 'Templates gốc';
+$lang['Optional URL keyword'] = 'Từ khóa URL tùy chọn';
+$lang['Templates configuration has been recorded.'] = 'Cầu hình tempalte đã được ghi.';
+$lang['All optimizations have been successfully completed.'] = 'Tất cả quá trình tối ưu hóa đã hoàn thành xong.';
+$lang['Optimizations have been completed with some errors.'] = 'Quá trình tối ưu hóa đã hoàn thành với một vài lỗi.';
+$lang['Modify information'] = 'Hiệu chỉnh thông tin';
+$lang['nothing'] = 'không có gì';
+$lang['overrides existing values with empty ones'] = 'ghi đè giá trị đang tồn tại bằng giá trị rỗng';
+$lang['Manage photo ranks'] = 'Quản lý xếp hạng hình ảnh';
+$lang['Edit ranks'] = 'Biên tập xếp hạng';
+$lang['No photo in this album'] = 'Không có thành phần nào trong đề mục này';
+$lang['Images manual order was saved'] = 'Sắp xếp hình ảnh thủ công đã được lưu';
+$lang['ranks'] = 'xếp hạng';
+$lang['Drag to re-order'] = 'Kéo rê để sắp xếp lại';
+$lang['Quick Local Synchronization'] = 'Đồng bộ hóa cục bộ nhanh';
+$lang['No photo can be deleted'] = 'Không có hình nào có thể bị xóa';
+$lang['Delete selected photos'] = 'Xóa các hình được chọn';
+$lang['%d photo was deleted'] = '%d hình đã được xóa';
+$lang['%d photos were deleted'] = 'Có %d hình đã được xóa';
+$lang['Downloads'] = 'Tải xuống';
+$lang['Released on'] = 'Phát hành vào';
+$lang['Number of downloads'] = 'Số lần download';
+$lang['Piwigo Announcements Newsletter'] = 'Bản tin Piwigo';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Giữ liên lạc với Piwigo Project, đăng ký nhận bản tin từ Piwigo. Bạn sẽ nhận được email mỗi khi phiên bản mới được phát hành (đôi khi cũng bao gồm bản sửa lỗi, cần thiết để biết và cập nhật) và khi sự kiện chính xảy ra đối với dự án. Chỉ có vài email trong một năm.';
+$lang['Subscribe %s'] = 'Đăng ký nhận tin %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Đăng ký %s nhận bản tin của Piwigo';
+$lang['Purge search history'] = 'Dọn dẹp bản ghi tìm kiếm';
+$lang['Hide'] = 'Ẩn';
+$lang['Menu Management'] = 'Trình đơn';
+$lang['Operation in progress'] = 'Đang tiến hành xử lý.';
+$lang['Please wait...'] = 'Vui lòng đợi...';
+$lang['By rank'] = 'Theo hạng';
+$lang['Manual order'] = 'Sắp xếp thủ công';
+$lang['Password is missing. Please enter the password.'] = 'Thiếu mật khẩu. Vui lòng nhập mật khẩu.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Xác nhận mật khẩu bị thiếu. Vui lòng xác nhận lại mật khẩu đã chọn.';
+$lang['Allow users to edit their own comments'] = 'Cho phép người dùng chỉnh sửa lời bình luận riêng của họ';
+$lang['Allow users to delete their own comments'] = 'Cho phép người dùng xóa lời bình luận riêng của họ';
+$lang['Email administrators when a comment is modified'] = 'Gởi email cho Quản trị viên có một lời bình luận được chỉnh sửa';
+$lang['Email administrators when a comment is deleted'] = 'Gởi email cho Quản trị viên có một lời bình luận bị xóa';
+$lang['Cannot delete the old permalink !'] = 'Liên kết cố định cũ thì không thể bị xóa!';
+$lang['Hit'] = 'Lần xem';
+$lang['Tools'] = 'Công cụ';
+$lang['Photos'] = 'Ảnh';
+$lang['Themes'] = 'Giao diện';
+$lang['Instructions to use Piwigo'] = 'Hướng dẫn sử dụng Piwigo';
+$lang['Installed Themes'] = 'Giao diện đã được cài đặt';
+$lang['Add New Theme'] = 'Thêm một giao diện mới';
+$lang['Forbid this theme to users'] = 'Cấm người dùng sử dụng giao diện này';
+$lang['Set as default theme for unregistered and new users'] = 'Đặt làm giao diện mặt định cho tất cả người dùng chưa đăng ký và thành viên mới';
+$lang['unknown'] = 'không xác định';
+$lang['Upload Photos'] = 'Tải ảnh lên';
+$lang['Drop into album'] = 'Chuyển vào đề mục';
+$lang['+ Add an upload box'] = '+ Thêm một mục gởi hình ';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Tạo ra "%s" thư mục ở cùng thư mục cài đặt Piwigo của bạn';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Gán quyền được ghi (chmod 777) cho "%s" thư mục ở cùng thư mục cài đặt Piwigo của bạn';
+$lang['existing album'] = 'đề mục hiện có';
+$lang['create a new album'] = 'tạo một đề mục mới';
+$lang['Album name'] = 'Tên đề mục';
+$lang['Album "%s" has been added'] = 'Đề mục "%s" đã được thêm vào';
+$lang['Uploaded Photos'] = 'Ảnh đã được gởi lên';
+$lang['%d photos uploaded'] = 'Đã có %d ảnh được gởi';
+$lang['Privacy level set to "%s"'] = 'Mức độ riêng tư đã được thiết lập ở mức "%s"';
+$lang['Album "%s" now contains %d photos'] = 'Đề mục "%s" hiện tại chứa %d bức ảnh';
+$lang['Manage this set of %d photos'] = 'Quản lý bộ gồm %d ảnh';
+$lang['Select files'] = 'Chọn tệp tin';
+$lang['Everybody'] = 'Mọi người';
+$lang['Who can see these photos?'] = 'Ai có thể xem được những bức ảnh này?';
+$lang['Who can see this photo?'] = 'Ai có thể xem được bức ảnh này?';
+$lang['Settings'] = 'Cài đặt';
+$lang['Resize'] = 'Định dạng lại kích thước';
+$lang['Maximum width'] = 'Chiều rộng lớn nhất';
+$lang['pixels'] = 'pixels';
+$lang['Maximum height'] = 'Chiều cao lớn nhất';
+$lang['Image Quality'] = 'Chất lượng hình';
+$lang['Save Settings'] = 'Lưu cài đặt';
+$lang['Your configuration settings are saved'] = 'Thiết lập cấu hình của bạn đã được lưu';
+$lang['Active Themes'] = 'Kích hoạt giao diện';
+$lang['Add write access to the "%s" directory'] = 'Gán quyền được ghi cho thư mục "%s"';
+$lang['Administration Home'] = 'Trang chủ của Quản trị';
+$lang['Change Admin Colors'] = 'Thay đổi màu trang Quản trị';
+$lang['Delete this theme'] = 'Xóa giao diện này';
+$lang['Directory does not exist'] = 'Thư mục không tồn tại';
+$lang['Download,'] = 'Tải xuống,';
+$lang['FTP + Synchronization'] = 'FTP + Đồng bộ hóa';
+$lang['Get Support on Piwigo Forum'] = 'Nhận hỗ trợ từ diễn đàn Piwigo';
+$lang['Help Me'] = 'Xin giúp tôi';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Giao diện này không thể kích hoạt được, một khi giao diện chủ bị thiếu: %s';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Giao diện này không thể bị xóa bởi vì có một hay một vài giao diện khác phụ thuộc vào nó: %s';
+$lang['Inactive Themes'] = 'Giao diện không được kích hoạt';
+$lang['Install on your computer,'] = 'Cài đặt trên máy của bạn,';
+$lang['Make this theme available to users'] = 'Thiết lập cho những tài khoản người dùng có thể sử dụng được';
+$lang['Page end'] = 'Kết thúc trang';
+$lang['Piwigo Uploader'] = 'Công cụ gởi hình Piwigo';
+$lang['Read Piwigo Documentation'] = 'Tham khảo tài liệu về Piwigo';
+$lang['Start pLoader and add your photos.'] = 'Bắt đầu sử dụng pLoader và gởi ảnh của bạn.';
+$lang['Switch to clear or dark colors for administration'] = 'Chuyển sang màu sáng hoặc tối đối với Quản trị viên';
+$lang['Theme has been successfully installed'] = 'Giao diện đã được cài đặt thành công';
+$lang['Visit Gallery'] = 'Ghé xem thư viện hình';
+$lang['Visit Piwigo project website'] = 'Ghé vào trang chủ của Dự án Piwigo';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'Công cụ pLoader là một <em>công cụ gởi ảnh của Piwigo</em>. Từ máy tính của bạn, pLoader sẽ chuẩn bị các bước thiết lập cho những bức ảnh và chuyển chúng lên thư viện ảnh Piwigo của bạn.';
+$lang['Guest Settings'] = 'Thiết lập cho tài khoản khách';
+$lang['Main Page'] = 'Trang chính';
+$lang['Photo Page'] = 'Trang ảnh';
+$lang['Activate Navigation Bar'] = 'Kích hoạt thanh điều hướng trang';
+$lang['Activate Navigation Thumbnails'] = 'Kích hoạt hình thu nhỏ điều hướng trang';
+$lang['Activate icon "%s"'] = 'Kích hoạt biểu tượng "%s"';
+$lang['Photo Properties'] = 'Thuộc tính ảnh';
+$lang['Allow user customization'] = 'Cho phép người dùng tùy biến ';
+$lang['Languages'] = 'Ngôn ngữ';
+$lang['Installed Languages'] = 'Gói ngôn ngữ đã được cài';
+$lang['Add New Language'] = 'Thêm gói ngôn ngữ mới';
+$lang['Language has been successfully installed'] = 'Gói ngôn ngữ đã được cài đặt thành công';
+$lang['Select:'] = 'Chọn:';
+$lang['None'] = 'Không';
+$lang['Invert'] = 'Đảo ngược';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Không thể vô hiệu hóa giao diện này, bạn cần ít nhất một giao diện.';
+$lang['Webmaster status is required.'] = 'Trạng thái của Webmaster cần phải có.';
+$lang['Bound Theme'] = 'Giao diện biên';
+$lang['Allow rating'] = 'Cho phép xếp hạng';
+$lang['Select at least one comment'] = 'Chọn ít nhất một lời bình';
+$lang['Active Plugins'] = 'Plugin đang sử dụng';
+$lang['Inactive Plugins'] = 'Plugin không được sử dụng';
+$lang['Missing Plugins'] = 'Plugin bị thiếu';
+$lang['Uninstalled Plugins'] = 'Plugin đã được gỡ bỏ';
+$lang['By %s'] = 'Bởi %s';
+$lang['Visit plugin site'] = 'Xem trang web chứa plugin';
+$lang['Active Languages'] = 'Ngôn ngữ hiện đang sử dụng';
+$lang['Delete this language'] = 'Xóa gói ngôn ngữ này';
+$lang['Forbid this language to users'] = 'Cấm người dùng sử dụng gói ngôn ngữ này.';
+$lang['Impossible to deactivate this language, first set another language as default.'] = 'Không thể tắt gói ngôn ngữ này, trước tiên cần phải thiết lập gói ngôn ngữ mặc định khác.';
+$lang['Impossible to deactivate this language, you need at least one language.'] = 'Không thể tắt gói ngôn ngữ này, bạn cần ít nhất một gói ngôn ngữ.';
+$lang['Inactive Languages'] = 'Ngôn ngữ hiện không sử dụng';
+$lang['Make this language available to users'] = 'Thiết lập cho phép sử dụng gói ngôn ngữ này cho mọi người dùng.';
+$lang['Set as default language for unregistered and new users'] = 'Thiết lập là ngôn ngữ mặc định cho nhóm người dùng mới và nhóm chưa đăng ký.';
+$lang['Add Photos'] = 'Thêm ảnh';
+$lang['The following tag was deleted'] = 'Thẻ sau đây đã bị xóa';
+$lang['Miscellaneous'] = 'Linh tinh';
+$lang['Virtual Links'] = 'Liên kết ảo';
+$lang['There is no other language available.'] = 'Không có gói ngôn ngữ nào có thể dùng được.';
+$lang['There is no other plugin available.'] = 'Không có plugin nào có thể dùng được.';
+$lang['There is no other theme available.'] = 'Không có gói giao diện nào có thể dùng được.';
+$lang['Add another set of photos'] = 'Thêm vào bộ ảnh khác';
+$lang['Order of menubar items has been updated successfully.'] = 'Vị trí của các mục trong thanh menubar đã được cập nhật thành công.';
+$lang['This theme was not designed to be directly activated'] = 'Giao diện này không được thiết kế để có thể kích hoạt trực tiếp';
+$lang['Pending Comments'] = 'Lời bình đang chờ';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Trong tệp tin php.ini, biến upload_max_filesize (%sB) thì lớn hơn biến post_max_size (%sB), bạn nên thay đổi thiết lập này';
+$lang['Exif extension not available, admin should disable exif use'] = 'Nếu phần mở rộng Exif không tồn tại thì Quản trị viên nên vô hiệu hóa việc sử dụng Exif';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến upload_max_filesize ở tệp tin php.ini: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến post_max_size ở tệp tin php.ini: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến MAX_FILE_SIZE đã được định ra trong form HTML';
+$lang['The uploaded file was only partially uploaded'] = 'Tệp tin gởi lên chỉ được gởi một phần (không hoàn chỉnh)';
+$lang['No file was uploaded'] = 'Không có tệp tin nào được gởi lên';
+$lang['Missing a temporary folder'] = 'Còn thiếu một thư mục tạm';
+$lang['Failed to write file to disk'] = 'Bị lỗi khi ghi tệp tin lên đĩa';
+$lang['File upload stopped by extension'] = 'Quá trình gởi tệp tin đã dừng lại bởi phần mở rộng của tệp tin';
+$lang['Unknown upload error'] = 'Lỗi gởi hình không xác định được';
+$lang['Error on file "%s" : %s'] = 'Có lỗi ở tệp tin "%s" : %s';
+$lang['automatic order'] = 'sắp xếp tự động';
+$lang['manual order'] = 'sắp xếp thủ công';
+$lang['Albums automatically sorted'] = 'Albums đã được phân loại tự động';
+$lang['Batch Manager'] = 'Quản lý khối';
+$lang['include child albums'] = 'bao gồm các albums con';
+$lang['Selection'] = 'Lựa chọn';
+$lang['Action'] = 'Thực thi';
+$lang['Set author'] = 'Thiết lập tác giả';
+$lang['Set title'] = 'Thiết lập tiêu đề';
+$lang['Set creation date'] = 'Thiết lập ngày tháng khởi tạo';
+$lang['Apply action'] = 'Xác nhận thay đổi';
+$lang['on the %d selected photos'] = 'trên %d hình được chọn';
+$lang['%d of %d photos selected'] = '%d trong %d hình được chọn';
+$lang['No photo selected, %d photos in current set'] = 'Không có hình nào được chọn, có %d hình trong bộ hiện tại';
+$lang['All %d photos are selected'] = 'Tất cả %d hình đều được chọn';
+$lang['remove this filter'] = 'bỏ bộ lọc này';
+$lang['Duplicates'] = 'trùng';
+$lang['Add a filter'] = 'thêm bộ lọc';
+$lang['Remove all filters'] = 'Bỏ tất cả các bộ lọc';
+$lang['Refresh photo set'] = 'Cập nhật bộ hình';
+$lang['The whole page'] = 'Nguyên cả trang';
+$lang['The whole set'] = 'Nguyên cả bộ';
+$lang['No photo in the current set.'] = 'Không có hình nào trong bộ hiện tại.';
+$lang['No photo selected, no action possible.'] = 'Không có hình nào được chọn, không tác vụ nào được thực hiện.';
+$lang['Choose an action'] = 'Chọn một tác vụ';
+$lang['remove author'] = 'bỏ tác giả';
+$lang['Type here the author name'] = 'Nhập tên tác giả vào đây';
+$lang['remove title'] = 'bỏ tiêu đề';
+$lang['Type here the title'] = 'Nhập tiêu đề vào đây';
+$lang['remove creation date'] = 'bỏ ngày tháng khởi tạo';
+$lang['Album photos associated to the following albums: %s'] = 'Ảnh được kết hợp với những albums sau: %s';
+$lang['Delete orphan tags'] = 'Xóa các thẻ riêng lẽ';
+$lang['delete photo'] = 'xóa ảnh';
+$lang['Orphan tags deleted'] = 'Thẻ riêng lẽ đã được xóa';
+$lang['Week starts on'] = 'Tuần lễ bắt đầu vào';
+$lang['You have %d orphan tags: %s.'] = 'Bạn có %d thẻ riêng lẽ: %s.';
+$lang['Remove from caddie'] = 'Bỏ ra khỏi caddie';
+$lang['Themes which need upgrade'] = 'Giao diện cần bản nâng cấp';
+$lang['Languages which need upgrade'] = 'Ngôn ngữ cần nâng cấp';
+$lang['All themes are up to date.'] = 'Tất cả giao diện đều được cập nhật.';
+$lang['All plugins are up to date.'] = 'Tất cả plugins đều được cập nhật.';
+$lang['All languages are up to date.'] = 'Tất cả ngôn ngữ đều được cập nhật.';
+$lang['Visit theme site'] = 'Đến trang web của giao diện';
+$lang['Visit language site'] = 'Đến trang web của của ngôn ngữ';
+$lang['New Version'] = 'Phiên bản Mới';
+$lang['Obsolete Plugins'] = 'Những plugins đã cũ';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'CẢNH BÁO! Plugin này có thể không tương thích với phiên bản Piwigo hiện tại.';
+$lang['Do you want to activate anyway?'] = 'Bạn vẫn muốn kích hoạt?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'PLUGIN NÀY GIỜ LÀ MỘT PHẦN CỦA NHÂN PIWIGO! GỠ BỎ NGAY!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'LỖI: PLUGIN NÀY BỊ THIẾU NHƯNG NÓ ĐÃ ĐƯỢC CÀI ĐẶT! GỠ BỎ NGAY.';
+$lang['Thumbnails generation in progress...'] = 'Quá trình khởi tạo hình thu nhỏ đang được thực hiện...';
+$lang['Photos generation in progress...'] = 'Quá trình khởi tạo ảnh web đang được thực hiện...';
+$lang['%s photos have been regenerated'] = 'có %s ảnh đã được tạo ra';
+$lang['%s photos can not be regenerated'] = 'Có %s ảnh không thể tạo ra được';
+$lang['new'] = 'mới';
+$lang['No results'] = 'Không có kết quả nào';
+$lang['Searching...'] = 'Đang tìm kiếm...';
+$lang['Type in a search term'] = 'Nhập vào trong mục tìm kiếm';
+$lang['display'] = 'hiển thị';
+$lang['Deactivate all'] = 'Bỏ kích hoạt tất cả';
+$lang['Restore'] = 'Phục hồi';
+$lang['Restore default configuration. You will lose your plugin settings!'] = 'Khôi phục lại cấu hình mặc định. Các thiết lập cho plugin sẽ bị mất!';
+$lang['Show menubar'] = 'Hiển thị thanh trình đơn';
+$lang['Updates'] = 'Bản cập nhật';
+$lang['Update in progress... Please wait.'] = 'Đang tiến hành cập nhật... Vui lòng đợi.';
+$lang['Ignore this update'] = 'Bỏ qua bản cập nhật này';
+$lang['Reset ignored updates'] = 'Cài đặt lại những bản cập nhật đã bỏ qua';
+$lang['Update All'] = 'Cập nhật Tất cả';
+$lang['ERROR'] = 'CÓ LỖI';
+$lang['Update Complete'] = 'Cập nhật Hoàn thành';
+$lang['Piwigo Update'] = 'Cập nhật Piwigo';
+$lang['Extensions Update'] = 'Cập nhật thành phần mở rộng';
+$lang['All extensions are up to date.'] = 'Tất cả thành phần mở rộng đều được cập nhật.';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Plugins sau đây có thể không tương thích với phiên bản mới của Piwigo:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Giao diện sau đây có thể không tương thích với phiên bản mới của Piwigo:';
+$lang['I decide to update anyway'] = 'Dù gì tôi cũng quyết định cập nhật';
+$lang['Update to Piwigo %s'] = 'Cập nhật Piwigo lên phiên bản %s';
+$lang['Two updates are available'] = 'Có hai bản cập nhật';
+$lang['This is a minor update, with only bug corrections.'] = 'Đây là bản nâng cấp phụ, với các bản sửa lỗi.';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = 'Đây là bản cập nhật chính, với nhiều <a href="%s">tính năng mới thú vị</a>.';
+$lang['Some themes and plugins may be not available yet.'] = 'Một số giao diện và plugins có thể chưa sử dụng được.';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Bạn có thể cập nhật trực tiếp Piwigo lên phiên bản %s, mà không cần phải nâng cấp lên phiên bản %s (khuyến cáo).';
+$lang['Save Template Directory'] = 'Lưu thư mục khuôn mẫu';
+$lang['Dump Database'] = 'Kết xuất Cơ sở dữ liệu';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Bao gồm dữ liệu lược sử (Cảnh báo: giới hạn bộ nhớ máy chủ có thể bị vượt quá)';
+$lang['Unable to dump database.'] = 'Không thể kết xuất cơ sở dữ liệu.';
+$lang['Some upgrades are available for extensions.'] = 'Một số bản nâng cấp có thể áp dụng được cho các thành phần mở rộng.';
+$lang['Ignore All'] = 'Bỏ qua Tất cả';
+$lang['Crop'] = 'Xén';
+$lang['Width'] = 'Chiều rộng';
+$lang['Height'] = 'Chiều cao';
+$lang['Follow Orientation'] = 'Định hướng Dõi theo';
+$lang['Graphics Library'] = 'Thư viện Đồ họa';
+$lang['Activate icon "new" next to albums and pictures'] = 'Kích hoạt biểu tượng "ảnh mới" kế bên albums ảnh và hình';
+$lang['Add a criteria'] = 'Thêm một tiêu chí';
+$lang['Default photos order'] = 'Thứ tự ảnh mặc định';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Bạn không thể định ra một thứ tự ảnh mặc định vì đã có một thiết lập tùy chọn trong cấu hình cục bộ.';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Bạn đã định ra <i>$conf[\'order_by\']</i> trong tệp tin cấu hình cục bộ của bạn, tham số này không được chấp nhận, hãy xóa bỏ hoặc đổi tên trong mục <i>$conf[\'order_by_custom\']</i> !';
+$lang['Average rate'] = 'Xếp hạng trung bình';
+$lang['Rate'] = 'Xếp hạng';
+$lang['... or '] = '... hoặc ';
+$lang['Create'] = 'Khởi tạo';
+$lang['Start Upload'] = 'Bắt đầu Tải lên';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = 'Bạn hiện đang dùng Flash Uploader. Nếu có trục trặc? Thì dùng <a href="%s">Web Uploader</a> thay thế.';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = 'Bạn hiện đang dùng Browser uploader. Hãy dùng <a href="%s">Flash uploader</a> thay thế.';
+$lang['Maximum file size: %sB.'] = 'Kích thước file lớn nhất: %sB.';
+$lang['Allowed file types: %s.'] = 'Loại file cho phép dùng: %s.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Độ phân giải lớn nhất ước chừng: %dM pixels (đó là %dx%d pixels).';
+$lang['Manage Permissions'] = 'Quản lý Quyền Hạn';
+$lang['Learn more'] = 'Tìm hiểu thêm';
+$lang['Photo %s of %s'] = 'Ảnh %s của %s';
+$lang['show details'] = 'hiện chi tiết';
+$lang['hide details'] = 'ẩn chi tiết';
+$lang['Merge tags'] = 'Sáp nhập nhãn';
+$lang['Select the destination tag'] = 'Chọn nhãn đích';
+$lang['(this tag will be deleted)'] = '(nhãn này sẽ bị xóa)';
+$lang['Confirm merge'] = 'Xác nhận sáp nhập';
+$lang['Merge selected tags'] = 'Sáp nhập những thẻ được chọn';
+$lang['No destination tag selected'] = 'Không có nhãn đích nào được chọn';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = 'Nhãn <em>%s</em> được sáp nhập vào nhãn <em>%s</em>';
+$lang['Select at least two tags for merging'] = 'Chọn ít nhất hai nhãn để sáp nhập';
+$lang['Select an album'] = 'Chọn một album ảnh';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Theo mặc định, Piwigo sẽ tạo ra một kích thước web từ ảnh định dạng cao của bản.';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Nếu không có định dạng cao nào và nếu kích thước web hiện tại lớn hơn kích thước đã điều chỉnh, Piwigo sẽ chuyển nó thành định dạng cao và tạo ra một ảnh có kích thước web đã thu nhỏ từ ảnh gốc.';
+$lang['An error has occured during upgrade.'] = 'Có một lỗi xuất hiện trong quá trình nâng cấp.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = 'Có một lỗi xuất hiện trong quá trình trích xuất tệp tin. Vui lòng kiểm tra quyền hiệu chỉnh tệp tin gói cài đặt Piwigo của bạn.<br><a href="%s">Click vào đây để xem lỗi.</a>.';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo không thể nhận được tệp tin nâng cấp từ  máy chủ';
+$lang['Zoom'] = 'Phóng to ảnh';
+$lang['Add to caddie'] = 'thêm vào caddie';
+$lang['%s has been successfully updated.'] = '%s cập nhật thành công.';
+$lang['Activate comments'] = 'Kích hoạt lời bình';
+$lang['Add tags'] = 'Bổ sung thẻ';
+$lang['Default comments order'] = 'Sắp xếp lời bình theo mặc định';
+$lang['Last import'] = 'Nhập sau cùng';
+$lang['Photo name'] = 'Tên ảnh';
+$lang['Predefined filter'] = 'Bộ lọc được định nghĩa trước';
+$lang['Send connection settings by email'] = 'Gởi thiết lập kết nối qua email';
+$lang['The original image quality must be a number between %d and %d'] = 'Chất lượng hình gốc phải là một số nằm giữa %d và %d';
+$lang['The original maximum height must be a number between %d and %d'] = 'Chiều cao gốc tối đa phải là một số nằm giữa %d và %d';
+$lang['The original maximum width must be a number between %d and %d'] = 'Chiều rộng gốc tối đa phải là một số nằm giữa %d và %d';
+$lang['With no album'] = 'Không kèm theo album ảnh';
+$lang['With no tag'] = 'Không kèm theo thẻ';
+$lang['With no virtual album'] = 'Không kèm theo album ảnh ảo';
+$lang['Resize after upload'] = 'Điều chỉnh kích thước sau khi gởi ảnh';
+$lang['Original Size'] = 'Kích thước gốc';
+$lang['A locked gallery is only visible to administrators'] = 'Thư viện ảnh đã khóa chỉ có thể xem được bởi Quản trị viên';
+$lang['Unlock gallery'] = 'Mở khóa thư viện ảnh';
+$lang['Gallery unlocked'] = 'Thư viện ảnh đã được mở khóa';
+$lang['Notify administrators when a comment is'] = 'Thông báo cho Quản trị viện khi có lời bình';
+$lang['modified'] = 'đã được hiệu chỉnh';
+$lang['pending validation'] = 'đang chờ xác nhận';
+$lang['Save visits in history for'] = 'Lưu giữ lượt khách trong bản ghi để';
+$lang['simple visitors'] = 'khách thăm quan bình thường';
+$lang['registered users'] = 'người dùng đã đăng ký';
+$lang['administrators'] = 'quản trị viên';
+$lang['This album contains %d photos, added on %s.'] = 'Album ảnh này có chứa %d ảnh, thêm vào %s.';
+$lang['This album contains %d photos, added between %s and %s.'] = 'Album ảnh này có chứa %d ảnh, thêm vào từ %s đến %s.';
+$lang['This album contains no photo.'] = 'Album ảnh này không chứa ảnh nào.';
+$lang['Not cropped correctly?'] = 'Ảnh không được cắt chính xách?';
+$lang['Center of interest'] = 'Tâm điểm chú ý';
+$lang['Move to album'] = 'Chuyển đến album';
+$lang['You can activate only one mobile theme.'] = 'Bạn chỉ có thể một giao diện cho phiên bản di động.';
+$lang['Automatic sort order'] = 'Tự động sắp xếp vị trí';
+$lang['apply automatic sort order'] = 'áp dụng sắp xếp vị trí tự động';
+$lang['Save manual order'] = 'Lưu vị trí sắp xếp thủ công';
+$lang['cancel manual order'] = 'hủy vị trí sắp xếp thủ công';
+$lang['Cancel'] = 'Hủy bỏ';
+$lang['List'] = 'Dach sách';
+$lang['Web Form'] = 'Mẫu Web';
+$lang['Applications'] = 'Các ứng dụng';
+$lang['Available versions for'] = 'Những phiên bản có thể dùng được cho';
+$lang['Available on'] = 'Có thể dùng được vào';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Phiên bản Piwigo cho iOS (iPhone, iPad, iPod Touch)';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Phiên bản Piwigo cho iOS</em> ứng dụng cho phép bạn kết nối Piwigo của mình từ iPhone, iPad hoặc iPod Touch, tạo albums ảnh và tải lên máy chủ lưu trữ ảnh ngay lập tức.';
+$lang['Piwigo for Android'] = 'Phiên bản Piwigo cho Android';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Phiên bản Piwigo cho  Android</em> ứng dụng cho phép bạn kết nối Piwigo của mình từ điện thoại chạy Android hoặc máy tính bảng, tạo albums ảnh và tải lên máy chủ lưu trữ ảnh ngay lập tức.';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Publish của Piwigo cho Lightroom';
+$lang['%d day'] = '%d ngày';
+$lang['%d days'] = '%d ngày';
+$lang['%d hour'] = '%d giờ';
+$lang['%d hours'] = '%d giờ';
+$lang['%d minute'] = '%d phút';
+$lang['%d minutes'] = '%d phút';
+$lang['%d month'] = '%d tháng';
+$lang['%d months'] = '%d tháng';
+$lang['%d physical'] = ' %d vật lý';
+$lang['%d physicals'] = ' %d vật lý';
+$lang['%d second'] = '%d giây';
+$lang['%d seconds'] = '%d giây';
+$lang['%d week'] = '%d tuần';
+$lang['%d weeks'] = '%d tuần';
+$lang['%d year'] = '%d năm';
+$lang['%d years'] = '%d năm';
+$lang['%s ago'] = 'cách đây %s';
+$lang['%s in the future'] = '%s trong tương lai';
+$lang['%u users have automatic permission because they belong to a granted group.'] = 'có %u người dùng được tự động cấp quyền bởi vì họ nằm trong nhóm đã được xác nhận.';
+$lang['add a new watermark'] = 'thêm vào một hình mờ';
+$lang['Added by %s'] = 'Được thêm bởi %s';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom là một phần mềm nhiếp ảnh được thiết kế để quản lý ảnh kỹ thuật số với số lượng lớn thực hiện các chế tác về sản xuất.';
+$lang['any visitor can see this album'] = 'bất kỳ người nào cũng có thể xem được album này';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture là một công cụ  mạnh dùng để làm mịn ảnh và quản lý thư viện ảnh lớn trên nền Mac.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture được thiết kế cho nhiếp ảnh gia chuyên nghiệp với ứng dụng iPhoto đơn giản.';
+$lang['Apply watermark if height is bigger than'] = 'Gắn hình mờ nếu chiều cao ảnh lớn hơn';
+$lang['Apply watermark if width is bigger than'] = 'Gắn hình mờ nếu chiều rộng ảnh lớn hơn';
+$lang['between %d and %d pixels'] = 'giữa khoảng %d và %d pixels';
+$lang['between %.2f and %.2f'] = 'giữa khoảng %.2f và %.2f';
+$lang['bottom left corner'] = 'góc trái phía dưới';
+$lang['bottom right corner'] = 'góc phải phía dưới';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Theo mặc định, trung tâm của sự chú ý được đặt vào giữa bức ảnh.';
+$lang['create a new site'] = 'tạo ra một site mới';
+$lang['custom'] = 'Tùy chỉnh';
+$lang['Delete multiple size images'] = 'Xóa những hình đa kích cỡ';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam là một phần mềm quản lý ảnh kỹ thuật số miễn phí và tiên tiến cho các hệ điều hành Linux, Windows và MacOSX.';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam được thiết kế cho các nhiếp ảnh gia trong việc duyệt ảnh, quản lý ảnh, biên tập, cải tiến chất lượng ảnh, tổ chức và chia sẻ ảnh.';
+$lang['Duplicate selected tags'] = 'Nhân đôi thẻ đã chọn';
+$lang['Duplicate'] = 'Nhân đôii';
+$lang['Edit photo'] = 'Chỉnh sửa ảnh';
+$lang['Features include gallery browsing, album creation and photo upload.'] = 'Những tính năng gồm có duyệt thư viện ảnh, tạo album ảnh và tải ảnh.';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Đối với ảnh điều chỉnh kích thước bằng cách xén ảnh, như "Hình vuông", Piwigo sẽ cố tập trung phần nổi bật nhất vào ngay trong ảnh.';
+$lang['Generate multiple size images'] = 'Tạo ra những ảnh đa kích cỡ';
+$lang['Groups and users'] = 'Nhóm người dùng và người dùng';
+$lang['include photos with lower privacy level'] = 'bao gồm những ảnh với múc độ riêng tư thấp';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto là chương trình quản lý ảnh mặc định trong MacOSX. Plugin xuất ảnh của Piwwigo cho phép bạn tạo ra album mới và xuất ảnh trực tiếp từ iPhoto đến thư viện ảnh Piwigocủa bạn.';
+$lang['Landscape'] = 'Phong cảnh';
+$lang['Manage photos'] = 'Quản lý ảnh';
+$lang['Manage the members'] = 'Quản lý thành viên';
+$lang['Merge selected groups'] = 'Trộn chung các nhóm được chọn';
+$lang['middle'] = 'giữa';
+$lang['Minimum width'] = 'Bề rộng tối thiểu';
+$lang['Minimum height'] = 'Chiều cao tối thiểu';
+$lang['Multiple Size'] = 'Đa kích thước';
+$lang['Name of the duplicate'] = 'Tên của phần trùng lặp';
+$lang['No group is permitted to see this private album'] = 'Không nhóm nào được phép xem album loại riêng tư';
+$lang['No group selected, no action possible.'] = 'Không nhóm nào được chọn, không thể thực thi được tác vụ nào.';
+$lang['No members to manage'] = 'Không có thành viên nào để quản lý';
+$lang['No order field selected'] = 'Không có tham số vị trí nào được chọn';
+$lang['Number of albums per page'] = 'Số album ảnh trên một trang';
+$lang['Numeric identifier : %d'] = 'Ký hiệu nhận dạng số : %d';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Trong Linux, đơn giản chỉ cài đặt Shotwell bằng ứng dụng quản lý gói cài đặt và kích hoạt tùy chọn xuất bản ảnh Piwigo.';
+$lang['Opacity'] = 'Làm mờ';
+$lang['Original file : %s'] = 'Tệp tin gốc : %s';
+$lang['Panorama'] = 'Toàn cảnh';
+$lang['Permission granted for groups'] = 'Quyền hạn được cấp cho nhóm';
+$lang['Permission granted for users'] = 'Quyền hạn được cấp cho người dùng';
+$lang['Permission management'] = 'Quản lý quyền hạn';
+$lang['Photo sizes with crop'] = 'Ảnh được điều chỉnh kích cỡ bằng cách xén ảnh';
+$lang['Piwigo export plugin for Aperture'] = 'Plugin xuất ảnh của Piwigo cho Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Plugin xuất ảnh của Piwigo cho iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'Plugin xuất ảnh của Piwigo cho digiKam';
+$lang['Piwigo publish plugin for Shotwell'] = 'Plugin xuất ảnh của Piwigo cho Shotwell';
+$lang['Please select at least two groups'] = 'Hãy chọn ít nhất 2 nhóm';
+$lang['Portrait'] = 'Chân dung';
+$lang['Ratio'] = 'Tỉ lệ';
+$lang['Rename'] = 'Đổi tên';
+$lang['Select a file'] = 'Chọn một tệp tin';
+$lang['Select a zone with your mouse to define a new center of interest.'] = 'Chọn một vùng bằng chuột để vạch ra tâm điểm của sự chú ý.';
+$lang['Select groups...'] = 'Chọn nhóm...';
+$lang['Select users...'] = 'Chọn người dùng...';
+$lang['Sharpen'] = 'Độ nét';
+$lang['Source tag'] = 'Thẻ gốc';
+$lang['Tag "%s" is now a duplicate of "%s"'] = 'Thẻ "%s" giờ là bản sao của thẻ "%s"';
+$lang['The center of interest is the most meaningful zone in the photo.'] = 'Tâm điểm của sự chú ý là phần có ý nghĩa nhất của bức ảnh.';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Kích thước ảnh sẽ bị giảm xuống %dx%d pixels.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Plugin xuất ảnh của Piwigo cho phép bạn tạo ra albums ảnh và xuất hình.';
+$lang['There is no group in this gallery.'] = 'Không có nhóm nào trong thư viện ảnh này.';
+$lang['This group will be set to default'] = 'Nhóm này sẽ được dùng mặc định';
+$lang['This group will be unset to default'] = 'Nhóm này sẽ không còn được dùng mặc định nữa';
+$lang['top left corner'] = 'góc trái trên cùng';
+$lang['top right corner'] = 'góc phải trên cùng';
+$lang['Type here the name of the new group'] = 'Nhập tên của nhóm mới ở đây';
+$lang['View in gallery'] = 'Xem trong thư viện ảnh';
+$lang['Visited %d times'] = 'Đã được xem %d lần';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = 'khách thăm quan cần phải đăng nhập và được phân quyền phù hợp để xem album ảnh này';
+$lang['Watermark'] = 'Ảnh mờ';
+$lang['X Position'] = 'Vị trí X';
+$lang['X Repeat'] = 'Lặp lại X';
+$lang['Y Position'] = 'Vị trí Y';
+$lang['Purge user cache'] = 'Lọc bộ nhớ đệm của người dùng';
+
+$lang['Posted %s on %s'] = 'Gửi %s vào %s';
+$lang['Rated %d times, score : %.2f'] = 'Đã được đánh giá %d lần, điểm số : %.2f';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client cho Android) là một phần mềm máy khách Piwigo mã mở (GPL v3)cho nền tảng Android.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Đổi kích thước sau khi tải lên bị vô hiệu vì sử dụng thư viện đồ họa GD';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell là một trình quản lý ảnh số mã mở và là trình quản lý ảnh mặc định trong Ubuntu và Fedora.';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo phát hành các plug-in cho phép đồng bộ hóa và xuất trực tiếp các ảnh từ Lightroom vào trong thư viện ảnh Piwigo.';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Để xuất các ảnh từ digiKam vào Piwigo, đơn giản hãy cài đặt digiKam và Kipi-plugins.';
+$lang['Select at least one tag'] = 'Hãy chọn ít nhất một tag';
+$lang['Basic settings'] = 'Thiết lập cơ bản';
+$lang['General'] = 'Tổng quát';
+$lang['Mail theme'] = 'Chủ đề mail';
+$lang['%d of %d users selected'] = '%d trong số %d người dùng được chọn';
+$lang['(filtered from %s total users)'] = '(lọc từ %s tổng số người dùng)';
+$lang['All %d users are selected'] = 'Tất cả %d người dùng được chọn';
+$lang['Change password'] = 'Đổi mật khẩu';
+$lang['Change username'] = 'Đổi tên người dùng';
+$lang['Last visit on %s, %s.'] = 'Xem lần cuối vào lúc %s, %s.';
+$lang['Loading...'] = 'Đang tải...';
+$lang['No matching user found'] = 'Không tìm thấy người dùng nào phù hợp';
+$lang['No user selected of %d users'] = 'Không có người dùng nào được chọn trong số %d người dùng';
+$lang['No user selected, no action possible.'] = 'Không có người dùng nào được chọn nên không thể làm tiếp';
+$lang['Password updated'] = 'Mật khẩu đã được cập nhật';
+$lang['Registered on %s, %s.'] = 'Đã đăng ký vào lúc %s, %s.';
+$lang['Show %s users'] = 'Hiển thị %s người dùng';
+$lang['Showing %s to %s of %s users'] = 'Hiển thị %s đến %s trong %s người dùng';
+$lang['Update user'] = 'Cập nhật người dùng';
+$lang['User %s added'] = 'Người dùng %s đã được thêm';
+$lang['User %s updated'] = 'Người dùng %s đã được cập nhật';
+$lang['Users modified'] = 'Người dùng đã được chỉnh sửa';
+$lang['on the %d selected users'] = 'trên %d người dùng được chọn';
+?>
Index: /tags/2.6.0RC1/language/vi_VN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/common.lang.php	(revision 25596)
@@ -0,0 +1,422 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: Tiếng Việt [VN]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=437
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = 'Tiếng Việt';
+$lang_info['country'] = 'Việt Nam';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'vn';
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%d Kb';
+$lang['%d album updated'] = '%d đề mục đã được cập nhật';
+$lang['%d albums updated'] = '%d đề mục đã được cập nhật';
+$lang['%d comment to validate'] = '%d lời bình cần xác nhận';
+$lang['%d comments to validate'] = '%d lời bình cần xác nhận';
+$lang['%d new comment'] = '%d lời bình mới';
+$lang['%d new comments'] = '%d lời bình mới';
+$lang['%d comment'] = '%d lời bình';
+$lang['%d comments'] = '%d lời bình';
+$lang['%d hit'] = '%d lần xem';
+$lang['%d hits'] = '%d lần xem';
+$lang['%d new photo'] = '%d hình mới';
+$lang['%d new photos'] = '%d hình mới';
+$lang['%d new user'] = '%d thành viên mới';
+$lang['%d new users'] = '%d thành viên mới';
+$lang['About'] = 'Thông tin về Piwgo';
+$lang['All tags'] = 'Tất cả các tags';
+$lang['Any tag'] = 'Tất cả các tag';
+$lang['At least one listed rule must be satisfied.'] = 'Ít nhất một điều khoản nêu trên phải được đáp ứng.';
+$lang['Author'] = 'Tác giả';
+$lang['Albums'] = 'Đề mục';
+$lang['Album'] = 'Đề mục';
+$lang['Close this window'] = 'Đóng';
+$lang['Complete RSS feed (photos, comments)'] = 'Cung cấp bản tin RSS đầy đủ (gồm hình ảnh và lời bình)';
+$lang['Confirm Password'] = 'Xác nhận lại mật khẩu';
+$lang['Connection settings'] = 'Thiết lập cài đặt';
+$lang['Login'] = 'Đăng nhập';
+$lang['Contact webmaster'] = 'Liên hệ với Quản trị';
+$lang['Create a new account'] = 'Tạo tài khoản mới';
+$lang['Created on'] = 'Khởi tạo vào';
+$lang['Creation date'] = 'Ngày khởi tạo';
+$lang['Current password is wrong'] = 'Mật khởi hiện tại bị sai';
+$lang['Dimensions'] = 'Độ phân giải';
+$lang['Display'] = 'Hiển thị';
+$lang['Each listed rule must be satisfied.'] = 'Mỗi điều khoản nêu trên phải được đáp ứng.';
+$lang['Email address'] = 'Địa chỉ email';
+$lang['Enter your personnal informations'] = 'Nhập thông tin của bạn';
+$lang['Error sending email'] = 'Lỗi gởi email';
+$lang['File name'] = 'Tên file';
+$lang['File'] = 'Tệp tin';
+$lang['Filesize'] = 'Kích thước file';
+$lang['Filter and display'] = 'Lọc và hiển thị ảnh';
+$lang['Filter'] = 'Lọc';
+$lang['Forgot your password?'] = 'Bạn quên mật khẩu?';
+$lang['Go through the gallery as a visitor'] = 'Xem gallery như một khách thăm quan';
+$lang['Help'] = 'Trợ giúp';
+$lang['Identification'] = 'Định danh';
+$lang['Photos only RSS feed'] = 'Chỉ cung cấp hình ảnh trên bản tin RSS';
+$lang['Keyword'] = 'Từ khoá';
+$lang['Links'] = 'Liên kết';
+$lang['N/A'] = 'Không có';
+$lang['New on %s'] = 'hình mới ở %s';
+$lang['Notification'] = 'Thông báo';
+$lang['Number of items'] = 'Số lượng hình';
+$lang['Original dimensions'] = 'Độ phân giải gốc';
+$lang['Password forgotten'] = 'Quên mật khẩu';
+$lang['Password'] = 'Mật khẩu';
+$lang['Post date'] = 'Ngày gởi hình';
+$lang['Posted on'] = 'Gởi vào';
+$lang['Profile'] = 'Hồ sơ';
+$lang['Quick connect'] = 'Kết nối nhanh';
+$lang['RSS feed'] = 'Bản tin RSS';
+$lang['Register'] = 'Đăng ký';
+$lang['Registration'] = 'Mục đăng ký';
+$lang['Related tags'] = 'Tag liên quan';
+$lang['Reset'] = 'Làm lại';
+$lang['Retrieve password'] = 'Nhận lại mật khẩu';
+$lang['Search rules'] = 'Điều khoản tìm kiếm';
+$lang['Search tags'] = 'Tag tìm kiếm';
+$lang['Search'] = 'Tìm kiếm';
+$lang['display available tags'] = 'Xem các tag được dùng';
+$lang['Since'] = 'Từ';
+$lang['Sort by'] = 'Sắp xếp theo';
+$lang['Sort order'] = 'Vị trí sắp xếp';
+$lang['Tag'] = 'Thẻ';
+$lang['Tags'] = 'Thẻ';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Bản thông báo bản tin RSS cung cấp thông báo về tin tức và cập nhật trên trang này bao gồm: hình ảnh mới, đề mục được cập nhật và lời bình mới. Hãy sử dụng trình đọc tin RSS.';
+$lang['Unknown feed identifier'] = 'Nguồn cung cấp tin không xác nhận';
+$lang['User comments'] = 'Bình luận của thành viên';
+$lang['Username'] = 'Tên đăng nhập';
+$lang['Visits'] = 'Thăm quan';
+$lang['Webmaster'] = 'Quản trị';
+$lang['Week %d'] = 'Tuần %d';
+$lang['About Piwigo'] = 'Thông tin về Piwigo';
+$lang['You are not authorized to access the requested page'] = 'Bạn không được phép truy cập vào trang này';
+$lang['add this photo to your favorites'] = 'thêm hình này vào danh sách ưa thích của mình';
+$lang['Administration'] = 'Điều hành viên';
+$lang['all'] = 'tất cả';
+$lang['ascending'] = 'từ dưới lên';
+$lang['author(s) : %s'] = 'tác giả: %s';
+$lang['Expand all albums'] = 'Mở rộng các đề mục';
+$lang['posted after %s (%s)'] = 'gởi sau %s (%s)';
+$lang['posted before %s (%s)'] = 'gởi trước %s (%s)';
+$lang['posted between %s (%s) and %s (%s)'] = 'gởi vào giữa %s (%s) và %s (%s)';
+$lang['posted on %s'] = 'gởi vào %s';
+$lang['Best rated'] = 'Hình được đánh giá tốt nhất';
+$lang['display best rated photos'] = 'hiển thị các hình được đánh giá tốt nhất';
+$lang['Calendar'] = 'Xem hình theo lịch';
+$lang['All'] = 'Tất cả';
+$lang['display each day with photos, month per month'] = 'hiển thị mỗi ngày kèm hình ảnh, tháng trên tháng';
+$lang['View'] = 'Xem';
+$lang['chronology_monthly_calendar'] = 'Lịch hằng tháng';
+$lang['chronology_monthly_list'] = 'Danh sách hằng tháng';
+$lang['chronology_weekly_list'] = 'Danh sách hằng tuần';
+$lang['Click here if your browser does not automatically forward you'] = 'Nhắp chuột vào đây nếu trình duyệt web không tự động chuyển trang';
+$lang['comment date'] = 'ngày bình luận';
+$lang['Comment'] = 'Bình luận';
+$lang['Your comment has been registered'] = 'Lời bình của bạn đã được đăng ký';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Hệ thống bảo vệ DDOS: vui lòng đợi trong giây lát trước khi gởi lời bình khác';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Lời bình của bạn KHÔNG thể gửi được vì nó không đáp ứng được các điều khoản';
+$lang['An administrator must authorize your comment before it is visible.'] = 'Lời bình của bạn phải được quản trị viên xác nhận trước khi nó hiển thị trên gallery.';
+$lang['This login is already used by another user'] = 'Tài khoản đã được đăng ký trước đây';
+$lang['Comments'] = 'Lời bình';
+$lang['Add a comment'] = 'Thêm lời bình';
+$lang['created after %s (%s)'] = 'đã tạo sau %s (%s)';
+$lang['created before %s (%s)'] = 'đã tạo trước %s (%s)';
+$lang['created between %s (%s) and %s (%s)'] = 'đã tạo giữa %s (%s) và %s (%s)';
+$lang['created on %s'] = 'đã tạo vào %s';
+$lang['Customize'] = 'Tuỳ chọn';
+$lang['Your Gallery Customization'] = 'Tuỳ chọn cho Gallery của bạn ';
+$lang['day'][0] = 'Chủ Nhật';
+$lang['day'][1] = 'Thứ Hai';
+$lang['day'][2] = 'Thứ Ba';
+$lang['day'][3] = 'Thứ Tư';
+$lang['day'][4] = 'Thứ Năm';
+$lang['day'][5] = 'Thứ Sáu';
+$lang['day'][6] = 'Thứ Bảy';
+$lang['Default'] = 'Mặc định';
+$lang['delete this photo from your favorites'] = 'xoá hình này từ danh sách ưa thích của bạn';
+$lang['Delete'] = 'Xoá bỏ';
+$lang['descending'] = 'từ trên xuống';
+$lang['Download'] = 'Tải về';
+$lang['Download this file'] = 'tải về file này';
+$lang['edit'] = 'biên tập';
+$lang['wrong date'] = 'sai ngày tháng';
+$lang['excluded'] = 'bao gồm';
+$lang['Your favorites'] = 'Mục ưa thích của tôi';
+$lang['display your favorites photos'] = 'hiển thị những hình ưa thích của tôi';
+$lang['Favorites'] = 'Danh sách ưa thích';
+$lang['First'] = 'Đầu tiên';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Gallery đã tạm khoá để bảo trì định kỳ. Mời bạn ghé lại sau.';
+$lang['Page generated in'] = 'Trang được tạo trong vòng';
+$lang['guest'] = 'khách';
+$lang['Hello'] = 'Xin chào';
+$lang['available for administrators only'] = 'chỉ dành cho Quản trị';
+$lang['display this album'] = 'hiện hình này ở phía trên của đề mục';
+$lang['display last user comments'] = 'Xem bình luận gần nhất';
+$lang['customize the appareance of the gallery'] = 'tuỳ chọn giao diện hiển thị của gallery';
+$lang['search'] = 'tìm kiếm';
+$lang['Home'] = 'Trang chủ';
+$lang['in this album'] = 'trong mục này';
+$lang['in %d sub-album'] = 'trong %d mục nhỏ';
+$lang['in %d sub-albums'] = 'trong %d các mục nhỏ';
+$lang['included'] = 'bao gồm';
+$lang['Invalid password!'] = 'Sai mật khẩu!';
+$lang['Language']='Ngôn ngữ';
+$lang['last %d days'] = '%d ngày cuối';
+$lang['Last'] = 'Cuối';
+$lang['Logout'] = 'Thoát';
+$lang['obligatory'] = 'Phần bắt buộc';
+$lang['display a calendar by creation date'] = 'hiển thị lịch theo ngày gởi hình';
+$lang['display all photos in all sub-albums'] = 'hiển thị mọi thành phần có trong tất cả mục nhỏ';
+$lang['return to normal view mode'] = 'chuyện lại chế độ xem hình bình thường';
+$lang['display a calendar by posted date'] = 'hiển thị lịch theo ngày gởi hình';
+$lang['month'][10] = 'Tháng Mười';
+$lang['month'][11] = 'Tháng Mười Một';
+$lang['month'][12] = 'Tháng Mười Hai';
+$lang['month'][1] = 'Tháng Giêng';
+$lang['month'][2] = 'Tháng Hai';
+$lang['month'][3] = 'Tháng Ba';
+$lang['month'][4] = 'Tháng Tư';
+$lang['month'][5] = 'Tháng Năm';
+$lang['month'][6] = 'Tháng Sáu';
+$lang['month'][7] = 'Tháng Bảy';
+$lang['month'][8] = 'Tháng Tám';
+$lang['month'][9] = 'Tháng Chín';
+$lang['Most visited'] = 'Hình được xem nhiều nhất';
+$lang['display most visited photos'] = 'hiển thị những hình được xem nhiều nhất';
+$lang['Unknown identifier'] = 'Định danh không xác định';
+$lang['New password'] = 'Mật khẩu mới';
+$lang['Rate this photo'] = 'Đánh giá hình này';
+$lang['Next'] = 'Tiếp theo';
+$lang['no rate'] = 'không có đánh giá';
+$lang['Photos posted within the last %d day.'] = 'Thành phần được gởi trong vòng %d ngày cuối.';
+$lang['Photos posted within the last %d days.'] = 'Các thành phần được gởi trong %d ngày cuối.';
+$lang['password updated'] = 'mật khẩu đã được cập nhật';
+$lang['Recent period must be a positive integer value'] = 'Chu kỳ gần đây phải có giá trị là số nguyên dương';
+/* DEPRECATED USED IN comments.php FOR image_id ? */ $lang['photo'] = 'hình ảnh';
+$lang['Click on the photo to see it in high definition'] = 'Click lên hình để xem ở định dạng cao';
+$lang['Show file metadata'] = 'Hiển thị metadata của hình';
+$lang['Powered by'] = 'Sản phẩm của';
+$lang['Preferences'] = 'Tuỳ chọn thêm';
+$lang['Previous'] = 'Trước';
+$lang['Random photos'] = 'Hình ngẫu nhiên';
+$lang['display a set of random photos'] = 'hiển thị một bộ các hình ngẫu nhiên';
+$lang['Recent albums'] = 'Các đề mục gần đây';
+$lang['display recently updated albums'] = 'hiển thị các đề mục gần đây';
+$lang['Recent period'] = 'Chu kỳ gần đây';
+$lang['Recent photos'] = 'Các hình gần đây';
+$lang['display most recent photos'] = 'hiển thị các hình gần đây nhất';
+$lang['Redirection...'] = 'Chuyển trang...';
+$lang['Please, enter a login'] = 'Vui lòng nhập tên tài khoản';
+$lang['login mustn\'t end with a space character'] = 'tên tài khoản không được có ký tự trắng sau cùng';
+$lang['login mustn\'t start with a space character'] = 'tên tài khoản không được có ký tự trắng đầu tiên';
+$lang['this login is already used'] = 'tài khoản này đã được đăng ký trước đó';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'địa chỉ email phải có dạng xxx@yyy.eee (ví dụ : jack@altern.org)';
+$lang['Auto login'] = 'Tự động đăng nhập';
+$lang['remove this tag from the list'] = 'bỏ tag này khỏi danh sách';
+$lang['representative'] = 'đại diện';
+$lang['Search for Author'] = 'Tìm kiếm theo tác giả';
+$lang['Search in albums'] = 'Tìm kiếm trong các đề mục';
+$lang['Search by date'] = 'Tìm kiếm theo ngày tháng';
+$lang['Date'] = 'Ngày tháng';
+$lang['End-Date'] = 'Ngày kết thúc';
+$lang['Kind of date'] = 'Kiểu ngày tháng';
+$lang['Search for words'] = 'Tìm kiếm theo từ';
+$lang['Search for all terms'] = 'Tìm kiếm tất cả các mục ';
+$lang['Search for any term'] = 'Tìm kiếm mọi mục';
+$lang['Empty query. No criteria has been entered.'] = 'Truy vấn xác định. Không có từ khoá nào được nhập';
+$lang['Search results'] = 'Kết quả tìm kiếm';
+$lang['Search in sub-albums'] = 'Tìm kiếm trong các mục nhỏ';
+$lang['searched words : %s'] = 'những từ khoá được tìm kiếm : %s';
+$lang['Contact'] = 'Liên hệ';
+$lang['set as album representative'] = 'đặt như là một đề mục đại diện';
+$lang['Show number of comments'] = 'Hiện số lần hình luận';
+$lang['Show number of hits'] = 'Hiện số lần xem';
+$lang['slideshow'] = 'trình chiéu';
+$lang['stop the slideshow'] = 'dừng trình chiếu';
+$lang['Specials'] = 'Đặc biệt';
+$lang['SQL queries in'] = 'Truy vấn SQL trong';
+$lang['display only recently posted photos'] = 'chỉ hiển thị những hình vừa được gởi';
+$lang['return to the display of all photos'] = 'trở lại hiển thị tất cả các hình';
+$lang['the beginning'] = 'bắt đầu';
+$lang['Thumbnails'] = 'Hình nhỏ';
+$lang['Menu'] = 'Trình đơn';
+$lang['A comment on your site'] = 'Một lời bình trên trang của bạn';
+$lang['today'] = 'hôm nay';
+$lang['Update your rating'] = 'Cập nhật xếp hạng của bạn';
+$lang['the username must be given'] = 'Phải có tên của thành viên';
+$lang['useful when password forgotten'] = 'có ích khi bị mất mật khẩu';
+$lang['Quick search'] = 'Tìm kiếm nhanh';
+$lang['Connected user: %s'] = 'Thành viên kết nối: %s';
+$lang['IP: %s'] = 'Địa chỉ IP: %s';
+$lang['Browser: %s'] = 'Trình duyệt: %s';
+$lang['Author: %s'] = 'Tác giả: %s';
+$lang['Comment: %s'] = 'Bình luận: %s';
+$lang['Comment by %s'] = 'Bình luận bởi %s';
+$lang['User: %s'] = 'Tài khoản: %s';
+$lang['Email: %s'] = 'Địa chỉ email: %s';
+$lang['Admin: %s'] = 'Quản trị: %s';
+$lang['Registration of %s'] = 'Mục đăng ký của %s';
+$lang['Album: %s'] = 'Đề mục: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Status xấu đối với thành viên đăng thuộc nhóm "khách", sử dụng status mặc định. Thông báo ngay cho Quản trị';
+$lang['this email address is already in use'] = 'đã có thành viên sử dụng địa chỉ email này';
+$lang['Album results for'] = 'Kết quả đề mục cho';
+$lang['Tag results for'] = 'Kết quả tag cho';
+$lang['from %s to %s'] = 'từ %s đến %s';
+$lang['Play of slideshow'] = 'Bật trình chiếu';
+$lang['Pause of slideshow'] = 'Tạm dừng trình chiếu';
+$lang['Repeat the slideshow'] = 'Lặp lại trình chiếu';
+$lang['Not repeat the slideshow'] = 'Không lặp lại trình chiếu';
+$lang['Reduce diaporama speed'] = 'Giảm tốc độ xem hình tự động';
+$lang['Accelerate diaporama speed'] = 'Tăng tốc độ xem hình tự động';
+$lang['Submit'] = 'Chấp nhận';
+$lang['Yes'] = 'Có';
+$lang['No'] = 'Không';
+$lang['%d photo']='%d hình';
+$lang['%d photos']='%d hình';
+$lang['%d photo is also linked to current tags'] = '%d hình được liên kết với tag hiện tại';
+$lang['%d photos are also linked to current tags'] = '%d hình được liên kết với tag hiện tại';
+$lang['display photos linked to this tag'] = 'Chỉ xem những hình liên kết với tag này';
+$lang['photos posted during the last %d days'] = 'hình được gởi trong vòng %d ngày cuối';
+$lang['Piwigo Help'] = 'Trợ giúp của Piwigo';
+$lang['Rank'] = 'Hạng';
+$lang['group by letters'] = 'phân nhóm theo ký tự';
+$lang['letters'] = 'ký tự';
+$lang['cloud'] = 'mây';
+$lang['Reset to default values'] = 'Thiết lập lại giá trị mặc định';
+$lang['delete all photos from your favorites'] = 'xoá tất cả hình từ danh sách ưa thích';
+$lang['Sent by'] = 'Được gởi bởi';
+$lang['Are you sure?'] = 'Bạn có chắc không?';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Cookies đã bị chặn lại hoặc không được trình duyệt web trên  máy bạn hỗ trợ. Bạn phải mở cookie để tiếp tục.';
+$lang['Edit a comment'] = 'Biên tập một lời bình';
+$lang['(!) This comment requires validation'] = '(!) Lời bình này yêu cầu sự xác nhận';
+$lang['Welcome'] = 'Xin chào';
+$lang['Welcome to your Piwigo photo gallery!'] = 'Chào mừng bạn đến gallery Piwigo trực tuyến của mình!';
+$lang['... or browse your empty gallery'] = '... hoặc duyệt gallery chưa có hình của bạn';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... hoặc vui lòng vô hiệu hóa thông điệp này, tôi tự tìm cách giải quyết riêng';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Xin chào %s, gallery Piwigo của bạn hiện tại vẫn chưa có tấm hình nào!';
+$lang['I want to add photos'] = 'Tôi muốn thêm hình vào gallery';
+$lang['Manage this user comment: %s'] = 'Quản lý lời bình của thành viên này: %s';
+$lang['Email address is missing. Please specify an email address.'] = 'Còn thiếu địa chỉ email. Vui lòng cho biết một địa chỉ email.';
+$lang['This author modified following comment:'] = 'Tác giả này đã soạn lại lời bình sau:';
+$lang['This author removed the comment with id %d'] = 'Tác giả này đã xóa bỏ lời bình có ID là %d';
+$lang['show tag cloud'] = 'hiển thị thẻ mây';
+$lang['html tags are not allowed in login'] = 'thẻ html không được phép dùng để đăng nhập';
+$lang['The number of photos per page must be a not null scalar'] = 'Số hình trên mỗi trang phải là số nguyên khác 0';
+$lang['Number of photos per page'] = 'Số hình trên mỗi trang';
+$lang['%d rates'] = '%d hạng';
+$lang['Rating score'] = 'Bảng xếp hạng';
+$lang['Invalid username or email'] = 'Tên người dùng hoặc địa chỉ email không hợp lệ';
+$lang['Password reset is not allowed for this user'] = 'Không được phép đặt lại mật khẩu cho người dùng này';
+$lang['User "%s" has no email address, password reset is not possible'] = 'Người dùng "%s" không có địa chỉ email, nên việc đặt lại mật khẩu là không thể được';
+$lang['Someone requested that the password be reset for the following user account:'] = 'Có người yêu cầu đặt lại mật khẩu cho những người dùng sau:';
+$lang['Username "%s" on gallery %s'] = 'Người dùng "%s" trên thư viện hình %s';
+$lang['To reset your password, visit the following address:'] = 'Để đặt lại mật khẩu, hãy vào những địa chỉ sau:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Nếu đây là do nhầm lẫn, thì chỉ việc bỏ qua bỏ qua email này và không có việc gì sẽ xảy ra.';
+$lang['Password Reset'] = 'Cài đặt lại mật khẩu';
+$lang['Check your email for the confirmation link'] = 'Kiểm tra email để nhận liên kết xác nhận';
+$lang['Invalid key'] = 'Key không hợp lệ';
+$lang['The passwords do not match'] = 'Mật khẩu không trùng';
+$lang['Your password has been reset'] = 'Mật khẩu của bạn đã được đặt lại';
+$lang['Return to home page'] = 'Trở lại trang chủ';
+$lang['Please enter your username or email address.'] = 'Vui lòng nhập tên người dùng và địa chỉ email.';
+$lang['You will receive a link to create a new password via email.'] = 'Bạn sẽ nhận được một liên kết để tạo mật khẩu mới qua email.';
+$lang['Username or email'] = 'Người dùng hoặc email';
+$lang['Change my password'] = 'Đổi mật khẩu của tôi';
+$lang['Enter your new password below.'] = 'Nhập mật khẩu mới của bạn ở dưới.';
+$lang['EXIF Metadata'] = 'Lý lịch dữ liệu EXIF';
+$lang['IPTC Metadata'] = 'Lý lịch dữ liệu IPTC';
+$lang['Edit'] = 'Biên tập';
+$lang['Hello %s,'] = 'Xin chào %s,';
+$lang['Send my connection settings by email'] = 'Gởi thiết lập kết nối của tôi qua email';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Đã đăng ký thành công, bạn sẽ nhận được ngay email kèm theo thiết lập kết nối. Xin chào mừng!';
+$lang['Username modification'] = 'Điều chỉnh tên đăng nhập';
+$lang['Your username has been successfully changed to : %s'] = 'Tên đăng nhập của bạn đã được đổi sang : %s thành công';
+$lang['square'] = 'Hình vuông';
+$lang['thumb'] = 'Hình thu nhỏ';
+$lang['small'] = 'Nhỏ';
+$lang['medium'] = 'Vừa';
+$lang['large'] = 'Lớn';
+$lang['xlarge'] = 'Rất lớn';
+$lang['xxlarge'] = 'Cực lớn';
+$lang['Original'] = 'Bản gốc';
+$lang['Thank you for registering at %s!'] = 'Cảm ơn bạn đã đăng ký tại %s!';
+$lang['Here are your connection settings'] = 'Đây là thiết lập kết nối của bạn';
+$lang['Password: %s'] = 'Mật khẩu: %s';
+$lang['Username: %s'] = 'Tên đăng nhập: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Nếu bạn nghĩ bạn đã nhận nhầm emai, vui lòng liên hệ với chúng tôi qua %s';
+$lang['Show oldest comments first'] = 'Hiển thị những lời bình trước nhất đầu tiên';
+$lang['Show latest comments first'] = 'Hiển thị những lời bình mới nhất đầu tiên';
+$lang['Photo sizes'] = 'Kích thước ảnh';
+$lang['View in'] = 'Xem ảnh ở';
+$lang['Mobile'] = 'Di động';
+$lang['2small'] = 'XXS - nhỏ';
+$lang['xsmall'] = 'XS - cực nhỏ';
+$lang['Desktop'] = 'Desktop';
+$lang['File name, A &rarr; Z'] = 'Tên tệp tin, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = 'Tên tệp tin, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = 'Tựa đề ảnh, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = 'Tựa đề ảnh, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = 'Ngày tháng khởi tạo, mới &rarr; cũ';
+$lang['Date created, old &rarr; new'] = 'Ngày tháng khởi tạo, cũ &rarr; mới';
+$lang['Date posted, new &rarr; old'] = 'Ngày tháng gởi ảnh, mới&rarr; cũ';
+$lang['Date posted, old &rarr; new'] = 'Ngày tháng gởi ảnh, cũ &rarr; mới';
+$lang['Rating score, high &rarr; low'] = 'Tỉ lệ xếp hạng, cao &rarr; thấp';
+$lang['Rating score, low &rarr; high'] = 'Tỉ lệ xếp hạng, thấp &rarr; cao';
+$lang['Visits, high &rarr; low'] = 'Số lần xem, cao &rarr; thấp';
+$lang['Visits, low &rarr; high'] = 'Số lần xem, thấp &rarr; cao';
+$lang['Numeric identifier, 1 &rarr; 9'] = 'Ký hiệu nhận dạng số học, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = 'Ký hiệu nhận dạng số học, 9 &rarr; 1';
+$lang['Manual sort order'] = 'Sắp xếp vị trí thủ công';
+
+$lang['%d rate'] = 'xếp hạng %d';
+$lang['Bad request'] = 'Yêu cầu không hợp lệ';
+$lang['Forbidden'] = 'Bị hạn chế truy cập';
+$lang['Page not found'] = 'Không tìm thấy trang';
+$lang['Permalink for album not found'] = 'Không tìm thấy liên kết cho album';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo gặp lỗi ngoài tầm kiểm soát';
+$lang['Requested album does not exist'] = 'Không có album như bạn yêu cầu';
+$lang['Requested tag does not exist'] = 'Không có tag như bạn yêu cầu';
+$lang['Email address is mandatory'] = 'Phải có địa chỉ email';
+$lang['Username is mandatory'] = 'Phải có tên người dùng';
+$lang['Website'] = 'Trang web';
+$lang['Your website URL is invalid'] = 'Địa chỉ trang web không bình thường';
+$lang['mandatory'] = 'bắt buộc';
+$lang['Email'] = 'Email';
+$lang['First Page'] = 'Trang đầu';
+$lang['Go back to the album'] = 'Quay trở lại album';
+$lang['Last Page'] = 'Trang cuối';
+$lang['Password is missing. Please enter the password.'] = 'Thiếu mật khẩu. Vui lòng nhập mật khẩu.';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Xác nhận mật khẩu bị thiếu. Vui lòng xác nhận lại mật khẩu đã chọn.';
+$lang['%d photos per page'] = '%d ảnh mỗi trang';
+$lang['Theme'] = 'Chủ đề';
+?>
Index: /tags/2.6.0RC1/language/vi_VN/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,23 @@
+<p>Một vài cách để thêm ảnh vào thư viện hình của bạn:</p>
+
+<ul>
+  <li><strong>Gởi trực tiếp</strong> từ trình duyệt của bạn là cách đơn giản và nhanh nhất. Nó phụ thuộc vào tính tương thích của trình duyệt và máy chủ web của bạn.
+ .Đối với một lượng ảnh lớn, hoặc trong trường hợp bạn sặp phải vấn đề nào đó thì bạn có thể thử những cách sau đây!</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">Vào mục Gởi trực tiếp</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> là một ứng dụng desktop, được cài vào máy của bạn. Kéo và thả ảnh vào cửa sổ của pLoader, click vào <em>"Gởi hình lên Piwigo"</em> và để pLoader thực hiện công việc. Bạn có thể tìm thấy các ứng dụng desktop khác như <strong>WinToPiwigo</strong> hoặc <strong>Digikam</strong> để xuất plugin sang Piwigo.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">Chuyển đến pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>Chuyển ảnh bằng FTP </strong> là cách được khuyến cáo nhất để thêm một số lượng lớn các bức ảnh với số lần click chuột ít nhất. Theo chỉ dẫn để chuẩn bị ảnh.
+  Cách gởi ảnh thông qua FTP này cho phép bạn điều khiển chính xác cơ cấu vật lý của những tấm ảnh trên máy chủ của bạn.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">Chuyển đến FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/vi_VN/help/index.php
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/help/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/help/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/vi_VN/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = 'Cài đặt';
+$lang['Basic configuration'] = 'Cấu hình cơ bản';
+$lang['Default gallery language'] = 'Ngôn ngữ hiển thị gallery mặc định';
+$lang['Database configuration'] = 'Cấu hình cơ sở dữ liệu';
+$lang['Admin configuration'] = 'Cấu hình Quản trị';
+$lang['Start Install'] = 'Bắt đầu Cài đặt';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Khách thăm quan gallery sẽ thấy được thông tin của Webmaster. Điều này cần thiết cho Quản trị Webmaster';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Kết nối thành công vào máy chủ, nhưng không thể kết nối vào cơ sở dữ liệu.';
+$lang['Can\'t connect to server'] = 'Không thể kết nối vào máy chủ';
+$lang['Host'] = 'Máy chủ MySQL';
+$lang['User'] = 'Người dùng';
+$lang['user login given by your host provider'] = 'thông tin đăng nhập của người dùng do nhà cung cấp máy chủ của của bạn đưa ra.';
+$lang['user password given by your host provider'] = 'mật khẩu người dùng do nhà cung cấp máy chủ của bạn đưa ra';
+$lang['Database name'] = 'Tên cơ sở dữ liệu';
+$lang['also given by your host provider'] = 'cũng được cấp bởi nhà cung cấp máy chủ';
+$lang['Database table prefix'] = 'Tiếp đầu ngữ của các bảng trong cơ sở dữ liệu';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'tên các bảng trong cơ sở dữ liệu sẽ được thêm vào đầu bằng tiếp đầu ngữ (giúp bạn quản lý các bảng trong cơ sở dữ liệu được tốt hơn)';
+$lang['enter a login for webmaster'] = 'nhập tên đăng nhập của Webmaster';
+$lang['webmaster login can\'t contain characters \' or "'] = 'đăng nhập của Webmaster không thể chứa các ký tự hoặc';
+$lang['please enter your password again'] = 'vui lòng nhập lại mật khẩu của bạn';
+$lang['Keep it confidential, it enables you to access administration panel'] = 'Bảo quản kỹ thông tin này, nó cho phép bạn truy cập vào Bảng điều khiển của Quản trị.';
+$lang['Password [confirm]'] = 'Mật khẩu [xác nhận]';
+$lang['verification'] = 'xác nhận';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = 'Cần trợ giúp ? Hãy gởi thắc mắc của bạn tại <a href="%s">diễn đàn của Piwigo</a>.';
+$lang['Visitors will be able to contact site administrator with this mail'] = 'Khách tham quan có thể liên lạc với Quản trị thông qua địa chỉ thư điện tử này.';
+$lang['PHP 5 is required'] = 'Phải có PHP 5 ';
+$lang['It appears your webhost is currently running PHP %s.'] = 'Do máy chủ web của bạn đang chạy phiên bản PHP  %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo sẽ thử chuyển cấu hình của bạn sang PHP 5 bằng cách tạo ra hoặc biên tập một file .htaccess.';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Chú ý rằng bạn có thể tự thay đổi cấu hình và khởi động lại Piwigo sau đó.';
+$lang['Try to configure PHP 5'] = ' Thử cấu hình PHP 5';
+$lang['Sorry!'] = 'Rất tiếc!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo không thể cấu hình cho PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Bạn nên yêu cầu hỗ trợ từ nhà cung cấp máy chủ và tìm hiểu xem nếu có thể tự chuyển được sang phiên bản PHP 5.";
+$lang['Hope to see you back soon.'] = 'Hi vọng nhận được phản hồi của bạn sớm.';
+$lang['Congratulations, Piwigo installation is completed'] = 'Xin chúc mừng, việc cài đặt Piwigo đã hoàn tất';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Một giải pháp khác là chép những dòng text trên và dán chúng vào tệp tin nằm vị trí "local/config/database.inc.php" (Cảnh báo: tệp tin database.inc.php chỉ có những nội dung trong phạm vi nhập text, không được thêm hàng hoặc ký tự nào khác)';
+$lang['Creation of config file local/config/database.inc.php failed.'] = 'Việc tạo ra tệp tin cấu hình local/config/database.inc.php đã bị lỗi.';
+$lang['Download the config file'] = 'Tải tệp tin cấu hình xuống';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Bạn có thể tải tệp tin cấu hình và upload nó vào thư mục local/config của thư mục cài đặt Piwigo.';
+$lang['Just another Piwigo gallery'] = 'Lại thêm một thư viện Piwigo nữa';
+$lang['Welcome to my photo gallery'] = 'Chào mừng bạn đến với thư viện hình của tôi';
+$lang['Welcome to your new installation of Piwigo!'] = 'Chào mừng bạn đến với bản cài đặt mới của Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Đừng do dự  thảo luận tại diễn đàn của chúng tôi để được trợ giúp: %s';
+$lang['localhost or other, supplied by your host provider'] = 'localhost hoặc tên máy chủ cấp bởi nhà cung cấp host';
+?>
Index: /tags/2.6.0RC1/language/vi_VN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tiếng Việt [VN]
Index: /tags/2.6.0RC1/language/vi_VN/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/vi_VN/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/vi_VN/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+// Vietnamese version is translated by Em Ku, Vietnam Piwigor!
+$lang['Upgrade'] = 'Nâng cấp';
+$lang['Upgrade from version %s to %s'] = 'Nâng cấp từ phiên bản %s lên phiên bản %s';
+$lang['Statistics'] = 'Thống kê';
+$lang['total upgrade time'] = 'tổng thời gian nâng cấp';
+$lang['total SQL time'] = 'tổng thời gian truy vấn SQL';
+$lang['SQL queries'] = 'Truy vấn SQL';
+$lang['Upgrade informations'] = 'Thông tin bản nâng cấp';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Chạy chế độ kiểm tra bảo trì trong mục [Administration>Tools>Maintenance] trong trường hợp bạn gặp lỗi.';
+$lang['Only administrator can run upgrade: please sign in below.'] = 'Chỉ có Quản trị mới có thể nâng cấp: vui lòng đăng nhập trước.';
+$lang['You do not have access rights to run upgrade'] = 'Bạn không có đủ quyền hạn để có thể nâng cấp hệ thống';
+$lang['All sub-albums of private albums become private'] = 'Tất cả các đề mục con của những đề mục riêng đều được gán thuộc tính riêng tư.';
+$lang['User permissions and group permissions have been erased'] = 'Sự cho phép người dùng và nhóm người dùng đã được xóa bỏ.';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Chỉ có hình thu nhỏ đứng trước và địa chỉ email của webmaster mới được lưu lại từ cấu hình của phiên bản cũ.';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = 'Trang này này nhằm mục đích nâng cấp cơ sở dữ liệu từ phiên bản Piwigo cũ của bạn lên phiên bản mới. Phần hỗ trợ nâng cấp hiểu rằng bạn đang sử dụng <strong>phiên bản %s</strong> (hoặc tương đương).';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Nhằm đề phòng, những plugins sau đây đã bị vô hiệu hóa. Bạn phải kiểm tra bản nâng cấp của plugin trước khi kích hoạt lại chúng:';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = 'Trong <i>%s</i>, trước <b>?></b>, chèn vào:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Như một biện pháp dự phòng lỗi, giao diện sau đây đã bị vô hiệu hóa. Bạn phải kiểm tra bản nâng cấp giao diện trước khi kích hoạt lại:';
+
+?>
Index: /tags/2.6.0RC1/language/zh_CN/about.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/about.html	(revision 25596)
@@ -0,0 +1,23 @@
+<p>此相册画廊基于Piwigo.</p>
+
+<p>Piwigo是一个网络相册画廊软件，她由一群活跃的社区用户和开发者创建。
+制作Piwigo的自定义扩展非常容易。使Piwigo更为锦上添花的是，
+她还是一个完全免费和开源的项目。</p>
+
+<p id="linkToPiwigo"><a href="http://cn.piwigo.org">浏览Piwigo网站</a></p>
+
+<p>以下是Piwigo的中文翻译与维护人员(以字母排序):
+
+<ul>
+	<li><a href="http://cn.piwigo.org/forum/profile.php?id=17053">dennisyan</a></li>
+     <li><a href="http://cn.piwigo.org/forum/profile.php?id=5407">eliotpoon</a></li>
+     <li><a href="http://cn.piwigo.org/forum/profile.php?id=5960">maramail/Edouardlicn</a></li>
+     <li><a href="http://cn.piwigo.org/forum/profile.php?id=5666">mzs777</a></li>
+     <li>Ralph.Bai</li>
+     <li><a href="http://cn.piwigo.org/forum/profile.php?id=15253">quqibing</a></li>
+	 <li><a href="http://cn.piwigo.org/forum/profile.php?id=4944">winson</a></li>
+     <li>ZHU</li>
+  </ul>
+     .... 感谢他们！</p>
+
+Last edited by maramail 
Index: /tags/2.6.0RC1/language/zh_CN/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/admin.lang.php	(revision 25596)
@@ -0,0 +1,961 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d张关联图片';
+$lang['%d associations'] = '%d张关联图片';
+$lang['%d album including'] = '%d个相册，其中包含';
+$lang['%d albums including'] = '%d个相册，其中包含';
+$lang['%d physical'] = '物理相册%d个';
+$lang['%d physicals'] = '物理相册%d个 ';
+$lang[' and %d virtual'] = '，虚拟相册%d个 ';
+$lang[' and %d virtuals'] = '，虚拟相册%d个';
+$lang['%d album moved'] = '%d个相册已移动';
+$lang['%d albums moved'] = '%d个相册已移动';
+$lang['%d group'] = '%d个组';
+$lang['%d groups'] = '%d个组';
+$lang['%d member'] = '%d位成员';
+$lang['%d members'] = '%d位成员';
+$lang['%d tag'] = '%d个标签';
+$lang['%d tags'] = '%d个标签';
+$lang['%d user comment rejected'] = '%d个用户评论未通过审核';
+$lang['%d user comments rejected'] = '%d个用户评论未通过审核';
+$lang['%d user comment validated'] = '%d个用户评论已通过审核';
+$lang['%d user comments validated'] = '%d个用户评论已通过审核';
+$lang['%d user deleted'] = '%d个用户已删除';
+$lang['%d users deleted'] = '%d个用户已删除';
+$lang['%d user'] = '%d个用户';
+$lang['%d users'] = '%d个用户';
+$lang['%d waiting for validation'] = '%d个等待审核';
+$lang['Actions'] = '操作';
+$lang['Activate'] = '启用';
+$lang['Add/delete a permalink'] = '添加/删除一个固定链接';
+$lang['Add a tag'] = '添加标签';
+$lang['Add a user'] = '添加用户';
+$lang['Add group'] = '添加组';
+$lang['Add'] = '添加';
+$lang['Allow user registration'] = '允许用户注册';
+$lang['Apply to sub-albums'] = '应用到子相册';
+$lang['Associated'] = '已关联';
+$lang['Caddie management'] = '标记图片库管理';
+$lang['Caddie'] = '标记图片库';
+$lang['Albums authorized thanks to group associations'] = '以组成员身份授予访问权的相册';
+$lang['Album manual order was saved'] = '相册手动排序已保存';
+$lang['Check for upgrade failed for unknown reasons.'] = '因未知原因，更新检查失败。';
+$lang['Check for upgrade'] = '检查更新';
+$lang['Comments for all'] = '允许所有人评论（包括游客）';
+$lang['Current name'] = '现用名';
+$lang['Database'] = '数据库';
+$lang['Deactivate'] = '停用';
+$lang['Delete Representant'] = '删除相册缩略图';
+$lang['Delete selected tags'] = '删除选中的标签';
+$lang['Delete selected users'] = '删除选中的用户';
+$lang['Deletions'] = '删除';
+$lang['Deny selected groups'] = '所选组限制访问';
+$lang['Deny selected users'] = '所选用户限制访问';
+$lang['Description'] = '描述';
+$lang['Display options'] = '显示选项';
+$lang['Dissociated'] = '关联已取消';
+$lang['Does not represent'] = '并非缩略图for';
+$lang['Edit selected tags'] = '编辑选中的标签';
+$lang['Edit tags'] = '编辑标签';
+$lang['Email admins when a new user registers'] = '有新用户注册时，发邮件通知管理员';
+$lang['Email admins when a valid comment is entered'] = '当有效的评论发布后，发邮件通知管理员';
+$lang['Email admins when a comment requires validation'] = '有评论需要审核时，发邮件通知管理员';
+$lang['Environment'] = '环境';
+$lang['Form'] = '表单';
+$lang['Gallery title'] = '图库标题';
+$lang['Grant selected groups'] = '授权给所选组';
+$lang['Grant selected users'] = '授权给所选用户';
+$lang['Group name'] = '组名';
+$lang['Groups'] = '组';
+$lang['Guests'] = '游客';
+$lang['History'] = '历史记录';
+$lang['Informations'] = '信息';
+$lang['Install'] = '安装';
+$lang['Link all album photos to a new album'] = '关联相册的所有图片到新相册';
+$lang['Link all album photos to some existing albums'] = '关联相册的所有图片到已有相册';
+$lang['Linked albums'] = '已关联的相册';
+$lang['Lock gallery'] = '锁定图库';
+$lang['Maintenance'] = '维护';
+$lang['Edit album permissions'] = '管理相册权限';
+$lang['Manage permissions for group "%s"'] = '管理 "%s" 组的权限';
+$lang['Manage permissions for user "%s"'] = '管理用户 "%s" 的权限';
+$lang['Manage tags'] = '管理标签';
+$lang['Members'] = '成员';
+$lang['Metadata synchronized from file'] = '由文件同步元数据完成';
+$lang['Move albums'] = '移动相册';
+$lang['Move'] = '移动';
+$lang['Name'] = '名字';
+$lang['New name'] = '新名称';
+$lang['New parent album'] = '新的父相册';
+$lang['New tag'] = '新建标签';
+$lang['Number of comments per page'] = '每页评论数';
+$lang['Number of rates'] = '评分次数';
+$lang['Number of thumbnails to create'] = '将创建的缩略图数';
+$lang['Only private albums are listed'] = '只列出了非公开相册';
+$lang['Operating system'] = '操作系统';
+$lang['Options'] = '选项';
+$lang['Other private albums'] = '其他非公开相册';
+$lang['Page banner'] = '页首banner';
+$lang['Parent album'] = '父相册';
+$lang['Path'] = '路径';
+$lang['Permalink'] = '固定链接';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = '固定链接 %s 此前被相册 %s 使用。请先将其从固定链接历史记录中删除。';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = '固定链接名称必须由字符 a-z、A-Z、0-9、"-"、"_" 或 "/" 组成。但不能是纯数字或以数字开头后面紧跟"-"';
+$lang['Permalink %s is already used by album %s'] = '固定链接 %s 已被相册 %s 使用了';
+$lang['Permalink history'] = '固定链接历史记录';
+$lang['Permalinks'] = '固定链接';
+$lang['Permission denied'] = '禁止访问';
+$lang['Permission granted thanks to a group'] = '以组成员身份授予访问权';
+$lang['Permission granted'] = '允许访问';
+$lang['Photo informations updated'] = '图片信息已更新';
+$lang['Plugins'] = '插件';
+$lang['Position'] = '位置';
+$lang['Preferences'] = '偏好设置';
+$lang['Properties'] = '属性';
+$lang['Random photo'] = '随机图片';
+$lang['Rate date'] = '评分日期';
+$lang['Rating by guests'] = '允许游客评分';
+$lang['Rating'] = '评分';
+$lang['Reject'] = '拒绝';
+$lang['Representant'] = '相册缩略图';
+$lang['Representation of albums'] = '作为相册的缩略图';
+$lang['Representative'] = '相册缩略图';
+$lang['Represents'] = '是以下相册的缩略图：';
+$lang['Save order'] = '保存排序';
+$lang['Save to permalink history'] = '保存到固定链接历史记录';
+$lang['Select at least one album'] = '请至少选择一个相册';
+$lang['Select at least one photo'] = '请至少选择一张图片';
+$lang['Select at least one user'] = '请至少选择一个用户';
+$lang['Show info'] = '显示信息';
+$lang['Site manager'] = '网站管理';
+$lang['Status'] = '身份';
+$lang['Statistics'] = '统计';
+$lang['Storage album'] = '存储相册';
+$lang['Sum of rates'] = '总评分';
+$lang['Tag "%s" already exists'] = '标签 "%s" 已存在';
+$lang['Tag "%s" was added'] = '标签 "%s" 已添加';
+$lang['Tag selection'] = '标签选择';
+$lang['The %d following tags were deleted'] = '以下%d个标签已删除';
+$lang['Unable to check for upgrade.'] = '无法检查更新。';
+$lang['Uninstall'] = '卸载';
+$lang['Use the default photo sort order (defined in the configuration file)'] = '使用默认的图片排序（在配置文件中定义）';
+$lang['User comments validation'] = '用户评论审核';
+$lang['Users'] = '用户';
+$lang['Validate'] = '审核';
+$lang['Validation'] = '启用评论审核';
+$lang['Version'] = '版本';
+$lang['Virtual albums to move'] = '待移动的虚拟相册';
+$lang['Virtual album name'] = '虚拟相册名称';
+$lang['Webmaster cannot be deleted'] = '站长帐户不能删除';
+$lang['You are running on development sources, no check possible.'] = '您运行的是源码开发版本，不能检查最新版。';
+$lang['You cannot delete your account'] = '您无法删除自己的帐号';
+$lang['You cannot move an album in its own sub album'] = '您不能将一个相册移动到其子相册里';
+$lang['You need to confirm deletion'] = '您必须确认删除操作';
+$lang['Associate to album'] = '关联到相册';
+$lang['associate to group'] = '关联到组';
+$lang['Authorized'] = '已授权';
+$lang['Add a virtual album'] = '添加虚拟相册';
+$lang['Authorize users to add comments on selected albums'] = '授权用户在所选相册中发表评论';
+$lang['The name of an album must not be empty'] = '相册名称不能为空';
+$lang['Lock albums'] = '锁定相册';
+$lang['Private'] = '非公开相册';
+$lang['Public'] = '公开相册';
+$lang['Find a new representant by random'] = '采用新的随机相册缩略图';
+$lang['Public / Private'] = '公开 / 非公开';
+$lang['Manage authorizations for selected albums'] = '管理所选相册的授权';
+$lang['Virtual album added'] = '虚拟相册已添加';
+$lang['Virtual album deleted'] = '虚拟相册已删除';
+$lang['Access type'] = '权限类型';
+$lang['Information data registered in database'] = '信息数据已录入数据库';
+$lang['Default display'] = '默认显示';
+$lang['The gallery URL is not valid.'] = '图库地址无效。';
+$lang['The number of comments a page must be between 5 and 50 included.'] = '每页用户评论数必须在5和50之间。';
+$lang['Configuration'] = '设置';
+$lang['confirm'] = '确认';
+$lang['Date'] = '日期';
+$lang['delete album'] = '删除相册';
+$lang['Dissociate from album'] = '取消与相册的关联';
+$lang['dissociate from group'] = '取消组关联';
+$lang['Album updated successfully'] = '相册更新成功';
+$lang['photos per page'] = '张图片/页';
+$lang['High definition enabled'] = '高清功能已启用';
+$lang['File'] = '文件';
+$lang['first photo added on %s'] = '第一张图片上传于：%s';
+$lang['Forbidden'] = '禁止';
+$lang['global mode'] = '全局模式';
+$lang['group "%s" added'] = '"%s" 组已添加';
+$lang['group "%s" deleted'] = '"%s" 组已删除';
+$lang['group "%s" updated'] = '"%s" 组已更新';
+$lang['The name of a group must not contain " or \' or be empty.'] = '组的名称不能包含 " 或 \' 也不能为空。';
+$lang['This name is already used by another group.'] = '组名已存在。';
+$lang['High definition'] = '高清';
+$lang['jump to album'] = '转至相册页';
+$lang['jump to photo'] = '转至图片页';
+$lang['leave'] = '留空（默认）';
+$lang['Lock'] = '锁定';
+$lang['Locked'] = '已锁定';
+$lang['manage album photos'] = '管理相册中的图片';
+$lang['manage sub-albums'] = '管理子相册';
+$lang['Manage'] = '管理';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = '已超过执行时间，处理还要继续[估计时间：%d 秒]。';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = '已超过执行时间，处理还要继续[估计时间：%d 秒]。';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = '由于准备 将被发送邮件的用户的列表 的时间有限，其余用户未被列出。';
+$lang['Time to send mail is limited. Others mails are skipped.'] = '发送邮件时间有限，其余邮件已被跳过。';
+$lang['To send ?'] = '发送？';
+$lang['Last send'] = '上一次发送';
+$lang['User'] = '用户';
+$lang['See you soon,'] = '回见，';
+$lang['Go to'] = '转至 ';
+$lang['Hello'] = '您好';
+$lang['New photos were added'] = '新图片已加入';
+$lang['on'] = '时间：';
+$lang['between'] = '介于';
+$lang['and'] = ' 至 ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = '站长开通了您的邮件通知功能。';
+$lang['You have subscribed to receiving notifications by mail.'] = '您已订阅了邮件通知。';
+$lang['To subscribe'] = '订阅';
+$lang['If you encounter problems or have any question, please send a message to'] = '如遇故障或问题，请发邮件至';
+$lang['[NBM] Problems or questions'] = '[NBM] 故障或问题';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = '站长取消了您的邮件通知功能。';
+$lang['You have unsubscribed from receiving notifications by mail.'] = '您已取消订阅邮件通知。';
+$lang[', click on'] = '，请点击 ';
+$lang['To unsubscribe'] = '取消订阅';
+$lang['With blank value, gallery title will be used'] = '如留空，则将使用图库标题';
+$lang['Notification'] = 'RSS订阅';
+$lang['Error when sending email to %s [%s].'] = '发送邮件给 %s [%s] 时发生了错误。';
+$lang['Mail sent to %s [%s].'] = '邮件已发送至 %s [%s]。';
+$lang['%d mail was sent.'] = '%s份邮件已发送。';
+$lang['%d mails were sent.'] = '%s份邮件已发送。';
+$lang['%d mail was not sent.'] = '%s份邮件未被发送。';
+$lang['%d mails were not sent.'] = '%s份邮件未被发送。';
+$lang['No mail to send.'] = '没有邮件要发送。';
+$lang['There is no available subscribers to mail.'] = '没有用户订阅邮件通知。';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = '只有当有新元素时，才能使用用户邮件通知功能。';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = '本表单页仅站长可见，管理员不可见。';
+$lang['No user to send notifications by mail.'] = '没有需要邮件通知的用户。';
+$lang['New photos added'] = '已加入新图片';
+$lang['Subscribe to notification by mail'] = '用邮件订阅RSS更新';
+$lang['Unsubscribe from notification by mail'] = '取消订阅邮件通知';
+$lang['Parameter'] = '设置';
+$lang['Continue processing treatment'] = '继续当前的处理';
+$lang['Complementary mail content'] = '邮件附加内容';
+$lang['Add detailed content'] = '增加细节内容';
+$lang['Send mail as'] = '邮件标题';
+$lang['Send mail to users'] = '向用户发送邮件';
+$lang['Send'] = '发送';
+$lang['Options'] = '选项';
+$lang['Subscribed'] = '已订阅';
+$lang['Subscribe'] = '订阅';
+$lang['Parameters'] = '参数';
+$lang['Select recipients'] = '选择接收邮件的用户';
+$lang['Subscribe/unsubscribe users'] = '订阅/取消订阅用户';
+$lang['Unsubscribed'] = '已取消';
+$lang['%d parameter was updated.'] = '%d个参数已更新。';
+$lang['%d parameters were updated.'] = '%d个参数已更新。';
+$lang['%d user was not updated.'] = '%d个用户未被更新。';
+$lang['%d users were not updated.'] = '%d个用户未被更新。';
+$lang['User %s [%s] was removed from the subscription list.'] = '用户 %s [%s] 已从订阅列表中删除。';
+$lang['User %s [%s] was added to the subscription list.'] = '用户 %s [%s] 已加入订阅列表。';
+$lang['%d user was updated.'] = '%d个用户已更新。';
+$lang['%d users were updated.'] = '%d个用户已更新。';
+$lang['User %s [%s] was not removed from the subscription list.'] = '用户 %s [%s] 未从订阅列表中删除。';
+$lang['User %s [%s] was not added to the subscription list.'] = '用户 %s [%s] 未加入订阅列表。';
+$lang['User %s [%s] added.'] = '用户 %s [%s] 已添加。';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = '注意：订阅或取消订阅都会给相关用户发送邮件';
+$lang['Send mail on HTML format'] = '以HTML格式发送邮件';
+$lang['Include display of recent photos grouped by dates'] = '包含显示最近的以日期分组的图片';
+$lang['Available only with HTML format'] = '仅限HTML格式可用';
+$lang['no write access'] = '无法写入';
+$lang['Permissions'] = '权限';
+$lang['private'] = '非公开';
+$lang['public'] = '公开';
+$lang['Purge never used notification feeds'] = '清除从未使用过的RSS订阅';
+$lang['Purge sessions'] = '清除会话';
+$lang['randomly represented'] = '随机相册缩略图';
+$lang['registration date'] = '注册日期';
+$lang['clean'] = '清除';
+$lang['Create this site'] = '创建网站';
+$lang['test'] = '测试';
+$lang['test this remote site'] = '测试此远端站点';
+$lang['remove tags'] = '删除所有标签';
+$lang['Repair and optimize database'] = '修复和优化数据库';
+$lang['selection'] = '选择';
+$lang['set to'] = '设置为';
+$lang['singly represented'] = '固定的相册缩略图';
+$lang['This site already exists'] = '此站点已存在';
+$lang['created'] = '已创建';
+$lang['delete'] = '删除';
+$lang['delete this site and all its attached elements'] = '删除此站点及与之关联的所有信息';
+$lang['an error happened'] = '发生了错误';
+$lang['Local'] = '本地';
+$lang['Remote'] = '远端';
+$lang['update the database from files'] = '根据文件更新数据库';
+$lang['status'] = '身份';
+$lang['Directory'] = '目录';
+$lang['sub-albums'] = '子相册';
+$lang['Synchronize metadata'] = '同步元数据';
+$lang['target'] = '目标';
+$lang['Thumbnail'] = '缩略图';
+$lang['Title'] = '标题';
+$lang['Album list management'] = '相册列表管理';
+$lang['Piwigo configuration'] = 'Piwigo配置';
+$lang['Edit album'] = '编辑相册';
+$lang['Group management'] = '组管理';
+$lang['User list'] = '用户列表';
+$lang['Edit photo information'] = '修改图片信息';
+$lang['Database synchronization with files'] = '根据文件来同步数据库';
+$lang['all'] = '所有';
+$lang['height must be a number superior to'] = '图片高度必须大于(整数)';
+$lang['width must be a number superior to'] = '图片宽度必须大于（整数）';
+$lang['for the file format'] = '对于文件格式';
+$lang['Photo unreachable or no support'] = '不支持的图片格式或无法获取';
+$lang['GD version'] = 'GD版本';
+$lang['General statistics'] = '总体统计';
+$lang['average time'] = '平均时间';
+$lang['number of miniaturized photos'] = '已创建的缩略图数';
+$lang['total time'] = '总时间';
+$lang['for this file format'] = '对于此文件格式';
+$lang['unit mode'] = '单一模式';
+$lang['Unlocked'] = '已解锁';
+$lang['unset'] = '复原';
+$lang['Update albums informations'] = '更新相册信息';
+$lang['Update photos information'] = '更新图片信息';
+$lang['Synchronize'] = '同步';
+$lang['reduce to single existing albums'] = '将同步范围限制于某个现有的相册';
+$lang['Choose an option'] = '选择一个选项';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = '显示全部信息（添加的相册和图片，删除的相册和图片）';
+$lang['Error list'] = '错误列表';
+$lang['Errors caption'] = '错误说明';
+$lang['Detailed informations'] = '详细信息';
+$lang['File/directory read error'] = '文件/目录读取错误';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = '无法打开文件或目录（不存在或拒绝访问）';
+$lang['albums deleted in the database'] = '个相册已从数据库中删除';
+$lang['photos deleted from the database'] = '张图片已从数据库中删除';
+$lang['photos candidates for metadata synchronization'] = '张图片将与元数据同步';
+$lang['photos informations synchronized with files metadata'] = '张图片的信息已与文件元数据同步';
+$lang['errors during synchronization'] = '个错误在同步中发生';
+$lang['albums added in the database'] = '个相册已添加到数据库';
+$lang['photos added in the database'] = '张图片已添加到数据库';
+$lang['photos updated in the database'] = '张图片已于数据库中更新';
+$lang['Search for new images in the directories'] = '在目录中搜索新图片';
+$lang['added'] = '已添加';
+$lang['deleted'] = '已删除';
+$lang['Metadata synchronization results'] = '元数据同步结果';
+$lang['only perform a simulation (no change in database will be made)'] = '只进行模拟操作（不会改变数据库中的任何内容）';
+$lang['Simulation'] = '模拟';
+$lang['directories + files'] = '目录 + 文件';
+$lang['only directories'] = '仅目录';
+$lang['synchronize files structure with database'] = '文件结构与数据库同步';
+$lang['synchronize files metadata with database photos informations'] = '数据库中的图片信息与文件元数据同步';
+$lang['even already synchronized photos'] = '包括已同步过的图片';
+$lang['Used metadata'] = '已使用的元数据';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = '目录和文件的名称只能包含字母、数字、"-"、"_" 和 "."';
+$lang['wrong filename'] = '错误的文件名';
+$lang['Upload'] = '上传';
+$lang['user "%s" added'] = '用户 "%s" 已添加';
+$lang['User status'] = '用户身份';
+$lang['user_status_admin'] = '管理员';
+$lang['user_status_generic'] = '公共帐户';
+$lang['user_status_guest'] = '游客';
+$lang['user_status_normal'] = '个人帐户';
+$lang['user_status_webmaster'] = '站长';
+$lang['Virtual album'] = '虚拟相册';
+$lang['Waiting'] = '等待';
+$lang['default'] = '默认';
+$lang['Toggle \'default group\' property'] = '反转\'默认组\'的属性';
+$lang['Advanced features'] = '高级功能';
+$lang['Overall'] = '概览';
+$lang['Year'] = '年';
+$lang['Month'] = '月';
+$lang['Day'] = 'Day';
+$lang['Pages seen'] = '已访问过的页面';
+$lang['Time'] = '时间';
+$lang['IP'] = 'IP';
+$lang['Element'] = '元素';
+$lang['Section'] = '区域';
+$lang['An information email was sent to group "%s"'] = '已向 "%s" 组的成员发送了邮件信息';
+$lang['Send an information email to group members'] = '向组成员发送一份信息邮件';
+$lang['Group'] = '组';
+$lang['[%s] Visit album %s'] = '[%s] 访问相册 %s';
+$lang['Hello,'] = '您好，';
+$lang['See you soon.'] = '回见。';
+$lang['Discover album:'] = '探索相册：';
+$lang['Mail content'] = '邮件内容';
+$lang['none'] = '无';
+$lang['high'] = '高清';
+$lang['other'] = '其他';
+$lang['Element type'] = '元素类型';
+$lang['Image id'] = '图片id';
+$lang['Summary'] = '概述';
+$lang['%d line filtered'] = '%d行被过滤';
+$lang['%d lines filtered'] = '%d行被过滤';
+$lang['%d guest'] = '%d位游客';
+$lang['%d guests'] = '%d位游客';
+$lang['Hour'] = '小时';
+$lang['guest'] = '游客';
+$lang['default values'] = '默认值';
+// --------- Starting below: New or revised $lang ---- from version 1.7.1
+$lang['Guest cannot be deleted'] = '游客不能删除';
+$lang['Default user cannot be deleted'] = '不能删除默认用户';
+$lang['Purge history detail'] = '清除详细历史记录';
+$lang['Purge history summary'] = '清除历史摘要';
+$lang['Check integrity'] = '检查完整性';
+$lang['Anomaly'] = '异常';
+$lang['Correction'] = '修复';
+$lang['Automatic correction'] = '自动修复';
+$lang['Impossible automatic correction'] = '无法自动修复';
+$lang['Correction applied with success'] = '修复成功';
+$lang['Correction applied with error'] = '修复出错';
+$lang['%d anomaly has been detected.'] = '发现了%d个异常。';
+$lang['%d anomalies have been detected.'] = '发现了%d个异常。';
+$lang['%d anomaly has been corrected.'] = '修复了%d个异常。';
+$lang['%d anomalies have been detected corrected.'] = '发现了%d个异常并已修复。';
+$lang['%d anomaly has not been corrected.'] = '%d个异常未被修复。';
+$lang['%d anomalies have not been corrected.'] = '%d个异常未被修复。';
+$lang['Go to %s or %s for more informations'] = '获取更多信息，请到 %s 或者 %s ';
+$lang['the forum'] = '论坛';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s 值不正确，因为不支持exif';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '在配置文件local/config/config.inc.php中，%s必须设置为"false"';
+$lang['Main "guest" user does not exist'] = '主"游客"帐户不存在';
+$lang['Main "guest" user status is incorrect'] = '主"游客"帐户状态异常';
+$lang['Default user does not exist'] = '默认用户不存在';
+$lang['Main "webmaster" user does not exist'] = '主"站长"帐户不存在';
+$lang['Main "webmaster" user status is incorrect'] = '主"站长"帐户状态异常';
+$lang['User "%s" created with "%s" like password'] = '用户 "%s" 已创建，密码是"%s"';
+$lang['Status of user "%s" updated'] = '用户 "%s" 身份已更新';
+$lang['add new photos to caddie'] = '将新图片添加到标记图片库';
+// --------- Starting below: New or revised $lang ---- from Butterfly
+$lang['No display'] = '不显示缩略图';
+$lang['Classic display'] = '经典显示界面';
+$lang['Hoverbox display'] = 'Hoverbox显示';
+$lang['Mail address is obligatory for all users'] = '所有用户都须提交邮箱地址';
+$lang['Minimum privacy level'] = '最低隐私等级';
+$lang['Privacy level'] = '隐私等级';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = '联系';
+$lang['Level 2'] = '朋友';
+$lang['Level 4'] = '家人';
+$lang['Level 8'] = '管理员';
+$lang['Reinitialize check integrity'] = '初始化完整性检查';
+$lang['Check all'] = '检查所有';
+$lang['Uncheck all'] = '取消所有已选';
+$lang['Check automatic corrections'] = '检查自动修复';
+$lang['Apply selected corrections'] = '应用选中的修复';
+$lang['Ignore selected anomalies'] = '忽略选中的异常';
+$lang['Refresh'] = '刷新';
+$lang['The anomaly will be ignored until next application version'] = '此异常将被忽略，待下个版本中解决';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = '经过修复，此项异常将不再被忽略';
+$lang['%d anomaly has been ignored.'] = '%d个异常已被忽略。';
+$lang['%d anomalies have been ignored.'] = '%d个异常已被忽略。';
+$lang['Plugins which need upgrade'] = '需要更新的插件';
+$lang['Plugin list'] = '插件列表';
+$lang['Check for updates'] = '检查更新';
+$lang['Other plugins'] = '其他可用插件';
+$lang['Last revisions'] = '最新修订版';
+$lang['Are you sure you want to install this plugin?'] = '确定要安装此插件？';
+$lang['Are you sure you want to delete this plugin?'] = '确定要删除此插件？';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = '确定安装此更新？您必须确定此版本是否无需先进行卸载操作。';
+$lang['Plugin has been successfully copied'] = '插件复制成功';
+$lang['You might go to plugin list to install and activate it.'] = '在插件列表页中安装并启用它。';
+$lang['Can\'t create temporary file.'] = '无法创建临时文件。';
+$lang['Can\'t download archive.'] = '无法下载归档文件。';
+$lang['Can\'t read or extract archive.'] = '无法读取或解压归档文件。';
+$lang['An error occured during extraction (%s).'] = '在解压文件(%s)时发生错误。';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = '请核实"plugins"文件夹及其子文件夹的权限(CHMOD)。';
+$lang['Can\'t connect to server.'] = '无法连接到服务器。';
+$lang['Purge compiled templates'] = '清除编译模板';
+$lang['Support'] = '支持';
+$lang['Documentation'] = '文档';
+$lang['ACCESS_0'] = '自由访问';
+$lang['ACCESS_1'] = '对所有人开放';
+$lang['ACCESS_2'] = '只对注册用户开放';
+$lang['ACCESS_3'] = '只对管理员开放';
+$lang['ACCESS_4'] = '只对站长开放';
+$lang['ACCESS_5'] = '不开放';
+$lang['A new version of Piwigo is available.'] = 'Piwigo新版发布。';
+$lang['Piwigo Administration'] = 'Piwigo管理';
+$lang['Piwigo version'] = 'Piwigo版本';
+$lang['You are running the latest version of Piwigo.'] = '您运行的是Piwigo最新版。';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = '%s [%s]安装版本跟[%s]版本不兼容';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = '为了获得程序的全部功能，您需要更新您的系统，否则程序可能运行不正常或无法运行。';
+$lang['Deleted on'] = '删除于';
+$lang['Last hit'] = '最新点击';
+$lang['GD library is missing'] = '缺少GD库';
+$lang['Templates'] = '模板';
+$lang['Extend for templates'] = '扩展模板';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = '用位于template-extension子文件夹下的用户自定义模板替换原模板';
+$lang['Replacers (customized templates)'] = '替换（自定义模板）';
+$lang['Original templates'] = '原模板';
+$lang['Optional URL keyword'] = '可选URL关键字';
+$lang['Templates configuration has been recorded.'] = '模板设置已保存。';
+$lang['All optimizations have been successfully completed.'] = '优化成功。';
+$lang['Optimizations have been completed with some errors.'] = '优化完成，但发生了一些错误。';
+$lang['Modify information'] = '修改信息';
+$lang['nothing'] = '没有内容';
+$lang['overrides existing values with empty ones'] = '用空数据来覆盖已存在的数据';
+$lang['Manage photo ranks'] = '管理图片排序';
+$lang['Edit ranks'] = '修改排列顺序';
+$lang['No photo in this album'] = '此相册里没有图片';
+$lang['Images manual order was saved'] = '图片手动排序已保存';
+$lang['ranks'] = '顺序';
+$lang['Drag to re-order'] = '拖放进行排序';
+$lang['Quick Local Synchronization'] = '快速本地同步';
+$lang['No photo can be deleted'] = '没有图片可以删除';
+$lang['Delete selected photos'] = '删除选中的图片';
+$lang['%d photo was deleted'] = '%d张图片已删除';
+$lang['%d photos were deleted'] = '%d张图片已删除';
+$lang['Downloads'] = '下载';
+$lang['Released on'] = '发布于';
+$lang['Number of downloads'] = '下载次数';
+$lang['Operation in progress'] = '正在处理。';
+$lang['Please wait...'] = '请稍候...';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = '订阅 Piwigo 最新消息，与 Piwigo 项目保持联系。当有新版本发布时，您将会收到邮件通知（有时也包括安全漏洞的修复，因而知晓并进行升级是很重要的），项目里一些重要事情发生时也一样。一年里也只有几封邮件喔。';
+$lang['Password is missing. Please enter the password.'] = '密码未输入，请输入密码。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '密码确认未完成，请确认所选定的密码。';
+$lang['Allow users to edit their own comments'] = '允许用户编辑自己的评论';
+$lang['Allow users to delete their own comments'] = '允许用户删除自己的评论';
+$lang['Email administrators when a comment is modified'] = '有评论被修改后，发邮件通知管理员';
+$lang['Email administrators when a comment is deleted'] = '有评论被删除后，发邮件通知管理员';
+$lang['Cannot delete the old permalink !'] = '旧的固定链接无法删除！';
+$lang['Hit'] = '点击';
+$lang['Tools'] = '工具';
+$lang['Photos'] = '图片';
+$lang['Themes'] = '主题';
+$lang['Instructions to use Piwigo'] = 'Piwigo 使用指南';
+$lang['Installed Themes'] = '已安装主题';
+$lang['Add New Theme'] = '添加新主题';
+$lang['Forbid this theme to users'] = '对用户禁用此主题';
+$lang['Set as default theme for unregistered and new users'] = '设置为游客和新用户的默认主题';
+$lang['unknown'] = '未知';
+$lang['Upload Photos'] = '上传图片';
+$lang['Drop into album'] = '选择一个相册';
+$lang['+ Add an upload box'] = '+ 添加一个上传框';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = '在您的Piwigo安装根目录下创建 "%s" 目录';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = '给予Piwigo安装根目录下的 "%s" 文件夹以写权限 (chmod 777)';
+$lang['existing album'] = '现有的相册';
+$lang['create a new album'] = '创建一个新相册';
+$lang['Album name'] = '相册名称';
+$lang['Album "%s" has been added'] = '相册 "%s" 已添加';
+$lang['Uploaded Photos'] = '已上传的图片';
+$lang['%d photos uploaded'] = '%d张图片已上传';
+$lang['Privacy level set to "%s"'] = '隐私级别设置为 "%s"';
+$lang['Album "%s" now contains %d photos'] = '相册 "%s" 现包含 %d 张图片';
+$lang['Manage this set of %d photos'] = '管理本集合的 %d 张图片';
+$lang['Select files'] = '选择文件';
+$lang['Everybody'] = '每个人';
+$lang['Who can see these photos?'] = '图片对谁可见';
+$lang['Settings'] = '设置';
+$lang['Resize'] = '修改尺寸';
+$lang['Maximum width'] = '最大宽度';
+$lang['pixels'] = '像素';
+$lang['Maximum height'] = '最大高度';
+$lang['Image Quality'] = '图片质量';
+$lang['Save Settings'] = '保存设置';
+$lang['Your configuration settings are saved'] = '您的设置已保存';
+$lang['Active Themes'] = '启用的主题';
+$lang['Add write access to the "%s" directory'] = '为 "%s" 目录添加写权限';
+$lang['Administration Home'] = '管理界面首页';
+$lang['Change Admin Colors'] = '更改管理界面颜色';
+$lang['Delete this theme'] = '删除此主题';
+$lang['Directory does not exist'] = '目录不存在';
+$lang['Download,'] = '下载，';
+$lang['FTP + Synchronization'] = 'FTP + 同步';
+$lang['Get Support on Piwigo Forum'] = '在Piwigo论坛上获取帮助';
+$lang['Help Me'] = '帮助';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = '父主题%s不存在，此主题不能被启用。';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = '不能删除此主题，因其他主题有赖于它： %s';
+$lang['Inactive Themes'] = '停用的主题';
+$lang['Install on your computer,'] = '安装到您的电脑里，';
+$lang['Make this theme available to users'] = '让用户可使用此主题';
+$lang['Page end'] = '页尾';
+$lang['Piwigo Uploader'] = 'Piwigo Uploader';
+$lang['Read Piwigo Documentation'] = '阅读Piwigo文档';
+$lang['Start pLoader and add your photos.'] = '开始使用pLoader并添加您的图片。';
+$lang['Switch to clear or dark colors for administration'] = '更改管理界面为清爽或者炫黑的颜色';
+$lang['Theme has been successfully installed'] = '主题已成功安装';
+$lang['Visit Gallery'] = '浏览图库';
+$lang['Visit Piwigo project website'] = '浏览 Piwigo 项目网站';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader代表<em>Piwigo Uploader</em>。pLoader可将您电脑里的图片上传到Piwigo图库里。';
+$lang['Guest Settings'] = '游客设置';
+$lang['Main Page'] = '主页';
+$lang['Photo Page'] = '图片页';
+$lang['Activate Navigation Bar'] = '启用导航条';
+$lang['Activate Navigation Thumbnails'] = '启用缩略图导航';
+$lang['Activate icon "%s"'] = '启用图标 "%s"';
+$lang['Photo Properties'] = '图片属性';
+$lang['Allow user customization'] = '允许用户自定义';
+$lang['Languages'] = '语言';
+$lang['Installed Languages'] = '已安装语言';
+$lang['Add New Language'] = '添加新语言';
+$lang['Language has been successfully installed'] = '语言已成功安装';
+$lang['Select:'] = '选择：';
+$lang['None'] = '无';
+$lang['Invert'] = '反选';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = '不能停用此主题，您至少需要使用一个主题。';
+$lang['Webmaster status is required.'] = '仅限站长。';
+$lang['Bound Theme'] = '绑定主题';
+$lang['Allow rating'] = '允许评分';
+$lang['Select at least one comment'] = '请至少选择一个评论';
+$lang['Active Plugins'] = '启用的插件';
+$lang['Inactive Plugins'] = '停用的插件';
+$lang['Missing Plugins'] = '丢失的插件';
+$lang['Uninstalled Plugins'] = '已卸载的插件';
+$lang['By %s'] = '由%s开发';
+$lang['Visit plugin site'] = '浏览插件网站';
+$lang['Active Languages'] = '启用的语言';
+$lang['Delete this language'] = '删除此种语言';
+$lang['Forbid this language to users'] = '对用户禁用此语言';
+$lang['Impossible to deactivate this language, first set another language as default.'] = '不能停用此语言，请先设置一个新的默认语言。';
+$lang['Impossible to deactivate this language, you need at least one language.'] = '不能停用此语言，您至少需要使用一个语言。';
+$lang['Inactive Languages'] = '停用的语言';
+$lang['Make this language available to users'] = '让用户可使用此语言';
+$lang['Set as default language for unregistered and new users'] = '设置为游客和新用户的默认语言';
+$lang['Add Photos'] = '添加图片';
+$lang['The following tag was deleted'] = '以下标签已删除';
+$lang['Miscellaneous'] = '其他';
+$lang['Virtual Links'] = '虚拟链接';
+$lang['There is no other language available.'] = '没有其他的可用语言。';
+$lang['There is no other plugin available.'] = '没有其他的可用插件。';
+$lang['There is no other theme available.'] = '没有其他的可用主题。';
+$lang['Add another set of photos'] = '添加另一组图片';
+$lang['By rank'] = '按顺序';
+$lang['Manual order'] = '手动排序';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo最新消息公告';
+$lang['Subscribe %s'] = '订阅%s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '以 %s 订阅Piwigo中国最新消息公告';
+$lang['Purge search history'] = '清除搜索的历史记录';
+$lang['Hide'] = '隐藏';
+$lang['Order of menubar items has been updated successfully.'] = '菜单项目排列顺序更新成功。';
+$lang['This theme was not designed to be directly activated'] = '此主题并非为直接启用而设计';
+$lang['Who can see this photo?'] = '图片对谁可见';
+$lang['Pending Comments'] = '待审核的评论';
+$lang['Menu Management'] = '菜单';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = '在您的 php.ini 文件，upload_max_filesize (%sB) 大于 post_max_size (%sB)，您需要修改此设置';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif 扩展不可用，管理员应禁用 exif。';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = '上传文件超过了在 php.ini 文件里的 upload_max_filesize 的限制：%sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = '上传文件超过了在 php.ini 文件里的 post_max_size 的限制：%sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = '上传文件超过了在 HTML 表单指定的 MAX_FILE_SIZE 的限制';
+$lang['The uploaded file was only partially uploaded'] = '上传文件只上传了一部分';
+$lang['No file was uploaded'] = '没有文件被上传';
+$lang['Missing a temporary folder'] = '缺少临时文件夹';
+$lang['Failed to write file to disk'] = '文件写入失败';
+$lang['File upload stopped by extension'] = '文件上传被扩展中止';
+$lang['Unknown upload error'] = '未知上传错误';
+$lang['Error on file "%s" : %s'] = '文件"%s"上有错误：%s';
+$lang['%d of %d photos selected'] = '%d 张已选 / 总 %d 张图片';
+$lang['Action'] = '操作';
+$lang['Add a filter'] = '添加过滤器';
+$lang['Album photos associated to the following albums: %s'] = '图片已关联到以下相册：%s';
+$lang['Albums automatically sorted'] = '相册已自动排序';
+$lang['All %d photos are selected'] = '全部 %d 张图片已选中';
+$lang['Apply action'] = '执行操作';
+$lang['automatic order'] = '自动排序';
+$lang['Batch Manager'] = '批量管理';
+$lang['Choose an action'] = '选择一项操作';
+$lang['Delete orphan tags'] = '删除未被关联的标签';
+$lang['delete photo'] = '删除图片';
+$lang['Duplicates'] = '副本';
+$lang['include child albums'] = '包含子相册';
+$lang['manual order'] = '手动排序';
+$lang['No photo in the current set.'] = '当前集合没有图片。';
+$lang['No photo selected, %d photos in current set'] = '没有图片被选中，当前集合中有 %d 张图片';
+$lang['No photo selected, no action possible.'] = '没有图片被选中，不能执行任何操作。';
+$lang['on the %d selected photos'] = '于此 %d 张所选图片';
+$lang['Orphan tags deleted'] = '无关联图片的标签已被删除';
+$lang['Refresh photo set'] = '刷新图片集';
+$lang['Remove all filters'] = '删除所有过滤器';
+$lang['remove author'] = '删除作者';
+$lang['remove creation date'] = '删除创建日期';
+$lang['remove this filter'] = '删除此过滤器';
+$lang['remove title'] = '删除标题';
+$lang['Selection'] = '选择';
+$lang['Set author'] = '设置作者';
+$lang['Set creation date'] = '设置创建日期';
+$lang['Set title'] = '设置标题';
+$lang['The whole page'] = '整页';
+$lang['The whole set'] = '整个集合';
+$lang['Type here the author name'] = '在此输入作者名称';
+$lang['Type here the title'] = '在此输入标题';
+$lang['Week starts on'] = '星期起始于';
+$lang['You have %d orphan tags: %s.'] = '您有 %d 个无关联图片的标签：%s。';
+$lang['Remove from caddie'] = '从标记图片库中移除';
+$lang['Themes which need upgrade'] = '需更新的主题';
+$lang['Languages which need upgrade'] = '需要更新的语言';
+$lang['All themes are up to date.'] = '所有主题已更新。';
+$lang['All plugins are up to date.'] = '所有插件已更新。';
+$lang['All languages are up to date.'] = '所有语言已更新。';
+$lang['Visit theme site'] = '浏览主题网站';
+$lang['Visit language site'] = '浏览语言网站';
+$lang['New Version'] = '新版本';
+
+
+
+
+$lang['Obsolete Plugins'] = '过期的插件';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '警告！此插件并不适用于这个版本的Piwigo。';
+$lang['Do you want to activate anyway?'] = '您仍想启用吗？';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '【这个插件现在已经是Piwigo核心的一部分，请马上删除它！】';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = '错误：该插件的实际内容已丢失但记录中它已被安装，请马上卸载它。';
+$lang['new'] = '新的';
+$lang['No results'] = '没有结果';
+$lang['Searching...'] = '搜索中...';
+$lang['Type in a search term'] = '输入搜索关键字';
+
+
+$lang['display'] = '显示';
+$lang['Average rate'] = "平均分";
+$lang['Rate'] = '评分';
+$lang['Activate icon "new" next to albums and pictures'] = '启用相册和图片旁边的"new"图标';
+$lang['Add a criteria'] = '添加条件';
+$lang['Deactivate all'] = '停用所有';
+$lang['Default photos order'] = '默认图片排序';
+$lang['Restore'] = '恢复';
+$lang['Restore default configuration. You will lose your plugin settings!'] = '恢复默认的配置，您将失去您的插件的设置!';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = '您不能设置默认的图片排序，因为您已在本地配置文件里有自定义设置。';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = '您已在本地配置文件里定义了 <i>$conf[\'order_by\']</i>，此参数已不再使用了，请移除或者将其改名为 <i>$conf[\'order_by_custom\']</i> ！';
+$lang['Thumbnails generation in progress...'] = '正在生成缩略图...';
+$lang['Photos generation in progress...'] = '正在生成图片...';
+$lang['%s photos have been regenerated'] = '%s张图片已更新';
+$lang['%s photos can not be regenerated'] = '%s张图片不能被更新';
+$lang['Update in progress... Please wait.'] = '正在更新... 请稍等。';
+$lang['Ignore this update'] = '忽略此更新';
+$lang['Reset ignored updates'] = '重置已忽略的更新';
+$lang['Update All'] = '更新所有';
+$lang['ERROR'] = '错误';
+$lang['Update Complete'] = '更新完毕';
+$lang['Piwigo Update'] = 'Piwigo更新';
+$lang['Extensions Update'] = '扩展更新';
+$lang['All extensions are up to date.'] = '所有扩展已更新。';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '以下插件可能与新版 Piwigo 不兼容：';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = '以下主题可能与新版 Piwigo 不兼容：';
+$lang['I decide to update anyway'] = '仍决定更新';
+$lang['Update to Piwigo %s'] = '更新到 Piwigo %s';
+$lang['Two updates are available'] = '两项更新均可用';
+$lang['This is a minor update, with only bug corrections.'] = '这是一次次要更新，只是对bug的修正。';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = '这是一次重要更新，有着<a href="%s">令人欣喜的新功能</a>。';
+$lang['Some themes and plugins may be not available yet.'] = '一些主题和插件可能还不能使用。';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = '您可以直接更新到 Piwigo %s，不需先更新到 Piwigo %s（推荐）。';
+$lang['Save Template Directory'] = '保存模板目录';
+$lang['Dump Database'] = '转存数据库';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = '包括历史数据(警告：可能会超出服务器内存限制)';
+$lang['Unable to dump database.'] = '无法转存数据库。';
+$lang['Some upgrades are available for extensions.'] = '有已更新的扩展。';
+$lang['Ignore All'] = '忽略所有';
+$lang['Width'] = '宽度';
+$lang['Height'] = '高度';
+$lang['Follow Orientation'] = '按照方向';
+$lang['Graphics Library'] = '图形库';
+$lang['Show menubar'] = '显示菜单栏';
+$lang['Updates'] = '更新';
+$lang['Crop'] = '裁切';
+$lang['... or '] = '...或 ';
+$lang['Create'] = '创建';
+$lang['Start Upload'] = '开始上传';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = '您正在使用Flash上传方式，若有问题，请尝试<a href="%s">网页上传</a>。';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = '您正在使用网页上传方式，若有问题，请尝试<a href="%s">Flash上传</a>。';
+$lang['Maximum file size: %sB.'] = '文件最大体积：%sB。';
+$lang['Allowed file types: %s.'] = '允许的文件类型：%s。';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = '最大的分辨率约：%dM 像素 (即 %dx%d 像素)。';
+$lang['Manage Permissions'] = '管理权限';
+$lang['Learn more'] = '了解更多';
+$lang['Photo %s of %s'] = 'Photo %s of %s';
+$lang['show details'] = '显示详情';
+$lang['hide details'] = '隐藏详情';
+$lang['Merge tags'] = '合并标签';
+$lang['Select the destination tag'] = '选择目标标签';
+$lang['(this tag will be deleted)'] = '（此标签将被删除）';
+$lang['Confirm merge'] = '确认合并';
+$lang['Merge selected tags'] = '合并选中的标签';
+$lang['No destination tag selected'] = '没有选中的目的标签';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = '标签<em>%s</em>已并入标签<em>%s</em>';
+$lang['Select at least two tags for merging'] = '请至少选择2个标签以合并';
+$lang['Select an album'] = '选择一个相册';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = '默认情况下，Piwigo将基于图片的HD（高清）版本为图片创建一个新的网页尺寸。';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = '若无高清图片且当前网页尺寸的图片大于重置尺寸，Piwigo会将其视为高清图片并用它生成较小尺寸的网页尺寸图片。';
+$lang['An error has occured during upgrade.'] = '在升级过程中出现了一个错误。';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = '在解压时出现了一个错误。请检查您 piwigo 安装文件的读写权限。<br><a href="%s">点此查看错误日志</a>';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo无法从服务器中获取升级文件';
+$lang['%s has been successfully updated.'] = '%s更新成功。';
+$lang['Activate comments'] = '启用评论';
+$lang['Add tags'] = '添加标签';
+$lang['Add to caddie'] = '添加到标记图片库';
+$lang['Default comments order'] = '默认评论顺序';
+$lang['Last import'] = '最后导入';
+$lang['Original Size'] = '原始尺寸';
+$lang['Photo name'] = '图片名称';
+$lang['Predefined filter'] = '预定义过滤器';
+$lang['Resize after upload'] = '上传后修改尺寸';
+$lang['Send connection settings by email'] = '用邮件发送注册信息';
+$lang['The original image quality must be a number between %d and %d'] = '源图片质量必须是在%d和%d之间的数字';
+$lang['The original maximum height must be a number between %d and %d'] = '源图片最大高度必须是在%d和%d之间的数字';
+$lang['The original maximum width must be a number between %d and %d'] = '源图片最大宽度必须是在%d和%d之间的数字';
+$lang['With no album'] = '没有相册';
+$lang['With no tag'] = '没有标签';
+$lang['With no virtual album'] = '没有虚拟相册';
+$lang['Zoom'] = '缩放';
+$lang['A locked gallery is only visible to administrators'] = '被锁定的图库只对管理员可见';
+$lang['administrators'] = '管理员';
+$lang['Center of interest'] = '兴趣中心';
+$lang['Gallery unlocked'] = '图库已解锁';
+$lang['modified'] = '已修改';
+$lang['Move to album'] = '移动到相册';
+$lang['Not cropped correctly?'] = '剪裁不正确？';
+$lang['Notify administrators when a comment is'] = '通知管理员，当一个评论 ';
+$lang['pending validation'] = '待审核';
+$lang['registered users'] = '注册用户';
+$lang['Save visits in history for'] = '保存访问的历史记录for';
+$lang['simple visitors'] = '单个访问者';
+$lang['This album contains %d photos, added between %s and %s.'] = '此相册包含%d张图片，添加于%s和%s之间。';
+$lang['This album contains %d photos, added on %s.'] = '此相册包含%d张图片，添加于%s。';
+$lang['This album contains no photo.'] = '此相册中没有图片。';
+$lang['Unlock gallery'] = '解锁图库';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Piwigo Android版</em> 使您能够从Android手机或平板电脑连接到您的Piwigo图库，方便您随时随地创建相册和上传图片。';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>Piwigo iOS版</em> 使您能够从iPhone、iPad或iPod Touch连接到您的Piwigo图库，方便您随时随地创建相册和上传图片。';
+$lang['Applications'] = '应用程序';
+$lang['apply automatic sort order'] = '应用自动排序';
+$lang['Automatic sort order'] = '自动排序';
+$lang['Available on'] = '可用在';
+$lang['Available versions for'] = '可用版本';
+$lang['cancel manual order'] = '取消手动排序';
+$lang['Cancel'] = '取消';
+$lang['List'] = '列表';
+$lang['Piwigo for Android'] = 'Piwigo Android版';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS版 (iPhone, iPad, iPod Touch)';
+$lang['Save manual order'] = '保存手动排序';
+$lang['Web Form'] = '网页表单';
+$lang['You can activate only one mobile theme.'] = '您只能启用一套手机版主题';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u 用户因属于有权限的组，所以自动拥有权限。';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe公司的Photoshop Lightroom是一款图片处理软件，用于管理大量的数字图像和后期制作工作。';
+$lang['any visitor can see this album'] = '任何访问者都可查看此相册';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture是Mac上一个功能强大的图片管理、编辑工具。';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture用于在iPhoto上进行专业的图片处理。';
+$lang['Delete multiple size images'] = '删除多尺寸图片';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam是Linux，Windows和MacOSX平台上的免费高级数码照片管理软件。';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam可以查看，管理，编辑，增强，组织，标记和共享图片。';
+$lang['Features include gallery browsing, album creation and photo upload.'] = '其特点包括浏览图库，创建相册和上传图片。';
+$lang['Generate multiple size images'] = '生成多尺寸图片';
+$lang['Groups and users'] = '组和用户';
+$lang['include photos with lower privacy level'] = '包括隐私级别更低的图片';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto是MacOSX上的默认照片管理器。Piwigo export插件可以让您创建新的相册，并将您的图片从iPhoto直接导出到您的Piwigo图库。';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = '在您的Linux上，只需用安装软件包管理器安装Shotwell并启用Piwigo的发布选项。';
+$lang['Permission granted for groups'] = '为组授予的权限';
+$lang['Permission granted for users'] = '为用户授予的权限';
+$lang['Piwigo export plugin for Aperture'] = 'Piwigo export插件 for Aperture';
+$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export插件 for iPhoto';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish插件 for digiKam';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publish插件 for Lightroom';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish插件 for Shotwell';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android RemoteGallery客户端) 是一个开源（GPL v3）的Android平台Piwigo客户端。';
+$lang['Select groups...'] = '选择组';
+$lang['Select users...'] = '选择用户...';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell是一个运行在Linux上的开源数码照片管理软件。它是Ubuntu和Fedora的默认照片管理软件。';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export插件允许您创建相册和导出图片。';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish插件允许您从Lightroom直接导出和同步图片到您的Piwigo图库。';
+$lang['There is no group in this gallery.'] = '这个图库中还没有组。';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '只要安装digiKam和Kipi插件，就可以从digiKam中导出图片到Piwigo。';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = '需要登录且有适当的权限才能查看这个相册';
+$lang['Apply watermark if height is bigger than'] = '如果高度大于此值则添加水印：';
+$lang['Apply watermark if width is bigger than'] = '如果宽度大于此值则添加水印：';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = '默认情况下，兴趣中心置于图片的中心。';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = '对于剪裁过的图片尺寸，如“正方形”，Piwigo将尽可能把兴趣中心包含在内。';
+$lang['No group is permitted to see this private album'] = '没有组被允许查看此非公开相册';
+$lang['Opacity'] = '透明度';
+$lang['Permission management'] = '权限管理';
+$lang['Photo sizes with crop'] = '图片剪裁尺寸';
+$lang['Select a file'] = '选择文件';
+$lang['Select a zone with your mouse to define a new center of interest.'] = '用鼠标选择一个区域，以定义一个新的兴趣中心。';
+$lang['The center of interest is the most meaningful zone in the photo.'] = '兴趣中心是图片中最有意义的区域。';
+$lang['X Position'] = 'X轴位置';
+$lang['X Repeat'] = 'X轴平铺';
+$lang['Y Position'] = 'Y轴位置';
+$lang['add a new watermark'] = '添加新水印';
+$lang['bottom left corner'] = '左下角';
+$lang['bottom right corner'] = '右下角';
+$lang['custom'] = '自定义';
+$lang['middle'] = '中';
+$lang['top left corner'] = '左上角';
+$lang['top right corner'] = '右上角';
+$lang['Multiple Size'] = '多尺寸';
+$lang['%d days'] = '%d天';
+$lang['%d day'] = '%d天';
+$lang['%d hours'] = '%d小时';
+$lang['%d hour'] = '%d小时';
+$lang['%d minutes'] = '%d分';
+$lang['%d minute'] = '%d分';
+$lang['%d months'] = '%d个月';
+$lang['%d month'] = '%d个月';
+$lang['%d seconds'] = '%d秒';
+$lang['%d second'] = '%d秒';
+$lang['%d years'] = '%d年';
+$lang['%d year'] = '%d年';
+$lang['%s ago'] = '%s以前';
+$lang['%s in the future'] = '%s in the future';
+$lang['Added by %s'] = '由%s添加';
+$lang['Numeric identifier : %d'] = '数字ID：%d';
+$lang['Original file : %s'] = '原文件：%s';
+$lang['Posted %s on %s'] = 'Posted %s on %s';
+$lang['Rated %d times, score : %.2f'] = '评分：%d次，得分：%.2f';
+$lang['Sharpen'] = '锐化';
+$lang['Visited %d times'] = '访问数：%d';
+$lang['Watermark'] = '水印';
+$lang['%d weeks'] = '%d周';
+$lang['%d week'] = '%d周';
+$lang['Edit photo'] = '编辑图片';
+$lang['create a new site'] = '创建一个新站点';
+$lang['No order field selected'] = '未选择排序字段';
+$lang['Duplicate selected tags'] = '复制选中的标签';
+$lang['Name of the duplicate'] = '副本的名称';
+$lang['Source tag'] = '源标签';
+$lang['Tag "%s" is now a duplicate of "%s"'] = '标签 "%s" 已是标签 "%s" 的一个副本';
+$lang['Landscape'] = '风景(宽＞高)';
+$lang['Manage photos'] = '管理图片';
+$lang['Minimum height'] = '最小高度';
+$lang['Minimum width'] = '最小宽度';
+$lang['Number of albums per page'] = '每页相册数';
+$lang['Panorama'] = '全景图';
+$lang['Portrait'] = '人像(高＞宽)';
+$lang['View in gallery'] = '在图库中查看';
+$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = '所安装的 %s [%s] 版本跟所要求的版本 [%s] 不兼容';
+$lang['Ratio'] = '比例';
+$lang['between %.2f and %.2f'] = '在 %.2f 与 %.2f 之间';
+$lang['between %d and %d pixels'] = '在 %d 与 %d 像素之间';
+$lang['This group will be set to default'] = '该组将用作默认组';
+$lang['This group will be unset to default'] = '该组将不再用作默认组';
+$lang['No members to manage'] = '没有可管理的用户';
+$lang['Please select at least two groups'] = '请至少选择两个组';
+$lang['Rename'] = '重命名';
+$lang['Type here the name of the new group'] = '在此输入新组的名称';
+$lang['Duplicate'] = '复制';
+$lang['Manage the members'] = '管理用户';
+$lang['Merge selected groups'] = '合并所选组';
+$lang['No group selected, no action possible.'] = '没有组被选中，不能执行任何操作。';
+$lang['Purge user cache'] = '清除用户缓存';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = '相片的分辨率将会被减少到 %dx%d 象素.';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = '由于使用 GD 图形库，因此禁用上传后调整大小';
+$lang['Select at least one tag'] = '至少选择一个标签';
+$lang['Basic settings'] = '基本设置';
+$lang['General'] = '能用';
+$lang['Mail theme'] = '邮件主题';
+?>
Index: /tags/2.6.0RC1/language/zh_CN/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/common.lang.php	(revision 25596)
@@ -0,0 +1,424 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: 简体中文 [CN]
+Version: 2.5.0
+Language URI: http://piwigo.org/ext/extension_view.php?eid=438
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = "简体中文";
+$lang_info['country'] = "中国";
+$lang_info['direction'] = "ltr";
+$lang_info['code'] = "cn";
+$lang_info['zero_plural'] = true;
+
+$lang['%d Kb'] = '%dKb';
+$lang['%d album updated'] = '已更新%d个相册';
+$lang['%d albums updated'] = '已更新%d个相册';
+$lang['%d comment to validate'] = '有%d个评论等待审核';
+$lang['%d comments to validate'] = '有%d个评论等待审核';
+$lang['%d new comment'] = '%d个新评论';
+$lang['%d new comments'] = '%d个新评论';
+$lang['%d comment'] = '%d个评论';
+$lang['%d comments'] = '%d个评论';
+$lang['%d hit'] = '%d次点击';
+$lang['%d hits'] = '%d次点击';
+$lang['%d new photo'] = '%d张新图片';
+$lang['%d new photos'] = '%d张新图片';
+$lang['%d new user'] = '%d个新用户';
+$lang['%d new users'] = '%d个新用户';
+$lang['About'] = "关于";
+$lang['All tags'] = '符合所有标签';
+$lang['Any tag'] = '符合任一标签';
+$lang['At least one listed rule must be satisfied.'] = '列出的条件中至少需要满足一项。';
+$lang['Author'] = "作者";
+$lang['Albums'] = "相册";
+$lang['Album'] = "相册";
+$lang['Close this window'] = "关闭此窗口";
+$lang['Complete RSS feed (photos, comments)'] = '完整的RSS订阅（图片，评论）';
+$lang['Confirm Password'] = "确认密码";
+$lang['Connection settings'] = '注册信息';
+$lang['Login'] = "登录";
+$lang['Contact webmaster'] = '联系站长';
+$lang['Create a new account'] = "新建帐号";
+$lang['Created on'] = '创建于';
+$lang['Creation date'] = "创建日期";
+$lang['Current password is wrong'] = '当前密码错误';
+$lang['Dimensions'] = "尺寸";
+$lang['Display'] = "显示";
+$lang['Each listed rule must be satisfied.'] = '每项列出的条件均需满足。';
+$lang['Email address is missing. Please specify an email address.'] = '缺少email地址。请指定一个email地址。';
+$lang['Email address'] = 'email地址';
+$lang['Enter your personnal informations'] = '输入您的个人信息';
+$lang['Error sending email'] = '发送邮件出错';
+$lang['File name'] = '文件名';
+$lang['File'] = '文件名';
+$lang['Filesize'] = '文件大小';
+$lang['Filter and display'] = '过滤并显示';
+$lang['Filter'] = '过滤';
+$lang['Forgot your password?'] = '忘记密码？';
+$lang['Go through the gallery as a visitor'] = '以访客身份浏览图库';
+$lang['Help'] = '帮助';
+$lang['Identification'] = '用户信息';
+$lang['Photos only RSS feed'] = 'RSS订阅仅限图片';
+$lang['Keyword'] = '关键字';
+$lang['Links'] = '链接';
+$lang['N/A'] = '不适用';
+$lang['New on %s'] = '创建于 %s';
+$lang['Notification'] = 'RSS订阅';
+$lang['Number of items'] = '总数';
+$lang['Original dimensions'] = '原始大小';
+$lang['Password forgotten'] = '忘记密码';
+$lang['Password'] = '密码';
+$lang['Post date'] = '上传日期';
+$lang['Posted on'] = '上传于';
+$lang['Profile'] = '用户信息';
+$lang['Quick connect'] = '快捷登录';
+$lang['RSS feed'] = 'RSS订阅';
+$lang['Register'] = '注册';
+$lang['Registration'] = '注册';
+$lang['Related tags'] = '关联的标签';
+$lang['Reset'] = '重置';
+$lang['Retrieve password'] = '取回密码';
+$lang['Search rules'] = '搜索条件';
+$lang['Search tags'] = '搜索标签';
+$lang['Search'] = '搜索';
+$lang['display available tags'] = '显示现有标签';
+$lang['Since'] = '时间';
+$lang['Sort by'] = '排序字段';
+$lang['Sort order'] = '排序方式';
+$lang['Tag'] = '标签';
+$lang['Tags'] = '标签';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = '通过RSS订阅，您可以从本网站及时获取新图片、相册的更新与新评论的通知。您可以通过RSS阅读器来订阅。';
+$lang['Unknown feed identifier'] = '未知RSS标识';
+$lang['User comments'] = '用户评论';
+$lang['Username'] = '用户名';
+$lang['Visits'] = '访问量';
+$lang['Webmaster'] = '站长';
+$lang['Week %d'] = '星期%d';
+$lang['About Piwigo'] = '关于Piwigo';
+$lang['You are not authorized to access the requested page'] = '您无权访问此页';
+$lang['add this photo to your favorites'] = '将图片添加到收藏';
+$lang['Administration'] = '后台管理';
+$lang['all'] = '所有';
+$lang['ascending'] = '升序';
+$lang['author(s) : %s'] = '作者：%s';
+$lang['Expand all albums'] = '展开所有相册';
+$lang['posted after %s (%s)'] = '发布于 %s (%s) 之后';
+$lang['posted before %s (%s)'] = '发布于 %s (%s) 之前';
+$lang['posted between %s (%s) and %s (%s)'] = '发布于 %s (%s) 和 %s (%s) 之间';
+$lang['posted on %s'] = '发布于 %s';
+$lang['Best rated'] = '评分最高';
+$lang['display best rated photos'] = '显示评分最高的图片';
+$lang['Calendar'] = '图片日历';
+$lang['All'] = '所有';
+$lang['display each day with photos, month per month'] = '逐年逐月逐日显示';
+$lang['View'] = '视图';
+$lang['chronology_monthly_calendar'] = '月历';
+$lang['chronology_monthly_list'] = '月列表';
+$lang['chronology_weekly_list'] = '周列表';
+$lang['Click here if your browser does not automatically forward you'] = '如果您的浏览器不支持自动跳转，请点击这里';
+$lang['comment date'] = '评论日期';
+$lang['Comment'] = '评论';
+$lang['Your comment has been registered'] = '评论已保存';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = '反灌水系统：请稍后再发表下一个评论';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = '因不符合规则，您的评论未能保存';
+$lang['An administrator must authorize your comment before it is visible.'] = '评论经管理员审核后才能显示。';
+$lang['This login is already used by another user'] = '用户名已经存在';
+$lang['Comments'] = '评论';
+$lang['Add a comment'] = '发表评论';
+$lang['created after %s (%s)'] = '创建于 %s (%s) 之后';
+$lang['created before %s (%s)'] = '创建于 %s (%s) 之前';
+$lang['created between %s (%s) and %s (%s)'] = '创建于 %s (%s) 和 le %s (%s) 之间';
+$lang['created on %s'] = '创建于 %s';
+$lang['Customize'] = '自定义';
+$lang['Your Gallery Customization'] = '自定义页标题';
+$lang['day'][0] = '星期日';
+$lang['day'][1] = '星期一';
+$lang['day'][2] = '星期二';
+$lang['day'][3] = '星期三';
+$lang['day'][4] = '星期四';
+$lang['day'][5] = '星期五';
+$lang['day'][6] = '星期六';
+$lang['Default'] = '默认';
+$lang['delete this photo from your favorites'] = '从收藏夹中删除此图片';
+$lang['Delete'] = '删除';
+$lang['descending'] = '降序';
+$lang['Download'] = '下载';
+$lang['Download this file'] = '下载此文件';
+$lang['edit'] = '编辑';
+$lang['wrong date'] = '错误的日期';
+$lang['excluded'] = '不包括';
+$lang['Your favorites'] = '收藏夹';
+$lang['display your favorites photos'] = '显示加入收藏的图片';
+$lang['Favorites'] = '收藏';
+$lang['First'] = '首页';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = '系统维护中，请稍后再试。';
+$lang['Page generated in'] = '页面创建时间';
+$lang['guest'] = '游客';
+$lang['Hello'] = '您好';
+$lang['available for administrators only'] = '需要管理员权限';
+$lang['display this album'] = '显示此相册根目录下的图片';
+$lang['display last user comments'] = '显示最新用户评论';
+$lang['customize the appareance of the gallery'] = '界面个性化设置';
+$lang['search'] = '搜索';
+$lang['Home'] = '主页';
+$lang['in this album'] = '在此相册里';
+$lang['in %d sub-album'] = '在%d个子相册中';
+$lang['in %d sub-albums'] = '在%d个子相册中';
+$lang['included'] = '包括';
+$lang['Invalid password!'] = '密码不正确！';
+$lang['Language'] = '语言';
+$lang['last %d days'] = '最近%d天';
+$lang['Last'] = '最后';
+$lang['Logout'] = '注销';
+$lang['obligatory'] = '必填';
+$lang['display a calendar by creation date'] = '按创建日期显示日历';
+$lang['display all photos in all sub-albums'] = '显示所有相册和子相册的图片';
+$lang['return to normal view mode'] = '返回到普通视图';
+$lang['display a calendar by posted date'] = '按发布日期显示日历';
+$lang['month'][10] = '十月';
+$lang['month'][11] = '十一月';
+$lang['month'][12] = '十二月';
+$lang['month'][1] = '一月';
+$lang['month'][2] = '二月';
+$lang['month'][3] = '三月';
+$lang['month'][4] = '四月';
+$lang['month'][5] = '五月';
+$lang['month'][6] = '六月';
+$lang['month'][7] = '七月';
+$lang['month'][8] = '八月';
+$lang['month'][9] = '九月';
+$lang['Most visited'] = '最受关注';
+$lang['display most visited photos'] = '显示查看次数最多的图片';
+$lang['Unknown identifier'] = '帐号不存在';
+$lang['New password'] = '新密码';
+$lang['Rate this photo'] = '评分';
+$lang['Next'] = '下一页';
+$lang['no rate'] = '没有评分';
+$lang['Photos posted within the last %d day.'] = '只显示最近%d天的图片。';
+$lang['Photos posted within the last %d days.'] = '只显示最近%d天的图片。';
+$lang['password updated'] = '密码已更新';
+$lang['Recent period must be a positive integer value'] = '再次发表的间隔时间必须是正整数';
+$lang['photo'] = '图片';
+$lang['Click on the photo to see it in high definition'] = '点击查看高清图片';
+$lang['Show file metadata'] = '显示文件元数据';
+$lang['Powered by'] = 'Powered by';
+$lang['Preferences'] = '使用偏好';
+$lang['Previous'] = '前页';
+$lang['Random photos'] = '随机图片';
+$lang['display a set of random photos'] = '显示一组随机图片';
+$lang['Recent albums'] = '最新相册';
+$lang['display recently updated albums'] = '显示最近更新的相册';
+$lang['Recent period'] = '再次发表的间隔时间';
+$lang['Recent photos'] = '最新图片';
+$lang['display most recent photos'] = '显示最新图片';
+$lang['Redirection...'] = '跳转至...';
+$lang['Please, enter a login'] = '请输入用户名';
+$lang['login mustn\'t end with a space character'] = '用户名不能以空格结尾';
+$lang['login mustn\'t start with a space character'] = '用户名不能以空格开头';
+$lang['this login is already used'] = '此用户名已存在';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = '邮箱地址格式必须符合标准的 xxx@yyy.eee (例如： jack@altern.org)';
+$lang['Auto login'] = '自动登录';
+$lang['remove this tag from the list'] = '从列表中删除此标签';
+$lang['representative'] = '相册缩略图';
+$lang['Search for Author'] = '作者';
+$lang['Search in albums'] = '在相册中搜索';
+$lang['Search by date'] = '按日期搜索';
+$lang['Date'] = '开始日期';
+$lang['End-Date'] = '截止日期';
+$lang['Kind of date'] = '日期类型';
+$lang['Search for words'] = '搜索关键词';
+$lang['Search for all terms'] = '符合全部关键词';
+$lang['Search for any term'] = '符合任一关键词';
+$lang['Empty query. No criteria has been entered.'] = '空查询。未输入任何条件。';
+$lang['Search results'] = '搜索结果';
+$lang['Search in sub-albums'] = '也在子相册中搜索';
+$lang['searched words : %s'] = '搜索词：%s';
+$lang['Contact'] = '联系';
+$lang['set as album representative'] = '设为相册缩略图';
+$lang['Show number of comments'] = '显示评论数';
+$lang['Show number of hits'] = '显示点击量';
+$lang['slideshow'] = '幻灯片放映';
+$lang['stop the slideshow'] = '停止幻灯片放映';
+$lang['Specials'] = '特色浏览';
+$lang['SQL queries in'] = 'SQL搜索语句';
+$lang['display only recently posted photos'] = '只显示最新图片';
+$lang['return to the display of all photos'] = '返回到显示所有图片';
+$lang['the beginning'] = '起始';
+$lang['Thumbnails'] = '缩略图';
+$lang['Menu'] = '菜单';
+$lang['A comment on your site'] = '一个网站评论';
+$lang['today'] = '今天';
+$lang['Rating score'] = '分数';
+$lang['Update your rating'] = '更改评分';
+$lang['the username must be given'] = '用户名必需';
+$lang['useful when password forgotten'] = '万一忘记密码时有用';
+$lang['Quick search'] = '快捷搜索';
+$lang['Connected user: %s'] = '在线用户：%s';
+$lang['IP: %s'] = 'IP地址：%s';
+$lang['Browser: %s'] = '浏览器：%s';
+$lang['Author: %s'] = '上传者：%s';
+$lang['Comment: %s'] = '评论：%s';
+$lang['Comment by %s'] = '由 %s 评论';
+$lang['User: %s'] = '用户：%s';
+$lang['Email: %s'] = 'Email：%s';
+$lang['Admin: %s'] = '管理员：%s';
+$lang['Registration of %s'] = '%s 的注册';
+$lang['Album: %s'] = '相册：%s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = '游客用户的状态出现问题，现在将启用默认状态。请通知站长。';
+$lang['this email address is already in use'] = '此email邮箱已存在';
+$lang['Album results for'] = '相册的结果';
+$lang['Tag results for'] = '符合标签搜索的结果';
+$lang['from %s to %s'] = '从 %s 到 %s';
+$lang['Play of slideshow'] = '播放';
+$lang['Pause of slideshow'] = '暂停';
+$lang['Repeat the slideshow'] = '重复播放';
+$lang['Not repeat the slideshow'] = '停止重复播放';
+$lang['Reduce diaporama speed'] = '减慢播放速度';
+$lang['Accelerate diaporama speed'] = '加快播放速度';
+$lang['Submit'] = '提交';
+$lang['Yes'] = '是';
+$lang['No'] = '否';
+$lang['%d photo'] = '%d张图片';
+$lang['%d photos'] = '%d张图片';
+$lang['%d photo is also linked to current tags'] = '当前标签还有%d张关联的图片';
+$lang['%d photos are also linked to current tags'] = '当前标签还有%d张关联的图片';
+$lang['display photos linked to this tag'] = '只显示与此标签关联的图片';
+$lang['photos posted during the last %d days'] = '在最近%d天里发布的图片';
+$lang['Piwigo Help'] = 'Piwigo帮助';
+$lang['Rank'] = '分类';
+$lang['group by letters'] = '按字母顺序分类';
+$lang['letters'] = '字母';
+$lang['show tag cloud'] = '显示标签云';
+$lang['cloud'] = '云';
+$lang['Are you sure?'] = '确定？';
+$lang['Reset to default values'] = '重置为默认值';
+$lang['delete all photos from your favorites'] = '删除收藏夹里的所有图片';
+$lang['Sent by'] = '发送于';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = '您的浏览器已关闭或者不支持cookies. 您必须开启cookies才能登录。';
+$lang['Edit a comment'] = '编辑一个评论';
+$lang['(!) This comment requires validation'] = '(!) 此评论需要审核';
+$lang['Welcome'] = '欢迎';
+$lang['Welcome to your Piwigo photo gallery!'] = '欢迎来到您的 Piwigo 图库！';
+$lang['... or browse your empty gallery'] = '...或浏览您的空图库';
+$lang['... or please deactivate this message, I will find my way by myself'] = '...或停用此信息，我会自己找到我的方法';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = '您好 %s，您的Piwigo图库是空的！';
+$lang['I want to add photos'] = '我想添加图片';
+$lang['Manage this user comment: %s'] = '管理此用户评论：%s';
+$lang['This author modified following comment:'] = '此作者修改了以下的评论：';
+$lang['This author removed the comment with id %d'] = '此作者删除了id为 %d 的评论';
+$lang['Sent by'] = '发送人';
+$lang['html tags are not allowed in login'] = '登录名中不允许使用html标签';
+$lang['%d rates'] = '%d个评分';
+$lang['Rating score'] = '评价得分';
+$lang['The number of photos per page must be a not null scalar'] = '每页图片数量必须大于0';
+$lang['Number of photos per page'] = '每页图片数';
+$lang['display photos linked to this tag'] = '在此标签上显示相片链接';
+$lang['Invalid username or email'] = '用户名或email地址无效';
+$lang['Password reset is not allowed for this user'] = '此用户无法进行密码重置';
+$lang['User "%s" has no email address, password reset is not possible'] = '用户 "%s" 没有email地址，无法进行密码重置';
+$lang['Someone requested that the password be reset for the following user account:'] = '有人申请了重置该帐户的密码：';
+$lang['Username "%s" on gallery %s'] = '用户名 "%s" 于 图库 %s';
+$lang['To reset your password, visit the following address:'] = '请访问以下地址以对密码进行重置：';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = '如果这是个错误，请忽略本邮件，不会有任何影响。';
+$lang['Password Reset'] = '密码已重置';
+$lang['Check your email for the confirmation link'] = '请查看您邮件中的确认链接';
+$lang['Invalid key'] = '无效的KEY';
+$lang['The passwords do not match'] = '密码不符';
+$lang['Your password has been reset'] = '您的密码已经重置';
+$lang['Return to home page'] = '返回主页';
+$lang['Please enter your username or email address.'] = '请输入您的用户名或email地址。';
+$lang['You will receive a link to create a new password via email.'] = '您将通过邮件收到一个创建新密码的链接。';
+$lang['Username or email'] = '用户名或email地址';
+$lang['Change my password'] = '更改密码';
+$lang['Enter your new password below.'] = '在下面输入您的新密码。';
+$lang['EXIF Metadata'] = 'EXIF元数据';
+$lang['IPTC Metadata'] = 'IPTC Metadata';
+$lang['Edit'] = '编辑';
+$lang['Hello %s,'] = '您好 %s，';
+$lang['Here are your connection settings'] = '您的注册信息';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = '如果您认为您收到的本邮件有误，请联系我们：%s';
+$lang['large'] = 'L - 大';
+$lang['medium'] = 'M - 中';
+$lang['Original'] = '原始尺寸';
+$lang['Password: %s'] = '密码：%s';
+$lang['Send my connection settings by email'] = '发送注册信息到我的email';
+$lang['small'] = 'S - 小';
+$lang['square'] = 'Square';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = '注册成功，您不久将收到注册信息邮件。欢迎您的加入！';
+$lang['Thank you for registering at %s!'] = '感谢您注册%s!';
+$lang['thumb'] = '缩略图';
+$lang['Username modification'] = '修改用户名';
+$lang['Username: %s'] = '用户名：%s';
+$lang['xlarge'] = 'XL - 特大';
+$lang['xxlarge'] = 'XXL - 超大';
+$lang['Your username has been successfully changed to : %s'] = '您的用户名已成功修改为：%s';
+$lang['Photo sizes'] = '缩放图片';
+$lang['Desktop'] = '桌面版';
+$lang['Mobile'] = '手机版';
+$lang['Show latest comments first'] = '新评论在先';
+$lang['Show oldest comments first'] = '旧评论在先';
+$lang['View in'] = '查看';
+$lang['2small'] = 'XXS - tiny';
+$lang['xsmall'] = 'XS - 特小';
+$lang['Date created, new &rarr; old'] = '创建日期，新 &rarr; 旧';
+$lang['Date created, old &rarr; new'] = '创建日期，旧 &rarr; 新';
+$lang['Date posted, new &rarr; old'] = '发布日期，新 &rarr; 旧';
+$lang['Date posted, old &rarr; new'] = '发布日期，旧 &rarr; 新';
+$lang['File name, A &rarr; Z'] = '文件名，A &rarr; Z';
+$lang['File name, Z &rarr; A'] = '文件名，Z &rarr; A';
+$lang['Manual sort order'] = '手动排序';
+$lang['Numeric identifier, 1 &rarr; 9'] = '数字ID，1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = '数字ID，9 &rarr; 1';
+$lang['Photo title, A &rarr; Z'] = '图片标题，A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = '图片标题，Z &rarr; A';
+$lang['Rating score, high &rarr; low'] = '评分，高 &rarr; 低';
+$lang['Rating score, low &rarr; high'] = '评分，低 &rarr; 高';
+$lang['Visits, high &rarr; low'] = '访问量，高 &rarr; 低';
+$lang['Visits, low &rarr; high'] = '访问量，低 &rarr; 高';
+$lang['%d rate'] = '%d个评分';
+$lang['Bad request'] = '请求错误';
+$lang['Forbidden'] = '禁止';
+$lang['Page not found'] = '页面未找到';
+$lang['Permalink for album not found'] = '未找到相册的固定链接';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo遇到了一个不可恢复的错误';
+$lang['Requested album does not exist'] = '相册不存在';
+$lang['Requested tag does not exist'] = '标签不存在';
+$lang['Email address is mandatory'] = '必须输入email地址';
+$lang['Username is mandatory'] = '必须输入用户名';
+$lang['mandatory'] = '必填';
+$lang['Website'] = '网站';
+$lang['Your website URL is invalid'] = '你的网站地址无效';
+$lang['Email'] = '电子邮件';
+$lang['First Page'] = '第一页';
+$lang['Go back to the album'] = '返回相册';
+$lang['Last Page'] = '最后一页';
+$lang['Password is missing. Please enter the password.'] = '密码未输入，请输入密码。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '密码确认未完成，请确认所选定的密码。';
+$lang['%d photos per page'] = '每页 %d 张相片 ';
+$lang['Theme'] = '主题';
+?>
Index: /tags/2.6.0RC1/language/zh_CN/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,126 @@
+<h2>编辑相册</h2>
+
+<h3>信息</h3>
+
+<ul>
+
+  <li><strong>名字</strong>: 重命名相册 (物理路径相册可以进行虚拟重命名).</li>
+
+  <li><strong>描述</strong>: 简短的文字来介绍相册内容，
+  这个文本将显示在相册列表页面的缩略图下面。</li>
+
+</ul>
+
+<h3>移动</h3>
+
+<p>如果是虚拟的相册，你可以移动它。移动相册意味着改变其父相册。</p>
+
+<h3>选项</h3>
+
+<ul>
+
+  <li><strong>访问类型</strong>: 权限管理. 如果一个相册变为私有, 那么它的子相册也变为私有.
+如果一个相册变为公共,那么它的父相册也变为公共相册.</li>
+
+  <li><strong>上锁</strong>: 相册和其子相册被临时禁用维护。</li>
+
+  <li><strong>评论</strong>: 授权用户是否可评论相册中的照片.</li>
+
+</ul>
+
+<p>你可以在"属性"管理页面上管理这些选项 ( <span
+class="pwgScreen">评论</span>, <span class="pwgScreen">上锁</span>,
+<span class="pwgScreen">公共/私有</span>, <span
+class="pwgScreen">Representative</span> 只有管理员可见 <span
+class="pwgScreen">&raquo; Albums &raquo; Properties</span>).</p>
+
+<h3>排序</h3>
+
+<p>使用默认的图像排序顺序。</p>
+
+<p>指出这种排序顺序是否也将应用到子相册。</p>
+
+<p>指定这个相册的排序标准</p>
+<ul>
+<li><strong>创建日期</strong>: 图片拍摄日期.</li>
+<li><strong>发布日期</strong>: 同步(到画廊的)日期</li>
+<li><strong>平均得分 (*)</strong>: 用户对图片的评分会影响平均得分.</li>
+<li><strong>访问量 (*)</strong>: 访问次数会影响最高访问量的排名.</li>
+<li><strong>文件名</strong>: 属性字段中的名字</li>
+<li><strong>Id</strong>: 内部Id (Id是递增的).</li>
+</ul>
+<p><strong>(*)</strong>注意: 务必自己测试这些排序，因为它们可能获得意想不到的结果。</p>
+
+
+<h3>Representant</h3>
+
+<p>The album representative is the thumbnail displayed on the main page (<span class="pwgScreen">category.php</span>) to represent
+the album when
+it contains only sub-albums and no direct photo (just as the root album).</p>
+photo of a album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: one of the action buttons let you set the current photo as the representative for the
+  displayed album. This button is available only for administrators.</li>
+
+  <li><span class="pwgScreen">Modify informations about a photo</span> in
+  administration. This screen can be reached from <span
+  class="pwgScreen">picture.php</span> or <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>. See the help of this screen for
+  details.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Properties,
+  Representative</span>. See the help of this screen for details.</li>
+
+  <li><span class="pwgScreen">Edit album</span> (the present screen).</li>
+
+</ul>
+
+<p>The choice of a representative depends on the 
+<code>allow_random_representative</code> configuration parameter (see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In default mode (<code>allow_random_representative</code> set to false),
+each album containing at least one element is represented by a fixed
+element. Once set (at album creation), the representative changes only
+when an administrator ask for it. If the representative is not appropriate,
+you can ask to <strong>Find a new representant by random</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to <span class="pwgScreen">Modify
+informations about a photo</span> screen. The only option on the current screen
+is the <strong>Delete representant</strong> button.</p>
+
+<h3>Link all album photos to a new album</h3>
+
+<ul>
+
+<li><strong>Virtual album name</strong>: Name of the new album to be created, 
+all photos of the current category will be linked to the new one.</li>
+
+<li><strong>Parent album</strong>: Where the new album will be, 
+leave empty to create it at root.</li>
+
+</ul>
+
+<h3>Link all album photos to existing albums</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Choose the destination album.</li>
+
+</ul>
+
+<h3>Send an information email to group members</h3>
+
+<ul>
+
+<li><strong>Group</strong>: recipients group</li>
+
+<li><strong>Mail content</strong>: Free text to send to them.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/zh_CN/help/cat_move.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/cat_move.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/cat_move.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>移动虚拟相册集</h2>
+
+<p>虚拟相册集可以拥有上一级相册</p>
+
+<h3>移动虚拟相册集</h3>
+
+<p>选择你你将要移动的虚拟相册集。
+  若列表中无可选项，则说明您目前还未创建任何虚拟相册集。</p>
+
+<h3>新的上级相册</h3>
+
+<p>选择一个新的上级相册（虚拟或实际的）
+    若您没有选择任何一个上级相册集，被选中的虚拟相册集将会被移动到根目录下。
+    一个相册集无法被移动到本集当中或其子集当中去</p>
Index: /tags/2.6.0RC1/language/zh_CN/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>相册选项</h2>
+
+<p>一次性对多个相册进行选项管理</p>
+
+<dl>
+
+<dt>评论</dt>
+<dd>若相册已激活评论功能，图片将可以接收来自访问者的评论。</dd>
+
+<dt>锁定</dt>
+<dd>锁定的相册将暂时无法维护。仅有管理员可以浏览相册。</dd>
+
+<dt>公开与隐私</dt>
+<dd>若相册为隐私相册，仅授权访问的用户或组可以浏览。</dd>
+
+<dt>封面图片</dt>
+<dd>本选项仅在您将<code>allow_random_representative</code> (详情请见<span
+class="filename">include/config_defaults.inc.php</span>)中的设置参数调整为
+<em>true</em>后，方可进行管理。
+    每个相册均可以随机将目录中的图片作为封面，或您也可以自行设定将某个图片作
+为该目录的封面。</dd>
+</dl>
Index: /tags/2.6.0RC1/language/zh_CN/help/cat_perm.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/cat_perm.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/cat_perm.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>编辑相册许可</h2>
+
+<p>本页仅对个人分类有效。您可以对个人或组用户进行分类访问授权。</p>
+
+<h3>组</h3>
+
+<p>可以授权或拒绝组用户对当前分类的访问。通过修改组的授权，这些组内的成员将被拒绝或授权访问该分类。</p>
+
+<h3>用</h3>
+
+<p>可以拒绝或允许个体用户连接到分类。访问异常的组内用户可以被拒绝访问。</p>
Index: /tags/2.6.0RC1/language/zh_CN/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/configuration.html	(revision 25596)
@@ -0,0 +1,103 @@
+<h2>配置</h2>
+
+<p>这个页面可让管理员做基本的配置。确实，这个页面所显示的简单的配置参数已足够大多数的管理员使用，如果你想看到更多的(和高级的)配置参数，请查阅此文件 <span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>这个页面分成几个章节，以主题来重组配置参数。</p>
+
+
+<h3>主要</h3>
+<ul>
+  <li><strong>相册标题</strong>: 用在RSS和电子邮件通知里。</li>
+
+  <li><strong>页面横幅</strong>: 在每个公共页面顶部显示。</li>
+
+  <li><strong>相册地址</strong>: 用在RSS通知里。</li>
+
+  <li><strong>锁定相册</strong>: 在维护时锁定所有相册，只有管理员能访问。</li>
+
+  <li><strong>等级</strong>: 开启图片的等级功能。</li>
+
+  <li><strong>客人可作等级投票</strong>: 即使没注册的用户也可以对图片进行等级投票。</li>
+
+  <li><strong>允许用户注册</strong>: 注册是免费的。</li>
+
+  <li><strong>用户注册时必须填写邮件地址</strong>: 在注册或者更新个人资料时将会对邮件地址进行检测，除了在管理员后台直接的操作之外。</li>
+
+  <li><strong>当前新用户注册时发邮件给管理员</strong>: 管理员将会收到每个注册通知。</li>
+
+</ul>
+
+<h3>历史</h3>
+
+  <p>在访问<span class="pwgScreen">category.php</span> 和 <span class="pwgScreen">picture.php</span> 页面时，将会保存到
+  <code>历史</code> 表。</p>
+  
+  <p>访问记录将会显示在 <span  class="pwgScreen">管理员, 特殊, 历史</span>.</p>
+
+<ul>
+  <li><strong>保存访客的页面记录</strong>: 访客访问过的页面将会被记录。</li>
+
+  <li><strong>保存用户的页面记录</strong>: 注册用户访问过的页面将会被记录。</li>
+
+  <li><strong>保存管理员的页面记录</strong>: 管理员访问过的页面将会被记录。</li>
+
+</ul>
+
+<h3>评论</h3>
+<ul>
+
+  <li><strong>全部皆能评论</strong>: 即使没注册的访客也能发表评论。</li>
+
+  <li><strong>每页显示的评论数。</strong></li>
+
+  <li><strong>审核Validation</strong>: 管理员在评论正式发布前需要先审核，审核用户评论的页面是 <span class="pwgScreen">管理员, 相片,
+  评论</span>.</li>
+
+  <li><strong>当有评论时即发邮件通知管理员</strong>:当用户发表了有效的评论后，即发送邮件通知管理员。</li>
+
+  <li><strong>当有评论需要审核时发邮件通知管理员</strong>:当用户发表了需要审核的评论后，即发送邮件通知管理员。
+
+审核用户评论的页面是 <span class="pwgScreen">管理员, 相片, 评论</span>.</li>
+
+</ul>
+
+<!--TODO --><h3>上传</h3>
+<ul>
+<!--TODO -->  <li><strong>每次都显示上传链接</strong>: 如果存在可以上传的类别，添加的链接将在每个类别里显示。</li>
+<!--TODO -->  <li><strong>用户访问级别的上传</strong>: 允许限制用户上传</li>
+  <li><strong>当相片上传时发邮件通知管理员</strong>: 每个用户上传相片后管理员将收到邮件通知。</li>
+</ul>
+
+<h3>默认显示</h3>
+
+<p>在这里你可以为未登录的客人改变默认的显示设置，一旦他们登录后，用户自己的设置将覆盖这些默认设置
+(在<span class="pwgScreen">自定义</span>里修改).</p>
+
+<p>每个用户都可以更改自己的显示设置，但需要注意这个页面<span class="pwgScreen">管理员,
+身份验证, 用户</span>, 在这里你可以更改用户列表里的用户的显示设置。</p>
+
+<ul>
+
+  <li><strong>语言</strong>: 主要考虑的只是 Piwigo 的标签。类别名称、相片名称和所有注解说明均不被本地化。</li>
+
+  <li><strong>每行相片数量</strong></li>
+
+  <li><strong>每页的行数</strong></li>
+
+  <li><strong>主题界面</strong></li>
+
+  <li><strong>最近的时间段</strong>: 以天为单位。在这个时间段内的相片将被显示，必须要大于1天。</li>
+
+  <li><strong>展开所有类别</strong>: 在菜单里以默认方式展开所有类别 <em>注意</em>: 这个操作是很消耗资源的，同时如果你的类别树下包含了很多子类别，将会产生一个巨大的菜单。</li>
+
+  <li><strong>显示评论的数量</strong>: 在缩略图页面显示每个相片的评论。很消耗资源。</li>
+
+  <li><strong>显示点击数</strong>: 只有在高级配置参数 $conf['show_nb_hits'] = true; 时，才会在缩略图页面里的相片缩略图下显示点击数。<br />
+  注意：此选项默认为 false 。</li>
+
+  <li><strong>相片的最大宽度</strong>: 最大宽度的显示。如果相片大于此设置，其将被调整大小以显示。如果你考虑这个选项，你最好考虑修改你的相片以代替之。</li>
+
+  <li><strong>相片最大高度</strong>: 与前一项说明相同</li>
+
+</ul>
+
Index: /tags/2.6.0RC1/language/zh_CN/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,51 @@
+<h2>模板扩展配置</h2>
+
+<h3>关于</h3>
+<p>Your Piwigo gallery can be customised by replacing existing template files with customised versions.  For example, the default header template (header.tpl) can be replaced by a customised header template (my-header.tpl).  After submitting the changes to the database the gallery will display the customised header instead of the original header.<br>
+Template extensions are a powerful way to create customised themes for both new and advanced users.  Used together with the LocalFiles Editor you can create your own child themes.</p>
+
+<h3>原始模板</h3>
+<p>A theme contains a number of template files that make up the gallery pages.  These are the original templates.</p>
+
+<h3>Optional URL Keyword</h3>
+<p>These are words found in the gallery URL after the module name.  They can also be active permalinks  (See the permalink documentation for more information).  <a href="#warnings">WARNING:</a> if the same original template and same keyword is used on more than one customised template only the last one is active.</p>
+
+<h3>Bound Theme</h3>
+<p>The bound theme is the theme from which the template files are being replaced.</p>
+
+<h3>Where are the original templates?</h3>
+<p>Original templates are the template files shipped with each theme.  These are saved in <em>/themes/default/template</em> (or <em>themes/<theme name>/template</em>).  These template files should not be edited in place as changes will be lost with theme upgrades.<br>
+Supported original templates include:</p>
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> and/or <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> and/or <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> and/or <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> and/or <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> and/or <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> and/or <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> and/or <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+<h3>Saving customised templates</h3>
+<p>Customised templates should be saved in the template-extension folder or subfolders.  For example, <em>/template-extension/my-default/header.tpl</em> (or <em>/template-extension/<my-theme-name>/header.tpl</em>)  Template files can have any name with a .tpl extension.  The template files in subfolders appear in the Template configuration screen as available custom templates.</p>
+<h3>Activating customised templates</h3>
+<p>Select the original template to replace.  Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword.  Select a bound theme and the changes will be effective on that theme.  Submit the changes to the database.</p>
+<h3>Deactivating customised templates</h3>
+<p>Unselect the original template and submit the changes to the database.<br>
+Delete the customised template files from the template-extension folder.</p>
+
+<a name="warnings"></a>
+<h3>Warnings</h3>
+<ul>
+  <li><strong>The original template</strong> must be the original template otherwise you may have unpredictable results.</li>
+  <li>If the same original template and same URL keyword is used on more than one customised template only the last one is active.</li>
+  <li>Distributed sample template files are for test purposes only.  Do not edit them.  Create your own ones or copy existing theme template files into <em>/template-extension/<my-theme>/</em></li>
+  <li>When the customised template is deleted the original template file is immediately reactivated.</li>
+</ul>
Index: /tags/2.6.0RC1/language/zh_CN/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/group_list.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>组列表</h2>
+
+<p>可以在此维护组</p>
+
+<h3>添加组</h3>
+
+<p>管理员有权添加组</p>
+
+<h3>组列表</h3>
+
+<p>于以下元素，该组列表允许：</p>
+
+
+<ul>
+  <li>访问会员列表</li>
+  <li>访问管理许可证页面</li>
+  <li>删除组（需要确认）</li>
+  <li>切换为“默认”状态（需要确认）</li>
+</ul>
+
+<h3>默认组</h3>
+<p>一旦有新用户注册或有新的管理员账户创建，均会被自动加入到这个默认的组里来</p>
Index: /tags/2.6.0RC1/language/zh_CN/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,21 @@
+<p>有几个方法可以把相片添加到您的画廊:</p>
+
+<ul>
+  <li>使用浏览器<strong>直接上传</strong> 是最简单直接的方法。这要看您浏览器和服务器的性能。如果您要上传大批量的图片，或者上传过程中遇到了一些问题，那么可以尝试另外的一些方法。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">使用直接上传</a></p>
+
+<ul>
+  <li><strong>pLoader</strong> 是一个桌面应用程序，需安装到您的电脑里。您只需将相片拖拉到 pLoader 窗口里，点击 <em>"上传到 Piwigo"</em> ，然后就让 pLoader 为您做剩下的工作吧。您也可以在 Piwigo 网站里找到其他的桌面应用软件，如 <strong>WinToPiwigo</strong> 或者 <strong>Digikam</strong> 导出插件.</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">使用 pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP 上传</strong> 是非常推荐的方法，其可以一次性上传大批量的相片。以下向导将教您如何准备您的相片。使用 FTP 方式，您可以很精确地控制您服务器上的相片目录的物理结构。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">使用 FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/zh_CN/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/help_groups.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>组是设置一个用户列表权限的便捷方式。</p>
+
+<p>在 <span class="pwgScreen">管理员 &raquo; 身份验证 &raquo; 组</span> 创建组和在 <span class="pwgScreen">管理员 &raquo; 身份验证 &raquo; 用户</span> 里创建组里的用户。</p>
+
+<p>一个用户可同时存在于几个组里。授权的优先级大于禁止 : 如果用户 "jack" 同时属于 "family" 和 "friends" 组, 只有 "family" 组可以看到类别 "Christmas 2003" 那么 "jack" 就可以看到 "Christmas 2003".</p>
+
Index: /tags/2.6.0RC1/language/zh_CN/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/help_misc.html	(revision 25596)
@@ -0,0 +1,4 @@
+<p>当你建立了相册后，就可以通过 <span class="pwgScreen">管理员 &raquo; 设置 &raquo; 默认显示</span> 修改默认的显示属性。 每个新注册的用户将使用这些默认的设置。</p>
+
+<p>如果你有其他问题，Piwigo 社区将欢迎你到 <a href="http://cn.piwigo.org/forum"> 它的论坛</a>。</p>
+
Index: /tags/2.6.0RC1/language/zh_CN/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,50 @@
+<fieldset>
+<legend>相片的权限</legend>
+
+<p>每张相片都有一个 <strong>私有级别</strong> (一个锁). 每个用户也有一个私有级别 (一个钥匙). 共有5个私有级别:</p>
+<ol>
+  <li>没有</li>
+  <li><em>联系人</em></li>
+  <li><em>朋友 (比联系人高级)</em></li>
+  <li><em>家庭 (比朋友高级)</em></li>
+  <li><em>管理员 (比任何级别都要高)</em></li>
+</ol>
+
+<p>高级别的拥有低级别的权限。一个拥有权限的用户，其私有级别越高，所能看到的相片也越多。</p>
+
+<p>例如，如果这张相片 "peter_wedding-0024.jpg" 拥有 <em>"家庭"</em> 的私有级别, 那么:</p>
+<ul>
+  <li>Peter (是一个 <em>"管理员"</em>) 将可以看到此相片，因为 <em>"管理员"</em> 能看到所有相片</li>
+  <li>Beth (是一个 <em>"家庭"</em> 成员) 将可以看到此相片</li>
+  <li>Mary (只是一个 <em>"朋友"</em>) 将不能看到此相片</li>
+</ul>
+
+<p>如果一个用户没有看到类别内容的权限，那么他也不能看到自己的类别，甚至是它的标题。同样的规则也适用于标签。</p>
+
+<p>您可以在 <span class="pwgScreen">管理员 &raquo; 用户 &raquo; 管理</span> 的界面里为用户设置私有级别。</p>
+
+</fieldset>
+
+<fieldset>
+<legend>类别的权限</legend>
+
+<p>如果私有级别不能满足您的需要，您也可以设置类别上的权限以管理用户或组。您可以同时设置相片和类别上的权限，这并没有冲突。</p>
+
+<p>如果您想禁止类别的访问，可以改变类别访问类型为 "私有" </p>
+
+<p>您可以通过
+(<span class="pwgScreen">管理员 &raquo; 类别 &raquo; 管理 &raquo; 修改</span>) 将某个类别设置为私有，或者通过设置选项
+(<span class="pwgScreen">管理员 &raquo; 类别 &raquo; 属性 &raquo; 公有 / 私有</span>) 设置全局的类别属性.</p>
+
+<p>当类别被设置为私有时，您可以通过以下3个界面对用户组和用户的权限进行管理:</p>
+
+<ul>
+
+  <li><span class="pwgScreen">管理员 &raquo; 用户 &raquo; 管理 &raquo;  权限设置</span> (每个用户一个链接)</li>
+
+  <li><span class="pwgScreen">管理员 &raquo; 用户 &raquo; 组 &raquo;  权限设置</span> (每个组一个链接)</li>
+
+  <li><span class="pwgScreen">管理员 &raquo; 类别 &raquo; 管理 &raquo; 权限设置</span> (每个类别一个链接)</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/zh_CN/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,6 @@
+<p>在类别里显示的相片相当于文件夹里的文件。</p>
+
+<p>你也可以将一张图片放在多个类别里显示，在你的网站服务器里没有重复的文件。在图片修改界面可以将图片关联到任何类别里 (任何一个管理员都可以从相册进入到图片修改页面).</p>
+
+<p>虚拟类别就建立在这个概念上 : 他们并没有对应的文件夹。可以通过 <span class="pwgScreen">管理员 &raquo; 类 &raquo; 管理</span> 创建虚拟类别。</p>
+
Index: /tags/2.6.0RC1/language/zh_CN/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/history.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>历史</h2>
+
+<p在这个页面中，您可以查看相册的访问历史记录，这与您在如下页面中的配置有关：管理 &raquo; 定制 &raquo; 选项 &raquo; 历史</p>
+	
+<h3>统计</h3>
+<ul>
+  <p>如果您选择记录 (<span class="pwgScreen">index.php</span> 和 <span class="pwgScreen">picture.php</span>) 的访问量，您可以在这个标签页查看数据。</p>
+	<li><strong>全局统计</strong>： 每年的访问量。 </li>
+	<li><strong>按年统计</strong>： 选中年份中每个月的访问量。</li>
+	<li><strong>按月统计、</strong>：选中月份中每天的访问量。</li>
+	<li><strong>按日统计</strong>： 选中日期每小时的访问量。</li>
+</ul>
+
+<h3>搜索</h3>
+<ul>
+  <p>如果您选择记录 (<span class="pwgScreen">index.php</span> 和 <span class="pwgScreen">picture.php</span>) 的访问量，您可以通过不同的筛选方式查看统计细节。</p>
+	<li><strong>按日期筛选：</strong>选择搜索开始的和结束的时间范围。、</li>
+	<li><strong>按元素类型筛选：</strong> 选择需要统计的元素类型。</li>
+	<li><strong>按用户筛选：</strong>选择需要统计的用户。</li>
+	<li><strong>按图像定义筛选：</strong> 选择需要统计的图像定义。</li>
+	<li><strong>按文件名筛选：</strong> 选择需要统计的文件名。</li>
+</ul>
Index: /tags/2.6.0RC1/language/zh_CN/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/maintenance.html	(revision 25596)
@@ -0,0 +1,57 @@
+<h2>维护</h2>
+
+<p> Piwigo使用缓存信息以最优化页面生成时间。例如：为了避免每次页面载入时重新计
+算每个相册中的图片数量，信息会被自动保存在数据库中。理论上，这些信息是准确无
+误的，但是偶尔可能会出现小问题而导致一些错误从而引发缓存信息错误。</p>
+
+<p>随着时间的变更，有些信息可能无法再使用。从数据库删除这些无用的信息将会帮
+助您节约数据储存空间。</p>
+
+<ul>
+
+  <li>
+    <strong>未增加链接的图片：</strong>
+    未与任何虚拟相册相连接的图片展示。
+  </li>
+  <li>
+    <strong>在多个实际相册中出现的具有同样文件名称的文件</strong>
+	在多个相册集中图片或文件使用相同的文件名称。
+  </li>
+
+</ul>
+
+<ul>
+
+  <li><strong>更新相册信息：</strong> 如有需要，相册中的以下信息将会被定期检查并更新。
+上级相册列表、图片数目、近期图片上传时间、在兄弟相册中的位置、在所有相册中的
+位置。
+本项还会定期检查封面图片的持续性。</li>
+
+  <li><strong>更新图片信息：</strong>对于每张图片的信息更新如下：
+文件完整路径和平均分<em>警告<em>，请勿与下列信息混淆：META资料信息必须从
+<span class="pwgScreen">管理员&raquo;
+工具 &raquo; 同步</span>以完成更新，或者以单张图片的编辑面板（通过例子<span
+class="pwgScreen">图片</span>）进行。
+</li>
+
+  <li><strong>数据库维修与优化</strong>
+  在每个数据库的面板运行重置顺序、维修或优化等操作。</li>
+</ul>
+
+<ul>
+  <li><strong>清除历史记录细节：</strong> 删除来自<code>历史</code>界面的全部内容
+. 在 <span class="pwgScreen">管理员&raquo;
+工具 &raquo; 同步</span>等界面将不会再出现过去的历史记录。<em>警告</em>：您将无法以
+任何方式挽回这些数据。
+</li>
+
+  <li><strong>清除历史记录总结：</strong> 删除有关访问历史记录的总结信息。这是由历史细节计算而生的总结。</li>
+
+  <li><strong>清除会话</strong> 删除过期的用户对话</li>
+
+  <li><strong>清除从未使用过的通知</strong></li>
+
+  <li><strong>清除搜索记录</strong></li>
+  
+  <li><strong>清除编译模板</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/zh_CN/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,15 @@
+<h2>邮件通知</h2>
+
+<p>本页面可以允许使用者设置及管理E-mail，以告知用户有关您网站的一切变更。</p>
+
+<p>本页面由3个标签组成：</p>
+
+<h3>参数</h3>
+<p>用于站长，此标签用以设置邮件通知的参数。</p>
+
+<h3>订阅</h3>
+<p>用于站长，此标签用于管理用户对邮件通知的订阅及订阅的取消。</p>
+
+<h3>后记</h3>
+<p>用于站长及管理员，此标签将允许以邮件方式发送网站变更信息。</p>
+
Index: /tags/2.6.0RC1/language/zh_CN/help/permalinks.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/permalinks.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/permalinks.html	(revision 25596)
@@ -0,0 +1,7 @@
+<h2>永久链接</h2>
+
+<p>永久链接可以使相册url地址更简洁。当一个相册被定义了一个永久链接后，url地 址中则不再需要相册的id. </p>
+
+<p>当删除一个永久链接后，你可以将它保存在永久链接历史记录中，这样从外部访问 到Piwigo相册地址仍然奏效。 在永久链接历史记录中，你可以查看该链接被删除的时间，该链接的最后使用日期以及 该链接被使用过的次数。</p>
+
+<p>注意：每个相册的永久链接必须为独立的。同样，在永久链接历史记录中，同一个 永久链接地址不能被多次定义。</p>
Index: /tags/2.6.0RC1/language/zh_CN/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,96 @@
+<fieldset>
+  <legend>快速开始</legend>
+
+<ol>
+  <li>在你的电脑里创建一个文件夹。</li>  
+
+  <li>复制一些图片到此文件夹，调整它们的大小以适合网上浏览。 <em>注意</em>: 文件名和文件夹必须以字母、数字、 "-"、 "_" 或者 "." 组成。没有空格，没有特别的符号。</li>
+
+  <li>使用FTP客户端，复制你的文件夹到 Piwigo 的 "galleries" 文件夹里。</li>
+
+  <li>登录你的相册，进入 <span class="pwgScreen">管理员 &raquo; 图片 &raquo; 缩略图</span> 以创建你的缩略图。</li>
+
+  <li>进入 <span class="pwgScreen">管理员</span> 然后点击“快速同步”的大按钮。</li>
+</ol>
+
+恭喜！你已成功地为你的相册创建了第一个类别。
+
+</fieldset>
+<fieldset>
+  <legend>文件夹与文件结构</legend>
+<ul>
+
+  <li>
+
+    <p>类别文件夹均放在 Piwigo 的 "galleries" 文件夹里。以下的文件夹树里有一个很小的相册(但使用了很多功能) :</p>
+
+    <pre>
+.
+|-- admin
+|-- doc
+|-- galleries
+|   |-- category-1
+|   |   |-- category-1.1
+|   |   |   |-- category-1.1.1
+|   |   |   |   |-- category-1.1.1.1
+|   |   |   |   |   |-- pwg_high
+|   |   |   |   |   |   +-- wedding.jpg
+|   |   |   |   |   |-- thumbnail
+|   |   |   |   |   |   +-- TN-wedding.jpg
+|   |   |   |   |   +-- wedding.jpg
+|   |   |   |   +-- category-1.1.1.2
+|   |   |   +-- category-1.1.2
+|   |   |-- category-1.2
+|   |   |   |-- pookie.jpg
+|   |   |   +-- thumbnail
+|   |   |       +-- TN-pookie.jpg
+|   |   +-- category-1.3
+|   +-- category-2
+|       |-- piglet.gif
+|       |-- pwg_representative
+|       |   +-- video.jpg
+|       |-- thumbnail
+|       |   +-- TN-piglet.jpg
+|       +-- video.avi
+|-- include
+|-- install
+|-- language
+|-- template
++-- tool</pre>
+
+  </li>
+  
+  <li>每个在 "galleries" 下面的文件夹都是一个产品类别。没有级别限制，即可以添加无限子级别。</li>
+
+  <li>基本上，一个文件代表一个元素。如果文件的扩展名存在于 <code>file_ext</code> 参数配置里，其将可作为 Piwigo 的一个元素(参见 <span class="filename">include/config_default.inc.php</span> 文件)。如果文件的扩展名存在于 <code>picture_ext</code> 参数配置里，其将作为一个图片。</li>
+
+  <li>图片元素必须要有一张对应的缩略图 (参见以下缩略图的相关说明)</li>
+
+  <li>图片元素可以有一个高品质的文件与其关联。如以上 wedding.jpg 的例子。高品质图片不需要前缀。</li>
+
+  <li>非图片元素 (如视频，声频，文本文件，一切你想到的...) 均以文件扩展名的默认图标显示。或者，你可以用一张缩略图来代表这个文件 (参见 video.avi 的例子)。</li>
+
+  <li><em>注意</em>: 文件名和文件夹必须以字母、数字、 "-"、 "_" 或者 "." 组成。没有空格，没有特别的符号。</li>
+
+  <li>一旦文件、缩略图都放到其正确的位置后，进入 : <span class="pwgScreen">管理员 &raquo; 类 &raquo;
+  同步</span></li>
+
+</ul>
+
+</fieldset>
+<fieldset>
+  <legend>缩略图</legend>
+<ul>
+
+  <li>每个图片必须要有一张缩略图。</li>
+
+  <li>缩略图保存在类别文件夹里名为 "thumbnail" 的子文件夹。缩略图文件名与图片的文件名一致，将会以 <em>TN-</em> 为前缀</li>
+
+  <li><em>建议</em>: 使用外部工具来创建缩略图。</li>
+
+  <li>你可以使用<span class="pwgScreen">管理员 &raquo; 图片 &raquo; 缩略图</span> 页面来创建缩略图。即使这是不被推荐的 (考虑到图片品质，网络服务器资源读取等问题)。</li>
+
+  <li>分配给所有类别文件夹写权限。</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/zh_CN/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/search.html	(revision 25596)
@@ -0,0 +1,19 @@
+<h2>搜索</h2>
+
+<p>可以在本页面搜索整个相册中的图片。</p>
+
+<dl>
+
+  <dt>文字搜索</dt>
+  <dd>通过相册中图片的相关属性搜索一个或多个文字。使用*作为通配符匹配的部分。</dd>
+
+  <dt>作者搜索</dt>
+  <dd>使用*作为通配符匹配的部分。</dd>
+
+  <dt>日期搜索</dt>
+  <dd>选择一个日期或者您要查询的截止日期。若要使用一个”之前“的查询，请将日期区域留空。年份栏必须以下列格式输入：AAAA（如：2004）</dd>
+
+  <dt>分类搜索</dt>
+  <dd>选择一个或多个您要搜索的分类。若搜索全部子分类，通过选择搜索母分类和子分类下面的设置启用搜索。</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/zh_CN/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/synchronize.html	(revision 25596)
@@ -0,0 +1,11 @@
+<h2>同</h2>
+
+<p>有两种同步方式可供选择：目录/文件 以及 文件meta数据。
+目录/文件方式可以使数据库中的相册树与目录树同步。
+Meta数据方式则是同步照片信息诸如：文件大小、像素大小、EXIF或IPTC等信息。
+</p>
+
+<p>同步的第一步必须由目录/文件方式进行。</p>
+
+<p>同步过程可能花费的时间较长（取决于您的服务器速度以及要管理的元素质量），所以
+尽可能一个相册一个相册地处理。</p>
Index: /tags/2.6.0RC1/language/zh_CN/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>用户列表</h2>
+
+<p>相册用户管理</p>
+
+<h3>Add a user</h3>
+
+<p>管理员可手动添加用户。为每个用户创建用户名，密码及提交邮箱地址。</p>
+
+<h3>用户列表</h3>
+
+<p>可使用如用户名（*为通配符），组和状态筛选已有用户列表。可按升序或降序对注册日期或用户名排序。</p>
+
+<p>此页面可一次管理多个用户，可使用如下多种操作:</p>
+
+<ul>
+  <li>删除用户（需要确认）</li>
+  <li>更改用户状态</li>
+  <li>加入组或从组内移除</li>
+  <li>修改显示属性</li>
+  <li>修改额外偏好</li>
+</ul>
+
+<p>修改对象是已选中用户（默认） 或筛选列表中的所有用户。</p>
Index: /tags/2.6.0RC1/language/zh_CN/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/install.lang.php	(revision 25596)
@@ -0,0 +1,69 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = '安装';
+$lang['Basic configuration'] = '基本设置';
+$lang['Default gallery language'] = '图库默认语言';
+$lang['Database configuration'] = '数据库设置';
+$lang['Admin configuration'] = '管理员帐户设置';
+$lang['Start Install'] = '开始安装';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = '此帐户用于管理网站，所有访问者都能看到此帐户。';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = '服务器连接成功，但是无法连接到数据库。';
+$lang['Can\'t connect to server'] = '无法连接到服务器';
+$lang['Host'] = 'MySQL主机地址';
+$lang['User'] = '用户';
+$lang['user login given by your host provider'] = '主机用户名';
+$lang['user password given by your host provider'] = '主机用户密码';
+$lang['Database name'] = '数据库名称';
+$lang['also given by your host provider'] = '也由您的主机供应商提供';
+$lang['Database table prefix'] = '数据库表名称前缀';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = '数据库所有的表名称都将加此前缀（有利于数据库管理）';
+$lang['enter a login for webmaster'] = '添加站长id';
+$lang['webmaster login can\'t contain characters \' or "'] = '站长id不能包含字符 " 或 \'';
+$lang['please enter your password again'] = '请再次输入密码';
+$lang['Keep it confidential, it enables you to access administration panel'] = '请小心保管好此密码，它是您进入管理面板的保障。';
+$lang['Password [confirm]'] = '密码 [ 确认 ]';
+$lang['verification'] = '验证';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = '需要帮助吗？请到<a href="%s">Piwigo论坛</a>提出您的问题。';
+$lang['Visitors will be able to contact site administrator with this mail'] = '访问者将可通过此email跟站长取得联系';
+$lang['PHP 5 is required'] = '必须PHP 5版本';
+$lang['It appears your webhost is currently running PHP %s.'] = '你主机PHP版本好像是PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo会尝试创建或修改.htaccess文件以将您的设置转换到PHP 5。';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意：你也可以自己修改设置PHP然后重新启动Piwigo。';
+$lang['Try to configure PHP 5'] = '尝试配置PHP 5';
+$lang['Sorry!'] = '对不起!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo不能设置PHP 5。';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = '你应该联系你的主机管理员并向其请教如何设置PHP 5.';
+$lang['Hope to see you back soon.'] = '希望不久后能再见到你。';
+$lang['Congratulations, Piwigo installation is completed'] = '恭喜，Piwigo 已安装完成';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一个解决办法是，将以上文本框里的文本拷贝到 "local/config/database.inc.php" 文件里（注意：database.inc.php 必须只能包含此文本框里的内容，没有换行或者空格字符）';
+$lang['Creation of config file local/config/database.inc.php failed.'] = '创建 local/config/database.inc.php 配置文件失败。';
+$lang['Download the config file'] = '下载配置文件';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下载配置文件，并上传到 local/config 目录以完成您的安装。';
+$lang['Welcome to my photo gallery'] = '欢迎来到我的相册';
+$lang['Just another Piwigo gallery'] = '另一个崭新的Piwigo图库';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = '欢迎来我们的论坛咨询任何Piwigo相关问题：%s';
+$lang['Welcome to your new installation of Piwigo!'] = '欢迎安装Piwigo！';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = '您需要联系您的主机供应商的技术支持，向其咨询如何自行转换为PHP 5。';
+$lang['localhost or other, supplied by your host provider'] = '由你的服务器提供商提供本地服务器或者其他的';
+?>
Index: /tags/2.6.0RC1/language/zh_CN/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+简体中文 [CN]
Index: /tags/2.6.0RC1/language/zh_CN/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_CN/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_CN/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['Upgrade'] = '更新';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = '这个页面试图更新你的与Piwigo相关的数据库。 更新助手发现您现在正在运行的<strong>版本为 %s</strong> （或同等的版本）。';
+$lang['Upgrade from version %s to %s'] = '从 %s 版本更新到 %s 版本';
+$lang['Statistics'] = '统计';
+$lang['total upgrade time'] = '总更新用时';
+$lang['total SQL time'] = '总 SQL 用时';
+$lang['SQL queries'] = "SQL 查询";
+$lang['Upgrade informations'] = '更新信息';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '如果你遇上任何问题请到 [管理>工具>维护] 运行一次维护检查。';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = '保险起见，以下插件已被停用。您在重新启用它们之前，必须先检查插件的更新版本：';
+$lang['Only administrator can run upgrade: please sign in below.'] = '只有站长才能运行更新，请在下面登入：';
+$lang['You do not have access rights to run upgrade'] = "你没有权限运行更新";
+$lang['All sub-albums of private albums become private'] = '所有非公开相册的子相册均变为非公开';
+$lang['User permissions and group permissions have been erased'] = "用户权限和组权限已经删除";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '之前的设置只有缩略图前缀和站长电子邮件地址被保存';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '在<i>%s</i>中，<b>?></b>之前，插入：';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '保险起见，以下主题已被停用。您在重新启用它们之前，必须先检查主题的更新版本：';
+?>
Index: /tags/2.6.0RC1/language/zh_HK/about.html
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/about.html	(revision 25596)
@@ -0,0 +1,13 @@
+<p>這相簿是建基於 Piwigo.</p>
+
+<p>Piwigo 是一套網上的相簿軟件, 由一群活躍的用戶及開發人員建立. 擴充功能令 Piwigo 更容易按須求定制. 更好的是, Piwigo 是開源及免費的.</p>
+
+<p id="linkToPiwigo"><a href="http://piwigo.org"> 瀏覽 Piwigo
+網站</a></p>
+
+<p> 中文 (香港) 由以下人士維護 (名字按字母順序):
+<ul>
+<li><a href="http://piwigo.org/forum/profile.php?id=16380";>fatman</a></li>
+<li><a href="http://piwigo.org/forum/profile.php?id=19146";>hkdigit</a></li>
+</ul>
+謝謝翻譯人員! </P>
Index: /tags/2.6.0RC1/language/zh_HK/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/admin.lang.php	(revision 25596)
@@ -0,0 +1,191 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['%d photos uploaded'] = '%d 相片已被上傳';
+$lang['%d photos were deleted'] = '%d 相片已被上傳';
+$lang['%d physical'] = '%d 實體';
+$lang['%d physicals'] = '%d 實體';
+$lang['%d second'] = '%d 秒';
+$lang['%d seconds'] = '%d 秒';
+$lang['%d tag'] = '%d 標籤';
+$lang['%d tags'] = '%d 標籤';
+$lang['%d user'] = '%d 用戶';
+$lang['%d user comment rejected'] = '%d 用戶意見已被拒絕';
+$lang['%d user comment validated'] = '%d 用戶意見已被接納';
+$lang['%d user comments rejected'] = '%d 用戶意見已被拒絕';
+$lang['%d user comments validated'] = '%d 用戶意見已被接納';
+$lang['%d user deleted'] = '%d 用戶已被刪除';
+$lang['%d user was not updated.'] = '%d 用戶沒有更新';
+$lang['%d user was updated.'] = '%d 用戶已被更新';
+$lang['%d users'] = '%d 用戶';
+$lang['%d users deleted'] = '%d 用戶已被刪除';
+$lang['%d users were not updated.'] = '%d 用戶沒有更新';
+$lang['%d users were updated.'] = '%d 用戶已被更新';
+$lang['%d mail was not sent.'] = '%s 郵件未被發送';
+$lang['%d mail was sent.'] = '%s 郵件已被發送';
+$lang['%d mails were not sent.'] = '%s 郵件未被發送';
+$lang['%d mails were sent.'] = '%s 郵件已被發送';
+$lang['%d of %d photos selected'] = '%d / %d 相片被選取';
+$lang['%d parameter was updated.'] = '%d 參數已更新';
+$lang['%d parameters were updated.'] = '%d 參數已更新';
+$lang['%d photo was deleted'] = '%d 圖片已被刪除';
+$lang['%d guest'] = '%d 訪客';
+$lang['%d guests'] = '%d 訪客';
+$lang['%d hour'] = '%d 小時';
+$lang['%d hours'] = '%d 小時';
+$lang['%d line filtered'] = '%d 行被過濾';
+$lang['%d lines filtered'] = '%d 行被過濾';
+$lang['%d member'] = '%d 會員';
+$lang['%d members'] = '%d 會員';
+$lang['%d minute'] = '%d 分鐘';
+$lang['%d minutes'] = '%d 分鐘';
+$lang['%d month'] = '%d 月';
+$lang['%d months'] = '%d 月';
+$lang[' and %d virtual'] = '和 %d 虛擬';
+$lang[' and %d virtuals'] = '和 %d 虛擬';
+$lang['%d album including'] = '包含 %d 相簿';
+$lang['%d album moved'] = '%d 相簿已移走';
+$lang['%d albums including'] = '包含 %d 相簿';
+$lang['%d albums moved'] = '%d 相簿已移走';
+$lang['%d anomalies have been detected corrected.'] = '揁察及修正了 %d 個異常';
+$lang['%d anomalies have been detected.'] = '揁察到 %d 個異常';
+$lang['%d anomalies have been ignored.'] = '%d 異常被忽略';
+$lang['%d anomalies have not been corrected.'] = '不能修正 %d 個異常';
+$lang['%d anomaly has been corrected.'] = '修正了 %d 異常';
+$lang['%d anomaly has been detected.'] = '揁察到 %d 異常';
+$lang['%d anomaly has not been corrected.'] = '不能修正 %d 異常';
+$lang['%d association'] = '%d 聯繫';
+$lang['%d associations'] = '%d 聯繫';
+$lang['%d anomaly has been ignored.'] = '%d 異常被忽略';
+$lang['%d day'] = '%d 天';
+$lang['%d days'] = '%d 天';
+$lang['%d group'] = '%d 群組';
+$lang['%d groups'] = '%d 群組';
+$lang['ranks'] = '等級';
+$lang['registered users'] = '已註冊用戶';
+$lang['registration date'] = '註冊日期';
+$lang['selection'] = '選擇';
+$lang['simple visitors'] = '簡單訪客';
+$lang['private'] = '私人';
+$lang['public'] = '公開';
+$lang['randomly represented'] = '隨機相簿縮圖';
+$lang['sub-albums'] = '相簿子　';
+$lang['synchronize files structure with database'] = '檔案結構跟數據庫同步';
+$lang['target'] = '目標';
+$lang['test'] = '測試';
+$lang['test this remote site'] = '測試這個遠程地址';
+$lang['the forum'] = '討論區';
+$lang['the wiki'] = '維基百科';
+$lang['top left corner'] = '左上角';
+$lang['top right corner'] = '右上角　　';
+$lang['total time'] = '總算時間';
+$lang['unit mode'] = '個人模式　';
+$lang['unknown'] = '不知名的　';
+$lang['unset'] = '去設定除　';
+$lang['update the database from files'] = '以檔案來更新數據庫';
+$lang['user "%s" added'] = '用戶"%s"已增加';
+$lang['user_status_admin'] = '管理員';
+$lang['user_status_generic'] = '基本';
+$lang['user_status_guest'] = '嘉賓';
+$lang['user_status_normal'] = '用戶';
+$lang['user_status_webmaster'] = '網主';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = '訪客需要登入及指定權限才看到相簿';
+$lang['width must be a number superior to'] = '闊度一定要大過';
+$lang['wrong filename'] = '錯誤檔案名稱';
+$lang['A new version of Piwigo is available.'] = '新版本的Piwigo已經可用';
+$lang['Add'] = '新增';
+$lang['Active Languages'] = '現行的插件';
+$lang['Active Plugins'] = '現行的插件';
+$lang['%d waiting for validation'] = '%d 等候審批';
+$lang['%d week'] = '%d 星期';
+$lang['%d weeks'] = '%d 星期';
+$lang['%d year'] = '%d 年';
+$lang['%d years'] = '%d 年';
+$lang['%s ago'] = '%s 之前';
+$lang['%s has been successfully updated.'] = '%s 已成功更新';
+$lang['%s in the future'] = '%s 在將來';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s 在local/config/config.inc.php檔案內必需設定為錯誤.';
+$lang['%s photos can not be regenerated'] = '%s 相片不能重新製作';
+$lang['%s photos have been regenerated'] = '%s 相片已成功製作';
+$lang['%s value is not correct file because exif are not supported'] = '%s 數目錯誤因為不支援exif';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u 用戶已經自動取得許可, 因為他們屬於一個已審批的組群.';
+$lang['(this tag will be deleted)'] = '(這個標籤將會被刪除)';
+$lang['+ Add an upload box'] = '+加一個上傳框架';
+$lang[', click on'] = ', 按在';
+$lang['... or '] = '...或';
+$lang['A locked gallery is only visible to administrators'] = '已封鎖的相簿祗會被管理員看到';
+$lang['albums added in the database'] = '相簿已在數量庫增加';
+$lang['albums deleted in the database'] = '相簿已在數量庫刪除';
+$lang['all'] = '全部';
+$lang['an error happened'] = '一個錯誤出現';
+$lang['and'] = '及';
+$lang['any visitor can see this album'] = '所有訪客都可看到這個相簿';
+$lang['apply automatic sort order'] = '行使自動依次序排序';
+$lang['automatic order'] = '自動排序';
+$lang['average time'] = '平均時間';
+$lang['between'] = '之間';
+$lang['between %.2f and %.2f'] = '%.2f 及 %.2f 之間';
+$lang['between %d and %d pixels'] = '%d 及 %d 像點之間';
+$lang['bottom left corner'] = '左下角';
+$lang['bottom right corner'] = '右下角　';
+$lang['cancel manual order'] = '取消手動排序';
+$lang['clean'] = '清空';
+$lang['confirm'] = '確定';
+$lang['Anomaly'] = '異常';
+$lang['Album name'] = '相簿名稱';
+$lang['Album updated successfully'] = '相簿更新成功';
+$lang['Albums automatically sorted'] = '相簿自動排列';
+$lang['All %d photos are selected'] = '所有%d相片已選';
+$lang['All languages are up to date.'] = '所有語言已是最新版本';
+$lang['All optimizations have been successfully completed.'] = '所有優化已已經完成';
+$lang['All plugins are up to date.'] = '所有插件已是最新版本';
+$lang['All themes are up to date.'] = '所有主題佈置已是最新版本';
+$lang['An error has occured during upgrade.'] = '升級時發生錯誤';
+$lang['An error occured during extraction (%s).'] = '檔案(%s)解壓時發生錯誤';
+$lang['Allow rating'] = '允許評分';
+$lang['Allow user customization'] = '允許用戶更改設定';
+$lang['Allow user registration'] = '允許用戶登記';
+$lang['Allow users to delete their own comments'] = '允許用戶刪除自己的評語';
+$lang['Allow users to edit their own comments'] = '允許用戶修改自己的評語';
+$lang['Allowed file types: %s.'] = '允許檔案種類: %s.';
+$lang['Add Photos'] = '新增相片';
+$lang['Add a user'] = '新增用戶';
+$lang['Add group'] = '新增用戶群';
+$lang['Add New Language'] = '新增新語言';
+$lang['Add New Theme'] = '新增新主題佈置';
+$lang['ACCESS_0'] = '隨意使用';
+$lang['ACCESS_1'] = '使用所有';
+$lang['ACCESS_2'] = '進入註冊用戶';
+$lang['ACCESS_3'] = '進入管理員';
+$lang['ACCESS_4'] = '進入網頁管理員';
+$lang['ACCESS_5'] = '沒有使用權';
+$lang['Access type'] = '使用權種類';
+$lang['Action'] = '行動';
+$lang['Actions'] = '行動';
+$lang['Activate'] = '啟動　　';
+$lang['Activate Navigation Bar'] = '啟動導航橫槓';
+$lang['Activate Navigation Thumbnails'] = '啟動導航縮圖';
+$lang['Activate comments'] = '啟動意見';
+$lang['Activate icon "%s"'] = '啟動圖標"%s"';
+$lang['Activate icon "new" next to albums and pictures'] = '啟動圖標"new"在相簿及相片旁';
+$lang['Active Themes'] = '啟動主題佈置';
+?>
Index: /tags/2.6.0RC1/language/zh_HK/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/common.lang.php	(revision 25596)
@@ -0,0 +1,420 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: 中文 (香港) [HK]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=614
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+$lang_info['language_name'] = '中文 (香港)';
+$lang_info['country'] = '香港特別行政區';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'zh_HK';
+$lang_info['zero_plural'] = true;
+
+
+$lang['%d album updated'] = '%d 個相簿已更新';
+$lang['%d albums updated'] = '%d 個相簿已更新';
+$lang['%d comment to validate'] = '%d 個留言須要審核';
+$lang['%d comment'] = '%d 個留言';
+$lang['%d comments to validate'] = '%d 個留言須要審核';
+$lang['%d comments'] = '%d 個留言';
+$lang['%d hit'] = '%d 次點擊';
+$lang['%d hits'] = '%d 次點擊';
+$lang['%d Kb'] = '%d Kb';
+$lang['%d new comment'] = '%d 個新留言';
+$lang['%d new comments'] = '%d 個新留言';
+$lang['%d new photo'] = '%d 張新相片';
+$lang['%d new photos'] = '%d 張新相片';
+$lang['%d new user'] = '%d 個用戶';
+$lang['%d new users'] = '%d 個新用戶';
+$lang['%d photo is also linked to current tags'] = '當前的標籤連結到 %d 張相片';
+$lang['%d photo'] = '%d 張相片';
+$lang['%d photos are also linked to current tags'] = '當前的標籤連結到 %d 張相片';
+$lang['%d photos'] = '%d 張相片';
+$lang['%d rates'] = '%d 個評級';
+$lang['(!) This comment requires validation'] = '(!) 這個留言須要審核';
+$lang['... or browse your empty gallery'] = '... 或瀏覽你的未有相片的相館';
+$lang['... or please deactivate this message, I will find my way by myself'] = '...  或取消此信息，我會自己找到方法';
+$lang['A comment on your site'] = '你的網站有一個留言';
+$lang['About Piwigo'] = '關於 Piwigo';
+$lang['About'] = '關於';
+$lang['%d rate'] = '%d 個評級';
+$lang['2small'] = 'XXS - 極小';
+$lang['Accelerate diaporama speed'] = '加快幻燈片播放';
+$lang['Add a comment'] = '加入留言';
+$lang['Admin: %s'] = '管理: %s';
+$lang['Administration'] = '管理';
+$lang['Album results for'] = '相簿之結果為';
+$lang['Album: %s'] = '相簿: %s';
+$lang['Albums'] = '相簿';
+$lang['Album'] = '相簿';
+$lang['All tags'] = '全部標籤';
+$lang['All'] = '全部';
+$lang['An administrator must authorize your comment before it is visible.'] = '你的留言須要管理員審核才可顯示.';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = '防灌水系統: 請等候一會兒才貼上另一留言';
+$lang['Any tag'] = '任何標籤';
+$lang['Are you sure?'] = '確定?';
+$lang['At least one listed rule must be satisfied.'] = '最少要滿足一項列出之標準';
+$lang['Author: %s'] = '作者: %s';
+$lang['Author'] = '作者';
+$lang['Auto login'] = '自動登入';
+$lang['Bad request'] = '錯誤請求';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = '用戶 "訪客" 的身份錯誤, 將使用預設身份.  請通知管理員.';
+$lang['Best rated'] = '最佳評級';
+$lang['Browser: %s'] = '瀏覽器: %s';
+$lang['Calendar'] = '日曆';
+$lang['Change my password'] = '更改密碼';
+$lang['Check your email for the confirmation link'] = '請到你的電郵信箱檢查確認連結';
+$lang['Click here if your browser does not automatically forward you'] = '如果你的瀏覽器不能轉送, 請點擊這裏';
+$lang['Click on the photo to see it in high definition'] = '點擊相片以看高清晰度相片';
+$lang['Close this window'] = '關閉視窗';
+$lang['Comment by %s'] = '由 %s 留言';
+$lang['Comment: %s'] = '留言: %s';
+$lang['Comments'] = '留言';
+$lang['Comment'] = '留言';
+$lang['Complete RSS feed (photos, comments)'] = '完整 RSS 訂閱(相片, 留言)';
+$lang['Confirm Password'] = '確認密碼';
+$lang['Connected user: %s'] = '連結之用戶: %s';
+$lang['Connection settings'] = '連接設定';
+$lang['Contact webmaster'] = '聯絡管理員';
+$lang['Contact'] = '聯絡';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = '你的瀏覽器不支援或封鎖 Cookies.  登入必須要允許 cookies. ';
+$lang['Create a new account'] = '建立新用戶';
+$lang['Created on'] = '建立在';
+$lang['Creation date'] = '建立日期';
+$lang['Current password is wrong'] = '現在的密碼是錯誤';
+$lang['Customize'] = '自定';
+$lang['Date created, new &rarr; old'] = '建立日期, 新 &rarr; 舊';
+$lang['Date created, old &rarr; new'] = '建立日期, 舊 &rarr; 新';
+$lang['Date posted, new &rarr; old'] = '發佈日期, 新 &rarr; 舊';
+$lang['Date posted, old &rarr; new'] = '發佈日期, 舊 &rarr; 新';
+$lang['Date'] = '日期';
+$lang['Default'] = '預設';
+$lang['Delete'] = '刪除';
+$lang['Desktop'] = '桌面';
+$lang['Dimensions'] = '量度';
+$lang['Display'] = '顯示';
+$lang['Download this file'] = '下載這個檔案';
+$lang['Download'] = '下載';
+$lang['EXIF Metadata'] = 'EXIF 資料';
+$lang['Each listed rule must be satisfied.'] = '必須要滿足每一項列出之標準';
+$lang['Edit a comment'] = '編輯留言';
+$lang['Edit'] = '編輯';
+$lang['Email address is missing. Please specify an email address.'] = '沒有電郵地址. 請指定一個電郵地址. ';
+$lang['Email address'] = '電郵地址';
+$lang['Email: %s'] = '電郵: %s';
+$lang['Empty query. No criteria has been entered.'] = '空白查詢.  沒有輪入條件';
+$lang['End-Date'] = '終止日期';
+$lang['Enter your new password below.'] = '在下面輸入你的新密碼.';
+$lang['Enter your personnal informations'] = '輸入你的個人資料';
+$lang['Error sending email'] = '寄出郵件時發生錯誤';
+$lang['Expand all albums'] = '打開所有相簿';
+$lang['Favorites'] = '收藏夾';
+$lang['File name, A &rarr; Z'] = '檔案名稱, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = '檔案名稱, Z &rarr; A';
+$lang['File name'] = '檔案名稱';
+$lang['Filesize'] = '檔案大小';
+$lang['File'] = '檔案';
+$lang['Filter and display'] = '過濾器與顯示';
+$lang['Filter'] = '過濾器';
+$lang['First'] = '首頁';
+$lang['Forbidden'] = '禁止';
+$lang['Forgot your password?'] = '忘記你的密碼?';
+$lang['Go through the gallery as a visitor'] = '以訪客身份瀏覽相館';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = '%s 你好, 你的 Piwigo 相館沒有相片!';
+$lang['Hello %s,'] = '%s 你好,';
+$lang['Hello'] = '你好';
+$lang['Help'] = '幫肋';
+$lang['Here are your connection settings'] = '這是你的連接設定';
+$lang['Home'] = '主頁';
+$lang['I want to add photos'] = '我想加入相片';
+$lang['IP: %s'] = 'IP: %s';
+$lang['IPTC Metadata'] = 'IPTC 資料';
+$lang['Identification'] = '身份';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = '如果這是一個錯誤, 不理會這電郵就不會發生任合事.';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = '如果你認你不應該數到這電郵, 請到 %s 聯絡我們';
+$lang['Invalid key'] = '無效鑰匙';
+$lang['Invalid password!'] = '無效密碼!';
+$lang['Invalid username or email'] = '無效用戶名稱或電郵';
+$lang['Keyword'] = '關鍵字';
+$lang['Kind of date'] = '日期樣式';
+$lang['Language'] = '語言';
+$lang['Last'] = '尾頁';
+$lang['Links'] = '連結';
+$lang['Login'] = '登入';
+$lang['Logout'] = '登出';
+$lang['Manage this user comment: %s'] = '管理這個用戶留言: %s';
+$lang['Manual sort order'] = '手動排序';
+$lang['Menu'] = '選單';
+$lang['Mobile'] = '移動裝置';
+$lang['Most visited'] = '最多點閱';
+$lang['N/A'] = '不適用';
+$lang['New on %s'] = '新相片在 %s';
+$lang['New password'] = '新密碼';
+$lang['Next'] = '下一頁';
+$lang['Not repeat the slideshow'] = '不要重覆幻燈片播放';
+$lang['Notification'] = '通知';
+$lang['No'] = '不';
+$lang['Number of items'] = '項目數量';
+$lang['Number of photos per page'] = '每頁相片數量';
+$lang['Numeric identifier, 1 &rarr; 9'] = '記錄編號, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = '記錄編號, 9 &rarr; 1';
+$lang['Original dimensions'] = '原版大小';
+$lang['Original'] = '原版';
+$lang['Page generated in'] = '頁面產生時間';
+$lang['Page not found'] = '找不到網頁';
+$lang['Password Reset'] = '重設密碼';
+$lang['Password forgotten'] = '密碼長度';
+$lang['Password reset is not allowed for this user'] = '這用戶不允許重設密碼';
+$lang['Password: %s'] = '密碼: %s';
+$lang['Password'] = '密碼';
+$lang['Pause of slideshow'] = '暫停幻燈片播放';
+$lang['Permalink for album not found'] = '找不到相簿的永久連結';
+$lang['Photo sizes'] = '相片大小';
+$lang['Photo title, A &rarr; Z'] = '相片標題, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = '相片標題, Z &rarr; A';
+$lang['Photos only RSS feed'] = '相片 RSS 訂閱';
+$lang['Photos posted within the last %d day.'] = '只顯示最近 %d 天發佈的相片.';
+$lang['Photos posted within the last %d days.'] = '只顯示最近 %d 天發佈的相片.';
+$lang['Piwigo Help'] = 'Piwigo 幫助';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo 遇到一個不能回復的錯誤';
+$lang['Play of slideshow'] = '播放幻燈片';
+$lang['Please enter your username or email address.'] = '請輸入你的用戶名稱或電郵地址.';
+$lang['Please, enter a login'] = '請輸入用戶名稱';
+$lang['Post date'] = '發佈日期';
+$lang['Posted on'] = '發佈在';
+$lang['Powered by'] = '建基於';
+$lang['Preferences'] = '選項';
+$lang['Previous'] = '前頁';
+$lang['Profile'] = '用戶資料';
+$lang['Quick connect'] = '快速連接';
+$lang['Quick search'] = '快速搜尋';
+$lang['RSS feed'] = 'RSS 訂閱';
+$lang['Random photos'] = '隨機相片';
+$lang['Rank'] = '排列';
+$lang['Rate this photo'] = '評級這張相片';
+$lang['Rating score, high &rarr; low'] = '評級分數, 高 &rarr; 低';
+$lang['Rating score, low &rarr; high'] = '評級分數, 低 &rarr; 高';
+$lang['Rating score'] = '評級分數';
+$lang['Recent albums'] = '最新相簿';
+$lang['Recent period must be a positive integer value'] = '最新期限必須是正數';
+$lang['Recent period'] = '最新期限';
+$lang['Recent photos'] = '最新相片';
+$lang['Redirection...'] = '轉向...';
+$lang['Reduce diaporama speed'] = '減慢幻燈片播放';
+$lang['Register'] = '註冊';
+$lang['Registration of %s'] = '註冊 %s';
+$lang['Registration'] = '註冊';
+$lang['Related tags'] = '相關標籤';
+$lang['Repeat the slideshow'] = '重覆幻燈片播放';
+$lang['Search tags'] = '搜尋標籤';
+$lang['Tags'] = '標籤';
+$lang['This login is already used by another user'] = '用戶名稱已經被使用';
+$lang['display available tags'] = '顯示現有標籤';
+$lang['html tags are not allowed in login'] = '用戶名稱不可有html標籤';
+$lang['login mustn\'t end with a space character'] = '用戶名稱不可以空白字元作完結';
+$lang['login mustn\'t start with a space character'] = '用戶名稱不可以空白字元作開始';
+$lang['show tag cloud'] = '顯示標籤雲';
+$lang['slideshow'] = '幻燈片';
+$lang['stop the slideshow'] = '停止幻燈片播放';
+$lang['this login is already used'] = '用戶名稱已經被使用';
+$lang['Requested album does not exist'] = '要求的相簿不存在';
+$lang['Requested tag does not exist'] = '要求的標籤不存在';
+$lang['Reset to default values'] = '重設到預設值';
+$lang['Reset'] = '重設';
+$lang['Retrieve password'] = '重新取得密碼';
+$lang['Return to home page'] = '回到主頁';
+$lang['SQL queries in'] = 'SQL 查詢在';
+$lang['Search by date'] = '以日期搜尋';
+$lang['Search for Author'] = '以作者搜尋';
+$lang['Search for all terms'] = '搜尋所有項目';
+$lang['Search for any term'] = '搜尋任何項目';
+$lang['Search for words'] = '搜尋詞語';
+$lang['Search in albums'] = '在相簿中搜尋';
+$lang['Search in sub-albums'] = '在子相簿中搜尋';
+$lang['Search results'] = '搜尋結果';
+$lang['Search rules'] = '搜尋規則';
+$lang['Search'] = '搜尋';
+$lang['Send my connection settings by email'] = '以電郵寄出連接設定';
+$lang['Sent by'] = '發送人';
+$lang['Show file metadata'] = '顯示檔案資料';
+$lang['Show latest comments first'] = '顯示最新的留言在前';
+$lang['Show number of comments'] = '顯示留言總數';
+$lang['Show oldest comments first'] = '顯示最舊的留言在前';
+$lang['Someone requested that the password be reset for the following user account:'] = '有人曾經要求重設以下用戶的密碼:';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = '註冊成功, 你將會收到一封電郵裏有你的連接設定.
+歡迎!';
+$lang['Tag results for'] = '標籤結果為';
+$lang['Tag'] = '標籤';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS 訂閱提供在網站上的新動向: 新相片, 更新的相簿, 新留言. 須要使用 RSS 閱讀器.';
+$lang['The passwords do not match'] = '密碼不符';
+$lang['This author modified following comment:'] = '這作者修改了以下的留言:';
+$lang['This author removed the comment with id %d'] = '這作者刪除了的留言 id 為 %d';
+$lang['To reset your password, visit the following address:'] = '請到以下網址重設你的密碼';
+$lang['User "%s" has no email address, password reset is not possible'] = '用戶 "%s" 沒有電郵地址, 不能重設密碼';
+$lang['User comments'] = '用戶留言';
+$lang['You will receive a link to create a new password via email.'] = '你會收到的電郵裏會有一個網址來重設密碼';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = '你留言由於不符合規則, 不能記錄.';
+$lang['Your comment has been registered'] = '你的留言已被記錄';
+$lang['Your password has been reset'] = '你的密碼已經重設';
+$lang['comment date'] = '留言日期';
+$lang['display all photos in all sub-albums'] = '顯示所有子相簿的相片';
+$lang['display last user comments'] = '顯示用戶的新留言';
+$lang['display photos linked to this tag'] = '顯示連結到這標籤的相片';
+$lang['display recently updated albums'] = '顯示最近更新的相簿';
+$lang['display this album'] = '顯示這相簿';
+$lang['in %d sub-albums'] = '在子相簿 %d 中';
+$lang['in %d sub-album'] = '在子相簿 %d 中';
+$lang['in this album'] = '在這相簿中';
+$lang['password updated'] = '密碼已更新';
+$lang['remove this tag from the list'] = '在列表中刪除此標籤';
+$lang['representative'] = '相簿縮圖';
+$lang['searched words : %s'] = '搜尋詞語:  %s';
+$lang['search'] = '搜尋';
+$lang['set as album representative'] = '設定為相簿縮圖';
+$lang['useful when password forgotten'] = '忘記密碼時將會使用';
+$lang['Show number of hits'] = '顯示點擊次數';
+$lang['Since'] = '由';
+$lang['Sort by'] = '排序';
+$lang['Sort order'] = '排序規則';
+$lang['Specials'] = '特類';
+$lang['Submit'] = '提交';
+$lang['Thank you for registering at %s!'] = '多謝在 %s 註冊!';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = '系統在維護中，請稍候再來。';
+$lang['The number of photos per page must be a not null scalar'] = '每頁相片數必須為正數';
+$lang['Thumbnails'] = '縮圖';
+$lang['Unknown feed identifier'] = '未知的訂閱識別符';
+$lang['Unknown identifier'] = '未知的識別符';
+$lang['Update your rating'] = '更改評級';
+$lang['User: %s'] = '用戶: %s';
+$lang['Username "%s" on gallery %s'] = '在相簿 %s 上的用戶名稱 &quot;%s&quot; ';
+$lang['Username modification'] = '用戶名稱更改';
+$lang['Username or email'] = '用戶名稱或電郵';
+$lang['Username: %s'] = '用戶名稱: %s';
+$lang['Username'] = '用戶名稱';
+$lang['View in'] = '檢視在';
+$lang['View'] = '檢視';
+$lang['Visits, high &rarr; low'] = '點閱次數, 高 &rarr; 低';
+$lang['Visits, low &rarr; high'] = '點閱次數, 低 &rarr; 高';
+$lang['Visits'] = '點閱次數';
+$lang['Webmaster'] = '管理員';
+$lang['Week %d'] = '星期 %d';
+$lang['Welcome to your Piwigo photo gallery!'] = '歡迎來到你的 Piwigo 相簿!';
+$lang['Welcome'] = '歡迎';
+$lang['Yes'] = '是';
+$lang['You are not authorized to access the requested page'] = '你沒有權限訪問這頁面';
+$lang['Your Gallery Customization'] = '相簿設定';
+$lang['Your favorites'] = '你的收藏夾';
+$lang['Your username has been successfully changed to : %s'] = '你的用戶名稱已成功更改為: %s';
+$lang['add this photo to your favorites'] = '把這張相片加入到收藏夾中';
+$lang['all'] = '所有';
+$lang['ascending'] = '從小到大排序';
+$lang['author(s) : %s'] = '作者: %s';
+$lang['available for administrators only'] = '只限管理員';
+$lang['chronology_monthly_calendar'] = '月曆';
+$lang['chronology_monthly_list'] = '每月列表';
+$lang['chronology_weekly_list'] = '每週列表';
+$lang['cloud'] = '雲';
+$lang['created after %s (%s)'] = '建立於 %s (%s) 之後';
+$lang['created before %s (%s)'] = '建立於 %s (%s) 之前';
+$lang['created between %s (%s) and %s (%s)'] = '建立於 %s (%s) 和 %s (%s) 之間';
+$lang['created on %s'] = '建立於 %s';
+$lang['customize the appareance of the gallery'] = '設定相簿的外觀';
+$lang['day']['0'] = '星期日';
+$lang['day']['1'] = '星期一';
+$lang['day']['2'] = '星期二';
+$lang['day']['3'] = '星期三';
+$lang['day']['4'] = '星期四';
+$lang['day']['5'] = '星期五';
+$lang['day']['6'] = '星期六';
+$lang['delete all photos from your favorites'] = '從收藏夾中刪除所有相片';
+$lang['delete this photo from your favorites'] = '從收藏夾中刪除這張相片';
+$lang['descending'] = '從大到小排序';
+$lang['display a calendar by creation date'] = '以建立日期來顯示日曆';
+$lang['display a calendar by posted date'] = '以發佈日期來顯示日曆';
+$lang['display a set of random photos'] = '顯示隨機相片';
+$lang['display best rated photos'] = '顯示最高評級相片';
+$lang['display each day with photos, month per month'] = '按月和日顯示相片';
+$lang['display most recent photos'] = '顯示最新相片';
+$lang['display most visited photos'] = '顯示點閱次數最多的相片';
+$lang['display only recently posted photos'] = '只顯示最近發佈的相片';
+$lang['display your favorites photos'] = '顯示收藏的相片';
+$lang['edit'] = '編輯';
+$lang['excluded'] = '不包括';
+$lang['from %s to %s'] = '由 %s 至 %s';
+$lang['group by letters'] = '按字母分類';
+$lang['guest'] = '訪客';
+$lang['included'] = '包括';
+$lang['large'] = 'L - 大';
+$lang['last %d days'] = '最近 %d 天';
+$lang['letters'] = '字母';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = '電郵地址必須類似 xxx@yyy.eee (例如: jack@altern.org)';
+$lang['medium'] = 'M - 中';
+$lang['month']['10'] = '十月';
+$lang['month']['11'] = '十一月';
+$lang['month']['12'] = '十二月';
+$lang['month']['1'] = '一月';
+$lang['month']['2'] = '二月';
+$lang['month']['3'] = '三月';
+$lang['month']['4'] = '四月';
+$lang['month']['5'] = '五月';
+$lang['month']['6'] = '六月';
+$lang['month']['7'] = '七月';
+$lang['month']['8'] = '八月';
+$lang['month']['9'] = '九月';
+$lang['no rate'] = '沒有評級';
+$lang['obligatory'] = '必須';
+$lang['photos posted during the last %d days'] = '相片在最近 %d 天中發佈';
+$lang['photo'] = '相片';
+$lang['posted after %s (%s)'] = '在 %s (%s) 之後發佈';
+$lang['posted before %s (%s)'] = '在 %s (%s) 之前發佈';
+$lang['posted between %s (%s) and %s (%s)'] = '在 %s (%s) 和 %s (%s) 之間發佈';
+$lang['posted on %s'] = '在 %s 發佈';
+$lang['return to normal view mode'] = '返回正常檢視模式';
+$lang['return to the display of all photos'] = '返回到顯示所有相片';
+$lang['small'] = 'S - 小';
+$lang['square'] = '方形';
+$lang['the beginning'] = '開始';
+$lang['the username must be given'] = '必須要有用戶名稱';
+$lang['this email address is already in use'] = '電郵地址已被使用';
+$lang['thumb'] = '縮圖';
+$lang['today'] = '今天';
+$lang['wrong date'] = '日期錯誤';
+$lang['xlarge'] = 'XL - 特大';
+$lang['xsmall'] = 'XL - 特小';
+$lang['xxlarge'] = 'XLL - 極大';
+$lang['Email address is mandatory'] = '必須填寫電郵地址';
+$lang['Username is mandatory'] = '必須填寫使用者名稱';
+$lang['Website'] = '網站';
+$lang['Your website URL is invalid'] = '你的網址無效';
+$lang['mandatory'] = '必填';
+$lang['Email'] = '電郵';
+$lang['First Page'] = '第一頁';
+$lang['Go back to the album'] = '回到相冊';
+$lang['Last Page'] = '最後一頁';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '確認密碼未完成，請確認所選定的密碼。';
+$lang['Password is missing. Please enter the password.'] = '缺少了密碼。請輸入密碼。';
+?>
Index: /tags/2.6.0RC1/language/zh_HK/index.php
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/language/zh_HK/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = '數據庫表將使用前綴詞(它另您更好管理)';
+$lang['enter a login for webmaster'] = '輸入網站管理員登錄名稱';
+$lang['please enter your password again'] = '請您再次輸入密碼';
+$lang['user login given by your host provider'] = '供應商姶你的登錄用戶名稱';
+$lang['user password given by your host provider'] = '供應商姶你的登錄用戶密碼';
+$lang['verification'] = '驗證';
+$lang['webmaster login can\'t contain characters \' or "'] = '網站管理員登錄名稱不能包含字符\'或"';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = '需要幫助嗎？你可以在<a href="%s">Piwigo 留言板</a>提出問題。';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意：你可以更改設定，然後重新啟動Piwigo。';
+$lang['PHP 5 is required'] = '需要PHP5';
+$lang['Password ']['confirm'] = '密碼[確認]';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo嘗試建立或修改您的.htaccess檔案, 來設定系統使用PHP5。';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo的無法設定使用PHP5。';
+$lang['Sorry!'] = '對不起！';
+$lang['Start Install'] = '開始安裝';
+$lang['Try to configure PHP 5'] = '嘗試設定PHP5';
+$lang['User'] = '用戶';
+$lang['Visitors will be able to contact site administrator with this mail'] = '訪客可以使用這個電子郵件與網站管理員聯繫';
+$lang['Welcome to my photo gallery'] = '歡迎來到我的相簿';
+$lang['Welcome to your new installation of Piwigo!'] = '歡迎來到你新安裝的Piwigo！';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下載設定檔案，並裝它上傳到local/config目錄中安裝。';
+$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = '請聯繫你的網站託管服務提供商，看看你怎麼可以自己切換到PHP 5。';
+$lang['also given by your host provider'] = '也可由網站託管服務提供商幫助設定';
+$lang['Admin configuration'] = '管理員設定';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一種解決方案是將上面框中的文字複製，並貼到檔案 "local/config/database.inc.php"上 （警告：database.inc.php只可以包括文字框內容,不可以有，或空格字符）';
+$lang['Basic configuration'] = '基本設定';
+$lang['Can\'t connect to server'] = '無法連接到伺服器';
+$lang['Congratulations, Piwigo installation is completed'] = '恭喜你，Piwigo已安裝完成';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = '成功連接到伺服器, 但不能連接到數據庫。';
+$lang['Creation of config file local/config/database.inc.php failed.'] = '無法創建設定檔案 local/config/database.inc.php。';
+$lang['Database configuration'] = '數據庫設定';
+$lang['Database name'] = '數據庫名稱';
+$lang['Database table prefix'] = '數據庫表格前置詞';
+$lang['Default gallery language'] = '預設相簿語言';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = '如需要任何幫助,請不要猶豫到我們的論壇諮詢:%s';
+$lang['Download the config file'] = '下載設定檔案。';
+$lang['Hope to see you back soon.'] = '希望盡快看到你回來。';
+$lang['Host'] = '主機';
+$lang['Installation'] = '安裝';
+$lang['It appears your webhost is currently running PHP %s.'] = '目前您的網頁寄存伺服器運行PHP %s。';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = '這是必要的網站管理,因它會顯示給所有訪客。';
+$lang['Just another Piwigo gallery'] = '只是另一個Piwigo相簿';
+$lang['Keep it confidential, it enables you to access administration panel'] = '請保密，它使您能夠訪問管理面板';
+$lang['localhost or other, supplied by your host provider'] = '本地主機或其它，由你的主機提供商提供';
+?>
Index: /tags/2.6.0RC1/language/zh_HK/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+中文 (香港) [HK]
Index: /tags/2.6.0RC1/language/zh_HK/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_HK/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_HK/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,40 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['All sub-albums of private albums become private'] = '所有私有子相簿,設定為只允許私有觀看';
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = '作為預防措施，以下插件已被停用。請檢查有沒有插件更新版本,然後再啟用它：';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '作為預防措施，以下主題已被停用。請檢查有沒有主題更新版本,然後再啟用它：';
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '在<i>%s</i>之前<b>?></b>，插入：';
+$lang['Only administrator can run upgrade: please sign in below.'] = '只有管理員才能執行升級：請在下面登錄。';
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '只有縮圖的前綴和網站管理員的郵件地址可以從舊版設定中保存';
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '如果您遇到任何問題, 請執行維護檢查[管理>工具>維護]。';
+$lang['SQL queries'] = 'SQL查詢';
+$lang['Statistics'] = '統計';
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = '本頁建議數據庫從舊的Piwigo版本升級到新版本。升級助手認為你正在運行的<strong>版本％s</strong>（或同等版本）。';
+$lang['Upgrade'] = '升級';
+$lang['Upgrade from version %s to %s'] = '從版本%s升級到%s';
+$lang['Upgrade informations'] = '升級信息';
+$lang['User permissions and group permissions have been erased'] = '使用者和群組的權限已被刪除';
+$lang['You do not have access rights to run upgrade'] = '您沒有權限執行升級';
+$lang['total SQL time'] = '總SQL執行時間';
+$lang['total upgrade time'] = '總升級時間';
+?>
Index: /tags/2.6.0RC1/language/zh_TW/about.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/about.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/about.html	(revision 25596)
@@ -0,0 +1,14 @@
+<p>此相冊畫廊是基於 Piwigo 的.</p>
+
+<p>Piwigo 是一個網絡的相冊畫廊軟件，她是由一個活躍的社區用戶和開發者創建的。
+製作 Piwigo 的自定義擴展是非常容易的。使得 Piwigo 更錦上添花的是，
+她還是一個完全免費和開源的項目。</p>
+
+<p id="linkToPiwigo"><a href="http://cn.piwigo.org">瀏覽 Piwigo 網站</a></p>
+
+<p>以下是 Piwigo 的中文翻譯與維護人員 (以字母排序):
+
+ <ul>
+     <li>周毓華</li>
+  </ul>
+     .... 感謝他們！</p>
Index: /tags/2.6.0RC1/language/zh_TW/admin.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/admin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/admin.lang.php	(revision 25596)
@@ -0,0 +1,971 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['%d association'] = '%d 相關';
+$lang['%d associations'] = '%d 相關';
+$lang['%d album including'] = '%d 相冊包含中';
+$lang['%d albums including'] = '%d 相冊包含中';
+$lang['%d physical'] = '物理 %d';
+$lang['%d physicals'] = '物理 %d ';
+$lang[' and %d virtual'] = ' 和 虛擬 %d ';
+$lang[' and %d virtuals'] = ' 和 虛擬 %d ';
+$lang['%d album moved'] = '%d 相冊已移動';
+$lang['%d albums moved'] = '%d 相冊已移動';
+$lang['%d group'] = '%d 群組';
+$lang['%d groups'] = '%d 群組';
+$lang['%d member'] = '%d 會員';
+$lang['%d members'] = '%d 會員';
+$lang['%d tag'] = '%d 標籤';
+$lang['%d tags'] = '%d 標籤';
+$lang['%d user comment rejected'] = '%d 用戶評論被刪除';
+$lang['%d user comments rejected'] = '%d 用戶評論被刪除';
+$lang['%d user comment validated'] = '%d 用戶評論已確認有效';
+$lang['%d user comments validated'] = '%d 用戶評論已確認有效';
+$lang['%d user deleted'] = '%d 用戶已刪除';
+$lang['%d users deleted'] = '%d 用戶已刪除';
+$lang['%d user'] = '%d 用戶';
+$lang['%d users'] = '%d 用戶';
+$lang['%d waiting for validation'] = '%d 等待驗證確認';
+$lang['Actions'] = '實施';
+$lang['Activate'] = '啟動';
+$lang['Add/delete a permalink'] = '增加/刪除一個固定連結';
+$lang['Add a tag'] = '增加標籤';
+$lang['Add a user'] = '增加用戶';
+$lang['Add group'] = '增加群組';
+$lang['Add'] = '增加';
+$lang['Allow user registration'] = '允許用戶註冊';
+$lang['Apply to sub-albums'] = '應用到子相冊';
+$lang['Associated'] = '關聯於';
+$lang['Caddie management'] = '購物籃管理';
+$lang['Caddie'] = '購物籃';
+$lang['Albums authorized thanks to group associations'] = '相冊群組織授權感謝協會';
+$lang['Album manual order was saved'] = '相冊手工排序已保存';
+$lang['Check for upgrade failed for unknown reasons.'] = '檢查是否有升級失敗由於未知原因。';
+$lang['Check for upgrade'] = '檢查是否有升級';
+$lang['Comments for all'] = '評論所有的';
+$lang['Current name'] = '現用名';
+$lang['Database'] = '資料庫';
+$lang['Deactivate'] = '停用';
+$lang['Delete Representant'] = '刪除相冊縮略圖';
+$lang['Delete selected tags'] = '刪除所選標籤';
+$lang['Delete selected users'] = '刪除所選用戶';
+$lang['Deletions'] = '刪除';
+$lang['Deny selected groups'] = '拒絕所選群組';
+$lang['Deny selected users'] = '拒絕所選的用戶';
+$lang['Description'] = '描述';
+$lang['Display options'] = '顯示選項';
+$lang['Dissociated'] = '取消聯繫';
+$lang['Does not represent'] = '不需描繪';
+$lang['Edit selected tags'] = '編輯所選標籤';
+$lang['Edit tags'] = '編輯標籤';
+$lang['Email admins when a new user registers'] = '當有新的使用者註冊就通知管理員';
+$lang['Email admins when a valid comment is entered'] = '當用戶發表評論時就通知管理員';
+$lang['Email admins when a comment requires validation'] = '當用戶要求確認他的評論時通知管理員';
+$lang['Environment'] = '環境';
+$lang['Form'] = '表單';
+$lang['Gallery title'] = '圖庫標題';
+$lang['Grant selected groups'] = '對所選群組授權';
+$lang['Grant selected users'] = '對所選用戶授權';
+$lang['Group name'] = '群組名';
+$lang['Groups'] = '群組';
+$lang['Guests'] = '訪客';
+$lang['History'] = '歷史';
+$lang['Informations'] = '信息';
+$lang['Install'] = '安裝';
+$lang['Link all album photos to a new album'] = '鏈接所有相冊的相片到新的相冊';
+$lang['Link all album photos to some existing albums'] = '連結所有相冊的相片到現有的相冊';
+$lang['Linked albums'] = '已鏈接相冊';
+$lang['Lock gallery'] = '凍結圖庫';
+$lang['Maintenance'] = '維護';
+$lang['Edit album permissions'] = '管理相冊的權限';
+$lang['Manage permissions for group "%s"'] = '對群組 "%s" 進行權限管理';
+$lang['Manage permissions for user "%s"'] = '對用戶 "%s" 進行權限管理';
+$lang['Manage tags'] = '標籤管理';
+$lang['Members'] = '會員';
+$lang['Metadata synchronized from file'] = '對文件進行元數據同步';
+$lang['Move albums'] = '移動相冊';
+$lang['Move'] = '移動';
+$lang['Name'] = '名字';
+$lang['New name'] = '新名';
+$lang['New parent album'] = '新的父相冊';
+$lang['New tag'] = '新標籤';
+$lang['Number of comments per page'] = '每頁評論數';
+$lang['Number of rates'] = '投票數';
+$lang['Number of thumbnails to create'] = '縮略圖數';
+$lang['Only private albums are listed'] = '只列出私有相冊';
+$lang['Operating system'] = '操作系統';
+$lang['Options'] = '選項';
+$lang['Other private albums'] = '其他私有相冊';
+$lang['Page banner'] = '網頁標語';
+$lang['Parent album'] = '主相冊';
+$lang['Path'] = '路徑';
+$lang['Permalink'] = '固定連結';
+$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = '固定連結 %s 已被 %s 相冊使用了。請先從固定鏈接歷史記錄刪除。';
+$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = '固定連結中包含了非法字符（"a-zA-Z0-9", "-", "_" ou "/"）. 禁止使用數字和以"-"開頭後面緊跟數字';
+$lang['Permalink %s is already used by album %s'] = '固定連結 %s 已被 %s 相冊使用了';
+$lang['Permalink history'] = '固定連結歷史記錄';
+$lang['Permalinks'] = '固定連結';
+$lang['Permission denied'] = '禁止訪問';
+$lang['Permission granted thanks to a group'] = '同群組成員可以訪問授權類';
+$lang['Permission granted'] = '允許訪問';
+$lang['Photo informations updated'] = '圖片更新信息';
+$lang['Plugins'] = '插件';
+$lang['Position'] = '位置';
+$lang['Preferences'] = '偏好設定';
+$lang['Properties'] = '屬性';
+$lang['Random photo'] = '隨機';
+$lang['Rate date'] = '投票日期';
+$lang['Rating by guests'] = '訪客投票數';
+$lang['Rating'] = '投票';
+$lang['Reject'] = '拒絕';
+$lang['Representant'] = '相冊縮略圖';
+$lang['Representation of albums'] = '相冊縮略圖';
+$lang['Representative'] = '相冊縮略圖';
+$lang['Represents'] = '縮略圖是給';
+$lang['Save order'] = '儲存排序';
+$lang['Save to permalink history'] = '儲存到固定連結的歷史記錄中';
+$lang['Select at least one album'] = '選擇最後一個相冊';
+$lang['Select at least one photo'] = '至少選中一張圖片';
+$lang['Select at least one user'] = '至少選中一個用戶';
+$lang['Show info'] = '顯示所有信息';
+$lang['Site manager'] = '網管';
+$lang['Status'] = '狀態';
+$lang['Statistics'] = '統計';
+$lang['Storage album'] = '存儲相冊';
+$lang['Sum of rates'] = '總投票分';
+$lang['Tag "%s" already exists'] = '標籤 "%s" 已存在';
+$lang['Tag "%s" was added'] = '標籤 "%s" 已加入';
+$lang['Tag selection'] = '標籤選擇';
+$lang['The %d following tags were deleted'] = '下面標籤 %d 已刪除';
+$lang['Unable to check for upgrade.'] = '無法檢查是否有升級。';
+$lang['Uninstall'] = '解除安裝';
+$lang['Use the default photo sort order (defined in the configuration file)'] = '使用預設的的照片排序順序(在設定檔中定義)';
+$lang['User comments validation'] = '確認用戶評論';
+$lang['Users'] = '用戶';
+$lang['Validate'] = '確認';
+$lang['Validation'] = '確認';
+$lang['Version'] = '版本';
+$lang['Virtual albums to move'] = '移動虛擬相冊';
+$lang['Virtual album name'] = '虛擬相冊名稱';
+$lang['Webmaster cannot be deleted'] = '不能刪除網管帳戶';
+$lang['You are running on development sources, no check possible.'] = '你運行的是源碼開發版本, 不能檢測最新版。';
+$lang['You cannot delete your account'] = "你不能刪除自己本身帳號";
+$lang['You cannot move an album in its own sub album'] = '您不能將一個相冊移動到其子相冊裡';
+$lang['You need to confirm deletion'] = '您必須確認刪除。';
+$lang['Associate to album'] = '關聯到相冊';
+$lang['associate to group'] = '關聯到群組';
+$lang['Authorized'] = '授權';
+$lang['Add a virtual album'] = '增加一個虛擬相冊';
+$lang['Authorize users to add comments on selected albums'] = '讓用戶可在所選相冊裡發表評論';
+$lang['The name of an album must not be empty'] = '相冊名稱不能為空白';
+$lang['Lock albums'] = '鎖定相冊';
+$lang['Private'] = '私有相冊';
+$lang['Public'] = '公共相冊';
+$lang['Find a new representant by random'] = '搜尋一個新的隨機相冊縮略圖';
+$lang['Public / Private'] = '公有 / 私有';
+$lang['Manage authorizations for selected albums'] = '管理所選相冊的授權';
+$lang['Virtual album added'] = '虛擬相冊已添加';
+$lang['Virtual album deleted'] = '虛擬相冊已刪除';
+$lang['Access type'] = '權限類型';
+$lang['Information data registered in database'] = '信息已保存到資料庫中';
+$lang['Default display'] = '預設顯示資訊';
+$lang['The gallery URL is not valid.'] = '圖片庫 URL 是無效的。';
+$lang['The number of comments a page must be between 5 and 50 included.'] = '每頁用戶評論數必須在5和50之間。';
+$lang['Configuration'] = '設定';
+$lang['confirm'] = '確定';
+$lang['Date'] = '日期';
+$lang['delete album'] = '刪除相冊';
+$lang['Dissociate from album'] = '從相冊裡分離';
+$lang['dissociate from group'] = '取消群組關聯';
+$lang['Album updated successfully'] = '相冊信息已上傳成功.';
+$lang['photos per page'] = '每頁圖片';
+$lang['High definition enabled'] = '高畫質已啟用';
+$lang['File'] = '檔案';
+$lang['first photo added on %s'] = '於 %s 上傳了第一幅圖';
+$lang['Forbidden'] = '禁止';
+$lang['global mode'] = '全局模式';
+$lang['group "%s" added'] = '增加 "%s" 群組';
+$lang['group "%s" deleted'] = '刪除 "%s" 群組';
+$lang['group "%s" updated'] = '更新 "%s" 群組';
+$lang['The name of a group must not contain " or \' or be empty.'] = '群組名不能包含 " 或 \' 並不能為空白。';
+$lang['This name is already used by another group.'] = '群組名已存在。';
+$lang['High definition'] = '高畫質';
+$lang['jump to album'] = '跳到相冊';
+$lang['jump to photo'] = '跳轉到圖';
+$lang['leave'] = '離開';
+$lang['Lock'] = '上鎖';
+$lang['Locked'] = '鎖定';
+$lang['manage album photos'] = '管理相冊裡的相片';
+$lang['manage sub-albums'] = '管理子相冊';
+$lang['Manage'] = '管理';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = '已超過執行時間, 處理還需時間[估計時間: %d 秒].';
+$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = '已超過執行時間, 處理還需時間[估計時間: %d 秒].';
+$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = '由於發送用戶列表的準備時間受限制,其餘用戶將不被列出.';
+$lang['Time to send mail is limited. Others mails are skipped.'] = '發送郵件時間有限,其餘郵件被忽略。';
+$lang['To send ?'] = '發送?';
+$lang['Last send'] = '最後一次發送';
+$lang['User'] = '用戶';
+$lang['See you soon,'] = '很快再見，';
+$lang['Go to'] = '轉至 ';
+$lang['Hello'] = '你好 ';
+$lang['New photos were added'] = '加入一些新圖片';
+$lang['on'] = '時間: ';
+$lang['between'] = '之間';
+$lang['and'] = '至 ';
+$lang['The webmaster has subscribed you to receiving notifications by mail.'] = '網管開通了你的郵件通知功能。';
+$lang['You have subscribed to receiving notifications by mail.'] = '你開通了郵件通知功能。';
+$lang['To subscribe'] = '如要訂閱';
+$lang['If you encounter problems or have any question, please send a message to'] = '如有遇到故障或問題,請發郵件至 ';
+$lang['[NBM] Problems or questions'] = '[NBM] 故障或者疑問';
+$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = '網管取消了你的郵件通知功能。';
+$lang['You have unsubscribed from receiving notifications by mail.'] = '你取消了你的郵件通知功能。';
+$lang[', click on'] = ', 請點擊 ';
+$lang['To unsubscribe'] = '要取消訂閱';
+$lang['With blank value, gallery title will be used'] = '圖庫標題允許為空';
+$lang['Notification'] = '通知';
+$lang['Error when sending email to %s [%s].'] = '發送郵件 給 %s [%s] 是發生了錯誤.';
+$lang['Mail sent to %s [%s].'] = '已發送至 %s [%s].';
+$lang['%d mail was sent.'] = '%s 郵件已發送.';
+$lang['%d mails were sent.'] = '%s 郵件已發送.';
+$lang['%d mail was not sent.'] = '%s 郵件未被發送.';
+$lang['%d mails were not sent.'] = '%s 郵件未被發送.';
+$lang['No mail to send.'] = '沒有郵件要發送.';
+$lang['There is no available subscribers to mail.'] = '沒有用戶需要郵件通知。';
+$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = '當有新圖片時,才能使用用戶郵件通知功能.';
+$lang['Anyway only webmasters can see this tab and never administrators.'] = '任何人都不能使用此標籤(網管除外).';
+$lang['No user to send notifications by mail.'] = '沒有郵件通知用戶.';
+$lang['New photos added'] = '新圖片已加入';
+$lang['Subscribe to notification by mail'] = '訂閱郵件通知功能';
+$lang['Unsubscribe from notification by mail'] = '取消訂閱郵件通知功能';
+$lang['Parameter'] = '設定';
+$lang['Continue processing treatment'] = '正在繼續處理中...';
+$lang['Complementary mail content'] = '郵件附加內容';
+$lang['Add detailed content'] = '增加細節內容';
+$lang['Send mail as'] = '發送郵件為';
+$lang['Send mail to users'] = '給用戶發送郵件';
+$lang['Send'] = '發送';
+$lang['Options'] = '選項';
+$lang['Subscribed'] = '已訂閱';
+$lang['Subscribe'] = '訂閱';
+$lang['Parameters'] = '參數';
+$lang['Select recipients'] = '選擇接受郵件用戶';
+$lang['Subscribe/unsubscribe users'] = '訂閱/取消訂閱用戶';
+$lang['Unsubscribed'] = '已取消訂閱';
+$lang['%d parameter was updated.'] = '%d 參數已更新.';
+$lang['%d parameters were updated.'] = '%d 等參數已更新.';
+$lang['%d user was not updated.'] = '%d 用戶沒有被更新.';
+$lang['%d users were not updated.'] = '%d 等用戶沒有被更新.';
+$lang['User %s [%s] was removed from the subscription list.'] = '用戶 %s [%s] 從註冊名單中刪除。';
+$lang['User %s [%s] was added to the subscription list.'] = '用戶 %s [%s] 加入到註冊名單中。';
+$lang['%d user was updated.'] = '%d 用戶已更新.';
+$lang['%d users were updated.'] = '%d 等用戶已更新.';
+$lang['User %s [%s] was not removed from the subscription list.'] = '用戶 %s [%s] 沒有從註冊名單中刪除。';
+$lang['User %s [%s] was not added to the subscription list.'] = '用戶 %s [%s] 沒有加到註冊名當中。';
+$lang['User %s [%s] added.'] = '用戶 %s [%s] 已加入。';
+$lang['Warning: subscribing or unsubscribing will send mails to users'] = '注意, 訂閱或退訂都會給相關用戶發送郵件';
+$lang['Send mail on HTML format'] = '以HTML格式發送郵件';
+$lang['Include display of recent photos grouped by dates'] = '包括顯示最近按日期分群組的圖片';
+$lang['Available only with HTML format'] = '僅適用於HTML格式';
+$lang['no write access'] = '沒有寫入權限';
+$lang['Permissions'] = '權限';
+$lang['private'] = '私有';
+$lang['public'] = '公有';
+$lang['Purge never used notification feeds'] = '清除從沒使用過的通知回饋';
+$lang['Purge sessions'] = '清除工作階段';
+$lang['randomly represented'] = '隨機顯示相冊縮略圖';
+$lang['registration date'] = '註冊日期';
+$lang['clean'] = '清除';
+$lang['Create this site'] = '建立網站';
+$lang['test'] = '測試';
+$lang['test this remote site'] = '測試遠端站點';
+$lang['remove tags'] = '刪除所有標籤';
+$lang['Repair and optimize database'] = '修復和優化資料庫';
+$lang['selection'] = '選擇';
+$lang['set to'] = '設定為';
+$lang['singly represented'] = '固定顯示';
+$lang['This site already exists'] = '此站點已存在';
+$lang['created'] = '已建立';
+$lang['delete'] = '刪除';
+$lang['delete this site and all its attached elements'] = '刪除此站點和與其相關聯的所有信息';
+$lang['an error happened'] = '發生錯誤';
+$lang['Local'] = '本地';
+$lang['Remote'] = '遠端';
+$lang['update the database from files'] = '根據檔案對資料庫進行更新';
+$lang['status'] = '狀態';
+$lang['Directory'] = '目錄夾';
+$lang['sub-albums'] = '子相冊';
+$lang['Synchronize metadata'] = '同步元數據';
+$lang['target'] = '目標';
+$lang['Thumbnail'] = '縮略圖';
+$lang['Title'] = '標題';
+$lang['Album list management'] = '相冊清單管理';
+$lang['Piwigo configuration'] = 'Piwigo的設定';
+$lang['Edit album'] = '修改一個相冊';
+$lang['Group management'] = '群組管理';
+$lang['User list'] = '用戶名單';
+$lang['Edit photo information'] = '修改圖片信息';
+$lang['Database synchronization with files'] = '根據文件來同步資料庫';
+$lang['all'] = '所有';
+$lang['height must be a number superior to'] = '圖片高度必須超過(整數)';
+$lang['width must be a number superior to'] = '圖片長度必須超過(整數)';
+$lang['for the file format'] = '對於檔案格式';
+$lang['Photo unreachable or no support'] = '不支持圖片格式或無法顯示';
+$lang['GD version'] = 'GD版';
+$lang['General statistics'] = '普通統計';
+$lang['average time'] = '平均時間';
+$lang['number of miniaturized photos'] = '數量的縮略圖建立';
+$lang['total time'] = '總共時間';
+$lang['for this file format'] = '對於此檔案格式';
+$lang['unit mode'] = '單一模式';
+$lang['Unlocked'] = '解除鎖定';
+$lang['unset'] = '未設定';
+$lang['Update albums informations'] = '上傳相冊信息';
+$lang['Update photos information'] = '更新圖信息';
+$lang['Synchronize'] = '同步';
+$lang['reduce to single existing albums'] = '減少現有的單獨相冊';
+$lang['Choose an option'] = '選擇一個選項';
+$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = '顯示最大量的信息(增加相冊和相片,刪除的相冊和照片)';
+$lang['Error list'] = '錯誤清單';
+$lang['Errors caption'] = '錯誤說明';
+$lang['Detailed informations'] = '詳細信息';
+$lang['File/directory read error'] = '檔案/目錄的讀取錯誤';
+$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = '檔案或目錄無法訪問(無論是它不存在或訪問被拒絕)';
+$lang['albums deleted in the database'] = '相冊已從資料庫刪除';
+$lang['photos deleted from the database'] = '圖片已從資料庫中刪除';
+$lang['photos candidates for metadata synchronization'] = '對應同步元數據的候選圖片';
+$lang['photos informations synchronized with files metadata'] = '附有元數據的同步圖片信息informations des images synchronisees avec les meta-donnees';
+$lang['errors during synchronization'] = '同步期間發生錯誤';
+$lang['albums added in the database'] = '相冊已增加到資料庫';
+$lang['photos added in the database'] = '增加圖片到資料庫';
+$lang['photos updated in the database'] = '更新資料庫中的圖片';
+$lang['Search for new images in the directories'] = '在目錄中搜尋新圖片';
+$lang['added'] = '已加入';
+$lang['deleted'] = '已刪除';
+$lang['Metadata synchronization results'] = '元數據更新結果';
+$lang['only perform a simulation (no change in database will be made)'] = '只進行模擬操作(不會改變資料庫中的任何內容)';
+$lang['Simulation'] = '模擬';
+$lang['directories + files'] = '目錄+文件';
+$lang['only directories'] = '僅目錄';
+$lang['synchronize files structure with database'] = '同步文件結構和資料庫';
+$lang['synchronize files metadata with database photos informations'] = '根據文件元資料同步資料庫中的圖片信息';
+$lang['even already synchronized photos'] = '包括已經同步的圖片';
+$lang['Used metadata'] = '已使用過的元數據';
+$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = '目錄和檔案的名稱必須包括字母，數字,"-", "_" 或 "."';
+$lang['wrong filename'] = '檔案名稱錯誤';
+$lang['Upload'] = '上傳';
+$lang['user "%s" added'] = '用戶 "%s" 已加入';
+$lang['User status'] = '用戶狀態';
+$lang['user_status_admin'] = '管理員';
+$lang['user_status_generic'] = '一般用戶';
+$lang['user_status_guest'] = '訪客';
+$lang['user_status_normal'] = '使用者';
+$lang['user_status_webmaster'] = '網管';
+$lang['Virtual album'] = '虛擬相冊';
+$lang['Waiting'] = '等待';
+$lang['default'] = '預設';
+$lang['Toggle \'default group\' property'] = '賦予\'預設的群組\'屬性';
+$lang['Advanced features'] = '進級功能';
+$lang['Overall'] = '概覽';
+$lang['Year'] = '年';
+$lang['Month'] = '月';
+$lang['Day'] = '日';
+$lang['Pages seen'] = '已訪問過的頁面';
+$lang['Time'] = '時間';
+$lang['IP'] = 'IP';
+$lang['Element'] = '單元';
+$lang['Section'] = '區域';
+$lang['An information email was sent to group "%s"'] = '已向群組 "%s" 的所有成員發送了信息郵件';
+$lang['Send an information email to group members'] = '發送一份信息郵件給群組成員';
+$lang['Group'] = '群組';
+$lang['[%s] Visit album %s'] = '[%s] 參觀相冊 %s';
+$lang['Hello,'] = '你好,';
+$lang['See you soon.'] = '很快再見。';
+$lang['Discover album:'] = '探索相冊:';
+$lang['Mail content'] = '郵件內容';
+$lang['none'] = '沒有任何人';
+$lang['high'] = '高';
+$lang['other'] = '另外';
+$lang['Element type'] = '單元類型';
+$lang['Image id'] = '圖片ID';
+$lang['Summary'] = '概述';
+$lang['%d line filtered'] = '%d 行被過濾';
+$lang['%d lines filtered'] = '%d 行被過濾';
+$lang['%d guest'] = '%d 訪客';
+$lang['%d guests'] = '%d 訪客';
+$lang['Hour'] = '小時';
+$lang['guest'] = '訪客';
+$lang['default values'] = '預設值';
+$lang['Guest cannot be deleted'] = '不能刪除訪客';
+$lang['Default user cannot be deleted'] = '不能刪除預設用戶';
+$lang['Purge history detail'] = '清除歷史記錄';
+$lang['Purge history summary'] = '清除歷史摘要';
+$lang['Check integrity'] = '完整性檢查';
+$lang['Anomaly'] = '異常';
+$lang['Correction'] = '修正';
+$lang['Automatic correction'] = '自動修復';
+$lang['Impossible automatic correction'] = '無法自動修復';
+$lang['Correction applied with success'] = '修正成功應用';
+$lang['Correction applied with error'] = '修正適用的錯誤';
+$lang['%d anomaly has been detected.'] = '發現了 %d 異常.';
+$lang['%d anomalies have been detected.'] = '發現了 %d 個異常.';
+$lang['%d anomaly has been corrected.'] = '修正了 %d 異常.';
+$lang['%d anomalies have been detected corrected.'] = '修正了 %d 個異常.';
+$lang['%d anomaly has not been corrected.'] = '不能修正 %d 異常.';
+$lang['%d anomalies have not been corrected.'] = '不能修正 %d 個異常.';
+$lang['Go to %s or %s for more informations'] = '獲取更多信息，請到 %s 或者 %s ';
+$lang['the forum'] = '論壇';
+$lang['the wiki'] = 'wiki';
+$lang['%s value is not correct file because exif are not supported'] = '%s 值不是一個正確檔案，因為我們不支持exif格式';
+$lang['%s must be to set to false in your local/config/config.inc.php file'] = '在您的 local/config/config.inc.php 檔案, %s 必須設定為"false"';
+$lang['Main "guest" user does not exist'] = '主要"訪客"用戶不存在';
+$lang['Main "guest" user status is incorrect'] = '主要"訪客"用戶狀態異常';
+$lang['Default user does not exist'] = '預設帳戶不再存在';
+$lang['Main "webmaster" user does not exist'] = '主要網管帳戶不再存在';
+$lang['Main "webmaster" user status is incorrect'] = '主要網管用戶狀態異常';
+$lang['User "%s" created with "%s" like password'] = '用戶 "%s" 已建立，密碼是"%s"';
+$lang['Status of user "%s" updated'] = '用戶 "%s" 狀態已更新';
+$lang['add new photos to caddie'] = '把所有新圖片放到購物籃';
+$lang['No display'] = '不顯示縮略圖';
+$lang['Classic display'] = '經典顯示';
+$lang['Hoverbox display'] = '俯瞰顯示';
+$lang['Mail address is obligatory for all users'] = '每個用戶必須提供郵箱地址';
+$lang['Minimum privacy level'] = '最小隱私等級';
+$lang['Privacy level'] = '隱私等級';
+$lang['Level 0'] = '---';
+$lang['Level 1'] = '聯繫';
+$lang['Level 2'] = '朋友';
+$lang['Level 4'] = '家庭';
+$lang['Level 8'] = '管理者';
+$lang['Reinitialize check integrity'] = '重新完整性檢測';
+$lang['Check all'] = '檢查全部';
+$lang['Uncheck all'] = '取消全選';
+$lang['Check automatic corrections'] = '檢查自動修正';
+$lang['Apply selected corrections'] = '應用自動選擇';
+$lang['Ignore selected anomalies'] = '忽視選擇異常';
+$lang['Refresh'] = '刷新';
+$lang['The anomaly will be ignored until next application version'] = '此異常將被忽略，待下次版本中解決';
+$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = '修正的異常將不再被忽視';
+$lang['%d anomaly has been ignored.'] = '%d 異常被忽略.';
+$lang['%d anomalies have been ignored.'] = '%d 異常被忽略.';
+$lang['Plugins which need upgrade'] = '插件待升級';
+$lang['Plugin list'] = '插件列表';
+$lang['Check for updates'] = '檢查是否有更新';
+$lang['Other plugins'] = '其他可用的插件';
+$lang['Last revisions'] = '最新修訂版';
+$lang['Are you sure you want to install this plugin?'] = '確定安裝此插件嗎?';
+$lang['Are you sure you want to delete this plugin?'] = '確定要刪除此插件嗎?';
+$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = '確定安裝此更新嗎? 你必須核實無需卸載操作再進行安裝此更新.';
+$lang['Plugin has been successfully copied'] = '插件複製成功.';
+$lang['You might go to plugin list to install and activate it.'] = '在插件列表中安裝和啟動插件。';
+$lang['Can\'t create temporary file.'] = '無法建立臨時文件。';
+$lang['Can\'t download archive.'] = '無法下載歸檔文件。';
+$lang['Can\'t read or extract archive.'] = '無法讀取或解壓歸檔文件.';
+$lang['An error occured during extraction (%s).'] = '在解壓文件(%s) 發生錯誤.';
+$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = '請核實"plugins"文件夾及其子文件夾的權限(CHMOD).';
+$lang['Can\'t connect to server.'] = '無法連接到服務器。';
+$lang['Purge compiled templates'] = '清除編譯模板';
+$lang['Support'] = '支持';
+$lang['Documentation'] = '檔案';
+$lang['ACCESS_0'] = '自由存取';
+$lang['ACCESS_1'] = '對所有人開放';
+$lang['ACCESS_2'] = '只對註冊用戶開放';
+$lang['ACCESS_3'] = '只對管理員開放';
+$lang['ACCESS_4'] = '只對網管開放';
+$lang['ACCESS_5'] = '對任何人都不開放';
+$lang['A new version of Piwigo is available.'] = '有新的 Piwigo 版本發佈';
+$lang['Piwigo Administration'] = 'Piwigo管理';
+$lang['Piwigo version'] = 'Piwigo版本';
+$lang['You are running the latest version of Piwigo.'] = '你正在執行的是Piwigo最新版。';
+$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = '%s [%s]安裝版本跟[%s]版本不兼容';
+$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = '你應該升級你的系統，以充分利用該應用程序，否則應用程序可能無法正常工作，或者不是。';
+$lang['Deleted on'] = '刪除於';
+$lang['Last hit'] =  '最後一次查看';
+$lang['GD library is missing'] = '缺少GD庫';
+$lang['Templates'] = '模板';
+$lang['Extend for templates'] = '擴充模板';
+$lang['Replacement of original templates by customized templates from template-extension subfolder'] = '用位於template-extension文件夾下的用戶自定義模板更換原模板';
+$lang['Replacers (customized templates)'] = '替代(自訂的模板)';
+$lang['Original templates'] = '原模板';
+$lang['Optional URL keyword'] = '可選URL關鍵字';
+$lang['Templates configuration has been recorded.'] = '模板設定已經被記錄。';
+$lang['All optimizations have been successfully completed.'] = '優化成功.';
+$lang['Optimizations have been completed with some errors.'] = '優化已完成的一些錯誤。';
+$lang['Modify information'] = '修改信息';
+$lang['nothing'] = '沒有內容';
+$lang['overrides existing values with empty ones'] = '用空數據來刪除已存在的數據';
+$lang['Manage photo ranks'] = '管理圖片排序';
+$lang['Edit ranks'] = '修改排序方式';
+$lang['No photo in this album'] = '沒有相片在此相冊裡';
+$lang['Images manual order was saved'] = '圖片手動排序已保存';
+$lang['ranks'] = '順序';
+$lang['Drag to re-order'] = '點擊並拖動以重新排序';
+$lang['Quick Local Synchronization'] = '快速同步';
+$lang['No photo can be deleted'] = '沒有圖片可以刪除';
+$lang['Delete selected photos'] = '刪除圖片';
+$lang['%d photo was deleted'] = '%d 圖片被刪除';
+$lang['%d photos were deleted'] = '%d 圖片被刪除';
+$lang['Downloads'] = '下載';
+$lang['Released on'] = '發佈於';
+$lang['Number of downloads'] = '下載次數';
+$lang['Operation in progress'] = '處理正在進行中。';
+$lang['Please wait...'] = '請稍後...';
+$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = '訂閱 Piwigo 最新消息，與 Piwigo 項目保持聯繫。當有新版本發佈時，您將會收到郵件通知（有時也包括安全漏洞的修復，這對於升級是很重要的）和項目裡一些重要事情的發生。一年裡也只有幾封郵件。';
+$lang['Password is missing. Please enter the password.'] = '密碼沒有輸入，請輸入密碼。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '密碼確認未完成，請確認所選定的密碼。';
+$lang['Allow users to edit their own comments'] = '允許用戶修改自己的評論';
+$lang['Allow users to delete their own comments'] = '允許用戶刪除自己的評論';
+$lang['Email administrators when a comment is modified'] = '當評論被修改後，發郵件通知管理員';
+$lang['Email administrators when a comment is deleted'] = '當評論被刪除後，發郵件通知管理員';
+$lang['Cannot delete the old permalink !'] = '舊的固定連結不能被刪除!';
+$lang['Hit'] = '點擊';
+$lang['Tools'] = '工具';
+$lang['Photos'] = '相片';
+$lang['Themes'] = '主題';
+$lang['Instructions to use Piwigo'] = 'Piwigo 使用指南';
+$lang['Installed Themes'] = '安裝主題';
+$lang['Add New Theme'] = '增加一個新的主題';
+$lang['Forbid this theme to users'] = '禁用此主題';
+$lang['Set as default theme for unregistered and new users'] = '未註冊者和新用戶的主題設定為預設的主題';
+$lang['unknown'] = '未知';
+$lang['Upload Photos'] = '上傳相片';
+$lang['Drop into album'] = '選擇一個相冊';
+$lang['+ Add an upload box'] = '+ 添加一個上傳框';
+$lang['Create the "%s" directory at the root of your Piwigo installation'] = '建立 "%" 在安裝Piwigo的根目錄下';
+$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = '給予根目錄下的 "%s" 目錄寫權限 (chmod 777) 以完成 Piwigo 的安裝';
+$lang['existing album'] = '現有的相冊';
+$lang['create a new album'] = '建立一個新相冊';
+$lang['Album name'] = '相冊名稱';
+$lang['Album "%s" has been added'] = '類別 "%s" 已增加';
+$lang['Uploaded Photos'] = '相片已上傳';
+$lang['%d photos uploaded'] = '%d 相片已上傳';
+$lang['Privacy level set to "%s"'] = '私有級別設定為 "%s"';
+$lang['Album "%s" now contains %d photos'] = '類別 "%s" 現已包含了 %d 相片';
+$lang['Manage this set of %d photos'] = '管理此設置的 %d 張照片 ';
+$lang['Select files'] = '選擇檔案';
+$lang['Everybody'] = '所有人';
+$lang['Who can see these photos?'] = '哪些人可以看到這些相片?';
+$lang['Settings'] = '設定';
+$lang['Resize'] = '調整大小';
+$lang['Maximum width'] = '最大寬度';
+$lang['pixels'] = '像素';
+$lang['Maximum height'] = '最大高度';
+$lang['Image Quality'] = '圖片質量';
+$lang['Save Settings'] = '儲存設定';
+$lang['Your configuration settings are saved'] = '你的設定已儲存';
+$lang['Active Themes'] = '已啟動的主題';
+$lang['Add write access to the "%s" directory'] = '為 "%s" 目錄增加寫入權限';
+$lang['Administration Home'] = '管理員首頁';
+$lang['Change Admin Colors'] = '更改管理員後台顏色';
+$lang['Delete this theme'] = '刪除此主題';
+$lang['Directory does not exist'] = '目錄不存在';
+$lang['Download,'] = '下載,';
+$lang['FTP + Synchronization'] = 'FTP + 同步';
+$lang['Get Support on Piwigo Forum'] = '在 Piwigo 論壇上獲取幫助';
+$lang['Help Me'] = '幫助我';
+$lang['Impossible to activate this theme, the parent theme is missing: %s'] = '這個主題不能啟動，因為缺少主頁主題：％S';
+$lang['Impossible to delete this theme. Other themes depends on it: %s'] = '此主題不能刪除，因為其他主題還有依賴與它: %s';
+$lang['Inactive Themes'] = '停用主題';
+$lang['Install on your computer,'] = '安裝到您的電腦,';
+$lang['Make this theme available to users'] = '讓用戶可使用此主題';
+$lang['Page end'] = '頁尾';
+$lang['Piwigo Uploader'] = 'Piwigo 上傳者';
+$lang['Read Piwigo Documentation'] = '閱讀 Piwigo 檔案';
+$lang['Start pLoader and add your photos.'] = '開始使用pLoader的並新增你的照片。';
+$lang['Switch to clear or dark colors for administration'] = '切換管理員後台為清晰或黑暗的顏色';
+$lang['Theme has been successfully installed'] = '主題已成功安裝';
+$lang['Visit Gallery'] = '瀏覽畫廊';
+$lang['Visit Piwigo project website'] = '瀏覽 Piwigo 項目網站';
+$lang['pLoader stands for <em>Piwigo Uploader</em>. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader 是 <em>Piwigo 上傳者</em> 的官方標準軟件。pLoader 可將您電腦裡的相片傳送到 Piwigo 的相片畫廊裡。';
+$lang['Guest Settings'] = '訪客設定';
+$lang['Main Page'] = '主頁';
+$lang['Photo Page'] = '相片頁';
+$lang['Activate Navigation Bar'] = '啟動導航欄';
+$lang['Activate Navigation Thumbnails'] = '啟動縮略圖導航';
+$lang['Activate icon "%s"'] = '啟動圖標 "%s"';
+$lang['Photo Properties'] = '相片屬性';
+$lang['Allow user customization'] = '允許使用者客制化';
+$lang['Languages'] = '語言';
+$lang['Installed Languages'] = '安裝語言';
+$lang['Add New Language'] = '增加新的語言';
+$lang['Language has been successfully installed'] = '語言已成功安裝';
+$lang['Select:'] = '選擇:';
+$lang['None'] = '沒有';
+$lang['Invert'] = '反轉';
+$lang['Impossible to deactivate this theme, you need at least one theme.'] = '無法停用這個主題，你至少需要一個主題。';
+$lang['Webmaster status is required.'] = '必須設置網站管理員。';
+$lang['Bound Theme'] = '綁定主題';
+$lang['Allow rating'] = '允許投票';
+$lang['Select at least one comment'] = '至少選擇一個評論';
+$lang['Active Plugins'] = '啟動插件';
+$lang['Inactive Plugins'] = '停用插件';
+$lang['Missing Plugins'] = '丟失的插件';
+$lang['Uninstalled Plugins'] = '未安裝的插件';
+$lang['By %s'] = '按 %s';
+$lang['Visit plugin site'] = '瀏覽插件網站';
+$lang['Active Languages'] = '啟動語言';
+$lang['Delete this language'] = '刪除此語言';
+$lang['Forbid this language to users'] = '禁止用戶使用此語言';
+$lang['Impossible to deactivate this language, first set another language as default.'] = '無法停用這個語言，首先設定另一種語言為預設值。';
+$lang['Impossible to deactivate this language, you need at least one language.'] = '無法停用這個語言，你需要至少一種語言。';
+$lang['Inactive Languages'] = '停用語言';
+$lang['Make this language available to users'] = '讓用戶可使用此語言';
+$lang['Set as default language for unregistered and new users'] = '未註冊和新用戶的語言設定為預設的語言';
+$lang['Add Photos'] = '上傳照片';
+$lang['The following tag was deleted'] = '以下標籤已刪除';
+$lang['Miscellaneous'] = '雜項';
+$lang['Virtual Links'] = '虛擬連結';
+$lang['There is no other language available.'] = '沒有其他可用的語言。';
+$lang['There is no other plugin available.'] = '沒有其他可用的插件。';
+$lang['There is no other theme available.'] = '沒有其他可用的主題。';
+$lang['Add another set of photos'] = '增加另一組相片';
+$lang['By rank'] = '按等級';
+$lang['Manual order'] = '手工排序';
+$lang['Piwigo Announcements Newsletter'] = 'Piwigo最新消息公告';
+$lang['Subscribe %s'] = '訂閱 %s';
+$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '訂閱 %s Piwigo中國最新消息公告';
+$lang['Purge search history'] = '清除查尋歷史記錄';
+$lang['Hide'] = '隱藏';
+$lang['Order of menubar items has been updated successfully.'] = '已成功更新的選單欄項目的順序。';
+$lang['This theme was not designed to be directly activated'] = '此主題並未設計為直接啟動';
+$lang['Who can see this photo?'] = '有哪些人能看這些相片?';
+$lang['Pending Comments'] = '待批的評論';
+$lang['Menu Management'] = '選單';
+$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = '在你的 php.ini 文件, 如果 upload_max_filesize (%sB) 大於 post_max_size (%sB), 那麼你需要修改此項';
+$lang['Exif extension not available, admin should disable exif use'] = 'Exif 擴展不能使用，管理員應該禁用 exif 功能。';
+$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 upload_max_filesize 限制: %sB';
+$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 post_max_size 限制: %sB';
+$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = '上傳文件超過了在 HTML 表單指定的 MAX_FILE_SIZE 的限制';
+$lang['The uploaded file was only partially uploaded'] = '上傳文件只上傳了一部分';
+$lang['No file was uploaded'] = '沒有文件被上傳';
+$lang['Missing a temporary folder'] = '缺少臨時文件目錄';
+$lang['Failed to write file to disk'] = '寫入失敗的檔案';
+$lang['File upload stopped by extension'] = '擴展使文件上傳停止';
+$lang['Unknown upload error'] = '未知上傳錯誤';
+$lang['Error on file "%s" : %s'] = '文件上的錯誤 "%s" : %s';
+$lang['%d of %d photos selected'] = '%d 張/總 %d 相片被選取';
+$lang['Action'] = '動作';
+$lang['Add a filter'] = '增加一個過濾器';
+$lang['Album photos associated to the following albums: %s'] = '相片已關聯到以下相冊: %s';
+$lang['Albums automatically sorted'] = '相冊已自動排序';
+$lang['All %d photos are selected'] = '全部 %d 張相片已選中';
+$lang['Apply action'] = '應用動作';
+$lang['automatic order'] = '自動排序';
+$lang['Batch Manager'] = '批量管理';
+$lang['Choose an action'] = '選擇一個動作';
+$lang['Delete orphan tags'] = '刪除沒被關聯的標籤';
+$lang['delete photo'] = '刪除相片';
+$lang['Duplicates'] = '重複';
+$lang['include child albums'] = '包含子相冊';
+$lang['manual order'] = '手工排序';
+$lang['No photo in the current set.'] = '當前集合沒有相片.';
+$lang['No photo selected, %d photos in current set'] = '沒有選擇相片, 當前集合有 %d 張相片';
+$lang['No photo selected, no action possible.'] = '沒有選擇相片，不會有動作執行.';
+$lang['on the %d selected photos'] = '在 %d 張已選相片上';
+$lang['Orphan tags deleted'] = '無關聯標籤已被刪除';
+$lang['Refresh photo set'] = '刷新相片集';
+$lang['Remove all filters'] = '刪除所有過濾器';
+$lang['remove author'] = '刪除作者';
+$lang['remove creation date'] = '刪除建立日期';
+$lang['remove this filter'] = '刪除此過濾器';
+$lang['remove title'] = '刪除標題';
+$lang['Selection'] = '選擇';
+$lang['Set author'] = '設定作者';
+$lang['Set creation date'] = '設定建立日期';
+$lang['Set title'] = '設定標題';
+$lang['The whole page'] = '整張相片';
+$lang['The whole set'] = '整個集合';
+$lang['Type here the author name'] = '在此輸入作者名稱';
+$lang['Type here the title'] = '在此輸入標題';
+$lang['Week starts on'] = '星期起始於';
+$lang['You have %d orphan tags: %s.'] = '您已 %d 無關聯標籤: %s。';
+$lang['Remove from caddie'] = '從購物藍裡移除';
+$lang['Themes which need upgrade'] = '需更新的主題';
+$lang['Languages which need upgrade'] = '需更新的語言';
+$lang['All themes are up to date.'] = '所有主題都是最新的';
+$lang['All plugins are up to date.'] = '所有插件都是最新的';
+$lang['All languages are up to date.'] = '所有語言都是最新的';
+$lang['Visit theme site'] = '瀏覽主題頁面';
+$lang['Visit language site'] = '瀏覽語言頁面';
+$lang['New Version'] = '新版本';
+$lang['new'] = '新增';
+$lang['No results'] = '沒有結果';
+$lang['Searching...'] = '搜尋中...';
+$lang['Type in a search term'] = '輸入一個搜索詞';
+$lang['Obsolete Plugins'] = '過時(廢棄)的插件';
+$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '警告! 這個插件與此Piwigo版本不相容!';
+$lang['Do you want to activate anyway?'] = '你無論如何都要啟動嗎?';
+$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '這個插件目前是Piwigo核心一部份! 請立即移除它!';
+$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = '錯誤：這個插件雖已安裝但並不存在! 請立即移除它!';
+$lang['display'] = '顯示'; 
+$lang['Learn more'] = '瞭解更多';
+$lang['Rate'] = '評分';
+$lang['Average rate'] = '評分';
+$lang['Activate icon "new" next to albums and pictures'] = '在相簿及相片旁邊加上"新"的圖示';
+$lang['Add a criteria'] = '新增標準';
+$lang['Deactivate all'] = '停用所有';
+$lang['Default photos order'] = '預設的相片順序';
+$lang['Restore'] = '還原';
+$lang['Restore default configuration. You will lose your plugin settings!'] = '還原至預設設定。你會失去你的插件的設定！';
+$lang['Show menubar'] = '顯示選單列';
+$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = '無法使用預設相片順序，因你在本機配置另有自訂設定。';
+$lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = '你已在本地設定檔選用 <i>$conf[\'order_by\']</i>，造成參數矛盾，請將它移除或重新命名為 <i>$conf[\'order_by_custom\']</i>！';
+$lang['Thumbnails generation in progress...'] = '小圖製作中...';
+$lang['Photos generation in progress...'] = '圖片製作中...';
+$lang['%s photos have been regenerated'] = '%s 圖片製作完成';
+$lang['%s photos can not be regenerated'] = '無法製作 %s 圖片';
+$lang['Add to caddie'] = '放入購物籃';
+$lang['%s has been successfully updated.'] = '%s 已更新成功';
+$lang['(this tag will be deleted)'] = '(此標籤將被刪除)';
+$lang['... or '] = '... 或 ';
+$lang['Activate comments'] = '啟動評論';
+$lang['Add tags'] = '新增標籤';
+$lang['All extensions are up to date.'] = '所有的擴展是最新的';
+$lang['Allowed file types: %s.'] = '允許的文件類型: %s.';
+$lang['An error has occured during extract. Please check files permissions of your piwigo installation.<br><a href="%s">Click here to show log error</a>.'] = '在提取過程中發生錯誤。請檢查您piwigo安裝時的檔案權限.<br><a href="%s">點擊這裡顯示日誌中的錯誤</a>.';
+$lang['An error has occured during upgrade.'] = '升級過程中發生錯誤.';
+$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = '大約最高解釋度: %dM 像素 (即 %dx%d像素).';
+$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = '預設狀況下，Piwigo 將從原照片的高清晰度版本，建立另一個適用於網頁的尺寸版本。';
+$lang['Confirm merge'] = '確認合併';
+$lang['Create'] = '建立';
+$lang['Crop'] = '剪裁';
+$lang['Default comments order'] = '預設評論順序';
+$lang['Dump Database'] = '轉儲資料庫';
+$lang['ERROR'] = '錯誤';
+$lang['Extensions Update'] = '擴充更新';
+$lang['Follow Orientation'] = '定位';
+$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '以下插件可能無法兼容新Piwigo的版本:';
+$lang['Following themes may not be compatible with the new version of Piwigo:'] = '以下主題可能無法兼容新版本Piwigo:';
+$lang['Graphics Library'] = '圖庫';
+$lang['Height'] = '高度';
+$lang['hide details'] = '隱藏細節';
+$lang['I decide to update anyway'] = '我決定要更新';
+$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = '假如圖片非高畫質，但在網頁上圖片尺寸大於調整後尺寸，Piwigo仍會將圖片標為高畫質，並另存一張縮圖';
+$lang['Ignore All'] = '忽略全部';
+$lang['Ignore this update'] = '忽略此更新';
+$lang['Include history data (Warning: server memory limit may be exceeded)'] = '包含歷史數據（警告：可能會超過伺服器儲存限制)';
+$lang['Last import'] = '最後匯入';
+$lang['Manage Permissions'] = '管理權限';
+$lang['Maximum file size: %sB.'] = '最大尺寸: %sB';
+$lang['Merge selected tags'] = '合併選定的標籤';
+$lang['Merge tags'] = '合併標籤';
+$lang['No destination tag selected'] = '未選擇目標標籤';
+$lang['Photo %s of %s'] = '圖片 %s 中的圖片 %s';
+$lang['Photo name'] = '圖片名稱';
+$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo 無法從伺服器中取得升級檔 ';
+$lang['Piwigo Update'] = 'Piwigo 更新';
+$lang['Predefined filter'] = '預先定義的過濾器';
+$lang['Reset ignored updates'] = '重設忽略更新';
+$lang['Save Template Directory'] = '儲存模板目錄';
+$lang['Select an album'] = '選擇一個相冊';
+$lang['Select at least two tags for merging'] = '至少選擇兩個需合併的標籤';
+$lang['Select the destination tag'] = '選擇目的標籤';
+$lang['Send connection settings by email'] = '通過電子郵件發送連接的設定';
+$lang['show details'] = '顯示細節';
+$lang['Some themes and plugins may be not available yet.'] = '一些主題和插件可能尚無法使用';
+$lang['Some upgrades are available for extensions.'] = '一些可升級用於擴展。';
+$lang['Start Upload'] = '開始上傳';
+$lang['Tags <em>%s</em> merged into tag <em>%s</em>'] = '標籤 <em>%s</em> 已合併成標籤 <em>%s</em>'; 
+$lang['The original image quality must be a number between %d and %d'] = '原始圖品質必須在 %d 和 %d 之間';
+$lang['The original maximum height must be a number between %d and %d'] = '原始高度上限必須在 %d 和 %d 之間';
+$lang['The original maximum width must be a number between %d and %d'] = '原始寬度上限必須在 %d 和 %d 之間 ';
+$lang['This is a major update, with <a href="%s">new exciting features</a>.'] = '這是一個重大更新，包括<a href="%s">這個令人興奮的新功能</a>。';
+$lang['This is a minor update, with only bug corrections.'] = '這是一個次要更新，只有bug修正';
+$lang['Two updates are available'] = '兩個更新可使用';
+$lang['Unable to dump database.'] = '無法轉儲資料庫。';
+$lang['Update All'] = '全部更新';
+$lang['Update Complete'] = '更新完成';
+$lang['Update in progress... Please wait.'] = '更新正在進行，請稍候。';
+$lang['Update to Piwigo %s'] = '更新到Piwigo %s';
+$lang['Updates'] = '更新';
+$lang['Width'] = '寬度';
+$lang['With no album'] = '沒有相冊';
+$lang['With no tag'] = '沒有標籤';
+$lang['With no virtual album'] = '沒有虛擬相冊';
+$lang['You are using the Browser uploader. Try the <a href="%s">Flash uploader</a> instead.'] = '您正在使用瀏覽器上傳，您也可改用<a href="%s">Flash上傳器上傳。';
+$lang['You are using the Flash uploader. Problems? Try the <a href="%s">Browser uploader</a> instead.'] = '您正在使用Flash上傳器上傳；若有問題，您也可改用<a href="%s">瀏覽器上傳。';
+$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = '您可直接升級到Piwigo的％s，而不需升級到Piwigo的％（建議版本）';
+$lang['Zoom'] = '放大';
+$lang['Resize after upload'] = '上傳後調整大小';
+$lang['Original Size'] = '原始大小';
+$lang['A locked gallery is only visible to administrators'] = '鎖定的畫廊，只有管理員可以看見';
+$lang['Unlock gallery'] = '將畫廊解鎖';
+$lang['Gallery unlocked'] = '畫廊已解鎖';
+$lang['Notify administrators when a comment is'] = '通知管理員當評論是';
+$lang['modified'] = '已修改';
+$lang['pending validation'] = '待審定';
+$lang['Save visits in history for'] = '保存訪問的歷史';
+$lang['simple visitors'] = '普通訪客';
+$lang['registered users'] = '註冊用戶';
+$lang['administrators'] = '管理員';
+$lang['This album contains %d photos, added on %s.'] = '這本相冊包含 %d 張照片，在 %s 上增加。';
+$lang['This album contains %d photos, added between %s and %s.'] = '這本相冊包含 %d 張照片，在 %s 和 %s 之間增加。';
+$lang['This album contains no photo.'] = '這本相冊沒有照片';
+$lang['Not cropped correctly?'] = '不正確的裁剪?';
+$lang['Center of interest'] = '我的收藏';
+$lang['Move to album'] = '移動到相冊';
+$lang['You can activate only one mobile theme.'] = '您最多只能啟用一個手機主題。';
+$lang['Automatic sort order'] = '自動排序';
+$lang['apply automatic sort order'] = '使用自動排序';
+$lang['Save manual order'] = '儲存手動排序';
+$lang['cancel manual order'] = '取消手動排序';
+$lang['Cancel'] = '取消';
+$lang['List'] = '清單';
+$lang['Web Form'] = '網頁表格';
+$lang['Applications'] = '申請';
+$lang['Available versions for'] = '可用的版本是';
+$lang['Available on'] = '可用的';
+$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch) 版的 Piwigo ';
+$lang['<em>Piwigo for iOS</em> application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = '<em>iOS 版的Piwigo</em>允許您從iPhone, iPad 或 iPod Touch 連接到您的Piwigo畫廊，建立多個相冊並一次上傳多張相片。';
+$lang['Piwigo for Android'] = 'Android 版的Piwigo';
+$lang['<em>Piwigo for Android</em> application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = '<em>Android 版的Piwigo</em>允許從 Android 手機或平版連接到您的Piwigo畫廊，建立多個相冊並一次上傳多張相片。';
+$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo 的 Lightroom 照片發布插件';
+$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe 的 Photoshop Lightroom 是一套攝影軟件，可管理大量數位影像和進行後製工作。';
+$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo的發布插件允許你 從Lightroom匯出照片，使你的Lightroom照片與您的Piwigo相冊同步。';
+$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo 的 Shotwell 照片發布插件 ';
+$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell是一套Linux作業系統下的數位相片管理工具，它是自由軟體，也是 Ubuntu 和 Fedora 中 預設的相片管理軟體。';
+$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = '在Linux下，只需安裝Shotwell套件和啟用 Piwigo發佈選項。';
+$lang['Piwigo publish plugin for digiKam'] = 'Piwigo 的 ddgiKam 照片發布插件';
+$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam是一套先進的數位相片管理軟體，它是自由軟體，適用於LINUX，WINDOWS和MacOSX。';
+$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam是專為攝影師瀏覽、管理、編輯、加工、整理、標記及分享照片等用途而設計。';
+$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '從digiKam要匯出相片到Piwigo，只需安裝digiKam和Kipi-plugins插件。';
+$lang['Piwigo export plugin for iPhoto'] = 'iPhoto的Piwigo匯出插件';
+$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto是MacOSX預設的相片管理軟體。此Piwigo匯出插件，可讓你直接從iPhoto匯出相片至Piwigo圖庫，並建立新相冊';
+$lang['Piwigo export plugin for Aperture'] = 'Aperture的Piwigo匯出插件';
+$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture是Mac的一項強大工具，可微調讓圖像更精緻，並管理超大照片庫.';
+$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture是為專業攝影師設計的軟體，但使用起來又與iPhoto一樣簡單.';
+$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo的匯出插件，允許你建立相冊和匯出照片';
+$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid（Android行動相冊）是一個開放原始碼軟體（GPL V3），是Android平台上的Piwigo';
+$lang['Features include gallery browsing, album creation and photo upload.'] = '特色包括：畫廊瀏覽、建立相冊和照片上傳';
+$lang['Generate multiple size images'] = '產生多種大小的圖像';
+$lang['Delete multiple size images'] = '刪除多種大小的圖像';
+$lang['any visitor can see this album'] = '任何訪客都可以看到這本相冊';
+$lang['visitors need to login and have the appropriate permissions to see this album'] = '訪客必須登錄並擁有權限才能觀看這本相冊';
+$lang['Groups and users'] = '群組別和用戶';
+$lang['Permission granted for groups'] = '群組別擁有的權限';
+$lang['Select groups...'] = '選擇群組別...';
+$lang['There is no group in this gallery.'] = '此畫廊內沒有群組。';
+$lang['Permission granted for users'] = '用戶擁有的權限';
+$lang['Select users...'] = '選擇用戶...';
+$lang['%u users have automatic permission because they belong to a granted group.'] = '%u 用戶因屬自動許可授權群組別，所以自動擁有權限.';
+$lang['include photos with lower privacy level'] = '包含隱私級別較低的相片';
+$lang['custom'] = '自定義';
+$lang['No group is permitted to see this private album'] = '沒有群組別有權限觀看此私人相冊';
+$lang['Permission management'] = '權限管理';
+$lang['Photo sizes with crop'] = '相片剪裁';
+$lang['The center of interest is the most meaningful zone in the photo.'] = '焦點是相片中最有意思的部份';
+$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = '如選擇相片剪裁（如「正方形」），Piwigo會盡可能保留相片的焦點';
+$lang['By default, the center of interest is placed in the middle of the photo.'] = '預設情況下，焦點是擺在相片的中間';
+$lang['Select a zone with your mouse to define a new center of interest.'] = '用鼠標選擇新的焦點';
+$lang['X Position'] = 'X 位置';
+$lang['Y Position'] = 'Y 位置';
+$lang['X Repeat'] = 'X 重複';
+$lang['Opacity'] = '不透明度';
+$lang['top left corner'] = '左上角';
+$lang['top right corner'] = '右上角';
+$lang['middle'] = '中間';
+$lang['bottom left corner'] = '左下角';
+$lang['bottom right corner'] = '右下角';
+$lang['Select a file'] = '選擇檔案';
+$lang['add a new watermark'] = '增加一個新的浮水印';
+$lang['Apply watermark if width is bigger than'] = '使用浮水印，假如浮水印寬度大於';
+$lang['Apply watermark if height is bigger than'] = '使用浮水印，假如浮水印高度高於';
+$lang['Multiple Size'] = '多種大小';
+$lang['Watermark'] = '浮水印';
+$lang['Original file : %s'] = '原始檔案 : %s';
+$lang['Posted %s on %s'] = '在 %s 貼上 %s';
+$lang['Added by %s'] = '由 %s 加入';
+$lang['Visited %d times'] = '訪問了 %d 次';
+$lang['Numeric identifier : %d'] = '數字識別碼 : %d';
+$lang['%s ago'] = '%s 以前';
+$lang['%s in the future'] = '%s 在未來';
+$lang['Rated %d times, score : %.2f'] = '被評價 %d 次,分數為 %.2f';
+$lang['%d year'] = '%d 年';
+$lang['%d years'] = '%d 年';
+$lang['%d month'] = '%d 月';
+$lang['%d months'] = '%d 月';
+$lang['%d day'] = '%d 天';
+$lang['%d days'] = '%d 天';
+$lang['%d hour'] = '%d 小時';
+$lang['%d hours'] = '%d 小時';
+$lang['%d minute'] = '%d 分鐘';
+$lang['%d minutes'] = '%d 分鐘';
+$lang['%d second'] = '%d 秒';
+$lang['%d seconds'] = '%d 秒';
+$lang['Sharpen'] = '銳化';
+$lang['%d week'] = '%d 週';
+$lang['%d weeks'] = '%d 週';
+$lang['Edit photo'] = '編輯相片';
+$lang['create a new site'] = '建立新的網站';
+$lang['Duplicate selected tags'] = '重複選取標籤';
+$lang['Name of the duplicate'] = '名稱重複';
+$lang['No order field selected'] = '未選取排序欄位';
+$lang['Source tag'] = '來源標籤';
+$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" 標籤與 "%s" 標籤重複';
+$lang['between %d and %d pixels'] = '在 %d 和 %d 像素之間';
+$lang['between %.2f and %.2f'] = '在 %.2f 和 %.2f 之間';
+$lang['Duplicate'] = '重複';
+$lang['Landscape'] = '橫向';
+$lang['Manage photos'] = '管理照片';
+$lang['Manage the members'] = '會員管理';
+$lang['Merge selected groups'] = '合併選擇群組';
+$lang['Minimum width'] = '最小寬度'; 
+$lang['Minimum height'] = '最小高度'; 
+$lang['No group selected, no action possible.'] = '尚未選取群組別，無法動作';
+$lang['No members to manage'] = '沒有會員可以管理'; 
+$lang['Number of albums per page'] = '每頁相本數量'; 
+$lang['Panorama'] = '全景'; 
+$lang['Please select at least two groups'] = '請最少選擇二個群組別';
+$lang['Portrait'] = '人像'; 
+$lang['Ratio'] = '比例'; 
+$lang['Rename'] = '重新命名'; 
+$lang['This group will be set to default'] = '該群組別將被設定為預設';
+$lang['This group will be unset to default'] = '該群組別不再被使用為預設';
+$lang['Type here the name of the new group'] = '在這輸入新的群組別名稱';
+$lang['View in gallery'] = '以畫廊模式瀏覽'; 
+$lang['Purge user cache'] = '清除用戶快取';
+$lang['The picture dimensions will be reduced to %dx%d pixels.'] = '圖片的尺寸將減少到 %dx%d 像素。';
+$lang['Resize after upload disabled due to the use of GD as graphic library'] = '由於使用了GD圖形程式，上傳後調整尺寸的功能已關閉。';
+$lang['Select at least one tag'] = '選擇至少一個標籤';
+$lang['Basic settings'] = '基本設置';
+$lang['General'] = '能用';
+$lang['Mail theme'] = '郵件主題';
+$lang['%d of %d users selected'] = '%d 到 %d 位用戶選擇';
+$lang['(filtered from %s total users)'] = '(總共%s 用戶被過濾）';
+$lang['All %d users are selected'] = '所有%d的用戶都被選中';
+$lang['Change password'] = '更改密碼';
+$lang['Change username'] = '更改用戶名';
+$lang['Last visit on %s, %s.'] = '最後的訪問在%s, %s。';
+$lang['Loading...'] = '加載中...';
+$lang['No matching user found'] = '沒有發現匹配的用戶';
+$lang['No user selected of %d users'] = '%d個用戶沒有用戶選擇';
+$lang['No user selected, no action possible.'] = '沒有用戶選擇，沒有行動的可能。';
+$lang['Password updated'] = '更新密碼';
+$lang['Registered on %s, %s.'] = '註冊在%s, %s。';
+$lang['Show %s users'] = '顯示%s用戶';
+$lang['Showing %s to %s of %s users'] = '顯示%s的用戶從%s到%s';
+$lang['Update user'] = '更新用戶';
+$lang['User %s added'] = '用戶 %s添加';
+$lang['User %s updated'] = '用戶 %s更新';
+$lang['Users modified'] = '用戶修改';
+$lang['on the %d selected users'] = '%d的選定用戶';
+?>
Index: /tags/2.6.0RC1/language/zh_TW/common.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/common.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/common.lang.php	(revision 25596)
@@ -0,0 +1,422 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+/*
+Language Name: 中文 (繁體) [TW]
+Version: 2.5.2
+Language URI: http://piwigo.org/ext/extension_view.php?eid=524
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+// Langage informations
+$lang_info['language_name'] = '中文';
+$lang_info['country'] = '中國';
+$lang_info['direction'] = 'ltr';
+$lang_info['code'] = 'cn';
+$lang_info['zero_plural'] = false;
+
+$lang['%d Kb'] = '%d KB';
+$lang['%d album updated'] = '%d 相冊已更新';
+$lang['%d albums updated'] = '%d 相冊已更新';
+$lang['%d comment to validate'] = '%d 評論等待驗證';
+$lang['%d comments to validate'] = '%d 評論等待驗證';
+$lang['%d new comment'] = '%d 新評論';
+$lang['%d new comments'] = '%d 新評論';
+$lang['%d comment'] = '%d 評論';
+$lang['%d comments'] = '%d 評論';
+$lang['%d hit'] = '查看 %d 次';
+$lang['%d hits'] = '查看 %d 次';
+$lang['%d new photo'] = '%d 新圖片';
+$lang['%d new photos'] = '%d 新圖片';
+$lang['%d new user'] = '%d 新用戶';
+$lang['%d new users'] = '%d 新用戶';
+$lang['About'] = '關於';
+$lang['All tags'] = '所有標籤';
+$lang['Any tag'] = '任何標籤';
+$lang['At least one listed rule must be satisfied.'] = '至少符合一項標準.';
+$lang['Author'] = '擁有者';
+$lang['Albums'] = '相冊';
+$lang['Album'] = '相冊';
+$lang['Close this window'] = '關閉窗口';
+$lang['Complete RSS feed (photos, comments)'] = '完整RSS回饋(圖片, 評論等)';
+$lang['Confirm Password'] = '重複輸入密碼';
+$lang['Connection settings'] = '連線設定';
+$lang['Login'] = '登入';
+$lang['Contact webmaster'] = '聯繫網管';
+$lang['Create a new account'] = '建立新的帳號';
+$lang['Created on'] = '建立於';
+$lang['Creation date'] = '建立日期';
+$lang['Current password is wrong'] = '密碼錯誤';
+$lang['Dimensions'] = '尺寸';
+$lang['Display'] = '顯示';
+$lang['Each listed rule must be satisfied.'] = '必須符合每項標準';
+$lang['Email address is missing. Please specify an email address.'] = '缺少郵箱地址';
+$lang['Email address'] = '郵箱地址';
+$lang['Enter your personnal informations'] = '輸入您的個人信息';
+$lang['Error sending email'] = '發送郵件出錯';
+$lang['File name'] = '檔案名稱';
+$lang['File'] = '檔案';
+$lang['Filesize'] = '檔案大小';
+$lang['Filter and display'] = '過濾並顯示';
+$lang['Filter'] = '過濾';
+$lang['Forgot your password?'] = '忘記密碼?';
+$lang['Go through the gallery as a visitor'] = '以訪客身份瀏覽圖庫';
+$lang['Help'] = '幫助';
+$lang['Identification'] = '登入資料';
+$lang['Photos only RSS feed'] = '圖片RSS訂閱';
+$lang['Keyword'] = '關鍵字';
+$lang['Links'] = '鏈接';
+$lang['N/A'] = '不存在';
+$lang['New on %s'] = '新建立於 %s';
+$lang['Notification'] = '通知';
+$lang['Number of items'] = '總數';
+$lang['Original dimensions'] = '原始的尺寸';
+$lang['Password forgotten'] = '忘記密碼';
+$lang['Password'] = '密碼';
+$lang['Post date'] = '上傳日期';
+$lang['Posted on'] = '上傳於';
+$lang['Profile'] = '個人資料';
+$lang['Quick connect'] = '快速連接';
+$lang['RSS feed'] = 'RSS訂閱';
+$lang['Register'] = '註冊';
+$lang['Registration'] = '註冊';
+$lang['Related tags'] = '關聯標籤';
+$lang['Reset'] = '重設';
+$lang['Retrieve password'] = '重新取得密碼';
+$lang['Search rules'] = '搜尋條件';
+$lang['Search tags'] = '搜尋熱門標籤';
+$lang['Search'] = '搜尋';
+$lang['display available tags'] = '查看現有標籤';
+$lang['Since'] = '自從';
+$lang['Sort by'] = '排序';
+$lang['Sort order'] = '排序規則';
+$lang['Tag'] = '標籤';
+$lang['Tags'] = '標籤';
+$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'RSS feed提供對本網站的新事件：新的照片，更新的相冊，新的意見的通知。請使用RSS閱讀器。';
+$lang['Unknown feed identifier'] = '未知的訂閱識別碼';
+$lang['User comments'] = '用戶評論';
+$lang['Username'] = '用戶名';
+$lang['Visits'] = '訪問';
+$lang['Webmaster'] = '網管';
+$lang['Week %d'] = '星期 %d';
+$lang['About Piwigo'] = '關於Piwigo';
+$lang['You are not authorized to access the requested page'] = '你無權訪問此頁';
+$lang['add this photo to your favorites'] = '把圖片放到收藏夾';
+$lang['Administration'] = '管理員';
+$lang['all'] = '所有';
+$lang['ascending'] = '升序';
+$lang['author(s) : %s'] = '擁有者 : %s';
+$lang['Expand all albums'] = '展開所有相冊';
+$lang['posted after %s (%s)'] = '插入到 %s (%s) 之後';
+$lang['posted before %s (%s)'] = '插入到 %s (%s) 之前';
+$lang['posted between %s (%s) and %s (%s)'] = '插入到 %s (%s) 和 le %s (%s) 之間';
+$lang['posted on %s'] = '插入 %s';
+$lang['Best rated'] = '得票最高';
+$lang['display best rated photos'] = '顯示得票最高的圖片';
+$lang['Calendar'] = '日曆';
+$lang['All'] = '所有';
+$lang['display each day with photos, month per month'] = '顯示每一天的照片，每月的月份';
+$lang['View'] = '檢視';
+$lang['chronology_monthly_calendar'] = '月曆';
+$lang['chronology_monthly_list'] = '每月清單';
+$lang['chronology_weekly_list'] = '每周清單';
+$lang['Click here if your browser does not automatically forward you'] = '如果你的瀏覽器不支持自動轉頁，請按這裡。';
+$lang['comment date'] = '評論日期';
+$lang['Comment'] = '評論';
+$lang['Your comment has been registered'] = '評論發表成功';
+$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = '反灌水系統 : 請稍候再加評論';
+$lang['Your comment has NOT been registered because it did not pass the validation rules'] = '由於不符合格式規定，你的評論不能被保存';
+$lang['An administrator must authorize your comment before it is visible.'] = '評論需經管理員確認才能顯示在頁面裡。';
+$lang['This login is already used by another user'] = '此登入資訊已被另一個用戶使用';
+$lang['Comments'] = '評論';
+$lang['Add a comment'] = '新增評論';
+$lang['created after %s (%s)'] = '建立於 %s (%s) 之後';
+$lang['created before %s (%s)'] = '建立於 %s (%s) 之前';
+$lang['created between %s (%s) and %s (%s)'] = '建立於 %s (%s) 和 %s (%s) 之間';
+$lang['created on %s'] = '建立於 %s';
+$lang['Customize'] = '偏好設定';
+$lang['Your Gallery Customization'] = '偏好設定你的Gallery';
+$lang['day'][0] = '星期日';
+$lang['day'][1] = '星期一';
+$lang['day'][2] = '星期二';
+$lang['day'][3] = '星期三';
+$lang['day'][4] = '星期四';
+$lang['day'][5] = '星期五';
+$lang['day'][6] = '星期六';
+$lang['Default'] = '預設';
+$lang['delete this photo from your favorites'] = '從收藏夾中刪除此圖片';
+$lang['Delete'] = '刪除';
+$lang['descending'] = '降序';
+$lang['Download'] = '下載';
+$lang['Download this file'] = '下載此文件';
+$lang['edit'] = '編輯';
+$lang['wrong date'] = '日期出錯';
+$lang['excluded'] = '不包括';
+$lang['Your favorites'] = '我的最愛';
+$lang['display your favorites photos'] = '顯示收藏圖片';
+$lang['Favorites'] = '收藏';
+$lang['First'] = '首頁';
+$lang['The gallery is locked for maintenance. Please, come back later.'] = '系統維護，請稍候再試。';
+$lang['Page generated in'] = '頁面建立時間';
+$lang['guest'] = '訪客';
+$lang['Hello'] = '您好';
+$lang['available for administrators only'] = '只限於管理者';
+$lang['display this album'] = '顯示此相冊';
+$lang['display last user comments'] = '查看最新用戶評論';
+$lang['customize the appareance of the gallery'] = '個性化設定 Gallery';
+$lang['search'] = '搜尋';
+$lang['Home'] = '主頁';
+$lang['in this album'] = '在此相冊裡';
+$lang['in %d sub-album'] = '在 %d 子相冊裡';
+$lang['in %d sub-albums'] = '在 %d 子相冊裡';
+$lang['included'] = '包括';
+$lang['Invalid password!'] = '密碼不正確!';
+$lang['Language'] = '語言';
+$lang['last %d days'] = '最近%d天';
+$lang['Last'] = '最後';
+$lang['Logout'] = '登出';
+$lang['obligatory'] = '必需';
+$lang['display a calendar by creation date'] = '通過建立時間顯示日曆';
+$lang['display all photos in all sub-albums'] = '顯示所有相冊和子相冊的相片';
+$lang['return to normal view mode'] = '返回到普通模式顯示';
+$lang['display a calendar by posted date'] = '顯示日曆所發布日期';
+$lang['month'][10] = '十月';
+$lang['month'][11] = '十一月';
+$lang['month'][12] = '十二月';
+$lang['month'][1] = '一月';
+$lang['month'][2] = '二月';
+$lang['month'][3] = '三月';
+$lang['month'][4] = '四月';
+$lang['month'][5] = '五月';
+$lang['month'][6] = '六月';
+$lang['month'][7] = '七月';
+$lang['month'][8] = '八月';
+$lang['month'][9] = '九月';
+$lang['Most visited'] = '最受喜歡';
+$lang['display most visited photos'] = '顯示查看次數最多的圖片';
+$lang['Unknown identifier'] = '未知的識別碼';
+$lang['New password'] = '新的密碼';
+$lang['Rate this photo'] = '對圖片投票';
+$lang['Next'] = '下一頁';
+$lang['no rate'] = '沒有被投票';
+$lang['Photos posted within the last %d day.'] = '只顯示最近 %d 天的圖片.';
+$lang['Photos posted within the last %d days.'] = '只顯示最近 %d 天的圖片.';
+$lang['password updated'] = '密碼已更新';
+$lang['Recent period must be a positive integer value'] = '再次發表間隔時間必須是正整數';
+$lang['photo'] = '圖片';
+$lang['Click on the photo to see it in high definition'] = '點擊查看大圖片';
+$lang['Show file metadata'] = '顯示檔案的元數據';
+$lang['Powered by'] = '本站由';
+$lang['Preferences'] = '偏好設定';
+$lang['Previous'] = '前頁';
+$lang['Random photos'] = '隨機圖片';
+$lang['display a set of random photos'] = '隨機顯示圖片';
+$lang['Recent albums'] = '最新的相冊';
+$lang['display recently updated albums'] = '顯示最近更新的相冊';
+$lang['Recent period'] = '最近階段';
+$lang['Recent photos'] = '最新圖片';
+$lang['display most recent photos'] = '顯示最新圖片';
+$lang['Redirection...'] = '轉跳至...';
+$lang['Please, enter a login'] = '請輸入用戶名';
+$lang['login mustn\'t end with a space character'] = '用戶名不能以空格結尾';
+$lang['login mustn\'t start with a space character'] = '用戶名不能以空格開頭';
+$lang['this login is already used'] = '用戶名已存在';
+$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = '郵件地址格式必須符合標準郵件地址格式 xxx@yyy.eee (例如 : jack@altern.org)';
+$lang['Auto login'] = '自動登入';
+$lang['remove this tag from the list'] = '刪除此標籤';
+$lang['representative'] = '相冊縮略圖';
+$lang['Search for Author'] = '作者搜尋';
+$lang['Search in albums'] = '在相冊裡搜尋';
+$lang['Search by date'] = '按日期搜尋';
+$lang['Date'] = '開始日期';
+$lang['End-Date'] = '最終日期';
+$lang['Kind of date'] = '日期類型';
+$lang['Search for words'] = '關鍵字';
+$lang['Search for all terms'] = '搜尋所有條款';
+$lang['Search for any term'] = '搜尋任何條款';
+$lang['Empty query. No criteria has been entered.'] = '查詢語句不能為空。';
+$lang['Search results'] = '搜尋結果';
+$lang['Search in sub-albums'] = '在子相冊裡搜尋';
+$lang['searched words : %s'] = '搜尋詞 : %s';
+$lang['Contact'] = '聯繫';
+$lang['set as album representative'] = '設定為相冊縮略圖';
+$lang['Show number of comments'] = '顯示評論總數';
+$lang['Show number of hits'] = '顯示點擊次數';
+$lang['slideshow'] = '幻燈片放映';
+$lang['stop the slideshow'] = '停止幻燈片放映';
+$lang['Specials'] = '相簿特別選單';
+$lang['SQL queries in'] = 'sql 查詢語句';
+$lang['display only recently posted photos'] = '只顯示最近內容';
+$lang['return to the display of all photos'] = '返回到所有圖片頁面';
+$lang['the beginning'] = '開始';
+$lang['Thumbnails'] = '縮略圖';
+$lang['Menu'] = '選單';
+$lang['A comment on your site'] = '在您的網站上的評論';
+$lang['today'] = '今天';
+$lang['Update your rating'] = '更改投票';
+$lang['the username must be given'] = '缺少用戶名';
+$lang['useful when password forgotten'] = '在情況下，忘記了密碼有用的';
+$lang['Quick search'] = '快速搜尋';
+$lang['Connected user: %s'] = '在線用戶: %s';
+$lang['IP: %s'] = 'IP地址: %s';
+$lang['Browser: %s'] = '瀏覽器: %s';
+$lang['Author: %s'] = '上傳者: %s';
+$lang['Comment: %s'] = '評論: %s';
+$lang['Comment by %s'] = '評論者 %s';
+$lang['User: %s'] = '用戶: %s';
+$lang['Email: %s'] = '電子郵件: %s';
+$lang['Admin: %s'] = '管理員: %s';
+$lang['Registration of %s'] = '註冊 %s';
+$lang['Album: %s'] = '相冊: %s';
+$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = '如果"遊客"反常擁有普通用戶才擁有狀態，預設狀態將被使用。請通知管理員。';
+$lang['this email address is already in use'] = '郵箱地址已存在';
+$lang['Album results for'] = '相冊的結果';
+$lang['Tag results for'] = '符合查詢標籤結果';
+$lang['from %s to %s'] = '從 %s 到 %s';
+$lang['Play of slideshow'] = '播放幻燈片';
+$lang['Pause of slideshow'] = '暫停幻燈片';
+$lang['Repeat the slideshow'] = '重複播放';
+$lang['Not repeat the slideshow'] = '停止重複播放';
+$lang['Reduce diaporama speed'] = '減慢播放速度';
+$lang['Accelerate diaporama speed'] = '加快播放速度';
+$lang['Submit'] = '提交';
+$lang['Yes'] = '是';
+$lang['No'] = '否';
+$lang['%d photo']='%d 圖片';
+$lang['%d photos']='%d 圖片';
+$lang['%d photo is also linked to current tags'] = '%d 圖片同時與目前標籤相關';
+$lang['%d photos are also linked to current tags'] = '%d 圖片同時與目前標籤相關';
+$lang['display photos linked to this tag'] = '只查看和這標籤相關的圖片';
+$lang['photos posted during the last %d days'] = '圖片在最近%d天裡更新';
+$lang['Piwigo Help'] = 'Piwigo幫助';
+$lang['Rank'] = '分類';
+$lang['group by letters'] = '按字母順序分';
+$lang['letters'] = '字母';
+$lang['show tag cloud'] = '顯示標籤雲';
+$lang['cloud'] = '雲';
+$lang['Are you sure?'] = '確定?';
+$lang['Reset to default values'] = '重設為預設值';
+$lang['delete all photos from your favorites'] = '刪除您的收藏裡所有相片';
+$lang['Sent by'] = '發送者';
+$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = '您的瀏覽器已關閉或者不支持Cookies. 您必須開啟 cookies 才能登錄.';
+$lang['Edit a comment'] = '修改一個評論';
+$lang['(!) This comment requires validation'] = '(!) 此評論需要審核';
+$lang['Welcome'] = '歡迎';
+$lang['Welcome to your Piwigo photo gallery!'] = '歡迎來到您的 Piwigo 畫廊!';
+$lang['... or browse your empty gallery'] = '... 或者瀏覽您的空畫廊';
+$lang['... or please deactivate this message, I will find my way by myself'] = '... 或者取消此信息，我會自己找到我的方法';
+$lang['Hello %s, your Piwigo photo gallery is empty!'] = '您好 %s, 您的 Piwigo 畫廊是空的!';
+$lang['I want to add photos'] = '我想增加相片';
+$lang['Manage this user comment: %s'] = '管理此用戶的評論: %s';
+$lang['This author modified following comment:'] = '此作者修改了以下的評論:';
+$lang['This author removed the comment with id %d'] = '此作者刪除了 id 為 %d 的評論';
+$lang['Sent by'] = '發送人';
+$lang['html tags are not allowed in login'] = 'html標籤中不允許登入';
+$lang['%d rates'] = '%d 評價';
+$lang['Rating score'] = '評價得分';
+$lang['The number of photos per page must be a not null scalar'] = '每頁的照片的數量不能為零';
+$lang['Number of photos per page'] = '每頁的照片數量';
+$lang['Invalid username or email'] = '無效的用戶名稱或電子郵件';
+$lang['Password reset is not allowed for this user'] = '不允許此用戶重設密碼';
+$lang['User "%s" has no email address, password reset is not possible'] = '查無用戶 "％" 之電子郵件地址，無法重設密碼';
+$lang['Someone requested that the password be reset for the following user account:'] = '有人要求重置以下用戶的密碼:';
+$lang['Username "%s" on gallery %s'] = '％s 畫廊中的“％S”用戶 ';
+$lang['To reset your password, visit the following address:'] = '要重置密碼，請至以下網址:';
+$lang['If this was a mistake, just ignore this email and nothing will happen.'] = '如果這是個錯誤或您並未要求重置密碼，請忽略此電子郵件，您的帳戶將不會作任何更改。';
+$lang['Password Reset'] = '重設密碼';
+$lang['Check your email for the confirmation link'] = '檢查您的電子郵件並前往確認連結 ';
+$lang['Invalid key'] = '鍵入字元無效';
+$lang['The passwords do not match'] = '密碼不符';
+$lang['Your password has been reset'] = '您的密碼已經重設';
+$lang['Return to home page'] = '返回首頁';
+$lang['Please enter your username or email address.'] = '請輸入您的用戶名或電子郵件';
+$lang['You will receive a link to create a new password via email.'] ='您將收到電子郵件，裡面有用來建立新密碼的連結';
+$lang['Username or email'] = '用戶名稱或電子郵件';
+$lang['Change my password'] = '更改我的密碼';
+$lang['Enter your new password below.'] = '在下方輸入您的新密碼';
+$lang['EXIF Metadata'] = 'EXIF 元數據';
+$lang['IPTC Metadata'] = 'IPTC 元數據';
+$lang['Edit'] = '編輯';
+$lang['Hello %s,'] = '您好 %s,';
+$lang['Send my connection settings by email'] = '利用電子郵件發送我的連結設定';
+$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = '註冊成功！您將收到電子郵件，內含您的連接設定。歡迎加入！';
+$lang['Username modification'] = '用戶名稱修改';
+$lang['Your username has been successfully changed to : %s'] = '您的用戶名稱已成功修改為 : %s';
+$lang['square'] = '正方形';
+$lang['thumb'] = '縮略圖';
+$lang['small'] = 'S - 小';
+$lang['medium'] = 'M - 中';
+$lang['large'] = 'L - 大';
+$lang['xlarge'] = 'XL - 特大號';
+$lang['xxlarge'] = 'XXL - 巨大號';
+$lang['Original'] = '原始';
+$lang['Thank you for registering at %s!'] = '感謝您在 %s! 註冊';
+$lang['Here are your connection settings'] = '以下是您的連結設定';
+$lang['Password: %s'] = '密碼: %s';
+$lang['Username: %s'] = '用戶名稱: %s';
+$lang['If you think you\'ve received this email in error, please contact us at %s'] = ' 如您認為此電子郵件之發送為錯誤，請聯繫我們: %s';
+$lang['Show oldest comments first'] = '顯示最舊的評論在最前面';
+$lang['Show latest comments first'] = '顯示最新的評論在最前面';
+$lang['Photo sizes'] = '圖片大小';
+$lang['View in'] = '檢視中';
+$lang['Mobile'] = '移動';
+$lang['Desktop'] = '桌面';
+$lang['2small'] = 'XXS - 極小';
+$lang['xsmall'] = 'XS - 超小號';
+$lang['File name, A &rarr; Z'] = '檔案名稱, A &rarr; Z';
+$lang['File name, Z &rarr; A'] = '檔案名稱, Z &rarr; A';
+$lang['Photo title, A &rarr; Z'] = '相片標題, A &rarr; Z';
+$lang['Photo title, Z &rarr; A'] = '相片標題, Z &rarr; A';
+$lang['Date created, new &rarr; old'] = '建立日期, 新 &rarr; 舊';
+$lang['Date created, old &rarr; new'] = '建立日期, 舊 &rarr; 新';
+$lang['Date posted, new &rarr; old'] = '發佈日期, 新 &rarr; 舊';
+$lang['Date posted, old &rarr; new'] = '發佈日期, 舊 &rarr; 新';
+$lang['Rating score, high &rarr; low'] = '評價得分, 高 &rarr; 低';
+$lang['Rating score, low &rarr; high'] = '評價得分, 低 &rarr; 高';
+$lang['Visits, high &rarr; low'] = '點閱率, 高 &rarr; 低';
+$lang['Visits, low &rarr; high'] = '點閱率, 低 &rarr; 高';
+$lang['Numeric identifier, 1 &rarr; 9'] = '數字標識符, 1 &rarr; 9';
+$lang['Numeric identifier, 9 &rarr; 1'] = '數字標識符, 9 &rarr; 1';
+$lang['Manual sort order'] = '手動排序';
+$lang['%d rate'] = '%d 比率';
+$lang['Page not found'] = '找不到網頁';
+$lang['Bad request'] = '錯誤的請求';
+$lang['Forbidden'] = '禁止進入';
+$lang['Piwigo encountered a non recoverable error'] = 'Piwigo遇到一個不可恢復的錯誤';
+$lang['Requested album does not exist'] = '要求的相冊不存在';
+$lang['Permalink for album not found'] = '找不到固定網址';
+$lang['Requested tag does not exist'] = '要求的標籤不存在';
+$lang['Email address is mandatory'] = '電子郵件為必填';
+$lang['Username is mandatory'] = '用戶名為必填';
+$lang['Website'] = '網頁';
+$lang['Your website URL is invalid'] = '你的網址無效';
+$lang['mandatory'] = '必填';
+$lang['Email'] = '電子郵件';
+$lang['First Page'] = '第一頁';
+$lang['Go back to the album'] = '返回相冊';
+$lang['Last Page'] = '最後一頁';
+$lang['Password is missing. Please enter the password.'] = '密碼沒有輸入，請輸入密碼。';
+$lang['Password confirmation is missing. Please confirm the chosen password.'] = '密碼確認未完成，請確認所選定的密碼。';
+$lang['%d photos per page'] = '每頁 %d 相片';
+$lang['Theme'] = '主題';
+?>
Index: /tags/2.6.0RC1/language/zh_TW/help/cat_modify.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/cat_modify.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/cat_modify.html	(revision 25596)
@@ -0,0 +1,127 @@
+<h2>編輯相本</h2>
+
+<h3>相關資訊</h3>
+
+<ul>
+
+  <li><strong>名稱</strong>: 為相本重新命名 (實際相本的附加虛擬代稱).</li>
+
+  <li><strong>簡介</strong>: 以簡短的文字為該相本內容做簡短描述，
+  這些文字將顯示於縮圖頁面的下方。</li>
+
+</ul>
+
+<h3>移動</h3>
+
+<p>若該相本為虛擬的，您將可以移動它。移動該相本即為改變它的上層相本</p>
+
+<h3>選項</h3>
+
+<ul>
+
+  <li><strong>訪問類型</strong>: 權限管理。若您設定了一本私人相本，所有附屬於它的子相本也將轉為私人性質。若您將一本相簿設定為公開性質，則它的上層相本也將轉為公開性質。</li>
+
+  <li><strong>鎖定</strong>: 該相本與其內的子相本都將暫時被關閉以進行維護。</li>
+
+  <li><strong>回應</strong>: 讓使用者能夠針對該相本做出回應。</li>
+
+</ul>
+
+<p>You can also manage these options on the "Properties"
+management screen (screens <span
+class="pwgScreen">Comments</span>, <span class="pwgScreen">Lock</span>,
+<span class="pwgScreen">Public/Private</span>, <span
+class="pwgScreen">Representative</span> available from <span
+class="pwgScreen">Administration &raquo; Albums &raquo; Properties</span>).</p>
+
+<h3>Sort order</h3>
+
+<p>Use the default images sort order.</p>
+
+<p>Indicate whether this sort order will apply to subalbums also.</p>
+
+<p>Select specific sorting criteria to be used with this album.</p>
+<ul>
+<li><strong>Creation date</strong>: Photo shooting date</li>
+<li><strong>Post date</strong>: Synchronization date</li>
+<li><strong>Average rate (*)</strong>: Average rate could be changed by the visitor rating</li>
+<li><strong>Most visited (*)</strong>: The current visit might change the most visited order</li>
+<li><strong>File name</strong>: Name given in information field</li>
+<li><strong>Id</strong>: Internal Id (recent categories have an higher id than previous ones.</li>
+
+</ul>
+<p><strong>(*)</strong>Warning: Be sure to test these sort orders by yourself as they can give unexpected results.</p>
+
+
+<h3>Representant</h3>
+
+<p>The album representative is the thumbnail displayed on the main page (<span class="pwgScreen">category.php</span>) to represent
+the album when
+it contains only sub-albums and no direct photo (just as the root album).</p>
+photo of a album :</p>
+
+<ul>
+
+  <li><span class="pwgScreen">Photo page</span>: one of the action buttons let you set the current photo as the representative for the
+  displayed album. This button is available only for administrators.</li>
+
+  <li><span class="pwgScreen">Modify informations about a photo</span> in
+  administration. This screen can be reached from <span
+  class="pwgScreen">picture.php</span> or <span class="pwgScreen">Batch
+  management</span> in <em>unit mode</em>. See the help of this screen for
+  details.</li>
+
+  <li><span class="pwgScreen">Administration &raquo; Albums &raquo; Properties,
+  Representative</span>. See the help of this screen for details.</li>
+
+  <li><span class="pwgScreen">Edit album</span> (the present screen).</li>
+
+</ul>
+
+<p>The choice of a representative depends on the 
+<code>allow_random_representative</code> configuration parameter (see <span
+class="filename">include/config_default.inc.php</span>).</p>
+
+<p>In default mode (<code>allow_random_representative</code> set to false),
+each album containing at least one element is represented by a fixed
+element. Once set (at album creation), the representative changes only
+when an administrator ask for it. If the representative is not appropriate,
+you can ask to <strong>Find a new representant by random</strong>.</p>
+
+<p>If the <code>allow_random_representative</code> configuration parameter is
+set to true, a category containing photos may have no fixed
+representant. Just use <strong>Delete representant</strong> button.</p>
+
+<p>If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to <span class="pwgScreen">Modify
+informations about a photo</span> screen. The only option on the current screen
+is the <strong>Delete representant</strong> button.</p>
+
+<h3>Link all album photos to a new album</h3>
+
+<ul>
+
+<li><strong>Virtual album name</strong>: Name of the new album to be created, 
+all photos of the current category will be linked to the new one.</li>
+
+<li><strong>Parent album</strong>: Where the new album will be, 
+leave empty to create it at root.</li>
+
+</ul>
+
+<h3>Link all album photos to existing albums</h3>
+
+<ul>
+
+<li><strong>Albums</strong>: Choose the destination album.</li>
+
+</ul>
+
+<h3>Send an information email to group members</h3>
+
+<ul>
+
+<li><strong>Group</strong>: recipients group</li>
+
+<li><strong>Mail content</strong>: Free text to send to them.</li>
+
+</ul>  
Index: /tags/2.6.0RC1/language/zh_TW/help/cat_options.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/cat_options.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/cat_options.html	(revision 25596)
@@ -0,0 +1,22 @@
+<h2>相冊選項</h2>
+
+<p>一次管理數個相冊的選項。</p>
+
+<dl>
+
+<dt>評論</dt>
+<dd>如果它所屬相冊的留言被啟用，照片可以收到您的訪問者意見</dd>
+
+<dt>鎖</dt>
+<dd>鎖定相冊來停用維修。只有管​​理員可以在相冊中查看他們</dd>
+
+<dt>公共 / 私人</dt>
+<dd>一旦相冊成為私人的，將訪問權限給某些用戶和組</dd>
+
+<dt>代表</dt>
+<dd>當你設置的配置被設定，此選項是啟動的
+<code>允許隨機代表</code> (看 <span
+ class="filename">include/config_defaults.inc.php</span>) 為
+<em>真</em>. 每個相冊可以表示由隨機照片或由所選擇的照片作為一個獨特的代表。</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/zh_TW/help/configuration.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/configuration.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/configuration.html	(revision 25596)
@@ -0,0 +1,107 @@
+<h2>配置</h2>
+
+<p>這個畫面讓管理員做基本畫廊配置。事實上，這個畫面只顯示簡單的配置參數，對於絕大多數的管理員，應該是足夠的。如果你想看到其他眾多（高級）配置參數，讀取默認的配置文件 
+<span class="filename">include/config_default.inc.php</span>.</p>
+
+<p>畫面分成不同的部分，按主題分組來配置參數。</p>
+
+
+<h3>主要</h3>
+<ul>
+  <li><strong>圖庫標題</strong>: 通過電子郵件，使用RSS訂閱和通知。</li>
+
+  <li><strong>網頁橫幅</strong>: 顯示每個公共頁面頂部。</li>
+
+  <li><strong>圖庫網址</strong>: 用於RSS提要。</li>
+
+  <li><strong>鎖定圖庫</strong>: 鎖定整個圖庫來維護。只有管​​理員組的用戶將能夠到達圖庫。</li>
+
+  <li><strong>評分</strong>: 照片評分功能被啟用。</li>
+
+  <li><strong>客人也可評分</strong>: 即使是未註冊的用戶，也能評分圖片。</li>
+
+  <li><strong>允許用戶註冊</strong>: 任何人都可以註冊。</li>
+
+  <li><strong>強制所有用戶留下郵件地址</strong>: 除了管理員以外，所有用戶登記或更新資料時，將檢查郵件地址。</li>
+
+  <li><strong>當一個新用戶註冊用電子郵件通知管理員</strong>: 每個註冊都將用郵件通知管理員。</li>
+  
+  <li><strong>默認照片順序</strong>: 你可以將下拉菜單定義個人化的順序</li>
+
+</ul>
+
+<h3>歷史</h3>
+
+  <p>頁面的訪客 <span
+  class="pwgScreen">category.php</span> 和 <span
+  class="pwgScreen">picture.php</span> 將被保存在在 <code>history</code> 表。</p>
+  
+  <p>訪客將顯示在 <span  class="pwgScreen">管理 &raquo; 工具 &raquo; 歷史</span>.</p>
+
+<ul>
+  <li><strong>保存訪客的訪問頁面 </strong>: 訪客的訪問頁面將會被記錄</li>
+
+  <li><strong>保存用戶的訪問頁面 </strong>: 用戶的訪問頁面將會被記錄</li>
+
+  <li><strong>保存管理員的訪問頁面 </strong>: 管理員的訪問頁面將會被記錄</li>
+
+</ul>
+
+<h3>評論</h3>
+<ul>
+
+  <li><strong>所有人都可評論</strong>: 即使是未登記的訪客也可以發表評論</li>
+
+  <li><strong>每頁的意見數</strong>.</li>
+
+  <li><strong>驗證</strong>: 管理員必須驗證用戶的評論，才能在網站上看到。用戶評論驗證發生在畫面 
+<span class="pwgScreen">管理 &raquo; 工具 &raquo; 掛起的評論</span>.</li>
+
+  <li><strong>當輸入一個有效的評論，用電子郵件通知管理員</strong>: 當用戶輸入一個有效的評論，發送電子郵件給管理員。</li>
+
+  <li><strong>當評論需要審核，用電子郵件通知管理員</strong>:
+發送電子郵件給管理員，當用戶輸入的評論需要由管理員驗證。用戶評論驗證發生在畫面
+<span class="pwgScreen">管理 &raquo; 工具 &raquo; 掛起的評論</span>.</li>
+
+</ul>
+
+<h3>默認顯示</h3>
+
+<p>
+在這裡，你可以改變訪客使用的顯示選項，默認用戶是沒有連接的。
+一旦連接成功，這些選項是由用戶自己選擇覆蓋。
+(修改中的 <span class="pwgScreen">配置</span>).</p>
+
+<p>
+這可能改變所有現有用戶的顯示選項，在<span class="pwgScreen">管理 &raquo; 用戶 &raquo; 管理</span>
+ 畫面，在那裡你可以選擇一個用戶列表。</p>
+
+<ul>
+
+  <li><strong>語言</strong>: 只應用在Piwigo的標籤、相冊名稱、相片名稱，和所有沒有本地化的描述欄位</li>
+
+  <li><strong>每行的照片數</strong></li>
+
+  <li><strong>每頁的行數</strong></li>
+
+  <li><strong>界面主題</strong></li>
+
+  <li><strong>最近一段時期</strong>: 按天數。顯示此期間的新照片。必須大於1天。</li>
+
+  <li><strong>展開所有的相冊</strong>: 默認情況下，在菜單中展開所有的相冊
+  <em>警告</em>: ​​此選項在資源密集時，比如你的相冊集中包含多本相冊時，可能會產生巨大的菜單。</li>
+
+  <li><strong>顯示評論數</strong>: 每張照片縮略圖頁面上，顯示評論的數量。資源密集型的。</li>
+
+  <li><strong>顯示點擊數</strong>:
+ 在縮略圖頁面上的縮略圖照片中，顯示點擊數。
+ 只有當進階的配置參數是: <br>
+ $conf['show_nb_hits'] = true; <br>
+ 注意：默認為不顯示</li>
+
+  <li><strong>照片的最大寬度</strong>: 最大顯示寬度。 照片大於這個設置，顯示時將被調整。
+ 如果不選擇此項,你可能會考慮修改照片的寬度，這將是一個更好的做法。</li>
+
+  <li><strong>照片的最大高度</strong>: 設置為與最大寬度相同。</li>
+
+</ul>
Index: /tags/2.6.0RC1/language/zh_TW/help/extend_for_templates.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/extend_for_templates.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/extend_for_templates.html	(revision 25596)
@@ -0,0 +1,71 @@
+<h2>模板擴展配置</h2>
+
+<h3>關於</h3>
+<p>
+可以自定義你的Piwigo畫​​廊，用定制的版本取代現有的模板文件。
+例如，默認的的標頭模板（header.tpl）可以用定制標頭模板（my-header.tpl）取代。提交更改到數據庫後，畫廊將展示定制的標頭 - 而不是原來的標頭。<br>
+模板擴展是一種強大的方式，來創建新及先進的用戶自定義主題。與LocalFiles編輯器一起使用，你可以創建自己的子主題。</p>
+
+<h3>原始模板</h3>
+<p>主題包含了一些模板文件，來增強畫廊頁。這些是原始模板。</p>
+
+<h3>選擇性的URL關鍵字</h3>
+<p>在畫廊網址的模塊名稱後，發現關鍵字的話。它們也可以是活躍的永久鏈接（參考永久鏈接的文檔，了解更多信息）。
+<a href="#warnings">警告：</a>
+如果​​相同的原始模板，並使用相同的關鍵字在一個以上的自定義模板，只有最後一個是活躍的。</p>
+
+<h3>綁定主題</h3>
+<p>綁定主題是主題的模板文件被替換。</p>
+
+<h3>原始模板在哪裡？</h3>
+<p>原始模板隨每個主題的模板文件。
+這些被保存在<em>/themes/default/template</em> (或 <em>themes/<theme name>/template</em>)。
+這些模板文件不應該被編輯，更改將會失去主題的升級。<br>
+支持的原始模板包括：</p>
+
+<ul>
+  <li><span class="filename">index.tpl</span></li>
+  <li><span class="filename">mainpage_categories.tpl</span> 和/或 <span class="filename">thumbnails.tpl</span></li>
+  <li><span class="filename">menubar.tpl</span></li>
+  <li><span class="filename">header.tpl</span> 和/或 <span class="filename">footer.tpl</span></li>
+  <li><span class="filename">picture_content.tpl</span> 和/或 <span class="filename">picture.tpl</span></li>
+  <!-- <li><span class="filename">slideshow.tpl</span></li> -->
+  <li><span class="filename">profile.tpl</span> 和/或 <span class="filename">profile_content.tpl</span></li>
+  <li><span class="filename">tags.tpl</span></li>
+  <li><span class="filename">upload.tpl</span></li>
+  <li><span class="filename">about.tpl</span></li>
+  <li><span class="filename">popuphelp.tpl</span></li>
+  <li><span class="filename">search.tpl</span> 和/或 <span class="filename">search_rules.tpl</span></li>
+  <li><span class="filename">nbm.tpl</span> 和/或 <span class="filename">notification.tpl</span></li>
+  <li><span class="filename">identification.tpl</span> 和/或 <span class="filename">register.tpl</span></li>
+  <li><span class="filename">redirect.tpl</span></li>
+</ul>
+
+<h3>保存自定義模板</h3>
+<p>
+定制模板應保存在模板的擴展文件夾或子文件夾。
+例如，<em>/template-extension/my-default/header.tpl</em> (或 <em>/template-extension/<my-theme-name>/header.tpl</em>)
+模板文件可以使用任何名稱，與.tpl的副檔名。
+子文件夾中的模板文件，會顯示在模板配置屏幕中，可用的自定義模板。</p>
+
+<h3>激活定制模板</h3>
+<p>
+選擇要取代的原來模板。
+選擇一個URL關鍵字，以確保定制的模板，只顯示在該關鍵字的頁面上。
+選擇綁定的主題，該主題的變化將是有效的。
+提交更改到數據庫中。</p>
+
+<h3>停用定制模板</h3>
+<p>取消選擇原始模板，並提交改變到數據庫。<br>
+在模板的擴展文件夾中，刪除自定義模板文件。</p>
+
+<a name="warnings"></a>
+<h3>警告</h3>
+<ul>
+  <li><strong>原始模板</strong> >必須是原始模板，否則你可能會產生不可預知的結果。</li>
+  <li>如果不止一個定制模板，使用相同的原始模板，和相同的URL關鍵字，只有最後一個是活躍的。</li>
+  <li>分佈式樣本模板文件，僅用於測試目的。不能編輯它們。創建你自己的或複製現有的主題模板文件 <em>/template-extension/<my-theme>/</em></li>
+  <li>當定制模板被刪除，原來的模板文件將立即激活。</li>
+</ul>
+
+ 
Index: /tags/2.6.0RC1/language/zh_TW/help/group_list.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/group_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/group_list.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>組名單</h2>
+
+<p>這是管理組的地方</p>
+
+<h3>添加一個組</h3>
+
+<p>管理員可以添加組</p>
+
+<h3>組名單</h3>
+
+<p>對於每個組，可應用以下操作:</p>
+
+<ul>
+  <li>移到用戶管理 (幫助 &raquo; 用戶 &raquo; 管理)</li>
+  <li>移到權限管理畫面，授予或拒絕訪問私人相冊。</li>
+  <li>刪除組（需要確認）</li>
+  <li>切換狀態 “默認”（需要確認）</li>
+</ul>
+
+<h3>默認組</h3>
+<p>默認組是自動關聯，對每個新用戶註冊或創建一個管理員。</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/help_add_photos.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/help_add_photos.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/help_add_photos.html	(revision 25596)
@@ -0,0 +1,25 @@
+<p>幾種方法，將照片添加到您的畫廊：</p>
+
+<ul>
+  <li><strong>直接上傳</strong> 從您的網頁瀏覽器內，是最簡單，最直接的方式。它取決於你的瀏覽器功能和Web服務器。
+  對於數量龐大的照片或情況下，你會遇到一些問題，但其他方法都只是等著你！</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=direct">轉到直接上傳 </a></p>
+
+<ul>
+  <li><strong>pLoader</strong> 是一個桌面應用程序，要安裝在你的計算機上。 
+拖 &amp; 放照片到pLoader窗口, 點擊 <em>"上傳到Piwigo"</em> 讓pLoader工作。 
+你可以找到其他桌面應用程序，如<strong>WinToPiwigo</strong>，或<strong>Digikam</strong>匯出插件到Piwigo。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ploader">移到pLoader</a></p>
+
+<div id="helpSynchro">
+<ul>
+  <li><strong>FTP傳輸</strong>是最值得推薦的方式，用最少的點擊次數，來增加非常大的照片集。
+  遵循指南來準備你的照片。FTP方法讓你精確控制，您照片的物理組織到您的服務器上。</li>
+</ul>
+
+<p class="nextStepLink"><a href="admin.php?page=photos_add&section=ftp">轉到FTP</a></p>
+</div>
Index: /tags/2.6.0RC1/language/zh_TW/help/help_groups.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/help_groups.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/help_groups.html	(revision 25596)
@@ -0,0 +1,12 @@
+
+<p>組是一種便捷的方式，為其設置列表用戶的權限。</p>
+
+<p>創建組 <span class="pwgScreen">管理 &raquo; 用戶
+&raquo; 組</span> 和聯繫用戶到該組
+在 <span class="pwgScreen">管理 &raquo; 用戶 &raquo;
+管理</span>.</p>
+
+<p>一個用戶可以屬於多個組。 授權的優先級高於
+阻截 : 如果用戶“傑克”屬於組“家庭”和“朋友”，並
+且只有組“家庭”可以看到“2010年聖誕節”專輯，那麼
+“傑克”將能看到“2010年聖誕節”。</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/help_misc.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/help_misc.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/help_misc.html	(revision 25596)
@@ -0,0 +1,9 @@
+<p>一旦你創建你的畫廊，你可以為你的訪問者配置它
+<ul>
+	<li>默認顯示你喜歡的 <span class="pwgScreen">管理 &raquo; 配置 &raquo; 選項</span> 卡 <span class="pwgScreen">客戶設置</span></li>
+	<li>默認主題 <span class="pwgScreen">管理 &raquo; 配置 &raquo; 主題</span></li>
+	<li>默認語言 <span class="pwgScreen">管理 &raquo; 配置 &raquo; 語言</span></li>
+ </ul>
+ 默認情況下，每個新用戶登記後，將繼承這些屬性。
+</p>
+<p>如果您有任何問題，Piwigo的社區歡迎您在 <a href="http://piwigo.org/forum">這個論壇</a>。</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/help_permissions.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/help_permissions.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/help_permissions.html	(revision 25596)
@@ -0,0 +1,56 @@
+<fieldset>
+<legend>照片權限</legend>
+
+<p>每個照片有<strong>隱私級別</strong>（鎖）。每個用戶也有自己的隱私級別（鍵）。隱私級別有5個：</p>
+<ol>
+  <li>無</li>
+  <li><em>接觸</em></li>
+  <li><em>朋友（這是高於接觸）</em></li>
+  <li><em>家庭（這是高於朋友）</em></li>
+  <li><em>管理員（這是比其他任何級別高）</em></li>
+</ol>
+
+<p>高級別比低級別有權限的多。對於一個給定的用戶，隱私級別越高，他可以看到的照片越多。</p>
+
+<p>例如，如果照片“peter_wedding-0024.jpg”有<em>“家庭”</em>的隱私級別，那麼：</p>
+<ul>
+  <li>彼得（是<em>“管理員”</em>）會看到照片，因為<em>"管理員"</em>可以看到所有的照片</li>
+  <li>貝絲（是<em>“家庭”</em>）也將看到照片</li>
+  <li>瑪麗（是<em>“朋友”</em>）將不會看到照片</li>
+</ul>
+
+<p>用戶沒有看到內容的權限，就不會看到該相冊，甚至它的標題。同樣的原則也適用於一個標籤。</p>
+
+<p>您可以設置用戶的隱私級別，在<span class="pwgScreen">管理 &raquo; 用戶 &raquo; 管理 </span> 畫面。</p>
+
+</fieldset>
+
+<fieldset>
+<legend>相冊權限</legend>
+
+<p>如果隱私級別不適合您的需求，您也可以管理相冊的權限對用戶或組。你可以在同一時間管理照片和相冊的權限，而不會發生衝突。</p>
+
+<p>您可以禁止訪問相冊。如果你想管理權限，切換相冊的訪問類型為“私人”。</p>
+
+<p>您可以由編輯中的單一相冊，設置一個私人相冊
+（<span class="pwgScreen">管理 &raquo; 相冊 &raquo; 管理
+ &raquo; 編輯</span>）或通過設置選項所有的相冊樹
+（<span class="pwgScreen">管理 &raquo; 相冊 &raquo;
+屬性 &raquo; 公共/私人）</span>)。</p>
+
+<p>一旦相冊是私人的，你可以管理權限組和
+用戶從3個屏幕：</p>
+
+<ul>
+
+  <li><span class="pwgScreen">管理 &raquo; 用戶 &raquo; 管理 &raquo; 
+  權限行為</span>（每用戶一個鏈接）</li>
+
+  <li><span class="pwgScreen">管理 &raquo; 用戶 &raquo; 組 &raquo; 
+  權限行為</span>（每組一個鏈接）</li>
+
+  <li><span class="pwgScreen">管理 &raquo; 相冊 &raquo; 管理 &raquo; 編輯
+  相冊權限行為</span>（每個相冊一個鏈接）</li>
+
+</ul>
+</fieldset>
Index: /tags/2.6.0RC1/language/zh_TW/help/help_virtual_links.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/help_virtual_links.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/help_virtual_links.html	(revision 25596)
@@ -0,0 +1,7 @@
+<p>照片顯示他們相冊的對應文件目錄中。</p>
+
+<p>你也可以顯示幾個相冊中的照片，而無需在Web服務器上複製文件。
+在照片編輯屏幕，從任何相冊來關聯照片（任何管理員都可以達到，從照片頁畫廊側）。</p>
+
+<p>虛擬相冊基於這樣的理念：他們有沒有相應的目錄。
+創建虛擬相冊從 <span class="pwgScreen">管理 &raquo; 相冊 &raquo; 管理</span>。</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/history.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/history.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/history.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>歷史</h2>
+
+<p>在這些屏幕上，您可以瀏覽您相冊的訪問歷史，根據您選擇的選項：管理 &raquo; 配置 &raquo; 選項 &raquo; 歷史</p>
+	
+<h3>統計</h3>
+<ul>
+  <p>如果您選擇記錄頁面訪問 (<span class="pwgScreen">index.php</span> 和 <span class="pwgScreen">picture.php</span>)， 您可以從這個標籤瀏覽他們。</p>
+	<li><strong>全局統計信息</strong>: 每年的訪問。 </li>
+	<li><strong>每年統計</strong>: 在選定年的每月訪問</li>
+	<li><strong>每月統計</strong>: 在選定月的每日訪問</li>
+	<li><strong>每日統計</strong>: 在選定日的每小時訪問</li>
+</ul>
+
+<h3>搜索</h3>
+<ul>
+  <p>如果您選擇記錄頁面訪問 (<span class="pwgScreen">index.php</span> 和 <span class="pwgScreen">picture.php</span>)
+，你可以瀏覽在此選項卡中的細節，不同的過濾器可以幫助你。</p>
+	<li><strong>過濾日期：</strong>選擇日期範圍搜索，通過設置開始和結束日期。</li>
+	<li><strong>過濾元素的類型：</strong> 選擇該元素的類型進行統計。</li>
+	<li><strong>過濾用戶：</strong> 選擇用戶在該用戶的統計。</li>
+	<li><strong>過濾圖片標識：</strong> 選擇圖片標籤在該標籤的統計。</li>
+	<li><strong>過濾文件名：</strong> 選擇該文件的文件名統計..</li>
+</ul>
Index: /tags/2.6.0RC1/language/zh_TW/help/maintenance.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/maintenance.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/maintenance.html	(revision 25596)
@@ -0,0 +1,32 @@
+<h2>維護</h2>
+
+<p>為了優化頁面生成時間，Piwigo使用緩存信息。
+例如，重新加載當前的信息時，計數每頁相冊中包含的照片數量，是儲存在數據庫中。
+在理論上，這信息應該永遠是正確的，但有時可能會發生錯誤緩存，使信息變得過時了。</p>
+
+<p>隨著時間的推移，一些信息變得不那麼有用。從數據庫中刪除這個無用的信息，會為你節省一些磁盤空間。</p>
+
+<ul>
+	<li><strong>刪除孤兒標籤</strong></li>
+</ul>
+<ul>
+  <li><strong>更新相冊信息：</strong> 對每個相冊，檢查以下的信息，並在必要時更新：父相冊，照片數，最後一張照片的日期，兄相冊之間的位置，所有相冊中的位置。這個動作也檢查照片的一致性。</li>
+
+  <li><strong>更新照片信息：</strong> 對於每張照片，更新的信息是：文件的完整路徑，平均速率。<em>警告</em>，千萬不能混用：元數據信息必須同步，從 <span class="pwgScreen">管理 &raquo; 工具 &raquo; 同步化</span>，或在修改屏幕上的一張照片 (例如通過 <span class="pwgScreen">照片</span>)。</li>
+</ul>
+
+<ul>
+  <li><strong>修理和優化數據庫：</strong>執行重新排序，修復和優化操作對數據庫中的每個表。</li>
+  <li><strong>初始化完整性檢查</strong></li>
+</ul>
+
+  <LI> <STRONG>重新初始化完整性檢查</ STRONG> </ LI> 
+
+<ul>
+  <li><strong>清除歷史細節：</strong> 刪除歷史記錄表的所有行。屏幕 <span class="pwgScreen">管理 &raquo; 工具 &raquo; 歷史</span> 將不再顯示過去的歷史信息。 <em>警告：</em> 所有數據將會丟失，沒有任何辦法讓他們回來。</li>
+  <li><strong>清除歷史摘要：</strong> 刪除所有訪問歷史記錄的摘要信息。此摘要從歷史記錄的細節計算。</li>
+  <li><strong>清除會話：</strong> 刪除過期的用戶會話。</li>
+  <li><strong>清除從未使用的通知供稿</strong></li>
+  <li><strong>清除搜索歷史</strong></li>
+  <li><strong>清除編譯模板</strong></li>  
+</ul>
Index: /tags/2.6.0RC1/language/zh_TW/help/notification_by_mail.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/notification_by_mail.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/notification_by_mail.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>通知郵件 (NBM)</h2>
+
+<p>配置和管理電子郵件通知用戶，通知他們，您網站的變化。</p>
+
+<p>這個屏幕包含三個選項卡：</p>
+
+<h3>設置</h3>
+<p>此選項卡只為站長，設置通過郵件通知的參數</p>
+
+<h3>訂閱</h3>
+<p>此選項卡只為站長，管理訂閱用戶的電子郵件通知。將用戶添加到訂閱框中，他們就會收到通知郵件。</p>
+
+<h3>發送</h3>
+<p>僅可用於站長和管理員，此選項卡允許管理員發送通知郵件給訂閱用戶。</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/photos_add_ftp.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/photos_add_ftp.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/photos_add_ftp.html	(revision 25596)
@@ -0,0 +1,85 @@
+<fieldset>
+  <legend>快速入門</legend>
+
+<ol>
+  <li>在您的電腦上創建一個目錄。</li>  
+
+  <li>複製這個目錄裡面的一些照片，並在網頁顯示中調整他們。<em>警告</em>：​​目錄和文件的名稱必須只包含字母，數字，“ - ”，“_” 或“.”。不能空白，及特殊字符。</li>
+
+  <li>一個FTP客戶端，複製目錄到Piwigo安裝的“照片庫”目錄。</li>
+
+  <li>登錄您的畫廊，去到 <span class="pwgScreen">管理</span> ，然後按一下大型的同步按鈕。</li>
+</ol>
+
+<p>恭喜您！您已成功創建您的照片庫的第一本相冊</p>
+</fieldset>
+
+<fieldset>
+  <legend>組織目錄和文件</legend>
+
+<ul>
+
+  <li>
+
+    <p>Piwigo目錄中的相冊目錄
+    "照片庫"。下面的目錄樹中一個非常小的畫廊（但
+    使用許多功能）：</p>
+
+    <pre>
+照片庫
+|-- 婚禮
+|   |-- 慶祝
+|   |   |-- 到達
+|   |   |   |-- paul-alone.jpg
+|   |   |   +-- sarah-alone.jpg
+|   |   +-- 出發
+|   |       +-- paul-and-sarah.jpg
+|   +-- 聚會
+|       |-- dancers001.jpg
+|       |-- dancers002.jpg
+|       +-- dancers003.jpg
++-- 蜜月
+    |-- hotel.png
+    |-- video-from-plane.avi
+    +-- pwg_representative
+        +-- video-from-plane.jpg
+</pre>
+
+  </li>
+
+  <li>Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.</li>
+
+  <li>Basically, an element is represented by a file. A file can be a
+  Piwigo element if its extension is among <code>file_ext</code>
+  configuration parameter possibilities (see <span
+  class="filename">include/config_default.inc.php</span> file). A file can
+  be a picture if its extension is among <code>picture_ext</code>
+  configuration parameter possibilities.</li>
+
+  <li>No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename
+  extension. Optionally, you can associate a thumbnail and a representative
+  file (see video.avi in the example above).</li>
+
+  <li><em>警告</em>: ​​目錄和文件的名稱必須包含字母，數字，“ - ”，“_”或“.”。不能空白，及特殊字符。</li>
+
+  <li>一旦照片被放置在正確的
+  目錄， 去到： <span class="pwgScreen">管理 &raquo; 工具 &raquo;
+  同步</span></li>
+
+</ul>
+</fieldset>
+
+
+
+  每個目錄下的“畫廊”除為“pwg_representative”（見下面的說明），<LI>產生一個專輯。有沒有深度的限制。</ LI>
+
+  <LI>基本上，一個元素表示的一個文件。一個文件就可以了
+  Piwigo的元素，如果其擴展名之間的<code> file_ext </代碼>
+  配置參數的可能性（請參閱<跨度
+  類=“文件名”> / config_default.inc.php </ SPAN>文件）。一個文件可以
+  是一個圖片，如果其擴展名之間的<code> picture_ext </代碼>
+  配置參數的可能性。</ LI>
+
+  <LI>沒有照片元素（視頻，聲音，文件文本，無論你想...）默認情況下，文件名對應一個圖標代表
+  擴展名。或者，您可以將一個縮略圖，並代表
+  文件（見video.avi在上面的例子）。</ LI>
Index: /tags/2.6.0RC1/language/zh_TW/help/search.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/search.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/search.html	(revision 25596)
@@ -0,0 +1,21 @@
+<h2>搜索</h2>
+
+<p>這頁讓您搜索所有相冊之間的照片。</p>
+
+<dl>
+
+  <dt>搜索詞</dt>
+  <dd>搜索一個或多個關鍵字之間的屬性從相關的相冊照片。使用*作為一個部分匹配的萬用字元。</dd>
+
+  <dt>按作者搜尋</dt>
+  <dd>使用*作為一個部分匹配的萬用字元。</dd>
+
+  <dt>按日期搜索</dt>
+  <dd>您可選擇日期和(或)結束日期為查詢。如果你想要做一個“前”查詢，將發表日期字段設為空。
+  在結束年的字段必須輸入的格式如下：AAAA（例如2004年）</dd>
+
+  <dt>按相冊搜索</dt>
+  <dd選擇你想搜索的單一相冊或多個相冊。所有
+  子相冊都可以通過選擇父相冊來搜索，並設定啟用搜尋子相冊</dd>
+
+</dl>
Index: /tags/2.6.0RC1/language/zh_TW/help/synchronize.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/synchronize.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/synchronize.html	(revision 25596)
@@ -0,0 +1,14 @@
+<h2>同步</h2>
+
+<p>有兩種不同類型的同步：</p>
+<ul>
+	<li>目錄/文件</li>
+	<li>文件元數據</li>
+</ul>
+
+<p>同步的目錄和文件，是根據你的目錄樹，到數據庫中的相冊樹。
+同步文件的元數據是關於更新的照片信息，如文件大小，像素尺寸，EXIF或IPTC信息，在數據庫中。</p>
+
+<p>當您同步上傳您的相冊，您必須首先同步目錄和文件</p>
+
+<p>在同步過程可能需要很長一段時間（取決於服務器負載以及管理的元素數量），所以它是可以做到相冊對相冊的</p>
Index: /tags/2.6.0RC1/language/zh_TW/help/user_list.html
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/help/user_list.html	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/help/user_list.html	(revision 25596)
@@ -0,0 +1,23 @@
+<h2>用戶列表</h2>
+
+<p>這理是你管理Piwigo相冊用戶的地方。</p>
+
+<h3>添加用戶</h3>
+
+<p>管理員可以手動添加用戶。對於每個用戶創建一個用戶名，一個密碼，並提交有效的電子郵件地址。</p>
+
+<h3>用戶列表</h3>
+
+<p>在現有用戶列表，可以過濾用戶名（使用 * 通配符），群組或狀態。可以依據登記日期或用戶名，升序或降序排列。</p>
+
+<p>這個畫面允許一次管理多個用戶，使用不同的操作：</p>
+
+<ul>
+  <li>刪除用戶（需確認）</li>
+  <li>改變用戶的狀態</li>
+  <li>關聯或脫離於群體</li>
+  <li>修改顯示屬性</li>
+  <li>修改附加的偏好</li>
+</ul>
+
+<p>目標是選定的用戶（默認），或在過濾列表中所顯示的所有用戶。</p>
Index: /tags/2.6.0RC1/language/zh_TW/install.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/install.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/install.lang.php	(revision 25596)
@@ -0,0 +1,68 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['Installation'] = '安裝';
+$lang['Basic configuration'] = '基本設置';
+$lang['Default gallery language'] = '圖庫默認語言';
+$lang['Database configuration'] = '數據庫設置';
+$lang['Admin configuration'] = '管理員帳戶設定';
+$lang['Start Install'] = '開始安裝';
+$lang['It will be shown to the visitors. It is necessary for website administration'] = '所有用戶都能看到此帳戶。必須提供此帳戶來管理網站';
+$lang['Connection to server succeed, but it was impossible to connect to database'] = '服務器連接正常，但是無法連接到數據庫';
+$lang['Can\'t connect to server'] = '無法連接到服務器';
+$lang['Host'] = 'MySQL主機地址';
+$lang['User'] = '用戶';
+$lang['user login given by your host provider'] = '主機用戶名';
+$lang['user password given by your host provider'] = '主機用戶密碼';
+$lang['Database name'] = '數據庫名稱';
+$lang['also given by your host provider'] = '在主機設定的數據庫名稱';
+$lang['Database table prefix'] = '表名稱前綴';
+$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = '所有的表名稱都加此前綴(有利於數據庫管理)';
+$lang['enter a login for webmaster'] = '請輸入網管名';
+$lang['webmaster login can\'t contain characters \' or "'] = '網管名不應包含字符 " 和 \'';
+$lang['please enter your password again'] = '請再次輸入密碼';
+$lang['Keep it confidential, it enables you to access administration panel'] = '請小心保管好此密碼，它允許你操作管理板塊。';
+$lang['Password [confirm]'] = '密碼 [ 確認 ]';
+$lang['verification'] = '核實';
+$lang['Need help ? Ask your question on <a href="%s">Piwigo message board</a>.'] = '需要幫助？ 請到<a href="%s">Piwigo論壇</a>提出你的問題.';
+$lang['Visitors will be able to contact site administrator with this mail'] = '遊客通過此Email跟你聯繫';
+$lang['PHP 5 is required'] = '必須PHP 5版本';
+$lang['It appears your webhost is currently running PHP %s.'] = '你主機PHP版本好像是PHP %s.';
+$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo試著創建或修改.htaccess文件來轉換到PHP 5。';
+$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意；你也可以自己修改設置PHP然後重新啟動Piwigo。';
+$lang['Try to configure PHP 5'] = '試試配置PHP 5';
+$lang['Sorry!'] = '對不起!';
+$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo不能設置PHP 5.';
+$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = '你應該聯繫你的主機管理員並向其請教如何設置PHP 5.';
+$lang['Hope to see you back soon.'] = '希望下次再見到你...';
+$lang['Congratulations, Piwigo installation is completed'] = '恭喜，Piwigo 已安裝完成。';
+$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一個解決辦法是，將以上文本框裡的文本拷貝到 "local/config/database.inc.php" 文件裡（注意：database.inc.php 必須只能包含此文本框裡的內容，沒有換行或者空格字符）';
+$lang['Creation of config file local/config/database.inc.php failed.'] = '創建 local/config/database.inc.php 文件失敗.';
+$lang['Download the config file'] = '下載配置文件';
+$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下載配置文件，然後上傳到 local/config 目錄以完成您的安裝.';
+$lang['Just another Piwigo gallery'] = '另一本Piwigo相片集';
+$lang['Welcome to my photo gallery'] = '歡迎進入我的相片集';
+$lang['Welcome to your new installation of Piwigo!'] = '歡迎安裝Piwigo!';
+$lang['Don\'t hesitate to consult our forums for any help : %s'] = '如有任何問題，請至我們的論壇提出：%s ';
+$lang['localhost or other, supplied by your host provider'] = '本地主機或其它，由你的主機提供商提供';
+?>
Index: /tags/2.6.0RC1/language/zh_TW/iso.txt
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/iso.txt	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/iso.txt	(revision 25596)
@@ -0,0 +1,1 @@
+中文 (繁體) [TW]
Index: /tags/2.6.0RC1/language/zh_TW/upgrade.lang.php
===================================================================
--- /tags/2.6.0RC1/language/zh_TW/upgrade.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/language/zh_TW/upgrade.lang.php	(revision 25596)
@@ -0,0 +1,44 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['Upgrade'] = "升級";
+$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'] = "此頁面將把您的 Piwigo 舊版本的數據庫升級為新版本。
+升級助手將會認為您正在運行 <strong>版本 %s</strong> (或者相同的版本).";
+$lang['Upgrade from version %s to %s'] = "從 %s 版升級到 %s";
+$lang['Statistics'] = "統計";
+$lang['total upgrade time'] = "總共升級時間";
+$lang['total SQL time'] = "總共 SQL 時間";
+$lang['SQL queries'] = "SQL 查詢";
+$lang['Upgrade informations'] = "升級信息";
+$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "如果您遇到任何問題，請在[管理員>工具>維護]執行維護檢測";
+$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "為了預防萬一，以下插件已被停用。在您重新啟用它們之前，必須先檢查這些插件的更新:";
+$lang['Only administrator can run upgrade: please sign in below.'] = "只有管理員能運行升級操作：請先登錄。";
+$lang['You do not have access rights to run upgrade'] = "您沒有執行升級程序的權限";
+$lang['All sub-albums of private albums become private'] = '相冊裡的所有子相冊都成為私有';
+$lang['User permissions and group permissions have been erased'] = "用戶和組的權限已被清除";
+$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "在前一個配置操作中，只有縮略圖的前綴和網站管理員的郵件地址被保存了。";
+$lang['In <i>%s</i>, before <b>?></b>, insert:'] = '在 <i>%s</i>, 之前 <b>?></b>, 插入:';
+$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '為小心起見，以下主題已停用。假如要重新啟用它們，你必須先檢查有沒有可更新的主題:';
+
+?>
Index: /tags/2.6.0RC1/local/config/index.php
===================================================================
--- /tags/2.6.0RC1/local/config/index.php	(revision 25596)
+++ /tags/2.6.0RC1/local/config/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/local/css/index.php
===================================================================
--- /tags/2.6.0RC1/local/css/index.php	(revision 25596)
+++ /tags/2.6.0RC1/local/css/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/local/index.php
===================================================================
--- /tags/2.6.0RC1/local/index.php	(revision 25596)
+++ /tags/2.6.0RC1/local/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/local/language/index.php
===================================================================
--- /tags/2.6.0RC1/local/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/local/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/nbm.php
===================================================================
--- /tags/2.6.0RC1/nbm.php	(revision 25596)
+++ /tags/2.6.0RC1/nbm.php	(revision 25596)
@@ -0,0 +1,81 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+//--------------------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+check_status(ACCESS_FREE);
+include_once(PHPWG_ROOT_PATH.'include/functions_notification.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_notification_by_mail.inc.php');
+// Translations are in admin file too
+load_language('admin.lang');
+// Need to update a second time
+trigger_action('loading_lang');
+load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) );
+
+
+// +-----------------------------------------------------------------------+
+// | Main                                                                  |
+// +-----------------------------------------------------------------------+
+if (isset($_GET['subscribe'])
+    and preg_match('/^[A-Za-z0-9]{16}$/', $_GET['subscribe']))
+{
+  subscribe_notification_by_mail(false, array($_GET['subscribe']));
+}
+else if (isset($_GET['unsubscribe'])
+    and preg_match('/^[A-Za-z0-9]{16}$/', $_GET['unsubscribe']))
+{
+  unsubscribe_notification_by_mail(false, array($_GET['unsubscribe']));
+}
+else
+{
+  $page['errors'][] = l10n('Unknown identifier');
+}
+
+// +-----------------------------------------------------------------------+
+// | template initialization                                               |
+// +-----------------------------------------------------------------------+
+$title = l10n('Notification');
+$page['body_id'] = 'theNBMPage';
+
+$template->set_filenames(array('nbm'=>'nbm.tpl'));
+
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theNBMPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+// +-----------------------------------------------------------------------+
+// | html code display                                                     |
+// +-----------------------------------------------------------------------+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+flush_page_messages();
+$template->parse('nbm');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/notification.php
===================================================================
--- /tags/2.6.0RC1/notification.php	(revision 25596)
+++ /tags/2.6.0RC1/notification.php	(revision 25596)
@@ -0,0 +1,122 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+/**
+ * search an available feed_id
+ *
+ * @return string feed identifier
+ */
+function find_available_feed_id()
+{
+  while (true)
+  {
+    $key = generate_key(50);
+    $query = '
+SELECT COUNT(*)
+  FROM '.USER_FEED_TABLE.'
+  WHERE id = \''.$key.'\'
+;';
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    if (0 == $count)
+    {
+      return $key;
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+trigger_action('loc_begin_notification');
+
+// +-----------------------------------------------------------------------+
+// |                          new feed creation                            |
+// +-----------------------------------------------------------------------+
+
+$page['feed'] = find_available_feed_id();
+
+$query = '
+INSERT INTO '.USER_FEED_TABLE.'
+  (id, user_id, last_check)
+  VALUES
+  (\''.$page['feed'].'\', '.$user['id'].', NULL)
+;';
+pwg_query($query);
+
+
+$feed_url=PHPWG_ROOT_PATH.'feed.php';
+if (is_a_guest())
+{
+  $feed_image_only_url=$feed_url;
+  $feed_url .= '?feed='.$page['feed'];
+}
+else
+{
+  $feed_url .= '?feed='.$page['feed'];
+  $feed_image_only_url=$feed_url.'&amp;image_only';
+}
+
+// +-----------------------------------------------------------------------+
+// |                        template initialization                        |
+// +-----------------------------------------------------------------------+
+
+$title = l10n('Notification');
+$page['body_id'] = 'theNotificationPage';
+$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+
+
+$template->set_filenames(array('notification'=>'notification.tpl'));
+
+$template->assign(
+  array(
+    'U_FEED' => $feed_url,
+    'U_FEED_IMAGE_ONLY' => $feed_image_only_url,
+    )
+  );
+  
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theNotificationPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_notification');
+flush_page_messages();
+$template->pparse('notification');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+
+?>
Index: /tags/2.6.0RC1/password.php
===================================================================
--- /tags/2.6.0RC1/password.php	(revision 25596)
+++ /tags/2.6.0RC1/password.php	(revision 25596)
@@ -0,0 +1,361 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+
+check_status(ACCESS_FREE);
+
+trigger_action('loc_begin_password');
+
+// +-----------------------------------------------------------------------+
+// | Functions                                                             |
+// +-----------------------------------------------------------------------+
+
+/**
+ * checks the validity of input parameters, fills $page['errors'] and
+ * $page['infos'] and send an email with confirmation link
+ *
+ * @return bool (true if email was sent, false otherwise)
+ */
+function process_password_request()
+{
+  global $page, $conf;
+  
+  if (empty($_POST['username_or_email']))
+  {
+    $page['errors'][] = l10n('Invalid username or email');
+    return false;
+  }
+  
+  $user_id = get_userid_by_email($_POST['username_or_email']);
+    
+  if (!is_numeric($user_id))
+  {
+    $user_id = get_userid($_POST['username_or_email']);
+  }
+
+  if (!is_numeric($user_id))
+  {
+    $page['errors'][] = l10n('Invalid username or email');
+    return false;
+  }
+
+  $userdata = getuserdata($user_id, false);
+
+  // password request is not possible for guest/generic users
+  $status = $userdata['status'];
+  if (is_a_guest($status) or is_generic($status))
+  {
+    $page['errors'][] = l10n('Password reset is not allowed for this user');
+    return false;
+  }
+
+  if (empty($userdata['email']))
+  {
+    $page['errors'][] = l10n(
+      'User "%s" has no email address, password reset is not possible',
+      $userdata['username']
+      );
+    return false;
+  }
+
+  if (empty($userdata['activation_key']))
+  {
+    $activation_key = get_user_activation_key();
+
+    single_update(
+      USER_INFOS_TABLE,
+      array('activation_key' => $activation_key),
+      array('user_id' => $user_id)
+      );
+
+    $userdata['activation_key'] = $activation_key;
+  }
+
+  set_make_full_url();
+  
+  $message = l10n('Someone requested that the password be reset for the following user account:') . "\r\n\r\n";
+  $message.= l10n(
+    'Username "%s" on gallery %s',
+    $userdata['username'],
+    get_gallery_home_url()
+    );
+  $message.= "\r\n\r\n";
+  $message.= l10n('To reset your password, visit the following address:') . "\r\n";
+  $message.= get_gallery_home_url().'/password.php?key='.$userdata['activation_key']."\r\n\r\n";
+  $message.= l10n('If this was a mistake, just ignore this email and nothing will happen.')."\r\n";
+
+  unset_make_full_url();
+
+  $message = trigger_event('render_lost_password_mail_content', $message);
+
+  $email_params = array(
+    'subject' => '['.$conf['gallery_title'].'] '.l10n('Password Reset'),
+    'content' => $message,
+    'email_format' => 'text/plain',
+    );
+
+  if (pwg_mail($userdata['email'], $email_params))
+  {
+    $page['infos'][] = l10n('Check your email for the confirmation link');
+    return true;
+  }
+  else
+  {
+    $page['errors'][] = l10n('Error sending email');
+    return false;
+  }
+}
+
+/**
+ *  checks the activation key: does it match the expected pattern? is it
+ *  linked to a user? is this user allowed to reset his password?
+ *
+ * @return mixed (user_id if OK, false otherwise)
+ */
+function check_password_reset_key($key)
+{
+  global $page;
+  
+  if (!preg_match('/^[a-z0-9]{20}$/i', $key))
+  {
+    $page['errors'][] = l10n('Invalid key');
+    return false;
+  }
+
+  $query = '
+SELECT
+    user_id,
+    status
+  FROM '.USER_INFOS_TABLE.'
+  WHERE activation_key = \''.$key.'\'
+;';
+  $result = pwg_query($query);
+
+  if (pwg_db_num_rows($result) == 0)
+  {
+    $page['errors'][] = l10n('Invalid key');
+    return false;
+  }
+  
+  $userdata = pwg_db_fetch_assoc($result);
+
+  if (is_a_guest($userdata['status']) or is_generic($userdata['status']))
+  {
+    $page['errors'][] = l10n('Password reset is not allowed for this user');
+    return false;
+  }
+
+  return $userdata['user_id'];
+}
+
+/**
+ * checks the passwords, checks that user is allowed to reset his password,
+ * update password, fills $page['errors'] and $page['infos'].
+ *
+ * @return bool (true if password was reset, false otherwise)
+ */
+function reset_password()
+{
+  global $page, $user, $conf;
+
+  if ($_POST['use_new_pwd'] != $_POST['passwordConf'])
+  {
+    $page['errors'][] = l10n('The passwords do not match');
+    return false;
+  }
+
+  if (isset($_GET['key']))
+  {
+    $user_id = check_password_reset_key($_GET['key']);
+    if (!is_numeric($user_id))
+    {
+      $page['errors'][] = l10n('Invalid key');
+      return false;
+    }
+  }
+  else
+  {
+    // we check the currently logged in user
+    if (is_a_guest() or is_generic())
+    {
+      $page['errors'][] = l10n('Password reset is not allowed for this user');
+      return false;
+    }
+
+    $user_id = $user['id'];
+  }
+    
+  single_update(
+    USERS_TABLE,
+    array($conf['user_fields']['password'] => $conf['password_hash']($_POST['use_new_pwd'])),
+    array($conf['user_fields']['id'] => $user_id)
+    );
+
+  $page['infos'][] = l10n('Your password has been reset');
+
+  if (isset($_GET['key']))
+  {
+    $page['infos'][] = '<a href="'.get_root_url().'identification.php">'.l10n('Login').'</a>';
+  }
+  else
+  {
+    $page['infos'][] = '<a href="'.get_gallery_home_url().'">'.l10n('Return to home page').'</a>';
+  }
+
+  return true;
+}
+
+// +-----------------------------------------------------------------------+
+// | Process form                                                          |
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']))
+{
+  check_pwg_token();
+  
+  if ('lost' == $_GET['action'])
+  {
+    if (process_password_request())
+    {
+      $page['action'] = 'none';
+    }
+  }
+
+  if ('reset' == $_GET['action'])
+  {
+    if (reset_password())
+    {
+      $page['action'] = 'none';
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// | key and action                                                        |
+// +-----------------------------------------------------------------------+
+
+// a connected user can't reset the password from a mail
+if (isset($_GET['key']) and !is_a_guest())
+{
+  unset($_GET['key']);
+}
+
+if (isset($_GET['key']))
+{
+  $user_id = check_password_reset_key($_GET['key']);
+  if (is_numeric($user_id))
+  {
+    $userdata = getuserdata($user_id, false);
+    $page['username'] = $userdata['username'];
+    $template->assign('key', $_GET['key']);
+
+    if (!isset($page['action']))
+    {
+      $page['action'] = 'reset';
+    }
+  }
+  else
+  {
+    $page['action'] = 'none';
+  }
+}
+
+if (!isset($page['action']))
+{
+  if (!isset($_GET['action']))
+  {
+    $page['action'] = 'lost';
+  }
+  elseif (in_array($_GET['action'], array('lost', 'reset', 'none')))
+  {
+    $page['action'] = $_GET['action'];
+  }
+}
+
+if ('reset' == $page['action'] and !isset($_GET['key']) and (is_a_guest() or is_generic()))
+{
+  redirect(get_gallery_home_url());
+}
+
+if ('lost' == $page['action'] and !is_a_guest())
+{
+  redirect(get_gallery_home_url());
+}
+
+// +-----------------------------------------------------------------------+
+// | template initialization                                               |
+// +-----------------------------------------------------------------------+
+
+$title = l10n('Password Reset');
+if ('lost' == $page['action'])
+{
+  $title = l10n('Forgot your password?');
+
+  if (isset($_POST['username_or_email']))
+  {
+    $template->assign('username_or_email', htmlspecialchars(stripslashes($_POST['username_or_email'])));
+  }
+}
+
+$page['body_id'] = 'thePasswordPage';
+
+$template->set_filenames(array('password'=>'password.tpl'));
+$template->assign(
+  array(
+    'title' => $title,
+    'form_action'=> get_root_url().'password.php',
+    'action' => $page['action'],
+    'username' => isset($page['username']) ? $page['username'] : $user['username'],
+    'PWG_TOKEN' => get_pwg_token(),
+    )
+  );
+
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('thePasswordPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_password');
+flush_page_messages();
+$template->pparse('password');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+
+?>
Index: /tags/2.6.0RC1/picture.php
===================================================================
--- /tags/2.6.0RC1/picture.php	(revision 25596)
+++ /tags/2.6.0RC1/picture.php	(revision 25596)
@@ -0,0 +1,1003 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+include(PHPWG_ROOT_PATH.'include/section_init.inc.php');
+include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
+
+// Check Access and exit when user status is not ok
+check_status(ACCESS_GUEST);
+
+// access authorization check
+if (isset($page['category']))
+{
+  check_restrictions($page['category']['id']);
+}
+
+$page['rank_of'] = array_flip($page['items']);
+
+// if this image_id doesn't correspond to this category, an error message is
+// displayed, and execution is stopped
+if ( !isset($page['rank_of'][$page['image_id']]) )
+{
+  $query = '
+SELECT id, file, level
+  FROM '.IMAGES_TABLE.'
+  WHERE ';
+  if ($page['image_id']>0)
+  {
+    $query .= 'id = '.$page['image_id'];
+  }
+  else
+  {// url given by file name
+    assert( !empty($page['image_file']) );
+    $query .= 'file LIKE \'' .
+      str_replace(array('_','%'), array('/_','/%'), $page['image_file'] ).
+      '.%\' ESCAPE \'/\' LIMIT 1';
+  }
+  if ( ! ( $row = pwg_db_fetch_assoc(pwg_query($query)) ) )
+  {// element does not exist
+    page_not_found( 'The requested image does not exist',
+      duplicate_index_url()
+      );
+  }
+  if ($row['level']>$user['level'])
+  {
+    access_denied();
+  }
+
+  $page['image_id'] = $row['id'];
+  $page['image_file'] =  $row['file'];
+  if ( !isset($page['rank_of'][$page['image_id']]) )
+  {// the image can still be non accessible (filter/cat perm) and/or not in the set
+    global $filter;
+    if ( !empty($filter['visible_images']) and
+      !in_array($page['image_id'], explode(',',$filter['visible_images']) ) )
+    {
+      page_not_found( 'The requested image is filtered',
+          duplicate_index_url()
+        );
+    }
+    if ('categories'==$page['section'] and !isset($page['category']) )
+    {// flat view - all items
+      access_denied();
+    }
+    else
+    {// try to see if we can access it differently
+      $query = '
+SELECT id
+  FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id
+  WHERE id='.$page['image_id']
+        . get_sql_condition_FandF(
+            array('forbidden_categories' => 'category_id'),
+            " AND"
+          ).'
+  LIMIT 1';
+      if ( pwg_db_num_rows( pwg_query($query) ) == 0 )
+      {
+        access_denied();
+      }
+      else
+      {
+        if ('best_rated'==$page['section'])
+        {
+          $page['rank_of'][ $page['image_id'] ] = count($page['items']);
+          $page['items'][] = $page['image_id'];
+        }
+        else
+        {
+          $url = make_picture_url(
+              array(
+                'image_id' => $page['image_id'],
+                'image_file' => $page['image_file'],
+                'section' => 'categories',
+                'flat' => true,
+              )
+            );
+          set_status_header( 'recent_pics'==$page['section'] ? 301 : 302);
+          redirect_http( $url );
+        }
+      }
+    }
+  }
+}
+
+// There is cookie, so we must handle it at the beginning
+if ( isset($_GET['metadata']) )
+{
+  if ( pwg_get_session_var('show_metadata') == null )
+	{
+		pwg_set_session_var('show_metadata', 1 );
+	} else {
+  	pwg_unset_session_var('show_metadata');
+	}
+}
+
+// add default event handler for rendering element content
+add_event_handler(
+  'render_element_content',
+  'default_picture_content',
+  EVENT_HANDLER_PRIORITY_NEUTRAL,
+  2
+  );
+// add default event handler for rendering element description
+add_event_handler('render_element_description', 'nl2br');
+
+trigger_action('loc_begin_picture');
+
+// this is the default handler that generates the display for the element
+function default_picture_content($content, $element_info)
+{
+  global $conf;
+
+  if ( !empty($content) )
+  {// someone hooked us - so we skip;
+    return $content;
+  }
+
+  if (isset($_COOKIE['picture_deriv']))
+  {
+    if ( array_key_exists($_COOKIE['picture_deriv'], ImageStdParams::get_defined_type_map()) )
+    {
+      pwg_set_session_var('picture_deriv', $_COOKIE['picture_deriv']);
+    }
+    setcookie('picture_deriv', false, 0, cookie_path() );
+  }
+  $deriv_type = pwg_get_session_var('picture_deriv', $conf['derivative_default_size']);
+  $selected_derivative = $element_info['derivatives'][$deriv_type];
+
+  $unique_derivatives = array();
+  $show_original = isset($element_info['element_url']);
+  $added = array();
+  foreach($element_info['derivatives'] as $type => $derivative)
+  {
+    if ($type==IMG_SQUARE || $type==IMG_THUMB)
+      continue;
+    if (!array_key_exists($type, ImageStdParams::get_defined_type_map()))
+      continue;
+    $url = $derivative->get_url();
+    if (isset($added[$url]))
+      continue;
+    $added[$url] = 1;
+    $show_original &= !($derivative->same_as_source());
+    $unique_derivatives[$type]= $derivative;
+  }
+
+  global $page, $template;
+
+  if ($show_original)
+  {
+    $template->assign( 'U_ORIGINAL', $element_info['element_url'] );
+  }
+
+  $template->append('current', array(
+      'selected_derivative' => $selected_derivative,
+      'unique_derivatives' => $unique_derivatives,
+    ), true);
+
+
+  $template->set_filenames(
+    array('default_content'=>'picture_content.tpl')
+    );
+
+  $template->assign( array(
+      'ALT_IMG' => $element_info['file'],
+      'COOKIE_PATH' => cookie_path(),
+      )
+    );
+  return $template->parse( 'default_content', true);
+}
+
+// +-----------------------------------------------------------------------+
+// |                            initialization                             |
+// +-----------------------------------------------------------------------+
+
+// caching first_rank, last_rank, current_rank in the displayed
+// section. This should also help in readability.
+$page['first_rank']   = 0;
+$page['last_rank']    = count($page['items']) - 1;
+$page['current_rank'] = $page['rank_of'][ $page['image_id'] ];
+
+// caching current item : readability purpose
+$page['current_item'] = $page['image_id'];
+
+if ($page['current_rank'] != $page['first_rank'])
+{
+  // caching first & previous item : readability purpose
+  $page['previous_item'] = $page['items'][ $page['current_rank'] - 1 ];
+  $page['first_item'] = $page['items'][ $page['first_rank'] ];
+}
+
+if ($page['current_rank'] != $page['last_rank'])
+{
+  // caching next & last item : readability purpose
+  $page['next_item'] = $page['items'][ $page['current_rank'] + 1 ];
+  $page['last_item'] = $page['items'][ $page['last_rank'] ];
+}
+
+$url_up = duplicate_index_url(
+  array(
+    'start' =>
+      floor($page['current_rank'] / $page['nb_image_page'])
+      * $page['nb_image_page']
+    ),
+  array(
+    'start',
+    )
+  );
+
+$url_self = duplicate_picture_url();
+
+// +-----------------------------------------------------------------------+
+// |                                actions                                |
+// +-----------------------------------------------------------------------+
+
+/**
+ * Actions are favorite adding, user comment deletion, setting the picture
+ * as representative of the current category...
+ *
+ * Actions finish by a redirection
+ */
+
+if (isset($_GET['action']))
+{
+  switch ($_GET['action'])
+  {
+    case 'add_to_favorites' :
+    {
+      $query = '
+INSERT INTO '.FAVORITES_TABLE.'
+  (image_id,user_id)
+  VALUES
+  ('.$page['image_id'].','.$user['id'].')
+;';
+      pwg_query($query);
+
+      redirect($url_self);
+
+      break;
+    }
+    case 'remove_from_favorites' :
+    {
+      $query = '
+DELETE FROM '.FAVORITES_TABLE.'
+  WHERE user_id = '.$user['id'].'
+    AND image_id = '.$page['image_id'].'
+;';
+      pwg_query($query);
+
+      if ('favorites' == $page['section'])
+      {
+        redirect($url_up);
+      }
+      else
+      {
+        redirect($url_self);
+      }
+
+      break;
+    }
+    case 'set_as_representative' :
+    {
+      if (is_admin() and isset($page['category']))
+      {
+        $query = '
+UPDATE '.CATEGORIES_TABLE.'
+  SET representative_picture_id = '.$page['image_id'].'
+  WHERE id = '.$page['category']['id'].'
+;';
+        pwg_query($query);
+
+        include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+        invalidate_user_cache();
+      }
+
+      redirect($url_self);
+
+      break;
+    }
+    case 'add_to_caddie' :
+    {
+      fill_caddie(array($page['image_id']));
+      redirect($url_self);
+      break;
+    }
+    case 'rate' :
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
+      rate_picture($page['image_id'], $_POST['rate']);
+      redirect($url_self);
+    }
+    case 'edit_comment':
+    {
+      include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+      check_input_parameter('comment_to_edit', $_GET, false, PATTERN_ID);
+      $author_id = get_comment_author_id($_GET['comment_to_edit']);
+
+      if (can_manage_comment('edit', $author_id))
+      {
+        if (!empty($_POST['content']))
+        {
+          check_pwg_token();
+          $comment_action = update_user_comment(
+            array(
+              'comment_id' => $_GET['comment_to_edit'],
+              'image_id' => $page['image_id'],
+              'content' => $_POST['content'],
+              'website_url' => @$_POST['website_url'],
+              ),
+            $_POST['key']
+            );
+
+          $perform_redirect = false;
+          switch ($comment_action)
+          {
+            case 'moderate':
+              $_SESSION['page_infos'][] = l10n('An administrator must authorize your comment before it is visible.');
+            case 'validate':
+              $_SESSION['page_infos'][] = l10n('Your comment has been registered');
+              $perform_redirect = true;
+              break;
+            case 'reject':
+              $_SESSION['page_errors'][] = l10n('Your comment has NOT been registered because it did not pass the validation rules');
+              break;
+            default:
+              trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING);
+          }
+
+          if ($perform_redirect)
+          {
+            redirect($url_self);
+          }
+          unset($_POST['content']);
+        }
+
+        $edit_comment = $_GET['comment_to_edit'];
+      }
+      break;
+    }
+    case 'delete_comment' :
+    {
+      check_pwg_token();
+
+      include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+
+      check_input_parameter('comment_to_delete', $_GET, false, PATTERN_ID);
+
+      $author_id = get_comment_author_id($_GET['comment_to_delete']);
+
+      if (can_manage_comment('delete', $author_id))
+      {
+        delete_user_comment($_GET['comment_to_delete']);
+      }
+
+      redirect($url_self);
+    }
+    case 'validate_comment' :
+    {
+      check_pwg_token();
+
+      include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
+
+      check_input_parameter('comment_to_validate', $_GET, false, PATTERN_ID);
+
+      $author_id = get_comment_author_id($_GET['comment_to_validate']);
+
+      if (can_manage_comment('validate', $author_id))
+      {
+        validate_user_comment($_GET['comment_to_validate']);
+      }
+
+      redirect($url_self);
+    }
+
+  }
+}
+
+
+//---------- incrementation of the number of hits
+// don't increment counter if in the Mozilla Firefox prefetch
+if (isset($_SERVER['HTTP_X_MOZ']) and $_SERVER['HTTP_X_MOZ'] == 'prefetch')
+{
+  add_event_handler('allow_increment_element_hit_count', create_function('$b', 'return false;'));
+}
+else
+{
+  // don't increment counter if comming from the same picture (actions)
+  if (pwg_get_session_var('referer_image_id',0) == $page['image_id'])
+  {
+    add_event_handler('allow_increment_element_hit_count', create_function('$b', 'return false;'));
+  }
+  pwg_set_session_var('referer_image_id', $page['image_id']);
+}
+
+// don't increment if adding a comment
+if (trigger_event('allow_increment_element_hit_count', !isset($_POST['content']) ) )
+{
+  $query = '
+UPDATE
+  '.IMAGES_TABLE.'
+  SET hit = hit+1
+  WHERE id = '.$page['image_id'].'
+;';
+  pwg_query($query);
+}
+
+//---------------------------------------------------------- related categories
+$query = '
+SELECT id,uppercats,commentable,visible,status,global_rank
+  FROM '.IMAGE_CATEGORY_TABLE.'
+    INNER JOIN '.CATEGORIES_TABLE.' ON category_id = id
+  WHERE image_id = '.$page['image_id'].'
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'id',
+        'visible_categories' => 'id'
+      ),
+    'AND'
+  ).'
+;';
+$related_categories = array_from_query($query);
+usort($related_categories, 'global_rank_compare');
+//-------------------------first, prev, current, next & last picture management
+$picture = array();
+
+$ids = array($page['image_id']);
+if (isset($page['previous_item']))
+{
+  $ids[] = $page['previous_item'];
+  $ids[] = $page['first_item'];
+}
+if (isset($page['next_item']))
+{
+  $ids[] = $page['next_item'];
+  $ids[] = $page['last_item'];
+}
+
+$query = '
+SELECT *
+  FROM '.IMAGES_TABLE.'
+  WHERE id IN ('.implode(',', $ids).')
+;';
+
+$result = pwg_query($query);
+
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if (isset($page['previous_item']) and $row['id'] == $page['previous_item'])
+  {
+    $i = 'previous';
+  }
+  elseif (isset($page['next_item']) and $row['id'] == $page['next_item'])
+  {
+    $i = 'next';
+  }
+  elseif (isset($page['first_item']) and $row['id'] == $page['first_item'])
+  {
+    $i = 'first';
+  }
+  elseif (isset($page['last_item']) and $row['id'] == $page['last_item'])
+  {
+    $i = 'last';
+  }
+  else
+  {
+    $i = 'current';
+  }
+
+  $row['src_image'] = new SrcImage($row);
+  $row['derivatives'] = DerivativeImage::get_all($row['src_image']);
+
+  if ($i=='current')
+  {
+    $row['element_path'] = get_element_path($row);
+
+    if ( $row['src_image']->is_original() )
+    {// we have a photo
+      if ( $user['enabled_high']=='true' )
+      {
+        $row['element_url'] = $row['src_image']->get_url();
+        $row['download_url'] = get_action_url($row['id'], 'e', true);
+      }
+    }
+    else
+    { // not a pic - need download link
+      $row['download_url'] = $row['element_url'] = get_element_url($row);;
+    }
+  }
+
+  $row['url'] = duplicate_picture_url(
+    array(
+      'image_id' => $row['id'],
+      'image_file' => $row['file'],
+      ),
+    array(
+      'start',
+      )
+    );
+
+  $picture[$i] = $row;
+  $picture[$i]['TITLE'] = render_element_name($row);
+  $picture[$i]['TITLE_ESC'] = str_replace('"', '&quot;', $picture[$i]['TITLE']);
+
+  if ('previous'==$i and $page['previous_item']==$page['first_item'])
+  {
+    $picture['first'] = $picture[$i];
+  }
+  if ('next'==$i and $page['next_item']==$page['last_item'])
+  {
+    $picture['last'] = $picture[$i];
+  }
+}
+
+$slideshow_params = array();
+$slideshow_url_params = array();
+
+if (isset($_GET['slideshow']))
+{
+  $page['slideshow'] = true;
+  $page['meta_robots'] = array('noindex'=>1, 'nofollow'=>1);
+
+  $slideshow_params = decode_slideshow_params($_GET['slideshow']);
+  $slideshow_url_params['slideshow'] = encode_slideshow_params($slideshow_params);
+
+  if ($slideshow_params['play'])
+  {
+    $id_pict_redirect = '';
+    if (isset($page['next_item']))
+    {
+      $id_pict_redirect = 'next';
+    }
+    else
+    {
+      if ($slideshow_params['repeat'] and isset($page['first_item']))
+      {
+        $id_pict_redirect = 'first';
+      }
+    }
+
+    if (!empty($id_pict_redirect))
+    {
+      // $refresh, $url_link and $title are required for creating
+      // an automated refresh page in header.tpl
+      $refresh = $slideshow_params['period'];
+      $url_link = add_url_params(
+          $picture[$id_pict_redirect]['url'],
+          $slideshow_url_params
+        );
+    }
+  }
+}
+else
+{
+  $page['slideshow'] = false;
+}
+if ($page['slideshow'] and $conf['light_slideshow'])
+{
+  $template->set_filenames( array('slideshow' => 'slideshow.tpl'));
+}
+else
+{
+  $template->set_filenames( array('picture' => 'picture.tpl'));
+}
+
+$title =  $picture['current']['TITLE'];
+$title_nb = ($page['current_rank'] + 1).'/'.count($page['items']);
+
+// metadata
+$url_metadata = duplicate_picture_url();
+$url_metadata = add_url_params( $url_metadata, array('metadata'=>null) );
+
+
+// do we have a plugin that can show metadata for something else than images?
+$metadata_showable = trigger_event(
+  'get_element_metadata_available',
+  (
+    ($conf['show_exif'] or $conf['show_iptc'])
+    and !$picture['current']['src_image']->is_mimetype()
+    ),
+  $picture['current']
+  );
+
+if ( $metadata_showable and pwg_get_session_var('show_metadata') )
+{
+  $page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+}
+
+
+$page['body_id'] = 'thePicturePage';
+
+// allow plugins to change what we computed before passing data to template
+$picture = trigger_event('picture_pictures_data', $picture);
+
+//------------------------------------------------------- navigation management
+foreach (array('first','previous','next','last', 'current') as $which_image)
+{
+  if (isset($picture[$which_image]))
+  {
+    $template->assign(
+      $which_image,
+      array_merge(
+        $picture[$which_image],
+        array(
+          'THUMB_SRC' => $picture[$which_image]['derivatives'][IMG_THUMB]->get_url(),
+          // Params slideshow was transmit to navigation buttons
+          'U_IMG' =>
+            add_url_params(
+              $picture[$which_image]['url'], $slideshow_url_params),
+          )
+        )
+      );
+  }
+}
+if ($conf['picture_download_icon'] and !empty($picture['current']['download_url']))
+{
+  $template->append('current', array('U_DOWNLOAD' => $picture['current']['download_url']), true);
+}
+
+
+if ($page['slideshow'])
+{
+  $tpl_slideshow = array();
+
+  //slideshow end
+  $template->assign(
+    array(
+      'U_SLIDESHOW_STOP' => $picture['current']['url'],
+      )
+    );
+
+  foreach (array('repeat', 'play') as $p)
+  {
+    $var_name =
+      'U_'
+      .($slideshow_params[$p] ? 'STOP_' : 'START_')
+      .strtoupper($p);
+
+    $tpl_slideshow[$var_name] =
+          add_url_params(
+            $picture['current']['url'],
+            array('slideshow' =>
+              encode_slideshow_params(
+                array_merge($slideshow_params,
+                  array($p => ! $slideshow_params[$p]))
+                )
+              )
+          );
+  }
+
+  foreach (array('dec', 'inc') as $op)
+  {
+    $new_period = $slideshow_params['period'] + ((($op == 'dec') ? -1 : 1) * $conf['slideshow_period_step']);
+    $new_slideshow_params =
+      correct_slideshow_params(
+        array_merge($slideshow_params,
+                  array('period' => $new_period)));
+
+    if ($new_slideshow_params['period'] === $new_period)
+    {
+      $var_name = 'U_'.strtoupper($op).'_PERIOD';
+      $tpl_slideshow[$var_name] =
+            add_url_params(
+              $picture['current']['url'],
+              array('slideshow' => encode_slideshow_params($new_slideshow_params)
+                  )
+          );
+    }
+  }
+  $template->assign('slideshow', $tpl_slideshow );
+}
+elseif ($conf['picture_slideshow_icon'])
+{
+  $template->assign(
+    array(
+      'U_SLIDESHOW_START' =>
+        add_url_params(
+          $picture['current']['url'],
+          array( 'slideshow'=>''))
+      )
+    );
+}
+
+$template->assign(
+  array(
+    'SECTION_TITLE' => $page['section_title'],
+    'PHOTO' => $title_nb,
+    'IS_HOME' => ('categories'==$page['section'] and !isset($page['category']) ),
+
+    'LEVEL_SEPARATOR' => $conf['level_separator'],
+
+    'U_UP' => $url_up,
+    'DISPLAY_NAV_BUTTONS' => $conf['picture_navigation_icons'],
+    'DISPLAY_NAV_THUMB' => $conf['picture_navigation_thumb']
+    )
+  );
+
+if ($conf['picture_metadata_icon'])
+{
+  $template->assign('U_METADATA', $url_metadata);
+}
+
+
+//------------------------------------------------------- upper menu management
+
+// admin links
+if (is_admin())
+{
+  if (isset($page['category']))
+  {
+    $template->assign(
+      array(
+        'U_SET_AS_REPRESENTATIVE' => add_url_params($url_self,
+                    array('action'=>'set_as_representative')
+                 )
+        )
+      );
+  }
+
+  $url_admin =
+    get_root_url().'admin.php?page=photo-'.$page['image_id']
+    .(isset($page['category']) ? '&amp;cat_id='.$page['category']['id'] : '')
+    ;
+
+  $template->assign(
+    array(
+      'U_CADDIE' => add_url_params($url_self,
+                  array('action'=>'add_to_caddie')
+               ),
+      'U_PHOTO_ADMIN' => $url_admin,
+      )
+    );
+
+  $template->assign('available_permission_levels', get_privacy_level_options());
+}
+
+// favorite manipulation
+if (!is_a_guest() and $conf['picture_favorite_icon'])
+{
+  // verify if the picture is already in the favorite of the user
+  $query = '
+SELECT COUNT(*) AS nb_fav
+  FROM '.FAVORITES_TABLE.'
+  WHERE image_id = '.$page['image_id'].'
+    AND user_id = '.$user['id'].'
+;';
+  $row = pwg_db_fetch_assoc( pwg_query($query) );
+	$is_favorite = $row['nb_fav'] != 0;
+
+  $template->assign(
+    'favorite',
+    array(
+			'IS_FAVORITE' => $is_favorite,
+      'U_FAVORITE'    => add_url_params(
+        $url_self,
+        array('action'=> !$is_favorite ? 'add_to_favorites' : 'remove_from_favorites' )
+        ),
+      )
+    );
+}
+
+//--------------------------------------------------------- picture information
+// legend
+if (isset($picture['current']['comment'])
+    and !empty($picture['current']['comment']))
+{
+  $template->assign(
+      'COMMENT_IMG',
+        trigger_event('render_element_description',
+          $picture['current']['comment'],
+          'picture_page_element_description'
+          )
+      );
+}
+
+// author
+if (!empty($picture['current']['author']))
+{
+  $infos['INFO_AUTHOR'] = $picture['current']['author'];
+}
+
+// creation date
+if (!empty($picture['current']['date_creation']))
+{
+  $val = format_date($picture['current']['date_creation']);
+  $url = make_index_url(
+    array(
+      'chronology_field'=>'created',
+      'chronology_style'=>'monthly',
+      'chronology_view'=>'list',
+      'chronology_date' => explode('-', substr($picture['current']['date_creation'], 0, 10))
+      )
+    );
+  $infos['INFO_CREATION_DATE'] =
+    '<a href="'.$url.'" rel="nofollow">'.$val.'</a>';
+}
+
+// date of availability
+$val = format_date($picture['current']['date_available']);
+$url = make_index_url(
+  array(
+    'chronology_field'=>'posted',
+    'chronology_style'=>'monthly',
+    'chronology_view'=>'list',
+    'chronology_date' => explode(
+      '-',
+      substr($picture['current']['date_available'], 0, 10)
+      )
+    )
+  );
+$infos['INFO_POSTED_DATE'] = '<a href="'.$url.'" rel="nofollow">'.$val.'</a>';
+
+// size in pixels
+if ($picture['current']['src_image']->is_original() and isset($picture['current']['width']) )
+{
+  $infos['INFO_DIMENSIONS'] =
+    $picture['current']['width'].'*'.$picture['current']['height'];
+}
+
+// filesize
+if (!empty($picture['current']['filesize']))
+{
+  $infos['INFO_FILESIZE'] = l10n('%d Kb', $picture['current']['filesize']);
+}
+
+// number of visits
+$infos['INFO_VISITS'] = $picture['current']['hit'];
+
+// file
+$infos['INFO_FILE'] = $picture['current']['file'];
+
+$template->assign($infos);
+$template->assign('display_info', unserialize($conf['picture_informations']));
+
+// related tags
+$tags = get_common_tags( array($page['image_id']), -1);
+if ( count($tags) )
+{
+  foreach ($tags as $tag)
+  {
+    $template->append(
+        'related_tags',
+        array_merge( $tag,
+          array(
+            'URL' => make_index_url(
+                      array(
+                        'tags' => array($tag)
+                        )
+                      ),
+            'U_TAG_IMAGE' => duplicate_picture_url(
+                      array(
+                        'section' => 'tags',
+                        'tags' => array($tag)
+                        )
+                    )
+          )
+        )
+      );
+  }
+}
+
+// related categories
+if ( count($related_categories)==1 and
+    isset($page['category']) and
+    $related_categories[0]['id']==$page['category']['id'] )
+{ // no need to go to db, we have all the info
+  $template->append(
+      'related_categories',
+      get_cat_display_name( $page['category']['upper_names'] )
+    );
+}
+else
+{ // use only 1 sql query to get names for all related categories
+  $ids = array();
+  foreach ($related_categories as $category)
+  {// add all uppercats to $ids
+    $ids = array_merge($ids, explode(',', $category['uppercats']) );
+  }
+  $ids = array_unique($ids);
+  $query = '
+SELECT id, name, permalink
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.implode(',',$ids).')';
+  $cat_map = hash_from_query($query, 'id');
+  foreach ($related_categories as $category)
+  {
+    $cats = array();
+    foreach ( explode(',', $category['uppercats']) as $id )
+    {
+      $cats[] = $cat_map[$id];
+    }
+    $template->append('related_categories', get_cat_display_name($cats) );
+  }
+}
+
+// maybe someone wants a special display (call it before page_header so that
+// they can add stylesheets)
+$element_content = trigger_event(
+  'render_element_content',
+  '',
+  $picture['current']
+  );
+$template->assign( 'ELEMENT_CONTENT', $element_content );
+
+if (isset($picture['next'])
+    and $picture['next']['src_image']->is_original()
+    and $template->get_template_vars('U_PREFETCH') == null
+    and strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome/') === false)
+{
+  $template->assign(
+    'U_PREFETCH',
+    $picture['next']['derivatives'][pwg_get_session_var('picture_deriv', $conf['derivative_default_size'])]->get_url()
+    );
+}
+
+$template->assign(
+  'U_CANONICAL',
+  make_picture_url(
+    array(
+      'image_id' => $picture['current']['id'],
+      'image_file' => $picture['current']['file'])
+    )
+  );
+
+// +-----------------------------------------------------------------------+
+// |                               sub pages                               |
+// +-----------------------------------------------------------------------+
+
+include(PHPWG_ROOT_PATH.'include/picture_rate.inc.php');
+if ($conf['activate_comments'])
+{
+  include(PHPWG_ROOT_PATH.'include/picture_comment.inc.php');
+}
+if ($metadata_showable and pwg_get_session_var('show_metadata') <> null )
+{
+  include(PHPWG_ROOT_PATH.'include/picture_metadata.inc.php');
+}
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if ($conf['picture_menu'] AND (!isset($themeconf['hide_menu_on']) OR !in_array('thePicturePage', $themeconf['hide_menu_on'])))
+{
+  if (!isset($page['start'])) $page['start'] = 0;
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_picture');
+flush_page_messages();
+if ($page['slideshow'] and $conf['light_slideshow'])
+{
+  $template->pparse('slideshow');
+}
+else
+{
+  $template->parse_picture_buttons();
+  $template->pparse('picture');
+}
+//------------------------------------------------------------ log informations
+pwg_log($picture['current']['id'], 'picture');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/admin.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/admin.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/admin.php	(revision 25596)
@@ -0,0 +1,151 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+include_once(LOCALEDIT_PATH.'include/functions.inc.php');
+load_language('plugin.lang', LOCALEDIT_PATH);
+$my_base_url = get_root_url().'admin.php?page=plugin-'.basename(dirname(__FILE__));
+
+// +-----------------------------------------------------------------------+
+// |                            Tabssheet
+// +-----------------------------------------------------------------------+
+
+if (empty($conf['LocalFilesEditor_tabs']))
+{
+  $conf['LocalFilesEditor_tabs'] = array('localconf', 'css', 'tpl', 'lang', 'plug');
+}
+
+$page['tab'] = isset($_GET['tab']) ? $_GET['tab'] : $conf['LocalFilesEditor_tabs'][0];
+
+if (!in_array($page['tab'], $conf['LocalFilesEditor_tabs'])) die('Hacking attempt!');
+
+$tabsheet = new tabsheet();
+foreach ($conf['LocalFilesEditor_tabs'] as $tab)
+{
+  $tabsheet->add($tab, l10n('locfiledit_onglet_'.$tab), $my_base_url.'-'.$tab);
+}
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+include_once(LOCALEDIT_PATH.'include/'.$page['tab'].'.inc.php');
+
+// +-----------------------------------------------------------------------+
+// |                           Load backup file
+// +-----------------------------------------------------------------------+
+if (isset($_POST['restore']))
+{
+  $content_file = file_get_contents(get_bak_file($edited_file));
+  $page['infos'][] = l10n('locfiledit_bak_loaded1');
+  $page['infos'][] = l10n('locfiledit_bak_loaded2');
+}
+
+// +-----------------------------------------------------------------------+
+// |                            Save file
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']))
+{
+  check_pwg_token();
+
+  if (!is_webmaster())
+  {
+    $page['errors'][] = l10n('locfiledit_webmaster_only');
+  }
+  else
+  {
+    $content_file = stripslashes($_POST['text']);
+    if (get_extension($edited_file) == 'php')
+    {
+      $content_file = eval_syntax($content_file);
+    }
+    if ($content_file === false)
+    {
+      $page['errors'][] = l10n('locfiledit_syntax_error');
+    }
+    else
+    {
+      if ($page['tab'] == 'plug' and !is_dir(PHPWG_PLUGINS_PATH . 'PersonalPlugin'))
+      {
+        @mkdir(PHPWG_PLUGINS_PATH . "PersonalPlugin");
+      }
+      if (file_exists($edited_file))
+      {
+        @copy($edited_file, get_bak_file($edited_file));
+        $page['infos'][] = l10n('locfiledit_saved_bak', substr(get_bak_file($edited_file), 2));
+      }
+      
+      if ($file = @fopen($edited_file , "w"))
+      {
+        @fwrite($file , $content_file);
+        @fclose($file);
+        array_unshift($page['infos'], l10n('locfiledit_save_config'));
+        $template->delete_compiled_templates();
+      }
+      else
+      {
+        $page['errors'][] = l10n('locfiledit_cant_save');
+      }
+    }
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                            template initialization
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array(
+    'plugin_admin_content' => dirname(__FILE__) . '/template/admin.tpl'));
+
+if (!empty($edited_file))
+{
+  if (!empty($page['errors']))
+	{
+    $content_file = stripslashes($_POST['text']);
+  }
+  $template->assign('zone_edit',
+    array(
+      'EDITED_FILE' => $edited_file,
+      'CONTENT_FILE' => htmlspecialchars($content_file),
+      'FILE_NAME' => trim($edited_file, './\\')
+    )
+  );
+  if (file_exists(get_bak_file($edited_file)))
+  {
+    $template->assign('restore', true);
+  }
+  if (file_exists($edited_file))
+  {
+    $template->assign('restore_infos', true);
+  }
+}
+
+$template->assign(array(
+  'F_ACTION' => PHPWG_ROOT_PATH.'admin.php?page=plugin-LocalFilesEditor-'.$page['tab'],
+  'LOCALEDIT_PATH' => LOCALEDIT_PATH,
+  'PWG_TOKEN' => get_pwg_token(),
+  'CODEMIRROR_MODE' => @$codemirror_mode
+  )
+);
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.css	(revision 25596)
@@ -0,0 +1,53 @@
+.CodeMirror {
+  overflow: auto;
+  height: 300px;
+  line-height: 1em;
+  font-family: monospace;
+  _position: relative; /* IE6 hack */
+}
+
+.CodeMirror-gutter {
+  position: absolute; left: 0; top: 0;
+  background-color: #f7f7f7;
+  border-right: 1px solid #eee;
+  min-width: 2em;
+  height: 100%;
+}
+.CodeMirror-gutter-text {
+  color: #aaa;
+  text-align: right;
+  padding: .4em .2em .4em .4em;
+}
+.CodeMirror-lines {
+  padding: .4em;
+}
+
+.CodeMirror pre {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  border-radius: 0;
+  border-width: 0; margin: 0; padding: 0; background: transparent;
+  font-family: inherit;
+}
+
+.CodeMirror-cursor {
+  z-index: 10;
+  position: absolute;
+  visibility: hidden;
+  border-left: 1px solid black !important;
+}
+.CodeMirror-focused .CodeMirror-cursor {
+  visibility: visible;
+}
+
+span.CodeMirror-selected {
+  background: #ccc !important;
+  color: HighlightText !important;
+}
+.CodeMirror-focused span.CodeMirror-selected {
+  background: Highlight !important;
+}
+
+.CodeMirror-matchingbracket {color: #0f0 !important;}
+.CodeMirror-nonmatchingbracket {color: #f22 !important;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/codemirror.js	(revision 25596)
@@ -0,0 +1,1915 @@
+// All functions that need access to the editor's state live inside
+// the CodeMirror function. Below that, at the bottom of the file,
+// some utilities are defined.
+
+// CodeMirror is the only global var we claim
+var CodeMirror = (function() {
+  // This is the function that produces an editor instance. It's
+  // closure is used to store the editor state.
+  function CodeMirror(place, givenOptions) {
+    // Determine effective options based on given values and defaults.
+    var options = {}, defaults = CodeMirror.defaults;
+    for (var opt in defaults)
+      if (defaults.hasOwnProperty(opt))
+        options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt];
+
+    // The element in which the editor lives. Takes care of scrolling
+    // (if enabled).
+    var wrapper = document.createElement("div");
+    wrapper.className = "CodeMirror";
+    // This mess creates the base DOM structure for the editor.
+    wrapper.innerHTML =
+      '<div style="position: relative">' + // Set to the height of the text, causes scrolling
+        '<pre style="position: relative; height: 0; visibility: hidden; overflow: hidden;">' + // To measure line/char size
+           '<span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span></pre>' +
+        '<div style="position: relative">' + // Moved around its parent to cover visible view
+          '<div class="CodeMirror-gutter"><div class="CodeMirror-gutter-text"></div></div>' +
+          '<div style="overflow: hidden; position: absolute; width: 0; left: 0">' + // Wraps and hides input textarea
+            '<textarea style="height: 1px; position: absolute; width: 1px;" wrap="off"></textarea></div>' +
+          // Provides positioning relative to (visible) text origin
+          '<div class="CodeMirror-lines"><div style="position: relative">' +
+            '<pre class="CodeMirror-cursor">&#160;</pre>' + // Absolutely positioned blinky cursor
+            '<div></div></div></div></div></div>'; // This DIV contains the actual code
+    if (place.appendChild) place.appendChild(wrapper); else place(wrapper);
+    // I've never seen more elegant code in my life.
+    var code = wrapper.firstChild, measure = code.firstChild, mover = measure.nextSibling,
+        gutter = mover.firstChild, gutterText = gutter.firstChild,
+        inputDiv = gutter.nextSibling, input = inputDiv.firstChild,
+        lineSpace = inputDiv.nextSibling.firstChild, cursor = lineSpace.firstChild, lineDiv = cursor.nextSibling;
+    if (options.tabindex != null) input.tabindex = options.tabindex;
+    if (!options.gutter && !options.lineNumbers) gutter.style.display = "none";
+
+    // Delayed object wrap timeouts, making sure only one is active. blinker holds an interval.
+    var poll = new Delayed(), highlight = new Delayed(), blinker;
+
+    // mode holds a mode API object. lines an array of Line objects
+    // (see Line constructor), work an array of lines that should be
+    // parsed, and history the undo history (instance of History
+    // constructor).
+    var mode, lines = [new Line("")], work, history = new History(), focused;
+    loadMode();
+    // The selection. These are always maintained to point at valid
+    // positions. Inverted is used to remember that the user is
+    // selecting bottom-to-top.
+    var sel = {from: {line: 0, ch: 0}, to: {line: 0, ch: 0}, inverted: false};
+    // Selection-related flags. shiftSelecting obviously tracks
+    // whether the user is holding shift. reducedSelection is a hack
+    // to get around the fact that we can't create inverted
+    // selections. See below.
+    var shiftSelecting, reducedSelection;
+    // Variables used by startOperation/endOperation to track what
+    // happened during the operation.
+    var updateInput, changes, textChanged, selectionChanged, leaveInputAlone;
+    // Current visible range (may be bigger than the view window).
+    var showingFrom = 0, showingTo = 0, lastHeight = 0, curKeyId = null;
+    // editing will hold an object describing the things we put in the
+    // textarea, to help figure out whether something changed.
+    // bracketHighlighted is used to remember that a backet has been
+    // marked.
+    var editing, bracketHighlighted;
+
+    // Initialize the content. Somewhat hacky (delayed prepareInput)
+    // to work around browser issues.
+    operation(function(){setValue(options.value || ""); updateInput = false;})();
+    setTimeout(prepareInput, 20);
+
+    // Register our event handlers.
+    connect(wrapper, "mousedown", operation(onMouseDown));
+    // Gecko browsers fire contextmenu *after* opening the menu, at
+    // which point we can't mess with it anymore. Context menu is
+    // handled in onMouseDown for Gecko.
+    if (!gecko) connect(wrapper, "contextmenu", operation(onContextMenu));
+    connect(code, "dblclick", operation(onDblClick));
+    connect(wrapper, "scroll", function() {updateDisplay([]); if (options.onScroll) options.onScroll(instance);});
+    connect(window, "resize", function() {updateDisplay(true);});
+    connect(input, "keyup", operation(onKeyUp));
+    connect(input, "keydown", operation(onKeyDown));
+    connect(input, "keypress", operation(onKeyPress));
+    connect(input, "focus", onFocus);
+    connect(input, "blur", onBlur);
+
+    connect(wrapper, "dragenter", function(e){e.stop();});
+    connect(wrapper, "dragover", function(e){e.stop();});
+    connect(wrapper, "drop", operation(onDrop));
+    connect(wrapper, "paste", function(){input.focus(); fastPoll();});
+    connect(input, "paste", function(){fastPoll();});
+    connect(input, "cut", function(){fastPoll();});
+
+    if (document.activeElement == input) onFocus();
+    else onBlur();
+
+    function isLine(l) {return l >= 0 && l < lines.length;}
+    // The instance object that we'll return. Mostly calls out to
+    // local functions in the CodeMirror function. Some do some extra
+    // range checking and/or clipping. operation is used to wrap the
+    // call so that changes it makes are tracked, and the display is
+    // updated afterwards.
+    var instance = {
+      getValue: getValue,
+      setValue: operation(setValue),
+      getSelection: getSelection,
+      replaceSelection: operation(replaceSelection),
+      focus: function(){input.focus(); onFocus(); fastPoll();},
+      setOption: function(option, value) {
+        options[option] = value;
+        if (option == "lineNumbers" || option == "gutter") gutterChanged();
+        else if (option == "mode" || option == "indentUnit") loadMode();
+      },
+      getOption: function(option) {return options[option];},
+      undo: operation(undo),
+      redo: operation(redo),
+      indentLine: operation(function(n) {if (isLine(n)) indentLine(n, "smart");}),
+      historySize: function() {return {undo: history.done.length, redo: history.undone.length};},
+      matchBrackets: operation(function(){matchBrackets(true);}),
+      getTokenAt: function(pos) {
+        pos = clipPos(pos);
+        return lines[pos.line].getTokenAt(mode, getStateBefore(pos.line), pos.ch);
+      },
+      cursorCoords: function(start){
+        if (start == null) start = sel.inverted;
+        return pageCoords(start ? sel.from : sel.to);
+      },
+      charCoords: function(pos){return pageCoords(clipPos(pos));},
+      coordsChar: function(coords) {
+        var off = eltOffset(lineSpace);
+        var line = Math.min(showingTo - 1, showingFrom + Math.floor(coords.y / lineHeight()));
+        return clipPos({line: line, ch: charFromX(clipLine(line), coords.x)});
+      },
+      getSearchCursor: function(query, pos, caseFold) {return new SearchCursor(query, pos, caseFold);},
+      markText: operation(function(a, b, c){return operation(markText(a, b, c));}),
+      setMarker: addGutterMarker,
+      clearMarker: removeGutterMarker,
+      setLineClass: operation(setLineClass),
+      lineInfo: lineInfo,
+      addWidget: function(pos, node, scroll) {
+        var pos = localCoords(clipPos(pos), true);
+        node.style.top = (showingFrom * lineHeight() + pos.yBot + paddingTop()) + "px";
+        node.style.left = (pos.x + paddingLeft()) + "px";
+        code.appendChild(node);
+        if (scroll)
+          scrollIntoView(pos.x, pos.yBot, pos.x + node.offsetWidth, pos.yBot + node.offsetHeight);
+      },
+
+      lineCount: function() {return lines.length;},
+      getCursor: function(start) {
+        if (start == null) start = sel.inverted;
+        return copyPos(start ? sel.from : sel.to);
+      },
+      somethingSelected: function() {return !posEq(sel.from, sel.to);},
+      setCursor: operation(function(line, ch) {
+        if (ch == null && typeof line.line == "number") setCursor(line.line, line.ch);
+        else setCursor(line, ch);
+      }),
+      setSelection: operation(function(from, to) {setSelection(clipPos(from), clipPos(to || from));}),
+      getLine: function(line) {if (isLine(line)) return lines[line].text;},
+      setLine: operation(function(line, text) {
+        if (isLine(line)) replaceRange(text, {line: line, ch: 0}, {line: line, ch: lines[line].text.length});
+      }),
+      removeLine: operation(function(line) {
+        if (isLine(line)) replaceRange("", {line: line, ch: 0}, clipPos({line: line+1, ch: 0}));
+      }),
+      replaceRange: operation(replaceRange),
+      getRange: function(from, to) {return getRange(clipPos(from), clipPos(to));},
+
+      operation: function(f){return operation(f)();},
+      refresh: function(){updateDisplay(true);},
+      getInputField: function(){return input;},
+      getWrapperElement: function(){return wrapper;}
+    };
+
+    function setValue(code) {
+      history = null;
+      var top = {line: 0, ch: 0};
+      updateLines(top, {line: lines.length - 1, ch: lines[lines.length-1].text.length},
+                  splitLines(code), top, top);
+      history = new History();
+    }
+    function getValue(code) {
+      var text = [];
+      for (var i = 0, l = lines.length; i < l; ++i)
+        text.push(lines[i].text);
+      return text.join("\n");
+    }
+
+    function onMouseDown(e) {
+      // First, see if this is a click in the gutter
+      for (var n = e.target(); n != wrapper; n = n.parentNode)
+        if (n.parentNode == gutterText) {
+          if (options.onGutterClick)
+            options.onGutterClick(instance, indexOf(gutterText.childNodes, n) + showingFrom);
+          return e.stop();
+        }
+
+      if (gecko && e.button() == 3) onContextMenu(e);
+      if (e.button() != 1) return;
+      // For button 1, if it was clicked inside the editor
+      // (posFromMouse returning non-null), we have to adjust the
+      // selection.
+      var start = posFromMouse(e), last = start, going;
+      if (!start) {if (e.target() == wrapper) e.stop(); return;}
+      setCursor(start.line, start.ch, false);
+
+      if (!focused) onFocus();
+      e.stop();
+      // And then we have to see if it's a drag event, in which case
+      // the dragged-over text must be selected.
+      function end() {
+        input.focus();
+        updateInput = true;
+        move(); up();
+      }
+      function extend(e) {
+        var cur = posFromMouse(e, true);
+        if (cur && !posEq(cur, last)) {
+          if (!focused) onFocus();
+          last = cur;
+          setSelection(start, cur);
+          updateInput = false;
+          var visible = visibleLines();
+          if (cur.line >= visible.to || cur.line < visible.from)
+            going = setTimeout(operation(function(){extend(e);}), 150);
+        }
+      }
+
+      var move = connect(document, "mousemove", operation(function(e) {
+        clearTimeout(going);
+        e.stop();
+        extend(e);
+      }), true);
+      var up = connect(document, "mouseup", operation(function(e) {
+        clearTimeout(going);
+        var cur = posFromMouse(e);
+        if (cur) setSelection(start, cur);
+        e.stop();
+        end();
+      }), true);
+    }
+    function onDblClick(e) {
+      var pos = posFromMouse(e);
+      if (!pos) return;
+      selectWordAt(pos);
+      e.stop();
+    }
+    function onDrop(e) {
+      var pos = posFromMouse(e, true), files = e.e.dataTransfer.files;
+      if (!pos || options.readOnly) return;
+      if (files && files.length && window.FileReader && window.File) {
+        var n = files.length, text = Array(n), read = 0;
+        for (var i = 0; i < n; ++i) loadFile(files[i], i);
+        function loadFile(file, i) {
+          var reader = new FileReader;
+          reader.onload = function() {
+            text[i] = reader.result;
+            if (++read == n) replaceRange(text.join(""), clipPos(pos), clipPos(pos));
+          };
+          reader.readAsText(file);
+        }
+      }
+      else {
+        try {
+          var text = e.e.dataTransfer.getData("Text");
+          if (text) replaceRange(text, pos, pos);
+        }
+        catch(e){}
+      }
+    }
+    function onKeyDown(e) {
+      if (!focused) onFocus();
+
+      var code = e.e.keyCode;
+      // Tries to detect ctrl on non-mac, cmd on mac.
+      var mod = (mac ? e.e.metaKey : e.e.ctrlKey) && !e.e.altKey, anyMod = e.e.ctrlKey || e.e.altKey || e.e.metaKey;
+      if (code == 16 || e.e.shiftKey) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from);
+      else shiftSelecting = null;
+      // First give onKeyEvent option a chance to handle this.
+      if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return;
+
+      if (code == 33 || code == 34) {scrollPage(code == 34); return e.stop();} // page up/down
+      if (mod && (code == 36 || code == 35)) {scrollEnd(code == 36); return e.stop();} // ctrl-home/end
+      if (mod && code == 65) {selectAll(); return e.stop();} // ctrl-a
+      if (!options.readOnly) {
+        if (!anyMod && code == 13) {return;} // enter
+        if (!anyMod && code == 9 && handleTab(e.e.shiftKey)) return e.stop(); // tab
+        if (mod && code == 90) {undo(); return e.stop();} // ctrl-z
+        if (mod && ((e.e.shiftKey && code == 90) || code == 89)) {redo(); return e.stop();} // ctrl-shift-z, ctrl-y
+      }
+
+      // Key id to use in the movementKeys map. We also pass it to
+      // fastPoll in order to 'self learn'. We need this because
+      // reducedSelection, the hack where we collapse the selection to
+      // its start when it is inverted and a movement key is pressed
+      // (and later restore it again), shouldn't be used for
+      // non-movement keys.
+      curKeyId = (mod ? "c" : "") + code;
+      if (sel.inverted && movementKeys.hasOwnProperty(curKeyId)) {
+        var range = selRange(input);
+        if (range) {
+          reducedSelection = {anchor: range.start};
+          setSelRange(input, range.start, range.start);
+        }
+      }
+      fastPoll(curKeyId);
+    }
+    function onKeyUp(e) {
+      if (reducedSelection) {
+        reducedSelection = null;
+        updateInput = true;
+      }
+      if (e.e.keyCode == 16) shiftSelecting = null;
+    }
+    function onKeyPress(e) {
+      if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return;
+      if (options.electricChars && mode.electricChars) {
+        var ch = String.fromCharCode(e.e.charCode == null ? e.e.keyCode : e.e.charCode);
+        if (mode.electricChars.indexOf(ch) > -1)
+          setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 50);
+      }
+      var code = e.e.keyCode;
+      // Re-stop tab and enter. Necessary on some browsers.
+      if (code == 13) {handleEnter(); e.stop();}
+      else if (code == 9 && options.tabMode != "default") e.stop();
+      else fastPoll(curKeyId);
+    }
+
+    function onFocus() {
+      if (!focused && options.onFocus) options.onFocus(instance);
+      focused = true;
+      slowPoll();
+      if (wrapper.className.search(/\bCodeMirror-focused\b/) == -1)
+        wrapper.className += " CodeMirror-focused";
+      restartBlink();
+    }
+    function onBlur() {
+      if (focused && options.onBlur) options.onBlur(instance);
+      clearInterval(blinker);
+      shiftSelecting = null;
+      focused = false;
+      wrapper.className = wrapper.className.replace(" CodeMirror-focused", "");
+    }
+
+    // Replace the range from from to to by the strings in newText.
+    // Afterwards, set the selection to selFrom, selTo.
+    function updateLines(from, to, newText, selFrom, selTo) {
+      if (history) {
+        var old = [];
+        for (var i = from.line, e = to.line + 1; i < e; ++i) old.push(lines[i].text);
+        history.addChange(from.line, newText.length, old);
+        while (history.done.length > options.undoDepth) history.done.shift();
+      }
+      updateLinesNoUndo(from, to, newText, selFrom, selTo);
+    }
+    function unredoHelper(from, to) {
+      var change = from.pop();
+      if (change) {
+        var replaced = [], end = change.start + change.added;
+        for (var i = change.start; i < end; ++i) replaced.push(lines[i].text);
+        to.push({start: change.start, added: change.old.length, old: replaced});
+        var pos = clipPos({line: change.start + change.old.length - 1,
+                           ch: editEnd(replaced[replaced.length-1], change.old[change.old.length-1])});
+        updateLinesNoUndo({line: change.start, ch: 0}, {line: end - 1, ch: lines[end-1].text.length}, change.old, pos, pos);
+      }
+    }
+    function undo() {unredoHelper(history.done, history.undone);}
+    function redo() {unredoHelper(history.undone, history.done);}
+
+    function updateLinesNoUndo(from, to, newText, selFrom, selTo) {
+      var nlines = to.line - from.line, firstLine = lines[from.line], lastLine = lines[to.line];
+      // First adjust the line structure, taking some care to leave highlighting intact.
+      if (firstLine == lastLine) {
+        if (newText.length == 1)
+          firstLine.replace(from.ch, to.ch, newText[0]);
+        else {
+          lastLine = firstLine.split(to.ch, newText[newText.length-1]);
+          var spliceargs = [from.line + 1, nlines];
+          firstLine.replace(from.ch, firstLine.text.length, newText[0]);
+          for (var i = 1, e = newText.length - 1; i < e; ++i) spliceargs.push(new Line(newText[i]));
+          spliceargs.push(lastLine);
+          lines.splice.apply(lines, spliceargs);
+        }
+      }
+      else if (newText.length == 1) {
+        firstLine.replace(from.ch, firstLine.text.length, newText[0] + lastLine.text.slice(to.ch));
+        lines.splice(from.line + 1, nlines);
+      }
+      else {
+        var spliceargs = [from.line + 1, nlines - 1];
+        firstLine.replace(from.ch, firstLine.text.length, newText[0]);
+        lastLine.replace(0, to.ch, newText[newText.length-1]);
+        for (var i = 1, e = newText.length - 1; i < e; ++i) spliceargs.push(new Line(newText[i]));
+        lines.splice.apply(lines, spliceargs);
+      }
+
+      // Add these lines to the work array, so that they will be
+      // highlighted. Adjust work lines if lines were added/removed.
+      var newWork = [], lendiff = newText.length - nlines - 1;
+      for (var i = 0, l = work.length; i < l; ++i) {
+        var task = work[i];
+        if (task < from.line) newWork.push(task);
+        else if (task > to.line) newWork.push(task + lendiff);
+      }
+      if (newText.length) newWork.push(from.line);
+      work = newWork;
+      startWorker(100);
+      // Remember that these lines changed, for updating the display
+      changes.push({from: from.line, to: to.line + 1, diff: lendiff});
+      textChanged = true;
+
+      // Update the selection
+      function updateLine(n) {return n <= Math.min(to.line, to.line + lendiff) ? n : n + lendiff;}
+      setSelection(selFrom, selTo, updateLine(sel.from.line), updateLine(sel.to.line));
+
+      // Make sure the scroll-size div has the correct height.
+      code.style.height = (lines.length * lineHeight() + 2 * paddingTop()) + "px";
+    }
+
+    function replaceRange(code, from, to) {
+      from = clipPos(from);
+      if (!to) to = from; else to = clipPos(to);
+      code = splitLines(code);
+      function adjustPos(pos) {
+        if (posLess(pos, from)) return pos;
+        if (!posLess(to, pos)) return end;
+        var line = pos.line + code.length - (to.line - from.line) - 1;
+        var ch = pos.ch;
+        if (pos.line == to.line)
+          ch += code[code.length-1].length - (to.ch - (to.line == from.line ? from.ch : 0));
+        return {line: line, ch: ch};
+      }
+      var end;
+      replaceRange1(code, from, to, function(end1) {
+        end = end1;
+        return {from: adjustPos(sel.from), to: adjustPos(sel.to)};
+      });
+      return end;
+    }
+    function replaceSelection(code, collapse) {
+      replaceRange1(splitLines(code), sel.from, sel.to, function(end) {
+        if (collapse == "end") return {from: end, to: end};
+        else if (collapse == "start") return {from: sel.from, to: sel.from};
+        else return {from: sel.from, to: end};
+      });
+    }
+    function replaceRange1(code, from, to, computeSel) {
+      var endch = code.length == 1 ? code[0].length + from.ch : code[code.length-1].length;
+      var newSel = computeSel({line: from.line + code.length - 1, ch: endch});
+      updateLines(from, to, code, newSel.from, newSel.to);
+    }
+
+    function getRange(from, to) {
+      var l1 = from.line, l2 = to.line;
+      if (l1 == l2) return lines[l1].text.slice(from.ch, to.ch);
+      var code = [lines[l1].text.slice(from.ch)];
+      for (var i = l1 + 1; i < l2; ++i) code.push(lines[i].text);
+      code.push(lines[l2].text.slice(0, to.ch));
+      return code.join("\n");
+    }
+    function getSelection() {
+      return getRange(sel.from, sel.to);
+    }
+
+    var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll
+    function slowPoll() {
+      if (pollingFast) return;
+      poll.set(2000, function() {
+        startOperation();
+        readInput();
+        if (focused) slowPoll();
+        endOperation();
+      });
+    }
+    function fastPoll(keyId) {
+      var missed = false;
+      pollingFast = true;
+      function p() {
+        startOperation();
+        var changed = readInput();
+        if (changed == "moved" && keyId) movementKeys[keyId] = true;
+        if (!changed && !missed) {missed = true; poll.set(80, p);}
+        else {pollingFast = false; slowPoll();}
+        endOperation();
+      }
+      poll.set(20, p);
+    }
+
+    // Inspects the textarea, compares its state (content, selection)
+    // to the data in the editing variable, and updates the editor
+    // content or cursor if something changed.
+    function readInput() {
+      var changed = false, text = input.value, sr = selRange(input);
+      if (!sr) return false;
+      var changed = editing.text != text, rs = reducedSelection;
+      var moved = changed || sr.start != editing.start || sr.end != (rs ? editing.start : editing.end);
+      if (reducedSelection && !moved && sel.from.line == 0 && sel.from.ch == 0)
+        reducedSelection = null;
+      else if (!moved) return false;
+      if (changed) {
+        shiftSelecting = reducedSelection = null;
+        if (options.readOnly) {updateInput = true; return "changed";}
+      }
+
+      // Compute selection start and end based on start/end offsets in textarea
+      function computeOffset(n, startLine) {
+        var pos = 0;
+        for (;;) {
+          var found = text.indexOf("\n", pos);
+          if (found == -1 || (text.charAt(found-1) == "\r" ? found - 1 : found) >= n)
+            return {line: startLine, ch: n - pos};
+          ++startLine;
+          pos = found + 1;
+        }
+      }
+      var from = computeOffset(sr.start, editing.from),
+          to = computeOffset(sr.end, editing.from);
+      // Here we have to take the reducedSelection hack into account,
+      // so that you can, for example, press shift-up at the start of
+      // your selection and have the right thing happen.
+      if (rs) {
+        from = sr.start == rs.anchor ? to : from;
+        to = shiftSelecting ? sel.to : sr.start == rs.anchor ? from : to;
+        if (!posLess(from, to)) {
+          reducedSelection = null;
+          sel.inverted = false;
+          var tmp = from; from = to; to = tmp;
+        }
+      }
+
+      // In some cases (cursor on same line as before), we don't have
+      // to update the textarea content at all.
+      if (from.line == to.line && from.line == sel.from.line && from.line == sel.to.line && !shiftSelecting)
+        updateInput = false;
+
+      // Magic mess to extract precise edited range from the changed
+      // string.
+      if (changed) {
+        var start = 0, end = text.length, len = Math.min(end, editing.text.length);
+        var c, line = editing.from, nl = -1;
+        while (start < len && (c = text.charAt(start)) == editing.text.charAt(start)) {
+          ++start;
+          if (c == "\n") {line++; nl = start;}
+        }
+        var ch = nl > -1 ? start - nl : start, endline = editing.to - 1, edend = editing.text.length;
+        for (;;) {
+          c = editing.text.charAt(edend);
+          if (c == "\n") endline--;
+          if (text.charAt(end) != c) {++end; ++edend; break;}
+          if (edend <= start || end <= start) break;
+          --end; --edend;
+        }
+        var nl = editing.text.lastIndexOf("\n", edend - 1), endch = nl == -1 ? edend : edend - nl - 1;
+        updateLines({line: line, ch: ch}, {line: endline, ch: endch}, splitLines(text.slice(start, end)), from, to);
+        if (line != endline || from.line != line) updateInput = true;
+      }
+      else setSelection(from, to);
+
+      editing.text = text; editing.start = sr.start; editing.end = sr.end;
+      return changed ? "changed" : moved ? "moved" : false;
+    }
+
+    // Set the textarea content and selection range to match the
+    // editor state.
+    function prepareInput() {
+      var text = [];
+      var from = Math.max(0, sel.from.line - 1), to = Math.min(lines.length, sel.to.line + 2);
+      for (var i = from; i < to; ++i) text.push(lines[i].text);
+      text = input.value = text.join(lineSep);
+      var startch = sel.from.ch, endch = sel.to.ch;
+      for (var i = from; i < sel.from.line; ++i)
+        startch += lineSep.length + lines[i].text.length;
+      for (var i = from; i < sel.to.line; ++i)
+        endch += lineSep.length + lines[i].text.length;
+      editing = {text: text, from: from, to: to, start: startch, end: endch};
+      setSelRange(input, startch, reducedSelection ? startch : endch);
+    }
+
+    function scrollCursorIntoView() {
+      var cursor = localCoords(sel.inverted ? sel.from : sel.to);
+      return scrollIntoView(cursor.x, cursor.y, cursor.x, cursor.yBot);
+    }
+    function scrollIntoView(x1, y1, x2, y2) {
+      var pl = paddingLeft(), pt = paddingTop();
+      y1 += pt; y2 += pt; x1 += pl; x2 += pl;
+      var screen = wrapper.clientHeight, screentop = wrapper.scrollTop, scrolled = false, result = true;
+      if (y1 < screentop) {wrapper.scrollTop = Math.max(0, y1 - 10); scrolled = true;}
+      else if (y2 > screentop + screen) {wrapper.scrollTop = y2 + 10 - screen; scrolled = true;}
+
+      var screenw = wrapper.clientWidth, screenleft = wrapper.scrollLeft;
+      if (x1 < screenleft) {wrapper.scrollLeft = Math.max(0, x1 - 10); scrolled = true;}
+      else if (x2 > screenw + screenleft) {
+        wrapper.scrollLeft = x2 + 10 - screenw;
+        scrolled = true;
+        if (x2 > code.clientWidth) result = false;
+      }
+      if (scrolled && options.onScroll) options.onScroll(instance);
+      return result;
+    }
+
+    function visibleLines() {
+      var lh = lineHeight(), top = wrapper.scrollTop - paddingTop();
+      return {from: Math.min(lines.length, Math.max(0, Math.floor(top / lh))),
+              to: Math.min(lines.length, Math.ceil((top + wrapper.clientHeight) / lh))};
+    }
+    // Uses a set of changes plus the current scroll position to
+    // determine which DOM updates have to be made, and makes the
+    // updates.
+    function updateDisplay(changes) {
+      if (!wrapper.clientWidth) {
+        showingFrom = showingTo = 0;
+        return;
+      }
+      // First create a range of theoretically intact lines, and punch
+      // holes in that using the change info.
+      var intact = changes === true ? [] : [{from: showingFrom, to: showingTo, domStart: 0}];
+      for (var i = 0, l = changes.length || 0; i < l; ++i) {
+        var change = changes[i], intact2 = [], diff = change.diff || 0;
+        for (var j = 0, l2 = intact.length; j < l2; ++j) {
+          var range = intact[j];
+          if (change.to <= range.from)
+            intact2.push({from: range.from + diff, to: range.to + diff, domStart: range.domStart});
+          else if (range.to <= change.from)
+            intact2.push(range);
+          else {
+            if (change.from > range.from)
+              intact2.push({from: range.from, to: change.from, domStart: range.domStart})
+            if (change.to < range.to)
+              intact2.push({from: change.to + diff, to: range.to + diff,
+                            domStart: range.domStart + (change.to - range.from)});
+          }
+        }
+        intact = intact2;
+      }
+
+      // Then, determine which lines we'd want to see, and which
+      // updates have to be made to get there.
+      var visible = visibleLines();
+      var from = Math.min(showingFrom, Math.max(visible.from - 3, 0)),
+          to = Math.min(lines.length, Math.max(showingTo, visible.to + 3)),
+          updates = [], domPos = 0, domEnd = showingTo - showingFrom, pos = from, changedLines = 0;
+
+      for (var i = 0, l = intact.length; i < l; ++i) {
+        var range = intact[i];
+        if (range.to <= from) continue;
+        if (range.from >= to) break;
+        if (range.domStart > domPos || range.from > pos) {
+          updates.push({from: pos, to: range.from, domSize: range.domStart - domPos, domStart: domPos});
+          changedLines += range.from - pos;
+        }
+        pos = range.to;
+        domPos = range.domStart + (range.to - range.from);
+      }
+      if (domPos != domEnd || pos != to) {
+        changedLines += Math.abs(to - pos);
+        updates.push({from: pos, to: to, domSize: domEnd - domPos, domStart: domPos});
+      }
+
+      if (!updates.length) return;
+      lineDiv.style.display = "none";
+      // If more than 30% of the screen needs update, just do a full
+      // redraw (which is quicker than patching)
+      if (changedLines > (visible.to - visible.from) * .3)
+        refreshDisplay(from = Math.max(visible.from - 10, 0), to = Math.min(visible.to + 7, lines.length));
+      // Otherwise, only update the stuff that needs updating.
+      else
+        patchDisplay(updates);
+      lineDiv.style.display = "";
+
+      // Position the mover div to align with the lines it's supposed
+      // to be showing (which will cover the visible display)
+      var different = from != showingFrom || to != showingTo || lastHeight != wrapper.clientHeight;
+      showingFrom = from; showingTo = to;
+      mover.style.top = (from * lineHeight()) + "px";
+      if (different) {
+        lastHeight = wrapper.clientHeight;
+        code.style.height = (lines.length * lineHeight() + 2 * paddingTop()) + "px";
+        updateGutter();
+      }
+
+      // Since this is all rather error prone, it is honoured with the
+      // only assertion in the whole file.
+      if (lineDiv.childNodes.length != showingTo - showingFrom)
+        throw new Error("BAD PATCH! " + JSON.stringify(updates) + " size=" + (showingTo - showingFrom) +
+                        " nodes=" + lineDiv.childNodes.length);
+      updateCursor();
+    }
+
+    function refreshDisplay(from, to) {
+      var html = [], start = {line: from, ch: 0}, inSel = posLess(sel.from, start) && !posLess(sel.to, start);
+      for (var i = from; i < to; ++i) {
+        var ch1 = null, ch2 = null;
+        if (inSel) {
+          ch1 = 0;
+          if (sel.to.line == i) {inSel = false; ch2 = sel.to.ch;}
+        }
+        else if (sel.from.line == i) {
+          if (sel.to.line == i) {ch1 = sel.from.ch; ch2 = sel.to.ch;}
+          else {inSel = true; ch1 = sel.from.ch;}
+        }
+        html.push(lines[i].getHTML(ch1, ch2, true));
+      }
+      lineDiv.innerHTML = html.join("");
+    }
+    function patchDisplay(updates) {
+      // Slightly different algorithm for IE (badInnerHTML), since
+      // there .innerHTML on PRE nodes is dumb, and discards
+      // whitespace.
+      var sfrom = sel.from.line, sto = sel.to.line, off = 0,
+          scratch = badInnerHTML && document.createElement("div");
+      for (var i = 0, e = updates.length; i < e; ++i) {
+        var rec = updates[i];
+        var extra = (rec.to - rec.from) - rec.domSize;
+        var nodeAfter = lineDiv.childNodes[rec.domStart + rec.domSize + off] || null;
+        if (badInnerHTML)
+          for (var j = Math.max(-extra, rec.domSize); j > 0; --j)
+            lineDiv.removeChild(nodeAfter ? nodeAfter.previousSibling : lineDiv.lastChild);
+        else if (extra) {
+          for (var j = Math.max(0, extra); j > 0; --j)
+            lineDiv.insertBefore(document.createElement("pre"), nodeAfter);
+          for (var j = Math.max(0, -extra); j > 0; --j)
+            lineDiv.removeChild(nodeAfter ? nodeAfter.previousSibling : lineDiv.lastChild);
+        }
+        var node = lineDiv.childNodes[rec.domStart + off], inSel = sfrom < rec.from && sto >= rec.from;
+        for (var j = rec.from; j < rec.to; ++j) {
+          var ch1 = null, ch2 = null;
+          if (inSel) {
+            ch1 = 0;
+            if (sto == j) {inSel = false; ch2 = sel.to.ch;}
+          }
+          else if (sfrom == j) {
+            if (sto == j) {ch1 = sel.from.ch; ch2 = sel.to.ch;}
+            else {inSel = true; ch1 = sel.from.ch;}
+          }
+          if (badInnerHTML) {
+            scratch.innerHTML = lines[j].getHTML(ch1, ch2, true);
+            lineDiv.insertBefore(scratch.firstChild, nodeAfter);
+          }
+          else {
+            node.innerHTML = lines[j].getHTML(ch1, ch2, false);
+            node.className = lines[j].className || "";
+            node = node.nextSibling;
+          }
+        }
+        off += extra;
+      }
+    }
+
+    function updateGutter() {
+      if (!options.gutter && !options.lineNumbers) return;
+      var hText = mover.offsetHeight, hEditor = wrapper.clientHeight;
+      gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px";
+      var html = [];
+      for (var i = showingFrom; i < showingTo; ++i) {
+        var marker = lines[i].gutterMarker;
+        var text = options.lineNumbers ? i + options.firstLineNumber : null;
+        if (marker && marker.text)
+          text = marker.text.replace("%N%", text != null ? text : "");
+        else if (text == null)
+          text = "\u00a0";
+        html.push((marker && marker.style ? '<pre class="' + marker.style + '">' : "<pre>"), text, "</pre>");
+      }
+      gutter.style.display = "none";
+      gutterText.innerHTML = html.join("");
+      var minwidth = String(lines.length).length, firstNode = gutterText.firstChild, val = eltText(firstNode), pad = "";
+      while (val.length + pad.length < minwidth) pad += "\u00a0";
+      if (pad) firstNode.insertBefore(document.createTextNode(pad), firstNode.firstChild);
+      gutter.style.display = "";
+      lineSpace.style.marginLeft = gutter.offsetWidth + "px";
+    }
+    function updateCursor() {
+      var head = sel.inverted ? sel.from : sel.to;
+      var x = charX(head.line, head.ch) + "px", y = (head.line - showingFrom) * lineHeight() + "px";
+      inputDiv.style.top = y; inputDiv.style.left = x;
+      if (posEq(sel.from, sel.to)) {
+        cursor.style.top = y; cursor.style.left = x;
+        cursor.style.display = "";
+      }
+      else cursor.style.display = "none";
+    }
+
+    // Update the selection. Last two args are only used by
+    // updateLines, since they have to be expressed in the line
+    // numbers before the update.
+    function setSelection(from, to, oldFrom, oldTo) {
+      if (posEq(sel.from, from) && posEq(sel.to, to)) return;
+      var sh = shiftSelecting && clipPos(shiftSelecting);
+      if (posLess(to, from)) {var tmp = to; to = from; from = tmp;}
+      if (sh) {
+        if (posLess(sh, from)) from = sh;
+        else if (posLess(to, sh)) to = sh;
+      }
+
+      var startEq = posEq(sel.to, to), endEq = posEq(sel.from, from);
+      if (posEq(from, to)) sel.inverted = false;
+      else if (startEq && !endEq) sel.inverted = true;
+      else if (endEq && !startEq) sel.inverted = false;
+
+      // Some ugly logic used to only mark the lines that actually did
+      // see a change in selection as changed, rather than the whole
+      // selected range.
+      if (oldFrom == null) {oldFrom = sel.from.line; oldTo = sel.to.line;}
+      if (posEq(from, to)) {
+        if (!posEq(sel.from, sel.to))
+          changes.push({from: oldFrom, to: oldTo + 1});
+      }
+      else if (posEq(sel.from, sel.to)) {
+        changes.push({from: from.line, to: to.line + 1});
+      }
+      else {
+        if (!posEq(from, sel.from)) {
+          if (from.line < oldFrom)
+            changes.push({from: from.line, to: Math.min(to.line, oldFrom) + 1});
+          else
+            changes.push({from: oldFrom, to: Math.min(oldTo, from.line) + 1});
+        }
+        if (!posEq(to, sel.to)) {
+          if (to.line < oldTo)
+            changes.push({from: Math.max(oldFrom, from.line), to: oldTo + 1});
+          else
+            changes.push({from: Math.max(from.line, oldTo), to: to.line + 1});
+        }
+      }
+      sel.from = from; sel.to = to;
+      selectionChanged = true;
+    }
+    function setCursor(line, ch) {
+      var pos = clipPos({line: line, ch: ch || 0});
+      setSelection(pos, pos);
+    }
+
+    function clipLine(n) {return Math.max(0, Math.min(n, lines.length-1));}
+    function clipPos(pos) {
+      if (pos.line < 0) return {line: 0, ch: 0};
+      if (pos.line >= lines.length) return {line: lines.length-1, ch: lines[lines.length-1].text.length};
+      var ch = pos.ch, linelen = lines[pos.line].text.length;
+      if (ch == null || ch > linelen) return {line: pos.line, ch: linelen};
+      else if (ch < 0) return {line: pos.line, ch: 0};
+      else return pos;
+    }
+
+    function scrollPage(down) {
+      var linesPerPage = Math.floor(wrapper.clientHeight / lineHeight()), head = sel.inverted ? sel.from : sel.to;
+      setCursor(head.line + (Math.max(linesPerPage - 1, 1) * (down ? 1 : -1)), head.ch);
+    }
+    function scrollEnd(top) {
+      setCursor(top ? 0 : lines.length - 1);
+    }
+    function selectAll() {
+      var endLine = lines.length - 1;
+      setSelection({line: 0, ch: 0}, {line: endLine, ch: lines[endLine].text.length});
+    }
+    function selectWordAt(pos) {
+      var line = lines[pos.line].text;
+      var start = pos.ch, end = pos.ch;
+      while (start > 0 && /\w/.test(line.charAt(start - 1))) --start;
+      while (end < line.length - 1 && /\w/.test(line.charAt(end))) ++end;
+      setSelection({line: pos.line, ch: start}, {line: pos.line, ch: end});
+    }
+    function handleEnter() {
+      replaceSelection("\n", "end");
+      if (options.enterMode != "flat")
+        indentLine(sel.from.line, options.enterMode == "keep" ? "prev" : "smart");
+    }
+    function handleTab(shift) {
+      shiftSelecting = null;
+      switch (options.tabMode) {
+      case "default":
+        return false;
+      case "indent":
+        for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, "smart");
+        break;
+      case "classic":
+        if (posEq(sel.from, sel.to)) {
+          if (shift) indentLine(sel.from.line, "smart");
+          else replaceSelection("\t", "end");
+          break;
+        }
+      case "shift":
+        for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, shift ? "subtract" : "add");
+        break;
+      }
+      return true;
+    }
+
+    function indentLine(n, how) {
+      if (how == "smart") {
+        if (!mode.indent) how = "prev";
+        else var state = getStateBefore(n);
+      }
+
+      var line = lines[n], curSpace = line.indentation(), curSpaceString = line.text.match(/^\s*/)[0], indentation;
+      if (how == "prev") {
+        if (n) indentation = lines[n-1].indentation();
+        else indentation = 0;
+      }
+      else if (how == "smart") indentation = mode.indent(state, line.text.slice(curSpaceString.length));
+      else if (how == "add") indentation = curSpace + options.indentUnit;
+      else if (how == "subtract") indentation = curSpace - options.indentUnit;
+      indentation = Math.max(0, indentation);
+      var diff = indentation - curSpace;
+
+      if (!diff) {
+        if (sel.from.line != n && sel.to.line != n) return;
+        var indentString = curSpaceString;
+      }
+      else {
+        var indentString = "", pos = 0;
+        if (options.indentWithTabs)
+          for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";}
+        while (pos < indentation) {++pos; indentString += " ";}
+      }
+
+      replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length});
+    }
+
+    function loadMode() {
+      mode = CodeMirror.getMode(options, options.mode);
+      for (var i = 0, l = lines.length; i < l; ++i)
+        lines[i].stateAfter = null;
+      work = [0];
+    }
+    function gutterChanged() {
+      var visible = options.gutter || options.lineNumbers;
+      gutter.style.display = visible ? "" : "none";
+      if (visible) updateGutter();
+      else lineDiv.parentNode.style.marginLeft = 0;
+    }
+
+    function markText(from, to, className) {
+      from = clipPos(from); to = clipPos(to);
+      var accum = [];
+      function add(line, from, to, className) {
+        var line = lines[line], mark = line.addMark(from, to, className);
+        mark.line = line;
+        accum.push(mark);
+      }
+      if (from.line == to.line) add(from.line, from.ch, to.ch, className);
+      else {
+        add(from.line, from.ch, null, className);
+        for (var i = from.line + 1, e = to.line; i < e; ++i)
+          add(i, 0, null, className);
+        add(to.line, 0, to.ch, className);
+      }
+      changes.push({from: from.line, to: to.line + 1});
+      return function() {
+        var start, end;
+        for (var i = 0; i < accum.length; ++i) {
+          var mark = accum[i], found = indexOf(lines, mark.line);
+          mark.line.removeMark(mark);
+          if (found > -1) {
+            if (start == null) start = found;
+            end = found;
+          }
+        }
+        if (start != null) changes.push({from: start, to: end + 1});
+      };
+    }
+
+    function addGutterMarker(line, text, className) {
+      if (typeof line == "number") line = lines[clipLine(line)];
+      line.gutterMarker = {text: text, style: className};
+      updateGutter();
+      return line;
+    }
+    function removeGutterMarker(line) {
+      if (typeof line == "number") line = lines[clipLine(line)];
+      line.gutterMarker = null;
+      updateGutter();
+    }
+    function setLineClass(line, className) {
+      if (typeof line == "number") {
+        var no = line;
+        line = lines[clipLine(line)];
+      }
+      else {
+        var no = indexOf(lines, line);
+        if (no == -1) return null;
+      }
+      line.className = className;
+      changes.push({from: no, to: no + 1});
+      return line;
+    }
+
+    function lineInfo(line) {
+      if (typeof line == "number") {
+        var n = line;
+        line = lines[line];
+        if (!line) return null;
+      }
+      else {
+        var n = indexOf(lines, line);
+        if (n == -1) return null;
+      }
+      var marker = line.gutterMarker;
+      return {line: n, text: line.text, markerText: marker && marker.text, markerClass: marker && marker.style};
+    }
+
+    // These are used to go from pixel positions to character
+    // positions, taking tabs into account.
+    function charX(line, pos) {
+      var text = lines[line].text, span = measure.firstChild;
+      if (text.lastIndexOf("\t", pos) == -1) return pos * charWidth();
+      var old = span.firstChild.nodeValue;
+      try {
+        span.firstChild.nodeValue = text.slice(0, pos);
+        return span.offsetWidth;
+      } finally {span.firstChild.nodeValue = old;}
+    }
+    function charFromX(line, x) {
+      var text = lines[line].text, cw = charWidth();
+      if (x <= 0) return 0;
+      if (text.indexOf("\t") == -1) return Math.min(text.length, Math.round(x / cw));
+      var mspan = measure.firstChild, mtext = mspan.firstChild, old = mtext.nodeValue;
+      try {
+        mtext.nodeValue = text;
+        var from = 0, fromX = 0, to = text.length, toX = mspan.offsetWidth;
+        if (x > toX) return to;
+        for (;;) {
+          if (to - from <= 1) return (toX - x > x - fromX) ? from : to;
+          var middle = Math.ceil((from + to) / 2);
+          mtext.nodeValue = text.slice(0, middle);
+          var curX = mspan.offsetWidth;
+          if (curX > x) {to = middle; toX = curX;}
+          else {from = middle; fromX = curX;}
+        }
+      } finally {mtext.nodeValue = old;}
+    }
+
+    function localCoords(pos, inLineWrap) {
+      var lh = lineHeight(), line = pos.line - (inLineWrap ? showingFrom : 0);
+      return {x: charX(pos.line, pos.ch), y: line * lh, yBot: (line + 1) * lh};
+    }
+    function pageCoords(pos) {
+      var local = localCoords(pos, true), off = eltOffset(lineSpace);
+      return {x: off.left + local.x, y: off.top + local.y, yBot: off.top + local.yBot};
+    }
+
+    function lineHeight() {
+      var nlines = lineDiv.childNodes.length;
+      if (nlines) return lineDiv.offsetHeight / nlines;
+      else return measure.firstChild.offsetHeight || 1;
+    }
+    function charWidth() {return (measure.firstChild.offsetWidth || 320) / 40;}
+    function paddingTop() {return lineSpace.offsetTop;}
+    function paddingLeft() {return lineSpace.offsetLeft;}
+
+    function posFromMouse(e, liberal) {
+      var off = eltOffset(lineSpace),
+          x = e.pageX() - off.left,
+          y = e.pageY() - off.top;
+      if (!liberal && e.target() != lineSpace.parentNode && !(e.target() == wrapper && y > (lines.length * lineHeight())))
+        for (var n = e.target(); n != lineDiv && n != cursor; n = n.parentNode)
+          if (!n || n == wrapper) return null;
+      var line = showingFrom + Math.floor(y / lineHeight());
+      return clipPos({line: line, ch: charFromX(clipLine(line), x)});
+    }
+    function onContextMenu(e) {
+      var pos = posFromMouse(e);
+      if (!pos || window.opera) return; // Opera is difficult.
+      if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to))
+        setCursor(pos.line, pos.ch);
+
+      var oldCSS = input.style.cssText;
+      input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.pageY() - 1) +
+        "px; left: " + (e.pageX() - 1) + "px; z-index: 1000; background: white; " +
+        "border-width: 0; outline: none; overflow: hidden;";
+      var val = input.value = getSelection();
+      input.focus();
+      setSelRange(input, 0, val.length);
+      if (gecko) e.stop();
+      leaveInputAlone = true;
+      setTimeout(function() {
+        if (input.value != val) operation(replaceSelection)(input.value, "end");
+        input.style.cssText = oldCSS;
+        leaveInputAlone = false;
+        prepareInput();
+        slowPoll();
+      }, 50);
+    }
+
+    // Cursor-blinking
+    function restartBlink() {
+      clearInterval(blinker);
+      var on = true;
+      cursor.style.visibility = "";
+      blinker = setInterval(function() {
+        cursor.style.visibility = (on = !on) ? "" : "hidden";
+      }, 650);
+    }
+
+    var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
+    function matchBrackets(autoclear) {
+      var head = sel.inverted ? sel.from : sel.to, line = lines[head.line], pos = head.ch - 1;
+      var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
+      if (!match) return;
+      var ch = match.charAt(0), forward = match.charAt(1) == ">", d = forward ? 1 : -1, st = line.styles;
+      for (var off = pos + 1, i = 0, e = st.length; i < e; i+=2)
+        if ((off -= st[i].length) <= 0) {var style = st[i+1]; break;}
+
+      var stack = [line.text.charAt(pos)], re = /[(){}[\]]/;
+      function scan(line, from, to) {
+        if (!line.text) return;
+        var st = line.styles, pos = forward ? 0 : line.text.length - 1, cur;
+        for (var i = forward ? 0 : st.length - 2, e = forward ? st.length : -2; i != e; i += 2*d) {
+          var text = st[i];
+          if (st[i+1] != null && st[i+1] != style) {pos += d * text.length; continue;}
+          for (var j = forward ? 0 : text.length - 1, te = forward ? text.length : -1; j != te; j += d, pos+=d) {
+            if (pos >= from && pos < to && re.test(cur = text.charAt(j))) {
+              var match = matching[cur];
+              if (match.charAt(1) == ">" == forward) stack.push(cur);
+              else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false};
+              else if (!stack.length) return {pos: pos, match: true};
+            }
+          }
+        }
+      }
+      for (var i = head.line, e = forward ? Math.min(i + 50, lines.length) : Math.max(0, i - 50); i != e; i+=d) {
+        var line = lines[i], first = i == head.line;
+        var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length);
+        if (found) {
+          var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
+          var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style),
+              two = markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style);
+          var clear = operation(function(){one(); two();});
+          if (autoclear) setTimeout(clear, 800);
+          else bracketHighlighted = clear;
+          break;
+        }
+      }
+    }
+
+    // Finds the line to start with when starting a parse. Tries to
+    // find a line with a stateAfter, so that it can start with a
+    // valid state. If that fails, it returns the line with the
+    // smallest indentation, which tends to need the least context to
+    // parse correctly.
+    function findStartLine(n) {
+      var minindent, minline;
+      for (var search = n, lim = n - 40; search > lim; --search) {
+        if (search == 0) return 0;
+        var line = lines[search-1];
+        if (line.stateAfter) return search;
+        var indented = line.indentation();
+        if (minline == null || minindent > indented) {
+          minline = search;
+          minindent = indented;
+        }
+      }
+      return minline;
+    }
+    function getStateBefore(n) {
+      var start = findStartLine(n), state = start && lines[start-1].stateAfter;
+      if (!state) state = startState(mode);
+      else state = copyState(mode, state);
+      for (var i = start; i < n; ++i) {
+        var line = lines[i];
+        line.highlight(mode, state);
+        line.stateAfter = copyState(mode, state);
+      }
+      if (!lines[n].stateAfter) work.push(n);
+      return state;
+    }
+    function highlightWorker() {
+      var end = +new Date + options.workTime;
+      while (work.length) {
+        if (!lines[showingFrom].stateAfter) var task = showingFrom;
+        else var task = work.pop();
+        if (task >= lines.length) continue;
+        var start = findStartLine(task), state = start && lines[start-1].stateAfter;
+        if (state) state = copyState(mode, state);
+        else state = startState(mode);
+
+        for (var i = start, l = lines.length; i < l; ++i) {
+          var line = lines[i], hadState = line.stateAfter;
+          if (+new Date > end) {
+            work.push(i);
+            startWorker(options.workDelay);
+            changes.push({from: task, to: i});
+            return;
+          }
+          var changed = line.highlight(mode, state);
+          line.stateAfter = copyState(mode, state);
+          if (hadState && !changed && line.text) break;
+        }
+        changes.push({from: task, to: i});
+      }
+    }
+    function startWorker(time) {
+      if (!work.length) return;
+      highlight.set(time, operation(highlightWorker));
+    }
+
+    // Operations are used to wrap changes in such a way that each
+    // change won't have to update the cursor and display (which would
+    // be awkward, slow, and error-prone), but instead updates are
+    // batched and then all combined and executed at once.
+    function startOperation() {
+      updateInput = null; changes = []; textChanged = selectionChanged = false;
+    }
+    function endOperation() {
+      var reScroll = false;
+      if (selectionChanged) reScroll = !scrollCursorIntoView();
+      if (changes.length) updateDisplay(changes);
+      else if (selectionChanged) updateCursor();
+      if (reScroll) scrollCursorIntoView();
+      if (selectionChanged) restartBlink();
+
+      // updateInput can be set to a boolean value to force/prevent an
+      // update.
+      if (!leaveInputAlone && (updateInput === true || (updateInput !== false && selectionChanged)))
+        prepareInput();
+
+      if (selectionChanged && options.onCursorActivity)
+        options.onCursorActivity(instance);
+      if (textChanged && options.onChange)
+        options.onChange(instance);
+      if (selectionChanged && options.matchBrackets)
+        setTimeout(operation(function() {
+          if (bracketHighlighted) {bracketHighlighted(); bracketHighlighted = null;}
+          matchBrackets(false);
+        }), 20);
+    }
+    var nestedOperation = 0;
+    function operation(f) {
+      return function() {
+        if (!nestedOperation++) startOperation();
+        try {var result = f.apply(this, arguments);}
+        finally {if (!--nestedOperation) endOperation();}
+        return result;
+      };
+    }
+
+    function SearchCursor(query, pos, caseFold) {
+      this.atOccurrence = false;
+      if (caseFold == null) caseFold = typeof query == "string" && query == query.toLowerCase();
+
+      if (pos && typeof pos == "object") pos = clipPos(pos);
+      else pos = {line: 0, ch: 0};
+      this.pos = {from: pos, to: pos};
+
+      // The matches method is filled in based on the type of query.
+      // It takes a position and a direction, and returns an object
+      // describing the next occurrence of the query, or null if no
+      // more matches were found.
+      if (typeof query != "string") // Regexp match
+        this.matches = function(reverse, pos) {
+          if (reverse) {
+            var line = lines[pos.line].text.slice(0, pos.ch), match = line.match(query), start = 0;
+            while (match) {
+              var ind = line.indexOf(match[0]);
+              start += ind;
+              line = line.slice(ind + 1);
+              var newmatch = line.match(query);
+              if (newmatch) match = newmatch;
+              else break;
+            }
+          }
+          else {
+            var line = lines[pos.line].text.slice(pos.ch), match = line.match(query),
+                start = match && pos.ch + line.indexOf(match[0]);
+          }
+          if (match)
+            return {from: {line: pos.line, ch: start},
+                    to: {line: pos.line, ch: start + match[0].length},
+                    match: match};
+        };
+      else { // String query
+        if (caseFold) query = query.toLowerCase();
+        var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};
+        var target = query.split("\n");
+        // Different methods for single-line and multi-line queries
+        if (target.length == 1)
+          this.matches = function(reverse, pos) {
+            var line = fold(lines[pos.line].text), len = query.length, match;
+            if (reverse ? (pos.ch >= len && (match = line.lastIndexOf(query, pos.ch - len)) != -1)
+                        : (match = line.indexOf(query, pos.ch)) != -1)
+              return {from: {line: pos.line, ch: match},
+                      to: {line: pos.line, ch: match + len}};
+          };
+        else
+          this.matches = function(reverse, pos) {
+            var ln = pos.line, idx = (reverse ? target.length - 1 : 0), match = target[idx], line = fold(lines[ln].text);
+            var offsetA = (reverse ? line.indexOf(match) + match.length : line.lastIndexOf(match));
+            if (reverse ? offsetA >= pos.ch || offsetA != match.length
+                        : offsetA <= pos.ch || offsetA != line.length - match.length)
+              return;
+            for (;;) {
+              if (reverse ? !ln : ln == lines.length - 1) return;
+              line = fold(lines[ln += reverse ? -1 : 1].text);
+              match = target[reverse ? --idx : ++idx];
+              if (idx > 0 && idx < target.length - 1) {
+                if (line != match) return;
+                else continue;
+              }
+              var offsetB = (reverse ? line.lastIndexOf(match) : line.indexOf(match) + match.length);
+              if (reverse ? offsetB != line.length - match.length : offsetB != match.length)
+                return;
+              var start = {line: pos.line, ch: offsetA}, end = {line: ln, ch: offsetB};
+              return {from: reverse ? end : start, to: reverse ? start : end};
+            }
+          };
+      }
+    }
+
+    SearchCursor.prototype = {
+      findNext: function() {return this.find(false);},
+      findPrevious: function() {return this.find(true);},
+
+      find: function(reverse) {
+        var self = this, pos = clipPos(reverse ? this.pos.from : this.pos.to);
+        function savePosAndFail(line) {
+          var pos = {line: line, ch: 0};
+          self.pos = {from: pos, to: pos};
+          self.atOccurrence = false;
+          return false;
+        }
+
+        for (;;) {
+          if (this.pos = this.matches(reverse, pos)) {
+            this.atOccurrence = true;
+            return this.pos.match || true;
+          }
+          if (reverse) {
+            if (!pos.line) return savePosAndFail(0);
+            pos = {line: pos.line-1, ch: lines[pos.line-1].text.length};
+          }
+          else {
+            if (pos.line == lines.length - 1) return savePosAndFail(lines.length);
+            pos = {line: pos.line+1, ch: 0};
+          }
+        }
+      },
+
+      from: function() {if (this.atOccurrence) return copyPos(this.pos.from);},
+      to: function() {if (this.atOccurrence) return copyPos(this.pos.to);}
+    };
+
+    return instance;
+  } // (end of function CodeMirror)
+
+  // The default configuration options.
+  CodeMirror.defaults = {
+    value: "",
+    mode: null,
+    indentUnit: 2,
+    indentWithTabs: false,
+    tabMode: "classic",
+    enterMode: "indent",
+    electricChars: true,
+    onKeyEvent: null,
+    lineNumbers: false,
+    gutter: false,
+    firstLineNumber: 1,
+    readOnly: false,
+    onChange: null,
+    onCursorActivity: null,
+    onGutterClick: null,
+    onFocus: null, onBlur: null, onScroll: null,
+    matchBrackets: false,
+    workTime: 100,
+    workDelay: 200,
+    undoDepth: 40,
+    tabindex: null
+  };
+
+  // Known modes, by name and by MIME
+  var modes = {}, mimeModes = {};
+  CodeMirror.defineMode = function(name, mode) {
+    if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name;
+    modes[name] = mode;
+  };
+  CodeMirror.defineMIME = function(mime, spec) {
+    mimeModes[mime] = spec;
+  };
+  CodeMirror.getMode = function(options, spec) {
+    if (typeof spec == "string" && mimeModes.hasOwnProperty(spec))
+      spec = mimeModes[spec];
+    if (typeof spec == "string")
+      var mname = spec, config = {};
+    else
+      var mname = spec.name, config = spec;
+    var mfactory = modes[mname];
+    if (!mfactory) {
+      if (window.console) console.warn("No mode " + mname + " found, falling back to plain text.");
+      return CodeMirror.getMode(options, "text/plain");
+    }
+    return mfactory(options, config);
+  }
+  CodeMirror.listModes = function() {
+    var list = [];
+    for (var m in modes)
+      if (modes.propertyIsEnumerable(m)) list.push(m);
+    return list;
+  };
+  CodeMirror.listMIMEs = function() {
+    var list = [];
+    for (var m in mimeModes)
+      if (mimeModes.propertyIsEnumerable(m)) list.push(m);
+    return list;
+  };
+
+  CodeMirror.fromTextArea = function(textarea, options) {
+    if (!options) options = {};
+    options.value = textarea.value;
+    if (!options.tabindex && textarea.tabindex)
+      options.tabindex = textarea.tabindex;
+
+    function save() {textarea.value = instance.getValue();}
+    if (textarea.form) {
+      // Deplorable hack to make the submit method do the right thing.
+      var rmSubmit = connect(textarea.form, "submit", save, true);
+      if (typeof textarea.form.submit == "function") {
+        var realSubmit = textarea.form.submit;
+        function wrappedSubmit() {
+          save();
+          textarea.form.submit = realSubmit;
+          textarea.form.submit();
+          textarea.form.submit = wrappedSubmit;
+        }
+        textarea.form.submit = wrappedSubmit;
+      }
+    }
+
+    textarea.style.display = "none";
+    var instance = CodeMirror(function(node) {
+      textarea.parentNode.insertBefore(node, textarea.nextSibling);
+    }, options);
+    instance.save = save;
+    instance.toTextArea = function() {
+      save();
+      textarea.parentNode.removeChild(instance.getWrapperElement());
+      textarea.style.display = "";
+      if (textarea.form) {
+        rmSubmit();
+        if (typeof textarea.form.submit == "function")
+          textarea.form.submit = realSubmit;
+      }
+    };
+    return instance;
+  };
+
+  // Utility functions for working with state. Exported because modes
+  // sometimes need to do this.
+  function copyState(mode, state) {
+    if (state === true) return state;
+    if (mode.copyState) return mode.copyState(state);
+    var nstate = {};
+    for (var n in state) {
+      var val = state[n];
+      if (val instanceof Array) val = val.concat([]);
+      nstate[n] = val;
+    }
+    return nstate;
+  }
+  CodeMirror.startState = startState;
+  function startState(mode, a1, a2) {
+    return mode.startState ? mode.startState(a1, a2) : true;
+  }
+  CodeMirror.copyState = copyState;
+
+  // The character stream used by a mode's parser.
+  function StringStream(string) {
+    this.pos = this.start = 0;
+    this.string = string;
+  }
+  StringStream.prototype = {
+    eol: function() {return this.pos >= this.string.length;},
+    sol: function() {return this.pos == 0;},
+    peek: function() {return this.string.charAt(this.pos);},
+    next: function() {
+      if (this.pos < this.string.length)
+        return this.string.charAt(this.pos++);
+    },
+    eat: function(match) {
+      var ch = this.string.charAt(this.pos);
+      if (typeof match == "string") var ok = ch == match;
+      else var ok = ch && (match.test ? match.test(ch) : match(ch));
+      if (ok) {++this.pos; return ch;}
+    },
+    eatWhile: function(match) {
+      var start = this.start;
+      while (this.eat(match)){}
+      return this.pos > start;
+    },
+    eatSpace: function() {
+      var start = this.pos;
+      while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
+      return this.pos > start;
+    },
+    skipToEnd: function() {this.pos = this.string.length;},
+    skipTo: function(ch) {
+      var found = this.string.indexOf(ch, this.pos);
+      if (found > -1) {this.pos = found; return true;}
+    },
+    backUp: function(n) {this.pos -= n;},
+    column: function() {return countColumn(this.string, this.start);},
+    indentation: function() {return countColumn(this.string);},
+    match: function(pattern, consume, caseInsensitive) {
+      if (typeof pattern == "string") {
+        function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
+        if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
+          if (consume !== false) this.pos += pattern.length;
+          return true;
+        }
+      }
+      else {
+        var match = this.string.slice(this.pos).match(pattern);
+        if (match && consume !== false) this.pos += match[0].length;
+        return match;
+      }
+    },
+    current: function(){return this.string.slice(this.start, this.pos);}
+  };
+
+  // Line objects. These hold state related to a line, including
+  // highlighting info (the styles array).
+  function Line(text, styles) {
+    this.styles = styles || [text, null];
+    this.stateAfter = null;
+    this.text = text;
+    this.marked = this.gutterMarker = this.className = null;
+  }
+  Line.prototype = {
+    // Replace a piece of a line, keeping the styles around it intact.
+    replace: function(from, to, text) {
+      var st = [], mk = this.marked;
+      copyStyles(0, from, this.styles, st);
+      if (text) st.push(text, null);
+      copyStyles(to, this.text.length, this.styles, st);
+      this.styles = st;
+      this.text = this.text.slice(0, from) + text + this.text.slice(to);
+      this.stateAfter = null;
+      if (mk) {
+        var diff = text.length - (to - from), end = this.text.length;
+        function fix(n) {return n <= Math.min(to, to + diff) ? n : n + diff;}
+        for (var i = 0; i < mk.length; ++i) {
+          var mark = mk[i], del = false;
+          if (mark.from >= end) del = true;
+          else {mark.from = fix(mark.from); if (mark.to != null) mark.to = fix(mark.to);}
+          if (del || mark.from >= mark.to) {mk.splice(i, 1); i--;}
+        }
+      }
+    },
+    // Split a line in two, again keeping styles intact.
+    split: function(pos, textBefore) {
+      var st = [textBefore, null];
+      copyStyles(pos, this.text.length, this.styles, st);
+      return new Line(textBefore + this.text.slice(pos), st);
+    },
+    addMark: function(from, to, style) {
+      var mk = this.marked, mark = {from: from, to: to, style: style};
+      if (this.marked == null) this.marked = [];
+      this.marked.push(mark);
+      this.marked.sort(function(a, b){return a.from - b.from;});
+      return mark;
+    },
+    removeMark: function(mark) {
+      var mk = this.marked;
+      if (!mk) return;
+      for (var i = 0; i < mk.length; ++i)
+        if (mk[i] == mark) {mk.splice(i, 1); break;}
+    },
+    // Run the given mode's parser over a line, update the styles
+    // array, which contains alternating fragments of text and CSS
+    // classes.
+    highlight: function(mode, state) {
+      var stream = new StringStream(this.text), st = this.styles, pos = 0, changed = false;
+      while (!stream.eol()) {
+        var style = mode.token(stream, state);
+        var substr = this.text.slice(stream.start, stream.pos);
+        stream.start = stream.pos;
+        if (pos && st[pos-1] == style)
+          st[pos-2] += substr;
+        else if (substr) {
+          if (!changed && st[pos] != substr || st[pos+1] != style) changed = true;
+          st[pos++] = substr; st[pos++] = style;
+        }
+        // Give up when line is ridiculously long
+        if (stream.pos > 5000) {
+          st[pos++] = this.text.slice(stream.pos); st[pos++] = null;
+          break;
+        }
+      }
+      if (st.length != pos) {st.length = pos; changed = true;}
+      return changed;
+    },
+    // Fetch the parser token for a given character. Useful for hacks
+    // that want to inspect the mode state (say, for completion).
+    getTokenAt: function(mode, state, ch) {
+      var txt = this.text, stream = new StringStream(txt);
+      while (stream.pos < ch && !stream.eol()) {
+        stream.start = stream.pos;
+        var style = mode.token(stream, state);
+      }
+      return {start: stream.start,
+              end: stream.pos,
+              string: stream.current(),
+              className: style || null,
+              state: state};
+    },
+    indentation: function() {return countColumn(this.text);},
+    // Produces an HTML fragment for the line, taking selection,
+    // marking, and highlighting into account.
+    getHTML: function(sfrom, sto, includePre) {
+      var html = [];
+      if (includePre)
+        html.push(this.className ? '<pre class="' + this.className + '">': "<pre>");
+      function span(text, style) {
+        if (!text) return;
+        if (style) html.push('<span class="', style, '">', htmlEscape(text), "</span>");
+        else html.push(htmlEscape(text));
+      }
+      var st = this.styles, allText = this.text, marked = this.marked;
+      if (sfrom == sto) sfrom = null;
+
+      if (!allText)
+        span(" ", sfrom != null && sto == null ? "CodeMirror-selected" : null);
+      else if (!marked && sfrom == null)
+        for (var i = 0, e = st.length; i < e; i+=2) span(st[i], st[i+1]);
+      else {
+        var pos = 0, i = 0, text = "", style, sg = 0;
+        var markpos = -1, mark = null;
+        function nextMark() {
+          if (marked) {
+            markpos += 1;
+            mark = (markpos < marked.length) ? marked[markpos] : null;
+          }
+        }
+        nextMark();        
+        while (pos < allText.length) {
+          var upto = allText.length;
+          var extraStyle = "";
+          if (sfrom != null) {
+            if (sfrom > pos) upto = sfrom;
+            else if (sto == null || sto > pos) {
+              extraStyle = " CodeMirror-selected";
+              if (sto != null) upto = Math.min(upto, sto);
+            }
+          }
+          while (mark && mark.to != null && mark.to <= pos) nextMark();
+          if (mark) {
+            if (mark.from > pos) upto = Math.min(upto, mark.from);
+            else {
+              extraStyle += " " + mark.style;
+              if (mark.to != null) upto = Math.min(upto, mark.to);
+            }
+          }
+          for (;;) {
+            var end = pos + text.length;
+            var apliedStyle = style;
+            if (extraStyle) apliedStyle = style ? style + extraStyle : extraStyle;
+            span(end > upto ? text.slice(0, upto - pos) : text, apliedStyle);
+            if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
+            pos = end;
+            text = st[i++]; style = st[i++];
+          }
+        }
+        if (sfrom != null && sto == null) span(" ", "CodeMirror-selected");
+      }
+      if (includePre) html.push("</pre>");
+      return html.join("");
+    }
+  };
+  // Utility used by replace and split above
+  function copyStyles(from, to, source, dest) {
+    for (var i = 0, pos = 0, state = 0; pos < to; i+=2) {
+      var part = source[i], end = pos + part.length;
+      if (state == 0) {
+        if (end > from) dest.push(part.slice(from - pos, Math.min(part.length, to - pos)), source[i+1]);
+        if (end >= from) state = 1;
+      }
+      else if (state == 1) {
+        if (end > to) dest.push(part.slice(0, to - pos), source[i+1]);
+        else dest.push(part, source[i+1]);
+      }
+      pos = end;
+    }
+  }
+
+  // The history object 'chunks' changes that are made close together
+  // and at almost the same time into bigger undoable units.
+  function History() {
+    this.time = 0;
+    this.done = []; this.undone = [];
+  }
+  History.prototype = {
+    addChange: function(start, added, old) {
+      this.undone.length = 0;
+      var time = +new Date, last = this.done[this.done.length - 1];
+      if (time - this.time > 400 || !last ||
+          last.start > start + added || last.start + last.added < start - last.added + last.old.length)
+        this.done.push({start: start, added: added, old: old});
+      else {
+        var oldoff = 0;
+        if (start < last.start) {
+          for (var i = last.start - start - 1; i >= 0; --i)
+            last.old.unshift(old[i]);
+          last.added += last.start - start;
+          last.start = start;
+        }
+        else if (last.start < start) {
+          oldoff = start - last.start;
+          added += oldoff;
+        }
+        for (var i = last.added - oldoff, e = old.length; i < e; ++i)
+          last.old.push(old[i]);
+        if (last.added < added) last.added = added;
+      }
+      this.time = time;
+    }
+  };
+
+  // Event stopping compatibility wrapper.
+  function stopEvent() {
+    if (this.preventDefault) {this.preventDefault(); this.stopPropagation();}
+    else {this.returnValue = false; this.cancelBubble = true;}
+  }
+  // Ensure an event has a stop method.
+  function addStop(event) {
+    if (!event.stop) event.stop = stopEvent;
+    return event;
+  }
+
+  // Event wrapper, exposing the few operations we need.
+  function Event(orig) {this.e = orig;}
+  Event.prototype = {
+    stop: function() {stopEvent.call(this.e);},
+    target: function() {return this.e.target || this.e.srcElement;},
+    button: function() {
+      if (this.e.which) return this.e.which;
+      else if (this.e.button & 1) return 1;
+      else if (this.e.button & 2) return 3;
+      else if (this.e.button & 4) return 2;
+    },
+    pageX: function() {
+      if (this.e.pageX != null) return this.e.pageX;
+      else return this.e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
+    },
+    pageY: function() {
+      if (this.e.pageY != null) return this.e.pageY;
+      else return this.e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
+    }
+  };
+
+  // Event handler registration. If disconnect is true, it'll return a
+  // function that unregisters the handler.
+  function connect(node, type, handler, disconnect) {
+    function wrapHandler(event) {handler(new Event(event || window.event));}
+    if (typeof node.addEventListener == "function") {
+      node.addEventListener(type, wrapHandler, false);
+      if (disconnect) return function() {node.removeEventListener(type, wrapHandler, false);};
+    }
+    else {
+      node.attachEvent("on" + type, wrapHandler);
+      if (disconnect) return function() {node.detachEvent("on" + type, wrapHandler);};
+    }
+  }
+
+  function Delayed() {this.id = null;}
+  Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}};
+
+  // Some IE versions don't preserve whitespace when setting the
+  // innerHTML of a PRE tag.
+  var badInnerHTML = (function() {
+    var pre = document.createElement("pre");
+    pre.innerHTML = " "; return !pre.innerHTML;
+  })();
+
+  var gecko = /gecko\/\d{7}/i.test(navigator.userAgent);
+
+  var lineSep = "\n";
+  // Feature-detect whether newlines in textareas are converted to \r\n
+  (function () {
+    var te = document.createElement("textarea");
+    te.value = "foo\nbar";
+    if (te.value.indexOf("\r") > -1) lineSep = "\r\n";
+  }());
+
+  var tabSize = 8;
+  var mac = /Mac/.test(navigator.platform);
+  var movementKeys = {};
+  for (var i = 35; i <= 40; ++i)
+    movementKeys[i] = movementKeys["c" + i] = true;
+
+  // Counts the column offset in a string, taking tabs into account.
+  // Used mostly to find indentation.
+  function countColumn(string, end) {
+    if (end == null) {
+      end = string.search(/[^\s\u00a0]/);
+      if (end == -1) end = string.length;
+    }
+    for (var i = 0, n = 0; i < end; ++i) {
+      if (string.charAt(i) == "\t") n += tabSize - (n % tabSize);
+      else ++n;
+    }
+    return n;
+  }
+
+  // Find the position of an element by following the offsetParent chain.
+  function eltOffset(node) {
+    var x = 0, y = 0, n2 = node;
+    for (var n = node; n; n = n.offsetParent) {x += n.offsetLeft; y += n.offsetTop;}
+    for (var n = node; n != document.body; n = n.parentNode) {x -= n.scrollLeft; y -= n.scrollTop;}
+    return {left: x, top: y};
+  }
+  // Get a node's text content.
+  function eltText(node) {
+    return node.textContent || node.innerText || node.nodeValue || "";
+  }
+
+  // Operations on {line, ch} objects.
+  function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
+  function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);}
+  function copyPos(x) {return {line: x.line, ch: x.ch};}
+
+  function htmlEscape(str) {
+    return str.replace(/[<&]/g, function(str) {return str == "&" ? "&amp;" : "&lt;";});
+  }
+
+  // Used to position the cursor after an undo/redo by finding the
+  // last edited character.
+  function editEnd(from, to) {
+    if (!to) return from ? from.length : 0;
+    if (!from) return to.length;
+    for (var i = from.length, j = to.length; i >= 0 && j >= 0; --i, --j)
+      if (from.charAt(i) != to.charAt(j)) break;
+    return j + 1;
+  }
+
+  function indexOf(collection, elt) {
+    if (collection.indexOf) return collection.indexOf(elt);
+    for (var i = 0, e = collection.length; i < e; ++i)
+      if (collection[i] == elt) return i;
+    return -1;
+  }
+
+  // See if "".split is the broken IE version, if so, provide an
+  // alternative way to split lines.
+  if ("\n\nb".split(/\n/).length != 3)
+    var splitLines = function(string) {
+      var pos = 0, nl, result = [];
+      while ((nl = string.indexOf("\n", pos)) > -1) {
+        result.push(string.slice(pos, string.charAt(nl-1) == "\r" ? nl - 1 : nl));
+        pos = nl + 1;
+      }
+      result.push(string.slice(pos));
+      return result;
+    };
+  else
+    var splitLines = function(string){return string.split(/\r?\n/);};
+
+  // Sane model of finding and setting the selection in a textarea
+  if (window.getSelection) {
+    var selRange = function(te) {
+      try {return {start: te.selectionStart, end: te.selectionEnd};}
+      catch(e) {return null;}
+    };
+    var setSelRange = function(te, start, end) {
+      try {te.setSelectionRange(start, end);}
+      catch(e) {} // Fails on Firefox when textarea isn't part of the document
+    };
+  }
+  // IE model. Don't ask.
+  else {
+    var selRange = function(te) {
+      try {var range = document.selection.createRange();}
+      catch(e) {return null;}
+      if (!range || range.parentElement() != te) return null;
+      var val = te.value, len = val.length, localRange = te.createTextRange();
+      localRange.moveToBookmark(range.getBookmark());
+      var endRange = te.createTextRange();
+      endRange.collapse(false);
+
+      if (localRange.compareEndPoints("StartToEnd", endRange) > -1)
+        return {start: len, end: len};
+
+      var start = -localRange.moveStart("character", -len);
+      for (var i = val.indexOf("\r"); i > -1 && i < start; i = val.indexOf("\r", i+1), start++) {}
+
+      if (localRange.compareEndPoints("EndToEnd", endRange) > -1)
+        return {start: start, end: len};
+
+      var end = -localRange.moveEnd("character", -len);
+      for (var i = val.indexOf("\r"); i > -1 && i < end; i = val.indexOf("\r", i+1), end++) {}
+      return {start: start, end: end};
+    };
+    var setSelRange = function(te, start, end) {
+      var range = te.createTextRange();
+      range.collapse(true);
+      var endrange = range.duplicate();
+      var newlines = 0, txt = te.value;
+      for (var pos = txt.indexOf("\n"); pos > -1 && pos < start; pos = txt.indexOf("\n", pos + 1))
+        ++newlines;
+      range.move("character", start - newlines);
+      for (; pos > -1 && pos < end; pos = txt.indexOf("\n", pos + 1))
+        ++newlines;
+      endrange.move("character", end - newlines);
+      range.setEndPoint("EndToEnd", endrange);
+      range.select();
+    };
+  }
+
+  CodeMirror.defineMode("null", function() {
+    return {token: function(stream) {stream.skipToEnd();}};
+  });
+  CodeMirror.defineMIME("text/plain", "null");
+
+  return CodeMirror;
+})();
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/overlay.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/overlay.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/lib/overlay.js	(revision 25596)
@@ -0,0 +1,51 @@
+// Utility function that allows modes to be combined. The mode given
+// as the base argument takes care of most of the normal mode
+// functionality, but a second (typically simple) mode is used, which
+// can override the style of text. Both modes get to parse all of the
+// text, but when both assign a non-null style to a piece of code, the
+// overlay wins, unless the combine argument was true, in which case
+// the styles are combined.
+
+CodeMirror.overlayParser = function(base, overlay, combine) {
+  return {
+    startState: function() {
+      return {
+        base: CodeMirror.startState(base),
+        overlay: CodeMirror.startState(overlay),
+        basePos: 0, baseCur: null,
+        overlayPos: 0, overlayCur: null
+      };
+    },
+    copyState: function(state) {
+      return {
+        base: CodeMirror.copyState(base, state.base),
+        overlay: CodeMirror.copyState(overlay, state.overlay),
+        basePos: state.basePos, baseCur: null,
+        overlayPos: state.overlayPos, overlayCur: null
+      };
+    },
+
+    token: function(stream, state) {
+      if (stream.start == state.basePos) {
+        state.baseCur = base.token(stream, state.base);
+        state.basePos = stream.pos;
+      }
+      if (stream.start == state.overlayPos) {
+        stream.pos = stream.start;
+        state.overlayCur = overlay.token(stream, state.overlay);
+        state.overlayPos = stream.pos;
+      }
+      stream.pos = Math.min(state.basePos, state.overlayPos);
+      if (stream.eol()) state.basePos = state.overlayPos = 0;
+
+      if (state.overlayCur == null) return state.baseCur;
+      if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur;
+      else return state.overlayCur;
+    },
+    
+    indent: function(state, textAfter) {
+      return base.indent(state.base, textAfter);
+    },
+    electricChars: base.electricChars
+  };
+};
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css	(revision 25596)
@@ -0,0 +1,6 @@
+span.c-like-keyword {color: #90b;}
+span.c-like-number {color: #291;}
+span.c-like-comment {color: #a70;}
+span.c-like-string {color: #a22;}
+span.c-like-preprocessor {color: #049;}
+span.c-like-var {color: #22b;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js	(revision 25596)
@@ -0,0 +1,181 @@
+CodeMirror.defineMode("clike", function(config, parserConfig) {
+  var indentUnit = config.indentUnit, keywords = parserConfig.keywords,
+      cpp = parserConfig.useCPP, multiLineStrings = parserConfig.multiLineStrings, $vars = parserConfig.$vars;
+  var isOperatorChar = /[+\-*&%=<>!?|]/;
+
+  function chain(stream, state, f) {
+    state.tokenize = f;
+    return f(stream, state);
+  }
+
+  var type;
+  function ret(tp, style) {
+    type = tp;
+    return style;
+  }
+
+  function tokenBase(stream, state) {
+    var ch = stream.next();
+    if (ch == '"' || ch == "'")
+      return chain(stream, state, tokenString(ch));
+    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
+      return ret(ch);
+    else if (ch == "#" && cpp && state.startOfLine) {
+      stream.skipToEnd();
+      return ret("directive", "c-like-preprocessor");
+    }
+    else if (/\d/.test(ch)) {
+      stream.eatWhile(/[\w\.]/)
+      return ret("number", "c-like-number");
+    }
+    else if (ch == "/") {
+      if (stream.eat("*")) {
+        return chain(stream, state, tokenComment);
+      }
+      else if (stream.eat("/")) {
+        stream.skipToEnd();
+        return ret("comment", "c-like-comment");
+      }
+      else {
+        stream.eatWhile(isOperatorChar);
+        return ret("operator");
+      }
+    }
+    else if (isOperatorChar.test(ch)) {
+      stream.eatWhile(isOperatorChar);
+      return ret("operator");
+    }
+    else if ($vars && ch == "$") {
+      stream.eatWhile(/[\w\$_]/);
+      return ret("word", "c-like-var");
+    }
+    else {
+      stream.eatWhile(/[\w\$_]/);
+      if (keywords && keywords.propertyIsEnumerable(stream.current())) return ret("keyword", "c-like-keyword");
+      return ret("word", "c-like-word");
+    }
+  }
+
+  function tokenString(quote) {
+    return function(stream, state) {
+      var escaped = false, next, end = false;
+      while ((next = stream.next()) != null) {
+        if (next == quote && !escaped) {end = true; break;}
+        escaped = !escaped && next == "\\";
+      }
+      if (end || !(escaped || multiLineStrings))
+        state.tokenize = tokenBase;
+      return ret("string", "c-like-string");
+    };
+  }
+
+  function tokenComment(stream, state) {
+    var maybeEnd = false, ch;
+    while (ch = stream.next()) {
+      if (ch == "/" && maybeEnd) {
+        state.tokenize = tokenBase;
+        break;
+      }
+      maybeEnd = (ch == "*");
+    }
+    return ret("comment", "c-like-comment");
+  }
+
+  function Context(indented, column, type, align, prev) {
+    this.indented = indented;
+    this.column = column;
+    this.type = type;
+    this.align = align;
+    this.prev = prev;
+  }
+
+  function pushContext(state, col, type) {
+    return state.context = new Context(state.indented, col, type, null, state.context);
+  }
+  function popContext(state) {
+    return state.context = state.context.prev;
+  }
+
+  // Interface
+
+  return {
+    startState: function(basecolumn) {
+      return {
+        tokenize: tokenBase,
+        context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
+        indented: 0,
+        startOfLine: true
+      };
+    },
+
+    token: function(stream, state) {
+      var ctx = state.context;
+      if (stream.sol()) {
+        if (ctx.align == null) ctx.align = false;
+        state.indented = stream.indentation();
+        state.startOfLine = true;
+      }
+      if (stream.eatSpace()) return null;
+      var style = state.tokenize(stream, state);
+      if (type == "comment") return style;
+      if (ctx.align == null) ctx.align = true;
+
+      if ((type == ";" || type == ":") && ctx.type == "statement") popContext(state);
+      else if (type == "{") pushContext(state, stream.column(), "}");
+      else if (type == "[") pushContext(state, stream.column(), "]");
+      else if (type == "(") pushContext(state, stream.column(), ")");
+      else if (type == "}") {
+        if (ctx.type == "statement") ctx = popContext(state);
+        if (ctx.type == "}") ctx = popContext(state);
+        if (ctx.type == "statement") ctx = popContext(state);
+      }
+      else if (type == ctx.type) popContext(state);
+      else if (ctx.type == "}") pushContext(state, stream.column(), "statement");
+      state.startOfLine = false;
+      return style;
+    },
+
+    indent: function(state, textAfter) {
+      if (state.tokenize != tokenBase) return 0;
+      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;
+      if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
+      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
+      else return ctx.indented + (closing ? 0 : indentUnit);
+    },
+
+    electricChars: "{}"
+  };
+});
+
+(function() {
+  function keywords(str) {
+    var obj = {}, words = str.split(" ");
+    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
+    return obj;
+  }
+  var cKeywords = "auto if break int case long char register continue return default short do sizeof " +
+    "double static else struct entry switch extern typedef float union for unsigned " +
+    "goto while enum void const signed volatile";
+
+  CodeMirror.defineMIME("text/x-csrc", {
+    name: "clike",
+    useCPP: true,
+    keywords: keywords(cKeywords)
+  });
+  CodeMirror.defineMIME("text/x-c++src", {
+    name: "clike",
+    useCPP: true,
+    keywords: keywords(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " +
+                       "static_cast typeid catch false operator template typename class friend private " +
+                       "this using const_cast inline public throw virtual delete mutable protected true " +
+                       "wchar_t")
+  });
+  CodeMirror.defineMIME("text/x-java", {
+    name: "clike",
+    keywords: keywords("abstract assert boolean break byte case catch char class const continue default " + 
+                       "do double else enum extends false final finally float for goto if implements import " +
+                       "instanceof int interface long native new null package private protected public " +
+                       "return short static strictfp super switch synchronized this throw throws transient " +
+                       "true try void volatile while")
+  });
+}());
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/clike/index.html	(revision 25596)
@@ -0,0 +1,101 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: C-like mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="clike.js"></script>
+    <link rel="stylesheet" href="clike.css">
+    <link rel="stylesheet" href="../../css/docs.css">
+    <style>.CodeMirror {border: 2px inset #dee;}</style>
+  </head>
+  <body>
+    <h1>CodeMirror 2: C-like mode</h1>
+
+<form><textarea id="code" name="code">
+/* C demo code */
+
+#include <zmq.h>
+#include <pthread.h>
+#include <semaphore.h>
+#include <time.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <malloc.h>
+
+typedef struct {
+  void* arg_socket;
+  zmq_msg_t* arg_msg;
+  char* arg_string;
+  unsigned long arg_len;
+  int arg_int, arg_command;
+
+  int signal_fd;
+  int pad;
+  void* context;
+  sem_t sem;
+} acl_zmq_context;
+
+#define p(X) (context->arg_##X)
+
+void* zmq_thread(void* context_pointer) {
+  acl_zmq_context* context = (acl_zmq_context*)context_pointer;
+  char ok = 'K', err = 'X';
+  int res;
+
+  while (1) {
+    while ((res = sem_wait(&amp;context->sem)) == EINTR);
+    if (res) {write(context->signal_fd, &amp;err, 1); goto cleanup;}
+    switch(p(command)) {
+    case 0: goto cleanup;
+    case 1: p(socket) = zmq_socket(context->context, p(int)); break;
+    case 2: p(int) = zmq_close(p(socket)); break;
+    case 3: p(int) = zmq_bind(p(socket), p(string)); break;
+    case 4: p(int) = zmq_connect(p(socket), p(string)); break;
+    case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &amp;p(len)); break;
+    case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;
+    case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;
+    case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;
+    case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;
+    }
+    p(command) = errno;
+    write(context->signal_fd, &amp;ok, 1);
+  }
+ cleanup:
+  close(context->signal_fd);
+  free(context_pointer);
+  return 0;
+}
+
+void* zmq_thread_init(void* zmq_context, int signal_fd) {
+  acl_zmq_context* context = malloc(sizeof(acl_zmq_context));
+  pthread_t thread;
+
+  context->context = zmq_context;
+  context->signal_fd = signal_fd;
+  sem_init(&amp;context->sem, 1, 0);
+  pthread_create(&amp;thread, 0, &amp;zmq_thread, context);
+  pthread_detach(thread);
+  return context;
+}
+</textarea></form>
+
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+        lineNumbers: true,
+        matchBrackets: true,
+        mode: "text/x-csrc"
+      });
+    </script>
+
+    <p>Simple mode that tries to handle C-like languages as well as it
+    can. Takes two configuration parameters: <code>keywords</code>, an
+    object whose property names are the keywords in the language,
+    and <code>useCPP</code>, which determines whether C preprocessor
+    directives are recognized.</p>
+
+    <p><strong>MIME types defined:</strong> <code>text/x-csrc</code>
+    (C code), <code>text/x-c++src</code> (C++
+    code), <code>text/x-java</code> (Java code).</p>
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.css	(revision 25596)
@@ -0,0 +1,9 @@
+span.css-at {color: #708;}
+span.css-unit {color: #281;}
+span.css-value {color: #708;}
+span.css-identifier {color: black;}
+span.css-selector {color: #11B;}
+span.css-important {color: #00F;}
+span.css-colorcode {color: #299;}
+span.css-comment {color: #A70;}
+span.css-string {color: #A22;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/css.js	(revision 25596)
@@ -0,0 +1,124 @@
+CodeMirror.defineMode("css", function(config) {
+  var indentUnit = config.indentUnit, type;
+  function ret(style, tp) {type = tp; return style;}
+
+  function tokenBase(stream, state) {
+    var ch = stream.next();
+    if (ch == "@") {stream.eatWhile(/\w/); return ret("css-at", stream.current());}
+    else if (ch == "/" && stream.eat("*")) {
+      state.tokenize = tokenCComment;
+      return tokenCComment(stream, state);
+    }
+    else if (ch == "<" && stream.eat("!")) {
+      state.tokenize = tokenSGMLComment;
+      return tokenSGMLComment(stream, state);
+    }
+    else if (ch == "=") ret(null, "compare");
+    else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare");
+    else if (ch == "\"" || ch == "'") {
+      state.tokenize = tokenString(ch);
+      return state.tokenize(stream, state);
+    }
+    else if (ch == "#") {
+      stream.eatWhile(/\w/);
+      return ret("css-selector", "hash");
+    }
+    else if (ch == "!") {
+      stream.match(/^\s*\w*/);
+      return ret("css-important", "important");
+    }
+    else if (/\d/.test(ch)) {
+      stream.eatWhile(/[\w.%]/);
+      return ret("css-unit", "unit");
+    }
+    else if (/[,.+>*\/]/.test(ch)) {
+      return ret(null, "select-op");
+    }
+    else if (/[;{}:\[\]]/.test(ch)) {
+      return ret(null, ch);
+    }
+    else {
+      stream.eatWhile(/[\w\\\-_]/);
+      return ret("css-identifier", "identifier");
+    }
+  }
+
+  function tokenCComment(stream, state) {
+    var maybeEnd = false, ch;
+    while ((ch = stream.next()) != null) {
+      if (maybeEnd && ch == "/") {
+        state.tokenize = tokenBase;
+        break;
+      }
+      maybeEnd = (ch == "*");
+    }
+    return ret("css-comment", "comment");
+  }
+
+  function tokenSGMLComment(stream, state) {
+    var dashes = 0, ch;
+    while ((ch = stream.next()) != null) {
+      if (dashes >= 2 && ch == ">") {
+        state.tokenize = tokenBase;
+        break;
+      }
+      dashes = (ch == "-") ? dashes + 1 : 0;
+    }
+    return ret("css-comment", "comment");
+  }
+
+  function tokenString(quote) {
+    return function(stream, state) {
+      var escaped = false, ch;
+      while ((ch = stream.next()) != null) {
+        if (ch == quote && !escaped)
+          break;
+        escaped = !escaped && ch == "\\";
+      }
+      if (!escaped) state.tokenize = tokenBase;
+      return ret("css-string", "string");
+    };
+  }
+
+  return {
+    startState: function(base) {
+      return {tokenize: tokenBase,
+              baseIndent: base || 0,
+              stack: []};
+    },
+
+    token: function(stream, state) {
+      if (stream.eatSpace()) return null;
+      var style = state.tokenize(stream, state);
+
+      var context = state.stack[state.stack.length-1];
+      if (type == "hash" && context == "rule") style = "css-colorcode";
+      else if (style == "css-identifier") {
+        if (context == "rule") style = "css-value";
+        else if (!context || context == "@media{") style = "css-selector";
+      }
+
+      if (context == "rule" && /^[\{\};]$/.test(type))
+        state.stack.pop();
+      if (type == "{") {
+        if (context == "@media") state.stack[state.stack.length-1] = "@media{";
+        else state.stack.push("{");
+      }
+      else if (type == "}") state.stack.pop();
+      else if (type == "@media") state.stack.push("@media");
+      else if (context != "rule" && context != "@media" && type != "comment") state.stack.push("rule");
+      return style;
+    },
+
+    indent: function(state, textAfter) {
+      var n = state.stack.length;
+      if (/^\}/.test(textAfter))
+        n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1;
+      return state.baseIndent + n * indentUnit;
+    },
+
+    electricChars: "}"
+  };
+});
+
+CodeMirror.defineMIME("text/css", "css");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/css/index.html	(revision 25596)
@@ -0,0 +1,56 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: CSS mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="css.js"></script>
+    <link rel="stylesheet" href="css.css">
+    <style>.CodeMirror {background: #f8f8f8;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: CSS mode</h1>
+    <form><textarea id="code" name="code">
+/* Some example CSS */
+
+@import url("something.css");
+
+body {
+  margin: 0;
+  padding: 3em 6em;
+  font-family: tahoma, arial, sans-serif;
+  color: #000;
+}
+
+#navigation a {
+  font-weight: bold;
+  text-decoration: none !important;
+}
+
+h1 {
+  font-size: 2.5em;
+}
+
+h2 {
+  font-size: 1.7em;
+}
+
+h1:before, h2:before {
+  content: "::";
+}
+
+code {
+  font-family: courier, monospace;
+  font-size: 80%;
+  color: #418A8A;
+}
+</textarea></form>
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
+    </script>
+
+    <p><strong>MIME types defined:</strong> <code>text/css</code>.</p>
+
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css	(revision 25596)
@@ -0,0 +1,3 @@
+span.diff-rangeinfo {color: #a0b;}
+span.diff-minus {color: #a22;}
+span.diff-plus {color: #2b2;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js	(revision 25596)
@@ -0,0 +1,13 @@
+CodeMirror.defineMode("diff", function() {
+  return {
+    token: function(stream) {
+      var ch = stream.next();
+      stream.skipToEnd();
+      if (ch == "+") return "diff-plus";
+      if (ch == "-") return "diff-minus";
+      if (ch == "@") return "diff-rangeinfo";
+    }
+  };
+});
+
+CodeMirror.defineMIME("text/x-diff", "diff");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/diff/index.html	(revision 25596)
@@ -0,0 +1,99 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: Diff mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="diff.js"></script>
+    <link rel="stylesheet" href="diff.css">
+    <style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: Diff mode</h1>
+    <form><textarea id="code" name="code">
+diff --git a/index.html b/index.html
+index c1d9156..7764744 100644
+--- a/index.html
++++ b/index.html
+@@ -95,7 +95,8 @@ StringStream.prototype = {
+     <script>
+       var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+         lineNumbers: true,
+-        autoMatchBrackets: true
++        autoMatchBrackets: true,
++      onGutterClick: function(x){console.log(x);}
+       });
+     </script>
+   </body>
+diff --git a/lib/codemirror.js b/lib/codemirror.js
+index 04646a9..9a39cc7 100644
+--- a/lib/codemirror.js
++++ b/lib/codemirror.js
+@@ -399,10 +399,16 @@ var CodeMirror = (function() {
+     }
+ 
+     function onMouseDown(e) {
+-      var start = posFromMouse(e), last = start;
++      var start = posFromMouse(e), last = start, target = e.target();
+       if (!start) return;
+       setCursor(start.line, start.ch, false);
+       if (e.button() != 1) return;
++      if (target.parentNode == gutter) {
++        if (options.onGutterClick)
++          options.onGutterClick(indexOf(gutter.childNodes, target) + showingFrom);
++        return;
++      }
++
+       if (!focused) onFocus();
+ 
+       e.stop();
+@@ -808,7 +814,7 @@ var CodeMirror = (function() {
+       for (var i = showingFrom; i < showingTo; ++i) {
+         var marker = lines[i].gutterMarker;
+         if (marker) html.push('<div class="' + marker.style + '">' + htmlEscape(marker.text) + '</div>');
+-        else html.push("<div>" + (options.lineNumbers ? i + 1 : "\u00a0") + "</div>");
++        else html.push("<div>" + (options.lineNumbers ? i + options.firstLineNumber : "\u00a0") + "</div>");
+       }
+       gutter.style.display = "none"; // TODO test whether this actually helps
+       gutter.innerHTML = html.join("");
+@@ -1371,10 +1377,8 @@ var CodeMirror = (function() {
+         if (option == "parser") setParser(value);
+         else if (option === "lineNumbers") setLineNumbers(value);
+         else if (option === "gutter") setGutter(value);
+-        else if (option === "readOnly") options.readOnly = value;
+-        else if (option === "indentUnit") {options.indentUnit = indentUnit = value; setParser(options.parser);}
+-        else if (/^(?:enterMode|tabMode|indentWithTabs|readOnly|autoMatchBrackets|undoDepth)$/.test(option)) options[option] = value;
+-        else throw new Error("Can't set option " + option);
++        else if (option === "indentUnit") {options.indentUnit = value; setParser(options.parser);}
++        else options[option] = value;
+       },
+       cursorCoords: cursorCoords,
+       undo: operation(undo),
+@@ -1402,7 +1406,8 @@ var CodeMirror = (function() {
+       replaceRange: operation(replaceRange),
+ 
+       operation: function(f){return operation(f)();},
+-      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);}
++      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);},
++      getInputField: function(){return input;}
+     };
+     return instance;
+   }
+@@ -1420,6 +1425,7 @@ var CodeMirror = (function() {
+     readOnly: false,
+     onChange: null,
+     onCursorActivity: null,
++    onGutterClick: null,
+     autoMatchBrackets: false,
+     workTime: 200,
+     workDelay: 300,
+</textarea></form>
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
+    </script>
+
+    <p><strong>MIME types defined:</strong> <code>text/x-diff</code>.</p>
+
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css	(revision 25596)
@@ -0,0 +1,25 @@
+span.hs-char,
+span.hs-float,
+span.hs-integer,
+span.hs-string 	{color: #762;}
+
+span.hs-comment {color: #262;font-style: italic;}
+span.hs-pragma {color: #555;font-style: italic;}
+
+span.hs-special,
+span.hs-varid,
+span.hs-varsym {color: #000;}
+
+span.hs-conid,
+span.hs-consym {color: #b11;}
+
+span.hs-qualifier {color: #555;}
+
+span.hs-reservedid,
+span.hs-reservedop {color: #730;}
+
+span.hs-prelude-varid,
+span.hs-prelude-varsym {color: #30a;}
+span.hs-prelude-conid {color: #b11;}
+
+span.hs-error {background-color: #fdd;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js	(revision 25596)
@@ -0,0 +1,242 @@
+CodeMirror.defineMode("haskell", function(cmCfg, modeCfg) {
+
+  function switchState(source, setState, f) {
+    setState(f);
+    return f(source, setState);
+  }
+  
+  // These should all be Unicode extended, as per the Haskell 2010 report
+  var smallRE = /[a-z_]/;
+  var largeRE = /[A-Z]/;
+  var digitRE = /[0-9]/;
+  var hexitRE = /[0-9A-Fa-f]/;
+  var octitRE = /[0-7]/;
+  var idRE = /[a-z_A-Z0-9']/;
+  var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/;
+  var specialRE = /[(),;[\]`{}]/;
+  var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer
+    
+  function normal(source, setState) {
+    if (source.eatWhile(whiteCharRE)) {
+      return null;
+    }
+      
+    var ch = source.next();
+    if (specialRE.test(ch)) {
+      if (ch == '{' && source.eat('-')) {
+        var t = "hs-comment";
+        if (source.eat('#')) {
+          t = "hs-pragma";
+        }
+        return switchState(source, setState, ncomment(t, 1));
+      }
+      return "hs-special";
+    }
+    
+    if (ch == '\'') {
+      if (source.eat('\\')) {
+        source.next();  // should handle other escapes here
+      }
+      else {
+        source.next();
+      }
+      if (source.eat('\'')) {
+        return "hs-char";
+      }
+      return "hs-error";
+    }
+    
+    if (ch == '"') {
+      return switchState(source, setState, stringLiteral);
+    }
+      
+    if (largeRE.test(ch)) {
+      source.eatWhile(idRE);
+      if (source.eat('.')) {
+        return "hs-qualifier";
+      }
+      return "hs-conid";
+    }
+      
+    if (smallRE.test(ch)) {
+      source.eatWhile(idRE);
+      return "hs-varid";
+    }
+      
+    if (digitRE.test(ch)) {
+      if (ch == '0') {
+        if (source.eat(/[xX]/)) {
+          source.eatWhile(hexitRE); // should require at least 1
+          return "hs-integer";
+        }
+        if (source.eat(/[oO]/)) {
+          source.eatWhile(octitRE); // should require at least 1
+          return "hs-integer";
+        }
+      }
+      source.eatWhile(digitRE);
+      var t = "hs-integer";
+      if (source.eat('.')) {
+        t = "hs-float";
+        source.eatWhile(digitRE); // should require at least 1
+      }
+      if (source.eat(/[eE]/)) {
+        t = "hs-float";
+        source.eat(/[-+]/);
+        source.eatWhile(digitRE); // should require at least 1
+      }
+      return t;
+    }
+      
+    if (symbolRE.test(ch)) {
+      if (ch == '-' && source.eat(/-/)) {
+        source.eatWhile(/-/);
+        if (!source.eat(symbolRE)) {
+          source.skipToEnd();
+          return "hs-comment";
+        }
+      }
+      var t = "hs-varsym";
+      if (ch == ':') {
+        t = "hs-consym";
+      }
+      source.eatWhile(symbolRE);
+      return t;    
+    }
+      
+    return "hs-error";
+  }
+    
+  function ncomment(type, nest) {
+    if (nest == 0) {
+      return normal;
+    }
+    return function(source, setState) {
+      var currNest = nest;
+      while (!source.eol()) {
+        ch = source.next();
+        if (ch == '{' && source.eat('-')) {
+          ++currNest;
+        }
+        else if (ch == '-' && source.eat('}')) {
+          --currNest;
+          if (currNest == 0) {
+            setState(normal);
+            return type;
+          }
+        }
+      }
+      setState(ncomment(type, currNest));
+      return type;
+    }
+  }
+    
+  function stringLiteral(source, setState) {
+    while (!source.eol()) {
+      var ch = source.next();
+      if (ch == '"') {
+        setState(normal);
+        return "hs-string";
+      }
+      if (ch == '\\') {
+        if (source.eol() || source.eat(whiteCharRE)) {
+          setState(stringGap);
+          return "hs-string";
+        }
+        if (source.eat('&')) {
+        }
+        else {
+          source.next(); // should handle other escapes here
+        }
+      }
+    }
+    setState(normal);
+    return "hs-error";
+  }
+  
+  function stringGap(source, setState) {
+    if (source.eat('\\')) {
+      return switchState(source, setState, stringLiteral);
+    }
+    source.next();
+    setState(normal);
+    return "hs-error";
+  }
+  
+  
+  var wellKnownWords = (function() {
+    var wkw = {};
+    function setType(t) {
+      return function () {
+        for (var i = 0; i < arguments.length; i++)
+          wkw[arguments[i]] = t;
+      }
+    }
+    
+    setType("hs-reservedid")(
+      "case", "class", "data", "default", "deriving", "do", "else", "foreign",
+      "if", "import", "in", "infix", "infixl", "infixr", "instance", "let",
+      "module", "newtype", "of", "then", "type", "where", "_");
+      
+    setType("hs-reservedop")(
+      "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>");
+      
+    setType("hs-prelude-varsym")(
+      "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<",
+      "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**");
+      
+    setType("hs-prelude-conid")(
+      "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq",
+      "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT",
+      "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left",
+      "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read",
+      "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS",
+      "String", "True");
+      
+    setType("hs-prelude-varid")(
+      "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf",
+      "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling",
+      "compare", "concat", "concatMap", "const", "cos", "cosh", "curry",
+      "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either",
+      "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo",
+      "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter",
+      "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap",
+      "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger",
+      "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents",
+      "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized",
+      "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last",
+      "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map",
+      "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound",
+      "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or",
+      "otherwise", "pi", "pred", "print", "product", "properFraction",
+      "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile",
+      "readIO", "readList", "readLn", "readParen", "reads", "readsPrec",
+      "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse",
+      "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq",
+      "sequence", "sequence_", "show", "showChar", "showList", "showParen",
+      "showString", "shows", "showsPrec", "significand", "signum", "sin",
+      "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum",
+      "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger",
+      "toRational", "truncate", "uncurry", "undefined", "unlines", "until",
+      "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip",
+      "zip3", "zipWith", "zipWith3");
+      
+    return wkw;
+  })();
+    
+  
+  
+  return {
+    startState: function ()  { return { f: normal }; },
+    copyState:  function (s) { return { f: s.f }; },
+    
+    token: function(stream, state) {
+      var t = state.f(stream, function(s) { state.f = s; });
+      var w = stream.current();
+      return (w in wellKnownWords) ? wellKnownWords[w] : t;
+    }
+  };
+
+});
+
+CodeMirror.defineMIME("text/x-haskell", "haskell");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html	(revision 25596)
@@ -0,0 +1,59 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: Haskell mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="haskell.js"></script>
+    <link rel="stylesheet" href="haskell.css">
+    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: Haskell mode</h1>
+
+<form><textarea id="code" name="code">
+module UniquePerms (
+    uniquePerms
+    )
+where
+
+-- | Find all unique permutations of a list where there might be duplicates.
+uniquePerms :: (Eq a) => [a] -> [[a]]
+uniquePerms = permBag . makeBag
+
+-- | An unordered collection where duplicate values are allowed,
+-- but represented with a single value and a count.
+type Bag a = [(a, Int)]
+
+makeBag :: (Eq a) => [a] -> Bag a
+makeBag [] = []
+makeBag (a:as) = mix a $ makeBag as
+  where
+    mix a []                        = [(a,1)]
+    mix a (bn@(b,n):bs) | a == b    = (b,n+1):bs
+                        | otherwise = bn : mix a bs
+
+permBag :: Bag a -> [[a]]
+permBag [] = [[]]
+permBag bs = concatMap (\(f,cs) -> map (f:) $ permBag cs) . oneOfEach $ bs
+  where
+    oneOfEach [] = []
+    oneOfEach (an@(a,n):bs) =
+        let bs' = if n == 1 then bs else (a,n-1):bs
+        in (a,bs') : mapSnd (an:) (oneOfEach bs)
+    
+    apSnd f (a,b) = (a, f b)
+    mapSnd = map . apSnd
+</textarea></form>
+
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+        lineNumbers: true,
+        matchBrackets: true
+      });
+    </script>
+
+    <p><strong>MIME types defined:</strong> <code>text/x-haskell</code>.</p>
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js	(revision 25596)
@@ -0,0 +1,66 @@
+CodeMirror.defineMode("htmlmixed", function(config, parserConfig) {
+  var htmlMode = CodeMirror.getMode(config, {name: "xml", htmlMode: true});
+  var jsMode = CodeMirror.getMode(config, "javascript");
+  var cssMode = CodeMirror.getMode(config, "css");
+
+  function html(stream, state) {
+    var style = htmlMode.token(stream, state.htmlState);
+    if (style == "xml-tag" && stream.current() == ">" && state.htmlState.context) {
+      if (/^script$/i.test(state.htmlState.context.tagName)) {
+        state.token = javascript;
+        state.localState = jsMode.startState(htmlMode.indent(state.htmlState, ""));
+      }
+      else if (/^style$/i.test(state.htmlState.context.tagName)) {
+        state.token = css;
+        state.localState = cssMode.startState(htmlMode.indent(state.htmlState, ""));
+      }
+    }
+    return style;
+  }
+  function javascript(stream, state) {
+    if (stream.match(/^<\/\s*script\s*>/i, false)) {
+      state.token = html;
+      state.curState = null;
+      return html(stream, state);
+    }
+    return jsMode.token(stream, state.localState);
+  }
+  function css(stream, state) {
+    if (stream.match(/^<\/\s*style\s*>/i, false)) {
+      state.token = html;
+      state.localState = null;
+      return html(stream, state);
+    }
+    return cssMode.token(stream, state.localState);
+  }
+
+  return {
+    startState: function() {
+      var state = htmlMode.startState();
+      return {token: html, localState: null, htmlState: state};
+    },
+
+    copyState: function(state) {
+      if (state.localState)
+        var local = CodeMirror.copyState(state.token == css ? cssMode : jsMode, state.localState);
+      return {token: state.token, localState: local, htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};
+    },
+
+    token: function(stream, state) {
+      return state.token(stream, state);
+    },
+
+    indent: function(state, textAfter) {
+      if (state.token == html || /^\s*<\//.test(textAfter))
+        return htmlMode.indent(state.htmlState, textAfter);
+      else if (state.token == javascript)
+        return jsMode.indent(state.localState, textAfter);
+      else
+        return cssMode.indent(state.localState, textAfter);
+    },
+
+    electricChars: "/{}:"
+  }
+});
+
+CodeMirror.defineMIME("text/html", "htmlmixed");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html	(revision 25596)
@@ -0,0 +1,54 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: HTML mixed mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="../xml/xml.js"></script>
+    <link rel="stylesheet" href="../xml/xml.css">
+    <script src="../javascript/javascript.js"></script>
+    <link rel="stylesheet" href="../javascript/javascript.css">
+    <script src="../css/css.js"></script>
+    <link rel="stylesheet" href="../css/css.css">
+    <script src="htmlmixed.js"></script>
+    <link rel="stylesheet" href="../../css/docs.css">
+    <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+  </head>
+  <body>
+    <h1>CodeMirror 2: HTML mixed mode</h1>
+    <form><textarea id="code" name="code">
+<html style="color: green">
+  <!-- this is a comment -->
+  <head>
+    <title>Mixed HTML Example</title>
+    <style type="text/css">
+      h1 {font-family: comic sans; color: #f0f;}
+      div {background: yellow !important;}
+      body {
+        max-width: 50em;
+        margin: 1em 2em 1em 5em;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Mixed HTML Example</h1>
+    <script>
+      function jsFunc(arg1, arg2) {
+        if (arg1 && arg2) document.body.innerHTML = "achoo";
+      }
+    </script>
+  </body>
+</html>
+</textarea></form>
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {mode: "text/html", tabMode: "indent"});
+    </script>
+
+    <p>The HTML mixed mode depends on the XML, JavaScript, and CSS modes.</p>
+
+    <p><strong>MIME types defined:</strong> <code>text/html</code>
+    (redefined, only takes effect if you load this parser after the
+    XML parser).</p>
+
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html	(revision 25596)
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: JavaScript mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="javascript.js"></script>
+    <link rel="stylesheet" href="javascript.css">
+    <link rel="stylesheet" href="../../css/docs.css">
+    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+  </head>
+  <body>
+    <h1>CodeMirror 2: JavaScript mode</h1>
+
+<div><textarea id="code" name="code">
+// Demo code (the actual new parser character stream implementation)
+
+function StringStream(string) {
+  this.pos = 0;
+  this.string = string;
+}
+
+StringStream.prototype = {
+  done: function() {return this.pos >= this.string.length;},
+  peek: function() {return this.string.charAt(this.pos);},
+  next: function() {
+    if (this.pos &lt; this.string.length)
+      return this.string.charAt(this.pos++);
+  },
+  eat: function(match) {
+    var ch = this.string.charAt(this.pos);
+    if (typeof match == "string") var ok = ch == match;
+    else var ok = ch &amp;&amp; match.test ? match.test(ch) : match(ch);
+    if (ok) {this.pos++; return ch;}
+  },
+  eatWhile: function(match) {
+    var start = this.pos;
+    while (this.eat(match));
+    if (this.pos > start) return this.string.slice(start, this.pos);
+  },
+  backUp: function(n) {this.pos -= n;},
+  column: function() {return this.pos;},
+  eatSpace: function() {
+    var start = this.pos;
+    while (/\s/.test(this.string.charAt(this.pos))) this.pos++;
+    return this.pos - start;
+  },
+  match: function(pattern, consume, caseInsensitive) {
+    if (typeof pattern == "string") {
+      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
+      if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
+        if (consume !== false) this.pos += str.length;
+        return true;
+      }
+    }
+    else {
+      var match = this.string.slice(this.pos).match(pattern);
+      if (match &amp;&amp; consume !== false) this.pos += match[0].length;
+      return match;
+    }
+  }
+};
+</textarea></div>
+
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+        lineNumbers: true,
+        matchBrackets: true
+      });
+    </script>
+
+    <p>JavaScript mode supports a single configuration
+    option, <code>json</code>, which will set the mode to expect JSON
+    data rather than a JavaScript program.</p>
+
+    <p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>.</p>
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css	(revision 25596)
@@ -0,0 +1,6 @@
+span.js-keyword {color: #90b;}
+span.js-atom {color: #291;}
+span.js-variabledef {color: #00f;}
+span.js-localvariable {color: #049;}
+span.js-comment {color: #a70;}
+span.js-string {color: #a22;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js	(revision 25596)
@@ -0,0 +1,348 @@
+CodeMirror.defineMode("javascript", function(config, parserConfig) {
+  var indentUnit = config.indentUnit;
+  var jsonMode = parserConfig.json;
+
+  // Tokenizer
+
+  var keywords = function(){
+    function kw(type) {return {type: type, style: "js-keyword"};}
+    var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
+    var operator = kw("operator"), atom = {type: "atom", style: "js-atom"};
+    return {
+      "if": A, "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
+      "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C,
+      "var": kw("var"), "function": kw("function"), "catch": kw("catch"),
+      "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
+      "in": operator, "typeof": operator, "instanceof": operator,
+      "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom
+    };
+  }();
+
+  var isOperatorChar = /[+\-*&%=<>!?|]/;
+
+  function chain(stream, state, f) {
+    state.tokenize = f;
+    return f(stream, state);
+  }
+
+  function nextUntilUnescaped(stream, end) {
+    var escaped = false, next;
+    while ((next = stream.next()) != null) {
+      if (next == end && !escaped)
+        return false;
+      escaped = !escaped && next == "\\";
+    }
+    return escaped;
+  }
+
+  // Used as scratch variables to communicate multiple values without
+  // consing up tons of objects.
+  var type, content;
+  function ret(tp, style, cont) {
+    type = tp; content = cont;
+    return style;
+  }
+
+  function jsTokenBase(stream, state) {
+    var ch = stream.next();
+    if (ch == '"' || ch == "'")
+      return chain(stream, state, jsTokenString(ch));
+    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
+      return ret(ch);
+    else if (ch == "0" && stream.eat(/x/i)) {
+      stream.eatWhile(/[\da-f]/i);
+      return ret("number", "js-atom");
+    }      
+    else if (/\d/.test(ch)) {
+      stream.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/);
+      return ret("number", "js-atom");
+    }
+    else if (ch == "/") {
+      if (stream.eat("*")) {
+        return chain(stream, state, jsTokenComment);
+      }
+      else if (stream.eat("/")) {
+        stream.skipToEnd();
+        return ret("comment", "js-comment");
+      }
+      else if (state.reAllowed) {
+        nextUntilUnescaped(stream, "/");
+        stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla
+        return ret("regexp", "js-string");
+      }
+      else {
+        stream.eatWhile(isOperatorChar);
+        return ret("operator", null, stream.current());
+      }
+    }
+    else if (isOperatorChar.test(ch)) {
+      stream.eatWhile(isOperatorChar);
+      return ret("operator", null, stream.current());
+    }
+    else {
+      stream.eatWhile(/[\w\$_]/);
+      var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
+      return known ? ret(known.type, known.style, word) :
+                     ret("variable", "js-variable", word);
+    }
+  }
+
+  function jsTokenString(quote) {
+    return function(stream, state) {
+      if (!nextUntilUnescaped(stream, quote))
+        state.tokenize = jsTokenBase;
+      return ret("string", "js-string");
+    };
+  }
+
+  function jsTokenComment(stream, state) {
+    var maybeEnd = false, ch;
+    while (ch = stream.next()) {
+      if (ch == "/" && maybeEnd) {
+        state.tokenize = jsTokenBase;
+        break;
+      }
+      maybeEnd = (ch == "*");
+    }
+    return ret("comment", "js-comment");
+  }
+
+  // Parser
+
+  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true};
+
+  function JSLexical(indented, column, type, align, prev, info) {
+    this.indented = indented;
+    this.column = column;
+    this.type = type;
+    this.prev = prev;
+    this.info = info;
+    if (align != null) this.align = align;
+  }
+
+  function inScope(state, varname) {
+    for (var v = state.localVars; v; v = v.next)
+      if (v.name == varname) return true;
+  }
+
+  function parseJS(state, style, type, content, stream) {
+    var cc = state.cc;
+    // Communicate our context to the combinators.
+    // (Less wasteful than consing up a hundred closures on every call.)
+    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;
+  
+    if (!state.lexical.hasOwnProperty("align"))
+      state.lexical.align = true;
+
+    while(true) {
+      var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
+      if (combinator(type, content)) {
+        while(cc.length && cc[cc.length - 1].lex)
+          cc.pop()();
+        if (cx.marked) return cx.marked;
+        if (type == "variable" && inScope(state, content)) return "js-localvariable";
+        return style;
+      }
+    }
+  }
+
+  // Combinator utils
+
+  var cx = {state: null, column: null, marked: null, cc: null};
+  function pass() {
+    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
+  }
+  function cont() {
+    pass.apply(null, arguments);
+    return true;
+  }
+  function register(varname) {
+    var state = cx.state;
+    if (state.context) {
+      cx.marked = "js-variabledef";
+      for (var v = state.localVars; v; v = v.next)
+        if (v.name == varname) return;
+      state.localVars = {name: varname, next: state.localVars};
+    }
+  }
+
+  // Combinators
+
+  var defaultVars = {name: "this", next: {name: "arguments"}};
+  function pushcontext() {
+    if (!cx.state.context) cx.state.localVars = defaultVars;
+    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
+  }
+  function popcontext() {
+    cx.state.localVars = cx.state.context.vars;
+    cx.state.context = cx.state.context.prev;
+  }
+  function pushlex(type, info) {
+    var result = function() {
+      var state = cx.state;
+      state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info)
+    };
+    result.lex = true;
+    return result;
+  }
+  function poplex() {
+    var state = cx.state;
+    if (state.lexical.prev) {
+      if (state.lexical.type == ")")
+        state.indented = state.lexical.indented;
+      state.lexical = state.lexical.prev;
+    }
+  }
+  poplex.lex = true;
+
+  function expect(wanted) {
+    return function expecting(type) {
+      if (type == wanted) return cont();
+      else if (wanted == ";") return pass();
+      else return cont(arguments.callee);
+    };
+  }
+
+  function statement(type) {
+    if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex);
+    if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);
+    if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
+    if (type == "{") return cont(pushlex("}"), block, poplex);
+    if (type == ";") return cont();
+    if (type == "function") return cont(functiondef);
+    if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"),
+                                      poplex, statement, poplex);
+    if (type == "variable") return cont(pushlex("stat"), maybelabel);
+    if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
+                                         block, poplex, poplex);
+    if (type == "case") return cont(expression, expect(":"));
+    if (type == "default") return cont(expect(":"));
+    if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
+                                        statement, poplex, popcontext);
+    return pass(pushlex("stat"), expression, expect(";"), poplex);
+  }
+  function expression(type) {
+    if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator);
+    if (type == "function") return cont(functiondef);
+    if (type == "keyword c") return cont(expression);
+    if (type == "(") return cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator);
+    if (type == "operator") return cont(expression);
+    if (type == "[") return cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator);
+    if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator);
+    return cont();
+  }
+  function maybeoperator(type, value) {
+    if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator);
+    if (type == "operator") return cont(expression);
+    if (type == ";") return;
+    if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator);
+    if (type == ".") return cont(property, maybeoperator);
+    if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator);
+  }
+  function maybelabel(type) {
+    if (type == ":") return cont(poplex, statement);
+    return pass(maybeoperator, expect(";"), poplex);
+  }
+  function property(type) {
+    if (type == "variable") {cx.marked = "js-property"; return cont();}
+  }
+  function objprop(type) {
+    if (type == "variable") cx.marked = "js-property";
+    if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression);
+  }
+  function commasep(what, end) {
+    function proceed(type) {
+      if (type == ",") return cont(what, proceed);
+      if (type == end) return cont();
+      return cont(expect(end));
+    }
+    return function commaSeparated(type) {
+      if (type == end) return cont();
+      else return pass(what, proceed);
+    };
+  }
+  function block(type) {
+    if (type == "}") return cont();
+    return pass(statement, block);
+  }
+  function vardef1(type, value) {
+    if (type == "variable"){register(value); return cont(vardef2);}
+    return cont();
+  }
+  function vardef2(type, value) {
+    if (value == "=") return cont(expression, vardef2);
+    if (type == ",") return cont(vardef1);
+  }
+  function forspec1(type) {
+    if (type == "var") return cont(vardef1, forspec2);
+    if (type == ";") return pass(forspec2);
+    if (type == "variable") return cont(formaybein);
+    return pass(forspec2);
+  }
+  function formaybein(type, value) {
+    if (value == "in") return cont(expression);
+    return cont(maybeoperator, forspec2);
+  }
+  function forspec2(type, value) {
+    if (type == ";") return cont(forspec3);
+    if (value == "in") return cont(expression);
+    return cont(expression, expect(";"), forspec3);
+  }
+  function forspec3(type) {
+    if (type != ")") cont(expression);
+  }
+  function functiondef(type, value) {
+    if (type == "variable") {register(value); return cont(functiondef);}
+    if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext);
+  }
+  function funarg(type, value) {
+    if (type == "variable") {register(value); return cont();}
+  }
+
+  // Interface
+
+  return {
+    startState: function(basecolumn) {
+      return {
+        tokenize: jsTokenBase,
+        reAllowed: true,
+        cc: [],
+        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
+        localVars: null,
+        context: null,
+        indented: 0
+      };
+    },
+
+    token: function(stream, state) {
+      if (stream.sol()) {
+        if (!state.lexical.hasOwnProperty("align"))
+          state.lexical.align = false;
+        state.indented = stream.indentation();
+      }
+      if (stream.eatSpace()) return null;
+      var style = state.tokenize(stream, state);
+      if (type == "comment") return style;
+      state.reAllowed = type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/);
+      return parseJS(state, style, type, content, stream);
+    },
+
+    indent: function(state, textAfter) {
+      if (state.tokenize != jsTokenBase) return 0;
+      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical,
+          type = lexical.type, closing = firstChar == type;
+      if (type == "vardef") return lexical.indented + 4;
+      else if (type == "form" && firstChar == "{") return lexical.indented;
+      else if (type == "stat" || type == "form") return lexical.indented + indentUnit;
+      else if (lexical.info == "switch" && !closing)
+        return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
+      else if (lexical.align) return lexical.column + (closing ? 0 : 1);
+      else return lexical.indented + (closing ? 0 : indentUnit);
+    },
+
+    electricChars: ":{}"
+  };
+});
+
+CodeMirror.defineMIME("text/javascript", "javascript");
+CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/index.html	(revision 25596)
@@ -0,0 +1,52 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: PHP mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="../xml/xml.js"></script>
+    <link rel="stylesheet" href="../xml/xml.css">
+    <script src="../javascript/javascript.js"></script>
+    <link rel="stylesheet" href="../javascript/javascript.css">
+    <script src="../css/css.js"></script>
+    <link rel="stylesheet" href="../css/css.css">
+    <script src="../clike/clike.js"></script>
+    <link rel="stylesheet" href="../clike/clike.css">
+    <script src="php.js"></script>
+    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: PHP mode</h1>
+
+<form><textarea id="code" name="code">
+<?php
+function hello($who) {
+	return "Hello " . $who;
+}
+?>
+<p>The program says <?= hello("World") ?>.</p>
+<script>
+	alert("And here is some JS code"); // also colored
+</script>
+</textarea></form>
+
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+        lineNumbers: true,
+        matchBrackets: true,
+        mode: "application/x-httpd-php",
+        indentUnit: 8,
+        indentWithTabs: true,
+        enterMode: "keep",
+        tabMode: "shift"
+      });
+    </script>
+
+    <p>Simple HTML/PHP mode based on
+    the <a href="../clike/">C-like</a> mode. Depends on XML,
+    JavaScript, CSS, and C-like modes.</p>
+
+    <p><strong>MIME types defined:</strong> <code>application/x-httpd-php</code>.</p>
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/php.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/php.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/php/php.js	(revision 25596)
@@ -0,0 +1,83 @@
+(function() {
+  function keywords(str) {
+    var obj = {}, words = str.split(" ");
+    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
+    return obj;
+  }
+  var phpKeywords =
+    keywords("abstract and array as break case catch cfunction class clone const continue declare " +
+             "default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends " +
+             "final for foreach function global goto if implements interface instanceof namespace " +
+             "new or private protected public static switch throw try use var while xor");
+
+  CodeMirror.defineMode("php", function(config, parserConfig) {
+    var htmlMode = CodeMirror.getMode(config, "text/html");
+    var jsMode = CodeMirror.getMode(config, "text/javascript");
+    var cssMode = CodeMirror.getMode(config, "text/css");
+    var phpMode = CodeMirror.getMode(config, {name: "clike", keywords: phpKeywords, multiLineStrings: true, $vars: true});
+
+    function dispatch(stream, state) { // TODO open PHP inside text/css
+      if (state.curMode == htmlMode) {
+        var style = htmlMode.token(stream, state.curState);
+        if (style == "xml-processing" && /^<\?/.test(stream.current())) {
+          state.curMode = phpMode;
+          state.curState = state.php;
+          state.curClose = /^\?>/;
+        }
+        else if (style == "xml-tag" && stream.current() == ">" && state.curState.context) {
+          if (/^script$/i.test(state.curState.context.tagName)) {
+            state.curMode = jsMode;
+            state.curState = jsMode.startState(htmlMode.indent(state.curState, ""));
+            state.curClose = /^<\/\s*script\s*>/i;
+          }
+          else if (/^style$/i.test(state.curState.context.tagName)) {
+            state.curMode = cssMode;
+            state.curState = cssMode.startState(htmlMode.indent(state.curState, ""));
+            state.curClose =  /^<\/\s*style\s*>/i;
+          }
+        }
+        return style;
+      }
+      else if (stream.match(state.curClose, false)) {
+        state.curMode = htmlMode;
+        state.curState = state.html;
+        state.curClose = null;
+        return dispatch(stream, state);
+      }
+      else return state.curMode.token(stream, state.curState);
+    }
+
+    return {
+      startState: function() {
+        var html = htmlMode.startState();
+        return {html: html,
+                php: phpMode.startState(),
+                curMode: htmlMode,
+                curState: html,
+                curClose: null}
+      },
+
+      copyState: function(state) {
+        var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),
+            php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur;
+        if (state.curState == html) cur = htmlNew;
+        else if (state.curState == php) cur = phpNew;
+        else cur = CodeMirror.copyState(state.curMode, state.curState);
+        return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, curClose: state.curClose};
+      },
+
+      token: dispatch,
+
+      indent: function(state, textAfter) {
+        if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) ||
+            (state.curMode == phpMode && /^\?>/.test(textAfter)))
+          return htmlMode.indent(state.html, textAfter);
+        return state.curMode.indent(state.curState, textAfter);
+      },
+
+      electricChars: "/{}:"
+    }
+  });
+})();
+
+CodeMirror.defineMIME("application/x-httpd-php", "php");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/index.html	(revision 25596)
@@ -0,0 +1,96 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: sTeX mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="stex.js"></script>
+    <link rel="stylesheet" href="stex.css">
+    <style>.CodeMirror {background: #f8f8f8;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: sTeX mode</h1>
+     <form><textarea id="code" name="code">
+\begin{module}[id=bbt-size]
+\importmodule[balanced-binary-trees]{balanced-binary-trees}
+\importmodule[\KWARCslides{dmath/en/cardinality}]{cardinality}
+
+\begin{frame}
+  \frametitle{Size Lemma for Balanced Trees}
+  \begin{itemize}
+  \item
+    \begin{assertion}[id=size-lemma,type=lemma] 
+    Let $G=\tup{V,E}$ be a \termref[cd=binary-trees]{balanced binary tree} 
+    of \termref[cd=graph-depth,name=vertex-depth]{depth}$n>i$, then the set
+     $\defeq{\livar{V}i}{\setst{\inset{v}{V}}{\gdepth{v} = i}}$ of
+    \termref[cd=graphs-intro,name=node]{nodes} at 
+    \termref[cd=graph-depth,name=vertex-depth]{depth} $i$ has
+    \termref[cd=cardinality,name=cardinality]{cardinality} $\power2i$.
+   \end{assertion}
+  \item
+    \begin{sproof}[id=size-lemma-pf,proofend=,for=size-lemma]{via induction over the depth $i$.}
+      \begin{spfcases}{We have to consider two cases}
+        \begin{spfcase}{$i=0$}
+          \begin{spfstep}[display=flow]
+            then $\livar{V}i=\set{\livar{v}r}$, where $\livar{v}r$ is the root, so
+            $\eq{\card{\livar{V}0},\card{\set{\livar{v}r}},1,\power20}$.
+          \end{spfstep}
+        \end{spfcase}
+        \begin{spfcase}{$i>0$}
+          \begin{spfstep}[display=flow]
+           then $\livar{V}{i-1}$ contains $\power2{i-1}$ vertexes 
+           \begin{justification}[method=byIH](IH)\end{justification}
+          \end{spfstep}
+          \begin{spfstep}
+           By the \begin{justification}[method=byDef]definition of a binary
+              tree\end{justification}, each $\inset{v}{\livar{V}{i-1}}$ is a leaf or has
+            two children that are at depth $i$.
+          \end{spfstep}
+          \begin{spfstep}
+           As $G$ is \termref[cd=balanced-binary-trees,name=balanced-binary-tree]{balanced} and $\gdepth{G}=n>i$, $\livar{V}{i-1}$ cannot contain
+            leaves.
+          \end{spfstep}
+          \begin{spfstep}[type=conclusion]
+           Thus $\eq{\card{\livar{V}i},{\atimes[cdot]{2,\card{\livar{V}{i-1}}}},{\atimes[cdot]{2,\power2{i-1}}},\power2i}$.
+          \end{spfstep}
+        \end{spfcase}
+      \end{spfcases}
+    \end{sproof}
+  \item 
+    \begin{assertion}[id=fbbt,type=corollary]	
+      A fully balanced tree of depth $d$ has $\power2{d+1}-1$ nodes.
+    \end{assertion}
+  \item
+      \begin{sproof}[for=fbbt,id=fbbt-pf]{}
+        \begin{spfstep}
+          Let $\defeq{G}{\tup{V,E}}$ be a fully balanced tree
+        \end{spfstep}
+        \begin{spfstep}
+          Then $\card{V}=\Sumfromto{i}1d{\power2i}= \power2{d+1}-1$.
+        \end{spfstep}
+      \end{sproof}
+    \end{itemize}
+  \end{frame}
+\begin{note}
+  \begin{omtext}[type=conclusion,for=binary-tree]
+    This shows that balanced binary trees grow in breadth very quickly, a consequence of
+    this is that they are very shallow (and this compute very fast), which is the essence of
+    the next result.
+  \end{omtext}
+\end{note}
+\end{module}
+
+%%% Local Variables: 
+%%% mode: LaTeX
+%%% TeX-master: "all"
+%%% End: \end{document}
+</textarea></form>
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
+    </script>
+
+    <p><strong>MIME types defined:</strong> <code>text/stex</code>.</p>
+
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css	(revision 25596)
@@ -0,0 +1,20 @@
+span.css-at {color: #708;}
+span.css-unit {color: #281;}
+span.css-value {color: #708;}
+span.css-identifier {color: black;}
+span.css-selector {color: #11B;}
+span.css-important {color: #00F;}
+span.css-colorcode {color: #299;}
+span.css-comment {color: #A70;}
+span.css-string {color: #A22;}
+
+span.stex-unit { color: #281; }
+span.stex-identifier { color: black; }
+span.stex-slash { color: #FAA; }
+span.stex-command { color: #00F; }
+span.stex-comment { color: #A70; }
+span.stex-import { color: #00F; }
+span.stex-filepath { color: #852626; }
+span.stex-module { color: #852626; }
+span.stex-error { text-decoration: underline; color: red; }
+span.stex-string { color: #A22; }
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js	(revision 25596)
@@ -0,0 +1,167 @@
+/*
+ * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)
+ * Licence: MIT
+ */
+
+CodeMirror.defineMode("stex", function(cmCfg, modeCfg) 
+{    
+    function pushCommand(state, command) {
+	state.cmdState.push(command);
+    }
+
+    function peekCommand(state) { 
+	if (state.cmdState.length>0)
+	    return state.cmdState[state.cmdState.length-1];
+	else
+	    return null;
+    }
+
+    function popCommand(state) {
+	if (state.cmdState.length>0) {
+	    var plug = state.cmdState.pop();
+	    plug.closeBracket();
+	}	    
+    }
+
+    function applyMostPowerful(state) {
+      context = state.cmdState;
+      for (var i = context.length - 1; i >= 0; i--) {
+	  var plug = context[i];
+	  if (plug.name=="DEFAULT")
+	      continue;
+	  return plug.styleIdentifier();
+      }
+      return "stex-identifier";
+    }
+
+    function addPluginPattern(pluginName, cmdStyle, brackets, styles) {
+	return function () {
+	    this.name=pluginName;
+	    this.bracketNo = 0;
+	    this.style=cmdStyle;
+	    this.styles = styles;
+	    this.brackets = brackets;
+
+	    this.styleIdentifier = function(content) {
+		if (this.bracketNo<=this.styles.length)
+		    return this.styles[this.bracketNo-1];
+		else
+		    return null;
+	    };
+	    this.openBracket = function(content) {
+		this.bracketNo++;
+		return "stex-bracket";
+	    };
+	    this.closeBracket = function(content) {
+	    };
+	}
+    }
+
+    var plugins = new Array();
+   
+    plugins["importmodule"] = addPluginPattern("importmodule", "stex-command", "{[", ["stex-filepath", "stex-module"]);
+    plugins["documentclass"] = addPluginPattern("documentclass", "stex-command", "{[", ["", "stex-unit"]);
+    plugins["usepackage"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]);
+    plugins["begin"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]);
+    plugins["end"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]);
+
+    plugins["DEFAULT"] = function () {
+	this.name="DEFAULT";
+	this.style="stex-command";
+
+	this.styleIdentifier = function(content) {
+	};
+	this.openBracket = function(content) {
+	};
+	this.closeBracket = function(content) {
+	};
+    };
+
+    function setState(state, f) {
+	state.f = f;
+    }
+
+    function normal(source, state) {
+	if (source.match(/^\\[a-z]+/)) {
+	    cmdName = source.current();
+	    cmdName = cmdName.substr(1, cmdName.length-1);
+	    var plug = plugins[cmdName];
+	    if (typeof(plug) == 'undefined') {
+		plug = plugins["DEFAULT"];
+	    }
+	    plug = new plug();
+	    pushCommand(state, plug);
+	    setState(state, beginParams);
+	    return plug.style;
+	}
+
+	var ch = source.next();
+	if (ch == "%") {
+	    setState(state, inCComment);
+	    return "stex-comment";
+	} 
+	else if (ch=='}' || ch==']') {
+	    plug = peekCommand(state);
+	    if (plug) {
+		plug.closeBracket(ch);
+		setState(state, beginParams);
+	    } else
+		return "stex-error";
+	    return "stex-bracket";
+	} else if (ch=='{' || ch=='[') {
+	    plug = plugins["DEFAULT"];	    
+	    plug = new plug();
+	    pushCommand(state, plug);
+	    return "stex-bracket";	    
+	}
+	else if (/\d/.test(ch)) {
+	    source.eatWhile(/[\w.%]/);
+	    return "stex-unit";
+	}
+	else {
+	    source.eatWhile(/[\w-_]/);
+	    return applyMostPowerful(state);
+	}
+    }
+
+    function inCComment(source, state) {
+	source.skipToEnd();
+	setState(state, normal);
+	return "css-comment";
+    }
+
+    function beginParams(source, state) {
+	var ch = source.peek();
+	if (ch == '{' || ch == '[') {
+	   lastPlug = peekCommand(state);
+	   style = lastPlug.openBracket(ch);
+	   source.eat(ch);
+	   setState(state, normal);
+	   return "stex-bracket";
+	}
+	if (/[ \t\r]/.test(ch)) {
+	    source.eat(ch);
+	    return null;
+	}
+	setState(state, normal);
+	lastPlug = peekCommand(state);
+	if (lastPlug) {
+	    popCommand(state);
+	}
+        return normal(source, state);
+    }
+
+    return {
+     startState: function() { return { f:normal, cmdState:[] }; },
+	 copyState: function(s) { return { f: s.f, cmdState: s.cmdState.slice(0, s.cmdState.length) }; },
+	 
+	 token: function(stream, state) {
+	 var t = state.f(stream, state);
+	 var w = stream.current();
+	 return t;
+     }
+ };
+});
+
+
+CodeMirror.defineMIME("text/x-stex", "stex");
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/index.html
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/index.html	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/index.html	(revision 25596)
@@ -0,0 +1,42 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: XML mode</title>
+    <link rel="stylesheet" href="../../lib/codemirror.css">
+    <script src="../../lib/codemirror.js"></script>
+    <script src="xml.js"></script>
+    <link rel="stylesheet" href="xml.css">
+    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+    <link rel="stylesheet" href="../../css/docs.css">
+  </head>
+  <body>
+    <h1>CodeMirror 2: XML mode</h1>
+    <form><textarea id="code" name="code">
+&lt;html style="color: green"&gt;
+  &lt;!-- this is a comment --&gt;
+  &lt;head&gt;
+    &lt;title&gt;HTML Example&lt;/title&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    The indentation tries to be &lt;em&gt;somewhat &amp;quot;do what
+    I mean&amp;quot;&lt;/em&gt;... but might not match your style.
+  &lt;/body&gt;
+&lt;/html&gt;
+</textarea></form>
+    <script>
+      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {mode: {name: "xml", htmlMode: true}});
+    </script>
+    <p>The XML mode supports two configuration parameters:</p>
+    <dl>
+      <dt><code>htmlMode (boolean)</code></dt>
+      <dd>This switches the mode to parse HTML instead of XML. This
+      means attributes do not have to be quoted, and some elements
+      (such as <code>br</code>) do not require a closing tag.</dd>
+      <dt><code>alignCDATA (boolean)</code></dt>
+      <dd>Setting this to true will force the opening tag of CDATA
+      blocks to not be indented.</dd>
+    </dl>
+
+    <p><strong>MIME types defined:</strong> <code>application/xml</code>, <code>text/html</code>.</p>
+  </body>
+</html>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css	(revision 25596)
@@ -0,0 +1,7 @@
+span.xml-tag {color: #a0b;}
+span.xml-attribute {color: #281;}
+span.xml-attname {color: #00f;}
+span.xml-comment {color: #a70;}
+span.xml-cdata {color: #48a;}
+span.xml-processing {color: #999;}
+span.xml-entity {color: #a22;}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js	(revision 25596)
@@ -0,0 +1,206 @@
+CodeMirror.defineMode("xml", function(config, parserConfig) {
+  var indentUnit = config.indentUnit;
+  var Kludges = parserConfig.htmlMode ? {
+    autoSelfClosers: {"br": true, "img": true, "hr": true, "link": true, "input": true,
+                      "meta": true, "col": true, "frame": true, "base": true, "area": true},
+    doNotIndent: {"pre": true, "!cdata": true},
+    allowUnquoted: true
+  } : {autoSelfClosers: {}, doNotIndent: {"!cdata": true}, allowUnquoted: false};
+  var alignCDATA = parserConfig.alignCDATA;
+
+  // Return variables for tokenizers
+  var tagName, type;
+
+  function inText(stream, state) {
+    function chain(parser) {
+      state.tokenize = parser;
+      return parser(stream, state);
+    }
+
+    var ch = stream.next();
+    if (ch == "<") {
+      if (stream.eat("!")) {
+        if (stream.eat("[")) {
+          if (stream.match("[CDATA[")) return chain(inBlock("xml-cdata", "]]>"));
+          else return null;
+        }
+        else if (stream.match("--")) return chain(inBlock("xml-comment", "-->"));
+        else if (stream.match("DOCTYPE")) {
+          stream.eatWhile(/[\w\._\-]/);
+          return chain(inBlock("xml-doctype", ">"));
+        }
+        else return null;
+      }
+      else if (stream.eat("?")) {
+        stream.eatWhile(/[\w\._\-]/);
+        state.tokenize = inBlock("xml-processing", "?>");
+        return "xml-processing";
+      }
+      else {
+        type = stream.eat("/") ? "closeTag" : "openTag";
+        stream.eatSpace();
+        tagName = "";
+        var c;
+        while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;
+        state.tokenize = inTag;
+        return "xml-tag";
+      }
+    }
+    else if (ch == "&") {
+      stream.eatWhile(/[^;]/);
+      stream.eat(";");
+      return "xml-entity";
+    }
+    else {
+      stream.eatWhile(/[^&<]/);
+      return null;
+    }
+  }
+
+  function inTag(stream, state) {
+    var ch = stream.next();
+    if (ch == ">" || (ch == "/" && stream.eat(">"))) {
+      state.tokenize = inText;
+      type = ch == ">" ? "endTag" : "selfcloseTag";
+      return "xml-tag";
+    }
+    else if (ch == "=") {
+      type = "equals";
+      return null;
+    }
+    else if (/[\'\"]/.test(ch)) {
+      state.tokenize = inAttribute(ch);
+      return state.tokenize(stream, state);
+    }
+    else {
+      stream.eatWhile(/[^\s\u00a0=<>\"\'\/?]/);
+      return "xml-word";
+    }
+  }
+
+  function inAttribute(quote) {
+    return function(stream, state) {
+      while (!stream.eol()) {
+        if (stream.next() == quote) {
+          state.tokenize = inTag;
+          break;
+        }
+      }
+      return "xml-attribute";
+    };
+  }
+
+  function inBlock(style, terminator) {
+    return function(stream, state) {
+      while (!stream.eol()) {
+        if (stream.match(terminator)) {
+          state.tokenize = inText;
+          break;
+        }
+        stream.next();
+      }
+      return style;
+    };
+  }
+
+  var curState, setStyle;
+  function pass() {
+    for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);
+  }
+  function cont() {
+    pass.apply(null, arguments);
+    return true;
+  }
+
+  function pushContext(tagName, startOfLine) {
+    var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) || (curState.context && curState.context.noIndent);
+    curState.context = {
+      prev: curState.context,
+      tagName: tagName,
+      indent: curState.indented,
+      startOfLine: startOfLine,
+      noIndent: noIndent
+    };
+  }
+  function popContext() {
+    if (curState.context) curState.context = curState.context.prev;
+  }
+
+  function element(type) {
+    if (type == "openTag") {curState.tagName = tagName; return cont(attributes, endtag(curState.startOfLine));}
+    else if (type == "closeTag") {popContext(); return cont(endclosetag);}
+    else if (type == "xml-cdata") {
+      if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata");
+      if (curState.tokenize == inText) popContext();
+      return cont();
+    }
+    else return cont();
+  }
+  function endtag(startOfLine) {
+    return function(type) {
+      if (type == "selfcloseTag" ||
+          (type == "endTag" && Kludges.autoSelfClosers.hasOwnProperty(curState.tagName.toLowerCase())))
+        return cont();
+      if (type == "endTag") {pushContext(curState.tagName, startOfLine); return cont();}
+      return cont();
+    };
+  }
+  function endclosetag(type) {
+    if (type == "endTag") return cont();
+    return pass();
+  }
+
+  function attributes(type) {
+    if (type == "xml-word") {setStyle = "xml-attname"; return cont(attributes);}
+    if (type == "equals") return cont(attvalue, attributes);
+    return pass();
+  }
+  function attvalue(type) {
+    if (type == "xml-word" && Kludges.allowUnquoted) {setStyle = "xml-attribute"; return cont();}
+    if (type == "xml-attribute") return cont();
+    return pass();
+  }
+
+  return {
+    startState: function() {
+      return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, context: null};
+    },
+
+    token: function(stream, state) {
+      if (stream.sol()) {
+        state.startOfLine = true;
+        state.indented = stream.indentation();
+      }
+      if (stream.eatSpace()) return null;
+
+      setStyle = type = tagName = null;
+      var style = state.tokenize(stream, state);
+      if ((style || type) && style != "xml-comment") {
+        curState = state;
+        while (true) {
+          var comb = state.cc.pop() || element;
+          if (comb(type || style)) break;
+        }
+      }
+      state.startOfLine = false;
+      return setStyle || style;
+    },
+
+    indent: function(state, textAfter) {
+      var context = state.context;
+      if (context && context.noIndent) return 0;
+      if (alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
+      if (context && /^<\//.test(textAfter))
+        context = context.prev;
+      while (context && !context.startOfLine)
+        context = context.prev;
+      if (context) return context.indent + indentUnit;
+      else return 0;
+    },
+
+    electricChars: "/"
+  };
+});
+
+CodeMirror.defineMIME("application/xml", "xml");
+CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/css.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/css.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/css.inc.php	(revision 25596)
@@ -0,0 +1,150 @@
+<?php
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+$themes = new themes();
+
+if (isset($_POST['edit']))
+{
+  $_POST['theme'] = $_POST['theme_select'];
+}
+
+if (isset($_POST['theme']) and '~common~' == $_POST['theme'])
+{
+  $page['theme'] = $_POST['theme'];
+  $edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'css/rules.css';
+}
+else
+{
+  if (isset($_GET['theme']))
+  {
+    $page['theme'] = $_GET['theme'];
+  }
+  elseif (isset($_POST['theme']))
+  {
+    $page['theme'] = $_POST['theme'];
+  }
+  
+  if (!isset($page['theme']) or !in_array($page['theme'], array_keys($themes->fs_themes)))
+  {
+    $page['theme'] = get_default_theme();
+  }
+  
+  $edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$page['theme'].'-rules.css';
+}
+
+$template->assign('theme', $page['theme']);
+
+if (file_exists($edited_file))
+{
+  $content_file = file_get_contents($edited_file);
+}
+else
+{
+  $content_file = "/* " . l10n('locfiledit_newfile') . " */\n\n";
+}
+
+$selected = 0; 
+$value = '~common~';
+$file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/rules.css';
+
+$options[$value] = (file_exists($file) ? '&#x2714;' : '&#x2718;').' local / css / rules.css';
+if ($page['theme'] == $value)
+{
+  $selected = $value;
+}
+
+// themes are displayed in the same order as on screen
+// [Administration > Configuration > Themes]
+
+$themes->sort_fs_themes();
+$default_theme = get_default_theme();
+$db_themes = $themes->get_db_themes();
+
+$db_theme_ids = array();
+foreach ($db_themes as $db_theme)
+{
+  $db_theme_ids[] = $db_theme['id'];
+}
+
+$active_themes = array();
+$inactive_themes = array();
+
+foreach ($themes->fs_themes as $theme_id => $fs_theme)
+{
+  if ($theme_id == 'default')
+  {
+    continue;
+  }
+
+  if (in_array($theme_id, $db_theme_ids))
+  {
+    if ($theme_id == $default_theme)
+    {
+      array_unshift($active_themes, $fs_theme);
+    }
+    else
+    {
+      $active_themes[] = $fs_theme;
+    }
+  }
+  else
+  {
+    $inactive_themes[] = $fs_theme;
+  }
+}
+
+$active_theme_options = array();
+foreach ($active_themes as $theme)
+{
+  $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$theme['id'].'-rules.css';
+
+  $label = (file_exists($file) ? '&#x2714;' : '&#x2718;').' '.$theme['name'];
+
+  if ($default_theme == $theme['id'])
+  {
+    $label.= ' ('.l10n('default').')';
+  }
+
+  $active_theme_options[$theme['id']] = $label;
+  
+  if ($theme['id'] == $page['theme'])
+  {
+    $selected = $theme['id'];
+  }
+}
+
+if (count($active_theme_options) > 0)
+{
+  $options[l10n('Active Themes')] = $active_theme_options;
+}
+
+$inactive_theme_options = array();
+foreach ($inactive_themes as $theme)
+{
+  $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$theme['id'].'-rules.css';
+
+  $inactive_theme_options[$theme['id']] = (file_exists($file) ? '&#x2714;' : '&#x2718;').' '.$theme['name'];
+  
+  if ($theme['id'] == $page['theme'])
+  {
+    $selected = $theme['id'];
+  }
+}
+
+if (count($inactive_theme_options) > 0)
+{
+  $options[l10n('Inactive Themes')] = $inactive_theme_options;
+}
+
+$template->assign(
+  'css_lang_tpl',
+  array(
+    'SELECT_NAME' => 'theme_select',
+    'OPTIONS' => $options,
+    'SELECTED' => $selected
+    )
+);
+
+$codemirror_mode = 'text/css';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/functions.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/functions.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/functions.inc.php	(revision 25596)
@@ -0,0 +1,114 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * returns $code if php syntax is correct
+ * else return false
+ *
+ * @param string php code
+ */
+function eval_syntax($code)
+{
+  $code = str_replace(array('<?php', '?>'), '', $code);
+  if (function_exists('token_get_all'))
+  {
+    $b = 0;
+    foreach (token_get_all($code) as $token)
+    {
+      if ('{' == $token) ++$b;
+      else if ('}' == $token) --$b;
+    }
+    if ($b) return false;
+    else
+    {
+      ob_start();
+      $eval = eval('if(0){' . $code . '}');
+      ob_end_clean();
+      if ($eval === false) return false;
+    }
+  }
+  return '<?php' . $code . '?>';
+}
+
+/**
+ * returns true or false if $str is bool
+  * returns $str if $str is integer
+ * else "$str"
+ *
+ * @param string
+ */
+function editarea_quote($value)
+{
+  switch (gettype($value))
+  {
+    case "boolean":
+      return $value ? 'true' : 'false';
+    case "integer":
+      return $value;
+    default:
+      return '"'.$value.'"';
+  }
+}
+
+/**
+ * returns bak file for restore
+ * @param string
+ */
+function get_bak_file($file)
+{
+  if (get_extension($file) == 'php')
+  {
+    return substr_replace($file, '.bak', strrpos($file , '.'), 0);
+  }
+  else
+  {
+    return $file . '.bak';
+  }
+}
+
+/**
+ * returns dirs and subdirs
+ * retun array
+ * @param string
+ */
+function get_rec_dirs($path='')
+{
+  $options = array();
+  if (is_dir($path))
+  {
+    $fh = opendir($path);
+    while ($file = readdir($fh))
+    {
+      $pathfile = $path . '/' . $file;
+      if ($file != '.' and $file != '..' and $file != '.svn' and is_dir($pathfile))
+      {
+        $options[$pathfile] = str_replace(array('./', '/'), array('', ' / '), $pathfile);
+        $options = array_merge($options, get_rec_dirs($pathfile));
+      }
+    }
+    closedir($fh);
+  }
+  return $options;
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/lang.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/lang.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/lang.inc.php	(revision 25596)
@@ -0,0 +1,69 @@
+<?php
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+$languages = get_languages();
+
+if (isset($_POST['edit']))
+{
+  $_POST['language'] = $_POST['language_select'];
+}
+
+if (isset($_POST['language']))
+{
+  $page['language'] = $_POST['language'];
+}
+  
+if (!isset($page['language']) or !in_array($page['language'], array_keys($languages)))
+{
+  $page['language'] = get_default_language();
+}
+
+$template->assign('language', $page['language']);
+
+$edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'language/'.$page['language'].'.lang.php';;
+
+if (file_exists($edited_file))
+{
+  $content_file = file_get_contents($edited_file);
+}
+else
+{
+  $content_file = "<?php\n\n/* ".l10n('locfiledit_newfile')." */\n\n\n\n\n?>";
+}
+
+$selected = 0;
+foreach (get_languages() as $language_code => $language_name)
+{
+  $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'language/'.$language_code.'.lang.php';
+
+  $options[$language_code] = (file_exists($file) ? '&#x2714;' : '&#x2718;').' '.$language_name;
+  
+  if ($page['language'] == $language_code)
+  {
+    $selected = $language_code;
+    $template->assign('show_default', array(
+      array(
+        'URL' => LOCALEDIT_PATH.'show_default.php?file=language/'.$language_code.'/common.lang.php',
+        'FILE' => 'common.lang.php'
+        ),
+      array(
+        'URL' => LOCALEDIT_PATH.'show_default.php?file=language/'.$language_code.'/admin.lang.php',
+        'FILE' => 'admin.lang.php'
+        )
+      )
+    );
+  }
+}
+
+$template->assign(
+  'css_lang_tpl',
+  array(
+    'SELECT_NAME' => 'language_select',
+    'OPTIONS' => $options,
+    'SELECTED' => $selected
+    )
+  );
+
+$codemirror_mode = 'application/x-httpd-php';
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/localconf.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/localconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/localconf.inc.php	(revision 25596)
@@ -0,0 +1,26 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+$edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . "config/config.inc.php";
+
+if (file_exists($edited_file))
+{
+  $content_file = file_get_contents($edited_file);
+}
+else
+{
+  $content_file = "<?php\n\n/* ".l10n('locfiledit_newfile')." */\n\n\n\n\n?>";
+}
+
+$template->assign('show_default', array(
+  array(
+    'URL' => LOCALEDIT_PATH.'show_default.php?file=include/config_default.inc.php',
+    'FILE' => 'config_default.inc.php'
+    )
+  )
+);
+
+$codemirror_mode = 'application/x-httpd-php';
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/plug.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/plug.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/plug.inc.php	(revision 25596)
@@ -0,0 +1,25 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+$edited_file = PHPWG_PLUGINS_PATH . "PersonalPlugin/main.inc.php";
+
+if (file_exists($edited_file))
+{
+  $content_file = file_get_contents($edited_file);
+}
+else
+{
+  $content_file = "<?php\n/*
+Plugin Name: " . l10n('locfiledit_onglet_plug') . "
+Version: 1.0
+Description: " . l10n('locfiledit_onglet_plug') . "
+Plugin URI: http://piwigo.org
+Author:
+Author URI:
+*/\n\n\n\n\n?>";
+}
+
+$codemirror_mode = 'application/x-httpd-php';
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/include/tpl.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/include/tpl.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/include/tpl.inc.php	(revision 25596)
@@ -0,0 +1,157 @@
+<?php
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+$edited_file = '';
+
+if (isset($_POST['edit']))
+{
+  $_POST['template'] = $_POST['file_to_edit'];
+}
+
+if (!empty($_POST['template']))
+{
+  if (preg_match('#\.\./#', $_POST['template']))
+  {
+    die('Hacking attempt! template extension must be in template-extension directory');
+  }
+
+  if (!preg_match('#\.tpl$#', $_POST['template']))
+  {
+    die('Hacking attempt! template extension must be a *.tpl file');
+  }
+
+  $template->assign('template', $_POST['template']);
+  
+  $edited_file = './template-extension/'.$_POST['template'];
+}
+
+$content_file = '';
+if (file_exists($edited_file))
+{
+  $content_file = file_get_contents($edited_file);
+}
+
+$newfile_page = isset($_GET['newfile']);
+
+// Edit new tpl file
+if (isset($_POST['create_tpl']))
+{
+  $filename = $_POST['tpl_name'];
+  if (empty($filename))
+  {
+    $page['errors'][] = l10n('locfiledit_empty_filename');
+  }
+  if (get_extension($filename) != 'tpl')
+  {
+    $filename .= '.tpl';
+  }
+  if (!preg_match('/^[a-zA-Z0-9-_.]+$/', $filename))
+  {
+    $page['errors'][] = l10n('locfiledit_filename_error');
+  }
+  if (is_numeric($_POST['tpl_model']) and $_POST['tpl_model'] != '0')
+  {
+    $page['errors'][] = l10n('locfiledit_model_error');
+  }
+  if (file_exists($_POST['tpl_parent'] . '/' . $filename))
+  {
+    $page['errors'][] = l10n('locfiledit_file_already_exists');
+  }
+  if (!empty($page['errors']))
+  {
+    $newfile_page = true;
+  }
+  else
+  {
+    $template->assign('template', $filename);
+    $edited_file = $_POST['tpl_parent'] . '/' . $filename;
+    $content_file = ($_POST['tpl_model'] == '0') ? '' : file_get_contents($_POST['tpl_model']);
+  }
+}
+
+if ($newfile_page)
+{
+  $filename = isset($_POST['tpl_name']) ? $_POST['tpl_name'] : '';
+  $selected['model'] = isset($_POST['tpl_model']) ? $_POST['tpl_model'] : '0';
+  $selected['parent'] = isset($_POST['tpl_parent']) ? $_POST['tpl_parent'] : PHPWG_ROOT_PATH . 'template-extension';
+
+  // Parent directories list
+  $options['parent'] = array(PHPWG_ROOT_PATH . 'template-extension' => 'template-extension');
+  $options['parent'] = array_merge($options['parent'], get_rec_dirs(PHPWG_ROOT_PATH . 'template-extension'));
+
+  $options['model'][] = l10n('locfiledit_empty_page');
+  $options['model'][] = '----------------------';
+  $i = 0;
+  foreach (get_extents() as $pwg_template)
+  {
+    $value = PHPWG_ROOT_PATH . 'template-extension/' . $pwg_template;
+    $options['model'][$value] =  'template-extension / ' . str_replace('/', ' / ', $pwg_template);
+    $i++;
+  }
+  foreach (get_dirs($conf['themes_dir']) as $theme_id)
+  {
+    if ($i)
+    {
+      $options['model'][] = '----------------------';
+      $i = 0;
+    }
+    $dir = $conf['themes_dir'] . '/' . $theme_id . '/template/';
+    if (is_dir($dir) and $content = opendir($dir))
+    {
+      while ($node = readdir($content))
+      {
+        if (is_file($dir.$node) and get_extension($node) == 'tpl')
+        {
+          $value = $dir . $node;
+          $options['model'][$value] = $theme_id . ' / ' . $node;
+          $i++;
+        }
+      }
+    }
+  }
+  if (end($options['model']) == '----------------------')
+  {
+    array_pop($options['model']);
+  }
+  // Assign variables to template
+  $template->assign('create_tpl', array(
+    'NEW_FILE_NAME' => $filename,
+    'MODEL_OPTIONS' => $options['model'],
+    'MODEL_SELECTED' => $selected['model'],
+    'PARENT_OPTIONS' => $options['parent'],
+    'PARENT_SELECTED' => $selected['parent']
+    )
+  );
+}
+else
+{
+  // List existing template extensions
+  $selected = 0; 
+  $options[] = l10n('locfiledit_choose_file');
+  $options[] = '----------------------';
+  foreach (get_extents() as $pwg_template)
+  {
+    $value = $pwg_template;
+    $options[$value] =  str_replace('/', ' / ', $pwg_template);
+    if ($edited_file == $value) $selected = $value;
+  }
+  if ($selected == 0 and !empty($edited_file))
+  {
+    $options[$edited_file] =  str_replace(array('./template-extension/', '/'), array('', ' / '), $edited_file);
+    $selected = $edited_file;
+  }
+  $template->assign(
+    'css_lang_tpl',
+    array(
+      'SELECT_NAME' => 'file_to_edit',
+      'OPTIONS' => $options,
+      'SELECTED' => $selected,
+      'NEW_FILE_URL' => $my_base_url.'-tpl&amp;newfile',
+      'NEW_FILE_CLASS' => empty($edited_file) ? '' : 'top_right'
+      )
+    );
+}
+
+$codemirror_mode = 'text/html';
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Verander plaaslike lêers vanaf die beheerpaneel.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Rugsteun lêer gelaai.';
+$lang['locfiledit_bak_loaded2'] = 'Jy moet \'n lêer stoor om dit te herstel.';
+$lang['locfiledit_cant_save'] = 'Huidige lêer kan nie geskryf word nie. Gaan na of die subgids "local/" skryfbaar is (chmod).';
+$lang['locfiledit_choose_file'] = 'Kies die lêer wat geredigeer moet word';
+$lang['locfiledit_edit'] = 'Redigeer';
+$lang['locfiledit_empty_filename'] = 'Jy moet \'n lêernaam intik.';
+$lang['locfiledit_empty_page'] = 'Leë blad';
+$lang['locfiledit_file_already_exists'] = 'Lêer bestaan alreeds';
+$lang['locfiledit_filename_error'] = 'Verbode karakters in die lêernaam.';
+$lang['locfiledit_model_error'] = 'Jy moet \'n model kies.';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_new_filename'] = 'Lêernaam';
+$lang['locfiledit_new_tpl'] = 'Skep \'n nuwe lêer';
+$lang['locfiledit_newfile'] = 'Lêer bestaan nie en sal geskep word met die LocalFiles Editor ';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Tale';
+$lang['locfiledit_onglet_localconf'] = 'Local config';
+$lang['locfiledit_onglet_plug'] = 'Persoonlike Invoegsel';
+$lang['locfiledit_onglet_tpl'] = 'Sjablone';
+$lang['locfiledit_parent_directory'] = 'Bron gids';
+$lang['locfiledit_restore_confirm'] = 'Bevestig asseblief? Herstel sal nie effektief wees voor volgende stoor nie.';
+$lang['locfiledit_restore'] = 'Herstel die rugsteun lêer';
+$lang['locfiledit_save_bak'] = 'Rugsteun kopie sal geskep word met stoor.';
+$lang['locfiledit_save_config'] = 'Lêer suksesvol geskryf.';
+$lang['locfiledit_save_file'] = 'Stoor lêer';
+$lang['locfiledit_saved_bak'] = 'Rugsteun lêer geskep (%s)';
+$lang['locfiledit_show_default'] = 'Vertoon verwysings lêer:';
+$lang['locfiledit_syntax_error'] = 'Sintaks fout! Lêer kan nie gestoor word nie.';
+$lang['locfiledit_webmaster_only'] = 'Slegs webmeesters kan lokale lêers skep of verander.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'تهيئة محلية';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'القوالب';
+$lang['locfiledit_onglet_lang'] = 'اللغة';
+$lang['locfiledit_onglet_plug'] = 'مساعد شخصي';
+$lang['locfiledit_cant_save'] = 'الملف المحلي قابل او غير غابر للكتابه ، تأكد من الوصول و الكتابة الى المجلد"include/"';
+$lang['locfiledit_newfile'] = 'الملف غير موجود ، سوف يتم إنشاءه عن طريق تحرير الملفات المحلي';
+$lang['locfiledit_save_config'] = 'تمت كتابة الملف بنجاح .';
+$lang['locfiledit_show_default'] = 'عرض مرجع الملف :  ';
+$lang['locfiledit_save_bak'] = 'نسخة احتياطية أنشأت عن طريق الحفظ ';
+$lang['locfiledit_saved_bak'] = ' (%s) تم إنشاء  نسخة احتياطية من الملف';
+$lang['locfiledit_save_file'] = 'حفظ الملف ';
+$lang['locfiledit_choose_file'] = 'حدد ملف لتحريره ';
+$lang['locfiledit_edit'] = 'تحرير';
+$lang['locfiledit_restore'] = 'استعادة من  النسخة الاحتياطية';
+$lang['locfiledit_restore_confirm'] = 'نجرو التأكيد؟استعادة الملف كي يتم الحفظ في ملفات تالية';
+$lang['locfiledit_bak_loaded1'] = 'تم تحميل التخسة الاحتياطية';
+$lang['locfiledit_bak_loaded2'] = 'يجب حفظه ليتم استعادته ';
+$lang['locfiledit_syntax_error'] = 'خطأ في تركيب الجمل ، لا / يمكن حفظ المف';
+$lang['locfiledit_new_tpl'] = 'أنشأ ملف جديد';
+$lang['locfiledit_new_filename'] = 'أسم الملف';
+$lang['locfiledit_model'] = 'نموذج';
+$lang['locfiledit_empty_page'] = 'صفحة فارغه';
+$lang['locfiledit_parent_directory'] = 'أصل الدليل';
+$lang['locfiledit_filename_error'] = 'الحروف الغير مسموح بها في أسم الملف ';
+$lang['locfiledit_file_already_exists'] = 'الملف الموجود';
+$lang['locfiledit_model_error'] = 'يجب أختيار نموذج';
+$lang['locfiledit_empty_filename'] = 'يجب كتابة أسم الملف';
+$lang['locfiledit_webmaster_only'] = 'فقط مدير الموقع يمكن استخدام محرر الملفات المحلي';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/description.txt	(revision 25596)
@@ -0,0 +1,2 @@
+LocalFilesEditor - Редактор на локални файлове 
+Български [BG]
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Архивния файл е зареден.';
+$lang['locfiledit_bak_loaded2'] = 'Трябва да запишете файла за да го възстановите.';
+$lang['locfiledit_cant_save'] = 'Този файл е забранен за запис. Проверете папка "local/" дали е разришен записа(chmod).';
+$lang['locfiledit_choose_file'] = 'Избери файл за редактиране';
+$lang['locfiledit_edit'] = 'Редакция';
+$lang['locfiledit_empty_filename'] = 'Трябва да попълните име на файл.';
+$lang['locfiledit_empty_page'] = 'Празна страница';
+$lang['locfiledit_file_already_exists'] = 'Файла вече съществува.';
+$lang['locfiledit_filename_error'] = 'Забранен символ в името на файла.';
+$lang['locfiledit_model_error'] = 'Трябва да изберете модел.';
+$lang['locfiledit_model'] = 'Модел';
+$lang['locfiledit_new_filename'] = 'Име на файл';
+$lang['locfiledit_new_tpl'] = 'Създайте нов файл';
+$lang['locfiledit_newfile'] = 'Файлът не съществува и ще бъде създаден от LocalFiles Редактора';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Езици';
+$lang['locfiledit_onglet_localconf'] = 'Local config';
+$lang['locfiledit_onglet_plug'] = 'Персонални допълниния';
+$lang['locfiledit_onglet_tpl'] = 'Тапети';
+$lang['locfiledit_parent_directory'] = 'Главна директория';
+$lang['locfiledit_restore_confirm'] = 'Моля потвърдете?
+Възстановяването няма да е възможно до следващ запис. ';
+$lang['locfiledit_restore'] = 'Възтанови архивния файл';
+$lang['locfiledit_save_bak'] = 'Архивно копие ще бъде създадено след записа.';
+$lang['locfiledit_save_config'] = 'Файла е записан успешно.';
+$lang['locfiledit_save_file'] = 'Запис файл';
+$lang['locfiledit_saved_bak'] = 'Архивно копие е създадено (%s)';
+$lang['locfiledit_show_default'] = 'Покажи референтния файл:';
+$lang['locfiledit_syntax_error'] = 'Синтактична грешка! Файлът не може да бъде записан.';
+$lang['locfiledit_webmaster_only'] = 'Само Уебмастъри могат да създават и променят локални файлове.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Edita els teus arxius locals des del panell d'administració.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded2'] = 'Cal que deseu l\'arxiu per tal de poder-lo restaurar.';
+$lang['locfiledit_edit'] = 'Edita';
+$lang['locfiledit_file_already_exists'] = 'Aquest arxiu ja existeix.';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_new_filename'] = 'Nom de l\'arxiu';
+$lang['locfiledit_new_tpl'] = 'Crea un nou arxiu';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Idiomes';
+$lang['locfiledit_onglet_localconf'] = 'Configuració local';
+$lang['locfiledit_onglet_plug'] = 'Connector personal';
+$lang['locfiledit_onglet_tpl'] = 'Plantilles';
+$lang['locfiledit_bak_loaded1'] = 'Arxiu de còpia de seguretat carregat.';
+$lang['locfiledit_cant_save'] = 'L\'arxiu actual no té permís d\'escriptura. Comproveu si el directori "local/" disposa d\'aquest permís (chmod).';
+$lang['locfiledit_choose_file'] = 'Esculliu l\'arxiu a editar';
+$lang['locfiledit_empty_filename'] = 'Heu d\'escriure el nom del fitxer.';
+$lang['locfiledit_empty_page'] = 'Pàgina en blanc';
+$lang['locfiledit_filename_error'] = 'Caràcters prohibits en el nom del fitxer.';
+$lang['locfiledit_model_error'] = 'Heu de triar un model.';
+$lang['locfiledit_newfile'] = 'El fitxer no existeix i serà creat per LocalFiles Editor';
+$lang['locfiledit_parent_directory'] = 'Directori pare';
+$lang['locfiledit_restore_confirm'] = 'Esteu segurs?
+La restauració no serà efectiva fins a finalitzar.';
+$lang['locfiledit_restore'] = 'Restaura l\'arxiu de còpia de seguretat';
+$lang['locfiledit_save_bak'] = 'La còpia de seguretat es crearà en desar.';
+$lang['locfiledit_save_config'] = 'L\'arxiu s\'ha escrit correctament';
+$lang['locfiledit_save_file'] = 'Desa el fitxer';
+$lang['locfiledit_saved_bak'] = 'Arxiu de còpia de seguretat creat el (%s)';
+$lang['locfiledit_show_default'] = 'Visualitza el fitxer de referència:';
+$lang['locfiledit_syntax_error'] = 'Error de sintaxi! L\'arxiu s\'ha pogut desar.';
+$lang['locfiledit_webmaster_only'] = 'Només els administradors web poden crear o modificar arxius locals.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Editujte lokální soubory z administračního panelu.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// | plugin LocalFilesEditor ,czech lang by webprostor.eu                  |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokální konfigurace';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Šablony';
+$lang['locfiledit_onglet_lang'] = 'Jazyky';
+$lang['locfiledit_onglet_plug'] = 'Vlastní pluginy';
+$lang['locfiledit_cant_save'] = 'Vybraný soubor nelze přepsat.Zkontrolujte jestli je složka "local/" zapisovatelná (chmod).';
+$lang['locfiledit_newfile'] = 'Soubor neexistuje a bude vytvořen LocalFiles Editorem';
+$lang['locfiledit_save_config'] = 'Soubor byl změněn.';
+$lang['locfiledit_show_default'] = 'Zobraz referenční soubor: ';
+$lang['locfiledit_save_bak'] = 'Záloha bude vytvořena při uložení.';
+$lang['locfiledit_saved_bak'] = 'Záloha vytvořena (%s)';
+$lang['locfiledit_save_file'] = 'Uložit soubor';
+$lang['locfiledit_choose_file'] = 'Vyber soubor k editaci';
+$lang['locfiledit_edit'] = 'Editace';
+$lang['locfiledit_restore'] = 'Obnovit ze zálohy';
+$lang['locfiledit_restore_confirm'] = 'Prosím potvrďte?Obnova nebude mít efekt do dalšího uložení.';
+$lang['locfiledit_bak_loaded1'] = 'Záložní soubor nahrán.';
+$lang['locfiledit_bak_loaded2'] = 'Musíte nejprve soubor uložit aby mohl být obnoven.';
+$lang['locfiledit_syntax_error'] = 'Syntax error! Soubor nemůže být uložen.';
+$lang['locfiledit_new_tpl'] = 'Vytvořit nový soubor';
+$lang['locfiledit_new_filename'] = 'Název souboru';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Prázdná stránka';
+$lang['locfiledit_parent_directory'] = 'Nadřazená složka';
+$lang['locfiledit_filename_error'] = 'Nepovolené znaky v názvu souboru.';
+$lang['locfiledit_file_already_exists'] = 'Soubor už existuje.';
+$lang['locfiledit_model_error'] = 'Musíte zvolit model.';
+$lang['locfiledit_empty_filename'] = 'Musíte vyplnit název souboru.';
+$lang['locfiledit_webmaster_only'] = 'Pouze webmaster může vytvářet nebo měnit lokální soubory.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Rediger lokale filer fra administrationspanel.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Fil med sikkerhedskopi indlæst.';
+$lang['locfiledit_bak_loaded2'] = 'Du skal gemme filen for at gendanne den.';
+$lang['locfiledit_cant_save'] = 'Den aktuelle fil er ikke skrivbar. Undersøg om mappen "local/" er skrivbar (chmod).';
+$lang['locfiledit_choose_file'] = 'Vælg den fil, der skal redigeres';
+$lang['locfiledit_edit'] = 'Rediger';
+$lang['locfiledit_new_tpl'] = 'Opret ny fil';
+$lang['locfiledit_newfile'] = 'Filen findes ikke og vil blive oprettet af LocalFiles Editor';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Sprog';
+$lang['locfiledit_onglet_localconf'] = 'Lokal opsætning';
+$lang['locfiledit_onglet_plug'] = 'Personlig Plugin';
+$lang['locfiledit_onglet_tpl'] = 'Skabeloner';
+$lang['locfiledit_restore_confirm'] = 'Bekræft venligst?
+Gendan vil ikke træde i kraft før næste gem.';
+$lang['locfiledit_restore'] = 'Genopret fil med sikkerhedskopi';
+$lang['locfiledit_save_bak'] = 'Sikkerhedskopi vil blive oprettet når der gemmes.';
+$lang['locfiledit_save_config'] = 'Fil skrevet med succes.';
+$lang['locfiledit_save_file'] = 'Gem fil';
+$lang['locfiledit_saved_bak'] = 'Fil med sikkerhedskopi oprettet (%s)';
+$lang['locfiledit_show_default'] = 'Vis referencefil:';
+$lang['locfiledit_syntax_error'] = 'Syntaksfejl! Filen kan ikke gemmes.';
+$lang['locfiledit_empty_filename'] = 'Du skal skrive et filnavn.';
+$lang['locfiledit_empty_page'] = 'Tom side';
+$lang['locfiledit_file_already_exists'] = 'Filen findes allerede.';
+$lang['locfiledit_filename_error'] = 'Forbudt tegn i filnavn.';
+$lang['locfiledit_model_error'] = 'Du skal vælge en model.';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_new_filename'] = 'Filnavn';
+$lang['locfiledit_parent_directory'] = 'Overordnet mappe';
+$lang['locfiledit_webmaster_only'] = 'Kun webmastere kan oprette eller ændre lokale filer.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Administratoren können lokale Dateien direkt in Piwigo bearbeiten.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokale Konfiguration';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Vorlagen';
+$lang['locfiledit_onglet_lang'] = 'Sprachen';
+$lang['locfiledit_onglet_plug'] = 'Persönliches Plugin';
+$lang['locfiledit_cant_save'] = 'Die Datei ist nicht überschreibbar. Überprüfen Sie, ob das Verzeichnis "local/" beschreibbar ist (chmod).';
+$lang['locfiledit_newfile'] = 'Die Datei ist nicht vorhanden und wird vom LocalFilesEditor erstellt.';
+$lang['locfiledit_save_config'] = 'Datei erfolgreich geschrieben.';
+$lang['locfiledit_show_default'] = 'Zeige Referenz-Datei: ';
+$lang['locfiledit_save_bak'] = 'Backup-Kopie wird beim Speichern erstellt.';
+$lang['locfiledit_saved_bak'] = 'Backup-Datei erstellt (%s)';
+$lang['locfiledit_save_file'] = 'Datei speichern';
+$lang['locfiledit_choose_file'] = 'Wählen Sie eine Datei zum Bearbeiten aus';
+$lang['locfiledit_edit'] = 'Bearbeiten';
+$lang['locfiledit_restore'] = 'Wiederherstellung der Backup-Datei';
+$lang['locfiledit_restore_confirm'] = 'Bitte bestätigen! Wiederherstellung wird nicht wirksam sein bis zum nächsten Speichern.';
+$lang['locfiledit_bak_loaded1'] = 'Backup-Datei geladen.';
+$lang['locfiledit_bak_loaded2'] = 'Sie müssen die Datei speichern, um sie wiederherstellen zu können.';
+$lang['locfiledit_syntax_error'] = 'Syntax-Fehler! Datei kann nicht gespeichert werden.';
+$lang['locfiledit_new_tpl'] = 'Erstelle eine neue Datei';
+$lang['locfiledit_new_filename'] = 'Dateiname';
+$lang['locfiledit_model'] = 'Modell';
+$lang['locfiledit_empty_page'] = 'Leere Seite';
+$lang['locfiledit_parent_directory'] = 'Übergeordnetes Verzeichnis';
+$lang['locfiledit_filename_error'] = 'Verbotene Zeichen im Dateinamen.';
+$lang['locfiledit_file_already_exists'] = 'Datei ist bereits vorhanden.';
+$lang['locfiledit_model_error'] = 'Sie müssen ein Modell wählen.';
+$lang['locfiledit_empty_filename'] = 'Sie müssen einen Dateinamen eingeben.';
+$lang['locfiledit_webmaster_only'] = 'Nur Webmaster können lokale Dateien erstellen oder verändern.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Επεξεργασ?α τοπικ?ν αρχε?ων απ? τον π?νακα διαχε?ρισης.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Το αρχείο αντιγράφου ασφαλείας έχει φορτωθεί.';
+$lang['locfiledit_bak_loaded2'] = 'Πρέπει να αποθηκεύσετε το αρχείο για να το επαναφέρετε.';
+$lang['locfiledit_cant_save'] = 'Το τρέχων αρχείο δεν είναι εγγράψιμο. Ελέγξτε αν ο κατάλογος  "local/" είναι εγγράψιμος (chmod).';
+$lang['locfiledit_choose_file'] = 'Επιλέξτε το αρχείο που θέλετε να επεξεργαστείτε';
+$lang['locfiledit_edit'] = 'Επεξεργασία';
+$lang['locfiledit_empty_filename'] = 'Θα πρέπει να συμπληρώσετε το όνομα του αρχείου.';
+$lang['locfiledit_empty_page'] = 'Κενή σελίδα';
+$lang['locfiledit_file_already_exists'] = 'Το αρχείο υπάρχει ήδη.';
+$lang['locfiledit_filename_error'] = 'Απαγορευμένοι χαρακτήρες στο όνομα αρχείου.';
+$lang['locfiledit_model_error'] = 'Πρέπει να επιλέξετε ένα υπόδειγμα.';
+$lang['locfiledit_model'] = 'Υπόδειγμα';
+$lang['locfiledit_new_filename'] = 'Όνομα Αρχείου';
+$lang['locfiledit_new_tpl'] = 'Δημιουργία νέου αρχείου';
+$lang['locfiledit_newfile'] = 'Το αρχείο δεν υπάρχει και θα δημιουργηθεί από τον  LocalFiles Editor';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Γλώσσες';
+$lang['locfiledit_onglet_localconf'] = 'Τοπικές ρυθμίσεις';
+$lang['locfiledit_onglet_plug'] = 'Προσωπικά Πρόσθετα';
+$lang['locfiledit_onglet_tpl'] = 'Πρότυπα';
+$lang['locfiledit_parent_directory'] = 'Γονικός κατάλογος';
+$lang['locfiledit_restore_confirm'] = 'Παρακαλούμε να επιβεβαιώσετε;
+Η Επαναφορά αρχείου αντιγράφου ασφαλείας δεν θα γίνει μέχρι την επόμενη αποθήκευση.';
+$lang['locfiledit_restore'] = 'Επαναφορά αρχείου αντιγράφου ασφαλείας';
+$lang['locfiledit_save_bak'] = 'Αντίγραφο ασφαλείας θα δημιουργηθεί κατά την αποθήκευση.';
+$lang['locfiledit_save_config'] = 'Το αρχείο εγγράφθικε με επιτυχία.';
+$lang['locfiledit_save_file'] = 'Αποθήκευση Αρχείου';
+$lang['locfiledit_saved_bak'] = 'Δημιουργία αρχείου ασφαλείας(%s)';
+$lang['locfiledit_show_default'] = 'Εμφάνιση αρχείου αναφοράς:';
+$lang['locfiledit_syntax_error'] = 'Συντακτικό σφάλμα! Το αρχείο δεν μπορεί να αποθηκευτεί.';
+$lang['locfiledit_webmaster_only'] = 'Μόνο webmasters μπορεί να δημιουργεί ή να τροποποιεί τοπικά αρχεία.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Edit local files from administration panel.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Local config';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_onglet_lang'] = 'Languages';
+$lang['locfiledit_onglet_plug'] = 'Personal Plugin';
+$lang['locfiledit_cant_save'] = 'Current file isn\'t writeable. Check if directory "local/" is writeable (chmod).';
+$lang['locfiledit_newfile'] = 'The file does not exist until some information is entered 
+below. Once information is entered and saved, the file will be created.';
+$lang['locfiledit_save_config'] = 'File written successfully.';
+$lang['locfiledit_show_default'] = 'Display reference file: ';
+$lang['locfiledit_save_bak'] = 'Backup copy will be created on save.';
+$lang['locfiledit_saved_bak'] = 'Backup file created (%s)';
+$lang['locfiledit_save_file'] = 'Save file';
+$lang['locfiledit_choose_file'] = 'Choose the file to be edited';
+$lang['locfiledit_edit'] = 'Edit';
+$lang['locfiledit_restore'] = 'Restore the backup file';
+$lang['locfiledit_restore_confirm'] = 'Please confirm?
+Restore won\'t be effective till next save.';
+$lang['locfiledit_bak_loaded1'] = 'Backup file loaded.';
+$lang['locfiledit_bak_loaded2'] = 'You must save file to restore it.';
+$lang['locfiledit_syntax_error'] = 'Syntax error! File can\'t be saved.';
+$lang['locfiledit_new_tpl'] = 'Create new file';
+$lang['locfiledit_new_filename'] = 'File name';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Empty page';
+$lang['locfiledit_parent_directory'] = 'Parent directory';
+$lang['locfiledit_filename_error'] = 'Forbidden characters in file name.';
+$lang['locfiledit_file_already_exists'] = 'File already exists.';
+$lang['locfiledit_model_error'] = 'You must choose a model.';
+$lang['locfiledit_empty_filename'] = 'You must enter the file name.';
+$lang['locfiledit_webmaster_only'] = 'Only webmasters can create or modify local files.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Redaktu lokajn dosierojn el la administra panelo.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore'] = 'Restaŭri la savdosieron';
+$lang['locfiledit_restore_confirm'] = 'Bonvolu konfirmi.
+Restaŭrado efektiviĝos post musklako ĉe Konservi.';
+$lang['locfiledit_save_bak'] = 'Savkopio kreiĝos dum konserviĝo.';
+$lang['locfiledit_save_config'] = 'La dosiero sukcese skribiĝis.';
+$lang['locfiledit_save_file'] = 'Konservi dosieron';
+$lang['locfiledit_saved_bak'] = 'Savdosiero kreiĝis (%s)';
+$lang['locfiledit_show_default'] = 'Vidigu referencan dosieron:';
+$lang['locfiledit_syntax_error'] = 'Sintakseraro! Ne eblas konservi la dosieron.';
+$lang['locfiledit_webmaster_only'] = 'Nur retestroj povas krei aŭ modifi lokajn dosierojn.';
+$lang['locfiledit_bak_loaded1'] = 'Savdosiero ŝargita.';
+$lang['locfiledit_bak_loaded2'] = 'Vi devas konservi la dosieron por restaŭri ĝin.';
+$lang['locfiledit_cant_save'] = 'La kuranta dosiero ne skribeblas. Kontrolu ĉu la permesilo de la dosierujo "local/" taŭgas (chmod).';
+$lang['locfiledit_choose_file'] = 'Elektu la dosiero redaktota.';
+$lang['locfiledit_edit'] = 'Redakti';
+$lang['locfiledit_empty_filename'] = 'Vi devas tajpi la dosieran nomon.';
+$lang['locfiledit_empty_page'] = 'Malplena paĝo';
+$lang['locfiledit_file_already_exists'] = 'La dosiero jam ekzistas.';
+$lang['locfiledit_filename_error'] = 'Malpermesitaj signoj en la dosiera nomo.';
+$lang['locfiledit_model'] = 'Modelo';
+$lang['locfiledit_model_error'] = 'Elektu modelon.';
+$lang['locfiledit_new_filename'] = 'Dosiera nomo.';
+$lang['locfiledit_new_tpl'] = 'Krei novan dosieron';
+$lang['locfiledit_newfile'] = 'La dosiero ne ekzistas ĝis informoj tajpiĝas ĉisube. Ĝi kreiĝos ekde informoj entajpiĝas kaj registriĝas.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Lingvoj';
+$lang['locfiledit_onglet_localconf'] = 'Loka agordo';
+$lang['locfiledit_onglet_plug'] = 'Persona kromaĵo';
+$lang['locfiledit_onglet_tpl'] = 'Ŝablonoj';
+$lang['locfiledit_parent_directory'] = 'Parenca dosierujo';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Edita tus archivos locales desde el panel de administración.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Configuración local';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Plantillas';
+$lang['locfiledit_onglet_lang'] = 'Idiomas';
+$lang['locfiledit_onglet_plug'] = 'Plugin personal';
+$lang['locfiledit_cant_save'] = 'No ha sido posible guardar el archivo. Verifique los permisos (chmod) del directorio "local/".';
+$lang['locfiledit_newfile'] = 'El archivo no existe y será creado la primera vez que lo guarde';
+$lang['locfiledit_save_config'] = 'El archivo ha sido guardado.';
+$lang['locfiledit_show_default'] = 'Editar el archivo ';
+$lang['locfiledit_save_bak'] = 'Antes de guardar, se creará una copia de seguridad';
+$lang['locfiledit_saved_bak'] = 'Se ha creado una copia de seguridad (%s)';
+$lang['locfiledit_save_file'] = 'Guardar el archivo';
+$lang['locfiledit_choose_file'] = 'Seleccione el archivo que desea editar';
+$lang['locfiledit_edit'] = 'Editar';
+$lang['locfiledit_restore'] = 'Cargar la copia de seguridad';
+$lang['locfiledit_restore_confirm'] = '¿Confirma que desea cargar la copia de seguridad?
+Posteriormente deberá hacer clic en Guardar para restaurarla.';
+$lang['locfiledit_bak_loaded1'] = 'Se ha cargado la copia de seguridad';
+$lang['locfiledit_bak_loaded2'] = 'Para conservar la la copia de seguridad debe guardar el archivo.';
+$lang['locfiledit_syntax_error'] = 'Error de sintaxis. No es posible guardar el archivo.';
+$lang['locfiledit_new_tpl'] = 'Crear un nuevo archivo ';
+$lang['locfiledit_new_filename'] = 'Nombre del archivo ';
+$lang['locfiledit_model'] = 'Modelo ';
+$lang['locfiledit_empty_page'] = 'Página en blanco';
+$lang['locfiledit_parent_directory'] = 'Directorio de nivel superior';
+$lang['locfiledit_filename_error'] = 'El nombre de archivo tiene caracteres no permitidos.';
+$lang['locfiledit_file_already_exists'] = 'El archivo ya existe.';
+$lang['locfiledit_model_error'] = 'Por favor, seleccione un modelo.';
+$lang['locfiledit_empty_filename'] = 'Por favor, indique un nombre de archivo.';
+$lang['locfiledit_webmaster_only'] = 'Sólo los administradores pueden crear o modificar fichero locales.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Võimalda kohalike failide redigeerimist.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Varukoopia avatud.';
+$lang['locfiledit_bak_loaded2'] = 'Taastamise jaoks pead sa faili salvestama.';
+$lang['locfiledit_cant_save'] = 'Aktiivne faili pole kirjutatav. Vaata kas kaust "local/" on kirjutusõigustega (chmod).';
+$lang['locfiledit_choose_file'] = 'Vali fail mida redigeerida';
+$lang['locfiledit_edit'] = 'Redigeeri';
+$lang['locfiledit_empty_filename'] = 'Sa pead sisestama faili nimi.';
+$lang['locfiledit_empty_page'] = 'Tühi leht';
+$lang['locfiledit_file_already_exists'] = 'Fail on juba olemas.';
+$lang['locfiledit_filename_error'] = 'Lubamatuid tähte faili nimis.';
+$lang['locfiledit_model_error'] = 'Sa pead valima mudeli.';
+$lang['locfiledit_model'] = 'Mudel';
+$lang['locfiledit_new_filename'] = 'Faili nimi';
+$lang['locfiledit_new_tpl'] = 'Loo uus fail';
+$lang['locfiledit_newfile'] = 'Faili pole olemas, LocalFiles Editor tekitab selle';
+$lang['locfiledit_onglet_css'] = 'CSS laaditabel';
+$lang['locfiledit_onglet_lang'] = 'Keeled';
+$lang['locfiledit_onglet_localconf'] = 'Kohalik seadistamine';
+$lang['locfiledit_onglet_plug'] = 'Isiklik plugin';
+$lang['locfiledit_onglet_tpl'] = 'Mallid';
+$lang['locfiledit_parent_directory'] = 'Ülemine kaust';
+$lang['locfiledit_restore_confirm'] = 'Palun kinnita?
+Taastatakse alles salvestamise korras.';
+$lang['locfiledit_restore'] = 'Taasta varukoopia';
+$lang['locfiledit_save_bak'] = 'Varukoopia tehakse salvestamisel.';
+$lang['locfiledit_save_config'] = 'Fail edukalt loodud.';
+$lang['locfiledit_save_file'] = 'Salvesta fail';
+$lang['locfiledit_saved_bak'] = 'Varukoopia loomine (%s)';
+$lang['locfiledit_show_default'] = 'Kuva etalon-faili:';
+$lang['locfiledit_syntax_error'] = 'Süntaksiviga! Faili ei salvestatud.';
+$lang['locfiledit_webmaster_only'] = 'Ainult veebimeistrid võivad luua või muuta kohalike faile.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'فایل پشتیبان بارگذاری شد.';
+$lang['locfiledit_bak_loaded2'] = 'برای بازیابی فایل باید آن را ذخیره کنید.';
+$lang['locfiledit_cant_save'] = 'این فایل قابل ویرایش نمی باشد. باید دسترسی (chmod) آن را از داخل هاست تغییر دهید.';
+$lang['locfiledit_choose_file'] = 'یک فایل را برای ویرایش انتخاب کنید';
+$lang['locfiledit_edit'] = 'ویرایش';
+$lang['locfiledit_empty_filename'] = 'باید یک نام برای فایل خود انتخاب کنید.';
+$lang['locfiledit_empty_page'] = 'برگه ی خالی';
+$lang['locfiledit_file_already_exists'] = 'فایلی با این نام موجود می باشد.';
+$lang['locfiledit_filename_error'] = 'نویسه های غیر مجاز در نام فایل استفاده شده است.';
+$lang['locfiledit_model_error'] = 'باید یک الگو را انتخاب کنید.';
+$lang['locfiledit_model'] = 'الگو';
+$lang['locfiledit_new_filename'] = 'نام فایل';
+$lang['locfiledit_new_tpl'] = 'ایجاد فایل تازه';
+$lang['locfiledit_newfile'] = 'این فایل وجود ندارد و بوسیله ی LocalFiles Editor ایجاد خواهد شد';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'زبان ها';
+$lang['locfiledit_onglet_localconf'] = 'پیکربندی محلی (Local Config)';
+$lang['locfiledit_onglet_plug'] = 'افزونه های شخصی';
+$lang['locfiledit_onglet_tpl'] = 'قالب ها';
+$lang['locfiledit_parent_directory'] = 'پوشه ی مادر';
+$lang['locfiledit_restore_confirm'] = 'آیا مطمئن می باشید؟
+<br>
+بدون ذخیره ی فایل بازیابی آن ممکن نخواهد بود.';
+$lang['locfiledit_restore'] = 'بازیابی فایل پشتیبان';
+$lang['locfiledit_save_bak'] = 'فایل پشتیبان پس از نخستین ذخیره ایجاد خواهد شد.';
+$lang['locfiledit_save_config'] = 'فایل با موفقیت ویرایش شد.';
+$lang['locfiledit_save_file'] = 'ذخیره فایل';
+$lang['locfiledit_saved_bak'] = 'فایل پشتیبان ایجاد شد (%s)';
+$lang['locfiledit_show_default'] = 'نمایش فایل مرجع';
+$lang['locfiledit_syntax_error'] = 'خطای دستوری (Syntax)! امکان ذخیره ی فایل وجود ندارد.';
+$lang['locfiledit_webmaster_only'] = 'فقط مدیرکل می تواند یک فایل محلی را ایجاد یا ویرایش کند.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Muokkaa paikallisia tiedostoja ylläpitopaneelista.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Varmuuskopiotiedosto ladattu.';
+$lang['locfiledit_bak_loaded2'] = 'Sinun on tallennettava tiedosto palauttaaksesi sen.';
+$lang['locfiledit_cant_save'] = 'Nykyiseen tiedostoon ei voida kirjoittaa. Tarkista, onko hakemistoon "local/" kirjoitusoikeudet (chmod).';
+$lang['locfiledit_choose_file'] = 'Valitse muokattava tiedosto';
+$lang['locfiledit_edit'] = 'Muokkaa';
+$lang['locfiledit_empty_filename'] = 'Sinun on annettava tiedostonimi.';
+$lang['locfiledit_empty_page'] = 'Tyhjä sivu';
+$lang['locfiledit_file_already_exists'] = 'Tiedosto on jo olemassa.';
+$lang['locfiledit_filename_error'] = 'Tiedostonimi sisältää kiellettyjä merkkejä.';
+$lang['locfiledit_model'] = 'Malli';
+$lang['locfiledit_model_error'] = 'Sinun on valittava malli.';
+$lang['locfiledit_new_filename'] = 'Tiedostonimi';
+$lang['locfiledit_new_tpl'] = 'Luo uusi tiedosto';
+$lang['locfiledit_newfile'] = 'Tiedostoa ei ole, joten se luodaan LocalFiles Editorilla';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Kielet';
+$lang['locfiledit_onglet_localconf'] = 'Paikallinen konfiguraatio';
+$lang['locfiledit_onglet_plug'] = 'Henkilökohtainen lisäosa';
+$lang['locfiledit_onglet_tpl'] = 'Mallineet';
+$lang['locfiledit_parent_directory'] = 'Ylähakemisto';
+$lang['locfiledit_restore'] = 'Palauta varmuuskopio';
+$lang['locfiledit_restore_confirm'] = 'Vahvistetaanko?
+Palautus astuu voimaan vasta seuraavan tallennuksen yhteydessä.';
+$lang['locfiledit_save_bak'] = 'Varmuuskopio luodaan seuraavan tallennuksen yhteydessä.';
+$lang['locfiledit_save_config'] = 'Tiedosto kirjoitettu onnistuneesti.';
+$lang['locfiledit_save_file'] = 'Tallenna tiedosto';
+$lang['locfiledit_saved_bak'] = 'Varmuuskopio luotu (%s)';
+$lang['locfiledit_show_default'] = 'Näytä referenssitiedosto:';
+$lang['locfiledit_syntax_error'] = 'Syntaksivirhe! Tiedostoa ei voida tallentaa.';
+$lang['locfiledit_webmaster_only'] = 'Vain webmasterit voivat luoda ja muuttaa paikallisia tiedostoja.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Éditez vos fichiers locaux à partir du panneau d'administration.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+
+$lang['locfiledit_onglet_localconf'] = 'Configuration locale';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Patrons';
+$lang['locfiledit_onglet_lang'] = 'Langues';
+$lang['locfiledit_onglet_plug'] = 'Greffon Personnel';
+$lang['locfiledit_cant_save'] = 'Impossible d\'écrire le fichier. Vérifiez les permissions (chmod) du dossier "local/".';
+$lang['locfiledit_newfile'] = 'Dans cette fenêtre, écrivez les informations pour configurer votre galerie Piwigo.';
+$lang['locfiledit_save_config'] = 'Le fichier a été enregistré.';
+$lang['locfiledit_show_default'] = 'Afficher le fichier ';
+$lang['locfiledit_save_bak'] = 'Une copie de sauvegarde du fichier sera créée lors de l\'enregistrement';
+$lang['locfiledit_saved_bak'] = 'Une copie de sauvegarde a été créée (%s)';
+$lang['locfiledit_save_file'] = 'Enregistrer le fichier';
+$lang['locfiledit_choose_file'] = 'Choisissez un fichier à éditer';
+$lang['locfiledit_edit'] = 'Éditer';
+$lang['locfiledit_restore'] = 'Charger le fichier de sauvegarde';
+$lang['locfiledit_restore_confirm'] = 'Souaitez-vous charger le fichier de sauvegarde?
+Vous devrez ensuite cliquer sur Enregistrer pour le restaurer.';
+$lang['locfiledit_bak_loaded1'] = 'Fichier de sauvegarde chargé';
+$lang['locfiledit_bak_loaded2'] = 'Vous devez l\'enregistrer pour le sauvegarder.';
+$lang['locfiledit_syntax_error'] = 'Erreur de syntaxe! Impossible d\'enregistrer le fichier.';
+$lang['locfiledit_new_tpl'] = 'Créer un nouveau fichier';
+$lang['locfiledit_new_filename'] = 'Nom du fichier';
+$lang['locfiledit_model'] = 'Modèle';
+$lang['locfiledit_empty_page'] = 'Page vierge';
+$lang['locfiledit_parent_directory'] = 'Dossier parent';
+$lang['locfiledit_filename_error'] = 'Caractères interdits dans le nom du fichier.';
+$lang['locfiledit_file_already_exists'] = 'Le fichier existe déjà.';
+$lang['locfiledit_model_error'] = 'Veuillez sélectionner un modèle.';
+$lang['locfiledit_empty_filename'] = 'Veuillez indiquer un nom de fichier.';
+$lang['locfiledit_webmaster_only'] = 'Seuls les Webmestres sont autorisés à créer ou modifier les fichiers locaux.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Editez vos fichiers locaux à partir du panneau d'administration.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Configuration locale';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_onglet_lang'] = 'Langues';
+$lang['locfiledit_onglet_plug'] = 'Plugin Personnel';
+$lang['locfiledit_cant_save'] = 'Impossible d\'écrire le fichier. Vérifiez les permissions (chmod) du dossier "local/".';
+$lang['locfiledit_newfile'] = 'Dans cette fenêtre, écrivez les informations pour configurer votre galerie Piwigo.';
+$lang['locfiledit_save_config'] = 'Le fichier a été enregistré.';
+$lang['locfiledit_show_default'] = 'Afficher le fichier ';
+$lang['locfiledit_save_bak'] = 'Une copie de sauvegarde du fichier sera créée lors de l\'enregistrement';
+$lang['locfiledit_saved_bak'] = 'Une copie de sauvegarde a été créée (%s)';
+$lang['locfiledit_save_file'] = 'Enregistrer le fichier';
+$lang['locfiledit_choose_file'] = 'Choisissez un fichier à éditer';
+$lang['locfiledit_edit'] = 'Editer';
+$lang['locfiledit_restore'] = 'Charger le fichier de sauvegarde';
+$lang['locfiledit_restore_confirm'] = 'Souaitez-vous charger le fichier de sauvegarde?
+Vous devrez ensuite cliquer sur Enregistrer pour le restaurer.';
+$lang['locfiledit_bak_loaded1'] = 'Fichier de sauvegarde chargé';
+$lang['locfiledit_bak_loaded2'] = 'Vous devez l\'enregistrer pour le sauvegarder.';
+$lang['locfiledit_syntax_error'] = 'Erreur de syntaxe! Impossible d\'enregistrer le fichier.';
+$lang['locfiledit_new_tpl'] = 'Créer un nouveau fichier';
+$lang['locfiledit_new_filename'] = 'Nom du fichier';
+$lang['locfiledit_model'] = 'Modèle';
+$lang['locfiledit_empty_page'] = 'Page vierge';
+$lang['locfiledit_parent_directory'] = 'Dossier parent';
+$lang['locfiledit_filename_error'] = 'Caractères interdits dans le nom du fichier.';
+$lang['locfiledit_file_already_exists'] = 'Le fichier existe déjà.';
+$lang['locfiledit_model_error'] = 'Veuillez sélectionner un modèle.';
+$lang['locfiledit_empty_filename'] = 'Veuillez indiquer un nom de fichier.';
+$lang['locfiledit_webmaster_only'] = 'Seuls les webmasters sont autorisés à créer ou modifier les fichiers locaux.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Modifica ficheiros locais desde o panel de administración.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded2'] = 'Terás que gardar o ficheiro para poder restauralo.';
+$lang['locfiledit_bak_loaded1'] = 'Cargar o ficheiro da copia de seguranza';
+$lang['locfiledit_restore_confirm'] = 'Confirmas que desexas cargar a copia de seguranza?
+Posteriormente deberás premer e Gardar para restaurala.';
+$lang['locfiledit_restore'] = 'Restaurar o ficheiro de copia de seguranza';
+$lang['locfiledit_save_bak'] = 'A copia de seguranza será creada ó gardar.';
+$lang['locfiledit_save_config'] = 'O ficheiro escribiuse con éxito.';
+$lang['locfiledit_save_file'] = 'Gardar ficheiro';
+$lang['locfiledit_saved_bak'] = 'Ficheiro de copia de seguranza creada (%)';
+$lang['locfiledit_show_default'] = 'Amosar o ficheiro referencia:';
+$lang['locfiledit_syntax_error'] = 'Erro de sintaxe! o ficheiro non pode ser gravado';
+$lang['locfiledit_webmaster_only'] = 'Só os administradores web poden crear ou modificar ficheiros locais.';
+$lang['locfiledit_cant_save'] = 'Non se pode escribir o actual ficheiro. Comproba se o cartafol "local/" ten permiso para escribir (chmod).';
+$lang['locfiledit_choose_file'] = 'Escolle o ficheiro a ser modificado';
+$lang['locfiledit_edit'] = 'Modificar';
+$lang['locfiledit_empty_filename'] = 'Debes inserir o nome do ficheiro.';
+$lang['locfiledit_empty_page'] = 'Páxina baleira';
+$lang['locfiledit_file_already_exists'] = 'O ficheiro xa existe.';
+$lang['locfiledit_filename_error'] = 'Hai caracteres prohibidos no nome do ficheiro.';
+$lang['locfiledit_model'] = 'Modelo';
+$lang['locfiledit_model_error'] = 'Debes escoller un modelo.';
+$lang['locfiledit_new_filename'] = 'Nome do ficheiro';
+$lang['locfiledit_new_tpl'] = 'Crear un novo ficheiro';
+$lang['locfiledit_newfile'] = 'O ficheiro non existe mentres non se insire dentro algunha información.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Idiomas';
+$lang['locfiledit_onglet_localconf'] = 'Configuración local';
+$lang['locfiledit_onglet_plug'] = 'Engadido persoal';
+$lang['locfiledit_onglet_tpl'] = 'Modelos';
+$lang['locfiledit_parent_directory'] = 'Cartafol pai';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ערוך קבצים מקומיים מהפאנל ניהול.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'הגדרות מקומיות';
+$lang['locfiledit_onglet_css'] = 'גיליונות סגנון מדורגים(CSS)';
+$lang['locfiledit_onglet_tpl'] = 'תבניות';
+$lang['locfiledit_onglet_lang'] = 'ספות';
+$lang['locfiledit_onglet_plug'] = 'תוסף אישי';
+$lang['locfiledit_cant_save'] = 'לא ניתן לשנות את הקובץ. בדוק אם לתיקיה "local/" יש הרשאות לכתיבה (chmod).';
+$lang['locfiledit_newfile'] = 'הקובץ לא קיים, הקובץ ייווצר על ידי עורך הקבצים המקומיים (localfile)';
+$lang['locfiledit_save_config'] = 'הקובץ נכתב בהצלחה.';
+$lang['locfiledit_show_default'] = 'הצג את ההפניה לקובץ: ';
+$lang['locfiledit_save_bak'] = 'עותק גיבוי יווצר בעת השמירה.';
+$lang['locfiledit_saved_bak'] = 'קובץ גיבוי שנוצר (%s)';
+$lang['locfiledit_save_file'] = 'שמור קובץ';
+$lang['locfiledit_choose_file'] = 'בחר את הקובץ לעריכה';
+$lang['locfiledit_edit'] = 'ערוך';
+$lang['locfiledit_restore'] = 'שחזר את קובץ הגיבוי';
+$lang['locfiledit_restore_confirm'] = 'אשר בבקשה? שיחזור קובץ הגיבוי לא יהיה אפקטיבי עד השמירה הבאה.';
+$lang['locfiledit_bak_loaded1'] = 'קובץ גיבוי נטען.';
+$lang['locfiledit_bak_loaded2'] = 'אתה חייב לשמור את הקובץ בכדי לשחזר.';
+$lang['locfiledit_syntax_error'] = 'שגיאה תחבירית! לא ניתן לשמור את הקובץ.';
+$lang['locfiledit_new_tpl'] = 'צור קובץ חדש';
+$lang['locfiledit_new_filename'] = 'שם הקובץ';
+$lang['locfiledit_model'] = 'דגם';
+$lang['locfiledit_empty_page'] = 'דף ריק';
+$lang['locfiledit_parent_directory'] = 'מקור';
+$lang['locfiledit_filename_error'] = 'אסור תווים בשם הקובץ.';
+$lang['locfiledit_file_already_exists'] = 'הקובץ כבר קיים.';
+$lang['locfiledit_model_error'] = 'אתה חייב לחבחור דגם.';
+$lang['locfiledit_empty_filename'] = 'אתה חייב למלא את שם הקובץ.';
+$lang['locfiledit_webmaster_only'] = 'רק מנהל האתר יכול ליצור או לשנות קבצים מקומיים.';
+$lang['locfiledit_filename_error'] = 'אסור להשתמש בתווים מסויימים בשם הקובץ.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Uredivanje lokalnih datoteka iz panela za administraciju.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+$lang['locfiledit_onglet_localconf'] = 'Lokalne postavke';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Predlošci';
+$lang['locfiledit_onglet_lang'] = 'Jezici';
+$lang['locfiledit_onglet_plug'] = 'Osobni plugin';
+$lang['locfiledit_cant_save'] = 'Trenutna datoteka ne može se zapisati. Provjerite može li se zapisivati u mapu "local/" (chmod).';
+$lang['locfiledit_newfile'] = 'Datoteka ne postoji i bit ce kreirana pomocu LocalFiles Editor-a';
+$lang['locfiledit_save_config'] = 'Datoteka uspješno zapisana.';
+$lang['locfiledit_show_default'] = 'Prikaži referentnu datoteku: ';
+$lang['locfiledit_save_bak'] = 'Sigurnosna kopija ce biti kreirana kod spremanja.';
+$lang['locfiledit_saved_bak'] = 'Sigurnosna kopija kreirana (%s)';
+$lang['locfiledit_save_file'] = 'Spremi datoteku';
+$lang['locfiledit_choose_file'] = 'Odaberi datoteku za uredivanje';
+$lang['locfiledit_edit'] = 'Uredi';
+$lang['locfiledit_restore'] = 'Vrati sigurnosnu kopiju datoteke';
+$lang['locfiledit_restore_confirm'] = 'Molimo potvrdite.
+Vracanje kopije nece biti prihvaceno do sljedeceg spremanja.';
+$lang['locfiledit_bak_loaded1'] = 'Sigurnosna kopija datoteke ucitana.';
+$lang['locfiledit_bak_loaded2'] = 'Morate snimiti datoteku kako bi je vratili u prijašnje stanje.';
+$lang['locfiledit_syntax_error'] = 'Greška u sintaksi! Datoteka ne može biti spremljena.';
+$lang['locfiledit_new_tpl'] = 'Kreiraj novu datoteku';
+$lang['locfiledit_new_filename'] = 'Naziv datoteke';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Prazna stranica';
+$lang['locfiledit_parent_directory'] = 'Prethodna mapa';
+$lang['locfiledit_filename_error'] = 'Zabranjeni znakovi u nazivu datoteke.';
+$lang['locfiledit_file_already_exists'] = 'Datoteka vec postoji.';
+$lang['locfiledit_model_error'] = 'Morate odabrati model.';
+$lang['locfiledit_empty_filename'] = 'Morate popuniti naziv datoteke.';
+$lang['locfiledit_webmaster_only'] = 'Samo webmasteri mogu kreirati ili mijenjati lokalne datoteke.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Helyi fájlok szerkesztése az adminisztrációs felületen.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Helyi beállítások';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Sablonok';
+$lang['locfiledit_onglet_lang'] = 'Nyelv';
+$lang['locfiledit_onglet_plug'] = 'Egyedi bővítmény';
+$lang['locfiledit_cant_save'] = 'A fájl nem írható. Ellenőrizze a könyvtár "local/" írhatóságát (chmod)';
+$lang['locfiledit_newfile'] = 'Nincs ilyen fájl a LocalFiles Editor létre tudja hozni';
+$lang['locfiledit_save_config'] = 'A fájl módosítása sikeres.';
+$lang['locfiledit_show_default'] = 'Fájl kiválasztás: ';
+$lang['locfiledit_save_bak'] = 'Biztonsági másolat mentése.';
+$lang['locfiledit_saved_bak'] = 'Biztonsági másolat létrehozva (%s)';
+$lang['locfiledit_save_file'] = 'Fájl mentése';
+$lang['locfiledit_choose_file'] = 'Válassza ki a szerkesztendő fájlt';
+$lang['locfiledit_edit'] = 'Szerkesztés';
+$lang['locfiledit_restore'] = 'Biztonsági másolat visszatöltése';
+$lang['locfiledit_restore_confirm'] = 'Biztosan ezt akarja?
+A változtatás nem vonható vissza.';
+$lang['locfiledit_bak_loaded1'] = 'Biztonsági másolat betöltve.';
+$lang['locfiledit_bak_loaded2'] = 'Mentett fájl visszaállítása.';
+$lang['locfiledit_syntax_error'] = 'Syntax error! A fájl mentése meghiúsult.';
+$lang['locfiledit_new_tpl'] = 'Új fájl létrehozása';
+$lang['locfiledit_new_filename'] = 'Fájl neve';
+$lang['locfiledit_model'] = 'Típus';
+$lang['locfiledit_empty_page'] = 'Üres oldal';
+$lang['locfiledit_parent_directory'] = 'Szülő könyvtár';
+$lang['locfiledit_filename_error'] = 'Nem használható fájlnév vagy karakter.';
+$lang['locfiledit_file_already_exists'] = 'Ilyen fájl már létezik.';
+$lang['locfiledit_model_error'] = 'A típust ki kell választani.';
+$lang['locfiledit_empty_filename'] = 'A fájlnevet ki kell tölteni.';
+/* TODO */ $lang['locfiledit_webmaster_only'] = 'Csak a webmesterek hozhatnak létre, vagy módosíthatnak helyi fájlokat.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Modificare i file locali dal pannello di amministrazione.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Configurazione locale';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_onglet_lang'] = 'Lingue';
+$lang['locfiledit_onglet_plug'] = 'Plugin Personale';
+$lang['locfiledit_cant_save'] = 'Il file corrente non è scrivibile. Verificare i permessi di scrittura (chmod) della directory "local/".';
+$lang['locfiledit_newfile'] = 'Il file non esiste fino a quando qualche informazione verrà inserita di seguito. Una volta che le informazioni sono inserite e salvate, il file verrà creato.';
+$lang['locfiledit_save_config'] = 'File salvato con successo';
+$lang['locfiledit_show_default'] = 'Visualizzare file di riferimento:';
+$lang['locfiledit_save_bak'] = 'Una copia di backup del file sarà creata durante la fase di salvataggio.';
+$lang['locfiledit_saved_bak'] = 'Una copia di backup è stata creata (%s)';
+$lang['locfiledit_save_file'] = 'Salvare il file';
+$lang['locfiledit_choose_file'] = 'Scegliere un file da modificare';
+$lang['locfiledit_edit'] = 'Modificare';
+$lang['locfiledit_restore'] = 'Caricare il file di backup';
+$lang['locfiledit_restore_confirm'] = 'Si prega di confermare?
+Il ripristino non sarà effettivo fino al successivo salvataggio.';
+$lang['locfiledit_bak_loaded1'] = 'Copia di backup caricata.';
+$lang['locfiledit_bak_loaded2'] = 'E\' necessario salvare il file per ripristinarlo.';
+$lang['locfiledit_syntax_error'] = 'Errore di sintassi! Impossible salvare il file.';
+$lang['locfiledit_new_tpl'] = 'Creare un nuovo file';
+$lang['locfiledit_new_filename'] = 'Nome file';
+$lang['locfiledit_model'] = 'Modello';
+$lang['locfiledit_empty_page'] = 'Pagina vuota';
+$lang['locfiledit_parent_directory'] = 'Directory parente';
+$lang['locfiledit_filename_error'] = 'Caratteri vietati nel nome del file.';
+$lang['locfiledit_file_already_exists'] = 'Il file esiste già.';
+$lang['locfiledit_model_error'] = 'E\' necessario scegliere un modello.';
+$lang['locfiledit_empty_filename'] = 'E\' necessario inserire il nome del file.';
+$lang['locfiledit_webmaster_only'] = 'Solo i webmasters sono autorizzati a creare o modificare i file locali.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'ローカルconfig';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'テンプレート';
+$lang['locfiledit_onglet_lang'] = '言語';
+$lang['locfiledit_onglet_plug'] = '個人のプラグイン';
+$lang['locfiledit_cant_save'] = '現在のファイルは書き込みできません。"local/"というディレクトリーは書き込める(chmod)か確認して下さい。';
+$lang['locfiledit_newfile'] = 'ファイルがありませんので、ローカルファイルエディターで作成されます。';
+$lang['locfiledit_save_config'] = 'ファイル書き込み成功';
+$lang['locfiledit_show_default'] = '参照ファイル展示: ';
+$lang['locfiledit_save_bak'] = '保存する時に、バックアップコピーが作成される。';
+$lang['locfiledit_saved_bak'] = 'バックアップファイル作成されました(%s)';
+$lang['locfiledit_save_file'] = 'ファイル保存';
+$lang['locfiledit_choose_file'] = '編集ファイルを選択して下さい。';
+$lang['locfiledit_edit'] = '編集';
+$lang['locfiledit_restore'] = 'バックアップファイルを復元する';
+$lang['locfiledit_restore_confirm'] = '確認して下さい?
+次の保存するまでに現在の復元は有効になりません。';
+$lang['locfiledit_bak_loaded1'] = 'バックアップファイルは起動しました。';
+$lang['locfiledit_bak_loaded2'] = '復元するために、ファイルを保存する必要があります。';
+$lang['locfiledit_syntax_error'] = 'エラー! ファイルは保存できません。';
+$lang['locfiledit_new_tpl'] = '新しいファイルを作成する';
+$lang['locfiledit_new_filename'] = 'ファイル名';
+$lang['locfiledit_model'] = 'モデル';
+$lang['locfiledit_empty_page'] = '空のページ';
+$lang['locfiledit_parent_directory'] = '親ディレクトリー';
+$lang['locfiledit_filename_error'] = '入ってはいけない文字はファイル名にあります。';
+$lang['locfiledit_file_already_exists'] = 'ファイルは既に存在しています。';
+$lang['locfiledit_model_error'] = 'モデルを選択する必要があります。';
+$lang['locfiledit_empty_filename'] = 'ファイル名を記入する必要があります。';
+$lang['locfiledit_webmaster_only'] = 'ローカルファイルはウェブマスターのみ作成するか、変更できます。';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+ლოკალური ფაილების შეცვლა ადმინისტრაციული პანელიდან.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'ლოკალური კონფიგურაცია';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'შაბლონები';
+$lang['locfiledit_onglet_lang'] = 'ენები';
+$lang['locfiledit_onglet_plug'] = 'პერსონალური პლაგინი';
+$lang['locfiledit_cant_save'] = 'ეს ფაილი არ არის ჩაწერის უფლებით. შეამოწმეთ დირექტორია "local/" არის თუ არა შესაბამისი (chmod)–ით.';
+$lang['locfiledit_newfile'] = 'ფაილი არ არსებობს და შეიქმნება LocalFiles რედაქტორის მიერ ';
+$lang['locfiledit_save_config'] = 'ფაილი წარმატებით წაიკითხა.';
+$lang['locfiledit_show_default'] = 'ვნახოთ გასასწორებელი ფაილი: ';
+$lang['locfiledit_save_bak'] = 'სარეზერვო ასლი შეიქმნა და შეინახა.';
+$lang['locfiledit_saved_bak'] = 'სარეზერვო ასლი შეიქმნა (%s) –ით';
+$lang['locfiledit_save_file'] = 'შევინახოთ ფაილი';
+$lang['locfiledit_choose_file'] = 'აირჩიეთ ფაილი რედაქტირებისათვის';
+$lang['locfiledit_edit'] = 'რედაქტირება';
+$lang['locfiledit_restore'] = 'სარეზერვო ფაილის აღდგენა';
+$lang['locfiledit_restore_confirm'] = 'გთხოვთ დაადასტუროთ?
+აღდგენა არ იქნება ეფექტური მომდევნო შენახვამდე.';
+$lang['locfiledit_bak_loaded1'] = 'სარეზერვო ფაილის ჩატვირთვა.';
+$lang['locfiledit_bak_loaded2'] = 'თქვენ უნდა შეინახოთ ფაილი, რომ აღდგინოთ.';
+$lang['locfiledit_syntax_error'] = 'სინტაქსური შეცდომა! ფაილი ვერ შეინახება.';
+$lang['locfiledit_new_tpl'] = 'შევქმნათ ახალი ფაილი';
+$lang['locfiledit_new_filename'] = 'ფაილის სახელი';
+$lang['locfiledit_model'] = 'მოდელი';
+$lang['locfiledit_empty_page'] = 'ცარიელი გვერდი';
+$lang['locfiledit_parent_directory'] = 'მშობლიური დირექტორია';
+$lang['locfiledit_filename_error'] = 'აკრძალული სიმბოლოები ფაილის სახელში.';
+$lang['locfiledit_file_already_exists'] = 'ფაილი უკვე არსებობს.';
+$lang['locfiledit_model_error'] = 'თქვენ უნდა აირჩიოთ მოდელი.';
+$lang['locfiledit_empty_filename'] = 'თქვენ უნდა შეავსოთ ფაილის სახელი.';
+$lang['locfiledit_webmaster_only'] = 'მხოლოდ ვებოსტატებს შეუძლიათ შექმნან ან გადააკეთონ ლოკალური ფაილები.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore'] = 'ಕಡತವನ್ನು ಮರುಬಳಸಿ';
+$lang['locfiledit_restore_confirm'] = 'ದಯವಿಟ್ಟು ಖಾತ್ರಿಪಡಿಸಿ? ಮುಂದಿನ ಉಳಿಕೆಯವರೆಗೂ ಮರುಬಳಕೆ ಪರಿಣಮಕಾರಿಯಾಗಿರುವುದಿಲ್ಲ.';
+$lang['locfiledit_save_bak'] = 'ಬ್ಯಾಕ್ ಅಪ್ ಪ್ರತಿ ಉಳಿಸಿದ ನಂತರ ರಚನೆಯಾಗುತ್ತದೆ.';
+$lang['locfiledit_save_config'] = 'ಕಡತವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬರೆಯಲಾಗಿದೆ.';
+$lang['locfiledit_save_file'] = 'ಕಡತವನ್ನು ಉಳಿಸಿ';
+$lang['locfiledit_saved_bak'] = 'ಬ್ಯಾಕ್ ಅಪ್ ಪ್ರತಿ ರಚನೆಯಾಗಿದೆ(%s)';
+$lang['locfiledit_show_default'] = 'ಉಲ್ಲೇಖ ಕಡತವನ್ನು ಪ್ರದರ್ಶಿಸಿ.';
+$lang['locfiledit_syntax_error'] = 'ಪದ-ವಿನ್ಯಾಸ ದೋಷ! ಕಡತವನ್ನು ಉಳಿಸಲಾಗಲಿಲ್ಲ.';
+$lang['locfiledit_webmaster_only'] = 'ಕೇವಲ ವೆಬ್ ಮಾಸ್ಟರ್ ಗಳು ಮಾತ್ರ ಸ್ಥಳೀಯ ಕಡತಗಳನ್ನು ರಚಿಸಬಲ್ಲರು ಅಥವಾ ಬದಲಾಯಿಸಬಲ್ಲರು.';
+$lang['locfiledit_bak_loaded1'] = 'ಬ್ಯಾಕ್ ಅಪ್ ಕಡತವನ್ನು ತುಂಬಲಾಗಿದೆ.';
+$lang['locfiledit_bak_loaded2'] = 'ನೀವು ಮರುಬಳಸಲು ಕಡತವನ್ನು ಉಳಿಸಲೇಬೇಕು.';
+$lang['locfiledit_cant_save'] = 'ಪ್ರಸ್ತುತ ಕಡತ ಬರೆಯಬಲ್ಲುದಾಗಿಲ್ಲ. "local/" ಡೈರೆಕ್ಟರಿ ಬರೆಯಬಲ್ಲುದೇ ಎಂಬುದನ್ನು ಪರೀಕ್ಷಿಸಿ (chmod).';
+$lang['locfiledit_choose_file'] = 'ಸಂಪಾದನೆಗಾಗಿ ಕಡತವನ್ನು ಆರಿಸಿರಿ.';
+$lang['locfiledit_edit'] = 'ಸಂಪಾದನೆ';
+$lang['locfiledit_empty_filename'] = 'ನೀವು ಕಡತದ ಹೆಸರನ್ನು ನಮೂದಿಸಲೇಬೇಕು.';
+$lang['locfiledit_empty_page'] = 'ಖಾಲಿ ಪುಟ';
+$lang['locfiledit_file_already_exists'] = 'ಕಡತ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.';
+$lang['locfiledit_filename_error'] = 'ನಿಷೇಧಿತ ಅಕ್ಷರಗಳು ಕಡತದ ಹೆಸರಿನಲ್ಲಿ ಇವೆ.';
+$lang['locfiledit_model'] = 'ನಮೂನೆ';
+$lang['locfiledit_model_error'] = 'ನೀವು ನಮೂನೆಯನ್ನು ಆರಿಸಲೇಬೇಕು.';
+$lang['locfiledit_new_filename'] = 'ಕಡತದ ಹೆಸರು';
+$lang['locfiledit_new_tpl'] = 'ಹೊಸ ಕಡತವನ್ನು ರಚಿಸಿ.';
+$lang['locfiledit_newfile'] = 'ಈ ಕೆಳಗೆ ಕೆಲವು ಮಾಹಿತಿಗಳನ್ನು ನಮೂದಿಸದ ಹೊರತು ಕಡತ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದಿಲ್ಲ. ಒಮ್ಮೆ ಮಾಹಿತಿ ನಮೂದಾಗಿ ಉಳಿಸಿದ ನಂತರ ಕಡತ ರಚನೆಯಾಗುತ್ತದೆ.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'ಭಾಷೆಗಳು';
+$lang['locfiledit_onglet_localconf'] = 'ಲೋಕಲ್ ಕಾನ್ಫಿಗ್';
+$lang['locfiledit_onglet_plug'] = 'ವೈಯಕ್ತಿಕ ಪ್ಲಗ್ ಇನ್ ';
+$lang['locfiledit_onglet_tpl'] = 'ನಮೂನೆಗಳು';
+$lang['locfiledit_parent_directory'] = 'ಪೇರೆಂಟ್ ಡೈರೆಕ್ಟರಿ';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Redaguoti vietinius failus iš administracijos puslapio.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore_confirm'] = 'Prašome patvirtinimo.
+Failo atstatymas nebus efektyvus kol nebus išsaugotas.';
+$lang['locfiledit_save_file'] = 'Išsaugoti failą';
+$lang['locfiledit_parent_directory'] = 'Pirminis katalogas';
+$lang['locfiledit_choose_file'] = 'Pasirinkite failą, kurį norite redaguoti';
+$lang['locfiledit_show_default'] = 'Parodyti pradinį failą: ';
+$lang['locfiledit_restore'] = 'Įkrauti atsarginę kopiją';
+$lang['locfiledit_save_bak'] = 'Atsarginė kopija bus sukurta tik išsaugant.';
+$lang['locfiledit_save_config'] = 'Failas sėkmingai įrašytas.';
+$lang['locfiledit_saved_bak'] = 'Atsarginė kopija sukurta (%s)';
+$lang['locfiledit_syntax_error'] = 'Sintaksės klaida! Neįmanoma įrašyti failo.';
+$lang['locfiledit_webmaster_only'] = 'Tik webmasteriai gali kurti ar modifikuoti vietinius failus.';
+$lang['locfiledit_bak_loaded1'] = 'Atsarginė kopija įkrauta.';
+$lang['locfiledit_bak_loaded2'] = 'Jūs turite išsaugoti failą, kad galėtumėte jį atstatyti.';
+$lang['locfiledit_cant_save'] = 'Šio failo neišeis išsaugoti. Pasitikrinkite ar į kataloga "local/" leidžiama rašyti (chmod).';
+$lang['locfiledit_edit'] = 'Redaguoti';
+$lang['locfiledit_empty_filename'] = 'Turite įvesti failo pavadinimą.';
+$lang['locfiledit_empty_page'] = 'Tuščias puslapis';
+$lang['locfiledit_file_already_exists'] = 'Toks failas jau egzistuoja.';
+$lang['locfiledit_filename_error'] = 'Draudžiami simboliai failo pavadinime.';
+$lang['locfiledit_model'] = 'Modelis';
+$lang['locfiledit_model_error'] = 'Turite pasirinkti modelį';
+$lang['locfiledit_new_filename'] = 'Failo pavadinimas';
+$lang['locfiledit_new_tpl'] = 'Sukurti naują failą';
+$lang['locfiledit_newfile'] = 'Failas neegzistuoja, kol neįvesta informacija žemiau. Kai tik ką nors įvesite ir išsaugosite, tuomet failas ir bus sukurtas.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Kalbos';
+$lang['locfiledit_onglet_localconf'] = 'Vietinė konfigūracija';
+$lang['locfiledit_onglet_plug'] = 'Asmeninis priedas';
+$lang['locfiledit_onglet_tpl'] = 'Šablonai';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Rediget lokalos failus no administratora panela.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokala konfiguracija';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Veidnes';
+$lang['locfiledit_onglet_lang'] = 'Valodas';
+$lang['locfiledit_onglet_plug'] = 'Personas spraudni';
+$lang['locfiledit_cant_save'] = ' Esošais fails nav ierakstams. Parbaudit vai mape "local/" ir ar rakstišanas tiesibam (chmod).';
+$lang['locfiledit_newfile'] = 'Fails neeksiste, tas tiks izveidots izmantojot LocalFiles Editor';
+$lang['locfiledit_save_config'] = ' Fails ierakstits sekmigi.';
+$lang['locfiledit_show_default'] = ' Paradit izvelnes failu: ';
+$lang['locfiledit_save_bak'] = ' Rezerves kopija tiks izveidota veicot saglabašanu.';
+$lang['locfiledit_saved_bak'] = 'Rezerves kopija izveidota par (%s)';
+$lang['locfiledit_save_file'] = ' Saglabat failu';
+$lang['locfiledit_choose_file'] = ' Izveleties failu ko rediget';
+$lang['locfiledit_edit'] = 'Rediget';
+$lang['locfiledit_restore'] = 'Atjaunot rezerves kopiju';
+$lang['locfiledit_restore_confirm'] = 'Ludzu apstprinat?
+Atjaunošana nebus iespejama lidz nakamai saglabašanai.';
+$lang['locfiledit_bak_loaded1'] = 'Rezerves kopija ieladeta.';
+$lang['locfiledit_bak_loaded2'] = 'Jums jasaglaba fails lai to atjaunotu.';
+$lang['locfiledit_syntax_error'] = 'Sintakses kluda! Failu nav iespejams saglabat.';
+$lang['locfiledit_new_tpl'] = 'Izveidot jaunu failu';
+$lang['locfiledit_new_filename'] = 'Faila nosaukums';
+$lang['locfiledit_model'] = 'Modelis';
+$lang['locfiledit_empty_page'] = 'Tukša lapa';
+$lang['locfiledit_parent_directory'] = 'Pamatmape';
+$lang['locfiledit_filename_error'] = 'Aizliegti simboli nosaukuma.';
+$lang['locfiledit_file_already_exists'] = 'Fails jau eksiste.';
+$lang['locfiledit_model_error'] = 'Jums jaizvelas modelis.';
+$lang['locfiledit_empty_filename'] = 'Jums jaieraksta faila nosaukums.';
+$lang['locfiledit_webmaster_only'] = 'Tikai webmasters var izveidot un modificet lokalos failus.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Rediger lokale filer fra administrasjons panelet.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,51 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+$lang['locfiledit_onglet_localconf'] = 'Lokal konfigurasjon';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Maler (templates)';
+$lang['locfiledit_onglet_lang'] = 'Språk';
+$lang['locfiledit_onglet_plug'] = 'Personlig tilleggsprogram';
+$lang['locfiledit_cant_save'] = 'Gjeldende fil kan ikke skrives til. sjekk om mappen "local/" har skriverettigheter (chmod)(775).';
+$lang['locfiledit_newfile'] = 'Filen eksisterer ikke og vil bli laget av LocalFiles Editor';
+$lang['locfiledit_save_config'] = 'Fil er skrevet.';
+$lang['locfiledit_show_default'] = 'Vis referanse fil: ';
+$lang['locfiledit_save_bak'] = 'Sikkerhets kopi vil bli laget ved lagring.';
+$lang['locfiledit_saved_bak'] = 'Sikkerhetskopi er laget (%s)';
+$lang['locfiledit_save_file'] = 'Lagre fil';
+$lang['locfiledit_choose_file'] = 'Velg fil du vil redigering';
+$lang['locfiledit_edit'] = 'Rediger';
+$lang['locfiledit_restore'] = 'Gjennopprett sikkerhets kopi';
+$lang['locfiledit_restore_confirm'] = 'Vennligst bekreft? Gjennoppretting vil ikke gjøres før neste lagring.';
+$lang['locfiledit_bak_loaded1'] = 'Sikkerhetskopi lastet.';
+$lang['locfiledit_bak_loaded2'] = 'Du må lagre filen for å gjennopprette den.';
+$lang['locfiledit_syntax_error'] = 'Syntax feil! Filen kan ikke bli lagret.';
+$lang['locfiledit_new_tpl'] = 'Lag ny fil';
+$lang['locfiledit_new_filename'] = 'Fil navn';
+$lang['locfiledit_model'] = 'Modusl';
+$lang['locfiledit_empty_page'] = 'Tøm side';
+$lang['locfiledit_parent_directory'] = 'Underliggende mappe';
+$lang['locfiledit_filename_error'] = 'Forbudte tegn i filnavnet.';
+$lang['locfiledit_file_already_exists'] = 'Filen eksisterer allerede.';
+$lang['locfiledit_model_error'] = 'Du må velge en modell.';
+$lang['locfiledit_empty_filename'] = 'Du må fylle inn fil navnet.';
+$lang['locfiledit_webmaster_only'] = 'Kun webmaster kan lage eller endre lokale filer.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Wijzig lokale bestanden vanaf het administratie-scherm.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokale configuratie';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_onglet_lang'] = 'Talen';
+$lang['locfiledit_onglet_plug'] = 'Persoonlijke Plugin';
+$lang['locfiledit_cant_save'] = 'Er kan niet naar het gebruikte bestand geschreven worden. Controleer of directory "local/" beschrijfbaar is (chmod).';
+$lang['locfiledit_newfile'] = 'Het bestand bestaat niet totdat er hieronder informatie wordt ingevoerd. Zodra informatie wordt ingevoerd en opgeslagen, wordt het bestand aangemaakt.';
+$lang['locfiledit_save_config'] = 'Bestand succesvol beschreven.';
+$lang['locfiledit_show_default'] = 'Geef het referentie-bestand weer: ';
+$lang['locfiledit_save_bak'] = 'Bij het opslaan wordt een backup-bestand aangemaakt.';
+$lang['locfiledit_saved_bak'] = 'Backup-bestand aangemaakt (%s)';
+$lang['locfiledit_save_file'] = 'Opslaan bestand';
+$lang['locfiledit_choose_file'] = 'Kies het te wijzigen bestand';
+$lang['locfiledit_edit'] = 'Wijzig';
+$lang['locfiledit_restore'] = 'Restore het backup-bestand';
+$lang['locfiledit_restore_confirm'] = 'Aub bevestigen?
+Restore wordt pas effectief bij de volgende keer opslaan.';
+$lang['locfiledit_bak_loaded1'] = 'Backup-bestand geladen.';
+$lang['locfiledit_bak_loaded2'] = 'U moet het bestand opslaan om te kunnen restoren.';
+$lang['locfiledit_syntax_error'] = 'Syntax-fout! Bestand kan niet opgeslagen worden.';
+$lang['locfiledit_new_tpl'] = 'Maak nieuw bestand aan';
+$lang['locfiledit_new_filename'] = 'Bestandsnaam';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Lege pagina';
+$lang['locfiledit_parent_directory'] = 'Bovenliggende directory';
+$lang['locfiledit_filename_error'] = 'Niet toegestane tekens in bestandsnaam.';
+$lang['locfiledit_file_already_exists'] = 'Bestand bestaat reeds.';
+$lang['locfiledit_model_error'] = 'U moet een model kiezen.';
+$lang['locfiledit_empty_filename'] = 'U moet een bestandsnaam opgeven.';
+$lang['locfiledit_webmaster_only'] = 'Alleen webbeheerders kunnen lokale bestanden aanmaken of wijzigen.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Endre lokale filer frå administrasjonspanelet.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore'] = 'Gjenopprett frå sikringskopi';
+$lang['locfiledit_restore_confirm'] = 'Bekreft?
+Gjennoppretting vil ikkje trå i kraft før neste lagring.';
+$lang['locfiledit_save_bak'] = 'Sikringskopi vil bli oppretta ved lagring.';
+$lang['locfiledit_save_config'] = 'Fila vart lagra.';
+$lang['locfiledit_save_file'] = 'Lagre fil';
+$lang['locfiledit_saved_bak'] = 'Sikringskopi oppretta (%s)';
+$lang['locfiledit_show_default'] = 'Vis referansefil';
+$lang['locfiledit_syntax_error'] = 'Syntaksfeil! Fila kan ikkje lagrast.';
+$lang['locfiledit_webmaster_only'] = 'Bare webmaster kan opprette eller lagre lokale filer.';
+$lang['locfiledit_bak_loaded1'] = 'Reservekopifil er lasta opp';
+$lang['locfiledit_bak_loaded2'] = 'Du må fyrst lagre fila før du kan gjenopprette den.';
+$lang['locfiledit_cant_save'] = 'Gjeldande fil er ikkje skrivbar. Sjekk at katalogen "local/" er skrivbar (chmod)';
+$lang['locfiledit_choose_file'] = 'Velg fil som skal endrast';
+$lang['locfiledit_edit'] = 'Endre';
+$lang['locfiledit_empty_filename'] = 'Du må skrive inn filnamnet';
+$lang['locfiledit_empty_page'] = 'Tom side';
+$lang['locfiledit_file_already_exists'] = 'Fila finst allerie.';
+$lang['locfiledit_filename_error'] = 'Forbode tegn i filnamn.';
+$lang['locfiledit_model'] = 'Modell/mal';
+$lang['locfiledit_model_error'] = 'Du må velge ein model/mal';
+$lang['locfiledit_new_filename'] = 'Filnamn';
+$lang['locfiledit_new_tpl'] = 'Lag ny fil';
+$lang['locfiledit_newfile'] = 'Fila eksisterer ikkje før det er skrive inn noko innhald under. Straks informasjon er skrive inn og lagra, vil fila bli oppretta.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Språk';
+$lang['locfiledit_onglet_localconf'] = 'Lokal konfigurasjon';
+$lang['locfiledit_onglet_plug'] = 'Personleg tilleggsprogram';
+$lang['locfiledit_onglet_tpl'] = 'Malar';
+$lang['locfiledit_parent_directory'] = 'Foreldrekatalog';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Edycja plików lokalnych z panelu administratora
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Konfiguracja lokalna';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Szablony';
+$lang['locfiledit_onglet_lang'] = 'Języki';
+$lang['locfiledit_onglet_plug'] = 'Wtyczki własne';
+$lang['locfiledit_cant_save'] = 'W pliku nie można zapisywać zmian. Sprawdź czy katalog "local/" jest zapisywalny (chmod).';
+$lang['locfiledit_newfile'] = 'Plik nie powstanie dopóki niżej nie zostanie coś wpisane.Po uzupełnieniu wymaganych informacji plik zostanie utworzony.';
+$lang['locfiledit_save_config'] = 'Plik został zapisany pomyślnie.';
+$lang['locfiledit_show_default'] = 'Pokaż plik referencyjny: ';
+$lang['locfiledit_save_bak'] = 'Kopia zapasowa zostanie utworzona podczas zapisywania zmian.';
+$lang['locfiledit_saved_bak'] = 'Plik kopii zapasowej utworzony (%s)';
+$lang['locfiledit_save_file'] = 'Zapisz plik';
+$lang['locfiledit_choose_file'] = 'Wybierz plik do edycji';
+$lang['locfiledit_edit'] = 'Edytuj';
+$lang['locfiledit_restore'] = 'Przywróć plik z kopii zapasowej';
+$lang['locfiledit_restore_confirm'] = 'Potwierdź proszę?
+Przywrócenie nie przyniesie efektu do następnego zapisu.';
+$lang['locfiledit_bak_loaded1'] = 'Plik kopii zapasowej wczytany.';
+$lang['locfiledit_bak_loaded2'] = 'Musisz zapisać plik aby go przywrócić.';
+$lang['locfiledit_syntax_error'] = 'Błąd skłądni! Plik nie może zostać zapisany.';
+$lang['locfiledit_new_tpl'] = 'Stwórz nowy plik';
+$lang['locfiledit_new_filename'] = 'Nazwa pliku';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Pusta strona';
+$lang['locfiledit_parent_directory'] = 'Katalog nadrzędny';
+$lang['locfiledit_filename_error'] = 'Nazwa pliku zawiera niedozwolone znaki.';
+$lang['locfiledit_file_already_exists'] = 'Plik już istnieje.';
+$lang['locfiledit_model_error'] = 'Musisz wybrać model.';
+$lang['locfiledit_empty_filename'] = 'Musisz wpisać nazwę pliku.';
+$lang['locfiledit_webmaster_only'] = 'Only webmasters can create or modify local files.';
+$lang['locfiledit_webmaster_only'] = 'Tylko administrator może tworzyć i modyfikować pliki lokalne.'; 
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Edite arquivos locais do painel de administração.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Faça cópia do arquivo baixado.';
+$lang['locfiledit_bak_loaded2'] = 'Você deve salvar o arquivo para restaurá-lo.';
+$lang['locfiledit_cant_save'] = 'O arquivo atual não tem permissão de escrita. Verifique se o diretório "local/" tem permissão de escrita (chmod).';
+$lang['locfiledit_choose_file'] = 'Escolha o arquivo a ser editado';
+$lang['locfiledit_edit'] = 'Edite';
+$lang['locfiledit_empty_filename'] = 'Você deve entrar com o nome do arquivo.';
+$lang['locfiledit_empty_page'] = 'Página vazia';
+$lang['locfiledit_file_already_exists'] = 'O arquivo já existe.';
+$lang['locfiledit_filename_error'] = 'Caracteres não permitidos no nome do arquivo.';
+$lang['locfiledit_model_error'] = 'Você deve escolher um modelo.';
+$lang['locfiledit_model'] = 'Modelo';
+$lang['locfiledit_new_filename'] = 'Nome do arquivo';
+$lang['locfiledit_new_tpl'] = 'Cria novo arquivo';
+$lang['locfiledit_newfile'] = 'O arquivo não existe e será criado pelo Editor Local de Arquivos.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Idiomas';
+$lang['locfiledit_onglet_localconf'] = 'Configuração local';
+$lang['locfiledit_onglet_plug'] = 'Plugin Pessoal';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_parent_directory'] = 'Pasta pai';
+$lang['locfiledit_restore_confirm'] = 'Confirme por favor? A restauração não será efetiva até o próximo salvar.';
+$lang['locfiledit_restore'] = 'Restaura a cópia de segurança';
+$lang['locfiledit_save_bak'] = 'Cópia de segurança será criada ao salvar.';
+$lang['locfiledit_save_config'] = 'Arquivo gravado com sucesso.';
+$lang['locfiledit_save_file'] = 'Salvar arquivo';
+$lang['locfiledit_saved_bak'] = 'Cópia de segurança criada (%s)';
+$lang['locfiledit_show_default'] = 'Mostre o arquivo de referência:';
+$lang['locfiledit_syntax_error'] = 'Erro de sintaxe! O arquivo não pode ser salvo.';
+$lang['locfiledit_webmaster_only'] = 'Somente webmasters podem criar ou modificar arquivos locais.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Editar ficheiros locais a partir do Painel Administrativo de Piwigo.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Configuração Local';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Modelos';
+$lang['locfiledit_onglet_lang'] = 'Idiomas';
+$lang['locfiledit_onglet_plug'] = 'Extensão Pessoal';
+$lang['locfiledit_cant_save'] = 'O arquivo actual não tem permissões de escrita. Confirme que a pasta "local/" tem permissões de escrita (chmod).';
+$lang['locfiledit_newfile'] = 'O arquivo não existe e irá ser criado pelo Editor LocalFiles';
+$lang['locfiledit_save_config'] = 'Arquivo escrito com sucesso.';
+$lang['locfiledit_show_default'] = 'Mostrar arquivo de referência: ';
+$lang['locfiledit_save_bak'] = 'Cópia de segurança será guardada quando clicar em Salvar arquivo.';
+$lang['locfiledit_saved_bak'] = 'Cópia de segurança criada (%s)';
+$lang['locfiledit_save_file'] = 'Salvar arquivo';
+$lang['locfiledit_choose_file'] = 'Escolha o arquivo a ser editado';
+$lang['locfiledit_edit'] = 'Editar';
+$lang['locfiledit_restore'] = 'Restaure a cópia de segurança';
+$lang['locfiledit_restore_confirm'] = 'Por favor confirme?
+O Restauro não será efectivo até o Salvar.';
+$lang['locfiledit_bak_loaded1'] = 'Arquivo de cópia de segurança carregado.';
+$lang['locfiledit_bak_loaded2'] = 'Deverá salvar o arquivo para o restaurar.';
+$lang['locfiledit_syntax_error'] = 'Erro de sintaxe! Impossível salvar arquivo.';
+$lang['locfiledit_new_tpl'] = 'Criar novo arquivo';
+$lang['locfiledit_new_filename'] = 'Nome do arquivo';
+$lang['locfiledit_model'] = 'Modelo';
+$lang['locfiledit_empty_page'] = 'Página Vazia';
+$lang['locfiledit_parent_directory'] = 'Diretório Mãe';
+$lang['locfiledit_filename_error'] = 'Caracteres proibidos no nome do arquivo.';
+$lang['locfiledit_file_already_exists'] = 'O arquivo já existe.';
+$lang['locfiledit_model_error'] = 'Tem que escolher um Modelo.';
+$lang['locfiledit_empty_filename'] = 'Tem que preencher o Nome do arquivo.';
+$lang['locfiledit_webmaster_only'] = 'Apenas webmasters podem criar ou modificar arquivos locais.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Modifică fișierele locale din panoul de administrare.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_cant_save'] = 'Fișerul curent nu poate fi scris. Cerifică dacă dosarul "local/" poate fi scris (chmod).';
+$lang['locfiledit_parent_directory'] = 'Dosarul părinte';
+$lang['locfiledit_restore_confirm'] = 'Confirmă.
+Restaurarea nu va intra în efect până la urmatoarea salvare.';
+$lang['locfiledit_bak_loaded1'] = 'Copia de siguranță a fost încărcată.';
+$lang['locfiledit_restore'] = 'Restaurează copia de siguranță';
+$lang['locfiledit_save_bak'] = 'Copia de siguranță va fi creată odată cu salvarea.';
+$lang['locfiledit_saved_bak'] = 'Copia de siguranță a fost creată (%s)';
+$lang['locfiledit_webmaster_only'] = 'Numai webmasterii pot crea sau modifica fișiere locale.';
+$lang['locfiledit_new_tpl'] = 'Crează un fișier nou';
+$lang['locfiledit_bak_loaded2'] = 'Trebuie să salvezi un fișier pentru a-l restaura.';
+$lang['locfiledit_newfile'] = 'Acest fișier nu va exista pănâ cand nu vei introduce informațiile de mai jos. Odată ce informația va fi introdusă și salvată, fișierul va fi creat.';
+$lang['locfiledit_onglet_plug'] = 'Plugin personal';
+$lang['locfiledit_choose_file'] = 'Alege fișierul de modificat';
+$lang['locfiledit_edit'] = 'Modifică';
+$lang['locfiledit_empty_filename'] = 'Trebuie să introduci numele fișierului.';
+$lang['locfiledit_empty_page'] = 'Pagină goală';
+$lang['locfiledit_file_already_exists'] = 'Fișierul există deja';
+$lang['locfiledit_filename_error'] = 'Caractere interzise în numele fișierului.';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_model_error'] = 'Trebuie să alegi un model';
+$lang['locfiledit_new_filename'] = 'Numele fișierului';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Limbi';
+$lang['locfiledit_onglet_localconf'] = 'Configurație locală';
+$lang['locfiledit_onglet_tpl'] = 'Șabloane';
+$lang['locfiledit_save_config'] = 'Fișierul a fost scris cu succes.';
+$lang['locfiledit_save_file'] = 'Salvează fișier';
+$lang['locfiledit_show_default'] = 'Arată fișierul de referințăȘ';
+$lang['locfiledit_syntax_error'] = 'Eroare de sintaxă! Fișierul nu poate fi salvat.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Позволяет редактировать локальные файлы из панели администрирования.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Локальные настройки';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Шаблоны';
+$lang['locfiledit_onglet_lang'] = 'Языки';
+$lang['locfiledit_onglet_plug'] = 'Личный плагин';
+$lang['locfiledit_cant_save'] = 'Текущий файл не может быть записан. Проверьте, имеются ли права записи в директории  "local/" (chmod).';
+$lang['locfiledit_newfile'] = 'Файл не существует и будет создан LocalFilesEditor';
+$lang['locfiledit_save_config'] = 'Файл записан успешно';
+$lang['locfiledit_show_default'] = 'Показать исходный файл: ';
+$lang['locfiledit_save_bak'] = 'Резервная копия файла будет создана при сохранении.';
+$lang['locfiledit_saved_bak'] = 'Резервный файл создан (%s)';
+$lang['locfiledit_save_file'] = 'Сохранить файл';
+$lang['locfiledit_choose_file'] = 'Выберите файл для редактирования';
+$lang['locfiledit_edit'] = 'Редактировать';
+$lang['locfiledit_restore'] = 'Восстановить резервный файл';
+$lang['locfiledit_restore_confirm'] = 'Пожалуйста, подтвердите действие. Восстановленный файл не будет активен до тех пор, пока не будет сохранен.';
+$lang['locfiledit_bak_loaded1'] = 'Резервный файл загружен.';
+$lang['locfiledit_bak_loaded2'] = 'Вы должны сохранить файл, чтобы восстановить его.';
+$lang['locfiledit_syntax_error'] = 'Синтаксическая ошибка! Невозможно сохранить файл.';
+$lang['locfiledit_new_tpl'] = 'Создать новый файл';
+$lang['locfiledit_new_filename'] = 'Имя файла';
+$lang['locfiledit_model'] = 'Модель';
+$lang['locfiledit_empty_page'] = 'Очистить страницу';
+$lang['locfiledit_parent_directory'] = 'Родительская директория';
+$lang['locfiledit_filename_error'] = 'Запрещенные символы в имени файла.';
+$lang['locfiledit_file_already_exists'] = 'Файл уже существует.';
+$lang['locfiledit_model_error'] = 'Выберите модель.';
+$lang['locfiledit_empty_filename'] = 'Заполните поле "Имя файла".';
+$lang['locfiledit_webmaster_only'] = 'Только вэбмастеры могут создавать или редактировать локальные файлы.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Uredite lokalne fajlove iz administratorskog panela.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php	(revision 25596)
@@ -0,0 +1,52 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Rezervni fajl učitan.';
+$lang['locfiledit_bak_loaded2'] = 'Morate sačuvati fajl da bi ste ga vratili.';
+$lang['locfiledit_cant_save'] = 'Trenutni fajl nije upisiv. Proverite da li je moguće pisanje u direktorijumu "local/" (chmod).';
+$lang['locfiledit_choose_file'] = 'Odaberite fajl koji će biti uređivan';
+$lang['locfiledit_edit'] = 'Uredi';
+$lang['locfiledit_empty_filename'] = 'Morate popuniti naziv fajla.';
+$lang['locfiledit_empty_page'] = 'Prazna strana';
+$lang['locfiledit_filename_error'] = 'Zabranjeni karakter u nazivu fajla.';
+$lang['locfiledit_file_already_exists'] = 'Fajl već postoji.';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_model_error'] = 'Morate odabrati model.';
+$lang['locfiledit_newfile'] = 'Fajl ne postoji i biće kreiran od strane LocalFiles editora';
+$lang['locfiledit_new_filename'] = 'Naziv fajla';
+$lang['locfiledit_new_tpl'] = 'Kreiraj novi fajl';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Jezici';
+$lang['locfiledit_onglet_localconf'] = 'Lokalno podešavanje';
+$lang['locfiledit_onglet_plug'] = 'Lični dodatak';
+$lang['locfiledit_onglet_tpl'] = 'Šabloni';
+$lang['locfiledit_parent_directory'] = 'Nadređeni direktorijum';
+$lang['locfiledit_restore'] = 'Vrati rezervni fajl';
+$lang['locfiledit_restore_confirm'] = 'Molim potvrdite? Vraćanje neće imati efekta do sledećeg snimanja.';
+$lang['locfiledit_saved_bak'] = 'Rezervan kopija fajla kreirana (%s)';
+$lang['locfiledit_save_bak'] = 'Rezervna kopija biće kreirana prilikom snimanja.';
+$lang['locfiledit_save_config'] = 'Fajl upisan uspešno.';
+$lang['locfiledit_save_file'] = 'Snimi fajl';
+$lang['locfiledit_show_default'] = 'Prikaži referentni fajl:';
+$lang['locfiledit_syntax_error'] = 'Sintaksna greška! Fajl ne može biti sačuvan.';
+$lang['locfiledit_webmaster_only'] = 'Samo webmasteri mogu kreirati ili modifikovati lokalne fajlove.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Editácia lokálnych súborov z panelu administrátora.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokálna konfigurácia';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Šablóny';
+$lang['locfiledit_onglet_lang'] = 'Jazyky';
+$lang['locfiledit_onglet_plug'] = 'Osobný Plugin';
+$lang['locfiledit_cant_save'] = 'Súčasný súbor nie je zapisovateľný. Skontrolujte, či adresár "local/" je zapisovateľný (chmod).';
+$lang['locfiledit_newfile'] = 'Súbor neexistuje a bude vytvorený pomocou LocalFiles Editor';
+$lang['locfiledit_save_config'] = 'Súbor bol úspešne zapísaný.';
+$lang['locfiledit_show_default'] = 'Zobraziť referenčný súbor: ';
+$lang['locfiledit_save_bak'] = 'Záložná kópia bude vytvorená pri uložení.';
+$lang['locfiledit_saved_bak'] = 'Vytvorený záložný súbor (%s)';
+$lang['locfiledit_save_file'] = 'Uložiť súbor';
+$lang['locfiledit_choose_file'] = 'Vybrať súbor na editovanie';
+$lang['locfiledit_edit'] = 'Editovať';
+$lang['locfiledit_restore'] = 'Obnoviť záložný súbor';
+$lang['locfiledit_restore_confirm'] = 'Prosím potvrdíte?
+Obnova nebude účinná pokiaľ neuložíte.';
+$lang['locfiledit_bak_loaded1'] = 'Záložný súbor nahraný.';
+$lang['locfiledit_bak_loaded2'] = 'Musíte uložiť súbor na jeho obnovenie.';
+$lang['locfiledit_syntax_error'] = 'Syntaktický chyba! Súbor nemôže byť uložený.';
+$lang['locfiledit_new_tpl'] = 'Vytvorenie nového súboru';
+$lang['locfiledit_new_filename'] = 'Meno súboru';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Prázdna strana';
+$lang['locfiledit_parent_directory'] = 'Domovský adresár';
+$lang['locfiledit_filename_error'] = 'Nepovolené znaky v názve súboru.';
+$lang['locfiledit_file_already_exists'] = 'Súbor už existuje.';
+$lang['locfiledit_model_error'] = 'Musíte vybrať model.';
+$lang['locfiledit_empty_filename'] = 'Musíte zadať meno súboru.';
+$lang['locfiledit_webmaster_only'] = 'Len webmasteri môžu vytvoriť alebo modifikovať lokálne súbory.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Urejanje lokalnih datotek iz administratorske plošče
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore'] = 'Obnovi varnostno datoteko';
+$lang['locfiledit_restore_confirm'] = 'Prosimo potrdite?
+Obnovitev ne bo v veljavi do naslednje shranitve.';
+$lang['locfiledit_save_bak'] = 'Varnostna kopija bo ustvarjena ob shranitvi.';
+$lang['locfiledit_save_config'] = 'Datoteka je bila uspešno zapisana.';
+$lang['locfiledit_save_file'] = 'Shrani datoteko';
+$lang['locfiledit_saved_bak'] = 'Varnostna kopija ustvarjena (%s)';
+$lang['locfiledit_show_default'] = 'Prikaži referenčno datoteko:';
+$lang['locfiledit_syntax_error'] = 'Napaka v sintaksi. Datoteke se ne da shraniti.';
+$lang['locfiledit_webmaster_only'] = 'Lokalne datoteke lahko ustvari ali spreminja le skrbnik.';
+$lang['locfiledit_bak_loaded1'] = 'Varnostna datoteka naložena';
+$lang['locfiledit_bak_loaded2'] = 'Datoteko morate shraniti pred obnovitvijo';
+$lang['locfiledit_cant_save'] = 'Trenutna datoteka ni zapisljiva. Preverite, če je direktorij "local/" zapisljiv (chmod)';
+$lang['locfiledit_choose_file'] = 'Izberite datoteko za urejanje';
+$lang['locfiledit_edit'] = 'Uredi';
+$lang['locfiledit_empty_filename'] = 'Vpisati morate ime datoteke';
+$lang['locfiledit_empty_page'] = 'Prazna stran';
+$lang['locfiledit_file_already_exists'] = 'Datoteka že obstaja';
+$lang['locfiledit_filename_error'] = 'Prepovedani znaki v imenu datoteke';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_model_error'] = 'Izbrati morate model';
+$lang['locfiledit_new_filename'] = 'Ime datoteke';
+$lang['locfiledit_new_tpl'] = 'Ustvari novo datoteko';
+$lang['locfiledit_newfile'] = 'Datoteka ne obstaja dokler spodaj ne vnesete nekaj informacij. Ko so informacije vnesene in shranjene bo datoteka kreirana.';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = 'Jeziki';
+$lang['locfiledit_onglet_localconf'] = 'Local config';
+$lang['locfiledit_onglet_plug'] = 'Osebni vtičnik';
+$lang['locfiledit_onglet_tpl'] = 'Predloge';
+$lang['locfiledit_parent_directory'] = 'Nadrejeni direktorij';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Уреди локалне датотеке преко администрационе странице.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf']    = 'Лична подешавања';
+$lang['locfiledit_onglet_css']          = 'css датотека';
+$lang['locfiledit_onglet_tpl']          = 'Шаблон';
+$lang['locfiledit_onglet_lang']         = 'Језици';
+$lang['locfiledit_onglet_plug']         = 'Лични додатак';
+$lang['locfiledit_cant_save']           = 'Тренутна датотека није записана. Проверите да ли је директоријум "local/" има дозволу за упис  (chmod).';
+$lang['locfiledit_newfile']             = 'Датотека не постоји и биће направљена програмом LocalFiles Editor';
+$lang['locfiledit_save_config']         = 'Датотека је успешно записана.';
+$lang['locfiledit_show_default']        = 'Прикажи подразумевану датотеку: ';
+$lang['locfiledit_save_bak']            = 'Резервна копија ће бити направљена приликом снимања.';
+$lang['locfiledit_saved_bak']           = 'Резервна копија је направљена (%s)';
+$lang['locfiledit_save_file']           = 'Запамти датотеку';
+$lang['locfiledit_choose_file']         = 'Изабери датотеку за уређивање';
+$lang['locfiledit_edit']                = 'Измени';
+$lang['locfiledit_restore']             = 'Обнови резервну копију датотеке';
+$lang['locfiledit_restore_confirm']     = 'Молимо Вас да потврдите? Обнављање ће бити важеће после снимања.';
+$lang['locfiledit_bak_loaded1']         = 'Резервна копија је учитана.';
+$lang['locfiledit_bak_loaded2']         = 'Морате да запамтите датотеку пре обнављања.';
+$lang['locfiledit_syntax_error']        = 'Синтаксна грешка! Датотека не може бити снимљена.';
+$lang['locfiledit_new_tpl']             = 'Направи нову датотеку';
+$lang['locfiledit_new_filename']        = 'Име датотеке';
+$lang['locfiledit_model']               = 'Модел';
+$lang['locfiledit_empty_page']          = 'Празна страница';
+$lang['locfiledit_parent_directory']    = 'Надређени директоријум';
+$lang['locfiledit_filename_error']      = 'Забрањени знаци у називу датотеке.';
+$lang['locfiledit_file_already_exists'] = 'Датотека већ постоји.';
+$lang['locfiledit_model_error']         = 'Морате изабрати модел.';
+$lang['locfiledit_empty_filename']      = 'Морате уписати име датотеке.';
+$lang['locfiledit_webmaster_only']      = 'Само уредник интернет страница може да направи или уреди локалне датотеке.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ändra lokala filer från administrationspanelen.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Lokal konfiguration';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Teman';
+$lang['locfiledit_onglet_lang'] = 'Språk';
+$lang['locfiledit_onglet_plug'] = 'Personligt Plugin';
+$lang['locfiledit_cant_save'] = 'Det går inte att skriva till aktuell fil. Kontrollera att mappen "local/" är skrivbar (chmod).';
+$lang['locfiledit_newfile'] = 'Filen existerar inte så den kommer att skapas av LocalFiles Editor';
+$lang['locfiledit_save_config'] = 'Filen skrevs med framgång.';
+$lang['locfiledit_show_default'] = 'Visa referens fil: ';
+$lang['locfiledit_save_bak'] = 'En säkerhetskopia kommer skapas när du sparar.';
+$lang['locfiledit_saved_bak'] = 'Säkerhetskopia skapad (%s)';
+$lang['locfiledit_save_file'] = 'Spara fil';
+$lang['locfiledit_choose_file'] = 'Välj fil add ändra';
+$lang['locfiledit_edit'] = 'Ändra';
+$lang['locfiledit_restore'] = 'Återställ säkerhetskopia';
+$lang['locfiledit_restore_confirm'] = 'Vänligen bekräfta? Återställning kommer inte fungera till nästa gång.';
+$lang['locfiledit_bak_loaded1'] = 'Säkerhetskopia laddad.';
+$lang['locfiledit_bak_loaded2'] = 'Du måste spara filen för att återställa den.';
+$lang['locfiledit_syntax_error'] = 'Syntax fel! Filen kan inte sparas.';
+$lang['locfiledit_new_tpl'] = 'Skapa ny fil';
+$lang['locfiledit_new_filename'] = 'Fil namn';
+$lang['locfiledit_model'] = 'Modell';
+$lang['locfiledit_empty_page'] = 'Töm sida';
+$lang['locfiledit_parent_directory'] = 'Nuvarande katalog';
+$lang['locfiledit_filename_error'] = 'Förbjudna symboler i filnamnet.';
+$lang['locfiledit_file_already_exists'] = 'Filen existerar redan.';
+$lang['locfiledit_model_error'] = 'Du måste välja en modell.';
+$lang['locfiledit_empty_filename'] = 'Du måste välja ett filnamn.';
+$lang['locfiledit_webmaster_only'] = 'Endast webmasters kan skapa eller ändra lokala filer.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_file_already_exists'] = 'கோப்பு ஏற்கனவே உள்ளது.';
+$lang['locfiledit_edit'] = 'திருத்துக';
+$lang['locfiledit_empty_filename'] = 'நீங்கள் கோப்பின் பெயரை உள்ளிட வேண்டும்.';
+$lang['locfiledit_empty_page'] = 'வெற்று பக்கம்';
+$lang['locfiledit_choose_file'] = 'திருத்த வேண்டும் என்ற கோப்பினை தேர்வுசெய்க
+';
+$lang['locfiledit_bak_loaded1'] = 'மறுபிரதி கோப்பு ஏற்றப்படும்.';
+$lang['locfiledit_bak_loaded2'] = 'அதை மீட்க கோப்பு சேமிக்க வேண்டும்.';
+$lang['locfiledit_cant_save'] = 'தற்போதைய கோப்பு எழுதக்கூடிய அல்ல. கோப்பகம் "local/" எழுதக்கூடிய (chmod) என்று சரிபார்க்கவும்.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php	(revision 25596)
@@ -0,0 +1,54 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'ไฟล์การตั้งค่าพื้นฐาน';
+$lang['locfiledit_onglet_css'] = 'ไฟล์ CSS';
+$lang['locfiledit_onglet_tpl'] = 'ไฟล์ แม่แบบ';
+$lang['locfiledit_onglet_lang'] = 'ไฟล์ ภาษา';
+$lang['locfiledit_onglet_plug'] = 'ไฟล์ ปลั๊กอิน';
+$lang['locfiledit_cant_save'] = 'ไฟล์ปัจจุบันไม่สามารถเขียนได้. โปรดตรวจสอบสิทธิ์การเข้าถึงไดเรกทอรี่ "local/" ว่ามันสามารถเขียนได้ (โดยการปรับค่า chmod เป็นค่า 777).';
+$lang['locfiledit_newfile'] = 'ไฟล์ไม่มีอยู่ และมันจะถูกสร้างโดย LocalFiles Editor';
+$lang['locfiledit_save_config'] = 'การเขียนไฟล์เสร็จสมบูรณ์.';
+$lang['locfiledit_show_default'] = 'แสดงไฟล์อ้างอิง: ';
+$lang['locfiledit_save_bak'] = 'คัดลอก สำรองไฟล์ที่จะสร้างเมื่อบันทึก.';
+$lang['locfiledit_saved_bak'] = 'สำรองไฟล์และสร้าง (%s)';
+$lang['locfiledit_save_file'] = 'บันทึกไฟล์';
+$lang['locfiledit_choose_file'] = 'เลือกไฟล์เพื่อทำการแก้ไข';
+$lang['locfiledit_edit'] = 'แก้ไข';
+$lang['locfiledit_restore'] = 'คืนค่าการสำรองไฟล์';
+$lang['locfiledit_restore_confirm'] = 'กรุณายืนยัน?
+การคืนค่าจะยังไม่มีผล จนกว่าจะบันทึกเสร็จเรียบร้อย.';
+$lang['locfiledit_bak_loaded1'] = 'ไฟล์สำรองได้ย้ายแล้ว.';
+$lang['locfiledit_bak_loaded2'] = 'คุณจะต้องบันทึกไฟล์เพื่อทำการคืนค่า.';
+$lang['locfiledit_syntax_error'] = 'ประโยคผิดพลาด! ไฟล์ไม่สามารถบันทึกได้.';
+$lang['locfiledit_new_tpl'] = 'สร้างไฟล์ใหม่';
+$lang['locfiledit_new_filename'] = 'ชื่อไฟล์';
+$lang['locfiledit_model'] = 'แบบ';
+$lang['locfiledit_empty_page'] = 'หน้าเปล่า';
+$lang['locfiledit_parent_directory'] = 'ไดเรกทอรี่พื้นฐาน';
+$lang['locfiledit_filename_error'] = 'ตัวอักขระถูกห้ามในการตั้งเป็นชื่อไฟล์.';
+$lang['locfiledit_file_already_exists'] = 'ไฟล์นี้มีอยู่แล้ว.';
+$lang['locfiledit_model_error'] = 'คุณจะต้องเลือกแบบ.';
+$lang['locfiledit_empty_filename'] = 'คุณจะต้องกรอกชื่อไฟล์.';
+$lang['locfiledit_webmaster_only'] = 'สำหรับเว็บมาสเตอร์เท่านั้นที่สามารถสร้างหรือแก้ไขปรับแต่งไฟล์การตั้งค่าพื้นฐานได้.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Yerel dosyaları yönetici panelinden düzenleyin.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,55 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Yerel yapılandırma';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Şablonlar';
+$lang['locfiledit_onglet_lang'] = 'Diller';
+$lang['locfiledit_onglet_plug'] = 'Kişisel Eklenti';
+$lang['locfiledit_cant_save'] = 'Seçili dosyanın yazılabilirlik izni yok. Lütfen "local/" klasörünü yazılabilir (chmod) olup olmadığını kontrol ediniz.';
+$lang['locfiledit_newfile'] = 'Aşağıya bazı bilgiler girilmeden dosya yaratılmaz.
+Bilgiler girilip kaydedildikten sonra dosya yaratılacaktır.';
+$lang['locfiledit_save_config'] = 'Dosya başarıyla yazıldı.';
+$lang['locfiledit_show_default'] = 'Referans dosyasını göster: ';
+$lang['locfiledit_save_bak'] = 'Yedekleme kopyası kaydedilirken yaratılacak.';
+$lang['locfiledit_saved_bak'] = 'Yedekleme dosyası yaratıldı (%s)';
+$lang['locfiledit_save_file'] = 'Dosyayı kaydet';
+$lang['locfiledit_choose_file'] = 'Düzenlenecek dosyayı seçiniz';
+$lang['locfiledit_edit'] = 'Düzenle';
+$lang['locfiledit_restore'] = 'Yedekleme dosyasını geri yükle';
+$lang['locfiledit_restore_confirm'] = 'Lütfen onaylayınız? 
+Bir sonraki kaydetmeye kadar geri yükleme etkin olmayacak.';
+$lang['locfiledit_bak_loaded1'] = 'Yedekleme dosyası yüklendi.';
+$lang['locfiledit_bak_loaded2'] = 'Geri yüklemek için dosyayı kaydetmeniz gerekir.';
+$lang['locfiledit_syntax_error'] = 'Sözdizimi (syntax) hatası! Dosya kaydedilemiyor.';
+$lang['locfiledit_new_tpl'] = 'Yeni dosya yarat';
+$lang['locfiledit_new_filename'] = 'Dosya adı';
+$lang['locfiledit_model'] = 'Model';
+$lang['locfiledit_empty_page'] = 'Boş sayfa';
+$lang['locfiledit_parent_directory'] = 'Üst dizin';
+$lang['locfiledit_filename_error'] = 'Dosya adında yasaklanmış karakterler var.';
+$lang['locfiledit_file_already_exists'] = 'Bu dosya zaten var.';
+$lang['locfiledit_model_error'] = 'Bir model seçmelisiniz.';
+$lang['locfiledit_empty_filename'] = 'Dosya ismini girmelisiniz.';
+$lang['locfiledit_webmaster_only'] = 'Sadece yöneticiler yerel dosyaları yaratabilir veya değiştirebilir.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_bak_loaded1'] = 'Резервна копія файлу завантажена.';
+$lang['locfiledit_bak_loaded2'] = 'Ви повинні зберегти файл, щоб відновити його.';
+$lang['locfiledit_cant_save'] = 'Поточний файл не доступний для запису. Переконайтеся, що каталог  "local/" доступний для запису (CHMOD).';
+$lang['locfiledit_choose_file'] = 'Виберіть файл для редагування';
+$lang['locfiledit_edit'] = 'Редагувати';
+$lang['locfiledit_empty_filename'] = 'Ви повинні заповнити ім\'я файлу.';
+$lang['locfiledit_empty_page'] = 'Порожня сторінка';
+$lang['locfiledit_filename_error'] = 'Заборонені символи в імені файлу.';
+$lang['locfiledit_file_already_exists'] = 'Файл вже існує.';
+$lang['locfiledit_model'] = 'Модель';
+$lang['locfiledit_model_error'] = 'Ви повинні вибрати модель.';
+$lang['locfiledit_newfile'] = 'Файл не існують і будуть створено через LocalFiles Editor';
+$lang['locfiledit_new_filename'] = 'Назва файлу';
+$lang['locfiledit_new_tpl'] = 'Створити новий файл';
+$lang['locfiledit_onglet_css'] = 'Стилі';
+$lang['locfiledit_onglet_lang'] = 'Мови';
+$lang['locfiledit_onglet_localconf'] = 'Локальна конфігурація';
+$lang['locfiledit_onglet_plug'] = 'Персональні плаґіни';
+$lang['locfiledit_onglet_tpl'] = 'Шаблони';
+$lang['locfiledit_parent_directory'] = 'Батьківська тека';
+$lang['locfiledit_restore'] = 'Відновлення файлу резервної копії';
+$lang['locfiledit_restore_confirm'] = 'Будь ласка, підтвердіть?
+Відновлення не буде ефективним до наступного збереження.';
+$lang['locfiledit_saved_bak'] = 'Резервне копіювання створеного файлу (%s)';
+$lang['locfiledit_save_bak'] = 'Резервна копія створюється при збереженні.';
+$lang['locfiledit_save_config'] = 'Файл успішно записаний.';
+$lang['locfiledit_save_file'] = 'Зберегти файл';
+$lang['locfiledit_show_default'] = 'Показати посилання на файл:';
+$lang['locfiledit_syntax_error'] = 'Синтаксична помилка! Файл не може бути збережений.';
+$lang['locfiledit_webmaster_only'] = 'Тільки веб-майстри можуть створювати або змінювати локальні файли.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Chỉnh sửa những tệp tin trên máy từ bảng điều khiển Quản trị viên.
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = 'Cấu hình cục bộ';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = 'Templates';
+$lang['locfiledit_onglet_lang'] = 'Ngôn ngữ';
+$lang['locfiledit_onglet_plug'] = 'Plugin cá nhân';
+$lang['locfiledit_cant_save'] = 'Tệp tin hiện tại không được phép ghi. Kiểm tra nếu thư mục "local/" có thể ghi được (chmod).';
+$lang['locfiledit_newfile'] = 'Tệp tin không tồn tại và sẽ được tạo ra bởi LocalFiles Editor';
+$lang['locfiledit_save_config'] = 'Tệp tin đã được ghi thành công.';
+$lang['locfiledit_show_default'] = 'Hiển thị tệp tin tham khảo: ';
+$lang['locfiledit_save_bak'] = 'Bản sao backup sẽ được tạo ra để dự phòng.';
+$lang['locfiledit_saved_bak'] = 'Tệp tin backup file được tạo ra (%s)';
+$lang['locfiledit_save_file'] = 'Lưu tệp tin';
+$lang['locfiledit_choose_file'] = 'Chọn tệp tin để hiệu chỉnh';
+$lang['locfiledit_edit'] = 'Hiệu chỉnh';
+$lang['locfiledit_restore'] = 'Phục hồi tệp tin backup';
+$lang['locfiledit_restore_confirm'] = 'Vui lòng xác nhận? Việc phục hồi sẽ không có hiệu lực cho đến lần dự phòng tiếp theo.';
+$lang['locfiledit_bak_loaded1'] = 'Tệp tin backup đã được nạp.';
+$lang['locfiledit_bak_loaded2'] = 'Bạn phải lưu lại tệp tin để phục hồi nó.';
+$lang['locfiledit_syntax_error'] = 'Lỗi cú pháp! Tệp tin không thể được lưu.';
+$lang['locfiledit_new_tpl'] = 'Tạo tệp tin mới';
+$lang['locfiledit_new_filename'] = 'Tên tệp tin';
+$lang['locfiledit_model'] = 'Mô hình';
+$lang['locfiledit_empty_page'] = 'Trang trống';
+$lang['locfiledit_parent_directory'] = 'Thư mục gốc';
+$lang['locfiledit_filename_error'] = 'Ký tự bị cấm trong tên tệp tin.';
+$lang['locfiledit_file_already_exists'] = 'Tệp tin đã có.';
+$lang['locfiledit_model_error'] = 'Bạn phải chọn một mô hình.';
+$lang['locfiledit_empty_filename'] = 'Bạn phải điền đủ tên tệp tin.';
+$lang['locfiledit_webmaster_only'] = 'Chỉ có webmasters mới có thể tạo hoặc biên tập tệp tin trên máy.';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+通过管理员面板编辑本地文件。
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = '本地配置';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = '模板';
+$lang['locfiledit_onglet_lang'] = '语言';
+$lang['locfiledit_onglet_plug'] = '个人插件';
+$lang['locfiledit_cant_save'] = '当前文件不可写入。请检查 "local/" 是否可写 (chmod)。';
+$lang['locfiledit_newfile'] = '下面的一些信息如不填写，文件将不能创建。信息填写并保存后，文件将被创建。';
+$lang['locfiledit_save_config'] = '文件写入成功。';
+$lang['locfiledit_show_default'] = '显示相关文件：';
+$lang['locfiledit_save_bak'] = '备份副本将在保存时被创建。';
+$lang['locfiledit_saved_bak'] = '备份文件已创建 (%s)';
+$lang['locfiledit_save_file'] = '保存文件';
+$lang['locfiledit_choose_file'] = '选择要编辑的文件';
+$lang['locfiledit_edit'] = '编辑';
+$lang['locfiledit_restore'] = '恢复备份文件';
+$lang['locfiledit_restore_confirm'] = '确认？恢复在下一次保存前将不会生效。';
+$lang['locfiledit_bak_loaded1'] = '备份文件已加载。';
+$lang['locfiledit_bak_loaded2'] = '您必须保存文件以便将其恢复。';
+$lang['locfiledit_syntax_error'] = '语法错误！文件不能被保存。';
+$lang['locfiledit_new_tpl'] = '创建新文件';
+$lang['locfiledit_new_filename'] = '文件名';
+$lang['locfiledit_model'] = '模块';
+$lang['locfiledit_empty_page'] = '空页面';
+$lang['locfiledit_parent_directory'] = '父目录';
+$lang['locfiledit_filename_error'] = '文件名不合法。';
+$lang['locfiledit_file_already_exists'] = '文件已存在。';
+$lang['locfiledit_model_error'] = '您必须选择一个模块。';
+$lang['locfiledit_empty_filename'] = '您必须填写文件名。';
+$lang['locfiledit_webmaster_only'] = '只有站长才能创建或修改本地文件。';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['locfiledit_restore'] = '將備份檔案還原';
+$lang['locfiledit_restore_confirm'] = '請確定？
+還原將不會有效，直到有下一個儲存。';
+$lang['locfiledit_save_bak'] = '儲存時會建立備份副本。';
+$lang['locfiledit_save_config'] = '檔案成功地寫入。';
+$lang['locfiledit_save_file'] = '儲存檔案';
+$lang['locfiledit_saved_bak'] = '建立的備份檔案(%s)';
+$lang['locfiledit_show_default'] = '顯示參照檔案：';
+$lang['locfiledit_syntax_error'] = '語法錯誤！無法儲存檔案。';
+$lang['locfiledit_webmaster_only'] = '只有網站管理員可以建立或修改本地檔案。';
+$lang['locfiledit_bak_loaded1'] = '載入備份文件。';
+$lang['locfiledit_bak_loaded2'] = '您必須儲存檔案來還原它。';
+$lang['locfiledit_cant_save'] = '檔案是無法寫入。檢查目錄"local/"有寫入權限(chmod)。';
+$lang['locfiledit_choose_file'] = '選擇要編輯的檔案';
+$lang['locfiledit_edit'] = '編輯';
+$lang['locfiledit_empty_filename'] = '您必須輸入檔案名稱。';
+$lang['locfiledit_empty_page'] = '空頁';
+$lang['locfiledit_file_already_exists'] = '檔案已存在。';
+$lang['locfiledit_filename_error'] = '檔案名有禁止的字符。';
+$lang['locfiledit_model'] = '模式';
+$lang['locfiledit_model_error'] = '你必須選擇一種模式。';
+$lang['locfiledit_new_filename'] = '檔案名稱';
+$lang['locfiledit_new_tpl'] = '建立新的檔案';
+$lang['locfiledit_newfile'] = '該檔案不存在，直到輸入一些信息。信息一旦輸入並保存，該文件將被創建。';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_lang'] = '語言';
+$lang['locfiledit_onglet_localconf'] = '本地設定';
+$lang['locfiledit_onglet_plug'] = '個人插件';
+$lang['locfiledit_onglet_tpl'] = '範本';
+$lang['locfiledit_parent_directory'] = '父目錄';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+從管理者控制台編輯本地文件
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php	(revision 25596)
@@ -0,0 +1,53 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['locfiledit_onglet_localconf'] = '本地配置';
+$lang['locfiledit_onglet_css'] = 'CSS';
+$lang['locfiledit_onglet_tpl'] = '樣本';
+$lang['locfiledit_onglet_lang'] = '語言';
+$lang['locfiledit_onglet_plug'] = '個人插件';
+$lang['locfiledit_cant_save'] = '當前的文件不能寫入。請確認 "local/" 目錄是可寫入的 (chmod)。';
+$lang['locfiledit_newfile'] = '檔案不存在，將由本地文件編輯器重新創建。';
+$lang['locfiledit_save_config'] = '檔案已成功寫入';
+$lang['locfiledit_show_default'] = '顯示參考文件: ';
+$lang['locfiledit_save_bak'] = '備份副本將被建立並儲存';
+$lang['locfiledit_saved_bak'] = '備份文件已建立 (%s) ';
+$lang['locfiledit_save_file'] = '存檔';
+$lang['locfiledit_choose_file'] = '選擇需編輯的檔案';
+$lang['locfiledit_edit'] = '編輯';
+$lang['locfiledit_restore'] = '還原備份檔案';
+$lang['locfiledit_restore_confirm'] = '請確認？下次儲存時，還原才會生效。';
+$lang['locfiledit_bak_loaded1'] = '備份文件已載入';
+$lang['locfiledit_bak_loaded2'] = '你必須儲存文件才能把它還原';
+$lang['locfiledit_syntax_error'] = '語法錯誤！檔案無法儲存';
+$lang['locfiledit_new_tpl'] = '創建新的檔案';
+$lang['locfiledit_new_filename'] = '檔案名稱';
+$lang['locfiledit_model'] = '模式';
+$lang['locfiledit_empty_page'] = '空白頁';
+$lang['locfiledit_parent_directory'] = '父目錄';
+$lang['locfiledit_filename_error'] = '檔案名稱中有禁用字符';
+$lang['locfiledit_file_already_exists'] = '檔案已存在';
+$lang['locfiledit_model_error'] = '你必須選擇模式';
+$lang['locfiledit_empty_filename'] = '你必須輸入檔名';
+$lang['locfiledit_webmaster_only'] = '只有網頁管理員才能建立或修改本地文件';
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/main.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/main.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/main.inc.php	(revision 25596)
@@ -0,0 +1,70 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+Plugin Name: LocalFiles Editor
+Version: 2.5.3
+Description: Edit local files from administration panel
+Plugin URI: http://piwigo.org/ext/extension_view.php?eid=144
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+define('LOCALEDIT_PATH' , PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/');
+
+function localfiles_admin_menu($menu)
+{
+  $menu[] = array(
+    'NAME' => 'LocalFiles Editor',
+    'URL' => get_root_url().'admin.php?page=plugin-'.basename(dirname(__FILE__))
+    );
+  
+  return $menu;
+}
+
+function localfiles_css_link()
+{
+  global $template;
+  
+  $template->set_prefilter('themes', 'localfiles_css_link_prefilter');
+}
+
+function localfiles_css_link_prefilter($content, &$smarty)
+{
+  $search = '#{if isset\(\$theme.admin_uri\)}.*?{/if}#s';
+  $replacement = '
+{if isset($theme.admin_uri)}
+      <br><a href="{$theme.admin_uri}" class="tiptip" title="{\'Configuration\'|@translate}">{\'Configuration\'|@translate}</a>
+      | <a href="admin.php?page=plugin-LocalFilesEditor-css&amp;theme={$theme.id}">CSS</a>
+{else}
+      <br><a href="admin.php?page=plugin-LocalFilesEditor-css&amp;theme={$theme.id}">CSS</a>
+{/if}
+';
+
+  return preg_replace($search, $replacement, $content);
+}
+
+add_event_handler('get_admin_plugin_menu_links', 'localfiles_admin_menu');
+add_event_handler('loc_begin_admin', 'localfiles_css_link');
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/maintain.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/maintain.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/maintain.inc.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+function plugin_uninstall()
+{
+  global $prefixeTable;
+
+  $query = 'DELETE FROM ' . CONFIG_TABLE . ' WHERE param=\'LocalFilesEditor\' LIMIT 1;';
+  pwg_query($query);
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/show_default.php
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/show_default.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/show_default.php	(revision 25596)
@@ -0,0 +1,59 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH', '../../');
+define('IN_ADMIN', true);
+include_once(PHPWG_ROOT_PATH . 'include/common.inc.php');
+include_once(LOCALEDIT_PATH.'include/functions.inc.php');
+load_language('plugin.lang', LOCALEDIT_PATH);
+check_status(ACCESS_ADMINISTRATOR);
+
+if (isset($_GET['file']))
+{
+  $path = $_GET['file'];
+  if (!is_admin() or (!substr_count($path, 'config_default.inc.php') and !substr_count($path, '.lang.php')))
+  {
+  	die('Hacking attempt!');
+  }
+    
+  $template->set_filename('show_default', dirname(__FILE__) . '/template/show_default.tpl');
+  
+  $file = file_get_contents(PHPWG_ROOT_PATH . $path);
+  $title = str_replace('/', ' / ', $path);
+
+  $template->assign(array(
+    'TITLE' => $title,
+    'DEFAULT_CONTENT' => $file,
+    )
+  );
+
+  $page['body_id'] = 'thePopuphelpPage';
+
+  include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+  $template->pparse('show_default');
+
+  include(PHPWG_ROOT_PATH.'include/page_tail.php');
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/template/admin.tpl
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/template/admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/template/admin.tpl	(revision 25596)
@@ -0,0 +1,113 @@
+{combine_script id="codemirror" path="plugins/LocalFilesEditor/codemirror/lib/codemirror.js"}
+{combine_script id="codemirror.xml" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.js"}
+{combine_script id="codemirror.javascript" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js"}
+{combine_script id="codemirror.css" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/css/css.js"}
+{combine_script id="codemirror.clike" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.js"}
+{combine_script id="codemirror.htmlmixed" require="codemirror.xml,codemirror.javascript,codemirror.css" path="plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js"}
+{combine_script id="codemirror.php" require="codemirror.xml,codemirror.javascript,codemirror.css,codemirror.clike" path="plugins/LocalFilesEditor/codemirror/mode/php/php.js"}
+
+{combine_css path="plugins/LocalFilesEditor/codemirror/lib/codemirror.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/css/css.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.css"}
+{combine_css path="plugins/LocalFilesEditor/template/locfiledit.css"}
+
+{footer_script}
+if (document.getElementById("text") != null)
+  var editor = CodeMirror.fromTextArea(document.getElementById("text"), {ldelim}
+    matchBrackets: true,
+    mode: "{$CODEMIRROR_MODE}",
+    tabMode: "shift"
+  });
+{/footer_script}
+
+<div class="titrePage">
+  <h2>LocalFiles Editor</h2>
+</div>
+
+<form method="post" class="properties" action="{$F_ACTION}" ENCTYPE="multipart/form-data" name="form">
+<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+
+<div id="LocalFilesEditor">
+
+{if isset($theme)}
+<input type="hidden" value="{$theme}" name="theme">
+{/if}
+
+{if isset($language)}
+<input type="hidden" value="{$language}" name="language">
+{/if}
+
+{if isset($template)}
+<input type="hidden" value="{$template}" name="template">
+{/if}
+
+
+{if isset ($create_tpl)}
+  <table>
+    <tr>
+      <td style="text-align: right;">{'locfiledit_new_filename'|@translate}</td>
+      <td style="text-align: left;"><input type="text" size="55" maxlength="50" value="{$create_tpl.NEW_FILE_NAME}" name="tpl_name"/></td>
+    </tr>
+    <tr>
+      <td style="text-align: right;">{'locfiledit_parent_directory'|@translate}</td>
+      <td style="text-align: left;">{html_options name=tpl_parent options=$create_tpl.PARENT_OPTIONS selected=$create_tpl.PARENT_SELECTED}</td>
+    </tr>
+    <tr>
+      <td style="text-align: right;">{'locfiledit_model'|@translate}</td>
+      <td style="text-align: left;">{html_options name=tpl_model options=$create_tpl.MODEL_OPTIONS selected=$create_tpl.MODEL_SELECTED}</td>
+    </tr>
+  </table>
+<br><br>
+<input class="submit" type="submit" value="{'Submit'|@translate}" name="create_tpl" />
+{/if}
+
+{if isset ($css_lang_tpl)}
+<select name="{$css_lang_tpl.SELECT_NAME}">
+{html_options options=$css_lang_tpl.OPTIONS selected=$css_lang_tpl.SELECTED}
+</select>
+
+<input class="submit" type="submit" value="{'locfiledit_edit'|@translate}" name="edit" />
+<br><br>
+{/if}
+
+{if isset ($css_lang_tpl.NEW_FILE_URL)}
+<span class="{$css_lang_tpl.NEW_FILE_CLASS}">
+<a href="{$css_lang_tpl.NEW_FILE_URL}">{'locfiledit_new_tpl'|@translate}</a>
+</span>
+{/if}
+
+{if isset ($zone_edit)}
+<div id="title_bar">
+{/if}
+
+{if !empty($show_default)}
+{foreach from=$show_default item=file name=default_loop}
+<span class="default_file">
+<a href="{$file.URL}" onclick="window.open( this.href, 'local_file', 'location=no,toolbar=no,menubar=no,status=no,resizable=yes,scrollbars=yes,width=800,height=700' ); return false;">{'locfiledit_show_default'|@translate} "{$file.FILE}"</a>
+</span>
+{if !($smarty.foreach.default_loop.last)}<br>{/if}
+{/foreach}
+{/if}
+
+{if isset ($zone_edit)}
+<span class="file_name">{$zone_edit.FILE_NAME}</span>
+</div> {* title_bar *}
+
+<textarea rows="30" cols="90" name="text" id="text">{$zone_edit.CONTENT_FILE}</textarea>
+<br>
+<input class="submit" type="submit" value="{'locfiledit_save_file'|@translate}" name="submit"/>
+
+{if isset ($restore)}
+<input class="submit" type="submit" value="{'locfiledit_restore'|@translate}" name="restore" onclick="return confirm('{'locfiledit_restore_confirm'|@translate|escape:'javascript'}');"/>
+{/if}
+
+{if isset ($restore_infos)}
+<br><br>
+{'locfiledit_save_bak'|@translate}
+{/if}
+
+{/if} {* zone_edit *}
+</div>
+</form>
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/template/locfiledit.css
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/template/locfiledit.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/template/locfiledit.css	(revision 25596)
@@ -0,0 +1,32 @@
+#LocalFilesEditor {
+  text-align: center;
+  margin: 0 2em;
+}
+
+#LocalFilesEditor #title_bar {
+  overflow: auto;
+}
+
+#LocalFilesEditor .file_name {
+  font-weight: bold;
+  float: left;
+}
+
+#LocalFilesEditor .default_file  {
+  float: right;
+}
+
+#LocalFilesEditor TD {
+  padding: 0.5em;
+}
+
+#LocalFilesEditor TEXTAREA, .CodeMirror {
+  background-color: #EEEEEE;
+  font-family: monospace,Arial,sans-serif;
+  font-size: 1.2em;
+  border: 1px solid #999999;
+  margin: 0.5em 0;
+  width: 100%;
+  min-height: 500px;
+  height: auto;
+}
Index: /tags/2.6.0RC1/plugins/LocalFilesEditor/template/show_default.tpl
===================================================================
--- /tags/2.6.0RC1/plugins/LocalFilesEditor/template/show_default.tpl	(revision 25596)
+++ /tags/2.6.0RC1/plugins/LocalFilesEditor/template/show_default.tpl	(revision 25596)
@@ -0,0 +1,37 @@
+{combine_script id="codemirror" path="plugins/LocalFilesEditor/codemirror/lib/codemirror.js"}
+{combine_script id="codemirror.xml" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.js"}
+{combine_script id="codemirror.javascript" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js"}
+{combine_script id="codemirror.css" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/css/css.js"}
+{combine_script id="codemirror.clike" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.js"}
+{combine_script id="codemirror.htmlmixed" require="codemirror.xml,codemirror.javascript,codemirror.css" path="plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js"}
+{combine_script id="codemirror.php" require="codemirror.xml,codemirror.javascript,codemirror.css,codemirror.clike" path="plugins/LocalFilesEditor/codemirror/mode/php/php.js"}
+
+{combine_css path="plugins/LocalFilesEditor/codemirror/lib/codemirror.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/css/css.css"}
+{combine_css path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.css"}
+{combine_css path="plugins/LocalFilesEditor/template/locfiledit.css"}
+
+{footer_script}
+var editor = CodeMirror.fromTextArea(document.getElementById("text"), {ldelim}
+  readOnly: true,
+  mode: "application/x-httpd-php"
+});
+{/footer_script}
+
+{html_head}
+<style type="text/css">
+#headbranch, #theHeader, #copyright {ldelim} display: none; }
+</style>
+{/html_head}
+
+<div id="LocalFilesEditor">
+
+<div id="title_bar">
+  <span class="file_name">{$TITLE}</span>
+</div>
+
+<textarea id="text" rows="30" cols="90" class="show_default_area">{$DEFAULT_CONTENT}</textarea>
+
+</div>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/controller.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/controller.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/controller.php	(revision 25596)
@@ -0,0 +1,265 @@
+<?php
+define('MULTIVIEW_CONTROLLER', 1);
+define('PHPWG_ROOT_PATH','../../');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+if (!is_admin() or !function_exists('multiview_user_init') )
+{
+  pwg_unset_session_var( 'multiview_as' );
+  pwg_unset_session_var( 'multiview_theme' );
+  pwg_unset_session_var( 'multiview_lang' );
+  pwg_unset_session_var( 'multiview_show_queries' );
+  pwg_unset_session_var( 'multiview_debug_l10n' );
+  pwg_unset_session_var( 'multiview_debug_template' );
+	pwg_unset_session_var( 'multiview_template_combine_files' );
+  pwg_unset_session_var( 'multiview_no_history' );
+?>
+
+<script type="text/javascript">
+  window.close();
+</script>
+<?php
+  exit();
+}
+?>
+<!DOCTYPE html">
+<?php
+
+$refresh_main = false;
+
+if ( isset($_GET['view_as']) )
+{
+  if ($user['id']===$_GET['view_as'])
+    pwg_unset_session_var( 'multiview_as' );
+  else
+    pwg_set_session_var( 'multiview_as', (int)$_GET['view_as'] );
+  // user change resets theme/lang
+  pwg_unset_session_var( 'multiview_theme' );
+  pwg_unset_session_var( 'multiview_lang' );
+  $refresh_main = true;
+}
+if (pwg_get_session_var( 'multiview_as', $user['id']) != $user['id'] )
+  $view_as_user = build_user( pwg_get_session_var( 'multiview_as',0), false);
+else
+  $view_as_user = $user;
+
+if ( isset($_GET['theme']) )
+{
+  pwg_set_session_var( 'multiview_theme', $_GET['theme'] );
+  $refresh_main = true;
+}
+
+if ( isset($_GET['lang']) )
+{
+  pwg_set_session_var( 'multiview_lang', $_GET['lang'] );
+  $refresh_main = true;
+}
+
+if ( isset($_GET['show_queries']) )
+{
+  if ( $_GET['show_queries']> 0 )
+    pwg_set_session_var( 'multiview_show_queries', 1 );
+  else
+    pwg_unset_session_var( 'multiview_show_queries' );
+  $refresh_main = true;
+}
+
+if ( isset($_GET['debug_l10n']) )
+{
+  if ( $_GET['debug_l10n']>0 )
+    pwg_set_session_var( 'multiview_debug_l10n', 1 );
+  else
+    pwg_unset_session_var( 'multiview_debug_l10n' );
+  $refresh_main = true;
+}
+
+
+if ( isset($_GET['debug_template']) )
+{
+  if ( $_GET['debug_template']>0 )
+    pwg_set_session_var( 'multiview_debug_template', 1 );
+  else
+    pwg_unset_session_var( 'multiview_debug_template' );
+  $refresh_main = true;
+}
+
+if ( isset($_GET['template_combine_files']) )
+{
+  if ( $_GET['template_combine_files']==0 )
+    pwg_set_session_var( 'multiview_template_combine_files', 0 );
+  else
+    pwg_unset_session_var( 'multiview_template_combine_files' );
+  $refresh_main = true;
+}
+
+
+if ( isset($_GET['no_history']) )
+{
+  if ( $_GET['no_history']>0 )
+    pwg_set_session_var( 'multiview_no_history', 1 );
+  else
+    pwg_unset_session_var( 'multiview_no_history' );
+  $refresh_main = true;
+}
+
+if ( isset($_GET['purge_template']) )
+{
+  pwg_set_session_var( 'purge_template', 1 );
+  $refresh_main = true;
+}
+
+$my_url = get_root_url().'plugins/'.basename(dirname(__FILE__)).'/'.basename(__FILE__);
+
+// +-----------------------------------------------------------------------+
+// | users                                                                 |
+$query = '
+SELECT '.$conf['user_fields']['id'].' AS id,'.$conf['user_fields']['username'].' AS username
+FROM '.USERS_TABLE.'
+  ORDER BY CONVERT('.$conf['user_fields']['username'].',CHAR)
+;';
+$user_map = simple_hash_from_query($query, 'id', 'username');
+
+$users_html = '<select onchange="document.location = this.options[this.selectedIndex].value;">';
+foreach( $user_map as $id=>$username)
+{
+  $selected = ($id==$view_as_user['id']) ? 'selected="selected"' : '';
+  $users_html .=
+    '<option value="'
+    .$my_url.'?view_as='.$id
+    .'" '.$selected.'>'
+    .$username
+    .'</option>';
+}
+$users_html.= '</select>';
+
+
+// +-----------------------------------------------------------------------+
+// | templates                                                             |
+$my_theme = '';
+$themes_html='<select onchange="document.location = this.options[this.selectedIndex].value;">';
+include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
+$themes = new themes();
+foreach ($themes->fs_themes as $pwg_theme => $fs_theme)
+{
+  $selected = $pwg_theme == pwg_get_session_var( 'multiview_theme', $view_as_user['theme'] ) ? 'selected="selected"' : '';
+  $my_theme = $selected == '' ? $my_theme : 'themes/'.$view_as_user['theme'];
+  $themes_html .=
+    '<option value="'
+    .$my_url.'?theme='.$pwg_theme
+    .'" '.$selected.'>'
+    .$pwg_theme
+    .'</option>';
+}
+$themes_html .= '</select>';
+
+// +-----------------------------------------------------------------------+
+// | language                                                              |
+$lang_html='<select onchange="document.location = this.options[this.selectedIndex].value;">';
+foreach (get_languages() as $language_code => $language_name)
+{
+  $selected = $language_code == pwg_get_session_var( 'multiview_lang', $view_as_user['language'] ) ? 'selected="selected"' : '';
+  $lang_html .=
+    '<option value="'
+    .$my_url.'?lang='.$language_code
+    .'" '.$selected.'>'
+    .$language_name
+    .'</option>';
+}
+$lang_html .= '</select>';
+
+// +-----------------------------------------------------------------------+
+// | show queries                                                          |
+$show_queries_html='';
+if (!$conf['show_queries'])
+{
+  if ( !pwg_get_session_var( 'multiview_show_queries', 0 ) )
+    $show_queries_html.='<a href="'.$my_url.'?show_queries=1">Show SQL queries</a>';
+  else
+    $show_queries_html.='<a href="'.$my_url.'?show_queries=0">Hide SQL queries</a>';
+}
+
+// +-----------------------------------------------------------------------+
+// | debug language                                                        |
+$debug_l10n_html='';
+if (!$conf['debug_l10n'])
+{
+  if ( !pwg_get_session_var( 'multiview_debug_l10n', 0 ) )
+    $debug_l10n_html.='<a href="'.$my_url.'?debug_l10n=1">Debug language</a>';
+  else
+    $debug_l10n_html.='<a href="'.$my_url.'?debug_l10n=0">Revert debug language</a>';
+}
+
+// +-----------------------------------------------------------------------+
+// | debug template                                                        |
+$debug_template_html='';
+if (!$conf['debug_template'])
+{
+  if ( !pwg_get_session_var( 'multiview_debug_template', 0 ) )
+    $debug_template_html.='<a href="'.$my_url.'?debug_template=1">Debug template</a>';
+  else
+    $debug_template_html.='<a href="'.$my_url.'?debug_template=0">Revert debug template</a>';
+}
+
+// +-----------------------------------------------------------------------+
+// | template combine files                                                |
+$template_combine_files_html='';
+if ($conf['template_combine_files'])
+{
+  if ( pwg_get_session_var( 'multiview_template_combine_files', 1 ) )
+    $template_combine_files_html.='<a href="'.$my_url.'?template_combine_files=0">Don\'t combine js&amp;css</a>';
+  else
+    $template_combine_files_html.='<a href="'.$my_url.'?template_combine_files=1">Combine js&amp;css</a>';
+}
+
+// +-----------------------------------------------------------------------+
+// | no history                                                            |
+$no_history_html='';
+if ( !pwg_get_session_var( 'multiview_no_history', 0 ) )
+  $no_history_html.='<a href="'.$my_url.'?no_history=1">Don\'t save to visit history</a>';
+else
+  $no_history_html.='<a href="'.$my_url.'?no_history=0">Save to visit history</a>';
+
+?>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo get_pwg_charset() ?>">
+<style>
+BODY, TABLE {
+  font-family: sans-serif;
+  font-size: small;
+}
+BODY{
+  margin: 2px;
+}
+</style>
+<title>Controller</title>
+
+</head>
+<body>
+<div>
+<script type="text/javascript">
+if (window.opener==null) {
+  window.close();
+  document.write("<"+"h2>How did you get here ???<"+"/h2>");
+}
+</script>
+
+<table>
+<tr><td>User</td><td><?php echo $users_html; ?></td></tr>
+
+<tr><td>Theme</td><td><?php echo $themes_html; ?></td></tr>
+
+<tr><td>Lang</td><td><?php echo $lang_html; ?></td></tr>
+</table>
+<?php echo implode( "<br/>\n", array($show_queries_html, $debug_l10n_html, $debug_template_html, $template_combine_files_html, $no_history_html) ); ?>
+<br/><a href="<?php echo $my_url; ?>?purge_template">Purge compiled templates</a>
+
+<script type="text/javascript">
+<?php
+  if ($refresh_main) echo '
+window.opener.location = window.opener.location;';
+?>
+</script>
+</div>
+</body>
+</html>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/is_admin.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/is_admin.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/is_admin.inc.php	(revision 25596)
@@ -0,0 +1,51 @@
+<?php
+if (! defined('MULTIVIEW_CONTROLLER') )
+{
+  global $user;
+  $view_as = pwg_get_session_var( 'multiview_as', 0 );
+  if ($view_as)
+  {
+    $user = build_user( $view_as, true);
+  }
+  $theme = pwg_get_session_var( 'multiview_theme', '' );
+  if ( !empty($theme) )
+  {
+    $user['theme'] = $theme;
+    unset($user['admin_theme']);
+  }
+  $lang = pwg_get_session_var( 'multiview_lang', '' );
+  if ( !empty($lang) )
+  {
+    $user['language'] = $lang;
+  }
+  global $conf;
+  if (pwg_get_session_var( 'multiview_show_queries', 0 ))
+    $conf['show_queries'] = true;
+  if (pwg_get_session_var( 'multiview_debug_l10n', 0 ))
+    $conf['debug_l10n'] = true;
+  if (pwg_get_session_var( 'multiview_debug_template', 0 ))
+    $conf['debug_template'] = true;
+  if (!pwg_get_session_var( 'multiview_template_combine_files', 1 ))
+    $conf['template_combine_files'] = false;
+  if (pwg_get_session_var( 'multiview_no_history', 0 ))
+    add_event_handler( 'pwg_log_allowed', create_function( '', 'return false;' ) );
+}
+
+add_event_handler('loc_end_page_header', 'multiview_loc_end_page_header');
+
+function multiview_loc_end_page_header()
+{
+  global $template;
+  $my_root_url = get_root_url().'plugins/'. basename(dirname(__FILE__)).'/';
+  $js =
+'<script type="text/javascript">
+var theController = window.open("", "mview_controller", "alwaysRaised=yes,dependent=yes,toolbar=no,height=200,width=220,menubar=no,resizable=yes,scrollbars=yes,status=no");
+if ( theController.location.toString()=="about:blank" || !theController.location.toString().match(/^(https?.*\/)controller\.php(\?.+)?$/))
+{
+  theController.location = "'.$my_root_url.'controller.php";
+}
+</script>';
+
+  $template->append( 'head_elements', $js );
+}
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/is_admin_template.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/is_admin_template.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/is_admin_template.inc.php	(revision 25596)
@@ -0,0 +1,12 @@
+<?php
+if (! defined('MULTIVIEW_CONTROLLER') )
+{
+  if (pwg_get_session_var( 'purge_template', 0 ))
+  {
+    global $template;
+    $template->delete_compiled_templates();
+    FileCombiner::clear_combined_files();
+    pwg_unset_session_var( 'purge_template' );
+  }
+}
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Laat administrateurs toe om die gallery as 'n gas te sien en/of die taal en/of die tema onmiddelik te verander. Dit is handig om foute op te spoor...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/af_ZA/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+يسمح للمسؤولين لمشاهدة المعرض كضيوف و / أو تغيير لغة و / أو واجهة عرض  . عملية لتصحيح التغييرات
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ar_SA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/description.txt	(revision 25596)
@@ -0,0 +1,2 @@
+AdminMultiView - Админ мулти изглед
+Български [BG]
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/bg_BG/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ar merourien a c'hello gwellet ar palier evel an implijerien, ha cheñch yezh ha tem diwar nij. Talvoudus eo evit dizreinañ cheñchamantoù.
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/br_FR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ca_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ca_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ca_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Aquest complement permet als administradors visualitzar la galeria com si fos un convidat, canviar d'idioma i tema sobre la marxa. Util per a tasques de depuracio.
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Umožní administrátorùm pracovat s galerií jako hosté, mìnit jazyk a šablony vzhledu. Praktické na testování zmìn...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/da_DK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/da_DK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/da_DK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Giver administratorer mulighed for at se galleri som gæst og/eller ændre sprog og/eller tema med det samme. Praktisk til fejlsøgning af ændringer...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Erlaubt Administratoren, die Galerie als Gast oder in einer anderen Sprache anzusehen, ohne sich abzumelden. Praktisch z.B. für die Fehlersuche.
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/de_DE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/el_GR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/el_GR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/el_GR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Επιτρέπει στους διαχειριστές να δουν την ιστοσελίδα ως επισκέπτες και / ή να αλλάξουν τη γλώσσα και / το θέμα σχετικά γρήγορα. Είναι πρακτικό χρήσιμο για τον εντοπισμό σφαλμάτων ...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Allows administrators to view gallery as guests and/or change the language and/or theme on the fly. Useful to debug changes...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/eo_EO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/eo_EO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/eo_EO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permesas al la administrantoj vidi galerion kiel vizitantoj kaj/aŭ ŝanĝi la lingvon kaj/aŭ la temon dinamike. Utila por sencimigi ŝanĝojn...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permite a los administradores ver la galería como un invitado y/o cambiar tanto el idioma como el tema sobre la marcha. Útiles para acciones de depuración...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/es_ES/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Võimaldab administraatoritel samal ajal vaadata oma galeriid külalisena, ning vahetada keele ja teema. Asjalik kui tahad jälgida seadistusi ja muid muutusi...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/et_EE/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fa_IR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fa_IR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fa_IR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fi_FI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fi_FI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fi_FI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Mahdollistaa ylläpitäjien tarkastella galleriaa sellaisena kuin vieraat sen näkevät, sekä vaihtaa kieltä ja teemaa lennosta.
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permet aux administrateurs de voir la galerie en tant qu'invité et/ou changer la langue et/ou changer de thème à la volée. Pratique pour le débuggage...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permet aux administrateurs de voir la galerie en tant qu'invité et/ou changer la langue et/ou changer de thème à la volée. Pratique pour le débuggage...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/gl_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/gl_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/gl_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permite ós administradores ver a galería como invitados, mudar o idioma, o tema ó voo. É útil para depurar os cambios ...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+אפשר למנהל ראשי לצפות בגלריה כאורח ו\או לשנות את השפה ו\או לשנות את הערכה. שימושי כדי לאתר באגים...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/he_IL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Dozvoljava administratorima pregledavanje galerije kao gost korisnik i/ili mijenjanje jezika i/ili teme u letu. Praktično za ispravljanje grešaka kod izmjena...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/hr_HR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Lehetővé teszi a rendszergazdák számára, hogy vendégként tekinthessék meg a galériát, módosíthatják a nyelvet és/vagy a témát menet közben. Praktikus hibakeresés, változtatásoknál ... 
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/hu_HU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permette agli amministratori di vedere la galleria come se fosse un'ospite e/o di cambiare lingua e/o cambiare tema facilmente. Pratico per il debug...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/it_IT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ja_JP/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ja_JP/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ja_JP/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+საშუალებას აძლევს ადმინისტრატორს ნახოს გალერეა როგორც სტუმარმა და/ან შეცვალოს ენა ან/და თემა. სასარგებლოა გამართვისათვის, შეტანილი ცვლილებების გასწორებისათვის...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ka_GE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/lt_LT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/lt_LT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/lt_LT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Leidžia administratoriams peržiūrėti galeriją svečio teisėmis, greitai keisti kalbas, išvaizdą. Naudinga debuginant pasikeitimus.
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Dod iespēju Administratoriem apskatīt galeriju kā viesim un/vai nomainīt valodu un/vai tēmu ar vienu darbību. Derīgi skaņošanas darbos...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/lv_LV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tillater administratorer å se galleriet som gjest og/eller endre språk og/eller tema i umiddelbart. Praktisk for å feilsøke ved endringer...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/nb_NO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Biedt administrators de mogelijkheid om een galerie als gast te bekijken en/of makkelijk van taal en/of thema te veranderen. Practisch bij het debuggen van wijzigingen...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/nl_NL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/nn_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/nn_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/nn_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tillet administratorar å sjå galleriet som ein gjest og/eller endre språket og/eller temaet "on the fly". Nyttig for å feilsøke når du gjer endringar...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Pozwala administratorom przeglądać galerię jako gość oraz zmieniać ustawienia języka i grafiki. Praktyczne narzędzie do weryfikacji zmian...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pl_PL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permite que os administradores vejam a galeria como convidado e/ou mude o idioma e/ou tema em tempo real. Prático para debugar as alterações ...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_BR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+description -> Permite aos Administradores ver a galeria como Convidados e/ou mudar o idioma e/ou tema instantaneamente. Práctico para testar mudanças...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/pt_PT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ro_RO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ro_RO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ro_RO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Permite administratorilor să vizualizeze galeria &icirc;n calitate de invitaţi şi/sau de a schimba limba şi/sau tema instantaneu. Practic pentru a depana schimbări făcute...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/description.txt	(revision 25596)
@@ -0,0 +1,3 @@
+Позволяет администраторам просматривать галерею в качестве гостей и / или
+изменить язык и / или тему "на лету". Удобно для
+отладки изменения ...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/ru_RU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Umožňuje administrátorom vidieť galériu aho hosťom a/alebo zmeniť jazyk a-alebo šablónu. Prakticky ladiť zmeny...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sk_SK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sl_SI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sl_SI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sl_SI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Omogoči skrbnikom ogled galerije kot gost in/ali spremembo jezika in/ali preobleke v trenutku. Uporabno za odpravljanje napak pri spremembah...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Дозвољава администратору да види галерију као гост и/или промени језик и/или тему уживо. Практично за проверу промена...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sr_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tilllåter administratör att se gallerier som gäst och/eller ändra språk eller tema direkt. Prakiskt vid debug av ändringar...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/sv_SE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/th_TH/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/th_TH/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/th_TH/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Yöneticilerin galeriye misafir olarak bakmasını ve/veya dili ve/veya temayı değiştirmesini sağlar. Değişiklikleri ayıklamak için kullanışlıdır...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/tr_TR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Cho phép Quản trị viên xem thư viện hình như một tài khoản khách và/hoặc thay đổi ngôn ngữ hiển thị và/hoặc giao diện trong thời gian ghé vào thư viện hình. Rất thiết thực cho việc thay đổi những hiệu chỉnh...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/vi_VN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+允许管理员以客人身份查看相册，或者改变语言和主题。部分改变和调试等...
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_CN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_HK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_HK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_HK/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_TW/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_TW/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/language/zh_TW/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/admin_multi_view/main.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/admin_multi_view/main.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/admin_multi_view/main.inc.php	(revision 25596)
@@ -0,0 +1,50 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 Piwigo team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+Plugin Name: Multi view
+Version: 2.5.3
+Description: Allows administrators to view gallery as guests and/or change the language and/or theme on the fly. Practical to debug changes...
+Plugin URI: http://piwigo.org/ext/extension_view.php?eid=286
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+add_event_handler('user_init', 'multiview_user_init' );
+add_event_handler('init', 'multiview_init' );
+
+function multiview_user_init()
+{
+  if (!is_admin())
+    return;
+  include_once( dirname(__FILE__).'/is_admin.inc.php' );
+}
+
+function multiview_init()
+{
+  if (!is_admin())
+    return;
+  include_once( dirname(__FILE__).'/is_admin_template.inc.php' );
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/initialize.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/initialize.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/initialize.inc.php	(revision 25596)
@@ -0,0 +1,116 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+add_event_handler('list_check_integrity', 'c13y_upgrade');
+
+function c13y_upgrade($c13y)
+{
+  global $conf;
+
+  load_language('plugin.lang', dirname(__FILE__).'/');
+
+  $to_deactivate = true;
+
+  /* Check user with same e-mail */
+  $query = '
+select
+  count(*)
+from
+  '.USERS_TABLE.'
+where
+  '.$conf['user_fields']['email'].' is not null
+group by
+  upper('.$conf['user_fields']['email'].')
+having count(*) > 1
+limit 1
+;';
+
+  if (pwg_db_fetch_row(pwg_query($query)))
+  {
+    $to_deactivate = false;
+    $c13y->add_anomaly(
+      l10n('c13y_dbl_email_user'),
+      null,
+      null,
+      l10n('c13y_correction_dbl_email_user'));
+  }
+
+  /* Check plugin included in Piwigo sources */
+  $included_plugins = array('dew', 'UpToDate', 'PluginsManager', 'LinkRoot');
+  $query = '
+select
+  id
+from
+  '.PLUGINS_TABLE.'
+where
+  id in ('.
+    implode(
+      ',',
+      array_map(
+        create_function('$s', 'return "\'".$s."\'";'),
+        $included_plugins
+        )
+      )
+      .')
+;';
+
+  $result = pwg_query($query);
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $to_deactivate = false;
+
+    $uninstall_msg_link =
+      '<a href="'.
+      PHPWG_ROOT_PATH.
+      'admin.php?page=plugins_list&amp;plugin='.$row['id'].'&amp;action=uninstall'.
+      '" onclick="window.open(this.href, \'\'); return false;">'.
+      sprintf(l10n('c13y_correction_obsolete_plugin'), $row['id']).'</a>';
+
+    $c13y->add_anomaly(
+      l10n('c13y_obsolete_plugin'),
+      null,
+      null,
+      $uninstall_msg_link);
+  }
+
+  /* Check if this plugin must be deactivate */
+  if ($to_deactivate)
+  {
+    $query = '
+REPLACE INTO '.PLUGINS_TABLE.'
+(id, state)
+VALUES (\'c13y_upgrade\', \'inactive\')
+;';
+    pwg_query($query);
+
+  global $page;
+  $page['infos'][] = l10n('c13y_upgrade_no_anomaly');
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+التحقق من سلامة ترقيات
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'الكشف عن أي شذوذ بعد ترقية التطبيق، "فحص التحديثات "البرنامج المساعد والمعطلة. ';
+$lang['c13y_dbl_email_user'] = 'المستخدمين مع نفس عنوان البريد الإلكتروني';
+$lang['c13y_correction_dbl_email_user'] = 'احذف المستخدمين المكررين';
+$lang['c13y_obsolete_plugin'] = 'اضافات مهملة';
+$lang['c13y_correction_obsolete_plugin'] = ' أضافة موجودة في هذا الاصدار، يجب إلغاء تثبيتها "%s"';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+c13y_upgrade - проверява точността и цялостта на обновленията.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_obsolete_plugin'] = '"%s" плъгин е включен в тази версия на приложението и трябва да я деинсталирате.';
+$lang['c13y_upgrade_no_anomaly'] = 'Не е открита аномалия след ъпгрейда, "Check upgrades" плъгин е деактивирана.';
+$lang['c13y_obsolete_plugin'] = 'Остарял плъгин';
+$lang['c13y_dbl_email_user'] = 'Потребители с еднакъв имейл';
+$lang['c13y_correction_dbl_email_user'] = 'Изтрии дублираните потребители';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Comprova la integritat de les actualitzacions.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Elimina usuaris duplicats';
+$lang['c13y_correction_obsolete_plugin'] = 'El complement (plug-in) "%s" ja s\'ha inclòs de sèrie en aquesta versió de l\'aplicació. Desinstal·la\'l.';
+$lang['c13y_dbl_email_user'] = 'Hi ha usuaris amb la mateixa adreça de correu electrònic';
+$lang['c13y_obsolete_plugin'] = 'Connector (plug-in) obsolet.';
+$lang['c13y_upgrade_no_anomaly'] = 'No s\'ha detectat cap anomalia després d\'actualitzar-se l\'aplicació. El connector (plug-in) "Comprovar actualitzacions" s\'ha desactivat.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Kontroluje integritu aktualizací.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Po aktualizaci aplikace nebyla detekována žádná anomálie. Doplnìk "Kontrola aktualizací" byl deaktivován.';
+$lang['c13y_dbl_email_user'] = 'Uživatelé se stejnou e-mail adresou';
+$lang['c13y_correction_dbl_email_user'] = 'Zrušit duplicitní uživatele';
+$lang['c13y_obsolete_plugin'] = 'Zastaralý doplnìk';
+$lang['c13y_correction_obsolete_plugin'] = 'Doplnìk "%s" byl souèástí této verze aplikace a musí být odinstalován.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tjek opgraderingintegritet.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/da_DK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Slet dublerede brugere';
+$lang['c13y_correction_obsolete_plugin'] = 'Plugin\'en "%s" er medtaget i denne version af applikationen, og du skal derfor afinstallere den.';
+$lang['c13y_dbl_email_user'] = 'Brugere med samme e-mail-adresse';
+$lang['c13y_obsolete_plugin'] = 'Forældet plugin';
+$lang['c13y_upgrade_no_anomaly'] = 'Ingen problemer opdaget efter opgradering af applikation. Plugin\'en "Kontroller opgraderinger" er blevet deaktiveret.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Überprüft die Integrität der Updates.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/de_DE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Keine Unregelmäßigkeiten festgestellt nach der Aktualisierung der Anwendung'; /* TODO , "Check upgrades" plugin was deactivated.'*/
+$lang['c13y_dbl_email_user'] = 'Benutzer mit der gleichen E-Mail-Adresse';
+$lang['c13y_correction_dbl_email_user'] = 'Lösche doppelte Benutzer';
+$lang['c13y_obsolete_plugin'] = 'Veraltetes Plugin';
+$lang['c13y_correction_obsolete_plugin'] = 'Das Plugin "%s" wurde deaktiviert, da es nicht kompatibel zu dieser Version von Piwigo ist. Bitte deinstallieren Sie es.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ελ?γχει την ακεραι?τητα των αναβαθμ?σεων.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/el_GR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Διαγραφή διπλών χρηστών';
+$lang['c13y_correction_obsolete_plugin'] = 'Το πρόσθετο "%s" έχει συμπεριληφθεί σε αυτή την έκδοση της εφαρμογής και θα πρέπει να το απεγκαταστήσετε.';
+$lang['c13y_dbl_email_user'] = 'Οι χρήστες με την ίδια διεύθυνση ηλεκτρονικού ταχυδρομείου';
+$lang['c13y_obsolete_plugin'] = 'Το πρόσθετο δεν χρησιμοποιείται πλέον';
+$lang['c13y_upgrade_no_anomaly'] = 'Δεν ανιχνεύθηκε ανωμαλία κατά την αναβάθμιση της εφαρμογής, το  πρόσθετο "Έλεγχος αναβαθμίσεις" έχει απενεργοποιηθεί.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Check integrity of upgrades.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/en_UK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'No anomaly detected after application upgrade, "Check upgrades" plugin was deactivated.';
+$lang['c13y_dbl_email_user'] = 'Users with same email address';
+$lang['c13y_correction_dbl_email_user'] = 'Delete duplicate users';
+$lang['c13y_obsolete_plugin'] = 'Obsolete plugin';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin has been included in this application version and you must uninstall it.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Kontrolas la kromaĵointegrecon.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Forigi la duoblon de uzanto';
+$lang['c13y_correction_obsolete_plugin'] = 'La kromaĵo "%s" inkluziviĝas en tiu versio de la aplikaĵo kaj vi devas malinstali ĝin.';
+$lang['c13y_dbl_email_user'] = 'Uzantoj kun la sama retadreso';
+$lang['c13y_obsolete_plugin'] = 'Malaktuala kromaĵo';
+$lang['c13y_upgrade_no_anomaly'] = 'Neniu anomalio detektiĝis post la aplikaĵa ĝisdatigado, la aplikaĵo "Check upgrades" malŝaltiĝis.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Comprobación de integridad de las actualizaciones.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/es_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Detectada ninguna anomalía después de la puesta al día de la aplicación, el plugin Check upgrades ha sido desactivado.';
+$lang['c13y_dbl_email_user'] = 'Usuarios con mismo correo electrónico';
+$lang['c13y_correction_dbl_email_user'] = 'Suprima a los utilizadores en duplicado';
+$lang['c13y_obsolete_plugin'] = 'Plugin obsoleto';
+$lang['c13y_correction_obsolete_plugin'] = 'El plugin "%s" ha sido incluido en esta versión de la aplicación y usted debe desinstalarlo.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Kontrolli uuenduste korrasolekut.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/et_EE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Kustuta topelt kasutajad';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" pluginat sisaldab antud programmi versioon, see tuleb eemaldada.';
+$lang['c13y_dbl_email_user'] = 'Kasutajad sama email-i aadressiga';
+$lang['c13y_obsolete_plugin'] = 'Vana plugin';
+$lang['c13y_upgrade_no_anomaly'] = 'Anomaaliaid ei leitud pärast uuendust, "Kontrolli uundusi" plugin deaktiveeriti';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_dbl_email_user'] = 'کاربرانی که ایمیل یکسان دارند';
+$lang['c13y_correction_dbl_email_user'] = 'پاک کردن کاربران تکراری (Duplicate)';
+$lang['c13y_correction_obsolete_plugin'] = 'افزونه ی "%s" در این نگارش از برنامه شامل شده است و باید آنرا پاک کنید.';
+$lang['c13y_obsolete_plugin'] = 'افزونه ی از کار افتاده';
+$lang['c13y_upgrade_no_anomaly'] = 'هیچ ناهنجاری پس از آپگرید برنامه شناسایی نشد، افزونه ی "بررسی آپگرید ها (Check upgrades)" غیر فعال شد.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tarkista päivitysten eheys.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Poista kaksoiskäyttäjätilit';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" -laajennus toimitetaan tämän ohjelmistopäivityksen yhteydessä, joten sinun on poistettava se.';
+$lang['c13y_dbl_email_user'] = 'Käyttäjät joilla on sama sähköpostiosoite';
+$lang['c13y_obsolete_plugin'] = 'Vanhentunut laajennus';
+$lang['c13y_upgrade_no_anomaly'] = 'Poikkeavuuksia ei löytynyt päivityksen yhteydessä. "Check upgrades" -laajennus poistettiin käytöstä.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Contrôle d'intégrité des mises à jour.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,29 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['c13y_upgrade_no_anomaly'] = 'Pas d\'anomalie détectée après la mise à jour de l\'application, le greffon "Check upgrades" a été désactivé.';
+$lang['c13y_dbl_email_user'] = 'Utilisateurs avec la même adresse de courriel';
+$lang['c13y_correction_dbl_email_user'] = 'Supprimez les utilisateurs en double';
+$lang['c13y_obsolete_plugin'] = 'Greffon obsolète';
+$lang['c13y_correction_obsolete_plugin'] = 'Le greffon "%s" est inclus dans cette version de l\'application, mais vous devez le désinstaller.'; 
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Contrôle d'intégrité des mises à jour.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Pas d\'anomalie détectée après la mise à jour de l\'application, le plugin "Check upgrades" a été désactivé.';
+$lang['c13y_dbl_email_user'] = 'Utilisateurs avec la même adresse email';
+$lang['c13y_correction_dbl_email_user'] = 'Supprimez les utilisateurs en double';
+$lang['c13y_obsolete_plugin'] = 'Plugin obsolète';
+$lang['c13y_correction_obsolete_plugin'] = 'Le plugin "%s" a été inclus dans cette version de l\'application et vous devez le désinstaller.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Comprobar a integridade das actualizacións.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_upgrade_no_anomaly'] = 'Non se detectou ningunha anomalía despois da posta ó día da aplicación, o engadido "Comprobar actualizacións" foi desactivado.';
+$lang['c13y_correction_obsolete_plugin'] = 'O engadido "%s" incluíuse nesta versión da aplicación e tes que desinstalalo.';
+$lang['c13y_dbl_email_user'] = 'Usuarios co mesmo correo electrónico';
+$lang['c13y_obsolete_plugin'] = 'Engadido obsoleto';
+$lang['c13y_correction_dbl_email_user'] = 'Borrar usuarios duplicados';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+בדיקת תקינות של השדרוגים.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/he_IL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'לא זוהו חריגות לאחר שידרוג התוכנה, התוסף "בדוק עבור עדכונים"  מנוטרל.';
+$lang['c13y_dbl_email_user'] = 'יש משתמש רשום כבר עם אותו דואר אלקטרוני';
+$lang['c13y_correction_dbl_email_user'] = 'מחק משתמשים כפולים';
+$lang['c13y_obsolete_plugin'] = 'תוסף ישן';
+$lang['c13y_correction_obsolete_plugin'] = 'התוסף "%s" כבר כלול בגירסה זאת עליך להסיר אותו.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Provjera integriteta kod nadogradnji.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['c13y_upgrade_no_anomaly'] = 'Nisu detektirane anomalije nakon nadogradnje aplikacije, plugin "Check upgrades" je deaktiviran.';
+$lang['c13y_dbl_email_user'] = 'Korisnici s istom e-mail adresom';
+$lang['c13y_correction_dbl_email_user'] = 'Obriši duplicirane korisnike';
+$lang['c13y_obsolete_plugin'] = 'Zastarjeli plugin';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin je uključen u ovoj verziji aplikacije i morate ga deinstalirati.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ellenőrizze a frissítés teljességét.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Nincs rendellenesség a frissítés után, "Check upgrades" bővítmény kikapcsolva.';
+$lang['c13y_dbl_email_user'] = 'Felhasználók azonos e-mail címmel';
+$lang['c13y_correction_dbl_email_user'] = 'Duplikált felhasználók törlése';
+$lang['c13y_obsolete_plugin'] = 'Elavult bővítmény';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" bővítmény nem kompatibilis a használt verzióval, el kell távolítani.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Controllo d'integrità degli aggiornamenti.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/it_IT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Nessun anomalia individuata dopo l\'aggiornamento dell\'applicazione, il plugin "Check upgrades" è stato disattivato.';
+$lang['c13y_dbl_email_user'] = 'Utenti con lo stesso indirizzo email';
+$lang['c13y_correction_dbl_email_user'] = 'Eliminare utenti duplicati';
+$lang['c13y_obsolete_plugin'] = 'Plugin obsoleto';
+$lang['c13y_correction_obsolete_plugin'] = 'Il plugin "%s" è stato incluso in questa versione dell\'applicazione e dovete disinstallarlo.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Check integrity of upgrades.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['c13y_upgrade_no_anomaly'] = 'アプリケーション・アップグレード後、異常なし、「アップグレード確認」のプラグインは無効化された';
+$lang['c13y_dbl_email_user'] = '同じメールアドレスがあるユーザー';
+$lang['c13y_correction_dbl_email_user'] = '複数のユーザーを削除';
+$lang['c13y_obsolete_plugin'] = '旧プラグイン';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" のプラグインはこのアプリケーションのバージョンに含まれており、アンインストールする必要があります。';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+შეამოწმეთ განახლების მთლიანობა.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'განახლების შემდეგ ანომალიები არ არის აღმოჩენილი, მოდული "განახლების შემოწმება"  გამორთულია.';
+$lang['c13y_dbl_email_user'] = 'მომხმარებლები ელ.ფოსტის იმავე მისამართით';
+$lang['c13y_correction_dbl_email_user'] = 'დუბლირებული მომხმარებლების წაშლა';
+$lang['c13y_obsolete_plugin'] = 'მოძველებული მოდული';
+$lang['c13y_correction_obsolete_plugin'] = 'მოდული "%s" გამორთულია, რადგან ის არ არის თავსებადი Piwigo–ს ამ ვერსიასთან. გთხოვთ წაშალოთ იგი.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'ನಕಲಿ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿ';
+$lang['c13y_correction_obsolete_plugin'] = 'ಈ ಆವೃತ್ತಿಯಲ್ಲಿ "%s" ಪ್ಲಗ್ ಇನ್ ಒಳಗೊಂಡಿದೆ ಮತ್ತು ನೀವು ಅದನ್ನು ಅನುಸ್ಠಾಪಿಸಲೇ ಬೇಕು';
+$lang['c13y_dbl_email_user'] = 'ಏಕರೂಪದ ಮಿಂಚೆ ವಿಳಾಸವಿರುವ ಬಳಕೆದಾರರು';
+$lang['c13y_obsolete_plugin'] = 'ಹಳತಾಗಿರುವ ಪ್ಲಗ್ ಇನ್ ';
+$lang['c13y_upgrade_no_anomaly'] = 'ಅಪ್ಲಿಕೇಶನ್ ನವೀಕರಣದ ನಂತರ ಯಾವುದೇ ಅಸಮಂಜಸತೆ ಕಂಡುಬಂದಿಲ್ಲ, "ನವೀಕರಣಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ"  ಪ್ಲಗ್ ಇನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Tikrinti atnaujinimų vientisumą
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_dbl_email_user'] = 'Vartotojai su vienodais el-pašto adresais';
+$lang['c13y_obsolete_plugin'] = 'Pasenęs priedas';
+$lang['c13y_correction_dbl_email_user'] = 'Šalinti besikartojančius vartotojus';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" priedas yra integruotas į šią programos versiją, išinstaliuokite jį.';
+$lang['c13y_upgrade_no_anomaly'] = 'Po programos atnaujinimo neaptikta jokių anomalijų. "Check upgrades" priedas išjungtas.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Uzlabojumu integritātes pārbaude.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Pēc aplikācijas uzlabojuma nav novērotas nekādas anomālijas, "Check upgrades" spraudnis tika deaktivēts.';
+$lang['c13y_dbl_email_user'] = 'Lietotāji ar vienādām e-pasta adresēm';
+$lang['c13y_correction_dbl_email_user'] = 'Izdzēst dubultlietotājus';
+$lang['c13y_obsolete_plugin'] = 'Novecojis spraudnis';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" spraudnis jau ir iekļauts šajā aplikācijas versijā un Jums tas ir jāatinstalē.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Sjekker integriteten til oppdateringer.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Ingen unormaliteter oppdaget etter program oppdatering, "Sjekk for oppdatering" tilleggsverktøy ble oppdaget.';
+$lang['c13y_dbl_email_user'] = 'bruker med samme email addresse';
+$lang['c13y_correction_dbl_email_user'] = 'Slett duplikat bruker';
+$lang['c13y_obsolete_plugin'] = 'Ubrukte tilleggsverktøy';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" tilleggsverktøy har blitt inkludert i denne applikasjons versjonen og du må avinstallere den.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Controleer de integriteit van de upgrades.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['c13y_upgrade_no_anomaly'] = 'Geen afwijkingen geconstateerd na de applicatie-upgrade, de "Check upgrades" plugin is gedeactiveerd.';
+$lang['c13y_dbl_email_user'] = 'Gebruikers met hetzelfde email-adres';
+$lang['c13y_correction_dbl_email_user'] = 'Verwijder dubbele gebruikers';
+$lang['c13y_obsolete_plugin'] = 'Verouderde plugin';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin is opgenomen in deze versie. U dient de plugin te verwijderen.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Sjekk integriteten av ein oppgradering.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Slett duplikat-brukarar';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" tilleggsprogrammet er ikkje støtta i denne versjonen og du må avinnstallere det.';
+$lang['c13y_dbl_email_user'] = 'Brukarar med same e-postadresse';
+$lang['c13y_obsolete_plugin'] = 'Utgjenge tilleggsprogram';
+$lang['c13y_upgrade_no_anomaly'] = 'Ingen feil oppdaga etter oppgradering. Tilleggsprogrammet "Check upgrades" vart deaktivert.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Sprawdzanie integralności uaktualnień.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Nie wykryto żadnych problemów po aktualizacji aplikacji, wtyczka "Sprawdź aktualizacje" została wyłączona.';
+$lang['c13y_dbl_email_user'] = 'Użytkownicy z identycznymi adresami e-mail';
+$lang['c13y_correction_dbl_email_user'] = 'Usuwanie powtórzonych nazw użytkowników';
+$lang['c13y_obsolete_plugin'] = 'Wtyczka jest przestarzała';
+$lang['c13y_correction_obsolete_plugin'] = 'Wtyczka "%s" została dołączona do tej wersji aplikacji, więc musisz ją odinstalować.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Verifique a integridade de atualizações.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Eliminar usuários duplicados';
+$lang['c13y_correction_obsolete_plugin'] = 'plugin "%s" foi incluído nesta versão do aplicativo e você deve desinstalá-lo.';
+$lang['c13y_dbl_email_user'] = 'Usuários com o mesmo endereço de email';
+$lang['c13y_obsolete_plugin'] = 'Plugin obsoleto';
+$lang['c13y_upgrade_no_anomaly'] = 'Nenhuma anomalia foi detectada após a atualização do aplicativo, o plugin "Verificar atualizações" foi desativado.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Teste a integridade das actualizações.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Nenhuma anomalia detectada depois da actualização. A extensão "Check upgrades" foi desactivada.';
+$lang['c13y_dbl_email_user'] = 'Utilizadores com o mesmo endereço de email';
+$lang['c13y_correction_dbl_email_user'] = 'Apagar Utilizadores duplicados';
+$lang['c13y_obsolete_plugin'] = 'Extensão obsoleta';
+$lang['c13y_correction_obsolete_plugin'] = 'A extensão "%s" foi incluída nesta versão PIWIGO e deverá ser desinstalada.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Verifică integritatea actualizărilor.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Șterge utilizatorii duplicat';
+$lang['c13y_correction_obsolete_plugin'] = 'plugin-ul "%s" a fost inclus în această versiune a aplicației și trebuie să-l dezinstalezi.';
+$lang['c13y_dbl_email_user'] = 'Utilizatorii cu aceeași adresă de e-mail';
+$lang['c13y_obsolete_plugin'] = 'Plugin-uri ieșite din uz';
+$lang['c13y_upgrade_no_anomaly'] = 'Nu s-a detectat nicio anomalie după actualizarea aplicației, plugin-ul "Verificare actualizări" a fost dezactivat.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Проверка целостности обновлений.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Аномалии не обнаружены после применения обновления. Плагин "Проверить обновления" был отключен.';
+$lang['c13y_dbl_email_user'] = 'Пользователи с тем же адресом электронной почты';
+$lang['c13y_correction_dbl_email_user'] = 'Удаление дубликатов пользователей';
+$lang['c13y_obsolete_plugin'] = 'Устаревший плагин';
+$lang['c13y_correction_obsolete_plugin'] = 'Плагин "%s" отключен, потому что он не совместима с этой версией Piwigo. Пожалуйста, удалите этот плагин.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Skontrolovať úplnosť upgradov.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Žiadne anomálie neboli zistené po aplikácii upgrade, "Kontrola upgradov" plugin bol deaktivovaný.';
+$lang['c13y_dbl_email_user'] = 'Používatelia s rovnakou emailovou adresou';
+$lang['c13y_correction_dbl_email_user'] = 'Vymazanie duplicitných používateľov';
+$lang['c13y_obsolete_plugin'] = 'Zastaraný plugin';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin bol obsiahnutý v tejto verzii aplikácie a musíte ho odinštalovať.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Preveri celovitost nadgradnje
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Izbriši podvojene uporabnike';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" je vključen v tej verziji aplikacije in ga morate odstraniti';
+$lang['c13y_dbl_email_user'] = 'Uporabniki z enakim e-mail naslovom';
+$lang['c13y_obsolete_plugin'] = 'Zastarel vtičnik';
+$lang['c13y_upgrade_no_anomaly'] = 'Po posodobitvi aplikacije ni bilo zaznati nepravilnosti. Vtičnik "Preveri za nadgradnje" je bil deaktiviran';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Провера стабилности надоградње.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Недостаци нису откривени после надоградње, додатак „Провера надоградње“ није активиран.';
+$lang['c13y_dbl_email_user'] = 'Корисници са истом адресом електронске поште';
+$lang['c13y_correction_dbl_email_user'] = 'Обришите дупле кориснике';
+$lang['c13y_obsolete_plugin'] = 'Застарео додатак';
+$lang['c13y_correction_obsolete_plugin'] = '„%s“ додатак је укључен у ову верзију апликације и морате да га избаците.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Kolla ändringarnas integritet.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Igget onormalt upptäkt efter uppdatering av applikationen, "Kolla uppdateringar" plugin deaktiverades.';
+$lang['c13y_dbl_email_user'] = 'Änvändare med samma e-postadress';
+$lang['c13y_correction_dbl_email_user'] = 'Ta bort dubbla änvändare';
+$lang['c13y_obsolete_plugin'] = 'Utången plugin';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin har  inkluderats i denna applikationsversion och du måste avinstallera den.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_dbl_email_user'] = 'அதே மின்னஞ்சல் முகவரியை கொண்ட பயனர்';
+$lang['c13y_obsolete_plugin'] = 'பயன் வழக்கழிந்த செருகுநிரல்';
+$lang['c13y_upgrade_no_anomaly'] = 'விண்ணப்ப மேம்படுத்தப்பட்ட பின் கண்டுபிடிக்கப்பட்ட இல்லை ஒழுங்கின்மை, "பாருங்கள் மேம்படுத்த" செருகுநிரல் முடக்கப்பட்டிருக்கிறது';
+$lang['c13y_correction_dbl_email_user'] = 'போலி பயனர் நீக்கு';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" சொருகி இந்த பயன்பாட்டை பதிப்பு சேர்க்கப்பட்டுள்ளது   நீங்கள் அதை நீக்க வேண்டும்.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/th_TH/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/th_TH/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/th_TH/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_dbl_email_user'] = 'ผู้ใช้งานที่มีที่อยู่อีเมลเดียวกัน';
+$lang['c13y_obsolete_plugin'] = 'ปลั๊กที่อินล้าสมัย';
+$lang['c13y_upgrade_no_anomaly'] = 'ไม่มีความผิดปกติใด ที่ตรวจพบหลังจากการปรับรุ่นโปรแกรม "ตรวจสอบการอัพเกรด" ปลั๊กอินเหล่านั้นจะต้องถูกปิดการใช้งานก่อน';
+$lang['c13y_correction_dbl_email_user'] = 'ลบผู้ใช้ที่ชื่อซ้ำกัน';
+$lang['c13y_correction_obsolete_plugin'] = 'ปลั๊กอินนี้ได้ถูกรวมอยู่ในแอพพลิเคชั่นที่คุณกำลังจะทำการถอนการติดตั้ง';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Yükseltmelerin bütünlüğünü kontrol edin.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Anormallik bulunamadı ,"Check upgrades" eklentisi devre dışı bırakıldı.';
+$lang['c13y_dbl_email_user'] = 'Aynı e-posta adresini kullananlar';
+$lang['c13y_correction_dbl_email_user'] = 'Mükerrer kullanıcıları sil';
+$lang['c13y_obsolete_plugin'] = 'Eski eklenti';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" eklentisi bu uygulamanın yeni sürümüne dahil edilmiştir, eklentiyi kaldırmanız gerekir.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = 'Видалення дублікатів користувачів';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" плаґін був включений в цій версії програми, і ви повинні видалити його.';
+$lang['c13y_dbl_email_user'] = 'Користувачі, що мають одну і ту ж адресу електронної пошти';
+$lang['c13y_obsolete_plugin'] = 'Застарілий плаґін';
+$lang['c13y_upgrade_no_anomaly'] = 'Немає аномалії, виявленої після застосування оновлення, плаґін "Check upgrades" був відключений.';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Kiểm tra tính nguyên vẹn của bản nâng cấp.
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = 'Không có sự bất thường nào được phát hiện sau khi nâng cấp ứng dụng, plugin "Dò tìm bản nâng cấp" đã được tắt.';
+$lang['c13y_dbl_email_user'] = 'Người dùng có cùng địa chỉ email';
+$lang['c13y_correction_dbl_email_user'] = 'Xóa các người dùng có trùng tên';
+$lang['c13y_obsolete_plugin'] = 'Plugin lỗi thời';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" plugin đã được kèm theo trong phiên bản của ứng dụng này và bạn bắt buộc phải gỡ bỏ nó ra.';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+检查升级的完整性。
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// --------- Starting below: New or revised $lang ---- from Butterfly (1.8)
+$lang['c13y_upgrade_no_anomaly'] = '应用程序升级后没有发现异常，"检查更新" 插件已停用。';
+$lang['c13y_dbl_email_user'] = '使用相同email地址的用户';
+$lang['c13y_correction_dbl_email_user'] = '删除重复的用户';
+$lang['c13y_obsolete_plugin'] = '已过时的插件';
+$lang['c13y_correction_obsolete_plugin'] = '"%s" 插件已包含在此应用程序版本中，请卸载原插件。';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php	(revision 25596)
@@ -0,0 +1,28 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['c13y_correction_dbl_email_user'] = '刪除重複的用戶';
+$lang['c13y_correction_obsolete_plugin'] = '"%s"插件已包含在這個版本上，你必須先卸載它。';
+$lang['c13y_dbl_email_user'] = '已有用戶用了相同的電郵地址';
+$lang['c13y_obsolete_plugin'] = '已過時的插件';
+$lang['c13y_upgrade_no_anomaly'] = '升級後沒有檢測到異常，"檢查升級"插件已被停用。';
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$lang['c13y_upgrade_no_anomaly'] = '應用程式更新後無異常，"檢查更新"的外掛程式已解除';
+$lang['c13y_dbl_email_user'] = '不同的使用者，電子信箱卻相同';
+$lang['c13y_correction_dbl_email_user'] = '刪除重複的使用者';
+$lang['c13y_obsolete_plugin'] = '廢除外掛程式';
+$lang['c13y_correction_obsolete_plugin'] = '外掛程式"%s"已包含在此版本的應用程式中，你必須先移除它。';
+
+?>
Index: /tags/2.6.0RC1/plugins/c13y_upgrade/main.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/c13y_upgrade/main.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/c13y_upgrade/main.inc.php	(revision 25596)
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 Piwigo team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+Plugin Name: Check upgrades
+Version: 2.5.3
+Description: Check integrity of upgrades.
+Plugin URI: http://piwigo.org/ext/extension_view.php?eid=287
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+  die('Hacking attempt!');
+}
+
+if (in_array(script_basename(), array('popuphelp', 'admin')))
+{
+  if (defined('IN_ADMIN') and IN_ADMIN)
+  {
+   include_once(dirname(__FILE__).'/initialize.inc.php');
+  }
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/flags.tpl
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/flags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/flags.tpl	(revision 25596)
@@ -0,0 +1,33 @@
+<li id="languageSwitch">{strip}<a id="languageSwitchLink" title="{'Language'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+  <span class="pwg-icon langflag-{$lang_switch.Active.code}">&nbsp;</span><span class="pwg-button-text">{'Language'|@translate}</span>
+</a>
+<div id="languageSwitchBox" class="switchBox">
+  <div class="switchBoxTitle">{'Language'|@translate}</div> 
+  {foreach from=$lang_switch.flags item=flag name=f}
+  <a rel="nofollow" href="{$flag.url}">
+    {if $lang_info.direction=="ltr"}<span class="pwg-icon langflag-{$flag.code}">{$flag.alt}</span>{$flag.title}{else}{$flag.title}<span class="pwg-icon langflag-{$flag.code}">{$flag.alt}</span>{/if}
+  </a>
+  {if ($smarty.foreach.f.index+1)%3 == 0}<br>{/if}
+  {/foreach}
+</div>
+{/strip}</li>
+
+{footer_script require='jquery'}{literal}
+jQuery("#languageSwitchLink").click(function() {
+	var elt = jQuery("#languageSwitchBox");
+	elt.css("left", Math.min(jQuery(this).offset().left, jQuery(window).width() - elt.outerWidth(true) - 5))
+		.css("top", jQuery(this).offset().top + jQuery(this).outerHeight(true))
+		.toggle();
+});
+jQuery("#languageSwitchBox").on("mouseleave", function() {
+	jQuery(this).hide();
+});
+{/literal}{/footer_script}
+
+{* <!-- stylish for themes missing .switchBox styles --> *}
+{if $LANGUAGE_SWITCH_LOAD_STYLE}
+{combine_css path=$LANGUAGE_SWITCH_PATH|@cat:"style.css"}
+{/if}
+
+{* <!-- common style specific for LanguageSwitch --> *}
+{combine_css path=$LANGUAGE_SWITCH_PATH|@cat:"language_switch.css"}
Index: /tags/2.6.0RC1/plugins/language_switch/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Skakel na 'n ander taal deur vlae op jou gallery se tuisblad.
Index: /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/af_ZA/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+التبديل إلى لغة أخرى من الأعلام على الصفحة الرئيسية لمعرض الصور
Index: /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ar_SA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/description.txt	(revision 25596)
@@ -0,0 +1,2 @@
+Language Switch - Промяна на език
+Български [BG]
Index: /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/bg_BG/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/br_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/br_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/br_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Cheñchit yezh gant bannieloù war ho pajenn-degemer.
Index: /tags/2.6.0RC1/plugins/language_switch/language/ca_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ca_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ca_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Canvia fàcilment l'idioma de la galeria. Es mostren banderes com a símbol dels idiomes disponibles.
Index: /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Pøepíná do jiného jazyka podle vlajeèek na hlavní stránce galerie.
Index: /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/da_DK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/da_DK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/da_DK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Skift til et andet sprog via flag på dit galleris forside.
Index: /tags/2.6.0RC1/plugins/language_switch/language/de_DE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/de_DE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/de_DE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ändert die Sprache der Galerie durch Anklicken einer Landesfahne.
Index: /tags/2.6.0RC1/plugins/language_switch/language/de_DE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/de_DE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/de_DE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/el_GR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/el_GR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/el_GR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Αλλαγ? σε ?λλη γλ?σσα απ? εικον?διο σημα?ας στην αρχικ? σελ?δα γκαλερ? σας.
Index: /tags/2.6.0RC1/plugins/language_switch/language/en_UK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/en_UK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/en_UK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Switch to another language using the flags on your gallery home page.
Index: /tags/2.6.0RC1/plugins/language_switch/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/eo_EO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/eo_EO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/eo_EO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ŝaltu al alia lingvo pere de la flagoj ĉe la hejmpaĝo de via galerio.
Index: /tags/2.6.0RC1/plugins/language_switch/language/es_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/es_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/es_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Cambiar el idioma de la galería con facilidad de las banderas de la página de inicio.
Index: /tags/2.6.0RC1/plugins/language_switch/language/es_ES/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/es_ES/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/es_ES/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/et_EE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/et_EE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/et_EE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Vali keel vajutades lipule su galerii leheküljel.
Index: /tags/2.6.0RC1/plugins/language_switch/language/et_EE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/et_EE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/et_EE/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/fa_IR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fa_IR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fa_IR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/fi_FI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fi_FI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fi_FI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Vaihda toiselle kielelle klikkaamalla lippua gallerian etusivulta.
Index: /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Changez la langue de la galerie facilement à partir des drapeaux de la page d'accueil.
Index: /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Changez la langue de la galerie facilement à partir des drapeaux de la page d'accueil.
Index: /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/gl_ES/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/gl_ES/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/gl_ES/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Muda a outro idioma empregando as bandeiras na páxina de inicio da túa galería.
Index: /tags/2.6.0RC1/plugins/language_switch/language/he_IL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/he_IL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/he_IL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+שנה לשפה אחרת מהדגל בדף הבית בגלריה שלך.
Index: /tags/2.6.0RC1/plugins/language_switch/language/he_IL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/he_IL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/he_IL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Prebacivanje na drugi jezik koristeći zastave na naslovnici galerije.
Index: /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/hr_HR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Galéria nyelvének változtatása a honlapon, zászló segítségével.
Index: /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/hu_HU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/it_IT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/it_IT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/it_IT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Cambiate facilmente la lingua della galleria grazie alle bandierine sulla pagina principale.
Index: /tags/2.6.0RC1/plugins/language_switch/language/it_IT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/it_IT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/it_IT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/ja_JP/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ja_JP/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ja_JP/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+გადასვლა სხვა ენაზე დროშების საშუალებით თქვენი გალერეის მთავარ გვერდზე.
Index: /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ka_GE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/lt_LT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/lt_LT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/lt_LT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Savo galerijos pradiniame puslapyje galite perjungti kalbą naudodamiesi vėlevėlėmis.
Index: /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Pārslēgšanās uz citu valodu, izmantojot karodziņus Jūsu galerijas mājas lapā
Index: /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/lv_LV/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/mn_MN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/mn_MN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/mn_MN/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Bytt til et annet språk via språkvelger på ditt galleris hjemmeside.
Index: /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/nb_NO/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Gebruik de landen-vlaggetjes op uw galerie-startpagina om van taal te wisselen.
Index: /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/nl_NL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/nn_NO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/nn_NO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/nn_NO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Bytt til eit anna språk ved å bruke flaggsymbol på startsida på galleriet.
Index: /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Przełączanie na inny język poprzez ikony flag na stronie głównej Twojej galerii.
Index: /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pl_PL/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Troque para outro idioma usando as bandeiras na página da sua galeria.
Index: /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pt_BR/index.php	(revision 25596)
@@ -0,0 +1,7 @@
+<?php
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Mude para outro idioma clicando na bandeira correspondente ao idioma existentes na página de entrada da sua galeria.
Index: /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/pt_PT/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/ro_RO/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ro_RO/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ro_RO/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Comutați &icirc;ntr-o o altă limbă folosind steagurile de pe pagina de start a galeriei.
Index: /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Позволяет переключать языки, нажимая на картинки флажков на главной странице Вашей галереи.
Index: /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/ru_RU/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/sh_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sh_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sh_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Promenite jezik preko zastavica na početnoj strani Va&scaron;e galerije.
Index: /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Prepínac na iný jazyk z vlajok vo Vašej galérii.
Index: /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sk_SK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/sl_SI/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sl_SI/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sl_SI/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Za spremembo jezika kliknite zastavico na domači strani galerije.
Index: /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Промена на други језик преко заставе на почетној страници Ваше галерије.
Index: /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sr_RS/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Byt till annat språk via flaggorna på ditt galleris hemsida.
Index: /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/sv_SE/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/th_TH/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/th_TH/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/th_TH/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Ana sayfadaki dil bayraklarından dil değişimi.
Index: /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/tr_TR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+Chuyển sang ngôn ngữ khác từ biểu tượng lá cờ trên trang chủ Thư viện hình của bạn.
Index: /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/vi_VN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/description.txt
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/description.txt	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/description.txt	(revision 25596)
@@ -0,0 +1,1 @@
+在您的Piwigo首页使用旗帜图标来选择其他语言
Index: /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/zh_CN/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language/zh_TW/index.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language/zh_TW/index.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language/zh_TW/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/language_switch.css
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language_switch.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language_switch.css	(revision 25596)
@@ -0,0 +1,270 @@
+#languageSwitchBox a {
+  display:inline-block;
+  width:130px;
+  text-decoration:none;
+  border:none;
+  text-transform:none;
+  margin-bottom:3px;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+  overflow:hidden;
+  line-height:1.2em;
+}
+#languageSwitchLink span {
+  margin-bottom:5px;
+  margin-top:5px;
+}
+[class*="langflag-"] {
+  background-image:url('flag_sprite.jpg') !important;
+  background-repeat:no-repeat;
+  background-position:24px 16px;
+  margin-right:3px;
+  width:24px;
+  height:16px;
+  direction:ltr;
+}
+
+/** Change the langflag-XX label to match a new language. All flags are represented there**/
+.langflag-ad { background-position:0px 0px; }
+.langflag-ae { background-position:-24px 0px; }
+.langflag-af { background-position:-48px 0px; }
+.langflag-ag { background-position:-72px 0px; }
+.langflag-al { background-position:-96px 0px; }
+.langflag-am { background-position:-120px 0px; }
+.langflag-an { background-position:-144px 0px; }
+.langflag-ao { background-position:-168px 0px; }
+.langflag-es_AR { background-position:-192px 0px; }
+.langflag-as { background-position:-216px 0px; }
+.langflag-at { background-position:-240px 0px; }
+.langflag-aw { background-position:-264px 0px; }
+.langflag-ax { background-position:-288px 0px; }
+.langflag-az_AZ { background-position:-312px 0px; }
+.langflag-ba { background-position:-336px 0px; }
+.langflag-bb { background-position:0px -16px; }
+.langflag-bd { background-position:-24px -16px; }
+.langflag-be { background-position:-48px -16px; }
+.langflag-bf { background-position:-72px -16px; }
+.langflag-bg_BG { background-position:-96px -16px; }
+.langflag-bh { background-position:-120px -16px; }
+.langflag-bi { background-position:-144px -16px; }
+.langflag-bj { background-position:-168px -16px; }
+.langflag-bl { background-position:-192px -16px; }
+.langflag-bm { background-position:-216px -16px; }
+.langflag-bn{ background-position:-240px -16px; }
+.langflag-bo { background-position:-264px -16px; }
+.langflag-bonaire { background-position:-288px -16px; }
+.langflag-pt_BR { background-position:-312px -16px; }
+.langflag-bs { background-position:-336px -16px; }
+.langflag-bt { background-position:0px -32px; }
+.langflag-bv { background-position:-24px -32px; }
+.langflag-bw { background-position:-48px -32px; }
+.langflag-by { background-position:-72px -32px; }
+.langflag-bz { background-position:-96px -32px; }
+.langflag-ca { background-position:-120px -32px; }
+.langflag-ca_ES { background-position:-144px -32px; }
+.langflag-cc { background-position:-168px -32px; }
+.langflag-cd { background-position:-192px -32px; }
+.langflag-cf { background-position:-216px -32px; }
+.langflag-cg { background-position:-240px -32px; }
+.langflag-ch { background-position:-264px -32px; }
+.langflag-ci { background-position:-288px -32px; }
+.langflag-cl { background-position:-312px -32px; }
+.langflag-cm { background-position:-336px -32px; }
+.langflag-zh_CN { background-position:0px -48px; }
+.langflag-co { background-position:-24px -48px; }
+.langflag-cr { background-position:-48px -48px; }
+.langflag-cs_CZ { background-position:-72px -48px; }
+.langflag-cu { background-position:-96px -48px; }
+.langflag-cv { background-position:-120px -48px; }
+.langflag-cx { background-position:-144px -48px; }
+.langflag-cy { background-position:-168px -48px; }
+.langflag-cz { background-position:-192px -48px; }
+.langflag-de_DE { background-position:-216px -48px; }
+.langflag-dj { background-position:-240px -48px; }
+.langflag-da_DK { background-position:-264px -48px; }
+.langflag-dm { background-position:-288px -48px; }
+.langflag-do { background-position:-312px -48px; }
+.langflag-dz { background-position:-336px -48px; }
+.langflag-ec { background-position:0px -64px; }
+.langflag-et_EE { background-position:-24px -64px; }
+.langflag-eg { background-position:-48px -64px; }
+.langflag-eh { background-position:-72px -64px; }
+.langflag-en_UK { background-position:-96px -64px; }
+.langflag-eo_EO { background-position:-120px -64px; }
+.langflag-er { background-position:-144px -64px; }
+.langflag-es_ES { background-position:-168px -64px; }
+.langflag-et { background-position:-192px -64px; }
+.langflag-fi_FI { background-position:-216px -64px; }
+.langflag-fm { background-position:-240px -64px; }
+.langflag-fo { background-position:-264px -64px; }
+.langflag-fr_FR { background-position:-288px -64px; }
+.langflag-ga { background-position:-312px -64px; }
+.langflag-gb { background-position:-336px -64px; }
+.langflag-en_GB { background-position:-336px -64px; }
+.langflag-gd { background-position:0px -80px; }
+.langflag-ka_GE { background-position:-24px -80px; }
+.langflag-gg { background-position:-48px -80px; }
+.langflag-gh { background-position:-72px -80px; }
+.langflag-gi { background-position:-96px -80px; }
+.langflag-gl { background-position:-120px -80px; }
+.langflag-gm { background-position:-144px -80px; }
+.langflag-gn { background-position:-168px -80px; }
+.langflag-gq { background-position:-192px -80px; }
+.langflag-el_GR { background-position:-216px -80px; }
+.langflag-gt { background-position:-240px -80px; }
+.langflag-gu { background-position:-264px -80px; }
+.langflag-gw { background-position:-288px -80px; }
+.langflag-gy { background-position:-312px -80px; }
+.langflag-zh_HK { background-position:-336px -80px; }
+.langflag-hn { background-position:0px -96px; }
+.langflag-hr_HR { background-position:-24px -96px; }
+.langflag-ht { background-position:-48px -96px; }
+.langflag-hu_HU { background-position:-72px -96px; }
+.langflag-id_ID { background-position:-96px -96px; }
+.langflag-ie { background-position:-120px -96px; }
+.langflag-ga_IE { background-position:-120px -96px; }
+.langflag-he_IL { background-position:-144px -96px; }
+.langflag-im { background-position:-168px -96px; }
+.langflag-kok_IN { background-position:-192px -96px; }
+.langflag-ta_IN { background-position:-192px -96px; }
+.langflag-bn_IN { background-position:-192px -96px; }
+.langflag-kn_IN { background-position:-192px -96px; }
+.langflag-iq { background-position:-216px -96px; }
+.langflag-fa_IR { background-position:-240px -96px; }
+.langflag-is_IS { background-position:-264px -96px; }
+.langflag-it_IT { background-position:-288px -96px; }
+.langflag-je { background-position:-312px -96px; }
+.langflag-jm { background-position:-336px -96px; }
+.langflag-jo { background-position:0px -112px; }
+.langflag-ja_JP { background-position:-24px -112px; }
+.langflag-ke { background-position:-48px -112px; }
+.langflag-kg { background-position:-72px -112px; }
+.langflag-km_KH { background-position:-96px -112px; }
+.langflag-ki { background-position:-120px -112px; }
+.langflag-km { background-position:-144px -112px; }
+.langflag-kn { background-position:-168px -112px; }
+.langflag-kosovo { background-position:-192px -112px; }
+.langflag-kp { background-position:-216px -112px; }
+.langflag-ko_KR { background-position:-240px -112px; }
+.langflag-kw { background-position:-264px -112px; }
+.langflag-kz { background-position:-288px -112px; }
+.langflag-la { background-position:-312px -112px; }
+.langflag-lb { background-position:-336px -112px; }
+.langflag-lc { background-position:0px -128px; }
+.langflag-li { background-position:-24px -128px; }
+.langflag-lk { background-position:-48px -128px; }
+.langflag-lr { background-position:-72px -128px; }
+.langflag-ls { background-position:-96px -128px; }
+.langflag-lt_LT { background-position:-120px -128px; }
+.langflag-lu { background-position:-144px -128px; }
+.langflag-lb_LU { background-position:-144px -128px; }
+.langflag-lv_LV { background-position:-168px -128px; }
+.langflag-ly { background-position:-192px -128px; }
+.langflag-ar_MA { background-position:-216px -128px; }
+.langflag-mc { background-position:-240px -128px; }
+.langflag-md { background-position:-264px -128px; }
+.langflag-me { background-position:-288px -128px; }
+.langflag-mg { background-position:-312px -128px; }
+.langflag-mh { background-position:-336px -128px; }
+.langflag-mk_MK { background-position:0px -144px; }
+.langflag-ml { background-position:-24px -144px; }
+.langflag-mm { background-position:-48px -144px; }
+.langflag-mn_MN { background-position:-72px -144px; }
+.langflag-mo { background-position:-96px -144px; }
+.langflag-mp { background-position:-120px -144px; }
+.langflag-mq { background-position:-144px -144px; }
+.langflag-mr { background-position:-168px -144px; }
+.langflag-mt { background-position:-192px -144px; }
+.langflag-mu { background-position:-216px -144px; }
+.langflag-dv_MV { background-position:-240px -144px; }
+.langflag-mw { background-position:-264px -144px; }
+.langflag-mx { background-position:-288px -144px; }
+.langflag-ms_MY { background-position:-312px -144px; }
+.langflag-mz { background-position:-336px -144px; }
+.langflag-na { background-position:0px -160px; }
+.langflag-ne { background-position:-24px -160px; }
+.langflag-nf { background-position:-48px -160px; }
+.langflag-ng { background-position:-72px -160px; }
+.langflag-ni { background-position:-96px -160px; }
+.langflag-nl_NL { background-position:-120px -160px; }
+.langflag-nb_NO { background-position:-144px -160px; }
+.langflag-nn_NO { background-position:-144px -160px; }
+.langflag-np { background-position:-168px -160px; }
+.langflag-nr { background-position:-192px -160px; }
+.langflag-nu { background-position:-216px -160px; }
+.langflag-om { background-position:-240px -160px; }
+.langflag-pa { background-position:-264px -160px; }
+.langflag-pe { background-position:-288px -160px; }
+.langflag-pf { background-position:-312px -160px; }
+.langflag-pg { background-position:-336px -160px; }
+.langflag-ph { background-position:0px -176px; }
+.langflag-pk { background-position:-24px -176px; }
+.langflag-pl_PL { background-position:-48px -176px; }
+.langflag-pm { background-position:-72px -176px; }
+.langflag-pr { background-position:-96px -176px; }
+.langflag-ps { background-position:-120px -176px; }
+.langflag-pt_PT { background-position:-144px -176px; }
+.langflag-pw { background-position:-168px -176px; }
+.langflag-py { background-position:-192px -176px; }
+.langflag-qa { background-position:-216px -176px; }
+.langflag-fr_CA { background-position:-240px -176px; }
+.langflag-ro_RO { background-position:-264px -176px; }
+.langflag-sh_RS { background-position:-288px -176px; }
+.langflag-sr_RS { background-position:-288px -176px; }
+.langflag-ru_RU { background-position:-312px -176px; }
+.langflag-rw { background-position:-336px -176px; }
+.langflag-ar_SA { background-position:0px -192px; }
+.langflag-saba { background-position:-24px -192px; }
+.langflag-sark { background-position:-48px -192px; }
+.langflag-sb { background-position:-72px -192px; }
+.langflag-sc { background-position:-96px -192px; }
+.langflag-scotland { background-position:-120px -192px; }
+.langflag-sd { background-position:-144px -192px; }
+.langflag-sv_SE { background-position:-168px -192px; }
+.langflag-sg { background-position:-192px -192px; }
+.langflag-sl_SI { background-position:-216px -192px; }
+.langflag-sj { background-position:-240px -192px; }
+.langflag-sk_SK { background-position:-264px -192px; }
+.langflag-sl { background-position:-288px -192px; }
+.langflag-sm { background-position:-312px -192px; }
+.langflag-sn { background-position:-336px -192px; }
+.langflag-so { background-position:0px -208px; }
+.langflag-sr { background-position:-24px -208px; }
+.langflag-st { background-position:-48px -208px; }
+.langflag-sv { background-position:-72px -208px; }
+.langflag-sy { background-position:-96px -208px; }
+.langflag-sz { background-position:-120px -208px; }
+.langflag-td { background-position:-144px -208px; }
+.langflag-tg { background-position:-168px -208px; }
+.langflag-th_TH { background-position:-192px -208px; }
+.langflag-tj { background-position:-216px -208px; }
+.langflag-tk { background-position:-240px -208px; }
+.langflag-tl { background-position:-264px -208px; }
+.langflag-tm { background-position:-288px -208px; }
+.langflag-tn { background-position:-312px -208px; }
+.langflag-to { background-position:-336px -208px; }
+.langflag-tr_TR { background-position:0px -224px; }
+.langflag-tt { background-position:-24px -224px; }
+.langflag-zh_TW{ background-position:-48px -224px; }
+.langflag-tz { background-position:-72px -224px; }
+.langflag-uk_UA { background-position:-96px -224px; }
+.langflag-ug { background-position:-120px -224px; }
+.langflag-en_US { background-position:-144px -224px; }
+.langflag-uy { background-position:-168px -224px; }
+.langflag-uz { background-position:-192px -224px; }
+.langflag-va { background-position:-216px -224px; }
+.langflag-vc { background-position:-240px -224px; }
+.langflag-ve { background-position:-264px -224px; }
+.langflag-vi { background-position:-288px -224px; }
+.langflag-vi_VN { background-position:-312px -224px; }
+.langflag-vu { background-position:-336px -224px; }
+.langflag-wales { background-position:0px -240px; }
+.langflag-wf { background-position:-24px -240px; }
+.langflag-ws { background-position:-48px -240px; }
+.langflag-ye { background-position:-72px -240px; }
+.langflag-yt { background-position:-96px -240px; }
+.langflag-af_ZA { background-position:-120px -240px; }
+.langflag-zm { background-position:-144px -240px; }
+.langflag-zw { background-position:-168px -240px; }
+.langflag-gl_ES { background-position:-192px -240px; }
+.langflag-br_FR { background-position:-216px -240px; }
Index: /tags/2.6.0RC1/plugins/language_switch/language_switch.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/language_switch.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/language_switch.inc.php	(revision 25596)
@@ -0,0 +1,140 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+function language_controler_switch()
+{
+  global $user;
+    
+  $same = $user['language'];
+  
+  if (isset($_GET['lang']))
+  {
+    include_once(PHPWG_ROOT_PATH . 'admin/include/languages.class.php');
+    $languages = new languages();
+    if ( !in_array($_GET['lang'], array_keys($languages->fs_languages)) )
+    {
+      $_GET['lang'] = PHPWG_DEFAULT_LANGUAGE;
+    }
+
+    if ( !empty($_GET['lang']) and file_exists(PHPWG_ROOT_PATH.'language/'.$_GET['lang'].'/common.lang.php') )
+    {
+      if ( is_a_guest() or is_generic() )
+      {
+        pwg_set_session_var('lang_switch', $_GET['lang']);
+      }
+      else
+      {
+        $query = '
+UPDATE '.USER_INFOS_TABLE.'
+  SET language = \''.$_GET['lang'].'\'
+  WHERE user_id = '.$user['id'].'
+;';
+        pwg_query($query);
+      }
+      
+      $user['language'] = $_GET['lang'];
+    }
+  }
+  elseif ( (is_a_guest() or is_generic()) )
+  {
+    $user['language'] = pwg_get_session_var('lang_switch', $user['language']);
+  }
+  
+  // Reload language only if it isn't the same one
+  if ( $same !== $user['language'] )
+  {
+    load_language('common.lang', '', array('language'=>$user['language']));
+    
+    load_language(
+      'lang',
+      PHPWG_ROOT_PATH.PWG_LOCAL_DIR,
+      array(
+        'language' => $user['language'],
+        'no_fallback' => true,
+        'local' => true
+        )
+      );
+    
+    if ( defined('IN_ADMIN') and IN_ADMIN )
+    {
+      // Never currently
+      load_language('admin.lang', '', array('language'=>$user['language']));
+    }
+  }
+}
+
+function language_controler_flags()
+{
+  global $user, $template, $conf, $page;
+  
+  $available_lang = get_languages();
+  
+  if (isset($conf['no_flag_languages']))
+  {
+    $available_lang = array_diff_key($available_lang, array_flip($conf['no_flag_languages']));
+  }
+  
+  $url_starting = get_query_string_diff(array('lang'));
+  
+  if (isset($page['section']) and $page['section'] == 'additional_page' and isset($page['additional_page']))
+  {
+    $base_url = make_index_url(array('section'=>'page')).'/'.(isset($page['additional_page']['permalink']) ? $page['additional_page']['permalink'] : $page['additional_page']['id']);
+  }
+  else
+  {
+    $base_url = duplicate_index_url();
+  }
+  
+  foreach ($available_lang as $code => $displayname)
+  {
+    $qlc = array (
+      'url' => add_url_params($base_url, array('lang'=> $code)),
+      'alt' => ucwords($displayname),
+      'title' => substr($displayname, 0, -4), // remove [FR] or [RU]
+      'code' => $code,
+      );
+    
+    $lsw['flags'][$code] = $qlc;
+    
+    if ($code == $user['language'])
+    {
+      $lsw['Active'] = $qlc;
+    }
+  }
+  
+  $safe_themes = array('clear','dark','elegant','Sylvia','simple-grey','simple-black','simple-white','kardon','luciano','montblancxl'); // stripped (2.6)
+  
+  $template->assign(array(
+      'lang_switch'=> $lsw,
+      'LANGUAGE_SWITCH_PATH' => LANGUAGE_SWITCH_PATH,
+      'LANGUAGE_SWITCH_LOAD_STYLE' => !in_array($user['theme'], $safe_themes),
+      ));
+  
+  $template->set_filename('language_flags', dirname(__FILE__) . '/flags.tpl');
+  $template->concat('PLUGIN_INDEX_ACTIONS', $template->parse('language_flags', true) );
+  $template->clear_assign('lang_switch');
+}
+
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/main.inc.php
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/main.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/main.inc.php	(revision 25596)
@@ -0,0 +1,42 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/*
+Plugin Name: Language Switch
+Version: 2.5.5
+Description: Switch to another language from flags on your gallery home page.
+Plugin URI: http://piwigo.org/ext/extension_view.php?eid=123
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+define('LANGUAGE_SWITCH_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
+
+include_once(LANGUAGE_SWITCH_PATH.'language_switch.inc.php');
+
+add_event_handler('loading_lang', 'language_controler_switch', 5 );
+add_event_handler('loc_end_index', 'language_controler_flags', 95 );
+
+?>
Index: /tags/2.6.0RC1/plugins/language_switch/style.css
===================================================================
--- /tags/2.6.0RC1/plugins/language_switch/style.css	(revision 25596)
+++ /tags/2.6.0RC1/plugins/language_switch/style.css	(revision 25596)
@@ -0,0 +1,23 @@
+#languageSwitchBox {
+	padding: 0.5em 5px;
+	border-radius: 4px;
+	z-index: 100;
+	text-align:left;
+	display: none;
+	position: absolute;
+	left: 0; top: 0; /*left, right set through js*/
+  background-color: #555;
+  border: 1px solid #000;
+}
+
+#languageSwitchBox .switchBoxTitle {
+  padding-bottom:5px;
+  margin-bottom:5px;
+  border-bottom: 1px solid #444;
+}
+#languageSwitchBox a {
+  color:#aaa;
+}
+#languageSwitchBox a:hover {
+  color:#ddd;
+}
Index: /tags/2.6.0RC1/popuphelp.php
===================================================================
--- /tags/2.6.0RC1/popuphelp.php	(revision 25596)
+++ /tags/2.6.0RC1/popuphelp.php	(revision 25596)
@@ -0,0 +1,81 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+define('PWG_HELP', true);
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+$page['body_id'] = 'thePopuphelpPage';
+$title = l10n('Piwigo Help');
+$page['page_banner'] = '';
+$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+if
+  (
+    isset($_GET['page'])
+    and preg_match('/^[a-z_]*$/', $_GET['page'])
+  )
+{
+  $help_content =
+    load_language('help/'.$_GET['page'].'.html', '', array('return'=>true) );
+
+  if ($help_content == false)
+  {
+    $help_content = '';
+  }
+
+  $help_content = trigger_event(
+    'get_popup_help_content', $help_content, $_GET['page']);
+}
+else
+{
+  die('Hacking attempt!');
+}
+
+$template->set_filename('popuphelp','popuphelp.tpl');
+
+$template->assign(
+  array
+  (
+    'HELP_CONTENT' => $help_content
+  ));
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->pparse('popuphelp');
+
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+
+?>
Index: /tags/2.6.0RC1/profile.php
===================================================================
--- /tags/2.6.0RC1/profile.php	(revision 25596)
+++ /tags/2.6.0RC1/profile.php	(revision 25596)
@@ -0,0 +1,343 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// customize appearance of the site for a user
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{//direct script access
+  define('PHPWG_ROOT_PATH','./');
+  include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+
+  // +-----------------------------------------------------------------------+
+  // | Check Access and exit when user status is not ok                      |
+  // +-----------------------------------------------------------------------+
+  check_status(ACCESS_CLASSIC);
+
+  if (!empty($_POST))
+  {
+    check_pwg_token();
+  }
+
+  $userdata = $user;
+
+  trigger_action('loc_begin_profile');
+
+// Reset to default (Guest) custom settings
+  if (isset($_POST['reset_to_default']))
+  {
+    $fields = array(
+      'nb_image_page', 'expand',
+      'show_nb_comments', 'show_nb_hits', 'recent_period', 'show_nb_hits'
+      );
+
+    // Get the Guest custom settings
+    $query = '
+SELECT '.implode(',', $fields).'
+  FROM '.USER_INFOS_TABLE.'
+  WHERE user_id = '.$conf['default_user_id'].'
+;';
+    $result = pwg_query($query);
+    $default_user = pwg_db_fetch_assoc($result);
+    $userdata = array_merge($userdata, $default_user);
+  }
+
+  save_profile_from_post($userdata, $page['errors']);
+
+  $title= l10n('Your Gallery Customization');
+  $page['body_id'] = 'theProfilePage';
+  $template->set_filename('profile', 'profile.tpl');
+
+  load_profile_in_template(
+    get_root_url().'profile.php', // action
+    make_index_url(), // for redirect
+    $userdata );
+
+  
+  // include menubar
+  $themeconf = $template->get_template_vars('themeconf');
+  if (!isset($themeconf['hide_menu_on']) OR !in_array('theProfilePage', $themeconf['hide_menu_on']))
+  {
+    include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+  }
+  
+  include(PHPWG_ROOT_PATH.'include/page_header.php');
+  trigger_action('loc_end_profile');
+  flush_page_messages();
+  $template->pparse('profile');
+  include(PHPWG_ROOT_PATH.'include/page_tail.php');
+}
+
+//------------------------------------------------------ update & customization
+function save_profile_from_post($userdata, &$errors)
+{
+  global $conf, $page;
+  $errors = array();
+
+  if (!isset($_POST['validate']))
+  {
+    return false;
+  }
+
+  $special_user = in_array($userdata['id'], array($conf['guest_id'], $conf['default_user_id']));
+  if ($special_user)
+  {
+    unset(
+      $_POST['username'],
+      $_POST['mail_address'],
+      $_POST['password'],
+      $_POST['use_new_pwd'],
+      $_POST['passwordConf'],
+      $_POST['theme'],
+      $_POST['language']
+      );
+    $_POST['theme'] = get_default_theme();
+    $_POST['language'] = get_default_language();
+  }
+  
+  if (!defined('IN_ADMIN'))
+  {
+    unset($_POST['username']);
+  }
+
+  if ($conf['allow_user_customization'] or defined('IN_ADMIN'))
+  {
+    $int_pattern = '/^\d+$/';
+    if (empty($_POST['nb_image_page'])
+        or (!preg_match($int_pattern, $_POST['nb_image_page'])))
+    {
+      $errors[] = l10n('The number of photos per page must be a not null scalar');
+    }
+
+    // periods must be integer values, they represents number of days
+    if (!preg_match($int_pattern, $_POST['recent_period'])
+        or $_POST['recent_period'] < 0)
+    {
+      $errors[] = l10n('Recent period must be a positive integer value') ;
+    }
+
+    if (!in_array($_POST['language'], array_keys(get_languages())))
+    {
+      die('Hacking attempt, incorrect language value');
+    }
+
+    if (!in_array($_POST['theme'], array_keys(get_pwg_themes())))
+    {
+      die('Hacking attempt, incorrect theme value');
+    }
+  }
+
+  if (isset($_POST['mail_address']))
+  {
+    // if $_POST and $userdata have are same email
+    // validate_mail_address allows, however, to check email
+    $mail_error = validate_mail_address($userdata['id'], $_POST['mail_address']);
+    if (!empty($mail_error))
+    {
+      $errors[] = $mail_error;
+    }
+  }
+
+  if (!empty($_POST['use_new_pwd']))
+  {
+    // password must be the same as its confirmation
+    if ($_POST['use_new_pwd'] != $_POST['passwordConf'])
+    {
+      $errors[] = l10n('The passwords do not match');
+    }
+
+    if ( !defined('IN_ADMIN') )
+    {// changing password requires old password
+      $query = '
+  SELECT '.$conf['user_fields']['password'].' AS password
+    FROM '.USERS_TABLE.'
+    WHERE '.$conf['user_fields']['id'].' = \''.$userdata['id'].'\'
+  ;';
+      list($current_password) = pwg_db_fetch_row(pwg_query($query));
+
+      if (!$conf['password_verify']($_POST['password'], $current_password))
+      {
+        $errors[] = l10n('Current password is wrong');
+      }
+    }
+  }
+
+  if (count($errors) == 0)
+  {
+    // mass_updates function
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+    if (isset($_POST['mail_address']))
+    {
+      // update common user informations
+      $fields = array($conf['user_fields']['email']);
+
+      $data = array();
+      $data{$conf['user_fields']['id']} = $userdata['id'];
+      $data{$conf['user_fields']['email']} = $_POST['mail_address'];
+
+      // password is updated only if filled
+      if (!empty($_POST['use_new_pwd']))
+      {
+        $fields[] = $conf['user_fields']['password'];
+        // password is hashed with function $conf['password_hash']
+        $data{$conf['user_fields']['password']} = $conf['password_hash']($_POST['use_new_pwd']);
+      }
+      
+      // username is updated only if allowed
+      if (!empty($_POST['username']))
+      {
+        if ($_POST['username'] != $userdata['username'] and get_userid($_POST['username']))
+        {
+          $page['errors'][] = l10n('this login is already used');
+          unset($_POST['redirect']);
+        }
+        else
+        {
+          $fields[] = $conf['user_fields']['username'];
+          $data{$conf['user_fields']['username']} = $_POST['username'];
+          
+          // send email to the user
+          if ($_POST['username'] != $userdata['username'])
+          {
+            include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+            switch_lang_to($userdata['language']);
+            
+            $keyargs_content = array(
+              get_l10n_args('Hello', ''),
+              get_l10n_args('Your username has been successfully changed to : %s', $_POST['username']),
+              );
+              
+            pwg_mail(
+              $_POST['mail_address'],
+              array(
+                'subject' => '['.$conf['gallery_title'].'] '.l10n('Username modification'),
+                'content' => l10n_args($keyargs_content),
+                'content_format' => 'text/plain',
+                )
+              );
+              
+            switch_lang_back();
+          }
+        }
+      }
+      
+      mass_updates(USERS_TABLE,
+                   array(
+                    'primary' => array($conf['user_fields']['id']),
+                    'update' => $fields
+                    ),
+                   array($data));
+    }
+
+    if ($conf['allow_user_customization'] or defined('IN_ADMIN'))
+    {
+      // update user "additional" informations (specific to Piwigo)
+      $fields = array(
+        'nb_image_page', 'language',
+        'expand', 'show_nb_hits', 'recent_period', 'theme'
+        );
+        
+      if ($conf['activate_comments'])
+      {
+        $fields[] = 'show_nb_comments';
+      }
+
+      $data = array();
+      $data['user_id'] = $userdata['id'];
+
+      foreach ($fields as $field)
+      {
+        if (isset($_POST[$field]))
+        {
+          $data[$field] = $_POST[$field];
+        }
+      }
+      mass_updates(USER_INFOS_TABLE,
+                   array('primary' => array('user_id'), 'update' => $fields),
+                   array($data));
+    }
+    trigger_action( 'save_profile_from_post', $userdata['id'] );
+
+    if (!empty($_POST['redirect']))
+    {
+      redirect($_POST['redirect']);
+    }
+  }
+  return true;
+}
+
+
+function load_profile_in_template($url_action, $url_redirect, $userdata)
+{
+  global $template, $conf;
+
+  $template->set_filename('profile_content', 'profile_content.tpl');
+
+  $template->assign('radio_options',
+    array(
+      'true' => l10n('Yes'),
+      'false' => l10n('No')));
+
+  $template->assign(
+    array(
+      'USERNAME'=>stripslashes($userdata['username']),
+      'EMAIL'=>get_email_address_as_display_text(@$userdata['email']),
+      'ALLOW_USER_CUSTOMIZATION'=>$conf['allow_user_customization'],
+      'ACTIVATE_COMMENTS'=>$conf['activate_comments'],
+      'NB_IMAGE_PAGE'=>$userdata['nb_image_page'],
+      'RECENT_PERIOD'=>$userdata['recent_period'],
+      'EXPAND' =>$userdata['expand'] ? 'true' : 'false',
+      'NB_COMMENTS'=>$userdata['show_nb_comments'] ? 'true' : 'false',
+      'NB_HITS'=>$userdata['show_nb_hits'] ? 'true' : 'false',
+      'REDIRECT' => $url_redirect,
+      'F_ACTION'=>$url_action,
+      ));
+
+  $template->assign('template_selection', $userdata['theme']);
+  $template->assign('template_options', get_pwg_themes());
+
+  foreach (get_languages() as $language_code => $language_name)
+  {
+    if (isset($_POST['submit']) or $userdata['language'] == $language_code)
+    {
+      $template->assign('language_selection', $language_code);
+    }
+    $language_options[$language_code] = $language_name;
+  }
+
+  $template->assign('language_options', $language_options);
+
+  $special_user = in_array($userdata['id'], array($conf['guest_id'], $conf['default_user_id']));
+  $template->assign('SPECIAL_USER', $special_user);
+  $template->assign('IN_ADMIN', defined('IN_ADMIN'));
+
+  // allow plugins to add their own form data to content
+  trigger_action( 'load_profile_in_template', $userdata );
+
+  $template->assign('PWG_TOKEN', get_pwg_token());
+  $template->assign_var_from_handle('PROFILE_CONTENT', 'profile_content');
+}
+?>
Index: /tags/2.6.0RC1/qsearch.php
===================================================================
--- /tags/2.6.0RC1/qsearch.php	(revision 25596)
+++ /tags/2.6.0RC1/qsearch.php	(revision 25596)
@@ -0,0 +1,74 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+if (empty($_GET['q']))
+{
+  redirect( make_index_url() );
+}
+
+$search = array();
+$search['q']=$_GET['q'];
+
+$query = '
+SElECT id FROM '.SEARCH_TABLE.'
+  WHERE rules = \''.addslashes(serialize($search)).'\'
+;';
+$search_id = array_from_query( $query, 'id');
+if ( !empty($search_id) )
+{
+  $search_id = $search_id[0];
+  $query = '
+UPDATE '.SEARCH_TABLE.'
+  SET last_seen=NOW()
+  WHERE id='.$search_id;
+  pwg_query($query);
+}
+else
+{
+  $query ='
+INSERT INTO '.SEARCH_TABLE.'
+  (rules, last_seen)
+  VALUES
+  (\''.addslashes(serialize($search)).'\', NOW() )
+;';
+  pwg_query($query);
+  $search_id = pwg_db_insert_id(SEARCH_TABLE);
+}
+
+redirect(
+  make_index_url(
+    array(
+      'section' => 'search',
+      'search'  => $search_id,
+      )
+    )
+  );
+?>
Index: /tags/2.6.0RC1/random.php
===================================================================
--- /tags/2.6.0RC1/random.php	(revision 25596)
+++ /tags/2.6.0RC1/random.php	(revision 25596)
@@ -0,0 +1,63 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                          define and include                           |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+// +-----------------------------------------------------------------------+
+// |                     generate random element list                      |
+// +-----------------------------------------------------------------------+
+
+$query = '
+SELECT id
+  FROM '.IMAGES_TABLE.'
+    INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'category_id',
+        'visible_categories' => 'category_id',
+        'visible_images' => 'id'
+      ),
+    'WHERE'
+  ).'
+  ORDER BY '.DB_RANDOM_FUNCTION.'()
+  LIMIT '.min(50, $conf['top_number'],$user['nb_image_page']).'
+;';
+
+// +-----------------------------------------------------------------------+
+// |                                redirect                               |
+// +-----------------------------------------------------------------------+
+
+redirect(make_index_url(array('list' => array_from_query($query, 'id'))));
+?>
Index: /tags/2.6.0RC1/register.php
===================================================================
--- /tags/2.6.0RC1/register.php	(revision 25596)
+++ /tags/2.6.0RC1/register.php	(revision 25596)
@@ -0,0 +1,124 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_FREE);
+
+//----------------------------------------------------------- user registration
+
+if (!$conf['allow_user_registration'])
+{
+  page_forbidden('User registration closed');
+}
+
+trigger_action('loc_begin_register');
+
+if (isset($_POST['submit']))
+{
+  if (!verify_ephemeral_key(@$_POST['key']))
+  {
+		set_status_header(403);
+    $page['errors'][] = l10n('Invalid/expired form key');
+  }
+
+  if(empty($_POST['password']))
+  {
+    $page['errors'][] = l10n('Password is missing. Please enter the password.');
+  }
+  else if(empty($_POST['password_conf']))
+  {
+    $page['errors'][] = l10n('Password confirmation is missing. Please confirm the chosen password.');
+  }
+  else if ($_POST['password'] != $_POST['password_conf'])
+  {
+    $page['errors'][] = l10n('The passwords do not match');
+  }
+
+  register_user(
+    $_POST['login'],
+    $_POST['password'],
+    $_POST['mail_address'],
+    true,
+    $page['errors'],
+    isset($_POST['send_password_by_mail'])
+    );
+
+  if (count($page['errors']) == 0)
+  {
+    // email notification
+    if (isset($_POST['send_password_by_mail']) and email_check_format($_POST['mail_address']))
+    {
+      $_SESSION['page_infos'][] = l10n('Successfully registered, you will soon receive an email with your connection settings. Welcome!');
+    }
+    
+    // log user and redirect
+    $user_id = get_userid($_POST['login']);
+    log_user($user_id, false);
+    redirect(make_index_url());
+  }
+	$registration_post_key = get_ephemeral_key(2);
+}
+else
+{
+	$registration_post_key = get_ephemeral_key(6);
+}
+
+$login = !empty($_POST['login'])?htmlspecialchars(stripslashes($_POST['login'])):'';
+$email = !empty($_POST['mail_address'])?htmlspecialchars(stripslashes($_POST['mail_address'])):'';
+
+//----------------------------------------------------- template initialization
+//
+// Start output of page
+//
+$title= l10n('Registration');
+$page['body_id'] = 'theRegisterPage';
+
+$template->set_filenames( array('register'=>'register.tpl') );
+$template->assign(array(
+  'U_HOME' => make_index_url(),
+	'F_KEY' => $registration_post_key,
+  'F_ACTION' => 'register.php',
+  'F_LOGIN' => $login,
+  'F_EMAIL' => $email,
+  'obligatory_user_mail_address' => $conf['obligatory_user_mail_address'],
+  ));
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theRegisterPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_register');
+flush_page_messages();
+$template->parse('register');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/search.php
===================================================================
--- /tags/2.6.0RC1/search.php	(revision 25596)
+++ /tags/2.6.0RC1/search.php	(revision 25596)
@@ -0,0 +1,240 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//--------------------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_GUEST);
+
+trigger_action('loc_begin_search');
+
+//------------------------------------------------------------------ form check
+$search = array();
+if (isset($_POST['submit']))
+{
+  foreach ($_POST as $post_key => $post_value)
+  {
+    if (!is_array($post_value))
+    {
+      $_POST[$post_key] = pwg_db_real_escape_string($post_value);
+    }
+  }  
+  
+  if (isset($_POST['search_allwords'])
+      and !preg_match('/^\s*$/', $_POST['search_allwords']))
+  {
+    $drop_char_match = array(
+      '-','^','$',';','#','&','(',')','<','>','`','\'','"','|',',','@','_',
+      '?','%','~','.','[',']','{','}',':','\\','/','=','\'','!','*');
+    $drop_char_replace = array(
+      ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','','',' ',' ',' ',' ','',' ',
+      ' ',' ',' ',' ',' ',' ',' ',' ','' ,' ',' ',' ',' ',' ');
+
+    // Split words
+    $search['fields']['allwords'] = array(
+      'words' => array_unique(
+        preg_split(
+          '/\s+/',
+          str_replace(
+            $drop_char_match,
+            $drop_char_replace,
+            $_POST['search_allwords']
+            )
+          )
+        ),
+      'mode' => $_POST['mode'],
+      );
+  }
+
+  if (isset($_POST['tags']))
+  {
+    check_input_parameter('tags', $_POST, true, PATTERN_ID);
+    
+    $search['fields']['tags'] = array(
+      'words' => $_POST['tags'],
+      'mode'  => $_POST['tag_mode'],
+      );
+  }
+
+  if ($_POST['search_author'])
+  {
+    $search['fields']['author'] = array(
+      'words' => preg_split(
+        '/\s+/',
+        $_POST['search_author']
+        ),
+      'mode' => 'OR',
+      );
+  }
+
+  if (isset($_POST['cat']))
+  {
+    check_input_parameter('cat', $_POST, true, PATTERN_ID);
+    
+    $search['fields']['cat'] = array(
+      'words'   => $_POST['cat'],
+      'sub_inc' => ($_POST['subcats-included'] == 1) ? true : false,
+      );
+  }
+
+  // dates
+  $type_date = $_POST['date_type'];
+
+  if (!empty($_POST['start_year']))
+  {
+    $search['fields'][$type_date.'-after'] = array(
+      'date' => sprintf(
+        '%d-%02d-%02d',
+        $_POST['start_year'],
+        $_POST['start_month'] != 0 ? $_POST['start_month'] : '01',
+        $_POST['start_day']   != 0 ? $_POST['start_day']   : '01'
+        ),
+      'inc' => true,
+      );
+  }
+
+  if (!empty($_POST['end_year']))
+  {
+    $search['fields'][$type_date.'-before'] = array(
+      'date' => sprintf(
+        '%d-%02d-%02d',
+        $_POST['end_year'],
+        $_POST['end_month'] != 0 ? $_POST['end_month'] : '12',
+        $_POST['end_day']   != 0 ? $_POST['end_day']   : '31'
+      ),
+      'inc' => true,
+      );
+  }
+
+  if (!empty($search))
+  {
+    // default search mode : each clause must be respected
+    $search['mode'] = 'AND';
+
+    // register search rules in database, then they will be available on
+    // thumbnails page and picture page.
+    $query ='
+INSERT INTO '.SEARCH_TABLE.'
+  (rules, last_seen)
+  VALUES
+  (\''.serialize($search).'\', NOW())
+;';
+    pwg_query($query);
+
+    $search_id = pwg_db_insert_id(SEARCH_TABLE);
+  }
+  else
+  {
+    $page['errors'][] = l10n('Empty query. No criteria has been entered.');
+  }
+}
+//----------------------------------------------------------------- redirection
+if (isset($_POST['submit']) and count($page['errors']) == 0)
+{
+  redirect(
+    make_index_url(
+      array(
+        'section' => 'search',
+        'search'  => $search_id,
+        )
+      )
+    );
+}
+//----------------------------------------------------- template initialization
+
+//
+// Start output of page
+//
+$title= l10n('Search');
+$page['body_id'] = 'theSearchPage';
+
+$template->set_filename('search' ,'search.tpl' );
+
+$month_list = $lang['month'];
+$month_list[0]='------------';
+ksort($month_list);
+
+$template->assign(
+  array(
+    'F_SEARCH_ACTION' => 'search.php',
+    'U_HELP' => PHPWG_ROOT_PATH.'popuphelp.php?page=search',
+
+    'month_list' => $month_list,
+    'START_DAY_SELECTED' => @$_POST['start_day'],
+    'START_MONTH_SELECTED' => @$_POST['start_month'],
+    'END_DAY_SELECTED' => @$_POST['end_day'],
+    'END_MONTH_SELECTED' => @$_POST['end_month'],
+    )
+  );
+
+$available_tags = get_available_tags();
+
+if (count($available_tags) > 0)
+{
+  usort( $available_tags, 'tag_alpha_compare');
+
+  $template->assign(
+    'TAG_SELECTION',
+    get_html_tag_selection(
+        $available_tags,
+        'tags',
+        isset($_POST['tags']) ? $_POST['tags'] : array()
+        )
+    );
+}
+
+//------------------------------------------------------------- categories form
+$query = '
+SELECT id,name,global_rank,uppercats
+  FROM '.CATEGORIES_TABLE.'
+'.get_sql_condition_FandF
+  (
+    array
+      (
+        'forbidden_categories' => 'id',
+        'visible_categories' => 'id'
+      ),
+    'WHERE'
+  ).'
+;';
+display_select_cat_wrapper($query, array(), 'category_options', false);
+
+
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theSearchPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+//------------------------------------------------------------ html code display
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_search');
+flush_page_messages();
+$template->pparse('search');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/search_rules.php
===================================================================
--- /tags/2.6.0RC1/search_rules.php	(revision 25596)
+++ /tags/2.6.0RC1/search_rules.php	(revision 25596)
@@ -0,0 +1,243 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+/**
+ * returns language value 'included' or 'excluded' depending on boolean
+ * value. This function is useful only to make duplicate code shorter
+ *
+ * @param bool is_included
+ * @return string
+ */
+function inc_exc_str($is_included)
+{
+  return $is_included ? l10n('included') : l10n('excluded');
+}
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+check_status(ACCESS_FREE);
+include_once( PHPWG_ROOT_PATH.'include/functions_search.inc.php' );
+
+$page['body_id'] = 'thePopuphelpPage';
+$title = l10n('Piwigo Help');
+$page['page_banner'] = '';
+$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1);
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+$template->set_filenames(array('search_rules' => 'search_rules.tpl'));
+
+// +-----------------------------------------------------------------------+
+// |                        Textual rules creation                         |
+// +-----------------------------------------------------------------------+
+
+// Rules are stored in database, serialized in an array. This array must be
+// transformed into a list of textual rules.
+
+$search = get_search_array($_GET['search_id']);
+
+if (isset($search['q']))
+{
+  $template->append( 'search_words', $search['q'] );
+}
+else
+{
+  $template->assign(
+    array(
+      'INTRODUCTION'
+        => 'OR' == $search['mode']
+        ? l10n('At least one listed rule must be satisfied.')
+        : l10n('Each listed rule must be satisfied.'),
+      )
+    );
+}
+
+if (isset($search['fields']['allwords']))
+{
+  $template->append(
+      'search_words',
+      l10n(
+        'searched words : %s',
+        join(', ', $search['fields']['allwords']['words'])
+        )
+      );
+}
+
+if (isset($search['fields']['tags']))
+{
+  $template->assign('SEARCH_TAGS_MODE', $search['fields']['tags']['mode']);
+  
+  $query = '
+SELECT name
+  FROM '.TAGS_TABLE.'
+  WHERE id IN ('.implode(',', $search['fields']['tags']['words']).')
+;';
+  $template->assign(
+      'search_tags',
+      array_from_query($query, 'name')
+    );
+}
+
+if (isset($search['fields']['author']))
+{
+  $template->append(
+      'search_words',
+      l10n(
+        'author(s) : %s',
+        join(', ', $search['fields']['author']['words'])
+        )
+      );
+}
+
+if (isset($search['fields']['cat']))
+{
+  if ($search['fields']['cat']['sub_inc'])
+  {
+    // searching all the categories id of sub-categories
+    $cat_ids = get_subcat_ids($search['fields']['cat']['words']);
+  }
+  else
+  {
+    $cat_ids = $search['fields']['cat']['words'];
+  }
+
+  $query = '
+SELECT id, uppercats, global_rank
+  FROM '.CATEGORIES_TABLE.'
+  WHERE id IN ('.
+    implode(',', $cat_ids).
+    ')
+;';
+  $result = pwg_query($query);
+
+  $categories = array();
+  if (!empty($result))
+  {
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $categories[] = $row;
+    }
+  }
+  usort($categories, 'global_rank_compare');
+
+  foreach ($categories as $category)
+  {
+    $template->append(
+      'search_categories',
+      get_cat_display_name_cache(
+          $category['uppercats'],
+          null                      // no url on category names
+          )
+      );
+  }
+}
+
+foreach (array('date_available', 'date_creation') as $datefield)
+{
+  if ('date_available' == $datefield)
+  {
+    $lang_items = array(
+      'date'   => l10n('posted on %s'),
+      'period' => l10n('posted between %s (%s) and %s (%s)'),
+      'after'  => l10n('posted after %s (%s)'),
+      'before' => l10n('posted before %s (%s)'),
+      );
+  }
+  elseif ('date_creation' == $datefield)
+  {
+    $lang_items = array(
+      'date'   => l10n('created on %s'),
+      'period' => l10n('created between %s (%s) and %s (%s)'),
+      'after'  => l10n('created after %s (%s)'),
+      'before' => l10n('created before %s (%s)'),
+      );
+  }
+
+  $keys = array(
+    'date'   => $datefield,
+    'after'  => $datefield.'-after',
+    'before' => $datefield.'-before',
+    );
+
+  if (isset($search['fields'][ $keys['date'] ]))
+  {
+    $template->assign(
+      strtoupper($datefield),
+      sprintf(
+          $lang_items['date'],
+          format_date($search['fields'][ $keys['date'] ])
+          )
+      );
+  }
+  elseif (isset($search['fields'][ $keys['before'] ])
+          and isset($search['fields'][ $keys['after'] ]))
+  {
+    $template->assign(
+      strtoupper($datefield),
+      sprintf(
+          $lang_items['period'],
+
+          format_date($search['fields'][ $keys['after'] ]['date']),
+          inc_exc_str($search['fields'][ $keys['after'] ]['inc']),
+
+          format_date($search['fields'][ $keys['before'] ]['date']),
+          inc_exc_str($search['fields'][ $keys['before'] ]['inc'])
+          )
+      );
+  }
+  elseif (isset($search['fields'][ $keys['before'] ]))
+  {
+    $template->assign(
+      strtoupper($datefield),
+      sprintf(
+          $lang_items['before'],
+
+          format_date($search['fields'][ $keys['before'] ]['date']),
+          inc_exc_str($search['fields'][ $keys['before'] ]['inc'])
+          )
+      );
+  }
+  elseif (isset($search['fields'][ $keys['after'] ]))
+  {
+    $template->assign(
+      strtoupper($datefield),
+      sprintf(
+          $lang_items['after'],
+
+          format_date($search['fields'][ $keys['after'] ]['date']),
+          inc_exc_str($search['fields'][ $keys['after'] ]['inc'])
+          )
+      );
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                           html code display                           |
+// +-----------------------------------------------------------------------+
+
+$template->pparse('search_rules');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/tags.php
===================================================================
--- /tags/2.6.0RC1/tags.php	(revision 25596)
+++ /tags/2.6.0RC1/tags.php	(revision 25596)
@@ -0,0 +1,202 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// +-----------------------------------------------------------------------+
+// |                             functions                                 |
+// +-----------------------------------------------------------------------+
+
+function counter_compare($a, $b)
+{
+  if ($a['counter'] == $b['counter'])
+  {
+    return id_compare($a, $b);
+  }
+
+  return ($a['counter'] < $b['counter']) ? +1 : -1;
+}
+
+function id_compare($a, $b)
+{
+  return ($a['id'] < $b['id']) ? -1 : 1;
+}
+
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH','./');
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+
+check_status(ACCESS_GUEST);
+
+trigger_action('loc_begin_tags');
+
+// +-----------------------------------------------------------------------+
+// |                       page header and options                         |
+// +-----------------------------------------------------------------------+
+
+$title= l10n('Tags');
+$page['body_id'] = 'theTagsPage';
+
+$template->set_filenames(array('tags'=>'tags.tpl'));
+
+$page['display_mode'] = $conf['tags_default_display_mode'];
+if (isset($_GET['display_mode']))
+{
+  if (in_array($_GET['display_mode'], array('cloud', 'letters')))
+  {
+    $page['display_mode'] = $_GET['display_mode'];
+  }
+}
+
+foreach (array('cloud', 'letters') as $mode)
+{
+  $template->assign(
+    'U_'.strtoupper($mode),
+    get_root_url().'tags.php'. ($conf['tags_default_display_mode']==$mode ? '' : '?display_mode='.$mode)
+    );
+}
+
+$template->assign( 'display_mode', $page['display_mode'] );
+
+// find all tags available for the current user
+$tags = get_available_tags();
+
+// +-----------------------------------------------------------------------+
+// |                       letter groups construction                      |
+// +-----------------------------------------------------------------------+
+
+if ($page['display_mode'] == 'letters') {
+  // we want tags diplayed in alphabetic order
+  usort($tags, 'tag_alpha_compare');
+
+  $current_letter = null;
+  $nb_tags = count($tags);
+  $current_column = 1;
+  $current_tag_idx = 0;
+
+  $letter = array(
+    'tags' => array()
+    );
+
+  foreach ($tags as $tag)
+  {
+    $tag_letter = mb_strtoupper(mb_substr(transliterate($tag['name']), 0, 1, PWG_CHARSET), PWG_CHARSET);
+
+    if ($current_tag_idx==0) {
+      $current_letter = $tag_letter;
+      $letter['TITLE'] = $tag_letter;
+    }
+
+    //lettre precedente differente de la lettre suivante
+    if ($tag_letter !== $current_letter)
+    {
+      if ($current_column<$conf['tag_letters_column_number']
+          and $current_tag_idx > $current_column*$nb_tags/$conf['tag_letters_column_number'] )
+      {
+        $letter['CHANGE_COLUMN'] = true;
+        $current_column++;
+      }
+
+      $letter['TITLE'] = $current_letter;
+
+      $template->append(
+        'letters',
+        $letter
+        );
+
+      $current_letter = $tag_letter;
+      $letter = array(
+        'tags' => array()
+        );
+    }
+
+    $letter['tags'][] = array_merge(
+      $tag,
+      array(
+        'URL' => make_index_url(array('tags' => array($tag))),
+        )
+      );
+
+    $current_tag_idx++;
+  }
+
+  // flush last letter
+  if (count($letter['tags']) > 0)
+  {
+    unset($letter['CHANGE_COLUMN']);
+    $letter['TITLE'] = $current_letter;
+    $template->append(
+      'letters',
+      $letter
+      );
+  }
+}
+else
+{
+  // +-----------------------------------------------------------------------+
+  // |                        tag cloud construction                         |
+  // +-----------------------------------------------------------------------+
+
+  // we want only the first most represented tags, so we sort them by counter
+  // and take the first tags
+  usort($tags, 'counter_compare');
+  $tags = array_slice($tags, 0, $conf['full_tag_cloud_items_number']);
+
+  // depending on its counter and the other tags counter, each tag has a level
+  $tags = add_level_to_tags($tags);
+
+  // we want tags diplayed in alphabetic order
+  usort($tags, 'tag_alpha_compare');
+
+  // display sorted tags
+  foreach ($tags as $tag)
+  {
+    $template->append(
+      'tags',
+      array_merge(
+        $tag,
+        array(
+          'URL' => make_index_url(
+            array(
+              'tags' => array($tag),
+              )
+            ),
+          )
+        )
+      );
+  }
+}
+// include menubar
+$themeconf = $template->get_template_vars('themeconf');
+if (!isset($themeconf['hide_menu_on']) OR !in_array('theTagsPage', $themeconf['hide_menu_on']))
+{
+  include( PHPWG_ROOT_PATH.'include/menubar.inc.php');
+}
+
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+trigger_action('loc_end_tags');
+flush_page_messages();
+$template->pparse('tags');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /tags/2.6.0RC1/template-extension/distributed/samples/my-picture.tpl
===================================================================
--- /tags/2.6.0RC1/template-extension/distributed/samples/my-picture.tpl	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/distributed/samples/my-picture.tpl	(revision 25596)
@@ -0,0 +1,122 @@
+
+{if isset($errors)}
+<div class="errors">
+  <ul>
+    {foreach from=$errors item=error}
+    <li>{$error}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+{if isset($infos)}
+<div class="infos">
+  <ul>
+    {foreach from=$infos item=info}
+    <li>{$info}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+<div id="imageHeaderBar">
+  <div class="browsePath">
+    <a href="{$U_HOME}" rel="Home">{'Home'|@translate}</a>
+    {if !$IS_HOME}{$LEVEL_SEPARATOR}{$SECTION_TITLE}{/if}
+    {$LEVEL_SEPARATOR}{$current.TITLE}
+  </div>
+  <div class="imageNumber">{$PHOTO}</div>
+  <h2>{$current.TITLE}</h2>
+</div>
+
+{if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if}
+<div id="imageToolBar">
+	<div class="actionButtons">
+{if isset($U_SLIDESHOW_START)}
+		<a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-slideshow">&nbsp;</span><span class="pwg-button-text">{'slideshow'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_SLIDESHOW_STOP)}
+		<a href="{$U_SLIDESHOW_STOP}" title="{'stop the slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-slideshow">&nbsp;</span><span class="pwg-button-text">{'stop the slideshow'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_METADATA)}
+		<a href="{$U_METADATA}" title="{'Show file metadata'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-camera-info">&nbsp;</span><span class="pwg-button-text">{'Show file metadata'|@translate}</span>
+		</a>
+{/if}
+{if isset($current.U_DOWNLOAD)}
+		<a href="{$current.U_DOWNLOAD}" title="{'Download this file'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-save">&nbsp;</span><span class="pwg-button-text">{'Download'|@translate}</span>
+		</a>
+{/if}
+{if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
+{if isset($favorite)}
+		<a href="{$favorite.U_FAVORITE}" title="{if $favorite.IS_FAVORITE}{'delete this photo from your favorites'|@translate}{else}{'add this photo to your favorites'|@translate}{/if}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-favorite-{if $favorite.IS_FAVORITE}del{else}add{/if}">&nbsp;</span><span class="pwg-button-text">{'Favorites'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_SET_AS_REPRESENTATIVE)}
+		<a href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as category representative'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-representative">&nbsp;</span><span class="pwg-button-text">{'representative'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_ADMIN)}
+		<a href="{$U_ADMIN}" title="{'Modify information'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-edit">&nbsp;</span><span class="pwg-button-text">{'Edit'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_CADDIE)}{*caddie management BEGIN*}
+<script type="text/javascript">
+{literal}function addToCadie(aElement, rootUrl, id)
+{
+if (aElement.disabled) return;
+aElement.disabled=true;
+var y = new PwgWS(rootUrl);
+
+y.callService(
+	"pwg.caddie.add", {image_id: id} ,
+	{
+		onFailure: function(num, text) { alert(num + " " + text); document.location=aElement.href; },
+		onSuccess: function(result) { aElement.disabled = false; }
+	}
+	);
+}{/literal}
+</script>
+		<a href="{$U_CADDIE}" onclick="addToCadie(this, '{$ROOT_URL|@escape:'javascript'}', {$current.id}); return false;" title="{'Add to caddie'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-caddie-add">&nbsp;</span><span class="pwg-button-text">{'Caddie'|@translate}</span>
+		</a>
+{/if}{*caddie management END*}
+	</div>   
+  {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+</div> <!-- imageToolBar -->
+
+<div id="theImage">
+{$ELEMENT_CONTENT}
+
+{if isset($COMMENT_IMG)}
+<p>{$COMMENT_IMG}</p>
+{/if}
+
+{if isset($U_SLIDESHOW_STOP) }
+<p>
+  [ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
+</p>
+{/if}
+
+</div>
+
+{if isset($previous) }
+<a class="navThumb" id="linkPrev" href="{$previous.U_IMG}" title="{'Previous'|@translate} : {$previous.TITLE}" rel="prev">
+  <img src="{$previous.THUMB_SRC}" alt="{$previous.TITLE}">
+</a>
+{/if}
+{if isset($next) }
+<a class="navThumb" id="linkNext" href="{$next.U_IMG}" title="{'Next'|@translate} : {$next.TITLE}" rel="next">
+  <img src="{$next.THUMB_SRC}" alt="{$next.TITLE}">
+</a>
+{/if}
+
+{if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if}
Index: /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails.tpl
===================================================================
--- /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails.tpl	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails.tpl	(revision 25596)
@@ -0,0 +1,35 @@
+<!-- This is a sample of template extensions -->
+{if !empty($thumbnails)}
+<ul class="thumbnails">
+{foreach from=$thumbnails item=thumbnail}
+	<li>
+	<span class="wrap1">
+		<span class="wrap2">
+		<a href="{$thumbnail.URL}">
+			<img class="thumbnail" src="{$thumbnail.TN_SRC}" alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}">
+		</a>
+		</span>
+		<span class="thumbLegend" style="color:#F36;">
+    &copy; 2008 Piwigo<br>
+		{if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if}
+		{if !empty($thumbnail.ICON_TS)}{$thumbnail.ICON_TS}{/if}
+
+		{if isset($thumbnail.NB_COMMENTS)}
+		<span class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
+		<br>
+		{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
+		</span>
+		{/if}
+
+		{if isset($thumbnail.NB_HITS)}
+		<span class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits">
+		<br>
+		{$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
+		</span>
+		{/if}
+		</span>
+	</span>
+	</li>
+{/foreach}
+</ul>
+{/if}
Index: /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.css
===================================================================
--- /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.css	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.css	(revision 25596)
@@ -0,0 +1,13 @@
+.thumbLegend { padding: 0 6px; color: #666; font-style:italic; font-size: 7px; }
+.fld1 { width: 96px; min-width: 96px; padding: 0; 
+margin: 5px; display: inline;}
+.lap2 { display: block; padding: 4px 15px 10px 15px; border: 0;}
+.fld1:hover { background-color: #000; }
+.fld1 a:hover { border:0; }
+.thumbnail { margin: 2px auto; }
+/* Advanced hacks for IE 7 */
+*+html .thumbnail { display: inline; margin: 0 auto; }
+*+html .lap2 span { position: relative; top: 50%; margin: 0 auto; }
+*+html .lap2 { display: inline; position: relative; top: 0%; }
+*+html .fld1 { width: auto; padding: 6px 0 6px 0; margin-top: 0px;}
+*+html .thumbLegend { font-size: 10px; }
Index: /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.tpl
===================================================================
--- /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.tpl	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/distributed/samples/my-thumbnails2.tpl	(revision 25596)
@@ -0,0 +1,18 @@
+<!-- This is a sample of template extensions -->
+{if !empty($thumbnails)}
+{html_head}<link rel="stylesheet" type="text/css" href="./template-extension/distributed/samples/my-thumbnails2.css">{/html_head}
+<ul class="thumbnails">
+{foreach from=$thumbnails item=thumbnail}
+	<li>
+	<fieldset class="fld1">
+		<legend class="thumbLegend">
+		{if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if}
+		</legend>
+		<a href="{$thumbnail.URL}" class="lap2">
+			<span><img class="thumbnail" src="{$thumbnail.TN_SRC}" alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}"></span>
+		</a>
+  </fieldset>
+	</li>
+{/foreach}
+</ul>
+{/if}
Index: /tags/2.6.0RC1/template-extension/distributed/samples/titling_categories.tpl
===================================================================
--- /tags/2.6.0RC1/template-extension/distributed/samples/titling_categories.tpl	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/distributed/samples/titling_categories.tpl	(revision 25596)
@@ -0,0 +1,50 @@
+{* 
+
+   Copied from mainpage_categories.tpl 
+
+*}
+{if !empty($category_thumbnails)}
+  {html_head}
+<style media="screen,handheld,projection,tv" type="text/css">
+#content ul.thumbnailCategories li {ldelim} width:100%; z-index: 55; position: relative;}
+#Titling h3 {ldelim} margin:11px 0 -13px; padding:0 3px 0 20px; text-align:left; z-index: 99; position: relative;}
+#Titling h3 a {ldelim} background-color: #222; padding: 0 10px; }
+#content ul.thumbnailCategories .unbordered {ldelim} width:49%; float:left; margin:0 0 0 5px; }
+.content div.thumbnailCategory div.description p.dates {ldelim} margin: 0 45px 0 20px; }
+#content .thumbnailCategory div.description .text {ldelim} margin: 0; padding: 0 4px; text-align: justify; }
+p.Nb_images {ldelim} text-align: left; color: #444; }
+/* hacks */
+*+html #Titling h3, * html #Titling h3 {ldelim} font-weight: normal;} /* IE browsers */
+</style>
+  {/html_head}
+  <ul class="thumbnailCategories" id="Titling"> {*                   1st difference: Titling/thumbnail *}
+    {foreach from=$category_thumbnails item=cat}
+    <div class="unbordered"> {*                                                   W3C HTML non conform *}
+    <h3> {*                                               2nd difference: h3 is outside of description *}
+      <a href="{$cat.URL}">{$cat.NAME}</a>{$cat.ICON_TS}
+    </h3>
+    <li>
+      <div class="thumbnailCategory">
+       <div class="illustration">
+          <a href="{$cat.URL}">
+            <img src="{$cat.TN_SRC}" alt="{$cat.ALT}" 
+            title="{'display this album'|@translate}">
+          </a>
+        </div>
+        <div class="description">
+  				{if isset($cat.INFO_DATES) }
+    				<p class="dates">{$cat.INFO_DATES}</p>
+  				{/if}
+          <div class="text">
+          <p class="Nb_images">{$cat.CAPTION_NB_IMAGES}</p>
+    				{if not empty($cat.DESCRIPTION)}
+    				<p>{$cat.DESCRIPTION}</p>
+    				{/if}
+          </div>
+        </div>
+      </div>
+    </li>
+    </div>    
+    {/foreach}
+  </ul>
+{/if}
Index: /tags/2.6.0RC1/template-extension/index.php
===================================================================
--- /tags/2.6.0RC1/template-extension/index.php	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/template-extension/yoga/index.php
===================================================================
--- /tags/2.6.0RC1/template-extension/yoga/index.php	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/yoga/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/template-extension/yoga/local/README
===================================================================
--- /tags/2.6.0RC1/template-extension/yoga/local/README	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/yoga/local/README	(revision 25596)
@@ -0,0 +1,19 @@
+If you want to make some template customization without building a brand new
+template, you should use this directory to store yur customized version of the
+official template files rather than editing them on place.
+Doing this, they won't be lost during the next upgrade.
+
+For example, if you want your own header file just copy 
+"template/yoga/header.tpl" to this directory with whatever, but significant,
+filename you want.
+Then edit "include/page_header.php" and replace the line :
+  $template->set_filenames(array('header'=>'header.tpl'));
+by
+  $template->set_filenames(array('header'=>'../../template-extension/yoga/local/header.tpl'));
+Or whatever new filename you gave instead of header.tpl
+
+In future version of PWG, you probably won't have to edit the php code, but
+a parameter table instead.
+
+Feel free to ask in the forum for further assistance :
+http://piwigo.org/forum
Index: /tags/2.6.0RC1/template-extension/yoga/local/index.php
===================================================================
--- /tags/2.6.0RC1/template-extension/yoga/local/index.php	(revision 25596)
+++ /tags/2.6.0RC1/template-extension/yoga/local/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/Sylvia/icon/index.php
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/icon/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/icon/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/Sylvia/icon/mimetypes/index.php
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/icon/mimetypes/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/icon/mimetypes/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/Sylvia/index.php
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/Sylvia/local_head.tpl
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/local_head.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/local_head.tpl	(revision 25596)
@@ -0,0 +1,3 @@
+<!--[if IE]> 
+	<link rel="stylesheet" href="{$ROOT_URL}themes/Sylvia/theme-ie.css" type="text/css">
+<![endif]-->
Index: /tags/2.6.0RC1/themes/Sylvia/theme-ie.css
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/theme-ie.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/theme-ie.css	(revision 25596)
@@ -0,0 +1,12 @@
+#content .thumbnailCategory .description .text {
+	scrollbar-face-color:#222;
+	scrollbar-shadow-color:#444;
+	scrollbar-highlight-color:#000;
+	scrollbar-darkshadow-color:#333;
+	scrollbar-track-color:#111;
+	scrollbar-arrow-color:#f70;
+}
+
+#debug { word-wrap:break-word; }
+/* IE6... Hacks: */
+/*\*/ * html #menubar #mbIdentification .button { margin-right:25px; } /* */ 
Index: /tags/2.6.0RC1/themes/Sylvia/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/theme.css	(revision 25596)
@@ -0,0 +1,483 @@
+/* thumbnail wrap size */
+.thumbnailCategory .illustration { 
+	min-width:165px !important; /* Usable range 162px-360px , optimal : Thumbnail width + 40px */ 
+}
+ .commentElement .illustration { 
+	min-width:220px !important; /* Usable range 219px-360px , optimal : Thumbnail width + 95px */ 
+}
+
+/**
+ * Menubar
+ */
+#menubar DL { 
+	background:transparent url(images/menuBox_top.gif) no-repeat scroll left top;
+	margin:0 0 5px 40px; 
+	padding:0; 
+	width: 231px; 
+	min-width: 231px; 
+	border: 0; 
+	min-height: 32px; 
+	overflow-x: hidden;
+}
+#menubar DT { 
+	background-color:#111; 
+	border:0; 
+	display:inline; 
+	margin-left:8px; 
+	text-align:left; 
+}
+#menubar DD { 
+	background:transparent url(images/menuBox_bottom.gif) no-repeat scroll left bottom;
+	margin:14px 0 0 0; 
+	padding:0 0 22px; 
+	width: 231px; 
+	min-width: 231px; 
+	border: 0; 
+	overflow-x: hidden;
+}
+#menubar DD P {
+  background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; 
+  padding: 2px 16px 0; 
+  margin: 0;
+}
+#menubar UL, #menubar #mbCategories p, #menubar .illustration  { 
+	background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom;
+	margin:0; 
+}
+#menubar DT A { 
+	font-size: 100%; 
+}
+#menubar UL { 
+	color:#333; 
+	font-size: 16px; 
+	line-height: 15px; 
+}
+#menubar UL SPAN.menuInfoCat { 
+	color:#666;
+}
+#menubar LI { 
+	padding-left: 12px; 
+}
+#menubar LI UL {
+  background: transparent url(images/transparent.gif);
+}
+#menubar A, .menuInfoCat { 
+	font-size: 13px; 
+}
+#menubar form { 
+	background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; 
+	margin:0; 
+}
+#menubar p { 
+	padding: 16px 16px 0; 
+}
+
+.menubarFilter {
+	position: relative; 
+	right: 8px; 
+	top: 16px; 
+}
+
+#menubar #mbIdentification { 
+	background:transparent url(images/menuId_top.gif) no-repeat scroll left top !important;
+}
+#menubar #mbIdentification DD { 
+	background:transparent url(images/menuId_bottom.gif) no-repeat scroll left bottom; 
+}
+#menubar #mbIdentification UL, #menubar #mbIdentification p, #menubar #mbIdentification .illustration  { 
+	background:transparent url(images/menuId_sides.gif) repeat-y scroll left bottom; 
+}
+#menubar #mbIdentification form { 
+	background:transparent url(images/menuId_sides.gif) repeat-y scroll left bottom; 
+}
+#menubar #mbIdentification form  p { 
+	background:transparent none repeat-y scroll left bottom; 
+}
+#menubar #mbIdentification p { 
+	padding: 2px 16px 0; 
+	margin: 0;
+}
+#menubar #mbIdentification fieldset div input[type="text"] { 
+	margin: 0 0 3px; 
+	width: 174px; 
+	display: inline; 
+}
+#menubar #mbIdentification .button { 
+	height:24px; 
+	width:24px; 
+	right:0px; 
+	top:-40px; 
+}
+#menubar #mbIdentification fieldset { 
+	border:0; 
+	margin:0 24px 0 23px; 
+}
+#menubar #mbIdentification legend { 
+	display: none; 
+}
+#mbIdentification p, .totalImages { 
+	color:#666; 
+}
+
+#menubar #menuTagCloud { 
+	background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom;
+	margin:0; 
+	padding: 0 12px; 
+}
+
+#qsearchInput:focus, input:focus, select:focus, textarea:focus, input.focus, form .focus { 
+	background-color:#444;
+	color:#999; 
+}
+#qsearchInput { 
+	color:#999;
+}
+
+
+/**
+ * Content
+ */
+.content { 
+	background:#222 url(images/fillet.gif) repeat-x scroll left top; 
+	min-height:466px; 
+	border: 1px solid #000; 
+	border-top: 0; 
+	margin:21px 7px 0 290px !important; 
+	padding-top:7px; 
+}
+
+#the_page { 
+	background:transparent url(images/top-left-bg.jpg) no-repeat scroll left top;
+	left:0; 
+	margin:0; 
+	padding:0; 
+	position:absolute; 
+	top:0; 
+	z-index:0; 
+	width: 100%; 
+	min-width: 100%; 
+}
+
+.content h2 { 
+	padding:0px 10px 15px 15px; 
+	border:0;
+}
+.content .navigationBar {
+	color:#666;
+}
+/* contentWithMenu */
+.contentWithMenu {
+    margin-left: 290px;
+}
+.contentWithMenu #comments {
+  padding: 0 0 5px 0;
+}
+.contentWithMenu #imageToolBar {
+  padding-left: 0;
+}
+.contentWithMenu #imageHeaderBar .browsePath {
+    margin-left: 0;
+}
+
+/* Category thumbnails on main page */
+.thumbnailCategories li {
+	background:#222 url(images/cat_bottom-right.gif) no-repeat scroll right bottom; 
+	width:49%; 
+	margin: 0; 
+	padding:0; 
+}
+.thumbnailCategory { 
+	background:transparent url(images/cat_bottom-left.gif) no-repeat scroll left bottom; 
+	padding: 0 0 2px; 
+	margin:0; 
+}
+.thumbnailCategory .illustration { 
+	background:transparent url(images/cat_top-left.gif) no-repeat scroll left top; 
+	padding: 0 5px 0 10px; 
+	margin: 0 !important;
+  text-align: center;
+}
+.thumbnailCategory .illustration a { 
+	display: block; 
+  margin: 0 auto;
+  padding: 20px 4px 0;
+  border:0;
+}
+.thumbnailCategory .description { 
+	background:transparent url(images/cat_top-right.gif) no-repeat scroll right top;
+	margin: 0; 
+	padding:15px 10px 3px 0; 
+	overflow: hidden !important; 
+  height:158px;
+}
+.thumbnailCategory .description .text { 
+	display:block; 
+	margin:10px 2px 0 0;
+	overflow: auto; 
+	overflow-x:hidden; 
+	padding:0 0 5px; 
+}
+.thumbnailCategory .description p.dates { 
+	margin: 0 15px 0 15px; 
+	text-align: right; 
+}
+.thumbnailCategory .description H3 { 
+	display: block; 
+}
+.thumbnailCategories li:hover { 
+	background-color:#111; 
+}
+
+/* header */
+#theHeader { 
+	min-height:110px;
+	height:110px; 
+}
+
+.header_msgs { 
+	background:transparent url(images/header_msgs-bg.gif) repeat scroll left top;
+	border:0; 
+	color:#333; 
+	font-size:24px; 
+	left:0; 
+	margin:0; 
+	padding:10px 0 6px 0; 
+	text-align:center; 
+	top:0; 
+	width:100%; 
+	z-index:99; 
+}
+.header_notes {
+	background:transparent url(images/header_msgs-bg.gif) repeat scroll left top;
+	border:0 none;
+	color:#333;
+	font-size:16px;
+	margin:0;
+	padding:0;
+	position:absolute;
+	top:0;
+	width:100%;
+	z-index:99;
+}
+.infos { 
+	color:#f70; 
+	border:0; 
+	background:transparent url(icon/infos.png) no-repeat center right;
+	margin-left:40px;
+	text-align:left; 
+}
+.errors { 
+	color:#f33; 
+	border:0; 
+	background:transparent url(icon/errors.png) no-repeat center right;
+	margin-left:40px;
+	text-align:left; 
+	font-weight:bold; 
+}
+.infos li, .errors li { 
+	list-style-type:none; 
+}
+
+/* User comments */
+#comments {
+	margin: 0 10px 5px 10px;
+}
+.content .commentElement {
+	border: 1px solid #666; 
+}
+.content .commentElement.odd { 
+	background-color: #222; 
+}
+.content .commentElement.even { 
+	background-color: #111; 
+}
+.content .commentElement .illustration { 
+	margin: 2px;
+  text-align: center;
+}
+.content .commentElement .description { 
+	padding:15px 10px 3px 0; 
+	overflow-x: hidden !important; 
+}
+
+#comments .commentsList hr {display:none;}
+#comments .filter input[type="submit"] { margin-top:1.8em; }
+
+/* Thumbnails */
+.thumbnails .wrap2 {
+	border: 1px solid #666;	/* thumbnails border color and style */
+	border-radius: 4px 4px;	/* round corners with CSS3 compliant browsers */ 
+}
+.thumbnails .wrap2:hover { 
+	color:#666;
+	background-color:#111; 
+	border:1px solid #ff3363;	/* thumbnails border color when mouse cursor is over it */ 
+}
+.calItem {
+	border:1px solid #666; 
+	margin:0 5px; 
+	padding:2px 5px 0 8px;
+}
+SPAN.calItem, td.calDayCellEmpty, td.calDayCellFull {
+	border:1px solid #666;
+}
+
+
+/**
+ * Picture
+ */
+#imageToolBar { 
+	padding:0 7%; 
+}
+#imageHeaderBar .imageNumber { 
+	margin-right:7%; 
+}
+#imageHeaderBar .browsePath { 
+	margin-left:7%; 
+}
+#imageHeaderBar, #imageToolBar A:hover { 
+	background-color: transparent; 
+}
+#imageHeaderBar H2 { 
+	border: 0; 
+}
+
+#theImage A, .illustration A, A.navThumb, A.navThumb { 
+	border-bottom-width: 0; 
+}
+.rateButtonStarFull, .rateButtonStarEmpty {   	
+	background-image: url('icon/rating-stars.gif'); 
+}
+
+#thePicturePage .commentElement {
+	padding: 15px 2px 6px 12px; 
+	border: 1px solid #666; 
+}
+#thePicturePage .commentsList { 
+	padding-left: 12px; 
+	padding-right: 12px; 
+  overflow: visible;
+  width: auto;
+}
+#thePicturePage .odd { 
+	background-color: #222; 
+}
+
+.pictureContent {
+	margin:0 7px 7px 290px;
+}
+
+#addComment fieldset {
+  color: #f70;
+	border-color: #f70;
+}
+#addComment fieldset  label {
+  color: #666;
+}
+
+
+/**
+ * Default Layout
+ */
+*, *:focus, *:active, input:active, a:active, input:focus, a:focus { 
+	outline: none; 
+}
+BODY { 
+	background:#111 url(images/bottom-left-bg.jpg) no-repeat fixed left bottom;
+	margin:0; 
+	min-height: 100%; 
+	height: 100%; 
+	padding:0; 
+}
+BODY, H1, H3, DT, INPUT.rateButtonSelected, H2, #menubar DT { 
+	color:#666; 
+}
+
+/* forms */
+FIELDSET, INPUT, SELECT, TEXTAREA { 
+	border: 1px solid #666; 
+}
+input[type="text"], input[type="password"], input[type="button"], input[type="submit"], input[type="reset"], input[type="file"] {
+	background-color:#444; 
+	color:#999; 
+} /* stupid Line but needed  due to inpact on other themes and deadline of Piwigo 2.0 */
+input[type="file"] {
+	background-color:#222; 
+	border: 1px solid #666;
+}
+INPUT, select, textarea { 
+	color:#999; 
+	background-color:#444; 
+}
+input[type="radio"], input[type="checkbox"], input[type="button"].rateButtonStarEmpty, input[type="button"].rateButtonStarFull { 
+	background-color: transparent; 
+}
+input[type="button"], input[type="submit"], input[type="reset"] {
+	color:#ff3363; 
+	background-color:#222; 
+	border-color:#ff3363; 
+}
+input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover {
+	color:#999; 
+	border-color:#666; 
+}
+
+/* links */
+A, .rateButton { 
+	color:#f70; 
+	border-width: 0; 
+}
+A:hover, A:active { 
+	color:#f33; 
+	border-bottom: 1px solid #ff3363; 
+	cursor: pointer; 
+}
+a.external { 
+	color:#ff3363; 
+	border:0; 
+	text-decoration: none; 
+}
+a.external:hover { 
+	color:#ff7700; 
+	border:0; 
+}
+a.Piwigo {
+  font-family: verdana, arial, helvetica, sans-serif !important;
+  font-size: 11px; font-weight: normal; letter-spacing: 0;
+  color : #F33; text-decoration: none; border: 0; }
+a.Piwigo:hover {
+  border-bottom: 1px solid #ff3363;
+}
+
+.titrePage img.button[alt="x"] { margin: 0 3px 3px; }
+tr.tagLine, fieldset.tagLetter, legend.tagLetterLegend {
+	border-color: #666;
+}
+#debug { 
+	margin: 15px 15px 5px 248px; 
+	font-size:12px; 
+	clear: both; 
+}
+
+/* sprites */
+.pwg-icon {
+	background-image: url(../default/s26/outline_ff3363.png);
+}
+A:hover .pwg-icon {
+	background-image: url(../default/s26/outline_ff7700.png);
+}
+
+.message {
+  color:white;
+  background-color:#666;
+}
+
+.switchBox {
+    background-color: #222222;
+    border: 1px solid #FF3363;
+    border-radius: 0 15px 0 15px;
+}
+
+.switchBoxTitle {
+  border-color:#666;
+}
Index: /tags/2.6.0RC1/themes/Sylvia/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/Sylvia/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/Sylvia/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,38 @@
+<?php
+/*
+Theme Name: Sylvia
+Version: 2.5.0
+Description: Dark background, flora and pink decorations.
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=368
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+$themeconf = array(
+  'name'         => 'Sylvia',
+  'parent'        => 'default',
+  'icon_dir'      => 'themes/Sylvia/icon',
+  'mime_icon_dir' => 'themes/Sylvia/icon/mimetypes/',
+);
+/************************************ mainpage_categories.tpl ************************************/
+add_event_handler('loc_end_index_category_thumbnails', 'Sylvia_album');
+function Sylvia_album($tpl_thumbnails_var)
+{
+    global $template;
+    $template->set_prefilter('index_category_thumbnails', 'Sylvia_album_prefilter');
+    return $tpl_thumbnails_var;
+}
+function Sylvia_album_prefilter($content, &$smarty)
+{
+  $search = '#\{html_style\}#';
+  $replacement = '{html_style}
+.thumbnailCategory .description .text{ldelim}
+	height: {$derivative_params->max_height()-30}px;
+}';
+  $content = preg_replace($search, $replacement, $content);
+  $search = '#\.thumbnailCategory[\t ]*.description\{ldelim\}[\s]*height:[\t ]*\{\$derivative_params->max_height\(\)\+5#';
+  $replacement = '.thumbnailCategory .description{ldelim}
+	height: {$derivative_params->max_height()+15';
+  $content = preg_replace($search, $replacement, $content);
+  return $content;
+}
+?>
Index: /tags/2.6.0RC1/themes/clear/index.php
===================================================================
--- /tags/2.6.0RC1/themes/clear/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/clear/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/clear/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/clear/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/clear/theme.css	(revision 25596)
@@ -0,0 +1,89 @@
+
+/* text color */
+BODY, H1, H2, DT,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+	color:#696969;	/* dimgray */
+}
+
+/* backgrounds */
+BODY {
+	background-color: #ffffff;	/* white */
+}
+
+H2, #menubar DT, #imageHeaderBar, #imageToolBar A:hover {
+	background-color: #d3d3d3;
+}
+
+#menubar DL, .content, #imageToolBar, .switchBox, .header_notes {
+  background-color: #eeeeee;
+}
+
+/* borders */
+#menubar DL, .content, #imageToolBar, .switchBox {
+  border: 1px solid #d3d3d3;
+}
+
+#theImage IMG {
+  border: 3px solid #d3d3d3;
+}
+
+/*I think this rule is never used*/
+.content UL.thumbnail IMG {
+    border: 1px solid #a0a0a0;
+}
+
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.content .thumbnailCategory,
+.content .commentElement {
+  border: 1px solid gray;
+}
+
+.thumbnails .wrap2 {
+  border: 1px solid #aaaaaa;	/* thumbnails border color and style */
+}
+
+.thumbnails .wrap2:hover,
+.content .thumbnailCategories .thumbnailCategory:hover,
+.content .thumbnailCategories .thumbnailCategory:hover A,
+.content .commentsList .commentElement:hover,
+.content .commentsList .commentElement:hover A {
+  background-color: #faebd7;
+  border-color: yellow;		/* thumbnails border color when mouse cursor is over it */
+  color: black;
+}
+
+/* links */
+A, INPUT.rateButton {
+	color: #005e89;
+	background: transparent;
+	border-bottom: 1px dotted #005e89;
+}
+
+A:hover, INPUT.rateButton:hover {
+    color: #808060;
+}
+
+A.pwg-state-default {
+	border: 0;
+}
+
+A.navThumb, A.navThumb:hover {
+    border-bottom: none;
+}
+
+/*calendar elements*/
+.calItem
+{
+  border: 1px solid silver;
+}
+
+#qsearchInput { color: #005e89; }
+
+.pwg-icon {
+	background-image: url(../default/s26/outline_005e89.png);
+}
+
+A:hover .pwg-icon {
+	background-image: url(../default/s26/outline_808060.png);
+}
+
Index: /tags/2.6.0RC1/themes/clear/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/clear/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/clear/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,14 @@
+<?php
+/*
+Theme Name: clear
+Version: 2.5.0
+Description: White background, soft gray.
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=9
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+$themeconf = array(
+  'name'  => 'clear',
+  'parent' => 'default',
+);
+?>
Index: /tags/2.6.0RC1/themes/dark/images/index.php
===================================================================
--- /tags/2.6.0RC1/themes/dark/images/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/dark/images/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/dark/index.php
===================================================================
--- /tags/2.6.0RC1/themes/dark/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/dark/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/dark/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/dark/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/dark/theme.css	(revision 25596)
@@ -0,0 +1,76 @@
+
+/* text color */
+BODY, H1,
+INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {
+	color:#d0d0d0;
+}
+
+H2, #menubar DT {
+	color: #ffff80;
+	background-image: url(images/tableh1_bg.png);
+}
+
+
+/* backgrounds */
+
+BODY, #imageToolBar A:hover {
+	background-color: #2f2f2f;
+}
+
+#menubar DL, .content, #imageToolBar, #imageHeaderBar, .switchBox, .header_notes {
+	background-color: #505050;
+}
+
+#imageHeaderBar H2 {
+	background-image: none;
+}
+
+#imageHeaderBar {
+	border-top: 1px solid #000;
+}
+
+/* borders */
+#menubar DL, .content, .switchBox {
+	border: 1px solid #000;
+}
+
+#menubar DT, #imageToolBar {
+	border-bottom: 1px solid #000;
+}
+
+FIELDSET, INPUT, SELECT, TEXTAREA,
+.thumbnailCategory ,
+.content .commentElement ,
+.thumbnails .wrap2 {
+	border: 1px solid gray;
+}
+
+
+.thumbnails .wrap2:hover,
+.thumbnailCategory:hover,
+.content  .commentElement:hover{
+	border-color: yellow;	/* thumbnails border color when mouse cursor is over it */
+}
+
+
+/* links */
+A, INPUT.rateButton {
+	color: #fff;
+}
+
+A:hover {
+	color: #ffff80;
+}
+
+.pwg-icon {
+	background-image: url(../default/s26/outline_ffffff.png);
+}
+
+A:hover .pwg-icon {
+	background-image: url(../default/s26/outline_ffff80.png);
+}
+
+.message {
+  color:white;
+  background-color:#666;
+}
Index: /tags/2.6.0RC1/themes/dark/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/dark/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/dark/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,14 @@
+<?php
+/*
+Theme Name: dark
+Version: 2.5.0
+Description: Dark background, grayscale.
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=369
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+$themeconf = array(
+  'name'  => 'dark',
+  'parent' => 'default',
+);
+?>
Index: /tags/2.6.0RC1/themes/default/fix-ie5-ie6.css
===================================================================
--- /tags/2.6.0RC1/themes/default/fix-ie5-ie6.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/fix-ie5-ie6.css	(revision 25596)
@@ -0,0 +1,72 @@
+/* Issues in IE from 5 to 6 only not to be used with IE7 */
+
+#menubar LI.selected A {
+	font-weight: bold;
+}
+
+#menubar LI.selected LI A {
+	font-weight: normal;
+}
+
+/* fix IE with another layout for thumbnails */
+.thumbnails .wrap2 {
+  display: block;
+  position: relative;
+  text-align: left;
+}
+.thumbnails .wrap2 A,
+.thumbnails .wrap2 SPAN {
+  overflow: visible;
+  position: absolute;
+  top: 50%;
+  text-align: center;
+}
+
+.thumbnails .wrap2 IMG {
+  position: relative;
+  top: -50%;
+  /*\*//*/
+    margin-top: -40%;
+  /**/
+}
+
+/* to avoid vanishing objects in IE6 */
+H1, #theHeader {
+  width: 100%;	/* <- useless but seems to make IE6 happy */
+}
+.content {
+  height: 1em;	/* for IE6 it's like min-height */
+}
+
+/* fix category thumbnails on main page */
+.content .thumbnailCategories {
+  width: 99%;	/* buggy IE box model */
+}
+
+
+/* fix quickconnect layout */
+#quickconnect FIELDSET {
+  width: 99%;	/* correct an ugly 1 or 2 px misalignement with IE */
+}
+
+.filter LABEL INPUT,
+.filter LABEL SELECT {
+  display: block;
+  margin: 0.5em 0;
+}
+.filter FIELDSET * LABEL INPUT,
+.filter FIELDSET * LABEL SELECT {
+	display: inline;
+	vertical-align: top;
+	margin: 0 0.5em 0 0;
+}
+
+.pwg-icon {
+	display: block;
+}
+
+.imageInfoTable {display:block; margin: 0 200px;}
+.imageInfo {display:block; line-height:16px;}
+.imageInfo dt  {display:block; text-align:left; font-weight:bold; padding-right:0.5em;}
+.imageInfo dd {display:block; text-align:left; font-weight:normal;}
+#imageInfos dd { margin: 0 0 5px 20px;}
Index: /tags/2.6.0RC1/themes/default/fix-ie7.css
===================================================================
--- /tags/2.6.0RC1/themes/default/fix-ie7.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/fix-ie7.css	(revision 25596)
@@ -0,0 +1,29 @@
+/* fix IE with another layout for thumbnails */
+
+.thumbnails .wrap2 {
+  display: block;
+  position: relative;
+  text-align: left;
+}
+.thumbnails .wrap2 A,
+.thumbnails .wrap2 SPAN {
+  overflow: visible;
+  position: absolute;
+  top: 50%;
+  text-align: center;
+}
+
+.thumbnails .wrap2 IMG {
+  position: relative;
+  top: -50%;
+}
+
+.pwg-icon {
+	display: block;
+}
+
+.imageInfoTable {display:block; margin: 0 200px;}
+.imageInfo {display:block; line-height:16px;}
+.imageInfo dt  {display:block; text-align:left; font-weight:bold; padding-right:0.5em;}
+.imageInfo dd {display:block; text-align:left; font-weight:normal;}
+#imageInfos dd { margin: 0 0 5px 20px;}
Index: /tags/2.6.0RC1/themes/default/fix-khtml.css
===================================================================
--- /tags/2.6.0RC1/themes/default/fix-khtml.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/fix-khtml.css	(revision 25596)
@@ -0,0 +1,17 @@
+/* Issue in Safari/Konqueror only                                                 */
+/* If H2 has a 0 margin-top categoryActions doesn't float right but overwrites H2 */
+.content>.titrePage>H2 {
+    margin: 1px 0 0 0;	/* add an arbitrary margin-top */
+}
+
+.content>.titrePage {
+    position: relative;
+    top: -1px;		/* move the container up by the same amount */
+    margin-bottom: 5px; 
+}
+
+#menubar #menuTagCloud SPAN
+{
+  display: inline-block;/* required for Safari 3.1 - otherwise overflows on the right */
+}
+
Index: /tags/2.6.0RC1/themes/default/icon/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/icon/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/icon/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/icon/mimetypes/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/icon/mimetypes/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/icon/mimetypes/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/iconset.css
===================================================================
--- /tags/2.6.0RC1/themes/default/iconset.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/iconset.css	(revision 25596)
@@ -0,0 +1,72 @@
+.pwg-icon {
+	display: inline-block; /*IE6 does not get this correctly*/
+	text-indent: -9999px; overflow: hidden; background-repeat: no-repeat;
+	width: 26px; height: 26px; background-image: url(s26/outline_808080.png);
+	vertical-align: bottom;
+}
+.pwg-button-text { display:none; }
+
+.pwg-state-disabled .pwg-icon {
+	opacity: .5;
+	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+	filter: alpha(opacity=50);
+}
+
+.pwg-button {
+	display: inline-block;
+	vertical-align: top;
+  cursor:pointer;
+}
+
+.pwg-icon-home {background-position: -26px 0}
+.pwg-icon-camera {background-position: -52px 0}
+.pwg-icon-save {background-position: -78px 0}
+.pwg-icon-cloud {background-position: -104px 0}
+.pwg-icon-letters {background-position: -130px 0}
+.pwg-icon-calendar {background-position: -156px 0}
+.pwg-icon-camera-calendar {background-position: -182px 0}
+
+.pwg-icon-arrow-n {background-position: 0 -26px}
+.pwg-icon-arrow-e {background-position: -26px -26px}
+/*.pwg-icon-arrow-s {background-position: -52px -26px}*/
+.pwg-icon-arrow-w {background-position: -78px -26px}
+/*.pwg-icon-arrowstop-n {background-position: -104px -26px}*/
+.pwg-icon-arrowstop-e {background-position: -130px -26px}
+/*.pwg-icon-arrowstop-s {background-position: -156px -26px}*/
+.pwg-icon-arrowstop-w {background-position: -182px -26px}
+
+.pwg-icon-close {background-position: 0 -52px}
+.pwg-icon-category-edit {background-position: -26px -52px}
+.pwg-icon-sort {background-position: -52px -52px}
+.pwg-icon-sizes {background-position: -78px -52px}
+.pwg-icon-menu {background-position: -130px -52px}
+.pwg-icon-category-view-normal {background-position: -156px -52px}
+.pwg-icon-category-view-flat {background-position: -182px -52px}
+
+.pwg-icon-caddie {background-position: 0 -78px}
+.pwg-icon-caddie-add {background-position: -26px -78px}
+.pwg-icon-caddie-del {background-position: -52px -78px}
+.pwg-icon-favorite {background-position: -78px -78px}
+.pwg-icon-favorite-add {background-position: -104px -78px}
+.pwg-icon-favorite-del {background-position: -130px -78px}
+.pwg-icon-filter {background-position: -156px -78px}
+.pwg-icon-filter-del {background-position: -182px -78px}
+
+.pwg-icon-camera-info {background-position: 0 -104px}
+.pwg-icon-representative {background-position: -26px -104px}
+.pwg-icon-edit {background-position: -52px -104px}
+.pwg-icon-register {background-position: -78px -104px}
+.pwg-icon-lost-password {background-position: -104px -104px}
+
+.pwg-icon-slideshow {background-position: 0 -130px}
+.pwg-icon-play {background-position: -26px -130px}
+.pwg-icon-pause {background-position: -52px -130px}
+.pwg-icon-stop {background-position: -78px -130px}
+.pwg-icon-clock-plus {background-position: -104px -130px}
+.pwg-icon-clock-minus {background-position: -130px -130px}
+.pwg-icon-repeat-play {background-position: -156px -130px}
+.pwg-icon-repeat-stop {background-position: -182px -130px}
+
+.pwg-icon-map {background-position: 0 -156px}
+.pwg-icon-globe {background-position: -26px -156px}
+
Index: /tags/2.6.0RC1/themes/default/images/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/images/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/images/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/js/datepicker.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/datepicker.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/datepicker.js	(revision 25596)
@@ -0,0 +1,188 @@
+// initialize controls
+// buttonImageName: Directory and name of calendar picture
+// day, month, year: selectors of visible date controls
+// linked_date: selector of hidden linked dates control
+// checked_on_change: selector of control to change "checked" attribut
+// min_linked_date: selector of hidden linked date control witch give min value
+// max_linked_date: selector of hidden linked date control witch give max value
+function pwg_common_initialization_datepicker(buttonImageName, day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date)
+{
+  // return formated date with control values
+  function pwg_get_fmt_from_ctrls()
+  {
+    return $(year).val() + "-" + $(month).val() + "-" + $(day).val();
+  }
+
+  // return if linked_date is valid date
+  function is_valid_linked_value(linked_date_name)
+  {
+		var array_date = $(linked_date_name).val().split('-');
+		return (
+			(array_date.length == 3) &&
+			(array_date[0].length) &&
+			(array_date[1].length) && (array_date[1] != "0") &&
+			(array_date[2].length) && (array_date[2] != "0")
+			)
+  }
+  
+  // Action on change date value
+  function pwg_on_date_change()
+  {
+    pwg_check_date();
+    if (checked_on_change != null)
+    {
+			$(checked_on_change).prop("checked", true);
+    }
+  }
+
+  // In order to desable element of list
+  function pwg_disabled_selection()
+  {
+		var array_date = $(linked_date).val().split('-')
+			, y = array_date[0]
+			, m = array_date[1];
+
+    // Init list
+    $(day + " option").removeAttr("disabled");
+    $(month + " option").removeAttr("disabled");
+
+    var daysInMonth = 32 - new Date(y, m - 1, 32).getDate();
+    $(day + " option:gt(" + (daysInMonth) +")").attr("disabled", "disabled");
+
+    if ((min_linked_date != null) && (is_valid_linked_value(min_linked_date) == true))
+    {
+      date_cmp = min_linked_date;
+      op_cmp = "lt";
+    }
+    else if ((max_linked_date != null) && (is_valid_linked_value(max_linked_date) == true))
+    {
+      date_cmp = max_linked_date;
+      op_cmp = "gt";
+    }
+    else
+    {
+      date_cmp = null;
+      op_cmp = null;
+    }
+
+    if (op_cmp != null)
+    {
+      array_date = $(date_cmp).val().split('-');
+      y_cmp = array_date[0];
+      m_cmp = array_date[1];
+      d_cmp = array_date[2];
+      
+      if (y == y_cmp)
+      {
+        $(month + " option:" + op_cmp + "(" + (m_cmp) +")").attr("disabled", "disabled");
+        if (op_cmp ==  "lt")
+        {
+            $(month + " option:eq(" + (0) +")").removeAttr("disabled");
+        }
+
+        if (m == m_cmp)
+        {
+          $(day + " option:" + op_cmp + "(" + (d_cmp) +")").attr("disabled", "disabled");
+          if (op_cmp ==  "lt")
+          {
+            $(day + " option:eq(" + (0) +")").removeAttr("disabled");
+          }
+        }
+      }
+    }
+  }
+
+  // Prevent selection of invalid dates through the select controls 
+  function pwg_check_date()
+  {
+		var last_date = $(linked_date).val()
+			, cancel=false;
+
+    $(linked_date).val(pwg_get_fmt_from_ctrls());
+
+    if ((min_linked_date != null) && (is_valid_linked_value(min_linked_date)))
+    {
+      cancel = ($(min_linked_date).datepicker("getDate") > $(linked_date).datepicker("getDate"));
+    }
+    else if ((max_linked_date != null) && (is_valid_linked_value(max_linked_date)))
+    {
+      cancel = ($(max_linked_date).datepicker("getDate") < $(linked_date).datepicker("getDate"));
+    }
+
+    if (cancel)
+    {
+      var array_date = last_date.split('-');
+      $(year).val(array_date[0]);
+      $(month).val(array_date[1]);
+      $(day).val(array_date[2]);
+      // check again
+      pwg_check_date();
+    }
+  }
+
+  jQuery().ready(function(){
+    // Init hidden value
+    $(linked_date).val(pwg_get_fmt_from_ctrls());
+
+    // Init Datepicker
+    jQuery(linked_date).datepicker({
+      dateFormat:'yy-m-d',
+      beforeShow:
+        // Prepare to show a date picker linked to three select controls 
+        function readLinked(input) { 
+            if (min_linked_date != null)
+            {
+              return {minDate: $(min_linked_date).datepicker("getDate")};
+            }
+            else if (max_linked_date != null)
+            {
+              return {maxDate: $(max_linked_date).datepicker("getDate")};
+            }
+            else
+            {
+              return {};
+            }
+        },
+      onSelect:
+        // Update three select controls to match a date picker selection 
+        function updateLinked(date) {
+            if (date.length == 0)
+            {
+              $(year).val("");
+              $(month).val("0");
+              $(day).val("0");
+            }
+            else
+            {
+              var array_date = date.split('-');
+              $(year).val(array_date[0]);
+              $(month).val(array_date[1]);
+              $(day).val(array_date[2]);
+            }
+            pwg_on_date_change();
+        },
+      showOn: "both",
+      buttonImage: buttonImageName,
+      buttonImageOnly: true,
+      buttonText: ""
+      });
+
+    // Check showed controls
+    jQuery(day + ", " + month + ", " + year).change(
+      function ()
+      {
+        pwg_on_date_change();
+      });
+
+    // Check showed controls
+    jQuery(day + ", " + month + ", " + year).focus(
+      function ()
+      {
+        pwg_disabled_selection();
+      });
+
+    // In order to init linked input
+    pwg_check_date();
+   });
+
+}
Index: /tags/2.6.0RC1/themes/default/js/image.loader.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/image.loader.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/image.loader.js	(revision 25596)
@@ -0,0 +1,84 @@
+
+function ImageLoader(opts) {
+	this.opts = jQuery.extend( {
+			maxRequests: 6,
+			onChanged: jQuery.noop
+		}, opts||{} );
+}
+
+ImageLoader.prototype = {
+	loaded: 0,
+	errors: 0,
+	errorEma: 0,
+
+	pause: false,
+
+	current: [],
+	queue: [],
+	pool: [],
+
+	remaining: function() {
+		return this.current.length + this.queue.length;
+	},
+
+	add: function(urls) {
+		this.queue = this.queue.concat( urls );
+		this._fireChanged("add");
+		this._checkQueue();
+	},
+
+	clear: function() {
+		this.queue.length = 0;
+		while (this.current.length)
+			jQuery( this.current.pop() ).unbind();
+		this.loaded = this.errors = this.errorEma = 0;
+	},
+
+	pause: function(val) {
+		if (val !== undefined)
+		{
+			this.paused = val;
+			this._checkQueue();
+		}
+		return this.paused;
+	},
+
+	_checkQueue: function() {
+		while (!this.paused
+			&& this.queue.length
+			&& this.current.length < this.opts.maxRequests)
+		{
+			this._processOne( this.queue.shift() );
+		}
+	},
+
+	_processOne: function(url) {
+		var img = this.pool.shift() || new Image;
+		this.current.push(img);
+		var that = this;
+		jQuery(img).bind( "load error abort", function(e) {
+		//img.onload = function(e) {
+			jQuery(img).unbind();
+			img.onload=null;
+			that.current.splice(jQuery.inArray(img, that.current), 1);
+			if (e.type==="load") {
+				that.loaded++;
+				that.errorEma *= 0.9;
+			}
+			else {
+				that.errors++;
+				that.errorEma++;
+				if (that.errorEma>=20 && that.errorEma<21)
+					that.paused = true;
+			}
+			that._fireChanged(e.type, img);
+			that._checkQueue();
+			that.pool.push(img);
+		} );
+		img.src = url;
+	},
+
+	_fireChanged: function(type, img) {
+		this.opts.onChanged(type, img);
+	}
+}
Index: /tags/2.6.0RC1/themes/default/js/jquery.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/jquery.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/jquery.js	(revision 25596)
@@ -0,0 +1,9789 @@
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+	// The deferred used on DOM ready
+	readyList,
+
+	// A central reference to the root jQuery(document)
+	rootjQuery,
+
+	// Support: IE<10
+	// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+	core_strundefined = typeof undefined,
+
+	// Use the correct document accordingly with window argument (sandbox)
+	location = window.location,
+	document = window.document,
+	docElem = document.documentElement,
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$,
+
+	// [[Class]] -> type pairs
+	class2type = {},
+
+	// List of deleted data cache ids, so we can reuse them
+	core_deletedIds = [],
+
+	core_version = "1.10.2",
+
+	// Save a reference to some core methods
+	core_concat = core_deletedIds.concat,
+	core_push = core_deletedIds.push,
+	core_slice = core_deletedIds.slice,
+	core_indexOf = core_deletedIds.indexOf,
+	core_toString = class2type.toString,
+	core_hasOwn = class2type.hasOwnProperty,
+	core_trim = core_version.trim,
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		return new jQuery.fn.init( selector, context, rootjQuery );
+	},
+
+	// Used for matching numbers
+	core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+	// Used for splitting on whitespace
+	core_rnotwhite = /\S+/g,
+
+	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	// Match a standalone tag
+	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+	// JSON RegExp
+	rvalidchars = /^[\],:{}\s]*$/,
+	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+	rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+	rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	},
+
+	// The ready event handler
+	completed = function( event ) {
+
+		// readyState === "complete" is good enough for us to call the dom ready in oldIE
+		if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+			detach();
+			jQuery.ready();
+		}
+	},
+	// Clean-up method for dom ready events
+	detach = function() {
+		if ( document.addEventListener ) {
+			document.removeEventListener( "DOMContentLoaded", completed, false );
+			window.removeEventListener( "load", completed, false );
+
+		} else {
+			document.detachEvent( "onreadystatechange", completed );
+			window.detachEvent( "onload", completed );
+		}
+	};
+
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: core_version,
+
+	constructor: jQuery,
+	init: function( selector, context, rootjQuery ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+
+					// scripts is true for back-compat
+					jQuery.merge( this, jQuery.parseHTML(
+						match[1],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE and Opera return items
+						// by name instead of ID
+						if ( elem.id !== match[2] ) {
+							return rootjQuery.find( selector );
+						}
+
+						// Otherwise, we inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return rootjQuery.ready( selector );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	},
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return core_slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num == null ?
+
+			// Return a 'clean' array
+			this.toArray() :
+
+			// Return just the object
+			( num < 0 ? this[ this.length + num ] : this[ num ] );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	ready: function( fn ) {
+		// Add the callback
+		jQuery.ready.promise().done( fn );
+
+		return this;
+	},
+
+	slice: function() {
+		return this.pushStack( core_slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: core_push,
+	sort: [].sort,
+	splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var src, copyIsArray, copy, name, options, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+		target = arguments[1] || {};
+		// skip the boolean and the target
+		i = 2;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( length === i ) {
+		target = this;
+		--i;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	// Non-digits removed to match rinlinejQuery
+	expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+	noConflict: function( deep ) {
+		if ( window.$ === jQuery ) {
+			window.$ = _$;
+		}
+
+		if ( deep && window.jQuery === jQuery ) {
+			window.jQuery = _jQuery;
+		}
+
+		return jQuery;
+	},
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+		if ( !document.body ) {
+			return setTimeout( jQuery.ready );
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+
+		// Trigger any bound ready events
+		if ( jQuery.fn.trigger ) {
+			jQuery( document ).trigger("ready").off("ready");
+		}
+	},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray || function( obj ) {
+		return jQuery.type(obj) === "array";
+	},
+
+	isWindow: function( obj ) {
+		/* jshint eqeqeq: false */
+		return obj != null && obj == obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		return !isNaN( parseFloat(obj) ) && isFinite( obj );
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return String( obj );
+		}
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ core_toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	isPlainObject: function( obj ) {
+		var key;
+
+		// Must be an Object.
+		// Because of IE, we also have to check the presence of the constructor property.
+		// Make sure that DOM nodes and window objects don't pass through, as well
+		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!core_hasOwn.call(obj, "constructor") &&
+				!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
+			return false;
+		}
+
+		// Support: IE<9
+		// Handle iteration over inherited properties before own properties.
+		if ( jQuery.support.ownLast ) {
+			for ( key in obj ) {
+				return core_hasOwn.call( obj, key );
+			}
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own.
+		for ( key in obj ) {}
+
+		return key === undefined || core_hasOwn.call( obj, key );
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	// data: string of html
+	// context (optional): If specified, the fragment will be created in this context, defaults to document
+	// keepScripts (optional): If true, will include scripts passed in the html string
+	parseHTML: function( data, context, keepScripts ) {
+		if ( !data || typeof data !== "string" ) {
+			return null;
+		}
+		if ( typeof context === "boolean" ) {
+			keepScripts = context;
+			context = false;
+		}
+		context = context || document;
+
+		var parsed = rsingleTag.exec( data ),
+			scripts = !keepScripts && [];
+
+		// Single tag
+		if ( parsed ) {
+			return [ context.createElement( parsed[1] ) ];
+		}
+
+		parsed = jQuery.buildFragment( [ data ], context, scripts );
+		if ( scripts ) {
+			jQuery( scripts ).remove();
+		}
+		return jQuery.merge( [], parsed.childNodes );
+	},
+
+	parseJSON: function( data ) {
+		// Attempt to parse using the native JSON parser first
+		if ( window.JSON && window.JSON.parse ) {
+			return window.JSON.parse( data );
+		}
+
+		if ( data === null ) {
+			return data;
+		}
+
+		if ( typeof data === "string" ) {
+
+			// Make sure leading/trailing whitespace is removed (IE can't handle it)
+			data = jQuery.trim( data );
+
+			if ( data ) {
+				// Make sure the incoming data is actual JSON
+				// Logic borrowed from http://json.org/json2.js
+				if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+					.replace( rvalidtokens, "]" )
+					.replace( rvalidbraces, "")) ) {
+
+					return ( new Function( "return " + data ) )();
+				}
+			}
+		}
+
+		jQuery.error( "Invalid JSON: " + data );
+	},
+
+	// Cross-browser xml parsing
+	parseXML: function( data ) {
+		var xml, tmp;
+		if ( !data || typeof data !== "string" ) {
+			return null;
+		}
+		try {
+			if ( window.DOMParser ) { // Standard
+				tmp = new DOMParser();
+				xml = tmp.parseFromString( data , "text/xml" );
+			} else { // IE
+				xml = new ActiveXObject( "Microsoft.XMLDOM" );
+				xml.async = "false";
+				xml.loadXML( data );
+			}
+		} catch( e ) {
+			xml = undefined;
+		}
+		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+			jQuery.error( "Invalid XML: " + data );
+		}
+		return xml;
+	},
+
+	noop: function() {},
+
+	// Evaluates a script in a global context
+	// Workarounds based on findings by Jim Driscoll
+	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+	globalEval: function( data ) {
+		if ( data && jQuery.trim( data ) ) {
+			// We use execScript on Internet Explorer
+			// We use an anonymous function so that context is window
+			// rather than jQuery in Firefox
+			( window.execScript || function( data ) {
+				window[ "eval" ].call( window, data );
+			} )( data );
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Use native String.trim function wherever possible
+	trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+		function( text ) {
+			return text == null ?
+				"" :
+				core_trim.call( text );
+		} :
+
+		// Otherwise use our own trimming functionality
+		function( text ) {
+			return text == null ?
+				"" :
+				( text + "" ).replace( rtrim, "" );
+		},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				core_push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		var len;
+
+		if ( arr ) {
+			if ( core_indexOf ) {
+				return core_indexOf.call( arr, elem, i );
+			}
+
+			len = arr.length;
+			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+			for ( ; i < len; i++ ) {
+				// Skip accessing in sparse arrays
+				if ( i in arr && arr[ i ] === elem ) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		var l = second.length,
+			i = first.length,
+			j = 0;
+
+		if ( typeof l === "number" ) {
+			for ( ; j < l; j++ ) {
+				first[ i++ ] = second[ j ];
+			}
+		} else {
+			while ( second[j] !== undefined ) {
+				first[ i++ ] = second[ j++ ];
+			}
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, inv ) {
+		var retVal,
+			ret = [],
+			i = 0,
+			length = elems.length;
+		inv = !!inv;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			retVal = !!callback( elems[ i ], i );
+			if ( inv !== retVal ) {
+				ret.push( elems[ i ] );
+			}
+		}
+
+		return ret;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return core_concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var args, proxy, tmp;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = core_slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	// Multifunctional method to get and set values of a collection
+	// The value/s can optionally be executed if it's a function
+	access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+		var i = 0,
+			length = elems.length,
+			bulk = key == null;
+
+		// Sets many values
+		if ( jQuery.type( key ) === "object" ) {
+			chainable = true;
+			for ( i in key ) {
+				jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+			}
+
+		// Sets one value
+		} else if ( value !== undefined ) {
+			chainable = true;
+
+			if ( !jQuery.isFunction( value ) ) {
+				raw = true;
+			}
+
+			if ( bulk ) {
+				// Bulk operations run against the entire set
+				if ( raw ) {
+					fn.call( elems, value );
+					fn = null;
+
+				// ...except when executing function values
+				} else {
+					bulk = fn;
+					fn = function( elem, key, value ) {
+						return bulk.call( jQuery( elem ), value );
+					};
+				}
+			}
+
+			if ( fn ) {
+				for ( ; i < length; i++ ) {
+					fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+				}
+			}
+		}
+
+		return chainable ?
+			elems :
+
+			// Gets
+			bulk ?
+				fn.call( elems ) :
+				length ? fn( elems[0], key ) : emptyGet;
+	},
+
+	now: function() {
+		return ( new Date() ).getTime();
+	},
+
+	// A method for quickly swapping in/out CSS properties to get correct calculations.
+	// Note: this method belongs to the css module but it's needed here for the support module.
+	// If support gets modularized, this method should be moved back to the css module.
+	swap: function( elem, options, callback, args ) {
+		var ret, name,
+			old = {};
+
+		// Remember the old values, and insert the new ones
+		for ( name in options ) {
+			old[ name ] = elem.style[ name ];
+			elem.style[ name ] = options[ name ];
+		}
+
+		ret = callback.apply( elem, args || [] );
+
+		// Revert the old values
+		for ( name in options ) {
+			elem.style[ name ] = old[ name ];
+		}
+
+		return ret;
+	}
+});
+
+jQuery.ready.promise = function( obj ) {
+	if ( !readyList ) {
+
+		readyList = jQuery.Deferred();
+
+		// Catch cases where $(document).ready() is called after the browser event has already occurred.
+		// we once tried to use readyState "interactive" here, but it caused issues like the one
+		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			setTimeout( jQuery.ready );
+
+		// Standards-based browsers support DOMContentLoaded
+		} else if ( document.addEventListener ) {
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", completed, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", completed, false );
+
+		// If IE event model is used
+		} else {
+			// Ensure firing before onload, maybe late but safe also for iframes
+			document.attachEvent( "onreadystatechange", completed );
+
+			// A fallback to window.onload, that will always work
+			window.attachEvent( "onload", completed );
+
+			// If IE and not a frame
+			// continually check to see if the document is ready
+			var top = false;
+
+			try {
+				top = window.frameElement == null && document.documentElement;
+			} catch(e) {}
+
+			if ( top && top.doScroll ) {
+				(function doScrollCheck() {
+					if ( !jQuery.isReady ) {
+
+						try {
+							// Use the trick by Diego Perini
+							// http://javascript.nwbox.com/IEContentLoaded/
+							top.doScroll("left");
+						} catch(e) {
+							return setTimeout( doScrollCheck, 50 );
+						}
+
+						// detach all dom ready events
+						detach();
+
+						// and execute any waiting functions
+						jQuery.ready();
+					}
+				})();
+			}
+		}
+	}
+	return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+	var length = obj.length,
+		type = jQuery.type( obj );
+
+	if ( jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || type !== "function" &&
+		( length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+	support,
+	cachedruns,
+	Expr,
+	getText,
+	isXML,
+	compile,
+	outermostContext,
+	sortInput,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + -(new Date()),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	hasDuplicate = false,
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	strundefined = typeof undefined,
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+		"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+	// Prefer arguments quoted,
+	//   then not containing pseudos/brackets,
+	//   then attribute selectors/non-parenthetical expressions,
+	//   then anything else
+	// These preferences are here to reduce the number of selectors
+	//   needing tokenize in the PSEUDO preFilter
+	pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rsibling = new RegExp( whitespace + "*[+~]" ),
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			// BMP codepoint
+			high < 0 ?
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType === 9 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && context.parentNode || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key += " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var doc = node ? node.ownerDocument || node : preferredDoc,
+		parent = doc.defaultView;
+
+	// If no document and documentElement is available, return
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Set our document
+	document = doc;
+	docElem = doc.documentElement;
+
+	// Support tests
+	documentIsHTML = !isXML( doc );
+
+	// Support: IE>8
+	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
+	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+	// IE6-8 do not support the defaultView property so parent will be undefined
+	if ( parent && parent.attachEvent && parent !== parent.top ) {
+		parent.attachEvent( "onbeforeunload", function() {
+			setDocument();
+		});
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( doc.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Check if getElementsByClassName can be trusted
+	support.getElementsByClassName = assert(function( div ) {
+		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+		// Support: Safari<4
+		// Catch class over-caching
+		div.firstChild.className = "i";
+		// Support: Opera<10
+		// Catch gEBCN failure to find non-leading classes
+		return div.getElementsByClassName("i").length === 2;
+	});
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+				var m = context.getElementById( id );
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [m] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== strundefined ) {
+				return context.getElementsByTagName( tag );
+			}
+		} :
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			div.innerHTML = "<select><option selected=''></option></select>";
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+		});
+
+		assert(function( div ) {
+
+			// Support: Opera 10-12/IE8
+			// ^= $= *= and empty values
+			// Should not select anything
+			// Support: Windows 8 Native Apps
+			// The type attribute is restricted during .innerHTML assignment
+			var input = doc.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "t", "" );
+
+			if ( div.querySelectorAll("[t^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+
+	// Element contains another
+	// Purposefully does not implement inclusive descendent
+	// As in, an element does not contain itself
+	contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = docElem.compareDocumentPosition ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+		if ( compare ) {
+			// Disconnected nodes
+			if ( compare & 1 ||
+				(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+				// Choose the first element that is related to our preferred document
+				if ( a === doc || contains(preferredDoc, a) ) {
+					return -1;
+				}
+				if ( b === doc || contains(preferredDoc, b) ) {
+					return 1;
+				}
+
+				// Maintain original order
+				return sortInput ?
+					( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+					0;
+			}
+
+			return compare & 4 ? -1 : 1;
+		}
+
+		// Not directly comparable, sort on existence of method
+		return a.compareDocumentPosition ? -1 : 1;
+	} :
+	function( a, b ) {
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+
+		// Parentless nodes are either documents or disconnected
+		} else if ( !aup || !bup ) {
+			return a === doc ? -1 :
+				b === doc ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch(e) {}
+	}
+
+	return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val === undefined ?
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null :
+		val;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		for ( ; (node = elem[i]); i++ ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (see #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[5] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] && match[4] !== undefined ) {
+				match[2] = match[4];
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, outerCache, node, diff, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+							// Seek `elem` from a previously-cached index
+							outerCache = parent[ expando ] || (parent[ expando ] = {});
+							cache = outerCache[ type ] || [];
+							nodeIndex = cache[0] === dirruns && cache[1];
+							diff = cache[0] === dirruns && cache[2];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						// Use previously-cached element index if available
+						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+							diff = cache[1];
+
+						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+						} else {
+							// Use the same loop as above to seek `elem` from the start
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+									// Cache the index of each encountered element
+									if ( useCache ) {
+										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+									}
+
+									if ( node === elem ) {
+										break;
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf.call( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+			//   not comment, processing instructions, or others
+			// Thanks to Diego Perini for the nodeName shortcut
+			//   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+			// use getAttribute instead to test this case
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( tokens = [] );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var data, cache, outerCache,
+				dirkey = dirruns + " " + doneName;
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+						if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+							if ( (data = cache[1]) === true || data === cachedruns ) {
+								return data === true;
+							}
+						} else {
+							cache = outerCache[ dir ] = [ dirkey ];
+							cache[1] = matcher( elem, context, xml ) || cachedruns;
+							if ( cache[1] === true ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf.call( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	// A counter to specify which element is currently being matched
+	var matcherCachedRuns = 0,
+		bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, expandContext ) {
+			var elem, j, matcher,
+				setMatched = [],
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				outermost = expandContext != null,
+				contextBackup = outermostContext,
+				// We must always have either seed elements or context
+				elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+			if ( outermost ) {
+				outermostContext = context !== document && context;
+				cachedruns = matcherCachedRuns;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+			for ( ; (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+						cachedruns = ++matcherCachedRuns;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// Apply set filters to unmatched elements
+			matchedCount += i;
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !group ) {
+			group = tokenize( selector );
+		}
+		i = group.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( group[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+	}
+	return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function select( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		match = tokenize( selector );
+
+	if ( !seed ) {
+		// Try to minimize operations if there is only one group
+		if ( match.length === 1 ) {
+
+			// Take a shortcut and set the context if the root selector is an ID
+			tokens = match[0] = match[0].slice( 0 );
+			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+					support.getById && context.nodeType === 9 && documentIsHTML &&
+					Expr.relative[ tokens[1].type ] ) {
+
+				context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+				if ( !context ) {
+					return results;
+				}
+				selector = selector.slice( tokens.shift().value.length );
+			}
+
+			// Fetch a seed set for right-to-left matching
+			i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+			while ( i-- ) {
+				token = tokens[i];
+
+				// Abort if we hit a combinator
+				if ( Expr.relative[ (type = token.type) ] ) {
+					break;
+				}
+				if ( (find = Expr.find[ type ]) ) {
+					// Search, expanding context for leading sibling combinators
+					if ( (seed = find(
+						token.matches[0].replace( runescape, funescape ),
+						rsibling.test( tokens[0].type ) && context.parentNode || context
+					)) ) {
+
+						// If seed is empty or no tokens remain, we can return early
+						tokens.splice( i, 1 );
+						selector = seed.length && toSelector( tokens );
+						if ( !selector ) {
+							push.apply( results, seed );
+							return results;
+						}
+
+						break;
+					}
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function
+	// Provide `match` to avoid retokenization if we modified the selector above
+	compile( selector, match )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		rsibling.test( selector )
+	);
+	return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return (val = elem.getAttributeNode( name )) && val.specified ?
+				val.value :
+				elem[ name ] === true ? name.toLowerCase() : null;
+		}
+	});
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+	var object = optionsCache[ options ] = {};
+	jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	});
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		( optionsCache[ options ] || createOptions( options ) ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+		// Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list was already fired
+		fired,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = !options.once && [],
+		// Fire callbacks
+		fire = function( data ) {
+			memory = options.memory && data;
+			fired = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			firing = true;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+					memory = false; // To prevent further calls using add
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( stack ) {
+					if ( stack.length ) {
+						fire( stack.shift() );
+					}
+				} else if ( memory ) {
+					list = [];
+				} else {
+					self.disable();
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					// First, we save the current length
+					var start = list.length;
+					(function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							var type = jQuery.type( arg );
+							if ( type === "function" ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && type !== "string" ) {
+								// Inspect recursively
+								add( arg );
+							}
+						});
+					})( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away
+					} else if ( memory ) {
+						firingStart = start;
+						fire( memory );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					jQuery.each( arguments, function( _, arg ) {
+						var index;
+						while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+							list.splice( index, 1 );
+							// Handle firing indexes
+							if ( firing ) {
+								if ( index <= firingLength ) {
+									firingLength--;
+								}
+								if ( index <= firingIndex ) {
+									firingIndex--;
+								}
+							}
+						}
+					});
+				}
+				return this;
+			},
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				firingLength = 0;
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( list && ( !fired || stack ) ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					if ( firing ) {
+						stack.push( args );
+					} else {
+						fire( args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var tuples = [
+				// action, add listener, listener list, final state
+				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+				[ "notify", "progress", jQuery.Callbacks("memory") ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				then: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+							var action = tuple[ 0 ],
+								fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+							// deferred[ done | fail | progress ] for forwarding actions to newDefer
+							deferred[ tuple[1] ](function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.done( newDefer.resolve )
+										.fail( newDefer.reject )
+										.progress( newDefer.notify );
+								} else {
+									newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+								}
+							});
+						});
+						fns = null;
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Keep pipe for back-compat
+		promise.pipe = promise.then;
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 3 ];
+
+			// promise[ done | fail | progress ] = list.add
+			promise[ tuple[1] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(function() {
+					// state = [ resolved | rejected ]
+					state = stateString;
+
+				// [ reject_list | resolve_list ].disable; progress_list.lock
+				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+			}
+
+			// deferred[ resolve | reject | notify ]
+			deferred[ tuple[0] ] = function() {
+				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+				return this;
+			};
+			deferred[ tuple[0] + "With" ] = list.fireWith;
+		});
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( subordinate /* , ..., subordinateN */ ) {
+		var i = 0,
+			resolveValues = core_slice.call( arguments ),
+			length = resolveValues.length,
+
+			// the count of uncompleted subordinates
+			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+			// Update function for both resolve and progress values
+			updateFunc = function( i, contexts, values ) {
+				return function( value ) {
+					contexts[ i ] = this;
+					values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+					if( values === progressValues ) {
+						deferred.notifyWith( contexts, values );
+					} else if ( !( --remaining ) ) {
+						deferred.resolveWith( contexts, values );
+					}
+				};
+			},
+
+			progressValues, progressContexts, resolveContexts;
+
+		// add listeners to Deferred subordinates; treat others as resolved
+		if ( length > 1 ) {
+			progressValues = new Array( length );
+			progressContexts = new Array( length );
+			resolveContexts = new Array( length );
+			for ( ; i < length; i++ ) {
+				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+					resolveValues[ i ].promise()
+						.done( updateFunc( i, resolveContexts, resolveValues ) )
+						.fail( deferred.reject )
+						.progress( updateFunc( i, progressContexts, progressValues ) );
+				} else {
+					--remaining;
+				}
+			}
+		}
+
+		// if we're not waiting on anything, resolve the master
+		if ( !remaining ) {
+			deferred.resolveWith( resolveContexts, resolveValues );
+		}
+
+		return deferred.promise();
+	}
+});
+jQuery.support = (function( support ) {
+
+	var all, a, input, select, fragment, opt, eventName, isSupported, i,
+		div = document.createElement("div");
+
+	// Setup
+	div.setAttribute( "className", "t" );
+	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+	// Finish early in limited (non-browser) environments
+	all = div.getElementsByTagName("*") || [];
+	a = div.getElementsByTagName("a")[ 0 ];
+	if ( !a || !a.style || !all.length ) {
+		return support;
+	}
+
+	// First batch of tests
+	select = document.createElement("select");
+	opt = select.appendChild( document.createElement("option") );
+	input = div.getElementsByTagName("input")[ 0 ];
+
+	a.style.cssText = "top:1px;float:left;opacity:.5";
+
+	// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+	support.getSetAttribute = div.className !== "t";
+
+	// IE strips leading whitespace when .innerHTML is used
+	support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+	// Make sure that tbody elements aren't automatically inserted
+	// IE will insert them into empty tables
+	support.tbody = !div.getElementsByTagName("tbody").length;
+
+	// Make sure that link elements get serialized correctly by innerHTML
+	// This requires a wrapper element in IE
+	support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+	// Get the style information from getAttribute
+	// (IE uses .cssText instead)
+	support.style = /top/.test( a.getAttribute("style") );
+
+	// Make sure that URLs aren't manipulated
+	// (IE normalizes it by default)
+	support.hrefNormalized = a.getAttribute("href") === "/a";
+
+	// Make sure that element opacity exists
+	// (IE uses filter instead)
+	// Use a regex to work around a WebKit issue. See #5145
+	support.opacity = /^0.5/.test( a.style.opacity );
+
+	// Verify style float existence
+	// (IE uses styleFloat instead of cssFloat)
+	support.cssFloat = !!a.style.cssFloat;
+
+	// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+	support.checkOn = !!input.value;
+
+	// Make sure that a selected-by-default option has a working selected property.
+	// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+	support.optSelected = opt.selected;
+
+	// Tests for enctype support on a form (#6743)
+	support.enctype = !!document.createElement("form").enctype;
+
+	// Makes sure cloning an html5 element does not cause problems
+	// Where outerHTML is undefined, this still works
+	support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
+
+	// Will be defined later
+	support.inlineBlockNeedsLayout = false;
+	support.shrinkWrapBlocks = false;
+	support.pixelPosition = false;
+	support.deleteExpando = true;
+	support.noCloneEvent = true;
+	support.reliableMarginRight = true;
+	support.boxSizingReliable = true;
+
+	// Make sure checked status is properly cloned
+	input.checked = true;
+	support.noCloneChecked = input.cloneNode( true ).checked;
+
+	// Make sure that the options inside disabled selects aren't marked as disabled
+	// (WebKit marks them as disabled)
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Support: IE<9
+	try {
+		delete div.test;
+	} catch( e ) {
+		support.deleteExpando = false;
+	}
+
+	// Check if we can trust getAttribute("value")
+	input = document.createElement("input");
+	input.setAttribute( "value", "" );
+	support.input = input.getAttribute( "value" ) === "";
+
+	// Check if an input maintains its value after becoming a radio
+	input.value = "t";
+	input.setAttribute( "type", "radio" );
+	support.radioValue = input.value === "t";
+
+	// #11217 - WebKit loses check when the name is after the checked attribute
+	input.setAttribute( "checked", "t" );
+	input.setAttribute( "name", "t" );
+
+	fragment = document.createDocumentFragment();
+	fragment.appendChild( input );
+
+	// Check if a disconnected checkbox will retain its checked
+	// value of true after appended to the DOM (IE6/7)
+	support.appendChecked = input.checked;
+
+	// WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE<9
+	// Opera does not clone events (and typeof div.attachEvent === undefined).
+	// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+	if ( div.attachEvent ) {
+		div.attachEvent( "onclick", function() {
+			support.noCloneEvent = false;
+		});
+
+		div.cloneNode( true ).click();
+	}
+
+	// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+	// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+	for ( i in { submit: true, change: true, focusin: true }) {
+		div.setAttribute( eventName = "on" + i, "t" );
+
+		support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+	}
+
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	// Support: IE<9
+	// Iteration over object's inherited properties before its own.
+	for ( i in jQuery( support ) ) {
+		break;
+	}
+	support.ownLast = i !== "0";
+
+	// Run tests that need a body at doc ready
+	jQuery(function() {
+		var container, marginDiv, tds,
+			divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+			body = document.getElementsByTagName("body")[0];
+
+		if ( !body ) {
+			// Return for frameset docs that don't have a body
+			return;
+		}
+
+		container = document.createElement("div");
+		container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+		body.appendChild( container ).appendChild( div );
+
+		// Support: IE8
+		// Check if table cells still have offsetWidth/Height when they are set
+		// to display:none and there are still other visible table cells in a
+		// table row; if so, offsetWidth/Height are not reliable for use when
+		// determining if an element has been hidden directly using
+		// display:none (it is still safe to use offsets if a parent element is
+		// hidden; don safety goggles and see bug #4512 for more information).
+		div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+		tds = div.getElementsByTagName("td");
+		tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+		isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+		tds[ 0 ].style.display = "";
+		tds[ 1 ].style.display = "none";
+
+		// Support: IE8
+		// Check if empty table cells still have offsetWidth/Height
+		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+		// Check box-sizing and margin behavior.
+		div.innerHTML = "";
+		div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+		// Workaround failing boxSizing test due to offsetWidth returning wrong value
+		// with some non-1 values of body zoom, ticket #13543
+		jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+			support.boxSizing = div.offsetWidth === 4;
+		});
+
+		// Use window.getComputedStyle because jsdom on node.js will break without it.
+		if ( window.getComputedStyle ) {
+			support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+			support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+			// Check if div with explicit width and no margin-right incorrectly
+			// gets computed margin-right based on width of container. (#3333)
+			// Fails in WebKit before Feb 2011 nightlies
+			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+			marginDiv = div.appendChild( document.createElement("div") );
+			marginDiv.style.cssText = div.style.cssText = divReset;
+			marginDiv.style.marginRight = marginDiv.style.width = "0";
+			div.style.width = "1px";
+
+			support.reliableMarginRight =
+				!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+		}
+
+		if ( typeof div.style.zoom !== core_strundefined ) {
+			// Support: IE<8
+			// Check if natively block-level elements act like inline-block
+			// elements when setting their display to 'inline' and giving
+			// them layout
+			div.innerHTML = "";
+			div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+			// Support: IE6
+			// Check if elements with layout shrink-wrap their children
+			div.style.display = "block";
+			div.innerHTML = "<div></div>";
+			div.firstChild.style.width = "5px";
+			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+			if ( support.inlineBlockNeedsLayout ) {
+				// Prevent IE 6 from affecting layout for positioned elements #11048
+				// Prevent IE from shrinking the body in IE 7 mode #12869
+				// Support: IE<8
+				body.style.zoom = 1;
+			}
+		}
+
+		body.removeChild( container );
+
+		// Null elements to avoid leaks in IE
+		container = div = tds = marginDiv = null;
+	});
+
+	// Null elements to avoid leaks in IE
+	all = select = fragment = opt = a = input = null;
+
+	return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+	if ( !jQuery.acceptData( elem ) ) {
+		return;
+	}
+
+	var ret, thisCache,
+		internalKey = jQuery.expando,
+
+		// We have to handle DOM nodes and JS objects differently because IE6-7
+		// can't GC object references properly across the DOM-JS boundary
+		isNode = elem.nodeType,
+
+		// Only DOM nodes need the global jQuery cache; JS object data is
+		// attached directly to the object so GC can occur automatically
+		cache = isNode ? jQuery.cache : elem,
+
+		// Only defining an ID for JS objects if its cache already exists allows
+		// the code to shortcut on the same path as a DOM node with no cache
+		id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+	// Avoid doing any more work than we need to when trying to get data on an
+	// object that has no data at all
+	if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+		return;
+	}
+
+	if ( !id ) {
+		// Only DOM nodes need a new unique ID for each element since their data
+		// ends up in the global cache
+		if ( isNode ) {
+			id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+		} else {
+			id = internalKey;
+		}
+	}
+
+	if ( !cache[ id ] ) {
+		// Avoid exposing jQuery metadata on plain JS objects when the object
+		// is serialized using JSON.stringify
+		cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+	}
+
+	// An object can be passed to jQuery.data instead of a key/value pair; this gets
+	// shallow copied over onto the existing cache
+	if ( typeof name === "object" || typeof name === "function" ) {
+		if ( pvt ) {
+			cache[ id ] = jQuery.extend( cache[ id ], name );
+		} else {
+			cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+		}
+	}
+
+	thisCache = cache[ id ];
+
+	// jQuery data() is stored in a separate object inside the object's internal data
+	// cache in order to avoid key collisions between internal data and user-defined
+	// data.
+	if ( !pvt ) {
+		if ( !thisCache.data ) {
+			thisCache.data = {};
+		}
+
+		thisCache = thisCache.data;
+	}
+
+	if ( data !== undefined ) {
+		thisCache[ jQuery.camelCase( name ) ] = data;
+	}
+
+	// Check for both converted-to-camel and non-converted data property names
+	// If a data property was specified
+	if ( typeof name === "string" ) {
+
+		// First Try to find as-is property data
+		ret = thisCache[ name ];
+
+		// Test for null|undefined property data
+		if ( ret == null ) {
+
+			// Try to find the camelCased property
+			ret = thisCache[ jQuery.camelCase( name ) ];
+		}
+	} else {
+		ret = thisCache;
+	}
+
+	return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+	if ( !jQuery.acceptData( elem ) ) {
+		return;
+	}
+
+	var thisCache, i,
+		isNode = elem.nodeType,
+
+		// See jQuery.data for more information
+		cache = isNode ? jQuery.cache : elem,
+		id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+	// If there is already no cache entry for this object, there is no
+	// purpose in continuing
+	if ( !cache[ id ] ) {
+		return;
+	}
+
+	if ( name ) {
+
+		thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+		if ( thisCache ) {
+
+			// Support array or space separated string names for data keys
+			if ( !jQuery.isArray( name ) ) {
+
+				// try the string as a key before any manipulation
+				if ( name in thisCache ) {
+					name = [ name ];
+				} else {
+
+					// split the camel cased version by spaces unless a key with the spaces exists
+					name = jQuery.camelCase( name );
+					if ( name in thisCache ) {
+						name = [ name ];
+					} else {
+						name = name.split(" ");
+					}
+				}
+			} else {
+				// If "name" is an array of keys...
+				// When data is initially created, via ("key", "val") signature,
+				// keys will be converted to camelCase.
+				// Since there is no way to tell _how_ a key was added, remove
+				// both plain key and camelCase key. #12786
+				// This will only penalize the array argument path.
+				name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+			}
+
+			i = name.length;
+			while ( i-- ) {
+				delete thisCache[ name[i] ];
+			}
+
+			// If there is no data left in the cache, we want to continue
+			// and let the cache object itself get destroyed
+			if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+				return;
+			}
+		}
+	}
+
+	// See jQuery.data for more information
+	if ( !pvt ) {
+		delete cache[ id ].data;
+
+		// Don't destroy the parent cache unless the internal data object
+		// had been the only thing left in it
+		if ( !isEmptyDataObject( cache[ id ] ) ) {
+			return;
+		}
+	}
+
+	// Destroy the cache
+	if ( isNode ) {
+		jQuery.cleanData( [ elem ], true );
+
+	// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+	/* jshint eqeqeq: false */
+	} else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+		/* jshint eqeqeq: true */
+		delete cache[ id ];
+
+	// When all else fails, null
+	} else {
+		cache[ id ] = null;
+	}
+}
+
+jQuery.extend({
+	cache: {},
+
+	// The following elements throw uncatchable exceptions if you
+	// attempt to add expando properties to them.
+	noData: {
+		"applet": true,
+		"embed": true,
+		// Ban all objects except for Flash (which handle expandos)
+		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+	},
+
+	hasData: function( elem ) {
+		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+		return !!elem && !isEmptyDataObject( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return internalData( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		return internalRemoveData( elem, name );
+	},
+
+	// For internal use only.
+	_data: function( elem, name, data ) {
+		return internalData( elem, name, data, true );
+	},
+
+	_removeData: function( elem, name ) {
+		return internalRemoveData( elem, name, true );
+	},
+
+	// A method for determining if a DOM node can handle the data expando
+	acceptData: function( elem ) {
+		// Do not set data on non-element because it will not be cleared (#8335).
+		if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+			return false;
+		}
+
+		var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+		// nodes accept data unless otherwise specified; rejection can be conditional
+		return !noData || noData !== true && elem.getAttribute("classid") === noData;
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var attrs, name,
+			data = null,
+			i = 0,
+			elem = this[0];
+
+		// Special expections of .data basically thwart jQuery.access,
+		// so implement the relevant behavior ourselves
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = jQuery.data( elem );
+
+				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+					attrs = elem.attributes;
+					for ( ; i < attrs.length; i++ ) {
+						name = attrs[i].name;
+
+						if ( name.indexOf("data-") === 0 ) {
+							name = jQuery.camelCase( name.slice(5) );
+
+							dataAttr( elem, name, data[ name ] );
+						}
+					}
+					jQuery._data( elem, "parsedAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each(function() {
+				jQuery.data( this, key );
+			});
+		}
+
+		return arguments.length > 1 ?
+
+			// Sets one value
+			this.each(function() {
+				jQuery.data( this, key, value );
+			}) :
+
+			// Gets one value
+			// Try to fetch any internally stored data first
+			elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			jQuery.removeData( this, key );
+		});
+	}
+});
+
+function dataAttr( elem, key, data ) {
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+
+		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+						data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			jQuery.data( elem, key, data );
+
+		} else {
+			data = undefined;
+		}
+	}
+
+	return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+	var name;
+	for ( name in obj ) {
+
+		// if the public data object is empty, the private is still empty
+		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+			continue;
+		}
+		if ( name !== "toJSON" ) {
+			return false;
+		}
+	}
+
+	return true;
+}
+jQuery.extend({
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = jQuery._data( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray(data) ) {
+					queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// not intended for public consumption - generates a queueHooks object, or returns the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+			empty: jQuery.Callbacks("once memory").add(function() {
+				jQuery._removeData( elem, type + "queue" );
+				jQuery._removeData( elem, key );
+			})
+		});
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[0], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each(function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[0] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	// Based off of the plugin by Clint Helfers, with permission.
+	// http://blindsignals.com/index.php/2009/07/jquery-delay/
+	delay: function( time, type ) {
+		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+		type = type || "fx";
+
+		return this.queue( type, function( next, hooks ) {
+			var timeout = setTimeout( next, time );
+			hooks.stop = function() {
+				clearTimeout( timeout );
+			};
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while( i-- ) {
+			tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+});
+var nodeHook, boolHook,
+	rclass = /[\t\r\n\f]/g,
+	rreturn = /\r/g,
+	rfocusable = /^(?:input|select|textarea|button|object)$/i,
+	rclickable = /^(?:a|area)$/i,
+	ruseDefault = /^(?:checked|selected)$/i,
+	getSetAttribute = jQuery.support.getSetAttribute,
+	getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	},
+
+	prop: function( name, value ) {
+		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		name = jQuery.propFix[ name ] || name;
+		return this.each(function() {
+			// try/catch handles cases where IE balks (such as removing a property on window)
+			try {
+				this[ name ] = undefined;
+				delete this[ name ];
+			} catch( e ) {}
+		});
+	},
+
+	addClass: function( value ) {
+		var classes, elem, cur, clazz, j,
+			i = 0,
+			len = this.length,
+			proceed = typeof value === "string" && value;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call( this, j, this.className ) );
+			});
+		}
+
+		if ( proceed ) {
+			// The disjunction here is for better compressibility (see removeClass)
+			classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					" "
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+					elem.className = jQuery.trim( cur );
+
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, clazz, j,
+			i = 0,
+			len = this.length,
+			proceed = arguments.length === 0 || typeof value === "string" && value;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, this.className ) );
+			});
+		}
+		if ( proceed ) {
+			classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					""
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+					elem.className = value ? jQuery.trim( cur ) : "";
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					classNames = value.match( core_rnotwhite ) || [];
+
+				while ( (className = classNames[ i++ ]) ) {
+					// check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( type === core_strundefined || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					jQuery._data( this, "__className__", this.className );
+				}
+
+				// If the element has a class name or if we're passed "false",
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+				return true;
+			}
+		}
+
+		return false;
+	},
+
+	val: function( value ) {
+		var ret, hooks, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// handle most common string cases
+					ret.replace(rreturn, "") :
+					// handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+			} else if ( typeof val === "number" ) {
+				val += "";
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map(val, function ( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				// Use proper attribute retrieval(#6932, #12072)
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+					elem.text;
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one" || index < 0,
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// oldIE doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+							// Don't return options that are disabled or in a disabled optgroup
+							( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+					if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+						optionSet = true;
+					}
+				}
+
+				// force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	},
+
+	attr: function( elem, name, value ) {
+		var hooks, ret,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === core_strundefined ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+
+			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, value + "" );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+			ret = jQuery.find.attr( elem, name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret == null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name, propName,
+			i = 0,
+			attrNames = value && value.match( core_rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( (name = attrNames[i++]) ) {
+				propName = jQuery.propFix[ name ] || name;
+
+				// Boolean attributes get special treatment (#10870)
+				if ( jQuery.expr.match.bool.test( name ) ) {
+					// Set corresponding property to false
+					if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+						elem[ propName ] = false;
+					// Support: IE<9
+					// Also clear defaultChecked/defaultSelected (if appropriate)
+					} else {
+						elem[ jQuery.camelCase( "default-" + name ) ] =
+							elem[ propName ] = false;
+					}
+
+				// See #9699 for explanation of this approach (setting first, then removal)
+				} else {
+					jQuery.attr( elem, name, "" );
+				}
+
+				elem.removeAttribute( getSetAttribute ? name : propName );
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+					// Setting the type on a radio button after the value resets the value in IE6-9
+					// Reset value to default in case type is set after value during creation
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+				ret :
+				( elem[ name ] = value );
+
+		} else {
+			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+				ret :
+				elem[ name ];
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				return tabindex ?
+					parseInt( tabindex, 10 ) :
+					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+						0 :
+						-1;
+			}
+		}
+	}
+});
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+			// IE<8 needs the *property* name
+			elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+		// Use defaultChecked and defaultSelected for oldIE
+		} else {
+			elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+		}
+
+		return name;
+	}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+	jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+		function( elem, name, isXML ) {
+			var fn = jQuery.expr.attrHandle[ name ],
+				ret = isXML ?
+					undefined :
+					/* jshint eqeqeq: false */
+					(jQuery.expr.attrHandle[ name ] = undefined) !=
+						getter( elem, name, isXML ) ?
+
+						name.toLowerCase() :
+						null;
+			jQuery.expr.attrHandle[ name ] = fn;
+			return ret;
+		} :
+		function( elem, name, isXML ) {
+			return isXML ?
+				undefined :
+				elem[ jQuery.camelCase( "default-" + name ) ] ?
+					name.toLowerCase() :
+					null;
+		};
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+	jQuery.attrHooks.value = {
+		set: function( elem, value, name ) {
+			if ( jQuery.nodeName( elem, "input" ) ) {
+				// Does not return so that setAttribute is also used
+				elem.defaultValue = value;
+			} else {
+				// Use nodeHook if defined (#1954); otherwise setAttribute is fine
+				return nodeHook && nodeHook.set( elem, value, name );
+			}
+		}
+	};
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+	// Use this for any attribute in IE6/7
+	// This fixes almost every IE6/7 issue
+	nodeHook = {
+		set: function( elem, value, name ) {
+			// Set the existing or create a new attribute node
+			var ret = elem.getAttributeNode( name );
+			if ( !ret ) {
+				elem.setAttributeNode(
+					(ret = elem.ownerDocument.createAttribute( name ))
+				);
+			}
+
+			ret.value = value += "";
+
+			// Break association with cloned elements by also using setAttribute (#9646)
+			return name === "value" || value === elem.getAttribute( name ) ?
+				value :
+				undefined;
+		}
+	};
+	jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+		// Some attributes are constructed with empty-string values when not defined
+		function( elem, name, isXML ) {
+			var ret;
+			return isXML ?
+				undefined :
+				(ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+					ret.value :
+					null;
+		};
+	jQuery.valHooks.button = {
+		get: function( elem, name ) {
+			var ret = elem.getAttributeNode( name );
+			return ret && ret.specified ?
+				ret.value :
+				undefined;
+		},
+		set: nodeHook.set
+	};
+
+	// Set contenteditable to false on removals(#10429)
+	// Setting to empty string throws an error as an invalid value
+	jQuery.attrHooks.contenteditable = {
+		set: function( elem, value, name ) {
+			nodeHook.set( elem, value === "" ? false : value, name );
+		}
+	};
+
+	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
+	// This is for removals
+	jQuery.each([ "width", "height" ], function( i, name ) {
+		jQuery.attrHooks[ name ] = {
+			set: function( elem, value ) {
+				if ( value === "" ) {
+					elem.setAttribute( name, "auto" );
+					return value;
+				}
+			}
+		};
+	});
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+	// href/src property should get the full normalized URL (#10299/#12915)
+	jQuery.each([ "href", "src" ], function( i, name ) {
+		jQuery.propHooks[ name ] = {
+			get: function( elem ) {
+				return elem.getAttribute( name, 4 );
+			}
+		};
+	});
+}
+
+if ( !jQuery.support.style ) {
+	jQuery.attrHooks.style = {
+		get: function( elem ) {
+			// Return undefined in the case of empty string
+			// Note: IE uppercases css property names, but if we were to .toLowerCase()
+			// .cssText, that would destroy case senstitivity in URL's, like in "background"
+			return elem.style.cssText || undefined;
+		},
+		set: function( elem, value ) {
+			return ( elem.style.cssText = value + "" );
+		}
+	};
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+
+			if ( parent ) {
+				parent.selectedIndex;
+
+				// Make sure that it also works with optgroups, see #5701
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+			return null;
+		}
+	};
+}
+
+jQuery.each([
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+	jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	};
+	if ( !jQuery.support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			// Support: Webkit
+			// "" is returned instead of "on" if a value isn't specified
+			return elem.getAttribute("value") === null ? "on" : elem.value;
+		};
+	}
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+		var tmp, events, t, handleObjIn,
+			special, eventHandle, handleObj,
+			handlers, type, namespaces, origType,
+			elemData = jQuery._data( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !(events = elemData.events) ) {
+			events = elemData.events = {};
+		}
+		if ( !(eventHandle = elemData.handle) ) {
+			eventHandle = elemData.handle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+					undefined;
+			};
+			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+			eventHandle.elem = elem;
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( core_rnotwhite ) || [""];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !(handlers = events[ type ]) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener/attachEvent if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					// Bind the global event handler to the element
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+
+					} else if ( elem.attachEvent ) {
+						elem.attachEvent( "on" + type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+		// Nullify elem to prevent memory leaks in IE
+		elem = null;
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+		var j, handleObj, tmp,
+			origCount, t, events,
+			special, handlers, type,
+			namespaces, origType,
+			elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( core_rnotwhite ) || [""];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			delete elemData.handle;
+
+			// removeData also checks for emptiness and clears the expando if empty
+			// so use it instead of delete
+			jQuery._removeData( elem, "events" );
+		}
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+		var handle, ontype, cur,
+			bubbleType, special, tmp, i,
+			eventPath = [ elem || document ],
+			type = core_hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf(".") >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf(":") < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join(".");
+		event.namespace_re = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === (elem.ownerDocument || document) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+				event.preventDefault();
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+				jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Can't use an .isFunction() check here because IE6/7 fails that test.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					try {
+						elem[ type ]();
+					} catch ( e ) {
+						// IE<9 dies on focus/blur to hidden element (#1486,#12518)
+						// only reproducible on winXP IE8 native, not IE9 in IE8 mode
+					}
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event );
+
+		var i, ret, handleObj, matched, j,
+			handlerQueue = [],
+			args = core_slice.call( arguments ),
+			handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or
+				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( (event.result = ret) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var sel, handleObj, matches, i,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		// Avoid non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+			/* jshint eqeqeq: false */
+			for ( ; cur != this; cur = cur.parentNode || this ) {
+				/* jshint eqeqeq: true */
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) >= 0 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push({ elem: cur, handlers: matches });
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+		}
+
+		return handlerQueue;
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop, copy,
+			type = event.type,
+			originalEvent = event,
+			fixHook = this.fixHooks[ type ];
+
+		if ( !fixHook ) {
+			this.fixHooks[ type ] = fixHook =
+				rmouseEvent.test( type ) ? this.mouseHooks :
+				rkeyEvent.test( type ) ? this.keyHooks :
+				{};
+		}
+		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = new jQuery.Event( originalEvent );
+
+		i = copy.length;
+		while ( i-- ) {
+			prop = copy[ i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Support: IE<9
+		// Fix target property (#1925)
+		if ( !event.target ) {
+			event.target = originalEvent.srcElement || document;
+		}
+
+		// Support: Chrome 23+, Safari?
+		// Target should not be a text node (#504, #13143)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		// Support: IE<9
+		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+		event.metaKey = !!event.metaKey;
+
+		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var body, eventDoc, doc,
+				button = original.button,
+				fromElement = original.fromElement;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add relatedTarget, if necessary
+			if ( !event.relatedTarget && fromElement ) {
+				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	special: {
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					try {
+						this.focus();
+						return false;
+					} catch ( e ) {
+						// Support: IE<9
+						// If we error on focus to hidden element (#1486, #12518),
+						// let .trigger() run the handlers
+					}
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Even when returnValue equals to undefined Firefox will still show alert
+				if ( event.result !== undefined ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+	function( elem, type, handle ) {
+		if ( elem.removeEventListener ) {
+			elem.removeEventListener( type, handle, false );
+		}
+	} :
+	function( elem, type, handle ) {
+		var name = "on" + type;
+
+		if ( elem.detachEvent ) {
+
+			// #8545, #7054, preventing memory leaks for custom events in IE6-8
+			// detachEvent needed property on element, by name of that event, to properly expose it to GC
+			if ( typeof elem[ name ] === core_strundefined ) {
+				elem[ name ] = null;
+			}
+
+			elem.detachEvent( name, handle );
+		}
+	};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+		if ( !e ) {
+			return;
+		}
+
+		// If preventDefault exists, run it on the original event
+		if ( e.preventDefault ) {
+			e.preventDefault();
+
+		// Support: IE
+		// Otherwise set the returnValue property of the original event to false
+		} else {
+			e.returnValue = false;
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+		if ( !e ) {
+			return;
+		}
+		// If stopPropagation exists, run it on the original event
+		if ( e.stopPropagation ) {
+			e.stopPropagation();
+		}
+
+		// Support: IE
+		// Set the cancelBubble property of the original event to true
+		e.cancelBubble = true;
+	},
+	stopImmediatePropagation: function() {
+		this.isImmediatePropagationStopped = returnTrue;
+		this.stopPropagation();
+	}
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+	jQuery.event.special.submit = {
+		setup: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Lazy-add a submit handler when a descendant form may potentially be submitted
+			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+				// Node name check avoids a VML-related crash in IE (#9807)
+				var elem = e.target,
+					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+				if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+					jQuery.event.add( form, "submit._submit", function( event ) {
+						event._submit_bubble = true;
+					});
+					jQuery._data( form, "submitBubbles", true );
+				}
+			});
+			// return undefined since we don't need an event listener
+		},
+
+		postDispatch: function( event ) {
+			// If form was submitted by the user, bubble the event up the tree
+			if ( event._submit_bubble ) {
+				delete event._submit_bubble;
+				if ( this.parentNode && !event.isTrigger ) {
+					jQuery.event.simulate( "submit", this.parentNode, event, true );
+				}
+			}
+		},
+
+		teardown: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+			jQuery.event.remove( this, "._submit" );
+		}
+	};
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+	jQuery.event.special.change = {
+
+		setup: function() {
+
+			if ( rformElems.test( this.nodeName ) ) {
+				// IE doesn't fire change on a check/radio until blur; trigger it on click
+				// after a propertychange. Eat the blur-change in special.change.handle.
+				// This still fires onchange a second time for check/radio after blur.
+				if ( this.type === "checkbox" || this.type === "radio" ) {
+					jQuery.event.add( this, "propertychange._change", function( event ) {
+						if ( event.originalEvent.propertyName === "checked" ) {
+							this._just_changed = true;
+						}
+					});
+					jQuery.event.add( this, "click._change", function( event ) {
+						if ( this._just_changed && !event.isTrigger ) {
+							this._just_changed = false;
+						}
+						// Allow triggered, simulated change events (#11500)
+						jQuery.event.simulate( "change", this, event, true );
+					});
+				}
+				return false;
+			}
+			// Delegated event; lazy-add a change handler on descendant inputs
+			jQuery.event.add( this, "beforeactivate._change", function( e ) {
+				var elem = e.target;
+
+				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+					jQuery.event.add( elem, "change._change", function( event ) {
+						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+							jQuery.event.simulate( "change", this.parentNode, event, true );
+						}
+					});
+					jQuery._data( elem, "changeBubbles", true );
+				}
+			});
+		},
+
+		handle: function( event ) {
+			var elem = event.target;
+
+			// Swallow native change events from checkbox/radio, we already triggered them above
+			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+				return event.handleObj.handler.apply( this, arguments );
+			}
+		},
+
+		teardown: function() {
+			jQuery.event.remove( this, "._change" );
+
+			return !rformElems.test( this.nodeName );
+		}
+	};
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler while someone wants focusin/focusout
+		var attaches = 0,
+			handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				if ( attaches++ === 0 ) {
+					document.addEventListener( orig, handler, true );
+				}
+			},
+			teardown: function() {
+				if ( --attaches === 0 ) {
+					document.removeEventListener( orig, handler, true );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var type, origFn;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = data || selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on( types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[0];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+	rparentsprev = /^(?:parents|prev(?:Until|All))/,
+	rneedsContext = jQuery.expr.match.needsContext,
+	// methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var i,
+			ret = [],
+			self = this,
+			len = self.length;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter(function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			}) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+
+	has: function( target ) {
+		var i,
+			targets = jQuery( target, this ),
+			len = targets.length;
+
+		return this.filter(function() {
+			for ( i = 0; i < len; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], true) );
+	},
+
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], false) );
+	},
+
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			ret = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && (pos ?
+					pos.index(cur) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector(cur, selectors)) ) {
+
+					cur = ret.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+	},
+
+	// Determine the position of an element within
+	// the matched set of elements
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// index in selector
+		if ( typeof elem === "string" ) {
+			return jQuery.inArray( this[0], jQuery( elem ) );
+		}
+
+		// Locate the position of the desired element
+		return jQuery.inArray(
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[0] : elem, this );
+	},
+
+	add: function( selector, context ) {
+		var set = typeof selector === "string" ?
+				jQuery( selector, context ) :
+				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+			all = jQuery.merge( this.get(), set );
+
+		return this.pushStack( jQuery.unique(all) );
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter(selector)
+		);
+	}
+});
+
+function sibling( cur, dir ) {
+	do {
+		cur = cur[ dir ];
+	} while ( cur && cur.nodeType !== 1 );
+
+	return cur;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return jQuery.nodeName( elem, "iframe" ) ?
+			elem.contentDocument || elem.contentWindow.document :
+			jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var ret = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			ret = jQuery.filter( selector, ret );
+		}
+
+		if ( this.length > 1 ) {
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				ret = jQuery.unique( ret );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				ret = ret.reverse();
+			}
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+jQuery.extend({
+	filter: function( expr, elems, not ) {
+		var elem = elems[ 0 ];
+
+		if ( not ) {
+			expr = ":not(" + expr + ")";
+		}
+
+		return elems.length === 1 && elem.nodeType === 1 ?
+			jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+			jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+				return elem.nodeType === 1;
+			}));
+	},
+
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			cur = elem[ dir ];
+
+		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+			if ( cur.nodeType === 1 ) {
+				matched.push( cur );
+			}
+			cur = cur[dir];
+		}
+		return matched;
+	},
+
+	sibling: function( n, elem ) {
+		var r = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				r.push( n );
+			}
+		}
+
+		return r;
+	}
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		});
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		});
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( isSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+	});
+}
+function createSafeFragment( document ) {
+	var list = nodeNames.split( "|" ),
+		safeFrag = document.createDocumentFragment();
+
+	if ( safeFrag.createElement ) {
+		while ( list.length ) {
+			safeFrag.createElement(
+				list.pop()
+			);
+		}
+	}
+	return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+	rleadingWhitespace = /^\s+/,
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+	rtagName = /<([\w:]+)/,
+	rtbody = /<tbody/i,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style|link)/i,
+	manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /^$|\/(?:java|ecma)script/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+	// We have to close these tags to support XHTML (#13200)
+	wrapMap = {
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+		legend: [ 1, "<fieldset>", "</fieldset>" ],
+		area: [ 1, "<map>", "</map>" ],
+		param: [ 1, "<object>", "</object>" ],
+		thead: [ 1, "<table>", "</table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+		// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+		// unless wrapped in a div with non-breaking characters in front of it.
+		_default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
+	},
+	safeFragment = createSafeFragment( document ),
+	fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+	text: function( value ) {
+		return jQuery.access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		});
+	},
+
+	after: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		});
+	},
+
+	// keepData is for internal use only--do not document
+	remove: function( selector, keepData ) {
+		var elem,
+			elems = selector ? jQuery.filter( selector, this ) : this,
+			i = 0;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+
+			if ( !keepData && elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem ) );
+			}
+
+			if ( elem.parentNode ) {
+				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+					setGlobalEval( getAll( elem, "script" ) );
+				}
+				elem.parentNode.removeChild( elem );
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; (elem = this[i]) != null; i++ ) {
+			// Remove element nodes and prevent memory leaks
+			if ( elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem, false ) );
+			}
+
+			// Remove any remaining nodes
+			while ( elem.firstChild ) {
+				elem.removeChild( elem.firstChild );
+			}
+
+			// If this is a select, ensure that it displays empty (#12336)
+			// Support: IE<9
+			if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+				elem.options.length = 0;
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function () {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		return jQuery.access( this, function( value ) {
+			var elem = this[0] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined ) {
+				return elem.nodeType === 1 ?
+					elem.innerHTML.replace( rinlinejQuery, "" ) :
+					undefined;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
+				( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+				!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+				value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+				try {
+					for (; i < l; i++ ) {
+						// Remove element nodes and prevent memory leaks
+						elem = this[i] || {};
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch(e) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var
+			// Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+			args = jQuery.map( this, function( elem ) {
+				return [ elem.nextSibling, elem.parentNode ];
+			}),
+			i = 0;
+
+		// Make the changes, replacing each context element with the new content
+		this.domManip( arguments, function( elem ) {
+			var next = args[ i++ ],
+				parent = args[ i++ ];
+
+			if ( parent ) {
+				// Don't use the snapshot next if it has moved (#13810)
+				if ( next && next.parentNode !== parent ) {
+					next = this.nextSibling;
+				}
+				jQuery( this ).remove();
+				parent.insertBefore( elem, next );
+			}
+		// Allow new content to include elements from the context set
+		}, true );
+
+		// Force removal if there was no new content (e.g., from empty arguments)
+		return i ? this : this.remove();
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, callback, allowIntersection ) {
+
+		// Flatten any nested arrays
+		args = core_concat.apply( [], args );
+
+		var first, node, hasScripts,
+			scripts, doc, fragment,
+			i = 0,
+			l = this.length,
+			set = this,
+			iNoClone = l - 1,
+			value = args[0],
+			isFunction = jQuery.isFunction( value );
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+			return this.each(function( index ) {
+				var self = set.eq( index );
+				if ( isFunction ) {
+					args[0] = value.call( this, index, self.html() );
+				}
+				self.domManip( args, callback, allowIntersection );
+			});
+		}
+
+		if ( l ) {
+			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+			first = fragment.firstChild;
+
+			if ( fragment.childNodes.length === 1 ) {
+				fragment = first;
+			}
+
+			if ( first ) {
+				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+				hasScripts = scripts.length;
+
+				// Use the original fragment for the last item instead of the first because it can end up
+				// being emptied incorrectly in certain situations (#8070).
+				for ( ; i < l; i++ ) {
+					node = fragment;
+
+					if ( i !== iNoClone ) {
+						node = jQuery.clone( node, true, true );
+
+						// Keep references to cloned scripts for later restoration
+						if ( hasScripts ) {
+							jQuery.merge( scripts, getAll( node, "script" ) );
+						}
+					}
+
+					callback.call( this[i], node, i );
+				}
+
+				if ( hasScripts ) {
+					doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+					// Reenable scripts
+					jQuery.map( scripts, restoreScript );
+
+					// Evaluate executable scripts on first document insertion
+					for ( i = 0; i < hasScripts; i++ ) {
+						node = scripts[ i ];
+						if ( rscriptType.test( node.type || "" ) &&
+							!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+							if ( node.src ) {
+								// Hope ajax is available...
+								jQuery._evalUrl( node.src );
+							} else {
+								jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+							}
+						}
+					}
+				}
+
+				// Fix #11809: Avoid leaking memory
+				fragment = first = null;
+			}
+		}
+
+		return this;
+	}
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+	return jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+		elem.getElementsByTagName("tbody")[0] ||
+			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+		elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+	if ( match ) {
+		elem.type = match[1];
+	} else {
+		elem.removeAttribute("type");
+	}
+	return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var elem,
+		i = 0;
+	for ( ; (elem = elems[i]) != null; i++ ) {
+		jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+	}
+}
+
+function cloneCopyEvent( src, dest ) {
+
+	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+		return;
+	}
+
+	var type, i, l,
+		oldData = jQuery._data( src ),
+		curData = jQuery._data( dest, oldData ),
+		events = oldData.events;
+
+	if ( events ) {
+		delete curData.handle;
+		curData.events = {};
+
+		for ( type in events ) {
+			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+				jQuery.event.add( dest, type, events[ type ][ i ] );
+			}
+		}
+	}
+
+	// make the cloned public data object a copy from the original
+	if ( curData.data ) {
+		curData.data = jQuery.extend( {}, curData.data );
+	}
+}
+
+function fixCloneNodeIssues( src, dest ) {
+	var nodeName, e, data;
+
+	// We do not need to do anything for non-Elements
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	nodeName = dest.nodeName.toLowerCase();
+
+	// IE6-8 copies events bound via attachEvent when using cloneNode.
+	if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+		data = jQuery._data( dest );
+
+		for ( e in data.events ) {
+			jQuery.removeEvent( dest, e, data.handle );
+		}
+
+		// Event data gets referenced instead of copied if the expando gets copied too
+		dest.removeAttribute( jQuery.expando );
+	}
+
+	// IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+	if ( nodeName === "script" && dest.text !== src.text ) {
+		disableScript( dest ).text = src.text;
+		restoreScript( dest );
+
+	// IE6-10 improperly clones children of object elements using classid.
+	// IE10 throws NoModificationAllowedError if parent is null, #12132.
+	} else if ( nodeName === "object" ) {
+		if ( dest.parentNode ) {
+			dest.outerHTML = src.outerHTML;
+		}
+
+		// This path appears unavoidable for IE9. When cloning an object
+		// element in IE9, the outerHTML strategy above is not sufficient.
+		// If the src has innerHTML and the destination does not,
+		// copy the src.innerHTML into the dest.innerHTML. #10324
+		if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+			dest.innerHTML = src.innerHTML;
+		}
+
+	} else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+		// IE6-8 fails to persist the checked state of a cloned checkbox
+		// or radio button. Worse, IE6-7 fail to give the cloned element
+		// a checked appearance if the defaultChecked value isn't also set
+
+		dest.defaultChecked = dest.checked = src.checked;
+
+		// IE6-7 get confused and end up setting the value of a cloned
+		// checkbox/radio button to an empty string instead of "on"
+		if ( dest.value !== src.value ) {
+			dest.value = src.value;
+		}
+
+	// IE6-8 fails to return the selected option to the default selected
+	// state when cloning options
+	} else if ( nodeName === "option" ) {
+		dest.defaultSelected = dest.selected = src.defaultSelected;
+
+	// IE6-8 fails to set the defaultValue to the correct value when
+	// cloning other types of input fields
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			i = 0,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone(true);
+			jQuery( insert[i] )[ original ]( elems );
+
+			// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+			core_push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+function getAll( context, tag ) {
+	var elems, elem,
+		i = 0,
+		found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+			typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+			undefined;
+
+	if ( !found ) {
+		for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+			if ( !tag || jQuery.nodeName( elem, tag ) ) {
+				found.push( elem );
+			} else {
+				jQuery.merge( found, getAll( elem, tag ) );
+			}
+		}
+	}
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], found ) :
+		found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+	if ( manipulation_rcheckableType.test( elem.type ) ) {
+		elem.defaultChecked = elem.checked;
+	}
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var destElements, node, clone, i, srcElements,
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+			clone = elem.cloneNode( true );
+
+		// IE<=8 does not properly clone detached, unknown element nodes
+		} else {
+			fragmentDiv.innerHTML = elem.outerHTML;
+			fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+		}
+
+		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			// Fix all IE cloning issues
+			for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+				// Ensure that the destination node is not null; Fixes #9587
+				if ( destElements[i] ) {
+					fixCloneNodeIssues( node, destElements[i] );
+				}
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+					cloneCopyEvent( node, destElements[i] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		destElements = srcElements = node = null;
+
+		// Return the cloned set
+		return clone;
+	},
+
+	buildFragment: function( elems, context, scripts, selection ) {
+		var j, elem, contains,
+			tmp, tag, tbody, wrap,
+			l = elems.length,
+
+			// Ensure a safe fragment
+			safe = createSafeFragment( context ),
+
+			nodes = [],
+			i = 0;
+
+		for ( ; i < l; i++ ) {
+			elem = elems[ i ];
+
+			if ( elem || elem === 0 ) {
+
+				// Add nodes directly
+				if ( jQuery.type( elem ) === "object" ) {
+					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+				// Convert non-html into a text node
+				} else if ( !rhtml.test( elem ) ) {
+					nodes.push( context.createTextNode( elem ) );
+
+				// Convert html into DOM nodes
+				} else {
+					tmp = tmp || safe.appendChild( context.createElement("div") );
+
+					// Deserialize a standard representation
+					tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+					wrap = wrapMap[ tag ] || wrapMap._default;
+
+					tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
+
+					// Descend through wrappers to the right content
+					j = wrap[0];
+					while ( j-- ) {
+						tmp = tmp.lastChild;
+					}
+
+					// Manually add leading whitespace removed by IE
+					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+						nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+					}
+
+					// Remove IE's autoinserted <tbody> from table fragments
+					if ( !jQuery.support.tbody ) {
+
+						// String was a <table>, *may* have spurious <tbody>
+						elem = tag === "table" && !rtbody.test( elem ) ?
+							tmp.firstChild :
+
+							// String was a bare <thead> or <tfoot>
+							wrap[1] === "<table>" && !rtbody.test( elem ) ?
+								tmp :
+								0;
+
+						j = elem && elem.childNodes.length;
+						while ( j-- ) {
+							if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+								elem.removeChild( tbody );
+							}
+						}
+					}
+
+					jQuery.merge( nodes, tmp.childNodes );
+
+					// Fix #12392 for WebKit and IE > 9
+					tmp.textContent = "";
+
+					// Fix #12392 for oldIE
+					while ( tmp.firstChild ) {
+						tmp.removeChild( tmp.firstChild );
+					}
+
+					// Remember the top-level container for proper cleanup
+					tmp = safe.lastChild;
+				}
+			}
+		}
+
+		// Fix #11356: Clear elements from fragment
+		if ( tmp ) {
+			safe.removeChild( tmp );
+		}
+
+		// Reset defaultChecked for any radios and checkboxes
+		// about to be appended to the DOM in IE 6/7 (#8060)
+		if ( !jQuery.support.appendChecked ) {
+			jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+		}
+
+		i = 0;
+		while ( (elem = nodes[ i++ ]) ) {
+
+			// #4087 - If origin and destination elements are the same, and this is
+			// that element, do not do anything
+			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+				continue;
+			}
+
+			contains = jQuery.contains( elem.ownerDocument, elem );
+
+			// Append to fragment
+			tmp = getAll( safe.appendChild( elem ), "script" );
+
+			// Preserve script evaluation history
+			if ( contains ) {
+				setGlobalEval( tmp );
+			}
+
+			// Capture executables
+			if ( scripts ) {
+				j = 0;
+				while ( (elem = tmp[ j++ ]) ) {
+					if ( rscriptType.test( elem.type || "" ) ) {
+						scripts.push( elem );
+					}
+				}
+			}
+		}
+
+		tmp = null;
+
+		return safe;
+	},
+
+	cleanData: function( elems, /* internal */ acceptData ) {
+		var elem, type, id, data,
+			i = 0,
+			internalKey = jQuery.expando,
+			cache = jQuery.cache,
+			deleteExpando = jQuery.support.deleteExpando,
+			special = jQuery.event.special;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+
+			if ( acceptData || jQuery.acceptData( elem ) ) {
+
+				id = elem[ internalKey ];
+				data = id && cache[ id ];
+
+				if ( data ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Remove cache only if it was not already removed by jQuery.event.remove
+					if ( cache[ id ] ) {
+
+						delete cache[ id ];
+
+						// IE does not allow us to delete expando properties from nodes,
+						// nor does it have a removeAttribute function on Document nodes;
+						// we must handle all of these cases
+						if ( deleteExpando ) {
+							delete elem[ internalKey ];
+
+						} else if ( typeof elem.removeAttribute !== core_strundefined ) {
+							elem.removeAttribute( internalKey );
+
+						} else {
+							elem[ internalKey ] = null;
+						}
+
+						core_deletedIds.push( id );
+					}
+				}
+			}
+		}
+	},
+
+	_evalUrl: function( url ) {
+		return jQuery.ajax({
+			url: url,
+			type: "GET",
+			dataType: "script",
+			async: false,
+			global: false,
+			"throws": true
+		});
+	}
+});
+jQuery.fn.extend({
+	wrapAll: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[0] ) {
+			// The elements to wrap the target around
+			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+			if ( this[0].parentNode ) {
+				wrap.insertBefore( this[0] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+					elem = elem.firstChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function(i) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	}
+});
+var iframe, getStyles, curCSS,
+	ralpha = /alpha\([^)]*\)/i,
+	ropacity = /opacity\s*=\s*([^)]*)/,
+	rposition = /^(top|right|bottom|left)$/,
+	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rmargin = /^margin/,
+	rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+	rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+	rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+	elemdisplay = { BODY: "block" },
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: 0,
+		fontWeight: 400
+	},
+
+	cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+	// shortcut for names that are not vendor prefixed
+	if ( name in style ) {
+		return name;
+	}
+
+	// check for vendor prefixed names
+	var capName = name.charAt(0).toUpperCase() + name.slice(1),
+		origName = name,
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in style ) {
+			return name;
+		}
+	}
+
+	return origName;
+}
+
+function isHidden( elem, el ) {
+	// isHidden might be called from jQuery#filter function;
+	// in that case, element will be second argument
+	elem = el || elem;
+	return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+	var display, elem, hidden,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		values[ index ] = jQuery._data( elem, "olddisplay" );
+		display = elem.style.display;
+		if ( show ) {
+			// Reset the inline display of this element to learn if it is
+			// being hidden by cascaded rules or not
+			if ( !values[ index ] && display === "none" ) {
+				elem.style.display = "";
+			}
+
+			// Set elements which have been overridden with display: none
+			// in a stylesheet to whatever the default browser style is
+			// for such an element
+			if ( elem.style.display === "" && isHidden( elem ) ) {
+				values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+			}
+		} else {
+
+			if ( !values[ index ] ) {
+				hidden = isHidden( elem );
+
+				if ( display && display !== "none" || !hidden ) {
+					jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+				}
+			}
+		}
+	}
+
+	// Set the display of most of the elements in a second loop
+	// to avoid the constant reflow
+	for ( index = 0; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+			elem.style.display = show ? values[ index ] || "" : "none";
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend({
+	css: function( name, value ) {
+		return jQuery.access( this, function( elem, name, value ) {
+			var len, styles,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	},
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each(function() {
+			if ( isHidden( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"columnCount": true,
+		"fillOpacity": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		// normalize float css property
+		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// convert relative number strings (+= or -=) to relative numbers. #7345
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that NaN and null values aren't set. See: #7116
+			if ( value == null || type === "number" && isNaN( value ) ) {
+				return;
+			}
+
+			// If a number was passed in, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+			// but it would mean to define eight (for every problematic property) identical functions
+			if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+				// Fixes bug #5509
+				try {
+					style[ name ] = value;
+				} catch(e) {}
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var num, val, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		//convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Return, converting to number if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+	getStyles = function( elem ) {
+		return window.getComputedStyle( elem, null );
+	};
+
+	curCSS = function( elem, name, _computed ) {
+		var width, minWidth, maxWidth,
+			computed = _computed || getStyles( elem ),
+
+			// getPropertyValue is only needed for .css('filter') in IE9, see #12537
+			ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+			style = elem.style;
+
+		if ( computed ) {
+
+			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+				ret = jQuery.style( elem, name );
+			}
+
+			// A tribute to the "awesome hack by Dean Edwards"
+			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+				// Remember the original values
+				width = style.width;
+				minWidth = style.minWidth;
+				maxWidth = style.maxWidth;
+
+				// Put in the new values to get a computed value out
+				style.minWidth = style.maxWidth = style.width = ret;
+				ret = computed.width;
+
+				// Revert the changed values
+				style.width = width;
+				style.minWidth = minWidth;
+				style.maxWidth = maxWidth;
+			}
+		}
+
+		return ret;
+	};
+} else if ( document.documentElement.currentStyle ) {
+	getStyles = function( elem ) {
+		return elem.currentStyle;
+	};
+
+	curCSS = function( elem, name, _computed ) {
+		var left, rs, rsLeft,
+			computed = _computed || getStyles( elem ),
+			ret = computed ? computed[ name ] : undefined,
+			style = elem.style;
+
+		// Avoid setting ret to empty string here
+		// so we don't default to auto
+		if ( ret == null && style && style[ name ] ) {
+			ret = style[ name ];
+		}
+
+		// From the awesome hack by Dean Edwards
+		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+		// If we're not dealing with a regular pixel number
+		// but a number that has a weird ending, we need to convert it to pixels
+		// but not position css attributes, as those are proportional to the parent element instead
+		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+			// Remember the original values
+			left = style.left;
+			rs = elem.runtimeStyle;
+			rsLeft = rs && rs.left;
+
+			// Put in the new values to get a computed value out
+			if ( rsLeft ) {
+				rs.left = elem.currentStyle.left;
+			}
+			style.left = name === "fontSize" ? "1em" : ret;
+			ret = style.pixelLeft + "px";
+
+			// Revert the changed values
+			style.left = left;
+			if ( rsLeft ) {
+				rs.left = rsLeft;
+			}
+		}
+
+		return ret === "" ? "auto" : ret;
+	};
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+	var matches = rnumsplit.exec( value );
+	return matches ?
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+		// If we already have the right measurement, avoid augmentation
+		4 :
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+		// both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// at this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+			// at this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// at this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var valueIsBorderBox = true,
+		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test(val) ) {
+			return val;
+		}
+
+		// we need the check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+	var doc = document,
+		display = elemdisplay[ nodeName ];
+
+	if ( !display ) {
+		display = actualDisplay( nodeName, doc );
+
+		// If the simple way fails, read from inside an iframe
+		if ( display === "none" || !display ) {
+			// Use the already-created iframe if possible
+			iframe = ( iframe ||
+				jQuery("<iframe frameborder='0' width='0' height='0'/>")
+				.css( "cssText", "display:block !important" )
+			).appendTo( doc.documentElement );
+
+			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+			doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+			doc.write("<!doctype html><html><body>");
+			doc.close();
+
+			display = actualDisplay( nodeName, doc );
+			iframe.detach();
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+	var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+		display = jQuery.css( elem[0], "display" );
+	elem.remove();
+	return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+				// certain elements can have dimension info if we invisibly show them
+				// however, it must have a current display style that would benefit from this
+				return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+					jQuery.swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, name, extra );
+					}) :
+					getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var styles = extra && getStyles( elem );
+			return setPositiveNumber( elem, value, extra ?
+				augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				) : 0
+			);
+		}
+	};
+});
+
+if ( !jQuery.support.opacity ) {
+	jQuery.cssHooks.opacity = {
+		get: function( elem, computed ) {
+			// IE uses filters for opacity
+			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+				( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+				computed ? "1" : "";
+		},
+
+		set: function( elem, value ) {
+			var style = elem.style,
+				currentStyle = elem.currentStyle,
+				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+				filter = currentStyle && currentStyle.filter || style.filter || "";
+
+			// IE has trouble with opacity if it does not have layout
+			// Force it by setting the zoom level
+			style.zoom = 1;
+
+			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+			// if value === "", then remove inline opacity #12685
+			if ( ( value >= 1 || value === "" ) &&
+					jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+					style.removeAttribute ) {
+
+				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+				// if "filter:" is present at all, clearType is disabled, we want to avoid this
+				// style.removeAttribute is IE Only, but so apparently is this code path...
+				style.removeAttribute( "filter" );
+
+				// if there is no filter style applied in a css rule or unset inline opacity, we are done
+				if ( value === "" || currentStyle && !currentStyle.filter ) {
+					return;
+				}
+			}
+
+			// otherwise, set new filter values
+			style.filter = ralpha.test( filter ) ?
+				filter.replace( ralpha, opacity ) :
+				filter + " " + opacity;
+		}
+	};
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+	if ( !jQuery.support.reliableMarginRight ) {
+		jQuery.cssHooks.marginRight = {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+					// Work around by temporarily setting element display to inline-block
+					return jQuery.swap( elem, { "display": "inline-block" },
+						curCSS, [ elem, "marginRight" ] );
+				}
+			}
+		};
+	}
+
+	// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+	// getComputedStyle returns percent when specified for top/left/bottom/right
+	// rather than make the css module depend on the offset module, we just check for it here
+	if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+		jQuery.each( [ "top", "left" ], function( i, prop ) {
+			jQuery.cssHooks[ prop ] = {
+				get: function( elem, computed ) {
+					if ( computed ) {
+						computed = curCSS( elem, prop );
+						// if curCSS returns percentage, fallback to offset
+						return rnumnonpx.test( computed ) ?
+							jQuery( elem ).position()[ prop ] + "px" :
+							computed;
+					}
+				}
+			};
+		});
+	}
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.hidden = function( elem ) {
+		// Support: Opera <= 12.12
+		// Opera reports offsetWidths and offsetHeights less than zero on some elements
+		return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+			(!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+	};
+
+	jQuery.expr.filters.visible = function( elem ) {
+		return !jQuery.expr.filters.hidden( elem );
+	};
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// assumes a single number if not a string
+				parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+});
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map(function(){
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		})
+		.filter(function(){
+			var type = this.type;
+			// Use .is(":disabled") so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !manipulation_rcheckableType.test( type ) );
+		})
+		.map(function( i, elem ){
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ){
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, value ) {
+			// If value is a function, invoke it and return its value
+			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+		};
+
+	// Set traditional to true for jQuery <= 1.3.2 behavior.
+	if ( traditional === undefined ) {
+		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		});
+
+	} else {
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+});
+
+jQuery.fn.extend({
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+	}
+});
+var
+	// Document location
+	ajaxLocParts,
+	ajaxLocation,
+	ajax_nonce = jQuery.now(),
+
+	ajax_rquery = /\?/,
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+	// Keep a copy of the old load method
+	_load = jQuery.fn.load,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+	ajaxLocation = location.href;
+} catch( e ) {
+	// Use the href attribute of an A element
+	// since IE will modify it given document.location
+	ajaxLocation = document.createElement( "a" );
+	ajaxLocation.href = "";
+	ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+			// For each dataType in the dataTypeExpression
+			while ( (dataType = dataTypes[i++]) ) {
+				// Prepend if requested
+				if ( dataType[0] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+				// Otherwise append
+				} else {
+					(structure[ dataType ] = structure[ dataType ] || []).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		});
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var deep, key,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+	if ( typeof url !== "string" && _load ) {
+		return _load.apply( this, arguments );
+	}
+
+	var selector, response, type,
+		self = this,
+		off = url.indexOf(" ");
+
+	if ( off >= 0 ) {
+		selector = url.slice( off, url.length );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax({
+			url: url,
+
+			// if "type" variable is undefined, then "GET" method will be used
+			type: type,
+			dataType: "html",
+			data: params
+		}).done(function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		}).complete( callback && function( jqXHR, status ) {
+			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+		});
+	}
+
+	return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+	jQuery.fn[ type ] = function( fn ){
+		return this.on( type, fn );
+	};
+});
+
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		type: "GET",
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var // Cross-domain detection vars
+			parts,
+			// Loop variable
+			i,
+			// URL without anti-cache param
+			cacheURL,
+			// Response headers as string
+			responseHeadersString,
+			// timeout handle
+			timeoutTimer,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			transport,
+			// Response headers
+			responseHeaders,
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+				jQuery( callbackContext ) :
+				jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks("once memory"),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// The jqXHR state
+			state = 0,
+			// Default abort message
+			strAbort = "canceled",
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( (match = rheaders.exec( responseHeadersString )) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					var lname = name.toLowerCase();
+					if ( !state ) {
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( state < 2 ) {
+							for ( code in map ) {
+								// Lazy-add the new callback in a way that preserves old ones
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						} else {
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR ).complete = completeDeferred.add;
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+		// A cross-domain request is in order when we have a protocol:host:port mismatch
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( state === 2 ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		fireGlobals = s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger("ajaxStart");
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		cacheURL = s.url;
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+				s.url = rts.test( cacheURL ) ?
+
+					// If there is already a '_' parameter, set its value
+					cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+					// Otherwise add one to the end
+					cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+			}
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout(function() {
+					jqXHR.abort("timeout");
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader("Last-Modified");
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader("etag");
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+				// We extract error from statusText
+				// then normalize statusText and status for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger("ajaxStop");
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		});
+	};
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+	var firstDataType, ct, finalDataType, type,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s[ "throws" ] ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /(?:java|ecma)script/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+		s.global = false;
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+
+		var script,
+			head = document.head || jQuery("head")[0] || document.documentElement;
+
+		return {
+
+			send: function( _, callback ) {
+
+				script = document.createElement("script");
+
+				script.async = true;
+
+				if ( s.scriptCharset ) {
+					script.charset = s.scriptCharset;
+				}
+
+				script.src = s.url;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+						// Handle memory leak in IE
+						script.onload = script.onreadystatechange = null;
+
+						// Remove the script
+						if ( script.parentNode ) {
+							script.parentNode.removeChild( script );
+						}
+
+						// Dereference the script
+						script = null;
+
+						// Callback if not abort
+						if ( !isAbort ) {
+							callback( 200, "success" );
+						}
+					}
+				};
+
+				// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				head.insertBefore( script, head.firstChild );
+			},
+
+			abort: function() {
+				if ( script ) {
+					script.onload( undefined, true );
+				}
+			}
+		};
+	}
+});
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always(function() {
+			// Restore preexisting value
+			window[ callbackName ] = overwritten;
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+				// make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		});
+
+		// Delegate to script
+		return "script";
+	}
+});
+var xhrCallbacks, xhrSupported,
+	xhrId = 0,
+	// #5280: Internet Explorer will keep connections alive if we don't abort on unload
+	xhrOnUnloadAbort = window.ActiveXObject && function() {
+		// Abort all pending requests
+		var key;
+		for ( key in xhrCallbacks ) {
+			xhrCallbacks[ key ]( undefined, true );
+		}
+	};
+
+// Functions to create xhrs
+function createStandardXHR() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch( e ) {}
+}
+
+function createActiveXHR() {
+	try {
+		return new window.ActiveXObject("Microsoft.XMLHTTP");
+	} catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+	/* Microsoft failed to properly
+	 * implement the XMLHttpRequest in IE7 (can't request local files),
+	 * so we use the ActiveXObject when it is available
+	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+	 * we need a fallback.
+	 */
+	function() {
+		return !this.isLocal && createStandardXHR() || createActiveXHR();
+	} :
+	// For all other browsers, use the standard XMLHttpRequest object
+	createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+	jQuery.ajaxTransport(function( s ) {
+		// Cross domain only allowed if supported through XMLHttpRequest
+		if ( !s.crossDomain || jQuery.support.cors ) {
+
+			var callback;
+
+			return {
+				send: function( headers, complete ) {
+
+					// Get a new xhr
+					var handle, i,
+						xhr = s.xhr();
+
+					// Open the socket
+					// Passing null username, generates a login popup on Opera (#2865)
+					if ( s.username ) {
+						xhr.open( s.type, s.url, s.async, s.username, s.password );
+					} else {
+						xhr.open( s.type, s.url, s.async );
+					}
+
+					// Apply custom fields if provided
+					if ( s.xhrFields ) {
+						for ( i in s.xhrFields ) {
+							xhr[ i ] = s.xhrFields[ i ];
+						}
+					}
+
+					// Override mime type if needed
+					if ( s.mimeType && xhr.overrideMimeType ) {
+						xhr.overrideMimeType( s.mimeType );
+					}
+
+					// X-Requested-With header
+					// For cross-domain requests, seeing as conditions for a preflight are
+					// akin to a jigsaw puzzle, we simply never set it to be sure.
+					// (it can always be set on a per-request basis or even using ajaxSetup)
+					// For same-domain requests, won't change header if already provided.
+					if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+						headers["X-Requested-With"] = "XMLHttpRequest";
+					}
+
+					// Need an extra try/catch for cross domain requests in Firefox 3
+					try {
+						for ( i in headers ) {
+							xhr.setRequestHeader( i, headers[ i ] );
+						}
+					} catch( err ) {}
+
+					// Do send the request
+					// This may raise an exception which is actually
+					// handled in jQuery.ajax (so no try/catch here)
+					xhr.send( ( s.hasContent && s.data ) || null );
+
+					// Listener
+					callback = function( _, isAbort ) {
+						var status, responseHeaders, statusText, responses;
+
+						// Firefox throws exceptions when accessing properties
+						// of an xhr when a network error occurred
+						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+						try {
+
+							// Was never called and is aborted or complete
+							if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+								// Only called once
+								callback = undefined;
+
+								// Do not keep as active anymore
+								if ( handle ) {
+									xhr.onreadystatechange = jQuery.noop;
+									if ( xhrOnUnloadAbort ) {
+										delete xhrCallbacks[ handle ];
+									}
+								}
+
+								// If it's an abort
+								if ( isAbort ) {
+									// Abort it manually if needed
+									if ( xhr.readyState !== 4 ) {
+										xhr.abort();
+									}
+								} else {
+									responses = {};
+									status = xhr.status;
+									responseHeaders = xhr.getAllResponseHeaders();
+
+									// When requesting binary data, IE6-9 will throw an exception
+									// on any attempt to access responseText (#11426)
+									if ( typeof xhr.responseText === "string" ) {
+										responses.text = xhr.responseText;
+									}
+
+									// Firefox throws an exception when accessing
+									// statusText for faulty cross-domain requests
+									try {
+										statusText = xhr.statusText;
+									} catch( e ) {
+										// We normalize with Webkit giving an empty statusText
+										statusText = "";
+									}
+
+									// Filter status for non standard behaviors
+
+									// If the request is local and we have data: assume a success
+									// (success with no data won't get notified, that's the best we
+									// can do given current implementations)
+									if ( !status && s.isLocal && !s.crossDomain ) {
+										status = responses.text ? 200 : 404;
+									// IE - #1450: sometimes returns 1223 when it should be 204
+									} else if ( status === 1223 ) {
+										status = 204;
+									}
+								}
+							}
+						} catch( firefoxAccessException ) {
+							if ( !isAbort ) {
+								complete( -1, firefoxAccessException );
+							}
+						}
+
+						// Call complete if needed
+						if ( responses ) {
+							complete( status, statusText, responses, responseHeaders );
+						}
+					};
+
+					if ( !s.async ) {
+						// if we're in sync mode we fire the callback
+						callback();
+					} else if ( xhr.readyState === 4 ) {
+						// (IE6 & IE7) if it's in cache and has been
+						// retrieved directly we need to fire the callback
+						setTimeout( callback );
+					} else {
+						handle = ++xhrId;
+						if ( xhrOnUnloadAbort ) {
+							// Create the active xhrs callbacks list if needed
+							// and attach the unload handler
+							if ( !xhrCallbacks ) {
+								xhrCallbacks = {};
+								jQuery( window ).unload( xhrOnUnloadAbort );
+							}
+							// Add to list of active xhrs callbacks
+							xhrCallbacks[ handle ] = callback;
+						}
+						xhr.onreadystatechange = callback;
+					}
+				},
+
+				abort: function() {
+					if ( callback ) {
+						callback( undefined, true );
+					}
+				}
+			};
+		}
+	});
+}
+var fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+	rrun = /queueHooks$/,
+	animationPrefilters = [ defaultPrefilter ],
+	tweeners = {
+		"*": [function( prop, value ) {
+			var tween = this.createTween( prop, value ),
+				target = tween.cur(),
+				parts = rfxnum.exec( value ),
+				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+				// Starting value computation is required for potential unit mismatches
+				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+				scale = 1,
+				maxIterations = 20;
+
+			if ( start && start[ 3 ] !== unit ) {
+				// Trust units reported by jQuery.css
+				unit = unit || start[ 3 ];
+
+				// Make sure we update the tween properties later on
+				parts = parts || [];
+
+				// Iteratively approximate from a nonzero starting point
+				start = +target || 1;
+
+				do {
+					// If previous iteration zeroed out, double until we get *something*
+					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
+					scale = scale || ".5";
+
+					// Adjust and apply
+					start = start / scale;
+					jQuery.style( tween.elem, prop, start + unit );
+
+				// Update scale, tolerating zero or NaN from tween.cur()
+				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+			}
+
+			// Update tween properties
+			if ( parts ) {
+				start = tween.start = +start || +target || 0;
+				tween.unit = unit;
+				// If a +=/-= token was provided, we're doing a relative animation
+				tween.end = parts[ 1 ] ?
+					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+					+parts[ 2 ];
+			}
+
+			return tween;
+		}]
+	};
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout(function() {
+		fxNow = undefined;
+	});
+	return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+			// we're done with this property
+			return tween;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = animationPrefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+			// don't match elem in the :animated selector
+			delete tick.elem;
+		}),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length ; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise({
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, { specialEasing: {} }, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+					// if we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length ; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// resolve when we played the last frame
+				// otherwise, reject
+				if ( gotoEnd ) {
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		}),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length ; index++ ) {
+		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		})
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// not quite $.extend, this wont overwrite keys already present.
+			// also - reusing 'index' from above because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.split(" ");
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length ; index++ ) {
+			prop = props[ index ];
+			tweeners[ prop ] = tweeners[ prop ] || [];
+			tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			animationPrefilters.unshift( callback );
+		} else {
+			animationPrefilters.push( callback );
+		}
+	}
+});
+
+function defaultPrefilter( elem, props, opts ) {
+	/* jshint validthis: true */
+	var prop, value, toggle, tween, hooks, oldfire,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHidden( elem ),
+		dataShow = jQuery._data( elem, "fxshow" );
+
+	// handle queue: false promises
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always(function() {
+			// doing this makes sure that the complete handler will be called
+			// before this completes
+			anim.always(function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			});
+		});
+	}
+
+	// height/width overflow pass
+	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+		// Make sure that nothing sneaks out
+		// Record all 3 overflow attributes because IE does not
+		// change the overflow attribute when overflowX and
+		// overflowY are set to the same value
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Set display property to inline-block for height/width
+		// animations on inline elements that are having width/height animated
+		if ( jQuery.css( elem, "display" ) === "inline" &&
+				jQuery.css( elem, "float" ) === "none" ) {
+
+			// inline-level elements accept inline-block;
+			// block-level elements need to be inline with layout
+			if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+				style.display = "inline-block";
+
+			} else {
+				style.zoom = 1;
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		if ( !jQuery.support.shrinkWrapBlocks ) {
+			anim.always(function() {
+				style.overflow = opts.overflow[ 0 ];
+				style.overflowX = opts.overflow[ 1 ];
+				style.overflowY = opts.overflow[ 2 ];
+			});
+		}
+	}
+
+
+	// show/hide pass
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.exec( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+				continue;
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	if ( !jQuery.isEmptyObject( orig ) ) {
+		if ( dataShow ) {
+			if ( "hidden" in dataShow ) {
+				hidden = dataShow.hidden;
+			}
+		} else {
+			dataShow = jQuery._data( elem, "fxshow", {} );
+		}
+
+		// store state if its toggle - enables .stop().toggle() to "reverse"
+		if ( toggle ) {
+			dataShow.hidden = !hidden;
+		}
+		if ( hidden ) {
+			jQuery( elem ).show();
+		} else {
+			anim.done(function() {
+				jQuery( elem ).hide();
+			});
+		}
+		anim.done(function() {
+			var prop;
+			jQuery._removeData( elem, "fxshow" );
+			for ( prop in orig ) {
+				jQuery.style( elem, prop, orig[ prop ] );
+			}
+		});
+		for ( prop in orig ) {
+			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+			if ( !( prop in dataShow ) ) {
+				dataShow[ prop ] = tween.start;
+				if ( hidden ) {
+					tween.end = tween.start;
+					tween.start = prop === "width" || prop === "height" ? 1 : 0;
+				}
+			}
+		}
+	}
+}
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || "swing";
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			if ( tween.elem[ tween.prop ] != null &&
+				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails
+			// so, simple values such as "10px" are parsed to Float.
+			// complex values such as "rotate(1rad)" are returned as is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+			// use step hook for back compat - use cssHook if its there - use .style if its
+			// available and use plain properties where available
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+});
+
+jQuery.fn.extend({
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// show any hidden elements after setting opacity to 0
+		return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+			// animate to the value specified
+			.end().animate({ opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || jQuery._data( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = jQuery._data( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// start the next in the queue if the last step wasn't forced
+			// timers currently will call their complete callbacks, which will dequeue
+			// but only if they were gotoEnd
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each(function() {
+			var index,
+				data = jQuery._data( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// enable finishing flag on private data
+			data.finish = true;
+
+			// empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// turn off finishing flag
+			delete data.finish;
+		});
+	}
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		attrs = { height: type },
+		i = 0;
+
+	// if we include width, step value is 1 to do all cssExpand values,
+	// if we don't include width, step value is 2 to skip over Left and Right
+	includeWidth = includeWidth? 1 : 0;
+	for( ; i < 4 ; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx("show"),
+	slideUp: genFx("hide"),
+	slideToggle: genFx("toggle"),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+	// normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p*Math.PI ) / 2;
+	}
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+	var timer,
+		timers = jQuery.timers,
+		i = 0;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	if ( timer() && jQuery.timers.push( timer ) ) {
+		jQuery.fx.start();
+	}
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	clearInterval( timerId );
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+	// Default speed
+	_default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.animated = function( elem ) {
+		return jQuery.grep(jQuery.timers, function( fn ) {
+			return elem === fn.elem;
+		}).length;
+	};
+}
+jQuery.fn.offset = function( options ) {
+	if ( arguments.length ) {
+		return options === undefined ?
+			this :
+			this.each(function( i ) {
+				jQuery.offset.setOffset( this, options, i );
+			});
+	}
+
+	var docElem, win,
+		box = { top: 0, left: 0 },
+		elem = this[ 0 ],
+		doc = elem && elem.ownerDocument;
+
+	if ( !doc ) {
+		return;
+	}
+
+	docElem = doc.documentElement;
+
+	// Make sure it's not a disconnected DOM node
+	if ( !jQuery.contains( docElem, elem ) ) {
+		return box;
+	}
+
+	// If we don't have gBCR, just use 0,0 rather than error
+	// BlackBerry 5, iOS 3 (original iPhone)
+	if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+		box = elem.getBoundingClientRect();
+	}
+	win = getWindow( doc );
+	return {
+		top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
+		left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+	};
+};
+
+jQuery.offset = {
+
+	setOffset: function( elem, options, i ) {
+		var position = jQuery.css( elem, "position" );
+
+		// set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		var curElem = jQuery( elem ),
+			curOffset = curElem.offset(),
+			curCSSTop = jQuery.css( elem, "top" ),
+			curCSSLeft = jQuery.css( elem, "left" ),
+			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+			props = {}, curPosition = {}, curTop, curLeft;
+
+		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+
+jQuery.fn.extend({
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			parentOffset = { top: 0, left: 0 },
+			elem = this[ 0 ];
+
+		// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+			// we assume that getBoundingClientRect is available when computed position is fixed
+			offset = elem.getBoundingClientRect();
+		} else {
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+		}
+
+		// Subtract parent offsets and element margins
+		// note: when an element has margin: auto the offsetLeft and marginLeft
+		// are the same in Safari causing offset.left to incorrectly be 0
+		return {
+			top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || docElem;
+			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+			return offsetParent || docElem;
+		});
+	}
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+	var top = /Y/.test( prop );
+
+	jQuery.fn[ method ] = function( val ) {
+		return jQuery.access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? (prop in win) ? win[ prop ] :
+					win.document.documentElement[ method ] :
+					elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : jQuery( win ).scrollLeft(),
+					top ? val : jQuery( win ).scrollTop()
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length, null );
+	};
+});
+
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ?
+		elem :
+		elem.nodeType === 9 ?
+			elem.defaultView || elem.parentWindow :
+			false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+		// margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return jQuery.access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+					// isn't a whole lot we can do. See pull request at this URL for discussion:
+					// https://github.com/jquery/jquery/pull/764
+					return elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+					// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable, null );
+		};
+	});
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+	return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+	// Expose jQuery as module.exports in loaders that implement the Node
+	// module pattern (including browserify). Do not create the global, since
+	// the user will be storing it themselves locally, and globals are frowned
+	// upon in the Node module world.
+	module.exports = jQuery;
+} else {
+	// Otherwise expose jQuery to the global object as usual
+	window.jQuery = window.$ = jQuery;
+
+	// Register as a named AMD module, since jQuery can be concatenated with other
+	// files that may use define, but not via a proper concatenation script that
+	// understands anonymous AMD modules. A named AMD is safest and most robust
+	// way to register. Lowercase jquery is used because AMD module names are
+	// derived from file names, and jQuery is normally delivered in a lowercase
+	// file name. Do this after creating the global so that if an AMD module wants
+	// to call noConflict to hide this version of jQuery, it will work.
+	if ( typeof define === "function" && define.amd ) {
+		define( "jquery", [], function () { return jQuery; } );
+	}
+}
+
+})( window );
Index: /tags/2.6.0RC1/themes/default/js/jquery.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/jquery.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/jquery.min.js	(revision 25596)
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
Index: /tags/2.6.0RC1/themes/default/js/plugins/chosen.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/chosen.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/chosen.css	(revision 25596)
@@ -0,0 +1,413 @@
+/* @group Base */
+.chzn-container {
+  font-size: 13px;
+  position: relative;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+}
+.chzn-container .chzn-drop {
+  background: #fff;
+  border: 1px solid #aaa;
+  border-top: 0;
+  position: absolute;
+  top: 29px;
+  left: 0;
+  -webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15);
+  -moz-box-shadow   : 0 4px 5px rgba(0,0,0,.15);
+  box-shadow        : 0 4px 5px rgba(0,0,0,.15);
+  z-index: 1010;
+}
+/* @end */
+
+/* @group Single Chosen */
+.chzn-container-single .chzn-single {
+  background-color: #ffffff;
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 );   
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
+  background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
+  background-image: linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); 
+  -webkit-border-radius: 5px;
+  -moz-border-radius   : 5px;
+  border-radius        : 5px;
+  -moz-background-clip   : padding;
+  -webkit-background-clip: padding-box;
+  background-clip        : padding-box;
+  border: 1px solid #aaaaaa;
+  -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
+  -moz-box-shadow   : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
+  box-shadow        : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
+  display: block;
+  overflow: hidden;
+  white-space: nowrap;
+  position: relative;
+  height: 23px;
+  line-height: 24px;
+  padding: 0 0 0 8px;
+  color: #444444;
+  text-decoration: none;
+}
+.chzn-container-single .chzn-default {
+  color: #999;
+}
+.chzn-container-single .chzn-single span {
+  margin-right: 26px;
+  display: block;
+  overflow: hidden;
+  white-space: nowrap;
+  -o-text-overflow: ellipsis;
+  -ms-text-overflow: ellipsis;
+  text-overflow: ellipsis;
+}
+.chzn-container-single .chzn-single abbr {
+  display: block;
+  position: absolute;
+  right: 26px;
+  top: 6px;
+  width: 12px;
+  height: 12px;
+  font-size: 1px;
+  background: url('chosen-sprite.png') -42px 1px no-repeat;
+}
+.chzn-container-single .chzn-single abbr:hover {
+  background-position: -42px -10px;
+}
+.chzn-container-single.chzn-disabled .chzn-single abbr:hover {
+  background-position: -42px -10px;
+}
+.chzn-container-single .chzn-single div {
+  position: absolute;
+  right: 0;
+  top: 0;
+  display: block;
+  height: 100%;
+  width: 18px;
+}
+.chzn-container-single .chzn-single div b {
+  background: url('chosen-sprite.png') no-repeat 0px 2px;
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.chzn-container-single .chzn-search {
+  padding: 3px 4px;
+  position: relative;
+  margin: 0;
+  white-space: nowrap;
+  z-index: 1010;
+}
+.chzn-container-single .chzn-search input {
+  background: #fff url('chosen-sprite.png') no-repeat 100% -20px;
+  background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
+  background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background: url('chosen-sprite.png') no-repeat 100% -20px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background: url('chosen-sprite.png') no-repeat 100% -20px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background: url('chosen-sprite.png') no-repeat 100% -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
+  margin: 1px 0;
+  padding: 4px 20px 4px 5px;
+  outline: 0;
+  border: 1px solid #aaa;
+  font-family: sans-serif;
+  font-size: 1em;
+}
+.chzn-container-single .chzn-drop {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius   : 0 0 4px 4px;
+  border-radius        : 0 0 4px 4px;
+  -moz-background-clip   : padding;
+  -webkit-background-clip: padding-box;
+  background-clip        : padding-box;
+}
+/* @end */
+
+.chzn-container-single-nosearch .chzn-search input {
+  position: absolute;
+  left: -9000px;
+}
+
+/* @group Multi Chosen */
+.chzn-container-multi .chzn-choices {
+  background-color: #fff;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
+  border: 1px solid #aaa;
+  margin: 0;
+  padding: 0;
+  cursor: text;
+  overflow: hidden;
+  height: auto !important;
+  height: 1%;
+  position: relative;
+}
+.chzn-container-multi .chzn-choices li {
+  float: left;
+  list-style: none;
+}
+.chzn-container-multi .chzn-choices .search-field {
+  white-space: nowrap;
+  margin: 0;
+  padding: 0;
+}
+.chzn-container-multi .chzn-choices .search-field input {
+  color: #666;
+  background: transparent !important;
+  border: 0 !important;
+  font-family: sans-serif;
+  font-size: 100%;
+  height: 15px;
+  padding: 5px;
+  margin: 1px 0;
+  outline: 0;
+  -webkit-box-shadow: none;
+  -moz-box-shadow   : none;
+  box-shadow        : none;
+}
+.chzn-container-multi .chzn-choices .search-field .default {
+  color: #999;
+}
+.chzn-container-multi .chzn-choices .search-choice {
+  -webkit-border-radius: 3px;
+  -moz-border-radius   : 3px;
+  border-radius        : 3px;
+  -moz-background-clip   : padding;
+  -webkit-background-clip: padding-box;
+  background-clip        : padding-box;
+  background-color: #e4e4e4;
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 ); 
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); 
+  -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+  -moz-box-shadow   : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+  box-shadow        : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
+  color: #333;
+  border: 1px solid #aaaaaa;
+  line-height: 13px;
+  padding: 3px 20px 3px 5px;
+  margin: 3px 0 3px 5px;
+  position: relative;
+  cursor: default;
+}
+.chzn-container-multi .chzn-choices .search-choice.search-choice-disabled {
+  background-color: #e4e4e4;
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 );
+  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
+  color: #666;
+  border: 1px solid #cccccc;
+  padding-right: 5px;
+}
+.chzn-container-multi .chzn-choices .search-choice-focus {
+  background: #d4d4d4;
+}
+.chzn-container-multi .chzn-choices .search-choice .search-choice-close {
+  display: block;
+  position: absolute;
+  right: 3px;
+  top: 4px;
+  width: 12px;
+  height: 12px;
+  font-size: 1px;
+  background: url('chosen-sprite.png') -42px 1px no-repeat;
+}
+.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {
+  background-position: -42px -10px;
+}
+.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {
+  background-position: -42px -10px;
+}
+/* @end */
+
+/* @group Results */
+.chzn-container .chzn-results {
+  margin: 0 4px 4px 0;
+  max-height: 240px;
+  padding: 0 0 0 4px;
+  position: relative;
+  overflow-x: hidden;
+  overflow-y: auto;
+  -webkit-overflow-scrolling: touch;
+}
+.chzn-container-multi .chzn-results {
+  margin: -1px 0 0;
+  padding: 0;
+}
+.chzn-container .chzn-results li {
+  display: none;
+  line-height: 15px;
+  padding: 5px 6px;
+  margin: 0;
+  list-style: none;
+}
+.chzn-container .chzn-results .active-result {
+  cursor: pointer;
+  display: list-item;
+}
+.chzn-container .chzn-results .highlighted {
+  background-color: #3875d7;
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 );  
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
+  background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
+  background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
+  background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
+  background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
+  color: #fff;
+}
+.chzn-container .chzn-results li em {
+  background: #feffde;
+  font-style: normal;
+}
+.chzn-container .chzn-results .highlighted em {
+  background: transparent;
+}
+.chzn-container .chzn-results .no-results {
+  background: #f4f4f4;
+  display: list-item;
+}
+.chzn-container .chzn-results .group-result {
+  cursor: default;
+  color: #999;
+  font-weight: bold;
+}
+.chzn-container .chzn-results .group-option {
+  padding-left: 15px;
+}
+.chzn-container-multi .chzn-drop .result-selected {
+  display: none;
+}
+.chzn-container .chzn-results-scroll {
+  background: white;
+  margin: 0 4px;
+  position: absolute;
+  text-align: center;
+  width: 321px; /* This should by dynamic with js */
+  z-index: 1;
+}
+.chzn-container .chzn-results-scroll span {
+  display: inline-block;
+  height: 17px;
+  text-indent: -5000px;
+  width: 9px;
+}
+.chzn-container .chzn-results-scroll-down {
+  bottom: 0;
+}
+.chzn-container .chzn-results-scroll-down span {
+  background: url('chosen-sprite.png') no-repeat -4px -3px;
+}
+.chzn-container .chzn-results-scroll-up span {
+  background: url('chosen-sprite.png') no-repeat -22px -3px;
+}
+/* @end */
+
+/* @group Active  */
+.chzn-container-active .chzn-single {
+  -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
+  -moz-box-shadow   : 0 0 5px rgba(0,0,0,.3);
+  box-shadow        : 0 0 5px rgba(0,0,0,.3);
+  border: 1px solid #5897fb;
+}
+.chzn-container-active .chzn-single-with-drop {
+  border: 1px solid #aaa;
+  -webkit-box-shadow: 0 1px 0 #fff inset;
+  -moz-box-shadow   : 0 1px 0 #fff inset;
+  box-shadow        : 0 1px 0 #fff inset;
+  background-color: #eee;
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 );
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
+  background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
+  background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
+  background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
+  -webkit-border-bottom-left-radius : 0;
+  -webkit-border-bottom-right-radius: 0;
+  -moz-border-radius-bottomleft : 0;
+  -moz-border-radius-bottomright: 0;
+  border-bottom-left-radius : 0;
+  border-bottom-right-radius: 0;
+}
+.chzn-container-active .chzn-single-with-drop div {
+  background: transparent;
+  border-left: none;
+}
+.chzn-container-active .chzn-single-with-drop div b {
+  background-position: -18px 2px;
+}
+.chzn-container-active .chzn-choices {
+  -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
+  -moz-box-shadow   : 0 0 5px rgba(0,0,0,.3);
+  box-shadow        : 0 0 5px rgba(0,0,0,.3);
+  border: 1px solid #5897fb;
+}
+.chzn-container-active .chzn-choices .search-field input {
+  color: #111 !important;
+}
+/* @end */
+
+/* @group Disabled Support */
+.chzn-disabled {
+  cursor: default;
+  opacity:0.5 !important;
+}
+.chzn-disabled .chzn-single {
+  cursor: default;
+}
+.chzn-disabled .chzn-choices .search-choice .search-choice-close {
+  cursor: default;
+}
+
+/* @group Right to Left */
+.chzn-rtl { text-align: right; }
+.chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; }
+.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; }
+
+.chzn-rtl .chzn-single div { left: 3px; right: auto; }
+.chzn-rtl .chzn-single abbr {
+  left: 26px;
+  right: auto;
+}
+.chzn-rtl .chzn-choices .search-field input { direction: rtl; }
+.chzn-rtl .chzn-choices li { float: right; }
+.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; }
+.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; }
+.chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; }
+.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; }
+.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; }
+.chzn-rtl .chzn-search input {
+  background: #fff url('chosen-sprite.png') no-repeat -30px -20px;
+  background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-gradient(linear, 0 0, 0 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
+  background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);  
+  background: url('chosen-sprite.png') no-repeat -30px -20px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background: url('chosen-sprite.png') no-repeat -30px -20px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
+  background: url('chosen-sprite.png') no-repeat -30px -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
+  padding: 4px 5px 4px 20px;
+  direction: rtl;
+}
+.chzn-container-single.chzn-rtl .chzn-single div b {
+  background-position: 6px 2px;
+}
+.chzn-container-single.chzn-rtl .chzn-single-with-drop div b {
+  background-position: -12px 2px;
+}
+/* @end */
+
+/* @group Retina compatibility */
+@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi)  {
+  .chzn-rtl .chzn-search input, .chzn-container-single .chzn-single abbr, .chzn-container-single .chzn-single div b, .chzn-container-single .chzn-search input, .chzn-container-multi .chzn-choices .search-choice .search-choice-close, .chzn-container .chzn-results-scroll-down span, .chzn-container .chzn-results-scroll-up span {
+      background-image: url('chosen-sprite@2x.png') !important;
+      background-repeat: no-repeat !important;
+      background-size: 52px 37px !important;
+  }
+}
+/* @end */
Index: /tags/2.6.0RC1/themes/default/js/plugins/chosen.jquery.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/chosen.jquery.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/chosen.jquery.min.js	(revision 25596)
@@ -0,0 +1,10 @@
+// Chosen, a Select Box Enhancer for jQuery and Protoype
+// by Patrick Filler for Harvest, http://getharvest.com
+// 
+// Version 0.9.11
+// Full source at https://github.com/harvesthq/chosen
+// Copyright (c) 2011 Harvest http://getharvest.com
+
+// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
+// This file is generated by `cake build`, do not edit it by hand.
+(function(){var e;e=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(e){return e.nodeName.toUpperCase()==="OPTGROUP"?this.add_group(e):this.add_option(e)},e.prototype.add_group=function(e){var t,n,r,i,s,o;t=this.parsed.length,this.parsed.push({array_index:t,group:!0,label:e.label,children:0,disabled:e.disabled}),s=e.childNodes,o=[];for(r=0,i=s.length;r<i;r++)n=s[r],o.push(this.add_option(n,t,e.disabled));return o},e.prototype.add_option=function(e,t,n){if(e.nodeName.toUpperCase()==="OPTION")return e.text!==""?(t!=null&&(this.parsed[t].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:e.value,text:e.text,html:e.innerHTML,selected:e.selected,disabled:n===!0?n:e.disabled,group_array_index:t,classes:e.className,style:e.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},e}(),e.select_to_array=function(t){var n,r,i,s,o;r=new e,o=t.childNodes;for(i=0,s=o.length;i<s;i++)n=o[i],r.add_node(n);return r.parsed},this.SelectParser=e}).call(this),function(){var e,t;t=this,e=function(){function e(e,t){this.form_field=e,this.options=t!=null?t:{},this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.finish_setup()}return e.prototype.set_default_values=function(){var e=this;return this.click_test_action=function(t){return e.test_active_click(t)},this.activate_action=function(t){return e.activate_field(t)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.result_single_selected=null,this.allow_single_deselect=this.options.allow_single_deselect!=null&&this.form_field.options[0]!=null&&this.form_field.options[0].text===""?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=this.options.enable_split_word_search!=null?this.options.enable_split_word_search:!0,this.search_contains=this.options.search_contains||!1,this.choices=0,this.single_backstroke_delete=this.options.single_backstroke_delete||!1,this.max_selected_options=this.options.max_selected_options||Infinity,this.inherit_select_classes=this.options.inherit_select_classes||!1},e.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||"Select Some Options":this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||"Select an Option",this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||"No results match"},e.prototype.mouse_enter=function(){return this.mouse_on_container=!0},e.prototype.mouse_leave=function(){return this.mouse_on_container=!1},e.prototype.input_focus=function(e){var t=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return t.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},e.prototype.input_blur=function(e){var t=this;if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(){return t.blur_test()},100)},e.prototype.result_add_option=function(e){var t,n;return e.disabled?"":(e.dom_id=this.container_id+"_o_"+e.array_index,t=e.selected&&this.is_multiple?[]:["active-result"],e.selected&&t.push("result-selected"),e.group_array_index!=null&&t.push("group-option"),e.classes!==""&&t.push(e.classes),n=e.style.cssText!==""?' style="'+e.style+'"':"",'<li id="'+e.dom_id+'" class="'+t.join(" ")+'"'+n+">"+e.html+"</li>")},e.prototype.results_update_field=function(){return this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.result_single_selected=null,this.results_build()},e.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},e.prototype.results_search=function(e){return this.results_showing?this.winnow_results():this.results_show()},e.prototype.keyup_checker=function(e){var t,n;t=(n=e.which)!=null?n:e.keyCode,this.search_field_scale();switch(t){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:e.preventDefault();if(this.results_showing)return this.result_select(e);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},e.prototype.generate_field_id=function(){var e;return e=this.generate_random_id(),this.form_field.id=e,e},e.prototype.generate_random_char=function(){var e,t,n;return e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",n=Math.floor(Math.random()*e.length),t=e.substring(n,n+1)},e}(),t.AbstractChosen=e}.call(this),function(){var e,t,n,r,i={}.hasOwnProperty,s=function(e,t){function r(){this.constructor=e}for(var n in t)i.call(t,n)&&(e[n]=t[n]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e};r=this,e=jQuery,e.fn.extend({chosen:function(n){var r,i,s;return s=navigator.userAgent.toLowerCase(),i=/(msie) ([\w.]+)/.exec(s)||[],r={name:i[1]||"",version:i[2]||"0"},r.name==="msie"&&(r.version==="6.0"||r.version==="7.0"&&document.documentMode===7)?this:this.each(function(r){var i;i=e(this);if(!i.hasClass("chzn-done"))return i.data("chosen",new t(this,n))})}}),t=function(t){function i(){return i.__super__.constructor.apply(this,arguments)}return s(i,t),i.prototype.setup=function(){return this.form_field_jq=e(this.form_field),this.current_value=this.form_field_jq.val(),this.is_rtl=this.form_field_jq.hasClass("chzn-rtl")},i.prototype.finish_setup=function(){return this.form_field_jq.addClass("chzn-done")},i.prototype.set_up_html=function(){var t,r,i,s,o,u;return this.container_id=this.form_field.id.length?this.form_field.id.replace(/[^\w]/g,"_"):this.generate_field_id(),this.container_id+="_chzn",t=["chzn-container"],t.push("chzn-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&t.push(this.form_field.className),this.is_rtl&&t.push("chzn-rtl"),this.f_width=this.form_field_jq.outerWidth(),i={id:this.container_id,"class":t.join(" "),style:"width: "+this.f_width+"px;",title:this.form_field.title},r=e("<div />",i),this.is_multiple?r.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'):r.html('<a href="javascript:void(0)" class="chzn-single chzn-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>'),this.form_field_jq.hide().after(r),this.container=e("#"+this.container_id),this.dropdown=this.container.find("div.chzn-drop").first(),s=this.container.height(),o=this.f_width-n(this.dropdown),this.dropdown.css({width:o+"px",top:s+"px"}),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chzn-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chzn-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chzn-search").first(),this.selected_item=this.container.find(".chzn-single").first(),u=o-n(this.search_container)-n(this.search_field),this.search_field.css({width:u+"px"})),this.results_build(),this.set_tab_index(),this.form_field_jq.trigger("liszt:ready",{chosen:this})},i.prototype.register_observers=function(){var e=this;return this.container.mousedown(function(t){return e.container_mousedown(t)}),this.container.mouseup(function(t){return e.container_mouseup(t)}),this.container.mouseenter(function(t){return e.mouse_enter(t)}),this.container.mouseleave(function(t){return e.mouse_leave(t)}),this.search_results.mouseup(function(t){return e.search_results_mouseup(t)}),this.search_results.mouseover(function(t){return e.search_results_mouseover(t)}),this.search_results.mouseout(function(t){return e.search_results_mouseout(t)}),this.form_field_jq.bind("liszt:updated",function(t){return e.results_update_field(t)}),this.form_field_jq.bind("liszt:activate",function(t){return e.activate_field(t)}),this.form_field_jq.bind("liszt:open",function(t){return e.container_mousedown(t)}),this.search_field.blur(function(t){return e.input_blur(t)}),this.search_field.keyup(function(t){return e.keyup_checker(t)}),this.search_field.keydown(function(t){return e.keydown_checker(t)}),this.search_field.focus(function(t){return e.input_focus(t)}),this.is_multiple?this.search_choices.click(function(t){return e.choices_click(t)}):this.container.click(function(e){return e.preventDefault()})},i.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled)return this.container.addClass("chzn-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus",this.activate_action),this.close_field();this.container.removeClass("chzn-disabled"),this.search_field[0].disabled=!1;if(!this.is_multiple)return this.selected_item.bind("focus",this.activate_action)},i.prototype.container_mousedown=function(t){var n;if(!this.is_disabled)return n=t!=null?e(t.target).hasClass("search-choice-close"):!1,t&&t.type==="mousedown"&&!this.results_showing&&t.preventDefault(),!this.pending_destroy_click&&!n?(this.active_field?!this.is_multiple&&t&&(e(t.target)[0]===this.selected_item[0]||e(t.target).parents("a.chzn-single").length)&&(t.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),e(document).click(this.click_test_action),this.results_show()),this.activate_field()):this.pending_destroy_click=!1},i.prototype.container_mouseup=function(e){if(e.target.nodeName==="ABBR"&&!this.is_disabled)return this.results_reset(e)},i.prototype.blur_test=function(e){if(!this.active_field&&this.container.hasClass("chzn-container-active"))return this.close_field()},i.prototype.close_field=function(){return e(document).unbind("click",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chzn-container-active"),this.winnow_results_clear(),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},i.prototype.activate_field=function(){return this.container.addClass("chzn-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},i.prototype.test_active_click=function(t){return e(t.target).parents("#"+this.container_id).length?this.active_field=!0:this.close_field()},i.prototype.results_build=function(){var e,t,n,i,s;this.parsing=!0,this.results_data=r.SelectParser.select_to_array(this.form_field),this.is_multiple&&this.choices>0?(this.search_choices.find("li.search-choice").remove(),this.choices=0):this.is_multiple||(this.selected_item.addClass("chzn-default").find("span").text(this.default_text),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?this.container.addClass("chzn-container-single-nosearch"):this.container.removeClass("chzn-container-single-nosearch")),e="",s=this.results_data;for(n=0,i=s.length;n<i;n++)t=s[n],t.group?e+=this.result_add_group(t):t.empty||(e+=this.result_add_option(t),t.selected&&this.is_multiple?this.choice_build(t):t.selected&&!this.is_multiple&&(this.selected_item.removeClass("chzn-default").find("span").text(t.text),this.allow_single_deselect&&this.single_deselect_control_build()));return this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.search_results.html(e),this.parsing=!1},i.prototype.result_add_group=function(t){return t.disabled?"":(t.dom_id=this.container_id+"_g_"+t.array_index,'<li id="'+t.dom_id+'" class="group-result">'+e("<div />").text(t.label).html()+"</li>")},i.prototype.result_do_highlight=function(e){var t,n,r,i,s;if(e.length){this.result_clear_highlight(),this.result_highlight=e,this.result_highlight.addClass("highlighted"),r=parseInt(this.search_results.css("maxHeight"),10),s=this.search_results.scrollTop(),i=r+s,n=this.result_highlight.position().top+this.search_results.scrollTop(),t=n+this.result_highlight.outerHeight();if(t>=i)return this.search_results.scrollTop(t-r>0?t-r:0);if(n<s)return this.search_results.scrollTop(n)}},i.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},i.prototype.results_show=function(){var e;if(!this.is_multiple)this.selected_item.addClass("chzn-single-with-drop"),this.result_single_selected&&this.result_do_highlight(this.result_single_selected);else if(this.max_selected_options<=this.choices)return this.form_field_jq.trigger("liszt:maxselected",{chosen:this}),!1;return e=this.is_multiple?this.container.height():this.container.height()-1,this.form_field_jq.trigger("liszt:showing_dropdown",{chosen:this}),this.dropdown.css({top:e+"px",left:0}),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results()},i.prototype.results_hide=function(){return this.is_multiple||this.selected_item.removeClass("chzn-single-with-drop"),this.result_clear_highlight(),this.form_field_jq.trigger("liszt:hiding_dropdown",{chosen:this}),this.dropdown.css({left:"-9000px"}),this.results_showing=!1},i.prototype.set_tab_index=function(e){var t;if(this.form_field_jq.attr("tabindex"))return t=this.form_field_jq.attr("tabindex"),this.form_field_jq.attr("tabindex",-1),this.search_field.attr("tabindex",t)},i.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},i.prototype.search_results_mouseup=function(t){var n;n=e(t.target).hasClass("active-result")?e(t.target):e(t.target).parents(".active-result").first();if(n.length)return this.result_highlight=n,this.result_select(t),this.search_field.focus()},i.prototype.search_results_mouseover=function(t){var n;n=e(t.target).hasClass("active-result")?e(t.target):e(t.target).parents(".active-result").first();if(n)return this.result_do_highlight(n)},i.prototype.search_results_mouseout=function(t){if(e(t.target).hasClass("active-result"))return this.result_clear_highlight()},i.prototype.choices_click=function(t){t.preventDefault();if(this.active_field&&!e(t.target).hasClass("search-choice")&&!this.results_showing)return this.results_show()},i.prototype.choice_build=function(t){var n,r,i,s=this;return this.is_multiple&&this.max_selected_options<=this.choices?(this.form_field_jq.trigger("liszt:maxselected",{chosen:this}),!1):(n=this.container_id+"_c_"+t.array_index,this.choices+=1,t.disabled?r='<li class="search-choice search-choice-disabled" id="'+n+'"><span>'+t.html+"</span></li>":r='<li class="search-choice" id="'+n+'"><span>'+t.html+'</span><a href="javascript:void(0)" class="search-choice-close" rel="'+t.array_index+'"></a></li>',this.search_container.before(r),i=e("#"+n).find("a").first(),i.click(function(e){return s.choice_destroy_link_click(e)}))},i.prototype.choice_destroy_link_click=function(t){return t.preventDefault(),this.is_disabled?t.stopPropagation:(this.pending_destroy_click=!0,this.choice_destroy(e(t.target)))},i.prototype.choice_destroy=function(e){if(this.result_deselect(e.attr("rel")))return this.choices-=1,this.show_search_field_default(),this.is_multiple&&this.choices>0&&this.search_field.val().length<1&&this.results_hide(),e.parents("li").first().remove(),this.search_field_scale()},i.prototype.results_reset=function(){this.form_field.options[0].selected=!0,this.selected_item.find("span").text(this.default_text),this.is_multiple||this.selected_item.addClass("chzn-default"),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change");if(this.active_field)return this.results_hide()},i.prototype.results_reset_cleanup=function(){return this.current_value=this.form_field_jq.val(),this.selected_item.find("abbr").remove()},i.prototype.result_select=function(e){var t,n,r,i;if(this.result_highlight)return t=this.result_highlight,n=t.attr("id"),this.result_clear_highlight(),this.is_multiple?this.result_deactivate(t):(this.search_results.find(".result-selected").removeClass("result-selected"),this.result_single_selected=t,this.selected_item.removeClass("chzn-default")),t.addClass("result-selected"),i=n.substr(n.lastIndexOf("_")+1),r=this.results_data[i],r.selected=!0,this.form_field.options[r.options_index].selected=!0,this.is_multiple?this.choice_build(r):(this.selected_item.find("span").first().text(r.text),this.allow_single_deselect&&this.single_deselect_control_build()),(!e.metaKey&&!e.ctrlKey||!this.is_multiple)&&this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field_jq.val()!==this.current_value)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[r.options_index].value}),this.current_value=this.form_field_jq.val(),this.search_field_scale()},i.prototype.result_activate=function(e){return e.addClass("active-result")},i.prototype.result_deactivate=function(e){return e.removeClass("active-result")},i.prototype.result_deselect=function(t){var n,r;return r=this.results_data[t],this.form_field.options[r.options_index].disabled?!1:(r.selected=!1,this.form_field.options[r.options_index].selected=!1,n=e("#"+this.container_id+"_o_"+t),n.removeClass("result-selected").addClass("active-result").show(),this.result_clear_highlight(),this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[r.options_index].value}),this.search_field_scale(),!0)},i.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect&&this.selected_item.find("abbr").length<1)return this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>')},i.prototype.winnow_results=function(){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y;this.no_results_clear(),f=0,l=this.search_field.val()===this.default_text?"":e("<div/>").text(e.trim(this.search_field.val())).html(),o=this.search_contains?"":"^",s=new RegExp(o+l.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),p=new RegExp(l.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),y=this.results_data;for(d=0,m=y.length;d<m;d++){n=y[d];if(!n.disabled&&!n.empty)if(n.group)e("#"+n.dom_id).css("display","none");else if(!this.is_multiple||!n.selected){t=!1,a=n.dom_id,u=e("#"+a);if(s.test(n.html))t=!0,f+=1;else if(this.enable_split_word_search&&(n.html.indexOf(" ")>=0||n.html.indexOf("[")===0)){i=n.html.replace(/\[|\]/g,"").split(" ");if(i.length)for(v=0,g=i.length;v<g;v++)r=i[v],s.test(r)&&(t=!0,f+=1)}t?(l.length?(c=n.html.search(p),h=n.html.substr(0,c+l.length)+"</em>"+n.html.substr(c+l.length),h=h.substr(0,c)+"<em>"+h.substr(c)):h=n.html,u.html(h),this.result_activate(u),n.group_array_index!=null&&e("#"+this.results_data[n.group_array_index].dom_id).css("display","list-item")):(this.result_highlight&&a===this.result_highlight.attr("id")&&this.result_clear_highlight(),this.result_deactivate(u))}}return f<1&&l.length?this.no_results(l):this.winnow_results_set_highlight()},i.prototype.winnow_results_clear=function(){var t,n,r,i,s;this.search_field.val(""),n=this.search_results.find("li"),s=[];for(r=0,i=n.length;r<i;r++)t=n[r],t=e(t),t.hasClass("group-result")?s.push(t.css("display","auto")):!this.is_multiple||!t.hasClass("result-selected")?s.push(this.result_activate(t)):s.push(void 0);return s},i.prototype.winnow_results_set_highlight=function(){var e,t;if(!this.result_highlight){t=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),e=t.length?t.first():this.search_results.find(".active-result").first();if(e!=null)return this.result_do_highlight(e)}},i.prototype.no_results=function(t){var n;return n=e('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),n.find("span").first().html(t),this.search_results.append(n)},i.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},i.prototype.keydown_arrow=function(){var t,n;this.result_highlight?this.results_showing&&(n=this.result_highlight.nextAll("li.active-result").first(),n&&this.result_do_highlight(n)):(t=this.search_results.find("li.active-result").first(),t&&this.result_do_highlight(e(t)));if(!this.results_showing)return this.results_show()},i.prototype.keyup_arrow=function(){var e;if(!this.results_showing&&!this.is_multiple)return this.results_show();if(this.result_highlight)return e=this.result_highlight.prevAll("li.active-result"),e.length?this.result_do_highlight(e.first()):(this.choices>0&&this.results_hide(),this.result_clear_highlight())},i.prototype.keydown_backstroke=function(){var e;if(this.pending_backstroke)return this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke();e=this.search_container.siblings("li.search-choice").last();if(e.length&&!e.hasClass("search-choice-disabled"))return this.pending_backstroke=e,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")},i.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},i.prototype.keydown_checker=function(e){var t,n;t=(n=e.which)!=null?n:e.keyCode,this.search_field_scale(),t!==8&&this.pending_backstroke&&this.clear_backstroke();switch(t){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(e),this.mouse_on_container=!1;break;case 13:e.preventDefault();break;case 38:e.preventDefault(),this.keyup_arrow();break;case 40:this.keydown_arrow()}},i.prototype.search_field_scale=function(){var t,n,r,i,s,o,u,a,f;if(this.is_multiple){r=0,u=0,s="position:absolute; left: -1000px; top: -1000px; display:none;",o=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(a=0,f=o.length;a<f;a++)i=o[a],s+=i+":"+this.search_field.css(i)+";";return n=e("<div />",{style:s}),n.text(this.search_field.val()),e("body").append(n),u=n.width()+25,n.remove(),u>this.f_width-10&&(u=this.f_width-10),this.search_field.css({width:u+"px"}),t=this.container.height(),this.dropdown.css({top:t+"px"})}},i.prototype.generate_random_id=function(){var t;t="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(e("#"+t).length>0)t+=this.generate_random_char();return t},i}(AbstractChosen),r.Chosen=t,n=function(e){var t;return t=e.outerWidth()-e.width()},r.get_side_border_padding=n}.call(this);
Index: /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/colorbox.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/colorbox.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/colorbox.css	(revision 25596)
@@ -0,0 +1,93 @@
+/*
+    ColorBox Core Style:
+    The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
+
+/* 
+    User Style:
+    Change the following styles to modify the appearance of ColorBox.  They are
+    ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
+#colorbox{outline:0;}
+    #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;}
+    #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;}
+    #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;}
+    #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;}
+    #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;}
+    #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;}
+    #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;}
+    #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;}
+    #cboxContent{background:#fff; overflow:hidden;}
+        .cboxIframe{background:#fff;}
+        #cboxError{padding:50px; border:1px solid #ccc;}
+        #cboxLoadedContent{margin-bottom:28px;}
+        #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
+        #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+        #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+        /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+        #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+        
+        /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+        #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
+        #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
+        #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxPrevious:hover{background-position:-75px -25px;}
+        #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxNext:hover{background-position:-50px -25px;}
+        #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxClose:hover{background-position:-25px -25px;}
+
+/*
+  The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+  when an alpha filter (opacity change) is set on the element or ancestor element.  This style is not applied to or needed in IE9.
+  See: http://jacklmoore.com/notes/ie-transparency-problems/
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
+}
+
+/*
+  The following provides PNG transparency support for IE6
+  Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
+*/
+.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
+.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
+.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
+.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
+.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
+.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
+.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
+.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
+
+.cboxIE6 #cboxTopLeft,
+.cboxIE6 #cboxTopCenter,
+.cboxIE6 #cboxTopRight,
+.cboxIE6 #cboxBottomLeft,
+.cboxIE6 #cboxBottomCenter,
+.cboxIE6 #cboxBottomRight,
+.cboxIE6 #cboxMiddleLeft,
+.cboxIE6 #cboxMiddleRight {
+    _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/index.html
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/index.html	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style1/index.html	(revision 25596)
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+	<meta charset=utf-8 />
+	<title>ColorBox Examples</title>
+	<style type="text/css">
+		body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+		a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+		h2{font-size:13px; margin:15px 0 0 0;}
+	</style>
+	<link media="screen" rel="stylesheet" href="colorbox.css" />
+	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+	<script src="../colorbox/jquery.colorbox.js"></script>
+	<script>
+		$(document).ready(function(){
+			//Examples of how to assign the ColorBox event to elements
+			$("a[rel='example1']").colorbox();
+			$("a[rel='example2']").colorbox({transition:"fade"});
+			$("a[rel='example3']").colorbox({transition:"none", width:"75%", height:"75%"});
+			$("a[rel='example4']").colorbox({slideshow:true});
+			$(".example5").colorbox();
+			$(".example6").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+			$(".example7").colorbox({width:"80%", height:"80%", iframe:true});
+			$(".example8").colorbox({width:"50%", inline:true, href:"#inline_example1"});
+			$(".example9").colorbox({
+				onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+				onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+				onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+				onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+				onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+			});
+			
+			//Example of preserving a JavaScript event for inline calls.
+			$("#click").click(function(){ 
+				$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+				return false;
+			});
+		});
+	</script>
+</head>
+<body>
+	<h1>ColorBox Demonstration</h1>
+	
+	<h2>Elastic Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example1" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example1" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example1" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Fade Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example2" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example2" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example2" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>No Transition + fixed width and height (75% of screen size)</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example3"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example3"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example3"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Slideshow</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example4"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example4"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example4"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Other Content Types</h2>
+	<p><a class='example5' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+	<p><a class='example5' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+	<p><a class='example6' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+	<p><a class='example7' href="http://google.com">Outside Webpage (Iframe)</a></p>
+	<p><a class='example8' href="#">Inline HTML</a></p>
+	
+	<h2>Demonstration of using callbacks</h2>
+	<p><a class='example9' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+	
+	<!-- This contains the hidden content for inline calls -->
+	<div style='display:none'>
+		<div id='inline_example1' style='padding:10px; background:#fff;'>
+		<p><strong>This content comes from a hidden element on this page.</strong></p>
+		<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.<br />
+		<a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+		
+		<p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+		<p>Updating Content Example:<br />
+		<a class="example5" href="../content/flash.html">Click here to load new content</a></p>
+		</div>
+	</div>
+</body>
+</html>
Index: /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/colorbox.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/colorbox.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/colorbox.css	(revision 25596)
@@ -0,0 +1,49 @@
+/*
+    ColorBox Core Style:
+    The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
+
+/* 
+    User Style:
+    Change the following styles to modify the appearance of ColorBox.  They are
+    ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#000;}
+#colorbox{outline:0;}
+    #cboxContent{margin-top:32px; overflow:visible; background:#000;}
+        .cboxIframe{background:#fff;}
+        #cboxError{padding:50px; border:1px solid #ccc;}
+        #cboxLoadedContent{background:#f1f1f1; padding:1px;}
+        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+        #cboxLoadingOverlay{background:#000;}
+        #cboxTitle{position:absolute; top:-22px; left:0; color:#fff;}
+        #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
+
+        /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+        #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+        
+        /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+        #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
+        #cboxPrevious{background-position:0px 0px; right:44px;}
+        #cboxPrevious:hover{background-position:0px -25px;}
+        #cboxNext{background-position:-25px 0px; right:22px;}
+        #cboxNext:hover{background-position:-25px -25px;}
+        #cboxClose{background-position:-50px 0px; right:0;}
+        #cboxClose:hover{background-position:-50px -25px;}
+        .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{right:66px;}
+        .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
+        .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}
+        .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
+        .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}
Index: /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/index.html
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/index.html	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/colorbox/style2/index.html	(revision 25596)
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+	<meta charset=utf-8 />
+	<title>ColorBox Examples</title>
+	<style type="text/css">
+		body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+		a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+		h2{font-size:13px; margin:15px 0 0 0;}
+	</style>
+	<link media="screen" rel="stylesheet" href="colorbox.css" />
+	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+	<script src="../colorbox/jquery.colorbox.js"></script>
+	<script>
+		$(document).ready(function(){
+			//Examples of how to assign the ColorBox event to elements
+			$("a[rel='example1']").colorbox();
+			$("a[rel='example2']").colorbox({transition:"fade"});
+			$("a[rel='example3']").colorbox({transition:"none", width:"75%", height:"75%"});
+			$("a[rel='example4']").colorbox({slideshow:true});
+			$(".example5").colorbox();
+			$(".example6").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+			$(".example7").colorbox({width:"80%", height:"80%", iframe:true});
+			$(".example8").colorbox({width:"50%", inline:true, href:"#inline_example1"});
+			$(".example9").colorbox({
+				onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+				onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+				onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+				onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+				onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+			});
+			
+			//Example of preserving a JavaScript event for inline calls.
+			$("#click").click(function(){ 
+				$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+				return false;
+			});
+		});
+	</script>
+</head>
+<body>
+	<h1>ColorBox Demonstration</h1>
+	
+	<h2>Elastic Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example1" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example1" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example1" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Fade Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example2" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example2" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example2" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>No Transition + fixed width and height (75% of screen size)</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example3"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example3"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example3"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Slideshow</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example4"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example4"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example4"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Other Content Types</h2>
+	<p><a class='example5' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+	<p><a class='example5' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+	<p><a class='example6' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+	<p><a class='example7' href="http://google.com">Outside Webpage (Iframe)</a></p>
+	<p><a class='example8' href="#">Inline HTML</a></p>
+	
+	<h2>Demonstration of using callbacks</h2>
+	<p><a class='example9' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+	
+	<!-- This contains the hidden content for inline calls -->
+	<div style='display:none'>
+		<div id='inline_example1' style='padding:10px; background:#fff;'>
+		<p><strong>This content comes from a hidden element on this page.</strong></p>
+		<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.<br />
+		<a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+		
+		<p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+		<p>Updating Content Example:<br />
+		<a class="example5" href="../content/flash.html">Click here to load new content</a></p>
+		</div>
+	</div>
+</body>
+</html>
Index: /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_page.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_page.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_page.css	(revision 25596)
@@ -0,0 +1,122 @@
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * General page setup
+ */
+#dt_example {
+	font: 80%/1.45em "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+	margin: 0;
+	padding: 0;
+	color: #333;
+	background-color: #fff;
+}
+
+
+#dt_example #container {
+	width: 800px;
+	margin: 30px auto;
+	padding: 0;
+}
+
+
+#dt_example #footer {
+	margin: 50px auto 0 auto;
+	padding: 0;
+}
+
+#dt_example #demo {
+	margin: 30px auto 0 auto;
+}
+
+#dt_example .demo_jui {
+	margin: 30px auto 0 auto;
+}
+
+#dt_example .big {
+	font-size: 1.3em;
+	font-weight: bold;
+	line-height: 1.6em;
+	color: #4E6CA3;
+}
+
+#dt_example .spacer {
+	height: 20px;
+	clear: both;
+}
+
+#dt_example .clear {
+	clear: both;
+}
+
+#dt_example pre {
+	padding: 15px;
+	background-color: #F5F5F5;
+	border: 1px solid #CCCCCC;
+}
+
+#dt_example h1 {
+	margin-top: 2em;
+	font-size: 1.3em;
+	font-weight: normal;
+	line-height: 1.6em;
+	color: #4E6CA3;
+	border-bottom: 1px solid #B0BED9;
+	clear: both;
+}
+
+#dt_example h2 {
+	font-size: 1.2em;
+	font-weight: normal;
+	line-height: 1.6em;
+	color: #4E6CA3;
+	clear: both;
+}
+
+#dt_example a {
+	color: #0063DC;
+	text-decoration: none;
+}
+
+#dt_example a:hover {
+	text-decoration: underline;
+}
+
+#dt_example ul {
+	color: #4E6CA3;
+}
+
+.css_right {
+	float: right;
+}
+
+.css_left {
+	float: left;
+}
+
+.demo_links {
+	float: left;
+	width: 50%;
+	margin-bottom: 1em;
+}
+
+#demo_info {
+	padding: 5px;
+	border: 1px solid #B0BED9;
+	height: 100px;
+	width: 100%;
+	overflow: auto;
+}
+
+#dt_example code {
+	font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+	padding: 2px 4px !important;
+	white-space: nowrap;
+	font-size: 0.9em;
+
+	color: #D14;
+	background-color: #F7F7F9;
+
+	border: 1px solid #E1E1E8;
+	-webkit-border-radius: 3px;
+	   -moz-border-radius: 3px;
+	        border-radius: 3px;
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table.css	(revision 25596)
@@ -0,0 +1,577 @@
+/*
+ *  File:         demo_table.css
+ *  CVS:          $Id$
+ *  Description:  CSS descriptions for DataTables demo pages
+ *  Author:       Allan Jardine
+ *  Created:      Tue May 12 06:47:22 BST 2009
+ *  Modified:     $Date$ by $Author$
+ *  Language:     CSS
+ *  Project:      DataTables
+ *
+ *  Copyright 2009 Allan Jardine. All Rights Reserved.
+ *
+ * ***************************************************************************
+ * DESCRIPTION
+ *
+ * The styles given here are suitable for the demos that are used with the standard DataTables
+ * distribution (see www.datatables.net). You will most likely wish to modify these styles to
+ * meet the layout requirements of your site.
+ *
+ * Common issues:
+ *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is
+ *     no conflict between the two pagination types. If you want to use full_numbers pagination
+ *     ensure that you either have "example_alt_pagination" as a body class name, or better yet,
+ *     modify that selector.
+ *   Note that the path used for Images is relative. All images are by default located in
+ *     ../images/ - relative to this CSS file.
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables features
+ */
+
+.dataTables_wrapper {
+	position: relative;
+	clear: both;
+	zoom: 1; /* Feeling sorry for IE */
+}
+
+.dataTables_processing {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	width: 250px;
+	height: 30px;
+	margin-left: -125px;
+	margin-top: -15px;
+	padding: 14px 0 2px 0;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #999;
+	font-size: 14px;
+	background-color: white;
+}
+
+.dataTables_length {
+	width: 40%;
+	float: left;
+}
+
+.dataTables_filter {
+	width: 50%;
+	float: right;
+	text-align: right;
+}
+
+.dataTables_info {
+	width: 60%;
+	float: left;
+}
+
+.dataTables_paginate {
+	float: right;
+	text-align: right;
+}
+
+/* Pagination nested */
+.paginate_disabled_previous, .paginate_enabled_previous,
+.paginate_disabled_next, .paginate_enabled_next {
+	height: 19px;
+	float: left;
+	cursor: pointer;
+	*cursor: hand;
+	color: #111 !important;
+}
+.paginate_disabled_previous:hover, .paginate_enabled_previous:hover,
+.paginate_disabled_next:hover, .paginate_enabled_next:hover {
+	text-decoration: none !important;
+}
+.paginate_disabled_previous:active, .paginate_enabled_previous:active,
+.paginate_disabled_next:active, .paginate_enabled_next:active {
+	outline: none;
+}
+
+.paginate_disabled_previous,
+.paginate_disabled_next {
+	color: #666 !important;
+}
+.paginate_disabled_previous, .paginate_enabled_previous {
+	padding-left: 23px;
+}
+.paginate_disabled_next, .paginate_enabled_next {
+	padding-right: 23px;
+	margin-left: 10px;
+}
+
+.paginate_disabled_previous {
+	background: url('../images/back_disabled.png') no-repeat top left;
+}
+
+.paginate_enabled_previous {
+	background: url('../images/back_enabled.png') no-repeat top left;
+}
+.paginate_enabled_previous:hover {
+	background: url('../images/back_enabled_hover.png') no-repeat top left;
+}
+
+.paginate_disabled_next {
+	background: url('../images/forward_disabled.png') no-repeat top right;
+}
+
+.paginate_enabled_next {
+	background: url('../images/forward_enabled.png') no-repeat top right;
+}
+.paginate_enabled_next:hover {
+	background: url('../images/forward_enabled_hover.png') no-repeat top right;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables display
+ */
+table.display {
+	margin: 0 auto;
+	clear: both;
+	width: 100%;
+	
+	/* Note Firefox 3.5 and before have a bug with border-collapse
+	 * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) 
+	 * border-spacing: 0; is one possible option. Conditional-css.com is
+	 * useful for this kind of thing
+	 *
+	 * Further note IE 6/7 has problems when calculating widths with border width.
+	 * It subtracts one px relative to the other browsers from the first column, and
+	 * adds one to the end...
+	 *
+	 * If you want that effect I'd suggest setting a border-top/left on th/td's and 
+	 * then filling in the gaps with other borders.
+	 */
+}
+
+table.display thead th {
+	padding: 3px 18px 3px 10px;
+	border-bottom: 1px solid black;
+	font-weight: bold;
+	cursor: pointer;
+	* cursor: hand;
+}
+
+table.display tfoot th {
+	padding: 3px 18px 3px 10px;
+	border-top: 1px solid black;
+	font-weight: bold;
+}
+
+table.display tr.heading2 td {
+	border-bottom: 1px solid #aaa;
+}
+
+table.display td {
+	padding: 3px 10px;
+}
+
+table.display td.center {
+	text-align: center;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables sorting
+ */
+
+.sorting_asc {
+	background: url('../images/sort_asc.png') no-repeat center right;
+}
+
+.sorting_desc {
+	background: url('../images/sort_desc.png') no-repeat center right;
+}
+
+.sorting {
+	background: url('../images/sort_both.png') no-repeat center right;
+}
+
+.sorting_asc_disabled {
+	background: url('../images/sort_asc_disabled.png') no-repeat center right;
+}
+
+.sorting_desc_disabled {
+	background: url('../images/sort_desc_disabled.png') no-repeat center right;
+}
+ 
+table.display thead th:active,
+table.display thead td:active {
+	outline: none;
+}
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables row classes
+ */
+table.display tr.odd.gradeA {
+	background-color: #ddffdd;
+}
+
+table.display tr.even.gradeA {
+	background-color: #eeffee;
+}
+
+table.display tr.odd.gradeC {
+	background-color: #ddddff;
+}
+
+table.display tr.even.gradeC {
+	background-color: #eeeeff;
+}
+
+table.display tr.odd.gradeX {
+	background-color: #ffdddd;
+}
+
+table.display tr.even.gradeX {
+	background-color: #ffeeee;
+}
+
+table.display tr.odd.gradeU {
+	background-color: #ddd;
+}
+
+table.display tr.even.gradeU {
+	background-color: #eee;
+}
+
+
+tr.odd {
+	background-color: #E2E4FF;
+}
+
+tr.even {
+	background-color: white;
+}
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Misc
+ */
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollBody {
+	*margin-top: -1px;
+	-webkit-overflow-scrolling: touch;
+}
+
+.top, .bottom {
+	padding: 15px;
+	background-color: #F5F5F5;
+	border: 1px solid #CCCCCC;
+}
+
+.top .dataTables_info {
+	float: none;
+}
+
+.clear {
+	clear: both;
+}
+
+.dataTables_empty {
+	text-align: center;
+}
+
+tfoot input {
+	margin: 0.5em 0;
+	width: 100%;
+	color: #444;
+}
+
+tfoot input.search_init {
+	color: #999;
+}
+
+td.group {
+	background-color: #d1cfd0;
+	border-bottom: 2px solid #A19B9E;
+	border-top: 2px solid #A19B9E;
+}
+
+td.details {
+	background-color: #d1cfd0;
+	border: 2px solid #A19B9E;
+}
+
+
+.example_alt_pagination div.dataTables_info {
+	width: 40%;
+}
+
+.paging_full_numbers {
+	width: 400px;
+	height: 22px;
+	line-height: 22px;
+}
+
+.paging_full_numbers a:active {
+	outline: none
+}
+
+.paging_full_numbers a:hover {
+	text-decoration: none;
+}
+
+.paging_full_numbers a.paginate_button,
+ 	.paging_full_numbers a.paginate_active {
+	border: 1px solid #aaa;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	padding: 2px 5px;
+	margin: 0 3px;
+	cursor: pointer;
+	*cursor: hand;
+	color: #333 !important;
+}
+
+.paging_full_numbers a.paginate_button {
+	background-color: #ddd;
+}
+
+.paging_full_numbers a.paginate_button:hover {
+	background-color: #ccc;
+	text-decoration: none !important;
+}
+
+.paging_full_numbers a.paginate_active {
+	background-color: #99B3FF;
+}
+
+table.display tr.even.row_selected td {
+	background-color: #B0BED9;
+}
+
+table.display tr.odd.row_selected td {
+	background-color: #9FAFD1;
+}
+
+
+/*
+ * Sorting classes for columns
+ */
+/* For the standard odd/even */
+tr.odd td.sorting_1 {
+	background-color: #D3D6FF;
+}
+
+tr.odd td.sorting_2 {
+	background-color: #DADCFF;
+}
+
+tr.odd td.sorting_3 {
+	background-color: #E0E2FF;
+}
+
+tr.even td.sorting_1 {
+	background-color: #EAEBFF;
+}
+
+tr.even td.sorting_2 {
+	background-color: #F2F3FF;
+}
+
+tr.even td.sorting_3 {
+	background-color: #F9F9FF;
+}
+
+
+/* For the Conditional-CSS grading rows */
+/*
+ 	Colour calculations (based off the main row colours)
+  Level 1:
+		dd > c4
+		ee > d5
+	Level 2:
+	  dd > d1
+	  ee > e2
+ */
+tr.odd.gradeA td.sorting_1 {
+	background-color: #c4ffc4;
+}
+
+tr.odd.gradeA td.sorting_2 {
+	background-color: #d1ffd1;
+}
+
+tr.odd.gradeA td.sorting_3 {
+	background-color: #d1ffd1;
+}
+
+tr.even.gradeA td.sorting_1 {
+	background-color: #d5ffd5;
+}
+
+tr.even.gradeA td.sorting_2 {
+	background-color: #e2ffe2;
+}
+
+tr.even.gradeA td.sorting_3 {
+	background-color: #e2ffe2;
+}
+
+tr.odd.gradeC td.sorting_1 {
+	background-color: #c4c4ff;
+}
+
+tr.odd.gradeC td.sorting_2 {
+	background-color: #d1d1ff;
+}
+
+tr.odd.gradeC td.sorting_3 {
+	background-color: #d1d1ff;
+}
+
+tr.even.gradeC td.sorting_1 {
+	background-color: #d5d5ff;
+}
+
+tr.even.gradeC td.sorting_2 {
+	background-color: #e2e2ff;
+}
+
+tr.even.gradeC td.sorting_3 {
+	background-color: #e2e2ff;
+}
+
+tr.odd.gradeX td.sorting_1 {
+	background-color: #ffc4c4;
+}
+
+tr.odd.gradeX td.sorting_2 {
+	background-color: #ffd1d1;
+}
+
+tr.odd.gradeX td.sorting_3 {
+	background-color: #ffd1d1;
+}
+
+tr.even.gradeX td.sorting_1 {
+	background-color: #ffd5d5;
+}
+
+tr.even.gradeX td.sorting_2 {
+	background-color: #ffe2e2;
+}
+
+tr.even.gradeX td.sorting_3 {
+	background-color: #ffe2e2;
+}
+
+tr.odd.gradeU td.sorting_1 {
+	background-color: #c4c4c4;
+}
+
+tr.odd.gradeU td.sorting_2 {
+	background-color: #d1d1d1;
+}
+
+tr.odd.gradeU td.sorting_3 {
+	background-color: #d1d1d1;
+}
+
+tr.even.gradeU td.sorting_1 {
+	background-color: #d5d5d5;
+}
+
+tr.even.gradeU td.sorting_2 {
+	background-color: #e2e2e2;
+}
+
+tr.even.gradeU td.sorting_3 {
+	background-color: #e2e2e2;
+}
+
+
+/*
+ * Row highlighting example
+ */
+.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {
+	background-color: #ECFFB3;
+}
+
+.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
+	background-color: #E6FF99;
+}
+
+.ex_highlight_row #example tr.even:hover {
+	background-color: #ECFFB3;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_1 {
+	background-color: #DDFF75;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_2 {
+	background-color: #E7FF9E;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_3 {
+	background-color: #E2FF89;
+}
+
+.ex_highlight_row #example tr.odd:hover {
+	background-color: #E6FF99;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_1 {
+	background-color: #D6FF5C;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_2 {
+	background-color: #E0FF84;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_3 {
+	background-color: #DBFF70;
+}
+
+
+/*
+ * KeyTable
+ */
+table.KeyTable td {
+	border: 3px solid transparent;
+}
+
+table.KeyTable td.focus {
+	border: 3px solid #3366FF;
+}
+
+table.display tr.gradeA {
+	background-color: #eeffee;
+}
+
+table.display tr.gradeC {
+	background-color: #ddddff;
+}
+
+table.display tr.gradeX {
+	background-color: #ffdddd;
+}
+
+table.display tr.gradeU {
+	background-color: #ddd;
+}
+
+div.box {
+	height: 100px;
+	padding: 10px;
+	overflow: auto;
+	border: 1px solid #8080FF;
+	background-color: #E5E5FF;
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table_jui.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table_jui.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/demo_table_jui.css	(revision 25596)
@@ -0,0 +1,501 @@
+/*
+ *  File:         demo_table_jui.css
+ *  CVS:          $Id$
+ *  Description:  CSS descriptions for DataTables demo pages
+ *  Author:       Allan Jardine
+ *  Created:      Tue May 12 06:47:22 BST 2009
+ *  Modified:     $Date$ by $Author$
+ *  Language:     CSS
+ *  Project:      DataTables
+ *
+ *  Copyright 2009 Allan Jardine. All Rights Reserved.
+ *
+ * ***************************************************************************
+ * DESCRIPTION
+ *
+ * The styles given here are suitable for the demos that are used with the standard DataTables
+ * distribution (see www.datatables.net). You will most likely wish to modify these styles to
+ * meet the layout requirements of your site.
+ *
+ * Common issues:
+ *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is
+ *     no conflict between the two pagination types. If you want to use full_numbers pagination
+ *     ensure that you either have "example_alt_pagination" as a body class name, or better yet,
+ *     modify that selector.
+ *   Note that the path used for Images is relative. All images are by default located in
+ *     ../images/ - relative to this CSS file.
+ */
+
+
+/*
+ * jQuery UI specific styling
+ */
+
+.paging_two_button .ui-button {
+	float: left;
+	cursor: pointer;
+	* cursor: hand;
+}
+
+.paging_full_numbers .ui-button {
+	padding: 2px 6px;
+	margin: 0;
+	cursor: pointer;
+	* cursor: hand;
+	color: #333 !important;
+}
+
+.dataTables_paginate .ui-button {
+	margin-right: -0.1em !important;
+}
+
+.paging_full_numbers {
+	width: 350px !important;
+}
+
+.dataTables_wrapper .ui-toolbar {
+	padding: 5px;
+}
+
+.dataTables_paginate {
+	width: auto;
+}
+
+.dataTables_info {
+	padding-top: 3px;
+}
+
+table.display thead th {
+	padding: 3px 0px 3px 10px;
+	cursor: pointer;
+	* cursor: hand;
+}
+
+div.dataTables_wrapper .ui-widget-header {
+	font-weight: normal;
+}
+
+
+/*
+ * Sort arrow icon positioning
+ */
+table.display thead th div.DataTables_sort_wrapper {
+	position: relative;
+	padding-right: 20px;
+}
+
+table.display thead th div.DataTables_sort_wrapper span {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+	right: 0;
+}
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Everything below this line is the same as demo_table.css. This file is
+ * required for 'cleanliness' of the markup
+ *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables features
+ */
+
+.dataTables_wrapper {
+	position: relative;
+	clear: both;
+}
+
+.dataTables_processing {
+	position: absolute;
+	top: 0px;
+	left: 50%;
+	width: 250px;
+	margin-left: -125px;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #999;
+	font-size: 11px;
+	padding: 2px 0;
+}
+
+.dataTables_length {
+	width: 40%;
+	float: left;
+}
+
+.dataTables_filter {
+	width: 50%;
+	float: right;
+	text-align: right;
+}
+
+.dataTables_info {
+	width: 50%;
+	float: left;
+}
+
+.dataTables_paginate {
+	float: right;
+	text-align: right;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables display
+ */
+table.display {
+	margin: 0 auto;
+	width: 100%;
+	clear: both;
+	border-collapse: collapse;
+}
+
+table.display tfoot th {
+	padding: 3px 0px 3px 10px;
+	font-weight: bold;
+	font-weight: normal;
+}
+
+table.display tr.heading2 td {
+	border-bottom: 1px solid #aaa;
+}
+
+table.display td {
+	padding: 3px 10px;
+}
+
+table.display td.center {
+	text-align: center;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables sorting
+ */
+
+.sorting_asc {
+	background: url('../images/sort_asc.png') no-repeat center right;
+}
+
+.sorting_desc {
+	background: url('../images/sort_desc.png') no-repeat center right;
+}
+
+.sorting {
+	background: url('../images/sort_both.png') no-repeat center right;
+}
+
+.sorting_asc_disabled {
+	background: url('../images/sort_asc_disabled.png') no-repeat center right;
+}
+
+.sorting_desc_disabled {
+	background: url('../images/sort_desc_disabled.png') no-repeat center right;
+}
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables row classes
+ */
+table.display tr.odd.gradeA {
+	background-color: #ddffdd;
+}
+
+table.display tr.even.gradeA {
+	background-color: #eeffee;
+}
+
+
+
+
+table.display tr.odd.gradeA {
+	background-color: #ddffdd;
+}
+
+table.display tr.even.gradeA {
+	background-color: #eeffee;
+}
+
+table.display tr.odd.gradeC {
+	background-color: #ddddff;
+}
+
+table.display tr.even.gradeC {
+	background-color: #eeeeff;
+}
+
+table.display tr.odd.gradeX {
+	background-color: #ffdddd;
+}
+
+table.display tr.even.gradeX {
+	background-color: #ffeeee;
+}
+
+table.display tr.odd.gradeU {
+	background-color: #ddd;
+}
+
+table.display tr.even.gradeU {
+	background-color: #eee;
+}
+
+
+tr.odd {
+	background-color: #E2E4FF;
+}
+
+tr.even {
+	background-color: white;
+}
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Misc
+ */
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollBody {
+	-webkit-overflow-scrolling: touch;
+}
+
+.top, .bottom {
+	padding: 15px;
+	background-color: #F5F5F5;
+	border: 1px solid #CCCCCC;
+}
+
+.top .dataTables_info {
+	float: none;
+}
+
+.clear {
+	clear: both;
+}
+
+.dataTables_empty {
+	text-align: center;
+}
+
+tfoot input {
+	margin: 0.5em 0;
+	width: 100%;
+	color: #444;
+}
+
+tfoot input.search_init {
+	color: #999;
+}
+
+td.group {
+	background-color: #d1cfd0;
+	border-bottom: 2px solid #A19B9E;
+	border-top: 2px solid #A19B9E;
+}
+
+td.details {
+	background-color: #d1cfd0;
+	border: 2px solid #A19B9E;
+}
+
+
+.example_alt_pagination div.dataTables_info {
+	width: 40%;
+}
+
+.paging_full_numbers a.paginate_button,
+ 	.paging_full_numbers a.paginate_active {
+	border: 1px solid #aaa;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	padding: 2px 5px;
+	margin: 0 3px;
+	cursor: pointer;
+	*cursor: hand;
+	color: #333 !important;
+}
+
+.paging_full_numbers a.paginate_button {
+	background-color: #ddd;
+}
+
+.paging_full_numbers a.paginate_button:hover {
+	background-color: #ccc;
+	text-decoration: none !important;
+}
+
+.paging_full_numbers a.paginate_active {
+	background-color: #99B3FF;
+}
+
+table.display tr.even.row_selected td {
+	background-color: #B0BED9;
+}
+
+table.display tr.odd.row_selected td {
+	background-color: #9FAFD1;
+}
+
+
+/*
+ * Sorting classes for columns
+ */
+/* For the standard odd/even */
+tr.odd td.sorting_1 {
+	background-color: #D3D6FF;
+}
+
+tr.odd td.sorting_2 {
+	background-color: #DADCFF;
+}
+
+tr.odd td.sorting_3 {
+	background-color: #E0E2FF;
+}
+
+tr.even td.sorting_1 {
+	background-color: #EAEBFF;
+}
+
+tr.even td.sorting_2 {
+	background-color: #F2F3FF;
+}
+
+tr.even td.sorting_3 {
+	background-color: #F9F9FF;
+}
+
+
+/* For the Conditional-CSS grading rows */
+/*
+ 	Colour calculations (based off the main row colours)
+  Level 1:
+		dd > c4
+		ee > d5
+	Level 2:
+	  dd > d1
+	  ee > e2
+ */
+tr.odd.gradeA td.sorting_1 {
+	background-color: #c4ffc4;
+}
+
+tr.odd.gradeA td.sorting_2 {
+	background-color: #d1ffd1;
+}
+
+tr.odd.gradeA td.sorting_3 {
+	background-color: #d1ffd1;
+}
+
+tr.even.gradeA td.sorting_1 {
+	background-color: #d5ffd5;
+}
+
+tr.even.gradeA td.sorting_2 {
+	background-color: #e2ffe2;
+}
+
+tr.even.gradeA td.sorting_3 {
+	background-color: #e2ffe2;
+}
+
+tr.odd.gradeC td.sorting_1 {
+	background-color: #c4c4ff;
+}
+
+tr.odd.gradeC td.sorting_2 {
+	background-color: #d1d1ff;
+}
+
+tr.odd.gradeC td.sorting_3 {
+	background-color: #d1d1ff;
+}
+
+tr.even.gradeC td.sorting_1 {
+	background-color: #d5d5ff;
+}
+
+tr.even.gradeC td.sorting_2 {
+	background-color: #e2e2ff;
+}
+
+tr.even.gradeC td.sorting_3 {
+	background-color: #e2e2ff;
+}
+
+tr.odd.gradeX td.sorting_1 {
+	background-color: #ffc4c4;
+}
+
+tr.odd.gradeX td.sorting_2 {
+	background-color: #ffd1d1;
+}
+
+tr.odd.gradeX td.sorting_3 {
+	background-color: #ffd1d1;
+}
+
+tr.even.gradeX td.sorting_1 {
+	background-color: #ffd5d5;
+}
+
+tr.even.gradeX td.sorting_2 {
+	background-color: #ffe2e2;
+}
+
+tr.even.gradeX td.sorting_3 {
+	background-color: #ffe2e2;
+}
+
+tr.odd.gradeU td.sorting_1 {
+	background-color: #c4c4c4;
+}
+
+tr.odd.gradeU td.sorting_2 {
+	background-color: #d1d1d1;
+}
+
+tr.odd.gradeU td.sorting_3 {
+	background-color: #d1d1d1;
+}
+
+tr.even.gradeU td.sorting_1 {
+	background-color: #d5d5d5;
+}
+
+tr.even.gradeU td.sorting_2 {
+	background-color: #e2e2e2;
+}
+
+tr.even.gradeU td.sorting_3 {
+	background-color: #e2e2e2;
+}
+
+
+/*
+ * Row highlighting example
+ */
+.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {
+	background-color: #ECFFB3;
+}
+
+.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
+	background-color: #E6FF99;
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables.css	(revision 25596)
@@ -0,0 +1,221 @@
+
+/*
+ * Table
+ */
+table.dataTable {
+	margin: 0 auto;
+	clear: both;
+	width: 100%;
+}
+
+table.dataTable thead th {
+	padding: 3px 18px 3px 10px;
+	border-bottom: 1px solid black;
+	font-weight: bold;
+	cursor: pointer;
+	*cursor: hand;
+}
+
+table.dataTable tfoot th {
+	padding: 3px 18px 3px 10px;
+	border-top: 1px solid black;
+	font-weight: bold;
+}
+
+table.dataTable td {
+	padding: 3px 10px;
+}
+
+table.dataTable td.center,
+table.dataTable td.dataTables_empty {
+	text-align: center;
+}
+
+table.dataTable tr.odd { background-color: #E2E4FF; }
+table.dataTable tr.even { background-color: white; }
+
+table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }
+table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }
+table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }
+table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }
+table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }
+table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }
+
+
+/*
+ * Table wrapper
+ */
+.dataTables_wrapper {
+	position: relative;
+	clear: both;
+	*zoom: 1;
+}
+
+
+/*
+ * Page length menu
+ */
+.dataTables_length {
+	float: left;
+}
+
+
+/*
+ * Filter
+ */
+.dataTables_filter {
+	float: right;
+	text-align: right;
+}
+
+
+/*
+ * Table information
+ */
+.dataTables_info {
+	clear: both;
+	float: left;
+}
+
+
+/*
+ * Pagination
+ */
+.dataTables_paginate {
+	float: right;
+	text-align: right;
+}
+
+/* Two button pagination - previous / next */
+.paginate_disabled_previous,
+.paginate_enabled_previous,
+.paginate_disabled_next,
+.paginate_enabled_next {
+	height: 19px;
+	float: left;
+	cursor: pointer;
+	*cursor: hand;
+	color: #111 !important;
+}
+.paginate_disabled_previous:hover,
+.paginate_enabled_previous:hover,
+.paginate_disabled_next:hover,
+.paginate_enabled_next:hover {
+	text-decoration: none !important;
+}
+.paginate_disabled_previous:active,
+.paginate_enabled_previous:active,
+.paginate_disabled_next:active,
+.paginate_enabled_next:active {
+	outline: none;
+}
+
+.paginate_disabled_previous,
+.paginate_disabled_next {
+	color: #666 !important;
+}
+.paginate_disabled_previous,
+.paginate_enabled_previous {
+	padding-left: 23px;
+}
+.paginate_disabled_next,
+.paginate_enabled_next {
+	padding-right: 23px;
+	margin-left: 10px;
+}
+
+.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }
+.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }
+.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }
+
+.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }
+.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }
+.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }
+
+/* Full number pagination */
+.paging_full_numbers {
+	height: 22px;
+	line-height: 22px;
+}
+.paging_full_numbers a:active {
+	outline: none
+}
+.paging_full_numbers a:hover {
+	text-decoration: none;
+}
+
+.paging_full_numbers a.paginate_button,
+.paging_full_numbers a.paginate_active {
+	border: 1px solid #aaa;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	border-radius: 5px;
+	padding: 2px 5px;
+	margin: 0 3px;
+	cursor: pointer;
+	*cursor: hand;
+	color: #333 !important;
+}
+
+.paging_full_numbers a.paginate_button {
+	background-color: #ddd;
+}
+
+.paging_full_numbers a.paginate_button:hover {
+	background-color: #ccc;
+	text-decoration: none !important;
+}
+
+.paging_full_numbers a.paginate_active {
+	background-color: #99B3FF;
+}
+
+
+/*
+ * Processing indicator
+ */
+.dataTables_processing {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	width: 250px;
+	height: 30px;
+	margin-left: -125px;
+	margin-top: -15px;
+	padding: 14px 0 2px 0;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #999;
+	font-size: 14px;
+	background-color: white;
+}
+
+
+/*
+ * Sorting
+ */
+.sorting { background: url('../images/sort_both.png') no-repeat center right; }
+.sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }
+.sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }
+
+.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }
+.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }
+ 
+table.dataTable thead th:active,
+table.dataTable thead td:active {
+	outline: none;
+}
+
+
+/*
+ * Scrolling
+ */
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollBody {
+	*margin-top: -1px;
+	-webkit-overflow-scrolling: touch;
+}
+
Index: /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables_themeroller.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables_themeroller.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/datatables/css/jquery.dataTables_themeroller.css	(revision 25596)
@@ -0,0 +1,244 @@
+
+
+/*
+ * Table
+ */
+table.dataTable {
+	margin: 0 auto;
+	clear: both;
+	width: 100%;
+	border-collapse: collapse;
+}
+
+table.dataTable thead th {
+	padding: 3px 0px 3px 10px;
+	cursor: pointer;
+	*cursor: hand;
+}
+
+table.dataTable tfoot th {
+	padding: 3px 10px;
+}
+
+table.dataTable td {
+	padding: 3px 10px;
+}
+
+table.dataTable td.center,
+table.dataTable td.dataTables_empty {
+	text-align: center;
+}
+
+table.dataTable tr.odd { background-color: #E2E4FF; }
+table.dataTable tr.even { background-color: white; }
+
+table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }
+table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }
+table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }
+table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }
+table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }
+table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }
+
+
+/*
+ * Table wrapper
+ */
+.dataTables_wrapper {
+	position: relative;
+	clear: both;
+	*zoom: 1;
+}
+.dataTables_wrapper .ui-widget-header {
+	font-weight: normal;
+}
+.dataTables_wrapper .ui-toolbar {
+	padding: 5px;
+}
+
+
+/*
+ * Page length menu
+ */
+.dataTables_length {
+	float: left;
+}
+
+
+/*
+ * Filter
+ */
+.dataTables_filter {
+	float: right;
+	text-align: right;
+}
+
+
+/*
+ * Table information
+ */
+.dataTables_info {
+	padding-top: 3px;
+	clear: both;
+	float: left;
+}
+
+
+/*
+ * Pagination
+ */
+.dataTables_paginate {
+	float: right;
+	text-align: right;
+}
+
+.dataTables_paginate .ui-button {
+	margin-right: -0.1em !important;
+}
+
+.paging_two_button .ui-button {
+	float: left;
+	cursor: pointer;
+	* cursor: hand;
+}
+
+.paging_full_numbers .ui-button {
+	padding: 2px 6px;
+	margin: 0;
+	cursor: pointer;
+	* cursor: hand;
+	color: #333 !important;
+}
+
+/* Two button pagination - previous / next */
+.paginate_disabled_previous,
+.paginate_enabled_previous,
+.paginate_disabled_next,
+.paginate_enabled_next {
+	height: 19px;
+	float: left;
+	cursor: pointer;
+	*cursor: hand;
+	color: #111 !important;
+}
+.paginate_disabled_previous:hover,
+.paginate_enabled_previous:hover,
+.paginate_disabled_next:hover,
+.paginate_enabled_next:hover {
+	text-decoration: none !important;
+}
+.paginate_disabled_previous:active,
+.paginate_enabled_previous:active,
+.paginate_disabled_next:active,
+.paginate_enabled_next:active {
+	outline: none;
+}
+
+.paginate_disabled_previous,
+.paginate_disabled_next {
+	color: #666 !important;
+}
+.paginate_disabled_previous,
+.paginate_enabled_previous {
+	padding-left: 23px;
+}
+.paginate_disabled_next,
+.paginate_enabled_next {
+	padding-right: 23px;
+	margin-left: 10px;
+}
+
+.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }
+.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }
+.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }
+
+.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }
+.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }
+.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }
+
+/* Full number pagination */
+.paging_full_numbers a:active {
+	outline: none
+}
+.paging_full_numbers a:hover {
+	text-decoration: none;
+}
+
+.paging_full_numbers a.paginate_button,
+.paging_full_numbers a.paginate_active {
+	border: 1px solid #aaa;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	border-radius: 5px;
+	padding: 2px 5px;
+	margin: 0 3px;
+	cursor: pointer;
+	*cursor: hand;
+	color: #333 !important;
+}
+
+.paging_full_numbers a.paginate_button {
+	background-color: #ddd;
+}
+
+.paging_full_numbers a.paginate_button:hover {
+	background-color: #ccc;
+	text-decoration: none !important;
+}
+
+.paging_full_numbers a.paginate_active {
+	background-color: #99B3FF;
+}
+
+
+/*
+ * Processing indicator
+ */
+.dataTables_processing {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	width: 250px;
+	height: 30px;
+	margin-left: -125px;
+	margin-top: -15px;
+	padding: 14px 0 2px 0;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #999;
+	font-size: 14px;
+	background-color: white;
+}
+
+
+/*
+ * Sorting
+ */
+table.dataTable thead th div.DataTables_sort_wrapper {
+	position: relative;
+	padding-right: 20px;
+}
+
+table.dataTable thead th div.DataTables_sort_wrapper span {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+	right: 0;
+}
+
+table.dataTable th:active {
+	outline: none;
+}
+
+
+/*
+ * Scrolling
+ */
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollBody {
+	*margin-top: -1px;
+	-webkit-overflow-scrolling: touch;
+}
+
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.css	(revision 25596)
@@ -0,0 +1,165 @@
+/* jquery.Jcrop.css v0.9.12 - MIT License */
+/*
+  The outer-most container in a typical Jcrop instance
+  If you are having difficulty with formatting related to styles
+  on a parent element, place any fixes here or in a like selector
+
+  You can also style this element if you want to add a border, etc
+  A better method for styling can be seen below with .jcrop-light
+  (Add a class to the holder and style elements for that extended class)
+*/
+.jcrop-holder {
+  direction: ltr;
+  text-align: left;
+}
+/* Selection Border */
+.jcrop-vline,
+.jcrop-hline {
+  background: #ffffff url("Jcrop.gif");
+  font-size: 0;
+  position: absolute;
+}
+.jcrop-vline {
+  height: 100%;
+  width: 1px !important;
+}
+.jcrop-vline.right {
+  right: 0;
+}
+.jcrop-hline {
+  height: 1px !important;
+  width: 100%;
+}
+.jcrop-hline.bottom {
+  bottom: 0;
+}
+/* Invisible click targets */
+.jcrop-tracker {
+  height: 100%;
+  width: 100%;
+  /* "turn off" link highlight */
+  -webkit-tap-highlight-color: transparent;
+  /* disable callout, image save panel */
+  -webkit-touch-callout: none;
+  /* disable cut copy paste */
+  -webkit-user-select: none;
+}
+/* Selection Handles */
+.jcrop-handle {
+  background-color: #333333;
+  border: 1px #eeeeee solid;
+  width: 7px;
+  height: 7px;
+  font-size: 1px;
+}
+.jcrop-handle.ord-n {
+  left: 50%;
+  margin-left: -4px;
+  margin-top: -4px;
+  top: 0;
+}
+.jcrop-handle.ord-s {
+  bottom: 0;
+  left: 50%;
+  margin-bottom: -4px;
+  margin-left: -4px;
+}
+.jcrop-handle.ord-e {
+  margin-right: -4px;
+  margin-top: -4px;
+  right: 0;
+  top: 50%;
+}
+.jcrop-handle.ord-w {
+  left: 0;
+  margin-left: -4px;
+  margin-top: -4px;
+  top: 50%;
+}
+.jcrop-handle.ord-nw {
+  left: 0;
+  margin-left: -4px;
+  margin-top: -4px;
+  top: 0;
+}
+.jcrop-handle.ord-ne {
+  margin-right: -4px;
+  margin-top: -4px;
+  right: 0;
+  top: 0;
+}
+.jcrop-handle.ord-se {
+  bottom: 0;
+  margin-bottom: -4px;
+  margin-right: -4px;
+  right: 0;
+}
+.jcrop-handle.ord-sw {
+  bottom: 0;
+  left: 0;
+  margin-bottom: -4px;
+  margin-left: -4px;
+}
+/* Dragbars */
+.jcrop-dragbar.ord-n,
+.jcrop-dragbar.ord-s {
+  height: 7px;
+  width: 100%;
+}
+.jcrop-dragbar.ord-e,
+.jcrop-dragbar.ord-w {
+  height: 100%;
+  width: 7px;
+}
+.jcrop-dragbar.ord-n {
+  margin-top: -4px;
+}
+.jcrop-dragbar.ord-s {
+  bottom: 0;
+  margin-bottom: -4px;
+}
+.jcrop-dragbar.ord-e {
+  margin-right: -4px;
+  right: 0;
+}
+.jcrop-dragbar.ord-w {
+  margin-left: -4px;
+}
+/* The "jcrop-light" class/extension */
+.jcrop-light .jcrop-vline,
+.jcrop-light .jcrop-hline {
+  background: #ffffff;
+  filter: alpha(opacity=70) !important;
+  opacity: .70!important;
+}
+.jcrop-light .jcrop-handle {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  background-color: #000000;
+  border-color: #ffffff;
+  border-radius: 3px;
+}
+/* The "jcrop-dark" class/extension */
+.jcrop-dark .jcrop-vline,
+.jcrop-dark .jcrop-hline {
+  background: #000000;
+  filter: alpha(opacity=70) !important;
+  opacity: 0.7 !important;
+}
+.jcrop-dark .jcrop-handle {
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  background-color: #ffffff;
+  border-color: #000000;
+  border-radius: 3px;
+}
+/* Simple macro to turn off the antlines */
+.solid-line .jcrop-vline,
+.solid-line .jcrop-hline {
+  background: #ffffff;
+}
+/* Fix for twitter bootstrap et al. */
+.jcrop-holder img,
+img.jcrop-preview {
+  max-width: none;
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.js	(revision 25596)
@@ -0,0 +1,1694 @@
+/**
+ * jquery.Jcrop.js v0.9.12
+ * jQuery Image Cropping Plugin - released under MIT License 
+ * Author: Kelly Hallman <khallman@gmail.com>
+ * http://github.com/tapmodo/Jcrop
+ * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * }}}
+ */
+
+(function ($) {
+
+  $.Jcrop = function (obj, opt) {
+    var options = $.extend({}, $.Jcrop.defaults),
+        docOffset,
+        _ua = navigator.userAgent.toLowerCase(),
+        is_msie = /msie/.test(_ua),
+        ie6mode = /msie [1-6]\./.test(_ua);
+
+    // Internal Methods {{{
+    function px(n) {
+      return Math.round(n) + 'px';
+    }
+    function cssClass(cl) {
+      return options.baseClass + '-' + cl;
+    }
+    function supportsColorFade() {
+      return $.fx.step.hasOwnProperty('backgroundColor');
+    }
+    function getPos(obj) //{{{
+    {
+      var pos = $(obj).offset();
+      return [pos.left, pos.top];
+    }
+    //}}}
+    function mouseAbs(e) //{{{
+    {
+      return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])];
+    }
+    //}}}
+    function setOptions(opt) //{{{
+    {
+      if (typeof(opt) !== 'object') opt = {};
+      options = $.extend(options, opt);
+
+      $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) {
+        if (typeof(options[e]) !== 'function') options[e] = function () {};
+      });
+    }
+    //}}}
+    function startDragMode(mode, pos, touch) //{{{
+    {
+      docOffset = getPos($img);
+      Tracker.setCursor(mode === 'move' ? mode : mode + '-resize');
+
+      if (mode === 'move') {
+        return Tracker.activateHandlers(createMover(pos), doneSelect, touch);
+      }
+
+      var fc = Coords.getFixed();
+      var opp = oppLockCorner(mode);
+      var opc = Coords.getCorner(oppLockCorner(opp));
+
+      Coords.setPressed(Coords.getCorner(opp));
+      Coords.setCurrent(opc);
+
+      Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch);
+    }
+    //}}}
+    function dragmodeHandler(mode, f) //{{{
+    {
+      return function (pos) {
+        if (!options.aspectRatio) {
+          switch (mode) {
+          case 'e':
+            pos[1] = f.y2;
+            break;
+          case 'w':
+            pos[1] = f.y2;
+            break;
+          case 'n':
+            pos[0] = f.x2;
+            break;
+          case 's':
+            pos[0] = f.x2;
+            break;
+          }
+        } else {
+          switch (mode) {
+          case 'e':
+            pos[1] = f.y + 1;
+            break;
+          case 'w':
+            pos[1] = f.y + 1;
+            break;
+          case 'n':
+            pos[0] = f.x + 1;
+            break;
+          case 's':
+            pos[0] = f.x + 1;
+            break;
+          }
+        }
+        Coords.setCurrent(pos);
+        Selection.update();
+      };
+    }
+    //}}}
+    function createMover(pos) //{{{
+    {
+      var lloc = pos;
+      KeyManager.watchKeys();
+
+      return function (pos) {
+        Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
+        lloc = pos;
+
+        Selection.update();
+      };
+    }
+    //}}}
+    function oppLockCorner(ord) //{{{
+    {
+      switch (ord) {
+      case 'n':
+        return 'sw';
+      case 's':
+        return 'nw';
+      case 'e':
+        return 'nw';
+      case 'w':
+        return 'ne';
+      case 'ne':
+        return 'sw';
+      case 'nw':
+        return 'se';
+      case 'se':
+        return 'nw';
+      case 'sw':
+        return 'ne';
+      }
+    }
+    //}}}
+    function createDragger(ord) //{{{
+    {
+      return function (e) {
+        if (options.disabled) {
+          return false;
+        }
+        if ((ord === 'move') && !options.allowMove) {
+          return false;
+        }
+        
+        // Fix position of crop area when dragged the very first time.
+        // Necessary when crop image is in a hidden element when page is loaded.
+        docOffset = getPos($img);
+
+        btndown = true;
+        startDragMode(ord, mouseAbs(e));
+        e.stopPropagation();
+        e.preventDefault();
+        return false;
+      };
+    }
+    //}}}
+    function presize($obj, w, h) //{{{
+    {
+      var nw = $obj.width(),
+          nh = $obj.height();
+      if ((nw > w) && w > 0) {
+        nw = w;
+        nh = (w / $obj.width()) * $obj.height();
+      }
+      if ((nh > h) && h > 0) {
+        nh = h;
+        nw = (h / $obj.height()) * $obj.width();
+      }
+      xscale = $obj.width() / nw;
+      yscale = $obj.height() / nh;
+      $obj.width(nw).height(nh);
+    }
+    //}}}
+    function unscale(c) //{{{
+    {
+      return {
+        x: c.x * xscale,
+        y: c.y * yscale,
+        x2: c.x2 * xscale,
+        y2: c.y2 * yscale,
+        w: c.w * xscale,
+        h: c.h * yscale
+      };
+    }
+    //}}}
+    function doneSelect(pos) //{{{
+    {
+      var c = Coords.getFixed();
+      if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) {
+        Selection.enableHandles();
+        Selection.done();
+      } else {
+        Selection.release();
+      }
+      Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
+    }
+    //}}}
+    function newSelection(e) //{{{
+    {
+      if (options.disabled) {
+        return false;
+      }
+      if (!options.allowSelect) {
+        return false;
+      }
+      btndown = true;
+      docOffset = getPos($img);
+      Selection.disableHandles();
+      Tracker.setCursor('crosshair');
+      var pos = mouseAbs(e);
+      Coords.setPressed(pos);
+      Selection.update();
+      Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch');
+      KeyManager.watchKeys();
+
+      e.stopPropagation();
+      e.preventDefault();
+      return false;
+    }
+    //}}}
+    function selectDrag(pos) //{{{
+    {
+      Coords.setCurrent(pos);
+      Selection.update();
+    }
+    //}}}
+    function newTracker() //{{{
+    {
+      var trk = $('<div></div>').addClass(cssClass('tracker'));
+      if (is_msie) {
+        trk.css({
+          opacity: 0,
+          backgroundColor: 'white'
+        });
+      }
+      return trk;
+    }
+    //}}}
+
+    // }}}
+    // Initialization {{{
+    // Sanitize some options {{{
+    if (typeof(obj) !== 'object') {
+      obj = $(obj)[0];
+    }
+    if (typeof(opt) !== 'object') {
+      opt = {};
+    }
+    // }}}
+    setOptions(opt);
+    // Initialize some jQuery objects {{{
+    // The values are SET on the image(s) for the interface
+    // If the original image has any of these set, they will be reset
+    // However, if you destroy() the Jcrop instance the original image's
+    // character in the DOM will be as you left it.
+    var img_css = {
+      border: 'none',
+      visibility: 'visible',
+      margin: 0,
+      padding: 0,
+      position: 'absolute',
+      top: 0,
+      left: 0
+    };
+
+    var $origimg = $(obj),
+      img_mode = true;
+
+    if (obj.tagName == 'IMG') {
+      // Fix size of crop image.
+      // Necessary when crop image is within a hidden element when page is loaded.
+      if ($origimg[0].width != 0 && $origimg[0].height != 0) {
+        // Obtain dimensions from contained img element.
+        $origimg.width($origimg[0].width);
+        $origimg.height($origimg[0].height);
+      } else {
+        // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). 
+        var tempImage = new Image();
+        tempImage.src = $origimg[0].src;
+        $origimg.width(tempImage.width);
+        $origimg.height(tempImage.height);
+      } 
+
+      var $img = $origimg.clone().removeAttr('id').css(img_css).show();
+
+      $img.width($origimg.width());
+      $img.height($origimg.height());
+      $origimg.after($img).hide();
+
+    } else {
+      $img = $origimg.css(img_css).show();
+      img_mode = false;
+      if (options.shade === null) { options.shade = true; }
+    }
+
+    presize($img, options.boxWidth, options.boxHeight);
+
+    var boundx = $img.width(),
+        boundy = $img.height(),
+        
+        
+        $div = $('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({
+        position: 'relative',
+        backgroundColor: options.bgColor
+      }).insertAfter($origimg).append($img);
+
+    if (options.addClass) {
+      $div.addClass(options.addClass);
+    }
+
+    var $img2 = $('<div />'),
+
+        $img_holder = $('<div />') 
+        .width('100%').height('100%').css({
+          zIndex: 310,
+          position: 'absolute',
+          overflow: 'hidden'
+        }),
+
+        $hdl_holder = $('<div />') 
+        .width('100%').height('100%').css('zIndex', 320), 
+
+        $sel = $('<div />') 
+        .css({
+          position: 'absolute',
+          zIndex: 600
+        }).dblclick(function(){
+          var c = Coords.getFixed();
+          options.onDblClick.call(api,c);
+        }).insertBefore($img).append($img_holder, $hdl_holder); 
+
+    if (img_mode) {
+
+      $img2 = $('<img />')
+          .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy),
+
+      $img_holder.append($img2);
+
+    }
+
+    if (ie6mode) {
+      $sel.css({
+        overflowY: 'hidden'
+      });
+    }
+
+    var bound = options.boundary;
+    var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({
+      position: 'absolute',
+      top: px(-bound),
+      left: px(-bound),
+      zIndex: 290
+    }).mousedown(newSelection);
+
+    /* }}} */
+    // Set more variables {{{
+    var bgcolor = options.bgColor,
+        bgopacity = options.bgOpacity,
+        xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true,
+        btndown, animating, shift_down;
+
+    docOffset = getPos($img);
+    // }}}
+    // }}}
+    // Internal Modules {{{
+    // Touch Module {{{ 
+    var Touch = (function () {
+      // Touch support detection function adapted (under MIT License)
+      // from code by Jeffrey Sambells - http://github.com/iamamused/
+      function hasTouchSupport() {
+        var support = {}, events = ['touchstart', 'touchmove', 'touchend'],
+            el = document.createElement('div'), i;
+
+        try {
+          for(i=0; i<events.length; i++) {
+            var eventName = events[i];
+            eventName = 'on' + eventName;
+            var isSupported = (eventName in el);
+            if (!isSupported) {
+              el.setAttribute(eventName, 'return;');
+              isSupported = typeof el[eventName] == 'function';
+            }
+            support[events[i]] = isSupported;
+          }
+          return support.touchstart && support.touchend && support.touchmove;
+        }
+        catch(err) {
+          return false;
+        }
+      }
+
+      function detectSupport() {
+        if ((options.touchSupport === true) || (options.touchSupport === false)) return options.touchSupport;
+          else return hasTouchSupport();
+      }
+      return {
+        createDragger: function (ord) {
+          return function (e) {
+            if (options.disabled) {
+              return false;
+            }
+            if ((ord === 'move') && !options.allowMove) {
+              return false;
+            }
+            docOffset = getPos($img);
+            btndown = true;
+            startDragMode(ord, mouseAbs(Touch.cfilter(e)), true);
+            e.stopPropagation();
+            e.preventDefault();
+            return false;
+          };
+        },
+        newSelection: function (e) {
+          return newSelection(Touch.cfilter(e));
+        },
+        cfilter: function (e){
+          e.pageX = e.originalEvent.changedTouches[0].pageX;
+          e.pageY = e.originalEvent.changedTouches[0].pageY;
+          return e;
+        },
+        isSupported: hasTouchSupport,
+        support: detectSupport()
+      };
+    }());
+    // }}}
+    // Coords Module {{{
+    var Coords = (function () {
+      var x1 = 0,
+          y1 = 0,
+          x2 = 0,
+          y2 = 0,
+          ox, oy;
+
+      function setPressed(pos) //{{{
+      {
+        pos = rebound(pos);
+        x2 = x1 = pos[0];
+        y2 = y1 = pos[1];
+      }
+      //}}}
+      function setCurrent(pos) //{{{
+      {
+        pos = rebound(pos);
+        ox = pos[0] - x2;
+        oy = pos[1] - y2;
+        x2 = pos[0];
+        y2 = pos[1];
+      }
+      //}}}
+      function getOffset() //{{{
+      {
+        return [ox, oy];
+      }
+      //}}}
+      function moveOffset(offset) //{{{
+      {
+        var ox = offset[0],
+            oy = offset[1];
+
+        if (0 > x1 + ox) {
+          ox -= ox + x1;
+        }
+        if (0 > y1 + oy) {
+          oy -= oy + y1;
+        }
+
+        if (boundy < y2 + oy) {
+          oy += boundy - (y2 + oy);
+        }
+        if (boundx < x2 + ox) {
+          ox += boundx - (x2 + ox);
+        }
+
+        x1 += ox;
+        x2 += ox;
+        y1 += oy;
+        y2 += oy;
+      }
+      //}}}
+      function getCorner(ord) //{{{
+      {
+        var c = getFixed();
+        switch (ord) {
+        case 'ne':
+          return [c.x2, c.y];
+        case 'nw':
+          return [c.x, c.y];
+        case 'se':
+          return [c.x2, c.y2];
+        case 'sw':
+          return [c.x, c.y2];
+        }
+      }
+      //}}}
+      function getFixed() //{{{
+      {
+        if (!options.aspectRatio) {
+          return getRect();
+        }
+        // This function could use some optimization I think...
+        var aspect = options.aspectRatio,
+            min_x = options.minSize[0] / xscale,
+            
+            
+            //min_y = options.minSize[1]/yscale,
+            max_x = options.maxSize[0] / xscale,
+            max_y = options.maxSize[1] / yscale,
+            rw = x2 - x1,
+            rh = y2 - y1,
+            rwa = Math.abs(rw),
+            rha = Math.abs(rh),
+            real_ratio = rwa / rha,
+            xx, yy, w, h;
+
+        if (max_x === 0) {
+          max_x = boundx * 10;
+        }
+        if (max_y === 0) {
+          max_y = boundy * 10;
+        }
+        if (real_ratio < aspect) {
+          yy = y2;
+          w = rha * aspect;
+          xx = rw < 0 ? x1 - w : w + x1;
+
+          if (xx < 0) {
+            xx = 0;
+            h = Math.abs((xx - x1) / aspect);
+            yy = rh < 0 ? y1 - h : h + y1;
+          } else if (xx > boundx) {
+            xx = boundx;
+            h = Math.abs((xx - x1) / aspect);
+            yy = rh < 0 ? y1 - h : h + y1;
+          }
+        } else {
+          xx = x2;
+          h = rwa / aspect;
+          yy = rh < 0 ? y1 - h : y1 + h;
+          if (yy < 0) {
+            yy = 0;
+            w = Math.abs((yy - y1) * aspect);
+            xx = rw < 0 ? x1 - w : w + x1;
+          } else if (yy > boundy) {
+            yy = boundy;
+            w = Math.abs(yy - y1) * aspect;
+            xx = rw < 0 ? x1 - w : w + x1;
+          }
+        }
+
+        // Magic %-)
+        if (xx > x1) { // right side
+          if (xx - x1 < min_x) {
+            xx = x1 + min_x;
+          } else if (xx - x1 > max_x) {
+            xx = x1 + max_x;
+          }
+          if (yy > y1) {
+            yy = y1 + (xx - x1) / aspect;
+          } else {
+            yy = y1 - (xx - x1) / aspect;
+          }
+        } else if (xx < x1) { // left side
+          if (x1 - xx < min_x) {
+            xx = x1 - min_x;
+          } else if (x1 - xx > max_x) {
+            xx = x1 - max_x;
+          }
+          if (yy > y1) {
+            yy = y1 + (x1 - xx) / aspect;
+          } else {
+            yy = y1 - (x1 - xx) / aspect;
+          }
+        }
+
+        if (xx < 0) {
+          x1 -= xx;
+          xx = 0;
+        } else if (xx > boundx) {
+          x1 -= xx - boundx;
+          xx = boundx;
+        }
+
+        if (yy < 0) {
+          y1 -= yy;
+          yy = 0;
+        } else if (yy > boundy) {
+          y1 -= yy - boundy;
+          yy = boundy;
+        }
+
+        return makeObj(flipCoords(x1, y1, xx, yy));
+      }
+      //}}}
+      function rebound(p) //{{{
+      {
+        if (p[0] < 0) p[0] = 0;
+        if (p[1] < 0) p[1] = 0;
+
+        if (p[0] > boundx) p[0] = boundx;
+        if (p[1] > boundy) p[1] = boundy;
+
+        return [Math.round(p[0]), Math.round(p[1])];
+      }
+      //}}}
+      function flipCoords(x1, y1, x2, y2) //{{{
+      {
+        var xa = x1,
+            xb = x2,
+            ya = y1,
+            yb = y2;
+        if (x2 < x1) {
+          xa = x2;
+          xb = x1;
+        }
+        if (y2 < y1) {
+          ya = y2;
+          yb = y1;
+        }
+        return [xa, ya, xb, yb];
+      }
+      //}}}
+      function getRect() //{{{
+      {
+        var xsize = x2 - x1,
+            ysize = y2 - y1,
+            delta;
+
+        if (xlimit && (Math.abs(xsize) > xlimit)) {
+          x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
+        }
+        if (ylimit && (Math.abs(ysize) > ylimit)) {
+          y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
+        }
+
+        if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) {
+          y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale);
+        }
+        if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) {
+          x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale);
+        }
+
+        if (x1 < 0) {
+          x2 -= x1;
+          x1 -= x1;
+        }
+        if (y1 < 0) {
+          y2 -= y1;
+          y1 -= y1;
+        }
+        if (x2 < 0) {
+          x1 -= x2;
+          x2 -= x2;
+        }
+        if (y2 < 0) {
+          y1 -= y2;
+          y2 -= y2;
+        }
+        if (x2 > boundx) {
+          delta = x2 - boundx;
+          x1 -= delta;
+          x2 -= delta;
+        }
+        if (y2 > boundy) {
+          delta = y2 - boundy;
+          y1 -= delta;
+          y2 -= delta;
+        }
+        if (x1 > boundx) {
+          delta = x1 - boundy;
+          y2 -= delta;
+          y1 -= delta;
+        }
+        if (y1 > boundy) {
+          delta = y1 - boundy;
+          y2 -= delta;
+          y1 -= delta;
+        }
+
+        return makeObj(flipCoords(x1, y1, x2, y2));
+      }
+      //}}}
+      function makeObj(a) //{{{
+      {
+        return {
+          x: a[0],
+          y: a[1],
+          x2: a[2],
+          y2: a[3],
+          w: a[2] - a[0],
+          h: a[3] - a[1]
+        };
+      }
+      //}}}
+
+      return {
+        flipCoords: flipCoords,
+        setPressed: setPressed,
+        setCurrent: setCurrent,
+        getOffset: getOffset,
+        moveOffset: moveOffset,
+        getCorner: getCorner,
+        getFixed: getFixed
+      };
+    }());
+
+    //}}}
+    // Shade Module {{{
+    var Shade = (function() {
+      var enabled = false,
+          holder = $('<div />').css({
+            position: 'absolute',
+            zIndex: 240,
+            opacity: 0
+          }),
+          shades = {
+            top: createShade(),
+            left: createShade().height(boundy),
+            right: createShade().height(boundy),
+            bottom: createShade()
+          };
+
+      function resizeShades(w,h) {
+        shades.left.css({ height: px(h) });
+        shades.right.css({ height: px(h) });
+      }
+      function updateAuto()
+      {
+        return updateShade(Coords.getFixed());
+      }
+      function updateShade(c)
+      {
+        shades.top.css({
+          left: px(c.x),
+          width: px(c.w),
+          height: px(c.y)
+        });
+        shades.bottom.css({
+          top: px(c.y2),
+          left: px(c.x),
+          width: px(c.w),
+          height: px(boundy-c.y2)
+        });
+        shades.right.css({
+          left: px(c.x2),
+          width: px(boundx-c.x2)
+        });
+        shades.left.css({
+          width: px(c.x)
+        });
+      }
+      function createShade() {
+        return $('<div />').css({
+          position: 'absolute',
+          backgroundColor: options.shadeColor||options.bgColor
+        }).appendTo(holder);
+      }
+      function enableShade() {
+        if (!enabled) {
+          enabled = true;
+          holder.insertBefore($img);
+          updateAuto();
+          Selection.setBgOpacity(1,0,1);
+          $img2.hide();
+
+          setBgColor(options.shadeColor||options.bgColor,1);
+          if (Selection.isAwake())
+          {
+            setOpacity(options.bgOpacity,1);
+          }
+            else setOpacity(1,1);
+        }
+      }
+      function setBgColor(color,now) {
+        colorChangeMacro(getShades(),color,now);
+      }
+      function disableShade() {
+        if (enabled) {
+          holder.remove();
+          $img2.show();
+          enabled = false;
+          if (Selection.isAwake()) {
+            Selection.setBgOpacity(options.bgOpacity,1,1);
+          } else {
+            Selection.setBgOpacity(1,1,1);
+            Selection.disableHandles();
+          }
+          colorChangeMacro($div,0,1);
+        }
+      }
+      function setOpacity(opacity,now) {
+        if (enabled) {
+          if (options.bgFade && !now) {
+            holder.animate({
+              opacity: 1-opacity
+            },{
+              queue: false,
+              duration: options.fadeTime
+            });
+          }
+          else holder.css({opacity:1-opacity});
+        }
+      }
+      function refreshAll() {
+        options.shade ? enableShade() : disableShade();
+        if (Selection.isAwake()) setOpacity(options.bgOpacity);
+      }
+      function getShades() {
+        return holder.children();
+      }
+
+      return {
+        update: updateAuto,
+        updateRaw: updateShade,
+        getShades: getShades,
+        setBgColor: setBgColor,
+        enable: enableShade,
+        disable: disableShade,
+        resize: resizeShades,
+        refresh: refreshAll,
+        opacity: setOpacity
+      };
+    }());
+    // }}}
+    // Selection Module {{{
+    var Selection = (function () {
+      var awake,
+          hdep = 370,
+          borders = {},
+          handle = {},
+          dragbar = {},
+          seehandles = false;
+
+      // Private Methods
+      function insertBorder(type) //{{{
+      {
+        var jq = $('<div />').css({
+          position: 'absolute',
+          opacity: options.borderOpacity
+        }).addClass(cssClass(type));
+        $img_holder.append(jq);
+        return jq;
+      }
+      //}}}
+      function dragDiv(ord, zi) //{{{
+      {
+        var jq = $('<div />').mousedown(createDragger(ord)).css({
+          cursor: ord + '-resize',
+          position: 'absolute',
+          zIndex: zi
+        }).addClass('ord-'+ord);
+
+        if (Touch.support) {
+          jq.bind('touchstart.jcrop', Touch.createDragger(ord));
+        }
+
+        $hdl_holder.append(jq);
+        return jq;
+      }
+      //}}}
+      function insertHandle(ord) //{{{
+      {
+        var hs = options.handleSize,
+
+          div = dragDiv(ord, hdep++).css({
+            opacity: options.handleOpacity
+          }).addClass(cssClass('handle'));
+
+        if (hs) { div.width(hs).height(hs); }
+
+        return div;
+      }
+      //}}}
+      function insertDragbar(ord) //{{{
+      {
+        return dragDiv(ord, hdep++).addClass('jcrop-dragbar');
+      }
+      //}}}
+      function createDragbars(li) //{{{
+      {
+        var i;
+        for (i = 0; i < li.length; i++) {
+          dragbar[li[i]] = insertDragbar(li[i]);
+        }
+      }
+      //}}}
+      function createBorders(li) //{{{
+      {
+        var cl,i;
+        for (i = 0; i < li.length; i++) {
+          switch(li[i]){
+            case'n': cl='hline'; break;
+            case's': cl='hline bottom'; break;
+            case'e': cl='vline right'; break;
+            case'w': cl='vline'; break;
+          }
+          borders[li[i]] = insertBorder(cl);
+        }
+      }
+      //}}}
+      function createHandles(li) //{{{
+      {
+        var i;
+        for (i = 0; i < li.length; i++) {
+          handle[li[i]] = insertHandle(li[i]);
+        }
+      }
+      //}}}
+      function moveto(x, y) //{{{
+      {
+        if (!options.shade) {
+          $img2.css({
+            top: px(-y),
+            left: px(-x)
+          });
+        }
+        $sel.css({
+          top: px(y),
+          left: px(x)
+        });
+      }
+      //}}}
+      function resize(w, h) //{{{
+      {
+        $sel.width(Math.round(w)).height(Math.round(h));
+      }
+      //}}}
+      function refresh() //{{{
+      {
+        var c = Coords.getFixed();
+
+        Coords.setPressed([c.x, c.y]);
+        Coords.setCurrent([c.x2, c.y2]);
+
+        updateVisible();
+      }
+      //}}}
+
+      // Internal Methods
+      function updateVisible(select) //{{{
+      {
+        if (awake) {
+          return update(select);
+        }
+      }
+      //}}}
+      function update(select) //{{{
+      {
+        var c = Coords.getFixed();
+
+        resize(c.w, c.h);
+        moveto(c.x, c.y);
+        if (options.shade) Shade.updateRaw(c);
+
+        awake || show();
+
+        if (select) {
+          options.onSelect.call(api, unscale(c));
+        } else {
+          options.onChange.call(api, unscale(c));
+        }
+      }
+      //}}}
+      function setBgOpacity(opacity,force,now) //{{{
+      {
+        if (!awake && !force) return;
+        if (options.bgFade && !now) {
+          $img.animate({
+            opacity: opacity
+          },{
+            queue: false,
+            duration: options.fadeTime
+          });
+        } else {
+          $img.css('opacity', opacity);
+        }
+      }
+      //}}}
+      function show() //{{{
+      {
+        $sel.show();
+
+        if (options.shade) Shade.opacity(bgopacity);
+          else setBgOpacity(bgopacity,true);
+
+        awake = true;
+      }
+      //}}}
+      function release() //{{{
+      {
+        disableHandles();
+        $sel.hide();
+
+        if (options.shade) Shade.opacity(1);
+          else setBgOpacity(1);
+
+        awake = false;
+        options.onRelease.call(api);
+      }
+      //}}}
+      function showHandles() //{{{
+      {
+        if (seehandles) {
+          $hdl_holder.show();
+        }
+      }
+      //}}}
+      function enableHandles() //{{{
+      {
+        seehandles = true;
+        if (options.allowResize) {
+          $hdl_holder.show();
+          return true;
+        }
+      }
+      //}}}
+      function disableHandles() //{{{
+      {
+        seehandles = false;
+        $hdl_holder.hide();
+      } 
+      //}}}
+      function animMode(v) //{{{
+      {
+        if (v) {
+          animating = true;
+          disableHandles();
+        } else {
+          animating = false;
+          enableHandles();
+        }
+      } 
+      //}}}
+      function done() //{{{
+      {
+        animMode(false);
+        refresh();
+      } 
+      //}}}
+      // Insert draggable elements {{{
+      // Insert border divs for outline
+
+      if (options.dragEdges && $.isArray(options.createDragbars))
+        createDragbars(options.createDragbars);
+
+      if ($.isArray(options.createHandles))
+        createHandles(options.createHandles);
+
+      if (options.drawBorders && $.isArray(options.createBorders))
+        createBorders(options.createBorders);
+
+      //}}}
+
+      // This is a hack for iOS5 to support drag/move touch functionality
+      $(document).bind('touchstart.jcrop-ios',function(e) {
+        if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation();
+      });
+
+      var $track = newTracker().mousedown(createDragger('move')).css({
+        cursor: 'move',
+        position: 'absolute',
+        zIndex: 360
+      });
+
+      if (Touch.support) {
+        $track.bind('touchstart.jcrop', Touch.createDragger('move'));
+      }
+
+      $img_holder.append($track);
+      disableHandles();
+
+      return {
+        updateVisible: updateVisible,
+        update: update,
+        release: release,
+        refresh: refresh,
+        isAwake: function () {
+          return awake;
+        },
+        setCursor: function (cursor) {
+          $track.css('cursor', cursor);
+        },
+        enableHandles: enableHandles,
+        enableOnly: function () {
+          seehandles = true;
+        },
+        showHandles: showHandles,
+        disableHandles: disableHandles,
+        animMode: animMode,
+        setBgOpacity: setBgOpacity,
+        done: done
+      };
+    }());
+    
+    //}}}
+    // Tracker Module {{{
+    var Tracker = (function () {
+      var onMove = function () {},
+          onDone = function () {},
+          trackDoc = options.trackDocument;
+
+      function toFront(touch) //{{{
+      {
+        $trk.css({
+          zIndex: 450
+        });
+
+        if (touch)
+          $(document)
+            .bind('touchmove.jcrop', trackTouchMove)
+            .bind('touchend.jcrop', trackTouchEnd);
+
+        else if (trackDoc)
+          $(document)
+            .bind('mousemove.jcrop',trackMove)
+            .bind('mouseup.jcrop',trackUp);
+      } 
+      //}}}
+      function toBack() //{{{
+      {
+        $trk.css({
+          zIndex: 290
+        });
+        $(document).unbind('.jcrop');
+      } 
+      //}}}
+      function trackMove(e) //{{{
+      {
+        onMove(mouseAbs(e));
+        return false;
+      } 
+      //}}}
+      function trackUp(e) //{{{
+      {
+        e.preventDefault();
+        e.stopPropagation();
+
+        if (btndown) {
+          btndown = false;
+
+          onDone(mouseAbs(e));
+
+          if (Selection.isAwake()) {
+            options.onSelect.call(api, unscale(Coords.getFixed()));
+          }
+
+          toBack();
+          onMove = function () {};
+          onDone = function () {};
+        }
+
+        return false;
+      }
+      //}}}
+      function activateHandlers(move, done, touch) //{{{
+      {
+        btndown = true;
+        onMove = move;
+        onDone = done;
+        toFront(touch);
+        return false;
+      }
+      //}}}
+      function trackTouchMove(e) //{{{
+      {
+        onMove(mouseAbs(Touch.cfilter(e)));
+        return false;
+      }
+      //}}}
+      function trackTouchEnd(e) //{{{
+      {
+        return trackUp(Touch.cfilter(e));
+      }
+      //}}}
+      function setCursor(t) //{{{
+      {
+        $trk.css('cursor', t);
+      }
+      //}}}
+
+      if (!trackDoc) {
+        $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);
+      }
+
+      $img.before($trk);
+      return {
+        activateHandlers: activateHandlers,
+        setCursor: setCursor
+      };
+    }());
+    //}}}
+    // KeyManager Module {{{
+    var KeyManager = (function () {
+      var $keymgr = $('<input type="radio" />').css({
+        position: 'fixed',
+        left: '-120px',
+        width: '12px'
+      }).addClass('jcrop-keymgr'),
+
+        $keywrap = $('<div />').css({
+          position: 'absolute',
+          overflow: 'hidden'
+        }).append($keymgr);
+
+      function watchKeys() //{{{
+      {
+        if (options.keySupport) {
+          $keymgr.show();
+          $keymgr.focus();
+        }
+      }
+      //}}}
+      function onBlur(e) //{{{
+      {
+        $keymgr.hide();
+      }
+      //}}}
+      function doNudge(e, x, y) //{{{
+      {
+        if (options.allowMove) {
+          Coords.moveOffset([x, y]);
+          Selection.updateVisible(true);
+        }
+        e.preventDefault();
+        e.stopPropagation();
+      }
+      //}}}
+      function parseKey(e) //{{{
+      {
+        if (e.ctrlKey || e.metaKey) {
+          return true;
+        }
+        shift_down = e.shiftKey ? true : false;
+        var nudge = shift_down ? 10 : 1;
+
+        switch (e.keyCode) {
+        case 37:
+          doNudge(e, -nudge, 0);
+          break;
+        case 39:
+          doNudge(e, nudge, 0);
+          break;
+        case 38:
+          doNudge(e, 0, -nudge);
+          break;
+        case 40:
+          doNudge(e, 0, nudge);
+          break;
+        case 27:
+          if (options.allowSelect) Selection.release();
+          break;
+        case 9:
+          return true;
+        }
+
+        return false;
+      }
+      //}}}
+
+      if (options.keySupport) {
+        $keymgr.keydown(parseKey).blur(onBlur);
+        if (ie6mode || !options.fixedSupport) {
+          $keymgr.css({
+            position: 'absolute',
+            left: '-20px'
+          });
+          $keywrap.append($keymgr).insertBefore($img);
+        } else {
+          $keymgr.insertBefore($img);
+        }
+      }
+
+
+      return {
+        watchKeys: watchKeys
+      };
+    }());
+    //}}}
+    // }}}
+    // API methods {{{
+    function setClass(cname) //{{{
+    {
+      $div.removeClass().addClass(cssClass('holder')).addClass(cname);
+    }
+    //}}}
+    function animateTo(a, callback) //{{{
+    {
+      var x1 = a[0] / xscale,
+          y1 = a[1] / yscale,
+          x2 = a[2] / xscale,
+          y2 = a[3] / yscale;
+
+      if (animating) {
+        return;
+      }
+
+      var animto = Coords.flipCoords(x1, y1, x2, y2),
+          c = Coords.getFixed(),
+          initcr = [c.x, c.y, c.x2, c.y2],
+          animat = initcr,
+          interv = options.animationDelay,
+          ix1 = animto[0] - initcr[0],
+          iy1 = animto[1] - initcr[1],
+          ix2 = animto[2] - initcr[2],
+          iy2 = animto[3] - initcr[3],
+          pcent = 0,
+          velocity = options.swingSpeed;
+
+      x1 = animat[0];
+      y1 = animat[1];
+      x2 = animat[2];
+      y2 = animat[3];
+
+      Selection.animMode(true);
+      var anim_timer;
+
+      function queueAnimator() {
+        window.setTimeout(animator, interv);
+      }
+      var animator = (function () {
+        return function () {
+          pcent += (100 - pcent) / velocity;
+
+          animat[0] = Math.round(x1 + ((pcent / 100) * ix1));
+          animat[1] = Math.round(y1 + ((pcent / 100) * iy1));
+          animat[2] = Math.round(x2 + ((pcent / 100) * ix2));
+          animat[3] = Math.round(y2 + ((pcent / 100) * iy2));
+
+          if (pcent >= 99.8) {
+            pcent = 100;
+          }
+          if (pcent < 100) {
+            setSelectRaw(animat);
+            queueAnimator();
+          } else {
+            Selection.done();
+            Selection.animMode(false);
+            if (typeof(callback) === 'function') {
+              callback.call(api);
+            }
+          }
+        };
+      }());
+      queueAnimator();
+    }
+    //}}}
+    function setSelect(rect) //{{{
+    {
+      setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]);
+      options.onSelect.call(api, unscale(Coords.getFixed()));
+      Selection.enableHandles();
+    }
+    //}}}
+    function setSelectRaw(l) //{{{
+    {
+      Coords.setPressed([l[0], l[1]]);
+      Coords.setCurrent([l[2], l[3]]);
+      Selection.update();
+    }
+    //}}}
+    function tellSelect() //{{{
+    {
+      return unscale(Coords.getFixed());
+    }
+    //}}}
+    function tellScaled() //{{{
+    {
+      return Coords.getFixed();
+    }
+    //}}}
+    function setOptionsNew(opt) //{{{
+    {
+      setOptions(opt);
+      interfaceUpdate();
+    }
+    //}}}
+    function disableCrop() //{{{
+    {
+      options.disabled = true;
+      Selection.disableHandles();
+      Selection.setCursor('default');
+      Tracker.setCursor('default');
+    }
+    //}}}
+    function enableCrop() //{{{
+    {
+      options.disabled = false;
+      interfaceUpdate();
+    }
+    //}}}
+    function cancelCrop() //{{{
+    {
+      Selection.done();
+      Tracker.activateHandlers(null, null);
+    }
+    //}}}
+    function destroy() //{{{
+    {
+      $div.remove();
+      $origimg.show();
+      $origimg.css('visibility','visible');
+      $(obj).removeData('Jcrop');
+    }
+    //}}}
+    function setImage(src, callback) //{{{
+    {
+      Selection.release();
+      disableCrop();
+      var img = new Image();
+      img.onload = function () {
+        var iw = img.width;
+        var ih = img.height;
+        var bw = options.boxWidth;
+        var bh = options.boxHeight;
+        $img.width(iw).height(ih);
+        $img.attr('src', src);
+        $img2.attr('src', src);
+        presize($img, bw, bh);
+        boundx = $img.width();
+        boundy = $img.height();
+        $img2.width(boundx).height(boundy);
+        $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
+        $div.width(boundx).height(boundy);
+        Shade.resize(boundx,boundy);
+        enableCrop();
+
+        if (typeof(callback) === 'function') {
+          callback.call(api);
+        }
+      };
+      img.src = src;
+    }
+    //}}}
+    function colorChangeMacro($obj,color,now) {
+      var mycolor = color || options.bgColor;
+      if (options.bgFade && supportsColorFade() && options.fadeTime && !now) {
+        $obj.animate({
+          backgroundColor: mycolor
+        }, {
+          queue: false,
+          duration: options.fadeTime
+        });
+      } else {
+        $obj.css('backgroundColor', mycolor);
+      }
+    }
+    function interfaceUpdate(alt) //{{{
+    // This method tweaks the interface based on options object.
+    // Called when options are changed and at end of initialization.
+    {
+      if (options.allowResize) {
+        if (alt) {
+          Selection.enableOnly();
+        } else {
+          Selection.enableHandles();
+        }
+      } else {
+        Selection.disableHandles();
+      }
+
+      Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
+      Selection.setCursor(options.allowMove ? 'move' : 'default');
+
+      if (options.hasOwnProperty('trueSize')) {
+        xscale = options.trueSize[0] / boundx;
+        yscale = options.trueSize[1] / boundy;
+      }
+
+      if (options.hasOwnProperty('setSelect')) {
+        setSelect(options.setSelect);
+        Selection.done();
+        delete(options.setSelect);
+      }
+
+      Shade.refresh();
+
+      if (options.bgColor != bgcolor) {
+        colorChangeMacro(
+          options.shade? Shade.getShades(): $div,
+          options.shade?
+            (options.shadeColor || options.bgColor):
+            options.bgColor
+        );
+        bgcolor = options.bgColor;
+      }
+
+      if (bgopacity != options.bgOpacity) {
+        bgopacity = options.bgOpacity;
+        if (options.shade) Shade.refresh();
+          else Selection.setBgOpacity(bgopacity);
+      }
+
+      xlimit = options.maxSize[0] || 0;
+      ylimit = options.maxSize[1] || 0;
+      xmin = options.minSize[0] || 0;
+      ymin = options.minSize[1] || 0;
+
+      if (options.hasOwnProperty('outerImage')) {
+        $img.attr('src', options.outerImage);
+        delete(options.outerImage);
+      }
+
+      Selection.refresh();
+    }
+    //}}}
+    //}}}
+
+    if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection);
+
+    $hdl_holder.hide();
+    interfaceUpdate(true);
+
+    var api = {
+      setImage: setImage,
+      animateTo: animateTo,
+      setSelect: setSelect,
+      setOptions: setOptionsNew,
+      tellSelect: tellSelect,
+      tellScaled: tellScaled,
+      setClass: setClass,
+
+      disable: disableCrop,
+      enable: enableCrop,
+      cancel: cancelCrop,
+      release: Selection.release,
+      destroy: destroy,
+
+      focus: KeyManager.watchKeys,
+
+      getBounds: function () {
+        return [boundx * xscale, boundy * yscale];
+      },
+      getWidgetSize: function () {
+        return [boundx, boundy];
+      },
+      getScaleFactor: function () {
+        return [xscale, yscale];
+      },
+      getOptions: function() {
+        // careful: internal values are returned
+        return options;
+      },
+
+      ui: {
+        holder: $div,
+        selection: $sel
+      }
+    };
+
+    if (is_msie) $div.bind('selectstart', function () { return false; });
+
+    $origimg.data('Jcrop', api);
+    return api;
+  };
+  $.fn.Jcrop = function (options, callback) //{{{
+  {
+    var api;
+    // Iterate over each object, attach Jcrop
+    this.each(function () {
+      // If we've already attached to this object
+      if ($(this).data('Jcrop')) {
+        // The API can be requested this way (undocumented)
+        if (options === 'api') return $(this).data('Jcrop');
+        // Otherwise, we just reset the options...
+        else $(this).data('Jcrop').setOptions(options);
+      }
+      // If we haven't been attached, preload and attach
+      else {
+        if (this.tagName == 'IMG')
+          $.Jcrop.Loader(this,function(){
+            $(this).css({display:'block',visibility:'hidden'});
+            api = $.Jcrop(this, options);
+            if ($.isFunction(callback)) callback.call(api);
+          });
+        else {
+          $(this).css({display:'block',visibility:'hidden'});
+          api = $.Jcrop(this, options);
+          if ($.isFunction(callback)) callback.call(api);
+        }
+      }
+    });
+
+    // Return "this" so the object is chainable (jQuery-style)
+    return this;
+  };
+  //}}}
+  // $.Jcrop.Loader - basic image loader {{{
+
+  $.Jcrop.Loader = function(imgobj,success,error){
+    var $img = $(imgobj), img = $img[0];
+
+    function completeCheck(){
+      if (img.complete) {
+        $img.unbind('.jcloader');
+        if ($.isFunction(success)) success.call(img);
+      }
+      else window.setTimeout(completeCheck,50);
+    }
+
+    $img
+      .bind('load.jcloader',completeCheck)
+      .bind('error.jcloader',function(e){
+        $img.unbind('.jcloader');
+        if ($.isFunction(error)) error.call(img);
+      });
+
+    if (img.complete && $.isFunction(success)){
+      $img.unbind('.jcloader');
+      success.call(img);
+    }
+  };
+
+  //}}}
+  // Global Defaults {{{
+  $.Jcrop.defaults = {
+
+    // Basic Settings
+    allowSelect: true,
+    allowMove: true,
+    allowResize: true,
+
+    trackDocument: true,
+
+    // Styling Options
+    baseClass: 'jcrop',
+    addClass: null,
+    bgColor: 'black',
+    bgOpacity: 0.6,
+    bgFade: false,
+    borderOpacity: 0.4,
+    handleOpacity: 0.5,
+    handleSize: null,
+
+    aspectRatio: 0,
+    keySupport: true,
+    createHandles: ['n','s','e','w','nw','ne','se','sw'],
+    createDragbars: ['n','s','e','w'],
+    createBorders: ['n','s','e','w'],
+    drawBorders: true,
+    dragEdges: true,
+    fixedSupport: true,
+    touchSupport: null,
+
+    shade: null,
+
+    boxWidth: 0,
+    boxHeight: 0,
+    boundary: 2,
+    fadeTime: 400,
+    animationDelay: 20,
+    swingSpeed: 3,
+
+    minSelect: [0, 0],
+    maxSize: [0, 0],
+    minSize: [0, 0],
+
+    // Callbacks / Event Handlers
+    onChange: function () {},
+    onSelect: function () {},
+    onDblClick: function () {},
+    onRelease: function () {}
+  };
+
+  // }}}
+}(jQuery));
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.Jcrop.min.js	(revision 25596)
@@ -0,0 +1,22 @@
+/**
+ * jquery.Jcrop.min.js v0.9.12 (build:20130202)
+ * jQuery Image Cropping Plugin - released under MIT License
+ * Copyright (c) 2008-2013 Tapmodo Interactive LLC
+ * https://github.com/tapmodo/Jcrop
+ */
+(function(a){a.Jcrop=function(b,c){function i(a){return Math.round(a)+"px"}function j(a){return d.baseClass+"-"+a}function k(){return a.fx.step.hasOwnProperty("backgroundColor")}function l(b){var c=a(b).offset();return[c.left,c.top]}function m(a){return[a.pageX-e[0],a.pageY-e[1]]}function n(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function o(a,b,c){e=l(D),bc.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bc.activateHandlers(q(b),v,c);var d=_.getFixed(),f=r(a),g=_.getCorner(r(f));_.setPressed(_.getCorner(f)),_.setCurrent(g),bc.activateHandlers(p(a,d),v,c)}function p(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}_.setCurrent(c),bb.update()}}function q(a){var b=a;return bd.watchKeys
+(),function(a){_.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bb.update()}}function r(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function s(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(b)),b.stopPropagation(),b.preventDefault(),!1)}}function t(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),T=a.width()/d,U=a.height()/e,a.width(d).height(e)}function u(a){return{x:a.x*T,y:a.y*U,x2:a.x2*T,y2:a.y2*U,w:a.w*T,h:a.h*U}}function v(a){var b=_.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bb.enableHandles(),bb.done()):bb.release(),bc.setCursor(d.allowSelect?"crosshair":"default")}function w(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;W=!0,e=l(D),bb.disableHandles(),bc.setCursor("crosshair");var b=m(a);return _.setPressed(b),bb.update(),bc.activateHandlers(x,v,a.type.substring
+(0,5)==="touch"),bd.watchKeys(),a.stopPropagation(),a.preventDefault(),!1}function x(a){_.setCurrent(a),bb.update()}function y(){var b=a("<div></div>").addClass(j("tracker"));return g&&b.css({opacity:0,backgroundColor:"white"}),b}function be(a){G.removeClass().addClass(j("holder")).addClass(a)}function bf(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/T,e=a[1]/U,f=a[2]/T,g=a[3]/U;if(X)return;var h=_.flipCoords(c,e,f,g),i=_.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],bb.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bh(k),t()):(bb.done(),bb.animMode(!1),typeof b=="function"&&b.call(bs))}}();t()}function bg(a){bh([a[0]/T,a[1]/U,a[2]/T,a[3]/U]),d.onSelect.call(bs,u(_.getFixed())),bb.enableHandles()}function bh(a){_.setPressed([a[0],a[1]]),_.setCurrent([a[2],
+a[3]]),bb.update()}function bi(){return u(_.getFixed())}function bj(){return _.getFixed()}function bk(a){n(a),br()}function bl(){d.disabled=!0,bb.disableHandles(),bb.setCursor("default"),bc.setCursor("default")}function bm(){d.disabled=!1,br()}function bn(){bb.done(),bc.activateHandlers(null,null)}function bo(){G.remove(),A.show(),A.css("visibility","visible"),a(b).removeData("Jcrop")}function bp(a,b){bb.release(),bl();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;D.width(e).height(f),D.attr("src",a),H.attr("src",a),t(D,g,h),E=D.width(),F=D.height(),H.width(E).height(F),M.width(E+L*2).height(F+L*2),G.width(E).height(F),ba.resize(E,F),bm(),typeof b=="function"&&b.call(bs)},c.src=a}function bq(a,b,c){var e=b||d.bgColor;d.bgFade&&k()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function br(a){d.allowResize?a?bb.enableOnly():bb.enableHandles():bb.disableHandles(),bc.setCursor(d.allowSelect?"crosshair":"default"),bb
+.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(T=d.trueSize[0]/E,U=d.trueSize[1]/F),d.hasOwnProperty("setSelect")&&(bg(d.setSelect),bb.done(),delete d.setSelect),ba.refresh(),d.bgColor!=N&&(bq(d.shade?ba.getShades():G,d.shade?d.shadeColor||d.bgColor:d.bgColor),N=d.bgColor),O!=d.bgOpacity&&(O=d.bgOpacity,d.shade?ba.refresh():bb.setBgOpacity(O)),P=d.maxSize[0]||0,Q=d.maxSize[1]||0,R=d.minSize[0]||0,S=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(D.attr("src",d.outerImage),delete d.outerImage),bb.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f=navigator.userAgent.toLowerCase(),g=/msie/.test(f),h=/msie [1-6]\./.test(f);typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),n(c);var z={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},A=a(b),B=!0;if(b.tagName=="IMG"){if(A[0].width!=0&&A[0].height!=0)A.width(A[0].width),A.height(A[0].height);else{var C=new Image;C.src=A[0].src,A.width(C.width),A.height(C.height)}var D=A.clone().removeAttr("id").
+css(z).show();D.width(A.width()),D.height(A.height()),A.after(D).hide()}else D=A.css(z).show(),B=!1,d.shade===null&&(d.shade=!0);t(D,d.boxWidth,d.boxHeight);var E=D.width(),F=D.height(),G=a("<div />").width(E).height(F).addClass(j("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(A).append(D);d.addClass&&G.addClass(d.addClass);var H=a("<div />"),I=a("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),J=a("<div />").width("100%").height("100%").css("zIndex",320),K=a("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var a=_.getFixed();d.onDblClick.call(bs,a)}).insertBefore(D).append(I,J);B&&(H=a("<img />").attr("src",D.attr("src")).css(z).width(E).height(F),I.append(H)),h&&K.css({overflowY:"hidden"});var L=d.boundary,M=y().width(E+L*2).height(F+L*2).css({position:"absolute",top:i(-L),left:i(-L),zIndex:290}).mousedown(w),N=d.bgColor,O=d.bgOpacity,P,Q,R,S,T,U,V=!0,W,X,Y;e=l(D);var Z=function(){function a(){var a={},b=["touchstart"
+,"touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;d<b.length;d++){var e=b[d];e="on"+e;var f=e in c;f||(c.setAttribute(e,"return;"),f=typeof c[e]=="function"),a[b[d]]=f}return a.touchstart&&a.touchend&&a.touchmove}catch(g){return!1}}function b(){return d.touchSupport===!0||d.touchSupport===!1?d.touchSupport:a()}return{createDragger:function(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(Z.cfilter(b)),!0),b.stopPropagation(),b.preventDefault(),!1)}},newSelection:function(a){return w(Z.cfilter(a))},cfilter:function(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,a},isSupported:a,support:b()}}(),_=function(){function h(d){d=n(d),c=a=d[0],e=b=d[1]}function i(a){a=n(a),f=a[0]-c,g=a[1]-e,c=a[0],e=a[1]}function j(){return[f,g]}function k(d){var f=d[0],g=d[1];0>a+f&&(f-=f+a),0>b+g&&(g-=g+b),F<e+g&&(g+=F-(e+g)),E<c+f&&(f+=E-(c+f)),a+=f,c+=f,b+=g,e+=g}function l(a){var b=m();switch(a){case"ne":return[
+b.x2,b.y];case"nw":return[b.x,b.y];case"se":return[b.x2,b.y2];case"sw":return[b.x,b.y2]}}function m(){if(!d.aspectRatio)return p();var f=d.aspectRatio,g=d.minSize[0]/T,h=d.maxSize[0]/T,i=d.maxSize[1]/U,j=c-a,k=e-b,l=Math.abs(j),m=Math.abs(k),n=l/m,r,s,t,u;return h===0&&(h=E*10),i===0&&(i=F*10),n<f?(s=e,t=m*f,r=j<0?a-t:t+a,r<0?(r=0,u=Math.abs((r-a)/f),s=k<0?b-u:u+b):r>E&&(r=E,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>F&&(s=F,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-a<g?r=a+g:r-a>h&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):r<a&&(a-r<g?r=a-g:a-r>h&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>E&&(a-=r-E,r=E),s<0?(b-=s,s=0):s>F&&(b-=s-F,s=F),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>E&&(a[0]=E),a[1]>F&&(a[1]=F),[Math.round(a[0]),Math.round(a[1])]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return c<a&&(e=c,f=a),d<b&&(g=d,h=b),[e,g,f,h]}function p(){var d=c-a,f=e-b,g;return P&&Math.abs(d)>P&&(c=d>0?a+P:a-P),Q&&Math.abs
+(f)>Q&&(e=f>0?b+Q:b-Q),S/U&&Math.abs(f)<S/U&&(e=f>0?b+S/U:b-S/U),R/T&&Math.abs(d)<R/T&&(c=d>0?a+R/T:a-R/T),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>E&&(g=c-E,a-=g,c-=g),e>F&&(g=e-F,b-=g,e-=g),a>E&&(g=a-F,e-=g,b-=g),b>F&&(g=b-F,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),ba=function(){function f(a,b){e.left.css({height:i(b)}),e.right.css({height:i(b)})}function g(){return h(_.getFixed())}function h(a){e.top.css({left:i(a.x),width:i(a.w),height:i(a.y)}),e.bottom.css({top:i(a.y2),left:i(a.x),width:i(a.w),height:i(F-a.y2)}),e.right.css({left:i(a.x2),width:i(E-a.x2)}),e.left.css({width:i(a.x)})}function j(){return a("<div />").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(D),g(),bb.setBgOpacity(1,0,1),H.hide(),l(d.shadeColor||d.bgColor,1),bb.
+isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bq(p(),a,b)}function m(){b&&(c.remove(),H.show(),b=!1,bb.isAwake()?bb.setBgOpacity(d.bgOpacity,1,1):(bb.setBgOpacity(1,1,1),bb.disableHandles()),bq(G,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bb.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("<div />").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(F),right:j().height(F),bottom:j()};return{update:g,updateRaw:h,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bb=function(){function k(b){var c=a("<div />").css({position:"absolute",opacity:d.borderOpacity}).addClass(j(b));return I.append(c),c}function l(b,c){var d=a("<div />").mousedown(s(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Z.support&&d.bind("touchstart.jcrop",Z.createDragger(b)),J.append(d),d}function m(a){var b=d.handleSize,e=l(a,c++
+).css({opacity:d.handleOpacity}).addClass(j("handle"));return b&&e.width(b).height(b),e}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b<a.length;b++)g[a[b]]=n(a[b])}function p(a){var b,c;for(c=0;c<a.length;c++){switch(a[c]){case"n":b="hline";break;case"s":b="hline bottom";break;case"e":b="vline right";break;case"w":b="vline"}e[a[c]]=k(b)}}function q(a){var b;for(b=0;b<a.length;b++)f[a[b]]=m(a[b])}function r(a,b){d.shade||H.css({top:i(-b),left:i(-a)}),K.css({top:i(b),left:i(a)})}function t(a,b){K.width(Math.round(a)).height(Math.round(b))}function v(){var a=_.getFixed();_.setPressed([a.x,a.y]),_.setCurrent([a.x2,a.y2]),w()}function w(a){if(b)return x(a)}function x(a){var c=_.getFixed();t(c.w,c.h),r(c.x,c.y),d.shade&&ba.updateRaw(c),b||A(),a?d.onSelect.call(bs,u(c)):d.onChange.call(bs,u(c))}function z(a,c,e){if(!b&&!c)return;d.bgFade&&!e?D.animate({opacity:a},{queue:!1,duration:d.fadeTime}):D.css("opacity",a)}function A(){K.show(),d.shade?ba.opacity(O):z(O,!0),b=!0}function B
+(){F(),K.hide(),d.shade?ba.opacity(1):z(1),b=!1,d.onRelease.call(bs)}function C(){h&&J.show()}function E(){h=!0;if(d.allowResize)return J.show(),!0}function F(){h=!1,J.hide()}function G(a){a?(X=!0,F()):(X=!1,E())}function L(){G(!1),v()}var b,c=370,e={},f={},g={},h=!1;d.dragEdges&&a.isArray(d.createDragbars)&&o(d.createDragbars),a.isArray(d.createHandles)&&q(d.createHandles),d.drawBorders&&a.isArray(d.createBorders)&&p(d.createBorders),a(document).bind("touchstart.jcrop-ios",function(b){a(b.currentTarget).hasClass("jcrop-tracker")&&b.stopPropagation()});var M=y().mousedown(s("move")).css({cursor:"move",position:"absolute",zIndex:360});return Z.support&&M.bind("touchstart.jcrop",Z.createDragger("move")),I.append(M),F(),{updateVisible:w,update:x,release:B,refresh:v,isAwake:function(){return b},setCursor:function(a){M.css("cursor",a)},enableHandles:E,enableOnly:function(){h=!0},showHandles:C,disableHandles:F,animMode:G,setBgOpacity:z,done:L}}(),bc=function(){function f(b){M.css({zIndex:450}),b?a(document).bind("touchmove.jcrop"
+,k).bind("touchend.jcrop",l):e&&a(document).bind("mousemove.jcrop",h).bind("mouseup.jcrop",i)}function g(){M.css({zIndex:290}),a(document).unbind(".jcrop")}function h(a){return b(m(a)),!1}function i(a){return a.preventDefault(),a.stopPropagation(),W&&(W=!1,c(m(a)),bb.isAwake()&&d.onSelect.call(bs,u(_.getFixed())),g(),b=function(){},c=function(){}),!1}function j(a,d,e){return W=!0,b=a,c=d,f(e),!1}function k(a){return b(m(Z.cfilter(a))),!1}function l(a){return i(Z.cfilter(a))}function n(a){M.css("cursor",a)}var b=function(){},c=function(){},e=d.trackDocument;return e||M.mousemove(h).mouseup(i).mouseout(i),D.before(M),{activateHandlers:j,setCursor:n}}(),bd=function(){function e(){d.keySupport&&(b.show(),b.focus())}function f(a){b.hide()}function g(a,b,c){d.allowMove&&(_.moveOffset([b,c]),bb.updateVisible(!0)),a.preventDefault(),a.stopPropagation()}function i(a){if(a.ctrlKey||a.metaKey)return!0;Y=a.shiftKey?!0:!1;var b=Y?10:1;switch(a.keyCode){case 37:g(a,-b,0);break;case 39:g(a,b,0);break;case 38:g(a,0,-b);break;
+case 40:g(a,0,b);break;case 27:d.allowSelect&&bb.release();break;case 9:return!0}return!1}var b=a('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("<div />").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),h||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(D)):b.insertBefore(D)),{watchKeys:e}}();Z.support&&M.bind("touchstart.jcrop",Z.newSelection),J.hide(),br(!0);var bs={setImage:bp,animateTo:bf,setSelect:bg,setOptions:bk,tellSelect:bi,tellScaled:bj,setClass:be,disable:bl,enable:bm,cancel:bn,release:bb.release,destroy:bo,focus:bd.watchKeys,getBounds:function(){return[E*T,F*U]},getWidgetSize:function(){return[E,F]},getScaleFactor:function(){return[T,U]},getOptions:function(){return d},ui:{holder:G,selection:K}};return g&&G.bind("selectstart",function(){return!1}),A.data("Jcrop",bs),bs},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(
+b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges
+:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.ajaxmanager.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.ajaxmanager.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.ajaxmanager.js	(revision 25596)
@@ -0,0 +1,342 @@
+/**!
+ * project-site: http://plugins.jquery.com/project/AjaxManager
+ * repository: http://github.com/aFarkas/Ajaxmanager
+ * @author Alexander Farkas
+ * @version 3.12
+ * Copyright 2010, Alexander Farkas
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ */
+
+(function($){
+	"use strict";
+	var managed = {},
+		cache   = {}
+	;
+	$.manageAjax = (function(){
+		function create(name, opts){
+			managed[name] = new $.manageAjax._manager(name, opts);
+			return managed[name];
+		}
+		
+		function destroy(name){
+			if(managed[name]){
+				managed[name].clear(true);
+				delete managed[name];
+			}
+		}
+
+		
+		var publicFns = {
+			create: create,
+			destroy: destroy
+		};
+		
+		return publicFns;
+	})();
+	
+	$.manageAjax._manager = function(name, opts){
+		this.requests = {};
+		this.inProgress = 0;
+		this.name = name;
+		this.qName = name;
+		
+		this.opts = $.extend({}, $.manageAjax.defaults, opts);
+		if(opts && opts.queue && opts.queue !== true && typeof opts.queue === 'string' && opts.queue !== 'clear'){
+			this.qName = opts.queue;
+		}
+	};
+	
+	$.manageAjax._manager.prototype = {
+		add: function(url, o){
+			if(typeof url == 'object'){
+				o = url;
+			} else if(typeof url == 'string'){
+				o = $.extend(o || {}, {url: url});
+			}
+			o = $.extend({}, this.opts, o);
+			
+			var origCom		= o.complete || $.noop,
+				origSuc		= o.success || $.noop,
+				beforeSend	= o.beforeSend || $.noop,
+				origError 	= o.error || $.noop,
+				strData 	= (typeof o.data == 'string') ? o.data : $.param(o.data || {}),
+				xhrID 		= o.type + o.url + strData,
+				that 		= this,
+				ajaxFn 		= this._createAjax(xhrID, o, origSuc, origCom)
+			;
+			if(o.preventDoubleRequests && o.queueDuplicateRequests){
+				if(o.preventDoubleRequests){
+					o.queueDuplicateRequests = false;
+				}
+				setTimeout(function(){
+					throw("preventDoubleRequests and queueDuplicateRequests can't be both true");
+				}, 0);
+			}
+			if(this.requests[xhrID] && o.preventDoubleRequests){
+				return;
+			}
+			ajaxFn.xhrID = xhrID;
+			o.xhrID = xhrID;
+			
+			o.beforeSend = function(xhr, opts){
+				var ret = beforeSend.call(this, xhr, opts);
+				if(ret === false){
+					that._removeXHR(xhrID);
+				}
+				xhr = null;
+				return ret;
+			};
+			o.complete = function(xhr, status){
+				that._complete.call(that, this, origCom, xhr, status, xhrID, o);
+				xhr = null;
+			};
+			
+			o.success = function(data, status, xhr){
+				that._success.call(that, this, origSuc, data, status, xhr, o);
+				xhr = null;
+			};
+						
+			//always add some error callback
+			o.error =  function(ahr, status, errorStr){
+				var httpStatus 	= '',
+					content 	= ''
+				;
+				if(status !== 'timeout' && ahr){
+					httpStatus = ahr.status;
+					content = ahr.responseXML || ahr.responseText;
+				}
+				if(origError) {
+					origError.call(this, ahr, status, errorStr, o);
+				} else {
+					setTimeout(function(){
+						throw status + '| status: ' + httpStatus + ' | URL: ' + o.url + ' | data: '+ strData + ' | thrown: '+ errorStr + ' | response: '+ content;
+					}, 0);
+				}
+				ahr = null;
+			};
+			
+			if(o.queue === 'clear'){
+				$(document).clearQueue(this.qName);
+			}
+			
+			if(o.queue || (o.queueDuplicateRequests && this.requests[xhrID])){
+				$.queue(document, this.qName, ajaxFn);
+				if(this.inProgress < o.maxRequests && (!this.requests[xhrID] || !o.queueDuplicateRequests)){
+					$.dequeue(document, this.qName);
+				}
+				return xhrID;
+			}
+			return ajaxFn();
+		},
+		_createAjax: function(id, o, origSuc, origCom){
+			var that = this;
+			return function(){
+				if(o.beforeCreate.call(o.context || that, id, o) === false){return;}
+				that.inProgress++;
+				if(that.inProgress === 1){
+					$.event.trigger(that.name +'AjaxStart');
+				}
+				if(o.cacheResponse && cache[id]){
+					if(!cache[id].cacheTTL || cache[id].cacheTTL < 0 || ((new Date().getTime() - cache[id].timestamp) < cache[id].cacheTTL)){
+                        that.requests[id] = {};
+                        setTimeout(function(){
+							that._success.call(that, o.context || o, origSuc, cache[id]._successData, 'success', cache[id], o);
+                        	that._complete.call(that, o.context || o, origCom, cache[id], 'success', id, o);
+                        }, 0);
+                    } else {
+						 delete cache[id];
+					}
+				} 
+				if(!o.cacheResponse || !cache[id]) {
+					if (o.async) {
+						that.requests[id] = $.ajax(o);
+					} else {
+						$.ajax(o);
+					}
+				}
+				return id;
+			};
+		},
+		_removeXHR: function(xhrID){
+			if(this.opts.queue || this.opts.queueDuplicateRequests){
+				$.dequeue(document, this.qName);
+			}
+			this.inProgress--;
+			this.requests[xhrID] = null;
+			delete this.requests[xhrID];
+		},
+		clearCache: function () {
+            cache = {};
+        },
+		_isAbort: function(xhr, status, o){
+			if(!o.abortIsNoSuccess || (!xhr && !status)){
+				return false;
+			}
+			var ret = !!(  ( !xhr || xhr.readyState === 0 || this.lastAbort === o.xhrID ) );
+			xhr = null;
+			return ret;
+		},
+		_complete: function(context, origFn, xhr, status, xhrID, o){
+			if(this._isAbort(xhr, status, o)){
+				status = 'abort';
+				o.abort.call(context, xhr, status, o);
+			}
+			origFn.call(context, xhr, status, o);
+			
+			$.event.trigger(this.name +'AjaxComplete', [xhr, status, o]);
+			
+			if(o.domCompleteTrigger){
+				$(o.domCompleteTrigger)
+					.trigger(this.name +'DOMComplete', [xhr, status, o])
+					.trigger('DOMComplete', [xhr, status, o])
+				;
+			}
+			
+			this._removeXHR(xhrID);
+			if(!this.inProgress){
+				$.event.trigger(this.name +'AjaxStop');
+			}
+			xhr = null;
+		},
+		_success: function(context, origFn, data, status, xhr, o){
+			var that = this;
+			if(this._isAbort(xhr, status, o)){
+				xhr = null;
+				return;
+			}
+			if(o.abortOld){
+				$.each(this.requests, function(name){
+					if(name === o.xhrID){
+						return false;
+					}
+					that.abort(name);
+				});
+			}
+			if(o.cacheResponse && !cache[o.xhrID]){
+				if(!xhr){
+					xhr = {};
+				}
+				cache[o.xhrID] = {
+					status: xhr.status,
+					statusText: xhr.statusText,
+					responseText: xhr.responseText,
+					responseXML: xhr.responseXML,
+					_successData: data,
+					cacheTTL: o.cacheTTL, 
+					timestamp: new Date().getTime()
+				};
+				if('getAllResponseHeaders' in xhr){
+					var responseHeaders = xhr.getAllResponseHeaders();
+					var parsedHeaders;
+					var parseHeaders = function(){
+						if(parsedHeaders){return;}
+						parsedHeaders = {};
+						$.each(responseHeaders.split("\n"), function(i, headerLine){
+							var delimiter = headerLine.indexOf(":");
+		                    parsedHeaders[headerLine.substr(0, delimiter)] = headerLine.substr(delimiter + 2);
+						});
+					};
+					$.extend(cache[o.xhrID], {
+						getAllResponseHeaders: function() {return responseHeaders;},
+						getResponseHeader: function(name) {
+							parseHeaders();
+							return (name in parsedHeaders) ? parsedHeaders[name] : null;
+						}
+					});
+				}
+			}
+			origFn.call(context, data, status, xhr, o);
+			$.event.trigger(this.name +'AjaxSuccess', [xhr, o, data]);
+			if(o.domSuccessTrigger){
+				$(o.domSuccessTrigger)
+					.trigger(this.name +'DOMSuccess', [data, o])
+					.trigger('DOMSuccess', [data, o])
+				;
+			}
+			xhr = null;
+		},
+		getData: function(id){
+			if( id ){
+				var ret = this.requests[id];
+				if(!ret && this.opts.queue) {
+					ret = $.grep($(document).queue(this.qName), function(fn, i){
+						return (fn.xhrID === id);
+					})[0];
+				}
+				return ret;
+			}
+			return {
+				requests: this.requests,
+				queue: (this.opts.queue) ? $(document).queue(this.qName) : [],
+				inProgress: this.inProgress
+			};
+		},
+		abort: function(id){
+			var xhr;
+			if(id){
+				xhr = this.getData(id);
+				
+				if(xhr && xhr.abort){
+					this.lastAbort = id;
+					xhr.abort();
+					this.lastAbort = false;
+				} else {
+					$(document).queue(
+						this.qName, $.grep($(document).queue(this.qName), function(fn, i){
+							return (fn !== xhr);
+						})
+					);
+				}
+				xhr = null;
+				return;
+			}
+			
+			var that 	= this,
+				ids 	= []
+			;
+			$.each(this.requests, function(id){
+				ids.push(id);
+			});
+			$.each(ids, function(i, id){
+				that.abort(id);
+			});
+		},
+		clear: function(shouldAbort){
+			$(document).clearQueue(this.qName); 
+			if(shouldAbort){
+				this.abort();
+			}
+		}
+	};
+	$.manageAjax._manager.prototype.getXHR = $.manageAjax._manager.prototype.getData;
+	$.manageAjax.defaults = {
+		beforeCreate: $.noop,
+		abort: $.noop,
+		abortIsNoSuccess: true,
+		maxRequests: 1,
+		cacheResponse: false,
+		async: true,
+		domCompleteTrigger: false,
+		domSuccessTrigger: false,
+		preventDoubleRequests: true,
+		queueDuplicateRequests: false,
+		cacheTTL: -1,
+		queue: false // true, false, clear
+	};
+	
+	$.each($.manageAjax._manager.prototype, function(n, fn){
+		if(n.indexOf('_') === 0 || !$.isFunction(fn)){return;}
+		$.manageAjax[n] =  function(name, o){
+			if(!managed[name]){
+				if(n === 'add'){
+					$.manageAjax.create(name, o);
+				} else {
+					return;
+				}
+			}
+			var args = Array.prototype.slice.call(arguments, 1);
+			managed[name][n].apply(managed[name], args);
+		};
+	});
+	
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.autogrow-textarea.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.autogrow-textarea.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.autogrow-textarea.js	(revision 25596)
@@ -0,0 +1,47 @@
+(function($) {
+
+    /*
+     * Auto-growing textareas; technique ripped from Facebook
+     */
+    $.fn.autogrow = function(options) {
+        
+        this.filter('textarea').each(function() {
+            
+            var $this       = $(this),
+                minHeight   = $this.height(),
+                lineHeight  = $this.css('lineHeight');
+            
+            var shadow = $('<div></div>').css({
+                position:   'absolute',
+                top:        -10000,
+                left:       -10000,
+                width:      $(this).width(),
+                fontSize:   $this.css('fontSize'),
+                fontFamily: $this.css('fontFamily'),
+                lineHeight: $this.css('lineHeight'),
+                resize:     'none'
+            }).appendTo(document.body);
+            
+            var update = function() {
+                
+                var val = this.value.replace(/</g, '&lt;')
+                                    .replace(/>/g, '&gt;')
+                                    .replace(/&/g, '&amp;')
+                                    .replace(/\n/g, '<br/>');
+                
+                shadow.html(val);
+                $(this).css('height', Math.max(shadow.height() + 20, minHeight));
+            
+            }
+            
+            $(this).change(update).keyup(update).keydown(update);
+            
+            update.apply(this);
+            
+        });
+        
+        return this;
+        
+    }
+    
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.cluetip.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.cluetip.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.cluetip.js	(revision 25596)
@@ -0,0 +1,872 @@
+/*!
+ * jQuery clueTip plugin v1.2.6
+ *
+ * Date: Sun Sep 09 22:07:58 2012 EDT
+ * Requires: jQuery v1.3+
+ *
+ * Copyright 2012, Karl Swedberg
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ *
+ * Examples can be found at http://plugins.learningjquery.com/cluetip/demo/
+ *
+*/
+
+(function($) {
+
+  $.cluetip = {
+    version: '1.2.6',
+
+    // the HTML that will be used for the tooltip
+    template: ['<div>',
+      '<div class="cluetip-outer">',
+        '<h3 class="cluetip-title ui-widget-header ui-cluetip-header"></h3>',
+        '<div class="cluetip-inner ui-widget-content ui-cluetip-content"></div>',
+      '</div>',
+      '<div class="cluetip-extra"></div>',
+    '</div>'].join(''),
+
+    /* clueTip setup
+     *  the setup options are applied each time .cluetip() is called,
+     *  BUT only if <div id="cluetip"> is not already in the document
+    */
+    setup: {
+      // method to be used for inserting the clueTip into the DOM.
+      // Permitted values are 'appendTo', 'prependTo', 'insertBefore', and 'insertAfter'
+      insertionType: 'appendTo',
+      // element in the DOM the plugin will reference when inserting the clueTip.
+      insertionElement: 'body'
+    },
+
+    /*
+     * clueTip options
+     *
+     * each one can be explicitly overridden by changing its value.
+     * for example: $.cluetip.defaults.width = 200;
+     *         or: $.fn.cluetip.defaults.width = 200; // for compatibility with previous clueTip versions
+     * would change the default width for all clueTips to 200.
+     *
+     * each one can also be overridden by passing an options map to the cluetip method.
+     * for example: $('a.example').cluetip({width: 200});
+     * would change the default width to 200 for clueTips invoked by a link with class of "example"
+     *
+    */
+    defaults: {
+      multiple:         false,    // Allow a new tooltip to be created for each .cluetip() call
+      width:            275,      // The width of the clueTip
+      height:           'auto',   // The height of the clueTip
+      cluezIndex:       97,       // Sets the z-index style property of the clueTip
+      positionBy:       'auto',   // Sets the type of positioning: 'auto', 'mouse','bottomTop', 'topBottom', fixed'
+      topOffset:        15,       // Number of px to offset clueTip from top of invoking element
+      leftOffset:       15,       // Number of px to offset clueTip from left of invoking element
+      snapToEdge:       false,    // For bottomTop and topBottom, snap to the top or bottom of the element.
+      local:            false,    // Whether to use content from the same page for the clueTip's body
+      localPrefix:      null,     // string to be prepended to the tip attribute if local is true
+      localIdSuffix:    null,     // string to be appended to the cluetip content element's id if local is true
+      hideLocal:        true,     // If local option is set to true, this determines whether local content
+                                  // to be shown in clueTip should be hidden at its original location
+      attribute:        'rel',    // the attribute to be used for fetching the clueTip's body content
+      titleAttribute:   'title',  // the attribute to be used for fetching the clueTip's title
+      splitTitle:       '',       // A character used to split the title attribute into the clueTip title and divs
+                                  // within the clueTip body. more info below [6]
+      escapeTitle:      false,    // whether to html escape the title attribute
+      showTitle:        true,     // show title bar of the clueTip, even if title attribute not set
+      cluetipClass:     'default',// class added to outermost clueTip div in the form of 'cluetip-' + clueTipClass.
+      hoverClass:       '',       // class applied to the invoking element onmouseover and removed onmouseout
+      waitImage:        true,     // whether to show a "loading" img, which is set in jquery.cluetip.css
+      cursor:           'help',
+      arrows:           false,    // if true, displays arrow on appropriate side of clueTip
+      dropShadow:       true,     // set to false if you don't want the drop-shadow effect on the clueTip
+      dropShadowSteps:  6,        // adjusts the size of the drop shadow
+      sticky:           false,    // keep visible until manually closed
+      mouseOutClose:    false,    // close when clueTip is moused out: false, 'cluetip', 'link', 'both'
+      delayedClose:     50,        // close clueTip on a timed delay
+      activation:       'hover',  // set to 'click' to force user to click to show clueTip
+                                  // set to 'focus' to show on focus of a form element and hide on blur
+      clickThrough:     true,    // if true, and activation is not 'click', then clicking on link will take user to the link's href,
+                                  // even if href and tipAttribute are equal
+      tracking:         false,    // if true, clueTip will track mouse movement (experimental)
+      closePosition:    'top',    // location of close text for sticky cluetips; can be 'top', 'bottom', 'title' or 'none'
+      closeText:        'Close',  // text (or HTML) to to be clicked to close sticky clueTips
+      truncate:         0,        // number of characters to truncate clueTip's contents. if 0, no truncation occurs
+
+      // effect and speed for opening clueTips
+      fx: {
+                        open:       'show', // can be 'show' or 'slideDown' or 'fadeIn'
+                        openSpeed:  ''
+      },
+
+      // settings for when hoverIntent plugin is used
+      hoverIntent: {
+                        sensitivity:  3,
+                        interval:     50,
+                        timeout:      0
+      },
+
+      // short-circuit function to run just before clueTip is shown.
+      onActivate:       function(e) {return true;},
+      // function to run just after clueTip is shown.
+      onShow:           function(ct, ci){},
+      // function to run just after clueTip is hidden.
+      onHide:           function(ct, ci){},
+      // whether to cache results of ajax request to avoid unnecessary hits to server
+      ajaxCache:        true,
+
+      // process data retrieved via xhr before it's displayed
+      ajaxProcess:      function(data) {
+                          data = data.replace(/<(script|style|title)[^<]+<\/(script|style|title)>/gm, '').replace(/<(link|meta)[^>]+>/g,'');
+                          return data;
+      },
+
+      // can pass in standard $.ajax() parameters. Callback functions, such as beforeSend,
+      // will be queued first within the default callbacks.
+      // The only exception is error, which overrides the default
+      ajaxSettings: {
+                        // error: function(ct, ci) { /* override default error callback */ },
+                        // beforeSend: function(ct, ci) { /* called first within default beforeSend callback */ },
+                        dataType: 'html'
+      },
+      debug: false
+
+    }
+  };
+  var $cluetipWait,
+      standardClasses = 'cluetip ui-widget ui-widget-content ui-cluetip',
+      caches = {},
+      counter = 0,
+      imgCount = 0;
+
+  // use $.fn.prop() if available (jQuery 1.6+); otherwise, $.fn.attr()
+  $.fn.attrProp = $.fn.prop || $.fn.attr;
+
+  // .cluetip() method
+  $.fn.cluetip = function(js, options) {
+    var $cluetip, $cluetipInner, $cluetipOuter, $cluetipTitle, $cluetipArrows, $dropShadow;
+    if (typeof js == 'object') {
+      options = js;
+      js = null;
+    }
+    if (js == 'destroy') {
+      var data = this.data('cluetip');
+      if ( data ) {
+        $(data.selector).remove();
+        $.removeData(this, 'title');
+        $.removeData(this, 'cluetip');
+        $.removeData(this, 'cluetipMoc');
+      }
+      $(document).unbind('.cluetip');
+      return this.unbind('.cluetip');
+    }
+
+    // merge per-call options with defaults
+    options = $.extend(true, {}, $.cluetip.defaults, options || {});
+
+    /** =create cluetip divs **/
+    counter++;
+    var cluezIndex,
+        cluetipId = $.cluetip.backCompat || !options.multiple ? 'cluetip' : 'cluetip-' + counter,
+        cluetipSelector = '#' + cluetipId,
+        prefix = $.cluetip.backCompat ? '#' : '.',
+        insertionType = $.cluetip.setup.insertionType,
+        insertionElement = $.cluetip.setup.insertionElement || 'body';
+
+    insertionType = (/appendTo|prependTo|insertBefore|insertAfter/).test(insertionType) ? insertionType : 'appendTo';
+    $cluetip = $(cluetipSelector);
+    if (!$cluetip.length) {
+
+      $cluetip = $($.cluetip.template)
+      [insertionType](insertionElement)
+      .attr('id', cluetipId)
+      .css({position: 'absolute', display: 'none'});
+
+      cluezIndex = +options.cluezIndex;
+      $cluetipOuter = $cluetip.find(prefix + 'cluetip-outer').css({position: 'relative', zIndex: cluezIndex});
+      $cluetipInner = $cluetip.find(prefix + 'cluetip-inner');
+      $cluetipTitle = $cluetip.find(prefix + 'cluetip-title');
+
+      $cluetip.bind('mouseenter mouseleave', function(event) {
+        $(this).data('entered', event.type === 'mouseenter');
+      });
+    }
+
+    $cluetipWait = $('#cluetip-waitimage');
+    if (!$cluetipWait.length && options.waitImage) {
+      $cluetipWait = $('<div></div>').attr('id', 'cluetip-waitimage').css({position: 'absolute'});
+      $cluetipWait.insertBefore($cluetip).hide();
+    }
+
+
+    var cluetipPadding = (parseInt($cluetip.css('paddingLeft'), 10) || 0) + (parseInt($cluetip.css('paddingRight'), 10) || 0);
+
+
+    this.each(function(index) {
+      var link = this,
+          $link = $(this),
+          // support metadata plugin (v1.0 and 2.0)
+          opts = $.extend(true, {}, options, $.metadata ? $link.metadata() : $.meta ? $link.data() : $link.data('cluetip') || {}),
+          // start out with no contents (for ajax activation)
+          cluetipContents = false,
+          isActive = false,
+          closeOnDelay = null,
+          tipAttribute = opts[opts.attribute] ||
+            ( opts.attribute == 'href' ? $link.attr(opts.attribute) : $link.attrProp(opts.attribute) || $link.attr(opts.attribute) ),
+          ctClass = opts.cluetipClass;
+
+      cluezIndex = +opts.cluezIndex;
+      $link.data('cluetip', {title: link.title, zIndex: cluezIndex, selector: cluetipSelector});
+
+      if (opts.arrows && !$cluetip.find('.cluetip-arrows').length) {
+        $cluetip.append('<div class="cluetip-arrows ui-state-default"></div>');
+      }
+
+      if (!tipAttribute && !opts.splitTitle && !js) {
+        return true;
+      }
+      // if hideLocal is set to true, on DOM ready hide the local content that will be displayed in the clueTip
+      if (opts.local && opts.localPrefix) {tipAttribute = opts.localPrefix + tipAttribute;}
+      if (opts.local && opts.hideLocal && tipAttribute) { $(tipAttribute + ':first').hide(); }
+
+      var tOffset = parseInt(opts.topOffset, 10), lOffset = parseInt(opts.leftOffset, 10);
+      // vertical measurement variables
+      var tipHeight, wHeight,
+          defHeight = isNaN(parseInt(opts.height, 10)) ? 'auto' : (/\D/g).test(opts.height) ? opts.height : opts.height + 'px';
+      var sTop, linkTop, linkBottom, posY, tipY, mouseY, baseline;
+      // horizontal measurement variables
+      var tipInnerWidth = parseInt(opts.width, 10) || 275,
+          tipWidth = tipInnerWidth + cluetipPadding + opts.dropShadowSteps,
+          linkWidth = this.offsetWidth,
+          linkLeft, posX, tipX, mouseX, winWidth;
+
+      // parse the title
+      var tipParts;
+      var tipTitle = (opts.attribute != 'title') ? $link.attrProp(opts.titleAttribute) || '' : '';
+      if (opts.splitTitle) {
+        tipParts = tipTitle.split(opts.splitTitle);
+        tipTitle = opts.showTitle || tipParts[0] === '' ? tipParts.shift() : '';
+      }
+      if (opts.escapeTitle) {
+        tipTitle = tipTitle.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;');
+      }
+
+      var localContent;
+      function returnFalse() { return false; }
+
+      // Keep track of mouse entered state on link
+      $link.bind('mouseenter mouseleave', function(event) {
+        var data = $link.data('cluetip');
+        data.entered = event.type === 'entered';
+        $link.data('cluetip', data);
+      });
+
+/***************************************
+* ACTIVATION
+****************************************/
+
+//activate clueTip
+    var activate = function(event) {
+      var pY, ajaxMergedSettings, cacheKey,
+          continueOn = opts.onActivate.call(link, event);
+
+      if (continueOn === false) {
+        return false;
+      }
+
+      isActive = true;
+
+      // activate function may get called after an initialization of a
+      // different target so need to re-get the Correct Cluetip object here
+      $cluetip = $(cluetipSelector).css({position: 'absolute'});
+      $cluetipOuter = $cluetip.find(prefix + 'cluetip-outer');
+      $cluetipInner = $cluetip.find(prefix + 'cluetip-inner');
+      $cluetipTitle = $cluetip.find(prefix + 'cluetip-title');
+      $cluetipArrows = $cluetip.find(prefix + 'cluetip-arrows');
+      $cluetip.removeClass().css({width: tipInnerWidth});
+      if (tipAttribute == $link.attr('href')) {
+        $link.css('cursor', opts.cursor);
+      }
+      if (opts.hoverClass) {
+        $link.addClass(opts.hoverClass);
+      }
+      linkTop = posY = $link.offset().top;
+      linkBottom = linkTop + $link.innerHeight();
+      linkLeft = $link.offset().left;
+
+      // FIX: (bug 4412)
+      linkWidth = $link.innerWidth();
+      if ( event.type == focus ) {
+        // in focus event, no mouse position is available; this is needed with bottomTop:
+        mouseX = linkLeft +  ( linkWidth / 2 ) + lOffset;
+        $cluetip.css({left: posX});
+        mouseY = posY + tOffset;
+      } else {
+        mouseX = event.pageX;
+        mouseY = event.pageY;
+      }
+      //END OF FIX
+
+      if (link.tagName.toLowerCase() != 'area') {
+        sTop = $(document).scrollTop();
+        winWidth = $(window).width();
+      }
+// position clueTip horizontally
+      if (opts.positionBy == 'fixed') {
+        posX = linkWidth + linkLeft + lOffset;
+        $cluetip.css({left: posX});
+      } else {
+        posX = (linkWidth > linkLeft && linkLeft > tipWidth) ||
+          linkLeft + linkWidth + tipWidth + lOffset > winWidth ?
+          linkLeft - tipWidth - lOffset :
+          linkWidth + linkLeft + lOffset;
+        if (link.tagName.toLowerCase() == 'area' || opts.positionBy == 'mouse' || linkWidth + tipWidth > winWidth) { // position by mouse
+          if (mouseX + 20 + tipWidth > winWidth) {
+            $cluetip.addClass('cluetip-' + ctClass);
+            posX = (mouseX - tipWidth - lOffset) >= 0 ? mouseX - tipWidth - lOffset - parseInt($cluetip.css('marginLeft'),10) + parseInt($cluetipInner.css('marginRight'),10) :  mouseX - (tipWidth/2);
+          } else {
+            posX = mouseX + lOffset;
+          }
+        }
+        pY = posX < 0 ? event.pageY + tOffset : event.pageY;
+        if (posX < 0 || opts.positionBy == 'bottomTop'  || opts.positionBy == 'topBottom') {
+          posX = (mouseX + (tipWidth/2) > winWidth) ? winWidth/2 - tipWidth/2 : Math.max(mouseX - (tipWidth/2),0);
+        }
+      }
+
+      $cluetipArrows.css({zIndex: $link.data('cluetip').zIndex+1});
+      $cluetip.css({
+        left: posX,
+        zIndex: $link.data('cluetip').zIndex
+      });
+      wHeight = $(window).height();
+
+/***************************************
+* load a string from cluetip method's first argument
+***************************************/
+      if (js) {
+        if (typeof js == 'function') {
+          js = js.call(link);
+        }
+        $cluetipInner.html(js);
+        cluetipShow(pY);
+      }
+/***************************************
+* load the title attribute only (or user-selected attribute).
+* clueTip title is the string before the first delimiter
+* subsequent delimiters place clueTip body text on separate lines
+***************************************/
+
+      else if (tipParts) {
+        var tpl = tipParts.length;
+        $cluetipInner.html(tpl ? tipParts[0] : '');
+        if (tpl > 1) {
+          for (var i=1; i < tpl; i++){
+            $cluetipInner.append('<div class="split-body">' + tipParts[i] + '</div>');
+          }
+        }
+        cluetipShow(pY);
+      }
+/***************************************
+* load external file via ajax
+***************************************/
+
+      else if ( !opts.local && tipAttribute.indexOf('#') !== 0 ) {
+        if (/\.(jpe?g|tiff?|gif|png)(?:\?.*)?$/i.test(tipAttribute)) {
+          $cluetipInner.html('<img src="' + tipAttribute + '" alt="' + tipTitle + '" />');
+          cluetipShow(pY);
+        } else {
+          var optionBeforeSend = opts.ajaxSettings.beforeSend,
+              optionError = opts.ajaxSettings.error,
+              optionSuccess = opts.ajaxSettings.success,
+              optionComplete = opts.ajaxSettings.complete;
+
+          cacheKey = getCacheKey(tipAttribute, opts.ajaxSettings.data);
+
+          var ajaxSettings = {
+            cache: opts.ajaxCache, // force requested page not to be cached by browser
+            url: tipAttribute,
+            beforeSend: function(xhr, settings) {
+              if (optionBeforeSend) {optionBeforeSend.call(link, xhr, $cluetip, $cluetipInner, settings);}
+              $cluetipOuter.children().empty();
+              if (opts.waitImage) {
+                $cluetipWait
+                .css({top: mouseY+20, left: mouseX+20, zIndex: $link.data('cluetip').zIndex-1})
+                .show();
+              }
+            },
+            error: function(xhr, textStatus) {
+              if ( options.ajaxCache && !caches[cacheKey] ) {
+                caches[cacheKey] = {status: 'error', textStatus: textStatus, xhr: xhr};
+              }
+
+              if (isActive) {
+                if (optionError) {
+                  optionError.call(link, xhr, textStatus, $cluetip, $cluetipInner);
+                } else {
+                  $cluetipInner.html('<i>sorry, the contents could not be loaded</i>');
+                }
+              }
+            },
+            success: function(data, textStatus, xhr) {
+              if ( options.ajaxCache && !caches[cacheKey] ) {
+                caches[cacheKey] = {status: 'success', data: data, textStatus: textStatus, xhr: xhr};
+              }
+
+              cluetipContents = opts.ajaxProcess.call(link, data);
+
+              // allow for changing the title based on data returned by xhr
+              if ( typeof cluetipContents == 'object' && cluetipContents !== null ) {
+                tipTitle = cluetipContents.title;
+                cluetipContents = cluetipContents.content;
+              }
+
+              if (isActive) {
+                if (optionSuccess) {
+                  optionSuccess.call(link, data, textStatus, $cluetip, $cluetipInner);
+                }
+                $cluetipInner.html(cluetipContents);
+
+              }
+            },
+            complete: function(xhr, textStatus) {
+              if (optionComplete) {
+                optionComplete.call(link, xhr, textStatus, $cluetip, $cluetipInner);
+              }
+              var imgs = $cluetipInner[0].getElementsByTagName('img');
+              imgCount = imgs.length;
+              for (var i=0, l = imgs.length; i < l; i++) {
+                if (imgs[i].complete) {
+                  imgCount--;
+                }
+              }
+              if (imgCount && !$.browser.opera) {
+                $(imgs).bind('load.ct error.ct', function() {
+                  imgCount--;
+                  if (imgCount === 0) {
+                    $cluetipWait.hide();
+                    $(imgs).unbind('.ct');
+                    if (isActive) { cluetipShow(pY); }
+                  }
+                });
+              } else {
+                $cluetipWait.hide();
+                if (isActive) { cluetipShow(pY); }
+              }
+            }
+          };
+
+          ajaxMergedSettings = $.extend(true, {}, opts.ajaxSettings, ajaxSettings);
+
+          if ( caches[cacheKey] ) {
+            cachedAjax( caches[cacheKey], ajaxMergedSettings );
+          } else {
+            $.ajax(ajaxMergedSettings);
+          }
+        }
+      }
+/***************************************
+* load an element from the same page
+***************************************/
+      else if (opts.local) {
+        var $localContent = $(tipAttribute + (/^#\S+$/.test(tipAttribute) ? '' : ':eq(' + index + ')')).clone(true).show();
+        if (opts.localIdSuffix) {
+          $localContent.attr('id', $localContent[0].id + opts.localIdSuffix);
+        }
+        $cluetipInner.html($localContent);
+        cluetipShow(pY);
+      }
+    };
+
+// get dimensions and options for cluetip and prepare it to be shown
+    var cluetipShow = function(bpY) {
+      var $closeLink, dynamicClasses, heightDiff,
+          titleHTML = tipTitle || opts.showTitle && '&nbsp;',
+          bgY = '', direction = '', insufficientX = false;
+      var stickyClose = {
+        bottom: function($cLink) {
+          $cLink.appendTo($cluetipInner);
+        },
+        top: function($cLink) {
+          $cLink.prependTo($cluetipInner);
+        },
+        title: function($cLink) {
+          $cLink.prependTo($cluetipTitle);
+        }
+      };
+
+      $cluetip.addClass('cluetip-' + ctClass);
+      if (opts.truncate) {
+        var $truncloaded = $cluetipInner.text().slice(0,opts.truncate) + '...';
+        $cluetipInner.html($truncloaded);
+      }
+
+      if (titleHTML) {
+        $cluetipTitle.show().html(titleHTML);
+      } else {
+        $cluetipTitle.hide();
+      }
+
+      if (opts.sticky) {
+        if (stickyClose[opts.closePosition]) {
+          $closeLink = $('<div class="cluetip-close"><a href="#">' + opts.closeText + '</a></div>');
+          stickyClose[opts.closePosition]( $closeLink );
+          $closeLink.bind('click.cluetip', function() {
+            cluetipClose();
+            return false;
+          });
+        }
+        if (opts.mouseOutClose) {
+          $link.unbind('mouseleave.cluetipMoc');
+          $cluetip.unbind('mouseleave.cluetipMoc');
+          if (opts.mouseOutClose == 'both' || opts.mouseOutClose == 'cluetip' || opts.mouseOutClose === true) { // true implies 'cluetip' for backwards compatability
+            $cluetip.bind('mouseleave.cluetipMoc', mouseOutClose);
+          }
+          if (opts.mouseOutClose == 'both' || opts.mouseOutClose == 'link') {
+            $link.bind('mouseleave.cluetipMoc', mouseOutClose);
+          }
+        }
+      }
+
+// now that content is loaded, finish the positioning
+      $cluetipOuter.css({zIndex: $link.data('cluetip').zIndex, overflow: defHeight == 'auto' ? 'visible' : 'auto', height: defHeight});
+      tipHeight = defHeight == 'auto' ? Math.max($cluetip.outerHeight(),$cluetip.height()) : parseInt(defHeight,10);
+      tipY = posY;
+      baseline = sTop + wHeight;
+      insufficientX = (posX < mouseX && (Math.max(posX, 0) + tipWidth > mouseX));
+      if (opts.positionBy == 'fixed') {
+        tipY = posY - opts.dropShadowSteps + tOffset;
+      } else if (opts.positionBy == 'topBottom' || opts.positionBy == 'bottomTop' || insufficientX) {
+        if (opts.positionBy == 'topBottom') {
+          if (posY + tipHeight + tOffset < baseline && mouseY - sTop < tipHeight + tOffset) {
+            direction = 'bottom';
+          } else {
+            direction = 'top';
+          }
+        } else if (opts.positionBy == 'bottomTop' || insufficientX) {
+          if (posY + tipHeight + tOffset > baseline && mouseY - sTop > tipHeight + tOffset) {
+            direction = 'top';
+          } else {
+            direction = 'bottom';
+          }
+        }
+        // We should now have a direction. Compute tipY
+        if (opts.snapToEdge) {
+          if (direction == 'top') {
+            tipY = linkTop - tipHeight - tOffset;
+          } else if (direction == 'bottom') {
+            tipY = linkBottom + tOffset;
+          }
+        } else {
+          if (direction == 'top') {
+            tipY = mouseY - tipHeight - tOffset;
+          } else if (direction == 'bottom') {
+            tipY = mouseY + tOffset;
+          }
+        }
+      } else if ( posY + tipHeight + tOffset > baseline ) {
+        tipY = (tipHeight >= wHeight) ? sTop : baseline - tipHeight - tOffset;
+      } else if ($link.css('display') == 'block' || link.tagName.toLowerCase() == 'area' || opts.positionBy == "mouse") {
+        tipY = bpY - tOffset;
+      } else {
+        tipY = posY - opts.dropShadowSteps;
+      }
+      if (direction === '') {
+        direction = posX < linkLeft ? 'left' :  'right';
+      }
+      // add classes
+      dynamicClasses = ' clue-' + direction + '-' + ctClass + ' cluetip-' + ctClass;
+      if (ctClass == 'rounded') {
+        dynamicClasses += ' ui-corner-all';
+      }
+      $cluetip.css({top: tipY + 'px'}).attrProp({'className': standardClasses + dynamicClasses});
+      // set up arrow positioning to align with element
+      if (opts.arrows) {
+        if ( /(left|right)/.test(direction) ) {
+          heightDiff = $cluetip.height() - $cluetipArrows.height();
+          bgY = posX >= 0 && bpY > 0 ? (posY - tipY - opts.dropShadowSteps) : 0;
+          bgY = heightDiff > bgY ? bgY : heightDiff;
+          bgY += 'px';
+        }
+        $cluetipArrows.css({top: bgY}).show();
+      } else {
+        $cluetipArrows.hide();
+      }
+
+// (first hide, then) ***SHOW THE CLUETIP***
+      // handle dropshadow divs first
+      $dropShadow = createDropShadows($cluetip, opts);
+      if ($dropShadow && $dropShadow.length) {
+        $dropShadow.hide().css({height: tipHeight, width: tipInnerWidth, zIndex: $link.data('cluetip').zIndex-1}).show();
+      }
+
+      if (!closeOnDelay) {
+        $cluetip.hide();
+      }
+      clearTimeout(closeOnDelay);
+      closeOnDelay = null;
+
+      // show the cluetip
+      $cluetip[opts.fx.open](opts.fx.openSpeed || 0);
+
+      if ($.fn.bgiframe) { $cluetip.bgiframe(); }
+
+      // trigger the optional onShow function
+      opts.onShow.call(link, $cluetip, $cluetipInner);
+    };
+
+/***************************************
+   =INACTIVATION
+-------------------------------------- */
+    var inactivate = function(event) {
+      isActive = false;
+      $cluetipWait.hide();
+      if (!opts.sticky || (/click|toggle/).test(opts.activation) ) {
+        // delayed close (not fully tested)
+        if (opts.delayedClose > 0) {
+          clearTimeout(closeOnDelay);
+          closeOnDelay = null;
+          closeOnDelay = setTimeout(cluetipClose, opts.delayedClose);
+        }
+      }
+
+      if (opts.hoverClass) {
+        $link.removeClass(opts.hoverClass);
+      }
+    };
+
+    // close cluetip and reset some things
+    var cluetipClose = function(el) {
+      var $closer = el && el.data('cluetip') ? el : $link,
+          ct = $closer.data('cluetip') && $closer.data('cluetip').selector,
+          ctSelector = ct || 'div.cluetip',
+          $cluetip = $(ctSelector),
+          $cluetipInner = $cluetip.find(prefix + 'cluetip-inner'),
+          $cluetipArrows = $cluetip.find(prefix + 'cluetip-arrows');
+
+      $cluetip.hide().removeClass();
+      opts.onHide.call($closer[0], $cluetip, $cluetipInner);
+
+      if (ct) {
+        $closer.removeClass('cluetip-clicked');
+        $closer.css('cursor','');
+      }
+      if (ct && tipTitle) {
+        $closer.attrProp(opts.titleAttribute, tipTitle);
+      }
+
+      if (opts.arrows) {
+        $cluetipArrows.css({top: ''});
+      }
+    };
+
+    // Check to see if we should be closing by checking where the user is hovering.
+    // We do a short 50ms delay for two reasons: to prevent flicker, and to allow the user time to hover on other element
+    var mouseOutClose = function() {
+      var el = this;
+      clearTimeout(closeOnDelay);
+      closeOnDelay = setTimeout(function() {
+        var linkOver = $link.data('cluetip').entered,
+            cluetipOver = $cluetip.data('entered'),
+            entered = false;
+
+        if ( opts.mouseOutClose == 'both' && (linkOver || cluetipOver) ) {
+          entered = true;
+        }
+        // true implies 'cluetip' for backwards compatibility
+        else if ( (opts.mouseOutClose === true || opts.mouseOutClose == 'cluetip') && cluetipOver) {
+          entered = true;
+        }
+        else if (opts.mouseOutClose == 'link' && linkOver) {
+          entered = true;
+        }
+
+        if ( !entered ) {
+          // All checks pass, close the cluetip
+          cluetipClose.call(el);
+        }
+
+      }, opts.delayedClose);
+    };
+
+    $(document).unbind('hideCluetip.cluetip').bind('hideCluetip.cluetip', function(e) {
+      cluetipClose( $(e.target) );
+    });
+/***************************************
+   =BIND EVENTS
+-------------------------------------- */
+  // activate by click
+      if ( (/click|toggle/).test(opts.activation) ) {
+        $link.bind('click.cluetip', function(event) {
+          if ($cluetip.is(':hidden') || !$link.is('.cluetip-clicked')) {
+            activate(event);
+            $('.cluetip-clicked').removeClass('cluetip-clicked');
+            $link.addClass('cluetip-clicked');
+          } else {
+            inactivate(event);
+          }
+          return false;
+        });
+  // activate by focus; inactivate by blur
+      } else if (opts.activation == 'focus') {
+        $link.bind('focus.cluetip', function(event) {
+          $link.attrProp('title','');
+          activate(event);
+        });
+        $link.bind('blur.cluetip', function(event) {
+          $link.attrProp('title', $link.data('cluetip').title);
+          inactivate(event);
+        });
+  // activate by hover
+      } else {
+
+        // clicking is returned false if clickThrough option is set to false
+        $link[opts.clickThrough ? 'unbind' : 'bind']('click.cluetip', returnFalse);
+
+        //set up mouse tracking
+        var mouseTracks = function(evt) {
+          if (opts.tracking) {
+            var trackX = posX - evt.pageX;
+            var trackY = tipY ? tipY - evt.pageY : posY - evt.pageY;
+            $link.bind('mousemove.cluetip', function(evt) {
+              $cluetip.css({left: evt.pageX + trackX, top: evt.pageY + trackY });
+            });
+          }
+        };
+
+        if ($.fn.hoverIntent && opts.hoverIntent) {
+          $link.hoverIntent({
+            sensitivity: opts.hoverIntent.sensitivity,
+            interval: opts.hoverIntent.interval,
+            over: function(event) {
+              activate(event);
+              mouseTracks(event);
+            },
+            timeout: opts.hoverIntent.timeout,
+            out: function(event) {
+              inactivate(event);
+              $link.unbind('mousemove.cluetip');
+            }
+          });
+        } else {
+          $link.bind('mouseenter.cluetip', function(event) {
+            activate(event);
+            mouseTracks(event);
+          })
+          .bind('mouseleave.cluetip', function(event) {
+            inactivate(event);
+            $link.unbind('mousemove.cluetip');
+          });
+        }
+
+        $link.bind('mouseover.cluetip', function(event) {
+          $link.attrProp('title','');
+        }).bind('mouseleave.cluetip', function(event) {
+          $link.attrProp('title', $link.data('cluetip').title);
+        });
+      }
+
+      // trigger a cached Ajax response
+      function cachedAjax(info, settings) {
+        var status = info.status;
+        settings.beforeSend(info.xhr, settings);
+        if ( status == 'error' ) {
+          settings[status](info.xhr, info.textStatus);
+        } else if (status == 'success') {
+          settings[status](info.data, info.textStatus, info.xhr);
+        }
+        settings.complete(info.xhr, settings.textStatus);
+      }
+
+    }); // end this.each
+
+    /** =private functions
+    ************************************************************/
+    //empty function
+    function doNothing() {}
+
+    // create a string to be used as an identifier for ajax caches
+    function getCacheKey(url, data) {
+      var cacheKey = url || '';
+      data = data || '';
+
+      if (typeof data == 'object') {
+        $.each(data, function(key, val) {
+          cacheKey += '-' + key + '-' + val;
+        });
+      } else if (typeof data == 'string') {
+        cacheKey += data;
+      }
+
+      return cacheKey;
+    }
+
+    /** =create dropshadow divs **/
+
+    function createDropShadows($cluetip, options, newDropShadow) {
+      var dsStyle = '',
+          dropShadowSteps = (options.dropShadow && options.dropShadowSteps) ? +options.dropShadowSteps : 0;
+
+      if ($.support.boxShadow) {
+        if ( dropShadowSteps ) {
+          dsStyle = '1px 1px ' + dropShadowSteps + 'px rgba(0,0,0,0.5)';
+        }
+        var dsOffsets = dropShadowSteps === 0 ? '0 0 ' : '1px 1px ';
+        $cluetip.css($.support.boxShadow, dsStyle);
+        return false;
+      }
+      var oldDropShadow = $cluetip.find('.cluetip-drop-shadow');
+      if (dropShadowSteps == oldDropShadow.length) {
+        return oldDropShadow;
+      }
+      oldDropShadow.remove();
+      var dropShadows = [];
+      for (var i=0; i < dropShadowSteps;) {
+        dropShadows[i++] = '<div style="top:' + i + 'px;left:' + i + 'px;"></div>';
+      }
+
+      newDropShadow = $(dropShadows.join(''))
+      .css({
+        position: 'absolute',
+        backgroundColor: '#000',
+        zIndex: cluezIndex -1,
+        opacity: 0.1
+      })
+      .addClass('cluetip-drop-shadow')
+      .prependTo($cluetip);
+      return newDropShadow;
+
+    }
+
+    return this;
+  };
+
+  (function() {
+    $.support = $.support || {};
+    // check support for CSS3 properties (currently only boxShadow)
+    var div = document.createElement('div'),
+        divStyle = div.style,
+        styleProps = ['boxShadow'],
+        prefixes = ['moz', 'Moz', 'webkit', 'o'];
+
+    for (var i=0, sl = styleProps.length; i < sl; i++) {
+      var prop = styleProps[i],
+          uProp = prop.charAt(0).toUpperCase() + prop.slice(1);
+
+      if ( typeof divStyle[ prop ] !== 'undefined' ) {
+        $.support[ prop ] = prop;
+      } else {
+        for (var j=0, pl = prefixes.length; j < pl; j++) {
+
+          if (typeof divStyle[ prefixes[j] + uProp ] !== 'undefined') {
+            $.support[ prop ] = prefixes[j] + uProp;
+            break;
+          }
+        }
+      }
+    }
+    div = null;
+  })();
+
+  $.fn.cluetip.defaults = $.cluetip.defaults;
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.colorbox.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.colorbox.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.colorbox.min.js	(revision 25596)
@@ -0,0 +1,6 @@
+/*!
+	jQuery ColorBox v1.4.1 - 2013-02-14
+	(c) 2013 Jack Moore - jacklmoore.com/colorbox
+	license: http://www.opensource.org/licenses/mit-license.php
+*/
+(function(e,t,i){function o(i,o,n){var r=t.createElement(i);return o&&(r.id=Y+o),n&&(r.style.cssText=n),e(r)}function n(e){var t=T.length,i=(A+e)%t;return 0>i?t+i:i}function r(e,t){return Math.round((/%/.test(e)?("x"===t?k.width():k.height())/100:1)*parseInt(e,10))}function h(e){return K.photo||K.photoRegex.test(e)}function l(e){return K.retinaUrl&&i.devicePixelRatio>1?e.replace(K.photoRegex,K.retinaSuffix):e}function s(t){e.contains(w[0],t.target)||w[0]===t.target||(t.stopPropagation(),w.focus())}function a(){var t,i=e.data(N,V);null==i?(K=e.extend({},J),console&&console.log&&console.log("Error: cboxElement missing settings object")):K=e.extend({},i);for(t in K)e.isFunction(K[t])&&"on"!==t.slice(0,2)&&(K[t]=K[t].call(N));K.rel=K.rel||N.rel||e(N).data("rel")||"nofollow",K.href=K.href||e(N).attr("href"),K.title=K.title||N.title,"string"==typeof K.href&&(K.href=e.trim(K.href))}function d(i,o){e(t).trigger(i),at.trigger(i),e.isFunction(o)&&o.call(N)}function c(){var e,t,i,o,n,r=Y+"Slideshow_",h="click."+Y;K.slideshow&&T[1]?(t=function(){clearTimeout(e)},i=function(){(K.loop||T[A+1])&&(e=setTimeout(G.next,K.slideshowSpeed))},o=function(){M.html(K.slideshowStop).unbind(h).one(h,n),at.bind(it,i).bind(tt,t).bind(ot,n),w.removeClass(r+"off").addClass(r+"on")},n=function(){t(),at.unbind(it,i).unbind(tt,t).unbind(ot,n),M.html(K.slideshowStart).unbind(h).one(h,function(){G.next(),o()}),w.removeClass(r+"on").addClass(r+"off")},K.slideshowAuto?o():n()):w.removeClass(r+"off "+r+"on")}function u(i){U||(N=i,a(),T=e(N),A=0,"nofollow"!==K.rel&&(T=e("."+Z).filter(function(){var t,i=e.data(this,V);return i&&(t=e(this).data("rel")||i.rel||this.rel),t===K.rel}),A=T.index(N),-1===A&&(T=T.add(N),A=T.length-1)),m.css({opacity:parseFloat(K.opacity),cursor:K.overlayClose?"pointer":"auto",visibility:"visible"}).show(),j||(j=q=!0,w.css({visibility:"hidden",display:"block"}),E=o(dt,"LoadedContent","width:0; height:0; overflow:hidden").appendTo(v),_=x.height()+C.height()+v.outerHeight(!0)-v.height(),z=y.width()+b.width()+v.outerWidth(!0)-v.width(),D=E.outerHeight(!0),B=E.outerWidth(!0),K.w=r(K.initialWidth,"x"),K.h=r(K.initialHeight,"y"),G.position(),lt&&k.bind("resize."+st+" scroll."+st,function(){m.css({width:k.width(),height:k.height(),top:k.scrollTop(),left:k.scrollLeft()})}).trigger("resize."+st),c(),d(et,K.onOpen),P.add(W).hide(),R.html(K.close).show(),w.focus(),t.addEventListener&&(t.addEventListener("focus",s,!0),at.one(nt,function(){t.removeEventListener("focus",s,!0)})),K.returnFocus&&at.one(nt,function(){e(N).focus()})),G.load(!0))}function f(){!w&&t.body&&(X=!1,k=e(i),w=o(dt).attr({id:V,"class":ht?Y+(lt?"IE6":"IE"):"",role:"dialog",tabindex:"-1"}).hide(),m=o(dt,"Overlay",lt?"position:absolute":"").hide(),L=o(dt,"LoadingOverlay").add(o(dt,"LoadingGraphic")),g=o(dt,"Wrapper"),v=o(dt,"Content").append(W=o(dt,"Title"),H=o(dt,"Current"),F=o("button","Previous"),S=o("button","Next"),M=o("button","Slideshow"),L,R=o("button","Close")),g.append(o(dt).append(o(dt,"TopLeft"),x=o(dt,"TopCenter"),o(dt,"TopRight")),o(dt,!1,"clear:left").append(y=o(dt,"MiddleLeft"),v,b=o(dt,"MiddleRight")),o(dt,!1,"clear:left").append(o(dt,"BottomLeft"),C=o(dt,"BottomCenter"),o(dt,"BottomRight"))).find("div div").css({"float":"left"}),I=o(dt,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),P=S.add(F).add(H).add(M),e(t.body).append(m,w.append(g,I)))}function p(){function i(e){e.which>1||e.shiftKey||e.altKey||e.metaKey||(e.preventDefault(),u(this))}return w?(X||(X=!0,S.click(function(){G.next()}),F.click(function(){G.prev()}),R.click(function(){G.close()}),m.click(function(){K.overlayClose&&G.close()}),e(t).bind("keydown."+Y,function(e){var t=e.keyCode;j&&K.escKey&&27===t&&(e.preventDefault(),G.close()),j&&K.arrowKey&&T[1]&&!e.altKey&&(37===t?(e.preventDefault(),F.click()):39===t&&(e.preventDefault(),S.click()))}),e.isFunction(e.fn.on)?e(t).on("click."+Y,"."+Z,i):e("."+Z).live("click."+Y,i)),!0):!1}var m,w,g,v,x,y,b,C,T,k,E,I,L,W,H,M,S,F,R,P,K,_,z,D,B,N,A,O,j,q,U,$,G,Q,X,J={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,className:!1,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0},V="colorbox",Y="cbox",Z=Y+"Element",et=Y+"_open",tt=Y+"_load",it=Y+"_complete",ot=Y+"_cleanup",nt=Y+"_closed",rt=Y+"_purge",ht=!e.support.leadingWhitespace,lt=ht&&!i.XMLHttpRequest,st=Y+"_IE6",at=e({}),dt="div";e.colorbox||(e(f),G=e.fn[V]=e[V]=function(t,i){var o=this;if(t=t||{},f(),p()){if(e.isFunction(o))o=e("<a/>"),t.open=!0;else if(!o[0])return o;i&&(t.onComplete=i),o.each(function(){e.data(this,V,e.extend({},e.data(this,V)||J,t))}).addClass(Z),(e.isFunction(t.open)&&t.open.call(o)||t.open)&&u(o[0])}return o},G.position=function(e,t){function i(e){x[0].style.width=C[0].style.width=v[0].style.width=parseInt(e.style.width,10)-z+"px",v[0].style.height=y[0].style.height=b[0].style.height=parseInt(e.style.height,10)-_+"px"}var o,n,h,l=0,s=0,a=w.offset();k.unbind("resize."+Y),w.css({top:-9e4,left:-9e4}),n=k.scrollTop(),h=k.scrollLeft(),K.fixed&&!lt?(a.top-=n,a.left-=h,w.css({position:"fixed"})):(l=n,s=h,w.css({position:"absolute"})),s+=K.right!==!1?Math.max(k.width()-K.w-B-z-r(K.right,"x"),0):K.left!==!1?r(K.left,"x"):Math.round(Math.max(k.width()-K.w-B-z,0)/2),l+=K.bottom!==!1?Math.max(k.height()-K.h-D-_-r(K.bottom,"y"),0):K.top!==!1?r(K.top,"y"):Math.round(Math.max(k.height()-K.h-D-_,0)/2),w.css({top:a.top,left:a.left,visibility:"visible"}),e=w.width()===K.w+B&&w.height()===K.h+D?0:e||0,g[0].style.width=g[0].style.height="9999px",o={width:K.w+B+z,height:K.h+D+_,top:l,left:s},0===e&&w.css(o),w.dequeue().animate(o,{duration:e,complete:function(){i(this),q=!1,g[0].style.width=K.w+B+z+"px",g[0].style.height=K.h+D+_+"px",K.reposition&&setTimeout(function(){k.bind("resize."+Y,G.position)},1),t&&t()},step:function(){i(this)}})},G.resize=function(e){j&&(e=e||{},e.width&&(K.w=r(e.width,"x")-B-z),e.innerWidth&&(K.w=r(e.innerWidth,"x")),E.css({width:K.w}),e.height&&(K.h=r(e.height,"y")-D-_),e.innerHeight&&(K.h=r(e.innerHeight,"y")),e.innerHeight||e.height||(E.css({height:"auto"}),K.h=E.height()),E.css({height:K.h}),G.position("none"===K.transition?0:K.speed))},G.prep=function(t){function i(){return K.w=K.w||E.width(),K.w=K.mw&&K.mw<K.w?K.mw:K.w,K.w}function r(){return K.h=K.h||E.height(),K.h=K.mh&&K.mh<K.h?K.mh:K.h,K.h}if(j){var l,s="none"===K.transition?0:K.speed;E.empty().remove(),E=o(dt,"LoadedContent").append(t),E.hide().appendTo(I.show()).css({width:i(),overflow:K.scrolling?"auto":"hidden"}).css({height:r()}).prependTo(v),I.hide(),e(O).css({"float":"none"}),l=function(){function t(){ht&&w[0].style.removeAttribute("filter")}var i,r,l=T.length,a="frameBorder",c="allowTransparency";j&&(r=function(){clearTimeout($),L.hide(),d(it,K.onComplete)},ht&&O&&E.fadeIn(100),W.html(K.title).add(E).show(),l>1?("string"==typeof K.current&&H.html(K.current.replace("{current}",A+1).replace("{total}",l)).show(),S[K.loop||l-1>A?"show":"hide"]().html(K.next),F[K.loop||A?"show":"hide"]().html(K.previous),K.slideshow&&M.show(),K.preloading&&e.each([n(-1),n(1)],function(){var t,i,o=T[this],n=e.data(o,V);n&&n.href?(t=n.href,e.isFunction(t)&&(t=t.call(o))):t=e(o).attr("href"),t&&(h(t)||n.photo)&&(i=new Image,i.src=t)})):P.hide(),K.iframe?(i=o("iframe")[0],a in i&&(i[a]=0),c in i&&(i[c]="true"),K.scrolling||(i.scrolling="no"),e(i).attr({src:K.href,name:(new Date).getTime(),"class":Y+"Iframe",allowFullScreen:!0,webkitAllowFullScreen:!0,mozallowfullscreen:!0}).one("load",r).appendTo(E),at.one(rt,function(){i.src="//about:blank"}),K.fastIframe&&e(i).trigger("load")):r(),"fade"===K.transition?w.fadeTo(s,1,t):t())},"fade"===K.transition?w.fadeTo(s,0,function(){G.position(0,l)}):G.position(s,l)}},G.load=function(t){var n,s,c,u=G.prep;q=!0,O=!1,N=T[A],t||a(),Q&&w.add(m).removeClass(Q),K.className&&w.add(m).addClass(K.className),Q=K.className,d(rt),d(tt,K.onLoad),K.h=K.height?r(K.height,"y")-D-_:K.innerHeight&&r(K.innerHeight,"y"),K.w=K.width?r(K.width,"x")-B-z:K.innerWidth&&r(K.innerWidth,"x"),K.mw=K.w,K.mh=K.h,K.maxWidth&&(K.mw=r(K.maxWidth,"x")-B-z,K.mw=K.w&&K.w<K.mw?K.w:K.mw),K.maxHeight&&(K.mh=r(K.maxHeight,"y")-D-_,K.mh=K.h&&K.h<K.mh?K.h:K.mh),n=K.href,$=setTimeout(function(){L.show()},100),K.inline?(c=o(dt).hide().insertBefore(e(n)[0]),at.one(rt,function(){c.replaceWith(E.children())}),u(e(n))):K.iframe?u(" "):K.html?u(K.html):h(n)?(n=l(n),e(O=new Image).addClass(Y+"Photo").bind("error",function(){K.title=!1,u(o(dt,"Error").html(K.imgError))}).one("load",function(){var e;K.retinaImage&&i.devicePixelRatio>1&&(O.height=O.height/i.devicePixelRatio,O.width=O.width/i.devicePixelRatio),K.scalePhotos&&(s=function(){O.height-=O.height*e,O.width-=O.width*e},K.mw&&O.width>K.mw&&(e=(O.width-K.mw)/O.width,s()),K.mh&&O.height>K.mh&&(e=(O.height-K.mh)/O.height,s())),K.h&&(O.style.marginTop=Math.max(K.mh-O.height,0)/2+"px"),T[1]&&(K.loop||T[A+1])&&(O.style.cursor="pointer",O.onclick=function(){G.next()}),ht&&(O.style.msInterpolationMode="bicubic"),setTimeout(function(){u(O)},1)}),setTimeout(function(){O.src=n},1)):n&&I.load(n,K.data,function(t,i){u("error"===i?o(dt,"Error").html(K.xhrError):e(this).contents())})},G.next=function(){!q&&T[1]&&(K.loop||T[A+1])&&(A=n(1),G.load())},G.prev=function(){!q&&T[1]&&(K.loop||A)&&(A=n(-1),G.load())},G.close=function(){j&&!U&&(U=!0,j=!1,d(ot,K.onCleanup),k.unbind("."+Y+" ."+st),m.fadeTo(200,0),w.stop().fadeTo(300,0,function(){w.add(m).css({opacity:1,cursor:"auto"}).hide(),d(rt),E.empty().remove(),setTimeout(function(){U=!1,d(nt,K.onClosed)},1)}))},G.remove=function(){e([]).add(w).add(m).remove(),w=null,e("."+Z).removeData(V).removeClass(Z),e(t).unbind("click."+Y)},G.element=function(){return e(N)},G.settings=J)})(jQuery,document,window);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.dataTables.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.dataTables.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.dataTables.js	(revision 25596)
@@ -0,0 +1,12099 @@
+/**
+ * @summary     DataTables
+ * @description Paginate, search and sort HTML tables
+ * @version     1.9.4
+ * @file        jquery.dataTables.js
+ * @author      Allan Jardine (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ *
+ * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, available at:
+ *   http://datatables.net/license_gpl2
+ *   http://datatables.net/license_bsd
+ * 
+ * This source file is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ * 
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/
+
+(/** @lends <global> */function( window, document, undefined ) {
+
+(function( factory ) {
+	"use strict";
+
+	// Define as an AMD module if possible
+	if ( typeof define === 'function' && define.amd )
+	{
+		define( ['jquery'], factory );
+	}
+	/* Define using browser globals otherwise
+	 * Prevent multiple instantiations if the script is loaded twice
+	 */
+	else if ( jQuery && !jQuery.fn.dataTable )
+	{
+		factory( jQuery );
+	}
+}
+(/** @lends <global> */function( $ ) {
+	"use strict";
+	/** 
+	 * DataTables is a plug-in for the jQuery Javascript library. It is a 
+	 * highly flexible tool, based upon the foundations of progressive 
+	 * enhancement, which will add advanced interaction controls to any 
+	 * HTML table. For a full list of features please refer to
+	 * <a href="http://datatables.net">DataTables.net</a>.
+	 *
+	 * Note that the <i>DataTable</i> object is not a global variable but is
+	 * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which 
+	 * it may be  accessed.
+	 *
+	 *  @class
+	 *  @param {object} [oInit={}] Configuration object for DataTables. Options
+	 *    are defined by {@link DataTable.defaults}
+	 *  @requires jQuery 1.3+
+	 * 
+	 *  @example
+	 *    // Basic initialisation
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable();
+	 *    } );
+	 *  
+	 *  @example
+	 *    // Initialisation with configuration options - in this case, disable
+	 *    // pagination and sorting.
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable( {
+	 *        "bPaginate": false,
+	 *        "bSort": false 
+	 *      } );
+	 *    } );
+	 */
+	var DataTable = function( oInit )
+	{
+		
+		
+		/**
+		 * Add a column to the list used for the table with default values
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nTh The th element for this column
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddColumn( oSettings, nTh )
+		{
+			var oDefaults = DataTable.defaults.columns;
+			var iCol = oSettings.aoColumns.length;
+			var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+				"sSortingClass": oSettings.oClasses.sSortable,
+				"sSortingClassJUI": oSettings.oClasses.sSortJUI,
+				"nTh": nTh ? nTh : document.createElement('th'),
+				"sTitle":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',
+				"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+				"mData": oDefaults.mData ? oDefaults.oDefaults : iCol
+			} );
+			oSettings.aoColumns.push( oCol );
+			
+			/* Add a column specific filter */
+			if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )
+			{
+				oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );
+			}
+			else
+			{
+				var oPre = oSettings.aoPreSearchCols[ iCol ];
+				
+				/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */
+				if ( oPre.bRegex === undefined )
+				{
+					oPre.bRegex = true;
+				}
+				
+				if ( oPre.bSmart === undefined )
+				{
+					oPre.bSmart = true;
+				}
+				
+				if ( oPre.bCaseInsensitive === undefined )
+				{
+					oPre.bCaseInsensitive = true;
+				}
+			}
+			
+			/* Use the column options function to initialise classes etc */
+			_fnColumnOptions( oSettings, iCol, null );
+		}
+		
+		
+		/**
+		 * Apply options for a column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column index to consider
+		 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnOptions( oSettings, iCol, oOptions )
+		{
+			var oCol = oSettings.aoColumns[ iCol ];
+			
+			/* User specified column options */
+			if ( oOptions !== undefined && oOptions !== null )
+			{
+				/* Backwards compatibility for mDataProp */
+				if ( oOptions.mDataProp && !oOptions.mData )
+				{
+					oOptions.mData = oOptions.mDataProp;
+				}
+		
+				if ( oOptions.sType !== undefined )
+				{
+					oCol.sType = oOptions.sType;
+					oCol._bAutoType = false;
+				}
+				
+				$.extend( oCol, oOptions );
+				_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+		
+				/* iDataSort to be applied (backwards compatibility), but aDataSort will take
+				 * priority if defined
+				 */
+				if ( oOptions.iDataSort !== undefined )
+				{
+					oCol.aDataSort = [ oOptions.iDataSort ];
+				}
+				_fnMap( oCol, oOptions, "aDataSort" );
+			}
+		
+			/* Cache the data get and set functions for speed */
+			var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+			var mData = _fnGetObjectDataFn( oCol.mData );
+		
+			oCol.fnGetData = function (oData, sSpecific) {
+				var innerData = mData( oData, sSpecific );
+		
+				if ( oCol.mRender && (sSpecific && sSpecific !== '') )
+				{
+					return mRender( innerData, sSpecific, oData );
+				}
+				return innerData;
+			};
+			oCol.fnSetData = _fnSetObjectDataFn( oCol.mData );
+			
+			/* Feature sorting overrides column specific when off */
+			if ( !oSettings.oFeatures.bSort )
+			{
+				oCol.bSortable = false;
+			}
+			
+			/* Check that the class assignment is correct for sorting */
+			if ( !oCol.bSortable ||
+				 ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )
+			{
+				oCol.sSortingClass = oSettings.oClasses.sSortableNone;
+				oCol.sSortingClassJUI = "";
+			}
+			else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )
+			{
+				oCol.sSortingClass = oSettings.oClasses.sSortable;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;
+			}
+			else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )
+			{
+				oCol.sSortingClass = oSettings.oClasses.sSortableAsc;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;
+			}
+			else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )
+			{
+				oCol.sSortingClass = oSettings.oClasses.sSortableDesc;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;
+			}
+		}
+		
+		
+		/**
+		 * Adjust the table column widths for new data. Note: you would probably want to 
+		 * do a redraw after calling this function!
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAdjustColumnSizing ( oSettings )
+		{
+			/* Not interested in doing column width calculation if auto-width is disabled */
+			if ( oSettings.oFeatures.bAutoWidth === false )
+			{
+				return false;
+			}
+			
+			_fnCalculateColumnWidths( oSettings );
+			for ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;
+			}
+		}
+		
+		
+		/**
+		 * Covert the index of a visible column to the index in the data array (take account
+		 * of hidden columns)
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iMatch Visible column index to lookup
+		 *  @returns {int} i the data index
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnVisibleToColumnIndex( oSettings, iMatch )
+		{
+			var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+		
+			return typeof aiVis[iMatch] === 'number' ?
+				aiVis[iMatch] :
+				null;
+		}
+		
+		
+		/**
+		 * Covert the index of an index in the data array and convert it to the visible
+		 *   column index (take account of hidden columns)
+		 *  @param {int} iMatch Column index to lookup
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {int} i the data index
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnIndexToVisible( oSettings, iMatch )
+		{
+			var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+			var iPos = $.inArray( iMatch, aiVis );
+		
+			return iPos !== -1 ? iPos : null;
+		}
+		
+		
+		/**
+		 * Get the number of visible columns
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {int} i the number of visible columns
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnVisbleColumns( oSettings )
+		{
+			return _fnGetColumns( oSettings, 'bVisible' ).length;
+		}
+		
+		
+		/**
+		 * Get an array of column indexes that match a given property
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sParam Parameter in aoColumns to look for - typically 
+		 *    bVisible or bSearchable
+		 *  @returns {array} Array of indexes with matched properties
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetColumns( oSettings, sParam )
+		{
+			var a = [];
+		
+			$.map( oSettings.aoColumns, function(val, i) {
+				if ( val[sParam] ) {
+					a.push( i );
+				}
+			} );
+		
+			return a;
+		}
+		
+		
+		/**
+		 * Get the sort type based on an input string
+		 *  @param {string} sData data we wish to know the type of
+		 *  @returns {string} type (defaults to 'string' if no type can be detected)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDetectType( sData )
+		{
+			var aTypes = DataTable.ext.aTypes;
+			var iLen = aTypes.length;
+			
+			for ( var i=0 ; i<iLen ; i++ )
+			{
+				var sType = aTypes[i]( sData );
+				if ( sType !== null )
+				{
+					return sType;
+				}
+			}
+			
+			return 'string';
+		}
+		
+		
+		/**
+		 * Figure out how to reorder a display list
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns array {int} aiReturn index list for reordering
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReOrderIndex ( oSettings, sColumns )
+		{
+			var aColumns = sColumns.split(',');
+			var aiReturn = [];
+			
+			for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				for ( var j=0 ; j<iLen ; j++ )
+				{
+					if ( oSettings.aoColumns[i].sName == aColumns[j] )
+					{
+						aiReturn.push( j );
+						break;
+					}
+				}
+			}
+			
+			return aiReturn;
+		}
+		
+		
+		/**
+		 * Get the column ordering that DataTables expects
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {string} comma separated list of names
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnOrdering ( oSettings )
+		{
+			var sNames = '';
+			for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				sNames += oSettings.aoColumns[i].sName+',';
+			}
+			if ( sNames.length == iLen )
+			{
+				return "";
+			}
+			return sNames.slice(0, -1);
+		}
+		
+		
+		/**
+		 * Take the column definitions and static columns arrays and calculate how
+		 * they relate to column indexes. The callback function will then apply the
+		 * definition found for a column to a suitable configuration object.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
+		 *  @param {array} aoCols The aoColumns array that defines columns individually
+		 *  @param {function} fn Callback function - takes two parameters, the calculated
+		 *    column index and the definition for that column.
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+		{
+			var i, iLen, j, jLen, k, kLen;
+		
+			// Column definitions with aTargets
+			if ( aoColDefs )
+			{
+				/* Loop over the definitions array - loop in reverse so first instance has priority */
+				for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+				{
+					/* Each definition can target multiple columns, as it is an array */
+					var aTargets = aoColDefs[i].aTargets;
+					if ( !$.isArray( aTargets ) )
+					{
+						_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );
+					}
+		
+					for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+					{
+						if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+						{
+							/* Add columns that we don't yet know about */
+							while( oSettings.aoColumns.length <= aTargets[j] )
+							{
+								_fnAddColumn( oSettings );
+							}
+		
+							/* Integer, basic index */
+							fn( aTargets[j], aoColDefs[i] );
+						}
+						else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+						{
+							/* Negative integer, right to left column counting */
+							fn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );
+						}
+						else if ( typeof aTargets[j] === 'string' )
+						{
+							/* Class name matching on TH element */
+							for ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )
+							{
+								if ( aTargets[j] == "_all" ||
+								     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )
+								{
+									fn( k, aoColDefs[i] );
+								}
+							}
+						}
+					}
+				}
+			}
+		
+			// Statically defined columns array
+			if ( aoCols )
+			{
+				for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+				{
+					fn( i, aoCols[i] );
+				}
+			}
+		}
+		
+		/**
+		 * Add a data array to the table, creating DOM node etc. This is the parallel to 
+		 * _fnGatherData, but for adding rows from a Javascript source, rather than a
+		 * DOM source.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aData data array to be added
+		 *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddData ( oSettings, aDataSupplied )
+		{
+			var oCol;
+			
+			/* Take an independent copy of the data source so we can bash it about as we wish */
+			var aDataIn = ($.isArray(aDataSupplied)) ?
+				aDataSupplied.slice() :
+				$.extend( true, {}, aDataSupplied );
+			
+			/* Create the object for storing information about this new row */
+			var iRow = oSettings.aoData.length;
+			var oData = $.extend( true, {}, DataTable.models.oRow );
+			oData._aData = aDataIn;
+			oSettings.aoData.push( oData );
+		
+			/* Create the cells */
+			var nTd, sThisType;
+			for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oCol = oSettings.aoColumns[i];
+		
+				/* Use rendered data for filtering / sorting */
+				if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )
+				{
+					_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );
+				}
+				else
+				{
+					_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
+				}
+				
+				/* See if we should auto-detect the column type */
+				if ( oCol._bAutoType && oCol.sType != 'string' )
+				{
+					/* Attempt to auto detect the type - same as _fnGatherData() */
+					var sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );
+					if ( sVarType !== null && sVarType !== '' )
+					{
+						sThisType = _fnDetectType( sVarType );
+						if ( oCol.sType === null )
+						{
+							oCol.sType = sThisType;
+						}
+						else if ( oCol.sType != sThisType && oCol.sType != "html" )
+						{
+							/* String is always the 'fallback' option */
+							oCol.sType = 'string';
+						}
+					}
+				}
+			}
+			
+			/* Add to the display array */
+			oSettings.aiDisplayMaster.push( iRow );
+		
+			/* Create the DOM information */
+			if ( !oSettings.oFeatures.bDeferRender )
+			{
+				_fnCreateTr( oSettings, iRow );
+			}
+		
+			return iRow;
+		}
+		
+		
+		/**
+		 * Read in the data from the target table from the DOM
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGatherData( oSettings )
+		{
+			var iLoop, i, iLen, j, jLen, jInner,
+			 	nTds, nTrs, nTd, nTr, aLocalData, iThisIndex,
+				iRow, iRows, iColumn, iColumns, sNodeName,
+				oCol, oData;
+			
+			/*
+			 * Process by row first
+			 * Add the data object for the whole table - storing the tr node. Note - no point in getting
+			 * DOM based data if we are going to go and replace it with Ajax source data.
+			 */
+			if ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )
+			{
+				nTr = oSettings.nTBody.firstChild;
+				while ( nTr )
+				{
+					if ( nTr.nodeName.toUpperCase() == "TR" )
+					{
+						iThisIndex = oSettings.aoData.length;
+						nTr._DT_RowIndex = iThisIndex;
+						oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
+							"nTr": nTr
+						} ) );
+		
+						oSettings.aiDisplayMaster.push( iThisIndex );
+						nTd = nTr.firstChild;
+						jInner = 0;
+						while ( nTd )
+						{
+							sNodeName = nTd.nodeName.toUpperCase();
+							if ( sNodeName == "TD" || sNodeName == "TH" )
+							{
+								_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );
+								jInner++;
+							}
+							nTd = nTd.nextSibling;
+						}
+					}
+					nTr = nTr.nextSibling;
+				}
+			}
+			
+			/* Gather in the TD elements of the Table - note that this is basically the same as
+			 * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet
+			 * setup!
+			 */
+			nTrs = _fnGetTrNodes( oSettings );
+			nTds = [];
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				nTd = nTrs[i].firstChild;
+				while ( nTd )
+				{
+					sNodeName = nTd.nodeName.toUpperCase();
+					if ( sNodeName == "TD" || sNodeName == "TH" )
+					{
+						nTds.push( nTd );
+					}
+					nTd = nTd.nextSibling;
+				}
+			}
+			
+			/* Now process by column */
+			for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
+			{
+				oCol = oSettings.aoColumns[iColumn];
+		
+				/* Get the title of the column - unless there is a user set one */
+				if ( oCol.sTitle === null )
+				{
+					oCol.sTitle = oCol.nTh.innerHTML;
+				}
+				
+				var
+					bAutoType = oCol._bAutoType,
+					bRender = typeof oCol.fnRender === 'function',
+					bClass = oCol.sClass !== null,
+					bVisible = oCol.bVisible,
+					nCell, sThisType, sRendered, sValType;
+				
+				/* A single loop to rule them all (and be more efficient) */
+				if ( bAutoType || bRender || bClass || !bVisible )
+				{
+					for ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )
+					{
+						oData = oSettings.aoData[iRow];
+						nCell = nTds[ (iRow*iColumns) + iColumn ];
+						
+						/* Type detection */
+						if ( bAutoType && oCol.sType != 'string' )
+						{
+							sValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );
+							if ( sValType !== '' )
+							{
+								sThisType = _fnDetectType( sValType );
+								if ( oCol.sType === null )
+								{
+									oCol.sType = sThisType;
+								}
+								else if ( oCol.sType != sThisType && 
+								          oCol.sType != "html" )
+								{
+									/* String is always the 'fallback' option */
+									oCol.sType = 'string';
+								}
+							}
+						}
+		
+						if ( oCol.mRender )
+						{
+							// mRender has been defined, so we need to get the value and set it
+							nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+						}
+						else if ( oCol.mData !== iColumn )
+						{
+							// If mData is not the same as the column number, then we need to
+							// get the dev set value. If it is the column, no point in wasting
+							// time setting the value that is already there!
+							nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+						}
+						
+						/* Rendering */
+						if ( bRender )
+						{
+							sRendered = _fnRender( oSettings, iRow, iColumn );
+							nCell.innerHTML = sRendered;
+							if ( oCol.bUseRendered )
+							{
+								/* Use the rendered data for filtering / sorting */
+								_fnSetCellData( oSettings, iRow, iColumn, sRendered );
+							}
+						}
+						
+						/* Classes */
+						if ( bClass )
+						{
+							nCell.className += ' '+oCol.sClass;
+						}
+						
+						/* Column visibility */
+						if ( !bVisible )
+						{
+							oData._anHidden[iColumn] = nCell;
+							nCell.parentNode.removeChild( nCell );
+						}
+						else
+						{
+							oData._anHidden[iColumn] = null;
+						}
+		
+						if ( oCol.fnCreatedCell )
+						{
+							oCol.fnCreatedCell.call( oSettings.oInstance,
+								nCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn
+							);
+						}
+					}
+				}
+			}
+		
+			/* Row created callbacks */
+			if ( oSettings.aoRowCreatedCallback.length !== 0 )
+			{
+				for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+				{
+					oData = oSettings.aoData[i];
+					_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );
+				}
+			}
+		}
+		
+		
+		/**
+		 * Take a TR element and convert it to an index in aoData
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} n the TR element to find
+		 *  @returns {int} index if the node is found, null if not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnNodeToDataIndex( oSettings, n )
+		{
+			return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+		}
+		
+		
+		/**
+		 * Take a TD element and convert it into a column data index (not the visible index)
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow The row number the TD/TH can be found in
+		 *  @param {node} n The TD/TH element to find
+		 *  @returns {int} index if the node is found, -1 if not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnNodeToColumnIndex( oSettings, iRow, n )
+		{
+			var anCells = _fnGetTdNodes( oSettings, iRow );
+		
+			for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				if ( anCells[i] === n )
+				{
+					return i;
+				}
+			}
+			return -1;
+		}
+		
+		
+		/**
+		 * Get an array of data for a given row from the internal data cache
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {string} sSpecific data get type ('type' 'filter' 'sort')
+		 *  @param {array} aiColumns Array of column indexes to get data from
+		 *  @returns {array} Data array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )
+		{
+			var out = [];
+			for ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )
+			{
+				out.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );
+			}
+			return out;
+		}
+		
+		
+		/**
+		 * Get the data for a given cell from the internal cache, taking into account data mapping
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {int} iCol Column index
+		 *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')
+		 *  @returns {*} Cell data
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetCellData( oSettings, iRow, iCol, sSpecific )
+		{
+			var sData;
+			var oCol = oSettings.aoColumns[iCol];
+			var oData = oSettings.aoData[iRow]._aData;
+		
+			if ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )
+			{
+				if ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )
+				{
+					_fnLog( oSettings, 0, "Requested unknown parameter "+
+						(typeof oCol.mData=='function' ? '{mData function}' : "'"+oCol.mData+"'")+
+						" from the data source for row "+iRow );
+					oSettings.iDrawError = oSettings.iDraw;
+				}
+				return oCol.sDefaultContent;
+			}
+		
+			/* When the data source is null, we can use default column data */
+			if ( sData === null && oCol.sDefaultContent !== null )
+			{
+				sData = oCol.sDefaultContent;
+			}
+			else if ( typeof sData === 'function' )
+			{
+				/* If the data source is a function, then we run it and use the return */
+				return sData();
+			}
+		
+			if ( sSpecific == 'display' && sData === null )
+			{
+				return '';
+			}
+			return sData;
+		}
+		
+		
+		/**
+		 * Set the value for a specific cell, into the internal data cache
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {int} iCol Column index
+		 *  @param {*} val Value to set
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSetCellData( oSettings, iRow, iCol, val )
+		{
+			var oCol = oSettings.aoColumns[iCol];
+			var oData = oSettings.aoData[iRow]._aData;
+		
+			oCol.fnSetData( oData, val );
+		}
+		
+		
+		// Private variable that is used to match array syntax in the data property object
+		var __reArray = /\[.*?\]$/;
+		
+		/**
+		 * Return a function that can be used to get data from a source object, taking
+		 * into account the ability to use nested objects as a source
+		 *  @param {string|int|function} mSource The data source for the object
+		 *  @returns {function} Data get function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetObjectDataFn( mSource )
+		{
+			if ( mSource === null )
+			{
+				/* Give an empty string for rendering / sorting etc */
+				return function (data, type) {
+					return null;
+				};
+			}
+			else if ( typeof mSource === 'function' )
+			{
+				return function (data, type, extra) {
+					return mSource( data, type, extra );
+				};
+			}
+			else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
+			{
+				/* If there is a . in the source string then the data source is in a 
+				 * nested object so we loop over the data for each level to get the next
+				 * level down. On each loop we test for undefined, and if found immediately
+				 * return. This allows entire objects to be missing and sDefaultContent to
+				 * be used if defined, rather than throwing an error
+				 */
+				var fetchData = function (data, type, src) {
+					var a = src.split('.');
+					var arrayNotation, out, innerSrc;
+		
+					if ( src !== "" )
+					{
+						for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+						{
+							// Check if we are dealing with an array notation request
+							arrayNotation = a[i].match(__reArray);
+		
+							if ( arrayNotation ) {
+								a[i] = a[i].replace(__reArray, '');
+		
+								// Condition allows simply [] to be passed in
+								if ( a[i] !== "" ) {
+									data = data[ a[i] ];
+								}
+								out = [];
+								
+								// Get the remainder of the nested object to get
+								a.splice( 0, i+1 );
+								innerSrc = a.join('.');
+		
+								// Traverse each entry in the array getting the properties requested
+								for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+									out.push( fetchData( data[j], type, innerSrc ) );
+								}
+		
+								// If a string is given in between the array notation indicators, that
+								// is used to join the strings together, otherwise an array is returned
+								var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+								data = (join==="") ? out : out.join(join);
+		
+								// The inner call to fetchData has already traversed through the remainder
+								// of the source requested, so we exit from the loop
+								break;
+							}
+		
+							if ( data === null || data[ a[i] ] === undefined )
+							{
+								return undefined;
+							}
+							data = data[ a[i] ];
+						}
+					}
+		
+					return data;
+				};
+		
+				return function (data, type) {
+					return fetchData( data, type, mSource );
+				};
+			}
+			else
+			{
+				/* Array or flat object mapping */
+				return function (data, type) {
+					return data[mSource];	
+				};
+			}
+		}
+		
+		
+		/**
+		 * Return a function that can be used to set data from a source object, taking
+		 * into account the ability to use nested objects as a source
+		 *  @param {string|int|function} mSource The data source for the object
+		 *  @returns {function} Data set function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSetObjectDataFn( mSource )
+		{
+			if ( mSource === null )
+			{
+				/* Nothing to do when the data source is null */
+				return function (data, val) {};
+			}
+			else if ( typeof mSource === 'function' )
+			{
+				return function (data, val) {
+					mSource( data, 'set', val );
+				};
+			}
+			else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
+			{
+				/* Like the get, we need to get data from a nested object */
+				var setData = function (data, val, src) {
+					var a = src.split('.'), b;
+					var arrayNotation, o, innerSrc;
+		
+					for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+					{
+						// Check if we are dealing with an array notation request
+						arrayNotation = a[i].match(__reArray);
+		
+						if ( arrayNotation )
+						{
+							a[i] = a[i].replace(__reArray, '');
+							data[ a[i] ] = [];
+							
+							// Get the remainder of the nested object to set so we can recurse
+							b = a.slice();
+							b.splice( 0, i+1 );
+							innerSrc = b.join('.');
+		
+							// Traverse each entry in the array setting the properties requested
+							for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+							{
+								o = {};
+								setData( o, val[j], innerSrc );
+								data[ a[i] ].push( o );
+							}
+		
+							// The inner call to setData has already traversed through the remainder
+							// of the source and has set the data, thus we can exit here
+							return;
+						}
+		
+						// If the nested object doesn't currently exist - since we are
+						// trying to set the value - create it
+						if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+						{
+							data[ a[i] ] = {};
+						}
+						data = data[ a[i] ];
+					}
+		
+					// If array notation is used, we just want to strip it and use the property name
+					// and assign the value. If it isn't used, then we get the result we want anyway
+					data[ a[a.length-1].replace(__reArray, '') ] = val;
+				};
+		
+				return function (data, val) {
+					return setData( data, val, mSource );
+				};
+			}
+			else
+			{
+				/* Array or flat object mapping */
+				return function (data, val) {
+					data[mSource] = val;	
+				};
+			}
+		}
+		
+		
+		/**
+		 * Return an array with the full table data
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns array {array} aData Master data array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetDataMaster ( oSettings )
+		{
+			var aData = [];
+			var iLen = oSettings.aoData.length;
+			for ( var i=0 ; i<iLen; i++ )
+			{
+				aData.push( oSettings.aoData[i]._aData );
+			}
+			return aData;
+		}
+		
+		
+		/**
+		 * Nuke the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnClearTable( oSettings )
+		{
+			oSettings.aoData.splice( 0, oSettings.aoData.length );
+			oSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );
+			oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );
+			_fnCalculateEnd( oSettings );
+		}
+		
+		
+		 /**
+		 * Take an array of integers (index array) and remove a target integer (value - not 
+		 * the key!)
+		 *  @param {array} a Index array to target
+		 *  @param {int} iTarget value to find
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDeleteIndex( a, iTarget )
+		{
+			var iTargetIndex = -1;
+			
+			for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+			{
+				if ( a[i] == iTarget )
+				{
+					iTargetIndex = i;
+				}
+				else if ( a[i] > iTarget )
+				{
+					a[i]--;
+				}
+			}
+			
+			if ( iTargetIndex != -1 )
+			{
+				a.splice( iTargetIndex, 1 );
+			}
+		}
+		
+		
+		 /**
+		 * Call the developer defined fnRender function for a given cell (row/column) with
+		 * the required parameters and return the result.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData index for the row
+		 *  @param {int} iCol aoColumns index for the column
+		 *  @returns {*} Return of the developer's fnRender function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnRender( oSettings, iRow, iCol )
+		{
+			var oCol = oSettings.aoColumns[iCol];
+		
+			return oCol.fnRender( {
+				"iDataRow":    iRow,
+				"iDataColumn": iCol,
+				"oSettings":   oSettings,
+				"aData":       oSettings.aoData[iRow]._aData,
+				"mDataProp":   oCol.mData
+			}, _fnGetCellData(oSettings, iRow, iCol, 'display') );
+		}
+		/**
+		 * Create a new TR element (and it's TD children) for a row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow Row to consider
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCreateTr ( oSettings, iRow )
+		{
+			var oData = oSettings.aoData[iRow];
+			var nTd;
+		
+			if ( oData.nTr === null )
+			{
+				oData.nTr = document.createElement('tr');
+		
+				/* Use a private property on the node to allow reserve mapping from the node
+				 * to the aoData array for fast look up
+				 */
+				oData.nTr._DT_RowIndex = iRow;
+		
+				/* Special parameters can be given by the data source to be used on the row */
+				if ( oData._aData.DT_RowId )
+				{
+					oData.nTr.id = oData._aData.DT_RowId;
+				}
+		
+				if ( oData._aData.DT_RowClass )
+				{
+					oData.nTr.className = oData._aData.DT_RowClass;
+				}
+		
+				/* Process each column */
+				for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					var oCol = oSettings.aoColumns[i];
+					nTd = document.createElement( oCol.sCellType );
+		
+					/* Render if needed - if bUseRendered is true then we already have the rendered
+					 * value in the data source - so can just use that
+					 */
+					nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?
+						_fnRender( oSettings, iRow, i ) :
+						_fnGetCellData( oSettings, iRow, i, 'display' );
+				
+					/* Add user defined class */
+					if ( oCol.sClass !== null )
+					{
+						nTd.className = oCol.sClass;
+					}
+					
+					if ( oCol.bVisible )
+					{
+						oData.nTr.appendChild( nTd );
+						oData._anHidden[i] = null;
+					}
+					else
+					{
+						oData._anHidden[i] = nTd;
+					}
+		
+					if ( oCol.fnCreatedCell )
+					{
+						oCol.fnCreatedCell.call( oSettings.oInstance,
+							nTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i
+						);
+					}
+				}
+		
+				_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );
+			}
+		}
+		
+		
+		/**
+		 * Create the HTML header for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildHead( oSettings )
+		{
+			var i, nTh, iLen, j, jLen;
+			var iThs = $('th, td', oSettings.nTHead).length;
+			var iCorrector = 0;
+			var jqChildren;
+			
+			/* If there is a header in place - then use it - otherwise it's going to get nuked... */
+			if ( iThs !== 0 )
+			{
+				/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
+				for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					nTh = oSettings.aoColumns[i].nTh;
+					nTh.setAttribute('role', 'columnheader');
+					if ( oSettings.aoColumns[i].bSortable )
+					{
+						nTh.setAttribute('tabindex', oSettings.iTabIndex);
+						nTh.setAttribute('aria-controls', oSettings.sTableId);
+					}
+		
+					if ( oSettings.aoColumns[i].sClass !== null )
+					{
+						$(nTh).addClass( oSettings.aoColumns[i].sClass );
+					}
+					
+					/* Set the title of the column if it is user defined (not what was auto detected) */
+					if ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )
+					{
+						nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+					}
+				}
+			}
+			else
+			{
+				/* We don't have a header in the DOM - so we are going to have to create one */
+				var nTr = document.createElement( "tr" );
+				
+				for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					nTh = oSettings.aoColumns[i].nTh;
+					nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+					nTh.setAttribute('tabindex', '0');
+					
+					if ( oSettings.aoColumns[i].sClass !== null )
+					{
+						$(nTh).addClass( oSettings.aoColumns[i].sClass );
+					}
+					
+					nTr.appendChild( nTh );
+				}
+				$(oSettings.nTHead).html( '' )[0].appendChild( nTr );
+				_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );
+			}
+			
+			/* ARIA role for the rows */	
+			$(oSettings.nTHead).children('tr').attr('role', 'row');
+			
+			/* Add the extra markup needed by jQuery UI's themes */
+			if ( oSettings.bJUI )
+			{
+				for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					nTh = oSettings.aoColumns[i].nTh;
+					
+					var nDiv = document.createElement('div');
+					nDiv.className = oSettings.oClasses.sSortJUIWrapper;
+					$(nTh).contents().appendTo(nDiv);
+					
+					var nSpan = document.createElement('span');
+					nSpan.className = oSettings.oClasses.sSortIcon;
+					nDiv.appendChild( nSpan );
+					nTh.appendChild( nDiv );
+				}
+			}
+			
+			if ( oSettings.oFeatures.bSort )
+			{
+				for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+				{
+					if ( oSettings.aoColumns[i].bSortable !== false )
+					{
+						_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+					}
+					else
+					{
+						$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );
+					}
+				}
+			}
+			
+			/* Deal with the footer - add classes if required */
+			if ( oSettings.oClasses.sFooterTH !== "" )
+			{
+				$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );
+			}
+			
+			/* Cache the footer elements */
+			if ( oSettings.nTFoot !== null )
+			{
+				var anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );
+				for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					if ( anCells[i] )
+					{
+						oSettings.aoColumns[i].nTf = anCells[i];
+						if ( oSettings.aoColumns[i].sClass )
+						{
+							$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );
+						}
+					}
+				}
+			}
+		}
+		
+		
+		/**
+		 * Draw the header (or footer) element based on the column visibility states. The
+		 * methodology here is to use the layout array from _fnDetectHeader, modified for
+		 * the instantaneous column visibility, to construct the new layout. The grid is
+		 * traversed over cell at a time in a rows x columns grid fashion, although each 
+		 * cell insert can cover multiple elements in the grid - which is tracks using the
+		 * aApplied array. Cell inserts in the grid will only occur where there isn't
+		 * already a cell in that position.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param array {objects} aoSource Layout array from _fnDetectHeader
+		 *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, 
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+		{
+			var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+			var aoLocal = [];
+			var aApplied = [];
+			var iColumns = oSettings.aoColumns.length;
+			var iRowspan, iColspan;
+		
+			if (  bIncludeHidden === undefined )
+			{
+				bIncludeHidden = false;
+			}
+		
+			/* Make a copy of the master layout array, but without the visible columns in it */
+			for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+			{
+				aoLocal[i] = aoSource[i].slice();
+				aoLocal[i].nTr = aoSource[i].nTr;
+		
+				/* Remove any columns which are currently hidden */
+				for ( j=iColumns-1 ; j>=0 ; j-- )
+				{
+					if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+					{
+						aoLocal[i].splice( j, 1 );
+					}
+				}
+		
+				/* Prep the applied array - it needs an element for each row */
+				aApplied.push( [] );
+			}
+		
+			for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+			{
+				nLocalTr = aoLocal[i].nTr;
+				
+				/* All cells are going to be replaced, so empty out the row */
+				if ( nLocalTr )
+				{
+					while( (n = nLocalTr.firstChild) )
+					{
+						nLocalTr.removeChild( n );
+					}
+				}
+		
+				for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+				{
+					iRowspan = 1;
+					iColspan = 1;
+		
+					/* Check to see if there is already a cell (row/colspan) covering our target
+					 * insert point. If there is, then there is nothing to do.
+					 */
+					if ( aApplied[i][j] === undefined )
+					{
+						nLocalTr.appendChild( aoLocal[i][j].cell );
+						aApplied[i][j] = 1;
+		
+						/* Expand the cell to cover as many rows as needed */
+						while ( aoLocal[i+iRowspan] !== undefined &&
+						        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+						{
+							aApplied[i+iRowspan][j] = 1;
+							iRowspan++;
+						}
+		
+						/* Expand the cell to cover as many columns as needed */
+						while ( aoLocal[i][j+iColspan] !== undefined &&
+						        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+						{
+							/* Must update the applied array over the rows for the columns */
+							for ( k=0 ; k<iRowspan ; k++ )
+							{
+								aApplied[i+k][j+iColspan] = 1;
+							}
+							iColspan++;
+						}
+		
+						/* Do the actual expansion in the DOM */
+						aoLocal[i][j].cell.rowSpan = iRowspan;
+						aoLocal[i][j].cell.colSpan = iColspan;
+					}
+				}
+			}
+		}
+		
+		
+		/**
+		 * Insert the required TR nodes into the table for display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDraw( oSettings )
+		{
+			/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+			var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+			if ( $.inArray( false, aPreDraw ) !== -1 )
+			{
+				_fnProcessingDisplay( oSettings, false );
+				return;
+			}
+			
+			var i, iLen, n;
+			var anRows = [];
+			var iRowCount = 0;
+			var iStripes = oSettings.asStripeClasses.length;
+			var iOpenRows = oSettings.aoOpenRows.length;
+			
+			oSettings.bDrawing = true;
+			
+			/* Check and see if we have an initial draw position from state saving */
+			if ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )
+			{
+				if ( oSettings.oFeatures.bServerSide )
+				{
+					oSettings._iDisplayStart = oSettings.iInitDisplayStart;
+				}
+				else
+				{
+					oSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?
+						0 : oSettings.iInitDisplayStart;
+				}
+				oSettings.iInitDisplayStart = -1;
+				_fnCalculateEnd( oSettings );
+			}
+			
+			/* Server-side processing draw intercept */
+			if ( oSettings.bDeferLoading )
+			{
+				oSettings.bDeferLoading = false;
+				oSettings.iDraw++;
+			}
+			else if ( !oSettings.oFeatures.bServerSide )
+			{
+				oSettings.iDraw++;
+			}
+			else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+			{
+				return;
+			}
+			
+			if ( oSettings.aiDisplay.length !== 0 )
+			{
+				var iStart = oSettings._iDisplayStart;
+				var iEnd = oSettings._iDisplayEnd;
+				
+				if ( oSettings.oFeatures.bServerSide )
+				{
+					iStart = 0;
+					iEnd = oSettings.aoData.length;
+				}
+				
+				for ( var j=iStart ; j<iEnd ; j++ )
+				{
+					var aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];
+					if ( aoData.nTr === null )
+					{
+						_fnCreateTr( oSettings, oSettings.aiDisplay[j] );
+					}
+		
+					var nRow = aoData.nTr;
+					
+					/* Remove the old striping classes and then add the new one */
+					if ( iStripes !== 0 )
+					{
+						var sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];
+						if ( aoData._sRowStripe != sStripe )
+						{
+							$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+							aoData._sRowStripe = sStripe;
+						}
+					}
+					
+					/* Row callback functions - might want to manipulate the row */
+					_fnCallbackFire( oSettings, 'aoRowCallback', null, 
+						[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );
+					
+					anRows.push( nRow );
+					iRowCount++;
+					
+					/* If there is an open row - and it is attached to this parent - attach it on redraw */
+					if ( iOpenRows !== 0 )
+					{
+						for ( var k=0 ; k<iOpenRows ; k++ )
+						{
+							if ( nRow == oSettings.aoOpenRows[k].nParent )
+							{
+								anRows.push( oSettings.aoOpenRows[k].nTr );
+								break;
+							}
+						}
+					}
+				}
+			}
+			else
+			{
+				/* Table is empty - create a row with an empty message in it */
+				anRows[ 0 ] = document.createElement( 'tr' );
+				
+				if ( oSettings.asStripeClasses[0] )
+				{
+					anRows[ 0 ].className = oSettings.asStripeClasses[0];
+				}
+		
+				var oLang = oSettings.oLanguage;
+				var sZero = oLang.sZeroRecords;
+				if ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
+				{
+					sZero = oLang.sLoadingRecords;
+				}
+				else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+				{
+					sZero = oLang.sEmptyTable;
+				}
+		
+				var nTd = document.createElement( 'td' );
+				nTd.setAttribute( 'valign', "top" );
+				nTd.colSpan = _fnVisbleColumns( oSettings );
+				nTd.className = oSettings.oClasses.sRowEmpty;
+				nTd.innerHTML = _fnInfoMacros( oSettings, sZero );
+				
+				anRows[ iRowCount ].appendChild( nTd );
+			}
+			
+			/* Header and footer callbacks */
+			_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], 
+				_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
+			
+			_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], 
+				_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
+			
+			/* 
+			 * Need to remove any old row from the display - note we can't just empty the tbody using
+			 * $().html('') since this will unbind the jQuery event handlers (even although the node 
+			 * still exists!) - equally we can't use innerHTML, since IE throws an exception.
+			 */
+			var
+				nAddFrag = document.createDocumentFragment(),
+				nRemoveFrag = document.createDocumentFragment(),
+				nBodyPar, nTrs;
+			
+			if ( oSettings.nTBody )
+			{
+				nBodyPar = oSettings.nTBody.parentNode;
+				nRemoveFrag.appendChild( oSettings.nTBody );
+				
+				/* When doing infinite scrolling, only remove child rows when sorting, filtering or start
+				 * up. When not infinite scroll, always do it.
+				 */
+				if ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||
+				 	oSettings.bSorted || oSettings.bFiltered )
+				{
+					while( (n = oSettings.nTBody.firstChild) )
+					{
+						oSettings.nTBody.removeChild( n );
+					}
+				}
+				
+				/* Put the draw table into the dom */
+				for ( i=0, iLen=anRows.length ; i<iLen ; i++ )
+				{
+					nAddFrag.appendChild( anRows[i] );
+				}
+				
+				oSettings.nTBody.appendChild( nAddFrag );
+				if ( nBodyPar !== null )
+				{
+					nBodyPar.appendChild( oSettings.nTBody );
+				}
+			}
+			
+			/* Call all required callback functions for the end of a draw */
+			_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+			
+			/* Draw is complete, sorting and filtering must be as well */
+			oSettings.bSorted = false;
+			oSettings.bFiltered = false;
+			oSettings.bDrawing = false;
+			
+			if ( oSettings.oFeatures.bServerSide )
+			{
+				_fnProcessingDisplay( oSettings, false );
+				if ( !oSettings._bInitComplete )
+				{
+					_fnInitComplete( oSettings );
+				}
+			}
+		}
+		
+		
+		/**
+		 * Redraw the table - taking account of the various features which are enabled
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReDraw( oSettings )
+		{
+			if ( oSettings.oFeatures.bSort )
+			{
+				/* Sorting will refilter and draw for us */
+				_fnSort( oSettings, oSettings.oPreviousSearch );
+			}
+			else if ( oSettings.oFeatures.bFilter )
+			{
+				/* Filtering will redraw for us */
+				_fnFilterComplete( oSettings, oSettings.oPreviousSearch );
+			}
+			else
+			{
+				_fnCalculateEnd( oSettings );
+				_fnDraw( oSettings );
+			}
+		}
+		
+		
+		/**
+		 * Add the options to the page HTML for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddOptionsHtml ( oSettings )
+		{
+			/*
+			 * Create a temporary, empty, div which we can later on replace with what we have generated
+			 * we do it this way to rendering the 'options' html offline - speed :-)
+			 */
+			var nHolding = $('<div></div>')[0];
+			oSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );
+			
+			/* 
+			 * All DataTables are wrapped in a div
+			 */
+			oSettings.nTableWrapper = $('<div id="'+oSettings.sTableId+'_wrapper" class="'+oSettings.oClasses.sWrapper+'" role="grid"></div>')[0];
+			oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+		
+			/* Track where we want to insert the option */
+			var nInsertNode = oSettings.nTableWrapper;
+			
+			/* Loop over the user set positioning and place the elements as needed */
+			var aDom = oSettings.sDom.split('');
+			var nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;
+			for ( var i=0 ; i<aDom.length ; i++ )
+			{
+				iPushFeature = 0;
+				cOption = aDom[i];
+				
+				if ( cOption == '<' )
+				{
+					/* New container div */
+					nNewNode = $('<div></div>')[0];
+					
+					/* Check to see if we should append an id and/or a class name to the container */
+					cNext = aDom[i+1];
+					if ( cNext == "'" || cNext == '"' )
+					{
+						sAttr = "";
+						j = 2;
+						while ( aDom[i+j] != cNext )
+						{
+							sAttr += aDom[i+j];
+							j++;
+						}
+						
+						/* Replace jQuery UI constants */
+						if ( sAttr == "H" )
+						{
+							sAttr = oSettings.oClasses.sJUIHeader;
+						}
+						else if ( sAttr == "F" )
+						{
+							sAttr = oSettings.oClasses.sJUIFooter;
+						}
+						
+						/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+						 * breaks the string into parts and applies them as needed
+						 */
+						if ( sAttr.indexOf('.') != -1 )
+						{
+							var aSplit = sAttr.split('.');
+							nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+							nNewNode.className = aSplit[1];
+						}
+						else if ( sAttr.charAt(0) == "#" )
+						{
+							nNewNode.id = sAttr.substr(1, sAttr.length-1);
+						}
+						else
+						{
+							nNewNode.className = sAttr;
+						}
+						
+						i += j; /* Move along the position array */
+					}
+					
+					nInsertNode.appendChild( nNewNode );
+					nInsertNode = nNewNode;
+				}
+				else if ( cOption == '>' )
+				{
+					/* End container div */
+					nInsertNode = nInsertNode.parentNode;
+				}
+				else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )
+				{
+					/* Length */
+					nTmp = _fnFeatureHtmlLength( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( cOption == 'f' && oSettings.oFeatures.bFilter )
+				{
+					/* Filter */
+					nTmp = _fnFeatureHtmlFilter( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( cOption == 'r' && oSettings.oFeatures.bProcessing )
+				{
+					/* pRocessing */
+					nTmp = _fnFeatureHtmlProcessing( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( cOption == 't' )
+				{
+					/* Table */
+					nTmp = _fnFeatureHtmlTable( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( cOption ==  'i' && oSettings.oFeatures.bInfo )
+				{
+					/* Info */
+					nTmp = _fnFeatureHtmlInfo( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( cOption == 'p' && oSettings.oFeatures.bPaginate )
+				{
+					/* Pagination */
+					nTmp = _fnFeatureHtmlPaginate( oSettings );
+					iPushFeature = 1;
+				}
+				else if ( DataTable.ext.aoFeatures.length !== 0 )
+				{
+					/* Plug-in features */
+					var aoFeatures = DataTable.ext.aoFeatures;
+					for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+					{
+						if ( cOption == aoFeatures[k].cFeature )
+						{
+							nTmp = aoFeatures[k].fnInit( oSettings );
+							if ( nTmp )
+							{
+								iPushFeature = 1;
+							}
+							break;
+						}
+					}
+				}
+				
+				/* Add to the 2D features array */
+				if ( iPushFeature == 1 && nTmp !== null )
+				{
+					if ( typeof oSettings.aanFeatures[cOption] !== 'object' )
+					{
+						oSettings.aanFeatures[cOption] = [];
+					}
+					oSettings.aanFeatures[cOption].push( nTmp );
+					nInsertNode.appendChild( nTmp );
+				}
+			}
+			
+			/* Built our DOM structure - replace the holding div with what we want */
+			nHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );
+		}
+		
+		
+		/**
+		 * Use the DOM source to create up an array of header cells. The idea here is to
+		 * create a layout grid (array) of rows x columns, which contains a reference
+		 * to the cell that that point in the grid (regardless of col/rowspan), such that
+		 * any column / row could be removed and the new grid constructed
+		 *  @param array {object} aLayout Array to store the calculated layout in
+		 *  @param {node} nThead The header/footer element for the table
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDetectHeader ( aLayout, nThead )
+		{
+			var nTrs = $(nThead).children('tr');
+			var nTr, nCell;
+			var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+			var bUnique;
+			var fnShiftCol = function ( a, i, j ) {
+				var k = a[i];
+		                while ( k[j] ) {
+					j++;
+				}
+				return j;
+			};
+		
+			aLayout.splice( 0, aLayout.length );
+			
+			/* We know how many rows there are in the layout - so prep it */
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				aLayout.push( [] );
+			}
+			
+			/* Calculate a layout array */
+			for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+			{
+				nTr = nTrs[i];
+				iColumn = 0;
+				
+				/* For every cell in the row... */
+				nCell = nTr.firstChild;
+				while ( nCell ) {
+					if ( nCell.nodeName.toUpperCase() == "TD" ||
+					     nCell.nodeName.toUpperCase() == "TH" )
+					{
+						/* Get the col and rowspan attributes from the DOM and sanitise them */
+						iColspan = nCell.getAttribute('colspan') * 1;
+						iRowspan = nCell.getAttribute('rowspan') * 1;
+						iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+						iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+		
+						/* There might be colspan cells already in this row, so shift our target 
+						 * accordingly
+						 */
+						iColShifted = fnShiftCol( aLayout, i, iColumn );
+						
+						/* Cache calculation for unique columns */
+						bUnique = iColspan === 1 ? true : false;
+						
+						/* If there is col / rowspan, copy the information into the layout grid */
+						for ( l=0 ; l<iColspan ; l++ )
+						{
+							for ( k=0 ; k<iRowspan ; k++ )
+							{
+								aLayout[i+k][iColShifted+l] = {
+									"cell": nCell,
+									"unique": bUnique
+								};
+								aLayout[i+k].nTr = nTr;
+							}
+						}
+					}
+					nCell = nCell.nextSibling;
+				}
+			}
+		}
+		
+		
+		/**
+		 * Get an array of unique th elements, one for each column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nHeader automatically detect the layout from this node - optional
+		 *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+		 *  @returns array {node} aReturn list of unique th's
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+		{
+			var aReturn = [];
+			if ( !aLayout )
+			{
+				aLayout = oSettings.aoHeader;
+				if ( nHeader )
+				{
+					aLayout = [];
+					_fnDetectHeader( aLayout, nHeader );
+				}
+			}
+		
+			for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+			{
+				for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+				{
+					if ( aLayout[i][j].unique && 
+						 (!aReturn[j] || !oSettings.bSortCellsTop) )
+					{
+						aReturn[j] = aLayout[i][j].cell;
+					}
+				}
+			}
+			
+			return aReturn;
+		}
+		
+		
+		
+		/**
+		 * Update the table using an Ajax call
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {boolean} Block the table drawing or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxUpdate( oSettings )
+		{
+			if ( oSettings.bAjaxDataGet )
+			{
+				oSettings.iDraw++;
+				_fnProcessingDisplay( oSettings, true );
+				var iColumns = oSettings.aoColumns.length;
+				var aoData = _fnAjaxParameters( oSettings );
+				_fnServerParams( oSettings, aoData );
+				
+				oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,
+					function(json) {
+						_fnAjaxUpdateDraw( oSettings, json );
+					}, oSettings );
+				return false;
+			}
+			else
+			{
+				return true;
+			}
+		}
+		
+		
+		/**
+		 * Build up the parameters in an object needed for a server-side processing request
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {bool} block the table drawing or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxParameters( oSettings )
+		{
+			var iColumns = oSettings.aoColumns.length;
+			var aoData = [], mDataProp, aaSort, aDataSort;
+			var i, j;
+			
+			aoData.push( { "name": "sEcho",          "value": oSettings.iDraw } );
+			aoData.push( { "name": "iColumns",       "value": iColumns } );
+			aoData.push( { "name": "sColumns",       "value": _fnColumnOrdering(oSettings) } );
+			aoData.push( { "name": "iDisplayStart",  "value": oSettings._iDisplayStart } );
+			aoData.push( { "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ?
+				oSettings._iDisplayLength : -1 } );
+				
+			for ( i=0 ; i<iColumns ; i++ )
+			{
+			  mDataProp = oSettings.aoColumns[i].mData;
+				aoData.push( { "name": "mDataProp_"+i, "value": typeof(mDataProp)==="function" ? 'function' : mDataProp } );
+			}
+			
+			/* Filtering */
+			if ( oSettings.oFeatures.bFilter !== false )
+			{
+				aoData.push( { "name": "sSearch", "value": oSettings.oPreviousSearch.sSearch } );
+				aoData.push( { "name": "bRegex",  "value": oSettings.oPreviousSearch.bRegex } );
+				for ( i=0 ; i<iColumns ; i++ )
+				{
+					aoData.push( { "name": "sSearch_"+i,     "value": oSettings.aoPreSearchCols[i].sSearch } );
+					aoData.push( { "name": "bRegex_"+i,      "value": oSettings.aoPreSearchCols[i].bRegex } );
+					aoData.push( { "name": "bSearchable_"+i, "value": oSettings.aoColumns[i].bSearchable } );
+				}
+			}
+			
+			/* Sorting */
+			if ( oSettings.oFeatures.bSort !== false )
+			{
+				var iCounter = 0;
+		
+				aaSort = ( oSettings.aaSortingFixed !== null ) ?
+					oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
+					oSettings.aaSorting.slice();
+				
+				for ( i=0 ; i<aaSort.length ; i++ )
+				{
+					aDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;
+					
+					for ( j=0 ; j<aDataSort.length ; j++ )
+					{
+						aoData.push( { "name": "iSortCol_"+iCounter,  "value": aDataSort[j] } );
+						aoData.push( { "name": "sSortDir_"+iCounter,  "value": aaSort[i][1] } );
+						iCounter++;
+					}
+				}
+				aoData.push( { "name": "iSortingCols",   "value": iCounter } );
+				
+				for ( i=0 ; i<iColumns ; i++ )
+				{
+					aoData.push( { "name": "bSortable_"+i,  "value": oSettings.aoColumns[i].bSortable } );
+				}
+			}
+			
+			return aoData;
+		}
+		
+		
+		/**
+		 * Add Ajax parameters from plug-ins
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param array {objects} aoData name/value pairs to send to the server
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnServerParams( oSettings, aoData )
+		{
+			_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );
+		}
+		
+		
+		/**
+		 * Data the data from the server (nuking the old) and redraw the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} json json data return from the server.
+		 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
+		 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+		 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+		 *  @param {array} json.aaData The data to display on this page
+		 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxUpdateDraw ( oSettings, json )
+		{
+			if ( json.sEcho !== undefined )
+			{
+				/* Protect against old returns over-writing a new one. Possible when you get
+				 * very fast interaction, and later queries are completed much faster
+				 */
+				if ( json.sEcho*1 < oSettings.iDraw )
+				{
+					return;
+				}
+				else
+				{
+					oSettings.iDraw = json.sEcho * 1;
+				}
+			}
+			
+			if ( !oSettings.oScroll.bInfinite ||
+				   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )
+			{
+				_fnClearTable( oSettings );
+			}
+			oSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);
+			oSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);
+			
+			/* Determine if reordering is required */
+			var sOrdering = _fnColumnOrdering(oSettings);
+			var bReOrder = (json.sColumns !== undefined && sOrdering !== "" && json.sColumns != sOrdering );
+			var aiIndex;
+			if ( bReOrder )
+			{
+				aiIndex = _fnReOrderIndex( oSettings, json.sColumns );
+			}
+			
+			var aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );
+			for ( var i=0, iLen=aData.length ; i<iLen ; i++ )
+			{
+				if ( bReOrder )
+				{
+					/* If we need to re-order, then create a new array with the correct order and add it */
+					var aDataSorted = [];
+					for ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )
+					{
+						aDataSorted.push( aData[i][ aiIndex[j] ] );
+					}
+					_fnAddData( oSettings, aDataSorted );
+				}
+				else
+				{
+					/* No re-order required, sever got it "right" - just straight add */
+					_fnAddData( oSettings, aData[i] );
+				}
+			}
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+			oSettings.bAjaxDataGet = false;
+			_fnDraw( oSettings );
+			oSettings.bAjaxDataGet = true;
+			_fnProcessingDisplay( oSettings, false );
+		}
+		
+		
+		
+		/**
+		 * Generate the node required for filtering text
+		 *  @returns {node} Filter control element
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlFilter ( oSettings )
+		{
+			var oPreviousSearch = oSettings.oPreviousSearch;
+			
+			var sSearchStr = oSettings.oLanguage.sSearch;
+			sSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?
+			  sSearchStr.replace('_INPUT_', '<input type="text" />') :
+			  sSearchStr==="" ? '<input type="text" />' : sSearchStr+' <input type="text" />';
+			
+			var nFilter = document.createElement( 'div' );
+			nFilter.className = oSettings.oClasses.sFilter;
+			nFilter.innerHTML = '<label>'+sSearchStr+'</label>';
+			if ( !oSettings.aanFeatures.f )
+			{
+				nFilter.id = oSettings.sTableId+'_filter';
+			}
+			
+			var jqFilter = $('input[type="text"]', nFilter);
+		
+			// Store a reference to the input element, so other input elements could be
+			// added to the filter wrapper if needed (submit button for example)
+			nFilter._DT_Input = jqFilter[0];
+		
+			jqFilter.val( oPreviousSearch.sSearch.replace('"','&quot;') );
+			jqFilter.bind( 'keyup.DT', function(e) {
+				/* Update all other filter input elements for the new display */
+				var n = oSettings.aanFeatures.f;
+				var val = this.value==="" ? "" : this.value; // mental IE8 fix :-(
+		
+				for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+				{
+					if ( n[i] != $(this).parents('div.dataTables_filter')[0] )
+					{
+						$(n[i]._DT_Input).val( val );
+					}
+				}
+				
+				/* Now do the filter */
+				if ( val != oPreviousSearch.sSearch )
+				{
+					_fnFilterComplete( oSettings, { 
+						"sSearch": val, 
+						"bRegex": oPreviousSearch.bRegex,
+						"bSmart": oPreviousSearch.bSmart ,
+						"bCaseInsensitive": oPreviousSearch.bCaseInsensitive 
+					} );
+				}
+			} );
+		
+			jqFilter
+				.attr('aria-controls', oSettings.sTableId)
+				.bind( 'keypress.DT', function(e) {
+					/* Prevent form submission */
+					if ( e.keyCode == 13 )
+					{
+						return false;
+					}
+				}
+			);
+			
+			return nFilter;
+		}
+		
+		
+		/**
+		 * Filter the table using both the global filter and column based filtering
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} oSearch search information
+		 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterComplete ( oSettings, oInput, iForce )
+		{
+			var oPrevSearch = oSettings.oPreviousSearch;
+			var aoPrevSearch = oSettings.aoPreSearchCols;
+			var fnSaveFilter = function ( oFilter ) {
+				/* Save the filtering values */
+				oPrevSearch.sSearch = oFilter.sSearch;
+				oPrevSearch.bRegex = oFilter.bRegex;
+				oPrevSearch.bSmart = oFilter.bSmart;
+				oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+			};
+		
+			/* In server-side processing all filtering is done by the server, so no point hanging around here */
+			if ( !oSettings.oFeatures.bServerSide )
+			{
+				/* Global filter */
+				_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );
+				fnSaveFilter( oInput );
+		
+				/* Now do the individual column filter */
+				for ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
+				{
+					_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, 
+						aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+				}
+				
+				/* Custom filtering */
+				_fnFilterCustom( oSettings );
+			}
+			else
+			{
+				fnSaveFilter( oInput );
+			}
+			
+			/* Tell the draw function we have been filtering */
+			oSettings.bFiltered = true;
+			$(oSettings.oInstance).trigger('filter', oSettings);
+			
+			/* Redraw the table */
+			oSettings._iDisplayStart = 0;
+			_fnCalculateEnd( oSettings );
+			_fnDraw( oSettings );
+			
+			/* Rebuild search array 'offline' */
+			_fnBuildSearchArray( oSettings, 0 );
+		}
+		
+		
+		/**
+		 * Apply custom filtering functions
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterCustom( oSettings )
+		{
+			var afnFilters = DataTable.ext.afnFiltering;
+			var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
+		
+			for ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )
+			{
+				var iCorrector = 0;
+				for ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )
+				{
+					var iDisIndex = oSettings.aiDisplay[j-iCorrector];
+					var bTest = afnFilters[i](
+						oSettings,
+						_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),
+						iDisIndex
+					);
+					
+					/* Check if we should use this row based on the filtering function */
+					if ( !bTest )
+					{
+						oSettings.aiDisplay.splice( j-iCorrector, 1 );
+						iCorrector++;
+					}
+				}
+			}
+		}
+		
+		
+		/**
+		 * Filter the table on a per-column basis
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sInput string to filter on
+		 *  @param {int} iColumn column to filter
+		 *  @param {bool} bRegex treat search string as a regular expression or not
+		 *  @param {bool} bSmart use smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )
+		{
+			if ( sInput === "" )
+			{
+				return;
+			}
+			
+			var iIndexCorrector = 0;
+			var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
+			
+			for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )
+			{
+				var sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),
+					oSettings.aoColumns[iColumn].sType );
+				if ( ! rpSearch.test( sData ) )
+				{
+					oSettings.aiDisplay.splice( i, 1 );
+					iIndexCorrector++;
+				}
+			}
+		}
+		
+		
+		/**
+		 * Filter the data table based on user input and draw the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sInput string to filter on
+		 *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)
+		 *  @param {bool} bRegex treat as a regular expression or not
+		 *  @param {bool} bSmart perform smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )
+		{
+			var i;
+			var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
+			var oPrevSearch = oSettings.oPreviousSearch;
+			
+			/* Check if we are forcing or not - optional parameter */
+			if ( !iForce )
+			{
+				iForce = 0;
+			}
+			
+			/* Need to take account of custom filtering functions - always filter */
+			if ( DataTable.ext.afnFiltering.length !== 0 )
+			{
+				iForce = 1;
+			}
+			
+			/*
+			 * If the input is blank - we want the full data set
+			 */
+			if ( sInput.length <= 0 )
+			{
+				oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			}
+			else
+			{
+				/*
+				 * We are starting a new search or the new search string is smaller 
+				 * then the old one (i.e. delete). Search from the master array
+			 	 */
+				if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
+					   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||
+					   sInput.indexOf(oPrevSearch.sSearch) !== 0 )
+				{
+					/* Nuke the old display array - we are going to rebuild it */
+					oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
+					
+					/* Force a rebuild of the search array */
+					_fnBuildSearchArray( oSettings, 1 );
+					
+					/* Search through all records to populate the search array
+					 * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 
+					 * mapping
+					 */
+					for ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )
+					{
+						if ( rpSearch.test(oSettings.asDataSearch[i]) )
+						{
+							oSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );
+						}
+					}
+			  }
+			  else
+				{
+			  	/* Using old search array - refine it - do it this way for speed
+			  	 * Don't have to search the whole master array again
+					 */
+			  	var iIndexCorrector = 0;
+			  	
+			  	/* Search the current results */
+			  	for ( i=0 ; i<oSettings.asDataSearch.length ; i++ )
+					{
+			  		if ( ! rpSearch.test(oSettings.asDataSearch[i]) )
+						{
+			  			oSettings.aiDisplay.splice( i-iIndexCorrector, 1 );
+			  			iIndexCorrector++;
+			  		}
+			  	}
+			  }
+			}
+		}
+		
+		
+		/**
+		 * Create an array which can be quickly search through
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iMaster use the master data array - optional
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildSearchArray ( oSettings, iMaster )
+		{
+			if ( !oSettings.oFeatures.bServerSide )
+			{
+				/* Clear out the old data */
+				oSettings.asDataSearch = [];
+		
+				var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
+				var aiIndex = (iMaster===1) ?
+				 	oSettings.aiDisplayMaster :
+				 	oSettings.aiDisplay;
+				
+				for ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )
+				{
+					oSettings.asDataSearch[i] = _fnBuildSearchRow(
+						oSettings,
+						_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )
+					);
+				}
+			}
+		}
+		
+		
+		/**
+		 * Create a searchable string from a single data row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aData Row data array to use for the data to search
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildSearchRow( oSettings, aData )
+		{
+			var sSearch = aData.join('  ');
+			
+			/* If it looks like there is an HTML entity in the string, attempt to decode it */
+			if ( sSearch.indexOf('&') !== -1 )
+			{
+				sSearch = $('<div>').html(sSearch).text();
+			}
+			
+			// Strip newline characters
+			return sSearch.replace( /[\n\r]/g, " " );
+		}
+		
+		/**
+		 * Build a regular expression object suitable for searching a table
+		 *  @param {string} sSearch string to search for
+		 *  @param {bool} bRegex treat as a regular expression or not
+		 *  @param {bool} bSmart perform smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
+		 *  @returns {RegExp} constructed object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )
+		{
+			var asSearch, sRegExpString;
+			
+			if ( bSmart )
+			{
+				/* Generate the regular expression to use. Something along the lines of:
+				 * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$
+				 */
+				asSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );
+				sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';
+				return new RegExp( sRegExpString, bCaseInsensitive ? "i" : "" );
+			}
+			else
+			{
+				sSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );
+				return new RegExp( sSearch, bCaseInsensitive ? "i" : "" );
+			}
+		}
+		
+		
+		/**
+		 * Convert raw data into something that the user can search on
+		 *  @param {string} sData data to be modified
+		 *  @param {string} sType data type
+		 *  @returns {string} search string
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDataToSearch ( sData, sType )
+		{
+			if ( typeof DataTable.ext.ofnSearch[sType] === "function" )
+			{
+				return DataTable.ext.ofnSearch[sType]( sData );
+			}
+			else if ( sData === null )
+			{
+				return '';
+			}
+			else if ( sType == "html" )
+			{
+				return sData.replace(/[\r\n]/g," ").replace( /<.*?>/g, "" );
+			}
+			else if ( typeof sData === "string" )
+			{
+				return sData.replace(/[\r\n]/g," ");
+			}
+			return sData;
+		}
+		
+		
+		/**
+		 * scape a string such that it can be used in a regular expression
+		 *  @param {string} sVal string to escape
+		 *  @returns {string} escaped string
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnEscapeRegex ( sVal )
+		{
+			var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ];
+			var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
+			return sVal.replace(reReplace, '\\$1');
+		}
+		
+		
+		/**
+		 * Generate the node required for the info display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Information element
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlInfo ( oSettings )
+		{
+			var nInfo = document.createElement( 'div' );
+			nInfo.className = oSettings.oClasses.sInfo;
+			
+			/* Actions that are to be taken once only for this feature */
+			if ( !oSettings.aanFeatures.i )
+			{
+				/* Add draw callback */
+				oSettings.aoDrawCallback.push( {
+					"fn": _fnUpdateInfo,
+					"sName": "information"
+				} );
+				
+				/* Add id */
+				nInfo.id = oSettings.sTableId+'_info';
+			}
+			oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );
+			
+			return nInfo;
+		}
+		
+		
+		/**
+		 * Update the information elements in the display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnUpdateInfo ( oSettings )
+		{
+			/* Show information about the table */
+			if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )
+			{
+				return;
+			}
+			
+			var
+				oLang = oSettings.oLanguage,
+				iStart = oSettings._iDisplayStart+1,
+				iEnd = oSettings.fnDisplayEnd(),
+				iMax = oSettings.fnRecordsTotal(),
+				iTotal = oSettings.fnRecordsDisplay(),
+				sOut;
+			
+			if ( iTotal === 0 )
+			{
+				/* Empty record set */
+				sOut = oLang.sInfoEmpty;
+			}
+			else {
+				/* Normal record set */
+				sOut = oLang.sInfo;
+			}
+		
+			if ( iTotal != iMax )
+			{
+				/* Record set after filtering */
+				sOut += ' ' + oLang.sInfoFiltered;
+			}
+		
+			// Convert the macros
+			sOut += oLang.sInfoPostFix;
+			sOut = _fnInfoMacros( oSettings, sOut );
+			
+			if ( oLang.fnInfoCallback !== null )
+			{
+				sOut = oLang.fnInfoCallback.call( oSettings.oInstance, 
+					oSettings, iStart, iEnd, iMax, iTotal, sOut );
+			}
+			
+			var n = oSettings.aanFeatures.i;
+			for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+			{
+				$(n[i]).html( sOut );
+			}
+		}
+		
+		
+		function _fnInfoMacros ( oSettings, str )
+		{
+			var
+				iStart = oSettings._iDisplayStart+1,
+				sStart = oSettings.fnFormatNumber( iStart ),
+				iEnd = oSettings.fnDisplayEnd(),
+				sEnd = oSettings.fnFormatNumber( iEnd ),
+				iTotal = oSettings.fnRecordsDisplay(),
+				sTotal = oSettings.fnFormatNumber( iTotal ),
+				iMax = oSettings.fnRecordsTotal(),
+				sMax = oSettings.fnFormatNumber( iMax );
+		
+			// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+			// internally
+			if ( oSettings.oScroll.bInfinite )
+			{
+				sStart = oSettings.fnFormatNumber( 1 );
+			}
+		
+			return str.
+				replace(/_START_/g, sStart).
+				replace(/_END_/g,   sEnd).
+				replace(/_TOTAL_/g, sTotal).
+				replace(/_MAX_/g,   sMax);
+		}
+		
+		
+		
+		/**
+		 * Draw the table for the first time, adding all required features
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnInitialise ( oSettings )
+		{
+			var i, iLen, iAjaxStart=oSettings.iInitDisplayStart;
+			
+			/* Ensure that the table data is fully initialised */
+			if ( oSettings.bInitialised === false )
+			{
+				setTimeout( function(){ _fnInitialise( oSettings ); }, 200 );
+				return;
+			}
+			
+			/* Show the display HTML options */
+			_fnAddOptionsHtml( oSettings );
+			
+			/* Build and draw the header / footer for the table */
+			_fnBuildHead( oSettings );
+			_fnDrawHead( oSettings, oSettings.aoHeader );
+			if ( oSettings.nTFoot )
+			{
+				_fnDrawHead( oSettings, oSettings.aoFooter );
+			}
+		
+			/* Okay to show that something is going on now */
+			_fnProcessingDisplay( oSettings, true );
+			
+			/* Calculate sizes for columns */
+			if ( oSettings.oFeatures.bAutoWidth )
+			{
+				_fnCalculateColumnWidths( oSettings );
+			}
+			
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				if ( oSettings.aoColumns[i].sWidth !== null )
+				{
+					oSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );
+				}
+			}
+			
+			/* If there is default sorting required - let's do it. The sort function will do the
+			 * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows
+			 * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)
+			 */
+			if ( oSettings.oFeatures.bSort )
+			{
+				_fnSort( oSettings );
+			}
+			else if ( oSettings.oFeatures.bFilter )
+			{
+				_fnFilterComplete( oSettings, oSettings.oPreviousSearch );
+			}
+			else
+			{
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+				_fnCalculateEnd( oSettings );
+				_fnDraw( oSettings );
+			}
+			
+			/* if there is an ajax source load the data */
+			if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
+			{
+				var aoData = [];
+				_fnServerParams( oSettings, aoData );
+				oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {
+					var aData = (oSettings.sAjaxDataProp !== "") ?
+					 	_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;
+		
+					/* Got the data - add it to the table */
+					for ( i=0 ; i<aData.length ; i++ )
+					{
+						_fnAddData( oSettings, aData[i] );
+					}
+					
+					/* Reset the init display for cookie saving. We've already done a filter, and
+					 * therefore cleared it before. So we need to make it appear 'fresh'
+					 */
+					oSettings.iInitDisplayStart = iAjaxStart;
+					
+					if ( oSettings.oFeatures.bSort )
+					{
+						_fnSort( oSettings );
+					}
+					else
+					{
+						oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+						_fnCalculateEnd( oSettings );
+						_fnDraw( oSettings );
+					}
+					
+					_fnProcessingDisplay( oSettings, false );
+					_fnInitComplete( oSettings, json );
+				}, oSettings );
+				return;
+			}
+			
+			/* Server-side processing initialisation complete is done at the end of _fnDraw */
+			if ( !oSettings.oFeatures.bServerSide )
+			{
+				_fnProcessingDisplay( oSettings, false );
+				_fnInitComplete( oSettings );
+			}
+		}
+		
+		
+		/**
+		 * Draw the table for the first time, adding all required features
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} [json] JSON from the server that completed the table, if using Ajax source
+		 *    with client-side processing (optional)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnInitComplete ( oSettings, json )
+		{
+			oSettings._bInitComplete = true;
+			_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );
+		}
+		
+		
+		/**
+		 * Language compatibility - when certain options are given, and others aren't, we
+		 * need to duplicate the values over, in order to provide backwards compatibility
+		 * with older language files.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLanguageCompat( oLanguage )
+		{
+			var oDefaults = DataTable.defaults.oLanguage;
+		
+			/* Backwards compatibility - if there is no sEmptyTable given, then use the same as
+			 * sZeroRecords - assuming that is given.
+			 */
+			if ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&
+				oDefaults.sEmptyTable === "No data available in table" )
+			{
+				_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );
+			}
+		
+			/* Likewise with loading records */
+			if ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&
+				oDefaults.sLoadingRecords === "Loading..." )
+			{
+				_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );
+			}
+		}
+		
+		
+		
+		/**
+		 * Generate the node required for user display length changing
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Display length feature node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlLength ( oSettings )
+		{
+			if ( oSettings.oScroll.bInfinite )
+			{
+				return null;
+			}
+			
+			/* This can be overruled by not using the _MENU_ var/macro in the language variable */
+			var sName = 'name="'+oSettings.sTableId+'_length"';
+			var sStdMenu = '<select size="1" '+sName+'>';
+			var i, iLen;
+			var aLengthMenu = oSettings.aLengthMenu;
+			
+			if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && 
+					typeof aLengthMenu[1] === 'object' )
+			{
+				for ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )
+				{
+					sStdMenu += '<option value="'+aLengthMenu[0][i]+'">'+aLengthMenu[1][i]+'</option>';
+				}
+			}
+			else
+			{
+				for ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )
+				{
+					sStdMenu += '<option value="'+aLengthMenu[i]+'">'+aLengthMenu[i]+'</option>';
+				}
+			}
+			sStdMenu += '</select>';
+			
+			var nLength = document.createElement( 'div' );
+			if ( !oSettings.aanFeatures.l )
+			{
+				nLength.id = oSettings.sTableId+'_length';
+			}
+			nLength.className = oSettings.oClasses.sLength;
+			nLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';
+			
+			/*
+			 * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
+			 * and Stefan Skopnik for fixing the fix!
+			 */
+			$('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true);
+			
+			$('select', nLength).bind( 'change.DT', function(e) {
+				var iVal = $(this).val();
+				
+				/* Update all other length options for the new display */
+				var n = oSettings.aanFeatures.l;
+				for ( i=0, iLen=n.length ; i<iLen ; i++ )
+				{
+					if ( n[i] != this.parentNode )
+					{
+						$('select', n[i]).val( iVal );
+					}
+				}
+				
+				/* Redraw the table */
+				oSettings._iDisplayLength = parseInt(iVal, 10);
+				_fnCalculateEnd( oSettings );
+				
+				/* If we have space to show extra rows (backing up from the end point - then do so */
+				if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )
+				{
+					oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;
+					if ( oSettings._iDisplayStart < 0 )
+					{
+						oSettings._iDisplayStart = 0;
+					}
+				}
+				
+				if ( oSettings._iDisplayLength == -1 )
+				{
+					oSettings._iDisplayStart = 0;
+				}
+				
+				_fnDraw( oSettings );
+			} );
+		
+		
+			$('select', nLength).attr('aria-controls', oSettings.sTableId);
+			
+			return nLength;
+		}
+		
+		
+		/**
+		 * Recalculate the end point based on the start point
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCalculateEnd( oSettings )
+		{
+			if ( oSettings.oFeatures.bPaginate === false )
+			{
+				oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+			}
+			else
+			{
+				/* Set the end point of the display - based on how many elements there are
+				 * still to display
+				 */
+				if ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
+					   oSettings._iDisplayLength == -1 )
+				{
+					oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+				}
+				else
+				{
+					oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
+				}
+			}
+		}
+		
+		
+		
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Note that most of the paging logic is done in 
+		 * DataTable.ext.oPagination
+		 */
+		
+		/**
+		 * Generate the node required for default pagination
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Pagination feature node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlPaginate ( oSettings )
+		{
+			if ( oSettings.oScroll.bInfinite )
+			{
+				return null;
+			}
+			
+			var nPaginate = document.createElement( 'div' );
+			nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;
+			
+			DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, 
+				function( oSettings ) {
+					_fnCalculateEnd( oSettings );
+					_fnDraw( oSettings );
+				}
+			);
+			
+			/* Add a draw callback for the pagination on first instance, to update the paging display */
+			if ( !oSettings.aanFeatures.p )
+			{
+				oSettings.aoDrawCallback.push( {
+					"fn": function( oSettings ) {
+						DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {
+							_fnCalculateEnd( oSettings );
+							_fnDraw( oSettings );
+						} );
+					},
+					"sName": "pagination"
+				} );
+			}
+			return nPaginate;
+		}
+		
+		
+		/**
+		 * Alter the display settings to change the page
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer)
+		 *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnPageChange ( oSettings, mAction )
+		{
+			var iOldStart = oSettings._iDisplayStart;
+			
+			if ( typeof mAction === "number" )
+			{
+				oSettings._iDisplayStart = mAction * oSettings._iDisplayLength;
+				if ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )
+				{
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else if ( mAction == "first" )
+			{
+				oSettings._iDisplayStart = 0;
+			}
+			else if ( mAction == "previous" )
+			{
+				oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?
+					oSettings._iDisplayStart - oSettings._iDisplayLength :
+					0;
+				
+				/* Correct for under-run */
+				if ( oSettings._iDisplayStart < 0 )
+				{
+				  oSettings._iDisplayStart = 0;
+				}
+			}
+			else if ( mAction == "next" )
+			{
+				if ( oSettings._iDisplayLength >= 0 )
+				{
+					/* Make sure we are not over running the display array */
+					if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
+					{
+						oSettings._iDisplayStart += oSettings._iDisplayLength;
+					}
+				}
+				else
+				{
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else if ( mAction == "last" )
+			{
+				if ( oSettings._iDisplayLength >= 0 )
+				{
+					var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;
+					oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;
+				}
+				else
+				{
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else
+			{
+				_fnLog( oSettings, 0, "Unknown paging action: "+mAction );
+			}
+			$(oSettings.oInstance).trigger('page', oSettings);
+			
+			return iOldStart != oSettings._iDisplayStart;
+		}
+		
+		
+		
+		/**
+		 * Generate the node required for the processing node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Processing element
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlProcessing ( oSettings )
+		{
+			var nProcessing = document.createElement( 'div' );
+			
+			if ( !oSettings.aanFeatures.r )
+			{
+				nProcessing.id = oSettings.sTableId+'_processing';
+			}
+			nProcessing.innerHTML = oSettings.oLanguage.sProcessing;
+			nProcessing.className = oSettings.oClasses.sProcessing;
+			oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );
+			
+			return nProcessing;
+		}
+		
+		
+		/**
+		 * Display or hide the processing indicator
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {bool} bShow Show the processing indicator (true) or not (false)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnProcessingDisplay ( oSettings, bShow )
+		{
+			if ( oSettings.oFeatures.bProcessing )
+			{
+				var an = oSettings.aanFeatures.r;
+				for ( var i=0, iLen=an.length ; i<iLen ; i++ )
+				{
+					an[i].style.visibility = bShow ? "visible" : "hidden";
+				}
+			}
+		
+			$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);
+		}
+		
+		/**
+		 * Add any control elements for the table - specifically scrolling
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Node to add to the DOM
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlTable ( oSettings )
+		{
+			/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */
+			if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
+			{
+				return oSettings.nTable;
+			}
+			
+			/*
+			 * The HTML structure that we want to generate in this function is:
+			 *  div - nScroller
+			 *    div - nScrollHead
+			 *      div - nScrollHeadInner
+			 *        table - nScrollHeadTable
+			 *          thead - nThead
+			 *    div - nScrollBody
+			 *      table - oSettings.nTable
+			 *        thead - nTheadSize
+			 *        tbody - nTbody
+			 *    div - nScrollFoot
+			 *      div - nScrollFootInner
+			 *        table - nScrollFootTable
+			 *          tfoot - nTfoot
+			 */
+			var
+			 	nScroller = document.createElement('div'),
+			 	nScrollHead = document.createElement('div'),
+			 	nScrollHeadInner = document.createElement('div'),
+			 	nScrollBody = document.createElement('div'),
+			 	nScrollFoot = document.createElement('div'),
+			 	nScrollFootInner = document.createElement('div'),
+			 	nScrollHeadTable = oSettings.nTable.cloneNode(false),
+			 	nScrollFootTable = oSettings.nTable.cloneNode(false),
+				nThead = oSettings.nTable.getElementsByTagName('thead')[0],
+			 	nTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : 
+					oSettings.nTable.getElementsByTagName('tfoot')[0],
+				oClasses = oSettings.oClasses;
+			
+			nScrollHead.appendChild( nScrollHeadInner );
+			nScrollFoot.appendChild( nScrollFootInner );
+			nScrollBody.appendChild( oSettings.nTable );
+			nScroller.appendChild( nScrollHead );
+			nScroller.appendChild( nScrollBody );
+			nScrollHeadInner.appendChild( nScrollHeadTable );
+			nScrollHeadTable.appendChild( nThead );
+			if ( nTfoot !== null )
+			{
+				nScroller.appendChild( nScrollFoot );
+				nScrollFootInner.appendChild( nScrollFootTable );
+				nScrollFootTable.appendChild( nTfoot );
+			}
+			
+			nScroller.className = oClasses.sScrollWrapper;
+			nScrollHead.className = oClasses.sScrollHead;
+			nScrollHeadInner.className = oClasses.sScrollHeadInner;
+			nScrollBody.className = oClasses.sScrollBody;
+			nScrollFoot.className = oClasses.sScrollFoot;
+			nScrollFootInner.className = oClasses.sScrollFootInner;
+			
+			if ( oSettings.oScroll.bAutoCss )
+			{
+				nScrollHead.style.overflow = "hidden";
+				nScrollHead.style.position = "relative";
+				nScrollFoot.style.overflow = "hidden";
+				nScrollBody.style.overflow = "auto";
+			}
+			
+			nScrollHead.style.border = "0";
+			nScrollHead.style.width = "100%";
+			nScrollFoot.style.border = "0";
+			nScrollHeadInner.style.width = oSettings.oScroll.sXInner !== "" ?
+				oSettings.oScroll.sXInner : "100%"; /* will be overwritten */
+			
+			/* Modify attributes to respect the clones */
+			nScrollHeadTable.removeAttribute('id');
+			nScrollHeadTable.style.marginLeft = "0";
+			oSettings.nTable.style.marginLeft = "0";
+			if ( nTfoot !== null )
+			{
+				nScrollFootTable.removeAttribute('id');
+				nScrollFootTable.style.marginLeft = "0";
+			}
+			
+			/* Move caption elements from the body to the header, footer or leave where it is
+			 * depending on the configuration. Note that the DTD says there can be only one caption */
+			var nCaption = $(oSettings.nTable).children('caption');
+			if ( nCaption.length > 0 )
+			{
+				nCaption = nCaption[0];
+				if ( nCaption._captionSide === "top" )
+				{
+					nScrollHeadTable.appendChild( nCaption );
+				}
+				else if ( nCaption._captionSide === "bottom" && nTfoot )
+				{
+					nScrollFootTable.appendChild( nCaption );
+				}
+			}
+			
+			/*
+			 * Sizing
+			 */
+			/* When x-scrolling add the width and a scroller to move the header with the body */
+			if ( oSettings.oScroll.sX !== "" )
+			{
+				nScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );
+				nScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );
+				
+				if ( nTfoot !== null )
+				{
+					nScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );	
+				}
+				
+				/* When the body is scrolled, then we also want to scroll the headers */
+				$(nScrollBody).scroll( function (e) {
+					nScrollHead.scrollLeft = this.scrollLeft;
+					
+					if ( nTfoot !== null )
+					{
+						nScrollFoot.scrollLeft = this.scrollLeft;
+					}
+				} );
+			}
+			
+			/* When yscrolling, add the height */
+			if ( oSettings.oScroll.sY !== "" )
+			{
+				nScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );
+			}
+			
+			/* Redraw - align columns across the tables */
+			oSettings.aoDrawCallback.push( {
+				"fn": _fnScrollDraw,
+				"sName": "scrolling"
+			} );
+			
+			/* Infinite scrolling event handlers */
+			if ( oSettings.oScroll.bInfinite )
+			{
+				$(nScrollBody).scroll( function() {
+					/* Use a blocker to stop scrolling from loading more data while other data is still loading */
+					if ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )
+					{
+						/* Check if we should load the next data set */
+						if ( $(this).scrollTop() + $(this).height() > 
+							$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )
+						{
+							/* Only do the redraw if we have to - we might be at the end of the data */
+							if ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )
+							{
+								_fnPageChange( oSettings, 'next' );
+								_fnCalculateEnd( oSettings );
+								_fnDraw( oSettings );
+							}
+						}
+					}
+				} );
+			}
+			
+			oSettings.nScrollHead = nScrollHead;
+			oSettings.nScrollFoot = nScrollFoot;
+			
+			return nScroller;
+		}
+		
+		
+		/**
+		 * Update the various tables for resizing. It's a bit of a pig this function, but
+		 * basically the idea to:
+		 *   1. Re-create the table inside the scrolling div
+		 *   2. Take live measurements from the DOM
+		 *   3. Apply the measurements
+		 *   4. Clean up
+		 *  @param {object} o dataTables settings object
+		 *  @returns {node} Node to add to the DOM
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollDraw ( o )
+		{
+			var
+				nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],
+				nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
+				nScrollBody = o.nTable.parentNode,
+				i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,
+				nTheadSize, nTfootSize,
+				iWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,
+				nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,
+				nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,
+				ie67 = o.oBrowser.bScrollOversize,
+				zeroOut = function(nSizer) {
+					oStyle = nSizer.style;
+					oStyle.paddingTop = "0";
+					oStyle.paddingBottom = "0";
+					oStyle.borderTopWidth = "0";
+					oStyle.borderBottomWidth = "0";
+					oStyle.height = 0;
+				};
+			
+			/*
+			 * 1. Re-create the table inside the scrolling div
+			 */
+			
+			/* Remove the old minimised thead and tfoot elements in the inner table */
+			$(o.nTable).children('thead, tfoot').remove();
+		
+			/* Clone the current header and footer elements and then place it into the inner table */
+			nTheadSize = $(o.nTHead).clone()[0];
+			o.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );
+			anHeadToSize = o.nTHead.getElementsByTagName('tr');
+			anHeadSizers = nTheadSize.getElementsByTagName('tr');
+			
+			if ( o.nTFoot !== null )
+			{
+				nTfootSize = $(o.nTFoot).clone()[0];
+				o.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );
+				anFootToSize = o.nTFoot.getElementsByTagName('tr');
+				anFootSizers = nTfootSize.getElementsByTagName('tr');
+			}
+			
+			/*
+			 * 2. Take live measurements from the DOM - do not alter the DOM itself!
+			 */
+			
+			/* Remove old sizing and apply the calculated column widths
+			 * Get the unique column headers in the newly created (cloned) header. We want to apply the
+			 * calculated sizes to this header
+			 */
+			if ( o.oScroll.sX === "" )
+			{
+				nScrollBody.style.width = '100%';
+				nScrollHeadInner.parentNode.style.width = '100%';
+			}
+			
+			var nThs = _fnGetUniqueThs( o, nTheadSize );
+			for ( i=0, iLen=nThs.length ; i<iLen ; i++ )
+			{
+				iVis = _fnVisibleToColumnIndex( o, i );
+				nThs[i].style.width = o.aoColumns[iVis].sWidth;
+			}
+			
+			if ( o.nTFoot !== null )
+			{
+				_fnApplyToChildren( function(n) {
+					n.style.width = "";
+				}, anFootSizers );
+			}
+		
+			// If scroll collapse is enabled, when we put the headers back into the body for sizing, we
+			// will end up forcing the scrollbar to appear, making our measurements wrong for when we
+			// then hide it (end of this function), so add the header height to the body scroller.
+			if ( o.oScroll.bCollapse && o.oScroll.sY !== "" )
+			{
+				nScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+"px";
+			}
+			
+			/* Size the table as a whole */
+			iSanityWidth = $(o.nTable).outerWidth();
+			if ( o.oScroll.sX === "" )
+			{
+				/* No x scrolling */
+				o.nTable.style.width = "100%";
+				
+				/* I know this is rubbish - but IE7 will make the width of the table when 100% include
+				 * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this
+				 * into account.
+				 */
+				if ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || 
+					$(nScrollBody).css('overflow-y') == "scroll")  )
+				{
+					o.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);
+				}
+			}
+			else
+			{
+				if ( o.oScroll.sXInner !== "" )
+				{
+					/* x scroll inner has been given - use it */
+					o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);
+				}
+				else if ( iSanityWidth == $(nScrollBody).width() &&
+				   $(nScrollBody).height() < $(o.nTable).height() )
+				{
+					/* There is y-scrolling - try to take account of the y scroll bar */
+					o.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );
+					if ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )
+					{
+						/* Not possible to take account of it */
+						o.nTable.style.width = _fnStringToCss( iSanityWidth );
+					}
+				}
+				else
+				{
+					/* All else fails */
+					o.nTable.style.width = _fnStringToCss( iSanityWidth );
+				}
+			}
+			
+			/* Recalculate the sanity width - now that we've applied the required width, before it was
+			 * a temporary variable. This is required because the column width calculation is done
+			 * before this table DOM is created.
+			 */
+			iSanityWidth = $(o.nTable).outerWidth();
+			
+			/* We want the hidden header to have zero height, so remove padding and borders. Then
+			 * set the width based on the real headers
+			 */
+			
+			// Apply all styles in one pass. Invalidates layout only once because we don't read any 
+			// DOM properties.
+			_fnApplyToChildren( zeroOut, anHeadSizers );
+			 
+			// Read all widths in next pass. Forces layout only once because we do not change 
+			// any DOM properties.
+			_fnApplyToChildren( function(nSizer) {
+				aApplied.push( _fnStringToCss( $(nSizer).width() ) );
+			}, anHeadSizers );
+			 
+			// Apply all widths in final pass. Invalidates layout only once because we do not
+			// read any DOM properties.
+			_fnApplyToChildren( function(nToSize, i) {
+				nToSize.style.width = aApplied[i];
+			}, anHeadToSize );
+		
+			$(anHeadSizers).height(0);
+			
+			/* Same again with the footer if we have one */
+			if ( o.nTFoot !== null )
+			{
+				_fnApplyToChildren( zeroOut, anFootSizers );
+				 
+				_fnApplyToChildren( function(nSizer) {
+					aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );
+				}, anFootSizers );
+				 
+				_fnApplyToChildren( function(nToSize, i) {
+					nToSize.style.width = aAppliedFooter[i];
+				}, anFootToSize );
+		
+				$(anFootSizers).height(0);
+			}
+			
+			/*
+			 * 3. Apply the measurements
+			 */
+			
+			/* "Hide" the header and footer that we used for the sizing. We want to also fix their width
+			 * to what they currently are
+			 */
+			_fnApplyToChildren( function(nSizer, i) {
+				nSizer.innerHTML = "";
+				nSizer.style.width = aApplied[i];
+			}, anHeadSizers );
+			
+			if ( o.nTFoot !== null )
+			{
+				_fnApplyToChildren( function(nSizer, i) {
+					nSizer.innerHTML = "";
+					nSizer.style.width = aAppliedFooter[i];
+				}, anFootSizers );
+			}
+			
+			/* Sanity check that the table is of a sensible width. If not then we are going to get
+			 * misalignment - try to prevent this by not allowing the table to shrink below its min width
+			 */
+			if ( $(o.nTable).outerWidth() < iSanityWidth )
+			{
+				/* The min width depends upon if we have a vertical scrollbar visible or not */
+				var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || 
+					$(nScrollBody).css('overflow-y') == "scroll")) ?
+						iSanityWidth+o.oScroll.iBarWidth : iSanityWidth;
+				
+				/* IE6/7 are a law unto themselves... */
+				if ( ie67 && (nScrollBody.scrollHeight > 
+					nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll")  )
+				{
+					o.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );
+				}
+				
+				/* Apply the calculated minimum width to the table wrappers */
+				nScrollBody.style.width = _fnStringToCss( iCorrection );
+				o.nScrollHead.style.width = _fnStringToCss( iCorrection );
+				
+				if ( o.nTFoot !== null )
+				{
+					o.nScrollFoot.style.width = _fnStringToCss( iCorrection );
+				}
+				
+				/* And give the user a warning that we've stopped the table getting too small */
+				if ( o.oScroll.sX === "" )
+				{
+					_fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
+						" misalignment. The table has been drawn at its minimum possible width." );
+				}
+				else if ( o.oScroll.sXInner !== "" )
+				{
+					_fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
+						" misalignment. Increase the sScrollXInner value or remove it to allow automatic"+
+						" calculation" );
+				}
+			}
+			else
+			{
+				nScrollBody.style.width = _fnStringToCss( '100%' );
+				o.nScrollHead.style.width = _fnStringToCss( '100%' );
+				
+				if ( o.nTFoot !== null )
+				{
+					o.nScrollFoot.style.width = _fnStringToCss( '100%' );
+				}
+			}
+			
+			
+			/*
+			 * 4. Clean up
+			 */
+			if ( o.oScroll.sY === "" )
+			{
+				/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+				 * the scrollbar height from the visible display, rather than adding it on. We need to
+				 * set the height in order to sort this. Don't want to do it in any other browsers.
+				 */
+				if ( ie67 )
+				{
+					nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );
+				}
+			}
+			
+			if ( o.oScroll.sY !== "" && o.oScroll.bCollapse )
+			{
+				nScrollBody.style.height = _fnStringToCss( o.oScroll.sY );
+				
+				var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?
+				 	o.oScroll.iBarWidth : 0;
+				if ( o.nTable.offsetHeight < nScrollBody.offsetHeight )
+				{
+					nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );
+				}
+			}
+			
+			/* Finally set the width's of the header and footer tables */
+			var iOuterWidth = $(o.nTable).outerWidth();
+			nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );
+			nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );
+		
+			// Figure out if there are scrollbar present - if so then we need a the header and footer to
+			// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+			var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll";
+			nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
+			
+			if ( o.nTFoot !== null )
+			{
+				nScrollFootTable.style.width = _fnStringToCss( iOuterWidth );
+				nScrollFootInner.style.width = _fnStringToCss( iOuterWidth );
+				nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
+			}
+		
+			/* Adjust the position of the header in case we loose the y-scrollbar */
+			$(nScrollBody).scroll();
+			
+			/* If sorting or filtering has occurred, jump the scrolling back to the top */
+			if ( o.bSorted || o.bFiltered )
+			{
+				nScrollBody.scrollTop = 0;
+			}
+		}
+		
+		
+		/**
+		 * Apply a given function to the display child nodes of an element array (typically
+		 * TD children of TR rows
+		 *  @param {function} fn Method to apply to the objects
+		 *  @param array {nodes} an1 List of elements to look through for display children
+		 *  @param array {nodes} an2 Another list (identical structure to the first) - optional
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnApplyToChildren( fn, an1, an2 )
+		{
+			var index=0, i=0, iLen=an1.length;
+			var nNode1, nNode2;
+		
+			while ( i < iLen )
+			{
+				nNode1 = an1[i].firstChild;
+				nNode2 = an2 ? an2[i].firstChild : null;
+				while ( nNode1 )
+				{
+					if ( nNode1.nodeType === 1 )
+					{
+						if ( an2 )
+						{
+							fn( nNode1, nNode2, index );
+						}
+						else
+						{
+							fn( nNode1, index );
+						}
+						index++;
+					}
+					nNode1 = nNode1.nextSibling;
+					nNode2 = an2 ? nNode2.nextSibling : null;
+				}
+				i++;
+			}
+		}
+		
+		/**
+		 * Convert a CSS unit width to pixels (e.g. 2em)
+		 *  @param {string} sWidth width to be converted
+		 *  @param {node} nParent parent to get the with for (required for relative widths) - optional
+		 *  @returns {int} iWidth width in pixels
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnConvertToWidth ( sWidth, nParent )
+		{
+			if ( !sWidth || sWidth === null || sWidth === '' )
+			{
+				return 0;
+			}
+			
+			if ( !nParent )
+			{
+				nParent = document.body;
+			}
+			
+			var iWidth;
+			var nTmp = document.createElement( "div" );
+			nTmp.style.width = _fnStringToCss( sWidth );
+			
+			nParent.appendChild( nTmp );
+			iWidth = nTmp.offsetWidth;
+			nParent.removeChild( nTmp );
+			
+			return ( iWidth );
+		}
+		
+		
+		/**
+		 * Calculate the width of columns for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCalculateColumnWidths ( oSettings )
+		{
+			var iTableWidth = oSettings.nTable.offsetWidth;
+			var iUserInputs = 0;
+			var iTmpWidth;
+			var iVisibleColumns = 0;
+			var iColums = oSettings.aoColumns.length;
+			var i, iIndex, iCorrector, iWidth;
+			var oHeaders = $('th', oSettings.nTHead);
+			var widthAttr = oSettings.nTable.getAttribute('width');
+			var nWrapper = oSettings.nTable.parentNode;
+			
+			/* Convert any user input sizes into pixel sizes */
+			for ( i=0 ; i<iColums ; i++ )
+			{
+				if ( oSettings.aoColumns[i].bVisible )
+				{
+					iVisibleColumns++;
+					
+					if ( oSettings.aoColumns[i].sWidth !== null )
+					{
+						iTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, 
+							nWrapper );
+						if ( iTmpWidth !== null )
+						{
+							oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
+						}
+							
+						iUserInputs++;
+					}
+				}
+			}
+			
+			/* If the number of columns in the DOM equals the number that we have to process in 
+			 * DataTables, then we can use the offsets that are created by the web-browser. No custom 
+			 * sizes can be set in order for this to happen, nor scrolling used
+			 */
+			if ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&
+				oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
+			{
+				for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+				{
+					iTmpWidth = $(oHeaders[i]).width();
+					if ( iTmpWidth !== null )
+					{
+						oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
+					}
+				}
+			}
+			else
+			{
+				/* Otherwise we are going to have to do some calculations to get the width of each column.
+				 * Construct a 1 row table with the widest node in the data, and any user defined widths,
+				 * then insert it into the DOM and allow the browser to do all the hard work of
+				 * calculating table widths.
+				 */
+				var
+					nCalcTmp = oSettings.nTable.cloneNode( false ),
+					nTheadClone = oSettings.nTHead.cloneNode(true),
+					nBody = document.createElement( 'tbody' ),
+					nTr = document.createElement( 'tr' ),
+					nDivSizing;
+				
+				nCalcTmp.removeAttribute( "id" );
+				nCalcTmp.appendChild( nTheadClone );
+				if ( oSettings.nTFoot !== null )
+				{
+					nCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );
+					_fnApplyToChildren( function(n) {
+						n.style.width = "";
+					}, nCalcTmp.getElementsByTagName('tr') );
+				}
+				
+				nCalcTmp.appendChild( nBody );
+				nBody.appendChild( nTr );
+				
+				/* Remove any sizing that was previously applied by the styles */
+				var jqColSizing = $('thead th', nCalcTmp);
+				if ( jqColSizing.length === 0 )
+				{
+					jqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);
+				}
+		
+				/* Apply custom sizing to the cloned header */
+				var nThs = _fnGetUniqueThs( oSettings, nTheadClone );
+				iCorrector = 0;
+				for ( i=0 ; i<iColums ; i++ )
+				{
+					var oColumn = oSettings.aoColumns[i];
+					if ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== "" )
+					{
+						nThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );
+					}
+					else if ( oColumn.bVisible )
+					{
+						nThs[i-iCorrector].style.width = "";
+					}
+					else
+					{
+						iCorrector++;
+					}
+				}
+		
+				/* Find the biggest td for each column and put it into the table */
+				for ( i=0 ; i<iColums ; i++ )
+				{
+					if ( oSettings.aoColumns[i].bVisible )
+					{
+						var nTd = _fnGetWidestNode( oSettings, i );
+						if ( nTd !== null )
+						{
+							nTd = nTd.cloneNode(true);
+							if ( oSettings.aoColumns[i].sContentPadding !== "" )
+							{
+								nTd.innerHTML += oSettings.aoColumns[i].sContentPadding;
+							}
+							nTr.appendChild( nTd );
+						}
+					}
+				}
+				
+				/* Build the table and 'display' it */
+				nWrapper.appendChild( nCalcTmp );
+				
+				/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,
+				 * when not scrolling leave the table width as it is. This results in slightly different,
+				 * but I think correct behaviour
+				 */
+				if ( oSettings.oScroll.sX !== "" && oSettings.oScroll.sXInner !== "" )
+				{
+					nCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);
+				}
+				else if ( oSettings.oScroll.sX !== "" )
+				{
+					nCalcTmp.style.width = "";
+					if ( $(nCalcTmp).width() < nWrapper.offsetWidth )
+					{
+						nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
+					}
+				}
+				else if ( oSettings.oScroll.sY !== "" )
+				{
+					nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
+				}
+				else if ( widthAttr )
+				{
+					nCalcTmp.style.width = _fnStringToCss( widthAttr );
+				}
+				nCalcTmp.style.visibility = "hidden";
+				
+				/* Scrolling considerations */
+				_fnScrollingWidthAdjust( oSettings, nCalcTmp );
+				
+				/* Read the width's calculated by the browser and store them for use by the caller. We
+				 * first of all try to use the elements in the body, but it is possible that there are
+				 * no elements there, under which circumstances we use the header elements
+				 */
+				var oNodes = $("tbody tr:eq(0)", nCalcTmp).children();
+				if ( oNodes.length === 0 )
+				{
+					oNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );
+				}
+		
+				/* Browsers need a bit of a hand when a width is assigned to any columns when 
+				 * x-scrolling as they tend to collapse the table to the min-width, even if
+				 * we sent the column widths. So we need to keep track of what the table width
+				 * should be by summing the user given values, and the automatic values
+				 */
+				if ( oSettings.oScroll.sX !== "" )
+				{
+					var iTotal = 0;
+					iCorrector = 0;
+					for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+					{
+						if ( oSettings.aoColumns[i].bVisible )
+						{
+							if ( oSettings.aoColumns[i].sWidthOrig === null )
+							{
+								iTotal += $(oNodes[iCorrector]).outerWidth();
+							}
+							else
+							{
+								iTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +
+									($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());
+							}
+							iCorrector++;
+						}
+					}
+					
+					nCalcTmp.style.width = _fnStringToCss( iTotal );
+					oSettings.nTable.style.width = _fnStringToCss( iTotal );
+				}
+		
+				iCorrector = 0;
+				for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+				{
+					if ( oSettings.aoColumns[i].bVisible )
+					{
+						iWidth = $(oNodes[iCorrector]).width();
+						if ( iWidth !== null && iWidth > 0 )
+						{
+							oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );
+						}
+						iCorrector++;
+					}
+				}
+		
+				var cssWidth = $(nCalcTmp).css('width');
+				oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?
+				    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );
+				nCalcTmp.parentNode.removeChild( nCalcTmp );
+			}
+		
+			if ( widthAttr )
+			{
+				oSettings.nTable.style.width = _fnStringToCss( widthAttr );
+			}
+		}
+		
+		
+		/**
+		 * Adjust a table's width to take account of scrolling
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} n table node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollingWidthAdjust ( oSettings, n )
+		{
+			if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "" )
+			{
+				/* When y-scrolling only, we want to remove the width of the scroll bar so the table
+				 * + scroll bar will fit into the area avaialble.
+				 */
+				var iOrigWidth = $(n).width();
+				n.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );
+			}
+			else if ( oSettings.oScroll.sX !== "" )
+			{
+				/* When x-scrolling both ways, fix the table at it's current size, without adjusting */
+				n.style.width = _fnStringToCss( $(n).outerWidth() );
+			}
+		}
+		
+		
+		/**
+		 * Get the widest node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column of interest
+		 *  @returns {node} widest table node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetWidestNode( oSettings, iCol )
+		{
+			var iMaxIndex = _fnGetMaxLenString( oSettings, iCol );
+			if ( iMaxIndex < 0 )
+			{
+				return null;
+			}
+		
+			if ( oSettings.aoData[iMaxIndex].nTr === null )
+			{
+				var n = document.createElement('td');
+				n.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );
+				return n;
+			}
+			return _fnGetTdNodes(oSettings, iMaxIndex)[iCol];
+		}
+		
+		
+		/**
+		 * Get the maximum strlen for each data column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column of interest
+		 *  @returns {string} max string length for each column
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetMaxLenString( oSettings, iCol )
+		{
+			var iMax = -1;
+			var iMaxIndex = -1;
+			
+			for ( var i=0 ; i<oSettings.aoData.length ; i++ )
+			{
+				var s = _fnGetCellData( oSettings, i, iCol, 'display' )+"";
+				s = s.replace( /<.*?>/g, "" );
+				if ( s.length > iMax )
+				{
+					iMax = s.length;
+					iMaxIndex = i;
+				}
+			}
+			
+			return iMaxIndex;
+		}
+		
+		
+		/**
+		 * Append a CSS unit (only if required) to a string
+		 *  @param {array} aArray1 first array
+		 *  @param {array} aArray2 second array
+		 *  @returns {int} 0 if match, 1 if length is different, 2 if no match
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnStringToCss( s )
+		{
+			if ( s === null )
+			{
+				return "0px";
+			}
+			
+			if ( typeof s == 'number' )
+			{
+				if ( s < 0 )
+				{
+					return "0px";
+				}
+				return s+"px";
+			}
+			
+			/* Check if the last character is not 0-9 */
+			var c = s.charCodeAt( s.length-1 );
+			if (c < 0x30 || c > 0x39)
+			{
+				return s;
+			}
+			return s+"px";
+		}
+		
+		
+		/**
+		 * Get the width of a scroll bar in this browser being used
+		 *  @returns {int} width in pixels
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollBarWidth ()
+		{  
+			var inner = document.createElement('p');
+			var style = inner.style;
+			style.width = "100%";
+			style.height = "200px";
+			style.padding = "0px";
+			
+			var outer = document.createElement('div');
+			style = outer.style;
+			style.position = "absolute";
+			style.top = "0px";
+			style.left = "0px";
+			style.visibility = "hidden";
+			style.width = "200px";
+			style.height = "150px";
+			style.padding = "0px";
+			style.overflow = "hidden";
+			outer.appendChild(inner);
+			
+			document.body.appendChild(outer);
+			var w1 = inner.offsetWidth;
+			outer.style.overflow = 'scroll';
+			var w2 = inner.offsetWidth;
+			if ( w1 == w2 )
+			{
+				w2 = outer.clientWidth;
+			}
+			
+			document.body.removeChild(outer);
+			return (w1 - w2);  
+		}
+		
+		/**
+		 * Change the order of the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {bool} bApplyClasses optional - should we apply classes or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSort ( oSettings, bApplyClasses )
+		{
+			var
+				i, iLen, j, jLen, k, kLen,
+				sDataType, nTh,
+				aaSort = [],
+			 	aiOrig = [],
+				oSort = DataTable.ext.oSort,
+				aoData = oSettings.aoData,
+				aoColumns = oSettings.aoColumns,
+				oAria = oSettings.oLanguage.oAria;
+			
+			/* No sorting required if server-side or no sorting array */
+			if ( !oSettings.oFeatures.bServerSide && 
+				(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )
+			{
+				aaSort = ( oSettings.aaSortingFixed !== null ) ?
+					oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
+					oSettings.aaSorting.slice();
+				
+				/* If there is a sorting data type, and a function belonging to it, then we need to
+				 * get the data from the developer's function and apply it for this column
+				 */
+				for ( i=0 ; i<aaSort.length ; i++ )
+				{
+					var iColumn = aaSort[i][0];
+					var iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );
+					sDataType = oSettings.aoColumns[ iColumn ].sSortDataType;
+					if ( DataTable.ext.afnSortData[sDataType] )
+					{
+						var aData = DataTable.ext.afnSortData[sDataType].call( 
+							oSettings.oInstance, oSettings, iColumn, iVisColumn
+						);
+						if ( aData.length === aoData.length )
+						{
+							for ( j=0, jLen=aoData.length ; j<jLen ; j++ )
+							{
+								_fnSetCellData( oSettings, j, iColumn, aData[j] );
+							}
+						}
+						else
+						{
+							_fnLog( oSettings, 0, "Returned data sort array (col "+iColumn+") is the wrong length" );
+						}
+					}
+				}
+				
+				/* Create a value - key array of the current row positions such that we can use their
+				 * current position during the sort, if values match, in order to perform stable sorting
+				 */
+				for ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )
+				{
+					aiOrig[ oSettings.aiDisplayMaster[i] ] = i;
+				}
+		
+				/* Build an internal data array which is specific to the sort, so we can get and prep
+				 * the data to be sorted only once, rather than needing to do it every time the sorting
+				 * function runs. This make the sorting function a very simple comparison
+				 */
+				var iSortLen = aaSort.length;
+				var fnSortFormat, aDataSort;
+				for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+				{
+					for ( j=0 ; j<iSortLen ; j++ )
+					{
+						aDataSort = aoColumns[ aaSort[j][0] ].aDataSort;
+		
+						for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+						{
+							sDataType = aoColumns[ aDataSort[k] ].sType;
+							fnSortFormat = oSort[ (sDataType ? sDataType : 'string')+"-pre" ];
+							
+							aoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?
+								fnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :
+								_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );
+						}
+					}
+				}
+				
+				/* Do the sort - here we want multi-column sorting based on a given data source (column)
+				 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+				 * follow on it's own, but this is what we want (example two column sorting):
+				 *  fnLocalSorting = function(a,b){
+				 *  	var iTest;
+				 *  	iTest = oSort['string-asc']('data11', 'data12');
+				 *  	if (iTest !== 0)
+				 *  		return iTest;
+				 *    iTest = oSort['numeric-desc']('data21', 'data22');
+				 *    if (iTest !== 0)
+				 *  		return iTest;
+				 *  	return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+				 *  }
+				 * Basically we have a test for each sorting column, if the data in that column is equal,
+				 * test the next column. If all columns match, then we use a numeric sort on the row 
+				 * positions in the original data array to provide a stable sort.
+				 */
+				oSettings.aiDisplayMaster.sort( function ( a, b ) {
+					var k, l, lLen, iTest, aDataSort, sDataType;
+					for ( k=0 ; k<iSortLen ; k++ )
+					{
+						aDataSort = aoColumns[ aaSort[k][0] ].aDataSort;
+		
+						for ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )
+						{
+							sDataType = aoColumns[ aDataSort[l] ].sType;
+							
+							iTest = oSort[ (sDataType ? sDataType : 'string')+"-"+aaSort[k][1] ](
+								aoData[a]._aSortData[ aDataSort[l] ],
+								aoData[b]._aSortData[ aDataSort[l] ]
+							);
+						
+							if ( iTest !== 0 )
+							{
+								return iTest;
+							}
+						}
+					}
+					
+					return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+				} );
+			}
+			
+			/* Alter the sorting classes to take account of the changes */
+			if ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )
+			{
+				_fnSortingClasses( oSettings );
+			}
+		
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				var sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, "" );
+				nTh = aoColumns[i].nTh;
+				nTh.removeAttribute('aria-sort');
+				nTh.removeAttribute('aria-label');
+				
+				/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+				if ( aoColumns[i].bSortable )
+				{
+					if ( aaSort.length > 0 && aaSort[0][0] == i )
+					{
+						nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" );
+						
+						var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? 
+							aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];
+						nTh.setAttribute('aria-label', sTitle+
+							(nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
+					}
+					else
+					{
+						nTh.setAttribute('aria-label', sTitle+
+							(aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
+					}
+				}
+				else
+				{
+					nTh.setAttribute('aria-label', sTitle);
+				}
+			}
+			
+			/* Tell the draw function that we have sorted the data */
+			oSettings.bSorted = true;
+			$(oSettings.oInstance).trigger('sort', oSettings);
+			
+			/* Copy the master data into the draw array and re-draw */
+			if ( oSettings.oFeatures.bFilter )
+			{
+				/* _fnFilter() will redraw the table for us */
+				_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
+			}
+			else
+			{
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+				oSettings._iDisplayStart = 0; /* reset display back to page 0 */
+				_fnCalculateEnd( oSettings );
+				_fnDraw( oSettings );
+			}
+		}
+		
+		
+		/**
+		 * Attach a sort handler (click) to a node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nNode node to attach the handler to
+		 *  @param {int} iDataIndex column sorting index
+		 *  @param {function} [fnCallback] callback function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
+		{
+			_fnBindAction( nNode, {}, function (e) {
+				/* If the column is not sortable - don't to anything */
+				if ( oSettings.aoColumns[iDataIndex].bSortable === false )
+				{
+					return;
+				}
+				
+				/*
+				 * This is a little bit odd I admit... I declare a temporary function inside the scope of
+				 * _fnBuildHead and the click handler in order that the code presented here can be used 
+				 * twice - once for when bProcessing is enabled, and another time for when it is 
+				 * disabled, as we need to perform slightly different actions.
+				 *   Basically the issue here is that the Javascript engine in modern browsers don't 
+				 * appear to allow the rendering engine to update the display while it is still executing
+				 * it's thread (well - it does but only after long intervals). This means that the 
+				 * 'processing' display doesn't appear for a table sort. To break the js thread up a bit
+				 * I force an execution break by using setTimeout - but this breaks the expected 
+				 * thread continuation for the end-developer's point of view (their code would execute
+				 * too early), so we only do it when we absolutely have to.
+				 */
+				var fnInnerSorting = function () {
+					var iColumn, iNextSort;
+					
+					/* If the shift key is pressed then we are multiple column sorting */
+					if ( e.shiftKey )
+					{
+						/* Are we already doing some kind of sort on this column? */
+						var bFound = false;
+						for ( var i=0 ; i<oSettings.aaSorting.length ; i++ )
+						{
+							if ( oSettings.aaSorting[i][0] == iDataIndex )
+							{
+								bFound = true;
+								iColumn = oSettings.aaSorting[i][0];
+								iNextSort = oSettings.aaSorting[i][2]+1;
+								
+								if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
+								{
+									/* Reached the end of the sorting options, remove from multi-col sort */
+									oSettings.aaSorting.splice( i, 1 );
+								}
+								else
+								{
+									/* Move onto next sorting direction */
+									oSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+									oSettings.aaSorting[i][2] = iNextSort;
+								}
+								break;
+							}
+						}
+						
+						/* No sort yet - add it in */
+						if ( bFound === false )
+						{
+							oSettings.aaSorting.push( [ iDataIndex, 
+								oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
+						}
+					}
+					else
+					{
+						/* If no shift key then single column sort */
+						if ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )
+						{
+							iColumn = oSettings.aaSorting[0][0];
+							iNextSort = oSettings.aaSorting[0][2]+1;
+							if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
+							{
+								iNextSort = 0;
+							}
+							oSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+							oSettings.aaSorting[0][2] = iNextSort;
+						}
+						else
+						{
+							oSettings.aaSorting.splice( 0, oSettings.aaSorting.length );
+							oSettings.aaSorting.push( [ iDataIndex, 
+								oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
+						}
+					}
+					
+					/* Run the sort */
+					_fnSort( oSettings );
+				}; /* /fnInnerSorting */
+				
+				if ( !oSettings.oFeatures.bProcessing )
+				{
+					fnInnerSorting();
+				}
+				else
+				{
+					_fnProcessingDisplay( oSettings, true );
+					setTimeout( function() {
+						fnInnerSorting();
+						if ( !oSettings.oFeatures.bServerSide )
+						{
+							_fnProcessingDisplay( oSettings, false );
+						}
+					}, 0 );
+				}
+				
+				/* Call the user specified callback function - used for async user interaction */
+				if ( typeof fnCallback == 'function' )
+				{
+					fnCallback( oSettings );
+				}
+			} );
+		}
+		
+		
+		/**
+		 * Set the sorting classes on the header, Note: it is safe to call this function 
+		 * when bSort and bSortClasses are false
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSortingClasses( oSettings )
+		{
+			var i, iLen, j, jLen, iFound;
+			var aaSort, sClass;
+			var iColumns = oSettings.aoColumns.length;
+			var oClasses = oSettings.oClasses;
+			
+			for ( i=0 ; i<iColumns ; i++ )
+			{
+				if ( oSettings.aoColumns[i].bSortable )
+				{
+					$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +" "+ oClasses.sSortDesc +
+						" "+ oSettings.aoColumns[i].sSortingClass );
+				}
+			}
+			
+			if ( oSettings.aaSortingFixed !== null )
+			{
+				aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
+			}
+			else
+			{
+				aaSort = oSettings.aaSorting.slice();
+			}
+			
+			/* Apply the required classes to the header */
+			for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+			{
+				if ( oSettings.aoColumns[i].bSortable )
+				{
+					sClass = oSettings.aoColumns[i].sSortingClass;
+					iFound = -1;
+					for ( j=0 ; j<aaSort.length ; j++ )
+					{
+						if ( aaSort[j][0] == i )
+						{
+							sClass = ( aaSort[j][1] == "asc" ) ?
+								oClasses.sSortAsc : oClasses.sSortDesc;
+							iFound = j;
+							break;
+						}
+					}
+					$(oSettings.aoColumns[i].nTh).addClass( sClass );
+					
+					if ( oSettings.bJUI )
+					{
+						/* jQuery UI uses extra markup */
+						var jqSpan = $("span."+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);
+						jqSpan.removeClass(oClasses.sSortJUIAsc +" "+ oClasses.sSortJUIDesc +" "+ 
+							oClasses.sSortJUI +" "+ oClasses.sSortJUIAscAllowed +" "+ oClasses.sSortJUIDescAllowed );
+						
+						var sSpanClass;
+						if ( iFound == -1 )
+						{
+						 	sSpanClass = oSettings.aoColumns[i].sSortingClassJUI;
+						}
+						else if ( aaSort[iFound][1] == "asc" )
+						{
+							sSpanClass = oClasses.sSortJUIAsc;
+						}
+						else
+						{
+							sSpanClass = oClasses.sSortJUIDesc;
+						}
+						
+						jqSpan.addClass( sSpanClass );
+					}
+				}
+				else
+				{
+					/* No sorting on this column, so add the base class. This will have been assigned by
+					 * _fnAddColumn
+					 */
+					$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );
+				}
+			}
+			
+			/* 
+			 * Apply the required classes to the table body
+			 * Note that this is given as a feature switch since it can significantly slow down a sort
+			 * on large data sets (adding and removing of classes is always slow at the best of times..)
+			 * Further to this, note that this code is admittedly fairly ugly. It could be made a lot 
+			 * simpler using jQuery selectors and add/removeClass, but that is significantly slower
+			 * (on the order of 5 times slower) - hence the direct DOM manipulation here.
+			 * Note that for deferred drawing we do use jQuery - the reason being that taking the first
+			 * row found to see if the whole column needs processed can miss classes since the first
+			 * column might be new.
+			 */
+			sClass = oClasses.sSortColumn;
+			
+			if ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )
+			{
+				var nTds = _fnGetTdNodes( oSettings );
+				
+				/* Determine what the sorting class for each column should be */
+				var iClass, iTargetCol;
+				var asClasses = [];
+				for (i = 0; i < iColumns; i++)
+				{
+					asClasses.push("");
+				}
+				for (i = 0, iClass = 1; i < aaSort.length; i++)
+				{
+					iTargetCol = parseInt( aaSort[i][0], 10 );
+					asClasses[iTargetCol] = sClass + iClass;
+					
+					if ( iClass < 3 )
+					{
+						iClass++;
+					}
+				}
+				
+				/* Make changes to the classes for each cell as needed */
+				var reClass = new RegExp(sClass + "[123]");
+				var sTmpClass, sCurrentClass, sNewClass;
+				for ( i=0, iLen=nTds.length; i<iLen; i++ )
+				{
+					/* Determine which column we're looking at */
+					iTargetCol = i % iColumns;
+					
+					/* What is the full list of classes now */
+					sCurrentClass = nTds[i].className;
+					/* What sorting class should be applied? */
+					sNewClass = asClasses[iTargetCol];
+					/* What would the new full list be if we did a replacement? */
+					sTmpClass = sCurrentClass.replace(reClass, sNewClass);
+					
+					if ( sTmpClass != sCurrentClass )
+					{
+						/* We changed something */
+						nTds[i].className = $.trim( sTmpClass );
+					}
+					else if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )
+					{
+						/* We need to add a class */
+						nTds[i].className = sCurrentClass + " " + sNewClass;
+					}
+				}
+			}
+		}
+		
+		
+		
+		/**
+		 * Save the state of a table in a cookie such that the page can be reloaded
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSaveState ( oSettings )
+		{
+			if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )
+			{
+				return;
+			}
+		
+			/* Store the interesting variables */
+			var i, iLen, bInfinite=oSettings.oScroll.bInfinite;
+			var oState = {
+				"iCreate":      new Date().getTime(),
+				"iStart":       (bInfinite ? 0 : oSettings._iDisplayStart),
+				"iEnd":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
+				"iLength":      oSettings._iDisplayLength,
+				"aaSorting":    $.extend( true, [], oSettings.aaSorting ),
+				"oSearch":      $.extend( true, {}, oSettings.oPreviousSearch ),
+				"aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ),
+				"abVisCols":    []
+			};
+		
+			for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+			{
+				oState.abVisCols.push( oSettings.aoColumns[i].bVisible );
+			}
+		
+			_fnCallbackFire( oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState] );
+			
+			oSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );
+		}
+		
+		
+		/**
+		 * Attempt to load a saved table state from a cookie
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} oInit DataTables init object so we can override settings
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLoadState ( oSettings, oInit )
+		{
+			if ( !oSettings.oFeatures.bStateSave )
+			{
+				return;
+			}
+		
+			var oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );
+			if ( !oData )
+			{
+				return;
+			}
+			
+			/* Allow custom and plug-in manipulation functions to alter the saved data set and
+			 * cancelling of loading by returning false
+			 */
+			var abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );
+			if ( $.inArray( false, abStateLoad ) !== -1 )
+			{
+				return;
+			}
+			
+			/* Store the saved state so it might be accessed at any time */
+			oSettings.oLoadedState = $.extend( true, {}, oData );
+			
+			/* Restore key features */
+			oSettings._iDisplayStart    = oData.iStart;
+			oSettings.iInitDisplayStart = oData.iStart;
+			oSettings._iDisplayEnd      = oData.iEnd;
+			oSettings._iDisplayLength   = oData.iLength;
+			oSettings.aaSorting         = oData.aaSorting.slice();
+			oSettings.saved_aaSorting   = oData.aaSorting.slice();
+			
+			/* Search filtering  */
+			$.extend( oSettings.oPreviousSearch, oData.oSearch );
+			$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );
+			
+			/* Column visibility state
+			 * Pass back visibility settings to the init handler, but to do not here override
+			 * the init object that the user might have passed in
+			 */
+			oInit.saved_aoColumns = [];
+			for ( var i=0 ; i<oData.abVisCols.length ; i++ )
+			{
+				oInit.saved_aoColumns[i] = {};
+				oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
+			}
+		
+			_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );
+		}
+		
+		
+		/**
+		 * Create a new cookie with a value to store the state of a table
+		 *  @param {string} sName name of the cookie to create
+		 *  @param {string} sValue the value the cookie should take
+		 *  @param {int} iSecs duration of the cookie
+		 *  @param {string} sBaseName sName is made up of the base + file name - this is the base
+		 *  @param {function} fnCallback User definable function to modify the cookie
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )
+		{
+			var date = new Date();
+			date.setTime( date.getTime()+(iSecs*1000) );
+			
+			/* 
+			 * Shocking but true - it would appear IE has major issues with having the path not having
+			 * a trailing slash on it. We need the cookie to be available based on the path, so we
+			 * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
+			 * patch to use at least some of the path
+			 */
+			var aParts = window.location.pathname.split('/');
+			var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g,"").toLowerCase();
+			var sFullCookie, oData;
+			
+			if ( fnCallback !== null )
+			{
+				oData = (typeof $.parseJSON === 'function') ? 
+					$.parseJSON( sValue ) : eval( '('+sValue+')' );
+				sFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),
+					aParts.join('/')+"/" );
+			}
+			else
+			{
+				sFullCookie = sNameFile + "=" + encodeURIComponent(sValue) +
+					"; expires=" + date.toGMTString() +"; path=" + aParts.join('/')+"/";
+			}
+			
+			/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies
+			 * belonging to DataTables.
+			 */
+			var
+				aCookies =document.cookie.split(';'),
+				iNewCookieLen = sFullCookie.split(';')[0].length,
+				aOldCookies = [];
+			
+			if ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */
+			{
+				for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
+				{
+					if ( aCookies[i].indexOf( sBaseName ) != -1 )
+					{
+						/* It's a DataTables cookie, so eval it and check the time stamp */
+						var aSplitCookie = aCookies[i].split('=');
+						try {
+							oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );
+		
+							if ( oData && oData.iCreate )
+							{
+								aOldCookies.push( {
+									"name": aSplitCookie[0],
+									"time": oData.iCreate
+								} );
+							}
+						}
+						catch( e ) {}
+					}
+				}
+		
+				// Make sure we delete the oldest ones first
+				aOldCookies.sort( function (a, b) {
+					return b.time - a.time;
+				} );
+		
+				// Eliminate as many old DataTables cookies as we need to
+				while ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {
+					if ( aOldCookies.length === 0 ) {
+						// Deleted all DT cookies and still not enough space. Can't state save
+						return;
+					}
+					
+					var old = aOldCookies.pop();
+					document.cookie = old.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+
+						aParts.join('/') + "/";
+				}
+			}
+			
+			document.cookie = sFullCookie;
+		}
+		
+		
+		/**
+		 * Read an old cookie to get a cookie with an old table state
+		 *  @param {string} sName name of the cookie to read
+		 *  @returns {string} contents of the cookie - or null if no cookie with that name found
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReadCookie ( sName )
+		{
+			var
+				aParts = window.location.pathname.split('/'),
+				sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=',
+			 	sCookieContents = document.cookie.split(';');
+			
+			for( var i=0 ; i<sCookieContents.length ; i++ )
+			{
+				var c = sCookieContents[i];
+				
+				while (c.charAt(0)==' ')
+				{
+					c = c.substring(1,c.length);
+				}
+				
+				if (c.indexOf(sNameEQ) === 0)
+				{
+					return decodeURIComponent( c.substring(sNameEQ.length,c.length) );
+				}
+			}
+			return null;
+		}
+		
+		
+		/**
+		 * Return the settings object for a particular table
+		 *  @param {node} nTable table we are using as a dataTable
+		 *  @returns {object} Settings object - or null if not found
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSettingsFromNode ( nTable )
+		{
+			for ( var i=0 ; i<DataTable.settings.length ; i++ )
+			{
+				if ( DataTable.settings[i].nTable === nTable )
+				{
+					return DataTable.settings[i];
+				}
+			}
+			
+			return null;
+		}
+		
+		
+		/**
+		 * Return an array with the TR nodes for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {array} TR array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetTrNodes ( oSettings )
+		{
+			var aNodes = [];
+			var aoData = oSettings.aoData;
+			for ( var i=0, iLen=aoData.length ; i<iLen ; i++ )
+			{
+				if ( aoData[i].nTr !== null )
+				{
+					aNodes.push( aoData[i].nTr );
+				}
+			}
+			return aNodes;
+		}
+		
+		
+		/**
+		 * Return an flat array with all TD nodes for the table, or row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional 
+		 *    if not given then the return array will contain all nodes for the table
+		 *  @returns {array} TD array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetTdNodes ( oSettings, iIndividualRow )
+		{
+			var anReturn = [];
+			var iCorrector;
+			var anTds, nTd;
+			var iRow, iRows=oSettings.aoData.length,
+				iColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;
+			
+			/* Allow the collection to be limited to just one row */
+			if ( iIndividualRow !== undefined )
+			{
+				iStart = iIndividualRow;
+				iEnd = iIndividualRow+1;
+			}
+		
+			for ( iRow=iStart ; iRow<iEnd ; iRow++ )
+			{
+				oData = oSettings.aoData[iRow];
+				if ( oData.nTr !== null )
+				{
+					/* get the TD child nodes - taking into account text etc nodes */
+					anTds = [];
+					nTd = oData.nTr.firstChild;
+					while ( nTd )
+					{
+						sNodeName = nTd.nodeName.toLowerCase();
+						if ( sNodeName == 'td' || sNodeName == 'th' )
+						{
+							anTds.push( nTd );
+						}
+						nTd = nTd.nextSibling;
+					}
+		
+					iCorrector = 0;
+					for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
+					{
+						if ( oSettings.aoColumns[iColumn].bVisible )
+						{
+							anReturn.push( anTds[iColumn-iCorrector] );
+						}
+						else
+						{
+							anReturn.push( oData._anHidden[iColumn] );
+							iCorrector++;
+						}
+					}
+				}
+			}
+		
+			return anReturn;
+		}
+		
+		
+		/**
+		 * Log an error message
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iLevel log error messages, or display them to the user
+		 *  @param {string} sMesg error message
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLog( oSettings, iLevel, sMesg )
+		{
+			var sAlert = (oSettings===null) ?
+				"DataTables warning: "+sMesg :
+				"DataTables warning (table id = '"+oSettings.sTableId+"'): "+sMesg;
+			
+			if ( iLevel === 0 )
+			{
+				if ( DataTable.ext.sErrMode == 'alert' )
+				{
+					alert( sAlert );
+				}
+				else
+				{
+					throw new Error(sAlert);
+				}
+				return;
+			}
+			else if ( window.console && console.log )
+			{
+				console.log( sAlert );
+			}
+		}
+		
+		
+		/**
+		 * See if a property is defined on one object, if so assign it to the other object
+		 *  @param {object} oRet target object
+		 *  @param {object} oSrc source object
+		 *  @param {string} sName property
+		 *  @param {string} [sMappedName] name to map too - optional, sName used if not given
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnMap( oRet, oSrc, sName, sMappedName )
+		{
+			if ( sMappedName === undefined )
+			{
+				sMappedName = sName;
+			}
+			if ( oSrc[sName] !== undefined )
+			{
+				oRet[sMappedName] = oSrc[sName];
+			}
+		}
+		
+		
+		/**
+		 * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow
+		 * copy arrays. The reason we need to do this, is that we don't want to deep copy array
+		 * init values (such as aaSorting) since the dev wouldn't be able to override them, but
+		 * we do want to deep copy arrays.
+		 *  @param {object} oOut Object to extend
+		 *  @param {object} oExtender Object from which the properties will be applied to oOut
+		 *  @returns {object} oOut Reference, just for convenience - oOut === the return.
+		 *  @memberof DataTable#oApi
+		 *  @todo This doesn't take account of arrays inside the deep copied objects.
+		 */
+		function _fnExtend( oOut, oExtender )
+		{
+			var val;
+			
+			for ( var prop in oExtender )
+			{
+				if ( oExtender.hasOwnProperty(prop) )
+				{
+					val = oExtender[prop];
+		
+					if ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )
+					{
+						$.extend( true, oOut[prop], val );
+					}
+					else
+					{
+						oOut[prop] = val;
+					}
+				}
+			}
+		
+			return oOut;
+		}
+		
+		
+		/**
+		 * Bind an event handers to allow a click or return key to activate the callback.
+		 * This is good for accessibility since a return on the keyboard will have the
+		 * same effect as a click, if the element has focus.
+		 *  @param {element} n Element to bind the action to
+		 *  @param {object} oData Data object to pass to the triggered function
+		 *  @param {function} fn Callback function for when the event is triggered
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBindAction( n, oData, fn )
+		{
+			$(n)
+				.bind( 'click.DT', oData, function (e) {
+						n.blur(); // Remove focus outline for mouse users
+						fn(e);
+					} )
+				.bind( 'keypress.DT', oData, function (e){
+					if ( e.which === 13 ) {
+						fn(e);
+					} } )
+				.bind( 'selectstart.DT', function () {
+					/* Take the brutal approach to cancelling text selection */
+					return false;
+					} );
+		}
+		
+		
+		/**
+		 * Register a callback function. Easily allows a callback function to be added to
+		 * an array store of callback functions that can then all be called together.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+		 *  @param {function} fn Function to be called back
+		 *  @param {string} sName Identifying name for the callback (i.e. a label)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCallbackReg( oSettings, sStore, fn, sName )
+		{
+			if ( fn )
+			{
+				oSettings[sStore].push( {
+					"fn": fn,
+					"sName": sName
+				} );
+			}
+		}
+		
+		
+		/**
+		 * Fire callback functions and trigger events. Note that the loop over the callback
+		 * array store is done backwards! Further note that you do not want to fire off triggers
+		 * in time sensitive applications (for example cell creation) as its slow.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+		 *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger
+		 *    is fired
+		 *  @param {array} aArgs Array of arguments to pass to the callback function / trigger
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )
+		{
+			var aoStore = oSettings[sStore];
+			var aRet =[];
+		
+			for ( var i=aoStore.length-1 ; i>=0 ; i-- )
+			{
+				aRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );
+			}
+		
+			if ( sTrigger !== null )
+			{
+				$(oSettings.oInstance).trigger(sTrigger, aArgs);
+			}
+		
+			return aRet;
+		}
+		
+		
+		/**
+		 * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other
+		 * library, then we use that as it is fast, safe and accurate. If the function isn't 
+		 * available then we need to built it ourselves - the inspiration for this function comes
+		 * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is
+		 * not perfect and absolutely should not be used as a replacement to json2.js - but it does
+		 * do what we need, without requiring a dependency for DataTables.
+		 *  @param {object} o JSON object to be converted
+		 *  @returns {string} JSON string
+		 *  @memberof DataTable#oApi
+		 */
+		var _fnJsonString = (window.JSON) ? JSON.stringify : function( o )
+		{
+			/* Not an object or array */
+			var sType = typeof o;
+			if (sType !== "object" || o === null)
+			{
+				// simple data type
+				if (sType === "string")
+				{
+					o = '"'+o+'"';
+				}
+				return o+"";
+			}
+		
+			/* If object or array, need to recurse over it */
+			var
+				sProp, mValue,
+				json = [],
+				bArr = $.isArray(o);
+			
+			for (sProp in o)
+			{
+				mValue = o[sProp];
+				sType = typeof mValue;
+		
+				if (sType === "string")
+				{
+					mValue = '"'+mValue+'"';
+				}
+				else if (sType === "object" && mValue !== null)
+				{
+					mValue = _fnJsonString(mValue);
+				}
+		
+				json.push((bArr ? "" : '"'+sProp+'":') + mValue);
+			}
+		
+			return (bArr ? "[" : "{") + json + (bArr ? "]" : "}");
+		};
+		
+		
+		/**
+		 * From some browsers (specifically IE6/7) we need special handling to work around browser
+		 * bugs - this function is used to detect when these workarounds are needed.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBrowserDetect( oSettings )
+		{
+			/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the
+			 * width of the scrollbar, while other browsers ensure the inner element is contained
+			 * without forcing scrolling
+			 */
+			var n = $(
+				'<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden">'+
+					'<div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;">'+
+						'<div id="DT_BrowserTest" style="width:100%; height:10px;"></div>'+
+					'</div>'+
+				'</div>')[0];
+		
+			document.body.appendChild( n );
+			oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;
+			document.body.removeChild( n );
+		}
+		
+
+		/**
+		 * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+		 * return the resulting jQuery object.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+		 *    criterion ("applied") or all TR elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be 
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {object} jQuery object, filtered by the given selector.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Highlight every second row
+		 *      oTable.$('tr:odd').css('backgroundColor', 'blue');
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to rows with 'Webkit' in them, add a background colour and then
+		 *      // remove the filter, thus highlighting the 'Webkit' rows only.
+		 *      oTable.fnFilter('Webkit');
+		 *      oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue');
+		 *      oTable.fnFilter('');
+		 *    } );
+		 */
+		this.$ = function ( sSelector, oOpts )
+		{
+			var i, iLen, a = [], tr;
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var aoData = oSettings.aoData;
+			var aiDisplay = oSettings.aiDisplay;
+			var aiDisplayMaster = oSettings.aiDisplayMaster;
+		
+			if ( !oOpts )
+			{
+				oOpts = {};
+			}
+		
+			oOpts = $.extend( {}, {
+				"filter": "none", // applied
+				"order": "current", // "original"
+				"page": "all" // current
+			}, oOpts );
+		
+			// Current page implies that order=current and fitler=applied, since it is fairly
+			// senseless otherwise
+			if ( oOpts.page == 'current' )
+			{
+				for ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )
+				{
+					tr = aoData[ aiDisplay[i] ].nTr;
+					if ( tr )
+					{
+						a.push( tr );
+					}
+				}
+			}
+			else if ( oOpts.order == "current" && oOpts.filter == "none" )
+			{
+				for ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )
+				{
+					tr = aoData[ aiDisplayMaster[i] ].nTr;
+					if ( tr )
+					{
+						a.push( tr );
+					}
+				}
+			}
+			else if ( oOpts.order == "current" && oOpts.filter == "applied" )
+			{
+				for ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )
+				{
+					tr = aoData[ aiDisplay[i] ].nTr;
+					if ( tr )
+					{
+						a.push( tr );
+					}
+				}
+			}
+			else if ( oOpts.order == "original" && oOpts.filter == "none" )
+			{
+				for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+				{
+					tr = aoData[ i ].nTr ;
+					if ( tr )
+					{
+						a.push( tr );
+					}
+				}
+			}
+			else if ( oOpts.order == "original" && oOpts.filter == "applied" )
+			{
+				for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+				{
+					tr = aoData[ i ].nTr;
+					if ( $.inArray( i, aiDisplay ) !== -1 && tr )
+					{
+						a.push( tr );
+					}
+				}
+			}
+			else
+			{
+				_fnLog( oSettings, 1, "Unknown selection options" );
+			}
+		
+			/* We need to filter on the TR elements and also 'find' in their descendants
+			 * to make the selector act like it would in a full table - so we need
+			 * to build both results and then combine them together
+			 */
+			var jqA = $(a);
+			var jqTRs = jqA.filter( sSelector );
+			var jqDescendants = jqA.find( sSelector );
+		
+			return $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );
+		};
+		
+		
+		/**
+		 * Almost identical to $ in operation, but in this case returns the data for the matched
+		 * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+		 * rather than any descendants, so the data can be obtained for the row/cell. If matching
+		 * rows are found, the data returned is the original data array/object that was used to  
+		 * create the row (or a generated array if from a DOM source).
+		 *
+		 * This method is often useful in-combination with $ where both functions are given the
+		 * same parameters and the array indexes will match identically.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select elements that meet the current filter
+		 *    criterion ("applied") or all elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the data in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be 
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {array} Data for the matched elements. If any elements, as a result of the
+		 *    selector, were not TR, TD or TH elements in the DataTable, they will have a null 
+		 *    entry in the array.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the data from the first row in the table
+		 *      var data = oTable._('tr:first');
+		 *
+		 *      // Do something useful with the data
+		 *      alert( "First cell is: "+data[0] );
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to 'Webkit' and get all data for 
+		 *      oTable.fnFilter('Webkit');
+		 *      var data = oTable._('tr', {"filter": "applied"});
+		 *      
+		 *      // Do something with the data
+		 *      alert( data.length+" rows matched the filter" );
+		 *    } );
+		 */
+		this._ = function ( sSelector, oOpts )
+		{
+			var aOut = [];
+			var i, iLen, iIndex;
+			var aTrs = this.$( sSelector, oOpts );
+		
+			for ( i=0, iLen=aTrs.length ; i<iLen ; i++ )
+			{
+				aOut.push( this.fnGetData(aTrs[i]) );
+			}
+		
+			return aOut;
+		};
+		
+		
+		/**
+		 * Add a single new row or multiple rows of data to the table. Please note
+		 * that this is suitable for client-side processing only - if you are using 
+		 * server-side processing (i.e. "bServerSide": true), then to add data, you
+		 * must add it to the data source, i.e. the server-side, through an Ajax call.
+		 *  @param {array|object} mData The data to be added to the table. This can be:
+		 *    <ul>
+		 *      <li>1D array of data - add a single row with the data provided</li>
+		 *      <li>2D array of arrays - add multiple rows in a single call</li>
+		 *      <li>object - data object when using <i>mData</i></li>
+		 *      <li>array of objects - multiple data objects when using <i>mData</i></li>
+		 *    </ul>
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @returns {array} An array of integers, representing the list of indexes in 
+		 *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to 
+		 *    the table.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    // Global var for counter
+		 *    var giCount = 2;
+		 *    
+		 *    $(document).ready(function() {
+		 *      $('#example').dataTable();
+		 *    } );
+		 *    
+		 *    function fnClickAddRow() {
+		 *      $('#example').dataTable().fnAddData( [
+		 *        giCount+".1",
+		 *        giCount+".2",
+		 *        giCount+".3",
+		 *        giCount+".4" ]
+		 *      );
+		 *        
+		 *      giCount++;
+		 *    }
+		 */
+		this.fnAddData = function( mData, bRedraw )
+		{
+			if ( mData.length === 0 )
+			{
+				return [];
+			}
+			
+			var aiReturn = [];
+			var iTest;
+			
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			
+			/* Check if we want to add multiple rows or not */
+			if ( typeof mData[0] === "object" && mData[0] !== null )
+			{
+				for ( var i=0 ; i<mData.length ; i++ )
+				{
+					iTest = _fnAddData( oSettings, mData[i] );
+					if ( iTest == -1 )
+					{
+						return aiReturn;
+					}
+					aiReturn.push( iTest );
+				}
+			}
+			else
+			{
+				iTest = _fnAddData( oSettings, mData );
+				if ( iTest == -1 )
+				{
+					return aiReturn;
+				}
+				aiReturn.push( iTest );
+			}
+			
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnReDraw( oSettings );
+			}
+			return aiReturn;
+		};
+		
+		
+		/**
+		 * This function will make DataTables recalculate the column sizes, based on the data 
+		 * contained in the table and the sizes applied to the columns (in the DOM, CSS or 
+		 * through the sWidth parameter). This can be useful when the width of the table's 
+		 * parent element changes (for example a window resize).
+		 *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *      
+		 *      $(window).bind('resize', function () {
+		 *        oTable.fnAdjustColumnSizing();
+		 *      } );
+		 *    } );
+		 */
+		this.fnAdjustColumnSizing = function ( bRedraw )
+		{
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			_fnAdjustColumnSizing( oSettings );
+			
+			if ( bRedraw === undefined || bRedraw )
+			{
+				this.fnDraw( false );
+			}
+			else if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+			{
+				/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+				this.oApi._fnScrollDraw(oSettings);
+			}
+		};
+		
+		
+		/**
+		 * Quickly and simply clear a table
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+		 *      oTable.fnClearTable();
+		 *    } );
+		 */
+		this.fnClearTable = function( bRedraw )
+		{
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			_fnClearTable( oSettings );
+			
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnDraw( oSettings );
+			}
+		};
+		
+		
+		/**
+		 * The exact opposite of 'opening' a row, this function will close any rows which 
+		 * are currently 'open'.
+		 *  @param {node} nTr the table row to 'close'
+		 *  @returns {int} 0 on success, or 1 if failed (can't find the row)
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnClose = function( nTr )
+		{
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			
+			for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
+			{
+				if ( oSettings.aoOpenRows[i].nParent == nTr )
+				{
+					var nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;
+					if ( nTrParent )
+					{
+						/* Remove it if it is currently on display */
+						nTrParent.removeChild( oSettings.aoOpenRows[i].nTr );
+					}
+					oSettings.aoOpenRows.splice( i, 1 );
+					return 0;
+				}
+			}
+			return 1;
+		};
+		
+		
+		/**
+		 * Remove a row for the table
+		 *  @param {mixed} mTarget The index of the row from aoData to be deleted, or
+		 *    the TR element you want to delete
+		 *  @param {function|null} [fnCallBack] Callback function
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @returns {array} The row that was deleted
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Immediately remove the first row
+		 *      oTable.fnDeleteRow( 0 );
+		 *    } );
+		 */
+		this.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )
+		{
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var i, iLen, iAODataIndex;
+			
+			iAODataIndex = (typeof mTarget === 'object') ? 
+				_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
+			
+			/* Return the data array from this row */
+			var oData = oSettings.aoData.splice( iAODataIndex, 1 );
+		
+			/* Update the _DT_RowIndex parameter */
+			for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+			{
+				if ( oSettings.aoData[i].nTr !== null )
+				{
+					oSettings.aoData[i].nTr._DT_RowIndex = i;
+				}
+			}
+			
+			/* Remove the target row from the search array */
+			var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
+			oSettings.asDataSearch.splice( iDisplayIndex, 1 );
+			
+			/* Delete from the display arrays */
+			_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );
+			_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );
+			
+			/* If there is a user callback function - call it */
+			if ( typeof fnCallBack === "function" )
+			{
+				fnCallBack.call( this, oSettings, oData );
+			}
+			
+			/* Check for an 'overflow' they case for displaying the table */
+			if ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )
+			{
+				oSettings._iDisplayStart -= oSettings._iDisplayLength;
+				if ( oSettings._iDisplayStart < 0 )
+				{
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnCalculateEnd( oSettings );
+				_fnDraw( oSettings );
+			}
+			
+			return oData;
+		};
+		
+		
+		/**
+		 * Restore the table to it's original state in the DOM by removing all of DataTables 
+		 * enhancements, alterations to the DOM structure of the table and event listeners.
+		 *  @param {boolean} [bRemove=false] Completely remove the table from the DOM
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      // This example is fairly pointless in reality, but shows how fnDestroy can be used
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnDestroy();
+		 *    } );
+		 */
+		this.fnDestroy = function ( bRemove )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var nOrig = oSettings.nTableWrapper.parentNode;
+			var nBody = oSettings.nTBody;
+			var i, iLen;
+		
+			bRemove = (bRemove===undefined) ? false : bRemove;
+			
+			/* Flag to note that the table is currently being destroyed - no action should be taken */
+			oSettings.bDestroying = true;
+			
+			/* Fire off the destroy callbacks for plug-ins etc */
+			_fnCallbackFire( oSettings, "aoDestroyCallback", "destroy", [oSettings] );
+		
+			/* If the table is not being removed, restore the hidden columns */
+			if ( !bRemove )
+			{
+				for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+				{
+					if ( oSettings.aoColumns[i].bVisible === false )
+					{
+						this.fnSetColumnVis( i, true );
+					}
+				}
+			}
+			
+			/* Blitz all DT events */
+			$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');
+			
+			/* If there is an 'empty' indicator row, remove it */
+			$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();
+			
+			/* When scrolling we had to break the table up - restore it */
+			if ( oSettings.nTable != oSettings.nTHead.parentNode )
+			{
+				$(oSettings.nTable).children('thead').remove();
+				oSettings.nTable.appendChild( oSettings.nTHead );
+			}
+			
+			if ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )
+			{
+				$(oSettings.nTable).children('tfoot').remove();
+				oSettings.nTable.appendChild( oSettings.nTFoot );
+			}
+			
+			/* Remove the DataTables generated nodes, events and classes */
+			oSettings.nTable.parentNode.removeChild( oSettings.nTable );
+			$(oSettings.nTableWrapper).remove();
+			
+			oSettings.aaSorting = [];
+			oSettings.aaSortingFixed = [];
+			_fnSortingClasses( oSettings );
+			
+			$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );
+			
+			$('th, td', oSettings.nTHead).removeClass( [
+				oSettings.oClasses.sSortable,
+				oSettings.oClasses.sSortableAsc,
+				oSettings.oClasses.sSortableDesc,
+				oSettings.oClasses.sSortableNone ].join(' ')
+			);
+			if ( oSettings.bJUI )
+			{
+				$('th span.'+oSettings.oClasses.sSortIcon
+					+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();
+		
+				$('th, td', oSettings.nTHead).each( function () {
+					var jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);
+					var kids = jqWrapper.contents();
+					$(this).append( kids );
+					jqWrapper.remove();
+				} );
+			}
+			
+			/* Add the TR elements back into the table in their original order */
+			if ( !bRemove && oSettings.nTableReinsertBefore )
+			{
+				nOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );
+			}
+			else if ( !bRemove )
+			{
+				nOrig.appendChild( oSettings.nTable );
+			}
+		
+			for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+			{
+				if ( oSettings.aoData[i].nTr !== null )
+				{
+					nBody.appendChild( oSettings.aoData[i].nTr );
+				}
+			}
+			
+			/* Restore the width of the original table */
+			if ( oSettings.oFeatures.bAutoWidth === true )
+			{
+			  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);
+			}
+			
+			/* If the were originally stripe classes - then we add them back here. Note
+			 * this is not fool proof (for example if not all rows had stripe classes - but
+			 * it's a good effort without getting carried away
+			 */
+			iLen = oSettings.asDestroyStripes.length;
+			if (iLen)
+			{
+				var anRows = $(nBody).children('tr');
+				for ( i=0 ; i<iLen ; i++ )
+				{
+					anRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );
+				}
+			}
+			
+			/* Remove the settings object from the settings array */
+			for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
+			{
+				if ( DataTable.settings[i] == oSettings )
+				{
+					DataTable.settings.splice( i, 1 );
+				}
+			}
+			
+			/* End it all */
+			oSettings = null;
+			oInit = null;
+		};
+		
+		
+		/**
+		 * Redraw the table
+		 *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+		 *      oTable.fnDraw();
+		 *    } );
+		 */
+		this.fnDraw = function( bComplete )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			if ( bComplete === false )
+			{
+				_fnCalculateEnd( oSettings );
+				_fnDraw( oSettings );
+			}
+			else
+			{
+				_fnReDraw( oSettings );
+			}
+		};
+		
+		
+		/**
+		 * Filter the input based on data
+		 *  @param {string} sInput String to filter the table on
+		 *  @param {int|null} [iColumn] Column to limit filtering to
+		 *  @param {bool} [bRegex=false] Treat as regular expression or not
+		 *  @param {bool} [bSmart=true] Perform smart filtering or not
+		 *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+		 *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sometime later - filter...
+		 *      oTable.fnFilter( 'test string' );
+		 *    } );
+		 */
+		this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			
+			if ( !oSettings.oFeatures.bFilter )
+			{
+				return;
+			}
+			
+			if ( bRegex === undefined || bRegex === null )
+			{
+				bRegex = false;
+			}
+			
+			if ( bSmart === undefined || bSmart === null )
+			{
+				bSmart = true;
+			}
+			
+			if ( bShowGlobal === undefined || bShowGlobal === null )
+			{
+				bShowGlobal = true;
+			}
+			
+			if ( bCaseInsensitive === undefined || bCaseInsensitive === null )
+			{
+				bCaseInsensitive = true;
+			}
+			
+			if ( iColumn === undefined || iColumn === null )
+			{
+				/* Global filter */
+				_fnFilterComplete( oSettings, {
+					"sSearch":sInput+"",
+					"bRegex": bRegex,
+					"bSmart": bSmart,
+					"bCaseInsensitive": bCaseInsensitive
+				}, 1 );
+				
+				if ( bShowGlobal && oSettings.aanFeatures.f )
+				{
+					var n = oSettings.aanFeatures.f;
+					for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+					{
+						// IE9 throws an 'unknown error' if document.activeElement is used
+						// inside an iframe or frame...
+						try {
+							if ( n[i]._DT_Input != document.activeElement )
+							{
+								$(n[i]._DT_Input).val( sInput );
+							}
+						}
+						catch ( e ) {
+							$(n[i]._DT_Input).val( sInput );
+						}
+					}
+				}
+			}
+			else
+			{
+				/* Single column filter */
+				$.extend( oSettings.aoPreSearchCols[ iColumn ], {
+					"sSearch": sInput+"",
+					"bRegex": bRegex,
+					"bSmart": bSmart,
+					"bCaseInsensitive": bCaseInsensitive
+				} );
+				_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
+			}
+		};
+		
+		
+		/**
+		 * Get the data for the whole table, an individual row or an individual cell based on the 
+		 * provided parameters.
+		 *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as
+		 *    a TR node then the data source for the whole row will be returned. If given as a
+		 *    TD/TH cell node then iCol will be automatically calculated and the data for the
+		 *    cell returned. If given as an integer, then this is treated as the aoData internal
+		 *    data index for the row (see fnGetPosition) and the data for that row used.
+		 *  @param {int} [iCol] Optional column index that you want the data of.
+		 *  @returns {array|object|string} If mRow is undefined, then the data for all rows is
+		 *    returned. If mRow is defined, just data for that row, and is iCol is
+		 *    defined, only data for the designated cell is returned.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    // Row data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('tr').click( function () {
+		 *        var data = oTable.fnGetData( this );
+		 *        // ... do something with the array / object of data for the row
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Individual cell data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('td').click( function () {
+		 *        var sData = oTable.fnGetData( this );
+		 *        alert( 'The cell clicked on had the value of '+sData );
+		 *      } );
+		 *    } );
+		 */
+		this.fnGetData = function( mRow, iCol )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			
+			if ( mRow !== undefined )
+			{
+				var iRow = mRow;
+				if ( typeof mRow === 'object' )
+				{
+					var sNode = mRow.nodeName.toLowerCase();
+					if (sNode === "tr" )
+					{
+						iRow = _fnNodeToDataIndex(oSettings, mRow);
+					}
+					else if ( sNode === "td" )
+					{
+						iRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);
+						iCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );
+					}
+				}
+		
+				if ( iCol !== undefined )
+				{
+					return _fnGetCellData( oSettings, iRow, iCol, '' );
+				}
+				return (oSettings.aoData[iRow]!==undefined) ?
+					oSettings.aoData[iRow]._aData : null;
+			}
+			return _fnGetDataMaster( oSettings );
+		};
+		
+		
+		/**
+		 * Get an array of the TR nodes that are used in the table's body. Note that you will 
+		 * typically want to use the '$' API method in preference to this as it is more 
+		 * flexible.
+		 *  @param {int} [iRow] Optional row index for the TR element you want
+		 *  @returns {array|node} If iRow is undefined, returns an array of all TR elements
+		 *    in the table's body, or iRow is defined, just the TR element requested.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Get the nodes from the table
+		 *      var nNodes = oTable.fnGetNodes( );
+		 *    } );
+		 */
+		this.fnGetNodes = function( iRow )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			
+			if ( iRow !== undefined ) {
+				return (oSettings.aoData[iRow]!==undefined) ?
+					oSettings.aoData[iRow].nTr : null;
+			}
+			return _fnGetTrNodes( oSettings );
+		};
+		
+		
+		/**
+		 * Get the array indexes of a particular cell from it's DOM element
+		 * and column index including hidden columns
+		 *  @param {node} nNode this can either be a TR, TD or TH in the table's body
+		 *  @returns {int} If nNode is given as a TR, then a single index is returned, or
+		 *    if given as a cell, an array of [row index, column index (visible), 
+		 *    column index (all)] is given.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      $('#example tbody td').click( function () {
+		 *        // Get the position of the current data from the node
+		 *        var aPos = oTable.fnGetPosition( this );
+		 *        
+		 *        // Get the data array for this row
+		 *        var aData = oTable.fnGetData( aPos[0] );
+		 *        
+		 *        // Update the data array and return the value
+		 *        aData[ aPos[1] ] = 'clicked';
+		 *        this.innerHTML = 'clicked';
+		 *      } );
+		 *      
+		 *      // Init DataTables
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnGetPosition = function( nNode )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var sNodeName = nNode.nodeName.toUpperCase();
+			
+			if ( sNodeName == "TR" )
+			{
+				return _fnNodeToDataIndex(oSettings, nNode);
+			}
+			else if ( sNodeName == "TD" || sNodeName == "TH" )
+			{
+				var iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );
+				var iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );
+				return [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];
+			}
+			return null;
+		};
+		
+		
+		/**
+		 * Check to see if a row is 'open' or not.
+		 *  @param {node} nTr the table row to check
+		 *  @returns {boolean} true if the row is currently open, false otherwise
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnIsOpen = function( nTr )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var aoOpenRows = oSettings.aoOpenRows;
+			
+			for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
+			{
+				if ( oSettings.aoOpenRows[i].nParent == nTr )
+				{
+					return true;
+				}
+			}
+			return false;
+		};
+		
+		
+		/**
+		 * This function will place a new row directly after a row which is currently 
+		 * on display on the page, with the HTML contents that is passed into the 
+		 * function. This can be used, for example, to ask for confirmation that a 
+		 * particular record should be deleted.
+		 *  @param {node} nTr The table row to 'open'
+		 *  @param {string|node|jQuery} mHtml The HTML to put into the row
+		 *  @param {string} sClass Class to give the new TD cell
+		 *  @returns {node} The row opened. Note that if the table row passed in as the
+		 *    first parameter, is not found in the table, this method will silently
+		 *    return.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnOpen = function( nTr, mHtml, sClass )
+		{
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+		
+			/* Check that the row given is in the table */
+			var nTableRows = _fnGetTrNodes( oSettings );
+			if ( $.inArray(nTr, nTableRows) === -1 )
+			{
+				return;
+			}
+			
+			/* the old open one if there is one */
+			this.fnClose( nTr );
+			
+			var nNewRow = document.createElement("tr");
+			var nNewCell = document.createElement("td");
+			nNewRow.appendChild( nNewCell );
+			nNewCell.className = sClass;
+			nNewCell.colSpan = _fnVisbleColumns( oSettings );
+		
+			if (typeof mHtml === "string")
+			{
+				nNewCell.innerHTML = mHtml;
+			}
+			else
+			{
+				$(nNewCell).html( mHtml );
+			}
+		
+			/* If the nTr isn't on the page at the moment - then we don't insert at the moment */
+			var nTrs = $('tr', oSettings.nTBody);
+			if ( $.inArray(nTr, nTrs) != -1  )
+			{
+				$(nNewRow).insertAfter(nTr);
+			}
+			
+			oSettings.aoOpenRows.push( {
+				"nTr": nNewRow,
+				"nParent": nTr
+			} );
+			
+			return nNewRow;
+		};
+		
+		
+		/**
+		 * Change the pagination - provides the internal logic for pagination in a simple API 
+		 * function. With this function you can have a DataTables table go to the next, 
+		 * previous, first or last pages.
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer), note that page 0 is the first page.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnPageChange( 'next' );
+		 *    } );
+		 */
+		this.fnPageChange = function ( mAction, bRedraw )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			_fnPageChange( oSettings, mAction );
+			_fnCalculateEnd( oSettings );
+			
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnDraw( oSettings );
+			}
+		};
+		
+		
+		/**
+		 * Show a particular column
+		 *  @param {int} iCol The column whose display should be changed
+		 *  @param {bool} bShow Show (true) or hide (false) the column
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Hide the second column after initialisation
+		 *      oTable.fnSetColumnVis( 1, false );
+		 *    } );
+		 */
+		this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var i, iLen;
+			var aoColumns = oSettings.aoColumns;
+			var aoData = oSettings.aoData;
+			var nTd, bAppend, iBefore;
+			
+			/* No point in doing anything if we are requesting what is already true */
+			if ( aoColumns[iCol].bVisible == bShow )
+			{
+				return;
+			}
+			
+			/* Show the column */
+			if ( bShow )
+			{
+				var iInsert = 0;
+				for ( i=0 ; i<iCol ; i++ )
+				{
+					if ( aoColumns[i].bVisible )
+					{
+						iInsert++;
+					}
+				}
+				
+				/* Need to decide if we should use appendChild or insertBefore */
+				bAppend = (iInsert >= _fnVisbleColumns( oSettings ));
+		
+				/* Which coloumn should we be inserting before? */
+				if ( !bAppend )
+				{
+					for ( i=iCol ; i<aoColumns.length ; i++ )
+					{
+						if ( aoColumns[i].bVisible )
+						{
+							iBefore = i;
+							break;
+						}
+					}
+				}
+		
+				for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+				{
+					if ( aoData[i].nTr !== null )
+					{
+						if ( bAppend )
+						{
+							aoData[i].nTr.appendChild( 
+								aoData[i]._anHidden[iCol]
+							);
+						}
+						else
+						{
+							aoData[i].nTr.insertBefore(
+								aoData[i]._anHidden[iCol], 
+								_fnGetTdNodes( oSettings, i )[iBefore] );
+						}
+					}
+				}
+			}
+			else
+			{
+				/* Remove a column from display */
+				for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+				{
+					if ( aoData[i].nTr !== null )
+					{
+						nTd = _fnGetTdNodes( oSettings, i )[iCol];
+						aoData[i]._anHidden[iCol] = nTd;
+						nTd.parentNode.removeChild( nTd );
+					}
+				}
+			}
+		
+			/* Clear to set the visible flag */
+			aoColumns[iCol].bVisible = bShow;
+		
+			/* Redraw the header and footer based on the new column visibility */
+			_fnDrawHead( oSettings, oSettings.aoHeader );
+			if ( oSettings.nTFoot )
+			{
+				_fnDrawHead( oSettings, oSettings.aoFooter );
+			}
+			
+			/* If there are any 'open' rows, then we need to alter the colspan for this col change */
+			for ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )
+			{
+				oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );
+			}
+			
+			/* Do a redraw incase anything depending on the table columns needs it 
+			 * (built-in: scrolling) 
+			 */
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnAdjustColumnSizing( oSettings );
+				_fnDraw( oSettings );
+			}
+			
+			_fnSaveState( oSettings );
+		};
+		
+		
+		/**
+		 * Get the settings for a particular table for external manipulation
+		 *  @returns {object} DataTables settings object. See 
+		 *    {@link DataTable.models.oSettings}
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      var oSettings = oTable.fnSettings();
+		 *      
+		 *      // Show an example parameter from the settings
+		 *      alert( oSettings._iDisplayStart );
+		 *    } );
+		 */
+		this.fnSettings = function()
+		{
+			return _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+		};
+		
+		
+		/**
+		 * Sort the table by a particular column
+		 *  @param {int} iCol the data index to sort on. Note that this will not match the 
+		 *    'display index' if you have hidden data entries
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sort immediately with columns 0 and 1
+		 *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+		 *    } );
+		 */
+		this.fnSort = function( aaSort )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			oSettings.aaSorting = aaSort;
+			_fnSort( oSettings );
+		};
+		
+		
+		/**
+		 * Attach a sort listener to an element for a given column
+		 *  @param {node} nNode the element to attach the sort listener to
+		 *  @param {int} iColumn the column that a click on this node will sort on
+		 *  @param {function} [fnCallback] callback function when sort is run
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sort on column 1, when 'sorter' is clicked on
+		 *      oTable.fnSortListener( document.getElementById('sorter'), 1 );
+		 *    } );
+		 */
+		this.fnSortListener = function( nNode, iColumn, fnCallback )
+		{
+			_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,
+			 	fnCallback );
+		};
+		
+		
+		/**
+		 * Update a table cell or row - this method will accept either a single value to
+		 * update the cell with, an array of values with one element for each column or
+		 * an object in the same format as the original data source. The function is
+		 * self-referencing in order to make the multi column updates easier.
+		 *  @param {object|array|string} mData Data to update the cell/row with
+		 *  @param {node|int} mRow TR element you want to update or the aoData index
+		 *  @param {int} [iColumn] The column to update (not used of mData is an array or object)
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @param {bool} [bAction=true] Perform pre-draw actions or not
+		 *  @returns {int} 0 on success, 1 on error
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+		 *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
+		 *    } );
+		 */
+		this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+		{
+			var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+			var i, iLen, sDisplay;
+			var iRow = (typeof mRow === 'object') ? 
+				_fnNodeToDataIndex(oSettings, mRow) : mRow;
+			
+			if ( $.isArray(mData) && iColumn === undefined )
+			{
+				/* Array update - update the whole row */
+				oSettings.aoData[iRow]._aData = mData.slice();
+				
+				/* Flag to the function that we are recursing */
+				for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+				{
+					this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
+				}
+			}
+			else if ( $.isPlainObject(mData) && iColumn === undefined )
+			{
+				/* Object update - update the whole row - assume the developer gets the object right */
+				oSettings.aoData[iRow]._aData = $.extend( true, {}, mData );
+		
+				for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+				{
+					this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
+				}
+			}
+			else
+			{
+				/* Individual cell update */
+				_fnSetCellData( oSettings, iRow, iColumn, mData );
+				sDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+				
+				var oCol = oSettings.aoColumns[iColumn];
+				if ( oCol.fnRender !== null )
+				{
+					sDisplay = _fnRender( oSettings, iRow, iColumn );
+					if ( oCol.bUseRendered )
+					{
+						_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
+					}
+				}
+				
+				if ( oSettings.aoData[iRow].nTr !== null )
+				{
+					/* Do the actual HTML update */
+					_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;
+				}
+			}
+			
+			/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw
+			 * will rebuild the search array - however, the redraw might be disabled by the user)
+			 */
+			var iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );
+			oSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(
+				oSettings, 
+				_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )
+			);
+			
+			/* Perform pre-draw actions */
+			if ( bAction === undefined || bAction )
+			{
+				_fnAdjustColumnSizing( oSettings );
+			}
+			
+			/* Redraw the table */
+			if ( bRedraw === undefined || bRedraw )
+			{
+				_fnReDraw( oSettings );
+			}
+			return 0;
+		};
+		
+		
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+		 * to ensure compatibility.
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+		 *    formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+		 *    version, or false if this version of DataTales is not suitable
+		 *  @method
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		this.fnVersionCheck = DataTable.ext.fnVersionCheck;
+		
+		
+		/*
+		 * This is really a good bit rubbish this method of exposing the internal methods
+		 * publicly... - To be fixed in 2.0 using methods on the prototype
+		 */
+		
+		
+		/**
+		 * Create a wrapper function for exporting an internal functions to an external API.
+		 *  @param {string} sFunc API function name
+		 *  @returns {function} wrapped function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnExternApiFunc (sFunc)
+		{
+			return function() {
+				var aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( 
+					Array.prototype.slice.call(arguments) );
+				return DataTable.ext.oApi[sFunc].apply( this, aArgs );
+			};
+		}
+		
+		
+		/**
+		 * Reference to internal functions for use by plug-in developers. Note that these
+		 * methods are references to internal functions and are considered to be private.
+		 * If you use these methods, be aware that they are liable to change between versions
+		 * (check the upgrade notes).
+		 *  @namespace
+		 */
+		this.oApi = {
+			"_fnExternApiFunc": _fnExternApiFunc,
+			"_fnInitialise": _fnInitialise,
+			"_fnInitComplete": _fnInitComplete,
+			"_fnLanguageCompat": _fnLanguageCompat,
+			"_fnAddColumn": _fnAddColumn,
+			"_fnColumnOptions": _fnColumnOptions,
+			"_fnAddData": _fnAddData,
+			"_fnCreateTr": _fnCreateTr,
+			"_fnGatherData": _fnGatherData,
+			"_fnBuildHead": _fnBuildHead,
+			"_fnDrawHead": _fnDrawHead,
+			"_fnDraw": _fnDraw,
+			"_fnReDraw": _fnReDraw,
+			"_fnAjaxUpdate": _fnAjaxUpdate,
+			"_fnAjaxParameters": _fnAjaxParameters,
+			"_fnAjaxUpdateDraw": _fnAjaxUpdateDraw,
+			"_fnServerParams": _fnServerParams,
+			"_fnAddOptionsHtml": _fnAddOptionsHtml,
+			"_fnFeatureHtmlTable": _fnFeatureHtmlTable,
+			"_fnScrollDraw": _fnScrollDraw,
+			"_fnAdjustColumnSizing": _fnAdjustColumnSizing,
+			"_fnFeatureHtmlFilter": _fnFeatureHtmlFilter,
+			"_fnFilterComplete": _fnFilterComplete,
+			"_fnFilterCustom": _fnFilterCustom,
+			"_fnFilterColumn": _fnFilterColumn,
+			"_fnFilter": _fnFilter,
+			"_fnBuildSearchArray": _fnBuildSearchArray,
+			"_fnBuildSearchRow": _fnBuildSearchRow,
+			"_fnFilterCreateSearch": _fnFilterCreateSearch,
+			"_fnDataToSearch": _fnDataToSearch,
+			"_fnSort": _fnSort,
+			"_fnSortAttachListener": _fnSortAttachListener,
+			"_fnSortingClasses": _fnSortingClasses,
+			"_fnFeatureHtmlPaginate": _fnFeatureHtmlPaginate,
+			"_fnPageChange": _fnPageChange,
+			"_fnFeatureHtmlInfo": _fnFeatureHtmlInfo,
+			"_fnUpdateInfo": _fnUpdateInfo,
+			"_fnFeatureHtmlLength": _fnFeatureHtmlLength,
+			"_fnFeatureHtmlProcessing": _fnFeatureHtmlProcessing,
+			"_fnProcessingDisplay": _fnProcessingDisplay,
+			"_fnVisibleToColumnIndex": _fnVisibleToColumnIndex,
+			"_fnColumnIndexToVisible": _fnColumnIndexToVisible,
+			"_fnNodeToDataIndex": _fnNodeToDataIndex,
+			"_fnVisbleColumns": _fnVisbleColumns,
+			"_fnCalculateEnd": _fnCalculateEnd,
+			"_fnConvertToWidth": _fnConvertToWidth,
+			"_fnCalculateColumnWidths": _fnCalculateColumnWidths,
+			"_fnScrollingWidthAdjust": _fnScrollingWidthAdjust,
+			"_fnGetWidestNode": _fnGetWidestNode,
+			"_fnGetMaxLenString": _fnGetMaxLenString,
+			"_fnStringToCss": _fnStringToCss,
+			"_fnDetectType": _fnDetectType,
+			"_fnSettingsFromNode": _fnSettingsFromNode,
+			"_fnGetDataMaster": _fnGetDataMaster,
+			"_fnGetTrNodes": _fnGetTrNodes,
+			"_fnGetTdNodes": _fnGetTdNodes,
+			"_fnEscapeRegex": _fnEscapeRegex,
+			"_fnDeleteIndex": _fnDeleteIndex,
+			"_fnReOrderIndex": _fnReOrderIndex,
+			"_fnColumnOrdering": _fnColumnOrdering,
+			"_fnLog": _fnLog,
+			"_fnClearTable": _fnClearTable,
+			"_fnSaveState": _fnSaveState,
+			"_fnLoadState": _fnLoadState,
+			"_fnCreateCookie": _fnCreateCookie,
+			"_fnReadCookie": _fnReadCookie,
+			"_fnDetectHeader": _fnDetectHeader,
+			"_fnGetUniqueThs": _fnGetUniqueThs,
+			"_fnScrollBarWidth": _fnScrollBarWidth,
+			"_fnApplyToChildren": _fnApplyToChildren,
+			"_fnMap": _fnMap,
+			"_fnGetRowData": _fnGetRowData,
+			"_fnGetCellData": _fnGetCellData,
+			"_fnSetCellData": _fnSetCellData,
+			"_fnGetObjectDataFn": _fnGetObjectDataFn,
+			"_fnSetObjectDataFn": _fnSetObjectDataFn,
+			"_fnApplyColumnDefs": _fnApplyColumnDefs,
+			"_fnBindAction": _fnBindAction,
+			"_fnExtend": _fnExtend,
+			"_fnCallbackReg": _fnCallbackReg,
+			"_fnCallbackFire": _fnCallbackFire,
+			"_fnJsonString": _fnJsonString,
+			"_fnRender": _fnRender,
+			"_fnNodeToColumnIndex": _fnNodeToColumnIndex,
+			"_fnInfoMacros": _fnInfoMacros,
+			"_fnBrowserDetect": _fnBrowserDetect,
+			"_fnGetColumns": _fnGetColumns
+		};
+		
+		$.extend( DataTable.ext.oApi, this.oApi );
+		
+		for ( var sFunc in DataTable.ext.oApi )
+		{
+			if ( sFunc )
+			{
+				this[sFunc] = _fnExternApiFunc(sFunc);
+			}
+		}
+		
+		
+		var _that = this;
+		this.each(function() {
+			var i=0, iLen, j, jLen, k, kLen;
+			var sId = this.getAttribute( 'id' );
+			var bInitHandedOff = false;
+			var bUsePassedData = false;
+			
+			
+			/* Sanity check */
+			if ( this.nodeName.toLowerCase() != 'table' )
+			{
+				_fnLog( null, 0, "Attempted to initialise DataTables on a node which is not a "+
+					"table: "+this.nodeName );
+				return;
+			}
+			
+			/* Check to see if we are re-initialising a table */
+			for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
+			{
+				/* Base check on table node */
+				if ( DataTable.settings[i].nTable == this )
+				{
+					if ( oInit === undefined || oInit.bRetrieve )
+					{
+						return DataTable.settings[i].oInstance;
+					}
+					else if ( oInit.bDestroy )
+					{
+						DataTable.settings[i].oInstance.fnDestroy();
+						break;
+					}
+					else
+					{
+						_fnLog( DataTable.settings[i], 0, "Cannot reinitialise DataTable.\n\n"+
+							"To retrieve the DataTables object for this table, pass no arguments or see "+
+							"the docs for bRetrieve and bDestroy" );
+						return;
+					}
+				}
+				
+				/* If the element we are initialising has the same ID as a table which was previously
+				 * initialised, but the table nodes don't match (from before) then we destroy the old
+				 * instance by simply deleting it. This is under the assumption that the table has been
+				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+				 */
+				if ( DataTable.settings[i].sTableId == this.id )
+				{
+					DataTable.settings.splice( i, 1 );
+					break;
+				}
+			}
+			
+			/* Ensure the table has an ID - required for accessibility */
+			if ( sId === null || sId === "" )
+			{
+				sId = "DataTables_Table_"+(DataTable.ext._oExternConfig.iNextUnique++);
+				this.id = sId;
+			}
+			
+			/* Create the settings object for this table and set some of the default parameters */
+			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+				"nTable":        this,
+				"oApi":          _that.oApi,
+				"oInit":         oInit,
+				"sDestroyWidth": $(this).width(),
+				"sInstance":     sId,
+				"sTableId":      sId
+			} );
+			DataTable.settings.push( oSettings );
+			
+			// Need to add the instance after the instance after the settings object has been added
+			// to the settings array, so we can self reference the table instance if more than one
+			oSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();
+			
+			/* Setting up the initialisation object */
+			if ( !oInit )
+			{
+				oInit = {};
+			}
+			
+			// Backwards compatibility, before we apply all the defaults
+			if ( oInit.oLanguage )
+			{
+				_fnLanguageCompat( oInit.oLanguage );
+			}
+			
+			oInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );
+			
+			// Map the initialisation options onto the settings object
+			_fnMap( oSettings.oFeatures, oInit, "bPaginate" );
+			_fnMap( oSettings.oFeatures, oInit, "bLengthChange" );
+			_fnMap( oSettings.oFeatures, oInit, "bFilter" );
+			_fnMap( oSettings.oFeatures, oInit, "bSort" );
+			_fnMap( oSettings.oFeatures, oInit, "bInfo" );
+			_fnMap( oSettings.oFeatures, oInit, "bProcessing" );
+			_fnMap( oSettings.oFeatures, oInit, "bAutoWidth" );
+			_fnMap( oSettings.oFeatures, oInit, "bSortClasses" );
+			_fnMap( oSettings.oFeatures, oInit, "bServerSide" );
+			_fnMap( oSettings.oFeatures, oInit, "bDeferRender" );
+			_fnMap( oSettings.oScroll, oInit, "sScrollX", "sX" );
+			_fnMap( oSettings.oScroll, oInit, "sScrollXInner", "sXInner" );
+			_fnMap( oSettings.oScroll, oInit, "sScrollY", "sY" );
+			_fnMap( oSettings.oScroll, oInit, "bScrollCollapse", "bCollapse" );
+			_fnMap( oSettings.oScroll, oInit, "bScrollInfinite", "bInfinite" );
+			_fnMap( oSettings.oScroll, oInit, "iScrollLoadGap", "iLoadGap" );
+			_fnMap( oSettings.oScroll, oInit, "bScrollAutoCss", "bAutoCss" );
+			_fnMap( oSettings, oInit, "asStripeClasses" );
+			_fnMap( oSettings, oInit, "asStripClasses", "asStripeClasses" ); // legacy
+			_fnMap( oSettings, oInit, "fnServerData" );
+			_fnMap( oSettings, oInit, "fnFormatNumber" );
+			_fnMap( oSettings, oInit, "sServerMethod" );
+			_fnMap( oSettings, oInit, "aaSorting" );
+			_fnMap( oSettings, oInit, "aaSortingFixed" );
+			_fnMap( oSettings, oInit, "aLengthMenu" );
+			_fnMap( oSettings, oInit, "sPaginationType" );
+			_fnMap( oSettings, oInit, "sAjaxSource" );
+			_fnMap( oSettings, oInit, "sAjaxDataProp" );
+			_fnMap( oSettings, oInit, "iCookieDuration" );
+			_fnMap( oSettings, oInit, "sCookiePrefix" );
+			_fnMap( oSettings, oInit, "sDom" );
+			_fnMap( oSettings, oInit, "bSortCellsTop" );
+			_fnMap( oSettings, oInit, "iTabIndex" );
+			_fnMap( oSettings, oInit, "oSearch", "oPreviousSearch" );
+			_fnMap( oSettings, oInit, "aoSearchCols", "aoPreSearchCols" );
+			_fnMap( oSettings, oInit, "iDisplayLength", "_iDisplayLength" );
+			_fnMap( oSettings, oInit, "bJQueryUI", "bJUI" );
+			_fnMap( oSettings, oInit, "fnCookieCallback" );
+			_fnMap( oSettings, oInit, "fnStateLoad" );
+			_fnMap( oSettings, oInit, "fnStateSave" );
+			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+			
+			/* Callback functions which are array driven */
+			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );
+			_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );
+			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );
+			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );
+			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );
+			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );
+			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );
+			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );
+			
+			if ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&
+				   oSettings.oFeatures.bSortClasses )
+			{
+				/* Enable sort classes for server-side processing. Safe to do it here, since server-side
+				 * processing must be enabled by the developer
+				 */
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );
+			}
+			else if ( oSettings.oFeatures.bDeferRender )
+			{
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );
+			}
+			
+			if ( oInit.bJQueryUI )
+			{
+				/* Use the JUI classes object for display. You could clone the oStdClasses object if 
+				 * you want to have multiple tables with multiple independent classes 
+				 */
+				$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );
+				
+				if ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === "lfrtip" )
+				{
+					/* Set the DOM to use a layout suitable for jQuery UI's theming */
+					oSettings.sDom = '<"H"lfr>t<"F"ip>';
+				}
+			}
+			else
+			{
+				$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );
+			}
+			$(this).addClass( oSettings.oClasses.sTable );
+			
+			/* Calculate the scroll bar width and cache it for use later on */
+			if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+			{
+				oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
+			}
+			
+			if ( oSettings.iInitDisplayStart === undefined )
+			{
+				/* Display start point, taking into account the save saving */
+				oSettings.iInitDisplayStart = oInit.iDisplayStart;
+				oSettings._iDisplayStart = oInit.iDisplayStart;
+			}
+			
+			/* Must be done after everything which can be overridden by a cookie! */
+			if ( oInit.bStateSave )
+			{
+				oSettings.oFeatures.bStateSave = true;
+				_fnLoadState( oSettings, oInit );
+				_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+			}
+			
+			if ( oInit.iDeferLoading !== null )
+			{
+				oSettings.bDeferLoading = true;
+				var tmp = $.isArray( oInit.iDeferLoading );
+				oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+				oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+			}
+			
+			if ( oInit.aaData !== null )
+			{
+				bUsePassedData = true;
+			}
+			
+			/* Language definitions */
+			if ( oInit.oLanguage.sUrl !== "" )
+			{
+				/* Get the language definitions from a file - because this Ajax call makes the language
+				 * get async to the remainder of this function we use bInitHandedOff to indicate that 
+				 * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+				 */
+				oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
+				$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {
+					_fnLanguageCompat( json );
+					$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );
+					_fnInitialise( oSettings );
+				} );
+				bInitHandedOff = true;
+			}
+			else
+			{
+				$.extend( true, oSettings.oLanguage, oInit.oLanguage );
+			}
+			
+			
+			/*
+			 * Stripes
+			 */
+			if ( oInit.asStripeClasses === null )
+			{
+				oSettings.asStripeClasses =[
+					oSettings.oClasses.sStripeOdd,
+					oSettings.oClasses.sStripeEven
+				];
+			}
+			
+			/* Remove row stripe classes if they are already on the table row */
+			iLen=oSettings.asStripeClasses.length;
+			oSettings.asDestroyStripes = [];
+			if (iLen)
+			{
+				var bStripeRemove = false;
+				var anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');
+				for ( i=0 ; i<iLen ; i++ )
+				{
+					if ( anRows.hasClass( oSettings.asStripeClasses[i] ) )
+					{
+						bStripeRemove = true;
+						
+						/* Store the classes which we are about to remove so they can be re-added on destroy */
+						oSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );
+					}
+				}
+				
+				if ( bStripeRemove )
+				{
+					anRows.removeClass( oSettings.asStripeClasses.join(' ') );
+				}
+			}
+			
+			/*
+			 * Columns
+			 * See if we should load columns automatically or use defined ones
+			 */
+			var anThs = [];
+			var aoColumnsInit;
+			var nThead = this.getElementsByTagName('thead');
+			if ( nThead.length !== 0 )
+			{
+				_fnDetectHeader( oSettings.aoHeader, nThead[0] );
+				anThs = _fnGetUniqueThs( oSettings );
+			}
+			
+			/* If not given a column array, generate one with nulls */
+			if ( oInit.aoColumns === null )
+			{
+				aoColumnsInit = [];
+				for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+				{
+					aoColumnsInit.push( null );
+				}
+			}
+			else
+			{
+				aoColumnsInit = oInit.aoColumns;
+			}
+			
+			/* Add the columns */
+			for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+			{
+				/* Short cut - use the loop to check if we have column visibility state to restore */
+				if ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )
+				{
+					if ( aoColumnsInit[i] === null )
+					{
+						aoColumnsInit[i] = {};
+					}
+					aoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;
+				}
+				
+				_fnAddColumn( oSettings, anThs ? anThs[i] : null );
+			}
+			
+			/* Apply the column definitions */
+			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+				_fnColumnOptions( oSettings, iCol, oDef );
+			} );
+			
+			
+			/*
+			 * Sorting
+			 * Check the aaSorting array
+			 */
+			for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+			{
+				if ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )
+				{
+					oSettings.aaSorting[i][0] = 0;
+				}
+				var oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];
+				
+				/* Add a default sorting index */
+				if ( oSettings.aaSorting[i][2] === undefined )
+				{
+					oSettings.aaSorting[i][2] = 0;
+				}
+				
+				/* If aaSorting is not defined, then we use the first indicator in asSorting */
+				if ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )
+				{
+					oSettings.aaSorting[i][1] = oColumn.asSorting[0];
+				}
+				
+				/* Set the current sorting index based on aoColumns.asSorting */
+				for ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )
+				{
+					if ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )
+					{
+						oSettings.aaSorting[i][2] = j;
+						break;
+					}
+				}
+			}
+				
+			/* Do a first pass on the sorting classes (allows any size changes to be taken into
+			 * account, and also will apply sorting disabled classes if disabled
+			 */
+			_fnSortingClasses( oSettings );
+			
+			
+			/*
+			 * Final init
+			 * Cache the header, body and footer as required, creating them if needed
+			 */
+			
+			/* Browser support detection */
+			_fnBrowserDetect( oSettings );
+			
+			// Work around for Webkit bug 83867 - store the caption-side before removing from doc
+			var captions = $(this).children('caption').each( function () {
+				this._captionSide = $(this).css('caption-side');
+			} );
+			
+			var thead = $(this).children('thead');
+			if ( thead.length === 0 )
+			{
+				thead = [ document.createElement( 'thead' ) ];
+				this.appendChild( thead[0] );
+			}
+			oSettings.nTHead = thead[0];
+			
+			var tbody = $(this).children('tbody');
+			if ( tbody.length === 0 )
+			{
+				tbody = [ document.createElement( 'tbody' ) ];
+				this.appendChild( tbody[0] );
+			}
+			oSettings.nTBody = tbody[0];
+			oSettings.nTBody.setAttribute( "role", "alert" );
+			oSettings.nTBody.setAttribute( "aria-live", "polite" );
+			oSettings.nTBody.setAttribute( "aria-relevant", "all" );
+			
+			var tfoot = $(this).children('tfoot');
+			if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+			{
+				// If we are a scrolling table, and no footer has been given, then we need to create
+				// a tfoot element for the caption element to be appended to
+				tfoot = [ document.createElement( 'tfoot' ) ];
+				this.appendChild( tfoot[0] );
+			}
+			
+			if ( tfoot.length > 0 )
+			{
+				oSettings.nTFoot = tfoot[0];
+				_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+			}
+			
+			/* Check if there is data passing into the constructor */
+			if ( bUsePassedData )
+			{
+				for ( i=0 ; i<oInit.aaData.length ; i++ )
+				{
+					_fnAddData( oSettings, oInit.aaData[ i ] );
+				}
+			}
+			else
+			{
+				/* Grab the data from the page */
+				_fnGatherData( oSettings );
+			}
+			
+			/* Copy the data index array */
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			
+			/* Initialisation complete - table can be drawn */
+			oSettings.bInitialised = true;
+			
+			/* Check if we need to initialise the table (it might not have been handed off to the
+			 * language processor)
+			 */
+			if ( bInitHandedOff === false )
+			{
+				_fnInitialise( oSettings );
+			}
+		} );
+		_that = null;
+		return this;
+	};
+
+	
+	
+	/**
+	 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+	 * to ensure compatibility.
+	 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+	 *    formats "X" and "X.Y" are also acceptable.
+	 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+	 *    version, or false if this version of DataTales is not suitable
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );
+	 */
+	DataTable.fnVersionCheck = function( sVersion )
+	{
+		/* This is cheap, but effective */
+		var fnZPad = function (Zpad, count)
+		{
+			while(Zpad.length < count) {
+				Zpad += '0';
+			}
+			return Zpad;
+		};
+		var aThis = DataTable.ext.sVersion.split('.');
+		var aThat = sVersion.split('.');
+		var sThis = '', sThat = '';
+		
+		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ )
+		{
+			sThis += fnZPad( aThis[i], 3 );
+			sThat += fnZPad( aThat[i], 3 );
+		}
+		
+		return parseInt(sThis, 10) >= parseInt(sThat, 10);
+	};
+	
+	
+	/**
+	 * Check if a TABLE node is a DataTable table already or not.
+	 *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other
+	 *    node types can be passed in, but will always return false).
+	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    var ex = document.getElementById('example');
+	 *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
+	 *      $(ex).dataTable();
+	 *    }
+	 */
+	DataTable.fnIsDataTable = function ( nTable )
+	{
+		var o = DataTable.settings;
+	
+		for ( var i=0 ; i<o.length ; i++ )
+		{
+			if ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )
+			{
+				return true;
+			}
+		}
+	
+		return false;
+	};
+	
+	
+	/**
+	 * Get all DataTable tables that have been initialised - optionally you can select to
+	 * get only currently visible tables.
+	 *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or 
+	 *    visible tables only.
+	 *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    var table = $.fn.dataTable.fnTables(true);
+	 *    if ( table.length > 0 ) {
+	 *      $(table).dataTable().fnAdjustColumnSizing();
+	 *    }
+	 */
+	DataTable.fnTables = function ( bVisible )
+	{
+		var out = [];
+	
+		jQuery.each( DataTable.settings, function (i, o) {
+			if ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )
+			{
+				out.push( o.nTable );
+			}
+		} );
+	
+		return out;
+	};
+	
+
+	/**
+	 * Version string for plug-ins to check compatibility. Allowed format is
+	 * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+	 * e are optional
+	 *  @member
+	 *  @type string
+	 *  @default Version number
+	 */
+	DataTable.version = "1.9.4";
+
+	/**
+	 * Private data store, containing all of the settings objects that are created for the
+	 * tables on a given page.
+	 * 
+	 * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> 
+	 * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.
+	 *  @member
+	 *  @type array
+	 *  @default []
+	 *  @private
+	 */
+	DataTable.settings = [];
+
+	/**
+	 * Object models container, for the various models that DataTables has available
+	 * to it. These models define the objects that are used to hold the active state 
+	 * and configuration of the table.
+	 *  @namespace
+	 */
+	DataTable.models = {};
+	
+	
+	/**
+	 * DataTables extension options and plug-ins. This namespace acts as a collection "area"
+	 * for plug-ins that can be used to extend the default DataTables behaviour - indeed many
+	 * of the build in methods use this method to provide their own capabilities (sorting methods
+	 * for example).
+	 * 
+	 * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed
+	 * and modified by plug-ins.
+	 *  @namespace
+	 */
+	DataTable.models.ext = {
+		/**
+		 * Plug-in filtering functions - this method of filtering is complimentary to the default
+		 * type based filtering, and a lot more comprehensive as it allows you complete control
+		 * over the filtering logic. Each element in this array is a function (parameters
+		 * described below) that is called for every row in the table, and your logic decides if
+		 * it should be included in the filtered data set or not.
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *         <li>{array|object} Data for the row to be processed (same as the original format
+		 *           that was passed in as the data source, or an array from a DOM data source</li>
+		 *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can
+		 *           be useful to retrieve the TR element if you need DOM interaction.</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // The following example shows custom filtering being applied to the fourth column (i.e.
+		 *    // the aData[3] index) based on two input values from the end-user, matching the data in 
+		 *    // a certain range.
+		 *    $.fn.dataTableExt.afnFiltering.push(
+		 *      function( oSettings, aData, iDataIndex ) {
+		 *        var iMin = document.getElementById('min').value * 1;
+		 *        var iMax = document.getElementById('max').value * 1;
+		 *        var iVersion = aData[3] == "-" ? 0 : aData[3]*1;
+		 *        if ( iMin == "" && iMax == "" ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin == "" && iVersion < iMax ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin < iVersion && "" == iMax ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin < iVersion && iVersion < iMax ) {
+		 *          return true;
+		 *        }
+		 *        return false;
+		 *      }
+		 *    );
+		 */
+		"afnFiltering": [],
+	
+	
+		/**
+		 * Plug-in sorting functions - this method of sorting is complimentary to the default type
+		 * based sorting that DataTables does automatically, allowing much greater control over the
+		 * the data that is being used to sort a column. This is useful if you want to do sorting
+		 * based on live data (for example the contents of an 'input' element) rather than just the
+		 * static string that DataTables knows of. The way these plug-ins work is that you create
+		 * an array of the values you wish to be sorted for the column in question and then return
+		 * that array. Which pre-sorting function is run here depends on the sSortDataType parameter
+		 * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort 
+		 * data.
+		 *   <ul>
+	     *     <li>
+	     *       Function input parameters:
+	     *       <ul>
+		 *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+	     *         <li>{int} Target column index</li>
+	     *       </ul>
+	     *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{array} Data for the column to be sorted upon</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  
+		 * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+		 * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+		 * used as a function will give you a 'type' (sorting, filtering etc) that you can use to 
+		 * prepare the data as required for the different types. As such, this method is deprecated.
+		 *  @type array
+		 *  @default []
+		 *  @deprecated
+		 *
+		 *  @example
+		 *    // Updating the cached sorting information with user entered values in HTML input elements
+		 *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
+		 *    {
+		 *      var aData = [];
+		 *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
+		 *        aData.push( this.value );
+		 *      } );
+		 *      return aData;
+		 *    }
+		 */
+		"afnSortData": [],
+	
+	
+		/**
+		 * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
+		 * available to DataTables. These feature plug-ins are accessible through the sDom initialisation
+		 * option. As such, each feature plug-in must describe a function that is used to initialise
+		 * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
+		 * of the feature (sFeature). Thus the objects attached to this method must provide:
+		 *   <ul>
+		 *     <li>{function} fnInit Initialisation of the plug-in
+		 *       <ul>
+	     *         <li>
+	     *           Function input parameters:
+	     *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+	     *           </ul>
+	     *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>{node|null} The element which contains your feature. Note that the return
+		 *                may also be void if your plug-in does not require to inject any DOM elements 
+		 *                into DataTables control (sDom) - for example this might be useful when 
+		 *                developing a plug-in which allows table control via keyboard entry.</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </li>
+		 *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
+		 *     <li>{string} sFeature Feature name</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 * 
+		 *  @example
+		 *    // How TableTools initialises itself.
+		 *    $.fn.dataTableExt.aoFeatures.push( {
+		 *      "fnInit": function( oSettings ) {
+		 *        return new TableTools( { "oDTSettings": oSettings } );
+		 *      },
+		 *      "cFeature": "T",
+		 *      "sFeature": "TableTools"
+		 *    } );
+		 */
+		"aoFeatures": [],
+	
+	
+		/**
+		 * Type detection plug-in functions - DataTables utilises types to define how sorting and
+		 * filtering behave, and types can be either  be defined by the developer (sType for the
+		 * column) or they can be automatically detected by the methods in this array. The functions
+		 * defined in the array are quite simple, taking a single parameter (the data to analyse) 
+		 * and returning the type if it is a known type, or null otherwise.
+		 *   <ul>
+	     *     <li>
+	     *       Function input parameters:
+	     *       <ul>
+		 *         <li>{*} Data from the column cell to be analysed</li>
+	     *       </ul>
+	     *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{string|null} Data type detected, or null if unknown (and thus pass it
+		 *           on to the other type detection functions.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 *  
+		 *  @example
+		 *    // Currency type detection plug-in:
+		 *    jQuery.fn.dataTableExt.aTypes.push(
+		 *      function ( sData ) {
+		 *        var sValidChars = "0123456789.-";
+		 *        var Char;
+		 *        
+		 *        // Check the numeric part
+		 *        for ( i=1 ; i<sData.length ; i++ ) {
+		 *          Char = sData.charAt(i); 
+		 *          if (sValidChars.indexOf(Char) == -1) {
+		 *            return null;
+		 *          }
+		 *        }
+		 *        
+		 *        // Check prefixed by currency
+		 *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {
+		 *          return 'currency';
+		 *        }
+		 *        return null;
+		 *      }
+		 *    );
+		 */
+		"aTypes": [],
+	
+	
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, 
+		 * in order to ensure compatibility.
+		 *  @type function
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note 
+		 *    that the formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the 
+		 *    required version, or false if this version of DataTales is not suitable
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		"fnVersionCheck": DataTable.fnVersionCheck,
+	
+	
+		/**
+		 * Index for what 'this' index API functions should use
+		 *  @type int
+		 *  @default 0
+		 */
+		"iApiIndex": 0,
+	
+	
+		/**
+		 * Pre-processing of filtering data plug-ins - When you assign the sType for a column
+		 * (or have it automatically detected for you by DataTables or a type detection plug-in), 
+		 * you will typically be using this for custom sorting, but it can also be used to provide 
+		 * custom filtering by allowing you to pre-processing the data and returning the data in
+		 * the format that should be filtered upon. This is done by adding functions this object 
+		 * with a parameter name which matches the sType for that target column. This is the
+		 * corollary of <i>afnSortData</i> for filtering data.
+		 *   <ul>
+	     *     <li>
+	     *       Function input parameters:
+	     *       <ul>
+		 *         <li>{*} Data from the column cell to be prepared for filtering</li>
+	     *       </ul>
+	     *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{string|null} Formatted string that will be used for the filtering.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 * 
+		 * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+		 * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+		 * used as a function will give you a 'type' (sorting, filtering etc) that you can use to 
+		 * prepare the data as required for the different types. As such, this method is deprecated.
+		 *  @type object
+		 *  @default {}
+		 *  @deprecated
+		 *
+		 *  @example
+		 *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {
+		 *      return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
+		 *    }
+		 */
+		"ofnSearch": {},
+	
+	
+		/**
+		 * Container for all private functions in DataTables so they can be exposed externally
+		 *  @type object
+		 *  @default {}
+		 */
+		"oApi": {},
+	
+	
+		/**
+		 * Storage for the various classes that DataTables uses
+		 *  @type object
+		 *  @default {}
+		 */
+		"oStdClasses": {},
+		
+	
+		/**
+		 * Storage for the various classes that DataTables uses - jQuery UI suitable
+		 *  @type object
+		 *  @default {}
+		 */
+		"oJUIClasses": {},
+	
+	
+		/**
+		 * Pagination plug-in methods - The style and controls of the pagination can significantly 
+		 * impact on how the end user interacts with the data in your table, and DataTables allows 
+		 * the addition of pagination controls by extending this object, which can then be enabled
+		 * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
+		 * is added is an object (the property name of which is what <i>sPaginationType</i> refers
+		 * to) that has two properties, both methods that are used by DataTables to update the
+		 * control's state.
+		 *   <ul>
+		 *     <li>
+		 *       fnInit -  Initialisation of the paging controls. Called only during initialisation 
+		 *         of the table. It is expected that this function will add the required DOM elements 
+		 *         to the page for the paging controls to work. The element pointer 
+		 *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging 
+		 *         controls (note that this is a 2D array to allow for multiple instances of each 
+		 *         DataTables DOM element). It is suggested that you add the controls to this element 
+		 *         as children
+		 *       <ul>
+	     *         <li>
+	     *           Function input parameters:
+	     *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *             <li>{node} Container into which the pagination controls must be inserted</li>
+		 *             <li>{function} Draw callback function - whenever the controls cause a page
+		 *               change, this method must be called to redraw the table.</li>
+	     *           </ul>
+	     *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>No return required</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </il>
+		 *     <li>
+		 *       fnInit -  This function is called whenever the paging status of the table changes and is
+		 *         typically used to update classes and/or text of the paging controls to reflex the new 
+		 *         status.
+		 *       <ul>
+	     *         <li>
+	     *           Function input parameters:
+	     *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *             <li>{function} Draw callback function - in case you need to redraw the table again
+		 *               or attach new event listeners</li>
+	     *           </ul>
+	     *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>No return required</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    $.fn.dataTableExt.oPagination.four_button = {
+		 *      "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
+		 *        nFirst = document.createElement( 'span' );
+		 *        nPrevious = document.createElement( 'span' );
+		 *        nNext = document.createElement( 'span' );
+		 *        nLast = document.createElement( 'span' );
+		 *        
+		 *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
+		 *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
+		 *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
+		 *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
+		 *        
+		 *        nFirst.className = "paginate_button first";
+		 *        nPrevious.className = "paginate_button previous";
+		 *        nNext.className="paginate_button next";
+		 *        nLast.className = "paginate_button last";
+		 *        
+		 *        nPaging.appendChild( nFirst );
+		 *        nPaging.appendChild( nPrevious );
+		 *        nPaging.appendChild( nNext );
+		 *        nPaging.appendChild( nLast );
+		 *        
+		 *        $(nFirst).click( function () {
+		 *          oSettings.oApi._fnPageChange( oSettings, "first" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nPrevious).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "previous" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nNext).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "next" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nLast).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "last" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nFirst).bind( 'selectstart', function () { return false; } );
+		 *        $(nPrevious).bind( 'selectstart', function () { return false; } );
+		 *        $(nNext).bind( 'selectstart', function () { return false; } );
+		 *        $(nLast).bind( 'selectstart', function () { return false; } );
+		 *      },
+		 *      
+		 *      "fnUpdate": function ( oSettings, fnCallbackDraw ) {
+		 *        if ( !oSettings.aanFeatures.p ) {
+		 *          return;
+		 *        }
+		 *        
+		 *        // Loop over each instance of the pager
+		 *        var an = oSettings.aanFeatures.p;
+		 *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {
+		 *          var buttons = an[i].getElementsByTagName('span');
+		 *          if ( oSettings._iDisplayStart === 0 ) {
+		 *            buttons[0].className = "paginate_disabled_previous";
+		 *            buttons[1].className = "paginate_disabled_previous";
+		 *          }
+		 *          else {
+		 *            buttons[0].className = "paginate_enabled_previous";
+		 *            buttons[1].className = "paginate_enabled_previous";
+		 *          }
+		 *          
+		 *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {
+		 *            buttons[2].className = "paginate_disabled_next";
+		 *            buttons[3].className = "paginate_disabled_next";
+		 *          }
+		 *          else {
+		 *            buttons[2].className = "paginate_enabled_next";
+		 *            buttons[3].className = "paginate_enabled_next";
+		 *          }
+		 *        }
+		 *      }
+		 *    };
+		 */
+		"oPagination": {},
+	
+	
+		/**
+		 * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
+		 * data column (you can add your own type detection functions, or override automatic 
+		 * detection using sType). With this specific type given to the column, DataTables will 
+		 * apply the required sort from the functions in the object. Each sort type must provide
+		 * two mandatory methods, one each for ascending and descending sorting, and can optionally
+		 * provide a pre-formatting method that will help speed up sorting by allowing DataTables
+		 * to pre-format the sort data only once (rather than every time the actual sort functions
+		 * are run). The two sorting functions are typical Javascript sort methods:
+		 *   <ul>
+	     *     <li>
+	     *       Function input parameters:
+	     *       <ul>
+		 *         <li>{*} Data to compare to the second parameter</li>
+		 *         <li>{*} Data to compare to the first parameter</li>
+	     *       </ul>
+	     *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than
+		 *           the second parameter, ===0 if the two parameters are equal and >0 if
+		 *           the first parameter should be sorted height than the second parameter.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    // Case-sensitive string sorting, with no pre-formatting method
+		 *    $.extend( $.fn.dataTableExt.oSort, {
+		 *      "string-case-asc": function(x,y) {
+		 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		 *      },
+		 *      "string-case-desc": function(x,y) {
+		 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		 *      }
+		 *    } );
+		 *
+		 *  @example
+		 *    // Case-insensitive string sorting, with pre-formatting
+		 *    $.extend( $.fn.dataTableExt.oSort, {
+		 *      "string-pre": function(x) {
+		 *        return x.toLowerCase();
+		 *      },
+		 *      "string-asc": function(x,y) {
+		 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		 *      },
+		 *      "string-desc": function(x,y) {
+		 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		 *      }
+		 *    } );
+		 */
+		"oSort": {},
+	
+	
+		/**
+		 * Version string for plug-ins to check compatibility. Allowed format is
+		 * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+		 * e are optional
+		 *  @type string
+		 *  @default Version number
+		 */
+		"sVersion": DataTable.version,
+	
+	
+		/**
+		 * How should DataTables report an error. Can take the value 'alert' or 'throw'
+		 *  @type string
+		 *  @default alert
+		 */
+		"sErrMode": "alert",
+	
+	
+		/**
+		 * Store information for DataTables to access globally about other instances
+		 *  @namespace
+		 *  @private
+		 */
+		"_oExternConfig": {
+			/* int:iNextUnique - next unique number for an instance */
+			"iNextUnique": 0
+		}
+	};
+	
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * search information for the global filter and individual column filters.
+	 *  @namespace
+	 */
+	DataTable.models.oSearch = {
+		/**
+		 * Flag to indicate if the filtering should be case insensitive or not
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bCaseInsensitive": true,
+	
+		/**
+		 * Applied search term
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sSearch": "",
+	
+		/**
+		 * Flag to indicate if the search term should be interpreted as a
+		 * regular expression (true) or not (false) and therefore and special
+		 * regex characters escaped.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bRegex": false,
+	
+		/**
+		 * Flag to indicate if DataTables is to use its smart filtering or not.
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bSmart": true
+	};
+	
+	
+	
+	
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * each individual row. This is the object format used for the settings 
+	 * aoData array.
+	 *  @namespace
+	 */
+	DataTable.models.oRow = {
+		/**
+		 * TR element for the row
+		 *  @type node
+		 *  @default null
+		 */
+		"nTr": null,
+	
+		/**
+		 * Data object from the original data source for the row. This is either
+		 * an array if using the traditional form of DataTables, or an object if
+		 * using mData options. The exact type will depend on the passed in
+		 * data from the data source, or will be an array if using DOM a data 
+		 * source.
+		 *  @type array|object
+		 *  @default []
+		 */
+		"_aData": [],
+	
+		/**
+		 * Sorting data cache - this array is ostensibly the same length as the
+		 * number of columns (although each index is generated only as it is 
+		 * needed), and holds the data that is used for sorting each column in the
+		 * row. We do this cache generation at the start of the sort in order that
+		 * the formatting of the sort data need be done only once for each cell
+		 * per sort. This array should not be read from or written to by anything
+		 * other than the master sorting methods.
+		 *  @type array
+		 *  @default []
+		 *  @private
+		 */
+		"_aSortData": [],
+	
+		/**
+		 * Array of TD elements that are cached for hidden rows, so they can be
+		 * reinserted into the table if a column is made visible again (or to act
+		 * as a store if a column is made hidden). Only hidden columns have a 
+		 * reference in the array. For non-hidden columns the value is either
+		 * undefined or null.
+		 *  @type array nodes
+		 *  @default []
+		 *  @private
+		 */
+		"_anHidden": [],
+	
+		/**
+		 * Cache of the class name that DataTables has applied to the row, so we
+		 * can quickly look at this variable rather than needing to do a DOM check
+		 * on className for the nTr property.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @private
+		 */
+		"_sRowStripe": ""
+	};
+	
+	
+	
+	/**
+	 * Template object for the column information object in DataTables. This object
+	 * is held in the settings aoColumns array and contains all the information that
+	 * DataTables needs about each individual column.
+	 * 
+	 * Note that this object is related to {@link DataTable.defaults.columns} 
+	 * but this one is the internal data store for DataTables's cache of columns.
+	 * It should NOT be manipulated outside of DataTables. Any configuration should
+	 * be done through the initialisation options.
+	 *  @namespace
+	 */
+	DataTable.models.oColumn = {
+		/**
+		 * A list of the columns that sorting should occur on when this column
+		 * is sorted. That this property is an array allows multi-column sorting
+		 * to be defined for a column (for example first name / last name columns
+		 * would benefit from this). The values are integers pointing to the
+		 * columns to be sorted on (typically it will be a single integer pointing
+		 * at itself, but that doesn't need to be the case).
+		 *  @type array
+		 */
+		"aDataSort": null,
+	
+		/**
+		 * Define the sorting directions that are applied to the column, in sequence
+		 * as the column is repeatedly sorted upon - i.e. the first value is used
+		 * as the sorting direction when the column if first sorted (clicked on).
+		 * Sort it again (click again) and it will move on to the next index.
+		 * Repeat until loop.
+		 *  @type array
+		 */
+		"asSorting": null,
+		
+		/**
+		 * Flag to indicate if the column is searchable, and thus should be included
+		 * in the filtering or not.
+		 *  @type boolean
+		 */
+		"bSearchable": null,
+		
+		/**
+		 * Flag to indicate if the column is sortable or not.
+		 *  @type boolean
+		 */
+		"bSortable": null,
+		
+		/**
+		 * <code>Deprecated</code> When using fnRender, you have two options for what 
+		 * to do with the data, and this property serves as the switch. Firstly, you 
+		 * can have the sorting and filtering use the rendered value (true - default), 
+		 * or you can have the sorting and filtering us the original value (false).
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type boolean
+		 *  @deprecated
+		 */
+		"bUseRendered": null,
+		
+		/**
+		 * Flag to indicate if the column is currently visible in the table or not
+		 *  @type boolean
+		 */
+		"bVisible": null,
+		
+		/**
+		 * Flag to indicate to the type detection method if the automatic type
+		 * detection should be used, or if a column type (sType) has been specified
+		 *  @type boolean
+		 *  @default true
+		 *  @private
+		 */
+		"_bAutoType": true,
+		
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @default null
+		 */
+		"fnCreatedCell": null,
+		
+		/**
+		 * Function to get data from a cell in a column. You should <b>never</b>
+		 * access data directly through _aData internally in DataTables - always use
+		 * the method attached to this property. It allows mData to function as
+		 * required. This function is automatically assigned by the column 
+		 * initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array 
+		 *    (i.e. aoData[]._aData)
+		 *  @param {string} sSpecific The specific data type you want to get - 
+		 *    'display', 'type' 'filter' 'sort'
+		 *  @returns {*} The data for the cell from the given row's data
+		 *  @default null
+		 */
+		"fnGetData": null,
+		
+		/**
+		 * <code>Deprecated</code> Custom display function that will be called for the 
+		 * display of each cell in this column.
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type function
+		 *  @param {object} o Object with the following parameters:
+		 *  @param {int}    o.iDataRow The row in aoData
+		 *  @param {int}    o.iDataColumn The column in question
+		 *  @param {array}  o.aData The data for the row in question
+		 *  @param {object} o.oSettings The settings object for this DataTables instance
+		 *  @returns {string} The string you which to use in the display
+		 *  @default null
+		 *  @deprecated
+		 */
+		"fnRender": null,
+		
+		/**
+		 * Function to set data for a cell in the column. You should <b>never</b> 
+		 * set the data directly to _aData internally in DataTables - always use
+		 * this method. It allows mData to function as required. This function
+		 * is automatically assigned by the column initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array 
+		 *    (i.e. aoData[]._aData)
+		 *  @param {*} sValue Value to set
+		 *  @default null
+		 */
+		"fnSetData": null,
+		
+		/**
+		 * Property to read the value for the cells in the column from the data 
+		 * source array / object. If null, then the default content is used, if a
+		 * function is given then the return from the function is used.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mData": null,
+		
+		/**
+		 * Partner property to mData which is used (only when defined) to get
+		 * the data - i.e. it is basically the same as mData, but without the
+		 * 'set' option, and also the data fed to it is the result from mData.
+		 * This is the rendering method to match the data method of mData.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mRender": null,
+		
+		/**
+		 * Unique header TH/TD element for this column - this is what the sorting
+		 * listener is attached to (if sorting is enabled.)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTh": null,
+		
+		/**
+		 * Unique footer TH/TD element for this column (if there is one). Not used 
+		 * in DataTables as such, but can be used for plug-ins to reference the 
+		 * footer for each column.
+		 *  @type node
+		 *  @default null
+		 */
+		"nTf": null,
+		
+		/**
+		 * The class to apply to all TD elements in the table's TBODY for the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sClass": null,
+		
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer 
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 *  @type string
+		 */
+		"sContentPadding": null,
+		
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 */
+		"sDefaultContent": null,
+		
+		/**
+		 * Name for the column, allowing reference to the column by name as well as
+		 * by index (needs a lookup to work by name).
+		 *  @type string
+		 */
+		"sName": null,
+		
+		/**
+		 * Custom sorting data type - defines which of the available plug-ins in
+		 * afnSortData the custom sorting will use - if any is defined.
+		 *  @type string
+		 *  @default std
+		 */
+		"sSortDataType": 'std',
+		
+		/**
+		 * Class to be applied to the header element when sorting on this column
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClass": null,
+		
+		/**
+		 * Class to be applied to the header element when sorting on this column -
+		 * when jQuery UI theming is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClassJUI": null,
+		
+		/**
+		 * Title of the column - what is seen in the TH element (nTh).
+		 *  @type string
+		 */
+		"sTitle": null,
+		
+		/**
+		 * Column sorting and filtering type
+		 *  @type string
+		 *  @default null
+		 */
+		"sType": null,
+		
+		/**
+		 * Width of the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidth": null,
+		
+		/**
+		 * Width of the column when it was first "encountered"
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidthOrig": null
+	};
+	
+	
+	
+	/**
+	 * Initialisation options that can be given to DataTables at initialisation 
+	 * time.
+	 *  @namespace
+	 */
+	DataTable.defaults = {
+		/**
+		 * An array of data to use for the table, passed in at initialisation which 
+		 * will be used in preference to any data which is already in the DOM. This is
+		 * particularly useful for constructing tables purely in Javascript, for
+		 * example with a custom Ajax call.
+		 *  @type array
+		 *  @default null
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    // Using a 2D array data source
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "aaData": [
+		 *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+		 *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+		 *        ],
+		 *        "aoColumns": [
+		 *          { "sTitle": "Engine" },
+		 *          { "sTitle": "Browser" },
+		 *          { "sTitle": "Platform" },
+		 *          { "sTitle": "Version" },
+		 *          { "sTitle": "Grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using an array of objects as a data source (mData)
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "aaData": [
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 4.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  4,
+		 *            "grade":    "X"
+		 *          },
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 5.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  5,
+		 *            "grade":    "C"
+		 *          }
+		 *        ],
+		 *        "aoColumns": [
+		 *          { "sTitle": "Engine",   "mData": "engine" },
+		 *          { "sTitle": "Browser",  "mData": "browser" },
+		 *          { "sTitle": "Platform", "mData": "platform" },
+		 *          { "sTitle": "Version",  "mData": "version" },
+		 *          { "sTitle": "Grade",    "mData": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aaData": null,
+	
+	
+		/**
+		 * If sorting is enabled, then DataTables will perform a first pass sort on 
+		 * initialisation. You can define which column(s) the sort is performed upon, 
+		 * and the sorting direction, with this variable. The aaSorting array should 
+		 * contain an array for each column to be sorted initially containing the 
+		 * column's index and a direction string ('asc' or 'desc').
+		 *  @type array
+		 *  @default [[0,'asc']]
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    // Sort by 3rd column first, and then 4th column
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSorting": [[2,'asc'], [3,'desc']]
+		 *      } );
+		 *    } );
+		 *    
+		 *    // No initial sorting
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSorting": []
+		 *      } );
+		 *    } );
+		 */
+		"aaSorting": [[0,'asc']],
+	
+	
+		/**
+		 * This parameter is basically identical to the aaSorting parameter, but 
+		 * cannot be overridden by user interaction with the table. What this means 
+		 * is that you could have a column (visible or hidden) which the sorting will 
+		 * always be forced on first - any sorting after that (from the user) will 
+		 * then be performed as required. This can be useful for grouping rows 
+		 * together.
+		 *  @type array
+		 *  @default null
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSortingFixed": [[0,'asc']]
+		 *      } );
+		 *    } )
+		 */
+		"aaSortingFixed": null,
+	
+	
+		/**
+		 * This parameter allows you to readily specify the entries in the length drop
+		 * down menu that DataTables shows when pagination is enabled. It can be 
+		 * either a 1D array of options which will be used for both the displayed 
+		 * option and the value, or a 2D array which will use the array in the first 
+		 * position as the value, and the array in the second position as the 
+		 * displayed options (useful for language strings such as 'All').
+		 *  @type array
+		 *  @default [ 10, 25, 50, 100 ]
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+		 *      } );
+		 *    } );
+		 *  
+		 *  @example
+		 *    // Setting the default display length as well as length menu
+		 *    // This is likely to be wanted if you remove the '10' option which
+		 *    // is the iDisplayLength default.
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayLength": 25,
+		 *        "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]]
+		 *      } );
+		 *    } );
+		 */
+		"aLengthMenu": [ 10, 25, 50, 100 ],
+	
+	
+		/**
+		 * The aoColumns option in the initialisation parameter allows you to define
+		 * details about the way individual columns behave. For a full list of
+		 * column options that can be set, please see 
+		 * {@link DataTable.defaults.columns}. Note that if you use aoColumns to
+		 * define your columns, you must have an entry in the array for every single
+		 * column that you have in your table (these can be null if you don't which
+		 * to specify any options).
+		 *  @member
+		 */
+		"aoColumns": null,
+	
+		/**
+		 * Very similar to aoColumns, aoColumnDefs allows you to target a specific 
+		 * column, multiple columns, or all columns, using the aTargets property of 
+		 * each object in the array. This allows great flexibility when creating 
+		 * tables, as the aoColumnDefs arrays can be of any length, targeting the 
+		 * columns you specifically want. aoColumnDefs may use any of the column 
+		 * options available: {@link DataTable.defaults.columns}, but it _must_
+		 * have aTargets defined in each object in the array. Values in the aTargets
+		 * array may be:
+		 *   <ul>
+		 *     <li>a string - class name will be matched on the TH for the column</li>
+		 *     <li>0 or a positive integer - column index counting from the left</li>
+		 *     <li>a negative integer - column index counting from the right</li>
+		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
+		 *   </ul>
+		 *  @member
+		 */
+		"aoColumnDefs": null,
+	
+	
+		/**
+		 * Basically the same as oSearch, this parameter defines the individual column
+		 * filtering state at initialisation time. The array must be of the same size 
+		 * as the number of columns, and each element be an object with the parameters
+		 * "sSearch" and "bEscapeRegex" (the latter is optional). 'null' is also
+		 * accepted and the default will be used.
+		 *  @type array
+		 *  @default []
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoSearchCols": [
+		 *          null,
+		 *          { "sSearch": "My filter" },
+		 *          null,
+		 *          { "sSearch": "^[0-9]", "bEscapeRegex": false }
+		 *        ]
+		 *      } );
+		 *    } )
+		 */
+		"aoSearchCols": [],
+	
+	
+		/**
+		 * An array of CSS classes that should be applied to displayed rows. This 
+		 * array may be of any length, and DataTables will apply each class 
+		 * sequentially, looping when required.
+		 *  @type array
+		 *  @default null <i>Will take the values determined by the oClasses.sStripe*
+		 *    options</i>
+		 *  @dtopt Option
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "asStripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+		 *      } );
+		 *    } )
+		 */
+		"asStripeClasses": null,
+	
+	
+		/**
+		 * Enable or disable automatic column width calculation. This can be disabled
+		 * as an optimisation (it takes some time to calculate the widths) if the
+		 * tables widths are passed in using aoColumns.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bAutoWidth": false
+		 *      } );
+		 *    } );
+		 */
+		"bAutoWidth": true,
+	
+	
+		/**
+		 * Deferred rendering can provide DataTables with a huge speed boost when you
+		 * are using an Ajax or JS data source for the table. This option, when set to
+		 * true, will cause DataTables to defer the creation of the table elements for
+		 * each row until they are needed for a draw - saving a significant amount of
+		 * time.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/arrays.txt",
+		 *        "bDeferRender": true
+		 *      } );
+		 *    } );
+		 */
+		"bDeferRender": false,
+	
+	
+		/**
+		 * Replace a DataTable which matches the given selector and replace it with 
+		 * one which has the properties of the new initialisation object passed. If no
+		 * table matches the selector, then the new DataTable will be constructed as
+		 * per normal.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *      
+		 *      // Some time later....
+		 *      $('#example').dataTable( {
+		 *        "bFilter": false,
+		 *        "bDestroy": true
+		 *      } );
+		 *    } );
+		 */
+		"bDestroy": false,
+	
+	
+		/**
+		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+		 * that it allows the end user to input multiple words (space separated) and
+		 * will match a row containing those words, even if not in the order that was
+		 * specified (this allow matching across multiple columns). Note that if you
+		 * wish to use filtering in DataTables this must remain 'true' - to remove the
+		 * default filtering input box and retain filtering abilities, please use
+		 * {@link DataTable.defaults.sDom}.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bFilter": false
+		 *      } );
+		 *    } );
+		 */
+		"bFilter": true,
+	
+	
+		/**
+		 * Enable or disable the table information display. This shows information 
+		 * about the data that is currently visible on the page, including information
+		 * about filtered data if that action is being performed.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bInfo": false
+		 *      } );
+		 *    } );
+		 */
+		"bInfo": true,
+	
+	
+		/**
+		 * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
+		 * slightly different and additional mark-up from what DataTables has
+		 * traditionally used).
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bJQueryUI": true
+		 *      } );
+		 *    } );
+		 */
+		"bJQueryUI": false,
+	
+	
+		/**
+		 * Allows the end user to select the size of a formatted page from a select
+		 * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bLengthChange": false
+		 *      } );
+		 *    } );
+		 */
+		"bLengthChange": true,
+	
+	
+		/**
+		 * Enable or disable pagination.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bPaginate": false
+		 *      } );
+		 *    } );
+		 */
+		"bPaginate": true,
+	
+	
+		/**
+		 * Enable or disable the display of a 'processing' indicator when the table is
+		 * being processed (e.g. a sort). This is particularly useful for tables with
+		 * large amounts of data where it can take a noticeable amount of time to sort
+		 * the entries.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true
+		 *      } );
+		 *    } );
+		 */
+		"bProcessing": false,
+	
+	
+		/**
+		 * Retrieve the DataTables object for the given selector. Note that if the
+		 * table has already been initialised, this parameter will cause DataTables
+		 * to simply return the object that has already been set up - it will not take
+		 * account of any changes you might have made to the initialisation object
+		 * passed to DataTables (setting this parameter to true is an acknowledgement
+		 * that you understand this). bDestroy can be used to reinitialise a table if
+		 * you need.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      initTable();
+		 *      tableActions();
+		 *    } );
+		 *    
+		 *    function initTable ()
+		 *    {
+		 *      return $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false,
+		 *        "bRetrieve": true
+		 *      } );
+		 *    }
+		 *    
+		 *    function tableActions ()
+		 *    {
+		 *      var oTable = initTable();
+		 *      // perform API operations with oTable 
+		 *    }
+		 */
+		"bRetrieve": false,
+	
+	
+		/**
+		 * Indicate if DataTables should be allowed to set the padding / margin
+		 * etc for the scrolling header elements or not. Typically you will want
+		 * this.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollAutoCss": false,
+		 *        "sScrollY": "200px"
+		 *      } );
+		 *    } );
+		 */
+		"bScrollAutoCss": true,
+	
+	
+		/**
+		 * When vertical (y) scrolling is enabled, DataTables will force the height of
+		 * the table's viewport to the given height at all times (useful for layout).
+		 * However, this can look odd when filtering data down to a small data set,
+		 * and the footer is left "floating" further down. This parameter (when
+		 * enabled) will cause DataTables to collapse the table's viewport down when
+		 * the result set will fit within the given Y height.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200",
+		 *        "bScrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"bScrollCollapse": false,
+	
+	
+		/**
+		 * Enable infinite scrolling for DataTables (to be used in combination with
+		 * sScrollY). Infinite scrolling means that DataTables will continually load
+		 * data as a user scrolls through a table, which is very useful for large
+		 * dataset. This cannot be used with pagination, which is automatically
+		 * disabled. Note - the Scroller extra for DataTables is recommended in
+		 * in preference to this option.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollInfinite": true,
+		 *        "bScrollCollapse": true,
+		 *        "sScrollY": "200px"
+		 *      } );
+		 *    } );
+		 */
+		"bScrollInfinite": false,
+	
+	
+		/**
+		 * Configure DataTables to use server-side processing. Note that the
+		 * sAjaxSource parameter must also be given in order to give DataTables a
+		 * source to obtain the required data for each draw.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "xhr.php"
+		 *      } );
+		 *    } );
+		 */
+		"bServerSide": false,
+	
+	
+		/**
+		 * Enable or disable sorting of columns. Sorting of individual columns can be
+		 * disabled by the "bSortable" option for each column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bSort": false
+		 *      } );
+		 *    } );
+		 */
+		"bSort": true,
+	
+	
+		/**
+		 * Allows control over whether DataTables should use the top (true) unique
+		 * cell that is found for a single column, or the bottom (false - default).
+		 * This is useful when using complex headers.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bSortCellsTop": true
+		 *      } );
+		 *    } );
+		 */
+		"bSortCellsTop": false,
+	
+	
+		/**
+		 * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and
+		 * 'sorting_3' to the columns which are currently being sorted on. This is
+		 * presented as a feature switch as it can increase processing time (while
+		 * classes are removed and added) so for large data sets you might want to
+		 * turn this off.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bSortClasses": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortClasses": true,
+	
+	
+		/**
+		 * Enable or disable state saving. When enabled a cookie will be used to save
+		 * table display information such as pagination information, display length,
+		 * filtering and sorting. As such when the end user reloads the page the
+		 * display display will match what thy had previously set up.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true
+		 *      } );
+		 *    } );
+		 */
+		"bStateSave": false,
+	
+	
+		/**
+		 * Customise the cookie and / or the parameters being stored when using
+		 * DataTables with state saving enabled. This function is called whenever
+		 * the cookie is modified, and it expects a fully formed cookie string to be
+		 * returned. Note that the data object passed in is a Javascript object which
+		 * must be converted to a string (JSON.stringify for example).
+		 *  @type function
+		 *  @param {string} sName Name of the cookie defined by DataTables
+		 *  @param {object} oData Data to be stored in the cookie
+		 *  @param {string} sExpires Cookie expires string
+		 *  @param {string} sPath Path of the cookie to set
+		 *  @returns {string} Cookie formatted string (which should be encoded by
+		 *    using encodeURIComponent())
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "fnCookieCallback": function (sName, oData, sExpires, sPath) {
+		 *          // Customise oData or sName or whatever else here
+		 *          return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCookieCallback": null,
+	
+	
+		/**
+		 * This function is called when a TR element is created (and all TD child
+		 * elements have been inserted), or registered if using a DOM source, allowing
+		 * manipulation of the TR element (adding classes etc).
+		 *  @type function
+		 *  @param {node} nRow "TR" element for the current row
+		 *  @param {array} aData Raw data array for this row
+		 *  @param {int} iDataIndex The index of this row in aoData
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnCreatedRow": function( nRow, aData, iDataIndex ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( aData[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', nRow).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCreatedRow": null,
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify any aspect you want about the created DOM.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnDrawCallback": function( oSettings ) {
+		 *          alert( 'DataTables has redrawn the table' );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnDrawCallback": null,
+	
+	
+		/**
+		 * Identical to fnHeaderCallback() but for the table footer this function
+		 * allows you to modify the table footer on every 'draw' even.
+		 *  @type function
+		 *  @param {node} nFoot "TR" element for the footer
+		 *  @param {array} aData Full table data (as derived from the original HTML)
+		 *  @param {int} iStart Index for the current display starting point in the 
+		 *    display array
+		 *  @param {int} iEnd Index for the current display ending point in the 
+		 *    display array
+		 *  @param {array int} aiDisplay Index array to translate the visual position
+		 *    to the full data array
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) {
+		 *          nFoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+iStart;
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnFooterCallback": null,
+	
+	
+		/**
+		 * When rendering large numbers in the information element for the table
+		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
+		 * rendered as "1,000,000") to help readability for the end user. This
+		 * function will override the default method DataTables uses.
+		 *  @type function
+		 *  @member
+		 *  @param {int} iIn number to be formatted
+		 *  @returns {string} formatted string for DataTables to show the number
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnFormatNumber": function ( iIn ) {
+		 *          if ( iIn &lt; 1000 ) {
+		 *            return iIn;
+		 *          } else {
+		 *            var 
+		 *              s=(iIn+""), 
+		 *              a=s.split(""), out="", 
+		 *              iLen=s.length;
+		 *            
+		 *            for ( var i=0 ; i&lt;iLen ; i++ ) {
+		 *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {
+		 *                out = "'"+out;
+		 *              }
+		 *              out = a[iLen-i-1]+out;
+		 *            }
+		 *          }
+		 *          return out;
+		 *        };
+		 *      } );
+		 *    } );
+		 */
+		"fnFormatNumber": function ( iIn ) {
+			if ( iIn < 1000 )
+			{
+				// A small optimisation for what is likely to be the majority of use cases
+				return iIn;
+			}
+	
+			var s=(iIn+""), a=s.split(""), out="", iLen=s.length;
+			
+			for ( var i=0 ; i<iLen ; i++ )
+			{
+				if ( i%3 === 0 && i !== 0 )
+				{
+					out = this.oLanguage.sInfoThousands+out;
+				}
+				out = a[iLen-i-1]+out;
+			}
+			return out;
+		},
+	
+	
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify the header row. This can be used to calculate and
+		 * display useful information about the table.
+		 *  @type function
+		 *  @param {node} nHead "TR" element for the header
+		 *  @param {array} aData Full table data (as derived from the original HTML)
+		 *  @param {int} iStart Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} iEnd Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} aiDisplay Index array to translate the visual position
+		 *    to the full data array
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnHeaderCallback": function( nHead, aData, iStart, iEnd, aiDisplay ) {
+		 *          nHead.getElementsByTagName('th')[0].innerHTML = "Displaying "+(iEnd-iStart)+" records";
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnHeaderCallback": null,
+	
+	
+		/**
+		 * The information element can be used to convey information about the current
+		 * state of the table. Although the internationalisation options presented by
+		 * DataTables are quite capable of dealing with most customisations, there may
+		 * be times where you wish to customise the string further. This callback
+		 * allows you to do exactly that.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {int} iStart Starting position in data for the draw
+		 *  @param {int} iEnd End position in data for the draw
+		 *  @param {int} iMax Total number of rows in the table (regardless of
+		 *    filtering)
+		 *  @param {int} iTotal Total number of rows in the data set, after filtering
+		 *  @param {string} sPre The string that DataTables has formatted using it's
+		 *    own rules
+		 *  @returns {string} The string to be displayed in the information element.
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $('#example').dataTable( {
+		 *      "fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
+		 *        return iStart +" to "+ iEnd;
+		 *      }
+		 *    } );
+		 */
+		"fnInfoCallback": null,
+	
+	
+		/**
+		 * Called when the table has been initialised. Normally DataTables will
+		 * initialise sequentially and there will be no need for this function,
+		 * however, this does not hold true when using external language information
+		 * since that is obtained using an async XHR call.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} json The JSON object request from the server - only
+		 *    present if client-side Ajax sourced data is used
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnInitComplete": function(oSettings, json) {
+		 *          alert( 'DataTables has finished its initialisation.' );
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnInitComplete": null,
+	
+	
+		/**
+		 * Called at the very start of each table draw and can be used to cancel the
+		 * draw by returning false, any other return (including undefined) results in
+		 * the full draw occurring).
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @returns {boolean} False will cancel the draw, anything else (including no
+		 *    return) will allow it to complete.
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnPreDrawCallback": function( oSettings ) {
+		 *          if ( $('#test').val() == 1 ) {
+		 *            return false;
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnPreDrawCallback": null,
+	
+	
+		/**
+		 * This function allows you to 'post process' each row after it have been
+		 * generated for each table draw, but before it is rendered on screen. This
+		 * function might be used for setting the row class name etc.
+		 *  @type function
+		 *  @param {node} nRow "TR" element for the current row
+		 *  @param {array} aData Raw data array for this row
+		 *  @param {int} iDisplayIndex The display index for the current table draw
+		 *  @param {int} iDisplayIndexFull The index of the data in the full list of
+		 *    rows (after filtering)
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( aData[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', nRow).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnRowCallback": null,
+	
+	
+		/**
+		 * This parameter allows you to override the default function which obtains
+		 * the data from the server ($.getJSON) so something more suitable for your
+		 * application. For example you could use POST data, or pull information from
+		 * a Gears or AIR database.
+		 *  @type function
+		 *  @member
+		 *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)
+		 *  @param {array} aoData A key/value pair object containing the data to send
+		 *    to the server
+		 *  @param {function} fnCallback to be called on completion of the data get
+		 *    process that will draw the data on the page.
+		 *  @param {object} oSettings DataTables settings object
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    // POST data to server
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true,
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "xhr.php",
+		 *        "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
+		 *          oSettings.jqXHR = $.ajax( {
+		 *            "dataType": 'json', 
+		 *            "type": "POST", 
+		 *            "url": sSource, 
+		 *            "data": aoData, 
+		 *            "success": fnCallback
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) {
+			oSettings.jqXHR = $.ajax( {
+				"url":  sUrl,
+				"data": aoData,
+				"success": function (json) {
+					if ( json.sError ) {
+						oSettings.oApi._fnLog( oSettings, 0, json.sError );
+					}
+					
+					$(oSettings.oInstance).trigger('xhr', [oSettings, json]);
+					fnCallback( json );
+				},
+				"dataType": "json",
+				"cache": false,
+				"type": oSettings.sServerMethod,
+				"error": function (xhr, error, thrown) {
+					if ( error == "parsererror" ) {
+						oSettings.oApi._fnLog( oSettings, 0, "DataTables warning: JSON data from "+
+							"server could not be parsed. This is caused by a JSON formatting error." );
+					}
+				}
+			} );
+		},
+	
+	
+		/**
+		 * It is often useful to send extra data to the server when making an Ajax
+		 * request - for example custom filtering information, and this callback
+		 * function makes it trivial to send extra information to the server. The
+		 * passed in parameter is the data set that has been constructed by
+		 * DataTables, and you can add to this or modify it as you require.
+		 *  @type function
+		 *  @param {array} aoData Data array (array of objects which are name/value
+		 *    pairs) that has been constructed by DataTables and will be sent to the
+		 *    server. In the case of Ajax sourced data with server-side processing
+		 *    this will be an empty array, for server-side processing there will be a
+		 *    significant number of parameters!
+		 *  @returns {undefined} Ensure that you modify the aoData array passed in,
+		 *    as this is passed by reference.
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true,
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "fnServerParams": function ( aoData ) {
+		 *          aoData.push( { "name": "more_data", "value": "my_value" } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnServerParams": null,
+	
+	
+		/**
+		 * Load the table state. With this function you can define from where, and how, the
+		 * state of a table is loaded. By default DataTables will load from its state saving
+		 * cookie, but you might wish to use local storage (HTML5) or a server-side database.
+		 *  @type function
+		 *  @member
+		 *  @param {object} oSettings DataTables settings object
+		 *  @return {object} The DataTables state object to be loaded
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoad": function (oSettings) {
+		 *          var o;
+		 *          
+		 *          // Send an Ajax request to the server to get the data. Note that
+		 *          // this is a synchronous request.
+		 *          $.ajax( {
+		 *            "url": "/state_load",
+		 *            "async": false,
+		 *            "dataType": "json",
+		 *            "success": function (json) {
+		 *              o = json;
+		 *            }
+		 *          } );
+		 *          
+		 *          return o;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoad": function ( oSettings ) {
+			var sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );
+			var oData;
+	
+			try {
+				oData = (typeof $.parseJSON === 'function') ? 
+					$.parseJSON(sData) : eval( '('+sData+')' );
+			} catch (e) {
+				oData = null;
+			}
+	
+			return oData;
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the saved state prior to loading that state.
+		 * This callback is called when the table is loading state from the stored data, but
+		 * prior to the settings object being modified by the saved state. Note that for 
+		 * plug-in authors, you should use the 'stateLoadParams' event to load parameters for 
+		 * a plug-in.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object that is to be loaded
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never loaded
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoadParams": function (oSettings, oData) {
+		 *          oData.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 * 
+		 *  @example
+		 *    // Disallow state loading by returning false
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoadParams": function (oSettings, oData) {
+		 *          return false;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadParams": null,
+	
+	
+		/**
+		 * Callback that is called when the state has been loaded from the state saving method
+		 * and the DataTables settings object has been modified as a result of the loaded state.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object that was loaded
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    // Show an alert with the filtering value that was saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoaded": function (oSettings, oData) {
+		 *          alert( 'Saved filter was: '+oData.oSearch.sSearch );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoaded": null,
+	
+	
+		/**
+		 * Save the table state. This function allows you to define where and how the state
+		 * information for the table is stored - by default it will use a cookie, but you
+		 * might want to use local storage (HTML5) or a server-side database.
+		 *  @type function
+		 *  @member
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object to be saved
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateSave": function (oSettings, oData) {
+		 *          // Send an Ajax request to the server with the state object
+		 *          $.ajax( {
+		 *            "url": "/state_save",
+		 *            "data": oData,
+		 *            "dataType": "json",
+		 *            "method": "POST"
+		 *            "success": function () {}
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSave": function ( oSettings, oData ) {
+			this.oApi._fnCreateCookie( 
+				oSettings.sCookiePrefix+oSettings.sInstance, 
+				this.oApi._fnJsonString(oData), 
+				oSettings.iCookieDuration, 
+				oSettings.sCookiePrefix, 
+				oSettings.fnCookieCallback
+			);
+		},
+	
+	
+		/**
+		 * Callback which allows modification of the state to be saved. Called when the table 
+		 * has changed state a new state save is required. This method allows modification of
+		 * the state saving object prior to actually doing the save, including addition or 
+		 * other state properties or modification. Note that for plug-in authors, you should 
+		 * use the 'stateSaveParams' event to save parameters for a plug-in.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object to be saved
+		 *  @dtopt Callbacks
+		 * 
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateSaveParams": function (oSettings, oData) {
+		 *          oData.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveParams": null,
+	
+	
+		/**
+		 * Duration of the cookie which is used for storing session information. This
+		 * value is given in seconds.
+		 *  @type int
+		 *  @default 7200 <i>(2 hours)</i>
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iCookieDuration": 60*60*24; // 1 day
+		 *      } );
+		 *    } )
+		 */
+		"iCookieDuration": 7200,
+	
+	
+		/**
+		 * When enabled DataTables will not make a request to the server for the first
+		 * page draw - rather it will use the data already on the page (no sorting etc
+		 * will be applied to it), thus saving on an XHR at load time. iDeferLoading
+		 * is used to indicate that deferred loading is required, but it is also used
+		 * to tell DataTables how many records there are in the full table (allowing
+		 * the information element and pagination to be displayed correctly). In the case
+		 * where a filtering is applied to the table on initial load, this can be
+		 * indicated by giving the parameter as an array, where the first element is
+		 * the number of records available after filtering and the second element is the
+		 * number of records without filtering (allowing the table information element
+		 * to be shown correctly).
+		 *  @type int | array
+		 *  @default null
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    // 57 records available in the table, no filtering applied
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "iDeferLoading": 57
+		 *      } );
+		 *    } );
+		 * 
+		 *  @example
+		 *    // 57 records after filtering, 100 without filtering (an initial filter applied)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "iDeferLoading": [ 57, 100 ],
+		 *        "oSearch": {
+		 *          "sSearch": "my_filter"
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"iDeferLoading": null,
+	
+	
+		/**
+		 * Number of rows to display on a single page when using pagination. If
+		 * feature enabled (bLengthChange) then the end user will be able to override
+		 * this to a custom setting using a pop-up menu.
+		 *  @type int
+		 *  @default 10
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayLength": 50
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayLength": 10,
+	
+	
+		/**
+		 * Define the starting point for data display when using DataTables with
+		 * pagination. Note that this parameter is the number of records, rather than
+		 * the page number, so if you have 10 records per page and want to start on
+		 * the third page, it should be "20".
+		 *  @type int
+		 *  @default 0
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayStart": 20
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayStart": 0,
+	
+	
+		/**
+		 * The scroll gap is the amount of scrolling that is left to go before
+		 * DataTables will load the next 'page' of data automatically. You typically
+		 * want a gap which is big enough that the scrolling will be smooth for the
+		 * user, while not so large that it will load more data than need.
+		 *  @type int
+		 *  @default 100
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollInfinite": true,
+		 *        "bScrollCollapse": true,
+		 *        "sScrollY": "200px",
+		 *        "iScrollLoadGap": 50
+		 *      } );
+		 *    } );
+		 */
+		"iScrollLoadGap": 100,
+	
+	
+		/**
+		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
+		 * and filtering) by adding a tabindex attribute to the required elements. This
+		 * allows you to tab through the controls and press the enter key to activate them.
+		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
+		 * You can overrule this using this parameter if you wish. Use a value of -1 to
+		 * disable built-in keyboard navigation.
+		 *  @type int
+		 *  @default 0
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iTabIndex": 1
+		 *      } );
+		 *    } );
+		 */
+		"iTabIndex": 0,
+	
+	
+		/**
+		 * All strings that DataTables uses in the user interface that it creates
+		 * are defined in this object, allowing you to modified them individually or
+		 * completely replace them all as required.
+		 *  @namespace
+		 */
+		"oLanguage": {
+			/**
+			 * Strings that are used for WAI-ARIA labels and controls only (these are not
+			 * actually visible on the page, but will be read by screenreaders, and thus
+			 * must be internationalised as well).
+			 *  @namespace
+			 */
+			"oAria": {
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted ascending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oAria": {
+				 *            "sSortAscending": " - click/return to sort ascending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortAscending": ": activate to sort column ascending",
+	
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted descending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oAria": {
+				 *            "sSortDescending": " - click/return to sort descending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortDescending": ": activate to sort column descending"
+			},
+	
+			/**
+			 * Pagination string used by DataTables for the two built-in pagination
+			 * control types ("two_button" and "full_numbers")
+			 *  @namespace
+			 */
+			"oPaginate": {
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the first page.
+				 *  @type string
+				 *  @default First
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sFirst": "First page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sFirst": "First",
+			
+			
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the last page.
+				 *  @type string
+				 *  @default Last
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sLast": "Last page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sLast": "Last",
+			
+			
+				/**
+				 * Text to use for the 'next' pagination button (to take the user to the 
+				 * next page).
+				 *  @type string
+				 *  @default Next
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sNext": "Next page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sNext": "Next",
+			
+			
+				/**
+				 * Text to use for the 'previous' pagination button (to take the user to  
+				 * the previous page).
+				 *  @type string
+				 *  @default Previous
+				 *  @dtopt Language
+				 * 
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sPrevious": "Previous page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sPrevious": "Previous"
+			},
+		
+			/**
+			 * This string is shown in preference to sZeroRecords when the table is
+			 * empty of data (regardless of filtering). Note that this is an optional
+			 * parameter - if it is not given, the value of sZeroRecords will be used
+			 * instead (either the default or given value).
+			 *  @type string
+			 *  @default No data available in table
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sEmptyTable": "No data available in table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sEmptyTable": "No data available in table",
+		
+		
+			/**
+			 * This string gives information to the end user about the information that 
+			 * is current on display on the page. The _START_, _END_ and _TOTAL_ 
+			 * variables are all dynamically replaced as the table display updates, and 
+			 * can be freely moved or removed as the language requirements change.
+			 *  @type string
+			 *  @default Showing _START_ to _END_ of _TOTAL_ entries
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfo": "Got a total of _TOTAL_ entries to show (_START_ to _END_)"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+		
+		
+			/**
+			 * Display information string for when the table is empty. Typically the 
+			 * format of this string should match sInfo.
+			 *  @type string
+			 *  @default Showing 0 to 0 of 0 entries
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoEmpty": "No entries to show"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoEmpty": "Showing 0 to 0 of 0 entries",
+		
+		
+			/**
+			 * When a user filters the information in a table, this string is appended 
+			 * to the information (sInfo) to give an idea of how strong the filtering 
+			 * is. The variable _MAX_ is dynamically updated.
+			 *  @type string
+			 *  @default (filtered from _MAX_ total entries)
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoFiltered": " - filtering from _MAX_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoFiltered": "(filtered from _MAX_ total entries)",
+		
+		
+			/**
+			 * If can be useful to append extra information to the info string at times,
+			 * and this variable does exactly that. This information will be appended to
+			 * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are
+			 * being used) at all times.
+			 *  @type string
+			 *  @default <i>Empty string</i>
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoPostFix": "All records shown are derived from real information."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoPostFix": "",
+		
+		
+			/**
+			 * DataTables has a build in number formatter (fnFormatNumber) which is used
+			 * to format large numbers that are used in the table information. By
+			 * default a comma is used, but this can be trivially changed to any
+			 * character you wish with this parameter.
+			 *  @type string
+			 *  @default ,
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoThousands": "'"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoThousands": ",",
+		
+		
+			/**
+			 * Detail the action that will be taken when the drop down menu for the
+			 * pagination length option is changed. The '_MENU_' variable is replaced
+			 * with a default select list of 10, 25, 50 and 100, and can be replaced
+			 * with a custom select box if required.
+			 *  @type string
+			 *  @default Show _MENU_ entries
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    // Language change only
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLengthMenu": "Display _MENU_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 *    
+			 *  @example
+			 *    // Language and options change
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLengthMenu": 'Display <select>'+
+			 *            '<option value="10">10</option>'+
+			 *            '<option value="20">20</option>'+
+			 *            '<option value="30">30</option>'+
+			 *            '<option value="40">40</option>'+
+			 *            '<option value="50">50</option>'+
+			 *            '<option value="-1">All</option>'+
+			 *            '</select> records'
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLengthMenu": "Show _MENU_ entries",
+		
+		
+			/**
+			 * When using Ajax sourced data and during the first draw when DataTables is
+			 * gathering the data, this message is shown in an empty row in the table to
+			 * indicate to the end user the the data is being loaded. Note that this
+			 * parameter is not used when loading data by server-side processing, just
+			 * Ajax sourced data with client-side processing.
+			 *  @type string
+			 *  @default Loading...
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLoadingRecords": "Please wait - loading..."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLoadingRecords": "Loading...",
+		
+		
+			/**
+			 * Text which is displayed when the table is processing a user action
+			 * (usually a sort command or similar).
+			 *  @type string
+			 *  @default Processing...
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sProcessing": "DataTables is currently busy"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sProcessing": "Processing...",
+		
+		
+			/**
+			 * Details the actions that will be taken when the user types into the
+			 * filtering input text box. The variable "_INPUT_", if used in the string,
+			 * is replaced with the HTML text box for the filtering input allowing
+			 * control over where it appears in the string. If "_INPUT_" is not given
+			 * then the input box is appended to the string automatically.
+			 *  @type string
+			 *  @default Search:
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    // Input text box will be appended at the end automatically
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sSearch": "Filter records:"
+			 *        }
+			 *      } );
+			 *    } );
+			 *    
+			 *  @example
+			 *    // Specify where the filter should appear
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sSearch": "Apply filter _INPUT_ to table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sSearch": "Search:",
+		
+		
+			/**
+			 * All of the language information can be stored in a file on the
+			 * server-side, which DataTables will look up if this parameter is passed.
+			 * It must store the URL of the language file, which is in a JSON format,
+			 * and the object has the same properties as the oLanguage object in the
+			 * initialiser object (i.e. the above parameters). Please refer to one of
+			 * the example language files to see how this works in action.
+			 *  @type string
+			 *  @default <i>Empty string - i.e. disabled</i>
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sUrl": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sUrl": "",
+		
+		
+			/**
+			 * Text shown inside the table records when the is no information to be
+			 * displayed after filtering. sEmptyTable is shown when there is simply no
+			 * information in the table at all (regardless of filtering).
+			 *  @type string
+			 *  @default No matching records found
+			 *  @dtopt Language
+			 * 
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sZeroRecords": "No records to display"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sZeroRecords": "No matching records found"
+		},
+	
+	
+		/**
+		 * This parameter allows you to have define the global filtering state at
+		 * initialisation time. As an object the "sSearch" parameter must be
+		 * defined, but all other parameters are optional. When "bRegex" is true,
+		 * the search string will be treated as a regular expression, when false
+		 * (default) it will be treated as a straight string. When "bSmart"
+		 * DataTables will use it's smart filtering methods (to word match at
+		 * any point in the data), when false this will not be done.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "oSearch": {"sSearch": "Initial search"}
+		 *      } );
+		 *    } )
+		 */
+		"oSearch": $.extend( {}, DataTable.models.oSearch ),
+	
+	
+		/**
+		 * By default DataTables will look for the property 'aaData' when obtaining
+		 * data from an Ajax source or for server-side processing - this parameter
+		 * allows that property to be changed. You can use Javascript dotted object
+		 * notation to get a data source for multiple levels of nesting.
+		 *  @type string
+		 *  @default aaData
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    // Get data from { "data": [...] }
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/data.txt",
+		 *        "sAjaxDataProp": "data"
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Get data from { "data": { "inner": [...] } }
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/data.txt",
+		 *        "sAjaxDataProp": "data.inner"
+		 *      } );
+		 *    } );
+		 */
+		"sAjaxDataProp": "aaData",
+	
+	
+		/**
+		 * You can instruct DataTables to load data from an external source using this
+		 * parameter (use aData if you want to pass data in you already have). Simply
+		 * provide a url a JSON object can be obtained from. This object must include
+		 * the parameter 'aaData' which is the data source for the table.
+		 *  @type string
+		 *  @default null
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sAjaxSource": "http://www.sprymedia.co.uk/dataTables/json.php"
+		 *      } );
+		 *    } )
+		 */
+		"sAjaxSource": null,
+	
+	
+		/**
+		 * This parameter can be used to override the default prefix that DataTables
+		 * assigns to a cookie when state saving is enabled.
+		 *  @type string
+		 *  @default SpryMedia_DataTables_
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sCookiePrefix": "my_datatable_",
+		 *      } );
+		 *    } );
+		 */
+		"sCookiePrefix": "SpryMedia_DataTables_",
+	
+	
+		/**
+		 * This initialisation variable allows you to specify exactly where in the
+		 * DOM you want DataTables to inject the various controls it adds to the page
+		 * (for example you might want the pagination controls at the top of the
+		 * table). DIV elements (with or without a custom class) can also be added to
+		 * aid styling. The follow syntax is used:
+		 *   <ul>
+		 *     <li>The following options are allowed:	
+		 *       <ul>
+		 *         <li>'l' - Length changing</li
+		 *         <li>'f' - Filtering input</li>
+		 *         <li>'t' - The table!</li>
+		 *         <li>'i' - Information</li>
+		 *         <li>'p' - Pagination</li>
+		 *         <li>'r' - pRocessing</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following constants are allowed:
+		 *       <ul>
+		 *         <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+		 *         <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following syntax is expected:
+		 *       <ul>
+		 *         <li>'&lt;' and '&gt;' - div elements</li>
+		 *         <li>'&lt;"class" and '&gt;' - div with a class</li>
+		 *         <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>Examples:
+		 *       <ul>
+		 *         <li>'&lt;"wrapper"flipt&gt;'</li>
+		 *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+		 *       </ul>
+		 *     </li>
+		 *   </ul>
+		 *  @type string
+		 *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> 
+		 *    <"H"lfr>t<"F"ip> <i>(when bJQueryUI is true)</i>
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sDom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+		 *      } );
+		 *    } );
+		 */
+		"sDom": "lfrtip",
+	
+	
+		/**
+		 * DataTables features two different built-in pagination interaction methods
+		 * ('two_button' or 'full_numbers') which present different page controls to
+		 * the end user. Further methods can be added using the API (see below).
+		 *  @type string
+		 *  @default two_button
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sPaginationType": "full_numbers"
+		 *      } );
+		 *    } )
+		 */
+		"sPaginationType": "two_button",
+	
+	
+		/**
+		 * Enable horizontal scrolling. When a table is too wide to fit into a certain
+		 * layout, or you have a large number of columns in the table, you can enable
+		 * x-scrolling to show the table in a viewport, which can be scrolled. This
+		 * property can be any CSS unit, or a number (in which case it will be treated
+		 * as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollX": "100%",
+		 *        "bScrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"sScrollX": "",
+	
+	
+		/**
+		 * This property can be used to force a DataTable to use more width than it
+		 * might otherwise do when x-scrolling is enabled. For example if you have a
+		 * table which requires to be well spaced, this parameter is useful for
+		 * "over-sizing" the table, and thus forcing scrolling. This property can by
+		 * any CSS unit, or a number (in which case it will be treated as a pixel
+		 * measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Options
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollX": "100%",
+		 *        "sScrollXInner": "110%"
+		 *      } );
+		 *    } );
+		 */
+		"sScrollXInner": "",
+	
+	
+		/**
+		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+		 * to the given height, and enable scrolling for any data which overflows the
+		 * current viewport. This can be used as an alternative to paging to display
+		 * a lot of data in a small area (although paging and scrolling can both be
+		 * enabled at the same time). This property can be any CSS unit, or a number
+		 * (in which case it will be treated as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Features
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *    } );
+		 */
+		"sScrollY": "",
+	
+	
+		/**
+		 * Set the HTTP method that is used to make the Ajax call for server-side
+		 * processing or Ajax sourced data.
+		 *  @type string
+		 *  @default GET
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/post.php",
+		 *        "sServerMethod": "POST"
+		 *      } );
+		 *    } );
+		 */
+		"sServerMethod": "GET"
+	};
+	
+	
+	
+	/**
+	 * Column options that can be given to DataTables at initialisation time.
+	 *  @namespace
+	 */
+	DataTable.defaults.columns = {
+		/**
+		 * Allows a column's sorting to take multiple columns into account when 
+		 * doing a sort. For example first name / last name columns make sense to 
+		 * do a multi-column sort over the two columns.
+		 *  @type array
+		 *  @default null <i>Takes the value of the column index automatically</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "aDataSort": [ 0, 1 ], "aTargets": [ 0 ] },
+		 *          { "aDataSort": [ 1, 0 ], "aTargets": [ 1 ] },
+		 *          { "aDataSort": [ 2, 3, 4 ], "aTargets": [ 2 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          { "aDataSort": [ 0, 1 ] },
+		 *          { "aDataSort": [ 1, 0 ] },
+		 *          { "aDataSort": [ 2, 3, 4 ] },
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aDataSort": null,
+	
+	
+		/**
+		 * You can control the default sorting direction, and even alter the behaviour
+		 * of the sort handler (i.e. only allow ascending sorting etc) using this
+		 * parameter.
+		 *  @type array
+		 *  @default [ 'asc', 'desc' ]
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "asSorting": [ "asc" ], "aTargets": [ 1 ] },
+		 *          { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] },
+		 *          { "asSorting": [ "desc" ], "aTargets": [ 3 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          null,
+		 *          { "asSorting": [ "asc" ] },
+		 *          { "asSorting": [ "desc", "asc", "asc" ] },
+		 *          { "asSorting": [ "desc" ] },
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"asSorting": [ 'asc', 'desc' ],
+	
+	
+		/**
+		 * Enable or disable filtering on the data in this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bSearchable": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bSearchable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSearchable": true,
+	
+	
+		/**
+		 * Enable or disable sorting on this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bSortable": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bSortable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSortable": true,
+	
+	
+		/**
+		 * <code>Deprecated</code> When using fnRender() for a column, you may wish 
+		 * to use the original data (before rendering) for sorting and filtering 
+		 * (the default is to used the rendered data that the user can see). This 
+		 * may be useful for dates etc.
+		 * 
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 *  @deprecated
+		 */
+		"bUseRendered": true,
+	
+	
+		/**
+		 * Enable or disable the display of this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bVisible": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bVisible": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bVisible": true,
+		
+		
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @param {int} iCol The column index for aoColumns
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [3],
+		 *          "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
+		 *            if ( sData == "1.7" ) {
+		 *              $(nTd).css('color', 'blue')
+		 *            }
+		 *          }
+		 *        } ]
+		 *      });
+		 *    } );
+		 */
+		"fnCreatedCell": null,
+	
+	
+		/**
+		 * <code>Deprecated</code> Custom display function that will be called for the 
+		 * display of each cell in this column.
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type function
+		 *  @param {object} o Object with the following parameters:
+		 *  @param {int}    o.iDataRow The row in aoData
+		 *  @param {int}    o.iDataColumn The column in question
+		 *  @param {array}  o.aData The data for the row in question
+		 *  @param {object} o.oSettings The settings object for this DataTables instance
+		 *  @param {object} o.mDataProp The data property used for this column
+		 *  @param {*}      val The current cell value
+		 *  @returns {string} The string you which to use in the display
+		 *  @dtopt Columns
+		 *  @deprecated
+		 */
+		"fnRender": null,
+	
+	
+		/**
+		 * The column index (starting from 0!) that you wish a sort to be performed
+		 * upon when this column is selected for sorting. This can be used for sorting
+		 * on hidden columns for example.
+		 *  @type int
+		 *  @default -1 <i>Use automatically calculated column index</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "iDataSort": 1, "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "iDataSort": 1 },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"iDataSort": -1,
+	
+	
+		/**
+		 * This parameter has been replaced by mData in DataTables to ensure naming
+		 * consistency. mDataProp can still be used, as there is backwards compatibility
+		 * in DataTables for this option, but it is strongly recommended that you use
+		 * mData in preference to mDataProp.
+		 *  @name DataTable.defaults.columns.mDataProp
+		 */
+	
+	
+		/**
+		 * This property can be used to read data from any JSON data source property,
+		 * including deeply nested objects / properties. mData can be given in a
+		 * number of different ways which effect its behaviour:
+		 *   <ul>
+		 *     <li>integer - treated as an array index for the data source. This is the
+		 *       default that DataTables uses (incrementally increased for each column).</li>
+		 *     <li>string - read an object property from the data source. Note that you can
+		 *       use Javascript dotted notation to read deep properties / arrays from the
+		 *       data source.</li>
+		 *     <li>null - the sDefaultContent option will be used for the cell (null
+		 *       by default, so you will need to specify the default content you want -
+		 *       typically an empty string). This can be useful on generated columns such 
+		 *       as edit / delete action columns.</li>
+		 *     <li>function - the function given will be executed whenever DataTables 
+		 *       needs to set or get the data for a cell in the column. The function 
+		 *       takes three parameters:
+		 *       <ul>
+		 *         <li>{array|object} The data source for the row</li>
+		 *         <li>{string} The type call data requested - this will be 'set' when
+		 *           setting data or 'filter', 'display', 'type', 'sort' or undefined when 
+		 *           gathering data. Note that when <i>undefined</i> is given for the type
+		 *           DataTables expects to get the raw data for the object back</li>
+		 *         <li>{*} Data to set when the second parameter is 'set'.</li>
+		 *       </ul>
+		 *       The return value from the function is not required when 'set' is the type
+		 *       of call, but otherwise the return is what will be used for the data
+		 *       requested.</li>
+		 *    </ul>
+		 *
+		 * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change
+		 * reflects the flexibility of this property and is consistent with the naming of
+		 * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as
+		 * it automatically maps the old name to the new if required.
+		 *  @type string|int|function|null
+		 *  @default null <i>Use automatically calculated column index</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Read table data from objects
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/deep.txt",
+		 *        "aoColumns": [
+		 *          { "mData": "engine" },
+		 *          { "mData": "browser" },
+		 *          { "mData": "platform.inner" },
+		 *          { "mData": "platform.details.0" },
+		 *          { "mData": "platform.details.1" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 * 
+		 *  @example
+		 *    // Using mData as a function to provide different information for
+		 *    // sorting, filtering and display. In this case, currency (price)
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [ 0 ],
+		 *          "mData": function ( source, type, val ) {
+		 *            if (type === 'set') {
+		 *              source.price = val;
+		 *              // Store the computed dislay and filter values for efficiency
+		 *              source.price_display = val=="" ? "" : "$"+numberFormat(val);
+		 *              source.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+		 *              return;
+		 *            }
+		 *            else if (type === 'display') {
+		 *              return source.price_display;
+		 *            }
+		 *            else if (type === 'filter') {
+		 *              return source.price_filter;
+		 *            }
+		 *            // 'sort', 'type' and undefined all just use the integer
+		 *            return source.price;
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"mData": null,
+	
+	
+		/**
+		 * This property is the rendering partner to mData and it is suggested that
+		 * when you want to manipulate data for display (including filtering, sorting etc)
+		 * but not altering the underlying data for the table, use this property. mData
+		 * can actually do everything this property can and more, but this parameter is
+		 * easier to use since there is no 'set' option. Like mData is can be given
+		 * in a number of different ways to effect its behaviour, with the addition of 
+		 * supporting array syntax for easy outputting of arrays (including arrays of
+		 * objects):
+		 *   <ul>
+		 *     <li>integer - treated as an array index for the data source. This is the
+		 *       default that DataTables uses (incrementally increased for each column).</li>
+		 *     <li>string - read an object property from the data source. Note that you can
+		 *       use Javascript dotted notation to read deep properties / arrays from the
+		 *       data source and also array brackets to indicate that the data reader should
+		 *       loop over the data source array. When characters are given between the array
+		 *       brackets, these characters are used to join the data source array together.
+		 *       For example: "accounts[, ].name" would result in a comma separated list with
+		 *       the 'name' value from the 'accounts' array of objects.</li>
+		 *     <li>function - the function given will be executed whenever DataTables 
+		 *       needs to set or get the data for a cell in the column. The function 
+		 *       takes three parameters:
+		 *       <ul>
+		 *         <li>{array|object} The data source for the row (based on mData)</li>
+		 *         <li>{string} The type call data requested - this will be 'filter', 'display', 
+		 *           'type' or 'sort'.</li>
+		 *         <li>{array|object} The full data source for the row (not based on mData)</li>
+		 *       </ul>
+		 *       The return value from the function is what will be used for the data
+		 *       requested.</li>
+		 *    </ul>
+		 *  @type string|int|function|null
+		 *  @default null <i>Use mData</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Create a comma separated list from an array of objects
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/deep.txt",
+		 *        "aoColumns": [
+		 *          { "mData": "engine" },
+		 *          { "mData": "browser" },
+		 *          {
+		 *            "mData": "platform",
+		 *            "mRender": "[, ].name"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 * 
+		 *  @example
+		 *    // Use as a function to create a link from the data source
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *        {
+		 *          "aTargets": [ 0 ],
+		 *          "mData": "download_link",
+		 *          "mRender": function ( data, type, full ) {
+		 *            return '<a href="'+data+'">Download</a>';
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"mRender": null,
+	
+	
+		/**
+		 * Change the cell type created for the column - either TD cells or TH cells. This
+		 * can be useful as TH cells have semantic meaning in the table body, allowing them
+		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+		 *  @type string
+		 *  @default td
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Make the first column use TH cells
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [ 0 ],
+		 *          "sCellType": "th"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"sCellType": "td",
+	
+	
+		/**
+		 * Class to give to each cell in this column.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sClass": "my_class", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sClass": "my_class" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sClass": "",
+		
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer 
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 * Generally you shouldn't need this, and it is not documented on the 
+		 * general DataTables.net documentation
+		 *  @type string
+		 *  @default <i>Empty string<i>
+		 *  @dtopt Columns
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "sContentPadding": "mmm"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sContentPadding": "",
+	
+	
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          {
+		 *            "mData": null,
+		 *            "sDefaultContent": "Edit",
+		 *            "aTargets": [ -1 ]
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "mData": null,
+		 *            "sDefaultContent": "Edit"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sDefaultContent": null,
+	
+	
+		/**
+		 * This parameter is only used in DataTables' server-side processing. It can
+		 * be exceptionally useful to know what columns are being displayed on the
+		 * client side, and to map these to database fields. When defined, the names
+		 * also allow DataTables to reorder information from the server if it comes
+		 * back in an unexpected order (i.e. if you switch your columns around on the
+		 * client-side, your server-side code does not also need updating).
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sName": "engine", "aTargets": [ 0 ] },
+		 *          { "sName": "browser", "aTargets": [ 1 ] },
+		 *          { "sName": "platform", "aTargets": [ 2 ] },
+		 *          { "sName": "version", "aTargets": [ 3 ] },
+		 *          { "sName": "grade", "aTargets": [ 4 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sName": "engine" },
+		 *          { "sName": "browser" },
+		 *          { "sName": "platform" },
+		 *          { "sName": "version" },
+		 *          { "sName": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sName": "",
+	
+	
+		/**
+		 * Defines a data source type for the sorting which can be used to read
+		 * real-time information from the table (updating the internally cached
+		 * version) prior to sorting. This allows sorting to occur on user editable
+		 * elements such as form inputs.
+		 *  @type string
+		 *  @default std
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "sSortDataType": "dom-text", "aTargets": [ 2, 3 ] },
+		 *          { "sType": "numeric", "aTargets": [ 3 ] },
+		 *          { "sSortDataType": "dom-select", "aTargets": [ 4 ] },
+		 *          { "sSortDataType": "dom-checkbox", "aTargets": [ 5 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          null,
+		 *          null,
+		 *          { "sSortDataType": "dom-text" },
+		 *          { "sSortDataType": "dom-text", "sType": "numeric" },
+		 *          { "sSortDataType": "dom-select" },
+		 *          { "sSortDataType": "dom-checkbox" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sSortDataType": "std",
+	
+	
+		/**
+		 * The title of this column.
+		 *  @type string
+		 *  @default null <i>Derived from the 'TH' value for this column in the 
+		 *    original HTML table.</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sTitle": "My column title", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sTitle": "My column title" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sTitle": null,
+	
+	
+		/**
+		 * The type allows you to specify how the data for this column will be sorted.
+		 * Four types (string, numeric, date and html (which will strip HTML tags
+		 * before sorting)) are currently available. Note that only date formats
+		 * understood by Javascript's Date() object will be accepted as type date. For
+		 * example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 'numeric',
+		 * 'date' or 'html' (by default). Further types can be adding through
+		 * plug-ins.
+		 *  @type string
+		 *  @default null <i>Auto-detected from raw data</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sType": "html", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sType": "html" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sType": null,
+	
+	
+		/**
+		 * Defining the width of the column, this parameter may take any CSS value
+		 * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not
+		 * been given a specific width through this interface ensuring that the table
+		 * remains readable.
+		 *  @type string
+		 *  @default null <i>Automatic</i>
+		 *  @dtopt Columns
+		 * 
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sWidth": "20%", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *    
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sWidth": "20%" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sWidth": null
+	};
+	
+	
+	
+	/**
+	 * DataTables settings object - this holds all the information needed for a
+	 * given table, including configuration, data and current application of the
+	 * table options. DataTables does not have a single instance for each DataTable
+	 * with the settings attached to that instance, but rather instances of the
+	 * DataTable "class" are created on-the-fly as needed (typically by a 
+	 * $().dataTable() call) and the settings object is then applied to that
+	 * instance.
+	 * 
+	 * Note that this object is related to {@link DataTable.defaults} but this 
+	 * one is the internal data store for DataTables's cache of columns. It should
+	 * NOT be manipulated outside of DataTables. Any configuration should be done
+	 * through the initialisation options.
+	 *  @namespace
+	 *  @todo Really should attach the settings object to individual instances so we
+	 *    don't need to create new instances on each $().dataTable() call (if the
+	 *    table already exists). It would also save passing oSettings around and
+	 *    into every single function. However, this is a very significant 
+	 *    architecture change for DataTables and will almost certainly break
+	 *    backwards compatibility with older installations. This is something that
+	 *    will be done in 2.0.
+	 */
+	DataTable.models.oSettings = {
+		/**
+		 * Primary features of DataTables and their enablement state.
+		 *  @namespace
+		 */
+		"oFeatures": {
+			
+			/**
+			 * Flag to say if DataTables should automatically try to calculate the
+			 * optimum table and columns widths (true) or not (false).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoWidth": null,
+	
+			/**
+			 * Delay the creation of TR and TD elements until they are actually
+			 * needed by a driven page draw. This can give a significant speed
+			 * increase for Ajax source and Javascript source data, but makes no
+			 * difference at all fro DOM and server-side processing tables.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bDeferRender": null,
+			
+			/**
+			 * Enable filtering on the table or not. Note that if this is disabled
+			 * then there is no filtering at all on the table, including fnFilter.
+			 * To just remove the filtering input use sDom and remove the 'f' option.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bFilter": null,
+			
+			/**
+			 * Table information element (the 'Showing x of y records' div) enable
+			 * flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfo": null,
+			
+			/**
+			 * Present a user control allowing the end user to change the page size
+			 * when pagination is enabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bLengthChange": null,
+	
+			/**
+			 * Pagination enabled or not. Note that if this is disabled then length
+			 * changing must also be disabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bPaginate": null,
+			
+			/**
+			 * Processing indicator enable flag whenever DataTables is enacting a
+			 * user request - typically an Ajax request for server-side processing.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bProcessing": null,
+			
+			/**
+			 * Server-side processing enabled flag - when enabled DataTables will
+			 * get all data from the server for every draw - there is no filtering,
+			 * sorting or paging done on the client-side.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bServerSide": null,
+			
+			/**
+			 * Sorting enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSort": null,
+			
+			/**
+			 * Apply a class to the columns which are being sorted to provide a
+			 * visual highlight or not. This can slow things down when enabled since
+			 * there is a lot of DOM interaction.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortClasses": null,
+			
+			/**
+			 * State saving enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bStateSave": null
+		},
+		
+	
+		/**
+		 * Scrolling settings for a table.
+		 *  @namespace
+		 */
+		"oScroll": {
+			/**
+			 * Indicate if DataTables should be allowed to set the padding / margin
+			 * etc for the scrolling header elements or not. Typically you will want
+			 * this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoCss": null,
+			
+			/**
+			 * When the table is shorter in height than sScrollY, collapse the
+			 * table container down to the height of the table (when true).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bCollapse": null,
+			
+			/**
+			 * Infinite scrolling enablement flag. Now deprecated in favour of
+			 * using the Scroller plug-in.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfinite": null,
+			
+			/**
+			 * Width of the scrollbar for the web-browser's platform. Calculated
+			 * during table initialisation.
+			 *  @type int
+			 *  @default 0
+			 */
+			"iBarWidth": 0,
+			
+			/**
+			 * Space (in pixels) between the bottom of the scrolling container and 
+			 * the bottom of the scrolling viewport before the next page is loaded
+			 * when using infinite scrolling.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type int
+			 */
+			"iLoadGap": null,
+			
+			/**
+			 * Viewport width for horizontal scrolling. Horizontal scrolling is 
+			 * disabled if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sX": null,
+			
+			/**
+			 * Width to expand the table to when using x-scrolling. Typically you
+			 * should not need to use this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 *  @deprecated
+			 */
+			"sXInner": null,
+			
+			/**
+			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
+			 * if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sY": null
+		},
+		
+		/**
+		 * Language information for the table.
+		 *  @namespace
+		 *  @extends DataTable.defaults.oLanguage
+		 */
+		"oLanguage": {
+			/**
+			 * Information callback function. See 
+			 * {@link DataTable.defaults.fnInfoCallback}
+			 *  @type function
+			 *  @default null
+			 */
+			"fnInfoCallback": null
+		},
+		
+		/**
+		 * Browser support parameters
+		 *  @namespace
+		 */
+		"oBrowser": {
+			/**
+			 * Indicate if the browser incorrectly calculates width:100% inside a
+			 * scrolling element (IE6/7)
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollOversize": false
+		},
+		
+		/**
+		 * Array referencing the nodes which are used for the features. The 
+		 * parameters of this object match what is allowed by sDom - i.e.
+		 *   <ul>
+		 *     <li>'l' - Length changing</li>
+		 *     <li>'f' - Filtering input</li>
+		 *     <li>'t' - The table!</li>
+		 *     <li>'i' - Information</li>
+		 *     <li>'p' - Pagination</li>
+		 *     <li>'r' - pRocessing</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aanFeatures": [],
+		
+		/**
+		 * Store data information - see {@link DataTable.models.oRow} for detailed
+		 * information.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoData": [],
+		
+		/**
+		 * Array of indexes which are in the current display (after filtering etc)
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplay": [],
+		
+		/**
+		 * Array of indexes for display - no filtering
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplayMaster": [],
+		
+		/**
+		 * Store information about each column that is in use
+		 *  @type array
+		 *  @default []
+		 */
+		"aoColumns": [],
+		
+		/**
+		 * Store information about the table's header
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeader": [],
+		
+		/**
+		 * Store information about the table's footer
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooter": [],
+		
+		/**
+		 * Search data array for regular expression searching
+		 *  @type array
+		 *  @default []
+		 */
+		"asDataSearch": [],
+		
+		/**
+		 * Store the applied global search information in case we want to force a 
+		 * research or compare the old search to a new one.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 */
+		"oPreviousSearch": {},
+		
+		/**
+		 * Store the applied search for each column - see 
+		 * {@link DataTable.models.oSearch} for the format that is used for the
+		 * filtering information for each column.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreSearchCols": [],
+		
+		/**
+		 * Sorting that is applied to the table. Note that the inner arrays are
+		 * used in the following manner:
+		 * <ul>
+		 *   <li>Index 0 - column number</li>
+		 *   <li>Index 1 - current sorting direction</li>
+		 *   <li>Index 2 - index of asSorting for this column</li>
+		 * </ul>
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @todo These inner arrays should really be objects
+		 */
+		"aaSorting": null,
+		
+		/**
+		 * Sorting that is always applied to the table (i.e. prefixed in front of
+		 * aaSorting).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array|null
+		 *  @default null
+		 */
+		"aaSortingFixed": null,
+		
+		/**
+		 * Classes to use for the striping of a table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"asStripeClasses": null,
+		
+		/**
+		 * If restoring a table - we should restore its striping classes as well
+		 *  @type array
+		 *  @default []
+		 */
+		"asDestroyStripes": [],
+		
+		/**
+		 * If restoring a table - we should restore its width 
+		 *  @type int
+		 *  @default 0
+		 */
+		"sDestroyWidth": 0,
+		
+		/**
+		 * Callback functions array for every time a row is inserted (i.e. on a draw).
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCallback": [],
+		
+		/**
+		 * Callback functions for the header on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeaderCallback": [],
+		
+		/**
+		 * Callback function for the footer on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooterCallback": [],
+		
+		/**
+		 * Array of callback functions for draw callback functions
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDrawCallback": [],
+		
+		/**
+		 * Array of callback functions for row created function
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCreatedCallback": [],
+		
+		/**
+		 * Callback functions for just before the table is redrawn. A return of 
+		 * false will be used to cancel the draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreDrawCallback": [],
+		
+		/**
+		 * Callback functions for when the table has been initialised.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoInitComplete": [],
+	
+		
+		/**
+		 * Callbacks for modifying the settings to be stored for state saving, prior to
+		 * saving state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSaveParams": [],
+		
+		/**
+		 * Callbacks for modifying the settings that have been stored for state saving
+		 * prior to using the stored values to restore the state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoadParams": [],
+		
+		/**
+		 * Callbacks for operating on the settings object once the saved state has been
+		 * loaded
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoaded": [],
+		
+		/**
+		 * Cache the table ID for quick access
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sTableId": "",
+		
+		/**
+		 * The TABLE node for the main table
+		 *  @type node
+		 *  @default null
+		 */
+		"nTable": null,
+		
+		/**
+		 * Permanent ref to the thead element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTHead": null,
+		
+		/**
+		 * Permanent ref to the tfoot element - if it exists
+		 *  @type node
+		 *  @default null
+		 */
+		"nTFoot": null,
+		
+		/**
+		 * Permanent ref to the tbody element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTBody": null,
+		
+		/**
+		 * Cache the wrapper node (contains all DataTables controlled elements)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTableWrapper": null,
+		
+		/**
+		 * Indicate if when using server-side processing the loading of data 
+		 * should be deferred until the second draw.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDeferLoading": false,
+		
+		/**
+		 * Indicate if all required information has been read in
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bInitialised": false,
+		
+		/**
+		 * Information about open rows. Each object in the array has the parameters
+		 * 'nTr' and 'nParent'
+		 *  @type array
+		 *  @default []
+		 */
+		"aoOpenRows": [],
+		
+		/**
+		 * Dictate the positioning of DataTables' control elements - see
+		 * {@link DataTable.model.oInit.sDom}.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sDom": null,
+		
+		/**
+		 * Which type of pagination should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string 
+		 *  @default two_button
+		 */
+		"sPaginationType": "two_button",
+		
+		/**
+		 * The cookie duration (for bStateSave) in seconds.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type int
+		 *  @default 0
+		 */
+		"iCookieDuration": 0,
+		
+		/**
+		 * The cookie name prefix.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sCookiePrefix": "",
+		
+		/**
+		 * Callback function for cookie creation.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 *  @default null
+		 */
+		"fnCookieCallback": null,
+		
+		/**
+		 * Array of callback functions for state saving. Each array element is an 
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the JSON string to save that has been thus far created. Returns
+		 *       a JSON string to be inserted into a json object 
+		 *       (i.e. '"param": [ 0, 1, 2]')</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSave": [],
+		
+		/**
+		 * Array of callback functions for state loading. Each array element is an 
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings 
+		 *       and the object stored. May return false to cancel state loading</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoad": [],
+		
+		/**
+		 * State that was loaded from the cookie. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oLoadedState": null,
+		
+		/**
+		 * Source url for AJAX data for the table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sAjaxSource": null,
+		
+		/**
+		 * Property from a given object from which to read the table data from. This
+		 * can be an empty string (when not server-side processing), in which case 
+		 * it is  assumed an an array is given directly.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sAjaxDataProp": null,
+		
+		/**
+		 * Note if draw should be blocked while getting data
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bAjaxDataGet": true,
+		
+		/**
+		 * The last jQuery XHR object that was used for server-side data gathering. 
+		 * This can be used for working with the XHR information in one of the 
+		 * callbacks
+		 *  @type object
+		 *  @default null
+		 */
+		"jqXHR": null,
+		
+		/**
+		 * Function to get the server-side data.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnServerData": null,
+		
+		/**
+		 * Functions which are called prior to sending an Ajax request so extra 
+		 * parameters can easily be sent to the server
+		 *  @type array
+		 *  @default []
+		 */
+		"aoServerParams": [],
+		
+		/**
+		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if 
+		 * required).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sServerMethod": null,
+		
+		/**
+		 * Format numbers for display.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnFormatNumber": null,
+		
+		/**
+		 * List of options that can be used for the user selectable length menu.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aLengthMenu": null,
+		
+		/**
+		 * Counter for the draws that the table does. Also used as a tracker for
+		 * server-side processing
+		 *  @type int
+		 *  @default 0
+		 */
+		"iDraw": 0,
+		
+		/**
+		 * Indicate if a redraw is being done - useful for Ajax
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDrawing": false,
+		
+		/**
+		 * Draw index (iDraw) of the last error when parsing the returned data
+		 *  @type int
+		 *  @default -1
+		 */
+		"iDrawError": -1,
+		
+		/**
+		 * Paging display length
+		 *  @type int
+		 *  @default 10
+		 */
+		"_iDisplayLength": 10,
+	
+		/**
+		 * Paging start point - aiDisplay index
+		 *  @type int
+		 *  @default 0
+		 */
+		"_iDisplayStart": 0,
+	
+		/**
+		 * Paging end point - aiDisplay index. Use fnDisplayEnd rather than
+		 * this property to get the end point
+		 *  @type int
+		 *  @default 10
+		 *  @private
+		 */
+		"_iDisplayEnd": 10,
+		
+		/**
+		 * Server-side processing - number of records in the result set
+		 * (i.e. before filtering), Use fnRecordsTotal rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type int
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsTotal": 0,
+	
+		/**
+		 * Server-side processing - number of records in the current display set
+		 * (i.e. after filtering). Use fnRecordsDisplay rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type boolean
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsDisplay": 0,
+		
+		/**
+		 * Flag to indicate if jQuery UI marking and classes should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bJUI": null,
+		
+		/**
+		 * The classes to use for the table
+		 *  @type object
+		 *  @default {}
+		 */
+		"oClasses": {},
+		
+		/**
+		 * Flag attached to the settings object so you can check in the draw 
+		 * callback if filtering has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bFiltered": false,
+		
+		/**
+		 * Flag attached to the settings object so you can check in the draw 
+		 * callback if sorting has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bSorted": false,
+		
+		/**
+		 * Indicate that if multiple rows are in the header and there is more than 
+		 * one unique cell per column, if the top one (true) or bottom one (false) 
+		 * should be used for sorting / title by DataTables.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bSortCellsTop": null,
+		
+		/**
+		 * Initialisation object that is used for the table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInit": null,
+		
+		/**
+		 * Destroy callback functions - for plug-ins to attach themselves to the
+		 * destroy so they can clean up markup and events.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDestroyCallback": [],
+	
+		
+		/**
+		 * Get the number of records in the current record set, before filtering
+		 *  @type function
+		 */
+		"fnRecordsTotal": function ()
+		{
+			if ( this.oFeatures.bServerSide ) {
+				return parseInt(this._iRecordsTotal, 10);
+			} else {
+				return this.aiDisplayMaster.length;
+			}
+		},
+		
+		/**
+		 * Get the number of records in the current record set, after filtering
+		 *  @type function
+		 */
+		"fnRecordsDisplay": function ()
+		{
+			if ( this.oFeatures.bServerSide ) {
+				return parseInt(this._iRecordsDisplay, 10);
+			} else {
+				return this.aiDisplay.length;
+			}
+		},
+		
+		/**
+		 * Set the display end point - aiDisplay index
+		 *  @type function
+		 *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here
+		 */
+		"fnDisplayEnd": function ()
+		{
+			if ( this.oFeatures.bServerSide ) {
+				if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {
+					return this._iDisplayStart+this.aiDisplay.length;
+				} else {
+					return Math.min( this._iDisplayStart+this._iDisplayLength, 
+						this._iRecordsDisplay );
+				}
+			} else {
+				return this._iDisplayEnd;
+			}
+		},
+		
+		/**
+		 * The DataTables object for this table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInstance": null,
+		
+		/**
+		 * Unique identifier for each instance of the DataTables object. If there
+		 * is an ID on the table node, then it takes that value, otherwise an
+		 * incrementing internal counter is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sInstance": null,
+	
+		/**
+		 * tabindex attribute value that is added to DataTables control elements, allowing
+		 * keyboard navigation of the table and its controls.
+		 */
+		"iTabIndex": 0,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollHead": null,
+	
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollFoot": null
+	};
+
+	/**
+	 * Extension object for DataTables that is used to provide all extension options.
+	 * 
+	 * Note that the <i>DataTable.ext</i> object is available through
+	 * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is
+	 * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.
+	 *  @namespace
+	 *  @extends DataTable.models.ext
+	 */
+	DataTable.ext = $.extend( true, {}, DataTable.models.ext );
+	
+	$.extend( DataTable.ext.oStdClasses, {
+		"sTable": "dataTable",
+	
+		/* Two buttons buttons */
+		"sPagePrevEnabled": "paginate_enabled_previous",
+		"sPagePrevDisabled": "paginate_disabled_previous",
+		"sPageNextEnabled": "paginate_enabled_next",
+		"sPageNextDisabled": "paginate_disabled_next",
+		"sPageJUINext": "",
+		"sPageJUIPrev": "",
+		
+		/* Full numbers paging buttons */
+		"sPageButton": "paginate_button",
+		"sPageButtonActive": "paginate_active",
+		"sPageButtonStaticDisabled": "paginate_button paginate_button_disabled",
+		"sPageFirst": "first",
+		"sPagePrevious": "previous",
+		"sPageNext": "next",
+		"sPageLast": "last",
+		
+		/* Striping classes */
+		"sStripeOdd": "odd",
+		"sStripeEven": "even",
+		
+		/* Empty row */
+		"sRowEmpty": "dataTables_empty",
+		
+		/* Features */
+		"sWrapper": "dataTables_wrapper",
+		"sFilter": "dataTables_filter",
+		"sInfo": "dataTables_info",
+		"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+		"sLength": "dataTables_length",
+		"sProcessing": "dataTables_processing",
+		
+		/* Sorting */
+		"sSortAsc": "sorting_asc",
+		"sSortDesc": "sorting_desc",
+		"sSortable": "sorting", /* Sortable in both directions */
+		"sSortableAsc": "sorting_asc_disabled",
+		"sSortableDesc": "sorting_desc_disabled",
+		"sSortableNone": "sorting_disabled",
+		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+		"sSortJUIAsc": "",
+		"sSortJUIDesc": "",
+		"sSortJUI": "",
+		"sSortJUIAscAllowed": "",
+		"sSortJUIDescAllowed": "",
+		"sSortJUIWrapper": "",
+		"sSortIcon": "",
+		
+		/* Scrolling */
+		"sScrollWrapper": "dataTables_scroll",
+		"sScrollHead": "dataTables_scrollHead",
+		"sScrollHeadInner": "dataTables_scrollHeadInner",
+		"sScrollBody": "dataTables_scrollBody",
+		"sScrollFoot": "dataTables_scrollFoot",
+		"sScrollFootInner": "dataTables_scrollFootInner",
+		
+		/* Misc */
+		"sFooterTH": "",
+		"sJUIHeader": "",
+		"sJUIFooter": ""
+	} );
+	
+	
+	$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {
+		/* Two buttons buttons */
+		"sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left",
+		"sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",
+		"sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right",
+		"sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",
+		"sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
+		"sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
+		
+		/* Full numbers paging buttons */
+		"sPageButton": "fg-button ui-button ui-state-default",
+		"sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled",
+		"sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled",
+		"sPageFirst": "first ui-corner-tl ui-corner-bl",
+		"sPageLast": "last ui-corner-tr ui-corner-br",
+		
+		/* Features */
+		"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+			"ui-buttonset-multi paging_", /* Note that the type is postfixed */
+		
+		/* Sorting */
+		"sSortAsc": "ui-state-default",
+		"sSortDesc": "ui-state-default",
+		"sSortable": "ui-state-default",
+		"sSortableAsc": "ui-state-default",
+		"sSortableDesc": "ui-state-default",
+		"sSortableNone": "ui-state-default",
+		"sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
+		"sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
+		"sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s",
+		"sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n",
+		"sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s",
+		"sSortJUIWrapper": "DataTables_sort_wrapper",
+		"sSortIcon": "DataTables_sort_icon",
+		
+		/* Scrolling */
+		"sScrollHead": "dataTables_scrollHead ui-state-default",
+		"sScrollFoot": "dataTables_scrollFoot ui-state-default",
+		
+		/* Misc */
+		"sFooterTH": "ui-state-default",
+		"sJUIHeader": "fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",
+		"sJUIFooter": "fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"
+	} );
+	
+	/*
+	 * Variable: oPagination
+	 * Purpose:  
+	 * Scope:    jQuery.fn.dataTableExt
+	 */
+	$.extend( DataTable.ext.oPagination, {
+		/*
+		 * Variable: two_button
+		 * Purpose:  Standard two button (forward/back) pagination
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"two_button": {
+			/*
+			 * Function: oPagination.two_button.fnInit
+			 * Purpose:  Initialise dom elements required for pagination with forward/back buttons only
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           node:nPaging - the DIV which contains this pagination control
+			 *           function:fnCallbackDraw - draw function which must be called on update
+			 */
+			"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
+			{
+				var oLang = oSettings.oLanguage.oPaginate;
+				var oClasses = oSettings.oClasses;
+				var fnClickHandler = function ( e ) {
+					if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
+					{
+						fnCallbackDraw( oSettings );
+					}
+				};
+	
+				var sAppend = (!oSettings.bJUI) ?
+					'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+
+					'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>'
+					:
+					'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+
+					'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>';
+				$(nPaging).append( sAppend );
+				
+				var els = $('a', nPaging);
+				var nPrevious = els[0],
+					nNext = els[1];
+				
+				oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler );
+				oSettings.oApi._fnBindAction( nNext,     {action: "next"},     fnClickHandler );
+				
+				/* ID the first elements only */
+				if ( !oSettings.aanFeatures.p )
+				{
+					nPaging.id = oSettings.sTableId+'_paginate';
+					nPrevious.id = oSettings.sTableId+'_previous';
+					nNext.id = oSettings.sTableId+'_next';
+	
+					nPrevious.setAttribute('aria-controls', oSettings.sTableId);
+					nNext.setAttribute('aria-controls', oSettings.sTableId);
+				}
+			},
+			
+			/*
+			 * Function: oPagination.two_button.fnUpdate
+			 * Purpose:  Update the two button pagination at the end of the draw
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           function:fnCallbackDraw - draw function to call on page change
+			 */
+			"fnUpdate": function ( oSettings, fnCallbackDraw )
+			{
+				if ( !oSettings.aanFeatures.p )
+				{
+					return;
+				}
+				
+				var oClasses = oSettings.oClasses;
+				var an = oSettings.aanFeatures.p;
+				var nNode;
+	
+				/* Loop over each instance of the pager */
+				for ( var i=0, iLen=an.length ; i<iLen ; i++ )
+				{
+					nNode = an[i].firstChild;
+					if ( nNode )
+					{
+						/* Previous page */
+						nNode.className = ( oSettings._iDisplayStart === 0 ) ?
+						    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;
+						    
+						/* Next page */
+						nNode = nNode.nextSibling;
+						nNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
+						    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;
+					}
+				}
+			}
+		},
+		
+		
+		/*
+		 * Variable: iFullNumbersShowPages
+		 * Purpose:  Change the number of pages which can be seen
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"iFullNumbersShowPages": 5,
+		
+		/*
+		 * Variable: full_numbers
+		 * Purpose:  Full numbers pagination
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"full_numbers": {
+			/*
+			 * Function: oPagination.full_numbers.fnInit
+			 * Purpose:  Initialise dom elements required for pagination with a list of the pages
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           node:nPaging - the DIV which contains this pagination control
+			 *           function:fnCallbackDraw - draw function which must be called on update
+			 */
+			"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
+			{
+				var oLang = oSettings.oLanguage.oPaginate;
+				var oClasses = oSettings.oClasses;
+				var fnClickHandler = function ( e ) {
+					if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
+					{
+						fnCallbackDraw( oSettings );
+					}
+				};
+	
+				$(nPaging).append(
+					'<a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'">'+oLang.sFirst+'</a>'+
+					'<a  tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a>'+
+					'<span></span>'+
+					'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a>'+
+					'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'</a>'
+				);
+				var els = $('a', nPaging);
+				var nFirst = els[0],
+					nPrev = els[1],
+					nNext = els[2],
+					nLast = els[3];
+				
+				oSettings.oApi._fnBindAction( nFirst, {action: "first"},    fnClickHandler );
+				oSettings.oApi._fnBindAction( nPrev,  {action: "previous"}, fnClickHandler );
+				oSettings.oApi._fnBindAction( nNext,  {action: "next"},     fnClickHandler );
+				oSettings.oApi._fnBindAction( nLast,  {action: "last"},     fnClickHandler );
+				
+				/* ID the first elements only */
+				if ( !oSettings.aanFeatures.p )
+				{
+					nPaging.id = oSettings.sTableId+'_paginate';
+					nFirst.id =oSettings.sTableId+'_first';
+					nPrev.id =oSettings.sTableId+'_previous';
+					nNext.id =oSettings.sTableId+'_next';
+					nLast.id =oSettings.sTableId+'_last';
+				}
+			},
+			
+			/*
+			 * Function: oPagination.full_numbers.fnUpdate
+			 * Purpose:  Update the list of page buttons shows
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           function:fnCallbackDraw - draw function to call on page change
+			 */
+			"fnUpdate": function ( oSettings, fnCallbackDraw )
+			{
+				if ( !oSettings.aanFeatures.p )
+				{
+					return;
+				}
+				
+				var iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;
+				var iPageCountHalf = Math.floor(iPageCount / 2);
+				var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
+				var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
+				var sList = "";
+				var iStartButton, iEndButton, i, iLen;
+				var oClasses = oSettings.oClasses;
+				var anButtons, anStatic, nPaginateList, nNode;
+				var an = oSettings.aanFeatures.p;
+				var fnBind = function (j) {
+					oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
+						/* Use the information in the element to jump to the required page */
+						oSettings.oApi._fnPageChange( oSettings, e.data.page );
+						fnCallbackDraw( oSettings );
+						e.preventDefault();
+					} );
+				};
+				
+				/* Pages calculation */
+				if ( oSettings._iDisplayLength === -1 )
+				{
+					iStartButton = 1;
+					iEndButton = 1;
+					iCurrentPage = 1;
+				}
+				else if (iPages < iPageCount)
+				{
+					iStartButton = 1;
+					iEndButton = iPages;
+				}
+				else if (iCurrentPage <= iPageCountHalf)
+				{
+					iStartButton = 1;
+					iEndButton = iPageCount;
+				}
+				else if (iCurrentPage >= (iPages - iPageCountHalf))
+				{
+					iStartButton = iPages - iPageCount + 1;
+					iEndButton = iPages;
+				}
+				else
+				{
+					iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
+					iEndButton = iStartButton + iPageCount - 1;
+				}
+	
+				
+				/* Build the dynamic list */
+				for ( i=iStartButton ; i<=iEndButton ; i++ )
+				{
+					sList += (iCurrentPage !== i) ?
+						'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+'">'+oSettings.fnFormatNumber(i)+'</a>' :
+						'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButtonActive+'">'+oSettings.fnFormatNumber(i)+'</a>';
+				}
+				
+				/* Loop over each instance of the pager */
+				for ( i=0, iLen=an.length ; i<iLen ; i++ )
+				{
+					nNode = an[i];
+					if ( !nNode.hasChildNodes() )
+					{
+						continue;
+					}
+					
+					/* Build up the dynamic list first - html and listeners */
+					$('span:eq(0)', nNode)
+						.html( sList )
+						.children('a').each( fnBind );
+					
+					/* Update the permanent button's classes */
+					anButtons = nNode.getElementsByTagName('a');
+					anStatic = [
+						anButtons[0], anButtons[1], 
+						anButtons[anButtons.length-2], anButtons[anButtons.length-1]
+					];
+	
+					$(anStatic).removeClass( oClasses.sPageButton+" "+oClasses.sPageButtonActive+" "+oClasses.sPageButtonStaticDisabled );
+					$([anStatic[0], anStatic[1]]).addClass( 
+						(iCurrentPage==1) ?
+							oClasses.sPageButtonStaticDisabled :
+							oClasses.sPageButton
+					);
+					$([anStatic[2], anStatic[3]]).addClass(
+						(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?
+							oClasses.sPageButtonStaticDisabled :
+							oClasses.sPageButton
+					);
+				}
+			}
+		}
+	} );
+	
+	$.extend( DataTable.ext.oSort, {
+		/*
+		 * text sorting
+		 */
+		"string-pre": function ( a )
+		{
+			if ( typeof a != 'string' ) {
+				a = (a !== null && a.toString) ? a.toString() : '';
+			}
+			return a.toLowerCase();
+		},
+	
+		"string-asc": function ( x, y )
+		{
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+		
+		"string-desc": function ( x, y )
+		{
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		},
+		
+		
+		/*
+		 * html sorting (ignore html tags)
+		 */
+		"html-pre": function ( a )
+		{
+			return a.replace( /<.*?>/g, "" ).toLowerCase();
+		},
+		
+		"html-asc": function ( x, y )
+		{
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+		
+		"html-desc": function ( x, y )
+		{
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		},
+		
+		
+		/*
+		 * date sorting
+		 */
+		"date-pre": function ( a )
+		{
+			var x = Date.parse( a );
+			
+			if ( isNaN(x) || x==="" )
+			{
+				x = Date.parse( "01/01/1970 00:00:00" );
+			}
+			return x;
+		},
+	
+		"date-asc": function ( x, y )
+		{
+			return x - y;
+		},
+		
+		"date-desc": function ( x, y )
+		{
+			return y - x;
+		},
+		
+		
+		/*
+		 * numerical sorting
+		 */
+		"numeric-pre": function ( a )
+		{
+			return (a=="-" || a==="") ? 0 : a*1;
+		},
+	
+		"numeric-asc": function ( x, y )
+		{
+			return x - y;
+		},
+		
+		"numeric-desc": function ( x, y )
+		{
+			return y - x;
+		}
+	} );
+	
+	
+	$.extend( DataTable.ext.aTypes, [
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string is numeric
+		 * Returns:  string:'numeric' or null
+		 * Inputs:   mixed:sText - string to check
+		 */
+		function ( sData )
+		{
+			/* Allow zero length strings as a number */
+			if ( typeof sData === 'number' )
+			{
+				return 'numeric';
+			}
+			else if ( typeof sData !== 'string' )
+			{
+				return null;
+			}
+			
+			var sValidFirstChars = "0123456789-";
+			var sValidChars = "0123456789.";
+			var Char;
+			var bDecimal = false;
+			
+			/* Check for a valid first char (no period and allow negatives) */
+			Char = sData.charAt(0); 
+			if (sValidFirstChars.indexOf(Char) == -1) 
+			{
+				return null;
+			}
+			
+			/* Check all the other characters are valid */
+			for ( var i=1 ; i<sData.length ; i++ ) 
+			{
+				Char = sData.charAt(i); 
+				if (sValidChars.indexOf(Char) == -1) 
+				{
+					return null;
+				}
+				
+				/* Only allowed one decimal place... */
+				if ( Char == "." )
+				{
+					if ( bDecimal )
+					{
+						return null;
+					}
+					bDecimal = true;
+				}
+			}
+			
+			return 'numeric';
+		},
+		
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string is actually a formatted date
+		 * Returns:  string:'date' or null
+		 * Inputs:   string:sText - string to check
+		 */
+		function ( sData )
+		{
+			var iParse = Date.parse(sData);
+			if ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )
+			{
+				return 'date';
+			}
+			return null;
+		},
+		
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string should be treated as an HTML string
+		 * Returns:  string:'html' or null
+		 * Inputs:   string:sText - string to check
+		 */
+		function ( sData )
+		{
+			if ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )
+			{
+				return 'html';
+			}
+			return null;
+		}
+	] );
+	
+
+	// jQuery aliases
+	$.fn.DataTable = DataTable;
+	$.fn.dataTable = DataTable;
+	$.fn.dataTableSettings = DataTable.settings;
+	$.fn.dataTableExt = DataTable.ext;
+
+
+	// Information about events fired by DataTables - for documentation.
+	/**
+	 * Draw event, fired whenever the table is redrawn on the page, at the same point as
+	 * fnDrawCallback. This may be useful for binding events or performing calculations when
+	 * the table is altered at all.
+	 *  @name DataTable#draw
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Filter event, fired when the filtering applied to the table (using the build in global
+	 * global filter, or column filters) is altered.
+	 *  @name DataTable#filter
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page change event, fired when the paging of the table is altered.
+	 *  @name DataTable#page
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Sort event, fired when the sorting applied to the table is altered.
+	 *  @name DataTable#sort
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * DataTables initialisation complete event, fired when the table is fully drawn,
+	 * including Ajax data loaded, if Ajax data is required.
+	 *  @name DataTable#init
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The JSON object request from the server - only
+	 *    present if client-side Ajax sourced data is used</li></ol>
+	 */
+
+	/**
+	 * State save event, fired when the table has changed state a new state save is required.
+	 * This method allows modification of the state saving object prior to actually doing the
+	 * save, including addition or other state properties (for plug-ins) or modification
+	 * of a DataTables core property.
+	 *  @name DataTable#stateSaveParams
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The state information to be saved
+	 */
+
+	/**
+	 * State load event, fired when the table is loading state from the stored data, but
+	 * prior to the settings object being modified by the saved state - allowing modification
+	 * of the saved state is required or loading of state for a plug-in.
+	 *  @name DataTable#stateLoadParams
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * State loaded event, fired when state has been loaded from stored data and the settings
+	 * object has been modified by the loaded data.
+	 *  @name DataTable#stateLoaded
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * Processing event, fired when DataTables is doing some kind of processing (be it,
+	 * sort, filter or anything else). Can be used to indicate to the end user that
+	 * there is something happening, or that something has finished.
+	 *  @name DataTable#processing
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {boolean} bShow Flag for if DataTables is doing processing or not
+	 */
+
+	/**
+	 * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to 
+	 * made to the server for new data (note that this trigger is called in fnServerData,
+	 * if you override fnServerData and which to use this event, you need to trigger it in
+	 * you success function).
+	 *  @name DataTable#xhr
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {object} json JSON returned from the server
+	 */
+
+	/**
+	 * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing
+	 * the bDestroy:true parameter in the initialisation object. This can be used to remove
+	 * bound events, added DOM nodes, etc.
+	 *  @name DataTable#destroy
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+}));
+
+}(window, document));
+
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl.css	(revision 25596)
@@ -0,0 +1,158 @@
+div.jGrowl {
+	z-index: 			9999;
+	color: 				#fff;
+	font-size: 			12px;
+}
+
+div.jGrowl-notification.success>div,
+div.jGrowl-notification.error>div,
+div.jGrowl-notification.warning>div{
+  margin-left:45px;
+}
+div.jGrowl-notification.success {
+	background: url(jgrowl-check.png) no-repeat 5px 5px;
+}
+div.jGrowl-notification.error {
+	background: url(jgrowl-error.png) no-repeat 5px 5px;
+}
+div.jGrowl-notification.warning {
+	background: url(jgrowl-alert.png) no-repeat 5px 5px;
+}
+div.jGrowl-notification.warning:before {
+  content:none;
+}
+
+/** Cross Browser Styling **/
+div.center div.jGrowl-notification, div.center div.jGrowl-closer {
+	margin-left: 		auto;
+	margin-right: 		auto;
+}
+
+div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
+	background-color: 		#000;
+	opacity: 				.85;
+	-ms-filter: 			"progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; 
+	filter: 				progid:DXImageTransform.Microsoft.Alpha(Opacity=85); 
+	zoom: 					1;
+	width: 					300px;
+	padding: 				5px;
+	margin-top: 			5px;
+	margin-bottom: 			5px;
+	font-family: 			Tahoma, Arial, Helvetica, sans-serif;
+	font-size: 				1em;
+	text-align: 			left;
+	display: 				none;
+  border-radius: 5px;
+	-moz-border-radius: 	5px;
+	-webkit-border-radius:	5px;
+}
+
+div.jGrowl div.jGrowl-notification {
+	min-height: 			40px;
+}
+
+div.jGrowl div.jGrowl-notification,
+div.jGrowl div.jGrowl-closer {
+	margin: 				8px;
+}
+
+div.jGrowl div.jGrowl-notification div.jGrowl-header {
+	font-weight: 			bold;
+	font-size:				1em;
+}
+
+div.jGrowl div.jGrowl-notification div.jGrowl-message {
+  font-size:        0.9em;
+}
+
+div.jGrowl div.jGrowl-notification div.jGrowl-close {
+	z-index:				99;
+	float: 					right;
+	font-weight: 			bold;
+	font-size: 				1em;
+	cursor:					pointer;
+}
+
+div.jGrowl div.jGrowl-closer {
+	padding-top: 			4px;
+	padding-bottom: 		4px;
+	cursor: 				pointer;
+	font-size:				.9em;
+	font-weight: 			bold;
+	text-align: 			center;
+}
+
+/** Hide jGrowl when printing **/
+@media print {
+	div.jGrowl {
+		display: 			none;
+	}
+}
+
+/** Special IE6 Style Positioning **/
+div.ie6 {
+	position: 			absolute;
+}
+
+div.ie6.top-right {
+	right: 				auto;
+	bottom: 			auto;
+	left: 				expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.top-left {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-right {
+	left: 				expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-left {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.center {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+	width: 				100%;
+}
+
+/** Normal Style Positions **/
+div.jGrowl {
+	position:			absolute;
+}
+
+body > div.jGrowl {
+	position:			fixed;
+}
+
+div.jGrowl.top-left {
+	left: 				0px;
+	top: 				0px;
+}
+
+div.jGrowl.top-right {
+	right: 				0px;
+	top: 				0px;
+}
+
+div.jGrowl.bottom-left {
+	left: 				0px;
+	bottom:				0px;
+}
+
+div.jGrowl.bottom-right {
+	right: 				0px;
+	bottom: 			0px;
+}
+
+div.jGrowl.center {
+	top: 				0px;
+	width: 				50%;
+	left: 				25%;
+}
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl_minimized.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl_minimized.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.jgrowl_minimized.js	(revision 25596)
@@ -0,0 +1,4 @@
+(function(e){var t=function(){return!1===e.support.boxModel&&e.support.objectAll&&e.support.leadingWhitespace}();e.jGrowl=function(t,i){0==e("#jGrowl").size()&&e('<div id="jGrowl"></div>').addClass(i&&i.position?i.position:e.jGrowl.defaults.position).appendTo("body"),e("#jGrowl").jGrowl(t,i)},e.fn.jGrowl=function(t,i){if(e.isFunction(this.each)){var o=arguments;return this.each(function(){void 0==e(this).data("jGrowl.instance")&&(e(this).data("jGrowl.instance",e.extend(new e.fn.jGrowl,{notifications:[],element:null,interval:null})),e(this).data("jGrowl.instance").startup(this)),e.isFunction(e(this).data("jGrowl.instance")[t])?e(this).data("jGrowl.instance")[t].apply(e(this).data("jGrowl.instance"),e.makeArray(o).slice(1)):e(this).data("jGrowl.instance").create(t,i)})}},e.extend(e.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:!1,position:"top-right",glue:"after",theme:"default",themeState:"highlight",corners:"10px",check:250,life:3e3,closeDuration:"normal",openDuration:"normal",easing:"swing",closer:!0,closeTemplate:"&times;",closerTemplate:"<div>[ close all ]</div>",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(t,i){var i=e.extend({},this.defaults,i);i.speed!==void 0&&(i.openDuration=i.speed,i.closeDuration=i.speed),this.notifications.push({message:t,options:i}),i.log.apply(this.element,[this.element,t,i])},render:function(t){var i=this,o=t.message,n=t.options;n.themeState=""==n.themeState?"":"ui-state-"+n.themeState;var t=e("<div/>").addClass("jGrowl-notification "+n.themeState+" ui-corner-all"+(void 0!=n.group&&""!=n.group?" "+n.group:"")).append(e("<div/>").addClass("jGrowl-close").html(n.closeTemplate)).append(e("<div/>").addClass("jGrowl-header").html(n.header)).append(e("<div/>").addClass("jGrowl-message").html(o)).data("jGrowl",n).addClass(n.theme).children("div.jGrowl-close").bind("click.jGrowl",function(){e(this).parent().trigger("jGrowl.beforeClose")}).parent();e(t).bind("mouseover.jGrowl",function(){e("div.jGrowl-notification",i.element).data("jGrowl.pause",!0)}).bind("mouseout.jGrowl",function(){e("div.jGrowl-notification",i.element).data("jGrowl.pause",!1)}).bind("jGrowl.beforeOpen",function(){n.beforeOpen.apply(t,[t,o,n,i.element])!==!1&&e(this).trigger("jGrowl.open")}).bind("jGrowl.open",function(){n.open.apply(t,[t,o,n,i.element])!==!1&&("after"==n.glue?e("div.jGrowl-notification:last",i.element).after(t):e("div.jGrowl-notification:first",i.element).before(t),e(this).animate(n.animateOpen,n.openDuration,n.easing,function(){e.support.opacity===!1&&this.style.removeAttribute("filter"),null!==e(this).data("jGrowl")&&(e(this).data("jGrowl").created=new Date),e(this).trigger("jGrowl.afterOpen")}))}).bind("jGrowl.afterOpen",function(){n.afterOpen.apply(t,[t,o,n,i.element])}).bind("jGrowl.beforeClose",function(){n.beforeClose.apply(t,[t,o,n,i.element])!==!1&&e(this).trigger("jGrowl.close")}).bind("jGrowl.close",function(){e(this).data("jGrowl.pause",!0),e(this).animate(n.animateClose,n.closeDuration,n.easing,function(){e.isFunction(n.close)?n.close.apply(t,[t,o,n,i.element])!==!1&&e(this).remove():e(this).remove()})}).trigger("jGrowl.beforeOpen"),""!=n.corners&&void 0!=e.fn.corner&&e(t).corner(n.corners),e("div.jGrowl-notification:parent",i.element).size()>1&&0==e("div.jGrowl-closer",i.element).size()&&this.defaults.closer!==!1&&e(this.defaults.closerTemplate).addClass("jGrowl-closer "+this.defaults.themeState+" ui-corner-all").addClass(this.defaults.theme).appendTo(i.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){e(this).siblings().trigger("jGrowl.beforeClose"),e.isFunction(i.defaults.closer)&&i.defaults.closer.apply(e(this).parent()[0],[e(this).parent()[0]])})},update:function(){e(this.element).find("div.jGrowl-notification:parent").each(function(){void 0!=e(this).data("jGrowl")&&void 0!==e(this).data("jGrowl").created&&e(this).data("jGrowl").created.getTime()+parseInt(e(this).data("jGrowl").life)<(new Date).getTime()&&e(this).data("jGrowl").sticky!==!0&&(void 0==e(this).data("jGrowl.pause")||e(this).data("jGrowl.pause")!==!0)&&e(this).trigger("jGrowl.beforeClose")}),this.notifications.length>0&&(0==this.defaults.pool||e(this.element).find("div.jGrowl-notification:parent").size()<this.defaults.pool)&&this.render(this.notifications.shift()),2>e(this.element).find("div.jGrowl-notification:parent").size()&&e(this.element).find("div.jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){e(this).remove()})},startup:function(i){this.element=e(i).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),this.interval=setInterval(function(){e(i).data("jGrowl.instance").update()},parseInt(this.defaults.check)),t&&e(this.element).addClass("ie6")},shutdown:function(){e(this.element).removeClass("jGrowl").find("div.jGrowl-notification").trigger("jGrowl.close").parent().empty()},close:function(){e(this.element).find("div.jGrowl-notification").each(function(){e(this).trigger("jGrowl.beforeClose")})}}),e.jGrowl.defaults=e.fn.jGrowl.prototype.defaults})(jQuery);
+/*
+//@ sourceMappingURL=jquery.jgrowl.map
+*/
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.js	(revision 25596)
@@ -0,0 +1,186 @@
+/*
+ * jQuery Progress Bar plugin
+ * Version 2.0 (06/22/2009)
+ * @requires jQuery v1.2.1 or later
+ *
+ * Copyright (c) 2008 Gary Teo
+ * http://t.wits.sg
+
+USAGE:
+	$(".someclass").progressBar();
+	$("#progressbar").progressBar();
+	$("#progressbar").progressBar(45);							// percentage
+	$("#progressbar").progressBar({showText: false });			// percentage with config
+	$("#progressbar").progressBar(45, {showText: false });		// percentage with config
+*/
+(function($) {
+	$.extend({
+		progressBar: new function() {
+
+			this.defaults = {
+				steps			: 20,											// steps taken to reach target
+				stepDuration	: 20,											
+				max				: 100,											// Upon 100% i'd assume, but configurable
+				showText		: true,											// show text with percentage in next to the progressbar? - default : true
+				textFormat		: 'percentage',									// Or otherwise, set to 'fraction'
+				width			: 120,											// Width of the progressbar - don't forget to adjust your image too!!!												// Image to use in the progressbar. Can be a single image too: 'images/progressbg_green.gif'
+				height			: 12,											// Height of the progressbar - don't forget to adjust your image too!!!
+				callback		: null,											// Calls back with the config object that has the current percentage, target percentage, current image, etc
+				boxImage		: 'images/progressbar.gif',						// boxImage : image around the progress bar
+				barImage		: {
+									0:	'images/progressbg_red.gif',
+									30: 'images/progressbg_orange.gif',
+									70: 'images/progressbg_green.gif'
+								},
+				
+				
+				// Internal use
+				running_value	: 0,
+				value			: 0,
+				image			: null
+			};
+			
+			/* public methods */
+			this.construct = function(arg1, arg2) {
+				var argvalue	= null;
+				var argconfig	= null;
+				
+				if (arg1 != null) {
+					if (!isNaN(arg1)) {
+						argvalue = arg1;
+						if (arg2 != null) {
+							argconfig = arg2;
+						}
+					} else {
+						argconfig = arg1; 
+					}
+				}
+				
+				return this.each(function(child) {
+					var pb		= this;
+					var config	= this.config;
+					
+					if (argvalue != null && this.bar != null && this.config != null) {
+						this.config.value 		= parseInt(argvalue)
+						if (argconfig != null)
+							pb.config			= $.extend(this.config, argconfig);
+						config	= pb.config;
+					} else {
+						var $this				= $(this);
+						var config				= $.extend({}, $.progressBar.defaults, argconfig);
+						config.id				= $this.attr('id') ? $this.attr('id') : Math.ceil(Math.random() * 100000);	// random id, if none provided
+						
+						if (argvalue == null)
+							argvalue	= $this.html().replace("%","")	// parse percentage
+						
+						config.value			= parseInt(argvalue);
+						config.running_value	= 0;
+						config.image			= getBarImage(config);
+						
+						var numeric = ['steps', 'stepDuration', 'max', 'width', 'height', 'running_value', 'value'];
+						for (var i=0; i<numeric.length; i++) 
+							config[numeric[i]] = parseInt(config[numeric[i]]);
+						
+						$this.html("");
+						var bar					= document.createElement('img');
+						var text				= document.createElement('span');
+						var $bar				= $(bar);
+						var $text				= $(text);
+						pb.bar					= $bar;
+						
+						$bar.attr('id', config.id + "_pbImage");
+						$text.attr('id', config.id + "_pbText");
+						$text.html(getText(config));
+						$bar.attr('title', getText(config));
+						$bar.attr('alt', getText(config));
+						$bar.attr('src', config.boxImage);
+						$bar.attr('width', config.width);
+						$bar.css("width", config.width + "px");
+						$bar.css("height", config.height + "px");
+						$bar.css("background-image", "url(" + config.image + ")");
+						$bar.css("background-position", ((config.width * -1)) + 'px 50%');
+						$bar.css("padding", "0");
+						$bar.css("margin", "0");
+						$this.append($bar);
+						$this.append($text);
+					}
+
+					function getPercentage(config) {
+						return config.running_value * 100 / config.max;
+					}
+
+					function getBarImage(config) {
+						var image = config.barImage;
+						if (typeof(config.barImage) == 'object') {
+							for (var i in config.barImage) {
+								if (config.running_value >= parseInt(i)) {
+									image = config.barImage[i];
+								} else { break; }
+							}
+						}
+						return image;
+					}
+					
+					function getText(config) {
+						if (config.showText) {
+							if (config.textFormat == 'percentage') {
+								return " " + Math.round(config.running_value) + "%";
+							} else if (config.textFormat == 'fraction') {
+								return " " + config.running_value + '/' + config.max;
+							}
+						}
+					}
+					
+					config.increment = Math.round((config.value - config.running_value)/config.steps);
+					if (config.increment < 0)
+						config.increment *= -1;
+					if (config.increment < 1)
+						config.increment = 1;
+					
+					var t = setInterval(function() {
+						var pixels	= config.width / 100;			// Define how many pixels go into 1%
+						
+						if (config.running_value > config.value) {
+							if (config.running_value - config.increment  < config.value) {
+								config.running_value = config.value;
+							} else {
+								config.running_value -= config.increment;
+							}
+						}
+						else if (config.running_value < config.value) {
+							if (config.running_value + config.increment  > config.value) {
+								config.running_value = config.value;
+							} else {
+								config.running_value += config.increment;
+							}
+						}
+						
+						if (config.running_value == config.value)
+							clearInterval(t);
+						
+						var $bar	= $("#" + config.id + "_pbImage");
+						var $text	= $("#" + config.id + "_pbText");
+						var image	= getBarImage(config);
+						if (image != config.image) {
+							$bar.css("background-image", "url(" + image + ")");
+							config.image = image;
+						}
+						$bar.css("background-position", (((config.width * -1)) + (getPercentage(config) * pixels)) + 'px 50%');
+						$bar.attr('title', getText(config));
+						$text.html(getText(config));
+						
+						if (config.callback != null && typeof(config.callback) == 'function')
+							config.callback(config);
+						
+						pb.config = config;
+					}, config.stepDuration); 
+				});
+			};
+		}
+	});
+		
+	$.fn.extend({
+        progressBar: $.progressBar.construct
+	});
+	
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.progressbar.min.js	(revision 25596)
@@ -0,0 +1,20 @@
+
+(function($){$.extend({progressBar:new function(){this.defaults={steps:20,stepDuration:20,max:100,showText:true,textFormat:'percentage',width:120,height:12,callback:null,boxImage:'images/progressbar.gif',barImage:{0:'images/progressbg_red.gif',30:'images/progressbg_orange.gif',70:'images/progressbg_green.gif'},running_value:0,value:0,image:null};this.construct=function(arg1,arg2){var argvalue=null;var argconfig=null;if(arg1!=null){if(!isNaN(arg1)){argvalue=arg1;if(arg2!=null){argconfig=arg2;}}else{argconfig=arg1;}}
+return this.each(function(child){var pb=this;var config=this.config;if(argvalue!=null&&this.bar!=null&&this.config!=null){this.config.value=parseInt(argvalue)
+if(argconfig!=null)
+pb.config=$.extend(this.config,argconfig);config=pb.config;}else{var $this=$(this);var config=$.extend({},$.progressBar.defaults,argconfig);config.id=$this.attr('id')?$this.attr('id'):Math.ceil(Math.random()*100000);if(argvalue==null)
+argvalue=$this.html().replace("%","")
+config.value=parseInt(argvalue);config.running_value=0;config.image=getBarImage(config);var numeric=['steps','stepDuration','max','width','height','running_value','value'];for(var i=0;i<numeric.length;i++)
+config[numeric[i]]=parseInt(config[numeric[i]]);$this.html("");var bar=document.createElement('img');var text=document.createElement('span');var $bar=$(bar);var $text=$(text);pb.bar=$bar;$bar.attr('id',config.id+"_pbImage");$text.attr('id',config.id+"_pbText");$text.html(getText(config));$bar.attr('title',getText(config));$bar.attr('alt',getText(config));$bar.attr('src',config.boxImage);$bar.attr('width',config.width);$bar.css("width",config.width+"px");$bar.css("height",config.height+"px");$bar.css("background-image","url("+config.image+")");$bar.css("background-position",((config.width*-1))+'px 50%');$bar.css("padding","0");$bar.css("margin","0");$this.append($bar);$this.append($text);}
+function getPercentage(config){return config.running_value*100/config.max;}
+function getBarImage(config){var image=config.barImage;if(typeof(config.barImage)=='object'){for(var i in config.barImage){if(config.running_value>=parseInt(i)){image=config.barImage[i];}else{break;}}}
+return image;}
+function getText(config){if(config.showText){if(config.textFormat=='percentage'){return" "+Math.round(config.running_value)+"%";}else if(config.textFormat=='fraction'){return" "+config.running_value+'/'+config.max;}}}
+config.increment=Math.round((config.value-config.running_value)/config.steps);if(config.increment<0)
+config.increment*=-1;if(config.increment<1)
+config.increment=1;var t=setInterval(function(){var pixels=config.width/100;if(config.running_value>config.value){if(config.running_value-config.increment<config.value){config.running_value=config.value;}else{config.running_value-=config.increment;}}
+else if(config.running_value<config.value){if(config.running_value+config.increment>config.value){config.running_value=config.value;}else{config.running_value+=config.increment;}}
+if(config.running_value==config.value)
+clearInterval(t);var $bar=$("#"+config.id+"_pbImage");var $text=$("#"+config.id+"_pbText");var image=getBarImage(config);if(image!=config.image){$bar.css("background-image","url("+image+")");config.image=image;}
+$bar.css("background-position",(((config.width*-1))+(getPercentage(config)*pixels))+'px 50%');$bar.attr('title',getText(config));$text.html(getText(config));if(config.callback!=null&&typeof(config.callback)=='function')
+config.callback(config);pb.config=config;},config.stepDuration);});};}});$.fn.extend({progressBar:$.progressBar.construct});})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.sort.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.sort.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.sort.js	(revision 25596)
@@ -0,0 +1,65 @@
+/**
+ * jQuery.fn.sortElements
+ * --------------
+ * @param Function comparator:
+ *   Exactly the same behaviour as [1,2,3].sort(comparator)
+ *   
+ * @param Function getSortable
+ *   A function that should return the element that is
+ *   to be sorted. The comparator will run on the
+ *   current collection, but you may want the actual
+ *   resulting sort to occur on a parent or another
+ *   associated element.
+ *   
+ *   E.g. $('td').sortElements(comparator, function(){
+ *      return this.parentNode; 
+ *   })
+ *   
+ *   The <td>'s parent (<tr>) will be sorted instead
+ *   of the <td> itself.
+ */
+jQuery.fn.sortElements = (function(){
+ 
+    var sort = [].sort;
+ 
+    return function(comparator, getSortable) {
+ 
+        getSortable = getSortable || function(){return this;};
+ 
+        var placements = this.map(function(){
+ 
+            var sortElement = getSortable.call(this),
+                parentNode = sortElement.parentNode,
+ 
+                // Since the element itself will change position, we have
+                // to have some way of storing its original position in
+                // the DOM. The easiest way is to have a 'flag' node:
+                nextSibling = parentNode.insertBefore(
+                    document.createTextNode(''),
+                    sortElement.nextSibling
+                );
+ 
+            return function() {
+ 
+                if (parentNode === this) {
+                    throw new Error(
+                        "You can't sort elements if any one is a descendant of another."
+                    );
+                }
+ 
+                // Insert before flag:
+                parentNode.insertBefore(this, nextSibling);
+                // Remove flag:
+                parentNode.removeChild(nextSibling);
+ 
+            };
+ 
+        });
+ 
+        return sort.call(this, comparator).each(function(i){
+            placements[i].call(getSortable.call(this));
+        });
+ 
+    };
+ 
+})();
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.tipTip.minified.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.tipTip.minified.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.tipTip.minified.js	(revision 25596)
@@ -0,0 +1,21 @@
+ /*
+ * TipTip
+ * Copyright 2010 Drew Wilson
+ * www.drewwilson.com
+ * code.drewwilson.com/entry/tiptip-jquery-plugin
+ *
+ * Version 1.3   -   Updated: Mar. 23, 2010
+ *
+ * This Plug-In will create a custom tooltip to replace the default
+ * browser tooltip. It is extremely lightweight and very smart in
+ * that it detects the edges of the browser window and will make sure
+ * the tooltip stays within the current window size. As a result the
+ * tooltip will adjust itself to be displayed above, below, to the left 
+ * or to the right depending on what is necessary to stay within the
+ * browser window. It is completely customizable as well via CSS.
+ *
+ * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+(function($){$.fn.tipTip=function(options){var defaults={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var opts=$.extend(defaults,options);if($("#tiptip_holder").length<=0){var tiptip_holder=$('<div id="tiptip_holder" style="max-width:'+opts.maxWidth+';"></div>');var tiptip_content=$('<div id="tiptip_content"></div>');var tiptip_arrow=$('<div id="tiptip_arrow"></div>');$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))}else{var tiptip_holder=$("#tiptip_holder");var tiptip_content=$("#tiptip_content");var tiptip_arrow=$("#tiptip_arrow")}return this.each(function(){var org_elem=$(this);if(opts.content){var org_title=opts.content}else{var org_title=org_elem.attr(opts.attribute)}if(org_title!=""){if(!opts.content){org_elem.removeAttr(opts.attribute)}var timeout=false;if(opts.activation=="hover"){org_elem.hover(function(){active_tiptip()},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}else if(opts.activation=="focus"){org_elem.focus(function(){active_tiptip()}).blur(function(){deactive_tiptip()})}else if(opts.activation=="click"){org_elem.click(function(){active_tiptip();return false}).hover(function(){},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_title);tiptip_holder.hide().removeAttr("class").css("margin","0").css("max-width",opts.maxWidth);tiptip_arrow.removeAttr("style");var top=parseInt(org_elem.offset()['top']);var left=parseInt(org_elem.offset()['left']);var org_width=parseInt(org_elem.outerWidth());var org_height=parseInt(org_elem.outerHeight());var tip_w=tiptip_holder.outerWidth();var tip_h=tiptip_holder.outerHeight();var w_compare=Math.round((org_width-tip_w)/2);var h_compare=Math.round((org_height-tip_h)/2);var marg_left=Math.round(left+w_compare);var marg_top=Math.round(top+org_height+opts.edgeOffset);var t_class="";var arrow_top="";var arrow_left=Math.round(tip_w-12)/2;if(opts.defaultPosition=="bottom"){t_class="_bottom"}else if(opts.defaultPosition=="top"){t_class="_top"}else if(opts.defaultPosition=="left"){t_class="_left"}else if(opts.defaultPosition=="right"){t_class="_right"}var right_compare=(w_compare+left)<parseInt($(window).scrollLeft());var left_compare=(tip_w+left)>parseInt($(window).width());if((right_compare&&w_compare<0)||(t_class=="_right"&&!left_compare)||(t_class=="_left"&&left<(tip_w+opts.edgeOffset+5))){t_class="_right";arrow_top=Math.round(tip_h-13)/2;arrow_left=-12;marg_left=Math.round(left+org_width+opts.edgeOffset);marg_top=Math.round(top+h_compare)}else if((left_compare&&w_compare<0)||(t_class=="_left"&&!right_compare)){t_class="_left";arrow_top=Math.round(tip_h-13)/2;arrow_left=Math.round(tip_w);marg_left=Math.round(left-(tip_w+opts.edgeOffset+5));marg_top=Math.round(top+h_compare)}var top_compare=(top+org_height+opts.edgeOffset+tip_h+8)>parseInt($(window).height()+$(window).scrollTop());var bottom_compare=((top+org_height)-(opts.edgeOffset+tip_h+8))<0;if(top_compare||(t_class=="_bottom"&&top_compare)||(t_class=="_top"&&!bottom_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_top"}else{t_class=t_class+"_top"}arrow_top=tip_h;marg_top=Math.round(top-(tip_h+5+opts.edgeOffset))}else if(bottom_compare|(t_class=="_top"&&bottom_compare)||(t_class=="_bottom"&&!top_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_bottom"}else{t_class=t_class+"_bottom"}arrow_top=-12;marg_top=Math.round(top+org_height+opts.edgeOffset)}if(t_class=="_right_top"||t_class=="_left_top"){marg_top=marg_top+5}else if(t_class=="_right_bottom"||t_class=="_left_bottom"){marg_top=marg_top-5}if(t_class=="_left_top"||t_class=="_left_bottom"){marg_left=marg_left+5}tiptip_arrow.css({"margin-left":arrow_left+"px","margin-top":arrow_top+"px"});tiptip_holder.css({"margin-left":marg_left+"px","margin-top":marg_top+"px"}).attr("class","tip"+t_class);if(timeout){clearTimeout(timeout)}timeout=setTimeout(function(){tiptip_holder.stop(true,true).fadeIn(opts.fadeIn)},opts.delay)}function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout(timeout)}tiptip_holder.fadeOut(opts.fadeOut)}}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.css	(revision 25596)
@@ -0,0 +1,16 @@
+/* TokenInput (with Facebook style) */
+ul.token-input-list {overflow: hidden; height: auto !important; height: 1%;width: 400px;border: 1px solid #8496ba;cursor: text;font-size: 12px;font-family: Verdana;min-height: 1px;z-index: 999;margin: 0;padding: 0;background-color: #fff;list-style-type: none;clear: left;}
+ul.token-input-list li input {border: 0;width: 100px;padding: 3px 8px;background-color: white;margin: 2px 0;-webkit-appearance: caret;}
+li.token-input-token {overflow: hidden; height: auto !important; height: 15px;margin: 3px;padding: 1px 3px;background-color: #eff2f7;color: #000;cursor: default;border: 1px solid #ccd5e4;font-size: 11px;border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;float: left;white-space: nowrap;}
+li.token-input-token p {display: inline;padding: 0;margin: 0;}
+li.token-input-token span {color: #a6b3cf;margin-left: 5px;font-weight: bold;cursor: pointer;}
+li.token-input-selected-token {background-color: #5670a6;border: 1px solid #3b5998;color: #fff;}
+li.token-input-input-token {float: left;margin: 0;padding: 0;list-style-type: none;width:10px;}
+div.token-input-dropdown {position: absolute;width: 400px;background-color: #fff;overflow: hidden;border-left: 1px solid #ccc;border-right: 1px solid #ccc;border-bottom: 1px solid #ccc;cursor: default;font-size: 11px;font-family: Verdana;z-index: 1;}
+div.token-input-dropdown p {margin: 0;padding: 5px;font-weight: bold;color: #777;}
+div.token-input-dropdown ul {margin: 0;padding: 0;}
+div.token-input-dropdown ul li {background-color: #fff;padding: 3px;margin: 0;list-style-type: none;}
+div.token-input-dropdown ul li.token-input-dropdown-item {background-color: #fff;}
+div.token-input-dropdown ul li.token-input-dropdown-item2 {background-color: #fff;}
+div.token-input-dropdown ul li em {font-weight: bold;font-style: normal;}
+div.token-input-dropdown ul li.token-input-selected-dropdown-item {background-color: #3b5998;color: #fff;}
Index: /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/plugins/jquery.tokeninput.js	(revision 25596)
@@ -0,0 +1,1098 @@
+/*
+ * jQuery Plugin: Tokenizing Autocomplete Text Entry
+ * Version 1.6.1
+ *
+ * Copyright (c) 2009 James Smith (http://loopj.com)
+ * Licensed jointly under the GPL and MIT licenses,
+ * choose which one suits your project best!
+ *
+ * https://github.com/mistic100/jquery-tokeninput
+ */
+
+(function ($) {
+// Default settings
+var DEFAULT_SETTINGS = {
+    // Search settings
+    method: "GET",
+    queryParam: "q",
+    searchDelay: 300,
+    minChars: 1,
+    propertyToSearch: "name",
+    jsonContainer: null,
+    contentType: "json",
+
+    // Prepopulation settings
+    prePopulate: null,
+    processPrePopulate: false,
+
+    // Display settings
+    hintText: "Type in a search term",
+    noResultsText: "No results",
+    searchingText: "Searching...",
+    deleteText: "&times;",
+    newText: " (new)",
+    animateDropdown: true,
+    placeholder: null,
+    theme: null,
+    zindex: 999,
+    resultsLimit: null,
+
+    enableHTML: false,
+
+    resultsFormatter: function(item) {
+      var string = item[this.propertyToSearch];
+      return "<li>" + (this.enableHTML ? string : _escapeHTML(string)) + "</li>";
+    },
+
+    tokenFormatter: function(item) {
+      var string = item[this.propertyToSearch];
+      return "<li><p>" + (this.enableHTML ? string : _escapeHTML(string)) + "</p></li>";
+    },
+
+    // Tokenization settings
+    tokenLimit: null,
+    tokenDelimiter: ",",
+    preventDuplicates: false,
+    tokenValue: "id",
+
+    // Behavioral settings
+    allowFreeTagging: false,
+    freeTaggingHint: true,
+    allowTabOut: false,
+
+    // Callbacks
+    onResult: null,
+    onCachedResult: null,
+    onAdd: null,
+    onFreeTaggingAdd: null,
+    onDelete: null,
+    onReady: null,
+
+    // Other settings
+    idPrefix: "token-input-",
+
+    // Keep track if the input is currently in disabled mode
+    disabled: false
+};
+
+// Default classes to use when theming
+var DEFAULT_CLASSES = {
+    tokenList: "token-input-list",
+    token: "token-input-token",
+    tokenReadOnly: "token-input-token-readonly",
+    tokenDelete: "token-input-delete-token",
+    selectedToken: "token-input-selected-token",
+    highlightedToken: "token-input-highlighted-token",
+    dropdown: "token-input-dropdown",
+    dropdownItem: "token-input-dropdown-item",
+    dropdownItem2: "token-input-dropdown-item2",
+    selectedDropdownItem: "token-input-selected-dropdown-item",
+    inputToken: "token-input-input-token",
+    focused: "token-input-focused",
+    disabled: "token-input-disabled"
+};
+
+// Input box position "enum"
+var POSITION = {
+    BEFORE: 0,
+    AFTER: 1,
+    END: 2
+};
+
+// Keys "enum"
+var KEY = {
+    BACKSPACE: 8,
+    TAB: 9,
+    ENTER: 13,
+    ESCAPE: 27,
+    SPACE: 32,
+    PAGE_UP: 33,
+    PAGE_DOWN: 34,
+    END: 35,
+    HOME: 36,
+    LEFT: 37,
+    UP: 38,
+    RIGHT: 39,
+    DOWN: 40,
+    NUMPAD_ENTER: 108,
+    COMMA: 188
+};
+
+var HTML_ESCAPES = {
+  '&': '&amp;',
+  '<': '&lt;',
+  '>': '&gt;',
+  '"': '&quot;',
+  "'": '&#x27;',
+  '/': '&#x2F;'
+};
+
+var HTML_ESCAPE_CHARS = /[&<>"'\/]/g;
+
+function coerceToString(val) {
+  return String((val === null || val === undefined) ? '' : val);
+}
+
+function _escapeHTML(text) {
+  return coerceToString(text).replace(HTML_ESCAPE_CHARS, function(match) {
+    return HTML_ESCAPES[match];
+  });
+}
+
+// Additional public (exposed) methods
+var methods = {
+    init: function(url_or_data_or_function, options) {
+        var settings = $.extend({}, DEFAULT_SETTINGS, options || {});
+
+        return this.each(function () {
+            $(this).data("settings", settings);
+            $(this).data("tokenInputObject", new $.TokenList(this, url_or_data_or_function, settings));
+        });
+    },
+    clear: function() {
+        this.data("tokenInputObject").clear();
+        return this;
+    },
+    add: function(item) {
+        this.data("tokenInputObject").add(item);
+        return this;
+    },
+    remove: function(item) {
+        this.data("tokenInputObject").remove(item);
+        return this;
+    },
+    get: function() {
+        return this.data("tokenInputObject").getTokens();
+    },
+    toggleDisabled: function(disable) {
+        this.data("tokenInputObject").toggleDisabled(disable);
+        return this;
+    },
+    setOptions: function(options){
+        $(this).data("settings", $.extend({}, $(this).data("settings"), options || {}));
+        return this;
+    },
+    destroy: function () {
+        if(this.data("tokenInputObject")){
+            this.data("tokenInputObject").clear();
+            var tmpInput = this;
+            var closest = this.parent();
+            closest.empty();
+            tmpInput.show();
+            closest.append(tmpInput);
+            return tmpInput;
+        }
+    }
+};
+
+// Expose the .tokenInput function to jQuery as a plugin
+$.fn.tokenInput = function (method) {
+    // Method calling and initialization logic
+    if(methods[method]) {
+        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+    } else {
+        return methods.init.apply(this, arguments);
+    }
+};
+
+// TokenList class for each input
+$.TokenList = function (input, url_or_data, settings) {
+    //
+    // Initialization
+    //
+
+    // Configure the data source
+    if($.type(url_or_data) === "string" || $.type(url_or_data) === "function") {
+        // Set the url to query against
+        $(input).data("settings").url = url_or_data;
+
+        // If the URL is a function, evaluate it here to do our initalization work
+        var url = computeURL();
+
+        // Make a smart guess about cross-domain if it wasn't explicitly specified
+        if($(input).data("settings").crossDomain === undefined && typeof url === "string") {
+            if(url.indexOf("://") === -1) {
+                $(input).data("settings").crossDomain = false;
+            } else {
+                $(input).data("settings").crossDomain = (location.href.split(/\/+/g)[1] !== url.split(/\/+/g)[1]);
+            }
+        }
+    } else if(typeof(url_or_data) === "object") {
+        // Set the local data to search through
+        $(input).data("settings").local_data = url_or_data;
+    }
+
+    // Build class names
+    if($(input).data("settings").classes) {
+        // Use custom class names
+        $(input).data("settings").classes = $.extend({}, DEFAULT_CLASSES, $(input).data("settings").classes);
+    } else if($(input).data("settings").theme) {
+        // Use theme-suffixed default class names
+        $(input).data("settings").classes = {};
+        $.each(DEFAULT_CLASSES, function(key, value) {
+            $(input).data("settings").classes[key] = value + "-" + $(input).data("settings").theme;
+        });
+    } else {
+        $(input).data("settings").classes = DEFAULT_CLASSES;
+    }
+
+
+    // Save the tokens
+    var saved_tokens = [];
+
+    // Keep track of the number of tokens in the list
+    var token_count = 0;
+
+    // Basic cache to save on db hits
+    var cache = new $.TokenList.Cache();
+
+    // Keep track of the timeout, old vals
+    var timeout;
+    var input_val;
+
+    // Create a new text input an attach keyup events
+    var input_box = $("<input type=\"text\"  autocomplete=\"off\" autocapitalize=\"off\">")
+        .css({
+            outline: "none"
+        })
+        .attr("id", $(input).data("settings").idPrefix + input.id)
+        .focus(function () {
+            if ($(input).data("settings").disabled) {
+                return false;
+            } else
+            if ($(input).data("settings").tokenLimit === null || $(input).data("settings").tokenLimit !== token_count) {
+                show_dropdown_hint();
+            }
+            token_list.addClass($(input).data("settings").classes.focused);
+        })
+        .blur(function () {
+            hide_dropdown();
+
+            if ($(input).data("settings").allowFreeTagging) {
+              add_freetagging_tokens();
+            }
+
+            $(this).val("");
+            token_list.removeClass($(input).data("settings").classes.focused);
+        })
+        .bind("keyup keydown blur update", resize_input)
+        .keydown(function (event) {
+            var previous_token;
+            var next_token;
+
+            switch(event.keyCode) {
+                case KEY.LEFT:
+                case KEY.RIGHT:
+                case KEY.UP:
+                case KEY.DOWN:
+                    if(!$(this).val()) {
+                        previous_token = input_token.prev();
+                        next_token = input_token.next();
+
+                        if((previous_token.length && previous_token.get(0) === selected_token) || (next_token.length && next_token.get(0) === selected_token)) {
+                            // Check if there is a previous/next token and it is selected
+                            if(event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) {
+                                deselect_token($(selected_token), POSITION.BEFORE);
+                            } else {
+                                deselect_token($(selected_token), POSITION.AFTER);
+                            }
+                        } else if((event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) && previous_token.length) {
+                            // We are moving left, select the previous token if it exists
+                            select_token($(previous_token.get(0)));
+                        } else if((event.keyCode === KEY.RIGHT || event.keyCode === KEY.DOWN) && next_token.length) {
+                            // We are moving right, select the next token if it exists
+                            select_token($(next_token.get(0)));
+                        }
+                    } else {
+                        var dropdown_item = null;
+
+                        if(event.keyCode === KEY.DOWN || event.keyCode === KEY.RIGHT) {
+                            dropdown_item = $(selected_dropdown_item).next();
+                        } else {
+                            dropdown_item = $(selected_dropdown_item).prev();
+                        }
+
+                        if(dropdown_item.length) {
+                            select_dropdown_item(dropdown_item);
+                        }
+                    }
+                    return false;
+                    break;
+
+                case KEY.BACKSPACE:
+                    previous_token = input_token.prev();
+
+                    if(!$(this).val().length) {
+                        if(selected_token) {
+                            delete_token($(selected_token));
+                            hidden_input.change();
+                        } else if(previous_token.length) {
+                            select_token($(previous_token.get(0)));
+                        }
+
+                        return false;
+                    } else if($(this).val().length === 1) {
+                        hide_dropdown();
+                    } else {
+                        // set a timeout just long enough to let this function finish.
+                        setTimeout(function(){do_search();}, 5);
+                    }
+                    break;
+
+                case KEY.TAB:
+                case KEY.ENTER:
+                case KEY.NUMPAD_ENTER:
+                case KEY.COMMA:
+                  if(selected_dropdown_item) {
+                    add_token($(selected_dropdown_item).data("tokeninput"));
+                    hidden_input.change();
+                  } else {
+                    if ($(input).data("settings").allowFreeTagging) {
+                      if($(input).data("settings").allowTabOut && $(this).val() === "") {
+                        return true;
+                      } else {
+                        add_freetagging_tokens();
+                      }
+                    } else {
+                      $(this).val("");
+                      if($(input).data("settings").allowTabOut) {
+                        return true;
+                      }
+                    }
+                    event.stopPropagation();
+                    event.preventDefault();
+                  }
+                  return false;
+
+                case KEY.ESCAPE:
+                  hide_dropdown();
+                  return true;
+
+                default:
+                    if(String.fromCharCode(event.which)) {
+                        // set a timeout just long enough to let this function finish.
+                        setTimeout(function(){do_search();}, 5);
+                    }
+                    break;
+            }
+        });
+
+    // Keep reference for placeholder
+    if (settings.placeholder)
+        input_box.attr("placeholder", settings.placeholder)
+
+    if ($(input).get(0).tagName == 'SELECT') {
+        // Create a new input to store selected tokens, original will be removed later
+        var hidden_input = $("<input type=\"text\"  name=\"" + $(input).attr('name') + "\" autocomplete=\"off\">")
+                               .hide()
+                               .val("")
+                               .focus(function () {
+                                   focus_with_timeout(input_box);
+                               })
+                               .blur(function () {
+                                   input_box.blur();
+                                   return hidden_input;
+                               })
+                               .insertBefore(input);
+
+        // get prepopulate options and store them in hidden_input
+        var select_data = [];
+        $(input).children('option').each(function () {
+            var item = {};
+            item[$(input).data("settings").tokenValue] = $(this).attr('value');
+            item[$(input).data("settings").propertyToSearch] = $(this).text();
+            select_data[ select_data.length ] = item;
+        });
+        hidden_input.data("pre", select_data);
+        
+        // remove the SELECT object
+        hidden_input.data("settings", $(input).data("settings"));
+        $(input).remove();
+        input = hidden_input[0];
+
+    } else {
+        // Keep a reference to the original input box
+        var hidden_input = $(input)
+                               .hide()
+                               .val("")
+                               .focus(function () {
+                                   focus_with_timeout(input_box);
+                               })
+                               .blur(function () {
+                                   input_box.blur();
+                                   //return the object to this can be referenced in the callback functions.
+                                   return hidden_input;
+                               });
+    }
+
+    // Keep a reference to the selected token and dropdown item
+    var selected_token = null;
+    var selected_token_index = 0;
+    var selected_dropdown_item = null;
+
+    // The list to store the token items in
+    var token_list = $("<ul />")
+        .addClass($(input).data("settings").classes.tokenList)
+        .click(function (event) {
+            var li = $(event.target).closest("li");
+            if(li && li.get(0) && $.data(li.get(0), "tokeninput")) {
+                toggle_select_token(li);
+            } else {
+                // Deselect selected token
+                if(selected_token) {
+                    deselect_token($(selected_token), POSITION.END);
+                }
+
+                // Focus input box
+                focus_with_timeout(input_box);
+            }
+        })
+        .mouseover(function (event) {
+            var li = $(event.target).closest("li");
+            if(li && selected_token !== this) {
+                li.addClass($(input).data("settings").classes.highlightedToken);
+            }
+        })
+        .mouseout(function (event) {
+            var li = $(event.target).closest("li");
+            if(li && selected_token !== this) {
+                li.removeClass($(input).data("settings").classes.highlightedToken);
+            }
+        })
+        .insertBefore(hidden_input);
+
+    // The token holding the input box
+    var input_token = $("<li />")
+        .addClass($(input).data("settings").classes.inputToken)
+        .appendTo(token_list)
+        .append(input_box);
+
+    // The list to store the dropdown items in
+    var dropdown = $("<div>")
+        .addClass($(input).data("settings").classes.dropdown)
+        .appendTo("body")
+        .hide();
+
+    // Magic element to help us resize the text input
+    var input_resizer = $("<tester/>")
+        .insertAfter(input_box)
+        .css({
+            position: "absolute",
+            top: -9999,
+            left: -9999,
+            width: "auto",
+            fontSize: input_box.css("fontSize"),
+            fontFamily: input_box.css("fontFamily"),
+            fontWeight: input_box.css("fontWeight"),
+            letterSpacing: input_box.css("letterSpacing"),
+            whiteSpace: "nowrap"
+        });
+
+    // Pre-populate list if items exist
+    hidden_input.val("");
+    var li_data = $(input).data("settings").prePopulate || hidden_input.data("pre");
+    if($(input).data("settings").processPrePopulate && $.isFunction($(input).data("settings").onResult)) {
+        li_data = $(input).data("settings").onResult.call(hidden_input, li_data);
+    }
+    if(li_data && li_data.length) {
+        $.each(li_data, function (index, value) {
+            insert_token(value);
+            checkTokenLimit();
+            input_box.attr("placeholder", null)
+        });
+    }
+
+    // Check if widget should initialize as disabled
+    if ($(input).data("settings").disabled) {
+        toggleDisabled(true);
+    }
+
+    // Initialization is done
+    if($.isFunction($(input).data("settings").onReady)) {
+        $(input).data("settings").onReady.call();
+    }
+
+    //
+    // Public functions
+    //
+
+    this.clear = function() {
+        token_list.children("li").each(function() {
+            if ($(this).children("input").length === 0) {
+                delete_token($(this));
+            }
+        });
+    };
+
+    this.add = function(item) {
+        add_token(item);
+    };
+
+    this.remove = function(item) {
+        token_list.children("li").each(function() {
+            if ($(this).children("input").length === 0) {
+                var currToken = $(this).data("tokeninput");
+                var match = true;
+                for (var prop in item) {
+                    if (item[prop] !== currToken[prop]) {
+                        match = false;
+                        break;
+                    }
+                }
+                if (match) {
+                    delete_token($(this));
+                }
+            }
+        });
+    };
+
+    this.getTokens = function() {
+        return saved_tokens;
+    };
+
+    this.toggleDisabled = function(disable) {
+        toggleDisabled(disable);
+    };
+
+    // Resize input to maximum width so the placeholder can be seen
+    resize_input();
+
+    //
+    // Private functions
+    //
+
+    function escapeHTML(text) {
+      return $(input).data("settings").enableHTML ? text : _escapeHTML(text);
+    }
+
+    // Toggles the widget between enabled and disabled state, or according
+    // to the [disable] parameter.
+    function toggleDisabled(disable) {
+        if (typeof disable === 'boolean') {
+            $(input).data("settings").disabled = disable
+        } else {
+            $(input).data("settings").disabled = !$(input).data("settings").disabled;
+        }
+        input_box.attr('disabled', $(input).data("settings").disabled);
+        token_list.toggleClass($(input).data("settings").classes.disabled, $(input).data("settings").disabled);
+        // if there is any token selected we deselect it
+        if(selected_token) {
+            deselect_token($(selected_token), POSITION.END);
+        }
+        hidden_input.attr('disabled', $(input).data("settings").disabled);
+    }
+
+    function checkTokenLimit() {
+        if($(input).data("settings").tokenLimit !== null && token_count >= $(input).data("settings").tokenLimit) {
+            input_box.hide();
+            hide_dropdown();
+            return;
+        }
+    }
+
+    function resize_input() {
+        if(input_val === (input_val = input_box.val())) {return;}
+
+        // Get width left on the current line
+        var width_left = token_list.width() - input_box.offset().left - token_list.offset().left;
+        // Enter new content into resizer and resize input accordingly
+        input_resizer.html(_escapeHTML(input_val));
+        // Get maximum width, minimum the size of input and maximum the widget's width
+        input_box.width(Math.min(token_list.width(),
+                                 Math.max(width_left, input_resizer.width() + 30)));
+    }
+
+    function is_printable_character(keycode) {
+        return ((keycode >= 48 && keycode <= 90) ||     // 0-1a-z
+                (keycode >= 96 && keycode <= 111) ||    // numpad 0-9 + - / * .
+                (keycode >= 186 && keycode <= 192) ||   // ; = , - . / ^
+                (keycode >= 219 && keycode <= 222));    // ( \ ) '
+    }
+
+    function add_freetagging_tokens() {
+        var value = $.trim(input_box.val());
+        var tokens = value.split($(input).data("settings").tokenDelimiter);
+        $.each(tokens, function(i, token) {
+          if (!token) {
+            return;
+          }
+
+          if ($.isFunction($(input).data("settings").onFreeTaggingAdd)) {
+            token = $(input).data("settings").onFreeTaggingAdd.call(hidden_input, token);
+          }
+          var object = {};
+          object[$(input).data("settings").tokenValue] = object[$(input).data("settings").propertyToSearch] = token;
+          add_token(object);
+        });
+    }
+
+    // Inner function to a token to the list
+    function insert_token(item) {
+        var $this_token = $($(input).data("settings").tokenFormatter(item));
+        var readonly = item.readonly === true ? true : false;
+
+        if(readonly) $this_token.addClass($(input).data("settings").classes.tokenReadOnly);
+
+        $this_token.addClass($(input).data("settings").classes.token).insertBefore(input_token);
+
+        // The 'delete token' button
+        if(!readonly) {
+          $("<span>" + $(input).data("settings").deleteText + "</span>")
+              .addClass($(input).data("settings").classes.tokenDelete)
+              .appendTo($this_token)
+              .click(function () {
+                  if (!$(input).data("settings").disabled) {
+                      delete_token($(this).parent());
+                      hidden_input.change();
+                      return false;
+                  }
+              });
+        }
+
+        // Store data on the token
+        var token_data = item;
+        $.data($this_token.get(0), "tokeninput", item);
+
+        // Save this token for duplicate checking
+        saved_tokens = saved_tokens.slice(0,selected_token_index).concat([token_data]).concat(saved_tokens.slice(selected_token_index));
+        selected_token_index++;
+
+        // Update the hidden input
+        update_hidden_input(saved_tokens, hidden_input);
+
+        token_count += 1;
+
+        // Check the token limit
+        if($(input).data("settings").tokenLimit !== null && token_count >= $(input).data("settings").tokenLimit) {
+            input_box.hide();
+            hide_dropdown();
+        }
+
+        return $this_token;
+    }
+
+    // Add a token to the token list based on user input
+    function add_token (item) {
+        var callback = $(input).data("settings").onAdd;
+
+        // See if the token already exists and select it if we don't want duplicates
+        if(token_count > 0 && $(input).data("settings").preventDuplicates) {
+            var found_existing_token = null;
+            token_list.children().each(function () {
+                var existing_token = $(this);
+                var existing_data = $.data(existing_token.get(0), "tokeninput");
+                if(existing_data && existing_data[settings.tokenValue] === item[settings.tokenValue]) {
+                    found_existing_token = existing_token;
+                    return false;
+                }
+            });
+
+            if(found_existing_token) {
+                select_token(found_existing_token);
+                input_token.insertAfter(found_existing_token);
+                focus_with_timeout(input_box);
+                return;
+            }
+        }
+
+        // Squeeze input_box so we force no unnecessary line break
+        input_box.width(0);
+
+        // Insert the new tokens
+        if($(input).data("settings").tokenLimit == null || token_count < $(input).data("settings").tokenLimit) {
+            insert_token(item);
+            // Remove the placeholder so it's not seen after you've added a token
+            input_box.attr("placeholder", null)
+            checkTokenLimit();
+        }
+
+        // Clear input box
+        input_box.val("");
+
+        // Don't show the help dropdown, they've got the idea
+        hide_dropdown();
+
+        // Execute the onAdd callback if defined
+        if($.isFunction(callback)) {
+            callback.call(hidden_input,item);
+        }
+    }
+
+    // Select a token in the token list
+    function select_token (token) {
+        if (!$(input).data("settings").disabled) {
+            token.addClass($(input).data("settings").classes.selectedToken);
+            selected_token = token.get(0);
+
+            // Hide input box
+            input_box.val("");
+
+            // Hide dropdown if it is visible (eg if we clicked to select token)
+            hide_dropdown();
+        }
+    }
+
+    // Deselect a token in the token list
+    function deselect_token (token, position) {
+        token.removeClass($(input).data("settings").classes.selectedToken);
+        selected_token = null;
+
+        if(position === POSITION.BEFORE) {
+            input_token.insertBefore(token);
+            selected_token_index--;
+        } else if(position === POSITION.AFTER) {
+            input_token.insertAfter(token);
+            selected_token_index++;
+        } else {
+            input_token.appendTo(token_list);
+            selected_token_index = token_count;
+        }
+
+        // Show the input box and give it focus again
+        focus_with_timeout(input_box);
+    }
+
+    // Toggle selection of a token in the token list
+    function toggle_select_token(token) {
+        var previous_selected_token = selected_token;
+
+        if(selected_token) {
+            deselect_token($(selected_token), POSITION.END);
+        }
+
+        if(previous_selected_token === token.get(0)) {
+            deselect_token(token, POSITION.END);
+        } else {
+            select_token(token);
+        }
+    }
+
+    // Delete a token from the token list
+    function delete_token (token) {
+        // Remove the id from the saved list
+        var token_data = $.data(token.get(0), "tokeninput");
+        var callback = $(input).data("settings").onDelete;
+
+        var index = token.prevAll().length;
+        if(index > selected_token_index) index--;
+
+        // Delete the token
+        token.remove();
+        selected_token = null;
+
+        // Show the input box and give it focus again
+        focus_with_timeout(input_box);
+
+        // Remove this token from the saved list
+        saved_tokens = saved_tokens.slice(0,index).concat(saved_tokens.slice(index+1));
+        if (saved_tokens.length == 0) {
+            input_box.attr("placeholder", settings.placeholder)
+        }
+        if(index < selected_token_index) selected_token_index--;
+
+        // Update the hidden input
+        update_hidden_input(saved_tokens, hidden_input);
+
+        token_count -= 1;
+
+        if($(input).data("settings").tokenLimit !== null) {
+            input_box
+                .show()
+                .val("");
+            focus_with_timeout(input_box);
+        }
+
+        // Execute the onDelete callback if defined
+        if($.isFunction(callback)) {
+            callback.call(hidden_input,token_data);
+        }
+    }
+
+    // Update the hidden input box value
+    function update_hidden_input(saved_tokens, hidden_input) {
+        var token_values = $.map(saved_tokens, function (el) {
+            if(typeof $(input).data("settings").tokenValue == 'function')
+              return $(input).data("settings").tokenValue.call(this, el);
+
+            return el[$(input).data("settings").tokenValue];
+        });
+        hidden_input.val(token_values.join($(input).data("settings").tokenDelimiter));
+
+    }
+
+    // Hide and clear the results dropdown
+    function hide_dropdown () {
+        dropdown.hide().empty();
+        selected_dropdown_item = null;
+    }
+
+    function show_dropdown() {
+        dropdown
+            .css({
+                position: "absolute",
+                top: token_list.offset().top + token_list.outerHeight(),
+                left: token_list.offset().left,
+                width: token_list.width(),
+                'z-index': $(input).data("settings").zindex
+            })
+            .show();
+    }
+
+    function show_dropdown_searching () {
+        if($(input).data("settings").searchingText) {
+            dropdown.html("<p>" + escapeHTML($(input).data("settings").searchingText) + "</p>");
+            show_dropdown();
+        }
+    }
+
+    function show_dropdown_hint () {
+        if($(input).data("settings").hintText) {
+            dropdown.html("<p>" + escapeHTML($(input).data("settings").hintText) + "</p>");
+            show_dropdown();
+        }
+    }
+
+    var regexp_special_chars = new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]', 'g');
+    function regexp_escape(term) {
+        return term.replace(regexp_special_chars, '\\$&');
+    }
+
+    // Highlight the query part of the search term
+    function highlight_term(value, term) {
+        return value.replace(
+          new RegExp(
+            "(?![^&;]+;)(?!<[^<>]*)(" + regexp_escape(term) + ")(?![^<>]*>)(?![^&;]+;)",
+            "gi"
+          ), function(match, p1) {
+            return "<b>" + escapeHTML(p1) + "</b>";
+          }
+        );
+    }
+
+    function find_value_and_highlight_term(template, value, term) {
+        return template.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + regexp_escape(value) + ")(?![^<>]*>)(?![^&;]+;)", "g"), highlight_term(value, term));
+    }
+
+    // Populate the results dropdown with some results
+    function populate_dropdown (query, results) {
+        if(results && results.length) {
+            dropdown.empty();
+            var dropdown_ul = $("<ul>")
+                .appendTo(dropdown)
+                .mouseover(function (event) {
+                    select_dropdown_item($(event.target).closest("li"));
+                })
+                .mousedown(function (event) {
+                    add_token($(event.target).closest("li").data("tokeninput"));
+                    hidden_input.change();
+                    return false;
+                })
+                .hide();
+
+            if ($(input).data("settings").resultsLimit && results.length > $(input).data("settings").resultsLimit) {
+                results = results.slice(0, $(input).data("settings").resultsLimit);
+            }
+
+            $.each(results, function(index, value) {
+                var this_li = $(input).data("settings").resultsFormatter(value);
+
+                this_li = find_value_and_highlight_term(this_li ,value[$(input).data("settings").propertyToSearch], query);
+
+                this_li = $(this_li).appendTo(dropdown_ul);
+
+                if(index % 2) {
+                    this_li.addClass($(input).data("settings").classes.dropdownItem);
+                } else {
+                    this_li.addClass($(input).data("settings").classes.dropdownItem2);
+                }
+
+                if(index === 0) {
+                    select_dropdown_item(this_li);
+                }
+
+                $.data(this_li.get(0), "tokeninput", value);
+            });
+
+            show_dropdown();
+
+            if($(input).data("settings").animateDropdown) {
+                dropdown_ul.slideDown("fast");
+            } else {
+                dropdown_ul.show();
+            }
+        } else {
+            if($(input).data("settings").noResultsText) {
+                dropdown.html("<p>" + escapeHTML($(input).data("settings").noResultsText) + "</p>");
+                show_dropdown();
+            }
+        }
+    }
+
+    // Highlight an item in the results dropdown
+    function select_dropdown_item (item) {
+        if(item) {
+            if(selected_dropdown_item) {
+                deselect_dropdown_item($(selected_dropdown_item));
+            }
+
+            item.addClass($(input).data("settings").classes.selectedDropdownItem);
+            selected_dropdown_item = item.get(0);
+        }
+    }
+
+    // Remove highlighting from an item in the results dropdown
+    function deselect_dropdown_item (item) {
+        item.removeClass($(input).data("settings").classes.selectedDropdownItem);
+        selected_dropdown_item = null;
+    }
+
+    // Do a search and show the "searching" dropdown if the input is longer
+    // than $(input).data("settings").minChars
+    function do_search() {
+        var query = input_box.val();
+
+        if(query && query.length) {
+            if(selected_token) {
+                deselect_token($(selected_token), POSITION.AFTER);
+            }
+
+            if(query.length >= $(input).data("settings").minChars) {
+                show_dropdown_searching();
+                clearTimeout(timeout);
+
+                timeout = setTimeout(function(){
+                    run_search(query);
+                }, $(input).data("settings").searchDelay);
+            } else {
+                hide_dropdown();
+            }
+        }
+    }
+
+    // Do the actual search
+    function run_search(query) {
+        var cache_key = query + computeURL();
+        var cached_results = cache.get(cache_key);
+        if(cached_results) {
+            if ($.isFunction($(input).data("settings").onCachedResult)) {
+              cached_results = $(input).data("settings").onCachedResult.call(hidden_input, cached_results);
+            }
+            populate_dropdown(query, cached_results);
+        } else {
+            // Are we doing an ajax search or local data search?
+            if($(input).data("settings").url) {
+                var url = computeURL();
+                // Extract exisiting get params
+                var ajax_params = {};
+                ajax_params.data = {};
+                if(url.indexOf("?") > -1) {
+                    var parts = url.split("?");
+                    ajax_params.url = parts[0];
+
+                    var param_array = parts[1].split("&");
+                    $.each(param_array, function (index, value) {
+                        var kv = value.split("=");
+                        ajax_params.data[kv[0]] = kv[1];
+                    });
+                } else {
+                    ajax_params.url = url;
+                }
+
+                // Prepare the request
+                ajax_params.data[$(input).data("settings").queryParam] = query;
+                ajax_params.type = $(input).data("settings").method;
+                ajax_params.dataType = $(input).data("settings").contentType;
+                if($(input).data("settings").crossDomain) {
+                    ajax_params.dataType = "jsonp";
+                }
+
+                // Attach the success callback
+                ajax_params.success = function(results) {
+                  cache.add(cache_key, $(input).data("settings").jsonContainer ? results[$(input).data("settings").jsonContainer] : results);
+                  if($.isFunction($(input).data("settings").onResult)) {
+                      results = $(input).data("settings").onResult.call(hidden_input, results);
+                  }
+                  
+                  if($(input).data("settings").allowFreeTagging && $(input).data("settings").freeTaggingHint) {
+                      results.push({name: input_box.val() + $(input).data("settings").newText, id: input_box.val()});
+                  }
+
+                  // only populate the dropdown if the results are associated with the active search query
+                  if(input_box.val() === query) {
+                      populate_dropdown(query, $(input).data("settings").jsonContainer ? results[$(input).data("settings").jsonContainer] : results);
+                  }
+                };
+
+                // Make the request
+                $.ajax(ajax_params);
+            } else if($(input).data("settings").local_data) {
+                // Do the search through local data
+                var results = $.grep($(input).data("settings").local_data, function (row) {
+                    return row[$(input).data("settings").propertyToSearch].toLowerCase().indexOf(query.toLowerCase()) > -1;
+                });
+                
+                if($(input).data("settings").allowFreeTagging && $(input).data("settings").freeTaggingHint) {
+                    results.push({name: input_box.val() + $(input).data("settings").newText, id: input_box.val()});
+                }
+
+                cache.add(cache_key, results);
+                if($.isFunction($(input).data("settings").onResult)) {
+                    results = $(input).data("settings").onResult.call(hidden_input, results);
+                }
+                populate_dropdown(query, results);
+            }
+        }
+    }
+
+    // compute the dynamic URL
+    function computeURL() {
+        var url = $(input).data("settings").url;
+        if(typeof $(input).data("settings").url == 'function') {
+            url = $(input).data("settings").url.call($(input).data("settings"));
+        }
+        return url;
+    }
+
+    // Bring browser focus to the specified object.
+    // Use of setTimeout is to get around an IE bug.
+    // (See, e.g., http://stackoverflow.com/questions/2600186/focus-doesnt-work-in-ie)
+    //
+    // obj: a jQuery object to focus()
+    function focus_with_timeout(obj) {
+        setTimeout(function() { obj.focus(); }, 50);
+    }
+
+};
+
+// Really basic cache for the results
+$.TokenList.Cache = function (options) {
+    var settings = $.extend({
+        max_size: 500
+    }, options);
+
+    var data = {};
+    var size = 0;
+
+    var flush = function () {
+        data = {};
+        size = 0;
+    };
+
+    this.add = function (query, results) {
+        if(size > settings.max_size) {
+            flush();
+        }
+
+        if(!data[query]) {
+            size += 1;
+        }
+
+        data[query] = results;
+    };
+
+    this.get = function (query) {
+        return data[query];
+    };
+};
+}(jQuery));
+
Index: /tags/2.6.0RC1/themes/default/js/pngfix.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/pngfix.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/pngfix.js	(revision 25596)
@@ -0,0 +1,37 @@
+
+// Correctly handle PNG transparency in Win IE 5.5 or higher.
+// http://homepage.ntlworld.com/bobosola. Updated 02-March-2004
+// 15-Jully-2006 : chrisaga use \" instead of ' in imgTitle
+//		 : to fix ' display in tooltips
+//		 : keep the alt attribute
+
+function correctPNG() 
+   {
+   for(var i=0; i<document.images.length; i++)
+      {
+      var img = document.images[i]
+      //if (img.className == "button" || img.className == "icon")
+          {
+	  var imgName = img.src.toUpperCase()
+	  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
+	     {
+		 var imgID = (img.id) ? "id='" + img.id + "' " : ""
+		 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
+		 //var imgTitle = (img.title) ? "title=\"" + img.title + "\" " : "alt=\"" + img.alt + "\" "
+		 var imgTitle = (img.title) ? "title=\"" + img.title + "\" " : "";
+		 imgTitle = imgTitle + (img.alt) ? "title=\"" + img.alt + "\" " : "";
+		 var imgStyle = "display:inline-block;" + img.style.cssText 
+		 if (img.align == "left") imgStyle = "float:left;" + imgStyle
+		 if (img.align == "right") imgStyle = "float:right;" + imgStyle
+		 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle		
+		 var strNewHTML = "<span " + imgID + imgClass + imgTitle
+		 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+	     + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+		 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
+		 img.outerHTML = strNewHTML
+		 i = i-1
+	     }
+          }
+      }
+   }
+window.attachEvent("onload", correctPNG);
Index: /tags/2.6.0RC1/themes/default/js/rating.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/rating.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/rating.js	(revision 25596)
@@ -0,0 +1,97 @@
+var gRatingOptions, gRatingButtons, gUserRating;
+
+function makeNiceRatingForm(options)
+{
+	gRatingOptions = options;
+	var form = document.getElementById('rateForm');
+	if (!form) return; //? template changed
+
+	gRatingButtons = form.getElementsByTagName('input');
+	gUserRating = "";
+	for (var i=0; i<gRatingButtons.length; i++)
+	{
+		if ( gRatingButtons[i].type=="button" )
+		{
+			gUserRating = gRatingButtons[i].value;
+			break;
+		}
+	}
+
+	for (var i=0; i<gRatingButtons.length; i++)
+	{
+		var rateButton = gRatingButtons[i];
+		rateButton.initialRateValue = rateButton.value; // save it as a property
+		try { rateButton.type = "button"; } catch (e){}// avoid normal submit (use ajax); not working in IE6
+
+		rateButton.value = " "; //hide the text (Apple + IE would show text above the stars)
+		with (rateButton.style)
+		{
+			marginLeft = marginRight = 0;
+		}
+
+		if (i!=gRatingButtons.length-1 && rateButton.nextSibling.nodeType == 3 /*TEXT_NODE*/)
+			rateButton.parentNode.removeChild(rateButton.nextSibling);
+		if (i>0 && rateButton.previousSibling.nodeType == 3 /*TEXT_NODE*/)
+			rateButton.parentNode.removeChild(rateButton.previousSibling);
+
+		pwgAddEventListener(rateButton, "click", updateRating);
+		pwgAddEventListener(rateButton, "mouseout", function() {updateRatingStarDisplay( gUserRating );});
+		pwgAddEventListener(rateButton, "mouseover", function(e) {
+			updateRatingStarDisplay( e.target ? e.target.initialRateValue : e.srcElement.initialRateValue);
+			});
+	}
+	updateRatingStarDisplay( gUserRating );
+}
+
+function updateRatingStarDisplay(userRating)
+{
+	for (var i=0; i<gRatingButtons.length; i++)
+		gRatingButtons[i].className = (userRating!=="" && userRating>=gRatingButtons[i].initialRateValue ) ? "rateButtonStarFull" : "rateButtonStarEmpty";
+}
+
+function updateRating(e)
+{
+	var rateButton = e.target || e.srcElement;
+	if (rateButton.initialRateValue == gUserRating)
+		return false; //nothing to do
+
+	for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=true;
+	var y = new PwgWS(gRatingOptions.rootUrl);
+	y.callService(
+		"pwg.images.rate", {image_id: gRatingOptions.image_id, rate: rateButton.initialRateValue } ,
+		{
+			method: "POST",
+			onFailure: function(num, text) {
+				alert(num + " " + text);
+				document.location = rateButton.form.action + "&rate="+rateButton.initialRateValue;
+			},
+			onSuccess: function(result) {
+				gUserRating = rateButton.initialRateValue;
+				for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=false;
+				if (gRatingOptions.onSuccess) gRatingOptions.onSuccess(result);
+				if (gRatingOptions.updateRateElement) gRatingOptions.updateRateElement.innerHTML = gRatingOptions.updateRateText;
+				if (gRatingOptions.ratingSummaryElement)
+				{
+					var t = gRatingOptions.ratingSummaryText;
+					var args =[result.score, result.count, result.average], idx = 0, rexp = new RegExp( /%\.?\d*[sdf]/ );
+					while (idx<args.length) t=t.replace(rexp, args[idx++]);
+					gRatingOptions.ratingSummaryElement.innerHTML = t;
+				}
+			}
+		}
+	);
+	return false;
+}
+
+(function() {
+if (typeof _pwgRatingAutoQueue!="undefined" && _pwgRatingAutoQueue.length)
+{
+    for (var i=0; i<_pwgRatingAutoQueue.length; i++)
+        makeNiceRatingForm(_pwgRatingAutoQueue[i]);
+}
+_pwgRatingAutoQueue = {
+	push: function(opts) {
+		makeNiceRatingForm(opts);
+	}
+}
+})();
Index: /tags/2.6.0RC1/themes/default/js/scripts.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/scripts.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/scripts.js	(revision 25596)
@@ -0,0 +1,155 @@
+function phpWGOpenWindow(theURL,winName,features)
+{
+	img = new Image();
+	img.src = theURL;
+	if (img.complete)
+	{
+		var width=img.width+40, height=img.height+40;
+	}
+	else
+	{
+		var width=640, height=480;
+		img.onload = function () { newWin.resizeTo( img.width+50, img.height+100); };
+	}
+	newWin = window.open(theURL,winName,features+',left=2,top=1,width=' + width + ',height=' + height);
+}
+
+function popuphelp(url)
+{
+	window.open( url, 'dc_popup',
+		'alwaysRaised=yes,dependent=yes,toolbar=no,height=420,width=500,menubar=no,resizable=yes,scrollbars=yes,status=no'
+	);
+}
+
+function pwgBind(object, method) {
+	var args = Array.prototype.slice.call(arguments,2);
+	return function() {
+			return method.apply(object, args.concat(Array.prototype.slice.call(arguments,0)) );
+	}
+}
+
+function PwgWS(urlRoot)
+{
+	this.urlRoot = urlRoot;
+	this.options = {
+		method: "GET",
+		async: true,
+		onFailure: null,
+		onSuccess: null
+	};
+};
+
+PwgWS.prototype = {
+	callService : function(method, parameters, options)
+	{
+		if (options)
+		{
+			for (var prop in options)
+				this.options[prop] = options[prop];
+		}
+		try { this.xhr = new XMLHttpRequest();}
+		catch(e) {
+			try { this.xhr = new ActiveXObject('Msxml2.XMLHTTP'); }
+			catch(e) {
+				try { this.xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
+				catch (e){
+					this.error(0, "Cannot create request object");
+					return;
+				}
+			}
+		}
+		this.xhr.onreadystatechange = pwgBind(this, this.onStateChange);
+
+		var url = this.urlRoot+"ws.php?format=json&method="+method;
+
+		var body = "";
+		if (parameters)
+		{
+			for (var prop in parameters)
+			{
+				if ( typeof parameters[prop] == 'object' && parameters[prop])
+				{
+					for (var i=0; i<parameters[prop].length; i++)
+						body += prop+"[]="+encodeURIComponent(parameters[prop][i])+"&";
+				}
+				else
+					body += prop+"="+encodeURIComponent(parameters[prop])+"&";
+			}
+		}
+
+		if (this.options.method != "POST" )
+		{
+			url += "&"+body;
+			body = null;
+		}
+		this.xhr.open(this.options.method, url, this.options.async);
+		if (this.options.method == "POST" )
+			this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+		try {
+			this.xhr.send(body);
+		} catch(e) {
+			this.error(0, e.message);
+		}
+	},
+
+	onStateChange: function() {
+		var readyState = this.xhr.readyState;
+		if (readyState==4)
+		{
+			try {
+				this.respondToReadyState(readyState);
+			} finally {
+				this.cleanup();
+			}
+		}
+	},
+
+	error: function( httpCode, text )
+	{
+		!this.options.onFailure || this.options.onFailure( httpCode, text);
+		this.cleanup();
+	},
+
+	respondToReadyState: function(readyState)
+	{
+		var xhr = this.xhr;
+		if (readyState==4 && xhr.status == 200)
+		{
+			var resp;
+			try {
+				resp = window.JSON && window.JSON.parse ? window.JSON.parse( xhr.responseText ) : (new Function("return " + xhr.responseText))();
+			}
+			catch (e) {
+				this.error( 200, e.message + '\n' + xhr.responseText.substr(0,512) );
+			}
+			if (resp!=null)
+			{
+				if (resp.stat==null)
+					this.error( 200, "Invalid response" );
+				else if (resp.stat=='ok')
+					!this.options.onSuccess || this.options.onSuccess( resp.result );
+				else
+					this.error( 200, resp.err + " " + resp.message);
+			}
+		}
+		if (readyState==4 && xhr.status != 200)
+			this.error( xhr.status, xhr.statusText );
+	},
+
+	cleanup: function()
+	{
+		if (this.xhr) this.xhr.onreadystatechange = null;
+		this.xhr = null;
+		this.options.onFailure = this.options.onSuccess = null;
+	},
+
+	xhr: null
+}
+
+function pwgAddEventListener(elem, evt, fn)
+{
+	if (window.addEventListener)
+		elem.addEventListener(evt, fn, false);
+	else
+		elem.attachEvent('on'+evt, fn);		
+}
Index: /tags/2.6.0RC1/themes/default/js/switchbox.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/switchbox.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/switchbox.js	(revision 25596)
@@ -0,0 +1,23 @@
+(function () {
+	var sbFunc = function(link, box) {
+		jQuery(link).click(function() {
+			var elt = jQuery(box);
+			elt.css("left", Math.min( jQuery(this).position().left, jQuery(window).width() - elt.outerWidth(true) - 5))
+				.css("top", jQuery(this).position().top + jQuery(this).outerHeight(true))
+				.toggle();
+			return false;
+		});
+		jQuery(box).on("mouseleave click", function() {
+			jQuery(this).hide();
+		});
+	};
+
+	if (window.SwitchBox) {
+		for (var i=0; i<SwitchBox.length; i+=2)
+			sbFunc(SwitchBox[i], SwitchBox[i+1]);
+	}
+
+	SwitchBox = {
+		push: sbFunc
+	}
+})();
Index: /tags/2.6.0RC1/themes/default/js/thumbnails.loader.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/thumbnails.loader.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/thumbnails.loader.js	(revision 25596)
@@ -0,0 +1,38 @@
+if ( typeof( max_requests ) == "undefined" )
+  max_requests = 3;
+
+var thumbnails_queue = jQuery.manageAjax.create('queued', {
+  queue: true,  
+  cacheResponse: false,
+  maxRequests: max_requests,
+  preventDoubleRequests: false
+});
+
+function add_thumbnail_to_queue(img, loop) {
+  thumbnails_queue.add({
+    type: 'GET', 
+    url: img.data('src'), 
+    data: { ajaxload: 'true' },
+    dataType: 'json',
+    beforeSend: function(){jQuery('.loader').show()},
+    success: function(result) {
+      img.attr('src', result.url);
+      jQuery('.loader').hide();
+    },
+    error: function() {
+      if (loop < 3)
+        add_thumbnail_to_queue(img, ++loop); // Retry 3 times
+      if ( typeof( error_icon ) != "undefined" )
+        img.attr('src', error_icon);
+      jQuery('.loader').hide();
+    }
+  }); 
+}
+
+function pwg_ajax_thumbnails_loader() {
+  jQuery('img[data-src]').each(function() {
+    add_thumbnail_to_queue(jQuery(this), 0);
+  });
+}
+
+jQuery(document).ready(pwg_ajax_thumbnails_loader);
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery-ui-i18n.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery-ui-i18n.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery-ui-i18n.js	(revision 25596)
@@ -0,0 +1,1794 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-be.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CA.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-ky.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nb.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-nn.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Afrikaans initialisation for the jQuery UI date picker plugin. */
+/* Written by Renier Pretorius. */
+jQuery(function($){
+	$.datepicker.regional['af'] = {
+		closeText: 'Selekteer',
+		prevText: 'Vorige',
+		nextText: 'Volgende',
+		currentText: 'Vandag',
+		monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
+		'Julie','Augustus','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+		dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+		dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+		dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['af']);
+});
+
+/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/
+/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
+
+jQuery(function($){
+	$.datepicker.regional['ar-DZ'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3C;السابق',
+		nextText: 'التالي&#x3E;',
+		currentText: 'اليوم',
+		monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',
+		'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);
+});
+
+/* Arabic Translation for jQuery UI date picker plugin. */
+/* Khaled Alhourani -- me@khaledalhourani.com */
+/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
+jQuery(function($){
+	$.datepicker.regional['ar'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3C;السابق',
+		nextText: 'التالي&#x3E;',
+		currentText: 'اليوم',
+		monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
+		'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar']);
+});
+
+/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Jamil Najafov (necefov33@gmail.com). */
+jQuery(function($) {
+	$.datepicker.regional['az'] = {
+		closeText: 'Bağla',
+		prevText: '&#x3C;Geri',
+		nextText: 'İrəli&#x3E;',
+		currentText: 'Bugün',
+		monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
+		'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
+		monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
+		'İyul','Avq','Sen','Okt','Noy','Dek'],
+		dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
+		dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
+		dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['az']);
+});
+
+/* Belarusian initialisation for the jQuery UI date picker plugin. */
+/* Written by Pavel Selitskas <p.selitskas@gmail.com> */
+jQuery(function($){
+	$.datepicker.regional['be'] = {
+		closeText: 'Зачыніць',
+		prevText: '&larr;Папяр.',
+		nextText: 'Наст.&rarr;',
+		currentText: 'Сёньня',
+		monthNames: ['Студзень','Люты','Сакавік','Красавік','Травень','Чэрвень',
+		'Ліпень','Жнівень','Верасень','Кастрычнік','Лістапад','Сьнежань'],
+		monthNamesShort: ['Сту','Лют','Сак','Кра','Тра','Чэр',
+		'Ліп','Жні','Вер','Кас','Ліс','Сьн'],
+		dayNames: ['нядзеля','панядзелак','аўторак','серада','чацьвер','пятніца','субота'],
+		dayNamesShort: ['ндз','пнд','аўт','срд','чцв','птн','сбт'],
+		dayNamesMin: ['Нд','Пн','Аў','Ср','Чц','Пт','Сб'],
+		weekHeader: 'Тд',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['be']);
+});
+
+/* Bulgarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Stoyan Kyosev (http://svest.org). */
+jQuery(function($){
+	$.datepicker.regional['bg'] = {
+		closeText: 'затвори',
+		prevText: '&#x3C;назад',
+		nextText: 'напред&#x3E;',
+		nextBigText: '&#x3E;&#x3E;',
+		currentText: 'днес',
+		monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
+		'Юли','Август','Септември','Октомври','Ноември','Декември'],
+		monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
+		'Юли','Авг','Сеп','Окт','Нов','Дек'],
+		dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
+		dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
+		dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bg']);
+});
+
+/* Bosnian i18n for the jQuery UI date picker plugin. */
+/* Written by Kenan Konjo. */
+jQuery(function($){
+	$.datepicker.regional['bs'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Juni',
+		'Juli','August','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bs']);
+});
+
+/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */
+/* Writers: (joan.leon@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ca'] = {
+		closeText: 'Tanca',
+		prevText: 'Anterior',
+		nextText: 'Següent',
+		currentText: 'Avui',
+		monthNames: ['gener','febrer','març','abril','maig','juny',
+		'juliol','agost','setembre','octubre','novembre','desembre'],
+		monthNamesShort: ['gen','feb','març','abr','maig','juny',
+		'jul','ag','set','oct','nov','des'],
+		dayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],
+		dayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],
+		dayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],
+		weekHeader: 'Set',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ca']);
+});
+
+/* Czech initialisation for the jQuery UI date picker plugin. */
+/* Written by Tomas Muller (tomas@tomas-muller.net). */
+jQuery(function($){
+	$.datepicker.regional['cs'] = {
+		closeText: 'Zavřít',
+		prevText: '&#x3C;Dříve',
+		nextText: 'Později&#x3E;',
+		currentText: 'Nyní',
+		monthNames: ['leden','únor','březen','duben','květen','červen',
+		'červenec','srpen','září','říjen','listopad','prosinec'],
+		monthNamesShort: ['led','úno','bře','dub','kvě','čer',
+		'čvc','srp','zář','říj','lis','pro'],
+		dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+		dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+		dayNamesMin: ['ne','po','út','st','čt','pá','so'],
+		weekHeader: 'Týd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cs']);
+});
+
+/* Welsh/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by William Griffiths. */
+jQuery(function($){
+	$.datepicker.regional['cy-GB'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',
+		'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],
+		monthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',
+		'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],
+		dayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
+		dayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
+		dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],
+		weekHeader: 'Wy',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cy-GB']);
+});
+
+/* Danish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jan Christensen ( deletestuff@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['da'] = {
+		closeText: 'Luk',
+		prevText: '&#x3C;Forrige',
+		nextText: 'Næste&#x3E;',
+		currentText: 'Idag',
+		monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
+		'Juli','August','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+		dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+		dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+		weekHeader: 'Uge',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['da']);
+});
+
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+	$.datepicker.regional['de'] = {
+		closeText: 'schließen',
+		prevText: '&#x3C;zurück',
+		nextText: 'Vor&#x3E;',
+		currentText: 'heute',
+		monthNames: ['Januar','Februar','März','April','Mai','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dez'],
+		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		weekHeader: 'KW',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['de']);
+});
+
+/* Greek (el) initialisation for the jQuery UI date picker plugin. */
+/* Written by Alex Cicovic (http://www.alexcicovic.com) */
+jQuery(function($){
+	$.datepicker.regional['el'] = {
+		closeText: 'Κλείσιμο',
+		prevText: 'Προηγούμενος',
+		nextText: 'Επόμενος',
+		currentText: 'Τρέχων Μήνας',
+		monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',
+		'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],
+		monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',
+		'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],
+		dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],
+		dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],
+		dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],
+		weekHeader: 'Εβδ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['el']);
+});
+
+/* English/Australia initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-AU'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-AU']);
+});
+
+/* English/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by Stuart. */
+jQuery(function($){
+	$.datepicker.regional['en-GB'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-GB']);
+});
+
+/* English/New Zealand initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-NZ'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-NZ']);
+});
+
+/* Esperanto initialisation for the jQuery UI date picker plugin. */
+/* Written by Olivier M. (olivierweb@ifrance.com). */
+jQuery(function($){
+	$.datepicker.regional['eo'] = {
+		closeText: 'Fermi',
+		prevText: '&#x3C;Anta',
+		nextText: 'Sekv&#x3E;',
+		currentText: 'Nuna',
+		monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',
+		'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aŭg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],
+		weekHeader: 'Sb',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eo']);
+});
+
+/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
+/* Traducido por Vester (xvester@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['es'] = {
+		closeText: 'Cerrar',
+		prevText: '&#x3C;Ant',
+		nextText: 'Sig&#x3E;',
+		currentText: 'Hoy',
+		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
+		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
+		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
+		'Jul','Ago','Sep','Oct','Nov','Dic'],
+		dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
+		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['es']);
+});
+
+/* Estonian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
+jQuery(function($){
+	$.datepicker.regional['et'] = {
+		closeText: 'Sulge',
+		prevText: 'Eelnev',
+		nextText: 'Järgnev',
+		currentText: 'Täna',
+		monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',
+		'Juuli','August','September','Oktoober','November','Detsember'],
+		monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',
+		'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
+		dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],
+		dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],
+		dayNamesMin: ['P','E','T','K','N','R','L'],
+		weekHeader: 'näd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['et']);
+});
+
+/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */
+/* Karrikas-ek itzulia (karrikas@karrikas.com) */
+jQuery(function($){
+	$.datepicker.regional['eu'] = {
+		closeText: 'Egina',
+		prevText: '&#x3C;Aur',
+		nextText: 'Hur&#x3E;',
+		currentText: 'Gaur',
+		monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+			'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+		monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+			'uzt.','abu.','ira.','urr.','aza.','abe.'],
+		dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+		dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+		dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+		weekHeader: 'As',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eu']);
+});
+
+/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
+/* Javad Mowlanezhad -- jmowla@gmail.com */
+/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
+jQuery(function($) {
+	$.datepicker.regional['fa'] = {
+		closeText: 'بستن',
+		prevText: '&#x3C;قبلی',
+		nextText: 'بعدی&#x3E;',
+		currentText: 'امروز',
+		monthNames: [
+			'فروردين',
+			'ارديبهشت',
+			'خرداد',
+			'تير',
+			'مرداد',
+			'شهريور',
+			'مهر',
+			'آبان',
+			'آذر',
+			'دی',
+			'بهمن',
+			'اسفند'
+		],
+		monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
+		dayNames: [
+			'يکشنبه',
+			'دوشنبه',
+			'سه‌شنبه',
+			'چهارشنبه',
+			'پنجشنبه',
+			'جمعه',
+			'شنبه'
+		],
+		dayNamesShort: [
+			'ی',
+			'د',
+			'س',
+			'چ',
+			'پ',
+			'ج',
+			'ش'
+		],
+		dayNamesMin: [
+			'ی',
+			'د',
+			'س',
+			'چ',
+			'پ',
+			'ج',
+			'ش'
+		],
+		weekHeader: 'هف',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 6,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fa']);
+});
+
+/* Finnish initialisation for the jQuery UI date picker plugin. */
+/* Written by Harri Kilpiö (harrikilpio@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['fi'] = {
+		closeText: 'Sulje',
+		prevText: '&#xAB;Edellinen',
+		nextText: 'Seuraava&#xBB;',
+		currentText: 'Tänään',
+		monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',
+		'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
+		monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',
+		'Heinä','Elo','Syys','Loka','Marras','Joulu'],
+		dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
+		dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fi']);
+});
+
+/* Faroese initialisation for the jQuery UI date picker plugin */
+/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
+jQuery(function($){
+	$.datepicker.regional['fo'] = {
+		closeText: 'Lat aftur',
+		prevText: '&#x3C;Fyrra',
+		nextText: 'Næsta&#x3E;',
+		currentText: 'Í dag',
+		monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',
+		'Juli','August','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Des'],
+		dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],
+		dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],
+		dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fo']);
+});
+
+/* Canadian-French initialisation for the jQuery UI date picker plugin. */
+jQuery(function ($) {
+	$.datepicker.regional['fr-CA'] = {
+		closeText: 'Fermer',
+		prevText: 'Précédent',
+		nextText: 'Suivant',
+		currentText: 'Aujourd\'hui',
+		monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
+			'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
+		monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
+			'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
+		dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
+		dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+		dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
+		weekHeader: 'Sem.',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['fr-CA']);
+});
+
+/* Swiss-French initialisation for the jQuery UI date picker plugin. */
+/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
+jQuery(function($){
+	$.datepicker.regional['fr-CH'] = {
+		closeText: 'Fermer',
+		prevText: '&#x3C;Préc',
+		nextText: 'Suiv&#x3E;',
+		currentText: 'Courant',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
+		'Jul','Aoû','Sep','Oct','Nov','Déc'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr-CH']);
+});
+
+/* French initialisation for the jQuery UI date picker plugin. */
+/* Written by Keith Wood (kbwood{at}iinet.com.au),
+			  Stéphane Nahmani (sholby@sholby.net),
+			  Stéphane Raimbault <stephane.raimbault@gmail.com> */
+jQuery(function($){
+	$.datepicker.regional['fr'] = {
+		closeText: 'Fermer',
+		prevText: 'Précédent',
+		nextText: 'Suivant',
+		currentText: 'Aujourd\'hui',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',
+		'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
+		dayNamesMin: ['D','L','M','M','J','V','S'],
+		weekHeader: 'Sem.',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr']);
+});
+
+/* Galician localization for 'UI date picker' jQuery extension. */
+/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
+jQuery(function($){
+	$.datepicker.regional['gl'] = {
+		closeText: 'Pechar',
+		prevText: '&#x3C;Ant',
+		nextText: 'Seg&#x3E;',
+		currentText: 'Hoxe',
+		monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',
+		'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],
+		monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',
+		'Xul','Ago','Set','Out','Nov','Dec'],
+		dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],
+		dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['gl']);
+});
+
+/* Hebrew initialisation for the UI Datepicker extension. */
+/* Written by Amir Hardon (ahardon at gmail dot com). */
+jQuery(function($){
+	$.datepicker.regional['he'] = {
+		closeText: 'סגור',
+		prevText: '&#x3C;הקודם',
+		nextText: 'הבא&#x3E;',
+		currentText: 'היום',
+		monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
+		'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
+		monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',
+		'יולי','אוג','ספט','אוק','נוב','דצמ'],
+		dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
+		dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['he']);
+});
+
+/* Hindi initialisation for the jQuery UI date picker plugin. */
+/* Written by Michael Dawart. */
+jQuery(function($){
+	$.datepicker.regional['hi'] = {
+		closeText: 'बंद',
+		prevText: 'पिछला',
+		nextText: 'अगला',
+		currentText: 'आज',
+		monthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',
+		'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],
+		monthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',
+		'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],
+		dayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
+		dayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+		dayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+		weekHeader: 'हफ्ता',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hi']);
+});
+
+/* Croatian i18n for the jQuery UI date picker plugin. */
+/* Written by Vjekoslav Nesek. */
+jQuery(function($){
+	$.datepicker.regional['hr'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
+		'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
+		monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
+		'Srp','Kol','Ruj','Lis','Stu','Pro'],
+		dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Tje',
+		dateFormat: 'dd.mm.yy.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hr']);
+});
+
+/* Hungarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
+jQuery(function($){
+	$.datepicker.regional['hu'] = {
+		closeText: 'bezár',
+		prevText: 'vissza',
+		nextText: 'előre',
+		currentText: 'ma',
+		monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
+		'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
+		monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
+		'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
+		dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+		dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
+		dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+		weekHeader: 'Hét',
+		dateFormat: 'yy.mm.dd.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hu']);
+});
+
+/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
+jQuery(function($){
+	$.datepicker.regional['hy'] = {
+		closeText: 'Փակել',
+		prevText: '&#x3C;Նախ.',
+		nextText: 'Հաջ.&#x3E;',
+		currentText: 'Այսօր',
+		monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',
+		'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],
+		monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',
+		'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],
+		dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],
+		dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		weekHeader: 'ՇԲՏ',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hy']);
+});
+
+/* Indonesian initialisation for the jQuery UI date picker plugin. */
+/* Written by Deden Fathurahman (dedenf@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['id'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3C;mundur',
+		nextText: 'maju&#x3E;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
+		'Juli','Agustus','September','Oktober','Nopember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Agus','Sep','Okt','Nop','Des'],
+		dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
+		dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
+		dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['id']);
+});
+
+/* Icelandic initialisation for the jQuery UI date picker plugin. */
+/* Written by Haukur H. Thorsson (haukur@eskill.is). */
+jQuery(function($){
+	$.datepicker.regional['is'] = {
+		closeText: 'Loka',
+		prevText: '&#x3C; Fyrri',
+		nextText: 'Næsti &#x3E;',
+		currentText: 'Í dag',
+		monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',
+		'Júlí','Ágúst','September','Október','Nóvember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',
+		'Júl','Ágú','Sep','Okt','Nóv','Des'],
+		dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],
+		dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],
+		dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],
+		weekHeader: 'Vika',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['is']);
+});
+
+/* Italian initialisation for the jQuery UI date picker plugin. */
+/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['it'] = {
+		closeText: 'Chiudi',
+		prevText: '&#x3C;Prec',
+		nextText: 'Succ&#x3E;',
+		currentText: 'Oggi',
+		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
+			'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
+			'Lug','Ago','Set','Ott','Nov','Dic'],
+		dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],
+		dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
+		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['it']);
+});
+
+/* Japanese initialisation for the jQuery UI date picker plugin. */
+/* Written by Kentaro SATO (kentaro@ranvis.com). */
+jQuery(function($){
+	$.datepicker.regional['ja'] = {
+		closeText: '閉じる',
+		prevText: '&#x3C;前',
+		nextText: '次&#x3E;',
+		currentText: '今日',
+		monthNames: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		monthNamesShort: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
+		dayNamesShort: ['日','月','火','水','木','金','土'],
+		dayNamesMin: ['日','月','火','水','木','金','土'],
+		weekHeader: '週',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['ja']);
+});
+
+/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Lado Lomidze (lado.lomidze@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ka'] = {
+		closeText: 'დახურვა',
+		prevText: '&#x3c; წინა',
+		nextText: 'შემდეგი &#x3e;',
+		currentText: 'დღეს',
+		monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],
+		monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],
+		dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],
+		dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+		dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+		weekHeader: 'კვირა',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ka']);
+});
+
+/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['kk'] = {
+		closeText: 'Жабу',
+		prevText: '&#x3C;Алдыңғы',
+		nextText: 'Келесі&#x3E;',
+		currentText: 'Бүгін',
+		monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',
+		'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],
+		monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',
+		'Шіл','Там','Қыр','Қаз','Қар','Жел'],
+		dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],
+		dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],
+		dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],
+		weekHeader: 'Не',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['kk']);
+});
+
+/* Khmer initialisation for the jQuery calendar extension. */
+/* Written by Chandara Om (chandara.teacher@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['km'] = {
+		closeText: 'ធ្វើ​រួច',
+		prevText: 'មុន',
+		nextText: 'បន្ទាប់',
+		currentText: 'ថ្ងៃ​នេះ',
+		monthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+		'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+		monthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+		'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+		dayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],
+		dayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+		dayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+		weekHeader: 'សប្ដាហ៍',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['km']);
+});
+
+/* Korean initialisation for the jQuery calendar extension. */
+/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */
+jQuery(function($){
+	$.datepicker.regional['ko'] = {
+		closeText: '닫기',
+		prevText: '이전달',
+		nextText: '다음달',
+		currentText: '오늘',
+		monthNames: ['1월','2월','3월','4월','5월','6월',
+		'7월','8월','9월','10월','11월','12월'],
+		monthNamesShort: ['1월','2월','3월','4월','5월','6월',
+		'7월','8월','9월','10월','11월','12월'],
+		dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],
+		dayNamesShort: ['일','월','화','수','목','금','토'],
+		dayNamesMin: ['일','월','화','수','목','금','토'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '년'};
+	$.datepicker.setDefaults($.datepicker.regional['ko']);
+});
+
+/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Sergey Kartashov (ebishkek@yandex.ru). */
+jQuery(function($){
+	$.datepicker.regional['ky'] = {
+		closeText: 'Жабуу',
+		prevText: '&#x3c;Мур',
+		nextText: 'Кий&#x3e;',
+		currentText: 'Бүгүн',
+		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'],
+		dayNamesShort: ['жек', 'дүй', 'шей', 'шар', 'бей', 'жум', 'ише'],
+		dayNamesMin: ['Жк','Дш','Шш','Шр','Бш','Жм','Иш'],
+		weekHeader: 'Жум',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['ky']);
+});
+
+/* Luxembourgish initialisation for the jQuery UI date picker plugin. */
+/* Written by Michel Weimerskirch <michel@weimerskirch.net> */
+jQuery(function($){
+	$.datepicker.regional['lb'] = {
+		closeText: 'Fäerdeg',
+		prevText: 'Zréck',
+		nextText: 'Weider',
+		currentText: 'Haut',
+		monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+		dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
+		dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
+		dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],
+		weekHeader: 'W',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lb']);
+});
+
+/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas@avalon.lt> */
+jQuery(function($){
+	$.datepicker.regional['lt'] = {
+		closeText: 'Uždaryti',
+		prevText: '&#x3C;Atgal',
+		nextText: 'Pirmyn&#x3E;',
+		currentText: 'Šiandien',
+		monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
+		'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
+		monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
+		'Lie','Rugp','Rugs','Spa','Lap','Gru'],
+		dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
+		dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
+		dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lt']);
+});
+
+/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
+jQuery(function($){
+	$.datepicker.regional['lv'] = {
+		closeText: 'Aizvērt',
+		prevText: 'Iepr',
+		nextText: 'Nāka',
+		currentText: 'Šodien',
+		monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
+		'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
+		'Jūl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
+		dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
+		dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
+		weekHeader: 'Nav',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lv']);
+});
+
+/* Macedonian i18n for the jQuery UI date picker plugin. */
+/* Written by Stojce Slavkovski. */
+jQuery(function($){
+	$.datepicker.regional['mk'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Денес',
+		monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',
+		'Јули','Август','Септември','Октомври','Ноември','Декември'],
+		monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Ное','Дек'],
+		dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],
+		dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],
+		dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['mk']);
+});
+
+/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Saji Nediyanchath (saji89@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ml'] = {
+		closeText: 'ശരി',
+		prevText: 'മുന്നത്തെ',
+		nextText: 'അടുത്തത് ',
+		currentText: 'ഇന്ന്',
+		monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',
+		'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],
+		monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',
+		'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],
+		dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],
+		weekHeader: 'ആ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ml']);
+});
+
+/* Malaysian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
+jQuery(function($){
+	$.datepicker.regional['ms'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3C;Sebelum',
+		nextText: 'Selepas&#x3E;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Mac','April','Mei','Jun',
+		'Julai','Ogos','September','Oktober','November','Disember'],
+		monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',
+		'Jul','Ogo','Sep','Okt','Nov','Dis'],
+		dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],
+		dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],
+		dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ms']);
+});
+
+/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */
+/* Written by Bjørn Johansen (post@bjornjohansen.no). */
+jQuery(function($){
+	$.datepicker.regional['nb'] = {
+		closeText: 'Lukk',
+		prevText: '&#xAB;Forrige',
+		nextText: 'Neste&#xBB;',
+		currentText: 'I dag',
+		monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+		monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+		dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+		dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+		dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+		weekHeader: 'Uke',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['nb']);
+});
+
+/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */
+/* David De Sloovere @DavidDeSloovere */
+jQuery(function($){
+	$.datepicker.regional['nl-BE'] = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['nl-BE']);
+});
+
+/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Mathias Bynens <http://mathiasbynens.be/> */
+jQuery(function($){
+	$.datepicker.regional.nl = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional.nl);
+});
+
+/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */
+/* Written by Bjørn Johansen (post@bjornjohansen.no). */
+jQuery(function($){
+	$.datepicker.regional['nn'] = {
+		closeText: 'Lukk',
+		prevText: '&#xAB;Førre',
+		nextText: 'Neste&#xBB;',
+		currentText: 'I dag',
+		monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+		monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+		dayNamesShort: ['sun','mån','tys','ons','tor','fre','lau'],
+		dayNames: ['sundag','måndag','tysdag','onsdag','torsdag','fredag','laurdag'],
+		dayNamesMin: ['su','må','ty','on','to','fr','la'],
+		weekHeader: 'Veke',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['nn']);
+});
+
+/* Norwegian initialisation for the jQuery UI date picker plugin. */
+/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
+
+jQuery(function($){
+	$.datepicker.regional['no'] = {
+		closeText: 'Lukk',
+		prevText: '&#xAB;Forrige',
+		nextText: 'Neste&#xBB;',
+		currentText: 'I dag',
+		monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+		monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+		dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+		dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+		dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+		weekHeader: 'Uke',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['no']);
+});
+
+/* Polish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pl'] = {
+		closeText: 'Zamknij',
+		prevText: '&#x3C;Poprzedni',
+		nextText: 'Następny&#x3E;',
+		currentText: 'Dziś',
+		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
+		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
+		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
+		'Lip','Sie','Wrz','Pa','Lis','Gru'],
+		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
+		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
+		dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
+		weekHeader: 'Tydz',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pl']);
+});
+
+/* Brazilian initialisation for the jQuery UI date picker plugin. */
+/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pt-BR'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3C;Anterior',
+		nextText: 'Próximo&#x3E;',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt-BR']);
+});
+
+/* Portuguese initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+	$.datepicker.regional['pt'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3C;Anterior',
+		nextText: 'Seguinte',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		weekHeader: 'Sem',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt']);
+});
+
+/* Romansh initialisation for the jQuery UI date picker plugin. */
+/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */
+jQuery(function($){
+	$.datepicker.regional['rm'] = {
+		closeText: 'Serrar',
+		prevText: '&#x3C;Suandant',
+		nextText: 'Precedent&#x3E;',
+		currentText: 'Actual',
+		monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],
+		monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],
+		dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],
+		dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],
+		dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],
+		weekHeader: 'emna',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['rm']);
+});
+
+/* Romanian initialisation for the jQuery UI date picker plugin.
+ *
+ * Written by Edmond L. (ll_edmond@walla.com)
+ * and Ionut G. Stan (ionut.g.stan@gmail.com)
+ */
+jQuery(function($){
+	$.datepicker.regional['ro'] = {
+		closeText: 'Închide',
+		prevText: '&#xAB; Luna precedentă',
+		nextText: 'Luna următoare &#xBB;',
+		currentText: 'Azi',
+		monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',
+		'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
+		monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
+		'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
+		dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+		dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],
+		weekHeader: 'Săpt',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ro']);
+});
+
+/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Andrew Stromnov (stromnov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ru'] = {
+		closeText: 'Закрыть',
+		prevText: '&#x3C;Пред',
+		nextText: 'След&#x3E;',
+		currentText: 'Сегодня',
+		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Нед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ru']);
+});
+
+/* Slovak initialisation for the jQuery UI date picker plugin. */
+/* Written by Vojtech Rinik (vojto@hmm.sk). */
+jQuery(function($){
+	$.datepicker.regional['sk'] = {
+		closeText: 'Zavrieť',
+		prevText: '&#x3C;Predchádzajúci',
+		nextText: 'Nasledujúci&#x3E;',
+		currentText: 'Dnes',
+		monthNames: ['január','február','marec','apríl','máj','jún',
+		'júl','august','september','október','november','december'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
+		'Júl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'],
+		dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
+		dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
+		weekHeader: 'Ty',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sk']);
+});
+
+/* Slovenian initialisation for the jQuery UI date picker plugin. */
+/* Written by Jaka Jancar (jaka@kubje.org). */
+/* c = č, s = š z = ž C = Č S = Š Z = Ž */
+jQuery(function($){
+	$.datepicker.regional['sl'] = {
+		closeText: 'Zapri',
+		prevText: '&#x3C;Prejšnji',
+		nextText: 'Naslednji&#x3E;',
+		currentText: 'Trenutni',
+		monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
+		'Julij','Avgust','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],
+		dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],
+		dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],
+		weekHeader: 'Teden',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sl']);
+});
+
+/* Albanian initialisation for the jQuery UI date picker plugin. */
+/* Written by Flakron Bytyqi (flakron@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['sq'] = {
+		closeText: 'mbylle',
+		prevText: '&#x3C;mbrapa',
+		nextText: 'Përpara&#x3E;',
+		currentText: 'sot',
+		monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',
+		'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
+		monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
+		'Kor','Gus','Sht','Tet','Nën','Dhj'],
+		dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
+		dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		weekHeader: 'Ja',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sq']);
+});
+
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr-SR'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Jun',
+		'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Sed',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr-SR']);
+});
+
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Данас',
+		monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',
+		'Јул','Август','Септембар','Октобар','Новембар','Децембар'],
+		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Нов','Дец'],
+		dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
+		dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
+		dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr']);
+});
+
+/* Swedish initialisation for the jQuery UI date picker plugin. */
+/* Written by Anders Ekdahl ( anders@nomadiz.se). */
+jQuery(function($){
+	$.datepicker.regional['sv'] = {
+		closeText: 'Stäng',
+		prevText: '&#xAB;Förra',
+		nextText: 'Nästa&#xBB;',
+		currentText: 'Idag',
+		monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
+		'Juli','Augusti','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
+		dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
+		dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
+		weekHeader: 'Ve',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sv']);
+});
+
+/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by S A Sureshkumar (saskumar@live.com). */
+jQuery(function($){
+	$.datepicker.regional['ta'] = {
+		closeText: 'மூடு',
+		prevText: 'முன்னையது',
+		nextText: 'அடுத்தது',
+		currentText: 'இன்று',
+		monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',
+		'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],
+		monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',
+		'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],
+		dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],
+		dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],
+		dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],
+		weekHeader: 'Не',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ta']);
+});
+
+/* Thai initialisation for the jQuery UI date picker plugin. */
+/* Written by pipo (pipo@sixhead.com). */
+jQuery(function($){
+	$.datepicker.regional['th'] = {
+		closeText: 'ปิด',
+		prevText: '&#xAB;&#xA0;ย้อน',
+		nextText: 'ถัดไป&#xA0;&#xBB;',
+		currentText: 'วันนี้',
+		monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
+		'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
+		monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
+		'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
+		dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
+		dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['th']);
+});
+
+/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Abdurahmon Saidov (saidovab@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['tj'] = {
+		closeText: 'Идома',
+		prevText: '&#x3c;Қафо',
+		nextText: 'Пеш&#x3e;',
+		currentText: 'Имрӯз',
+		monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',
+		'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],
+		dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],
+		dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],
+		weekHeader: 'Хф',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tj']);
+});
+
+/* Turkish initialisation for the jQuery UI date picker plugin. */
+/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
+jQuery(function($){
+	$.datepicker.regional['tr'] = {
+		closeText: 'kapat',
+		prevText: '&#x3C;geri',
+		nextText: 'ileri&#x3e',
+		currentText: 'bugün',
+		monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
+		'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
+		monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
+		'Tem','Ağu','Eyl','Eki','Kas','Ara'],
+		dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
+		dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tr']);
+});
+
+/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
+/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['uk'] = {
+		closeText: 'Закрити',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Сьогодні',
+		monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
+		'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
+		monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
+		'Лип','Сер','Вер','Жов','Лис','Гру'],
+		dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],
+		dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Тиж',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['uk']);
+});
+
+/* Vietnamese initialisation for the jQuery UI date picker plugin. */
+/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
+jQuery(function($){
+	$.datepicker.regional['vi'] = {
+		closeText: 'Đóng',
+		prevText: '&#x3C;Trước',
+		nextText: 'Tiếp&#x3E;',
+		currentText: 'Hôm nay',
+		monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',
+		'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],
+		monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
+		'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
+		dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
+		dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		weekHeader: 'Tu',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['vi']);
+});
+
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Cloudream (cloudream@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-CN'] = {
+		closeText: '关闭',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});
+
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by SCCY (samuelcychan@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-HK'] = {
+		closeText: '關閉',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-HK']);
+});
+
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Ressol (ressol@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-TW'] = {
+		closeText: '關閉',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-af.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-af.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-af.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Afrikaans initialisation for the jQuery UI date picker plugin. */
+/* Written by Renier Pretorius. */
+jQuery(function($){
+	$.datepicker.regional['af'] = {
+		closeText: 'Selekteer',
+		prevText: 'Vorige',
+		nextText: 'Volgende',
+		currentText: 'Vandag',
+		monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
+		'Julie','Augustus','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+		dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+		dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+		dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['af']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar-DZ.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar-DZ.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar-DZ.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/
+/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
+
+jQuery(function($){
+	$.datepicker.regional['ar-DZ'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3C;السابق',
+		nextText: 'التالي&#x3E;',
+		currentText: 'اليوم',
+		monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',
+		'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ar.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Arabic Translation for jQuery UI date picker plugin. */
+/* Khaled Alhourani -- me@khaledalhourani.com */
+/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
+jQuery(function($){
+	$.datepicker.regional['ar'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3C;السابق',
+		nextText: 'التالي&#x3E;',
+		currentText: 'اليوم',
+		monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
+		'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-az.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-az.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-az.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Jamil Najafov (necefov33@gmail.com). */
+jQuery(function($) {
+	$.datepicker.regional['az'] = {
+		closeText: 'Bağla',
+		prevText: '&#x3C;Geri',
+		nextText: 'İrəli&#x3E;',
+		currentText: 'Bugün',
+		monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
+		'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
+		monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
+		'İyul','Avq','Sen','Okt','Noy','Dek'],
+		dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
+		dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
+		dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['az']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bg.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bg.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bg.js	(revision 25596)
@@ -0,0 +1,24 @@
+/* Bulgarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Stoyan Kyosev (http://svest.org). */
+jQuery(function($){
+	$.datepicker.regional['bg'] = {
+		closeText: 'затвори',
+		prevText: '&#x3C;назад',
+		nextText: 'напред&#x3E;',
+		nextBigText: '&#x3E;&#x3E;',
+		currentText: 'днес',
+		monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
+		'Юли','Август','Септември','Октомври','Ноември','Декември'],
+		monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
+		'Юли','Авг','Сеп','Окт','Нов','Дек'],
+		dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
+		dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
+		dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bg']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bs.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bs.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-bs.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Bosnian i18n for the jQuery UI date picker plugin. */
+/* Written by Kenan Konjo. */
+jQuery(function($){
+	$.datepicker.regional['bs'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Juni',
+		'Juli','August','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bs']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ca.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ca.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ca.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */
+/* Writers: (joan.leon@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ca'] = {
+		closeText: 'Tanca',
+		prevText: 'Anterior',
+		nextText: 'Següent',
+		currentText: 'Avui',
+		monthNames: ['gener','febrer','març','abril','maig','juny',
+		'juliol','agost','setembre','octubre','novembre','desembre'],
+		monthNamesShort: ['gen','feb','març','abr','maig','juny',
+		'jul','ag','set','oct','nov','des'],
+		dayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],
+		dayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],
+		dayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],
+		weekHeader: 'Set',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ca']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cs.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cs.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cs.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Czech initialisation for the jQuery UI date picker plugin. */
+/* Written by Tomas Muller (tomas@tomas-muller.net). */
+jQuery(function($){
+	$.datepicker.regional['cs'] = {
+		closeText: 'Zavřít',
+		prevText: '&#x3C;Dříve',
+		nextText: 'Později&#x3E;',
+		currentText: 'Nyní',
+		monthNames: ['leden','únor','březen','duben','květen','červen',
+		'červenec','srpen','září','říjen','listopad','prosinec'],
+		monthNamesShort: ['led','úno','bře','dub','kvě','čer',
+		'čvc','srp','zář','říj','lis','pro'],
+		dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+		dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+		dayNamesMin: ['ne','po','út','st','čt','pá','so'],
+		weekHeader: 'Týd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cs']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cy-GB.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cy-GB.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-cy-GB.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Welsh/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by William Griffiths. */
+jQuery(function($){
+	$.datepicker.regional['cy-GB'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',
+		'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],
+		monthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',
+		'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],
+		dayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
+		dayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
+		dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],
+		weekHeader: 'Wy',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cy-GB']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-da.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-da.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-da.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Danish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jan Christensen ( deletestuff@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['da'] = {
+		closeText: 'Luk',
+		prevText: '&#x3C;Forrige',
+		nextText: 'Næste&#x3E;',
+		currentText: 'Idag',
+		monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
+		'Juli','August','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+		dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+		dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+		weekHeader: 'Uge',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['da']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-de.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-de.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-de.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+	$.datepicker.regional['de'] = {
+		closeText: 'schließen',
+		prevText: '&#x3C;zurück',
+		nextText: 'Vor&#x3E;',
+		currentText: 'heute',
+		monthNames: ['Januar','Februar','März','April','Mai','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dez'],
+		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		weekHeader: 'KW',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['de']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-el.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-el.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-el.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Greek (el) initialisation for the jQuery UI date picker plugin. */
+/* Written by Alex Cicovic (http://www.alexcicovic.com) */
+jQuery(function($){
+	$.datepicker.regional['el'] = {
+		closeText: 'Κλείσιμο',
+		prevText: 'Προηγούμενος',
+		nextText: 'Επόμενος',
+		currentText: 'Τρέχων Μήνας',
+		monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',
+		'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],
+		monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',
+		'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],
+		dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],
+		dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],
+		dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],
+		weekHeader: 'Εβδ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['el']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-AU.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-AU.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-AU.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* English/Australia initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-AU'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-AU']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-GB.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-GB.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-GB.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* English/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by Stuart. */
+jQuery(function($){
+	$.datepicker.regional['en-GB'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-GB']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-NZ.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-NZ.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-en-NZ.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* English/New Zealand initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-NZ'] = {
+		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: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-NZ']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eo.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eo.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eo.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Esperanto initialisation for the jQuery UI date picker plugin. */
+/* Written by Olivier M. (olivierweb@ifrance.com). */
+jQuery(function($){
+	$.datepicker.regional['eo'] = {
+		closeText: 'Fermi',
+		prevText: '&#x3C;Anta',
+		nextText: 'Sekv&#x3E;',
+		currentText: 'Nuna',
+		monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',
+		'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aŭg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],
+		weekHeader: 'Sb',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eo']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-es.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-es.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-es.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
+/* Traducido por Vester (xvester@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['es'] = {
+		closeText: 'Cerrar',
+		prevText: '&#x3C;Ant',
+		nextText: 'Sig&#x3E;',
+		currentText: 'Hoy',
+		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
+		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
+		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
+		'Jul','Ago','Sep','Oct','Nov','Dic'],
+		dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
+		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['es']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-et.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-et.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-et.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Estonian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
+jQuery(function($){
+	$.datepicker.regional['et'] = {
+		closeText: 'Sulge',
+		prevText: 'Eelnev',
+		nextText: 'Järgnev',
+		currentText: 'Täna',
+		monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',
+		'Juuli','August','September','Oktoober','November','Detsember'],
+		monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',
+		'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
+		dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],
+		dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],
+		dayNamesMin: ['P','E','T','K','N','R','L'],
+		weekHeader: 'näd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['et']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eu.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eu.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-eu.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */
+/* Karrikas-ek itzulia (karrikas@karrikas.com) */
+jQuery(function($){
+	$.datepicker.regional['eu'] = {
+		closeText: 'Egina',
+		prevText: '&#x3C;Aur',
+		nextText: 'Hur&#x3E;',
+		currentText: 'Gaur',
+		monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+			'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+		monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+			'uzt.','abu.','ira.','urr.','aza.','abe.'],
+		dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+		dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+		dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+		weekHeader: 'As',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eu']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fa.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fa.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fa.js	(revision 25596)
@@ -0,0 +1,59 @@
+/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
+/* Javad Mowlanezhad -- jmowla@gmail.com */
+/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
+jQuery(function($) {
+	$.datepicker.regional['fa'] = {
+		closeText: 'بستن',
+		prevText: '&#x3C;قبلی',
+		nextText: 'بعدی&#x3E;',
+		currentText: 'امروز',
+		monthNames: [
+			'فروردين',
+			'ارديبهشت',
+			'خرداد',
+			'تير',
+			'مرداد',
+			'شهريور',
+			'مهر',
+			'آبان',
+			'آذر',
+			'دی',
+			'بهمن',
+			'اسفند'
+		],
+		monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
+		dayNames: [
+			'يکشنبه',
+			'دوشنبه',
+			'سه‌شنبه',
+			'چهارشنبه',
+			'پنجشنبه',
+			'جمعه',
+			'شنبه'
+		],
+		dayNamesShort: [
+			'ی',
+			'د',
+			'س',
+			'چ',
+			'پ',
+			'ج',
+			'ش'
+		],
+		dayNamesMin: [
+			'ی',
+			'د',
+			'س',
+			'چ',
+			'پ',
+			'ج',
+			'ش'
+		],
+		weekHeader: 'هف',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 6,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fa']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fi.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fi.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fi.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Finnish initialisation for the jQuery UI date picker plugin. */
+/* Written by Harri Kilpiö (harrikilpio@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['fi'] = {
+		closeText: 'Sulje',
+		prevText: '&#xAB;Edellinen',
+		nextText: 'Seuraava&#xBB;',
+		currentText: 'Tänään',
+		monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',
+		'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
+		monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',
+		'Heinä','Elo','Syys','Loka','Marras','Joulu'],
+		dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
+		dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fi']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fo.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fo.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fo.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Faroese initialisation for the jQuery UI date picker plugin */
+/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
+jQuery(function($){
+	$.datepicker.regional['fo'] = {
+		closeText: 'Lat aftur',
+		prevText: '&#x3C;Fyrra',
+		nextText: 'Næsta&#x3E;',
+		currentText: 'Í dag',
+		monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',
+		'Juli','August','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Des'],
+		dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],
+		dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],
+		dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fo']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr-CH.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr-CH.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr-CH.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Swiss-French initialisation for the jQuery UI date picker plugin. */
+/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
+jQuery(function($){
+	$.datepicker.regional['fr-CH'] = {
+		closeText: 'Fermer',
+		prevText: '&#x3C;Préc',
+		nextText: 'Suiv&#x3E;',
+		currentText: 'Courant',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
+		'Jul','Aoû','Sep','Oct','Nov','Déc'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr-CH']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-fr.js	(revision 25596)
@@ -0,0 +1,25 @@
+/* French initialisation for the jQuery UI date picker plugin. */
+/* Written by Keith Wood (kbwood{at}iinet.com.au),
+			  Stéphane Nahmani (sholby@sholby.net),
+			  Stéphane Raimbault <stephane.raimbault@gmail.com> */
+jQuery(function($){
+	$.datepicker.regional['fr'] = {
+		closeText: 'Fermer',
+		prevText: 'Précédent',
+		nextText: 'Suivant',
+		currentText: 'Aujourd\'hui',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',
+		'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
+		dayNamesMin: ['D','L','M','M','J','V','S'],
+		weekHeader: 'Sem.',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-gl.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-gl.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-gl.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Galician localization for 'UI date picker' jQuery extension. */
+/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
+jQuery(function($){
+	$.datepicker.regional['gl'] = {
+		closeText: 'Pechar',
+		prevText: '&#x3C;Ant',
+		nextText: 'Seg&#x3E;',
+		currentText: 'Hoxe',
+		monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',
+		'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],
+		monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',
+		'Xul','Ago','Set','Out','Nov','Dec'],
+		dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],
+		dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['gl']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-he.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-he.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-he.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Hebrew initialisation for the UI Datepicker extension. */
+/* Written by Amir Hardon (ahardon at gmail dot com). */
+jQuery(function($){
+	$.datepicker.regional['he'] = {
+		closeText: 'סגור',
+		prevText: '&#x3C;הקודם',
+		nextText: 'הבא&#x3E;',
+		currentText: 'היום',
+		monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
+		'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
+		monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',
+		'יולי','אוג','ספט','אוק','נוב','דצמ'],
+		dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
+		dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['he']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hi.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hi.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hi.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Hindi initialisation for the jQuery UI date picker plugin. */
+/* Written by Michael Dawart. */
+jQuery(function($){
+	$.datepicker.regional['hi'] = {
+		closeText: 'बंद',
+		prevText: 'पिछला',
+		nextText: 'अगला',
+		currentText: 'आज',
+		monthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',
+		'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],
+		monthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',
+		'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],
+		dayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
+		dayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+		dayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+		weekHeader: 'हफ्ता',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hi']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hr.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hr.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hr.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Croatian i18n for the jQuery UI date picker plugin. */
+/* Written by Vjekoslav Nesek. */
+jQuery(function($){
+	$.datepicker.regional['hr'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
+		'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
+		monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
+		'Srp','Kol','Ruj','Lis','Stu','Pro'],
+		dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Tje',
+		dateFormat: 'dd.mm.yy.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hr']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hu.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hu.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hu.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Hungarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
+jQuery(function($){
+	$.datepicker.regional['hu'] = {
+		closeText: 'bezár',
+		prevText: 'vissza',
+		nextText: 'előre',
+		currentText: 'ma',
+		monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
+		'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
+		monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
+		'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
+		dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+		dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
+		dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+		weekHeader: 'Hét',
+		dateFormat: 'yy.mm.dd.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hu']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hy.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hy.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-hy.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
+jQuery(function($){
+	$.datepicker.regional['hy'] = {
+		closeText: 'Փակել',
+		prevText: '&#x3C;Նախ.',
+		nextText: 'Հաջ.&#x3E;',
+		currentText: 'Այսօր',
+		monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',
+		'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],
+		monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',
+		'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],
+		dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],
+		dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		weekHeader: 'ՇԲՏ',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hy']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-id.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-id.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-id.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Indonesian initialisation for the jQuery UI date picker plugin. */
+/* Written by Deden Fathurahman (dedenf@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['id'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3C;mundur',
+		nextText: 'maju&#x3E;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
+		'Juli','Agustus','September','Oktober','Nopember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Agus','Sep','Okt','Nop','Des'],
+		dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
+		dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
+		dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['id']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-is.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-is.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-is.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Icelandic initialisation for the jQuery UI date picker plugin. */
+/* Written by Haukur H. Thorsson (haukur@eskill.is). */
+jQuery(function($){
+	$.datepicker.regional['is'] = {
+		closeText: 'Loka',
+		prevText: '&#x3C; Fyrri',
+		nextText: 'Næsti &#x3E;',
+		currentText: 'Í dag',
+		monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',
+		'Júlí','Ágúst','September','Október','Nóvember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',
+		'Júl','Ágú','Sep','Okt','Nóv','Des'],
+		dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],
+		dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],
+		dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],
+		weekHeader: 'Vika',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['is']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-it.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-it.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-it.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Italian initialisation for the jQuery UI date picker plugin. */
+/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['it'] = {
+		closeText: 'Chiudi',
+		prevText: '&#x3C;Prec',
+		nextText: 'Succ&#x3E;',
+		currentText: 'Oggi',
+		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
+			'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
+			'Lug','Ago','Set','Ott','Nov','Dic'],
+		dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],
+		dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
+		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['it']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ja.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ja.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ja.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Japanese initialisation for the jQuery UI date picker plugin. */
+/* Written by Kentaro SATO (kentaro@ranvis.com). */
+jQuery(function($){
+	$.datepicker.regional['ja'] = {
+		closeText: '閉じる',
+		prevText: '&#x3C;前',
+		nextText: '次&#x3E;',
+		currentText: '今日',
+		monthNames: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		monthNamesShort: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
+		dayNamesShort: ['日','月','火','水','木','金','土'],
+		dayNamesMin: ['日','月','火','水','木','金','土'],
+		weekHeader: '週',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['ja']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ka.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ka.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ka.js	(revision 25596)
@@ -0,0 +1,21 @@
+/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Lado Lomidze (lado.lomidze@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ka'] = {
+		closeText: 'დახურვა',
+		prevText: '&#x3c; წინა',
+		nextText: 'შემდეგი &#x3e;',
+		currentText: 'დღეს',
+		monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],
+		monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],
+		dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],
+		dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+		dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+		weekHeader: 'კვირა',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ka']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-kk.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-kk.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-kk.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['kk'] = {
+		closeText: 'Жабу',
+		prevText: '&#x3C;Алдыңғы',
+		nextText: 'Келесі&#x3E;',
+		currentText: 'Бүгін',
+		monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',
+		'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],
+		monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',
+		'Шіл','Там','Қыр','Қаз','Қар','Жел'],
+		dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],
+		dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],
+		dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],
+		weekHeader: 'Не',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['kk']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-km.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-km.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-km.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Khmer initialisation for the jQuery calendar extension. */
+/* Written by Chandara Om (chandara.teacher@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['km'] = {
+		closeText: 'ធ្វើ​រួច',
+		prevText: 'មុន',
+		nextText: 'បន្ទាប់',
+		currentText: 'ថ្ងៃ​នេះ',
+		monthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+		'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+		monthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',
+		'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],
+		dayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],
+		dayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+		dayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],
+		weekHeader: 'សប្ដាហ៍',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['km']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ko.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ko.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ko.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Korean initialisation for the jQuery calendar extension. */
+/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */
+jQuery(function($){
+	$.datepicker.regional['ko'] = {
+		closeText: '닫기',
+		prevText: '이전달',
+		nextText: '다음달',
+		currentText: '오늘',
+		monthNames: ['1월','2월','3월','4월','5월','6월',
+		'7월','8월','9월','10월','11월','12월'],
+		monthNamesShort: ['1월','2월','3월','4월','5월','6월',
+		'7월','8월','9월','10월','11월','12월'],
+		dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],
+		dayNamesShort: ['일','월','화','수','목','금','토'],
+		dayNamesMin: ['일','월','화','수','목','금','토'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '년'};
+	$.datepicker.setDefaults($.datepicker.regional['ko']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lb.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lb.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lb.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Luxembourgish initialisation for the jQuery UI date picker plugin. */
+/* Written by Michel Weimerskirch <michel@weimerskirch.net> */
+jQuery(function($){
+	$.datepicker.regional['lb'] = {
+		closeText: 'Fäerdeg',
+		prevText: 'Zréck',
+		nextText: 'Weider',
+		currentText: 'Haut',
+		monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+		dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
+		dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
+		dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],
+		weekHeader: 'W',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lb']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lt.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lt.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lt.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas@avalon.lt> */
+jQuery(function($){
+	$.datepicker.regional['lt'] = {
+		closeText: 'Uždaryti',
+		prevText: '&#x3C;Atgal',
+		nextText: 'Pirmyn&#x3E;',
+		currentText: 'Šiandien',
+		monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
+		'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
+		monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
+		'Lie','Rugp','Rugs','Spa','Lap','Gru'],
+		dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
+		dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
+		dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lt']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lv.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lv.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-lv.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
+jQuery(function($){
+	$.datepicker.regional['lv'] = {
+		closeText: 'Aizvērt',
+		prevText: 'Iepr',
+		nextText: 'Nāka',
+		currentText: 'Šodien',
+		monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
+		'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
+		'Jūl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
+		dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
+		dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
+		weekHeader: 'Nav',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lv']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-mk.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-mk.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-mk.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Macedonian i18n for the jQuery UI date picker plugin. */
+/* Written by Stojce Slavkovski. */
+jQuery(function($){
+	$.datepicker.regional['mk'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Денес',
+		monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',
+		'Јули','Август','Септември','Октомври','Ноември','Декември'],
+		monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Ное','Дек'],
+		dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],
+		dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],
+		dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['mk']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ml.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ml.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ml.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Saji Nediyanchath (saji89@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ml'] = {
+		closeText: 'ശരി',
+		prevText: 'മുന്നത്തെ',
+		nextText: 'അടുത്തത് ',
+		currentText: 'ഇന്ന്',
+		monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',
+		'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],
+		monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',
+		'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],
+		dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],
+		weekHeader: 'ആ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ml']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ms.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ms.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ms.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Malaysian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
+jQuery(function($){
+	$.datepicker.regional['ms'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3C;Sebelum',
+		nextText: 'Selepas&#x3E;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Mac','April','Mei','Jun',
+		'Julai','Ogos','September','Oktober','November','Disember'],
+		monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',
+		'Jul','Ogo','Sep','Okt','Nov','Dis'],
+		dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],
+		dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],
+		dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ms']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-nl.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-nl.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-nl.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Mathias Bynens <http://mathiasbynens.be/> */
+jQuery(function($){
+	$.datepicker.regional.nl = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional.nl);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-no.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-no.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-no.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Norwegian initialisation for the jQuery UI date picker plugin. */
+/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
+
+jQuery(function($){
+	$.datepicker.regional['no'] = {
+		closeText: 'Lukk',
+		prevText: '&#xAB;Forrige',
+		nextText: 'Neste&#xBB;',
+		currentText: 'I dag',
+		monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+		monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+		dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+		dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+		dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+		weekHeader: 'Uke',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''
+	};
+	$.datepicker.setDefaults($.datepicker.regional['no']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pl.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pl.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pl.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Polish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pl'] = {
+		closeText: 'Zamknij',
+		prevText: '&#x3C;Poprzedni',
+		nextText: 'Następny&#x3E;',
+		currentText: 'Dziś',
+		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
+		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
+		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
+		'Lip','Sie','Wrz','Pa','Lis','Gru'],
+		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
+		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
+		dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
+		weekHeader: 'Tydz',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pl']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt-BR.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt-BR.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt-BR.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Brazilian initialisation for the jQuery UI date picker plugin. */
+/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pt-BR'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3C;Anterior',
+		nextText: 'Próximo&#x3E;',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt-BR']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-pt.js	(revision 25596)
@@ -0,0 +1,22 @@
+/* Portuguese initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+	$.datepicker.regional['pt'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3C;Anterior',
+		nextText: 'Seguinte',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
+		weekHeader: 'Sem',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-rm.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-rm.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-rm.js	(revision 25596)
@@ -0,0 +1,21 @@
+/* Romansh initialisation for the jQuery UI date picker plugin. */
+/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */
+jQuery(function($){
+	$.datepicker.regional['rm'] = {
+		closeText: 'Serrar',
+		prevText: '&#x3C;Suandant',
+		nextText: 'Precedent&#x3E;',
+		currentText: 'Actual',
+		monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],
+		monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],
+		dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],
+		dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],
+		dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],
+		weekHeader: 'emna',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['rm']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ro.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ro.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ro.js	(revision 25596)
@@ -0,0 +1,26 @@
+/* Romanian initialisation for the jQuery UI date picker plugin.
+ *
+ * Written by Edmond L. (ll_edmond@walla.com)
+ * and Ionut G. Stan (ionut.g.stan@gmail.com)
+ */
+jQuery(function($){
+	$.datepicker.regional['ro'] = {
+		closeText: 'Închide',
+		prevText: '&#xAB; Luna precedentă',
+		nextText: 'Luna următoare &#xBB;',
+		currentText: 'Azi',
+		monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',
+		'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
+		monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
+		'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
+		dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+		dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],
+		weekHeader: 'Săpt',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ro']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ru.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ru.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ru.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Andrew Stromnov (stromnov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ru'] = {
+		closeText: 'Закрыть',
+		prevText: '&#x3C;Пред',
+		nextText: 'След&#x3E;',
+		currentText: 'Сегодня',
+		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Нед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ru']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sk.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sk.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sk.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Slovak initialisation for the jQuery UI date picker plugin. */
+/* Written by Vojtech Rinik (vojto@hmm.sk). */
+jQuery(function($){
+	$.datepicker.regional['sk'] = {
+		closeText: 'Zavrieť',
+		prevText: '&#x3C;Predchádzajúci',
+		nextText: 'Nasledujúci&#x3E;',
+		currentText: 'Dnes',
+		monthNames: ['január','február','marec','apríl','máj','jún',
+		'júl','august','september','október','november','december'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
+		'Júl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'],
+		dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
+		dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
+		weekHeader: 'Ty',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sk']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sl.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sl.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sl.js	(revision 25596)
@@ -0,0 +1,24 @@
+/* Slovenian initialisation for the jQuery UI date picker plugin. */
+/* Written by Jaka Jancar (jaka@kubje.org). */
+/* c = č, s = š z = ž C = Č S = Š Z = Ž */
+jQuery(function($){
+	$.datepicker.regional['sl'] = {
+		closeText: 'Zapri',
+		prevText: '&#x3C;Prejšnji',
+		nextText: 'Naslednji&#x3E;',
+		currentText: 'Trenutni',
+		monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
+		'Julij','Avgust','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],
+		dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],
+		dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],
+		weekHeader: 'Teden',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sl']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sq.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sq.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sq.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Albanian initialisation for the jQuery UI date picker plugin. */
+/* Written by Flakron Bytyqi (flakron@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['sq'] = {
+		closeText: 'mbylle',
+		prevText: '&#x3C;mbrapa',
+		nextText: 'Përpara&#x3E;',
+		currentText: 'sot',
+		monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',
+		'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
+		monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
+		'Kor','Gus','Sht','Tet','Nën','Dhj'],
+		dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
+		dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		weekHeader: 'Ja',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sq']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr-SR.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr-SR.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr-SR.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr-SR'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Jun',
+		'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Sed',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr-SR']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sr.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Данас',
+		monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',
+		'Јул','Август','Септембар','Октобар','Новембар','Децембар'],
+		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Нов','Дец'],
+		dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
+		dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
+		dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sv.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sv.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-sv.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Swedish initialisation for the jQuery UI date picker plugin. */
+/* Written by Anders Ekdahl ( anders@nomadiz.se). */
+jQuery(function($){
+	$.datepicker.regional['sv'] = {
+		closeText: 'Stäng',
+		prevText: '&#xAB;Förra',
+		nextText: 'Nästa&#xBB;',
+		currentText: 'Idag',
+		monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
+		'Juli','Augusti','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
+		dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
+		dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
+		weekHeader: 'Ve',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sv']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ta.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ta.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-ta.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by S A Sureshkumar (saskumar@live.com). */
+jQuery(function($){
+	$.datepicker.regional['ta'] = {
+		closeText: 'மூடு',
+		prevText: 'முன்னையது',
+		nextText: 'அடுத்தது',
+		currentText: 'இன்று',
+		monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',
+		'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],
+		monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',
+		'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],
+		dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],
+		dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],
+		dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],
+		weekHeader: 'Не',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ta']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-th.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-th.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-th.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Thai initialisation for the jQuery UI date picker plugin. */
+/* Written by pipo (pipo@sixhead.com). */
+jQuery(function($){
+	$.datepicker.regional['th'] = {
+		closeText: 'ปิด',
+		prevText: '&#xAB;&#xA0;ย้อน',
+		nextText: 'ถัดไป&#xA0;&#xBB;',
+		currentText: 'วันนี้',
+		monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
+		'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
+		monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
+		'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
+		dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
+		dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['th']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tj.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tj.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tj.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Abdurahmon Saidov (saidovab@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['tj'] = {
+		closeText: 'Идома',
+		prevText: '&#x3c;Қафо',
+		nextText: 'Пеш&#x3e;',
+		currentText: 'Имрӯз',
+		monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',
+		'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],
+		dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],
+		dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],
+		weekHeader: 'Хф',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tj']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tr.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tr.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-tr.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Turkish initialisation for the jQuery UI date picker plugin. */
+/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
+jQuery(function($){
+	$.datepicker.regional['tr'] = {
+		closeText: 'kapat',
+		prevText: '&#x3C;geri',
+		nextText: 'ileri&#x3e',
+		currentText: 'bugün',
+		monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
+		'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
+		monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
+		'Tem','Ağu','Eyl','Eki','Kas','Ara'],
+		dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
+		dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tr']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-uk.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-uk.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-uk.js	(revision 25596)
@@ -0,0 +1,24 @@
+/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
+/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['uk'] = {
+		closeText: 'Закрити',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Сьогодні',
+		monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
+		'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
+		monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
+		'Лип','Сер','Вер','Жов','Лис','Гру'],
+		dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],
+		dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Тиж',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['uk']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-vi.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-vi.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-vi.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Vietnamese initialisation for the jQuery UI date picker plugin. */
+/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
+jQuery(function($){
+	$.datepicker.regional['vi'] = {
+		closeText: 'Đóng',
+		prevText: '&#x3C;Trước',
+		nextText: 'Tiếp&#x3E;',
+		currentText: 'Hôm nay',
+		monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',
+		'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],
+		monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
+		'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
+		dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
+		dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		weekHeader: 'Tu',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['vi']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-CN.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-CN.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-CN.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Cloudream (cloudream@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-CN'] = {
+		closeText: '关闭',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-HK.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-HK.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-HK.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by SCCY (samuelcychan@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-HK'] = {
+		closeText: '關閉',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-HK']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-TW.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-TW.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/i18n/jquery.ui.datepicker-zh-TW.js	(revision 25596)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Ressol (ressol@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-TW'] = {
+		closeText: '關閉',
+		prevText: '&#x3C;上月',
+		nextText: '下月&#x3E;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
+});
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.accordion.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.accordion.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.accordion.js	(revision 25596)
@@ -0,0 +1,572 @@
+/*!
+ * jQuery UI Accordion 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/accordion/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var uid = 0,
+	hideProps = {},
+	showProps = {};
+
+hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =
+	hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";
+showProps.height = showProps.paddingTop = showProps.paddingBottom =
+	showProps.borderTopWidth = showProps.borderBottomWidth = "show";
+
+$.widget( "ui.accordion", {
+	version: "1.10.1",
+	options: {
+		active: 0,
+		animate: {},
+		collapsible: false,
+		event: "click",
+		header: "> li > :first-child,> :not(li):even",
+		heightStyle: "auto",
+		icons: {
+			activeHeader: "ui-icon-triangle-1-s",
+			header: "ui-icon-triangle-1-e"
+		},
+
+		// callbacks
+		activate: null,
+		beforeActivate: null
+	},
+
+	_create: function() {
+		var options = this.options;
+		this.prevShow = this.prevHide = $();
+		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
+			// ARIA
+			.attr( "role", "tablist" );
+
+		// don't allow collapsible: false and active: false / null
+		if ( !options.collapsible && (options.active === false || options.active == null) ) {
+			options.active = 0;
+		}
+
+		this._processPanels();
+		// handle negative values
+		if ( options.active < 0 ) {
+			options.active += this.headers.length;
+		}
+		this._refresh();
+	},
+
+	_getCreateEventData: function() {
+		return {
+			header: this.active,
+			panel: !this.active.length ? $() : this.active.next(),
+			content: !this.active.length ? $() : this.active.next()
+		};
+	},
+
+	_createIcons: function() {
+		var icons = this.options.icons;
+		if ( icons ) {
+			$( "<span>" )
+				.addClass( "ui-accordion-header-icon ui-icon " + icons.header )
+				.prependTo( this.headers );
+			this.active.children( ".ui-accordion-header-icon" )
+				.removeClass( icons.header )
+				.addClass( icons.activeHeader );
+			this.headers.addClass( "ui-accordion-icons" );
+		}
+	},
+
+	_destroyIcons: function() {
+		this.headers
+			.removeClass( "ui-accordion-icons" )
+			.children( ".ui-accordion-header-icon" )
+				.remove();
+	},
+
+	_destroy: function() {
+		var contents;
+
+		// clean up main element
+		this.element
+			.removeClass( "ui-accordion ui-widget ui-helper-reset" )
+			.removeAttr( "role" );
+
+		// clean up headers
+		this.headers
+			.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-selected" )
+			.removeAttr( "aria-controls" )
+			.removeAttr( "tabIndex" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		this._destroyIcons();
+
+		// clean up content panels
+		contents = this.headers.next()
+			.css( "display", "" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-expanded" )
+			.removeAttr( "aria-hidden" )
+			.removeAttr( "aria-labelledby" )
+			.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )
+			.each(function() {
+				if ( /^ui-accordion/.test( this.id ) ) {
+					this.removeAttribute( "id" );
+				}
+			});
+		if ( this.options.heightStyle !== "content" ) {
+			contents.css( "height", "" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "event" ) {
+			if ( this.options.event ) {
+				this._off( this.headers, this.options.event );
+			}
+			this._setupEvents( value );
+		}
+
+		this._super( key, value );
+
+		// setting collapsible: false while collapsed; open first panel
+		if ( key === "collapsible" && !value && this.options.active === false ) {
+			this._activate( 0 );
+		}
+
+		if ( key === "icons" ) {
+			this._destroyIcons();
+			if ( value ) {
+				this._createIcons();
+			}
+		}
+
+		// #5332 - opacity doesn't cascade to positioned elements in IE
+		// so we need to add the disabled class to the headers and panels
+		if ( key === "disabled" ) {
+			this.headers.add( this.headers.next() )
+				.toggleClass( "ui-state-disabled", !!value );
+		}
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		if ( event.altKey || event.ctrlKey ) {
+			return;
+		}
+
+		var keyCode = $.ui.keyCode,
+			length = this.headers.length,
+			currentIndex = this.headers.index( event.target ),
+			toFocus = false;
+
+		switch ( event.keyCode ) {
+			case keyCode.RIGHT:
+			case keyCode.DOWN:
+				toFocus = this.headers[ ( currentIndex + 1 ) % length ];
+				break;
+			case keyCode.LEFT:
+			case keyCode.UP:
+				toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
+				break;
+			case keyCode.SPACE:
+			case keyCode.ENTER:
+				this._eventHandler( event );
+				break;
+			case keyCode.HOME:
+				toFocus = this.headers[ 0 ];
+				break;
+			case keyCode.END:
+				toFocus = this.headers[ length - 1 ];
+				break;
+		}
+
+		if ( toFocus ) {
+			$( event.target ).attr( "tabIndex", -1 );
+			$( toFocus ).attr( "tabIndex", 0 );
+			toFocus.focus();
+			event.preventDefault();
+		}
+	},
+
+	_panelKeyDown : function( event ) {
+		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
+			$( event.currentTarget ).prev().focus();
+		}
+	},
+
+	refresh: function() {
+		var options = this.options;
+		this._processPanels();
+
+		// was collapsed or no panel
+		if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
+			options.active = false;
+			this.active = $();
+		// active false only when collapsible is true
+		} if ( options.active === false ) {
+			this._activate( 0 );
+		// was active, but active panel is gone
+		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining panel are disabled
+			if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous panel
+			} else {
+				this._activate( Math.max( 0, options.active - 1 ) );
+			}
+		// was active, active panel still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.headers.index( this.active );
+		}
+
+		this._destroyIcons();
+
+		this._refresh();
+	},
+
+	_processPanels: function() {
+		this.headers = this.element.find( this.options.header )
+			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );
+
+		this.headers.next()
+			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
+			.filter(":not(.ui-accordion-content-active)")
+			.hide();
+	},
+
+	_refresh: function() {
+		var maxHeight,
+			options = this.options,
+			heightStyle = options.heightStyle,
+			parent = this.element.parent(),
+			accordionId = this.accordionId = "ui-accordion-" +
+				(this.element.attr( "id" ) || ++uid);
+
+		this.active = this._findActive( options.active )
+			.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
+			.removeClass( "ui-corner-all" );
+		this.active.next()
+			.addClass( "ui-accordion-content-active" )
+			.show();
+
+		this.headers
+			.attr( "role", "tab" )
+			.each(function( i ) {
+				var header = $( this ),
+					headerId = header.attr( "id" ),
+					panel = header.next(),
+					panelId = panel.attr( "id" );
+				if ( !headerId ) {
+					headerId = accordionId + "-header-" + i;
+					header.attr( "id", headerId );
+				}
+				if ( !panelId ) {
+					panelId = accordionId + "-panel-" + i;
+					panel.attr( "id", panelId );
+				}
+				header.attr( "aria-controls", panelId );
+				panel.attr( "aria-labelledby", headerId );
+			})
+			.next()
+				.attr( "role", "tabpanel" );
+
+		this.headers
+			.not( this.active )
+			.attr({
+				"aria-selected": "false",
+				tabIndex: -1
+			})
+			.next()
+				.attr({
+					"aria-expanded": "false",
+					"aria-hidden": "true"
+				})
+				.hide();
+
+		// make sure at least one header is in the tab order
+		if ( !this.active.length ) {
+			this.headers.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active.attr({
+				"aria-selected": "true",
+				tabIndex: 0
+			})
+			.next()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+
+		this._createIcons();
+
+		this._setupEvents( options.event );
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.headers.each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.headers.next()
+				.each(function() {
+					$( this ).height( Math.max( 0, maxHeight -
+						$( this ).innerHeight() + $( this ).height() ) );
+				})
+				.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.headers.next()
+				.each(function() {
+					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
+				})
+				.height( maxHeight );
+		}
+	},
+
+	_activate: function( index ) {
+		var active = this._findActive( index )[ 0 ];
+
+		// trying to activate the already active panel
+		if ( active === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the currently active header
+		active = active || this.active[ 0 ];
+
+		this._eventHandler({
+			target: active,
+			currentTarget: active,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( selector ) {
+		return typeof selector === "number" ? this.headers.eq( selector ) : $();
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			keydown: "_keydown"
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.headers.add( this.headers.next() ) );
+		this._on( this.headers, events );
+		this._on( this.headers.next(), { keydown: "_panelKeyDown" });
+		this._hoverable( this.headers );
+		this._focusable( this.headers );
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			clicked = $( event.currentTarget ),
+			clickedIsActive = clicked[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : clicked.next(),
+			toHide = active.next(),
+			eventData = {
+				oldHeader: active,
+				oldPanel: toHide,
+				newHeader: collapsing ? $() : clicked,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if (
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.headers.index( clicked );
+
+		// when the call to ._toggle() comes after the class changes
+		// it causes a very odd bug in IE 8 (see #6720)
+		this.active = clickedIsActive ? $() : clicked;
+		this._toggle( eventData );
+
+		// switch classes
+		// corner classes on the previously active header stay after the animation
+		active.removeClass( "ui-accordion-header-active ui-state-active" );
+		if ( options.icons ) {
+			active.children( ".ui-accordion-header-icon" )
+				.removeClass( options.icons.activeHeader )
+				.addClass( options.icons.header );
+		}
+
+		if ( !clickedIsActive ) {
+			clicked
+				.removeClass( "ui-corner-all" )
+				.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
+			if ( options.icons ) {
+				clicked.children( ".ui-accordion-header-icon" )
+					.removeClass( options.icons.header )
+					.addClass( options.icons.activeHeader );
+			}
+
+			clicked
+				.next()
+				.addClass( "ui-accordion-content-active" );
+		}
+	},
+
+	_toggle: function( data ) {
+		var toShow = data.newPanel,
+			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
+
+		// handle activating a panel during the animation for another activation
+		this.prevShow.add( this.prevHide ).stop( true, true );
+		this.prevShow = toShow;
+		this.prevHide = toHide;
+
+		if ( this.options.animate ) {
+			this._animate( toShow, toHide, data );
+		} else {
+			toHide.hide();
+			toShow.show();
+			this._toggleComplete( data );
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		toHide.prev().attr( "aria-selected", "false" );
+		// if we're switching panels, remove the old header from the tab order
+		// if we're opening from collapsed state, remove the previous header from the tab order
+		// if we're collapsing, then keep the collapsing header in the tab order
+		if ( toShow.length && toHide.length ) {
+			toHide.prev().attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.headers.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow
+			.attr({
+				"aria-expanded": "true",
+				"aria-hidden": "false"
+			})
+			.prev()
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+	},
+
+	_animate: function( toShow, toHide, data ) {
+		var total, easing, duration,
+			that = this,
+			adjust = 0,
+			down = toShow.length &&
+				( !toHide.length || ( toShow.index() < toHide.index() ) ),
+			animate = this.options.animate || {},
+			options = down && animate.down || animate,
+			complete = function() {
+				that._toggleComplete( data );
+			};
+
+		if ( typeof options === "number" ) {
+			duration = options;
+		}
+		if ( typeof options === "string" ) {
+			easing = options;
+		}
+		// fall back from options to animation in case of partial down settings
+		easing = easing || options.easing || animate.easing;
+		duration = duration || options.duration || animate.duration;
+
+		if ( !toHide.length ) {
+			return toShow.animate( showProps, duration, easing, complete );
+		}
+		if ( !toShow.length ) {
+			return toHide.animate( hideProps, duration, easing, complete );
+		}
+
+		total = toShow.show().outerHeight();
+		toHide.animate( hideProps, {
+			duration: duration,
+			easing: easing,
+			step: function( now, fx ) {
+				fx.now = Math.round( now );
+			}
+		});
+		toShow
+			.hide()
+			.animate( showProps, {
+				duration: duration,
+				easing: easing,
+				complete: complete,
+				step: function( now, fx ) {
+					fx.now = Math.round( now );
+					if ( fx.prop !== "height" ) {
+						adjust += fx.now;
+					} else if ( that.options.heightStyle !== "content" ) {
+						fx.now = Math.round( total - toHide.outerHeight() - adjust );
+						adjust = 0;
+					}
+				}
+			});
+	},
+
+	_toggleComplete: function( data ) {
+		var toHide = data.oldPanel;
+
+		toHide
+			.removeClass( "ui-accordion-content-active" )
+			.prev()
+				.removeClass( "ui-corner-top" )
+				.addClass( "ui-corner-all" );
+
+		// Work around for rendering bug in IE (#5421)
+		if ( toHide.length ) {
+			toHide.parent()[0].className = toHide.parent()[0].className;
+		}
+
+		this._trigger( "activate", null, data );
+	}
+});
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.autocomplete.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.autocomplete.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.autocomplete.js	(revision 25596)
@@ -0,0 +1,608 @@
+/*!
+ * jQuery UI Autocomplete 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/autocomplete/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ *	jquery.ui.menu.js
+ */
+(function( $, undefined ) {
+
+// used to prevent race conditions with remote data sources
+var requestIndex = 0;
+
+$.widget( "ui.autocomplete", {
+	version: "1.10.1",
+	defaultElement: "<input>",
+	options: {
+		appendTo: null,
+		autoFocus: false,
+		delay: 300,
+		minLength: 1,
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		source: null,
+
+		// callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		response: null,
+		search: null,
+		select: null
+	},
+
+	pending: 0,
+
+	_create: function() {
+		// Some browsers only repeat keydown events, not keypress events,
+		// so we use the suppressKeyPress flag to determine if we've already
+		// handled the keydown event. #7269
+		// Unfortunately the code for & in keypress is the same as the up arrow,
+		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
+		// events when we know the keydown event was used to modify the
+		// search term. #7799
+		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
+			nodeName = this.element[0].nodeName.toLowerCase(),
+			isTextarea = nodeName === "textarea",
+			isInput = nodeName === "input";
+
+		this.isMultiLine =
+			// Textareas are always multi-line
+			isTextarea ? true :
+			// Inputs are always single-line, even if inside a contentEditable element
+			// IE also treats inputs as contentEditable
+			isInput ? false :
+			// All other element types are determined by whether or not they're contentEditable
+			this.element.prop( "isContentEditable" );
+
+		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
+		this.isNewMenu = true;
+
+		this.element
+			.addClass( "ui-autocomplete-input" )
+			.attr( "autocomplete", "off" );
+
+		this._on( this.element, {
+			keydown: function( event ) {
+				/*jshint maxcomplexity:15*/
+				if ( this.element.prop( "readOnly" ) ) {
+					suppressKeyPress = true;
+					suppressInput = true;
+					suppressKeyPressRepeat = true;
+					return;
+				}
+
+				suppressKeyPress = false;
+				suppressInput = false;
+				suppressKeyPressRepeat = false;
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					suppressKeyPress = true;
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					suppressKeyPress = true;
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					suppressKeyPress = true;
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					suppressKeyPress = true;
+					this._keyEvent( "next", event );
+					break;
+				case keyCode.ENTER:
+				case keyCode.NUMPAD_ENTER:
+					// when menu is open and has focus
+					if ( this.menu.active ) {
+						// #6055 - Opera still allows the keypress to occur
+						// which causes forms to submit
+						suppressKeyPress = true;
+						event.preventDefault();
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.TAB:
+					if ( this.menu.active ) {
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.ESCAPE:
+					if ( this.menu.element.is( ":visible" ) ) {
+						this._value( this.term );
+						this.close( event );
+						// Different browsers have different default behavior for escape
+						// Single press can mean undo or clear
+						// Double press in IE means clear the whole form
+						event.preventDefault();
+					}
+					break;
+				default:
+					suppressKeyPressRepeat = true;
+					// search timeout should be triggered before the input value is changed
+					this._searchTimeout( event );
+					break;
+				}
+			},
+			keypress: function( event ) {
+				if ( suppressKeyPress ) {
+					suppressKeyPress = false;
+					event.preventDefault();
+					return;
+				}
+				if ( suppressKeyPressRepeat ) {
+					return;
+				}
+
+				// replicate some key handlers to allow them to repeat in Firefox and Opera
+				var keyCode = $.ui.keyCode;
+				switch( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					this._keyEvent( "next", event );
+					break;
+				}
+			},
+			input: function( event ) {
+				if ( suppressInput ) {
+					suppressInput = false;
+					event.preventDefault();
+					return;
+				}
+				this._searchTimeout( event );
+			},
+			focus: function() {
+				this.selectedItem = null;
+				this.previous = this._value();
+			},
+			blur: function( event ) {
+				if ( this.cancelBlur ) {
+					delete this.cancelBlur;
+					return;
+				}
+
+				clearTimeout( this.searching );
+				this.close( event );
+				this._change( event );
+			}
+		});
+
+		this._initSource();
+		this.menu = $( "<ul>" )
+			.addClass( "ui-autocomplete ui-front" )
+			.appendTo( this._appendTo() )
+			.menu({
+				// custom key handling for now
+				input: $(),
+				// disable ARIA support, the live region takes care of that
+				role: null
+			})
+			.hide()
+			.data( "ui-menu" );
+
+		this._on( this.menu.element, {
+			mousedown: function( event ) {
+				// prevent moving focus out of the text field
+				event.preventDefault();
+
+				// IE doesn't prevent moving focus even with event.preventDefault()
+				// so we set a flag to know when we should ignore the blur event
+				this.cancelBlur = true;
+				this._delay(function() {
+					delete this.cancelBlur;
+				});
+
+				// clicking on the scrollbar causes focus to shift to the body
+				// but we can't detect a mouseup or a click immediately afterward
+				// so we have to track the next mousedown and close the menu if
+				// the user clicks somewhere outside of the autocomplete
+				var menuElement = this.menu.element[ 0 ];
+				if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
+					this._delay(function() {
+						var that = this;
+						this.document.one( "mousedown", function( event ) {
+							if ( event.target !== that.element[ 0 ] &&
+									event.target !== menuElement &&
+									!$.contains( menuElement, event.target ) ) {
+								that.close();
+							}
+						});
+					});
+				}
+			},
+			menufocus: function( event, ui ) {
+				// #7024 - Prevent accidental activation of menu items in Firefox
+				if ( this.isNewMenu ) {
+					this.isNewMenu = false;
+					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+						this.menu.blur();
+
+						this.document.one( "mousemove", function() {
+							$( event.target ).trigger( event.originalEvent );
+						});
+
+						return;
+					}
+				}
+
+				var item = ui.item.data( "ui-autocomplete-item" );
+				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
+					// use value to match what will end up in the input, if it was a key event
+					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
+						this._value( item.value );
+					}
+				} else {
+					// Normally the input is populated with the item's value as the
+					// menu is navigated, causing screen readers to notice a change and
+					// announce the item. Since the focus event was canceled, this doesn't
+					// happen, so we update the live region so that screen readers can
+					// still notice the change and announce it.
+					this.liveRegion.text( item.value );
+				}
+			},
+			menuselect: function( event, ui ) {
+				var item = ui.item.data( "ui-autocomplete-item" ),
+					previous = this.previous;
+
+				// only trigger when focus was lost (click on menu)
+				if ( this.element[0] !== this.document[0].activeElement ) {
+					this.element.focus();
+					this.previous = previous;
+					// #6109 - IE triggers two focus events and the second
+					// is asynchronous, so we need to reset the previous
+					// term synchronously and asynchronously :-(
+					this._delay(function() {
+						this.previous = previous;
+						this.selectedItem = item;
+					});
+				}
+
+				if ( false !== this._trigger( "select", event, { item: item } ) ) {
+					this._value( item.value );
+				}
+				// reset the term after the select event
+				// this allows custom select handling to work properly
+				this.term = this._value();
+
+				this.close( event );
+				this.selectedItem = item;
+			}
+		});
+
+		this.liveRegion = $( "<span>", {
+				role: "status",
+				"aria-live": "polite"
+			})
+			.addClass( "ui-helper-hidden-accessible" )
+			.insertAfter( this.element );
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_destroy: function() {
+		clearTimeout( this.searching );
+		this.element
+			.removeClass( "ui-autocomplete-input" )
+			.removeAttr( "autocomplete" );
+		this.menu.element.remove();
+		this.liveRegion.remove();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "source" ) {
+			this._initSource();
+		}
+		if ( key === "appendTo" ) {
+			this.menu.element.appendTo( this._appendTo() );
+		}
+		if ( key === "disabled" && value && this.xhr ) {
+			this.xhr.abort();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element ) {
+			element = this.element.closest( ".ui-front" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[0].body;
+		}
+
+		return element;
+	},
+
+	_initSource: function() {
+		var array, url,
+			that = this;
+		if ( $.isArray(this.options.source) ) {
+			array = this.options.source;
+			this.source = function( request, response ) {
+				response( $.ui.autocomplete.filter( array, request.term ) );
+			};
+		} else if ( typeof this.options.source === "string" ) {
+			url = this.options.source;
+			this.source = function( request, response ) {
+				if ( that.xhr ) {
+					that.xhr.abort();
+				}
+				that.xhr = $.ajax({
+					url: url,
+					data: request,
+					dataType: "json",
+					success: function( data ) {
+						response( data );
+					},
+					error: function() {
+						response( [] );
+					}
+				});
+			};
+		} else {
+			this.source = this.options.source;
+		}
+	},
+
+	_searchTimeout: function( event ) {
+		clearTimeout( this.searching );
+		this.searching = this._delay(function() {
+			// only search if the value has changed
+			if ( this.term !== this._value() ) {
+				this.selectedItem = null;
+				this.search( null, event );
+			}
+		}, this.options.delay );
+	},
+
+	search: function( value, event ) {
+		value = value != null ? value : this._value();
+
+		// always save the actual value, not the one passed as an argument
+		this.term = this._value();
+
+		if ( value.length < this.options.minLength ) {
+			return this.close( event );
+		}
+
+		if ( this._trigger( "search", event ) === false ) {
+			return;
+		}
+
+		return this._search( value );
+	},
+
+	_search: function( value ) {
+		this.pending++;
+		this.element.addClass( "ui-autocomplete-loading" );
+		this.cancelSearch = false;
+
+		this.source( { term: value }, this._response() );
+	},
+
+	_response: function() {
+		var that = this,
+			index = ++requestIndex;
+
+		return function( content ) {
+			if ( index === requestIndex ) {
+				that.__response( content );
+			}
+
+			that.pending--;
+			if ( !that.pending ) {
+				that.element.removeClass( "ui-autocomplete-loading" );
+			}
+		};
+	},
+
+	__response: function( content ) {
+		if ( content ) {
+			content = this._normalize( content );
+		}
+		this._trigger( "response", null, { content: content } );
+		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
+			this._suggest( content );
+			this._trigger( "open" );
+		} else {
+			// use ._close() instead of .close() so we don't cancel future searches
+			this._close();
+		}
+	},
+
+	close: function( event ) {
+		this.cancelSearch = true;
+		this._close( event );
+	},
+
+	_close: function( event ) {
+		if ( this.menu.element.is( ":visible" ) ) {
+			this.menu.element.hide();
+			this.menu.blur();
+			this.isNewMenu = true;
+			this._trigger( "close", event );
+		}
+	},
+
+	_change: function( event ) {
+		if ( this.previous !== this._value() ) {
+			this._trigger( "change", event, { item: this.selectedItem } );
+		}
+	},
+
+	_normalize: function( items ) {
+		// assume all items have the right format when the first item is complete
+		if ( items.length && items[0].label && items[0].value ) {
+			return items;
+		}
+		return $.map( items, function( item ) {
+			if ( typeof item === "string" ) {
+				return {
+					label: item,
+					value: item
+				};
+			}
+			return $.extend({
+				label: item.label || item.value,
+				value: item.value || item.label
+			}, item );
+		});
+	},
+
+	_suggest: function( items ) {
+		var ul = this.menu.element.empty();
+		this._renderMenu( ul, items );
+		this.menu.refresh();
+
+		// size and position menu
+		ul.show();
+		this._resizeMenu();
+		ul.position( $.extend({
+			of: this.element
+		}, this.options.position ));
+
+		if ( this.options.autoFocus ) {
+			this.menu.next();
+		}
+	},
+
+	_resizeMenu: function() {
+		var ul = this.menu.element;
+		ul.outerWidth( Math.max(
+			// Firefox wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping (#7513)
+			ul.width( "" ).outerWidth() + 1,
+			this.element.outerWidth()
+		) );
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this;
+		$.each( items, function( index, item ) {
+			that._renderItemData( ul, item );
+		});
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		return $( "<li>" )
+			.append( $( "<a>" ).text( item.label ) )
+			.appendTo( ul );
+	},
+
+	_move: function( direction, event ) {
+		if ( !this.menu.element.is( ":visible" ) ) {
+			this.search( null, event );
+			return;
+		}
+		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+				this.menu.isLastItem() && /^next/.test( direction ) ) {
+			this._value( this.term );
+			this.menu.blur();
+			return;
+		}
+		this.menu[ direction ]( event );
+	},
+
+	widget: function() {
+		return this.menu.element;
+	},
+
+	_value: function() {
+		return this.valueMethod.apply( this.element, arguments );
+	},
+
+	_keyEvent: function( keyEvent, event ) {
+		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+			this._move( keyEvent, event );
+
+			// prevents moving cursor to beginning/end of the text field in some browsers
+			event.preventDefault();
+		}
+	}
+});
+
+$.extend( $.ui.autocomplete, {
+	escapeRegex: function( value ) {
+		return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
+	},
+	filter: function(array, term) {
+		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
+		return $.grep( array, function(value) {
+			return matcher.test( value.label || value.value || value );
+		});
+	}
+});
+
+
+// live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+	options: {
+		messages: {
+			noResults: "No search results.",
+			results: function( amount ) {
+				return amount + ( amount > 1 ? " results are" : " result is" ) +
+					" available, use up and down arrow keys to navigate.";
+			}
+		}
+	},
+
+	__response: function( content ) {
+		var message;
+		this._superApply( arguments );
+		if ( this.options.disabled || this.cancelSearch ) {
+			return;
+		}
+		if ( content && content.length ) {
+			message = this.options.messages.results( content.length );
+		} else {
+			message = this.options.messages.noResults;
+		}
+		this.liveRegion.text( message );
+	}
+});
+
+}( jQuery ));
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.button.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.button.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.button.js	(revision 25596)
@@ -0,0 +1,419 @@
+/*!
+ * jQuery UI Button 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/button/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var lastActive, startXPos, startYPos, clickDragged,
+	baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
+	stateClasses = "ui-state-hover ui-state-active ",
+	typeClasses = "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",
+	formResetHandler = function() {
+		var buttons = $( this ).find( ":ui-button" );
+		setTimeout(function() {
+			buttons.button( "refresh" );
+		}, 1 );
+	},
+	radioGroup = function( radio ) {
+		var name = radio.name,
+			form = radio.form,
+			radios = $( [] );
+		if ( name ) {
+			name = name.replace( /'/g, "\\'" );
+			if ( form ) {
+				radios = $( form ).find( "[name='" + name + "']" );
+			} else {
+				radios = $( "[name='" + name + "']", radio.ownerDocument )
+					.filter(function() {
+						return !this.form;
+					});
+			}
+		}
+		return radios;
+	};
+
+$.widget( "ui.button", {
+	version: "1.10.1",
+	defaultElement: "<button>",
+	options: {
+		disabled: null,
+		text: true,
+		label: null,
+		icons: {
+			primary: null,
+			secondary: null
+		}
+	},
+	_create: function() {
+		this.element.closest( "form" )
+			.unbind( "reset" + this.eventNamespace )
+			.bind( "reset" + this.eventNamespace, formResetHandler );
+
+		if ( typeof this.options.disabled !== "boolean" ) {
+			this.options.disabled = !!this.element.prop( "disabled" );
+		} else {
+			this.element.prop( "disabled", this.options.disabled );
+		}
+
+		this._determineButtonType();
+		this.hasTitle = !!this.buttonElement.attr( "title" );
+
+		var that = this,
+			options = this.options,
+			toggleButton = this.type === "checkbox" || this.type === "radio",
+			activeClass = !toggleButton ? "ui-state-active" : "",
+			focusClass = "ui-state-focus";
+
+		if ( options.label === null ) {
+			options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
+		}
+
+		this._hoverable( this.buttonElement );
+
+		this.buttonElement
+			.addClass( baseClasses )
+			.attr( "role", "button" )
+			.bind( "mouseenter" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				if ( this === lastActive ) {
+					$( this ).addClass( "ui-state-active" );
+				}
+			})
+			.bind( "mouseleave" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				$( this ).removeClass( activeClass );
+			})
+			.bind( "click" + this.eventNamespace, function( event ) {
+				if ( options.disabled ) {
+					event.preventDefault();
+					event.stopImmediatePropagation();
+				}
+			});
+
+		this.element
+			.bind( "focus" + this.eventNamespace, function() {
+				// no need to check disabled, focus won't be triggered anyway
+				that.buttonElement.addClass( focusClass );
+			})
+			.bind( "blur" + this.eventNamespace, function() {
+				that.buttonElement.removeClass( focusClass );
+			});
+
+		if ( toggleButton ) {
+			this.element.bind( "change" + this.eventNamespace, function() {
+				if ( clickDragged ) {
+					return;
+				}
+				that.refresh();
+			});
+			// if mouse moves between mousedown and mouseup (drag) set clickDragged flag
+			// prevents issue where button state changes but checkbox/radio checked state
+			// does not in Firefox (see ticket #6970)
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					clickDragged = false;
+					startXPos = event.pageX;
+					startYPos = event.pageY;
+				})
+				.bind( "mouseup" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
+						clickDragged = true;
+					}
+			});
+		}
+
+		if ( this.type === "checkbox" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+			});
+		} else if ( this.type === "radio" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+				$( this ).addClass( "ui-state-active" );
+				that.buttonElement.attr( "aria-pressed", "true" );
+
+				var radio = that.element[ 0 ];
+				radioGroup( radio )
+					.not( radio )
+					.map(function() {
+						return $( this ).button( "widget" )[ 0 ];
+					})
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			});
+		} else {
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).addClass( "ui-state-active" );
+					lastActive = this;
+					that.document.one( "mouseup", function() {
+						lastActive = null;
+					});
+				})
+				.bind( "mouseup" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).removeClass( "ui-state-active" );
+				})
+				.bind( "keydown" + this.eventNamespace, function(event) {
+					if ( options.disabled ) {
+						return false;
+					}
+					if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
+						$( this ).addClass( "ui-state-active" );
+					}
+				})
+				// see #8559, we bind to blur here in case the button element loses
+				// focus between keydown and keyup, it would be left in an "active" state
+				.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
+					$( this ).removeClass( "ui-state-active" );
+				});
+
+			if ( this.buttonElement.is("a") ) {
+				this.buttonElement.keyup(function(event) {
+					if ( event.keyCode === $.ui.keyCode.SPACE ) {
+						// TODO pass through original event correctly (just as 2nd argument doesn't work)
+						$( this ).click();
+					}
+				});
+			}
+		}
+
+		// TODO: pull out $.Widget's handling for the disabled option into
+		// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
+		// be overridden by individual plugins
+		this._setOption( "disabled", options.disabled );
+		this._resetButton();
+	},
+
+	_determineButtonType: function() {
+		var ancestor, labelSelector, checked;
+
+		if ( this.element.is("[type=checkbox]") ) {
+			this.type = "checkbox";
+		} else if ( this.element.is("[type=radio]") ) {
+			this.type = "radio";
+		} else if ( this.element.is("input") ) {
+			this.type = "input";
+		} else {
+			this.type = "button";
+		}
+
+		if ( this.type === "checkbox" || this.type === "radio" ) {
+			// we don't search against the document in case the element
+			// is disconnected from the DOM
+			ancestor = this.element.parents().last();
+			labelSelector = "label[for='" + this.element.attr("id") + "']";
+			this.buttonElement = ancestor.find( labelSelector );
+			if ( !this.buttonElement.length ) {
+				ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
+				this.buttonElement = ancestor.filter( labelSelector );
+				if ( !this.buttonElement.length ) {
+					this.buttonElement = ancestor.find( labelSelector );
+				}
+			}
+			this.element.addClass( "ui-helper-hidden-accessible" );
+
+			checked = this.element.is( ":checked" );
+			if ( checked ) {
+				this.buttonElement.addClass( "ui-state-active" );
+			}
+			this.buttonElement.prop( "aria-pressed", checked );
+		} else {
+			this.buttonElement = this.element;
+		}
+	},
+
+	widget: function() {
+		return this.buttonElement;
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-helper-hidden-accessible" );
+		this.buttonElement
+			.removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
+			.removeAttr( "role" )
+			.removeAttr( "aria-pressed" )
+			.html( this.buttonElement.find(".ui-button-text").html() );
+
+		if ( !this.hasTitle ) {
+			this.buttonElement.removeAttr( "title" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+			} else {
+				this.element.prop( "disabled", false );
+			}
+			return;
+		}
+		this._resetButton();
+	},
+
+	refresh: function() {
+		//See #8237 & #8828
+		var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOption( "disabled", isDisabled );
+		}
+		if ( this.type === "radio" ) {
+			radioGroup( this.element[0] ).each(function() {
+				if ( $( this ).is( ":checked" ) ) {
+					$( this ).button( "widget" )
+						.addClass( "ui-state-active" )
+						.attr( "aria-pressed", "true" );
+				} else {
+					$( this ).button( "widget" )
+						.removeClass( "ui-state-active" )
+						.attr( "aria-pressed", "false" );
+				}
+			});
+		} else if ( this.type === "checkbox" ) {
+			if ( this.element.is( ":checked" ) ) {
+				this.buttonElement
+					.addClass( "ui-state-active" )
+					.attr( "aria-pressed", "true" );
+			} else {
+				this.buttonElement
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			}
+		}
+	},
+
+	_resetButton: function() {
+		if ( this.type === "input" ) {
+			if ( this.options.label ) {
+				this.element.val( this.options.label );
+			}
+			return;
+		}
+		var buttonElement = this.buttonElement.removeClass( typeClasses ),
+			buttonText = $( "<span></span>", this.document[0] )
+				.addClass( "ui-button-text" )
+				.html( this.options.label )
+				.appendTo( buttonElement.empty() )
+				.text(),
+			icons = this.options.icons,
+			multipleIcons = icons.primary && icons.secondary,
+			buttonClasses = [];
+
+		if ( icons.primary || icons.secondary ) {
+			if ( this.options.text ) {
+				buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
+			}
+
+			if ( icons.primary ) {
+				buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
+			}
+
+			if ( icons.secondary ) {
+				buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
+			}
+
+			if ( !this.options.text ) {
+				buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
+
+				if ( !this.hasTitle ) {
+					buttonElement.attr( "title", $.trim( buttonText ) );
+				}
+			}
+		} else {
+			buttonClasses.push( "ui-button-text-only" );
+		}
+		buttonElement.addClass( buttonClasses.join( " " ) );
+	}
+});
+
+$.widget( "ui.buttonset", {
+	version: "1.10.1",
+	options: {
+		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
+	},
+
+	_create: function() {
+		this.element.addClass( "ui-buttonset" );
+	},
+
+	_init: function() {
+		this.refresh();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "disabled" ) {
+			this.buttons.button( "option", key, value );
+		}
+
+		this._super( key, value );
+	},
+
+	refresh: function() {
+		var rtl = this.element.css( "direction" ) === "rtl";
+
+		this.buttons = this.element.find( this.options.items )
+			.filter( ":ui-button" )
+				.button( "refresh" )
+			.end()
+			.not( ":ui-button" )
+				.button()
+			.end()
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
+				.filter( ":first" )
+					.addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
+				.end()
+				.filter( ":last" )
+					.addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
+				.end()
+			.end();
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-buttonset" );
+		this.buttons
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-left ui-corner-right" )
+			.end()
+			.button( "destroy" );
+	}
+});
+
+}( jQuery ) );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.core.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.core.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.core.js	(revision 25596)
@@ -0,0 +1,324 @@
+/*!
+ * jQuery UI Core 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/ui-core/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	runiqueId = /^ui-id-\d+$/;
+
+// prevent duplicate loading
+// this is only a problem because we proxy existing functions
+// and we don't want to double proxy them
+$.ui = $.ui || {};
+if ( $.ui.version ) {
+	return;
+}
+
+$.extend( $.ui, {
+	version: "1.10.1",
+
+	keyCode: {
+		BACKSPACE: 8,
+		COMMA: 188,
+		DELETE: 46,
+		DOWN: 40,
+		END: 35,
+		ENTER: 13,
+		ESCAPE: 27,
+		HOME: 36,
+		LEFT: 37,
+		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,
+		SPACE: 32,
+		TAB: 9,
+		UP: 38
+	}
+});
+
+// plugins
+$.fn.extend({
+	_focus: $.fn.focus,
+	focus: function( delay, fn ) {
+		return typeof delay === "number" ?
+			this.each(function() {
+				var elem = this;
+				setTimeout(function() {
+					$( elem ).focus();
+					if ( fn ) {
+						fn.call( elem );
+					}
+				}, delay );
+			}) :
+			this._focus.apply( this, arguments );
+	},
+
+	scrollParent: function() {
+		var scrollParent;
+		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+			scrollParent = this.parents().filter(function() {
+				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		} else {
+			scrollParent = this.parents().filter(function() {
+				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		}
+
+		return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
+	},
+
+	zIndex: function( zIndex ) {
+		if ( zIndex !== undefined ) {
+			return this.css( "zIndex", zIndex );
+		}
+
+		if ( this.length ) {
+			var elem = $( this[ 0 ] ), position, value;
+			while ( elem.length && elem[ 0 ] !== document ) {
+				// Ignore z-index if position is set to a value where z-index is ignored by the browser
+				// This makes behavior of this function consistent across browsers
+				// WebKit always returns auto if the element is positioned
+				position = elem.css( "position" );
+				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+					// IE returns 0 when zIndex is not specified
+					// other browsers return a string
+					// we ignore the case of nested elements with an explicit value of 0
+					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+					value = parseInt( elem.css( "zIndex" ), 10 );
+					if ( !isNaN( value ) && value !== 0 ) {
+						return value;
+					}
+				}
+				elem = elem.parent();
+			}
+		}
+
+		return 0;
+	},
+
+	uniqueId: function() {
+		return this.each(function() {
+			if ( !this.id ) {
+				this.id = "ui-id-" + (++uuid);
+			}
+		});
+	},
+
+	removeUniqueId: function() {
+		return this.each(function() {
+			if ( runiqueId.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		});
+	}
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+	var map, mapName, img,
+		nodeName = element.nodeName.toLowerCase();
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap=#" + mapName + "]" )[0];
+		return !!img && visible( img );
+	}
+	return ( /input|select|textarea|button|object/.test( nodeName ) ?
+		!element.disabled :
+		"a" === nodeName ?
+			element.href || isTabIndexNotNaN :
+			isTabIndexNotNaN) &&
+		// the element and all of its ancestors must be visible
+		visible( element );
+}
+
+function visible( element ) {
+	return $.expr.filters.visible( element ) &&
+		!$( element ).parents().addBack().filter(function() {
+			return $.css( this, "visibility" ) === "hidden";
+		}).length;
+}
+
+$.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo(function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		}) :
+		// support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		},
+
+	focusable: function( element ) {
+		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+	},
+
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			isTabIndexNaN = isNaN( tabIndex );
+		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+	}
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			});
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each(function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			});
+		};
+
+		$.fn[ "outer" + name] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each(function() {
+				$( this).css( type, reduce( this, size, true, margin ) + "px" );
+			});
+		};
+	});
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+	$.fn.removeData = (function( removeData ) {
+		return function( key ) {
+			if ( arguments.length ) {
+				return removeData.call( this, $.camelCase( key ) );
+			} else {
+				return removeData.call( this );
+			}
+		};
+	})( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+	disableSelection: function() {
+		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+			".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			});
+	},
+
+	enableSelection: function() {
+		return this.unbind( ".ui-disableSelection" );
+	}
+});
+
+$.extend( $.ui, {
+	// $.ui.plugin is deprecated.  Use the proxy pattern instead.
+	plugin: {
+		add: function( module, option, set ) {
+			var i,
+				proto = $.ui[ module ].prototype;
+			for ( i in set ) {
+				proto.plugins[ i ] = proto.plugins[ i ] || [];
+				proto.plugins[ i ].push( [ option, set[ i ] ] );
+			}
+		},
+		call: function( instance, name, args ) {
+			var i,
+				set = instance.plugins[ name ];
+			if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
+				return;
+			}
+
+			for ( i = 0; i < set.length; i++ ) {
+				if ( instance.options[ set[ i ][ 0 ] ] ) {
+					set[ i ][ 1 ].apply( instance.element, args );
+				}
+			}
+		}
+	},
+
+	// only used by resizable
+	hasScroll: function( el, a ) {
+
+		//If overflow is hidden, the element might have extra content, but the user wants to hide it
+		if ( $( el ).css( "overflow" ) === "hidden") {
+			return false;
+		}
+
+		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+			has = false;
+
+		if ( el[ scroll ] > 0 ) {
+			return true;
+		}
+
+		// TODO: determine which cases actually cause this to happen
+		// if the element doesn't have the scroll set, see if it's possible to
+		// set the scroll
+		el[ scroll ] = 1;
+		has = ( el[ scroll ] > 0 );
+		el[ scroll ] = 0;
+		return has;
+	}
+});
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.datepicker.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.datepicker.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.datepicker.js	(revision 25596)
@@ -0,0 +1,2050 @@
+/*!
+ * jQuery UI Datepicker 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/datepicker/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ */
+(function( $, undefined ) {
+
+$.extend($.ui, { datepicker: { version: "1.10.1" } });
+
+var PROP_NAME = "datepicker",
+	dpuuid = new Date().getTime(),
+	instActive;
+
+/* Date picker manager.
+   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
+   Settings for (groups of) date pickers are maintained in an instance object,
+   allowing multiple different settings on the same page. */
+
+function Datepicker() {
+	this._curInst = null; // The current instance in use
+	this._keyEvent = false; // If the last event was a key event
+	this._disabledInputs = []; // List of date picker inputs that have been disabled
+	this._datepickerShowing = false; // True if the popup picker is showing , false if not
+	this._inDialog = false; // True if showing within a "dialog", false if not
+	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
+	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
+	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
+	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
+	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
+	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
+	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
+	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
+	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
+	this.regional = []; // Available regional settings, indexed by language code
+	this.regional[""] = { // Default regional settings
+		closeText: "Done", // Display text for close link
+		prevText: "Prev", // Display text for previous month link
+		nextText: "Next", // Display text for next month link
+		currentText: "Today", // Display text for current month link
+		monthNames: ["January","February","March","April","May","June",
+			"July","August","September","October","November","December"], // Names of months for drop-down and formatting
+		monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
+		dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
+		dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
+		dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
+		weekHeader: "Wk", // Column header for week of the year
+		dateFormat: "mm/dd/yy", // See format options on parseDate
+		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
+		isRTL: false, // True if right-to-left language, false if left-to-right
+		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
+		yearSuffix: "" // Additional text to append to the year in the month headers
+	};
+	this._defaults = { // Global defaults for all the date picker instances
+		showOn: "focus", // "focus" for popup on focus,
+			// "button" for trigger button, or "both" for either
+		showAnim: "fadeIn", // Name of jQuery animation for popup
+		showOptions: {}, // Options for enhanced animations
+		defaultDate: null, // Used when field is blank: actual date,
+			// +/-number for offset from today, null for today
+		appendText: "", // Display text following the input box, e.g. showing the format
+		buttonText: "...", // Text for trigger button
+		buttonImage: "", // URL for trigger button image
+		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
+		hideIfNoPrevNext: false, // True to hide next/previous month links
+			// if not applicable, false to just disable them
+		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
+		gotoCurrent: false, // True if today link goes back to current selection instead
+		changeMonth: false, // True if month can be selected directly, false if only prev/next
+		changeYear: false, // True if year can be selected directly, false if only prev/next
+		yearRange: "c-10:c+10", // Range of years to display in drop-down,
+			// either relative to today's year (-nn:+nn), relative to currently displayed year
+			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
+		showOtherMonths: false, // True to show dates in other months, false to leave blank
+		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
+		showWeek: false, // True to show week of the year, false to not show it
+		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
+			// takes a Date and returns the number of the week for it
+		shortYearCutoff: "+10", // Short year values < this are in the current century,
+			// > this are in the previous century,
+			// string value starting with "+" for current year + value
+		minDate: null, // The earliest selectable date, or null for no limit
+		maxDate: null, // The latest selectable date, or null for no limit
+		duration: "fast", // Duration of display/closure
+		beforeShowDay: null, // Function that takes a date and returns an array with
+			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
+			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
+		beforeShow: null, // Function that takes an input field and
+			// returns a set of custom settings for the date picker
+		onSelect: null, // Define a callback function when a date is selected
+		onChangeMonthYear: null, // Define a callback function when the month or year is changed
+		onClose: null, // Define a callback function when the datepicker is closed
+		numberOfMonths: 1, // Number of months to show at a time
+		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
+		stepMonths: 1, // Number of months to step back/forward
+		stepBigMonths: 12, // Number of months to step back/forward for the big links
+		altField: "", // Selector for an alternate field to store selected dates into
+		altFormat: "", // The date format to use for the alternate field
+		constrainInput: true, // The input is constrained by the current date format
+		showButtonPanel: false, // True to show button panel, false to not show it
+		autoSize: false, // True to size the input for the date format, false to leave as is
+		disabled: false // The initial disabled state
+	};
+	$.extend(this._defaults, this.regional[""]);
+	this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
+}
+
+$.extend(Datepicker.prototype, {
+	/* Class name added to elements to indicate already configured with a date picker. */
+	markerClassName: "hasDatepicker",
+
+	//Keep track of the maximum number of rows displayed (see #7043)
+	maxRows: 4,
+
+	// TODO rename to "widget" when switching to widget factory
+	_widgetDatepicker: function() {
+		return this.dpDiv;
+	},
+
+	/* Override the default settings for all instances of the date picker.
+	 * @param  settings  object - the new settings to use as defaults (anonymous object)
+	 * @return the manager object
+	 */
+	setDefaults: function(settings) {
+		extendRemove(this._defaults, settings || {});
+		return this;
+	},
+
+	/* Attach the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
+	 */
+	_attachDatepicker: function(target, settings) {
+		var nodeName, inline, inst;
+		nodeName = target.nodeName.toLowerCase();
+		inline = (nodeName === "div" || nodeName === "span");
+		if (!target.id) {
+			this.uuid += 1;
+			target.id = "dp" + this.uuid;
+		}
+		inst = this._newInst($(target), inline);
+		inst.settings = $.extend({}, settings || {});
+		if (nodeName === "input") {
+			this._connectDatepicker(target, inst);
+		} else if (inline) {
+			this._inlineDatepicker(target, inst);
+		}
+	},
+
+	/* Create a new instance object. */
+	_newInst: function(target, inline) {
+		var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
+		return {id: id, input: target, // associated target
+			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
+			drawMonth: 0, drawYear: 0, // month being drawn
+			inline: inline, // is datepicker inline or not
+			dpDiv: (!inline ? this.dpDiv : // presentation div
+			bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
+	},
+
+	/* Attach the date picker to an input field. */
+	_connectDatepicker: function(target, inst) {
+		var input = $(target);
+		inst.append = $([]);
+		inst.trigger = $([]);
+		if (input.hasClass(this.markerClassName)) {
+			return;
+		}
+		this._attachments(input, inst);
+		input.addClass(this.markerClassName).keydown(this._doKeyDown).
+			keypress(this._doKeyPress).keyup(this._doKeyUp);
+		this._autoSize(inst);
+		$.data(target, PROP_NAME, inst);
+		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+	},
+
+	/* Make attachments based on settings. */
+	_attachments: function(input, inst) {
+		var showOn, buttonText, buttonImage,
+			appendText = this._get(inst, "appendText"),
+			isRTL = this._get(inst, "isRTL");
+
+		if (inst.append) {
+			inst.append.remove();
+		}
+		if (appendText) {
+			inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
+			input[isRTL ? "before" : "after"](inst.append);
+		}
+
+		input.unbind("focus", this._showDatepicker);
+
+		if (inst.trigger) {
+			inst.trigger.remove();
+		}
+
+		showOn = this._get(inst, "showOn");
+		if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
+			input.focus(this._showDatepicker);
+		}
+		if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
+			buttonText = this._get(inst, "buttonText");
+			buttonImage = this._get(inst, "buttonImage");
+			inst.trigger = $(this._get(inst, "buttonImageOnly") ?
+				$("<img/>").addClass(this._triggerClass).
+					attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
+				$("<button type='button'></button>").addClass(this._triggerClass).
+					html(!buttonImage ? buttonText : $("<img/>").attr(
+					{ src:buttonImage, alt:buttonText, title:buttonText })));
+			input[isRTL ? "before" : "after"](inst.trigger);
+			inst.trigger.click(function() {
+				if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
+					$.datepicker._hideDatepicker();
+				} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
+					$.datepicker._hideDatepicker();
+					$.datepicker._showDatepicker(input[0]);
+				} else {
+					$.datepicker._showDatepicker(input[0]);
+				}
+				return false;
+			});
+		}
+	},
+
+	/* Apply the maximum length for the date format. */
+	_autoSize: function(inst) {
+		if (this._get(inst, "autoSize") && !inst.inline) {
+			var findMax, max, maxI, i,
+				date = new Date(2009, 12 - 1, 20), // Ensure double digits
+				dateFormat = this._get(inst, "dateFormat");
+
+			if (dateFormat.match(/[DM]/)) {
+				findMax = function(names) {
+					max = 0;
+					maxI = 0;
+					for (i = 0; i < names.length; i++) {
+						if (names[i].length > max) {
+							max = names[i].length;
+							maxI = i;
+						}
+					}
+					return maxI;
+				};
+				date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
+					"monthNames" : "monthNamesShort"))));
+				date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
+					"dayNames" : "dayNamesShort"))) + 20 - date.getDay());
+			}
+			inst.input.attr("size", this._formatDate(inst, date).length);
+		}
+	},
+
+	/* Attach an inline date picker to a div. */
+	_inlineDatepicker: function(target, inst) {
+		var divSpan = $(target);
+		if (divSpan.hasClass(this.markerClassName)) {
+			return;
+		}
+		divSpan.addClass(this.markerClassName).append(inst.dpDiv);
+		$.data(target, PROP_NAME, inst);
+		this._setDate(inst, this._getDefaultDate(inst), true);
+		this._updateDatepicker(inst);
+		this._updateAlternate(inst);
+		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
+		if( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
+		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
+		inst.dpDiv.css( "display", "block" );
+	},
+
+	/* Pop-up the date picker in a "dialog" box.
+	 * @param  input element - ignored
+	 * @param  date	string or Date - the initial date to display
+	 * @param  onSelect  function - the function to call when a date is selected
+	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
+	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
+	 *					event - with x/y coordinates or
+	 *					leave empty for default (screen centre)
+	 * @return the manager object
+	 */
+	_dialogDatepicker: function(input, date, onSelect, settings, pos) {
+		var id, browserWidth, browserHeight, scrollX, scrollY,
+			inst = this._dialogInst; // internal instance
+
+		if (!inst) {
+			this.uuid += 1;
+			id = "dp" + this.uuid;
+			this._dialogInput = $("<input type='text' id='" + id +
+				"' style='position: absolute; top: -100px; width: 0px;'/>");
+			this._dialogInput.keydown(this._doKeyDown);
+			$("body").append(this._dialogInput);
+			inst = this._dialogInst = this._newInst(this._dialogInput, false);
+			inst.settings = {};
+			$.data(this._dialogInput[0], PROP_NAME, inst);
+		}
+		extendRemove(inst.settings, settings || {});
+		date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
+		this._dialogInput.val(date);
+
+		this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
+		if (!this._pos) {
+			browserWidth = document.documentElement.clientWidth;
+			browserHeight = document.documentElement.clientHeight;
+			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
+			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
+			this._pos = // should use actual width/height below
+				[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
+		}
+
+		// move input on screen for focus, but hidden behind dialog
+		this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
+		inst.settings.onSelect = onSelect;
+		this._inDialog = true;
+		this.dpDiv.addClass(this._dialogClass);
+		this._showDatepicker(this._dialogInput[0]);
+		if ($.blockUI) {
+			$.blockUI(this.dpDiv);
+		}
+		$.data(this._dialogInput[0], PROP_NAME, inst);
+		return this;
+	},
+
+	/* Detach a datepicker from its control.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_destroyDatepicker: function(target) {
+		var nodeName,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		$.removeData(target, PROP_NAME);
+		if (nodeName === "input") {
+			inst.append.remove();
+			inst.trigger.remove();
+			$target.removeClass(this.markerClassName).
+				unbind("focus", this._showDatepicker).
+				unbind("keydown", this._doKeyDown).
+				unbind("keypress", this._doKeyPress).
+				unbind("keyup", this._doKeyUp);
+		} else if (nodeName === "div" || nodeName === "span") {
+			$target.removeClass(this.markerClassName).empty();
+		}
+	},
+
+	/* Enable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_enableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = false;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = false; }).end().
+				filter("img").css({opacity: "1.0", cursor: ""});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().removeClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", false);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+	},
+
+	/* Disable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_disableDatepicker: function(target) {
+		var nodeName, inline,
+			$target = $(target),
+			inst = $.data(target, PROP_NAME);
+
+		if (!$target.hasClass(this.markerClassName)) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if (nodeName === "input") {
+			target.disabled = true;
+			inst.trigger.filter("button").
+				each(function() { this.disabled = true; }).end().
+				filter("img").css({opacity: "0.5", cursor: "default"});
+		} else if (nodeName === "div" || nodeName === "span") {
+			inline = $target.children("." + this._inlineClass);
+			inline.children().addClass("ui-state-disabled");
+			inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
+				prop("disabled", true);
+		}
+		this._disabledInputs = $.map(this._disabledInputs,
+			function(value) { return (value === target ? null : value); }); // delete entry
+		this._disabledInputs[this._disabledInputs.length] = target;
+	},
+
+	/* Is the first field in a jQuery collection disabled as a datepicker?
+	 * @param  target	element - the target input field or division or span
+	 * @return boolean - true if disabled, false if enabled
+	 */
+	_isDisabledDatepicker: function(target) {
+		if (!target) {
+			return false;
+		}
+		for (var i = 0; i < this._disabledInputs.length; i++) {
+			if (this._disabledInputs[i] === target) {
+				return true;
+			}
+		}
+		return false;
+	},
+
+	/* Retrieve the instance data for the target control.
+	 * @param  target  element - the target input field or division or span
+	 * @return  object - the associated instance data
+	 * @throws  error if a jQuery problem getting data
+	 */
+	_getInst: function(target) {
+		try {
+			return $.data(target, PROP_NAME);
+		}
+		catch (err) {
+			throw "Missing instance data for this datepicker";
+		}
+	},
+
+	/* Update or retrieve the settings for a date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 * @param  name	object - the new settings to update or
+	 *				string - the name of the setting to change or retrieve,
+	 *				when retrieving also "all" for all instance settings or
+	 *				"defaults" for all global defaults
+	 * @param  value   any - the new value for the setting
+	 *				(omit if above is an object or to retrieve a value)
+	 */
+	_optionDatepicker: function(target, name, value) {
+		var settings, date, minDate, maxDate,
+			inst = this._getInst(target);
+
+		if (arguments.length === 2 && typeof name === "string") {
+			return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
+				(inst ? (name === "all" ? $.extend({}, inst.settings) :
+				this._get(inst, name)) : null));
+		}
+
+		settings = name || {};
+		if (typeof name === "string") {
+			settings = {};
+			settings[name] = value;
+		}
+
+		if (inst) {
+			if (this._curInst === inst) {
+				this._hideDatepicker();
+			}
+
+			date = this._getDateDatepicker(target, true);
+			minDate = this._getMinMaxDate(inst, "min");
+			maxDate = this._getMinMaxDate(inst, "max");
+			extendRemove(inst.settings, settings);
+			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
+			if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
+				inst.settings.minDate = this._formatDate(inst, minDate);
+			}
+			if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
+				inst.settings.maxDate = this._formatDate(inst, maxDate);
+			}
+			if ( "disabled" in settings ) {
+				if ( settings.disabled ) {
+					this._disableDatepicker(target);
+				} else {
+					this._enableDatepicker(target);
+				}
+			}
+			this._attachments($(target), inst);
+			this._autoSize(inst);
+			this._setDate(inst, date);
+			this._updateAlternate(inst);
+			this._updateDatepicker(inst);
+		}
+	},
+
+	// change method deprecated
+	_changeDatepicker: function(target, name, value) {
+		this._optionDatepicker(target, name, value);
+	},
+
+	/* Redraw the date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 */
+	_refreshDatepicker: function(target) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._updateDatepicker(inst);
+		}
+	},
+
+	/* Set the dates for a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  date	Date - the new date
+	 */
+	_setDateDatepicker: function(target, date) {
+		var inst = this._getInst(target);
+		if (inst) {
+			this._setDate(inst, date);
+			this._updateDatepicker(inst);
+			this._updateAlternate(inst);
+		}
+	},
+
+	/* Get the date(s) for the first entry in a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  noDefault boolean - true if no default date is to be used
+	 * @return Date - the current date
+	 */
+	_getDateDatepicker: function(target, noDefault) {
+		var inst = this._getInst(target);
+		if (inst && !inst.inline) {
+			this._setDateFromField(inst, noDefault);
+		}
+		return (inst ? this._getDate(inst) : null);
+	},
+
+	/* Handle keystrokes. */
+	_doKeyDown: function(event) {
+		var onSelect, dateStr, sel,
+			inst = $.datepicker._getInst(event.target),
+			handled = true,
+			isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
+
+		inst._keyEvent = true;
+		if ($.datepicker._datepickerShowing) {
+			switch (event.keyCode) {
+				case 9: $.datepicker._hideDatepicker();
+						handled = false;
+						break; // hide on tab out
+				case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
+									$.datepicker._currentClass + ")", inst.dpDiv);
+						if (sel[0]) {
+							$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
+						}
+
+						onSelect = $.datepicker._get(inst, "onSelect");
+						if (onSelect) {
+							dateStr = $.datepicker._formatDate(inst);
+
+							// trigger custom callback
+							onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
+						} else {
+							$.datepicker._hideDatepicker();
+						}
+
+						return false; // don't submit the form
+				case 27: $.datepicker._hideDatepicker();
+						break; // hide on escape
+				case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							-$.datepicker._get(inst, "stepBigMonths") :
+							-$.datepicker._get(inst, "stepMonths")), "M");
+						break; // previous month/year on page up/+ ctrl
+				case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+							+$.datepicker._get(inst, "stepBigMonths") :
+							+$.datepicker._get(inst, "stepMonths")), "M");
+						break; // next month/year on page down/+ ctrl
+				case 35: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._clearDate(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // clear on ctrl or command +end
+				case 36: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._gotoToday(event.target);
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // current on ctrl or command +home
+				case 37: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// -1 day on ctrl or command +left
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								-$.datepicker._get(inst, "stepBigMonths") :
+								-$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +left on Mac
+						break;
+				case 38: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, -7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // -1 week on ctrl or command +up
+				case 39: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						// +1 day on ctrl or command +right
+						if (event.originalEvent.altKey) {
+							$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+								+$.datepicker._get(inst, "stepBigMonths") :
+								+$.datepicker._get(inst, "stepMonths")), "M");
+						}
+						// next month/year on alt +right
+						break;
+				case 40: if (event.ctrlKey || event.metaKey) {
+							$.datepicker._adjustDate(event.target, +7, "D");
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // +1 week on ctrl or command +down
+				default: handled = false;
+			}
+		} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
+			$.datepicker._showDatepicker(this);
+		} else {
+			handled = false;
+		}
+
+		if (handled) {
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/* Filter entered characters - based on date format. */
+	_doKeyPress: function(event) {
+		var chars, chr,
+			inst = $.datepicker._getInst(event.target);
+
+		if ($.datepicker._get(inst, "constrainInput")) {
+			chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
+			chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
+			return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
+		}
+	},
+
+	/* Synchronise manual entry and field/alternate field. */
+	_doKeyUp: function(event) {
+		var date,
+			inst = $.datepicker._getInst(event.target);
+
+		if (inst.input.val() !== inst.lastVal) {
+			try {
+				date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+					(inst.input ? inst.input.val() : null),
+					$.datepicker._getFormatConfig(inst));
+
+				if (date) { // only if valid
+					$.datepicker._setDateFromField(inst);
+					$.datepicker._updateAlternate(inst);
+					$.datepicker._updateDatepicker(inst);
+				}
+			}
+			catch (err) {
+			}
+		}
+		return true;
+	},
+
+	/* Pop-up the date picker for a given input field.
+	 * If false returned from beforeShow event handler do not show.
+	 * @param  input  element - the input field attached to the date picker or
+	 *					event - if triggered by focus
+	 */
+	_showDatepicker: function(input) {
+		input = input.target || input;
+		if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
+			input = $("input", input.parentNode)[0];
+		}
+
+		if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
+			return;
+		}
+
+		var inst, beforeShow, beforeShowSettings, isFixed,
+			offset, showAnim, duration;
+
+		inst = $.datepicker._getInst(input);
+		if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
+			$.datepicker._curInst.dpDiv.stop(true, true);
+			if ( inst && $.datepicker._datepickerShowing ) {
+				$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
+			}
+		}
+
+		beforeShow = $.datepicker._get(inst, "beforeShow");
+		beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
+		if(beforeShowSettings === false){
+			return;
+		}
+		extendRemove(inst.settings, beforeShowSettings);
+
+		inst.lastVal = null;
+		$.datepicker._lastInput = input;
+		$.datepicker._setDateFromField(inst);
+
+		if ($.datepicker._inDialog) { // hide cursor
+			input.value = "";
+		}
+		if (!$.datepicker._pos) { // position below input
+			$.datepicker._pos = $.datepicker._findPos(input);
+			$.datepicker._pos[1] += input.offsetHeight; // add the height
+		}
+
+		isFixed = false;
+		$(input).parents().each(function() {
+			isFixed |= $(this).css("position") === "fixed";
+			return !isFixed;
+		});
+
+		offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
+		$.datepicker._pos = null;
+		//to avoid flashes on Firefox
+		inst.dpDiv.empty();
+		// determine sizing offscreen
+		inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
+		$.datepicker._updateDatepicker(inst);
+		// fix width for dynamic number of date pickers
+		// and adjust position before showing
+		offset = $.datepicker._checkOffset(inst, offset, isFixed);
+		inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
+			"static" : (isFixed ? "fixed" : "absolute")), display: "none",
+			left: offset.left + "px", top: offset.top + "px"});
+
+		if (!inst.inline) {
+			showAnim = $.datepicker._get(inst, "showAnim");
+			duration = $.datepicker._get(inst, "duration");
+			inst.dpDiv.zIndex($(input).zIndex()+1);
+			$.datepicker._datepickerShowing = true;
+
+			if ( $.effects && $.effects.effect[ showAnim ] ) {
+				inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
+			} else {
+				inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
+			}
+
+			if (inst.input.is(":visible") && !inst.input.is(":disabled")) {
+				inst.input.focus();
+			}
+			$.datepicker._curInst = inst;
+		}
+	},
+
+	/* Generate the date picker content. */
+	_updateDatepicker: function(inst) {
+		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
+		instActive = inst; // for delegate hover events
+		inst.dpDiv.empty().append(this._generateHTML(inst));
+		this._attachHandlers(inst);
+		inst.dpDiv.find("." + this._dayOverClass + " a").mouseover();
+
+		var origyearshtml,
+			numMonths = this._getNumberOfMonths(inst),
+			cols = numMonths[1],
+			width = 17;
+
+		inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
+		if (cols > 1) {
+			inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
+		}
+		inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
+			"Class"]("ui-datepicker-multi");
+		inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
+			"Class"]("ui-datepicker-rtl");
+
+		// #6694 - don't focus the input if it's already focused
+		// this breaks the change event in IE
+		if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&
+			inst.input.is(":visible") && !inst.input.is(":disabled") && inst.input[0] !== document.activeElement) {
+			inst.input.focus();
+		}
+
+		// deffered render of the years select (to avoid flashes on Firefox)
+		if( inst.yearshtml ){
+			origyearshtml = inst.yearshtml;
+			setTimeout(function(){
+				//assure that inst.yearshtml didn't change.
+				if( origyearshtml === inst.yearshtml && inst.yearshtml ){
+					inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
+				}
+				origyearshtml = inst.yearshtml = null;
+			}, 0);
+		}
+	},
+
+	/* Retrieve the size of left and top borders for an element.
+	 * @param  elem  (jQuery object) the element of interest
+	 * @return  (number[2]) the left and top borders
+	 */
+	_getBorders: function(elem) {
+		var convert = function(value) {
+			return {thin: 1, medium: 2, thick: 3}[value] || value;
+		};
+		return [parseFloat(convert(elem.css("border-left-width"))),
+			parseFloat(convert(elem.css("border-top-width")))];
+	},
+
+	/* Check positioning to remain on screen. */
+	_checkOffset: function(inst, offset, isFixed) {
+		var dpWidth = inst.dpDiv.outerWidth(),
+			dpHeight = inst.dpDiv.outerHeight(),
+			inputWidth = inst.input ? inst.input.outerWidth() : 0,
+			inputHeight = inst.input ? inst.input.outerHeight() : 0,
+			viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
+			viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
+
+		offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
+		offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
+		offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
+
+		// now check if datepicker is showing outside window viewport - move to a better place if so.
+		offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
+			Math.abs(offset.left + dpWidth - viewWidth) : 0);
+		offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
+			Math.abs(dpHeight + inputHeight) : 0);
+
+		return offset;
+	},
+
+	/* Find an object's position on the screen. */
+	_findPos: function(obj) {
+		var position,
+			inst = this._getInst(obj),
+			isRTL = this._get(inst, "isRTL");
+
+		while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
+			obj = obj[isRTL ? "previousSibling" : "nextSibling"];
+		}
+
+		position = $(obj).offset();
+		return [position.left, position.top];
+	},
+
+	/* Hide the date picker from view.
+	 * @param  input  element - the input field attached to the date picker
+	 */
+	_hideDatepicker: function(input) {
+		var showAnim, duration, postProcess, onClose,
+			inst = this._curInst;
+
+		if (!inst || (input && inst !== $.data(input, PROP_NAME))) {
+			return;
+		}
+
+		if (this._datepickerShowing) {
+			showAnim = this._get(inst, "showAnim");
+			duration = this._get(inst, "duration");
+			postProcess = function() {
+				$.datepicker._tidyDialog(inst);
+			};
+
+			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
+			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
+				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
+			} else {
+				inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
+					(showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
+			}
+
+			if (!showAnim) {
+				postProcess();
+			}
+			this._datepickerShowing = false;
+
+			onClose = this._get(inst, "onClose");
+			if (onClose) {
+				onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
+			}
+
+			this._lastInput = null;
+			if (this._inDialog) {
+				this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
+				if ($.blockUI) {
+					$.unblockUI();
+					$("body").append(this.dpDiv);
+				}
+			}
+			this._inDialog = false;
+		}
+	},
+
+	/* Tidy up after a dialog display. */
+	_tidyDialog: function(inst) {
+		inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
+	},
+
+	/* Close date picker if clicked elsewhere. */
+	_checkExternalClick: function(event) {
+		if (!$.datepicker._curInst) {
+			return;
+		}
+
+		var $target = $(event.target),
+			inst = $.datepicker._getInst($target[0]);
+
+		if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
+				$target.parents("#" + $.datepicker._mainDivId).length === 0 &&
+				!$target.hasClass($.datepicker.markerClassName) &&
+				!$target.closest("." + $.datepicker._triggerClass).length &&
+				$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
+			( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
+				$.datepicker._hideDatepicker();
+		}
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustDate: function(id, offset, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+		this._adjustInstDate(inst, offset +
+			(period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
+			period);
+		this._updateDatepicker(inst);
+	},
+
+	/* Action for current link. */
+	_gotoToday: function(id) {
+		var date,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		if (this._get(inst, "gotoCurrent") && inst.currentDay) {
+			inst.selectedDay = inst.currentDay;
+			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
+			inst.drawYear = inst.selectedYear = inst.currentYear;
+		} else {
+			date = new Date();
+			inst.selectedDay = date.getDate();
+			inst.drawMonth = inst.selectedMonth = date.getMonth();
+			inst.drawYear = inst.selectedYear = date.getFullYear();
+		}
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a new month/year. */
+	_selectMonthYear: function(id, select, period) {
+		var target = $(id),
+			inst = this._getInst(target[0]);
+
+		inst["selected" + (period === "M" ? "Month" : "Year")] =
+		inst["draw" + (period === "M" ? "Month" : "Year")] =
+			parseInt(select.options[select.selectedIndex].value,10);
+
+		this._notifyChange(inst);
+		this._adjustDate(target);
+	},
+
+	/* Action for selecting a day. */
+	_selectDay: function(id, month, year, td) {
+		var inst,
+			target = $(id);
+
+		if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
+			return;
+		}
+
+		inst = this._getInst(target[0]);
+		inst.selectedDay = inst.currentDay = $("a", td).html();
+		inst.selectedMonth = inst.currentMonth = month;
+		inst.selectedYear = inst.currentYear = year;
+		this._selectDate(id, this._formatDate(inst,
+			inst.currentDay, inst.currentMonth, inst.currentYear));
+	},
+
+	/* Erase the input field and hide the date picker. */
+	_clearDate: function(id) {
+		var target = $(id);
+		this._selectDate(target, "");
+	},
+
+	/* Update the input field with the selected date. */
+	_selectDate: function(id, dateStr) {
+		var onSelect,
+			target = $(id),
+			inst = this._getInst(target[0]);
+
+		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
+		if (inst.input) {
+			inst.input.val(dateStr);
+		}
+		this._updateAlternate(inst);
+
+		onSelect = this._get(inst, "onSelect");
+		if (onSelect) {
+			onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
+		} else if (inst.input) {
+			inst.input.trigger("change"); // fire the change event
+		}
+
+		if (inst.inline){
+			this._updateDatepicker(inst);
+		} else {
+			this._hideDatepicker();
+			this._lastInput = inst.input[0];
+			if (typeof(inst.input[0]) !== "object") {
+				inst.input.focus(); // restore focus
+			}
+			this._lastInput = null;
+		}
+	},
+
+	/* Update any alternate field to synchronise with the main field. */
+	_updateAlternate: function(inst) {
+		var altFormat, date, dateStr,
+			altField = this._get(inst, "altField");
+
+		if (altField) { // update alternate field too
+			altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
+			date = this._getDate(inst);
+			dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
+			$(altField).each(function() { $(this).val(dateStr); });
+		}
+	},
+
+	/* Set as beforeShowDay function to prevent selection of weekends.
+	 * @param  date  Date - the date to customise
+	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
+	 */
+	noWeekends: function(date) {
+		var day = date.getDay();
+		return [(day > 0 && day < 6), ""];
+	},
+
+	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
+	 * @param  date  Date - the date to get the week for
+	 * @return  number - the number of the week within the year that contains this date
+	 */
+	iso8601Week: function(date) {
+		var time,
+			checkDate = new Date(date.getTime());
+
+		// Find Thursday of this week starting on Monday
+		checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+
+		time = checkDate.getTime();
+		checkDate.setMonth(0); // Compare with Jan 1
+		checkDate.setDate(1);
+		return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
+	},
+
+	/* Parse a string value into a date object.
+	 * See formatDate below for the possible formats.
+	 *
+	 * @param  format string - the expected format of the date
+	 * @param  value string - the date in the above format
+	 * @param  settings Object - attributes include:
+	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  Date - the extracted date value or null if value is blank
+	 */
+	parseDate: function (format, value, settings) {
+		if (format == null || value == null) {
+			throw "Invalid arguments";
+		}
+
+		value = (typeof value === "object" ? value.toString() : value + "");
+		if (value === "") {
+			return null;
+		}
+
+		var iFormat, dim, extra,
+			iValue = 0,
+			shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
+			shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
+				new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			year = -1,
+			month = -1,
+			day = -1,
+			doy = -1,
+			literal = false,
+			date,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Extract a number from the string value
+			getNumber = function(match) {
+				var isDoubled = lookAhead(match),
+					size = (match === "@" ? 14 : (match === "!" ? 20 :
+					(match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
+					digits = new RegExp("^\\d{1," + size + "}"),
+					num = value.substring(iValue).match(digits);
+				if (!num) {
+					throw "Missing number at position " + iValue;
+				}
+				iValue += num[0].length;
+				return parseInt(num[0], 10);
+			},
+			// Extract a name from the string value and convert to an index
+			getName = function(match, shortNames, longNames) {
+				var index = -1,
+					names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
+						return [ [k, v] ];
+					}).sort(function (a, b) {
+						return -(a[1].length - b[1].length);
+					});
+
+				$.each(names, function (i, pair) {
+					var name = pair[1];
+					if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+						index = pair[0];
+						iValue += name.length;
+						return false;
+					}
+				});
+				if (index !== -1) {
+					return index + 1;
+				} else {
+					throw "Unknown name at position " + iValue;
+				}
+			},
+			// Confirm that a literal character matches the string value
+			checkLiteral = function() {
+				if (value.charAt(iValue) !== format.charAt(iFormat)) {
+					throw "Unexpected literal at position " + iValue;
+				}
+				iValue++;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					checkLiteral();
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d":
+						day = getNumber("d");
+						break;
+					case "D":
+						getName("D", dayNamesShort, dayNames);
+						break;
+					case "o":
+						doy = getNumber("o");
+						break;
+					case "m":
+						month = getNumber("m");
+						break;
+					case "M":
+						month = getName("M", monthNamesShort, monthNames);
+						break;
+					case "y":
+						year = getNumber("y");
+						break;
+					case "@":
+						date = new Date(getNumber("@"));
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "!":
+						date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "'":
+						if (lookAhead("'")){
+							checkLiteral();
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						checkLiteral();
+				}
+			}
+		}
+
+		if (iValue < value.length){
+			extra = value.substr(iValue);
+			if (!/^\s+/.test(extra)) {
+				throw "Extra/unparsed characters found in date: " + extra;
+			}
+		}
+
+		if (year === -1) {
+			year = new Date().getFullYear();
+		} else if (year < 100) {
+			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+				(year <= shortYearCutoff ? 0 : -100);
+		}
+
+		if (doy > -1) {
+			month = 1;
+			day = doy;
+			do {
+				dim = this._getDaysInMonth(year, month - 1);
+				if (day <= dim) {
+					break;
+				}
+				month++;
+				day -= dim;
+			} while (true);
+		}
+
+		date = this._daylightSavingAdjust(new Date(year, month - 1, day));
+		if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+			throw "Invalid date"; // E.g. 31/02/00
+		}
+		return date;
+	},
+
+	/* Standard date formats. */
+	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
+	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", // RFC 822
+	TICKS: "!",
+	TIMESTAMP: "@",
+	W3C: "yy-mm-dd", // ISO 8601
+
+	_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
+		Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
+
+	/* Format a date object into a string value.
+	 * The format can be combinations of the following:
+	 * d  - day of month (no leading zero)
+	 * dd - day of month (two digit)
+	 * o  - day of year (no leading zeros)
+	 * oo - day of year (three digit)
+	 * D  - day name short
+	 * DD - day name long
+	 * m  - month of year (no leading zero)
+	 * mm - month of year (two digit)
+	 * M  - month name short
+	 * MM - month name long
+	 * y  - year (two digit)
+	 * yy - year (four digit)
+	 * @ - Unix timestamp (ms since 01/01/1970)
+	 * ! - Windows ticks (100ns since 01/01/0001)
+	 * "..." - literal text
+	 * '' - single quote
+	 *
+	 * @param  format string - the desired format of the date
+	 * @param  date Date - the date value to format
+	 * @param  settings Object - attributes include:
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  string - the date in the above format
+	 */
+	formatDate: function (format, date, settings) {
+		if (!date) {
+			return "";
+		}
+
+		var iFormat,
+			dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
+			dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
+			monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
+			monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			},
+			// Format a number, with leading zero if necessary
+			formatNumber = function(match, value, len) {
+				var num = "" + value;
+				if (lookAhead(match)) {
+					while (num.length < len) {
+						num = "0" + num;
+					}
+				}
+				return num;
+			},
+			// Format a name, short or long as requested
+			formatName = function(match, value, shortNames, longNames) {
+				return (lookAhead(match) ? longNames[value] : shortNames[value]);
+			},
+			output = "",
+			literal = false;
+
+		if (date) {
+			for (iFormat = 0; iFormat < format.length; iFormat++) {
+				if (literal) {
+					if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+						literal = false;
+					} else {
+						output += format.charAt(iFormat);
+					}
+				} else {
+					switch (format.charAt(iFormat)) {
+						case "d":
+							output += formatNumber("d", date.getDate(), 2);
+							break;
+						case "D":
+							output += formatName("D", date.getDay(), dayNamesShort, dayNames);
+							break;
+						case "o":
+							output += formatNumber("o",
+								Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+							break;
+						case "m":
+							output += formatNumber("m", date.getMonth() + 1, 2);
+							break;
+						case "M":
+							output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
+							break;
+						case "y":
+							output += (lookAhead("y") ? date.getFullYear() :
+								(date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
+							break;
+						case "@":
+							output += date.getTime();
+							break;
+						case "!":
+							output += date.getTime() * 10000 + this._ticksTo1970;
+							break;
+						case "'":
+							if (lookAhead("'")) {
+								output += "'";
+							} else {
+								literal = true;
+							}
+							break;
+						default:
+							output += format.charAt(iFormat);
+					}
+				}
+			}
+		}
+		return output;
+	},
+
+	/* Extract all possible characters from the date format. */
+	_possibleChars: function (format) {
+		var iFormat,
+			chars = "",
+			literal = false,
+			// Check whether a format character is doubled
+			lookAhead = function(match) {
+				var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+				if (matches) {
+					iFormat++;
+				}
+				return matches;
+			};
+
+		for (iFormat = 0; iFormat < format.length; iFormat++) {
+			if (literal) {
+				if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+					literal = false;
+				} else {
+					chars += format.charAt(iFormat);
+				}
+			} else {
+				switch (format.charAt(iFormat)) {
+					case "d": case "m": case "y": case "@":
+						chars += "0123456789";
+						break;
+					case "D": case "M":
+						return null; // Accept anything
+					case "'":
+						if (lookAhead("'")) {
+							chars += "'";
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						chars += format.charAt(iFormat);
+				}
+			}
+		}
+		return chars;
+	},
+
+	/* Get a setting value, defaulting if necessary. */
+	_get: function(inst, name) {
+		return inst.settings[name] !== undefined ?
+			inst.settings[name] : this._defaults[name];
+	},
+
+	/* Parse existing date and initialise date picker. */
+	_setDateFromField: function(inst, noDefault) {
+		if (inst.input.val() === inst.lastVal) {
+			return;
+		}
+
+		var dateFormat = this._get(inst, "dateFormat"),
+			dates = inst.lastVal = inst.input ? inst.input.val() : null,
+			defaultDate = this._getDefaultDate(inst),
+			date = defaultDate,
+			settings = this._getFormatConfig(inst);
+
+		try {
+			date = this.parseDate(dateFormat, dates, settings) || defaultDate;
+		} catch (event) {
+			dates = (noDefault ? "" : dates);
+		}
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		inst.currentDay = (dates ? date.getDate() : 0);
+		inst.currentMonth = (dates ? date.getMonth() : 0);
+		inst.currentYear = (dates ? date.getFullYear() : 0);
+		this._adjustInstDate(inst);
+	},
+
+	/* Retrieve the default date shown on opening. */
+	_getDefaultDate: function(inst) {
+		return this._restrictMinMax(inst,
+			this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
+	},
+
+	/* A date may be specified as an exact value or a relative one. */
+	_determineDate: function(inst, date, defaultDate) {
+		var offsetNumeric = function(offset) {
+				var date = new Date();
+				date.setDate(date.getDate() + offset);
+				return date;
+			},
+			offsetString = function(offset) {
+				try {
+					return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
+						offset, $.datepicker._getFormatConfig(inst));
+				}
+				catch (e) {
+					// Ignore
+				}
+
+				var date = (offset.toLowerCase().match(/^c/) ?
+					$.datepicker._getDate(inst) : null) || new Date(),
+					year = date.getFullYear(),
+					month = date.getMonth(),
+					day = date.getDate(),
+					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
+					matches = pattern.exec(offset);
+
+				while (matches) {
+					switch (matches[2] || "d") {
+						case "d" : case "D" :
+							day += parseInt(matches[1],10); break;
+						case "w" : case "W" :
+							day += parseInt(matches[1],10) * 7; break;
+						case "m" : case "M" :
+							month += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+						case "y": case "Y" :
+							year += parseInt(matches[1],10);
+							day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
+							break;
+					}
+					matches = pattern.exec(offset);
+				}
+				return new Date(year, month, day);
+			},
+			newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
+				(typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
+
+		newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
+		if (newDate) {
+			newDate.setHours(0);
+			newDate.setMinutes(0);
+			newDate.setSeconds(0);
+			newDate.setMilliseconds(0);
+		}
+		return this._daylightSavingAdjust(newDate);
+	},
+
+	/* Handle switch to/from daylight saving.
+	 * Hours may be non-zero on daylight saving cut-over:
+	 * > 12 when midnight changeover, but then cannot generate
+	 * midnight datetime, so jump to 1AM, otherwise reset.
+	 * @param  date  (Date) the date to check
+	 * @return  (Date) the corrected date
+	 */
+	_daylightSavingAdjust: function(date) {
+		if (!date) {
+			return null;
+		}
+		date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+		return date;
+	},
+
+	/* Set the date(s) directly. */
+	_setDate: function(inst, date, noChange) {
+		var clear = !date,
+			origMonth = inst.selectedMonth,
+			origYear = inst.selectedYear,
+			newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
+
+		inst.selectedDay = inst.currentDay = newDate.getDate();
+		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
+		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
+		if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
+			this._notifyChange(inst);
+		}
+		this._adjustInstDate(inst);
+		if (inst.input) {
+			inst.input.val(clear ? "" : this._formatDate(inst));
+		}
+	},
+
+	/* Retrieve the date(s) directly. */
+	_getDate: function(inst) {
+		var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
+			this._daylightSavingAdjust(new Date(
+			inst.currentYear, inst.currentMonth, inst.currentDay)));
+			return startDate;
+	},
+
+	/* Attach the onxxx handlers.  These are declared statically so
+	 * they work with static code transformers like Caja.
+	 */
+	_attachHandlers: function(inst) {
+		var stepMonths = this._get(inst, "stepMonths"),
+			id = "#" + inst.id.replace( /\\\\/g, "\\" );
+		inst.dpDiv.find("[data-handler]").map(function () {
+			var handler = {
+				prev: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, -stepMonths, "M");
+				},
+				next: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._adjustDate(id, +stepMonths, "M");
+				},
+				hide: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._hideDatepicker();
+				},
+				today: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._gotoToday(id);
+				},
+				selectDay: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
+					return false;
+				},
+				selectMonth: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "M");
+					return false;
+				},
+				selectYear: function () {
+					window["DP_jQuery_" + dpuuid].datepicker._selectMonthYear(id, this, "Y");
+					return false;
+				}
+			};
+			$(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
+		});
+	},
+
+	/* Generate the HTML for the current state of the date picker. */
+	_generateHTML: function(inst) {
+		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
+			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
+			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
+			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
+			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
+			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
+			tempDate = new Date(),
+			today = this._daylightSavingAdjust(
+				new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
+			isRTL = this._get(inst, "isRTL"),
+			showButtonPanel = this._get(inst, "showButtonPanel"),
+			hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
+			navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
+			numMonths = this._getNumberOfMonths(inst),
+			showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
+			stepMonths = this._get(inst, "stepMonths"),
+			isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
+			currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
+				new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			drawMonth = inst.drawMonth - showCurrentAtPos,
+			drawYear = inst.drawYear;
+
+		if (drawMonth < 0) {
+			drawMonth += 12;
+			drawYear--;
+		}
+		if (maxDate) {
+			maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
+				maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
+			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
+			while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
+				drawMonth--;
+				if (drawMonth < 0) {
+					drawMonth = 11;
+					drawYear--;
+				}
+			}
+		}
+		inst.drawMonth = drawMonth;
+		inst.drawYear = drawYear;
+
+		prevText = this._get(inst, "prevText");
+		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
+			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
+
+		nextText = this._get(inst, "nextText");
+		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
+			this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
+			this._getFormatConfig(inst)));
+
+		next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
+			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
+			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
+			(hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
+
+		currentText = this._get(inst, "currentText");
+		gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
+		currentText = (!navigationAsDateFormat ? currentText :
+			this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
+
+		controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
+			this._get(inst, "closeText") + "</button>" : "");
+
+		buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
+			(this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
+			">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
+
+		firstDay = parseInt(this._get(inst, "firstDay"),10);
+		firstDay = (isNaN(firstDay) ? 0 : firstDay);
+
+		showWeek = this._get(inst, "showWeek");
+		dayNames = this._get(inst, "dayNames");
+		dayNamesMin = this._get(inst, "dayNamesMin");
+		monthNames = this._get(inst, "monthNames");
+		monthNamesShort = this._get(inst, "monthNamesShort");
+		beforeShowDay = this._get(inst, "beforeShowDay");
+		showOtherMonths = this._get(inst, "showOtherMonths");
+		selectOtherMonths = this._get(inst, "selectOtherMonths");
+		defaultDate = this._getDefaultDate(inst);
+		html = "";
+		dow;
+		for (row = 0; row < numMonths[0]; row++) {
+			group = "";
+			this.maxRows = 4;
+			for (col = 0; col < numMonths[1]; col++) {
+				selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
+				cornerClass = " ui-corner-all";
+				calender = "";
+				if (isMultiMonth) {
+					calender += "<div class='ui-datepicker-group";
+					if (numMonths[1] > 1) {
+						switch (col) {
+							case 0: calender += " ui-datepicker-group-first";
+								cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
+							case numMonths[1]-1: calender += " ui-datepicker-group-last";
+								cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
+							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
+						}
+					}
+					calender += "'>";
+				}
+				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
+					(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
+					(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
+					this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
+					row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
+					"</div><table class='ui-datepicker-calendar'><thead>" +
+					"<tr>";
+				thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
+				for (dow = 0; dow < 7; dow++) { // days of the week
+					day = (dow + firstDay) % 7;
+					thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
+						"<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
+				}
+				calender += thead + "</tr></thead><tbody>";
+				daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
+				if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
+					inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
+				}
+				leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
+				curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
+				numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
+				this.maxRows = numRows;
+				printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
+				for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
+					calender += "<tr>";
+					tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
+						this._get(inst, "calculateWeek")(printDate) + "</td>");
+					for (dow = 0; dow < 7; dow++) { // create date picker days
+						daySettings = (beforeShowDay ?
+							beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
+						otherMonth = (printDate.getMonth() !== drawMonth);
+						unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
+							(minDate && printDate < minDate) || (maxDate && printDate > maxDate);
+						tbody += "<td class='" +
+							((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
+							(otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
+							((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
+							(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
+							// or defaultDate is current printedDate and defaultDate is selectedDate
+							" " + this._dayOverClass : "") + // highlight selected day
+							(unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") +  // highlight unselectable days
+							(otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
+							(printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
+							(printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
+							((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
+							(unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
+							(otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
+							(unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
+							(printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
+							(printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
+							(otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
+							"' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
+						printDate.setDate(printDate.getDate() + 1);
+						printDate = this._daylightSavingAdjust(printDate);
+					}
+					calender += tbody + "</tr>";
+				}
+				drawMonth++;
+				if (drawMonth > 11) {
+					drawMonth = 0;
+					drawYear++;
+				}
+				calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
+							((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
+				group += calender;
+			}
+			html += group;
+		}
+		html += buttonPanel;
+		inst._keyEvent = false;
+		return html;
+	},
+
+	/* Generate the month and year header. */
+	_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
+			secondary, monthNames, monthNamesShort) {
+
+		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
+			changeMonth = this._get(inst, "changeMonth"),
+			changeYear = this._get(inst, "changeYear"),
+			showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
+			html = "<div class='ui-datepicker-title'>",
+			monthHtml = "";
+
+		// month selection
+		if (secondary || !changeMonth) {
+			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
+		} else {
+			inMinYear = (minDate && minDate.getFullYear() === drawYear);
+			inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
+			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
+			for ( month = 0; month < 12; month++) {
+				if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
+					monthHtml += "<option value='" + month + "'" +
+						(month === drawMonth ? " selected='selected'" : "") +
+						">" + monthNamesShort[month] + "</option>";
+				}
+			}
+			monthHtml += "</select>";
+		}
+
+		if (!showMonthAfterYear) {
+			html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
+		}
+
+		// year selection
+		if ( !inst.yearshtml ) {
+			inst.yearshtml = "";
+			if (secondary || !changeYear) {
+				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
+			} else {
+				// determine range of years to display
+				years = this._get(inst, "yearRange").split(":");
+				thisYear = new Date().getFullYear();
+				determineYear = function(value) {
+					var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
+						(value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
+						parseInt(value, 10)));
+					return (isNaN(year) ? thisYear : year);
+				};
+				year = determineYear(years[0]);
+				endYear = Math.max(year, determineYear(years[1] || ""));
+				year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
+				endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
+				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
+				for (; year <= endYear; year++) {
+					inst.yearshtml += "<option value='" + year + "'" +
+						(year === drawYear ? " selected='selected'" : "") +
+						">" + year + "</option>";
+				}
+				inst.yearshtml += "</select>";
+
+				html += inst.yearshtml;
+				inst.yearshtml = null;
+			}
+		}
+
+		html += this._get(inst, "yearSuffix");
+		if (showMonthAfterYear) {
+			html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
+		}
+		html += "</div>"; // Close datepicker_header
+		return html;
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustInstDate: function(inst, offset, period) {
+		var year = inst.drawYear + (period === "Y" ? offset : 0),
+			month = inst.drawMonth + (period === "M" ? offset : 0),
+			day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
+			date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
+
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		if (period === "M" || period === "Y") {
+			this._notifyChange(inst);
+		}
+	},
+
+	/* Ensure a date is within any min/max bounds. */
+	_restrictMinMax: function(inst, date) {
+		var minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			newDate = (minDate && date < minDate ? minDate : date);
+		return (maxDate && newDate > maxDate ? maxDate : newDate);
+	},
+
+	/* Notify change of month/year. */
+	_notifyChange: function(inst) {
+		var onChange = this._get(inst, "onChangeMonthYear");
+		if (onChange) {
+			onChange.apply((inst.input ? inst.input[0] : null),
+				[inst.selectedYear, inst.selectedMonth + 1, inst]);
+		}
+	},
+
+	/* Determine the number of months to show. */
+	_getNumberOfMonths: function(inst) {
+		var numMonths = this._get(inst, "numberOfMonths");
+		return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
+	},
+
+	/* Determine the current maximum date - ensure no time components are set. */
+	_getMinMaxDate: function(inst, minMax) {
+		return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
+	},
+
+	/* Find the number of days in a given month. */
+	_getDaysInMonth: function(year, month) {
+		return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
+	},
+
+	/* Find the day of the week of the first of a month. */
+	_getFirstDayOfMonth: function(year, month) {
+		return new Date(year, month, 1).getDay();
+	},
+
+	/* Determines if we should allow a "next/prev" month display change. */
+	_canAdjustMonth: function(inst, offset, curYear, curMonth) {
+		var numMonths = this._getNumberOfMonths(inst),
+			date = this._daylightSavingAdjust(new Date(curYear,
+			curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
+
+		if (offset < 0) {
+			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
+		}
+		return this._isInRange(inst, date);
+	},
+
+	/* Is the given date in the accepted range? */
+	_isInRange: function(inst, date) {
+		var yearSplit, currentYear,
+			minDate = this._getMinMaxDate(inst, "min"),
+			maxDate = this._getMinMaxDate(inst, "max"),
+			minYear = null,
+			maxYear = null,
+			years = this._get(inst, "yearRange");
+			if (years){
+				yearSplit = years.split(":");
+				currentYear = new Date().getFullYear();
+				minYear = parseInt(yearSplit[0], 10);
+				maxYear = parseInt(yearSplit[1], 10);
+				if ( yearSplit[0].match(/[+\-].*/) ) {
+					minYear += currentYear;
+				}
+				if ( yearSplit[1].match(/[+\-].*/) ) {
+					maxYear += currentYear;
+				}
+			}
+
+		return ((!minDate || date.getTime() >= minDate.getTime()) &&
+			(!maxDate || date.getTime() <= maxDate.getTime()) &&
+			(!minYear || date.getFullYear() >= minYear) &&
+			(!maxYear || date.getFullYear() <= maxYear));
+	},
+
+	/* Provide the configuration settings for formatting/parsing. */
+	_getFormatConfig: function(inst) {
+		var shortYearCutoff = this._get(inst, "shortYearCutoff");
+		shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
+			new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
+		return {shortYearCutoff: shortYearCutoff,
+			dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
+			monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
+	},
+
+	/* Format the given date for display. */
+	_formatDate: function(inst, day, month, year) {
+		if (!day) {
+			inst.currentDay = inst.selectedDay;
+			inst.currentMonth = inst.selectedMonth;
+			inst.currentYear = inst.selectedYear;
+		}
+		var date = (day ? (typeof day === "object" ? day :
+			this._daylightSavingAdjust(new Date(year, month, day))) :
+			this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
+		return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
+	}
+});
+
+/*
+ * Bind hover events for datepicker elements.
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
+ * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
+ */
+function bindHover(dpDiv) {
+	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
+	return dpDiv.delegate(selector, "mouseout", function() {
+			$(this).removeClass("ui-state-hover");
+			if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+				$(this).removeClass("ui-datepicker-prev-hover");
+			}
+			if (this.className.indexOf("ui-datepicker-next") !== -1) {
+				$(this).removeClass("ui-datepicker-next-hover");
+			}
+		})
+		.delegate(selector, "mouseover", function(){
+			if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {
+				$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+				$(this).addClass("ui-state-hover");
+				if (this.className.indexOf("ui-datepicker-prev") !== -1) {
+					$(this).addClass("ui-datepicker-prev-hover");
+				}
+				if (this.className.indexOf("ui-datepicker-next") !== -1) {
+					$(this).addClass("ui-datepicker-next-hover");
+				}
+			}
+		});
+}
+
+/* jQuery extend now ignores nulls! */
+function extendRemove(target, props) {
+	$.extend(target, props);
+	for (var name in props) {
+		if (props[name] == null) {
+			target[name] = props[name];
+		}
+	}
+	return target;
+}
+
+/* Invoke the datepicker functionality.
+   @param  options  string - a command, optionally followed by additional parameters or
+					Object - settings for attaching new datepicker functionality
+   @return  jQuery object */
+$.fn.datepicker = function(options){
+
+	/* Verify an empty collection wasn't passed - Fixes #6976 */
+	if ( !this.length ) {
+		return this;
+	}
+
+	/* Initialise the date picker. */
+	if (!$.datepicker.initialized) {
+		$(document).mousedown($.datepicker._checkExternalClick);
+		$.datepicker.initialized = true;
+	}
+
+	/* Append datepicker main container to body if not exist. */
+	if ($("#"+$.datepicker._mainDivId).length === 0) {
+		$("body").append($.datepicker.dpDiv);
+	}
+
+	var otherArgs = Array.prototype.slice.call(arguments, 1);
+	if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
+		return $.datepicker["_" + options + "Datepicker"].
+			apply($.datepicker, [this[0]].concat(otherArgs));
+	}
+	return this.each(function() {
+		typeof options === "string" ?
+			$.datepicker["_" + options + "Datepicker"].
+				apply($.datepicker, [this].concat(otherArgs)) :
+			$.datepicker._attachDatepicker(this, options);
+	});
+};
+
+$.datepicker = new Datepicker(); // singleton instance
+$.datepicker.initialized = false;
+$.datepicker.uuid = new Date().getTime();
+$.datepicker.version = "1.10.1";
+
+// Workaround for #4055
+// Add another global to avoid noConflict issues with inline event handlers
+window["DP_jQuery_" + dpuuid] = $;
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.dialog.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.dialog.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.dialog.js	(revision 25596)
@@ -0,0 +1,799 @@
+/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/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( $, undefined ) {
+
+var sizeRelatedOptions = {
+		buttons: true,
+		height: true,
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true,
+		width: true
+	},
+	resizableRelatedOptions = {
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true
+	};
+
+$.widget( "ui.dialog", {
+	version: "1.10.1",
+	options: {
+		appendTo: "body",
+		autoOpen: true,
+		buttons: [],
+		closeOnEscape: true,
+		closeText: "close",
+		dialogClass: "",
+		draggable: true,
+		hide: null,
+		height: "auto",
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 150,
+		minWidth: 150,
+		modal: false,
+		position: {
+			my: "center",
+			at: "center",
+			of: window,
+			collision: "fit",
+			// Ensure the titlebar is always visible
+			using: function( pos ) {
+				var topOffset = $( this ).css( pos ).offset().top;
+				if ( topOffset < 0 ) {
+					$( this ).css( "top", pos.top - topOffset );
+				}
+			}
+		},
+		resizable: true,
+		show: null,
+		title: null,
+		width: 300,
+
+		// callbacks
+		beforeClose: null,
+		close: null,
+		drag: null,
+		dragStart: null,
+		dragStop: null,
+		focus: null,
+		open: null,
+		resize: null,
+		resizeStart: null,
+		resizeStop: null
+	},
+
+	_create: function() {
+		this.originalCss = {
+			display: this.element[0].style.display,
+			width: this.element[0].style.width,
+			minHeight: this.element[0].style.minHeight,
+			maxHeight: this.element[0].style.maxHeight,
+			height: this.element[0].style.height
+		};
+		this.originalPosition = {
+			parent: this.element.parent(),
+			index: this.element.parent().children().index( this.element )
+		};
+		this.originalTitle = this.element.attr("title");
+		this.options.title = this.options.title || this.originalTitle;
+
+		this._createWrapper();
+
+		this.element
+			.show()
+			.removeAttr("title")
+			.addClass("ui-dialog-content ui-widget-content")
+			.appendTo( this.uiDialog );
+
+		this._createTitlebar();
+		this._createButtonPane();
+
+		if ( this.options.draggable && $.fn.draggable ) {
+			this._makeDraggable();
+		}
+		if ( this.options.resizable && $.fn.resizable ) {
+			this._makeResizable();
+		}
+
+		this._isOpen = false;
+	},
+
+	_init: function() {
+		if ( this.options.autoOpen ) {
+			this.open();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+		if ( element && (element.jquery || element.nodeType) ) {
+			return $( element );
+		}
+		return this.document.find( element || "body" ).eq( 0 );
+	},
+
+	_destroy: function() {
+		var next,
+			originalPosition = this.originalPosition;
+
+		this._destroyOverlay();
+
+		this.element
+			.removeUniqueId()
+			.removeClass("ui-dialog-content ui-widget-content")
+			.css( this.originalCss )
+			// Without detaching first, the following becomes really slow
+			.detach();
+
+		this.uiDialog.stop( true, true ).remove();
+
+		if ( this.originalTitle ) {
+			this.element.attr( "title", this.originalTitle );
+		}
+
+		next = originalPosition.parent.children().eq( originalPosition.index );
+		// Don't try to place the dialog next to itself (#8613)
+		if ( next.length && next[0] !== this.element[0] ) {
+			next.before( this.element );
+		} else {
+			originalPosition.parent.append( this.element );
+		}
+	},
+
+	widget: function() {
+		return this.uiDialog;
+	},
+
+	disable: $.noop,
+	enable: $.noop,
+
+	close: function( event ) {
+		var that = this;
+
+		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
+			return;
+		}
+
+		this._isOpen = false;
+		this._destroyOverlay();
+
+		if ( !this.opener.filter(":focusable").focus().length ) {
+			// Hiding a focused element doesn't trigger blur in WebKit
+			// so in case we have nothing to focus on, explicitly blur the active element
+			// https://bugs.webkit.org/show_bug.cgi?id=47182
+			$( this.document[0].activeElement ).blur();
+		}
+
+		this._hide( this.uiDialog, this.options.hide, function() {
+			that._trigger( "close", event );
+		});
+	},
+
+	isOpen: function() {
+		return this._isOpen;
+	},
+
+	moveToTop: function() {
+		this._moveToTop();
+	},
+
+	_moveToTop: function( event, silent ) {
+		var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length;
+		if ( moved && !silent ) {
+			this._trigger( "focus", event );
+		}
+		return moved;
+	},
+
+	open: function() {
+		var that = this;
+		if ( this._isOpen ) {
+			if ( this._moveToTop() ) {
+				this._focusTabbable();
+			}
+			return;
+		}
+
+		this._isOpen = true;
+		this.opener = $( this.document[0].activeElement );
+
+		this._size();
+		this._position();
+		this._createOverlay();
+		this._moveToTop( null, true );
+		this._show( this.uiDialog, this.options.show, function() {
+			that._focusTabbable();
+			that._trigger("focus");
+		});
+
+		this._trigger("open");
+	},
+
+	_focusTabbable: function() {
+		// Set focus to the first match:
+		// 1. First element inside the dialog matching [autofocus]
+		// 2. Tabbable element inside the content element
+		// 3. Tabbable element inside the buttonpane
+		// 4. The close button
+		// 5. The dialog itself
+		var hasFocus = this.element.find("[autofocus]");
+		if ( !hasFocus.length ) {
+			hasFocus = this.element.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogButtonPane.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialog;
+		}
+		hasFocus.eq( 0 ).focus();
+	},
+
+	_keepFocus: function( event ) {
+		function checkFocus() {
+			var activeElement = this.document[0].activeElement,
+				isActive = this.uiDialog[0] === activeElement ||
+					$.contains( this.uiDialog[0], activeElement );
+			if ( !isActive ) {
+				this._focusTabbable();
+			}
+		}
+		event.preventDefault();
+		checkFocus.call( this );
+		// support: IE
+		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
+		// so we check again later
+		this._delay( checkFocus );
+	},
+
+	_createWrapper: function() {
+		this.uiDialog = $("<div>")
+			.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
+				this.options.dialogClass )
+			.hide()
+			.attr({
+				// Setting tabIndex makes the div focusable
+				tabIndex: -1,
+				role: "dialog"
+			})
+			.appendTo( this._appendTo() );
+
+		this._on( this.uiDialog, {
+			keydown: function( event ) {
+				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
+						event.keyCode === $.ui.keyCode.ESCAPE ) {
+					event.preventDefault();
+					this.close( event );
+					return;
+				}
+
+				// prevent tabbing out of dialogs
+				if ( event.keyCode !== $.ui.keyCode.TAB ) {
+					return;
+				}
+				var tabbables = this.uiDialog.find(":tabbable"),
+					first = tabbables.filter(":first"),
+					last  = tabbables.filter(":last");
+
+				if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
+					first.focus( 1 );
+					event.preventDefault();
+				} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
+					last.focus( 1 );
+					event.preventDefault();
+				}
+			},
+			mousedown: function( event ) {
+				if ( this._moveToTop( event ) ) {
+					this._focusTabbable();
+				}
+			}
+		});
+
+		// We assume that any existing aria-describedby attribute means
+		// that the dialog content is marked up properly
+		// otherwise we brute force the content as the description
+		if ( !this.element.find("[aria-describedby]").length ) {
+			this.uiDialog.attr({
+				"aria-describedby": this.element.uniqueId().attr("id")
+			});
+		}
+	},
+
+	_createTitlebar: function() {
+		var uiDialogTitle;
+
+		this.uiDialogTitlebar = $("<div>")
+			.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
+			.prependTo( this.uiDialog );
+		this._on( this.uiDialogTitlebar, {
+			mousedown: function( event ) {
+				// Don't prevent click on close button (#8838)
+				// Focusing a dialog that is partially scrolled out of view
+				// causes the browser to scroll it into view, preventing the click event
+				if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) {
+					// Dialog isn't getting focus when dragging (#8063)
+					this.uiDialog.focus();
+				}
+			}
+		});
+
+		this.uiDialogTitlebarClose = $("<button></button>")
+			.button({
+				label: this.options.closeText,
+				icons: {
+					primary: "ui-icon-closethick"
+				},
+				text: false
+			})
+			.addClass("ui-dialog-titlebar-close")
+			.appendTo( this.uiDialogTitlebar );
+		this._on( this.uiDialogTitlebarClose, {
+			click: function( event ) {
+				event.preventDefault();
+				this.close( event );
+			}
+		});
+
+		uiDialogTitle = $("<span>")
+			.uniqueId()
+			.addClass("ui-dialog-title")
+			.prependTo( this.uiDialogTitlebar );
+		this._title( uiDialogTitle );
+
+		this.uiDialog.attr({
+			"aria-labelledby": uiDialogTitle.attr("id")
+		});
+	},
+
+	_title: function( title ) {
+		if ( !this.options.title ) {
+			title.html("&#160;");
+		}
+		title.text( this.options.title );
+	},
+
+	_createButtonPane: function() {
+		this.uiDialogButtonPane = $("<div>")
+			.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
+
+		this.uiButtonSet = $("<div>")
+			.addClass("ui-dialog-buttonset")
+			.appendTo( this.uiDialogButtonPane );
+
+		this._createButtons();
+	},
+
+	_createButtons: function() {
+		var that = this,
+			buttons = this.options.buttons;
+
+		// if we already have a button pane, remove it
+		this.uiDialogButtonPane.remove();
+		this.uiButtonSet.empty();
+
+		if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
+			this.uiDialog.removeClass("ui-dialog-buttons");
+			return;
+		}
+
+		$.each( buttons, function( name, props ) {
+			var click, buttonOptions;
+			props = $.isFunction( props ) ?
+				{ click: props, text: name } :
+				props;
+			// Default to a non-submitting button
+			props = $.extend( { type: "button" }, props );
+			// Change the context for the click callback to be the main element
+			click = props.click;
+			props.click = function() {
+				click.apply( that.element[0], arguments );
+			};
+			buttonOptions = {
+				icons: props.icons,
+				text: props.showText
+			};
+			delete props.icons;
+			delete props.showText;
+			$( "<button></button>", props )
+				.button( buttonOptions )
+				.appendTo( that.uiButtonSet );
+		});
+		this.uiDialog.addClass("ui-dialog-buttons");
+		this.uiDialogButtonPane.appendTo( this.uiDialog );
+	},
+
+	_makeDraggable: function() {
+		var that = this,
+			options = this.options;
+
+		function filteredUi( ui ) {
+			return {
+				position: ui.position,
+				offset: ui.offset
+			};
+		}
+
+		this.uiDialog.draggable({
+			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
+			handle: ".ui-dialog-titlebar",
+			containment: "document",
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-dragging");
+				that._blockFrames();
+				that._trigger( "dragStart", event, filteredUi( ui ) );
+			},
+			drag: function( event, ui ) {
+				that._trigger( "drag", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.position = [
+					ui.position.left - that.document.scrollLeft(),
+					ui.position.top - that.document.scrollTop()
+				];
+				$( this ).removeClass("ui-dialog-dragging");
+				that._unblockFrames();
+				that._trigger( "dragStop", event, filteredUi( ui ) );
+			}
+		});
+	},
+
+	_makeResizable: function() {
+		var that = this,
+			options = this.options,
+			handles = options.resizable,
+			// .ui-resizable has position: relative defined in the stylesheet
+			// but dialogs have to use absolute or fixed positioning
+			position = this.uiDialog.css("position"),
+			resizeHandles = typeof handles === "string" ?
+				handles	:
+				"n,e,s,w,se,sw,ne,nw";
+
+		function filteredUi( ui ) {
+			return {
+				originalPosition: ui.originalPosition,
+				originalSize: ui.originalSize,
+				position: ui.position,
+				size: ui.size
+			};
+		}
+
+		this.uiDialog.resizable({
+			cancel: ".ui-dialog-content",
+			containment: "document",
+			alsoResize: this.element,
+			maxWidth: options.maxWidth,
+			maxHeight: options.maxHeight,
+			minWidth: options.minWidth,
+			minHeight: this._minHeight(),
+			handles: resizeHandles,
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-resizing");
+				that._blockFrames();
+				that._trigger( "resizeStart", event, filteredUi( ui ) );
+			},
+			resize: function( event, ui ) {
+				that._trigger( "resize", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.height = $( this ).height();
+				options.width = $( this ).width();
+				$( this ).removeClass("ui-dialog-resizing");
+				that._unblockFrames();
+				that._trigger( "resizeStop", event, filteredUi( ui ) );
+			}
+		})
+		.css( "position", position );
+	},
+
+	_minHeight: function() {
+		var options = this.options;
+
+		return options.height === "auto" ?
+			options.minHeight :
+			Math.min( options.minHeight, options.height );
+	},
+
+	_position: function() {
+		// Need to show the dialog to get the actual offset in the position plugin
+		var isVisible = this.uiDialog.is(":visible");
+		if ( !isVisible ) {
+			this.uiDialog.show();
+		}
+		this.uiDialog.position( this.options.position );
+		if ( !isVisible ) {
+			this.uiDialog.hide();
+		}
+	},
+
+	_setOptions: function( options ) {
+		var that = this,
+			resize = false,
+			resizableOptions = {};
+
+		$.each( options, function( key, value ) {
+			that._setOption( key, value );
+
+			if ( key in sizeRelatedOptions ) {
+				resize = true;
+			}
+			if ( key in resizableRelatedOptions ) {
+				resizableOptions[ key ] = value;
+			}
+		});
+
+		if ( resize ) {
+			this._size();
+			this._position();
+		}
+		if ( this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", resizableOptions );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		/*jshint maxcomplexity:15*/
+		var isDraggable, isResizable,
+			uiDialog = this.uiDialog;
+
+		if ( key === "dialogClass" ) {
+			uiDialog
+				.removeClass( this.options.dialogClass )
+				.addClass( value );
+		}
+
+		if ( key === "disabled" ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.uiDialog.appendTo( this._appendTo() );
+		}
+
+		if ( key === "buttons" ) {
+			this._createButtons();
+		}
+
+		if ( key === "closeText" ) {
+			this.uiDialogTitlebarClose.button({
+				// Ensure that we always pass a string
+				label: "" + value
+			});
+		}
+
+		if ( key === "draggable" ) {
+			isDraggable = uiDialog.is(":data(ui-draggable)");
+			if ( isDraggable && !value ) {
+				uiDialog.draggable("destroy");
+			}
+
+			if ( !isDraggable && value ) {
+				this._makeDraggable();
+			}
+		}
+
+		if ( key === "position" ) {
+			this._position();
+		}
+
+		if ( key === "resizable" ) {
+			// currently resizable, becoming non-resizable
+			isResizable = uiDialog.is(":data(ui-resizable)");
+			if ( isResizable && !value ) {
+				uiDialog.resizable("destroy");
+			}
+
+			// currently resizable, changing handles
+			if ( isResizable && typeof value === "string" ) {
+				uiDialog.resizable( "option", "handles", value );
+			}
+
+			// currently non-resizable, becoming resizable
+			if ( !isResizable && value !== false ) {
+				this._makeResizable();
+			}
+		}
+
+		if ( key === "title" ) {
+			this._title( this.uiDialogTitlebar.find(".ui-dialog-title") );
+		}
+	},
+
+	_size: function() {
+		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
+		// divs will both have width and height set, so we need to reset them
+		var nonContentHeight, minContentHeight, maxContentHeight,
+			options = this.options;
+
+		// Reset content sizing
+		this.element.show().css({
+			width: "auto",
+			minHeight: 0,
+			maxHeight: "none",
+			height: 0
+		});
+
+		if ( options.minWidth > options.width ) {
+			options.width = options.minWidth;
+		}
+
+		// reset wrapper sizing
+		// determine the height of all the non-content elements
+		nonContentHeight = this.uiDialog.css({
+				height: "auto",
+				width: options.width
+			})
+			.outerHeight();
+		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+		maxContentHeight = typeof options.maxHeight === "number" ?
+			Math.max( 0, options.maxHeight - nonContentHeight ) :
+			"none";
+
+		if ( options.height === "auto" ) {
+			this.element.css({
+				minHeight: minContentHeight,
+				maxHeight: maxContentHeight,
+				height: "auto"
+			});
+		} else {
+			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
+		}
+
+		if (this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
+		}
+	},
+
+	_blockFrames: function() {
+		this.iframeBlocks = this.document.find( "iframe" ).map(function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css({
+					position: "absolute",
+					width: iframe.outerWidth(),
+					height: iframe.outerHeight()
+				})
+				.appendTo( iframe.parent() )
+				.offset( iframe.offset() )[0];
+		});
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_createOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( !$.ui.dialog.overlayInstances ) {
+			// Prevent use of anchors and inputs.
+			// We use a delay in case the overlay is created from an
+			// event that we're going to be cancelling. (#2804)
+			this._delay(function() {
+				// Handle .dialog().dialog("close") (#4065)
+				if ( $.ui.dialog.overlayInstances ) {
+					this.document.bind( "focusin.dialog", function( event ) {
+						if ( !$( event.target ).closest(".ui-dialog").length &&
+								// TODO: Remove hack when datepicker implements
+								// the .ui-front logic (#8989)
+								!$( event.target ).closest(".ui-datepicker").length ) {
+							event.preventDefault();
+							$(".ui-dialog:visible:last .ui-dialog-content")
+								.data("ui-dialog")._focusTabbable();
+						}
+					});
+				}
+			});
+		}
+
+		this.overlay = $("<div>")
+			.addClass("ui-widget-overlay ui-front")
+			.appendTo( this._appendTo() );
+		this._on( this.overlay, {
+			mousedown: "_keepFocus"
+		});
+		$.ui.dialog.overlayInstances++;
+	},
+
+	_destroyOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( this.overlay ) {
+			$.ui.dialog.overlayInstances--;
+
+			if ( !$.ui.dialog.overlayInstances ) {
+				this.document.unbind( "focusin.dialog" );
+			}
+			this.overlay.remove();
+			this.overlay = null;
+		}
+	}
+});
+
+$.ui.dialog.overlayInstances = 0;
+
+// DEPRECATED
+if ( $.uiBackCompat !== false ) {
+	// position option with array notation
+	// just override with old implementation
+	$.widget( "ui.dialog", $.ui.dialog, {
+		_position: function() {
+			var position = this.options.position,
+				myAt = [],
+				offset = [ 0, 0 ],
+				isVisible;
+
+			if ( position ) {
+				if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
+					myAt = position.split ? position.split(" ") : [ position[0], position[1] ];
+					if ( myAt.length === 1 ) {
+						myAt[1] = myAt[0];
+					}
+
+					$.each( [ "left", "top" ], function( i, offsetPosition ) {
+						if ( +myAt[ i ] === myAt[ i ] ) {
+							offset[ i ] = myAt[ i ];
+							myAt[ i ] = offsetPosition;
+						}
+					});
+
+					position = {
+						my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
+							myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
+						at: myAt.join(" ")
+					};
+				}
+
+				position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
+			} else {
+				position = $.ui.dialog.prototype.options.position;
+			}
+
+			// need to show the dialog to get the actual offset in the position plugin
+			isVisible = this.uiDialog.is(":visible");
+			if ( !isVisible ) {
+				this.uiDialog.show();
+			}
+			this.uiDialog.position( position );
+			if ( !isVisible ) {
+				this.uiDialog.hide();
+			}
+		}
+	});
+}
+
+}( jQuery ) );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.draggable.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.draggable.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.draggable.js	(revision 25596)
@@ -0,0 +1,943 @@
+/*!
+ * jQuery UI Draggable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/draggable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+$.widget("ui.draggable", $.ui.mouse, {
+	version: "1.10.1",
+	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,
+
+		// callbacks
+		drag: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
+			this.element[0].style.position = "relative";
+		}
+		if (this.options.addClasses){
+			this.element.addClass("ui-draggable");
+		}
+		if (this.options.disabled){
+			this.element.addClass("ui-draggable-disabled");
+		}
+
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function(event) {
+
+		var o = this.options;
+
+		// among others, prevent a drag on a resizable-handle
+		if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
+			return false;
+		}
+
+		//Quit if we're not on a valid handle
+		this.handle = this._getHandle(event);
+		if (!this.handle) {
+			return false;
+		}
+
+		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
+			$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
+			.css({
+				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
+				position: "absolute", opacity: "0.001", zIndex: 1000
+			})
+			.css($(this).offset())
+			.appendTo("body");
+		});
+
+		return true;
+
+	},
+
+	_mouseStart: function(event) {
+
+		var o = this.options;
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		this.helper.addClass("ui-draggable-dragging");
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		//If ddmanager is used for droppables, set the global draggable
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Store the helper's css position
+		this.cssPosition = this.helper.css("position");
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.positionAbs = this.element.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		//Generate the original position
+		this.originalPosition = this.position = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Set a containment if given in the options
+		if(o.containment) {
+			this._setContainment();
+		}
+
+		//Trigger event + callbacks
+		if(this._trigger("start", event) === false) {
+			this._clear();
+			return false;
+		}
+
+		//Recache the helper size
+		this._cacheHelperProportions();
+
+		//Prepare the droppable offsets
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+
+		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStart(this, event);
+		}
+
+		return true;
+	},
+
+	_mouseDrag: function(event, noPropagation) {
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Call plugins and callbacks and use the resulting position if something is returned
+		if (!noPropagation) {
+			var ui = this._uiHash();
+			if(this._trigger("drag", event, ui) === false) {
+				this._mouseUp({});
+				return false;
+			}
+			this.position = ui.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";
+		}
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		//If we are using droppables, inform the manager about the drop
+		var element,
+			that = this,
+			elementInDom = false,
+			dropped = false;
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			dropped = $.ui.ddmanager.drop(this, event);
+		}
+
+		//if a drop comes from outside (a sortable)
+		if(this.dropped) {
+			dropped = this.dropped;
+			this.dropped = false;
+		}
+
+		//if the original element is no longer in the DOM don't bother to continue (see #8269)
+		element = this.element[0];
+		while ( element && (element = element.parentNode) ) {
+			if (element === document ) {
+				elementInDom = true;
+			}
+		}
+		if ( !elementInDom && this.options.helper === "original" ) {
+			return false;
+		}
+
+		if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
+			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
+				if(that._trigger("stop", event) !== false) {
+					that._clear();
+				}
+			});
+		} else {
+			if(this._trigger("stop", event) !== false) {
+				this._clear();
+			}
+		}
+
+		return false;
+	},
+
+	_mouseUp: function(event) {
+		//Remove frame helpers
+		$("div.ui-draggable-iframeFix").each(function() {
+			this.parentNode.removeChild(this);
+		});
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
+		if( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStop(this, event);
+		}
+
+		return $.ui.mouse.prototype._mouseUp.call(this, event);
+	},
+
+	cancel: function() {
+
+		if(this.helper.is(".ui-draggable-dragging")) {
+			this._mouseUp({});
+		} else {
+			this._clear();
+		}
+
+		return this;
+
+	},
+
+	_getHandle: function(event) {
+
+		var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
+		$(this.options.handle, this.element)
+			.find("*")
+			.addBack()
+			.each(function() {
+				if(this === event.target) {
+					handle = true;
+				}
+			});
+
+		return handle;
+
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
+
+		if(!helper.parents("body").length) {
+			helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
+		}
+
+		if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
+			helper.css("position", "absolute");
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		//This needs to be actually done for all browsers, since pageX/pageY includes this information
+		//Ugly IE fix
+		if((this.offsetParent[0] === document.body) ||
+			(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.element.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.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 over, c, ce,
+			o = this.options;
+
+		if(o.containment === "parent") {
+			o.containment = this.helper[0].parentNode;
+		}
+		if(o.containment === "document" || o.containment === "window") {
+			this.containment = [
+				o.containment === "document" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
+				o.containment === "document" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
+				(o.containment === "document" ? 0 : $(window).scrollLeft()) + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
+				(o.containment === "document" ? 0 : $(window).scrollTop()) + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) {
+			c = $(o.containment);
+			ce = c[0];
+
+			if(!ce) {
+				return;
+			}
+
+			over = ($(ce).css("overflow") !== "hidden");
+
+			this.containment = [
+				(parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
+				(parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
+				(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
+				(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom
+			];
+			this.relative_container = c;
+
+		} else if(o.containment.constructor === Array) {
+			this.containment = o.containment;
+		}
+
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var containment, co, top, left,
+			o = this.options,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
+			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName),
+			pageX = event.pageX,
+			pageY = event.pageY;
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if(this.originalPosition) { //If we are not dragging yet, we won't check for options
+			if(this.containment) {
+			if (this.relative_container){
+				co = this.relative_container.offset();
+				containment = [ this.containment[0] + co.left,
+					this.containment[1] + co.top,
+					this.containment[2] + co.left,
+					this.containment[3] + co.top ];
+			}
+			else {
+				containment = this.containment;
+			}
+
+				if(event.pageX - this.offset.click.left < containment[0]) {
+					pageX = containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < containment[1]) {
+					pageY = containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > containment[2]) {
+					pageX = containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > containment[3]) {
+					pageY = containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
+				top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
+				pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
+				pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																	// The absolute mouse position
+				this.offset.click.top	-												// Click offset (relative to the element)
+				this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
+			),
+			left: (
+				pageX -																	// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
+			)
+		};
+
+	},
+
+	_clear: function() {
+		this.helper.removeClass("ui-draggable-dragging");
+		if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
+			this.helper.remove();
+		}
+		this.helper = null;
+		this.cancelHelperRemoval = false;
+	},
+
+	// From now on bulk stuff - mainly helpers
+
+	_trigger: function(type, event, ui) {
+		ui = ui || this._uiHash();
+		$.ui.plugin.call(this, type, [event, ui]);
+		//The absolute position has to be recalculated after plugins
+		if(type === "drag") {
+			this.positionAbs = this._convertPositionTo("absolute");
+		}
+		return $.Widget.prototype._trigger.call(this, type, event, ui);
+	},
+
+	plugins: {},
+
+	_uiHash: function() {
+		return {
+			helper: this.helper,
+			position: this.position,
+			originalPosition: this.originalPosition,
+			offset: this.positionAbs
+		};
+	}
+
+});
+
+$.ui.plugin.add("draggable", "connectToSortable", {
+	start: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), o = inst.options,
+			uiSortable = $.extend({}, ui, { item: inst.element });
+		inst.sortables = [];
+		$(o.connectToSortable).each(function() {
+			var sortable = $.data(this, "ui-sortable");
+			if (sortable && !sortable.options.disabled) {
+				inst.sortables.push({
+					instance: sortable,
+					shouldRevert: sortable.options.revert
+				});
+				sortable.refreshPositions();	// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
+				sortable._trigger("activate", event, uiSortable);
+			}
+		});
+
+	},
+	stop: function(event, ui) {
+
+		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
+		var inst = $(this).data("ui-draggable"),
+			uiSortable = $.extend({}, ui, { item: inst.element });
+
+		$.each(inst.sortables, function() {
+			if(this.instance.isOver) {
+
+				this.instance.isOver = 0;
+
+				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
+				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
+
+				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
+				if(this.shouldRevert) {
+					this.instance.options.revert = true;
+				}
+
+				//Trigger the stop of the sortable
+				this.instance._mouseStop(event);
+
+				this.instance.options.helper = this.instance.options._helper;
+
+				//If the helper has been the original item, restore properties in the sortable
+				if(inst.options.helper === "original") {
+					this.instance.currentItem.css({ top: "auto", left: "auto" });
+				}
+
+			} else {
+				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
+				this.instance._trigger("deactivate", event, uiSortable);
+			}
+
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), that = this;
+
+		$.each(inst.sortables, function() {
+
+			var innermostIntersecting = false,
+				thisSortable = this;
+
+			//Copy over some variables to allow calling the sortable's native _intersectsWith
+			this.instance.positionAbs = inst.positionAbs;
+			this.instance.helperProportions = inst.helperProportions;
+			this.instance.offset.click = inst.offset.click;
+
+			if(this.instance._intersectsWith(this.instance.containerCache)) {
+				innermostIntersecting = true;
+				$.each(inst.sortables, function () {
+					this.instance.positionAbs = inst.positionAbs;
+					this.instance.helperProportions = inst.helperProportions;
+					this.instance.offset.click = inst.offset.click;
+					if (this !== thisSortable &&
+						this.instance._intersectsWith(this.instance.containerCache) &&
+						$.contains(thisSortable.instance.element[0], this.instance.element[0])
+					) {
+						innermostIntersecting = false;
+					}
+					return innermostIntersecting;
+				});
+			}
+
+
+			if(innermostIntersecting) {
+				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
+				if(!this.instance.isOver) {
+
+					this.instance.isOver = 1;
+					//Now we fake the start of dragging for the sortable instance,
+					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
+					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
+					this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
+					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
+					this.instance.options.helper = function() { return ui.helper[0]; };
+
+					event.target = this.instance.currentItem[0];
+					this.instance._mouseCapture(event, true);
+					this.instance._mouseStart(event, true, true);
+
+					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
+					this.instance.offset.click.top = inst.offset.click.top;
+					this.instance.offset.click.left = inst.offset.click.left;
+					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
+					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
+
+					inst._trigger("toSortable", event);
+					inst.dropped = this.instance.element; //draggable revert needs that
+					//hack so receive/update callbacks work (mostly)
+					inst.currentItem = inst.element;
+					this.instance.fromOutside = inst;
+
+				}
+
+				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
+				if(this.instance.currentItem) {
+					this.instance._mouseDrag(event);
+				}
+
+			} else {
+
+				//If it doesn't intersect with the sortable, and it intersected before,
+				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
+				if(this.instance.isOver) {
+
+					this.instance.isOver = 0;
+					this.instance.cancelHelperRemoval = true;
+
+					//Prevent reverting on this forced stop
+					this.instance.options.revert = false;
+
+					// The out event needs to be triggered independently
+					this.instance._trigger("out", event, this.instance._uiHash(this.instance));
+
+					this.instance._mouseStop(event, true);
+					this.instance.options.helper = this.instance.options._helper;
+
+					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
+					this.instance.currentItem.remove();
+					if(this.instance.placeholder) {
+						this.instance.placeholder.remove();
+					}
+
+					inst._trigger("fromSortable", event);
+					inst.dropped = false; //draggable revert needs that
+				}
+
+			}
+
+		});
+
+	}
+});
+
+$.ui.plugin.add("draggable", "cursor", {
+	start: function() {
+		var t = $("body"), o = $(this).data("ui-draggable").options;
+		if (t.css("cursor")) {
+			o._cursor = t.css("cursor");
+		}
+		t.css("cursor", o.cursor);
+	},
+	stop: function() {
+		var o = $(this).data("ui-draggable").options;
+		if (o._cursor) {
+			$("body").css("cursor", o._cursor);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "opacity", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("opacity")) {
+			o._opacity = t.css("opacity");
+		}
+		t.css("opacity", o.opacity);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._opacity) {
+			$(ui.helper).css("opacity", o._opacity);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "scroll", {
+	start: function() {
+		var i = $(this).data("ui-draggable");
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+			i.overflowOffset = i.scrollParent.offset();
+		}
+	},
+	drag: function( event ) {
+
+		var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
+
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+
+			if(!o.axis || o.axis !== "x") {
+				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+			}
+
+		} else {
+
+			if(!o.axis || o.axis !== "x") {
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+			}
+
+		}
+
+		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(i, event);
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "snap", {
+	start: function() {
+
+		var i = $(this).data("ui-draggable"),
+			o = i.options;
+
+		i.snapElements = [];
+
+		$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
+			var $t = $(this),
+				$o = $t.offset();
+			if(this !== i.element[0]) {
+				i.snapElements.push({
+					item: this,
+					width: $t.outerWidth(), height: $t.outerHeight(),
+					top: $o.top, left: $o.left
+				});
+			}
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var ts, bs, ls, rs, l, r, t, b, i, first,
+			inst = $(this).data("ui-draggable"),
+			o = inst.options,
+			d = o.snapTolerance,
+			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
+			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
+
+		for (i = inst.snapElements.length - 1; i >= 0; i--){
+
+			l = inst.snapElements[i].left;
+			r = l + inst.snapElements[i].width;
+			t = inst.snapElements[i].top;
+			b = t + inst.snapElements[i].height;
+
+			//Yes, I know, this is insane ;)
+			if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
+				if(inst.snapElements[i].snapping) {
+					(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+				}
+				inst.snapElements[i].snapping = false;
+				continue;
+			}
+
+			if(o.snapMode !== "inner") {
+				ts = Math.abs(t - y2) <= d;
+				bs = Math.abs(b - y1) <= d;
+				ls = Math.abs(l - x2) <= d;
+				rs = Math.abs(r - x1) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
+				}
+			}
+
+			first = (ts || bs || ls || rs);
+
+			if(o.snapMode !== "outer") {
+				ts = Math.abs(t - y1) <= d;
+				bs = Math.abs(b - y2) <= d;
+				ls = Math.abs(l - x1) <= d;
+				rs = Math.abs(r - x2) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
+				}
+			}
+
+			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
+				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+			}
+			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
+
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "stack", {
+	start: function() {
+		var min,
+			o = this.data("ui-draggable").options,
+			group = $.makeArray($(o.stack)).sort(function(a,b) {
+				return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
+			});
+
+		if (!group.length) { return; }
+
+		min = parseInt($(group[0]).css("zIndex"), 10) || 0;
+		$(group).each(function(i) {
+			$(this).css("zIndex", min + i);
+		});
+		this.css("zIndex", (min + group.length));
+	}
+});
+
+$.ui.plugin.add("draggable", "zIndex", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("zIndex")) {
+			o._zIndex = t.css("zIndex");
+		}
+		t.css("zIndex", o.zIndex);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._zIndex) {
+			$(ui.helper).css("zIndex", o._zIndex);
+		}
+	}
+});
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.droppable.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.droppable.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.droppable.js	(revision 25596)
@@ -0,0 +1,371 @@
+/*!
+ * jQuery UI Droppable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/droppable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.draggable.js
+ */
+(function( $, undefined ) {
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+$.widget("ui.droppable", {
+	version: "1.10.1",
+	widgetEventPrefix: "drop",
+	options: {
+		accept: "*",
+		activeClass: false,
+		addClasses: true,
+		greedy: false,
+		hoverClass: false,
+		scope: "default",
+		tolerance: "intersect",
+
+		// callbacks
+		activate: null,
+		deactivate: null,
+		drop: null,
+		out: null,
+		over: null
+	},
+	_create: function() {
+
+		var o = this.options,
+			accept = o.accept;
+
+		this.isover = false;
+		this.isout = true;
+
+		this.accept = $.isFunction(accept) ? accept : function(d) {
+			return d.is(accept);
+		};
+
+		//Store the droppable's proportions
+		this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
+
+		// Add the reference and positions to the manager
+		$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
+		$.ui.ddmanager.droppables[o.scope].push(this);
+
+		(o.addClasses && this.element.addClass("ui-droppable"));
+
+	},
+
+	_destroy: function() {
+		var i = 0,
+			drop = $.ui.ddmanager.droppables[this.options.scope];
+
+		for ( ; i < drop.length; i++ ) {
+			if ( drop[i] === this ) {
+				drop.splice(i, 1);
+			}
+		}
+
+		this.element.removeClass("ui-droppable ui-droppable-disabled");
+	},
+
+	_setOption: function(key, value) {
+
+		if(key === "accept") {
+			this.accept = $.isFunction(value) ? value : function(d) {
+				return d.is(value);
+			};
+		}
+		$.Widget.prototype._setOption.apply(this, arguments);
+	},
+
+	_activate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.addClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("activate", event, this.ui(draggable));
+		}
+	},
+
+	_deactivate: function(event) {
+		var draggable = $.ui.ddmanager.current;
+		if(this.options.activeClass) {
+			this.element.removeClass(this.options.activeClass);
+		}
+		if(draggable){
+			this._trigger("deactivate", event, this.ui(draggable));
+		}
+	},
+
+	_over: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.addClass(this.options.hoverClass);
+			}
+			this._trigger("over", event, this.ui(draggable));
+		}
+
+	},
+
+	_out: function(event) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return;
+		}
+
+		if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("out", event, this.ui(draggable));
+		}
+
+	},
+
+	_drop: function(event,custom) {
+
+		var draggable = custom || $.ui.ddmanager.current,
+			childrenIntersection = false;
+
+		// Bail if draggable and droppable are same element
+		if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+			return false;
+		}
+
+		this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
+			var inst = $.data(this, "ui-droppable");
+			if(
+				inst.options.greedy &&
+				!inst.options.disabled &&
+				inst.options.scope === draggable.options.scope &&
+				inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&
+				$.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+			) { childrenIntersection = true; return false; }
+		});
+		if(childrenIntersection) {
+			return false;
+		}
+
+		if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+			if(this.options.activeClass) {
+				this.element.removeClass(this.options.activeClass);
+			}
+			if(this.options.hoverClass) {
+				this.element.removeClass(this.options.hoverClass);
+			}
+			this._trigger("drop", event, this.ui(draggable));
+			return this.element;
+		}
+
+		return false;
+
+	},
+
+	ui: function(c) {
+		return {
+			draggable: (c.currentItem || c.element),
+			helper: c.helper,
+			position: c.position,
+			offset: c.positionAbs
+		};
+	}
+
+});
+
+$.ui.intersect = function(draggable, droppable, toleranceMode) {
+
+	if (!droppable.offset) {
+		return false;
+	}
+
+	var draggableLeft, draggableTop,
+		x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
+		y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height,
+		l = droppable.offset.left, r = l + droppable.proportions.width,
+		t = droppable.offset.top, b = t + droppable.proportions.height;
+
+	switch (toleranceMode) {
+		case "fit":
+			return (l <= x1 && x2 <= r && t <= y1 && y2 <= b);
+		case "intersect":
+			return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
+				x2 - (draggable.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
+				y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
+		case "pointer":
+			draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left);
+			draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top);
+			return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width );
+		case "touch":
+			return (
+				(y1 >= t && y1 <= b) ||	// Top edge touching
+				(y2 >= t && y2 <= b) ||	// Bottom edge touching
+				(y1 < t && y2 > b)		// Surrounded vertically
+			) && (
+				(x1 >= l && x1 <= r) ||	// Left edge touching
+				(x2 >= l && x2 <= r) ||	// Right edge touching
+				(x1 < l && x2 > r)		// Surrounded horizontally
+			);
+		default:
+			return false;
+		}
+
+};
+
+/*
+	This manager tracks offsets of draggables and droppables
+*/
+$.ui.ddmanager = {
+	current: null,
+	droppables: { "default": [] },
+	prepareOffsets: function(t, event) {
+
+		var i, j,
+			m = $.ui.ddmanager.droppables[t.options.scope] || [],
+			type = event ? event.type : null, // workaround for #2317
+			list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
+
+		droppablesLoop: for (i = 0; i < m.length; i++) {
+
+			//No disabled and non-accepted
+			if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) {
+				continue;
+			}
+
+			// Filter out elements in the current dragged item
+			for (j=0; j < list.length; j++) {
+				if(list[j] === m[i].element[0]) {
+					m[i].proportions.height = 0;
+					continue droppablesLoop;
+				}
+			}
+
+			m[i].visible = m[i].element.css("display") !== "none";
+			if(!m[i].visible) {
+				continue;
+			}
+
+			//Activate the droppable if used directly from draggables
+			if(type === "mousedown") {
+				m[i]._activate.call(m[i], event);
+			}
+
+			m[i].offset = m[i].element.offset();
+			m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
+
+		}
+
+	},
+	drop: function(draggable, event) {
+
+		var dropped = false;
+		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
+
+			if(!this.options) {
+				return;
+			}
+			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {
+				dropped = this._drop.call(this, event) || dropped;
+			}
+
+			if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
+				this.isout = true;
+				this.isover = false;
+				this._deactivate.call(this, event);
+			}
+
+		});
+		return dropped;
+
+	},
+	dragStart: function( draggable, event ) {
+		//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
+		draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
+			if( !draggable.options.refreshPositions ) {
+				$.ui.ddmanager.prepareOffsets( draggable, event );
+			}
+		});
+	},
+	drag: function(draggable, event) {
+
+		//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
+		if(draggable.options.refreshPositions) {
+			$.ui.ddmanager.prepareOffsets(draggable, event);
+		}
+
+		//Run through all droppables and check their positions based on specific tolerance options
+		$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
+
+			if(this.options.disabled || this.greedyChild || !this.visible) {
+				return;
+			}
+
+			var parentInstance, scope, parent,
+				intersects = $.ui.intersect(draggable, this, this.options.tolerance),
+				c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null);
+			if(!c) {
+				return;
+			}
+
+			if (this.options.greedy) {
+				// find droppable parents with same scope
+				scope = this.options.scope;
+				parent = this.element.parents(":data(ui-droppable)").filter(function () {
+					return $.data(this, "ui-droppable").options.scope === scope;
+				});
+
+				if (parent.length) {
+					parentInstance = $.data(parent[0], "ui-droppable");
+					parentInstance.greedyChild = (c === "isover");
+				}
+			}
+
+			// we just moved into a greedy child
+			if (parentInstance && c === "isover") {
+				parentInstance.isover = false;
+				parentInstance.isout = true;
+				parentInstance._out.call(parentInstance, event);
+			}
+
+			this[c] = true;
+			this[c === "isout" ? "isover" : "isout"] = false;
+			this[c === "isover" ? "_over" : "_out"].call(this, event);
+
+			// we just moved out of a greedy child
+			if (parentInstance && c === "isout") {
+				parentInstance.isout = false;
+				parentInstance.isover = true;
+				parentInstance._over.call(parentInstance, event);
+			}
+		});
+
+	},
+	dragStop: function( draggable, event ) {
+		draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
+		//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
+		if( !draggable.options.refreshPositions ) {
+			$.ui.ddmanager.prepareOffsets( draggable, event );
+		}
+	}
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-blind.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-blind.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-blind.js	(revision 25596)
@@ -0,0 +1,82 @@
+/*!
+ * jQuery UI Effects Blind 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/blind-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+var rvertical = /up|down|vertical/,
+	rpositivemotion = /up|left|vertical|horizontal/;
+
+$.effects.effect.blind = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		direction = o.direction || "up",
+		vertical = rvertical.test( direction ),
+		ref = vertical ? "height" : "width",
+		ref2 = vertical ? "top" : "left",
+		motion = rpositivemotion.test( direction ),
+		animation = {},
+		show = mode === "show",
+		wrapper, distance, margin;
+
+	// if already wrapped, the wrapper's properties are my property. #6245
+	if ( el.parent().is( ".ui-effects-wrapper" ) ) {
+		$.effects.save( el.parent(), props );
+	} else {
+		$.effects.save( el, props );
+	}
+	el.show();
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	distance = wrapper[ ref ]();
+	margin = parseFloat( wrapper.css( ref2 ) ) || 0;
+
+	animation[ ref ] = show ? distance : 0;
+	if ( !motion ) {
+		el
+			.css( vertical ? "bottom" : "right", 0 )
+			.css( vertical ? "top" : "left", "auto" )
+			.css({ position: "absolute" });
+
+		animation[ ref2 ] = show ? margin : distance + margin;
+	}
+
+	// start at 0 if we are showing
+	if ( show ) {
+		wrapper.css( ref, 0 );
+		if ( ! motion ) {
+			wrapper.css( ref2, margin + distance );
+		}
+	}
+
+	// Animate
+	wrapper.animate( animation, {
+		duration: o.duration,
+		easing: o.easing,
+		queue: false,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-bounce.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-bounce.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-bounce.js	(revision 25596)
@@ -0,0 +1,113 @@
+/*!
+ * jQuery UI Effects Bounce 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/bounce-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.bounce = function( o, done ) {
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+
+		// defaults:
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		hide = mode === "hide",
+		show = mode === "show",
+		direction = o.direction || "up",
+		distance = o.distance,
+		times = o.times || 5,
+
+		// number of internal animations
+		anims = times * 2 + ( show || hide ? 1 : 0 ),
+		speed = o.duration / anims,
+		easing = o.easing,
+
+		// utility:
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ),
+		i,
+		upAnim,
+		downAnim,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	// Avoid touching opacity to prevent clearType and PNG issues in IE
+	if ( show || hide ) {
+		props.push( "opacity" );
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el ); // Create Wrapper
+
+	// default distance for the BIGGEST bounce is the outer Distance / 3
+	if ( !distance ) {
+		distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
+	}
+
+	if ( show ) {
+		downAnim = { opacity: 1 };
+		downAnim[ ref ] = 0;
+
+		// if we are showing, force opacity 0 and set the initial position
+		// then do the "first" animation
+		el.css( "opacity", 0 )
+			.css( ref, motion ? -distance * 2 : distance * 2 )
+			.animate( downAnim, speed, easing );
+	}
+
+	// start at the smallest distance if we are hiding
+	if ( hide ) {
+		distance = distance / Math.pow( 2, times - 1 );
+	}
+
+	downAnim = {};
+	downAnim[ ref ] = 0;
+	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
+	for ( i = 0; i < times; i++ ) {
+		upAnim = {};
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing )
+			.animate( downAnim, speed, easing );
+
+		distance = hide ? distance * 2 : distance / 2;
+	}
+
+	// Last Bounce when Hiding
+	if ( hide ) {
+		upAnim = { opacity: 0 };
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		el.animate( upAnim, speed, easing );
+	}
+
+	el.queue(function() {
+		if ( hide ) {
+			el.hide();
+		}
+		$.effects.restore( el, props );
+		$.effects.removeWrapper( el );
+		done();
+	});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-clip.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-clip.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-clip.js	(revision 25596)
@@ -0,0 +1,67 @@
+/*!
+ * jQuery UI Effects Clip 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/clip-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.clip = function( o, done ) {
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "vertical",
+		vert = direction === "vertical",
+		size = vert ? "height" : "width",
+		position = vert ? "top" : "left",
+		animation = {},
+		wrapper, animate, distance;
+
+	// Save & Show
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
+	distance = animate[ size ]();
+
+	// Shift
+	if ( show ) {
+		animate.css( size, 0 );
+		animate.css( position, distance / 2 );
+	}
+
+	// Create Animation Object:
+	animation[ size ] = show ? distance : 0;
+	animation[ position ] = show ? 0 : distance / 2;
+
+	// Animate
+	animate.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( !show ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-drop.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-drop.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-drop.js	(revision 25596)
@@ -0,0 +1,65 @@
+/*!
+ * jQuery UI Effects Drop 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/drop-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.drop = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
+		animation = {
+			opacity: show ? 1 : 0
+		},
+		distance;
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2;
+
+	if ( show ) {
+		el
+			.css( "opacity", 0 )
+			.css( ref, motion === "pos" ? -distance : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( motion === "pos" ? "+=" : "-=" ) :
+		( motion === "pos" ? "-=" : "+=" ) ) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-explode.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-explode.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-explode.js	(revision 25596)
@@ -0,0 +1,97 @@
+/*!
+ * jQuery UI Effects Explode 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/explode-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.explode = function( o, done ) {
+
+	var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
+		cells = rows,
+		el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+
+		// show and then visibility:hidden the element before calculating offset
+		offset = el.show().css( "visibility", "hidden" ).offset(),
+
+		// width and height of a piece
+		width = Math.ceil( el.outerWidth() / cells ),
+		height = Math.ceil( el.outerHeight() / rows ),
+		pieces = [],
+
+		// loop
+		i, j, left, top, mx, my;
+
+	// children animate complete:
+	function childComplete() {
+		pieces.push( this );
+		if ( pieces.length === rows * cells ) {
+			animComplete();
+		}
+	}
+
+	// clone the element for each row and cell.
+	for( i = 0; i < rows ; i++ ) { // ===>
+		top = offset.top + i * height;
+		my = i - ( rows - 1 ) / 2 ;
+
+		for( j = 0; j < cells ; j++ ) { // |||
+			left = offset.left + j * width;
+			mx = j - ( cells - 1 ) / 2 ;
+
+			// Create a clone of the now hidden main element that will be absolute positioned
+			// within a wrapper div off the -left and -top equal to size of our pieces
+			el
+				.clone()
+				.appendTo( "body" )
+				.wrap( "<div></div>" )
+				.css({
+					position: "absolute",
+					visibility: "visible",
+					left: -j * width,
+					top: -i * height
+				})
+
+			// select the wrapper - make it overflow: hidden and absolute positioned based on
+			// where the original was located +left and +top equal to the size of pieces
+				.parent()
+				.addClass( "ui-effects-explode" )
+				.css({
+					position: "absolute",
+					overflow: "hidden",
+					width: width,
+					height: height,
+					left: left + ( show ? mx * width : 0 ),
+					top: top + ( show ? my * height : 0 ),
+					opacity: show ? 0 : 1
+				}).animate({
+					left: left + ( show ? 0 : mx * width ),
+					top: top + ( show ? 0 : my * height ),
+					opacity: show ? 1 : 0
+				}, o.duration || 500, o.easing, childComplete );
+		}
+	}
+
+	function animComplete() {
+		el.css({
+			visibility: "visible"
+		});
+		$( pieces ).remove();
+		if ( !show ) {
+			el.hide();
+		}
+		done();
+	}
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fade.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fade.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fade.js	(revision 25596)
@@ -0,0 +1,30 @@
+/*!
+ * jQuery UI Effects Fade 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/fade-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.fade = function( o, done ) {
+	var el = $( this ),
+		mode = $.effects.setMode( el, o.mode || "toggle" );
+
+	el.animate({
+		opacity: mode
+	}, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: done
+	});
+};
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fold.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fold.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-fold.js	(revision 25596)
@@ -0,0 +1,76 @@
+/*!
+ * jQuery UI Effects Fold 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/fold-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.fold = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "hide" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		size = o.size || 15,
+		percent = /([0-9]+)%/.exec( size ),
+		horizFirst = !!o.horizFirst,
+		widthFirst = show !== horizFirst,
+		ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
+		duration = o.duration / 2,
+		wrapper, distance,
+		animation1 = {},
+		animation2 = {};
+
+	$.effects.save( el, props );
+	el.show();
+
+	// Create Wrapper
+	wrapper = $.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+	distance = widthFirst ?
+		[ wrapper.width(), wrapper.height() ] :
+		[ wrapper.height(), wrapper.width() ];
+
+	if ( percent ) {
+		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
+	}
+	if ( show ) {
+		wrapper.css( horizFirst ? {
+			height: 0,
+			width: size
+		} : {
+			height: size,
+			width: 0
+		});
+	}
+
+	// Animation
+	animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
+	animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
+
+	// Animate
+	wrapper
+		.animate( animation1, duration, o.easing )
+		.animate( animation2, duration, o.easing, function() {
+			if ( hide ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-highlight.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-highlight.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-highlight.js	(revision 25596)
@@ -0,0 +1,50 @@
+/*!
+ * jQuery UI Effects Highlight 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/highlight-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.highlight = function( o, done ) {
+	var elem = $( this ),
+		props = [ "backgroundImage", "backgroundColor", "opacity" ],
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		animation = {
+			backgroundColor: elem.css( "backgroundColor" )
+		};
+
+	if (mode === "hide") {
+		animation.opacity = 0;
+	}
+
+	$.effects.save( elem, props );
+
+	elem
+		.show()
+		.css({
+			backgroundImage: "none",
+			backgroundColor: o.color || "#ffff99"
+		})
+		.animate( animation, {
+			queue: false,
+			duration: o.duration,
+			easing: o.easing,
+			complete: function() {
+				if ( mode === "hide" ) {
+					elem.hide();
+				}
+				$.effects.restore( elem, props );
+				done();
+			}
+		});
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-pulsate.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-pulsate.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-pulsate.js	(revision 25596)
@@ -0,0 +1,63 @@
+/*!
+ * jQuery UI Effects Pulsate 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/pulsate-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.pulsate = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "show" ),
+		show = mode === "show",
+		hide = mode === "hide",
+		showhide = ( show || mode === "hide" ),
+
+		// showing or hiding leaves of the "last" animation
+		anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
+		duration = o.duration / anims,
+		animateTo = 0,
+		queue = elem.queue(),
+		queuelen = queue.length,
+		i;
+
+	if ( show || !elem.is(":visible")) {
+		elem.css( "opacity", 0 ).show();
+		animateTo = 1;
+	}
+
+	// anims - 1 opacity "toggles"
+	for ( i = 1; i < anims; i++ ) {
+		elem.animate({
+			opacity: animateTo
+		}, duration, o.easing );
+		animateTo = 1 - animateTo;
+	}
+
+	elem.animate({
+		opacity: animateTo
+	}, duration, o.easing);
+
+	elem.queue(function() {
+		if ( hide ) {
+			elem.hide();
+		}
+		done();
+	});
+
+	// We just queued up "anims" animations, we need to put them next in the queue
+	if ( queuelen > 1 ) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	elem.dequeue();
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-scale.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-scale.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-scale.js	(revision 25596)
@@ -0,0 +1,318 @@
+/*!
+ * jQuery UI Effects Scale 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/scale-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.puff = function( o, done ) {
+	var elem = $( this ),
+		mode = $.effects.setMode( elem, o.mode || "hide" ),
+		hide = mode === "hide",
+		percent = parseInt( o.percent, 10 ) || 150,
+		factor = percent / 100,
+		original = {
+			height: elem.height(),
+			width: elem.width(),
+			outerHeight: elem.outerHeight(),
+			outerWidth: elem.outerWidth()
+		};
+
+	$.extend( o, {
+		effect: "scale",
+		queue: false,
+		fade: true,
+		mode: mode,
+		complete: done,
+		percent: hide ? percent : 100,
+		from: hide ?
+			original :
+			{
+				height: original.height * factor,
+				width: original.width * factor,
+				outerHeight: original.outerHeight * factor,
+				outerWidth: original.outerWidth * factor
+			}
+	});
+
+	elem.effect( o );
+};
+
+$.effects.effect.scale = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		options = $.extend( true, {}, o ),
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		percent = parseInt( o.percent, 10 ) ||
+			( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
+		direction = o.direction || "both",
+		origin = o.origin,
+		original = {
+			height: el.height(),
+			width: el.width(),
+			outerHeight: el.outerHeight(),
+			outerWidth: el.outerWidth()
+		},
+		factor = {
+			y: direction !== "horizontal" ? (percent / 100) : 1,
+			x: direction !== "vertical" ? (percent / 100) : 1
+		};
+
+	// We are going to pass this effect to the size effect:
+	options.effect = "size";
+	options.queue = false;
+	options.complete = done;
+
+	// Set default origin and restore for show/hide
+	if ( mode !== "effect" ) {
+		options.origin = origin || ["middle","center"];
+		options.restore = true;
+	}
+
+	options.from = o.from || ( mode === "show" ? {
+		height: 0,
+		width: 0,
+		outerHeight: 0,
+		outerWidth: 0
+	} : original );
+	options.to = {
+		height: original.height * factor.y,
+		width: original.width * factor.x,
+		outerHeight: original.outerHeight * factor.y,
+		outerWidth: original.outerWidth * factor.x
+	};
+
+	// Fade option to support puff
+	if ( options.fade ) {
+		if ( mode === "show" ) {
+			options.from.opacity = 0;
+			options.to.opacity = 1;
+		}
+		if ( mode === "hide" ) {
+			options.from.opacity = 1;
+			options.to.opacity = 0;
+		}
+	}
+
+	// Animate
+	el.effect( options );
+
+};
+
+$.effects.effect.size = function( o, done ) {
+
+	// Create element
+	var original, baseline, factor,
+		el = $( this ),
+		props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
+
+		// Always restore
+		props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
+
+		// Copy for children
+		props2 = [ "width", "height", "overflow" ],
+		cProps = [ "fontSize" ],
+		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
+		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
+
+		// Set options
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		restore = o.restore || mode !== "effect",
+		scale = o.scale || "both",
+		origin = o.origin || [ "middle", "center" ],
+		position = el.css( "position" ),
+		props = restore ? props0 : props1,
+		zero = {
+			height: 0,
+			width: 0,
+			outerHeight: 0,
+			outerWidth: 0
+		};
+
+	if ( mode === "show" ) {
+		el.show();
+	}
+	original = {
+		height: el.height(),
+		width: el.width(),
+		outerHeight: el.outerHeight(),
+		outerWidth: el.outerWidth()
+	};
+
+	if ( o.mode === "toggle" && mode === "show" ) {
+		el.from = o.to || zero;
+		el.to = o.from || original;
+	} else {
+		el.from = o.from || ( mode === "show" ? zero : original );
+		el.to = o.to || ( mode === "hide" ? zero : original );
+	}
+
+	// Set scaling factor
+	factor = {
+		from: {
+			y: el.from.height / original.height,
+			x: el.from.width / original.width
+		},
+		to: {
+			y: el.to.height / original.height,
+			x: el.to.width / original.width
+		}
+	};
+
+	// Scale the css box
+	if ( scale === "box" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( vProps );
+			el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
+		}
+
+		// Horizontal props scaling
+		if ( factor.from.x !== factor.to.x ) {
+			props = props.concat( hProps );
+			el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
+			el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
+		}
+	}
+
+	// Scale the content
+	if ( scale === "content" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			props = props.concat( cProps ).concat( props2 );
+			el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
+			el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
+		}
+	}
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+	el.css( "overflow", "hidden" ).css( el.from );
+
+	// Adjust
+	if (origin) { // Calculate baseline shifts
+		baseline = $.effects.getBaseline( origin, original );
+		el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
+		el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
+		el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
+		el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
+	}
+	el.css( el.from ); // set top & left
+
+	// Animate
+	if ( scale === "content" || scale === "both" ) { // Scale the children
+
+		// Add margins/font-size
+		vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
+		hProps = hProps.concat([ "marginLeft", "marginRight" ]);
+		props2 = props0.concat(vProps).concat(hProps);
+
+		el.find( "*[width]" ).each( function(){
+			var child = $( this ),
+				c_original = {
+					height: child.height(),
+					width: child.width(),
+					outerHeight: child.outerHeight(),
+					outerWidth: child.outerWidth()
+				};
+			if (restore) {
+				$.effects.save(child, props2);
+			}
+
+			child.from = {
+				height: c_original.height * factor.from.y,
+				width: c_original.width * factor.from.x,
+				outerHeight: c_original.outerHeight * factor.from.y,
+				outerWidth: c_original.outerWidth * factor.from.x
+			};
+			child.to = {
+				height: c_original.height * factor.to.y,
+				width: c_original.width * factor.to.x,
+				outerHeight: c_original.height * factor.to.y,
+				outerWidth: c_original.width * factor.to.x
+			};
+
+			// Vertical props scaling
+			if ( factor.from.y !== factor.to.y ) {
+				child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
+				child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
+			}
+
+			// Horizontal props scaling
+			if ( factor.from.x !== factor.to.x ) {
+				child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
+				child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
+			}
+
+			// Animate children
+			child.css( child.from );
+			child.animate( child.to, o.duration, o.easing, function() {
+
+				// Restore children
+				if ( restore ) {
+					$.effects.restore( child, props2 );
+				}
+			});
+		});
+	}
+
+	// Animate
+	el.animate( el.to, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( el.to.opacity === 0 ) {
+				el.css( "opacity", el.from.opacity );
+			}
+			if( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			if ( !restore ) {
+
+				// we need to calculate our new positioning based on the scaling
+				if ( position === "static" ) {
+					el.css({
+						position: "relative",
+						top: el.to.top,
+						left: el.to.left
+					});
+				} else {
+					$.each([ "top", "left" ], function( idx, pos ) {
+						el.css( pos, function( _, str ) {
+							var val = parseInt( str, 10 ),
+								toRef = idx ? el.to.left : el.to.top;
+
+							// if original was "auto", recalculate the new value from wrapper
+							if ( str === "auto" ) {
+								return toRef + "px";
+							}
+
+							return val + toRef + "px";
+						});
+					});
+				}
+			}
+
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-shake.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-shake.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-shake.js	(revision 25596)
@@ -0,0 +1,74 @@
+/*!
+ * jQuery UI Effects Shake 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/shake-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.shake = function( o, done ) {
+
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
+		mode = $.effects.setMode( el, o.mode || "effect" ),
+		direction = o.direction || "left",
+		distance = o.distance || 20,
+		times = o.times || 3,
+		anims = times * 2 + 1,
+		speed = Math.round(o.duration/anims),
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		animation = {},
+		animation1 = {},
+		animation2 = {},
+		i,
+
+		// we will need to re-assemble the queue to stack our animations in place
+		queue = el.queue(),
+		queuelen = queue.length;
+
+	$.effects.save( el, props );
+	el.show();
+	$.effects.createWrapper( el );
+
+	// Animation
+	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
+	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
+	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
+
+	// Animate
+	el.animate( animation, speed, o.easing );
+
+	// Shakes
+	for ( i = 1; i < times; i++ ) {
+		el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
+	}
+	el
+		.animate( animation1, speed, o.easing )
+		.animate( animation, speed / 2, o.easing )
+		.queue(function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		});
+
+	// inject all the animations we just queued to be first in line (after "inprogress")
+	if ( queuelen > 1) {
+		queue.splice.apply( queue,
+			[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
+	}
+	el.dequeue();
+
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-slide.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-slide.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-slide.js	(revision 25596)
@@ -0,0 +1,64 @@
+/*!
+ * jQuery UI Effects Slide 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/slide-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.slide = function( o, done ) {
+
+	// Create element
+	var el = $( this ),
+		props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
+		mode = $.effects.setMode( el, o.mode || "show" ),
+		show = mode === "show",
+		direction = o.direction || "left",
+		ref = (direction === "up" || direction === "down") ? "top" : "left",
+		positiveMotion = (direction === "up" || direction === "left"),
+		distance,
+		animation = {};
+
+	// Adjust
+	$.effects.save( el, props );
+	el.show();
+	distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
+
+	$.effects.createWrapper( el ).css({
+		overflow: "hidden"
+	});
+
+	if ( show ) {
+		el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
+	}
+
+	// Animation
+	animation[ ref ] = ( show ?
+		( positiveMotion ? "+=" : "-=") :
+		( positiveMotion ? "-=" : "+=")) +
+		distance;
+
+	// Animate
+	el.animate( animation, {
+		queue: false,
+		duration: o.duration,
+		easing: o.easing,
+		complete: function() {
+			if ( mode === "hide" ) {
+				el.hide();
+			}
+			$.effects.restore( el, props );
+			$.effects.removeWrapper( el );
+			done();
+		}
+	});
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-transfer.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-transfer.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect-transfer.js	(revision 25596)
@@ -0,0 +1,47 @@
+/*!
+ * jQuery UI Effects Transfer 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/transfer-effect/
+ *
+ * Depends:
+ *	jquery.ui.effect.js
+ */
+(function( $, undefined ) {
+
+$.effects.effect.transfer = function( o, done ) {
+	var elem = $( this ),
+		target = $( o.to ),
+		targetFixed = target.css( "position" ) === "fixed",
+		body = $("body"),
+		fixTop = targetFixed ? body.scrollTop() : 0,
+		fixLeft = targetFixed ? body.scrollLeft() : 0,
+		endPosition = target.offset(),
+		animation = {
+			top: endPosition.top - fixTop ,
+			left: endPosition.left - fixLeft ,
+			height: target.innerHeight(),
+			width: target.innerWidth()
+		},
+		startPosition = elem.offset(),
+		transfer = $( "<div class='ui-effects-transfer'></div>" )
+			.appendTo( document.body )
+			.addClass( o.className )
+			.css({
+				top: startPosition.top - fixTop ,
+				left: startPosition.left - fixLeft ,
+				height: elem.innerHeight(),
+				width: elem.innerWidth(),
+				position: targetFixed ? "fixed" : "absolute"
+			})
+			.animate( animation, o.duration, o.easing, function() {
+				transfer.remove();
+				done();
+			});
+};
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.effect.js	(revision 25596)
@@ -0,0 +1,1268 @@
+/*!
+ * jQuery UI Effects 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/effects-core/
+ */
+;(jQuery.effects || (function($, undefined) {
+
+var dataSpace = "ui-effects-";
+
+$.effects = {
+	effect: {}
+};
+
+/*!
+ * jQuery Color Animations v2.1.2
+ * https://github.com/jquery/jquery-color
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * Date: Wed Jan 16 08:47:09 2013 -0600
+ */
+(function( jQuery, undefined ) {
+
+	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
+
+	// plusequals test for += 100 -= 100
+	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
+	// a set of RE's that can match strings and generate color tuples.
+	stringParsers = [{
+			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ],
+					execResult[ 3 ],
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ] * 2.55,
+					execResult[ 2 ] * 2.55,
+					execResult[ 3 ] * 2.55,
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			// this regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			space: "hsla",
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ] / 100,
+					execResult[ 3 ] / 100,
+					execResult[ 4 ]
+				];
+			}
+		}],
+
+	// jQuery.Color( )
+	color = jQuery.Color = function( color, green, blue, alpha ) {
+		return new jQuery.Color.fn.parse( color, green, blue, alpha );
+	},
+	spaces = {
+		rgba: {
+			props: {
+				red: {
+					idx: 0,
+					type: "byte"
+				},
+				green: {
+					idx: 1,
+					type: "byte"
+				},
+				blue: {
+					idx: 2,
+					type: "byte"
+				}
+			}
+		},
+
+		hsla: {
+			props: {
+				hue: {
+					idx: 0,
+					type: "degrees"
+				},
+				saturation: {
+					idx: 1,
+					type: "percent"
+				},
+				lightness: {
+					idx: 2,
+					type: "percent"
+				}
+			}
+		}
+	},
+	propTypes = {
+		"byte": {
+			floor: true,
+			max: 255
+		},
+		"percent": {
+			max: 1
+		},
+		"degrees": {
+			mod: 360,
+			floor: true
+		}
+	},
+	support = color.support = {},
+
+	// element for support tests
+	supportElem = jQuery( "<p>" )[ 0 ],
+
+	// colors = jQuery.Color.names
+	colors,
+
+	// local aliases of functions called often
+	each = jQuery.each;
+
+// determine rgba support immediately
+supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
+support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
+
+// define cache name and alpha properties
+// for rgba and hsla spaces
+each( spaces, function( spaceName, space ) {
+	space.cache = "_" + spaceName;
+	space.props.alpha = {
+		idx: 3,
+		type: "percent",
+		def: 1
+	};
+});
+
+function clamp( value, prop, allowEmpty ) {
+	var type = propTypes[ prop.type ] || {};
+
+	if ( value == null ) {
+		return (allowEmpty || !prop.def) ? null : prop.def;
+	}
+
+	// ~~ is an short way of doing floor for positive numbers
+	value = type.floor ? ~~value : parseFloat( value );
+
+	// IE will pass in empty strings as value for alpha,
+	// which will hit this case
+	if ( isNaN( value ) ) {
+		return prop.def;
+	}
+
+	if ( type.mod ) {
+		// we add mod before modding to make sure that negatives values
+		// get converted properly: -10 -> 350
+		return (value + type.mod) % type.mod;
+	}
+
+	// for now all property types without mod have min and max
+	return 0 > value ? 0 : type.max < value ? type.max : value;
+}
+
+function stringParse( string ) {
+	var inst = color(),
+		rgba = inst._rgba = [];
+
+	string = string.toLowerCase();
+
+	each( stringParsers, function( i, parser ) {
+		var parsed,
+			match = parser.re.exec( string ),
+			values = match && parser.parse( match ),
+			spaceName = parser.space || "rgba";
+
+		if ( values ) {
+			parsed = inst[ spaceName ]( values );
+
+			// if this was an rgba parse the assignment might happen twice
+			// oh well....
+			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
+			rgba = inst._rgba = parsed._rgba;
+
+			// exit each( stringParsers ) here because we matched
+			return false;
+		}
+	});
+
+	// Found a stringParser that handled it
+	if ( rgba.length ) {
+
+		// if this came from a parsed string, force "transparent" when alpha is 0
+		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
+		if ( rgba.join() === "0,0,0,0" ) {
+			jQuery.extend( rgba, colors.transparent );
+		}
+		return inst;
+	}
+
+	// named colors
+	return colors[ string ];
+}
+
+color.fn = jQuery.extend( color.prototype, {
+	parse: function( red, green, blue, alpha ) {
+		if ( red === undefined ) {
+			this._rgba = [ null, null, null, null ];
+			return this;
+		}
+		if ( red.jquery || red.nodeType ) {
+			red = jQuery( red ).css( green );
+			green = undefined;
+		}
+
+		var inst = this,
+			type = jQuery.type( red ),
+			rgba = this._rgba = [];
+
+		// more than 1 argument specified - assume ( red, green, blue, alpha )
+		if ( green !== undefined ) {
+			red = [ red, green, blue, alpha ];
+			type = "array";
+		}
+
+		if ( type === "string" ) {
+			return this.parse( stringParse( red ) || colors._default );
+		}
+
+		if ( type === "array" ) {
+			each( spaces.rgba.props, function( key, prop ) {
+				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
+			});
+			return this;
+		}
+
+		if ( type === "object" ) {
+			if ( red instanceof color ) {
+				each( spaces, function( spaceName, space ) {
+					if ( red[ space.cache ] ) {
+						inst[ space.cache ] = red[ space.cache ].slice();
+					}
+				});
+			} else {
+				each( spaces, function( spaceName, space ) {
+					var cache = space.cache;
+					each( space.props, function( key, prop ) {
+
+						// if the cache doesn't exist, and we know how to convert
+						if ( !inst[ cache ] && space.to ) {
+
+							// if the value was null, we don't need to copy it
+							// if the key was alpha, we don't need to copy it either
+							if ( key === "alpha" || red[ key ] == null ) {
+								return;
+							}
+							inst[ cache ] = space.to( inst._rgba );
+						}
+
+						// this is the only case where we allow nulls for ALL properties.
+						// call clamp with alwaysAllowEmpty
+						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
+					});
+
+					// everything defined but alpha?
+					if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+						// use the default of 1
+						inst[ cache ][ 3 ] = 1;
+						if ( space.from ) {
+							inst._rgba = space.from( inst[ cache ] );
+						}
+					}
+				});
+			}
+			return this;
+		}
+	},
+	is: function( compare ) {
+		var is = color( compare ),
+			same = true,
+			inst = this;
+
+		each( spaces, function( _, space ) {
+			var localCache,
+				isCache = is[ space.cache ];
+			if (isCache) {
+				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
+				each( space.props, function( _, prop ) {
+					if ( isCache[ prop.idx ] != null ) {
+						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
+						return same;
+					}
+				});
+			}
+			return same;
+		});
+		return same;
+	},
+	_space: function() {
+		var used = [],
+			inst = this;
+		each( spaces, function( spaceName, space ) {
+			if ( inst[ space.cache ] ) {
+				used.push( spaceName );
+			}
+		});
+		return used.pop();
+	},
+	transition: function( other, distance ) {
+		var end = color( other ),
+			spaceName = end._space(),
+			space = spaces[ spaceName ],
+			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
+			start = startColor[ space.cache ] || space.to( startColor._rgba ),
+			result = start.slice();
+
+		end = end[ space.cache ];
+		each( space.props, function( key, prop ) {
+			var index = prop.idx,
+				startValue = start[ index ],
+				endValue = end[ index ],
+				type = propTypes[ prop.type ] || {};
+
+			// if null, don't override start value
+			if ( endValue === null ) {
+				return;
+			}
+			// if null - use end
+			if ( startValue === null ) {
+				result[ index ] = endValue;
+			} else {
+				if ( type.mod ) {
+					if ( endValue - startValue > type.mod / 2 ) {
+						startValue += type.mod;
+					} else if ( startValue - endValue > type.mod / 2 ) {
+						startValue -= type.mod;
+					}
+				}
+				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
+			}
+		});
+		return this[ spaceName ]( result );
+	},
+	blend: function( opaque ) {
+		// if we are already opaque - return ourself
+		if ( this._rgba[ 3 ] === 1 ) {
+			return this;
+		}
+
+		var rgb = this._rgba.slice(),
+			a = rgb.pop(),
+			blend = color( opaque )._rgba;
+
+		return color( jQuery.map( rgb, function( v, i ) {
+			return ( 1 - a ) * blend[ i ] + a * v;
+		}));
+	},
+	toRgbaString: function() {
+		var prefix = "rgba(",
+			rgba = jQuery.map( this._rgba, function( v, i ) {
+				return v == null ? ( i > 2 ? 1 : 0 ) : v;
+			});
+
+		if ( rgba[ 3 ] === 1 ) {
+			rgba.pop();
+			prefix = "rgb(";
+		}
+
+		return prefix + rgba.join() + ")";
+	},
+	toHslaString: function() {
+		var prefix = "hsla(",
+			hsla = jQuery.map( this.hsla(), function( v, i ) {
+				if ( v == null ) {
+					v = i > 2 ? 1 : 0;
+				}
+
+				// catch 1 and 2
+				if ( i && i < 3 ) {
+					v = Math.round( v * 100 ) + "%";
+				}
+				return v;
+			});
+
+		if ( hsla[ 3 ] === 1 ) {
+			hsla.pop();
+			prefix = "hsl(";
+		}
+		return prefix + hsla.join() + ")";
+	},
+	toHexString: function( includeAlpha ) {
+		var rgba = this._rgba.slice(),
+			alpha = rgba.pop();
+
+		if ( includeAlpha ) {
+			rgba.push( ~~( alpha * 255 ) );
+		}
+
+		return "#" + jQuery.map( rgba, function( v ) {
+
+			// default to 0 when nulls exist
+			v = ( v || 0 ).toString( 16 );
+			return v.length === 1 ? "0" + v : v;
+		}).join("");
+	},
+	toString: function() {
+		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
+	}
+});
+color.fn.parse.prototype = color.fn;
+
+// hsla conversions adapted from:
+// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
+
+function hue2rgb( p, q, h ) {
+	h = ( h + 1 ) % 1;
+	if ( h * 6 < 1 ) {
+		return p + (q - p) * h * 6;
+	}
+	if ( h * 2 < 1) {
+		return q;
+	}
+	if ( h * 3 < 2 ) {
+		return p + (q - p) * ((2/3) - h) * 6;
+	}
+	return p;
+}
+
+spaces.hsla.to = function ( rgba ) {
+	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
+		return [ null, null, null, rgba[ 3 ] ];
+	}
+	var r = rgba[ 0 ] / 255,
+		g = rgba[ 1 ] / 255,
+		b = rgba[ 2 ] / 255,
+		a = rgba[ 3 ],
+		max = Math.max( r, g, b ),
+		min = Math.min( r, g, b ),
+		diff = max - min,
+		add = max + min,
+		l = add * 0.5,
+		h, s;
+
+	if ( min === max ) {
+		h = 0;
+	} else if ( r === max ) {
+		h = ( 60 * ( g - b ) / diff ) + 360;
+	} else if ( g === max ) {
+		h = ( 60 * ( b - r ) / diff ) + 120;
+	} else {
+		h = ( 60 * ( r - g ) / diff ) + 240;
+	}
+
+	// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
+	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
+	if ( diff === 0 ) {
+		s = 0;
+	} else if ( l <= 0.5 ) {
+		s = diff / add;
+	} else {
+		s = diff / ( 2 - add );
+	}
+	return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
+};
+
+spaces.hsla.from = function ( hsla ) {
+	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
+		return [ null, null, null, hsla[ 3 ] ];
+	}
+	var h = hsla[ 0 ] / 360,
+		s = hsla[ 1 ],
+		l = hsla[ 2 ],
+		a = hsla[ 3 ],
+		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
+		p = 2 * l - q;
+
+	return [
+		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
+		Math.round( hue2rgb( p, q, h ) * 255 ),
+		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
+		a
+	];
+};
+
+
+each( spaces, function( spaceName, space ) {
+	var props = space.props,
+		cache = space.cache,
+		to = space.to,
+		from = space.from;
+
+	// makes rgba() and hsla()
+	color.fn[ spaceName ] = function( value ) {
+
+		// generate a cache for this space if it doesn't exist
+		if ( to && !this[ cache ] ) {
+			this[ cache ] = to( this._rgba );
+		}
+		if ( value === undefined ) {
+			return this[ cache ].slice();
+		}
+
+		var ret,
+			type = jQuery.type( value ),
+			arr = ( type === "array" || type === "object" ) ? value : arguments,
+			local = this[ cache ].slice();
+
+		each( props, function( key, prop ) {
+			var val = arr[ type === "object" ? key : prop.idx ];
+			if ( val == null ) {
+				val = local[ prop.idx ];
+			}
+			local[ prop.idx ] = clamp( val, prop );
+		});
+
+		if ( from ) {
+			ret = color( from( local ) );
+			ret[ cache ] = local;
+			return ret;
+		} else {
+			return color( local );
+		}
+	};
+
+	// makes red() green() blue() alpha() hue() saturation() lightness()
+	each( props, function( key, prop ) {
+		// alpha is included in more than one space
+		if ( color.fn[ key ] ) {
+			return;
+		}
+		color.fn[ key ] = function( value ) {
+			var vtype = jQuery.type( value ),
+				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
+				local = this[ fn ](),
+				cur = local[ prop.idx ],
+				match;
+
+			if ( vtype === "undefined" ) {
+				return cur;
+			}
+
+			if ( vtype === "function" ) {
+				value = value.call( this, cur );
+				vtype = jQuery.type( value );
+			}
+			if ( value == null && prop.empty ) {
+				return this;
+			}
+			if ( vtype === "string" ) {
+				match = rplusequals.exec( value );
+				if ( match ) {
+					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
+				}
+			}
+			local[ prop.idx ] = value;
+			return this[ fn ]( local );
+		};
+	});
+});
+
+// add cssHook and .fx.step function for each named hook.
+// accept a space separated string of properties
+color.hook = function( hook ) {
+	var hooks = hook.split( " " );
+	each( hooks, function( i, hook ) {
+		jQuery.cssHooks[ hook ] = {
+			set: function( elem, value ) {
+				var parsed, curElem,
+					backgroundColor = "";
+
+				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
+					value = color( parsed || value );
+					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
+						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
+						while (
+							(backgroundColor === "" || backgroundColor === "transparent") &&
+							curElem && curElem.style
+						) {
+							try {
+								backgroundColor = jQuery.css( curElem, "backgroundColor" );
+								curElem = curElem.parentNode;
+							} catch ( e ) {
+							}
+						}
+
+						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
+							backgroundColor :
+							"_default" );
+					}
+
+					value = value.toRgbaString();
+				}
+				try {
+					elem.style[ hook ] = value;
+				} catch( e ) {
+					// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
+				}
+			}
+		};
+		jQuery.fx.step[ hook ] = function( fx ) {
+			if ( !fx.colorInit ) {
+				fx.start = color( fx.elem, hook );
+				fx.end = color( fx.end );
+				fx.colorInit = true;
+			}
+			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
+		};
+	});
+
+};
+
+color.hook( stepHooks );
+
+jQuery.cssHooks.borderColor = {
+	expand: function( value ) {
+		var expanded = {};
+
+		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
+			expanded[ "border" + part + "Color" ] = value;
+		});
+		return expanded;
+	}
+};
+
+// Basic color names only.
+// Usage of any of the other color names requires adding yourself or including
+// jquery.color.svg-names.js.
+colors = jQuery.Color.names = {
+	// 4.1. Basic color keywords
+	aqua: "#00ffff",
+	black: "#000000",
+	blue: "#0000ff",
+	fuchsia: "#ff00ff",
+	gray: "#808080",
+	green: "#008000",
+	lime: "#00ff00",
+	maroon: "#800000",
+	navy: "#000080",
+	olive: "#808000",
+	purple: "#800080",
+	red: "#ff0000",
+	silver: "#c0c0c0",
+	teal: "#008080",
+	white: "#ffffff",
+	yellow: "#ffff00",
+
+	// 4.2.3. "transparent" color keyword
+	transparent: [ null, null, null, 0 ],
+
+	_default: "#ffffff"
+};
+
+})( jQuery );
+
+
+/******************************************************************************/
+/****************************** CLASS ANIMATIONS ******************************/
+/******************************************************************************/
+(function() {
+
+var classAnimationActions = [ "add", "remove", "toggle" ],
+	shorthandStyles = {
+		border: 1,
+		borderBottom: 1,
+		borderColor: 1,
+		borderLeft: 1,
+		borderRight: 1,
+		borderTop: 1,
+		borderWidth: 1,
+		margin: 1,
+		padding: 1
+	};
+
+$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
+	$.fx.step[ prop ] = function( fx ) {
+		if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
+			jQuery.style( fx.elem, prop, fx.end );
+			fx.setAttr = true;
+		}
+	};
+});
+
+function getElementStyles( elem ) {
+	var key, len,
+		style = elem.ownerDocument.defaultView ?
+			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
+			elem.currentStyle,
+		styles = {};
+
+	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
+		len = style.length;
+		while ( len-- ) {
+			key = style[ len ];
+			if ( typeof style[ key ] === "string" ) {
+				styles[ $.camelCase( key ) ] = style[ key ];
+			}
+		}
+	// support: Opera, IE <9
+	} else {
+		for ( key in style ) {
+			if ( typeof style[ key ] === "string" ) {
+				styles[ key ] = style[ key ];
+			}
+		}
+	}
+
+	return styles;
+}
+
+
+function styleDifference( oldStyle, newStyle ) {
+	var diff = {},
+		name, value;
+
+	for ( name in newStyle ) {
+		value = newStyle[ name ];
+		if ( oldStyle[ name ] !== value ) {
+			if ( !shorthandStyles[ name ] ) {
+				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
+					diff[ name ] = value;
+				}
+			}
+		}
+	}
+
+	return diff;
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+$.effects.animateClass = function( value, duration, easing, callback ) {
+	var o = $.speed( duration, easing, callback );
+
+	return this.queue( function() {
+		var animated = $( this ),
+			baseClass = animated.attr( "class" ) || "",
+			applyClassChange,
+			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
+
+		// map the animated objects to store the original styles.
+		allAnimations = allAnimations.map(function() {
+			var el = $( this );
+			return {
+				el: el,
+				start: getElementStyles( this )
+			};
+		});
+
+		// apply class change
+		applyClassChange = function() {
+			$.each( classAnimationActions, function(i, action) {
+				if ( value[ action ] ) {
+					animated[ action + "Class" ]( value[ action ] );
+				}
+			});
+		};
+		applyClassChange();
+
+		// map all animated objects again - calculate new styles and diff
+		allAnimations = allAnimations.map(function() {
+			this.end = getElementStyles( this.el[ 0 ] );
+			this.diff = styleDifference( this.start, this.end );
+			return this;
+		});
+
+		// apply original class
+		animated.attr( "class", baseClass );
+
+		// map all animated objects again - this time collecting a promise
+		allAnimations = allAnimations.map(function() {
+			var styleInfo = this,
+				dfd = $.Deferred(),
+				opts = $.extend({}, o, {
+					queue: false,
+					complete: function() {
+						dfd.resolve( styleInfo );
+					}
+				});
+
+			this.el.animate( this.diff, opts );
+			return dfd.promise();
+		});
+
+		// once all animations have completed:
+		$.when.apply( $, allAnimations.get() ).done(function() {
+
+			// set the final class
+			applyClassChange();
+
+			// for each animated element,
+			// clear all css properties that were animated
+			$.each( arguments, function() {
+				var el = this.el;
+				$.each( this.diff, function(key) {
+					el.css( key, "" );
+				});
+			});
+
+			// this is guarnteed to be there if you use jQuery.speed()
+			// it also handles dequeuing the next anim...
+			o.complete.call( animated[ 0 ] );
+		});
+	});
+};
+
+$.fn.extend({
+	_addClass: $.fn.addClass,
+	addClass: function( classNames, speed, easing, callback ) {
+		return speed ?
+			$.effects.animateClass.call( this,
+				{ add: classNames }, speed, easing, callback ) :
+			this._addClass( classNames );
+	},
+
+	_removeClass: $.fn.removeClass,
+	removeClass: function( classNames, speed, easing, callback ) {
+		return arguments.length > 1 ?
+			$.effects.animateClass.call( this,
+				{ remove: classNames }, speed, easing, callback ) :
+			this._removeClass.apply( this, arguments );
+	},
+
+	_toggleClass: $.fn.toggleClass,
+	toggleClass: function( classNames, force, speed, easing, callback ) {
+		if ( typeof force === "boolean" || force === undefined ) {
+			if ( !speed ) {
+				// without speed parameter
+				return this._toggleClass( classNames, force );
+			} else {
+				return $.effects.animateClass.call( this,
+					(force ? { add: classNames } : { remove: classNames }),
+					speed, easing, callback );
+			}
+		} else {
+			// without force parameter
+			return $.effects.animateClass.call( this,
+				{ toggle: classNames }, force, speed, easing );
+		}
+	},
+
+	switchClass: function( remove, add, speed, easing, callback) {
+		return $.effects.animateClass.call( this, {
+			add: add,
+			remove: remove
+		}, speed, easing, callback );
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EFFECTS **********************************/
+/******************************************************************************/
+
+(function() {
+
+$.extend( $.effects, {
+	version: "1.10.1",
+
+	// Saves a set of properties in a data storage
+	save: function( element, set ) {
+		for( var i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
+			}
+		}
+	},
+
+	// Restores a set of previously saved properties from a data storage
+	restore: function( element, set ) {
+		var val, i;
+		for( i=0; i < set.length; i++ ) {
+			if ( set[ i ] !== null ) {
+				val = element.data( dataSpace + set[ i ] );
+				// support: jQuery 1.6.2
+				// http://bugs.jquery.com/ticket/9917
+				// jQuery 1.6.2 incorrectly returns undefined for any falsy value.
+				// We can't differentiate between "" and 0 here, so we just assume
+				// empty string since it's likely to be a more common value...
+				if ( val === undefined ) {
+					val = "";
+				}
+				element.css( set[ i ], val );
+			}
+		}
+	},
+
+	setMode: function( el, mode ) {
+		if (mode === "toggle") {
+			mode = el.is( ":hidden" ) ? "show" : "hide";
+		}
+		return mode;
+	},
+
+	// Translates a [top,left] array into a baseline value
+	// this should be a little more flexible in the future to handle a string & hash
+	getBaseline: function( origin, original ) {
+		var y, x;
+		switch ( origin[ 0 ] ) {
+			case "top": y = 0; break;
+			case "middle": y = 0.5; break;
+			case "bottom": y = 1; break;
+			default: y = origin[ 0 ] / original.height;
+		}
+		switch ( origin[ 1 ] ) {
+			case "left": x = 0; break;
+			case "center": x = 0.5; break;
+			case "right": x = 1; break;
+			default: x = origin[ 1 ] / original.width;
+		}
+		return {
+			x: x,
+			y: y
+		};
+	},
+
+	// Wraps the element around a wrapper that copies position properties
+	createWrapper: function( element ) {
+
+		// if the element is already wrapped, return it
+		if ( element.parent().is( ".ui-effects-wrapper" )) {
+			return element.parent();
+		}
+
+		// wrap the element
+		var props = {
+				width: element.outerWidth(true),
+				height: element.outerHeight(true),
+				"float": element.css( "float" )
+			},
+			wrapper = $( "<div></div>" )
+				.addClass( "ui-effects-wrapper" )
+				.css({
+					fontSize: "100%",
+					background: "transparent",
+					border: "none",
+					margin: 0,
+					padding: 0
+				}),
+			// Store the size in case width/height are defined in % - Fixes #5245
+			size = {
+				width: element.width(),
+				height: element.height()
+			},
+			active = document.activeElement;
+
+		// support: Firefox
+		// Firefox incorrectly exposes anonymous content
+		// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+		try {
+			active.id;
+		} catch( e ) {
+			active = document.body;
+		}
+
+		element.wrap( wrapper );
+
+		// Fixes #7595 - Elements lose focus when wrapped.
+		if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+			$( active ).focus();
+		}
+
+		wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
+
+		// transfer positioning properties to the wrapper
+		if ( element.css( "position" ) === "static" ) {
+			wrapper.css({ position: "relative" });
+			element.css({ position: "relative" });
+		} else {
+			$.extend( props, {
+				position: element.css( "position" ),
+				zIndex: element.css( "z-index" )
+			});
+			$.each([ "top", "left", "bottom", "right" ], function(i, pos) {
+				props[ pos ] = element.css( pos );
+				if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
+					props[ pos ] = "auto";
+				}
+			});
+			element.css({
+				position: "relative",
+				top: 0,
+				left: 0,
+				right: "auto",
+				bottom: "auto"
+			});
+		}
+		element.css(size);
+
+		return wrapper.css( props ).show();
+	},
+
+	removeWrapper: function( element ) {
+		var active = document.activeElement;
+
+		if ( element.parent().is( ".ui-effects-wrapper" ) ) {
+			element.parent().replaceWith( element );
+
+			// Fixes #7595 - Elements lose focus when wrapped.
+			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+				$( active ).focus();
+			}
+		}
+
+
+		return element;
+	},
+
+	setTransition: function( element, list, factor, value ) {
+		value = value || {};
+		$.each( list, function( i, x ) {
+			var unit = element.cssUnit( x );
+			if ( unit[ 0 ] > 0 ) {
+				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
+			}
+		});
+		return value;
+	}
+});
+
+// return an effect options object for the given parameters:
+function _normalizeArguments( effect, options, speed, callback ) {
+
+	// allow passing all options as the first parameter
+	if ( $.isPlainObject( effect ) ) {
+		options = effect;
+		effect = effect.effect;
+	}
+
+	// convert to an object
+	effect = { effect: effect };
+
+	// catch (effect, null, ...)
+	if ( options == null ) {
+		options = {};
+	}
+
+	// catch (effect, callback)
+	if ( $.isFunction( options ) ) {
+		callback = options;
+		speed = null;
+		options = {};
+	}
+
+	// catch (effect, speed, ?)
+	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
+		callback = speed;
+		speed = options;
+		options = {};
+	}
+
+	// catch (effect, options, callback)
+	if ( $.isFunction( speed ) ) {
+		callback = speed;
+		speed = null;
+	}
+
+	// add options to effect
+	if ( options ) {
+		$.extend( effect, options );
+	}
+
+	speed = speed || options.duration;
+	effect.duration = $.fx.off ? 0 :
+		typeof speed === "number" ? speed :
+		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
+		$.fx.speeds._default;
+
+	effect.complete = callback || options.complete;
+
+	return effect;
+}
+
+function standardSpeed( speed ) {
+	// valid standard speeds
+	if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) {
+		return true;
+	}
+
+	// invalid strings - treat as "normal" speed
+	return typeof speed === "string" && !$.effects.effect[ speed ];
+}
+
+$.fn.extend({
+	effect: function( /* effect, options, speed, callback */ ) {
+		var args = _normalizeArguments.apply( this, arguments ),
+			mode = args.mode,
+			queue = args.queue,
+			effectMethod = $.effects.effect[ args.effect ];
+
+		if ( $.fx.off || !effectMethod ) {
+			// delegate to the original method (e.g., .show()) if possible
+			if ( mode ) {
+				return this[ mode ]( args.duration, args.complete );
+			} else {
+				return this.each( function() {
+					if ( args.complete ) {
+						args.complete.call( this );
+					}
+				});
+			}
+		}
+
+		function run( next ) {
+			var elem = $( this ),
+				complete = args.complete,
+				mode = args.mode;
+
+			function done() {
+				if ( $.isFunction( complete ) ) {
+					complete.call( elem[0] );
+				}
+				if ( $.isFunction( next ) ) {
+					next();
+				}
+			}
+
+			// if the element is hiddden and mode is hide,
+			// or element is visible and mode is show
+			if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
+				done();
+			} else {
+				effectMethod.call( elem[0], args, done );
+			}
+		}
+
+		return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
+	},
+
+	_show: $.fn.show,
+	show: function( speed ) {
+		if ( standardSpeed( speed ) ) {
+			return this._show.apply( this, arguments );
+		} else {
+			var args = _normalizeArguments.apply( this, arguments );
+			args.mode = "show";
+			return this.effect.call( this, args );
+		}
+	},
+
+	_hide: $.fn.hide,
+	hide: function( speed ) {
+		if ( standardSpeed( speed ) ) {
+			return this._hide.apply( this, arguments );
+		} else {
+			var args = _normalizeArguments.apply( this, arguments );
+			args.mode = "hide";
+			return this.effect.call( this, args );
+		}
+	},
+
+	// jQuery core overloads toggle and creates _toggle
+	__toggle: $.fn.toggle,
+	toggle: function( speed ) {
+		if ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) {
+			return this.__toggle.apply( this, arguments );
+		} else {
+			var args = _normalizeArguments.apply( this, arguments );
+			args.mode = "toggle";
+			return this.effect.call( this, args );
+		}
+	},
+
+	// helper functions
+	cssUnit: function(key) {
+		var style = this.css( key ),
+			val = [];
+
+		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
+			if ( style.indexOf( unit ) > 0 ) {
+				val = [ parseFloat( style ), unit ];
+			}
+		});
+		return val;
+	}
+});
+
+})();
+
+/******************************************************************************/
+/*********************************** EASING ***********************************/
+/******************************************************************************/
+
+(function() {
+
+// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
+
+var baseEasings = {};
+
+$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
+	baseEasings[ name ] = function( p ) {
+		return Math.pow( p, i + 2 );
+	};
+});
+
+$.extend( baseEasings, {
+	Sine: function ( p ) {
+		return 1 - Math.cos( p * Math.PI / 2 );
+	},
+	Circ: function ( p ) {
+		return 1 - Math.sqrt( 1 - p * p );
+	},
+	Elastic: function( p ) {
+		return p === 0 || p === 1 ? p :
+			-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
+	},
+	Back: function( p ) {
+		return p * p * ( 3 * p - 2 );
+	},
+	Bounce: function ( p ) {
+		var pow2,
+			bounce = 4;
+
+		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
+		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
+	}
+});
+
+$.each( baseEasings, function( name, easeIn ) {
+	$.easing[ "easeIn" + name ] = easeIn;
+	$.easing[ "easeOut" + name ] = function( p ) {
+		return 1 - easeIn( 1 - p );
+	};
+	$.easing[ "easeInOut" + name ] = function( p ) {
+		return p < 0.5 ?
+			easeIn( p * 2 ) / 2 :
+			1 - easeIn( p * -2 + 2 ) / 2;
+	};
+});
+
+})();
+
+})(jQuery));
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.menu.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.menu.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.menu.js	(revision 25596)
@@ -0,0 +1,621 @@
+/*!
+ * jQuery UI Menu 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/menu/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ */
+(function( $, undefined ) {
+
+$.widget( "ui.menu", {
+	version: "1.10.1",
+	defaultElement: "<ul>",
+	delay: 300,
+	options: {
+		icons: {
+			submenu: "ui-icon-carat-1-e"
+		},
+		menus: "ul",
+		position: {
+			my: "left top",
+			at: "right top"
+		},
+		role: "menu",
+
+		// callbacks
+		blur: null,
+		focus: null,
+		select: null
+	},
+
+	_create: function() {
+		this.activeMenu = this.element;
+		// flag used to prevent firing of the click handler
+		// as the event bubbles up through nested menus
+		this.mouseHandled = false;
+		this.element
+			.uniqueId()
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
+			.attr({
+				role: this.options.role,
+				tabIndex: 0
+			})
+			// need to catch all clicks on disabled menu
+			// not possible through _on
+			.bind( "click" + this.eventNamespace, $.proxy(function( event ) {
+				if ( this.options.disabled ) {
+					event.preventDefault();
+				}
+			}, this ));
+
+		if ( this.options.disabled ) {
+			this.element
+				.addClass( "ui-state-disabled" )
+				.attr( "aria-disabled", "true" );
+		}
+
+		this._on({
+			// Prevent focus from sticking to links inside menu after clicking
+			// them (focus should always stay on UL during navigation).
+			"mousedown .ui-menu-item > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-state-disabled > a": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-menu-item:has(a)": function( event ) {
+				var target = $( event.target ).closest( ".ui-menu-item" );
+				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
+					this.mouseHandled = true;
+
+					this.select( event );
+					// Open submenu on click
+					if ( target.has( ".ui-menu" ).length ) {
+						this.expand( event );
+					} else if ( !this.element.is( ":focus" ) ) {
+						// Redirect focus to the menu
+						this.element.trigger( "focus", [ true ] );
+
+						// If the active item is on the top level, let it stay active.
+						// Otherwise, blur the active item since it is no longer visible.
+						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
+							clearTimeout( this.timer );
+						}
+					}
+				}
+			},
+			"mouseenter .ui-menu-item": function( event ) {
+				var target = $( event.currentTarget );
+				// Remove ui-state-active class from siblings of the newly focused menu item
+				// to avoid a jump caused by adjacent elements both having a class with a border
+				target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
+				this.focus( event, target );
+			},
+			mouseleave: "collapseAll",
+			"mouseleave .ui-menu": "collapseAll",
+			focus: function( event, keepActiveItem ) {
+				// If there's already an active item, keep it active
+				// If not, activate the first item
+				var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
+
+				if ( !keepActiveItem ) {
+					this.focus( event, item );
+				}
+			},
+			blur: function( event ) {
+				this._delay(function() {
+					if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
+						this.collapseAll( event );
+					}
+				});
+			},
+			keydown: "_keydown"
+		});
+
+		this.refresh();
+
+		// Clicks outside of a menu collapse any open menus
+		this._on( this.document, {
+			click: function( event ) {
+				if ( !$( event.target ).closest( ".ui-menu" ).length ) {
+					this.collapseAll( event );
+				}
+
+				// Reset the mouseHandled flag
+				this.mouseHandled = false;
+			}
+		});
+	},
+
+	_destroy: function() {
+		// Destroy (sub)menus
+		this.element
+			.removeAttr( "aria-activedescendant" )
+			.find( ".ui-menu" ).addBack()
+				.removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
+				.removeAttr( "role" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "aria-labelledby" )
+				.removeAttr( "aria-expanded" )
+				.removeAttr( "aria-hidden" )
+				.removeAttr( "aria-disabled" )
+				.removeUniqueId()
+				.show();
+
+		// Destroy menu items
+		this.element.find( ".ui-menu-item" )
+			.removeClass( "ui-menu-item" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-disabled" )
+			.children( "a" )
+				.removeUniqueId()
+				.removeClass( "ui-corner-all ui-state-hover" )
+				.removeAttr( "tabIndex" )
+				.removeAttr( "role" )
+				.removeAttr( "aria-haspopup" )
+				.children().each( function() {
+					var elem = $( this );
+					if ( elem.data( "ui-menu-submenu-carat" ) ) {
+						elem.remove();
+					}
+				});
+
+		// Destroy menu dividers
+		this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
+	},
+
+	_keydown: function( event ) {
+		/*jshint maxcomplexity:20*/
+		var match, prev, character, skip, regex,
+			preventDefault = true;
+
+		function escape( value ) {
+			return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
+		}
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.PAGE_UP:
+			this.previousPage( event );
+			break;
+		case $.ui.keyCode.PAGE_DOWN:
+			this.nextPage( event );
+			break;
+		case $.ui.keyCode.HOME:
+			this._move( "first", "first", event );
+			break;
+		case $.ui.keyCode.END:
+			this._move( "last", "last", event );
+			break;
+		case $.ui.keyCode.UP:
+			this.previous( event );
+			break;
+		case $.ui.keyCode.DOWN:
+			this.next( event );
+			break;
+		case $.ui.keyCode.LEFT:
+			this.collapse( event );
+			break;
+		case $.ui.keyCode.RIGHT:
+			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+				this.expand( event );
+			}
+			break;
+		case $.ui.keyCode.ENTER:
+		case $.ui.keyCode.SPACE:
+			this._activate( event );
+			break;
+		case $.ui.keyCode.ESCAPE:
+			this.collapse( event );
+			break;
+		default:
+			preventDefault = false;
+			prev = this.previousFilter || "";
+			character = String.fromCharCode( event.keyCode );
+			skip = false;
+
+			clearTimeout( this.filterTimer );
+
+			if ( character === prev ) {
+				skip = true;
+			} else {
+				character = prev + character;
+			}
+
+			regex = new RegExp( "^" + escape( character ), "i" );
+			match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+				return regex.test( $( this ).children( "a" ).text() );
+			});
+			match = skip && match.index( this.active.next() ) !== -1 ?
+				this.active.nextAll( ".ui-menu-item" ) :
+				match;
+
+			// If no matches on the current filter, reset to the last character pressed
+			// to move down the menu to the first item that starts with that character
+			if ( !match.length ) {
+				character = String.fromCharCode( event.keyCode );
+				regex = new RegExp( "^" + escape( character ), "i" );
+				match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
+					return regex.test( $( this ).children( "a" ).text() );
+				});
+			}
+
+			if ( match.length ) {
+				this.focus( event, match );
+				if ( match.length > 1 ) {
+					this.previousFilter = character;
+					this.filterTimer = this._delay(function() {
+						delete this.previousFilter;
+					}, 1000 );
+				} else {
+					delete this.previousFilter;
+				}
+			} else {
+				delete this.previousFilter;
+			}
+		}
+
+		if ( preventDefault ) {
+			event.preventDefault();
+		}
+	},
+
+	_activate: function( event ) {
+		if ( !this.active.is( ".ui-state-disabled" ) ) {
+			if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
+				this.expand( event );
+			} else {
+				this.select( event );
+			}
+		}
+	},
+
+	refresh: function() {
+		var menus,
+			icon = this.options.icons.submenu,
+			submenus = this.element.find( this.options.menus );
+
+		// Initialize nested menus
+		submenus.filter( ":not(.ui-menu)" )
+			.addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
+			.hide()
+			.attr({
+				role: this.options.role,
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			})
+			.each(function() {
+				var menu = $( this ),
+					item = menu.prev( "a" ),
+					submenuCarat = $( "<span>" )
+						.addClass( "ui-menu-icon ui-icon " + icon )
+						.data( "ui-menu-submenu-carat", true );
+
+				item
+					.attr( "aria-haspopup", "true" )
+					.prepend( submenuCarat );
+				menu.attr( "aria-labelledby", item.attr( "id" ) );
+			});
+
+		menus = submenus.add( this.element );
+
+		// Don't refresh list items that are already adapted
+		menus.children( ":not(.ui-menu-item):has(a)" )
+			.addClass( "ui-menu-item" )
+			.attr( "role", "presentation" )
+			.children( "a" )
+				.uniqueId()
+				.addClass( "ui-corner-all" )
+				.attr({
+					tabIndex: -1,
+					role: this._itemRole()
+				});
+
+		// Initialize unlinked menu-items containing spaces and/or dashes only as dividers
+		menus.children( ":not(.ui-menu-item)" ).each(function() {
+			var item = $( this );
+			// hyphen, em dash, en dash
+			if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
+				item.addClass( "ui-widget-content ui-menu-divider" );
+			}
+		});
+
+		// Add aria-disabled attribute to any disabled menu item
+		menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
+
+		// If the active item has been removed, blur the menu
+		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			this.blur();
+		}
+	},
+
+	_itemRole: function() {
+		return {
+			menu: "menuitem",
+			listbox: "option"
+		}[ this.options.role ];
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			this.element.find( ".ui-menu-icon" )
+				.removeClass( this.options.icons.submenu )
+				.addClass( value.submenu );
+		}
+		this._super( key, value );
+	},
+
+	focus: function( event, item ) {
+		var nested, focused;
+		this.blur( event, event && event.type === "focus" );
+
+		this._scrollIntoView( item );
+
+		this.active = item.first();
+		focused = this.active.children( "a" ).addClass( "ui-state-focus" );
+		// Only update aria-activedescendant if there's a role
+		// otherwise we assume focus is managed elsewhere
+		if ( this.options.role ) {
+			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+		}
+
+		// Highlight active parent menu item, if any
+		this.active
+			.parent()
+			.closest( ".ui-menu-item" )
+			.children( "a:first" )
+			.addClass( "ui-state-active" );
+
+		if ( event && event.type === "keydown" ) {
+			this._close();
+		} else {
+			this.timer = this._delay(function() {
+				this._close();
+			}, this.delay );
+		}
+
+		nested = item.children( ".ui-menu" );
+		if ( nested.length && ( /^mouse/.test( event.type ) ) ) {
+			this._startOpening(nested);
+		}
+		this.activeMenu = item.parent();
+
+		this._trigger( "focus", event, { item: item } );
+	},
+
+	_scrollIntoView: function( item ) {
+		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+		if ( this._hasScroll() ) {
+			borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
+			paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
+			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+			scroll = this.activeMenu.scrollTop();
+			elementHeight = this.activeMenu.height();
+			itemHeight = item.height();
+
+			if ( offset < 0 ) {
+				this.activeMenu.scrollTop( scroll + offset );
+			} else if ( offset + itemHeight > elementHeight ) {
+				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+			}
+		}
+	},
+
+	blur: function( event, fromFocus ) {
+		if ( !fromFocus ) {
+			clearTimeout( this.timer );
+		}
+
+		if ( !this.active ) {
+			return;
+		}
+
+		this.active.children( "a" ).removeClass( "ui-state-focus" );
+		this.active = null;
+
+		this._trigger( "blur", event, { item: this.active } );
+	},
+
+	_startOpening: function( submenu ) {
+		clearTimeout( this.timer );
+
+		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
+		// shift in the submenu position when mousing over the carat icon
+		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
+			return;
+		}
+
+		this.timer = this._delay(function() {
+			this._close();
+			this._open( submenu );
+		}, this.delay );
+	},
+
+	_open: function( submenu ) {
+		var position = $.extend({
+			of: this.active
+		}, this.options.position );
+
+		clearTimeout( this.timer );
+		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
+			.hide()
+			.attr( "aria-hidden", "true" );
+
+		submenu
+			.show()
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.position( position );
+	},
+
+	collapseAll: function( event, all ) {
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			// If we were passed an event, look for the submenu that contains the event
+			var currentMenu = all ? this.element :
+				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
+
+			// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
+			if ( !currentMenu.length ) {
+				currentMenu = this.element;
+			}
+
+			this._close( currentMenu );
+
+			this.blur( event );
+			this.activeMenu = currentMenu;
+		}, this.delay );
+	},
+
+	// With no arguments, closes the currently active menu - if nothing is active
+	// it closes all menus.  If passed an argument, it will search for menus BELOW
+	_close: function( startMenu ) {
+		if ( !startMenu ) {
+			startMenu = this.active ? this.active.parent() : this.element;
+		}
+
+		startMenu
+			.find( ".ui-menu" )
+				.hide()
+				.attr( "aria-hidden", "true" )
+				.attr( "aria-expanded", "false" )
+			.end()
+			.find( "a.ui-state-active" )
+				.removeClass( "ui-state-active" );
+	},
+
+	collapse: function( event ) {
+		var newItem = this.active &&
+			this.active.parent().closest( ".ui-menu-item", this.element );
+		if ( newItem && newItem.length ) {
+			this._close();
+			this.focus( event, newItem );
+		}
+	},
+
+	expand: function( event ) {
+		var newItem = this.active &&
+			this.active
+				.children( ".ui-menu " )
+				.children( ".ui-menu-item" )
+				.first();
+
+		if ( newItem && newItem.length ) {
+			this._open( newItem.parent() );
+
+			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
+			this._delay(function() {
+				this.focus( event, newItem );
+			});
+		}
+	},
+
+	next: function( event ) {
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		this._move( "prev", "last", event );
+	},
+
+	isFirstItem: function() {
+		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
+	},
+
+	isLastItem: function() {
+		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
+	},
+
+	_move: function( direction, filter, event ) {
+		var next;
+		if ( this.active ) {
+			if ( direction === "first" || direction === "last" ) {
+				next = this.active
+					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
+					.eq( -1 );
+			} else {
+				next = this.active
+					[ direction + "All" ]( ".ui-menu-item" )
+					.eq( 0 );
+			}
+		}
+		if ( !next || !next.length || !this.active ) {
+			next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
+		}
+
+		this.focus( event, next );
+	},
+
+	nextPage: function( event ) {
+		var item, base, height;
+
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isLastItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.nextAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base - height < 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" )
+				[ !this.active ? "first" : "last" ]() );
+		}
+	},
+
+	previousPage: function( event ) {
+		var item, base, height;
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isFirstItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.prevAll( ".ui-menu-item" ).each(function() {
+				item = $( this );
+				return item.offset().top - base + height > 0;
+			});
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
+		}
+	},
+
+	_hasScroll: function() {
+		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
+	},
+
+	select: function( event ) {
+		// TODO: It should never be possible to not have an active item at this
+		// point, but the tests don't trigger mouseenter before click.
+		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
+		var ui = { item: this.active };
+		if ( !this.active.has( ".ui-menu" ).length ) {
+			this.collapseAll( event, true );
+		}
+		this._trigger( "select", event, ui );
+	}
+});
+
+}( jQuery ));
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.mouse.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.mouse.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.mouse.js	(revision 25596)
@@ -0,0 +1,169 @@
+/*!
+ * jQuery UI Mouse 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/mouse/
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var mouseHandled = false;
+$( document ).mouseup( function() {
+	mouseHandled = false;
+});
+
+$.widget("ui.mouse", {
+	version: "1.10.1",
+	options: {
+		cancel: "input,textarea,button,select,option",
+		distance: 1,
+		delay: 0
+	},
+	_mouseInit: function() {
+		var that = this;
+
+		this.element
+			.bind("mousedown."+this.widgetName, function(event) {
+				return that._mouseDown(event);
+			})
+			.bind("click."+this.widgetName, function(event) {
+				if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
+					$.removeData(event.target, that.widgetName + ".preventClickEvent");
+					event.stopImmediatePropagation();
+					return false;
+				}
+			});
+
+		this.started = false;
+	},
+
+	// TODO: make sure destroying one instance of mouse doesn't mess with
+	// other instances of mouse
+	_mouseDestroy: function() {
+		this.element.unbind("."+this.widgetName);
+		if ( this._mouseMoveDelegate ) {
+			$(document)
+				.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+				.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+		}
+	},
+
+	_mouseDown: function(event) {
+		// don't let more than one widget handle mouseStart
+		if( mouseHandled ) { return; }
+
+		// we may have missed mouseup (out of window)
+		(this._mouseStarted && this._mouseUp(event));
+
+		this._mouseDownEvent = event;
+
+		var that = this,
+			btnIsLeft = (event.which === 1),
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
+		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
+			return true;
+		}
+
+		this.mouseDelayMet = !this.options.delay;
+		if (!this.mouseDelayMet) {
+			this._mouseDelayTimer = setTimeout(function() {
+				that.mouseDelayMet = true;
+			}, this.options.delay);
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted = (this._mouseStart(event) !== false);
+			if (!this._mouseStarted) {
+				event.preventDefault();
+				return true;
+			}
+		}
+
+		// Click event may never have fired (Gecko & Opera)
+		if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
+			$.removeData(event.target, this.widgetName + ".preventClickEvent");
+		}
+
+		// these delegates are required to keep context
+		this._mouseMoveDelegate = function(event) {
+			return that._mouseMove(event);
+		};
+		this._mouseUpDelegate = function(event) {
+			return that._mouseUp(event);
+		};
+		$(document)
+			.bind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.bind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		event.preventDefault();
+
+		mouseHandled = true;
+		return true;
+	},
+
+	_mouseMove: function(event) {
+		// IE mouseup check - mouseup happened when mouse was out of window
+		if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
+			return this._mouseUp(event);
+		}
+
+		if (this._mouseStarted) {
+			this._mouseDrag(event);
+			return event.preventDefault();
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted =
+				(this._mouseStart(this._mouseDownEvent, event) !== false);
+			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
+		}
+
+		return !this._mouseStarted;
+	},
+
+	_mouseUp: function(event) {
+		$(document)
+			.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		if (this._mouseStarted) {
+			this._mouseStarted = false;
+
+			if (event.target === this._mouseDownEvent.target) {
+				$.data(event.target, this.widgetName + ".preventClickEvent", true);
+			}
+
+			this._mouseStop(event);
+		}
+
+		return false;
+	},
+
+	_mouseDistanceMet: function(event) {
+		return (Math.max(
+				Math.abs(this._mouseDownEvent.pageX - event.pageX),
+				Math.abs(this._mouseDownEvent.pageY - event.pageY)
+			) >= this.options.distance
+		);
+	},
+
+	_mouseDelayMet: function(/* event */) {
+		return this.mouseDelayMet;
+	},
+
+	// These are placeholder methods, to be overriden by extending plugin
+	_mouseStart: function(/* event */) {},
+	_mouseDrag: function(/* event */) {},
+	_mouseStop: function(/* event */) {},
+	_mouseCapture: function(/* event */) { return true; }
+});
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.position.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.position.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.position.js	(revision 25596)
@@ -0,0 +1,497 @@
+/*!
+ * jQuery UI Position 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/position/
+ */
+(function( $, undefined ) {
+
+$.ui = $.ui || {};
+
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	round = Math.round,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[0];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[0];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[0].clientWidth;
+		}
+
+		div.remove();
+
+		return (cachedScrollbarWidth = w1 - w2);
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
+			overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[0].scrollHeight );
+		return {
+			width: hasOverflowX ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowY ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[0] );
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			offset: withinElement.offset() || { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: isWindow ? withinElement.width() : withinElement.outerWidth(),
+			height: isWindow ? withinElement.height() : withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[0].preventDefault ) {
+		// force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+	// clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	});
+
+	// normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each(function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		// if the browser doesn't support fractions, then round for consistent results
+		if ( !$.support.offsetFractions ) {
+			position.left = round( position.left );
+			position.top = round( position.top );
+		}
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem : elem
+				});
+			}
+		});
+
+		if ( options.using ) {
+			// adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	});
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+				// element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
+					position.left += overLeft - newOverRight;
+				// element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+				// element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+			// too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+			// too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+			// adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+				// element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
+					position.top += overTop - newOverBottom;
+				// element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+				// element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+			// too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+			// too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+			// adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
+				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overBottom > 0 ) {
+				newOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
+				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+// fraction support test
+(function () {
+	var testElement, testElementParent, testElementStyle, offsetLeft, i,
+		body = document.getElementsByTagName( "body" )[ 0 ],
+		div = document.createElement( "div" );
+
+	//Create a "fake body" for testing based on method used in jQuery.support
+	testElement = document.createElement( body ? "div" : "body" );
+	testElementStyle = {
+		visibility: "hidden",
+		width: 0,
+		height: 0,
+		border: 0,
+		margin: 0,
+		background: "none"
+	};
+	if ( body ) {
+		$.extend( testElementStyle, {
+			position: "absolute",
+			left: "-1000px",
+			top: "-1000px"
+		});
+	}
+	for ( i in testElementStyle ) {
+		testElement.style[ i ] = testElementStyle[ i ];
+	}
+	testElement.appendChild( div );
+	testElementParent = body || document.documentElement;
+	testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+	div.style.cssText = "position: absolute; left: 10.7432222px;";
+
+	offsetLeft = $( div ).offset().left;
+	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
+
+	testElement.innerHTML = "";
+	testElementParent.removeChild( testElement );
+})();
+
+}( jQuery ) );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.progressbar.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.progressbar.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.progressbar.js	(revision 25596)
@@ -0,0 +1,145 @@
+/*!
+ * jQuery UI Progressbar 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/progressbar/
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+$.widget( "ui.progressbar", {
+	version: "1.10.1",
+	options: {
+		max: 100,
+		value: 0,
+
+		change: null,
+		complete: null
+	},
+
+	min: 0,
+
+	_create: function() {
+		// Constrain initial value
+		this.oldValue = this.options.value = this._constrainedValue();
+
+		this.element
+			.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
+			.attr({
+				// Only set static values, aria-valuenow and aria-valuemax are
+				// set inside _refreshValue()
+				role: "progressbar",
+				"aria-valuemin": this.min
+			});
+
+		this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
+			.appendTo( this.element );
+
+		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();
+	},
+
+	value: function( newValue ) {
+		if ( newValue === undefined ) {
+			return this.options.value;
+		}
+
+		this.options.value = this._constrainedValue( newValue );
+		this._refreshValue();
+	},
+
+	_constrainedValue: function( newValue ) {
+		if ( newValue === undefined ) {
+			newValue = this.options.value;
+		}
+
+		this.indeterminate = newValue === false;
+
+		// sanitize value
+		if ( typeof newValue !== "number" ) {
+			newValue = 0;
+		}
+
+		return this.indeterminate ? false :
+			Math.min( this.options.max, Math.max( this.min, newValue ) );
+	},
+
+	_setOptions: function( options ) {
+		// Ensure "value" option is set after other values (like max)
+		var value = options.value;
+		delete options.value;
+
+		this._super( options );
+
+		this.options.value = this._constrainedValue( value );
+		this._refreshValue();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "max" ) {
+			// Don't allow a max less than min
+			value = Math.max( this.min, value );
+		}
+
+		this._super( key, value );
+	},
+
+	_percentage: function() {
+		return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
+	},
+
+	_refreshValue: function() {
+		var value = this.options.value,
+			percentage = this._percentage();
+
+		this.valueDiv
+			.toggle( this.indeterminate || value > this.min )
+			.toggleClass( "ui-corner-right", value === this.options.max )
+			.width( percentage.toFixed(0) + "%" );
+
+		this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
+
+		if ( this.indeterminate ) {
+			this.element.removeAttr( "aria-valuenow" );
+			if ( !this.overlayDiv ) {
+				this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
+			}
+		} else {
+			this.element.attr({
+				"aria-valuemax": this.options.max,
+				"aria-valuenow": value
+			});
+			if ( this.overlayDiv ) {
+				this.overlayDiv.remove();
+				this.overlayDiv = null;
+			}
+		}
+
+		if ( this.oldValue !== value ) {
+			this.oldValue = value;
+			this._trigger( "change" );
+		}
+		if ( value === this.options.max ) {
+			this._trigger( "complete" );
+		}
+	}
+});
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.resizable.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.resizable.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.resizable.js	(revision 25596)
@@ -0,0 +1,968 @@
+/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/resizable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+function num(v) {
+	return parseInt(v, 10) || 0;
+}
+
+function isNumber(value) {
+	return !isNaN(parseInt(value, 10));
+}
+
+$.widget("ui.resizable", $.ui.mouse, {
+	version: "1.10.1",
+	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,
+		// See #7960
+		zIndex: 90,
+
+		// callbacks
+		resize: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		var n, i, handle, axis, hname,
+			that = this,
+			o = this.options;
+		this.element.addClass("ui-resizable");
+
+		$.extend(this, {
+			_aspectRatio: !!(o.aspectRatio),
+			aspectRatio: o.aspectRatio,
+			originalElement: this.element,
+			_proportionallyResizeElements: [],
+			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
+		});
+
+		//Wrap the element if it cannot hold child nodes
+		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
+
+			//Create a wrapper element and set the wrapper to the new current internal element
+			this.element.wrap(
+				$("<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")
+				})
+			);
+
+			//Overwrite the original this.element
+			this.element = this.element.parent().data(
+				"ui-resizable", this.element.data("ui-resizable")
+			);
+
+			this.elementIsWrapper = true;
+
+			//Move margins to the wrapper
+			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});
+
+			//Prevent Safari textarea resize
+			this.originalResizeStyle = this.originalElement.css("resize");
+			this.originalElement.css("resize", "none");
+
+			//Push the actual element to our proportionallyResize internal array
+			this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));
+
+			// avoid IE jump (hard set the margin)
+			this.originalElement.css({ margin: this.originalElement.css("margin") });
+
+			// fix handlers offset
+			this._proportionallyResize();
+
+		}
+
+		this.handles = o.handles || (!$(".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";
+			}
+
+			n = this.handles.split(",");
+			this.handles = {};
+
+			for(i = 0; i < n.length; i++) {
+
+				handle = $.trim(n[i]);
+				hname = "ui-resizable-"+handle;
+				axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
+
+				// Apply zIndex to all handles - see #7960
+				axis.css({ zIndex: o.zIndex });
+
+				//TODO : What's going on here?
+				if ("se" === handle) {
+					axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
+				}
+
+				//Insert into internal handles object and append to element
+				this.handles[handle] = ".ui-resizable-"+handle;
+				this.element.append(axis);
+			}
+
+		}
+
+		this._renderAxis = function(target) {
+
+			var i, axis, padPos, padWrapper;
+
+			target = target || this.element;
+
+			for(i in this.handles) {
+
+				if(this.handles[i].constructor === String) {
+					this.handles[i] = $(this.handles[i], this.element).show();
+				}
+
+				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
+				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
+
+					axis = $(this.handles[i], this.element);
+
+					//Checking the correct pad and border
+					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
+
+					//The padding type i have to apply...
+					padPos = [ "padding",
+						/ne|nw|n/.test(i) ? "Top" :
+						/se|sw|s/.test(i) ? "Bottom" :
+						/^e$/.test(i) ? "Right" : "Left" ].join("");
+
+					target.css(padPos, padWrapper);
+
+					this._proportionallyResize();
+
+				}
+
+				//TODO: What's that good for? There's not anything to be executed left
+				if(!$(this.handles[i]).length) {
+					continue;
+				}
+			}
+		};
+
+		//TODO: make renderAxis a prototype function
+		this._renderAxis(this.element);
+
+		this._handles = $(".ui-resizable-handle", this.element)
+			.disableSelection();
+
+		//Matching axis name
+		this._handles.mouseover(function() {
+			if (!that.resizing) {
+				if (this.className) {
+					axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
+				}
+				//Axis, default = se
+				that.axis = axis && axis[1] ? axis[1] : "se";
+			}
+		});
+
+		//If we want to auto hide the elements
+		if (o.autoHide) {
+			this._handles.hide();
+			$(this.element)
+				.addClass("ui-resizable-autohide")
+				.mouseenter(function() {
+					if (o.disabled) {
+						return;
+					}
+					$(this).removeClass("ui-resizable-autohide");
+					that._handles.show();
+				})
+				.mouseleave(function(){
+					if (o.disabled) {
+						return;
+					}
+					if (!that.resizing) {
+						$(this).addClass("ui-resizable-autohide");
+						that._handles.hide();
+					}
+				});
+		}
+
+		//Initialize the mouse interaction
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+
+		this._mouseDestroy();
+
+		var wrapper,
+			_destroy = function(exp) {
+				$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
+					.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove();
+			};
+
+		//TODO: Unwrap at same DOM position
+		if (this.elementIsWrapper) {
+			_destroy(this.element);
+			wrapper = this.element;
+			this.originalElement.css({
+				position: wrapper.css("position"),
+				width: wrapper.outerWidth(),
+				height: wrapper.outerHeight(),
+				top: wrapper.css("top"),
+				left: wrapper.css("left")
+			}).insertAfter( wrapper );
+			wrapper.remove();
+		}
+
+		this.originalElement.css("resize", this.originalResizeStyle);
+		_destroy(this.originalElement);
+
+		return this;
+	},
+
+	_mouseCapture: function(event) {
+		var i, handle,
+			capture = false;
+
+		for (i in this.handles) {
+			handle = $(this.handles[i])[0];
+			if (handle === event.target || $.contains(handle, event.target)) {
+				capture = true;
+			}
+		}
+
+		return !this.options.disabled && capture;
+	},
+
+	_mouseStart: function(event) {
+
+		var curleft, curtop, cursor,
+			o = this.options,
+			iniPos = this.element.position(),
+			el = this.element;
+
+		this.resizing = true;
+
+		// bugfix for http://dev.jquery.com/ticket/1749
+		if ( (/absolute/).test( el.css("position") ) ) {
+			el.css({ position: "absolute", top: el.css("top"), left: el.css("left") });
+		} else if (el.is(".ui-draggable")) {
+			el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });
+		}
+
+		this._renderProxy();
+
+		curleft = num(this.helper.css("left"));
+		curtop = num(this.helper.css("top"));
+
+		if (o.containment) {
+			curleft += $(o.containment).scrollLeft() || 0;
+			curtop += $(o.containment).scrollTop() || 0;
+		}
+
+		//Store needed variables
+		this.offset = this.helper.offset();
+		this.position = { left: curleft, top: curtop };
+		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalPosition = { left: curleft, top: curtop };
+		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
+		this.originalMousePosition = { left: event.pageX, top: event.pageY };
+
+		//Aspect Ratio
+		this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
+
+		cursor = $(".ui-resizable-" + this.axis).css("cursor");
+		$("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
+
+		el.addClass("ui-resizable-resizing");
+		this._propagate("start", event);
+		return true;
+	},
+
+	_mouseDrag: function(event) {
+
+		//Increase performance, avoid regex
+		var data,
+			el = this.helper, props = {},
+			smp = this.originalMousePosition,
+			a = this.axis,
+			prevTop = this.position.top,
+			prevLeft = this.position.left,
+			prevWidth = this.size.width,
+			prevHeight = this.size.height,
+			dx = (event.pageX-smp.left)||0,
+			dy = (event.pageY-smp.top)||0,
+			trigger = this._change[a];
+
+		if (!trigger) {
+			return false;
+		}
+
+		// Calculate the attrs that will be change
+		data = trigger.apply(this, [event, dx, dy]);
+
+		// Put this in the mouseDrag handler since the user can start pressing shift while resizing
+		this._updateVirtualBoundaries(event.shiftKey);
+		if (this._aspectRatio || event.shiftKey) {
+			data = this._updateRatio(data, event);
+		}
+
+		data = this._respectSize(data, event);
+
+		this._updateCache(data);
+
+		// plugins callbacks need to be called first
+		this._propagate("resize", event);
+
+		if (this.position.top !== prevTop) {
+			props.top = this.position.top + "px";
+		}
+		if (this.position.left !== prevLeft) {
+			props.left = this.position.left + "px";
+		}
+		if (this.size.width !== prevWidth) {
+			props.width = this.size.width + "px";
+		}
+		if (this.size.height !== prevHeight) {
+			props.height = this.size.height + "px";
+		}
+		el.css(props);
+
+		if (!this._helper && this._proportionallyResizeElements.length) {
+			this._proportionallyResize();
+		}
+
+		// Call the user callback if the element was resized
+		if ( ! $.isEmptyObject(props) ) {
+			this._trigger("resize", event, this.ui());
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		this.resizing = false;
+		var pr, ista, soffseth, soffsetw, s, left, top,
+			o = this.options, that = this;
+
+		if(this._helper) {
+
+			pr = this._proportionallyResizeElements;
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName);
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height;
+			soffsetw = ista ? 0 : that.sizeDiff.width;
+
+			s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) };
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null;
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+			if (!o.animate) {
+				this.element.css($.extend(s, { top: top, left: left }));
+			}
+
+			that.helper.height(that.size.height);
+			that.helper.width(that.size.width);
+
+			if (this._helper && !o.animate) {
+				this._proportionallyResize();
+			}
+		}
+
+		$("body").css("cursor", "auto");
+
+		this.element.removeClass("ui-resizable-resizing");
+
+		this._propagate("stop", event);
+
+		if (this._helper) {
+			this.helper.remove();
+		}
+
+		return false;
+
+	},
+
+	_updateVirtualBoundaries: function(forceAspectRatio) {
+		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
+			o = this.options;
+
+		b = {
+			minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
+			maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
+			minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
+			maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
+		};
+
+		if(this._aspectRatio || forceAspectRatio) {
+			// We want to create an enclosing box whose aspect ration is the requested one
+			// First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
+			pMinWidth = b.minHeight * this.aspectRatio;
+			pMinHeight = b.minWidth / this.aspectRatio;
+			pMaxWidth = b.maxHeight * this.aspectRatio;
+			pMaxHeight = b.maxWidth / this.aspectRatio;
+
+			if(pMinWidth > b.minWidth) {
+				b.minWidth = pMinWidth;
+			}
+			if(pMinHeight > b.minHeight) {
+				b.minHeight = pMinHeight;
+			}
+			if(pMaxWidth < b.maxWidth) {
+				b.maxWidth = pMaxWidth;
+			}
+			if(pMaxHeight < b.maxHeight) {
+				b.maxHeight = pMaxHeight;
+			}
+		}
+		this._vBoundaries = b;
+	},
+
+	_updateCache: function(data) {
+		this.offset = this.helper.offset();
+		if (isNumber(data.left)) {
+			this.position.left = data.left;
+		}
+		if (isNumber(data.top)) {
+			this.position.top = data.top;
+		}
+		if (isNumber(data.height)) {
+			this.size.height = data.height;
+		}
+		if (isNumber(data.width)) {
+			this.size.width = data.width;
+		}
+	},
+
+	_updateRatio: function( data ) {
+
+		var cpos = this.position,
+			csize = this.size,
+			a = this.axis;
+
+		if (isNumber(data.height)) {
+			data.width = (data.height * this.aspectRatio);
+		} else if (isNumber(data.width)) {
+			data.height = (data.width / this.aspectRatio);
+		}
+
+		if (a === "sw") {
+			data.left = cpos.left + (csize.width - data.width);
+			data.top = null;
+		}
+		if (a === "nw") {
+			data.top = cpos.top + (csize.height - data.height);
+			data.left = cpos.left + (csize.width - data.width);
+		}
+
+		return data;
+	},
+
+	_respectSize: function( data ) {
+
+		var o = this._vBoundaries,
+			a = this.axis,
+			ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
+			isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
+			dw = this.originalPosition.left + this.originalSize.width,
+			dh = this.position.top + this.size.height,
+			cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
+		if (isminw) {
+			data.width = o.minWidth;
+		}
+		if (isminh) {
+			data.height = o.minHeight;
+		}
+		if (ismaxw) {
+			data.width = o.maxWidth;
+		}
+		if (ismaxh) {
+			data.height = o.maxHeight;
+		}
+
+		if (isminw && cw) {
+			data.left = dw - o.minWidth;
+		}
+		if (ismaxw && cw) {
+			data.left = dw - o.maxWidth;
+		}
+		if (isminh && ch) {
+			data.top = dh - o.minHeight;
+		}
+		if (ismaxh && ch) {
+			data.top = dh - o.maxHeight;
+		}
+
+		// fixing jump error on top/left - bug #2330
+		if (!data.width && !data.height && !data.left && data.top) {
+			data.top = null;
+		} else if (!data.width && !data.height && !data.top && data.left) {
+			data.left = null;
+		}
+
+		return data;
+	},
+
+	_proportionallyResize: function() {
+
+		if (!this._proportionallyResizeElements.length) {
+			return;
+		}
+
+		var i, j, borders, paddings, prel,
+			element = this.helper || this.element;
+
+		for ( i=0; i < this._proportionallyResizeElements.length; i++) {
+
+			prel = this._proportionallyResizeElements[i];
+
+			if (!this.borderDif) {
+				this.borderDif = [];
+				borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")];
+				paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")];
+
+				for ( j = 0; j < borders.length; j++ ) {
+					this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );
+				}
+			}
+
+			prel.css({
+				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
+				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
+			});
+
+		}
+
+	},
+
+	_renderProxy: function() {
+
+		var el = this.element, o = this.options;
+		this.elementOffset = el.offset();
+
+		if(this._helper) {
+
+			this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
+
+			this.helper.addClass(this._helper).css({
+				width: this.element.outerWidth() - 1,
+				height: this.element.outerHeight() - 1,
+				position: "absolute",
+				left: this.elementOffset.left +"px",
+				top: this.elementOffset.top +"px",
+				zIndex: ++o.zIndex //TODO: Don't modify option
+			});
+
+			this.helper
+				.appendTo("body")
+				.disableSelection();
+
+		} else {
+			this.helper = this.element;
+		}
+
+	},
+
+	_change: {
+		e: function(event, dx) {
+			return { width: this.originalSize.width + dx };
+		},
+		w: function(event, dx) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { left: sp.left + dx, width: cs.width - dx };
+		},
+		n: function(event, dx, dy) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { top: sp.top + dy, height: cs.height - dy };
+		},
+		s: function(event, dx, dy) {
+			return { height: this.originalSize.height + dy };
+		},
+		se: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		sw: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		},
+		ne: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		nw: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		}
+	},
+
+	_propagate: function(n, event) {
+		$.ui.plugin.call(this, n, [event, this.ui()]);
+		(n !== "resize" && this._trigger(n, event, 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
+		};
+	}
+
+});
+
+/*
+ * Resizable Extensions
+ */
+
+$.ui.plugin.add("resizable", "animate", {
+
+	stop: function( event ) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			pr = that._proportionallyResizeElements,
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName),
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height,
+			soffsetw = ista ? 0 : that.sizeDiff.width,
+			style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null,
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+		that.element.animate(
+			$.extend(style, top && left ? { top: top, left: left } : {}), {
+				duration: o.animateDuration,
+				easing: o.animateEasing,
+				step: function() {
+
+					var data = {
+						width: parseInt(that.element.css("width"), 10),
+						height: parseInt(that.element.css("height"), 10),
+						top: parseInt(that.element.css("top"), 10),
+						left: parseInt(that.element.css("left"), 10)
+					};
+
+					if (pr && pr.length) {
+						$(pr[0]).css({ width: data.width, height: data.height });
+					}
+
+					// propagating resize, and updating values for each animation step
+					that._updateCache(data);
+					that._propagate("resize", event);
+
+				}
+			}
+		);
+	}
+
+});
+
+$.ui.plugin.add("resizable", "containment", {
+
+	start: function() {
+		var element, p, co, ch, cw, width, height,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			el = that.element,
+			oc = o.containment,
+			ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
+
+		if (!ce) {
+			return;
+		}
+
+		that.containerElement = $(ce);
+
+		if (/document/.test(oc) || oc === document) {
+			that.containerOffset = { left: 0, top: 0 };
+			that.containerPosition = { left: 0, top: 0 };
+
+			that.parentData = {
+				element: $(document), left: 0, top: 0,
+				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
+			};
+		}
+
+		// i'm a node, so compute top, left, right, bottom
+		else {
+			element = $(ce);
+			p = [];
+			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
+
+			that.containerOffset = element.offset();
+			that.containerPosition = element.position();
+			that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
+
+			co = that.containerOffset;
+			ch = that.containerSize.height;
+			cw = that.containerSize.width;
+			width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw );
+			height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
+
+			that.parentData = {
+				element: ce, left: co.left, top: co.top, width: width, height: height
+			};
+		}
+	},
+
+	resize: function( event ) {
+		var woset, hoset, isParent, isOffsetRelative,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset, cp = that.position,
+			pRatio = that._aspectRatio || event.shiftKey,
+			cop = { top:0, left:0 }, ce = that.containerElement;
+
+		if (ce[0] !== document && (/static/).test(ce.css("position"))) {
+			cop = co;
+		}
+
+		if (cp.left < (that._helper ? co.left : 0)) {
+			that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+			that.position.left = o.helper ? co.left : 0;
+		}
+
+		if (cp.top < (that._helper ? co.top : 0)) {
+			that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+			that.position.top = that._helper ? co.top : 0;
+		}
+
+		that.offset.left = that.parentData.left+that.position.left;
+		that.offset.top = that.parentData.top+that.position.top;
+
+		woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width );
+		hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );
+
+		isParent = that.containerElement.get(0) === that.element.parent().get(0);
+		isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position"));
+
+		if(isParent && isOffsetRelative) {
+			woset -= that.parentData.left;
+		}
+
+		if (woset + that.size.width >= that.parentData.width) {
+			that.size.width = that.parentData.width - woset;
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+		}
+
+		if (hoset + that.size.height >= that.parentData.height) {
+			that.size.height = that.parentData.height - hoset;
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+		}
+	},
+
+	stop: function(){
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset,
+			cop = that.containerPosition,
+			ce = that.containerElement,
+			helper = $(that.helper),
+			ho = helper.offset(),
+			w = helper.outerWidth() - that.sizeDiff.width,
+			h = helper.outerHeight() - that.sizeDiff.height;
+
+		if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+		if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+	}
+});
+
+$.ui.plugin.add("resizable", "alsoResize", {
+
+	start: function () {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			_store = function (exp) {
+				$(exp).each(function() {
+					var el = $(this);
+					el.data("ui-resizable-alsoresize", {
+						width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
+						left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
+					});
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
+			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
+			else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
+		}else{
+			_store(o.alsoResize);
+		}
+	},
+
+	resize: function (event, ui) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			os = that.originalSize,
+			op = that.originalPosition,
+			delta = {
+				height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,
+				top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0
+			},
+
+			_alsoResize = function (exp, c) {
+				$(exp).each(function() {
+					var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
+						css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
+
+					$.each(css, function (i, prop) {
+						var sum = (start[prop]||0) + (delta[prop]||0);
+						if (sum && sum >= 0) {
+							style[prop] = sum || null;
+						}
+					});
+
+					el.css(style);
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
+			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
+		}else{
+			_alsoResize(o.alsoResize);
+		}
+	},
+
+	stop: function () {
+		$(this).removeData("resizable-alsoresize");
+	}
+});
+
+$.ui.plugin.add("resizable", "ghost", {
+
+	start: function() {
+
+		var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;
+
+		that.ghost = that.originalElement.clone();
+		that.ghost
+			.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
+			.addClass("ui-resizable-ghost")
+			.addClass(typeof o.ghost === "string" ? o.ghost : "");
+
+		that.ghost.appendTo(that.helper);
+
+	},
+
+	resize: function(){
+		var that = $(this).data("ui-resizable");
+		if (that.ghost) {
+			that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width });
+		}
+	},
+
+	stop: function() {
+		var that = $(this).data("ui-resizable");
+		if (that.ghost && that.helper) {
+			that.helper.get(0).removeChild(that.ghost.get(0));
+		}
+	}
+
+});
+
+$.ui.plugin.add("resizable", "grid", {
+
+	resize: function() {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			cs = that.size,
+			os = that.originalSize,
+			op = that.originalPosition,
+			a = that.axis,
+			grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid,
+			gridX = (grid[0]||1),
+			gridY = (grid[1]||1),
+			ox = Math.round((cs.width - os.width) / gridX) * gridX,
+			oy = Math.round((cs.height - os.height) / gridY) * gridY,
+			newWidth = os.width + ox,
+			newHeight = os.height + oy,
+			isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
+			isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
+			isMinWidth = o.minWidth && (o.minWidth > newWidth),
+			isMinHeight = o.minHeight && (o.minHeight > newHeight);
+
+		o.grid = grid;
+
+		if (isMinWidth) {
+			newWidth = newWidth + gridX;
+		}
+		if (isMinHeight) {
+			newHeight = newHeight + gridY;
+		}
+		if (isMaxWidth) {
+			newWidth = newWidth - gridX;
+		}
+		if (isMaxHeight) {
+			newHeight = newHeight - gridY;
+		}
+
+		if (/^(se|s|e)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+		} else if (/^(ne)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+		} else if (/^(sw)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.left = op.left - ox;
+		} else {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+			that.position.left = op.left - ox;
+		}
+	}
+
+});
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.selectable.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.selectable.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.selectable.js	(revision 25596)
@@ -0,0 +1,277 @@
+/*!
+ * jQuery UI Selectable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/selectable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+$.widget("ui.selectable", $.ui.mouse, {
+	version: "1.10.1",
+	options: {
+		appendTo: "body",
+		autoRefresh: true,
+		distance: 0,
+		filter: "*",
+		tolerance: "touch",
+
+		// callbacks
+		selected: null,
+		selecting: null,
+		start: null,
+		stop: null,
+		unselected: null,
+		unselecting: null
+	},
+	_create: function() {
+		var selectees,
+			that = this;
+
+		this.element.addClass("ui-selectable");
+
+		this.dragged = false;
+
+		// cache selectee children based on filter
+		this.refresh = function() {
+			selectees = $(that.options.filter, that.element[0]);
+			selectees.addClass("ui-selectee");
+			selectees.each(function() {
+				var $this = $(this),
+					pos = $this.offset();
+				$.data(this, "selectable-item", {
+					element: this,
+					$element: $this,
+					left: pos.left,
+					top: pos.top,
+					right: pos.left + $this.outerWidth(),
+					bottom: pos.top + $this.outerHeight(),
+					startselected: false,
+					selected: $this.hasClass("ui-selected"),
+					selecting: $this.hasClass("ui-selecting"),
+					unselecting: $this.hasClass("ui-unselecting")
+				});
+			});
+		};
+		this.refresh();
+
+		this.selectees = selectees.addClass("ui-selectee");
+
+		this._mouseInit();
+
+		this.helper = $("<div class='ui-selectable-helper'></div>");
+	},
+
+	_destroy: function() {
+		this.selectees
+			.removeClass("ui-selectee")
+			.removeData("selectable-item");
+		this.element
+			.removeClass("ui-selectable ui-selectable-disabled");
+		this._mouseDestroy();
+	},
+
+	_mouseStart: function(event) {
+		var that = this,
+			options = this.options;
+
+		this.opos = [event.pageX, event.pageY];
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		this.selectees = $(options.filter, this.element[0]);
+
+		this._trigger("start", event);
+
+		$(options.appendTo).append(this.helper);
+		// position helper (lasso)
+		this.helper.css({
+			"left": event.pageX,
+			"top": event.pageY,
+			"width": 0,
+			"height": 0
+		});
+
+		if (options.autoRefresh) {
+			this.refresh();
+		}
+
+		this.selectees.filter(".ui-selected").each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.startselected = true;
+			if (!event.metaKey && !event.ctrlKey) {
+				selectee.$element.removeClass("ui-selected");
+				selectee.selected = false;
+				selectee.$element.addClass("ui-unselecting");
+				selectee.unselecting = true;
+				// selectable UNSELECTING callback
+				that._trigger("unselecting", event, {
+					unselecting: selectee.element
+				});
+			}
+		});
+
+		$(event.target).parents().addBack().each(function() {
+			var doSelect,
+				selectee = $.data(this, "selectable-item");
+			if (selectee) {
+				doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
+				selectee.$element
+					.removeClass(doSelect ? "ui-unselecting" : "ui-selected")
+					.addClass(doSelect ? "ui-selecting" : "ui-unselecting");
+				selectee.unselecting = !doSelect;
+				selectee.selecting = doSelect;
+				selectee.selected = doSelect;
+				// selectable (UN)SELECTING callback
+				if (doSelect) {
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				} else {
+					that._trigger("unselecting", event, {
+						unselecting: selectee.element
+					});
+				}
+				return false;
+			}
+		});
+
+	},
+
+	_mouseDrag: function(event) {
+
+		this.dragged = true;
+
+		if (this.options.disabled) {
+			return;
+		}
+
+		var tmp,
+			that = this,
+			options = this.options,
+			x1 = this.opos[0],
+			y1 = this.opos[1],
+			x2 = event.pageX,
+			y2 = event.pageY;
+
+		if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
+		if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
+		this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
+
+		this.selectees.each(function() {
+			var selectee = $.data(this, "selectable-item"),
+				hit = false;
+
+			//prevent helper from being selected if appendTo: selectable
+			if (!selectee || selectee.element === that.element[0]) {
+				return;
+			}
+
+			if (options.tolerance === "touch") {
+				hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
+			} else if (options.tolerance === "fit") {
+				hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
+			}
+
+			if (hit) {
+				// SELECT
+				if (selectee.selected) {
+					selectee.$element.removeClass("ui-selected");
+					selectee.selected = false;
+				}
+				if (selectee.unselecting) {
+					selectee.$element.removeClass("ui-unselecting");
+					selectee.unselecting = false;
+				}
+				if (!selectee.selecting) {
+					selectee.$element.addClass("ui-selecting");
+					selectee.selecting = true;
+					// selectable SELECTING callback
+					that._trigger("selecting", event, {
+						selecting: selectee.element
+					});
+				}
+			} else {
+				// UNSELECT
+				if (selectee.selecting) {
+					if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						selectee.$element.addClass("ui-selected");
+						selectee.selected = true;
+					} else {
+						selectee.$element.removeClass("ui-selecting");
+						selectee.selecting = false;
+						if (selectee.startselected) {
+							selectee.$element.addClass("ui-unselecting");
+							selectee.unselecting = true;
+						}
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+				if (selectee.selected) {
+					if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
+						selectee.$element.removeClass("ui-selected");
+						selectee.selected = false;
+
+						selectee.$element.addClass("ui-unselecting");
+						selectee.unselecting = true;
+						// selectable UNSELECTING callback
+						that._trigger("unselecting", event, {
+							unselecting: selectee.element
+						});
+					}
+				}
+			}
+		});
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+		var that = this;
+
+		this.dragged = false;
+
+		$(".ui-unselecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-unselecting");
+			selectee.unselecting = false;
+			selectee.startselected = false;
+			that._trigger("unselected", event, {
+				unselected: selectee.element
+			});
+		});
+		$(".ui-selecting", this.element[0]).each(function() {
+			var selectee = $.data(this, "selectable-item");
+			selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
+			selectee.selecting = false;
+			selectee.selected = true;
+			selectee.startselected = true;
+			that._trigger("selected", event, {
+				selected: selectee.element
+			});
+		});
+		this._trigger("stop", event);
+
+		this.helper.remove();
+
+		return false;
+	}
+
+});
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.slider.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.slider.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.slider.js	(revision 25596)
@@ -0,0 +1,672 @@
+/*!
+ * jQuery UI Slider 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/slider/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+// number of pages in a slider
+// (how many times can you page up/down to go through the whole range)
+var numPages = 5;
+
+$.widget( "ui.slider", $.ui.mouse, {
+	version: "1.10.1",
+	widgetEventPrefix: "slide",
+
+	options: {
+		animate: false,
+		distance: 0,
+		max: 100,
+		min: 0,
+		orientation: "horizontal",
+		range: false,
+		step: 1,
+		value: 0,
+		values: null,
+
+		// callbacks
+		change: null,
+		slide: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		this._keySliding = false;
+		this._mouseSliding = 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");
+
+		this._refresh();
+		this._setOption( "disabled", this.options.disabled );
+
+		this._animateOff = false;
+	},
+
+	_refresh: function() {
+		this._createRange();
+		this._createHandles();
+		this._setupEvents();
+		this._refreshValue();
+	},
+
+	_createHandles: function() {
+		var i, handleCount,
+			options = this.options,
+			existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
+			handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",
+			handles = [];
+
+		handleCount = ( options.values && options.values.length ) || 1;
+
+		if ( existingHandles.length > handleCount ) {
+			existingHandles.slice( handleCount ).remove();
+			existingHandles = existingHandles.slice( 0, handleCount );
+		}
+
+		for ( i = existingHandles.length; i < handleCount; i++ ) {
+			handles.push( handle );
+		}
+
+		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
+
+		this.handle = this.handles.eq( 0 );
+
+		this.handles.each(function( i ) {
+			$( this ).data( "ui-slider-handle-index", i );
+		});
+	},
+
+	_createRange: function() {
+		var options = this.options,
+			classes = "";
+
+		if ( options.range ) {
+			if ( options.range === true ) {
+				if ( !options.values ) {
+					options.values = [ this._valueMin(), this._valueMin() ];
+				} else if ( options.values.length && options.values.length !== 2 ) {
+					options.values = [ options.values[0], options.values[0] ];
+				} else if ( $.isArray( options.values ) ) {
+					options.values = options.values.slice(0);
+				}
+			}
+
+			if ( !this.range || !this.range.length ) {
+				this.range = $( "<div></div>" )
+					.appendTo( this.element );
+
+				classes = "ui-slider-range" +
+				// note: this isn't the most fittingly semantic framework class for this element,
+				// but worked best visually with a variety of themes
+				" ui-widget-header ui-corner-all";
+			} else {
+				this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
+					// Handle range switching from true to min/max
+					.css({
+						"left": "",
+						"bottom": ""
+					});
+			}
+
+			this.range.addClass( classes +
+				( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
+		} else {
+			this.range = $([]);
+		}
+	},
+
+	_setupEvents: function() {
+		var elements = this.handles.add( this.range ).filter( "a" );
+		this._off( elements );
+		this._on( elements, this._handleEvents );
+		this._hoverable( elements );
+		this._focusable( elements );
+	},
+
+	_destroy: function() {
+		this.handles.remove();
+		this.range.remove();
+
+		this.element
+			.removeClass( "ui-slider" +
+				" ui-slider-horizontal" +
+				" ui-slider-vertical" +
+				" ui-widget" +
+				" ui-widget-content" +
+				" ui-corner-all" );
+
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function( event ) {
+		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
+			that = this,
+			o = this.options;
+
+		if ( o.disabled ) {
+			return false;
+		}
+
+		this.elementSize = {
+			width: this.element.outerWidth(),
+			height: this.element.outerHeight()
+		};
+		this.elementOffset = this.element.offset();
+
+		position = { x: event.pageX, y: event.pageY };
+		normValue = this._normValueFromMouse( position );
+		distance = this._valueMax() - this._valueMin() + 1;
+		this.handles.each(function( i ) {
+			var thisDistance = Math.abs( normValue - that.values(i) );
+			if (( distance > thisDistance ) ||
+				( distance === thisDistance &&
+					(i === that._lastChangedValue || that.values(i) === o.min ))) {
+				distance = thisDistance;
+				closestHandle = $( this );
+				index = i;
+			}
+		});
+
+		allowed = this._start( event, index );
+		if ( allowed === false ) {
+			return false;
+		}
+		this._mouseSliding = true;
+
+		this._handleIndex = index;
+
+		closestHandle
+			.addClass( "ui-state-active" )
+			.focus();
+
+		offset = closestHandle.offset();
+		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
+		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
+			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
+			top: event.pageY - offset.top -
+				( closestHandle.height() / 2 ) -
+				( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
+				( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
+				( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
+		};
+
+		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
+			this._slide( event, index, normValue );
+		}
+		this._animateOff = true;
+		return true;
+	},
+
+	_mouseStart: function() {
+		return true;
+	},
+
+	_mouseDrag: function( event ) {
+		var position = { x: event.pageX, y: event.pageY },
+			normValue = this._normValueFromMouse( position );
+
+		this._slide( event, this._handleIndex, normValue );
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+		this.handles.removeClass( "ui-state-active" );
+		this._mouseSliding = false;
+
+		this._stop( event, this._handleIndex );
+		this._change( event, this._handleIndex );
+
+		this._handleIndex = null;
+		this._clickOffset = null;
+		this._animateOff = false;
+
+		return false;
+	},
+
+	_detectOrientation: function() {
+		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
+	},
+
+	_normValueFromMouse: function( position ) {
+		var pixelTotal,
+			pixelMouse,
+			percentMouse,
+			valueTotal,
+			valueMouse;
+
+		if ( this.orientation === "horizontal" ) {
+			pixelTotal = this.elementSize.width;
+			pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
+		} else {
+			pixelTotal = this.elementSize.height;
+			pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
+		}
+
+		percentMouse = ( pixelMouse / pixelTotal );
+		if ( percentMouse > 1 ) {
+			percentMouse = 1;
+		}
+		if ( percentMouse < 0 ) {
+			percentMouse = 0;
+		}
+		if ( this.orientation === "vertical" ) {
+			percentMouse = 1 - percentMouse;
+		}
+
+		valueTotal = this._valueMax() - this._valueMin();
+		valueMouse = this._valueMin() + percentMouse * valueTotal;
+
+		return this._trimAlignValue( valueMouse );
+	},
+
+	_start: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+		return this._trigger( "start", event, uiHash );
+	},
+
+	_slide: function( event, index, newVal ) {
+		var otherVal,
+			newValues,
+			allowed;
+
+		if ( this.options.values && this.options.values.length ) {
+			otherVal = this.values( index ? 0 : 1 );
+
+			if ( ( this.options.values.length === 2 && this.options.range === true ) &&
+					( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
+				) {
+				newVal = otherVal;
+			}
+
+			if ( newVal !== this.values( index ) ) {
+				newValues = this.values();
+				newValues[ index ] = newVal;
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal,
+					values: newValues
+				} );
+				otherVal = this.values( index ? 0 : 1 );
+				if ( allowed !== false ) {
+					this.values( index, newVal, true );
+				}
+			}
+		} else {
+			if ( newVal !== this.value() ) {
+				// A slide can be canceled by returning false from the slide callback
+				allowed = this._trigger( "slide", event, {
+					handle: this.handles[ index ],
+					value: newVal
+				} );
+				if ( allowed !== false ) {
+					this.value( newVal );
+				}
+			}
+		}
+	},
+
+	_stop: function( event, index ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			value: this.value()
+		};
+		if ( this.options.values && this.options.values.length ) {
+			uiHash.value = this.values( index );
+			uiHash.values = this.values();
+		}
+
+		this._trigger( "stop", event, uiHash );
+	},
+
+	_change: function( event, index ) {
+		if ( !this._keySliding && !this._mouseSliding ) {
+			var uiHash = {
+				handle: this.handles[ index ],
+				value: this.value()
+			};
+			if ( this.options.values && this.options.values.length ) {
+				uiHash.value = this.values( index );
+				uiHash.values = this.values();
+			}
+
+			//store the last changed value index for reference when handles overlap
+			this._lastChangedValue = index;
+
+			this._trigger( "change", event, uiHash );
+		}
+	},
+
+	value: function( newValue ) {
+		if ( arguments.length ) {
+			this.options.value = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, 0 );
+			return;
+		}
+
+		return this._value();
+	},
+
+	values: function( index, newValue ) {
+		var vals,
+			newValues,
+			i;
+
+		if ( arguments.length > 1 ) {
+			this.options.values[ index ] = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, index );
+			return;
+		}
+
+		if ( arguments.length ) {
+			if ( $.isArray( arguments[ 0 ] ) ) {
+				vals = this.options.values;
+				newValues = arguments[ 0 ];
+				for ( i = 0; i < vals.length; i += 1 ) {
+					vals[ i ] = this._trimAlignValue( newValues[ i ] );
+					this._change( null, i );
+				}
+				this._refreshValue();
+			} else {
+				if ( this.options.values && this.options.values.length ) {
+					return this._values( index );
+				} else {
+					return this.value();
+				}
+			}
+		} else {
+			return this._values();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var i,
+			valsLength = 0;
+
+		if ( key === "range" && this.options.range === true ) {
+			if ( value === "min" ) {
+				this.options.value = this._values( 0 );
+				this.options.values = null;
+			} else if ( value === "max" ) {
+				this.options.value = this._values( this.options.values.length-1 );
+				this.options.values = null;
+			}
+		}
+
+		if ( $.isArray( this.options.values ) ) {
+			valsLength = this.options.values.length;
+		}
+
+		$.Widget.prototype._setOption.apply( this, arguments );
+
+		switch ( key ) {
+			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 ( i = 0; i < valsLength; i += 1 ) {
+					this._change( null, i );
+				}
+				this._animateOff = false;
+				break;
+			case "min":
+			case "max":
+				this._animateOff = true;
+				this._refreshValue();
+				this._animateOff = false;
+				break;
+			case "range":
+				this._animateOff = true;
+				this._refresh();
+				this._animateOff = false;
+				break;
+		}
+	},
+
+	//internal value getter
+	// _value() returns value trimmed by min and max, aligned by step
+	_value: function() {
+		var val = this.options.value;
+		val = this._trimAlignValue( val );
+
+		return val;
+	},
+
+	//internal values getter
+	// _values() returns array of values trimmed by min and max, aligned by step
+	// _values( index ) returns single value trimmed by min and max, aligned by step
+	_values: function( index ) {
+		var val,
+			vals,
+			i;
+
+		if ( arguments.length ) {
+			val = this.options.values[ index ];
+			val = this._trimAlignValue( val );
+
+			return val;
+		} else if ( this.options.values && this.options.values.length ) {
+			// .slice() creates a copy of the array
+			// this copy gets trimmed by min and max and then returned
+			vals = this.options.values.slice();
+			for ( i = 0; i < vals.length; i+= 1) {
+				vals[ i ] = this._trimAlignValue( vals[ i ] );
+			}
+
+			return vals;
+		} else {
+			return [];
+		}
+	},
+
+	// returns the step-aligned value that val is closest to, between (inclusive) min and max
+	_trimAlignValue: function( val ) {
+		if ( val <= this._valueMin() ) {
+			return this._valueMin();
+		}
+		if ( val >= this._valueMax() ) {
+			return this._valueMax();
+		}
+		var step = ( this.options.step > 0 ) ? this.options.step : 1,
+			valModStep = (val - this._valueMin()) % step,
+			alignValue = val - valModStep;
+
+		if ( Math.abs(valModStep) * 2 >= step ) {
+			alignValue += ( valModStep > 0 ) ? step : ( -step );
+		}
+
+		// Since JavaScript has problems with large floats, round
+		// the final value to 5 digits after the decimal point (see #4124)
+		return parseFloat( alignValue.toFixed(5) );
+	},
+
+	_valueMin: function() {
+		return this.options.min;
+	},
+
+	_valueMax: function() {
+		return this.options.max;
+	},
+
+	_refreshValue: function() {
+		var lastValPercent, valPercent, value, valueMin, valueMax,
+			oRange = this.options.range,
+			o = this.options,
+			that = this,
+			animate = ( !this._animateOff ) ? o.animate : false,
+			_set = {};
+
+		if ( this.options.values && this.options.values.length ) {
+			this.handles.each(function( i ) {
+				valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
+				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+				if ( that.options.range === true ) {
+					if ( that.orientation === "horizontal" ) {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					} else {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
+						}
+					}
+				}
+				lastValPercent = valPercent;
+			});
+		} else {
+			value = this.value();
+			valueMin = this._valueMin();
+			valueMax = this._valueMax();
+			valPercent = ( valueMax !== valueMin ) ?
+					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
+					0;
+			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+
+			if ( oRange === "min" && this.orientation === "horizontal" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "horizontal" ) {
+				this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+			if ( oRange === "min" && this.orientation === "vertical" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "vertical" ) {
+				this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
+			}
+		}
+	},
+
+	_handleEvents: {
+		keydown: function( event ) {
+			/*jshint maxcomplexity:25*/
+			var allowed, curVal, newVal, step,
+				index = $( event.target ).data( "ui-slider-handle-index" );
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+				case $.ui.keyCode.END:
+				case $.ui.keyCode.PAGE_UP:
+				case $.ui.keyCode.PAGE_DOWN:
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					event.preventDefault();
+					if ( !this._keySliding ) {
+						this._keySliding = true;
+						$( event.target ).addClass( "ui-state-active" );
+						allowed = this._start( event, index );
+						if ( allowed === false ) {
+							return;
+						}
+					}
+					break;
+			}
+
+			step = this.options.step;
+			if ( this.options.values && this.options.values.length ) {
+				curVal = newVal = this.values( index );
+			} else {
+				curVal = newVal = this.value();
+			}
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+					newVal = this._valueMin();
+					break;
+				case $.ui.keyCode.END:
+					newVal = this._valueMax();
+					break;
+				case $.ui.keyCode.PAGE_UP:
+					newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.PAGE_DOWN:
+					newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );
+					break;
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+					if ( curVal === this._valueMax() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal + step );
+					break;
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					if ( curVal === this._valueMin() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal - step );
+					break;
+			}
+
+			this._slide( event, index, newVal );
+		},
+		click: function( event ) {
+			event.preventDefault();
+		},
+		keyup: function( event ) {
+			var index = $( event.target ).data( "ui-slider-handle-index" );
+
+			if ( this._keySliding ) {
+				this._keySliding = false;
+				this._stop( event, index );
+				this._change( event, index );
+				$( event.target ).removeClass( "ui-state-active" );
+			}
+		}
+	}
+
+});
+
+}(jQuery));
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.sortable.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.sortable.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.sortable.js	(revision 25596)
@@ -0,0 +1,1250 @@
+/*!
+ * jQuery UI Sortable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/sortable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+/*jshint loopfunc: true */
+
+function isOverAxis( x, reference, size ) {
+	return ( x > reference ) && ( x < ( reference + size ) );
+}
+
+$.widget("ui.sortable", $.ui.mouse, {
+	version: "1.10.1",
+	widgetEventPrefix: "sort",
+	ready: false,
+	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: 1000,
+
+		// callbacks
+		activate: null,
+		beforeStop: null,
+		change: null,
+		deactivate: null,
+		out: null,
+		over: null,
+		receive: null,
+		remove: null,
+		sort: null,
+		start: null,
+		stop: null,
+		update: null
+	},
+	_create: function() {
+
+		var o = this.options;
+		this.containerCache = {};
+		this.element.addClass("ui-sortable");
+
+		//Get the items
+		this.refresh();
+
+		//Let's determine if the items are being displayed horizontally
+		this.floating = this.items.length ? o.axis === "x" || (/left|right/).test(this.items[0].item.css("float")) || (/inline|table-cell/).test(this.items[0].item.css("display")) : false;
+
+		//Let's determine the parent's offset
+		this.offset = this.element.offset();
+
+		//Initialize mouse events for interaction
+		this._mouseInit();
+
+		//We're ready to go
+		this.ready = true;
+
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass("ui-sortable ui-sortable-disabled");
+		this._mouseDestroy();
+
+		for ( var i = this.items.length - 1; i >= 0; i-- ) {
+			this.items[i].item.removeData(this.widgetName + "-item");
+		}
+
+		return this;
+	},
+
+	_setOption: function(key, value){
+		if ( key === "disabled" ) {
+			this.options[ key ] = value;
+
+			this.widget().toggleClass( "ui-sortable-disabled", !!value );
+		} else {
+			// Don't call widget base _setOption for disable as it adds ui-state-disabled class
+			$.Widget.prototype._setOption.apply(this, arguments);
+		}
+	},
+
+	_mouseCapture: function(event, overrideHandle) {
+		var currentItem = null,
+			validHandle = false,
+			that = this;
+
+		if (this.reverting) {
+			return false;
+		}
+
+		if(this.options.disabled || this.options.type === "static") {
+			return false;
+		}
+
+		//We have to refresh the items data once first
+		this._refreshItems(event);
+
+		//Find out if the clicked node (or one of its parents) is a actual item in this.items
+		$(event.target).parents().each(function() {
+			if($.data(this, that.widgetName + "-item") === that) {
+				currentItem = $(this);
+				return false;
+			}
+		});
+		if($.data(event.target, that.widgetName + "-item") === that) {
+			currentItem = $(event.target);
+		}
+
+		if(!currentItem) {
+			return false;
+		}
+		if(this.options.handle && !overrideHandle) {
+			$(this.options.handle, currentItem).find("*").addBack().each(function() {
+				if(this === event.target) {
+					validHandle = true;
+				}
+			});
+			if(!validHandle) {
+				return false;
+			}
+		}
+
+		this.currentItem = currentItem;
+		this._removeCurrentsFromItems();
+		return true;
+
+	},
+
+	_mouseStart: function(event, overrideHandle, noActivation) {
+
+		var i,
+			o = this.options;
+
+		this.currentContainer = this;
+
+		//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
+		this.refreshPositions();
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Get the next scrolling parent
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.currentItem.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		// Only after we got the offset, we can change the helper's position to absolute
+		// TODO: Still need to figure out a way to make relative sorting possible
+		this.helper.css("position", "absolute");
+		this.cssPosition = this.helper.css("position");
+
+		//Generate the original position
+		this.originalPosition = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Cache the former DOM position
+		this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
+
+		//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.currentItem.hide();
+		}
+
+		//Create the placeholder
+		this._createPlaceholder();
+
+		//Set a containment if given in the options
+		if(o.containment) {
+			this._setContainment();
+		}
+
+		if(o.cursor) { // cursor option
+			if ($("body").css("cursor")) {
+				this._storedCursor = $("body").css("cursor");
+			}
+			$("body").css("cursor", o.cursor);
+		}
+
+		if(o.opacity) { // opacity option
+			if (this.helper.css("opacity")) {
+				this._storedOpacity = this.helper.css("opacity");
+			}
+			this.helper.css("opacity", o.opacity);
+		}
+
+		if(o.zIndex) { // zIndex option
+			if (this.helper.css("zIndex")) {
+				this._storedZIndex = this.helper.css("zIndex");
+			}
+			this.helper.css("zIndex", o.zIndex);
+		}
+
+		//Prepare scrolling
+		if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+			this.overflowOffset = this.scrollParent.offset();
+		}
+
+		//Call callbacks
+		this._trigger("start", event, this._uiHash());
+
+		//Recache the helper size
+		if(!this._preserveHelperProportions) {
+			this._cacheHelperProportions();
+		}
+
+
+		//Post "activate" events to possible containers
+		if( !noActivation ) {
+			for ( i = this.containers.length - 1; i >= 0; i-- ) {
+				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
+			}
+		}
+
+		//Prepare possible droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+		this.dragging = true;
+
+		this.helper.addClass("ui-sortable-helper");
+		this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+		return true;
+
+	},
+
+	_mouseDrag: function(event) {
+		var i, item, itemElement, intersection,
+			o = this.options,
+			scrolled = false;
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		if (!this.lastPositionAbs) {
+			this.lastPositionAbs = this.positionAbs;
+		}
+
+		//Do scrolling
+		if(this.options.scroll) {
+			if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
+
+				if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
+					this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+
+				if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
+					this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+
+			} else {
+
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+
+			}
+
+			if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+				$.ui.ddmanager.prepareOffsets(this, event);
+			}
+		}
+
+		//Regenerate the absolute position used for position checks
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Set the helper 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";
+		}
+
+		//Rearrange
+		for (i = this.items.length - 1; i >= 0; i--) {
+
+			//Cache variables and intersection, continue if no intersection
+			item = this.items[i];
+			itemElement = item.item[0];
+			intersection = this._intersectsWithPointer(item);
+			if (!intersection) {
+				continue;
+			}
+
+			// Only put the placeholder inside the current Container, skip all
+			// items form other containers. This works because when moving
+			// an item from one container to another the
+			// currentContainer is switched before the placeholder is moved.
+			//
+			// Without this moving items in "sub-sortables" can cause the placeholder to jitter
+			// beetween the outer and inner container.
+			if (item.instance !== this.currentContainer) {
+				continue;
+			}
+
+			// cannot intersect with itself
+			// no useless actions that have been done before
+			// no action if the item moved is the parent of the item checked
+			if (itemElement !== this.currentItem[0] &&
+				this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
+				!$.contains(this.placeholder[0], itemElement) &&
+				(this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
+			) {
+
+				this.direction = intersection === 1 ? "down" : "up";
+
+				if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
+					this._rearrange(event, item);
+				} else {
+					break;
+				}
+
+				this._trigger("change", event, this._uiHash());
+				break;
+			}
+		}
+
+		//Post events to containers
+		this._contactContainers(event);
+
+		//Interconnect with droppables
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		//Call callbacks
+		this._trigger("sort", event, this._uiHash());
+
+		this.lastPositionAbs = this.positionAbs;
+		return false;
+
+	},
+
+	_mouseStop: function(event, noPropagation) {
+
+		if(!event) {
+			return;
+		}
+
+		//If we are using droppables, inform the manager about the drop
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			$.ui.ddmanager.drop(this, event);
+		}
+
+		if(this.options.revert) {
+			var that = this,
+				cur = this.placeholder.offset();
+
+			this.reverting = true;
+
+			$(this.helper).animate({
+				left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft),
+				top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop)
+			}, parseInt(this.options.revert, 10) || 500, function() {
+				that._clear(event);
+			});
+		} else {
+			this._clear(event, noPropagation);
+		}
+
+		return false;
+
+	},
+
+	cancel: function() {
+
+		if(this.dragging) {
+
+			this._mouseUp({ target: null });
+
+			if(this.options.helper === "original") {
+				this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+			} else {
+				this.currentItem.show();
+			}
+
+			//Post deactivating events to containers
+			for (var i = this.containers.length - 1; i >= 0; i--){
+				this.containers[i]._trigger("deactivate", null, this._uiHash(this));
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", null, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		if (this.placeholder) {
+			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+			if(this.placeholder[0].parentNode) {
+				this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+			}
+			if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
+				this.helper.remove();
+			}
+
+			$.extend(this, {
+				helper: null,
+				dragging: false,
+				reverting: false,
+				_noFinalSort: null
+			});
+
+			if(this.domPosition.prev) {
+				$(this.domPosition.prev).after(this.currentItem);
+			} else {
+				$(this.domPosition.parent).prepend(this.currentItem);
+			}
+		}
+
+		return this;
+
+	},
+
+	serialize: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			str = [];
+		o = o || {};
+
+		$(items).each(function() {
+			var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
+			if (res) {
+				str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
+			}
+		});
+
+		if(!str.length && o.key) {
+			str.push(o.key + "=");
+		}
+
+		return str.join("&");
+
+	},
+
+	toArray: function(o) {
+
+		var items = this._getItemsAsjQuery(o && o.connected),
+			ret = [];
+
+		o = o || {};
+
+		items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
+		return ret;
+
+	},
+
+	/* Be careful with the following core functions */
+	_intersectsWith: function(item) {
+
+		var x1 = this.positionAbs.left,
+			x2 = x1 + this.helperProportions.width,
+			y1 = this.positionAbs.top,
+			y2 = y1 + this.helperProportions.height,
+			l = item.left,
+			r = l + item.width,
+			t = item.top,
+			b = t + item.height,
+			dyClick = this.offset.click.top,
+			dxClick = this.offset.click.left,
+			isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;
+
+		if ( this.options.tolerance === "pointer" ||
+			this.options.forcePointerForContainers ||
+			(this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
+		) {
+			return isOverElement;
+		} else {
+
+			return (l < x1 + (this.helperProportions.width / 2) && // Right Half
+				x2 - (this.helperProportions.width / 2) < r && // Left Half
+				t < y1 + (this.helperProportions.height / 2) && // Bottom Half
+				y2 - (this.helperProportions.height / 2) < b ); // Top Half
+
+		}
+	},
+
+	_intersectsWithPointer: function(item) {
+
+		var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
+			isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
+			isOverElement = isOverElementHeight && isOverElementWidth,
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (!isOverElement) {
+			return false;
+		}
+
+		return this.floating ?
+			( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
+			: ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
+
+	},
+
+	_intersectsWithSides: function(item) {
+
+		var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
+			isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if (this.floating && horizontalDirection) {
+			return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
+		} else {
+			return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
+		}
+
+	},
+
+	_getDragVerticalDirection: function() {
+		var delta = this.positionAbs.top - this.lastPositionAbs.top;
+		return delta !== 0 && (delta > 0 ? "down" : "up");
+	},
+
+	_getDragHorizontalDirection: function() {
+		var delta = this.positionAbs.left - this.lastPositionAbs.left;
+		return delta !== 0 && (delta > 0 ? "right" : "left");
+	},
+
+	refresh: function(event) {
+		this._refreshItems(event);
+		this.refreshPositions();
+		return this;
+	},
+
+	_connectWith: function() {
+		var options = this.options;
+		return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
+	},
+
+	_getItemsAsjQuery: function(connected) {
+
+		var i, j, cur, inst,
+			items = [],
+			queries = [],
+			connectWith = this._connectWith();
+
+		if(connectWith && connected) {
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for ( j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
+					}
+				}
+			}
+		}
+
+		queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
+
+		for (i = queries.length - 1; i >= 0; i--){
+			queries[i][0].each(function() {
+				items.push(this);
+			});
+		}
+
+		return $(items);
+
+	},
+
+	_removeCurrentsFromItems: function() {
+
+		var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
+
+		this.items = $.grep(this.items, function (item) {
+			for (var j=0; j < list.length; j++) {
+				if(list[j] === item.item[0]) {
+					return false;
+				}
+			}
+			return true;
+		});
+
+	},
+
+	_refreshItems: function(event) {
+
+		this.items = [];
+		this.containers = [this];
+
+		var i, j, cur, inst, targetData, _queries, item, queriesLength,
+			items = this.items,
+			queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
+			connectWith = this._connectWith();
+
+		if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
+			for (i = connectWith.length - 1; i >= 0; i--){
+				cur = $(connectWith[i]);
+				for (j = cur.length - 1; j >= 0; j--){
+					inst = $.data(cur[j], this.widgetFullName);
+					if(inst && inst !== this && !inst.options.disabled) {
+						queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
+						this.containers.push(inst);
+					}
+				}
+			}
+		}
+
+		for (i = queries.length - 1; i >= 0; i--) {
+			targetData = queries[i][1];
+			_queries = queries[i][0];
+
+			for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
+				item = $(_queries[j]);
+
+				item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
+
+				items.push({
+					item: item,
+					instance: targetData,
+					width: 0, height: 0,
+					left: 0, top: 0
+				});
+			}
+		}
+
+	},
+
+	refreshPositions: function(fast) {
+
+		//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
+		if(this.offsetParent && this.helper) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		var i, item, t, p;
+
+		for (i = this.items.length - 1; i >= 0; i--){
+			item = this.items[i];
+
+			//We ignore calculating positions of all connected containers when we're not over them
+			if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
+				continue;
+			}
+
+			t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
+
+			if (!fast) {
+				item.width = t.outerWidth();
+				item.height = t.outerHeight();
+			}
+
+			p = t.offset();
+			item.left = p.left;
+			item.top = p.top;
+		}
+
+		if(this.options.custom && this.options.custom.refreshContainers) {
+			this.options.custom.refreshContainers.call(this);
+		} else {
+			for (i = this.containers.length - 1; i >= 0; i--){
+				p = this.containers[i].element.offset();
+				this.containers[i].containerCache.left = p.left;
+				this.containers[i].containerCache.top = p.top;
+				this.containers[i].containerCache.width	= this.containers[i].element.outerWidth();
+				this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
+			}
+		}
+
+		return this;
+	},
+
+	_createPlaceholder: function(that) {
+		that = that || this;
+		var className,
+			o = that.options;
+
+		if(!o.placeholder || o.placeholder.constructor === String) {
+			className = o.placeholder;
+			o.placeholder = {
+				element: function() {
+
+					var el = $(document.createElement(that.currentItem[0].nodeName))
+						.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
+						.removeClass("ui-sortable-helper")[0];
+
+					if(!className) {
+						el.style.visibility = "hidden";
+					}
+
+					return el;
+				},
+				update: function(container, p) {
+
+					// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
+					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
+					if(className && !o.forcePlaceholderSize) {
+						return;
+					}
+
+					//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
+					if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
+					if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
+				}
+			};
+		}
+
+		//Create the placeholder
+		that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
+
+		//Append it after the actual current item
+		that.currentItem.after(that.placeholder);
+
+		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
+		o.placeholder.update(that, that.placeholder);
+
+	},
+
+	_contactContainers: function(event) {
+		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom,
+			innermostContainer = null,
+			innermostIndex = null;
+
+		// get innermost container that intersects with item
+		for (i = this.containers.length - 1; i >= 0; i--) {
+
+			// never consider a container that's located within the item itself
+			if($.contains(this.currentItem[0], this.containers[i].element[0])) {
+				continue;
+			}
+
+			if(this._intersectsWith(this.containers[i].containerCache)) {
+
+				// if we've already found a container and it's more "inner" than this, then continue
+				if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
+					continue;
+				}
+
+				innermostContainer = this.containers[i];
+				innermostIndex = i;
+
+			} else {
+				// container doesn't intersect. trigger "out" event if necessary
+				if(this.containers[i].containerCache.over) {
+					this.containers[i]._trigger("out", event, this._uiHash(this));
+					this.containers[i].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		// if no intersecting containers found, return
+		if(!innermostContainer) {
+			return;
+		}
+
+		// move the item into the container if it's not there already
+		if(this.containers.length === 1) {
+			this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+			this.containers[innermostIndex].containerCache.over = 1;
+		} else {
+
+			//When entering a new container, we will find the item with the least distance and append our item near it
+			dist = 10000;
+			itemWithLeastDistance = null;
+			posProperty = this.containers[innermostIndex].floating ? "left" : "top";
+			sizeProperty = this.containers[innermostIndex].floating ? "width" : "height";
+			base = this.positionAbs[posProperty] + this.offset.click[posProperty];
+			for (j = this.items.length - 1; j >= 0; j--) {
+				if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
+					continue;
+				}
+				if(this.items[j].item[0] === this.currentItem[0]) {
+					continue;
+				}
+				cur = this.items[j].item.offset()[posProperty];
+				nearBottom = false;
+				if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){
+					nearBottom = true;
+					cur += this.items[j][sizeProperty];
+				}
+
+				if(Math.abs(cur - base) < dist) {
+					dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+					this.direction = nearBottom ? "up": "down";
+				}
+			}
+
+			//Check if dropOnEmpty is enabled
+			if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
+				return;
+			}
+
+			this.currentContainer = this.containers[innermostIndex];
+			itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
+			this._trigger("change", event, this._uiHash());
+			this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
+
+			//Update the placeholder
+			this.options.placeholder.update(this.currentContainer, this.placeholder);
+
+			this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
+			this.containers[innermostIndex].containerCache.over = 1;
+		}
+
+
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
+
+		//Add the helper to the DOM if that didn't happen already
+		if(!helper.parents("body").length) {
+			$(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
+		}
+
+		if(helper[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(!helper[0].style.width || o.forceHelperSize) {
+			helper.width(this.currentItem.width());
+		}
+		if(!helper[0].style.height || o.forceHelperSize) {
+			helper.height(this.currentItem.height());
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		// This needs to be actually done for all browsers, since pageX/pageY includes this information
+		// with an ugly IE fix
+		if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.currentItem.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.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 ce, co, over,
+			o = this.options;
+		if(o.containment === "parent") {
+			o.containment = this.helper[0].parentNode;
+		}
+		if(o.containment === "document" || o.containment === "window") {
+			this.containment = [
+				0 - this.offset.relative.left - this.offset.parent.left,
+				0 - this.offset.relative.top - this.offset.parent.top,
+				$(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
+				($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if(!(/^(document|window|parent)$/).test(o.containment)) {
+			ce = $(o.containment)[0];
+			co = $(o.containment).offset();
+			over = ($(ce).css("overflow") !== "hidden");
+
+			this.containment = [
+				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
+				co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
+				co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
+				co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
+			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -											// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var top, left,
+			o = this.options,
+			pageX = event.pageX,
+			pageY = event.pageY,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		// This is another very weird special case that only happens for relative elements:
+		// 1. If the css position is relative
+		// 2. and the scroll parent is the document or similar to the offset parent
+		// we have to refresh the relative offset during the scroll so there are no jumps
+		if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {
+			this.offset.relative = this._getRelativeOffset();
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if(this.originalPosition) { //If we are not dragging yet, we won't check for options
+
+			if(this.containment) {
+				if(event.pageX - this.offset.click.left < this.containment[0]) {
+					pageX = this.containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < this.containment[1]) {
+					pageY = this.containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > this.containment[2]) {
+					pageX = this.containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > this.containment[3]) {
+					pageY = this.containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
+				pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
+				pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																// The absolute mouse position
+				this.offset.click.top -													// Click offset (relative to the element)
+				this.offset.relative.top	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
+			),
+			left: (
+				pageX -																// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left	-											// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
+			)
+		};
+
+	},
+
+	_rearrange: function(event, i, a, hardRefresh) {
+
+		a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling));
+
+		//Various things done here to improve the performance:
+		// 1. we create a setTimeout, that calls refreshPositions
+		// 2. on the instance, we have a counter variable, that get's higher after every append
+		// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
+		// 4. this lets only the last addition to the timeout stack through
+		this.counter = this.counter ? ++this.counter : 1;
+		var counter = this.counter;
+
+		this._delay(function() {
+			if(counter === this.counter) {
+				this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
+			}
+		});
+
+	},
+
+	_clear: function(event, noPropagation) {
+
+		this.reverting = false;
+		// We delay all events that have to be triggered to after the point where the placeholder has been removed and
+		// everything else normalized again
+		var i,
+			delayedTriggers = [];
+
+		// We first have to update the dom position of the actual currentItem
+		// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
+		if(!this._noFinalSort && this.currentItem.parent().length) {
+			this.placeholder.before(this.currentItem);
+		}
+		this._noFinalSort = null;
+
+		if(this.helper[0] === this.currentItem[0]) {
+			for(i in this._storedCSS) {
+				if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
+					this._storedCSS[i] = "";
+				}
+			}
+			this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
+		} else {
+			this.currentItem.show();
+		}
+
+		if(this.fromOutside && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("receive", event, 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]) && !noPropagation) {
+			delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
+		}
+
+		// Check if the items Container has Changed and trigger appropriate
+		// events.
+		if (this !== this.currentContainer) {
+			if(!noPropagation) {
+				delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); };  }).call(this, this.currentContainer));
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this));  }; }).call(this, this.currentContainer));
+			}
+		}
+
+
+		//Post events to containers
+		for (i = this.containers.length - 1; i >= 0; i--){
+			if(!noPropagation) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+			}
+			if(this.containers[i].containerCache.over) {
+				delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); };  }).call(this, this.containers[i]));
+				this.containers[i].containerCache.over = 0;
+			}
+		}
+
+		//Do what was originally in plugins
+		if(this._storedCursor) {
+			$("body").css("cursor", this._storedCursor);
+		}
+		if(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(!noPropagation) {
+				this._trigger("beforeStop", event, this._uiHash());
+				for (i=0; i < delayedTriggers.length; i++) {
+					delayedTriggers[i].call(this, event);
+				} //Trigger all delayed events
+				this._trigger("stop", event, this._uiHash());
+			}
+
+			this.fromOutside = false;
+			return false;
+		}
+
+		if(!noPropagation) {
+			this._trigger("beforeStop", event, this._uiHash());
+		}
+
+		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+		this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+
+		if(this.helper[0] !== this.currentItem[0]) {
+			this.helper.remove();
+		}
+		this.helper = null;
+
+		if(!noPropagation) {
+			for (i=0; i < delayedTriggers.length; i++) {
+				delayedTriggers[i].call(this, event);
+			} //Trigger all delayed events
+			this._trigger("stop", event, this._uiHash());
+		}
+
+		this.fromOutside = false;
+		return true;
+
+	},
+
+	_trigger: function() {
+		if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
+			this.cancel();
+		}
+	},
+
+	_uiHash: function(_inst) {
+		var inst = _inst || this;
+		return {
+			helper: inst.helper,
+			placeholder: inst.placeholder || $([]),
+			position: inst.position,
+			originalPosition: inst.originalPosition,
+			offset: inst.positionAbs,
+			item: inst.currentItem,
+			sender: _inst ? _inst.element : null
+		};
+	}
+
+});
+
+})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.spinner.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.spinner.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.spinner.js	(revision 25596)
@@ -0,0 +1,492 @@
+/*!
+ * jQuery UI Spinner 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/spinner/
+ *
+ * Depends:
+ *  jquery.ui.core.js
+ *  jquery.ui.widget.js
+ *  jquery.ui.button.js
+ */
+(function( $ ) {
+
+function modifier( fn ) {
+	return function() {
+		var previous = this.element.val();
+		fn.apply( this, arguments );
+		this._refresh();
+		if ( previous !== this.element.val() ) {
+			this._trigger( "change" );
+		}
+	};
+}
+
+$.widget( "ui.spinner", {
+	version: "1.10.1",
+	defaultElement: "<input>",
+	widgetEventPrefix: "spin",
+	options: {
+		culture: null,
+		icons: {
+			down: "ui-icon-triangle-1-s",
+			up: "ui-icon-triangle-1-n"
+		},
+		incremental: true,
+		max: null,
+		min: null,
+		numberFormat: null,
+		page: 10,
+		step: 1,
+
+		change: null,
+		spin: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+		// handle string values that need to be parsed
+		this._setOption( "max", this.options.max );
+		this._setOption( "min", this.options.min );
+		this._setOption( "step", this.options.step );
+
+		// format the value, but don't constrain
+		this._value( this.element.val(), true );
+
+		this._draw();
+		this._on( this._events );
+		this._refresh();
+
+		// turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		});
+	},
+
+	_getCreateOptions: function() {
+		var options = {},
+			element = this.element;
+
+		$.each( [ "min", "max", "step" ], function( i, option ) {
+			var value = element.attr( option );
+			if ( value !== undefined && value.length ) {
+				options[ option ] = value;
+			}
+		});
+
+		return options;
+	},
+
+	_events: {
+		keydown: function( event ) {
+			if ( this._start( event ) && this._keydown( event ) ) {
+				event.preventDefault();
+			}
+		},
+		keyup: "_stop",
+		focus: function() {
+			this.previous = this.element.val();
+		},
+		blur: function( event ) {
+			if ( this.cancelBlur ) {
+				delete this.cancelBlur;
+				return;
+			}
+
+			this._refresh();
+			if ( this.previous !== this.element.val() ) {
+				this._trigger( "change", event );
+			}
+		},
+		mousewheel: function( event, delta ) {
+			if ( !delta ) {
+				return;
+			}
+			if ( !this.spinning && !this._start( event ) ) {
+				return false;
+			}
+
+			this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
+			clearTimeout( this.mousewheelTimer );
+			this.mousewheelTimer = this._delay(function() {
+				if ( this.spinning ) {
+					this._stop( event );
+				}
+			}, 100 );
+			event.preventDefault();
+		},
+		"mousedown .ui-spinner-button": function( event ) {
+			var previous;
+
+			// We never want the buttons to have focus; whenever the user is
+			// interacting with the spinner, the focus should be on the input.
+			// If the input is focused then this.previous is properly set from
+			// when the input first received focus. If the input is not focused
+			// then we need to set this.previous based on the value before spinning.
+			previous = this.element[0] === this.document[0].activeElement ?
+				this.previous : this.element.val();
+			function checkFocus() {
+				var isActive = this.element[0] === this.document[0].activeElement;
+				if ( !isActive ) {
+					this.element.focus();
+					this.previous = previous;
+					// support: IE
+					// IE sets focus asynchronously, so we need to check if focus
+					// moved off of the input because the user clicked on the button.
+					this._delay(function() {
+						this.previous = previous;
+					});
+				}
+			}
+
+			// ensure focus is on (or stays on) the text field
+			event.preventDefault();
+			checkFocus.call( this );
+
+			// support: IE
+			// IE doesn't prevent moving focus even with event.preventDefault()
+			// so we set a flag to know when we should ignore the blur event
+			// and check (again) if focus moved off of the input.
+			this.cancelBlur = true;
+			this._delay(function() {
+				delete this.cancelBlur;
+				checkFocus.call( this );
+			});
+
+			if ( this._start( event ) === false ) {
+				return;
+			}
+
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		"mouseup .ui-spinner-button": "_stop",
+		"mouseenter .ui-spinner-button": function( event ) {
+			// button will add ui-state-active if mouse was down while mouseleave and kept down
+			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
+				return;
+			}
+
+			if ( this._start( event ) === false ) {
+				return false;
+			}
+			this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		// TODO: do we really want to consider this a stop?
+		// shouldn't we just stop the repeater and wait until mouseup before
+		// we trigger the stop event?
+		"mouseleave .ui-spinner-button": "_stop"
+	},
+
+	_draw: function() {
+		var uiSpinner = this.uiSpinner = this.element
+			.addClass( "ui-spinner-input" )
+			.attr( "autocomplete", "off" )
+			.wrap( this._uiSpinnerHtml() )
+			.parent()
+				// add buttons
+				.append( this._buttonHtml() );
+
+		this.element.attr( "role", "spinbutton" );
+
+		// button bindings
+		this.buttons = uiSpinner.find( ".ui-spinner-button" )
+			.attr( "tabIndex", -1 )
+			.button()
+			.removeClass( "ui-corner-all" );
+
+		// IE 6 doesn't understand height: 50% for the buttons
+		// unless the wrapper has an explicit height
+		if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
+				uiSpinner.height() > 0 ) {
+			uiSpinner.height( uiSpinner.height() );
+		}
+
+		// disable spinner if element was already disabled
+		if ( this.options.disabled ) {
+			this.disable();
+		}
+	},
+
+	_keydown: function( event ) {
+		var options = this.options,
+			keyCode = $.ui.keyCode;
+
+		switch ( event.keyCode ) {
+		case keyCode.UP:
+			this._repeat( null, 1, event );
+			return true;
+		case keyCode.DOWN:
+			this._repeat( null, -1, event );
+			return true;
+		case keyCode.PAGE_UP:
+			this._repeat( null, options.page, event );
+			return true;
+		case keyCode.PAGE_DOWN:
+			this._repeat( null, -options.page, event );
+			return true;
+		}
+
+		return false;
+	},
+
+	_uiSpinnerHtml: function() {
+		return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>";
+	},
+
+	_buttonHtml: function() {
+		return "" +
+			"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" +
+				"<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" +
+			"</a>" +
+			"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" +
+				"<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" +
+			"</a>";
+	},
+
+	_start: function( event ) {
+		if ( !this.spinning && this._trigger( "start", event ) === false ) {
+			return false;
+		}
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+		this.spinning = true;
+		return true;
+	},
+
+	_repeat: function( i, steps, event ) {
+		i = i || 500;
+
+		clearTimeout( this.timer );
+		this.timer = this._delay(function() {
+			this._repeat( 40, steps, event );
+		}, i );
+
+		this._spin( steps * this.options.step, event );
+	},
+
+	_spin: function( step, event ) {
+		var value = this.value() || 0;
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+
+		value = this._adjustValue( value + step * this._increment( this.counter ) );
+
+		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
+			this._value( value );
+			this.counter++;
+		}
+	},
+
+	_increment: function( i ) {
+		var incremental = this.options.incremental;
+
+		if ( incremental ) {
+			return $.isFunction( incremental ) ?
+				incremental( i ) :
+				Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );
+		}
+
+		return 1;
+	},
+
+	_precision: function() {
+		var precision = this._precisionOf( this.options.step );
+		if ( this.options.min !== null ) {
+			precision = Math.max( precision, this._precisionOf( this.options.min ) );
+		}
+		return precision;
+	},
+
+	_precisionOf: function( num ) {
+		var str = num.toString(),
+			decimal = str.indexOf( "." );
+		return decimal === -1 ? 0 : str.length - decimal - 1;
+	},
+
+	_adjustValue: function( value ) {
+		var base, aboveMin,
+			options = this.options;
+
+		// make sure we're at a valid step
+		// - find out where we are relative to the base (min or 0)
+		base = options.min !== null ? options.min : 0;
+		aboveMin = value - base;
+		// - round to the nearest step
+		aboveMin = Math.round(aboveMin / options.step) * options.step;
+		// - rounding is based on 0, so adjust back to our base
+		value = base + aboveMin;
+
+		// fix precision from bad JS floating point math
+		value = parseFloat( value.toFixed( this._precision() ) );
+
+		// clamp the value
+		if ( options.max !== null && value > options.max) {
+			return options.max;
+		}
+		if ( options.min !== null && value < options.min ) {
+			return options.min;
+		}
+
+		return value;
+	},
+
+	_stop: function( event ) {
+		if ( !this.spinning ) {
+			return;
+		}
+
+		clearTimeout( this.timer );
+		clearTimeout( this.mousewheelTimer );
+		this.counter = 0;
+		this.spinning = false;
+		this._trigger( "stop", event );
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "culture" || key === "numberFormat" ) {
+			var prevValue = this._parse( this.element.val() );
+			this.options[ key ] = value;
+			this.element.val( this._format( prevValue ) );
+			return;
+		}
+
+		if ( key === "max" || key === "min" || key === "step" ) {
+			if ( typeof value === "string" ) {
+				value = this._parse( value );
+			}
+		}
+		if ( key === "icons" ) {
+			this.buttons.first().find( ".ui-icon" )
+				.removeClass( this.options.icons.up )
+				.addClass( value.up );
+			this.buttons.last().find( ".ui-icon" )
+				.removeClass( this.options.icons.down )
+				.addClass( value.down );
+		}
+
+		this._super( key, value );
+
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+				this.buttons.button( "disable" );
+			} else {
+				this.element.prop( "disabled", false );
+				this.buttons.button( "enable" );
+			}
+		}
+	},
+
+	_setOptions: modifier(function( options ) {
+		this._super( options );
+		this._value( this.element.val() );
+	}),
+
+	_parse: function( val ) {
+		if ( typeof val === "string" && val !== "" ) {
+			val = window.Globalize && this.options.numberFormat ?
+				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
+		}
+		return val === "" || isNaN( val ) ? null : val;
+	},
+
+	_format: function( value ) {
+		if ( value === "" ) {
+			return "";
+		}
+		return window.Globalize && this.options.numberFormat ?
+			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
+			value;
+	},
+
+	_refresh: function() {
+		this.element.attr({
+			"aria-valuemin": this.options.min,
+			"aria-valuemax": this.options.max,
+			// TODO: what should we do with values that can't be parsed?
+			"aria-valuenow": this._parse( this.element.val() )
+		});
+	},
+
+	// update the value without triggering change
+	_value: function( value, allowAny ) {
+		var parsed;
+		if ( value !== "" ) {
+			parsed = this._parse( value );
+			if ( parsed !== null ) {
+				if ( !allowAny ) {
+					parsed = this._adjustValue( parsed );
+				}
+				value = this._format( parsed );
+			}
+		}
+		this.element.val( value );
+		this._refresh();
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-spinner-input" )
+			.prop( "disabled", false )
+			.removeAttr( "autocomplete" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-valuemin" )
+			.removeAttr( "aria-valuemax" )
+			.removeAttr( "aria-valuenow" );
+		this.uiSpinner.replaceWith( this.element );
+	},
+
+	stepUp: modifier(function( steps ) {
+		this._stepUp( steps );
+	}),
+	_stepUp: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * this.options.step );
+			this._stop();
+		}
+	},
+
+	stepDown: modifier(function( steps ) {
+		this._stepDown( steps );
+	}),
+	_stepDown: function( steps ) {
+		if ( this._start() ) {
+			this._spin( (steps || 1) * -this.options.step );
+			this._stop();
+		}
+	},
+
+	pageUp: modifier(function( pages ) {
+		this._stepUp( (pages || 1) * this.options.page );
+	}),
+
+	pageDown: modifier(function( pages ) {
+		this._stepDown( (pages || 1) * this.options.page );
+	}),
+
+	value: function( newVal ) {
+		if ( !arguments.length ) {
+			return this._parse( this.element.val() );
+		}
+		modifier( this._value ).call( this, newVal );
+	},
+
+	widget: function() {
+		return this.uiSpinner;
+	}
+});
+
+}( jQuery ) );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tabs.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tabs.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tabs.js	(revision 25596)
@@ -0,0 +1,846 @@
+/*!
+ * jQuery UI Tabs 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/tabs/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var tabId = 0,
+	rhash = /#.*$/;
+
+function getNextTabId() {
+	return ++tabId;
+}
+
+function isLocal( anchor ) {
+	return anchor.hash.length > 1 &&
+		decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
+			decodeURIComponent( location.href.replace( rhash, "" ) );
+}
+
+$.widget( "ui.tabs", {
+	version: "1.10.1",
+	delay: 300,
+	options: {
+		active: null,
+		collapsible: false,
+		event: "click",
+		heightStyle: "content",
+		hide: null,
+		show: null,
+
+		// callbacks
+		activate: null,
+		beforeActivate: null,
+		beforeLoad: null,
+		load: null
+	},
+
+	_create: function() {
+		var that = this,
+			options = this.options;
+
+		this.running = false;
+
+		this.element
+			.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-tabs-collapsible", options.collapsible )
+			// Prevent users from focusing disabled tabs via click
+			.delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
+				if ( $( this ).is( ".ui-state-disabled" ) ) {
+					event.preventDefault();
+				}
+			})
+			// support: IE <9
+			// Preventing the default action in mousedown doesn't prevent IE
+			// from focusing the element, so if the anchor gets focused, blur.
+			// We don't have to worry about focusing the previously focused
+			// element since clicking on a non-focusable element should focus
+			// the body anyway.
+			.delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
+				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+					this.blur();
+				}
+			});
+
+		this._processTabs();
+		options.active = this._initialActive();
+
+		// Take disabling tabs via class attribute from HTML
+		// into account and update option properly.
+		if ( $.isArray( options.disabled ) ) {
+			options.disabled = $.unique( options.disabled.concat(
+				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+					return that.tabs.index( li );
+				})
+			) ).sort();
+		}
+
+		// check for length avoids error when initializing empty list
+		if ( this.options.active !== false && this.anchors.length ) {
+			this.active = this._findActive( options.active );
+		} else {
+			this.active = $();
+		}
+
+		this._refresh();
+
+		if ( this.active.length ) {
+			this.load( options.active );
+		}
+	},
+
+	_initialActive: function() {
+		var active = this.options.active,
+			collapsible = this.options.collapsible,
+			locationHash = location.hash.substring( 1 );
+
+		if ( active === null ) {
+			// check the fragment identifier in the URL
+			if ( locationHash ) {
+				this.tabs.each(function( i, tab ) {
+					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+						active = i;
+						return false;
+					}
+				});
+			}
+
+			// check for a tab marked active via a class
+			if ( active === null ) {
+				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+			}
+
+			// no active tab, set to false
+			if ( active === null || active === -1 ) {
+				active = this.tabs.length ? 0 : false;
+			}
+		}
+
+		// handle numbers: negative, out of range
+		if ( active !== false ) {
+			active = this.tabs.index( this.tabs.eq( active ) );
+			if ( active === -1 ) {
+				active = collapsible ? false : 0;
+			}
+		}
+
+		// don't allow collapsible: false and active: false
+		if ( !collapsible && active === false && this.anchors.length ) {
+			active = 0;
+		}
+
+		return active;
+	},
+
+	_getCreateEventData: function() {
+		return {
+			tab: this.active,
+			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+		};
+	},
+
+	_tabKeydown: function( event ) {
+		/*jshint maxcomplexity:15*/
+		var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
+			selectedIndex = this.tabs.index( focusedTab ),
+			goingForward = true;
+
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		switch ( event.keyCode ) {
+			case $.ui.keyCode.RIGHT:
+			case $.ui.keyCode.DOWN:
+				selectedIndex++;
+				break;
+			case $.ui.keyCode.UP:
+			case $.ui.keyCode.LEFT:
+				goingForward = false;
+				selectedIndex--;
+				break;
+			case $.ui.keyCode.END:
+				selectedIndex = this.anchors.length - 1;
+				break;
+			case $.ui.keyCode.HOME:
+				selectedIndex = 0;
+				break;
+			case $.ui.keyCode.SPACE:
+				// Activate only, no collapsing
+				event.preventDefault();
+				clearTimeout( this.activating );
+				this._activate( selectedIndex );
+				return;
+			case $.ui.keyCode.ENTER:
+				// Toggle (cancel delayed activation, allow collapsing)
+				event.preventDefault();
+				clearTimeout( this.activating );
+				// Determine if we should collapse or activate
+				this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+				return;
+			default:
+				return;
+		}
+
+		// Focus the appropriate tab, based on which key was pressed
+		event.preventDefault();
+		clearTimeout( this.activating );
+		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+		// Navigating with control key will prevent automatic activation
+		if ( !event.ctrlKey ) {
+			// Update aria-selected immediately so that AT think the tab is already selected.
+			// Otherwise AT may confuse the user by stating that they need to activate the tab,
+			// but the tab will already be activated by the time the announcement finishes.
+			focusedTab.attr( "aria-selected", "false" );
+			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+			this.activating = this._delay(function() {
+				this.option( "active", selectedIndex );
+			}, this.delay );
+		}
+	},
+
+	_panelKeydown: function( event ) {
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		// Ctrl+up moves focus to the current tab
+		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+			event.preventDefault();
+			this.active.focus();
+		}
+	},
+
+	// Alt+page up/down moves focus to the previous/next tab (and activates)
+	_handlePageNav: function( event ) {
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+			this._activate( this._focusNextTab( this.options.active - 1, false ) );
+			return true;
+		}
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+			this._activate( this._focusNextTab( this.options.active + 1, true ) );
+			return true;
+		}
+	},
+
+	_findNextTab: function( index, goingForward ) {
+		var lastTabIndex = this.tabs.length - 1;
+
+		function constrain() {
+			if ( index > lastTabIndex ) {
+				index = 0;
+			}
+			if ( index < 0 ) {
+				index = lastTabIndex;
+			}
+			return index;
+		}
+
+		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+			index = goingForward ? index + 1 : index - 1;
+		}
+
+		return index;
+	},
+
+	_focusNextTab: function( index, goingForward ) {
+		index = this._findNextTab( index, goingForward );
+		this.tabs.eq( index ).focus();
+		return index;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "disabled" ) {
+			// don't use the widget factory's disabled handling
+			this._setupDisabled( value );
+			return;
+		}
+
+		this._super( key, value);
+
+		if ( key === "collapsible" ) {
+			this.element.toggleClass( "ui-tabs-collapsible", value );
+			// Setting collapsible: false while collapsed; open first panel
+			if ( !value && this.options.active === false ) {
+				this._activate( 0 );
+			}
+		}
+
+		if ( key === "event" ) {
+			this._setupEvents( value );
+		}
+
+		if ( key === "heightStyle" ) {
+			this._setupHeightStyle( value );
+		}
+	},
+
+	_tabId: function( tab ) {
+		return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+	},
+
+	_sanitizeSelector: function( hash ) {
+		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+	},
+
+	refresh: function() {
+		var options = this.options,
+			lis = this.tablist.children( ":has(a[href])" );
+
+		// get disabled tabs from class attribute from HTML
+		// this will get converted to a boolean if needed in _refresh()
+		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+			return lis.index( tab );
+		});
+
+		this._processTabs();
+
+		// was collapsed or no tabs
+		if ( options.active === false || !this.anchors.length ) {
+			options.active = false;
+			this.active = $();
+		// was active, but active tab is gone
+		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining tabs are disabled
+			if ( this.tabs.length === options.disabled.length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous tab
+			} else {
+				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+			}
+		// was active, active tab still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.tabs.index( this.active );
+		}
+
+		this._refresh();
+	},
+
+	_refresh: function() {
+		this._setupDisabled( this.options.disabled );
+		this._setupEvents( this.options.event );
+		this._setupHeightStyle( this.options.heightStyle );
+
+		this.tabs.not( this.active ).attr({
+			"aria-selected": "false",
+			tabIndex: -1
+		});
+		this.panels.not( this._getPanelForTab( this.active ) )
+			.hide()
+			.attr({
+				"aria-expanded": "false",
+				"aria-hidden": "true"
+			});
+
+		// Make sure one tab is in the tab order
+		if ( !this.active.length ) {
+			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active
+				.addClass( "ui-tabs-active ui-state-active" )
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+			this._getPanelForTab( this.active )
+				.show()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+	},
+
+	_processTabs: function() {
+		var that = this;
+
+		this.tablist = this._getList()
+			.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.attr( "role", "tablist" );
+
+		this.tabs = this.tablist.find( "> li:has(a[href])" )
+			.addClass( "ui-state-default ui-corner-top" )
+			.attr({
+				role: "tab",
+				tabIndex: -1
+			});
+
+		this.anchors = this.tabs.map(function() {
+				return $( "a", this )[ 0 ];
+			})
+			.addClass( "ui-tabs-anchor" )
+			.attr({
+				role: "presentation",
+				tabIndex: -1
+			});
+
+		this.panels = $();
+
+		this.anchors.each(function( i, anchor ) {
+			var selector, panel, panelId,
+				anchorId = $( anchor ).uniqueId().attr( "id" ),
+				tab = $( anchor ).closest( "li" ),
+				originalAriaControls = tab.attr( "aria-controls" );
+
+			// inline tab
+			if ( isLocal( anchor ) ) {
+				selector = anchor.hash;
+				panel = that.element.find( that._sanitizeSelector( selector ) );
+			// remote tab
+			} else {
+				panelId = that._tabId( tab );
+				selector = "#" + panelId;
+				panel = that.element.find( selector );
+				if ( !panel.length ) {
+					panel = that._createPanel( panelId );
+					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+				}
+				panel.attr( "aria-live", "polite" );
+			}
+
+			if ( panel.length) {
+				that.panels = that.panels.add( panel );
+			}
+			if ( originalAriaControls ) {
+				tab.data( "ui-tabs-aria-controls", originalAriaControls );
+			}
+			tab.attr({
+				"aria-controls": selector.substring( 1 ),
+				"aria-labelledby": anchorId
+			});
+			panel.attr( "aria-labelledby", anchorId );
+		});
+
+		this.panels
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.attr( "role", "tabpanel" );
+	},
+
+	// allow overriding how to find the list for rare usage scenarios (#7715)
+	_getList: function() {
+		return this.element.find( "ol,ul" ).eq( 0 );
+	},
+
+	_createPanel: function( id ) {
+		return $( "<div>" )
+			.attr( "id", id )
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.data( "ui-tabs-destroy", true );
+	},
+
+	_setupDisabled: function( disabled ) {
+		if ( $.isArray( disabled ) ) {
+			if ( !disabled.length ) {
+				disabled = false;
+			} else if ( disabled.length === this.anchors.length ) {
+				disabled = true;
+			}
+		}
+
+		// disable tabs
+		for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
+			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+				$( li )
+					.addClass( "ui-state-disabled" )
+					.attr( "aria-disabled", "true" );
+			} else {
+				$( li )
+					.removeClass( "ui-state-disabled" )
+					.removeAttr( "aria-disabled" );
+			}
+		}
+
+		this.options.disabled = disabled;
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			click: function( event ) {
+				event.preventDefault();
+			}
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+		this._on( this.anchors, events );
+		this._on( this.tabs, { keydown: "_tabKeydown" } );
+		this._on( this.panels, { keydown: "_panelKeydown" } );
+
+		this._focusable( this.tabs );
+		this._hoverable( this.tabs );
+	},
+
+	_setupHeightStyle: function( heightStyle ) {
+		var maxHeight,
+			parent = this.element.parent();
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			maxHeight -= this.element.outerHeight() - this.element.height();
+
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.element.children().not( this.panels ).each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.panels.each(function() {
+				$( this ).height( Math.max( 0, maxHeight -
+					$( this ).innerHeight() + $( this ).height() ) );
+			})
+			.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.panels.each(function() {
+				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+			}).height( maxHeight );
+		}
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			anchor = $( event.currentTarget ),
+			tab = anchor.closest( "li" ),
+			clickedIsActive = tab[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : this._getPanelForTab( tab ),
+			toHide = !active.length ? $() : this._getPanelForTab( active ),
+			eventData = {
+				oldTab: active,
+				oldPanel: toHide,
+				newTab: collapsing ? $() : tab,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if ( tab.hasClass( "ui-state-disabled" ) ||
+				// tab is already loading
+				tab.hasClass( "ui-tabs-loading" ) ||
+				// can't switch durning an animation
+				this.running ||
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.tabs.index( tab );
+
+		this.active = clickedIsActive ? $() : tab;
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		if ( !toHide.length && !toShow.length ) {
+			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+		}
+
+		if ( toShow.length ) {
+			this.load( this.tabs.index( tab ), event );
+		}
+		this._toggle( event, eventData );
+	},
+
+	// handles show/hide for selecting tabs
+	_toggle: function( event, eventData ) {
+		var that = this,
+			toShow = eventData.newPanel,
+			toHide = eventData.oldPanel;
+
+		this.running = true;
+
+		function complete() {
+			that.running = false;
+			that._trigger( "activate", event, eventData );
+		}
+
+		function show() {
+			eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+			if ( toShow.length && that.options.show ) {
+				that._show( toShow, that.options.show, complete );
+			} else {
+				toShow.show();
+				complete();
+			}
+		}
+
+		// start out by hiding, then showing, then completing
+		if ( toHide.length && this.options.hide ) {
+			this._hide( toHide, this.options.hide, function() {
+				eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+				show();
+			});
+		} else {
+			eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+			toHide.hide();
+			show();
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		eventData.oldTab.attr( "aria-selected", "false" );
+		// If we're switching tabs, remove the old tab from the tab order.
+		// If we're opening from collapsed state, remove the previous tab from the tab order.
+		// If we're collapsing, then keep the collapsing tab in the tab order.
+		if ( toShow.length && toHide.length ) {
+			eventData.oldTab.attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.tabs.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow.attr({
+			"aria-expanded": "true",
+			"aria-hidden": "false"
+		});
+		eventData.newTab.attr({
+			"aria-selected": "true",
+			tabIndex: 0
+		});
+	},
+
+	_activate: function( index ) {
+		var anchor,
+			active = this._findActive( index );
+
+		// trying to activate the already active panel
+		if ( active[ 0 ] === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the current active header
+		if ( !active.length ) {
+			active = this.active;
+		}
+
+		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+		this._eventHandler({
+			target: anchor,
+			currentTarget: anchor,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( index ) {
+		return index === false ? $() : this.tabs.eq( index );
+	},
+
+	_getIndex: function( index ) {
+		// meta-function to give users option to provide a href string instead of a numerical index.
+		if ( typeof index === "string" ) {
+			index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
+		}
+
+		return index;
+	},
+
+	_destroy: function() {
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
+
+		this.tablist
+			.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.removeAttr( "role" );
+
+		this.anchors
+			.removeClass( "ui-tabs-anchor" )
+			.removeAttr( "role" )
+			.removeAttr( "tabIndex" )
+			.removeUniqueId();
+
+		this.tabs.add( this.panels ).each(function() {
+			if ( $.data( this, "ui-tabs-destroy" ) ) {
+				$( this ).remove();
+			} else {
+				$( this )
+					.removeClass( "ui-state-default ui-state-active ui-state-disabled " +
+						"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
+					.removeAttr( "tabIndex" )
+					.removeAttr( "aria-live" )
+					.removeAttr( "aria-busy" )
+					.removeAttr( "aria-selected" )
+					.removeAttr( "aria-labelledby" )
+					.removeAttr( "aria-hidden" )
+					.removeAttr( "aria-expanded" )
+					.removeAttr( "role" );
+			}
+		});
+
+		this.tabs.each(function() {
+			var li = $( this ),
+				prev = li.data( "ui-tabs-aria-controls" );
+			if ( prev ) {
+				li
+					.attr( "aria-controls", prev )
+					.removeData( "ui-tabs-aria-controls" );
+			} else {
+				li.removeAttr( "aria-controls" );
+			}
+		});
+
+		this.panels.show();
+
+		if ( this.options.heightStyle !== "content" ) {
+			this.panels.css( "height", "" );
+		}
+	},
+
+	enable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === false ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = false;
+		} else {
+			index = this._getIndex( index );
+			if ( $.isArray( disabled ) ) {
+				disabled = $.map( disabled, function( num ) {
+					return num !== index ? num : null;
+				});
+			} else {
+				disabled = $.map( this.tabs, function( li, num ) {
+					return num !== index ? num : null;
+				});
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	disable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === true ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = true;
+		} else {
+			index = this._getIndex( index );
+			if ( $.inArray( index, disabled ) !== -1 ) {
+				return;
+			}
+			if ( $.isArray( disabled ) ) {
+				disabled = $.merge( [ index ], disabled ).sort();
+			} else {
+				disabled = [ index ];
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	load: function( index, event ) {
+		index = this._getIndex( index );
+		var that = this,
+			tab = this.tabs.eq( index ),
+			anchor = tab.find( ".ui-tabs-anchor" ),
+			panel = this._getPanelForTab( tab ),
+			eventData = {
+				tab: tab,
+				panel: panel
+			};
+
+		// not remote
+		if ( isLocal( anchor[ 0 ] ) ) {
+			return;
+		}
+
+		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+		// support: jQuery <1.8
+		// jQuery <1.8 returns false if the request is canceled in beforeSend,
+		// but as of 1.8, $.ajax() always returns a jqXHR object.
+		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+			tab.addClass( "ui-tabs-loading" );
+			panel.attr( "aria-busy", "true" );
+
+			this.xhr
+				.success(function( response ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						panel.html( response );
+						that._trigger( "load", event, eventData );
+					}, 1 );
+				})
+				.complete(function( jqXHR, status ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						if ( status === "abort" ) {
+							that.panels.stop( false, true );
+						}
+
+						tab.removeClass( "ui-tabs-loading" );
+						panel.removeAttr( "aria-busy" );
+
+						if ( jqXHR === that.xhr ) {
+							delete that.xhr;
+						}
+					}, 1 );
+				});
+		}
+	},
+
+	_ajaxSettings: function( anchor, event, eventData ) {
+		var that = this;
+		return {
+			url: anchor.attr( "href" ),
+			beforeSend: function( jqXHR, settings ) {
+				return that._trigger( "beforeLoad", event,
+					$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
+			}
+		};
+	},
+
+	_getPanelForTab: function( tab ) {
+		var id = $( tab ).attr( "aria-controls" );
+		return this.element.find( this._sanitizeSelector( "#" + id ) );
+	}
+});
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tooltip.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tooltip.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.tooltip.js	(revision 25596)
@@ -0,0 +1,402 @@
+/*!
+ * jQuery UI Tooltip 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/tooltip/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ */
+(function( $ ) {
+
+var increments = 0;
+
+function addDescribedBy( elem, id ) {
+	var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
+	describedby.push( id );
+	elem
+		.data( "ui-tooltip-id", id )
+		.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+}
+
+function removeDescribedBy( elem ) {
+	var id = elem.data( "ui-tooltip-id" ),
+		describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
+		index = $.inArray( id, describedby );
+	if ( index !== -1 ) {
+		describedby.splice( index, 1 );
+	}
+
+	elem.removeData( "ui-tooltip-id" );
+	describedby = $.trim( describedby.join( " " ) );
+	if ( describedby ) {
+		elem.attr( "aria-describedby", describedby );
+	} else {
+		elem.removeAttr( "aria-describedby" );
+	}
+}
+
+$.widget( "ui.tooltip", {
+	version: "1.10.1",
+	options: {
+		content: function() {
+			// support: IE<9, Opera in jQuery <1.7
+			// .text() can't accept undefined, so coerce to a string
+			var title = $( this ).attr( "title" ) || "";
+			// Escape title, since we're going from an attribute to raw HTML
+			return $( "<a>" ).text( title ).html();
+		},
+		hide: true,
+		// Disabled elements have inconsistent behavior across browsers (#8661)
+		items: "[title]:not([disabled])",
+		position: {
+			my: "left top+15",
+			at: "left bottom",
+			collision: "flipfit flip"
+		},
+		show: true,
+		tooltipClass: null,
+		track: false,
+
+		// callbacks
+		close: null,
+		open: null
+	},
+
+	_create: function() {
+		this._on({
+			mouseover: "open",
+			focusin: "open"
+		});
+
+		// IDs of generated tooltips, needed for destroy
+		this.tooltips = {};
+		// IDs of parent tooltips where we removed the title attribute
+		this.parents = {};
+
+		if ( this.options.disabled ) {
+			this._disable();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var that = this;
+
+		if ( key === "disabled" ) {
+			this[ value ? "_disable" : "_enable" ]();
+			this.options[ key ] = value;
+			// disable element style changes
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "content" ) {
+			$.each( this.tooltips, function( id, element ) {
+				that._updateContent( element );
+			});
+		}
+	},
+
+	_disable: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+		});
+
+		// remove title attributes to prevent native tooltips
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.is( "[title]" ) ) {
+				element
+					.data( "ui-tooltip-title", element.attr( "title" ) )
+					.attr( "title", "" );
+			}
+		});
+	},
+
+	_enable: function() {
+		// restore title attributes
+		this.element.find( this.options.items ).addBack().each(function() {
+			var element = $( this );
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+			}
+		});
+	},
+
+	open: function( event ) {
+		var that = this,
+			target = $( event ? event.target : this.element )
+				// we need closest here due to mouseover bubbling,
+				// but always pointing at the same event target
+				.closest( this.options.items );
+
+		// No element to show a tooltip for or the tooltip is already open
+		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
+			return;
+		}
+
+		if ( target.attr( "title" ) ) {
+			target.data( "ui-tooltip-title", target.attr( "title" ) );
+		}
+
+		target.data( "ui-tooltip-open", true );
+
+		// kill parent tooltips, custom or native, for hover
+		if ( event && event.type === "mouseover" ) {
+			target.parents().each(function() {
+				var parent = $( this ),
+					blurEvent;
+				if ( parent.data( "ui-tooltip-open" ) ) {
+					blurEvent = $.Event( "blur" );
+					blurEvent.target = blurEvent.currentTarget = this;
+					that.close( blurEvent, true );
+				}
+				if ( parent.attr( "title" ) ) {
+					parent.uniqueId();
+					that.parents[ this.id ] = {
+						element: this,
+						title: parent.attr( "title" )
+					};
+					parent.attr( "title", "" );
+				}
+			});
+		}
+
+		this._updateContent( target, event );
+	},
+
+	_updateContent: function( target, event ) {
+		var content,
+			contentOption = this.options.content,
+			that = this,
+			eventType = event ? event.type : null;
+
+		if ( typeof contentOption === "string" ) {
+			return this._open( event, target, contentOption );
+		}
+
+		content = contentOption.call( target[0], function( response ) {
+			// ignore async response if tooltip was closed already
+			if ( !target.data( "ui-tooltip-open" ) ) {
+				return;
+			}
+			// IE may instantly serve a cached response for ajax requests
+			// delay this call to _open so the other call to _open runs first
+			that._delay(function() {
+				// jQuery creates a special event for focusin when it doesn't
+				// exist natively. To improve performance, the native event
+				// object is reused and the type is changed. Therefore, we can't
+				// rely on the type being correct after the event finished
+				// bubbling, so we set it back to the previous value. (#8740)
+				if ( event ) {
+					event.type = eventType;
+				}
+				this._open( event, target, response );
+			});
+		});
+		if ( content ) {
+			this._open( event, target, content );
+		}
+	},
+
+	_open: function( event, target, content ) {
+		var tooltip, events, delayedShow,
+			positionOption = $.extend( {}, this.options.position );
+
+		if ( !content ) {
+			return;
+		}
+
+		// Content can be updated multiple times. If the tooltip already
+		// exists, then just update the content and bail.
+		tooltip = this._find( target );
+		if ( tooltip.length ) {
+			tooltip.find( ".ui-tooltip-content" ).html( content );
+			return;
+		}
+
+		// if we have a title, clear it to prevent the native tooltip
+		// we have to check first to avoid defining a title if none exists
+		// (we don't want to cause an element to start matching [title])
+		//
+		// We use removeAttr only for key events, to allow IE to export the correct
+		// accessible attributes. For mouse events, set to empty string to avoid
+		// native tooltip showing up (happens only when removing inside mouseover).
+		if ( target.is( "[title]" ) ) {
+			if ( event && event.type === "mouseover" ) {
+				target.attr( "title", "" );
+			} else {
+				target.removeAttr( "title" );
+			}
+		}
+
+		tooltip = this._tooltip( target );
+		addDescribedBy( target, tooltip.attr( "id" ) );
+		tooltip.find( ".ui-tooltip-content" ).html( content );
+
+		function position( event ) {
+			positionOption.of = event;
+			if ( tooltip.is( ":hidden" ) ) {
+				return;
+			}
+			tooltip.position( positionOption );
+		}
+		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
+			this._on( this.document, {
+				mousemove: position
+			});
+			// trigger once to override element-relative positioning
+			position( event );
+		} else {
+			tooltip.position( $.extend({
+				of: target
+			}, this.options.position ) );
+		}
+
+		tooltip.hide();
+
+		this._show( tooltip, this.options.show );
+		// Handle tracking tooltips that are shown with a delay (#8644). As soon
+		// as the tooltip is visible, position the tooltip using the most recent
+		// event.
+		if ( this.options.show && this.options.show.delay ) {
+			delayedShow = this.delayedShow = setInterval(function() {
+				if ( tooltip.is( ":visible" ) ) {
+					position( positionOption.of );
+					clearInterval( delayedShow );
+				}
+			}, $.fx.interval );
+		}
+
+		this._trigger( "open", event, { tooltip: tooltip } );
+
+		events = {
+			keyup: function( event ) {
+				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
+					var fakeEvent = $.Event(event);
+					fakeEvent.currentTarget = target[0];
+					this.close( fakeEvent, true );
+				}
+			},
+			remove: function() {
+				this._removeTooltip( tooltip );
+			}
+		};
+		if ( !event || event.type === "mouseover" ) {
+			events.mouseleave = "close";
+		}
+		if ( !event || event.type === "focusin" ) {
+			events.focusout = "close";
+		}
+		this._on( true, target, events );
+	},
+
+	close: function( event ) {
+		var that = this,
+			target = $( event ? event.currentTarget : this.element ),
+			tooltip = this._find( target );
+
+		// disabling closes the tooltip, so we need to track when we're closing
+		// to avoid an infinite loop in case the tooltip becomes disabled on close
+		if ( this.closing ) {
+			return;
+		}
+
+		// Clear the interval for delayed tracking tooltips
+		clearInterval( this.delayedShow );
+
+		// only set title if we had one before (see comment in _open())
+		if ( target.data( "ui-tooltip-title" ) ) {
+			target.attr( "title", target.data( "ui-tooltip-title" ) );
+		}
+
+		removeDescribedBy( target );
+
+		tooltip.stop( true );
+		this._hide( tooltip, this.options.hide, function() {
+			that._removeTooltip( $( this ) );
+		});
+
+		target.removeData( "ui-tooltip-open" );
+		this._off( target, "mouseleave focusout keyup" );
+		// Remove 'remove' binding only on delegated targets
+		if ( target[0] !== this.element[0] ) {
+			this._off( target, "remove" );
+		}
+		this._off( this.document, "mousemove" );
+
+		if ( event && event.type === "mouseleave" ) {
+			$.each( this.parents, function( id, parent ) {
+				$( parent.element ).attr( "title", parent.title );
+				delete that.parents[ id ];
+			});
+		}
+
+		this.closing = true;
+		this._trigger( "close", event, { tooltip: tooltip } );
+		this.closing = false;
+	},
+
+	_tooltip: function( element ) {
+		var id = "ui-tooltip-" + increments++,
+			tooltip = $( "<div>" )
+				.attr({
+					id: id,
+					role: "tooltip"
+				})
+				.addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
+					( this.options.tooltipClass || "" ) );
+		$( "<div>" )
+			.addClass( "ui-tooltip-content" )
+			.appendTo( tooltip );
+		tooltip.appendTo( this.document[0].body );
+		this.tooltips[ id ] = element;
+		return tooltip;
+	},
+
+	_find: function( target ) {
+		var id = target.data( "ui-tooltip-id" );
+		return id ? $( "#" + id ) : $();
+	},
+
+	_removeTooltip: function( tooltip ) {
+		tooltip.remove();
+		delete this.tooltips[ tooltip.attr( "id" ) ];
+	},
+
+	_destroy: function() {
+		var that = this;
+
+		// close open tooltips
+		$.each( this.tooltips, function( id, element ) {
+			// Delegate to close method to handle common cleanup
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = element[0];
+			that.close( event, true );
+
+			// Remove immediately; destroying an open tooltip doesn't use the
+			// hide animation
+			$( "#" + id ).remove();
+
+			// Restore the title
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+				element.removeData( "ui-tooltip-title" );
+			}
+		});
+	}
+});
+
+}( jQuery ) );
Index: /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.widget.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.widget.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/jquery.ui.widget.js	(revision 25596)
@@ -0,0 +1,521 @@
+/*!
+ * jQuery UI Widget 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple widgets (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			// 1.9 BC for #7810
+			// TODO remove dual storage
+			.removeData( this.widgetName )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( value === undefined ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( value === undefined ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
+				.attr( "aria-disabled", value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOption( "disabled", false );
+	},
+	disable: function() {
+		return this._setOption( "disabled", true );
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.accordion.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.accordion.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.accordion.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.accordion.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.1",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),!t.collapsible&&(t.active===!1||t.active==null)&&(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e(),content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels();if(t.active===!1&&t.collapsible===!0||!this.headers.length)t.active=!1,this.active=e();t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var t,r=this.options,i=r.heightStyle,s=this.element.parent(),o=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n);this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(t){var n=e(this),r=n.attr("id"),i=n.next(),s=i.attr("id");r||(r=o+"-header-"+t,n.attr("id",r)),s||(s=o+"-panel-"+t,i.attr("id",s)),n.attr("aria-controls",s),i.attr("aria-labelledby",r)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(r.event),i==="fill"?(t=s.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):i==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.autocomplete.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.autocomplete.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.autocomplete.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.autocomplete.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.10.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r,i=this.element[0].nodeName.toLowerCase(),s=i==="textarea",o=i==="input";this.isMultiLine=s?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[s||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({input:e(),role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this._appendTo()),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty();this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.button.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.button.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.button.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.button.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="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",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(n=n.replace(/'/g,"\\'"),r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.10.1",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):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);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.10.1",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.core.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.core.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.core.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.core.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.10.1",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,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,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.datepicker.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.datepicker.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.datepicker.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.datepicker.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,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:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,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:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=o(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function o(t){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(n,"mouseout",function(){e(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(n,"mouseover",function(){e.datepicker._isDisabledDatepicker(i.inline?t.parent()[0]:i.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).addClass("ui-datepicker-next-hover"))})}function u(t,n){e.extend(t,n);for(var r in n)n[r]==null&&(t[r]=n[r]);return t}e.extend(e.ui,{datepicker:{version:"1.10.1"}});var n="datepicker",r=(new Date).getTime(),i;e.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return u(this._defaults,e||{}),this},_attachDatepicker:function(t,n){var r,i,s;r=t.nodeName.toLowerCase(),i=r==="div"||r==="span",t.id||(this.uuid+=1,t.id="dp"+this.uuid),s=this._newInst(e(t),i),s.settings=e.extend({},n||{}),r==="input"?this._connectDatepicker(t,s):i&&this._inlineDatepicker(t,s)},_newInst:function(t,n){var r=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:r,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:n,dpDiv:n?o(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,r){var i=e(t);r.append=e([]),r.trigger=e([]);if(i.hasClass(this.markerClassName))return;this._attachments(i,r),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(r),e.data(t,n,r),r.settings.disabled&&this._disableDatepicker(t)},_attachments:function(t,n){var r,i,s,o=this._get(n,"appendText"),u=this._get(n,"isRTL");n.append&&n.append.remove(),o&&(n.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[u?"before":"after"](n.append)),t.unbind("focus",this._showDatepicker),n.trigger&&n.trigger.remove(),r=this._get(n,"showOn"),(r==="focus"||r==="both")&&t.focus(this._showDatepicker);if(r==="button"||r==="both")i=this._get(n,"buttonText"),s=this._get(n,"buttonImage"),n.trigger=e(this._get(n,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:s,alt:i,title:i}):e("<button type='button'></button>").addClass(this._triggerClass).html(s?e("<img/>").attr({src:s,alt:i,title:i}):i)),t[u?"before":"after"](n.trigger),n.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1})},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,n,r,i,s=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){n=0,r=0;for(i=0;i<e.length;i++)e[i].length>n&&(n=e[i].length,r=i);return r},s.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),s.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-s.getDay())),e.input.attr("size",this._formatDate(e,s).length)}},_inlineDatepicker:function(t,r){var i=e(t);if(i.hasClass(this.markerClassName))return;i.addClass(this.markerClassName).append(r.dpDiv),e.data(t,n,r),this._setDate(r,this._getDefaultDate(r),!0),this._updateDatepicker(r),this._updateAlternate(r),r.settings.disabled&&this._disableDatepicker(t),r.dpDiv.css("display","block")},_dialogDatepicker:function(t,r,i,s,o){var a,f,l,c,h,p=this._dialogInst;return p||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+a+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],n,p)),u(p.settings,s||{}),r=r&&r.constructor===Date?this._formatDate(p,r):r,this._dialogInput.val(r),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(f=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,h=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[f/2-100+c,l/2-150+h]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],n,p),this},_destroyDatepicker:function(t){var r,i=e(t),s=e.data(t,n);if(!i.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase(),e.removeData(t,n),r==="input"?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r==="div"||r==="span")&&i.removeClass(this.markerClassName).empty()},_enableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e})},_disableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,n)}catch(r){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(n,r,i){var s,o,a,f,l=this._getInst(n);if(arguments.length===2&&typeof r=="string")return r==="defaults"?e.extend({},e.datepicker._defaults):l?r==="all"?e.extend({},l.settings):this._get(l,r):null;s=r||{},typeof r=="string"&&(s={},s[r]=i),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(n,!0),a=this._getMinMaxDate(l,"min"),f=this._getMinMaxDate(l,"max"),u(l.settings,s),a!==null&&s.dateFormat!==t&&s.minDate===t&&(l.settings.minDate=this._formatDate(l,a)),f!==null&&s.dateFormat!==t&&s.maxDate===t&&(l.settings.maxDate=this._formatDate(l,f)),"disabled"in s&&(s.disabled?this._disableDatepicker(n):this._enableDatepicker(n)),this._attachments(e(n),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l))},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(t){var n,r,i,s=e.datepicker._getInst(t.target),o=!0,u=s.dpDiv.is(".ui-datepicker-rtl");s._keyEvent=!0;if(e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return i=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",s.dpDiv),i[0]&&e.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),n=e.datepicker._get(s,"onSelect"),n?(r=e.datepicker._formatDate(s),n.apply(s.input?s.input[0]:null,[r,s])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else t.keyCode===36&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var n,r,i=e.datepicker._getInst(t.target);if(e.datepicker._get(i,"constrainInput"))return n=e.datepicker._possibleChars(e.datepicker._get(i,"dateFormat")),r=String.fromCharCode(t.charCode==null?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||r<" "||!n||n.indexOf(r)>-1},_doKeyUp:function(t){var n,r=e.datepicker._getInst(t.target);if(r.input.val()!==r.lastVal)try{n=e.datepicker.parseDate(e.datepicker._get(r,"dateFormat"),r.input?r.input.val():null,e.datepicker._getFormatConfig(r)),n&&(e.datepicker._setDateFromField(r),e.datepicker._updateAlternate(r),e.datepicker._updateDatepicker(r))}catch(i){}return!0},_showDatepicker:function(t){t=t.target||t,t.nodeName.toLowerCase()!=="input"&&(t=e("input",t.parentNode)[0]);if(e.datepicker._isDisabledDatepicker(t)||e.datepicker._lastInput===t)return;var n,r,i,s,o,a,f;n=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==n&&(e.datepicker._curInst.dpDiv.stop(!0,!0),n&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),r=e.datepicker._get(n,"beforeShow"),i=r?r.apply(t,[t,n]):{};if(i===!1)return;u(n.settings,i),n.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(n),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),s=!1,e(t).parents().each(function(){return s|=e(this).css("position")==="fixed",!s}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(n),o=e.datepicker._checkOffset(n,o,s),n.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":s?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),n.inline||(a=e.datepicker._get(n,"showAnim"),f=e.datepicker._get(n,"duration"),n.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[a]?n.dpDiv.show(a,e.datepicker._get(n,"showOptions"),f):n.dpDiv[a||"show"](a?f:null),n.input.is(":visible")&&!n.input.is(":disabled")&&n.input.focus(),e.datepicker._curInst=n)},_updateDatepicker:function(t){this.maxRows=4,i=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var n,r=this._getNumberOfMonths(t),s=r[1],o=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",o*s+"em"),t.dpDiv[(r[0]!==1||r[1]!==1?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&t.input[0]!==document.activeElement&&t.input.focus(),t.yearshtml&&(n=t.yearshtml,setTimeout(function(){n===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),n=t.yearshtml=null},0))},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(t,n,r){var i=t.dpDiv.outerWidth(),s=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,u=t.input?t.input.outerHeight():0,a=document.documentElement.clientWidth+(r?0:e(document).scrollLeft()),f=document.documentElement.clientHeight+(r?0:e(document).scrollTop());return n.left-=this._get(t,"isRTL")?i-o:0,n.left-=r&&n.left===t.input.offset().left?e(document).scrollLeft():0,n.top-=r&&n.top===t.input.offset().top+u?e(document).scrollTop():0,n.left-=Math.min(n.left,n.left+i>a&&a>i?Math.abs(n.left+i-a):0),n.top-=Math.min(n.top,n.top+s>f&&f>s?Math.abs(s+u):0),n},_findPos:function(t){var n,r=this._getInst(t),i=this._get(r,"isRTL");while(t&&(t.type==="hidden"||t.nodeType!==1||e.expr.filters.hidden(t)))t=t[i?"previousSibling":"nextSibling"];return n=e(t).offset(),[n.left,n.top]},_hideDatepicker:function(t){var r,i,s,o,u=this._curInst;if(!u||t&&u!==e.data(t,n))return;this._datepickerShowing&&(r=this._get(u,"showAnim"),i=this._get(u,"duration"),s=function(){e.datepicker._tidyDialog(u)},e.effects&&(e.effects.effect[r]||e.effects[r])?u.dpDiv.hide(r,e.datepicker._get(u,"showOptions"),i,s):u.dpDiv[r==="slideDown"?"slideUp":r==="fadeIn"?"fadeOut":"hide"](r?i:null,s),r||s(),this._datepickerShowing=!1,o=this._get(u,"onClose"),o&&o.apply(u.input?u.input[0]:null,[u.input?u.input.val():"",u]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(!e.datepicker._curInst)return;var n=e(t.target),r=e.datepicker._getInst(n[0]);(n[0].id!==e.datepicker._mainDivId&&n.parents("#"+e.datepicker._mainDivId).length===0&&!n.hasClass(e.datepicker.markerClassName)&&!n.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||n.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==r)&&e.datepicker._hideDatepicker()},_adjustDate:function(t,n,r){var i=e(t),s=this._getInst(i[0]);if(this._isDisabledDatepicker(i[0]))return;this._adjustInstDate(s,n+(r==="M"?this._get(s,"showCurrentAtPos"):0),r),this._updateDatepicker(s)},_gotoToday:function(t){var n,r=e(t),i=this._getInst(r[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(n=new Date,i.selectedDay=n.getDate(),i.drawMonth=i.selectedMonth=n.getMonth(),i.drawYear=i.selectedYear=n.getFullYear()),this._notifyChange(i),this._adjustDate(r)},_selectMonthYear:function(t,n,r){var i=e(t),s=this._getInst(i[0]);s["selected"+(r==="M"?"Month":"Year")]=s["draw"+(r==="M"?"Month":"Year")]=parseInt(n.options[n.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(i)},_selectDay:function(t,n,r,i){var s,o=e(t);if(e(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))return;s=this._getInst(o[0]),s.selectedDay=s.currentDay=e("a",i).html(),s.selectedMonth=s.currentMonth=n,s.selectedYear=s.currentYear=r,this._selectDate(t,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(t){var n=e(t);this._selectDate(n,"")},_selectDate:function(t,n){var r,i=e(t),s=this._getInst(i[0]);n=n!=null?n:this._formatDate(s),s.input&&s.input.val(n),this._updateAlternate(s),r=this._get(s,"onSelect"),r?r.apply(s.input?s.input[0]:null,[n,s]):s.input&&s.input.trigger("change"),s.inline?this._updateDatepicker(s):(this._hideDatepicker(),this._lastInput=s.input[0],typeof s.input[0]!="object"&&s.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var n,r,i,s=this._get(t,"altField");s&&(n=this._get(t,"altFormat")||this._get(t,"dateFormat"),r=this._getDate(t),i=this.formatDate(n,r,this._getFormatConfig(t)),e(s).each(function(){e(this).val(i)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t,n=new Date(e.getTime());return n.setDate(n.getDate()+4-(n.getDay()||7)),t=n.getTime(),n.setMonth(0),n.setDate(1),Math.floor(Math.round((t-n)/864e5)/7)+1},parseDate:function(t,n,r){if(t==null||n==null)throw"Invalid arguments";n=typeof n=="object"?n.toString():n+"";if(n==="")return null;var i,s,o,u=0,a=(r?r.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=typeof a!="string"?a:(new Date).getFullYear()%100+parseInt(a,10),l=(r?r.dayNamesShort:null)||this._defaults.dayNamesShort,c=(r?r.dayNames:null)||this._defaults.dayNames,h=(r?r.monthNamesShort:null)||this._defaults.monthNamesShort,p=(r?r.monthNames:null)||this._defaults.monthNames,d=-1,v=-1,m=-1,g=-1,y=!1,b,w=function(e){var n=i+1<t.length&&t.charAt(i+1)===e;return n&&i++,n},E=function(e){var t=w(e),r=e==="@"?14:e==="!"?20:e==="y"&&t?4:e==="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=n.substring(u).match(i);if(!s)throw"Missing number at position "+u;return u+=s[0].length,parseInt(s[0],10)},S=function(t,r,i){var s=-1,o=e.map(w(t)?i:r,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});e.each(o,function(e,t){var r=t[1];if(n.substr(u,r.length).toLowerCase()===r.toLowerCase())return s=t[0],u+=r.length,!1});if(s!==-1)return s+1;throw"Unknown name at position "+u},x=function(){if(n.charAt(u)!==t.charAt(i))throw"Unexpected literal at position "+u;u++};for(i=0;i<t.length;i++)if(y)t.charAt(i)==="'"&&!w("'")?y=!1:x();else switch(t.charAt(i)){case"d":m=E("d");break;case"D":S("D",l,c);break;case"o":g=E("o");break;case"m":v=E("m");break;case"M":v=S("M",h,p);break;case"y":d=E("y");break;case"@":b=new Date(E("@")),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"!":b=new Date((E("!")-this._ticksTo1970)/1e4),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"'":w("'")?x():y=!0;break;default:x()}if(u<n.length){o=n.substr(u);if(!/^\s+/.test(o))throw"Extra/unparsed characters found in date: "+o}d===-1?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=f?0:-100));if(g>-1){v=1,m=g;do{s=this._getDaysInMonth(d,v-1);if(m<=s)break;v++,m-=s}while(!0)}b=this._daylightSavingAdjust(new Date(d,v-1,m));if(b.getFullYear()!==d||b.getMonth()+1!==v||b.getDate()!==m)throw"Invalid date";return b},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(e,t,n){if(!t)return"";var r,i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=function(t){var n=r+1<e.length&&e.charAt(r+1)===t;return n&&r++,n},f=function(e,t,n){var r=""+t;if(a(e))while(r.length<n)r="0"+r;return r},l=function(e,t,n,r){return a(e)?r[t]:n[t]},c="",h=!1;if(t)for(r=0;r<e.length;r++)if(h)e.charAt(r)==="'"&&!a("'")?h=!1:c+=e.charAt(r);else switch(e.charAt(r)){case"d":c+=f("d",t.getDate(),2);break;case"D":c+=l("D",t.getDay(),i,s);break;case"o":c+=f("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":c+=f("m",t.getMonth()+1,2);break;case"M":c+=l("M",t.getMonth(),o,u);break;case"y":c+=a("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":c+=t.getTime();break;case"!":c+=t.getTime()*1e4+this._ticksTo1970;break;case"'":a("'")?c+="'":h=!0;break;default:c+=e.charAt(r)}return c},_possibleChars:function(e){var t,n="",r=!1,i=function(n){var r=t+1<e.length&&e.charAt(t+1)===n;return r&&t++,r};for(t=0;t<e.length;t++)if(r)e.charAt(t)==="'"&&!i("'")?r=!1:n+=e.charAt(t);else switch(e.charAt(t)){case"d":case"m":case"y":case"@":n+="0123456789";break;case"D":case"M":return null;case"'":i("'")?n+="'":r=!0;break;default:n+=e.charAt(t)}return n},_get:function(e,n){return e.settings[n]!==t?e.settings[n]:this._defaults[n]},_setDateFromField:function(e,t){if(e.input.val()===e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i=this._getDefaultDate(e),s=i,o=this._getFormatConfig(e);try{s=this.parseDate(n,r,o)||i}catch(u){r=t?"":r}e.selectedDay=s.getDate(),e.drawMonth=e.selectedMonth=s.getMonth(),e.drawYear=e.selectedYear=s.getFullYear(),e.currentDay=r?s.getDate():0,e.currentMonth=r?s.getMonth():0,e.currentYear=r?s.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,n,r){var i=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(n){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),n,e.datepicker._getFormatConfig(t))}catch(r){}var i=(n.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=i.getFullYear(),o=i.getMonth(),u=i.getDate(),a=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,f=a.exec(n);while(f){switch(f[2]||"d"){case"d":case"D":u+=parseInt(f[1],10);break;case"w":case"W":u+=parseInt(f[1],10)*7;break;case"m":case"M":o+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o));break;case"y":case"Y":s+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o))}f=a.exec(n)}return new Date(s,o,u)},o=n==null||n===""?r:typeof n=="string"?s(n):typeof n=="number"?isNaN(n)?r:i(n):new Date(n.getTime());return o=o&&o.toString()==="Invalid Date"?r:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!==e.selectedMonth||s!==e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()===""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var n=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,-n,"M")},next:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,+n,"M")},hide:function(){window["DP_jQuery_"+r].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+r].datepicker._gotoToday(i)},selectDay:function(){return window["DP_jQuery_"+r].datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q=new Date,R=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth(),q.getDate())),U=this._get(e,"isRTL"),z=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),X=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),$=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),K=V[0]!==1||V[1]!==1,Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(e,"min"),Y=this._getMinMaxDate(e,"max"),Z=e.drawMonth-$,et=e.drawYear;Z<0&&(Z+=12,et--);if(Y){t=this._daylightSavingAdjust(new Date(Y.getFullYear(),Y.getMonth()-V[0]*V[1]+1,Y.getDate())),t=G&&t<G?G:t;while(this._daylightSavingAdjust(new Date(et,Z,1))>t)Z--,Z<0&&(Z=11,et--)}e.drawMonth=Z,e.drawYear=et,n=this._get(e,"prevText"),n=X?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):n,r=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>",i=this._get(e,"nextText"),i=X?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>",o=this._get(e,"currentText"),u=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,o=X?this.formatDate(o,u,this._getFormatConfig(e)):o,a=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",f=z?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(U?a:"")+(this._isInRange(e,u)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(U?"":a)+"</div>":"",l=parseInt(this._get(e,"firstDay"),10),l=isNaN(l)?0:l,c=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),d=this._get(e,"monthNames"),v=this._get(e,"monthNamesShort"),m=this._get(e,"beforeShowDay"),g=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),w="",E;for(S=0;S<V[0];S++){x="",this.maxRows=4;for(T=0;T<V[1];T++){N=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),C=" ui-corner-all",k="";if(K){k+="<div class='ui-datepicker-group";if(V[1]>1)switch(T){case 0:k+=" ui-datepicker-group-first",C=" ui-corner-"+(U?"right":"left");break;case V[1]-1:k+=" ui-datepicker-group-last",C=" ui-corner-"+(U?"left":"right");break;default:k+=" ui-datepicker-group-middle",C=""}k+="'>"}k+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+C+"'>"+(/all|left/.test(C)&&S===0?U?s:r:"")+(/all|right/.test(C)&&S===0?U?r:s:"")+this._generateMonthYearHeader(e,Z,et,G,Y,S>0||T>0,d,v)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",L=c?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"";for(E=0;E<7;E++)A=(E+l)%7,L+="<th"+((E+l+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+h[A]+"'>"+p[A]+"</span></th>";k+=L+"</tr></thead><tbody>",O=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,O)),M=(this._getFirstDayOfMonth(et,Z)-l+7)%7,_=Math.ceil((M+O)/7),D=K?this.maxRows>_?this.maxRows:_:_,this.maxRows=D,P=this._daylightSavingAdjust(new Date(et,Z,1-M));for(H=0;H<D;H++){k+="<tr>",B=c?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(P)+"</td>":"";for(E=0;E<7;E++)j=m?m.apply(e.input?e.input[0]:null,[P]):[!0,""],F=P.getMonth()!==Z,I=F&&!y||!j[0]||G&&P<G||Y&&P>Y,B+="<td class='"+((E+l+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(P.getTime()===N.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===P.getTime()&&b.getTime()===N.getTime()?" "+this._dayOverClass:"")+(I?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!g?"":" "+j[1]+(P.getTime()===Q.getTime()?" "+this._currentClass:"")+(P.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+((!F||g)&&j[2]?" title='"+j[2].replace(/'/g,"&#39;")+"'":"")+(I?"":" data-handler='selectDay' data-event='click' data-month='"+P.getMonth()+"' data-year='"+P.getFullYear()+"'")+">"+(F&&!g?"&#xa0;":I?"<span class='ui-state-default'>"+P.getDate()+"</span>":"<a class='ui-state-default"+(P.getTime()===R.getTime()?" ui-state-highlight":"")+(P.getTime()===Q.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+P.getDate()+"</a>")+"</td>",P.setDate(P.getDate()+1),P=this._daylightSavingAdjust(P);k+=B+"</tr>"}Z++,Z>11&&(Z=0,et++),k+="</tbody></table>"+(K?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=k}w+=x}return w+=f,e._keyEvent=!1,w},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a,f,l,c,h,p,d,v,m=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",w="";if(s||!m)w+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{a=r&&r.getFullYear()===n,f=i&&i.getFullYear()===n,w+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";for(l=0;l<12;l++)(!a||l>=r.getMonth())&&(!f||l<=i.getMonth())&&(w+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+u[l]+"</option>");w+="</select>"}y||(b+=w+(s||!m||!g?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!g)b+="<span class='ui-datepicker-year'>"+n+"</span>";else{c=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?n+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t},d=p(c[0]),v=Math.max(d,p(c[1]||"")),d=r?Math.max(d,r.getFullYear()):d,v=i?Math.min(v,i.getFullYear()):v,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";for(;d<=v;d++)e.yearshtml+="<option value='"+d+"'"+(d===n?" selected='selected'":"")+">"+d+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}}return b+=this._get(e,"yearSuffix"),y&&(b+=(s||!m||!g?"&#xa0;":"")+w),b+="</div>",b},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n==="Y"?t:0),i=e.drawMonth+(n==="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n==="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n==="M"||n==="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return r&&i>r?r:i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n,r,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),o=null,u=null,a=this._get(e,"yearRange");return a&&(n=a.split(":"),r=(new Date).getFullYear(),o=parseInt(n[0],10),u=parseInt(n[1],10),n[0].match(/[+\-].*/)&&(o+=r),n[1].match(/[+\-].*/)&&(u+=r)),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!o||t.getFullYear()>=o)&&(!u||t.getFullYear()<=u)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),e("#"+e.datepicker._mainDivId).length===0&&e("body").append(e.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return typeof t!="string"||t!=="isDisabled"&&t!=="getDate"&&t!=="widget"?t==="option"&&arguments.length===2&&typeof arguments[1]=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n)):this.each(function(){typeof t=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(n)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n))},e.datepicker=new s,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.1",window["DP_jQuery_"+r]=e})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.dialog.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.dialog.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.dialog.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.dialog.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},r={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.10.1",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var n=this;if(!this._isOpen||this._trigger("beforeClose",t)===!1)return;this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||e(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)})},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var n=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return n&&!t&&this._trigger("focus",e),n},open:function(){var t=this;if(this._isOpen){this._moveToTop()&&this._focusTabbable();return}this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._trigger("open")},_focusTabbable:function(){var e=this.element.find("[autofocus]");e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function n(){var t=this.document[0].activeElement,n=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);n||this._focusTabbable()}t.preventDefault(),n.call(this),this._delay(n)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE){t.preventDefault(),this.close(t);return}if(t.keyCode!==e.ui.keyCode.TAB)return;var n=this.uiDialog.find(":tabbable"),r=n.filter(":first"),i=n.filter(":last");t.target!==i[0]&&t.target!==this.uiDialog[0]||!!t.shiftKey?(t.target===r[0]||t.target===this.uiDialog[0])&&t.shiftKey&&(i.focus(1),t.preventDefault()):(r.focus(1),t.preventDefault())},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty();if(e.isEmptyObject(n)||e.isArray(n)&&!n.length){this.uiDialog.removeClass("ui-dialog-buttons");return}e.each(n,function(n,r){var i,s;r=e.isFunction(r)?{click:r,text:n}:r,r=e.extend({type:"button"},r),i=r.click,r.click=function(){i.apply(t.element[0],arguments)},s={icons:r.icons,text:r.showText},delete r.icons,delete r.showText,e("<button></button>",r).button(s).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._blockFrames(),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._unblockFrames(),t._trigger("dragStop",i,r(s))}})},_makeResizable:function(){function o(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var t=this,n=this.options,r=n.resizable,i=this.uiDialog.css("position"),s=typeof r=="string"?r:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:s,start:function(n,r){e(this).addClass("ui-dialog-resizing"),t._blockFrames(),t._trigger("resizeStart",n,o(r))},resize:function(e,n){t._trigger("resize",e,o(n))},stop:function(r,i){n.height=e(this).height(),n.width=e(this).width(),e(this).removeClass("ui-dialog-resizing"),t._unblockFrames(),t._trigger("resizeStop",r,o(i))}}).css("position",i)},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,o={};e.each(t,function(e,t){i._setOption(e,t),e in n&&(s=!0),e in r&&(o[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(e,t){var n,r,i=this.uiDialog;e==="dialogClass"&&i.removeClass(this.options.dialogClass).addClass(t);if(e==="disabled")return;this._super(e,t),e==="appendTo"&&this.uiDialog.appendTo(this._appendTo()),e==="buttons"&&this._createButtons(),e==="closeText"&&this.uiDialogTitlebarClose.button({label:""+t}),e==="draggable"&&(n=i.is(":data(ui-draggable)"),n&&!t&&i.draggable("destroy"),!n&&t&&this._makeDraggable()),e==="position"&&this._position(),e==="resizable"&&(r=i.is(":data(ui-resizable)"),r&&!t&&i.resizable("destroy"),r&&typeof t=="string"&&i.resizable("option","handles",t),!r&&t!==!1&&this._makeResizable()),e==="title"&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title"))},_size:function(){var e,t,n,r=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),r.minWidth>r.width&&(r.width=r.minWidth),e=this.uiDialog.css({height:"auto",width:r.width}).outerHeight(),t=Math.max(0,r.minHeight-e),n=typeof r.maxHeight=="number"?Math.max(0,r.maxHeight-e):"none",r.height==="auto"?this.element.css({minHeight:t,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,r.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_createOverlay:function(){if(!this.options.modal)return;e.ui.dialog.overlayInstances||this._delay(function(){e.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(t){!e(t.target).closest(".ui-dialog").length&&!e(t.target).closest(".ui-datepicker").length&&(t.preventDefault(),e(".ui-dialog:visible:last .ui-dialog-content").data("ui-dialog")._focusTabbable())})}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),e.ui.dialog.overlayInstances++},_destroyOverlay:function(){if(!this.options.modal)return;this.overlay&&(e.ui.dialog.overlayInstances--,e.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),e.ui.dialog.overlayInstances=0,e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{_position:function(){var t=this.options.position,n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.draggable.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.draggable.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.draggable.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.draggable.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){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(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e("<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(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.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},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.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";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n,r=this,i=!1,s=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),n=this.element[0];while(n&&(n=n.parentNode))n===document&&(i=!0);return!i&&this.options.helper==="original"?!1:(this.options.revert==="invalid"&&!s||this.options.revert==="valid"&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){r._trigger("stop",t)!==!1&&r._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1)},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper==="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo==="parent"?this.element[0].parentNode:n.appendTo),r[0]!==this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}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 t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[i.containment==="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,i.containment==="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(i.containment==="document"?0:e(window).scrollLeft())+e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(i.containment==="document"?0:e(window).scrollTop())+(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(i.containment)&&i.containment.constructor!==Array){n=e(i.containment),r=n[0];if(!r)return;t=e(r).css("overflow")!=="hidden",this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(t?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else i.containment.constructor===Array&&(this.containment=i.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i,s,o=this.options,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName),f=t.pageX,l=t.pageY;return this.originalPosition&&(this.containment&&(this.relative_container?(r=this.relative_container.offset(),n=[this.containment[0]+r.left,this.containment[1]+r.top,this.containment[2]+r.left,this.containment[3]+r.top]):n=this.containment,t.pageX-this.offset.click.left<n[0]&&(f=n[0]+this.offset.click.left),t.pageY-this.offset.click.top<n[1]&&(l=n[1]+this.offset.click.top),t.pageX-this.offset.click.left>n[2]&&(f=n[2]+this.offset.click.left),t.pageY-this.offset.click.top>n[3]&&(l=n[3]+this.offset.click.top)),o.grid&&(i=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=n?i-this.offset.click.top>=n[1]||i-this.offset.click.top>n[3]?i:i-this.offset.click.top>=n[1]?i-o.grid[1]:i+o.grid[1]:i,s=o.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,f=n?s-this.offset.click.left>=n[0]||s-this.offset.click.left>n[2]?s:s-this.offset.click.left>=n[0]?s-o.grid[0]:s+o.grid[0]:s)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.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=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t==="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("ui-draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"ui-sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("ui-draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper==="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("ui-draggable"),i=this;e.each(r.sortables,function(){var s=!1,o=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(s=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(o.instance.element[0],this.instance.element[0])&&(s=!1),s})),s?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),n=e(this).data("ui-draggable").options;t.css("cursor")&&(n._cursor=t.css("cursor")),t.css("cursor",n.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&t.scrollParent[0].tagName!=="HTML"&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var n=e(this).data("ui-draggable"),r=n.options,i=!1;if(n.scrollParent[0]!==document&&n.scrollParent[0].tagName!=="HTML"){if(!r.axis||r.axis!=="x")n.overflowOffset.top+n.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-n.overflowOffset.top<r.scrollSensitivity&&(n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop-r.scrollSpeed);if(!r.axis||r.axis!=="y")n.overflowOffset.left+n.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-n.overflowOffset.left<r.scrollSensitivity&&(n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft-r.scrollSpeed)}else{if(!r.axis||r.axis!=="x")t.pageY-e(document).scrollTop()<r.scrollSensitivity?i=e(document).scrollTop(e(document).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<r.scrollSensitivity&&(i=e(document).scrollTop(e(document).scrollTop()+r.scrollSpeed));if(!r.axis||r.axis!=="y")t.pageX-e(document).scrollLeft()<r.scrollSensitivity?i=e(document).scrollLeft(e(document).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<r.scrollSensitivity&&(i=e(document).scrollLeft(e(document).scrollLeft()+r.scrollSpeed))}i!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(n,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),n=t.options;t.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var n=e(this),r=n.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:n.outerWidth(),height:n.outerHeight(),top:r.top,left:r.left})})},drag:function(t,n){var r,i,s,o,u,a,f,l,c,h,p=e(this).data("ui-draggable"),d=p.options,v=d.snapTolerance,m=n.offset.left,g=m+p.helperProportions.width,y=n.offset.top,b=y+p.helperProportions.height;for(c=p.snapElements.length-1;c>=0;c--){u=p.snapElements[c].left,a=u+p.snapElements[c].width,f=p.snapElements[c].top,l=f+p.snapElements[c].height;if(!(u-v<m&&m<a+v&&f-v<y&&y<l+v||u-v<m&&m<a+v&&f-v<b&&b<l+v||u-v<g&&g<a+v&&f-v<y&&y<l+v||u-v<g&&g<a+v&&f-v<b&&b<l+v)){p.snapElements[c].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=!1;continue}d.snapMode!=="inner"&&(r=Math.abs(f-b)<=v,i=Math.abs(l-y)<=v,s=Math.abs(u-g)<=v,o=Math.abs(a-m)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f-p.helperProportions.height,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u-p.helperProportions.width}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a}).left-p.margins.left)),h=r||i||s||o,d.snapMode!=="outer"&&(r=Math.abs(f-y)<=v,i=Math.abs(l-b)<=v,s=Math.abs(u-m)<=v,o=Math.abs(a-g)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[c].snapping&&(r||i||s||o||h)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=r||i||s||o||h}}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,n=this.data("ui-draggable").options,r=e.makeArray(e(n.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!r.length)return;t=parseInt(e(r[0]).css("zIndex"),10)||0,e(r).each(function(n){e(this).css("zIndex",t+n)}),this.css("zIndex",t+r.length)}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.droppable.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.droppable.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.droppable.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.droppable.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.droppable",{version:"1.10.1",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,n=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=0,n=e.ui.ddmanager.droppables[this.options.scope];for(;t<n.length;t++)n[t]===this&&n.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t==="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current,i=!1;return!r||(r.currentItem||r.element)[0]===this.element[0]?!1:(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope===r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1)},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,t,r){if(!t.offset)return!1;var i,s,o=(e.positionAbs||e.position.absolute).left,u=o+e.helperProportions.width,a=(e.positionAbs||e.position.absolute).top,f=a+e.helperProportions.height,l=t.offset.left,c=l+t.proportions.width,h=t.offset.top,p=h+t.proportions.height;switch(r){case"fit":return l<=o&&u<=c&&h<=a&&f<=p;case"intersect":return l<o+e.helperProportions.width/2&&u-e.helperProportions.width/2<c&&h<a+e.helperProportions.height/2&&f-e.helperProportions.height/2<p;case"pointer":return i=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,s=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,n(s,h,t.proportions.height)&&n(i,l,t.proportions.width);case"touch":return(a>=h&&a<=p||f>=h&&f<=p||a<h&&f>p)&&(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r,i,s=e.ui.ddmanager.droppables[t.options.scope]||[],o=n?n.type:null,u=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(r=0;r<s.length;r++){if(s[r].options.disabled||t&&!s[r].accept.call(s[r].element[0],t.currentItem||t.element))continue;for(i=0;i<u.length;i++)if(u[i]===s[r].element[0]){s[r].proportions.height=0;continue e}s[r].visible=s[r].element.css("display")!=="none";if(!s[r].visible)continue;o==="mousedown"&&s[r]._activate.call(s[r],n),s[r].offset=s[r].element.offset(),s[r].proportions={width:s[r].element[0].offsetWidth,height:s[r].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r,i,s,o=e.ui.intersect(t,this,this.options.tolerance),u=!o&&this.isover?"isout":o&&!this.isover?"isover":null;if(!u)return;this.options.greedy&&(i=this.options.scope,s=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===i}),s.length&&(r=e.data(s[0],"ui-droppable"),r.greedyChild=u==="isover")),r&&u==="isover"&&(r.isover=!1,r.isout=!0,r._out.call(r,n)),this[u]=!0,this[u==="isout"?"isover":"isout"]=!1,this[u==="isover"?"_over":"_out"].call(this,n),r&&u==="isout"&&(r.isout=!1,r.isover=!0,r._over.call(r,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-blind.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-blind.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-blind.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-blind.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-bounce.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-bounce.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-bounce.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-bounce.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-clip.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-clip.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-clip.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-clip.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-drop.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-drop.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-drop.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-drop.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-explode.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-explode.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-explode.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-explode.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fade.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fade.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fade.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-fade.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fold.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fold.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-fold.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-fold.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-highlight.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-highlight.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-highlight.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-highlight.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-pulsate.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-pulsate.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-pulsate.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-pulsate.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-scale.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-scale.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-scale.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-scale.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-shake.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-shake.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-shake.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-shake.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-slide.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-slide.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-slide.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-slide.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-transfer.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-transfer.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect-transfer.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect-transfer.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.effect.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.effect.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+jQuery.effects||function(e,t){var n="ui-effects-";e.effects={effect:{}},function(e,t){function h(e,t,n){var r=u[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function p(t){var n=s(),r=n._rgba=[];return t=t.toLowerCase(),c(i,function(e,i){var s,u=i.re.exec(t),a=u&&i.parse(u),f=i.space||"rgba";if(a)return s=n[f](a),n[o[f].cache]=s[o[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&e.extend(r,l.transparent),n):l[t]}function d(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var n="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,i=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],s=e.Color=function(t,n,r,i){return new e.Color.fn.parse(t,n,r,i)},o={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},a=s.support={},f=e("<p>")[0],l,c=e.each;f.style.cssText="background-color:rgba(1,1,1,.5)",a.rgba=f.style.backgroundColor.indexOf("rgba")>-1,c(o,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),s.fn=e.extend(s.prototype,{parse:function(n,r,i,u){if(n===t)return this._rgba=[null,null,null,null],this;if(n.jquery||n.nodeType)n=e(n).css(r),r=t;var a=this,f=e.type(n),d=this._rgba=[];r!==t&&(n=[n,r,i,u],f="array");if(f==="string")return this.parse(p(n)||l._default);if(f==="array")return c(o.rgba.props,function(e,t){d[t.idx]=h(n[t.idx],t)}),this;if(f==="object")return n instanceof s?c(o,function(e,t){n[t.cache]&&(a[t.cache]=n[t.cache].slice())}):c(o,function(t,r){var i=r.cache;c(r.props,function(e,t){if(!a[i]&&r.to){if(e==="alpha"||n[e]==null)return;a[i]=r.to(a._rgba)}a[i][t.idx]=h(n[e],t,!0)}),a[i]&&e.inArray(null,a[i].slice(0,3))<0&&(a[i][3]=1,r.from&&(a._rgba=r.from(a[i])))}),this},is:function(e){var t=s(e),n=!0,r=this;return c(o,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],c(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return c(o,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=s(e),r=n._space(),i=o[r],a=this.alpha()===0?s("transparent"):this,f=a[i.cache]||i.to(a._rgba),l=f.slice();return n=n[i.cache],c(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],a=u[r.type]||{};if(o===null)return;s===null?l[i]=o:(a.mod&&(o-s>a.mod/2?s+=a.mod:s-o>a.mod/2&&(s-=a.mod)),l[i]=h((o-s)*t+s,r))}),this[r](l)},blend:function(t){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=s(t)._rgba;return s(e.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var t="rgba(",n=e.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),t="rgb("),t+n.join()+")"},toHslaString:function(){var t="hsla(",n=e.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),t="hsl("),t+n.join()+")"},toHexString:function(t){var n=this._rgba.slice(),r=n.pop();return t&&n.push(~~(r*255)),"#"+e.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),s.fn.parse.prototype=s.fn,o.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,u===0?c=0:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},o.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(d(o,s,t+1/3)*255),Math.round(d(o,s,t)*255),Math.round(d(o,s,t-1/3)*255),i]},c(o,function(n,i){var o=i.props,u=i.cache,a=i.to,f=i.from;s.fn[n]=function(n){a&&!this[u]&&(this[u]=a(this._rgba));if(n===t)return this[u].slice();var r,i=e.type(n),l=i==="array"||i==="object"?n:arguments,p=this[u].slice();return c(o,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=p[t.idx]),p[t.idx]=h(n,t)}),f?(r=s(f(p)),r[u]=p,r):s(p)},c(o,function(t,i){if(s.fn[t])return;s.fn[t]=function(s){var o=e.type(s),u=t==="alpha"?this._hsla?"hsla":"rgba":n,a=this[u](),f=a[i.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=e.type(s)),s==null&&i.empty?this:(o==="string"&&(l=r.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[i.idx]=s,this[u](a)))}})}),s.hook=function(t){var n=t.split(" ");c(n,function(t,n){e.cssHooks[n]={set:function(t,r){var i,o,u="";if(r!=="transparent"&&(e.type(r)!=="string"||(i=p(r)))){r=s(i||r);if(!a.rgba&&r._rgba[3]!==1){o=n==="backgroundColor"?t.parentNode:t;while((u===""||u==="transparent")&&o&&o.style)try{u=e.css(o,"backgroundColor"),o=o.parentNode}catch(f){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{t.style[n]=r}catch(f){}}},e.fx.step[n]=function(t){t.colorInit||(t.start=s(t.elem,n),t.end=s(t.end),t.colorInit=!0),e.cssHooks[n].set(t.elem,t.start.transition(t.end,t.pos))}})},s.hook(n),e.cssHooks.borderColor={expand:function(e){var t={};return c(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},l=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var n,r,i=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,s={};if(i&&i.length&&i[0]&&i[i[0]]){r=i.length;while(r--)n=i[r],typeof i[n]=="string"&&(s[e.camelCase(n)]=i[n])}else for(n in i)typeof i[n]=="string"&&(s[n]=i[n]);return s}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").addBack():r;f=f.map(function(){var t=e(this);return{el:t,start:i(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=e.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return arguments.length>1?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass.apply(this,arguments)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function r(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function i(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]}e.extend(e.effects,{version:"1.10.1",save:function(e,t){for(var r=0;r<t.length;r++)t[r]!==null&&e.data(n+t[r],e[0].style[t[r]])},restore:function(e,r){var i,s;for(s=0;s<r.length;s++)r[s]!==null&&(i=e.data(n+r[s]),i===t&&(i=""),e.css(r[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function o(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,o=t.mode;(r.is(":hidden")?o==="hide":o==="show")?u():s.call(r[0],t,u)}var t=r.apply(this,arguments),n=t.mode,i=t.queue,s=e.effects.effect[t.effect];return e.fx.off||!s?n?this[n](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):i===!1?this.each(o):this.queue(i||"fx",o)},_show:e.fn.show,show:function(e){if(i(e))return this._show.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(i(e))return this._hide.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(i(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=r.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.menu.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.menu.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.menu.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.menu.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.menu",{version:"1.10.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var n=e(t.target).closest(".ui-menu-item");!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(t),n.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-\u2014\u2013\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){e==="icons"&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),this._super(e,t)},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.mouse.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.mouse.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.mouse.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.mouse.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=!1;e(document).mouseup(function(){n=!1}),e.widget("ui.mouse",{version:"1.10.1",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.position.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.position.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.position.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.position.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function h(e,t,n){return[parseFloat(e[0])*(l.test(e[0])?t/100:1),parseFloat(e[1])*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}function d(t){var n=t[0];return n.nodeType===9?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,v,m,g,y,b=e(t.of),w=e.position.getWithinInfo(t.within),E=e.position.getScrollInfo(w),S=(t.collision||"flip").split(" "),x={};return y=d(b),b[0].preventDefault&&(t.at="left top"),l=y.width,v=y.height,m=y.offset,g=e.extend({},m),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),x[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),S.length===1&&(S[1]=S[0]),t.at[0]==="right"?g.left+=l:t.at[0]==="center"&&(g.left+=l/2),t.at[1]==="bottom"?g.top+=v:t.at[1]==="center"&&(g.top+=v/2),n=h(x.at,l,v),g.left+=n[0],g.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),d=p(this,"marginLeft"),y=p(this,"marginTop"),T=f+d+p(this,"marginRight")+E.width,N=c+y+p(this,"marginBottom")+E.height,C=e.extend({},g),k=h(x.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:d,marginTop:y},e.each(["left","top"],function(r,i){e.ui.position[S[r]]&&e.ui.position[S[r]][i](C,{targetWidth:l,targetHeight:v,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:w,elem:a})}),t.using&&(u=function(e){var n=m.left-C.left,s=n+l-f,o=m.top-C.top,u=o+v-c,h={target:{element:b,left:m.left,top:m.top,width:l,height:v},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),v<c&&i(o+u)<v&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}()})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.progressbar.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.progressbar.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.progressbar.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.progressbar.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.progressbar",{version:"1.10.1",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),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()},value:function(e){if(e===t)return this.options.value;this.options.value=this._constrainedValue(e),this._refreshValue()},_constrainedValue:function(e){return e===t&&(e=this.options.value),this.indeterminate=e===!1,typeof e!="number"&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){e==="max"&&(t=Math.max(this.min,t)),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(n.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.resizable.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.resizable.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.resizable.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.resizable.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function n(e){return parseInt(e,10)||0}function r(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,n,r,i,s,o=this,u=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!u.aspectRatio,aspectRatio:u.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:u.helper||u.ghost||u.animate?u.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(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("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,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=u.handles||(e(".ui-resizable-handle",this.element).length?{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"}:"e,s,se");if(this.handles.constructor===String){this.handles==="all"&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={};for(n=0;n<t.length;n++)r=e.trim(t[n]),s="ui-resizable-"+r,i=e("<div class='ui-resizable-handle "+s+"'></div>"),i.css({zIndex:u.zIndex}),"se"===r&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[r]=".ui-resizable-"+r,this.element.append(i)}this._renderAxis=function(t){var n,r,i,s;t=t||this.element;for(n in this.handles){this.handles[n].constructor===String&&(this.handles[n]=e(this.handles[n],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(r=e(this.handles[n],this.element),s=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth(),i=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize());if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=i&&i[1]?i[1]:"se")}),u.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(u.disabled)return;e(this).removeClass("ui-resizable-autohide"),o._handles.show()}).mouseleave(function(){if(u.disabled)return;o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,n=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_mouseCapture:function(t){var n,r,i=!1;for(n in this.handles){r=e(this.handles[n])[0];if(r===t.target||e.contains(r,t.target))i=!0}return!this.options.disabled&&i},_mouseStart:function(t){var r,i,s,o=this.options,u=this.element.position(),a=this.element;return this.resizing=!0,/absolute/.test(a.css("position"))?a.css({position:"absolute",top:a.css("top"),left:a.css("left")}):a.is(".ui-draggable")&&a.css({position:"absolute",top:u.top,left:u.left}),this._renderProxy(),r=n(this.helper.css("left")),i=n(this.helper.css("top")),o.containment&&(r+=e(o.containment).scrollLeft()||0,i+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:r,top:i},this.size=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalPosition={left:r,top:i},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof o.aspectRatio=="number"?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor",s==="auto"?this.axis+"-resize":s),a.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,r=this.helper,i={},s=this.originalMousePosition,o=this.axis,u=this.position.top,a=this.position.left,f=this.size.width,l=this.size.height,c=t.pageX-s.left||0,h=t.pageY-s.top||0,p=this._change[o];if(!p)return!1;n=p.apply(this,[t,c,h]),this._updateVirtualBoundaries(t.shiftKey);if(this._aspectRatio||t.shiftKey)n=this._updateRatio(n,t);return n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),this.position.top!==u&&(i.top=this.position.top+"px"),this.position.left!==a&&(i.left=this.position.left+"px"),this.size.width!==f&&(i.width=this.size.width+"px"),this.size.height!==l&&(i.height=this.size.height+"px"),r.css(i),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(i)||this._trigger("resize",t,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n,r,i,s,o,u,a,f=this.options,l=this;return this._helper&&(n=this._proportionallyResizeElements,r=n.length&&/textarea/i.test(n[0].nodeName),i=r&&e.ui.hasScroll(n[0],"left")?0:l.sizeDiff.height,s=r?0:l.sizeDiff.width,o={width:l.helper.width()-s,height:l.helper.height()-i},u=parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left)||null,a=parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top)||null,f.animate||this.element.css(e.extend(o,{top:a,left:u})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!f.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,n,i,s,o,u=this.options;o={minWidth:r(u.minWidth)?u.minWidth:0,maxWidth:r(u.maxWidth)?u.maxWidth:Infinity,minHeight:r(u.minHeight)?u.minHeight:0,maxHeight:r(u.maxHeight)?u.maxHeight:Infinity};if(this._aspectRatio||e)t=o.minHeight*this.aspectRatio,i=o.minWidth/this.aspectRatio,n=o.maxHeight*this.aspectRatio,s=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),i>o.minHeight&&(o.minHeight=i),n<o.maxWidth&&(o.maxWidth=n),s<o.maxHeight&&(o.maxHeight=s);this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,n=this.size,i=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),i==="sw"&&(e.left=t.left+(n.width-e.width),e.top=null),i==="nw"&&(e.top=t.top+(n.height-e.height),e.left=t.left+(n.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,n=this.axis,i=r(e.width)&&t.maxWidth&&t.maxWidth<e.width,s=r(e.height)&&t.maxHeight&&t.maxHeight<e.height,o=r(e.width)&&t.minWidth&&t.minWidth>e.width,u=r(e.height)&&t.minHeight&&t.minHeight>e.height,a=this.originalPosition.left+this.originalSize.width,f=this.position.top+this.size.height,l=/sw|nw|w/.test(n),c=/nw|ne|n/.test(n);return o&&(e.width=t.minWidth),u&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),s&&(e.height=t.maxHeight),o&&l&&(e.left=a-t.minWidth),i&&l&&(e.left=a-t.maxWidth),u&&c&&(e.top=f-t.minHeight),s&&c&&(e.top=f-t.maxHeight),!e.width&&!e.height&&!e.left&&e.top?e.top=null:!e.width&&!e.height&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){if(!this._proportionallyResizeElements.length)return;var e,t,n,r,i,s=this.helper||this.element;for(e=0;e<this._proportionallyResizeElements.length;e++){i=this._proportionallyResizeElements[e];if(!this.borderDif){this.borderDif=[],n=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],r=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];for(t=0;t<n.length;t++)this.borderDif[t]=(parseInt(n[t],10)||0)+(parseInt(r[t],10)||0)}i.css({height:s.height()-this.borderDif[0]-this.borderDif[2]||0,width:s.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize,r=this.originalPosition;return{left:r.left+t,width:n.width-t}},n:function(e,t,n){var r=this.originalSize,i=this.originalPosition;return{top:i.top+n,height:r.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!=="resize"&&this._trigger(t,n,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.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).data("ui-resizable"),r=n.options,i=n._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:n.sizeDiff.height,u=s?0:n.sizeDiff.width,a={width:n.size.width-u,height:n.size.height-o},f=parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left)||null,l=parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(a,l&&f?{top:l,left:f}:{}),{duration:r.animateDuration,easing:r.animateEasing,step:function(){var r={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};i&&i.length&&e(i[0]).css({width:r.width,height:r.height}),n._updateCache(r),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,r,i,s,o,u,a,f=e(this).data("ui-resizable"),l=f.options,c=f.element,h=l.containment,p=h instanceof e?h.get(0):/parent/.test(h)?c.parent().get(0):h;if(!p)return;f.containerElement=e(p),/document/.test(h)||h===document?(f.containerOffset={left:0,top:0},f.containerPosition={left:0,top:0},f.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(p),r=[],e(["Top","Right","Left","Bottom"]).each(function(e,i){r[e]=n(t.css("padding"+i))}),f.containerOffset=t.offset(),f.containerPosition=t.position(),f.containerSize={height:t.innerHeight()-r[3],width:t.innerWidth()-r[1]},i=f.containerOffset,s=f.containerSize.height,o=f.containerSize.width,u=e.ui.hasScroll(p,"left")?p.scrollWidth:o,a=e.ui.hasScroll(p)?p.scrollHeight:s,f.parentData={element:p,left:i.left,top:i.top,width:u,height:a})},resize:function(t){var n,r,i,s,o=e(this).data("ui-resizable"),u=o.options,a=o.containerOffset,f=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},h=o.containerElement;h[0]!==document&&/static/.test(h.css("position"))&&(c=a),f.left<(o._helper?a.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-a.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=u.helper?a.left:0),f.top<(o._helper?a.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-a.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?a.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,n=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),r=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-a.top)+o.sizeDiff.height),i=o.containerElement.get(0)===o.element.parent().get(0),s=/relative|absolute/.test(o.containerElement.css("position")),i&&s&&(n-=o.parentData.left),n+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-n,l&&(o.size.height=o.size.width/o.aspectRatio)),r+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-r,l&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.containerOffset,i=t.containerPosition,s=t.containerElement,o=e(t.helper),u=o.offset(),a=o.outerWidth()-t.sizeDiff.width,f=o.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f}),t._helper&&!n.animate&&/static/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof n.alsoResize=="object"&&!n.alsoResize.parentNode?n.alsoResize.length?(n.alsoResize=n.alsoResize[0],r(n.alsoResize)):e.each(n.alsoResize,function(e){r(e)}):r(n.alsoResize)},resize:function(t,n){var r=e(this).data("ui-resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("ui-resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:r.height,width:r.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof n.ghost=="string"?n.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size,i=t.originalSize,s=t.originalPosition,o=t.axis,u=typeof n.grid=="number"?[n.grid,n.grid]:n.grid,a=u[0]||1,f=u[1]||1,l=Math.round((r.width-i.width)/a)*a,c=Math.round((r.height-i.height)/f)*f,h=i.width+l,p=i.height+c,d=n.maxWidth&&n.maxWidth<h,v=n.maxHeight&&n.maxHeight<p,m=n.minWidth&&n.minWidth>h,g=n.minHeight&&n.minHeight>p;n.grid=u,m&&(h+=a),g&&(p+=f),d&&(h-=a),v&&(p-=f),/^(se|s|e)$/.test(o)?(t.size.width=h,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.top=s.top-c):/^(sw)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.left=s.left-l):(t.size.width=h,t.size.height=p,t.position.top=s.top-c,t.position.left=s.left-l)}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.selectable.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.selectable.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.selectable.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.selectable.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,n=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(n.options.filter,n.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.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"),this._mouseDestroy()},_mouseStart:function(t){var n=this,r=this.options;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().addBack().each(function(){var r,i=e.data(this,"selectable-item");if(i)return r=!t.metaKey&&!t.ctrlKey||!i.$element.hasClass("ui-selected"),i.$element.removeClass(r?"ui-unselecting":"ui-selected").addClass(r?"ui-selecting":"ui-unselecting"),i.unselecting=!r,i.selecting=r,i.selected=r,r?n._trigger("selecting",t,{selecting:i.element}):n._trigger("unselecting",t,{unselecting:i.element}),!1})},_mouseDrag:function(t){this.dragged=!0;if(this.options.disabled)return;var n,r=this,i=this.options,s=this.opos[0],o=this.opos[1],u=t.pageX,a=t.pageY;return s>u&&(n=u,u=s,s=n),o>a&&(n=a,a=o,o=n),this.helper.css({left:s,top:o,width:u-s,height:a-o}),this.selectees.each(function(){var n=e.data(this,"selectable-item"),f=!1;if(!n||n.element===r.element[0])return;i.tolerance==="touch"?f=!(n.left>u||n.right<s||n.top>a||n.bottom<o):i.tolerance==="fit"&&(f=n.left>s&&n.right<u&&n.top>o&&n.bottom<a),f?(n.selected&&(n.$element.removeClass("ui-selected"),n.selected=!1),n.unselecting&&(n.$element.removeClass("ui-unselecting"),n.unselecting=!1),n.selecting||(n.$element.addClass("ui-selecting"),n.selecting=!0,r._trigger("selecting",t,{selecting:n.element}))):(n.selecting&&((t.metaKey||t.ctrlKey)&&n.startselected?(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.$element.addClass("ui-selected"),n.selected=!0):(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.startselected&&(n.$element.addClass("ui-unselecting"),n.unselecting=!0),r._trigger("unselecting",t,{unselecting:n.element}))),n.selected&&!t.metaKey&&!t.ctrlKey&&!n.startselected&&(n.$element.removeClass("ui-selected"),n.selected=!1,n.$element.addClass("ui-unselecting"),n.unselecting=!0,r._trigger("unselecting",t,{unselecting:n.element})))}),!1},_mouseStop:function(t){var n=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.slider.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.slider.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.slider.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.slider.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.10.1",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,n,r=this.options,i=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),s="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];n=r.values&&r.values.length||1,i.length>n&&(i.slice(n).remove(),i=i.slice(0,n));for(t=i.length;t<n;t++)o.push(s);this.handles=i.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,n="";t.range?(t.range===!0&&(t.values?t.values.length&&t.values.length!==2?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),!this.range||!this.range.length?(this.range=e("<div></div>").appendTo(this.element),n="ui-slider-range ui-widget-header ui-corner-all"):this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}),this.range.addClass(n+(t.range==="min"||t.range==="max"?" ui-slider-range-"+t.range:""))):this.range=e([])},_setupEvents:function(){var e=this.handles.add(this.range).filter("a");this._off(e),this._on(e,this._handleEvents),this._hoverable(e),this._focusable(e)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));if(i>n||i===n&&(t===l._lastChangedValue||l.values(t)===c.min))i=n,s=e(this),o=t}),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;t==="range"&&this.options.range===!0&&(n==="min"?(this.options.value=this._values(0),this.options.values=null):n==="max"&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){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=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;if(this.options.values&&this.options.values.length){n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n}return[]},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))},_handleEvents:{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},click:function(e){e.preventDefault()},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.sortable.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.sortable.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.sortable.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.sortable.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.sortable",e.ui.mouse,{version:"1.10.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=null,i=!1,s=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type==="static")return!1;this._refreshItems(t),e(t.target).parents().each(function(){if(e.data(this,s.widgetName+"-item")===s)return r=e(this),!1}),e.data(t.target,s.widgetName+"-item")===s&&(r=e(t.target));if(!r)return!1;if(this.options.handle&&!n){e(this.options.handle,r).find("*").addBack().each(function(){this===t.target&&(i=!0)});if(!i)return!1}return this.currentItem=r,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i,s=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),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},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,s.cursorAt&&this._adjustOffsetFromHelper(s.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),s.containment&&this._setContainment(),s.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",s.cursor)),s.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",s.opacity)),s.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",s.zIndex)),this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!s.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var n,r,i,s,o=this.options,u=!1;this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?u=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(u=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?u=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(u=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),u!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),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(n=this.items.length-1;n>=0;n--){r=this.items[n],i=r.item[0],s=this._intersectsWithPointer(r);if(!s)continue;if(r.instance!==this.currentContainer)continue;if(i!==this.currentItem[0]&&this.placeholder[s===1?"next":"prev"]()[0]!==i&&!e.contains(this.placeholder[0],i)&&(this.options.type==="semi-dynamic"?!e.contains(this.element[0],i):!0)){this.direction=s===1?"down":"up";if(this.options.tolerance!=="pointer"&&!this._intersectsWithSides(r))break;this._rearrange(t,r),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){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 t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return 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(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance==="pointer"||this.options.forcePointerForContainers||this.options.tolerance!=="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(e){var t=this.options.axis==="x"||n(this.positionAbs.top+this.offset.click.top,e.top,e.height),r=this.options.axis==="y"||n(this.positionAbs.left+this.offset.click.left,e.left,e.width),i=t&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o==="right"||s==="down"?2:1:s&&(s==="down"?2:1):!1},_intersectsWithSides:function(e){var t=n(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),r=n(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s==="right"&&r||s==="left"&&!r:i&&(i==="down"&&t||i==="up"&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!==0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!==0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n,r,i,s,o=[],u=[],a=this._connectWith();if(a&&t)for(n=a.length-1;n>=0;n--){i=e(a[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&u.push([e.isFunction(s.options.items)?s.options.items.call(s.element):e(s.options.items,s.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),s])}u.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(n=u.length-1;n>=0;n--)u[n][0].each(function(){o.push(this)});return e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n,r,i,s,o,u,a,f,l=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(n=h.length-1;n>=0;n--){i=e(h[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&(c.push([e.isFunction(s.options.items)?s.options.items.call(s.element[0],t,{item:this.currentItem}):e(s.options.items,s.element),s]),this.containers.push(s))}for(n=c.length-1;n>=0;n--){o=c[n][1],u=c[n][0];for(r=0,f=u.length;r<f;r++)a=e(u[r]),a.data(this.widgetName+"-item",o),l.push({item:a,instance:o,width:0,height:0,left:0,top:0})}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var n,r,i,s;for(n=this.items.length-1;n>=0;n--){r=this.items[n];if(r.instance!==this.currentContainer&&this.currentContainer&&r.item[0]!==this.currentItem[0])continue;i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item,t||(r.width=i.outerWidth(),r.height=i.outerHeight()),s=i.offset(),r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(n=this.containers.length-1;n>=0;n--)s=this.containers[n].element.offset(),this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var n,r=t.options;if(!r.placeholder||r.placeholder.constructor===String)n=r.placeholder,r.placeholder={element:function(){var r=e(document.createElement(t.currentItem[0].nodeName)).addClass(n||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return n||(r.style.visibility="hidden"),r},update:function(e,i){if(n&&!r.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}};t.placeholder=e(r.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),r.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n,r,i,s,o,u,a,f,l,c=null,h=null;for(n=this.containers.length-1;n>=0;n--){if(e.contains(this.currentItem[0],this.containers[n].element[0]))continue;if(this._intersectsWith(this.containers[n].containerCache)){if(c&&e.contains(this.containers[n].element[0],c.element[0]))continue;c=this.containers[n],h=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",t,this._uiHash(this)),this.containers[n].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1;else{i=1e4,s=null,o=this.containers[h].floating?"left":"top",u=this.containers[h].floating?"width":"height",a=this.positionAbs[o]+this.offset.click[o];for(r=this.items.length-1;r>=0;r--){if(!e.contains(this.containers[h].element[0],this.items[r].item[0]))continue;if(this.items[r].item[0]===this.currentItem[0])continue;f=this.items[r].item.offset()[o],l=!1,Math.abs(f-a)>Math.abs(f+this.items[r][u]-a)&&(l=!0,f+=this.items[r][u]),Math.abs(f-a)<i&&(i=Math.abs(f-a),s=this.items[r],this.direction=l?"up":"down")}if(!s&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[h],s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[h].element,!0),this._trigger("change",t,this._uiHash()),this.containers[h]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper==="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!=="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[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")}),(!r[0].style.width||n.forceHelperSize)&&r.width(this.currentItem.width()),(!r[0].style.height||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}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 t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];/^(document|window|parent)$/.test(i.containment)||(t=e(i.containment)[0],n=e(i.containment).offset(),r=e(t).css("overflow")!=="hidden",this.containment=[n.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,n.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,n.left+(r?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,n.top+(r?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i=this.options,s=t.pageX,o=t.pageY,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName);return this.cssPosition==="relative"&&(this.scrollParent[0]===document||this.scrollParent[0]===this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),i.grid&&(n=this.originalPageY+Math.round((o-this.originalPageY)/i.grid[1])*i.grid[1],o=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-i.grid[1]:n+i.grid[1]:n,r=this.originalPageX+Math.round((s-this.originalPageX)/i.grid[0])*i.grid[0],s=this.containment?r-this.offset.click.left>=this.containment[0]&&r-this.offset.click.left<=this.containment[2]?r:r-this.offset.click.left>=this.containment[0]?r-i.grid[0]:r+i.grid[0]:r)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction==="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i===this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r,i=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]===this.currentItem[0]){for(r in this._storedCSS)if(this._storedCSS[r]==="auto"||this._storedCSS[r]==="static")this._storedCSS[r]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&i.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!==this.currentItem.parent()[0])&&!n&&i.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(i.push(function(e){this._trigger("remove",e,this._uiHash())}),i.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(r=this.containers.length-1;r>=0;r--)n||i.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over&&(i.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex==="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.spinner.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.spinner.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.spinner.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.spinner.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.10.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),e==="icons"&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tabs.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tabs.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tabs.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.tabs.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&decodeURIComponent(e.href.replace(r,""))===decodeURIComponent(location.href.replace(r,""))}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.10.1",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),n.active=this._initialActive(),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(n.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var t=this.options.active,n=this.options.collapsible,r=location.hash.substring(1);if(t===null){r&&this.tabs.each(function(n,i){if(e(i).attr("aria-controls")===r)return t=n,!1}),t===null&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(t===null||t===-1)t=this.tabs.length?0:!1}return t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),t===-1&&(t=n?!1:0)),!n&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r=this.element.parent();t==="fill"?(n=r.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tooltip.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tooltip.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.tooltip.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.tooltip.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.10.1",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=this.delayedShow=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.widget.min.js
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.widget.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/minified/jquery.ui.widget.min.js	(revision 25596)
@@ -0,0 +1,5 @@
+/*! jQuery UI - v1.10.1 - 2013-02-15
+* http://jqueryui.com
+* Includes: jquery.ui.widget.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a={},f=t.split(".")[0];t=t.split(".")[1],i=f+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[f]=e[f]||{},s=e[f][t],o=e[f][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,r){if(!e.isFunction(r)){a[t]=r;return}a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},i=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=i,s=r.apply(this,arguments),this._super=t,this._superApply=n,s}}()}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},a,{constructor:o,namespace:f,widgetName:t,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&e.effects.effect[u]?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}})})(jQuery);
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.accordion.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.accordion.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.accordion.css	(revision 25596)
@@ -0,0 +1,38 @@
+/*!
+ * jQuery UI Accordion 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+.ui-accordion .ui-accordion-header {
+	display: block;
+	cursor: pointer;
+	position: relative;
+	margin-top: 2px;
+	padding: .5em .5em .5em .7em;
+	min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+	padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+	position: absolute;
+	left: .5em;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+	padding: 1em 2.2em;
+	border-top: 0;
+	overflow: auto;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.all.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.all.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.all.css	(revision 25596)
@@ -0,0 +1,12 @@
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming
+ */
+@import "jquery.ui.base.css";
+@import "jquery.ui.theme.css";
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.autocomplete.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.autocomplete.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.autocomplete.css	(revision 25596)
@@ -0,0 +1,16 @@
+/*!
+ * jQuery UI Autocomplete 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.base.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.base.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.base.css	(revision 25596)
@@ -0,0 +1,25 @@
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming
+ */
+@import url("jquery.ui.core.css");
+
+@import url("jquery.ui.accordion.css");
+@import url("jquery.ui.autocomplete.css");
+@import url("jquery.ui.button.css");
+@import url("jquery.ui.datepicker.css");
+@import url("jquery.ui.dialog.css");
+@import url("jquery.ui.menu.css");
+@import url("jquery.ui.progressbar.css");
+@import url("jquery.ui.resizable.css");
+@import url("jquery.ui.selectable.css");
+@import url("jquery.ui.slider.css");
+@import url("jquery.ui.spinner.css");
+@import url("jquery.ui.tabs.css");
+@import url("jquery.ui.tooltip.css");
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.button.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.button.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.button.css	(revision 25596)
@@ -0,0 +1,114 @@
+/*!
+ * jQuery UI Button 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+	width: 2.4em;
+}
+.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: normal;
+}
+.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;
+}
+
+/* button sets */
+.ui-buttonset {
+	margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.core.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.core.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.core.css	(revision 25596)
@@ -0,0 +1,93 @@
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 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:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+
+/* 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: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.datepicker.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.datepicker.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.datepicker.css	(revision 25596)
@@ -0,0 +1,178 @@
+/*!
+ * jQuery UI Datepicker 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * 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,
+.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: 0;
+}
+
+/* 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,
+.ui-datepicker-rtl .ui-datepicker-group {
+	float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+	border-right-width: 0;
+	border-left-width: 1px;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.dialog.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.dialog.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.dialog.css	(revision 25596)
@@ -0,0 +1,69 @@
+/*!
+ * jQuery UI Dialog 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog {
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 21px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	margin-top: .5em;
+	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: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.menu.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.menu.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.menu.css	(revision 25596)
@@ -0,0 +1,77 @@
+/*!
+ * jQuery UI Menu 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style: none;
+	padding: 2px;
+	margin: 0;
+	display: block;
+	outline: none;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+	position: absolute;
+}
+.ui-menu .ui-menu-item {
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+.ui-menu .ui-menu-divider {
+	margin: 5px -2px 5px -2px;
+	height: 0;
+	font-size: 0;
+	line-height: 0;
+	border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration: none;
+	display: block;
+	padding: 2px .4em;
+	line-height: 1.5;
+	min-height: 0; /* support: IE7 */
+	font-weight: normal;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+
+.ui-menu .ui-state-disabled {
+	font-weight: normal;
+	margin: .4em 0 .2em;
+	line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+	cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+	position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+	position: relative;
+	padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+	position: absolute;
+	top: .2em;
+	left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+	position: static;
+	float: right;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.progressbar.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.progressbar.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.progressbar.css	(revision 25596)
@@ -0,0 +1,28 @@
+/*!
+ * jQuery UI Progressbar 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar {
+	height: 2em;
+	text-align: left;
+	overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+	margin: -1px;
+	height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+	background: url("images/animated-overlay.gif");
+	height: 100%;
+	filter: alpha(opacity=25);
+	opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+	background-image: none;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.resizable.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.resizable.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.resizable.css	(revision 25596)
@@ -0,0 +1,78 @@
+/*!
+ * jQuery UI Resizable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	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;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.selectable.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.selectable.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.selectable.css	(revision 25596)
@@ -0,0 +1,15 @@
+/*!
+ * jQuery UI Selectable 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper {
+	position: absolute;
+	z-index: 100;
+	border: 1px dotted black;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.slider.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.slider.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.slider.css	(revision 25596)
@@ -0,0 +1,73 @@
+/*!
+ * jQuery UI Slider 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * 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;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+	filter: inherit;
+}
+
+.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;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.spinner.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.spinner.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.spinner.css	(revision 25596)
@@ -0,0 +1,65 @@
+/*!
+ * jQuery UI Spinner 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Spinner#theming
+ */
+.ui-spinner {
+	position: relative;
+	display: inline-block;
+	overflow: hidden;
+	padding: 0;
+	vertical-align: middle;
+}
+.ui-spinner-input {
+	border: none;
+	background: none;
+	color: inherit;
+	padding: 0;
+	margin: .2em 0;
+	vertical-align: middle;
+	margin-left: .4em;
+	margin-right: 22px;
+}
+.ui-spinner-button {
+	width: 16px;
+	height: 50%;
+	font-size: .5em;
+	padding: 0;
+	margin: 0;
+	text-align: center;
+	position: absolute;
+	cursor: default;
+	display: block;
+	overflow: hidden;
+	right: 0;
+}
+/* more specificity required here to overide default borders */
+.ui-spinner a.ui-spinner-button {
+	border-top: none;
+	border-bottom: none;
+	border-right: none;
+}
+/* vertical centre icon */
+.ui-spinner .ui-icon {
+	position: absolute;
+	margin-top: -8px;
+	top: 50%;
+	left: 0;
+}
+.ui-spinner-up {
+	top: 0;
+}
+.ui-spinner-down {
+	bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+	/* need to fix icons sprite */
+	background-position: -65px -16px;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tabs.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tabs.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tabs.css	(revision 25596)
@@ -0,0 +1,52 @@
+/*!
+ * jQuery UI Tabs 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
+.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: 0;
+	margin: 1px .2em 0 0;
+	border-bottom: 0;
+	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-active {
+	margin-bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled a,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
+	cursor: text;
+}
+.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
+	cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+	display: block;
+	border-width: 0;
+	padding: 1em 1.4em;
+	background: none;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.theme.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.theme.css	(revision 25596)
@@ -0,0 +1,406 @@
+/*!
+ * jQuery UI CSS Framework 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+	font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
+	font-size: 1.1em/*{fsDefault}*/;
+}
+.ui-widget .ui-widget {
+	font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+	font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
+	font-size: 1em;
+}
+.ui-widget-content {
+	border: 1px solid #aaaaaa/*{borderColorContent}*/;
+	background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/;
+	color: #222222/*{fcContent}*/;
+}
+.ui-widget-content a {
+	color: #222222/*{fcContent}*/;
+}
+.ui-widget-header {
+	border: 1px solid #aaaaaa/*{borderColorHeader}*/;
+	background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/;
+	color: #222222/*{fcHeader}*/;
+	font-weight: bold;
+}
+.ui-widget-header a {
+	color: #222222/*{fcHeader}*/;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+	border: 1px solid #d3d3d3/*{borderColorDefault}*/;
+	background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/;
+	font-weight: normal/*{fwDefault}*/;
+	color: #555555/*{fcDefault}*/;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+	color: #555555/*{fcDefault}*/;
+	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 #999999/*{borderColorHover}*/;
+	background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/;
+	font-weight: normal/*{fwDefault}*/;
+	color: #212121/*{fcHover}*/;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited {
+	color: #212121/*{fcHover}*/;
+	text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+	border: 1px solid #aaaaaa/*{borderColorActive}*/;
+	background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/;
+	font-weight: normal/*{fwDefault}*/;
+	color: #212121/*{fcActive}*/;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+	color: #212121/*{fcActive}*/;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+	border: 1px solid #fcefa1/*{borderColorHighlight}*/;
+	background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/;
+	color: #363636/*{fcHighlight}*/;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+	color: #363636/*{fcHighlight}*/;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+	border: 1px solid #cd0a0a/*{borderColorError}*/;
+	background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/;
+	color: #cd0a0a/*{fcError}*/;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+	color: #cd0a0a/*{fcError}*/;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+	color: #cd0a0a/*{fcError}*/;
+}
+.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;
+}
+.ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	width: 16px;
+	height: 16px;
+	background-position: 16px 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/;
+}
+.ui-widget-header .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/;
+}
+.ui-state-default .ui-icon {
+	background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/;
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/;
+}
+.ui-state-active .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/;
+}
+.ui-state-highlight .ui-icon {
+	background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/;
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+	background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/;
+}
+
+/* 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-on { background-position: -96px -144px; }
+.ui-icon-radio-off { 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 {
+	border-top-left-radius: 4px/*{cornerRadius}*/;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+	border-top-right-radius: 4px/*{cornerRadius}*/;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+	border-bottom-left-radius: 4px/*{cornerRadius}*/;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+	border-bottom-right-radius: 4px/*{cornerRadius}*/;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+	background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/;
+	opacity: .3/*{opacityOverlay}*/;
+	filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/;
+}
+.ui-widget-shadow {
+	margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/;
+	padding: 8px/*{thicknessShadow}*/;
+	background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/;
+	opacity: .3/*{opacityShadow}*/;
+	filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/;
+	border-radius: 8px/*{cornerRadiusShadow}*/;
+}
Index: /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tooltip.css
===================================================================
--- /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tooltip.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/js/ui/theme/jquery.ui.tooltip.css	(revision 25596)
@@ -0,0 +1,19 @@
+/*!
+ * jQuery UI Tooltip 1.10.1
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+	border-width: 2px;
+}
Index: /tags/2.6.0RC1/themes/default/local_head.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/local_head.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/local_head.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+{if $load_css} 
+	<!--[if lt IE 7]>
+		<link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/default/fix-ie5-ie6.css">
+	<![endif]-->
+	<!--[if IE 7]>
+		<link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/default/fix-ie7.css">
+	<![endif]-->
+	{combine_css path="themes/default/print.css" order=-10}
+{/if}
Index: /tags/2.6.0RC1/themes/default/print.css
===================================================================
--- /tags/2.6.0RC1/themes/default/print.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/print.css	(revision 25596)
@@ -0,0 +1,16 @@
+@media print {
+#menubar, .content .navigationBar, .categoryActions, .content .calendarViews, .calendarBar,
+#imageToolBar, .navThumb, #commentAdd {
+	display: none;
+}
+
+BODY {
+	margin: 0;
+	color: #000;
+	background: #fff;
+}
+
+#theCategoryPage .content {
+	margin: 0 !important; 
+}
+}
Index: /tags/2.6.0RC1/themes/default/s26/index.htm
===================================================================
--- /tags/2.6.0RC1/themes/default/s26/index.htm	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/s26/index.htm	(revision 25596)
@@ -0,0 +1,1 @@
+Not allowed!
Index: /tags/2.6.0RC1/themes/default/template/about.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/about.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/about.tpl	(revision 25596)
@@ -0,0 +1,24 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+  <div class="titrePage">
+    <ul class="categoryActions">
+    </ul>
+    <h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'About'|@translate}</h2>
+  </div>
+  
+  {include file='infos_errors.tpl'}
+  
+  <div id="piwigoAbout">
+  {$ABOUT_MESSAGE}
+  {if isset($THEME_ABOUT) }
+  <ul>
+   <li>{$THEME_ABOUT}</li>
+  </ul>
+  {/if}
+  {if not empty($about_msgs)}
+    {foreach from=$about_msgs item=elt}
+    {$elt}
+    {/foreach}
+  {/if}
+  </div>
+</div>
Index: /tags/2.6.0RC1/themes/default/template/comment_list.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/comment_list.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/comment_list.tpl	(revision 25596)
@@ -0,0 +1,81 @@
+{if isset($comment_derivative_params)}
+{strip}{html_style}
+.commentElement .illustration{
+	width:{$comment_derivative_params->max_width()+5}px
+}
+
+.content .commentElement .description{
+	min-height:{$comment_derivative_params->max_height()+5}px
+}
+{/html_style}{/strip}
+{footer_script}var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png";{/footer_script}
+<div class="loader"><img src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif"></div>
+{/if}
+<ul class="commentsList">
+{foreach from=$comments item=comment name=comment_loop}
+<li class="commentElement {if $smarty.foreach.comment_loop.index is odd}odd{else}even{/if}">
+	{if isset($comment.src_image)}
+	{if isset($comment_derivative_params)}
+	{assign var=derivative value=$pwg->derivative($comment_derivative_params, $comment.src_image)}
+	{else}
+	{assign var=derivative value=$pwg->derivative($derivative_params, $comment.src_image)}
+	{/if}
+	{if !$derivative->is_cached()}
+	{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
+  {combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+  {/if}
+	<div class="illustration">
+		<a href="{$comment.U_PICTURE}">
+		<img {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$comment.ALT}">
+		</a>
+	</div>
+	{/if}
+	<div class="description">
+		{if isset($comment.U_DELETE) or isset($comment.U_VALIDATE) or isset($comment.U_EDIT)}
+		<div class="actions" style="float:right;font-size:90%">
+		{if isset($comment.U_DELETE)}
+			<a href="{$comment.U_DELETE}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');">
+				{'Delete'|@translate}
+			</a>{if isset($comment.U_VALIDATE) or isset($comment.U_EDIT) or isset($comment.U_CANCEL)} | {/if}
+		{/if}
+		{if isset($comment.U_CANCEL)}
+			<a href="{$comment.U_CANCEL}">
+				{'Cancel'|@translate}
+			</a>{if isset($comment.U_VALIDATE)} | {/if}
+		{/if}
+		{if isset($comment.U_EDIT) and !isset($comment.IN_EDIT)}
+			<a class="editComment" href="{$comment.U_EDIT}#edit_comment">
+				{'Edit'|@translate}
+			</a>{if isset($comment.U_VALIDATE)} | {/if}
+		{/if}
+		{if isset($comment.U_VALIDATE)}
+			<a href="{$comment.U_VALIDATE}">
+				{'Validate'|@translate}
+			</a>
+		{/if}&nbsp;
+		</div>
+		{/if}
+
+		<span class="commentAuthor">{if $comment.WEBSITE_URL}<a href="{$comment.WEBSITE_URL}" class="external" target="_blank" rel="nofollow">{$comment.AUTHOR}</a>{else}{$comment.AUTHOR}{/if}</span>
+			{if isset($comment.EMAIL)}- <a href="mailto:{$comment.EMAIL}">{$comment.EMAIL}</a>{/if}
+			- <span class="commentDate">{$comment.DATE}</span>
+		{if isset($comment.IN_EDIT)}
+		<a name="edit_comment"></a>
+		<form method="post" action="{$comment.U_EDIT}" id="editComment">
+			<p><label for="contenteditid">{'Edit a comment'|@translate} :</label></p>
+			<p><textarea name="content" id="contenteditid" rows="5" cols="80">{$comment.CONTENT|@escape}</textarea></p>
+			<p><label for="website_url">{'Website'|@translate} :</label></p>
+			<p><input type="text" name="website_url" id="website_url" value="{$comment.WEBSITE_URL}" size="40"></p>
+			<p><input type="hidden" name="key" value="{$comment.KEY}">
+				<input type="hidden" name="pwg_token" value="{$comment.PWG_TOKEN}">
+				<input type="hidden" name="image_id" value="{$comment.IMAGE_ID|@default:$current.id}">
+				<input type="submit" value="{'Submit'|@translate}">
+			</p>
+		</form>
+		{else}
+		<blockquote><div>{$comment.CONTENT}</div></blockquote>
+		{/if}
+	</div>
+</li>
+{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/default/template/comments.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/comments.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/comments.tpl	(revision 25596)
@@ -0,0 +1,78 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'User comments'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+<form class="filter" action="{$F_ACTION}" method="get">
+
+  <fieldset>
+    <legend>{'Filter'|@translate}</legend>
+
+    <label>{'Keyword'|@translate}<input type="text" name="keyword" value="{$F_KEYWORD}"></label>
+
+    <label>{'Author'|@translate}<input type="text" name="author" value="{$F_AUTHOR}"></label>
+
+    <label>
+      {'Album'|@translate}
+      <select name="cat">
+        <option value="0">------------</option>
+        {html_options options=$categories selected=$categories_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Since'|@translate}
+      <select name="since">
+        {html_options options=$since_options selected=$since_options_selected}
+      </select>
+    </label>
+
+  </fieldset>
+
+  <fieldset>
+
+    <legend>{'Display'|@translate}</legend>
+
+    <label>
+      {'Sort by'|@translate}
+      <select name="sort_by">
+        {html_options options=$sort_by_options selected=$sort_by_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Sort order'|@translate}
+      <select name="sort_order">
+        {html_options options=$sort_order_options selected=$sort_order_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Number of items'|@translate}
+      <select name="items_number">
+        {html_options options=$item_number_options selected=$item_number_options_selected}
+      </select>
+    </label>
+
+  </fieldset>
+
+  <p><input type="submit" value="{'Filter and display'|@translate}"></p>
+
+</form>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+
+{if isset($comments)}
+<div id="comments">
+	{include file='comment_list.tpl' comment_derivative_params=$derivative_params}
+</div>
+{/if}
+
+</div> <!-- content -->
+
Index: /tags/2.6.0RC1/themes/default/template/footer.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/footer.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/footer.tpl	(revision 25596)
@@ -0,0 +1,34 @@
+<div id="copyright">
+{if isset($debug.TIME)}
+	{'Page generated in'|@translate} {$debug.TIME} ({$debug.NB_QUERIES} {'SQL queries in'|@translate} {$debug.SQL_TIME}) -
+{/if}
+{*
+	Please, do not remove this copyright. If you really want to,
+			contact us on http://piwigo.org to find a solution on how
+			to show the origin of the script...
+*}
+	{'Powered by'|@translate}	<a href="{$PHPWG_URL}" class="Piwigo">Piwigo</a>
+	{$VERSION}
+	{if isset($CONTACT_MAIL)}
+	- <a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|@translate|@escape:url}">{'Contact webmaster'|@translate}</a>
+	{/if}
+	{if isset($TOGGLE_MOBILE_THEME_URL)}
+	- {'View in'|@translate} : <a href="{$TOGGLE_MOBILE_THEME_URL}">{'Mobile'|@translate}</a> | <b>{'Desktop'|@translate}</b>
+	{/if}
+
+{get_combined_scripts load='footer'}
+
+{if isset($footer_elements)}
+{foreach from=$footer_elements item=v}
+{$v}
+{/foreach}
+{/if}
+</div> {* copyright *}
+{if isset($debug.QUERIES_LIST)}
+<div id="debug">
+{$debug.QUERIES_LIST}
+</div>
+{/if}
+</div>{* the_page *}
+</body>
+</html>
Index: /tags/2.6.0RC1/themes/default/template/header.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/header.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/header.tpl	(revision 25596)
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
+{if isset($meta_ref) } 
+{if isset($INFO_AUTHOR)}
+<meta name="author" content="{$INFO_AUTHOR|@strip_tags:false|@replace:'"':' '}">
+{/if}
+{if isset($related_tags)}
+<meta name="keywords" content="{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}{$tag.name}{/foreach}">
+{/if}
+{if isset($COMMENT_IMG)}
+<meta name="description" content="{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+{else}
+<meta name="description" content="{$PAGE_TITLE}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+{/if}
+{/if}
+<title>{if $PAGE_TITLE!=l10n('Home') && $PAGE_TITLE!=$GALLERY_TITLE}{$PAGE_TITLE} | {/if}{$GALLERY_TITLE}</title>
+<link rel="shortcut icon" type="image/x-icon" href="{$ROOT_URL}{$themeconf.icon_dir}/favicon.ico">
+
+<link rel="start" title="{'Home'|@translate}" href="{$U_HOME}" >
+<link rel="search" title="{'Search'|@translate}" href="{$ROOT_URL}search.php" >
+{if isset($first.U_IMG)   }<link rel="first" title="{'First'|@translate}" href="{$first.U_IMG}" >{/if}
+{if isset($previous.U_IMG)}<link rel="prev" title="{'Previous'|@translate}" href="{$previous.U_IMG}" >{/if}
+{if isset($next.U_IMG)    }<link rel="next" title="{'Next'|@translate}" href="{$next.U_IMG}" >{/if}
+{if isset($last.U_IMG)    }<link rel="last" title="{'Last'|@translate}" href="{$last.U_IMG}" >{/if}
+{if isset($U_UP)          }<link rel="up" title="{'Thumbnails'|@translate}" href="{$U_UP}" >{/if}
+
+{get_combined_css}
+{foreach from=$themes item=theme}
+{if $theme.load_css}
+{combine_css path="themes/`$theme.id`/theme.css" order=-10}
+{/if}
+{if !empty($theme.local_head)}{include file=$theme.local_head load_css=$theme.load_css}{/if}
+{/foreach}
+
+
+{if isset($U_PREFETCH)}<link rel="prefetch" href="{$U_PREFETCH}">{/if}
+{if isset($U_CANONICAL)}<link rel="canonical" href="{$U_CANONICAL}">{/if}
+
+{if not empty($page_refresh)    }<meta http-equiv="refresh" content="{$page_refresh.TIME};url={$page_refresh.U_REFRESH}">{/if}
+
+{get_combined_scripts load='header'}
+<!--[if lt IE 7]>
+<script type="text/javascript" src="{$ROOT_URL}themes/default/js/pngfix.js"></script>
+<![endif]-->
+
+{combine_script id="jquery" load="footer"}
+
+{if not empty($head_elements)}
+	{foreach from=$head_elements item=elt}{$elt}
+	{/foreach}
+{/if}
+
+</head>
+
+<body id="{$BODY_ID}">
+<div id="the_page">
+
+{if not empty($header_msgs)}
+<div class="header_msgs">
+	{foreach from=$header_msgs item=elt}
+	{$elt}<br>
+	{/foreach}
+</div>
+{/if}
+
+<div id="theHeader">{$PAGE_BANNER}</div>
+{if isset($theSwiftHeader)}{$theSwiftHeader}{/if}
+{if not empty($header_notes)}
+<div class="header_notes">
+	{foreach from=$header_notes item=elt}
+	<p>{$elt}</p>
+  	{/foreach}
+</div>
+{/if}
Index: /tags/2.6.0RC1/themes/default/template/identification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/identification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/identification.tpl	(revision 25596)
@@ -0,0 +1,66 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Identification'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+<form action="{$F_LOGIN_ACTION}" method="post" name="login_form" class="properties">
+  <fieldset>
+    <legend>{'Connection settings'|@translate}</legend>
+
+    <ul>
+      <li>
+        <span class="property">
+          <label for="username">{'Username'|@translate}</label>
+        </span>
+        <input tabindex="1" class="login" type="text" name="username" id="username" size="25" maxlength="40">
+      </li>
+
+      <li>
+        <span class="property">
+          <label for="password">{'Password'|@translate}</label>
+        </span>
+        <input tabindex="2" class="login" type="password" name="password" id="password" size="25" maxlength="25">
+      </li>
+
+      {if $authorize_remembering }
+      <li>
+        <span class="property">
+          <label for="remember_me">{'Auto login'|@translate}</label>
+        </span>
+        <input tabindex="3" type="checkbox" name="remember_me" id="remember_me" value="1">
+      </li>
+      {/if}
+    </ul>
+  </fieldset>
+
+  <p>
+    <input type="hidden" name="redirect" value="{$U_REDIRECT|@urlencode}">
+    <input tabindex="4" type="submit" name="login" value="{'Submit'|@translate}">
+  </p>
+
+	<p>
+{if isset($U_REGISTER)}
+		<a href="{$U_REGISTER}" title="{'Register'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-register">&nbsp;</span><span>{'Register'|@translate}</span>
+		</a>
+{/if}
+{if isset($U_LOST_PASSWORD)}
+		<a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-lost-password">&nbsp;</span><span>{'Forgot your password?'|@translate}</span>
+		</a>
+{/if}
+	</p>
+
+</form>
+
+<script type="text/javascript"><!--
+document.login_form.username.focus();
+//--></script>
+
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/default/template/include/autosize.inc.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/include/autosize.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/include/autosize.inc.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+{combine_script id='jquery.autogrow' load='async' require='jquery' path='themes/default/js/plugins/jquery.autogrow-textarea.js'}
+{* Auto size and auto grow textarea *}
+{footer_script require='jquery.autogrow'}{literal}
+jQuery(document).ready(function(){
+	jQuery('textarea').css('overflow-y', 'hidden');
+	// Auto size and auto grow for all text area
+	jQuery('textarea').autogrow();
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/themes/default/template/include/colorbox.inc.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/include/colorbox.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/include/colorbox.inc.tpl	(revision 25596)
@@ -0,0 +1,2 @@
+{combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
+{combine_css path="themes/default/js/plugins/colorbox/style2/colorbox.css"}
Index: /tags/2.6.0RC1/themes/default/template/include/datepicker.inc.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/include/datepicker.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/include/datepicker.inc.tpl	(revision 25596)
@@ -0,0 +1,18 @@
+{combine_script id='datepicker.js' load='footer' require='jquery.ui.datepicker' path='themes/default/js/datepicker.js'}
+
+{assign var="datepicker_language" value="themes/default/js/ui/i18n/jquery.ui.datepicker-`$lang_info.code`.js"}
+
+{if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists}
+{combine_script id="jquery.ui.datepicker-$lang_info.code" load='footer' path=$datepicker_language}
+{/if}
+
+{combine_css path="themes/default/js/ui/theme/jquery.ui.datepicker.css"}
+
+{footer_script require='jquery.ui.datepicker,datepicker.js'}
+function pwg_initialization_datepicker(day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date)
+{ldelim}
+  return pwg_common_initialization_datepicker(
+    "{$ROOT_URL}{$themeconf.icon_dir}/datepicker.png",
+    day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date);
+}
+{/footer_script}
Index: /tags/2.6.0RC1/themes/default/template/include/resize.inc.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/include/resize.inc.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/include/resize.inc.tpl	(revision 25596)
@@ -0,0 +1,16 @@
+{* Resize possible *}
+{footer_script require='jquery.ui.resizable'}{literal}
+  jQuery().ready(function(){
+    // Resize possible for list
+    jQuery(".categoryList").resizable({
+      handles: "all",
+      animate: true,
+      animateDuration: "slow",
+      animateEasing: "swing",
+      preventDefault: true,
+      preserveCursor: true,
+      autoHide: true,
+      ghost: true
+    });
+  });
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/themes/default/template/index.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/index.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/index.tpl	(revision 25596)
@@ -0,0 +1,175 @@
+{combine_script id='core.switchbox' load='async' require='jquery' path='themes/default/js/switchbox.js'}
+{$MENUBAR}
+
+
+{if isset($errors) or isset($infos)}
+<div class="content messages{if isset($MENUBAR)} contentWithMenu{/if}">
+{include file='infos_errors.tpl'}
+</div>
+{/if}
+
+{if !empty($PLUGIN_INDEX_CONTENT_BEFORE)}{$PLUGIN_INDEX_CONTENT_BEFORE}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+<div class="titrePage{if isset($chronology.TITLE)} calendarTitleBar{/if}">
+	<ul class="categoryActions">
+{if !empty($image_orders)}
+		<li>{strip}<a id="sortOrderLink" title="{'Sort order'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-sort"></span><span class="pwg-button-text">{'Sort order'|@translate}</span>
+		</a>
+		<div id="sortOrderBox" class="switchBox">
+			<div class="switchBoxTitle">{'Sort order'|@translate}</div>
+			{foreach from=$image_orders item=image_order name=loop}{if !$smarty.foreach.loop.first}<br>{/if}
+			{if $image_order.SELECTED}
+			<span>&#x2714; </span>{$image_order.DISPLAY}
+			{else}
+			<span style="visibility:hidden">&#x2714; </span><a href="{$image_order.URL}" rel="nofollow">{$image_order.DISPLAY}</a>
+			{/if}
+			{/foreach}
+		</div>
+		{footer_script}(SwitchBox=window.SwitchBox||[]).push("#sortOrderLink", "#sortOrderBox");{/footer_script}
+		{/strip}</li>
+{/if}
+{if !empty($image_derivatives)}
+		<li>{strip}<a id="derivativeSwitchLink" title="{'Photo sizes'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-sizes"></span><span class="pwg-button-text">{'Photo sizes'|@translate}</span>
+		</a>
+		<div id="derivativeSwitchBox" class="switchBox">
+			<div class="switchBoxTitle">{'Photo sizes'|@translate}</div>
+			{foreach from=$image_derivatives item=image_derivative name=loop}{if !$smarty.foreach.loop.first}<br>{/if}
+			{if $image_derivative.SELECTED}
+			<span>&#x2714; </span>{$image_derivative.DISPLAY}
+			{else}
+			<span style="visibility:hidden">&#x2714; </span><a href="{$image_derivative.URL}" rel="nofollow">{$image_derivative.DISPLAY}</a>
+			{/if}
+			{/foreach}
+		</div>
+		{footer_script}(SwitchBox=window.SwitchBox||[]).push("#derivativeSwitchLink", "#derivativeSwitchBox");{/footer_script}
+		{/strip}</li>
+{/if}
+
+{if isset($favorite)}
+		<li id="cmdFavorite"><a href="{$favorite.U_FAVORITE}" title="{'delete all photos from your favorites'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-favorite-del"></span><span class="pwg-button-text">{'delete all photos from your favorites'|@translate}</span>
+		</a></li>
+{/if}
+{if isset($U_CADDIE)}
+		<li id="cmdCaddie"><a href="{$U_CADDIE}" title="{'Add to caddie'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-caddie-add"></span><span class="pwg-button-text">{'Caddie'|@translate}</span>
+		</a></li>
+{/if}
+{if isset($U_EDIT)}
+		<li id="cmdEditAlbum"><a href="{$U_EDIT}" title="{'Edit album'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-category-edit"></span><span class="pwg-button-text">{'Edit'|@translate}</span>
+		</a></li>
+{/if}
+{if isset($U_SEARCH_RULES)}
+		{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+		<li><a href="{$U_SEARCH_RULES}" onclick="popuphelp(this.href); return false;" title="{'Search rules'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-help"></span><span class="pwg-button-text">(?)</span>
+		</a></li>
+{/if}
+{if isset($U_SLIDESHOW)}
+		<li id="cmdSlideshow">{strip}<a href="{$U_SLIDESHOW}" title="{'slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-slideshow"></span><span class="pwg-button-text">{'slideshow'|@translate}</span>
+		</a>{/strip}</li>
+{/if}
+{if isset($U_MODE_FLAT)}
+		<li>{strip}<a href="{$U_MODE_FLAT}" title="{'display all photos in all sub-albums'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-category-view-flat"></span><span class="pwg-button-text">{'display all photos in all sub-albums'|@translate}</span>
+		</a>{/strip}</li>
+{/if}
+{if isset($U_MODE_NORMAL)}
+		<li>{strip}<a href="{$U_MODE_NORMAL}" title="{'return to normal view mode'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-category-view-normal"></span><span class="pwg-button-text">{'return to normal view mode'|@translate}</span>
+		</a>{/strip}</li>
+{/if}
+{if isset($U_MODE_POSTED)}
+		<li>{strip}<a href="{$U_MODE_POSTED}" title="{'display a calendar by posted date'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-calendar"></span><span class="pwg-button-text">{'Calendar'|@translate}</span>
+		</a>{/strip}</li>
+{/if}
+{if isset($U_MODE_CREATED)}
+		<li>{strip}<a href="{$U_MODE_CREATED}" title="{'display a calendar by creation date'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-camera-calendar"></span><span class="pwg-button-text">{'Calendar'|@translate}</span>
+		</a>{/strip}</li>
+{/if}
+{if !empty($PLUGIN_INDEX_BUTTONS)}{foreach from=$PLUGIN_INDEX_BUTTONS item=button}<li>{$button}</li>{/foreach}{/if}
+{if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if}
+	</ul>
+
+<h2>{$TITLE}</h2>
+
+{if isset($chronology_views)}
+<div class="calendarViews">{'View'|@translate}:
+	<a id="calendarViewSwitchLink" href="#">
+	{foreach from=$chronology_views item=view}{if $view.SELECTED}{$view.CONTENT}{/if}{/foreach}
+	</a>
+	<div id="calendarViewSwitchBox" class="switchBox">
+		{foreach from=$chronology_views item=view name=loop}{if !$smarty.foreach.loop.first}<br>{/if}
+		<span{if !$view.SELECTED} style="visibility:hidden"{/if}>&#x2714; </span><a href="{$view.VALUE}">{$view.CONTENT}</a>
+		{/foreach}
+	</div>
+	{footer_script}(SwitchBox=window.SwitchBox||[]).push("#calendarViewSwitchLink", "#calendarViewSwitchBox");{/footer_script}
+</div>
+{/if}
+
+{if isset($chronology.TITLE)}
+<h2 class="calendarTitle">{$chronology.TITLE}</h2>
+{/if}
+
+</div>{* <!-- titrePage --> *}
+
+{if !empty($PLUGIN_INDEX_CONTENT_BEGIN)}{$PLUGIN_INDEX_CONTENT_BEGIN}{/if}
+
+{if !empty($category_search_results)}
+<div class="category_search_results">{'Album results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
+	<em><strong>
+	{foreach from=$category_search_results item=res name=res_loop}
+	{if !$smarty.foreach.res_loop.first} &mdash; {/if}
+	{$res}
+	{/foreach}
+	</strong></em>
+</div>
+{/if}
+
+{if !empty($tag_search_results)}
+<div class="tag_search_results">{'Tag results for'|@translate} <strong>{$QUERY_SEARCH}</strong> :
+	<em><strong>
+	{foreach from=$tag_search_results item=tag name=res_loop}
+	{if !$smarty.foreach.res_loop.first} &mdash; {/if} <a href="{$tag.URL}">{$tag.name}</a>
+	{/foreach}
+	</strong></em>
+</div>
+{/if}
+
+{if isset($FILE_CHRONOLOGY_VIEW)}
+{include file=$FILE_CHRONOLOGY_VIEW}
+{/if}
+
+{if !empty($CONTENT_DESCRIPTION)}
+<div class="additional_info">
+	{$CONTENT_DESCRIPTION}
+</div>
+{/if}
+
+{if !empty($CONTENT)}{$CONTENT}{/if}
+
+{if !empty($CATEGORIES)}{$CATEGORIES}{/if}
+
+{if !empty($cats_navbar)}
+	{include file='navigation_bar.tpl'|@get_extent:'navbar' navbar=$cats_navbar}
+{/if}
+
+{if !empty($THUMBNAILS)}
+<div class="loader"><img src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif"></div>
+<ul class="thumbnails" id="thumbnails">
+  {$THUMBNAILS}
+</ul>
+{/if}
+{if !empty($thumb_navbar)}
+	{include file='navigation_bar.tpl'|@get_extent:'navbar' navbar=$thumb_navbar}
+{/if}
+
+{if !empty($PLUGIN_INDEX_CONTENT_END)}{$PLUGIN_INDEX_CONTENT_END}{/if}
+</div>{* <!-- content --> *}
+{if !empty($PLUGIN_INDEX_CONTENT_AFTER)}{$PLUGIN_INDEX_CONTENT_AFTER}{/if}
Index: /tags/2.6.0RC1/themes/default/template/infos_errors.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/infos_errors.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/infos_errors.tpl	(revision 25596)
@@ -0,0 +1,19 @@
+{if isset($errors) }
+<div class="errors">
+  <ul>
+    {foreach from=$errors item=error}
+    <li>{$error}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
+
+{if not empty($infos)}
+<div class="infos">
+  <ul>
+    {foreach from=$infos item=info}
+    <li>{$info}</li>
+    {/foreach}
+  </ul>
+</div>
+{/if}
Index: /tags/2.6.0RC1/themes/default/template/mail/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/cat_group_info.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/cat_group_info.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/cat_group_info.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<div id="cat_group_info">
+<h2>{'Informations'|@translate}</h2>
+<p>{$IMG_URL}</p>
+<p>{'Hello,'|@translate}</p>
+<p>{'Discover album:'|@translate} <a href="{$LINK}">{$CAT_NAME}</a></p>
+<p>{$CPL_CONTENT}</p>
+<p>{'See you soon.'|@translate}</p>
+</div>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/footer.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/footer.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/footer.tpl	(revision 25596)
@@ -0,0 +1,23 @@
+            {* <!-- end $CONTENT --> *}
+          </td></tr>
+
+          <tr><td id="footer">
+            {* <!-- begin FOOTER --> *}
+{* <!-- Please, do not remove this copyright. If you really want to,
+contact us on http://piwigo.org to find a solution on how
+to show the origin of the script... --> *}
+      
+            {'Sent by'|translate} <a href="{$GALLERY_URL}">{$GALLERY_TITLE}</a>
+            - {'Powered by'|translate} <a href="{$PHPWG_URL}" class="Piwigo">Piwigo</a>
+            {if not empty($VERSION)}{$VERSION}{/if}
+            
+            - {'Contact'|translate}
+            <a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|translate|escape:url}">{'Webmaster'|@translate}</a>
+            {* <!-- end FOOTER --> *}
+          </td></tr>
+        </table>
+
+      </td></tr>
+    </table>
+  </body>
+</html>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/global-mail-css.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/global-mail-css.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/global-mail-css.tpl	(revision 25596)
@@ -0,0 +1,105 @@
+{strip}
+/* page */
+body {
+  font-family:"Verdana", "Helvetica", "Optima", sans-serif;
+  font-size:12px;
+  margin:0px;
+  padding:0px;
+}
+
+html, body, #bodyTable {
+  width:100%;
+  height:100%;
+}
+
+/* main block */
+#header {
+  padding:20px;
+}
+#header #title {
+  font-size:26px;
+  font-weight:bold;
+}
+#header #subtitle {
+  font-size:20px;
+}
+#content {
+  padding:0 20px 20px 20px;
+  font-family:"Verdana", "Helvetica", "Optima", sans-serif;
+  font-size:13px;
+}
+#footer {
+  font-size:10px;
+  padding:5px;
+}
+#topSpacer {
+  margin-bottom:20px;
+}
+
+/* images */
+img {
+  border:none;
+}
+
+h1, h2, h3, h4, h5 {
+  margin:0.5em 0 0.25em 0;
+}
+h1 { font-size:26px; }
+h2 { font-size:20px; }
+h3 { font-size:16px; }
+h4 { font-size:12px; }
+h5 { font-size:10px; }
+
+/* paragraphs */
+p {
+  margin:0.25em 0 0.5em 0;
+}
+blockquote {
+  margin-left:10px;
+  padding-left:10px;
+  font-family:"Times",serif;
+  font-size:14px;
+}
+
+/* list */
+ul, ol {
+  margin:0.5em 0 0.25em 30px;
+  padding:0;
+}
+dl {
+  margin:0.5em 0 0.25em 10px;
+}
+dt {
+  margin:0.25em 0 0 0;
+  font-weight:bold;
+}
+dd {
+  margin:0 0 0.25em 10px;
+}
+
+/* tables */
+#content table {
+  width:100%;
+  border-spacing:0;
+  border-collapse:collapse;
+}
+#content table td {
+  padding:2px 3px;
+}
+#content table th {
+  font-weight:bold;
+  text-align:center;
+  padding:4px 0;
+}
+#content table tfoot td {
+  font-size:0.8em;
+}
+
+/* line */
+hr {
+  border-width:0 0 1px 0;
+  border-color:#ddd;
+  border-style:solid;
+  margin:1em;
+}
+{/strip}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/header.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/header.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/header.tpl	(revision 25596)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}"/>
+    <title>Piwigo Mail</title>
+
+    <style type="text/css">
+    {if isset($GLOBAL_MAIL_CSS)}{$GLOBAL_MAIL_CSS}{/if}
+    {if isset($MAIL_CSS)}{$MAIL_CSS}{/if}
+    </style>
+  </head>
+
+  <body>
+    <table id="bodyTable" cellspacing="0" cellpadding="10" border="0">
+      <tr><td align="center" valign="top">
+
+        <table id="contentTable" cellspacing="0" cellpadding="0" border="0">
+          <tr><td id="header">
+            {* <!-- begin HEADER --> *}
+            <div id="title">{$MAIL_TITLE}</div>
+            {if not empty($MAIL_SUBTITLE)}<div id="subtitle">{$MAIL_SUBTITLE}</div>{/if}
+            {* <!-- end HEADER --> *}
+          </td></tr>
+
+          <tr><td id="content">
+{* <!-- use an invisible div with a bottom margin to force the browser 
+to merge the margin with the element bellow (typically h1/h2/...) --> *}
+            <div id="topSpacer"></div>
+            {* <!-- begin CONTENT --> *}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-clear.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-clear.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-clear.tpl	(revision 25596)
@@ -0,0 +1,73 @@
+{strip}
+/* page */
+body {
+  color:#111;
+}
+
+html, body, #bodyTable {
+  background:#fff;
+}
+#contentTable {
+  width:600px;
+}
+
+/* main block */
+#header {
+  background:#eee;
+  background-image:radial-gradient(ellipse at center, #fefefe, #e5e5e5);
+  border-top:4px solid #f70;
+  text-align:center;
+  text-shadow:1px 1px 0px #fff;
+}
+#header #subtitle {
+  color:#e06900;
+}
+#content {
+  background:#fefefe;
+  border-width:1px;
+  border-style:solid;
+  border-color:#ddd #eee;
+  box-shadow:inset 0 0 20px #eee;
+}
+#footer {
+  background:#eee;
+  border-bottom:2px solid #f70;
+}
+
+/* links */
+a {
+  color:#f70;
+  text-decoration:none;
+}
+a:hover {
+  text-decoration:underline;
+}
+
+/* images */
+img.photo {
+  border:10px solid #ddd;
+}
+img.photo:hover {
+  border-color:#eee;
+}
+
+/* paragraphs */
+blockquote {
+  border-left:2px solid #aaa;
+  border-radius:2px;
+}
+
+/* tables */
+#content table td {
+  border-bottom:1px solid #efefef;
+}
+#content table th {
+  background:#aaa;
+  color:#fff;
+  border-right:1px solid #ddd;
+}
+#content table tfoot td {
+  background:#eee;
+  border-right:1px solid #fff;
+}
+{/strip}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-dark.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-dark.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/mail-css-dark.tpl	(revision 25596)
@@ -0,0 +1,87 @@
+{strip}
+/* page */
+body {
+  color:#fff;
+}
+
+html, body, #bodyTable {
+  background:#111;
+}
+#contentTable {
+  width:600px;
+}
+
+/* main block */
+#header {
+  background:#444;
+  background-image:radial-gradient(ellipse at center, #555, #333);
+  border:1px solid #000;
+  border-top:4px solid #f36;
+  text-align:center;
+  text-shadow:1px 1px 0px #000;
+}
+#header #title {
+  color:#eee;
+}
+#header #subtitle {
+  color:#C9224C;
+}
+#content {
+  background:#111;
+  border-width:1px;
+  border-style:solid;
+  border-color:#666 #000;
+  box-shadow:inset 0 0 20px #333;
+}
+#footer {
+  background:#333;
+  border:1px solid #000;
+  border-bottom:2px solid #f36;
+}
+
+/* links */
+a {
+  color:#f36;
+  text-decoration:none;
+}
+a:hover {
+  text-decoration:underline;
+}
+
+/* images */
+img.photo {
+  border:10px solid #666;
+}
+img.photo:hover {
+  border-color:#999;
+}
+
+h1, h2, h3, h4, h5 {
+  color:#bbb;
+}
+
+/* paragraphs */
+blockquote {
+  border-left:2px solid #aaa;
+  border-radius:2px;
+}
+
+/* tables */
+#content table td {
+  border-bottom:1px solid #999;
+}
+#content table th {
+  background:#666;
+  border-right:1px solid #aaa;
+}
+#content table tfoot td {
+  background:#444;
+  color:#aaa;
+  border-right:1px solid #aaa;
+}
+
+/* line */
+hr {
+  border-color:#555;
+}
+{/strip}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_admin.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_admin.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+{$CONTENT}
+
+{if isset($TECHNICAL)}
+<p style="padding-top:10px;font-size:11px;">
+{'Connected user: %s'|translate:$TECHNICAL.username}<br>
+{'IP: %s'|translate:$TECHNICAL.ip}<br>
+{'Browser: %s'|translate:$TECHNICAL.user_agent}
+</p>
+{/if}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_by_mail.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_by_mail.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/html/notification_by_mail.tpl	(revision 25596)
@@ -0,0 +1,56 @@
+<div id="nbm_message">
+<h2>{'Notification'|@translate}</h2>
+<p>{'Hello'|@translate} {$USERNAME},</p>
+
+{if isset($subscribe_by_admin)}
+<p>{'The webmaster has subscribed you to receiving notifications by mail.'|@translate}</p>
+{/if}
+{if isset($subscribe_by_himself)}
+<p>{'You have subscribed to receiving notifications by mail.'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_admin)}
+<p>{'The webmaster has unsubscribed you from receiving notifications by mail.'|@translate}</p>
+{/if}
+{if isset($unsubscribe_by_himself)}
+<p>{'You have unsubscribed from receiving notifications by mail.'|@translate}</p>
+{/if}
+{if isset($content_new_elements_single)}
+<p>{'New photos were added'|@translate} {'on'|@translate} {$content_new_elements_single.DATE_SINGLE}.</p>
+{/if}
+{if isset($content_new_elements_between)}
+<p>{'New photos were added'|@translate} {'between'|@translate} {$content_new_elements_between.DATE_BETWEEN_1} {'and'|@translate} {$content_new_elements_between.DATE_BETWEEN_2}.</p>
+{/if}
+
+{if not empty($global_new_lines)}
+<ul id="nbm_new_line">
+{foreach from=$global_new_lines item=line}
+  <li>{$line}</li>
+{/foreach}
+</ul>
+{/if}
+
+{if not empty($custom_mail_content)}
+<p>{$custom_mail_content}</p>
+{/if}
+
+{if not empty($GOTO_GALLERY_TITLE)}
+<p>{'Go to'|@translate} <a href="{$GOTO_GALLERY_URL}">{$GOTO_GALLERY_TITLE}</a>.</p>
+{/if}
+<p>{'See you soon,'|@translate}</p>
+<p style="text-align:center">{$SEND_AS_NAME}</p>
+<hr>
+<p>
+{'To unsubscribe'|@translate}{', click on'|@translate} <a href="{$UNSUBSCRIBE_LINK}">{$UNSUBSCRIBE_LINK}</a><br>
+{'To subscribe'|@translate}{', click on'|@translate} <a href="{$SUBSCRIBE_LINK}">{$SUBSCRIBE_LINK}</a><br>
+{'If you encounter problems or have any question, please send a message to'|@translate} <a href="mailto:{$CONTACT_EMAIL}?subject={'[NBM] Problems or questions'|@translate}">{$CONTACT_EMAIL}</a><br>
+</p>
+<hr>
+{if not empty($recent_posts)}
+</div>
+<div id="nbm_recent_post">
+  {foreach from=$recent_posts item=recent_post }
+  <h2>{$recent_post.TITLE}</h2>
+  {$recent_post.HTML_DATA}
+  {/foreach}
+{/if}
+</div>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/cat_group_info.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/cat_group_info.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/cat_group_info.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+{'Hello,'|@translate}
+
+{'Discover album:'|@translate} {$CAT_NAME}
+{$LINK}
+
+{$CPL_CONTENT}
+
+{'See you soon.'|@translate}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/footer.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/footer.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/footer.tpl	(revision 25596)
@@ -0,0 +1,7 @@
+{literal}
+
+{/literal}
+----
+{'Sent by'|@translate} "{$GALLERY_TITLE}" {$GALLERY_URL}
+{'Powered by'|@translate} "Piwigo{if not empty($VERSION)} {$VERSION}{/if}" {$PHPWG_URL}
+{'Contact'|@translate}: {$CONTACT_MAIL}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/header.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/header.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/header.tpl	(revision 25596)
@@ -0,0 +1,6 @@
+{$MAIL_TITLE}
+{if not empty($MAIL_SUBTITLE)}{$MAIL_SUBTITLE}
+{/if}
+----
+{literal}
+{/literal}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/index.php
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_admin.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_admin.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+{$CONTENT}
+
+{if isset($TECHNICAL)}
+-----------------------------
+{'Connected user: %s'|translate:$TECHNICAL.username}
+{'IP: %s'|translate:$TECHNICAL.ip}
+{'Browser: %s'|translate:$TECHNICAL.user_agent}
+{/if}
Index: /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_by_mail.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_by_mail.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mail/text/plain/notification_by_mail.tpl	(revision 25596)
@@ -0,0 +1,41 @@
+{'Hello'|@translate} {$USERNAME},
+
+{if isset($subscribe_by_admin)}
+{'The webmaster has subscribed you to receiving notifications by mail.'|@translate}
+{/if}
+{if isset($subscribe_by_himself)}
+{'You have subscribed to receiving notifications by mail.'|@translate}
+{/if}
+{if isset($unsubscribe_by_admin)}
+{'The webmaster has unsubscribed you from receiving notifications by mail.'|@translate}
+{/if}
+{if isset($unsubscribe_by_himself)}
+{'You have unsubscribed from receiving notifications by mail.'|@translate}
+{/if}
+{if isset($content_new_elements_single)}
+{'New photos were added'|@translate} {'on'|@translate} {$content_new_elements_single.DATE_SINGLE}.
+{/if}
+{if isset($content_new_elements_between)}
+{'New photos were added'|@translate} {'between'|@translate} {$content_new_elements_between.DATE_BETWEEN_1} {'and'|@translate} {$content_new_elements_between.DATE_BETWEEN_2}.
+{/if}
+{if not empty($global_new_lines)}
+{foreach from=$global_new_lines item=line}
+  o {$line}
+{/foreach}
+{/if}
+{if not empty($custom_mail_content)}
+{$custom_mail_content}
+{/if}
+{if not empty($GOTO_GALLERY_TITLE)}
+.{$GOTO_GALLERY_TITLE} {$GOTO_GALLERY_URL} .
+{/if}
+
+{'See you soon,'|@translate}
+  {$SEND_AS_NAME}
+
+______________________________________________________________________________
+
+{'To unsubscribe'|@translate}{', click on'|@translate} {$UNSUBSCRIBE_LINK}
+{'To subscribe'|@translate}{', click on'|@translate} {$SUBSCRIBE_LINK}
+{'If you encounter problems or have any question, please send a message to'|@translate} {$CONTACT_EMAIL}
+______________________________________________________________________________
Index: /tags/2.6.0RC1/themes/default/template/mainpage_categories.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/mainpage_categories.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/mainpage_categories.tpl	(revision 25596)
@@ -0,0 +1,48 @@
+{strip}{html_style}
+.thumbnailCategory .illustration{ldelim}
+	width: {$derivative_params->max_width()+5}px;
+}
+
+.content .thumbnailCategory .description{ldelim}
+	height: {$derivative_params->max_height()+5}px;
+}
+{/html_style}{/strip}
+{footer_script}
+  var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png", max_requests = {$maxRequests};
+{/footer_script}
+<div class="loader"><img src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif"></div>
+<ul class="thumbnailCategories">
+{foreach from=$category_thumbnails item=cat name=cat_loop}
+{assign var=derivative value=$pwg->derivative($derivative_params, $cat.representative.src_image)}
+{if !$derivative->is_cached()}
+{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
+{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{/if}
+  <li class="{if $smarty.foreach.cat_loop.index is odd}odd{else}even{/if}">
+		<div class="thumbnailCategory">
+			<div class="illustration">
+			<a href="{$cat.URL}">
+				<img {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">
+			</a>
+			</div>
+			<div class="description">
+				<h3>
+					<a href="{$cat.URL}">{$cat.NAME}</a>
+					{if !empty($cat.icon_ts)}
+					<img title="{$cat.icon_ts.TITLE}" src="{$ROOT_URL}{$themeconf.icon_dir}/recent{if $cat.icon_ts.IS_CHILD_DATE}_by_child{/if}.png" alt="(!)">
+					{/if}
+				</h3>
+		<div class="text">
+				{if isset($cat.INFO_DATES) }
+				<p class="dates">{$cat.INFO_DATES}</p>
+				{/if}
+				<p class="Nb_images">{$cat.CAPTION_NB_IMAGES}</p>
+				{if not empty($cat.DESCRIPTION)}
+				<p>{$cat.DESCRIPTION}</p>
+				{/if}
+		</div>
+			</div>
+		</div>
+	</li>
+{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/default/template/menubar.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar.tpl	(revision 25596)
@@ -0,0 +1,13 @@
+{if !empty($blocks) }
+<div id="menubar">
+	{foreach from=$blocks key=id item=block}
+	<dl id="{$id}">
+		{if not empty($block->template)}
+		{include file=$block->template|@get_extent:$id }
+		{else}
+		{$block->raw_content}
+		{/if}
+	</dl>
+	{/foreach}
+</div><div id="menuSwitcher"></div>
+{/if}
Index: /tags/2.6.0RC1/themes/default/template/menubar_categories.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_categories.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_categories.tpl	(revision 25596)
@@ -0,0 +1,32 @@
+<dt>
+	{if isset($U_START_FILTER)}
+	<a href="{$U_START_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'display only recently posted photos'|@translate}" rel="nofollow"><span class="pwg-icon pwg-icon-filter"> </span></a>
+	{/if}
+	{if isset($U_STOP_FILTER)}
+	<a href="{$U_STOP_FILTER}" class="pwg-state-default pwg-button menubarFilter" title="{'return to the display of all photos'|@translate}"><span class="pwg-icon pwg-icon-filter-del"> </span></a>
+	{/if}
+	<a href="{$block->data.U_CATEGORIES}">{'Albums'|@translate}</a>
+</dt>
+<dd>
+{assign var='ref_level' value=0}
+{foreach from=$block->data.MENU_CATEGORIES item=cat}
+  {if $cat.LEVEL > $ref_level}
+  <ul>
+  {else}
+    </li>
+    {'</ul></li>'|@str_repeat:($ref_level-$cat.LEVEL)}
+  {/if}
+    <li {if $cat.SELECTED}class="selected"{/if}>
+      <a href="{$cat.URL}" {if $cat.IS_UPPERCAT}rel="up"{/if} title="{$cat.TITLE}">{$cat.NAME}</a>
+      {if $cat.count_images > 0}
+      <span class="{if $cat.nb_images > 0}menuInfoCat{else}menuInfoCatByChild{/if}" title="{$cat.TITLE}">[{$cat.count_images}]</span>
+      {/if}
+      {if !empty($cat.icon_ts)}
+      <img title="{$cat.icon_ts.TITLE}" src="{$ROOT_URL}{$themeconf.icon_dir}/recent{if $cat.icon_ts.IS_CHILD_DATE}_by_child{/if}.png" class="icon" alt="(!)">
+      {/if}
+  {assign var='ref_level' value=$cat.LEVEL}
+{/foreach}
+{'</li></ul>'|@str_repeat:$ref_level}
+
+	<p class="totalImages">{$block->data.NB_PICTURE|@translate_dec:'%d photo':'%d photos'}</p>
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/menubar_identification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_identification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_identification.tpl	(revision 25596)
@@ -0,0 +1,64 @@
+<dt>{'Identification'|@translate}</dt>
+<dd>
+{strip}
+	{if isset($USERNAME)}
+	<p>{'Hello'|@translate} {$USERNAME} !</p>
+	{/if}
+	<ul>
+	{if isset($U_REGISTER)}
+	<li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
+	{/if}
+	{if isset($U_LOGIN)}
+	<li><a href="{$U_LOGIN}" rel="nofollow">{'Login'|@translate}</a></li>
+	{/if}
+	{if isset($U_LOGOUT)}
+	<li><a href="{$U_LOGOUT}">{'Logout'|@translate}</a></li>
+	{/if}
+	{if isset($U_PROFILE)}
+	<li><a href="{$U_PROFILE}" title="{'customize the appareance of the gallery'|@translate}">{'Customize'|@translate}</a></li>
+	{/if}
+	{if isset($U_ADMIN)}
+	<li><a href="{$U_ADMIN}" title="{'available for administrators only'|@translate}">{'Administration'|@translate}</a></li>
+	{/if}
+	</ul>
+{/strip}
+	{if isset($U_LOGIN)}
+{strip}
+	<form method="post" action="{$U_LOGIN}" id="quickconnect">
+	<fieldset>
+	<legend>{'Quick connect'|@translate}</legend>
+	<div>
+	<label for="username">{'Username'|@translate}</label><br>
+	<input type="text" name="username" id="username" value="" style="width:99%">
+	</div>
+
+	<div><label for="password">{'Password'|@translate}</label><br>
+	<input type="password" name="password" id="password" style="width:99%">
+	</div>
+
+	{if $AUTHORIZE_REMEMBERING}
+	<div><label for="remember_me">
+	<input type="checkbox" name="remember_me" id="remember_me" value="1"> {'Auto login'|@translate}
+	</label></div>
+	{/if}
+
+	<div>
+	<input type="hidden" name="redirect" value="{$smarty.server.REQUEST_URI|@urlencode}">
+	<input type="submit" name="login" value="{'Submit'|@translate}">
+	<span class="categoryActions">
+{if isset($U_REGISTER)}
+		<a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-register"> </span>
+		</a>
+{/if}
+		<a href="{$U_LOST_PASSWORD}" title="{'Forgot your password?'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-lost-password"> </span>
+		</a>
+	</span>
+	</div>
+
+	</fieldset>
+	</form>
+{/strip}
+	{/if}
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/menubar_links.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_links.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_links.tpl	(revision 25596)
@@ -0,0 +1,12 @@
+<dt>{'Links'|@translate}</dt>
+<dd>
+	<ul>{strip}
+		{foreach from=$block->data item=link}
+			<li>
+				<a href="{$link.URL}" class="external"{if isset($link.new_window)} onclick="window.open(this.href, '{$link.new_window.NAME}','{$link.new_window.FEATURES}'); return false;"{/if}>
+				{$link.LABEL}
+				</a>
+			</li>
+		{/foreach}
+	{/strip}</ul>
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/menubar_menu.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_menu.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_menu.tpl	(revision 25596)
@@ -0,0 +1,18 @@
+<dt>{'Menu'|@translate}</dt>
+<dd>
+{if isset($block->data.qsearch) and  $block->data.qsearch==true}
+	<form action="{$ROOT_URL}qsearch.php" method="get" id="quicksearch" onsubmit="return this.q.value!='' && this.q.value!=qsearch_prompt;">
+		<p style="margin:0;padding:0"{*this <p> is for html validation only - does not affect positioning*}>
+			<input type="text" name="q" id="qsearchInput" onfocus="if (value==qsearch_prompt) value='';" onblur="if (value=='') value=qsearch_prompt;" style="width:90%">
+		</p>
+	</form>
+	<script type="text/javascript">var qsearch_prompt="{'Quick search'|@translate|@escape:'javascript'}"; document.getElementById('qsearchInput').value=qsearch_prompt;</script>
+{/if}
+	<ul>{strip}
+	{foreach from=$block->data item=link}
+		{if is_array($link)}
+			<li><a href="{$link.URL}" title="{$link.TITLE}"{if isset($link.REL)} {$link.REL}{/if}>{$link.NAME}</a>{if isset($link.COUNTER)} ({$link.COUNTER}){/if}</li>
+		{/if}
+	{/foreach}
+	{/strip}</ul>
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/menubar_specials.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_specials.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_specials.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<dt>{'Specials'|@translate}</dt>
+<dd>
+	<ul>{strip}
+		{foreach from=$block->data item=link}
+		<li><a href="{$link.URL}" title="{$link.TITLE}"{if isset($link.REL)} {$link.REL}{/if}>{$link.NAME}</a></li>
+		{/foreach}
+	{/strip}</ul>
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/menubar_tags.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/menubar_tags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/menubar_tags.tpl	(revision 25596)
@@ -0,0 +1,16 @@
+<dt>{'Related tags'|@translate}</dt>
+<dd>
+	<div id="menuTagCloud">
+		{foreach from=$block->data item=tag}
+		<span>{strip}
+			<a class="tagLevel{$tag.level}" href=
+			{if isset($tag.U_ADD)}
+				"{$tag.U_ADD}" title="{$tag.counter|@translate_dec:'%d photo is also linked to current tags':'%d photos are also linked to current tags'}" rel="nofollow">+
+			{else}
+				"{$tag.URL}" title="{'display photos linked to this tag'|@translate}">
+			{/if}
+				{$tag.name}</a></span>{/strip}
+{* ABOVE there should be no space between text, </a> and </span> elements to avoid IE8 bug https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=366567 *}
+		{/foreach}
+	</div>
+</dd>
Index: /tags/2.6.0RC1/themes/default/template/month_calendar.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/month_calendar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/month_calendar.tpl	(revision 25596)
@@ -0,0 +1,81 @@
+{if !empty($chronology_navigation_bars) }
+{foreach from=$chronology_navigation_bars item=bar}
+<div class="calendarBar">
+	{if isset($bar.previous)}
+		<div style="float:left;margin-right:5px">&laquo; <a href="{$bar.previous.URL}">{$bar.previous.LABEL}</a></div>
+	{/if}
+	{if isset($bar.next)}
+		<div style="float:right;margin-left:5px"><a href="{$bar.next.URL}">{$bar.next.LABEL}</a> &raquo;</div>
+	{/if}
+	{if empty($bar.items)}
+		&nbsp;
+	{else}
+		{foreach from=$bar.items item=item}
+		{if !isset($item.URL)}
+		<span class="calItem">{$item.LABEL}</span>
+		{else}
+		<a class="calItem"{if isset($item.NB_IMAGES)} title="{$item.NB_IMAGES|@translate_dec:'%d photo':'%d photos'}"{/if} href="{$item.URL}">{$item.LABEL}</a>
+		{/if}
+		{/foreach}
+	{/if}
+</div>
+{/foreach}
+{/if}
+
+{if !empty($chronology_calendar.calendar_bars) }
+{foreach from=$chronology_calendar.calendar_bars item=bar}
+<div class="calendarCalBar">
+	<span class="calCalHead"><a href="{$bar.U_HEAD}">{$bar.HEAD_LABEL}</a>  ({$bar.NB_IMAGES})</span><br>
+	{foreach from=$bar.items item=item}
+	<span class="calCal{if !isset($item.URL)}Empty{/if}">
+	{if isset($item.URL)}
+	<a href="{$item.URL}">{$item.LABEL}</a>
+	{else}
+	{$item.LABEL}
+	{/if}
+	{if isset($item.NB_IMAGES)}({$item.NB_IMAGES}){/if}
+	</span>
+	{/foreach}
+</div>
+{/foreach}
+{/if}
+
+{if isset($chronology_calendar.month_view) }
+<table class="calMonth">
+ <thead>
+ <tr>
+ {foreach from=$chronology_calendar.month_view.wday_labels item=wday}
+	<th>{$wday}</th>
+ {/foreach}
+ </tr>
+ </thead>
+{html_style}
+TABLE.calMonth TBODY TD, TABLE.calMonth TBODY TD DIV.calImg{
+	width:{$chronology_calendar.month_view.CELL_WIDTH}px;height:{$chronology_calendar.month_view.CELL_HEIGHT}px
+}
+{/html_style}
+ {foreach from=$chronology_calendar.month_view.weeks item=week}
+ <tr>
+ 	{foreach from=$week item=day}
+ 	{if !empty($day)}
+ 		{if isset($day.IMAGE)}
+ 			<td class="calDayCellFull">
+	 			<div class="calBackDate">{$day.DAY}</div><div class="calForeDate">{$day.DAY}</div>
+	 			<div class="calImg">
+					<a href="{$day.U_IMG_LINK}">
+ 						<img style="{$day.IMAGE_STYLE}" src="{$day.IMAGE}" alt="{$day.IMAGE_ALT}" title="{$day.NB_ELEMENTS|@translate_dec:'%d photo':'%d photos'}">
+					</a>
+				</div>
+ 		{else}
+ 			<td class="calDayCellEmpty">{$day.DAY}
+ 		{/if}
+ 	{else}{*blank cell first or last row only*}
+ 		<td>
+ 	{/if}
+ 	</td>
+ 	{/foreach}{*day in week*}
+ </tr>
+ {/foreach}{*week in month*}
+</table>
+{/if}
+
Index: /tags/2.6.0RC1/themes/default/template/navigation_bar.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/navigation_bar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/navigation_bar.tpl	(revision 25596)
@@ -0,0 +1,28 @@
+<div class="navigationBar">
+  {if isset($navbar.URL_FIRST)}
+  <a href="{$navbar.URL_FIRST}" rel="first">{'First'|@translate}</a> |
+  <a href="{$navbar.URL_PREV}" rel="prev">{'Previous'|@translate}</a> |
+  {else}
+  {'First'|@translate} |
+  {'Previous'|@translate} |
+  {/if}
+
+  {assign var='prev_page' value=0}
+  {foreach from=$navbar.pages key=page item=url}
+    {if $page > $prev_page+1}...{/if}
+    {if $page == $navbar.CURRENT_PAGE}
+    <span class="pageNumberSelected">{$page}</span>
+    {else}
+    <a href="{$url}">{$page}</a>
+    {/if}
+    {assign var='prev_page' value=$page}
+  {/foreach}
+
+  {if isset($navbar.URL_NEXT)}
+  | <a href="{$navbar.URL_NEXT}" rel="next">{'Next'|@translate}</a>
+  | <a href="{$navbar.URL_LAST}" rel="last">{'Last'|@translate}</a>
+  {else}
+  | {'Next'|@translate}
+  | {'Last'|@translate}
+  {/if}
+</div>
Index: /tags/2.6.0RC1/themes/default/template/nbm.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/nbm.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/nbm.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content">
+	<div class="titrePage">
+		<ul class="categoryActions">
+		</ul>
+		<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Notification'|@translate}</h2>
+	</div>
+
+{include file='infos_errors.tpl'}
+
+</div>
Index: /tags/2.6.0RC1/themes/default/template/no_photo_yet.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/no_photo_yet.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/no_photo_yet.tpl	(revision 25596)
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="themes/default/theme.css">
+<title>Piwigo, {'Welcome'|@translate}</title>
+{literal}
+<style type="text/css">
+body {
+margin: 0;
+padding: 0;
+background-color:#f9f9f9;
+}
+
+P {text-align:center;}
+TD {color:#888; letter-spacing:1px;}
+
+#global {
+position:absolute;
+left: 50%;
+top: 50%;
+width: 700px;
+height: 400px;
+margin-top: -200px; /* height half */
+margin-left: -350px; /* width half */
+
+background-color: #f1f1f1;
+border:2px solid #dddddd;
+}
+
+#noPhotoWelcome {font-size:25px; color:#555;text-align:center; letter-spacing:1px; margin-top:30px;}
+.bigButton {}
+
+.bigButton {text-align:center; margin-top:120px;}
+
+.bigButton a {
+    background-color:#666;
+    padding:10px;
+    text-decoration:none;
+    margin:0px 5px 0px 5px;
+    -moz-border-radius:6px;
+    -webkit-border-radius:6px;
+    color:#fff;
+    font-size:25px;
+    letter-spacing:2px;
+    padding:20px;
+}
+
+.bigButton a:hover {
+    background-color:#ff7700;
+    outline:none;
+    color:#fff;
+    border:none;
+}
+
+#deactivate {
+    position:absolute;
+    bottom:10px;
+    text-align:center;
+    width:100%;
+
+    font-style:normal;
+    font-size:1.0em;
+}
+
+.submit {font-size:1.0em; letter-spacing:2px; font-weight:normal;}
+
+#deactivate A {
+    text-decoration:none;
+    border:none;
+    color:#f70;
+}
+
+#deactivate A:hover {
+  border-bottom:1px dotted #f70;
+}
+
+#quickconnect {
+    margin:0 auto;
+    margin-top:60px;
+    width:300px;
+    color:#555;
+    font-size:14px;
+    letter-spacing:1px;
+}
+
+#quickconnect input[type="text"], #quickconnect input[type="password"] {
+  width:300px;
+  color:#555;
+  font-size:20px;
+  margin-top:3px;
+  background-color:#ddd;
+  border:2px solid #ccc;
+  -moz-border-radius:5px;
+  padding:2px;
+
+}
+
+#quickconnect input[type="text"]:focus, #quickconnect input[type="password"]:focus {
+  background-color:#fff;
+  border:2px solid #ff7700;
+}
+
+#quickconnect input[type="submit"] {
+  font-size:14px;
+  font-weight:bold;
+  letter-spacing:2px;
+  border:none;
+  background-color:#666666;
+  color:#fff;
+  padding:5px;
+  -moz-border-radius:5px;
+}
+
+#quickconnect input[type="submit"]:hover {
+  background-color:#ff7700;
+  color:white;
+}
+</style>
+{/literal}
+
+</head>
+
+<body>
+<div id="global">
+
+{if $step == 1}
+<p id="noPhotoWelcome">{'Welcome to your Piwigo photo gallery!'|@translate}</p>
+
+<form method="post" action="{$U_LOGIN}" id="quickconnect">
+{'Username'|@translate}
+<br><input type="text" name="username">
+<br>
+<br>{'Password'|@translate}
+<br><input type="password" name="password">
+
+<p><input class="submit" type="submit" name="login" value="{'Login'|@translate}"></p>
+
+</form>
+<div id="deactivate"><a href="{$deactivate_url}">{'... or browse your empty gallery'|@translate}</a></div>
+
+
+{else}
+<p id="noPhotoWelcome">{$intro}</p>
+<div class="bigButton"><a href="{$next_step_url}">{'I want to add photos'|@translate}</a></div>
+<div id="deactivate"><a href="{$deactivate_url}">{'... or please deactivate this message, I will find my way by myself'|@translate}</a></div>
+{/if}
+
+
+</div>
+</body>
+
+</html>
+
Index: /tags/2.6.0RC1/themes/default/template/notification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/notification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/notification.tpl	(revision 25596)
@@ -0,0 +1,29 @@
+{html_head} 
+<link rel="alternate" type="application/rss+xml" title="{'Photos only RSS feed'|@translate}" href="{$U_FEED_IMAGE_ONLY}"> 
+<link rel="alternate" type="application/rss+xml" title="{'Complete RSS feed (photos, comments)'|@translate}" href="{$U_FEED}"> 
+{/html_head} 
+
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+  <div class="titrePage">
+    <ul class="categoryActions">
+    </ul>
+    <h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Notification'|@translate}</h2>
+  </div>
+  
+  {include file='infos_errors.tpl'}
+
+  <div class="notification">
+  <p>{'The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'|@translate}</p>
+
+  <dl>
+    <dt>
+      <a href="{$U_FEED_IMAGE_ONLY}">{'Photos only RSS feed'|@translate}</a><br><br>
+    </dt>
+    <dt>
+      <a href="{$U_FEED}">{'Complete RSS feed (photos, comments)'|@translate}</a>
+    </dt>
+  </dl>
+  </div>
+</div>
Index: /tags/2.6.0RC1/themes/default/template/password.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/password.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/password.tpl	(revision 25596)
@@ -0,0 +1,64 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+  <div class="titrePage">
+    <ul class="categoryActions">
+    </ul>
+
+    <h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{$title}</h2>
+  </div>
+
+{include file='infos_errors.tpl'}
+
+{if $action ne 'none'}
+<form id="lostPassword" action="{$form_action}?action={$action}{if isset($key)}&amp;key={$key}{/if}" method="post">
+<fieldset>
+	<legend>{'Forgot your password?'|translate}</legend>
+  <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+
+  {if $action eq 'lost'}
+  <div class="message">{'Please enter your username or email address.'|@translate} {'You will receive a link to create a new password via email.'|@translate}</div>
+
+  <p>
+    <label>
+      {'Username or email'|@translate}
+      <br>
+      <input type="text" id="username_or_email" name="username_or_email" size="40" maxlength="40"{if isset($username_or_email)} value="{$username_or_email}"{/if}>
+    </label>
+  </p>
+
+  <p class="bottomButtons"><input type="submit" name="submit" value="{'Change my password'|@translate}"></p>
+  {elseif $action eq 'reset'}
+
+  <div class="message">{'Hello'|@translate} <em>{$username}</em>. {'Enter your new password below.'|@translate}</div>
+
+  <p>
+    <label>
+      {'New password'|@translate}
+      <br>
+      <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+    </label>
+  </p>
+
+  <p>
+    <label>
+      {'Confirm Password'|@translate}
+      <br>
+      <input type="password" name="passwordConf" id="passwordConf" value="">
+    </label>
+  </p>
+</fieldset>
+  <p class="bottomButtons"><input type="submit" name="submit" value="{'Submit'|@translate}"></p>
+  {/if}
+
+</form>
+{/if} {* $action ne 'none' *}
+
+<script type="text/javascript">
+{if $action eq 'lost'}
+{literal}try{document.getElementById('username_or_email').focus();}catch(e){}{/literal}
+{elseif $action eq 'reset'}
+{literal}try{document.getElementById('use_new_pwd').focus();}catch(e){}{/literal}
+{/if}
+</script>
+
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/default/template/picture.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/picture.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/picture.tpl	(revision 25596)
@@ -0,0 +1,373 @@
+{combine_script id='core.switchbox' load='async' require='jquery' path='themes/default/js/switchbox.js'}
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content"{if isset($MENUBAR)} class="contentWithMenu"{/if}>
+
+{if isset($errors) or not empty($infos)}
+{include file='infos_errors.tpl'}
+{/if}
+
+{if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if}
+
+<div id="imageHeaderBar">
+	<div class="browsePath">
+		{$SECTION_TITLE}<span class="browsePathSeparator">{$LEVEL_SEPARATOR}</span><h2>{$current.TITLE}</h2>
+	</div>
+</div>
+
+<div id="imageToolBar">
+<div class="imageNumber">{$PHOTO}</div>
+{include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+
+<div class="actionButtons">
+{if isset($current.unique_derivatives) && count($current.unique_derivatives)>1}
+{footer_script require='jquery'}{literal}
+function changeImgSrc(url,typeSave,typeMap)
+{
+	var theImg = document.getElementById("theMainImage");
+	if (theImg)
+	{
+		theImg.removeAttribute("width");theImg.removeAttribute("height");
+		theImg.src = url;
+		theImg.useMap = "#map"+typeMap;
+	}
+	jQuery('#derivativeSwitchBox .switchCheck').css('visibility','hidden');
+	jQuery('#derivativeChecked'+typeMap).css('visibility','visible');
+	document.cookie = 'picture_deriv='+typeSave+';path={/literal}{$COOKIE_PATH}{literal}';
+}
+(SwitchBox=window.SwitchBox||[]).push("#derivativeSwitchLink", "#derivativeSwitchBox");
+{/literal}{/footer_script}
+{strip}<a id="derivativeSwitchLink" title="{'Photo sizes'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+  <span class="pwg-icon pwg-icon-sizes"></span><span class="pwg-button-text">{'Photo sizes'|@translate}</span>
+</a>
+<div id="derivativeSwitchBox" class="switchBox">
+  <div class="switchBoxTitle">{'Photo sizes'|@translate}</div>
+  {foreach from=$current.unique_derivatives item=derivative key=derivative_type}
+  <span class="switchCheck" id="derivativeChecked{$derivative->get_type()}"{if $derivative->get_type() ne $current.selected_derivative->get_type()} style="visibility:hidden"{/if}>&#x2714; </span>
+  <a href="javascript:changeImgSrc('{$derivative->get_url()|@escape:javascript}','{$derivative_type}','{$derivative->get_type()}')">
+    {$derivative->get_type()|@translate}<span class="derivativeSizeDetails"> ({$derivative->get_size_hr()})</span>
+  </a><br>
+  {/foreach}
+  {if isset($U_ORIGINAL)}
+    {combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+  <a href="javascript:phpWGOpenWindow('{$U_ORIGINAL}','xxx','scrollbars=yes,toolbar=no,status=no,resizable=yes')" rel="nofollow">{'Original'|@translate}</a>
+  {/if}
+</div>
+{/strip}
+{/if}
+{strip}{if isset($U_SLIDESHOW_START)}
+	<a href="{$U_SLIDESHOW_START}" title="{'slideshow'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-slideshow"></span><span class="pwg-button-text">{'slideshow'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($U_METADATA)}
+	<a href="{$U_METADATA}" title="{'Show file metadata'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-camera-info"></span><span class="pwg-button-text">{'Show file metadata'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($current.U_DOWNLOAD)}
+	<a href="{$current.U_DOWNLOAD}" title="{'Download this file'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-save"></span><span class="pwg-button-text">{'Download'|@translate}</span>
+	</a>
+{/if}{/strip}
+{if isset($PLUGIN_PICTURE_BUTTONS)}{foreach from=$PLUGIN_PICTURE_BUTTONS item=button}{$button}{/foreach}{/if}
+{if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if}
+{strip}{if isset($favorite)}
+	<a href="{$favorite.U_FAVORITE}" title="{if $favorite.IS_FAVORITE}{'delete this photo from your favorites'|@translate}{else}{'add this photo to your favorites'|@translate}{/if}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-favorite-{if $favorite.IS_FAVORITE}del{else}add{/if}"></span><span class="pwg-button-text">{'Favorites'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($U_SET_AS_REPRESENTATIVE)}
+	<a id="cmdSetRepresentative" href="{$U_SET_AS_REPRESENTATIVE}" title="{'set as album representative'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-representative"></span><span class="pwg-button-text">{'representative'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($U_PHOTO_ADMIN)}
+	<a id="cmdEditPhoto" href="{$U_PHOTO_ADMIN}" title="{'Modify information'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-edit"></span><span class="pwg-button-text">{'Edit'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($U_CADDIE)}{*caddie management BEGIN*}
+{footer_script}
+{literal}function addToCadie(aElement, rootUrl, id)
+{
+if (aElement.disabled) return;
+aElement.disabled=true;
+var y = new PwgWS(rootUrl);
+y.callService(
+	"pwg.caddie.add", {image_id: id} ,
+	{
+		onFailure: function(num, text) { alert(num + " " + text); document.location=aElement.href; },
+		onSuccess: function(result) { aElement.disabled = false; }
+	}
+	);
+}{/literal}
+{/footer_script}
+	<a href="{$U_CADDIE}" onclick="addToCadie(this, '{$ROOT_URL}', {$current.id}); return false;" title="{'Add to caddie'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+		<span class="pwg-icon pwg-icon-caddie-add"> </span><span class="pwg-button-text">{'Caddie'|@translate}</span>
+	</a>
+{/if}{/strip}{*caddie management END*}
+</div>
+</div>{*<!-- imageToolBar -->*}
+
+<div id="theImageAndInfos">
+<div id="theImage">
+{$ELEMENT_CONTENT}
+
+{if isset($COMMENT_IMG)}
+<p class="imageComment">{$COMMENT_IMG}</p>
+{/if}
+{if isset($U_SLIDESHOW_STOP)}
+<p>
+	[ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
+</p>
+{/if}
+
+</div>{*<!-- no significant white space for elegant-->
+*}<div id="infoSwitcher"></div>{*<!-- no significant white space for elegant-->
+*}<div id="imageInfos">
+{if $DISPLAY_NAV_THUMB}
+	<div class="navThumbs">
+		{if isset($previous)}
+			<a class="navThumb" id="linkPrev" href="{$previous.U_IMG}" title="{'Previous'|@translate} : {$previous.TITLE_ESC}" rel="prev">
+				<span class="thumbHover prevThumbHover"></span>
+				<img src="{$previous.derivatives.square->get_url()}" alt="{$previous.TITLE_ESC}">
+			</a>
+		{elseif isset($U_UP)}
+			<a class="navThumb" id="linkPrev" href="{$U_UP}" title="{'Thumbnails'|@translate}">
+				<div class="thumbHover">{'First Page'|@translate}<br><br>{'Go back to the album'|@translate}</div>
+			</a>
+		{/if}
+		{if isset($next)}
+			<a class="navThumb" id="linkNext" href="{$next.U_IMG}" title="{'Next'|@translate} : {$next.TITLE_ESC}" rel="next">
+				<span class="thumbHover nextThumbHover"></span>
+				<img src="{$next.derivatives.square->get_url()}" alt="{$next.TITLE_ESC}">
+			</a>
+		{elseif isset($U_UP)}
+			<a class="navThumb" id="linkNext"  href="{$U_UP}"  title="{'Thumbnails'|@translate}">
+				<div class="thumbHover">{'Last Page'|@translate}<br><br>{'Go back to the album'|@translate}</div>
+			</a>
+		{/if}
+	</div>
+{/if}
+
+<dl id="standard" class="imageInfoTable">
+{strip}
+	{if $display_info.author and isset($INFO_AUTHOR)}
+	<div id="Author" class="imageInfo">
+		<dt>{'Author'|@translate}</dt>
+		<dd>{$INFO_AUTHOR}</dd>
+	</div>
+	{/if}
+	{if $display_info.created_on and isset($INFO_CREATION_DATE)}
+	<div id="datecreate" class="imageInfo">
+		<dt>{'Created on'|@translate}</dt>
+		<dd>{$INFO_CREATION_DATE}</dd>
+	</div>
+	{/if}
+	{if $display_info.posted_on}
+	<div id="datepost" class="imageInfo">
+		<dt>{'Posted on'|@translate}</dt>
+		<dd>{$INFO_POSTED_DATE}</dd>
+	</div>
+	{/if}
+	{if $display_info.dimensions and isset($INFO_DIMENSIONS)}
+	<div id="Dimensions" class="imageInfo">
+		<dt>{'Dimensions'|@translate}</dt>
+		<dd>{$INFO_DIMENSIONS}</dd>
+	</div>
+	{/if}
+	{if $display_info.file}
+	<div id="File" class="imageInfo">
+		<dt>{'File'|@translate}</dt>
+		<dd>{$INFO_FILE}</dd>
+	</div>
+	{/if}
+	{if $display_info.filesize and isset($INFO_FILESIZE)}
+	<div id="Filesize" class="imageInfo">
+		<dt>{'Filesize'|@translate}</dt>
+		<dd>{$INFO_FILESIZE}</dd>
+	</div>
+	{/if}
+	{if $display_info.tags and isset($related_tags)}
+	<div id="Tags" class="imageInfo">
+		<dt>{'Tags'|@translate}</dt>
+		<dd>
+		{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}<a href="{$tag.URL}">{$tag.name}</a>{/foreach}
+		</dd>
+	</div>
+	{/if}
+	{if $display_info.categories and isset($related_categories)}
+	<div id="Categories" class="imageInfo">
+		<dt>{'Albums'|@translate}</dt>
+		<dd>
+			<ul>
+				{foreach from=$related_categories item=cat}
+				<li>{$cat}</li>
+				{/foreach}
+			</ul>
+		</dd>
+	</div>
+	{/if}
+	{if $display_info.visits}
+	<div id="Visits" class="imageInfo">
+		<dt>{'Visits'|@translate}</dt>
+		<dd>{$INFO_VISITS}</dd>
+	</div>
+	{/if}
+
+{if $display_info.rating_score and isset($rate_summary)}
+	<div id="Average" class="imageInfo">
+		<dt>{'Rating score'|@translate}</dt>
+		<dd>
+		{if $rate_summary.count}
+			<span id="ratingScore">{$rate_summary.score}</span> <span id="ratingCount">({$rate_summary.count|@translate_dec:'%d rate':'%d rates'})</span>
+		{else}
+			<span id="ratingScore">{'no rate'|@translate}</span> <span id="ratingCount"></span>
+		{/if}
+		</dd>
+	</div>
+{/if}
+
+{if isset($rating)}
+	<div id="rating" class="imageInfo">
+		<dt>
+			<span id="updateRate">{if isset($rating.USER_RATE)}{'Update your rating'|@translate}{else}{'Rate this photo'|@translate}{/if}</span>
+		</dt>
+		<dd>
+			<form action="{$rating.F_ACTION}" method="post" id="rateForm" style="margin:0;">
+			<div>
+			{foreach from=$rating.marks item=mark name=rate_loop}
+			{if isset($rating.USER_RATE) && $mark==$rating.USER_RATE}
+				<input type="button" name="rate" value="{$mark}" class="rateButtonSelected" title="{$mark}">
+			{else}
+				<input type="submit" name="rate" value="{$mark}" class="rateButton" title="{$mark}">
+			{/if}
+			{/foreach}
+			{strip}{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+			{combine_script id='rating' load='async' require='core.scripts' path='themes/default/js/rating.js'}
+			{footer_script}
+				var _pwgRatingAutoQueue = _pwgRatingAutoQueue||[];
+				_pwgRatingAutoQueue.push( {ldelim}rootUrl: '{$ROOT_URL}', image_id: {$current.id},
+					onSuccess : function(rating) {ldelim}
+						var e = document.getElementById("updateRate");
+						if (e) e.innerHTML = "{'Update your rating'|@translate|@escape:'javascript'}";
+						e = document.getElementById("ratingScore");
+						if (e) e.innerHTML = rating.score;
+						e = document.getElementById("ratingCount");
+						if (e) {ldelim}
+							if (rating.count == 1) {ldelim}
+								e.innerHTML = "({'%d rate'|@translate|@escape:'javascript'})".replace( "%d", rating.count);
+							} else {ldelim}
+								e.innerHTML = "({'%d rates'|@translate|@escape:'javascript'})".replace( "%d", rating.count);
+              }
+						{rdelim}
+					{rdelim}{rdelim} );
+			{/footer_script}
+			{/strip}
+			</div>
+			</form>
+		</dd>
+	</div>
+{/if}
+
+{if $display_info.privacy_level and isset($available_permission_levels)}
+	<div id="Privacy" class="imageInfo">
+		<dt>{'Who can see this photo?'|@translate}</dt>
+		<dd>
+			<div>
+				<a id="privacyLevelLink" href>{$available_permission_levels[$current.level]}</a>
+			</div>
+{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+{footer_script require='jquery'}{strip}
+function setPrivacyLevel(id, level){
+(new PwgWS('{$ROOT_URL}')).callService(
+	"pwg.images.setPrivacyLevel", { image_id:id, level:level},
+	{
+		method: "POST",
+		onFailure: function(num, text) { alert(num + " " + text); },
+		onSuccess: function(result) {
+			  jQuery('#privacyLevelBox .switchCheck').css('visibility','hidden');
+				jQuery('#switchLevel'+level).prev('.switchCheck').css('visibility','visible');
+				jQuery('#privacyLevelLink').text(jQuery('#switchLevel'+level).text());
+		}
+	}
+	);
+}
+(SwitchBox=window.SwitchBox||[]).push("#privacyLevelLink", "#privacyLevelBox");
+{/strip}{/footer_script}
+			<div id="privacyLevelBox" class="switchBox" style="display:none">
+				{foreach from=$available_permission_levels item=label key=level}
+					<span class="switchCheck"{if $level != $current.level} style="visibility:hidden"{/if}>&#x2714; </span>
+					<a id="switchLevel{$level}" href="javascript:setPrivacyLevel({$current.id},{$level})">{$label}</a><br>
+				{/foreach}
+			</div>
+		</dd>
+	</div>
+{/if}
+{/strip}
+</dl>
+
+{if isset($metadata)}
+<dl id="Metadata" class="imageInfoTable">
+{foreach from=$metadata item=meta}
+	<h3>{$meta.TITLE}</h3>
+	{foreach from=$meta.lines item=value key=label}
+		<div class="imageInfo">
+			<dt>{$label}</dt>
+			<dd>{$value}</dd>
+		</div>
+	{/foreach}
+{/foreach}
+</dl>
+{/if}
+</div>
+</div>
+
+{if isset($COMMENT_COUNT)}
+<div id="comments" {if (!isset($comment_add) && ($COMMENT_COUNT == 0))}class="noCommentContent"{else}class="commentContent"{/if}><div id="commentsSwitcher"></div>
+	<h3>{$COMMENT_COUNT|@translate_dec:'%d comment':'%d comments'}</h3>
+
+	<div id="pictureComments">
+		{if isset($comment_add)}
+		<div id="commentAdd">
+			<h4>{'Add a comment'|@translate}</h4>
+			<form method="post" action="{$comment_add.F_ACTION}" id="addComment">
+				{if $comment_add.SHOW_AUTHOR}
+					<p><label for="author">{'Author'|@translate}{if $comment_add.AUTHOR_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
+					<p><input type="text" name="author" id="author" value="{$comment_add.AUTHOR}"></p>
+				{/if}
+				{if $comment_add.SHOW_EMAIL}
+					<p><label for="email">{'Email address'|@translate}{if $comment_add.EMAIL_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
+					<p><input type="text" name="email" id="email" value="{$comment_add.EMAIL}"></p>
+				{/if}
+				<p><label for="website_url">{'Website'|@translate} :</label></p>
+				<p><input type="text" name="website_url" id="website_url" value="{$comment_add.WEBSITE_URL}"></p>
+				<p><label for="contentid">{'Comment'|@translate} ({'mandatory'|@translate}) :</label></p>
+				<p><textarea name="content" id="contentid" rows="5" cols="50">{$comment_add.CONTENT}</textarea></p>
+				<p><input type="hidden" name="key" value="{$comment_add.KEY}">
+					<input type="submit" value="{'Submit'|@translate}"></p>
+			</form>
+		</div>
+		{/if}
+		{if isset($comments)}
+		<div id="pictureCommentList">
+			{if (($COMMENT_COUNT > 2) || !empty($navbar))}
+				<div id="pictureCommentNavBar">
+					{if $COMMENT_COUNT > 2}
+						<a href="{$COMMENTS_ORDER_URL}#comments" rel="nofollow" class="commentsOrder">{$COMMENTS_ORDER_TITLE}</a>
+					{/if}
+					{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+				</div>
+			{/if}
+			{include file='comment_list.tpl'}
+		</div>
+		{/if}
+		<div style="clear:both"></div>
+	</div>
+
+</div>
+{/if}{*comments*}
+
+{if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if}
+
+</div>
Index: /tags/2.6.0RC1/themes/default/template/picture_content.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/picture_content.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/picture_content.tpl	(revision 25596)
@@ -0,0 +1,20 @@
+{if !$current.selected_derivative->is_cached()}
+{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
+{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{footer_script}var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png"{/footer_script}
+{/if}
+
+<img {if $current.selected_derivative->is_cached()}src="{$current.selected_derivative->get_url()}" {$current.selected_derivative->get_size_htm()}{else}src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif" data-src="{$current.selected_derivative->get_url()}"{/if} alt="{$ALT_IMG}" id="theMainImage" usemap="#map{$current.selected_derivative->get_type()}" title="{if isset($COMMENT_IMG)}{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{else}{$current.TITLE_ESC} - {$ALT_IMG}{/if}">
+
+{foreach from=$current.unique_derivatives item=derivative key=derivative_type}{strip}
+<map name="map{$derivative->get_type()}">
+{assign var='size' value=$derivative->get_size()}
+{if isset($previous)}
+<area shape=rect coords="0,0,{($size[0]/4)|@intval},{$size[1]}" href="{$previous.U_IMG}" title="{'Previous'|@translate} : {$previous.TITLE_ESC}" alt="{$previous.TITLE_ESC}">
+{/if}
+<area shape=rect coords="{($size[0]/4)|@intval},0,{($size[0]/1.34)|@intval},{($size[1]/4)|@intval}" href="{$U_UP}" title="{'Thumbnails'|@translate}" alt="{'Thumbnails'|@translate}">
+{if isset($next)}
+<area shape=rect coords="{($size[0]/1.33)|@intval},0,{$size[0]},{$size[1]}" href="{$next.U_IMG}" title="{'Next'|@translate} : {$next.TITLE_ESC}" alt="{$next.TITLE_ESC}">
+{/if}
+</map>
+{/strip}{/foreach}
Index: /tags/2.6.0RC1/themes/default/template/picture_nav_buttons.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/picture_nav_buttons.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/picture_nav_buttons.tpl	(revision 25596)
@@ -0,0 +1,121 @@
+<div class="navigationButtons">
+{if $DISPLAY_NAV_BUTTONS or isset($slideshow)}
+{if isset($slideshow)}
+{if isset($slideshow.U_INC_PERIOD)}
+	<a href="{$slideshow.U_INC_PERIOD}" title="{'Reduce diaporama speed'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-clock-minus"></span><span class="pwg-button-text">{'Reduce diaporama speed'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button">
+		<span class="pwg-icon pwg-icon-clock-minus"></span><span class="pwg-button-text">{'Reduce diaporama speed'|@translate}</span>
+	</span>
+{/if}
+{if isset($slideshow.U_DEC_PERIOD)}
+	<a href="{$slideshow.U_DEC_PERIOD}" title="{'Accelerate diaporama speed'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-clock-plus"></span><span class="pwg-button-text">{'Accelerate diaporama speed'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button">
+		<span class="pwg-icon pwg-icon-clock-plus"></span><span class="pwg-button-text">{'Accelerate diaporama speed'|@translate}</span>
+	</span>
+{/if}
+{/if}
+{if isset($slideshow.U_START_REPEAT)}
+	<a href="{$slideshow.U_START_REPEAT}" title="{'Repeat the slideshow'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-repeat-play"></span><span class="pwg-button-text">{'Repeat the slideshow'|@translate}</span>
+	</a>
+{/if}
+{if isset($slideshow.U_STOP_REPEAT)}
+	<a href="{$slideshow.U_STOP_REPEAT}" title="{'Not repeat the slideshow'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-repeat-stop"></span><span class="pwg-button-text">{'Not repeat the slideshow'|@translate}</span>
+	</a>
+{/if}
+{*<!--{strip}{if isset($first)}
+	<a href="{$first.U_IMG}" title="{'First'|@translate} : {$first.TITLE}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-arrowstop-w">&nbsp;</span><span class="pwg-button-text">{'First'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button">
+		<span class="pwg-icon pwg-icon-arrowstop-w">&nbsp;</span><span class="pwg-button-text">{'First'|@translate}</span>
+	</span>
+{/if}{/strip}-->*}
+{strip}{if isset($U_UP) and !isset($slideshow)}
+	<a href="{$U_UP}" title="{'Thumbnails'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-arrow-n"></span><span class="pwg-button-text">{'Thumbnails'|@translate}</span>
+	</a>
+{/if}{/strip}
+{strip}{if isset($previous)}
+	<a href="{$previous.U_IMG}" title="{'Previous'|@translate} : {$previous.TITLE_ESC}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-arrow-w"></span><span class="pwg-button-text">{'Previous'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button">
+		<span class="pwg-icon pwg-icon-arrow-w"></span><span class="pwg-button-text">{'Previous'|@translate}</span>
+	</span>
+{/if}{/strip}
+{if isset($slideshow.U_START_PLAY)}
+	<a href="{$slideshow.U_START_PLAY}" title="{'Play of slideshow'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-play"></span><span class="pwg-button-text">{'Play of slideshow'|@translate}</span>
+	</a>
+{/if}
+{if isset($slideshow.U_STOP_PLAY)}
+	<a href="{$slideshow.U_STOP_PLAY}" title="{'Pause of slideshow'|@translate}" class="pwg-state-default pwg-button">
+		<span class="pwg-icon pwg-icon-pause"></span><span class="pwg-button-text">{'Pause of slideshow'|@translate}</span>
+	</a>
+{/if}
+{strip}{if isset($next)}
+	<a href="{$next.U_IMG}" title="{'Next'|@translate} : {$next.TITLE_ESC}" class="pwg-state-default pwg-button pwg-button-icon-right">
+		<span class="pwg-icon pwg-icon-arrow-e"></span><span class="pwg-button-text">{'Next'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button pwg-button-icon-right">
+		<span class="pwg-icon pwg-icon-arrow-e"></span><span class="pwg-button-text">{'Next'|@translate}</span>
+	</span>
+{/if}{/strip}
+{*<!--{strip}{if isset($last)}
+	<a href="{$last.U_IMG}" title="{'Last'|@translate} : {$last.TITLE}" class="pwg-state-default pwg-button pwg-button-icon-right">
+		<span class="pwg-icon pwg-icon-arrowstop-e"></span><span class="pwg-button-text">{'Last'|@translate}</span>
+	</a>
+{else}
+	<span class="pwg-state-disabled pwg-button pwg-button-icon-right">
+		<span class="pwg-icon pwg-icon-arrowstop-e">&nbsp;</span><span class="pwg-button-text">{'Last'|@translate}</span>
+	</span>
+{/if}{/strip}-->*}
+{/if}
+</div>
+{strip}
+{footer_script}
+document.onkeydown = function(e){ldelim}
+	e=e||window.event;
+	if (e.altKey) return true;
+	var target=e.target||e.srcElement;
+	if (target && target.type) return true;{* an input editable element *}
+	var keyCode=e.keyCode||e.which, docElem=document.documentElement, url;
+	switch(keyCode){ldelim}
+{if isset($next)}
+	case 63235: case 39: if (e.ctrlKey || docElem.scrollLeft==docElem.scrollWidth-docElem.clientWidth)url="{$next.U_IMG}"; break;
+{/if}
+{if isset($previous)}
+	case 63234: case 37: if (e.ctrlKey || docElem.scrollLeft==0)url="{$previous.U_IMG}"; break;
+{/if}
+{if isset($first)}
+	{* Home *}case 36: if (e.ctrlKey)url="{$first.U_IMG}"; break;
+{/if}
+{if isset($last)}
+	{* End *}case 35: if (e.ctrlKey)url="{$last.U_IMG}"; break;
+{/if}
+{if isset($U_UP) and !isset($slideshow)}
+	{* Up *}case 38: if (e.ctrlKey)url="{$U_UP}"; break;
+{/if}
+{if isset($slideshow.U_START_PLAY)}
+	{* Pause *}case 32: url="{$slideshow.U_START_PLAY}"; break;
+{/if}
+{if isset($slideshow.U_STOP_PLAY)}
+	{* Play *}case 32: url="{$slideshow.U_STOP_PLAY}"; break;
+{/if}
+	}
+	if (url) {ldelim}window.location=url.replace("&amp;","&"); return false;}
+	return true;
+}
+{/footer_script}
+{/strip}
Index: /tags/2.6.0RC1/themes/default/template/popuphelp.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/popuphelp.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/popuphelp.tpl	(revision 25596)
@@ -0,0 +1,19 @@
+<div id="content" class="content">
+	<div class="titrePage">
+	<ul class="categoryActions">
+		<li><a href="#" onclick="window.close();" title="{'Close this window'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-close">&nbsp;</span><span class="pwg-button-text">exit</span>
+		</a></li>
+	</ul>
+	<h2>{$PAGE_TITLE}</h2>
+	</div>
+
+{$HELP_CONTENT}
+
+<p>
+    <a href="#" onclick="window.close();">{'Close this window'|@translate}</a>
+</p>
+
+</div> <!-- content -->
+
+
Index: /tags/2.6.0RC1/themes/default/template/profile.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/profile.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/profile.tpl	(revision 25596)
@@ -0,0 +1,13 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Profile'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+{$PROFILE_CONTENT}
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/default/template/profile_content.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/profile_content.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/profile_content.tpl	(revision 25596)
@@ -0,0 +1,96 @@
+<form method="post" name="profile" action="{$F_ACTION}" id="profile" class="properties">
+
+  <fieldset>
+    <legend>{'Registration'|@translate}</legend>
+    <input type="hidden" name="redirect" value="{$REDIRECT}">
+    <ul>
+      <li>
+        <span class="property">{'Username'|@translate}</span>
+        {$USERNAME}
+      </li>
+    {if not $SPECIAL_USER} {* can modify password + email*}
+      <li>
+        <span class="property">
+          <label for="mail_address">{'Email address'|@translate}</label>
+        </span>
+        <input type="text" name="mail_address" id="mail_address" value="{$EMAIL}">
+      </li>
+      <li>
+        <span class="property">
+          <label for="password">{'Password'|@translate}</label>
+        </span>
+        <input type="password" name="password" id="password" value="">
+      </li>
+      <li>
+        <span class="property">
+          <label for="use_new_pwd">{'New password'|@translate}</label>
+        </span>
+        <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+      </li>
+      <li>
+        <span class="property">
+          <label for="passwordConf">{'Confirm Password'|@translate}</label>
+        </span>
+        <input type="password" name="passwordConf" id="passwordConf" value="">
+      </li>
+    {/if}
+    </ul>
+  </fieldset>
+
+{if $ALLOW_USER_CUSTOMIZATION}
+  <fieldset>
+    <legend>{'Preferences'|@translate}</legend>
+
+    <ul>
+      <li>
+        <span class="property">
+          <label for="nb_image_page">{'Number of photos per page'|@translate}</label>
+        </span>
+        <input type="text" size="4" maxlength="3" name="nb_image_page" id="nb_image_page" value="{$NB_IMAGE_PAGE}">
+      </li>
+      <li>
+        <span class="property">
+          <label for="template">{'Theme'|@translate}</label>
+        </span>
+        {html_options name=theme options=$template_options selected=$template_selection}
+      </li>
+      <li>
+        <span class="property">
+          <label for="Language">{'Language'|@translate}</label>
+        </span>
+        {html_options name=language options=$language_options selected=$language_selection}
+      </li>
+      <li>
+        <span class="property">
+          <label for="Recent period">{'Recent period'|@translate}</label>
+        </span>
+        <input type="text" size="3" maxlength="2" name="recent_period" id="recent_period" value="{$RECENT_PERIOD}">
+      </li>
+      <li>
+        <span class="property">{'Expand all albums'|@translate}</span>
+        {html_radios name='expand' options=$radio_options selected=$EXPAND}
+      </li>
+    {if $ACTIVATE_COMMENTS}
+      <li>
+        <span class="property">{'Show number of comments'|@translate}</span>
+        {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS}
+      </li>
+    {/if}
+      <li>
+        <span class="property">{'Show number of hits'|@translate}</span>
+        {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS}
+      </li>
+    </ul>
+  </fieldset>
+{/if}
+
+  <p class="bottomButtons">
+    <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+    <input class="submit" type="submit" name="validate" value="{'Submit'|@translate}">
+    <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+    {if $ALLOW_USER_CUSTOMIZATION}
+    <input class="submit" type="submit" name="reset_to_default" value="{'Reset to default values'|@translate}">
+    {/if}
+  </p>
+
+</form>
Index: /tags/2.6.0RC1/themes/default/template/redirect.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/redirect.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/redirect.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+<div style="margin:2em;text-align:center;font-size:larger">
+	{$REDIRECT_MSG}
+</div>
+
+<p style="margin:2em;text-align:center">
+	<a href="{$page_refresh.U_REFRESH}">
+		{'Click here if your browser does not automatically forward you'|@translate}
+	</a>
+</p>
Index: /tags/2.6.0RC1/themes/default/template/register.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/register.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/register.tpl	(revision 25596)
@@ -0,0 +1,69 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="registerPage">
+
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Registration'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+<form method="post" action="{$F_ACTION}" class="properties" name="register_form">
+  <fieldset>
+    <legend>{'Enter your personnal informations'|@translate}</legend>
+
+    <ul>
+      <li>
+        <span class="property">
+          <label for="login">* {'Username'|@translate}</label>
+        </span>
+        <input type="text" name="login" id="login" value="{$F_LOGIN}" >
+      </li>
+      <li>
+        <span class="property">
+          <label for="password">* {'Password'|@translate}</label>
+        </span>
+        <input type="password" name="password" id="password" >
+      </li>
+      <li>
+        <span class="property">
+          <label for="password_conf">* {'Confirm Password'|@translate}</label>
+        </span>
+        <input type="password" name="password_conf" id="password_conf" >
+      </li>
+      <li>
+        <span class="property">
+          <label for="mail_address">{if $obligatory_user_mail_address}* {/if}{'Email address'|@translate}</label>
+        </span>
+        <input type="text" name="mail_address" id="mail_address" value="{$F_EMAIL}" >
+      {if not $obligatory_user_mail_address}
+        ({'useful when password forgotten'|@translate})
+      {/if}
+      </li>
+      <li>
+        <span class="property">
+          <label for="send_password_by_mail">{'Send my connection settings by email'|@translate}</label>
+        </span>
+        <input type="checkbox" name="send_password_by_mail" id="send_password_by_mail" value="1" checked="checked">
+      </li>
+    </ul>
+
+  </fieldset>
+
+  <p class="bottomButtons">
+		<input type="hidden" name="key" value="{$F_KEY}" >
+    <input class="submit" type="submit" name="submit" value="{'Register'|@translate}">
+    <input class="submit" type="reset" value="{'Reset'|@translate}">
+  </p>
+
+</form>
+
+<script type="text/javascript"><!--
+document.register_form.login.focus();
+//--></script>
+
+</div> <!-- content -->
+</div> <!-- registerPage -->
Index: /tags/2.6.0RC1/themes/default/template/search.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/search.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/search.tpl	(revision 25596)
@@ -0,0 +1,138 @@
+{* Example of resizeable *}
+{*
+{include file='include/resize.inc.tpl'}
+*}
+
+{* Example of datepicker *}
+{*
+{include file='include/datepicker.inc.tpl'}
+
+{footer_script}{literal}
+  pwg_initialization_datepicker("#start_day", "#start_month", "#start_year", "#start_linked_date", null, null, "#end_linked_date");
+  pwg_initialization_datepicker("#end_day", "#end_month", "#end_year", "#end_linked_date", null, "#start_linked_date", null);
+ jQuery().ready(function(){ $(".date_today").hide(); });
+{/literal}{/footer_script}
+*}
+
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+	<div class="titrePage">
+		<ul class="categoryActions">
+			{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
+			<li><a href="{$U_HELP}" onclick="popuphelp(this.href); return false;" title="{'Help'|@translate}" class="pwg-state-default pwg-button">
+				<span class="pwg-icon pwg-icon-help"></span><span class="pwg-button-text">{'Help'|@translate}</span>
+			</a></li>
+		</ul>
+		<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Search'|@translate}</h2>
+	</div>
+
+{include file='infos_errors.tpl'}
+
+<form class="filter" method="post" name="search" action="{$F_SEARCH_ACTION}">
+<fieldset>
+  <legend>{'Filter'|@translate}</legend>
+  <label>{'Search for words'|@translate}
+    <input type="text" name="search_allwords" size="35">
+  </label>
+  <ul>
+    <li><label>
+      <input type="radio" name="mode" value="AND" checked="checked">{'Search for all terms'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="mode" value="OR">{'Search for any term'|@translate}
+    </label></li>
+  </ul>
+  <label>{'Search for Author'|@translate}
+    <input type="text" name="search_author" size="35">
+  </label>
+</fieldset>
+
+{if isset($TAG_SELECTION)}
+<fieldset>
+  <legend>{'Search tags'|@translate}</legend>
+  {$TAG_SELECTION}
+  <label><span><input type="radio" name="tag_mode" value="AND" checked="checked"> {'All tags'|@translate}</span></label>
+  <label><span><input type="radio" name="tag_mode" value="OR"> {'Any tag'|@translate}</span></label>
+</fieldset>
+{/if}
+
+<fieldset>
+  <legend>{'Search by date'|@translate}</legend>
+  <ul>
+    <li><label>{'Kind of date'|@translate}</label></li>
+    <li><label>
+      <input type="radio" name="date_type" value="date_creation" checked="checked">{'Creation date'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="date_type" value="date_available">{'Post date'|@translate}
+    </label></li>
+  </ul>
+  <ul>
+    <li><label>{'Date'|@translate}</label></li>
+    <li>
+      <select id="start_day" name="start_day">
+          <option value="0">--</option>
+        {section name=day start=1 loop=32}
+          <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$START_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select id="start_month" name="start_month">
+        {html_options options=$month_list selected=$START_MONTH_SELECTED}
+      </select>
+      <input id="start_year" name="start_year" type="text" size="4" maxlength="4" >
+      <input id="start_linked_date" name="start_linked_date" type="hidden" size="10" disabled="disabled">
+    </li>
+    <li>
+      <a class="date_today" href="#" onClick="document.search.start_day.value={$smarty.now|date_format:"%d"};document.search.start_month.value={$smarty.now|date_format:"%m"};document.search.start_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+    </li>
+  </ul>
+  <ul>
+    <li><label>{'End-Date'|@translate}</label></li>
+    <li>
+      <select id="end_day" name="end_day">
+          <option value="0">--</option>
+        {section name=day start=1 loop=32}
+          <option value="{$smarty.section.day.index}" {if $smarty.section.day.index==$END_DAY_SELECTED}selected="selected"{/if}>{$smarty.section.day.index}</option>
+        {/section}
+      </select>
+      <select id="end_month" name="end_month">
+        {html_options options=$month_list selected=$END_MONTH_SELECTED}
+      </select>
+      <input id="end_year" name="end_year" type="text" size="4" maxlength="4" >
+      <input id="end_linked_date" name="end_linked_date" type="hidden" size="10" disabled="disabled">
+    </li>
+    <li>
+      <a class="date_today" href="#" onClick="document.search.end_day.value={$smarty.now|date_format:"%d"};document.search.end_month.value={$smarty.now|date_format:"%m"};document.search.end_year.value={$smarty.now|date_format:"%Y"};return false;">{'today'|@translate}</a>
+    </li>
+  </ul>
+</fieldset>
+
+<fieldset>
+  <legend>{'Search in albums'|@translate}</legend>
+  <label>{'Albums'|@translate}
+    <select class="categoryList" name="cat[]" multiple="multiple" size="15">
+      {html_options options=$category_options selected=$category_options_selected}
+    </select>
+  </label>
+  <ul>
+    <li><label>{'Search in sub-albums'|@translate}</label></li>
+    <li><label>
+      <input type="radio" name="subcats-included" value="1" checked="checked">{'Yes'|@translate}
+    </label></li>
+    <li><label>
+      <input type="radio" name="subcats-included" value="0">{'No'|@translate}
+    </label></li>
+  </ul>
+</fieldset>
+<p>
+  <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}">
+  <input class="submit" type="reset" value="{'Reset'|@translate}">
+</p>
+</form>
+
+<script type="text/javascript"><!--
+document.search.search_allwords.focus();
+//--></script>
+
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/default/template/search_rules.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/search_rules.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/search_rules.tpl	(revision 25596)
@@ -0,0 +1,61 @@
+<div id="content" class="content">
+	<div class="titrePage">
+	<ul class="categoryActions">
+		<li><a href="#" onclick="window.close();" title="{'Close this window'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-close">&nbsp;</span><span class="pwg-button-text">exit</span>
+		</a></li>
+	</ul>
+	<h2>{'Search rules'|@translate}</h2>
+	</div>
+
+{if isset($INTRODUCTION)}
+<p>{$INTRODUCTION}</p>
+{/if}
+
+<ul>
+
+  {if isset($search_words)}
+  {foreach from=$search_words item=v}
+  <li>{$v}</li>
+  {/foreach}
+  {/if}
+
+  {if isset($SEARCH_TAGS_MODE) }
+  <li>
+    <p>{if 'AND'==$SEARCH_TAGS_MODE}{'All tags'|@translate}{else}{'Any tag'|@translate}{/if}</p>
+    <ul>
+      {foreach from=$search_tags item=v}
+      <li>{$v}</li>
+      {/foreach}
+    </ul>
+  </li>
+  {/if}
+  
+  {if isset($DATE_CREATION)}
+  <li>{$DATE_CREATION}</li>
+  {/if}
+
+  {if isset($DATE_AVAILABLE)}
+  <li>{$DATE_AVAILABLE}</li>
+  {/if}
+
+  {if isset($search_categories)}
+  <li>
+    <p>{'Albums'|@translate}</p>
+
+    <ul>
+      {foreach from=$search_categories item=v}
+      <li>{$v}</li>
+      {/foreach}
+    </ul>
+  </li>
+  {/if}
+  
+</ul>
+
+<p>
+    <a href="#" onclick="window.close();">{'Close this window'|@translate}</a>
+</p>
+
+</div> <!-- content -->
+
Index: /tags/2.6.0RC1/themes/default/template/slideshow.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/slideshow.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/slideshow.tpl	(revision 25596)
@@ -0,0 +1,24 @@
+<div id="slideshow">
+	<div id="imageHeaderBar">
+	  <div class="browsePath">
+		{if isset($U_SLIDESHOW_STOP) }
+		[ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
+		{/if}
+			<h2 class="showtitle">{$current.TITLE}</h2>
+	  </div>
+	</div>
+
+	<div id="imageToolBar">
+	  <div class="imageNumber">{$PHOTO}</div>
+	  {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+	</div>
+
+	<div id="content">
+	<div id="theImage">
+	  {$ELEMENT_CONTENT}
+	  {if isset($COMMENT_IMG)}
+	  <p class="showlegend">{$COMMENT_IMG}</p>
+	  {/if}
+	</div>
+	</div>
+<div>
Index: /tags/2.6.0RC1/themes/default/template/tags.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/tags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/tags.tpl	(revision 25596)
@@ -0,0 +1,57 @@
+{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+{if $display_mode == 'letters'}
+		<li><a href="{$U_CLOUD}" title="{'show tag cloud'|@translate}" class="pwg-state-default pwg-button">
+			<span class="pwg-icon pwg-icon-cloud"></span><span class="pwg-button-text">{'cloud'|@translate}</span>
+		</a></li>
+{/if}
+{if $display_mode == 'cloud'}
+		<li><a href="{$U_LETTERS}" title="{'group by letters'|@translate}" class="pwg-state-default pwg-button" rel="nofollow">
+			<span class="pwg-icon pwg-icon-letters"></span><span class="pwg-button-text">{'letters'|@translate}</span>
+		</a></li>
+{/if}
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'Tags'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+
+{if $display_mode == 'cloud' and isset($tags)}
+<div id="fullTagCloud">
+	{foreach from=$tags item=tag}
+	<span><a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{$tag.counter|@translate_dec:'%d photo':'%d photos'}">{$tag.name}</a></span>
+	{/foreach}
+</div>
+{/if}
+
+{if $display_mode == 'letters' and isset($letters)}
+<table>
+	<tr>
+		<td valign="top">
+	{foreach from=$letters item=letter}
+<fieldset class="tagLetter">
+	<legend class="tagLetterLegend">{$letter.TITLE}</legend>
+	<table class="tagLetterContent">
+		{foreach from=$letter.tags item=tag}
+		<tr class="tagLine">
+			<td><a href="{$tag.URL}" title="{$tag.name}">{$tag.name}</a></td>
+			<td class="nbEntries">{$tag.counter|@translate_dec:'%d photo':'%d photos'}</td>
+		</tr>
+		{/foreach}
+	</table>
+</fieldset>
+		{if isset($letter.CHANGE_COLUMN) }
+		</td>
+		<td valign="top">
+		{/if}
+	{/foreach}
+		</td>
+	</tr>
+</table>
+{/if}
+
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/default/template/thumbnails.tpl
===================================================================
--- /tags/2.6.0RC1/themes/default/template/thumbnails.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/template/thumbnails.tpl	(revision 25596)
@@ -0,0 +1,64 @@
+{if !empty($thumbnails)}{strip}
+{*define_derivative name='derivative_params' width=160 height=90 crop=true*}
+{html_style}
+{*Set some sizes according to maximum thumbnail width and height*}
+.thumbnails SPAN,
+.thumbnails .wrap2 A,
+.thumbnails LABEL{ldelim}
+	width: {$derivative_params->max_width()+2}px;
+}
+
+.thumbnails .wrap2{ldelim}
+	height: {$derivative_params->max_height()+3}px;
+}
+{if $derivative_params->max_width() > 600}
+.thumbLegend {ldelim}font-size: 130%}
+{else}
+{if $derivative_params->max_width() > 400}
+.thumbLegend {ldelim}font-size: 110%}
+{else}
+.thumbLegend {ldelim}font-size: 90%}
+{/if}
+{/if}
+{/html_style}
+{footer_script}
+  var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png", max_requests = {$maxRequests};
+{/footer_script}
+{foreach from=$thumbnails item=thumbnail}
+{assign var=derivative value=$pwg->derivative($derivative_params, $thumbnail.src_image)}
+{if !$derivative->is_cached()}
+{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
+{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{/if}
+<li>
+	<span class="wrap1">
+		<span class="wrap2">
+		<a href="{$thumbnail.URL}">
+			<img class="thumbnail" {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}">
+		</a>
+		</span>
+		{if $SHOW_THUMBNAIL_CAPTION }
+		<span class="thumbLegend">
+		<span class="thumbName">{$thumbnail.NAME}</span>
+		{if !empty($thumbnail.icon_ts)}
+		<img title="{$thumbnail.icon_ts.TITLE}" src="{$ROOT_URL}{$themeconf.icon_dir}/recent.png" alt="(!)">
+		{/if}
+		{if isset($thumbnail.NB_COMMENTS)}
+		<span class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
+		<br>
+		{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
+		</span>
+		{/if}
+
+		{if isset($thumbnail.NB_HITS)}
+		<span class="{if 0==$thumbnail.NB_HITS}zero {/if}nb-hits">
+		<br>
+		{$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)}
+		</span>
+		{/if}
+		</span>
+		{/if}
+	</span>
+	</li>
+{/foreach}{/strip}
+{/if}
Index: /tags/2.6.0RC1/themes/default/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/default/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/theme.css	(revision 25596)
@@ -0,0 +1,795 @@
+@import "iconset.css";
+/**
+ * Menubar
+ */
+#menubar {
+	float: left;
+	margin: 0 0 10px 1em;
+	padding: 0;
+	display: inline;
+	width: 18em;
+}
+
+#menubar DL, #menubar DT, #menubar DD {
+	margin: 0; padding: 0; display: block;
+}
+
+.menubarFilter {
+	float: right;
+	margin: -4px 0 0;
+}
+
+/* H2 properties copied here */
+#menubar DT {
+	font-weight: bold;
+	padding: 5px;
+	font-size: 120%;
+	text-align: center;
+}
+
+#menubar UL,
+#menubar FORM,
+#menubar P {
+	font-size: 92%;
+	margin: 10px 0 10px 5px;
+}
+#menubar UL {
+	list-style-type: square;
+	list-style-position: inside;
+	padding: 0 0 0 2px;
+}
+#menubar UL UL {
+	font-size: 100%;
+	margin-top: 0;
+	margin-bottom: 0;
+}
+
+/*IE6 needs override because of > selector*/
+#menubar LI.selected>A {
+	font-weight: bold;
+}
+
+#menubar .menuInfoCatByChild {
+	font-size: 80%;
+	font-style: italic;
+}
+
+#mbCategories IMG {
+	vertical-align: bottom; /*otherwise line height changes*/
+}
+
+#menubar INPUT {
+	text-indent: 2px;
+}
+
+/* quickconnect form */
+
+#quickconnect FIELDSET {
+	margin: 0 5px 0 0;
+	padding: 0; /*IE6 requires padding 0*/
+}
+
+#quickconnect DIV {
+	margin: 8px 5px;
+	padding: 0;
+}
+
+#menuTagCloud {
+	text-align: center;
+	margin: 5px 0;
+}
+
+#menuTagCloud SPAN {
+	white-space: nowrap;
+	margin-right: 5px;
+}
+
+/**
+ * Content
+ */
+.contentWithMenu {
+	margin-left: 20em;  /* = #menubar width + 2em */
+}
+
+.content .navigationBar, .content .additional_info, .content .calendarBar {
+	margin: 8px 4px;
+	text-align: center;
+}
+
+.content .pageNumberSelected {
+	font-style: italic;
+	font-weight: bold;
+}
+
+.content .additional_info {
+	font-size: 110%;
+}
+
+.content .titrePage {
+	padding: 0 0 3px;
+}
+
+.content .notification {
+  padding:0 25px;
+}
+
+/* category and tag results paragraphs on a quick search */
+.category_search_results, .tag_search_results {
+  font-size: 16px;
+  margin: 10px 16px;
+}
+
+/* actions */
+.categoryActions {
+	margin: 0 2px;
+	width: auto;
+	padding: 0;
+	text-indent: 0;
+	list-style: none;
+	text-align: center;
+	float: right;
+}
+
+.categoryActions LI {
+	display: inline;
+}
+
+/* begin chronology/calendar elements*/
+.calendarViews {
+	float: right;
+	margin: 5px 5px 0 0;
+}
+
+.calItem {
+	font-weight: bold;
+	margin: 0 1px;
+	padding: 0 1px;
+	border: 1px solid gray;
+}
+
+.calendarCalBar {
+	margin: 10px;
+}
+
+.calCalHead {
+	font-weight: bold;
+	font-size: 110%;
+	margin: 0 2px;
+}
+
+.calCal { margin: 0 2px; }
+
+/* nice looking month calendar*/
+TABLE.calMonth {
+	border: 0;
+	border-collapse: collapse;
+	margin-bottom: 10px;	/*<-IE ignores this */
+}
+
+TD.calDayCellFull, TD.calDayCellEmpty {
+	vertical-align: top;
+	font-weight: bold;
+	font-size: 18px;
+	border: 1px solid gray;
+}
+
+.calImg {
+	overflow: hidden;
+	vertical-align: bottom;
+	z-index: 1;
+	position: relative; /*<- this required by IE*/
+}
+
+.calImg IMG {
+	position: relative;
+	border: 0;
+}
+
+.calBackDate {
+	padding-left: 4px;
+	padding-top: 0;
+	z-index: 2;
+	position: absolute;
+	vertical-align: top;
+	color: #000;
+}
+
+.calForeDate {
+	padding-left: 5px;
+	padding-top: 1px;
+	z-index: 3;
+	position: absolute;
+	vertical-align: top;
+	color: #fff;
+}
+
+/* Category thumbnails on main page, CSS code inspired from MOD subcatify */
+.thumbnailCategories {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	overflow: hidden;
+	width: 100%;
+}
+
+.thumbnailCategories LI {
+	margin: 0;
+	padding: 0;
+	float: left;
+	width: 49.7%;    /* 49.7% for 2 per line, 33.2% for 3 per line*/
+}
+
+.thumbnailCategory {
+	display:block;
+	padding: 2px 0 0 2px;
+	margin: 5px;
+}
+
+.thumbnailCategory .description {
+	font-size: 90%;
+	overflow: auto;
+	/*width: inherit;*/
+}
+
+.thumbnailCategory .description H3 {
+	text-align: left;
+	margin: 0;
+	padding: 0.1em;
+	font-size: 120%;
+}
+
+.thumbnailCategory .description P {
+	margin: 0;
+}
+
+.illustration {/*also used by comment lists*/
+	text-align: left;
+	margin: 2px 0 0 2px;
+	float: left;
+}
+
+/* Loader gif new in 2.5 */
+.loader {
+  display: none;
+  position: fixed;
+  right: 0;
+  bottom: 0;
+}
+
+/* User comments */
+#comments {
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.commentsList {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	overflow: hidden;
+	width: 100%;
+}
+
+.commentElement {
+	border-radius: 5px;
+	margin: 5px;
+	padding: 2px 0 0 2px;
+	float: left;
+	width:99%;
+}
+
+.commentElement .description {
+	overflow: auto;
+	/*width: inherit;*/
+}
+
+/* Thumbnails */
+
+/* Thumbnail "elastic" layout */
+.thumbnails {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	text-align: center;	/* to center the whole collection in .content */
+}
+.thumbnails LI { display: inline }
+
+.thumbnails .wrap1 {
+	margin: 0 7px 5px 7px;
+	display: table-cell; display: inline-table;
+	display: inline-block;/* Why 3 display option ??? */
+	vertical-align: top;	/* OK with Opera and IE6 not Geko */
+	text-align: center;		/* to center the thumbnail and legend in Geko/Opera */
+}
+.thumbnails .wrap2 {
+	margin: 0;			/* important reset the margins */
+	display: table-cell;/* block prevents vertical-align here */
+	vertical-align: middle;/* Ok with Opera and Geko not IE6 */
+	border-radius: 4px;	/* round corners with CSS3 compliant browsers */
+}
+
+.thumbnails .wrap2 A {
+	display: block;
+	border-bottom: 0;
+}
+.thumbnails IMG {
+	vertical-align: middle;
+}
+
+.thumbnails SPAN.thumbLegend {
+	overflow: hidden;/* oversized legend is clipped */
+	display: block;  /* display: none; if you don't want legend */
+	height: 4em;    /* legend height (don't set auto to be Gecko friendly)*/
+}
+
+/**
+ * Picture
+ */
+#imageHeaderBar {
+	padding-top: 2px;
+	padding-bottom: 2px;
+	overflow: hidden;
+	width: 100%;
+}
+
+#imageHeaderBar .browsePath {
+	float: left;
+	margin-left: 10px;
+}
+
+#imageToolBar .imageNumber {
+	float: right;
+	margin:-20px 9px 0 0;
+}
+
+#imageHeaderBar H2 {
+	display: inline;
+	text-align: center;
+	padding: 0;
+}
+
+#imageToolBar {
+	text-align: center;
+	margin-bottom: 2px;
+	padding: 0;
+	height: 28px;
+}
+
+#imageToolBar .actionButtons { float: left; }
+#imageToolBar .navigationButtons   { float: right; }
+#imageToolBar .pwg-button {width:42px;}
+
+.switchBox {
+	padding: 0.5em 5px;
+	border-radius: 4px;
+	z-index: 100;
+	text-align:left;
+	display: none;
+	position: absolute;
+	left: 0; top: 0; /*left, right set through js*/
+}
+
+.switchBoxTitle {
+  border-bottom:1px solid #ccc;
+  padding-bottom:5px;
+  margin-bottom:5px;
+}
+
+#theImage {
+	text-align: center;
+}
+
+#imageInfos {
+	position: relative; /*for IE7 positioning of "who can see this photo"*/
+	min-height: 120px;
+}
+
+#linkPrev {
+	float: left;
+	margin: 5px 10px 0 5px;
+}
+
+#linkNext {
+	float: right;
+	margin: 5px 5px 0 10px;
+  text-align: right;
+}
+
+
+DIV.thumbHover{ /*only first & last holders are divs*/
+  width: 108px;
+	height: 118px;
+	border: 1px solid gray;
+	padding: 0 5px;
+  line-height: 1.2;
+}
+
+.imageInfoTable UL { /*this is the album list*/
+	margin: 0;
+	padding: 0 0 0 1em;
+	list-style-type: square;
+}
+
+.rateButton, .rateButtonSelected, .rateButtonStarFull, .rateButtonStarEmpty  {
+	padding:0;
+	border:0;
+	color:inherit;
+	background-color:transparent !important;	/* Konqueror doesn't accept transparent here */
+}
+
+.rateButton, .rateButtonStarFull, .rateButtonStarEmpty {
+	cursor: pointer;
+}
+
+.rateButtonSelected {
+	font-weight:bold;
+	font-size:120%;
+}
+
+.rateButtonStarFull {
+	background: url('icon/rating-stars.gif') no-repeat -16px center; width:16px;
+}
+
+.rateButtonStarEmpty {
+	background: url('icon/rating-stars.gif') no-repeat 0 center; width:16px;
+}
+
+/**
+ * Default Layout
+ */
+BODY {
+	margin: 5px;
+	padding: 0;
+	font-size: 0.8em;
+	font-family: Arial,Helvetica,sans-serif;
+	min-width: 60em;  /* ~ 3* #menubar width; width of the page before getting a scrollbar; IE6 doesn't get that*/
+}
+
+IMG {
+	border: 0; /*IE<=9 adds border for linked images*/
+}
+
+#thePopuphelpPage {
+	min-width: 0; /*reset the min width*/
+}
+
+
+H1 {
+	text-align: center;
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 0.5em 0 1em 0;
+}
+
+H2 {
+	margin: 0;
+	padding: 5px 0.5em;
+	text-align: left;
+	font-size: 120%;
+}
+
+A {
+	text-decoration:none;
+}
+A:hover {
+	border-bottom: 1px solid #858460;
+}
+A.pwg-state-default:hover {
+	border-bottom: 0; /*reset above for icons*/
+}
+
+#copyright {
+	clear: both;
+	font-size: 83%;
+	text-align: center;
+	margin: 0 0 10px 0;
+}
+
+INPUT, SELECT {
+	margin: 0;
+	font-size: 1em;	/* <= some browsers don't set it correctly */
+}
+
+TABLE {	/* horizontaly centered */
+	margin-left: auto;
+	margin-right: auto;
+}
+
+
+FORM { padding: 0; margin: 0; }
+
+FORM P {
+	text-align: center;
+	margin-top: 2em;
+	margin-bottom: 2em;
+}
+
+SELECT.categoryList {
+	height: 20em;
+	width: 500px;
+}
+
+
+/**
+ * Filter forms are displayed label by label with the input (or select...)
+ * below the label. Use an UL to make a group (radiobox for instance).
+ * Use a SPAN to group objects in line
+ */
+FIELDSET {
+	padding: 1em;
+	margin: 1em;
+	overflow: hidden; /* <- makes Opera happy */
+}
+
+.filter UL,
+.filter LABEL {
+	display: block;
+	float: left;
+	margin-right: 1em;
+	padding: 0;
+}
+
+.filter LI {
+	list-style: none;
+	margin-bottom: 0.5em;
+}
+
+.filter LI LABEL {
+	display: inline;
+	float: none;
+}
+
+/*IE6 needs override because of > selector*/
+.filter LABEL>INPUT,
+.filter LABEL>SELECT {
+	display: block;
+	margin: 0.5em 0;
+}
+
+.filter FIELDSET * LABEL>INPUT {
+	display: inline;
+	vertical-align: top;
+	margin: 0 0.5em 0 0;
+}
+
+
+.properties UL {
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+
+.properties LI {
+	margin-bottom: 0.5em;
+	padding: 0;
+	line-height: 1.8em;
+	clear: left;
+}
+
+.properties SPAN.property {
+	font-weight: bold;
+	float: left;
+	width: 50%;
+	text-align: right;
+	margin: 0;
+	padding: 0 0.5em 0 0;
+}
+
+.tagSelection {
+	margin: 1em 0 !important;
+}
+
+.tagSelection LI {
+	display:inline-block;
+	width: 150px;
+	overflow:hidden;
+	white-space: nowrap;
+}
+
+#fullTagCloud {
+	font-size: 120%;
+	text-align: justify;
+	padding: 0;
+	margin: 1em;
+}
+
+#fullTagCloud SPAN {
+	white-space: nowrap;
+	margin: 0 2px;
+}
+
+
+.tagLevel5 { font-size: 150% !important; }
+.tagLevel4 { font-size: 140% !important; }
+.tagLevel3 { font-size: 120% !important; }
+.tagLevel2 { font-size: 100% !important; }
+.tagLevel1 { font-size: 90%  !important; }
+
+
+/* Popup help page */
+#thePopuphelpPage #copyright {
+	display: none;
+}
+
+#thePopuphelpPage P {
+	padding: 0.5em;
+}
+
+#thePopuphelpPage DL  {
+	margin: 0 25px 25px; 
+}
+
+TR.tagLine {
+	border-bottom: 1px solid #ddd;
+}
+TD.nbEntries {
+	text-align: right;
+	font-style: italic;
+	font-size: 90%;
+}
+
+FIELDSET.tagLetter {
+	border: 1px solid #d3d3d3;
+	width: 200px;
+	margin: 0.5em;
+	padding: 10px;
+}
+
+LEGEND.tagLetterLegend {
+	border: 1px solid #d3d3d3;
+	font-size:120%;
+	font-weight: bold;
+	padding: 0 5px;
+	font-style: normal;
+}
+
+TABLE.tagLetterContent {
+	width:100%;
+	font-size:80%;
+	border-collapse : collapse;
+}
+
+#theHeader {text-align: center;}
+
+/* jQuery datepicker */
+IMG.ui-datepicker-trigger {
+	cursor : pointer;
+}
+
+
+/**
+ * Default colors
+ */
+
+ /* So that non-links are slightly greyed out */
+.content .navigationBar, SPAN.calItem, TD.calDayCellEmpty {
+	color: #b0b0b0;
+}
+
+/* Tables & forms */
+/* IE <= 6 is so bad with this that you can't merge with the following rule */
+INPUT[type="text"], INPUT[type="password"], INPUT[type="button"],
+INPUT[type="submit"], INPUT[type="reset"], INPUT[type="file"] {
+	color: #000;
+	background-color: #d3d3d3;	/* lightgrey */
+}
+
+SELECT, TEXTAREA {
+	color: #000;
+	background-color: #d3d3d3;	/* lightgrey */
+}
+
+INPUT:focus, SELECT:focus, TEXTAREA:focus {
+	background-color: #f5f5f5;	/* whitesmoke */
+}
+
+/* some theme set a border on INPUT  which is not pretty for radio/checkbox */
+INPUT[type="radio"], INPUT[type="checkbox"] {
+	border: none;	/* <= Opera needs this */
+}
+
+
+.content.messages {
+  padding:0;
+  background:none;
+  border:none;
+}
+
+.errors { /* Errors display */
+	color: red;
+	font-weight: bold;
+	margin: 5px;
+	border: 1px solid red;
+	background: #ffe1e1 url(icon/errors.png) no-repeat center right;
+	padding: 10px 50px 10px 10px;
+}
+
+/* Informations box */
+.infos {
+	color: #002000;
+	background: #98fb98 url(icon/infos.png) no-repeat center right;
+	margin: 5px;
+	padding: 10px 50px 10px 10px;
+}
+
+/* Header message like upgrade*/
+.header_msgs {
+	text-align:center;
+	font-weight: bold;
+	color:#696969;	/* dimgray */
+	background-color: #d3d3d3;
+	margin: 1px;
+	padding: 1px;
+}
+
+/* Header notes box */
+.header_notes {
+	border: 1px solid #aaa;
+	text-align: center;
+	background-image: url(icon/note.png);
+	background-repeat: no-repeat;
+	background-position: top left;
+	font-weight: bold;
+	margin: 14px;
+	padding: 5px 0 0 0;
+}
+
+LEGEND {
+	font-style: italic;
+	color: inherit; /*for IE*/
+}
+
+#piwigoAbout {width:600px;margin:0 auto;}
+#linkToPiwigo {text-align:center;}
+
+.message {
+  background-color: lightyellow;
+  color:#333;
+  margin-bottom:1em;
+  padding: 12px;
+  -moz-border-radius: 3px;
+  -khtml-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border-radius: 3px;
+}
+
+#lostPassword p {
+  text-align: left;
+  margin: 1.5em 0;
+  line-height: 1.5em;
+}
+
+/* image comments rules */
+
+#commentAdd, #pictureCommentList 	{ width: 48%; padding: 0 1%;}
+#commentAdd  						{ float: left; }
+#pictureCommentList 					{ float: right; }
+
+#commentAdd input[type="text"],
+#comments TEXTAREA {
+	max-width: 99%;
+	width: 99%;
+}
+
+.commentAuthor {
+	font-weight: bold;
+}
+
+.commentDate {
+	font-style: italic
+}
+
+#pictureCommentList .commentsOrder	{ float: left; margin-bottom: 5px;}
+#pictureCommentList .navigationBar	{ float: right; margin-bottom: 5px;}
+#pictureComments h4					{ margin: 0;}
+#comments FORM P	 {
+	margin: 5px 0; text-align: left;
+}
+
+/* image info table */
+
+.imageInfoTable {display:table; margin: auto;}
+.imageInfo {display:table-row; line-height:20px;}
+.imageInfo dt {display:table-cell; text-align:right; font-weight:bold; padding-right:0.5em;}
+.imageInfo dd {display:table-cell; text-align:left; font-weight:normal;}
Index: /tags/2.6.0RC1/themes/default/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/default/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/default/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,9 @@
+<?php
+$themeconf = array(
+  'name'         => 'default',
+  'icon_dir'      => 'themes/default/icon',
+  'img_dir'      => 'themes/default/images',
+  'mime_icon_dir' => 'themes/default/icon/mimetypes/',
+  'local_head'    => 'local_head.tpl',
+);
+?>
Index: /tags/2.6.0RC1/themes/elegant/admin/admin.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/admin/admin.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/admin/admin.inc.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+
+// Need upgrade?
+global $conf;
+include(PHPWG_THEMES_PATH.'elegant/admin/upgrade.inc.php');
+
+load_language('theme.lang', PHPWG_THEMES_PATH.'elegant/');
+
+$config_send= array();
+
+if(isset($_POST['submit_elegant']))
+{
+  $config_send['p_main_menu']=(isset($_POST['p_main_menu']) and !empty($_POST['p_main_menu'])) ? $_POST['p_main_menu'] : 'on';
+  $config_send['p_pict_descr']=(isset($_POST['p_pict_descr']) and !empty($_POST['p_pict_descr'])) ? $_POST['p_pict_descr'] : 'on';
+  $config_send['p_pict_comment']=(isset($_POST['p_pict_comment']) and !empty($_POST['p_pict_comment'])) ? $_POST['p_pict_comment'] : 'off';
+  
+  $conf['elegant'] = serialize($config_send);
+  conf_update_param('elegant', pwg_db_real_escape_string($conf['elegant']));
+
+  array_push($page['infos'], l10n('Information data registered in database'));
+}
+
+$template->set_filenames(array(
+    'theme_admin_content' => dirname(__FILE__) . '/admin.tpl'));
+
+$template->assign('options', unserialize($conf['elegant']));
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'theme_admin_content');
+  
+?>
Index: /tags/2.6.0RC1/themes/elegant/admin/admin.tpl
===================================================================
--- /tags/2.6.0RC1/themes/elegant/admin/admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/admin/admin.tpl	(revision 25596)
@@ -0,0 +1,44 @@
+{combine_css path="themes/default/js/ui/theme/jquery.ui.button.css"}
+{combine_css path="themes/elegant/admin/jquery.ui.button.css"}
+{footer_script require='jquery.ui.button'}
+{literal}
+jQuery(document).ready(function(){
+  jQuery( ".radio" ).buttonset();
+});
+{/literal}
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Elegant, Configuration Page'|@translate}</h2>
+</div>
+<form method="post" class="properties" action="" ENCTYPE="multipart/form-data" name="form" class="properties">
+<div id="configContent">
+  <fieldset>
+    <legend>{'Panels options'|@translate}</legend>
+    <p>{'Choose what should be the default state for each panel, or disable the animation:'|@translate}</p>
+    <ul>
+      <li class="radio" >
+        <label for="p_main_menu"><span class="property">{'Main Menu Panel'|@translate}</span>&nbsp;</label>
+        <input type="radio" id="p_main_menu_on" name="p_main_menu" value="on" {if $options.p_main_menu=="on"}checked="checked"{/if}><label for="p_main_menu_on">{'Displayed'|@translate}</label>
+        <input type="radio" id="p_main_menu_off" name="p_main_menu" value="off" {if $options.p_main_menu=="off"}checked="checked"{/if}><label for="p_main_menu_off">{'Hidden'|@translate}</label>
+        <input type="radio" id="p_main_menu_disabled" name="p_main_menu" value="disabled" {if $options.p_main_menu=="disabled"}checked="checked"{/if}><label for="p_main_menu_disabled">{'Disable the animation'|@translate}</label>
+      </li>
+      <li class="radio" >
+        <label for="p_pict_descr"><span class="property">{'Photo Description Panel'|@translate}</span>&nbsp;</label>
+        <input type="radio" id="p_pict_descr_on" name="p_pict_descr" value="on" {if $options.p_pict_descr=="on"}checked="checked"{/if}><label for="p_pict_descr_on">{'Displayed'|@translate}</label>
+        <input type="radio" id="p_pict_descr_off" name="p_pict_descr" value="off" {if $options.p_pict_descr=="off"}checked="checked"{/if}><label for="p_pict_descr_off">{'Hidden'|@translate}</label>
+        <input type="radio" id="p_pict_descr_disabled" name="p_pict_descr" value="disabled" {if $options.p_pict_descr=="disabled"}checked="checked"{/if}><label for="p_pict_descr_disabled">{'Disable the animation'|@translate}</label>
+      </li>
+      <li class="radio" >
+        <label for="p_pict_comment"><span class="property">{'Comments Panel'|@translate}</span>&nbsp;</label>
+        <input type="radio" id="p_pict_comment_on" name="p_pict_comment" value="on" {if $options.p_pict_comment=="on"}checked="checked"{/if}><label for="p_pict_comment_on">{'Displayed'|@translate}</label>
+        <input type="radio" id="p_pict_comment_off" name="p_pict_comment" value="off" {if $options.p_pict_comment=="off"}checked="checked"{/if}><label for="p_pict_comment_off">{'Hidden'|@translate}</label>
+        <input type="radio" id="p_pict_comment_disabled" name="p_pict_comment" value="disabled" {if $options.p_pict_comment=="disabled"}checked="checked"{/if}><label for="p_pict_comment_disabled">{'Disable the animation'|@translate}</label>
+      </li>
+    </ul>
+  </fieldset>
+</div>
+<p>
+  <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit_elegant" />
+</p>
+</form>
Index: /tags/2.6.0RC1/themes/elegant/admin/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/admin/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/admin/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/admin/jquery.ui.button.css
===================================================================
--- /tags/2.6.0RC1/themes/elegant/admin/jquery.ui.button.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/admin/jquery.ui.button.css	(revision 25596)
@@ -0,0 +1,571 @@
+/*! jQuery UI - v1.10.3 - 2013-06-16
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.button.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+#content .ui-helper-hidden {
+	display: none;
+}
+#content .ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+#content .ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+#content .ui-helper-clearfix:before,
+#content .ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+#content .ui-helper-clearfix:after {
+	clear: both;
+}
+#content .ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+#content .ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+#content .ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+#content .ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+#content .ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+#content .ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+#content .ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+#content .ui-button,
+#content .ui-button:link,
+#content .ui-button:visited,
+#content .ui-button:hover,
+#content .ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+#content .ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+#content button.ui-button-icon-only {
+	width: 2.4em;
+}
+#content .ui-button-icons-only {
+	width: 3.4em;
+}
+#content button.ui-button-icons-only {
+	width: 3.7em;
+}
+
+/* button text element */
+#content .ui-button .ui-button-text {
+	display: block;
+	line-height: normal;
+}
+#content .ui-button-text-only .ui-button-text {
+	padding: .4em 1em;
+}
+#content .ui-button-icon-only .ui-button-text,
+#content .ui-button-icons-only .ui-button-text {
+	padding: .4em;
+	text-indent: -9999999px;
+}
+#content .ui-button-text-icon-primary .ui-button-text,
+#content .ui-button-text-icons .ui-button-text {
+	padding: .4em 1em .4em 2.1em;
+}
+#content .ui-button-text-icon-secondary .ui-button-text,
+#content .ui-button-text-icons .ui-button-text {
+	padding: .4em 2.1em .4em 1em;
+}
+#content .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 */
+#content input.ui-button {
+	padding: .4em 1em;
+}
+
+/* button icon element(s) */
+#content .ui-button-icon-only .ui-icon,
+#content .ui-button-text-icon-primary .ui-icon,
+#content .ui-button-text-icon-secondary .ui-icon,
+#content .ui-button-text-icons .ui-icon,
+#content .ui-button-icons-only .ui-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+}
+#content .ui-button-icon-only .ui-icon {
+	left: 50%;
+	margin-left: -8px;
+}
+#content .ui-button-text-icon-primary .ui-button-icon-primary,
+#content .ui-button-text-icons .ui-button-icon-primary,
+#content .ui-button-icons-only .ui-button-icon-primary {
+	left: .5em;
+}
+#content .ui-button-text-icon-secondary .ui-button-icon-secondary,
+#content .ui-button-text-icons .ui-button-icon-secondary,
+#content .ui-button-icons-only .ui-button-icon-secondary {
+	right: .5em;
+}
+
+/* button sets */
+#content .ui-buttonset {
+	margin-right: 7px;
+}
+#content .ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+#content input.ui-button::-moz-focus-inner,
+#content button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+
+/* Component containers
+----------------------------------*/
+#content .ui-widget-content {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
+	color: #222222;
+}
+#content .ui-widget-content a {
+	color: #222222;
+}
+#content .ui-widget-header {
+	border: 1px solid #aaaaaa;
+	background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
+	color: #222222;
+	font-weight: bold;
+}
+#content .ui-widget-header a {
+	color: #222222;
+}
+
+/* Interaction states
+----------------------------------*/
+#content .ui-state-default,
+#content .ui-widget-content .ui-state-default,
+#content .ui-widget-header .ui-state-default {
+	border: 1px solid #d3d3d3;
+	background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #555555;
+}
+#content .ui-state-default a,
+#content .ui-state-default a:link,
+#content .ui-state-default a:visited {
+	color: #555555;
+	text-decoration: none;
+}
+#content .ui-state-hover,
+#content .ui-widget-content .ui-state-hover,
+#content .ui-widget-header .ui-state-hover,
+#content .ui-state-focus,
+#content .ui-widget-content .ui-state-focus,
+#content .ui-widget-header .ui-state-focus {
+	border: 1px solid #999999;
+	background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+#content .ui-state-hover a,
+#content .ui-state-hover a:hover,
+#content .ui-state-hover a:link,
+#content .ui-state-hover a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+#content .ui-state-active,
+#content .ui-widget-content .ui-state-active,
+#content .ui-widget-header .ui-state-active {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+#content .ui-state-active a,
+#content .ui-state-active a:link,
+#content .ui-state-active a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+#content .ui-state-highlight,
+#content .ui-widget-content .ui-state-highlight,
+#content .ui-widget-header .ui-state-highlight {
+	border: 1px solid #fcefa1;
+	background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
+	color: #363636;
+}
+#content .ui-state-highlight a,
+#content .ui-widget-content .ui-state-highlight a,
+#content .ui-widget-header .ui-state-highlight a {
+	color: #363636;
+}
+#content .ui-state-error,
+#content .ui-widget-content .ui-state-error,
+#content .ui-widget-header .ui-state-error {
+	border: 1px solid #cd0a0a;
+	background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
+	color: #cd0a0a;
+}
+#content .ui-state-error a,
+#content .ui-widget-content .ui-state-error a,
+#content .ui-widget-header .ui-state-error a {
+	color: #cd0a0a;
+}
+#content .ui-state-error-text,
+#content .ui-widget-content .ui-state-error-text,
+#content .ui-widget-header .ui-state-error-text {
+	color: #cd0a0a;
+}
+#content .ui-priority-primary,
+#content .ui-widget-content .ui-priority-primary,
+#content .ui-widget-header .ui-priority-primary {
+	font-weight: bold;
+}
+#content .ui-priority-secondary,
+#content .ui-widget-content .ui-priority-secondary,
+#content .ui-widget-header .ui-priority-secondary {
+	opacity: .7;
+	filter:Alpha(Opacity=70);
+	font-weight: normal;
+}
+#content .ui-state-disabled,
+#content .ui-widget-content .ui-state-disabled,
+#content .ui-widget-header .ui-state-disabled {
+	opacity: .35;
+	filter:Alpha(Opacity=35);
+	background-image: none;
+}
+#content .ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+#content .ui-icon {
+	width: 16px;
+	height: 16px;
+}
+#content .ui-icon,
+#content .ui-widget-content .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png);
+}
+#content .ui-widget-header .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png);
+}
+#content .ui-state-default .ui-icon {
+	background-image: url(images/ui-icons_888888_256x240.png);
+}
+#content .ui-state-hover .ui-icon,
+#content .ui-state-focus .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png);
+}
+#content .ui-state-active .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png);
+}
+#content .ui-state-highlight .ui-icon {
+	background-image: url(images/ui-icons_2e83ff_256x240.png);
+}
+#content .ui-state-error .ui-icon,
+#content .ui-state-error-text .ui-icon {
+	background-image: url(images/ui-icons_cd0a0a_256x240.png);
+}
+
+/* positioning */
+#content .ui-icon-blank { background-position: 16px 16px; }
+#content .ui-icon-carat-1-n { background-position: 0 0; }
+#content .ui-icon-carat-1-ne { background-position: -16px 0; }
+#content .ui-icon-carat-1-e { background-position: -32px 0; }
+#content .ui-icon-carat-1-se { background-position: -48px 0; }
+#content .ui-icon-carat-1-s { background-position: -64px 0; }
+#content .ui-icon-carat-1-sw { background-position: -80px 0; }
+#content .ui-icon-carat-1-w { background-position: -96px 0; }
+#content .ui-icon-carat-1-nw { background-position: -112px 0; }
+#content .ui-icon-carat-2-n-s { background-position: -128px 0; }
+#content .ui-icon-carat-2-e-w { background-position: -144px 0; }
+#content .ui-icon-triangle-1-n { background-position: 0 -16px; }
+#content .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+#content .ui-icon-triangle-1-e { background-position: -32px -16px; }
+#content .ui-icon-triangle-1-se { background-position: -48px -16px; }
+#content .ui-icon-triangle-1-s { background-position: -64px -16px; }
+#content .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+#content .ui-icon-triangle-1-w { background-position: -96px -16px; }
+#content .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+#content .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+#content .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+#content .ui-icon-arrow-1-n { background-position: 0 -32px; }
+#content .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+#content .ui-icon-arrow-1-e { background-position: -32px -32px; }
+#content .ui-icon-arrow-1-se { background-position: -48px -32px; }
+#content .ui-icon-arrow-1-s { background-position: -64px -32px; }
+#content .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+#content .ui-icon-arrow-1-w { background-position: -96px -32px; }
+#content .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+#content .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+#content .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+#content .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+#content .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+#content .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+#content .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+#content .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+#content .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+#content .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+#content .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+#content .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+#content .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+#content .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+#content .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+#content .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+#content .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+#content .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+#content .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+#content .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+#content .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+#content .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+#content .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+#content .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+#content .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+#content .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+#content .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+#content .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+#content .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+#content .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+#content .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+#content .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+#content .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+#content .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+#content .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+#content .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+#content .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+#content .ui-icon-arrow-4 { background-position: 0 -80px; }
+#content .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+#content .ui-icon-extlink { background-position: -32px -80px; }
+#content .ui-icon-newwin { background-position: -48px -80px; }
+#content .ui-icon-refresh { background-position: -64px -80px; }
+#content .ui-icon-shuffle { background-position: -80px -80px; }
+#content .ui-icon-transfer-e-w { background-position: -96px -80px; }
+#content .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+#content .ui-icon-folder-collapsed { background-position: 0 -96px; }
+#content .ui-icon-folder-open { background-position: -16px -96px; }
+#content .ui-icon-document { background-position: -32px -96px; }
+#content .ui-icon-document-b { background-position: -48px -96px; }
+#content .ui-icon-note { background-position: -64px -96px; }
+#content .ui-icon-mail-closed { background-position: -80px -96px; }
+#content .ui-icon-mail-open { background-position: -96px -96px; }
+#content .ui-icon-suitcase { background-position: -112px -96px; }
+#content .ui-icon-comment { background-position: -128px -96px; }
+#content .ui-icon-person { background-position: -144px -96px; }
+#content .ui-icon-print { background-position: -160px -96px; }
+#content .ui-icon-trash { background-position: -176px -96px; }
+#content .ui-icon-locked { background-position: -192px -96px; }
+#content .ui-icon-unlocked { background-position: -208px -96px; }
+#content .ui-icon-bookmark { background-position: -224px -96px; }
+#content .ui-icon-tag { background-position: -240px -96px; }
+#content .ui-icon-home { background-position: 0 -112px; }
+#content .ui-icon-flag { background-position: -16px -112px; }
+#content .ui-icon-calendar { background-position: -32px -112px; }
+#content .ui-icon-cart { background-position: -48px -112px; }
+#content .ui-icon-pencil { background-position: -64px -112px; }
+#content .ui-icon-clock { background-position: -80px -112px; }
+#content .ui-icon-disk { background-position: -96px -112px; }
+#content .ui-icon-calculator { background-position: -112px -112px; }
+#content .ui-icon-zoomin { background-position: -128px -112px; }
+#content .ui-icon-zoomout { background-position: -144px -112px; }
+#content .ui-icon-search { background-position: -160px -112px; }
+#content .ui-icon-wrench { background-position: -176px -112px; }
+#content .ui-icon-gear { background-position: -192px -112px; }
+#content .ui-icon-heart { background-position: -208px -112px; }
+#content .ui-icon-star { background-position: -224px -112px; }
+#content .ui-icon-link { background-position: -240px -112px; }
+#content .ui-icon-cancel { background-position: 0 -128px; }
+#content .ui-icon-plus { background-position: -16px -128px; }
+#content .ui-icon-plusthick { background-position: -32px -128px; }
+#content .ui-icon-minus { background-position: -48px -128px; }
+#content .ui-icon-minusthick { background-position: -64px -128px; }
+#content .ui-icon-close { background-position: -80px -128px; }
+#content .ui-icon-closethick { background-position: -96px -128px; }
+#content .ui-icon-key { background-position: -112px -128px; }
+#content .ui-icon-lightbulb { background-position: -128px -128px; }
+#content .ui-icon-scissors { background-position: -144px -128px; }
+#content .ui-icon-clipboard { background-position: -160px -128px; }
+#content .ui-icon-copy { background-position: -176px -128px; }
+#content .ui-icon-contact { background-position: -192px -128px; }
+#content .ui-icon-image { background-position: -208px -128px; }
+#content .ui-icon-video { background-position: -224px -128px; }
+#content .ui-icon-script { background-position: -240px -128px; }
+#content .ui-icon-alert { background-position: 0 -144px; }
+#content .ui-icon-info { background-position: -16px -144px; }
+#content .ui-icon-notice { background-position: -32px -144px; }
+#content .ui-icon-help { background-position: -48px -144px; }
+#content .ui-icon-check { background-position: -64px -144px; }
+#content .ui-icon-bullet { background-position: -80px -144px; }
+#content .ui-icon-radio-on { background-position: -96px -144px; }
+#content .ui-icon-radio-off { background-position: -112px -144px; }
+#content .ui-icon-pin-w { background-position: -128px -144px; }
+#content .ui-icon-pin-s { background-position: -144px -144px; }
+#content .ui-icon-play { background-position: 0 -160px; }
+#content .ui-icon-pause { background-position: -16px -160px; }
+#content .ui-icon-seek-next { background-position: -32px -160px; }
+#content .ui-icon-seek-prev { background-position: -48px -160px; }
+#content .ui-icon-seek-end { background-position: -64px -160px; }
+#content .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+#content .ui-icon-seek-first { background-position: -80px -160px; }
+#content .ui-icon-stop { background-position: -96px -160px; }
+#content .ui-icon-eject { background-position: -112px -160px; }
+#content .ui-icon-volume-off { background-position: -128px -160px; }
+#content .ui-icon-volume-on { background-position: -144px -160px; }
+#content .ui-icon-power { background-position: 0 -176px; }
+#content .ui-icon-signal-diag { background-position: -16px -176px; }
+#content .ui-icon-signal { background-position: -32px -176px; }
+#content .ui-icon-battery-0 { background-position: -48px -176px; }
+#content .ui-icon-battery-1 { background-position: -64px -176px; }
+#content .ui-icon-battery-2 { background-position: -80px -176px; }
+#content .ui-icon-battery-3 { background-position: -96px -176px; }
+#content .ui-icon-circle-plus { background-position: 0 -192px; }
+#content .ui-icon-circle-minus { background-position: -16px -192px; }
+#content .ui-icon-circle-close { background-position: -32px -192px; }
+#content .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+#content .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+#content .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+#content .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+#content .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+#content .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+#content .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+#content .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+#content .ui-icon-circle-zoomin { background-position: -176px -192px; }
+#content .ui-icon-circle-zoomout { background-position: -192px -192px; }
+#content .ui-icon-circle-check { background-position: -208px -192px; }
+#content .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+#content .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+#content .ui-icon-circlesmall-close { background-position: -32px -208px; }
+#content .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+#content .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+#content .ui-icon-squaresmall-close { background-position: -80px -208px; }
+#content .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+#content .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+#content .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+#content .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+#content .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+#content .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+#content .ui-corner-all,
+#content .ui-corner-top,
+#content .ui-corner-left,
+#content .ui-corner-tl {
+	border-top-left-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-top,
+#content .ui-corner-right,
+#content .ui-corner-tr {
+	border-top-right-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-bottom,
+#content .ui-corner-left,
+#content .ui-corner-bl {
+	border-bottom-left-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-bottom,
+#content .ui-corner-right,
+#content .ui-corner-br {
+	border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+#content .ui-widget-overlay {
+	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+}
+#content .ui-widget-shadow {
+	margin: -8px 0 0 -8px;
+	padding: 8px;
+	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+	border-radius: 8px;
+}
Index: /tags/2.6.0RC1/themes/elegant/admin/upgrade.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/admin/upgrade.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/admin/upgrade.inc.php	(revision 25596)
@@ -0,0 +1,31 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+global $prefixeTable, $conf;
+
+if (!isset($conf['elegant']))
+{
+  $config = array(
+    'p_main_menu'            => 'on',//on - off - disabled
+    'p_pict_descr'            => 'on',//on - off - disabled
+    'p_pict_comment'            => 'off',//on - off - disabled
+  );
+  $query = "
+INSERT INTO " . CONFIG_TABLE . " (param,value,comment)
+VALUES ('elegant' , '".pwg_db_real_escape_string(serialize($config))."' , 'p_main_menu#');";
+  pwg_query($query);
+  load_conf_from_db();
+}
+elseif (count(unserialize( $conf['elegant'] ))!=3)
+{
+  $conff=unserialize($conf['elegant']);
+  $config = array(
+    'p_main_menu'            => (isset($conff['p_main_menu'])) ? $conff['p_main_menu'] :'on',
+    'p_pict_descr'            => (isset($conff['p_pict_descr'])) ? $conff['p_pict_descr'] :'on',
+    'p_pict_comment'            => (isset($conff['p_pict_comment'])) ? $conff['p_pict_comment'] :'off',
+  );
+  conf_update_param('elegant', pwg_db_real_escape_string(serialize($config)));
+  load_conf_from_db();
+}
+?>
Index: /tags/2.6.0RC1/themes/elegant/fix-ie7.css
===================================================================
--- /tags/2.6.0RC1/themes/elegant/fix-ie7.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/fix-ie7.css	(revision 25596)
@@ -0,0 +1,3 @@
+#theImage.infoshown			{ float: left;}
+#theImage.infohidden		{ float: right;}
+#imageToolBar .actionButtons	{ float: right;}
Index: /tags/2.6.0RC1/themes/elegant/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ar_SA/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ar_SA/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ar_SA/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'اختيار ما ينبغي أن تكون علية الحالة الافتراضية لكل لوحة، أو تعطيل الرسوم المتحركة:';
+$lang['Comments Panel'] = 'لوحة التعليقات';
+$lang['Disable the animation'] = 'تعطيل الرسوم المتحركة';
+$lang['Displayed'] = 'عرض';
+$lang['Elegant, Configuration Page'] = 'الأنيق، صفحة التكوين';
+$lang['Hidden'] = 'مخفي';
+$lang['Main Menu Panel'] = 'لوحة القائمة الرئيسية ';
+$lang['Panels options'] = 'خيارات اللوحات';
+$lang['Photo Description Panel'] = 'لوحة وصف الصورة';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/bg_BG/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/bg_BG/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/bg_BG/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Изберете какъв ще бъде по подразбиране всеки панел или забранете анимирането:';
+$lang['Photo Description Panel'] = 'Панел с описание на снимки';
+$lang['Panels options'] = 'Панел опции';
+$lang['Main Menu Panel'] = 'Панел на основното меню';
+$lang['Hidden'] = 'Скрито';
+$lang['Elegant, Configuration Page'] = 'Elegant, конфигурационна страница';
+$lang['Disable the animation'] = 'Забрана на анимация';
+$lang['Displayed'] = 'Показани';
+$lang['Comments Panel'] = 'Панел с коментари';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/br_FR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/br_FR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/br_FR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Comments Panel'] = 'Panell an evezhiadennoù';
+$lang['Main Menu Panel'] = 'Panell ar penn-lañser';
+$lang['Panels options'] = 'Dibarzhioù ar banelloù';
+$lang['Photo Description Panel'] = 'Panell deskrivadur al luc\'hskeudennoù';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Dibabit peseurt stad a rank bezañ an hini dre ziouer evit pep skramm, pe diweredekait ar skeudenn-vev:';
+$lang['Hidden'] = 'Kuzhet';
+$lang['Elegant, Configuration Page'] = 'Cheuc\'h, Pajenn kefluniañ';
+$lang['Disable the animation'] = 'Diweredekaat ar skeudenn-vev';
+$lang['Displayed'] = 'Diskouezet';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ca_ES/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ca_ES/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ca_ES/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Escolliu l\'estat per defecte de cada panell, o deshabiliteu l\'animació:';
+$lang['Comments Panel'] = 'Panell de comentaris';
+$lang['Disable the animation'] = 'Deshabilitar l\'animació';
+$lang['Displayed'] = 'Visualitzat';
+$lang['Elegant, Configuration Page'] = 'Elegant, Pàgina de configuració';
+$lang['Hidden'] = 'Amagat';
+$lang['Main Menu Panel'] = 'Panell del menú principal';
+$lang['Panels options'] = 'Opcions dels panells';
+$lang['Photo Description Panel'] = 'Panell de descripció de la foto';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/cs_CZ/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/cs_CZ/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/cs_CZ/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/cs_CZ/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/cs_CZ/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/cs_CZ/theme.lang.php	(revision 25596)
@@ -0,0 +1,11 @@
+<?php
+$lang['Elegant, Configuration Page'] = 'Elegant, stránka s konfigurací';
+$lang['Panels options'] = 'Nastavení panelů';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Nastavte výchozí stav pro každý panel nebo deaktivujte animaci:';
+$lang['Main Menu Panel'] = 'Hlavní menu panel';
+$lang['Displayed'] = 'Zobrazen';
+$lang['Hidden'] = 'Skryt';
+$lang['Disable the animation'] = 'Deaktivovat animaci';
+$lang['Photo Description Panel'] = 'Panel s popisem fotografií';
+$lang['Comments Panel'] = 'Panel komentářů';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/da_DK/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/da_DK/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/da_DK/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Hvad hvad der skal være hvert panels standardtilstand, eller deaktiver animationen:';
+$lang['Comments Panel'] = 'Kommentarpanel';
+$lang['Disable the animation'] = 'Deaktiver animationen';
+$lang['Displayed'] = 'Vist';
+$lang['Elegant, Configuration Page'] = 'Elegant, Opsætningspanel';
+$lang['Hidden'] = 'Skjult';
+$lang['Main Menu Panel'] = 'Panelets hovedmenu';
+$lang['Panels options'] = 'Panelindstillinger';
+$lang['Photo Description Panel'] = 'Fotobeskrivelsespanel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/de_DE/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/de_DE/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/de_DE/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Wählen Sie den default Status eines jeden Panels aus, oder deaktivieren Sie die Animation';
+$lang['Comments Panel'] = 'Kommentar Panel';
+$lang['Disable the animation'] = 'Animation deaktivieren';
+$lang['Displayed'] = 'angezeigt';
+$lang['Elegant, Configuration Page'] = 'Elegant ,Konfigurationsseite';
+$lang['Hidden'] = 'versteckt';
+$lang['Main Menu Panel'] = 'Hauptmenü Panel';
+$lang['Panels options'] = 'Panel Optionen';
+$lang['Photo Description Panel'] = 'Panel Fotobeschreibung';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/el_GR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/el_GR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/el_GR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Photo Description Panel'] = 'Πάνελ Περιγραφής Φωτογραφίας ';
+$lang['Panels options'] = 'επιλογές πάνελ';
+$lang['Main Menu Panel'] = 'Πάνελ Κύριου μενού';
+$lang['Hidden'] = 'Κρυφό';
+$lang['Elegant, Configuration Page'] = 'Elegant, διαμόρφωσης σελίδας';
+$lang['Displayed'] = 'Εμφανιζόμενο';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Επιλέξτε αυτό που θα θέλατε να είναι η προεπιλεγμένη κατάσταση για κάθε πάνελ, ή απενεργοποιήσετε τα κινούμενα σχέδια:';
+$lang['Disable the animation'] = 'Απενεργοποιήστε τα κινούμενα σχέδια';
+$lang['Comments Panel'] = 'Πάνελ Σχολίων';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/en_UK/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/en_UK/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/en_UK/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/en_UK/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/en_UK/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/en_UK/theme.lang.php	(revision 25596)
@@ -0,0 +1,11 @@
+<?php
+$lang['Elegant, Configuration Page'] = 'Elegant, Configuration Page';
+$lang['Panels options'] = 'Panels options';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Choose what should be the default state for each panel, or disable the animation:';
+$lang['Main Menu Panel'] = 'Main Menu Panel';
+$lang['Displayed'] = 'Displayed';
+$lang['Hidden'] = 'Hidden';
+$lang['Disable the animation'] = 'Disable the animation';
+$lang['Photo Description Panel'] = 'Photo Description Panel';
+$lang['Comments Panel'] = 'Comments Panel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/eo_EO/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/eo_EO/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/eo_EO/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Photo Description Panel'] = 'Fotopriskriba panelo';
+$lang['Panels options'] = 'Panelaj opcioj';
+$lang['Main Menu Panel'] = 'Panelo de la ĉefa menuo';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Elektu, kion estu la apriora stato de ĉiu panelo, aŭ malŝaltu la animacio:';
+$lang['Elegant, Configuration Page'] = 'Agordopaĝo de Elegant';
+$lang['Comments Panel'] = 'Panelo por komentoj';
+$lang['Disable the animation'] = 'Malŝalti la animacion';
+$lang['Displayed'] = 'Montrita';
+$lang['Hidden'] = 'Kaŝita';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/es_ES/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/es_ES/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/es_ES/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Elija lo que debería ser el estado por defecto para cada panel o desactivar la animación:';
+$lang['Comments Panel'] = 'Panel de comentarios ';
+$lang['Disable the animation'] = 'Desactivar la animación';
+$lang['Displayed'] = 'Mostrado';
+$lang['Elegant, Configuration Page'] = 'Pagina de configuración de Elegant';
+$lang['Hidden'] = 'Esconder';
+$lang['Main Menu Panel'] = 'Panel del menú principal';
+$lang['Panels options'] = 'Opciones del panel';
+$lang['Photo Description Panel'] = 'Descripción de la foto del panel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/et_EE/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/et_EE/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/et_EE/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Vali vaikimisi oleks igale paneelile või lülita animatsioon välja:';
+$lang['Comments Panel'] = 'Kommentaaride paneel';
+$lang['Disable the animation'] = 'Lülita animatsioon välja';
+$lang['Displayed'] = 'Näidatakse';
+$lang['Elegant, Configuration Page'] = 'Elegant, seadistuspaneel';
+$lang['Hidden'] = 'Peidetud';
+$lang['Main Menu Panel'] = 'Peamenüü paneel';
+$lang['Panels options'] = 'Paneeli seaded';
+$lang['Photo Description Panel'] = 'Pildi kirjelduste paneel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fa_IR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fa_IR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fa_IR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'وضعیت پیشفرضِ هر پنل را انتخاب کنید، یا حالت انیمیشن آنها را غیر فعال کنید:';
+$lang['Comments Panel'] = 'پنلِ توضیحات';
+$lang['Disable the animation'] = 'غیر فعال کردنِ انیمیشن';
+$lang['Displayed'] = 'نمایش داده شود';
+$lang['Elegant, Configuration Page'] = 'پیکربندیِ Elegant';
+$lang['Hidden'] = 'پنهان';
+$lang['Main Menu Panel'] = 'پنلِ منوی اصلی';
+$lang['Panels options'] = 'گزینه‌های پنل‌ها';
+$lang['Photo Description Panel'] = 'پنلِ توضیحاتِ عکس';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fi_FI/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fi_FI/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fi_FI/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Valitse kunkin paneelin oletustila, tai poista animaatio käytöstä:';
+$lang['Comments Panel'] = 'Kommenttipaneeli';
+$lang['Disable the animation'] = 'Poista animaatio käytöstä';
+$lang['Displayed'] = 'Näkyvissä';
+$lang['Elegant, Configuration Page'] = 'Aistikas, asetussivu';
+$lang['Hidden'] = 'Piilotettu';
+$lang['Main Menu Panel'] = 'Päävalikkopaneeli';
+$lang['Panels options'] = 'Paneelien asetukset';
+$lang['Photo Description Panel'] = 'Kuvan tiedot -paneeli';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fr_CA/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fr_CA/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fr_CA/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fr_CA/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fr_CA/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fr_CA/theme.lang.php	(revision 25596)
@@ -0,0 +1,12 @@
+<?php
+
+$lang['Elegant, Configuration Page'] = 'Élégant, Page de Configuration';
+$lang['Panels options'] = 'Options des panneaux';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Choisissez le comportement par défaut des panneaux rétractables, ou désactivez leur animation';
+$lang['Main Menu Panel'] = 'Panneau du menu principal';
+$lang['Displayed'] = 'Affiché';
+$lang['Hidden'] = 'Caché';
+$lang['Disable the animation'] = 'Désactiver l\'animation';
+$lang['Photo Description Panel'] = 'Panneau de description de la photo';
+$lang['Comments Panel'] = 'Panneau des commentaires'; 
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fr_FR/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fr_FR/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fr_FR/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/fr_FR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/fr_FR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/fr_FR/theme.lang.php	(revision 25596)
@@ -0,0 +1,12 @@
+<?php
+
+$lang['Elegant, Configuration Page'] = 'Elegant, Page de Configuration';
+$lang['Panels options'] = 'Options des panneaux';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Choisissez le comportement par défaut des panneaux rétractables, ou désactivez leur animation';
+$lang['Main Menu Panel'] = 'Panneau du menu principal';
+$lang['Displayed'] = 'Affiché';
+$lang['Hidden'] = 'Caché';
+$lang['Disable the animation'] = 'Désactiver l\'animation';
+$lang['Photo Description Panel'] = 'Panneau de la description de la photo';
+$lang['Comments Panel'] = 'Panneau des commentaires';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/hu_HU/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/hu_HU/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/hu_HU/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Állítsa be milyen legyen a panel alapértelmezett állapotban, vagy tiltsa le az animációt:';
+$lang['Panels options'] = 'Panelek lehetőségei';
+$lang['Comments Panel'] = 'Hozzászólások panel';
+$lang['Disable the animation'] = 'Animáció kikapcsolása';
+$lang['Displayed'] = 'Megjelenítés';
+$lang['Elegant, Configuration Page'] = 'Elegant, beállítás oldal';
+$lang['Hidden'] = 'Rejtett';
+$lang['Main Menu Panel'] = 'Főmenü panel';
+$lang['Photo Description Panel'] = 'Kép leírás panel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/index.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/it_IT/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/it_IT/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/it_IT/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Photo Description Panel'] = 'Pannello Descrizione Foto';
+$lang['Panels options'] = 'Pannelli opzioni';
+$lang['Main Menu Panel'] = 'Pannello Menu Principale';
+$lang['Hidden'] = 'Nascosto';
+$lang['Elegant, Configuration Page'] = 'Elegante, Pagina di configurazione';
+$lang['Displayed'] = 'Visualizza';
+$lang['Disable the animation'] = 'Disabilita l\'animazione';
+$lang['Comments Panel'] = 'Pannello Commenti';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Scegli quello che dovrebbe essere lo stato predefinito per ogni pannello, o disattiva l\'animazione:';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/kn_IN/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/kn_IN/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/kn_IN/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Elegant, Configuration Page'] = 'ಎಲಿಗ್ಯಾಂಟ್, ಕಾನ್ಫಿಗರೇಶನ್ ಪುಟ';
+$lang['Hidden'] = 'ಬಚ್ಚಿಟ್ಟದ್ದು';
+$lang['Main Menu Panel'] = 'ಮುಖ್ಯ ಆಯ್ಕೆಪಟ್ಟಿ ಪ್ಯಾನೆಲ್';
+$lang['Panels options'] = 'ಪ್ಯಾನೆಲ್ ಗಳ ಆಯ್ಕೆಗಳು';
+$lang['Photo Description Panel'] = 'ಚಿತ್ರದ ವಿವರಣೆ ಪ್ಯಾನೆಲ್';
+$lang['Displayed'] = 'ಪ್ರದರ್ಶಿಸಲಾಗಿದೆ';
+$lang['Disable the animation'] = 'ಅನಿಮೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ';
+$lang['Comments Panel'] = 'ಟಿಪ್ಪಣಿಗಳ ಪ್ಯಾನೆಲ್';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'ಪ್ರತಿಯೊಂದು ಪ್ಯಾನೆಲ್ ನ ಪೂರ್ವನಿಯೋಜಿತ ಸ್ಥಿತಿ ಏನಿರಬೇಕೆಂದು ಆರಿಸಿ, ಅಥವಾ ಅನಿಮೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ.';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ko_KR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ko_KR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ko_KR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = '각 패널의 기본 상태와 애니메이션을 비활성화 할 지 선택하십시오.';
+$lang['Comments Panel'] = '댓글 패널';
+$lang['Disable the animation'] = '애니메이션 비활성화';
+$lang['Displayed'] = '보임';
+$lang['Elegant, Configuration Page'] = 'Elegant, 설정 페이지';
+$lang['Hidden'] = '숨김';
+$lang['Main Menu Panel'] = '메인 메뉴 패널';
+$lang['Panels options'] = '패널 옵션';
+$lang['Photo Description Panel'] = '사진 설명 패널';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/lt_LT/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/lt_LT/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/lt_LT/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Elegant, Configuration Page'] = 'Elegant konfigūracijos puslapis';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Pasirinkite kokia turėtų būti kiekvieno skydelio būsena arba išjunkite animaciją';
+$lang['Comments Panel'] = 'Komentarų skydelis';
+$lang['Disable the animation'] = 'Išjungti animaciją';
+$lang['Displayed'] = 'Rodoma';
+$lang['Hidden'] = 'Paslėpta';
+$lang['Main Menu Panel'] = 'Pagrindinio meniu skydelis';
+$lang['Panels options'] = 'Skydelių parinktys';
+$lang['Photo Description Panel'] = 'Foto aprašymo skydelis';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/lv_LV/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/lv_LV/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/lv_LV/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Main Menu Panel'] = 'Galvenās Izvēlnes Panelis';
+$lang['Hidden'] = 'Paslēpts';
+$lang['Disable the animation'] = 'atslēgt animāciju';
+$lang['Comments Panel'] = 'Komentāru panelis';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Izvēlēties, kas būtu katra paneļa noklusējuma stāvoklis vai atspējot animācijas:';
+$lang['Elegant, Configuration Page'] = 'Elegants, Konfigurācijas Lapa';
+$lang['Displayed'] = 'Attēlots';
+$lang['Photo Description Panel'] = 'Fotogrāfiju Apraksta Panelis';
+$lang['Panels options'] = 'Paneļa opcijas';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/nb_NO/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/nb_NO/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/nb_NO/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Velg hva som skal være standard tilstand på hvert panel, eller slå av animasjon';
+$lang['Comments Panel'] = 'Kommentarpanel';
+$lang['Disable the animation'] = 'Slå av animasjon';
+$lang['Displayed'] = 'Sett';
+$lang['Elegant, Configuration Page'] = 'Elegant, konfigurasjonspanel';
+$lang['Hidden'] = 'Skult';
+$lang['Main Menu Panel'] = 'Hovedmenypanel';
+$lang['Panels options'] = 'Paneltilpassinger';
+$lang['Photo Description Panel'] = 'Bildebeskrivelesespanel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/nl_NL/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/nl_NL/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/nl_NL/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Geef de standaardtoestand van elk paneel, of schakel de animatie uit:';
+$lang['Comments Panel'] = 'Commentaar-paneel';
+$lang['Disable the animation'] = 'Schakel de animatie uit';
+$lang['Displayed'] = 'Weergegeven';
+$lang['Elegant, Configuration Page'] = 'Elegant, Configuratiepagina';
+$lang['Main Menu Panel'] = 'Hoofdmenu-paneel';
+$lang['Panels options'] = 'Paneel-opties';
+$lang['Photo Description Panel'] = 'Afbeeldingenbeschrijvings-paneel';
+$lang['Hidden'] = 'Verborgen';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/nn_NO/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/nn_NO/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/nn_NO/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Comments Panel'] = 'Panel for kommentarar';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Vel kva som skal vera standard for kvart panel, eller ikkje vis animering:';
+$lang['Disable the animation'] = 'Ikkje vis animasjonar';
+$lang['Elegant, Configuration Page'] = 'Elegant - innstillingsside';
+$lang['Main Menu Panel'] = 'Panel for hovudmeny';
+$lang['Panels options'] = 'Panelinnstillingar';
+$lang['Photo Description Panel'] = 'Panel for biletskildring';
+$lang['Displayed'] = 'Vist';
+$lang['Hidden'] = 'Gøymd';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/pl_PL/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/pl_PL/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/pl_PL/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Wybierz domyślny stan dla każdego panelu lub wyłącz animację:';
+$lang['Comments Panel'] = 'Panel komentarzy';
+$lang['Disable the animation'] = 'Wyłącz animację';
+$lang['Displayed'] = 'Wyświetlane';
+$lang['Elegant, Configuration Page'] = 'Strona konfiguracyjna Elegant';
+$lang['Hidden'] = 'Ukryte';
+$lang['Main Menu Panel'] = 'Panel głównego menu';
+$lang['Panels options'] = 'Opcje panelu';
+$lang['Photo Description Panel'] = 'Panel opisu zdjęć';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/pt_BR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/pt_BR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/pt_BR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Escolha qual deve ser o estado padrão para cada painel, ou desativar a animação:';
+$lang['Comments Panel'] = 'Painel de Comentários';
+$lang['Disable the animation'] = 'Desabilitar a animação';
+$lang['Displayed'] = 'Exibido';
+$lang['Elegant, Configuration Page'] = 'Elegante, Página de Configuração';
+$lang['Hidden'] = 'Oculto';
+$lang['Main Menu Panel'] = 'Painel do Menu Principal';
+$lang['Panels options'] = 'Opções de painéis';
+$lang['Photo Description Panel'] = 'Painel de Descrição de Foto';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/pt_PT/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/pt_PT/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/pt_PT/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Escolha o que deverá ser definido para cada painel ou desative a animação.';
+$lang['Comments Panel'] = 'Painel de comentários';
+$lang['Disable the animation'] = 'Desativar a animação';
+$lang['Displayed'] = 'Mostrado';
+$lang['Elegant, Configuration Page'] = 'Eleganmte, página de configuração';
+$lang['Hidden'] = 'Omitido';
+$lang['Main Menu Panel'] = 'Painel do menú principal ';
+$lang['Panels options'] = 'Opções dos paineis';
+$lang['Photo Description Panel'] = 'Painel de descrição da foto';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ro_RO/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ro_RO/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ro_RO/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Alege care ar trebui să fie starea implicită pentru fiecare panou, sau dezactivează animația.';
+$lang['Comments Panel'] = 'Panou de comentarii';
+$lang['Disable the animation'] = 'Dezactivează animația';
+$lang['Displayed'] = 'Afișat';
+$lang['Elegant, Configuration Page'] = 'Pagină de configurare pentru Elegant';
+$lang['Hidden'] = 'Ascuns';
+$lang['Main Menu Panel'] = 'Panou meniu principal';
+$lang['Panels options'] = 'Panou de optiuni';
+$lang['Photo Description Panel'] = 'Panou de descrierea fotografiei';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ru_RU/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ru_RU/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ru_RU/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Выберите, что должно быть по умолчанию для каждой группы, или отключите анимацию:  ';
+$lang['Comments Panel'] = 'Панель комментариев';
+$lang['Disable the animation'] = 'Отключить анимацию';
+$lang['Displayed'] = 'Отображено';
+$lang['Elegant, Configuration Page'] = 'Страница настройки темы Elegant';
+$lang['Hidden'] = 'Скрыто';
+$lang['Main Menu Panel'] = 'Панель главного меню';
+$lang['Panels options'] = 'Панели функций';
+$lang['Photo Description Panel'] = 'Панель описания изображений';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/sk_SK/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/sk_SK/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/sk_SK/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Photo Description Panel'] = 'Panel popisu fotky';
+$lang['Panels options'] = 'Panlely možností';
+$lang['Main Menu Panel'] = 'Panel ponuky';
+$lang['Hidden'] = 'Skryté';
+$lang['Elegant, Configuration Page'] = 'Elegantný, stránka konfigurácie';
+$lang['Displayed'] = 'Zobrazené';
+$lang['Disable the animation'] = 'Zakázať animáciu';
+$lang['Comments Panel'] = 'Panel komentárov';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Vyberte si, čo by mal byť východiskový stav pre každý panel, alebo zakázať animáciu';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/sl_SI/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/sl_SI/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/sl_SI/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Izberite privzeto stanje za vsak panel ali pa onemogočite animacijo';
+$lang['Comments Panel'] = 'Panel komentarjev';
+$lang['Disable the animation'] = 'Onemogoči animacijo';
+$lang['Displayed'] = 'Prikazano';
+$lang['Elegant, Configuration Page'] = 'Elegantno, Nastavitveni panel';
+$lang['Hidden'] = 'Skrito';
+$lang['Main Menu Panel'] = 'Panel glavnega menija';
+$lang['Panels options'] = 'Možnosti panela';
+$lang['Photo Description Panel'] = 'Panel opisal fotografij';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/sv_SE/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/sv_SE/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/sv_SE/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Photo Description Panel'] = 'Fotobeskrivnings-panel';
+$lang['Main Menu Panel'] = 'Huvudmeny-panel';
+$lang['Elegant, Configuration Page'] = 'Elegant, konfigurationssida';
+$lang['Hidden'] = 'Dölj';
+$lang['Displayed'] = 'Visa';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Välj standardtillståndet för varje panel, eller inaktivera animationen:';
+$lang['Disable the animation'] = 'Inaktivera animationen';
+$lang['Panels options'] = 'Panelinställningar';
+$lang['Comments Panel'] = 'Kommentarspanel';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/ta_IN/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/ta_IN/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/ta_IN/theme.lang.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Hidden'] = 'மறைந்துள்ள';
+$lang['Main Menu Panel'] = 'முதன்மை மெனுவிலுள்ள குழு';
+$lang['Panels options'] = 'பலகங்கள் விருப்பங்கள்';
+$lang['Photo Description Panel'] = 'புகைப்பட விவரிப்பு பலகம்';
+$lang['Elegant, Configuration Page'] = 'நளினமான, ​​கட்டமைப்பு பக்கம்';
+$lang['Displayed'] = 'காண்பிக்கப்படும்';
+$lang['Comments Panel'] = 'கருத்துரைகள் குழு';
+$lang['Disable the animation'] = 'அனிமேசன் செயலிழக்க';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'தேர்வு செய்யவும் முன்னிருப்பு என்னவாக இருக்க வேண்டும்
+ஒவ்வொரு குழு நிலை,  அல்லது அனிமேஷன் செயலிழக்க:';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/th_TH/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/th_TH/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/th_TH/theme.lang.php	(revision 25596)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = '
+เลือกสิ่งที่ควรมีในตอนเริ่มต้นสำหรับแต่ละแผงหรือปิดการใช้งานภาพเคลื่อนไหว :';
+$lang['Comments Panel'] = 'แผงความเห็น';
+$lang['Disable the animation'] = 'ปิดการใช้งานภาพเคลื่อนไหว';
+$lang['Displayed'] = 'การแสดงผล';
+$lang['Elegant, Configuration Page'] = 'สง่างามหน้าการกำหนดค่า';
+$lang['Hidden'] = 'ซ่อน';
+$lang['Main Menu Panel'] = 'แผงเมนูหลัก';
+$lang['Panels options'] = 'ตัวเลือกแผง';
+$lang['Photo Description Panel'] = 'แผงรายละเอียดรูปภาพ';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/tr_TR/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/tr_TR/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/tr_TR/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Elegant, Configuration Page'] = 'Elegant, Yapılandırma Sayfası';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Her panel için varsayılanın ne olması gerektiğini seçin veya animasyonu devre dışı bırakın:';
+$lang['Comments Panel'] = 'Yorumlar Paneli';
+$lang['Photo Description Panel'] = 'Fotoğraf Açıklama Paneli';
+$lang['Panels options'] = 'Panel seçenekleri';
+$lang['Main Menu Panel'] = 'Ana Menü Paneli';
+$lang['Hidden'] = 'Gizli';
+$lang['Displayed'] = 'Görüntülendi';
+$lang['Disable the animation'] = 'Animasyonu devre dışı bırak';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/uk_UA/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/uk_UA/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/uk_UA/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Elegant, Configuration Page'] = 'Сторінка конфігурації теми Елегантний';
+$lang['Panels options'] = 'Панелі параметрів';
+$lang['Photo Description Panel'] = 'Панель опису зображень';
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Виберіть те, що має стан за замовчуванням для кожної панелі, або відключити анімацію:';
+$lang['Comments Panel'] = 'Панель коментарів';
+$lang['Disable the animation'] = 'Вимкнути анімацію';
+$lang['Displayed'] = 'Показано';
+$lang['Hidden'] = 'Приховано';
+$lang['Main Menu Panel'] = 'Головне меню панелі';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/vi_VN/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/vi_VN/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/vi_VN/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = 'Chọn trạng thái mặc định cho mỗi bảng, hoặc vô hiệu hóa tính năng hoạt hình';
+$lang['Comments Panel'] = 'Bảng bình luận';
+$lang['Disable the animation'] = 'Vô hiệu hóa tính năng hoạt hình';
+$lang['Displayed'] = 'Được hiển thị';
+$lang['Elegant, Configuration Page'] = 'Elegant, Trang cấu hình';
+$lang['Hidden'] = 'Ẩn';
+$lang['Main Menu Panel'] = 'Bảng Menu chính';
+$lang['Panels options'] = 'Tùy chọn bảng';
+$lang['Photo Description Panel'] = 'Bảng mô tả ảnh';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/zh_CN/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/zh_CN/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/zh_CN/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = '选择每个面板的默认状态，或禁用动画：';
+$lang['Disable the animation'] = '禁用动画';
+$lang['Displayed'] = '显示的';
+$lang['Elegant, Configuration Page'] = 'Elegant，设置页';
+$lang['Hidden'] = '隐藏的';
+$lang['Comments Panel'] = '评论面板';
+$lang['Main Menu Panel'] = '主菜单面板';
+$lang['Panels options'] = '面板选项';
+$lang['Photo Description Panel'] = '图片描述面板';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/zh_HK/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/zh_HK/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/zh_HK/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = '選擇每個面板的默認狀態，或停用動畫：';
+$lang['Comments Panel'] = '留言面板';
+$lang['Disable the animation'] = '停用動畫';
+$lang['Displayed'] = '已顯示';
+$lang['Elegant, Configuration Page'] = '優雅，設定頁面';
+$lang['Hidden'] = '隱蔽';
+$lang['Main Menu Panel'] = '主目錄面板';
+$lang['Panels options'] = '面板選項';
+$lang['Photo Description Panel'] = '相片描述面板';
+?>
Index: /tags/2.6.0RC1/themes/elegant/language/zh_TW/theme.lang.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/language/zh_TW/theme.lang.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/language/zh_TW/theme.lang.php	(revision 25596)
@@ -0,0 +1,32 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+$lang['Choose what should be the default state for each panel, or disable the animation:'] = '選擇每個面板的預設狀態，或關閉動畫。';
+$lang['Comments Panel'] = '回應面板';
+$lang['Disable the animation'] = '關閉動畫';
+$lang['Displayed'] = '已顯示';
+$lang['Elegant, Configuration Page'] = '優雅，配置頁面';
+$lang['Hidden'] = '隱藏';
+$lang['Main Menu Panel'] = '主要選單面板';
+$lang['Panels options'] = '面板選項';
+$lang['Photo Description Panel'] = '照片簡介面板';
+?>
Index: /tags/2.6.0RC1/themes/elegant/local_head.tpl
===================================================================
--- /tags/2.6.0RC1/themes/elegant/local_head.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/local_head.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+{footer_script}
+  var p_main_menu = "{$elegant.p_main_menu}", p_pict_descr = "{$elegant.p_pict_descr}", p_pict_comment = "{$elegant.p_pict_comment}";
+{/footer_script}
+{if $BODY_ID=='thePicturePage'}
+	{combine_script id='elegant.scripts_pp' load='footer' require='jquery' path='themes/elegant/scripts_pp.js'}
+{else}
+	{combine_script id='elegant.scripts' load='footer' require='jquery' path='themes/elegant/scripts.js'}
+{/if}
+	<!--[if lt IE 8]>
+		<link rel="stylesheet" type="text/css" href="{$ROOT_URL}themes/elegant/fix-ie7.css">
+	<![endif]-->
Index: /tags/2.6.0RC1/themes/elegant/scripts.js
===================================================================
--- /tags/2.6.0RC1/themes/elegant/scripts.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/scripts.js	(revision 25596)
@@ -0,0 +1,83 @@
+﻿/**
+ * Cookie plugin
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ */
+jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=jQuery.extend({},options);options.expires=-1;}
+var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
+expires='; expires='+date.toUTCString();}
+var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
+return cookieValue;}};
+
+if (jQuery.cookie('page-menu') == 'hidden') {
+	jQuery("head").append("<style type=\"text/css\">#the_page #menubar {display:none;} #content.contentWithMenu, #the_page > .content {margin-left:35px;}</style>");
+} else {
+	jQuery("head").append("<style type=\"text/css\">#content.contentWithMenu, #the_page > .content {margin-left:240px;}</style>");
+}
+
+function hideMenu(delay) {
+	var menubar=jQuery("#menubar");
+	var menuswitcher=jQuery("#menuSwitcher");
+	var content=jQuery("#the_page > .content");
+	var pcontent=jQuery("#content");
+	
+	menubar.hide(delay);
+	menuswitcher.addClass("menuhidden").removeClass("menushown");
+	content.addClass("menuhidden").removeClass("menushown");
+	pcontent.addClass("menuhidden").removeClass("menushown");
+	jQuery.cookie('page-menu', 'hidden', {path: "/"});
+	
+}
+
+function showMenu(delay) {
+
+	var menubar=jQuery("#menubar");
+	var menuswitcher=jQuery("#menuSwitcher");
+	var content=jQuery("#the_page > .content");
+	var pcontent=jQuery("#content");
+
+	menubar.show(delay);
+	menuswitcher.addClass("menushown").removeClass("menuhidden");
+	content.addClass("menushown").removeClass("menuhidden");
+	pcontent.addClass("menushown").removeClass("menuhidden");
+	jQuery.cookie('page-menu', 'visible', {path: "/"});
+	
+}
+
+jQuery("document").ready(function(jQuery){
+
+	var sidemenu = jQuery.cookie('page-menu');
+	var menubar=jQuery("#menubar");
+
+	if (menubar.length == 1 && p_main_menu!="disabled") {
+
+		jQuery("#menuSwitcher").html("<div class=\"switchArrow\">&nbsp;</div>");
+
+		// if cookie says the menu is hiding, keep it hidden!
+		if (sidemenu == 'hidden') {
+			hideMenu(0);
+		} else if (sidemenu == 'visible') {
+			showMenu(0);
+		} else if (p_main_menu == 'off') {
+			hideMenu(0);
+		}	else {
+			showMenu(0);
+		}
+    
+		jQuery("#menuSwitcher").click(function(){
+			if (jQuery("#menubar").is(":hidden")) {
+				showMenu(0);
+				return false;
+			} else {
+				hideMenu(0);
+				return false;
+			}
+		});
+	}
+  else if (menubar.length == 1 && p_main_menu=="disabled") {
+    showMenu(0);
+  }
+	
+});
+
+
Index: /tags/2.6.0RC1/themes/elegant/scripts_pp.js
===================================================================
--- /tags/2.6.0RC1/themes/elegant/scripts_pp.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/scripts_pp.js	(revision 25596)
@@ -0,0 +1,222 @@
+﻿/**
+ * Cookie plugin
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ */
+jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=jQuery.extend({},options);options.expires=-1;}
+var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
+expires='; expires='+date.toUTCString();}
+var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
+return cookieValue;}};
+
+if (jQuery.cookie('picture-menu') == 'visible') {
+	jQuery("head").append("<style type=\"text/css\">#content.contentWithMenu, #the_page > .content {margin-left:240px;}</style>");
+} else {
+	jQuery("head").append("<style type=\"text/css\">#the_page #menubar {display:none;} #content.contentWithMenu, #the_page > .content {margin-left:35px;}</style>");
+}
+
+function hideMenu(delay) {
+	var menubar=jQuery("#menubar");
+	var menuswitcher=jQuery("#menuSwitcher");
+	var content=jQuery("#the_page > .content");
+	var pcontent=jQuery("#content");
+	
+	menubar.hide(delay);
+	menuswitcher.addClass("menuhidden").removeClass("menushown");
+	content.addClass("menuhidden").removeClass("menushown");
+	pcontent.addClass("menuhidden").removeClass("menushown");
+	jQuery.cookie('picture-menu', 'hidden', {path: "/"});
+	
+}
+
+function showMenu(delay) {
+
+	var menubar=jQuery("#menubar");
+	var menuswitcher=jQuery("#menuSwitcher");
+	var content=jQuery("#the_page > .content");
+	var pcontent=jQuery("#content");
+
+	menubar.show(delay);
+	menuswitcher.addClass("menushown").removeClass("menuhidden");
+	content.addClass("menushown").removeClass("menuhidden");
+	pcontent.addClass("menushown").removeClass("menuhidden");
+	jQuery.cookie('picture-menu', 'visible', {path: "/"});
+	
+}
+
+function hideInfo(delay) {
+
+	var imageInfos=jQuery("#imageInfos");
+	var infoswitcher=jQuery("#infoSwitcher");
+	var theImage=jQuery("#theImage");
+	
+	imageInfos.hide(delay);
+	infoswitcher.addClass("infohidden").removeClass("infoshown");
+	theImage.addClass("infohidden").removeClass("infoshown");
+	jQuery.cookie('side-info', 'hidden', {path: "/"});
+
+}
+
+function showInfo(delay) {
+
+	var imageInfos=jQuery("#imageInfos");
+	var infoswitcher=jQuery("#infoSwitcher");
+	var theImage=jQuery("#theImage");
+	
+	imageInfos.show(delay);
+	infoswitcher.addClass("infoshown").removeClass("infohidden");
+	theImage.addClass("infoshown").removeClass("infohidden");
+	jQuery.cookie('side-info', 'visible', {path: "/"});
+
+}
+
+jQuery("document").ready(function(jQuery){
+	
+	// side-menu show/hide
+
+	var sidemenu = jQuery.cookie('picture-menu');
+	var menubar=jQuery("#menubar");
+
+	if (menubar.length == 1 && p_main_menu!="disabled") {
+
+		jQuery("#menuSwitcher").html("<div class=\"switchArrow\">&nbsp;</div>");
+
+		// if cookie says the menu is hiding, keep it hidden!
+		if (sidemenu == 'hidden') {
+			hideMenu(0);
+		} else if (sidemenu == 'visible') {
+			showMenu(0);
+		} else if (p_main_menu == 'off') {
+			hideMenu(0);
+		}	else {
+			showMenu(0);
+		}
+	
+		jQuery("#menuSwitcher").click(function(){
+			if (jQuery("#menubar").is(":hidden")) {
+				showMenu(0);
+				return false;
+			} else {
+				hideMenu(0);
+				return false;
+			}
+		});
+	
+	}
+
+	// info show/hide
+	
+	var sideinfo = jQuery.cookie('side-info');
+	var imageInfos=jQuery("#imageInfos");
+
+	if (imageInfos.length == 1 && p_pict_descr!="disabled") {
+
+		jQuery("#infoSwitcher").html("<div class=\"switchArrow\">&nbsp;</div>");
+
+		// if cookie says the menu is hiding, keep it hidden!
+		if (sideinfo == 'hidden') {
+			hideInfo(0);
+		} else if (sideinfo == 'visible') {
+			showInfo(0);
+		} else if (p_pict_descr == 'off') {
+			hideInfo(0);
+		} else {
+			showInfo(0);
+		}
+	
+		jQuery("#infoSwitcher").click(function(){
+			if (jQuery("#imageInfos").is(":hidden")) {
+				showInfo(0);
+				return false;
+			} else {
+				hideInfo(0);
+				return false;
+			}
+		});
+	
+	}
+
+	// comments show/hide
+
+	var commentsswicther=jQuery("#commentsSwitcher");
+	var comments=jQuery("#thePicturePage #comments");
+	
+	commentsswicther.html("<div class=\"switchArrow\">&nbsp;</div>");
+	
+	if (comments.length == 1 && p_pict_comment!="disabled") {
+		var comments_button=jQuery("#comments h3");
+
+		if (comments_button.length == 0) {
+			jQuery("#addComment").before("<h3>Comments</h3>");
+			comments_button=jQuery("#comments h3");
+		}
+	
+		if (jQuery.cookie('comments') == 'hidden') {
+			comments.addClass("commentshidden");
+			comments_button.addClass("comments_toggle").addClass("comments_toggle_on");
+		} else if (jQuery.cookie('comments') == 'visible') {
+			comments.addClass("commentsshown");
+			comments_button.addClass("comments_toggle").addClass("comments_toggle_off");
+		} else if (p_pict_comment == 'off') {
+			comments.addClass("commentshidden");
+			comments_button.addClass("comments_toggle").addClass("comments_toggle_on");
+		} else {
+			comments.addClass("commentsshown");
+			comments_button.addClass("comments_toggle").addClass("comments_toggle_off");
+		}
+		
+		comments_button.click(function() { commentsToggle() });
+		commentsswicther.click(function() { commentsToggle() });
+
+    if (jQuery('#commentAdd').is(":visible")) {
+      var top = jQuery('#commentAdd').offset().top - parseFloat(jQuery('#commentAdd').css('marginTop').replace(/auto/, 0));
+      jQuery(window).scroll(function (event) {
+        // what the y position of the scroll is
+        var y = jQuery(this).scrollTop();
+      
+        // whether that's below the form
+        if (y >= top) {
+          // if so, ad the fixed class
+          jQuery('#commentAdd').addClass('fixed');
+        } else {
+          // otherwise remove it
+          jQuery('#commentAdd').removeClass('fixed');
+        }
+      });
+    }
+	}
+  
+
+	
+});
+
+function commentsToggle() {
+	var comments=jQuery("#thePicturePage #comments");
+	var comments_button=jQuery("#comments h3");
+
+	if (comments.hasClass("commentshidden")) {
+			comments.removeClass("commentshidden").addClass("commentsshown");
+			comments_button.addClass("comments_toggle_off").removeClass("comments_toggle_on");;
+			jQuery.cookie('comments', 'visible', {path: "/"});
+      var top = jQuery('#commentAdd').offset().top - parseFloat(jQuery('#commentAdd').css('marginTop').replace(/auto/, 0));
+      jQuery(window).scroll(function (event) {
+        // what the y position of the scroll is
+        var y = jQuery(this).scrollTop();
+      
+        // whether that's below the form
+        if (y >= top) {
+          // if so, ad the fixed class
+          jQuery('#commentAdd').addClass('fixed');
+        } else {
+          // otherwise remove it
+          jQuery('#commentAdd').removeClass('fixed');
+        }
+      });
+
+		} else {
+			comments.addClass("commentshidden").removeClass("commentsshown");
+			comments_button.addClass("comments_toggle_on").removeClass("comments_toggle_off");;
+			jQuery.cookie('comments', 'hidden', {path: "/"});
+		}
+
+}
Index: /tags/2.6.0RC1/themes/elegant/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/elegant/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/theme.css	(revision 25596)
@@ -0,0 +1,276 @@
+﻿/* backgrounds */
+
+html, body									{ background-color: #111;}
+
+#content, .content 							{ background-color: #222;}
+.content .titrePage 							{ background-color: #111;}
+
+#menubar, #the_page #menuSwitcher.menuhidden	{ background-color: #222;}
+
+#thePicturePage, #imageHeaderBar			{ background-color: #111;}
+#imageInfos, #infoSwitcher.infohidden 		{ background-color: #333;}
+#thePicturePage #comments 					{ background-color: #333;}
+#pictureCommentList li 						{ background-color: #444;}
+
+.calendarTitle								{ background-color: #222;}
+
+.switchBox, .header_notes 					{ background-color: #555;}
+.thumbnailCategory , .commentElement			{ background-color: #333;}
+.message									{ background-color: #666;}
+
+INPUT[type="text"], INPUT[type="password"],
+INPUT[type="button"], INPUT[type="submit"],
+INPUT[type="reset"], INPUT[type="file"],
+SELECT, TEXTAREA, OPTION							{ background-color: #555;}
+INPUT:focus, SELECT:focus, TEXTAREA:focus	{ background-color: #666;}
+
+
+/* font colors */
+
+body, legend									{ color: #aaa;}
+a											{ color: #ccc;}
+a:hover 										{ color: #fff;}
+INPUT.rateButton							{ color: #fff;}
+H1, H3, INPUT.rateButtonSelected 			{ color: #ccc;}
+.message									{ color: #fff;}
+.commentContent .comments_toggle:hover		{ color: #fff;}
+INPUT[type="text"], INPUT[type="password"],
+INPUT[type="button"], INPUT[type="submit"],
+INPUT[type="reset"], INPUT[type="file"],
+SELECT, TEXTAREA							{ color: #ccc;}
+INPUT:focus, SELECT:focus, TEXTAREA:focus	{ color: #fff;}
+
+
+/* borders */
+
+#content,.content, .content .titrePage		{ border-bottom: 2px solid #444;}
+#imageHeaderBar 								{ border: solid 0 #444; border-bottom-width:2px;}
+#copyright								 	{ border-top-width:2px;}
+#content .calendarTitleBar 					{ border-bottom: none;}
+.calendarTitle								{ border-top: 2px solid #444;}
+.switchBox 									{ border: 1px solid #000;}
+.switchBoxTitle 								{ border-bottom: 1px solid #444;}
+INPUT, SELECT, TEXTAREA 			{ border: 1px solid #666;}
+FIELDSET {border: 2px solid #444;}
+
+/* form */
+legend {font-style:normal;}
+#qsearchInput {margin-left:-20px}
+
+/* icons */ 
+
+.pwg-icon									{ background-image: url(icon/icons_sprite.png);}
+A:hover .pwg-icon 							{ background-image: url(icon/icons_sprite-hover.png);}
+
+
+/* general rules */
+
+body 		{ margin: 5px 0;}
+a:hover 		{ border-bottom: none;}
+#copyright	{ padding:0 4px 0 0; text-align:right;}
+
+
+/* content */
+
+#the_page  #content.menushown, #the_page > .content.menushown, .contentWithMenu 	{ margin-left: 240px;}
+#the_page  #content.menuhidden, #the_page > .content.menuhidden 					{ margin-left: 35px;}
+#the_page  #content, #the_page > .content											{ margin-right: 0;}
+
+#content,.content 			{ margin-bottom: 4px; padding-bottom: 4px;}
+#thePicturePage #content 	{ padding-bottom: 0;}
+.content .titrePage 			{ padding:0; margin-bottom:4px;}
+.content .titrePage H2 		{ line-height: 20px; padding: 8px 0 0 2px;}
+
+
+/* menubar */
+
+#menubar  {
+	display: inline;
+	width: 230px;
+	float: left;
+	margin: 28px 8px 10px 0;
+	padding: 0;
+}
+#menubar DT				{ text-align: left;}
+#menubar dd 				{ padding: 0 0 1em 1em;}
+#menubar .pwg-icon-filter { display: none;}
+
+#quickconnect FIELDSET {
+    margin: 0 10px 0 -10px;
+    border: 2px solid #444444;
+}
+
+/* switchers */
+
+#menuSwitcher {
+	display: block;
+	text-align: center;
+	height: 32px;
+	cursor: pointer;
+	float: left;
+	margin: 28px 0 0 -34px;
+}
+
+
+#imageInfos, #infoSwitcher.infohidden 		{ border-radius: 10px 0 0 10px;}
+#menubar, #the_page #menuSwitcher.menuhidden	{ border-radius: 0 10px 10px 0;}
+#the_page #menuSwitcher.menuhidden 			{ width: 25px; margin-left: 0;}
+
+#infoSwitcher {
+	display: block;
+	text-align: center;
+	height: 32px;
+	cursor: pointer;
+	position:absolute;
+	left:75%;
+	top:0;
+	margin: 10px 0 0 7px;
+	z-index:99;
+}
+
+#infoSwitcher.infohidden {
+	width:25px;
+	top:10px;
+	right:0;
+	left:auto;
+	margin:0;
+}
+
+#slideshow #theImage			{ width: 100%; margin: auto; overflow: visible;}
+#theImage.infohidden 		{ width: 100%;}
+
+#commentsSwitcher 					{ float: left; margin: 2px 0; cursor:pointer;}
+.noCommentContent #commentsSwitcher	{ display: none;}
+
+.switchArrow				{ width: 16px; height: 16px; margin: 8px 5px 8px 4px;}
+.switchArrow				{ background: transparent url("icon/arrows_ccc.png");}
+.switchArrow:hover 			{ background: transparent url("icon/arrows_fff.png");}
+.menuhidden .switchArrow		{ background-position: 0 0;}
+.menushown   .switchArrow		{ background-position: -16px 0;}
+.infohidden .switchArrow		{ background-position: -16px 0;}
+.infoshown   .switchArrow		{ background-position: 0 0;}
+.commentshidden .switchArrow	{ background-position: -48px 0;}
+.commentsshown   .switchArrow	{ background-position: -32px 0;}
+
+
+/* switchboxes */
+
+.switchBox {
+    border-radius: 4px 4px 4px 4px;
+    padding: 0.5em 10px;
+    text-align: left;
+    z-index: 100;
+}
+.derivativeSizeDetails				{ display: none;}
+
+/* thumbnails */
+
+#thumbnails  						{ padding-top: 5px;}
+.thumbnailCategory .illustration,
+.commentElement .illustration 		{ margin: 2px; text-align: center;}
+
+
+/* picture page */
+
+.contentWithMenu #imageHeaderBar 	{ padding: 0;}
+#imageHeaderBar 						{ padding: 0 0 0 10px;}
+#imageHeaderBar 						{ width: auto;}
+#imageHeaderBar h2 					{ font-size: 100%; font-weight: inherit;}
+#imageHeaderBar .browsePath {
+	display:inline-block;
+	float:left;
+	font-size:120%;
+	line-height:20px;
+	padding: 8px 0 0 2px;
+	font-weight:bold;
+	margin:0;
+}
+#imageToolBar .imageNumber 			{ display: inline-block; float: right; line-height: 26px; margin: 0 2px 0 0; min-width: 40px; text-align: center;}
+#imageToolBar 						{ margin-top: -28px; margin-bottom: 0; float: right;}
+#thePicturePage .pwg-button 			{ width: 26px;}
+#thePicturePage .actionButtons 		{ margin-right: 26px;}
+
+#theImageAndInfos {
+	display: block;
+	width: 100%;
+	position: relative;
+}
+#theImage {
+	display: inline-block;
+	width: 75%;
+	vertical-align: top;
+	overflow: auto;
+	padding: 10px 0 5px 0;
+}
+
+.rateButtonStarFull 					{ background: url('icon/rating-stars.png') no-repeat -16px center; width:16px;}
+.rateButtonStarEmpty 				{ background: url('icon/rating-stars.png') no-repeat 0 center; width:16px;}
+
+
+/* image infos */
+
+#imageInfos {
+	display: inline-block;
+	width: 24.5%;
+	vertical-align: top;
+	padding-top: 35px;
+	padding-bottom: 5px;
+	margin: 10px 0 10px 0.5%;
+	word-wrap:break-word;
+}
+
+#imageInfos .navThumbs 				{ width: 250px; height: 130px; margin: auto; padding: 0 5px;}
+#imageInfos .navThumb 				{ position: relative; margin: 0; overflow: hidden;}
+#imageInfos #linkPrev 				{ float: left;}
+#imageInfos #linkNext			  	{ float: right;}
+#imageInfos .prevThumbHover 			{ background: transparent url(icon/none.png) no-repeat center center;}
+#imageInfos .prevThumbHover:hover 	{ background: transparent url(icon/img_prev.png) no-repeat center center;}
+#imageInfos .nextThumbHover 			{ background: transparent url(icon/none.png) no-repeat center center;}
+#imageInfos .nextThumbHover:hover 	{ background: transparent url(icon/img_next.png) no-repeat center center;}
+
+#imageInfos dl.imageInfoTable		{ display: block; padding: 0 15px; margin: 12px auto;}
+#imageInfos .imageInfo 				{ display: block; line-height: 16px;}
+#imageInfos .imageInfo dt				{ display: block; font-weight: bold; text-align: left; padding: 0;}
+#imageInfos .imageInfo dd			{ display: block; text-align: left; margin: 0 0 5px 20px;}
+#imageInfos h3						{ margin: 20px 0 10px;}
+
+
+/* image comments */
+
+#thePicturePage #comments 			{ padding: 2px 5px;}
+#thePicturePage #comments h3 			{ margin: 10px 0;}
+#thePicturePage #comments form 		{ margin: 10px 0;}
+#thePicturePage #comments fieldset		{ margin: 0 1em;}
+
+.commentshidden #pictureComments		{ display: none;}
+.commentContent .comments_toggle 	{ cursor: pointer;}
+
+#commentAdd, #pictureCommentList 	{ width: 48%; padding: 0 1%;}
+#commentAdd  						{ float: left; }
+#pictureCommentList 					{ float: right; }
+
+#commentAdd input[type="text"],
+#commentAdd textarea {
+	width: 95%;
+	font-family: Arial,Helvetica,sans-serif;
+	font-size: 100%;
+}
+#commentAdd.fixed {  position: fixed; top: 10px; }
+#pictureCommentList .commentsOrder	{ float: left; margin-bottom: 5px;}
+#pictureCommentList .navigationBar	{ float: right; margin-bottom: 5px;}
+#pictureComments h4					{ margin: 0;}
+#pictureComments form p				{ margin: 5px 0;}
+#pictureComments form p textarea		{ margin: 10px 0;}
+#pictureComments INPUT				{ margin: 10px;}
+#pictureComments INPUT[type=submit]	{ margin: 0;}
+.commentElement .description 		{ padding: 5px;} 
+
+
+/* calendar */
+
+.calendarViews		{ margin-top: 4px;}
+
+/* plugins */
+
+#the_page .content .stuffs 		{ margin: 0!important}
+.categoryActions .theme_menuf 	{ display: none;}
Index: /tags/2.6.0RC1/themes/elegant/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/elegant/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/elegant/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,27 @@
+<?php
+/*
+Theme Name: elegant
+Version: 2.5.1
+Description: Dark background, grayscale.
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=685
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+$themeconf = array(
+  'name'  => 'elegant',
+  'parent' => 'default',
+  'local_head'  => 'local_head.tpl'
+);
+// Need upgrade?
+global $conf;
+include(PHPWG_THEMES_PATH.'elegant/admin/upgrade.inc.php');
+
+add_event_handler('init', 'set_config_values_elegant');
+function set_config_values_elegant()
+{
+  global $conf, $template;
+  $config = unserialize( $conf['elegant'] );
+  $template->assign( 'elegant', $config );
+}
+
+?>
Index: /tags/2.6.0RC1/themes/index.php
===================================================================
--- /tags/2.6.0RC1/themes/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/smartpocket/admin/admin.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/admin.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/admin.inc.php	(revision 25596)
@@ -0,0 +1,29 @@
+<?php
+
+// Need upgrade?
+global $conf;
+include(PHPWG_THEMES_PATH.'smartpocket/admin/upgrade.inc.php');
+
+load_language('theme.lang', PHPWG_THEMES_PATH.'smartpocket/');
+
+$config_send= array();
+
+if(isset($_POST['submit_smartpocket']))
+{
+  $config_send['loop']=(isset($_POST['loop']) and $_POST['loop']=="false") ? false : true;
+  $config_send['autohide']=(isset($_POST['autohide']) and $_POST['autohide']=="0") ? 0 : 5000;
+  
+  $conf['smartpocket'] = serialize($config_send);
+  conf_update_param('smartpocket', pwg_db_real_escape_string($conf['smartpocket']));
+
+  array_push($page['infos'], l10n('Information data registered in database'));
+}
+
+$template->set_filenames(array(
+    'theme_admin_content' => dirname(__FILE__) . '/admin.tpl'));
+
+$template->assign('options', unserialize($conf['smartpocket']));
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'theme_admin_content');
+  
+?>
Index: /tags/2.6.0RC1/themes/smartpocket/admin/admin.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/admin.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/admin.tpl	(revision 25596)
@@ -0,0 +1,35 @@
+{combine_css path="themes/default/js/ui/theme/jquery.ui.button.css"}
+{combine_css path="themes/smartpocket/admin/jquery.ui.button.css"}
+{footer_script require='jquery.ui.button'}
+{literal}
+jQuery(document).ready(function(){
+  jQuery( ".radio" ).buttonset();
+});
+{/literal}
+{/footer_script}
+
+<div class="titrePage">
+  <h2>{'Smartpocket, Configuration Page'|@translate}</h2>
+</div>
+<form method="post" class="properties" action="" ENCTYPE="multipart/form-data" name="form" class="properties">
+<div id="configContent">
+  <fieldset>
+    <legend>{'Slideshow Options'|@translate}</legend>
+    <ul>
+      <li class="radio" >
+        <label for="loop"><span class="property">{'Loop the slideshow'|@translate}</span>&nbsp;</label>
+        <input type="radio" id="loop_true" name="loop" value="true" {if $options.loop}checked="checked"{/if}><label for="loop_true">{'Yes'|@translate}</label>
+        <input type="radio" id="loop_false" name="loop" value="false" {if !$options.loop}checked="checked"{/if}><label for="loop_false">{'No'|@translate}</label>
+      </li>
+      <li class="radio" >
+        <label for="autohide"><span class="property">{'Autohide the bar of the slideshow'|@translate}</span>&nbsp;</label>
+        <input type="radio" id="autohide_on" name="autohide" value="5000" {if $options.autohide==5000}checked="checked"{/if}><label for="autohide_on">{'Yes'|@translate}</label>
+        <input type="radio" id="autohide_off" name="autohide" value="0" {if $options.autohide==0}checked="checked"{/if}><label for="autohide_off">{'No'|@translate}</label>
+      </li>
+    </ul>
+  </fieldset>
+</div>
+<p>
+  <input class="submit" type="submit" value="{'Submit'|@translate}" name="submit_smartpocket" />
+</p>
+</form>
Index: /tags/2.6.0RC1/themes/smartpocket/admin/index.php
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/index.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008      Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/themes/smartpocket/admin/jquery.ui.button.css
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/jquery.ui.button.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/jquery.ui.button.css	(revision 25596)
@@ -0,0 +1,571 @@
+/*! jQuery UI - v1.10.3 - 2013-06-16
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.button.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+#content .ui-helper-hidden {
+	display: none;
+}
+#content .ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+#content .ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+#content .ui-helper-clearfix:before,
+#content .ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+#content .ui-helper-clearfix:after {
+	clear: both;
+}
+#content .ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+#content .ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+#content .ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+#content .ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+#content .ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+#content .ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+#content .ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+#content .ui-button,
+#content .ui-button:link,
+#content .ui-button:visited,
+#content .ui-button:hover,
+#content .ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+#content .ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+#content button.ui-button-icon-only {
+	width: 2.4em;
+}
+#content .ui-button-icons-only {
+	width: 3.4em;
+}
+#content button.ui-button-icons-only {
+	width: 3.7em;
+}
+
+/* button text element */
+#content .ui-button .ui-button-text {
+	display: block;
+	line-height: normal;
+}
+#content .ui-button-text-only .ui-button-text {
+	padding: .4em 1em;
+}
+#content .ui-button-icon-only .ui-button-text,
+#content .ui-button-icons-only .ui-button-text {
+	padding: .4em;
+	text-indent: -9999999px;
+}
+#content .ui-button-text-icon-primary .ui-button-text,
+#content .ui-button-text-icons .ui-button-text {
+	padding: .4em 1em .4em 2.1em;
+}
+#content .ui-button-text-icon-secondary .ui-button-text,
+#content .ui-button-text-icons .ui-button-text {
+	padding: .4em 2.1em .4em 1em;
+}
+#content .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 */
+#content input.ui-button {
+	padding: .4em 1em;
+}
+
+/* button icon element(s) */
+#content .ui-button-icon-only .ui-icon,
+#content .ui-button-text-icon-primary .ui-icon,
+#content .ui-button-text-icon-secondary .ui-icon,
+#content .ui-button-text-icons .ui-icon,
+#content .ui-button-icons-only .ui-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+}
+#content .ui-button-icon-only .ui-icon {
+	left: 50%;
+	margin-left: -8px;
+}
+#content .ui-button-text-icon-primary .ui-button-icon-primary,
+#content .ui-button-text-icons .ui-button-icon-primary,
+#content .ui-button-icons-only .ui-button-icon-primary {
+	left: .5em;
+}
+#content .ui-button-text-icon-secondary .ui-button-icon-secondary,
+#content .ui-button-text-icons .ui-button-icon-secondary,
+#content .ui-button-icons-only .ui-button-icon-secondary {
+	right: .5em;
+}
+
+/* button sets */
+#content .ui-buttonset {
+	margin-right: 7px;
+}
+#content .ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+#content input.ui-button::-moz-focus-inner,
+#content button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+
+/* Component containers
+----------------------------------*/
+#content .ui-widget-content {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
+	color: #222222;
+}
+#content .ui-widget-content a {
+	color: #222222;
+}
+#content .ui-widget-header {
+	border: 1px solid #aaaaaa;
+	background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
+	color: #222222;
+	font-weight: bold;
+}
+#content .ui-widget-header a {
+	color: #222222;
+}
+
+/* Interaction states
+----------------------------------*/
+#content .ui-state-default,
+#content .ui-widget-content .ui-state-default,
+#content .ui-widget-header .ui-state-default {
+	border: 1px solid #d3d3d3;
+	background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #555555;
+}
+#content .ui-state-default a,
+#content .ui-state-default a:link,
+#content .ui-state-default a:visited {
+	color: #555555;
+	text-decoration: none;
+}
+#content .ui-state-hover,
+#content .ui-widget-content .ui-state-hover,
+#content .ui-widget-header .ui-state-hover,
+#content .ui-state-focus,
+#content .ui-widget-content .ui-state-focus,
+#content .ui-widget-header .ui-state-focus {
+	border: 1px solid #999999;
+	background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+#content .ui-state-hover a,
+#content .ui-state-hover a:hover,
+#content .ui-state-hover a:link,
+#content .ui-state-hover a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+#content .ui-state-active,
+#content .ui-widget-content .ui-state-active,
+#content .ui-widget-header .ui-state-active {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+#content .ui-state-active a,
+#content .ui-state-active a:link,
+#content .ui-state-active a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+#content .ui-state-highlight,
+#content .ui-widget-content .ui-state-highlight,
+#content .ui-widget-header .ui-state-highlight {
+	border: 1px solid #fcefa1;
+	background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
+	color: #363636;
+}
+#content .ui-state-highlight a,
+#content .ui-widget-content .ui-state-highlight a,
+#content .ui-widget-header .ui-state-highlight a {
+	color: #363636;
+}
+#content .ui-state-error,
+#content .ui-widget-content .ui-state-error,
+#content .ui-widget-header .ui-state-error {
+	border: 1px solid #cd0a0a;
+	background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
+	color: #cd0a0a;
+}
+#content .ui-state-error a,
+#content .ui-widget-content .ui-state-error a,
+#content .ui-widget-header .ui-state-error a {
+	color: #cd0a0a;
+}
+#content .ui-state-error-text,
+#content .ui-widget-content .ui-state-error-text,
+#content .ui-widget-header .ui-state-error-text {
+	color: #cd0a0a;
+}
+#content .ui-priority-primary,
+#content .ui-widget-content .ui-priority-primary,
+#content .ui-widget-header .ui-priority-primary {
+	font-weight: bold;
+}
+#content .ui-priority-secondary,
+#content .ui-widget-content .ui-priority-secondary,
+#content .ui-widget-header .ui-priority-secondary {
+	opacity: .7;
+	filter:Alpha(Opacity=70);
+	font-weight: normal;
+}
+#content .ui-state-disabled,
+#content .ui-widget-content .ui-state-disabled,
+#content .ui-widget-header .ui-state-disabled {
+	opacity: .35;
+	filter:Alpha(Opacity=35);
+	background-image: none;
+}
+#content .ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+#content .ui-icon {
+	width: 16px;
+	height: 16px;
+}
+#content .ui-icon,
+#content .ui-widget-content .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png);
+}
+#content .ui-widget-header .ui-icon {
+	background-image: url(images/ui-icons_222222_256x240.png);
+}
+#content .ui-state-default .ui-icon {
+	background-image: url(images/ui-icons_888888_256x240.png);
+}
+#content .ui-state-hover .ui-icon,
+#content .ui-state-focus .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png);
+}
+#content .ui-state-active .ui-icon {
+	background-image: url(images/ui-icons_454545_256x240.png);
+}
+#content .ui-state-highlight .ui-icon {
+	background-image: url(images/ui-icons_2e83ff_256x240.png);
+}
+#content .ui-state-error .ui-icon,
+#content .ui-state-error-text .ui-icon {
+	background-image: url(images/ui-icons_cd0a0a_256x240.png);
+}
+
+/* positioning */
+#content .ui-icon-blank { background-position: 16px 16px; }
+#content .ui-icon-carat-1-n { background-position: 0 0; }
+#content .ui-icon-carat-1-ne { background-position: -16px 0; }
+#content .ui-icon-carat-1-e { background-position: -32px 0; }
+#content .ui-icon-carat-1-se { background-position: -48px 0; }
+#content .ui-icon-carat-1-s { background-position: -64px 0; }
+#content .ui-icon-carat-1-sw { background-position: -80px 0; }
+#content .ui-icon-carat-1-w { background-position: -96px 0; }
+#content .ui-icon-carat-1-nw { background-position: -112px 0; }
+#content .ui-icon-carat-2-n-s { background-position: -128px 0; }
+#content .ui-icon-carat-2-e-w { background-position: -144px 0; }
+#content .ui-icon-triangle-1-n { background-position: 0 -16px; }
+#content .ui-icon-triangle-1-ne { background-position: -16px -16px; }
+#content .ui-icon-triangle-1-e { background-position: -32px -16px; }
+#content .ui-icon-triangle-1-se { background-position: -48px -16px; }
+#content .ui-icon-triangle-1-s { background-position: -64px -16px; }
+#content .ui-icon-triangle-1-sw { background-position: -80px -16px; }
+#content .ui-icon-triangle-1-w { background-position: -96px -16px; }
+#content .ui-icon-triangle-1-nw { background-position: -112px -16px; }
+#content .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+#content .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+#content .ui-icon-arrow-1-n { background-position: 0 -32px; }
+#content .ui-icon-arrow-1-ne { background-position: -16px -32px; }
+#content .ui-icon-arrow-1-e { background-position: -32px -32px; }
+#content .ui-icon-arrow-1-se { background-position: -48px -32px; }
+#content .ui-icon-arrow-1-s { background-position: -64px -32px; }
+#content .ui-icon-arrow-1-sw { background-position: -80px -32px; }
+#content .ui-icon-arrow-1-w { background-position: -96px -32px; }
+#content .ui-icon-arrow-1-nw { background-position: -112px -32px; }
+#content .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+#content .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+#content .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+#content .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+#content .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+#content .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+#content .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+#content .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+#content .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+#content .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+#content .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+#content .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+#content .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+#content .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+#content .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+#content .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+#content .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+#content .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+#content .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+#content .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+#content .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+#content .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+#content .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+#content .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+#content .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+#content .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+#content .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+#content .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+#content .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+#content .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+#content .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+#content .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+#content .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+#content .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+#content .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+#content .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+#content .ui-icon-arrow-4 { background-position: 0 -80px; }
+#content .ui-icon-arrow-4-diag { background-position: -16px -80px; }
+#content .ui-icon-extlink { background-position: -32px -80px; }
+#content .ui-icon-newwin { background-position: -48px -80px; }
+#content .ui-icon-refresh { background-position: -64px -80px; }
+#content .ui-icon-shuffle { background-position: -80px -80px; }
+#content .ui-icon-transfer-e-w { background-position: -96px -80px; }
+#content .ui-icon-transferthick-e-w { background-position: -112px -80px; }
+#content .ui-icon-folder-collapsed { background-position: 0 -96px; }
+#content .ui-icon-folder-open { background-position: -16px -96px; }
+#content .ui-icon-document { background-position: -32px -96px; }
+#content .ui-icon-document-b { background-position: -48px -96px; }
+#content .ui-icon-note { background-position: -64px -96px; }
+#content .ui-icon-mail-closed { background-position: -80px -96px; }
+#content .ui-icon-mail-open { background-position: -96px -96px; }
+#content .ui-icon-suitcase { background-position: -112px -96px; }
+#content .ui-icon-comment { background-position: -128px -96px; }
+#content .ui-icon-person { background-position: -144px -96px; }
+#content .ui-icon-print { background-position: -160px -96px; }
+#content .ui-icon-trash { background-position: -176px -96px; }
+#content .ui-icon-locked { background-position: -192px -96px; }
+#content .ui-icon-unlocked { background-position: -208px -96px; }
+#content .ui-icon-bookmark { background-position: -224px -96px; }
+#content .ui-icon-tag { background-position: -240px -96px; }
+#content .ui-icon-home { background-position: 0 -112px; }
+#content .ui-icon-flag { background-position: -16px -112px; }
+#content .ui-icon-calendar { background-position: -32px -112px; }
+#content .ui-icon-cart { background-position: -48px -112px; }
+#content .ui-icon-pencil { background-position: -64px -112px; }
+#content .ui-icon-clock { background-position: -80px -112px; }
+#content .ui-icon-disk { background-position: -96px -112px; }
+#content .ui-icon-calculator { background-position: -112px -112px; }
+#content .ui-icon-zoomin { background-position: -128px -112px; }
+#content .ui-icon-zoomout { background-position: -144px -112px; }
+#content .ui-icon-search { background-position: -160px -112px; }
+#content .ui-icon-wrench { background-position: -176px -112px; }
+#content .ui-icon-gear { background-position: -192px -112px; }
+#content .ui-icon-heart { background-position: -208px -112px; }
+#content .ui-icon-star { background-position: -224px -112px; }
+#content .ui-icon-link { background-position: -240px -112px; }
+#content .ui-icon-cancel { background-position: 0 -128px; }
+#content .ui-icon-plus { background-position: -16px -128px; }
+#content .ui-icon-plusthick { background-position: -32px -128px; }
+#content .ui-icon-minus { background-position: -48px -128px; }
+#content .ui-icon-minusthick { background-position: -64px -128px; }
+#content .ui-icon-close { background-position: -80px -128px; }
+#content .ui-icon-closethick { background-position: -96px -128px; }
+#content .ui-icon-key { background-position: -112px -128px; }
+#content .ui-icon-lightbulb { background-position: -128px -128px; }
+#content .ui-icon-scissors { background-position: -144px -128px; }
+#content .ui-icon-clipboard { background-position: -160px -128px; }
+#content .ui-icon-copy { background-position: -176px -128px; }
+#content .ui-icon-contact { background-position: -192px -128px; }
+#content .ui-icon-image { background-position: -208px -128px; }
+#content .ui-icon-video { background-position: -224px -128px; }
+#content .ui-icon-script { background-position: -240px -128px; }
+#content .ui-icon-alert { background-position: 0 -144px; }
+#content .ui-icon-info { background-position: -16px -144px; }
+#content .ui-icon-notice { background-position: -32px -144px; }
+#content .ui-icon-help { background-position: -48px -144px; }
+#content .ui-icon-check { background-position: -64px -144px; }
+#content .ui-icon-bullet { background-position: -80px -144px; }
+#content .ui-icon-radio-on { background-position: -96px -144px; }
+#content .ui-icon-radio-off { background-position: -112px -144px; }
+#content .ui-icon-pin-w { background-position: -128px -144px; }
+#content .ui-icon-pin-s { background-position: -144px -144px; }
+#content .ui-icon-play { background-position: 0 -160px; }
+#content .ui-icon-pause { background-position: -16px -160px; }
+#content .ui-icon-seek-next { background-position: -32px -160px; }
+#content .ui-icon-seek-prev { background-position: -48px -160px; }
+#content .ui-icon-seek-end { background-position: -64px -160px; }
+#content .ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+#content .ui-icon-seek-first { background-position: -80px -160px; }
+#content .ui-icon-stop { background-position: -96px -160px; }
+#content .ui-icon-eject { background-position: -112px -160px; }
+#content .ui-icon-volume-off { background-position: -128px -160px; }
+#content .ui-icon-volume-on { background-position: -144px -160px; }
+#content .ui-icon-power { background-position: 0 -176px; }
+#content .ui-icon-signal-diag { background-position: -16px -176px; }
+#content .ui-icon-signal { background-position: -32px -176px; }
+#content .ui-icon-battery-0 { background-position: -48px -176px; }
+#content .ui-icon-battery-1 { background-position: -64px -176px; }
+#content .ui-icon-battery-2 { background-position: -80px -176px; }
+#content .ui-icon-battery-3 { background-position: -96px -176px; }
+#content .ui-icon-circle-plus { background-position: 0 -192px; }
+#content .ui-icon-circle-minus { background-position: -16px -192px; }
+#content .ui-icon-circle-close { background-position: -32px -192px; }
+#content .ui-icon-circle-triangle-e { background-position: -48px -192px; }
+#content .ui-icon-circle-triangle-s { background-position: -64px -192px; }
+#content .ui-icon-circle-triangle-w { background-position: -80px -192px; }
+#content .ui-icon-circle-triangle-n { background-position: -96px -192px; }
+#content .ui-icon-circle-arrow-e { background-position: -112px -192px; }
+#content .ui-icon-circle-arrow-s { background-position: -128px -192px; }
+#content .ui-icon-circle-arrow-w { background-position: -144px -192px; }
+#content .ui-icon-circle-arrow-n { background-position: -160px -192px; }
+#content .ui-icon-circle-zoomin { background-position: -176px -192px; }
+#content .ui-icon-circle-zoomout { background-position: -192px -192px; }
+#content .ui-icon-circle-check { background-position: -208px -192px; }
+#content .ui-icon-circlesmall-plus { background-position: 0 -208px; }
+#content .ui-icon-circlesmall-minus { background-position: -16px -208px; }
+#content .ui-icon-circlesmall-close { background-position: -32px -208px; }
+#content .ui-icon-squaresmall-plus { background-position: -48px -208px; }
+#content .ui-icon-squaresmall-minus { background-position: -64px -208px; }
+#content .ui-icon-squaresmall-close { background-position: -80px -208px; }
+#content .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+#content .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+#content .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+#content .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+#content .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+#content .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+#content .ui-corner-all,
+#content .ui-corner-top,
+#content .ui-corner-left,
+#content .ui-corner-tl {
+	border-top-left-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-top,
+#content .ui-corner-right,
+#content .ui-corner-tr {
+	border-top-right-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-bottom,
+#content .ui-corner-left,
+#content .ui-corner-bl {
+	border-bottom-left-radius: 4px;
+}
+#content .ui-corner-all,
+#content .ui-corner-bottom,
+#content .ui-corner-right,
+#content .ui-corner-br {
+	border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+#content .ui-widget-overlay {
+	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+}
+#content .ui-widget-shadow {
+	margin: -8px 0 0 -8px;
+	padding: 8px;
+	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+	border-radius: 8px;
+}
Index: /tags/2.6.0RC1/themes/smartpocket/admin/maintain.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/maintain.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/maintain.inc.php	(revision 25596)
@@ -0,0 +1,29 @@
+<?php
+
+function theme_activate($id, $version, &$errors)
+{
+  global $prefixeTable, $conf;
+
+  if (!isset($conf['smartpocket']))
+  {
+    $config = array(
+      'loop'            => true,//true - false
+      'autohide'            => 5000,//5000 - 0
+    );
+      
+    $query = "
+INSERT INTO " . CONFIG_TABLE . " (param,value,comment)
+VALUES ('smartpocket' , '".pwg_db_real_escape_string(serialize($config))."' , 'loop#autohide');";
+    pwg_query($query);
+  }
+}
+
+function theme_delete()
+{
+  global $prefixeTable;
+
+  $query = 'DELETE FROM ' . CONFIG_TABLE . ' WHERE param="smartpocket" ;';
+  pwg_query($query);
+}
+
+?>
Index: /tags/2.6.0RC1/themes/smartpocket/admin/upgrade.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/admin/upgrade.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/admin/upgrade.inc.php	(revision 25596)
@@ -0,0 +1,29 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+global $prefixeTable, $conf;
+
+if (!isset($conf['smartpocket']))
+{
+  $config = array(
+    'loop'            => true,//true - false
+    'autohide'            => 5000,//5000 - 0
+  );
+  $query = "
+INSERT INTO " . CONFIG_TABLE . " (param,value,comment)
+VALUES ('smartpocket' , '".pwg_db_real_escape_string(serialize($config))."' , 'loop#autohide');";
+  pwg_query($query);
+  load_conf_from_db();
+}
+elseif (count(unserialize( $conf['smartpocket'] ))!=2)
+{
+  $conff=unserialize($conf['smartpocket']);
+  $config = array(
+    'loop'            => (isset($conff['loop'])) ? $conff['loop'] :true,
+    'autohide'            => (isset($conff['autohide'])) ? $conff['autohide'] :5000,
+  );
+  conf_update_param('smartpocket', pwg_db_real_escape_string(serialize($config)));
+  load_conf_from_db();
+}
+?>
Index: /tags/2.6.0RC1/themes/smartpocket/jquery.mobile.css
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/jquery.mobile.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/jquery.mobile.css	(revision 25596)
@@ -0,0 +1,3366 @@
+/*
+* jQuery Mobile 1.3.1
+* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Mon Apr 8 2013 19:41:28 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+	border: 1px solid 		#333 /*{a-bar-border}*/;
+	background: 			#111 /*{a-bar-background-color}*/;
+	color: 					#fff /*{a-bar-color}*/;
+	font-weight: bold;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+	color: #fff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+	color: #7cc4e7 /*{a-bar-link-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+	color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+	color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+	border: 1px solid 		#444 /*{a-body-border}*/;
+	background: 			#222 /*{a-body-background-color}*/;
+	color: 					#fff /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+	font-weight: normal;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);	
+}
+.ui-overlay-a {
+	background-image: none;
+	border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+	color: 	#fff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+	color: #2489ce /*{a-body-link-color}*/;
+	font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+	color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+	color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+	border: 1px solid 		#111 /*{a-bup-border}*/;
+	background: 			#333 /*{a-bup-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+	color: 					#fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+	border: 1px solid 		#000 /*{a-bhover-border}*/;
+	background: 			#444 /*{a-bhover-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+	color: 					#fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+	border: 1px solid 		#000 /*{a-bdown-border}*/;
+	background: 			#222 /*{a-bdown-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+	color: 					#fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+	text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+	border: 1px solid 		#456f9a /*{b-bar-border}*/;
+	background: 			#5e87b0 /*{b-bar-background-color}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	font-weight: bold;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+	color: 	#fff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+	color: #ddf0f8 /*{b-bar-link-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+	color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+	color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+	border: 1px solid 		#999 /*{b-body-border}*/;
+	background: 			#f3f3f3 /*{b-body-background-color}*/;
+	color: 					#222 /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+	font-weight: normal;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+	background-image: none;
+	border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+	color: 	#333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+	color: #2489ce /*{b-body-link-color}*/;
+	font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+	color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+	color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+	border: 1px solid 		#044062 /*{b-bup-border}*/;
+	background: 			#396b9e /*{b-bup-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+	color: 					#fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+	border: 1px solid 		#00415e /*{b-bhover-border}*/;
+	background: 			#4b88b6 /*{b-bhover-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+	color: 					#fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+	border: 1px solid 		#225377 /*{b-bdown-border}*/;
+	background: 			#4e89c5 /*{b-bdown-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+	color: 					#fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+	text-decoration: none;
+}
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+	border: 1px solid 		#b3b3b3 /*{c-bar-border}*/;
+	background: 			#eee /*{c-bar-background-color}*/;
+	color: 					#3e3e3e /*{c-bar-color}*/;
+	font-weight: bold;
+	text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/ 	#fff /*{c-bar-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+	color: 	#3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+	color: #7cc4e7 /*{c-bar-link-color}*/;
+	font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+	color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+	color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+	border: 1px solid 		#aaa /*{c-body-border}*/;
+	color: 					#333 /*{c-body-color}*/;
+	text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+	background: 			#f9f9f9 /*{c-body-background-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+	background-image: none;
+	border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+	color: 	#333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+	color: #2489ce /*{c-body-link-color}*/;
+	font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+	color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+	color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+	border: 1px solid 		#ccc /*{c-bup-border}*/;
+	background: 			#eee /*{c-bup-background-color}*/;
+	font-weight: bold;
+	color: 					#222 /*{c-bup-color}*/;
+	text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+	color: 					#2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+	border: 1px solid 		#bbb /*{c-bhover-border}*/;
+	background: 			#dfdfdf /*{c-bhover-background-color}*/;
+	font-weight: bold;
+	color: 					#222 /*{c-bhover-color}*/;
+	text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+	color: 					#2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+	border: 1px solid 		#bbb /*{c-bdown-border}*/;
+	background: 			#d6d6d6 /*{c-bdown-background-color}*/;
+	font-weight: bold;
+	color: 					#222 /*{c-bdown-color}*/;
+	text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+	color: 					#2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+	text-decoration: none;
+}
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+	border: 1px solid 		#bbb /*{d-bar-border}*/;
+	background: 			#bbb /*{d-bar-background-color}*/;
+	color: 					#333 /*{d-bar-color}*/;
+	font-weight: bold;
+	text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-d .ui-link-inherit {
+	color: 	#333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+	color: #2489ce /*{d-bar-link-color}*/;
+	font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+	color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+	color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+	border: 1px solid 		#bbb /*{d-body-border}*/;
+	color: 					#333 /*{d-body-color}*/;
+	text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ 	#fff /*{d-body-shadow-color}*/;
+	background: 			#fff /*{d-body-background-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+	background-image: none;
+	border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+	color: 	#333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+	color: #2489ce /*{d-body-link-color}*/;
+	font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+	color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+	color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+	border: 1px solid 		#bbb /*{d-bup-border}*/;
+	background: 			#fff /*{d-bup-background-color}*/;
+	font-weight: bold;
+	color: 					#333 /*{d-bup-color}*/;
+	text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+	color: 					#333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+	border: 1px solid 		#aaa /*{d-bhover-border}*/;
+	background: 			#eee /*{d-bhover-background-color}*/;
+	font-weight: bold;
+	color: 					#333 /*{d-bhover-color}*/;
+	cursor: pointer;
+	text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ 	#fff /*{d-bhover-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+	color: 					#333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+	border: 1px solid 		#aaa /*{d-bdown-border}*/;
+	background: 			#eee /*{d-bdown-background-color}*/;
+	font-weight: bold;
+	color: 					#333 /*{d-bdown-color}*/;
+	text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ 	#fff /*{d-bdown-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+	color: 					#333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+	text-decoration: none;
+}
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+	border: 1px solid 		#f7c942 /*{e-bar-border}*/;
+	background: 			#fadb4e /*{e-bar-background-color}*/;
+	color: 					#333 /*{e-bar-color}*/;
+	font-weight: bold;
+	text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ 	#fff /*{e-bar-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+	color: 	#333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+	color: #2489ce /*{e-bar-link-color}*/;
+	font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+	color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+	color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+	border: 1px solid 		#f7c942 /*{e-body-border}*/;
+	color: 					#222 /*{e-body-color}*/;
+	text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ 	#fff /*{e-body-shadow-color}*/;
+	background: 			#fff9df /*{e-body-background-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+	background-image: none;
+	border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+	color: 	#222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+	color: #2489ce /*{e-body-link-color}*/;
+	font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+	color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+	color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+	border: 1px solid 		#f4c63f /*{e-bup-border}*/;
+	background: 			#fadb4e /*{e-bup-background-color}*/;
+	font-weight: bold;
+	color: 					#222 /*{e-bup-color}*/;
+	text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ 	#fff /*{e-bup-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+	color: 					#222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+	border: 1px solid 		#f2c43d /*{e-bhover-border}*/;
+	background: 			#fbe26f /*{e-bhover-background-color}*/;
+	font-weight: bold;
+	color: 					#111 /*{e-bhover-color}*/;
+	text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ 	#fff /*{e-bhover-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+	color: 					#333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+	border: 1px solid 		#f2c43d /*{e-bdown-border}*/;
+	background: 			#fceda7 /*{e-bdown-background-color}*/;
+	font-weight: bold;
+	color: 					#111 /*{e-bdown-color}*/;
+	text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ 	#fff /*{e-bdown-shadow-color}*/;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+	color: 					#333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+	text-decoration: none;
+}
+/* Structure */
+/* links within "buttons" 
+-----------------------------------------------------------------------------------------------------------*/
+a.ui-link-inherit {
+	text-decoration: none !important;
+}
+/* Active class used as the "on" state across all themes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-active {
+	border: 1px solid 		#2373a5 /*{global-active-border}*/;
+	background: 			#5393c5 /*{global-active-background-color}*/;
+	font-weight: bold;
+	color: 					#fff /*{global-active-color}*/;
+	cursor: pointer;
+	text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 0 /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/;
+	text-decoration: none;
+	background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */
+	background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */
+	background-image:    -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */
+	background-image:     -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */
+	background-image:      -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */
+	background-image:         linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/);
+	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+	color: 					#fff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+	border-top: 1px solid 	#fff;
+	border-color: 			rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-all {
+	-webkit-border-radius: 				.6em /*{global-radii-blocks}*/;
+	border-radius: 						.6em /*{global-radii-blocks}*/;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+	border-color: rgb(130,130,130);
+	border-color: rgba(130,130,130,.3);
+	border-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+	background-color: 						#666 /*{global-icon-color}*/;
+	background-color: 						rgba(0,0,0,.4) /*{global-icon-disc}*/;
+	background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 				9px;
+	border-radius: 						9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt .ui-icon,
+.ui-icon-alt .ui-icon-searchfield:after {
+	background-color: 						#fff;
+	background-color: 						rgba(255,255,255,.3);
+	background-image: url(images/icons-18-black.png);
+	background-repeat: no-repeat;
+}
+/* No disc
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-nodisc .ui-icon,
+.ui-icon-nodisc .ui-icon-searchfield:after,
+.ui-icon-nodisc .ui-icon-alt .ui-icon,
+.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after {
+	background-color: transparent;
+}
+/* Icon sprite
+-----------------------------------------------------------------------------------------------------------*/
+/* plus minus */
+.ui-icon-plus {
+	background-position: 	-1px -1px;
+}
+.ui-icon-minus {
+	background-position: 	-37px -1px;
+}
+/* delete/close */
+.ui-icon-delete {
+	background-position: 	-73px -1px;
+}
+/* arrows */
+.ui-icon-arrow-r {
+	background-position: 	-108px -1px;
+}
+.ui-icon-arrow-l {
+	background-position: 	-144px -1px;
+}
+.ui-icon-arrow-u {
+	background-position: 	-180px -1px;
+}
+.ui-icon-arrow-d {
+	background-position: 	-216px -1px;
+}
+/* misc */
+.ui-icon-check {
+	background-position: 	-252px -1px;
+}
+.ui-icon-gear {
+	background-position: 	-288px -1px;
+}
+.ui-icon-refresh {
+	background-position: 	-323px -1px;
+}
+.ui-icon-forward {
+	background-position: 	-360px -1px;
+}
+.ui-icon-back {
+	background-position: 	-396px -1px;
+}
+.ui-icon-grid {
+	background-position: 	-432px -1px;
+}
+.ui-icon-star {
+	background-position: 	-467px -1px;
+}
+.ui-icon-alert {
+	background-position: 	-503px -1px;
+}
+.ui-icon-info {
+	background-position: 	-539px -1px;
+}
+.ui-icon-home {
+	background-position: 	-575px -1px;
+}
+/* search */
+.ui-icon-search,
+.ui-icon-searchfield:after {
+	background-position: 	-611px -1px;
+}
+/* checkbox radio */
+.ui-icon-checkbox-on {
+	background-position: 	-647px -1px;
+}
+.ui-icon-checkbox-off {
+	background-position: 	-683px -1px;
+}
+.ui-icon-radio-on {
+	background-position: 	-718px -1px;
+}
+.ui-icon-radio-off {
+	background-position: 	-754px -1px;
+}
+/* menu edit */
+.ui-icon-bars {
+	background-position: 	-788px -1px;
+}
+.ui-icon-edit {
+	background-position: 	-824px -1px;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
+       only screen and (min--moz-device-pixel-ratio: 1.3),
+       only screen and (min-resolution: 200dpi) {
+	
+	.ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+	.ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+	.ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+	.ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit,
+	.ui-icon-search, .ui-icon-searchfield:after, 
+	.ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+		background-image: url(images/icons-36-white.png);
+		-moz-background-size: 864px 18px;
+		-o-background-size: 864px 18px;
+		-webkit-background-size: 864px 18px;
+		background-size: 864px 18px;
+	}
+	.ui-icon-alt .ui-icon {
+		background-image: url(images/icons-36-black.png);
+	}
+	.ui-icon-plus {
+		background-position: 	0 50%;
+	}
+	.ui-icon-minus {
+		background-position: 	-36px 50%;
+	}
+	.ui-icon-delete {
+		background-position: 	-72px 50%;
+	}
+	.ui-icon-arrow-r {
+		background-position: 	-108px 50%;
+	}
+	.ui-icon-arrow-l {
+		background-position: 	-144px 50%;
+	}
+	.ui-icon-arrow-u {
+		background-position: 	-179px 50%;
+	}
+	.ui-icon-arrow-d {
+		background-position: 	-215px 50%;
+	}
+	.ui-icon-check {
+		background-position: 	-252px 50%;
+	}
+	.ui-icon-gear {
+		background-position: 	-287px 50%;
+	}
+	.ui-icon-refresh {
+		background-position: 	-323px 50%;
+	}
+	.ui-icon-forward {
+		background-position: 	-360px 50%;
+	}
+	.ui-icon-back {
+		background-position: 	-395px 50%;
+	}
+	.ui-icon-grid {
+		background-position: 	-431px 50%;
+	}
+	.ui-icon-star {
+		background-position: 	-467px 50%;
+	}
+	.ui-icon-alert {
+		background-position: 	-503px 50%;
+	}
+	.ui-icon-info {
+		background-position: 	-538px 50%;
+	}
+	.ui-icon-home {
+		background-position: 	-575px 50%;
+	}
+	.ui-icon-search,
+	.ui-icon-searchfield:after {
+		background-position: 	-611px 50%;
+	}
+	.ui-icon-checkbox-on {
+		background-position: 	-647px 50%;
+	}
+	.ui-icon-checkbox-off {
+		background-position: 	-683px 50%;
+	}
+	.ui-icon-radio-on {
+		background-position: 	-718px 50%;
+	}
+	.ui-icon-radio-off {
+		background-position: 	-754px 50%;
+	}
+	.ui-icon-bars {
+		background-position: 	-788px 50%;
+	
+	}.ui-icon-edit {
+		background-position: 	-824px 50%;
+	}
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+	background-color: transparent;	
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+	background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+	background: url(images/ajax-loader.gif);
+	background-size: 46px 46px;
+}
+/* Button corner class
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-all {
+	-webkit-border-radius: 				1em /*{global-radii-buttons}*/;
+	border-radius: 						1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-all,
+.ui-btn-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+	background: #666;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+	position: absolute;
+	width: 100%;
+	height: 100%;
+}
+.ui-overlay-shadow {
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+.ui-shadow {
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 			rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.2) /*{global-box-shadow-color}*/
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3);
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3);
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+	-moz-box-shadow: inset 0 1px 4px 		rgba(0,0,0,.2);
+	-webkit-box-shadow: inset 0 1px 4px 	rgba(0,0,0,.2);
+	box-shadow: inset 0 1px 4px 			rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+	outline: 0;
+}
+.ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+	-moz-box-shadow: inset 0 0 3px 		#387bbe /*{global-active-background-color}*/, 0 0 9px 		#387bbe /*{global-active-background-color}*/;
+	-webkit-box-shadow: inset 0 0 3px 	#387bbe /*{global-active-background-color}*/, 0 0 9px 		#387bbe /*{global-active-background-color}*/;
+	box-shadow: inset 0 0 3px 			#387bbe /*{global-active-background-color}*/, 0 0 9px 		#387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+	-moz-box-shadow: 0 0 12px 			#387bbe /*{global-active-background-color}*/;
+	-webkit-box-shadow: 0 0 12px 		#387bbe /*{global-active-background-color}*/;
+	box-shadow: 0 0 12px 					#387bbe /*{global-active-background-color}*/;	
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+	-moz-box-shadow: none !important;
+	-webkit-box-shadow: none !important;
+	box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; }
+.ui-mobile .ui-page-active { display: block; overflow: visible; }
+/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page { outline: none; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*fouc*/
+.ui-mobile-rendering > * { visibility: hidden; }
+/*headers, content panels*/
+.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; }
+.ui-bar { font-size: 16px; margin: 0; }
+.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; }
+.ui-header, .ui-footer { position: relative; zoom: 1; }
+.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; }
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right { top: 4px;}
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer > .ui-btn-icon-notext,
+.ui-header > .ui-btn-icon-notext,
+.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; }
+.ui-header-fixed > .ui-btn-icon-notext { top: 7px;}
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/* content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+/* corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+/* content configurations. */
+.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; }
+.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.ui-grid-a .ui-block-a { clear: left; }
+/* grid b: 33/33/33 */
+.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.ui-grid-b .ui-block-a { clear: left; }
+/* grid c: 25/25/25/25 */
+.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.ui-grid-c .ui-block-a { clear: left; }
+/* grid d: 20/20/20/20/20 */
+.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media all and (max-width: 35em) {
+	.ui-responsive .ui-block-a, 
+	.ui-responsive .ui-block-b, 
+	.ui-responsive .ui-block-c,
+	.ui-responsive .ui-block-d,
+	.ui-responsive .ui-block-e { 
+		width: 100%; 
+		float:none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+.ui-page-header-fixed {
+	padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+div.ui-btn-text { width: auto; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/* Corner styling inheritance */
+.ui-btn-inner {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;
+}
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 28em){
+	.ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+	.ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+	.ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; }
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; }
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; }
+.ui-collapsible-heading .ui-btn-inner { padding-left: 12px; padding-right: 12px; }
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; }
+.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; }
+.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; }
+.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0 1px 2px; text-indent: -9999px; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; }
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; }
+.ui-collapsible-heading-status { position: absolute; top: -9999px; left: 0; }
+.ui-collapsible-content {
+	display: block;
+	margin: 0 -15px;	
+	padding: 10px 15px;
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top: none;      /* Overrides ui-body-* */
+	background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup-controls label.ui-select,
+.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup .ui-btn { margin: 0; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio,
+.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; }
+/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */
+.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; }
+.ui-controlgroup-vertical .ui-btn {	border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; }
+.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; }
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {	border-right-width: 1px; }
+.ui-controlgroup .ui-btn-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup .ui-controlgroup-controls,
+.ui-controlgroup .ui-radio,
+.ui-controlgroup .ui-checkbox,
+.ui-controlgroup .ui-select,
+.ui-controlgroup li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup .ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+@media all and (min-width: 28em){
+	.ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+	.ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+	.ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } 
+	.ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+	.ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}	
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 15px auto;
+	padding: 0;
+	position: relative;
+	top: -15px;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	border: none;
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+}
+.ui-dialog-contain > .ui-content { 
+	padding: 15px; 
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 15px; 
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; 	/* See line #553 of popup.js */
+}
+.ui-popup-screen {
+	background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em 7px;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em 7px;
+}
+.ui-popup .ui-title {
+	font-size: 16px;
+	font-weight: bold;
+	margin-top: .5em;
+	margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	width: auto;
+	height: auto;
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+@media all and (min-width: 28em){
+	.ui-popup .ui-field-contain label.ui-submit,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain label.ui-select,
+	.ui-popup .ui-field-contain label.ui-input-text {
+		font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em;
+	}
+	.ui-popup .ui-field-contain .ui-btn.ui-submit,
+	.ui-popup .ui-field-contain .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain .ui-select,
+	.ui-popup .ui-field-contain input.ui-input-text,
+	.ui-popup .ui-field-contain textarea.ui-input-text,
+	.ui-popup .ui-field-contain .ui-input-search {
+		width: 100%; display: block;
+	}
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -9px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left { left: -9px; }
+.ui-popup > .ui-btn-right { right: -9px; }
+.ui-popup-hidden { top: -99999px; left: -9999px; }
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-icon,
+.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 28em){
+	.ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* labels */
+label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+/*listbox*/
+.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; }
+.ui-selectmenu-list .ui-li .ui-icon { display: block; }
+.ui-li.ui-selectmenu-placeholder { display: none; }
+.ui-selectmenu .ui-header { margin: 0; padding: 0; }
+.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 28em){
+	.ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+	.ui-field-contain .ui-select { width: 78%; display: inline-block; }
+	.ui-hide-label .ui-select { width: 100%; } 
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text,
+.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search { padding: 0 30px; }
+div.ui-input-text { padding: 0 .4em; }
+div.ui-input-has-clear { padding: 0 30px 0 .4em; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini,
+.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text,
+.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; }
+textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+textarea.ui-mini { height: 45px; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; }
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; }
+/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */
+input[type=number]::-webkit-outer-spin-button { margin: 0; }
+@media all and (min-width: 28em){
+	.ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+	.ui-field-contain input.ui-input-text,
+	.ui-field-contain textarea.ui-input-text,
+	.ui-field-contain .ui-input-search,
+	.ui-field-contain div.ui-input-text { width: 78%; display: inline-block; }
+	.ui-field-contain .ui-input-search,
+	.ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+	.ui-hide-label input.ui-input-text,
+	.ui-hide-label textarea.ui-input-text,
+	.ui-hide-label .ui-input-search,
+	.ui-hide-label div.ui-input-text,
+	.ui-input-search input.ui-input-text,
+	div.ui-input-text input.ui-input-text { width: 100%; }
+}
+.ui-rangeslider {
+	zoom: 1;
+	margin: 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */
+.ui-rangeslider input.ui-input-text.ui-slider-input {
+	margin: .57143em 0;
+}
+.ui-rangeslider.ui-mini input.ui-slider-input {
+	margin: .28571em 0;
+}
+.ui-rangeslider input.ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: .5em 68px;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin: .25em 68px;
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+@media all and (min-width: 28em){
+	.ui-field-contain .ui-rangeslider label.ui-slider {
+		float: left;
+	}
+	.ui-field-contain .ui-rangeslider input.ui-slider-input {
+		position: relative;
+		z-index: 1;
+	}
+	.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,
+	.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first {
+		margin-right: 17px;
+	}
+	.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+	.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+		float: left;
+		width: 78%;
+		margin: 0 -68px;
+	}
+	.ui-field-contain .ui-rangeslider .ui-slider-track,
+	.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track {
+		right: 68px;
+		left: 68px;
+	}
+	.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first {
+		margin: 0;
+	}
+	.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,
+	.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+		width: auto;
+		float: none;
+		margin: 0 68px;
+	}
+	.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,
+	.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track {
+		right: 0;
+		left: 0;
+	}
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style: none; padding: 0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; }
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; }
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview .ui-li > .ui-btn-text {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child,
+.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child,
+.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-link-alt {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;	
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-link-alt {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;	
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 59px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; }
+ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+	 .ui-li-aside { width: 45%; }
+}	 
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider {
+	font-size: 16px;
+	line-height: 1.4;
+	font-weight: normal;
+	margin: 0;
+	display: block;
+}
+.ui-field-contain label.ui-slider {
+	margin-bottom: .4em;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	zoom: 1;
+}
+div.ui-slider.ui-mini {
+	margin: .25em 0;
+}
+.ui-field-contain div.ui-slider,
+.ui-field-contain div.ui-slider.ui-mini {
+	margin: 0;
+}
+div.ui-slider:before, div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+/* High level of specificity to override Textinput CSS. */
+input.ui-input-text.ui-slider-input {
+	display: block;
+	float: left;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 22px;
+	line-height: 22px;
+	font-size: 14px;
+	border-width: 0;
+	background-image: none;
+	font-weight: bold;
+	text-align: center;
+	vertical-align: text-bottom;
+	outline: 0;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	-ms-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track,
+.ui-slider-switch {
+	position: relative;
+	overflow: visible;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-bg {
+	border: none;
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle,
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -7px;
+}
+.ui-slider-handle .ui-btn-inner {
+	padding: 0;
+	height: 100%;
+}
+.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner {
+	height: 30px;
+	width: 30px;
+	padding: 0;
+	margin: -9px 0 0 -9px;
+	border-top: none;
+}
+select.ui-slider-switch {
+	display: none;
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	margin: .5em 0;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before, div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	width: 5em;
+	height: 29px;
+	margin: .25em 0;
+	top: 0;
+}
+.ui-field-contain .ui-slider-switch,
+.ui-field-contain .ui-slider-switch.ui-mini {
+	margin: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner {
+	height: 30px;
+	width: 30px;
+	padding: 0;
+	margin: 0;
+	border-top: none;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	border-width: 0;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+@media all and (min-width: 28em){
+	.ui-field-contain label.ui-slider {
+		vertical-align: top;
+		display: inline-block;
+		width: 20%;
+		margin: 0 2% 0 0;
+	}
+	.ui-field-contain div.ui-slider {
+		display: inline-block;
+		width: 78%;
+	}
+	.ui-field-contain.ui-hide-label div.ui-slider {
+		display: block;
+		width: auto;
+	}
+	.ui-field-contain div.ui-slider-switch,
+	.ui-field-contain.ui-hide-label div.ui-slider-switch {
+		display: inline-block;
+		width: 5.8em;
+	}
+	.ui-field-contain div.ui-slider-switch.ui-mini {
+		width: 5em;
+	}
+}	
+.ui-table {
+   border: 0;
+   border-collapse: collapse;
+   padding: 0;
+   width: 100%;
+}
+.ui-table th,
+.ui-table td {
+  line-height: 1.5em;
+  text-align: left;
+  padding: .4em .5em;
+  vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+  font-weight: bold;
+}
+.ui-table caption {
+  text-align:left;
+  margin-bottom:1.4em;
+  opacity: .5;
+}
+/* Add strokes between each row */
+.table-stroke thead th {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+  border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .05);
+}
+/* Add alternating row stripes */
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+  background-color: #eeeeee; /* non-RGBA fallback  */
+  background-color: rgba(0,0,0,0.04);
+}
+/* Add stroke to the header and last item */
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom:.8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		display: block;
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */
+	.ui-table-reflow.ui-responsive {
+		display: table-row-group;
+	}
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* fixed toolbars have z-index 1000 */
+}
+.ui-panel-display-reveal {
+	z-index: 0;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-inner {
+	padding: 15px;
+}
+/* content-wrap */
+.ui-panel-content-wrap {
+	position: relative;
+	left: 0;
+	min-height: inherit;
+	border: none;
+	z-index: 999;
+}
+.ui-panel-content-wrap-display-overlay,
+.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */
+.ui-panel-content-wrap-closed {
+	position: static;
+}
+/* dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left:0;
+	height: 100%;
+	width: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 350ms ease;
+	-moz-transition: -moz-transform 350ms ease;
+	transition: transform 350ms ease;
+}
+/* hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div,
+.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div,
+.ui-panel-animate.ui-panel-content-wrap,
+.ui-panel-animate.ui-panel-content-fixed-toolbar {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* positioning: panel */
+/* panel left  */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* animated: panel left (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */
+.ui-panel-position-left.ui-panel-open {
+	left: 0;
+}
+/* animated: panel left open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* panel right */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* animated: panel right (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-position-right.ui-panel-display-reveal,  /* negate "panel right" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* animated: panel right open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* positioning: content wrap, fixed toolbars and dismiss */
+/* panel left open */
+.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-left.ui-panel-dismiss-open {
+	left: 17em;
+	right: -17em;
+}
+/* animated: panel left open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-right.ui-panel-dismiss-open {
+	left: -17em;
+	right: 17em;
+}
+/* animated: panel right open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, 
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, 
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* negate "panel left/right open" for overlay */
+.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,
+.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay {
+	left: 0;
+}
+/* always disable overflow-x to prevent zoom issue on Android */
+.ui-page-active.ui-page-panel {
+	overflow-x: hidden;
+}
+/* shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-left {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+	margin-left: 1px;
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-right {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+	margin-right: 1px;
+}
+/* wrap on wide viewports once open */
+@media (min-width:55em){
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,
+	.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push {
+		display: none;
+	}	
+}
Index: /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.jquery.min.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.jquery.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.jquery.min.js	(revision 25596)
@@ -0,0 +1,164 @@
+// PhotoSwipe - http://www.photoswipe.com/
+// Copyright (c) 2011 by Code Computerlove (http://www.codecomputerlove.com)
+// Licensed under the MIT license
+// version: 3.0.4
+(function(e){if(!Function.prototype.bind)Function.prototype.bind=function(d){var a=[].slice,b=a.call(arguments,1),c=this,g=function(){},f=function(){return c.apply(this instanceof g?this:d||{},b.concat(a.call(arguments)))};g.prototype=c.prototype;f.prototype=new g;return f};if(typeof e.Code==="undefined")e.Code={};e.Code.Util={registerNamespace:function(){var d=arguments,a=null,b,c,g,f,i;b=0;for(f=d.length;b<f;b++){g=d[b];g=g.split(".");a=g[0];typeof e[a]==="undefined"&&(e[a]={});a=e[a];c=1;for(i=
+g.length;c<i;++c)a[g[c]]=a[g[c]]||{},a=a[g[c]]}},coalesce:function(){var d,a;d=0;for(a=arguments.length;d<a;d++)if(!this.isNothing(arguments[d]))return arguments[d];return null},extend:function(d,a,b){var c;this.isNothing(b)&&(b=!0);if(d&&a&&this.isObject(a))for(c in a)this.objectHasProperty(a,c)&&(b?d[c]=a[c]:typeof d[c]==="undefined"&&(d[c]=a[c]))},clone:function(d){var a={};this.extend(a,d);return a},isObject:function(d){return d instanceof Object},isFunction:function(d){return{}.toString.call(d)===
+"[object Function]"},isArray:function(d){return d instanceof Array},isLikeArray:function(d){return typeof d.length==="number"},isNumber:function(d){return typeof d==="number"},isString:function(d){return typeof d==="string"},isNothing:function(d){if(typeof d==="undefined"||d===null)return!0;return!1},swapArrayElements:function(d,a,b){var c=d[a];d[a]=d[b];d[b]=c},trim:function(d){return d.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},toCamelCase:function(d){return d.replace(/(\-[a-z])/g,function(a){return a.toUpperCase().replace("-",
+"")})},toDashedCase:function(d){return d.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})},arrayIndexOf:function(d,a,b){var c,g,f,e;f=-1;c=0;for(g=a.length;c<g;c++)if(e=a[c],this.isNothing(b)){if(e===d){f=c;break}}else if(this.objectHasProperty(e,b)&&e[b]===d){f=c;break}return f},objectHasProperty:function(d,a){return d.hasOwnProperty?d.hasOwnProperty(a):"undefined"!==typeof d[a]}}})(window);
+(function(e,d){d.Browser={ua:null,version:null,safari:null,webkit:null,opera:null,msie:null,chrome:null,mozilla:null,android:null,blackberry:null,iPad:null,iPhone:null,iPod:null,iOS:null,is3dSupported:null,isCSSTransformSupported:null,isTouchSupported:null,isGestureSupported:null,_detect:function(){this.ua=e.navigator.userAgent;this.version=this.ua.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[];this.safari=/Safari/gi.test(e.navigator.appVersion);this.webkit=/webkit/i.test(this.ua);this.opera=/opera/i.test(this.ua);
+this.msie=/msie/i.test(this.ua)&&!this.opera;this.chrome=/Chrome/i.test(this.ua);this.firefox=/Firefox/i.test(this.ua);this.fennec=/Fennec/i.test(this.ua);this.mozilla=/mozilla/i.test(this.ua)&&!/(compatible|webkit)/.test(this.ua);this.android=/android/i.test(this.ua);this.blackberry=/blackberry/i.test(this.ua);this.iOS=/iphone|ipod|ipad/gi.test(e.navigator.platform);this.iPad=/ipad/gi.test(e.navigator.platform);this.iPhone=/iphone/gi.test(e.navigator.platform);this.iPod=/ipod/gi.test(e.navigator.platform);
+var a=document.createElement("div");this.is3dSupported=!d.isNothing(a.style.WebkitPerspective);this.isCSSTransformSupported=!d.isNothing(a.style.WebkitTransform)||!d.isNothing(a.style.MozTransform)||!d.isNothing(a.style.transformProperty);this.isTouchSupported=this.isEventSupported("touchstart");this.isGestureSupported=this.isEventSupported("gesturestart")},_eventTagNames:{select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"},isEventSupported:function(a){var b=
+document.createElement(this._eventTagNames[a]||"div"),c,a="on"+a;c=d.objectHasProperty(b,a);c||(b.setAttribute(a,"return;"),c=typeof b[a]==="function");return c},isLandscape:function(){return d.DOM.windowWidth()>d.DOM.windowHeight()}};d.Browser._detect()})(window,window.Code.Util);
+(function(e,d,a){a.extend(a,{Events:{add:function(a,c,g){d(a).bind(c,g)},remove:function(a,c,g){d(a).unbind(c,g)},fire:function(a,c){var g,f=Array.prototype.slice.call(arguments).splice(2);g=typeof c==="string"?{type:c}:c;d(a).trigger(d.Event(g.type,g),f)},getMousePosition:function(a){return{x:a.pageX,y:a.pageY}},getTouchEvent:function(a){return a.originalEvent},getWheelDelta:function(b){var c=0;a.isNothing(b.wheelDelta)?a.isNothing(b.detail)||(c=-b.detail/3):c=b.wheelDelta/120;return c},domReady:function(a){d(document).ready(a)}}})})(window,
+window.jQuery,window.Code.Util);
+(function(e,d,a){a.extend(a,{DOM:{setData:function(b,c,g){if(a.isLikeArray(b)){var f,d;f=0;for(d=b.length;f<d;f++)a.DOM._setData(b[f],c,g)}else a.DOM._setData(b,c,g)},_setData:function(b,c,g){a.DOM.setAttribute(b,"data-"+c,g)},getData:function(b,c,g){return a.DOM.getAttribute(b,"data-"+c,g)},removeData:function(b,c){if(a.isLikeArray(b)){var g,f;g=0;for(f=b.length;g<f;g++)a.DOM._removeData(b[g],c)}else a.DOM._removeData(b,c)},_removeData:function(b,c){a.DOM.removeAttribute(b,"data-"+c)},isChildOf:function(a,
+c){if(c===a)return!1;for(;a&&a!==c;)a=a.parentNode;return a===c},find:function(b,c){if(a.isNothing(c))c=e.document;var g=d(b,c),f=[],i,j;i=0;for(j=g.length;i<j;i++)f.push(g[i]);return f},createElement:function(a,c,g){a=d("<"+a+"></"+a+">");a.attr(c);a.append(g);return a[0]},appendChild:function(a,c){d(c).append(a)},insertBefore:function(a,c){d(a).insertBefore(c)},appendText:function(a,c){d(c).text(a)},appendToBody:function(a){d("body").append(a)},removeChild:function(a){d(a).empty().remove()},removeChildren:function(a){d(a).empty()},
+hasAttribute:function(b,c){return!a.isNothing(d(b).attr(c))},getAttribute:function(b,c,g){b=d(b).attr(c);a.isNothing(b)&&!a.isNothing(g)&&(b=g);return b},setAttribute:function(b,c,g){if(a.isLikeArray(b)){var f,d;f=0;for(d=b.length;f<d;f++)a.DOM._setAttribute(b[f],c,g)}else a.DOM._setAttribute(b,c,g)},_setAttribute:function(a,c,g){d(a).attr(c,g)},removeAttribute:function(b,c){if(a.isLikeArray(b)){var g,f;g=0;for(f=b.length;g<f;g++)a.DOM._removeAttribute(b[g],c)}else a.DOM._removeAttribute(b,c)},_removeAttribute:function(a,
+c){d(a).removeAttr(c)},addClass:function(b,c){if(a.isLikeArray(b)){var g,f;g=0;for(f=b.length;g<f;g++)a.DOM._addClass(b[g],c)}else a.DOM._addClass(b,c)},_addClass:function(a,c){d(a).addClass(c)},removeClass:function(b,c){if(a.isLikeArray(b)){var g,f;g=0;for(f=b.length;g<f;g++)a.DOM._removeClass(b[g],c)}else a.DOM._removeClass(b,c)},_removeClass:function(a,c){d(a).removeClass(c)},hasClass:function(a,c){d(a).hasClass(c)},setStyle:function(b,c,g){if(a.isLikeArray(b)){var f,d;f=0;for(d=b.length;f<d;f++)a.DOM._setStyle(b[f],
+c,g)}else a.DOM._setStyle(b,c,g)},_setStyle:function(b,c,g){var f;if(a.isObject(c))for(f in c)a.objectHasProperty(c,f)&&(f==="width"?a.DOM.width(b,c[f]):f==="height"?a.DOM.height(b,c[f]):d(b).css(f,c[f]));else d(b).css(c,g)},getStyle:function(a,c){return d(a).css(c)},hide:function(b){if(a.isLikeArray(b)){var c,g;c=0;for(g=b.length;c<g;c++)a.DOM._hide(b[c])}else a.DOM._hide(b)},_hide:function(a){d(a).hide()},show:function(b){if(a.isLikeArray(b)){var c,g;c=0;for(g=b.length;c<g;c++)a.DOM._show(b[c])}else a.DOM._show(b)},
+_show:function(a){d(a).show()},width:function(b,c){a.isNothing(c)||d(b).width(c);return d(b).width()},outerWidth:function(a){return d(a).outerWidth()},height:function(b,c){a.isNothing(c)||d(b).height(c);return d(b).height()},outerHeight:function(a){return d(a).outerHeight()},documentWidth:function(){return d(document.documentElement).width()},documentHeight:function(){return d(document.documentElement).height()},documentOuterWidth:function(){return a.DOM.width(document.documentElement)},documentOuterHeight:function(){return a.DOM.outerHeight(document.documentElement)},
+bodyWidth:function(){return d(document.body).width()},bodyHeight:function(){return d(document.body).height()},bodyOuterWidth:function(){return a.DOM.outerWidth(document.body)},bodyOuterHeight:function(){return a.DOM.outerHeight(document.body)},windowWidth:function(){if(!e.innerWidth)return d(e).width();return e.innerWidth},windowHeight:function(){if(!e.innerHeight)return d(e).height();return e.innerHeight},windowScrollLeft:function(){if(!e.pageXOffset)return d(e).scrollLeft();return e.pageXOffset},
+windowScrollTop:function(){if(!e.pageYOffset)return d(e).scrollTop();return e.pageYOffset}}})})(window,window.jQuery,window.Code.Util);
+(function(e,d){d.extend(d,{Animation:{_applyTransitionDelay:50,_transitionEndLabel:e.document.documentElement.style.webkitTransition!==void 0?"webkitTransitionEnd":"transitionend",_transitionEndHandler:null,_transitionPrefix:e.document.documentElement.style.webkitTransition!==void 0?"webkitTransition":e.document.documentElement.style.MozTransition!==void 0?"MozTransition":"transition",_transformLabel:e.document.documentElement.style.webkitTransform!==void 0?"webkitTransform":e.document.documentElement.style.MozTransition!==
+void 0?"MozTransform":"transform",_getTransitionEndHandler:function(){if(d.isNothing(this._transitionEndHandler))this._transitionEndHandler=this._onTransitionEnd.bind(this);return this._transitionEndHandler},stop:function(a){if(d.Browser.isCSSTransformSupported){var b={};d.Events.remove(a,this._transitionEndLabel,this._getTransitionEndHandler());d.isNothing(a.callbackLabel)&&delete a.callbackLabel;b[this._transitionPrefix+"Property"]="";b[this._transitionPrefix+"Duration"]="";b[this._transitionPrefix+
+"TimingFunction"]="";b[this._transitionPrefix+"Delay"]="";b[this._transformLabel]="";d.DOM.setStyle(a,b)}else d.isNothing(e.jQuery)||e.jQuery(a).stop(!0,!0)},fadeIn:function(a,b,c,g,f){f=d.coalesce(f,1);f<=0&&(f=1);if(b<=0&&(d.DOM.setStyle(a,"opacity",f),!d.isNothing(c))){c(a);return}d.DOM.getStyle(a,"opacity")>=1&&d.DOM.setStyle(a,"opacity",0);d.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",f,b,c,g):d.isNothing(e.jQuery)||e.jQuery(a).fadeTo(b,f,c)},fadeTo:function(a,b,c,g,f){this.fadeIn(a,
+c,g,f,b)},fadeOut:function(a,b,c,g){if(b<=0&&(d.DOM.setStyle(a,"opacity",0),!d.isNothing(c))){c(a);return}d.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",0,b,c,g):e.jQuery(a).fadeTo(b,0,c)},slideBy:function(a,b,c,g,f,i){var j={},b=d.coalesce(b,0),c=d.coalesce(c,0),i=d.coalesce(i,"ease-out");j[this._transitionPrefix+"Property"]="all";j[this._transitionPrefix+"Delay"]="0";g===0?(j[this._transitionPrefix+"Duration"]="",j[this._transitionPrefix+"TimingFunction"]=""):(j[this._transitionPrefix+
+"Duration"]=g+"ms",j[this._transitionPrefix+"TimingFunction"]=d.coalesce(i,"ease-out"),d.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler()));j[this._transformLabel]=d.Browser.is3dSupported?"translate3d("+b+"px, "+c+"px, 0px)":"translate("+b+"px, "+c+"px)";if(!d.isNothing(f))a.cclallcallback=f;d.DOM.setStyle(a,j);g===0&&e.setTimeout(function(){this._leaveTransforms(a)}.bind(this),this._applyTransitionDelay)},resetTranslate:function(a){var b={};b[this._transformLabel]=b[this._transformLabel]=
+d.Browser.is3dSupported?"translate3d(0px, 0px, 0px)":"translate(0px, 0px)";d.DOM.setStyle(a,b)},_applyTransition:function(a,b,c,g,f,i){var j={},i=d.coalesce(i,"ease-in");j[this._transitionPrefix+"Property"]=b;j[this._transitionPrefix+"Duration"]=g+"ms";j[this._transitionPrefix+"TimingFunction"]=i;j[this._transitionPrefix+"Delay"]="0";d.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler());d.DOM.setStyle(a,j);d.isNothing(f)||(a["ccl"+b+"callback"]=f);e.setTimeout(function(){d.DOM.setStyle(a,
+b,c)},this._applyTransitionDelay)},_onTransitionEnd:function(a){d.Events.remove(a.currentTarget,this._transitionEndLabel,this._getTransitionEndHandler());this._leaveTransforms(a.currentTarget)},_leaveTransforms:function(a){var b=a.style[this._transitionPrefix+"Property"],c=b!==""?"ccl"+b+"callback":"cclallcallback",g,b=d.coalesce(a.style.webkitTransform,a.style.MozTransform,a.style.transform),f,i=e.parseInt(d.DOM.getStyle(a,"left"),0),j=e.parseInt(d.DOM.getStyle(a,"top"),0),h,l,k={};b!==""&&(b=d.Browser.is3dSupported?
+b.match(/translate3d\((.*?)\)/):b.match(/translate\((.*?)\)/),d.isNothing(b)||(f=b[1].split(", "),h=e.parseInt(f[0],0),l=e.parseInt(f[1],0)));k[this._transitionPrefix+"Property"]="";k[this._transitionPrefix+"Duration"]="";k[this._transitionPrefix+"TimingFunction"]="";k[this._transitionPrefix+"Delay"]="";d.DOM.setStyle(a,k);e.setTimeout(function(){if(!d.isNothing(f))k={},k[this._transformLabel]="",k.left=i+h+"px",k.top=j+l+"px",d.DOM.setStyle(a,k);d.isNothing(a[c])||(g=a[c],delete a[c],g(a))}.bind(this),
+this._applyTransitionDelay)}}})})(window,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.EventTypes={onTouch:"CodeUtilTouchElementOnTouch"};a.TouchElement.ActionTypes={touchStart:"touchStart",touchMove:"touchMove",touchEnd:"touchEnd",touchMoveEnd:"touchMoveEnd",tap:"tap",doubleTap:"doubleTap",swipeLeft:"swipeLeft",swipeRight:"swipeRight",swipeUp:"swipeUp",swipeDown:"swipeDown",gestureStart:"gestureStart",gestureChange:"gestureChange",gestureEnd:"gestureEnd"}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.TouchElementClass=d({el:null,captureSettings:null,touchStartPoint:null,touchEndPoint:null,touchStartTime:null,doubleTapTimeout:null,touchStartHandler:null,touchMoveHandler:null,touchEndHandler:null,mouseDownHandler:null,mouseMoveHandler:null,mouseUpHandler:null,mouseOutHandler:null,gestureStartHandler:null,gestureChangeHandler:null,gestureEndHandler:null,swipeThreshold:null,swipeTimeThreshold:null,doubleTapSpeed:null,dispose:function(){var b;
+this.removeEventHandlers();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(b,c){this.el=b;this.captureSettings={swipe:!1,move:!1,gesture:!1,doubleTap:!1,preventDefaultTouchEvents:!0};a.extend(this.captureSettings,c);this.swipeThreshold=50;this.doubleTapSpeed=this.swipeTimeThreshold=250;this.touchStartPoint={x:0,y:0};this.touchEndPoint={x:0,y:0}},addEventHandlers:function(){if(a.isNothing(this.touchStartHandler))this.touchStartHandler=this.onTouchStart.bind(this),this.touchMoveHandler=
+this.onTouchMove.bind(this),this.touchEndHandler=this.onTouchEnd.bind(this),this.mouseDownHandler=this.onMouseDown.bind(this),this.mouseMoveHandler=this.onMouseMove.bind(this),this.mouseUpHandler=this.onMouseUp.bind(this),this.mouseOutHandler=this.onMouseOut.bind(this),this.gestureStartHandler=this.onGestureStart.bind(this),this.gestureChangeHandler=this.onGestureChange.bind(this),this.gestureEndHandler=this.onGestureEnd.bind(this);a.Events.add(this.el,"touchstart",this.touchStartHandler);this.captureSettings.move&&
+a.Events.add(this.el,"touchmove",this.touchMoveHandler);a.Events.add(this.el,"touchend",this.touchEndHandler);a.Events.add(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.add(this.el,"gesturestart",this.gestureStartHandler),a.Events.add(this.el,"gesturechange",this.gestureChangeHandler),a.Events.add(this.el,"gestureend",this.gestureEndHandler))},removeEventHandlers:function(){a.Events.remove(this.el,"touchstart",this.touchStartHandler);
+this.captureSettings.move&&a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);a.Events.remove(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.remove(this.el,"gesturestart",this.gestureStartHandler),a.Events.remove(this.el,"gesturechange",this.gestureChangeHandler),a.Events.remove(this.el,"gestureend",this.gestureEndHandler))},getTouchPoint:function(a){return{x:a[0].pageX,
+y:a[0].pageY}},fireTouchEvent:function(b){var c=0,g=0,f=0,d,c=this.touchEndPoint.x-this.touchStartPoint.x,g=this.touchEndPoint.y-this.touchStartPoint.y,f=Math.sqrt(c*c+g*g);if(this.captureSettings.swipe&&(d=new Date,d-=this.touchStartTime,d<=this.swipeTimeThreshold)){if(e.Math.abs(c)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:c<0?a.TouchElement.ActionTypes.swipeLeft:a.TouchElement.ActionTypes.swipeRight,targetEl:b.target,
+currentTargetEl:b.currentTarget});return}if(e.Math.abs(g)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:g<0?a.TouchElement.ActionTypes.swipeUp:a.TouchElement.ActionTypes.swipeDown,targetEl:b.target,currentTargetEl:b.currentTarget});return}}f>1?a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMoveEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}):
+this.captureSettings.doubleTap?a.isNothing(this.doubleTapTimeout)?this.doubleTapTimeout=e.setTimeout(function(){this.doubleTapTimeout=null;a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})}.bind(this),this.doubleTapSpeed):(e.clearTimeout(this.doubleTapTimeout),this.doubleTapTimeout=null,a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,
+action:a.TouchElement.ActionTypes.doubleTap,targetEl:b.target,currentTargetEl:b.currentTarget})):a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})},onTouchStart:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();a.Events.remove(this.el,"mousedown",this.mouseDownHandler);var c=a.Events.getTouchEvent(b).touches;c.length>1&&this.captureSettings.gesture?
+this.isGesture=!0:(this.touchStartTime=new Date,this.isGesture=!1,this.touchStartPoint=this.getTouchPoint(c),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget}))},onTouchMove:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();if(!this.isGesture||!this.captureSettings.gesture){var c=a.Events.getTouchEvent(b).touches;a.Events.fire(this,
+{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,point:this.getTouchPoint(c),targetEl:b.target,currentTargetEl:b.currentTarget})}},onTouchEnd:function(b){if(!this.isGesture||!this.captureSettings.gesture){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();var c=a.Events.getTouchEvent(b);this.touchEndPoint=this.getTouchPoint(!a.isNothing(c.changedTouches)?c.changedTouches:c.touches);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,
+target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)}},onMouseDown:function(b){b.preventDefault();a.Events.remove(this.el,"touchstart",this.mouseDownHandler);a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);this.captureSettings.move&&a.Events.add(this.el,"mousemove",this.mouseMoveHandler);a.Events.add(this.el,"mouseup",this.mouseUpHandler);
+a.Events.add(this.el,"mouseout",this.mouseOutHandler);this.touchStartTime=new Date;this.isGesture=!1;this.touchStartPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseMove:function(b){b.preventDefault();a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,
+point:a.Events.getMousePosition(b),targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseUp:function(b){b.preventDefault();this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler);a.Events.remove(this.el,"mouseup",this.mouseUpHandler);a.Events.remove(this.el,"mouseout",this.mouseOutHandler);this.touchEndPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,
+targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)},onMouseOut:function(b){var c=b.relatedTarget;if(!(this.el===c||a.DOM.isChildOf(c,this.el)))b.preventDefault(),this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler),a.Events.remove(this.el,"mouseup",this.mouseUpHandler),a.Events.remove(this.el,"mouseout",this.mouseOutHandler),this.touchEndPoint=a.Events.getMousePosition(b),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,
+action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}),this.fireTouchEvent(b)},onGestureStart:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureStart,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureChange:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b);
+a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureChange,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureEnd:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureEnd,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})}})})(window,window.klass,
+window.Code.Util);(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Image");e.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=e.Code.PhotoSwipe;b.Image.ImageClass=d({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var c;this.shrinkImage();for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(a,b,f,d){this.refObj=a;this.src=this.originalSrc=b;this.caption=f;this.metaData=d;this.imageEl=new e.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler=
+this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror=
+this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth,
+this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window,
+window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Cache");e=e.Code.PhotoSwipe;e.Cache.Mode={normal:"normal",aggressive:"aggressive"};e.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var c,g,f;c=0;for(g=b.childNodes.length;c<g;c++)if(f=b.childNodes[c],b.childNodes[c].nodeName==="IMG")return a.DOM.getAttribute(f,"alt")},getImageMetaData:function(){return{}}}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Cache");var b=e.Code.PhotoSwipe;b.Cache.CacheClass=d({images:null,settings:null,dispose:function(){var c,b,f;if(!a.isNothing(this.images)){b=0;for(f=this.images.length;b<f;b++)this.images[b].dispose();this.images.length=0}for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(a,g){var f,d,e,h,l,k;this.settings=g;this.images=[];f=0;for(d=a.length;f<d;f++)e=a[f],h=this.settings.getImageSource(e),l=this.settings.getImageCaption(e),
+k=this.settings.getImageMetaData(e),this.images.push(new b.Image.ImageClass(e,h,l,k))},getImages:function(c){var g,f,d=[],e;g=0;for(f=c.length;g<f;g++){e=this.images[c[g]];if(this.settings.cacheMode===b.Cache.Mode.aggressive)e.cacheDoNotShrink=!0;d.push(e)}if(this.settings.cacheMode===b.Cache.Mode.aggressive){g=0;for(f=this.images.length;g<f;g++)e=this.images[g],a.objectHasProperty(e,"cacheDoNotShrink")?delete e.cacheDoNotShrink:e.shrinkImage()}return d}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Image);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.DocumentOverlay");e.Code.PhotoSwipe.DocumentOverlay.CssClasses={documentOverlay:"ps-document-overlay"}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.DocumentOverlay");var b=e.Code.PhotoSwipe;b.DocumentOverlay.DocumentOverlayClass=d({el:null,settings:null,initialBodyHeight:null,dispose:function(){var c;a.Animation.stop(this.el);a.DOM.removeChild(this.el,this.el.parentNode);for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(c){this.settings=c;this.el=a.DOM.createElement("div",{"class":b.DocumentOverlay.CssClasses.documentOverlay},"");a.DOM.setStyle(this.el,{display:"block",
+position:"absolute",left:0,top:0,zIndex:this.settings.zIndex});a.DOM.hide(this.el);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target);a.Animation.resetTranslate(this.el);this.initialBodyHeight=a.DOM.bodyOuterHeight()},resetPosition:function(){var c,b,f;if(this.settings.target===e){c=a.DOM.windowWidth();b=a.DOM.bodyOuterHeight()*2;f=this.settings.jQueryMobile?a.DOM.windowScrollTop()+"px":"0px";if(b<1)b=this.initialBodyHeight;a.DOM.windowHeight()>b&&
+(b=a.DOM.windowHeight())}else c=a.DOM.width(this.settings.target),b=a.DOM.height(this.settings.target),f="0px";a.DOM.setStyle(this.el,{width:c,height:b,top:f})},fadeIn:function(c,b){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,c,b)}})})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Carousel");e=e.Code.PhotoSwipe;e.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};e.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};e.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window,
+window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=e.Code.PhotoSwipe;b.Carousel.CarouselClass=d({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var c,g,f;g=0;for(f=this.cache.images.length;g<f;g++)a.Events.remove(this.cache.images[g],b.Image.EventTypes.onLoad,
+this.imageLoadHandler),a.Events.remove(this.cache.images[g],b.Image.EventTypes.onError,this.imageErrorHandler);this.stopSlideshow();a.Animation.stop(this.el);a.DOM.removeChild(this.el,this.el.parentNode);for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(c,g){var f,d,j;this.cache=c;this.settings=g;this.slideByEndHandler=this.onSlideByEnd.bind(this);this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler=this.onImageError.bind(this);this.currentCacheIndex=
+0;this.isSlideshowActive=this.isSliding=!1;if(this.cache.images.length<3)this.settings.loop=!1;this.el=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.carousel},"");a.DOM.setStyle(this.el,{display:"block",position:"absolute",left:0,top:0,overflow:"hidden",zIndex:this.settings.zIndex});a.DOM.hide(this.el);this.contentEl=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.content},"");a.DOM.setStyle(this.contentEl,{display:"block",position:"absolute",left:0,top:0});a.DOM.appendChild(this.contentEl,
+this.el);d=c.images.length<3?c.images.length:3;for(f=0;f<d;f++)j=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.item+" "+b.Carousel.CssClasses.item+"-"+f},""),a.DOM.setAttribute(j,"style","float: left;"),a.DOM.setStyle(j,{display:"block",position:"relative",left:0,top:0,overflow:"hidden"}),this.settings.margin>0&&a.DOM.setStyle(j,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(j,this.contentEl);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)},
+resetPosition:function(){var c,g,f,d,j,h;this.settings.target===e?(c=a.DOM.windowWidth(),g=a.DOM.windowHeight(),f=a.DOM.windowScrollTop()+"px"):(c=a.DOM.width(this.settings.target),g=a.DOM.height(this.settings.target),f="0px");d=this.settings.margin>0?c+this.settings.margin:c;j=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);d*=j.length;a.DOM.setStyle(this.el,{top:f,width:c,height:g});a.DOM.setStyle(this.contentEl,{width:d,height:g});f=0;for(d=j.length;f<d;f++)h=j[f],a.DOM.setStyle(h,{width:c,
+height:g}),h=a.DOM.find("img",h)[0],a.isNothing(h)||this.resetImagePosition(h);this.setContentLeftPosition()},resetImagePosition:function(c){if(!a.isNothing(c)){a.DOM.getAttribute(c,"src");var b,f,d,e=a.DOM.width(this.el),h=a.DOM.height(this.el);this.settings.imageScaleMethod==="fitNoUpscale"?(f=c.naturalWidth,d=c.naturalHeight,f>e&&(b=e/f,f=Math.round(f*b),d=Math.round(d*b)),d>h&&(b=h/d,d=Math.round(d*b),f=Math.round(f*b))):(b=c.isLandscape?e/c.naturalWidth:h/c.naturalHeight,f=Math.round(c.naturalWidth*
+b),d=Math.round(c.naturalHeight*b),this.settings.imageScaleMethod==="zoom"?(b=1,d<h?b=h/d:f<e&&(b=e/f),b!==1&&(f=Math.round(f*b),d=Math.round(d*b))):this.settings.imageScaleMethod==="fit"&&(b=1,f>e?b=e/f:d>h&&(b=h/d),b!==1&&(f=Math.round(f*b),d=Math.round(d*b))));a.DOM.setStyle(c,{position:"absolute",width:f,height:d,top:Math.round((h-d)/2)+"px",left:Math.round((e-f)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var c,b,d;c=this.settings.target===e?a.DOM.windowWidth():a.DOM.width(this.settings.target);
+b=this.getItemEls();d=0;this.settings.loop?d=(c+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?d=(b.length-1)*(c+this.settings.margin)*-1:this.currentCacheIndex>0&&(d=(c+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:d+"px"})},show:function(c){this.currentCacheIndex=c;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var c=this.getItemEls(),d,f;d=0;for(f=c.length;d<f;d++)a.Animation.resetTranslate(c[d]);
+a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideByEnd,target:this,action:b.Carousel.SlideByAction.current,cacheIndex:this.currentCacheIndex})},setImages:function(a){var b,d=this.getItemEls();b=this.currentCacheIndex+1;var e=this.currentCacheIndex-1;this.settings.loop?(b>this.cache.images.length-1&&(b=0),e<0&&(e=this.cache.images.length-1),b=this.cache.getImages([e,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[0],
+d[0])):d.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],d[0])):d.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[0],d[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,
+this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]),
+a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])),this.addCacheImageToItemEl(b[0],d[0]))},addCacheImageToItemEl:function(c,d){a.DOM.removeClass(d,b.Carousel.CssClasses.itemError);a.DOM.addClass(d,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(d);a.DOM.setStyle(c.imageEl,{display:"none"});a.DOM.appendChild(c.imageEl,d);a.Animation.resetTranslate(c.imageEl);a.Events.add(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(c,b.Image.EventTypes.onError,
+this.imageErrorHandler);c.load()},slideCarousel:function(c,d,f){if(!this.isSliding){var i,j;i=this.settings.target===e?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;f=a.coalesce(f,this.settings.slideSpeed);if(!(e.Math.abs(j)<1)){switch(d){case a.TouchElement.ActionTypes.swipeLeft:c=i*-1;break;case a.TouchElement.ActionTypes.swipeRight:c=i;break;default:j=c.x-this.touchStartPoint.x,c=e.Math.abs(j)>i/2?j>0?i:i*-1:0}this.lastSlideByAction=c<0?b.Carousel.SlideByAction.next:
+c>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))c=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(c,f)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)},
+getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow();
+this.isSlideshowActive=!0;this.slideshowTimeout=e.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))e.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var c=this.getItemEls();
+this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(c[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex===
+this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex<this.cache.images.length-2?this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(c[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl):this.currentCacheIndex===1?this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl):
+this.currentCacheIndex===this.cache.images.length-2&&this.lastSlideByAction===b.Carousel.SlideByAction.next&&a.DOM.appendChild(c[0],this.contentEl));this.lastSlideByAction!==b.Carousel.SlideByAction.current&&(this.setContentLeftPosition(),this.setImages(!0));a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideByEnd,target:this,action:this.lastSlideByAction,cacheIndex:this.currentCacheIndex});this.isSlideshowActive&&(this.lastSlideByAction!==b.Carousel.SlideByAction.current?this.startSlideshow():
+this.stopSlideshow())}},onTouch:function(b,d){this.stopSlideshow();switch(b){case a.TouchElement.ActionTypes.touchStart:this.touchStartPoint=d;this.touchStartPosition={x:e.parseInt(a.DOM.getStyle(this.contentEl,"left"),0),y:e.parseInt(a.DOM.getStyle(this.contentEl,"top"),0)};break;case a.TouchElement.ActionTypes.touchMove:this.moveCarousel(d);break;case a.TouchElement.ActionTypes.touchMoveEnd:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.slideCarousel(d,
+b)}},onImageLoad:function(c){c=c.target;a.isNothing(c.imageEl.parentNode)||(a.DOM.removeClass(c.imageEl.parentNode,b.Carousel.CssClasses.itemLoading),this.resetImagePosition(c.imageEl));a.Events.remove(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.remove(c,b.Image.EventTypes.onError,this.imageErrorHandler)},onImageError:function(c){c=c.target;a.isNothing(c.imageEl.parentNode)||(a.DOM.removeClass(c.imageEl.parentNode,b.Carousel.CssClasses.itemLoading),a.DOM.addClass(c.imageEl.parentNode,
+b.Carousel.CssClasses.itemError));a.Events.remove(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.remove(c,b.Image.EventTypes.onError,this.imageErrorHandler)}})})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Carousel");d=e.Code.PhotoSwipe;d.Carousel.CarouselClass=d.Carousel.CarouselClass.extend({getStartingPos:function(){var b=this.touchStartPosition;a.isNothing(b)&&(b={x:e.parseInt(a.DOM.getStyle(this.contentEl,"left"),0),y:e.parseInt(a.DOM.getStyle(this.contentEl,"top"),0)});return b},doMoveCarousel:function(b){var c;a.Browser.isCSSTransformSupported?(c={},c[a.Animation._transitionPrefix+"Property"]="all",c[a.Animation._transitionPrefix+"Duration"]=
+"",c[a.Animation._transitionPrefix+"TimingFunction"]="",c[a.Animation._transitionPrefix+"Delay"]="0",c[a.Animation._transformLabel]=a.Browser.is3dSupported?"translate3d("+b+"px, 0px, 0px)":"translate("+b+"px, 0px)",a.DOM.setStyle(this.contentEl,c)):a.isNothing(e.jQuery)||e.jQuery(this.contentEl).stop().css("left",this.getStartingPos().x+b+"px")},doSlideCarousel:function(b,c){var d;if(c<=0)this.slideByEndHandler();else if(a.Browser.isCSSTransformSupported)d=a.coalesce(this.contentEl.style.webkitTransform,
+this.contentEl.style.MozTransform,this.contentEl.style.transform,""),d.indexOf("translate3d("+b)===0?this.slideByEndHandler():d.indexOf("translate("+b)===0?this.slideByEndHandler():a.Animation.slideBy(this.contentEl,b,0,c,this.slideByEndHandler,this.settings.slideTimingFunction);else if(!a.isNothing(e.jQuery)){d={left:this.getStartingPos().x+b+"px"};if(this.settings.animationTimingFunction==="ease-out")this.settings.animationTimingFunction="easeOutQuad";if(a.isNothing(e.jQuery.easing[this.settings.animationTimingFunction]))this.settings.animationTimingFunction=
+"linear";e.jQuery(this.contentEl).animate(d,this.settings.slideSpeed,this.settings.animationTimingFunction,this.slideByEndHandler)}}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.TouchElement);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.CssClasses={toolbar:"ps-toolbar",toolbarContent:"ps-toolbar-content",toolbarTop:"ps-toolbar-top",caption:"ps-caption",captionBottom:"ps-caption-bottom",captionContent:"ps-caption-content",close:"ps-toolbar-close",play:"ps-toolbar-play",previous:"ps-toolbar-previous",previousDisabled:"ps-toolbar-previous-disabled",next:"ps-toolbar-next",nextDisabled:"ps-toolbar-next-disabled"};b.Toolbar.ToolbarAction=
+{close:"close",play:"play",next:"next",previous:"previous",none:"none"};b.Toolbar.EventTypes={onTap:"PhotoSwipeToolbarOnClick",onBeforeShow:"PhotoSwipeToolbarOnBeforeShow",onShow:"PhotoSwipeToolbarOnShow",onBeforeHide:"PhotoSwipeToolbarOnBeforeHide",onHide:"PhotoSwipeToolbarOnHide"};b.Toolbar.getToolbar=function(){return'<div class="'+b.Toolbar.CssClasses.close+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div><div class="'+b.Toolbar.CssClasses.play+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+
+'"></div></div><div class="'+b.Toolbar.CssClasses.previous+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div><div class="'+b.Toolbar.CssClasses.next+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div>'}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.ToolbarClass=d({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var b;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);
+a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,d){var f;this.settings=d;this.cache=c;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);f=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&&
+(f=f+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":f},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl);
+this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];f=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(f=f+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":f},"");a.DOM.setStyle(this.captionEl,
+{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var b,d,f;this.settings.target===e?(this.settings.captionAndToolbarFlipPosition?
+(d=a.DOM.windowScrollTop(),f=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(d=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),f=a.DOM.windowScrollTop()),b=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(d="0",f=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(d=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),f=0),b=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:d+"px",
+width:b});a.DOM.setStyle(this.captionEl,{top:f+"px",width:b})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(c){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(c);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(c);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay>
+0)this.clearTimeout(),this.timeout=e.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))e.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&&
+(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl,
+"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(c){this.clearTimeout();var d;if(c.target===this.nextEl||a.DOM.isChildOf(c.target,this.nextEl))d=b.Toolbar.ToolbarAction.next;else if(c.target===this.previousEl||a.DOM.isChildOf(c.target,this.previousEl))d=b.Toolbar.ToolbarAction.previous;else if(c.target===this.closeEl||a.DOM.isChildOf(c.target,this.closeEl))d=b.Toolbar.ToolbarAction.close;else if(c.target===this.playEl||a.DOM.isChildOf(c.target,
+this.playEl))d=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(d))d=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:d,tapTarget:c.target})},setCaption:function(b){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[b].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0";
+a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}),
+a.DOM.show(this.captionEl))},setToolbarStatus:function(c){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),c>0&&c<this.cache.images.length-1||(c===0&&(a.isNothing(this.previousEl)||a.DOM.addClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled)),c===this.cache.images.length-1&&(a.isNothing(this.nextEl)||a.DOM.addClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled))))},onFadeOut:function(){a.DOM.hide(this.toolbarEl);
+a.DOM.hide(this.captionEl);a.Events.fire(this,{type:b.Toolbar.EventTypes.onHide,target:this})},onTouchStart:function(b){b.preventDefault();a.Events.remove(this.toolbarEl,"click",this.clickHandler);this.handleTap(b)},onTouchMove:function(a){a.preventDefault()},onClick:function(a){a.preventDefault();this.handleTap(a)}})})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.UILayer");e.Code.PhotoSwipe.UILayer.CssClasses={uiLayer:"ps-uilayer"}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.UILayer");var b=e.Code.PhotoSwipe;b.UILayer.UILayerClass=a.TouchElement.TouchElementClass.extend({el:null,settings:null,dispose:function(){var b;this.removeEventHandlers();a.DOM.removeChild(this.el,this.el.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c){this.settings=c;this.el=a.DOM.createElement("div",{"class":b.UILayer.CssClasses.uiLayer},"");a.DOM.setStyle(this.el,{display:"block",position:"absolute",
+left:0,top:0,overflow:"hidden",zIndex:this.settings.zIndex,opacity:0});a.DOM.hide(this.el);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target);this.supr(this.el,{swipe:!0,move:!0,gesture:a.Browser.iOS,doubleTap:!0,preventDefaultTouchEvents:this.settings.preventDefaultTouchEvents})},resetPosition:function(){this.settings.target===e?a.DOM.setStyle(this.el,{top:a.DOM.windowScrollTop()+"px",width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}):a.DOM.setStyle(this.el,
+{top:"0px",width:a.DOM.width(this.settings.target),height:a.DOM.height(this.settings.target)})},show:function(){this.resetPosition();a.DOM.show(this.el);this.addEventHandlers()},addEventHandlers:function(){this.supr()},removeEventHandlers:function(){this.supr()}})})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.ZoomPanRotate");e=e.Code.PhotoSwipe;e.ZoomPanRotate.CssClasses={zoomPanRotate:"ps-zoom-pan-rotate"};e.ZoomPanRotate.EventTypes={onTransform:"PhotoSwipeZoomPanRotateOnTransform"}})(window,window.klass,window.Code.Util);
+(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.ZoomPanRotate");var b=e.Code.PhotoSwipe;b.ZoomPanRotate.ZoomPanRotateClass=d({el:null,settings:null,containerEl:null,imageEl:null,transformSettings:null,panStartingPoint:null,transformEl:null,dispose:function(){var b;a.DOM.removeChild(this.el,this.el.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,d,f){var i,j,h;this.settings=c;this.settings.target===e?(c=document.body,i=a.DOM.windowWidth(),j=a.DOM.windowHeight(),
+h=a.DOM.windowScrollTop()+"px"):(c=this.settings.target,i=a.DOM.width(c),j=a.DOM.height(c),h="0px");this.imageEl=d.imageEl.cloneNode(!1);a.DOM.setStyle(this.imageEl,{zIndex:1});this.transformSettings={startingScale:1,scale:1,startingRotation:0,rotation:0,startingTranslateX:0,startingTranslateY:0,translateX:0,translateY:0};this.el=a.DOM.createElement("div",{"class":b.ZoomPanRotate.CssClasses.zoomPanRotate},"");a.DOM.setStyle(this.el,{left:0,top:h,position:"absolute",width:i,height:j,zIndex:this.settings.zIndex,
+display:"block"});a.DOM.insertBefore(this.el,f.el,c);a.Browser.iOS?(this.containerEl=a.DOM.createElement("div"),a.DOM.setStyle(this.containerEl,{left:0,top:0,width:i,height:j,position:"absolute",zIndex:1}),a.DOM.appendChild(this.imageEl,this.containerEl),a.DOM.appendChild(this.containerEl,this.el),a.Animation.resetTranslate(this.containerEl),a.Animation.resetTranslate(this.imageEl),this.transformEl=this.containerEl):(a.DOM.appendChild(this.imageEl,this.el),this.transformEl=this.imageEl)},setStartingTranslateFromCurrentTransform:function(){var b=
+a.coalesce(this.transformEl.style.webkitTransform,this.transformEl.style.MozTransform,this.transformEl.style.transform);if(!a.isNothing(b)&&(b=b.match(/translate\((.*?)\)/),!a.isNothing(b)))b=b[1].split(", "),this.transformSettings.startingTranslateX=e.parseInt(b[0],10),this.transformSettings.startingTranslateY=e.parseInt(b[1],10)},getScale:function(a){a*=this.transformSettings.startingScale;if(this.settings.minUserZoom!==0&&a<this.settings.minUserZoom)a=this.settings.minUserZoom;else if(this.settings.maxUserZoom!==
+0&&a>this.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint=
+{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,d){if(this.settings.target===e){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var f=(d.y-this.panStartingPoint.y)/this.transformSettings.scale;
+this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(d.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+f)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,d=e.parseInt(this.transformSettings.translateX,10),
+f=e.parseInt(this.transformSettings.translateY,10),i="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+d+"px, "+f+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:i,MozTransform:i,msTransform:i,transform:i});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:d,translateY:f})}})})(window,window.klass,window.Code.Util);
+(function(e,d){d.registerNamespace("Code.PhotoSwipe");var a=e.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow",
+onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"};
+a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(d.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=d.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,c,e){var f,i;f=a.createInstance(b,c,e);c=0;for(e=
+b.length;c<e;c++)if(i=b[c],!d.isNothing(i.nodeType)&&i.nodeType===1)i.__photoSwipeClickHandler=a.onTriggerElementClick.bind(f),d.Events.remove(i,"click",i.__photoSwipeClickHandler),d.Events.add(i,"click",i.__photoSwipeClickHandler);return f};if(e.jQuery)e.jQuery.fn.photoSwipe=function(b,c){return a.attach(this,b,c)};a.detatch=function(b){var c,e,f;c=0;for(e=b.originalImages.length;c<e;c++)f=b.originalImages[c],!d.isNothing(f.nodeType)&&f.nodeType===1&&(d.Events.remove(f,"click",f.__photoSwipeClickHandler),
+delete f.__photoSwipeClickHandler);a.disposeInstance(b)};a.createInstance=function(b,c,e){var f;if(d.isNothing(b))throw"Code.PhotoSwipe.attach: No images passed.";if(!d.isLikeArray(b))throw"Code.PhotoSwipe.createInstance: Images must be an array of elements or image urls.";if(b.length<1)throw"Code.PhotoSwipe.createInstance: No images to passed.";c=d.coalesce(c,{});f=a.getInstance(e);if(d.isNothing(f))f=new a.PhotoSwipeClass(b,c,e),a.instances.push(f);else throw'Code.PhotoSwipe.createInstance: Instance with id "'+
+e+' already exists."';return f};a.disposeInstance=function(b){var c=a.getInstanceIndex(b);if(c<0)throw"Code.PhotoSwipe.disposeInstance: Unable to find instance to dispose.";b.dispose();a.instances.splice(c,1)};a.onTriggerElementClick=function(a){a.preventDefault();this.show(a.currentTarget)};a.getInstance=function(b){var c,d,e;c=0;for(d=a.instances.length;c<d;c++)if(e=a.instances[c],e.id===b)return e;return null};a.getInstanceIndex=function(b){var c,d,e=-1;c=0;for(d=a.instances.length;c<d;c++)if(a.instances[c]===
+b){e=c;break}return e}})(window,window.Code.Util);
+(function(e,d,a,b,c,g,f,i,j){a.registerNamespace("Code.PhotoSwipe");var h=e.Code.PhotoSwipe;h.PhotoSwipeClass=d({id:null,settings:null,isBackEventSupported:null,backButtonClicked:null,currentIndex:null,originalImages:null,mouseWheelStartTime:null,windowDimensions:null,cache:null,documentOverlay:null,carousel:null,uiLayer:null,toolbar:null,zoomPanRotate:null,windowOrientationChangeHandler:null,windowScrollHandler:null,windowHashChangeHandler:null,keyDownHandler:null,windowOrientationEventName:null,
+uiLayerTouchHandler:null,carouselSlideByEndHandler:null,carouselSlideshowStartHandler:null,carouselSlideshowStopHandler:null,toolbarTapHandler:null,toolbarBeforeShowHandler:null,toolbarShowHandler:null,toolbarBeforeHideHandler:null,toolbarHideHandler:null,mouseWheelHandler:null,zoomPanRotateTransformHandler:null,_isResettingPosition:null,_uiWebViewResetPositionTimeout:null,dispose:function(){var b;a.Events.remove(this,h.EventTypes.onBeforeShow);a.Events.remove(this,h.EventTypes.onShow);a.Events.remove(this,
+h.EventTypes.onBeforeHide);a.Events.remove(this,h.EventTypes.onHide);a.Events.remove(this,h.EventTypes.onDisplayImage);a.Events.remove(this,h.EventTypes.onResetPosition);a.Events.remove(this,h.EventTypes.onSlideshowStart);a.Events.remove(this,h.EventTypes.onSlideshowStop);a.Events.remove(this,h.EventTypes.onTouch);a.Events.remove(this,h.EventTypes.onBeforeCaptionAndToolbarShow);a.Events.remove(this,h.EventTypes.onCaptionAndToolbarShow);a.Events.remove(this,h.EventTypes.onBeforeCaptionAndToolbarHide);
+a.Events.remove(this,h.EventTypes.onCaptionAndToolbarHide);a.Events.remove(this,h.EventTypes.onZoomPanRotateTransform);this.removeEventHandlers();a.isNothing(this.documentOverlay)||this.documentOverlay.dispose();a.isNothing(this.carousel)||this.carousel.dispose();a.isNothing(this.uiLayer)||this.uiLayer.dispose();a.isNothing(this.toolbar)||this.toolbar.dispose();this.destroyZoomPanRotate();a.isNothing(this.cache)||this.cache.dispose();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,
+d,f){this.id=a.isNothing(f)?"PhotoSwipe"+(new Date).getTime().toString():f;this.originalImages=c;if(a.Browser.android&&e.navigator.userAgent.match(/Android (\d+.\d+)/).toString().replace(/^.*\,/,"")>=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(e,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0,mouseWheelSpeed:350,
+autoStartSlideshow:!1,jQueryMobile:!a.isNothing(e.jQuery)&&!a.isNothing(e.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:e,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1,captionAndToolbarAutoHideDelay:5E3,
+captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:h.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:h.Cache.Functions.getImageSource,getImageCaption:h.Cache.Functions.getImageCaption,getImageMetaData:h.Cache.Functions.getImageMetaData,cacheMode:h.Cache.Mode.normal};a.extend(this.settings,d);this.settings.target!==e&&(d=a.DOM.getStyle(this.settings.target,"position"),(d!=="relative"||d!==
+"absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==e)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,d;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(d=this.originalImages.length;c<d;c++)if(this.originalImages[c]===
+b){this.currentIndex=c;break}}if(this.currentIndex<0||this.currentIndex>this.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();h.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===e?a.DOM.addClass(e.document.body,h.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,h.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:h.EventTypes.onBeforeShow,
+target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new c.DocumentOverlayClass(this.settings);this.carousel=new g.CarouselClass(this.cache,this.settings);this.uiLayer=new i.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new f.ToolbarClass(this.cache,this.settings)},
+resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:h.EventTypes.onResetPosition,
+target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this),
+this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler=
+this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(e.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(e.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(e,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===e&&a.Events.add(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&
+a.Events.add(e.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?e.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),e.location.hash=this.currentHistoryHashValue),a.Events.add(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(e,"mousewheel",
+this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,g.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,g.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,g.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,f.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar,
+f.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,f.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,f.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,f.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(e.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(e,this.orientationEventName,
+this.windowOrientationChangeHandler);a.Events.remove(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(e.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(e,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);
+a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,g.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,g.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,g.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,f.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,f.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar,
+f.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,f.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,f.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this,
+{type:h.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(e.document.body,h.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;h.unsetActivateInstance(this);a.Events.fire(this,{type:h.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&&
+this.settings.backButtonHideEnabled&&(this.backButtonClicked||e.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()||
+a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,h.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new j.ZoomPanRotateClass(this.settings,
+this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,h.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,h.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,h.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate,
+h.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,h.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1;
+b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){e.setTimeout(function(){var b=this.settings.target===e?e.document.body:this.settings.target;a.DOM.removeClass(b,h.CssClasses.buildingBody);a.DOM.addClass(b,h.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex);
+this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:h.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout=
+e.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(e.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash:
+this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale,
+this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate();
+this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point);
+break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===e&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,d=e.parseInt(a.DOM.getStyle(c,"top"),10),f=e.parseInt(a.DOM.getStyle(c,"left"),10),g=f+a.DOM.width(c),c=d+a.DOM.height(c);if(b.point.x<f)b.point.x=f;else if(b.point.x>g)b.point.x=g;if(b.point.y<d)b.point.y=d;else if(b.point.y>c)b.point.y=c;
+this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:h.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:h.EventTypes.onDisplayImage,
+target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case f.ToolbarAction.next:this.next();break;case f.ToolbarAction.previous:this.previous();break;case f.ToolbarAction.close:this.hide();break;case f.ToolbarAction.play:this.play()}a.Events.fire(this,{type:h.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)<this.settings.mouseWheelSpeed))this.mouseWheelStartTime=
+b.timeStamp,this.settings.invertMouseWheel&&(c*=-1),c<0?this.next():c>0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:h.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:h.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:h.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:h.EventTypes.onCaptionAndToolbarShow,
+target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:h.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:h.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:h.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache,
+window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate);
Index: /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.min.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/code.photoswipe.min.js	(revision 25596)
@@ -0,0 +1,172 @@
+// PhotoSwipe - http://www.photoswipe.com/
+// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com)
+// Licensed under the MIT license
+// version: 3.0.5
+(function(e){if(!Function.prototype.bind)Function.prototype.bind=function(c){var a=[].slice,b=a.call(arguments,1),d=this,f=function(){},g=function(){return d.apply(this instanceof f?this:c||{},b.concat(a.call(arguments)))};f.prototype=d.prototype;g.prototype=new f;return g};if(typeof e.Code==="undefined")e.Code={};e.Code.Util={registerNamespace:function(){var c=arguments,a=null,b,d,f,g,h;b=0;for(g=c.length;b<g;b++){f=c[b];f=f.split(".");a=f[0];typeof e[a]==="undefined"&&(e[a]={});a=e[a];d=1;for(h=
+f.length;d<h;++d)a[f[d]]=a[f[d]]||{},a=a[f[d]]}},coalesce:function(){var c,a;c=0;for(a=arguments.length;c<a;c++)if(!this.isNothing(arguments[c]))return arguments[c];return null},extend:function(c,a,b){var d;this.isNothing(b)&&(b=!0);if(c&&a&&this.isObject(a))for(d in a)this.objectHasProperty(a,d)&&(b?c[d]=a[d]:typeof c[d]==="undefined"&&(c[d]=a[d]))},clone:function(c){var a={};this.extend(a,c);return a},isObject:function(c){return c instanceof Object},isFunction:function(c){return{}.toString.call(c)===
+"[object Function]"},isArray:function(c){return c instanceof Array},isLikeArray:function(c){return typeof c.length==="number"},isNumber:function(c){return typeof c==="number"},isString:function(c){return typeof c==="string"},isNothing:function(c){if(typeof c==="undefined"||c===null)return!0;return!1},swapArrayElements:function(c,a,b){var d=c[a];c[a]=c[b];c[b]=d},trim:function(c){return c.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},toCamelCase:function(c){return c.replace(/(\-[a-z])/g,function(a){return a.toUpperCase().replace("-",
+"")})},toDashedCase:function(c){return c.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})},arrayIndexOf:function(c,a,b){var d,f,g,e;g=-1;d=0;for(f=a.length;d<f;d++)if(e=a[d],this.isNothing(b)){if(e===c){g=d;break}}else if(this.objectHasProperty(e,b)&&e[b]===c){g=d;break}return g},objectHasProperty:function(c,a){return c.hasOwnProperty?c.hasOwnProperty(a):"undefined"!==typeof c[a]}}})(window);
+(function(e,c){c.Browser={ua:null,version:null,safari:null,webkit:null,opera:null,msie:null,chrome:null,mozilla:null,android:null,blackberry:null,iPad:null,iPhone:null,iPod:null,iOS:null,is3dSupported:null,isCSSTransformSupported:null,isTouchSupported:null,isGestureSupported:null,_detect:function(){this.ua=e.navigator.userAgent;this.version=this.ua.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[];this.safari=/Safari/gi.test(e.navigator.appVersion);this.webkit=/webkit/i.test(this.ua);this.opera=/opera/i.test(this.ua);
+this.msie=/msie/i.test(this.ua)&&!this.opera;this.chrome=/Chrome/i.test(this.ua);this.firefox=/Firefox/i.test(this.ua);this.fennec=/Fennec/i.test(this.ua);this.mozilla=/mozilla/i.test(this.ua)&&!/(compatible|webkit)/.test(this.ua);this.android=/android/i.test(this.ua);this.blackberry=/blackberry/i.test(this.ua);this.iOS=/iphone|ipod|ipad/gi.test(e.navigator.platform);this.iPad=/ipad/gi.test(e.navigator.platform);this.iPhone=/iphone/gi.test(e.navigator.platform);this.iPod=/ipod/gi.test(e.navigator.platform);
+var a=document.createElement("div");this.is3dSupported=!c.isNothing(a.style.WebkitPerspective);this.isCSSTransformSupported=!c.isNothing(a.style.WebkitTransform)||!c.isNothing(a.style.MozTransform)||!c.isNothing(a.style.transformProperty);this.isTouchSupported=this.isEventSupported("touchstart");this.isGestureSupported=this.isEventSupported("gesturestart")},_eventTagNames:{select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"},isEventSupported:function(a){var b=
+document.createElement(this._eventTagNames[a]||"div"),d,a="on"+a;d=c.objectHasProperty(b,a);d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d},isLandscape:function(){return c.DOM.windowWidth()>c.DOM.windowHeight()}};c.Browser._detect()})(window,window.Code.Util);
+(function(e,c){c.extend(c,{Events:{add:function(a,b,d){this._checkHandlersProperty(a);b==="mousewheel"&&(b=this._normaliseMouseWheelType());typeof a.__eventHandlers[b]==="undefined"&&(a.__eventHandlers[b]=[]);a.__eventHandlers[b].push(d);this._isBrowserObject(a)&&a.addEventListener(b,d,!1)},remove:function(a,b,d){this._checkHandlersProperty(a);b==="mousewheel"&&(b=this._normaliseMouseWheelType());if(a.__eventHandlers[b]instanceof Array){var f,g,e=a.__eventHandlers[b];if(c.isNothing(d)){if(this._isBrowserObject(a)){f=
+0;for(g=e.length;f<g;f++)a.removeEventListener(b,e[f],!1)}a.__eventHandlers[b]=[]}else{f=0;for(g=e.length;f<g;f++)if(e[f]===d){e.splice(f,1);break}this._isBrowserObject(a)&&a.removeEventListener(b,d,!1)}}},fire:function(a,b){var d,f,g,h,j=Array.prototype.slice.call(arguments).splice(2);b==="mousewheel"&&(b=this._normaliseMouseWheelType());if(this._isBrowserObject(a)){if(typeof b!=="string")throw"type must be a string for DOM elements";g=this._NATIVE_EVENTS[b];d=document.createEvent(g?"HTMLEvents":
+"UIEvents");d[g?"initEvent":"initUIEvent"](b,!0,!0,e,1);if(j.length<1){a.dispatchEvent(d);return}}this._checkHandlersProperty(a);d=typeof b==="string"?{type:b}:b;if(!d.target)d.target=a;if(!d.type)throw Error("Event object missing 'type' property.");if(a.__eventHandlers[d.type]instanceof Array){g=a.__eventHandlers[d.type];j.unshift(d);d=0;for(f=g.length;d<f;d++)h=g[d],c.isNothing(h)||h.apply(a,j)}},getMousePosition:function(a){var b={x:0,y:0};if(a.pageX)b.x=a.pageX;else if(a.clientX)b.x=a.clientX+
+(document.documentElement.scrollLeft||document.body.scrollLeft);if(a.pageY)b.y=a.pageY;else if(a.clientY)b.y=a.clientY+(document.documentElement.scrollTop||document.body.scrollTop);return b},getTouchEvent:function(a){return a},getWheelDelta:function(a){var b=0;c.isNothing(a.wheelDelta)?c.isNothing(a.detail)||(b=-a.detail/3):b=a.wheelDelta/120;return b},domReady:function(a){document.addEventListener("DOMContentLoaded",a,!1)},_checkHandlersProperty:function(a){c.isNothing(a.__eventHandlers)&&c.extend(a,
+{__eventHandlers:{}})},_isBrowserObject:function(a){if(a===e||a===e.document)return!0;return this._isElement(a)||this._isNode(a)},_isElement:function(a){return typeof e.HTMLElement==="object"?a instanceof e.HTMLElement:typeof a==="object"&&a.nodeType===1&&typeof a.nodeName==="string"},_isNode:function(a){return typeof e.Node==="object"?a instanceof e.Node:typeof a==="object"&&typeof a.nodeType==="number"&&typeof a.nodeName==="string"},_normaliseMouseWheelType:function(){if(c.Browser.isEventSupported("mousewheel"))return"mousewheel";
+return"DOMMouseScroll"},_NATIVE_EVENTS:{click:1,dblclick:1,mouseup:1,mousedown:1,contextmenu:1,mousewheel:1,DOMMouseScroll:1,mouseover:1,mouseout:1,mousemove:1,selectstart:1,selectend:1,keydown:1,keypress:1,keyup:1,orientationchange:1,touchstart:1,touchmove:1,touchend:1,touchcancel:1,gesturestart:1,gesturechange:1,gestureend:1,focus:1,blur:1,change:1,reset:1,select:1,submit:1,load:1,unload:1,beforeunload:1,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1}}})})(window,
+window.Code.Util);
+(function(e,c){c.extend(c,{DOM:{setData:function(a,b,d){if(c.isLikeArray(a)){var f,g;f=0;for(g=a.length;f<g;f++)c.DOM._setData(a[f],b,d)}else c.DOM._setData(a,b,d)},_setData:function(a,b,d){c.DOM.setAttribute(a,"data-"+b,d)},getData:function(a,b,d){return c.DOM.getAttribute(a,"data-"+b,d)},removeData:function(a,b){if(c.isLikeArray(a)){var d,f;d=0;for(f=a.length;d<f;d++)c.DOM._removeData(a[d],b)}else c.DOM._removeData(a,b)},_removeData:function(a,b){c.DOM.removeAttribute(a,"data-"+b)},isChildOf:function(a,
+b){if(b===a)return!1;for(;a&&a!==b;)a=a.parentNode;return a===b},find:function(a,b){if(c.isNothing(b))b=e.document;var d=b.querySelectorAll(a),f=[],g,h;g=0;for(h=d.length;g<h;g++)f.push(d[g]);return f},createElement:function(a,b,d){var f,a=document.createElement(a);for(f in b)c.objectHasProperty(b,f)&&a.setAttribute(f,b[f]);a.innerHTML=d||"";return a},appendChild:function(a,b){b.appendChild(a)},insertBefore:function(a,b,d){d.insertBefore(a,b)},appendText:function(a,b){c.DOM.appendChild(document.createTextNode(a),
+b)},appendToBody:function(a){this.appendChild(a,document.body)},removeChild:function(a,b){b.removeChild(a)},removeChildren:function(a){if(a.hasChildNodes())for(;a.childNodes.length>=1;)a.removeChild(a.childNodes[a.childNodes.length-1])},hasAttribute:function(a,b){return!c.isNothing(a.getAttribute(b))},getAttribute:function(a,b,d){a=a.getAttribute(b);c.isNothing(a)&&!c.isNothing(d)&&(a=d);return a},setAttribute:function(a,b,d){if(c.isLikeArray(a)){var f,g;f=0;for(g=a.length;f<g;f++)c.DOM._setAttribute(a[f],
+b,d)}else c.DOM._setAttribute(a,b,d)},_setAttribute:function(a,b,d){a.setAttribute(b,d)},removeAttribute:function(a,b){if(c.isLikeArray(a)){var d,f;d=0;for(f=a.length;d<f;d++)c.DOM._removeAttribute(a[d],b)}else c.DOM._removeAttribute(a,b)},_removeAttribute:function(a,b){this.hasAttribute(a,b)&&a.removeAttribute(b)},addClass:function(a,b){if(c.isLikeArray(a)){var d,f;d=0;for(f=a.length;d<f;d++)c.DOM._addClass(a[d],b)}else c.DOM._addClass(a,b)},_addClass:function(a,b){var d=c.DOM.getAttribute(a,"class",
+"");RegExp("(?:^|\\s+)"+b+"(?:\\s+|$)").test(d)||(d!==""&&(d+=" "),d+=b,c.DOM.setAttribute(a,"class",d))},removeClass:function(a,b){if(c.isLikeArray(a)){var d,f;d=0;for(f=a.length;d<f;d++)c.DOM._removeClass(a[d],b)}else c.DOM._removeClass(a,b)},_removeClass:function(a,b){var d=c.DOM.getAttribute(a,"class",""),d=c.trim(d).split(" "),f="",g,e;g=0;for(e=d.length;g<e;g++)d[g]!==b&&(f!==""&&(f+=" "),f+=d[g]);f===""?c.DOM.removeAttribute(a,"class"):c.DOM.setAttribute(a,"class",f)},hasClass:function(a,b){return RegExp("(?:^|\\s+)"+
+b+"(?:\\s+|$)").test(c.DOM.getAttribute(a,"class",""))},setStyle:function(a,b,d){if(c.isLikeArray(a)){var f,g;f=0;for(g=a.length;f<g;f++)c.DOM._setStyle(a[f],b,d)}else c.DOM._setStyle(a,b,d)},_setStyle:function(a,b,d){var f;if(c.isObject(b))for(f in b)c.objectHasProperty(b,f)&&(f==="width"?c.DOM.width(a,b[f]):f==="height"?c.DOM.height(a,b[f]):a.style[f]=b[f]);else a.style[b]=d},getStyle:function(a,b){var d=e.getComputedStyle(a,"").getPropertyValue(b);d===""&&(d=a.style[b]);return d},hide:function(a){if(c.isLikeArray(a)){var b,
+d;b=0;for(d=a.length;b<d;b++)c.DOM._hide(a[b])}else c.DOM._hide(a)},_hide:function(a){c.DOM.setData(a,"ccl-disp",c.DOM.getStyle(a,"display"));c.DOM.setStyle(a,"display","none")},show:function(a){if(c.isLikeArray(a)){var b,d;b=0;for(d=a.length;b<d;b++)c.DOM._show(a[b])}else c.DOM._show(a)},_show:function(a){if(c.DOM.getStyle(a,"display")==="none"){var b=c.DOM.getData(a,"ccl-disp","block");if(b==="none"||b==="")b="block";c.DOM.setStyle(a,"display",b)}},width:function(a,b){if(!c.isNothing(b))c.isNumber(b)&&
+(b+="px"),a.style.width=b;return this._getDimension(a,"width")},outerWidth:function(a){var b=c.DOM.width(a);b+=parseInt(c.DOM.getStyle(a,"padding-left"),10)+parseInt(c.DOM.getStyle(a,"padding-right"),10);b+=parseInt(c.DOM.getStyle(a,"margin-left"),10)+parseInt(c.DOM.getStyle(a,"margin-right"),10);b+=parseInt(c.DOM.getStyle(a,"border-left-width"),10)+parseInt(c.DOM.getStyle(a,"border-right-width"),10);return b},height:function(a,b){if(!c.isNothing(b))c.isNumber(b)&&(b+="px"),a.style.height=b;return this._getDimension(a,
+"height")},_getDimension:function(a,b){var d=e.parseInt(e.getComputedStyle(a,"").getPropertyValue(b)),f;if(isNaN(d))f={display:a.style.display,left:a.style.left},a.style.display="block",a.style.left="-1000000px",d=e.parseInt(e.getComputedStyle(a,"").getPropertyValue(b)),a.style.display=f.display,a.style.left=f.left;return d},outerHeight:function(a){var b=c.DOM.height(a);b+=parseInt(c.DOM.getStyle(a,"padding-top"),10)+parseInt(c.DOM.getStyle(a,"padding-bottom"),10);b+=parseInt(c.DOM.getStyle(a,"margin-top"),
+10)+parseInt(c.DOM.getStyle(a,"margin-bottom"),10);b+=parseInt(c.DOM.getStyle(a,"border-top-width"),10)+parseInt(c.DOM.getStyle(a,"border-bottom-width"),10);return b},documentWidth:function(){return c.DOM.width(document.documentElement)},documentHeight:function(){return c.DOM.height(document.documentElement)},documentOuterWidth:function(){return c.DOM.width(document.documentElement)},documentOuterHeight:function(){return c.DOM.outerHeight(document.documentElement)},bodyWidth:function(){return c.DOM.width(document.body)},
+bodyHeight:function(){return c.DOM.height(document.body)},bodyOuterWidth:function(){return c.DOM.outerWidth(document.body)},bodyOuterHeight:function(){return c.DOM.outerHeight(document.body)},windowWidth:function(){return e.innerWidth},windowHeight:function(){return e.innerHeight},windowScrollLeft:function(){return e.pageXOffset},windowScrollTop:function(){return e.pageYOffset}}})})(window,window.Code.Util);
+(function(e,c){c.extend(c,{Animation:{_applyTransitionDelay:50,_transitionEndLabel:e.document.documentElement.style.webkitTransition!==void 0?"webkitTransitionEnd":"transitionend",_transitionEndHandler:null,_transitionPrefix:e.document.documentElement.style.webkitTransition!==void 0?"webkitTransition":e.document.documentElement.style.MozTransition!==void 0?"MozTransition":"transition",_transformLabel:e.document.documentElement.style.webkitTransform!==void 0?"webkitTransform":e.document.documentElement.style.MozTransition!==
+void 0?"MozTransform":"transform",_getTransitionEndHandler:function(){if(c.isNothing(this._transitionEndHandler))this._transitionEndHandler=this._onTransitionEnd.bind(this);return this._transitionEndHandler},stop:function(a){if(c.Browser.isCSSTransformSupported){var b={};c.Events.remove(a,this._transitionEndLabel,this._getTransitionEndHandler());c.isNothing(a.callbackLabel)&&delete a.callbackLabel;b[this._transitionPrefix+"Property"]="";b[this._transitionPrefix+"Duration"]="";b[this._transitionPrefix+
+"TimingFunction"]="";b[this._transitionPrefix+"Delay"]="";b[this._transformLabel]="";c.DOM.setStyle(a,b)}else c.isNothing(e.jQuery)||e.jQuery(a).stop(!0,!0)},fadeIn:function(a,b,d,f,g){g=c.coalesce(g,1);g<=0&&(g=1);if(b<=0&&(c.DOM.setStyle(a,"opacity",g),!c.isNothing(d))){d(a);return}c.DOM.getStyle(a,"opacity")>=1&&c.DOM.setStyle(a,"opacity",0);c.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",g,b,d,f):c.isNothing(e.jQuery)||e.jQuery(a).fadeTo(b,g,d)},fadeTo:function(a,b,d,f,c){this.fadeIn(a,
+d,f,c,b)},fadeOut:function(a,b,d,f){if(b<=0&&(c.DOM.setStyle(a,"opacity",0),!c.isNothing(d))){d(a);return}c.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",0,b,d,f):e.jQuery(a).fadeTo(b,0,d)},slideBy:function(a,b,d,f,g,h){var j={},b=c.coalesce(b,0),d=c.coalesce(d,0),h=c.coalesce(h,"ease-out");j[this._transitionPrefix+"Property"]="all";j[this._transitionPrefix+"Delay"]="0";f===0?(j[this._transitionPrefix+"Duration"]="",j[this._transitionPrefix+"TimingFunction"]=""):(j[this._transitionPrefix+
+"Duration"]=f+"ms",j[this._transitionPrefix+"TimingFunction"]=c.coalesce(h,"ease-out"),c.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler()));j[this._transformLabel]=c.Browser.is3dSupported?"translate3d("+b+"px, "+d+"px, 0px)":"translate("+b+"px, "+d+"px)";if(!c.isNothing(g))a.cclallcallback=g;c.DOM.setStyle(a,j);f===0&&e.setTimeout(function(){this._leaveTransforms(a)}.bind(this),this._applyTransitionDelay)},resetTranslate:function(a){var b={};b[this._transformLabel]=b[this._transformLabel]=
+c.Browser.is3dSupported?"translate3d(0px, 0px, 0px)":"translate(0px, 0px)";c.DOM.setStyle(a,b)},_applyTransition:function(a,b,d,f,g,h){var j={},h=c.coalesce(h,"ease-in");j[this._transitionPrefix+"Property"]=b;j[this._transitionPrefix+"Duration"]=f+"ms";j[this._transitionPrefix+"TimingFunction"]=h;j[this._transitionPrefix+"Delay"]="0";c.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler());c.DOM.setStyle(a,j);c.isNothing(g)||(a["ccl"+b+"callback"]=g);e.setTimeout(function(){c.DOM.setStyle(a,
+b,d)},this._applyTransitionDelay)},_onTransitionEnd:function(a){c.Events.remove(a.currentTarget,this._transitionEndLabel,this._getTransitionEndHandler());this._leaveTransforms(a.currentTarget)},_leaveTransforms:function(a){var b=a.style[this._transitionPrefix+"Property"],d=b!==""?"ccl"+b+"callback":"cclallcallback",f,b=c.coalesce(a.style.webkitTransform,a.style.MozTransform,a.style.transform),g,h=e.parseInt(c.DOM.getStyle(a,"left"),0),j=e.parseInt(c.DOM.getStyle(a,"top"),0),i,l,k={};b!==""&&(b=c.Browser.is3dSupported?
+b.match(/translate3d\((.*?)\)/):b.match(/translate\((.*?)\)/),c.isNothing(b)||(g=b[1].split(", "),i=e.parseInt(g[0],0),l=e.parseInt(g[1],0)));k[this._transitionPrefix+"Property"]="";k[this._transitionPrefix+"Duration"]="";k[this._transitionPrefix+"TimingFunction"]="";k[this._transitionPrefix+"Delay"]="";c.DOM.setStyle(a,k);e.setTimeout(function(){if(!c.isNothing(g))k={},k[this._transformLabel]="",k.left=h+i+"px",k.top=j+l+"px",c.DOM.setStyle(a,k);c.isNothing(a[d])||(f=a[d],delete a[d],f(a))}.bind(this),
+this._applyTransitionDelay)}}})})(window,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.EventTypes={onTouch:"CodeUtilTouchElementOnTouch"};a.TouchElement.ActionTypes={touchStart:"touchStart",touchMove:"touchMove",touchEnd:"touchEnd",touchMoveEnd:"touchMoveEnd",tap:"tap",doubleTap:"doubleTap",swipeLeft:"swipeLeft",swipeRight:"swipeRight",swipeUp:"swipeUp",swipeDown:"swipeDown",gestureStart:"gestureStart",gestureChange:"gestureChange",gestureEnd:"gestureEnd"}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.TouchElementClass=c({el:null,captureSettings:null,touchStartPoint:null,touchEndPoint:null,touchStartTime:null,doubleTapTimeout:null,touchStartHandler:null,touchMoveHandler:null,touchEndHandler:null,mouseDownHandler:null,mouseMoveHandler:null,mouseUpHandler:null,mouseOutHandler:null,gestureStartHandler:null,gestureChangeHandler:null,gestureEndHandler:null,swipeThreshold:null,swipeTimeThreshold:null,doubleTapSpeed:null,dispose:function(){var b;
+this.removeEventHandlers();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(b,d){this.el=b;this.captureSettings={swipe:!1,move:!1,gesture:!1,doubleTap:!1,preventDefaultTouchEvents:!0};a.extend(this.captureSettings,d);this.swipeThreshold=50;this.doubleTapSpeed=this.swipeTimeThreshold=250;this.touchStartPoint={x:0,y:0};this.touchEndPoint={x:0,y:0}},addEventHandlers:function(){if(a.isNothing(this.touchStartHandler))this.touchStartHandler=this.onTouchStart.bind(this),this.touchMoveHandler=
+this.onTouchMove.bind(this),this.touchEndHandler=this.onTouchEnd.bind(this),this.mouseDownHandler=this.onMouseDown.bind(this),this.mouseMoveHandler=this.onMouseMove.bind(this),this.mouseUpHandler=this.onMouseUp.bind(this),this.mouseOutHandler=this.onMouseOut.bind(this),this.gestureStartHandler=this.onGestureStart.bind(this),this.gestureChangeHandler=this.onGestureChange.bind(this),this.gestureEndHandler=this.onGestureEnd.bind(this);a.Events.add(this.el,"touchstart",this.touchStartHandler);this.captureSettings.move&&
+a.Events.add(this.el,"touchmove",this.touchMoveHandler);a.Events.add(this.el,"touchend",this.touchEndHandler);a.Events.add(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.add(this.el,"gesturestart",this.gestureStartHandler),a.Events.add(this.el,"gesturechange",this.gestureChangeHandler),a.Events.add(this.el,"gestureend",this.gestureEndHandler))},removeEventHandlers:function(){a.Events.remove(this.el,"touchstart",this.touchStartHandler);
+this.captureSettings.move&&a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);a.Events.remove(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.remove(this.el,"gesturestart",this.gestureStartHandler),a.Events.remove(this.el,"gesturechange",this.gestureChangeHandler),a.Events.remove(this.el,"gestureend",this.gestureEndHandler))},getTouchPoint:function(a){return{x:a[0].pageX,
+y:a[0].pageY}},fireTouchEvent:function(b){var d=0,f=0,c=0,h,d=this.touchEndPoint.x-this.touchStartPoint.x,f=this.touchEndPoint.y-this.touchStartPoint.y,c=Math.sqrt(d*d+f*f);if(this.captureSettings.swipe&&(h=new Date,h-=this.touchStartTime,h<=this.swipeTimeThreshold)){if(e.Math.abs(d)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:d<0?a.TouchElement.ActionTypes.swipeLeft:a.TouchElement.ActionTypes.swipeRight,targetEl:b.target,
+currentTargetEl:b.currentTarget});return}if(e.Math.abs(f)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:f<0?a.TouchElement.ActionTypes.swipeUp:a.TouchElement.ActionTypes.swipeDown,targetEl:b.target,currentTargetEl:b.currentTarget});return}}c>1?a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMoveEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}):
+this.captureSettings.doubleTap?a.isNothing(this.doubleTapTimeout)?this.doubleTapTimeout=e.setTimeout(function(){this.doubleTapTimeout=null;a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})}.bind(this),this.doubleTapSpeed):(e.clearTimeout(this.doubleTapTimeout),this.doubleTapTimeout=null,a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,
+action:a.TouchElement.ActionTypes.doubleTap,targetEl:b.target,currentTargetEl:b.currentTarget})):a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})},onTouchStart:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();a.Events.remove(this.el,"mousedown",this.mouseDownHandler);var d=a.Events.getTouchEvent(b).touches;d.length>1&&this.captureSettings.gesture?
+this.isGesture=!0:(this.touchStartTime=new Date,this.isGesture=!1,this.touchStartPoint=this.getTouchPoint(d),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget}))},onTouchMove:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();if(!this.isGesture||!this.captureSettings.gesture){var d=a.Events.getTouchEvent(b).touches;a.Events.fire(this,
+{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,point:this.getTouchPoint(d),targetEl:b.target,currentTargetEl:b.currentTarget})}},onTouchEnd:function(b){if(!this.isGesture||!this.captureSettings.gesture){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();var d=a.Events.getTouchEvent(b);this.touchEndPoint=this.getTouchPoint(!a.isNothing(d.changedTouches)?d.changedTouches:d.touches);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,
+target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)}},onMouseDown:function(b){b.preventDefault();a.Events.remove(this.el,"touchstart",this.mouseDownHandler);a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);this.captureSettings.move&&a.Events.add(this.el,"mousemove",this.mouseMoveHandler);a.Events.add(this.el,"mouseup",this.mouseUpHandler);
+a.Events.add(this.el,"mouseout",this.mouseOutHandler);this.touchStartTime=new Date;this.isGesture=!1;this.touchStartPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseMove:function(b){b.preventDefault();a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,
+point:a.Events.getMousePosition(b),targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseUp:function(b){b.preventDefault();this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler);a.Events.remove(this.el,"mouseup",this.mouseUpHandler);a.Events.remove(this.el,"mouseout",this.mouseOutHandler);this.touchEndPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,
+targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)},onMouseOut:function(b){var d=b.relatedTarget;if(!(this.el===d||a.DOM.isChildOf(d,this.el)))b.preventDefault(),this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler),a.Events.remove(this.el,"mouseup",this.mouseUpHandler),a.Events.remove(this.el,"mouseout",this.mouseOutHandler),this.touchEndPoint=a.Events.getMousePosition(b),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,
+action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}),this.fireTouchEvent(b)},onGestureStart:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureStart,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureChange:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b);
+a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureChange,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureEnd:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureEnd,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})}})})(window,window.klass,
+window.Code.Util);(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Image");e.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=e.Code.PhotoSwipe;b.Image.ImageClass=c({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var d;this.shrinkImage();for(d in this)a.objectHasProperty(this,d)&&(this[d]=null)},initialize:function(a,b,c,h){this.refObj=a;this.src=this.originalSrc=b;this.caption=c;this.metaData=h;this.imageEl=new e.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler=
+this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror=
+this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth,
+this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window,
+window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Cache");e=e.Code.PhotoSwipe;e.Cache.Mode={normal:"normal",aggressive:"aggressive"};e.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var d,f,c;d=0;for(f=b.childNodes.length;d<f;d++)if(c=b.childNodes[d],b.childNodes[d].nodeName==="IMG")return a.DOM.getAttribute(c,"alt")},getImageMetaData:function(){return{}}}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Cache");var b=e.Code.PhotoSwipe;b.Cache.CacheClass=c({images:null,settings:null,dispose:function(){var b,f,c;if(!a.isNothing(this.images)){f=0;for(c=this.images.length;f<c;f++)this.images[f].dispose();this.images.length=0}for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(a,f){var c,e,j,i,l,k;this.settings=f;this.images=[];c=0;for(e=a.length;c<e;c++)j=a[c],i=this.settings.getImageSource(j),l=this.settings.getImageCaption(j),
+k=this.settings.getImageMetaData(j),this.images.push(new b.Image.ImageClass(j,i,l,k))},getImages:function(d){var f,c,e=[],j;f=0;for(c=d.length;f<c;f++){j=this.images[d[f]];if(this.settings.cacheMode===b.Cache.Mode.aggressive)j.cacheDoNotShrink=!0;e.push(j)}if(this.settings.cacheMode===b.Cache.Mode.aggressive){f=0;for(c=this.images.length;f<c;f++)j=this.images[f],a.objectHasProperty(j,"cacheDoNotShrink")?delete j.cacheDoNotShrink:j.shrinkImage()}return e}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Image);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.DocumentOverlay");e.Code.PhotoSwipe.DocumentOverlay.CssClasses={documentOverlay:"ps-document-overlay"}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.DocumentOverlay");var b=e.Code.PhotoSwipe;b.DocumentOverlay.DocumentOverlayClass=c({el:null,settings:null,initialBodyHeight:null,dispose:function(){var b;a.Animation.stop(this.el);a.DOM.removeChild(this.el,this.el.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(d){this.settings=d;this.el=a.DOM.createElement("div",{"class":b.DocumentOverlay.CssClasses.documentOverlay},"");a.DOM.setStyle(this.el,{display:"block",
+position:"absolute",left:0,top:0,zIndex:this.settings.zIndex});a.DOM.hide(this.el);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target);a.Animation.resetTranslate(this.el);this.initialBodyHeight=a.DOM.bodyOuterHeight()},resetPosition:function(){var b,f,c;if(this.settings.target===e){b=a.DOM.windowWidth();f=a.DOM.bodyOuterHeight()*2;c=this.settings.jQueryMobile?a.DOM.windowScrollTop()+"px":"0px";if(f<1)f=this.initialBodyHeight;a.DOM.windowHeight()>f&&
+(f=a.DOM.windowHeight())}else b=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),c="0px";a.DOM.setStyle(this.el,{width:b,height:f,top:c})},fadeIn:function(b,f){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,b,f)}})})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Carousel");e=e.Code.PhotoSwipe;e.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};e.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};e.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window,
+window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=e.Code.PhotoSwipe;b.Carousel.CarouselClass=c({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var d,f,c;f=0;for(c=this.cache.images.length;f<c;f++)a.Events.remove(this.cache.images[f],b.Image.EventTypes.onLoad,
+this.imageLoadHandler),a.Events.remove(this.cache.images[f],b.Image.EventTypes.onError,this.imageErrorHandler);this.stopSlideshow();a.Animation.stop(this.el);a.DOM.removeChild(this.el,this.el.parentNode);for(d in this)a.objectHasProperty(this,d)&&(this[d]=null)},initialize:function(d,f){var c,h,j;this.cache=d;this.settings=f;this.slideByEndHandler=this.onSlideByEnd.bind(this);this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler=this.onImageError.bind(this);this.currentCacheIndex=
+0;this.isSlideshowActive=this.isSliding=!1;if(this.cache.images.length<3)this.settings.loop=!1;this.el=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.carousel},"");a.DOM.setStyle(this.el,{display:"block",position:"absolute",left:0,top:0,overflow:"hidden",zIndex:this.settings.zIndex});a.DOM.hide(this.el);this.contentEl=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.content},"");a.DOM.setStyle(this.contentEl,{display:"block",position:"absolute",left:0,top:0});a.DOM.appendChild(this.contentEl,
+this.el);h=d.images.length<3?d.images.length:3;for(c=0;c<h;c++)j=a.DOM.createElement("div",{"class":b.Carousel.CssClasses.item+" "+b.Carousel.CssClasses.item+"-"+c},""),a.DOM.setAttribute(j,"style","float: left;"),a.DOM.setStyle(j,{display:"block",position:"relative",left:0,top:0,overflow:"hidden"}),this.settings.margin>0&&a.DOM.setStyle(j,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(j,this.contentEl);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)},
+resetPosition:function(){var d,f,c,h,j,i;this.settings.target===e?(d=a.DOM.windowWidth(),f=a.DOM.windowHeight(),c=a.DOM.windowScrollTop()+"px"):(d=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),c="0px");h=this.settings.margin>0?d+this.settings.margin:d;j=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);h*=j.length;a.DOM.setStyle(this.el,{top:c,width:d,height:f});a.DOM.setStyle(this.contentEl,{width:h,height:f});c=0;for(h=j.length;c<h;c++)i=j[c],a.DOM.setStyle(i,{width:d,
+height:f}),i=a.DOM.find("img",i)[0],a.isNothing(i)||this.resetImagePosition(i);this.setContentLeftPosition()},resetImagePosition:function(b){if(!a.isNothing(b)){a.DOM.getAttribute(b,"src");var c,e,h,j=a.DOM.width(this.el),i=a.DOM.height(this.el);this.settings.imageScaleMethod==="fitNoUpscale"?(e=b.naturalWidth,h=b.naturalHeight,e>j&&(c=j/e,e=Math.round(e*c),h=Math.round(h*c)),h>i&&(c=i/h,h=Math.round(h*c),e=Math.round(e*c))):(c=b.isLandscape?j/b.naturalWidth:i/b.naturalHeight,e=Math.round(b.naturalWidth*
+c),h=Math.round(b.naturalHeight*c),this.settings.imageScaleMethod==="zoom"?(c=1,h<i?c=i/h:e<j&&(c=j/e),c!==1&&(e=Math.round(e*c),h=Math.round(h*c))):this.settings.imageScaleMethod==="fit"&&(c=1,e>j?c=j/e:h>i&&(c=i/h),c!==1&&(e=Math.round(e*c),h=Math.round(h*c))));a.DOM.setStyle(b,{position:"absolute",width:e,height:h,top:Math.round((i-h)/2)+"px",left:Math.round((j-e)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var b,c,g;b=this.settings.target===e?a.DOM.windowWidth():a.DOM.width(this.settings.target);
+c=this.getItemEls();g=0;this.settings.loop?g=(b+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?g=(c.length-1)*(b+this.settings.margin)*-1:this.currentCacheIndex>0&&(g=(b+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:g+"px"})},show:function(d){this.currentCacheIndex=d;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var d=this.getItemEls(),c,e;c=0;for(e=d.length;c<e;c++)a.Animation.resetTranslate(d[c]);
+a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideByEnd,target:this,action:b.Carousel.SlideByAction.current,cacheIndex:this.currentCacheIndex})},setImages:function(a){var b,c=this.getItemEls();b=this.currentCacheIndex+1;var e=this.currentCacheIndex-1;this.settings.loop?(b>this.cache.images.length-1&&(b=0),e<0&&(e=this.cache.images.length-1),b=this.cache.getImages([e,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2]),this.addCacheImageToItemEl(b[0],
+c[0])):c.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],c[0])):c.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],c[0]),this.addCacheImageToItemEl(b[1],c[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[0],c[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,
+this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],c[0]),this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],c[2]),this.addCacheImageToItemEl(b[1],c[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]),
+a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2])),this.addCacheImageToItemEl(b[0],c[0]))},addCacheImageToItemEl:function(d,c){a.DOM.removeClass(c,b.Carousel.CssClasses.itemError);a.DOM.addClass(c,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(c);a.DOM.setStyle(d.imageEl,{display:"none"});a.DOM.appendChild(d.imageEl,c);a.Animation.resetTranslate(d.imageEl);a.Events.add(d,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(d,b.Image.EventTypes.onError,
+this.imageErrorHandler);d.load()},slideCarousel:function(d,c,g){if(!this.isSliding){var h,j;h=this.settings.target===e?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;g=a.coalesce(g,this.settings.slideSpeed);if(!(e.Math.abs(j)<1)){switch(c){case a.TouchElement.ActionTypes.swipeLeft:d=h*-1;break;case a.TouchElement.ActionTypes.swipeRight:d=h;break;default:j=d.x-this.touchStartPoint.x,d=e.Math.abs(j)>h/2?j>0?h:h*-1:0}this.lastSlideByAction=d<0?b.Carousel.SlideByAction.next:
+d>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))d=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(d,g)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)},
+getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow();
+this.isSlideshowActive=!0;this.slideshowTimeout=e.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))e.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var d=this.getItemEls();
+this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(d[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(d[d.length-1],d[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex===
+this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex<this.cache.images.length-2?this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(d[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(d[d.length-1],d[0],this.contentEl):this.currentCacheIndex===1?this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(d[d.length-1],d[0],this.contentEl):
+this.currentCacheIndex===this.cache.images.length-2&&this.lastSlideByAction===b.Carousel.SlideByAction.next&&a.DOM.appendChild(d[0],this.contentEl));this.lastSlideByAction!==b.Carousel.SlideByAction.current&&(this.setContentLeftPosition(),this.setImages(!0));a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideByEnd,target:this,action:this.lastSlideByAction,cacheIndex:this.currentCacheIndex});this.isSlideshowActive&&(this.lastSlideByAction!==b.Carousel.SlideByAction.current?this.startSlideshow():
+this.stopSlideshow())}},onTouch:function(b,c){this.stopSlideshow();switch(b){case a.TouchElement.ActionTypes.touchStart:this.touchStartPoint=c;this.touchStartPosition={x:e.parseInt(a.DOM.getStyle(this.contentEl,"left"),0),y:e.parseInt(a.DOM.getStyle(this.contentEl,"top"),0)};break;case a.TouchElement.ActionTypes.touchMove:this.moveCarousel(c);break;case a.TouchElement.ActionTypes.touchMoveEnd:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.slideCarousel(c,
+b)}},onImageLoad:function(d){d=d.target;a.isNothing(d.imageEl.parentNode)||(a.DOM.removeClass(d.imageEl.parentNode,b.Carousel.CssClasses.itemLoading),this.resetImagePosition(d.imageEl));a.Events.remove(d,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.remove(d,b.Image.EventTypes.onError,this.imageErrorHandler)},onImageError:function(d){d=d.target;a.isNothing(d.imageEl.parentNode)||(a.DOM.removeClass(d.imageEl.parentNode,b.Carousel.CssClasses.itemLoading),a.DOM.addClass(d.imageEl.parentNode,
+b.Carousel.CssClasses.itemError));a.Events.remove(d,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.remove(d,b.Image.EventTypes.onError,this.imageErrorHandler)}})})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Carousel");c=e.Code.PhotoSwipe;c.Carousel.CarouselClass=c.Carousel.CarouselClass.extend({getStartingPos:function(){var b=this.touchStartPosition;a.isNothing(b)&&(b={x:e.parseInt(a.DOM.getStyle(this.contentEl,"left"),0),y:e.parseInt(a.DOM.getStyle(this.contentEl,"top"),0)});return b},doMoveCarousel:function(b){var d;a.Browser.isCSSTransformSupported?(d={},d[a.Animation._transitionPrefix+"Property"]="all",d[a.Animation._transitionPrefix+"Duration"]=
+"",d[a.Animation._transitionPrefix+"TimingFunction"]="",d[a.Animation._transitionPrefix+"Delay"]="0",d[a.Animation._transformLabel]=a.Browser.is3dSupported?"translate3d("+b+"px, 0px, 0px)":"translate("+b+"px, 0px)",a.DOM.setStyle(this.contentEl,d)):a.isNothing(e.jQuery)||e.jQuery(this.contentEl).stop().css("left",this.getStartingPos().x+b+"px")},doSlideCarousel:function(b,d){var c;if(d<=0)this.slideByEndHandler();else if(a.Browser.isCSSTransformSupported)c=a.coalesce(this.contentEl.style.webkitTransform,
+this.contentEl.style.MozTransform,this.contentEl.style.transform,""),c.indexOf("translate3d("+b)===0?this.slideByEndHandler():c.indexOf("translate("+b)===0?this.slideByEndHandler():a.Animation.slideBy(this.contentEl,b,0,d,this.slideByEndHandler,this.settings.slideTimingFunction);else if(!a.isNothing(e.jQuery)){c={left:this.getStartingPos().x+b+"px"};if(this.settings.animationTimingFunction==="ease-out")this.settings.animationTimingFunction="easeOutQuad";if(a.isNothing(e.jQuery.easing[this.settings.animationTimingFunction]))this.settings.animationTimingFunction=
+"linear";e.jQuery(this.contentEl).animate(c,this.settings.slideSpeed,this.settings.animationTimingFunction,this.slideByEndHandler)}}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.TouchElement);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.CssClasses={toolbar:"ps-toolbar",toolbarContent:"ps-toolbar-content",toolbarTop:"ps-toolbar-top",caption:"ps-caption",captionBottom:"ps-caption-bottom",captionContent:"ps-caption-content",close:"ps-toolbar-close",play:"ps-toolbar-play",previous:"ps-toolbar-previous",previousDisabled:"ps-toolbar-previous-disabled",next:"ps-toolbar-next",nextDisabled:"ps-toolbar-next-disabled"};b.Toolbar.ToolbarAction=
+{close:"close",play:"play",next:"next",previous:"previous",none:"none"};b.Toolbar.EventTypes={onTap:"PhotoSwipeToolbarOnClick",onBeforeShow:"PhotoSwipeToolbarOnBeforeShow",onShow:"PhotoSwipeToolbarOnShow",onBeforeHide:"PhotoSwipeToolbarOnBeforeHide",onHide:"PhotoSwipeToolbarOnHide"};b.Toolbar.getToolbar=function(){return'<div class="'+b.Toolbar.CssClasses.close+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div><div class="'+b.Toolbar.CssClasses.play+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+
+'"></div></div><div class="'+b.Toolbar.CssClasses.previous+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div><div class="'+b.Toolbar.CssClasses.next+'"><div class="'+b.Toolbar.CssClasses.toolbarContent+'"></div></div>'}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.ToolbarClass=c({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var b;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);
+a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(d,c){var g;this.settings=c;this.cache=d;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);g=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&&
+(g=g+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":g},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl);
+this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];g=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(g=g+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":g},"");a.DOM.setStyle(this.captionEl,
+{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var b,c,g;this.settings.target===e?(this.settings.captionAndToolbarFlipPosition?
+(c=a.DOM.windowScrollTop(),g=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(c=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),g=a.DOM.windowScrollTop()),b=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(c="0",g=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(c=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),g=0),b=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:c+"px",
+width:b});a.DOM.setStyle(this.captionEl,{top:g+"px",width:b})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(d){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(d);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(d);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay>
+0)this.clearTimeout(),this.timeout=e.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))e.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&&
+(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl,
+"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(d){this.clearTimeout();var c;if(d.target===this.nextEl||a.DOM.isChildOf(d.target,this.nextEl))c=b.Toolbar.ToolbarAction.next;else if(d.target===this.previousEl||a.DOM.isChildOf(d.target,this.previousEl))c=b.Toolbar.ToolbarAction.previous;else if(d.target===this.closeEl||a.DOM.isChildOf(d.target,this.closeEl))c=b.Toolbar.ToolbarAction.close;else if(d.target===this.playEl||a.DOM.isChildOf(d.target,
+this.playEl))c=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(c))c=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:c,tapTarget:d.target})},setCaption:function(b){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[b].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0";
+a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}),
+a.DOM.show(this.captionEl))},setToolbarStatus:function(d){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),d>0&&d<this.cache.images.length-1||(d===0&&(a.isNothing(this.previousEl)||a.DOM.addClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled)),d===this.cache.images.length-1&&(a.isNothing(this.nextEl)||a.DOM.addClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled))))},onFadeOut:function(){a.DOM.hide(this.toolbarEl);
+a.DOM.hide(this.captionEl);a.Events.fire(this,{type:b.Toolbar.EventTypes.onHide,target:this})},onTouchStart:function(b){b.preventDefault();a.Events.remove(this.toolbarEl,"click",this.clickHandler);this.handleTap(b)},onTouchMove:function(a){a.preventDefault()},onClick:function(a){a.preventDefault();this.handleTap(a)}})})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.UILayer");e.Code.PhotoSwipe.UILayer.CssClasses={uiLayer:"ps-uilayer"}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.UILayer");var b=e.Code.PhotoSwipe;b.UILayer.UILayerClass=a.TouchElement.TouchElementClass.extend({el:null,settings:null,dispose:function(){var b;this.removeEventHandlers();a.DOM.removeChild(this.el,this.el.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(d){this.settings=d;this.el=a.DOM.createElement("div",{"class":b.UILayer.CssClasses.uiLayer},"");a.DOM.setStyle(this.el,{display:"block",position:"absolute",
+left:0,top:0,overflow:"hidden",zIndex:this.settings.zIndex,opacity:0});a.DOM.hide(this.el);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target);this.supr(this.el,{swipe:!0,move:!0,gesture:a.Browser.iOS,doubleTap:!0,preventDefaultTouchEvents:this.settings.preventDefaultTouchEvents})},resetPosition:function(){this.settings.target===e?a.DOM.setStyle(this.el,{top:a.DOM.windowScrollTop()+"px",width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}):a.DOM.setStyle(this.el,
+{top:"0px",width:a.DOM.width(this.settings.target),height:a.DOM.height(this.settings.target)})},show:function(){this.resetPosition();a.DOM.show(this.el);this.addEventHandlers()},addEventHandlers:function(){this.supr()},removeEventHandlers:function(){this.supr()}})})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.ZoomPanRotate");e=e.Code.PhotoSwipe;e.ZoomPanRotate.CssClasses={zoomPanRotate:"ps-zoom-pan-rotate"};e.ZoomPanRotate.EventTypes={onTransform:"PhotoSwipeZoomPanRotateOnTransform"}})(window,window.klass,window.Code.Util);
+(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.ZoomPanRotate");var b=e.Code.PhotoSwipe;b.ZoomPanRotate.ZoomPanRotateClass=c({el:null,settings:null,containerEl:null,imageEl:null,transformSettings:null,panStartingPoint:null,transformEl:null,dispose:function(){var b;a.DOM.removeChild(this.el,this.el.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,f,g){var h,j,i;this.settings=c;this.settings.target===e?(c=document.body,h=a.DOM.windowWidth(),j=a.DOM.windowHeight(),
+i=a.DOM.windowScrollTop()+"px"):(c=this.settings.target,h=a.DOM.width(c),j=a.DOM.height(c),i="0px");this.imageEl=f.imageEl.cloneNode(!1);a.DOM.setStyle(this.imageEl,{zIndex:1});this.transformSettings={startingScale:1,scale:1,startingRotation:0,rotation:0,startingTranslateX:0,startingTranslateY:0,translateX:0,translateY:0};this.el=a.DOM.createElement("div",{"class":b.ZoomPanRotate.CssClasses.zoomPanRotate},"");a.DOM.setStyle(this.el,{left:0,top:i,position:"absolute",width:h,height:j,zIndex:this.settings.zIndex,
+display:"block"});a.DOM.insertBefore(this.el,g.el,c);a.Browser.iOS?(this.containerEl=a.DOM.createElement("div","",""),a.DOM.setStyle(this.containerEl,{left:0,top:0,width:h,height:j,position:"absolute",zIndex:1}),a.DOM.appendChild(this.imageEl,this.containerEl),a.DOM.appendChild(this.containerEl,this.el),a.Animation.resetTranslate(this.containerEl),a.Animation.resetTranslate(this.imageEl),this.transformEl=this.containerEl):(a.DOM.appendChild(this.imageEl,this.el),this.transformEl=this.imageEl)},setStartingTranslateFromCurrentTransform:function(){var b=
+a.coalesce(this.transformEl.style.webkitTransform,this.transformEl.style.MozTransform,this.transformEl.style.transform);if(!a.isNothing(b)&&(b=b.match(/translate\((.*?)\)/),!a.isNothing(b)))b=b[1].split(", "),this.transformSettings.startingTranslateX=e.parseInt(b[0],10),this.transformSettings.startingTranslateY=e.parseInt(b[1],10)},getScale:function(a){a*=this.transformSettings.startingScale;if(this.settings.minUserZoom!==0&&a<this.settings.minUserZoom)a=this.settings.minUserZoom;else if(this.settings.maxUserZoom!==
+0&&a>this.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint=
+{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,c){if(this.settings.target===e){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var g=(c.y-this.panStartingPoint.y)/this.transformSettings.scale;
+this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(c.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+g)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,f=e.parseInt(this.transformSettings.translateX,10),
+g=e.parseInt(this.transformSettings.translateY,10),h="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+f+"px, "+g+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:h,MozTransform:h,msTransform:h,transform:h});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:f,translateY:g})}})})(window,window.klass,window.Code.Util);
+(function(e,c){c.registerNamespace("Code.PhotoSwipe");var a=e.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow",
+onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"};
+a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(c.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=c.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,d,e){var g,h;g=a.createInstance(b,d,e);d=0;for(e=
+b.length;d<e;d++)if(h=b[d],!c.isNothing(h.nodeType)&&h.nodeType===1)h.__photoSwipeClickHandler=a.onTriggerElementClick.bind(g),c.Events.remove(h,"click",h.__photoSwipeClickHandler),c.Events.add(h,"click",h.__photoSwipeClickHandler);return g};if(e.jQuery)e.jQuery.fn.photoSwipe=function(b,c){return a.attach(this,b,c)};a.detatch=function(b){var d,e,g;d=0;for(e=b.originalImages.length;d<e;d++)g=b.originalImages[d],!c.isNothing(g.nodeType)&&g.nodeType===1&&(c.Events.remove(g,"click",g.__photoSwipeClickHandler),
+delete g.__photoSwipeClickHandler);a.disposeInstance(b)};a.createInstance=function(b,d,e){var g;if(c.isNothing(b))throw"Code.PhotoSwipe.attach: No images passed.";if(!c.isLikeArray(b))throw"Code.PhotoSwipe.createInstance: Images must be an array of elements or image urls.";if(b.length<1)throw"Code.PhotoSwipe.createInstance: No images to passed.";d=c.coalesce(d,{});g=a.getInstance(e);if(c.isNothing(g))g=new a.PhotoSwipeClass(b,d,e),a.instances.push(g);else throw'Code.PhotoSwipe.createInstance: Instance with id "'+
+e+' already exists."';return g};a.disposeInstance=function(b){var c=a.getInstanceIndex(b);if(c<0)throw"Code.PhotoSwipe.disposeInstance: Unable to find instance to dispose.";b.dispose();a.instances.splice(c,1)};a.onTriggerElementClick=function(a){a.preventDefault();this.show(a.currentTarget)};a.getInstance=function(b){var c,e,g;c=0;for(e=a.instances.length;c<e;c++)if(g=a.instances[c],g.id===b)return g;return null};a.getInstanceIndex=function(b){var c,e,g=-1;c=0;for(e=a.instances.length;c<e;c++)if(a.instances[c]===
+b){g=c;break}return g}})(window,window.Code.Util);
+(function(e,c,a,b,d,f,g,h,j){a.registerNamespace("Code.PhotoSwipe");var i=e.Code.PhotoSwipe;i.PhotoSwipeClass=c({id:null,settings:null,isBackEventSupported:null,backButtonClicked:null,currentIndex:null,originalImages:null,mouseWheelStartTime:null,windowDimensions:null,cache:null,documentOverlay:null,carousel:null,uiLayer:null,toolbar:null,zoomPanRotate:null,windowOrientationChangeHandler:null,windowScrollHandler:null,windowHashChangeHandler:null,keyDownHandler:null,windowOrientationEventName:null,
+uiLayerTouchHandler:null,carouselSlideByEndHandler:null,carouselSlideshowStartHandler:null,carouselSlideshowStopHandler:null,toolbarTapHandler:null,toolbarBeforeShowHandler:null,toolbarShowHandler:null,toolbarBeforeHideHandler:null,toolbarHideHandler:null,mouseWheelHandler:null,zoomPanRotateTransformHandler:null,_isResettingPosition:null,_uiWebViewResetPositionTimeout:null,dispose:function(){var b;a.Events.remove(this,i.EventTypes.onBeforeShow);a.Events.remove(this,i.EventTypes.onShow);a.Events.remove(this,
+i.EventTypes.onBeforeHide);a.Events.remove(this,i.EventTypes.onHide);a.Events.remove(this,i.EventTypes.onDisplayImage);a.Events.remove(this,i.EventTypes.onResetPosition);a.Events.remove(this,i.EventTypes.onSlideshowStart);a.Events.remove(this,i.EventTypes.onSlideshowStop);a.Events.remove(this,i.EventTypes.onTouch);a.Events.remove(this,i.EventTypes.onBeforeCaptionAndToolbarShow);a.Events.remove(this,i.EventTypes.onCaptionAndToolbarShow);a.Events.remove(this,i.EventTypes.onBeforeCaptionAndToolbarHide);
+a.Events.remove(this,i.EventTypes.onCaptionAndToolbarHide);a.Events.remove(this,i.EventTypes.onZoomPanRotateTransform);this.removeEventHandlers();a.isNothing(this.documentOverlay)||this.documentOverlay.dispose();a.isNothing(this.carousel)||this.carousel.dispose();a.isNothing(this.uiLayer)||this.uiLayer.dispose();a.isNothing(this.toolbar)||this.toolbar.dispose();this.destroyZoomPanRotate();a.isNothing(this.cache)||this.cache.dispose();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,
+d,f){this.id=a.isNothing(f)?"PhotoSwipe"+(new Date).getTime().toString():f;this.originalImages=c;if(a.Browser.android&&!a.Browser.firefox&&e.navigator.userAgent.match(/Android (\d+.\d+)/).toString().replace(/^.*\,/,"")>=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(e,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0,
+mouseWheelSpeed:350,autoStartSlideshow:!1,jQueryMobile:!a.isNothing(e.jQuery)&&!a.isNothing(e.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:e,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1,
+captionAndToolbarAutoHideDelay:5E3,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:i.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:i.Cache.Functions.getImageSource,getImageCaption:i.Cache.Functions.getImageCaption,getImageMetaData:i.Cache.Functions.getImageMetaData,cacheMode:i.Cache.Mode.normal};a.extend(this.settings,d);this.settings.target!==e&&(d=a.DOM.getStyle(this.settings.target,
+"position"),(d!=="relative"||d!=="absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==e)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,d;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(d=this.originalImages.length;c<d;c++)if(this.originalImages[c]===
+b){this.currentIndex=c;break}}if(this.currentIndex<0||this.currentIndex>this.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();i.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===e?a.DOM.addClass(e.document.body,i.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,i.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:i.EventTypes.onBeforeShow,
+target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new d.DocumentOverlayClass(this.settings);this.carousel=new f.CarouselClass(this.cache,this.settings);this.uiLayer=new h.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new g.ToolbarClass(this.cache,this.settings)},
+resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:i.EventTypes.onResetPosition,
+target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this),
+this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler=
+this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(e.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(e.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(e,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===e&&a.Events.add(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&
+a.Events.add(e.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?e.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),e.location.hash=this.currentHistoryHashValue),a.Events.add(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(e,"mousewheel",
+this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,g.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar,
+g.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,g.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,g.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,g.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(e.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(e,this.orientationEventName,
+this.windowOrientationChangeHandler);a.Events.remove(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(e.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(e,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);
+a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,g.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,g.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar,
+g.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,g.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,g.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this,
+{type:i.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(e.document.body,i.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;i.unsetActivateInstance(this);a.Events.fire(this,{type:i.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&&
+this.settings.backButtonHideEnabled&&(this.backButtonClicked||e.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()||
+a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,i.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new j.ZoomPanRotateClass(this.settings,
+this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,i.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,i.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,i.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate,
+i.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,i.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1;
+b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){e.setTimeout(function(){var b=this.settings.target===e?e.document.body:this.settings.target;a.DOM.removeClass(b,i.CssClasses.buildingBody);a.DOM.addClass(b,i.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex);
+this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:i.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout=
+e.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(e.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash:
+this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale,
+this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate();
+this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point);
+break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===e&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,d=e.parseInt(a.DOM.getStyle(c,"top"),10),f=e.parseInt(a.DOM.getStyle(c,"left"),10),g=f+a.DOM.width(c),c=d+a.DOM.height(c);if(b.point.x<f)b.point.x=f;else if(b.point.x>g)b.point.x=g;if(b.point.y<d)b.point.y=d;else if(b.point.y>c)b.point.y=c;
+this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:i.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:i.EventTypes.onDisplayImage,
+target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case g.ToolbarAction.next:this.next();break;case g.ToolbarAction.previous:this.previous();break;case g.ToolbarAction.close:this.hide();break;case g.ToolbarAction.play:this.play()}a.Events.fire(this,{type:i.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)<this.settings.mouseWheelSpeed))this.mouseWheelStartTime=
+b.timeStamp,this.settings.invertMouseWheel&&(c*=-1),c<0?this.next():c>0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:i.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:i.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:i.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:i.EventTypes.onCaptionAndToolbarShow,
+target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:i.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:i.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:i.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache,
+window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate);
Index: /tags/2.6.0RC1/themes/smartpocket/js/config.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/config.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/config.js	(revision 25596)
@@ -0,0 +1,7 @@
+$(document).bind("mobileinit", function(){
+  $.extend(  $.mobile , {
+    ajaxEnabled: false,
+    hashListeningEnabled: false,
+    pushStateEnabled: false
+  });
+});
Index: /tags/2.6.0RC1/themes/smartpocket/js/jquery-1.6.4.min.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/jquery-1.6.4.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/jquery-1.6.4.min.js	(revision 25596)
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete 
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
Index: /tags/2.6.0RC1/themes/smartpocket/js/jquery.mobile.min.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/jquery.mobile.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/jquery.mobile.min.js	(revision 25596)
@@ -0,0 +1,7 @@
+/*! jQuery Mobile 1.3.1 | Git HEAD hash: 74b4bec <> 2013-04-08T19:41:28Z | (c) 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */
+(function(e,t,i){"function"==typeof define&&define.amd?define(["jquery"],function(n){return i(n,e,t),n.mobile}):i(e.jQuery,e,t)})(this,document,function(e,t,i,n){(function(e){e.mobile={}})(e),function(e,t,n){var a={};e.mobile=e.extend(e.mobile,{version:"1.3.1",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},window:e(t),document:e(i),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},behaviors:{},silentScroll:function(i){"number"!==e.type(i)&&(i=e.mobile.defaultHomeScroll),e.event.special.scrollstart.enabled=!1,setTimeout(function(){t.scrollTo(0,i),e.mobile.document.trigger("silentscroll",{x:0,y:i})},20),setTimeout(function(){e.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:a,nsNormalize:function(t){return t?a[t]||(a[t]=e.camelCase(e.mobile.ns+t)):n},getInheritedTheme:function(e,t){for(var i,n,a=e[0],o="",s=/ui-(bar|body|overlay)-([a-z])\b/;a&&(i=a.className||"",!(i&&(n=s.exec(i))&&(o=n[2])));)a=a.parentNode;return o||t||"a"},closestPageData:function(e){return e.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("mobile-page")},enhanceable:function(e){return this.haveParents(e,"enhance")},hijackable:function(e){return this.haveParents(e,"ajax")},haveParents:function(t,i){if(!e.mobile.ignoreContentEnabled)return t;for(var n,a,o,s=t.length,r=e(),l=0;s>l;l++){for(a=t.eq(l),o=!1,n=t[l];n;){var d=n.getAttribute?n.getAttribute("data-"+e.mobile.ns+i):"";if("false"===d){o=!0;break}n=n.parentNode}o||(r=r.add(a))}return r},getScreenHeight:function(){return t.innerHeight||e.mobile.window.height()}},e.mobile),e.fn.jqmData=function(t,i){var a;return t!==n&&(t&&(t=e.mobile.nsNormalize(t)),a=2>arguments.length||i===n?this.data(t):this.data(t,i)),a},e.jqmData=function(t,i,a){var o;return i!==n&&(o=e.data(t,i?e.mobile.nsNormalize(i):i,a)),o},e.fn.jqmRemoveData=function(t){return this.removeData(e.mobile.nsNormalize(t))},e.jqmRemoveData=function(t,i){return e.removeData(t,e.mobile.nsNormalize(i))},e.fn.removeWithDependents=function(){e.removeWithDependents(this)},e.removeWithDependents=function(t){var i=e(t);(i.jqmData("dependents")||e()).remove(),i.remove()},e.fn.addDependents=function(t){e.addDependents(e(this),t)},e.addDependents=function(t,i){var n=e(t).jqmData("dependents")||e();e(t).jqmData("dependents",e.merge(n,i))},e.fn.getEncodedText=function(){return e("<div/>").text(e(this).text()).html()},e.fn.jqmEnhanceable=function(){return e.mobile.enhanceable(this)},e.fn.jqmHijackable=function(){return e.mobile.hijackable(this)};var o=e.find,s=/:jqmData\(([^)]*)\)/g;e.find=function(t,i,n,a){return t=t.replace(s,"[data-"+(e.mobile.ns||"")+"$1]"),o.call(this,t,i,n,a)},e.extend(e.find,o),e.find.matches=function(t,i){return e.find(t,null,null,i)},e.find.matchesSelector=function(t,i){return e.find(i,null,null,[t]).length>0}}(e,this),function(e,t){var i=0,n=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,n=0;null!=(i=t[n]);n++)try{e(i).triggerHandler("remove")}catch(o){}a(t)},e.widget=function(i,n,a){var o,s,r,l,d=i.split(".")[0];i=i.split(".")[1],o=d+"-"+i,a||(a=n,n=e.Widget),e.expr[":"][o.toLowerCase()]=function(t){return!!e.data(t,o)},e[d]=e[d]||{},s=e[d][i],r=e[d][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new r(e,i)},e.extend(r,s,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),l=new n,l.options=e.widget.extend({},l.options),e.each(a,function(t,i){e.isFunction(i)&&(a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},a=function(e){return n.prototype[t].apply(this,e)};return function(){var t,n=this._super,o=this._superApply;return this._super=e,this._superApply=a,t=i.apply(this,arguments),this._super=n,this._superApply=o,t}}())}),r.prototype=e.widget.extend(l,{widgetEventPrefix:s?l.widgetEventPrefix:i},a,{constructor:r,namespace:d,widgetName:i,widgetFullName:o}),s?(e.each(s._childConstructors,function(t,i){var n=i.prototype;e.widget(n.namespace+"."+n.widgetName,r,i._proto)}),delete s._childConstructors):n._childConstructors.push(r),e.widget.bridge(i,r)},e.widget.extend=function(i){for(var a,o,s=n.call(arguments,1),r=0,l=s.length;l>r;r++)for(a in s[r])o=s[r][a],s[r].hasOwnProperty(a)&&o!==t&&(i[a]=e.isPlainObject(o)?e.isPlainObject(i[a])?e.widget.extend({},i[a],o):e.widget.extend({},o):o);return i},e.widget.bridge=function(i,a){var o=a.prototype.widgetFullName||i;e.fn[i]=function(s){var r="string"==typeof s,l=n.call(arguments,1),d=this;return s=!r&&l.length?e.widget.extend.apply(null,[s].concat(l)):s,r?this.each(function(){var n,a=e.data(this,o);return a?e.isFunction(a[s])&&"_"!==s.charAt(0)?(n=a[s].apply(a,l),n!==a&&n!==t?(d=n&&n.jquery?d.pushStack(n.get()):n,!1):t):e.error("no such method '"+s+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+s+"'")}):this.each(function(){var t=e.data(this,o);t?t.option(s||{})._init():e.data(this,o,new a(s,this))}),d}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,n){n=e(n||this.defaultElement||this)[0],this.element=e(n),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),n!==this&&(e.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===n&&this.destroy()}}),this.document=e(n.style?n.ownerDocument:n.document||n),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,n){var a,o,s,r=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(r={},a=i.split("."),i=a.shift(),a.length){for(o=r[i]=e.widget.extend({},this.options[i]),s=0;a.length-1>s;s++)o[a[s]]=o[a[s]]||{},o=o[a[s]];if(i=a.pop(),n===t)return o[i]===t?null:o[i];o[i]=n}else{if(n===t)return this.options[i]===t?null:this.options[i];r[i]=n}return this._setOptions(r),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,n,a){var o,s=this;"boolean"!=typeof i&&(a=n,n=i,i=!1),a?(n=o=e(n),this.bindings=this.bindings.add(n)):(a=n,n=this.element,o=this.widget()),e.each(a,function(a,r){function l(){return i||s.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof r?s[r]:r).apply(s,arguments):t}"string"!=typeof r&&(l.guid=r.guid=r.guid||l.guid||e.guid++);var d=a.match(/^(\w+)\s*(.*)$/),c=d[1]+s.eventNamespace,h=d[2];h?o.delegate(h,c,l):n.bind(c,l)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?n[e]:e).apply(n,arguments)}var n=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,n){var a,o,s=this.options[t];if(n=n||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(a in o)a in i||(i[a]=o[a]);return this.element.trigger(i,n),!(e.isFunction(s)&&s.apply(this.element[0],[i].concat(n))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(n,a,o){"string"==typeof a&&(a={effect:a});var s,r=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),s=!e.isEmptyObject(a),a.complete=o,a.delay&&n.delay(a.delay),s&&e.effects&&e.effects.effect[r]?n[t](a):r!==t&&n[r]?n[r](a.duration,a.easing,o):n.queue(function(i){e(this)[t](),o&&o.call(n[0]),i()})}})}(e),function(e,t){e.widget("mobile.widget",{_createWidget:function(){e.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_getCreateOptions:function(){var i=this.element,n={};return e.each(this.options,function(e){var a=i.jqmData(e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()}));a!==t&&(n[e]=a)}),n},enhanceWithin:function(t,i){this.enhance(e(this.options.initSelector,e(t)),i)},enhance:function(t,i){var n,a,o=e(t);o=e.mobile.enhanceable(o),i&&o.length&&(n=e.mobile.closestPageData(o),a=n&&n.keepNativeSelector()||"",o=o.not(a)),o[this.widgetName]()},raise:function(e){throw"Widget ["+this.widgetName+"]: "+e}})}(e),function(e){e.extend(e.mobile,{loadingMessageTextVisible:n,loadingMessageTheme:n,loadingMessage:n,showPageLoadingMsg:function(t,i,n){e.mobile.loading("show",t,i,n)},hidePageLoadingMsg:function(){e.mobile.loading("hide")},loading:function(){this.loaderWidget.loader.apply(this.loaderWidget,arguments)}});var t="ui-loader",i=e("html"),a=e.mobile.window;e.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"<div class='"+t+"'>"+"<span class='ui-icon ui-icon-loading'></span>"+"<h1></h1>"+"</div>",fakeFixLoader:function(){var t=e("."+e.mobile.activeBtnClass).first();this.element.css({top:e.support.scrollTop&&a.scrollTop()+a.height()/2||t.length&&t.offset().top||100})},checkLoaderPosition:function(){var t=this.element.offset(),i=a.scrollTop(),n=e.mobile.getScreenHeight();(i>t.top||t.top-i>n)&&(this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),a.unbind("scroll",this.checkLoaderPosition).bind("scroll",e.proxy(this.fakeFixLoader,this)))},resetHtml:function(){this.element.html(e(this.defaultHtml).html())},show:function(o,s,r){var l,d,c;this.resetHtml(),"object"===e.type(o)?(c=e.extend({},this.options,o),o=c.theme||e.mobile.loadingMessageTheme):(c=this.options,o=o||e.mobile.loadingMessageTheme||c.theme),d=s||e.mobile.loadingMessage||c.text,i.addClass("ui-loading"),(e.mobile.loadingMessage!==!1||c.html)&&(l=e.mobile.loadingMessageTextVisible!==n?e.mobile.loadingMessageTextVisible:c.textVisible,this.element.attr("class",t+" ui-corner-all ui-body-"+o+" ui-loader-"+(l||s||o.text?"verbose":"default")+(c.textonly||r?" ui-loader-textonly":"")),c.html?this.element.html(c.html):this.element.find("h1").text(d),this.element.appendTo(e.mobile.pageContainer),this.checkLoaderPosition(),a.bind("scroll",e.proxy(this.checkLoaderPosition,this)))},hide:function(){i.removeClass("ui-loading"),e.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),e.mobile.window.unbind("scroll",this.fakeFixLoader),e.mobile.window.unbind("scroll",this.checkLoaderPosition)}}),a.bind("pagecontainercreate",function(){e.mobile.loaderWidget=e.mobile.loaderWidget||e(e.mobile.loader.prototype.defaultHtml).loader()})}(e,this),function(e,t,n){function a(e){return e=e||location.href,"#"+e.replace(/^[^#]*#?(.*)$/,"$1")}var o,s="hashchange",r=i,l=e.event.special,d=r.documentMode,c="on"+s in t&&(d===n||d>7);e.fn[s]=function(e){return e?this.bind(s,e):this.trigger(s)},e.fn[s].delay=50,l[s]=e.extend(l[s],{setup:function(){return c?!1:(e(o.start),n)},teardown:function(){return c?!1:(e(o.stop),n)}}),o=function(){function i(){var n=a(),r=p(d);n!==d?(u(d=n,r),e(t).trigger(s)):r!==d&&(location.href=location.href.replace(/#.*/,"")+r),o=setTimeout(i,e.fn[s].delay)}var o,l={},d=a(),h=function(e){return e},u=h,p=h;return l.start=function(){o||i()},l.stop=function(){o&&clearTimeout(o),o=n},t.attachEvent&&!t.addEventListener&&!c&&function(){var t,n;l.start=function(){t||(n=e.fn[s].src,n=n&&n+a(),t=e('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){n||u(a()),i()}).attr("src",n||"javascript:0").insertAfter("body")[0].contentWindow,r.onpropertychange=function(){try{"title"===event.propertyName&&(t.document.title=r.title)}catch(e){}})},l.stop=h,p=function(){return a(t.location.href)},u=function(i,n){var a=t.document,o=e.fn[s].domain;i!==n&&(a.title=r.title,a.open(),o&&a.write('<script>document.domain="'+o+'"</script>'),a.close(),t.location.hash=i)}}(),l}()}(e,this),function(e){t.matchMedia=t.matchMedia||function(e){var t,i=e.documentElement,n=i.firstElementChild||i.firstChild,a=e.createElement("body"),o=e.createElement("div");return o.id="mq-test-1",o.style.cssText="position:absolute;top:-100em",a.style.background="none",a.appendChild(o),function(e){return o.innerHTML='&shy;<style media="'+e+'"> #mq-test-1 { width: 42px; }</style>',i.insertBefore(a,n),t=42===o.offsetWidth,i.removeChild(a),{matches:t,media:e}}}(i),e.mobile.media=function(e){return t.matchMedia(e).matches}}(e),function(e){var t={touch:"ontouchend"in i};e.mobile.support=e.mobile.support||{},e.extend(e.support,t),e.extend(e.mobile.support,t)}(e),function(e){e.extend(e.support,{orientation:"orientation"in t&&"onorientationchange"in t})}(e),function(e,n){function a(e){var t=e.charAt(0).toUpperCase()+e.substr(1),i=(e+" "+p.join(t+" ")+t).split(" ");for(var a in i)if(u[i[a]]!==n)return!0}function o(e,t,n){for(var a,o=i.createElement("div"),s=function(e){return e.charAt(0).toUpperCase()+e.substr(1)},r=function(e){return""===e?"":"-"+e.charAt(0).toLowerCase()+e.substr(1)+"-"},l=function(i){var n=r(i)+e+": "+t+";",l=s(i),d=l+(""===l?e:s(e));o.setAttribute("style",n),o.style[d]&&(a=!0)},d=n?n:p,c=0;d.length>c;c++)l(d[c]);return!!a}function s(){var a="transform-3d",o=e.mobile.media("(-"+p.join("-"+a+"),(-")+"-"+a+"),("+a+")");if(o)return!!o;var s=i.createElement("div"),r={MozTransform:"-moz-transform",transform:"transform"};h.append(s);for(var l in r)s.style[l]!==n&&(s.style[l]="translate3d( 100px, 1px, 1px )",o=t.getComputedStyle(s).getPropertyValue(r[l]));return!!o&&"none"!==o}function r(){var t,i,n=location.protocol+"//"+location.host+location.pathname+"ui-dir/",a=e("head base"),o=null,s="";return a.length?s=a.attr("href"):a=o=e("<base>",{href:n}).appendTo("head"),t=e("<a href='testurl' />").prependTo(h),i=t[0].href,a[0].href=s||location.pathname,o&&o.remove(),0===i.indexOf(n)}function l(){var e,n=i.createElement("x"),a=i.documentElement,o=t.getComputedStyle;return"pointerEvents"in n.style?(n.style.pointerEvents="auto",n.style.pointerEvents="x",a.appendChild(n),e=o&&"auto"===o(n,"").pointerEvents,a.removeChild(n),!!e):!1}function d(){var e=i.createElement("div");return e.getBoundingClientRect!==n}function c(){var e=t,i=navigator.userAgent,n=navigator.platform,a=i.match(/AppleWebKit\/([0-9]+)/),o=!!a&&a[1],s=i.match(/Fennec\/([0-9]+)/),r=!!s&&s[1],l=i.match(/Opera Mobi\/([0-9]+)/),d=!!l&&l[1];return(n.indexOf("iPhone")>-1||n.indexOf("iPad")>-1||n.indexOf("iPod")>-1)&&o&&534>o||e.operamini&&"[object OperaMini]"==={}.toString.call(e.operamini)||l&&7458>d||i.indexOf("Android")>-1&&o&&533>o||r&&6>r||"palmGetResource"in t&&o&&534>o||i.indexOf("MeeGo")>-1&&i.indexOf("NokiaBrowser/8.5.0")>-1?!1:!0}var h=e("<body>").prependTo("html"),u=h[0].style,p=["Webkit","Moz","O"],m="palmGetResource"in t,f=t.opera,g=t.operamini&&"[object OperaMini]"==={}.toString.call(t.operamini),b=t.blackberry&&!a("-webkit-transform");e.extend(e.mobile,{browser:{}}),e.mobile.browser.oldIE=function(){var e=3,t=i.createElement("div"),n=t.all||[];do t.innerHTML="<!--[if gt IE "+ ++e+"]><br><![endif]-->";while(n[0]);return e>4?e:!e}(),e.extend(e.support,{cssTransitions:"WebKitTransitionEvent"in t||o("transition","height 100ms linear",["Webkit","Moz",""])&&!e.mobile.browser.oldIE&&!f,pushState:"pushState"in history&&"replaceState"in history&&!(t.navigator.userAgent.indexOf("Firefox")>=0&&t.top!==t)&&-1===t.navigator.userAgent.search(/CriOS/),mediaquery:e.mobile.media("only all"),cssPseudoElement:!!a("content"),touchOverflow:!!a("overflowScrolling"),cssTransform3d:s(),boxShadow:!!a("boxShadow")&&!b,fixedPosition:c(),scrollTop:("pageXOffset"in t||"scrollTop"in i.documentElement||"scrollTop"in h[0])&&!m&&!g,dynamicBaseTag:r(),cssPointerEvents:l(),boundingRect:d()}),h.remove();var v=function(){var e=t.navigator.userAgent;return e.indexOf("Nokia")>-1&&(e.indexOf("Symbian/3")>-1||e.indexOf("Series60/5")>-1)&&e.indexOf("AppleWebKit")>-1&&e.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}();e.mobile.gradeA=function(){return(e.support.mediaquery||e.mobile.browser.oldIE&&e.mobile.browser.oldIE>=7)&&(e.support.boundingRect||null!==e.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/))},e.mobile.ajaxBlacklist=t.blackberry&&!t.WebKitPoint||g||v,v&&e(function(){e("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),e.support.boxShadow||e("html").addClass("ui-mobile-nosupport-boxshadow")}(e),function(e,t){var i,n=e.mobile.window;e.event.special.navigate=i={bound:!1,pushStateEnabled:!0,originalEventName:t,isPushStateEnabled:function(){return e.support.pushState&&e.mobile.pushStateEnabled===!0&&this.isHashChangeEnabled()},isHashChangeEnabled:function(){return e.mobile.hashListeningEnabled===!0},popstate:function(t){var i=new e.Event("navigate"),a=new e.Event("beforenavigate"),o=t.originalEvent.state||{};location.href,n.trigger(a),a.isDefaultPrevented()||(t.historyState&&e.extend(o,t.historyState),i.originalEvent=t,setTimeout(function(){n.trigger(i,{state:o})},0))},hashchange:function(t){var i=new e.Event("navigate"),a=new e.Event("beforenavigate");n.trigger(a),a.isDefaultPrevented()||(i.originalEvent=t,n.trigger(i,{state:t.hashchangeState||{}}))},setup:function(){i.bound||(i.bound=!0,i.isPushStateEnabled()?(i.originalEventName="popstate",n.bind("popstate.navigate",i.popstate)):i.isHashChangeEnabled()&&(i.originalEventName="hashchange",n.bind("hashchange.navigate",i.hashchange)))}}}(e),function(e,i){var n,a,o="&ui-state=dialog";e.mobile.path=n={uiStateKey:"&ui-state",urlParseRE:/^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,getLocation:function(e){var t=e?this.parseUrl(e):location,i=this.parseUrl(e||location.href).hash;return i="#"===i?"":i,t.protocol+"//"+t.host+t.pathname+t.search+i},parseLocation:function(){return this.parseUrl(this.getLocation())},parseUrl:function(t){if("object"===e.type(t))return t;var i=n.urlParseRE.exec(t||"")||[];return{href:i[0]||"",hrefNoHash:i[1]||"",hrefNoSearch:i[2]||"",domain:i[3]||"",protocol:i[4]||"",doubleSlash:i[5]||"",authority:i[6]||"",username:i[8]||"",password:i[9]||"",host:i[10]||"",hostname:i[11]||"",port:i[12]||"",pathname:i[13]||"",directory:i[14]||"",filename:i[15]||"",search:i[16]||"",hash:i[17]||""}},makePathAbsolute:function(e,t){if(e&&"/"===e.charAt(0))return e;e=e||"",t=t?t.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"";for(var i=t?t.split("/"):[],n=e.split("/"),a=0;n.length>a;a++){var o=n[a];switch(o){case".":break;case"..":i.length&&i.pop();break;default:i.push(o)}}return"/"+i.join("/")},isSameDomain:function(e,t){return n.parseUrl(e).domain===n.parseUrl(t).domain},isRelativeUrl:function(e){return""===n.parseUrl(e).protocol},isAbsoluteUrl:function(e){return""!==n.parseUrl(e).protocol},makeUrlAbsolute:function(e,t){if(!n.isRelativeUrl(e))return e;t===i&&(t=this.documentBase);var a=n.parseUrl(e),o=n.parseUrl(t),s=a.protocol||o.protocol,r=a.protocol?a.doubleSlash:a.doubleSlash||o.doubleSlash,l=a.authority||o.authority,d=""!==a.pathname,c=n.makePathAbsolute(a.pathname||o.filename,o.pathname),h=a.search||!d&&o.search||"",u=a.hash;return s+r+l+c+h+u},addSearchParams:function(t,i){var a=n.parseUrl(t),o="object"==typeof i?e.param(i):i,s=a.search||"?";return a.hrefNoSearch+s+("?"!==s.charAt(s.length-1)?"&":"")+o+(a.hash||"")},convertUrlToDataUrl:function(e){var i=n.parseUrl(e);return n.isEmbeddedPage(i)?i.hash.split(o)[0].replace(/^#/,"").replace(/\?.*$/,""):n.isSameDomain(i,this.documentBase)?i.hrefNoHash.replace(this.documentBase.domain,"").split(o)[0]:t.decodeURIComponent(e)},get:function(e){return e===i&&(e=n.parseLocation().hash),n.stripHash(e).replace(/[^\/]*\.[^\/*]+$/,"")},set:function(e){location.hash=e},isPath:function(e){return/\//.test(e)},clean:function(e){return e.replace(this.documentBase.domain,"")},stripHash:function(e){return e.replace(/^#/,"")},stripQueryParams:function(e){return e.replace(/\?.*$/,"")},cleanHash:function(e){return n.stripHash(e.replace(/\?.*$/,"").replace(o,""))},isHashValid:function(e){return/^#[^#]+$/.test(e)},isExternal:function(e){var t=n.parseUrl(e);return t.protocol&&t.domain!==this.documentUrl.domain?!0:!1},hasProtocol:function(e){return/^(:?\w+:)/.test(e)},isEmbeddedPage:function(e){var t=n.parseUrl(e);return""!==t.protocol?!this.isPath(t.hash)&&t.hash&&(t.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&t.hrefNoHash===this.documentBase.hrefNoHash):/^#/.test(t.href)},squash:function(e,t){var i,a,o,s,r=this.isPath(e),l=this.parseUrl(e),d=l.hash,c="";return t=t||(n.isPath(e)?n.getLocation():n.getDocumentUrl()),a=r?n.stripHash(e):e,a=n.isPath(l.hash)?n.stripHash(l.hash):a,s=a.indexOf(this.uiStateKey),s>-1&&(c=a.slice(s),a=a.slice(0,s)),i=n.makeUrlAbsolute(a,t),o=this.parseUrl(i).search,r?((n.isPath(d)||0===d.replace("#","").indexOf(this.uiStateKey))&&(d=""),c&&-1===d.indexOf(this.uiStateKey)&&(d+=c),-1===d.indexOf("#")&&""!==d&&(d="#"+d),i=n.parseUrl(i),i=i.protocol+"//"+i.host+i.pathname+o+d):i+=i.indexOf("#")>-1?c:"#"+c,i},isPreservableHash:function(e){return 0===e.replace("#","").indexOf(this.uiStateKey)}},n.documentUrl=n.parseLocation(),a=e("head").find("base"),n.documentBase=a.length?n.parseUrl(n.makeUrlAbsolute(a.attr("href"),n.documentUrl.href)):n.documentUrl,n.documentBaseDiffers=n.documentUrl.hrefNoHash!==n.documentBase.hrefNoHash,n.getDocumentUrl=function(t){return t?e.extend({},n.documentUrl):n.documentUrl.href},n.getDocumentBase=function(t){return t?e.extend({},n.documentBase):n.documentBase.href}}(e),function(e,t){e.mobile.path,e.mobile.History=function(e,t){this.stack=e||[],this.activeIndex=t||0},e.extend(e.mobile.History.prototype,{getActive:function(){return this.stack[this.activeIndex]},getLast:function(){return this.stack[this.previousIndex]},getNext:function(){return this.stack[this.activeIndex+1]},getPrev:function(){return this.stack[this.activeIndex-1]},add:function(e,t){t=t||{},this.getNext()&&this.clearForward(),t.hash&&-1===t.hash.indexOf("#")&&(t.hash="#"+t.hash),t.url=e,this.stack.push(t),this.activeIndex=this.stack.length-1},clearForward:function(){this.stack=this.stack.slice(0,this.activeIndex+1)},find:function(e,t,i){t=t||this.stack;var n,a,o,s=t.length;for(a=0;s>a;a++)if(n=t[a],(decodeURIComponent(e)===decodeURIComponent(n.url)||decodeURIComponent(e)===decodeURIComponent(n.hash))&&(o=a,i))return o;return o},closest:function(e){var i,n=this.activeIndex;return i=this.find(e,this.stack.slice(0,n)),i===t&&(i=this.find(e,this.stack.slice(n),!0),i=i===t?i:i+n),i},direct:function(i){var n=this.closest(i.url),a=this.activeIndex;n!==t&&(this.activeIndex=n,this.previousIndex=a),a>n?(i.present||i.back||e.noop)(this.getActive(),"back"):n>a?(i.present||i.forward||e.noop)(this.getActive(),"forward"):n===t&&i.missing&&i.missing(this.getActive())}})}(e),function(e){var a=e.mobile.path,o=location.href;e.mobile.Navigator=function(t){this.history=t,this.ignoreInitialHashChange=!0,e.mobile.window.bind({"popstate.history":e.proxy(this.popstate,this),"hashchange.history":e.proxy(this.hashchange,this)})},e.extend(e.mobile.Navigator.prototype,{squash:function(n,o){var s,r,l=a.isPath(n)?a.stripHash(n):n;return r=a.squash(n),s=e.extend({hash:l,url:r},o),t.history.replaceState(s,s.title||i.title,r),s},hash:function(e,t){var i,n,o;if(i=a.parseUrl(e),n=a.parseLocation(),n.pathname+n.search===i.pathname+i.search)o=i.hash?i.hash:i.pathname+i.search;else if(a.isPath(e)){var s=a.parseUrl(t);o=s.pathname+s.search+(a.isPreservableHash(s.hash)?s.hash.replace("#",""):"")}else o=e;return o},go:function(n,o,s){var r,l,d,c,h=e.event.special.navigate.isPushStateEnabled();l=a.squash(n),d=this.hash(n,l),s&&d!==a.stripHash(a.parseLocation().hash)&&(this.preventNextHashChange=s),this.preventHashAssignPopState=!0,t.location.hash=d,this.preventHashAssignPopState=!1,r=e.extend({url:l,hash:d,title:i.title},o),h&&(c=new e.Event("popstate"),c.originalEvent={type:"popstate",state:null},this.squash(n,r),s||(this.ignorePopState=!0,e.mobile.window.trigger(c))),this.history.add(r.url,r)},popstate:function(t){var i,s;if(e.event.special.navigate.isPushStateEnabled())return this.preventHashAssignPopState?(this.preventHashAssignPopState=!1,t.stopImmediatePropagation(),n):this.ignorePopState?(this.ignorePopState=!1,n):!t.originalEvent.state&&1===this.history.stack.length&&this.ignoreInitialHashChange&&(this.ignoreInitialHashChange=!1,location.href===o)?(t.preventDefault(),n):(i=a.parseLocation().hash,!t.originalEvent.state&&i?(s=this.squash(i),this.history.add(s.url,s),t.historyState=s,n):(this.history.direct({url:(t.originalEvent.state||{}).url||i,present:function(i,n){t.historyState=e.extend({},i),t.historyState.direction=n}}),n))},hashchange:function(t){var o,s;if(e.event.special.navigate.isHashChangeEnabled()&&!e.event.special.navigate.isPushStateEnabled()){if(this.preventNextHashChange)return this.preventNextHashChange=!1,t.stopImmediatePropagation(),n;o=this.history,s=a.parseLocation().hash,this.history.direct({url:s,present:function(i,n){t.hashchangeState=e.extend({},i),t.hashchangeState.direction=n},missing:function(){o.add(s,{hash:s,title:i.title})}})}}})}(e),function(e){e.mobile.navigate=function(t,i,n){e.mobile.navigate.navigator.go(t,i,n)},e.mobile.navigate.history=new e.mobile.History,e.mobile.navigate.navigator=new e.mobile.Navigator(e.mobile.navigate.history);var t=e.mobile.path.parseLocation();e.mobile.navigate.history.add(t.href,{hash:t.hash})}(e),function(e,t,i,n){function a(e){for(;e&&e.originalEvent!==n;)e=e.originalEvent;return e}function o(t,i){var o,s,r,l,d,c,h,u,p,m=t.type;if(t=e.Event(t),t.type=i,o=t.originalEvent,s=e.event.props,m.search(/^(mouse|click)/)>-1&&(s=q),o)for(h=s.length,l;h;)l=s[--h],t[l]=o[l];if(m.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1),-1!==m.search(/^touch/)&&(r=a(o),m=r.touches,d=r.changedTouches,c=m&&m.length?m[0]:d&&d.length?d[0]:n))for(u=0,p=k.length;p>u;u++)l=k[u],t[l]=c[l];return t}function s(t){for(var i,n,a={};t;){i=e.data(t,T);for(n in i)i[n]&&(a[n]=a.hasVirtualBinding=!0);t=t.parentNode}return a}function r(t,i){for(var n;t;){if(n=e.data(t,T),n&&(!i||n[i]))return t;t=t.parentNode}return null}function l(){M=!1}function d(){M=!0}function c(){U=0,O.length=0,H=!1,d()}function h(){l()}function u(){p(),S=setTimeout(function(){S=0,c()},e.vmouse.resetTimerDuration)}function p(){S&&(clearTimeout(S),S=0)}function m(t,i,n){var a;return(n&&n[t]||!n&&r(i.target,t))&&(a=o(i,t),e(i.target).trigger(a)),a}function f(t){var i=e.data(t.target,D);if(!(H||U&&U===i)){var n=m("v"+t.type,t);n&&(n.isDefaultPrevented()&&t.preventDefault(),n.isPropagationStopped()&&t.stopPropagation(),n.isImmediatePropagationStopped()&&t.stopImmediatePropagation())}}function g(t){var i,n,o=a(t).touches;if(o&&1===o.length&&(i=t.target,n=s(i),n.hasVirtualBinding)){U=L++,e.data(i,D,U),p(),h(),I=!1;var r=a(t).touches[0];A=r.pageX,N=r.pageY,m("vmouseover",t,n),m("vmousedown",t,n)}}function b(e){M||(I||m("vmousecancel",e,s(e.target)),I=!0,u())}function v(t){if(!M){var i=a(t).touches[0],n=I,o=e.vmouse.moveDistanceThreshold,r=s(t.target);I=I||Math.abs(i.pageX-A)>o||Math.abs(i.pageY-N)>o,I&&!n&&m("vmousecancel",t,r),m("vmousemove",t,r),u()}}function _(e){if(!M){d();var t,i=s(e.target);if(m("vmouseup",e,i),!I){var n=m("vclick",e,i);n&&n.isDefaultPrevented()&&(t=a(e).changedTouches[0],O.push({touchID:U,x:t.clientX,y:t.clientY}),H=!0)}m("vmouseout",e,i),I=!1,u()}}function C(t){var i,n=e.data(t,T);if(n)for(i in n)if(n[i])return!0;return!1}function x(){}function y(t){var i=t.substr(1);return{setup:function(){C(this)||e.data(this,T,{});var n=e.data(this,T);n[t]=!0,j[t]=(j[t]||0)+1,1===j[t]&&B.bind(i,f),e(this).bind(i,x),F&&(j.touchstart=(j.touchstart||0)+1,1===j.touchstart&&B.bind("touchstart",g).bind("touchend",_).bind("touchmove",v).bind("scroll",b))},teardown:function(){--j[t],j[t]||B.unbind(i,f),F&&(--j.touchstart,j.touchstart||B.unbind("touchstart",g).unbind("touchmove",v).unbind("touchend",_).unbind("scroll",b));var n=e(this),a=e.data(this,T);a&&(a[t]=!1),n.unbind(i,x),C(this)||n.removeData(T)}}}var w,T="virtualMouseBindings",D="virtualTouchID",P="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),k="clientX clientY pageX pageY screenX screenY".split(" "),E=e.event.mouseHooks?e.event.mouseHooks.props:[],q=e.event.props.concat(E),j={},S=0,A=0,N=0,I=!1,O=[],H=!1,M=!1,F="addEventListener"in i,B=e(i),L=1,U=0;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var z=0;P.length>z;z++)e.event.special[P[z]]=y(P[z]);F&&i.addEventListener("click",function(t){var i,a,o,s,r,l,d=O.length,c=t.target;if(d)for(i=t.clientX,a=t.clientY,w=e.vmouse.clickDistanceThreshold,o=c;o;){for(s=0;d>s;s++)if(r=O[s],l=0,o===c&&w>Math.abs(r.x-i)&&w>Math.abs(r.y-a)||e.data(o,D)===r.touchID)return t.preventDefault(),t.stopPropagation(),n;o=o.parentNode}},!0)}(e,t,i),function(e,t,n){function a(t,i,n){var a=n.type;n.type=i,e.event.dispatch.call(t,n),n.type=a}var o=e(i);e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,i){e.fn[i]=function(e){return e?this.bind(i,e):this.trigger(i)},e.attrFn&&(e.attrFn[i]=!0)});var s=e.mobile.support.touch,r="touchmove scroll",l=s?"touchstart":"mousedown",d=s?"touchend":"mouseup",c=s?"touchmove":"mousemove";e.event.special.scrollstart={enabled:!0,setup:function(){function t(e,t){i=t,a(o,i?"scrollstart":"scrollstop",e)}var i,n,o=this,s=e(o);s.bind(r,function(a){e.event.special.scrollstart.enabled&&(i||t(a,!0),clearTimeout(n),n=setTimeout(function(){t(a,!1)},50))})}},e.event.special.tap={tapholdThreshold:750,setup:function(){var t=this,i=e(t);i.bind("vmousedown",function(n){function s(){clearTimeout(d)}function r(){s(),i.unbind("vclick",l).unbind("vmouseup",s),o.unbind("vmousecancel",r)}function l(e){r(),c===e.target&&a(t,"tap",e)}if(n.which&&1!==n.which)return!1;var d,c=n.target;n.originalEvent,i.bind("vmouseup",s).bind("vclick",l),o.bind("vmousecancel",r),d=setTimeout(function(){a(t,"taphold",e.Event("taphold",{target:c}))
+},e.event.special.tap.tapholdThreshold)})}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,start:function(t){var i=t.originalEvent.touches?t.originalEvent.touches[0]:t;return{time:(new Date).getTime(),coords:[i.pageX,i.pageY],origin:e(t.target)}},stop:function(e){var t=e.originalEvent.touches?e.originalEvent.touches[0]:e;return{time:(new Date).getTime(),coords:[t.pageX,t.pageY]}},handleSwipe:function(t,i){i.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-i.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-i.coords[1])<e.event.special.swipe.verticalDistanceThreshold&&t.origin.trigger("swipe").trigger(t.coords[0]>i.coords[0]?"swipeleft":"swiperight")},setup:function(){var t=this,i=e(t);i.bind(l,function(t){function a(t){s&&(o=e.event.special.swipe.stop(t),Math.abs(s.coords[0]-o.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault())}var o,s=e.event.special.swipe.start(t);i.bind(c,a).one(d,function(){i.unbind(c,a),s&&o&&e.event.special.swipe.handleSwipe(s,o),s=o=n})})}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe",swiperight:"swipe"},function(t,i){e.event.special[t]={setup:function(){e(this).bind(i,e.noop)}}})}(e,this),function(e){e.event.special.throttledresize={setup:function(){e(this).bind("resize",o)},teardown:function(){e(this).unbind("resize",o)}};var t,i,n,a=250,o=function(){i=(new Date).getTime(),n=i-s,n>=a?(s=i,e(this).trigger("throttledresize")):(t&&clearTimeout(t),t=setTimeout(o,a-n))},s=0}(e),function(e,t){function a(){var e=o();e!==s&&(s=e,d.trigger(c))}var o,s,r,l,d=e(t),c="orientationchange",h={0:!0,180:!0};if(e.support.orientation){var u=t.innerWidth||d.width(),p=t.innerHeight||d.height(),m=50;r=u>p&&u-p>m,l=h[t.orientation],(r&&l||!r&&!l)&&(h={"-90":!0,90:!0})}e.event.special.orientationchange=e.extend({},e.event.special.orientationchange,{setup:function(){return e.support.orientation&&!e.event.special.orientationchange.disabled?!1:(s=o(),d.bind("throttledresize",a),n)},teardown:function(){return e.support.orientation&&!e.event.special.orientationchange.disabled?!1:(d.unbind("throttledresize",a),n)},add:function(e){var t=e.handler;e.handler=function(e){return e.orientation=o(),t.apply(this,arguments)}}}),e.event.special.orientationchange.orientation=o=function(){var n=!0,a=i.documentElement;return n=e.support.orientation?h[t.orientation]:a&&1.1>a.clientWidth/a.clientHeight,n?"portrait":"landscape"},e.fn[c]=function(e){return e?this.bind(c,e):this.trigger(c)},e.attrFn&&(e.attrFn[c]=!0)}(e,this),function(e){e.widget("mobile.page",e.mobile.widget,{options:{theme:"c",domCache:!1,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){return this._trigger("beforecreate")===!1?!1:(this.element.attr("tabindex","0").addClass("ui-page ui-body-"+this.options.theme),this._on(this.element,{pagebeforehide:"removeContainerBackground",pagebeforeshow:"_handlePageBeforeShow"}),n)},_handlePageBeforeShow:function(){this.setContainerBackground()},removeContainerBackground:function(){e.mobile.pageContainer.removeClass("ui-overlay-"+e.mobile.getInheritedTheme(this.element.parent()))},setContainerBackground:function(t){this.options.theme&&e.mobile.pageContainer.addClass("ui-overlay-"+(t||this.options.theme))},keepNativeSelector:function(){var t=this.options,i=t.keepNative&&e.trim(t.keepNative);return i&&t.keepNative!==t.keepNativeDefault?[t.keepNative,t.keepNativeDefault].join(", "):t.keepNativeDefault}})}(e),function(e,t,i){var n=function(n){return n===i&&(n=!0),function(i,a,o,s){var r=new e.Deferred,l=a?" reverse":"",d=e.mobile.urlHistory.getActive(),c=d.lastScroll||e.mobile.defaultHomeScroll,h=e.mobile.getScreenHeight(),u=e.mobile.maxTransitionWidth!==!1&&e.mobile.window.width()>e.mobile.maxTransitionWidth,p=!e.support.cssTransitions||u||!i||"none"===i||Math.max(e.mobile.window.scrollTop(),c)>e.mobile.getMaxScrollForTransition(),m=" ui-page-pre-in",f=function(){e.mobile.pageContainer.toggleClass("ui-mobile-viewport-transitioning viewport-"+i)},g=function(){e.event.special.scrollstart.enabled=!1,t.scrollTo(0,c),setTimeout(function(){e.event.special.scrollstart.enabled=!0},150)},b=function(){s.removeClass(e.mobile.activePageClass+" out in reverse "+i).height("")},v=function(){n?s.animationComplete(_):_(),s.height(h+e.mobile.window.scrollTop()).addClass(i+" out"+l)},_=function(){s&&n&&b(),C()},C=function(){o.css("z-index",-10),o.addClass(e.mobile.activePageClass+m),e.mobile.focusPage(o),o.height(h+c),g(),o.css("z-index",""),p||o.animationComplete(x),o.removeClass(m).addClass(i+" in"+l),p&&x()},x=function(){n||s&&b(),o.removeClass("out in reverse "+i).height(""),f(),e.mobile.window.scrollTop()!==c&&g(),r.resolve(i,a,o,s,!0)};return f(),s&&!p?v():_(),r.promise()}},a=n(),o=n(!1),s=function(){return 3*e.mobile.getScreenHeight()};e.mobile.defaultTransitionHandler=a,e.mobile.transitionHandlers={"default":e.mobile.defaultTransitionHandler,sequential:a,simultaneous:o},e.mobile.transitionFallbacks={},e.mobile._maybeDegradeTransition=function(t){return t&&!e.support.cssTransform3d&&e.mobile.transitionFallbacks[t]&&(t=e.mobile.transitionFallbacks[t]),t},e.mobile.getMaxScrollForTransition=e.mobile.getMaxScrollForTransition||s}(e,this),function(e,n){function a(t){!f||f.closest("."+e.mobile.activePageClass).length&&!t||f.removeClass(e.mobile.activeBtnClass),f=null}function o(){_=!1,v.length>0&&e.mobile.changePage.apply(null,v.pop())}function s(t,i,n,a){i&&i.data("mobile-page")._trigger("beforehide",null,{nextPage:t}),t.data("mobile-page")._trigger("beforeshow",null,{prevPage:i||e("")}),e.mobile.hidePageLoadingMsg(),n=e.mobile._maybeDegradeTransition(n);var o=e.mobile.transitionHandlers[n||"default"]||e.mobile.defaultTransitionHandler,s=o(n,a,t,i);return s.done(function(){i&&i.data("mobile-page")._trigger("hide",null,{nextPage:t}),t.data("mobile-page")._trigger("show",null,{prevPage:i||e("")})}),s}function r(t,i){i&&t.attr("data-"+e.mobile.ns+"role",i),t.page()}function l(){var t=e.mobile.activePage&&c(e.mobile.activePage);return t||w.hrefNoHash}function d(e){for(;e&&("string"!=typeof e.nodeName||"a"!==e.nodeName.toLowerCase());)e=e.parentNode;return e}function c(t){var i=e(t).closest(".ui-page").jqmData("url"),n=w.hrefNoHash;return i&&p.isPath(i)||(i=n),p.makeUrlAbsolute(i,n)}var h=e.mobile.window,u=(e("html"),e("head")),p=e.extend(e.mobile.path,{getFilePath:function(t){var i="&"+e.mobile.subPageUrlKey;return t&&t.split(i)[0].split(C)[0]},isFirstPageUrl:function(t){var i=p.parseUrl(p.makeUrlAbsolute(t,this.documentBase)),a=i.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&i.hrefNoHash===this.documentBase.hrefNoHash,o=e.mobile.firstPage,s=o&&o[0]?o[0].id:n;return a&&(!i.hash||"#"===i.hash||s&&i.hash.replace(/^#/,"")===s)},isPermittedCrossDomainRequest:function(t,i){return e.mobile.allowCrossDomainPages&&"file:"===t.protocol&&-1!==i.search(/^https?:/)}}),m=null,f=null,g=e.Deferred(),b=e.mobile.navigate.history,v=[],_=!1,C="&ui-state=dialog",x=u.children("base"),y=p.documentUrl,w=p.documentBase,T=(p.documentBaseDiffers,e.mobile.getScreenHeight),D=e.support.dynamicBaseTag?{element:x.length?x:e("<base>",{href:w.hrefNoHash}).prependTo(u),set:function(e){e=p.parseUrl(e).hrefNoHash,D.element.attr("href",p.makeUrlAbsolute(e,w))},reset:function(){D.element.attr("href",w.hrefNoSearch)}}:n;e.mobile.getDocumentUrl=p.getDocumentUrl,e.mobile.getDocumentBase=p.getDocumentBase,e.mobile.back=function(){var e=t.navigator;this.phonegapNavigationEnabled&&e&&e.app&&e.app.backHistory?e.app.backHistory():t.history.back()},e.mobile.focusPage=function(e){var t=e.find("[autofocus]"),i=e.find(".ui-title:eq(0)");return t.length?(t.focus(),n):(i.length?i.focus():e.focus(),n)};var P,k,E=!0;P=function(){if(E){var t=e.mobile.urlHistory.getActive();if(t){var i=h.scrollTop();t.lastScroll=e.mobile.minScrollBack>i?e.mobile.defaultHomeScroll:i}}},k=function(){setTimeout(P,100)},h.bind(e.support.pushState?"popstate":"hashchange",function(){E=!1}),h.one(e.support.pushState?"popstate":"hashchange",function(){E=!0}),h.one("pagecontainercreate",function(){e.mobile.pageContainer.bind("pagechange",function(){E=!0,h.unbind("scrollstop",k),h.bind("scrollstop",k)})}),h.bind("scrollstop",k),e.mobile._maybeDegradeTransition=e.mobile._maybeDegradeTransition||function(e){return e},e.mobile.resetActivePageHeight=function(t){var i=e("."+e.mobile.activePageClass),n=parseFloat(i.css("padding-top")),a=parseFloat(i.css("padding-bottom")),o=parseFloat(i.css("border-top-width")),s=parseFloat(i.css("border-bottom-width"));t="number"==typeof t?t:T(),i.css("min-height",t-n-a-o-s)},e.fn.animationComplete=function(t){return e.support.cssTransitions?e(this).one("webkitAnimationEnd animationend",t):(setTimeout(t,0),e(this))},e.mobile.path=p,e.mobile.base=D,e.mobile.urlHistory=b,e.mobile.dialogHashKey=C,e.mobile.allowCrossDomainPages=!1,e.mobile._bindPageRemove=function(){var t=e(this);!t.data("mobile-page").options.domCache&&t.is(":jqmData(external-page='true')")&&t.bind("pagehide.remove",function(){var t=e(this),i=new e.Event("pageremove");t.trigger(i),i.isDefaultPrevented()||t.removeWithDependents()})},e.mobile.loadPage=function(t,i){var a=e.Deferred(),o=e.extend({},e.mobile.loadPage.defaults,i),s=null,d=null,c=p.makeUrlAbsolute(t,l());o.data&&"get"===o.type&&(c=p.addSearchParams(c,o.data),o.data=n),o.data&&"post"===o.type&&(o.reloadPage=!0);var h=p.getFilePath(c),u=p.convertUrlToDataUrl(c);if(o.pageContainer=o.pageContainer||e.mobile.pageContainer,s=o.pageContainer.children("[data-"+e.mobile.ns+"url='"+u+"']"),0===s.length&&u&&!p.isPath(u)&&(s=o.pageContainer.children("#"+u).attr("data-"+e.mobile.ns+"url",u).jqmData("url",u)),0===s.length)if(e.mobile.firstPage&&p.isFirstPageUrl(h))e.mobile.firstPage.parent().length&&(s=e(e.mobile.firstPage));else if(p.isEmbeddedPage(h))return a.reject(c,i),a.promise();if(s.length){if(!o.reloadPage)return r(s,o.role),a.resolve(c,i,s),D&&!i.prefetch&&D.set(t),a.promise();d=s}var m=o.pageContainer,f=new e.Event("pagebeforeload"),g={url:t,absUrl:c,dataUrl:u,deferred:a,options:o};if(m.trigger(f,g),f.isDefaultPrevented())return a.promise();if(o.showLoadMsg)var b=setTimeout(function(){e.mobile.showPageLoadingMsg()},o.loadMsgDelay),v=function(){clearTimeout(b),e.mobile.hidePageLoadingMsg()};return D&&i.prefetch===n&&D.reset(),e.mobile.allowCrossDomainPages||p.isSameDomain(y,c)?e.ajax({url:h,type:o.type,data:o.data,contentType:o.contentType,dataType:"html",success:function(l,m,f){var b=e("<div></div>"),_=l.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,C=RegExp("(<[^>]+\\bdata-"+e.mobile.ns+"role=[\"']?page[\"']?[^>]*>)"),x=RegExp("\\bdata-"+e.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");if(C.test(l)&&RegExp.$1&&x.test(RegExp.$1)&&RegExp.$1&&(t=h=p.getFilePath(e("<div>"+RegExp.$1+"</div>").text())),D&&i.prefetch===n&&D.set(h),b.get(0).innerHTML=l,s=b.find(":jqmData(role='page'), :jqmData(role='dialog')").first(),s.length||(s=e("<div data-"+e.mobile.ns+"role='page'>"+(l.split(/<\/?body[^>]*>/gim)[1]||"")+"</div>")),_&&!s.jqmData("title")&&(~_.indexOf("&")&&(_=e("<div>"+_+"</div>").text()),s.jqmData("title",_)),!e.support.dynamicBaseTag){var y=p.get(h);s.find("[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]").each(function(){var t=e(this).is("[href]")?"href":e(this).is("[src]")?"src":"action",i=e(this).attr(t);i=i.replace(location.protocol+"//"+location.host+location.pathname,""),/^(\w+:|#|\/)/.test(i)||e(this).attr(t,y+i)})}s.attr("data-"+e.mobile.ns+"url",p.convertUrlToDataUrl(h)).attr("data-"+e.mobile.ns+"external-page",!0).appendTo(o.pageContainer),s.one("pagecreate",e.mobile._bindPageRemove),r(s,o.role),c.indexOf("&"+e.mobile.subPageUrlKey)>-1&&(s=o.pageContainer.children("[data-"+e.mobile.ns+"url='"+u+"']")),o.showLoadMsg&&v(),g.xhr=f,g.textStatus=m,g.page=s,o.pageContainer.trigger("pageload",g),a.resolve(c,i,s,d)},error:function(t,n,s){D&&D.set(p.get()),g.xhr=t,g.textStatus=n,g.errorThrown=s;var r=new e.Event("pageloadfailed");o.pageContainer.trigger(r,g),r.isDefaultPrevented()||(o.showLoadMsg&&(v(),e.mobile.showPageLoadingMsg(e.mobile.pageLoadErrorMessageTheme,e.mobile.pageLoadErrorMessage,!0),setTimeout(e.mobile.hidePageLoadingMsg,1500)),a.reject(c,i))}}):a.reject(c,i),a.promise()},e.mobile.loadPage.defaults={type:"get",data:n,reloadPage:!1,role:n,showLoadMsg:!1,pageContainer:n,loadMsgDelay:50},e.mobile.changePage=function(t,d){if(_)return v.unshift(arguments),n;var c,h=e.extend({},e.mobile.changePage.defaults,d);h.pageContainer=h.pageContainer||e.mobile.pageContainer,h.fromPage=h.fromPage||e.mobile.activePage,c="string"==typeof t;var u=h.pageContainer,m=new e.Event("pagebeforechange"),f={toPage:t,options:h};if(f.absUrl=c?p.makeUrlAbsolute(t,l()):t.data("absUrl"),u.trigger(m,f),!m.isDefaultPrevented()){if(t=f.toPage,c="string"==typeof t,_=!0,c)return h.target=t,e.mobile.loadPage(t,h).done(function(t,i,n,a){_=!1,i.duplicateCachedPage=a,n.data("absUrl",f.absUrl),e.mobile.changePage(n,i)}).fail(function(){a(!0),o(),h.pageContainer.trigger("pagechangefailed",f)}),n;t[0]!==e.mobile.firstPage[0]||h.dataUrl||(h.dataUrl=y.hrefNoHash);var g=h.fromPage,x=h.dataUrl&&p.convertUrlToDataUrl(h.dataUrl)||t.jqmData("url"),w=x,T=(p.getFilePath(x),b.getActive()),D=0===b.activeIndex,P=0,k=i.title,E="dialog"===h.role||"dialog"===t.jqmData("role");if(g&&g[0]===t[0]&&!h.allowSamePageTransition)return _=!1,u.trigger("pagechange",f),h.fromHashChange&&b.direct({url:x}),n;r(t,h.role),h.fromHashChange&&(P="back"===d.direction?-1:1);try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()?e(i.activeElement).blur():e("input:focus, textarea:focus, select:focus").blur()}catch(q){}var j=!1;E&&T&&(T.url&&T.url.indexOf(C)>-1&&e.mobile.activePage&&!e.mobile.activePage.is(".ui-dialog")&&b.activeIndex>0&&(h.changeHash=!1,j=!0),x=T.url||"",x+=!j&&x.indexOf("#")>-1?C:"#"+C,0===b.activeIndex&&x===b.initialDst&&(x+=C));var S=T?t.jqmData("title")||t.children(":jqmData(role='header')").find(".ui-title").text():k;if(S&&k===i.title&&(k=S),t.jqmData("title")||t.jqmData("title",k),h.transition=h.transition||(P&&!D?T.transition:n)||(E?e.mobile.defaultDialogTransition:e.mobile.defaultPageTransition),!P&&j&&(b.getActive().pageUrl=w),x&&!h.fromHashChange){var A;!p.isPath(x)&&0>x.indexOf("#")&&(x="#"+x),A={transition:h.transition,title:k,pageUrl:w,role:h.role},h.changeHash!==!1&&e.mobile.hashListeningEnabled?e.mobile.navigate(x,A,!0):t[0]!==e.mobile.firstPage[0]&&e.mobile.navigate.history.add(x,A)}i.title=k,e.mobile.activePage=t,h.reverse=h.reverse||0>P,s(t,g,h.transition,h.reverse).done(function(i,n,s,r,l){a(),h.duplicateCachedPage&&h.duplicateCachedPage.remove(),l||e.mobile.focusPage(t),o(),u.trigger("pagechange",f)})}},e.mobile.changePage.defaults={transition:n,reverse:!1,changeHash:!0,fromHashChange:!1,role:n,duplicateCachedPage:n,pageContainer:n,showLoadMsg:!0,dataUrl:n,fromPage:n,allowSamePageTransition:!1},e.mobile.navreadyDeferred=e.Deferred(),e.mobile._registerInternalEvents=function(){var i=function(t,i){var a,o,s,r,l=!0;return!e.mobile.ajaxEnabled||t.is(":jqmData(ajax='false')")||!t.jqmHijackable().length||t.attr("target")?!1:(a=t.attr("action"),r=(t.attr("method")||"get").toLowerCase(),a||(a=c(t),"get"===r&&(a=p.parseUrl(a).hrefNoSearch),a===w.hrefNoHash&&(a=y.hrefNoSearch)),a=p.makeUrlAbsolute(a,c(t)),p.isExternal(a)&&!p.isPermittedCrossDomainRequest(y,a)?!1:(i||(o=t.serializeArray(),m&&m[0].form===t[0]&&(s=m.attr("name"),s&&(e.each(o,function(e,t){return t.name===s?(s="",!1):n}),s&&o.push({name:s,value:m.attr("value")}))),l={url:a,options:{type:r,data:e.param(o),transition:t.jqmData("transition"),reverse:"reverse"===t.jqmData("direction"),reloadPage:!0}}),l))};e.mobile.document.delegate("form","submit",function(t){var n=i(e(this));n&&(e.mobile.changePage(n.url,n.options),t.preventDefault())}),e.mobile.document.bind("vclick",function(t){var n,o,s=t.target,r=!1;if(!(t.which>1)&&e.mobile.linkBindingEnabled){if(m=e(s),e.data(s,"mobile-button")){if(!i(e(s).closest("form"),!0))return;s.parentNode&&(s=s.parentNode)}else{if(s=d(s),!s||"#"===p.parseUrl(s.getAttribute("href")||"#").hash)return;if(!e(s).jqmHijackable().length)return}~s.className.indexOf("ui-link-inherit")?s.parentNode&&(o=e.data(s.parentNode,"buttonElements")):o=e.data(s,"buttonElements"),o?s=o.outer:r=!0,n=e(s),r&&(n=n.closest(".ui-btn")),n.length>0&&!n.hasClass("ui-disabled")&&(a(!0),f=n,f.addClass(e.mobile.activeBtnClass))}}),e.mobile.document.bind("click",function(i){if(e.mobile.linkBindingEnabled&&!i.isDefaultPrevented()){var o,s=d(i.target),r=e(s);if(s&&!(i.which>1)&&r.jqmHijackable().length){if(o=function(){t.setTimeout(function(){a(!0)},200)},r.is(":jqmData(rel='back')"))return e.mobile.back(),!1;var l=c(r),h=p.makeUrlAbsolute(r.attr("href")||"#",l);if(!e.mobile.ajaxEnabled&&!p.isEmbeddedPage(h))return o(),n;if(-1!==h.search("#")){if(h=h.replace(/[^#]*#/,""),!h)return i.preventDefault(),n;h=p.isPath(h)?p.makeUrlAbsolute(h,l):p.makeUrlAbsolute("#"+h,y.hrefNoHash)}var u=r.is("[rel='external']")||r.is(":jqmData(ajax='false')")||r.is("[target]"),m=u||p.isExternal(h)&&!p.isPermittedCrossDomainRequest(y,h);if(m)return o(),n;var f=r.jqmData("transition"),g="reverse"===r.jqmData("direction")||r.jqmData("back"),b=r.attr("data-"+e.mobile.ns+"rel")||n;e.mobile.changePage(h,{transition:f,reverse:g,role:b,link:r}),i.preventDefault()}}}),e.mobile.document.delegate(".ui-page","pageshow.prefetch",function(){var t=[];e(this).find("a:jqmData(prefetch)").each(function(){var i=e(this),n=i.attr("href");n&&-1===e.inArray(n,t)&&(t.push(n),e.mobile.loadPage(n,{role:i.attr("data-"+e.mobile.ns+"rel"),prefetch:!0}))})}),e.mobile._handleHashChange=function(i,a){var o=p.stripHash(i),s=0===e.mobile.urlHistory.stack.length?"none":n,r={changeHash:!1,fromHashChange:!0,reverse:"back"===a.direction};if(e.extend(r,a,{transition:(b.getLast()||{}).transition||s}),b.activeIndex>0&&o.indexOf(C)>-1&&b.initialDst!==o){if(e.mobile.activePage&&!e.mobile.activePage.is(".ui-dialog"))return"back"===a.direction?e.mobile.back():t.history.forward(),n;o=a.pageUrl;var l=e.mobile.urlHistory.getActive();e.extend(r,{role:l.role,transition:l.transition,reverse:"back"===a.direction})}o?(o=p.isPath(o)?o:p.makeUrlAbsolute("#"+o,w),o===p.makeUrlAbsolute("#"+b.initialDst,w)&&b.stack.length&&b.stack[0].url!==b.initialDst.replace(C,"")&&(o=e.mobile.firstPage),e.mobile.changePage(o,r)):e.mobile.changePage(e.mobile.firstPage,r)},h.bind("navigate",function(t,i){var n;t.originalEvent&&t.originalEvent.isDefaultPrevented()||(n=e.event.special.navigate.originalEventName.indexOf("hashchange")>-1?i.state.hash:i.state.url,n||(n=e.mobile.path.parseLocation().hash),n&&"#"!==n&&0!==n.indexOf("#"+e.mobile.path.uiStateKey)||(n=location.href),e.mobile._handleHashChange(n,i.state))}),e.mobile.document.bind("pageshow",e.mobile.resetActivePageHeight),e.mobile.window.bind("throttledresize",e.mobile.resetActivePageHeight)},e(function(){g.resolve()}),e.when(g,e.mobile.navreadyDeferred).done(function(){e.mobile._registerInternalEvents()})}(e),function(e){e.mobile.transitionFallbacks.flip="fade"}(e,this),function(e){e.mobile.transitionFallbacks.flow="fade"}(e,this),function(e){e.mobile.transitionFallbacks.pop="fade"}(e,this),function(e){e.mobile.transitionHandlers.slide=e.mobile.transitionHandlers.simultaneous,e.mobile.transitionFallbacks.slide="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slidedown="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slidefade="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slideup="fade"}(e,this),function(e){e.mobile.transitionFallbacks.turn="fade"}(e,this),function(e){e.mobile.page.prototype.options.degradeInputs={color:!1,date:!1,datetime:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:"number",search:"text",tel:!1,time:!1,url:!1,week:!1},e.mobile.document.bind("pagecreate create",function(t){var i,n=e.mobile.closestPageData(e(t.target));n&&(i=n.options,e(t.target).find("input").not(n.keepNativeSelector()).each(function(){var t=e(this),n=this.getAttribute("type"),a=i.degradeInputs[n]||"text";if(i.degradeInputs[n]){var o=e("<div>").html(t.clone()).html(),s=o.indexOf(" type=")>-1,r=s?/\s+type=["']?\w+['"]?/:/\/?>/,l=' type="'+a+'" data-'+e.mobile.ns+'type="'+n+'"'+(s?"":">");t.replaceWith(o.replace(r,l))}}))})}(e),function(e){e.widget("mobile.dialog",e.mobile.widget,{options:{closeBtn:"left",closeBtnText:"Close",overlayTheme:"a",corners:!0,initSelector:":jqmData(role='dialog')"},_handlePageBeforeShow:function(){this._isCloseable=!0,this.options.overlayTheme&&this.element.page("removeContainerBackground").page("setContainerBackground",this.options.overlayTheme)},_create:function(){var t=this.element,i=this.options.corners?" ui-corner-all":"",n=e("<div/>",{role:"dialog","class":"ui-dialog-contain ui-overlay-shadow"+i});t.addClass("ui-dialog ui-overlay-"+this.options.overlayTheme),t.wrapInner(n),t.bind("vclick submit",function(t){var i,n=e(t.target).closest("vclick"===t.type?"a":"form");n.length&&!n.jqmData("transition")&&(i=e.mobile.urlHistory.getActive()||{},n.attr("data-"+e.mobile.ns+"transition",i.transition||e.mobile.defaultDialogTransition).attr("data-"+e.mobile.ns+"direction","reverse"))}),this._on(t,{pagebeforeshow:"_handlePageBeforeShow"}),e.extend(this,{_createComplete:!1}),this._setCloseBtn(this.options.closeBtn)},_setCloseBtn:function(t){var i,n,a=this;this._headerCloseButton&&(this._headerCloseButton.remove(),this._headerCloseButton=null),"none"!==t&&(n="left"===t?"left":"right",i=e("<a href='#' class='ui-btn-"+n+"' data-"+e.mobile.ns+"icon='delete' data-"+e.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>"),this.element.children().find(":jqmData(role='header')").first().prepend(i),this._createComplete&&e.fn.buttonMarkup&&i.buttonMarkup(),this._createComplete=!0,i.bind("click",function(){a.close()}),this._headerCloseButton=i)},_setOption:function(e,t){"closeBtn"===e&&this._setCloseBtn(t),this._super(e,t)},close:function(){var t,i,n=e.mobile.navigate.history;this._isCloseable&&(this._isCloseable=!1,e.mobile.hashListeningEnabled&&n.activeIndex>0?e.mobile.back():(t=Math.max(0,n.activeIndex-1),i=n.stack[t].pageUrl||n.stack[t].url,n.previousIndex=n.activeIndex,n.activeIndex=t,e.mobile.path.isPath(i)||(i=e.mobile.path.makeUrlAbsolute("#"+i)),e.mobile.changePage(i,{direction:"back",changeHash:!1,fromHashChange:!0})))}}),e.mobile.document.delegate(e.mobile.dialog.prototype.options.initSelector,"pagecreate",function(){e.mobile.dialog.prototype.enhance(this)})}(e,this),function(e){e.mobile.page.prototype.options.backBtnText="Back",e.mobile.page.prototype.options.addBackBtn=!1,e.mobile.page.prototype.options.backBtnTheme=null,e.mobile.page.prototype.options.headerTheme="a",e.mobile.page.prototype.options.footerTheme="a",e.mobile.page.prototype.options.contentTheme=null,e.mobile.document.bind("pagecreate",function(t){var i=e(t.target),n=i.data("mobile-page").options,a=i.jqmData("role"),o=n.theme;e(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",i).jqmEnhanceable().each(function(){var t,s,r,l,d=e(this),c=d.jqmData("role"),h=d.jqmData("theme"),u=h||n.contentTheme||"dialog"===a&&o;if(d.addClass("ui-"+c),"header"===c||"footer"===c){var p=h||("header"===c?n.headerTheme:n.footerTheme)||o;d.addClass("ui-bar-"+p).attr("role","header"===c?"banner":"contentinfo"),"header"===c&&(t=d.children("a, button"),s=t.hasClass("ui-btn-left"),r=t.hasClass("ui-btn-right"),s=s||t.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length,r=r||t.eq(1).addClass("ui-btn-right").length),n.addBackBtn&&"header"===c&&e(".ui-page").length>1&&i.jqmData("url")!==e.mobile.path.stripHash(location.hash)&&!s&&(l=e("<a href='javascript:void(0);' class='ui-btn-left' data-"+e.mobile.ns+"rel='back' data-"+e.mobile.ns+"icon='arrow-l'>"+n.backBtnText+"</a>").attr("data-"+e.mobile.ns+"theme",n.backBtnTheme||p).prependTo(d)),d.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({role:"heading","aria-level":"1"})}else"content"===c&&(u&&d.addClass("ui-body-"+u),d.attr("role","main"))})})}(e),function(e,t){function n(e){for(var t;e&&(t="string"==typeof e.className&&e.className+" ",!(t&&t.indexOf("ui-btn ")>-1&&0>t.indexOf("ui-disabled ")));)e=e.parentNode;return e}function a(n,a,o,s,r){var l=e.data(n[0],"buttonElements");n.removeClass(a).addClass(o),l&&(l.bcls=e(i.createElement("div")).addClass(l.bcls+" "+o).removeClass(a).attr("class"),s!==t&&(l.hover=s),l.state=r)}var o=function(e,i){var n=e.getAttribute(i);return"true"===n?!0:"false"===n?!1:null===n?t:n};e.fn.buttonMarkup=function(n){var a,r=this,l="data-"+e.mobile.ns;n=n&&"object"===e.type(n)?n:{};for(var d=0;r.length>d;d++){var c,h,u,p,m,f,g=r.eq(d),b=g[0],v=e.extend({},e.fn.buttonMarkup.defaults,{icon:n.icon!==t?n.icon:o(b,l+"icon"),iconpos:n.iconpos!==t?n.iconpos:o(b,l+"iconpos"),theme:n.theme!==t?n.theme:o(b,l+"theme")||e.mobile.getInheritedTheme(g,"c"),inline:n.inline!==t?n.inline:o(b,l+"inline"),shadow:n.shadow!==t?n.shadow:o(b,l+"shadow"),corners:n.corners!==t?n.corners:o(b,l+"corners"),iconshadow:n.iconshadow!==t?n.iconshadow:o(b,l+"iconshadow"),mini:n.mini!==t?n.mini:o(b,l+"mini")},n),_="ui-btn-inner",C="ui-btn-text",x=!1,y="up";for(a in v)v[a]===t||null===v[a]?g.removeAttr(l+a):b.setAttribute(l+a,v[a]);for("popup"===o(b,l+"rel")&&g.attr("href")&&(b.setAttribute("aria-haspopup",!0),b.setAttribute("aria-owns",g.attr("href"))),f=e.data("INPUT"===b.tagName||"BUTTON"===b.tagName?b.parentNode:b,"buttonElements"),f?(b=f.outer,g=e(b),u=f.inner,p=f.text,e(f.icon).remove(),f.icon=null,x=f.hover,y=f.state):(u=i.createElement(v.wrapperEls),p=i.createElement(v.wrapperEls)),m=v.icon?i.createElement("span"):null,s&&!f&&s(),v.theme||(v.theme=e.mobile.getInheritedTheme(g,"c")),c="ui-btn ",c+=x?"ui-btn-hover-"+v.theme:"",c+=y?" ui-btn-"+y+"-"+v.theme:"",c+=v.shadow?" ui-shadow":"",c+=v.corners?" ui-btn-corner-all":"",v.mini!==t&&(c+=v.mini===!0?" ui-mini":" ui-fullsize"),v.inline!==t&&(c+=v.inline===!0?" ui-btn-inline":" ui-btn-block"),v.icon&&(v.icon="ui-icon-"+v.icon,v.iconpos=v.iconpos||"left",h="ui-icon "+v.icon,v.iconshadow&&(h+=" ui-icon-shadow")),v.iconpos&&(c+=" ui-btn-icon-"+v.iconpos,"notext"!==v.iconpos||g.attr("title")||g.attr("title",g.getEncodedText())),f&&g.removeClass(f.bcls||""),g.removeClass("ui-link").addClass(c),u.className=_,p.className=C,f||u.appendChild(p),m&&(m.className=h,f&&f.icon||(m.innerHTML="&#160;",u.appendChild(m)));b.firstChild&&!f;)p.appendChild(b.firstChild);f||b.appendChild(u),f={hover:x,state:y,bcls:c,outer:b,inner:u,text:p,icon:m},e.data(b,"buttonElements",f),e.data(u,"buttonElements",f),e.data(p,"buttonElements",f),m&&e.data(m,"buttonElements",f)}return this},e.fn.buttonMarkup.defaults={corners:!0,shadow:!0,iconshadow:!0,wrapperEls:"span"};var s=function(){var i,o,r=e.mobile.buttonMarkup.hoverDelay;e.mobile.document.bind({"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart":function(s){var l,d=e(n(s.target)),c=s.originalEvent&&/^touch/.test(s.originalEvent.type),h=s.type;d.length&&(l=d.attr("data-"+e.mobile.ns+"theme"),"vmousedown"===h?c?i=setTimeout(function(){a(d,"ui-btn-up-"+l,"ui-btn-down-"+l,t,"down")},r):a(d,"ui-btn-up-"+l,"ui-btn-down-"+l,t,"down"):"vmousecancel"===h||"vmouseup"===h?a(d,"ui-btn-down-"+l,"ui-btn-up-"+l,t,"up"):"vmouseover"===h||"focus"===h?c?o=setTimeout(function(){a(d,"ui-btn-up-"+l,"ui-btn-hover-"+l,!0,"")},r):a(d,"ui-btn-up-"+l,"ui-btn-hover-"+l,!0,""):("vmouseout"===h||"blur"===h||"scrollstart"===h)&&(a(d,"ui-btn-hover-"+l+" ui-btn-down-"+l,"ui-btn-up-"+l,!1,"up"),i&&clearTimeout(i),o&&clearTimeout(o)))},"focusin focus":function(t){e(n(t.target)).addClass(e.mobile.focusClass)},"focusout blur":function(t){e(n(t.target)).removeClass(e.mobile.focusClass)}}),s=null};e.mobile.document.bind("pagecreate create",function(t){e(":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a",t.target).jqmEnhanceable().not("button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})}(e),function(e,t){e.widget("mobile.collapsible",e.mobile.widget,{options:{expandCueText:" click to expand contents",collapseCueText:" click to collapse contents",collapsed:!0,heading:"h1,h2,h3,h4,h5,h6,legend",collapsedIcon:"plus",expandedIcon:"minus",iconpos:"left",theme:null,contentTheme:null,inset:!0,corners:!0,mini:!1,initSelector:":jqmData(role='collapsible')"},_create:function(){var i=this.element,n=this.options,a=i.addClass("ui-collapsible"),o=i.children(n.heading).first(),s=a.wrapInner("<div class='ui-collapsible-content'></div>").children(".ui-collapsible-content"),r=i.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set"),l="";o.is("legend")&&(o=e("<div role='heading'>"+o.html()+"</div>").insertBefore(o),o.next().remove()),r.length?(n.theme||(n.theme=r.jqmData("theme")||e.mobile.getInheritedTheme(r,"c")),n.contentTheme||(n.contentTheme=r.jqmData("content-theme")),n.collapsedIcon=i.jqmData("collapsed-icon")||r.jqmData("collapsed-icon")||n.collapsedIcon,n.expandedIcon=i.jqmData("expanded-icon")||r.jqmData("expanded-icon")||n.expandedIcon,n.iconpos=i.jqmData("iconpos")||r.jqmData("iconpos")||n.iconpos,n.inset=r.jqmData("inset")!==t?r.jqmData("inset"):!0,n.corners=!1,n.mini||(n.mini=r.jqmData("mini"))):n.theme||(n.theme=e.mobile.getInheritedTheme(i,"c")),n.inset&&(l+=" ui-collapsible-inset",n.corners&&(l+=" ui-corner-all")),n.contentTheme&&(l+=" ui-collapsible-themed-content",s.addClass("ui-body-"+n.contentTheme)),""!==l&&a.addClass(l),o.insertBefore(s).addClass("ui-collapsible-heading").append("<span class='ui-collapsible-heading-status'></span>").wrapInner("<a href='#' class='ui-collapsible-heading-toggle'></a>").find("a").first().buttonMarkup({shadow:!1,corners:!1,iconpos:n.iconpos,icon:n.collapsedIcon,mini:n.mini,theme:n.theme}),a.bind("expand collapse",function(t){if(!t.isDefaultPrevented()){var i=e(this),a="collapse"===t.type;t.preventDefault(),o.toggleClass("ui-collapsible-heading-collapsed",a).find(".ui-collapsible-heading-status").text(a?n.expandCueText:n.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-"+n.expandedIcon,!a).toggleClass("ui-icon-"+n.collapsedIcon,a||n.expandedIcon===n.collapsedIcon).end().find("a").first().removeClass(e.mobile.activeBtnClass),i.toggleClass("ui-collapsible-collapsed",a),s.toggleClass("ui-collapsible-content-collapsed",a).attr("aria-hidden",a),s.trigger("updatelayout")}}).trigger(n.collapsed?"collapse":"expand"),o.bind("tap",function(){o.find("a").first().addClass(e.mobile.activeBtnClass)}).bind("click",function(e){var t=o.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";a.trigger(t),e.preventDefault(),e.stopPropagation()})}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.collapsible.prototype.enhanceWithin(t.target)})}(e),function(e){e.mobile.behaviors.addFirstLastClasses={_getVisibles:function(e,t){var i;return t?i=e.not(".ui-screen-hidden"):(i=e.filter(":visible"),0===i.length&&(i=e.not(".ui-screen-hidden"))),i},_addFirstLastClasses:function(e,t,i){e.removeClass("ui-first-child ui-last-child"),t.eq(0).addClass("ui-first-child").end().last().addClass("ui-last-child"),i||this.element.trigger("updatelayout")}}}(e),function(e,t){e.widget("mobile.collapsibleset",e.mobile.widget,e.extend({options:{initSelector:":jqmData(role='collapsible-set')"},_create:function(){var i=this.element.addClass("ui-collapsible-set"),n=this.options;n.theme||(n.theme=e.mobile.getInheritedTheme(i,"c")),n.contentTheme||(n.contentTheme=i.jqmData("content-theme")),n.corners||(n.corners=i.jqmData("corners")),i.jqmData("inset")!==t&&(n.inset=i.jqmData("inset")),n.inset=n.inset!==t?n.inset:!0,n.corners=n.corners!==t?n.corners:!0,n.corners&&n.inset&&i.addClass("ui-corner-all"),i.jqmData("collapsiblebound")||i.jqmData("collapsiblebound",!0).bind("expand",function(t){var i=e(t.target).closest(".ui-collapsible");i.parent().is(":jqmData(role='collapsible-set')")&&i.siblings(".ui-collapsible").trigger("collapse")})},_init:function(){var e=this.element,t=e.children(":jqmData(role='collapsible')"),i=t.filter(":jqmData(collapsed='false')");
+this._refresh("true"),i.trigger("expand")},_refresh:function(t){var i=this.element.children(":jqmData(role='collapsible')");e.mobile.collapsible.prototype.enhance(i.not(".ui-collapsible")),this._addFirstLastClasses(i,this._getVisibles(i,t),t)},refresh:function(){this._refresh(!1)}},e.mobile.behaviors.addFirstLastClasses)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.collapsibleset.prototype.enhanceWithin(t.target)})}(e),function(e){e.fn.fieldcontain=function(){return this.addClass("ui-field-contain ui-body ui-br").contents().filter(function(){return 3===this.nodeType&&!/\S/.test(this.nodeValue)}).remove()},e(i).bind("pagecreate create",function(t){e(":jqmData(role='fieldcontain')",t.target).jqmEnhanceable().fieldcontain()})}(e),function(e){e.fn.grid=function(t){return this.each(function(){var i,n=e(this),a=e.extend({grid:null},t),o=n.children(),s={solo:1,a:2,b:3,c:4,d:5},r=a.grid;if(!r)if(5>=o.length)for(var l in s)s[l]===o.length&&(r=l);else r="a",n.addClass("ui-grid-duo");i=s[r],n.addClass("ui-grid-"+r),o.filter(":nth-child("+i+"n+1)").addClass("ui-block-a"),i>1&&o.filter(":nth-child("+i+"n+2)").addClass("ui-block-b"),i>2&&o.filter(":nth-child("+i+"n+3)").addClass("ui-block-c"),i>3&&o.filter(":nth-child("+i+"n+4)").addClass("ui-block-d"),i>4&&o.filter(":nth-child("+i+"n+5)").addClass("ui-block-e")})}}(e),function(e,t){e.widget("mobile.navbar",e.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var n=this.element,a=n.find("a"),o=a.filter(":jqmData(icon)").length?this.options.iconpos:t;n.addClass("ui-navbar ui-mini").attr("role","navigation").find("ul").jqmEnhanceable().grid({grid:this.options.grid}),a.buttonMarkup({corners:!1,shadow:!1,inline:!0,iconpos:o}),n.delegate("a","vclick",function(t){var n=e(t.target).is("a")?e(this):e(this).parent("a");if(!n.is(".ui-disabled, .ui-btn-active")){a.removeClass(e.mobile.activeBtnClass),e(this).addClass(e.mobile.activeBtnClass);var o=e(this);e(i).one("pagehide",function(){o.removeClass(e.mobile.activeBtnClass)})}}),n.closest(".ui-page").bind("pagebeforeshow",function(){a.filter(".ui-state-persist").addClass(e.mobile.activeBtnClass)})}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.navbar.prototype.enhanceWithin(t.target)})}(e),function(e){var t={};e.widget("mobile.listview",e.mobile.widget,e.extend({options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",icon:"arrow-r",splitIcon:"arrow-r",splitTheme:"b",corners:!0,shadow:!0,inset:!1,initSelector:":jqmData(role='listview')"},_create:function(){var e=this,t="";t+=e.options.inset?" ui-listview-inset":"",e.options.inset&&(t+=e.options.corners?" ui-corner-all":"",t+=e.options.shadow?" ui-shadow":""),e.element.addClass(function(e,i){return i+" ui-listview"+t}),e.refresh(!0)},_findFirstElementByTagName:function(e,t,i,n){var a={};for(a[i]=a[n]=!0;e;){if(a[e.nodeName])return e;e=e[t]}return null},_getChildrenByTagName:function(t,i,n){var a=[],o={};for(o[i]=o[n]=!0,t=t.firstChild;t;)o[t.nodeName]&&a.push(t),t=t.nextSibling;return e(a)},_addThumbClasses:function(t){var i,n,a=t.length;for(i=0;a>i;i++)n=e(this._findFirstElementByTagName(t[i].firstChild,"nextSibling","img","IMG")),n.length&&(n.addClass("ui-li-thumb"),e(this._findFirstElementByTagName(n[0].parentNode,"parentNode","li","LI")).addClass(n.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},refresh:function(t){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var n,a,o,s,r,l,d,c,h,u,p,m,f=this.options,g=this.element,b=g.jqmData("dividertheme")||f.dividerTheme,v=g.jqmData("splittheme"),_=g.jqmData("spliticon"),C=g.jqmData("icon"),x=this._getChildrenByTagName(g[0],"li","LI"),y=!!e.nodeName(g[0],"ol"),w=!e.support.cssPseudoElement,T=g.attr("start"),D={};y&&w&&g.find(".ui-li-dec").remove(),y&&(T||0===T?w?d=parseInt(T,10):(c=parseInt(T,10)-1,g.css("counter-reset","listnumbering "+c)):w&&(d=1)),f.theme||(f.theme=e.mobile.getInheritedTheme(this.element,"c"));for(var P=0,k=x.length;k>P;P++){if(n=x.eq(P),a="ui-li",t||!n.hasClass("ui-li")){o=n.jqmData("theme")||f.theme,s=this._getChildrenByTagName(n[0],"a","A");var E="list-divider"===n.jqmData("role");s.length&&!E?(p=n.jqmData("icon"),n.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:s.length>1||p===!1?!1:p||C||f.icon,theme:o}),p!==!1&&1===s.length&&n.addClass("ui-li-has-arrow"),s.first().removeClass("ui-link").addClass("ui-link-inherit"),s.length>1&&(a+=" ui-li-has-alt",r=s.last(),l=v||r.jqmData("theme")||f.splitTheme,m=r.jqmData("icon"),r.appendTo(n).attr("title",e.trim(r.getEncodedText())).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:o,icon:!1,iconpos:"notext"}).find(".ui-btn-inner").append(e(i.createElement("span")).buttonMarkup({shadow:!0,corners:!0,theme:l,iconpos:"notext",icon:m||p||_||f.splitIcon})))):E?(a+=" ui-li-divider ui-bar-"+(n.jqmData("theme")||b),n.attr("role","heading"),y&&(T||0===T?w?d=parseInt(T,10):(h=parseInt(T,10)-1,n.css("counter-reset","listnumbering "+h)):w&&(d=1))):a+=" ui-li-static ui-btn-up-"+o}y&&w&&0>a.indexOf("ui-li-divider")&&(u=a.indexOf("ui-li-static")>0?n:n.find(".ui-link-inherit"),u.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+d++ +". </span>")),D[a]||(D[a]=[]),D[a].push(n[0])}for(a in D)e(D[a]).addClass(a).children(".ui-btn-inner").addClass(a);g.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(".ui-li-aside").each(function(){var t=e(this);t.prependTo(t.parent())}).end().find(".ui-li-count").each(function(){e(this).closest("li").addClass("ui-li-has-count")}).addClass("ui-btn-up-"+(g.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),this._addThumbClasses(x),this._addThumbClasses(g.find(".ui-link-inherit")),this._addFirstLastClasses(x,this._getVisibles(x,t),t),this._trigger("afterrefresh")},_idStringEscape:function(e){return e.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var i,a=this.element,o=a.closest(".ui-page"),s=o.jqmData("url"),r=s||o[0][e.expando],l=a.attr("id"),d=this.options,c="data-"+e.mobile.ns,h=this,u=o.find(":jqmData(role='footer')").jqmData("id");if(t[r]===n&&(t[r]=-1),l=l||++t[r],e(a.find("li>ul, li>ol").toArray().reverse()).each(function(t){var n,o,r=e(this),h=r.attr("id")||l+"-"+t,p=r.parent(),m=e(r.prevAll().toArray().reverse()),f=m.length?m:e("<span>"+e.trim(p.contents()[0].nodeValue)+"</span>"),g=f.first().getEncodedText(),b=(s||"")+"&"+e.mobile.subPageUrlKey+"="+h,v=r.jqmData("theme")||d.theme,_=r.jqmData("counttheme")||a.jqmData("counttheme")||d.countTheme;i=!0,n=r.detach().wrap("<div "+c+"role='page' "+c+"url='"+b+"' "+c+"theme='"+v+"' "+c+"count-theme='"+_+"'><div "+c+"role='content'></div></div>").parent().before("<div "+c+"role='header' "+c+"theme='"+d.headerTheme+"'><div class='ui-title'>"+g+"</div></div>").after(u?e("<div "+c+"role='footer' "+c+"id='"+u+"'>"):"").parent().appendTo(e.mobile.pageContainer),n.page(),o=p.find("a:first"),o.length||(o=e("<a/>").html(f||g).prependTo(p.empty())),o.attr("href","#"+b)}).listview(),i&&o.is(":jqmData(external-page='true')")&&o.data("mobile-page").options.domCache===!1){var p=function(t,i){var n,a=i.nextPage,r=new e.Event("pageremove");i.nextPage&&(n=a.jqmData("url"),0!==n.indexOf(s+"&"+e.mobile.subPageUrlKey)&&(h.childPages().remove(),o.trigger(r),r.isDefaultPrevented()||o.removeWithDependents()))};o.unbind("pagehide.remove").bind("pagehide.remove",p)}},childPages:function(){var t=this.parentPage.jqmData("url");return e(":jqmData(url^='"+t+"&"+e.mobile.subPageUrlKey+"')")}},e.mobile.behaviors.addFirstLastClasses)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.listview.prototype.enhanceWithin(t.target)})}(e),function(e){var t=e("meta[name=viewport]"),i=t.attr("content"),n=i+",maximum-scale=1, user-scalable=no",a=i+",maximum-scale=10, user-scalable=yes",o=/(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test(i);e.mobile.zoom=e.extend({},{enabled:!o,locked:!1,disable:function(i){o||e.mobile.zoom.locked||(t.attr("content",n),e.mobile.zoom.enabled=!1,e.mobile.zoom.locked=i||!1)},enable:function(i){o||e.mobile.zoom.locked&&i!==!0||(t.attr("content",a),e.mobile.zoom.enabled=!0,e.mobile.zoom.locked=!1)},restore:function(){o||(t.attr("content",i),e.mobile.zoom.enabled=!0)}})}(e),function(e){e.widget("mobile.textinput",e.mobile.widget,{options:{theme:null,mini:!1,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type]), input[type='file']",clearBtn:!1,clearSearchButtonText:null,clearBtnText:"clear text",disabled:!1},_create:function(){function t(){setTimeout(function(){a.toggleClass("ui-input-clear-hidden",!s.val())},0)}var i,a,o=this,s=this.element,r=this.options,l=r.theme||e.mobile.getInheritedTheme(this.element,"c"),d=" ui-body-"+l,c=r.mini?" ui-mini":"",h=s.is("[type='search'], :jqmData(type='search')"),u=r.clearSearchButtonText||r.clearBtnText,p=s.is("textarea, :jqmData(type='range')"),m=!!r.clearBtn&&!p,f=s.is("input")&&!s.is(":jqmData(type='range')");if(e("label[for='"+s.attr("id")+"']").addClass("ui-input-text"),i=s.addClass("ui-input-text ui-body-"+l),s[0].autocorrect===n||e.support.touchOverflow||(s[0].setAttribute("autocorrect","off"),s[0].setAttribute("autocomplete","off")),h?i=s.wrap("<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield"+d+c+"'></div>").parent():f&&(i=s.wrap("<div class='ui-input-text ui-shadow-inset ui-corner-all ui-btn-shadow"+d+c+"'></div>").parent()),m||h?(a=e("<a href='#' class='ui-input-clear' title='"+u+"'>"+u+"</a>").bind("click",function(e){s.val("").focus().trigger("change"),a.addClass("ui-input-clear-hidden"),e.preventDefault()}).appendTo(i).buttonMarkup({icon:"delete",iconpos:"notext",corners:!0,shadow:!0,mini:r.mini}),h||i.addClass("ui-input-has-clear"),t(),s.bind("paste cut keyup input focus change blur",t)):f||h||s.addClass("ui-corner-all ui-shadow-inset"+d+c),s.focus(function(){r.preventFocusZoom&&e.mobile.zoom.disable(!0),i.addClass(e.mobile.focusClass)}).blur(function(){i.removeClass(e.mobile.focusClass),r.preventFocusZoom&&e.mobile.zoom.enable(!0)}),s.is("textarea")){var g,b=15,v=100;this._keyup=function(){var e=s[0].scrollHeight,t=s[0].clientHeight;if(e>t){var i=parseFloat(s.css("padding-top")),n=parseFloat(s.css("padding-bottom")),a=i+n;s.height(e-a+b)}},s.on("keyup change input paste",function(){clearTimeout(g),g=setTimeout(o._keyup,v)}),this._on(!0,e.mobile.document,{pagechange:"_keyup"}),e.trim(s.val())&&this._on(!0,e.mobile.window,{load:"_keyup"})}s.attr("disabled")&&this.disable()},disable:function(){var e,t=this.element.is("[type='search'], :jqmData(type='search')"),i=this.element.is("input")&&!this.element.is(":jqmData(type='range')"),n=this.element.attr("disabled",!0)&&(i||t);return e=n?this.element.parent():this.element,e.addClass("ui-disabled"),this._setOption("disabled",!0)},enable:function(){var e,t=this.element.is("[type='search'], :jqmData(type='search')"),i=this.element.is("input")&&!this.element.is(":jqmData(type='range')"),n=this.element.attr("disabled",!1)&&(i||t);return e=n?this.element.parent():this.element,e.removeClass("ui-disabled"),this._setOption("disabled",!1)}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.textinput.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.mobile.listview.prototype.options.filter=!1,e.mobile.listview.prototype.options.filterPlaceholder="Filter items...",e.mobile.listview.prototype.options.filterTheme="c",e.mobile.listview.prototype.options.filterReveal=!1;var t=function(e,t){return-1===(""+e).toLowerCase().indexOf(t)};e.mobile.listview.prototype.options.filterCallback=t,e.mobile.document.delegate("ul, ol","listviewcreate",function(){var i=e(this),n=i.data("mobile-listview");if(n&&n.options.filter){n.options.filterReveal&&i.children().addClass("ui-screen-hidden");var a=e("<form>",{"class":"ui-listview-filter ui-bar-"+n.options.filterTheme,role:"search"}).submit(function(e){e.preventDefault(),s.blur()}),o=function(){var a,o=e(this),s=this.value.toLowerCase(),r=null,l=i.children(),d=o.jqmData("lastval")+"",c=!1,h="",u=n.options.filterCallback!==t;if(!d||d!==s){if(n._trigger("beforefilter","beforefilter",{input:this}),o.jqmData("lastval",s),u||s.length<d.length||0!==s.indexOf(d)?r=i.children():(r=i.children(":not(.ui-screen-hidden)"),!r.length&&n.options.filterReveal&&(r=i.children(".ui-screen-hidden"))),s){for(var p=r.length-1;p>=0;p--)a=e(r[p]),h=a.jqmData("filtertext")||a.text(),a.is("li:jqmData(role=list-divider)")?(a.toggleClass("ui-filter-hidequeue",!c),c=!1):n.options.filterCallback(h,s,a)?a.toggleClass("ui-filter-hidequeue",!0):c=!0;r.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",!1),r.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",!0).toggleClass("ui-filter-hidequeue",!1)}else r.toggleClass("ui-screen-hidden",!!n.options.filterReveal);n._addFirstLastClasses(l,n._getVisibles(l,!1),!1)}},s=e("<input>",{placeholder:n.options.filterPlaceholder}).attr("data-"+e.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change input",o).appendTo(a).textinput();n.options.inset&&a.addClass("ui-listview-filter-inset"),a.bind("submit",function(){return!1}).insertBefore(i)}})}(e),function(e){e.mobile.listview.prototype.options.autodividers=!1,e.mobile.listview.prototype.options.autodividersSelector=function(t){var i=e.trim(t.text())||null;return i?i=i.slice(0,1).toUpperCase():null},e.mobile.document.delegate("ul,ol","listviewcreate",function(){var t=e(this),n=t.data("mobile-listview");if(n&&n.options.autodividers){var a=function(){t.find("li:jqmData(role='list-divider')").remove();for(var a,o,s=t.find("li"),r=null,l=0;s.length>l;l++){if(a=s[l],o=n.options.autodividersSelector(e(a)),o&&r!==o){var d=i.createElement("li");d.appendChild(i.createTextNode(o)),d.setAttribute("data-"+e.mobile.ns+"role","list-divider"),a.parentNode.insertBefore(d,a)}r=o}},o=function(){t.unbind("listviewafterrefresh",o),a(),n.refresh(),t.bind("listviewafterrefresh",o)};o()}})}(e),function(e){e(i).bind("pagecreate create",function(t){e(":jqmData(role='nojs')",t.target).addClass("ui-nojs")})}(e),function(e){e.mobile.behaviors.formReset={_handleFormReset:function(){this._on(this.element.closest("form"),{reset:function(){this._delay("_reset")}})}}}(e),function(e){e.widget("mobile.checkboxradio",e.mobile.widget,e.extend({options:{theme:null,mini:!1,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var t=this,a=this.element,o=this.options,s=function(e,t){return e.jqmData(t)||e.closest("form, fieldset").jqmData(t)},r=e(a).closest("label"),l=r.length?r:e(a).closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("label").filter("[for='"+a[0].id+"']").first(),d=a[0].type,c=s(a,"mini")||o.mini,h=d+"-on",u=d+"-off",p=s(a,"iconpos"),m="ui-"+h,f="ui-"+u;if("checkbox"===d||"radio"===d){e.extend(this,{label:l,inputtype:d,checkedClass:m,uncheckedClass:f,checkedicon:h,uncheckedicon:u}),o.theme||(o.theme=e.mobile.getInheritedTheme(this.element,"c")),l.buttonMarkup({theme:o.theme,icon:u,shadow:!1,mini:c,iconpos:p});var g=i.createElement("div");g.className="ui-"+d,a.add(l).wrapAll(g),l.bind({vmouseover:function(t){e(this).parent().is(".ui-disabled")&&t.stopPropagation()},vclick:function(e){return a.is(":disabled")?(e.preventDefault(),n):(t._cacheVals(),a.prop("checked","radio"===d&&!0||!a.prop("checked")),a.triggerHandler("click"),t._getInputSet().not(a).prop("checked",!1),t._updateAll(),!1)}}),a.bind({vmousedown:function(){t._cacheVals()},vclick:function(){var i=e(this);i.is(":checked")?(i.prop("checked",!0),t._getInputSet().not(i).prop("checked",!1)):i.prop("checked",!1),t._updateAll()},focus:function(){l.addClass(e.mobile.focusClass)},blur:function(){l.removeClass(e.mobile.focusClass)}}),this._handleFormReset(),this.refresh()}},_cacheVals:function(){this._getInputSet().each(function(){e(this).jqmData("cacheVal",this.checked)})},_getInputSet:function(){return"checkbox"===this.inputtype?this.element:this.element.closest("form, :jqmData(role='page'), :jqmData(role='dialog')").find("input[name='"+this.element[0].name+"'][type='"+this.inputtype+"']")},_updateAll:function(){var t=this;this._getInputSet().each(function(){var i=e(this);(this.checked||"checkbox"===t.inputtype)&&i.trigger("change")}).checkboxradio("refresh")},_reset:function(){this.refresh()},refresh:function(){var t=this.element[0],i=" "+e.mobile.activeBtnClass,n=this.checkedClass+(this.element.parents(".ui-controlgroup-horizontal").length?i:""),a=this.label;t.checked?a.removeClass(this.uncheckedClass+i).addClass(n).buttonMarkup({icon:this.checkedicon}):a.removeClass(n).addClass(this.uncheckedClass).buttonMarkup({icon:this.uncheckedicon}),t.disabled?this.disable():this.enable()},disable:function(){this.element.prop("disabled",!0).parent().addClass("ui-disabled")},enable:function(){this.element.prop("disabled",!1).parent().removeClass("ui-disabled")}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.checkboxradio.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.button",e.mobile.widget,{options:{theme:null,icon:null,iconpos:null,corners:!0,shadow:!0,iconshadow:!0,inline:null,mini:null,initSelector:"button, [type='button'], [type='submit'], [type='reset']"},_create:function(){var t,i=this.element,a=function(e){var t,i={};for(t in e)null!==e[t]&&"initSelector"!==t&&(i[t]=e[t]);return i}(this.options),o="";return"A"===i[0].tagName?(i.hasClass("ui-btn")||i.buttonMarkup(),n):(this.options.theme||(this.options.theme=e.mobile.getInheritedTheme(this.element,"c")),~i[0].className.indexOf("ui-btn-left")&&(o="ui-btn-left"),~i[0].className.indexOf("ui-btn-right")&&(o="ui-btn-right"),("submit"===i.attr("type")||"reset"===i.attr("type"))&&(o?o+=" ui-submit":o="ui-submit"),e("label[for='"+i.attr("id")+"']").addClass("ui-submit"),this.button=e("<div></div>")[i.html()?"html":"text"](i.html()||i.val()).insertBefore(i).buttonMarkup(a).addClass(o).append(i.addClass("ui-btn-hidden")),t=this.button,i.bind({focus:function(){t.addClass(e.mobile.focusClass)},blur:function(){t.removeClass(e.mobile.focusClass)}}),this.refresh(),n)},_setOption:function(t,i){var n={};n[t]=i,"initSelector"!==t&&(this.button.buttonMarkup(n),this.element.attr("data-"+(e.mobile.ns||"")+t.replace(/([A-Z])/,"-$1").toLowerCase(),i)),this._super("_setOption",t,i)},enable:function(){return this.element.attr("disabled",!1),this.button.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.button.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)},refresh:function(){var t=this.element;t.prop("disabled")?this.disable():this.enable(),e(this.button.data("buttonElements").text)[t.html()?"html":"text"](t.html()||t.val())}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.button.prototype.enhanceWithin(t.target,!0)})}(e),function(e,n){e.widget("mobile.slider",e.mobile.widget,e.extend({widgetEventPrefix:"slide",options:{theme:null,trackTheme:null,disabled:!1,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",mini:!1,highlight:!1},_create:function(){var a,o,s=this,r=this.element,l=e.mobile.getInheritedTheme(r,"c"),d=this.options.theme||l,c=this.options.trackTheme||l,h=r[0].nodeName.toLowerCase(),u=(this.isToggleSwitch="select"===h,r.parent().is(":jqmData(role='rangeslider')")),p=this.isToggleSwitch?"ui-slider-switch":"",m=r.attr("id"),f=e("[for='"+m+"']"),g=f.attr("id")||m+"-label",b=f.attr("id",g),v=this.isToggleSwitch?0:parseFloat(r.attr("min")),_=this.isToggleSwitch?r.find("option").length-1:parseFloat(r.attr("max")),C=t.parseFloat(r.attr("step")||1),x=this.options.mini||r.jqmData("mini")?" ui-mini":"",y=i.createElement("a"),w=e(y),T=i.createElement("div"),D=e(T),P=this.options.highlight&&!this.isToggleSwitch?function(){var t=i.createElement("div");return t.className="ui-slider-bg "+e.mobile.activeBtnClass+" ui-btn-corner-all",e(t).prependTo(D)}():!1;if(y.setAttribute("href","#"),T.setAttribute("role","application"),T.className=[this.isToggleSwitch?"ui-slider ":"ui-slider-track ",p," ui-btn-down-",c," ui-btn-corner-all",x].join(""),y.className="ui-slider-handle",T.appendChild(y),w.buttonMarkup({corners:!0,theme:d,shadow:!0}).attr({role:"slider","aria-valuemin":v,"aria-valuemax":_,"aria-valuenow":this._value(),"aria-valuetext":this._value(),title:this._value(),"aria-labelledby":g}),e.extend(this,{slider:D,handle:w,type:h,step:C,max:_,min:v,valuebg:P,isRangeslider:u,dragging:!1,beforeStart:null,userModified:!1,mouseMoved:!1}),this.isToggleSwitch){o=i.createElement("div"),o.className="ui-slider-inneroffset";for(var k=0,E=T.childNodes.length;E>k;k++)o.appendChild(T.childNodes[k]);T.appendChild(o),w.addClass("ui-slider-handle-snapping"),a=r.find("option");for(var q=0,j=a.length;j>q;q++){var S=q?"a":"b",A=q?" "+e.mobile.activeBtnClass:" ui-btn-down-"+c,N=(i.createElement("div"),i.createElement("span"));N.className=["ui-slider-label ui-slider-label-",S,A," ui-btn-corner-all"].join(""),N.setAttribute("role","img"),N.appendChild(i.createTextNode(a[q].innerHTML)),e(N).prependTo(D)}s._labels=e(".ui-slider-label",D)}b.addClass("ui-slider"),r.addClass(this.isToggleSwitch?"ui-slider-switch":"ui-slider-input"),this._on(r,{change:"_controlChange",keyup:"_controlKeyup",blur:"_controlBlur",vmouseup:"_controlVMouseUp"}),D.bind("vmousedown",e.proxy(this._sliderVMouseDown,this)).bind("vclick",!1),this._on(i,{vmousemove:"_preventDocumentDrag"}),this._on(D.add(i),{vmouseup:"_sliderVMouseUp"}),D.insertAfter(r),this.isToggleSwitch||u||(o=this.options.mini?"<div class='ui-slider ui-mini'>":"<div class='ui-slider'>",r.add(D).wrapAll(o)),this.isToggleSwitch&&this.handle.bind({focus:function(){D.addClass(e.mobile.focusClass)},blur:function(){D.removeClass(e.mobile.focusClass)}}),this._on(this.handle,{vmousedown:"_handleVMouseDown",keydown:"_handleKeydown",keyup:"_handleKeyup"}),this.handle.bind("vclick",!1),this._handleFormReset(),this.refresh(n,n,!0)},_controlChange:function(e){return this._trigger("controlchange",e)===!1?!1:(this.mouseMoved||this.refresh(this._value(),!0),n)},_controlKeyup:function(){this.refresh(this._value(),!0,!0)},_controlBlur:function(){this.refresh(this._value(),!0)},_controlVMouseUp:function(){this._checkedRefresh()},_handleVMouseDown:function(){this.handle.focus()},_handleKeydown:function(t){var i=this._value();if(!this.options.disabled){switch(t.keyCode){case e.mobile.keyCode.HOME:case e.mobile.keyCode.END:case e.mobile.keyCode.PAGE_UP:case e.mobile.keyCode.PAGE_DOWN:case e.mobile.keyCode.UP:case e.mobile.keyCode.RIGHT:case e.mobile.keyCode.DOWN:case e.mobile.keyCode.LEFT:t.preventDefault(),this._keySliding||(this._keySliding=!0,this.handle.addClass("ui-state-active"))}switch(t.keyCode){case e.mobile.keyCode.HOME:this.refresh(this.min);break;case e.mobile.keyCode.END:this.refresh(this.max);break;case e.mobile.keyCode.PAGE_UP:case e.mobile.keyCode.UP:case e.mobile.keyCode.RIGHT:this.refresh(i+this.step);break;case e.mobile.keyCode.PAGE_DOWN:case e.mobile.keyCode.DOWN:case e.mobile.keyCode.LEFT:this.refresh(i-this.step)}}},_handleKeyup:function(){this._keySliding&&(this._keySliding=!1,this.handle.removeClass("ui-state-active"))},_sliderVMouseDown:function(e){return this.options.disabled||1!==e.which&&0!==e.which?!1:this._trigger("beforestart",e)===!1?!1:(this.dragging=!0,this.userModified=!1,this.mouseMoved=!1,this.isToggleSwitch&&(this.beforeStart=this.element[0].selectedIndex),this.refresh(e),this._trigger("start"),!1)},_sliderVMouseUp:function(){return this.dragging?(this.dragging=!1,this.isToggleSwitch&&(this.handle.addClass("ui-slider-handle-snapping"),this.mouseMoved?this.userModified?this.refresh(0===this.beforeStart?1:0):this.refresh(this.beforeStart):this.refresh(0===this.beforeStart?1:0)),this.mouseMoved=!1,this._trigger("stop"),!1):n},_preventDocumentDrag:function(e){return this._trigger("drag",e)===!1?!1:this.dragging&&!this.options.disabled?(this.mouseMoved=!0,this.isToggleSwitch&&this.handle.removeClass("ui-slider-handle-snapping"),this.refresh(e),this.userModified=this.beforeStart!==this.element[0].selectedIndex,!1):n},_checkedRefresh:function(){this.value!==this._value()&&this.refresh(this._value())},_value:function(){return this.isToggleSwitch?this.element[0].selectedIndex:parseFloat(this.element.val())},_reset:function(){this.refresh(n,!1,!0)},refresh:function(t,a,o){var s,r,l,d,c=this,h=e.mobile.getInheritedTheme(this.element,"c"),u=this.options.theme||h,p=this.options.trackTheme||h;c.slider[0].className=[this.isToggleSwitch?"ui-slider ui-slider-switch":"ui-slider-track"," ui-btn-down-"+p," ui-btn-corner-all",this.options.mini?" ui-mini":""].join(""),(this.options.disabled||this.element.attr("disabled"))&&this.disable(),this.value=this._value(),this.options.highlight&&!this.isToggleSwitch&&0===this.slider.find(".ui-slider-bg").length&&(this.valuebg=function(){var t=i.createElement("div");return t.className="ui-slider-bg "+e.mobile.activeBtnClass+" ui-btn-corner-all",e(t).prependTo(c.slider)}()),this.handle.buttonMarkup({corners:!0,theme:u,shadow:!0});var m,f,g=this.element,b=!this.isToggleSwitch,v=b?[]:g.find("option"),_=b?parseFloat(g.attr("min")):0,C=b?parseFloat(g.attr("max")):v.length-1,x=b&&parseFloat(g.attr("step"))>0?parseFloat(g.attr("step")):1;if("object"==typeof t){if(l=t,d=8,s=this.slider.offset().left,r=this.slider.width(),m=r/((C-_)/x),!this.dragging||s-d>l.pageX||l.pageX>s+r+d)return;f=m>1?100*((l.pageX-s)/r):Math.round(100*((l.pageX-s)/r))}else null==t&&(t=b?parseFloat(g.val()||0):g[0].selectedIndex),f=100*((parseFloat(t)-_)/(C-_));if(!isNaN(f)){var y=f/100*(C-_)+_,w=(y-_)%x,T=y-w;2*Math.abs(w)>=x&&(T+=w>0?x:-x);var D=100/((C-_)/x);if(y=parseFloat(T.toFixed(5)),m===n&&(m=r/((C-_)/x)),m>1&&b&&(f=(y-_)*D*(1/x)),0>f&&(f=0),f>100&&(f=100),_>y&&(y=_),y>C&&(y=C),this.handle.css("left",f+"%"),this.handle[0].setAttribute("aria-valuenow",b?y:v.eq(y).attr("value")),this.handle[0].setAttribute("aria-valuetext",b?y:v.eq(y).getEncodedText()),this.handle[0].setAttribute("title",b?y:v.eq(y).getEncodedText()),this.valuebg&&this.valuebg.css("width",f+"%"),this._labels){var P=100*(this.handle.width()/this.slider.width()),k=f&&P+(100-P)*f/100,E=100===f?0:Math.min(P+100-k,100);this._labels.each(function(){var t=e(this).is(".ui-slider-label-a");e(this).width((t?k:E)+"%")})}if(!o){var q=!1;if(b?(q=g.val()!==y,g.val(y)):(q=g[0].selectedIndex!==y,g[0].selectedIndex=y),this._trigger("beforechange",t)===!1)return!1;!a&&q&&g.trigger("change")}}},enable:function(){return this.element.attr("disabled",!1),this.slider.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.slider.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.slider.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.rangeslider",e.mobile.widget,{options:{theme:null,trackTheme:null,disabled:!1,initSelector:":jqmData(role='rangeslider')",mini:!1,highlight:!0},_create:function(){var t,i=this.element,n=this.options.mini?"ui-rangeslider ui-mini":"ui-rangeslider",a=i.find("input").first(),o=i.find("input").last(),s=i.find("label").first(),r=e.data(a.get(0),"mobileSlider").slider,l=e.data(o.get(0),"mobileSlider").slider,d=e.data(a.get(0),"mobileSlider").handle,c=e('<div class="ui-rangeslider-sliders" />').appendTo(i);i.find("label").length>1&&(t=i.find("label").last().hide()),a.addClass("ui-rangeslider-first"),o.addClass("ui-rangeslider-last"),i.addClass(n),r.appendTo(c),l.appendTo(c),s.prependTo(i),d.prependTo(l),e.extend(this,{_inputFirst:a,_inputLast:o,_sliderFirst:r,_sliderLast:l,_targetVal:null,_sliderTarget:!1,_sliders:c,_proxy:!1}),this.refresh(),this._on(this.element.find("input.ui-slider-input"),{slidebeforestart:"_slidebeforestart",slidestop:"_slidestop",slidedrag:"_slidedrag",slidebeforechange:"_change",blur:"_change",keyup:"_change"}),this._on({mousedown:"_change"}),this._on(this.element.closest("form"),{reset:"_handleReset"}),this._on(d,{vmousedown:"_dragFirstHandle"})},_handleReset:function(){var e=this;setTimeout(function(){e._updateHighlight()},0)},_dragFirstHandle:function(t){return e.data(this._inputFirst.get(0),"mobileSlider").dragging=!0,e.data(this._inputFirst.get(0),"mobileSlider").refresh(t),!1},_slidedrag:function(t){var i=e(t.target).is(this._inputFirst),a=i?this._inputLast:this._inputFirst;return this._sliderTarget=!1,"first"===this._proxy&&i||"last"===this._proxy&&!i?(e.data(a.get(0),"mobileSlider").dragging=!0,e.data(a.get(0),"mobileSlider").refresh(t),!1):n},_slidestop:function(t){var i=e(t.target).is(this._inputFirst);this._proxy=!1,this.element.find("input").trigger("vmouseup"),this._sliderFirst.css("z-index",i?1:"")},_slidebeforestart:function(t){this._sliderTarget=!1,e(t.originalEvent.target).hasClass("ui-slider-track")&&(this._sliderTarget=!0,this._targetVal=e(t.target).val())},_setOption:function(e){this._superApply(e),this.refresh()},refresh:function(){var e=this.element,t=this.options;e.find("input").slider({theme:t.theme,trackTheme:t.trackTheme,disabled:t.disabled,mini:t.mini,highlight:t.highlight}).slider("refresh"),this._updateHighlight()},_change:function(t){if("keyup"===t.type)return this._updateHighlight(),!1;var i=this,a=parseFloat(this._inputFirst.val(),10),o=parseFloat(this._inputLast.val(),10),s=e(t.target).hasClass("ui-rangeslider-first"),r=s?this._inputFirst:this._inputLast,l=s?this._inputLast:this._inputFirst;if(this._inputFirst.val()>this._inputLast.val()&&"mousedown"===t.type&&!e(t.target).hasClass("ui-slider-handle"))r.blur();else if("mousedown"===t.type)return;return a>o&&!this._sliderTarget?(r.val(s?o:a).slider("refresh"),this._trigger("normalize")):a>o&&(r.val(this._targetVal).slider("refresh"),setTimeout(function(){l.val(s?a:o).slider("refresh"),e.data(l.get(0),"mobileSlider").handle.focus(),i._sliderFirst.css("z-index",s?"":1),i._trigger("normalize")},0),this._proxy=s?"first":"last"),a===o?(e.data(r.get(0),"mobileSlider").handle.css("z-index",1),e.data(l.get(0),"mobileSlider").handle.css("z-index",0)):(e.data(l.get(0),"mobileSlider").handle.css("z-index",""),e.data(r.get(0),"mobileSlider").handle.css("z-index","")),this._updateHighlight(),a>=o?!1:n},_updateHighlight:function(){var t=parseInt(e.data(this._inputFirst.get(0),"mobileSlider").handle.get(0).style.left,10),i=parseInt(e.data(this._inputLast.get(0),"mobileSlider").handle.get(0).style.left,10),n=i-t;this.element.find(".ui-slider-bg").css({"margin-left":t+"%",width:n+"%"})},_destroy:function(){this.element.removeClass("ui-rangeslider ui-mini").find("label").show(),this._inputFirst.after(this._sliderFirst),this._inputLast.after(this._sliderLast),this._sliders.remove(),this.element.find("input").removeClass("ui-rangeslider-first ui-rangeslider-last").slider("destroy")}}),e.widget("mobile.rangeslider",e.mobile.rangeslider,e.mobile.behaviors.formReset),e(i).bind("pagecreate create",function(t){e.mobile.rangeslider.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.selectmenu",e.mobile.widget,e.extend({options:{theme:null,disabled:!1,icon:"arrow-d",iconpos:"right",inline:!1,corners:!0,shadow:!0,iconshadow:!0,overlayTheme:"a",dividerTheme:"b",hidePlaceholderMenuItems:!0,closeText:"Close",nativeMenu:!0,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"select:not( :jqmData(role='slider') )",mini:!1},_button:function(){return e("<div/>")
+},_setDisabled:function(e){return this.element.attr("disabled",e),this.button.attr("aria-disabled",e),this._setOption("disabled",e)},_focusButton:function(){var e=this;setTimeout(function(){e.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){var t="";~this.element[0].className.indexOf("ui-btn-left")&&(t=" ui-btn-left"),~this.element[0].className.indexOf("ui-btn-right")&&(t=" ui-btn-right"),this.select=this.element.removeClass("ui-btn-left ui-btn-right").wrap("<div class='ui-select"+t+"'>"),this.selectID=this.select.attr("id"),this.label=e("label[for='"+this.selectID+"']").addClass("ui-select"),this.isMultiple=this.select[0].multiple,this.options.theme||(this.options.theme=e.mobile.getInheritedTheme(this.select,"c"))},_destroy:function(){var e=this.element.parents(".ui-select");e.length>0&&(e.is(".ui-btn-left, .ui-btn-right")&&this.element.addClass(e.is(".ui-btn-left")?"ui-btn-left":"ui-btn-right"),this.element.insertAfter(e),e.remove())},_create:function(){this._preExtension(),this._trigger("beforeCreate"),this.button=this._button();var i=this,n=this.options,a=n.inline||this.select.jqmData("inline"),o=n.mini||this.select.jqmData("mini"),s=n.icon?n.iconpos||this.select.jqmData("iconpos"):!1,r=(-1===this.select[0].selectedIndex?0:this.select[0].selectedIndex,this.button.insertBefore(this.select).buttonMarkup({theme:n.theme,icon:n.icon,iconpos:s,inline:a,corners:n.corners,shadow:n.shadow,iconshadow:n.iconshadow,mini:o}));this.setButtonText(),n.nativeMenu&&t.opera&&t.opera.version&&r.addClass("ui-select-nativeonly"),this.isMultiple&&(this.buttonCount=e("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(r.addClass("ui-li-has-count"))),(n.disabled||this.element.attr("disabled"))&&this.disable(),this.select.change(function(){i.refresh(),n.nativeMenu&&this.blur()}),this._handleFormReset(),this.build()},build:function(){var t=this;this.select.appendTo(t.button).bind("vmousedown",function(){t.button.addClass(e.mobile.activeBtnClass)}).bind("focus",function(){t.button.addClass(e.mobile.focusClass)}).bind("blur",function(){t.button.removeClass(e.mobile.focusClass)}).bind("focus vmouseover",function(){t.button.trigger("vmouseover")}).bind("vmousemove",function(){t.button.removeClass(e.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){t.button.trigger("vmouseout").removeClass(e.mobile.activeBtnClass)}).bind("change blur",function(){t.button.removeClass("ui-btn-down-"+t.options.theme)}),t.button.bind("vmousedown",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.label.bind("click focus",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.select.bind("focus",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.button.bind("mouseup",function(){t.options.preventFocusZoom&&setTimeout(function(){e.mobile.zoom.enable(!0)},0)}),t.select.bind("blur",function(){t.options.preventFocusZoom&&e.mobile.zoom.enable(!0)})},selected:function(){return this._selectOptions().filter(":selected")},selectedIndices:function(){var e=this;return this.selected().map(function(){return e._selectOptions().index(this)}).get()},setButtonText:function(){var t=this,n=this.selected(),a=this.placeholder,o=e(i.createElement("span"));this.button.find(".ui-btn-text").html(function(){return a=n.length?n.map(function(){return e(this).text()}).get().join(", "):t.placeholder,o.text(a).addClass(t.select.attr("class")).addClass(n.attr("class"))})},setButtonCount:function(){var e=this.selected();this.isMultiple&&this.buttonCount[e.length>1?"show":"hide"]().text(e.length)},_reset:function(){this.refresh()},refresh:function(){this.setButtonText(),this.setButtonCount()},open:e.noop,close:e.noop,disable:function(){this._setDisabled(!0),this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(!1),this.button.removeClass("ui-disabled")}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.selectmenu.prototype.enhanceWithin(t.target,!0)})}(e),function(e,n){function a(e,t,i,n){var a=n;return a=t>e?i+(e-t)/2:Math.min(Math.max(i,n-t/2),i+e-t)}function o(){var i=e.mobile.window;return{x:i.scrollLeft(),y:i.scrollTop(),cx:t.innerWidth||i.width(),cy:t.innerHeight||i.height()}}e.widget("mobile.popup",e.mobile.widget,{options:{theme:null,overlayTheme:null,shadow:!0,corners:!0,transition:"none",positionTo:"origin",tolerance:null,initSelector:":jqmData(role='popup')",closeLinkSelector:"a:jqmData(rel='back')",closeLinkEvents:"click.popup",navigateEvents:"navigate.popup",closeEvents:"navigate.popup pagebeforechange.popup",dismissible:!0,history:!e.mobile.browser.oldIE},_eatEventAndClose:function(e){return e.preventDefault(),e.stopImmediatePropagation(),this.options.dismissible&&this.close(),!1},_resizeScreen:function(){var e=this._ui.container.outerHeight(!0);this._ui.screen.removeAttr("style"),e>this._ui.screen.height()&&this._ui.screen.height(e)},_handleWindowKeyUp:function(t){return this._isOpen&&t.keyCode===e.mobile.keyCode.ESCAPE?this._eatEventAndClose(t):n},_expectResizeEvent:function(){var t=o();if(this._resizeData){if(t.x===this._resizeData.winCoords.x&&t.y===this._resizeData.winCoords.y&&t.cx===this._resizeData.winCoords.cx&&t.cy===this._resizeData.winCoords.cy)return!1;clearTimeout(this._resizeData.timeoutId)}return this._resizeData={timeoutId:setTimeout(e.proxy(this,"_resizeTimeout"),200),winCoords:t},!0},_resizeTimeout:function(){this._isOpen?this._expectResizeEvent()||(this._ui.container.hasClass("ui-popup-hidden")&&(this._ui.container.removeClass("ui-popup-hidden"),this.reposition({positionTo:"window"}),this._ignoreResizeEvents()),this._resizeScreen(),this._resizeData=null,this._orientationchangeInProgress=!1):(this._resizeData=null,this._orientationchangeInProgress=!1)},_ignoreResizeEvents:function(){var e=this;this._ignoreResizeTo&&clearTimeout(this._ignoreResizeTo),this._ignoreResizeTo=setTimeout(function(){e._ignoreResizeTo=0},1e3)},_handleWindowResize:function(){this._isOpen&&0===this._ignoreResizeTo&&(!this._expectResizeEvent()&&!this._orientationchangeInProgress||this._ui.container.hasClass("ui-popup-hidden")||this._ui.container.addClass("ui-popup-hidden").removeAttr("style"))},_handleWindowOrientationchange:function(){!this._orientationchangeInProgress&&this._isOpen&&0===this._ignoreResizeTo&&(this._expectResizeEvent(),this._orientationchangeInProgress=!0)},_handleDocumentFocusIn:function(t){var n,a=t.target,o=this._ui;if(this._isOpen){if(a!==o.container[0]){if(n=e(t.target),0===n.parents().filter(o.container[0]).length)return e(i.activeElement).one("focus",function(){n.blur()}),o.focusElement.focus(),t.preventDefault(),t.stopImmediatePropagation(),!1;o.focusElement[0]===o.container[0]&&(o.focusElement=n)}this._ignoreResizeEvents()}},_create:function(){var t={screen:e("<div class='ui-screen-hidden ui-popup-screen'></div>"),placeholder:e("<div style='display: none;'><!-- placeholder --></div>"),container:e("<div class='ui-popup-container ui-popup-hidden'></div>")},i=this.element.closest(".ui-page"),a=this.element.attr("id"),o=this;this.options.history=this.options.history&&e.mobile.ajaxEnabled&&e.mobile.hashListeningEnabled,0===i.length&&(i=e("body")),this.options.container=this.options.container||e.mobile.pageContainer,i.append(t.screen),t.container.insertAfter(t.screen),t.placeholder.insertAfter(this.element),a&&(t.screen.attr("id",a+"-screen"),t.container.attr("id",a+"-popup"),t.placeholder.html("<!-- placeholder for "+a+" -->")),t.container.append(this.element),t.focusElement=t.container,this.element.addClass("ui-popup"),e.extend(this,{_scrollTop:0,_page:i,_ui:t,_fallbackTransition:"",_currentTransition:!1,_prereqs:null,_isOpen:!1,_tolerance:null,_resizeData:null,_ignoreResizeTo:0,_orientationchangeInProgress:!1}),e.each(this.options,function(e,t){o.options[e]=n,o._setOption(e,t,!0)}),t.screen.bind("vclick",e.proxy(this,"_eatEventAndClose")),this._on(e.mobile.window,{orientationchange:e.proxy(this,"_handleWindowOrientationchange"),resize:e.proxy(this,"_handleWindowResize"),keyup:e.proxy(this,"_handleWindowKeyUp")}),this._on(e.mobile.document,{focusin:e.proxy(this,"_handleDocumentFocusIn")})},_applyTheme:function(e,t,i){for(var n,a=(e.attr("class")||"").split(" "),o=null,s=t+"";a.length>0;){if(o=a.pop(),n=RegExp("^ui-"+i+"-([a-z])$").exec(o),n&&n.length>1){o=n[1];break}o=null}t!==o&&(e.removeClass("ui-"+i+"-"+o),null!==t&&"none"!==t&&e.addClass("ui-"+i+"-"+s))},_setTheme:function(e){this._applyTheme(this.element,e,"body")},_setOverlayTheme:function(e){this._applyTheme(this._ui.screen,e,"overlay"),this._isOpen&&this._ui.screen.addClass("in")},_setShadow:function(e){this.element.toggleClass("ui-overlay-shadow",e)},_setCorners:function(e){this.element.toggleClass("ui-corner-all",e)},_applyTransition:function(t){this._ui.container.removeClass(this._fallbackTransition),t&&"none"!==t&&(this._fallbackTransition=e.mobile._maybeDegradeTransition(t),"none"===this._fallbackTransition&&(this._fallbackTransition=""),this._ui.container.addClass(this._fallbackTransition))},_setTransition:function(e){this._currentTransition||this._applyTransition(e)},_setTolerance:function(t){var i={t:30,r:15,b:30,l:15};if(t!==n){var a=(t+"").split(",");switch(e.each(a,function(e,t){a[e]=parseInt(t,10)}),a.length){case 1:isNaN(a[0])||(i.t=i.r=i.b=i.l=a[0]);break;case 2:isNaN(a[0])||(i.t=i.b=a[0]),isNaN(a[1])||(i.l=i.r=a[1]);break;case 4:isNaN(a[0])||(i.t=a[0]),isNaN(a[1])||(i.r=a[1]),isNaN(a[2])||(i.b=a[2]),isNaN(a[3])||(i.l=a[3]);break;default:}}this._tolerance=i},_setOption:function(t,i){var a,o="_set"+t.charAt(0).toUpperCase()+t.slice(1);this[o]!==n&&this[o](i),a=["initSelector","closeLinkSelector","closeLinkEvents","navigateEvents","closeEvents","history","container"],e.mobile.widget.prototype._setOption.apply(this,arguments),-1===e.inArray(t,a)&&this.element.attr("data-"+(e.mobile.ns||"")+t.replace(/([A-Z])/,"-$1").toLowerCase(),i)},_placementCoords:function(e){var t,n,s=o(),r={x:this._tolerance.l,y:s.y+this._tolerance.t,cx:s.cx-this._tolerance.l-this._tolerance.r,cy:s.cy-this._tolerance.t-this._tolerance.b};this._ui.container.css("max-width",r.cx),t={cx:this._ui.container.outerWidth(!0),cy:this._ui.container.outerHeight(!0)},n={x:a(r.cx,t.cx,r.x,e.x),y:a(r.cy,t.cy,r.y,e.y)},n.y=Math.max(0,n.y);var l=i.documentElement,d=i.body,c=Math.max(l.clientHeight,d.scrollHeight,d.offsetHeight,l.scrollHeight,l.offsetHeight);return n.y-=Math.min(n.y,Math.max(0,n.y+t.cy-c)),{left:n.x,top:n.y}},_createPrereqs:function(t,i,n){var a,o=this;a={screen:e.Deferred(),container:e.Deferred()},a.screen.then(function(){a===o._prereqs&&t()}),a.container.then(function(){a===o._prereqs&&i()}),e.when(a.screen,a.container).done(function(){a===o._prereqs&&(o._prereqs=null,n())}),o._prereqs=a},_animate:function(t){return this._ui.screen.removeClass(t.classToRemove).addClass(t.screenClassToAdd),t.prereqs.screen.resolve(),t.transition&&"none"!==t.transition&&(t.applyTransition&&this._applyTransition(t.transition),this._fallbackTransition)?(this._ui.container.animationComplete(e.proxy(t.prereqs.container,"resolve")).addClass(t.containerClassToAdd).removeClass(t.classToRemove),n):(this._ui.container.removeClass(t.classToRemove),t.prereqs.container.resolve(),n)},_desiredCoords:function(t){var i,n=null,a=o(),s=t.x,r=t.y,l=t.positionTo;if(l&&"origin"!==l)if("window"===l)s=a.cx/2+a.x,r=a.cy/2+a.y;else{try{n=e(l)}catch(d){n=null}n&&(n.filter(":visible"),0===n.length&&(n=null))}return n&&(i=n.offset(),s=i.left+n.outerWidth()/2,r=i.top+n.outerHeight()/2),("number"!==e.type(s)||isNaN(s))&&(s=a.cx/2+a.x),("number"!==e.type(r)||isNaN(r))&&(r=a.cy/2+a.y),{x:s,y:r}},_reposition:function(e){e={x:e.x,y:e.y,positionTo:e.positionTo},this._trigger("beforeposition",e),this._ui.container.offset(this._placementCoords(this._desiredCoords(e)))},reposition:function(e){this._isOpen&&this._reposition(e)},_openPrereqsComplete:function(){this._ui.container.addClass("ui-popup-active"),this._isOpen=!0,this._resizeScreen(),this._ui.container.attr("tabindex","0").focus(),this._ignoreResizeEvents(),this._trigger("afteropen")},_open:function(t){var i=e.extend({},this.options,t),n=function(){var e=navigator.userAgent,t=e.match(/AppleWebKit\/([0-9\.]+)/),i=!!t&&t[1],n=e.match(/Android (\d+(?:\.\d+))/),a=!!n&&n[1],o=e.indexOf("Chrome")>-1;return null!==n&&"4.0"===a&&i&&i>534.13&&!o?!0:!1}();this._createPrereqs(e.noop,e.noop,e.proxy(this,"_openPrereqsComplete")),this._currentTransition=i.transition,this._applyTransition(i.transition),this.options.theme||this._setTheme(this._page.jqmData("theme")||e.mobile.getInheritedTheme(this._page,"c")),this._ui.screen.removeClass("ui-screen-hidden"),this._ui.container.removeClass("ui-popup-hidden"),this._reposition(i),this.options.overlayTheme&&n&&this.element.closest(".ui-page").addClass("ui-popup-open"),this._animate({additionalCondition:!0,transition:i.transition,classToRemove:"",screenClassToAdd:"in",containerClassToAdd:"in",applyTransition:!1,prereqs:this._prereqs})},_closePrereqScreen:function(){this._ui.screen.removeClass("out").addClass("ui-screen-hidden")},_closePrereqContainer:function(){this._ui.container.removeClass("reverse out").addClass("ui-popup-hidden").removeAttr("style")},_closePrereqsDone:function(){this.options,this._ui.container.removeAttr("tabindex"),e.mobile.popup.active=n,this._trigger("afterclose")},_close:function(t){this._ui.container.removeClass("ui-popup-active"),this._page.removeClass("ui-popup-open"),this._isOpen=!1,this._createPrereqs(e.proxy(this,"_closePrereqScreen"),e.proxy(this,"_closePrereqContainer"),e.proxy(this,"_closePrereqsDone")),this._animate({additionalCondition:this._ui.screen.hasClass("in"),transition:t?"none":this._currentTransition,classToRemove:"in",screenClassToAdd:"out",containerClassToAdd:"reverse out",applyTransition:!0,prereqs:this._prereqs})},_unenhance:function(){this._setTheme("none"),this.element.detach().insertAfter(this._ui.placeholder).removeClass("ui-popup ui-overlay-shadow ui-corner-all"),this._ui.screen.remove(),this._ui.container.remove(),this._ui.placeholder.remove()},_destroy:function(){e.mobile.popup.active===this?(this.element.one("popupafterclose",e.proxy(this,"_unenhance")),this.close()):this._unenhance()},_closePopup:function(i,n){var a,o,s=this.options,r=!1;t.scrollTo(0,this._scrollTop),i&&"pagebeforechange"===i.type&&n&&(a="string"==typeof n.toPage?n.toPage:n.toPage.jqmData("url"),a=e.mobile.path.parseUrl(a),o=a.pathname+a.search+a.hash,this._myUrl!==e.mobile.path.makeUrlAbsolute(o)?r=!0:i.preventDefault()),s.container.unbind(s.closeEvents),this.element.undelegate(s.closeLinkSelector,s.closeLinkEvents),this._close(r)},_bindContainerClose:function(){this.options.container.one(this.options.closeEvents,e.proxy(this,"_closePopup"))},open:function(i){var a,o,s,r,l,d,c=this,h=this.options;if(!e.mobile.popup.active){if(e.mobile.popup.active=this,this._scrollTop=e.mobile.window.scrollTop(),!h.history)return c._open(i),c._bindContainerClose(),c.element.delegate(h.closeLinkSelector,h.closeLinkEvents,function(e){c.close(),e.preventDefault()}),n;if(d=e.mobile.urlHistory,o=e.mobile.dialogHashKey,s=e.mobile.activePage,r=s.is(".ui-dialog"),this._myUrl=a=d.getActive().url,l=a.indexOf(o)>-1&&!r&&d.activeIndex>0)return c._open(i),c._bindContainerClose(),n;-1!==a.indexOf(o)||r?a=e.mobile.path.parseLocation().hash+o:a+=a.indexOf("#")>-1?o:"#"+o,0===d.activeIndex&&a===d.initialDst&&(a+=o),e(t).one("beforenavigate",function(e){e.preventDefault(),c._open(i),c._bindContainerClose()}),this.urlAltered=!0,e.mobile.navigate(a,{role:"dialog"})}},close:function(){e.mobile.popup.active===this&&(this._scrollTop=e.mobile.window.scrollTop(),this.options.history&&this.urlAltered?(e.mobile.back(),this.urlAltered=!1):this._closePopup())}}),e.mobile.popup.handleLink=function(t){var i,n=t.closest(":jqmData(role='page')"),a=0===n.length?e("body"):n,o=e(e.mobile.path.parseUrl(t.attr("href")).hash,a[0]);o.data("mobile-popup")&&(i=t.offset(),o.popup("open",{x:i.left+t.outerWidth()/2,y:i.top+t.outerHeight()/2,transition:t.jqmData("transition"),positionTo:t.jqmData("position-to")})),setTimeout(function(){var i=t.parent().parent();i.hasClass("ui-li")&&(t=i.parent()),t.removeClass(e.mobile.activeBtnClass)},300)},e.mobile.document.bind("pagebeforechange",function(t,i){"popup"===i.options.role&&(e.mobile.popup.handleLink(i.options.link),t.preventDefault())}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.popup.prototype.enhanceWithin(t.target,!0)})}(e),function(e,t){var n=function(n){var a,o,s,r=(n.select,n._destroy),l=n.selectID,d=l?l:(e.mobile.ns||"")+"uuid-"+n.uuid,c=d+"-listbox",h=d+"-dialog",u=n.label,p=n.select.closest(".ui-page"),m=n._selectOptions(),f=n.isMultiple=n.select[0].multiple,g=l+"-button",b=l+"-menu",v=e("<div data-"+e.mobile.ns+"role='dialog' id='"+h+"' data-"+e.mobile.ns+"theme='"+n.options.theme+"' data-"+e.mobile.ns+"overlay-theme='"+n.options.overlayTheme+"'>"+"<div data-"+e.mobile.ns+"role='header'>"+"<div class='ui-title'>"+u.getEncodedText()+"</div>"+"</div>"+"<div data-"+e.mobile.ns+"role='content'></div>"+"</div>"),_=e("<div id='"+c+"' class='ui-selectmenu'>").insertAfter(n.select).popup({theme:n.options.overlayTheme}),C=e("<ul>",{"class":"ui-selectmenu-list",id:b,role:"listbox","aria-labelledby":g}).attr("data-"+e.mobile.ns+"theme",n.options.theme).attr("data-"+e.mobile.ns+"divider-theme",n.options.dividerTheme).appendTo(_),x=e("<div>",{"class":"ui-header ui-bar-"+n.options.theme}).prependTo(_),y=e("<h1>",{"class":"ui-title"}).appendTo(x);n.isMultiple&&(s=e("<a>",{text:n.options.closeText,href:"#","class":"ui-btn-left"}).attr("data-"+e.mobile.ns+"iconpos","notext").attr("data-"+e.mobile.ns+"icon","delete").appendTo(x).buttonMarkup()),e.extend(n,{select:n.select,selectID:l,buttonId:g,menuId:b,popupID:c,dialogID:h,thisPage:p,menuPage:v,label:u,selectOptions:m,isMultiple:f,theme:n.options.theme,listbox:_,list:C,header:x,headerTitle:y,headerClose:s,menuPageContent:a,menuPageClose:o,placeholder:"",build:function(){var i=this;i.refresh(),i._origTabIndex===t&&(i._origTabIndex=null===i.select[0].getAttribute("tabindex")?!1:i.select.attr("tabindex")),i.select.attr("tabindex","-1").focus(function(){e(this).blur(),i.button.focus()}),i.button.bind("vclick keydown",function(t){i.options.disabled||i.isOpen||("vclick"===t.type||t.keyCode&&(t.keyCode===e.mobile.keyCode.ENTER||t.keyCode===e.mobile.keyCode.SPACE))&&(i._decideFormat(),"overlay"===i.menuType?i.button.attr("href","#"+i.popupID).attr("data-"+(e.mobile.ns||"")+"rel","popup"):i.button.attr("href","#"+i.dialogID).attr("data-"+(e.mobile.ns||"")+"rel","dialog"),i.isOpen=!0)}),i.list.attr("role","listbox").bind("focusin",function(t){e(t.target).attr("tabindex","0").trigger("vmouseover")}).bind("focusout",function(t){e(t.target).attr("tabindex","-1").trigger("vmouseout")}).delegate("li:not(.ui-disabled, .ui-li-divider)","click",function(t){var a=i.select[0].selectedIndex,o=i.list.find("li:not(.ui-li-divider)").index(this),s=i._selectOptions().eq(o)[0];s.selected=i.isMultiple?!s.selected:!0,i.isMultiple&&e(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",s.selected).toggleClass("ui-icon-checkbox-off",!s.selected),(i.isMultiple||a!==o)&&i.select.trigger("change"),i.isMultiple?i.list.find("li:not(.ui-li-divider)").eq(o).addClass("ui-btn-down-"+n.options.theme).find("a").first().focus():i.close(),t.preventDefault()}).keydown(function(t){var i,a,o=e(t.target),s=o.closest("li");switch(t.keyCode){case 38:return i=s.prev().not(".ui-selectmenu-placeholder"),i.is(".ui-li-divider")&&(i=i.prev()),i.length&&(o.blur().attr("tabindex","-1"),i.addClass("ui-btn-down-"+n.options.theme).find("a").first().focus()),!1;case 40:return a=s.next(),a.is(".ui-li-divider")&&(a=a.next()),a.length&&(o.blur().attr("tabindex","-1"),a.addClass("ui-btn-down-"+n.options.theme).find("a").first().focus()),!1;case 13:case 32:return o.trigger("click"),!1}}),i.menuPage.bind("pagehide",function(){e.mobile._bindPageRemove.call(i.thisPage)}),i.listbox.bind("popupafterclose",function(){i.close()}),i.isMultiple&&i.headerClose.click(function(){return"overlay"===i.menuType?(i.close(),!1):t}),i.thisPage.addDependents(this.menuPage)},_isRebuildRequired:function(){var e=this.list.find("li"),t=this._selectOptions();return t.text()!==e.text()},selected:function(){return this._selectOptions().filter(":selected:not( :jqmData(placeholder='true') )")},refresh:function(t){var i,n=this;this.element,this.isMultiple,(t||this._isRebuildRequired())&&n._buildList(),i=this.selectedIndices(),n.setButtonText(),n.setButtonCount(),n.list.find("li:not(.ui-li-divider)").removeClass(e.mobile.activeBtnClass).attr("aria-selected",!1).each(function(t){if(e.inArray(t,i)>-1){var a=e(this);a.attr("aria-selected",!0),n.isMultiple?a.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):a.is(".ui-selectmenu-placeholder")?a.next().addClass(e.mobile.activeBtnClass):a.addClass(e.mobile.activeBtnClass)}})},close:function(){if(!this.options.disabled&&this.isOpen){var e=this;"page"===e.menuType?(e.menuPage.dialog("close"),e.list.appendTo(e.listbox)):e.listbox.popup("close"),e._focusButton(),e.isOpen=!1}},open:function(){this.button.click()},_decideFormat:function(){function t(){var t=i.list.find("."+e.mobile.activeBtnClass+" a");0===t.length&&(t=i.list.find("li.ui-btn:not( :jqmData(placeholder='true') ) a")),t.first().focus().closest("li").addClass("ui-btn-down-"+n.options.theme)}var i=this,a=e.mobile.window,o=i.list.parent(),s=o.outerHeight(),r=(o.outerWidth(),e("."+e.mobile.activePageClass),a.scrollTop()),l=i.button.offset().top,d=a.height();a.width(),s>d-80||!e.support.scrollTop?(i.menuPage.appendTo(e.mobile.pageContainer).page(),i.menuPageContent=v.find(".ui-content"),i.menuPageClose=v.find(".ui-header a"),i.thisPage.unbind("pagehide.remove"),0===r&&l>d&&i.thisPage.one("pagehide",function(){e(this).jqmData("lastScroll",l)}),i.menuPage.one("pageshow",function(){t()}).one("pagehide",function(){i.close()}),i.menuType="page",i.menuPageContent.append(i.list),i.menuPage.find("div .ui-title").text(i.label.text())):(i.menuType="overlay",i.listbox.one("popupafteropen",t))},_buildList:function(){var t=this,n=this.options,a=this.placeholder,o=!0,s=t.isMultiple?"checkbox-off":"false";t.list.empty().filter(".ui-listview").listview("destroy");for(var r,l=t.select.find("option"),d=l.length,c=this.select[0],h="data-"+e.mobile.ns,u=h+"option-index",p=h+"icon",m=h+"role",f=h+"placeholder",g=i.createDocumentFragment(),b=!1,v=0;d>v;v++,b=!1){var _=l[v],C=e(_),x=_.parentNode,y=C.text(),w=i.createElement("a"),T=[];if(w.setAttribute("href","#"),w.appendChild(i.createTextNode(y)),x!==c&&"optgroup"===x.nodeName.toLowerCase()){var D=x.getAttribute("label");if(D!==r){var P=i.createElement("li");P.setAttribute(m,"list-divider"),P.setAttribute("role","option"),P.setAttribute("tabindex","-1"),P.appendChild(i.createTextNode(D)),g.appendChild(P),r=D}}!o||_.getAttribute("value")&&0!==y.length&&!C.jqmData("placeholder")||(o=!1,b=!0,null===_.getAttribute(f)&&(this._removePlaceholderAttr=!0),_.setAttribute(f,!0),n.hidePlaceholderMenuItems&&T.push("ui-selectmenu-placeholder"),a!==y&&(a=t.placeholder=y));var k=i.createElement("li");_.disabled&&(T.push("ui-disabled"),k.setAttribute("aria-disabled",!0)),k.setAttribute(u,v),k.setAttribute(p,s),b&&k.setAttribute(f,!0),k.className=T.join(" "),k.setAttribute("role","option"),w.setAttribute("tabindex","-1"),k.appendChild(w),g.appendChild(k)}t.list[0].appendChild(g),this.isMultiple||a.length?this.headerTitle.text(this.placeholder):this.header.hide(),t.list.listview()},_button:function(){return e("<a>",{href:"#",role:"button",id:this.buttonId,"aria-haspopup":"true","aria-owns":this.menuId})},_destroy:function(){this.close(),this._origTabIndex!==t&&(this._origTabIndex!==!1?this.select.attr("tabindex",this._origTabIndex):this.select.removeAttr("tabindex")),this._removePlaceholderAttr&&this._selectOptions().removeAttr("data-"+e.mobile.ns+"placeholder"),this.listbox.remove(),r.apply(this,arguments)}})};e.mobile.document.bind("selectmenubeforecreate",function(t){var i=e(t.target).data("mobile-selectmenu");i.options.nativeMenu||0!==i.element.parents(":jqmData(role='popup')").length||n(i)})}(e),function(e,t){e.widget("mobile.controlgroup",e.mobile.widget,e.extend({options:{shadow:!1,corners:!0,excludeInvisible:!0,type:"vertical",mini:!1,initSelector:":jqmData(role='controlgroup')"},_create:function(){var i=this.element,n={inner:e("<div class='ui-controlgroup-controls'></div>"),legend:e("<div role='heading' class='ui-controlgroup-label'></div>")},a=i.children("legend"),o=this;i.wrapInner(n.inner),a.length&&n.legend.append(a).insertBefore(i.children(0)),i.addClass("ui-corner-all ui-controlgroup"),e.extend(this,{_initialRefresh:!0}),e.each(this.options,function(e,i){o.options[e]=t,o._setOption(e,i,!0)})},_init:function(){this.refresh()},_setOption:function(i,n){var a="_set"+i.charAt(0).toUpperCase()+i.slice(1);this[a]!==t&&this[a](n),this._super(i,n),this.element.attr("data-"+(e.mobile.ns||"")+i.replace(/([A-Z])/,"-$1").toLowerCase(),n)},_setType:function(e){this.element.removeClass("ui-controlgroup-horizontal ui-controlgroup-vertical").addClass("ui-controlgroup-"+e),this.refresh()},_setCorners:function(e){this.element.toggleClass("ui-corner-all",e)},_setShadow:function(e){this.element.toggleClass("ui-shadow",e)},_setMini:function(e){this.element.toggleClass("ui-mini",e)},container:function(){return this.element.children(".ui-controlgroup-controls")},refresh:function(){var t=this.element.find(".ui-btn").not(".ui-slider-handle"),i=this._initialRefresh;e.mobile.checkboxradio&&this.element.find(":mobile-checkboxradio").checkboxradio("refresh"),this._addFirstLastClasses(t,this.options.excludeInvisible?this._getVisibles(t,i):t,i),this._initialRefresh=!1}},e.mobile.behaviors.addFirstLastClasses)),e(function(){e.mobile.document.bind("pagecreate create",function(t){e.mobile.controlgroup.prototype.enhanceWithin(t.target,!0)})})}(e),function(e){e(i).bind("pagecreate create",function(t){e(t.target).find("a").jqmEnhanceable().not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})}(e),function(e,t){e.widget("mobile.fixedtoolbar",e.mobile.widget,{options:{visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-popup, .ui-panel, .ui-panel-dismiss-open",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,trackPersistentToolbars:!0,supportBlacklist:function(){return!e.support.fixedPosition},initSelector:":jqmData(position='fixed')"},_create:function(){var i=this,n=i.options,a=i.element,o=a.is(":jqmData(role='header')")?"header":"footer",s=a.closest(".ui-page");return n.supportBlacklist()?(i.destroy(),t):(a.addClass("ui-"+o+"-fixed"),n.fullscreen?(a.addClass("ui-"+o+"-fullscreen"),s.addClass("ui-page-"+o+"-fullscreen")):s.addClass("ui-page-"+o+"-fixed"),e.extend(this,{_thisPage:null}),i._addTransitionClass(),i._bindPageEvents(),i._bindToggleHandlers(),t)},_addTransitionClass:function(){var e=this.options.transition;e&&"none"!==e&&("slide"===e&&(e=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(e))},_bindPageEvents:function(){this._thisPage=this.element.closest(".ui-page"),this._on(this._thisPage,{pagebeforeshow:"_handlePageBeforeShow",webkitAnimationStart:"_handleAnimationStart",animationstart:"_handleAnimationStart",updatelayout:"_handleAnimationStart",pageshow:"_handlePageShow",pagebeforehide:"_handlePageBeforeHide"})},_handlePageBeforeShow:function(){var t=this.options;t.disablePageZoom&&e.mobile.zoom.disable(!0),t.visibleOnPageShow||this.hide(!0)},_handleAnimationStart:function(){this.options.updatePagePadding&&this.updatePagePadding(this._thisPage)},_handlePageShow:function(){this.updatePagePadding(this._thisPage),this.options.updatePagePadding&&this._on(e.mobile.window,{throttledresize:"updatePagePadding"})},_handlePageBeforeHide:function(t,i){var n=this.options;if(n.disablePageZoom&&e.mobile.zoom.enable(!0),n.updatePagePadding&&this._off(e.mobile.window,"throttledresize"),n.trackPersistentToolbars){var a=e(".ui-footer-fixed:jqmData(id)",this._thisPage),o=e(".ui-header-fixed:jqmData(id)",this._thisPage),s=a.length&&i.nextPage&&e(".ui-footer-fixed:jqmData(id='"+a.jqmData("id")+"')",i.nextPage)||e(),r=o.length&&i.nextPage&&e(".ui-header-fixed:jqmData(id='"+o.jqmData("id")+"')",i.nextPage)||e();(s.length||r.length)&&(s.add(r).appendTo(e.mobile.pageContainer),i.nextPage.one("pageshow",function(){r.prependTo(this),s.appendTo(this)}))}},_visible:!0,updatePagePadding:function(i){var n=this.element,a=n.is(".ui-header"),o=parseFloat(n.css(a?"top":"bottom"));this.options.fullscreen||(i=i&&i.type===t&&i||this._thisPage||n.closest(".ui-page"),e(i).css("padding-"+(a?"top":"bottom"),n.outerHeight()+o))},_useTransition:function(t){var i=e.mobile.window,n=this.element,a=i.scrollTop(),o=n.height(),s=n.closest(".ui-page").height(),r=e.mobile.getScreenHeight(),l=n.is(":jqmData(role='header')")?"header":"footer";return!t&&(this.options.transition&&"none"!==this.options.transition&&("header"===l&&!this.options.fullscreen&&a>o||"footer"===l&&!this.options.fullscreen&&s-o>a+r)||this.options.fullscreen)},show:function(e){var t="ui-fixed-hidden",i=this.element;this._useTransition(e)?i.removeClass("out "+t).addClass("in").animationComplete(function(){i.removeClass("in")}):i.removeClass(t),this._visible=!0},hide:function(e){var t="ui-fixed-hidden",i=this.element,n="out"+("slide"===this.options.transition?" reverse":"");this._useTransition(e)?i.addClass(n).removeClass("in").animationComplete(function(){i.addClass(t).removeClass(n)}):i.addClass(t).removeClass(n),this._visible=!1},toggle:function(){this[this._visible?"hide":"show"]()},_bindToggleHandlers:function(){var t,i,n=this,a=n.options,o=n.element,s=!0;o.closest(".ui-page").bind("vclick",function(t){a.tapToggle&&!e(t.target).closest(a.tapToggleBlacklist).length&&n.toggle()}).bind("focusin focusout",function(o){1025>screen.width&&e(o.target).is(a.hideDuringFocus)&&!e(o.target).closest(".ui-header-fixed, .ui-footer-fixed").length&&("focusout"!==o.type||s?"focusin"===o.type&&s&&(clearTimeout(t),s=!1,i=setTimeout(function(){n.hide()},0)):(s=!0,clearTimeout(i),t=setTimeout(function(){n.show()},0)))})},_destroy:function(){var e=this.element,t=e.is(".ui-header");e.closest(".ui-page").css("padding-"+(t?"top":"bottom"),""),e.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),e.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")}}),e.mobile.document.bind("pagecreate create",function(t){e(t.target).jqmData("fullscreen")&&e(e.mobile.fixedtoolbar.prototype.options.initSelector,t.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),e.mobile.fixedtoolbar.prototype.enhanceWithin(t.target)})}(e),function(e){e.widget("mobile.fixedtoolbar",e.mobile.fixedtoolbar,{_create:function(){this._super(),this._workarounds()},_workarounds:function(){var e=navigator.userAgent,t=navigator.platform,i=e.match(/AppleWebKit\/([0-9]+)/),n=!!i&&i[1],a=null,o=this;if(t.indexOf("iPhone")>-1||t.indexOf("iPad")>-1||t.indexOf("iPod")>-1)a="ios";else{if(!(e.indexOf("Android")>-1))return;a="android"}if("ios"===a)o._bindScrollWorkaround();else{if(!("android"===a&&n&&534>n))return;o._bindScrollWorkaround(),o._bindListThumbWorkaround()}},_viewportOffset:function(){var t=this.element,i=t.is(".ui-header"),n=Math.abs(t.offset().top-e.mobile.window.scrollTop());return i||(n=Math.round(n-e.mobile.window.height()+t.outerHeight())-60),n},_bindScrollWorkaround:function(){var t=this;this._on(e.mobile.window,{scrollstop:function(){var e=t._viewportOffset();e>2&&t._visible&&t._triggerRedraw()}})},_bindListThumbWorkaround:function(){this.element.closest(".ui-page").addClass("ui-android-2x-fixed")},_triggerRedraw:function(){var t=parseFloat(e(".ui-page-active").css("padding-bottom"));
+e(".ui-page-active").css("padding-bottom",t+1+"px"),setTimeout(function(){e(".ui-page-active").css("padding-bottom",t+"px")},0)},destroy:function(){this._super(),this.element.closest(".ui-page-active").removeClass("ui-android-2x-fix")}})}(e),function(e,n){e.widget("mobile.panel",e.mobile.widget,{options:{classes:{panel:"ui-panel",panelOpen:"ui-panel-open",panelClosed:"ui-panel-closed",panelFixed:"ui-panel-fixed",panelInner:"ui-panel-inner",modal:"ui-panel-dismiss",modalOpen:"ui-panel-dismiss-open",pagePanel:"ui-page-panel",pagePanelOpen:"ui-page-panel-open",contentWrap:"ui-panel-content-wrap",contentWrapOpen:"ui-panel-content-wrap-open",contentWrapClosed:"ui-panel-content-wrap-closed",contentFixedToolbar:"ui-panel-content-fixed-toolbar",contentFixedToolbarOpen:"ui-panel-content-fixed-toolbar-open",contentFixedToolbarClosed:"ui-panel-content-fixed-toolbar-closed",animate:"ui-panel-animate"},animate:!0,theme:"c",position:"left",dismissible:!0,display:"reveal",initSelector:":jqmData(role='panel')",swipeClose:!0,positionFixed:!1},_panelID:null,_closeLink:null,_page:null,_modal:null,_panelInner:null,_wrapper:null,_fixedToolbar:null,_create:function(){var t=this,i=t.element,n=i.closest(":jqmData(role='page')"),a=function(){var t=e.data(n[0],"mobilePage").options.theme,i="ui-body-"+t;return i},o=function(){var e=i.find("."+t.options.classes.panelInner);return 0===e.length&&(e=i.children().wrapAll('<div class="'+t.options.classes.panelInner+'" />').parent()),e},s=function(){var i=n.find("."+t.options.classes.contentWrap);return 0===i.length&&(i=n.children(".ui-header:not(:jqmData(position='fixed')), .ui-content:not(:jqmData(role='popup')), .ui-footer:not(:jqmData(position='fixed'))").wrapAll('<div class="'+t.options.classes.contentWrap+" "+a()+'" />').parent(),e.support.cssTransform3d&&t.options.animate&&i.addClass(t.options.classes.animate)),i},r=function(){var i=n.find("."+t.options.classes.contentFixedToolbar);return 0===i.length&&(i=n.find(".ui-header:jqmData(position='fixed'), .ui-footer:jqmData(position='fixed')").addClass(t.options.classes.contentFixedToolbar),e.support.cssTransform3d&&t.options.animate&&i.addClass(t.options.classes.animate)),i};e.extend(this,{_panelID:i.attr("id"),_closeLink:i.find(":jqmData(rel='close')"),_page:i.closest(":jqmData(role='page')"),_pageTheme:a(),_panelInner:o(),_wrapper:s(),_fixedToolbar:r()}),t._addPanelClasses(),t._wrapper.addClass(this.options.classes.contentWrapClosed),t._fixedToolbar.addClass(this.options.classes.contentFixedToolbarClosed),t._page.addClass(t.options.classes.pagePanel),e.support.cssTransform3d&&t.options.animate&&this.element.addClass(t.options.classes.animate),t._bindUpdateLayout(),t._bindCloseEvents(),t._bindLinkListeners(),t._bindPageEvents(),t.options.dismissible&&t._createModal(),t._bindSwipeEvents()},_createModal:function(){var t=this;t._modal=e("<div class='"+t.options.classes.modal+"' data-panelid='"+t._panelID+"'></div>").on("mousedown",function(){t.close()}).appendTo(this._page)},_getPosDisplayClasses:function(e){return e+"-position-"+this.options.position+" "+e+"-display-"+this.options.display},_getPanelClasses:function(){var e=this.options.classes.panel+" "+this._getPosDisplayClasses(this.options.classes.panel)+" "+this.options.classes.panelClosed;return this.options.theme&&(e+=" ui-body-"+this.options.theme),this.options.positionFixed&&(e+=" "+this.options.classes.panelFixed),e},_addPanelClasses:function(){this.element.addClass(this._getPanelClasses())},_bindCloseEvents:function(){var e=this;e._closeLink.on("click.panel",function(t){return t.preventDefault(),e.close(),!1}),e.element.on("click.panel","a:jqmData(ajax='false')",function(){e.close()})},_positionPanel:function(){var t=this,i=t._panelInner.outerHeight(),n=i>e.mobile.getScreenHeight();n||!t.options.positionFixed?(n&&(t._unfixPanel(),e.mobile.resetActivePageHeight(i)),t._scrollIntoView(i)):t._fixPanel()},_scrollIntoView:function(i){e(t).scrollTop()>i&&t.scrollTo(0,0)},_bindFixListener:function(){this._on(e(t),{throttledresize:"_positionPanel"})},_unbindFixListener:function(){this._off(e(t),"throttledresize")},_unfixPanel:function(){this.options.positionFixed&&e.support.fixedPosition&&this.element.removeClass(this.options.classes.panelFixed)},_fixPanel:function(){this.options.positionFixed&&e.support.fixedPosition&&this.element.addClass(this.options.classes.panelFixed)},_bindUpdateLayout:function(){var e=this;e.element.on("updatelayout",function(){e._open&&e._positionPanel()})},_bindLinkListeners:function(){var t=this;t._page.on("click.panel","a",function(i){if(this.href.split("#")[1]===t._panelID&&t._panelID!==n){i.preventDefault();var a=e(this);return a.hasClass("ui-link")||(a.addClass(e.mobile.activeBtnClass),t.element.one("panelopen panelclose",function(){a.removeClass(e.mobile.activeBtnClass)})),t.toggle(),!1}})},_bindSwipeEvents:function(){var e=this,t=e._modal?e.element.add(e._modal):e.element;e.options.swipeClose&&("left"===e.options.position?t.on("swipeleft.panel",function(){e.close()}):t.on("swiperight.panel",function(){e.close()}))},_bindPageEvents:function(){var e=this;e._page.on("panelbeforeopen",function(t){e._open&&t.target!==e.element[0]&&e.close()}).on("pagehide",function(){e._open&&e.close(!0)}).on("keyup.panel",function(t){27===t.keyCode&&e._open&&e.close()})},_open:!1,_contentWrapOpenClasses:null,_fixedToolbarOpenClasses:null,_modalOpenClasses:null,open:function(t){if(!this._open){var i=this,n=i.options,a=function(){i._page.off("panelclose"),i._page.jqmData("panel","open"),!t&&e.support.cssTransform3d&&n.animate?i.element.add(i._wrapper).on(i._transitionEndEvents,o):setTimeout(o,0),i.options.theme&&"overlay"!==i.options.display&&i._page.removeClass(i._pageTheme).addClass("ui-body-"+i.options.theme),i.element.removeClass(n.classes.panelClosed).addClass(n.classes.panelOpen),i._positionPanel(),i.options.theme&&"overlay"!==i.options.display&&i._wrapper.css("min-height",i._page.css("min-height")),i._contentWrapOpenClasses=i._getPosDisplayClasses(n.classes.contentWrap),i._wrapper.removeClass(n.classes.contentWrapClosed).addClass(i._contentWrapOpenClasses+" "+n.classes.contentWrapOpen),i._fixedToolbarOpenClasses=i._getPosDisplayClasses(n.classes.contentFixedToolbar),i._fixedToolbar.removeClass(n.classes.contentFixedToolbarClosed).addClass(i._fixedToolbarOpenClasses+" "+n.classes.contentFixedToolbarOpen),i._modalOpenClasses=i._getPosDisplayClasses(n.classes.modal)+" "+n.classes.modalOpen,i._modal&&i._modal.addClass(i._modalOpenClasses)},o=function(){i.element.add(i._wrapper).off(i._transitionEndEvents,o),i._page.addClass(n.classes.pagePanelOpen),i._bindFixListener(),i._trigger("open")};0>this.element.closest(".ui-page-active").length&&(t=!0),i._trigger("beforeopen"),"open"===i._page.jqmData("panel")?i._page.on("panelclose",function(){a()}):a(),i._open=!0}},close:function(t){if(this._open){var i=this.options,n=this,a=function(){!t&&e.support.cssTransform3d&&i.animate?n.element.add(n._wrapper).on(n._transitionEndEvents,o):setTimeout(o,0),n._page.removeClass(i.classes.pagePanelOpen),n.element.removeClass(i.classes.panelOpen),n._wrapper.removeClass(i.classes.contentWrapOpen),n._fixedToolbar.removeClass(i.classes.contentFixedToolbarOpen),n._modal&&n._modal.removeClass(n._modalOpenClasses)},o=function(){n.options.theme&&"overlay"!==n.options.display&&(n._page.removeClass("ui-body-"+n.options.theme).addClass(n._pageTheme),n._wrapper.css("min-height","")),n.element.add(n._wrapper).off(n._transitionEndEvents,o),n.element.addClass(i.classes.panelClosed),n._wrapper.removeClass(n._contentWrapOpenClasses).addClass(i.classes.contentWrapClosed),n._fixedToolbar.removeClass(n._fixedToolbarOpenClasses).addClass(i.classes.contentFixedToolbarClosed),n._fixPanel(),n._unbindFixListener(),e.mobile.resetActivePageHeight(),n._page.jqmRemoveData("panel"),n._trigger("close")};0>this.element.closest(".ui-page-active").length&&(t=!0),n._trigger("beforeclose"),a(),n._open=!1}},toggle:function(){this[this._open?"close":"open"]()},_transitionEndEvents:"webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd",_destroy:function(){var t=this.options.classes,i=this.options.theme,n=this.element.siblings("."+t.panel).length;n?this._open&&(this._wrapper.removeClass(t.contentWrapOpen),this._fixedToolbar.removeClass(t.contentFixedToolbarOpen),this._page.jqmRemoveData("panel"),this._page.removeClass(t.pagePanelOpen),i&&this._page.removeClass("ui-body-"+i).addClass(this._pageTheme)):(this._wrapper.children().unwrap(),this._page.find("a").unbind("panelopen panelclose"),this._page.removeClass(t.pagePanel),this._open&&(this._page.jqmRemoveData("panel"),this._page.removeClass(t.pagePanelOpen),i&&this._page.removeClass("ui-body-"+i).addClass(this._pageTheme),e.mobile.resetActivePageHeight())),this._panelInner.children().unwrap(),this.element.removeClass([this._getPanelClasses(),t.panelAnimate].join(" ")).off("swipeleft.panel swiperight.panel").off("panelbeforeopen").off("panelhide").off("keyup.panel").off("updatelayout"),this._closeLink.off("click.panel"),this._modal&&this._modal.remove(),this.element.off(this._transitionEndEvents).removeClass([t.panelUnfixed,t.panelClosed,t.panelOpen].join(" "))}}),e(i).bind("pagecreate create",function(t){e.mobile.panel.prototype.enhanceWithin(t.target)})}(e),function(e,t){e.widget("mobile.table",e.mobile.widget,{options:{classes:{table:"ui-table"},initSelector:":jqmData(role='table')"},_create:function(){var e=this;e.refresh(!0)},refresh:function(i){var n=this,a=this.element.find("thead tr");i&&this.element.addClass(this.options.classes.table),n.headers=this.element.find("tr:eq(0)").children(),n.allHeaders=n.headers.add(a.children()),a.each(function(){var o=0;e(this).children().each(function(){var s=parseInt(e(this).attr("colspan"),10),r=":nth-child("+(o+1)+")";if(e(this).jqmData("colstart",o+1),s)for(var l=0;s-1>l;l++)o++,r+=", :nth-child("+(o+1)+")";i===t&&e(this).jqmData("cells",""),e(this).jqmData("cells",n.element.find("tr").not(a.eq(0)).not(this).children(r)),o++})}),i===t&&this.element.trigger("refresh")}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.table.prototype.enhanceWithin(t.target)})}(e),function(e,t){e.mobile.table.prototype.options.mode="columntoggle",e.mobile.table.prototype.options.columnBtnTheme=null,e.mobile.table.prototype.options.columnPopupTheme=null,e.mobile.table.prototype.options.columnBtnText="Columns...",e.mobile.table.prototype.options.classes=e.extend(e.mobile.table.prototype.options.classes,{popup:"ui-table-columntoggle-popup",columnBtn:"ui-table-columntoggle-btn",priorityPrefix:"ui-table-priority-",columnToggleTable:"ui-table-columntoggle"}),e.mobile.document.delegate(":jqmData(role='table')","tablecreate refresh",function(i){var n,a,o,s,r=e(this),l=r.data("mobile-table"),d=i.type,c=l.options,h=e.mobile.ns,u=(r.attr("id")||c.classes.popup)+"-popup";"columntoggle"===c.mode&&("refresh"!==d&&(l.element.addClass(c.classes.columnToggleTable),n=e("<a href='#"+u+"' class='"+c.classes.columnBtn+"' data-"+h+"rel='popup' data-"+h+"mini='true'>"+c.columnBtnText+"</a>"),a=e("<div data-"+h+"role='popup' data-"+h+"role='fieldcontain' class='"+c.classes.popup+"' id='"+u+"'></div>"),o=e("<fieldset data-"+h+"role='controlgroup'></fieldset>")),l.headers.not("td").each(function(t){var i=e(this).jqmData("priority"),n=e(this).add(e(this).jqmData("cells"));i&&(n.addClass(c.classes.priorityPrefix+i),"refresh"!==d?e("<label><input type='checkbox' checked />"+e(this).text()+"</label>").appendTo(o).children(0).jqmData("cells",n).checkboxradio({theme:c.columnPopupTheme}):e("#"+u+" fieldset div:eq("+t+")").find("input").jqmData("cells",n))}),"refresh"!==d&&o.appendTo(a),s=o===t?e("#"+u+" fieldset"):o,"refresh"!==d&&(s.on("change","input",function(){this.checked?e(this).jqmData("cells").removeClass("ui-table-cell-hidden").addClass("ui-table-cell-visible"):e(this).jqmData("cells").removeClass("ui-table-cell-visible").addClass("ui-table-cell-hidden")}),n.insertBefore(r).buttonMarkup({theme:c.columnBtnTheme}),a.insertBefore(r).popup()),l.update=function(){s.find("input").each(function(){this.checked?(this.checked="table-cell"===e(this).jqmData("cells").eq(0).css("display"),"refresh"===d&&e(this).jqmData("cells").addClass("ui-table-cell-visible")):e(this).jqmData("cells").addClass("ui-table-cell-hidden"),e(this).checkboxradio("refresh")})},e.mobile.window.on("throttledresize",l.update),l.update())})}(e),function(e){e.mobile.table.prototype.options.mode="reflow",e.mobile.table.prototype.options.classes=e.extend(e.mobile.table.prototype.options.classes,{reflowTable:"ui-table-reflow",cellLabels:"ui-table-cell-label"}),e.mobile.document.delegate(":jqmData(role='table')","tablecreate refresh",function(t){var i=e(this),n=t.type,a=i.data("mobile-table"),o=a.options;if("reflow"===o.mode){"refresh"!==n&&a.element.addClass(o.classes.reflowTable);var s=e(a.allHeaders.get().reverse());s.each(function(){var t=e(this).jqmData("cells"),i=e(this).jqmData("colstart"),n=t.not(this).filter("thead th").length&&" ui-table-cell-label-top",a=e(this).text();if(""!==a)if(n){var s=parseInt(e(this).attr("colspan"),10),r="";s&&(r="td:nth-child("+s+"n + "+i+")"),t.filter(r).prepend("<b class='"+o.classes.cellLabels+n+"'>"+a+"</b>")}else t.prepend("<b class='"+o.classes.cellLabels+"'>"+a+"</b>")})}})}(e),function(e,t){function i(e){o=e.originalEvent,d=o.accelerationIncludingGravity,s=Math.abs(d.x),r=Math.abs(d.y),l=Math.abs(d.z),!t.orientation&&(s>7||(l>6&&8>r||8>l&&r>6)&&s>5)?c.enabled&&c.disable():c.enabled||c.enable()}e.mobile.iosorientationfixEnabled=!0;var a=navigator.userAgent;if(!(/iPhone|iPad|iPod/.test(navigator.platform)&&/OS [1-5]_[0-9_]* like Mac OS X/i.test(a)&&a.indexOf("AppleWebKit")>-1))return e.mobile.iosorientationfixEnabled=!1,n;var o,s,r,l,d,c=e.mobile.zoom;e.mobile.document.on("mobileinit",function(){e.mobile.iosorientationfixEnabled&&e.mobile.window.bind("orientationchange.iosorientationfix",c.enable).bind("devicemotion.iosorientationfix",i)})}(e,this),function(e,t){function n(){a.removeClass("ui-mobile-rendering")}var a=e("html"),o=(e("head"),e.mobile.window);e(t.document).trigger("mobileinit"),e.mobile.gradeA()&&(e.mobile.ajaxBlacklist&&(e.mobile.ajaxEnabled=!1),a.addClass("ui-mobile ui-mobile-rendering"),setTimeout(n,5e3),e.extend(e.mobile,{initializePage:function(){var t=e.mobile.path,a=e(":jqmData(role='page'), :jqmData(role='dialog')"),s=t.stripHash(t.stripQueryParams(t.parseLocation().hash)),r=i.getElementById(s);a.length||(a=e("body").wrapInner("<div data-"+e.mobile.ns+"role='page'></div>").children(0)),a.each(function(){var t=e(this);t.jqmData("url")||t.attr("data-"+e.mobile.ns+"url",t.attr("id")||location.pathname+location.search)}),e.mobile.firstPage=a.first(),e.mobile.pageContainer=e.mobile.firstPage.parent().addClass("ui-mobile-viewport"),o.trigger("pagecontainercreate"),e.mobile.showPageLoadingMsg(),n(),e.mobile.hashListeningEnabled&&e.mobile.path.isHashValid(location.hash)&&(e(r).is(':jqmData(role="page")')||e.mobile.path.isPath(s)||s===e.mobile.dialogHashKey)?e.event.special.navigate.isPushStateEnabled()?(e.mobile.navigate.history.stack=[],e.mobile.navigate(e.mobile.path.isPath(location.hash)?location.hash:location.href)):o.trigger("hashchange",[!0]):(e.mobile.path.isHashValid(location.hash)&&(e.mobile.urlHistory.initialDst=s.replace("#","")),e.event.special.navigate.isPushStateEnabled()&&e.mobile.navigate.navigator.squash(t.parseLocation().href),e.mobile.changePage(e.mobile.firstPage,{transition:"none",reverse:!0,changeHash:!1,fromHashChange:!0}))}}),e.mobile.navreadyDeferred.resolve(),e(function(){t.scrollTo(0,1),e.mobile.defaultHomeScroll=e.support.scrollTop&&1!==e.mobile.window.scrollTop()?1:0,e.mobile.autoInitializePage&&e.mobile.initializePage(),o.load(e.mobile.silentScroll),e.support.cssPointerEvents||e.mobile.document.delegate(".ui-disabled","vclick",function(e){e.preventDefault(),e.stopImmediatePropagation()})}))}(e,this)});
+//@ sourceMappingURL=jquery.mobile-1.3.1.min.map
Index: /tags/2.6.0RC1/themes/smartpocket/js/klass.min.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/klass.min.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/klass.min.js	(revision 25596)
@@ -0,0 +1,8 @@
+/**
+  * Klass.js - copyright @dedfat
+  * version 1.0
+  * https://github.com/ded/klass
+  * Follow our software http://twitter.com/dedfat :)
+  * MIT License
+  */
+!function(a,b){function j(a,b){function c(){}c[e]=this[e];var d=this,g=new c,h=f(a),j=h?a:this,k=h?{}:a,l=function(){this.initialize?this.initialize.apply(this,arguments):(b||h&&d.apply(this,arguments),j.apply(this,arguments))};l.methods=function(a){i(g,a,d),l[e]=g;return this},l.methods.call(l,k).prototype.constructor=l,l.extend=arguments.callee,l[e].implement=l.statics=function(a,b){a=typeof a=="string"?function(){var c={};c[a]=b;return c}():a,i(this,a,d);return this};return l}function i(a,b,d){for(var g in b)b.hasOwnProperty(g)&&(a[g]=f(b[g])&&f(d[e][g])&&c.test(b[g])?h(g,b[g],d):b[g])}function h(a,b,c){return function(){var d=this.supr;this.supr=c[e][a];var f=b.apply(this,arguments);this.supr=d;return f}}function g(a){return j.call(f(a)?a:d,a,1)}var c=/xyz/.test(function(){xyz})?/\bsupr\b/:/.*/,d=function(){},e="prototype",f=function(a){return typeof a===b};if(typeof module!="undefined"&&module.exports)module.exports=g;else{var k=a.klass;g.noConflict=function(){a.klass=k;return this},a.klass=g}}(this,"function")
Index: /tags/2.6.0RC1/themes/smartpocket/js/smartpocket.js
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/js/smartpocket.js	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/js/smartpocket.js	(revision 25596)
@@ -0,0 +1,41 @@
+(function(window, $, PhotoSwipe){
+  $(document).ready(function(){
+    var more_link
+    var options = {
+      jQueryMobile: true,
+      loop: var_loop,
+      captionAndToolbarAutoHideDelay: var_autohide,
+      imageScaleMethod: "fitNoUpscale",
+      getToolbar: function(){
+return '<div class="ps-toolbar-close"><div class="ps-toolbar-content"></div></div><div class="ps-toolbar-play"><div class="ps-toolbar-content"></div></div><div id="more_link">'+var_trad+'</div><div class="ps-toolbar-previous"><div class="ps-toolbar-content"></div></div><div class="ps-toolbar-next"><div class="ps-toolbar-content"></div></div>';},
+      getImageMetaData:function(el){
+        return {
+            picture_url: $(el).attr('data-picture-url')
+        };}
+    };
+    var myPhotoSwipe = $(".thumbnails a").photoSwipe(options);
+    // onShow - store a reference to our "more_link" button
+    myPhotoSwipe.addEventHandler(PhotoSwipe.EventTypes.onShow, function(e){
+      more_link = window.document.querySelectorAll('#more_link')[0];
+    });
+    // onToolbarTap - listen out for when the toolbar is tapped
+    myPhotoSwipe.addEventHandler(PhotoSwipe.EventTypes.onToolbarTap, function(e){
+			if (e.toolbarAction === PhotoSwipe.Toolbar.ToolbarAction.none){
+				if (e.tapTarget === more_link || Util.DOM.isChildOf(e.tapTarget, more_link)){
+					var currentImage = myPhotoSwipe.getCurrentImage();
+					window.location=currentImage.metaData.picture_url;
+				}
+			}
+		});
+		$(window).bind('orientationchange', set_thumbnails_width);
+		set_thumbnails_width();
+  });
+}(window, window.jQuery, window.Code.PhotoSwipe));
+
+function set_thumbnails_width() {
+	var dpr = window.devicePixelRatio>1 ? window.devicePixelRatio : 1
+		, nb_thumbs = Math.max(2, Math.ceil($('.thumbnails').width() / (var_thumb_width/dpr+2*5)))
+		, width = Math.floor(1000000 / nb_thumbs) / 10000;
+	$('.thumbnails li').css('width', width+'%');
+}
+
Index: /tags/2.6.0RC1/themes/smartpocket/photoswipe.css
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/photoswipe.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/photoswipe.css	(revision 25596)
@@ -0,0 +1,176 @@
+/*
+ * photoswipe.css
+ * Copyright (c) %%year%% by Code Computerlove (http://www.codecomputerlove.com)
+ * Licensed under the MIT license
+ *
+ * Default styles for PhotoSwipe
+ * Avoid any position or dimension based styles
+ * where possible, unless specified already here.
+ * The gallery automatically works out gallery item
+ * positions etc.
+ */
+
+ 
+body.ps-active, body.ps-building, div.ps-active, div.ps-building
+{
+	background: #000;
+	overflow: hidden;
+}
+body.ps-active *, div.ps-active *
+{ 
+	-webkit-tap-highlight-color:  rgba(255, 255, 255, 0); 
+	display: none;
+}
+body.ps-active *:focus, div.ps-active *:focus 
+{ 
+	outline: 0; 
+}
+
+
+/* Document overlay */
+div.ps-document-overlay 
+{
+	background: #000;
+}
+
+
+/* UILayer */
+div.ps-uilayer { 
+	
+	background: #000;
+	cursor: pointer;
+	
+}
+
+
+/* Zoom/pan/rotate layer */
+div.ps-zoom-pan-rotate{
+	background: #000;
+}
+div.ps-zoom-pan-rotate *  { display: block; }
+
+
+/* Carousel */
+div.ps-carousel-item-loading 
+{ 
+	background: url(images/loader.gif) no-repeat center center; 
+}
+
+div.ps-carousel-item-error 
+{ 
+	background: url(images/error.gif) no-repeat center center; 
+}
+
+
+/* Caption */
+div.ps-caption
+{ 
+	background: #000000;
+	background: -moz-linear-gradient(top, #303130 0%, #000101 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#303130), color-stop(100%,#000101));
+	border-bottom: 1px solid #42403f;
+	color: #ffffff;
+	font-size: 13px;
+	font-family: "Lucida Grande", Helvetica, Arial,Verdana, sans-serif;
+	text-align: center;
+}
+div.ps-caption *  { display: inline; }
+
+div.ps-caption-bottom
+{ 
+	border-top: 1px solid #42403f;
+	border-bottom: none;
+	min-height: 44px;
+}
+
+div.ps-caption-content
+{
+	padding: 13px;
+	display: block;
+}
+
+
+/* Toolbar */
+div.ps-toolbar
+{ 
+	background: #000000;
+	background: -moz-linear-gradient(top, #303130 0%, #000101 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#303130), color-stop(100%,#000101));
+	border-top: 1px solid #42403f;
+	color: #ffffff;
+	font-size: 13px;
+	font-family: "Lucida Grande", Helvetica, Arial,Verdana, sans-serif;
+	text-align: center;
+	height: 44px;
+	display: table;
+	table-layout: fixed;
+}
+div.ps-toolbar * { 
+	display: block;
+}
+
+div.ps-toolbar-top 
+{
+	border-bottom: 1px solid #42403f;
+	border-top: none;
+}
+
+div.ps-toolbar-close, div.ps-toolbar-previous, div.ps-toolbar-next, div.ps-toolbar-play
+{
+	cursor: pointer;
+	display: table-cell;
+}
+
+div.ps-toolbar div div.ps-toolbar-content
+{
+	width: 44px;
+	height: 44px;
+	margin: 0 auto 0;
+	background-image: url(images/icons.png);
+	background-repeat: no-repeat;
+}
+
+div.ps-toolbar-close div.ps-toolbar-content
+{
+	background-position: 0 0;
+}
+
+div.ps-toolbar-previous div.ps-toolbar-content
+{
+	background-position: -44px 0;
+}
+
+div.ps-toolbar-previous-disabled div.ps-toolbar-content
+{
+	background-position: -44px -44px;
+}
+
+div.ps-toolbar-next div.ps-toolbar-content
+{
+	background-position: -132px 0;
+}
+
+div.ps-toolbar-next-disabled div.ps-toolbar-content
+{
+	background-position: -132px -44px;
+}
+
+div.ps-toolbar-play div.ps-toolbar-content
+{
+	background-position: -88px 0;
+}
+
+/* Hi-res display */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+       only screen and (min--moz-device-pixel-ratio: 1.5),
+       only screen and (min-resolution: 240dpi)
+{
+	div.ps-toolbar div div.ps-toolbar-content
+	{
+		-moz-background-size: 176px 88px;
+		-o-background-size: 176px 88px;
+		-webkit-background-size: 176px 88px;
+		background-size: 176px 88px;
+		background-image: url(images/icons@2x.png);
+	}
+}
Index: /tags/2.6.0RC1/themes/smartpocket/template/about.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/about.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/about.tpl	(revision 25596)
@@ -0,0 +1,15 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+  <ul data-role="listview" data-inset="true">
+    <li data-role="list-divider">{'About'|@translate}</li>
+    <li>{$ABOUT_MESSAGE}</li>
+    {if isset($THEME_ABOUT) }
+    <li>{$THEME_ABOUT}</li>
+    {/if}
+    {if not empty($about_msgs)}
+    {foreach from=$about_msgs item=elt}
+    <li>{$elt}</li>
+    {/foreach}
+    {/if}
+  </ul>
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/add_menu_on_public_pages.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/add_menu_on_public_pages.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/add_menu_on_public_pages.tpl	(revision 25596)
@@ -0,0 +1,3 @@
+<div data-role="panel" id="menubar" data-position="right" data-display="overlay">
+  {$MENUBAR}
+</div>{assign var='MENUBAR' value=''}
Index: /tags/2.6.0RC1/themes/smartpocket/template/comment_list.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/comment_list.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/comment_list.tpl	(revision 25596)
@@ -0,0 +1,12 @@
+<ul data-role="listview" data-inset="true">
+  <li data-role="list-divider">{'User comments'|@translate}</li>
+{foreach from=$comments item=comment name=comment_loop}
+	<li>
+		{if !isset($from) or $from!="picture"}<a href="{$comment.U_PICTURE}">
+		<img src="{$pwg->derivative_url($thumbnail_derivative_params, $comment.src_image)}">{/if}
+    <h3>{$comment.AUTHOR}</h3>
+    <p>{$comment.CONTENT}</p>
+		{if !isset($from) or $from!="comment"}</a>{/if}
+  </li>
+{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/comments.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/comments.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/comments.tpl	(revision 25596)
@@ -0,0 +1,78 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+{**{if isset($MENUBAR)}{$MENUBAR}{/if}
+<div id="content" class="content{if isset($MENUBAR)} contentWithMenu{/if}">
+
+<div class="titrePage">
+	<ul class="categoryActions">
+	</ul>
+	<h2><a href="{$U_HOME}">{'Home'|@translate}</a>{$LEVEL_SEPARATOR}{'User comments'|@translate}</h2>
+</div>
+
+{include file='infos_errors.tpl'}
+
+<form class="filter" action="{$F_ACTION}" method="get">
+
+  <fieldset>
+    <legend>{'Filter'|@translate}</legend>
+
+    <label>{'Keyword'|@translate}<input type="text" name="keyword" value="{$F_KEYWORD}"></label>
+
+    <label>{'Author'|@translate}<input type="text" name="author" value="{$F_AUTHOR}"></label>
+
+    <label>
+      {'Album'|@translate}
+      <select name="cat">
+        <option value="0">------------</option>
+        {html_options options=$categories selected=$categories_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Since'|@translate}
+      <select name="since">
+        {html_options options=$since_options selected=$since_options_selected}
+      </select>
+    </label>
+
+  </fieldset>
+
+  <fieldset>
+
+    <legend>{'Display'|@translate}</legend>
+
+    <label>
+      {'Sort by'|@translate}
+      <select name="sort_by">
+        {html_options options=$sort_by_options selected=$sort_by_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Sort order'|@translate}
+      <select name="sort_order">
+        {html_options options=$sort_order_options selected=$sort_order_options_selected}
+      </select>
+    </label>
+
+    <label>
+      {'Number of items'|@translate}
+      <select name="items_number">
+        {html_options options=$item_number_options selected=$item_number_options_selected}
+      </select>
+    </label>
+
+  </fieldset>
+
+  <p><input type="submit" value="{'Filter and display'|@translate}"></p>
+
+</form>
+
+{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}**}
+
+{if isset($comments)}
+	{include file='comment_list.tpl' comment_derivative_params=$derivative_params}
+{/if}
+
+</div> <!-- content -->
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/footer.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/footer.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/footer.tpl	(revision 25596)
@@ -0,0 +1,26 @@
+{if !empty($thumb_navbar)}
+{include file='navigation_bar.tpl'|@get_extent:'navbar' navbar=$thumb_navbar}
+{elseif !empty($navbar) and !isset($ELEMENT_CONTENT)}
+{include file='navigation_bar.tpl'|@get_extent:'navbar'}
+{else}
+<div data-role="footer" class="pwg_footer">
+  <h6>
+	{'Powered by'|@translate}	<a href="{$PHPWG_URL}" class="Piwigo">Piwigo</a>
+	{$VERSION}
+	{if isset($CONTACT_MAIL)}
+	- {'Contact'|@translate}
+	<a href="mailto:{$CONTACT_MAIL}?subject={'A comment on your site'|@translate|@escape:url}">{'Webmaster'|@translate}</a>
+	{/if}
+  <br>{'View in'|@translate} :
+    <b>{'Mobile'|@translate}</b> | <a href="{$TOGGLE_MOBILE_THEME_URL}">{'Desktop'|@translate}</a>
+  </h6>
+</div>
+{/if}
+{footer_script require='jquery'}
+document.cookie = 'screen_size='+jQuery(document).width()+'x'+jQuery(document).height()+';path={$COOKIE_PATH}';
+{/footer_script}
+{get_combined_scripts load='footer'}
+</div><!-- /page -->
+
+</body>
+</html>
Index: /tags/2.6.0RC1/themes/smartpocket/template/header.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/header.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/header.tpl	(revision 25596)
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="{$lang_info.code}" dir="{$lang_info.direction}">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset={$CONTENT_ENCODING}">
+<meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
+{if isset($meta_ref) } 
+{if isset($INFO_AUTHOR)}
+<meta name="author" content="{$INFO_AUTHOR|@strip_tags:false|@replace:'"':' '}">
+{/if}
+{if isset($related_tags)}
+<meta name="keywords" content="{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}{$tag.name}{/foreach}">
+{/if}
+{if isset($COMMENT_IMG)}
+<meta name="description" content="{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+{else}
+<meta name="description" content="{$PAGE_TITLE}{if isset($INFO_FILE)} - {$INFO_FILE}{/if}">
+{/if}
+{/if}
+<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
+<meta name="apple-mobile-web-app-capable" content="yes" />
+
+{if (isset($REVERSE) and $REVERSE and $PAGE_TITLE == l10n('Home'))}
+<title>{$GALLERY_TITLE} | {$PAGE_TITLE}</title>{else}
+<title>{$PAGE_TITLE} | {$GALLERY_TITLE}</title>{/if}
+<link rel="start" title="{'Home'|@translate}" href="{$U_HOME}" >
+
+{get_combined_css}
+{foreach from=$themes item=theme}
+{if $theme.load_css}
+{combine_css path="themes/`$theme.id`/theme.css" order=-10}
+{/if}
+{if !empty($theme.local_head)}{include file=$theme.local_head load_css=$theme.load_css}{/if}
+{/foreach}
+
+{if isset($U_CANONICAL)}<link rel="canonical" href="{$U_CANONICAL}">{/if}
+
+{if not empty($page_refresh)    }<meta http-equiv="refresh" content="{$page_refresh.TIME};url={$page_refresh.U_REFRESH}">{/if}
+
+{get_combined_scripts load='header'}
+
+{combine_script id='config' path='themes/smartpocket/js/config.js' require='jquery'}
+{combine_script id='jquery.mobile' path='themes/smartpocket/js/jquery.mobile.min.js' require='jquery,config'}
+
+</head>
+
+<body>
+<div data-role="page" data-theme="a">
+{if isset($MENUBAR)}<div data-role="panel" id="menubar" data-position="right" data-display="overlay">
+  {$MENUBAR}
+</div>{/if}
+<div data-role="header">
+  <div class="title">
+    <a href="{$U_HOME}" class="home_button" data-icon="home" data-iconpos="notext" data-role="button"></a>
+    {$GALLERY_TITLE}
+    <a href="#menubar" data-icon="grid" data-iconpos="notext" data-role="button" style="float: right" >Menu</a>
+  </div>
+</div>
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/identification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/identification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/identification.tpl	(revision 25596)
@@ -0,0 +1,41 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+<h3>{'Identification'|@translate}</h3>
+<form action="{$F_LOGIN_ACTION}" method="post" name="login_form" class="properties">
+
+  <div data-role="fieldcontain">
+  <label for="username">{'Username'|@translate}</label>
+  <input type="text" name="username" id="username">
+  </div>
+    
+
+  <div data-role="fieldcontain">
+  <label for="password">{'Password'|@translate}</label>
+  <input type="password" name="password" id="password" value="">
+  </div>
+
+  {if $authorize_remembering }
+  <div data-role="fieldcontain">
+  <label for="remember_me">{'Auto login'|@translate}</label>
+  <input type="checkbox" name="remember_me" id="remember_me" value="1">
+  </div>
+  {/if}
+
+  <div data-role="fieldcontain">
+    <input type="hidden" name="redirect" value="{$U_REDIRECT|@urlencode}">
+    <input type="submit" name="login" value="{'Submit'|@translate}">
+  </div>
+
+</form>
+
+	<div data-role="fieldcontain">
+{if isset($U_REGISTER)}
+		<a href="{$U_REGISTER}" data-role="button">{'Register'|@translate}</a>
+{/if}
+{*
+{if isset($U_LOST_PASSWORD)}
+		<a href="{$U_LOST_PASSWORD}" data-role="button">{'Forgot your password?'|@translate}</a>
+{/if}
+*}
+	</div>
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/index.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/index.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/index.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+<div data-role="content">
+{if !empty($CATEGORIES)}{$CATEGORIES}{/if}
+{if !empty($THUMBNAILS)}{$THUMBNAILS}{/if}
+{if !empty($CONTENT_DESCRIPTION)}
+<div class="additional_info">
+	{$CONTENT_DESCRIPTION}
+</div>
+{/if}
+{if !empty($CONTENT)}{$CONTENT}{/if}
+</div>
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/infos_errors.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/infos_errors.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/infos_errors.tpl	(revision 25596)
@@ -0,0 +1,23 @@
+{if isset($errors)}
+<div class="ui-bar ui-bar-e errors">
+  <h3>{'Error'|@translate}</h3>
+	<div><a href="#" data-role="button" data-icon="delete" data-iconpos="notext" class="close-button">Button</a></div>
+	<p>{'<br>'|@implode:$errors}</p>
+</div>
+{/if}
+
+{if not empty($infos)}
+<div class="ui-bar ui-bar-b infos">
+  <h3>{'Info'|@translate}</h3>
+	<div><a href="#" data-role="button" data-icon="delete" data-iconpos="notext" class="close-button">Button</a></div>
+	<p>{'<br>'|@implode:$infos}</p>
+</div>
+{/if}
+
+{footer_script}{literal}
+$(document).ready(function () {
+  $('.close-button').click(function() {
+    $(this).parents('.ui-bar').remove();
+  });
+});
+{/literal}{/footer_script}
Index: /tags/2.6.0RC1/themes/smartpocket/template/mainpage_categories.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/mainpage_categories.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/mainpage_categories.tpl	(revision 25596)
@@ -0,0 +1,12 @@
+<ul data-role="listview" data-inset="true">
+{foreach from=$category_thumbnails item=cat}
+	<li>
+		<a href="{$cat.URL}">
+		<img src="{$pwg->derivative_url($thumbnail_derivative_params, $cat.representative.src_image)}">
+    <h3>{$cat.NAME}</h3>
+		<p class="Nb_images">{$cat.CAPTION_NB_IMAGES}</p>
+		</a>
+  </li>
+{/foreach}
+</ul>
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar.tpl	(revision 25596)
@@ -0,0 +1,20 @@
+<ul data-role="listview">
+  <li data-icon="delete"><a href="#menubar" data-rel="close">{'Close'|@translate}</a></li>
+</ul>
+{if !empty($blocks) }
+	{foreach from=$blocks key=id item=block}
+		<div data-role="collapsible" data-inset="false" data-icon="false">
+		{if not empty($block->template)}
+		{include file=$block->template assign=the_block|@get_extent:$id}
+    {$the_block|replace:'dt':'h3'|replace:'<dd>':''|replace:'</dd>':''}
+		{else}
+		{$block->raw_content|replace:'dt':'h3'|replace:'<dd>':''|replace:'</dd>':''}
+		{/if}
+    </div>
+	{/foreach}
+{/if}
+<br>
+<ul data-role="listview">
+  <li data-role="list-divider">{'View in'|@translate}</li>
+  <li><a href="{$TOGGLE_MOBILE_THEME_URL}">{'Desktop'|@translate}</a></li>
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_categories.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_categories.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_categories.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<h3>{'Albums'|@translate}</h3>
+<ul data-role="listview">
+{foreach from=$block->data.MENU_CATEGORIES item=cat}
+  <li><a href="{$cat.URL}" {if $cat.IS_UPPERCAT}rel="up"{/if} title="{$cat.TITLE}">{$cat.NAME}</a>
+  {if $cat.count_images > 0}<span class="ui-li-count">{$cat.count_images}</span>{/if}
+  </li>
+{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_identification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_identification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_identification.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<h3>{'Identification'|@translate}</h3>
+<ul data-role="listview">
+  {if isset($U_REGISTER)}<li><a href="{$U_REGISTER}">{'Register'|@translate}</a></li>{/if}
+  {if isset($U_LOGIN)}<li><a href="{$U_LOGIN}">{'Logout'|@translate}</a></li>{/if}
+  {if isset($U_LOGOUT)}<li><a href="{$U_LOGOUT}">{'Logout'|@translate}</a></li>{/if}
+  {if isset($U_PROFILE)}<li><a href="{$U_PROFILE}">{'Customize'|@translate}</a></li>{/if}
+  {if isset($U_ADMIN)}<li><a href="{$U_ADMIN}">{'Administration'|@translate}</a></li>{/if}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_links.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_links.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_links.tpl	(revision 25596)
@@ -0,0 +1,11 @@
+<h3>{'Links'|@translate}</h3>
+<ul data-role="listview">{strip}
+		{foreach from=$block->data item=link}
+			<li>
+				<a href="{$link.URL}" class="external"{if isset($link.new_window)} onclick="window.open(this.href, '{$link.new_window.NAME}','{$link.new_window.FEATURES}'); return false;"{/if}>
+				{$link.LABEL}
+				</a>
+			</li>
+		{/foreach}
+	{/strip}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_menu.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_menu.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_menu.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<h3>{'Menu'|@translate}</h3>
+<ul data-role="listview">
+  {foreach from=$block->data item=link}
+		{if is_array($link)}
+			<li><a href="{$link.URL}" title="{$link.TITLE}"{if isset($link.REL)} {$link.REL}{/if}>{$link.NAME}</a>{if isset($link.COUNTER)}<span class="ui-li-count">{$link.COUNTER}</span>{/if}</li>
+		{/if}
+	{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_specials.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_specials.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_specials.tpl	(revision 25596)
@@ -0,0 +1,8 @@
+<h3>{'Specials'|@translate}</h3>
+<ul data-role="listview">
+		{foreach $block->data as $key=>$link}
+    {if in_array($key, array("favorites","most_visited","best_rated","recent_pics","recent_cats","random")) }
+		<li><a href="{$link.URL}" title="{$link.TITLE}"{if isset($link.REL)} {$link.REL}{/if}>{$link.NAME}</a></li>
+    {/if}
+		{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/menubar_tags.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/menubar_tags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/menubar_tags.tpl	(revision 25596)
@@ -0,0 +1,12 @@
+<h3>{'Related tags'|@translate}</h3>
+<ul data-role="listview">
+  {foreach from=$block->data item=tag}
+		<li><a class="tagLevel{$tag.level}" href=
+			{if isset($tag.U_ADD)}
+				"{$tag.U_ADD}" title="{$tag.counter|@translate_dec:'%d photo is also linked to current tags':'%d photos are also linked to current tags'}" rel="nofollow">+
+			{else}
+				"{$tag.URL}" title="{'display photos linked to this tag'|@translate}">
+			{/if}
+				{$tag.name}</a></li>
+		{/foreach}
+</ul>
Index: /tags/2.6.0RC1/themes/smartpocket/template/navigation_bar.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/navigation_bar.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/navigation_bar.tpl	(revision 25596)
@@ -0,0 +1,14 @@
+{capture}{$navbar.pages|@end}{/capture}
+<div data-role="footer" class="ui-bar ui-bar-a" style="text-align:center;">
+<div data-role="controlgroup" data-type="horizontal">
+{strip}
+  {if isset($navbar.URL_PREV)}
+  <a href="{$navbar.URL_PREV}" rel="prev" data-role="button" data-icon="arrow-l" data-inline="true">{'Previous'|@translate}</a>
+  {/if}
+  <a href="#" data-role="button" data-inline="true">{$navbar.CURRENT_PAGE} / {$navbar.pages|@key}&nbsp;</a>
+  {if isset($navbar.URL_NEXT)}
+  <a href="{$navbar.URL_NEXT}" rel="next" data-role="button" data-icon="arrow-r" data-iconpos="right" data-inline="true">{'Next'|@translate}</a>
+  {/if}
+{/strip}
+</div>
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/notification.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/notification.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/notification.tpl	(revision 25596)
@@ -0,0 +1,13 @@
+{html_head} 
+<link rel="alternate" type="application/rss+xml" title="{'Photos only RSS feed'|@translate}" href="{$U_FEED_IMAGE_ONLY}"> 
+<link rel="alternate" type="application/rss+xml" title="{'Complete RSS feed (photos, comments)'|@translate}" href="{$U_FEED}"> 
+{/html_head}
+{include file='infos_errors.tpl'}
+<div data-role="content">
+  <ul data-role="listview" data-inset="true">
+    <li data-role="list-divider">{'Notification'|@translate}</li>
+    <li>{'The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'|@translate}</li>
+    <li><a href="{$U_FEED_IMAGE_ONLY}">{'Photos only RSS feed'|@translate}</a></li>
+    <li><a href="{$U_FEED}">{'Complete RSS feed (photos, comments)'|@translate}</a></li>
+  </ul>
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/picture.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/picture.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/picture.tpl	(revision 25596)
@@ -0,0 +1,175 @@
+{if isset($errors) or not empty($infos)}
+{include file='infos_errors.tpl'}
+{/if}
+<div data-role="content">
+<ul data-role="listview" data-inset="true">
+	<li data-role="list-divider">{$SECTION_TITLE}<span class="browsePathSeparator">{$LEVEL_SEPARATOR}</span>{$current.TITLE}</li>
+</ul>
+{$ELEMENT_CONTENT}
+
+{include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+
+{if isset($COMMENT_IMG)}
+<p class="imageComment">{$COMMENT_IMG}</p>
+{/if}
+
+<ul data-role="listview" data-inset="true" id="PictureInfo">
+{strip}
+	{if $display_info.author and isset($INFO_AUTHOR)}
+	<li id="Author" class="imageInfo">
+		<dt>{'Author'|@translate}</dt>
+		<dd>{$INFO_AUTHOR}</dd>
+	</li>
+	{/if}
+	{if $display_info.created_on and isset($INFO_CREATION_DATE)}
+	<li id="datecreate" class="imageInfo">
+		<dt>{'Created on'|@translate}</dt>
+		<dd>{$INFO_CREATION_DATE}</dd>
+	</li>
+	{/if}
+	{if $display_info.posted_on}
+	<li id="datepost" class="imageInfo">
+		<dt>{'Posted on'|@translate}</dt>
+		<dd>{$INFO_POSTED_DATE}</dd>
+	</li>
+	{/if}
+	{if $display_info.dimensions and isset($INFO_DIMENSIONS)}
+	<li id="Dimensions" class="imageInfo">
+		<dt>{'Dimensions'|@translate}</dt>
+		<dd>{$INFO_DIMENSIONS}</dd>
+	</li>
+	{/if}
+	{if $display_info.file}
+	<li id="File" class="imageInfo">
+		<dt>{'File'|@translate}</dt>
+		<dd>{$INFO_FILE}</dd>
+	</li>
+	{/if}
+	{if $display_info.filesize and isset($INFO_FILESIZE)}
+	<li id="Filesize" class="imageInfo">
+		<dt>{'Filesize'|@translate}</dt>
+		<dd>{$INFO_FILESIZE}</dd>
+	</li>
+	{/if}
+	{if $display_info.tags and isset($related_tags)}
+	<li id="Tags" class="imageInfo">
+		<dt>{'Tags'|@translate}</dt>
+		<dd>
+		{foreach from=$related_tags item=tag name=tag_loop}{if !$smarty.foreach.tag_loop.first}, {/if}<a href="{$tag.URL}">{$tag.name}</a>{/foreach}
+		</dd>
+	</li>
+	{/if}
+	{if $display_info.categories and isset($related_categories)}
+	<li id="Categories" class="imageInfo">
+		<dt>{'Albums'|@translate}</dt>
+		<dd>
+			<ul>
+				{foreach from=$related_categories item=cat}
+				<li>{$cat}</li>
+				{/foreach}
+			</ul>
+		</dd>
+	</li>
+	{/if}
+	{if $display_info.visits}
+	<li id="Visits" class="imageInfo">
+		<dt>{'Visits'|@translate}</dt>
+		<dd>{$INFO_VISITS}</dd>
+	</li>
+	{/if}
+
+{if $display_info.rating_score and isset($rate_summary)}
+	<li id="Average" class="imageInfo">
+		<dt>{'Rating score'|@translate}</dt>
+		<dd>
+		{if $rate_summary.count}
+			<span id="ratingScore">{$rate_summary.score}</span> <span id="ratingCount">({$rate_summary.count|@translate_dec:'%d rate':'%d rates'})</span>
+		{else}
+			<span id="ratingScore">{'no rate'|@translate}</span> <span id="ratingCount"></span>
+		{/if}
+		</dd>
+	</li>
+{/if}
+
+{if isset($rating)}
+	<li id="rating" class="imageInfo">
+		<dt>
+			<span id="updateRate">{if isset($rating.USER_RATE)}{'Update your rating'|@translate}{else}{'Rate this photo'|@translate}{/if}</span>
+		</dt>
+			<form action="{$rating.F_ACTION}" method="post" id="rateForm" style="margin:0;">
+			<div data-role="controlgroup" data-type="horizontal" align="center">
+			{foreach from=$rating.marks item=mark name=rate_loop}
+			{if isset($rating.USER_RATE) && $mark==$rating.USER_RATE}
+				<input type="button" name="rate" value="{$mark}" class="rateButtonSelected" title="{$mark}">
+			{else}
+				<input type="submit" name="rate" value="{$mark}" class="rateButton" title="{$mark}">
+			{/if}
+			{/foreach}
+			</div>
+			</form>
+	</li>
+{/if}
+</ul>
+
+{if isset($metadata)}
+<ul data-role="listview" data-inset="true">
+{foreach from=$metadata item=meta}
+	<li><h3>{$meta.TITLE}</h3>
+	{foreach from=$meta.lines item=value key=label}
+		<div class="imageInfo">
+			<dt>{$label}</dt>
+			<dd>{$value}</dd>
+		</div>
+	{/foreach}</li>
+{/foreach}
+</dl>
+{/if}
+</ul>
+
+{if isset($COMMENT_COUNT)}
+<ul data-role="listview" data-inset="true">
+	<h3>{$COMMENT_COUNT|@translate_dec:'%d comment':'%d comments'}</h3>
+
+	<div id="pictureComments">
+		{if isset($comment_add)}
+		<div data-role="collapsible">
+			<h3>{'Add a comment'|@translate}</h3>
+			<form method="post" action="{$comment_add.F_ACTION}" id="addComment">
+				{if $comment_add.SHOW_AUTHOR}
+					<p><label for="author">{'Author'|@translate}{if $comment_add.AUTHOR_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
+					<p><input type="text" name="author" id="author" value="{$comment_add.AUTHOR}"></p>
+				{/if}
+				{if $comment_add.SHOW_EMAIL}
+					<p><label for="email">{'Email address'|@translate}{if $comment_add.EMAIL_MANDATORY} ({'mandatory'|@translate}){/if} :</label></p>
+					<p><input type="text" name="email" id="email" value="{$comment_add.EMAIL}"></p>
+				{/if}
+				<p><label for="website_url">{'Website'|@translate} :</label></p>
+				<p><input type="text" name="website_url" id="website_url" value="{$comment_add.WEBSITE_URL}"></p>
+				<p><label for="contentid">{'Comment'|@translate} ({'mandatory'|@translate}) :</label></p>
+				<p><textarea name="content" id="contentid" rows="5" cols="50">{$comment_add.CONTENT}</textarea></p>
+				<p><input type="hidden" name="key" value="{$comment_add.KEY}">
+					<input type="submit" value="{'Submit'|@translate}"></p>
+			</form>
+		</div>
+		{/if}
+		{if isset($comments)}
+		<ul data-role="listview" data-inset="true">
+			{if (($COMMENT_COUNT > 2) || !empty($navbar))}
+				<div id="pictureCommentNavBar">
+					{if $COMMENT_COUNT > 2}
+						<a href="{$COMMENTS_ORDER_URL}#comments" rel="nofollow" class="commentsOrder">{$COMMENTS_ORDER_TITLE}</a>
+					{/if}
+					{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
+				</div>
+			{/if}
+			{include file='comment_list.tpl' from="picture"}
+		</ul>
+		{/if}
+	</div>
+
+</ul>
+{/if}{*comments*}
+
+{include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'}
+
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/picture_content.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/picture_content.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/picture_content.tpl	(revision 25596)
@@ -0,0 +1,2 @@
+<img src="{$current.selected_derivative->get_url()}" style="max-width:100%" alt="{$ALT_IMG}" id="theMainImage" title="{if isset($COMMENT_IMG)}{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{else}{$current.TITLE|@replace:'"':' '} - {$ALT_IMG}{/if}">
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/picture_nav_buttons.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/picture_nav_buttons.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/picture_nav_buttons.tpl	(revision 25596)
@@ -0,0 +1,13 @@
+<div data-role="controlgroup" data-type="horizontal" align="center">
+{strip}
+{if isset($previous)}
+	 <a href="{$previous.U_IMG}" rel="prev" data-role="button" data-icon="arrow-l"  data-iconpos="notext" data-inline="true">{'Previous'|@translate}</a>
+{/if}
+{if isset($U_UP) and !isset($slideshow)}
+	<a href="{$U_UP}" rel="prev" data-role="button" data-icon="arrow-u" data-inline="true">{'Thumbnails'|@translate}</a>
+{/if}
+{if isset($next)}
+	<a href="{$next.U_IMG}" rel="next" data-role="button" data-icon="arrow-r"  data-iconpos="notext" data-iconpos="right" data-inline="true">{'Next'|@translate}</a>
+{/if}
+{/strip}
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/profile.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/profile.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/profile.tpl	(revision 25596)
@@ -0,0 +1,4 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+{$PROFILE_CONTENT}
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/profile_content.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/profile_content.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/profile_content.tpl	(revision 25596)
@@ -0,0 +1,61 @@
+<form method="post" name="profile" action="{$F_ACTION}" id="profile" class="properties">
+
+  <div data-role="fieldcontain">
+  <label for="username">{'Username'|@translate}</label>
+  <input type="text" name="username" id="username" value="{$USERNAME}" disabled="disabled">
+  </div>
+
+  {if not $SPECIAL_USER} {* can modify password + email*}
+  <div data-role="fieldcontain">
+  <label for="mail_address">{'Email address'|@translate}</label>
+  <input type="text" name="mail_address" id="mail_address" value="{$EMAIL}">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="password">{'Password'|@translate}</label>
+  <input type="password" name="password" id="password" value="">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="use_new_pwd">{'New password'|@translate}</label>
+  <input type="password" name="use_new_pwd" id="use_new_pwd" value="">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="passwordConf">{'Confirm Password'|@translate}</label>
+  <input type="password" name="passwordConf" id="passwordConf" value="">
+  </div>
+  {/if}
+
+{if $ALLOW_USER_CUSTOMIZATION}
+  <div data-role="fieldcontain">
+  <label for="nb_image_page">{'Number of photos per page'|@translate}</label>
+  <input type="range" name="nb_image_page" id="nb_image_page" value="{$NB_IMAGE_PAGE}" min="1" max="100" />
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="language">{'Language'|@translate}</label>
+  {html_options name=language options=$language_options selected=$language_selection}
+  </div>
+{/if}
+
+
+  <div data-role="fieldcontain">
+    {if $ALLOW_USER_CUSTOMIZATION}
+    <input type="hidden" name="theme" value="{$template_selection}">
+    <input type="hidden" name="recent_period" value="{$RECENT_PERIOD}">
+    <input type="hidden" name="expand" value="{$EXPAND}">
+    <input type="hidden" name="show_nb_comments" value="{$NB_COMMENTS}">
+    <input type="hidden" name="show_nb_hits" value="{$NB_HITS}">
+    {/if}
+    <input type="hidden" name="redirect" value="{$REDIRECT}">
+    <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
+    <input class="submit" type="submit" name="validate" value="{'Submit'|@translate}">
+    <input class="submit" type="reset" name="reset" value="{'Reset'|@translate}">
+    {if $ALLOW_USER_CUSTOMIZATION}
+    <input class="submit" type="submit" name="reset_to_default" value="{'Reset to default values'|@translate}">
+    {/if}
+  </div>
+
+</form>
+
Index: /tags/2.6.0RC1/themes/smartpocket/template/redirect.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/redirect.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/redirect.tpl	(revision 25596)
@@ -0,0 +1,9 @@
+<div>
+	{$REDIRECT_MSG}
+</div>
+
+<p style="margin: 2em">
+	<a href="{$page_refresh.U_REFRESH}">
+		{'Click here if your browser does not automatically forward you'|@translate}
+	</a>
+</p>
Index: /tags/2.6.0RC1/themes/smartpocket/template/register.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/register.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/register.tpl	(revision 25596)
@@ -0,0 +1,38 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+<h3>{'Register'|@translate}</h3>
+<form method="post" action="{$F_ACTION}" class="properties" name="register_form">
+
+  <div data-role="fieldcontain">
+  <label for="login">* {'Username'|@translate}</label>
+  <input type="text" name="login" id="login" value="{$F_LOGIN}">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="password">* {'Password'|@translate}</label>
+  <input type="password" name="password" id="password">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="password_conf">* {'Confirm Password'|@translate}</label>
+  <input type="password" name="password_conf" id="password_conf">
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="mail_address">{if $obligatory_user_mail_address}* {/if}{'Email address'|@translate}</label>
+  <input type="text" name="mail_address" id="mail_address" value="{$F_EMAIL}" >
+  </div>
+
+  <div data-role="fieldcontain">
+  <label for="send_password_by_mail">{'Send my connection settings by email'|@translate}</label>
+  <input type="checkbox" name="send_password_by_mail" id="send_password_by_mail" value="1" checked="checked">
+  </div>
+
+  <div data-role="fieldcontain">
+		<input type="hidden" name="key" value="{$F_KEY}" >
+    <input class="submit" type="submit" name="submit" value="{'Register'|@translate}">
+    <input class="submit" type="reset" value="{'Reset'|@translate}">
+  </div>
+
+</form>
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/search.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/search.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/search.tpl	(revision 25596)
@@ -0,0 +1,65 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">
+  <ul data-role="listview" data-inset="true">
+      <li data-role="list-divider">{'Search'|@translate}</li>
+  </ul>
+
+
+<form class="filter" method="post" name="search" action="{$F_SEARCH_ACTION}">
+<fieldset data-role="controlgroup">
+  <legend>{'Filter'|@translate}</legend>
+  <div data-role="fieldcontain">
+    <label for="search_allwords">{'Search for words'|@translate}</label>
+    <input type="text" id="search_allwords" style="width: 300px" name="search_allwords" size="30">
+  </div>
+  
+  <input type="radio" name="mode" id="mode_and" value="AND" checked="checked">
+  <label for="mode_and">{'Search for all terms'|@translate}</label>
+  <input type="radio" name="mode" id="mode_or" value="OR">
+  <label for="mode_or">{'Search for any term'|@translate}</label>
+  <div data-role="fieldcontain">
+    <label for="search_author">{'Search for Author'|@translate}</label>
+    <input type="text" style="width: 300px" name="search_author" id="search_author" size="30">
+  </div>
+</fieldset>
+
+{if isset($TAG_SELECTION)}
+<fieldset data-role="controlgroup">
+  <legend>{'Search tags'|@translate}</legend>
+  {$TAG_SELECTION}
+</fieldset>
+
+<fieldset data-role="controlgroup">
+  <input type="radio" name="tag_mode" id="tag_mode_and" value="AND" checked="checked">
+  <label for="tag_mode_and">{'All tags'|@translate}</label>
+  <input type="radio" name="tag_mode" id="tag_mode_or" value="OR">
+  <label for="tag_mode_or">{'Any tag'|@translate}</label>
+</fieldset>
+{/if}
+
+<div data-role="fieldcontain">
+  <legend>{'Search in albums'|@translate}</legend>
+  <label for="categoryList">{'Albums'|@translate}
+    <select class="categoryList" id="categoryList" name="cat[]" multiple="multiple" data-native-menu="false">
+      {html_options options=$category_options selected=$category_options_selected}
+    </select>
+  </label>
+  <fieldset data-role="controlgroup">
+  <legend>{'Search in sub-albums'|@translate}</legend>
+    <input type="radio" name="subcats-included" value="1" id="subcats-included-yes" checked="checked">
+    <label for="subcats-included-yes">{'Yes'|@translate}</label>
+    <input type="radio" name="subcats-included" id="subcats-included-no" value="0">
+    <label for="subcats-included-no">{'No'|@translate}</label>
+  </fieldset>
+</div>
+<p>
+  <input class="submit" type="submit" name="submit" value="{'Submit'|@translate}">
+  <input class="submit" type="reset" value="{'Reset'|@translate}">
+</p>
+</form>
+
+<script type="text/javascript"><!--
+document.search.search_allwords.focus();
+//--></script>
+
+</div> <!-- content -->
Index: /tags/2.6.0RC1/themes/smartpocket/template/tags.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/tags.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/tags.tpl	(revision 25596)
@@ -0,0 +1,15 @@
+{include file='infos_errors.tpl'}
+<div data-role="content">{if isset($tags)}
+<ul data-role="listview" data-inset="true" data-filter="true">
+	<li data-role="list-divider">{'Tags'|@translate}</li>
+  {foreach from=$tags item=tag}
+	<li><a href="{$tag.URL}" title="{$tag.counter|@translate_dec:'%d photo':'%d photos'}">{$tag.name}</a><span class="ui-li-count">{$tag.counter|@translate_dec:'%d photo':'%d photos'}</span></li>
+	{/foreach}
+</ul>
+{elseif isset($letters)}
+<ul data-role="listview" data-inset="true">
+	{foreach from=$letters item=letter}{foreach from=$letter.tags item=tag}
+	<li><a href="{$tag.URL}" title="{$tag.counter|@translate_dec:'%d photo':'%d photos'}">{$tag.name}</a><span class="ui-li-count">{$tag.counter|@translate_dec:'%d photo':'%d photos'}</span></li>
+	{/foreach}{/foreach}
+</ul>{/if}
+</div>
Index: /tags/2.6.0RC1/themes/smartpocket/template/thumbnails.tpl
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/template/thumbnails.tpl	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/template/thumbnails.tpl	(revision 25596)
@@ -0,0 +1,33 @@
+{if !empty($thumbnails)}
+{combine_script id='klass' path='themes/smartpocket/js/klass.min.js'}
+{combine_script id='photoswipe' path='themes/smartpocket/js/code.photoswipe.jquery.min.js' require='klass,jquery.mobile'}
+{combine_script id='smartpocket' path='themes/smartpocket/js/smartpocket.js' require='photoswipe'}
+{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
+{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{footer_script}
+  var var_loop = {if $smartpocket.loop}true{else}false{/if}, var_autohide = {$smartpocket.autohide}, var_trad = "{'More Information'|@translate}", var_thumb_width={$thumbnail_derivative_params->max_width()};
+{/footer_script}
+
+<ul class="thumbnails">
+{foreach from=$thumbnails item=thumbnail}{strip}
+{assign var=derivative value=$pwg->derivative($thumbnail_derivative_params, $thumbnail.src_image)}
+{if isset($page_selection[$thumbnail.id]) and !isset($thumbnail.representative_ext)}
+  <li>
+    <a href="{$pwg->derivative_url($picture_derivative_params, $thumbnail.src_image)}" data-picture-url="{$thumbnail.URL}" rel="external">
+     <img {if !$derivative->is_cached()}data-{/if}src="{$derivative->get_url()}" alt="{$thumbnail.TN_ALT}">
+    </a>
+  </li>
+{elseif isset($thumbnail.representative_ext)}
+  <li>
+    <a href="{$thumbnail.URL}" target="_blank" onClick="window.location='{$thumbnail.URL}'">
+     <img {if !$derivative->is_cached()}data-{/if}src="{$derivative->get_url()}" alt="{$thumbnail.TN_ALT}">
+    </a>
+  </li>
+{else}
+  <li style="display:none;">
+    <a href="{$pwg->derivative_url($picture_derivative_params, $thumbnail.src_image)}" rel="external"></a>
+  </li>
+{/if}
+{/strip}{/foreach}
+</ul>
+{/if}
Index: /tags/2.6.0RC1/themes/smartpocket/theme.css
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/theme.css	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/theme.css	(revision 25596)
@@ -0,0 +1,44 @@
+@import "jquery.mobile.css";
+@import "photoswipe.css";
+
+.title { margin: 10px; text-align: center; }
+.title .ui-btn { margin-top: -5px; }
+. { float: right; }
+.home_button { float: left; }
+.pwg_footer h6 { margin: 8px; text-align:right;}
+
+.errors  h3, .infos  h3{ float:left; margin-top:8px; }
+.errors div, .infos div { float:right; margin-top:4px; }
+.errors p, .infos p { clear:both; font-size:85%; margin-bottom:8px; }
+
+.ui-icon-profil { background-image: url("images/profil.png"); background-color: transparent; }
+
+.ui-content { overflow: hidden; }
+.ui-field-contain, .ui-br { padding: 5px; border: 0 !important; }
+
+.thumbnails { list-style: none; padding: 0; margin: 0; }
+.thumbnails:after { clear: both; content: "."; display: block; height: 0; visibility: hidden; }
+.thumbnails li { float: left;  }
+.thumbnails li a { display: block; margin: 5px; }
+.thumbnails li img { display: block; width: 100%; height: auto; }
+#more_link {
+  color: #FFFFFF;
+  display: table-cell;
+  font-size: 1.1em;
+  text-decoration: none;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.ui-panel-inner > .ui-listview {
+ margin: -15px -15px 0;
+}
+.ui-li-desc {
+  text-overflow: clip;
+  white-space: normal;
+}
+#PictureInfo  {
+  font-size: 0.8em;
+}
+#PictureInfo * {
+  font-size: 1em;
+}
Index: /tags/2.6.0RC1/themes/smartpocket/themeconf.inc.php
===================================================================
--- /tags/2.6.0RC1/themes/smartpocket/themeconf.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/themes/smartpocket/themeconf.inc.php	(revision 25596)
@@ -0,0 +1,102 @@
+<?php
+/*
+Theme Name: Smart Pocket
+Version: 2.5.1
+Description: Mobile theme.
+Theme URI: http://piwigo.org/ext/extension_view.php?eid=599
+Author: P@t
+Author URI: http://piwigo.org
+*/
+
+$themeconf = array(
+  'mobile' => true,
+);
+
+// Need upgrade?
+global $conf;
+include(PHPWG_THEMES_PATH.'smartpocket/admin/upgrade.inc.php');
+
+
+// Redirect if page is not compatible with mobile theme
+/*if (!in_array(script_basename(), array('index', 'register', 'profile', 'identification', 'ws', 'admin')))
+  redirect(duplicate_index_url());
+*/
+
+//Retrive all pictures on thumbnails page
+add_event_handler('loc_index_thumbnails_selection', 'sp_select_all_thumbnails');
+
+function sp_select_all_thumbnails($selection)
+{
+  global $page, $template;
+
+  $template->assign('page_selection', array_flip($selection));
+
+  return $page['items'];
+}
+
+// Retrive all categories on thumbnails page
+add_event_handler('loc_end_index_category_thumbnails', 'sp_select_all_categories');
+
+function sp_select_all_categories($selection)
+{
+  global $tpl_thumbnails_var;
+  return $tpl_thumbnails_var;
+}
+
+// Get better derive parameters for screen size
+$type = IMG_LARGE;
+if (!empty($_COOKIE['screen_size']))
+{
+  $screen_size = explode('x', $_COOKIE['screen_size']);
+  $derivative_params = new ImageStdParams;
+  $derivative_params->load_from_db();
+
+  foreach ($derivative_params->get_all_type_map() as $type => $map)
+  {
+    if (max($map->sizing->ideal_size) >= max($screen_size) and min($map->sizing->ideal_size) >= min($screen_size))
+      break;
+  }
+}
+
+$this->assign('picture_derivative_params', ImageStdParams::get_by_type($type));
+$this->assign('thumbnail_derivative_params', ImageStdParams::get_by_type(IMG_SQUARE));
+
+//------------------------------------------------------------- mobile version & theme config
+add_event_handler('init', 'mobile_link');
+
+function mobile_link()
+{
+  global $template, $conf;
+  $config = unserialize( $conf['smartpocket'] );
+  $template->assign( 'smartpocket', $config );
+  if ( !empty($conf['mobile_theme']) && (get_device() != 'desktop' || mobile_theme()))
+  {
+    $template->assign(array(
+                            'TOGGLE_MOBILE_THEME_URL' => add_url_params(duplicate_index_url(),array('mobile' => mobile_theme() ? 'false' : 'true')),
+      ));
+  }
+}
+
+
+if ( !function_exists( 'add_menu_on_public_pages' ) ) { 
+  if ( defined('IN_ADMIN') and IN_ADMIN ) return false; 
+  add_event_handler('loc_after_page_header', 'add_menu_on_public_pages', 20); 
+
+  function  add_menu_on_public_pages() { 
+    if ( function_exists( 'initialize_menu') ) return false; # The current page has already the menu  
+    global $template, $page, $conf; 
+    if ( isset($page['body_id']) and $page['body_id']=="thePicturePage" ) 
+    {	 	 
+      $template->set_filenames(array( 
+            'add_menu_on_public_pages' => dirname(__FILE__) . '/template/add_menu_on_public_pages.tpl', 
+      )); 
+      include_once(PHPWG_ROOT_PATH.'include/menubar.inc.php'); 
+      $template->parse('add_menu_on_public_pages');
+    }
+     
+     
+  } 
+} 
+
+
+?>
Index: /tags/2.6.0RC1/tools/fill_history.pl
===================================================================
--- /tags/2.6.0RC1/tools/fill_history.pl	(revision 25596)
+++ /tags/2.6.0RC1/tools/fill_history.pl	(revision 25596)
@@ -0,0 +1,336 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use Getopt::Long;
+use DBI;
+use File::Basename;
+use Time::Local;
+use List::Util qw/shuffle min/;
+
+my %opt;
+GetOptions(
+    \%opt,
+    qw/dbname=s dbuser=s dbpass=s prefix=s
+       total=i start_date=s end_date=s
+       help/
+   );
+
+if (defined($opt{help}))
+{
+  print <<FIN;
+
+Fill the user comments table of Piwigo.
+
+Usage: pwg_fill_comments.pl --dbname=<database_name>
+                            --dbuser=<username>
+                            --dbpass=<password>
+                            --tagfile=<tags filename>
+                            [--prefix=<tables prefix>]
+                            [--help]
+
+--dbname, --dbuser and --dbpass are connexion parameters.
+
+--tagfile
+
+--prefix : determines the prefix for your table names.
+
+--help : show this help
+
+FIN
+
+  exit(0);
+}
+
+my $usage = "\n\n".basename($0)." --help for help\n\n";
+
+foreach my $option (qw/dbname dbuser dbpass start_date end_date/) {
+  if (not exists $opt{$option}) {
+    die 'Error: '.$option.' is a mandatory option', $usage;
+  }
+}
+
+$opt{prefix} = 'piwigo_' if (not defined $opt{prefix});
+my $dbh = DBI->connect(
+    'DBI:mysql:'.$opt{dbname},
+    $opt{dbuser},
+    $opt{dbpass}
+);
+
+my $query;
+my $sth;
+
+
+# retrieve all available users
+$query = '
+SELECT id
+  FROM '.$opt{prefix}.'users
+';
+my @user_ids = keys %{ $dbh->selectall_hashref($query, 'id') };
+
+# set a list of IP addresses for each users
+my %user_IPs = ();
+foreach my $user_id (@user_ids) {
+    for (1 .. 1 + int rand 5) {
+        push(
+            @{ $user_IPs{$user_id} },
+            join(
+                '.',
+                map {1 + int rand 255} 1..4
+            )
+        );
+    }
+}
+
+# use Data::Dumper; print Dumper(\%user_IPs); exit();
+
+# start and end dates
+my ($year,$month,$day,$hour,$min,$sec)
+     = ($opt{start_date} =~ m/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/);
+my $start_unixtime = timelocal(0,0,0,$day,$month-1,$year);
+
+($year,$month,$day,$hour,$min,$sec)
+     = ($opt{end_date} =~ m/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/);
+my $end_unixtime = timelocal(0,0,0,$day,$month-1,$year);
+
+# "tags from image" and "images from tag"
+$query = '
+SELECT image_id, tag_id
+  FROM '.$opt{prefix}.'image_tag
+';
+my %image_tags = ();
+my %tag_images = ();
+my %related_tag_of = ();
+my @tags = ();
+$sth = $dbh->prepare($query);
+$sth->execute();
+while (my $row = $sth->fetchrow_hashref()) {
+    push(
+        @{$image_tags{$row->{image_id}}},
+        $row->{tag_id}
+    );
+
+    push(
+        @{$tag_images{$row->{tag_id}}},
+        $row->{image_id}
+    );
+
+    push (
+        @tags,
+        $row->{tag_id}
+    );
+}
+
+# foreach my $tag_id (keys %tag_images) {
+#     printf(
+#         "tag %5u: %5u images\n",
+#         $tag_id,
+#         scalar @{$tag_images{$tag_id}}
+#     );
+# }
+# exit();
+
+# use Data::Dumper; print Dumper(\%tag_images); exit();
+
+# categories from image_id
+$query = '
+SELECT image_id, category_id
+  FROM '.$opt{prefix}.'image_category
+';
+my %image_categories = ();
+my %category_images =();
+my %categories = ();
+$sth = $dbh->prepare($query);
+$sth->execute();
+while (my $row = $sth->fetchrow_hashref()) {
+    push(
+        @{$image_categories{$row->{image_id}}},
+        $row->{category_id}
+    );
+
+    push(
+        @{$category_images{$row->{category_id}}},
+        $row->{image_id}
+    );
+
+    $categories{ $row->{category_id} }++;
+}
+
+my @images = keys %image_categories;
+my @categories = keys %categories;
+
+# use Data::Dumper;
+# print Dumper(\%image_categories);
+
+my @sections = (
+    'categories',
+#     'tags',
+#     'search',
+#     'list',
+#     'favorites',
+#     'most_visited',
+#     'best_rated',
+#     'recent_pics',
+#     'recent_cats',
+);
+
+my @inserts = ();
+
+USER : foreach my $user_id (@user_ids) {
+    print 'user_id: ', $user_id, "\n";
+
+    my $current_unixtime = $start_unixtime;
+    my @IPs = @{ $user_IPs{$user_id} };
+
+    VISIT : foreach my $visit_num (1..100_000) {
+        print 'visit: ', $visit_num, "\n";
+        my @temp_inserts = ();
+        my $IP = (@IPs)[int rand @IPs];
+        my $current_page = 0;
+        my $visit_size = 10 + int rand 90;
+        $current_unixtime+= 86_400 + int rand(86_400 * 30);
+
+        my $section = $sections[int rand scalar @sections];
+        # print 'section: ', $section, "\n";
+
+        push(
+            @temp_inserts,
+            {
+                section => $section,
+            }
+        );
+
+        if ($section eq 'categories') {
+            CATEGORY : foreach my $category_id (
+                (shuffle @categories)[1..int rand scalar @categories]
+            ) {
+                # print 'category: ', $category_id, "\n";
+                push(
+                    @temp_inserts,
+                    {
+                        category_id => $category_id,
+                    }
+                );
+
+                my @images = @{$category_images{$category_id}};
+                IMAGE : foreach my $image_id (
+                    (shuffle @images)[1..min(10, scalar @images)]
+                ) {
+                    push(
+                        @temp_inserts,
+                        {
+                            category_id => $category_id,
+                            image_id => $image_id,
+                        }
+                    );
+                }
+            }
+        }
+
+        if ($section eq 'tags') {
+            # TODO
+        }
+
+        # transfert @temp_inserts to @inserts
+        print 'temp_insert size: ', scalar @temp_inserts, "\n";
+        foreach my $temp_insert (@temp_inserts) {
+            $current_unixtime+= 5 + int rand 25;
+            next VISIT if ++$current_page == $visit_size;
+            last VISIT if $current_unixtime >= $end_unixtime;
+
+            my $date = unixtime_to_mysqldate($current_unixtime);
+            my $time = unixtime_to_mysqltime($current_unixtime);
+
+            my ($year, $month, $day) = split '-', $date;
+            my ($hour) = split ':', $time;
+
+            $temp_insert->{date} = $date;
+            $temp_insert->{time} = $time;
+            $temp_insert->{year} = $year;
+            $temp_insert->{month} = $month;
+            $temp_insert->{day} = $day;
+            $temp_insert->{hour} = $hour;
+            $temp_insert->{IP} = $IP;
+            $temp_insert->{section} = $section;
+            $temp_insert->{user_id} = $user_id;
+
+            push(@inserts, $temp_insert);
+        }
+    }
+}
+
+@inserts = sort {
+    $a->{date} cmp $b->{date}
+    or $a->{time} cmp $b->{time}
+} @inserts;
+
+if (scalar @inserts) {
+    my @columns =
+        qw/
+              date time year month day hour
+              user_id IP
+              section category_id image_id
+          /;
+
+    my $question_marks_string = '(';
+    $question_marks_string.= join(
+        ',',
+        map {'?'} @columns
+    );
+    $question_marks_string.= ')';
+
+    my $query = '
+INSERT INTO '.$opt{prefix}.'history
+  ('.join(', ', @columns).')
+  VALUES
+';
+    $query.= join(
+        ',',
+        map {$question_marks_string} (1 .. scalar @inserts)
+    );
+    $query.= '
+';
+
+    # print $query, "\n";
+
+    my @values = ();
+
+    foreach my $insert (@inserts) {
+        push(
+            @values,
+            map {
+                $insert->{$_}
+            } @columns
+        );
+    }
+
+    $sth = $dbh->prepare($query);
+    $sth->execute(@values)
+        or die 'cannot execute insert query';
+}
+
+sub unixtime_to_mysqldate {
+    my ($unixtime) = @_;
+
+    ($sec,$min,$hour,$day,$month,$year) = localtime($unixtime);
+
+    return sprintf(
+        '%d-%02d-%02d',
+        $year+1900,
+        $month+1,
+        $day,
+    );
+}
+
+sub unixtime_to_mysqltime {
+    my ($unixtime) = @_;
+
+    ($sec,$min,$hour,$day,$month,$year) = localtime($unixtime);
+
+    return sprintf(
+        '%d:%d:%d',
+        $hour,
+        $min,
+        $sec
+    );
+}
Index: /tags/2.6.0RC1/tools/index.php
===================================================================
--- /tags/2.6.0RC1/tools/index.php	(revision 25596)
+++ /tags/2.6.0RC1/tools/index.php	(revision 25596)
@@ -0,0 +1,30 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /tags/2.6.0RC1/tools/language/translation_validated.inc.php
===================================================================
--- /tags/2.6.0RC1/tools/language/translation_validated.inc.php	(revision 25596)
+++ /tags/2.6.0RC1/tools/language/translation_validated.inc.php	(revision 25596)
@@ -0,0 +1,653 @@
+<?php
+$validated_keys = array(
+  'af_ZA' => array(
+	'IP: %s',
+	'IP',
+	'IPTC Metadata',
+	'Albums',
+	'Album',
+	'%d Kb',
+	'in %d sub-album',
+	'in %d sub-albums',
+	'Admin: %s',
+	'Album: %s',
+	'letters',
+	'EXIF Metadata',
+	),
+
+  'ar_SA' => array(
+	'IP: %s',
+	'IP',
+	'the wiki',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'bg_BG' => array(
+	'N/A',
+	'IP: %s',
+	),
+	
+  'cs_CZ' => array(
+	'Album',
+	'IP: %s',
+	'Album: %s',
+	'IP',
+	'EXIF Metadata',
+	'IPTC Metadata',
+	),
+	
+  'da_DK' => array(
+ 	'%d Kb',
+	'%d hit',
+	'%d hits',
+	'Connection settings',
+	'Login',
+	'Display',
+	'Filter',
+	'Links',
+	'N/A',
+	'Password',
+	'Quick connect',
+	'RSS feed',
+	'Reset',
+	'Tag',
+	'Tags',
+	'Webmaster',
+	'Administration',
+	'caddie',
+	'download',
+	'Logout',
+	'Powered by',
+	'Auto login',
+	'slideshow',
+	'SQL queries in',
+	'Thumbnails',
+	'Menu',
+	'IP: %s',
+	'Browser: %s',
+	'Email: %s',
+	'Admin: %s',
+	'Rank',
+	'cloud',
+	'Pause of slideshow',
+	'Database type',
+	'Installation',
+	'Webmaster login',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Webmaster password',
+	'%d tag',
+	'%d tags',
+	'Caddie',
+	'Database',
+	'Elements',
+	'Form',
+	'Gallery URL',
+	'Path',
+	'Permalink',
+	'Permalinks',
+	'Plugins',
+	'Position',
+	'Rating',
+	'Representant',
+	'Site manager',
+	'Status',
+	'Version',
+	'Main',
+	'File',
+	'High definition',
+	'email',
+	'Send',
+	'Remote',
+	'Piwigo administration',
+	'GD version',
+	'[Simulation]',
+	'Upload',
+	'user_status_admin',
+	'user_status_webmaster',
+	'IP',
+	'Element',
+	'Element type',
+	'Hoverbox display',
+	'Level 8',
+	'Plugins up to date',
+	'Support',
+	'Piwigo Administration',
+	'Piwigo version',
+	'Original templates',
+	'Downloads',
+	'Download',
+	'Hit',
+	'Resize',
+	'Miscellaneous',
+	'Virtual Links',
+	'SQL queries',
+	'Edit',
+	'%d rates',
+	'Rating score',
+	'Password Reset',
+	'Invalid key',
+	'EXIF Metadata',
+	'IPTC Metadata',
+	),	
+
+  'de_DE' => array(
+ 	'%d Kb',
+	'Filter',
+	'Links',
+	'Tag',
+	'Tags',
+	'Webmaster',
+	'Administration',
+	'Thumbnails',
+	'IP: %s',
+	'Browser: %s',
+	'Name',
+	'Permalink',
+	'Permalinks',
+	'Plugins',
+	'Position',
+	'Status',
+	'Version',
+	'High definition',
+	'Parameter',
+	'private',
+	'Thumbnail',
+	'Simulation',
+	'Upload',
+	'user_status_admin',
+	'user_status_webmaster',
+	'IP',
+	'Privacy level',
+	'Demo',
+	'Support',
+	'Bugs',
+	'Downloads',
+	'Installation',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Upgrade',
+	'Download,',
+	'Piwigo Uploader',
+	'[Simulation]',
+	'Album',
+	'Album: %s',
+	'Remote',
+	),
+
+  'el_GR' => array(
+	'%d Kb',
+	'Email: %s',
+	'IP: %s',
+	'Powered by',
+	),
+
+  'es_AR' => array(
+	'%d Kb',
+	'Webmaster',
+	'IP: %s',
+	'No',
+	),
+
+  'es_ES' => array(
+    'Tag',
+    'Tags',
+	'IP: %s',
+	'Email: %s',
+	'No',
+	'%d tag',
+	'%d tags',
+	'Plugins',
+	'is_high_disabled',
+	'nbm_content_goto_2',
+	'nbm_content_hello_2',
+	'site_local',
+	'update_simulation_title',
+	'IP',
+	'Level 8',
+	'DEMO',
+	'BUGS',
+	'step1_host_info',
+	'Albums',
+	'General',
+	'Local',
+	'Demo',
+	'Bugs',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Piwigo Uploader',
+	),
+	
+  'fr_FR' => array(
+    'Dimensions',
+    'Identification',
+    'Notification',
+    'Tag',
+    'Tags',
+    'admin',
+    'identification',
+    'redirect_msg',
+    'search_date_from',
+    'title_menu',
+    'IP: %s',
+    'Email: %s',
+    '%d element',
+    '%d elements',
+    '%d association',
+    '%d associations',
+    '%d tag',
+    '%d tags',
+    'Actions',
+    'Description',
+    'Informations',
+    'Maintenance',
+    'Options',
+    'Plugins',
+    'Position',
+    'Validation',
+    'Version',
+    'config',
+    'Date',
+    'instructions',
+    'is_high_disabled',
+    'nbm_content_goto_2',
+    'nbm_content_hello_2',
+    'nbm_item_notification',
+    'nbm_send_options',
+    'permissions',
+    'public',
+    'site_local',
+    'update_simulation_title',
+    'IP',
+    'image',
+    'section',
+    'tags',
+    'high',
+    'c13y_Correction',
+    'Level 1',
+    'Level 8',
+    'FORUM',
+    'EXTENSIONS',
+    'WIKI / DOC',
+    'Installation',
+    'step1_host_info',
+	'Administration',
+	'Redirection...',
+	'Menu',
+	'%d photo',
+	'%d photos',
+	'Configuration',
+	'Instructions',
+	'Permissions',
+	'Local',
+	'[Simulation]',
+	'Section',
+	'Correction',
+	'Support',
+	'Extensions',
+	'Documentation',
+	'Photos',
+	'photo',
+	'pixels',
+	'Piwigo Uploader',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'email',
+	'Albums',
+	'Album',
+	'Menu Management',
+	'Action',
+	'Simulation',
+    ),
+	
+  'he_IL' => array(
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'hr_HR' => array(
+	'%d Kb',
+	'Filter',
+	'Tag',
+	'Webmaster',
+	'IP: %s',
+	'%d tag',
+	'user_status_webmaster',
+	'IP',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'hu_HU' => array(
+	'Album',
+	'Album: %s',
+	),
+
+  'is_IS' => array(
+	'%d Kb',
+	'N/A',
+	'IP: %s',
+	'Admin: %s',
+	),
+	
+  'it_IT' => array(
+	'Album',
+    'Album: %s',
+    'Browser: %s',
+	'Database',
+	'Directory',
+	'Download',
+	'Downloads',
+	'email',
+	'Email',
+	'Email: %s',
+	'File',
+	'Home',
+	'high',
+	'Host',
+	'IP',
+	'IP: %s',
+	'Links',
+	'Logout',
+	'Menu',
+	'N/A',
+	'No',
+	'Password',
+	'Permalink',
+	'Permalinks',
+	'pixels',
+	'Piwigo Uploader',
+	'Plugin',
+	'Plugins',
+	'Tag',
+	'Tags',
+	'%d tag',
+	'%d tags',
+	'Tools',
+	'user_status_webmaster',
+	'Webmaster',
+	'in %d sub-album',
+	),
+	
+  'ja_JP' => array(
+ 	'About',
+	'Since',
+	'Powered by',
+ 	'IP: %s',
+	'IP',
+	'Sent by',
+	'%d Kb',
+	'',
+	),
+	
+  'lv_LV' => array(
+ 	'%d Kb',
+	'N/A',
+	'IP: %s',
+	'IP',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+
+  'nl_NL' => array(
+ 	'%d Kb',
+	'Filter',
+	'Help',
+	'Links',
+	'RSS feed',
+	'Reset',
+	'Tag',
+	'Tags',
+	'Week %d',
+	'download',
+	'Powered by',
+	'Auto login',
+	'Contact',
+	'SQL queries in',
+	'Menu',
+	'IP: %s',
+	'Browser: %s',
+	'Email: %s',
+	'Piwigo Help',
+	'%d tag',
+	'%d tags',
+	'Batch management',
+	'Database',
+	'Permalink',
+	'Permalinks',
+	'Plugins',
+	'Representant',
+	'Site manager',
+	'Status',
+	'email',
+	'Parameter',
+	'Parameters',
+	'Remote site',
+	'test',
+	'Remote',
+	'unit mode',
+	'Upload',
+	'IP',
+	'Level 8',
+	'Demo',
+	'Hits',
+	'Downloads',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Upgrade',
+	'SQL queries',
+ 	'letters',
+	'This author removed the comment with id %d',
+	'Database type',
+	'Sorry!',
+	'Hope to see you back soon.',
+	'Hit',
+	'pixels',
+	'Download',
+	'Piwigo Uploader',
+	'Download,',
+	'Compact',
+	'Updates',
+	'ERROR',
+	'Piwigo Update',
+	'Dump Database',
+	'Start Upload',
+	),
+	
+  'no_NO' => array(
+ 	'IP: %s',
+	'Browser: %s',
+	'Email: %s',
+	'Admin: %s',
+	'Pause of slideshow',
+	'Album',
+	'Filter',
+	'N/A',
+	'Webmaster',
+	'%d Kb',
+	'representative',
+	'slideshow',
+	'Album: %s',
+	'Album results for',
+	'%d tag',
+	'Database',
+	'Permalink',
+	'Representant',
+	'Representative',
+	'Status',
+	'Main',
+	'email',
+	'Parameter',
+	'Send',
+	'test',
+	'status',
+	'user_status_admin',
+	'user_status_webmaster',
+	'IP',
+	'Element',
+	'Tags',
+	'Element type',
+	'Database type',
+	'Host',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'pl_PL' => array(
+ 	'%d Kb',
+	'RSS feed',
+	'Webmaster',
+	'IP: %s',
+	'Tag',
+	'Powered by',
+	'Email: %s',
+	'Admin: %s',
+	'%d tag',
+	'Status',
+	'test',
+	'status',
+	'user_status_admin',
+	'user_status_webmaster',
+	'localhost, sql.multimania.com, toto.freesurf.fr',	
+	'IP',		
+	'Menu',			
+	'Album',
+	),
+
+  'pt_BR' => array(
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'pt_PT' => array(
+	'%d Kb',
+	'Links',
+	'Webmaster',
+	'Powered by',
+	'IP: %s',
+	'Email: %s',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Permalinks',
+	'Plugins',
+	'Local',
+	'user_status_webmaster',
+	'IP',
+	'Downloads',
+	'Download',
+	'Download,',
+	'EXIF Metadata',
+	'IPTC Metadata',
+	'Original',
+	'Zoom',
+	'',
+	),
+	
+  'ro_RO' => array(
+	'%d Kb',
+	'N/A',
+	'RSS feed',
+	'Webmaster',
+	'Calendar',
+	'Contact',
+	),
+
+  'ru_RU' => array(
+	'IP',
+	'IP: %s',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'',
+	),
+
+  'sl_SL' => array(
+	'%d Kb',
+	'Filter',
+	'N/A',
+	'caddie',
+	'IP: %s',
+	'show tag cloud',
+	'cloud',
+	),
+	
+  'sk_SK' => array(
+	'%d Kb',
+	'Album',
+	'Filter',
+	'Webmaster',
+	'IP: %s',
+	'Album: %s',
+	'test',
+	'user_status_webmaster',
+	'IP',
+	'EXIF Metadata',
+	'IPTC Metadata',
+	),
+	
+  'sr_RS' => array(
+ 	'%d Kb',
+	'Filter',
+	'Webmaster',
+	'IP: %s',
+	'user_status_admin',
+	'user_status_webmaster',
+	'IP',
+	'Element',
+	'Host',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'sv_SE' => array(
+ 	'%d association',
+	'Plugins',
+	'Position',
+	'Representant',
+	'Status',
+	'Version',
+	'High definition',
+	'test',
+	'status',
+	'Piwigo administration',
+	'GD version',
+	'user_status_webmaster',
+	'IP',
+	'Element',
+	'Piwigo Administration',
+	'Piwigo version',
+	'IP: %s',
+	'Admin: %s',
+	'Filter',
+	'Administration',
+	'%d Kb',
+	'Installation',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Album: %s',
+	'Album',
+	'Informations',
+	'EXIF Metadata',
+	'IPTC Metadata',
+	'Original',
+	'Desktop',
+	),
+	
+  'tr_TR' => array(
+ 	'%d hit',
+	'N/A',
+	'Webmaster',
+	'IP: %s',
+	'Host',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),
+	
+  'vi_VN' => array(
+	'%d Kb',
+	'Caddie',
+	'Form',
+	'Plugins',
+	'user_status_webmaster',
+	'Templates',
+	'pixels',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'Desktop',
+	),
+	
+  'zh_CN' => array(
+	'IP',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	'%d Kb',
+	),
+
+  'zh_TW' => array(
+	'IP',
+	'localhost, sql.multimania.com, toto.freesurf.fr',
+	),	
+  );
+?>
Index: /tags/2.6.0RC1/tools/metadata.php
===================================================================
--- /tags/2.6.0RC1/tools/metadata.php	(revision 25596)
+++ /tags/2.6.0RC1/tools/metadata.php	(revision 25596)
@@ -0,0 +1,97 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+$filename = 'sample.jpg';
+echo 'Informations are read from '.$filename.'<br><br><br>';
+
+/**
+ * return a cleaned IPTC value
+ *
+ * @param string value
+ * @return string
+ */
+function clean_iptc_value($value)
+{
+  // strip leading zeros (weird Kodak Scanner software)
+  while ( isset($value[0]) and $value[0] == chr(0))
+  {
+    $value = substr($value, 1);
+  }
+  // remove binary nulls
+  $value = str_replace(chr(0x00), ' ', $value);
+
+  return $value;
+}
+
+$iptc_result = array();
+$imginfo = array();
+getimagesize($filename, $imginfo);
+if (isset($imginfo['APP13']))
+{
+  $iptc = iptcparse($imginfo['APP13']);
+  if (is_array($iptc))
+  {
+    foreach (array_keys($iptc) as $iptc_key)
+    {
+      if (isset($iptc[$iptc_key][0]))
+      {
+        if ($iptc_key == '2#025')
+        {
+          $value = implode(
+            ',',
+            array_map(
+              'clean_iptc_value',
+              $iptc[$iptc_key]
+              )
+            );
+        }
+        else
+        {
+          $value = clean_iptc_value($iptc[$iptc_key][0]);
+        }
+        
+        $iptc_result[$iptc_key] = $value;
+      }
+    }
+  }
+
+  echo 'IPTC Fields in '.$filename.'<br>';
+  $keys = array_keys($iptc_result);
+  sort($keys);
+  foreach ($keys as $key)
+  {
+    echo '<br>'.$key.' = '.$iptc_result[$key];
+  }
+}
+else
+{
+  echo 'no IPTC information';
+}
+
+echo '<br><br><br>';
+echo 'EXIF Fields in '.$filename.'<br>';
+$exif = read_exif_data($filename);
+echo '<pre>';
+print_r($exif);
+echo '</pre>';
+?>
Index: /tags/2.6.0RC1/tools/missing_keys.pl
===================================================================
--- /tags/2.6.0RC1/tools/missing_keys.pl	(revision 25596)
+++ /tags/2.6.0RC1/tools/missing_keys.pl	(revision 25596)
@@ -0,0 +1,193 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use File::Find;
+
+our %used_keys = ();
+our %registered_keys = ();
+
+my $piwigo_dir = $ARGV[0]; # '/home/pierrick/public_html/piwigo/dev/trunk';
+my $type = $ARGV[1];       # common, admin, install, upgrade
+
+find(\&used_keys, $piwigo_dir);
+load_registered_keys($type);
+
+# foreach my $key (sort keys %used_keys) {
+#     # print "{".$key."}", ' is used', "\n";
+
+#     if (not defined $registered_keys{$key}) {
+#         # print "{".$key."}", ' is missing', "\n";
+#         print '$lang[\''.$key.'\'] = \''.$key.'\';', "\n";
+#     }
+# }
+
+my %ignore_keys = (
+    '%d new photo' => 1,
+    '%d new photos' => 1,
+    '%d category updated' => 1,
+    '%d categories updated' => 1,
+    '%d new comment' => 1,
+    '%d new comments' => 1,
+    '%d comment to validate' => 1,
+    '%d comments to validate' => 1,
+    '%d new user' => 1,
+    '%d new users' => 1,
+    '%d waiting element' => 1,
+    '%d waiting elements' => 1,
+    'user_status_admin' => '',
+    'user_status_generic' => '',
+    'user_status_guest' => '',
+    'user_status_normal' => '',
+    'user_status_webmaster' => '',
+    'Level 0' => '',
+    'Level 1' => '',
+    'Level 2' => '',
+    'Level 4' => '',
+    'Level 8' => '',
+    'ACCESS_0' => '',
+    'ACCESS_1' => '',
+    'ACCESS_2' => '',
+    'ACCESS_3' => '',
+    'ACCESS_4' => '',
+    'ACCESS_5' => '',
+    'month' => '',
+    'day' => '',
+    'chronology_monthly_calendar' => '',
+    'chronology_monthly_list' => '',
+    'chronology_weekly_list' => '',
+    'public' => '',
+    'private' => '',
+    'none' => '',
+    'other' => '',
+    'high' => '',
+    'Waiting page: %s' => '',
+    'Admin: %s' => '',
+    'Manage this user comment: %s' => '',
+    'Main "guest" user does not exist' => '',
+    'Main "guest" user status is incorrect' => '',
+    'Main "webmaster" user does not exist' => '',
+    'Main "webmaster" user status is incorrect' => '',
+    'Default user does not exist' => '',
+    '(!) This comment requires validation' => '',
+);
+
+
+foreach my $key (sort keys %registered_keys) {
+    if (not defined $used_keys{$key} and not defined $ignore_keys{$key}) {
+        print "{".$key."}", ' is not used anywhere', "\n";
+    }
+}
+
+sub used_keys {
+    if ($File::Find::name !~ m/(tpl|php)$/) {
+        return 0;
+    }
+
+    if ($File::Find::name =~ m{/(plugins|language|_data)/}) {
+        return 0;
+    }
+
+    if ('upgrade' eq $type) {
+        if ($File::Find::name !~ m{upgrade\.(tpl|php)$}) {
+            # return 0;
+        }
+    }
+
+    if ('install' eq $type) {
+        if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
+            return 0;
+        }
+        if ($File::Find::name !~ m{/install(\.tpl|\.php|/)}) {
+            return 0;
+        }
+    }
+
+    if ('admin' eq $type) {
+        if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
+            return 0;
+        }
+        if ($File::Find::name =~ m{/install(\.tpl|\.php|/)}) {
+            return 0;
+        }
+
+        my $is_admin = 0;
+
+        if ($File::Find::name =~ m{themes/default/template/mail}) {
+            $is_admin = 1;
+        }
+        if ($File::Find::name =~ m{/admin/}) {
+            $is_admin = 1;
+        }
+        if ($File::Find::name =~ m{/admin\.php$}) {
+            $is_admin = 1;
+        }
+
+        if (not $is_admin) {
+            return 0;
+        }
+    }
+
+    if ('common' eq $type) {
+        if ($File::Find::name =~ m{upgrade\.(tpl|php)$}) {
+            return 0;
+        }
+        if ($File::Find::name =~ m{/install(\.tpl|\.php|/)}) {
+            return 0;
+        }
+        if ($File::Find::name =~ m{/admin(/|\.php)} or $File::Find::name =~ m{themes/default/template/mail}) {
+            return 0;
+        }
+    }
+
+    if (-f) {
+        my $big_string = '';
+        open(my $fhi, '<', $File::Find::name);
+        while (<$fhi>) {
+            chomp;
+            s{//.*$}{};
+            $big_string.= $_;
+        }
+        close($fhi);
+
+        while ($big_string =~ m/\{(['"])(.+?)\1\|\@translate/g) {
+            $used_keys{$2}++;
+        }
+
+        while ($big_string =~ m/l10n \s* \( \s* (['"]) (.+?) \1 \s* \)/xg) {
+            $used_keys{$2}++;
+        }
+
+        while ($big_string =~ m/l10n_args \s* \( \s* (['"]) (.+?) \1 \s* ,/xg) {
+            $used_keys{$2}++;
+        }
+
+        while ($big_string =~ m/l10n_dec \s* \( \s* (['"]) (.+?) \1 \s* ,\s* (['"]) (.+?) \3 \s* ,/xg) {
+            $used_keys{$2}++;
+            $used_keys{$4}++;
+        }
+    }
+}
+
+sub load_registered_keys {
+    my ($type) = @_;
+
+    my %files_for_type = (
+        common  => [qw/common/],
+        admin   => [qw/common admin/],
+        install => [qw/common admin install/],
+        upgrade => [qw/common admin install upgrade/],
+    );
+
+    foreach my $file_code (@{$files_for_type{$type}}) {
+        my $filepath = $piwigo_dir.'/language/en_UK/'.$file_code.'.lang.php';
+
+        open(my $fhi, '<', $filepath);
+        while (<$fhi>) {
+            if (m/\$lang\[ \s* (['"]) (.+?) \1 \s* \]/x) {
+                $registered_keys{$2}++;
+            }
+        }
+    }
+}
Index: /tags/2.6.0RC1/tools/piwigo_remote.pl
===================================================================
--- /tags/2.6.0RC1/tools/piwigo_remote.pl	(revision 25596)
+++ /tags/2.6.0RC1/tools/piwigo_remote.pl	(revision 25596)
@@ -0,0 +1,434 @@
+#!/usr/bin/perl
+
+####
+# Usage examples
+#
+# perl piwigo_remote.pl --action=pwg.images.add --file=erwann_rocher-web.jpg --define categories=9
+
+use strict;
+use warnings;
+
+use JSON;
+use LWP::UserAgent;
+# LWP::Debug::level('+');
+use Getopt::Long;
+use Encode qw/is_utf8 decode/;
+use POSIX qw(ceil floor);
+
+my %opt = ();
+GetOptions(
+    \%opt,
+    qw/
+          action=s
+          file=s
+          original=s
+          categories=s
+          chunk_size=i
+          base_url=s
+          username=s
+          password=s
+          define=s%
+      /
+);
+
+our $ua = LWP::UserAgent->new;
+$ua->agent('Mozilla/piwigo_remote.pl 1.25');
+$ua->cookie_jar({});
+
+my %conf;
+$conf{response_format} = 'json';
+$conf{limit} = 10;
+
+my %conf_default = (
+    base_url => 'http://localhost/piwigo/2.0',
+    username => 'plg',
+    password => 'plg',
+    chunk_size => 500_000,
+);
+foreach my $conf_key (keys %conf_default) {
+    $conf{$conf_key} = defined $opt{$conf_key} ? $opt{$conf_key} : $conf_default{$conf_key}
+}
+
+$ua->default_headers->authorization_basic(
+    $conf{username},
+    $conf{password}
+);
+
+my $result = undef;
+my $query = undef;
+
+binmode STDOUT, ":encoding(utf-8)";
+
+# TODO : don't connect at each script call, use the session duration instead.
+my $form = {
+    method => 'pwg.session.login',
+    username => $conf{username},
+    password => $conf{password},
+};
+
+$result = $ua->post(
+    $conf{base_url}.'/ws.php?format=json',
+    $form
+);
+
+# print "\n", $ua->cookie_jar->as_string, "\n";
+
+if ($opt{action} eq 'pwg.images.add') {
+    use Digest::MD5::File qw/file_md5_hex/;
+
+    $form = {};
+    $form->{method} = $opt{action};
+
+    my $original = $opt{file};
+    if (defined $opt{original}) {
+        $original = $opt{original};
+    }
+
+    my $original_sum = file_md5_hex($original);
+    $form->{original_sum} = $original_sum;
+
+    send_chunks(
+        filepath => $opt{file},
+        type => 'file',
+        original_sum => $original_sum,
+    );
+    $form->{file_sum} = file_md5_hex($opt{file});
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    print "-" x 50, "\n";
+    printf("response code    : %u\n", $response->code);
+    printf("response message : %s\n", $response->message);
+    print "-" x 50, "\n";
+    print "\n";
+
+#     use Data::Dumper;
+#     print Dumper($response->content);
+#     print Dumper(from_json($response->content));
+
+    if ($response->is_success) {
+        print "upload successful\n";
+    }
+    else {
+        print Dumper($response);
+        warn 'A problem has occured during upload', "\n";
+        warn $response->decoded_content, "\n";
+        die $response->status_line;
+    }
+}
+
+if ($opt{action} eq 'pwg.images.addFile') {
+    use Digest::MD5::File qw/file_md5_hex/;
+
+    if (not defined $opt{define}{image_id}) {
+        die '--define image_id=1234 is missing';
+    }
+
+    # which file type are we going to add/update?
+    my $type = undef;
+
+    foreach my $test_type (qw/thumbnail file high/) {
+        if (defined $opt{$test_type}) {
+            $type = $test_type;
+            last;
+        }
+    }
+
+    if (not defined $type) {
+        die 'at least one of file/thumbnail/high parameters must be set';
+    }
+
+    my $type_code = typecode_from_typename($type);
+
+    send_chunks(
+        filepath => $opt{$type},
+        type => $type_code,
+        original_sum => file_md5_hex($opt{original}),
+    );
+
+    $form = {};
+    $form->{method} = $opt{action};
+    $form->{type}   = $type_code;
+    $form->{sum}    = file_md5_hex($opt{$type});
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    print "-" x 50, "\n";
+    printf("response code    : %u\n", $response->code);
+    printf("response message : %s\n", $response->message);
+    print "-" x 50, "\n";
+    print "\n";
+
+#     use Data::Dumper;
+#     print Dumper($response->content);
+#     print Dumper(from_json($response->content));
+
+    if ($response->is_success) {
+        print "upload successful\n";
+    }
+    else {
+        print Dumper($response);
+        warn 'A problem has occured during upload', "\n";
+        warn $response->decoded_content, "\n";
+        die $response->status_line;
+    }
+}
+
+if ($opt{action} eq 'pwg.tags.list') {
+    use Text::ASCIITable;
+
+    $query = pwg_ws_get_query(
+        method => 'pwg.tags.getList',
+        sort_by_counter => 'true',
+    );
+
+    $result = $ua->get($query);
+    my $tag_result = from_json($result->content);
+    my $t = Text::ASCIITable->new({ headingText => 'Tags' });
+    $t->setCols('id','counter','name');
+
+    my $tag_number = 1;
+    foreach my $tag_href (@{ $tag_result->{result}{tags} }) {
+        $t->addRow(
+            $tag_href->{id},
+            $tag_href->{counter},
+            $tag_href->{name}
+        );
+
+        last if $tag_number++ >= $conf{limit};
+    }
+    print $t;
+}
+
+if ($opt{action} eq 'pwg.tags.getAdminList') {
+    $query = pwg_ws_get_query(
+        method => 'pwg.tags.getAdminList'
+    );
+
+    $result = $ua->get($query);
+    print Dumper($result);
+    my $tags = from_json($result->content)->{result}{tags};
+
+    foreach my $tag (@{$tags}) {
+        # print join(',', keys %{$tag}), "\n"; exit();
+        printf(
+            '{%u} %s ',
+            $tag->{id},
+            $tag->{name}
+        );
+    }
+
+    print "\n";
+}
+
+if ($opt{action} eq 'pwg.categories.add') {
+    $form = {
+        method => 'pwg.categories.add',
+        name => $opt{define}{name},
+        parent => $opt{define}{parent},
+        comment => $opt{define}{comment},
+    };
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    use Data::Dumper;
+    print Dumper(from_json($response->content));
+}
+
+if ($opt{action} eq 'pwg.tags.add') {
+    $form = {
+        method => 'pwg.tags.add',
+        name => $opt{define}{name},
+    };
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    use Data::Dumper;
+    print Dumper(from_json($response->content));
+}
+
+if ($opt{action} eq 'pwg.images.exist') {
+    $form = {
+        method => $opt{action},
+    };
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    use Data::Dumper;
+    print Dumper(from_json($response->content)->{result});
+    # print Dumper($response);
+}
+
+if ($opt{action} eq 'pwg.images.checkFiles') {
+    use Digest::MD5::File qw/file_md5_hex/;
+
+    $form = {};
+    $form->{method} = $opt{action};
+
+    foreach my $type (qw/thumbnail file high/) {
+        if (defined $opt{$type}) {
+            $form->{$type.'_sum'} = file_md5_hex($opt{$type});
+        }
+    }
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    print "-" x 50, "\n";
+    printf("response code    : %u\n", $response->code);
+    printf("response message : %s\n", $response->message);
+    print "-" x 50, "\n";
+    print "\n";
+
+    use Data::Dumper;
+    print Dumper(from_json($response->content));
+}
+
+if ($opt{action} eq 'pwg.images.setInfo' or $opt{action} eq 'pwg.categories.setInfo') {
+    $form = {
+        method => $opt{action},
+    };
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    use Data::Dumper;
+    # print Dumper(from_json($response->content)->{result});
+    print Dumper($response);
+}
+
+if ($opt{action} eq 'pwg.categories.getList') {
+    $form = {
+        method => $opt{action},
+    };
+
+    foreach my $key (keys %{ $opt{define} }) {
+        $form->{$key} = $opt{define}{$key};
+    }
+
+    my $response = $ua->post(
+        $conf{base_url}.'/ws.php?format=json',
+        $form
+    );
+
+    use Data::Dumper;
+    print Dumper($response->content);
+    print Dumper(from_json($response->content)->{result});
+    print Dumper($response);
+}
+
+
+$query = pwg_ws_get_query(
+    method => 'pwg.session.logout'
+);
+$ua->get($query);
+
+sub pwg_ws_get_query {
+    my %params = @_;
+
+    my $query = $conf{base_url}.'/ws.php?format='.$conf{response_format};
+
+    foreach my $key (keys %params) {
+        $query .= '&'.$key.'='.$params{$key};
+    }
+
+    return $query;
+}
+
+sub send_chunks {
+    my %params = @_;
+
+    use MIME::Base64 qw(encode_base64);
+    use File::Slurp;
+
+    my $content = read_file($params{filepath});
+    my $content_length = length($content);
+    my $nb_chunks = ceil($content_length / $conf{chunk_size});
+
+    my $chunk_pos = 0;
+    my $chunk_id = 1;
+    while ($chunk_pos < $content_length) {
+        my $chunk = substr(
+            $content,
+            $chunk_pos,
+            $conf{chunk_size}
+        );
+        $chunk_pos += $conf{chunk_size};
+
+        my $response = $ua->post(
+            $conf{base_url}.'/ws.php?format=json',
+            {
+                method => 'pwg.images.addChunk',
+                data => encode_base64($chunk),
+                original_sum => $params{original_sum},
+                position => $chunk_id,
+                type => $params{type},
+            }
+        );
+
+        printf(
+            'chunk %05u of %05u for %s "%s"'."\n",
+            $chunk_id,
+            $nb_chunks,
+            $params{type},
+            $params{filepath}
+        );
+        if ($response->code != 200) {
+            printf("response code    : %u\n", $response->code);
+            printf("response message : %s\n", $response->message);
+        }
+
+        $chunk_id++;
+    }
+}
+
+sub typecode_from_typename {
+    my ($typename) = @_;
+
+    my $typecode = $typename;
+
+    if ('thumbnail' eq $typename) {
+        $typecode = 'thumb';
+    }
+
+    return $typecode;
+}
Index: /tags/2.6.0RC1/tools/pwg_rel_create.sh
===================================================================
--- /tags/2.6.0RC1/tools/pwg_rel_create.sh	(revision 25596)
+++ /tags/2.6.0RC1/tools/pwg_rel_create.sh	(revision 25596)
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# +--------------------------------------------------------------------------+
+# |                            pwg_rel_create.sh                             |
+# +--------------------------------------------------------------------------+
+# | author        : Pierrick LE GALL <http://le-gall.net/pierrick>           |
+# | project       : Piwigo                                                   |
+# +--------------------------------------------------------------------------+
+
+if [ $# -lt 2 ]
+then
+  echo
+  echo 'usage : '$(basename $0)' <tag> <version number>'
+  echo
+  exit 1
+fi
+
+tag=$1
+version=$2
+
+name=piwigo-$version
+
+cd /tmp
+
+if [ -e $version ]
+then
+  rm -rf $version
+fi
+mkdir $version
+cd $version
+
+svn export http://piwigo.org/svn/tags/$tag piwigo
+
+
+mkdir piwigo/_data
+touch piwigo/_data/dummy.txt
+
+mkdir piwigo/upload
+
+zip -r $name-nochmod.zip piwigo
+
+chmod -R a+w piwigo/local
+chmod a+w piwigo/_data
+chmod a+w piwigo/upload
+
+zip -r $name.zip piwigo
+
+echo cd /tmp/$version
Index: /tags/2.6.0RC1/tools/translation_analysis.php
===================================================================
--- /tags/2.6.0RC1/tools/translation_analysis.php	(revision 25596)
+++ /tags/2.6.0RC1/tools/translation_analysis.php	(revision 25596)
@@ -0,0 +1,169 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH', '../');
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+include_once( PHPWG_ROOT_PATH.'tools/language/translation_validated.inc.php' );
+$languages = array_keys(get_languages());
+sort($languages);
+
+$page['ref_compare'] = 'en_UK';
+$page['ref_default_values'] = 'en_UK';
+
+if (!isset($_GET['lang']))
+{
+  echo '<a href="?lang=all">All languages</a><br><br>';
+  echo '<ul>';
+  foreach ($languages as $language)
+  {
+    if ($page['ref_compare'] == $language)
+    {
+      continue;
+    }
+    echo '<li><a href="?lang='.$language.'">'.$language.'</a></li>';
+  }
+  echo '</ul>';
+  exit();
+}
+else if (in_array($_GET['lang'], $languages))
+{
+  $languages = array($_GET['lang']);
+}
+
+$file_list = array('common', 'admin', 'install', 'upgrade');
+
+$metalang = array();
+
+// preload reference languages
+$metalang[ $page['ref_compare'] ] = load_metalang($page['ref_compare'], $file_list);
+$metalang[ $page['ref_default_values'] ] = load_metalang($page['ref_default_values'], $file_list);
+
+foreach ($languages as $language)
+{
+  if (in_array($language, array($page['ref_compare'], $page['ref_default_values'])))
+  {
+    continue;
+  }
+  echo '<h2>'.$language.'</h2>';
+  $metalang[$language] = load_metalang($language, $file_list);
+
+  foreach ($file_list as $file)
+  {
+    if (isset($metalang[ $language ][$file]))
+    {
+      $missing_keys = array_diff(
+        array_keys($metalang[ $page['ref_compare'] ][$file]),
+        array_keys($metalang[ $language ][$file])
+        );
+
+      $output_missing = '';
+      foreach ($missing_keys as $key)
+      {
+        $output_missing.= get_line_to_translate($file, $key);
+      }
+
+      // strings not "really" translated?
+      $output_duplicated = '';
+      $output_lost = '';
+      foreach (array_keys($metalang[$language][$file]) as $key)
+      {
+        $exceptions = array('Level 0');
+        if (in_array($key, $exceptions))
+        {
+          continue;
+        }
+
+        if (isset($validated_keys[$language]) and in_array($key, $validated_keys[$language]))
+        {
+          continue;
+        }
+        
+        $local_value = $metalang[$language][$file][$key];
+        if (!isset($metalang[ $page['ref_default_values'] ][$file][$key]))
+        {
+          $output_lost.= '#'.$key.'# does not exist in the reference language'."\n";
+        }
+        else
+        {
+          $ref_value = $metalang[ $page['ref_default_values'] ][$file][$key];
+          if ($local_value == $ref_value)
+          {
+            $output_duplicated.= get_line_to_translate($file, $key);
+          }
+        }
+      }
+
+      echo '<h3>'.$file.'.lang.php</h3>';
+      
+      if ('' != $output_missing or '' != $output_duplicated)
+      {
+        $output = '';
+        if ('' != $output_missing)
+        {
+          $output.= "// missing translations\n".$output_missing;
+        }
+        if ('' != $output_duplicated)
+        {
+          $output.= "\n// untranslated yet\n".$output_duplicated;
+        }
+        echo '<textarea style="width:100%;height:250px;">'.$output.'</textarea>';
+      }
+
+      if ('' != $output_lost)
+      {
+        echo '<pre>'.$output_lost.'</pre>';
+      }
+    }
+    else
+    {
+      echo '<h3>'.$file.'.lang.php is missing</h3>';
+    }
+  }
+}
+
+function load_metalang($language, $file_list)
+{
+  global $lang, $user;
+  
+  $metalang = array();
+  foreach ($file_list as $file)
+  {
+    $lang = array();
+    $user['language'] = $language;
+    if (load_language($file.'.lang', '', array('language'=>$language, 'no_fallback'=>true)))
+    {
+      $metalang[$file] = $lang;
+    }
+  }
+  return $metalang;
+}
+
+function get_line_to_translate($file, $key)
+{
+  global $metalang, $page;
+  
+  $print_key = str_replace("'", '\\\'', $key);
+  $print_value = str_replace("'", '\\\'', $metalang[ $page['ref_default_values'] ][$file][$key]);
+  return '$'."lang['".$print_key."'] = '".$print_value."';\n";
+}
+?>
Index: /tags/2.6.0RC1/tools/triggers_list.php
===================================================================
--- /tags/2.6.0RC1/tools/triggers_list.php	(revision 25596)
+++ /tags/2.6.0RC1/tools/triggers_list.php	(revision 25596)
@@ -0,0 +1,988 @@
+<?php
+$core = array(
+array(
+  'name' => 'allow_increment_element_hit_count',
+  'type' => 'trigger_event',
+  'vars' => array('bool', 'content_not_set'),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'begin_delete_elements',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'ids'),
+  'files' => array('admin\include\functions.inc.php (delete_elements)'),
+),
+array(
+  'name' => 'blockmanager_apply',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'menublock'),
+  'files' => array('include\block.class.php (BlockManager::apply)'),
+  'infos' => 'use this trigger to modify existing menu blocks',
+),
+array(
+  'name' => 'blockmanager_prepare_display',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'this'),
+  'files' => array('include\block.class.php (BlockManager::prepare_display)'),
+),
+array(
+  'name' => 'blockmanager_register_blocks',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'menu'),
+  'files' => array('include\block.class.php (BlockManager::load_registered_blocks)'),
+  'infos' => 'use this trigger to add menu block',
+),
+array(
+  'name' => 'clean_iptc_value',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'value'),
+  'files' => array('include\functions_metadata.inc.php (clean_iptc_value)'),
+),
+array(
+  'name' => 'combined_css',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'href', 'Combinable', '$combinable'),
+  'files' => array('include\template.class.php (Template::flush)'),
+),
+array(
+  'name' => 'combined_css_postfilter',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'css'),
+  'files' => array('include\template.class.php (Template::process_css)'),
+),
+array(
+  'name' => 'combined_script',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'ret', 'string', 'script'),
+  'files' => array('include\template.class.php (Template::make_script_src)'),
+),
+array(
+  'name' => 'delete_categories',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'ids'),
+  'files' => array('admin\include\functions.inc.php (delete_categories)'),
+),
+array(
+  'name' => 'delete_elements',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'ids'),
+  'files' => array('admin\include\functions.inc.php (delete_elements)'),
+),
+array(
+  'name' => 'delete_user',
+  'type' => 'trigger_action',
+  'vars' => array('int', 'user_id'),
+  'files' => array('admin\include\functions.inc.php (delete_user)'),
+),
+array(
+  'name' => 'element_set_global_action',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'action', 'array', 'collection'),
+  'files' => array('admin\batch_manager_global.php'),
+),
+array(
+  'name' => 'format_exif_data',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'exif', 'string', 'filename', 'array', 'map'),
+  'files' => array('include\functions_metadata.inc.php (get_exif_data)'),
+),
+array(
+  'name' => 'functions_history_included',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\include\functions_history.inc.php'),
+),
+array(
+  'name' => 'functions_mail_included',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\functions_mail.inc.php'),
+),
+array(
+  'name' => 'get_admin_advanced_features_links',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'advanced_features'),
+  'files' => array('admin\maintenance.php'),
+),
+array(
+  'name' => 'get_admin_plugin_menu_links',
+  'type' => 'trigger_event',
+  'vars' => array('array', null),
+  'files' => array('admin.php'),
+  'infos' => 'use this trigger to add links into admin plugins menu',
+),
+array(
+  'name' => 'get_admins_site_links',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'plugin_links', 'int', 'site_id', 'bool', 'is_remote'),
+  'files' => array('admin\site_manager.php'),
+),
+array(
+  'name' => 'get_batch_manager_prefilters',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'prefilters'),
+  'files' => array('admin\batch_manager_global.php'),
+  'infos' => 'use this trigger to add prefilters into batch manager global',
+),
+array(
+  'name' => 'get_categories_menu_sql_where',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'where', 'bool', 'user_expand', 'bool', 'filter_enabled'),
+  'files' => array('include\functions_category.inc.php (get_categories_menu)'),
+),
+array(
+  'name' => 'get_category_preferred_image_orders',
+  'type' => 'trigger_event',
+  'vars' => array('array', null),
+  'files' => array('include\functions_category.inc.php (get_category_preferred_image_orders)'),
+),
+array(
+  'name' => 'get_download_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'url', 'array', 'element_info'),
+  'files' => array('include\functions_picture.inc.php (get_download_url)'),
+),
+array(
+  'name' => 'get_element_metadata_available',
+  'type' => 'trigger_event',
+  'vars' => array('bool', null, 'string', 'element_path'),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'get_element_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'url', 'array', 'element_info'),
+  'files' => array('include\functions_picture.inc.php (get_element_url)'),
+),
+array(
+  'name' => 'get_high_location',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'location', 'array', 'element_info'),
+  'files' => array('include\functions_picture.inc.php (get_high_location)'),
+),
+array(
+  'name' => 'get_high_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'url', 'array', 'element_info'),
+  'files' => array('include\functions_picture.inc.php (get_high_url)'),
+),
+array(
+  'name' => 'get_history',
+  'type' => 'trigger_event',
+  'vars' => array('array', null, 'array', 'page_search', 'array', 'types'),
+  'files' => array('admin\history.php'),
+),
+array(
+  'name' => 'get_image_location',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'path', 'array', 'element_info'),
+  'files' => array('include\functions_picture.inc.php (get_image_location)'),
+),
+array(
+  'name' => 'get_popup_help_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'help_content', 'string', 'page'),
+  'files' => array('admin\popuphelp.php', 'popuphelp.php'),
+),
+array(
+  'name' => 'get_pwg_themes',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'themes'),
+  'files' => array('include\functions.inc.php (get_pwg_themes)'),
+),
+array(
+  'name' => 'get_thumbnail_title',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'title', 'array', 'info'),
+  'files' => array('include\functions.inc.php (get_thumbnail_title)'),
+),
+array(
+  'name' => 'get_comments_derivative_params',
+  'type' => 'trigger_event',
+  'vars' => array('ImageStdParams', null),
+  'files' => array('comments.php'),
+  'infos' => 'New in 2.4',
+),
+array(
+  'name' => 'get_index_album_derivative_params',
+  'type' => 'trigger_event',
+  'vars' => array('ImageStdParams', null),
+  'files' => array('includecategory_cats.php', 'include\category_default.inc.php'),
+  'infos' => 'New in 2.4',
+),
+array(
+  'name' => 'get_src_image_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'url', 'SrcImage', 'this'),
+  'files' => array('include\derivative.inc.php (SrcImage::__construct)'),
+  'infos' => 'New in 2.4',
+),
+array(
+  'name' => 'get_derivative_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'url', 'ImageStdParams', null, 'SrcImage', 'this', 'string', 'rel_url'),
+  'files' => array('include\derivative.inc.php (SrcImage::url, SrcImage::get_url)'),
+  'infos' => 'New in 2.4',
+),
+array(
+  'name' => 'get_tag_alt_names',
+  'type' => 'trigger_event',
+  'vars' => array('array', null, 'array', 'raw_name'),
+  'files' => array('admin\tags.php', 'admin\include\functions.php (get_taglist)'),
+  'infos' => 'New in 2.4',
+),
+array(
+  'name' => 'get_webmaster_mail_address',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'email'),
+  'files' => array('include\functions.inc.php (get_webmaster_mail_address)'),
+  'infos' => 'New in 2.6',
+),
+array(
+  'name' => 'init',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\common.inc.php'),
+  'infos' => 'this action is called just after the common initialization, $conf, $user and $page (partial) variables are availables',
+),
+array(
+  'name' => 'invalidate_user_cache',
+  'type' => 'trigger_action',
+  'vars' => array('bool', 'full'),
+  'files' => array('admin\include\functions.inc.php (invalidate_user_cache)'),
+),
+array(
+  'name' => 'load_conf',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'condition'),
+  'files' => array('include\functions.inc.php (load_conf_from_db)'),
+  'infos' => 'New in 2.6. <b>Warning:</b> you can\'t trigger the first call done une common.inc.php. Use <i>init</i> instead.',
+),
+array(
+  'name' => 'list_check_integrity',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'this'),
+  'files' => array('admin\include\check_integrity.class.php (check_integrity::check)'),
+),
+array(
+  'name' => 'load_image_library',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'this'),
+  'files' => array('admin\include\image.class.php (pwg_image::__construct)'),
+),
+array(
+  'name' => 'load_profile_in_template',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'userdata'),
+  'files' => array('profile.php (load_profile_in_template)'),
+),
+array(
+  'name' => 'loading_lang',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\common.inc.php', 'include\functions.inc.php (redirect_html)', 'include\functions_mail.inc.php (switch_lang_to)', 'nbm.php'),
+),
+array(
+  'name' => 'loc_after_page_header',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\page_header.php'),
+),
+array(
+  'name' => 'loc_begin_about',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('about.php'),
+),
+array(
+  'name' => 'loc_begin_admin',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin.php'),
+),
+array(
+  'name' => 'loc_begin_admin_page',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin.php'),
+),
+array(
+  'name' => 'loc_begin_cat_list',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\cat_list.php'),
+),
+array(
+  'name' => 'loc_begin_cat_modify',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\cat_modify.php'),
+),
+array(
+  'name' => 'loc_begin_element_set_global',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\batch_manager_global.php'),
+),
+array(
+  'name' => 'loc_begin_element_set_unit',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\batch_manager_unit.php'),
+),
+array(
+  'name' => 'loc_begin_index',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('index.php'),
+),
+array(
+  'name' => 'loc_begin_index_category_thumbnails',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'categories'),
+  'files' => array('include\category_cats.inc.php'),
+),
+array(
+  'name' => 'loc_begin_index_thumbnails',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'pictures'),
+  'files' => array('include\category_default.inc.php'),
+),
+array(
+  'name' => 'loc_begin_page_header',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\page_header.php'),
+),
+array(
+  'name' => 'loc_begin_page_tail',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\page_tail.php'),
+),
+array(
+  'name' => 'loc_begin_picture',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'loc_begin_profile',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('profile.php'),
+),
+array(
+  'name' => 'loc_begin_password',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('password.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_register',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('register.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_search',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('search.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_tags',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('tags.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_comments',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('comments.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_identification',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('identification.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_begin_notification',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('notification.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_password',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('password.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_register',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('register.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_search',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('search.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_tags',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('tags.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_comments',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('comments.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_identification',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('identification.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_notification',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('notification.php'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'loc_end_admin',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin.php'),
+),
+array(
+  'name' => 'loc_end_cat_list',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\cat_list.php'),
+),
+array(
+  'name' => 'loc_end_cat_modify',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\cat_modify.php'),
+),
+array(
+  'name' => 'loc_end_element_set_global',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\batch_manager_global.php'),
+),
+array(
+  'name' => 'loc_end_element_set_unit',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\batch_manager_unit.php'),
+),
+array(
+  'name' => 'loc_end_index',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('index.php'),
+),
+array(
+  'name' => 'loc_end_index_category_thumbnails',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'tpl_thumbnails_var'),
+  'files' => array('include\category_cats.inc.php'),
+),
+array(
+  'name' => 'loc_end_index_thumbnails',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'tpl_thumbnails_var', 'array', 'pictures'),
+  'files' => array('include\category_default.inc.php'),
+),
+array(
+  'name' => 'loc_end_page_header',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\page_header.php'),
+),
+array(
+  'name' => 'loc_end_page_tail',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\page_tail.php'),
+),
+array(
+  'name' => 'loc_end_picture',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'loc_end_profile',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('profile.php'),
+),
+array(
+  'name' => 'loc_end_section_init',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\section_init.inc.php'),
+  'infos' => 'this action is called after section initilization, $page variable is fully defined',
+),
+array(
+  'name' => 'loc_visible_user_list',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'visible_user_list'),
+  'files' => array('admin\user_list.php'),
+),
+array(
+  'name' => 'login_failure',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'username'),
+  'files' => array('include\functions_user.inc.php (try_log_user)'),
+),
+array(
+  'name' => 'login_success',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'username'),
+  'files' => array('include\functions_user.inc.php (auto_login, try_log_user)'),
+),
+array(
+  'name' => 'nbm_event_handler_added',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('admin\notification_by_mail.php'),
+),
+array(
+  'name' => 'nbm_render_global_customize_mail_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'customize_mail_content'),
+  'files' => array('admin\notification_by_mail.php (do_action_send_mail_notification)'),
+),
+array(
+  'name' => 'nbm_render_user_customize_mail_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'customize_mail_content', 'string', 'nbm_user'),
+  'files' => array('admin\notification_by_mail.php (do_action_send_mail_notification)'),
+),
+array(
+  'name' => 'perform_batch_manager_prefilters',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'filter_sets', 'string', 'session_prefilter'),
+  'files' => array('admin\batch_manager.php'),
+),
+array(
+  'name' => 'picture_pictures_data',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'picture'),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'plugins_loaded',
+  'type' => 'trigger_action',
+  'vars' => array(),
+  'files' => array('include\functions_plugins.inc.php (load_plugins)'),
+),
+array(
+  'name' => 'pwg_log_allowed',
+  'type' => 'trigger_event',
+  'vars' => array('bool', 'do_log', 'int', 'image_id', 'string', 'image_type'),
+  'files' => array('include\functions.inc.php (pwg_log)'),
+),
+array(
+  'name' => 'register_user',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'user'),
+  'files' => array('include\functions_user.inc.php (register_user)'),
+),
+array(
+  'name' => 'register_user_check',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'errors', 'array', 'user'),
+  'files' => array('include\functions_user.inc.php (register_user)'),
+),
+array(
+  'name' => 'render_category_description',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'category_description', 'string', 'action'),
+  'files' => array('include\category_cats.inc.php', 'include\section_init.inc.php', 'include\ws_functions.inc.php (ws_categories_getList, ws_categories_getAdminList)'),
+),
+array(
+  'name' => 'render_category_literal_description',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'category_description'),
+  'files' => array('include\category_cats.inc.php'),
+),
+array(
+  'name' => 'render_category_name',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'category_name', 'string', 'location'),
+  'files' => array('admin\cat_list.php', 'include\ws_functions.inc.php (ws_categories_getList, ws_categories_getAdminList, ws_categories_move)'),
+),
+array(
+  'name' => 'render_comment_author',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'comment_author'),
+  'files' => array('admin\comments.php', 'comments.php', 'include\picture_comment.inc.php'),
+),
+array(
+  'name' => 'render_comment_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'comment_content'),
+  'files' => array('admin\comments.php', 'comments.php', 'include\picture_comment.inc.php'),
+),
+array(
+  'name' => 'render_element_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'content', 'array', 'current_picture'),
+  'files' => array('picture.php'),
+),
+array(
+  'name' => 'render_element_name',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'element_name'),
+  'files' => array('include\functions_html.inc.php (render_element_name)'),
+),
+array(
+  'name' => 'render_element_description',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'element_description', 'string', 'action'),
+  'files' => array('picture.php', 'include\functions_html.inc.php (render_element_description)'),
+),
+array(
+  'name' => 'render_lost_password_mail_content',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'message'),
+  'files' => array('password.php (process_password_request)'),
+),
+array(
+  'name' => 'render_page_banner',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'gallery_title'),
+  'files' => array('include\page_header.php'),
+),
+array(
+  'name' => 'render_tag_name',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'tag_name'),
+  'files' => array('admin\include\functions.php (get_taglist)', 'admin\tags.php', 'include\functions_tag.inc.php (get_available_tags, get_all_tags, get_common_tags)', 'index.php'),
+),
+array(
+  'name' => 'render_tag_url',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'tag_name'),
+  'files' => array('include\functions.php (tag_id_from_tag_name, create_tag)', 'admin\tags.php'),
+),
+array(
+  'name' => 'save_profile_from_post',
+  'type' => 'trigger_action',
+  'vars' => array('int', 'user_id'),
+  'files' => array('profile.php (save_profile_from_post)'),
+),
+array(
+  'name' => 'before_send_mail',
+  'type' => 'trigger_event',
+  'vars' => array('bool', 'result', 'mixed', 'to', 'array', 'arguments', 'PHPMailer', 'mail'),
+  'files' => array('include\functions_mail.inc.php (pwg_mail)'),
+),
+array(
+  'name' => 'before_parse_mail_template',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'cache_key', 'string', 'content_type'),
+  'files' => array('include\functions_mail.inc.php (pwg_mail)'),
+),
+array(
+  'name' => 'sendResponse',
+  'type' => 'trigger_action',
+  'vars' => array('string', 'encodedResponse'),
+  'files' => array('include\ws_core.inc.php (PwgServer::sendResponse)'),
+),
+array(
+  'name' => 'set_status_header',
+  'type' => 'trigger_action',
+  'vars' => array('int', 'code', 'string', 'text'),
+  'files' => array('include\functions_html.inc.php (set_status_header)'),
+),
+array(
+  'name' => 'tabsheet_before_select',
+  'type' => 'trigger_event',
+  'vars' => array('array', 'sheets', 'string', 'tabsheet_id'),
+  'files' => array('include\tabsheet.class.php (tabsheet::select)'),
+  'infos' => 'New in 2.4, use this trigger to add tabs to a tabsheets',
+),
+array(
+  'name' => 'trigger',
+  'type' => 'trigger_action',
+  'vars' => array('array', null),
+  'files' => array('include\functions_plugins.inc.php (trigger_event, trigger_action)'),
+),
+array(
+  'name' => 'user_comment_check',
+  'type' => 'trigger_event',
+  'vars' => array('string', 'comment_action', 'array', 'comm'),
+  'files' => array('include\functions_comment.inc.php (insert_user_comment, update_user_comment)'),
+  'infos' => 'use this trigger to add conditions on comment validation',
+),
+array(
+  'name' => 'user_comment_deletion',
+  'type' => 'trigger_action',
+  'vars' => array('mixed', 'comment_id'),
+  'files' => array('include\functions_comment.inc.php (delete_user_comment)'),
+  'infos' => '$comment_id is and int or an array of int',
+),
+array(
+  'name' => 'user_comment_insertion',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'comm'),
+  'files' => array('include\picture_comment.inc.php'),
+),
+array(
+  'name' => 'user_comment_validation',
+  'type' => 'trigger_action',
+  'vars' => array('mixed', 'comment_id'),
+  'files' => array('include\functions_comment.inc.php (validate_user_comment)'),
+  'infos' => '$comment_id is and int or an array of int',
+),
+array(
+  'name' => 'user_init',
+  'type' => 'trigger_action',
+  'vars' => array('array', 'user'),
+  'files' => array('include\user.inc.php'),
+),
+array(
+  'name' => 'ws_add_methods',
+  'type' => 'trigger_action',
+  'vars' => array('object', 'this'),
+  'files' => array('include\ws_core.inc.php (PwgServer::run)'),
+),
+array(
+  'name' => 'ws_invoke_allowed',
+  'type' => 'trigger_event',
+  'vars' => array('bool', null, 'string', 'methodName', 'array', 'params'),
+  'files' => array('include\ws_core.inc.php (PwgServer::invoke)'),
+),
+array(
+  'name' => 'user_logout',
+  'type' => 'trigger_action',
+  'vars' => array('int', 'user_id'),
+  'files' => array('include\functions_user.inc.php (logout_user)'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'user_login',
+  'type' => 'trigger_action',
+  'vars' => array('int', 'user_id'),
+  'files' => array('include\functions_user.inc.php (log_user)'),
+  'infos' => 'New in 2.5',
+),
+array(
+  'name' => 'try_log_user',
+  'type' => 'trigger_event',
+  'vars' => array('boolean', 'success', 'string', 'username', 'string', 'password', 'bool', 'remember_me'),
+  'files' => array('include\functions_user.inc.php (try_log_user)'),
+  'infos' => 'New in 2.5. Used by identification form to check user credentials and log user. If <i>success</i> is <i>true</i>, another login method already succeed. Return <i>true</i> if your method succeed.',
+),
+array(
+  'name' => 'combinable_preparse',
+  'type' => 'trigger_action',
+  'vars' => array('Template', 'template', 'Combinable', '$combinable', 'FileCombiner', '$combiner'),
+  'files' => array('include\template.class.php (FileCombiner::process_combinable)'),
+  'infos' => 'New in 2.6.',
+),
+);
+?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Piwigo Core Triggers</title>
+  
+  <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
+  <link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables_themeroller.css">
+  
+  <style type="text/css">
+  /* BEGIN CSS RESET
+    http://meyerweb.com/eric/tools/css/reset
+    v2.0 | 20110126 | License: none (public domain) */
+  html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code,
+  del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li,
+  fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, 
+  figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video
+  {margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;}
+
+  article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display:block;}
+  body {line-height:1.1;}
+  blockquote, q {quotes:none;}
+  blockquote:before, blockquote:after, q:before, q:after {content:'';content:none;}
+  table {border-collapse:collapse;border-spacing:0;}
+  /* END CSS RESET */
+  
+  html {font-family:"Corbel","Lucida Grande","Verdana",sans-serif;color:#222;font-size:13px;}
+
+  a {color:#247EBF;text-decoration:none;}
+  a:hover {color:#EB9C39;border-bottom-width:1px;border-style:dotted;text-shadow:1px 1px 0 #ddd;}
+
+  h1 {color:#fff;font-size:26px;padding:10px 15px;text-shadow:1px 1px 0 #999;
+    background:#45484d;background:linear-gradient(to bottom, #45484d 0%,#333333 100%);
+  }
+
+  #the_header {border-bottom:1px solid #cdcdcd;margin-bottom:1px;}
+  #the_footer {background:#EAEAEA;border-top:1px solid #cdcdcd;padding:10px;clear:both;}
+
+  #the_page {padding:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAH0lEQVQImSXHMQEAMAwCMOrfK0jIjuVL2gLBzyHJtgd7wBdU3Vt/7AAAAABJRU5ErkJggg==);}
+  
+  tfoot input {width:80%;}
+  tfoot .search_input {color:#999;}
+  tfoot select.search_input option:not(:first-child) {color:#222;}
+  </style>
+</head>
+
+<body>
+
+<div id="the_header">
+  <h1>Piwigo Core Triggers</h1>
+</div> <!-- the_header -->
+
+<div id="the_page">
+  <table id="list">
+  <thead>
+    <tr>
+      <th>Name</th>
+      <th>Type</th>
+      <th>Variables</th>
+      <th>Usage in the core</th>
+      <th>Commentary</th>
+    </tr>
+  </thead>
+  <tbody>
+
+  <?php  
+    foreach ($core as $trigger)
+    {
+      echo '
+    <tr>
+      <td>'.$trigger['name'].'</td>
+      <td>'.$trigger['type'].'</td>
+      <td>';
+      for ($i=0; $i<count($trigger['vars']); $i+=2)
+      {
+        if ($i>0) echo ', ';
+        echo $trigger['vars'][$i].' '.(!empty($trigger['vars'][$i+1])?'<i>$'.$trigger['vars'][$i+1].'</i>':null);
+      }
+      echo '
+      </td>
+      <td>';
+      $f=1;
+      foreach ($trigger['files'] as $file)
+      {
+        if (!$f) echo '<br>'; $f=0;
+        echo preg_replace('#\((.+)\)#', '(<i>$1</i>)', $file);
+      }
+      echo '
+      </td>
+      <td>'.@$trigger['infos'].'</td>
+    </tr>';
+    }
+  ?>
+
+  </tbody>
+  <tfoot>
+    <tr>
+      <td><input type="text" value="Name" class="search_input"></td>
+      <td>
+        <select class="search_input">
+          <option value="">Type</option>
+          <option value="trigger_action">trigger_action</option>
+          <option value="trigger_event">trigger_event</option>
+        </select>
+      </td>
+      <td><input type="text" value="Variables" class="search_input"></td>
+      <td><input type="text" value="Usage" class="search_input"></td>
+      <td><input type="text" value="Commentary" class="search_input"></td>
+    </tr>
+  </tfoot>
+  </table>
+</div> <!-- the_page -->
+
+<div id="the_footer">
+  Copyright &copy; 2002-2013 <a href="http://piwigo.org">Piwigo Team</a>
+</div> <!-- the_footer -->
+
+
+<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
+  
+<script type="text/javascript">
+var oTable = $('#list').dataTable({
+  "bJQueryUI": true,
+  "aaSorting": [ [0,'asc'] ],
+  "sPaginationType": "full_numbers",
+  "aLengthMenu": [[10, 30, 50, 70, 90, -1], [10, 30, 50, 70, 90, "All"]],
+  "iDisplayLength": 30,
+  "oLanguage": {
+      "sSearch": "Search all columns :"
+  }
+});
+
+// search input
+$("tfoot td").each(function (i) {
+  $('select', this).change(function () {
+    oTable.fnFilter($(this).val(), i);
+  });
+  $('input', this).keyup(function () {
+    oTable.fnFilter($(this).val(), i);
+  });
+});
+
+// search helpers
+var asInitVals = new Array();
+$("tfoot input").each(function (i) {
+  asInitVals[i] = $(this).val();
+});
+ 
+$("tfoot input").focus(function () {
+  if (this.className == "search_input") {
+    $(this).removeClass("search_input");
+    $(this).val("");
+  }
+});
+ 
+$("tfoot input").blur(function (i) {
+  if ($(this).val() == "") {
+    $(this).addClass("search_input");
+    $(this).val(asInitVals[$("tfoot input").index(this)]);
+  }
+});
+
+$("tfoot select").change(function () {
+  if ($(this).val() == "") {
+    $(this).addClass("search_input");
+  }
+  else {
+    $(this).removeClass("search_input");
+  }
+});
+</script>
+
+</body>
+</html>
Index: /tags/2.6.0RC1/tools/ws.htm
===================================================================
--- /tags/2.6.0RC1/tools/ws.htm	(revision 25596)
+++ /tags/2.6.0RC1/tools/ws.htm	(revision 25596)
@@ -0,0 +1,552 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+  <meta charset="utf-8">
+  <title>Piwigo web API (web-services) explorer</title>
+  
+  <link rel="stylesheet" href="http://cdn.jsdelivr.net/tiptip/1.3/tipTip.css">
+  
+  <style>
+  /* BEGIN CSS RESET
+    http://meyerweb.com/eric/tools/css/reset
+    v2.0 | 20110126 | License: none (public domain) */
+  html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code,
+  del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li,
+  fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, 
+  figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video
+  {margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;}
+
+  article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display:block;}
+  body {line-height:1.1;}
+  blockquote, q {quotes:none;}
+  blockquote:before, blockquote:after, q:before, q:after {content:'';content:none;}
+  table {border-collapse:collapse;border-spacing:0;}
+  /* END CSS RESET */
+
+  html {font-family:"Corbel","Lucida Grande","Verdana",sans-serif;color:#222;font-size:13px;}
+
+  a {color:#247EBF;text-decoration:none;}
+  a:hover {color:#EB9C39;border-bottom-width:1px;border-style:dotted;text-shadow:1px 1px 0 #ddd;}
+  
+  blockquote {border:1px solid #cdcdcd;background:#F9F9F9;padding:8px;}
+  hr {margin:10px 30px;color:#fff;}
+  ul {margin-left:25px;}
+  p {margin:8px 0;}
+
+  h1 {color:#fff;font-size:26px;padding:10px 15px;text-shadow:1px 1px 0 #999;
+    background:#45484d;background:linear-gradient(to bottom, #45484d 0%,#333333 100%);
+  }
+  h2 {color:#fff;font-size:20px;padding:5px 10px;text-shadow:1px 1px 0 #555;
+    background:#f2a841;background:linear-gradient(to bottom, #f2a841 0%,#ef6b13 100%);
+  }
+  h2#errorWrapper {color:#F42C00;font-weight:normal;
+    background:#eaeaea;background:linear-gradient(to bottom, #eaeaea 0%, #afafaf 100%);
+  }
+  h3 {display:inline-block;padding:5px 10px;color:#555;font-weight:bold;text-align:center;
+    border-radius:8px 8px 0 0;text-shadow:1px 1px 0 #bbb;
+    background:#f2f2f2;background:linear-gradient(to bottom, #f2f2f2 0%,#cecece 100%);
+  }
+
+  #the_header {border-bottom:1px solid #cdcdcd;margin-bottom:1px;}
+  #the_footer {background:#EAEAEA;border-top:1px solid #cdcdcd;padding:10px;clear:both;}
+
+  #the_methods {width:250px;float:left;border-style:solid;border-color:#cdcdcd;border-width:1px 1px 0 0;
+    background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAH0lEQVQImSXHMQEAMAwCMOrfK0jIjuVL2gLBzyHJtgd7wBdU3Vt/7AAAAABJRU5ErkJggg==);
+  }
+  #methodsList {font-size:1.1em;margin:5px 0 10px 10px;list-style:none;}
+  #methodsList li:before {content:"\203A\00A0";font-weight:bold;color:#EB9C39;font-size:1.1em;}
+  #methodsList li:hover:before {content:"\00A0\203A";}
+
+  #the_page {margin-left:252px;border-style:solid;border-color:#cdcdcd;border-width:1px 0 0 1px;}
+  #the_content {padding:10px;}
+
+  #methodParams {margin-right:230px;}
+  #methodParams thead td {background:#DEE3E9;font-weight:bold;padding:2px 5px;}
+  #methodParams td {padding:2px;border:1px solid #cdcdcd;vertical-align:middle;}
+  #methodParams tbody tr:nth-child(even) {background:#f7f7f7;}
+  #methodParams tbody tr td:first-child {font-family:monospace;font-size:0.95em;}
+  #methodParams td.mini {width:0px;text-align:center;}
+  #methodParams tfoot {font-size:0.95em;}
+  #methodParams td.input {text-align:center;}
+  #methodParams td.input input[type="text"] {width:97%;font-size:0.9em;background:#f7f7f7;border:1px solid #ccc;border-radius:2px;}
+  #methodParams td.input input[type="text"]:hover, #methodParams td.input input[type="text"]:focus {border-color:#C7E2F1;border-top-color:#96BCD7;background:#fff;}
+  #methodParams .type {display:inline-block;width:16px;height:16px;font-size:12px;line-height:16px;background:#ddd;border-radius:8px;font-weight:bold;text-align:center;color:#222;}
+  #methodParams .subtype {vertical-align:super;}
+
+  #testForm {float:right;}
+  #testForm td {padding:2px 0;}
+  #testForm tr:last-child td {padding:8px 0 5px 0;}
+  #testForm blockquote {width:200px;}
+  
+  #introMessage {font-size:1.1em;}
+  #urlForm {margin-bottom:10px;}
+
+  a.button {color:#fff;padding:3px 8px;border:1px solid #91bb5c;font-size:0.9em;margin-right:3px;display:inline-block;
+    border-radius:5px;text-shadow:1px 1px 0 #666;
+    background:#84bb3c;background:linear-gradient(to bottom, #84bb3c 0%, #3f5a1d 100%);
+  }
+  a.button:hover {color:#E5FF00;}
+  
+  .methodInfo {float:right;display:inline-block;width:16px;height:16px;font-size:12px;line-height:16px;background:#555;border-radius:8px;font-family:"Times New Roman",sans-serif;font-style:italic;font-weight:bold;text-align:center;color:#fff;}
+  .methodInfo:hover {border:none;text-shadow:none;background:#888;cursor:pointer;color:#fff;}
+  #tiptip_content { font-size:12px; }
+  
+  #iframeWrapper {width:100%;height:300px;padding:3px 3px 20px 3px;background:#F9F9F9;border:1px solid #cdcdcd;overflow:hidden;position:relative;}
+  iframe {width:100%;height:100%;background:#fff;}
+  
+  div.onlys {background:#faa;color:#fff;border:1px solid #f22;padding:.25em .5em;display:table;border-radius:4px;margin-bottom:0.5em;}
+  </style>
+  
+</head>
+
+<body>
+<a name="top"></a>
+
+<div id="the_header">
+  <h1>Piwigo web API (web-services) explorer</h1>
+</div> <!-- the_header -->
+
+<div id="the_methods">
+  <h2>Available methods</h2>
+  
+  <ul id="methodsList">
+  </ul>
+</div> <!-- the_methods -->
+
+<div id="the_page">
+  <h2 id="methodName" style="display:none;"></h2>
+  <h2 id="errorWrapper" style="display:none;"></h2>
+  
+  <div id="the_content">
+    <form id="urlForm" style="display:none;">
+      <input type="text" name="ws_url" size="60">
+      <input type="submit" value="Go!">
+    </form>
+    
+    <blockquote id="introMessage">
+      <p>
+        <b>API = Application Programming Interface.</b><br>
+        This is the way other applications can communicate with Piwigo. This feature is also know as Web Services.
+      </p>
+
+      <p>Examples:</p>
+      <ul>
+        <li>Wordpress (web blog software) can display random photos from a Piwigo gallery in its sidebar</li>
+        <li>Lightroom (photo management software for desktop) can create albums and upload photos to Piwigo</li>
+      </ul>
+
+      <p>
+        This page lists all API methods available on your Piwigo installation, part of the Piwigo core or added by third-party plugins.
+        For each method you can consult required and optional parameters, and even test them in direct live!
+      </p>
+
+      <p>
+        For more information you can consult our Wiki <a href="http://piwigo.org/doc/doku.php?id=dev:webapi:start" target="_blank">Piwigo Web API</a> and <a href="http://piwigo.org/forum" target="_blank">our forums</a>.
+      </p>
+    </blockquote> <!-- introMessage -->
+
+
+    <form id="methodWrapper" style="display:none;">
+      <div id="methodDescription" style="display:none;">
+        <h3>Description</h3>
+        <blockquote>
+        </blockquote>
+        <br>
+      </div> <!-- methodDescription -->
+      
+      <div id="testForm">
+        <h3>Test</h3>
+        <blockquote>
+          <table>
+            <tr>
+              <td>Request format :</td>
+              <td>
+                <select id="requestFormat">
+                  <option value="get" selected>GET</option>
+                  <option value="post">POST</option>
+                </select>
+              </td>
+            </tr>
+            <tr>
+              <td>Response format :</td>
+              <td>
+                <select id="responseFormat">
+                  <option value="rest" selected>REST (xml)</option>
+                  <option value="json">JSON</option>
+                  <option value="php">PHP serial</option>
+                  <option value="xmlrpc">XML RPC</option>
+                </select>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <a href="#" class="button" id="invokeMethod">INVOKE</a>
+                <a href="#" class="button" id="invokeMethodBlank">INVOKE (new window)</a>
+              </td>
+            </tr>
+          </table>
+        </blockquote>
+      </div> <!-- testForm -->
+      
+      <div id="methodParams">
+        <h3>Method parameters</h3>
+        <table>
+          <thead>
+            <tr>
+              <td style="width:150px;">Name</td>
+              <td class="mini">Extra</td>
+              <td class="mini">Type</td>
+              <td style="width:300px;">Value</td>
+              <td class="mini">Send</td>
+            </tr>
+          </thead>
+          
+          <tbody>
+          </tbody>
+          
+          <tfoot>
+            <tr>
+              <td colspan="5">
+                <b>*</b>: required, <b>?</b>: optional, <b>[]</b>: can be an array (use a pipe | to split values)<br>
+                <b>B</b>: boolean, <b>I</b>: integer, <b>F</b>: float, <b>+</b>: positive, <b>&oslash;</b>: not null
+              </td>
+            </tr>
+          </tfoot>
+        </table>
+      </div> <!-- methodParams -->
+      
+      <br><br>
+      
+      <h3>Result</h3>
+      <div id="iframeWrapper">
+        <iframe src="" id="invokeFrame" name="invokeFrame"></iframe>
+        <a href="#iframe-bottom" id="increaseIframe"><b>&darr;</b> increase height</a> &#8226;
+        <a href="#iframe-bottom" id="decreaseIframe"><b>&uarr;</b> decrease height</a>
+        <a name="iframe-bottom"></a>
+      </div>
+    </form> <!-- iframeWrapper -->
+    
+    <!-- hidden form for POST submition -->
+    <form method="post" action="" target="" id="invokeForm" style="display:none;"></form>
+    
+  </div> <!-- the_content -->
+
+</div> <!-- the_page -->
+
+<div id="the_footer">
+  Copyright &copy; 2002-2013 <a href="http://piwigo.org">Piwigo Team</a>
+</div> <!-- the_footer -->
+
+<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
+<script src="https://cdn.jsdelivr.net/tiptip/1.3/jquery.tipTip.minified.js"></script>
+
+<script>  
+// global vars
+var cachedMethods = new Array;
+var ws_url = "http://";
+
+// automatic detection of ws_url
+match = document.location.toString().match(/^(https?.*\/)tools\/ws\.html?/);
+if (match==null) {
+  askForUrl();
+}
+else {
+  ws_url = match[1]+'ws.php';
+  getMethodList();
+}
+
+// manual set of ws_url
+$("#urlForm").submit(function() {
+  ws_url = $(this).children("input[name='ws_url']").val();
+  getMethodList();
+  return false;
+});
+
+// invoke buttons
+$("#invokeMethod").click(function() {
+  invokeMethod($("#methodName").html(), false);
+  return false;
+});
+$("#invokeMethodBlank").click(function() {
+  invokeMethod($("#methodName").html(), true);
+  return false;
+});
+
+// resizable iframe
+$("#increaseIframe").click(function() {
+  $("#iframeWrapper").css('height', $("#iframeWrapper").height()+100);
+  adaptHeight();
+});
+$("#decreaseIframe").click(function() {
+  if ($("#iframeWrapper").height() > 200) {
+    $("#iframeWrapper").css('height', $("#iframeWrapper").height()-100);
+    adaptHeight();
+  }
+});
+
+// mask all wrappers
+function resetDisplay() {
+  $("#errorWrapper").hide();
+  $("#methodWrapper").hide();
+  $("#methodName").hide();
+  $("#urlForm").hide();
+  $("#methodDescription blockquote").empty();
+  $("#methodDescription").hide();
+  $("#invokeFrame").attr('src','');
+}
+
+// give the same size to methods list and main page
+function adaptHeight()
+{
+  $("#the_page").css('height', 'auto');
+  $("#the_methods").css('height', 'auto');
+  
+  min_h = $(window).height()-$("#the_header").outerHeight()-$("#the_footer").outerHeight()-3;
+  h = Math.max(min_h, Math.max($("#the_methods").height(), $("#the_page").height()));
+  
+  $("#the_page").css('height', h);
+  $("#the_methods").css('height', h);
+}
+
+// display error wrapper
+function displayError(error) {
+  resetDisplay();
+  $("#errorWrapper").html("<b>Error:</b> "+ error).show();
+  adaptHeight();
+}
+
+// display ws_url form
+function askForUrl() {
+  displayError("can't contact web-services, please give absolute url to 'ws.php'");
+  if ($("#urlForm input[name='ws_url']").val() == "") {
+    $("#urlForm input[name='ws_url']").val(ws_url);
+  }
+  $("#urlForm").show();
+}
+
+// parse Piwigo JSON
+function parsePwgJSON(json) {
+  try {
+    resp = jQuery.parseJSON(json);
+    if (resp==null | resp.result==null | resp.stat==null | resp.stat!='ok') {
+      throw new Error();
+    }
+  }
+  catch(e) {
+    displayError("unable to parse JSON string");
+    resp = {"stat": "ko", "result": "null"};
+  }
+ 
+  return resp.result;
+}
+
+// fetch methods list
+function getMethodList() {
+  resetDisplay();
+  
+  $.ajax({
+    type: "GET",
+    url: ws_url,
+    data: { format: "json", method: "reflection.getMethodList" }
+  }).done(function(result) {
+    result = parsePwgJSON(result);
+    
+    if (result!=null) {
+      methods = result.methods;
+      
+      var ml = '';
+      for (var i=0; i<methods.length; i++)
+      {
+        ml += '<li><a href="#top">'+ methods[i]+'</a></li>';
+      }
+      $("#methodsList").html(ml).show();
+      
+      adaptHeight();
+      
+      // trigger method selection
+      $("#methodsList li a").click(function() {
+        selectMethod($(this).html());
+      });
+    }
+  }).error(function(jqXHR, textStatus, errorThrown) {
+    askForUrl();
+  });
+}
+
+// select method
+function selectMethod(methodName) {
+  $("#introMessage").hide();
+  $("#tiptip_holder").fadeOut(200);
+  
+  if (cachedMethods[ methodName ]) {
+    fillNewMethod(methodName);
+  }
+  else {
+    $.ajax({
+      type: "GET",
+      url: ws_url,
+      data: { format: "json", method: "reflection.getMethodDetails", methodName: methodName }
+    }).done(function(result) { 
+      result = parsePwgJSON(result);
+    
+      if (result!=null) {
+        cachedMethods[ methodName ] = result;
+        fillNewMethod(methodName);
+      }
+    }).error(function(jqXHR, textStatus, errorThrown) {
+      displayError("unknown error");
+    });
+  }
+}
+
+// display method details
+function fillNewMethod(methodName) {
+  resetDisplay();
+  
+  method = cachedMethods[ methodName ];
+  
+  $("#methodName").html(method.name).show();
+  
+  if (method.options.post_only || method.options.admin_only) {
+    var onlys = '<div class="onlys">';
+    if (method.options.post_only) {
+      onlys+= 'POST only. ';
+    }
+    if (method.options.admin_only) {
+      onlys+= 'Admin only. ';
+    }
+    onlys+= '</div>';
+    
+    method.description = onlys + method.description;
+  }
+  
+  if (method.description != "") {
+    $("#methodDescription blockquote").html(method.description);
+    $("#methodDescription").show();
+  }
+  
+  $("#requestFormat").val(method.options.post_only ? 'post' : 'get');
+  
+  var methodParams = '';
+  if (method.params && method.params.length>0) {
+    for (var i=0; i<method.params.length; i++) {
+      var param = method.params[i],
+          isOptional = param.optional,
+          acceptArray = param.acceptArray,
+          defaultValue = param.defaultValue == null ? '' : param.defaultValue,
+          info = param.info == null ? '' : '<a class="methodInfo" title="'+ param.info.replace(/"/g, '&quot;') + '">i</a>',
+          type = '';
+      
+      if (param.type.match(/bool/)) type+= '<span class=type>B</span>';
+      if (param.type.match(/int/)) type+= '<span class=type>I</span>';
+      if (param.type.match(/float/)) type+= '<span class=type>F</span>';
+      if (param.type.match(/positive/)) type+= '<span class=subtype>+</span>';
+      if (param.type.match(/notnull/)) type+= '<span class=subtype>&oslash;</span>';
+      
+      // if an array is direclty printed, the delimiter is a comma where we use a pipe
+      if (typeof defaultValue == 'object') {
+        defaultValue = defaultValue.join('|');
+      }
+
+      methodParams+= '<tr>'+
+        '<td>'+ param.name + info +'</td>'+
+        '<td class="mini">'+ (isOptional ? '?':'*') + (acceptArray ? ' []':'') +'</td>'+
+        '<td class="mini">'+ type +'</td>'+
+        '<td class="input"><input type="text" class="methodParameterValue" data-id="'+ i +'" value="'+ defaultValue +'"></td>'+
+        '<td class="mini"><input type="checkbox" class="methodParameterSend" data-id="'+ i +'" '+ (isOptional ? '':'checked="checked"') +'></td>'+
+      '</tr>';
+    }
+ 	}
+  else {
+    methodParams = '<tr><td colspan="4">This method takes no parameters</td></tr>';
+  }
+  
+  $("#methodParams tbody").html(methodParams);
+  $("#methodWrapper").show(); 
+  
+  adaptHeight();
+  
+  // trigger field modification
+  $("input.methodParameterValue").change(function() {
+    $("input.methodParameterSend[data-id='"+ $(this).data('id') +"']").attr('checked', 'checked');
+  });
+  
+  // tiptip
+  $(".methodInfo").tipTip({
+    maxWidth:"300px",
+    defaultPosition:"right",
+    delay:0
+  });
+}
+
+// invoke method
+function invokeMethod(methodName, newWindow) {
+	var method = cachedMethods[ methodName ];
+
+  var reqUrl = ws_url +"?format="+ $("#responseFormat").val();
+  
+  // GET
+  if ($("#requestFormat").val() == 'get') {
+    reqUrl+= "&method="+ methodName;
+    
+    for (var i=0; i<method.params.length; i++) {
+      if (! $("input.methodParameterSend[data-id='"+ i +"']").is(":checked")) {
+        continue;
+      }
+
+      var paramValue = $("input.methodParameterValue[data-id='"+ i +"']").val();
+      
+      var paramSplitted = paramValue.split('|');
+      if (method.params[i].acceptArray &&  paramSplitted.length > 1) {
+        $.each(paramSplitted, function(v) {
+          reqUrl+= '&'+ method.params[i].name +'[]='+ paramSplitted[v];
+        });
+      }
+      else {
+        reqUrl+= '&'+ method.params[i].name +'='+ paramValue;
+      }
+    }
+    
+    if (newWindow) {
+      window.open(reqUrl);
+    }
+    else {
+      $("#invokeFrame").attr('src', reqUrl);
+    }
+  }
+  // POST
+  else {
+    var form = $("#invokeForm");
+    form.attr('action', reqUrl);
+    
+    var t = '<input type="hidden" name="method" value="'+ methodName +'">';
+    
+    for (var i=0; i<method.params.length; i++) {
+      if (! $("input.methodParameterSend[data-id='"+ i +"']").is(":checked")) {
+        continue;
+      }
+
+      var paramValue = $("input.methodParameterValue[data-id='"+ i +"']").val();
+
+      var paramSplitted = paramValue.split('|');
+      if (method.params[i].acceptArray &&  paramSplitted.length > 1) {
+        $.each(paramSplitted, function(v) {
+          t+= '<input type="hidden" name="'+ method.params[i].name +'[]" value="'+ paramSplitted[v] +'">';
+        });
+      }
+      else {
+        t+= '<input type="hidden" name="'+ method.params[i].name +'" value="'+ paramValue +'">';
+      }
+    }
+    
+    form.html(t);
+    form.attr('target', newWindow ? "_blank" : "invokeFrame");
+    form.submit();
+  }
+  
+  return false;
+}
+</script>
+
+</body>
+</html>
Index: /tags/2.6.0RC1/upgrade.php
===================================================================
--- /tags/2.6.0RC1/upgrade.php	(revision 25596)
+++ /tags/2.6.0RC1/upgrade.php	(revision 25596)
@@ -0,0 +1,507 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define('PHPWG_ROOT_PATH', './');
+
+// load config file
+include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
+
+$config_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'config/database.inc.php';
+$config_file_contents = @file_get_contents($config_file);
+if ($config_file_contents === false)
+{
+  die('Cannot load '.$config_file);
+}
+$php_end_tag = strrpos($config_file_contents, '?'.'>');
+if ($php_end_tag === false)
+{
+  die('Cannot find php end tag in '.$config_file);
+}
+
+include($config_file);
+
+// $conf is not used for users tables - define cannot be re-defined
+define('USERS_TABLE', $prefixeTable.'users');
+include_once(PHPWG_ROOT_PATH.'include/constants.php');
+define('PREFIX_TABLE', $prefixeTable);
+define('UPGRADES_PATH', PHPWG_ROOT_PATH.'install/db');
+
+include_once(PHPWG_ROOT_PATH.'include/functions.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// |                              functions                                |
+// +-----------------------------------------------------------------------+
+
+/**
+ * list all tables in an array
+ *
+ * @return array
+ */
+function get_tables()
+{
+  $tables = array();
+
+  $query = '
+SHOW TABLES
+;';
+  $result = pwg_query($query);
+
+  while ($row = pwg_db_fetch_row($result))
+  {
+    if (preg_match('/^'.PREFIX_TABLE.'/', $row[0]))
+    {
+      $tables[] = $row[0];
+    }
+  }
+
+  return $tables;
+}
+
+/**
+ * list all columns of each given table
+ *
+ * @return array of array
+ */
+function get_columns_of($tables)
+{
+  $columns_of = array();
+
+  foreach ($tables as $table)
+  {
+    $query = '
+DESC '.$table.'
+;';
+    $result = pwg_query($query);
+
+    $columns_of[$table] = array();
+
+    while ($row = pwg_db_fetch_row($result))
+    {
+      $columns_of[$table][] = $row[0];
+    }
+  }
+
+  return $columns_of;
+}
+
+/**
+ */
+function print_time($message)
+{
+  global $last_time;
+
+  $new_time = get_moment();
+  echo '<pre>['.get_elapsed_time($last_time, $new_time).']';
+  echo ' '.$message;
+  echo '</pre>';
+  flush();
+  $last_time = $new_time;
+}
+
+// +-----------------------------------------------------------------------+
+// |                             playing zone                              |
+// +-----------------------------------------------------------------------+
+
+// echo implode('<br>', get_tables());
+// echo '<pre>'; print_r(get_columns_of(get_tables())); echo '</pre>';
+
+// foreach (get_available_upgrade_ids() as $upgrade_id)
+// {
+//   echo $upgrade_id, '<br>';
+// }
+
+// +-----------------------------------------------------------------------+
+// |                             language                                  |
+// +-----------------------------------------------------------------------+
+include(PHPWG_ROOT_PATH . 'admin/include/languages.class.php');
+$languages = new languages('utf-8');
+
+if (isset($_GET['language']))
+{
+  $language = strip_tags($_GET['language']);
+
+  if (!in_array($language, array_keys($languages->fs_languages)))
+  {
+    $language = PHPWG_DEFAULT_LANGUAGE;
+  }
+}
+else
+{
+  $language = 'en_UK';
+  // Try to get browser language
+  foreach ($languages->fs_languages as $language_code => $fs_language)
+  {
+    if (substr($language_code,0,2) == @substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2))
+    {
+      $language = $language_code;
+      break;
+    }
+  }
+}
+
+if ('fr_FR' == $language) {
+  define('PHPWG_DOMAIN', 'fr.piwigo.org');
+}
+else if ('it_IT' == $language) {
+  define('PHPWG_DOMAIN', 'it.piwigo.org');
+}
+else if ('de_DE' == $language) {
+  define('PHPWG_DOMAIN', 'de.piwigo.org');
+}
+else if ('es_ES' == $language) {
+  define('PHPWG_DOMAIN', 'es.piwigo.org');
+}
+else if ('pl_PL' == $language) {
+  define('PHPWG_DOMAIN', 'pl.piwigo.org');
+}
+else if ('zh_CN' == $language) {
+  define('PHPWG_DOMAIN', 'cn.piwigo.org');
+}
+else if ('hu_HU' == $language) {
+  define('PHPWG_DOMAIN', 'hu.piwigo.org');
+}
+else if ('ru_RU' == $language) {
+  define('PHPWG_DOMAIN', 'ru.piwigo.org');
+}
+else if ('nl_NL' == $language) {
+  define('PHPWG_DOMAIN', 'nl.piwigo.org');
+}
+else if ('tr_TR' == $language) {
+  define('PHPWG_DOMAIN', 'tr.piwigo.org');
+}
+else if ('da_DK' == $language) {
+  define('PHPWG_DOMAIN', 'da.piwigo.org');
+}
+else if ('pt_BR' == $language) {
+  define('PHPWG_DOMAIN', 'br.piwigo.org');
+}
+else {
+  define('PHPWG_DOMAIN', 'piwigo.org');
+}
+define('PHPWG_URL', 'http://'.PHPWG_DOMAIN);
+
+load_language( 'common.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) );
+load_language( 'admin.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) );
+load_language( 'install.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) );
+load_language( 'upgrade.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) );
+
+// check php version
+if (version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '<'))
+{
+  include(PHPWG_ROOT_PATH.'install/php5_apache_configuration.php');
+}
+
+// +-----------------------------------------------------------------------+
+// |                          database connection                          |
+// +-----------------------------------------------------------------------+
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
+include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
+
+upgrade_db_connect();
+pwg_db_check_charset();
+
+list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+define('CURRENT_DATE', $dbnow);
+
+// +-----------------------------------------------------------------------+
+// |                        template initialization                        |
+// +-----------------------------------------------------------------------+
+
+$template = new Template(PHPWG_ROOT_PATH.'admin/themes', 'clear');
+$template->set_filenames(array('upgrade'=>'upgrade.tpl'));
+$template->assign(array(
+  'RELEASE' => PHPWG_VERSION,
+  'L_UPGRADE_HELP' => l10n('Need help ? Ask your question on <a href="%s">Piwigo message board</a>.', PHPWG_URL.'/forum'),
+  )
+);
+
+// +-----------------------------------------------------------------------+
+// | Remote sites are not compatible with Piwigo 2.4+                      |
+// +-----------------------------------------------------------------------+
+
+$has_remote_site = false;
+
+$query = 'SELECT galleries_url FROM '.SITES_TABLE.';';
+$result = pwg_query($query);
+while ($row = pwg_db_fetch_assoc($result))
+{
+  if (url_is_remote($row['galleries_url']))
+  {
+    $has_remote_site = true;
+  }
+}
+
+if ($has_remote_site)
+{
+  include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php');
+  include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php');
+
+  $page['errors'] = array();
+  $step = 3;
+  updates::upgrade_to('2.3.4', $step, false);
+
+  if (!empty($page['errors']))
+  {
+    echo '<ul>';
+    foreach ($page['errors'] as $error)
+    {
+      echo '<li>'.$error.'</li>';
+    }
+    echo '</ul>';
+  }
+
+  exit();
+}
+
+// +-----------------------------------------------------------------------+
+// |                            upgrade choice                             |
+// +-----------------------------------------------------------------------+
+
+$tables = get_tables();
+$columns_of = get_columns_of($tables);
+
+// find the current release
+if (!in_array('param', $columns_of[PREFIX_TABLE.'config']))
+{
+  // we're in branch 1.3, important upgrade, isn't it?
+  if (in_array(PREFIX_TABLE.'user_category', $tables))
+  {
+    $current_release = '1.3.1';
+  }
+  else
+  {
+    $current_release = '1.3.0';
+  }
+}
+else if (!in_array(PREFIX_TABLE.'user_cache', $tables))
+{
+  $current_release = '1.4.0';
+}
+else if (!in_array(PREFIX_TABLE.'tags', $tables))
+{
+  $current_release = '1.5.0';
+}
+else if ( !in_array(PREFIX_TABLE.'plugins', $tables) )
+{
+  if (!in_array('auto_login_key', $columns_of[PREFIX_TABLE.'user_infos']))
+  {
+    $current_release = '1.6.0';
+  }
+  else
+  {
+    $current_release = '1.6.2';
+  }
+}
+else if (!in_array('md5sum', $columns_of[PREFIX_TABLE.'images']))
+{
+  $current_release = '1.7.0';
+}
+else if (!in_array(PREFIX_TABLE.'themes', $tables))
+{
+  $current_release = '2.0.0';
+}
+else if (!in_array('added_by', $columns_of[PREFIX_TABLE.'images']))
+{
+  $current_release = '2.1.0';
+}
+else if (!in_array('rating_score', $columns_of[PREFIX_TABLE.'images']))
+{
+  $current_release = '2.2.0';
+}
+else if (!in_array('rotation', $columns_of[PREFIX_TABLE.'images']))
+{
+  $current_release = '2.3.0';
+}
+else
+{
+  // retrieve already applied upgrades
+  $query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+  $applied_upgrades = array_from_query($query, 'id');
+
+  if (!in_array(134, $applied_upgrades))
+  {
+    $current_release = '2.4.0';
+  }
+  else
+  {
+    // confirm that the database is in the same version as source code files
+    conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
+    
+    echo 'No upgrade required, the database structure is up to date';
+    echo '<br><a href="index.php">← back to gallery</a>';
+    exit();
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                            upgrade launch                             |
+// +-----------------------------------------------------------------------+
+$page['infos'] = array();
+$page['errors'] = array();
+$mysql_changes = array();
+
+check_upgrade_access_rights();
+
+if ((isset($_POST['submit']) or isset($_GET['now']))
+  and check_upgrade())
+{
+  $upgrade_file = PHPWG_ROOT_PATH.'install/upgrade_'.$current_release.'.php';
+  if (is_file($upgrade_file))
+  {
+    $page['upgrade_start'] = get_moment();
+    $conf['die_on_sql_error'] = false;
+    include($upgrade_file);
+    conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
+
+    // Something to add in database.inc.php?
+    if (!empty($mysql_changes))
+    {
+      $config_file_contents = 
+        substr($config_file_contents, 0, $php_end_tag) . "\r\n"
+        . implode("\r\n" , $mysql_changes) . "\r\n"
+        . substr($config_file_contents, $php_end_tag);
+
+      if (!@file_put_contents($config_file, $config_file_contents))
+      {
+        $page['infos'][] = l10n(
+          'In <i>%s</i>, before <b>?></b>, insert:',
+          PWG_LOCAL_DIR.'config/database.inc.php'
+          )
+        .'<p><textarea rows="4" cols="40">'
+        .implode("\r\n" , $mysql_changes).'</textarea></p>';
+      }
+    }
+
+    // Plugins deactivation
+    if (in_array(PREFIX_TABLE.'plugins', $tables))
+    {
+      deactivate_non_standard_plugins();
+    }
+
+    deactivate_non_standard_themes();
+    deactivate_templates();
+
+    $page['upgrade_end'] = get_moment();
+
+    $template->assign(
+      'upgrade',
+      array(
+        'VERSION' => $current_release,
+        'TOTAL_TIME' => get_elapsed_time(
+          $page['upgrade_start'],
+          $page['upgrade_end']
+          ),
+        'SQL_TIME' => number_format(
+          $page['queries_time'],
+          3,
+          '.',
+          ' '
+          ).' s',
+        'NB_QUERIES' => $page['count_queries']
+        )
+      );
+
+    $page['infos'][] = l10n('Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.');
+
+    // Save $page['infos'] in order to restore after maintenance actions
+    $page['infos_sav'] = $page['infos'];
+    $page['infos'] = array();
+
+    // c13y_upgrade plugin means "check integrity after upgrade", so it
+    // becomes useful just after an upgrade
+    $query = '
+REPLACE INTO '.PLUGINS_TABLE.'
+  (id, state)
+  VALUES (\'c13y_upgrade\', \'active\')
+;';
+    pwg_query($query);
+
+    // Delete cache data
+    invalidate_user_cache(true);
+    $template->delete_compiled_templates();
+
+    // Tables Maintenance
+    do_maintenance_all_tables();
+
+    // Restore $page['infos'] in order to hide informations messages from functions calles
+    // errors messages are not hide
+    $page['infos'] = $page['infos_sav'];
+
+  }
+}
+
+// +-----------------------------------------------------------------------+
+// |                          start template output                        |
+// +-----------------------------------------------------------------------+
+else
+{
+  if (!defined('PWG_CHARSET'))
+  {
+    define('PWG_CHARSET', 'utf-8');
+  }
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/languages.class.php');
+  $languages = new languages();
+  
+  foreach ($languages->fs_languages as $language_code => $fs_language)
+  {
+    if ($language == $language_code)
+    {
+      $template->assign('language_selection', $language_code);
+    }
+    $languages_options[$language_code] = $fs_language['name'];
+  }
+  $template->assign('language_options', $languages_options);
+
+  $template->assign('introduction', array(
+    'CURRENT_RELEASE' => $current_release,
+    'F_ACTION' => 'upgrade.php?language=' . $language));
+
+  if (!check_upgrade())
+  {
+    $template->assign('login', true);
+  }
+}
+
+if (count($page['errors']) != 0)
+{
+  $template->assign('errors', $page['errors']);
+}
+
+if (count($page['infos']) != 0)
+{
+  $template->assign('infos', $page['infos']);
+}
+
+// +-----------------------------------------------------------------------+
+// |                          sending html code                            |
+// +-----------------------------------------------------------------------+
+
+$template->pparse('upgrade');
+?>
Index: /tags/2.6.0RC1/upgrade_feed.php
===================================================================
--- /tags/2.6.0RC1/upgrade_feed.php	(revision 25596)
+++ /tags/2.6.0RC1/upgrade_feed.php	(revision 25596)
@@ -0,0 +1,116 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+//check php version
+if (version_compare(PHP_VERSION, '5', '<'))
+{
+  die('Piwigo requires PHP 5 or above.');
+}
+
+define('PHPWG_ROOT_PATH', './');
+
+include(PHPWG_ROOT_PATH . 'include/config_default.inc.php');
+@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php');
+defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/');
+
+include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php');
+include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php');
+
+include_once(PHPWG_ROOT_PATH.'include/functions.inc.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php');
+
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when it is not ok                               |
+// +-----------------------------------------------------------------------+
+
+if (!$conf['check_upgrade_feed'])
+{
+  die("upgrade feed is not active");
+}
+
+prepare_conf_upgrade();
+
+define('PREFIX_TABLE', $prefixeTable);
+define('UPGRADES_PATH', PHPWG_ROOT_PATH.'install/db');
+
+// +-----------------------------------------------------------------------+
+// |                         Database connection                           |
+// +-----------------------------------------------------------------------+
+try
+{
+  pwg_db_connect($conf['db_host'], $conf['db_user'],
+                 $conf['db_password'], $conf['db_base']);
+}
+catch (Exception $e)
+{
+  my_error(l10n($e->getMessage(), true)); 
+}
+
+pwg_db_check_charset();
+
+// +-----------------------------------------------------------------------+
+// |                              Upgrades                                 |
+// +-----------------------------------------------------------------------+
+
+// retrieve already applied upgrades
+$query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+$applied = array_from_query($query, 'id');
+
+// retrieve existing upgrades
+$existing = get_available_upgrade_ids();
+
+// which upgrades need to be applied?
+$to_apply = array_diff($existing, $applied);
+
+echo '<pre>';
+echo count($to_apply).' upgrades to apply';
+
+foreach ($to_apply as $upgrade_id)
+{
+  unset($upgrade_description);
+
+  echo "\n\n";
+  echo '=== upgrade '.$upgrade_id."\n";
+
+  // include & execute upgrade script. Each upgrade script must contain
+  // $upgrade_description variable which describe briefly what the upgrade
+  // script does.
+  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
+
+  // notify upgrade
+  $query = '
+INSERT INTO '.PREFIX_TABLE.'upgrade
+  (id, applied, description)
+  VALUES
+  (\''.$upgrade_id.'\', NOW(), \''.$upgrade_description.'\')
+;';
+  pwg_query($query);
+}
+
+echo '</pre>';
+?>
Index: /tags/2.6.0RC1/ws.php
===================================================================
--- /tags/2.6.0RC1/ws.php	(revision 25596)
+++ /tags/2.6.0RC1/ws.php	(revision 25596)
@@ -0,0 +1,961 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based photo gallery                                    |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+define ('PHPWG_ROOT_PATH', './');
+
+include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
+check_status(ACCESS_FREE);
+
+if ( !$conf['allow_web_services'] )
+{
+  page_forbidden('Web services are disabled');
+}
+
+include_once(PHPWG_ROOT_PATH.'include/ws_core.inc.php');
+
+add_event_handler('ws_add_methods', 'ws_addDefaultMethods');
+add_event_handler('ws_invoke_allowed', 'ws_isInvokeAllowed', EVENT_HANDLER_PRIORITY_NEUTRAL, 3);
+
+$requestFormat = 'rest';
+$responseFormat = null;
+
+if ( isset($_GET['format']) )
+{
+  $responseFormat = $_GET['format'];
+}
+
+if ( !isset($responseFormat) and isset($requestFormat) )
+{
+  $responseFormat = $requestFormat;
+}
+
+$service = new PwgServer();
+
+if (!is_null($requestFormat))
+{
+  $handler = null;
+  switch ($requestFormat)
+  {
+    case 'rest':
+      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/rest_handler.php');
+      $handler = new PwgRestRequestHandler();
+      break;
+  }
+  $service->setHandler($requestFormat, $handler);
+}
+
+if (!is_null($responseFormat))
+{
+  $encoder = null;
+  switch ($responseFormat)
+  {
+    case 'rest':
+      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/rest_encoder.php');
+      $encoder = new PwgRestEncoder();
+      break;
+    case 'php':
+      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/php_encoder.php');
+      $encoder = new PwgSerialPhpEncoder();
+      break;
+    case 'json':
+      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/json_encoder.php');
+      $encoder = new PwgJsonEncoder();
+      break;
+    case 'xmlrpc':
+      include_once(PHPWG_ROOT_PATH.'include/ws_protocols/xmlrpc_encoder.php');
+      $encoder = new PwgXmlRpcEncoder();
+      break;
+  }
+  $service->setEncoder($responseFormat, $encoder);
+}
+
+set_make_full_url();
+$service->run();
+
+
+/**
+ * event handler that registers standard methods with the web service
+ */
+function ws_addDefaultMethods( $arr )
+{
+  global $conf, $user;
+  $service = &$arr[0];
+  
+  include_once(PHPWG_ROOT_PATH.'include/ws_functions.inc.php');
+  $ws_functions_root = PHPWG_ROOT_PATH.'include/ws_functions/';
+  
+  $f_params = array(
+    'f_min_rate' => array('default'=>null,
+                          'type'=>WS_TYPE_FLOAT),
+    'f_max_rate' => array('default'=>null,
+                          'type'=>WS_TYPE_FLOAT),
+    'f_min_hit' =>  array('default'=>null,
+                          'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+    'f_max_hit' =>  array('default'=>null,
+                          'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+    'f_min_ratio' => array('default'=>null,
+                           'type'=>WS_TYPE_FLOAT|WS_TYPE_POSITIVE),
+    'f_max_ratio' => array('default'=>null,
+                           'type'=>WS_TYPE_FLOAT|WS_TYPE_POSITIVE),
+    'f_max_level' => array('default'=>null,
+                           'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+    'f_min_date_available' => array('default'=>null),
+    'f_max_date_available' => array('default'=>null),
+    'f_min_date_created' =>   array('default'=>null),
+    'f_max_date_created' =>   array('default'=>null),
+    );
+  
+  $service->addMethod(
+      'pwg.getVersion',
+      'ws_getVersion',
+      null,
+      'Returns the Piwigo version.',
+      $ws_functions_root . 'pwg.php'
+    );
+	  
+  $service->addMethod(
+      'pwg.getInfos',
+      'ws_getInfos',
+      null,
+      'Returns general informations.',
+      $ws_functions_root . 'pwg.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.caddie.add',
+      'ws_caddie_add',
+      array(
+        'image_id'=> array('flags'=>WS_PARAM_FORCE_ARRAY,
+                           'type'=>WS_TYPE_ID),
+        ),
+      'Adds elements to the caddie. Returns the number of elements added.',
+      $ws_functions_root . 'pwg.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.getImages',
+      'ws_categories_getImages',
+      array_merge(array(
+        'cat_id' =>     array('default'=>null, 
+                              'flags'=>WS_PARAM_FORCE_ARRAY,
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'recursive' =>  array('default'=>false,
+                              'type'=>WS_TYPE_BOOL),
+        'per_page' =>   array('default'=>100,
+                              'maxValue'=>$conf['ws_max_images_per_page'],
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'page' =>       array('default'=>0,
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'order' =>      array('default'=>null,
+                              'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'),
+        ), $f_params),
+      'Returns elements for the corresponding categories.
+<br><b>cat_id</b> can be empty if <b>recursive</b> is true.
+<br><b>order</b> comma separated fields for sorting',
+      $ws_functions_root . 'pwg.categories.php'
+    );
+
+  $service->addMethod(
+      'pwg.categories.getList',
+      'ws_categories_getList',
+      array(
+        'cat_id' =>       array('default'=>null,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE,
+                                'info'=>'Parent category. "0" or empty for root.'),
+        'recursive' =>    array('default'=>false,
+                                'type'=>WS_TYPE_BOOL),
+        'public' =>       array('default'=>false,
+                                'type'=>WS_TYPE_BOOL),
+        'tree_output' =>  array('default'=>false,
+                                'type'=>WS_TYPE_BOOL),
+        'fullname' =>     array('default'=>false,
+                                'type'=>WS_TYPE_BOOL),
+        ),
+      'Returns a list of categories.',
+      $ws_functions_root . 'pwg.categories.php'
+    );
+
+  $service->addMethod(
+      'pwg.getMissingDerivatives',
+      'ws_getMissingDerivatives',
+      array_merge(array(
+        'types' =>        array('default'=>null,
+                                'flags'=>WS_PARAM_FORCE_ARRAY,
+                                'info'=>'square, thumb, 2small, xsmall, small, medium, large, xlarge, xxlarge'),
+        'ids' =>          array('default'=>null,
+                                'flags'=>WS_PARAM_FORCE_ARRAY,
+                                'type'=>WS_TYPE_ID),
+        'max_urls' =>     array('default'=>200,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'prev_page' =>    array('default'=>null,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        ), $f_params),
+      'Returns a list of derivatives to build.',
+      $ws_functions_root . 'pwg.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.addComment',
+      'ws_images_addComment',
+      array(
+        'image_id' => array('type'=>WS_TYPE_ID),
+        'author' =>   array('default'=>is_a_guest()?'guest':$user['username']),
+        'content' =>  array(),
+        'key' =>      array(),
+        ),
+      'Adds a comment to an image.',
+      $ws_functions_root . 'pwg.images.php',
+      array('post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.getInfo',
+      'ws_images_getInfo',
+      array(
+        'image_id' =>           array('type'=>WS_TYPE_ID),
+        'comments_page' =>      array('default'=>0,
+                                      'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'comments_per_page' =>  array('default'=>$conf['nb_comment_page'],
+                                      'maxValue'=>2*$conf['nb_comment_page'],
+                                      'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        ),
+      'Returns information about an image.',
+      $ws_functions_root . 'pwg.images.php'
+    );
+
+  $service->addMethod(
+      'pwg.images.rate',
+      'ws_images_rate',
+      array(
+        'image_id' => array('type'=>WS_TYPE_ID),
+        'rate' =>     array('type'=>WS_TYPE_FLOAT),
+      ),
+      'Rates an image.',
+      $ws_functions_root . 'pwg.images.php'
+    );
+
+  $service->addMethod(
+      'pwg.images.search',
+      'ws_images_search',
+      array_merge(array(
+        'query' =>        array(),
+        'per_page' =>     array('default'=>100,
+                                'maxValue'=>$conf['ws_max_images_per_page'],
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'page' =>         array('default'=>0,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'order' =>        array('default'=>null,
+                                'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'),
+        ), $f_params),
+      'Returns elements for the corresponding query search.',
+      $ws_functions_root . 'pwg.images.php'
+    );
+
+  $service->addMethod(
+      'pwg.images.setPrivacyLevel',
+      'ws_images_setPrivacyLevel',
+      array(
+        'image_id' => array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'level' =>    array('maxValue'=>max($conf['available_permission_levels']),
+                            'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        ),
+      'Sets the privacy levels for the images.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.setRank',
+      'ws_images_setRank',
+      array(
+        'image_id'    => array('type'=>WS_TYPE_ID),
+        'category_id' => array('type'=>WS_TYPE_ID),
+        'rank'        => array('type'=>WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL)
+        ),
+      'Sets the rank of a photo for a given album.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.rates.delete',
+      'ws_rates_delete',
+      array(
+        'user_id' =>      array('type'=>WS_TYPE_ID),
+        'anonymous_id' => array('default'=>null),
+        ),
+      'Deletes all rates for a user.',
+      $ws_functions_root . 'pwg.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.session.getStatus',
+      'ws_session_getStatus',
+      null,
+      'Gets information about the current session. Also provides a token useable with admin methods.',
+      $ws_functions_root . 'pwg.php'
+    );
+
+  $service->addMethod(
+      'pwg.session.login',
+      'ws_session_login',
+      array('username', 'password'),
+      'Tries to login the user.',
+      $ws_functions_root . 'pwg.php',
+      array('post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.session.logout',
+      'ws_session_logout',
+      null,
+      'Ends the current session.',
+      $ws_functions_root . 'pwg.php'
+    );
+
+  $service->addMethod(
+      'pwg.tags.getList',
+      'ws_tags_getList',
+      array(
+        'sort_by_counter' => array('default'=>false,
+                                   'type'=>WS_TYPE_BOOL),
+        ),
+      'Retrieves a list of available tags.',
+      $ws_functions_root . 'pwg.tags.php'
+    );
+
+  $service->addMethod(
+      'pwg.tags.getImages',
+      'ws_tags_getImages',
+      array_merge(array(
+        'tag_id' =>       array('default'=>null,
+                                'flags'=>WS_PARAM_FORCE_ARRAY,
+                                'type'=>WS_TYPE_ID),
+        'tag_url_name' => array('default'=>null,
+                                'flags'=>WS_PARAM_FORCE_ARRAY),
+        'tag_name' =>     array('default'=>null,
+                                'flags'=>WS_PARAM_FORCE_ARRAY),
+        'tag_mode_and' => array('default'=>false,
+                                'type'=>WS_TYPE_BOOL),
+        'per_page' =>     array('default'=>100,
+                                'maxValue'=>$conf['ws_max_images_per_page'],
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'page' =>         array('default'=>0,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'order' =>        array('default'=>null,
+                                'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'),
+        ), $f_params),
+      'Returns elements for the corresponding tags. Fill at least tag_id, tag_url_name or tag_name.',
+      $ws_functions_root . 'pwg.tags.php'
+    );
+
+  $service->addMethod(
+      'pwg.images.addChunk',
+      'ws_images_add_chunk',
+      array(
+        'data' =>         array(),
+        'original_sum' => array(),
+        'type' =>         array('default'=>'file',
+                                'info'=>'Must be "file", for backward compatiblity "high" and "thumb" are allowed.'),
+        'position' =>     array()
+        ),
+      'Add a chunk of a file.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.addFile',
+      'ws_images_addFile',
+      array(
+        'image_id' => array('type'=>WS_TYPE_ID),
+        'type' =>     array('default'=>'file',
+                            'info'=>'Must be "file", for backward compatiblity "high" and "thumb" are allowed.'),
+        'sum' =>      array(),
+        ),
+      'Add or update a file for an existing photo.
+<br>pwg.images.addChunk must have been called before (maybe several times).',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true)
+    );
+
+
+  $service->addMethod(
+      'pwg.images.add',
+      'ws_images_add',
+      array(
+        'thumbnail_sum' =>      array('default'=>null),
+        'high_sum' =>           array('default'=>null),
+        'original_sum' =>       array(),
+        'original_filename' =>  array('default'=>null,
+                                      'Provide it if "check_uniqueness" is true and $conf["uniqueness_mode"] is "filename".'),
+        'name' =>               array('default'=>null),
+        'author' =>             array('default'=>null),
+        'date_creation' =>      array('default'=>null),
+        'comment' =>            array('default'=>null),
+        'categories' =>         array('default'=>null,
+                                      'info'=>'String list "category_id[,rank];category_id[,rank]".<br>The rank is optional and is equivalent to "auto" if not given.'),
+        'tag_ids' =>            array('default'=>null,
+                                      'info'=>'Comma separated ids'),
+        'level' =>              array('default'=>0,
+                                      'maxValue'=>max($conf['available_permission_levels']),
+                                      'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'check_uniqueness' =>   array('default'=>true,
+                                      'type'=>WS_TYPE_BOOL),
+        'image_id' =>           array('default'=>null,
+                                      'type'=>WS_TYPE_ID),
+        ),
+      'Add an image.
+<br>pwg.images.addChunk must have been called before (maybe several times).
+<br>Don\'t use "thumbnail_sum" and "high_sum", these parameters are here for backward compatibility.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.addSimple',
+      'ws_images_addSimple',
+      array(
+        'category' => array('default'=>null,
+                            'flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'name' =>     array('default'=>null),
+        'author' =>   array('default'=>null),
+        'comment' =>  array('default'=>null),
+        'level' =>    array('default'=>0,
+                            'maxValue'=>max($conf['available_permission_levels']),
+                            'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'tags' =>     array('default'=>null,
+                            'flags'=>WS_PARAM_ACCEPT_ARRAY),
+        'image_id' => array('default'=>null,
+                            'type'=>WS_TYPE_ID),
+        ),
+      'Add an image.
+<br>Use the <b>$_FILES[image]</b> field for uploading file.
+<br>Set the form encoding to "form-data".
+<br>You can update an existing photo if you define an existing image_id.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.delete',
+      'ws_images_delete',
+      array(
+        'image_id' =>   array('flags'=>WS_PARAM_ACCEPT_ARRAY),
+        'pwg_token' =>  array(),
+        ),
+      'Deletes image(s).',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.getAdminList',
+      'ws_categories_getAdminList',
+      null,
+      'Get albums list as displayed on admin page.',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.add',
+      'ws_categories_add',
+      array(
+        'name' =>         array(),
+        'parent' =>       array('default'=>null,
+                                'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'comment' =>      array('default'=>null),
+        'visible' =>      array('default'=>true,
+                                'type'=>WS_TYPE_BOOL),
+        'status' =>       array('default'=>null,
+                                'info'=>'public, private'),
+        'commentable' =>  array('default'=>true,
+                                'type'=>WS_TYPE_BOOL),
+        ),
+      'Adds an album.',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.delete',
+      'ws_categories_delete',
+      array(
+        'category_id'=>           array('flags'=>WS_PARAM_ACCEPT_ARRAY),
+        'photo_deletion_mode' =>  array('default'=>'delete_orphans'),
+        'pwg_token' =>            array(),
+        ),
+      'Deletes album(s).
+<br><b>photo_deletion_mode</b> can be "no_delete" (may create orphan photos), "delete_orphans"
+(default mode, only deletes photos linked to no other album) or "force_delete" (delete all photos, even those linked to other albums)',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.move',
+      'ws_categories_move',
+      array(
+        'category_id' =>  array('flags'=>WS_PARAM_ACCEPT_ARRAY),
+        'parent' =>       array('type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'pwg_token' =>    array(),
+        ),
+      'Move album(s).
+<br>Set parent as 0 to move to gallery root. Only virtual categories can be moved.',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.setRepresentative',
+      'ws_categories_setRepresentative',
+      array(
+        'category_id' =>  array('type'=>WS_TYPE_ID),
+        'image_id' =>     array('type'=>WS_TYPE_ID),
+        ),
+      'Sets the representative photo for an album. The photo doesn\'t have to belong to the album.',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.tags.getAdminList',
+      'ws_tags_getAdminList',
+      null,
+      '<b>Admin only.</b>',
+      $ws_functions_root . 'pwg.tags.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod( // TODO: create multiple tags
+      'pwg.tags.add',
+      'ws_tags_add',
+      array('name'),
+      'Adds a new tag.',
+      $ws_functions_root . 'pwg.tags.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.exist',
+      'ws_images_exist',
+      array(
+        'md5sum_list' =>    array('default'=>null),
+        'filename_list' =>  array('default'=>null),
+        ),
+      'Checks existence of images.
+<br>Give <b>md5sum_list</b> if $conf[uniqueness_mode]==md5sum. Give <b>filename_list</b> if $conf[uniqueness_mode]==filename.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.checkFiles',
+      'ws_images_checkFiles',
+      array(
+        'image_id' =>       array('type'=>WS_TYPE_ID),
+        'file_sum' =>       array('default'=>null),
+        'thumbnail_sum' =>  array('default'=>null),
+        'high_sum' =>       array('default'=>null),
+        ),
+      'Checks if you have updated version of your files for a given photo, the answer can be "missing", "equals" or "differs".
+<br>Don\'t use "thumbnail_sum" and "high_sum", these parameters are here for backward compatibility.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.checkUpload',
+      'ws_images_checkUpload',
+      null,
+      'Checks if Piwigo is ready for upload.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.images.setInfo',
+      'ws_images_setInfo',
+      array(
+        'image_id' =>       array('type'=>WS_TYPE_ID),
+        'file' =>           array('default'=>null),
+        'name' =>           array('default'=>null),
+        'author' =>         array('default'=>null),
+        'date_creation' =>  array('default'=>null),
+        'comment' =>        array('default'=>null),
+        'categories' =>     array('default'=>null,
+                                  'info'=>'String list "category_id[,rank];category_id[,rank]".<br>The rank is optional and is equivalent to "auto" if not given.'),
+        'tag_ids' =>        array('default'=>null,
+                                  'info'=>'Comma separated ids'),
+        'level' =>          array('default'=>null,
+                                  'maxValue'=>max($conf['available_permission_levels']),
+                                  'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'single_value_mode' =>    array('default'=>'fill_if_empty'),
+        'multiple_value_mode' =>  array('default'=>'append'),
+        ),
+      'Changes properties of an image.
+<br><b>single_value_mode</b> can be "fill_if_empty" (only use the input value if the corresponding values is currently empty) or "replace"
+(overwrite any existing value) and applies to single values properties like name/author/date_creation/comment.
+<br><b>multiple_value_mode</b> can be "append" (no change on existing values, add the new values) or "replace" and applies to multiple values properties like tag_ids/categories.',
+      $ws_functions_root . 'pwg.images.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.categories.setInfo',
+      'ws_categories_setInfo',
+      array(
+        'category_id' =>  array('type'=>WS_TYPE_ID),
+        'name' =>         array('default'=>null),
+        'comment' =>      array('default'=>null),
+        ),
+      'Changes properties of an album.',
+      $ws_functions_root . 'pwg.categories.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+  
+  $service->addMethod(
+      'pwg.plugins.getList',
+      'ws_plugins_getList',
+      null,
+      'Gets the list of plugins with id, name, version, state and description.',
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.plugins.performAction',
+      'ws_plugins_performAction',
+      array(
+        'action'    => array('info'=>'install, activate, deactivate, uninstall, delete'),
+        'plugin'    => array(),
+        'pwg_token' => array(),
+        ),
+      null,
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.themes.performAction',
+      'ws_themes_performAction',
+      array(
+        'action'    => array('info'=>'activate, deactivate, delete, set_default'),
+        'theme'     => array(),
+        'pwg_token' => array(),
+        ),
+      null,
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.extensions.update',
+      'ws_extensions_update',
+      array(
+        'type' => array('info'=>'plugins, languages, themes'),
+        'id' => array(),
+        'revision' => array(),
+        'pwg_token' => array(),
+        ),
+      '<b>Webmaster only.</b>',
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.extensions.ignoreUpdate',
+      'ws_extensions_ignoreupdate',
+      array(
+        'type' =>       array('default'=>null,
+                              'info'=>'plugins, languages, themes'),
+        'id' =>         array('default'=>null),
+        'reset' =>      array('default'=>false,
+                              'type'=>WS_TYPE_BOOL,
+                              'info'=>'If true, all ignored extensions will be reinitilized.'),
+        'pwg_token' =>  array(),
+      ),
+      '<b>Webmaster only.</b> Ignores an extension if it needs update.',
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.extensions.checkUpdates',
+      'ws_extensions_checkupdates',
+      null,
+      'Checks if piwigo or extensions are up to date.',
+      $ws_functions_root . 'pwg.extensions.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.getList',
+      'ws_groups_getList',
+      array(
+        'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'name' =>     array('flags'=>WS_PARAM_OPTIONAL,
+                            'info'=>'Use "%" as wildcard.'),
+        'per_page' => array('default'=>100,
+                            'maxValue'=>$conf['ws_max_users_per_page'],
+                            'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'page' =>     array('default'=>0,
+                            'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'order' =>    array('default'=>'name',
+                            'info'=>'id, name, nb_users, is_default'),
+        ),
+      'Retrieves a list of all groups. The list can be filtered.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.add',
+      'ws_groups_add',
+      array(
+        'name' =>       array(),
+        'is_default' => array('default'=>false,
+                              'type'=>WS_TYPE_BOOL),
+        ),
+      'Creates a group and returns the new group record.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.delete',
+      'ws_groups_delete',
+      array(
+        'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'pwg_token' =>  array(),
+        ),
+      'Deletes a or more groups. Users and photos are not deleted.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.setInfo',
+      'ws_groups_setInfo',
+      array(
+        'group_id' =>   array('type'=>WS_TYPE_ID),
+        'name' =>       array('flags'=>WS_PARAM_OPTIONAL),
+        'is_default' => array('flags'=>WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_BOOL),
+        ),
+      'Updates a group. Leave a field blank to keep the current value.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.addUser',
+      'ws_groups_addUser',
+      array(
+        'group_id' => array('type'=>WS_TYPE_ID),
+        'user_id' =>  array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        ),
+      'Adds one or more users to a group.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.groups.deleteUser',
+      'ws_groups_deleteUser',
+      array(
+        'group_id' => array('type'=>WS_TYPE_ID),
+        'user_id' =>  array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        ),
+      'Removes one or more users from a group.',
+      $ws_functions_root . 'pwg.groups.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.users.getList',
+      'ws_users_getList',
+      array(
+        'user_id' =>    array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY,
+                              'type'=>WS_TYPE_ID),
+        'username' =>   array('flags'=>WS_PARAM_OPTIONAL,
+                              'info'=>'Use "%" as wildcard.'),
+        'status' =>     array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY,
+                              'info'=>'guest,generic,normal,admin,webmaster'),
+        'min_level' =>  array('default'=>0,
+                              'maxValue'=>max($conf['available_permission_levels']),
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'group_id' =>   array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY,
+                              'type'=>WS_TYPE_ID),
+        'per_page' =>   array('default'=>100,
+                              'maxValue'=>$conf['ws_max_users_per_page'],
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'page' =>       array('default'=>0,
+                              'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'order' =>      array('default'=>'id',
+                              'info'=>'id, username, level, email'),
+        'display' =>    array('default'=>'basics',
+                              'info'=>'Comma saparated list (see method description)'),
+        ),
+      'Retrieves a list of all the users.<br>
+<br>
+<b>display</b> controls which data are returned, possible values are:<br>
+all, basics, none,<br>
+username, email, status, level, groups,<br>
+language, theme, nb_image_page, recent_period, expand, show_nb_comments, show_nb_hits,<br>
+enabled_high, registration_date, registration_date_string, registration_date_since, last_visit, last_visit_string, last_visit_since<br>
+<b>basics</b> stands for "username,email,status,level,groups"',
+      $ws_functions_root . 'pwg.users.php',
+      array('admin_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.users.add',
+      'ws_users_add',
+      array(
+        'username' => array(),
+        'password' => array('default'=>null),
+        'password_confirm' => array('flags'=>WS_PARAM_OPTIONAL),
+        'email' =>    array('default'=>null),
+        'send_password_by_mail' => array('default'=>false, 'type'=>WS_TYPE_BOOL),
+        ),
+      'Registers a new user.',
+      $ws_functions_root . 'pwg.users.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.users.delete',
+      'ws_users_delete',
+      array(
+        'user_id' =>  array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'pwg_token' =>  array(),
+        ),
+      'Deletes on or more users. Photos owned by this user are not deleted.',
+      $ws_functions_root . 'pwg.users.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+
+  $service->addMethod(
+      'pwg.users.setInfo',
+      'ws_users_setInfo',
+      array(
+        'user_id' =>          array('flags'=>WS_PARAM_FORCE_ARRAY,
+                                    'type'=>WS_TYPE_ID),
+        'username' =>         array('flags'=>WS_PARAM_OPTIONAL),
+        'password' =>         array('flags'=>WS_PARAM_OPTIONAL),
+        'email' =>            array('flags'=>WS_PARAM_OPTIONAL),
+        'status' =>           array('flags'=>WS_PARAM_OPTIONAL,
+                                    'info'=>'guest,generic,normal,admin,webmaster'),
+        'level'=>             array('flags'=>WS_PARAM_OPTIONAL,
+                                    'maxValue'=>max($conf['available_permission_levels']),
+                                    'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'language' =>         array('flags'=>WS_PARAM_OPTIONAL),
+        'theme' =>            array('flags'=>WS_PARAM_OPTIONAL),
+        'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, 'type'=>WS_TYPE_INT),
+        // bellow are parameters removed in a future version
+        'nb_image_page' =>    array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL),
+        'recent_period' =>    array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
+        'expand' =>           array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_BOOL),
+        'show_nb_comments' => array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_BOOL),
+        'show_nb_hits' =>     array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_BOOL),
+        'enabled_high' =>     array('flags'=>WS_PARAM_OPTIONAL,
+                                    'type'=>WS_TYPE_BOOL),
+        ),
+      'Updates a user. Leave a field blank to keep the current value.
+<br>"username", "password" and "email" are ignored if "user_id" is an array.
+<br>set "group_id" to -1 if you want to dissociate users from all groups',
+      $ws_functions_root . 'pwg.users.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+    
+  $service->addMethod(
+      'pwg.permissions.getList',
+      'ws_permissions_getList',
+      array(
+        'cat_id' =>     array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_ID),
+        'group_id' =>   array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_ID),
+        'user_id' =>    array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_ID),
+        ),
+      'Returns permissions: user ids and group ids having access to each album ; this list can be filtered.
+<br>Provide only one parameter!',
+      $ws_functions_root . 'pwg.permissions.php',
+      array('admin_only'=>true)
+    );
+    
+  $service->addMethod(
+      'pwg.permissions.add',
+      'ws_permissions_add',
+      array(
+        'cat_id' =>     array('flags'=>WS_PARAM_FORCE_ARRAY,
+                              'type'=>WS_TYPE_ID),
+        'group_id' =>   array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_ID),
+        'user_id' =>    array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                              'type'=>WS_TYPE_ID),
+        'recursive' =>  array('default'=>false,
+                              'type'=>WS_TYPE_BOOL),
+        ),
+      'Adds permissions to an album.',
+      $ws_functions_root . 'pwg.permissions.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+    
+  $service->addMethod(
+      'pwg.permissions.remove',
+      'ws_permissions_remove',
+      array(
+        'cat_id' =>   array('flags'=>WS_PARAM_FORCE_ARRAY,
+                            'type'=>WS_TYPE_ID),
+        'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                            'type'=>WS_TYPE_ID),
+        'user_id' =>  array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL,
+                            'type'=>WS_TYPE_ID),
+        ),
+      'Removes permissions from an album.',
+      $ws_functions_root . 'pwg.permissions.php',
+      array('admin_only'=>true, 'post_only'=>true)
+    );
+}
+
+?>
